SetRTCDrift: Impostare il valore di compensazione sull'RTC
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 richiamato solo una volta. Ogni nuova chiamata sostituisce il valore di compensazione. Il valore viene mantenuto nell'hardware del controller mentre l'RTC è alimentato dall'alimentatore principale o dalla batteria. Se vengono rimossi sia la batteria che l'alimentatore, il valore di compensazione RTC non è disponibile.
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 Giorno, Ora e Minuto 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 |
Restituisce RTC_OK (00 hex) se il comando è corretto; altrimenti restituisce il codice ID dell'errore rilevato. |
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 : DAY_OF_WEEK;
MyHour : HOUR;
MyMinute : MINUTE;
END_VAR
IF IsFirstMastCycle() THEN
MyRTCDrift := 4;
MyDay := 0;
MyHour := 0;
MyMinute := 0;
SetRTCDrift(MyRTCDrift, MyDay, MyHour, MyMinute);
END_IF