Structured Text (ST)
The presentation of the text has no meaning for a ST program. You can insert blank characters and line breaks where you want in the program text.
Comments
Comment texts can be entered anywhere in a ST program. Comment texts have no meaning for the execution of the program. A comment text must begin with "(*" and end with "*)". Comments can be entered on several lines (i.e. a comment text can include line breaks). Comment texts cannot be nested.
You can also use // to add a comment on a single line as shown below:
//My main comment
(* My comment *)
a := d + e;
(* A comment can also
be on several lines *)
b := d * e;
c := d - e; (* My comment *)
Expressions
Each statement describes an action and can include evaluation of complex expressions. An expression is evaluated:
- from the left to the right
- according to the default priority order of operators
- the default priority can be changed using parentheses
Arguments of an expression can be:
- declared variables
- constant expressions
- function calls
Statements
Below are available basic statements that can be entered in a ST program:
- assignment
- function block calling
Below are the available conditional statements in ST language:
- IF / THEN / ELSE
Simple binary switch.
One or several ELSIF are allowed.
IF a = b THEN
c := 0;
ELSIF a < b THEN
c := 1;
ELSE
c := -1;
END_IF;
- CASE
Switch between enumerated statements according to an expression.
The selector can be any integer or a STRING.
CASE iChoice OF
0:
MyString := 'Nothing';
1 .. 2,5:
MyString := 'First case';
3,4:
MyString := 'Second case';
ELSE
MyString := 'Other case';
END_CASE;
Below are the available statements for describing loops in ST language:
-
-
Loop instructions can lead to infinite loops that block the target cycle.
Never test the state of an input in the condition as the input will not be refreshed before the next cycle.
- WHILE
Repeat a list of statements.
Condition is evaluated on loop entry before the statements.
iCount := 0;
WHILE iCount < 100 DO
iCount := iCount +1;
MyVar := MyVar + 1;
END_WHILE;
- REPEAT
Repeat a list of statements.
Condition is evaluated on loop exit after the statements.
iCount := 0;
REPEAT
MyVar := MyVar + 1;
iCount := iCount + 1;
UNTIL iCount < 100 END_REPEAT;
- FOR
Iteration of statement execution.
The BY statement is optional (default value is 1)
FOR iCount := 0 TO 100 BY 2 DO
MyVar := MyVar + 1;
END_FOR;
-
-
Loops with FOR instructions are slow, so you can optimize your code by replacing such iterations with a WHILE statement.
Below are some other statements in ST language:
- WAIT / WAIT_TIME (suspend the execution)
- ON … DO (conditional execution of statements: provides a simpler syntax for checking the rising edgeA rising edge is the transition of a digital signal from low to high. It is also called positive edge of a Boolean condition)
-
-
ST also provides an automatic completion of typed words. See Auto-completion of words.