Operatoren in ST
Operatoren führen Operationen aus und stellen Funktionalitäten zur Verfügung, wie z.B. Addition. Mit Operatoren verknüpfen Sie die Operanden zu Ausdrücken.
Mögliche Operatoren
Nr. |
Beschreibung der Operation: Symbol |
Beispiele |
Rangfolge |
1 |
Klammerung: (Ausdruck) |
A + (B / C) (A + B) / C A / (B + C) |
12 (Höchste) |
2 |
Aufruf einer Funktion oder Aufruf einer Methode, sofern ein Ergebniswert deklariert ist: Bezeichner (Parameterliste) |
ABS(A) ADD(X,Y) |
11 |
3 |
Dereferenzierung ^ Details: siehe unter "Deklaration von Referenz-Variablen (inkl. Zuweisungen darauf)" |
R^ |
10 |
4 |
Negation: – |
–A |
9 |
5 |
Unäres Plus: + |
+B |
9 |
6 |
Komplement: NOT |
NOT C |
9 |
7 |
Potenzierung: ** |
A ** B B ** B |
8 |
8 |
Multiplikation: * |
A * B |
7 |
9 |
Division: / |
A / B A / B / D |
7 |
10 |
Modulo: MOD |
A MOD B |
7 |
11 |
Addition: + |
A + B A + B + C |
6 |
12 |
Subtraktion: – |
A – B A – B – C |
6 |
13 |
Vergleiche: <, >, <=, >= |
A < B |
5 |
14 |
Gleichheit: = |
A = B A = B & B = C |
4 |
15 |
Ungleichheit: <> |
A <> B |
4 |
16a |
Boolesches UND: & |
A & B A & B & C |
3 |
16b |
Boolesches UND: AND |
A AND B |
3 |
17 |
Boolesches Exklusiv ODER: XOR |
A XOR B |
2 |
18 |
Boolesches ODER: OR |
A OR B |
1 (niedrigste) |
Hinweise:
Operatoren können →überladen sein.
Auf die Datentypen STRING und CHAR können lediglich Vergleichsoperatoren (=, <>, <, >, <=, >=) angewandt werden.
Für deklarierte Variablen, die auf einem →Interface basiert, und NULL kann lediglich der Gleichheit-Operator = und der Ungleichheit-Operator <> angewandt werden.
Vergleich von Variablen basierend auf einem Interface bzw. von einer mit NULLinterface_variable_1 = interface_variable_2
interface_variable_1 = NULL
NULL = interface_variable_2
Die Operatoren liefern die gleichen Ergebnisse wie die entsprechenden IEC-Bausteine, sofern sie mit gleichen Daten arbeiten.
Beispiel: Der Ausdruck x+y für die Addition hat ein identisches Verhalten zu diesem Aufruf des ADD-Bausteins: ADD(x,y)Im Fehlerfall (z.B. bei einer Division durch 0) wird der Wert 0 als Ergebnis geliefert. Der Ausgang ENO der umfassenden →POE wird nicht auf den Wert FALSE (bzw. einer Entsprechung) gesetzt.
Beachten Sie die korrekte Kombination der →Literale/→Variablen für Multiplikation, Division, Addition und Subtraktion, sofern die Operation für Literale/Variablen vom Datentyp TIME durchgeführt werden soll. Andere Kombinationen werden als fehlerhaft markiert.
Operation: Symbol
Datentyp für Operand und Ergebnis
Beispiel
Die Operation liefert das gleiche Ergebnis wie dieser Baustein:
Multiplikation: *
1. Operand: Datentyp TIME
alle folgenden Operanden: Datentyp zum →allgemeinen Datentyp ANY_NUM zugehörig
Ergebnis: Datentyp TIME
T#1m40s * 2 * 5
MUL_TIME-Baustein, wobei:
1. Operand = IN1, alle folgenden Operanden wie IN2 behandelt werden, Ergebnis = ErgebniswertDivision: /
1. Operand: Datentyp TIME
2. Operand: Datentyp zu ANY_NUM zugehörig
Ergebnis: Datentyp TIME
T#1m40s / 2
DIV_TIME-Baustein, wobei:
1. Operand = IN1, 2. Operand = IN2, Ergebnis = Ergebniswert
Der Operator / rechnet mit der Genauigkeit, die für den 2. Operanden angegeben ist. Das bedeutet: Falls der 2. Operand ein REAL-Wert ist, rechnet logi.CAD 3 intern auch mit einem REAL-Wert. Vergleiche: DIV_TIME verwendet LREAL für die interne Berechnung.Addition: +
1. Operand: Datentyp TIME
alle folgenden Operanden: Datentyp TIME
Ergebnis: Datentyp TIME
T#3s + T#4s + T#1s
ADD_TIME-Baustein, wobei:
1. Operand = IN1, alle folgenden Operanden wie IN2 behandelt werden, Ergebnis = ErgebniswertSubtraktion: -
1. Operand: Datentyp TIME
2. Operand: Datentyp TIME
Ergebnis: Datentyp TIME
T#4s - T#3s
SUB_TIME-Baustein, wobei:
1. Operand = IN1, 2. Operand = IN2, Ergebnis = Ergebniswert