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
Eingänge
Name | Typ | Beschreibung |
---|---|---|
in | Genauigkeit des Bruchteils der Sekunde. Dieser Wert bestimmt die max. Anzahl der signifikanten Bits der T_UtcTime.fractionOfSecond-Komponente. |
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. |
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;