Kommandogrupper
Följande kommandogrupper är de grundläggande konstruktionerna för strukturerad text och kan kombineras på ett flexibelt sätt och inordnas i varandra.
Boolska länkar
Booleska länkar används för binär länkning av variabler.
| Symbol | Logisk operation | Exempel | | --- | | --- | |NOT | Binär negation | a := NOT b;| | AND| Logisk AND | a := b AND c;| | OR | Logical OR | a := b OR c;| | XOR| Exclusive OR | a := b XOR c; | Exclusive OR | a := b XOR c;
Sanningstabellen för booleska länkar ser ut på följande sätt:
| Inmatning | OCH | ELLER | XOR |
|---|---|---|---|
| 0 0 | 0 | 0 | 0 |
| 0 1 | 0 | 1 | 1 |
| 1 0 | 0 | 1 | 1 |
| 1 1 | 1 | 1 | 0 |
Aritmetiska operationer
Den strukturerade texten innehåller grundläggande aritmetiska operationer för användning. Prioriteringarna måste följas under utförandet.
| Symbol | Aritmetisk operation | Exempel |
|---|---|---|
:= | Tilldelning | a := b; |
+ | Tillägg | a := b + c; |
- | Subtraktion | a := b - c; |
* | Multiplikation | a := b * c; |
/ | Division | a := b / c; |
MOD | Modulo, heltalsrest av divisionen | a := b MOD c; |
Datatypen för variabler och värden är alltid avgörande för beräkningen av dessa.
| Uttryck / Syntax | Var1 | Var2 | Var3 | Resultat | | --- | | --- | -- | | Var 1 := 10 / 4; | INT | INT | 2 | | Var1 := 10 / 4; | REAL | INT | 2.0 | | Var1 := 10.0 / 4; | REAL | REAL | INT | 2.5 | | Var1 := 10.0 / 4; | REAL | REAL | INT | 2.5 |
Jämförelse av operatörer
| Symbol | Jämförande uttryck | Exempel | |
|---|---|---|---|
= | Kommer snart | OM a = b DÅ | |
<> | Ojämlik | IF a <> b DÅ | |
> | Större än | IF a > b DÅ | |
>= | Större än eller lika med | IF a >= b DÅ | |
< | Mindre än | IF a < b DÅ | |
<= | Mindre än eller lika med | IF a <= b DÅ |
Beslut
IF a > b THEN // 1. Jämförelse
c := 1; // Instruktion om 1. Jämförelse TRUE
ELSIF a > d THEN // 2. Jämförelse
e := 1; // Instruktion om 2. Jämförelse TRUE
ELSE // Alternativ gren, ingen jämförelse TRUE
f := 1; // Uttalande om den alternativa grenen
END_IF // Slut på beslutet
IF - ELSE-angivelse
IF - ELSIF-instruktion
CASE-utlåtande
CASE-satsen används för att gruppera flera villkorliga satser med samma villkorliga variabel.
CASE newCase OF // Start of Case
1,5: // för 1 och 5
StateDescription := "Stopped";
2: // för 2
Statedescription := "Running";
3, 4, 6 ... 8: // för 3, 4, 6, 7, 8
Statedescription := "Failed";
ELSE // Alternativ gren
(* .. *)
END_CASE // Slut på fall
I en programcykel bearbetas endast ett steg i CASE-instruktionen åt gången. Stegvariabeln måste vara en heltalsdatatyp.
Slipning
Loops bearbetas upprepade gånger inom en cykel. Koden exekveras tills ett definierat avslutningsvillkor uppfylls.
För att undvika ändlösa loopar bör det alltid finnas en väg som avslutar loopen efter ett visst antal upprepningar.
Huvudstyrda slingor (FOR, WHILE) kontrollerar avslutningsvillkoret före körningen, fotstyrda slingor (REPEAT) i slutet.
FOR-utlåtande
FOR-instruktionen används för att utföra ett visst antal repetitioner av en del av programmet.
Sum := 0;
FOR Index := 0 TO 3 DO
Sum := Sum + Values[ Index ];
END_FOR;
WHILE-meddelande
WHILE-instruktionen har ingen loopräknare. Detta kallas tills ett villkor eller uttryck är FALSKT.
WHILE Index < 10 DO
Sum := Sum + Values[ Index ];
Index := Index + 1;
END_WHILE;
REPEAT-uttalande
Avslutningsvillkoret kontrolleras i REPEAT-loopen först efter exekveringen.
Index := 0;
Sum := 0;
REPEAT
Sum := Sum + Values[ Index ];
Index := Index + 1;
UNTIL Index >= 10 END_REPEAT;
EXIT-meddelande
Kan användas med alla typer av loopar och leder till omedelbar uppsägning.
REPEAT
IF Exit = TRUE THEN
EXIT;
END_IF
UNTIL Index >5
END_REPEAT