M251-Funktionen für den Schreibzugriff

 

SetRTCDrift: Einstellen des Kompensationswerts für die RTC

Beschreibung der Funktion

Mit dieser Funktion wird die Frequenz der Echtzeituhr beschleunigt bzw. verlangsamt, damit die Anwendung die Kompensation der Uhr durchführen kann, abhängig von der Betriebsumgebung (z. B. von der Temperatur). Der Kompensationswert wird in Sekunden pro Woche angegeben. Er kann positiv (Beschleunigung) oder negativ (Verzögerung) sein.

HINWEIS: Die Funktion SetRTCDrift darf nur einmal aufgerufen werden. Bei jedem neuen Aufruf wird der Kompensationswert durch einen neuen ersetzt. Der Wert wird in der Steuerungs­hardware gespeichert, solange die Echtzeituhr (RTC) über die Netzversorgung oder die Batterie gespeist wird. Wenn sowohl Batterie als auch Netzversorgung entfernt bzw. getrennt werden, ist der RTC-Kompensationswert nicht verfügbar.

Grafische Darstellung

G-SE-0062398.1.gif-high.gif

 

 

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(-36...+73)

Korrektur in Sekunden pro Woche (-36 - +73).

HINWEIS: Die Parameter Tag, Stunde und Minute werden nur verwendet, um die Abwärtskom­patibilität sicherzustellen.

HINWEIS: Wenn der für RtcDrift eingegebene Wert den Grenzwert überschreitet, setzt die Firmware der Steuerung den Wert auf das Maximum.

In der folgenden Tabelle wird die Ausgangsvariable beschrieben:

Ausgang

Typ

Kommentar

SetRTCDrift

RTCSETDRIFT_ERROR

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.

Beispiel

In diesem Beispiel wird die Funktion nur einmal während des ersten MAST-Task-Zyklus aufgerufen. Sie beschleunigt die Echtzeituhr um 4 Sekunden pro Woche (18 Sekunden pro Monat).

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