UtcTimeFractionOfSecond_To_LTIME
Converts the fraction of a second of the type T_UINT24 into the type LTIME. The binary data to be converted correspond to the type of the T_UtcTime.fractionOfSecond component. The 24 bits must be coded in a special way. See: Coding of the UTC-Time.fractionOfSecond0..23-bits. The T_Utctime.Quality.Accuracy0..4-bit components determine the max. number of significant fractionOfSecond bits and the max. resolution than can be attained when converting (~60 ns).
Namespace: Tc3_Collections
Library: Tc3_Collections (Tc3_Collections.compiled-library)
Syntax
FUNCTION UtcTimeFractionOfSecond_To_LTIME : LTIME
VAR_INPUT
in : T_UINT24;
END_VAR
VAR_OUTPUT
nanosec : LWORD;
attosec : LWORD;
END_VAR
Outputs
Name | Type | Description |
---|---|---|
nanosec | LWORD | Optional output parameter. Fraction of the second in nanoseconds. |
attosec | LWORD | Optional output parameter. Fraction of the second in attoseconds. |
Return value
Name | Type | Description |
---|---|---|
UtcTimeFractionOfSecond_To_LTIME | LTIME | Converted fraction of a second in nanoseconds. |
Sample
METHOD UtcTimeFractionOfSecond_ToFrom_LTIME : BOOL
VAR
tValue : T_UtcTime;
sValue : STRING;
tFos : LTIME;
nanosec : LWORD;
END_VAR
tValue.quality := String_To_UtcTimeQuality('UQ#000|24');
tValue.secondSinceEpoch := DT#2018-03-28-12:13:14;
tValue.fractionOfSecond := LTIME_To_UtcTimeFractionOfSecond(LTIME#0NS);(* tValue.fractionOfSecond := [16#00, 16#00, 16#00], 0 significant bits *)
sValue := UtcTime_To_String(tValue);(* sValue := 'UT#2018-03-28-12:13:14.000000000|000|24' *)
tFos := UtcTimeFractionOfSecond_To_LTIME(tValue.fractionOfSecond, nanosec=>nanosec);(* tFos := LTIME#0ns, nanosec := 0 *)
tValue.fractionOfSecond := LTIME_To_UtcTimeFractionOfSecond(LTIME#750MS);(* tValue.fractionOfSecond := [16#03, 16#00, 16#00], 3 significant bits *)
sValue := UtcTime_To_String(tValue);(* sValue := 'UT#2018-03-28-12:13:14.750000000|000|24' *)
tFos := UtcTimeFractionOfSecond_To_LTIME(tValue.fractionOfSecond, nanosec=>nanosec);(* tFos := LTIME#750ms, nanosec := 750000000 *)
tValue.fractionOfSecond := LTIME_To_UtcTimeFractionOfSecond(LTIME#968MS750US);(* tValue.fractionOfSecond := [16#1F, 16#00, 16#00], 5 significant bits *)
sValue := UtcTime_To_String(tValue);(* sValue := 'UT#2018-03-28-12:13:14.968750000|000|24' *)
tFos := UtcTimeFractionOfSecond_To_LTIME(tValue.fractionOfSecond, nanosec=>nanosec);(* tFos := LTIME#968ms750us, nanosec := 968750000 *)
tValue.fractionOfSecond := LTIME_To_UtcTimeFractionOfSecond(LTIME#998MS46US875NS);(* tValue.fractionOfSecond := [16#FF, 16#01, 16#00], 9 significant bits *)
sValue := UtcTime_To_String(tValue);(* sValue := 'UT#2018-03-28-12:13:14.998046875|000|24' *)
tFos := UtcTimeFractionOfSecond_To_LTIME(tValue.fractionOfSecond, nanosec=>nanosec);(* tFos := LTIME#998ms46us875ns, nanosec := 998046875 *)
tValue.fractionOfSecond := LTIME_To_UtcTimeFractionOfSecond(LTIME#999MS999US999NS);(* tValue.fractionOfSecond := [16#FF, 16#FF, 16#FF], 24 significant bits *)
sValue := UtcTime_To_String(tValue);(* sValue := 'UT#2018-03-28-12:13:14.999999940|000|24' *)
tFos := UtcTimeFractionOfSecond_To_LTIME(tValue.fractionOfSecond, nanosec=>nanosec);(* tFos := LTIME#999ms999us940ns, nanosec := 999999940 *)
UtcTimeFractionOfSecond_ToFrom_LTIME := TRUE;