Professional Documents
Culture Documents
Q L F StructuredProgrammingManual Fundamentals SH 080782 J
Q L F StructuredProgrammingManual Fundamentals SH 080782 J
Before using the MELSEC-Q series, MELSEC-L series, and MELSEC-F series programmable controllers,
thoroughly read the manuals attached to the products and the relevant manuals introduced in the attached
manuals. Also pay careful attention to safety and handle the products properly.
Please keep this manual in a place where it is accessible when required and always forward it to the end user.
A-1
CONDITIONS OF USE FOR THE PRODUCT
(1) Mitsubishi programmable controller ("the PRODUCT") shall be used in conditions;
i) where any problem, fault or failure occurring in the PRODUCT, if any, shall not lead to any major
or serious accident; and
ii) where the backup and fail-safe function are systematically or automatically provided outside of
the PRODUCT for the case of any problem, fault or failure occurring in the PRODUCT.
(2) The PRODUCT has been designed and manufactured for the purpose of being used in general
industries.
MITSUBISHI SHALL HAVE NO RESPONSIBILITY OR LIABILITY (INCLUDING, BUT NOT
LIMITED TO ANY AND ALL RESPONSIBILITY OR LIABILITY BASED ON CONTRACT,
WARRANTY, TORT, PRODUCT LIABILITY) FOR ANY INJURY OR DEATH TO PERSONS OR
LOSS OR DAMAGE TO PROPERTY CAUSED BY the PRODUCT THAT ARE OPERATED OR
USED IN APPLICATION NOT INTENDED OR EXCLUDED BY INSTRUCTIONS, PRECAUTIONS,
OR WARNING CONTAINED IN MITSUBISHI'S USER, INSTRUCTION AND/OR SAFETY
MANUALS, TECHNICAL BULLETINS AND GUIDELINES FOR the PRODUCT.
("Prohibited Application")
Prohibited Applications include, but not limited to, the use of the PRODUCT in;
• Nuclear Power Plants and any other power plants operated by Power companies, and/or any
other cases in which the public could be affected if any problem or fault occurs in the PRODUCT.
• Railway companies or Public service purposes, and/or any other cases in which establishment of
a special quality assurance system is required by the Purchaser or End User.
• Aircraft or Aerospace, Medical applications, Train equipment, transport equipment such as
Elevator and Escalator, Incineration and Fuel devices, Vehicles, Manned transportation,
Equipment for Recreation and Amusement, and Safety devices, handling of Nuclear or
Hazardous Materials or Chemicals, Mining and Drilling, and/or other applications where there is a
significant risk of injury to the public or property.
Notwithstanding the above, restrictions Mitsubishi may in its sole discretion, authorize use of the
PRODUCT in one or more of the Prohibited Applications, provided that the usage of the PRODUCT
is limited only for the specific applications agreed to by Mitsubishi and provided further that no
special quality assurance or fail-safe, redundant or other safety features which exceed the general
specifications of the PRODUCTs are required. For details, please contact the Mitsubishi
representative in your region.
A-2
REVISIONS
The manual number is written at the bottom left of the back cover.
A-3
Print date Manual number Revision
This manual confers no industrial property rights or any rights of any other kind, nor does it confer any patent licenses.
Mitsubishi Electric Corporation cannot be held responsible for any problems involving industrial property rights which may
occur as a result of using the contents noted in this manual.
A-4
INTRODUCTION
Thank you for purchasing the Mitsubishi MELSEC-Q series/MELSEC-L series/MELSEC-F series programmable
controller.
Before using the product, thoroughly read this manual to develop full familiarity with the programming
specifications to ensure correct use.
Please forward this manual to the end user.
CONTENTS
1. OVERVIEW 1 - 1 to 1 - 8
1.1 Overview 1-2
1.2 Purpose of This Manual 1-2
1.3 Generic Terms and Abbreviations in This Manual 1-6
1.4 Features of Structured Programs 1-7
1.5 Applicable CPU Modules 1-8
1.6 Compatible Software Package 1-8
4. PROGRAM CONFIGURATION 4 - 1 to 4 - 58
4.1 Overview of Program Configuration 4-2
4.1.1 Project ........................................................................................................................................... 4 - 3
4.1.2 Program files.................................................................................................................................. 4 - 3
4.1.3 Tasks ........................................................................................................................................... 4 - 4
4.2 POUs 4-5
4.2.1 Types of POU ................................................................................................................................ 4 - 5
4.2.2 Program blocks.............................................................................................................................. 4 - 6
4.2.3 Functions ....................................................................................................................................... 4 - 6
4.2.4 Function blocks.............................................................................................................................. 4 - 7
4.2.5 Operators....................................................................................................................................... 4 - 7
4.2.6 Ladder blocks ................................................................................................................................ 4 - 8
4.2.7 Programming languages for POUs................................................................................................ 4 - 9
4.2.8 Functions, function blocks, and operators ................................................................................... 4 - 10
A-5
4.2.9 EN and ENO ................................................................................................................................ 4 - 13
4.3 Labels 4 - 15
4.3.1 Global labels ................................................................................................................................ 4 - 15
4.3.2 Local labels.................................................................................................................................. 4 - 15
4.3.3 Label classes ............................................................................................................................... 4 - 16
4.3.4 Setting labels ............................................................................................................................... 4 - 17
4.3.5 Data types.................................................................................................................................... 4 - 18
4.3.6 Expressing methods of constants................................................................................................ 4 - 20
4.4 Method for Specifying Data 4 - 21
4.4.1 Bit data......................................................................................................................................... 4 - 22
4.4.2 Word (16 bits) data ...................................................................................................................... 4 - 23
4.4.3 Double word (32 bits) data........................................................................................................... 4 - 26
4.4.4 Single-precision real/double-precision real data .......................................................................... 4 - 29
4.4.5 String data ................................................................................................................................... 4 - 33
4.4.6 Time data..................................................................................................................................... 4 - 34
4.4.7 Arrays .......................................................................................................................................... 4 - 35
4.4.8 Structures .................................................................................................................................... 4 - 37
4.5 Device and Address 4 - 38
4.5.1 Device.......................................................................................................................................... 4 - 38
4.5.2 Address........................................................................................................................................ 4 - 39
4.5.3 Correspondence between devices and addresses...................................................................... 4 - 40
4.6 Index Setting 4 - 43
4.7 Libraries 4 - 55
4.7.1 User libraries................................................................................................................................ 4 - 56
4.8 Precautions on Assigning a Name 4 - 57
5. WRITING PROGRAMS 5 - 1 to 5 - 20
5.1 ST 5-2
5.1.1 Standard format ............................................................................................................................. 5 - 2
5.1.2 Operators in ST language.............................................................................................................. 5 - 3
5.1.3 Syntax in ST language................................................................................................................... 5 - 4
5.1.4 Calling functions in ST language ................................................................................................... 5 - 9
5.1.5 Calling function blocks in ST language........................................................................................ 5 - 10
5.1.6 Precautions when using conditional syntax and iteration syntax................................................. 5 - 11
5.2 Structured Ladder/FBD 5 - 13
5.2.1 Standard format ........................................................................................................................... 5 - 13
5.2.2 Ladder symbols in structured ladder/FBD language.................................................................... 5 - 14
5.2.3 Executing order............................................................................................................................ 5 - 16
5.2.4 Ladder branches and compilation results .................................................................................... 5 - 17
5.2.5 Precautions on creating programs with structured ladder/FBD ................................................... 5 - 19
A-6
INDEX Index - 1 to Index - 2
A-7
MANUALS
Related manuals
The Operating Manuals are included on the CD-ROM of the software package in a PDF file
format. Manuals in printed form are sold separately. Order a manual by quoting the manual
number (model code) listed in the table above.
A-8
1
OVERVIEW
OVERVIEW 2
STRUCTURED DESIGN OF
SEQUENCE PROGRAMS
3
CREATING PROGRAMS
PROCEDURE FOR
1.1 Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2
1.2 Purpose of This Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2
4
1.3 Generic Terms and Abbreviations in This Manual . . . . . . . . . . . . . . . . . . . . . . 1-6
CONFIGURATION
1.4 Features of Structured Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-7
PROGRAM
1.5 Applicable CPU Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-8
1.6 Compatible Software Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-8
5
PROGRAMS
WRITING
A
APPENDIX
I
INDEX
1-1
1.1 Overview
This manual describes program configurations and content for creating sequence programs
using a structured programming method, and provides basic knowledge for writing programs.
for programming
Learning data setting
methods for
intelligent function Details
module
OVERVIEW
GX Works2 GX Works2 Version 1
Beginner's Manual Operating Manual
Purpose
Simple Structured Simple Structured
Project Project Project Project
Simple *1
SFC
Project Outline
Details
ST Outline Details
*1
SFC Details
Outline
Structured
Project
Structured ladder/
FBD Outline Details
ST Outline Details
and special
registers
Learning the
types and details
of common Details
instructions
Learning the
types and details
of instructions for Details
intelligent function
Using ladder modules
language Learning the
types and details
of instructions for Details
network modules
Learning the
types and details
of instructions for Details
the PID control
function
Learning details of
specifications,
Using SFC
language functions, and Details
instructions of
SFC (MELSAP3)
Learning the
fundamentals for
creating a Details
structured
program
Learning the
types and details
of the common Details
instructions
Learning the
types and details
Using of instructions for Details
Outline
structured intelligent function
ladder/FBD/ modules
ST Learning the
language types and details
of instructions for Outline Details
network modules
Learning the
types and details
of instructions for Outline Details
the PID control
function
Learning the
types and details
of application Details
functions
OVERVIEW
Structured FXCPU Programming Manual
Programming Manual
Manual
Purpose
FX1S, FX1N,
Basic & FX0, FX0S,
Device & Application FX2N, FX3G, FX3U,
Fundamentals Applied FX0N, FX1,
Common Functions FX1NC, FX3UC
Instruction FXU, FX2C
FX2NC
Learning the types
and details of basic/
Using ladder application
instructions,
language descriptions of
Details Details Details
devices and
parameters
Learning details of
Using SFC specifications,
language functions, and Details Details Details
instructions of SFC
Learning the
fundamentals for
creating a structured Details
program
Learning the
Using descriptions of
devices, parameters, Details
structured and error codes
ladder/FBD/
ST Learning the types
and details of
language sequence Details
instructions
Learning the types
and details of
application Details
instructions
CPU module Generic term for QCPU (Q mode), LCPU, and FXCPU
Personal Computer Generic term for personal computer on which Windows ® operates
IEC61131-3 Abbreviation for the IEC 61131-3 international standard
Generic term for sequence instructions, basic instructions, application instructions, data link
Common instruction instructions, multiple CPU dedicated instructions, and multiple CPU high-speed transmission dedicated
instructions
Generic term for module dedicated instructions, PID control instructions, socket communication
Special instruction
function instructions, built-in I/O function instructions, and data logging function instructions
OVERVIEW
This section explains the features of structured programs.
Name Description
ST (structured text) A text language similar to C language, aimed for computer engineers.
Structured ladder A graphic language that is expressed in form of ladder by using elements such as contacts and coils.
A graphic language that is expressed in form of ladder by connecting elements such as functions and
FBD
function blocks with lines.
FX0, FX0S, FX0N, FXU, FX2C, FX1S, FX1N, FX1NC, FX2N, FX2NC,
FXCPU
FX3G, FX3U, FX3UC
Created sequence programs are managed in units of 'projects' for each programmable
controller CPU. Projects are broadly divided into 'Simple project' and 'Structured project'.
This manual explains the basic programming by referring the Structured project in
GX Works2.
OVERVIEW
STRUCTURED DESIGN OF SEQUENCE PROGRAMS 2
STRUCTURED DESIGN OF
SEQUENCE PROGRAMS
3
CREATING PROGRAMS
PROCEDURE FOR
2.1 What is a Hierarchical Sequence Program?. . . . . . . . . . . . . . . . . . . . . . . . . . . 2-2
2.2 What is a Structured Sequence Program? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-3
4
CONFIGURATION
PROGRAM
5
PROGRAMS
WRITING
A
APPENDIX
I
INDEX
2-1
2.1 What is a Hierarchical Sequence Program?
The hierarchy is to create a sequence program by dividing control functions performed in a
programmable controller CPU into a number of levels.
In higher levels, the processing order and timing in a fixed range is controlled.
With each move from a higher level to a lower level, control content and processes are
progressively subdivided within a fixed range, and specific processes are described in lower
levels.
In the Structured project, hierarchical sequence programs are created with the configuration that
states the highest level as the project, followed by program files, tasks, and POUs (abbreviation
for Program Organization Units).
Project
Initial process
Initial process
Lamp test
Lamp test
Conveyor drive A
Data process A
Conveyor drive B
Data process A
Program file (Station B)
Data process B
Indicator output
Task (Indicator control)
Indicator output
STRUCTURED DESIGN OF
SEQUENCE PROGRAMS
Each component is designed to have a high degree of independence for easy addition and
replacement.
The following shows examples of the process that would be ideal to be structured.
• A process that is used repeatedly in a sequence program.
• A process that can be divided into components.
MUL
MUL
Calls Process A
DIV
MUL Process A
DIV
Structured
program
MUL
Divided Control a
2-4
1
OVERVIEW
PROCEDURE FOR CREATING PROGRAMS 2
STRUCTURED DESIGN OF
SEQUENCE PROGRAMS
3
CREATING PROGRAMS
PROCEDURE FOR
3.1 Procedure for Creating Sequence Programs in Structured Project . . . . . . . . . 3-2
4
CONFIGURATION
PROGRAM
5
PROGRAMS
WRITING
A
APPENDIX
I
INDEX
3-1
3.1 Procedure for Creating Sequence Programs in
Structured Project
This section explains the basic procedure for creating a sequence program in the Structured
project.
Task 1 Task 1
Function Program
block 1 block 1 Program
block 1
Program
Function Program block 2
block 2 block 2 Sequence
program
Task 2 Task 2
Program
Function 1
block 3 Program
block 3
Program
Program
Function 2 block 4
block 4
OVERVIEW
PROGRAM CONFIGURATION 2
STRUCTURED DESIGN OF
SEQUENCE PROGRAMS
3
CREATING PROGRAMS
PROCEDURE FOR
4.1 Overview of Program Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2
4.2 POUs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-5
4
4.3 Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-15
CONFIGURATION
4.4 Method for Specifying Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-21
PROGRAM
4.5 Device and Address . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-38
4.6 Index Setting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-43
4.7 Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-55 5
4.8 Precautions on Assigning a Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-57
PROGRAMS
WRITING
A
APPENDIX
I
INDEX
4-1
4.1 Overview of Program Configuration
A sequence program created in the Structured project is composed of program files, tasks, and
POUs.
The following figure shows the configuration of program files, tasks, and POUs in the project.
Project
POU
Task Program block Task
POU POU
Program block Program block
POU
Program block
The execution types (such as scan execution and fixed scan execution) for executing program
files in a programmable controller CPU are set in the program setting of the parameter.
For details on the execution types set in the parameter, refer to the user's manual of each CPU
module.
Project
CONFIGURATION
Task Task Task
PROGRAM
Program block Program block Program block
POU
Task Program block Task
POU POU
Program block Program block
POU
Program block
Project
Program file 1 Program file 2 Program file n
POU
Task Program block Task
POU POU
Program block Program block
POU
Program block
● Priority
When executing conditions of multiple tasks are met simultaneously, the tasks are
executed according to the set priority.
Tasks are executed in the order from the smallest priority level number.
Tasks set with a same priority level number are executed in the order of task data name.
A process can be described in a programming language that suits the control function for each
POU.
4
Project
CONFIGURATION
Program file
PROGRAM
Task
Registration
POU
Program block
POU folder
POU
Program block
POU
Function
POU
Function block
*1: Local labels are labels that can be used only in programs of declared POUs. For details
of local labels, refer to the following section.
Section 4.3.2 Local labels
4.2 POUs
4.2.1 Types of POU
4-5
4.2.2 Program blocks
A program block is an element that is stated at the highest level of POU.
Functions, function blocks, operators, and user libraries are used to edit program blocks.
Function block
Operator
User library
Sequence programs executed in a programmable controller CPU are created by program blocks
of POU.
For a simplest sequence program, only one program block needs to be created and registered to
a task in order to be executed in a programmable controller CPU.
4.2.3 Functions
Functions, operators, and user libraries are used to edit functions.
Functions can be used by calling them from program blocks, functions, or function blocks.
Function Function
Operator
User library
Functions always output same processing results for same input values.
By defining simple and independent algorithms that are frequently used, functions can be reused
efficiently.
Function block
Operator
User library
Function blocks can retain the input status since they can store values in internal and output
variables. Since they use retained values for the next processing, they do not always output the
same results even with the same input values.
4
Function blocks can be described in the ST or structured ladder/FBD language.
CONFIGURATION
PROGRAM
● Instantiation
Function blocks need to be instantiated to be used in program blocks.
For details of instantiation, refer to the following section.
Section 4.2.8 Functions and function blocks
4.2.5 Operators
Operators can be used by calling them from program blocks, functions, or function blocks.
Operators cannot be edited.
Operators always output same processing results for the same input values.
4.2 POUs
4.2.4 Function blocks
4-7
4.2.6 Ladder blocks
In the structured ladder/FBD language, a program is divided into units of ladder blocks.
In the ST language, ladder blocks are not used.
4
(2) Structured ladder/FBD: (ladder diagram)
CONFIGURATION
The structured ladder/FBD language is a graphic language developed based on the relay
ladder programming technique. Since it can be understood intuitively, it is commonly used
PROGRAM
for the sequence programming.
• Structured ladder
• FBD
4.2 POUs
4.2.7 Programming languages for POUs
4-9
4.2.8 Functions, function blocks, and operators
The following table shows differences among functions, function blocks, and operators.
Outputs one
operation result Outputs one
operation result
Example
(a) A program that outputs the total of three input variables (When using a function (FUN1))
Function
X0
D109 D109
FUN1 D120
D110 D110
D111 D111
A function block uses internal variables. Different devices are assigned to the internal
variables for each instance of function blocks.
(b) Programs that output the total of three input variables (When using function blocks) 4
Instance A Instance B
CONFIGURATION
Function block Function block
PROGRAM
D10 D6200 D10 D6210
D6203 D13 D6213 D13
D11 D6201 D11 D6211
4.2 POUs
4.2.8 Functions, function blocks, and operators
4-11
(3) Creating instances
When using function blocks, create instances to reserve internal variables.
Variables can be called from program blocks and other function blocks by creating instances
for function blocks.
To create an instance, declare as a label in a global label or local label of POU that uses
function blocks. Same function blocks can be instantiated with different names in a single
POU.
Instance A
Function block
D6200
D10 Input label1 D6203
D6201 Output label D13
D11 Input label2
D6202 D6204
D12 Input label3 Local label
Function blocks perform operations using internal variables assigned to each instance.
The following table shows the status of ENO and the operation result according to the status of
EN.
Table 4.2.9-1 Status of ENO and the operation result according to the status of EN
CONFIGURATION
FALSE (Operation stop) FALSE Undefined value
PROGRAM
1. A setting of an output label to an ENO is not essential.
2. As for application functions, functions with an EN are shown as ‘Function
name_E’.
4.2 POUs
4.2.9 EN and ENO
4-13
● Usage example of EN and ENO
No Control description
When the EN input is directly connected from the left power rail, the EN input is always TRUE and
the instruction is always executed.
➀
If the ADD_E instruction is used in this manner, the operation result is the same as the ADD
instruction without the EN input.
When Variable_1 is connected to the EN input, the instruction is executed when Variable_1 is
➁
TRUE.
When the result of Boolean operation is connected to the EN input, the instruction is executed
➂
when the result of Boolean operation is TRUE.
When the ENO outputs are connected to the EN inputs, three instructions are executed when
➃
Variable_1 is TRUE.
➄ When the ENO outputs are not connected, the execution result of the instruction is not output.
In the setting of a global label, a label name, a class, a data type, and a device are associated
with each other.
In the setting of a local label, a label name, a class, and a data type are set.
4
For the local labels, the user does not need to specify devices. Devices are assigned
automatically at compilation.
CONFIGURATION
PROGRAM
4.3 Labels
4.3.1 Global labels
4-15
4.3.3 Label classes
The label class indicates from which POU and how a label can be used. Different classes can be
selected according to the type of POU.
Applicable POU
Class Description Program Function
Function
block block
Common label that can be used in program blocks and
VAR_GLOBAL
function blocks
VAR_GLOBAL_ Common constant that can be used in program blocks and
CONSTANT function blocks
Label that can be used within the range of declared POUs
VAR
This label cannot be used in other POUs.
Constant that can be used within the range of declared POUs
VAR_CONSTANT
This constant cannot be used in other POUs.
Latch type label that can be used within the range of declared
VAR_RETAIN*1 POUs
This label cannot be used in other POUs.
Label that receives a value
VAR_INPUT
This label cannot be changed in a POU.
VAR_OUTPUT Label that outputs a value from a function block
Local label that receives a value and outputs the value from a
VAR_IN_OUT POU
This label can be changed in a POU.
VAR_INPUT VAR_OUTPUT
VAR_IN_OUT
X0 DMOV
EN ENO
g_int1 s d g_int2
CONFIGURATION
PROGRAM
4.3 Labels
4.3.4 Setting labels
4-17
4.3.5 Data types
Labels are classified into several data types according to the bit length, processing method, or
value range.
*1: The following data types cannot be used for the structured ladder/FBD/ST language.
They can be only used for the ladder language.
• Timer data type: Handles programmable controller CPU timer devices (T).
• Retentive timer data type: Handles programmable controller CPU retentive timer devices (ST).
• Counter data type: Handles programmable controller CPU counter devices (C).
• Pointer data type: Handles programmable controller CPU pointer devices (P).
*2: Can be used for Universal model QCPU/LCPU only.
*3: The time type is used in time type operation instructions of application function.
For details of the application functions, refer to the following manuals.
MELSEC-Q/L Structured Programming Manual (Application Functions)
FXCPU Structured Programming Manual (Application Functions)
ANY data types are used when multiple data types are allowed for function arguments and
return values.
Labels defined in generic data types can be used in any sub-level data type.
For example, if the argument of a function is ANY_NUM data type, desired data type for an
argument can be specified from word (signed) type, double word (signed) type, single-
precision real type, and double-precision real type.
Arguments of functions and instructions are described using generic data types, in order to
be used for various different data types.
The following figure shows the types of generic data type and their corresponding
elementary data types.
ANY
4
ANY_SIMPLE Array*1 Structure*2
CONFIGURATION
PROGRAM
ANY_NUM ANY_BIT Time String
Bit
ANY_REAL ANY_INT
Word
Single- Word (unsigned)/
precision 16-bit string The higher 'ANY' data types include sub-level data types.
(signed) The highest 'ANY' data type includes all data types.
real
Double word
Double- Double (unsigned)/
precision word 32-bit string
real (signed)
ANY16 ANY32
*1: For arrays, refer to the following section. Section 4.4.7 Arrays
*2: For structures, refer to the following section. Section 4.4.8 Structures
4.3 Labels
4.3.5 Data types
4-19
4.3.6 Expressing methods of constants
The following table shows the expressing method for setting a constant to a label.
Constant
Expressing method Example
type
Bool Input FALSE or TRUE, or input 0 or 1. TRUE, FALSE
Binary Append '2#' in front of a binary number. 2#0010, 2#01101010
Octal Append '8#' in front of an octal number. 8#0, 8#337
Decimal Directly input a decimal number, or append 'K' in front of a decimal number. 123, K123
Append '16#' or 'H' in front of a hexadecimal number.
Hexadecimal 16#FF, HFF
When a lowercase letter 'h' is appended, it is converted to uppercase automatically.
Real number Directly input a real number, or append 'E' in front of a real number. 2.34, E2.34
Character
Enclose a character string with single quotations (') or double quotations ("). 'ABC', "ABC"
string
T#1h,
Time Append ‘T#’ in front.
T#1d2h3m4s5ms
CONFIGURATION
PROGRAM
One point of M0 is
the target bit device
M0 SET
EN ENO
d Y10
One point of Y10 is
the target bit device
(b) Specify a bit device of word device as ' Word device . Bit number '. (Bit number is
specified in hexadecimal.)
For example, bit 5 (b5) of D0 is specified as D0.5 and bit 10 (b10) of D0 is specified as
D0.A. Note that bit specifications are not applicable for timers (T), retentive timers (ST),
counters (C), and index registers (Z). (Example: Z0.0 is not available).
For FXCPU, bit specification of a word device can be used for FX3U and FX3UC.
CONFIGURATION
• K1X0 ....... 4 points of X0 to X3
PROGRAM
• K2X0 ....... 8 points of X0 to X7
• K3X0 ....... 12 points of X0 to XB
• K4X0 ....... 16 points of X0 to XF
FXCPU
For FXCPU, the device numbers of input/output (X, Y) is assigned in octal.
• K1X0 ....... 4 points of X0 to X3
• K2X0 ....... 8 points of X0 to X7
• K3X0 ....... 12 points of X0 to X13
• K4X0 ....... 16 points of X0 to X17
XF to XC XB to X8 X7 to X4 X3 to X0
K1 specification
range
(4 points)
K2 specification range
(8 points)
K3 specification range
(12 points)
K4 specification range
(16 points)
Figure 4.4.2-1 Digit specification setting range of word data (16 bits)
Number of specified
Value range
digits
K1 (4 points) 0 to 15
K2 (8 points) 0 to 255
K3 (12 points) 0 to 4095
K4 (16 points) −32768 to 32767
(d) When digits are specified at the destination d , the points by digit specification are the
target of destination.
The status of bit devices which follow the digit-specified bit devices is not changed.
Ladder example Processing
H1234 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0
X010 MOV
EN ENO
H1234 s d K2M0 M15 M8 M7 M0
K2M0 0 0 1 1 0 1 0 0
Destination d
Not changed 3 4
When the source s is a word device b15 b8 b7 b0
D0 1 1 1 0 1 0 1 0 1 0 0 1 1 1 0 1
X010 MOV
EN ENO
D0 s d K2M100 M115 M108 M107 M100
K2M100 1 0 0 1 1 1 0 1
Destination d
Not changed
X010 MOV
EN ENO
100 s d D0
1. When performing the process with digit specification, a desired value can be
used for the start device number of bit devices.
2. Digits cannot be specified for direct access inputs/outputs (DX, DY).
CONFIGURATION
PROGRAM
QCPU (Q mode)/LCPU
• K1X0 ...... 4 points of X0 to X3 • K5X0...... 20 points of X0 to X13
• K2X0 ...... 8 points of X0 to X7 • K6X0...... 24 points of X0 to X17
• K3X0 ...... 12 points of X0 to XB • K7X0...... 28 points of X0 to X1B
• K4X0 ...... 16 points of X0 to XF • K8X0...... 32 points of X0 to X1F
FXCPU
For FXCPU, the device numbers of input/output (X, Y) is assigned in octal.
• K1X0 ...... 4 points of X0 to X3 • K5X0...... 20 points of X0 to X23
• K2X0 ...... 8 points of X0 to X7 • K6X0...... 24 points of X0 to X27
• K3X0 ...... 12 points of X0 to X13 • K7X0...... 28 points of X0 to X33
• K4X0 ...... 16 points of X0 to X17 • K8X0...... 32 points of X0 to X37
K1
specification
range
(4 points)
K2 specification
range
(8 points)
K3 specification range
(12 points)
K4 specification range
(16 points)
K5 specification range
(20 points)
K6 specification range
(24 points)
K7 specification range
(28 points)
K8 specification range
(32 points)
Figure 4.4.3-1 Digit specification setting range of double word data (32 bits)
0s are stored
X10 DMOV
EN ENO b15 b4 b3 b2 b1 b0 4
Data_s s d Data_d D0 0 0 0 0 0 0 0 0 0 0 0 0 X3 X2 X1 X0
CONFIGURATION
D1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Source s b31 b16
PROGRAM
0s are stored
(d) When digits are specified at the destination d , the points by the specified digit are the
target of destination. (Data_d1:K5M0, Data_d2:K5M10, Data_s:D0)
The status of bit devices which follow the digit-specified bit devices is not changed.
Ladder example Processing
3 4 5 6
0 1 1 1 1 0 0 0 0 0 0 1 0 0 1 0
X10 DMOV
EN ENO 7 8 1 2
H78123456 s d Data_d1 K5M0
M15 M8 M7 M0
0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0
Destination d
M31 M20 M19 M16
0 0 1 0
Not changed
When the source s is a word device b15 b8 b7 b0
D0 1 1 1 0 0 1 0 0 0 1 0 1 1 1 0 1
b15 b8 b7 b0
D1 0 0 1 1 0 1 0 0 1 0 0 1 0 1 1 1
X10 DMOV
EN ENO
Data_s s d Data_d2 M25 M18 M17 M10
1 1 1 0 0 1 0 0 0 1 0 1 1 1 0 1
Destination d M41 M30M29 M26
0 1 1 1
Not changed
Remark
Floating-point data are represented by two word devices.
[Sign] 1. [Fraction] 2 [Exponent] 4
CONFIGURATION
The following explains the bit configuration and its meaning when floating-point
data are internally represented.
PROGRAM
b31 b30 to b23 b22 to b16 b15 to b0
• Sign
b31 represents a sign.
0: Positive
1: Negative
• Exponent
b23 to b30 represent n of 2n.
The values of n are as follows according to BIN values of b23 to b30.
b23 to b30 FFH FEH FDH 81H 80H 7FH 7EH 02H 01H 00H
• Fraction
23 bits of b0 to b22 represent a value of XXXXXX... when the fraction is
expressed as 1.XXXXXX... in binary.
Remark
1) Floating-point data are represented by four word devices.
[Sign] 1. [Fraction] 2 [Exponent]
The following explains the bit configuration and its meaning when floating-point
data are internally represented.
• Sign
b63 represents a sign.
0: Positive
1: Negative
• Exponent
b52 to b62 represent n of 2n.
The values of n are as follows according to BIN values of b52 to b62.
b52 to b62 7FFH 7FEH 7FDH 400H 3FFH 3FEH 3FDH 3FCH 02H 01H 00H
• Fraction
52 bits of b0 to b51 represent a value of XXXXXX... when the fraction is
expressed as 1.XXXXXX... in binary.
CONFIGURATION
value of double-precision real data exceeds 15 digits, the 16th digit is rounded.
PROGRAM
If the value after the rounding exceeds a value between -2147483648 and 2147483647,
an operation error occurs.
Example 1: When '2147483646.12345678' is set for the input value
*1: For operations when an overflow or underflow is occurred, or when a special value is input, refer to the
following manuals.
• QCPU (Q mode)/LCPU
User’s manuals (Function Explanation, Program Fundamentals) for each CPU
• FXCPU
User’s manuals and programming manuals for each FXCPU
*2: Switching between single precision and double precision of the internal floating-point operation is set in the
PLC system setting of the PLC parameter. For single precision and double precision of floating point
operation, refer to the User's Manual (Function Explanation, Program Fundamentals) of the CPU module to
be used.
*3: The floating point operation is supported with the Basic model QCPU with a serial number whose first five
digits are '04112' or higher.
*4: For FXCPU, only FX2N, FX2NC, FX3G, FX3U, and FX3UC are applicable to the floating point operation.
Character string data and NULL code are stored by using the 'number of characters /2+1'
words.
For example, when 'ABCD' is transferred to word devices starting from D0, the character
string 'ABCD' is stored to D0 and D1, and the NULL code to D2. (The NULL code is stored to 4
the last one word).
CONFIGURATION
M0 $MOV
EN ENO
PROGRAM
"ABCD" s d Var_D0
D0 42H 41H
D1 44H 43H
D2 NULL
Transfers character string data
Specification of a character string
composed of even numbers
Character string data and NULL code are stored by using the 'number of characters /2'
words (Rounding the fractional part).
For example, when 'ABCDE' is transferred to word devices starting from D0, the character
string 'ABCDE' and the NULL code are stored to D0 to D2. (The NULL code is stored to the
higher 8 bits of the last one word).
M0 $MOV
EN ENO
"ABCDE" s d Var_D0
D0 42H 41H
D1 44H 43H
D2 NULL 45H
Transfers character string data
Specification of a character string
composed of odd numbers
For example. the following adds ‘1 Day, 2 Hours, 3 Minutes, and 4 Seconds’ to ‘10 Days, 20
Hours, 30 Minutes, 40 Seconds, and 567 Milliseconds’.
T#10d20h30m40s567ms g_time1
ADD_TIME
g_time1 _IN1 g_time2
T#1d2h3m4s _IN2
Each value of time data can be specified within the following range.
Value Range
d (Day) 0 to 24
h (Hour) 0 to 23
m (Minute) 0 to 59
s (Second) 0 to 59
ms (Millisecond) 0 to 999
4
(1) Definition of arrays
The following table shows the format of definition.
CONFIGURATION
Table 4.4.7-1 Form used to define array
PROGRAM
Number of
array Format Remarks
dimensions
Array of elementary data type/structure name (array start value .. array end
One
value)
dimension
(Definition example) Bit (0..2)
For elementary data types
Array of elementary data type/structure name (array start value .. array end
Two Section 4.3.5
value, array start value .. array end value)
dimensions For structured data types
(Definition example) Bit (0..2, 0..1)
Section 4.4.8
Array of elementary data type/structure name (array start value .. array end
Three
value, array start value .. array end value, array start value .. array end value)
dimensions
(Definition example) Bit (0..2, 0..1, 0..3)
[ST]
FOR Index1:=0
TO 4
BY 1 DO
INC(TRUE,Var_D0[Index1]);
END_FOR;
To use structures, first create the configuration of structure, and define a structure label name for
the created structure as a new data type
To use each element of structure, append an element name after the structure label name with '.'
as a delimiter in between.
CONFIGURATION
index enclosed by '[ ]' after the structure label name.
The arranged structured data can be specified as arguments of functions and function blocks.
PROGRAM
Example) When using the element
of the arranged structured data
dut_b1 [0] . in00
Creating structures
Expression in a program
dut_a1.bo00 dut_a1.bo01
MOV
EN ENO
dut_a1.in00 s d idata1
4.5.1 Device
Device is a format that uses a device name and a device number. Example)
X0 W35F
For details of devices, refer to the following manuals.
● Position
Position is a major class indicating the position to Example)
which data are allocated in three types: input,
output, and internal.
%I X0 %MX1 . 863 4
The following shows the format rules
CONFIGURATION
corresponding to the device format. Position Data Classification Number
PROGRAM
size
• X, J\X (X device) : I (input)
• Y, J\Y (Y device) : Q (output)
• Other devices : M (internal)
● Data size
Data size is a class indicating the size of data.
The following shows the format rules corresponding to the device format.
• Bit device : X (bit)
• Word device : W (word), D (double word), L (long word)
● Classification
Classification is a minor class indicating the type of a device that cannot be identified
only by its position and size.
Devices X and Y do not support classification.
For the format corresponding to the device format, refer to the following section.
Section 4.5.3 Correspondence between devices and addresses
%MW0.n %MW0.11135
Data register D Dn D11135
%MD0.n %MD0.11135
%MW10.n %MW10.1023
Special register SD SDn SD1023
%MD10.n %MD10.1023
Function register FD FDn None FD0 None
Link relay B Bn %MX1.n B7FF %MX1.2047
Link special relay SB SBn %MX11.n SB3FF %MX11.1023
%MW1.n %MW1.2047
Link register W Wn W7FF
%MD1.n %MD1.2047
%MW11.n %MW11.1023
Link special register SW SWn SW3FF
%MD11.n %MD11.1023
Intelligent function %MW14.x.n %MW14.0.65535
G Ux\Gn U0\G65535
module device %MD14.x.n %MD14.0.65535
%MW2.n %MW2.32767
File register R Rn R32767
%MD2.n %MD2.32767
Pointer P Pn "" (Null character) P299 None
Interrupt pointer I In None - -
Nesting N Nn None - -
%MW7.n %MW7.9
Index register Z Zn Z9
%MD7.n %MD7.9
(b) FXCPU
Table 4.5.3-2 Correspondence between devices and addresses
CONFIGURATION
Output Y Yn %QXn Y367 %QX247
PROGRAM
Auxiliary relay M Mn %MX0.n M499 %MX0.499
Contact TS Tn %MX3.n TS191 %MX3.191
Coil TC Tn %MX5.n TC191 %MX5.191
Timer
Device Address
%[Position of memory area][Data size]19.[Number of
K[Number of digits][Device name][Device number]
digits].[Classification].[Number]
(Number of digits: 1 to 8)
(Number of digits: 1 to 8)
• Correspondence examples
Device Address
K1X0 %IW19.1.0
K4M100 %MW19.4.0.100
K8M100 %MD19.8.0.100
K2Y7E0 %QW19.2.2016
Device Address
[Device name][Device number].[Bit number] %[Position of memory area]X[Classification].[Device
(Bit number: 0 to F) number].[Bit number]
• Correspondence examples
Device Address
D11135.C %MX0.11135.12
SD1023.F %MX10.1023.15
• Index setting, digit specification of bit devices, and bit specification of word
device
Index setting, digit specification of bit devices, and bit specification of word
device cannot be applied to labels.
(b) For Universal model QCPU, LCPU, and FXCPU, indexes can be set in 32-bit range in
addition to 16-bit range.
(2) 16-bit index setting
(a) Setting an index in 16-bit range
Values from -32768 to 32767 can be set to index registers.
The following shows how the index is set.
X0 MOV
EN ENO Stores -1 at Z0.
-1 s d Z0
CONFIGURATION
Index setting
PROGRAM
(b) Devices that can be used for the index setting (for QCPU (Q mode), LCPU)
The index setting can be applied to devices used by contacts, coils, basic instructions,
and application instructions except for the restrictions shown in the tables below. The
index setting cannot be applied to labels.
1) Devices that cannot be used for the index setting
Device Description
E Floating-point data
$ Character string data
*1: SFC transition devices and SFC block devices are devices
for SFC programs. For details, refer to the following manual.
• MELSEC-Q/L/QnA Programming Manual (SFC)
TS0Z0 OUT_T
Only Z0 or Z1 can be used for contacts or EN ENO
T TC1Z1 s1
coils of the timer.
100 s2
CS0Z1 OUT_C
Only Z0 or Z1 can be used for contacts or EN ENO
C
coils of the counter. CC1Z0 s1
100 s2
(c) Devices that can be used for the index setting (for FXCPU)
The following table shows the devices that can be used for the index setting.
Device Description
M, S, T, C, D, R,
Decimal devices, values
KnM, KnS, P, K
X, Y, KnX, KnY Octal devices
H Hexadecimal values
Remark
There are no usage restrictions on index register numbers for current values of
the timer and counter.
X0 OUT_T
EN ENO
TC0 s1
100 s2
Set value of timer
(Index setting is not applicable)
SM400 BCD
EN ENO
TN0Z4 s d K4Y30
Current value of timer
X1 OUT_C
EN ENO
CC100 s1
10 s2
Set value of counter
(Index setting is not applicable)
SM400 BCD
EN ENO
CN100Z6 s d K2Y40
Current value of counter
X0 MOV X1 MOV
EN ENO
K20 s d Z0
EN ENO
264 s d K1M33
MOV Description
EN ENO
K-5 s d Z1 K2X50Z0 K2X(50 + 14) = K2X64
X1 MOV
EN ENO Converts K20 to a hexadecimal number.
K2X50Z0 s d K1M38Z1 K1M38Z1 K1M(38 - 5) = K1M33
X0 MOV X1 MOV
EN ENO
K20 s d Z0 EN ENO
D20 s d K3Y12A
MOV
EN ENO Description
K-5 s d Z1
D0Z0 D (0 + 20) = D20
X1 MOV K3Y12FZ1 K3Y(12F - 5) = K3Y12A
EN ENO
D0Z0 s d K3Y12FZ1
Hexadecimal number
CONFIGURATION
(3) 32-bit index setting (for Universal model QCPU (excluding Q00UJCPU), LCPU, and
FXCPU)
PROGRAM
For Universal model QCPU (excluding Q00UJCPU) and LCPU, either of the following two
methods can be selected to specify index registers used for a 32-bit index setting.
• Specify a range of index registers used for a 32-bit index setting.
• Specify a 32-bit index setting using 'ZZ'.
For FXCPU, combine index registers V (from V0) and Z (from Z0) for a 32-bit index setting.
32-bit index settings using 'ZZ' can be used for the following CPU modules only.
• QnU(D)(H)CPU with a serial number whose first five digits are '10042' or higher
(excluding Q00UJCPU)
• QnUDE(H)CPU
• LCPU
X0 DMOV
EN ENO Stores 40000 to Z0
40000 s d Var_Z0
X0 MOV
Stores the data of
EN ENO
s d ZR {10+40000} = ZR40010 to D0
ZR10Z0 D0
Index setting
2) Specification method
When setting indexes in 32-bit range, specify the start number of index
registers to be used in “Indexing Setting for ZR Device” setting in the
<<Device>> tab of the PLC parameter.
Figure 4.6-2 Index setting for ZR device on the parameter setting screen
When changing the start number of index registers to be used in the device
setting of the PLC parameter, do not change nor write only parameters to the
programmable controller. Always write parameters along with the program to the
programmable controller.
If data are forcibly written, the operation error "CAN'T EXE. PRG." (error code:
2500) occurs.
5) The following figure shows the examples of index setting and their actual
processing devices.
4
(With the setting of Z0 (32 bits) =100000 and Z2 (16 bits) =-20)
CONFIGURATION
Ladder example Actual processing device
PROGRAM
X1 MOV
X0 DMOV EN ENO
EN ENO ZR101000 s d D10
K100000 s d Z0
Description
MOV
EN ENO ZR1000Z0 ZR(1000+100000) ZR101000
K-20 s d Z2 D30Z2 D(30-20) D10
X1 MOV
EN ENO
ZR1000Z0 d D30Z2
M0 DMOVP
EN ENO Set 100000 to Z4 and Z5.
K100000 s d Z4
2) Specification method
When specifying a 32-bit index setting using 'ZZ', select "Use ZZ" in the
"Indexing Setting for ZR Device" setting in the <<Device>> tab of the PLC
parameter.
Figure 4.6-4 Index setting for ZR device on the parameter setting screen
3) Devices that can be used for the index setting
Only the following devices can be used for the index setting.
Device Description
ZR Serial number access file register
D Extended data register
W Extended link register
X1 MOV
X0 DMOV
EN ENO
EN ENO
ZR101000 s d D10
K100000 s d Z0
MOV Description
EN ENO ZR1000ZZ0 ZR(1000+100000) ZR101000
K-20 s d Z2 D30Z2 D(30-20) D10
X1 MOV
EN ENO
ZR1000ZZ0 s d D30Z2
CONFIGURATION
Sampling trace
5
(Trace setting (Data get timing setting), trace target devices)
PROGRAM
ZZn cannot be used individually such as 'DMOV K100000 ZZ0'. When setting a
value to index registers to specify a 32-bit index setting using 'ZZ', set a value to
Zn (Z0 to Z19).
ZZn cannot be entered individually in the functions.
Z1 = 0
D20000
MOV Extended data
EN ENO
register
1234 s d D20000Z1
D22000
Z1 = 2000
1) Index settings that cross internal user devices and extended data registers (D)/
extended link registers (W)
An index setting that crosses internal user devices and extended data registers
(D)/extended link registers (W) cannot be applied. If the device range check is
enabled at the index setting, an error occurs. (Error code: 4101)
D20100
Z0=20000 Extended data register
1234
EN ENO
s d D20000Z1 Extended link
4
Z1=4000 register (W)
W2DC0
CONFIGURATION
(8K points)
From W2000
Even when the index setting that
PROGRAM
crosses extended data register (D)
and extended link register (W) is
applied, an error does not occur.
BIN
EN ENO
K4X0Z2 s d D0
Index setting is applicable
to the device number,
BIN If Z2=3, then (X0+3)=X3
EN ENO
K4Z3X0 s d D0
Index setting is not applicable
to the digit-specified bit device.
MOV
EN ENO
U10Z1\G0Z2 s d D0
If Z1=2 and Z2=8,
then U(10+2)\G(0+8)=U12\G8
(c) An index setting is applicable to both network numbers and device numbers for link
direct devices*3.
MOV
EN ENO
J1Z1\K4X0Z2 s d D0
If Z1=2 and Z2=8,
then J(1+2)\K4X(0+8)=J3\K4X8
(d) An index setting is applicable to both start I/O numbers of the CPU module and CPU
shared memory addresses for multiple CPU area devices*4.
MOV
EN ENO
U3E0Z1\G0Z2 s d D0
*3: For intelligent function module devices and link direct devices, refer to the User's Manual (Function
Explanation, Program Fundamentals) of the CPU module to be used.
*4: For multiple CPU area devices, refer to the User's Manual (Function Explanation, Program Fundamentals) of
the CPU module to be used.
(e) A 32-bit index setting is applicable to extended data register (D) and extended link
register (W)
(for Universal model QCPU (excluding Q00UJCPU), and LCPU)
When applying an index setting to extended data registers (D) or extended link registers
(W), it can be applied in 32-bit range as applying an index setting to file registers (ZR) in
the following two methods.
• Specify a range of index registers used for a 32-bit index setting.
• Specify a 32-bit index setting using 'ZZ'.
32-bit index settings using 'ZZ' can be used for the following CPU modules only.
• QnU(D)(H)CPU with a serial number whose first five digits are '10042' or higher
(excluding Q00UJCPU)
• QnUDE(H)CPU
• LCPU
(b) Applying the index setting within the FOR to NEXT instruction loop
The pulses can be output by using edge relays (V) within the FOR to NEXT instruction
loop.
Note that the pulses cannot be output by the PLS, PLF, or pulse ( P) instruction.
FOR FOR
10
EN
n
ENO
10
EN
n
ENO
4
CONFIGURATION
X0Z1 EGP OUT X0Z1 PLS
EN ENO EN ENO EN ENO
d V0Z1 d M0Z1 d M0Z1
PROGRAM
SM400 INC SM400 INC
EN ENO EN ENO
d Z1 d Z1
NEXT NEXT
EN ENO EN ENO
Remark
The ON/OFF information of X0Z1 is stored to the edge relay V0Z1.
For example, the ON/OFF data of X0 is stored to V0 and the ON/OFF data of X1
is stored to V1.
Z0 and Z1 cannot be used when labels are used for array indexes within the FOR
to NEXT instruction loop.
CALL CALL
EN ENO EN ENO
P0 p P0 p
CALL CALL
EN ENO EN ENO
P0 p P0 p
FEND FEND
EN ENO EN ENO
RET RET
EN ENO EN ENO
(e) Switching between 16-bit and 32-bit range of the index setting
When switching between 16-bit and 32-bit range, check the positions of the index
setting in the program.
Since the specified index register (Zn) and next index register (Zn+1) are used for index
setting in 32-bit range, make sure not to overlap index registers being used.
The following figure shows the data flow when using library components in a project.
Library 4
Program block Program block
CONFIGURATION
Install Edit
PROGRAM
Global label Global label
Function Function
Structure Structure
Utilize
Global label
Installed library can be
registered in the task
Program file of the project.
Task
POUs can be
called from the POU
programs in the
project.
Program block
Function
Function block
Structure
4.7 Libraries
4-55
4.7.1 User libraries
A user library is a library for storing created structures, global labels, POUs, and other data that
can be used in other projects.
Name Description
Stores definitions of structures used in POU folders of library or definitions of
Structure
structures used in programs of a project.
Global label Stores definitions of global labels used in POU folders of library.
Stores program blocks, functions, and function blocks that can be used as
POU
libraries.
CONFIGURATION
(6) Do not use a number for the initial character.
PROGRAM
(7) Constants cannot be used.
(An identifier that begins with 'H' or 'h' and an expression where a hexadecimal (0 to F)
immediately follows 'H' or 'h' (maximum 9 digits including 'H' or 'h' (excluding 0 that
immediately follows 'H' or 'h')) are also treated as a constant. (Example: 'hab0'))
4-58
1
OVERVIEW
WRITING PROGRAMS 2
STRUCTURED DESIGN OF
SEQUENCE PROGRAMS
3
CREATING PROGRAMS
PROCEDURE FOR
5.1 ST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-2
5.2 Structured Ladder/FBD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-13
4
CONFIGURATION
PROGRAM
5
PROGRAMS
WRITING
A
APPENDIX
I
INDEX
5-1
5.1 ST
The ST language is a text language with a similar grammatical structure to the C language.
Controls such as conditional judgement and repetition process written in syntax can be
described.
This language is suitable for programming complicated processes that cannot be easily
described by a graphic language (structured ladder/FBD language).
syntaxes
Comment
Spaces, tabs, and line feeds can be inserted anywhere between a keyword and an identifier.
Space
Tab
Line feed
Comments can be inserted in a program. Describe '(*' in front of a comment and '*)' in back of a
comment.
Comment
5-2 5.1 ST
5.1.1 Standard format
5.1.2 Operators in ST language
The following table shows the operators used in the ST program and their priorities.
Table 5.1.2-1 Operators in the ST language
If a syntax includes multiple operators with a same priority, the operation is performed from the
leftmost operator.
The following table shows the operators, applicable data types, and operation result data types.
Table 5.1.2-2 Data types used in operators 5
Operator Applicable data type Operation result data type
*, /, +, - ANY_NUM ANY_NUM
<, >, <=, >=, =, <> ANY_SIMPLE Bit
PROGRAMS
WRITING
MOD ANY_INT ANY_INT
AND, &, XOR, OR, NOT ANY_BIT ANY_BIT
ANY_REAL (Base)
** ANY_REAL
ANY_NUM (Exponent)
5.1 ST
5.1.2 Operators in ST language
5-3
5.1.3 Syntax in ST language
The following table shows the syntax that can be used in the ST program.
Table 5.1.3-1 Syntax in the ST language
(b) Description
The assignment syntax assigns the result of the right side expression to the label or
device of the left side.
The result of the right side expression and data type of the left side need to obtain the
same data when using the assignment syntax.
(c) Example
Array type labels and structure labels can be used for the assignment syntax.
Note the data types of left side and right side.
• Array type labels
The data type and the number of elements need to be the same for left side and
right side.
When using array type labels, do not specify elements.
< Example >
intAry1 := intAry2;
• Structure labels
The data type (structured data type) needs to be the same for left side and right
side.
< Example >
dutVar1 := dutVar2;
5-4 5.1 ST
5.1.3 Syntax in ST language
(2) IF THEN conditional syntax
(a) Format
IF <Boolean expression> THEN
<Syntax ...>;
END_IF;
(b) Description
The syntax is executed when the value of Boolean expression (conditional expression)
is TRUE. The syntax is not executed if the value of Boolean expression is FALSE.
Any expression that returns TRUE or FALSE as the result of the Boolean operation with
a single bit type variable status, or a complicated expression that includes many
variables can be used for the Boolean expression.
(c) Example
PROGRAMS
(b) Description
WRITING
Syntax 1 is executed when the value of Boolean expression (conditional expression) is
TRUE.
Syntax 2 is executed when the value of Boolean expression is FALSE.
(c) Example
5.1 ST
5.1.3 Syntax in ST language
5-5
(4) IF ...ELSIF conditional syntax
(a) Format
IF <Boolean expression 1> THEN
<Syntax 1 ...>;
ELSIF <Boolean expression 2> THEN
<Syntax 2 ...>;
ELSIF <Boolean expression 3> THEN
<Syntax 3 ...>;
END_IF;
(b) Description
Syntax 1 is executed when the value of Boolean expression (conditional expression) 1
is TRUE. Syntax 2 is executed when the value of Boolean expression 1 is FALSE and
the value of Boolean expression 2 is TRUE.
Syntax 3 is executed when the value of Boolean expression 1 and 2 are FALSE and the
value of Boolean expression 3 is TRUE.
(c) Example
(b) Description
The result of the CASE conditional expression is returned as an integer value. The
CASE conditional syntax is used to execute a selection syntax by a single integer value
or an integer value as the result of a complicated expression.
When the syntax that has the integer selection value that matches with the value of
integer expression is executed, and if no integer selection value is matched with the
expression value, the syntax that follows the ELSE syntax is executed.
(c) Example
5-6 5.1 ST
5.1.3 Syntax in ST language
(6) FOR...DO syntax
(a) Format
FOR <Repeat variable initialization>
TO <Last value>
BY <Incremental expression> DO
<Syntax ...>;
END_FOR;
(b) Description
The FOR...DO syntax repeats the execution of several syntax according to the value of
a repeat variable.
(c) Example
(b) Description
PROGRAMS
The WHILE...DO syntax executes one or more syntax while the value of Boolean
WRITING
expression (conditional expression) is TRUE.
The Boolean expression is evaluated before the execution of the syntax. If the value of
Boolean expression is FALSE, the syntax in the WHILE...DO syntax is not executed.
Since a return result of the Boolean expression in the WHILE syntax requires only
TRUE or FALSE, any Boolean expression that can be specified in the IF conditional
syntax can be used.
(c) Example
5.1 ST
5.1.3 Syntax in ST language
5-7
(8) REPEAT...UNTIL syntax
(a) Format
REPEAT
<Syntax ...>;
UNTIL <Boolean expression>
END_REPEAT;
(b) Description
The REPEAT...UNTIL syntax executes one or more syntax while the value of Boolean
expression (conditional expression) is FALSE.
The Boolean expression is evaluated after the execution of the syntax. If the value of
Boolean expression is TRUE, the syntax in the REPEAT...UNTIL syntax are not
executed.
Since a return result of the Boolean expression in the REPEAT syntax requires only
TRUE or FALSE, any Boolean expression that can be specified in the IF conditional
syntax can be used.
(c) Example
(b) Description
The RETURN syntax is used to end a program in a middle of the process.
When the RETURN syntax is used in a program, the process jumps from the RETURN
syntax execution step to the last line of the program, ignoring all the remaining steps
after the RETURN syntax.
(c) Example
5-8 5.1 ST
5.1.3 Syntax in ST language
(10) EXIT syntax
(a) Format
EXIT;
(b) Description
The EXIT syntax is used only in iteration syntax to end the iteration syntax in a middle of
the process.
When the EXIT syntax is reached during the execution of the iteration loop, the iteration
loop process after the EXIT syntax is not executed. The process continues from the line
after the one where the iteration syntax is ended.
(c) Example
PROGRAMS
WRITING
When using multiple variables, delimit them by ','.
The execution result of the function is stored by assigning the result to the variables.
1) Calling a function with one input variable (Example: ABS)
Output1 := ABS(Input1);
For a function with EN/ENO, the result of the function execution is ENO, and
the first argument (Variable 1) is EN.
5.1 ST
5.1.4 Calling functions in ST language
5-9
5.1.5 Calling function blocks in ST language
The following description is used to call a function block in the ST language.
Enclose the assignment syntax that assigns variables to the input variable and output variable by
'( )' after the instance name.
When using multiple variables, delimit assignment syntax by ',' (comma).
The execution result of the function block is stored by assigning the output variable that is
specified by adding '.' (period) after the instance name to the variable.
1) Calling a function block with one input variable and one output variable
FB definition
FB Name: FBADD
FB instance name: FBADD1
Input variable1: IN1
Output variable1: OUT1
2) Calling a function block with three input variables and two output variables
FB definition
FB Name: FBADD
FB instance name: FBADD1
Input variable1: IN1
Input variable2: IN2
Input variable3: IN3
Output variable1: OUT1
Output variable2: OUT2
5-10 5.1 ST
5.1.5 Calling function blocks in ST language
5.1.6 Precautions when using conditional syntax and iteration syntax
The following explains the precautions when creating ST programs using conditional syntax and
iteration syntax.
(1) Once the conditions (boolean expression) are met in the conditional syntax or iteration
syntax, the bit device which is turned ON in the <syntax> is always set to ON.
• A program whose bit device is always set to ON
Structured ladder/FBD program
ST program
equivalent to ST program
To avoid the bit device to be always set to ON, add a program to turn the bit device OFF as
shown below.
• A program to avoid the bit device to be always set to ON.
Structured ladder/FBD program
ST program*1
equivalent to ST program
5
*1 The above program can also be written as follows.
Y0 := M0;
or
PROGRAMS
OUT(M0,Y0);
WRITING
Note that, when the OUT instruction is used in <syntax> of conditional syntax or iteration syntax, the program
status becomes the same as the program whose bit device is always set to ON.
5.1 ST
5.1.6 Precautions when using conditional syntax and iteration syntax
5-11
(2) When Q00U, Q00UJ or, Q01UCPU is used, and the string type is applied to Boolean
expression (conditional expression) with conditional syntax or iteration syntax, a compilation
error may occur.
• Program example which causes compilation error
ST program
To avoid a compilation error, create the function blocks of the string type comparison with
ladder or structured ladder/FBD, and apply the operation result of function blocks to the
conditional expression of conditional syntax or iteration syntax.
The following is an example when creating the function blocks with structured ladder/FBD.
• Program creation example which avoids compilation error
➀ Create the function blocks of the string type comparison with structured ladder/FBD
program.
Function block (EQFB_01)
➁ Apply the operation result of function blocks (EQFB_01) to the conditional expression
in ST program.
Label setting
ST program
5-12 5.1 ST
5.1.6 Precautions when using conditional syntax and iteration syntax
5.2 Structured Ladder/FBD
The structured ladder/FBD is a graphic language for writing programs using ladder symbols such
as contacts, coils, functions, and function blocks.
5
In the structured ladder/FBD language, units of ladder blocks are used for programming.
For structured ladder, connect the left power rail and ladder symbols with lines.
PROGRAMS
WRITING
For FBD, connect the ladder symbols with lines according to the flow of data or signals without
connecting with the left power rail.
Rising edge *1,*2,*3 Turns ON at the rising edge (OFF to ON) of a specified device or label.
A specified device or label turns ON when the operation result turns ON.
*1 Once the device or label turns ON, it remains ON even when the
Set
operation result turns OFF.
A specified device or label turns OFF when the operation result turns
Reset *1 ON. If the operation result is OFF, the status of the device or label
does not change.
Series-connection contact
( )
Parallel-connection contact
*3: Supported with GX Works2 Version 1.15R or later.
For the confirmation method of the version of GX Works2, refer to the following manual.
GX Works2 Version 1 Operating Manual (Common)
Function return value output Outputs the return value from a function or function block.
Function inverted argument input Inverts and inputs an argument to a function or function block.
PROGRAMS
WRITING
The performance of return differs depending on the programs, functions, and
function blocks being used.
• When used in the programs
End the execution of POUs
• When used in the functions
End the functions. Also, return to the next step of the instruction which called
the functions.
• When used in the function blocks
The performance differs depending on whether "Use Macrocode" is checked or
not on the Property screen.
When it is checked, end the execution of POUs.
When it is not checked, end the function blocks. Also, return to the next step of
the instruction which called the functions.
The operation order in a ladder block is from the left power rail to the right and from the top to the
bottom.
The program is executed from the left power rail to the right when the ladder is not branched and
ENs and ENOs are connected in series.
The program is executed from the top to the bottom, when the ladder is branched and ENs and
ENOs are connected in parallel.
The program is executed in the order as shown below when the MOV instruction ( 4 ) in the
above figure is moved to the top.
(1) When one contact is used up to the branch, the instruction of the contact is used multiple
times in the compilation result.
PROGRAMS
not be executed.
WRITING
When executing multiple instructions against one contact, connect the instructions in series.
Since the sequence program uses the LD instruction only once in the compilation result, all
sequence programs are executed.
When Q00U, Q00UJ, Q01UCPU is used, and the string type is applied to enter the standard
comparison functions, a compilation error may occur.
• Program example which causes compilation error
Structured ladder/FBD program
To avoid a compilation error, use LD$=, LD$<>, LD$<=, LD$<, LD$>=, or LD$> instructions.
• Program example which avoids compilation error
Structured ladder/FBD program
PROGRAMS
WRITING
5-20
1
OVERVIEW
APPENDIX 2
STRUCTURED DESIGN OF
SEQUENCE PROGRAMS
3
CREATING PROGRAMS
PROCEDURE FOR
Appendix 1 Correspondence between Generic Data Types and Devices . . . . . . . . . App-2
Appendix 2 Character Strings that cannot be Used in Label Names and Data Names . . App-6
4
Appendix 3 Recreating Ladder Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . App-9
CONFIGURATION
PROGRAM
5
PROGRAMS
WRITING
A
APPENDIX
I
INDEX
App-1
Appendix 1 Correspondence between Generic Data
Types and Devices
The following table shows the correspondence between generic data types and devices.
Table App. 1-1 Correspondence between generic data types and devices
Device
Input X
Output Y
Internal relay M
Latch relay L
Annunciator F
Edge relay V
Step relay S
Link relay B
Timer contact*1 TS
Counter contact*1 CS
Counter coil CC
Link register W
*1 *1 *1 *1 *1 *1
*1 *1 *1 *1 *1 *1
*1 *1 *1 *1 *1 *1
*1 *1 *1 *1 *1 *1
*1 *1 *1 *1 *1 *1
*1 *1 *1 *1 *1 *1
*1 *1 *1 *1 *1 *1
*1 *1 *1 *1 *1 *1
*1 *1 *1 *1 *1 *1
*1 *1 *1 *1 *1 *1
*1 *1 *1 *1 *1 *1
*1 *1 *1 *1 *1 *1
*1 *1 *1 *1 *1 *1 A
APPENDIX
*2
*2
*2
− − − − − − − − − − − − −
− − − − − − − − − − − − −
*1 *1 *1 *1 *1 *1
− − − − − −
*2
*1 *1 *1 *1 *1 *1
*1 *1 *1 *1 *1 *1
*1 *1 *1 *1 *1 *1
*2
*2
*2
*2
− − − − − − − − − − − − −
− − − − − − − − − − − − −
− − − − − − − − − − − − −
APPENDIX
Character strings used for application function names, common instruction names, special
instruction names, and instruction words are called reserved words.
These reserved words cannot be used for label names or data names. If the character string
defined as a reserved word is used for a label name or data name, an error occurs during
registration or compilation.
The following tables shows character strings that cannot be used for label names or data names.
The numbers from 1 to 9 in the tables indicate the following label names and data names.
<Label name and data name>
1 Project file name
5 Task name
7 Structure name
8 POU name
9 Label name
Table App. 2-1 Character strings that cannot be used for label names and data names (1/3)
NOT, MOD
ST operator
(, ), - U*1
: Applicable, U: With restrictions, : Not applicable
*1: Functions cannot be used.
*2: Whether to handle a device name indexed with ZZ device as a reserved word depends on the parameter
setting.
When Z device is specified for 32-bit index setting: Not handled as a reserved word
When ZZ device is specified for 32-bit index setting: Handled as a reserved word
*3: Applicable for Simple projects without labels only.
App-6 Appendix 2 Character Strings that cannot be Used in Label Names and Data Names
Table App. 2-1 Character strings that cannot be used for label names and data names (2/3)
!, #, $, `
Date and time literal DATE, DATE_AND_TIME, DT, TIME, TIME_OF_DAY, TOD
APPENDIX
Others
EN, ENO, BODY_CCE, BODY_FBD, BODY_IL, BODY_LD,
BODY_SFC, BODY_ST, END_BODY,
END_PARAMETER_SECTION,
PARAM_FILE_PATH, PARAMETER_SECTION, SINGLE,
RETAIN, INTERVAL
: Applicable, U: With restrictions, : Not applicable
*1: Functions cannot be used.
Appendix 2 Character Strings that cannot be Used in Label Names and Data Names
App-7
Table App. 2-1 Character strings that cannot be used for label names and data names (3/3)
;FB BLK START, ;FB START, ;FB END, ;FB BLK END, ;FB IN, ;FB
Statement in ladder
OUT, ;FB_NAME;,INSTANCE_NAME,
language
;FB, ;INSTANCE
App-8 Appendix 2 Character Strings that cannot be Used in Label Names and Data Names
Appendix 3 Recreating Ladder Programs
This section provides an example of creating a structured program same as the program created
in the ladder programming language using GX Works2.
APPENDIX
The following examples explain the method for creating a structured program same as the data
receive program for a Q-compatible serial communication module, using the structured ladder/
FBD and ST languages.
Label
Device Purpose
Data type Label name
X3 CH1 reception data read request Bit CH1ReadRequest
X4 CH1 reception abnormal detection Bit CH1AbnormalDetection
D0 Reception channel
D1 Reception result
Word (unsigned)/16-bit
D2 Control data Number of reception data ControlData
string [0] to [3]
Number of allowable reception
D3
data
Word (unsigned)/16-bit
D10 to D109 Reception data RecieveData
string [0] to [99]
Word (unsigned)/16-bit
D110 to D209 Reception data storage area Data
string [0] to [99]
M0 Data Completion flag
reception
Bit [0] to [1] Completion
M1 completion Status flag at completion
flag
M100 Abnormal completion flag Bit AbnormalCompletion
X100 Abnormal completion flag reset command Bit ResetAbnormalCompletion
*1: Devices of local labels are automatically assigned within the range specified in the
device/label automatic-assign setting in GX Works2.
To assign the same devices as those in the original ladder program, set them as global
labels.
APPENDIX
*1
2
*1
*1
*1 2
*1: When using multiple contacts for execution conditions, enclose them by '( )' to be
programmed in a group.
APPENDIX
App-14
I INDEX
Index-1
WRITING PROGRAM PROCEDURE FOR STRUCTURED DESIGN OF
I
INDEX APPENDIX PROGRAMS CONFIGURATION CREATING PROGRAMS SEQUENCE PROGRAMS OVERVIEW
5
4
3
2
1
A
[Numeric character] [O]
32-bit index setting ................................................ 4-45 operators ................................................................. 5-3
output variables ............................................. 4-10,4-16
[A]
address ......................................................... 4-39,4-40 [P]
array ...................................................................... 4-35 POU......................................................................... 4-5
precautions on assigning label names .................. 4-57
[B]
priority...................................................................... 4-4
Bit data .................................................................. 4-22
program ................................................................... 4-5
[C] program blocks........................................................ 4-6
calling function blocks ................................... 5-10,5-11 program components ........................................ 1-7,2-3
calling functions....................................................... 5-9 program files............................................................ 4-3
class ...................................................................... 4-16 project................................................................ 2-2,4-3
constant................................................................. 4-20 [S]
correspondence between generic data types and
single-precision real data ...................................... 4-29
devices ................................................................ App-2
specify a bit device of word device........................ 4-22
[D] specify digits of bit data ......................................... 4-23
data types.............................................................. 4-18 specifying digits of bit devices ............................... 4-23
device..................................................4-38,4-40,App-2 ST............................................................................ 4-9
double word (32 bits) data..................................... 4-26 standard format ............................................... 5-2,5-13
double-precision real data..................................... 4-29 string data.............................................................. 4-33
Structure................................................................ 4-37
[E]
structured design..................................................... 1-7
elementary data types........................................... 4-18 structured ladder ............................................. 4-9,5-13
EN ......................................................................... 4-13 syntax ...................................................................... 5-4
ENO ...................................................................... 4-13
executing condition ................................................. 4-4 [T]
tasks ........................................................................ 4-4
[F]
The structured ladder/FBD .................................... 5-13
FBD ....................................................................... 5-13
function blocks ........................................................ 4-7 [U]
functions.................................................................. 4-6 user libraries.......................................................... 4-56
[G] [W]
generic data type................................................... 4-19 word (16 bits) data................................................. 4-23
global labels .......................................................... 4-15
[H]
hierarchy ........................................................... 1-7,2-2
[I]
index setting .......................................................... 4-43
input variables ....................................................... 4-16
input/output variables ............................................ 4-16
instances ......................................................... 4-7,4-12
[L]
ladder block labels .................................................. 4-8
ladder blocks ........................................................... 4-8
ladder symbols ...................................................... 5-14
libraries.................................................................. 4-55
local labels ............................................................ 4-15
[M]
method for specifying data .................................... 4-21
Index-2
WARRANTY
Please confirm the following product warranty details before using this product.