Tom Mejer Antonsen
PLC Controls with
Structured Text (ST)
IN PLC OUT
S1 VAR
$1: BOOL; //Start switch NO
Start $2: BOOL; //Stop switch NC
K1: BOOL; //Motor DI
L1: BOOL; //Green Lamp
END VAR
PROGRAM MotorControl
/'Start switch activated
IF $1 THEN
K1:= TRUE: /Run motor
L1:= TRUE: //Lamp on
S2 END_IF;
//Stop switch activated
Stop IF NOT S2 THEN
K1:= FALSE: /Stop Motor
L1:=FALSE; //Lamp off
END IF:
K1
24V
Motor
GND
L1
Motor Lamp
Power
IEC 61131-3 and best practice
ST programming
3rd edition
PREFACE
When I started as Assistant Professor (lecturer) at Dania Academy, Randers,
Denmark, one of my first tasks was to find books for the students at the
Automation Technology degree course.
It turned out to be particularly difficult to find relevant material related to
programming in Structured Text (ST). Books with hundreds of pages would
only contain a few pages about ST programming, and only at a very
theoretical level.
My students enjoy learning ST programming from practical examples
and methods. In January 2017, I began work to fill this gap by developing
new teaching material under the working title of:
”Get Started with Structured Text”
Whilst using the material in my lectures, it has continuously been updated
and extended. There has been high demand for the material among my
students, and I have now turned it into a book for other interested readers to
benefit from.
It is my hope that you will enjoy this book.
I would like to extend my gratitude to my students, fellow lecturers and
colleagues for feedback and inspiration.
Comments, complaints, compliments and suggestions are welcome and
appreciated.
Please, send them to TomMejerAntonsen@[Link]
First edition issued June 2018
The 3rd edition has been updated and expanded with many of the
suggestions and questions that readers and students have come up with,
including the desire for many more illustrations and program examples.
Please enjoy!
Tom Mejer Antonsen
Randers, Denmark (June 2020)
Table of contents
1. INTRODUCTION
1.1 BACKGROUND FOR ST
1.2 PREREQUISITES FOR LEARNING ST PROGRAMMING
1.3 FOUNDATION OF KNOWLEDGE
1.4 ADVANTAGES OF ST PROGRAMMING
1.5 DISADVANTAGES OF ST PROGRAMMING
2. HOW THE PLC EXECUTES PLC CODE
3. COMMENTS IN THE PROGRAMMING CODE
4. DATA TYPES
4.1 ELEMENTARY DATA TYPES (INT, REAL, BOOL)
4.2 USER DEFINED DATA TYPES
4.3 ENUMERATED DATA TYPE, ENUM
4.4 STRUCTURED DATA TYPE, STRUCT
4.5 COLLECTION OF VALUES WITH SAME DATA TYPE, ARRAY
5. VARIABLE SCOPE
5.1 EXAMPLE: VARIABLES, SCOPE AND IO-MODULES
6. NAMING THE VARIABLES
6.1 VARIABLES WITH UNIT OF MEASUREMENT
6.2 VARIABLES WITH FIXED VALUES (CONSTANT)
7. OPERATORS, MATH AND LOGIC
7.1 ARITHMETIC OPERATORS (+, -, *, /)
7.2 RELATIONAL OPERATORS (=, <, <=, >, >=, <>)
7.3 NUMERIC OPERATORS (MATH FUNCTIONS)
7.4 LOGIC OPERATORS (AND, OR, XOR, NOT)
7.5 LOGIC, MATH FORMULAS AND USE OF PARENTHESES ()
8. VARIABLE ASSIGNMENT
8.1 MATH CALCULATIONS CHALLENGE
8.2 DIVISION BY ZERO
8.3 CALCULATING WITH REAL AND INT VARIABLES
8.4 DECIMAL ERRORS WHEN USING REAL
8.5 DATA COMMUNICATION (TRANSFER OF VARIABLES)
8.6 DATA TYPE CONVERSION FUNCTIONS
8.7 FINDING BINARY VALUES OF AN INTEGER (MASKING BIT)
8.8 VALVE MATRIX
8.9 ROUNDING A REAL TO 2 DECIMALS (2 DIGIT REAL)
9. 9 BASIC ST PROGRAMMING
9.1 IF-THEN-ELSE STATEMENT
9.1.1 EXAMPLE: Motor control with self holding relay
9.1.2 EXAMPLE: Manually operated tank control
9.1.3 EXAMPLE: IF-THEN-ELSE open and close valve
9.1.4 EXAMPLE: Robot control for packing items
9.2 CASE STATEMENT
9.2.1 EXAMPLE: CASE – Setting the motor speed
9.2.2 EXAMPLE: CASE – For executing programs
9.2.3 EXAMPLE: CASE – Recognizing numbers
9.3 ITERATION STATEMENT, LOOPS
9.4 FOR-DO STATEMENT
9.4.1 EXAMPLE: FOR – A loop running 4 times
9.4.2 EXAMPLE: FOR – LOOP and 3D ARRAY
9.4.3 EXAMPLE: Calculation of the average value
9.4.4 EXAMPLE: Find the lowest value in an array of
numbers
9.4.5 EXAMPLE: Sorting numbers inside an ARRAY
10. SPLITTING UP THE PLC PROGRAM
10.1 PROGRAMMODULES
10.2 FUNCTIONS
10.3 FUNCTION (FC) AND FUNCTION BLOCK (FB)
10.4 DESIGN GUIDE FOR IMPLEMENTATION OF A FUNCTION
10.4.1 EXAMPLE: FC for conversion of temperature
10.4.2 EXAMPLE: FC to calculate average
10.4.3 EXAMPLE: FC for level measurement in tank
10.4.4 EXAMPEL: FC to linear scaling of sensor signal
11. WORKING WITH TEXT AND CHARS, STRING
11.1 EXAMPLE: FC WITH STRING
11.2 EXAMPLE: PROGRAM STRUCTURE FOR LANGUAGE CHANGE
11.3 STANDARD FUNCTIONS, STRING
11.4 EXAMPLE: FC FIND NUMBERS IN A STRING
11.5 FB: OPTIMIZE INSERTION OF VALUES INTO STRUCT
12. BUILT-IN STANDARD FUNCTIONS
12.1 FIRST PROGRAM EXECUTION: FIRST SCANBIT
12.2 EDGE DETECTION (ONE SHOT): R_TRIG, F_TRIG
12.2.1 EXAMPEL FB: One Shot rising detection
12.3 COUNTING FUNCTIONS: CTU, CTD, CTUD
12.3.1 EXAMPLE: Counting of items on a conveyor belt
12.3.2 EXAMPLE FC: Instrument pulse counter
12.4 REPEATED PROGRAM ‘CALLS’ AND TIMER DELAY: TON, TOF
12.4.1 EXAMPLE: Using the program scan as timer
12.4.2 EXAMPLE: Function block for Flashing Light
12.4.3 EXAMPLE FC: Time delay on digital alarms
12.4.4 EXAMPLE FC: Monitoring of analog values and
alarms
12.4.5 EXAMPLE FB: Pulse pause function
12.4.6 EXAMPLE FB: A timer with a pause function
13. 13 SPECIAL FUNCTIONS AND PROGRAM STRUCTURES
13.1 SIMPLE QUEUE STRUCTURE
13.2 FIF0 – FIRST IN FIRST OUT
13.3 GENERATING RANDOM NUMBERS (RND, RANDOMIZE)
13.4 DIGITAL LOW-PASS FILTER (LP-FILTER)
13.5 SIMULATION SIGNALS FOR TESTING OF PROGRAM CODE
13.6 CONVEYOR BELT WITH SEQUENCE CONTROL
13.7 PUMP CONTROL WITH TWO PUMPS
13.8 PUMP CONTROL WITH SEQUENCE CONTROL
13.9 AUTOMATICALLY AND MANUALLY OPERATED PUMP CONTROL
13.10 CALCULATING TANK VOLUME, CYLINDER ON HEMISPHERE
13.11 PLC CONTROL FOR PUMPING WELL STATION WITH 6 PUMPS
13.12 EXAMPLE: HEATING OF LIQUID IN A TANK
13.13 EXAMPLE: FC TOGGLE SWITCH (TWO-WAY SWITCH)
13.14 EXAMPLE: 3D CAR PARK CONTROLLED BY A ROBOT
13.15 EXAMPLE: CONFIGURABLE CAR WASH CONTROL
13.16 EXAMPLE: ADAPT PUMP SPEED TO SAVE ENERGY
13.17 PLC CONTROL OF ROBOT AND CNC MACHINE
14. FROM LADDER DIAGRAM TO ST-PROGRAMMING
15. BEST PRACTICE ST-PROGRAMMING
15.1 TABULATION OF TEXT AND PLACING OF SPACE
15.2 EMPTY LINES BETWEEN CODE
15.3 AVOID SPAGHETTI CODE
15.4 GOOD PROGRAM STRUCTURE
15.5 THE USE OF VARIABLES
15.6 MISCELLANEOUS
15.7 CODE SHARING ON THE INTERNET
15.8 OOP – OBJECT-ORIENTED PROGRAMMING
16. GUIDE AND HELP DURING ST-PROGRAMMING
16.1 GUIDE TO PROGRAMMING EXERCISES
16.2 PROGRAMMING AND TROUBLESHOOTING TIPS
16.3 MODULE TEST AND SIMULATION OF CONNECTED EQUIPMENT
17. INDEX