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 |
Entsprechender |
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 diese Operatoren angewandt werden: =, <>, <, >, <=, >=
Abweichung von IEC-Norm
Die Operatoren für den Vergleich <, >, <=, >= werden mit einer höheren Rangfolge als der Operator für Gleichheit = und die Operatoren für Ungleichheit <> ausgewertet.
Diese Auswertung ist eine Abweichung von der →IEC-Norm (Edition 3.0) "Table 71 – Operators of the ST language". Die Tabelle gibt vor, dass diese Operatoren die gleichen Rangfolge haben.
Die Auswertung dieser Operatoren in logi.CAD 3 erfolgt jedoch laut den Vorgaben der IEC-Norm (Edition 3.0) "Annex A Formal specification of the languages elements, Table 71 - 72 - Language Structured Text (ST)". Diese Vorgaben entsprechen auch den Vorgaben der Vorgänger-IEC-Norm (2nd Edition) "Table 55 - Operators of the ST language".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 Spalte "Entsprechender IEC-Baustein" informiert Sie, welcher Operator die gleichen Ergebnisse wie der entsprechende IEC-Baustein liefert. Die Bedingung dafür ist, dass der Operator mit den gleichen Daten wie der IEC-Baustein arbeitet.
Beispiel: Der Ausdruck x+y für die Addition hat ein identisches Verhalten zu diesem Aufruf des ADD-Bausteins: ADD(x,y)Beachten Sie: Falls die Baustein-Beschreibung die Warnung "Keine Prüfung von ungültigen Beschaltungen" enthält, gilt diese Warnung auch für den entsprechenden ST-Operator. Diese Warnung ist wie diese (oder ähnlich dazu):Keine Prüfung von ungültigen Beschaltungen
Bei einigen Bausteinen werden ungültige Beschaltungen von logi.CAD 3 nicht geprüft. Geben Sie deshalb Code in Ihrer Anwendung ein (z.B. IF-Anweisungen im ST-Code), mit denen ungültige Beschaltungen erkannt werden.
Lesen Sie unter "IEC-Bausteine für die Anwendung" nach, welche Auswirkungen eine ungültige Beschaltung haben könnte.
Abweichung von IEC-Norm
Die Nicht-Prüfung von ungültigen Beschaltungen ist eine Abweichung von der →IEC-Norm, die eine Fehlerbehandlung fordert, falls das Ergebnis eines Bausteins den Wertebereich des Ausgangsdatentyp überschreitet. Diese Abweichung gilt auch für den entsprechenden ST-Operator.
In anderen Fehlerfällen (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