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

UtcTimeFractionOfSecond_To_LTIME 1: Inputs

Name

Type

Description

in

T_UINT24

The fraction of the second to be converted as binary data.

UtcTimeFractionOfSecond_To_LTIME 2: 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.

UtcTimeFractionOfSecond_To_LTIME 3: 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;