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
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 C

9

NOT-Baustein

7

Potenzierung:

**

A ** B

B ** B

8

EXPT-Baustein

8

Multiplikation:

*

A * B

7

MUL-Baustein

9

Division:

/

A / B

A / B / D

7

DIV-Baustein

10

Modulo:

MOD

A MOD B

7

MOD-Baustein

11

Addition:

+

A + B

A + B + C

6

ADD-Baustein

12

Subtraktion:

A – B

A – B – C

6

SUB-Baustein

13

Vergleiche:

<, >, <=, >=

A < B

5

LT-Baustein,
GT-Baustein,
LE-Baustein,
GE-Baustein

14

Gleichheit:

=

A = B

A = B & B = C

4

EQ-Baustein

15

Ungleichheit:

<>

A <> B

4

NE-Baustein

16a

Boolesches UND:

&

A & B

A & B & C

3

AND-Baustein

16b

Boolesches UND:

AND

A AND B

3

AND-Baustein

17

Boolesches Exklusiv ODER:

XOR

A XOR B

2

XOR-Baustein

18

Boolesches ODER:

OR

A OR B

1 (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-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 = 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#1s

    ADD_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