SetRTCDrift: impostare il valore di compensazione su RTC

Descrizione della funzione

Questa funzione accelera o rallenta la frequenza dell'RTC per controllare l'applicazione per la compensazione RTC, in funzione dell'ambiente operativo (temperatura, ...). Il valore di compensazione è specificato in secondi per settimana. Può essere positivo (accelerazione) o negativo (rallentamento).

NOTA: La funzione SetRTCDrift deve essere chiamata una sola volta. Ogni nuova chiamata sostituisce il valore di compensazione con quello nuovo. Il valore viene mantenuto nell'hardware del controller mentre l'RTC è alimentato dall'alimentazione principale o dalla batteria. Se vengono rimosse sia la batteria sia l'alimentazione, il valore di compensazione dell'RTC non è disponibile.

Rappresentazione grafica

Rappresentazione IL e ST

Per la rappresentazione generale in linguaggio IL o ST, fare riferimento al capitolo Rappresentazione di funzioni e blocchi funzione.

Descrizione delle variabili di I/O

Questa tabella descrive i parametri di ingresso:

Ingressi

Tipo

Commento

RtcDrift

SINT (-36..73)

Correzione in secondi per settimana (−36 - +73).

NOTA: I parametri Day, Hour e Minute sono utilizzati solo per garantire la compatibilità retroattiva.
NOTA: Se il valore immesso per RtcDrift supera il valore limite, il firmware del Controller imposterà l'opzione al valore massimo.

La seguente tabella descrive la variabile di uscita:

Uscita

Tipo

Commento

SetRTCDrift

RTCSETDRIFT_ERROR

Restituisce RTC_OK (00 hex) se il comando è corretto; altrimenti restituisce il codice ID dell'errore rilevato.

Esempio

In questo esempio, la funzione è chiamata solo una volta durante il primo ciclo del task MAST. Accelera l'RTC di 4 sec alla settimana (18 sec al mese).

VAR
	MyRTCDrift : SINT (-36..+73) := 0;
	MyDay : sec.DAY_OF_WEEK;
	MyHour : sec.HOUR;
	MyMinute : sec.MINUTE;
END_VAR	
IF IsFirstMastCycle() THEN
	MyRTCDrift := 4;
	MyDay := 0;
	MyHour := 0;
	MyMinute := 0;
	SetRTCDrift(MyRTCDrift, MyDay, MyHour, MyMinute);
END_IF