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:
|
| 12 (Höchste) |
2 | Aufruf einer Funktion, 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 |
7 | Potenzierung:
|
| 8 |
8 | Multiplikation:
|
| 7 |
9 | Division:
|
| 7 |
10 | Modulo:
| A MOD B | 7 |
11 | Addition:
|
| 6 |
12 | Subtraktion:
|
| 6 |
13 | Vergleiche:
|
| 5 |
14 | Gleichheit:
|
| 4 |
15 | Ungleichheit:
|
| 4 |
16a | Boolesches UND:
|
| 3 |
16b | Boolesches UND:
| A AND B | 3 |
17 | Boolesches Exklusiv ODER:
| A XOR B | 2 |
18 | Boolesches ODER:
| A OR B | 1 (niedrigste) |
Hinweise:
- Operatoren können →überladen sein.
- Auf die Datentypen
STRING
undCHAR
können lediglich Vergleichsoperatoren (=, <>, <, >, <=, >=
) angewandt werden. - Die Operatoren liefern die gleichen Ergebnisse wie die entsprechenden IEC-Bausteine, sofern sie mit gleichen Daten arbeiten.
Beispiel: Der Ausdruckx+y
für die Addition hat ein identisches Verhalten zu diesem Aufruf desADD
-Bausteins:ADD(x,y)
Im Fehlerfall (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