LTIME_To_UtcTimeFractionOfSecond
Converts the fraction of a second of the type LTIME into the type T_UINT24. The converted value corresponds to the value of the T_UtcTime.fractionOfSecond component. The LTIME value is coded in 24 bits in a special way. See: Coding of the UTC-Time.fractionOfSecond0..23-bits. The input value must be <= LTIME#999ms999us9999ns. The maximum resolution for the conversion is approx. 60 ns.
Namespace: Tc3_Collections
Library: Tc3_Collections (Tc3_Collections.compiled-library)
Syntax
FUNCTION LTIME_To_UtcTimeFractionOfSecond : T_UINT24
VAR_INPUT
in : LTIME;
END_VAR
VAR_OUTPUT
bOverflow : BOOL;
secondsOver : LWORD;
nanosec : LWORD;
attosec : LWORD;
END_VAR
Inputs
Name | Type | Description |
---|---|---|
in | LTIME | The fraction of a second to be converted. |
Outputs
Name | Type | Description |
---|---|---|
bOverflow | BOOL | Additional output parameter, which provides information about the input value overflow. This value is "TRUE" if the input value is >= LTIME#1s, otherwise it is "FALSE". |
secondsOver | LWORD | Additional output parameter that returns the number of overflow seconds. |
nanosec | LWORD | Additional output parameter that returns the input value in nanoseconds. |
attosec | LWORD | Additional output parameter that returns the input value in attoseconds. |
Return value
Name | Type | Description |
---|---|---|
LTIME_To_UtcTimeFractionOfSecond | Converted fraction of a second as binary data. |
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;