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

LTIME_To_UtcTimeFractionOfSecond 1: Inputs

Name

Type

Description

in

LTIME

The fraction of a second to be converted.

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

LTIME_To_UtcTimeFractionOfSecond 3: Return value

Name

Type

Description

LTIME_To_UtcTimeFractionOfSecond

T_UINT24

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;