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

  • Last UpdatedNov 11, 2023
  • 2 minute read

Mit IF-THEN-ELSE-ENDIF können je nach dem Wert einer Bedingung verschiedene Operationen ausgeführt werden. Die Syntax lautet wie folgt:

IF <Boolean_expression> THEN

[statements];

[ { ELSEIF

[statements] } ];

[ ELSE

[statements] ];

ENDIF;

Wobei Boolean_expression ein Ausdruck ist, der so ausgewertet werden kann, dass er einen binären Wert (Boolean) ergibt.

Je nach dem Datentyp, der vom Ausdruck zurückgegeben wird, wird der Ausdruck ausgewertet, um einen Zustand True oder False gemäß folgender Regel ausgewertet:

Datentyp

Zuordnung

Boolean, Discrete

Wird direkt verwendet (keine Zuordnung nötig).

Integer

Value = 0 ausgewertet als False.
Value != 0 ausgewertet als True.

Float, Real

Value = 0 ausgewertet als False.
Value != 0 ausgewertet als True.

Double

Value = 0 ausgewertet als False.
Value != 0 ausgewertet als True.

String, Message

Keine Zuordnung möglich. Die Verwendung eines Ausdrucks, der zu einem Zeichenfolgen-Typ als Boolean_expression führt, führt dazu, dass die Skriptvalidierung einen Fehler ergibt.

Time

Keine Zuordnung möglich. Die Verwendung eines Ausdrucks, der zu einem Zeit-Typ als Boolean_expression führt, führt dazu, dass die Skriptvalidierung einen Fehler ergibt.

ElapsedTime

Keine Zuordnung möglich. Die Verwendung eines Ausdrucks, der zu einem AbgelaufeneZeit-Typ als Boolean_expression führt, führt dazu, dass die Skriptvalidierung einen Fehler ergibt.

Object

Die Verwendung eines Ausdrucks, der zu einem Objekt-Typ führt. Validiert, aber zur Laufzeit, das Objekt wird konvertiert zu Boolean. Wenn der Typ nicht zu Boolean konvertiert werden kann, erfolgt eine Laufzeit-Ausnahme.

Der erste Anweisungsblock wird ausgeführt, wenn ein Boolean_expression den Wert True hat. Nach dem Schlüsselwort ELSE kann wahlweise ein zweiter Anweisungsblock definiert werden, Dieser Block wird ausgeführt, wenn der Boolean_expression den Wert False hat.

Um mehrere alternative Bedingungen zu überprüfen, können dazwischen beliebig viele ELSEIF-Anweisungen stehen. Die ELSEIF-Klausel imitiert Schalt-Anweisungen, die von anderen Programmiersprachen angeboten werden. Zum Beispiel:

IF value == 0 Then

Message = "Value is zero";

ELSEIF value > 0 Then

Message = "Value is positive";
ELSEIF value < 0 Then

Message = "Value is negative";

ELSE

{Default. Should never occur in this example};

ENDIF;

Im Folgenden werden also sekundäre IF-Strukturen ineinander verschachtelt, die jeweils mit einem ENDIF; beendet werden müssen.

IF (X1 == 1) THEN

X1 = 5;

{ ELSEIF <X1 == 2> THEN

X1 = 10;

ELSEIF X1 == 3 THEN

X1 = 20 ;

ELSEIF X1 == 4 THEN

X1 = 30 };

IF X1 == 99 THEN

X1 = 0;

ENDIF;

ENDIF;

Siehe Skript-Beispiele für weitere Ideen zur Verwendung dieses Typs von Steuerkonstrukt.