Hoppa till huvudinnehåll

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