F_TranslateFileTimeBias

F_TranslateFileTimeBias 1:

Diese Funktion rechnet die Eingangszeit mit Hilfe der angegebenen Bias-Zeitverschiebung in die Zeit einer anderen Zeitzone um. Mit dieser Funktion kann z.B. die Lokalzeit in UTC-Zeit (Universal Time Coordinates) und umgekehrt umgerechnet werden.

FUNCTION F_TranslateFileTimeBias: T_FILETIME

T_FILETIME

VAR_INPUT

VAR_INPUT
    in      : T_FILETIME;(* Input time in file time format to be translated *)
    bias    : DINT;(* Bias value in minutes. The bias is the difference, in minutes, between Coordinated Universal Time (UTC) and local time. *)
    toUTC   : BOOL;(* TRUE => Translate from local time to UTC, FALSE => Translate from UTC to local Time *)
END_VAR

in: Eingangszeit die umgerechnet werden soll.

bias: Differenz zwischen der UTC-Zeit und der Lokalzeit in Minuten (positive oder negative Werte sind zulässig).

toUTC: Über diesen Parameter kann die Richtung angegeben werden in die die Eingangszeit konvertiert werden soll.

toUTC

Direction

Internal formula

FALSE

UTC -> Lokalzeit

Lokalzeit := UTC - Bias

TRUE

Lokalzeit -> UTC

UTC := Lokalzeit + Bias

 

Beispiel:

Die in-Variable enthält die zu konvertierende Zeit. Die bToUTC-Variable bestimmt die Konvertierungsrichtung. Bei bToUTC = TRUE wird die Lokalzeit in UTC-Zeit konvertiert und bei bToUTC = FALSE die UTC-Zeit in Lokalzeit. Die WEST_EUROPE_TZI-Konstante enthält die Zeitzoneninformationen für Westeuropa. Der benötigte Bias-Wert wird aus der Zeitzoneninformation in der Konstanten und der aktuellen bDST-Einstellung (Daylight Saving Time) errechnet. Die aktuelle Zeitzoneninformation eines TwinCAT-Systems kann alternativ mit dem Funktionsbaustein:  FB_GetTimeZoneInformation ermittelt werden.

F_TranslateFileTimeBias 2:

Der Datentyp DT als Eingangszeit wurde nur wegen der Möglichkeit der optischen Kontrolle im Online-Mode gewählt. Konvertierungen in einem anderen Zeitformat sind nur bedingt zu empfehlen da die Konvertierungsfunktionen sehr rechenintensiv sein können.

PROGRAM MAIN
VAR
    bDST    : BOOL := TRUE;(* TRUE => Daylight saving time, FALSE => Standard time *)
    bToUTC  : BOOL := FALSE;(* TRUE => Convert local time to UTC time, FALSE => Convert UTC time to local time *)
    in      : DT := DT#2011-08-29-15:15:31;
    out     : DT;
    bias    : DINT;
END_VAR
IF bDST THEN
    bias := WEST_EUROPE_TZI.bias + WEST_EUROPE_TZI.daylightBias;
ELSE
    bias := WEST_EUROPE_TZI.bias + WEST_EUROPE_TZI.standardBias;
END_IF

out := FILETIME_TO_DT( F_TranslateFileTimeBias( DT_TO_FILETIME( in ), bias, bToUTC ) );

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