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:
|
| 12 (Höchste) | |
2 | Aufruf einer Funktion oder Aufruf einer Methode, sofern ein Ergebniswert deklariert ist:
|
| 11 | |
3 | Dereferenzierung
Details: siehe unter "Deklaration von Referenz-Variablen (inkl. Zuweisungen darauf)" | R^ | 10 | |
4 | Negation:
|
| 9 | |
5 | Unäres Plus:
|
| 9 | |
6 | Komplement:
| NOT C | 9 | NOT-Baustein |
7 | Potenzierung:
|
| 8 | EXPT-Baustein |
8 | Multiplikation:
|
| 7 | MUL-Baustein |
9 | Division:
|
| 7 | DIV-Baustein |
10 | Modulo:
| A MOD B | 7 | MOD-Baustein |
11 | Addition:
|
| 6 | ADD-Baustein |
12 | Subtraktion:
|
| 6 | SUB-Baustein |
13 | Vergleiche:
|
| 5 | LT-Baustein, GT-Baustein, LE-Baustein, GE-Baustein |
14 | Gleichheit:
|
| 4 | EQ-Baustein |
15 | Ungleichheit:
|
| 4 | NE-Baustein |
16a | Boolesches UND:
|
| 3 | AND-Baustein |
16b | Boolesches UND:
| A AND B | 3 | AND-Baustein |
17 | Boolesches Exklusiv ODER:
| A XOR B | 2 | XOR-Baustein |
18 | Boolesches ODER:
| A OR B | 1 (niedrigste) | OR-Baustein |
Hinweise:
- Operatoren können →überladen sein.
Auf die Datentypen
STRING
undCHAR
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 Ausdruckx+y
für die Addition hat ein identisches Verhalten zu diesem Aufruf desADD
-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 Wert0
als Ergebnis geliefert. Der AusgangENO
der umfassenden →POE wird nicht auf den WertFALSE
(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 wieIN2
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 einREAL
-Wert ist, rechnet logi.CAD 3 intern auch mit einemREAL
-Wert. Vergleiche:DIV_TIME
verwendetLREAL
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 wieIN2
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- 1. Operand: Datentyp