UtcTimeQualityAccuracy_To_Accuracy

Konvertiert die Genauigkeit der Zeitinformation des strukturierten Typs T_UtcTimeQuality in den Aufzählungstyp E_UtcTimeAccuracy. Es werden nur die Accuracy0..4 Bit-Komponenten konvertiert. Diese Variablen bestimmten die max. Anzahl der signifikanten Bits in der T_UtcTime.fractionOfSecond Komponente.

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

Syntax

FUNCTION UtcTimeQualityAccuracy_To_Accuracy : E_UtcTimeAccuracy
VAR_INPUT
    in : T_UtcTimeQuality;
END_VAR

UtcTimeQualityAccuracy_To_Accuracy 1: Eingänge

Name

Typ

Beschreibung

in

T_UtcTimeQuality

Die zu konvertierende Information als UTC-Time-Quality.Accuracy0..4-Bit-Komponenten.
Siehe: Kodierung der Accuracy0..4-Bits.

UtcTimeQualityAccuracy_To_Accuracy 2: Rückgabewert

Name

Typ

Beschreibung

UtcTimeQualityAccuracy_To_Accuracy

E_UtcTimeAccuracy

Konvertierte Information als Accuracy-Aufzählungstyp.

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;