UtcTime_To_SystemTime
Konvertiert die Zeitinformation des Typs T_UtcTime in die Zeitinformation des Typs TIMESTRUCT (System-Time-Format).
Namensraum: Tc3_Collections
Bibliothek: Tc3_Collections (Tc3_Collections.compiled-library)
Syntax
FUNCTION UtcTime_To_SystemTime : TIMESTRUCT
VAR_INPUT
in : T_UtcTime;
END_VAR
VAR_OUTPUT
wMicroseconds : WORD(0..999);
wNanoseconds : WORD(0..999);
bLeapSecondsKnown : BOOL;
bClockFailure : BOOL;
bClockNotSynchronized : BOOL;
eAccuracy : E_UtcTimeAccuracy;
END_VAR
Eingänge
Name | Typ | Beschreibung |
---|---|---|
in | Die zu konvertierende Zeitinformation als UTC-Time-Struktur. |
Ausgänge
Name | Typ | Beschreibung |
---|---|---|
wMicroseconds | WORD(0..999) | Optionaler Ausgangsparameter. Bruchteil der Millisekunde in Mikrosekunden. |
wNanoseconds | WORD(0..999) | Optionaler Ausgangsparameter. Bruchteil der Mikrosekunde in Nanosekunden. |
bLeapSecondsKnown | BOOL | Optionaler Ausgangsparameter. Qualität der Schaltsekunden. |
bClockFailure | BOOL | Optionaler Ausgangsparameter. Qualität des Zeitgebers. |
bClockNotSynchronized | BOOL | Optionaler Ausgangsparameter. Qualität der Uhrzeitsynchronisation. |
eAccuracy | Genauigkeit des Bruchteils der Sekunde. Dieser Wert bestimmt die max. Anzahl der signifikanten Bits der T_UtcTime.fractionOfSecond-Komponente. |
Rückgabewert
Name | Typ | Beschreibung |
---|---|---|
UtcTime_To_SystemTime | Konvertierte Zeitinformation als System-Time-Struktur. |
Beispiel
Die Zeitinformation: 2018-03-20-11:33:05.125000000 wird mit der max. Genauigkeit von 24 Bits (max. Auflösung ~60ns) konvertiert. Die Komponenten der Systemzeit haben folgende Werte:
wYear := 2018, wMonth := 3, wDay := 20, wHour := 11, wMinute := 33, wSecond := 5, wMilliseconds := 125, wDayOfWeek := 2.
METHOD UtcTime_ToFrom_SystemTime : BOOL
VAR
tSystem : TIMESTRUCT;
sSystem : STRING;
tUtc : T_UtcTime;
sUtc : STRING;
wMicroseconds : WORD;
wNanoseconds : WORD;
END_VAR
tSystem.wYear := 2000;
tSystem.wMonth := 1;
tSystem.wDay := 1;
tSystem.wHour := 0;
tSystem.wMinute := 0;
tSystem.wSecond := 0;
tSystem.wMilliseconds := 0;
tSystem.wDayOfWeek := 0;
sSystem := SystemTime_To_String(tSystem);(* sSystem := '2000-01-01-00:00:00:000' *)
tUtc := SystemTime_To_UtcTime(tSystem, 0, 0, FALSE, FALSE, TRUE, E_UtcTimeAccuracy.Unspecified);
sUtc := UtcTime_To_String(tUtc);(* sUtc := 'UT#2000-01-01-00:00:00:000000000|001|31' *)
IF tUtc.quality.ClockNotSynchronized THEN
tUtc.secondSinceEpoch := DT#2018-03-20-11:33:05;
tUtc.fractionOfSecond := LTIME_TO_UtcTimeFractionOfSecond( LTIME#125MS0US0NS );
tUtc.quality.LeapSecondsKnown := FALSE;
tUtc.quality.ClockFailure := FALSE;
tUtc.quality.ClockNotSynchronized := FALSE;
Accuracy_To_UtcTimeQualityAccuracy( E_UtcTimeAccuracy._03,
bAccuracy0=>tUtc.quality.Accuracy0,
bAccuracy1=>tUtc.quality.Accuracy1,
bAccuracy2=>tUtc.quality.Accuracy2,
bAccuracy3=>tUtc.quality.Accuracy3,
bAccuracy4=>tUtc.quality.Accuracy4 );
sUtc := UtcTime_To_String(tUtc);(* sUtc := 'UT#2018-03-20-11:33:05.125000000|000|3' *)
tSystem := UtcTime_To_SystemTime(tUtc, wMicroseconds=>wMicroseconds, wNanoseconds=>wNanoseconds);
sSystem := SystemTime_To_String(tSystem);(* sSystem := '2018-03-20-11:33:05.125' *)
END_IF
UtcTime_ToFrom_SystemTime := TRUE;