Please ensure Javascript is enabled for purposes of website accessibility
Powered by Zoomin Software. For more details please contactZoomin

AVEVA™ InTouch HMI

IF … THEN … ELSEIF … ELSE … ENDIF und Attributqualität

IF … THEN … ELSEIF … ELSE … ENDIF und Attributqualität

  • Last UpdatedSep 25, 2024
  • 1 minute read

Wenn ein Attribut-Wert in ein anderes Attribut desselben Typs kopiert wird, wird auch die Qualität des Attributs kopiert. Dies kann beispielsweise bei der Arbeit mit I/O-Attributen relevant sein. Beispielsweise kopieren folgende zwei Anweisungen sowohl Wert als auch Qualität:

me.Attr2 = me.Attr1;

me.Attr2.wert= me.Attr1.wert;

Wenn nur der Wert kopiert werden muss und das Attribut die Qualität BAD hat, kann eine temporäre Variable verwendet werden, um den Wert zu halten. Zum Beispiel:

Dim temp as Integer;

temp = me.Attr1;

me.Attr2 = temp;

Wenn ein Vergleich erfolgt wie Attr1 <> Attr2 und eines der Attribute die Qualität BAD hat, werden die Ausdrücke innerhalb des IF-Steuerblocks nicht ausgeführt. Angenommen, Attr1 hat beispielsweise die Qualität BAD:

if me.Attr1<> me.Attr2 then

me.Attr2 = me.Attr1;

endif;

In diesem Skript wird die Anweisung me.Attr2 = me.Attr1 nicht ausgeführt, da Attr1 die Qualität BAD hat und der Vergleich eines Werts der Qualität BAD mit einem wert der Qualität Good nicht definiert/nicht möglich ist.

Der empfohlene Ansatz ist, zuerst die Qualität von Attr1 zu überprüfen, wie im folgenden Beispiel gezeigt:

if(IsBad(me.Attr1)) then

LogMessage("Attr1-Qualität mangelhaft. Der zugehörige Wert wird nicht in Attr2 kopiert.");

else

if me.Attr1<> me.Attr2 then

me.AttrA2 = me.Attr1;

endif;

endif;

Eine alternative Methode zur Überprüfung der Qualität ist, den Operator „==“ zu verwenden:

if Me.Attr1 == TRUE then

Es kann auch die Eigenschaft „value“ zur vereinfachten IF THEN-Anweisung hinzugefügt werden:

if Me.Attr1.wert then

Ihre Skripte werden korrekt ausgeführt, wenn Sie die Datenqualität mit einer der oben genannten Methoden überprüfen.