Zum Hauptinhalt springen

Befehlsgruppen

Die folgenden Befehlsgruppen sind die grundlegenden Konstrukte von Strukturiertem Text und können flexibel kombiniert und ineinander verschachtelt werden.

Boolesche Verknüpfungen​

Boolesche Verknüpfungen dienen der binären Verknüpfung von Variablen.

SymbolLogische VerknüpfungBeispiel
 NOTBinäre Negationa := NOT b;
ANDLogisches UNDa := b AND c;
ORLogisches ODERa := b OR c;
XORExklusives ODERa := b XOR c;

Die Wahrheitstabelle für Boolesche Verknüpfungen sieht wie folgt aus:

EingabeANDOR XOR
0 0000
0 1011
1 0011
1 1110

Arithmetische Operationen​

Der Strukturierte Text enthält grundlegende arithmetische Operationen für die Anwendung. Die Prioritäten sind bei der Ausführung zu beachten.

SymbolRechenoperationBeispiel
:= Zuweisunga := b;
+Additiona := b + c;
-Subtraktiona := b - c;
*Multiplikationa := b * c;
/Divisiona := b / c;
MODModulo, ganzzahliger Rest der Division a := b MOD c;

Der Datentyp von Variablen und Werten ist immr entscheidend für deren Berechnung.

Ausdruck / SyntaxVar1Var2Var3Ergebnis
Var 1 := 10 / 4;INTINT INT2
Var1 := 10 / 4;REAL INT INT2.0
Var1 := 10.0 / 4;REALREALINT2.5

Vergleichsoperatoren​

Symbol VergleichsausdruckBeispiel
=GleichIF a = b THEN
<>UngleichIF a <> b THEN
>Größer alsIF a > b THEN
>=Größer als oder gleichIF a >= b THEN
<Kleiner alsIF a < b THEN
<=Kleiner als oder gleichIF a <= b THEN

Entscheidungen​

IF a > b THEN           // 1. Vergleich
c := 1; // Anweisung, wenn 1. Vergleich WAHR
ELSIF a > d THEN // 2. Vergleich
e := 1; // Anweisung, wenn 2. Vergleich WAHR
ELSE // Alternativzweig, kein Vergleich WAHR
f := 1; // Anweisung des Alternativzweigs
END_IF // Ende der Entscheidung

IF - ELSE Anweisung​

IF - ELSIF Anweisung​

CASE Anweisung​

Die CASE Anweisung wird verwendet, um mehrere bedingte Anweisungen mit derselben bedingten Variablen zu gruppieren.

CASE newCase OF                             // Beginn von Case         
1,5: // für 1 und 5
StateDescription := "Stopped";
2: // für 2
Statedescription := "Running";
3, 4, 6 .. 8: // für 3, 4, 6, 7, 8
Statedescription := "Failed";
ELSE // Alternativzweig
(* .. *)
END_CASE // Ende von Case

In einem Programmzyklus wird immer nur ein Schritt der CASE Anweisung abgearbeitet. Die Schrittvariable muss ein ganzzahliger Datentyp sein.

Schleifen​

Schleifen werden innerhalb eines Zyklus wiederholt abgearbeitet. Der Code wird solang ausgeführt, bis eine definierte Abbruchbedingung erfüllt ist.

Um Endlosschleifen zu vermeiden, sollte immer ein Weg vorgesehen werden, der die Schleife nach einer bestimmten Anzahl an Wiederholungen beendet.

Kopfgesteuerte Schleifen (FOR, WHILE) überprüfen die Abbruchbedingung vor dem Durchlauf, fußgesteuerte Schleifen (REPEAT) am Ende.

FOR Anweisung​

Die FOR Anweisung wird dafür verwendet, eine bestimmte Anzahl an Wiederholungen eines Programmteils auszuführen.

Sum := 0;
FOR Index := 0 TO 3 DO
Sum := Sum + Values[ Index ];
END_FOR;

WHILE Anweisung​

Die WHILE Anweisung verfügt über keinen Schleifenzähler. Diese wird solange aufgerufen, bis eine Bedingung oder ein Ausdruck FALSE ist.

WHILE Index < 10 DO
Sum := Sum + Values[ Index ];
Index := Index + 1;
END_WHILE;

REPEAT Anweisung​

Die Abbruchbedingung wird bei der REPEAT Schleife erst nach dem Ausführen überprüft.

Index := 0;
Sum := 0;
REPEAT
Sum := Sum + Values[ Index ];
Index := Index + 1;
UNTIL Index >= 10 END_REPEAT;

EXIT Anweisung​

Kann bei allen Schleifentypen eingesetzt werden und führt zum sofortigen Abbruch.

REPEAT
IF Exit = TRUE THEN
EXIT;
END_IF
UNTIL Index >5
END_REPEAT