ST cheatsheet

Overview

---------------------------------
PROGRAM stexample
VAR
    x : BOOL;
END_VAR
---------------------------------
x := TRUE;
REPEAT
    x := FALSE;
UNTIL x := FALSE;
END_REPEAT;
---------------------------------

Comment

// single-line comment
<expression>; /* Comment after end of ST line */
<statement>; (* Comment after end of ST line *)
/* Multiple line comment:

...
*/

(* Multiple line comment:

...
*)

DataType

X : BOOL;

Y1 : INT;  /* -2^15 ... 2^15-1 */
Y2 : SINT; /* -2^7  ... 2^7-1 */
Y3 : LINT; /* -2^63 ... 2^63-1 */
Y4 : UINT; /* 0 ... 2^16-1 */

R1 : REAL; /* +/-10^(+/-)38 */

S1 : STRING;
STRING[255];
ARRAY [0..10] OF DINT;

Type conversion

sVal := DINT_TO_STRING(iVal);

Operator

AND
OR
XOR
NOT
= equal
<> not equal
MOD

IF

IF (INPUT1) AND (INPUT2) THEN
    OUTPUT1 := TRUE;
    OUTPUT2 := TRUE;
ELSIF (INPUT1) THEN
    OUTPUT1 := TRUE;
    OUTPUT2 := FALSE;
ELSE
    OUTPUT1 := FALSE;
    OUTPUT2 := FALSE;
END_IF

CASE

iStep := 200;

CASE iStep OF
    100: 
        iStep := iStep + 100;
    200: 
        iStep := iStep + 100;
    300: 
        iStep := iStep + 100;
ELSE
    iStep := iStep + 10;
END_CASE

FOR

FOR count := initial_value TO final_value BY increment DO
    <statement>;

    IF [boolean expression] THEN
        EXIT;
    END_IF
END_FOR

WHILE

counter := 0;
WHILE counter < 10 DO
    counter := counter + 1;
    machine_status := counter * 10;

    IF [boolean expression] THEN
    EXIT;
        END_IF;    
END_WHILE

Last updated

Was this helpful?