-

ST Code-Objekte

Dieses Thema beschreibt die folgenden ST-Code-Objekte:

Ausdrücke

Ausdrücke sind Teile von Anweisungen. Ein Ausdruck liefert exakt einen Wert zurück, der dann zur weiteren Ausführung der Anweisung verwendet wird, in welcher der Ausdruck vorkommt.
Ausdrücke bestehen aus Operanden und Operatoren (siehe unten) oder Funktionsaufrufen.

Operanden und Operatoren

Operanden und Operatoren sind Bestandteile von ST-Ausdrücken.
Operanden können Literale, Variablen oder Namen von Funktionen sein. Operanden werden über Operatoren verknüpft, d.h. Operatoren werden auf Operanden angewendet.
In einem Ausdruck wird der Operator mit der höchsten Priorität zuerst angewendet, gefolgt vom Operator mit der nächst niedrigeren Priorität. Die folgenden ST-Operatoren sind definiert:

OperatorBeispielWert des BeispielsBeschreibungPriorität
( )(2+3)* (4+5)45KlammernHöchste
Funktionsname (Parameterliste)MAX(4,10)10Funktionsaufruf1
-

NOT
-10

NOT TRUE
-10

false
Negation

Komplement
1
**3.0**481,0Potenzierung1
*

/

MOD
10*3

6/2

17 MOD 10
30

3

7
Multiplikation

Division

Modulo
1
+

-
2+3

4-2
5

2
Addition

Subtraktion
1
<, >, <=, >=4 > 12falseVergleich1
=

<>
T#26h = T#1d2h

8 <>16
true

true
Gleichheit

Ungleichheit
1
&, ANDTRUE & FALSEfalseBoolesches UND1
XORTRUE XOR FALSEtrueBoolesches Exklusives ODER1
ORTRUE OR FALSEtrueBoolesches ODERNiedrigste

Anweisungen

Hinweis
Je nach verwendetem Zielsystem kann die Verschachtelungstiefe von Anweisungen begrenzt sein. Darüber hinaus können weitere steuerungsspezifische Regeln gelten.

SchlüsselwortBeispielBeschreibung
:=Variable := Ausdruck;Zuweisungs-Anweisung

Die einfachste Art einer ST-Anweisung. Sie kopiert den Wert des Ausdrucks auf der rechten Seite in die Variable auf der linken Seite. Die Variable links und der Wert des Ausdrucks rechts müssen beide denselben Datentyp haben. Wenn nicht, muss zuvor eine Typkonvertierung durchgeführt werden.
RETURNRETURN;Rücksprung-Anweisung

Die Rücksprung-Anweisung (RETURN-Anweisung) verlässt das aufgerufene Element (Funktion, Funktionsbaustein oder Programm) und springt zurück in die aufrufende POE.
IFIF a < b THEN c:=1;
ELSIF a=b THEN c:=2;
ELSE c:=3;
END_IF;
Auswahl-Anweisung

Eine Gruppe von Anweisungen wird nur dann ausgeführt, wenn die Auswertung des zugehörigen booleschen Ausdrucks 'a<b' TRUE ist. Wenn die Bedingung FALSE ist, dann wird entweder keine Anweisung ausgeführt oder die Anweisungen, die auf das Schlüsselwort ELSE folgen.
CASECASE f OF
1: a:=3;
2..5: a:=4;
6: a:=2;
b:=1;
ELSE a:=0;
END_CASE;
Auswahl-Anweisung

Eine Gruppe von Anweisungen wird entsprechend dem Wert des Ausdrucks nach dem Schlüsselwort CASE ausgeführt. Die Variable oder der Ausdruck 'f' muss vom Datentyp ANY_INT sein.
FORFOR a:=1 TO 10 BY 3 DO
f[a] :=b;
END_FOR;
Wiederholungs-Anweisung

Eine Gruppe von Anweisungen wird wiederholt ausgeführt. Die Variable 'a' wird jeweils um 3 erhöht, der Anfangswert ist '1' und der Endwert '10'. Der Anfangswert wird mit der Steuervariablen 'a' eingestellt. Der Endwert folgt nach 'TO' und die Inkremente folgen nach 'BY'.
Alle Werte müssen vom selben ANY_INT-Datentyp sein.

Hinweis
Wenn 'BY' nicht angegeben ist, wird der Standardwert '1' verwendet. Alle Werte müssen dann vom Datentyp INT sein.

WHILEWHILE b > 1 DO
b:= b/2;
END_WHILE;
Wiederholungs-Anweisung

Eine Gruppe von Anweisungen wird wiederholt ausgeführt, bis der zugehörige boolesche Ausdruck 'b>1' FALSE ist. Die Abbruchbedingung der Anweisung wird am Anfang der Schleife ausgewertet. Falls die Bedingung FALSE ist, wird die Schleife nicht ausgeführt.
REPEATREPEAT
a := a*b;
UNTIL a < 10000
END_REPEAT;
Wiederholungs-Anweisung

Eine Gruppe von Anweisungen wird wiederholt ausgeführt, bis der zugehörige boolesche Ausdruck 'a<10000' TRUE ist. Die Abbruchbedingung der Anweisung wird am Ende der Schleife ausgewertet. Wenn die Bedingung FALSE ist, wird die Schleife zumindest einmal ausgeführt.
EXITFOR a:=1 TO 2 DO
IF flag THEN EXIT;
END_IF
SUM:= SUM + a
END_FOR
EXIT-Anweisung

Die EXIT-Anweisung kann verwendet werden, um die Ausführung einer Wiederholungs-Anweisung zu beenden.