FB_TzSpecificLocalTimeToSystemTime
Der Funktionsbaustein konvertiert die Lokalzeit (structured system time format) in UTC-Zeit (structured system time format) unter der Berücksichtigung der angegebenen Zeitzoneninformation. Der Funktionsbaustein: FB_TzSpecificLocalTimeToFileTime besitzt eine ähnliche Funktionalität, mit dem Unterschied, dass er ein anderes Zeitformat (file time format) umrechnet.
Der Baustein eignet sich nur zur Konvertierung von kontinuierlichen Lokalzeit-Zeitstempelinformationen. Die Lokalzeitsprünge durch die Sommer-/Winterzeit Umstellung sind zulässig und werden vom Baustein erkannt. Lokalzeiten, die sich beliebig ändern führen zur fehlerhaften Konvertierung. Der Grund: Die zuletzt konvertierte Zeit wird im Baustein intern gespeichert um die Sommerzeit-/Winterzeit-Information und die B-Zeiten (siehe unten) beim Zurückstellen der Lokalzeit erkennen zu können. Der Baustein besitzt eine Aktion: A_Reset(). Ein Aufruf dieser Aktion setzt die Ausgänge des Bausteins und die intern gespeicherte (zuletzt konvertierte Zeit) auf Null zurück.
Die Sprünge in der Lokalzeit stellen hier ein Problem dar da sie in eine lineare UTC-Zeit konvertiert werden müssen. Es empfiehlt sich daher für Zeitstempelungsaufgaben die (kontinuierliche) UTC-Zeit zu verwenden und diese erst zur optischen Anzeige der Werte (z. B. in einer Visualisierung) in die jeweilige Lokalzeit zu konvertieren.
Weitere Informationen finden Sie in der Dokumentation des FB_TzSpecificLocalTimeToFileTime Funktionsbausteins. |
VAR_INPUT
VAR_INPUT
in : TIMESTRUCT;
tzInfo : ST_TimeZoneInformation;
END_VAR
in: Lokalzeit (structured system time format) die konvertiert werden soll.
tzInfo: Strukturvariable mit der aktuellen Zeitzone-Information des Betriebssystems.
VAR_OUTPUT
VAR_OUTPUT
out : TIMESTRUCT;
eTzID : E_TimeZoneID := eTimeZoneID_Unknown;
bB : BOOL;
END_VAR
out: Konvertierte UTC-Zeit (strucutred system time format).
eTzID: Zusätzliche Sommer-/ Winterzeit-Information.
bB: TRUE => B-Zeit (Z.B.:02:05:00 MEZ B), FALSE => Übrige Zeit (Z.B.: 02:05:00 MESZ A). Bei einem Sprung der Lokalzeit zurück wird dieser Ausgang gesetzt und beim Überschreiten der doppelten Lokalzeit wieder zurückgesetzt.
Beispiel:
PROGRAM MAIN
VAR
in : TIMESTRUCT := ( wYear := 2011, wMonth := 4, wDay := 29, wHour := 16, wMinute := 46, wSecond := 31, wMilliseconds := 99 );(* Local time *)
out : TIMESTRUCT; (* UTC ttime result is:= ( wYear := 2011, wMonth := 4, wDay := 29, wHour := 14, wMinute := 46, wSecond := 31, wMilliseconds := 99 ) *)
fbToUTC : FB_TzSpecificLocalTimeToSystemTime;
END_VAR
fbToUTC( in := in, tzInfo := WEST_EUROPE_TZI, out => out );
Weitere Zeit-, Zeitzone-Funktionen und -Funktionsbausteine:
FB_TzSpecificLocalTimeToSystemTime, FB_TzSpecificLocalTimeToFileTime, FB_SystemTimeToTzSpecificLocalTime, FB_FileTimeTimeToTzSpecificLocalTime, FB_GetTimeZoneInformation, FB_SetTimeZoneInformation, NT_SetLocalTime, NT_GetTime, NT_SetTimeToRTCTime, F_TranslateFileTimeBias, FB_LocalSystemTime
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken |
---|---|---|
TwinCAT v2.11.0 Build > 2036 | PC or CX (x86, ARM) | TcUtilities.Lib |