IST / DEEC / API MEEC 2011-2012
Industrial Automation
(Automação de Processos Industriais)
PLCs Programming Languages
Structured Text
http://users.isr.ist.utl.pt/~jag/courses/api1112/api1112.html
Slides 2010/2011 Prof. Paulo Jorge Oliveira
Rev. 2011/2012 Prof. José Gaspar
Page 1
IST / DEEC / API Industrial Automation
Syllabus:
Chap. 2 – Introduction to PLCs [2 weeks]
...
Chap. 3 – PLCs Programming Languages [2 weeks]
Standard languages (IEC-1131-3):
Ladder Diagram; Instruction List, and Structured Text.
Software development resources.
...
Chap. 4 - GRAFCET (Sequential Function Chart) [1 week]
Page 2
IST / DEEC / API Chap. 3 - PLCs Programming languages
Linguagens de programação de PLCs
(IEC 1131-3)
Ladder Diagram Structured Text
If %I1.0 THEN
%Q2.1 := TRUE
ELSE
%Q2.2 := FALSE
END_IF
Instruction List Sequential Function Chart
1
(GRAFCET)
(1) m
LD %M12 2 Direita
AND %I1.0 (2) b
ANDN %I1.1 3 Carrega
OR %M10 (3) p
ST %Q2.0 4 Esquerda
(2) a
Page 3
IST / DEEC / API Chap. 3 - PLCs Programming languages
(*
Structured Text Searching for the first element that is not zero in a
table of 32 words (table = words %MW100 till %MW131).
Input:
%M0 works as an enable bit (run search iff %M0 is 1)
%MW100 till %MW131 is the table to search
Output:
%M1 is set to 1/0 if the not zero element was/was-not found
%MW10 is the non-zero value found
%MW11 is the location of the non-zero value
Auxiliary:
%MW99 is the table index
*)
IF %M0 THEN
FOR %MW99:=0 TO 31 DO
IF %MW100[%MW99]<>0 THEN
%MW10:=%MW100[%MW99];
%MW11:=%MW99;
%M1:=TRUE;
EXIT; (* exit the loop *)
ELSE
%M1:=FALSE;
END_IF;
END_FOR;
ELSE
%M1:=FALSE;
END_IF;
Page 4
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
PLC Program = {Sections}, Section = {Sequences}
One sequence is equivalent to one or more rungs in ladder diagram.
Each section can be programmed in Ladder, Instruction List, or Structured Text
Representation of
an ST section:
The length of an instruction line is limited to 300 characters. The length of
an ST section is not limited within the programming environment. The
length of an ST section is only limited by the size of the PLC memory.
Page 5
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Basic Instructions
Load
Open contact: contact is active (result is 1)
:= while the control bit is 1.
Close contact: contact is active (result is 1)
:=NOT while the control bit is 0.
Contact in the rising edge: contact is active during a scan cycle
:=RE P
where the control bit has a rising edge.
Contact in the falling edge: contact is active during a scan cycle
:=FE N
where the control bit has a falling edge.
Examples: %M0:=%I0.2.0; %M0:=NOT %I0.2.0; %M0:=RE(%I0.2.0);
Page 6
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Basic Instructions
Store
The result of the logic function activates the coil.
:=
:=NOT The inverse result of the logic function activates the coil.
The result of the logic function energizes the relay
SET S
(sets the latch).
The result of the logic function de-energizes the relay
RESET R
(resets the latch)..
Examples: %MW100:=123; %Q0.4.0:=NOT %M1; %M0:=TRUE; SET(%Q0.4.0);
Page 7
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Basic Instructions
AND
AND of the operand with the result of
AND the previous logical operation.
AND(NOT...) AND of the operand with the inverted
result of the previous logical operation.
P
AND of the rising edge with the result
AND(RE...) of the previous logical operation.
AND of the falling edge with the result
AND(FE...) N
of the previous logical operation.
Page 8
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Basic Instructions
OR
OR OR of the operand with the result of the previous
logical operation.
OR of the operand with the inverted result of the
OR(NOT...) previous logical operation.
OR of the rising edge with the result of the
OR(RE...) P previous logical operation.
OR of the falling edge with the result of the
OR(FE...) previous logical operation.
N
Page 9
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Example:
Unity Pro (Premium PLC):
%Q0.4.3 := %I0.2.1 OR %M1;
%Q0.4.2 := %M2 OR (NOT %I0.2.2);
%Q0.4.4 := %I0.2.3 OR RE(%I0.2.4);
%Q0.4.5 := %M3 OR FE(%I0.2.5);
Page 10
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Basic Instructions
XOR
Unity Pro (Premium PLC):
%Q0.4.3 := %I0.2.1 XOR %M1; %Q0.4.2 := %M2 XOR (NOT %I0.2.2);
%Q0.4.4 := %I0.2.3 XOR RE(%I0.2.4); %Q0.4.5 := %M3 XOR FE(%I0.2.5);
Page 11
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Basic Instructions to Manipulate Bit Tables
Page 12
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text Temporized Relays or Timers (pneumatic)
The instantaneous contacts change state as soon as the timer coil is powered.
The delayed contacts change state at the end of the time delay.
Page 13
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text Characteristics:
Identifier: %TMi 0..63 in the TSX37
Temporized Relays
or Input: IN to activate
Timers
Mode: TON On delay
TOFF Off delay
TP Monostable
%TMi Time basis: TB 1mn (def.), 1s,
IN Q 100ms, 10ms
MODE: TON Programmed value: %TMi.P 0...9999 (def.)
TB: 1mn period=TB*TMi.P
TM.P: 9999 Actual value: %TMi.V 0...TMi.P
MODIF: Y (can be real or tested)
Modifiable: Y/N can be modified from
the console
Page 14
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Example:
Page 15
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Temporized Relays
or Timers
Very similar to IL, notice however the missing CAL and the required “;”.
Page 16
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Counters
Some applications...
Page 17
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Counters in Unity Pro
CU "0" to "1" => CV is incremented by 1
CU "0" to "1" => CV is incremented by 1 CD "0" to "1" => CV is decremented by 1
CV ≥ PV => Q:=1 CV ≥ PV => QU:=1
CV ≤ 0 => QD:=1
R=1 => CV:=0
R=1 => CV:=0 LD=1 => CV:=PV
R has precedence over LD
NOTE: counters are saturated such that no overflow occurs
Page 18
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text Ladder:
Counters in Unity Pro
Instruction List: Structured Text:
Again IL and ST are similar, notice however the missing CAL and the required “;”.
Page 19
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Numerical Processing
Algebraic and Logic Functions
Page 20
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Numerical Processing
Arithmetic Functions for Words
Page 21
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Numerical Processing
Example:
Arithmetic functions
IF %M0 THEN
%MW0 := %MW10 + 100;
END_IF;
IF %I3.2 THEN
%MW0 := SQRT(%MW10);
END_IF;
IF RE(%I3.3) THEN
INC(%MW100);
END_IF;
Page 22
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Numerical Processing
Example:
Arithmetic functions
IF %M0 THEN
%MW0 := %MW1 + %MW2;
END_IF;
IF %S18 THEN
%MW10 := 32767; RESET %S18;
ELSE
%MW10 := %MW0;
END_IF;
Use of a system variable:
%S18 – flag de overflow
Page 23
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Numerical Processing
Logic Functions
Page 24
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Numerical Processing
Example:
Logic functions
Page 25
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Numerical Processing
Example:
Numeric Tables Manipulation
Page 26
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Numerical Processing
Priorities on the execution of the operations
Page 27
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Structures for Control of Flux
Subroutines
Call and Return
Not executed if %M5
is larger than 3
Page 28
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Structures for Control of Flux
JUMP instructions:
Instruction List - conditional and unconditional jumps
Structured Text – just unconditional jumps as the
IF .. THEN .. ELSE provides the conditional clauses.
Note: by default, jumps are disabled in Structured Text
(if needed, enable them in the menu Tools -> Project Settings)
Page 29
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Structures for Control of Flux
Example:
Use of jump instructions
Unity Pro:
Notes: It is not a good style of programming. Does
not improve the legibility of the proposed solution.
Attention to INFINITE LOOPS.
Page 30
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Structures for Control of Flux
IF ... THEN ... ELSE ...
Page 31
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Structures for Control of Flux
WHILE
Example:
( )
( )
Page 32
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Structures for Control of Flux
REPEAT ... UNTIL
Example:
FOR ... DO
EXIT to abort the execution of a
structured flux control instruction
Page 33
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Note: in Unity Pro, both in Structured Text and Instruction List, the
conventional array indexing (e.g. %MW100[%MW1]) is disabled by default. To
enable it, go to the project settings, menu Tools -> Project Settings. See the
grayed region in the next figure:
Page 34
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Structures for Control of Flux
Halt
Stops all processes!
Events masking
Page 35
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Data and time related instructions
Page 36
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
There are other advanced instructions (see manual)
• Monostable
• Registers of 256 words (LIFO ou FIFO)
• DRUMs
• Comparators
• Shift-registers
...
• Functions to manipulate floats
• Functions to convert bases and types
Page 37
IST / DEEC / API Chap. 3 - PLCs Programming languages
Structured Text
Numerical Tables
Page 38