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

BeispieleRangfolge

Entsprechender
IEC-Baustein

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 C9NOT-Baustein
7

Potenzierung:

**

A ** B

B ** B

8EXPT-Baustein
8

Multiplikation:

*

A * B

7MUL-Baustein
9

Division:

/

A / B

A / B / D

7DIV-Baustein
10

Modulo:

MOD

A MOD B7MOD-Baustein
11

Addition:

+

A + B

A + B + C

6ADD-Baustein
12

Subtraktion:

A – B

A – B – C

6SUB-Baustein
13

Vergleiche:

<, >, <=, >=

A < B

5LT-Baustein,
GT-Baustein,
LE-Baustein,
GE-Baustein
14

Gleichheit:

=

A = B

A = B & B = C

4EQ-Baustein
15

Ungleichheit:

<>

A <> B

4NE-Baustein
16a

Boolesches UND:

&

A & B

A & B & C

3AND-Baustein
16b

Boolesches UND:

AND

A AND B3AND-Baustein
17

Boolesches Exklusiv ODER:

XOR

A XOR B2XOR-Baustein
18

Boolesches ODER:

OR

A OR B1 (niedrigste)OR-Baustein

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 NULL
    interface_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-BausteinsADD(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: SymbolDatentyp für Operand und ErgebnisBeispielDie 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 * 5MUL_TIME-Baustein, wobei:
    1. Operand = IN1, alle folgenden Operanden wie IN2 behandelt werden, Ergebnis = Ergebniswert
    Division: /
    • 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#1sADD_TIME-Baustein, wobei:
    1. Operand = IN1, alle folgenden Operanden wie IN2 behandelt werden, Ergebnis = Ergebniswert
    Subtraktion: -
    • 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