OR_ELSE
Dieser Operator wird in der Norm IEC 61131-3 nicht beschrieben. Er ist nur für die Programmierung in strukturiertem Text (ST) zulässig.
OR_ELSE
führt im Kurzschlussmodus eine OR-Operation mit den Operanden des Typs BOOL und BIT aus. Dies wirkt sich wie folgt aus:
Wenn mindestens einer der Operanden TRUE ist, lautet das Ergebnis der Operation TRUE. Andernfalls lautet es FALSE.
Wenn ein Operand TRUE ist, werden die Ausdrücke der anderen Operanden nicht evaluiert („lazy evaluation“ oder „faule Evaluierung“). In dieser Hinsicht unterscheidet sich der Operator OR_ELSE
vom Operator OR
, wie in der Norm IEC-61131-3 beschrieben. OR
evaluiert immer alle Ausdrücke.
VAR
bEver: BOOL;
bX1: BOOL;
dw: DWORD := 16#000000FF;
END_VAR
bEver := FALSE;
bX := dw.8 OR_ELSE dw.1 OR_ELSE dw.1 OR_ELSE (bEver := TRUE);
dw.8
ist FALSE, und dw.1
ist TRUE. Deshalb lautet das Ergebnis der Operation (bX
) TRUE. Der Ausdruck am dritten Eingang wird jedoch nicht ausgeführt. bEver
bleibt FALSE. Wenn Sie stattdessen die standardmäßige OR
-Operation verwendet haben, wurde bEver
auf TRUE gesetzt.