FB_BA_GetTime

Mit dem Funktionsbaustein FB_BA_GetTime kann eine interne Uhr (Real Time Clock RTC) in der TwinCAT SPS realisiert werden. Die RTC-Uhr wird mit der Freigabe des Funktionsbausteines über bEn mit der aktuellen NT-Systemzeit initialisiert. Es wird ein Systemtakt der CPU benutzt, um die aktuelle RTC-Zeit zu berechnen. Der Funktionsbaustein muss in jedem Zyklus der SPS einmal aufgerufen werden, damit die aktuelle Zeit berechnet werden kann. Intern wird in dem Funktionsbaustein eine Instanz der Funktionsbausteine NT_GetTime, FB_GetTimeZoneInformation und RTC_EX2 aufgerufen. Die Ausgabe der Zeit erfolgt an den Ausgängen tSysTi für die gelesene Systemzeit und tUtc für die koordinierte Weltzeit (Coordinated Universal Time). Diese wird intern aus der Systemzeit und der Zeitzone ermittelt. Ist die Systemzeit und/oder die Zeitzone fehlerhaft eingegeben worden, so wird auch die UTC-Zeit nicht richtig sein.
Die Systemzeit wird über den einzustellenden Timer nUpdRTC [s] zyklisch ausgelesen und damit die interne RTC-Uhr synchronisiert. In demselben Zyklus werden auch die Zeitinformationen (Zeitzone, Zeitverschiebung zu UTC und Sommer-/ Winterzeit) ausgelesen. Der Ausgang nRemTiUpd zeigt die verbleibenden Sekunden bis zum nächsten Lesezyklus. Die ausgegebenen Zeitstrukturen dtSysTi und dtUtc können mit Hilfe des Bausteines FB_BA_ExtTiSt weiter in die Bestandteile - Tag, Monat, Stunde, Minute etc. - aufgelöst werden.
![]() | Information zum Lese-/Wartezyklus Während des Lesezyklus fallen die Ausgänge bRdySysTi und bRdyTiZoInfo auf FALSE, der Enumerator eTiZId zeigt 0 = eTimeZoneID_Unknown. Wurde erfolgreich gelesen, so gehen die Ausgänge wieder auf TRUE bzw. zeigen die jeweilige Information Sommer- oder Winterzeit an, sofern sie verfügbar ist. War das Lesen nicht erfolgreich - es wird intern 5s lang auf eine Antwort gewartet - so bleiben die Ausgänge auf FALSE bzw. 0 stehen und ein erneuter Wartezyklus bis zum nächsten Lesezyklus wird gestartet. Im Fehlerfall wird die interne RTC-Uhr zwar nicht synchronisiert und kann immer noch eine richtige Zeit anzeigen, die Zeitinformationen jedoch können fehlerhaft sein und damit auch die UTC-Zeit. Fehler während des Lesezyklus schlagen sich in jedem Fall in der Anzeige an bErr und sErrDescr nieder. Der Countdown-Ausgang nRemTiUpd wird erst dann neu gestartet, wenn der Wartezyklus beginnt. |
Eingänge
VAR_INPUT
bEn : BOOL;
tNetId : T_AmsNetId;;
nUpdRtc : UDINT;
bUpdRtc : BOOL;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
bEn | BOOL | Freigabe des Bausteins. Ist bEn = TRUE, so wird die RTC-Uhr mit der NT-Systemzeit initialisiert. |
tNetId | Hier kann die AmsNetId des TwinCAT-Rechners angegeben werden dessen NT-Systemzeit als Zeitbasis gelesen werden soll. Für den lokalen Rechner kann auch ein Leerstring angegeben werden. | |
nUpdRtc | UDINT | Zeitangabe [s], mit der die RTC-Uhr mit der NT-Systemzeit regelmäßig synchronisiert wird. Dieser Wert wird intern auf ein Minimum von 5s begrenzt, um die Abarbeitung der internen Bausteine zu gewährleisten. |
bUpdRtc | BOOL | Parallel zu der Zeitangabe nUpdRtc kann die RTC-Uhr über eine positive Flanke an diesem Eingang synchronisiert werden |
Ausgänge
VAR_OUTPUT
bRdySysTi : BOOL;
bRdyTiZoInfo : BOOL;
bRdyRTC : BOOL;
nRemTiUpd : UDINT;
tSysTi : TIMESTRUCT;
tUTC : TIMESTRUCT;
dtSysTi : DT;
dtUTC : DT;
nCurrentTime_ms : UDINT
eTiZId : E_TimeZoneID;
bErr : BOOL;
sErrDescr : T_MAXSTRING;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
bRdySysTi | BOOL | Die Systemzeit wurde erfolgreich aus dem Zielsystem gelesen. |
bRdyTiZoInfo | BOOL | Die zusätzlichen Zeitinformationen (Zeitzone, Zeitverschiebung zu UTC und Sommer-/ Winterzeit) wurden erfolgreich gelesen. |
bRdyRTC | BOOL | Wurde der Funktionsbaustein mindestens einmal initialisiert, so wird dieser Ausgang gesetzt. Ist dieser Ausgang gesetzt, dann sind die Werte für das Datum, Uhrzeit und Millisekunden an den Ausgängen gültig. |
nRemTiUpd | UDINT | Countdown zur nächsten Synchronisation bzw. Aktualisierung der Zeitinformationen. |
tSysTi | Systemzeit des ausgelesenen Zielsystems. Die Zeitstruktur kann mit Hilfe des Bausteines FB_BA_ExtTiSt weiter in die Bestandteile - Tag, Monat, Stunde, Minute etc. - aufgelöst werden. Info: Ist der Baustein nicht aktiviert (bEn = FALSE), so zeigt der Ausgang stSysTi in seinen Teilelementen (Tag Monat, etc.) jeweils 0 an. | |
tUTC | Koordinierte Weltzeit. Diese wird intern aus der Systemzeit und den gelesenen Zeitinformationen des Zielsystems ermittelt. Die Zeitstruktur kann mit Hilfe des Bausteines FB_BA_ExtTiSt weiter in die Bestandteile - Tag, Monat, Stunde, Minute etc. - aufgelöst werden. Info: Ist der Baustein nicht aktiviert (bEn=FALSE), so zeigt der Ausgang tUTC in seinen Teilelementen (Tag Monat, etc.) jeweils 0 an. | |
dtSysTi / dtUTC | DT | Wie stSysTi / stUTC, jedoch im DATE-AND-TIME-Format: Jahr-Monat-Tag-Stunden-Minuten-Sekunden. Info: Ist der Baustein nicht aktiviert (bEn = FALSE), so zeigen die Ausgänge dtSysTi und dtUTC jeweils DT#1970-01-01-00:00 an, da dies die Untergrenze ist und es den Nullen in der Strukturdarstellung von dtSysTi / dtUTC entspricht. |
nCurrentTime | UDINT | Aktuelle Tageszeit [ms] |
eTiZId | Enumerator zur Sommer-/ Winterzeitinformation. | |
bErr | BOOL | Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind. |
sErrDescr | Enthält die Fehlerbeschreibung |
Fehlerbeschreibung |
---|
01: Warnung: ADS-Fehler beim Lesen der Zeit (NT_GetTime). Es wird die ADS-Fehlernummer angegeben. |
02: Warnung: ADS-Fehler beim Lesen der Zeitzoneninformation (FB_GetTimeZoneInformation). Es wird die ADS-Fehlernummer angegeben. |
Voraussetzungen
Entwicklungsumgebung | Erforderliche SPS-Bibliothek |
---|---|
TwinCAT ab v3.1.4024.22 | Tc3_BA2 ab v5.2.5.0 |