UtcTime_To_SystemTime
Converts the time information of type T_UtcTime to the time information of type TIMESTRUCT (system time format).
Namespace: Tc3_Collections
Library: 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
Outputs
Name | Type | Description |
---|---|---|
wMicroseconds | WORD(0..999) | Optional output parameter. Fraction of the millisecond in microseconds. |
wNanoseconds | WORD(0..999) | Optional output parameter. Fraction of the microsecond in nanoseconds. |
bLeapSecondsKnown | BOOL | Optional output parameter. Quality of the leap seconds. |
bClockFailure | BOOL | Optional output parameter. Quality of the timer. |
bClockNotSynchronized | BOOL | Optional output parameter. Quality of the time synchronization. |
eAccuracy | Accuracy of the seconds fraction. This value determines the max. number of significant bits of the T_UtcTime.fractionOfSecond component. |
Return value
Name | Type | Description |
---|---|---|
UtcTime_To_SystemTime | Converted time information as a System-Time structure. |
Sample
The time information: 2018-03-20-11:33:05.125000000 is converted with the max. accuracy of 24 bits (max. resolution ~60ns). The components of the system time have the following values:
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;