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

UtcTime_To_SystemTime 1: Eingänge

Name

Typ

Beschreibung

in

T_UtcTime

Die zu konvertierende Zeitinformation als UTC-Time-Struktur.

UtcTime_To_SystemTime 2: 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

E_UtcTimeAccuracy

Genauigkeit des Bruchteils der Sekunde. Dieser Wert bestimmt die max. Anzahl der signifikanten Bits der T_UtcTime.fractionOfSecond-Komponente.

UtcTime_To_SystemTime 3: Rückgabewert

Name

Typ

Beschreibung

UtcTime_To_SystemTime

TIMESTRUCT

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;