Schneider Electric PL7 Micro/Junior/Pro - Detailed Reference manual
Διαφήμιση
Διαφήμιση
Reference manual
PL7 Micro/Junior/Pro
Detailed description of
Instructions and Functions
TLX DR PL7 xx eng
2
TLX DR PL7 xxE
Related Documentation
Related Documentation
At a Glance This manual is in three volumes: l l
Volume 1: Description of the PL7 software l l
General
Ladder language l Instruction List language l Structured Text language l Grafcet language l DFB function blocks l Functional modules
Volume 2: Detailed description of Instructions and Functions l l l l l l l l Basic instructions l Advanced instructions l Bit objects and system words
Volume 3: Appendices
Differences between PL7-2/3 and PL7-Micro/Junior
Checklist
List of reserved words
Compliance with IEC 1131-3 standard
OLE Automation server
Performance
TLX DR PL7 xxE
3
Related Documentation
4
TLX DR PL7 xxE
Table of Contents
About the book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Chapter 1
Standard instructions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.1
1.2
1.3
Operation of timer function block %TMi in TON mode . . . . . . . . . . . . . . . . . . . . 35
Operation of timer function block %TMi in TOF mode . . . . . . . . . . . . . . . . . . . . 36
Operation of timer function block %TMi in TP mode . . . . . . . . . . . . . . . . . . . . . . 37
Programming and configuring timer function blocks . . . . . . . . . . . . . . . . . . . . . . 38
Introduction to the up-down counter function block . . . . . . . . . . . . . . . . . . . . . . 41
How the up/down counter function block works . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.4
Introduction to numerical processing using integers . . . . . . . . . . . . . . . . . . . . . . 48
5
6
1.5
Chapter 2
Advanced instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
2.1
2.2
Configuring and programming monostable function blocks . . . . . . . . . . . . . . . . . 84
Register function block operation in FIFO mode . . . . . . . . . . . . . . . . . . . . . . . . . 88
Register function block operation in LIFO mode . . . . . . . . . . . . . . . . . . . . . . . . . 89
Programming and configuring the Register block function . . . . . . . . . . . . . . . . . 90
Introduction to the Cyclic Programmer (Drum) function block . . . . . . . . . . . . . . . 92
Cyclic Programmer (Drum) function block operation . . . . . . . . . . . . . . . . . . . . . . 94
Programming and configuring the cyclic programmer function block (Drum) . . . 96
Programming the series 7 timer in "Delay on engagement" mode . . . . . . . . . . 101
Programming the series 7 timer in "Delay on release" mode . . . . . . . . . . . . . . 102
Programming the series 7 timer in "Delay accumulated on engagement" mode103
Programming the series 7 timer in "Delay accumulated on release" mode . . . . 105
Introduction to the vertical comparison operation block . . . . . . . . . . . . . . . . . . 107
Operation of vertical comparison operation block . . . . . . . . . . . . . . . . . . . . . . . 108
2.3
2.4
Rounding off a floating point value in ASCII format. . . . . . . . . . . . . . . . . . . . . . 128
2.5
Integer Conversion Instructions <-> Floating . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Word conversion Instructions <--> double word . . . . . . . . . . . . . . . . . . . . . . . . 140
2.6
Table search functions for maxi and mini values . . . . . . . . . . . . . . . . . . . . . . . 156
Number of occurrences of a value in a table . . . . . . . . . . . . . . . . . . . . . . . . . . 158
2.7
Format of a string of characters or table of characters . . . . . . . . . . . . . . . . . . . 168
Numeric conversion functions <---> ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
2.8
Time management instructions: Dates, Times, Duration . . . . . . . . . . . . . . . . . 199
Format of parameters in the time management instructions . . . . . . . . . . . . . . . 200
7
8
Addition / Subtraction of a duration from a time of day . . . . . . . . . . . . . . . . . . . 214
Conversion of a date into a string of characters . . . . . . . . . . . . . . . . . . . . . . . . 222
Conversion of a complete date into a string of characters. . . . . . . . . . . . . . . . . 224
Conversion of a duration into a string of characters . . . . . . . . . . . . . . . . . . . . . 226
Conversion of a time of day to a character string . . . . . . . . . . . . . . . . . . . . . . . 228
Conversion of a duration into HHHH:MM:SS. . . . . . . . . . . . . . . . . . . . . . . . . . . 230
2.9
2.10
Up/down counting with overshoot signaling. . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
2.11
2.12
Writing Data to the Extended Archiving Zone . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Reading Data to the Extended Archiving Zone . . . . . . . . . . . . . . . . . . . . . . . . . 272
2.13
Chapter 3
System objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
3.1
Description of System Bits %S8 to %S16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
Description of system bits %S17 to %S20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Description of system bits %S21 to %S26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
Description of system bits %S30 to %S59 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
Description of system bits %S60 to %S69 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Description of System Bits %S70 to %S92 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Description of system bits %S94 to %S99 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
Description of system bits %S100 to %S119 . . . . . . . . . . . . . . . . . . . . . . . . . . 295
3.2
Description of system words %SW0 to %SW11 . . . . . . . . . . . . . . . . . . . . . . . . 297
Description of system words %SW12 to %SW18 . . . . . . . . . . . . . . . . . . . . . . . 299
Description of system words %SW20 to %SW25 . . . . . . . . . . . . . . . . . . . . . . . 300
Description of system words %SW30 to %SW35 . . . . . . . . . . . . . . . . . . . . . . . 301
Description of system words %SW48 to %SW59 . . . . . . . . . . . . . . . . . . . . . . . 302
Description of system words %SW60 to %SW62 . . . . . . . . . . . . . . . . . . . . . . . 304
Description of system words %SW63 to %SW65 . . . . . . . . . . . . . . . . . . . . . . . 307
Description of system words %SW66 to %SW69 . . . . . . . . . . . . . . . . . . . . . . . 308
Description of system words %SW80 to %SW89 . . . . . . . . . . . . . . . . . . . . . . . 310
Description of system words %SW96 to %SW97 . . . . . . . . . . . . . . . . . . . . . . . 311
Description of system words %SW98 to %SW109 . . . . . . . . . . . . . . . . . . . . . . 312
Description of system words %SW124 to %SW127 . . . . . . . . . . . . . . . . . . . . . 314
Description of system words %SW128 to %SW143 . . . . . . . . . . . . . . . . . . . . . 315
Description of system words %SW144 to %SW146 . . . . . . . . . . . . . . . . . . . . . 316
Description of system words %SW147 to %SW152 . . . . . . . . . . . . . . . . . . . . . 318
Description of system words %SW155 to %SW162 . . . . . . . . . . . . . . . . . . . . . 322
Index
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
9
10
About the book
At a Glance
Document Scope This manual describes the programming languages for Micro, Premium and Atrium
PLCs.
Validity Note The update of this publication takes into account the functions of PL7V4.3.
Nevertheless it can be used to set up earlier versions of PL7.
Revision History
3
4
Rev. No.
1
2
Changes
First product
Use this new version if you update maps in this product
Please create a new version of the map if you modify it for Version 2 of this product
This version takes in order the new EF functions.
For PL7 V4.3
User Comments We welcome your comments about this document. You can reach us by e-mail at
TLX DR PL7 xxE
11
About the book
12
TLX DR PL7 xxE
Standard instructions
1
Introduction
Contents of this section
This chapter describes the standard instructions for PL7 language.
What's in this
Chapter?
This Chapter contains the following Sections:
Section
1.1
1.2
1.3
1.4
1.5
Topic
Introduction to the PL7 instructions
Boolean instructions
Predefined function blocks
Numerical processing on integers
Program instructions
Page
TLX DR PL7 xxE
13
Standard instructions
1.1
Introduction to the PL7 instructions
PL7 Instructions
General
Basic instructions
All PL7 languages use the same instruction set.
Boolean instructions and function blocks are represented differently according to the language.
Example: loading instruction
Instruction
Loading
Ladder language Instruction list
LD
Structured text
:=
Digital instructions (arithmetic, logic, task, etc.) have similar representations.
l l
This document gives a detailed description of all the instructions; these have been put into two sets for the sake of simplicity: the basic instructions (See
the advanced instructions (See
These comprise all the basic boolean instructions, the predefined function blocks, and the arithmetic and logic instructions on integers.
Advanced instructions
These comprise instructions which address advanced programming needs. These instructions are of two types: l PL7 language, these increase the possibilities for language processing using specific functions (manipulation of character strings, time management, etc.), l tasks, these offer functions specific to the task to be processed, for example functions for the communication task: l PRINT to send a character string type message to a terminal or printer, l l
SEND to send a message to an application,
PID PID regulating function.
14
TLX DR PL7 xxE
1.2
Boolean instructions
Introduction
Aim of this section
What's in this
Section?
This section describes the PL7 language boolean instructions
This Section contains the following Maps:
Topic
Bit object instructions
Definition of the main boolean objects
Loading instructions
Assign instructions
AND Logic Instruction
OR Logic Instruction
Exclusive OR Instructions
Standard instructions
Page
TLX DR PL7 xxE
15
Standard instructions
Bit object instructions
Bits instructions The following instructions apply to bit objects.
Designation
:=
OR
AND
XOR
NOT
RE
FE
SET
RESET
Function
Assignment of a bit boolean OR boolean AND boolean exclusive OR
Inversion
Rising edge
Falling edge
Set to 1:
Set to 0:
Bits table instructions
The following instructions apply to bits table objects.
Designation
Table:= Table
Table:= Word
Word:= Table
Table:= Double word
Double word: = Table
COPY_BIT
AND_ARX
OR_ARX
XOR_ARX
NOT_ARX
BIT_W
BIT_D
W_BIT
D_BIT
LENGHT_ARX
Function
Assignment between two tables
Assignment of a word to a table
Assignment of a table to a word
Assignment of a double word to a table
Assignment of a table to a double word
Copy of a bits table in a bits table
AND between two tables
OR between two tables exclusive OR between two tables
Negation in a table
Copy of a bits table in a word table
Copy of a bits table in a double word table
Copy of a word table in a bits table
Copy of a double word table in a bits table
Calculation of the length of a table by the number of elements
16
TLX DR PL7 xxE
Standard instructions
Definition of the main boolean objects
Description
Bits
The following table describes the main boolean objects.
Description Examples
Immediate values
0 or 1 (False or True) 0
Inputs/outputs These bits are the "logic images" of the electrical states of the inputs/ outputs.
They are stored in the data memory and updated each time the task in which they are configured is polled.
%I23.5
%Q51,2
Internal
Note: The unused input/output bits may not be used as internal bits.
The internal bits are used to store the intermediary states during execution of the program.
%M200
System
Function blocks
The system bits %S0 to %S127 monitor the correct operation of the PLC and the running of the application program.
%S10
The function block bits correspond to the outputs of the function blocks or DFB instance.
These outputs may be either directly connected or used as an object.
%TM8.Q
Word extracts With the PL7 software it is possible to extract one of the 16 bits of a word object.
%MW10:X5
Grafcet steps and macrosteps
The Grafcet status bits of the steps, macro-steps and macro-step steps are used to recognize the Grafcet status of step i, of macro-step j or of step i of the macro-step j.
%X21
%X5.9
Write access
_
No
Yes
Yes
Accordin g to i
No
Accordin g to the type of words
Yes
Yes
TLX DR PL7 xxE
17
Standard instructions
Loading instructions
Role
Ladder
P
N
The following table describes the role of each of the instructions.
Instruction list Structured text
LD :=
Description
Normally open contacts: contact made
(result at 1) when the controlling bit object is at state 1.
Timing diagram
Opérande
Résultat
LDN :=NOT Normally closed contacts: contact made
(result at 1) when the controlling bit object is at state 0.
Opérande
Résultat
LDR
LDF
:=RE
:=FE
Rising edge contacts: detect controlling bit object changing from 0 to 1.
Setting the result to 1 takes 1 cycle to complete.
Falling edge contacts: detect controlling bit object changing from 1 to 0.
Setting the result to 1 takes 1 cycle to complete.
Opérande
Résultat
Opérande
Résultat
Permitted operands
Ladder
The following table gives a list of the operands used for these instructions.
Instruction list Structured text
LD :=
Operands
%I,%Q,%M,%S,%BLK,%•:Xk, %Xi, (True and False in instruction list or structured text)
LDN
LDR
:=NOT
:=RE
%I,%Q,%M,%S,%BLK,%•:Xk, %Xi, (True and False in instruction list or structured text)
%I,%Q,%M
P
LDF :=FE %I,%Q,%M
N
18
TLX DR PL7 xxE
Example in ladder
Standard instructions
The following example shows how to program the loading instructions in ladder format.
%I1.1
%Q2.3
%M0 %Q2.2
%Q2.4
%I1.2
P
%I1.3
N
%Q2.5
Example in instruction list
The following example shows how to program the loading instructions in Instruction
List language.
LD %I1.1
ST %Q2.3
LDN %M0
ST %Q2.2
LDR %I1.2
ST %Q2.4
LDF %I1.3
ST %Q2.5
Example in structured text
The following example shows how to program the loading instructions in structured text language.
%Q2.3:=%I1.1;
%Q2.2:=NOT %M0;
%Q2.4:=RE %I1.2;
%Q2.5:=FE %I1.3;
TLX DR PL7 xxE
19
Standard instructions
Assign instructions
Role The following table describes the role of each of the instructions.
Timing diagram Language data
Instruction list Structured text
Description
ST := to the direct coils the associated bit object takes the value of the equation result.
Operand
Result
STN :=NOT
S
R
S
R
SET
RESET to the negated coils: the associated bit object takes the inverse value of the equation result.
Operand
Result to the set coils: the associated bit object is set when the result of the equation is set Operand
Result to the trigger coils: the associated bit object is clear when the result of the equation is set.
Operand
Result
Permitted operands
The following table gives a list of the operands used for these instructions
Language data
Instruction list
ST
Structured text
:=
Operands
%I,%Q,%M,%S,%•:Xk
S
R
STN
S
R
:=NOT
SET
RESET
%I,%Q,%M,%S,%•:Xk
%I,%Q,%M,%S,%•:Xk,%Xi
Only in the preliminary processing.
%I,%Q,%M,%S,%•:Xk,%Xi
Only in the preliminary processing.
20
TLX DR PL7 xxE
Example in language data
Standard instructions
The following example shows how to program the assign instructions in language data.
%I1.1
%Q2.3
%Q2.2
%I1.2
%Q2.4
S
%Q2.4
R
Example in instruction list
The following example shows how to program the assign instructions in instruction list language.
LD %I1.1
ST %Q2.3
STN %Q2.2
S %Q2.4
LD %I1.2
R %Q2.4
Example in structured text
The following example shows how to program the assign instructions in structured text language.
%Q2.3 := %I1.1;
%Q2.2 := NOT %I1.1;
IF %I1.1 THEN
SET %Q2.4;
END_IF;
IF %I1.2 THEN
RESET %Q2.4;
END_IF;
TLX DR PL7 xxE
21
Standard instructions
AND Logic Instruction
Role
Language data
P
N
The following table describes the role of each of the instructions
Instruction list Structured text
AND AND
Description
AND logic between the operand and the previous instruction’s Boolean result
Timing diagram
AND
%I1.1
ANDN AND
(NOT...)
AND logic between the operand inverse and the previous instruction’s Boolean result
%M1
%Q2.3
ANDN
%M2
ANDR
%I1.2
%Q2.2
ANDR AND (RE...) AND logic between the operand’s rising edge and the previous instruction’s Boolean result
(2) Setting during 1 cycle
ANDF
%I1.3
%I1.4
%Q2.4 (2)
ANDF
AND (FE...) AND logic between the operand’s falling edge and the previous instruction’s Boolean result
(2) Setting during 1 cycle
%M3
%I1.5
%Q2.5 (2)
22
TLX DR PL7 xxE
Standard instructions
Permitted operands
Language data
The following table gives a list of the operands used for these instructions
Instruction list Structured text
AND AND
ANDN
ANDR
AND (NOT...)
AND (RE...)
Operands
%I, %Q, %M, %S, %BLK, %•:Xk, %Xi
True (1)/False (0) in instruction list language or structured text
%I, %Q, %M, %S, %BLK, %•:Xk, %Xi
True (1)/False (0) in instruction list language or structured text
%I, %Q, %M
P
ANDF AND (FE...) %I, %Q, %M
N
Example in language data
The following example shows how to program the AND Logic instructions in language data.
%I1.1 %M1 %Q2.3
%M2 %I1.2
%I1.3 %I1.4
P
%M3 %I1.5
N
%Q2.2
%Q2.4
%Q2.5
TLX DR PL7 xxE
23
Standard instructions
Example in instruction list
The following example shows how to program the AND Logic instructions in the
Instruction List.
LD %I1.1
AND %M1
ST %Q2.3
LD %M2
ANDN %I1.2
ST %Q2.2
LD %I1.3
ANDR %I1.4
ST %Q2.4
LD %M3
ANDF %I1.5
ST %Q2.5
Example in structured text language
The following example shows how to program the AND Logic instructions in structured text language.
%Q2.3:=%I1.1 AND %M1;
%Q2.2:=%M2 AND (NOT%I1.2);
%Q2.4:=%I1.3 AND (RE%I1.4);
%Q2.5:=%M3 AND (FE%I1.5);
24
TLX DR PL7 xxE
Standard instructions
OR Logic Instruction
Role
Language data
P
N
The following table describes the role of each of the instructions
Structured text Description Instruction list
OR OR OR logic between the operand and the previous instruction’s Boolean result
Timing diagram
OR
%I1.1
%M1
ORN
ORR
OR (NOT...)
OR (RE...)
OR logic between the operand inverse and the previous instruction’s Boolean result
OR logic between the operand’s rising edge and the previous instruction’s Boolean result
%Q2.3
ORN
%M2
%I1.2
%Q2.2
ORR
ORF OR (FE...) OR logic between the operand’s falling edge and the previous instruction’s Boolean result.
%I1.3
%I1.4
%Q2.4
ORF
%M3
%I1.5
%Q2.5
TLX DR PL7 xxE
25
Standard instructions
Permitted operands
Language data
The following table gives a list of the operands used for these instructions
Instruction list Structured text
OR OR
ORN
ORR
OR (NOT...)
OR (RE...)
Operands
%I, %Q, %M, %S, %BLK, %•:Xk, %Xi
True (1)/False (0) in instruction list language or structured text
%I, %Q, %M, %S, %BLK, %•:Xk, %Xi
True (1)/False (0) in instruction list language or structured text
%I, %Q, %M
P
ORF OR (FE...) %I, %Q, %M
N
Example in language data
The following example shows how to program the OR Logic instructions in language data.
%I1.1
%Q2.3
%M1
%M2
%I1.2
%I1.3
%Q2.2
%Q2.4
%I1.4
P
%M3
%I1.5
N
%Q2.5
26
TLX DR PL7 xxE
Example in instruction list
Standard instructions
The following example shows how to program the OR Logic instructions in the
Instruction List.
LD %I1.1
OR %M1
ST %Q2.3
LD %M2
ORN %I1.2
ST %Q2.2
LD %I1.3
ORR %I1.4
ST %Q2.4
LD %M3
ORF %I1.5
ST %Q2.5
Example in structured text language
The following example shows how to program the OR Logic instructions in structured text language.
%Q2.3:=%I1.1 OR %M1;
%Q2.2:=%M2 OR (NOT%I1.2);
%Q2.4:=%I1.3 OR (RE%I1.4);
%Q2.5:=%M3 OR (FE%I1.5);
TLX DR PL7 xxE
27
Standard instructions
Exclusive OR Instructions
Role
Instruction list
XOR
The following table describes the role of each of the instructions
Structured text Description Timing diagram
XOR OR Exclusive between the operand and the previous instruction’s Boolean result
XOR
%I1.1
XORN
XORR
XORF
XOR (NOT...) OR Exclusive between the operand inverse and the previous instruction’s Boolean result
XOR (RE...)
XOR (FE...)
OR Exclusive between the operand’s rising edge and the previous instruction’s Boolean result
OR Exclusive between the operand’s falling edge and the previous instruction’s Boolean result.
%M1
%Q2.3
XORN
%M2
%I1.2
%Q2.2
XORR
%I1.3
%I1.4
%Q2.4
XORF
%M3
%I1.5
%Q2.5
Note: There are no specific graphic elements for the OR exclusive in language data. However the OR exclusive can be programmed by using a combination of opening and closing contacts (see example below).
28
TLX DR PL7 xxE
Standard instructions
Permitted operands
The following table gives a list of the operands used for these instructions
Instruction list Structured text
XOR XOR
XORN
XORR
XORF
XOR (NOT...)
XOR (RE...)
XOR (FE...)
Operands
%I, %Q, %M, %S, %BLK, %•:Xk, %Xi
%I, %Q, %M, %S, %BLK, %•:Xk, %Xi
%I, %Q, %M
%I, %Q, %M
Example in language data
The following example shows how to program the OR Exclusive instructions in language data.
%I1.1 %M1 %Q2.3
%M1 %I1.1
%M2 %I1.2
%I1.2 %M2
%Q2.2
Example in instruction list
The following example shows how to program the OR Exclusive instructions in the
Instruction List:
LD %I1.1
XOR %M1
ST %Q2.3
LD %M2
XORN %I1.2
ST %Q2.2
LD %I1.3
XORR %I1.4
ST%Q2.4
LD %M3
XORF %I1.5
ST %Q2.5
TLX DR PL7 xxE
29
Standard instructions
Example in structured text language
The following example shows how to program the OR Exclusive instructions in structured text language.
%Q2.3:=%I1.1 XOR%M1;
%Q2.2:=%M2 XOR (NOT%I1.2);
%Q2.4:=%I1.3 XOR (RE%I1.4)
%Q2.5:=%M3 XOR (FE%I1.5);
Note: The brackets are optional but make the program readable
30
TLX DR PL7 xxE
Standard instructions
1.3
Predefined function blocks
Introduction
Aim of this subsection
What's in this
Section?
This sub-section describes PL7 language predefined function Blocks
This Section contains the following Maps:
Topic
Introduction to timer function block %TMi
%TMi timer block operating mode
Operation of timer function block %TMi in TON mode
Operation of timer function block %TMi in TOF mode
Operation of timer function block %TMi in TP mode
Programming and configuring timer function blocks
Specific cases of operation for the series 7 timer
Introduction to the up-down counter function block
How the up/down counter function block works
Configuration and programming
Page
TLX DR PL7 xxE
31
Standard instructions
Introduction to timer function block %TMi
General
Illustration
The timer has 3 operating modes: l l l
TON
TOF
TP
: is used to manage delays on engagement (on delays),
: is used to manage delays on release (off delays),
: is used to create a pulse of precise duration.
The delays or pulse periods are programmable and may or may not be modified via the terminal.
The following is the graphic presentation of the timer function block:
%TMi
IN Q
MODE : TON
TB:1mn
TM.P:9999
MODIF:Y
Characteristics
32
The timer has the following characteristics:
Characteristic
Timer number
Mode
Time base
Current value
Preset value
Terminal adjustment
(MODIF)
Address Value
%TMi 0 to 63 for a TSX 37, 0 to 254 for a TSX 57
TON
TOF
• default delay on engagement (on delay)
• delay on release (off delay)
TP
TB
%TMi.V
%TMi.P
Y/N
• monostable
1mn (default), 1s, 100ms, 10ms (16 timers max. at 10ms).
The shorter the time base, the more precise the timer.
Word which increases from 0 to %TMi.P on completion of the timer cycle. May be read, tested, but not written in a program (%TMi.V may be modified by the terminal).
0-%TMi.P-9999. Word which may be read, tested and written in a program. Is set at the value of 9999 by default.
The period or delay generated is equal to %Tmi.P x TB.
Y: possibility to modify the preset %Tmi.P value in adjust mode.
N: cannot be accessed in adjust mode.
TLX DR PL7 xxE
Standard instructions
Characteristic
Input (instruction)
"Activation"
Output "Timer"
Address Value
IN Starts the timer on rising edge (TON or TP mode) or falling
"Activation" edge (TOF mode).
Q %Tmi.Q associated bit; setting to 1 depends on the TON,
TOF or TP function.
TLX DR PL7 xxE
33
Standard instructions
%TMi timer block operating mode
Description The following table shows the operating modes specific to the timer block.
Impact...
of a cold restart of a warm restart
Description
(%S0=1), causes the current value to set to 0, the output %TMi.Q to set to 0 while the preset value is reset to the value defined on configuration.
(%S1=1) has no effect on the timer’s current value, or on the preset value. The current value does not change during power outage.
of a shift to stop mode, deactivation of a task or execution of a breakpoint
does not freeze the current value.
a program jump of the alteration to the preset value
Not polling the instructions in which the timer block is programmed does not freeze the current %TMi.V value; this continues to increase to %TMi.P.
Similarly, the %TMi.Q bit associated with the Q output of the timer block maintains its normal operation and can thus be tested by another instruction. However the output, which is directly connected to the block output, is not activated since it is not polled by the PLC
The alteration to the preset value by instruction or in adjust mode is only taken into account at the next activation of the timer.
The alteration to the preset value in the variables editor is only taken into account after a cold restart (%S0=1).
Note: it is advisable to test the %TMi.Q bit once only during the program.
34
TLX DR PL7 xxE
Standard instructions
Operation of timer function block %TMi in TON mode
General
Illustration
Operation in TONmode is used to manage the on delays.
The timing diagram illustrates the operation of the timer in TON mode.
(1)
IN
(3) (4)
Q
%TMi.P
%TMi.V
(2)
(5)
Operation The following table shows the operation of the timer in TON mode.
Phase
1
2
3
4
5
Description
The timer is started with a rising edge on the IN input
The current value %TMi.V of the timer increases from 0 to %TMi.P by one unit at each pulse of the time base TB
The %TMi.Q output bit moves to 1 when the current value has reached %TMi.P
The %TMi.Q output bit stays at 1 while the IN input is at 1.
When the IN input is at 0, the timer is stopped even if it is still running: %TMi.V takes the value 0.
TLX DR PL7 xxE
35
Standard instructions
Operation of timer function block %TMi in TOF mode
General
Illustration
Operation in TOF mode is used to manage the off delays.
The timing diagram illustrates the operation of the timer in TOF mode.
IN
(2)
Q
%TMi.P
%TMi.V
(1)
(3)
(4)
(5)
(1)
Operation The following table shows the operation of the timer in TOF mode.
Phase
1
2
3
4
5
Description
The current value %TMi.V takes 0, on a rising edge of the IN input (even if the timer is running)
The %TMi.Q output bit moves to 1.
The timer is started with a falling edge on the IN input.
The current value %TMi.P increases to %TMi.P by one unit at each pulse of the time base TB.
The %TMi.Q output bit returns to 0 when the current value has reached %TMi.P
36
TLX DR PL7 xxE
Standard instructions
Operation of timer function block %TMi in TP mode
General
Illustration
Timer operation in TP mode is used to manage the creation of a pulse of precise duration (monostable funtion).
The timing diagram illustrates the operation of the timer in TP mode.
(1)
IN
(2) (6)
Q
%TMi.P
%TMi.V
(3)
(4)
(5)
Operation The following table shows the operation of the timer in TP mode.
Phase
1
2
3
4
5
6
Description
The timer is started with a rising edge on the IN input
The %TMi.Q output bit moves to 1.
The current value %TMi.V of the timer increases from 0 to %TMi.P by one unit at each pulse of the time base TB
The %TMi.Q output bit returns to 0 when the current value has reached %TMi.P.
When the IN input and the %TMi.Q output are at 0, %TMi.V takes the value 0.
This monostable cannot be reactivated.
TLX DR PL7 xxE
37
Standard instructions
Programming and configuring timer function blocks
General
Configuration
Programming timer function blocks is always the same regardless of the selected user mode.
The choice between TON, TOF or TP operation is made in the variables editor.
This involves setting the following parameters :
Parameter
Mode
TB
%TMi.P
MODIF
Values
TON, TOF or TP.
1min, 1s, 100ms or 10ms
0 to 9999
Y or N
Programming in ladder language
The following program illustrates the use of a timer function block in ladder language.
%TM1
%I1.1
%Q2.3
IN Q
Example in instruction list
The following program illustrates the use of a timer function block in instruction list .
LD %I1.1
IN %TM1
LD
ST
%TM1.Q
%Q2.3
38
TLX DR PL7 xxE
Example in structured text
Standard instructions
The following program illustrates the use of a timer function block in structured text language.
IF RE %I1.1 THEN
START %TM1 ;
ELSIF FE %I1.1 THEN
DOWN %TM1 ;
END_IF;
%Q2.3 := %TM1.Q
;
The instruction START %TMi , generates a rising edge on the IN input of the timer block.
The instruction DOWN %TMi , generates a falling edge on the IN input of the timer block.
TLX DR PL7 xxE
39
Standard instructions
Specific cases of operation for the series 7 timer
Specific cases l l l l l
Incidence of a "cold restart" : (%S0 = 1) loads the preset value (defined by the variables editor) in the current value and sets the output %Ti.D at 0, as the preset value, which may have been altered by the terminal, has been lost.
Incidence of a "warm restart" : there is no incidence of (%S1=1) on the current value of the timer.
Incidence of a switch to stop mode : the switch of the PLC into stop mode does not freeze the current value. The same applies when the current task is deactivated or on execution of a breakpoint.
Incidence of a program jump : not polling the network in which the timer block is programmed does not freeze the current value %Ti.V which continues to decrease to 0. Similarly, the %Ti.D and %Ti.R bits associated with the D and R outputs maintain their normal operation and can thus be tested on another network. However the spools which are directly connected to the block outputs are not activated since they are not polled by the PLC.
Test of %Ti.D and %Ti.R bits : these bits can change state during the cycle.
40
TLX DR PL7 xxE
Introduction to the up-down counter function block
General
Illustration
This function block is used for: l l
Counting an event
Down counting events
These operations can happen simultaneously
Graphic representation of the up-down counter function block
R E
S
C.P. : 9999
CU
MODIF : Y
CD
D
F
Standard instructions
Characteristics The up-down counter has the following characteristics:
Characteristics
Number Counter
Current value
Preset value
Terminal adjustment
(MODIF)
Y/N
Input (instruction)
"Resetting to zero"
Input (instruction)
"Preset"
Input (instruction)
"Counting"
Input (instruction)
"Down counting"
Address
%Ci
%Ci.V
%Ci.P
R
S
CU
CD
Value
0 to 31 for a TSX 37, 0 to 254 for a TSX 57
Increased or decreased word according to the CU and
CD inputs. May be read, and tested but not written by the program. Can be set by the terminal
0
≤
%Ci.P
≤
9999 . Word which can be read, tested and written (with a default value of 9999) l l
Y: possibility to modify the preset value in adjust mode
N: cannot be accessed in adjust mode
On state 1: %Ci.V = 0
On state 1: %Ci.V = %Ci.P
%Ci.V increment on rising edge
%Ci.V decreased on rising edge
TLX DR PL7 xxE
41
Standard instructions
Characteristics
Output Overrun
Preset Output reached
Output Overrun
Address Value
E (Empty) When %Ci.V switches from 0 to 9999 (set when %Ci.V is equal to 9999), the associated bit %Ci.E=1 is cleared if the counter continues counting down. When there is an overrun, bit %S18 switches to 1
D (Done) Associated bit %Ci.D=1, when %Ci.V=%Ci.P.
F (Full) When %Ci.V switches from 9999 to 0 (set when %Ci.V is equal to 0), the associated bit %Ci.F is cleared if the counter continues counting up. When there is an overrun, bit %S18 switches to 1
42
TLX DR PL7 xxE
Standard instructions
How the up/down counter function block works
Operation Counting Function
Action
A rising edge appears on the CU counting input
The %Ci.V current value is equal to the
%Ci.P preset value
Result
The %Ci.V current value is increased by one unit the %Ci.D output bit "preset reached" associated to output D switches to set
The %Ci.V current value switches from
9999 to 0
The counter continues counting
The %Ci.F output bit (counting overrun) switches to set
The %Ci.F output bit (counting overrun) is reset to clear
Down counting Function
Action
A rising edge appears on the CU down counting input
Result
The %Ci.V current value is decreased by one unit
The %Ci.V current value switches from 0 to
9999
The %Ci.E output bit (counting overrun) switches to set
The counter continues down counting The %Ci.E output bit (counting overrun) is reset to clear
Up/Down Counting Function
Action
A rising edge appears on the CU counting input
Result
The %Ci.V current value is increased by one unit
A rising edge appears on the CU down counting input
The two inputs set simultaneously
The %Ci.V current value is decreased by one unit
The current value remains unchanged
Reset to zero
When Result
Input R is set (this input has priority over the other inputs)
The %Ci.V current value is forced to 0. Outputs
%Ci.V, %CI.D and %CI.F are at 0
TLX DR PL7 xxE
43
Standard instructions
Preset
Action
Input S "Preset" is in state 1 and input R
"Reset to zero"
Result
The %Ci.V current value takes the %Ci.P value and the %Ci.D output switches to 1
Note
Specific cases
On reset to 0 (input R or instruction R): l In language data, the CU and CD input archives are updated with the connected values l In instruction list language and in structured text language, the archives of the CU and CD inputs are not updated; each input keeps the value it had before the call
Different specific cases
Action l Cold reset (%S0=1) l l l l l
Warm restart (%S1=1)
Switch to stop
Task deactivation
Breakpoint execution
Modification of the %Ci.P preset
Result l l l
The %Ci.V current value is set to zero
The %Ci.E, %Ci.D and %Ci.F output bits are set to zero
The preset value is initialized to the value defined during configuration l No incidence on the current counter value
(%Ci.V) l Modifying the preset value by instruction or during recalibration is taken into account during the application’s block management
(activating one of the inputs
44
TLX DR PL7 xxE
Standard instructions
Configuration and programming
Example
Configuration
Programming
Counting of number of parts = 5000. Each pulse on the input %I1.2 (when the internal %M0 bit is at 1) causes the incrementation of the counter %C8 up to the final preset counter value %C8 (bit %C8.D=1). The input %I1.1 resets the counter to zero.
The following are the parameters to be entered using the variables editor: l l
%Ci.P, fixed at 5000 in this example
MODIF: Y
Ladder language
%I1.2
%I1.1
%M0
%C8
R E
S
C.P : 5000
CU
MODIF : Y
CD
D
F
%C8.D
%Q2.0
Instruction list language
LD %I1.1
R %C8
LD %I1.2
AND %M0
CU %C8
LD %C8.D
ST %Q2.0
Structured text language
TLX DR PL7 xxE
45
Standard instructions
IF %I1.1 THEN
RESET %C8
END_IF;
%M1:=%I1.2 THEN
UP %C8 ;
END_IF;
%Q2.0: = %C8.D
; l l l l
In structured text language, 4 instructions are used to program the up/down counter function blocks:
RESET %Ci: Resets the current value to zero.
PRESET
UP
DOWN
%Ci: Loads the preset value in the current value
%Ci: Increments the current value
%Ci: Lowers the current value
In the case of structured text language, the CU and CD inputs archive is reset to zero when the instructions UP and DOWN are used. It is therefore the user who must manage the rising edges for these two instructions.
46
TLX DR PL7 xxE
Standard instructions
1.4
Numerical processing on integers
Introduction
Aim of this subsection
What's in this
Section?
This sub-section describes PL7 language numeric processing on integers
This Section contains the following Maps:
Topic
Introduction to numerical processing using integers
Comparison instructions
Assign instructions
Word assignment
Arithmetic instructions on integers
Logic instructions
Numerical expressions
Page
TLX DR PL7 xxE
47
Standard instructions
Introduction to numerical processing using integers
General The numerical instructions described in this chapter are for the following objects: l l l bit tables words double words
Instructions for other object types are described in the "Advanced instructions (See
Advanced instructions, p. 79)" section.
Programming in ladder language
Numerical instructions are entered in the blocks: l l l l placed in the test zone for the comparison blocks placed in the action zone for the operation blocks
These blocks can contain: a simple expression; e.g.: OP3:=OP1+OP2 a complex expression; e.g.: OP5:=(OP1+OP2)*OP3-OP4.
Programming example:
%Q2.2
%MW50>10
%I1.0
%MW10:=%KW0:=%KW0+10
%I1.2
N INC%MW100
Programming in
Instruction List language
The instructions are placed between square brackets.
They are executed if the Boolean result from the test instruction preceding the numerical instruction is set to 1.
Programming example:
LD [%MW50>10]
ST %Q2.2
LD %I1.0
[%MW10:=%KW0+10]
LDF %I1.2
[INC%MW100]
48
TLX DR PL7 xxE
Standard instructions
Programming in structured text language
Numerical instructions are entered directly.
The conditional IF instruction enables these numeric instructions to be conditioned by a Boolean expression.
Programming example :
%Q2.2:=%MW50 > 10;
IF %I1.0 THEN
%MW10:=%KW0 + 10;
END_IF;
IF FE %I1.2 THEN
INC %MW100;
END_IF;
Operand list
Abbreviations
%M:L
%I:L
%Q:L
Abbreviations
Imm. val.
%MW
%KW
%SW
%IW
%QW
%NW
%BLK
%Xi.T
Abbreviations
Imm. val.
Bit table list
Complete addressing
%Mi:L
%Ixy.i:L
%Qxy.i:L
%Xi:L or %Xj.i:L
Word type internal bit table input bit table output bit table step bit table
Access
R/W
R/W
R/W
R
List of simple format words
Complete addressing
-
%MWi
%KWi
%SWi
%IWxy.i(.r)
%QWxy.i(.r)
%NW{j}k e.g.: %TMi.P
%Xi.T or %Xj.i.T
Word type immediate values internal word internal constant system word input bit output word common word word extracted from a standard function block or function block step activity time
Access Indexed form
R -
R/W
R
%MWi[index]
%KWi[index]
R/W (1) -
R -
R/W
R/W
R/W (2) -
-
-
R %Xi.T[index]
(1) writing according to i.
(2) writing according to word type, for example: preset values (%Ci.P can be written whilst the current %Ci.V values can only be read).
List of double words
Complete addressing
-
Word type immediate values
Access Indexed form
R -
TLX DR PL7 xxE
49
Standard instructions
Abbreviations
%MD
%KD
%SD
%ID
%QD
Complete addressing
%MDi
%KDi
%SDi
%IDxy.i(.r)
%QDxy.i(.r)
Word type double internal word internal double constant double system word double input word double output word
(1) only double word %SD18
Access Indexed form
R/W
R
%MDi[index]
%KDi[index]
R/W (1)
R
R/W
-
-
-
Note: There are other types of words and double words, such as %MWxy.i
%KWxy.i and %MDxy.i %KDxy.i associated with specific applications, these double words behave like the double words %MWi %KWi and %MDi %KDi respectively.
Note: Implicit word <--> double word conversions
The PL7 software authorizes operations to be mixed using words and double words. Conversions into one or other format, are done in an implicit manner, one operation making a double word intervene or several immediate values are internally executed automatically in double format.
50
TLX DR PL7 xxE
Standard instructions
Comparison instructions
General
Structure
Comparison instructions are used to compare two operands.
l l l l l
>
>=
<
: tests whether operand 1 is greater than operand 2,
: tests whether operand 1 is less than operand 2,
<=
=
: tests whether operand 1 is greater than or equal to operand 2,
: tests whether operand 1 is less than or equal to operand 2,
: tests whether operand 1 is different from operand 2.
Ladder language
%Q2.3
%MW10>100
%M0 %Q2.2
%MW20<%KW35
%I1.2
%Q2.4
%MW30>=%MW40
Note: The comparison blocks program themselves in the test zone.
Instruction list language
LD [%MW10>100]
ST %Q2.3
LD %M0
AND [%MW20<%KW35]
ST %Q2.2
LD %I1.2
OR [%MW30>=%MW40]
ST %Q2.4
TLX DR PL7 xxE
51
Standard instructions
Syntax
Note: The comparison is made between the square brackets following the LD,
AND and OR instructions.
Structured text language
%Q2.3:=%MW10>100 ;
%Q2.2:=%M0 AND (%MW20<%KW35) ;
%Q2.4:=%I1.2 OR (%MW30>=%MW40) ;
Note: The brackets are optional but improve the readability of the program
Comparison instruction operators
Operators
>,>=,<,<=,=,<>
Syntax
Op1 Operator Op2
Operands
Type
Indexable words
Non-indexable words
Indexable double words
Non-indexable double words
Operands 1 and 2 (Op1 and Op2)
%MW,%KW,%Xi.T
Imm.val.,%IW,%QW,%SW,%NW,%BLK, Numeric Expr.
%MD,%KD
Imm.val.,%ID,%QD,%SD,Numeric expr.
Note: l in ladder language, the comparison operation can also be performed with the
Vertical comparison block (See Introduction to the vertical comparison
l in instruction list language, the comparison instructions can be used within brackets.
52
TLX DR PL7 xxE
Standard instructions
Assign instructions
General
Bit table assignment
Structure
They change an operand Op2 into an operand Op1
Assignment operations can be performed: l l on bit tables, on words or double words.
Several assign instructions can be linked up in the same block:
Op1:=Op2:=Op3:=Op4:=...
l l l
The following bit table (("Table type PL7 Objects" - Reference Manual Volume
1))operations can be performed: bit table -> bit table (E.g.: 1) bit table -> word or double word (indexed) (E.g.: 2) word or double word (indexed) -> bit table (E.g.: 3)
Ladder language
%Q2.0:8:=%M10:8
%I3.2
%MW100:=%I1.0:16
%I3.3
P %M100:16:=%KW0
Instruction list language
Example 1 :
LD TRUE
[%Q2.0:8]
Example 2 :
LD %I3.2
[%MW100:=%I1.0:16]
Example 3 :
LDR %I3.3
[%MW100:16=%KW0]
TLX DR PL7 xxE
53
Standard instructions
Syntax
Rules of use
Structured text language
Examples 1 and 2 :
%Q2.0:8:=%M10:8;
IF %I3.2 THEN
%MW100:=%I1.0:16;
END_IF;
Example 3 :
IF RE %I3.3 THEN
%M100:16:=%KW0;
END_IF;
Operator and syntax
Operator
:=
Syntax
Op1:=Op2
Operands
Type
Bit table
Indexable words
Non-indexable words
Operand 1 (Op1)
%M:L,%Q:L,%I:L
%MW
%QW,%SW,%NW,%BLK
Indexable double words
Non-indexable double words
%MD
%QD,%SD
Operand 2 (Op2)
%M:L,%Q:L,%I:L,%Xi:L
%MW,%KW,%Xi.T
Imm.val.,
%IW,%QW,%SW,%NW,%BLK,Num.
expr.
%MD,%KD
Imm.val., %ID,%QD,%SD,Numeric expr.
l l l the home and destination bit tables are not necessarily the same length. If the home table is longer than the destination table, only the least significant bits are transferred. If the destination table is the longer, it is completed with some 0s
For a bit table -> word (or double word) assignment: the table bits are transferred into the word (the least significant word for a double word) by commencing on the right (first table bit in the 0 bit of the word). The word bits not concerned by the transfer (length< 16 or 32) are set to 0
For a word -> bit table assignment: the word bits are transferred from the right (bit
0 of the word into the first table bit)
54
TLX DR PL7 xxE
Standard instructions
Word assignment
General
Structure
Assignment operations can be performed on the following words: l l l word (indexed) -> word (indexed) or double word (indexed) (E.g.: 1) double word (indexed) -> double word (indexed) or word (indexed) (E.g.: 2) immediate value -> word (indexed) or double word (indexed) (E.g.: 3)
Ladder language
%SW112:=%MW100
%I3.2
%MD0:=%KD0[%MW20]
%I3.3
P %MW10:=100
Instruction list language
Example 1 :
LD TRUE
[%SW112:=%MW100]
Example 2 :
LD %I3.2
[%MD10:=%KD0[%MW20]]
Structured text language
Example 3 :
IF %I3.3 THEN
%MW10:=100;
END_IF;
TLX DR PL7 xxE
55
Standard instructions
Syntax Operator and syntax
Operator
:=
Syntax
Op1:=Op2
Operands
Type
Indexable words
Non-indexable words
Indexable double words
Non-indexable double words
Operand 1 (Op1)
%MW
%QW,%SW,%NW,%BLK
%MD
%QD,%SD
Operand 2 (Op2)
%MW,%KW,%Xi.T
Imm.Val.,%IW,%QW,%SW,%NW,
%BLK, Num.expr.
%MD,%KD
Imm.Val.,%ID,%QD,%SD, Numeric expr.
Note: Word <--> double word conversions are made implicitly, during double word
--> word assignment, if the double word value cannot be contained in the word, the
%S18 bit is set to 1.
It is possible to perform multiple assignments. Example: %MW0:=%MW2:=%MW4
Caution, in the example %MD14:=%MW10:=%MD12 , it is not necessarily the case that %MD14:=%MD12 , as during the assignment to %MW10, the double word loses its significance due to the double word-single word conversion.
56
TLX DR PL7 xxE
Standard instructions
Arithmetic instructions on integers
General These instructions are used to perform an arithmetic operation between two operands or on one operand.
List of instructions:
/
*
+
addition of two operands subtraction of two operands multiplication of two operands division of two operands
SQRT square root of an operand
INC incrementation of an operand
DEC
ABS
REM remainder from the division of 2 operands decrementation of an operand absolute value of an operand
Structure Ladder language
%M0
%MW0:=%MW10+100
%I3.2
%MW0:=SQRT(%MW10)
%I3.3
P INC %MW100
Instruction list language
LD %M0
[%MW0:=%MW10+100]
LD %I3.2
[%MW0:=SQRT(%MW10)]
LD %I3.3
[INC %MW100]
Structured text language
TLX DR PL7 xxE
57
Standard instructions
IF %M0 THEN
%MW0:=%MW10+100;
END_IF;
IF %I3.2 THEN
%MW0:=SQRT(%MW10);
END_IF;
IF RE %I1.3 THEN
INC %MW100;
END_IF
Syntax Operator and syntax
Operator
+ , , * , / , REM
SQRT , ABS
INC , DEC
Syntax
Op1:=Op2 Operator Op3
Op1:=Operator(Op2)
Operator Op1
Operands
Type
Indexable words
Non-indexable words
Indexable double words
Non-indexable double words
Operand 1 (Op1)
%MW
%QW,%SW,%NW,%BLK
%MD
%QD,%SD
Operand 2 (Op2)
%MW,%KW,%Xi.T
Imm.Val.,%IW,%QW,%SW,%NW,
%BLK, Num.expr.
%MD,%KD
Imm.Val.,%ID,%QD,%SD, Numeric expr.
Note: The INC and DEC operations cannot be used in numerical expressions.
58
TLX DR PL7 xxE
Rules of use
Standard instructions l Addition: Capacity overflow during operation
If the result exceeds the limits: l -32768 or +32767 for an single length operand, l -2.147.483.648 or +2.147.483.647 for a double length operand.
The %S18 bit (overflow) is set to 1. The result is then not significant.
Bit %S18 is managed by a user program:
Example in ladder language:
%M0
%MW0:=%MW1+%MW2
%S18
%MW10:=%MW0
%S18
%MW10:=32767
%S18
R
Example in instruction list language:
LD %M0
[%MW0:=%MW1+%MW2]
LDN %S18
[%MW10:=%MW0]
LD %S18
[%MW10:=32767]
R %S18]
Example in structured text language:
IF %M0 THEN
%M0:=%MW1+%MW2;
END_IF;
IF %S18 THEN
%MW10:=32767;RESET %S18;
ELSE
%MW10:=%MW0;
END_IF;
TLX DR PL7 xxE
59
Standard instructions l l l
If %MW1 =23241 and %MW2=21853, the integer result (45094) cannot be expressed in a 16 bit word, bit %S18 is set to 1 and the result obtained (-20442) is incorrect. In this example, when the result is greater than 32767, its value is fixed at 32767.
Multiplication:
Capacity overflow during operation.
If the result exceeds the storage word capacity, the %S18 bit (overflow) is set to
1 and the result is not significant.
Division/remainder of the division:
Dividing by 0.
If the divisor is equal to 0, division is impossible and the %S18 system bit is set to 1. The result is then incorrect.
Capacity overflow during operation.
Extracting the square root:
The square root can only be extracted on positive values. The result is then always positive. If the operand of the square root is negative, the %S18 system bit is set to 1 and the result is incorrect.
l l
Note: l When an operation does not result in an integer (i.e. with a division or square root), the result is truncated (rounded down to the nearest whole number).
The sign of the remainder of the division (REM) is that of the numerator.
The %S18 system bit is managed by the user program. It is set to 1 by the PLC.
It must be reset to 0 by the program in order to be reused (see example below).
60
TLX DR PL7 xxE
Standard instructions
Logic instructions
General The associated instructions are used to perform a logic operation between two operands or on one operand.
List of instructions:
AND
OR
XOR
NOT
AND (bit by bit) between two operands logical OR (bit by bit) between two operands exclusive OR (bit by bit) between two operands logical complement (bit by bit) of an operand
Structure Ladder language
%M0
%MW0:=%MW10 AND 16#FF00
%I1.3
P
%MW0:=%KW5 OR %MW10
%MW102:=NOT %MW100
Instruction list language:
LD %M0
[%MW0:=%MW10 AND 16#FF00]
LD TRUE
[%MW0:=%KW5 OR %MW10]
LD %I1.3
[%MW102:=NOT%MW100]
Structured text language:
TLX DR PL7 xxE
61
Standard instructions
Syntax
IF %M0 THEN
%MW0:=%MW10 AND 16#FF00;
END_IF;
%MW0:=%KW5 OR %MW10 ;
IF %I1.3 THEN
%MW102:=NOT %MW100 ;
END_IF;
Operator and syntax
Operator
AND , OR , XOR
NOT
Syntax
Op1:=Op2 Operator Op3
Op1:=NOT Op2
Operands
Type
Indexable words
Non-indexable words
Indexable double words
Non-indexable double words
Operand 1 (Op1)
%MW
%QW,%SW,%NW
%MD
%QD,%SD
Operand 2 and 3 (Op2, Op3)
%MW,%KW,%Xi.T
Imm.Val.,%IW,%QW,%SW,%NW,
%BLK, Num.expr.
%MD,%KD
Imm.Val.,%ID,%QD,%SD, Numeric expr.
62
TLX DR PL7 xxE
Standard instructions
Numerical expressions
General
Application rules l The operands of a numerical expression can be either of single or double length:
Example: l l
%MW6*%MW15+SQRT(%DW6)/(%MW149[%MW8])+%KD29)AND16#FF
An operand or an operation with only one operand can be preceded by a + or – sign (+ sign by default)
Example:
SQRT(%MW5)*-%MW9
All word objects can be used in an arithmetic expression. It is possible to index certain words.
Instruction execution priority
The numerical expression is composed of several numerical operands and the arithmetic and logic operators described above.
There can be an unlimited number of operators and operands in an arithmetic expression.
Example:
%MW25*3-SQRT(%MW10)+%KW8*(%MW15 + %MW18)AND16#FF
The priority of the different instructions is respected in the numerical expression.
Instructions are executed in the following order:
Execution order:
6
7
4
5
8
2
3
Rank
1
Instruction
Instruction to an operand
*,/,REM
+,-
<,>,<=,>=
=,<>
AND
XOR
OR
Example:
TLX DR PL7 xxE
63
Standard instructions
Brackets
The instructions below are carried out in numerical order:
SQRT (%MW3) + %MW5 * 7 AND %MW8 OR %MW5 XOR %MW10
1 2
3
4 5
6
Brackets are used to change the order of priority. It is recommended that they be used to structure numerical expressions.
The example below shows the order of execution of instructions between brackets
((%MW5 AND %MW6) + %MW7) * %MW8
1
2
3
64
TLX DR PL7 xxE
1.5
Program instructions
Introduction
Aim of this subsection
What's in this
Section?
This sub-section describes PL7 language program instructions.
This Section contains the following Maps:
Topic
Subroutine call
Subroutine return
Jump in the program
End of program instructions
Program stop
Event masking/unmasking instructions
NOP Instructions
Standard instructions
Page
TLX DR PL7 xxE
65
Standard instructions
Subroutine call
General
Structure
The subroutine call instruction is used to call a subroutine module from the same task.
Ladder language :
%M8 SR10
C
Rules
Instruction list language :
LD %M8
SR10
Structured text language :
IF %M8 THEN
SR10 ;
END_IF; l l l l
The subroutine call can only be performed if the subroutine module has been created beforehand
A subroutine is returned on the action immediately following the subroutine call instruction
A subroutine can call another subroutine; the number of calls in a cascade is limited to 8
The subroutines are assigned to a task, they can only be called from that particular task
66
TLX DR PL7 xxE
Principle Subroutine performance principle:
Subroutine Module
SR10
Call SR10
Standard instructions
Subroutine Module
SR12
Call SR10
TLX DR PL7 xxE
67
Standard instructions
Subroutine return
General
Structure
The subroutine return instruction is reserved for the subroutine modules and is used for returning to the calling module, if the Boolean result from the previous test instruction is set to 1.
Ladder language
%M8
<RETURN>
Rules of use
Instruction list language
LD %M8
RETC
Structured text language
IF %M8 THEN
RETURN ;
END_IF;
Instruction list language incorporates the following additional instructions: l RETCN : return of the subroutine if the Boolean result from the previous test instruction is set to 0.
l RET : unconditional return of the subroutine.
The subroutine return instruction is implicit at the end of each subroutine, but can be used for returning to the calling module before the end of the subroutine.
68
TLX DR PL7 xxE
Examples Ladder language
%MW5>3
%M8
<RETURN>
%MD26:=%MW4*%KD6
Standard instructions
Instruction list language
LD [%MW5>3]
RETC
LD %M8
[%MD26:=%MW4*%KD6]
Structured text language
IF (%M5>3) THEN
RETURN ;
END_IF;
IF %M8 THEN
%MD26:=%MW4*%KD6;
END_IF;
TLX DR PL7 xxE
69
Standard instructions
Jump in the program
General
Structure
Ladder
%M8
%I1.0
%L10
%M20
%I1.0
Jump instructions are used to go to a programming line with an %Li label address: l l
JMP : unconditional program jump
JMPC : program jump if the instruction’s Boolean result from the previous test is set at 1 l JMPCN : program jump if the instruction’s Boolean result from the previous test is set at 0. %Li is the label of the line to which the jump has been made (address i from 1 to 999 with maximum 256 labels)
JUMPC
%L10
>>
%Q2.5
%M5
Instruction list language
_
LD %M8
JMPC %L10
LD %I1.0
ST %Q2.5
Jump to label
%L10, if %M8 =1
----------
%L10:
LD %M20
ST %M5
LD %I1.0
AND %I1.2
ST %Q2.1
%I1.2
%Q2.1
Structured text language
IF %M8 THEN
JUMP %L10;
END_IF;
%Q2.5:=%I1.0;
------
%L10:
%M5:=%M20;
%Q2.1:=%I1.0 AND %I1.2;
Jump to label %L10 if %M8=1
70
TLX DR PL7 xxE
Ladder
%M2
%I2.0
JUMPCN
%L20
>>
%Q3.5
Standard instructions
Instruction list language
LD %M2
JMPCN %L20
LDN %I2.0
ST %Q3.5
----------
%L20:
LD %M30
ST %M6
Jump to label
%L20, if %M2=0
%L20
%M30
Strctured text language
IF NOT %M2 THEN
JUMP %L20;
END_IF;
%Q3.5:=NOT%I2.0;
------
%L20:
%M6:=%M30;
Jump to label %L10 if %M8=1
TLX DR PL7 xxE
71
Standard instructions
JMP
Ladder
%L40
>>
%Q3.5
%L20
%I2.1
%L40
%M20
Instruction list language
JMP %L40
%L20:
LD %I2.1
ST %Q3.5
---------
%L40:
LD %M20
ST %M5
Unconditional jump to label %L40
Rules
Structured text language
JUMP %L40;
%L20
%Q3.5:=%I2.1;
Unconditional jump to label %L40
------
%L40:
%M5:=%M20; l A program jump takes place inside one particular programming entity (a master task MAIN module, subroutine %SRi, etc.) l A program jumps to a downstream or upstream programming line
If it is an upstream jump, close attention should be paid to the program execution time: the program execution time is then extended and can lead to a task period overrun for the task including the upstream jump.
72
TLX DR PL7 xxE
Standard instructions
End of program instructions
General The END, ENDC and ENDCN instructions can be used to define when the program l l l cycle ends:
END : unconditional end of program
ENDC : end of program if Boolean result of the previous test instruction is 1
ENDCN : end of program if Boolean result of the previous test instruction is 0.
Note: The instructions END , ENDC and ENDCN must not be used in program sections for Premium and Micro PLCs. They must under all circumstances be replaced by the instructions JMP, JMPC and JMPCN respectively with a jump to an end of program tag. No compliance check is performed by the PL7 programming software
Rules
Example
By default (normal mode), when the end of program instruction is activated, the outputs are updated and the PLC moves onto the next cycle.
If polling is periodic, the outputs are updated, and the PLC waits until the end of the period and then moves onto the next cycle.
Note: These instructions can only be used in Instruction List language in the master task.
Instruction List language
Example 1 :
LD %M1
ST %Q2.1
LD %M2
ST %Q2.2
-------
END
Example 2 :
TLX DR PL7 xxE
73
Standard instructions
LD %M1
ST %Q2.1
LD %M2
ST %Q2.2
------
LD %I2.2
ENDC
LD %M2
ST %Q2.2
------
END l l
If %I1.2 = 1, polling of program ends
If %I1.2 = 0, polling continues until the next END instruction
74
TLX DR PL7 xxE
Standard instructions
Program stop
General
Structure
The HALT instruction in an application program is used to stop its execution
(stopping all the tasks). Yhis has the effect of freezing the variable objects of this program.
To restart a program stopped in the aforementioned manner, it must be initialized
(using the PL7 INIT command). The instructions following the HALT instruction are then not executed.
Ladder language
%M10
<HALT>
Instruction list language
LD %M10
HALT
Structured text language
IF %M10 THEN
HALT ;
END_IF;
TLX DR PL7 xxE
75
Standard instructions
Event masking/unmasking instructions
General
Structure
The masking/unmasking instructions are used to mask or unmask all the events which activate event tasks.
l MASKEVT : global event masking. The events are stored by the PLC, but the associated event tasks remain inactive whilst the masking operation is enabled l
(until the next UNMASKEVT instruction).
UNMASKEVT : global event unmasking. The events that were stored during the masking period are processed. The event processing mechanism is operational until the next MASKEVT instruction.
Ladder language
%M0
MASKEVT()
%M8
UNMASKEVT()
Instruction list language
LD %M0
[MASKEVT()]
LD %M8
[UNMASKEVT()]
Structured text language
IF %M0 THEN
MASKEVT() ;
END_IF;
IF %M8 THEN
UNMASKEVT() ;
END_IF;
76
TLX DR PL7 xxE
Standard instructions
NOP Instructions
General The NOP instruction does not perform any action. It is used to "reserve" lines in a program and thus makes it possible to write instructions without any modification of line numbers.
TLX DR PL7 xxE
77
Standard instructions
78
TLX DR PL7 xxE
Advanced instructions
2
Introduction
Contents of this section
This section describes the advanced instructions for PL7 language.
What's in this
Chapter?
This Chapter contains the following Sections:
2.8
2.9
2.10
2.11
2.12
2.13
Section
2.1
2.2
2.3
2.4
2.5
2.6
2.7
Topic
Introduction to advanced instructions
Advanced predefined function blocks
Shift instructions
Floating point instructions
Numerical conversion instructions
Word table instructions
Character string instructions
Time management instructions: Dates, Times, Duration
Bit table instructions
"Orpheus" functions: Shift registers, counter
Timing functions
Data storage functions
Grafcet functions
Page
TLX DR PL7 xxE
79
Advanced instructions
2.1
Introduction to advanced instructions
Introduction to the advanced instructions
General
Instruction families
The instructions described in this chapter are intended for advanced programming needs.
They have the same effects in any language. Only the syntax is different.
These are: l l either standard software instructions, or functions considered as extensions of the software.
Instructions for the Function type ranges are used to enhance the basic software l l using specific programming instructions.
Operations on character strings, word tables, etc.
Task functions: Communication, Regulation, Operator dialog, etc.
l l l l l l
They consist of the following families:
Character strings,
Integer tables,
Managing dates, times, periods,
Conversions,
Bit tables,
"Orpheus" functions.
l l l l
The following families are described in the tasks concerned:
Communication,
Regulation,
Operator dialog,
Movement command.
Note: Function type instructions imply additional application memory occupation
(only when they are actually used in the program). This memory occupation is to be taken into account by the programmer for each function, whatever their user number, and this is in accordance with the maximum memory size of the reserve
PLC.
80
TLX DR PL7 xxE
2.2
Advanced predefined function blocks
Advanced instructions
Introduction
Aim of this subsection
What's in this
Section?
This sub-section describes PL7 language advanced predefined function blocks
This Section contains the following Maps:
Topic
Introduction to Monostable function block
Monostable block function operation
Configuring and programming monostable function blocks
Introduction to Register function block
Register function block operation in FIFO mode
Register function block operation in LIFO mode
Programming and configuring the Register block function
Introduction to the Cyclic Programmer (Drum) function block
Cyclic Programmer (Drum) function block operation
Programming and configuring the cyclic programmer function block (Drum)
Introduction to Timer function block series 7
Timer function block series 7 operation
Programming the series 7 timer in "Delay on engagement" mode
Programming the series 7 timer in "Delay on release" mode
Programming the series 7 timer in "Delay accumulated on engagement" mode
Programming the series 7 timer in "Delay accumulated on release" mode
Introduction to the vertical comparison operation block
Operation of vertical comparison operation block
Page
TLX DR PL7 xxE
81
Advanced instructions
Introduction to Monostable function block
General
Illustration
The monostable function block is used to create a pulse of precise duration. This duration is programmable and may or may not be modifiable using the terminal
Graphic representation of the monostable function block
%MNi
S
TB: 1mn
R
MN.P:9999
MODIF:Y
Characteristics Characteristics of the monostable function block
Characteristic Address
Number %MNi
Time base
Current value
TB
%MNi.V
Preset value
MODIF modification
Input "Start" (or instruction)
Output
"Monostable"
Value
0 to 7 for a TSX 37, 0 to 254 for a TSX 57
1min, 1s, 100ms, 10ms (1mn by default)
%MNi.P
Y/N
S (Start)
Word which decreases from %MNi.P to 0 on completion of the timer cycle. May be read, tested but not written.
0
≤
%MNi.P
≤
9999 . Word which can be read, tested and written. The pulse period (PRESET) is equal to: %MNi.P x
TB l l
Y: possibility to modify the preset value in adjust mode
N: cannot be accessed in adjust mode
On the rising edge %MNi.V = %MNi.P then %MNi.V decreases to 0
R (Running) The associated %MNi.R bit is at 1 if %MNi.V > 0
(monostable "elapsing") %MNi.R = 0 si %MNi.V = 0
82
TLX DR PL7 xxE
Advanced instructions
Monostable block function operation
General
Illustration
The monostable function block is used to generate a pulse of precise duration.
Timing diagram illustrating the monostable operation
(1) (1)
Input “start” S : S
(1) (1)
Current value
%MNi.V :
Output “running” R :
%MNi.P
%MNi.V
(3)
R
(2)
(3)
(2)
PRESET
(4)
PRESET (4)
(3)
(2) (2)
PRESET
(4)
Operation Description of monostable operation
Phase
1
2
3
4
Description
From the appearance of a rising edge on the monostable S input, the current value %MNi.V takes the preset value %MNi.P
The current value %MNi.V decreases to 0 by one unit at each pulse of the time base TB.
The output bit %MNi.R (Running) associated with the R output moves to state
1 when the current value %MNi.V is different from 0.
When the current value %MNi.V = 0, the output bit %MNi.R returns to state 0.
TLX DR PL7 xxE
83
Advanced instructions
Configuring and programming monostable function blocks
Example
Configuration
Programming
Flashing for variable cyclic periods: the preset value of each monostable defines the duration of each pulse.
%Q3.0
5s 5s
2s 2s l l l
The following parameters are to be entered in the variables editor:
TB: 1mn, 1s, 100ms, 10ms or 1 ms (100ms in this example)
%MNi.P: 0 à 9999 (%MN0.P = 50 et %MN1.P = 20 in this example
MODIF: Y or N
Ladder
%MN1.R
%Q3.0
S
%MN0
R
%MN0.R
S
%MN1
R
Instruction list language
LDN %MN1.R
S %MN0
LD %MN0.R
ST %Q3.0
LDN %MN0.R
S %MN1
Structured text language
84
TLX DR PL7 xxE
Observations
Specific cases
Advanced instructions
%M0:=NOT %MN1.R;
IF RE %M0 THEN
START %MN0 ;
END_IF;
%Q3.0:= %MN0.R
;
%M1:=NOT %MN0.R
;
IF RE %M1 THEN
START %MN1 ;
END_IF;
In the example below, the output %Q3.0 is set at state 1 for 5s (%MN0.P) and reset at state 0 for 2s (%MN1.P).
l l
In structured text language, the instruction START%MNi is used to initiate execution of the monostable function block. This instruction forces a rising edge on the S input of the block, which has the effect of resetting the function block.
Use of this instruction must therefore be pulse-based.
The monostable function may also be carried out by the %TMi function block in
TP mode (See
Operation of timer function block %TMi in TP mode, p. 37).
l l l l l
Incidence of a "cold restart" : (%S0 = 1) loads the preset value %MNi.P in the current value %MNi.V. Since the preset value, which may have been altered by the terminal, has been lost, the ouput %MNi.R is reset to 0.
Incidence of a "warm restart" : There is no incidence of (%S1) on the current value of the monostable (%MNi.V).
Incidence of a switch into stop mode, deactivation of the task and breakpoint : the switch of the PLC into stop mode does not freeze the current value. The same applies when the current task is deactivated or on execution of a breakpoint.
Incidence of a program jump : Not polling the network in which the monostable block is programmed does not freeze the current value %MNi.V which continues to decrease to 0. Similarly, the %MNi.R bit associated to the monostable block output maintains its normal operation and can thus be tested on another network.
However the spools which are directly connected to the block output (ex %Q3.0) are not activated since they are not examined by the PLC.
Test of %MNi.R bit : this bit can change state during its cycle.
TLX DR PL7 xxE
85
Advanced instructions
Introduction to Register function block
General
Illustration
A register is a memory block which is used to store up to 255 words of 16 bits in two l l different ways: queue (first in, first out) called FIFO stack (First In, First Out) queue (last in, first out) called the LIFO stack (Last In, First Out)
The following is the graphic presentation of the register function block:
%Ri
I
R
MODE:LIFO
LEN:16
E
F
O
Characteristics Characteristics of the Register function block:
Characteristic Address Value
Number
Mode
Length
%Ri 0 to 3 for a TSX 37, 0 to 254 for a TSX 57
FIFO LIFO Stack Queue (choice by default)
LEN Number of words of 16 bits (1< LEN< 255) making up the register memory block.
Input word
Output word
Input (or instruction)
"Store"
Input (or instruction)
"Destore"
%Ri.I
%Ri.O
I (In)
O (Out)
Access word for register. May be read, tested and written.
On a rising edge, causes an information word to be stored in the word %Ri.O
On a rising edge, causes the contents of the word %Ri.I to be stored
On a rising edge, causes an information word to be stored in the word %Ri.O
Input (or instruction)
"Resetting to zero"
R (Reset) At state 1, initiates the register
Output "Empty" E (Empty) E associated %Ri.E bit indicates that the register is empty.
May be tested.
86
TLX DR PL7 xxE
Advanced instructions
Characteristic Address
Output "Full" F (Full)
Value
The associated %Ri.F bit indicates that the register is full.
May be tested.
Note: When the two inputs I and O are activated simultaneously, storage is carried out before the destocking.
TLX DR PL7 xxE
87
Advanced instructions
Register function block operation in FIFO mode
General
Operation
In FIFO mode (First IN – First Out), the first information input in the register stack is the first output.
This table describes the operation of the FIFO mode
Step
1
2
Description
On a rising edge on the input I or on activation of instruction I, the content of the previously loaded input word %Ri.I is stored at the top of the
20
%Ri.I
20
80
60
50
stack. When the stack is full, loading is impossible and the system bit %S18 switches to 1.
On a rising edge on the input O or on activation of instruction O, the information word which is lowest in the queue is stored in the output word %Ri.O.
20
80
60
50
%Ri.O
50
3 Once the word has been transferred into
Ri.O, the contents of the register are shifted
80
down one step. When the register is empty
60
%Ri.O
50
(output E=1) destocking is impossible. The output word %Ri.O moves no more and maintains its value. The stack can be reset at any time (state 1 on input
R or activation of instruction R).
88
TLX DR PL7 xxE
Advanced instructions
Register function block operation in LIFO mode
General
Operation
In LIFO mode (Last In - First Out), the last information input in the register stack is the first output.
This table describes the operation of the LIFO mode
Step
1
Description
On a rising edge on the input I or on activation of instruction I, the contents of the previously loaded input word %Ri.I is stored at the top of the stack.
When the stack is full, loading is impossible and the system bit %S18 switches to 1.
20
%Ri.I
2 On input O rising edge or on instruction O activation, the information word which is highest in the stack (last input information) is stored in the output word %Ri.O.
20
80
3
50
As soon as the word is transferred into Ri.O, the following register word is available. When the register is empty (output E=1) destocking is impossible. The output word
%Ri.O moves no more and maintains its value. The stack
80
60
50
can be reset at any time (state
1 on input R or activation of instruction R).
20
80
60
50
20
%Ri.O
20
%Ri.O
TLX DR PL7 xxE
89
Advanced instructions
Programming and configuring the Register block function
Example
Configuration
Programming
The following example shows the loading of %R2.I with the word %MW34 on request from input %I1.2, if the register R2 is not full (%R2.F=0). The input request to the register is assured by %M1. The output request is made by input %I1.3 and the storage of %R2.O in %MW20 is carried out if the register is not empty
(%R2.E=0).
The following parameters are to be entered in the configuration editor: l l
Number: 1 to 4 for a TSX 37, 1 to 255 for a TSX 57
Length: 1 to 255
The operation mode (FIFO or LIFO) is to be entered in the variables editor.
Ladder
%R2
R
%M1
I
%I1.3
O
%I1.3 %R2.E
E
F
%MW20:=%R2.O
%I1.2 %R2.F
%R2.I:=%MW34
%M1
Instruction list language
LD %M1
I %R2
LD %I1.3
O %R2
LD %I.3
ANDN %R2.E
[%MW20:= %R2.O
]
LD %I.2
ANDN %R2.F
[%R2.I:=%MW34]
ST %M1
90
TLX DR PL7 xxE
Advanced instructions
Note
Specific cases
Structured text language
IF RE %M1 THEN
PUT %R2 ;
END_IF;
IF RE %I1.3 THEN
GET %R2 ;
END_IF;
IF (%I1.3 AND NOT %R2.E
) THEN
%MW20:= %R2.O
;
END_IF;
%M1:=%I1.2 AND NOT %R2.F
;
IF %M1 THEN
%R2.I
:=%MW34;
END_IF;
In structured text language, 3 instructions are used to program the register function blocks: l l l
RESET
PUT
GET
%Ri: Initialize register
%Ri: Causes the content of word %R.I to be stored in the register.
%Ri: Causes an information word to be stored in word %Ri.O
The instructions PUT and GET create a rising edge, on the function block inputs I and O respectively. Use of this instruction must therefore be pulse-based l l l
Incidence of a "cold" restart : (%S0=1) initializes the contents of the register.
The output bit %Ri.E associated with the output E is set to 1.
Incidence of a "warm" restart : There is no incidence of (%S1=1) on the l l contents of the register, or on the status of the output bits.
On reset to 0 (input R or instruction R)
In ladder, the input I and O logs are updated with the wired values.
l
In instruction list language, the input I and O logs are not updated: each retains the value which it had before the call.
In structured text language, the input I and O logs are updated with 0.
TLX DR PL7 xxE
91
Advanced instructions
Introduction to the Cyclic Programmer (Drum) function block
General
Illustration
With a similar operating principle to the cam programmer, the cyclic programmer changes step according to external events. At each step, the upper point of a cam gives a command processed by the automatic operation In the case of a cyclic programmer, these upper points are symbolized by a state 1 at the level of each step and are assigned to the output bits %Qi.j or internal bits %Mi called the command bits.
Graphic representation of the Cyclic Programmer function block (Drum)
%DRi
R
%TB:1mn
U
LEN:16
F
Characteristics Characteristics of the cyclic programmer function block
Characteristic
Number
Number of steps
Time base
Time out or duration of current step
Address
%DRi
LEN
TB
%DRi.V
Number of step in progress
%DRi.S
Input "return to step
0"
R (RESET)
Input "advance" U (UP)
Value
0 to 7 for a TSX 37, 0 to 254 for a TSX 57
1 to 16 (16 by default).
1mn, 1s, 100ms, 10ms (1mn by default).
0 ≤ %DRi.V
≤ 9999 . Word which can be reset to zero at each change of step. May be read, tested but not written. The pulse period is equal to %DRi.V x TB
0 ≤ %Di.S
≤ 15 . Word which can be read and tested.
Can only be written from an immediate value.
At state 1, initialize the programmer at step 0
Output F (FULL)
On rising edge, causes the programmer to advance one step and the command bits to be updated.
Indicates that the last defined step is in progress. The associated %DRi.F bit can be tested (%DRi.F=1 if
%DRi.S=number of configured steps -1).
92
TLX DR PL7 xxE
Characteristic
Status of a step
Command bits
Address
%DRi.Wj
%DRi.Wj
Advanced instructions
Value
16 bit word defining the status of step j of the programmer i. May be read, tested but not written.
Outputs or internal bits associated with the step (16 command bits)
Note: The %S18 bit switches to 1, if an unconfigured step is written.
TLX DR PL7 xxE
93
Advanced instructions
Cyclic Programmer (Drum) function block operation
General
Illustration
The cyclic programmer comprises: l a matrix of constant data (cams) organized in columns: in steps from 0 to N-1 (N being the number of configured steps), each column gives the status of the step l in the form of 16 pieces of binary information listed from 0 to F, a list of command bits (1 per line) corresponding to the outputs %Qxy.i or to the internal bits %Mi. When a step is in progress, the command bits take the binary status defined for this step.
The table below summarizes the main characteristics of the cyclic programmer
(programmer configured with 16 steps)
BIT
%DRO Nbr pas : 16
32
4
5
6
0
1
2
B
C
9
A
7
8
D
E
Step
0 1 2 3 4 5 6 7 8 9 10 11 12130 14 15
0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 %Q2.1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 %Q2.3
1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 %Q3.5
0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 %M0
0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 %M10
0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 %Q2.6
0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 %Q2.7
1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 %Q2.8
0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 %M20
0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 %M30
0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 %Q2.9
0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 %Q3.6
1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 %M5
1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 %M6
0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 %M7
Address
Control Bits
OK Cancel
In the example below, for step 1, the command bits %Q2.1;%Q3.5
;%Q2.8;%Q3.6;%M5 and %M6 are set at state 1; the other command bits are set at
0.
Diagram of operation
94
TLX DR PL7 xxE
TLX DR PL7 xxE
Advanced instructions
Input
Input
U:
R:
No. not %DRi.S
0 1 2 3
Output %DRi.F
Time envelope
%DRi.V
N-1 0 1 2 0 1
The number of the step in progress is incremented at each rising edge on the input
U (or activation of instruction U). This number may be modified by program.
95
Advanced instructions
Programming and configuring the cyclic programmer function block (Drum)
Example
Configuration
In this example, the first 5 outputs from %Q2.0 to %Q2.4 are activated one after the other, each time the input %I1.1 is set to 1. The input I1.0 resets the outputs at step
0.
l l l
The following information is defined in the variables editor: number of steps: (LEN:5), time base (TB: 1mn), state of outputs (command bits) for each step of the programmer.
Step:
0 1 2 3 4
0 : 1 0 0 0 0 %Q2.0
1 : 0 1 0 0 0 %Q2.1
Bits : 2 : 0 0 1 0 0 %Q2.2
3 : 0 0 0 1 0 %Q2.3
4 : 0 0 0 0 1 %Q2.4
Programming Ladder language
%I1.0
%I1.1
%DR1
R
%TB:1mn
U
LEN:5
F
%Q2.8
Instruction list language
LD %I1.0
R %DR1
LD %I1.1
U %DR1
LD %DR1.F
ST %Q2.8
96
TLX DR PL7 xxE
Advanced instructions
Observations
Structured text language
IF %I1.0 THEN
RESET %DR1 ;
END_IF;
IF RE %I1.1 THEN
UP %DR1 ;
END_IF;
%Q2.8:= %DR1.F
; l l
In structured text language, 2 instructions are used to program the cyclic programmer function blocks:
RESET %DRi: Initialize the programmer to step 0,
UP %DRi: Causes the programmer to advance one step and the command bits to be updated. This instruction creates a rising edge on the function block input
U; its use must therefore be pulse-based.
l l
Note: On reset to 0 (input R, instruction R or instruction RESET):
In ladder language, the input U archive is updated with the connected values.
In instruction list language, the input U archive is not updated; it retains the values it had before the call.
l In structured text language, the U archive is updated with 0.
Specific cases l l l l
Incidence of a "cold restart": (%S0=1) resets the programmer to step 0 (and updates the command bits).
Incidence of a "warm restart": (%S1=1) resets the command bits, according to the step which is in progress.
Incidence of a program jump, deactivation of the task and breakpoint: not polling the cyclic programmer does not cause the command bits to reset to 0.
The command bits : are only updated when the step changes or on a warm or cold restart.
TLX DR PL7 xxE
97
Advanced instructions
Introduction to Timer function block series 7
General
Illustration
This timer function block which is compatible with blocks of series 7 PL7-2/3 is used to give timed commands for specific actions. This value of this time delay is programmable and can be modified if necessary by the terminal.
Graphic representation of the timer function block series 7
%Ti
E
TB : 1mn
C
D
R
T.P:9999
MODIF:Y
Characteristics
Characteristic
Number
Time base
Current value
Preset value
Characteristics of the timer function block series 7
Address
%Ti
TB
%Ti.V
%Ti.P
MODIF modification Y/N
Input "Activation"
Input "Control"
Output "Timer cycle complete"
Output "Timer cycle complete"
E(Enable)
C(Control)
D(Done)
R(Running)
Value
0 to 63 for a TSX 37, 0 to 254 for a TSX 57
1min, 1s, 100ms, 10ms (1mn by default)
Word which decreases from %Ti.P to 0 on completion of the timer cycle. May be read, tested but not written.
0
≤
%Ti.P
≤
9999 . Word which can be read, tested and written. Is set at the value of 9999 by default. The pulse period is equal to %Ti.P x TB.
l l
Y: possibility to modify the preset value in adjust mode.
N: cannot be accessed in adjust mode.
At state 0, reset the timer %Ti.V = %Ti.P.
At state 0, freeze the current value %Ti.V.
The associated bit %Ti.D = 1, if the timer cycle is complete %Ti.V = 0.
The associated bit %Ti.R = 1, if the timer %Ti.P > %Ti.V > 0 and if input C is at state 1.
Note: The function blocks %Ti are not programmable in an instruction list; however the block items %Ti
(%Ti.V, %Ti.P, %Ti.D and %Ti.R) can be accessed. The total number of %Tmi + %Ti must be less than
64 on the TSX 37 and 255 on the TSX 57.
98
TLX DR PL7 xxE
Advanced instructions
Timer function block series 7 operation
General
Illustration
Operation
The timer runs when its 2 inputs (E and C) are at state 1. It works as a down counter
Diagram of operation of the series 7 timer
E
C
%Ti.P
%Ti.V
%Ti.D
%Ti.R
1
2
3
1
2
1
2
3
E
C
%Ti.V
%Ti.P
%Ti.D
0
0
%Ti.V
=
%Ti.P
0
0
1
%Ti.V
=
%Ti.P
1
%Ti.R
0 1
1 1
0 1
%Ti.V
frozen
%Ti.V
fall in
%Ti.P -> 0
0 1 if Time elapsed
0 1 if Time in progress
Description of operation
Phase
1
2
3
Description
The current value %Ti.V decreases by one unit from the preset value %Ti.P to
0 at each pulse of the time base TB.
The output bit %Ti.R (Timer in progress) associated with the R output is then at state 1, the output bit %Ti.D (Timer cycle complete) associated with the D output is at state 0,
When the current value %Ti.V=0, %Ti.D changes to state 1 and %Ti.R returns to state 0.
TLX DR PL7 xxE
99
Advanced instructions
Instructions l l l
In structured text language, 3 instructions are used to program the timer function blocks %Ti
PRESET %Ti: Resets the timer
START %Ti: Starts the timer cycle
STOP %Ti: Freezes the current value of the timer
100
TLX DR PL7 xxE
Programming the series 7 timer in "Delay on engagement" mode
Advanced instructions
General
Illustration
The "Timer" function block can carry out different functions, according to how it has been programmed. The "delay on engagement" function is described here
Diagram of operation of the "delay on engagement" function
%I1.0 = E, C
R
D = %Q2.0
PRESET PRESET
Programming Programming in ladder language
%I1.0
%T0
E
TB : 1mn
C
%Ti.P=3
MOD:N
D
R
%Q2.0
Programming in structured text language
IF %I1.0 THEN
START %T0 ;
ELSE
PRESET %T0 ;
END_IF;
%Q2.0:= %T0.D
;
TLX DR PL7 xxE
101
Advanced instructions
Programming the series 7 timer in "Delay on release" mode
General
Illustration
The "Timer" function block can carry out different functions, according to how it has been programmed. The "delay on release" function is described here.
Diagram of operation of the "delay on release" function
%I1.1
E, C
R
PRESET
D
%Q2.1
Programming Programming in ladder language
%I1.1
%T7
E
TB : 1s
C
%Ti.P=120
MOD:N
D
R
%Q2.1
Programming in structured text language
IF %I1.1 THEN
PRESET %T7 ;
ELSE
START %T7 ;
END_IF;
%Q2.1:=NOT %T7.D
;
102
TLX DR PL7 xxE
Advanced instructions
Programming the series 7 timer in "Delay accumulated on engagement" mode
General
Illustration
The "Timer" function block can carry out different functions, according to how it has been programmed. The "delay accumulated on engagement" function is described here.
Diagram of operation of the "delay accumulated on engagement" function
%I1.2 = E
%I1.3 = C
%Q2.5 = R
D1 D2 D3
%Q2.4 = D
Programming
PRESET = D1+D2+D3
Programming in language data
%I1.2
%I1.3
%T5
E
TB : 1mn
C
%Ti.P=3
MOD:N
D
R
%Q2.1
%Q2.5
Programming in structured text language
TLX DR PL7 xxE
103
Advanced instructions
IF %I1.2 THEN
IF %I1.3 THEN
START %T5 ;
ELSE
STOP %T5 ;
END_IF;
ELSE
PRESET %T5 ;
END_IF;
%Q2.4:= %T5.D
;
%Q2.5:= %T5.R
;
104
TLX DR PL7 xxE
Advanced instructions
Programming the series 7 timer in "Delay accumulated on release" mode
General
Illustration
The "Timer" function block can carry out different functions, according to how it has been programmed. The "delay accumulated on release" function is described here.
Diagram of operation of the "delay accumulated on release" function
%I1.0
E
%I1.1
C
R
D
%Q2.1
D1 D2 D3
PRESET = D1+D2+D3
Programming Programming in language data
%I1.0
%I1.1
%T12
E
TB : 10mn
C
%Ti.P=40
MOD:Y
D
R
%Q2.4
Programming in structured text language
TLX DR PL7 xxE
105
Advanced instructions
IF %I1.0 THEN
PRESET %T12 ;
ELSE
IF %I1.1 THEN
STOP %T12 ;
ELSE
START %T12 ;
END_IF;
END_IF;
%Q2.4:=NOT %T12.D
;
106
TLX DR PL7 xxE
Advanced instructions
Introduction to the vertical comparison operation block
General
Illustration
The vertical comparison block is used to compare 2 operands (OP). These 2 operands are words of 16 possibly indexed bits, or words of immediate value.
The number of vertical comparison blocks is not limited and is not enumerated.
Graphic representation of the vertical comparison operation block
COMPARE
EN
>
=
OP1
OP2 <
<>
Characteristics Characteristics of the vertical comparison operation block
Characteristic
Command input
Output "Greater"
Output "Equal"
Output "Less"
Output "Different"
Operand number 1
Operand number 2
=
<
Address Value
EN At state 1, compares the two operands.
> Is at state 1 if the content of the OP1 is greater than that of
OP2.
<>
OP1
OP2
Is at state 1 if the content of the OP1 is equal to that of OP2.
Is at state 1 if the content of the OP1 is less than that of
OP2.
Is at state 1 if the content of the OP1 is different from that of OP2.
This operand is a single length word object (it may be indexed).
This operand is a single length word object (it may be indexed).
TLX DR PL7 xxE
107
Advanced instructions
Operation of vertical comparison operation block
Operation
Example
Setting the command input to 1 compares the two operands; the four outputs are activated according to the result of the comparison. Setting the command input to 0 sets the activated outputs to zero.
The program below shows the comparison of the word %MW2 indexed by the word
%MW40 and of the immediate value of 150. In this case where the content of
%MW2[%MW40] is greater than 150 and if %I1.3 = 1, spool %Q2.7 is commanded.
If the content is equal to 150, spool %MW10:X4 is commanded. Spool %M5 is only controlled if the content is different from 150 (< or >).
Ladder language
EN >
%I1.3
%Q2.7
%MW10:X4
%MW2
[%MW40]
=
<
150
<>
%M5
Note: This function block does not exist in instruction list language or in structured text language. Use the comparison operations >, <, =, <>.
Specific cases l l
Incidence of a "cold" restart: (%S0) resets the operand OP1 and possibly OP2
(if OP2 is an internal word) to zero, the outputs are activated according to the comparsion with the new values.
Incidence of a "warm" restart: There is no incidence of (%S1) on the comparison block.
108
TLX DR PL7 xxE
Advanced instructions
2.3
Shift instructions
Shift instructions
General The shift instructions involve moving the bits of a word or double word operand by a number of positions to the right or left. There are two types of shift: l the logic shift: l l
SHL(op2,i) logic shift of i positions towards the left.
SHL(op2,i) logic shift of i positions towards the right.
l the rotate shift: l ROL(op2,i) rotate shift of i positions towards the left.
l ROL(op2,i) rotate shift of i positions towards the right.
If the operand which is to be shifted is a simple length operand, the variable i will be between 1 and 16. If the operand which is to be shifted is a double length operand, the variable i will be between 1 and 32. The state of the last output bit is memorized in the %S17 bit.
Illustration of the two types of shift:
Logic shift Rotate shift
15 (ou 31) 0 0
%S17
0
%S17
15 (ou 31) 0
%S17
%S17
TLX DR PL7 xxE
109
Advanced instructions
Structure Ladder language:
P
%MW0:=SHL(%MW10,5)
P
%MW10:=ROR(%KMW9,8)
Syntax
Instruction list language:
LDR %I1.1
[%MW0:= SHL(%MW10,5) ]
Structured text language:
IF RE%I1.2 THEN
%MW10:= ROR(%KW9,8) ;
END_IF;
Operators: SHL, SHR, ROL, ROR
Operands:
Type Operand 1 (Op1)
Words which can be indexed %MW
Words which can not be indexed
Double words which can be indexed
Operand 2 (Op2)
%MW, %KW, %Xi.T
%QW, %SW, %NW, %BLK Imm.val., %IW, %QW, %SW,
%NW, %BLK, Expr. num.
%MD %MD, %KD
Double words which can not be indexed
%QD, %SD Imm.val., %ID, %QD, %SD,
Expr. num.
Syntax: Op1:=Operator(Op2,i)
110
TLX DR PL7 xxE
Advanced instructions
2.4
Floating point instructions
Introduction
Aim of this subsection
What's in this
Section?
This sub-section describes PL7 language floating point instructions.
This Section contains the following Maps:
Topic
Floating point instructions
Floating point comparison instructions
Assign instructions on the floating point
Arithmetic instructions on a floating point
Logarithm and Exponential Instructions
Trigonometric Instructions
Conversion instructions
Rounding off a floating point value in ASCII format
Page
TLX DR PL7 xxE
111
Advanced instructions
Floating point instructions
General Operations on floating objects can be carried out with PL7 software.
The floating format used is the standard IEEE STD 734-1985 (equivalent IEC 559).
The length of the words is 32 bits, which corresponds to the single decimal point floating numbers.
The floating values can be represented with or without exponent; they must always have a decimal point (floating point).
Examples of floating values: without exponent: 1285.28 with exponent: 1.28528e3
Floating values range from -3.402824e+38 and -1.175494e-38 to 1.175494e-38 and
3.402824e+38 (grayed out values on the diagram). They also have the value 0,
.
written 0.0
-1.#INF -1.#DN 1.#DN 1.#INF
-3.402824e+38 -1.175494e-38
0
+1.175494e-38 +3.402824e+38
When a calculation result is between -1.175494e-38 and 1.175494e-38, it is rounded off to 0. A value within this range cannot be entered as a floating point value if it is entered in another format; the symbol 1.#DN or - 1.#DN will be displayed.
l l
When a calculation result is: less than -3.402824e+38, the symbol -1.#INF (for -infinite) is displayed greater than +3.402824e+38, the symbol 1.#INF (for +infinite) is displayed
When the result of an operation is undefined (for example square root of a negative number), the symbol 1.#NAN or -1.#NAN is displayed.
When the result is not within the valid range, the system bit %S18 is set to 1.
The status word %SW17 bits indicate the cause of an error in a floating operation:
Different bits of the word SW17:
%SW17:X0 Invalid operation, result is not a number (1.#NAN or -1.#NAN)
112
TLX DR PL7 xxE
TLX DR PL7 xxE
Advanced instructions
%SW17:X1 Non-standardized operand (between -1.175494e-38 and 1.175494e-38), result is rounded off to 0.
%SW17:X2 Divided by 0, result is infinite (-1.#INF or 1.#INF)
%SW17:X3 Result greater in absolute value than +3.402824e+38, result is infinite (-1.#INF or 1.#INF)
%SW17:X4 Result less than 1.175494e-38, result is 0.
%SW17:X5 Imprecise result
This word is reset to 0 by the system on cold start, and also by the program for reusage purposes.
Representation precision is 2-24. To display floating point numbers, it is unnecessary to display more than 6 digits after the decimal point.
Note: l the value "1285" is interpreted as a whole value; in order for it to be recognized as a floating point value, it must be written thus: "1285.0" l instructions for Integer <--> Floating conversion are used to move from one format to another.
Addressing floating objects
Abbreviations Complete addressing
Imm.val.
%MF
%KF
-
%MFi
%KFi
Type of floating point
Access
Immediate values R
Internal floating point R/W
Floating constant value
R
Indexed form
-
%MFi[index]
%KFi[index]
Possibility of overlap between objects:
Single, double length and floating words are stored inside the data space in one memory zone. Thus, the floating word %MFi corresponds to the single length words
%MWi and %MWi+1 (the word %MWi containing the least significant bits and the word %MWi+1 the most significant bits of the word %Mfi).
113
Advanced instructions
Illustration:
%MF1
%MF0
%MF2
%MW0
%MW1
%MW2
%MW3
%MF3
%MFi
%MWi
%MWi+1
Example:
%MF0 corresponds to %MW0 and %MW. %KF543 corresponds to %KW543 and
%KW544.
114
TLX DR PL7 xxE
Advanced instructions
Floating point comparison instructions
General
Structure
The comparison instructions are used to compare two operands.
>
>=
<
<=
=
<> test if operand 1 is above operand 2, test if operand 1 is above or equal to operand 2, test if operand 1 is below operand 2, test if operand 1 is below or equal to operand 2, test if operand 1 is equal to operand 2, test if operand 1 is different from operand 2
The result is at 1 when the requested comparison is true.
Language data
%Q2.3
%M0
%MF10>129.7
%MF10<KF35
%I1.2
%Q2.2
%Q2.4
%MF30>=MF40
The comparison blocks program themselves in the test zone
Instruction list language
LD [%MF10>129.7]
ST %Q2.3
LD %M0
AND [%MF10<KF35]
ST %Q2.2
LD %I1.2
OR [%MF30>=MF40]
ST %Q2.4
The comparison is made inside the fasteners behind the LD, AND and OR instructions.
Structured text language
%Q2.3:= %MF10>129.7
;
%Q2.2:= (%MF20<%KF35) AND %M0;
%Q2.4:= (%MF30>=%MF40) OR %I1.2;
TLX DR PL7 xxE
115
Advanced instructions
Syntax Operators: >,>=,<,<=,=,<>
Operands:
Type Operands 1 and 2 (Op1 and Op2)
Floating points which can be indexed
%MF,%KF
Floating point which can not be indexed
Immediate floating point value, Digital floating point expression
Note: In instruction list language, the comparison instructions can be used within the brackets.
116
TLX DR PL7 xxE
Advanced instructions
Assign instructions on the floating point
General
Structure
The assignment operations can be performed on the following floating points: l l floating point (indexed) -> floating point (indexed). See e.g. 1 immediate floating point value -> floating point (indexed). See e.g. 2
Language data:
%MF10:=%KF100
%I3.2
%MF5:=%KF0[%MW20]
%I3.3
P %MF100:=150.25
Instruction list language:
E.g. 1
LD TRUE
[%MF10:=%KF10]
LD %I3.2
[%MF5:=%KF0[%MW20]]
E.g. 2
LDR %I3.3
[%MF100:=150.25]
Structured text language :
E.g. 1
%MF10:=%KF10 ;
IF %I3.2 THEN
%MF5:=%KF0[%MW20] ;
END_IF;
E.g. 2
IF RE %I1.3 THEN
%MF100:=150.25
;
END_IF;
TLX DR PL7 xxE
117
Advanced instructions
Syntax Operators: :=
Operands:
Type
Floating points which can be indexed
Floating point which can not be indexed
Operands 1 (Op1)
%MF
Syntax: Op1:=Op2
Operands 2 (Op2)
%MF, %KF
Immediate floating point value,
Digital floating point expression
Note: It is possible to perform multiple assignments. Example:
%MF0:=%MF2:=%MF4
118
TLX DR PL7 xxE
Advanced instructions
Arithmetic instructions on a floating point
General These instructions are used to perform an arithmetic operation between two operands or on one operand.
/
*
+ addition of two operands
subtraction of two operands multiplication of two operands division of two operands
SQRT
ABS square root of an operand absolute value of an operand
TRUNC whole part of a floating point value
Structure Ladder language
%M0
%MF0:=%MF10+129.7
%I3.2
%MF1:=SQRT(%MF10)
%I3.3
P
%I3.5
P
%MF2:=ABS(%MF20)
%MD8:=TRUNC(%MF2)
Instruction list language
LD %M0
[%MF0:=%MF10+129.7]
LD %I3.2
[%MF1:=SQRT(%MF10)]
LDR %I3.3
[%MF2:=ABS(%MF20)]
LDR %I3.5
[%MD8:=TRUNC(%MF2)]
TLX DR PL7 xxE
119
Advanced instructions
Syntax
Structured text language
IF %M0 THEN
%MF0:=%MF10+129.7
;
END_IF;
IF %I3.2 THEN
%MF1:=SQRT(%MF10) ;
END_IF;
IF %I3.3 THEN
%MF2:=ABS(%MF20) ;
END_IF;
IF %I3.2 THEN
%MD8:=TRUNC(%MF2) ;
END_IF
Operators and syntax of arithmetic instructions on floating point
Operators
+, - *, /
SQRT, ABS, TRUNC
Syntax
Op1:=Op2 Operator Op3
Op1:=Operator(Op2)
Note: When you perform an addition or subtraction between 2 floating point numbers, the two operands must comply with the condition: Op1
>
Op2
×
2 – 24 , where Op1>Op2. If this condition is not respected, the result is equal to operand 1
(Op1). This phenomenon is of little consequence in the case of an isolated operation, as the resulting error is very low ( 2
– 24
), but it can have unforeseen consequences where the calculation is repeated.
E.g. in the case where the instruction %MF2:= %MF2 + %MF0 is repeated indefinitely. If the initial conditions are %MF.0 = 1.0 and %MW2= 0, the value
%MF2 becomes blocked at 16777216.
We therefore recommend you take great care when programming repeated calculations. If, however, you wish to program this type of calculation, it is up to the client application to manage truncation errors.
120
TLX DR PL7 xxE
Rules of use
Advanced instructions
Operands of arithmetic instructions on floating point
Type
Words which can be indexed
Words which can not be indexed
-
Operand 1 (Op1)
%MF (1)
Operand 2 (Op2)
%MF, %KF
Immediate floating point value, Numeric floating point expr.
(1) %MD in the case of instruction TRUNC l l operations on floating point and integer values can not be directly mixed.
Conversion operations (See
Numerical conversion instructions, p. 130) convert
into one or other of these formats.
System bit %S18 is managed in exactly the same way as the operations on integers (See
Arithmetic instructions on integers, p. 57), the word %SW17 (See
Floating point instructions, p. 112) indicates the cause of the error.
TLX DR PL7 xxE
121
Advanced instructions
Logarithm and Exponential Instructions
General These instructions enable the user to perform logarithmic and exponential operations.
LOG
LN
EXP
EXPT base 10 logarithm
Napierian logarithm natural exponential exponentiation of an actual by an actual
Structure Ladder language
%M0
%I3.2
%I3.3
P
%I3.4
P
%MF0:=LOG(%MF10)
%MF2:=LN(%MF20)
%MF4:=EXP(%MF40)
%MF6:=EXPT(%MF50,%MF52)
Instruction list language
LD %M0
[%MF0:=LOG(%MF10]
LD %I3.2
[%MF2:=LN(%MF20)]
LDR %I3.3
[%MF4:=EXP(%MF40)]
LDR %I3.4
[%MF6:=EXPT(%MF50,%MF52)]
Structured text language
122
TLX DR PL7 xxE
Syntax
Rules for Use
Advanced instructions
IF %M0 THEN
%MF0:=LOG(%MF10) ;
END_IF;
IF %I3.2 THEN
%MF2:=LN(%MF20) ;
END_IF;
IF %I3.3 THEN
%MF4:=EXP(%MF40) ;
END_IF;
IF %I3.4 THEN
%MF6:=EXPT(%MF50,%MF52) ;
END_IF;
Operators and syntax of the logarithmic and exponential instructions
Operators
LOG, EXP, LN
EXPT
Syntax
Op1:=Operator(Op2)
Op1:=Operator (Op2,Op3)
Operands of the logarithmic and exponential instructions
Type
Indexable words
Nonindexable words
Operand 1 (Op1) Operand 2 (Op2)
%MF %MF, %KF
Floating imm.value
Floating num. expr.
Operand 3 (Op3)
%MF
Floating imm.value
l l when the operand of the function is an invalid number (e.g.: logarithm of a negative number), it produces an indeterminate or infinite result and changes the bit %S18 to 1,the word %SW17 indicates the cause of the error (General (See
Floating point instructions, p. 112)).
in the case of logarithm functions, for the values near to 1.0 (between 0.99 and
1.0 or 1.0 and 1.01), the result will be equal to 0, the bits %S18 and %SW17:X5 are set to 1.
TLX DR PL7 xxE
123
Advanced instructions
Trigonometric Instructions
General These instructions enable the user to perform trigonometric operations.
SIN sine of an angle expressed as a radian,
ASIN arc sine (result within
-
2 and 2 )
ACOS arc cosine (result within 0 and
π
)
COS cosine of an angle expressed as a radian,
TAN tangent of an angle expressed as a radian,
ATAN arc tangent (result within
-
2 and 2 )
Structure Ladder language
%M0
%MF0:=SIN(%MF10)
%I3.2
%MF2:=TAN(%MF10)
%I3.3
P
%MF4:=ATAN(%MF20)
Instruction list language
LD %M0
[%MF0:=SIN(%MF10)]
LD %I3.2
[%MF2:=TAN(%MF10)]
LDR %I3.3
[%MF4:=ATAN(%MF20)]
Structured text language
124
TLX DR PL7 xxE
Syntax
Rules for Use
IF %M0 THEN
%MF0:=SIN(%MF10) ;
END_IF;
IF %I3.2 THEN
%MF2:=TAN(%MF10) ;
END_IF;
IF %I3.3 THEN
%MF4:=ATAN(%MF20) ;
END_IF;
Operators and syntax of trigonometric operations instructions
Operators
SIN, COS, TAN, ASIN,
ACOS, ATAN
Syntax
Op1:=Operator(Op2)
Operands of the trigonometric operations instructions:
Type
Indexable words
Non-indexable words -
Operand 1 (Op1) Operand 2 (Op2)
%MF %MF, %KF
Floating imm.value
Floating num. expr.
Advanced instructions l l l when the operand of the function is an invalid number (e.g.: arc cosine of a number greater than 1), it produces an indeterminate or infinite result and changes bit %S18 to 1, the word %SW17 (See
Floating point instructions, p. 112)
indicates the cause of the error.
the functions SIN/COS/TAN allow as a parameter an angle between and
4096
π
– 4096
π
but their precision decreases progressively for the angles outside the period
– 2 π and
+2 π because of the imprecision brought by the modulo carried out on the parameter before any operation.
2 π
For the values 0<Op2<0.01 and 0.999<Op2<1.0 of ASIN, bit %S18 and bit
%SW17:X5 change to 1, denoting an imprecise measurement.
TLX DR PL7 xxE
125
Advanced instructions
Conversion instructions
General These instructions are used to carry out conversion operations.
DEG_TO_RAD
RAD_TO_DEG conversion of degrees into radian, the result is the value of the angle between 0 and 2 π cosine of an angle expressed in radian, the result is the value of the angle between 0 and 360 degrees
Structure Ladder language
%M0
%MF0:=DEG_TO_RAD(%MF10)
%M2
%MF2:=RAD_TO_DEG(%MF20)
Instruction list language
LD %M0
[%MF0:=DEG_TO_RAD(%MF10)]
LD %M2
[%MF2:=RAD_TO_DEG(%MF20)]
Structured text language
IF %M0 THEN
%MF0:=DEG_TO_RAD(%MF10) ;
END_IF;
IF %M2 THEN
%MF2:=RAD_TO_DEG(%MF20) ;
END_IF;
126
TLX DR PL7 xxE
Syntax
Rules of use
Operators and syntax of conversion instructions:
Operators
DEG_TO_RAD
RAD_TO_DEG
Syntax
Op1:=Operator(Op2)
Operands of conversion instructions:
Type
Words which can be indexed
Words which can not be indexed
-
Operand 1 (Op1) Operand 2 (Op2)
%MF %MF, %KF
Imm. floating point value
Numeric floating point
Expr.
Advanced instructions
The angle to be converted must be between -737280.0 et +737280.0 (for
DEG_TO_RAD conversions) or between – 4096 π conversions).
and 4096 π (for RAD_TO_DEG
For values outside these ranges, the displayed result will be + 1.#NAN, the %S18 and %SW17:X0 bits being set at 1.
TLX DR PL7 xxE
127
Advanced instructions
Rounding off a floating point value in ASCII format
General
Structure
The ROUND function supplies the approximate value of a floating point number represented by a string of characters.
This function uses 3 parameters:
ROUND(string 1, Long, String 2) l l l
String 1: Table of bytes constituting the string of source characters
Long: Word giving the position in the string of characters from which the rounding off will be made (the position is calculated by counting the number of characters from the decimal point, including the decimal point)
String 2: Byte tables constituting the resulting character string
Ladder language
ROUND(%MB10:15,%MW100,%MB50:15)
Instruction list language
LD TRUE
[ROUND(%MB10:15,%MW100,%MB50:15)]
Structured text language
ROUND(%MB10:15,%MW100,%MB50:15) ;
128
TLX DR PL7 xxE
Examples
Advanced instructions
Examples of ASCII floating point values roundoffs
%MB10:15
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
“-” “1” “.” “2” “3” “4” “5” “6” “7” “0” “e” “+” “2” “6” $00
%MW100 = 4
%MB50:15
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
“-” “1” “.” “2” “3” “4” “5” “0” “0” “0” “e” “+” “2” “6” $00
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
“-” “1” “.” “1” “3” “5” “4” “9” “4” “2” “e” “-” “3” “0” $00
%MB10:15
%MW100 = 2
%MB50:15
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
“+” “1” “.” “1” “0” “0” “0” “0” “0” “0” “e” “-” “3” “0” $00
Syntax
Rules of use
Operators and syntax of conversion instructions:
Operators
ROUND
Syntax
Op(string 1,Long, string 2)
Operands of conversion instructions:
Type
Byte table
Words which can not be indexed
-
Operand 1 (Op1) Operand 2 (Op2)
%MB:15 -
%MW l l l
The length of the source and result character strings must be between 15 and 255 bytes. If this is not the case, the %S15 bit is set at 1.
The Long length parameters must be between 0 and 8. If this is not the case, the
%S20 bit (index overflow) is set at 1. Special case: for L=0 or L=8, the roundoff is not made (source string = result string).
When the last character different from 0 is > to 5, the previous character is incremented.
TLX DR PL7 xxE
129
Advanced instructions
2.5
Numerical conversion instructions
Introduction
Aim of this subsection
What's in this
Section?
This sub-section describes PL7 language floating point instructions.
This Section contains the following Maps:
Topic
BCD conversion instructions <-> Binary
Integer Conversion Instructions <-> Floating
Instructions for Gray <-> Integer conversion
Word conversion Instructions <--> double word
Page
130
TLX DR PL7 xxE
Advanced instructions
BCD conversion instructions <-> Binary
General There are six conversion instructions.
Instruction list:
BCD_TO_INT
INT_TO_BCD conversion of a 16 bit BCD number into a 16 bit integer conversion of a 16 bit integer into a 16 bit BCD number
DBCD_TO_DINT conversion of a 32 bit BCD number into a 32 bit integer
DINT_TO_DBCD conversion of a 32 bit integer into a 32 bit BCD number
DBCD_TO_INT
INT_TO_DBCD conversion of a 32 bit BCD number into a 16 bit integer conversion of a 16 bit integer into a 32 bit BCD number
Reminder concerning BCD code
The BCD code (Binary Coded Decimal) is used to represent a decimal number from
0 to 9 by a set of 4 bits. A bit object of 16 bits can thus contain a number expressed in 4 digits (0 < N < 9999).
Equivalence between decimal and BCD:
Decimal 0
BCD
1 2 3 4 5 6 7 8 9
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001
Examples of BCD coding: l Word %MW5 expressing the BCD value "2450" which corresponds to the binary value: 0010 0100 0101 0000 l Word %MW12 expressing the BCD value "2450" which corresponds to the binary value : 0000 1001 1001 0010
The instruction BCD_TO_INT changes the word %MW5 to the word %MW12.
The instruction INT_TO_BCD changes the word %MW12 to the word %MW5.
TLX DR PL7 xxE
131
Advanced instructions
Structure Ladder language
%MW0:=BCD_TO_INT(%MW10)
%I1.2
%MW10:=INT_TO_BCD(%KW9)
Syntax
Instruction list language
LD TRUE
[%MW0:=BCD_TO_INT(%MW10)]
LD I1.2
[%MW10:=INT_TO_BCD(%KW9)]
Structured text language
%MW0:=BCD_TO_INT(%MW10) ;
IF %I1.2 THEN
%MW10:=INT_TO_BCD(%KW9) ;
END_IF;
Operators and syntax (conversion of a 16 bit number):
Operators
BCD_TO_INT
INT_TO_BCD
INT_TO_DBCD
Syntax
Op1=operator(Op2)
Operands (conversion of a 16 bit number):
Type
Words which can be indexed
Operand 1 (Op1)
%MW
Words which can not be indexed
%QW,%SW,%NW,
%BLK
%MD Double words which can be indexed
Double words which can not be indexed
%QD,%SD
Operand 2 (Op2)
%MW,%KW,%Xi.T
Imm.val.,%IW,%SW%NW,%BLK,
Numeric Expr.
-
-
132
TLX DR PL7 xxE
TLX DR PL7 xxE
Advanced instructions
Operators and syntax (conversion of a 32 bit number):
Operators
DBCD_TO_DINT
DINT_TO_DBCD
DBCD_TO_INT
Syntax
Op1=operator(Op2)
Operands (conversion of a 32 bit number):
Type
Words which can be indexed
Operand 1 (Op1)
%MW
Words which can not be indexed
%QW,%SW,%NW,
%BLK
%MD Double words which can be indexed
Double words which can not be indexed
%QD,%SD
Operand 2 (Op2)
%MW,%KW,%Xi.T
-
%MD,%KD
Imm. val.,%ID,%QD%SD, Numeric Expr.
133
Advanced instructions
Example of applications
Rules of use
The BCD_TO_INT instruction is used to process a setpoint value present in PLC input on BCD encoded encoder wheels.
The INT_TO_BCD instruction is used to display digital values (eg: calculation result, current value of function block) on BCD coded displays.
l l
BCD->Binary conversion
The BCD-->Binary conversion instructions ensure that the conversion operator is working on a BCD coded value. If the value is not a BCD value, the %S18 system bit is set at 1 and the result returns the value of the first nibble which is at fault.
E.g.: BCD_TO_INT(%MW2) with %MW2=4660 gives 1234 as the result. However,
%MW2=242 (16#00F2) causes %S18 to set at 1 and the result is 15.
For the DBCD_TO_INT instruction, if the BCD number is greater than 32767, the system bit %S18 is set at 1 and the value -1 is stored in the result.
Binary->BCD conversion
When the last character different from 0 is > at 5, the previous character is incremented.
The instruction INT_TO_BCD (or DINT_TO_BCD) ensures that the conversion operator is working on a value between 0 and 9999 (or 0 and 9999 9999). If this is not the case, the system bit %S18 is set at 1 and the result returns the input parameter value.
E.g.: INT_TO_BCD (%MW2) with %MW2=2478 gives 9336 as the result.
However, %MW2=10004 causes %S18 to set at 1 and the result is 10004.
For the INT_TO_DBCD instruction, if the input parameter is negative, the system bit %S18 is set at 1 and the result returns the input parameter value.
134
TLX DR PL7 xxE
Advanced instructions
Integer Conversion Instructions <-> Floating
General Four conversion instructions are offered.
Integer conversion instructions list<-> floating:
INT_TO_REAL
DINT_TO_REAL
REAL_TO_INT
REAL_TO_DINT conversion of an integer word --> floating double conversion of integer word --> floating floating conversion --> integer word (the result is the nearest algebraic value) floating conversion --> double integer word (the result is the nearest algebraic value)
Structure Ladder language
%MF0:=INT_TO_REAL(%MW10)
%I1.8
%MD4:=REAL_TO_DINT(%MF9)
Instruction list language
LD TRUE
[%MF0:=INT_TO_REAL(%MW10)]
LD I1.8
[%MD4:=REAL_TO_DINT(%MF9)]
Structured text language
%MF0:=INT_TO_REAL(%MW10) ;
IF %I1.8 THEN
%MD4:=REAL_TO_DINT(%MF9) ;
END_IF;
TLX DR PL7 xxE
135
Advanced instructions
Syntax Operators and syntax (conversion of an integer word --> floating):
Operators
INT_TO_REAL
Syntax
Op1=INT_TO_REAL(Op2)
Operands (conversion of an integer word --> floating):
Type
Indexable words
Non-indexable words -
Operand 1 (Op1) Operand 2 (Op2)
%MW,%KW,%Xi.T
Indexable floating words
%MF
Imm. val.,%IW,%QW,%SW%NW,%BLK,Num expr.
-
Example: integer word conversion --> floating: 147 --> 1.47e+02
Operators and syntax (double conversion of integer word --> floating):
Operators
DINT_TO_REAL
Syntax
Op1=DINT_TO_REAL(Op2)
Operands (double conversion of integer word --> floating):
Type
Indexable words
Operand 1 (Op1) Operand 2 (Op2)
%MD,%KD
Non-indexable words -
Indexable floating words
%MF
Imm. val.,%ID,%QD%SD,Num expr.
-
Example: integer double word conversion --> floating: 68905000 --> 6.8905e+07
Operators and syntax (floating conversion --> integer word or integer double word):
Operators
REAL_TO_INT
REAL_TO_DINT
Syntax
Op1=Operator(Op2)
Operators (floating conversion --> integer word or integer double word):
Type
Indexable words
Operand 1 (Op1)
%MW
Operand 2 (Op2)
-
Non-indexable words %QW,%NW,%BLK -
136
TLX DR PL7 xxE
Precision of
Rounding
Advanced instructions
Type
Indexable double words
Non-indexable double words
Indexable floating words
Non-indexable floating words
Operand 1 (Op1) Operand 2 (Op2)
%MD -
%QD
-
-
-
%MF,%KF
Floating imm.val.
Example: floating conversion --> integer word: 5978.6 --> 5979 floating conversion --> integer double word: -1235978.6 --> -1235979
Note: If during a real to integer (or real to integer double word) conversion the floating value is outside the limits of the word (or double word),bit %S18 is set to 1.
Standard IEEE 754 defines 4 rounding modes for floating operations.
The mode employed by the instructions above is the "rounded to the nearest" mode:
"if the nearest representable values are at an equal distance from the theoretical result, the value given will be the value whose low significance bit is equal to 0".
In certain cases, the result of the rounding can thus take a default value or an excess value.
For example:
Rounding of the value 10.5 -> 10
Rounding of the value 11.5 -> 12
TLX DR PL7 xxE
137
Advanced instructions
Instructions for Gray <-> Integer conversion
General The GRAY_TO_INT instruction converts a Gray code word into integer (pure binary code).
Reminder concerning Gray code
The Gray code or "considered binary" is used to code a changing digital value in a series of binary configurations which differ from each other by the change in status of one and only one bit.
For example, this code is used to avoid the following hazard: in pure binary, the change of a value from 0111 to 1000 can create random values between 0 and
1000, the bits do not change value in a perfectly simultaneous way.
Equivalence between decimal, BCD and Gray:
Décimal 0
BCD
1 2 3 4 5 6 7 8 9
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001
Gray 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101
Structure Ladder language
%MW0:=GRAY_TO_INT(%MW10)
Instruction list language
LD TRUE
[%MW0:=GRAY_TO_INT(%MW10)]
Structured text language
%MW0:=GRAY_TO_INT(%MW10) ;
138
TLX DR PL7 xxE
Syntax
Advanced instructions
Operators and syntax:
Operators
GRAY_TO_INT
Syntax
Op1=GRAY_TO_INT(Op2)
Operands:
Type
Words which can be indexed
Operand 1 (Op1)
%MW
Words which can not be indexed
%QW,%SW,%NW,
%BLK
Operand 2 (Op2)
%MW,%KW,%Xi.T
Imm.val.,%IW,%QW,%SW,%NW,%BLK,
Numeric Expr.
TLX DR PL7 xxE
139
Advanced instructions
Word conversion Instructions <--> double word
General The instructions described below are useful for purely symbolic objects (such as
DFB function blocks).
For objects which can be addressed, the overlap mechanisms (example: %MD0 double word is made from the words %MW0 and %MW1) make these instructions unnecessary.
Instruction list for word conversion <--> double word:
LW
HW
CONCATW
Extract instructions from the least significant word from a double word
Extract instructions from the most significant word from a double word
2 word concatenation instructions
Syntax
140
Extract instruction operators and syntax from the least significant word from a double word:
Operators
LW
Syntax
Op1=LW(Op2)
Extract instructions operands from the least significant word from a double word
Op1
Op2
Single length word (type Word)
Double length word (type DWord)
Example:
Pressure_cuve:=LW(Parameter_1) if Parameter_1=16#FFFF1234 , Pressure_cuve=16#1234
Extract instruction operators and syntax from the most significant word from a double word:
Operators
HW
Syntax
Op1=HW(Op2)
Extract instructions operands from the most significant word from a double word
Op1
Op2
Single length word (type Word)
Double length word (type DWord)
Example:
Pressure_cuve:=HW(Parameter_1) if Parameter_1=16#FFFF1234 , Pressure_cuve=16#FFFF
TLX DR PL7 xxE
TLX DR PL7 xxE
Advanced instructions
Operators and syntax of the 2 single word concatenation instructions and transfer into a double word:
Operators
CONCATW
Syntax
Op1=CONCATW(Op2,
Op3)
Operands of the 2 single word concatenation instructions and transfer into a double word:
Op1
Op2
Op3
Double length word (type DWord)
Single length word (type Word)
Single length word (type Word)
Example:
Pressure_cuve:=CONCATW(Parameter_1,Parameter_2) if Parameter_1=16#1234 , Parameter_1=16#FFFF ,
Pressure_cuve=16#FFFF1234
141
Advanced instructions
2.6
Word table instructions
Introduction
Aim of this subsection
What's in this
Section?
This sub-section describes PL7 language word table instructions
This Section contains the following Maps:
Topic
Word table instructions
Arithmetic instructions on tables
Logic table instructions
Table summing functions
Table comparison functions
Table search functions
Table search functions for maxi and mini values
Number of occurrences of a value in a table
Table rotate shift function
Table sort function
Table length calculation function
Page
142
TLX DR PL7 xxE
Advanced instructions
Word table instructions
General Operations on tables can be carried out with PL7 software: l l l common words double words floating words
Word tables are collections of adjacent words of the same type and defined length: L
Example of a word table: %KW10:5
%KW10 16 bits
%KW14
Word table characteristics
Type Format
Internal words
Constant words
Simple length
Double length
Floating point
Single length
Double length
Floating point
Single length
Maximum address
%MWi:L
%MWDi:L
%MFi:L
%KWi:L
%KWDi:L
%KFi:L
%SW50:4 (2)
Size Write access i+L<=Nmax (1) Yes i+L<=Nmax-1 (1) Yes i+L<=Nmax-1 (1) Yes i+L<=Nmax (1) No i+L<=Nmax-1 (1) No i+L<=Nmax-1 (1) No
Yes System word
(1) Nmax = maximum number of words defined in software configuration
(2) Only the words %SW50 to %SW53 may be addressed in the form of tables.
TLX DR PL7 xxE
143
Advanced instructions
General rules on table operations l l l l l l l l table operations can only be carried out on tables containing objects of the same type table operations can only be carried out on a maximum of 2 tables if the tables in an operation are of different sizes, the result table will correspond to the smaller of the 2 operand tables the user must avoid carrying out operations on tables with overlap (for example:
%MW100[20]:=%MW90[20]+%KW100[20] ) an operation on 2 tables is carried out on each element of the same rank in both tables and the result is transferred into the element of the same rank in the result table if during an operation between 2 elements, the system bit %S18 is set at 1, the result for this operation is invalid, but the operation for the following elements is carried out correctly when one of the operands is a numeric expression, this must be put between brackets the rank of a word in a table corresponds to the position of the word in the table; the first position corresponds to rank 0
144
TLX DR PL7 xxE
Advanced instructions
Arithmetic instructions on tables
General These instructions are used to perform an arithmetic operation between two word table operands (or a word and a word table).
Instruction list
+ : addition
: subtraction
REM : remainder of the division:
* : multiplication
/ : division
-
Structure Language data
%M0
%MW0:10:=%MW20:10+100
%I3.2
%MW50:5:=%KD0:5+%MD0:5
%I3.3
P %MW0:10:=%KW0:10*%MW20
Instruction list language
LD %M0
[%MW0:10:=%MW20:10+100]
LD %I3.2
[%MD50:5:=%KD0:5+%MD0:5]
Structured text language
IF RE %I3.3 THEN
%MW0:10:=%KW0:10*%MW20 ;
END_IF;
TLX DR PL7 xxE
145
Advanced instructions
Syntax Operators and syntax of arithmetic table instructions:
Operators
+, -, *, /, REM
Syntax
Op1:=Op2 Operator Op3
Operands of arithmetic word table instructions:
Type
Word tables which can be indexed
Words which can be indexed
-
Words which can not be indexed
-
Operand 1 (Op1)
%MW:L
Operand 2 and 3 (Op2 and 3)
%MW:L,%KW:L,%Xi.T:L
%MW,%KW,%Xi.T
Imm.val.,%IW,%QW,%SW,%NW,
%BLK,Num. expr.
Operands of arithmetic double word table instructions:
Type
Word tables which can be indexed
Double words which can be indexed
Double words which can not be indexed
Operand 1 (Op1)
%MD:L
-
-
Operand 2 and 3 (Op2 and 3)
%MD:L,%KD:L
%MD,%KD
Imm. val., %ID,%QD, Numeric expr.
146
TLX DR PL7 xxE
Advanced instructions
Logic table instructions
General These instructions are used to perform an arithmetic operation between two word table operands (or a word and a word table).
Instruction list
AND : AND (bit by bit)
OR : logic OR (bit by bit)
XOR : exclusive OR (bit by bit)
NOT : logic complement (bit by bit) of a table (1 single operand)
Structure Ladder language
%M0
%MW0:5:=%KW0:5AND16#FF00
%I3.2
%MD0:10:=%KD5:10OR%MD50:10
%I3.3
P
%MW100:50:=NOT%MW0:50
Instruction list language
LD %M0
[%MW0:5:=%KW0:5 AND 16#FF00]
Structured text language
IF %I3.2 THEN
%MD0:10:=%KD5:10 OR %MD50:10 ;
END_IF;
IF RE %I3.3 THEN
%MW100:50:= NOT %MW0:50 ;
END_IF;
TLX DR PL7 xxE
147
Advanced instructions
Syntax Operators and syntax of arithmetic table instructions:
Operators
AND,OR,XOR
NOT
Syntax
Op1:=Op2 Operator Op3
Op1:=NOT Op2
Operands of logic word table instructions:
Type
Word tables which can be indexed
Words which can be indexed
-
Words which can not be indexed
-
Operand 1 (Op1)
%MW:L
Operand 2 and 3 (Op2 and Op3)
%MW:L,%KW:L,%Xi.T:L
%MW,%KW,%Xi.T
Imm.val.,%IW,%QW,%SW,%NW,%BLK,
Numeric Expr.
Operands of logic double word table instructions:
Type
Word tables which can be indexed
Double words which can be indexed
-
Double words which can not be indexed
-
Operand 1 (Op1)
%MD:L
Operand 2 and 3 (Op2 and 3)
%MD:L,%KD:L
%MD,%KD,%SD
Imm. val., %ID,%QD, Numeric expr.
148
TLX DR PL7 xxE
Advanced instructions
Table summing functions
General
Structure
Functions SUM and SUM_ARR add all the elements of a word table: l if the table is made up of simple format words, the result is given in the form of a single format word (SUM function) l l if the table is made up of double words, the result is given in the form of a double word (SUM function) if the table is made up of floating words, the result is given in the form of a floating word (SUM_ARR function)
Ladder language
%I3.2
%MW5:=SUM(%MW32:12)
%MD50:=SUM(%KD50:20)
%MF0:=SUM_ARR(%KF8:5)
Instruction list language
LD %I3.2
[%MW5:=SUM(%MW32:12]
Structured text language
%MD50:=SUM(%KD50:20)
%MF0:=SUM_ARR(%KF8:5)
TLX DR PL7 xxE
149
Advanced instructions
Syntax Syntax of table summing instructions:
Res:=SUM(Tab)
Res:=SUM_ARR(Tab)
Parameters of table summing instructions:
Type
Word tables which can be indexed
Words which can be indexed
Words which can not be indexed
Double word tables which can be indexed
Result (res)
-
%MW
%QW,%SW,%NW
-
Double words which can be indexed %MD
Double words which can not be indexed %QD,%SD
Floating word tables which can be indexed
Floating words which can be indexed %MF
-
-
Table (Tab)
%MW:L,%KW:L,%Xi.T:L
%MD:L,%KD:L
-
-
%MF:L,%KF:L
-
Example
Note: When the result is not within the valid word or double word format range according to the table operand, the system bit %S18 is set to 1.
%MW5:=SUM(%MW30:4) with %MW30=10, %MW31=20, %MW32=30, %MW33=40
%MW5=10+20+30+40=100
150
TLX DR PL7 xxE
Advanced instructions
Table comparison functions
General
Structure
The EQUAL (on integer) and EQUAL-ARR (on floating point) functions carry out a comparison of two tables, element by element.
If a difference is shown, the rank of the first dissimilar elements is returned in the form of a word, otherwise the returned value is equal to -1.
The third parameter supplies the rank from which the comparison begins (example:
0 to start at the beginning). This third parameter is optional (it is not authorized with the EQUAL_ARR function); when it is omitted, the comparison is carried out on the whole table.
Ladder language
%I3.2
%MW5:=EQUAL(%MW20:7,%KW0:7,3)
%MW0:=EQUAL(%MW20:7,%KD0:7)
%MF1:=EQUAL_ARR(%MF0:5,%KF0:5)
Instruction list language
LD %I3.2
[%MW5:=EQUAL(%MD20:7,KD0:7,3)]
Structured text language
%MW0:=EQUAL(%MD20:7,%KD0:7)
%MW1:=EQUAL_ARR(%MF0:5,%KF0:5)
TLX DR PL7 xxE
151
Advanced instructions
Syntax Syntax of table comparison instructions:
Res:=EQUAL(Tab1,Tab2,rang)
Res:=EQUAL_ARR(Tab1,Tab2)
Parameters of table comparison instructions:
Type
Word tables
Result (Res)
-
Table (Tab)
%MW:L,%KW:L,%
Xi.T:L
Words which can be indexed
Words which can not be indexed
%MW
%QW,%SW,%NW -
%MD:L,%KD:L
-
Rank
-
%MW,%KW,%Xi.T
Imm.val.,%QW,%IW,%
SW,%NW, Numeric
Expr.
-
%MD,%KD
Double word tables
Double words which can be indexed
Double words which can not be indexed
-
%MD
%QD,%SD
Floating word tables -
Floating words %MF
-
%MF:L,%KF:L
-
-
-
Imm.val.,%QD,%ID,
%SD, Num. expr.
Example l l
Note: it is mandatory that the tables are of the same length if the parameter rank is greater than the size of the tables, the result is equal to this rank.
%MW5:=EQUAL(%MW30:4,%KW0:4,1)
Comparison of 2 tables:
1
2
Rank
0
3
Word tables
%MW30=10
%MW31=20
%MW32=30
%MW33=40
Constant word tables
%KW0=20
%KW1=20
%KW2=30
%KW3=60
The value of the word %MW5 is 3 (different first rank)
=
=
Difference
Ignored (rank<1)
Different
152
TLX DR PL7 xxE
Advanced instructions
Table search functions
General
Structure
There are 11 search functions: l l l l l
FIND_EQW : searches for the position in a word table of the first element which is equal to a given value
FIND_GTW : searches for the position in a word table of the first element which is greater than a given value
FIND_LTW : searches for the position in a word table of the first element which is less than a given value
FIND_EQD : searches for the position in a double word table of the first element which is equal to a given value
FIND_GTD : searches for the position in a double word table of the first element which is greater than a given value l l l
FIND_LTD : searches for the position in a double word table of the first element which is less than a given value.
FIND_EQR : searches for the position in a floating word table of the first element which is equal to a given value
FIND_GTR : searches for the position in a floating word table of the first element which is greater than a given value l FIND_LTR : searches for the position in a floating word table of the first element which is less than a given value
FIND_EQWP : searches for the position in a word table of the first element which l l is equal to a value given from a rank
FIND_EQDP : searches for the position in a double word table of the first element which is equal to a value given from a rank
The result of these instructions is equal to the rank of the first element which is found or at -1 if the search is unsuccessful.
Ladder language
%I3.2
%MW5:=FIND_EQW(%MW20:7,%KW0)
%I1.2
%MW0:=FIND_GTD(%MD20:7,%KD0)
%MW1:=FIND_LTR(%MF40:5,%KF5)
Instruction list language
TLX DR PL7 xxE
153
Advanced instructions
Syntax
LD %I3.2
[%MW5:=FIND_EQW(%MW20:7,Kw0)]
Structured text language
IF %I1.2 THEN
%MW0:=FIND_GTD(%MD20:7,%KD0) ;
END_IF;
%MW1:=FIND_LTR(%MF40:5,%KF5) ;
%MW9:=FIND_EQWP(%MW30:8,%KF5,%MW4) ;
Syntax of table search instructions:
Function
FIND_EQW
FIND_GTW
FIND_LTW
FIND_EQD
FIND_GTD
FIND_LTD
FIND_EQR
FIND_GTR
FIND_LTR
FIND_EQWP
FIND_EQDP
Syntax
Res:=Function(Tab,Val)
Res:=Function(Tab,Val,rank)
Parameters of word table search instructions
(FIND_EQW,FIND_GTW,FIND_LTW,FIND_EQWP )
Type
Word tables which can be indexed
Words which can be indexed
Result (Res)
-
%MW
Words which can not be indexed
%QW,%SW,%NW
Table (Tab)
%MW:L,%KW:L,%
Xi.T:L
-
-
Value (val), rank
-
%MW,%KW,%Xi.T
Imm.val.,%QW,%IW,%
SW,%NW, Numeric
Expr.
154
TLX DR PL7 xxE
Example
Advanced instructions
Parameters of double word table search instructions
(FIND_EQD,FIND_GTD,FIND_LTD,FIND_EQDP)
Type
Word tables which can be indexed
Double words which can be indexed
Double words which can not be indexed
Result (Res)
-
%MW
%QW,%SW,%NW
Table (Tab)
%MD:L,%KD:L,%Xi
.T:L
-
Value (val)
-
%MD,%KD
Imm.val.,%QD,%ID,
%SD, Num. expr.
Note: For the rank, see the word table (idem FIND_EQWP)
Parameters of floating word table search instructions
(FIND_EQR,FIND_GTR,FIND_LTR)
Type Result (Res)
Floating word tables -
Floating words which can be indexed
%MW
Floating words which can not be indexed
%QW,%SW,%NW
Table (Tab)
%MF:L,%KF:L
-
-
Value (val)
-
%MF,%KF
Imm.val., Num. Expr.
%MW5:=FIND_EQW(%MW30:4,%KW0)
Search for the position of the first word =%KW0=30 in the table:
1
2
Rank
0
3
Word Table
%MW30=10
%MW31=20
%MW32=30
%MW33=40
Result
-
-
%MW5=2 Value (val), rank
-
TLX DR PL7 xxE
155
Advanced instructions
Table search functions for maxi and mini values
General
Structure
There are 6 search functions: l l l l l l
MAX_ARW : search for the maximum value in a word table
MIN_ARW : search for the minimum value in a word table
MAX_ARD : search for the maximum value in a double word table
MIN_ARD : search for the minimum value in a double word table
MAX_ARR : search for the maximum value in a floating word table
MIN_ARR : search for the minimum value in a floating word table
The result of these instructions is equal to the maximum value (or minimum) found in the table.
Ladder language
%I3.2
%MW5:=MAX_ARW(%MW20:7)
%I1.2
%MD0:=MIN_ARD(%MD20:7)
%MF8:=MIN_ARR(%MF40:5)
Instruction list language
LD %I3.2
[%MW5:=MAX_ARW(%MW20:7)]
Structured text language
IF %I1.2 THEN
%MD0:=MIN_ARD(%MD20:7) ;
END_IF;
%MF8:=MIN_ARR(%MF40:5) ;
156
TLX DR PL7 xxE
Syntax
Advanced instructions
Syntax of table search instructions for max and min values:
Function
MAX_ARW
MIN_ARW
MAX_ARD
MIN_ARD
MAX_ARR
MIN_ARR
Syntax
Res:=Function(Tab)
Parameters of table search instructions for max and min values:
Type
Word tables which can be indexed
Result (Res)
-
Words which can be indexed
%MW
Words which can not be indexed
%QW,%SW,%NW
Double word tables which can be indexed
-
Double words which can be indexed
%MD
Double words which can not be indexed
%QD,%SD
Floating word tables
Floating words which can be indexed
-
%MF
Table (Tab)
%MW:L,%KW:L,%Xi.T:L
-
-
%MD:L,%KD:L
-
-
%MF:L,%KF:L
-
TLX DR PL7 xxE
157
Advanced instructions
Number of occurrences of a value in a table
General
Structure
There are 3 search functions: l l l
OCCUR_ARW : searches in a word table for the number of elements which are equal to a given value
OCCUR_ARD : searches in a double word table for the number of elements which are equal to a given value
OCCUR_ARR : searches in a floating word table for the number of elements which are equal to a given value
Ladder language
%I3.2
%MW5:=OCCUR_ARW(%MW20:7,%KW0)
%I1.2
%MW0:=OCCUR_ARD(%MD20:7,200)
Instruction list language
LD %I3.2
[%MW5:=OCCUR_ARW(%MW20:7,%KW0)]
Structured text language
IF %I1.2 THEN
%MW0:=OCCUR_ARD(%MD20:7,200) ;
END_IF;
158
TLX DR PL7 xxE
Syntax
Advanced instructions
Syntax of table search instructions for max and min values:
Function
OCCUR_ARW
OCCUR_ARD
OCCUR_ARR
Syntax
Res:=Function(Tab,Val)
Parameters of table search instructions for max and min values:
Type
Word tables which can be indexed
Words which can be indexed
Words which can not be indexed
Result (Res)
-
%MW
%QW,%SW,%NW
Table (Tab)
%MW:L,%KW:L,%Xi
.T:L
-
Value (Val)
-
%MW,%KW,%Xi.T
-
%MD:L,%KD:L
Imm.val.,%QW,%IW,
%SW,%NW, Numeric
Expr.
Double word tables which can be indexed
Double words which can be indexed
Double words which can not be indexed
-
%MW
%QW,%SW,%NW
Floating word tables -
Floating words which can be indexed
%MF
Floating words which can not be indexed
%QW,%SW,%NW
-
-
%MF:L,%KF:L
-
-
%MD,%KD
Imm.val.,
%QD,%ID,%SD,Num.
Expr.
-
%MF,%KF
Imm. val., Num. Expr.
TLX DR PL7 xxE
159
Advanced instructions
Table rotate shift function
General There are 6 shift functions: l l l
ROL_ARW : performs a rotate shift of n positions from top to bottom of the elements in a word table
ROL_ARD : performs a rotate shift of n positions from top to bottom of the elements in a double word table
ROL_ARR : performs a rotate shift of n positions from top to bottom of the elements in a floating word table
Illustration of the ROL_ functions
0
1
2
3
4
5 l l l
ROL_ARW : performs a rotate shift of n positions from bottom to top of the elements in a word table
ROR_ARD : performs a rotate shift of n positions from bottom to top of the elements in a double word table
ROR_ARR : performs a rotate shift of n positions from bottom to top of the elements in a floating word table
Illustration of the ROR_ functions
0
1
2
3
4
5
160
TLX DR PL7 xxE
Structure
Syntax
Advanced instructions
Ladder language
%I3.2
P ROL_ARW(%KW0,%MW20:7)
%I1.2
P ROR_ARD(2,%MD20:7)
%I1.3
P ROR_ARR(2,%MF40:5)
Instruction list language
LDR %I3.2
[ROL_ARW(%KW0,%MW0)]
Structured text language
IF RE %I1.2 THEN
ROR_ARD(2,%MD20:7) ;
END_IF;
IF RE %I1.3 THEN
ROR_ARR(2,%MF40:5) ;
END_IF;
Syntax of rotate shift instructions in word tables ROL_ARW and ROR_ARW
Function
ROL_ARW
ROR_ARW
Syntax
Function(n,Tab)
Parameters of rotate shift instructions in word tables ROL_ARW and ROR_ARW :
Type
Word tables which can be indexed
Words which can be indexed
Words which can not be indexed
Number of positions (n)
-
%MW,%KW,%Xi.T
Imm.val.,%QW,%IW,%SW,
%NW, Num.expr.
Table (Tab)
%MW:L
-
-
TLX DR PL7 xxE
161
Advanced instructions
Syntax of rotate shift instructions in double word tables ROL_ARD and ROR_ARD
Function
ROL_ARD
ROR_ARD
Syntax
Function(n,Tab)
Parameters of rotate shift instructions in double word tables ROL_ARD and
ROR_ARD :
Type
Word tables which can be indexed
Words which can be indexed
Words which can not be indexed
Number of positions (n)
-
%MW,%KW,%Xi.T
Imm.val.,%QW,%IW,%SW,
%NW, Num.expr.
Table (Tab)
%MD:L
-
-
Syntax of rotate shift instructions in floating word tables ROL_ARR and ROR_ARR
Function
ROL_ARR
ROR_ARR
Syntax
Function(n,Tab)
Parameters of rotate shift instructions for floating word tables: ROL_ARR and
ROR_ARR :
Type
Word tables which can be indexed
Words which can be indexed
Words which can not be indexed
Number of positions (n)
-
%MW,%KW,%Xi.T
Imm.val.,%QW,%IW,%SW,
%NW, Num.expr.
Table (Tab)
%MF:L
-
-
Note: if the value of n is negative or null, no shift is performed.
162
TLX DR PL7 xxE
Advanced instructions
Table sort function
General
Structure
There are 3 sort functions: l l l
SORT_ARW : performs sorts in ascending or descending order of the elements of the word table and stores the result in the same table.
SORT_ARD : performs sorts in ascending or descending order of the elements of the double word table and stores the result in the same table.
SORT_ARR : performs sorts in ascending or descending order of the elements of the floating word table and stores the result in the same table
Ladder language
%I3.2
SORT_ARW(%MW0,%MW0:6)
%I1.2
SORT_ARD(-1,%MD20:6)
%I1.3
SORT_ARD(0,%MD40:8)
Instruction list language
LD %I3.2
[SORT_ARW(%MW20,%MW0:6)]
Structured text language
IF %I1.2 THEN
SORT_ARD(-1,%MD20:6) ;
END_IF;
IF %I1.3 THEN
SORT_ARR(0,%MF40:8) ;
END_IF;
TLX DR PL7 xxE
163
Advanced instructions
Syntax Syntax of table sort functions:
Function
SORT_ARW
SORT_ARD
SORT_ARR
Syntax
Function(direction,Tab) l the "direction" parameter gives the order of the sort: direction > 0 the sort is done in ascending order; direction < 0, the sort is done in descending order l the result (sorted table) is returned in the Tab parameter (table to sort).
Parameters of table sort functions:
Type
Word tables (SORT_ARW)
Double word tables
(SORT_ARD)
-
Sort direction
-
Floating word tables
(SORT_ARR)
-
Words which can be indexed %MW,%KW
Words which can not be indexed
Imm.val.,%QW,%IW,%SW,
%NW, Num.expr.
-
-
Table (Tab)
%MW:L
%MD:L
%MF:L
164
TLX DR PL7 xxE
Advanced instructions
Table length calculation function
General
Structure
There are 4 table length calculation functions. These functions are especially useful for programming the DFB function blocks when the table lengths have not been explicitly defined: l LENGTH_ARW : calculation of the length of a word table by the number of l elements
LENGTH_ARD : calculation of the length of a double word table by the number of elements l l
LENGTH_ARR of elements
: calculation of the length of a floating word table by the number
LENGTH_ARX : calculation of the length of a bit table by the number of elements
Ladder language
%I3.2
LEN_ARW(tab_mot)
%I1.2
LENGTH_ARD(tab_dmot)
%I1.3
LENGTH_ARX(tab_bit)
Instruction list language
LD %I3.2
[LENGTH_ARW(tab_mot)]
Structured text language
IF %I1.2 THEN
LENGTH_ARD(tab_dmot) ;
END_IF;
IF %I1.3 THEN
LENGTH_ARX(tab_bit) ;
END_IF;
TLX DR PL7 xxE
165
Advanced instructions
Syntax Syntax of table length calculation functions:
Function
LENGTH_ARW
LENGTH_ARD
LENGTH_ARR
LENGTH_ARX
Syntax
Result=Fonction(Tab)
Parameters of table length calculation functions:
Type
Tables (LENGTH_ARW)
Tables (LENGTH_ARD)
Tables (LENGTH_ARR)
Tables (LENGTH_ARX) bit
Words which can be indexed -
Words which can not be indexed
-
Table (Tab) word double word floating word
-
-
Result (Res)
-
-
%MW
%QW,%SW,NW
Note: the table parameters will be purely symbolic objects.
166
TLX DR PL7 xxE
Advanced instructions
2.7
Character string instructions
Introduction
Aim of this subsection
What's in this
Section?
This section describes PL7 language character string instructions
This Section contains the following Maps:
Topic
Format of a string of characters or table of characters
Assignment on string of characters
Alphanumeric comparisons
Numeric conversion functions <---> ASCII binary-->ASCII conversion
ASCII-->binary conversion
Floating point-->ASCII conversion
ASCII-->Floating point conversion
Concatenation of two strings
Deletion of a substring of characters
Inserting a substring of characters
Replacing a substring of characters
Extracting a substring of characters
Extracting characters
Comparing two character strings
Searching for a character substring
Length of a character string
Page
TLX DR PL7 xxE
167
Advanced instructions
Format of a string of characters or table of characters
General l l
A table of characters is made up of a collection of bytes in which a string of characters can be stored. The size of the table specifies the maximum permissible length of the string of characters (maximum 255).
Example: %MB4:6 represents a table of 6 bytes containing a string of maximum 6 characters.
The first byte at the beginning of a table must be even (it is not possible to enter a table of bytes beginning with an odd byte, e.g.: %MB5:6).
l l l l
Tables of bytes use the same memory zone as the words %MW, %MD; there is therefore a risk of overlap (("Overlay Rules" - Reference Manual Volume 1)).
The term string of characters represents all the characters included between the beginning of the table and the first string end found.
The character NUL (code hexa 00) is called String End. It is symbolized by Ø in the rest of the chapter.
The length of a string of characters is therefore given either by the number of characters before the string end, or by the size of the table if no string end is detected.
Examples:
The following table (of 12 elements) contains the “ABCDE” character string
(length: 5):
“A” “B” “C” “D” “E” Ø “J” “K” “L” “M”“N” “O”
The following table (of 10 elements) contains the “ABCDEJKLMN” character string (length: 10):
“A” “B” “C” “D” “E” “J” “K” “L” “M”“N”
Note: The system bit %S15 is set in the following cases: l When writing a string in a table, if this string is longer than the size of the table
(impossible to write the string end Ø) l When an attempt is made to access a character which is not in the string in l question
Incoherence of parameters: Length to delete null (DELETE function), length to extract null (MID function), length to replace null (REPLACE function), search of a substring longer than the string (FIND function).
168
TLX DR PL7 xxE
Advanced instructions
Assignment on string of characters
General
Structure
Used to transfer a string of characters into a table of bytes of length L.
Ladder language
OPERATE
%MB30:12:=’mise_en_run
Example
Syntax
Instruction list language
LD TRUE
[%MB30:12:='set_to_run']
Structured text language
%MB30:12:='set_to_run' ;
Transfer of the string of characters 'set_to_run' into the byte table of length 12
%MB 30 31 32 33 34 35 36 37 38 39 40 41
‘m’ ‘i’ ‘s’ ‘e’ ‘_’ ‘e’ ‘n’ ‘_’ ‘r’ ‘u’ ‘n’ Ø
Assignment operators on string of characters
Op1:=Op2
Assignment operands on string of characters
Type
Byte table
Operand 1 (Op1)
%MB:L
Operand 2 (Op2)
%MB:L,KB:L, Immediate value
TLX DR PL7 xxE
169
Advanced instructions
Alphanumeric comparisons
General
Structure
These operators are used to compare two strings of characters contained in the byte tables in parameters. The comparison is made character by character.
The result is a bit with a value of 1 if the two strings satisfy the condition supplied by the operator, character by character; if this is not the case, the bit has a value of 0.
The order of the characters is given by the table of codes ASCII (ISO 646). For example, the string 'Z' is larger than the string 'AZ' which is larger than the string
'ABC'.
Ladder language
%M10
OPERATE
%MB20:12<%MB40:12
Note: The comparison blocks program themselves in the test zone.
Instruction list language
LD [%MB20:12<%MB40:12]
ST %M10
Note: The comparison is made inside the square brackets behind the LD, AND and
OR instructions.
Structured text language
%MB10<%MB40:12 ;
170
TLX DR PL7 xxE
Example
Syntax
Advanced instructions
Example: %MB20:12<%MB40:12 ==> YES The result has a value of 1 illustration
%MB 20 21 22 23 24 25 26 27 28 29 30 31
‘a’ ‘b’ ‘c’ ‘d’ ‘e’ ‘f’ ‘g’ ‘i’ Ø ‘k’ ‘w’ ‘z’
%MB 40 41 42 43 44 45 46 47 48 49 50 51
‘a’ ‘b’ ‘c’ ‘d’ ‘e’ ‘f’ ‘h’ ‘i’ Ø ‘k’ ‘w’ ‘z’
The elements after the string end are not taken into account.
Operators of alphanumeric comparisons
Operators
<, >, <=, >=, =, <>
Syntax
Op1 Operator Op2
Operands of alphanumeric comparisons
Type
Byte table
Operand 1 (Op1) and Operand 2 (Op2)
%MB:L, %KB:L, immediate value
TLX DR PL7 xxE
171
Advanced instructions
Numeric conversion functions <---> ASCII
General These functions are used to convert a numeric value (or floating point value) into a string of ASCII coded characters, or vice versa.
The result of the conversion must be transferred into a PL7 object via an assignment operation: byte table, single or double length word, floating point.
List of the possible numeric <---> ASCII conversion functions
Operators
INT_TO_STRING
DINT_TO_STRING
STRING_TO_INT
STRING_TO_DINT
REAL_TO_STRING
STRING_TO_REAL
Description
Binary-->ASCII (words) conversion
Binary-->ASCII (double words) conversion
ASCII-->Binary (single words) conversion
Binary-->ASCII (double words) conversion
Floating point-->ASCII conversion
ASCII-->Floating point conversion
Reminder on the floating point format (See
Floating point instructions, p. 112)
Reminder concerning ASCII code:
All of the 256 alphanumeric and control characters can be coded on 8 bits. This code called ASCII (American Standard Code for Information Interchange) is compatible with the notion of bytes. Any table of n bytes can therefore be formed by n ASCII codes defining n characters.
172
TLX DR PL7 xxE
Advanced instructions
binary-->ASCII conversion
General
Structure
These functions are used to convert a numeric value (single or double length word) into a string of ASCII coded characters.
Each digit and the value sign in the parameter is coded in ASCII in an element of the result byte table.
l l
Function INT_TO_STRING : The content of a single length word can be between
-32768 and +32767, that is 5 digits plus the sign; the result will be a table of 6 characters plus the string end. The sign '+' or '-' is stored in the first character and the units in the sixth character, the tens in the fifth, and so on.
Function DINT_TO_STRING : The content of a double length word can be between -2147483648 and +2147483647, that is 10 digits plus the sign; the result will be a table of 12 characters plus the string end. The sign '+' or '-' is stored in the first character, the units in the twelfth character, the tens in the eleventh, and so on. The second character is always 0.
Ladder language
OPERATE
%MB10:7:=INT_TO_STRING(%MW20)
OPERATE
%MB2:13:=DINT_TO_STRING(%MD30)
Instruction list language
LD TRUE
[%MB10:7:=INT_TO_STRING(%MW20)]
Structured text language
%MB2:13:=DINT_TO_STRING(%MD30) ;
TLX DR PL7 xxE
173
Advanced instructions
Examples Binary-->ASCII conversion
%MB10:7:=INT_TO_STRING(%MW20) with %MW20 = - 3782 in decimal
==> The result is stored in the table of 7 bytes according to %MB10:
Illustration
%MB 10 11 12 13 14 15 16
‘_’ ‘0’ ‘3’ ‘7’ ‘8’ ‘2’ Ø
Syntax
Example: %MB2:13:=DINT_TO_STRING(%MD30) with %MD30 = - 234701084
Illustration
%MB 2 3 4 5 6 7 8 9 10 11 12 13 14
‘-’ ‘0’ ‘0’ ‘2’ ‘3’ ‘4’ ‘7’ ‘0’ ‘1’ ‘0’ ‘8’ ‘4’ Ø
Binary-->ASCII conversion operators
Syntax
Result:= INT_TO_STRING (value)
Binary-->ASCII conversion operands
Type Result (res)
Table of 6 bytes + string end %MB:7
Words which can be indexed -
Words which can not be indexed
value
-
%MW,%KW,%Xi.T
%IW,%QW,%SW,%NW,Imm.val.,Nu m. Expr.
Binary-->ASCII (double words) conversion operators
Syntax
Result:= DINT_TO_STRING (value)
174
TLX DR PL7 xxE
Advanced instructions
Binary-->ASCII (double words) conversion operands
Type Result (res)
Table of 12 bytes + string end %MB:13
Words which can be indexed -
Words which can not be indexed
value
-
%MD,%KD
%ID,%QD,%SD,Imm.val.,Num. expr.
TLX DR PL7 xxE
175
Advanced instructions
ASCII-->binary conversion
General
Structure
These functions are used to convert a string of characters representing a numeric value into binary (result transferred into a single or double length word). Each element of the table in the parameter represents the ASCII code of a character.
Authorized characters are the digits and the characters '+' and '-'.
l l
Function STRING_TO_INT : converts a string of 6 characters representing a numeric value between -32768 et +32767. The first character must represent the sign and the following characters the value: the second, the tens of thousands;…
; the sixth character, the units. The value must be set to the right of the string.
Function STRING_TO_DINT : converts a chain of 12 characters representing a numeric value between -2147483648 and +2147483647. The first character must represent the sign and the following characters the value: The second character is 0; the third, the billions;… ; the twelfth, the units. The value must be set to the right of the string.
Ladder language
OPERATE
%MW13:=STRING_TO_INT(%MB20:7)
Examples
Instruction list language
LD TRUE
[%MW13:=STRING_TO_INT(%MB20:7)]
Structured text language
%MD2:=STRING_TO_DINT(%MB30:13) ;
Example: %MW13:=STRING_TO_INT(%MB20:7) , with
%MB 20 21 22 23 24 25 26
‘-’ ‘0’ ‘2’ ‘3’ ‘4’ ‘7’ Ø
The result in %MW13 = -2347 in decimal
176
TLX DR PL7 xxE
Syntax
Advanced instructions
ASCII-->Binary conversion operators
Syntax
Result:= STRING_TO_INT (string)
ASCII-->Binary conversion operands
Type Result (res)
Words which can be indexed %MW value
-
Words which can not be indexed
%QW,%SW,%NW
Table of 6 bytes + string end -
-
%MB:7,%KB:7,Imm.val.
Note: The %S18 bit is set if the value described by the string is not between -32768 et +32767 or if one of the 6 characters is invalid.
ASCII-->Binary (double words) conversion operators
Syntax
Result:= DINT_TO_STRING (string)
ASCII-->Binary (double words) conversion operands
Type Result (res)
Words which can be indexed %MD
Words which can not be indexed
Table of 12 bytes + string end -
%QD,%SD value
-
-
%MB:13,%KB:13,Imm.val.
Note: The %S18 bit is set if the value described by the string is not between -
2147483648 et +2147483647 or if one of the 12 characters is invalid.
TLX DR PL7 xxE
177
Advanced instructions
Floating point-->ASCII conversion
General This function is used to convert a real numeric value contained in a floating word into a string of ASCII coded characters. The result is transferred to a table of 13 bytes + the string end.
Each digit of the value as well as the characters '+', '-', '.', 'e' and 'E' are coded in
ASCII in an element of the result table.
The value sign is in the first character, the decimal point (.) in the third, the exponent
'e' in the tenth, the exponent sign in the eleventh.
Structure Ladder language
OPERATE
%MB20:14:=REAL_TO_STRING(%MF30)
Examples
Instruction list language
LD TRUE
[%MB20:14:=REAL_TO_STRING(%MF30)]
Structured text language
%MB20:14:=REAL_TO_STRING(%MF30) ;
Example: %MB20:14:=REAL_TO_STRING(%MF30) with %MF30=-
3.234718e+26
===> Result:
%MB 20 21 22 23 24 25 26 27 28 29 30 31 32 33
‘-’ ‘3’ ‘.’ ‘2’ ‘3’ ‘4’ ‘7’ ‘1’ ‘8’ ‘e’ ‘+’ ‘2’ ‘6’ Ø
178
TLX DR PL7 xxE
Syntax
Advanced instructions
Floating point-->ASCII conversion operators
Syntax
Result:= REAL_TO_STRING (value)
Floating point-->ASCII conversion operands
Type Result (res)
Table of 13 bytes + string end %MB14
Words which can be indexed -
Words which can not be indexed
value
-
%MF,%KF
Imm.val.,Num. expr.
Note: The %S18 bit is set to 1if the floating value in the parameter is not between
3.402824e+38 and -1.175494e-38 or +1.175494e-38 and +3.402824e+38. In this case, the result value is invalid.
TLX DR PL7 xxE
179
Advanced instructions
ASCII-->Floating point conversion
General
Structure
This function is used to convert a string of characters representing a real numeric value into a floating point value (result transferred into a floating word).
Each element of the table in the parameter represents the ASCII code of a character. Authorized characters are the digits and the characters ‘+’, ‘-’, ‘.’, ‘e’ and
‘E’. The string end is not used to determine the end of the string which means that the 13 characters of the table must all be correct.
The value sign must be in the first character, the decimal point (.) in the third, the ‘e’ in the tenth, the exponent sign in the eleventh. For example, the value 3.12 must be given in the form ‘+3.120000e+00’.
Ladder language
OPERATE
%MF18:=STRING_TO_REAL(%MB20:13)
Examples
Instruction list language
LD TRUE
[%MF18:=STRING_TO_REAL(%MF20:13)]
Structured text language
%MB18:=STRING_TO_REAL(%MB20:13) ;
Example: %MF18:=STRING_TO_REAL(%MB20:13) with
%MB 20 21 22 23 24 25 26 27 28 29 30 31 32
‘-’ ‘3’ ‘.’ ‘2’ ‘3’ ‘4’ ‘7’ ‘1’ ‘8’ ‘e’ ‘+’ ‘2’ ‘6’
===> result: %MF18 = -3.234718e+26
180
TLX DR PL7 xxE
Syntax
Advanced instructions
ASCII-->Floating point conversion operators
Syntax
Result:= STRING_TO_REAL (string)
ASCII-->Floating point conversion operands
Type Result (res)
Words which can be indexed %MF
Table of 13 bytes value
-
%MB:13,%KB:13,Immediate value
Note: The %S18 bit is set to 1: l if the value described by the string is not between -3.402824e+38 and -
1.175494e-38 l if the value described by the string is not between +1.175494e-38 et
+3.402824e+38 l if one of the 13 characters is invalid.
TLX DR PL7 xxE
181
Advanced instructions
Concatenation of two strings
General
Structure
These instructions perform the concatenation of two strings of characters defined in parameters. The result is a byte table containing a string of characters.
Ladder language
OPERATE
%MB30:14:=CONCAT(%MB4:6,%MB14:9)
Examples
Instruction list language
LD TRUE
[%MB30:14:=CONCAT(%MB4:6,%MB14:9)]
Structured text language
%MB30:14:=CONCAT(%MB4:6,%MB14:9) ;
Example: %MB30:14:=CONCAT(%MB4:6,%MB19:9)
%MB 4 5 6 7 8 9
‘i’ ‘n’ ‘c’ ‘o’ ‘n’ Ø
%MB 14 15 16 17 18 19 20 21 22
‘t’ ‘e’ ‘s’ ‘t’ ‘a’ ‘b’ ‘l’ ‘e’ Ø
%MB 30 31 32 33 34 35 36 37 38 39 40 41 42 43
‘i’ ‘n’ ‘c’ ‘o’ ‘n’ ‘t’ ‘e’ ‘s’ ‘t’ ‘a’ ‘b’ ‘l’ ‘e’ Ø
182
TLX DR PL7 xxE
Syntax
Advanced instructions
String concatenation operators
Syntax
Result:= CONCAT (string 1, string 2)
String concatenation operands
Type
Byte tables
Result (res)
%MB:L
String 1 and 2
%MB:L,%KB;L,Immediate value
Note: l If the result table is too short, it is truncated and the system bit %S15 is set to 1.
%MB30:10:=CONCAT(%MB4:6, %MB14:9 )
%MB 30 31 32 33 34 35 36 37 38
‘i’ ‘n’ ‘c’ ‘o’ ‘n’ ‘t’ ‘e’ ‘s’ ‘t’
38
‘Ø’ ==>%S15=1 l If the result table is too long, the string is completed with end characters 'Ø'.
%MB30:15:=CONCAT(%MB4:6,%MB14:9)
%MB 30 31 32 33 34 35 36 37 38 39 40 41 42
‘i’ ‘n’ ‘c’ ‘o’ ‘n’ ‘t’ ‘e’ ‘s’ ‘t’ ‘a’ ‘b’ ‘l’ ‘e’
43
‘Ø’ ‘Ø’
TLX DR PL7 xxE
183
Advanced instructions
Deletion of a substring of characters
General
Structure
Deletes a number of characters (zone of length L), from a given rank onwards
(position of the first character to be deleted) in the string defined in the parameter.
The result is a byte table containing a string of characters.
Ladder language
OPERATE
%MB14:9:=DELETE(%MB30:14,%MW2,%MW4)
Examples
Instruction list language
LD TRUE
[%MB14:9:=DELETE(%MB30:14,%MW2,%MW4)]
Structured text language
%MB14:9:=DELETE(%MB30:14,%MW2,%MW4) ;
Example: %MB314:9:=DELETE(%MB30:14,%MW2,%MW4) with %MW2 = 5 (5 characters to be deleted ) %MW4 = 3 (position = 3)
%MB 30 31 32 33 34 35 36 37 38 39 40 41 42 43
‘i’ ‘n’ ‘c’ ‘o’ ‘n’ ‘t’ ‘e’ ‘s’ ‘t’ ‘a’ ‘b’ ‘l’ ‘e’ Ø
%MB 14 15 16 17 18 19 20 21 22
‘t’ ‘e’ ‘s’ ‘t’ ‘a’ ‘b’ ‘l’ ‘e’ Ø
184
TLX DR PL7 xxE
Syntax
Advanced instructions
Operator for deletion of a substring of characters
Syntax
Result:= DELETE (string 1, long, pos)
Operands for deletion of a substring of characters
Type
Byte tables
Indexable words
Non-indexable word
Result (res)
%MB:L
-
-
String
-
-
%MB:L,%KB;L,Imme diate value
Long (length), Pos
(position)
-
%MW,%KW,%Xi.T
%IW,%QW,%SW,%NW,
Imm.val., Num. Expr.
Note: Possibility of overlap between the parameters following the indexes of the
PL7 objects: l l l
Table containing the source string.
Table containing the result string.
Word containing the length to be deleted.
l Word containing the position of the first character to be deleted.
A negative length or position is interpreted as being equal to 0. The parameter position starts at the value 1, which corresponds to the first position in the string of characters.
TLX DR PL7 xxE
185
Advanced instructions
Inserting a substring of characters
General
Structure
Insertion of the substring of characters defined by the second parameter (string2) in the string of characters defined by the first parameter (string1).
The insertion is carried out in the first string, after the character situated at the position given by the parameter position (Pos).
The result of the insertion is a new string of characters transferred into a byte table.
Ladder language
OPERATE
%MB2:14:=INSERT(%MB20:9,%MB30:5,%MW40)
Examples
Instruction list language
LD TRUE
[%MB2:14:=INSERT(%MB20:9,%MB30:6,%MW40)]
Structured text language
%MB2:14:=INSERT(%MB20:9,%MB30:6,%MW40);
Example: %MB2:14:=INSERT(%MB20:9,%MB30:6,%MW40) with %MW40=position 2
%MB 20 21 22 23 24 25 26 27 28
‘i’ ‘n’ ‘s’ ‘t’ ‘a’ ‘b’ ‘l’ ‘e’ Ø
%MB 30 31 32 33 34 35
‘c’ ‘o’ ‘n’ ‘t’ ‘e’ Ø
%MB 2 3 4 5 6 7 8 9 10 11 12 13 14
‘i’ ‘n’ ‘c’ ‘o’ ‘n’ ‘t’ ‘e’ ‘s’ ‘t’ ‘a’ ‘b’ ‘l’ ‘e’
15
Ø
186
TLX DR PL7 xxE
Syntax
Advanced instructions
Operators for insertion of a substring of characters
Syntax
Result:=INSERT (string1, string2, pos)
Operands for insertion of a substring of characters
Type
Byte tables
Indexable words
Non-indexable words
-
-
Result (res)
%MB:L
-
-
String 1 and 2
%MB:L,%KB;L
Pos (position)
-
%MW,%KW,%Xi.T
%IW,%QW,%SW,%NW,
Imm.val., Num. Expr.
l l l
Note: l The parameter position starts at the value 1 which corresponds to the first position in the string of characters.
l It is impossible to carry out an insertion at the beginning of a string. For this, use the CONCAT function.
If the table is too long, it is completed with end characters.
Word containing the position of the first character to be deleted.
The system bit %S15 is set to 1 in the following cases: l The value of the parameter position is negative or equal to 0. In this case, it l is interpreted as being equal to 0 and the result table contains an empty string
(made up of string end characters).
The result table is too short; it is then truncated.
TLX DR PL7 xxE
187
Advanced instructions
Replacing a substring of characters
General
Structure
Replaces a section of a string of characters defined in the source table (string1) with a substring of characters defined in the replacement table (string2). The replacement which is to be made is defined by the position (pos.) and length (long.) parameters. This length corresponds to the length of the string which disappears and not to the length of the substring which replaces it.
Ladder language
OPERATE
%MB2:13:=REPLACE(%MB20:12,%MB30:9,
%MW40,%MW41)
Examples
Instruction list language
LD TRUE
[%MB2:13:=REPLACE(%MB20:12,%MB30:9,%MW40,%MW41)]
Structured text language
%MB2:13:=REPLACE(%MB20:12,%MB30:12,%MW40,%MW41);
Example: %MB2:13:=REPLACE(%MB20:12,%MB30:12,%MW40,%MW41) with %MW40=3 (length=3) and %MW41=9 (position 9)
%MB 20 21 22 23 24 25 26
Chaîne 1
27 28
‘m’ ‘i’ ‘s’ ‘e’ ‘_’ ‘e’ ‘n’ ‘_’ ‘r’
29 30 31
‘u’ ‘n’ Ø
%MB 30 31 32 33 34 35
Chaîne 2
‘s’ ‘t’ ‘o’ ‘p’ Ø ‘r’
36 37 38
‘u’ ‘n’ Ø
%MB 2 3 4 5 6 7 8 9 10 11 12 13 14
‘m’ ‘i’ ‘s’ ‘e’ ‘_’ ‘e’ ‘n’ ‘_’ ‘s’ ‘t’ ‘o’ ‘p’ Ø
188
TLX DR PL7 xxE
Syntax
Advanced instructions
Operators for replacement of a substring of characters
Syntax
Result:=REPLACE (string1, string2, long., pos.)
Operands for replacement of a substring of characters
Type Result (res) String 1 and 2
Byte tables
Indexable words
Non-indexable words
%MB:L
-
-
%MB:L,%KB;L
-
-
Long (length), Pos
(position)
-
%MW,%KW,%Xi.T
%IW,%QW,%SW,%NW,
Imm.val., Num. Expr.
l l l
Note: l The parameter position starts at the value 1 which corresponds to the first position in the string of characters.
l If the output table is too long, the string is completed with end characters.
The system bit %S15 is set to 1 in the following cases: l If the value of the position parameter is negative or equal to 0. In this case, it is interpreted as being equal to 0 and the result table contains an empty string
(made up of string end characters).
l If the position parameter is greater or equal to the length of the source string, the result table will contain an empty string (made up of end characters).
If the result table is too short; it is truncated.
Word containing the position of the first character to be deleted.
If the position of the first string end is less than or equal to the position of the first character which is to be replaced, the output table will be a copy of the source table up until the string end, completed by end characters.
TLX DR PL7 xxE
189
Advanced instructions
Extracting a substring of characters
General
Structure
Extraction of a number of characters from a source string entered as a parameter
(string).
The rank of the first character to be extracted is determined by the position parameter (pos.), and the number of characters to be extracted is determined by the length parameter (length). The extracted string is stored in a byte table (result).
Ladder language
OPERATE
%MB14:7:=MID(%MB30:13,%MW2,%MW4)
Examples
Instruction list language
LD TRUE
[%MB14:7:=MID(%MB30:13,%MW2,%MW4)]
Structured text language
%MB14:7:=MID(%MB30:13,%MW2,%MW4);
Example: %MB14:7:=MID(%MB30:13,%MW2,%MW4) with %MW2=4 (length) and %MW4=9 (position)
%MB 30 31 32 33 34 35 36 37 38 39 40 41 42
‘m’ ‘i’ ‘s’ ‘e’ ‘_’ ‘e’ ‘n’ ‘_’ ‘s’ ‘t’ ‘o’ ‘p’ Ø
Résultat :
%MB 14 15 16 17 18 19 20
‘s’ ‘t’ ‘o’ ‘p’ Ø Ø Ø
190
TLX DR PL7 xxE
Syntax
Advanced instructions
Operators for extraction of a substring of characters
Syntax
Result:=MID (string, length, position)
Operands for extraction of a substring of characters
Type
Byte tables
Indexable words
Non-indexable words
-
-
Result String
%MB:L,Imm.val..
%MB:L,%KB;L
-
-
Length, Pos (position)
-
%MW,%KW,%Xi.T
%IW,%QW,%SW,%NW,
Imm.val., Num. Expr.
l l
Note: l The position parameter starts at the value 1 which corresponds to the first position in the string of characters.
If the output table is too long, the string is completed with end characters.
If the length set as a parameter is greater than the size of the source string, the result table will contain the source string.
l If the last element of the table or the string end is reached before the number of characters defined by the parameter length has been extracted, the extraction stops there.
The system bit %S15 is set in the following cases: l If the value of the parameter length to be extracted is negative or zero. In this case, it is interpreted as being equal to 0 and the result table contains an empty l string (made up of string end characters).
If the value of the position parameter at the start of the extraction is zero or greater than or equal to the length of the table or greater than or equal to the l position of the first string end. In this case, the result table contains an empty string (made up of string end characters).
If the result table is too short; it is truncated.
TLX DR PL7 xxE
191
Advanced instructions
Extracting characters
General
Structure
Extraction of a number of characters the furthest to the left (LEFT) or the furthest to the right (RIGHT) in a source string entered as a parameter (string).
The number of characters which is to be extracted is defined by the length parameter. The extracted string is stored in a byte table (result).
Ladder language
OPERATE
%MB10:10:=LEFT(%MB30:13,%MW2)
Examples
Instruction list language
LD TRUE
[%MB10:10:=LEFT(%MB30:13,%MW2)]
Structured text language
%MB10:10:=LEFT(%MB30:13,%MW2);
Example: %MB10:10:=LEFT(%MB30:13,%MW2) with %MW2=8 (length)
%MB 30 31 32 33 34 35 36 37 38 39 40 41 42
‘m’ ‘i’ ‘s’ ‘e’ ‘_’ ‘e’ ‘n’ ‘_’ ‘s’ ‘t’ ‘o’ ‘p’ Ø
Résultat :
%MB 10 11 12 13 14 15
‘m’ ‘i’ ‘s’ ‘e’ ‘_’ ‘e’
16
‘n’
17 18 19
‘_’ Ø Ø
192
TLX DR PL7 xxE
Syntax
Advanced instructions
Operators for extraction of characters
Syntax
Result:=LEFT (string, length)
Result:=RIGHT (string, length)
Operands for extraction of characters
Type
Byte tables
Result
%MB:L
Indexable words
Non-indexable words
-
-
-
-
String
%MB:L,%KB;L,Imm. val.
Length, Pos (position)
-
%MW,%KW,%Xi.T
%IW,%QW,%SW,%NW,
Imm.val., Num. Expr.
Note: l l
If the output table is too long, the result string is completed with end characters.
If the length in the parameter is greater than the size of the source string, the result table will contain the source string.
The system bit %S15 is set to 1 in the following cases: l If the value of the length parameter to be extracted is negative or zero. In this case, the result table contains an empty string (made up of string end l l characters).
If the value of the position parameter at the start of the extraction is zero or greater than or equal to the length of the table or greater than or equal to the position of the first string end. In this case, the result table contains an empty string (made up of string end characters).
If the result table is too short; it is truncated.
TLX DR PL7 xxE
193
Advanced instructions
Comparing two character strings
General
Structure
Comparison of two character strings. The result is a word containing the position of the first different character.
In the case of perfect equality between the two character strings, the result value is
-1.
Ladder language
OPERATE
%MW2:=EQUAL_STR(%MB18:14,%MB50:14)
Examples
Instruction list language
LD TRUE
[%MW2:=EQUAL_STR(%MB18:14,%MB50:14)]
Structured text language
%MW2:=EQUAL_STR(%MB18:14,%MB50:14);
Example: %MW2:=EQUAL_STR(%MB18:14,%MB50:14) with
%MB 18 19 20 21 22 23 24 25 26 27 28 29 30 31
‘a’ ‘b’ ‘c’ ‘d’ ‘e’ ‘f’ ‘g’ ‘h’ ‘i’ ‘p’ ‘w’ ‘x’ ‘y’ ‘z’
Résultat :
%MB 50 51 52 53 54 55 56 57 58 59
‘a’ ‘b’ ‘c’ ‘d’ ‘?’ ‘f’ ‘g’ ‘h’ ‘Ø’
60 61 62 63
‘w’ ‘x’ ‘y’ ‘z’
==> MW2:= 5
194
TLX DR PL7 xxE
Syntax Operators for comparison of two character strings
Syntax
Result:=EQUAL_STR (string1, string2)
Operands for comparison of two character strings
Type
Byte tables
Indexable words
Non-indexable words
Result
-
%MW -
%QW,%SW,%NW -
String 1 and 2
%MB:L,%KB;L,Imm. val.
Advanced instructions l l
Note:
A negative length or position is interpreted as being equal to 0.
Upper case letters are different from lower case letters.
TLX DR PL7 xxE
195
Advanced instructions
Searching for a character substring
General
Structure
Search for the substring of characters defined by the second parameter in the character string defined by the first parameter.
The result is a word containing the position, in the first string, of the beginning of the searched substring.
In case of failure in the search, the result value is -1.
Ladder language
OPERATE
%MW2:=FIND(%MB18:14,%MB50:4)
Examples
Instruction list language
LD TRUE
[%MW2:=FIND(%MB18:14,%MB50:4)]
Structured text language
%MW2:=FIND(%MB18:14,%MB50:4);
Example: %MW2:=FIND(%MB18:14,%MB50:4) with:
%MB 18 19 20 21 22 23 24 25 26 27 28 29 30
‘a’ ‘b’ ‘c’ ‘d’ ‘e’ ‘f’ ‘g’ ‘h’ ‘i’ Ø ‘w’ ‘x’ ‘y’
31
‘z’
%MB 50 51 52 53
‘f’ ‘g’ ‘h’ Ø
==> MW2:= 6 Indicates that the beginning of the searched string starts at the sixth character.
196
TLX DR PL7 xxE
Syntax Search operators for character substrings
Syntax
Result:=FIND (string1, string2)
Search operands for characters substrings
Type
Indexable words
Non-indexable words
Byte tables
Result
%MW
%QW,%SW,%NW -
String 1 and 2
-
%MB:L,%KB;L,Imm. val.
Advanced instructions
Note: A negative length or position is interpreted as being equal to 0.
TLX DR PL7 xxE
197
Advanced instructions
Length of a character string
General
Structure
This function returns the length of the character string in the parameters, i.e. the number of characters before the string end.
Ladder language
OPERATE
%MW2:=LEN(%MB20:14)
Examples
Syntax
Instruction list language
LD TRUE
[%MW2:=LEN(%MB20:14)]
Structured text language
%MW2:=LEN(%MB20:14);
Example: %MW2:=LEN(%MB20:14 with: ))
%MB 20 21 22 23 24 25 26 27 28 29 30 31
‘a’ ‘b’ ‘c’ ‘d’ ‘e’ ‘f’ ‘g’ ‘Ø’ ‘n’ o’ ‘p’ ‘r’
==> MW2:= 7
Operator for length of a character string
Syntax
Result:=LEN (string)
Operands for length of a characters string
Type
Indexable words
Non-indexable words
Byte tables
Result
%MW
%QW,%SW,%NW -
String 1 and 2
-
%MB:L,%KB;L,Imm. val.
Note: If no string end is found, this function returns the size of the table as indicated in: "Formats of a character string or character table" (See
Format of a string of characters or table of characters, p. 168).
198
TLX DR PL7 xxE
2.8
Advanced instructions
Time management instructions: Dates, Times,
Duration
Introduction
Aim of this subsection
What's in this
Section?
This sub-section describes the time management instructions: Dates, Times,
Duration, of PL7 language
This Section contains the following Maps:
Topic
Format of parameters in the time management instructions
Using system bits and words
Real time clock function
Reading system date
Updating the system date
Reading stop date and code
Reading day of the week
Addition / Subtraction of a duration from a date
Addition / Subtraction of a duration from a time of day
Interval between two dates (without time)
Interval between two dates (with time)
Interval between two times
Conversion of a date into a string of characters
Conversion of a complete date into a string of characters
Conversion of a duration into a string of characters
Conversion of a time of day to a character string
Conversion of a duration into HHHH:MM:SS
Page
TLX DR PL7 xxE
199
Advanced instructions
Format of parameters in the time management instructions
General The Date, Time, Duration parameters used by these instructions correspond to the typical formats defined by the standard IEC1131-3.
Duration Format
(TIME Type)
This format is used to encode durations periods expressed in tenths of a second and corresponds to the TIME format in the standard.
Such values are displayed in the form: sssssssss.d
This gives for example: 3674.3 , for 1 hour, 1 minute, 14 seconds et 3 tenths
The value is coded in 32 bits (a double word) with the range fixed at [0, 4294967295] tenths of a second, which represents approximately 13 years and 7 months.
Note: Only values within the interval [00:00:00, 23:59:59] are allowed.
Date Format
(DATE Type)
This format is used to code the year, the month and the day. It corresponds to the
DATE format in the standard.
The value is displayed in the form: yyyy-mm-dd
This gives for example: 1984-06-25
The value is coded in BCD in 32 bits (a double word) with 3 fields:
31
Year
16 8
Month Day
0
Year: 4 digits
Month: 2 digits
Day: 2 digits
Example, expressed in hexadecimals:
19H 84H 06H 25H = 1984-06-25
Note: Only values within the interval [1990-01-01, 2099-12-31] are allowed.
200
TLX DR PL7 xxE
Time of day
Format (TOD
Type)
Advanced instructions
This format is used to code the hour, the minutes and the seconds. It corresponds to the TIME_OF_DAY format in the standard.
The value is displayed in the form: hh:mm:ss
This gives for example: 23:12:34
The value is coded in BCD in 32 bits (a double word) with 3 fields:
31 24 16 8 0
Hour Mins.
Sec.
Hours: 2 digits (most significant words)
Minutes: 2 digits (most significant words)
Seconds: 2 digits (least significant words)
Example, expressed in hexadecimals:
23H 12H 34H = 23:12:34
Note: Only values within the interval [00:00:00, 23:59:59] are allowed.
Date and time
Format (DT Type)
This format is used to code the year, the month, the day, the hour, the minutes and the seconds. It corresponds to the DATE_AND_TIME format in the standard.
The value is displayed in the form: yyyy-mm-dd-hh:mm:ss
This gives for example: 1984-06-25-23:12:34
The value is coded in BCD in 64 bits (a table of words of length 4):
64
Year
48 40
Month Day
32
Hour
24
Mins.
16
Sec.
8 0
Example, expressed in hexadecimals:
1984H 06H 25H 23H 12H 34H
Note: Only values within the interval [1990-01-01-00:00:00, 2099-12-31-23:59:59] are allowed.
TLX DR PL7 xxE
201
Advanced instructions
Hour, Minute,
Second Format
(HMS Type)
This format used exclusively by the TRANS_TIME function is used to code the hours, the minutes and the seconds.
The value is displayed in the form: hh:mm:ss
This gives for example: 23:12:34
The value is coded in BCD in 32 bits (a double word) with 3 fields:
31 16 8 0
Hour Mins.
Sec.
Hours: 4 digits (most significant words)
Minutes: 2 digits (least significant words)
Seconds: 2 digits (least significant
Example, expressed in hexadecimals:
23H 12H 34H = 23:12:34
202
TLX DR PL7 xxE
Advanced instructions
Using system bits and words
System bit %S17 The system bit %S17 is set in the following cases: l l
Result of an operation outside the range of permitted values
An input parameter cannot be interpreted and is not coherent with the desired format (DATE, DT or TOD) l l
Operation on a Time of Day (TOD) format involving a change of day
Real time clock access conflict
System bit %S15 The system bit %S15 is set to 1 when a string is being written in a table, when this string is longer than the size of the table.
System words System words: l %SD18 : absolute time counter is also used to calculate durations (incremented l every 1/10 of a second by the system)
%SW49 à %SW53 (See
Description of system words %SW48 to %SW59, p. 302)
can also be used to display dates
TLX DR PL7 xxE
203
Advanced instructions
Real time clock function
General
Syntax
This function is used to send commands at predefined or calculated times and dates.
It sets the output parameter OUT to 1 providing the date provided by the PLC clock at the moment of the function call falls within the period programmed in the input parameters.
Real time clock function operator
SCHEDULE (DBEG, DEND, WEEK, HBEG, HEND, OUT)
Characteristics of parameters:
Output OUT
Start date
End date
Day of the week
DBEG
DEND
WEEK
Start time
End time
HBEG
HEND
Bit containing the result of the comparisons made by the real time clock function: at 1 during the periods defined by the parameters.
Word encoding the start date of the period (monthdate) in BCD (thresholds: 01-01 to 12-31)
Word encoding the end date of the period (monthdate) in BCD (thresholds: 01-01 to 12-31)
Word encoding the day or days of the week which are included in the period defined by the parameters
DBEG and DEND.
The 7 least significant bits represent the 7 days of the week: bit 6 = Monday, bit 5 = Tuesday,…, bit 0 =
Sunday.
Double word encoding the start time of the period in the day (hours-minutes-seconds) in Time of Day
BCD format (type: TOD). Thresholds: 00:00:00,
23:59:59
Double word encoding the end time of the period in the day (hours-minutes-seconds) in Time of Day
BCD format (type: TOD). Thresholds: 00:00:00,
23:59:59
204
TLX DR PL7 xxE
Structure
Advanced instructions
Ladder language
OPERATE
SCHEDULE(%KW0,%KW1,%KW2,%KD3,%KD5,%M0)
Examples
Instruction list language
LD TRUE
[SCHEDULE(%KW0,%KW1,%KW2,%KD3,%KD5,%M0)]
Structured text language
SCHEDULE(%KW0,%KW1,%KW2,%KD3,%KD5,%M0) ;
Example: Programming 2 non-continuous time ranges
SCHEDULE (16#0501,
16#1031,
2#0000000001111100,
16"08300000,
16#12000000,
%M0
);
SCHEDULE (16#0501,
16#1031,
2#0000000001111100,
16"14000000,
16#18000000,
%M1
);
%Q0.0:=%M0 OR %M1;
(*start date: 1st May*)
(*end date: 31st October*)
(*Monday to Friday*)
(*start time: 8.30a.m.*)
(*end time: 6p.m.*)
(*result in %M0*)
(*start date: 1st May*)
(*end date: 31st October*)
(*Monday to Friday*)
(*start time: 2p.m.*)
(*end time: 6p.m.*)
(*result in %M1*)
TLX DR PL7 xxE
205
Advanced instructions
Operands Real time clock function operands
Type
Indexable words
Non-indexable words
Indexable double words
Non-indexable double words
Bits
DBEG,DEND,WEEK HBEG,HEND
%MW,%KW,%Xi.T
-
%IW,%QW,%SW,%N
W,Imm.val.,Num.expr.
%MD,%KD
-
-
%ID,%QD,Imm.val.,
Num.expr.
-
OUT
-
-
-
-
%I,%Q,%M,%S,
%BLK,%*:Xk,%X
Note: l The 2 parameters DBEG and DEND define a range of days in the year; this range can overlap 2 civil years. Example: from 10th October to 7th April. The l
29th February can be included in this period; it will ignored in non-leap years.
The 2 parameters HBEG and HEND define a range of time in the day; this range can overlap 2 civil days. Example: from 10p.m. to 6:10:20a.m.
l If one of the DBEG and DEND dates or one of the HBEG and HEND times is invalid, i.e. it does not correspond to a real date or time, the OUT output will be at 0 and the %S17 bit will be set to 1.
l l
If the target PLC does not have an internal clock (as in TSX37-10), the output will be at 0 and the system bit %S17 will be set to 1.
It is possible to lighten the load on a PLC processor where precision is not important by cadencing the call to the SCHEDULE function using the system bit
%S6 or %S7.
206
TLX DR PL7 xxE
Advanced instructions
Reading system date
General
Structure
Reading the system date (Real Time Clock) and transferring into the object set in the parameters in Date and Time format (DT).
Ladder language
%M6
OPERATE
RRTC(%MW2:4)
Examples
Syntax
Instruction list language
LD %M6
[RRTC(%MW2:4)]
Structured text language
IF %M6 THEN
RRTC(%MW2:4) ;
END_IF;
Example: RRTC(%MW2:4)
The result is transferred to the table of internal words of length 4: %MW2 to %MW5.
System date read operator
Syntax
RRTC (date)
System date read operands
Type
Table of 4 Words in Date and
Time format
Date
%MW:4
TLX DR PL7 xxE
207
Advanced instructions
Updating the system date
General
Structure
Updating the system date (Real Time Clock) and transferring into the object given in parameter in Date and Time format (DT).
Language data
%M7
OPERATE
%MW2:=16#4300
OPERATE
%MW3:=16#1732
OPERATE
%MW4:=16#1124
OPERATE
%MW5:=16#1995
OPERATE
WRTC(%MW2:4)
Instruction list language
LD %M7
[%MW2:=16#4300]
[%MW3:=16#1732]
[%MW4:=16#1124]
[%MW5:=16#1995]
[WRTC(%MW2:4)]
Structured text language
IF %M7 THEN
%MW2:=16#4300 ;
%MW3:=16#1732 ;
%MW4:=16#1124 ;
%MW5:=16#1995 ;
WRTC(%MW2:4) ;
END_IF;
208
TLX DR PL7 xxE
Examples
Syntax
Advanced instructions
Example: The new date is loaded into an internal word table with a length of 4
%MW2:4, then sent to the system by the WRTC functions
System date updating operator
Syntax
WRTC (date)
System date updating operands
Type
4 Word Table
Date
%MW:4,%KW:4 in date and time format
TLX DR PL7 xxE
209
Advanced instructions
Reading stop date and code
General
Structure
Reading of the date of the last PLC stop and of the code specifying the cause of this stop (in the 5th word, equivalent to %SW58 (See Description of system words
Ladder language
%M7
OPERATE
PTC(%MW4:5)
Examples
Syntax
Instruction list language
LD %M7
[PTC(%MW4:5)]
Structured text language
IF %M7 THEN
PTC(%MW4:5) ;
END_IF;
Example: PTC(%MW4:5)
The result is transferred to the table of internal words of length 5: %MW4 to %MW8
Read stop date and code operator
Syntax
PTC (date)
Read stop date and code operands
Type
5 Word table in Date and Time format
Date
%MW:5
210
TLX DR PL7 xxE
Advanced instructions
Reading day of the week
General
Structure
This result of this function is to supply current day of the week information in the form of a digit between 1 and 7 transferred in a word (1 = Monday, 2 = Tuesday, 3 =
Wednesday, 4 = Thursday. 5 = Friday, 6 = Saturday, 7 = Sunday).
Ladder language
%M7
OPERATE
%MW5:=DAY_OF_WEEK()
Examples
Syntax
Instruction list language
LD %M7
[%MW5:=DAY_OF_WEEK()]
Structured text language
IF %M7 THEN
%MW5:=DAY_OF_WEEK() ;
END_IF;
Example: %MW5:=DAY_OF_WEEK()
%MW5:=4 corresponds to Thursday
Read day of the week operator
Syntax
Result:= DAY_OF_WEEK()
Read day of the week operands
Type
Indexable words
Result (res)
%MW
Non-indexable words %QW,%SW,%NW
Note: If the function has not been able to update the result following a real-time clock access error, the result returned is 0 and the system bit %S17 is set at 1.
TLX DR PL7 xxE
211
Advanced instructions
Addition / Subtraction of a duration from a date
General
Structure
Addition or subtraction of a duration (in tenths of a second) (In2) from a source date
(In1). The result is a new date transferred in a 4 word table.
ADD_DT () = Addition of a duration
SUB_DT () = Subtraction of a duration
Ladder language
%M7 OPERATE
RRTC(%MW2:4)
OPERATE
%MD8:=906
OPERATE
%MW2:4:=ADD_DT(%MW2:4,%MD8)
OPERATE
WRTC(%MW2:4)
Instruction list language
LD %M7
[RRTC(%MW2:4)]
[%MD8:=906]
[%MW2:4:=ADD_DT(%MW2:4,%MD8)]
[WRTC(%MW2:4)]
Structured text language
IF %M7 THEN
RRTC(%MW2:4);
%MD8:=906;
%MW2:4:=ADD_DT(%MW2:4,%MD8) ;
WRTC(%MW2:4);
END_IF;
212
TLX DR PL7 xxE
Examples
Syntax
Advanced instructions
Example: %MW2:4:=ADD_DT(%MW2:4,%MD8)
%MW2:4:= Source date
%MD8:=906 (906 tenths of a second rounded off to 1 min. 31s)
%MW2:4:= New date
Operators for addition/subtraction of a time duration from a date
Syntax
Result:= ADD_DT (In1, In2)
Result:= SUB_DT (In1, In2)
Operands for addition/subtraction of a time duration from a date
Type Result (res)
Tables of 4 Words in
Date and Time format
%MW4
Indexable double words
Non-indexable double words
-
In1 (source date) In2 (duration)
%MW4:4,%KW:4 -
-
-
%MD,%KD
%ID,%QD,Imm.val.,
Num.expr.
l l
Note: l The rounding off principle will be applied to the ‘duration’ parameter (expressed in tenths of a second) to enable the addition or subtraction from the date (precise to the second).
l sssssssss.0 à sssssssss.4 rounded off to sssssssss.0
l sssssssss.5 à sssssssss.9 rounded off to sssssssss.0 +1.0
The application is to provide for the management of leap years.
If the result of the operation is outside the interval for permitted values, the system bit %S17 is set at 1 and the result value is equal to the minimum limit l
(for SUB_DT) or remains blocked at the maximum (for ADD_DT).
If the input parameter ‘source date’ cannot be interpreted and is not coherent in
DT format (DATE_AND_TIME), the system bit %S17 is set at 1 and the result value is equal to 0001-01-01-00:00:00.
TLX DR PL7 xxE
213
Advanced instructions
Addition / Subtraction of a duration from a time of day
General
Structure
Addition or subtraction of a duration to a time of day. The result is a new time of day transferred in a double word.
ADD_TOD () = Addition of a duration
SUB_TOD () = Subtraction of a duration
Ladder language
%M7
OPERATE
%MD8:=906
OPERATE
%MD2:=ADD_TOD(%MD2,%MD8)
Examples
Instruction list language
LD %M7
[%MD8:=906]
[%MD2:=ADD_TOD(%MD2,%MD8)]
Structured text language
IF %M7 THEN
%MD8:=906;
%MD2:=ADD_TOD(%MD2,%MD8) ;
END_IF;
Example: %MD2:=ADD_TOD(%MD2,%MD8)
%MD2:= Source time (e.g.: 12:30:00)
%MD8:= 906 (906 tenths of a second rounded off to 1 min. 31s)
%MD2:= New time (e.g.: 13:31:31)
214
TLX DR PL7 xxE
Syntax
Advanced instructions
Operators for addition/subtraction of a time duration from a time of day
Syntax
Result:= ADD_TOD (In1, In2)
Result:= SUB_TOD (In1, In2)
Operands for addition/subtraction of a time duration from a time of day
Type
Indexable double words
Non-indexable double words
Result (res)
%MD
%QD
In1 (source time) and In2 (duration)
%MD,%KD
%ID,%QD,Imm.val.,Num.expr.
result and In1 are in TOD format, In2 is in duration format.
Note: l The rounding off principle will be applied to the ‘duration’ parameter (expressed in tenths of a second) to enable the addition or subtraction from the date (precise l to the second).
l sssssssss.0 à sssssssss.4 rounded off to sssssssss.0
l sssssssss.5 à sssssssss.9 rounded off to sssssssss.0 +1.0
The day is changed if the result of the operation is outside the interval for l permitted values. In this case, the system bit %S17 is set at 1 and the value of the result can be interpreted with a 24:00:00 rollover.
If the input parameter ‘time of day’ cannot be interpreted in TOD format, the system bit %S17 is set at 1 and the result value is equal to 00:00:00.
TLX DR PL7 xxE
215
Advanced instructions
Interval between two dates (without time)
General
Structure
Calculates the time interval between two dates. The result, given as an absolute value, is transferred in a double word.
Ladder language
%M7
OPERATE
%MD10:=DELTA_D(%MD2,%MD4)
Examples
Syntax
216
Instruction list language
LD %M7
[%MD10:=DELTA_D(%MD2,%MD4)]
Structured text language
IF %M7 THEN
%MD10:=DELTA_D(%MD2,%MD4) ;
END_IF;
%MD10:=DELTA_D(%MD2,%MD4)
%MD2:= Date number1 (e.g.: 1994-05-01)
%MD4:= Date number2 (e.g.: 1994-04-05)
==> %MD10:= 22464000 (==> interval = 26 days)
Operator for an interval between two dates (without time)
Syntax
Result:= DELTA_D (Date1, Date2)
Operands for an interval between two dates (without time)
Type
Indexable double words
Non-indexable double words
Result (res)
%MD
%QD
Date 1 and 2
%MD,%KD
%ID,%QD,Imm.val.,Num.expr.
result is in TIME format, Date 1 and 2 are in DATE format.
TLX DR PL7 xxE
Advanced instructions
The TIME format is defined with precision to a tenth of a second. The DATE format is defined with precision to a day. The calculated time interval will be a multiple of
864000 (= 1day = 24 h x 60 mn x 60 s x 10 tenths).
Note: l There is overflow if the result exceeds the maximum value permitted for a duration (TIME). In this case, the result is equal to 0 and the system bit %S18 is set at 1.
l If one of the input parameters cannot be interpreted and is not coherent in DATE format, the system bit %S17 is set at 1 and the result is equal to 0.
TLX DR PL7 xxE
217
Advanced instructions
Interval between two dates (with time)
General
Structure
Calculates the time interval between two dates. The result, given as an absolute value, is transferred in a double word.
Ladder language
OPERATE
%MD10:=DELTA_DT(%MW2:4,%MW6:4)
Examples
Instruction list language
LD TRUE
[%MD10:=DELTA_DT(%MW2:4,%MW6:4)]
Structured text language
%MD10:=DELTA_DT(%MW2:4,%MW6:4) ;
%MD10:=DELTA_DT(%MW2:4,%MW6:4)
%MW2:4:= Date number1 (e.g.: 1994-05-01-12:00:00)
%MW6:4:= Date number2 (e.g.: 1994-05-01-12-01-30)
==> %MD10:= 900 (==> interval = 1 minute and 30 seconds)
218
TLX DR PL7 xxE
Syntax
Advanced instructions
Operator for an interval between two dates (with time)
Syntax
Result:= DELTA_DT (Date1, Date2)
Operands for an interval between two dates (with time)
Type
Indexable double words
Non-indexable double words
4 word table in DT format
Result (res)
%MD
%QD
-
Date 1 and 2
-
-
%MW:4,%KW:4 result is in TIME format, Date 1 and 2 are in DT format.
The TIME format is defined with precision to a tenth of a second. The DT format is defined with precision to a second. The calculated time interval is a multiple of 10.
Note: l There is overflow if the result exceeds the maximum value permitted for a duration (TIME). In this case, the result is equal to 0 and the system bit %S18 is set at 1.
l If one of the input parameters cannot be interpreted and is not coherent in DT format, the system bit %S17 is set at 1 and the result is equal to 0.
TLX DR PL7 xxE
219
Advanced instructions
Interval between two times
General
Structure
Calculates the time interval between two times of day. The result is transferred in a double word as an absolute value giving a duration.
Ladder language
OPERATE
%MD10:=DELTA_TOD(%MD2,%MD4)
Examples
Syntax
220
Instruction list language
LD TRUE
[%MD10:=DELTA_TOD(%MD2,%MD4)]
Structured text language
%MD10:=DELTA_TOD(%MD2,%MD4) ;
%MD10:=DELTA_TOD(%MD2,%MD4)
%MD2:= Time1 (e.g.: 02:30:00)
%MD4:= Time2 (e.g.: 02 41 00)
==> %MD10:= 6600 (==> interval = 11 minutes)
Operator for an interval between two times
Syntax
Result:= DELTA_TOD (Date1, Date2)
Operands for an interval between two times
Type
Indexable double words
Non-indexable double words
Result (res)
%MD
%QD
Time 1 and 2
%MD,%KD
%ID,%QD, Immediate value, Numeric expr.
result is in TIME format, Time 1 and 2 are in TOD format.
The TIME format is defined with precision to a tenth of a second. The TOD format is defined with precision to a second. The calculated time interval is a multiple of 10.
TLX DR PL7 xxE
Advanced instructions
Note: If one of the input parameters cannot be interpreted and is not coherent in
TOD format, the system bit %S17 is set at 1 and the result is equal to 0.
TLX DR PL7 xxE
221
Advanced instructions
Conversion of a date into a string of characters
General
Structure
This instruction converts a date into a string of characters (without time) in the following format: YYYY-MM-DD (10 characters). This string ends with an end character Ø. Each character Y,M,D symbolizes a digit.
Ladder language
OPERATE
%MB2:11=DATE_TO_STRING(%MD40)
Examples
Instruction list language
LD TRUE
[%MB2:11=DATE_TO_STRING(%MD40)]
Structured text language
%MB2:11=DATE_TO_STRING(%MD40) ;
%MB2:11=DATE_TO_STRING(%MD40)
%MD40:= Date (e.g.: 1998-12-27)
%MB 2 3 4 5 6 7 8 9 10 11 12
‘1’ ‘9’ ‘9’ ‘8’ ‘-’ ‘1’ ‘2’ ‘-’ ‘2’ ‘7’ Ø
222
TLX DR PL7 xxE
Syntax
Advanced instructions
Date to string conversion operator
Syntax
Result:= DATE_TO_STRING (Date)
Date to string conversion operands
Type
Tables of 11 bytes
Indexable double words
Non-indexable double words
Result (res)
%MB:11
-
-
Date
-
%MD,%KD
%ID,%QD, Immediate value, Numeric expr.
Note: l If the input (date) parameter cannot be interpreted and is not coherent in DATE format, the system bit %S17 is set at 1 and the function returns the string **** l
- ** - ** .
If the output string is too short, it is truncated and the system bit %S15 is set to 1.
%MB2:8 := DATE_TO_STRING(%MD40)
==> %MB 2 3 4 5 6 7 8 9
‘1’ ‘9’ ‘9’ ‘8’ ‘-’ ‘1’ ‘2’ ‘-’
==> %S15 = 1 l If the output string is too long, it is completed with end characters Ø.
%MB2:12 := DATE_TO_STRING(%MD40)
==> %MB 2 3 4 5 6 7 8 9 10 11 12 13
‘1’ ‘9’ ‘9’ ‘8’ ‘-’ ‘1’ ‘2’ ‘-’ ‘2’ ‘7’ Ø Ø
TLX DR PL7 xxE
223
Advanced instructions
Conversion of a complete date into a string of characters
General
Structure
This instruction converts a complete date (with time) into a string of characters in the following format: YYYY-MM-DD-HH:MM:SS (19 characters). This string ends with an end character Ø. Each character Y,M,D,H,M,S symbolizes a digit.
Ladder language
OPERATE
%MB2:20=DT_TO_STRING(%MW50:4)
Examples
Instruction list language
LD TRUE
[%MB2:20=DT_TO_STRING(%MW50:4)]
Structured text language
%MB2:20=DT_TO_STRING(%MW50:4) ;
%MB2:20=DT_TO_STRING(%MW50:4)
%M50:4:= Date and time (type DT) (e.g.: 1998-12-27-23:14:37)
==>
%MB 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
‘1’ ‘9’ ‘9’ ‘8’ ‘-’ ‘1’ ‘2’ ‘-’ ‘2’ ‘7’ ‘-’ ‘2’ ‘3’ ‘:’ ‘1’ ‘4’ ‘:’ ‘3’ ‘7’ Ø Ø
224
TLX DR PL7 xxE
Syntax
Advanced instructions
Complete date to string conversion operator
Syntax
Result:=DT_TO_STRING(Date)
Complete date to string conversion operands
Type
Tables of 20 bytes
4 word table in DT format
Result (res)
%MB:20
-
Date
-
%MW:4,%KW:4
Note: l If the (date) input parameter cannot be interpreted and is not coherent in
DT (DATE_AND_TIME) format, the system bit %S17 is set at 1 and the function l returns the string ****-**-**-**:**:** .
If the output string is too short, it is truncated and the system bit %S15 is set to 1.
%MB2:8:=DT_TO_STRING(%MW50:4)
==> %MB 2 3 4 5 6 7 8 9
‘1’ ‘9’ ‘9’ ‘8’ ‘-’ ‘1’ ‘2’ ‘-’
==> %S15 = 1 l If the output string is too long, it is completed with end characters Ø.
%MB2:21:=DT_TO_STRING(%MD50:4)
==>
%MB 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
‘1’ ‘9’ ‘9’ ‘8’ ‘-’ ‘1’ ‘2’ ‘-’ ‘2’ ‘7’ ‘-’ ‘2’ ‘3’ ‘:’ ‘1’ ‘4’ ‘:’ ‘3’ ‘7’ Ø Ø
TLX DR PL7 xxE
225
Advanced instructions
Conversion of a duration into a string of characters
General
Structure
This instruction converts a duration (in TIME format) into a string of characters. The format of the result is in hours, minutes, seconds and tenths of a second expressed in 15 characters: HHHHHH:MM:SS.D. This string ends with the end character Ø.
Each character H,M,S,D symbolizes a digit.
The maximum duration corresponds to 119304 hours, 38 minutes, 49 seconds and
5 tenths.
Ladder language
OPERATE
%MB2:15=TIME_TO_STRING(%MD40)
Examples
Instruction list language
LD TRUE
[%MB2:15=TIME_TO_STRING(%MD40)]
Structured text language
%MB2:15=TIME_TO_STRING(%MD40) ;
%MB2:15=TIME_TO_STRING(%MD40)
%MD40:= 27556330.3 (TIME format)
%MB 2 3 4 5 6 7 8 9 10 11 12 13
‘0’ ‘0’ ‘7’ ‘6’ ‘5’ ‘4’ ‘:’ ‘3’ ‘2’ ‘:’ ‘1’ ‘0’
14 15 16
‘.’ ‘3’ Ø
226
TLX DR PL7 xxE
Syntax
Advanced instructions
Duration to string conversion operator
Syntax
Result:= TIME_TO_STRING (Duration)
Duration to string conversion operands
Type
Tables of 15 bytes
Indexable double words
Non-indexable double words
Result (res)
%MB:15
-
-
Duration
-
%MD,%KD
%ID,%QD, Immediate value, Numeric expr.
Duration is in TIME format
Note: l If the output string is too short, it is truncated and the system bit %S15 is set to 1.
%MB2:8:=TIME_TO_STRING(%MD40)
==> %MB 2 3 4 5 6 7 8
‘0’ ‘0’ ‘7’ ‘6’ ‘5’ ‘4’ ‘:’
9
‘3’
==> %S15 = 1 l If the output string is too long, it is completed with end characters Ø.
%MB2:16:=TIME_TO_STRING(%MD40)
==>
%MB 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
‘0’ ‘0’ ‘7’ ‘6’ ‘5’ ‘4’ ‘:’ ‘3’ ‘2’ ‘:’ ‘1’ ‘0’ ‘.’ ‘3’ Ø Ø
TLX DR PL7 xxE
227
Advanced instructions
Conversion of a time of day to a character string
General
Structure
This instruction converts a time of day (in TOD – TIME_OF_DAY format) into a character string with 8 characters in HH:MM:SS format plus an end character Ø.
Each chracter H,M,S symbolizes a digit.
Ladder language
OPERATE
%MB2:9=TOD_TO_STRING(%MD40)
Examples
Instruction list language
LD TRUE
[%MB2:9=TOD_TO_STRING(%MD40)]
Structured text language
%MB2:9=TOD_TO_STRING(%MD40);
%MB2:9=TOD_TO_STRING(%MD40)
%MD40:= 23:12:27 (TOD format)
%MB 2 3 4 5 6 7 8 9 10
‘2’ ‘3’ ‘:’ ‘1’ ‘2’ ‘:’ ‘2’ ‘7’ Ø
228
TLX DR PL7 xxE
Syntax
Advanced instructions
Time of day to string conversion operator
Syntax
Result:=TOD_TO_STRING(Duration)
Time of day to string conversion operands
Type
9 byte tables
Indexable double words
Non-indexable double words
Result (res)
%MB:9
-
-
Time
-
%MD,%KD
%ID,%QD, Immediate value, Numeric expr.
Time is in TOD format
Note: l If the output string is too short, it is truncated and the system bit %S15 is set to 1.
%MB2:8 := TOD_TO_STRING (%MD40) (where %MD40 := 23:12:27)
==> %MB 2 3 4 5 6 7 8 9
‘2’ ‘3’ ‘:’ ‘1’ ‘2’ ‘:’ ‘2’ ‘7’
==> %S15 = 1 l If the output string is too long, it is completed with end characters Ø.
%MB2:10 := TOD_TO_STRING (%MD40) (where %MD40 := 23:12:27)
==>
%MB 2 3 4 5 6 7 8 9 10 11
‘2’ ‘3’ ‘:’ ‘1’ ‘2’ ‘:’ ‘2’ ‘7’ Ø Ø
TLX DR PL7 xxE
229
Advanced instructions
Conversion of a duration into HHHH:MM:SS
General
Structure
This instruction converts a duration (in TIME format) into hours-minutes-seconds:
HHHH:MM:SS. Threshold [0000:00:00 , 9999:59:59].
Ladder language
OPERATE
%MD100=TRANS_TIME(%MD2)
Examples
Instruction list language
LD TRUE
[%MD100=TRANS_TIME(%MD2)]
Structured text language
%MD100=TRANS_TIME(%MD2) ;
%MD100=TRANS_TIME(%MD2) where %MD2:= 36324873 tenths of a second
==> %MD2
31 16
2 3 9 7 values are expressed in hexadecimal
5 4
8
4 7
0
230
TLX DR PL7 xxE
Syntax
Advanced instructions
Duration to HHHH:MM:SS conversion operator
Syntax
Result:= TRANS_TIME (Duration)
Duration to HHHH:MM:SS conversion operator
Type
Indexable double words
Non-indexable double words
Result (res)
%MD
%QD
Duration
%MD,%KD
%ID,%QD, Immediate value, Numeric expr.
Result is in HMS format
Duration is in TIME format
Note: l The rounding off principle will be applied to the "duration" parameter (expressed in tenths of a second) to enable conversion (precise to the second).
l l sssssssss.0 à sssssssss.4 rounded off to sssssssss.0
l sssssssss.5 à sssssssss.9 rounded off to sssssssss.0 +1.0
The maximum converted duration may be up to 10000 hours. This means that if the duration value (TIME) in the parameter is equal or greater than
360000000, it cannot be converted. %S15 system bit is set to 1 and the result is equal to 0000:00:00.
TLX DR PL7 xxE
231
Advanced instructions
2.9
Bit table instructions
Introduction
Aim of this subsection
What's in this
Section?
This sub-section describes PL7 language bit table instructions
This Section contains the following Maps:
Topic
Copying a bit table into a bit table
Logic instructions on bit tables
Copying a bit table into a word table
Copy of a word table in a bits table
Page
232
TLX DR PL7 xxE
Copying a bit table into a bit table
General
Structure
This function copies a bit table bit by bit into another bit table.
Ladder language
OPERATE
%MD10:5=COPY_BIT(%M20:5)
Advanced instructions
Syntax
Instruction list language
LD TRUE
[%MD10:5=COPY_BIT(%M20:5)]
Structured text language
%MD10:5=COPY_BIT(%M20:5) ;
Bit table copy operator
Syntax
Result:= COPY_BIT (Tab)
Bit table copy operands
Type
Bit table
Result (res) Tab (table)
%M:L,%Q:L,%I:L %M:L,%Q:L,%I:L,%Xi:L
Note: l Tables can be of different sizes. In this case, the result table contains the result of the function executed for a length equivalent to the smallest of the tables, and l the rest of the table has not been modified.
Be careful of possible overlap between the input table and the result table.
TLX DR PL7 xxE
233
Advanced instructions
Logic instructions on bit tables
General
Structure l l l l
Associated functions are used to carry out a bit by bit logic operation between two bit tables, and arrange the result in another bit table.
AND_ARX : logic AND (bit by bit)
OR_ARX : logic OR (bit by bit)
XOR_ARX
NOT_ARX
: Exclusive OR (bit by bit)
: logic (bit by bit) complement of a table
Ladder language
OPERATE
%MD10:7=AND_ARX(%M20:7,%M30:7)
OPERATE
%MD50:10=NOT_ARX(%M60:10)
Instruction list language
LD TRUE
[%MD10:7=AND_ARX(%M20:7,%M30:7)]
LD TRUE
[%MD50:10=NOT_ARX(%M60:10)]
Structured text language
%MD10:7=AND_ARX(%M20:7,%M30:7) ;
%MD50:10=NOT_ARX(%M60:10) ;
234
TLX DR PL7 xxE
Syntax Logic instruction on bit table operators
Syntax
Result:= AND_ARX (Tab 1, Tab 2)
Result:= OR_ARX (Tab 1, Tab 2)
Result:= XOR_ARX (Tab 1, Tab 2)
Result:= NOT_ARX (Tab 1)
Logic instruction on bit tables operands
Type
Bit table
Result (res) Tab 1 and Tab 2 (table)
%M:L,%Q:L,%I:L %M:L,%Q:L,%I:L,%Xi:L
Advanced instructions
Note: l Tables can be of different sizes. In this case, the result table contains the result of the function executed for a length equivalent to the smallest of the tables, and l the rest of the table has not been modified.
Possibility of overlap between the input table and the result table.
TLX DR PL7 xxE
235
Advanced instructions
Copying a bit table into a word table
General
Structure
This function copies the bits of a bit table or part of a bit table and copies them into a word (or double word) table.
In the bit table, the bits are taken starting from a certain position (brow) for a set number of bits (nbit).
l l
In the word (or double word) table, the copy is made from the position (wrow or drow) starting with the least significant bit of each word.
BIT_W : Copies a bit table into a word table.
BIT_D : Copies a bit table into a double word table.
Ladder language
OPERATE
%MD10:7=BIT_W(%M20:29,3,22,2)
OPERATE
%MD10:4=(%M20:29,3,22,1)
Instruction list language
LD TRUE
[%MD10:7=BIT_W(%M20:29,3,22,2)]
LD TRUE
[%MD10:4=(%M20:29,3,22,1)]
Structured text language
%MD10:7=BIT_W(%M20:29,3,22,2) ;
%MD10:4=(%M20:29,3,22,1);
236
TLX DR PL7 xxE
Example %MD10:7=BIT_W(%M20:29,3,22,2) ;
%M20:29 row 0 row 3 (brow) row 0
%MW10:7 bit 15 bit 0 row 2
Number of bits (nbit):
16 + 6
Advanced instructions
Syntax Bit table to word table copy operators
Syntax
Result:= BIT_W (Tab, brow, nbit, wrow)
Result:= D_BIT (Tab, brow, nbit, drow)
Bit table to word table copy operands
Type Result (res)
Word tables %MW:L
Double word tables %MD:L
Bit table -
Indexable words -
Non-indexable words -
Tab (table)
-
-
%M:L,%Q:L,%I:L,%
Xi:L
-
-
-
brow - nbit wrow or drow
-
%MW,%KW,%Xi.T
%IW,%QW,%SW,
%NW, Imm. value.,
Num. expr.
Note: l If the number of bits to be processed is greater than the number of bits remaining in the tables from position (brow), the function copies up to the last table element.
l l
If the number of bits to be copied is greater than the number of bits that make up the remaining words in the result table, the function stops copying at the last element of the word (or double word) table.
A negative value in the brow, nbit, wrow or drow parameters will be interpreted as zero.
TLX DR PL7 xxE
237
Advanced instructions
Copy of a word table in a bits table
General
Structure
The function takes the bits that make up a word table or part of a word (or double word) table and copies them into a bit table.
In the word (or double word) table, the deduction is made from position word (wrow or drow) for a number of words (nwd).
l l
In the bit table, the copy is made from the position (brow) starting with the least significant bit of each word.
W_BIT : Recopying a word table into a bit table.
D_BIT : Recopying a double word table into a bit table.
Language data
OPERATE
%M20:36:=W_BIT(%MW10:7,2,2,3)
OPERATE
%M20:36:=D_BIT(%MD10:4,1,1,3)
Instruction list language
LD TRUE
[%M20:36:=W_BIT(%MW10:7,2,2,3)]
LD TRUE
[%M20:36:=D_BIT(%MD10:4,1,1,3)]
Structured text language
%M20:36:=W_BIT(%MW10:7,2,2,3) ;
%M20:36:=D_BIT(%MD10:4,1,1,3) ;
238
TLX DR PL7 xxE
Example %M20:36:=W_BIT(%MW10:7,2,2,3) ;
%M20:36 row 0 row 3 (brow) row 0
(wrow) row 2
%MW10:7 bit 15 bit 0
Advanced instructions row 19
Syntax Operators for copying a word table into a bit table
Syntax
Result:= W_BIT (Tab, wrow, nwd, brow)
Result:= D_BIT (Tab, drow, nwd, brow)
Operands for copying a word table into a bit table
Type Result (res) Tab (table)
Bit tables
Word tables
Double word tables -
Words which can be indexed
-
Words which can not be indexed
-
%M:L,%Q:L,%I:L -
%MW:L,%KW:L
%MD:L,%KD:L
-
-
-
wrow or drow nwd brow
-
%MW,%KW,%Xi.T
%IW,%QW,%SW,%NW,I mm value.,Num. expr.
Note: l If the number of bits to be processed is greater than the number of bits remaining in the tables from position (wrow), the function recopies up to the last table element.
l If the number of bits to be recopied is greater than the number of bits that make up the remaining words in the result table, the function stops copying at the last word (or double word) table element.
l l
If the number of bits to be recopied is greater than the number of bits remaining in the result table, the function stops recopying at the last table element.
A negative value in the brow, nbit, wrow or drow parameters will be interpreted as zero.
TLX DR PL7 xxE
239
Advanced instructions
2.10
"Orpheus" functions: Shift registers, counter
Introduction
Aim of this subsection
What's in this
Section?
This sub-section describes the following "Orpheus" functions of PL7 language: shift register and counter
This Section contains the following Maps:
Topic
Shift register on words with shifted bit retrieval
Up/down counting with overshoot signaling
Rotate shifts
Page
240
TLX DR PL7 xxE
Advanced instructions
Shift register on words with shifted bit retrieval
General
Structure
The functions cause right or left arithmetic shifts on a number of shift registers (nbit) l l l l l l on a word or on a double word (a).
After shifting, the value is placed in (résu) and the shifted bits are placed in (rest).
WSHL_RBIT : Left shift on word with shifted bit retrieval.
DSHL_RBIT
WSHRZ_C
DSHRZ_C
: Left shift on double word with shifted bit retrieval.
: Right shift on word, filling with 0s and shifted bit retrieval.
: Right shift on double word, filling with 0s and shifted bit retrieval.
WSHR_RBIT
DSHR_RBIT
: Right shift on word with sign extension and shifted bit retrieval.
: Right shift on double word with sign extension and shifted bit retrieval.
Ladder language
OPERATE
WSHL_RBIT(%MW20,%MW30,%MW21,%MW10)
OPERATE
WSHRZ_C(%MW20,%MW30,%MW21,%MW10)
OPERATE
DSHR_RBIT(%MD30,%MW40,%MD20,%MD10)
Instruction list language
LD TRUE
[WSHL_RBIT(%MW20,%MW30,%MW21,%MW10)]
LD TRUE
[WSHRZ_C(%MW20,%MW30,%MW21,%MW10)]
LD TRUE
[DSHR_RBIT(%MD30,%MW40,%MD20,%MD10)]
Structured text language
TLX DR PL7 xxE
241
Advanced instructions
Examples
WSHL_RBIT(%MW20,%MW30,%MW21,%MW10) ;
WSHRZ_C(%MW20,%MW30,%MW21,%MW10) ;
DSHR_RBIT(%MD30,%MW40,%MD20,%MD10) ;
WSHL_RBIT(%MW20,%MW30,%MW21,%MW10) with %MW30 = 4 rest = %MW10
0000 0000 0000 0001
Copy shifted bits
A = %MW20
0001 1111 0110 1000 result = %MW21
1111 0110 1000 0000
Completing bits on each zero
WSHRZ_C(%MW20,%MW30,%MW21,%MW10) with %MW30 = 4 a = %MW20
1000 0000 1111 0001 0001 rest = %MW10
0000 0000 0000
Copy shifted bits result = %MW21
0000 1000 0000 1111
Completing bits on each zero
DSHR_RBIT(%MD30,%MW40,%MD20,%MD10) with %MW40 = 6 a = %MD30 rest = %MD10
1000 0000 1111 0001 0000 0000 0000 0000
PF
0000 0000 11 00 1111 0000 0000 11 00 1111 Pf
Copy shifted bits retain sign result = %MD20
1 111 11 10 0000 0011
PF
1100 0100 1111 0011 Pf spread sign bit in bits freed by shifting
242
TLX DR PL7 xxE
Syntax
TLX DR PL7 xxE
Advanced instructions
Shift register operators on words with shifted bit retrieval
Syntax
WSHL_BIT (a, nbit, résu, rest)
WSHRZ_C (a, nbit, résu, rest)
WSHR_RBIT (a, nbit, résu, rest)
Shift register operands on words with shifted bit retrieval
Type
Words which can be indexed a
%MW,%KW
Words which can not be indexed
%IW,%QW,%SW,
%NW, Imm.value,
Num.expression
nbit
%MW,%KW,%Xi.T
%IW,%QW,%SW,
%NW, Imm.value,
Num.expression
résu, rest
%MW
%QW,%SW,%NW
Shift register operators on double words with shifted bit retrieval
Syntax
DSHL_BIT (a, nbit, résu, rest)
DSHRZ_C (a, nbit, résu, rest)
DSHR_RBIT (a, nbit, résu, rest)
Shift register operands on double words with shifted bit retrieval
Type
Double words which can be indexed a
%MD,%KD
Double words which can not be indexed
Words which can be indexed
Words which can not be indexed
-
%ID,%QD,%SD,
Immediate value,
Num.expression
nbit
-
-
%IW,%QW,%SW,
%NW, Imm.value,
Num.expression
résu, rest
%MD
%QD,%SD
%MW,%KW,%Xi.T
-
-
Note: If the parameter (nbit) is not between 1 and 16 for word shifts, or between 1 and 32 for double word shifts, the outputs (résu) and (rest) are not significant and the %S18 system bit is set to 1.
243
Advanced instructions
Up/down counting with overshoot signaling
General
Structure
The function is used to up/down count with overshoot signaling. This function is only executed if the confirmation input (en) is set.
Two separate inputs (cu and cd) are used to up and down count the events. The output (Qmin) is set to 1 as soon as the minimum threshold (min) has been reached, the output (Qmax) is set to 1 as soon as the maximum threshold (max) is reached.
The initial count value is set by the parameter (pv) and the current count value is given by the parameter (cv).
A 16 bit word (mwd) is used to store the state of the cu and cd inputs (bit 0 for storing cu and bit 1 for storing cd).
Ladder language
OPERATE
SCOUNT(%M9,%MW10,%M11,%M12,%MW11,
%MW12,%M16,%M10,%MW15,%MW20)
Instruction list language
LD TRUE
[SCOUNT(%M9,%MW10,%M11,%M12,%MW11,%MW12,%M16,%M10,%MW15,%MW2
0)]
Structured text language
SCOUNT(%M9,%MW10,%M11,%M12,%MW11,%MW12,%M16,%M10,%MW15,%MW20
) ;
244
TLX DR PL7 xxE
Examples
Advanced instructions
SCOUNT(%M9,%MW10,%M11,%M12,%MW11,%MW12,%M16,%M10,%MW15,%MW20
) with %MW10 (pv) = 5, %MW11 (min) = 0, %MW12 (max) = 7 en:%M9 cd:%M12 mcd:%MW20:X1 cu:%M11 mcu:%MW20:X0
Qmax:%M10
Qmin:%M16 cv=%MW15 5 4 5 6 5 6 7 5
TLX DR PL7 xxE
245
Advanced instructions
Syntax Up/down counting operators with overshoot signaling
Syntax
SCOUNT (en, pv, cu, cd, min, max, Qmin, Qmax, cv, mwd)
Up/down counting operands with overshoot signaling
Type
Bits
Words which can be indexed
Words which can not be indexed
en, cu, cd
%I,%Q,%M,%S,
%BLK,%.:Xk
-
Qmin, Qmax
%I,%Q,%M
-
pv, min, max
cv,mwd
-
%MW,%KW,%Xi.T %MW
%IW,%QW,%SW,
%NW, Imm.value,
Num.expression
%QW,%SW,
%NW l l l
Note: l If (en) = 0 then the function is no longer enabled and on each call, there is:
Qmin = Qmax = 0 l mcu = mcd = 0 cv = pv
If max > min then: cv >= max ---> Qmax = 1 and Qmin = 0 l min < cv < max ---> Qmax = Qmin = 0 cv <= min ---> Qmax = 0 and Qmin = 1
If max < min then: max <= cv <= min ---> Qmax = 1 and Qmin = 0 cv < max ---> Qmax = 0 and Qmin = 1 cv > min ---> Qmax = 1 and Qmin = 0 l If max = min then: cv < min and max ---> Qmax = 0 and Qmin = 1 cv >= min and max ---> Qmax = 1 and Qmin = 0
There is no incidence of a modification of parameter (pv) with (en) in state 1
A negative value for parameters (pv) and (min) is interpreted as a zero value.
A value lower than 1 for the parameter (max) is interpreted as being equal to 1.
246
TLX DR PL7 xxE
Advanced instructions
Rotate shifts
General
Structure
The functions rotate the shifts left or right on a word or double word.
l l l l
ROLW
RORW
ROLD
RORD
: rotate shift left on a word with a number of calculated shift registers
: rotate shift right on a word with a number of calculated shift registers
: rotate shift left on a double word with a number of calculated shift registers
: rotate shift right on a double word with a number of calculated shift registers
Ladder language
%M0
%MW0:=ROLW(%MF10,%MW5)
%I3.2
%MD8:=RORD(%MD50,%MW5)
Instruction list language
LD %M0
[%MW0:=ROLW(%MW10,%MW5)]
LD %I3.2
[%MD10:=RORD(%MD100,%MW5)]
Structured text language
IF %M0 THEN
%MW0:=ROLW(%MW10,%MW5) ;
END_IF;
IF %I3.2 THEN
%MD8:=RORD(%MD100,%MW5) ;
END_IF
TLX DR PL7 xxE
247
Advanced instructions
Syntax Rotate shift operators
Operators
ROLW, RORW, ROLD, RORD
Syntax
Op1:=Operator(Op2,n)
Rotate shift operands on a word ROLW , RORW
Type
Words which can be indexed
Words which can not be indexed
Operand 1
(Op1)
%MW
-
Operand 2 (Op2)
%MW,%KW,%Xi.T
Imm.val.,%IW,%QW,%S
W,%NW,%BLK,
Num.expr.
Position number (n)
%MW,%KW,%Xi.T
Imm.val. %IW,%QW,
%SW,%NW,%BLK,
Num.expr.
Rotate shift operands on a double word ROLD , RORD
Operand 2 (Op2) Type
Words which can be indexed
Words which can not be indexed
Operand 1
(Op1)
%MD
%QD,%SD
%MD,%KD
Position number (n)
%MW,%KW,%Xi.T
Imm.val.,%ID,%QD,%SD
,Num.expr.
Imm.val. %IW,%QW,
%SW,%NW,%BLK,
Num.expr.
Note: The preferred basic instructions are ROL and ROR (when the shift register number is static, because these instructions have a higher performance.
248
TLX DR PL7 xxE
2.11
Timing functions
Introduction
Aim of this subsection
What's in this
Section?
This sub-section describes PL7 language timing functions
This Section contains the following Maps:
Topic
Timing functions
Engagement timing (on delay) function
Release timing (off delay) function
Pulse timer function
Rectangular signal generator function
Advanced instructions
Page
TLX DR PL7 xxE
249
Advanced instructions
Timing functions
General As opposed to the predefined function blocks, these timing functions are not limited l l l l in number and can be used in the DFB function block code.
4 timing functions are available.
FTON : Engagement timing (on delay).
FTOF
FTP
: Release timing (off delay).
: Pulse timing: Timing
FPULSOR : rectangular signal: Timing
250
TLX DR PL7 xxE
Advanced instructions
Engagement timing (on delay) function
General
Structure
Syntax
This function is used to manage the delays on engagement. This delay is programmable
Ladder language
%I1.2
OPERATE
FTON(%I3.0,1000,%Q4.0,%MW2,%MD8)
Instruction list language
LD I1.2
[FTON(%I3.0,1000,%Q4.0,%MW2,%MD8)]
Structured text language
IF %I1.2 THEN
FTON(%I3.0,1000,%Q4.0,%MW2,%MD8) ;
END_IF;
FTON engagement timing function operators
Syntax
FTON (EN,PT,Q,ET,PRIV)
FTON engagement timing function operands
Type
Words which can be indexed
Words which can not be indexed
EN
-
-
Double words which can be indexed
Bits
-
%I,%Q,%M,
%S,%BLK,
%*:Xk,%X
PT
%MW,%KW,
%Xi.T
Q
-
%IW,%QW,
%SW,%NW,
Immediate value,
Numeric expression
-
-
%I,%Q,%M
%S,%*:Xk,
%X
ET
%MW
PRIV
-
%IW,%QW -
-
-
%MD
-
TLX DR PL7 xxE
251
Advanced instructions
Characteristics FTON engagement timing function characteristics
Characteristic
Input "Activation"
Preset value
Output "Timer"
Current value
Calculation variable
Address Value
EN The timing starts on rising edge
PT Input word which determines the timing length (in one hundredths of a second). It is used to define a maximum duration of 5 min and 27 s to the nearest
10 ms. (1)
Q
ET
PRIV
Output set to 1 on time-out.
Output word which increases from 0 to PT on completion of the timer cycle.
Double word for internal latching. An application variable exclusively reserved for this is associated with this double word.
Note: (1) a modification of this word is taken into account during the timing.
Operation
Step
1
2
3
FTON engagement timing function operation description
Action
Rising edge on the EN input
The current value has reached
PT the EN input is clear
Description
The timer is started: its current value ET increases from 0 to PT
(hundredths of a second).
The output bit Q switches to 1, then stays at 1 whilst the input EN is at 1.
The timer is stopped even if it was still running:
ET takes a 0 value.
Illustration
EN
Q
PT
ET
(1) (2) (3) (1) (3) (1) (2)
252
TLX DR PL7 xxE
Advanced instructions
Release timing (off delay) function
General
Structure
This function is used to manage the release delays. This delay is programmable
Ladder language
%I1.2
OPERATE
FTOF(%I3.0,1000,%Q4.0,%MW2,%MD8)
Syntax
Instruction list language
LD I1.2
[FTOF(%I3.0,1000,%Q4.0,%MW2,%MD8)]
Structured text language
IF %I1.2 THEN
FTOF(%I3.0,1000,%Q4.0,%MW2,%MD8) ;
END_IF;
FTOF Release timing function operators
Syntax
FTOF (EN,PT,Q,ET,PRIV)
FTOF Release timing function operands: identical to FTON (See Engagement
timing (on delay) function, p. 251)
TLX DR PL7 xxE
253
Advanced instructions
Characteristics FTOF Release timing function characteristics
Characteristic
Input "Activation"
Preset value
Output "Timer"
Current value
Calculation variable
Address Value
EN The timing starts on falling edge
PT Input word which determines the timing length (in one hundredths of a second). It is used to define a maximum duration of 5 min and 27 s with a 10 ms precision. (1)
Q
ET
PRIV
Output set to 1 on rising edge of EN and set to 0 on time-out.
Output word which increases from 0 to PT on completion of the timer cycle.
Double word for internal latching. An application variable exclusively reserved for this is associated with this double word.
Note: (1) a modification of this word is taken into account during the timing.
Operation
Step
1
2
3
FTOF release timing function operation description
Action Description Illustration
Rising edge on the EN input
On falling edge of
EN input
When the current value has reached PT.
The current ET value takes a 0 value
(even if the timer is still running) and the output bit Q switches to 1 (or remains at
1)
EN the timer is started, then the current value increases from 0 to PT
(hundredths of a second).
Q
Output bit Q falls back to 0.
PT
ET
1 2 3 1 2 1 2 3
254
TLX DR PL7 xxE
Advanced instructions
Pulse timer function
General
Structure
This function is used to generate a pulse of precise duration. This duration can be programmed.
Ladder language
%I1.2
OPERATE
FTP(%I3.0,1000,%Q4.0,%MW2,%MD8)
Syntax
Instruction list language
LD I1.2
[FTP(%I3.0,1000,%Q4.0,%MW2,%MD8)]
Structured text language
IF %I1.2 THEN
FTP(%I3.0,1000,%Q4.0,%MW2,%MD8) ;
END_IF;
FTP pulse timer function operators
Syntax
FTP(EN,PT,Q,ET,PRIV)
FTP pulse timer function operands: identical to FTON (See Engagement timing (on
TLX DR PL7 xxE
255
Advanced instructions
Characteristics FTP pulse timer function characteristics
Characteristic
Input "Activation"
Preset value
Output "Timer"
Current value
Calculation variable
Address Value
EN The timing starts on falling edge
PT Input word which determines the timing length (in one hundredths of a second). It is used to define a maximum duration of 5 min and 27 s with a 10 ms precision. (1)
Q
ET
PRIV
Output set to 1 on time-out.
Output word which increases from 0 to PT on completion of the timer cycle.
Double word for internal latching. An application variable exclusively reserved for this is associated with this double word.
Note: (1) a modification of this word is taken into account during the timing.
Operation
Step
1
2
3
FTP pulse timer function operating description
Action Description Illustration
Rising edge on the EN input
When the current value has reached PT.
The timer is started (if it is not already on) and the current ET value advances from 0 to PT (hundredths of a second).
Output bit Q switches to 1
EN
Output bit Q falls back to 0.
Q
The EN input and output Q are at 0
PT takes a 0 value.
PT
ET
1 2 3 1 3 1 2
This monostable cannot be reactivated.
256
TLX DR PL7 xxE
Advanced instructions
Rectangular signal generator function
General
Structure l l
This function is for generating a periodic rectangular signal, the set slot size and clear slot size of which can be varied by the program using 2 timers:
TON : rise timing (for the set slot).
TOFF : fall back timing (for the clear slot).
Ladder language
OPERATE
FPULSOR(%I3.0,500,200,%Q4.0,%MW2,%MD8)
Instruction list language
LD TRUE
[FPULSOR(%I3.0,500,200,%Q4.0,%MW2,%MD8)]
Structured text language
IF %I1.2 THEN
FPULSOR(%I3.0,500,200,%Q4.0,%MW2,%MD8) ;
END_IF;
TLX DR PL7 xxE
257
Advanced instructions
Syntax FPULSOR rectangular signal generator function operators
Syntax
FPULSOR (EN,TON,TOFF,Q,ET,PRIV)
FPULSOR rectangular signal generator function operands
Type EN
Words which can be indexed
-
Words which can not be indexed
-
Double words which can be indexed
-
Bits %BLK,%*:Xk,
%X
TON,TOFF
%MW,%KW,
%Xi.T
-
-
%I,%Q,%M,
%S
Q
-
-
-
ET
%MW
%IW,%QW
-
%S,%*:Xk,%X %I,%Q,%M
PRIV
-
-
%MD
-
Characteristics FPULSOR rectangular signal generator function characteristics
Characteristic
Input "Activation"
Preset value (slot set)
Preset value (slot clear)
Address Value
EN The rectangular signal generation starts on rising edge
TON
TOFF
The input word determining the period (in hundredths of a second) of the set slot period. It is used to set a maximum duration of 5 min and 27 s to the nearest
10 ms. (1)
The input word determining the period (in hundredths of a second) of the clear slot period. It is used to set a maximum duration of 5 min and 27 s to the nearest
10 ms. (1)
Rectangular signal output
Current value
Q
ET
Output slot clear on the TOFF period, set on the TON period.
Output word which increases from 0 to TON+TOFF on completion of the timer cycle.
258
TLX DR PL7 xxE
Characteristic
Calculation variable
Advanced instructions
Address Value
PRIV Double word for internal latching. An application variable exclusively reserved for this is associated with this double word.
Note: (1) a modification of these words is taken into account during timing. The
TOFF+TON sum has a maximum duration of 5 min and 27 s.
Operation
Step
1
2
3
4
FPULSOR rectangular signal generator function operating description:
Action
Rising edge on the EN input
Description Illustration
The rectangular signal is generated:
(if the signal is not already on) its current ET value increases from 0 to
TON+TOFF (hundredths of a second).
EN
As long as the
TOFF timing has not elapsed
Output bit Q remains at 0.
TOFF is complete, TON is engaged
Output bit Q switches to 1 until the end of TON and the generator loops back on (2) and (3)
EN switches to 0 TON and TOFF are reset to 0, output bit Q switches to 0
Q
TON+TOFF
ET
TOFF
TON
TOFF
TON
TOFF
TLX DR PL7 xxE
259
Advanced instructions
2.12
Data storage functions
Introduction
Aim of this subsection
What's in this
Section?
This sub-section describes PL7 language data storage functions
This Section contains the following Maps:
Topic
Data Archiving Functions
Initializing the Extended Archiving Zone
Archiving Zone Initialization
Writing Data to the Extended Archiving Zone
Writing Data to the Archiving Zone
Reading Data to the Extended Archiving Zone
Reading Data to the Archiving Zone
Page
260
TLX DR PL7 xxE
Advanced instructions
Data Archiving Functions
At a Glance
Example of
Application
Different
Functions
These functions allow the archiving of data by program in a dedicated zone for user memory cards. l l automatic storage of application data (status report log, history etc.) in the user memory card located in the memory slot in the PLC processor.
saving of production acceptance tests in the same memory card.
6 functions allow data to be archived and restored.
The following functions are applied to any of the type 1 PCMCIA memory cards
(memory cards located in slot 0 of the processor) and the type 3 cards (memory l l cards located in slot 1 of the processor). l SET_PCM_EXT : to initialize at a value all or part of the memory card's archiving zone,
WRITE_PCM_EXT to write data into the archiving zone in the memory card,
READ_PCM_EXT : to read data in the memory card's archiving zone.
Note: These functions require: l l
PL7 V4.2 or above, a PLC operating system version (SV), which is equal or above 5.2.
The following functions only apply to the type 1 PCMCIA memory card (memory l l cards located in slot 0 of the processor). l SET_PCMCIA : to initialize at a value all or part of the memory card's archiving zone,
WRITE_PCMCIA
READ_PCMCIA
to write data into the archiving zone in the memory card,
: to read data in the memory card's archiving zone.
Note: access to data stored in the archiving zone of a memory card is only possible from the application in the PLC for these 6 base functions. A remote station
CANNOT be accessed directly through a network or communication bus.
TLX DR PL7 xxE
261
Advanced instructions
Initializing the Extended Archiving Zone
At a Glance
Example
The SET_PCM_EXT function allows the initialization at the desired value of all or part of the memory card's archiving zone.
This function uses 5 parameters: l l l l l
SLOT : number of the path where the PCMCIA memory card is inserted: l 0 for a card located in slot 0 of the CPU (type 1 PCMCIA card), l 1 for a card located in slot 1 of the CPU (type 3 PCMCIA card).
DEST : address of the archiving zone, from which the Initialization will be performed
NUM : number of words to be initialized
VAL : Initialization value
CR : code giving the result from executing the Initialization command
Illustration of the user memory card:
100
100
100
1500
SET_PCM_EXT
100 l l l l
In this example:
SLOT = %MD1, where %MD1 contains the value of 1
DEST
NUM
VAL
= %MD2, where %MD2 contains the value of 1500
= %MW5, where %MW5 contains the value 30
= %MD10, where %MD10 contains the value 100
1529
262
TLX DR PL7 xxE
Structure
Syntax
TLX DR PL7 xxE
Advanced instructions
Ladder language :
%I1.3
P SET_PCM_EXT(%MW1,%MD2,%MW5,%MW10,%MW0)
Instruction list language
LDR %I1.3
[SET_PCM_EXT(%MW1,%MD2,%MW5,%MW10,%MW0)]
Structured text language :
IF RE %I1.3 THEN
SET_PCM_EXT(%MW1,%MD2,%MW5,%MW10,%MW0) ;
END_IF;
Function syntax:
SET_PCM_EXT (SLOT,DEST,NUM,VAL,CR)
Parameters:
Type
Indexable words
SLOT
%MW,
Val.imm.
Non-indexable words -
DEST
-
NUM
%MW,
Val.imm.
-
VAL
%MW,
Val.imm.
-
CR
%MW
%QW,%SW,
%NW
Indexable double words
Non-indexable double words
-
-
%MW,Val.imm.
-
%QD,%SD -
-
-
Coding of the status parameter, returned after the initialization command:
Meaning Value
(hexadecimal)
0000
0201
0202
0204
0241
0242 initialization performed correctly no file zone in the memory card memory card fault memory card write-protected
DEST < 0
DEST + NUM - 1 -> highest address in the card
263
Advanced instructions
Value
(hexadecimal)
0401
0402
0501
Meaning
NUM = 0 or negative incorrect slot number (different from 0 or 1)
Functionality not supported
264
TLX DR PL7 xxE
Advanced instructions
Archiving Zone Initialization
At a Glance
Example
The SET_PCMCIA function allows the initialization at the desired value all or part of the user memory card (type 1 PCMCIA) archiving zone.
This function uses 4 parameters: l l l l
DEST : address of the archiving zone, from which the Initialization will be performed
NUM : number of words to be initialized
VAL : Initialization value
CR : code giving the result from executing the Initialization command
Illustration of the user memory card:
100
100
100
1500
SET_PCMCIA
100 l l l
In this example:
DEST = %MD0, where %MD0 contains the value 1500
NUM
VAL
= %MW5, where %MW5 contains the value 30
= %MD10, where %MD10 contains the value 100
1529
TLX DR PL7 xxE
265
Advanced instructions
Structure Ladder language :
%I1.3
P SET_PCMCIA(%MD0,%MW5,%MW10,%MW2)
Instruction list language
LDR %I1.3
[SET_PCMCIA(%MD0,%MW5,%MW10,%MW2)]
Syntax
Structured text language :
IF RE %I1.3 THEN
SET_PCMCIA(%MD0,%MW5,%MW10,%MW2) ;
END_IF;
Function syntax:
SET_PCMCIA (DEST,NUM,VAL,CR)
Parameters:
Type
Indexable words
DEST
-
Non-indexable words -
%MW,Val.imm.
NUM VAL CR
%MW,Val.imm.
%MW,Val.imm.
%MW
-
-
%QW,%SW,
%NW
Indexable double words
Non-indexable double words
%QD,%SD -
Coding of the CR parameter, returned after the initialization command:
Meaning Value
(hexadecimal)
0000
0201
0202
0204
0241
0242
0401 initialization performed correctly no file zone in the memory card memory card fault memory card write-protected
DEST negative
EST + NUM - 1 -> highest address in the memory card
NUM = 0 or negative
266
TLX DR PL7 xxE
Advanced instructions
Writing Data to the Extended Archiving Zone
At a Glance
Example l l l
The WRITE_PCM_EXT function allows the transfer of PLC RAM memory data
(%MW words) into the user memory card archiving zone.
This function uses 5 parameters: l SLOT : number of the path where the PCMCIA memory card is inserted: l 0 for a card located in slot 0 of the CPU (type 1 PCMCIA card), l 1 for a card located in slot 1 of the CPU (type 3 PCMCIA card).
DEST : address of the archiving zone, from which the data will be stored
NUM
EMIS
: number of words to be stored
: word containing the starting address of the zone to be transferred to the l memory card
CR : code giving the result of the write command.
Illustration:
PLC RAM memory User Memory Card
%MW40
1500
%MW69
WRITE_PCM_EXT
1529 l l l l
In this example:
SLOT = %MD1, where %MD1 contains the value 1
DEST
NUM
EMIS
= %MD2, where %MD2 contains the value 1500
= %MW5, where %MW5 contains the value 30
= %MD20, where %MD20 contains the value 40
TLX DR PL7 xxE
267
Advanced instructions
Structure Ladder language :
%I1.3
P WRITE_PCM_EXT(%MW1,%MD2,%MW5,%MW20,%MW0)
Instruction list language :
LDR %I1.3
[WRITE_PCM_EXT(%MW1,%MD2,%MW5,%MW20,%MW0)]
Structured text language :
IF RE %I1.3 THEN
WRITE_PCM_EXT(%MW1,%MD2,%MW5,%MW20,%MW0) ;
END_IF;
268
TLX DR PL7 xxE
Syntax
Advanced instructions
Function syntax:
WRITE_PCM_EXT (SLOT,DEST,NUM,VAL,CR)
Parameters:
Type
Indexable words
SLOT
%MW,
Val.imm.
Non-indexable words -
DEST
-
NUM
%MW,
Val.imm.
-
EMIS
%MW,
Val.imm.
-
CR
%MW
%QW,%SW,
%NW
Indexable double words
Non-indexable double words
-
-
%MW,Val.imm.
-
%QD,%SD -
-
-
Coding of the status parameter, returned after the write command:
Meaning
0241
0242
0401
0402
0501
Value
(hexadecimal)
0000
0102
0104
0201
0202
0204
Write performed correctly
EMIS + NUM - 1 -> maximum number of %MW declared in the PLC no valid application or no %MW in the PLC no file zone in the memory card memory card fault memory card write-protected
DEST < 0
DEST + NUM - 1 -> highest address in the memory card
NUM = 0 incorrect slot number (different from 0 or 1)
Functionality not supported
TLX DR PL7 xxE
269
Advanced instructions
Writing Data to the Archiving Zone
At a Glance
Example
The WRITE_PCMCIA function allows the transfer of PLC RAM memory data (%MW l l l words) to the user memory card archiving zone (type 1 PCMCIA).
This function uses 4 parameters:
DEST : address of the archiving zone, from which the data will be stored
NUM
EMIS
: number of words to be stored
: word containing the starting address of the zone to be transferred to the memory card l CR : code giving the result of the write command.
Illustration:
PLC RAM memory User Memory Card
%MW40
1500
%MW69
WRITE_PCMCIA
1529
In this example: l l l
DEST
NUM
EMIS
= %MD0, where %MD0 contains the value 1500
= %MW5, where %MW5 contains the value 30
= %MD20, where %MD20 contains the value 40
270
TLX DR PL7 xxE
Advanced instructions
Structure Ladder language :
%I1.3
P WRITE_PCMCIA(%MD0,%MW5,%MW20,%MW2)
Instruction list language :
LDR %I1.3
[WRITE_PCMCIA(%MD0,%MW5,%MW20,%MW2)]
Structured text language :
IF RE %I1.3 THEN
WRITE_PCMCIA(%MD0,%MW5,%MW20,%MW2) ;
END_IF;
Syntax Function syntax:
WRITE_PCMCIA (DEST,NUM,EMIS,CR)
Type
Indexable words
Non-indexable words
Parameters:
DEST
-
-
NUM
%MW,Val.imm.
-
EMIS
%MW,Val.imm.
-
Indexable double words
Non-indexable double words
%MW,Val.imm.
%QD,%SD
-
-
-
-
Coding of the CR parameter, returned after the write command:
Meaning Value
(hexadecimal)
0000
0102
0104
0201
0202
0204
0241
0242
0401
Write performed correctly
EMIS + NUM - 1 -> maximum number of %MW declared in the PLC no valid application or no %MW in the PLC no file zone in the memory card memory card fault memory card write-protected
DEST < 0
DEST + NUM - 1 -> highest address in the memory card
NUM = 0
-
-
CR
%MW
%QW,%SW,%N
W
TLX DR PL7 xxE
271
Advanced instructions
Reading Data to the Extended Archiving Zone
At a Glance
Example l l l
The READ_PCM_EXT function allows the transfer of data from the archiving zone of the user memory card to the PLC RAM memory (%MW words).
This function uses 5 parameters: l SLOT : number of the path where the PCMCIA memory card is inserted: l 0 for a card located in slot 0 of the CPU (type 1 PCMCIA card), l 1 for a card located in slot 1 of the CPU (type 3 PCMCIA card).
SRC : address of the archiving zone, in which the data to be read is stored
NUM : number of words to be read
RCPT : word containing the starting address of the zone transferred by the l memory card
CR : code giving the result from executing the read command
Illustration:
PLC RAM memory User Memory Card
%MW40
1500
%MW69
READ_PCM_EXT
1529 l l l l
In this example:
SLOT = %MD1, where %MD1 contains the value 1
SRC
NUM
= %MD2, where %MD2 contains the value 1500
= %MW5, where %MW5 contains the value 30
RCPT = %MD20, where %MD20 contains the value 40
272
TLX DR PL7 xxE
Structure
Syntax
TLX DR PL7 xxE
Advanced instructions
Ladder language :
%I1.4
P READ_PCM_EXT(%MW1,%MD2,%MW5,%MW20,%MW0)
Instruction list language :
LDR %I1.4
[READ_PCM_EXT(%MW1,%MD2,%MW5,%MW20,%MW0)]
Structured text language :
IF RE %I1.4 THEN
READ_PCM_EXT(%MW1,%MD2,%MW5,%MW20,%MW0) ;
END_IF;
Function syntax:
READ_PCM_EXT (SLOT,SRC,NUM,RCPT,CR)
Parameters:
Type
Indexable words
SLOT
%MW,
Val.imm.
Non-indexable words -
SRC
-
NUM
%MW,
Val.imm.
-
RCPT
%MW,
Val.imm.
-
CR
%MW
%QW,%SW,
%NW
Indexable double words
Non-indexable double words
-
-
%MW,Val.imm.
-
%QD,%SD -
-
-
Coding of the CR parameter, returned after the write command:
Meaning Value
(hexadecimal)
0000
0102
0104
0201
0202
0204 read performed correctly
SRC + NUM -1 -> maximum number of %MW declared in the PLC no valid application or no %MW in the PLC no file zone in the memory card memory card fault memory card write-protected
273
Advanced instructions
Value
(hexadecimal)
0241
0242
0401
0402
0501
Meaning
SRC < 0
SRC + NUM -1 -> highest address in the memory card
NUM = 0 incorrect slot number (different from 0 or 1)
Functionality not supported
274
TLX DR PL7 xxE
Advanced instructions
Reading Data to the Archiving Zone
At a Glance
Example
The READ_PCMCIA function allows the transfer of user memory card (type 1 l l l
PCMCIA) archiving zone data to the PLC RAM memory (%MW words).
This function uses 4 parameters:
SRC : address of the archiving zone, in which the data to be read is stored
NUM : number of words to be read
RCPT : word containing the starting address of the zone transferred by the memory card l CR : code giving the result from executing the read command
Illustration:
PLC RAM memory User Memory Card
%MW40
1500
%MW69
READ_PCMCIA
1529
In this example: l l l
SRC
NUM
= %MD0, where %MD0 contains the value of 1500
= %MW5, where %MW5 contains the value 30
RCPT = %MD20, where %MD20 contains the value 40
TLX DR PL7 xxE
275
Advanced instructions
Structure Ladder language :
%I1.4
P READ_PCMCIA(%MD0,%MW5,%MW20,%MW2)
Syntax
276
Instruction list language :
LDR %I1.4
[READ_PCMCIA(%MD0,%MW5,%MW20,%MW2)]
Structured text language :
IF RE %I1.4 THEN
READ_PCMCIA(%MD0,%MW5,%MW20,%MW2) ;
END_IF;
Function syntax:
READ_PCMCIA (SRC,NUM,RCPT,CR)
Parameters:
Type
Indexable words
SRC
-
Non-indexable words -
%MW,Val.imm.
NUM RCPT CR
%MW,Val.imm.
%MW,Val.imm.
%MW
-
-
%QW,%SW,
%NW
Indexable double words
Non-indexable double words
%QD,%SD -
Coding of the CR parameter, returned after the write command:
Meaning Value
(hexadecimal)
0000
0102
0104
0201
0202
0204
0241 read performed correctly
RCPT + NUM - 1 -> maximum number of %MW declared in the PLC no valid application or no %MW in the PLC no file zone in the memory card memory card fault memory card write-protected
SRC < 0
TLX DR PL7 xxE
Value
(hexadecimal)
0242
0401
Advanced instructions
Meaning
RCPT + NUM - 1 -> highest address in the memory card
NUM = 0
TLX DR PL7 xxE
277
Advanced instructions
2.13
Grafcet functions
Step activity time reset to zero function
General This function resets all sequential "Chart" processing or macro step activity times.
This function is enabled on the Premium/Atrium PLC (software version 3.0V or above).
It has the following input and output parameters:
Type
Input
Output
Parameters Role
In Function enabling condition
Num
Result
Grafcet module number to be reset.
This is equal to: l l
-1 if the module is "Chart" sequential processing, or the macro step number concerned.
Report on the execution of the function.
Structure Ladder language
%MW0:=RESET_XIT(%M1,-1)
Instruction list language
LD True
[%MW0:=RESET_XIT(%M1,-1)]
Structured text language
%MW0:=RESET_XIT(%M1,-1) ;
278
TLX DR PL7 xxE
Syntax
Result
Advanced instructions
Operator:
Syntax
Result:=RESET_XIT (In,Num)
Operands:
Type Result
Bits
Words
-
%MW
Confirmation condition
(In)
%M
-
Grafcet module number
(Num)
-
%MW, %KW,
Immediate value
Encoding of the returned result parameter after execution of the instruction:
Meaning Value (in hexadecimal)
0000
FFFF
FFFA
Correct operation
Input parameter outside limits: the macro step does not exist in the application.
The PLC-type is a MICRO
TLX DR PL7 xxE
279
Advanced instructions
280
TLX DR PL7 xxE
System objects
3
Introduction
Aim of this section
What's in this
Chapter?
This section describes all the PL7 language system bits and system words
This Chapter contains the following Sections:
Section
3.1
3.2
Topic
System Bits
System words
Page
TLX DR PL7 xxE
281
System objects
3.1
System Bits
Introduction
Aim of this subsection
What's in this
Section?
This chapter describes the PL7 language system bits.
This Section contains the following Maps:
Topic
System bit introduction
Description of system bits %S0 to %S7
Description of System Bits %S8 to %S16
Description of system bits %S17 to %S20
Description of system bits %S21 to %S26
Description of system bits %S30 to %S59
Description of system bits %S60 to %S69
Description of System Bits %S70 to %S92
Description of system bits %S94 to %S99
Description of system bits %S100 to %S119
Page
282
TLX DR PL7 xxE
System objects
System bit introduction
General The TSX 37 and TSX 57 PLCs use %Si system bits which indicate the state of the
PLC, or they can be used to operate its functioning.
This bits can be tested in the user program to detect any function event before starting a set processing procedure. Some bits must be reset to their initial or usual state by program. However, the system bits, which are reset to their initial or usual state by the system, must not be done so by program or by the terminal.
TLX DR PL7 xxE
283
System objects
Description of system bits %S0 to %S7
In-depth description
Bit Function
Description of system bits %S0 to %S7
%S0
%S1
%S4
Cold start
Warm restart
Time base
10 ms
Description
Normally on 0, this bit is set on 1 by: l l l l l loss of data on power restart (battery fault), the user program, the terminal, cartridge uploading, pressing on the RESET button.
This bit goes to 1 during the first complete cycle. It is reset to 0 before the following cycle.
(Operation (("Operating Modes" - Reference Manual
Volume 1)))
Normally on 0, this bit is set on 1 by: l l l power restart with data save, the user program, the terminal.
It is reset to 0 by the system at the end of the first complete cycle and before output is updated.
(Operation (("Operating Modes" - Reference Manual
Volume 1)))
An internal timer regulates the change in status of this bit.
It is asynchronous in relation to the PLC cycle.
Graph :
Initial state
0
0
-
TSX37 TSX57
YES
YES
YES
YES
YES
YES
%S5
%S6
%S7
5ms 5ms
Time base
100 ms
Idem %S4
Time base 1 s Idem %S4
Time base
1 mn
Idem %S4
-
-
-
YES
YES
YES
YES
YES
YES
284
TLX DR PL7 xxE
System objects
Description of System Bits %S8 to %S16
Detailed
Description
Bit
%S8
%S9
%S9
%S10
%S11
%S13
%S15
Description of System Bits %S8 to %S16
Function Description
Wiring test Normally set to 1, this bit is used to test the wiring when the TSX 37 is in "non-configured" state.
l l at 1: the outputs are forced to 0, at 0: the outputs can be modified from a configuration terminal.
Setting outputs to 0
Normally at 0, can be set to 1 by the output program or from the terminal: l at 1: all discrete and analog outputs are set to 0, whatever the fallback mode configured for each module, l at 0: the outputs are updated normally.
Outputs on all buses to fallback
I/O fault
Normally at 0, can be set to 1 by the program or from the terminal: l at 1: all Discrete and Analog outputs set to fallback position (0 or 1) depending on the choice made in the l configuration, at 0: the outputs are updated normally.
Normally at 1. Is set to 0 when an I/O fault is detected on an in-rack module or a remote module (FIPIO) (noncompliant configuration, exchange fault, hardware fault).
The bit %S10 is reset to 1 when the fault disappears.
Watchdog overflow
First cycle after switching to
RUN
Normally at 0, is set to 1 by the system during the first cycle after the PLC switches to RUN.
Character string fault
Normally at 0, is set to 1 by the system when the execution time of a task exceeds the maximum execution time
(watchdog) declared in the configuration. A watchdog overflow causes the PLC to switch to STOP and the application stops in error state (ERR LED flashing).
Normally set to 0, is set to 1 when the destination zone for a character string transfer is not of sufficient size to receive this character string. This bit must then be reset to
0 by the user. Each task manages its own %S15 bit.
Initial state
1
0
0
1
0
-
0
TSX37 TSX57
YES
YES
NO
YES
YES
YES
YES
NO
NO
YES
YES
YES
YES
YES
TLX DR PL7 xxE
285
System objects
Bit
%S16
Function
I/O task fault
Description
Normally at 1, is set to 0 by the system when a fault occurs on an I/O module that is located in-rack or remotely on a
FIPIO network and that has been configured in the task.
This bit must be reset to 1 by the user. Each task manages its own %S16 bit.
Initial state
1
TSX37 TSX57
YES YES
286
TLX DR PL7 xxE
System objects
Description of system bits %S17 to %S20
In-depth description
Bit
%S17
%S18
%S19
Description of system bits %S17 to %S20
Function Description
Bit outputted on shifting or a arithmetic report.
Normally on 0, this bit is set on 1 by the system: l during a shift operation containing the state of the last bit, l overshooting in unsigned arithmetic (dates).
This bit must be reset on 0 by the user.
Overrun or arithmetic error
Normally on 0, it is set on 1 should a capacity overload l l l l l occur during an operation on 16 bits, either through: l a result above +32767 or less than –32768 in single length, l a result above +2,147,483,647 or less than -
2.147.483.648 in double length, l a result above +3.402824E+38 or less than –
3.402824E+38, in floating point (software version >
1.0), capacity overload in DCB, dividing by 0, the root of a negative number, forcing a non-existent step onto a drum.
stacking up an already full register, emptying an already empty register.
It must be tested by the user program after each operation where there could be an overload risk, then reset to 0 by the user if there is indeed an overload. Each task generates its own %S18 bit.
Task period overrun
(periodical scanning)
Normally on 0, this bit is set on 1 by the system in the event of a time period overrun (ie. task execution time is greater than the period defined by the user in the configuration or programmed into the %SW word associated with the task).
The user must reset this bit to 0.
Each task manages its own %S19 bit.
Initial state
0
0
0
TSX37 TSX57
YES
YES
YES
YES
YES
YES
TLX DR PL7 xxE
287
System objects
Bit
%S20
Function Description
Index overflow Normally on 0, it is set on 1 when the address of the indexed object becomes less than 0 or exceeds the number of objects declared in the configuration.
It must be tested by the user program after each operation where there could be an overload risk, then reset to 0 if there is indeed an overload. Each task generates its own
%S20 bit.
Initial state
0
TSX37 TSX57
YES YES
288
TLX DR PL7 xxE
System objects
Description of system bits %S21 to %S26
In-depth description
Bit
%S21
%S22
%S23
%S24
%S26
%21 to %S26 system bits associated with Grafcet
Function Description
Initialization
Setting Gracfet to 0
Normally on 0, this bit can be set on 1 by the program only during preliminary processing.
On 1, it disables all Grafcet steps. It is reset to 0 by the system after all has been taken into account at the end of the preliminary processing.
Freezing
Grafcet
This bit is managed by the user to initialize Grafcet
(preferably set on 1 for preliminary processing). It is repositioned to 0 by the system after Grafcet has been initialized (ie. after preliminary processing during evaluation of the new Grafcet state). Initializing Grafcet involves disabling all active steps and enabling the initial steps. On a cold start, this bit is set on 1 by the system during preliminary processing.
Setting macrosteps to 0
Normally on 0, setting %S23 onto 1 preserves Grafcet in the state is it at the time. Whatever the value of downstream transition conditions, Grafet does not change.
The freeze is maintained as long as the %S23 bit is on 1.
The bit is managed by the user program, and is positioned on 1 or 0 only during preliminary processing.
Normally on 0, setting %S24 to 1 will zero the macro-steps chosen in a 4 word table %SW22 to %SW25 system. It is reset to 0 by the system after all has been taken into account at the end of the preliminary processing.
Table overrun
(steps/ transitions)
Normally on 0, this bit is set on 1 by the table system when the enabling possibilities (steps or transitions) have been overrun or when an invalid chart has been executed (eg sending a destination to a step which does not belong to a chart). An overrun causes the PLC to go to STOP.
The user must reset this bit to 0 on initializing the terminal.
Initial state
0
0
0
0
0
TSX37 TSX57
YES
YES
YES
NO
YES
YES
YES
YES
YES
YES
TLX DR PL7 xxE
289
System objects
Description of system bits %S30 to %S59
In-depth description
Bit
%S30
%S31
%S38
%S39
%S4 0 to
%S47
%S49
%S50
%S51
Description of system bits %S30 to %S59
Function Description
Activating/ deactivating the master task
Normally on 1, the user setting the bit to 0 disables the master task.
Fast task activation
Enabling/ inhibiting events
Normally on 1, the user setting the bit to 0 disables the fast task.
Normally on 1, the user setting the bit to 0 causes events to be inhibited.
Saturation of event processing
I/O tripped static (racks) fault
This bit is set on 1 by the system to indicate that one or several events cannot be processed following saturation of the queues.
The user must reset this bit to 0.
Bits %S40 to %S47 are assigned to rack 0 to 7 respectively. Normally on 1, each bit is set on 0 following a corresponding rack input/output fault.
The bit is reset on 1 when the fault disappears.
Reactivating outputs
Updating time and date via words %SW50 to 53
Normally on 0, this bit can be set on 1 or 0 by the program or the terminal.
l on 0: accesses date and time by reading words via system words %SW50 to 53, l on 1: updates date and time by writing system words
%SW50 to 53.
Time loss in real time clock
Normally on 0, this bit can be set on 1 by the user for a request to reactivate all IOs, after the appearance of a static outputs fault triggered by an overcurrent or a shortcircuit.
This system-managed bit on 1 indicates that the real-time clock is absent or that its system words are meaningless.
In this case the clock must be reset to the correct time.
Initial state
1
1
1
0
1
0
0
0
TSX37 TSX57
YES
YES
YES
YES
NO
YES
YES
YES
YES
YES
YES
YES
YES
NO
YES
YES
290
TLX DR PL7 xxE
Bit
%S59
System objects
Function
Updating time and date via word %SW59
Description
Normally on 0, this bit can be set on 1 or 0 by the program date or the terminal.
l on 0: the system does not manage the system word
%SW59, l on 1: the system manages edges on the words
%SW59 to adjust the date and current time (by increment).
Initial state
0
TSX37 TSX57
YES YES
TLX DR PL7 xxE
291
System objects
Description of system bits %S60 to %S69
In-depth description
Bit
%S60
%S66
%S67
%S68
%S69
Description of system bits %S60 to %S69
Function Description
Voluntary switching command system bit which controls voluntary switching on implementation of a back-up architecture (see usage in the "Warm Standby Premium"). This bit can be reset on 0 either by the user or by the application.
Managing LED battery
Normally on 0, this bit can be set on 1 or 0 by the program or the terminal. It is used to activate/deactivate the LED battery , in the event of the absence of or an error in the backup stack.
l state 0: the LED battery is lit when the backup stack is absent or contains a fault, l state 1: the LED battery is always off.
On a cold start, %S66 is reset to 0 by the system.
State of cartridge cell
State of processor stack
Display of user data on PLC display panels
This bit is used to control the functioning of the RAM cartridge memory backup cell : l l at 0: cell present and operational at 1: cell absent or non-operational
This bit is used to control the functioning of the backup cell for data and programming in RAM memory.
l l at 0: cell present and operational at 1: cell absent or non-operational
Normally on 0, this bit can be set on 1 or 0 by the program or the terminal.
l l at 0: "Word" mode deactivated on displays, at 1: "Word" mode activated on displays.
Initial state
0
0
-
-
0
TSX37 TSX57
NO
YES
YES
YES
YES
YES
NO
YES
YES
NO
292
TLX DR PL7 xxE
System objects
Description of System Bits %S70 to %S92
Detailed
Description
Bit
%S70
%S73
%S74
%S75
%S80
%S90
%S92
Description of System Bits %S70 to %S92
Function Description
Data update on
AS-i bus or
TSX Nano connection
This bit is set to 1 by the system at the end of each TSX
Nano connection cycle or AS-i bus scanning cycle. When powered up, it indicates that all the data has been updated at least once and that they are therefore significant. This bit is reset to 0 by the user.
Change to protected mode on AS-i bus
Save current configuration on AS-i bus
Normally at 0, this bit is set to 1 by the user to change to protected mode on the AS-i bus. Bit %S74 must first be at
1. This bit will only be used in wiring tests, with no application in the PLC.
Normally at 0, this bit is set to 1 by the user to save the current configuration on the AS-i bus. This bit will only be used in wiring tests, with no application in the PLC.
Data Archiving memory card battery test
Normally at 1 (battery OK), this bit is set to 0 when the battery is low or faulty.
Reset message counter
Normally at 0, this bit can be set to 1 by the user to reset to 0 the message counters %SW80 to %SW86.
Update common words
Updated every second. This bit can be set to 0 by the program or by the terminal.
Change to communication function measurement mode
Normally at 0, this bit can be set to 1 by the user to put the communication functions in performance measurement mode. The communication functions timeout parameter then displays the return exchange time in tens of ms (if this time <10s, otherwise not significant).
Initial state
0
0
0
1
0
0
0
TSX37 TSX57
YES
YES
YES
NO
YES
YES
YES
YES
NO
NO
YES
YES
NO
YES
TLX DR PL7 xxE
293
System objects
Description of system bits %S94 to %S99
In-depth description
Bit
%S94
%S95
%S96
%S97
%S98
%S99
Description of system bits %S94 to %S99
Function Description
Saving DFB adjustments
Normally on 0, this bit can be set on 1 by the user to save the adjustment values of user function blocks.
Restoring DFB adjustments
Validity of application program saves
Validity of
%MW saves
Normally on 0, this bit can be set on 1 by the user to restore the adjustment values of user function blocks.
l l on 0: application program saves are invalid, on 1: application program saves are valid,
This bit can be read at any time ( either by the program or while adjusting), in particular after a cold start or a warm restart.
It is significant with regard to a PL7-effected Backup application within the internal Flash EPROM.
l l on 0: %MW saves are invalid, on 1: %MW saves are valid,
This bit can be read at any time ( either by the program or while adjusting), in particular after a cold start or a warm restart.
Deport of TSX
SAZ 10 module button
Normally on 0, this bit is managed by the user: l l on 0: TSX SAZ 10 module button is enabled, on 1: TSX SAZ 10 button is replaced by a Discrete input (Word %SW98 (See Description of system words
Deport of display block button
Normally on 0, this bit is managed by the user: l l on 0: centralized display block button is enabled, on 1: centralized display block button is replaced by a
Discrete input (Word %SW99 (See Description of
system words %SW98 to %SW109, p. 312 )).
Initial state
0
0
-
-
0
0
TSX37 TSX57
NO
NO
YES
YES
YES
YES
YES
YES
NO
NO
NO
NO
294
TLX DR PL7 xxE
System objects
Description of system bits %S100 to %S119
In-depth description
Bit
%S100
%S101
%S102
%S118
%S119
Description of system bits %S100 to %S119
Function Description
Protocol on terminal port
This bit is set on 0 or 1 by the system according to the state of the INL/DPT shunt on the console.
l if the shunt is absent (%S100=0), then the master
UNITELWAY protocol is used, l if the shunt is present (%S100=1) then the protocol used is the one indicated by the application configuration.
Configured diagnostics buffer
This bit is set on 1 by the system when the diagnostics option has been configured – a diagnostics buffer aimed at storing errors found by DFB diagnostics is then reserved.
This bit is set on 1 by the system when the buffer that receives DFB errors is full.
Full diagnostics buffer
General FIPIO
I/O fault
Normally on 1, this bit is set to 0 by the system when a fault appears on a device connected to the FIPIO bus.
This bit is reset to 1 by the system when the fault disappears.
General I/O on rack fault
Normally on 1, this bit is set to 0 by the system when a fault appears on an I/O module placed in one of the racks.
This bit is reset to 1 by the system when the fault disappears.
Initial state
-
-
-
1
1
TSX37 TSX57
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
TLX DR PL7 xxE
295
System objects
3.2
System words
Introduction
Aim of this subsection
What's in this
Section?
This sub-section describes the PL7 language system words.
This Section contains the following Maps:
Topic
Description of system words %SW0 to %SW11
Description of system words %SW12 to %SW18
Description of system words %SW20 to %SW25
Description of system words %SW30 to %SW35
Description of system words %SW48 to %SW59
Description of system words %SW60 to %SW62
Description of system words %SW63 to %SW65
Description of system words %SW66 to %SW69
Description of system words %SW80 to %SW89
Description of system words %SW96 to %SW97
Description of system words %SW98 to %SW109
Description of system word %SW116
Description of system words %SW124 to %SW127
Description of system words %SW128 to %SW143
Description of system words %SW144 to %SW146
Description of system words %SW147 to %SW152
Description of system word %SW153
Description of system word %SW154
Description of system words %SW155 to %SW162
Page
296
TLX DR PL7 xxE
System objects
Description of system words %SW0 to %SW11
In-depth description
Words
%SW0
%SW1
%SW8
%SW9
%SW10
%SW11
Description of system words %SW0 to %SW11
Function
Master task scanning period
Fast task scanning period
Acquisition of task input monitoring
Description
The user program or the terminal modify the duration of the master task defined in configuration. The duration is expressed in ms (1.255 ms) %SW0=0 in cyclic operation.
On a cold restart: it takes on the value defined by the configuration.
The user program or the terminal modify the duration of the fast task as defined in configuration.
The duration is expressed in ms (1.255 ms)
On a cold restart: it takes on the value defined by the configuration.
Normally on 0, this bit can be set on 1 or 0 by the program or the terminal.
It inhibits the input acquisition phase of each task.
l %SW8:X0 =1 assigned to MAST task: outputs linked to this task are no longer guided.
l %SW8:X1 =1 assigned to FAST task: outputs linked to this task are no longer guided.
Monitoring of task output update
Normally on 0, this bit can be set on 1 or 0 by the program or the terminal.
Inhibits the output updating phase of each task.
l %SW9:X0 =1 assigned to MAST task: outputs linked to this task are no longer guided.
l %SW9:X1 =1 assigned to FAST task: outputs linked to this task are no longer guided.
First cycle after cold start
If the bit for the current task is on 0, this indicates that the first cycle is being carried out after a cold start.
l l
%SW10:X0: is assigned to the MAST Master task
%SW10:X1: is assigned to the FAST fast task
Watchdog duration Reads the duration of the watchdog as set in configuration. It is expressed in ms (10…500 ms).
Management
User
User
User
User
System
System
TLX DR PL7 xxE
297
System objects
CAUTION
Matters relating to system words %SW8 and %SW9:
Caution: outputs for modules connected to the X bus switch automatically to fallback mode. Outputs for devices connected to the
FIPIO bus remain as they were before the bit was set to 1.
Failure to observe this precaution can result in injury or equipment damage.
298
TLX DR PL7 xxE
System objects
Description of system words %SW12 to %SW18
In-depth description
Words
%SW12
%SW13
%SW17
%SW18
Description of system words %SW12 to %SW18
Function
Terminal port UNI-
TELWAY address
Description
UNI_TELWAY address of terminal port (in slave mode) as defined in configuration and loaded into this word on cold start.
Main address of the station
Indicates for the main network: l l the station number (least significant byte) from 0 to 127 the network number (most significant byte) from 0 to 63
(micro-switch value on PCMCIA card)
Fault status on floating operation
Absolute time counter
On detection of a fault in a floating arithmetic operation, bit
%SW18 is set to 1 and %SW17 fault status is updated according to the following coding : l l
%SW17:X0 = Invalid operation / result is not a number
%SW17:X1 = Non-standardized operand / result is acceptable l l l l
%SW17:X2 = Divided by 0 / result is infinity
%SW17:X3 = Overflow / result is infinity
%SW17:X4 = Underflow / result is 0
%SW17:X5 = Result is not precise
This word is reset to 0 by the system on cold start, and also by the program for re-usage purposes.
This double word is used to calculate duration.
It is incremented every 1/10th of a second by the system
(even when PLC is on STOP). It can be read and written by the user program or by the terminal.
Management
System
System
System
User
System
User
TLX DR PL7 xxE
299
System objects
Description of system words %SW20 to %SW25
In-depth description
Words
%SW20
%SW21
%SW22 to
%SW25
Description of system words %SW20 to %SW25 (associated with Grafcet)
Function
Validity table for
Gracet transitions
Description
Grafcet activity level This word contains the number of active steps to be enabled or disabled for the current cycle. It is updated by the system on each change in the chart.
This word contains the number of valid transitions to be enabled and disabled for the current cycle. It is updated by the system on each change in the chart.
Macro-step clearing table
Each bit in this table corresponds with a macro-step where
%SW22:X0 is for XM0 … %SW25:X16 is for XM63
Macro-steps, for which the associated bit in this table is on 0, will be zeroed when bit %S24 is set on 1.
Management
System
System
User
300
TLX DR PL7 xxE
System objects
Description of system words %SW30 to %SW35
In-depth description
Words
%SW30
%SW31
%SW32
%SW33
%SW34
%SW35
Description of system words %SW30 to %SW35
Function
Master task execution time
Maximum master task execution time
Minimum master task execution time
Description
Indicates the execution time of the last master task cycle (in ms).
Indicates the longest master task execution time from the last cold start (in ms).
Fast task execution time
Maximum fast task execution time
Minimum fast task execution time
Indicates the shortest master task execution time from the last cold start (in ms).
Indicates the execution time of the last fast task cycle (in ms).
Indicates the longest fast task execution time from the last cold start (in ms).
Indicates the shortest fast task execution time from the last cold start (in ms).
Management
System
System
System
System
System
System
Note: More detail on execution time : this is the time elapsed between the beginning (input acquisition) and the end (output update) of a scanning period. This time includes the processing of event tasks and fast tasks, as well as processing console requests.
TLX DR PL7 xxE
301
System objects
Description of system words %SW48 to %SW59
In-depth description
Words
%SW48
%SW49
%SW50
%SW51
%SW52
%SW53
%SW54
%SW55
%SW56
%SW57
%SW58
%SW58
Description of system words %SW48 to %SW59
Function Description
Number of Events Indicates the number of events processed since the last cold start (in ms). This word can be written by a program or a terminal.
Dater function (1) System words containing date and current time (in BCD): l %SW49: day of the week (1 for Monday through to 7 for
Sunday).
l l l l
%SW50: Seconds (SS00)
%SW51: Hours and Minutes (HHMM)
%SW52: Month and Day (MMDD)
%SW53: Year (YYYY)
These words are manages by the system when bit %S50 is on
0.
These words can be written by the user program of by the terminal when the bit %S50 is set on 1 (See Description of
system bits %S30 to %S59, p. 290 ).
Dater function (1) System words containing date and time of the last power fault or PLC stop (in BCD): l l l l l
%SW54: Seconds (00SS)
%SW55: Hours and Minutes (HHMM)
%SW56: Month and Day (MMDD)
%SW57: Year (YYYY)
%SW58: most significant byte containing the day of the week (1 for Monday through to 7 for Sunday).
Last stop code The least significant byte contains the code for the last stop: l l l l l
1 = switch by the terminal from RUN to STOP
2 = stop caused by software fault (PLC task overrun)
4 = power outage
5 = stop caused by hardware fault
6 = stop on HALT instruction
Management
System
User
System
User
System
System
302
TLX DR PL7 xxE
Words
%SW59
Function
Adjusting the current date
System objects
Description
Contains two 8 bit series to adjust the current date.
The action is always performed on the rising edge of the bit.
This word is enabled by bit %S59.
Illustration: bits
2
3
4
0
1
5
6
7
+
8
9
10
11
12
13
14
15
-
Day of the week
Secondes
Minutes
Hours
Days
Months
Years
Centuries
Management
User
Note: (1) Only on TSX 37-21/22 and TSX 57 PLC
TLX DR PL7 xxE
303
System objects
Description of system words %SW60 to %SW62
In-depth description
Words
%SW60
Description of system words %SW60 to %SW61 specific to Warm Standby Premium diagnostics.-
Function
Backup PLC diagnostics
Description l l l l l
Diagnostics specific to the backup for a local PLC (Warm
Standby Premium) l l
Significance of the different bits for the word %SW60: l l l
%SW60:X0=1 indicates that the PLC is "Normal"
%SW60:X1=1 indicates that the PLC is in "Backup"
%SW60:X3=0 indicates an I/O fault in FIPIO while PLC is
"Normal", it is the image of bit %S118 l %SW60:X4=0 indicates a rack I/O fault; it is the image of bit %S119 l %SW60:X5=1 indicates a fault has been detected by the self-tests in at least one of the TSX ETY 210 l %SW60:X7=1 indicates a serious fault in the FIPIO network, such as a short circuit or a disconnected terminal block l %SW60:X8=1 indicates a fault in the TSX ETY 110 module used for inter-PLC links l %SW60:X9=1 indicates an inter-PLC communication fault
– it is not possible to recover dual-PLC diagnostics
%SW60:X10 is a reserved bit
%SW60:X11=1 indicates that the Backup PLC is unsuitable to be a "Normal" PLC. This information is generated only in a Normal PLC and has no significance in a Backup PLC.
%SW60:X12=0 indicates that the PLC is station A
%SW60:X12=1 indicates that the PLC is station B
%SW60:X13=1 indicates PLC Run mode
%SW60:X14=1 indicates PLC Stop mode
%SW60:X15=1 indicates PLC Halt mode
Management
System
304
TLX DR PL7 xxE
Words
%SW61
Function
Backup PLC diagnostics
System objects
Description l l
Significance of the different bits for the word %SW61: l %SW61:X0=1 indicates there is a problem on the Data
Base exchange via the Ethway inter-PLC link. This information is only generated for a Normal PLC in Run mode.
%SW60:X1=1 indicates that the PLC is in "Backup"
%SW61:X1=1 indicates there is a problem in communication between a TSX ETY 210 client TCP-IP module third party device. This information is generated only for a Normal PLC in Run mode. When this bit changes to 1, a switch is caused if the Backup PLC can become a l
Normal PLC.
%SW60:X4=0 indicates a rack I/O fault; it is the image of l bit %S119
%SW60:X5=1 indicates a fault has been detected by the l l l self-tests in at least one of the TSX ETY 210
%SW61:X2 is a reserved bit
%SW61:X3 is a reserved bit
%SW61:X4=1 indicates the first correct Data Base l exchange
%SW61:X5=1 indicates that the processor has been
Stopped by the backup function. Diagnostics is given in the word %MWp.14.2
l l
%SW61:X6 is a reserved bit
%SW61:X7=0 indicates a problem in configuration of operation of the backup function. Diagnostics is given in the word %MWp.14.2
l %SW61:X7=1 indicates that the backup function has been correctly configured l %SW61:X8 to %SW61:X15 are reserved bits p: designates the processor slot
Management
System
TLX DR PL7 xxE
305
System objects
Words
%SW62
Function Description
Display of the arbiter function for bus and producer / consumer of FIPIO bus.
The least significant byte indicates the state of the producer / consumer function,
The most significant byte indicates the state of the bus arbiter function (BA)
Byte value: l l
16#00: the function does not exist (no FIPIO application),
16#07: the function currently in STOP BA (STOP BA order is sent and the command has not finished).
l 16#0F: the function currently in RUN BA (RUN BA order is sent and the command has not finished).
l 16#70: the function has been initialized but is not operational (in STOP BA mode), l 16#F0: the function is currently being executed normally
(in RUN BA mode). BA),
Management
System
306
TLX DR PL7 xxE
System objects
Description of system words %SW63 to %SW65
Detailed description
Words
%SW63 to
%SW65
Description of system words %SW63 to %SW65 specific to Warm Standby Premium diagnostics.
Function
Exchange of diagnostics words between PLCs
Description
Dual-PLC backup diagnostics is available in the words
%SW63 to %SW65.
Normal PLC words %SW63, %SW64 and %SW65 are respective to Backup PLC words %SW60, %SW61 and
%SW62. Similarly, Backup PLC words %SW63, %SW64 and
%SW65 are respective to Normal PLCwords %SW60,
%SW61 and %SW62.
Illustration
Management
System
Normal
PLC
Backup
PLC
Standart diagnostic
PLC backup diagnostic
Dual PLC backup diagnostic
%SWxx
%SW60, %SW61,
%SW62
%SW63, %SW64,
%SW65
%SW66 Warm Standbyl
Premium global diagnostic
%SWxx
%SW60, %SW61,
%SW62
%SW63, %SW64,
%SW65
%SW66
These words are exchanges via the Ethway inter-PLC link
(TSX ETY 110 module)
TLX DR PL7 xxE
307
System objects
Description of system words %SW66 to %SW69
Detailed description
Words
%SW66
Description of system word %SW66 for Warm Standby Premium diagnostics
Function Description Management
Global diagnostics for Warm Standby
Premium architecture
In each of the PLCs, global diagnostics of Warm Standby
Premium are created from the backup diagnostics of the two
PLCs. These global diagnostics are stored in %SW66. Its bits have the following significance :
System l l l l l l l l l l l
%SW66:X0=0 indicates Warm Standby Premium downgraded functioning.
%SW66:X0=1 indicates Warm Standby Premium nominal functioning.
%SW66:X1=1 indicates that PLC A is a Normal PLC
%SW66:21=1 indicates that PLC B is a Normal PLC
%SW66:X3=1 indicates a break-down in inter-PLC communication
Information on PLC A
%SW66:X4=1 indicates a serious FIPIO network fault on PLC A
%SW66:X5=1 indicates that PLC A is on STOP
%SW66:X6=1 indicates that PLC A is on Halt
%SW66:X7=1 indicates an Ethernet TCP-IP communication breakdown in PLC A (module TSX l l l l
ETY 210 or client function) l l
%SW66:X8=1 indicates a breakdown on at least one of the racked modules in PLC A
%SW66:X9=1 indicates a breakdown on at least one of FIPIO devices in PLC A
Information on PLC B
%SW66:X10=1 indicates a serious FIPIO network fault on PLC B
%SW66:X11=1 indicates that PLC B is on STOP
%SW66:X12=1 indicates that PLC B is on Halt
%SW66:X13=1 indicates an Ethernet TCP-IP communication breakdown in PLC B (module TSX
ETY 210 or client function)
%SW66:X14=1 indicates a breakdown on at least one of the racked modules in PLC B
%SW66:X15=1 indicates a breakdown on at least one of FIPIO devices in PLC B
Note: %SW66 X4 to %SW66 X15 information is not significant if an inter-PLC communication breakdown is present (%SW66 X3 = 1)
308
TLX DR PL7 xxE
Words
%SW67
%SW68
%SW69
Time base used by
EF Tempo.
These words contains a time base used by EF Tempo. It is transferred from the Normal PLC to the Backup PLC for updating and synchronisation.
System objects
Description of system words %SW67 to %SW69 for Warm Standby Premium diagnostics.
Function
Network address and dual-PLC station address
Description
This word contains the network address and the dual-PLC station address, which can be used to set up inter-PLC communication. This word must be displayed in hexadecimal for interpretation in the following manner :
MSB network address
LSB station address
Management
System
System
TLX DR PL7 xxE
309
System objects
Description of system words %SW80 to %SW89
Detailed description
Words
%SW80
%SW81
%SW82
%SW83
%SW84
%SW85
%SW86
%SW87
%SW88
%SW89
Description of system words %SW80 to %SW89
Function
Telegram and message management
Managing communication flows (1) l l l l
Description l l l l
%SW80: No. of messages sent by the system to the terminal port.
%SW81: No. of messages received by the system from the terminal port.
%SW82: No. of messages sent by the system to the
PCMCIA module.
%SW83: No. of messages received by the system from the PCMCIA module.
%SW84: No. of telegrams sent by the system.
%SW85: No. of telegrams received by the system.
%SW86: No. of messages refused by the system.
l l
%SW87: Number of requests processed by synchronous server per master (MAST) task cycle.
%SW88: Number of requests processed by asynchronous server per master (MAST) task cycle.
%SW89: Number of requests processed by server functions (immediately) per master (MAST) task cycle.
Management
System
User
System
Note: (1) Only for TSX/PCX/PMX 57 PLC
310
TLX DR PL7 xxE
System objects
Description of system words %SW96 to %SW97
Detailed description
Words
%SW96
%SW97
These words only exist in TSX 37
Description of system words %SW96 to %SW97
Function
Command and/or diagnostics for save/ restore function of application program and %MW l l l
Description l l l l l l bit 0: requests a send to the save zone This bit is enabled on the rising edge. It is reset to 0 by the system as soon as the restoration of the rising edge has been taken into account.
bit 1: when this bit is on 1, this indicates that the save function has finished. This bit is reset to 0 as soon the rising edge on bit 0 has been taken into account.
bit 2: save report: l l
0 -> save without error,
1 -> error while saving.
bits 3 to 5: reserved.
bit 6: validity of application program saves (idem %S96).
bits 8 to 15: this bit is only significant is the report bit is on
1 (bit 2 = 1 means an error while saving): l 1 -> number of %MW to be saved is greater than the number of %MW that are configured l l
2 -> number of %MW to be saved is greater than 1000 or less than 0,
3 -> number of %MW to be restored is greater than the number of %MW that are configured l 4 -> size of application in internal RAM greater than 15
Kwords (remember that saving %MW is always associated with saving an application program in the internal Flash EPROM),
5 -> facilities are not allowed in RUN,
6 -> presence of a Backup cartridge in the PLC,
7 -> write fault in the Flash EPROM.
Number of %MW to be saved
Parameterizes the number of %MW to be saved.
When this word is between 1 and 1000, the first 1 to 1000
%MW are sent to the internal Flash EPROM.
When this word is 0, only the application program in the internal RAM is sent to the internal Flash EPROM.
Any %MW save is then wiped.
On a cold start, this word is initialized on –1 if the internal
Flash EPROM contains no saved %MW. If the opposite should happen, it is initialized at the value of the number of saved words.
Management
System
User
User
TLX DR PL7 xxE
311
System objects
Description of system words %SW98 to %SW109
Detailed description
Words
%SW98
Description of system words %SW98 to %SW109
Function
Discrete input module/channel geographical address (2)
Description
When the bit %S98 = 1, this word indicates the Discrete input
(module /channel) geographical address, in the replacement of the TSX SAZ 10 module button :
Management
User
MSB
Module number
LSB
Channel number
%SW99 Discrete input address (2)
When the bit %S99 = 1, this word indicates the Discrete input
(module / channel) geographical address, in the replacement of the centralized display block button :
MSB
Module number
LSB
Channel number
User
%SW108
%SW109
Forced channel counter
Forced analog channel counter
Makes channels forced to 0 or 1 compatible within the application. It is updated by forcing or unforcing channels.
Makes analog channels forced to 0 compatible.
System
System
Note: (2) Only in TSX 37
312
TLX DR PL7 xxE
System objects
Description of system word %SW116
Detailed description
Words
%SW116
Description of system word %SW116 - FIPIO
Function Description
FIPIO I/O task fault Normally on 0, each bit for this word signifies FIPIO exchange status within the task in which it is being tested.
This word is to be reset on 0 by the user.
l l l l l l l l
More details on words bits %SW116: l x0 = 1 explicit exchange error (variable has not been exchanged on the bus), l x1 = 1 time-out on an explicit exchange (no reply at the end of time-out), l x2 = 1 maximum number of explicit exchanges achieved at the same time, x3 = 1 a frame is invalid, x4 = 1 the length of frame received is greater than the length that was declared, x5 = reserved on 0, x6 = 1 a frame is invalid, or an agent is initializing, x7 = 1 absence of a configured device, x8 = 1 channel fault (at least one device channel is indicating a fault), x9 to x14 = reserved on 0, x15 = Global fault (OR bits 3, 4, 6, 7, 8).
Management
System
User
TLX DR PL7 xxE
313
System objects
Description of system words %SW124 to %SW127
Detailed description
Words
%SW124
%SW125
%SW126
%SW127
Description of system words %SW124 to %SW127
Function
Type of CPU fault
Type of blocking fault
Blocking fault instruction address
Description Management
The last type of CPU fault encountered is written into this word by the system (these codes are unchanged on a cold restart): l l l l
16#30: system code fault
16#60 to 64: stack overrun
16#90: System switch fault: Unforeseen IT
16#53: time-out fault during I/O exchanges
The last type of blocking fault encountered is written into this l l l l l l l word: l l l
16#DEB0: watchdog overrun
16#2258: execution of HALT instruction
16#DEF8: execution of JMP instruction to an undefined label l 16#2XXX: execution of CALL instruction to an undefined sub-program
16#0XXX: execution of an unknown function
16#DEFE: the grafcet program consists of sendings to undefined steps.
16#DEFF: floating point has not been not implemented
16#DEF0: division by 0 (1-->%S18)
16#DEF1: character string transfer error (1-->%S15)
16#DEF2: capacity overflow (1-->%S18)
16#DEF3: index overflow (1-->%S20)
Instruction address that generated the application blocking fault.
l l
%SW126 contains the offset for this address
%SW127 contains the base for this address
System
System
System
314
TLX DR PL7 xxE
System objects
Description of system words %SW128 to %SW143
Detailed description
Description of system words %SW128 to %SW143 - FIPIO
Words
%SW128 to
%SW143
Function
Faulty FIPIO connection point
Description
Each bit in this group of words indicates the state of a device connected to the FIPIO bus.
Normally on 1, the presence of a 0 in one of these bits indicates the appearance of a fault in this connection point.
For a non-configured connection point, the corresponding bit is always 1.
Table showing correspondence between word bits and connection point address.
Management
System
%SW128 :
%SW129 :
%SW130 :
%SW131 :
%SW132 :
%SW133 :
%SW134 :
%SW135 :
%SW136 :
%SW137 :
%SW138 :
%SW139 :
%SW140 :
%SW141 :
%SW142 :
%SW143 : x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239
240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
TLX DR PL7 xxE
315
System objects
Description of system words %SW144 to %SW146
Detailed description
Words
%SW144
%SW145
Description of system words %SW144 to %SW146 - FIPIO
Function
FIPIO bus arbiter function operating mode
Modification of
FIPIO bus arbiter parameters
Description
This system word is used to start and stop the bus arbiter function and the producer / consumer function. It can modify the starting, automatic and manual modes of the bus in the l l l l l l event of a stop.
l l x0 = 1 producer / consumer function in RUN mode x0 = 0 producer / consumer function in STOP mode (no variables are exchanged in the bus), x1 = 1 bus arbiter is in RUN 0 mode x1 = 0 bus arbiter is in STOP mode (no variables or message scanning is carried out in the bus), x2 = 1 automatic start in the event of an automatic bus stop x2 = 0 manual start in the event of an automatic bus stop x3 = reserved on 1 x4 to x15 reserved on 0.
The bits are set on 1 by the user, and reset to 0 by the system when initialization has been carried out.
l x0 = 1 modification of bus arbiter priority: the most significant system word byte contains the priority value of the bus arbiter which will applied to the bus.
l x1 = 1 modification of the return time value (Rt): the most significant system word byte contains the Rt value (in ms) l which will be applied to the bus. The system word is zeroed when initialization is complete.
x2 = 1 modification of the pause time value (T0): the most significant system word byte contains the T0 value (in ms) which will be applied to the bus. The system word is zeroed when initialization is complete.
l l l l x3 to x7 are reserved on 0.
x8 = 1 value of bus arbiter priority, x9 = 1 Rt value, x10 = 1 T0 value.
These parameters can be modified when the bus arbiter is in
RUN mode, but for them to be taken into account by the application, the BA must be stopped then restarted.
Management
User
User
System
316
TLX DR PL7 xxE
Words
%SW146
System objects
Function
FIPIO bus arbiter function display
Description Management
The least significant byte indicates the state of the producer / consumer function
The most significant byte indicates the state of the bus arbiter function.
Byte value l l
16#00: the function does not exist (no FIPIO application),
16#07: the function currently in STOP (ie STOP order has been sent and the command has not finished).
l 16#0F: the function currently in RUN (ie RUN order has been sent and the command has not finished).
l 16#70: the function has been initialized but is not operational (in STOP mode), l 16#F0: the function is currently being executed normally
(in RUN mode).
System
CAUTION
Matters affecting the words %SW144 and %SW145 modifying these system words can lead the PLC station to stop.
Failure to observe this precaution can result in injury or equipment damage.
TLX DR PL7 xxE
317
System objects
Description of system words %SW147 to %SW152
Detailed description
Words
%SW147
%SW148
%SW149
%SW150
%SW151
%SW152
Description of system words %SW147 to %SW152
Function Description
MAST network cycle time
A value which is not zero indicates, in ms, the MAST task network cycle (TCR-MAST) time value.
FAST task network cycle time value
A value which is not zero indicates, in ms, the MAST task network cycle (TCR-FAST) time value.
Number of frames sent
Number of frames received
Number of messages resumed
Reserved on 0.
This word indicates the number of frames sent by the FIPIO channel manager
This word indicates the number of frames received by the
FIPIO channel manager.
This word indicates the number of messages resumed by the
FIPIO channel manager.
Management
System
System
System
System
System
System
318
TLX DR PL7 xxE
System objects
Description of system word %SW153
Detailed description
Words
%SW153
Description of system word %SW153 - FIPIO
Function Description list of FIPIO channel manager faults.
Each bit is set on 1 by the system, and reset to 0 by the user.
See the list below.
Management
User
System
Bits description l l l l l l l l l l l
X0 = overrun station fault: corresponds to losing an MAC symbol while receiving
– this is linked to the receiver reacting too slowly.
X1 = message refusal fault: indicates an acknowledged message was refused, or it was not acknowledged in the first place. receiving MAC.
X3 = underrun station fault: corresponds to the station being unable to respect transfer speed on the network.
X4 = physical layer fault: corresponds to a prolonged transmission absence in the physical layer.
X5 = non-echo fault: corresponds to a fault for which the transmitter is currently sending out, with an emission current in the operating format, and at the same time detection that a signal is absent on the same channel.
X6 = excessive communication fault: corresponds to a fault whereby the transmitter is controlling the line for longer than the maximum set operating limit.
This fault is caused, for example, by deterioration of the modulator, or by a faulty layer data link.
X7 = undercurrent fault: corresponds to a fault whereby the transmitter generates, when sollicited, a current weaker than the minimum set operating limit. This fault is caused by, for example, by increased line impedance (eg. open line etc.).
X8 = breached frame fault indicates that a pause has been received in the frame body, after identifying a delimiter at the start of the frame, and before identifying a delimiter at the end of the frame. The appearance of a pause in normal operating conditions takes place after a delimiter has been identified at the end of a frame.
X9 = CRC frame receiving fault: indicates that the CRC calculated on a frame usually received and the CRC contained within this frame have different values.
X10 = receiving frame code fault: indicates that certain symbols, exclusive to delimitation sequences at the beginning and end of frames, have been received within the body of the frame.
X11 = length fault within the frame received: more than 256 bytes have been received for the frame body.
TLX DR PL7 xxE
319
System objects l l l l
X12 = unknown frame type received: within the frame body, the fist byte identifies the type of frame link. A set number of frame types are defined in the WORLDFIP norm link protocol. Any other code found within a frame is therefore an unknown frame type.
X13 = a truncated frame has been received: a frame section is recognized by sequence of symbols delimiting the end of the frame, while the destination station awaits the arrival of a delimiter sequence for the beginning of the frame.
X14 = unused, non-significant value.
X15 = unused, non-significant value.
320
TLX DR PL7 xxE
System objects
Description of system word %SW154
Detailed description
Words
%SW154
Description of system word %SW154 - FIPIO
Function Description list of FIPIO channel manager faults.
Each bit is set on 1 by the system, and reset to 0 by the user.
See the list below.
Management
User
System
Bits description l l l l l l l l l
X0 = aperiodic time-out sequence: indicates that the messages or aperiodic variables window has overflowed its limit within an elementary cycle of the macrocycle.
X1 = refusal of messaging request: indicates that the message queue is saturated
- for the time being the bus arbiter is in no position to latch onto nor comply with a request.
X2 = urgent update command refused: indicates that the queue for urgent aperiodic variables exchange requests is saturated - for the time being the bus arbiter is in no position to latch onto nor comply with a request.
X2 = non-urgent update command refused: indicates that the queue for nonurgent aperiodic variables exchange requests is saturated - for the time being the bus arbiter is in no position to latch onto nor comply with a request.
X4 = pause fault: the bus arbiter has not detected any bus activity during a time period larger than the standardized WorldFip time period.
X5 = a network collision has occurred on identifier transmission: indicates activity on the network during theoretical pause periods. Between a transmission and awaiting a reply from the bus arbiter, there should be nothing circulating on the bus. If the bus arbiter detects activity, it will generate a collision fault (for example, when several arbiters are active at the same time on the bus).
X6 = bus arbiter overrun fault: indicates a conflict on accessing the bus arbiter station memory.
X7 = unused, non-significant value.
X8 to X15 = reserved on 0.
TLX DR PL7 xxE
321
System objects
Description of system words %SW155 to %SW162
Detailed description
Words
%SW155
%SW160
%SW161
%SW162
Description of system words %SW155 to %SW162
Function
Number of explicit exchanges
Description
Number of explicit exchanges currently being processed
Result of the last recording (diagnostics function).
Result of the last non-recording (diagnostics function).
Number of errors currently in the diagnostics buffer.
Management
System
System
System
System
322
TLX DR PL7 xxE
Symbols
TLX DR PL7 xx
Index
A C
323
Index
324
%Ti, 40, 98, 99, 101, 102, 103, 105
A
B
C
TLX DR PL7 xx
D
E
F
G
H
TLX DR PL7 xx
I
Instruction
L
M
N
O
Object
Index
325
Index
P
R
S
326
T
U
W
X
TLX DR PL7 xx
Λήψη
Διαφήμιση