BYTE_To_UtcTimeQuality

Converts the binary data of the type BYTE into the components of the structured type T_UtcTimeQuality. The coding of the components in BYTE corresponds to the TwinCAT UTC-Time-Quality-BYTE format specification.

Namespace: Tc3_Collections
Library: Tc3_Collections (Tc3_Collections.compiled-library)

Syntax

FUNCTION BYTE_To_UtcTimeQuality : T_UtcTimeQuality
VAR_INPUT
    in    : BYTE;
END_VAR

BYTE_To_UtcTimeQuality 1: Inputs

Name

Type

Description

in

BYTE

The information to be converted as UTC-Time-Quality binary data.

BYTE_To_UtcTimeQuality 2: Return value

Name

Type

Description

BYTE_To_UtcTimeQuality

T_UtcTimeQuality

Converted information as UTC-Time-Quality structure.

Sample

METHOD UtcTimeQuality_ToFrom_Byte : BOOL
VAR_INPUT
    fbIED    : REFERENCE TO FB_IED;
END_VAR
VAR
    Quality  : T_UtcTimeQuality;
    sQuality : STRING;
    u8       : BYTE;
END_VAR
IF NOT __ISVALIDREF(fbIED) THEN
    RETURN;
END_IF

Quality := Byte_To_UtcTimeQuality(0);
u8 := UtcTimeQuality_To_Byte(Quality);(* u8 := 2#00000000 => 0 bits accuracy *)
sQuality := UtcTimeQuality_To_String(Quality);(* sQuality := 'UQ#000|00' *)
IF UtcTimeQuality_To_Byte(fbIED.Relay.LLN0.Beh.t.Quality) <> u8 THEN
    Quality := fbIED.Relay.LLN0.Beh.t.Quality;
END_IF

Quality := String_To_UtcTimeQuality('UQ#000|03');
u8 := UtcTimeQuality_To_Byte(Quality);(* u8 := 2#11000000 => 3 bits accuracy *)
sQuality := UtcTimeQuality_To_String(Quality);(* sQuality := 'UQ#000|03' *)
IF UtcTimeQuality_To_Byte(fbIED.Relay.LLN0.Health.t.Quality) <> u8 THEN
    Quality := fbIED.Relay.LLN0.Health.t.Quality;
END_IF

Quality := String_To_UtcTimeQuality('UQ#001|05');
u8 := UtcTimeQuality_To_Byte(Quality);(* u8 := 2#10100100 => 5 bits accuracy, ClockNotSynchronized := 1 *)
sQuality := UtcTimeQuality_To_String(Quality);(* sQuality := 'UQ#001|05' *)
IF UtcTimeQuality_To_Byte(fbIED.Relay.LLN0.Mod_.t.Quality) <> u8 THEN
    Quality := fbIED.Relay.LLN0.Mod_.t.Quality;
END_IF

Quality := String_To_UtcTimeQuality('UQ#000|31');
u8 := UtcTimeQuality_To_Byte(Quality);(* u8 := 2#11111000 => unspecified accuracy *)
sQuality := UtcTimeQuality_To_String(Quality);(* sQuality := 'UQ#000|31' *)
IF UtcTimeQuality_To_Byte(fbIED.Relay.MMXU1.phV.phsA.t.Quality) <> u8 THEN
    Quality := fbIED.Relay.MMXU1.phV.phsA.t.Quality;
END_IF

UtcTimeQuality_ToFrom_Byte := TRUE;