Accuracy_To_UtcTimeQualityAccuracy

Konvertiert den Wert des Aufzählungstyps E_UtcTimeAccuracy (Genauigkeit der Zeitinformation) in fünf boolische Werte. Diese fünf Ausgangswerte entsprechen den Bit-Komponenten: Accuracy0..Accuracy4 des strukturierten Typs T_UtcTimeQuality.

Namensraum: Tc3_Collections
Bibliothek: Tc3_Collections (Tc3_Collections.compiled-library)

Syntax

FUNCTION Accuracy_To_UtcTimeQualityAccuracy
VAR_INPUT
    in         : E_UtcTimeAccuracy;
END_VAR
VAR_OUTPUT
    bAccuracy0 : BOOL;
    bAccuracy1 : BOOL;
    bAccuracy2 : BOOL;
    bAccuracy3 : BOOL;
    bAccuracy4 : BOOL;
END_VAR

Accuracy_To_UtcTimeQualityAccuracy 1: Eingänge

Name

Typ

Beschreibung

in

E_UtcTimeAccuracy

Genauigkeit des Bruchteils der Sekunde. Dieser Wert bestimmt die max. Anzahl der signifikanten Bits der T_UtcTime.fractionOfSecond-Komponente.

Accuracy_To_UtcTimeQualityAccuracy 2: Ausgänge

Konvertierte Information als T_UtcTimeQuality.Accuracy0..4 Bit-Komponenten. Siehe: Kodierung der UTC-Time.Quality.Accuracy0..4-Bits.

Name

Typ

Beschreibung

bAccuracy0

BOOL

Genauigkeit MSB-Bit 0.

bAccuracy1

BOOL

Genauigkeit Bit 1.

bAccuracy2

BOOL

Genauigkeit Bit 2.

bAccuracy3

BOOL

Genauigkeit Bit 3.

bAccuracy4

BOOL

Genauigkeit LSB-Bit 4.

Accuracy_To_UtcTimeQualityAccuracy 3: Rückgabewert

Keiner.

Beispiel

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

Quality.LeapSecondsKnown := FALSE;
Quality.ClockFailure := FALSE;
Quality.ClockNotSynchronized := FALSE;
Accuracy_To_UtcTimeQualityAccuracy( E_UtcTimeAccuracy.Null,(* Null bits accuracy *)
                                    bAccuracy0=>Quality.Accuracy0, 
                                    bAccuracy1=>Quality.Accuracy1, 
                                    bAccuracy2=>Quality.Accuracy2, 
                                    bAccuracy3=>Quality.Accuracy3, 
                                    bAccuracy4=>Quality.Accuracy4 );
sQuality := UtcTimeQuality_To_String(Quality);(* sQuality := 'UQ#000|0' *)
IF fbIED.Relay.LLN0.Beh.t.eAccuracy <> UtcTimeQualityAccuracy_To_Accuracy(Quality) THEN
    Quality := fbIED.Relay.LLN0.Beh.t.Quality;
END_IF

Quality.LeapSecondsKnown := FALSE;
Quality.ClockFailure := FALSE;
Quality.ClockNotSynchronized := FALSE;
Accuracy_To_UtcTimeQualityAccuracy( E_UtcTimeAccuracy._03,(* 3 bits accuracy *)
                                    bAccuracy0=>Quality.Accuracy0, 
                                    bAccuracy1=>Quality.Accuracy1, 
                                    bAccuracy2=>Quality.Accuracy2, 
                                    bAccuracy3=>Quality.Accuracy3, 
                                    bAccuracy4=>Quality.Accuracy4 );
sQuality := UtcTimeQuality_To_String(Quality);(* sQuality := 'UQ#000|3' *)
IF fbIED.Relay.LLN0.Health.t.eAccuracy <> UtcTimeQualityAccuracy_To_Accuracy(Quality) THEN
    Quality := fbIED.Relay.LLN0.Health.t.Quality;
END_IF

Quality.LeapSecondsKnown := FALSE;
Quality.ClockFailure := FALSE;
Quality.ClockNotSynchronized := FALSE;
Accuracy_To_UtcTimeQualityAccuracy( E_UtcTimeAccuracy._05,(* 5 bits accuracy *)
                                    bAccuracy0=>Quality.Accuracy0, 
                                    bAccuracy1=>Quality.Accuracy1, 
                                    bAccuracy2=>Quality.Accuracy2, 
                                    bAccuracy3=>Quality.Accuracy3, 
                                    bAccuracy4=>Quality.Accuracy4 );
sQuality := UtcTimeQuality_To_String(Quality);(* sQuality := 'UQ#000|5' *)
IF fbIED.Relay.LLN0.Mod_.t.eAccuracy <> UtcTimeQualityAccuracy_To_Accuracy(Quality) THEN
    Quality := fbIED.Relay.LLN0.Mod_.t.Quality;
END_IF 

Quality.LeapSecondsKnown := FALSE;
Quality.ClockFailure := FALSE;
Quality.ClockNotSynchronized := FALSE;
Accuracy_To_UtcTimeQualityAccuracy( E_UtcTimeAccuracy.Unspecified,(* Unspecified accuracy *)
                                    bAccuracy0=>Quality.Accuracy0, 
                                    bAccuracy1=>Quality.Accuracy1, 
                                    bAccuracy2=>Quality.Accuracy2, 
                                    bAccuracy3=>Quality.Accuracy3, 
                                    bAccuracy4=>Quality.Accuracy4 );
sQuality := UtcTimeQuality_To_String(Quality);(* sQuality := 'UQ#000|31' *)
IF fbIED.Relay.MMXU1.phV.phsA.t.eAccuracy <> UtcTimeQualityAccuracy_To_Accuracy(Quality) THEN
    Quality := fbIED.Relay.MMXU1.phV.phsA.t.Quality;
END_IF

UtcTimeQualityAccuracy_ToFrom_Accuracy := TRUE;