Function Block Introduction Guide R133-E1-01
Function Block Introduction Guide R133-E1-01
Before using this product, you must read “Introduction”, “Safety Cautions”, and “Precautions for
Safe Use”.
“Function Block Implementation Guide” describes basic operations to use OMRON FB Library and hints to create user
program with Function Blocks.
Cautions and detailed explanation are available on Help and PDF Manual.
* Acrobat Reader 4.0 or later is required to read the PDF file.
Contents
Chapter 1 OMRON FB Library
1. What is a Function Block? 1-1
2. An Example of a Function Block 1-2
3. Overview of the OMRON FB Library 1-3
3-1. Benefits of the OMRON FB Library 1-3
3-2. Example of using the OMRON FB Library 1-4
3-3. Content of the OMRON FB Library 1-6
3-4. File Catalog and Where to Access the OMRON FB Library 1-7
Chapter 2 How to use the OMRON FB Library
1. Explanation of the target program 2-1
1-1. Application Specifications 2-1
1-2. Specifications of the OMRON FB Part file 2-1
1-3. Input program 2-2
2. Opening a new project and setting the Device Type 2-3
3. Main Window functions 2-4
4. Import the OMRON FB Part file 2-5
5. Program Creation 2-6
5-1. Enter a Normally Open Contact 2-6
5-2. Entering an Instance 2-7
5-3. Entering Parameters 2-7
6. Program Error Check (Compile) 2-9
7. Going Online 2-10
8. Monitoring - 1 2-11
9. Monitoring - 2 Change Parameter Current Value 2-12
10. Online Editing 2-13
Supplemental Information
How to delete unused Function Block definitions
Memory allocation for Function Blocks
Useful Functions
Appendix. Examples of ST (Structured Text) Appendix
Introduction
This document summarizes tips for using OMRON FB Library and creating function block (FB), which are available for
Omron’s SYSMAC CS1/CJ1-H/CJ1M series CPU unit (unit version 3.0 or later) and CX-Programmer Ver.5.0 or later.
Monitoring of FB ladder
As with main ladder program, state of FB ladder program can be monitored.
Jump to ST help
You can jump Structured Text editor through pop-up menu to a help topic to easily check syntax for ST programming.
Caution:
Although you can use a program that contains nested FB for a CS1/CJ1-H/CJ1M series CPU unit (unit version 3.0 or
later), if you try to upload a program that contains nested FB by CX-Programmer (Ver.5.0 or older) that does not support
nesting, either you will fail to do so or you will just get one under incomplete state.
If you save the file as it is, you will not be able to tell difference between the incomplete and correct programs.
1.
1. What
What is
is aa Function
Function Block?
Block?
“Function Blocks” are predefined programs (or functions) contained within a single program element that may be
used in the ladder diagram. A contact element is required to start the function, but inputs and outputs are editable
through parameters used in the ladder arrangement.
The functions can be reused as the same element (same memory) or occur as a new element with its own memory
assigned.
Input
Input Process (algorithm) Output
Output
A1 B1 X1 An Bn Xn
An
An
Xn
Xn
Bn
Bn
TIM TIM
1 n
#0100 #0100
T1 Y1 Tn Yn
Yn
Yn
Z1 Zn
Zn
Zn
Produce template
Partial Ladder program for machine A
Function Block definition
Control Device 1
Device Control
P_On Device Control
EN ENO EN ENO
A1 A X X1
B1 B Y Y1 Allocate to
Z Z1 Ladder A X
program
Sets input / output B Y
Control Device 2 parameters Function Block
Instance (invocation)
Z
P_On Device Control
EN ENO
A2 A X X2
B2 B Y Y2
Z Z2
Function Block definition … This contains the defined logic (algorithm) and I/O interface. The memory addresses are not allocated in the Function Block Definition
Function Block instance (invocation) … This is the instruction that will call the function block instance when used by the ladder program, using the memory allocated
to the instance
OMRON FB Library
2.
2. An
An Example
Example of
of aa Function
Function Block
Block
The following figures describe an example of a function block for a time limit circuit, to be used in the ladder. It is
possible to edit the set point of the TIM instruction to reallocate the set time for turning off the output in the ladder
rung. Using the function block as shown below, it is possible to make the time limit of the circuit arbitrary by only
changing one specific parameter.
Timing chart
Start T_FB
000.00 TIM
T_FB
Time
001.00 Q
2.0 sec Q
OMRON FB Library
3.
3. Overview
Overview of
of the
the OMRON
OMRON FB
FB Library
Library
The OMRON FB Library is a collection of predefined Function Block files provided by Omron. These files are
intended to be used as an aid to simplify programs, containing standard functionality for programming PLCs
and Omron FA component functions.
(1) No need to create ladder diagrams using basic functions of the PLC units and FA components
More time can be spent on bespoke programs for the external devices, rather than creating basic
ladder diagrams, as these are already available.
Controlling the predefined components made by Omron can be easily achieved from the PLC ladder diagram.
Temperature
controller
Smart sensor Vision sensor
Omron Components
OMRON FB Library
Communicate between
PLC and the devices
DeviceNet
Temperature
controller
Generic slaves such as IO terminal PLC Wireless
Inverter
OMRON FB Library
The library reference describes the operation specifications of the OMRON FB Part file, and the specifications
of the input and the output parameters for each. The file format for this is PDF.
When the OMRON FB Library is used, the user should select the OMRON FB Part file, set the input / output
parameters, and test the program operations referring to the library reference.
OMRON FB Library
Number of OMRON
Type Target components FB Part files (at the
time of February ’05)
CX-Programmer Ver.6.0
Install CD
Web server
The internet
The internet
Offline Operation
Explanation
Explanation of
of Opening
Opening aa Import
Import Creating
Creating aa Program
Program Check
Check
target
target Program
Program new
new project
project FB
FB Library
Library program
program
1.
1. Explanation
Explanation of
of the
the target
target program
program
This chapter describes how to use OMRON FB Library using the OMRON FB Part file ‘Make ON Time/OFF
Time Clock Pulse in BCD’.
2.
2. Opening
Opening aa new
new project
project and
and setting
setting the
the Device
Device Type
Type
Click the toolbar button [New] in CX-Programmer.
Click
Title bar
Menus
Tool bar
Project
Project Tree
Tree
Section
Section
Function
Function Block
Block Definition
Definition
Status bar
Project
Project Workspace
Workspace Ladder
LadderWindow
Window
Title Bar Shows the file name of saved data created in CX-Programmer.
Toolbars Enables you to select functions by clicking icons. Select [View] -> [Toolbars], display
toolbars. Dragging toolbars enables you to change the display positions.
Section Enables you to divide a program into several blocks. Each can be created and
displayed separately.
Project Workspace Controls programs and data. Enables you to copy element data by executing Drag and
Project Tree Drop between different projects or from within a project.
Ladder Window A screen for creating and editing a ladder program.
Status Bar Shows information such as a PLC name, online/offline state, location of the active cell.
Offline Operation
Explanation
Explanation of
of Opening
Opening aa Import
Import Creating
Creating aa Program
Program Check
Check
target
target Program
Program new
new project
project FB
FB Library
Library program
program
4.
4. Import
Import the
the OMRON
OMRON FB
FB Part
Part file
file
Select Function Block definition icon from the project tree using the mouse cursor, right click.
Select Insert Function Block, then select a Library file using mouse to navigate.
Left Click
‘_CPU007_MakeClockPulse
_BCD.cxf’
Function
Function Block
Block Definition
Definition
Offline Operation
Explanation
Explanation of
of Opening
Opening aa Import
Import Creating
Creating aa Program
Program Check
Check
target
target Program
Program new
new project
project FB
FB Library
Library program
program
5. Program Creation
Confirm cursor position is at the upper left of Ladder Window to start programming.
C Press the [C] key on the keyboard to open the [New Contact] dialog. Use the
dropdownbox to select the “P_On” symbol.
P_On
ENT
Deleting instructions
• Move the cursor to the instruction and
then press the DEL key or
• Move the cursor to the right cell of
the instruction and press the BS key.
F Press the [F] key on the keyboard to open the [New Function Block Invocation] dialog.
Applies
Applies aa name
name forfor the
the specific
specific
process
process inin the
the diagram.
diagram.
[d100]
P Or ENT
#10
1.00
ENT
[Generated Pulse]
ENT
Offline Operation
Explanation
Explanation of
of Opening
Opening aa Import
Import Creating
Creating aa Program
Program Check
Check
target
target Program
Program new
new project
project FB
FB Library
Library program
program
Before program transfer, check for errors using the program compile.
Click
Errors
Errorsand
andaddresses
addressesare
are
displayed
displayedininthe
theOutput
OutputWindow.
Window.
Double-click
Double-clickon ondisplayed
displayederrors,
errors,
and theLadder
andthe LadderDiagram
Diagram cursor
cursor
will
willmove
moveto tothe
thecorresponding
corresponding
error
errorlocation,
location,displaying
displayingthe
theerror
error
rung
rungininred.
red.
7. Going Online
Normal
Normal online.
online. Enables
Enables you
you to
to go
go online
online with
with aa PLC
PLC of
of the
the device
device type
type and
and method
method specified
specified when
when opening
opening aa project.
project.
Auto
Auto online.
online. Automatically
Automaticallyrecognizes
recognizes the
the connected
connected PLC
PLC and
and enables
enables you
you to
to go
go online
online with
with aa PLC
PLC with
with one
one button.
button.
→
→Uploads
Uploads all
all data,
data, such
such as
as programs,
programs, from
from the
the PLC.
PLC.
Online
Online with
with Simulator.
Simulator. Enables
Enables you
you to
to go
go online
online with
with CX-Simulator
CX-Simulator with
with one
one button
button (CX-Simulator
(CX-Simulator must
must be
be installed.)
installed.)
Online/debug
Online/debug functions
functions when
when working
working online
online with
with CX-Simulator
CX-Simulator are
are
explained
explained in
in this
this guide
guide (Install
(Install CX-Simulator
CX-Simulatorseparately).
separately).
Click
Click [OK]
Program transfer starts.
Click [OK]
The
The background
background color
color of
of
The
The CX-Simulator
CX-Simulator the
the Ladder
LadderWindow
Window
Console
Console box
boxisis shown.
shown. changes
changes to
to gray.
gray.
The
The operating
operating mode
mode ofof
the
the active
active PLC
PLCisis shown.
shown.
Scan
Scan time
time isis displayed
displayed
(except
(except during
during Program
Program Mode).
Mode).
Online Operation
Online
Online Online
Online
Monitoring
Monitoring
to
to transfer
transfer Edit
Edit
8. Monitoring - 1
Change
Change the
the PLC
PLC (Simulator)
(Simulator)
to
to Monitor
Monitormode.
mode. The on/off status of contacts and coils can be monitored.
Click
The
The monitored
monitored area
area isis
displayed
displayed in
in aa specified
specified
color.
color.
The
The current
current values
values of
of
parameters
parameters are
are shown.
shown.
Online Operation
Online
Online Online
Online
Monitoring
Monitoring
to
to transfer
transfer Edit
Edit
Change the current value of contact/coils or word data in the Ladder Window.
Or
Click
Click [Set]
[Set]
Or
Shortcut: [Ctrl]+[E]
Double click
Edit the address to the required bit number (4.11 in the example)
Shortcut: [Ctrl]+{Shift]+[E]
End
Explanation
Explanation of
of Change
Change ofof
Copy
Copy of
of FB
FB part
part
target
target Program
Program FB
FB Definition
Definition
This chapter describes how to customize the OMRON FB Library using the OMRON FB Part file ‘Make ON
Time/OFF Time Clock Pulse in BCD’.
The OMRON FB Part file ‘Make ON Time/OFF Time Clock Pulse in BCD’ is designed to repeatedly turn off
the ENO for the specified OffTime (unit: 100 msec) and on for the specified OnTime (unit: 100 msec). In this
example, the OMRON FB Part file will be changed to output an invert signal by adding the output parameter
‘INV_ENO’.
EN ON
OFF
OnTime(*100ms)
ENO ON
OFF
OffTime(*100ms)
INV_ENO ON
OFF
To satisfy the requirement described above, the following changes must be made to OMRON FB Part file
‘Make ON Time/OFF Time Clock Pulse in BCD’
1. Add an output parameter ‘INV_ENO’.
2. Add ladder program to output the ENO for inverting the signal.
Caution
Caution
OMRON
OMRON cannot
cannot guarantee
guarantee the
the operation
operation of
of aa customized
customized OMRON
OMRON FB FB parts.
parts. Please
Please be
be sure
sure to
to check
check the
the process
process of
of
your
your FB
FB part
part sufficiently
sufficiently before
before customization
customization and
and confirm
confirm the
the operation
operation of
of each
each FB
FB parts
parts thoroughly
thoroughly after
after that.
that.
Explanation
Explanation of
of Change
Change ofof
Copy
Copy of
of FB
FB part
part
target
target Program
Program FB
FB Definition
Definition
Or
ALT + ENT
Tick
Tick the
the check
check box
box using
using the
the left
left mouse
mouse click.
click.
Explanation
Explanation of
of Change
Change ofof
Copy
Copy of
of FB
FB part
part
target
target Program
Program FB
FB Definition
Definition
Opens
Opens the
the Function
Function
Block
Block Ladder
Ladder Editor.
Editor.
The
The original
original OMRON
OMRON FB
FB Part
Part file
file is
is also
also able
able to
to display
display
its ladder program, but cannot be edited.
its ladder program, but cannot be edited.
Ladder
Ladder Editor
Editor
Variable table
Enter
Enter aa new
new variable
variable name.
name.
Select
Select BOOL
BOOL for
for bit
bit data.
data.
Add the required ladder diagram on Function Block Ladder edit field.
Move the cursor to the left column of the next rung.
ENO
ENT
INV_ENO
ENT
Explanation
Explanation of
of Change
Change ofof
Copy
Copy of
of FB
FB part
part
target
target Program
Program FB
FB Definition
Definition
As with main ladder program, you can use cross reference pop-up to check usage conditions of
variables.
Alt + 4
Move
Move the
the cursor.
cursor.
You can see that variable ENO is used in an output coil in the step No.20 as well.
The cursor in the FB Ladder Editor moves to the output coil in the step No.20.
Offline Operation
Explanation
Explanation of
of Create
Create new
new Entering
Entering Creating
Creating Creating
Creating Ladder
Ladder
target
target Program
Program FB
FB Definition
Definition Variables
Variables ST
ST Program
Program Program
Program and
and check
check
Reference: The IEC 61131 standard is an international standard for programming Programmable Logic
Controllers (PLC), defined by the International Electro-technical Commission (IEC).
The standard consists of 7 parts, with part 3 defining the programming of PLCs.
The
The data
data type
type should
should bebe set
set to
to REAL
REAL to to store
store the
the data.
data.
REAL
REAL type
type allows
allows values
values with
with 3232 bits
bits of
of length,
length, see
see range
range below:-
below:-
38 -38
-3.402823
-3.402823 xx 10
1038 ~~ -1.175494
-1.175494 xx 10 10-3 ,0,0,
-38 38
+1.175494
+1.175494 xx 10
10-38 ~~ +3.402823
+3.402823 xx 10 1038
FB
FB definition
definition name
name AverageCalc_3Value
AverageCalc_3Value
Input
Input symbols
symbols xx(REAL type), y
(REAL type), y(REAL type), z
(REAL type), z(REAL
(REAL type)
type)
Output
Output symbol
symbol score
score(REAL(REAL type)
type)
ST
ST Program
Program definition
definition score
score := := ((xx ++ yy ++ zz)) // 3.0;
3.0;
Substitute
Substitute aa value
value to
to aa symbol
symbol is
is expressed
expressed by
by ““ :=
:= ”.”. Enter
Enter““ ;; ””(semicolon)
(semicolon) to
to
complete
complete the the code.
code.
Offline Operation
Explanation
Explanation of
of Create
Create new
new Entering
Entering Creating
Creating Creating
Creating Ladder
Ladder
target
target Program
Program FB
FB Definition
Definition Variables
Variables ST
ST Program
Program Program
Program and
and check
check
Change
Change the
the Function
Function Block
Block definition
definition name
name
Note:
Note:
The
The user
user can’t
can’t create
create Function
Function Block
Block Definitions
Definitions
with
with names
names starting
starting ‘_’
‘_’ (underscore).
(underscore).
Select the Function Block Please
Please use
use names
names notnot starting
starting with
with ‘_’.
‘_’.
definition icon using
the mouse cursor and right
click the mouse button.
Select Paste. Variable
Variable Table
Table
→ Rename
Enter
[AverageCalc_3value]
Open
Open Function
Function Block
Block ST
ST Editor
Editor
Explanation
Explanation of
of Create
Create new
new Entering
Entering Creating
Creating Creating
Creating Ladder
Ladder
target
target Program
Program FB
FB Definition
Definition Variables
Variables ST
ST Program
Program Program
Program and
and check
check
Select
Select REAL
REAL
Enter data for the following.
Name
Data type
Comment
Enter
Enter and
and applicable
applicable
comment
comment
Enter
Enter input
input symbol
symbol x,
x, output
output symbols
symbols y,z
y,z by
by repeating
repeating the
the process
process above.
above.
Input
Input Variables
Variables
Output
Output Variables
Variables
Reference:
Reference: The
The copy
copy and
and paste
paste operation
operation is
is available
available in
in FB
FB Header.
Header.
Reference:
Reference: The
The order
order of
of the
the variables
variables in in the
the FB
FB table
table becomes
becomes thethe order
order of
of parameters
parameters on on FB
FB
instance
instance (invocation)
(invocation) inin the the normal
normal ladder
ladder view.
view.
To
To change
change the
the order,
order, itit is
is possible
possible toto drag
drag && drop
drop variables
variables within
within the
the table.
table.
Output Variables
Input Variables
FB instance (invocation)
Offline Operation
Explanation
Explanation of
of Create
Create new
new Entering
Entering Creating
Creating Creating
Creating Ladder
Ladder
target
target Program
Program FB
FB Definition
Definition Variables
Variables ST
ST Program
Program Program
Program and
and check
check
5. Entry of ST program
Select the ST Editor text field in the Function Block ST Editor window.
Enter
Enter text
text into
into the
the field:
field: “score
“score :=
:= (x
(x ++ yy ++ z)
z) // 3.0;”.
3.0;”.
Reference:
Reference: User
User may
may type
type Comments
Comments in in the
the ST
ST program.
program.
Enter
Enter ‘(*’
‘(*’ and
and ‘*)’
‘*)’ both
both ends
ends of
of comment
comment strings,
strings, see
see below.
below.
This
This is
is useful
useful for
for recording
recording change
change history,
history, process
process expressions,
expressions, etc.
etc.
Note:
Note: You
You can
can jump
jump to
to aa help
help topic
topic that
that shows
shows
ST
ST control syntax by selecting [ST
control syntax by selecting [ST Help]
Help]
from
from aa pop-up
pop-up menu
menu in in the
the ST
ST Editor.
Editor.
Offline Operation
Explanation
Explanation of
of Create
Create new
new Entering
Entering Creating
Creating Creating
Creating Ladder
Ladder
target
target Program
Program FB
FB Definition
Definition Variables
Variables ST
ST Program
Program Program
Program and
and check
check
Refer
Refer page
page 2-7
2-7 for
for entering
entering FB
FB instances.
instances.
Entering
Entering ST
ST FB
FB instances
instances is
is the
the same
same
as
as entering
entering FB
FB Ladder
Ladder instances.
instances.
Refer
Refer page
page 2-9
2-9 for
for program
program checking.
checking.
The
The functionality
functionality is
is the
the same
same as
as for
for Function
Function Block
Block Ladder
Ladder instances.
instances.
It is possible to change or add variables in the Function Block after inputting FB instance
into the ladder editor. If modified, the Ladder editor changes the color of the left bus-bar
of the rung containing the changed Function Block.
When this occurs, please select the instance in the Ladder Editor using the mouse
cursor, and select Update Function Block Instance (U) from the pop-up menu.
Online Operation
Transfer
Transfer Program
Program Monitoring
Monitoring
7. Program Transfer
Refer
Refer to
to page
page 2-10
2-10 for
for steps
steps to
to go
go online
online and
and
transfer
transfer the
the program.
program.
Change
Change the
the PLC
PLC
(Simulator)
(Simulator) to
to Monitor
Monitor
mode. The on/off status of contacts and coils can be monitored.
mode.
Click
Click [Yes]
Transfer
Transfer Program
Program Monitoring
Monitoring
Alt + 3
ENT
Select
Select ThicknessAvarage.x
ThicknessAvarage.x
The following ST program checks the average value calculated by the example of page 4-7 against a range (upper
limit or lower limit).
FB Definition: OutputOfDecisionResult
Input symbols: score(REAL type), setover(REAL type), setunder(REAL type)
Output symbols: OK(BOOL type), overNG(BOOL type), underNG(BOOL type)
ST program:
ELSIF score < setunder THEN (* if score =< setover and score < setunder then *)
overNG := FALSE; (* Turn on overNG *)
OK := FALSE; (* Turn off OK *)
underNG := TRUE; (* Turn on underNG *)
1. Overview
This chapter describes how to componentize a user program with an example using function blocks.
Generally shown below is a workflow to create a user program with componentization in the case of
the application example below. Deliberate consideration is required especially in program design
process.
3. Application Example
Inspection Packing
OK
Measuring NG
DVD thickness
Assortment
Advanced
Entering/Deb
Entering/Deb Creating
Creating FB
FB
Program
Program Entering
Entering Main
Main Debugging
Debugging
ugging
ugging FBFB Definition
Definition
Design
Design Definition Library Program
Program Main
Main Program
Program
Definition Library
Application can be materialized by using hardware and software (program) through combination
of requirements.
Following sections describe how to proceed program design using an application example
described before.
Detailed
General
Specifications
Specifications
Detailed
Specifications
Detailing
Integrating
Shown below are the extracted requirement specifications for this application.
By detailing the specifications, there you will find similar processes or ones that can be used universally.
• The process has 2 actuators for bilateral movement which operate under input condition for
each.
• Operation of each direction must be interlocked.
• The process has an input signal to reset its operation.
These requirements are used as the base for components. Names of components are defined as
“ActuatorContro” FB and “AvgValue_ThresholdCheck” FB.
Reuse of components can improve productivity of program development. To make reuse easily available,
it is important to create specifications and insert comments for easier understanding specifications of
input/output or operation without looking into the component.
It is advisable to describe library reference for OMRON FB Library.
Advanced
Entering/Deb
Entering/Deb Creating
Creating FB
FB
Program
Program Entering
Entering Main
Main Debugging
Debugging
ugging
ugging FBFB Definition
Definition
Design
Design Definition Library Program
Program Main
Main Program
Program
Definition Library
[Output Variables]
“AvgValue_ThresholdCheck” FB
It should be described in ST because it is a process for numeric calculation and comparison.
[Input Variables]
[Output Variables]
[Internal Variables]
Note:
Note: Use
Use general
general names
names as
as long
long as
as possible
possible for
for names
names of
of FB
FB and
and variables
variables in
in ladder
ladder diagram
diagram and
and ST,
ST,
instead
instead of
of specific
specific names
names for
for the
the function
function at
at creation.
creation.
Advanced
Entering/Deb
Entering/Deb Creating
Creating FB
FB
Program
Program Entering
Entering Main
Main Debugging
Debugging
ugging
ugging FBFB Definition
Definition
Design
Design Definition Library Program
Program Main
Main Program
Program
Definition Library
[Output Variables]
[Internal Variables]
This
This FB
FB has
has itsits specific
specific name
name andand variable
variable
names
names that
that include
include “DVD”
“DVD” oror “Cylinder”
“Cylinder”
because
because itit is
is specifically
specifically created
created for
for
application.
application.
Input
Input
Variables
Variables
Internal
Internal
Variables
Variables
Output
Output
Variables
Variables
A
A function
function block
block can
can be
be called
called from
from within
within another
another function
function block.
block. This
This is
is called
called “nesting”.
“nesting”.
To
To nest, declare a variable of FUNCTION BLOCK(FB) type as its internal variable to
nest, declare a variable of FUNCTION BLOCK(FB) type as its internal variable to use
use the
the
variable
variable name
name as
as an
an instance.
instance.
Advanced
Entering/Deb
Entering/Deb Creating
Creating FB
FB
Program
Program Entering
Entering Main
Main Debugging
Debugging
ugging
ugging FBFB Definition
Definition
Design
Design Definition Library Program
Program Main
Main Program
Program
Definition Library
Req. 5. “Paper boxes should be classified into 2 types. Switching frequency should be counted to
evaluate a life of limit switch adjacent to actuator of selection part.” can be materialized by counting
OFF → ON switching of a limit switch as an input for “ActuatorControl”. This component is called
“WorkMoveControl_LSONcount” FB. Shown below is an example of an FB to be created.
[Input Variables]
[Output Variables]
[Internal Variables]
Ladder
Ladder FB
FB is
is called
called from
from ST.
ST.
How
How toto call
call FB
FB (function
(function block)
block) from
from ST
ST
FB
FB to
to be
be called:
called: MyFB
MyFB Instance
Instance of
of MyFB
MyFB declared
declared in
in ST:
ST: MyInstance
MyInstance
I/O
I/O variable
variable ofof FB
FB to
to be
be called:
called: I/O
I/O variable
variable to
to be
be passed
passed to
to FB
FB in
in ST:
ST:
Input: Input1, Input2
Input: Input1, Input2 Input:
Input: STInput1,
STInput1, STInput2
STInput2
Output:
Output: Output1,
Output1, Output2
Output2 Output:
Output: STOutput1,
STOutput1, STOutput2
STOutput2
In
In this
this example,
example, calling
calling of
of FB
FB instance
instance from
from ST
ST must
must be
be described
described as
as
MyInstance(Input1
MyInstance(Input1 := := STInput1,
STInput1, Input2
Input2 :=
:= STInput2,
STInput2, Output1
Output1 =>
=> STOutput1,
STOutput1, Output2
Output2 =>
=> STOutput2);
STOutput2);
When
When all
all input/output
input/output variables
variables are
are described,
described, description
description of
of variables
variables and
and assignment
assignment operators
operators in
in one
one to
to be
be
called
called can
can be be omitted.
omitted.
MyInstance(STInput1,
MyInstance(STInput1, STInput2,
STInput2, STOutput1,
STOutput1, STOutput2);
STOutput2);
By
By describing
describing variables
variables and
and assignment
assignment operators
operators in
in one
one to
to be
be called,
called, you
you can
can describe
describe only
only aa part
part of
of
input/output
input/output variables.
variables.
MyInstance(Input1
MyInstance(Input1 :=:= STInput1,
STInput1, Output2
Output2 =>
=> STOutput2);
STOutput2);
Advanced
Entering/Deb
Entering/Deb Creating
Creating FB
FB
Program
Program Entering
Entering Main
Main Debugging
Debugging
ugging
ugging FBFB Definition
Definition
Design
Design Definition Library Program
Program Main
Main Program
Program
Definition Library
For components (FB) investigated here to work as a program, a circuit must be created that calls a
component integrated from main ladder program.
* Example here limits to Req.2 and 5.
[Global Variables]
Either
Either right
right cylinder
cylinder ONON (2.00)
(2.00) oror
left
left cylinder ON (2.01) as an
cylinder ON (2.01) as an
output
output operates
operates byby using
using aa limit
limit
switch
switch (1.00,
(1.00, 1.01)
1.01) at
at cylinder
cylinder
drive
drive to
to assort
assort DVD
DVD andand 33
measurements
measurements (D0-D5)
(D0-D5) of of DVD
DVD
thickness
thickness asas inputs
inputs and
and by
by turning
turning
contact
contact 0.00
0.00 ON.
ON.
Either
Either right
right actuator
actuator ON ON (4.00)
(4.00) oror
left
left actuator
actuator ONON (4.01)
(4.01) turns
turns ONON
based
based on on condition
condition of of aa limit
limit switch
switch
(3.00,
(3.00, 3.01)
3.01) at
at actuator
actuator end end when
when
operation
operation input
input (W0.00)
(W0.00) and and left
left
move
move input
input (W0.01)
(W0.01) to to move
move aa box box
containing
containing DVDDVD to to the
the right
right oror left.
left.
Also,
Also, switching
switching count
count of of the
the limit
limit
switch
switch isis provided
provided to to D10-13.
D10-13.
Why
Why thethe instance
instance name
name is is “StageA***”?
“StageA***”?
Although
Although itit is
is not
not explicitly
explicitly described
described in
in the
the application
application example,
example, aa program
program for
for newly
newly added
added stage
stage BB
can
can bebe created
created only
only by
by describing
describing an
an instance
instance “StageB***”
“StageB***” inin the
the program
program andand setting
setting necessary
necessary
parameters,
parameters, without
without registering
registering aa new
new function
function block.
block.
As
As aa feature
feature ofof Omron’s
Omron’s function
function block,
block, one
one FB
FB can
can have
have more
more than
than one
one instance.
instance. ByBy using
using operation-
operation-
verified
verified FB
FB definition
definition (algorithm),
(algorithm), aa program
program cancan be
be created
created only
only byby assigning
assigning its
its address.
address.
Advanced
Entering/Deb
Entering/Deb Creating
Creating FB
FB
Program
Program Entering
Entering Main
Main Debugging
Debugging
ugging
ugging FBFB Definition
Definition
Design
Design Definition Library Program
Program Main
Main Program
Program
Definition Library
[Main Program]
Instance names and FB names can be illustrated as follows: (FB name is described in [ ])
StageA_DVDThickSelect DVD ThickJudge
Main program
[DVD_ThickSelectControl] [AvgValue_ThresholdCheck]
WorkMove [ActuatorControl]
StageA_BoxSelect
WorkMove [ActuatorControl]
[WorkMoveControl_LSONcount]
In
In aa structured
structured program,
program, especially
especially to
to change
change aa lower
lower level
level component
component (FB),
(FB), itit is
is important
important to
to understand
understand
parent/children
parent/children relationship
relationship and
and components’
components’ sharing
sharing when
when process
process flow
flow must
must be be cleared
cleared in
in case
case of
of debugging,
debugging, etc.
etc.
ItIt is
is advisable
advisable to
to create
create an
an understandable
understandable diagram
diagram ofof total
total program
program structure
structure as as design
design documentation.
documentation.
CX-Programmer
CX-Programmer Ver.6.0
Ver.6.0 provides
provides “FB
“FB instance
instance viewer”
viewer” when
when [Alt]+[5]
[Alt]+[5] key
key isis pressed
pressed for
for easier
easier understanding
understanding of
of
software
software structure
structure constructed
constructed by
by FBs.
FBs. Also,
Also, address
address can
can be
be checked
checked thatthat is
is assigned
assigned toto FB
FB instance.
instance.
Advanced
Entering/Deb
Entering/Deb Creating
Creating FB
FB
Program
Program Entering
Entering Main
Main Debugging
Debugging
ugging
ugging FBFB Definition
Definition
Design
Design Definition Library Program
Program Main
Main Program
Program
Definition Library
5. Entering FB Definition
This section describes how to enter an actually-designed program and debug it.
New project must be created and “ActuatorControl” FB of Page 5-4 must be entered.
Caution:
Caution:
AA user
user cannot
cannot create
create function
function block
block definition
definition name
name
starting
starting from
from "_".
"_".
Move the mouse cursor to a The
The name
name must
must start
start from
from aa character
character other
other than
than "_".
"_".
copied function block icon ,
then right-click. Select
→ Rename
Enter [ActuatorControl].
Variables
Variables Table
Table
Open
Open FB
FB ladder
ladder editor.
editor.
Ladder
Ladder Input
Input Screen
Screen
Move the mouse cursor to a
function block icon , then
double-click to open the
function block ST editor.
Select the variables table and register variables in the function block.
All variables of “ActuatorControl” FB of page 5-4 must be registered.
Note:
Note: Order
Order of
of variables
variables must
must be
be the
the same
same as as FB
FB instance
instance order.
order.
To
To change
change order
order of
of variables,
variables, select
select aa variable
variable name
name then
then drag
drag and
and drop
drop it.
it.
Note:
Note: Although
Although you
you can
can enter
enter aa circuit
circuit in
in the
the FB
FB ladder
ladder editor
editor similar
similar to
to the
the main
main
ladder
ladder editor,
editor, entering
entering of
of address
address in in the
the FB
FB is
is invalid.
invalid.
Note:
Note: To
To enter
enter variable
variable list
list in
in aa line
line comment,
comment, you
you can can select
select aa variable
variable from
from
variables
variables table
table then
then copy
copy it. it. You
You can
can use
use itit for
for more
more efficient
efficient input.
input.
Advanced
Entering/Deb
Entering/Deb Creating
Creating FB
FB
Program
Program Entering
Entering Main
Main Debugging
Debugging
ugging
ugging FBFB Definition
Definition
Design
Design Definition Library Program
Program Main
Main Program
Program
Definition Library
For
For how
how to
to connect
connect online
online and
and transfer
transfer aa
program,
program, see
see page
page 2-10.
2-10.
Display the main ladder and FB instance (FB ladder invoked by the main ladder) at the same
time, then check the operation while changing current parameter value of FB invocation in the
main ladder.
(1) Initial State: Turn 0.03 ON. => 0.04 and 0.05 must be OFF. FB instance ladder monitor screen
must be under state that corresponds to the value.
(2) Actuator forward direction operation-1: Turn 0.00 ON => 0.04 must be turned ON. FB instance
ladder monitor screen must be under state that corresponds to the value.
(3) Actuator forward direction operation-2: Turn 0.03 OFF => 0.04 must be ON and 0.05 must be
OFF. FB instance ladder monitor screen must be under state that corresponds to the value.
(4) Actuator forward direction operation-3: Turn 0.02 ON => 0.04 must be OFF and 0.05 must be
OFF. FB instance ladder monitor screen must be under state that corresponds to the value.
Enter
Enter 11 and
and press
press [Set]
[Set] button.
button.
Advanced
Entering/Deb
Entering/Deb Creating
Creating FB
FB
Program
Program Entering
Entering Main
Main Debugging
Debugging
ugging
ugging FBFB Definition
Definition
Design
Design Definition Library Program
Program Main
Main Program
Program
Definition Library
Thus far, entering and debugging for “ActuatorControl” FB are described. Other FB definition
must be entered and debugged as well.
For debugging, you can use batch registration of FB instance address to Watch Window instead
of FB ladder monitor.
Select
Select aa name
name to
to register,
register,
then
then press [OK] button.
press [OK] button.
Advanced
Entering/Deb
Entering/Deb Creating
Creating FB
FB
Program
Program Entering
Entering Main
Main Debugging
Debugging
ugging
ugging FBFB Definition
Definition
Design
Design Definition Library Program
Program Main
Main Program
Program
Definition Library
Select
“DVD_ThickSelectControl” FB,
right-click and select [Save
Function Block to File] from
the context menu.
Select [Save].
/ / / /
Default
Default folder
folder for
for saving
saving isis C:
C: Program
Program Files
Files Omron
Omron CX-One
CX-One FBL. FBL.
ItIt can
can be changed by CX-Programmer option setting “FB library
be changed by CX-Programmer option setting “FB library storage
storage folder”
folder” ..
OMRON
OMRON FB FB Library
Library isis under
under omronlib
omronlib folder.
folder. /
Create
Create aa folder
folder so
so that
that you
you should
should be
be able
able to to classify
classify itit easily,
easily, such
such as
as Userlib
Userlib DVD.
DVD.
When
When savingsaving FB
FB definition
definition that
that calls
calls another
another FB,
FB, both
both FB
FB definition
definition are are saved.
saved.
When retrieving a project, calling relationship is maintained as
When retrieving a project, calling relationship is maintained as saved. saved.
ItIt is
is easier
easier to
to manage
manage FBFB definition
definition because
because saved
saved FB
FB definition
definition isis integrated.
integrated.
Advanced
Entering/Deb
Entering/Deb Creating
Creating FB
FB
Program
Program Entering
Entering Main
Main Debugging
Debugging
ugging
ugging FBFB Definition
Definition
Design
Design Definition Library Program
Program Main
Main Program
Program
Definition Library
Add the main program to a project file that contains debugged FB definition. Program to be
entered is one that is described in 4-5. Total Program Description in page 5-7.
[Global Variables]
Result of Compilation
Del key
Double
Double click
click mouse
mouse left
left button
button
Click mouse left button
Function
Function Block
Block definition
definition will
will be
be deleted.
deleted.
It is necessary to allocate required memory for each function block instances to execute Function Blocks.
CX-Programmer allocates the memory automatically based on the following setting dialog information.
( PLC menu → Function Block Memory → Function Block Memory Allocation)
There are 4 types of areas, ‘Not retain’, ‘Retain’, ‘Timers’, and ‘Counters’. Please change the settings if requires.
It is possible to automatically display a list of symbol names or IO comments when entering the operands of
instructions.
When entering the operand for contact or output (or special instructions), enter a string, and the dropdown list is
automatically updated to display in symbol names or IO Comments using the defined string. Selecting the item
from the list defines the operand information.
This is an efficient way of entering registered symbol information into the ladder.
Example: Enter text “Temperature” to the edit field in the operand dialog.
Click or push [F4] key; all symbols / address having IO comment containing the text
‘temperature are listed. See below:-
For instance, select ‘temp_alarm01, W1.00, Temperature error of upper case of MachineA’, from
the list. The operand is set to be using symbol ‘alarm01’.
Appendix. Examples of ST (Structured Text)
IF Statement Examples
The expression1 and expression2 expressions must each evaluate to a boolean value. The statement-list is a list of
several simple statements e.g. a:=a+1; b:=3+c; etc.
The IF keyword executes statement-list1 if expression1 is true; if ELSIF is present and expression1 is false and
expression2 is true, it executes statement-list2; if ELSE is present and expression1 or expression2 is false, it
executes statement-list3. After executing statement-list1, statement-list2 or statement-list3, control passes to the
next statement after the END_IF.
There can be several ELSIF statements within an IF Statement, but only one ELSE statement.
IF statements can be nested within other IF statements (Refer to example 5).
Example 1
IF a > 0 THEN In this example, if the variable "a" is greater than zero, then the
b := 0; variable "b" will be assigned the value of zero.
END_IF; If "a" is not greater than zero, then no action will be performed
upon the variable "b", and control will pass to the program steps
following the END_IF clause.
Example 2 In this example, if the variable "a" is true, then the variable "b" will
IF a THEN be assigned the value of zero.
b := 0; If "a" is false, then no action will be performed upon the variable
"b", and control will pass to the program steps following the
END_IF; END_IF clause.
Example 3 In this example, if the variable "a" is greater than zero, then the
variable "b" will be assigned the value of true (1), and control will
IF a > 0 THEN be passed to the program steps following the END_IF clause.
b := TRUE;
If "a" is not greater than zero, then no action is performed upon
ELSE the variable "b" and control is passed to the statement following
b := FALSE; the ELSE clause, and "b" will be assigned the value of false (0).
END_IF; Control is then passed to the program steps following the END_IF
clause.
Example 4 In this example, if the variable "a" is less than 10, then the
IF a < 10 THEN variable "b" will be assigned the value of true (1), and the variable
"c" will be assigned the value of 100. Control is then passed to the
b := TRUE; program steps following the END_IF clause.
c := 100;
If the variable "a" is equal to or greater than 10 then control is
ELSIF a > 20 THEN passed to the ELSE_IF clause, and if the variable "a" is greater
b := TRUE; than 20, variable "b" will be assigned the value of true (1), and the
c := 200; variable "c" will be assigned the value of 200. Control is then
passed to the program steps following the END_IF clause.
ELSE
If the variable "a" is between the values of 10 and 20 (i.e. both of
b := FALSE;
the previous conditions IF and ELSE_IF were false) then control is
c := 300; passed to the ELSE clause, and the variable "b" will be assigned
END_IF; the value of false (0), and the variable "c" will be assigned the
value of 300. Control is then passed to the program steps
following the END_IF clause.
IF Statement Examples
WHILE expression DO
statement-list;
END_WHILE;
The WHILE expression must evaluate to a boolean value. The statement-list is a list of several simple statements.
The WHILE keyword repeatedly executes the statement-list while the expression is true. When the expression
becomes false, control passes to the next statement after the END_WHILE.
Example 3
WHILE (a + 1) >= (b * 2) DO In this example, the WHILE expression will be evaluated and
if true (i.e. variable "a" plus 1 is greater than or equal to
a := a + 1; variable "b" multiplied by 2) then the statement-list (a:=a+1;
b := b / c; and b:=b/c;) will be executed. After execution of the
END_WHILE; statement-list, control will pass back to the start of the WHILE
expression. This process is repeated while the WHILE
expression equates to true. When the WHILE expression is
false, then the statement-list will not be executed and control
will pass to the program steps following the END_WHILE
clause.
WHILE Statement Examples
Example 4
WHILE (a - b) <= (b + c) DO In this example, the WHILE expression will be evaluated and if
true (i.e. variable "a" minus variable "b" is less than or equal to
a := a + 1;
variable "b" plus variable "c") then the statement-list (a:=a+1; and
b := b * a; b:=b*a;) will be executed. After execution of the statement-list,
END_WHILE; control will pass back to the start of the WHILE expression. This
process is repeated while the WHILE expression is true. When
the WHILE expression is false, then the statement-list will not be
executed and control will pass to the program steps following the
END_WHILE clause.
REPEAT Statement Examples
REPEAT
statement-list;
UNTIL expression
END_REPEAT;
The REPEAT expression must evaluate to a boolean value. The statement-list is a list of several simple statements.
The REPEAT keyword repeatedly executes the statement-list while the expression is false. When the expression
becomes true, control passes to the next statement after END_REPEAT.
The FOR control variable must be of an integer variable type. The FOR integer expressions must evaluate to the
same integer variable type as the control variable. The statement-list is a list of several simple statements.
The FOR keyword repeatedly executes the statement-list while the control variable is within the range of integer
expression1 to integer expression2. If the BY is present then the control variable will be incremented by integer
expression3 otherwise by default it is incremented by one. The control variable is incremented after every executed
call of the statement-list. When the control variable is no longer in the range integer expression1 to integer
expression2, control passes to the next statement after the END_FOR.
FOR statements can be nested within other FOR statements.
Example 1 In this example, the FOR expression will initially be evaluated and
FOR a := 1 TO 10 DO variable "a" will be initialized with the value 1. The value of
variable "a" will then be compared with the 'TO' value of the FOR
b := b + a; statement and if it is less than or equal to 10 then the statement-
END_FOR; list (i.e. b:=b+a;) will be executed. Variable "a" will then be
incremented by 1 and control will pass back to the start of the
FOR statement. Variable "a" will again be compared with the 'TO'
value and if it is less than or equal to 10 then the statement-list
will be executed again. This process is repeated until the value of
variable "a" is greater than 10, and then control will pass to the
program steps following the END_FOR clause.
Example 2 In this example, the FOR expression will initially be evaluated and
variable "a" will be initialized with the value 1. The value of
FOR a := 1 TO 10 BY 2 DO variable "a" will then be compared with the 'TO' value of the FOR
b := b + a; statement and if it is less than or equal to 10 then the statement-
list (i.e. b:=b+a; and c:=c+1.0;) will be executed. Variable "a" will
c := c + 1.0; then be incremented by 2 and control will pass back to the start of
END_FOR; the FOR statement. Variable "a" will again be compared with the
'TO' value and if it is less than or equal to 10 then the statement-
list will be executed again. This process is repeated until the value
of variable "a" is greater than 10, and then control will pass to the
program steps following the END_FOR clause.
Example 3
In this example, the FOR expression will initially be evaluated and
FOR a := 10 TO 1 BY -1 DO variable "a" will be initialized with the value 10. The value of
b := b + a; variable "a" will then be compared with the 'TO' value of the FOR
c := c + 1.0; statement and if it is greater than or equal to 1 then the statement-
list (i.e. b:=b+a; and c:=c+1.0;) will be executed. Variable "a" will
END_FOR; then be decremented by 1 and control will pass back to the start
of the FOR statement. Variable "a" will again be compared with
the 'TO' value and if it is greater than or equal to 1 then the
statement-list will be executed again. This process is repeated
until the value of variable "a" is less than 1, and then control will
pass to the program steps following the END_FOR clause.
Example 4
FOR a := b + 1 TO c + 2 DO In this example, the FOR expression will initially be evaluated and
variable "a" will be initialized with the value of variable "b" plus 1.
d := d + a;
The 'TO' value of the FOR statement will be evaluated to the
e := e + 1; value of variable "c" plus 2. The value of variable "a" will then be
END_FOR; compared with the 'TO' value and if it is less than or equal to it
then the statement-list (i.e. d:=d+a; and e:=e+1;) will be executed.
Variable "a" will then be incremented by 1 and control will pass
back to the start of the FOR statement. Variable "a" will again be
compared with the 'TO' value and if it is less than or equal to it
then the statement-list will be executed again. This process is
repeated until the value of variable "a" is greater than the 'TO'
value, and then control will pass to the program steps following
the END_FOR clause.
FOR Statement Examples
Example 5 In this example, the FOR expression will initially be evaluated and variable "a"
FOR a := b + c TO d - e BY f DO will be initialized with the value of variable "b" plus variable "c". The 'TO' value
of the FOR statement will be evaluated to the value of variable "d" minus
g := g + a; variable "e". The value of variable "a" will then be compared with the 'TO' value.
h := h + 1.0; If the value of variable "f" is positive and the value of variable "a" is less than or
END_FOR; equal to the 'TO' value then the statement-list (i.e. g:=g+a; and h:=h+1.0;) will
be executed. If the value variable "f" is negative and the value of variable "a" is
greater than or equal to the 'TO' value then the statement-list (i.e. g:=g+a; and
h:=h+1.0;) will also be executed. Variable "a" will then be incremented or
decremented by the value of variable "f" and control will pass back to the start
of the FOR statement. Variable "a" will again be compared with the 'TO' value
and the statement-list executed if appropriate (as described above).
This process is repeated until the value of variable "a" is greater than the 'TO'
value (if the value of variable "f" is positive) or until the value of variable "a" is
less than the 'TO' value (if the value of variable "f" is negative), and then
control will pass to the program steps following the END_FOR clause.
CASE expression OF
case label1 [ , case label2 ] [ .. case label3 ] : statement-list1;
[ ELSE
statement-list2 ]
END_CASE;
The CASE expression must evaluate to an integer value. The statement-list is a list of several simple statements.
The case labels must be valid literal integer values e.g. 0, 1, +100, -2 etc..
The CASE keyword evaluates the expression and executes the relevant statement-list associated with a case label
whose value matches the initial expression. Control then passes to the next statement after the END_CASE. If no
match occurs within the previous case labels and an ELSE command is present the statement-list associated with
the ELSE keyword is executed. If the ELSE keyword is not present, control passes to the next statement after the
END_CASE.
There can be several different case labels statements (and associated statement-list) within a CASE statement but
only one ELSE statement.
The “,” operator is used to list multiple case labels associated with the same statement-list.
The “..” operator denotes a range case label. If the CASE expression is within that range then the associated
statement-list is executed, e.g. case label of 1..10 : a:=a+1; would execute the a:=a+1 if the CASE expression is
greater or equal to 1 and less than 10.
Example 1 In this example, the CASE statement will be evaluated and then compared with
CASE a OF each of the CASE statement comparison values (i.e. 2 and 5 in this example).
2 : b := 1; If the value of variable "a" is 2 then that statement-list will be executed (i.e. b:=1;).
Control will then pass to the program steps following the END_CASE clause.
5 : c := 1.0;
END_CASE; If the value of variable "a" is 5 then that statement-list will be executed (i.e. c:=1.0;).
Control will then pass to the program steps following the END_CASE clause.
If the value of variable "a" does not match any of the CASE statement comparison
values then control will pass to the program steps following the END_CASE clause.
Example 2 In this example, the CASE statement will be evaluated and then compared with
each of the CASE statement comparison values (i.e. -2 and 5 in this example).
CASE a + 2 OF
If the value of variable "a" plus 2 is -2 then that statement-list will be executed (i.e.
-2 : b := 1; b:=1;). Control will then pass to the program steps following the END_CASE clause.
5 : c := 1.0; If the value of variable "a" plus 2 is 5 then that statement-list will be executed (i.e.
ELSE c:=1.0;). Control will then pass to the program steps following the END_CASE
clause. If the value of variable "a" plus 2 is not -2 or 5, then the statement-list in the
d := 1.0; ELSE condition (i.e. d:=1.0;) will be executed. Control will then pass to the program
END_CASE; steps following the END_CASE clause.
CASE Statement Examples
Example 3 In this example, the CASE statement will be evaluated and then
CASE a + 3 * b OF compared with each of the CASE statement comparison values (i.e. 1
1, 3 : b := 2; or 3 and 7 or 11 in this example).
7, 11 : c := 3.0; If the value of variable "a" plus 3 multiplied by variable "b" is 1 or 3,
ELSE then that statement-list will be executed (i.e. b:=2;). Control will then
d := 4.0; pass to the program steps following the END_CASE clause.
END_CASE;
If the value of variable "a" plus 3 multiplied by variable "b" is 7 or 11,
then that statement-list will be executed (i.e. c:=3.0;). Control will then
pass to the program steps following the END_CASE clause.
If the value of variable "a" plus 3 multiplied by variable "b" is not 1, 3,
7 or 11, then the statement-list in the ELSE condition (i.e. d:=4.0;) will
be executed. Control will then pass to the program steps following the
END_CASE clause.
Example 4
CASE a OF In this example, the CASE statement will be evaluated and then
compared with each of the CASE statement comparison values, i.e. (-
-2, 2, 4 : b := 2; 2, 2 or 4) and (6 to 11 or 13) and (1, 3 or 5) in this example.
c := 1.0;
If the value of variable "a" equals -2, 2 or 4, then that statement-list
6..11, 13 : c := 2.0; will be executed (i.e. b:=2; and c:=1.0;). Control will then pass to the
1, 3, 5 : c := 3.0; program steps following the END_CASE clause.
ELSE
If the value of variable "a" equals 6, 7, 8, 9, 10, 11 or 13 then, that
b := 1; statement-list will be executed (i.e. c:=2.0;). Control will then pass to
c := 4.0; the program steps following the END_CASE clause.
END_CASE; If the value of variable "a" is 1, 3 or 5, then that statement-list will be
executed (i.e. c:=3.0;). Control will then pass to the program steps
following the END_CASE clause.
If the value of variable "a" is none of those above, then the statement-
list in the ELSE condition (i.e. b:=1; and c:=4.0;) will be executed.
Control will then pass to the program steps following the END_CASE
clause.
EXIT Statement Examples
WHILE expression DO
statement-list1;
EXIT;
END_WHILE;
statement-list2;
REPEAT
statement-list1;
EXIT;
UNTIL expression
END_REPEAT;
statement-list2;
Example 1
WHILE a DO If the first IF expression is true (i.e. variable "c" is true), the
IF c = TRUE THEN statement-list (b:=0; and EXIT;) is executed during the
b:=0;EXIT; execution of the WHILE loop. After the execution of the EXIT
keyword, the WHILE loop is discontinued and the control
END_IF; passes to the next statement (d:=1;) after the END_WHILE
IF b > 10 THEN clause.
a:= FALSE;
END_IF;
END_WHILE;
d:=1;
Example 2
a:=FALSE; If the first IF expression is true (i.e. i>=10 is true) in the inside
FOR i:=1 TO 20 DO FOR loop, the statement-list (n:=i*10+j; and a:=TRUE; and
EXIT;) is executed during the execution of the FOR loop.
FOR j:=0 TO 9 DO After the execution of the EXIT keyword, the inside FOR loop
IF i>=10 THEN is discontinued and the control passes to the next IF
n:=i*10+j; statement after the END_FOR clause. If this IF expression is
true (i.e. the variable "a" is true), EXIT keyword is executed ,
a:=TRUE;EXIT; the outside FOR loop is discontinued after END_FOR clause,
END_IF; and the control passes to the next statement (d:=1;).
END_FOR;
IF a THEN EXIT; END_IF;
END_FOR;
d:=1;
RETURN Statement Examples
statement-list1;
RETURN;
statement-list2;
Example 1
IF a_1*b>100 THEN If the first or second IF statement is true (i.e. "a_1*b" is larger
c:=TRUE;RETURN; than 100, or "a_2*(b+10)" is larger than 100), the statement
END_IF; (c:=TRUE; and RETURN;) is executed. The execution of the
RETURN keyword breaks off the execution of the inside of
IF a_2*(b+10)>100 THEN the Function Block and the control returns to the program
c:=TRUE;RETURN; which calls the Function Block.
END_IF;
IF a_3*(b+20)>100 THEN
c:=TRUE;
END_IF;
Array Examples
An array is a collection of like variables. The size of an array can be defined in the Function Block variable table.
An individual variable can be accessed using the array subscript operator [ ].
The subscript index allows a specific variable within an array to be accessed. The subscript index must be either a
positive literal value, an integer expression or an integer variable. The subscript index is zero based. A subscript
index value of zero would access the first variable, a subscript index value of one would access the second variable
and so on.
Warning
If the subscript index is either an integer expression or integer variable, you must ensure that the resulting
subscript index value is within the valid index range of the array. Accessing an array with an invalid index
must be avoided. Refer to Example 5 for details of how to write safer code when using variable array
offsets.
Example 3
d[9]:= 2.0; In this example, variable "d" is an array of 10 elements and
has a REAL data type. When executed, the last element in
the array (the 10th element) will be set to 2.0.
Example 4
a[1] := b[2]; In this example, variable "a" and variable "b" are arrays of the
same data type. When executed, the value of the second
element in variable "a" will be set to the value of the third
element in variable "b".
Example 5
a[b] := 1;
a[b+1] := 1;
a[(b+c) *( d-e)] := 1;
Note: As the integer variables and expressions are being used to access the array, the actual index value
will not be known until run time, so the user must ensure that the index is within the valid range of the
array a. For example, a safer way would be to check the array index is valid:
f := (b+c) *( d-e);
IF (f >0) AND (f<5) THEN
a[f] := 1;
END_IF;
Where variable "f" has an INT data type.
Example 6
a[b[1]]:= c; This example shows how an array element expression can be
a[b[2] + 3]:= c; used within another array element expression.
Numerical Functions and Arithmetic Functions
Exponent:
INT, DINT,
LINT, UINT,
UDINT, ULINT