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.
| Symbol | Logische Verknüpfung | Beispiel |
|---|---|---|
NOT | Binäre Negation | a := NOT b; |
AND | Logisches UND | a := b AND c; |
OR | Logisches ODER | a := b OR c; |
XOR | Exklusives ODER | a := b XOR c; |
Die Wahrheitstabelle für Boolesche Verknüpfungen sieht wie folgt aus:
| Eingabe | AND | OR | XOR |
|---|---|---|---|
| 0 0 | 0 | 0 | 0 |
| 0 1 | 0 | 1 | 1 |
| 1 0 | 0 | 1 | 1 |
| 1 1 | 1 | 1 | 0 |
Arithmetische Operationen
Der Strukturierte Text enthält grundlegende arithmetische Operationen für die Anwendung. Die Prioritäten sind bei der Ausführung zu beachten.
| Symbol | Rechenoperation | Beispiel |
|---|---|---|
:= | Zuweisung | a := b; |
+ | Addition | a := b + c; |
- | Subtraktion | a := b - c; |
* | Multiplikation | a := b * c; |
/ | Division | a := b / c; |
MOD | Modulo, ganzzahliger Rest der Division | a := b MOD c; |
Der Datentyp von Variablen und Werten ist immr entscheidend für deren Berechnung.
| Ausdruck / Syntax | Var1 | Var2 | Var3 | Ergebnis |
|---|---|---|---|---|
Var 1 := 10 / 4; | INT | INT | INT | 2 |
Var1 := 10 / 4; | REAL | INT | INT | 2.0 |
Var1 := 10.0 / 4; | REAL | REAL | INT | 2.5 |
Vergleichsoperatoren
| Symbol | Vergleichsausdruck | Beispiel |
|---|---|---|
= | Gleich | IF a = b THEN |
<> | Ungleich | IF a <> b THEN |
> | Größer als | IF a > b THEN |
>= | Größer als oder gleich | IF a >= b THEN |
< | Kleiner als | IF a < b THEN |
<= | Kleiner als oder gleich | IF 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