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
Standardbaustein

1

Klammerung:

(expression)

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:

identifier (parameter list)

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 zur 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 Neuron Power Engineer 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 basieren, 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 Standardbaustein" informiert Sie, welcher Operator die gleichen Ergebnisse wie der entsprechende Standardbaustein liefert. Die Bedingung dafür ist, dass der Operator mit den gleichen Daten wie der Standardbaustein 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 Neuron Power Engineer 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 "Standardbausteine für die Anwendung" nach, welche Auswirkungen eine ungültige Beschaltung haben könnte.

Abweichung zur 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 Neuron Power Engineer 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