SetRTCDrift: Wöchentliches Anpassen der Echtzeituhr
Diese Funktion fügt der Echtzeituhr wöchentlich an einem bestimmten Wochentag zu einer bestimmten Zeit eine festgelegte Anzahl Sekunden hinzu bzw. zieht diese ab. Die Angabe erfolgt im Format Stunden:Minuten.
HINWEIS: Die Funktion SetRTCDrift muss programmiert werden, sodass sie nur einmals während des ersten Mast-Zyklus ausgeführt wird.
Darstellung in AWL (IL) und ST
Die allgemeine Darstellung in den Sprachen AWL (IL) oder ST finden Sie im Kapitel Darstellung von Funktionen und Funktionsbausteinen.
Beschreibung der E/A-Variablen
In der folgenden Tabelle werden die Eingangsparameter beschrieben:
Eingänge |
Typ |
Kommentar |
---|---|---|
RtcDrift |
SINT(-29...+29) |
Korrektur in Sekunden (-29 - +29) |
Tag |
Tag der Änderung. |
|
Stunden |
Stunde, zu der die Einstellung vorgenommen wird. |
|
Minuten |
Minute, zu der die Einstellung vorgenommen wird.
|
HINWEIS: Wenn die für RTCDrift, Tag, Stunde und Minute eingegebenen Werte Grenzwerte überschreiten, setzt die Firmware der Steuerung alle Werte jeweils auf ihre Maximalwerte.
In der folgenden Tabelle wird die Ausgangsvariable beschrieben:
Ausgang |
Typ |
Kommentar |
---|---|---|
SetRTCDrift |
Gibt den Wert RTC_OK (00 hex) zurück, wenn der Befehl fehlerfrei ausgeführt wurde. Andernfalls wird der ID-Code des erkannten Fehlers zurückgegeben. |
In diesem Beispiel wird die Funktion nur einmal während des ersten MAST-Task-Zyklus aufgerufen. Die Uhrzeit der Echtzeituhr wird jeden Dienstag um 5:45 um 20 Sekunden erhöht:
VAR
MyRTCDrift : SINT (-29...+29) := 0;
MyDay : DAY_OF_WEEK;
MyHour : HOUR;
MyMinute : MINUTE;
END_VAR
IF IsFirstMastCycle() THEN
MyRTCDrift := 20;
MyDay := TUESDAY;
MyHour := 5;
MyMinute := 45;
SetRTCDrift(MyRTCDrift, MyDay, MyHour, MyMinute);
END_IF