Program Language and Structure
Program Language and Structure
35006144.07
www.schneider-electric.com
Table of Contents
Chapter 1
Presentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Capabilities of Unity Pro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Project Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . User Application and Project File Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configurator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Data Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Program Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Function Block Diagram FBD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ladder Diagram (LD) Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . General Information about SFC Sequence Language . . . . . . . . . . . . . . . . . . . . Instruction List IL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Structured Text ST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PLC Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Export/Import. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . User Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Debug Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diagnostic Viewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operator Screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 20 24 26 27 31 34 41 44 46 48 51 52 53 54 55 56 62 63
Chapter 2 Chapter 3
35006144.07 07/2008
3.1
3.2
3.3
3.4
At a Glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Description of Tasks and Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 At a Glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Presentation of the Master Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Presentation of the Fast Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Presentation of Auxiliary Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Overview of Event Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Description of Sections and Subroutines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 At a Glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Description of Sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Description of SFC sections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Description of Subroutines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Mono Task Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 At a Glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Description of the Master Task Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Mono Task: Cyclic Execution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Periodic Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Control of Cycle Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Execution of Quantum Sections with Remote Inputs/Outputs . . . . . . . . . . . . . . . 86 Multitasking Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 At a Glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Multitasking Software Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Sequencing of Tasks in a Multitasking Structure . . . . . . . . . . . . . . . . . . . . . . . . . 90 Task Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Assignment of Input/Output Channels to Master, Fast and Auxiliary Tasks . . . . 96 Management of Event Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Execution of TIMER-type Event Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Input/Output Exchanges in Event Processing . . . . . . . . . . . . . . . . . . . . . . . . . . 103 How to Program Event Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Chapter 4
4.1
4.2
Chapter 5
5.1
5.2
5.3
Processing of Power Outage and Restoral of Modicon M340 PLCs. . . . . . . . . Processing on Cold Start for Modicon M340 PLCs . . . . . . . . . . . . . . . . . . . . . . Processing on Warm Restart for Modicon M340 PLCs. . . . . . . . . . . . . . . . . . . Automatic Start in RUN for Modicon M340 PLCs . . . . . . . . . . . . . . . . . . . . . . . Premium, Quantum PLCs Operating Modes. . . . . . . . . . . . . . . . . . . . . . . . . . . Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Processing of Power Outage and Restoral for Premium/Quantum PLCs . . . . . Processing on Cold Start for Premium/Quantum PLCs . . . . . . . . . . . . . . . . . . Processing on Warm Restart for Premium/Quantum PLCs . . . . . . . . . . . . . . . Automatic Start in RUN for Premium/Quantum. . . . . . . . . . . . . . . . . . . . . . . . . PLC HALT Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PLC HALT Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . At a Glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . System Bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . System Bit Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description of System Bits %S0 to %S7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description of System Bits %S9 to %S13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description of System Bits %S15 to %S21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description of System Bits %S30 to %S59 . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description of System Bits %S60 to %S79 . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description of System Bits %S80 to %S96 . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description of System Bits %S100 to %S122 . . . . . . . . . . . . . . . . . . . . . . . . . . System Words . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description of System Words %SW0 to %SW11 . . . . . . . . . . . . . . . . . . . . . . . Description of System Words %SW12 to %SW29 . . . . . . . . . . . . . . . . . . . . . . Description of System Words %SW30 to %SW47 . . . . . . . . . . . . . . . . . . . . . . Description of System Words %SW48 to %SW59 . . . . . . . . . . . . . . . . . . . . . . Description of System Words %SW70 to %SW99 . . . . . . . . . . . . . . . . . . . . . . Description of System Words %SW108 to %SW116 . . . . . . . . . . . . . . . . . . . . Description of System Words %SW124 to %SW127 . . . . . . . . . . . . . . . . . . . . Atrium/Premium-specific System Words . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description of System Words %SW60 to %SW65 . . . . . . . . . . . . . . . . . . . . . . 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 Premium/Atrium System Words %SW155 to %SW167 . . . . . . . Quantum-specific System Words . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description of System Words %SW60 to %SW65 . . . . . . . . . . . . . . . . . . . . . .
123 125 129 132 133 133 134 136 140 143 144 144 145 146 146 147 148 150 152 154 156 160 162 163 163 164 168 172 174 176 183 184 185 185 186 188 189 190 191 193 194 195 195 196
5
Chapter 6
6.1
6.2
6.3
6.4
35006144.07 07/2008
6.5
Description of Quantum System Words %SW110 to %SW179. . . . . . . . . . . . . 198 Description of Quantum System Words %SW180 to %SW640. . . . . . . . . . . . . 200 Modicon M340-Specific System Words . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 Description of System Words %SW160 to %SW167. . . . . . . . . . . . . . . . . . . . . 205
Chapter 7
Chapter 8
8.1
8.2
8.6
8.7
6
At a Glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overview of Function Block Data Type Families. . . . . . . . . . . . . . . . . . . . . . . . Characteristics of Function Block Data Types (EFB\DFB) . . . . . . . . . . . . . . . . Characteristics of Elements Belonging to Function Blocks . . . . . . . . . . . . . . . . Generic Data Types (GDT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Overview of Generic Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Data Types Belonging to Sequential Function Charts (SFC) . . . . . . . . . . . . . . Overview of the Data Types of the Sequential Function Chart Family . . . . . . . Compatibility Between Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Compatibility Between Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . At a Glance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Data Type Instances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Data Instance Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Direct Addressing Data Instances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
259 260 262 264 267 267 269 269 271 271 275 276 280 282 289 290 292 295 299
Chapter 9
Chapter 10
Chapter 11
Chapter 12
35006144.07 07/2008
Elementary Functions, Elementary Function Blocks, Derived Function Blocks and Procedures (FFBs). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 Control Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346 Operate Blocks and Compare Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 Links. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 Text Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 Edge Recognition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 Execution Sequence and Signal Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 Loop Planning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 Change Execution Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
Chapter 13
13.1
13.2
13.3
13.4
13.8 13.9
13.10
Asymmetric Parallel String Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Multi-Token . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Multi-Token Execution Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Alternative String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Parallel Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Jump into a Parallel String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Jump out of a Parallel String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . General Information about the IL Instruction List . . . . . . . . . . . . . . . . . . . . . . . Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . General Information about the IL Instruction List . . . . . . . . . . . . . . . . . . . . . . . Operands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Subroutine Call . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Labels and Jumps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Calling Elementary Functions, Elementary Function Blocks, Derived Function Blocks and Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Calling Elementary Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Calling Elementary Function Blocks and Derived Function Blocks . . . . . . . . . . Calling Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . General Information about the Structured Text ST . . . . . . . . . . . . . . . . . . . . . . Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . General Information about Structured Text (ST) . . . . . . . . . . . . . . . . . . . . . . . . Operands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Select Instruction IF...THEN...END_IF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Select Instruction ELSE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Select Instruction ELSIF...THEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Select Instruction CASE...OF...END_CASE . . . . . . . . . . . . . . . . . . . . . . . . . . . Repeat Instruction FOR...TO...BY...DO...END_FOR . . . . . . . . . . . . . . . . . . . . Repeat Instruction WHILE...DO...END_WHILE . . . . . . . . . . . . . . . . . . . . . . . . Repeat Instruction REPEAT...UNTIL...END_REPEAT . . . . . . . . . . . . . . . . . . . Repeat Instruction EXIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
410 413 413 414 415 419 423 424 429 430 430 431 434 436 437 446 447 449 450 450 451 456 468 477 478 478 479 481 483 490 490 491 492 494 495 496 497 498 500 501 502
9
Chapter 14
14.1
14.2
Chapter 15
15.1
15.2
35006144.07 07/2008
15.3
Subroutine Call . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 RETURN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504 Empty Instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505 Labels and Jumps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506 Comment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507 Calling Elementary Functions, Elementary Function Blocks, Derived Function Blocks and Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508 Calling Elementary Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509 Call Elementary Function Block and Derived Function Block . . . . . . . . . . . . . . 515 Procedures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
Chapter 16
Chapter 17
Chapter 18
Chapter 19
Chapter 20
10
35006144.07 07/2008
Appendices
Appendix A
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
Appendix B
B.1 B.2
B.3 B.4
Glossary Index
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659
35006144.07 07/2008
11
12
35006144.07 07/2008
Safety Information
Important Information
NOTICE Read these instructions carefully, and look at the equipment to become familiar with the device before trying to install, operate, or maintain it. The following special messages may appear throughout this documentation or on the equipment to warn of potential hazards or to call attention to information that clarifies or simplifies a procedure.
The addition of this symbol to a Danger or Warning safety label indicates that an electrical hazard exists, which will result in personal injury if the instructions are not followed. This is the safety alert symbol. It is used to alert you to potential personal injury hazards. Obey all safety messages that follow this symbol to avoid possible injury or death.
DANGER
DANGER indicates an imminently hazardous situation, which, if not avoided, will result in death or serious injury.
WARNING
WARNING indicates a potentially hazardous situation, which, if not avoided, can result in death, serious injury, or equipment damage.
CAUTION
CAUTION indicates a potentially hazardous situation, which, if not avoided, can result in injury or equipment damage.
35006144.07 07/2008
13
Safety Information
PLEASE NOTE
Electrical equipment should be installed, operated, serviced, and maintained only by qualified personnel. No responsibility is assumed by Schneider Electric for any consequences arising out of the use of this material. 2008 Schneider Electric. All Rights Reserved.
14
35006144.07 07/2008
At a Glance
Document Scope This manual describes the elements necessary for the programming of Premium, Atrium and Quantum PLCs using the Unity Pro programming workshop. Data and illustrations in this guide are not binding. We reserve the right to modify our products in line with our policy of continuous product development. The information in this document is subject to change without notice and should not be construed as a commitment by Schneider Electric. Schneider Electric assumes no responsibility for any errors that may appear in this document. If you have any suggestions for improvements or amendments or have found errors in this publication, please notify us. No part of this document may be reproduced in any form or by any means, electronic or mechanical, including photocopying, without express written permission of Schneider Electric. All pertinent state, regional, and local safety regulations must be observed when installing and using this product. For reasons of safety and to ensure compliance with documented system data, only the manufacturer should perform repairs to components. When controllers are used for applications with technical safety requirements, please follow the relevant instructions. Failure to use Schneider Electric software or approved software with our hardware products may result in injury, harm, or improper operating results. Failure to observe this product related warning can result in injury or equipment damage. User Comments We welcome your comments about this document. You can reach us by e-mail at [email protected]
Validity Note
35006144.07 07/2008
15
16
35006144.07 07/2008
I
Introduction
Contents of this Section What's in this Part? This section describes the general design and behavior of an application created with Unity Pro. This part contains the following chapters:
Chapter 1 Chapter Name Presentation Page 19
35006144.07 07/2008
17
General Presentation
18
35006144.07 07/2008
Presentation
1
Introduction
Overview This chapter describes the general design and behavior of a project created with Unity Pro. This chapter contains the following topics:
Topic Capabilities of Unity Pro User Interface Project Browser User Application and Project File Formats Configurator Data Editor Program Editor Function Block Diagram FBD Ladder Diagram (LD) Language General Information about SFC Sequence Language Instruction List IL Structured Text ST PLC Simulator Export/Import User Documentation Debug Services Diagnostic Viewer Operator Screen Page 20 24 26 27 31 34 41 44 46 48 51 52 53 54 55 56 62 63
35006144.07 07/2008
19
Presentation
Programming Languages
20
35006144.07 07/2008
Presentation
Software Packages
The following software packages are available: Unity Pro S Unity Pro M Unity Pro L Unity Pro XL Unity Pro XLS Unity Developers Edition (UDE)
35006144.07 07/2008
21
Presentation
Performance Scope
Programming languages Function Block Diagram FBD Ladder Diagram (LD) language Instruction List IL Structured Text ST Sequential Language SFC Libraries (1) Standard library Control library Communication library Diagnostics library I/O Management library System library Motion control drive library TCP Open library Obsolete library MFB library Safety library Memory card file management library General information Create and use data structures (DDTs) Create and use Derived Function Blocks (DFBs)
The following table shows the main characteristics of the individual software packages:
Unity Pro S Unity Pro M Unity Pro L Unity Pro XL Unity Pro XLS
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + +( 2) +( 2) +( 2)
+ + + + + + + + +
+ + + + + + + optional + + +
+ + + + + + + optional + + +
+ + + + + + + optional + + +
+( 2) +( 2) +( 2) +( 2) +( 2) +( 2) +( 2) optional (2) +( 2) +( 2) + +( 2)
+ + +
+ + +
+ + +
+ + +
+( 2) +( 2) +
Project browser with structural and/or functional view Managing access rights Operator screen Diagnostic viewer System diagnostics Project diagnostics Application converter
+ + + + + -
+ + + + + PL7 converter
22
35006144.07 07/2008
Presentation
Unity Pro S Managing multi-stations Supported platforms Modicon M340 Premium BMX P34 1000 BMX P34 20 -
Unity Pro M -
Unity Pro L -
Unity Pro XL -
BMX P34 1000 BMX P34 20 P57 0244M P57 CA 0244M P57 CD 0244M P57 104M P57 154M P57 1634M P57 204M P57 254M P57 2634M H57 24M -
Quantum
140 CPU 311 10 140 CPU 434 12 U/A* 140 CPU 534 14 U/A* * Upgrade using Unity OS
CPU 311 10 CPU 534 14 U/A CPU 651 50 CPU 652 60 CPU 651 60 CPU 671 60
CPU 311 10 CPU 434 12 U/A CPU 534 14 U/A CPU 651 50 CPU 651 60 CPU 652 60 CPU 671 60 CPU 651 60 S CPU 671 60 S All CPUs +
Atrium Simulator Openess Hyperlinks Unity Pro Server (for OFS, UDE, UAG)
PCI 57 204 +
All CPUs +
All CPUs +
+ -
+ -
+ -
+ +
+ +
Software components contained in the software package Documentation as context help and PDF OS Loader tool + HW Firmware Unity loader + + + + + + + + + + + + + + +
+ = available + (1) = Availability of the blocks depends of the hardware platforms (See Unity Pro, standard block Library, Availability of the blocks on different hardware platforms). + (2) = Available on all PLC except platforms CPU 651 60 S, CPU 671 60 S. = not available
Naming Convention
In the following documentation, "Unity Pro" is used as general term for "Unity Pro S", "Unity Pro M", "Unity Pro L", "Unity Pro XL" and "Unity Pro XLS".
35006144.07 07/2008
23
Presentation
User Interface
Overview
1
The user interface consists of several, configurable windows and toolbars. User interface:
2 3 4
Unity Pro: My_Project File Edit View Services Tools Generate PLC Debug Window Help
RUN STOP
Project Browser Structural View Station Configuration 0 : XBus Cabinet Derived Data Types Derived FB Types Variables & FB Communication Program Tasks MAST Sections
SFC
LD
My_Section [MAST] 1 2 3 4 5
Initial filling
Start cycle
2
Alarm /
3 Name
count
Name Filling up Mixer filling up End of filling Initial mixer Inital filling emptying Proportioning
IN1 IN2 .8.2(2)
count ok
valid count
process Unused M
SFC
MY_SFC...
LD
MY_LD...
fbd
MY_FBD...
Generate Ready
24
35006144.07 07/2008
Presentation
Legend:
Number 1 2 3 4 5 6 Description Menu bar (See Unity Pro, Operating Modes, Menus) Toolbar (See Unity Pro, Operating Modes, Toolbar) Project Browser (See Unity Pro, Operating Modes, Project browser) Editor window (programming language editors, data editor, etc.) Register tabs for direct access to the editor window Information window (See Unity Pro, Operating Modes, Output windows) (provides information about errors which have occurred, signal tracking, import functions, etc.) Status bar (See Unity Pro, Operating Modes, Status bar)
35006144.07 07/2008
25
Presentation
Project Browser
Introduction The Project Browser displays all project parameters. The view can be shown as structural (topological) and/or functional view.
Project Browser Structural View Station Configuration 0 : X Bus Derived Data Types Derived FB Types Variables & FB instances Communication Programs Tasks MAST Sections SFC process SFC Filling Feeding Box SFC Mixing ST Mixing_1:ST1 ST Mixing_2:ST2 SR Sections Functional View Proportioning Machine Proportioning Program Table Screen Filling Feedbox Program LD ladder1 Table Screen Mixing Program ST ST1 Table Screen Process Program IL IL1 Table
Structural View
The project browser offers the following features in the structural view: Creation and deletion of elements The section symbol shows the section programming language and if it is protected (in case of an empty section the symbol is grey) View the element properties Creation of user directories Launching the different editors Start the import/export function The project browser offers the following features in functional view: Creation of functional modules Insertion of sections, animation tables etc. using Drag and Drop from the structural view Creation of sections View the element properties Launching the different editors The section symbol shows the section programming language and other attributes
35006144.07 07/2008
Functional View
26
Presentation
STA File
This file type is used for archiving projects and can be created only after the project has been generated. This file type allows forward compatibility between the different versions of Unity Pro. Creating an STA file is done by accessing the File Save Archive menu in the Unity Pro main window. Opening an STA file is done by accessing the File Open menu in the Unity Pro main window. Note: In the Open menu window, the selected file type must be Unity Pro Archived Application File (STA). For more information about creating an STA file, see the Unity Pro Installation Manual (See Unity Pro, Installation manual, Installing Unity Pro): Create Unity Pro Archived Application File (See Unity Pro, Installation manual, Operations Required Prior an Update of Unity Pro, Create Unity Pro Archive Application File).
35006144.07 07/2008
27
Presentation
For more information about opening an STA file, see the Unity Pro Installation Manual (See Unity Pro, Installation manual, Installing Unity Pro): Restoring Unity Pro Archived Application File (See Unity Pro, Installation manual, Restoring Projects and Settings after Unity Pro Update, Restoring Unity Pro Archive Application). The following table presents the STA file advantages and drawbacks:
Advantages Fast project saving. Projects can be shared vie e-mail or low size memory supports. Capability to connect in Equal Online Mode to the PLC after opening the project on a new version of Unity Pro. For additional information, see Connection/Disconnection (See Unity Pro 4.0, Operating Modes, Connection / disconnection) in the Operating Modes (See Unity Pro 4.0, Operating Modes) manual. Allow online modifications with the PLC without any prior download into the PLC. Drawbacks Can be created only after the project has been generated. Opening of the project is long, as the project file is rebuilt before operation.
XEF File
This file type is used for exporting projects in an XML source format and can be created at any stage of a project. Exporting an XEF file is done by accessing the File Export Project menu in the Unity Pro main window. Importing an XEF file is done by accessing the File Open menu in the Unity Pro main window. Note: In the Open menu window, the selected file type must be Unity Pro Application Exchange File (XEF). For more information about creating an XEF file, see the Unity Pro Installation Manual (See Unity Pro, Installation manual, Installing Unity Pro): Create Unity Pro Application Exchange File (See Unity Pro, Installation manual, Operations Required Prior an Update of Unity Pro, Create Unity Pro Exchange Application File).
28
35006144.07 07/2008
Presentation
For more information about restoring an XEF file, see the Unity Pro Installation Manual (See Unity Pro, Installation manual, Installing Unity Pro): Restoring Unity Pro Application Exchange File (See Unity Pro, Installation manual, Restoring Projects and Settings after Unity Pro Update, Restoring Unity Pro Exchange Application). The following table presents the XEF file advantages and drawbacks:
Advantages The XML source format ensures project compatibility with any version of Unity Pro. Drawbacks Medium size. Opening of the project takes time while the project is imported before operation. Generation of the project is mandatory to reassemble the project binary code. Operating with the PLC requires to rebuild all the project and perform a download in the processor. Connecting to the PLC in Equal Online mode with an XEF file is not possible. For additional information, see Connection/ Disconnection (See Unity Pro 4.0, Operating Modes, Connection / disconnection) in the Operating Modes (See Unity Pro 4.0, Operating Modes) manual.
Important Information
The STU files are not compatible across Unity Pro versions. In order to use a project with different Unity Pro versions, users must either store, the: Unity Pro Archived Application Files (STA): With the STA file, it is possible to reuse the current built project with the new Unity Pro version installed on the computer. Unity Pro Application Exchange Files (XEF): The XEF file must be used if the project has been built.
35006144.07 07/2008
29
Presentation
(1): Compressed files. (2): The project needs to be first uploaded into the PLC. (3): The project can be saved only if it has been generated. Note: The values in the table represent a ratio between file types, where the STU value is the reference.
30
35006144.07 07/2008
Presentation
Configurator
Configurator Window The configurator window is split into two windows: Catalog window A module can be selected from this window and directly inserted in the graphical representation of the PLC configuration by dragging and dropping. Graphical representation of the PLC configuration Representation of the Configurator window:
Local Quantum Bus Bus: 1 140 CPU 671 60 01.00
Local Quantum Bus Analog 140 ACI 030 00 01.00 140 ACI 040 00 01.00 140 ACO 020 00 01.00 140 ACO 130 00 01.00 140 AII 330 00 01.00 140 AII 330 10 01.00 140 AIO 330 00 01.00 140 AMM 090 00 01.00 140 ARI 030 10 01.00 140 ATI 030 00 01.00 140 AVI 030 00 01.00 140 AVO 020 00 01.00 Communication 140 CRP 811 00 01.00 140 CRP 93X 00 01.00 140 EIA 921 00 01.00 140 NOE 211 00 01.00 140 NOE 251 00 01.00
1 2 3 4 5 6 7 CPS CPU ACI ACO DDI DDO 111 671 030 020 353 353 00 60 00 00 00 00
10
11
12
13
14
Increase 1 Bus Properties... Cut Cut Copy Insert Delete Module Open Module Move Module Power Supply and I/O Budget... Copy Insert New Device...
One of the following shortcut menus is called depending on the position of the mouse pointer: Mouse pointer on the background allows among others: Change CPU, Selection of different Zoom factors. Mouse pointer on the module allows among others: Access to editor functions (delete, copy, move), Open the module configuration for defining the module specific parameters, Show the I/O properties and the total current. Mouse pointer on an empty slot allows among others: Insert a module from the catalog, Insert a previously copied module including its defined properties.
35006144.07 07/2008
31
Presentation
Module Configuration
The module configuration window (called via the modules shortcut menu or a double-click on the module) is used to configure the module. This also includes channel selection, selection of functions for the channel selected, assignment of State RAM addresses (only Quantum) etc. Module configuration window for a Premium I/O module:
0.2 : TSX AEY 414 4I ANA. MULTIRANGE
TSX AEY 414 Channel 0 Channel 1 Channel 2 Channel 3 Task: MAST Terminal Block Cold Connection Internal Telefast External PT100
Configuration Symbol 0 1 2 3 Range +/-10 V Thermo K +/-10 V Pt100 IEC/ Scale %... 1/10 C %... 1/10 C Filter 0 0 0 0
Module Properties
The module properties window (called via the modules shortcut menu) shows the modules properties such as the power consumption, number of I/O points (only Premium) and more. The module properties window for the power supply shows the total current of the rack:
TSX PSY 2600M:-1 Power 120% 100% 80% 60% 1904 200 40% 20% 5V
Used Overloaded Available
EA
5000
625
500
0 mA
30 mA
24V
24VR
VR: For relay V: For VDC inputs
OK
Cancel
32
35006144.07 07/2008
Presentation
Network Configuration
The network configuration is called via the communications folder. Network configuration:
Project Browser Structural View Communication Network my network Link
Analyze Print
Local Add Network Ethernet1 Increase Modbus Plus_A Decrease Routing Table Add User Directory Add Hyperlink
The network configuration windows allow among others: Creation of networks Network analysis Printout of the network configuration A window for configuring a network:
Ethernet_1 Model family TCP/IP 10/100 Regular connection Module IP address IP address 0 . 0 . 0 . 0 IP Configuration Subnet mask 0 . 0 . 0 . 0 Gateway address 0 . 0 . 0 . 0 Module address Rack Modul Channe Module services Yes Yes Yes I/O request Global data Address server
Address
Bandwidth
0 . 0 . 0 . 0 0 . 0 . 0 . 0 0 . 0 . 0 . 0
33
Presentation
Data Editor
Introduction The data editor offers the following features: Declaration of variable instances Definition of derived data types (DDTs) Instance declaration of elements and derived function blocks (EFBs/DFBs) Definition of derived function block (DFBs) parameters The following functions are available in all tabs of the data editor: Copy, Cut, Paste Expand/collapse structured data Sorting according to Type, Symbol, Address etc. Filter Inserting, deleting and changing the position of columns Drag and Drop between the data editor and the program editors Undo the last change Export/Import
34
35006144.07 07/2008
Presentation
Variables
Type Bool SFCSTEP_STATE Bool SFCSTEP_STATE Byte SFCSTEP_STATE Date SFCSTEP_STATE Dint SFCSTEP_STATE Dt SFCSTEP_STATE DWord SFCSTEP_STATE EBoot SFCSTEP_STATE Bool Dint Dint Bool Bool
The following functions are available: Defining a symbol for variables Assigning data types Own selection dialog box for derived data types Assignment of an address Automatic symbolization of I/O variables Assignment of an initial value Entering a comment View all properties of a variable in a separate properties dialog box
35006144.07 07/2008
35
Presentation
IO DDTs are used to assign the complete I/O structure of a module to an individual variable. Assignment of IO DDTs:
010 Data Editor Variables Filter Name Name temp_ffeding_box Analog_input_1 CH_ERROR
temp_ffeding_box (VAL)
DDT types *
Function blocks
Alias
Type Int ANA_I... Bool temp_ffeding_box Int Int Bool Bool Bool Int Bool Bool Bool
Address Value %IW0.2.0.0 %CH0.2.0 %I0.2.0.ERR %IW0.2.0.0 %MW0.2.0.0 %MW0.2.0.0.0 %MW0.2.0.0.1 %MW0.2.0.0.2 %MW0.2.0.1 %MW0.2.0.1.0 %MW0.2.0.1.1 %MW0.2.0.1.2
The following functions are available: Complete I/O structures can be assigned with individual variables using IO DDTs After entering the variables addresses, all elements of the structure are automatically assigned with the correct input/output bit or word Because it is possible to assign addresses later on, standard modules can be simply created whose names are defined at a later date. An alias name can be given all elements of an I/O structure.
36
35006144.07 07/2008
Presentation
The DDT types tab is used for defining derived data types (DDTs). A derived data type is the definition of a structure or array from any data type already defined (elementary or derived). Tab DDT types:
010 Data Editor Variables Filter Name Name Standard Motor stop feedback start alarm Speed Amp SFCSTEP_STATE SFCSTEP_TIMES * Type <Struct> <Struct> Bool Bool Bool Standard Int Int <Struct> <Struct> Comment DDT types Function blocks DFB types
The following functions are available: Definition of nested DDTs (max. 8 levels) Definition of arrays with up to 6 dimensions Assignment of an initial value Assignment of an address Entering a comment Analysis of derived data types Assignment of derived data types to a library View all properties of a derived data type in a separate properties dialog box
35006144.07 07/2008
37
Presentation
Function Blocks
The Function blocks tab is used for the instance declaration of elements and derived function blocks (EFBs/DFBs). Tab Function blocks:
010 Data Editor Variables Filter Name SFCControl <Inputs> CHARTREF INIT CLEAR DISTIME DISTRANS DISACT STEPUN STEPDEP RESTERR DISRMOTE ALLTRANS RESSTEPT DDT types Name * Number Type Value SFCCNTRL SFCCHAR.. Bool Bool Bool Bool Bool Bool Bool Bool Bool Bool Bool Function blocks DFB types EFB Comment DFB
1 2 3 4 5 6 7 8 9 10 11 12
FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Link to SFC Reset SFC Reset SFC Supervision time Transitions Action processing Step over, StepOver Supervision time Remote control All transitions Elapsed time
The following functions are available: Display of the function blocks used in the project Definition of a symbol for the function blocks used in the project Automatic enabling of the defined symbols in the project Enter a comment about the function block View all parameters (inputs/outputs) of the function block Assignment of an initial value to the function block inputs/outputs
38
35006144.07 07/2008
Presentation
DFB Types
The DFB types tab is used for the defining derived function block (DFBs) parameters. The creation of DFB logic is carried out directly in one or more sections of the FBD, LD, IL or ST programming languages. Tab DFB types:
010 Data Editor Variables Filter Name Name valve <Inputs> Open close valid eot opened eot closed <Outputs> <Inputs/outputs> <Public> timer disc timer opening * Nu Type <DFB> Bool Bool Bool Bool Bool Value Comment DDT types Function blocks DFB types
Int Int
The following functions are available: Definition of the DFB name Definition of all parameter of the DFB, such as: Inputs Outputs VAR_IN_OUT (combined inputs/outputs) Private variables Public variables Assignment of data types to DFB parameters Own selection dialog box for derived data types Assignment of an initial value Nesting DFBs Use of several sections in a DFB Enter a comment for DFBs and DFB parameters Analyze the defined DFBs Version management Assignment of defined DFBs to a library
35006144.07 07/2008
39
Presentation
Data Usage
Data types and instances created using the data editor can be inserted (context dependent) in the programming editors. The following functions are available: Access to all programming language editors Only compatible data is displayed View of the functions, function blocks, procedures and derived data types arranged according to their library affiliation Instance declaration during programming is possible Data selection dialog box:
GEOFBDEDITOR: Instance selection
.1 1 AND
...
| Variables Name Name Emptying motor mixer motor emptying fb1_a_presel fb1_b_presel fb1_c_presel adjust_tempo_0 logo nv Function blocks * Type SFCSTEP_STATE Motor Motor Int Int Int Int Real In structure Comment Address
IN1
OUT
IN2
OK
Cancel
40
35006144.07 07/2008
Presentation
Program Editor
Introduction A program can be built from: Tasks, that are executed cyclically or periodically. Tasks are built from: Sections Subroutines Event processing, that is carried out before all other tasks. Event processing is built from: Sections for processing time controlled events Sections for processing hardware controlled events Example of a Program:
Project Browser Structural View Program Tasks MAST Section F B Counting D LD Drilling SFC Washing SR Sections ST SR1 LD SR2 FAST Sections SR Sections AUX0 Sections SR Sections Events Timer event ST Timer0 ST Timer1 I/O Events ST Evt0 ST Evt1
35006144.07 07/2008
41
Presentation
Tasks
Unity Pro supports multiple tasks (Multitasking). The tasks are executed "parallel" and independently of each other whereby the execution priorities are controlled by the PLC. The tasks can be adjusted to meet various requirements and are therefore a powerful instrument for structuring the project. A multitask project can be constructed from: A Master task (MAST) The Master task is executed cyclically or periodically. It forms the main section of the program and is executed sequentially. A Fast task (FAST) The Fast task is executed periodically. It has a higher priority than the Master task. The Fast task is used for processes that are executed quickly and periodically. One to four AUX task(s)) The AUX tasks are executed periodically. They are used for slow processing and have the lowest priority. The project can also be constructed with a single task. In this case, only the Master task is active.
Event Processing
Event processing takes place in event sections. Event sections are executed with higher priority than the sections of all other tasks. They are suited to processing that requires very short reaction times after an event is triggered. The following section types are available for event processing: Sections for processing time controlled events (Timerx Section) Sections for processing hardware controlled events (Evtx Section) The following programming languages are supported: FBD (Function Block Diagram) LD (Ladder Diagram Language) IL (Instruction List) ST (Structured Text)
Sections
Sections are autonomous program units in which the logic of the project is created. The sections are executed in the order shown in the project browser (structural view). Sections are connected to a task. The same section cannot be belong to more than one task at the same time. The following programming languages are supported: FBD (Function Block Diagram) LD (Ladder Diagram Language) SFC (Sequential Function Chart) IL (Instruction List) ST (Structured Text)
42
35006144.07 07/2008
Presentation
Subroutine
Subroutines are created as separate units in subroutine sections. Subroutines are called from sections or from another subroutine. Nesting of up to 8 levels is possible. A subroutine cannot call itself (not recursive). Subroutines are assigned a task. The same subroutine cannot be called by different tasks. The following programming languages are supported: FBD (Function Block Diagram) LD (Ladder Diagram Language) IL (Instruction List) ST (Structured Text)
35006144.07 07/2008
43
Presentation
Representation
Inspection window Variable
EN Input
Topological
Addresses
Link
EN
Objects
The objects of the FBD (Function Block Diagram) programming language help to divide a section into a number of: Elementary Functions (EFs), Elementary Function Blocks (EFBs) Derived Function Blocks (DFBs) Procedures Subroutine calls Jumps Links Actual Parameters Text objects to comment on the logic
44
35006144.07 07/2008
Presentation
Properties
FBD sections have a grid behind them. A grid unit consists of 10 coordinates. A grid unit is the smallest possible space between 2 objects in an FBD section. The FBD programming language is not cell oriented but the objects are still aligned with the grid coordinates. An FBD section can be configured in number of cells (horizontal grid coordinates and vertical grid coordinates). The program can be entered using the mouse or the keyboard.
Input Aids
The FBD editor offers the following input aids: Toolbars for quick and easy access to the desired objects Syntax and semantics are checked as the program is being written. Incorrect functions and function blocks are displayed in blue Unknown words (e.g. undeclared variables) or unsuitable data types are marked with a red wavy line Brief description of errors in the Quickinfo (Tooltip) Information for variables and pins can be displayed in a Quickinfo (Tooltip) type, name, address and comment of a variable/expression type, name and comment of an FFB pin Tabular display of FFBs Actual parameters can be entered and displayed as symbols or topological addresses Different zoom factors Tracking of links Optimization of link routes Display of inspection windows
35006144.07 07/2008
45
Presentation
Representation
%IX1.5.6
%IX1.5.5
%QX2
%IX1.5.6
Execution number Inspection window Contact Function Coil Variable
%IX1.5.6
EN
XOR ENO
Error
Objects
The objects of the LD programming language help to divide a section into a number of: Contacts, Coils, Elementary Functions (EFs) Elementary Function Blocks (EFBs), Derived Function Blocks (DFBs) Procedures Control elements Operation and compare blocks which represent an extension to IEC 61131-3 Subroutine calls Jumps Links Actual Parameters Text objects to comment on the logic
46
35006144.07 07/2008
Presentation
Properties
LD sections have a background grid that divides the section into lines and columns. The LD programming language is cell oriented, i.e. only one object can be placed in each cell. LD sections can be 11-64 columns and 17-2000 lines in size. The program can be entered using the mouse or the keyboard.
Input Aids
The LD editor offers the following input aids: Objects can be selected from the toolbar, the menu or directly using shortcut keys Syntax and semantics are checked as the program is being written. Incorrect objects are displayed in blue Unknown words (e.g. undeclared variables) or unsuitable data types are marked with a red wavy line Brief description of errors in the Quickinfo (Tooltip) Information for variables and for elements of an LD section, that can be connected to a variable (pins, contacts, coils, operation and compare blocks), can be displayed in a Quickinfo (Tooltip) type, name, address and comment of a variable/expression type, name and comment of FFB pins, contacts etc. Tabular display of FFBs Actual parameters can be entered and displayed as symbols or topological addresses Different zoom factors Tracking of FFB links Optimizing the link routes of FFB links Display of inspection windows
35006144.07 07/2008
47
Presentation
T1
S_4_2
T_4_2 Transition condition (return value of a Transition section) S_4_3 %I10.1 VarX %I10.3
Alternative branch
T_4_3 %I10.4 > S_4_4 S_4_7 %I10.5 Alternative joint Transition condition (Topological Boolean address)
Return_Var
48
35006144.07 07/2008
Presentation
Objects
An SFC section provides the following objects for creating a program: Steps Macro steps (embedded sub-step sequences) Transitions (transition conditions) Transition sections Action sections Jumps Links Alternative sequences Parallel sequences Text objects to comment on the logic The SFC editor has a background grid that divides the section into 200 rows and 32 columns. The program can be entered using the mouse or the keyboard.
Properties
Input Aids
The SFC editor offers the following input aids: Toolbars for quick and easy access to the desired objects Automatic step numbering Direct access to actions and transition conditions Syntax and semantics are checked as the program is being written. Incorrect objects are displayed in blue Unknown words (e.g. undeclared variables) or unsuitable data types are marked with a red wavy line Brief description of errors in the Quickinfo (Tooltip) Information for variables and for transitions can be displayed in a Quickinfo (Tooltip) type, name, address and comment of a variable/expression type, name and comment of transitions Different zoom factors Show/hide the allocated actions Tracking of links Optimization of link routes
35006144.07 07/2008
49
Presentation
Step Properties
Step properties:
Step Properties General Step name Actions StepX Comment Initial Step
Supervision times and delay time 'SFCSTEP_TIMES' Maximum Minimum Delay Step Properties General Qualifier DS Actions Time Literal Comment OK Variable Action Cancel Variable Motor1 Apply Section .. Help t#1s Literals
DS
Motor1
The step properties are defined using a dialog box that offers the following features: Definition of initial steps Definition of diagnostics times Step comments Allocation of actions and their qualifiers
50
35006144.07 07/2008
Presentation
Instruction List IL
Introduction Representation The IL editor is used for instruction list programming according to IEC 61131-3. Representation of an IL section: Label START: Operators LD ANDN ST LD VarA VarB VarC VarX Operands Comments Inspection window
VarA %I4.2.3 Comment
(* Ventilator On *)
(* Undeclared Variable *)
Tooltip
Objects
An instruction list is composed of a series of instructions. Each instruction begins on a new line and consists of: An operator A modifier if required One or more operands if required A label as a jump target if required A comment about the logic if required.
Input Aids
The IL editor offers the following input aids: Syntax and semantics are checked as the program is being written. Keywords and comments are displayed in color Unknown words (e.g. undeclared variables) or unsuitable data types are marked with a red wavy line Brief description of errors in the Quickinfo (Tooltip) Tabular display of the functions and function blocks Input assistance for functions and function blocks Operands can be entered and displayed as symbols or topological addresses Display of inspection windows
35006144.07 07/2008
51
Presentation
Structured Text ST
Introduction Representation The ST editor is used for programming in structured text according to IEC 61131-3. Representation of an ST section: Operator Instruction
Operand
Comment
Inspection window
X1 %QF4.2.3 Comment
Tooltip
D := B*B - 4*A*C ; (* Basis Calculation *) IF D < 0.0 THEN NROOTS := 0 ; ELSIF D = 0.0 THEN NROOTS := 1 ; X1 := -B / (2.0*A) ; ELSE Expression NROOTS := 2 ; X1 := (-B + SQRT(D)) / (2.0*A) ; X2 := (-B - SQRT(D)) / (2.0*A) ; END_IF ; Varx := 15; (* Undeclared Variable *)
E1061 Undefined Symbol 'Varx
Objects
The ST programming language works with "Expressions". Expressions are constructions consisting of operators and operands that return a value when executed. Operators are symbols representing the operations to be executed. Operators are used for operands. Operands are variables, literals, function and function block inputs/outputs etc. Instructions are used to structure and control the expressions.
Input Aids
The ST editor offers the following input aids: Syntax and semantics are checked as the program is being written. Keywords and comments are displayed in color Unknown words (e.g. undeclared variables) or unsuitable data types are marked with a red wavy line Brief description of errors in the Quickinfo (Tooltip) Tabular display of the functions and function blocks Input assistance for functions and function blocks Operands can be entered and displayed as symbols or topological addresses Display of inspection windows
52
35006144.07 07/2008
Presentation
PLC Simulator
Introduction The PLC simulator enables error searches to be carried out in the project without being connected to a real PLC. All project tasks (Mast, Fast, AUX and Event) that run on a real PLC are also available in the Simulator. The difference from a real PLC is the lack of I/O modules and communication networks (such as e.g. ETHWAY, Fipio and Modbus Plus) nondeterministic realtime behavior. Naturally, all debugging functions, animation functions, breakpoints, forcing variables etc. are available with the PLC simulator. Representation Representation of a dialog box:
PLC Simulator Control
?
Simulation Host PC name: sg6157.aut.schneider-electric.com 139.158.106.116 Station
Premium
CH2 CH3 CH0 CH1 RUN TER FIP ERR I/O Host IP address: Project name:
Clients connected Name of the client: local host sg-avail.aut.schneider Reset Power Cycle IP address: 127.000.000.001 139.158.107.005
The simulator controller offers the following views: Type of simulated PLC Current status of the simulated PLC Name of the loaded project IP address and DNS name of the host PC for the simulator and all connected Client PCs Dialog box for simulating I/O events Reset button to reset the simulated PLC (simulated cold restart) Power Off/On button (to simulate a warm restart) Shortcut menu (right mouse button) for controlling the Simulator
35006144.07 07/2008
53
Presentation
Export/Import
Introduction The export and import functions allow you to use existing data in a new project. The XML export/import format makes is possible to provide or accept data from external software. The following objects can be exported: Complete projects, including configuration Sections of all programming languages Subroutine sections of all programming languages Derived function blocks (DFBs) Derived data types (DDTs) Variable declarations Operator Screen All objects that can be exported can naturally be imported as well. There are two types of import: Direct import Imports the object exactly as it was exported. Import with the assistant The assistant allows you to change the variables names, sections or functional modules. The mapping of addresses can also be modified.
Export
Import
54
35006144.07 07/2008
Presentation
User Documentation
User Documentation Scope of the user documentation:
Documentation * 1
Station 2 Title Page Exclude all headings Contents Include all headings ... Parameter Configuration Structure documentation Local Quantum Bus View Print filling feeding box (?) Mixing (?) ST1 (?) 3 IL1 Exclude heading load Include headings Emp View 4 SR Sec Events (?) Animation tables (?) Footer Print
The following are just some of the services provided for documenting the project: Print the entire project (2) or in sections (3) Selection between structural and functional view (1) Adjustment of the result (footer, general information, etc.) Local printing for programming language editors, configurator, etc. Special indication (bold) for keywords Paper format can be selected Print preview (4) Documentation save
35006144.07 07/2008
55
Presentation
Debug Services
Searching for Errors in the User Application The following are just some of the features provided to optimize debugging in the project: Set breakpoints in the programming language editors Step by step program execution, including step into, step out and step over Call memory for recalling the entire program path Control inputs and outputs Online mode is when a connection is established between the PC and the PLC. Online mode is used on the PLC for debugging, for animation and for changing the program. A comparison between the project of the PC and project of the PLC takes place automatically when the connection is established. This comparison can produce the following results: Different projects on the PC and the PLC In this case, online mode is restricted. Only PLC control commands (e.g. start, stop), diagnostic services and variable monitoring are possible. Changes cannot be made to the PLC program logic or configuration. However, the downloading and uploading functions are possible and run in an unrestricted mode (same project on PC and PLC). Same projects on the PC and the PLC There are two different possibilities: ONLINE SAME, BUILT The last project generation on the PC was downloaded to the PLC and no changes were made afterwards, i.e. the projects on the PC and the PLC are absolutely identical. In this case, all animation functions are available and unrestricted. ONLINE EQUAL, NOT BUILT The last project generation on the PC was downloaded to the PLC, however changes were made afterwards. In this case, the animation functions are only available in the unchanged project components.
Online Mode
56
35006144.07 07/2008
Presentation
Animation
Different possibilities are provided for the animation of variables: Section animation All programming languages (FBD, LD, SFC, IL and ST) can be animated. The variables and connections are animated directly in the section.
ST1 : [MAST] TIMER(IN := NOT pulse; PT := t#1s; (* Blink timer *) pulse := TIMER.Q; (* Count every pulse *) IF pulse = 1 THEN count := count + 1; END_IF; (* Animate lights according to counter *) CASE count OF 1: out1 := TRUE; 2: out2 := TRUE; ELSE (* All lights are on, switch then off again and start from out1 := FALSE; out2 := FALSE;
FBD1 : [MAST]
35006144.07 07/2008
57
Presentation
Tooltips A tooltip with the value of a variable is displayed when the mouse pointer passes over that variable.
ST1 : [MAST] TIMER(IN := NOT pulse; PT := t#1s; (* Blink timer *) pulse := TIMER.Q; (* Count every pulse *) IF pulse = 1 THEN count := count + 1; 66 END_IF; (* Animate lights according to counter *) CASE count OF 1: out1 := TRUE; 2: out2 := TRUE; ELSE (* All lights are on, switch then off again and start from out1 := FALSE; out2 := FALSE;
Inspection window An inspection window can be created for any variable. This window displays the value of the variable, the address and any comments (if available). This function is available in all programming languages.
ST1 : [MAST] TIMER(IN := NOT pulse; PT := t#1s; (* Blink timer *) pulse := TIMER.Q; (* Count every pulse *) IF pulse = 1 THEN count count := count + 1; 7 END_IF; (* Animate lights according to counter *) CASE count OF out1 1: out1 := TRUE; 2: out2 := TRUE; TRUE ELSE (* All lights are on, switch then off again and start from out1 := FALSE; out2 := FALSE;
58
35006144.07 07/2008
Presentation
Variables window This window displays all variables used in the current section.
Variables window Name pump_1.start pump_1.cmd pump_1.speed high_anim jack_1_out jack_3_out midle_anim Low_anim hole_anim1 End_threading.x Unblocking.x hole_anim2 End_drilling.x Value 1 1 100 0 1 0 1 0 0 0 0 0 0 Type Bool Bool Int Bool Bool Bool Bool Bool Bool Bool Bool Bool Bool Comment
Animation table The value of all variables in the project can be displayed, changed or forced in animation tables. Values can be changed individually or simultaneously together.
A Table[FBD Editor - FBD1: MAST]] T Modificatio Name start Indexing_blocki... t x tminErr tmaxErr text var1 var2 Force Value 1 0s 1 0 0 120 360 Set value Type Comment Bool SFCSTEP_STATE Time Bool Bool Bool String 120 Int 360 Int
35006144.07 07/2008
59
Presentation
Watch Point
Watch points allow you to view PLC data at the exact moment at which it is created (1) and not only at the end of a cycle. Animation tables can be synchronized with the watch point (2). A counter (3) determines how often the watch point has been updated. ST section with watch point:
Watch Point 341 3
ST
ST (Section): My_ST [MAST] if pump_1.start then pump_1.cmd: = true; else pump_1.cmd: = false; pump_1.speed: = 0; end_if; if pump_1.cmd then pump_1.speed: = pump_1.speed + 1; end_if; if pump_1.speed>100 then pump_1.speed: = 100; end_if; (* animation drilling & threadinf *) high_anim: = not jack_1_out and not jack_3_out; A Table[FBD-Editor - My_ST: MAST]] T Modificatio Name start Indexing_blocki... t x tminErr Force Value Type Bool SFCST... Time Bool Bool Comment
Breakpoint
Breakpoints allow you to stop processing of the project at any point. ST section with breakpoint:
ST1: [MAST] TIMER(IN := NOT pulse; PT := t#1s; (* Blink timer *) pulse := TIMER.Q; Breakpoint (* Count every pulse *) IF pulse = 1 THEN count := count + 1; END_IF; (* Animate lights according to counter *) CASE count OF 1: out1 := TRUE; 2: out2 := TRUE; ELSE (* All lights are on, switch then off again and start from out1 := FALSE; out2 := FALSE;
60
35006144.07 07/2008
Presentation
Single step mode allows you to execute the program step by step. Single step functions are provided if the project was stopped by reaching a breakpoint or if it is already in single step mode. ST section in single step mode:
ST
2 ST (Section): test1 [MAST] 3 (* inc counter var1 *) my_dfb (var2, var3); ST ST (DFB): test [test - t... out: = in; MAST call stack Calls (newest to the oldest) Section test test1 Instance Langu Line (test)my_dfb ST (1,4) ST (2,1) Display Close
The following functions are provided in single step mode: Step by step execution of the program StepIn (1) StepOut StepOver Show Current Step (2) Call memory (3) When the "step into" function is executed several times, the call memory enables the display of the entire path, starting with the first breakpoint
Note: Running the PLC program in step by step mode, as well as entering (StepIn) in a read/write protected section may lead to the inability to read the program and exit from the section. The user must switch the PLC in "Stop" mode to get back to the initial state.
Bookmarks
Bookmarks allow you to select code sections and easily find them again.
35006144.07 07/2008
61
Presentation
Diagnostic Viewer
Description Unity Pro provides system and project diagnostics. Errors which occur are displayed in a diagnostics window. The section which caused the error can be opened directly from the diagnostics window in order to correct the error.
Diagnostic Viewer Acknowledgement: 0 Acknowledged Deleted Deleted Deleted Message Buffer battery error Buffer battery error Buffer battery error Index overflow Error Symbol Range 0 0 0
System alarm
28/01/2002 21:10:51
0 0
62
35006144.07 07/2008
Presentation
Operator Screen
Introduction Operator windows visualize the automation process. The operator screen editor makes it easy to create, change and manage operator screens. Operator screens are created and accessed via the project browser.
Project Browser Structural View Station Configuration 0 : X Bus Derived Data Types Derived FB Types Variables & FB instances ? Elementary Variables ? Derived Variables ? I/O-Derived Variables ? Elementary FB instances ? Derived FB Instances Communication Network Routing Table Program Tasks Events Animation Tables Operator Screen Family_1 Screen_1 Screen_2 Screen_3 Family_2 Family_3 Documentation ? Title Page ? General Information
35006144.07 07/2008
63
Presentation
An operator window contains much information (dynamic variables, overviews, written text, etc.) and makes it easy to monitor and change automation variables. Operator Screen
FBD1: [MAST]
50
Block
0 100 Print
Latch
Enable
Menu
The operator screen editor offers the following features: Extensive visualization functions Geometric elements Line, rectangle, ellipse, curve, polygon, bitmap, text Control elements Buttons, control box, shifter, screen navigation, hyperlinks, input field, rotating field Animation elements Bar chart, trend diagram, dialog, date, disappear, blinking colors, variable animation Create a library for managing graphical objects Copying objects Creating a list of all variables used in the operator screen Creating messages to be used in the operator screen Direct access from the operator screen to the animation table or the cross reference table for one or more variables Tooltips give additional information about the variables Managing operator screens in families Import/export of individual operator screens or entire families
64
35006144.07 07/2008
Application Structure
II
At a Glance
In This Chapter This section describes the application program and memory structures associated with each type of PLC. This part contains the following chapters:
Chapter 2 3 4 5 6 Chapter Name Description of the Available Functions for Each Type of PLC Application Program Structure Application Memory Structure Operating Modes System objects Page 67 69 107 121 145
35006144.07 07/2008
65
Application Structure
66
35006144.07 07/2008
Note: Only LD and FBD languages are available on Quantum Safety PLCs.
35006144.07 07/2008
67
PLC Functions
Master task cyclic or periodic Fast task periodic Auxiliary tasks periodic Maximum size of a section I/O type event processing Timer type event processing Total of I/O type and Timer type event processing
X X -
X X -
X X 64Kb
X X 4
X X -
X X -
X X 4 16Mb
X -
32 16 32
64 32 64
32 32
64 64
128 32 128
64 64
64 16 64
128 32 128
X or Value available tasks or processes (the value is the maximum number) - unavailable tasks or processes.
68
35006144.07 07/2008
3
At a Glance
Subject of this Chapter What's in this Chapter? This chapter describes the structure and execution of the programs created using the Unity Pro software. This chapter contains the following sections:
Section 3.1 3.2 3.3 3.4 Topic Description of Tasks and Processes Description of Sections and Subroutines Mono Task Execution Multitasking Execution Page 70 76 80 87
35006144.07 07/2008
69
Program Structure
3.1
At a Glance
Subject of this Section What's in this Section?
This section describes the tasks and processes that comprise the application program. This section contains the following topics:
Topic Presentation of the Master Task Presentation of the Fast Task Presentation of Auxiliary Tasks Overview of Event Processing Page 71 72 73 75
70
35006144.07 07/2008
Program Structure
Structure
Execution
You can choose the type of master task execution: cyclic (default selection) or periodic (1 to 255ms)
Control
The master task can be controlled by program, by bits and system words.
System objects %SW0 %S30 %S11 %S19 %SW27 %SW28 %SW29 %SW30 %SW31 %SW32 Description Task period. Master task activation. Watchdog error. Period overrun. Number of ms spent in the system during the last Mast cycle. Maximum overhead time (in ms) for Modicon M340. Minimum overhead time (in ms) for Modicon M340. Execution time (in ms) of the last cycle. Execution time (in ms) of the longest cycle. Execution time (in ms) of the shortest cycle.
35006144.07 07/2008
71
Program Structure
72
35006144.07 07/2008
Program Structure
35006144.07 07/2008
73
Program Structure
Control
The auxiliary tasks can be controlled by program by bits and system words.
System objects %SW2 %SW3 %SW4 %SW5 %S32 %S33 %S34 %S35 %S11 %S19 %SW36 %SW39 %SW42 %SW45 %SW37 %SW40 %SW43 %SW46 %SW38 %SW41 %SW44 %SW47 Description Period of auxiliary task 0. Period of auxiliary task 1. Period of auxiliary task 2. Period of auxiliary task 3. Activation of auxiliary task 0. Activation of auxiliary task 1. Activation of auxiliary task 2. Activation of auxiliary task 3. Watchdog error Period overrun. Execution time (in ms) of the last cycle of auxiliary task 0. Execution time (in ms) of the last cycle of auxiliary task 1. Execution time (in ms) of the last cycle of auxiliary task 2. Execution time (in ms) of the last cycle of auxiliary task 3. Execution time (in ms) of the longest cycle of auxiliary task 0. Execution time (in ms) of the longest cycle of auxiliary task 1. Execution time (in ms) of the longest cycle of auxiliary task 2. Execution time (in ms) of the longest cycle of auxiliary task 3. Execution time (in ms) of the shortest cycle of auxiliary task 0. Execution time (in ms) of the shortest cycle of auxiliary task 1. Execution time (in ms) of the shortest cycle of auxiliary task 2. Execution time (in ms) of the shortest cycle of auxiliary task 3.
74
35006144.07 07/2008
Program Structure
35006144.07 07/2008
75
Program Structure
3.2
At a Glance
Aim of this Section What's in this Section?
This section describes the sections and the subroutines that make up a task.
76
35006144.07 07/2008
Program Structure
Description of Sections
Overview of the Sections Sections are autonomous programming entities. The identification tags of the instruction lines, the contact networks, etc. are specific to each section (no program jump to another section is possible). These are programmed either in: Ladder language (LD) Functional block language (FBD) Instruction List (IL) Structured Text (ST) or Sequential Function Charting (SFC) on condition that the language is accepted in the task. The sections are executed in the order of their programming in the browser window (structure view). An execution condition can be associated with one or more sections in the master, fast and auxiliary tasks, but not in the event processing tasks. The sections are linked to a task. The same section cannot belong simultaneously to several tasks. Example The following diagram shows a task structured into sections. MAS Sections Airlock Oven_1 Dryer SR Sections Characteristics of a Section The following table describes the characteristics of a section.
Characteristic Name Language Task or processing Condition (optional) Comment Protection Description 32 characters maximum (accents are possible, but spaces are not allowed). LD, FBD, IL, ST or SFC Master, fast, auxiliary, event A BOOL or EBOOL type bit variable can be used to condition the execution of the section. 256 characters maximum Write-protection, read/write protection.
35006144.07 07/2008
77
Program Structure
Actions
Transitions Dryer
78
35006144.07 07/2008
Program Structure
Description of Subroutines
Overview of Subroutines Subroutines are programmed as separate entities, either in: Ladder language (LD), Functional block language (FBD), Instruction List (IL), Structured Text (ST). The calls to subroutines are carried out in the sections or from another subroutine. The number of nestings is limited to 8. A subroutine cannot call itself (non recursive). Subroutines are also linked to a task. The same subroutine cannot be called from several different tasks. Example The following diagram shows a task structured into sections and subroutines. MAST Sections
SR Sections Control_1 Detection Characteristics of a Subroutine The following table describes the characteristics of a subroutine.
Characteristic Name Language Task Comment Description 32 characters maximum (accents are possible, but spaces are not allowed). LD, FBD, IL or ST. Master, fast or auxiliary 512 characters maximum
35006144.07 07/2008
79
Program Structure
3.3
At a Glance
Subject of this Section What's in this Section?
80
35006144.07 07/2008
Program Structure
Program processing
Updating of outputs
35006144.07 07/2008
81
Program Structure
Note: During the input acquisition and output update phases, the system also implicitly monitors the PLC (management of system bits and words, updating of current values of the real time clock, updating of status LEDs and LCD screens (not for Modicon M340), detection of changes between RUN/STOP, etc.) and the processing of requests from the terminal (modifications and animation).
Operating Mode
PLC in RUN, the processor carries out internal processing, input acquisition, processing of the application program and the updating of outputs in that order. PLC in STOP, the processor carries out: internal processing, input acquisition (1), and depending on the chosen configuration: fallback mode: the outputs are set to fallback position. maintain mode: the last value of the outputs is maintained. (1) for Premium , Atrium and Quantum PLCs, input acquisition is inhibited when the PLC is in STOP.
82
35006144.07 07/2008
Program Structure
Operation
Cycle n+1
Description
This type of operation consists of sequencing the task cycles, one after another. After having updated the outputs, the system performs its own specific processing then starts another task cycle, without pausing.
Cycle Check
The cycle is checked by the watchdog (see Control of Cycle Time, p. 85).
35006144.07 07/2008
83
Program Structure
Periodic Execution
Description In this operating mode, input acquisition, the processing of the application program and the updating of outputs are all carried out periodically over a defined period of 1 to 255 ms. At the start of the PLC cycle, a time out whose current value is initialized to the defined period starts the countdown. The PLC cycle must be completed before this time out expires and launches a new cycle. Operation The following diagram shows the execution phases of the PLC cycle.
Cycle n+1
Operating Mode
The processor carries out internal processing, input acquisition, processing of the application program and the updating of outputs in that order. If the period is not yet over, the processor completes its operating cycle until the end of the period by performing internal processing. If the operating time is longer than that assigned to the period, the PLC signals a period overrun by setting the system bit %S19 of the task to 1. Processing then continues and is executed fully (however, it must not exceed the watchdog time limit). The following cycle is started after the outputs have been implicitly written for the current cycle.
Cycle Check
Two checks are carried out: period overrun (see Control of Cycle Time, p. 85), by watchdog (see Control of Cycle Time, p. 85).
84
35006144.07 07/2008
Program Structure
In periodic operation, an additional control enables a period overrun to be detected. A period overrun does not cause the PLC to stop if it remains less than the watchdog value. The bit %S19 indicates a period overflow. It is set to 1 by the system, when the cycle time becomes greater than the task period. The word %SW0 contains the value of the period (in ms). It is initialized on cold restart by the defined value. It can be changed by the user.
The following system words can be used to obtain information on the cycle time: %SW30 contains the execution time of the last cycle %SW31 contains the execution time of the longest cycle %SW32 contains the execution time of the shortest cycle
Note: These different items of information can also be accessed explicitly from the configuration editor.
35006144.07 07/2008
85
Program Structure
cycle
%Ii inputs of drop No. i %Qi outputs of drop No. i i drop number
Description
Phase 1 Description Request to update: the inputs of the first drop (i=1) the outputs of the last drop (i=5) Processing the program Updating the inputs of the first drop (i=1) Request to update the inputs of the second drop (i=2) 4 Request to update: the inputs of the third drop (i=3) the outputs of the first drop (i=1) Request to update: the inputs of the fourth drop (i=4) the outputs of the second drop (i=2) Request to update: the inputs of the last drop (i=5) the outputs of the third drop (i=3) Request to update the outputs of the fourth drop (i=4)
2 3
86
35006144.07 07/2008
Program Structure
3.4
At a Glance
Subject of this Section What's in this Section?
Multitasking Execution
35006144.07 07/2008
87
Program Structure
Illustration
The following diagram shows the tasks in a multitasking structure and their level of priority.
Auxiliary task AUXi Master task MAST Fast task FAST Event processing EVTi and TIMERi
Description
Priority
The master (MAST) task is still the application base. The other tasks differ depending on the type of PLC (see Tasks and Processes, p. 68). Levels of priority are fixed for each task in order to prioritize certain types of processing. Event processing can be activated asynchronously with respect to periodic tasks by an order generated by external events. It is processed as a priority and requires any processing in progress to be stopped.
88
35006144.07 07/2008
Program Structure
Precautions
CAUTION
Multitasks: golden rules The sharing of Inputs/Outputs between different tasks can lead to unforeseen behavior by the application. We specifically recommend you associate each output or each input to one task only. Failure to follow these instructions can result in injury or equipment damage.
35006144.07 07/2008
89
Program Structure
The following diagram illustrates the task sequence of multitasking processing with a cyclic master task, a fast task with a 20ms period and event processing.
E v ent Fas t Ma s te r Sy s t e m I P 20 ms IPO IPO IPO I IP PO I PO
PO
I P 2 0ms
PO
P 20 ms
2 0ms
90
35006144.07 07/2008
Program Structure
Task Control
The execution of fast and event processing tasks can be controlled by the program using the following system bits: %S30 is used to control whether or not the MAST master task is active %S31 is used to control whether or not the FAST task is active.. %S32 to %S35 are used to control whether or not the auxiliary tasks AUX0 to AUX3 are active. %S38 is used to control whether EVTi event processing is active.
Note: The elementary functions MASKEVT and UNMASKEVT also allow the global masking and unmasking of events by the program.
35006144.07 07/2008
91
Program Structure
Task Control
Cyclic and Periodic Operation In multitasking operation, the highest priority task shall be used in periodic mode in order to allow enough time for lower priority tasks to be executed. For this reason, only the task with the lowest priority should be used in cyclic mode. Thus, choosing cyclic operating mode for the master task excludes using auxiliary tasks. The duration of tasks is continually measured. This measurement represents the duration between the start and the end of execution of the task. This measurement includes the time taken up by tasks of higher priority which may interrupt the execution of the task being measured. The following system words give the current, maximum and minimum cycle times for each task (value in ms)
Measurement of times Current Maximum Minimum MAST %SW30 %SW31 %SW32 FAST %SW33 %SW34 %SW35 AUX0 %SW36 %SW37 %SW38 AUX1 %SW39 %SW40 %SW41 AUX2 %SW42 %SW43 %SW44 AUX3 %SW45 %SW46 %SW47
Note: The maximum and minimum times are taken from the times measured since the last cold restart.
92
35006144.07 07/2008
Program Structure
Task Periods
The task periods are defined in the task properties. They can be modified by the following system words.
System words %SW0 %SW1 %SW2 %SW3 %SW4 %SW5 Task MAST FAST AUX0 AUX1 AUX2 AUX3 Values 0..255ms 1..255ms 10ms..2.55s 10ms..2.55s 10ms..2.55s 10ms..2.55s Default values Cyclic 5ms 100ms 200ms 300ms 400ms Observations 0 = cyclic operation The values of the period are expressed in 10ms.
When the cycle time of the task exceeds the period, the system sets the system bit %S19 of the task to 1 and continues with the following cycle. Note: The values of the periods do not depend on the priority of tasks. It is possible to define the period of a fast task which is larger than the master task.
35006144.07 07/2008
93
Program Structure
Watchdog
The execution of each task is controlled by a configurable watchdog by using the task properties. The following table gives the range of watchdog values for each of the tasks:
Tasks MAST FAST AUX0 AUX1 AUX2 AUX3 Watchdog values (min...max) (ms) 10..1500 10..500 100..5000 100..5000 100..5000 100..5000 Default watchdog value Associated system (ms) word 250 100 2000 2000 2000 2000 %SW11 -
If watchdog overflow should occur, the application is declared in error, which causes the PLC to stop immediately (HALT state). The word %SW11 contains the watchdog value of the master task in ms. This value is not modifiable by the program. The bit %S11 indicates a watchdog overflow. It is set to 1 by the system when the cycle time becomes greater than the watchdog. Note: The reactivation of the task requires the terminal to be connected in order to analyze the cause of the error, correct it, reinitialize the PLC and switch it to RUN. It is not possible to exit HALT by switching to STOP. To do this you must reinitialize the application to ensure consistency of data.
94
35006144.07 07/2008
Program Structure
Task Control
When the application program is being executed, it is possible to activate or inhibit a task by using the following system bits:
System bits %S30 %S31 %S32 %S33 %S34 %S35 Task MAST FAST AUX0 AUX1 AUX2 AUX3
The task is active when the associated system bit is set to 1. These bits are tested by the system at the end of the master task. When a task is inhibited, the inputs continue to be read and the outputs continue to be written. On startup of the application program, for the first execution cycle only the master task is active. At the end of the first cycle the other tasks are automatically activated except if one of the tasks in inhibited (associated system bit set to 0) by the program. Controls on Input Reading and Output Writing Phases The bits of the following system words can be used (only when the PLC is in RUN) to inhibit the input reading and output writing phases.
Inhibition of phases... reading of inputs writing of outputs MAST %SW8.0 %SW9.0 FAST %SW8.1 %SW9.1 AUX0 %SW8.2 %SW9.2 AUX1 %SW8.3 %SW9.3 AUX2 %SW8.4 %SW9.4 AUX3 %SW8.5 %SW9.5
Note: By default, the input reading and output writing phases are active (bits of system words %SW8 and %SW9 set to 0). On Quantum, inputs/outputs which are distributed via DIO bus are not assigned by the words %SW8 and %SW9.
35006144.07 07/2008
95
Program Structure
96
35006144.07 07/2008
Program Structure
Example on Premium
With its 8 successive channel modularity (channels 0 to 7, channels 8 to 15, etc.), the inputs/outputs of the Premium discrete modules can be assigned in groups of 8 channels, independently of the MAST, AUXi or FAST task. Example: it is possible to assign the channels of a 28 input/output module as follows: inputs 0 to 7 assigned to the MAST task, inputs 8 to 15 assigned to the FAST task, outputs 0 to 7 assigned to the MAST task, outputs 8 to 15 assigned to the AUX0 task.
35006144.07 07/2008
97
Program Structure
Priority 2
Priority 1 Priority
Priority 0
Management of Priorities
EVT0 event processing is the highest priority processing. It can itself interrupt other types of event processing. EVTi event processing triggered by input/output modules (priority 1) take priority over TIMERi event processing triggered by timers (priority 2). On Modicon M340, Premium and Atrium PLCs: types of event processing with priority level 1 are stored and processed in order. On Quantum PLC: the priority of priority 1 processing types is determined: by the position of the input/output module in the rack, by the position of the channel in the module. The module with the lowest position number has the highest level of priority. Event processing triggered by timer is given priority level 2. The processing priority is determined by the lowest timer number.
Control
The application program can globally validate or inhibit the various types of event processing by using the system bit %S38. If one or more events occur while they are inhibited, the associated processing is lost. Two elementary functions of the language, MASKEVT() and UNMASKEVT(), used in the application program can also be used to mask or unmask event processing. If one or more events occur while they are masked, they are stored by the system and the associated processing is carried out after unmasking.
98
35006144.07 07/2008
Program Structure
Preset Phase
1..1023 0..1023
10 0
35006144.07 07/2008
99
Program Structure
ITCNTRL Function
Representation in FBD:
ITCNTRL Enable Reset_Timer Hold_Timer Nb_Task_Event ENABLE RESET HOLD EVENT STATUS VALUE Status_Timer Current_Value
Timing diagram.
RESET
ENABLE
HOLD
Preset x TB VALUE
1 2 3
Event
Event
Event
Event
100
35006144.07 07/2008
Program Structure
Normal operation
The following table describes the triggering of TIMER-type event processing operations (see timing diagram above).
Phase 1 2 3 Description When a rising edge is received on the RESET input, the timer is reset to 0. The current value VALUE of the timer increases from 0 towards the preset value at a rate of one unit for each pulse of the time base. An event is generated when the current value has reached the preset value, the timer is reset to 0, and then reactivated. The associated event processing is also triggered, if the event is not masked. It can be deferred if an event processing task with a higher or identical priority is already in progress. When the ENABLE input is at 0, the events are no longer sent out. TIMER type event processing is no longer triggered. When the HOLD input is at 1, the timer is frozen, and the current value stops incrementing, until this input returns to 0.
4 5
The Phase parameter is used to trigger different TIMER-type event processing tasks at constant time intervals. This parameter set a temporal offset value with an absolute time origin, which is the last passage of the PLC from STOP to RUN. Operating condition: The event processing tasks must have the same time base and preset values. The RESET and HOLD inputs must not be set to 1. Example: 2 event processing tasks Timer1 and Timer2 to be executed at 70ms interval. Timer1 can be defined with a phase equal to 0 and the second Timer2 with a phase of 70ms (phase of 7 and time base of 10ms). Any event triggered by the timer associated with the Timer1 processing task shall be followed after an interval of 70ms by an event from the timer associated with the Timer2 processing task
35006144.07 07/2008
101
Program Structure
Timing diagram of the example provided above with the same preset value of 16 (160ms) for Timer1 and Timer2.
STOP/RUN transition ENABLE
Preset VALUE Timer1 160 Event 0 Preset VALUE Timer2 Phase Event 1 Event 0 Event 2 .................... Event n 70 1 2 3 230 Event 1 .................... Event n
The following table describes the operation of the PLC after a transition from STOP into RUN (see timing diagram above):
Phase 1 Description ON a STOP RUN transition of the PLC, timing is triggered so that the preset value is reached at the end of a time period equal to Phase x time base, when the first event is sent out. The current value VALUE of the timer increases from 0 towards the preset value at a rate of one unit for each pulse of the time base. An event is generated when the current value has reached the preset value, the timer is reset to 0, and then reactivated. The associated event processing is also triggered, if the event is not masked. If can be deferred, if there is an event processing task of higher or identical priority already in progress.
2 3
102
35006144.07 07/2008
Program Structure
Premium/Atrium PLCs
The inputs acquired and the outputs updated are: the inputs associated with the channel which caused the event the inputs and outputs used during event processing
Note: These exchanges may relate: to a channel (e.g. counting module) or to a group of channels (discrete module). In this case, if the processing modifies, for example, outputs 2 and 3 of a discrete module, the image of outputs 0 to 7 is then transferred to the module.
Quantum PLCs
The inputs acquired and the outputs updated are selected in the configuration. Only local inputs/outputs can be selected. The inputs (and the associated group of channels) exchanged during the execution of event processing are updated (loss of historical values, and thus edges). You should therefore avoid testing fronts on these inputs in the master (MAST), fast (FAST) or auxiliary (AUXi) tasks.
Programming Rule
35006144.07 07/2008
103
Program Structure
104
35006144.07 07/2008
Program Structure
This figure shows event unmasking in the MAST task. (*Unmasking events*)
UNMASKEVT EN ENO
%S38 S %QW1.0.1.5
%QW1.0.1.6
This figure shows the possible contents of event processing (bit test and action).
(*If crossing threshold event 0 THEN set physical output %Q2.0 to 1*) %IW1.0.3.5
(*If crossing threshold event 1 THEN set physical output %Q2.0 to 0*)
%Q2.0 S %Q2.0 R
%IW1.0.3.6
35006144.07 07/2008
105
Program Structure
106
35006144.07 07/2008
4
At a Glance
Subject of this Chapter What's in this Chapter? This chapter describes the application memory structure of Premium, Atrium and Quantum PLCs. This chapter contains the following sections:
Section 4.1 4.2 Topic Memory Structure of the Premium, Atrium and Modicon M340 PLCs Memory Structure of Quantum PLCs Page 108 116
35006144.07 07/2008
107
Memory Structure
4.1
Description
Subject of this Section What's in this Section? This section describes memory structure and detailed description of the memory zones of the Premium, Atrium and Modicon M340 PLCs. This section contains the following topics:
Topic Memory Structure of Modicon M340 PLCs Memory Structure of Premium and Atrium PLCs Detailed Description of the Memory Zones Page 109 113 115
108
35006144.07 07/2008
Memory Structure
35006144.07 07/2008
109
Memory Structure
Program Backup
If the memory card is present, working properly and not write-protected, the program is saved on the memory card: Automatically, after: a download online modification a rising edge of the system bit %S66 in the project program Manually: with the command PLC Project backup Backup Save in an animation table by setting the system bit %S66 WARNING UNTIMELY EXTRACTION OF THE MEMORY CARD The interruption of an application saving procedure by an untimely or rough extraction of the memory card, may lead to the loss of saved application.The bit %S65 (see Description of System Bits %S60 to %S79, p. 156) allows managing a correct extraction (See help page %65 bit in system bit chapter) Failure to follow these instructions can result in death, serious injury, or equipment damage. The memory card uses Flash technology, therefore no battery is necessary.
Program Restore
If the memory card is present and working properly, the program is copied from the PLC memory card to the internal memory: Automatically after: a power cycle Manually, with the Unity Pro command PLC Project backup Backup Restore
Note: When you insert the memory card in run or stop mode, you have to do a power cycle to restore the project on the PLC.
Saved Data
Located, unlocated data, diagnostic buffer are automatically saved in the internal Flash memory at power-off. They are restored at warm start.
110
35006144.07 07/2008
Memory Structure
Save_Param
The SAVE_PARAM function does both current and initial parameter adjustment in internal RAM (as in other PLCs). In this case, the internal RAM and the memory card content are different (%S96 = 0 and the CARDERR LED is on). On cold start (after application restore), the current parameter are replaced by the last adjusted initial values only if a save to memory card function (Backup Save or %S66 rising edge) was done. On a %S94 rising edge, the current values replace the initial values in internal memory. The internal RAM and the memory card content are different (%S96 = 0 and the CARDERR LED is on). On cold start, the current values are replaced by the most recent initial values only if a save to memory card function (Backup Save or %S66 rising edge) was done. There are two ways to delete all the files on the memory card: Formatting the memory card (delete all files of the file system partition) Deleting the content of directory \DataStorage\ ( delete only files added by user) Both actions are performed using %SW93 (see Description of System Words %SW70 to %SW99, p. 176). The system word %SW93 can only be used after download of a default application in the PLC. CAUTION MEMORY CARD RUINED Do not format the memory card with a non-Schneider tool. The memory card needs a structure to contain program and data. Formatting with another tool destroys this structure. Failure to follow these instructions can result in injury or equipment damage.
Delete Files
%MW Backup
The values of the %MWi can be saved in the internal Flash memory using %SW96 (see Description of System Words %SW70 to %SW99, p. 176). These values will be restored at cold start, including application download, if the option Initialize of %MW on cold start is unchecked in the processor Configuration screen (See Unity Pro 4.0, Operating Modes, Configuration of Modicon M340 processors). For %MW words, the values can be saved and restored on cold restart or download if the option Reset of %MW on cold restart is not checked in the processor Configuration screen. With the %SW96 word, management of memory action %MW internal words (save, delete) and information on the actions states %MW internal words is possible.
35006144.07 07/2008
111
Memory Structure
Two types of memory card are available: application: these cards contain the application program and Web pages application + file storage: these cards contain the application program, data files from Memory Card File Management EFBs, and Web pages
112
35006144.07 07/2008
Memory Structure
Program
The data is supported by the internal RAM of the processor module. The program is supported by the extension memory card. The following diagram describes the memory structure.
Internal RAM Located data Unlocated data External memory card
Program
Memory Backup
The internal RAM is backed up by a Ni-Cad battery supported by the processor module. The RAM memory cards are backed up by a Ni-Cad battery.
35006144.07 07/2008
113
Memory Structure
Three types of memory card are offered: application: these cards contain the application program. The cards offered use either RAM or Flash EPROM technology application + file storage: in addition to the program, these cards also contain a zone which can be used to backup/restore data using the program. The cards on offer use either RAM or Flash EPROM technology file storage: these cards can be used to backup/restore data using the program. These cards use SRAM technology. The following diagram describes the memory structure with an application and file storage card.
Internal RAM Located data Unlocated data External memory card
Program
Files
Note: On processors with 2 memory card slots, the lower slot is reserved for the file storage function.
114
35006144.07 07/2008
Memory Structure
35006144.07 07/2008
115
Memory Structure
4.2
Description
Subject of this Section What's in this Section?
This section describes memory structure and detailed description of the memory zones of the Quantum PLCs. This section contains the following topics:
Topic Memory Structure of Quantum PLCs Detailed Description of the Memory Zones Page 117 120
116
35006144.07 07/2008
Memory Structure
Program
Operating system (1) Application backup (1) (1) Only for 140 CPU 31/43/53 processors.
35006144.07 07/2008
117
Memory Structure
Quantum 140 CPU 6 processors can be fitted with a memory extension card. The data is supported by the internal RAM of the processor module. The program is supported by the extension memory card. The following diagram describes the memory structure.
Internal RAM Located data Unlocated data External memory card
Program
Memory Backup
The internal RAM is backed up by a Ni-Cad battery supported by the processor module. The RAM memory cards are backed up by a Ni-Cad battery.
The following table describes the different results according to the PLC state, according to the PLC mem switch (See Quantum using Unity Pro, Hardware, Reference Key Switches), and also indicates if the box "Auto RUN" is checked or not checked.
Auto RUN in Appl2 Off On Not Applicable Off On Do not Care Results Cold Start, application is loaded from Backup memory to RAM of the PLC. The PLC remains in STOP. Cold Start, application is loaded from Backup memory to RAM of the PLC. The PLC remains in RUN. No application loaded. PLC power up in NONCONF state. Cold Start, application is loaded from Backup memory to RAM of the PLC. The PLC remains in STOP. Cold Start, application is loaded from Backup memory to RAM of the PLC. The PLC remains in RUN. Warm Start, no application loaded. PLC powers up in previous state.
PLC Mem Switch1 Start or Off Start or Off Mem Prt or Stop Start or Off Start or Off Mem Prt or Stop
Start and Stop are valid for the 434 and 534 models only and Off is valid for the 311 only. Mem Prt is valid on all models. The Automatic RUN in the application refers to the application that is loaded.
118
35006144.07 07/2008
Memory Structure
Three types of memory card are offered: application: these cards contain the application program. The cards on offer use either RAM or Flash EPROM technology application + file storage: in addition to the program, these cards also contain a zone which can be used to backup/restore data using the program. The cards on offer use either RAM or Flash EPROM technology file storage: these cards can be used to backup/restore data using the program. These cards use SRAM technology. The following diagram describes the memory structure with an application and file storage card.
Internal RAM Located data Unlocated data External memory card
Program
Files
Note: On processors with 2 memory card slots, the lower slot is reserved for the file storage function.
35006144.07 07/2008
119
Memory Structure
User Program
This zone contains the executable codes of the application. program code code associated with EFs, EFBs and the management of I/O modules code associated with DFBs initial variable values This zone also contains the necessary information for downloading the application: graphic codes, symbols etc.
Operating System
On 140 CPU 31/41/51 processors, this contains the operating system for processing the application. This operating system is transferred from an internal EPROM memory to internal RAM on power up. A Flash EPROM memory zone of 1435K8, available on processors140 CPU 31/ 41/51, can be used to backup the program and the initial values of variables. The application stored in this zone is automatically transferred to internal RAM when the PLC processor is powered up (if the PLC MEM switch is set to off on the processor front panel).
Application Backup
Other Information
Other information relating to the configuration and structure of the application are also stored in the memory (in a data or program zone depending on the type of information). Configuration: other data relating to the configuration (hardware configuration, software configuration). System: data used by the operating system (task stack, etc.). Diagnostics: information relating to process or system diagnostics, diagnostics buffer.
120
35006144.07 07/2008
Operating Modes
5
At a Glance
Subject of this Chapter The chapter describes the operating modes of the PLC in the event of power outage and restoral, the impacts on the application program and the updating of inputs/ outputs. This chapter contains the following sections:
Section 5.1 5.2 5.3 Topic Modicon M340 PLCs Operating Modes Premium, Quantum PLCs Operating Modes PLC HALT Mode Page 122 133 144
35006144.07 07/2008
121
Operating Modes
5.1
Description
Subject of this Section What's in this Section?
This section describes the operating modes of the Modicon M340 PLCs.
122
35006144.07 07/2008
Operating Modes
Illustration
Power failure
Save Context
Power Resumption
Yes
Check context
Invalid context
35006144.07 07/2008
123
Operating Modes
Operation
124
35006144.07 07/2008
Operating Modes
Restore application from memory card, when the Cold start forced in STOP or RUN mode as defined application is different from the one in internal RAM in the configuration Restore application from memory card, with Unity Pro commands PLC Project backup .... RESET button pressed on supply RESET button pressed on supply less than 500ms after a power down RESET button pressed on supply after a processor error, except in the case of a watchdog error Initialization from Unity Pro Forcing the system bit %S0 Restoral after power supply outage with loss of context Cold start forced in STOP or RUN mode as defined in the configuration Cold start forced in STOP or RUN mode as defined in the configuration Cold start forced in STOP or RUN mode as defined in the configuration Cold start forced in STOP. The start in RUN mode as defined in the configuration is not taken into account Start in STOP or in RUN (retaining the operating mode in progress at downtime), initialization only of application Cold start forced in STOP or RUN mode as defined in the configuration
CAUTION
LOSS OF DATA ON APPLICATION TRANSFER Loading or transferring an application to the PLC involves initialization of unlocated variables. It is necessary to assign a topological address to the data if the process requires keeping the current values of the data when transferring the application. Failure to follow these instructions can result in injury or equipment damage.
CAUTION
RISK OF LOSS OF APPLICATION If there is no memory Card in the PLC during a cold restart the application is lost. Failure to follow these instructions can result in injury or equipment damage.
35006144.07 07/2008
125
Operating Modes
Illustration
Power return
Configuration self-test Power failure > micro-cut No Yes Initialization of the application
BOT
Updating of outputs
126
35006144.07 07/2008
Operating Modes
Operation
The table below describes the program execution restart phases on cold restart.
Phase 1 Description The startup is performed in RUN or in STOP depending on the status of the Automatic start in RUN parameter defined in the configuration or, if this is in use, depending on the state of the RUN/STOP input. Program execution is resumed at the start of the cycle. The system carries out the following: Deactivating tasks, other than the master task, until the end of the first master task cycle. Initializing data (bits, I/O image, words etc.) with the initial values defined in the data editor (value set to 0, if no other initial value has been defined). For %MW words, the values can be retrieved on cold restart if the two conditions are valid : the Initialize of %MW on cold restart option (See Unity Pro 4.0, Operating Modes, Configuration of Modicon M340 processors) is unchecked in the processors configuration screen, the internal flash memory has a valid backup (see %SW96 (see Description of System Words %SW70 to %SW99, p. 176)). Note : If the number of %MW words exceeds the backup size (see the memory structure of M340 PLCs (see Memory Structure of Modicon M340 PLCs, p. 109)) during the save operation the remaining words are set to 0. Initializing elementary function blocks on the basis of initial data. Initializing data declared in the DFBs: either to 0 or to the initial value declared in the DFB type. Initializing system bits and words. Positioning charts to initial steps. Cancelling any forcing. Initializing message and event queues. Sending configuration parameters to all discrete input/output modules and application-specific modules. For this first restart cycle the system does the following: Relaunches the master task with the %S0 (cold restart) and %S13 (first cycle in RUN) bits set to 1, and the %SW10 word (detection of a cold restart during the first task cycle) is set to 0. Resets the %S0 and %S13 bits to 0, and sets each bit of the word %SW10 to 1 at the end of this first cycle of the master task. Activates the fast task and event processing at the end of the first cycle of the master task.
35006144.07 07/2008
127
Operating Modes
It is advisable to test the bit %SW10.0 to detect a cold start and start processing specific to this cold start. Note: It is possible to test the bit %S0, if the parameter Automatic start in RUN has been selected. If this is not the case, the PLC starts in STOP, the bit %S0 then switches to 1 on the first cycle after restart but is not visible to the program because it is not executed.
Output Changes
As soon as a power outage is detected, the outputs are set in the fallback position: either they are assigned the fallback value, or the current value is maintained, depending on the choice made in the configuration. After power restoral, the outputs remain at zero until they are updated by the task.
128
35006144.07 07/2008
Operating Modes
CAUTION
RISK OF LOSS OF APPLICATION If there is no Memory Card in the PLC during a warm restart the application is lost. Failure to follow these instructions can result in injury or equipment damage.
Illustration
Power restoral
Configuration self-test
Outage detected
Yes
No
Setting of bit %S1 to 0
Updating of outputs
35006144.07 07/2008
129
Operating Modes
Operation
The table below describes the program execution restart phases on warm restart.
Phase 1 Description Program execution doesnt resume from the element where the power outage occurred. The remaining program is discarded during the warm start. Each task will restart from the beginning. At the end of the restart cycle, the system carries out the following: restore the applications variable value, set bit %S1 to 1, the initialization of message and event queues, the sending of configuration parameters to all discrete input/output and application-specific modules, the deactivation of the fast task and event processing (until the end of the master task cycle). The system performs a restart cycle during which it: relaunches the master task from beginning of cycle, resets bit %S1 to 0 at the end of this first master task cycle, reactivates the fast task, event processing at the end of this first cycle of the master task.
In the event of a warm restart, if you want the application to be processed in a particular way, you must write the corresponding program to test that %S1 is set to 1 at the start of the master task program.
130
35006144.07 07/2008
Operating Modes
The Warm start on M340 PLCs is not considered as a real warm start by the CPU. SFC interpreter does not depend on tasks. SFC publishes a memory area "ws_data" to the OS that contains SFC-sectionspecific data to be saved at a power fail. At the beginning of chart processing the currently active steps are saved to "ws_data" and processing is marked to be in "critical section. At the end of chart processing the "critical section" is unmarked. If a power failure hits into "critical section" this could be detected if this state is active at the beginning (as the scan is aborted and MAST task is restarted from the beginning). In this case the workspace might be inconsistent and is restored from the saved data. Additional information from SFCSTEP_STATE in located data area is used to reconstruct the state machine. When a power failure occurs : during first scan %S1 =1 Mast is executed but Fast and Event tasks are not On power restoral : Clears chart, deregisters diagnostics, keeps set actions sets steps from saved area sets step times from SFCSTEP_STATE restores elapsed time for timed actions
Note: SFC interpreter is independent, if the transition is valid, the SFC chart evolves while %S1 is true.
Output Changes
As soon as a power outage is detected, the outputs are set in the fallback position: either they are assigned the fallback value, or the current value is maintained, depending on the choice made in the configuration. After power restoral, the outputs remain in the fallback position until they are updated by the task.
35006144.07 07/2008
131
Operating Modes
DANGER
Use of the option "Automatic start in RUN" The following actions will trigger automatic start in RUN: Restoring the application from memory card, Unintentional or careless use of the reset button. To avoid an unwanted restart when in RUN mode use: The RUN/STOP input on Modicon M340 Failure to follow these instructions will result in death or serious injury.
132
35006144.07 07/2008
Operating Modes
5.2
Description
Subject of this Section What's in this Section?
This section describes the operating modes of the Premium and Quantum PLCs.
35006144.07 07/2008
133
Operating Modes
Illustration
The illustration shows the different types of power restoral detected by the system.
RUN Application
Save Context OK
No
No
Yes
No
Cold start
134
35006144.07 07/2008
Operating Modes
Operation
All the channels on this rack are seen as in error by the processor, but the other racks are not affected. The values of the inputs in error are no longer updated in the application memory and are reset to zero in a discrete input module, unless they have been forced, in which case they are maintained at the forcing value. If the duration of the outage is less than the filtering time, it has no effect on the program which continues to run normally.
35006144.07 07/2008
135
Operating Modes
RESET button pressed on the processor Cold start forced in STOP after a processor or system error (Premium). Movement of handle or insertion/removal of a PCMCIA memory card Initialization from Unity Pro Forcing the system bit %S0 Cold start forced in STOP or RUN mode as defined in the configuration Start in STOP or in RUN (retaining the operating mode in progress at downtime), without initialization of discrete input/output and application-specific modules
Restoral after power supply outage with loss Cold start forced in STOP or RUN mode as of context defined in the configuration
CAUTION
LOSS OF DATA ON APPLICATION TRANSFER Loading or transferring an application to the PLC involves initialization of unlocated variables. It is necessary to assign a topological address to the data if the process requires keeping the current values of the data when transferring the application. Failure to follow these instructions can result in injury or equipment damage.
136
35006144.07 07/2008
Operating Modes
Illustration
Power return
Configuration self-test Power failure > micro-cut No Yes Initialization of the application
BOT
Updating of outputs
35006144.07 07/2008
137
Operating Modes
Operation
The table below describes the program execution restart phases on cold restart.
Phase 1 Description The startup is performed in RUN or in STOP depending on the status of the Automatic start in RUN parameter defined in the configuration or, if this is in use, depending on the state of the RUN/STOP input. Program execution is resumed at the start of the cycle. The system carries out the following: the initialization of data (bits, I/O image, words etc.) with the initial values defined in the data editor (value set to 0, if no other initial value has been defined). For %MW words, the values can be retained on cold restart if the Reset of %MW on cold restart option is unchecked in the Configuration screen of the processor the initialization of elementary function blocks on the basis of initial data the initialization of data declared in the DFBs: either to 0 or to the initial value declared in the DFB type the initialization of system bits and words the deactivation of tasks, other than the master task, until the end of the first master task cycle the positioning of charts to initial steps the cancellation of any forcing the initialization of message and event queues the sending of configuration parameters to all discrete input/output modules and application-specific modules For this first restart cycle the system does the following: relaunches the master task with the %S0 (cold restart) and %S13 (first cycle in RUN) bits set to 1, and the %SW10 word (detection of a cold restart during the first task cycle) is set to 0 resets the %S0 and %S13 bits to 0, and sets each bit of the word %SW10 to 1 at the end of this first cycle of the master task activates the fast task and event processing at the end of the first cycle of the master task
It is advisable to test the bit %SW10.0 to detect a cold start and start processing specific to this cold start. Note: It is possible to test the bit %S0, if the parameter Automatic start in RUN has been selected. If this is not the case, the PLC starts in STOP, the bit %S0 then switches to 1 on the first cycle after restart but is not visible to the program because it is not executed.
138
35006144.07 07/2008
Operating Modes
As soon as a power outage is detected, the outputs are set in the fallback position: either they are assigned the fallback value, or the current value is maintained depending on the choice made in the configuration. After power restoral, the outputs remain at zero until they are updated by the task.
As soon as a power outage is detected, the local outputs are set to zero the outputs of the remote or distributed extension racks are set in the fallback position After power restoral, the outputs remain at zero until they are updated by the task.
CAUTION
The behavior of forced outputs was changed between Modsoft/NxT/Concept and Unity Pro. With Modsoft/NxT/Concept, you cannot force outputs if the Quantum processor memory protection switch is set to "On". With Unity Pro, you can force outputs if the Quantum processor memory protection switch is set to "On". With Modsoft/NxT/Concept, forced outputs retain their status after a cold start. With Unity Pro, forced outputs lose their status after a cold start. Failure to follow these instructions can result in injury or equipment damage.
These processors have a Flash EPROM memory of 1,435 KB which can be used to save the program and the initial values of variables. On power restoral, you can choose the desired operating mode using the PLC MEM switch on the processor front panel. For detailed information on how this switch works, you can consult the Quantum manual (See Quantum using Unity Pro, Hardware, Reference Key Switches). off position: The application contained in this zone is automatically transferred to internal RAM when the PLC processor is powered up: cold restart of the application. on position: The application contained in this zone is not transferred to internal RAM: warm restart of the application.
35006144.07 07/2008
139
Operating Modes
Illustration
Power restoral
Configuration self-test
Outage detected
Updating of outputs
140
35006144.07 07/2008
Operating Modes
Operation
The table below describes the program execution restart phases on warm restart.
Phase 1 2 Description Program execution resumes starting from the element where the power outage occurred, without updating the outputs. At the end of the restart cycle, the system carries out the following: the initialization of message and event queues the sending of configuration parameters to all discrete input/output and application-specific modules the deactivation of the fast task and event processing (until the end of the master task cycle) The system performs a restart cycle during which it: re-acknowledges all the input modules relaunches the master task with the bits %S1 (warm restart) set to 1 resets bit %S1 to 0 at the end of this first master task cycle reactivates the fast task, the auxiliary tasks and event processing at the end of this first cycle of the master task
In the event of warm restart, if you want the application to be processed in a particular way, you must write the corresponding program conditional on the test that %S1 is set to 1 at the start of the master task program. For Quantum PLCs, the switch on the front panel of the processor can be used to configure operating modes. For further details, see Quantum documentation (See Quantum using Unity Pro, Hardware, Reference Key Switches).
As soon as a power outage is detected, the outputs are set in the fallback position: either they are assigned the fallback value, or the current value is maintained depending on the choice made in the configuration. After power restoral, the outputs remain in the fallback position until they are updated by the task.
As soon as a power outage is detected, the local outputs are set to zero the outputs of the remote or distributed extension racks are set in the fallback position After power restoral, the outputs remain in the fallback position until they are updated by the task.
35006144.07 07/2008
141
Operating Modes
If power outage occurs on rack where CPU is located Fallback state as soon as CPU loss is detected Security state during I/O configuration State calculated by CPU after the first run of the task driving this output After power is restored, the outputs remain in the fallback position until they are updated by the task
142
35006144.07 07/2008
Operating Modes
DANGER
Use of "Automatic start in RUN" option The following actions will trigger "automatic start in RUN": Inserting the PCMCIA card when the PLC is powered up (Premium, Quantum), Replacing the processor while powered up (Premium, Quantum), Unintentional or careless use of the reset button, If the battery is found to be defective in the event of a power outage (Premium, Quantum). To avoid an unwanted restart when in RUN mode: We stongly recommend to use the RUN/STOP input on Premium PLCs or the switch on the front of the panel of the processor for Quantum PLCs We strongly recommend not to use memorized inputs as RUN/STOP input of the PLC. Failure to follow these instructions will result in death or serious injury.
35006144.07 07/2008
143
Operating Modes
5.3
144
35006144.07 07/2008
System objects
6
At a Glance
Subject of this Chapter This chapter describes the system bits and words of Unity Pro language. Note: The symbols, associated with each bit object or system word, mentioned in the descriptive tables of these objects, are not implemented as standard in the software, but can be entered using the data editor. They are proposed in order to ensure the homogeneity of their names in the different applications. What's in this Chapter? This chapter contains the following sections:
Section 6.1 6.2 6.3 6.4 6.5 Topic System Bits System Words Atrium/Premium-specific System Words Quantum-specific System Words Modicon M340-Specific System Words Page 146 163 185 195 205
35006144.07 07/2008
145
System objects
6.1
Description
Subject of this Section What's in this Section?
System Bits
146
35006144.07 07/2008
System objects
35006144.07 07/2008
147
System objects
%S1 WARMSTART
Warm restart
Normally at 0, this bit is set to 1 by: power is restored 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 the outputs are updated. This bit is not available on Quantum safety PLCs. %S1 is not always set in the first scan of the PLC. If a signal set for every start of the PLC is needed, %S21 should be used instead.
YES
YES
%S4 TB10MS
Timebase 10 ms
An internal timer regulates the change in status of this bit. It is asynchronous in relation to the PLC cycle. Graph:
YES
YES
5ms 5ms
This bit is not available on Quantum safety PLCs. %S5 TB100MS Timebase 100 ms Idem %S4 YES YES YES (except for safety PLCs)
148
35006144.07 07/2008
System objects
Initial state -
Quantum YES (except for safety PLCs) YES (except for safety PLCs)
%S7 TB1MIN
Idem %S4
YES
YES
35006144.07 07/2008
149
System objects
%S10 IOERR
Input/output fault
Normally at 1, this is set to 0 when an I/O fault on an in-rack module or device on Fipio is detected (e.g. non-compliant configuration, exchange fault, hardware fault, etc.). The %S10 bit is reset to 1 by the system as soon as the fault disappears.
YES
YES
YES
CAUTION
%S10 for Quantum PLCs On Quantum, communication errors from modules (NOM, NOE, NWM, CRA, CRP) and MMS modules are not reported on bits %S10 and %S16. It is entirely your responsibility to ensure that these system bits are used correctly Failure to follow these instructions can result in injury or equipment damage.
150
35006144.07 07/2008
System objects
Description Normally at 0, this is set to 1 by the system as soon as the task execution time becomes greater than the maximum execution time (i.e. the watchdog) declared in the task properties. This bit is set to 1 by the system when the PLC is in RUN. It is set to 0 by the system as soon as the PLC is no longer in RUN (STOP, INIT, etc.). Switching the PLC from STOP mode to RUN mode (including after a cold start with automatic start in run) is indicated by setting system bit %S13 to 1. This bit is reset to 0 at the end of the first cycle of the MAST task in RUN mode.
Initial state 0
Quantum YES
%S12 PLCRUNNING
PLC in RUN
YES
YES
YES
%S13 1RSTSCANRUN
YES
YES
YES
35006144.07 07/2008
151
System objects
%S16 IOERRTSK
YES
YES
YES
CAUTION
%S16 for Quantum PLCs On Quantum, communication errors from modules (NOM, NOE, NWM, CRA, CRP) and MMS modules are not reported on bits %S10 and %S16. It is entirely your responsibility to ensure that these system bits are used correctly Failure to follow these instructions can result in injury or equipment damage.
Description Normally at 0. During a rotate shift operation, this bit takes the state of the outgoing bit.
Initial state 0
Quantum YES
152
35006144.07 07/2008
System objects
Description Normally set to 0, this bit is set to 1 in the event of a capacity overflow if there is: a result greater than + 32 767 or less than 32 768, in single length, result greater than + 65 535, in unsigned integer, a result greater than + 2 147 483 647 or less than - 2 147 483 648, in double length, result greater than +4 294 967 296, in double length or unsigned integer, real values outside limits, division by 0, the root of a negative number, forcing to a non-existent step on a drum, stacking up of an already full register, emptying of an already empty register. There is only one case for which bit %S18 is not raised by the Modicon M340 PLCs when real values are outside limits. It is only if denormalized operands or some operations which generate denormalized results are used (gradual underflow). It must be tested by the user program after each operation where there is a risk of overflow, then reset to 0 by the user if there is indeed an overflow. When the %S18 bit switches to 1, the application stops in error state if the %S78 bit has been to set to 1.
Initial state 0
Quantum YES
%S19 OVERRUN
Normally set to 0, this bit is set to 1 by the system in the event of a time period overrun (i.e. 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. Normally set to 0, this bit is set to 1 when the address of the indexed object becomes less than 0 or exceeds the number of objects declared in the configuration. In this case, it is as if the index were equal to 0. It must be tested by the user program after each operation where there is a risk of overflow, then reset to 0 if there is indeed an overflow. When the %S20 bit switches to 1, the application stops in error state if the %S78 bit has been to set to 1. This bit is not available on Quantum safety PLCs. Tested in a task (Mast, Fast, Aux0, Aux1, Aux2 Aux3), the bit %S21 indicates the first cycle of this task, including after a cold start with automatic start in run and a warm start. %S21 is set to 1 at the start of the cycle and reset to zero at the end of the cycle. Note: The bit %S21 does not have the same meaning in PL7 as in Unity Pro.
YES
YES
YES
%S20 INDEXOVF
Index overflow
YES
YES
YES
YES
YES
35006144.07 07/2008
153
System objects
%S31 FASTACT
YES
YES
%S32 AUX0ACT
NO
YES
%S33 AUX1ACT
NO
YES
%S34 AUX2ACT
NO
YES
%S35 AUX3ACT
NO
YES
%S38 ACTIVEVT
YES
YES
%S39 EVTOVR
YES
YES
154
35006144.07 07/2008
System objects
Description The %S40 bit is assigned to rack 0. Normally set to 1, this bit is set to 0 when a fault occurs on the rack's I/Os. In this case: the %S10 bit is set to 0, the I/O processor LED is on, the %Ir.m.c.Err module bit is set to 1. This bit is reset to 1 when the fault disappears.
Initial state 1
Quantum NO
%S41 RACK1ERR %S42 RACK2ERR %S43 RACK3ERR %S44 RACK4ERR %S45 RACK5ERR %S46 RACK6ERR %S47 RACK7ERR %S50 RTCWRITE
Rack 1 input/ output fault Rack 2 input/ output fault Rack 3 input/ output fault Rack 4 input/ output fault Rack 5 input/ output fault Rack 6 input/ output fault Rack 7 input/ output fault Updating of time and date via words %SW50 to %SW53
Idem %S40 for rack 1. Idem %S40 for rack 2. Idem %S40 for rack 3. Idem %S40 for rack 4. Idem %S40 for rack 5. Idem %S40 for rack 6. Idem %S40 for rack 7. Normally set to 0, this bit is set to 1 or 0 by the program or the terminal. set to 0: update of system words %SW50 to %SW53 by the date and time supplied by the PLC real-time clock. set to 1: system words %SW50 to %SW53 are no longer updated, therefore making it possible to modify them. The switch from 1 to 0 updates the real-time clock with the values entered in words %SW50 to %SW53. This system-managed bit set to 1 indicates that the real-time clock is missing or that its system words (%SW50 to %SW53) are meaningless. In this case the clock must be reset to the correct time. Normally set to 0, this bit can be set to 1 or 0 by the program or the terminal: set to 0: the system does not manage the system word %SW59, set to 1: the system manages edges on word %SW59 to adjust the date and current time (by increment).
1 1 1 1 1 1 1 0
NO NO NO NO NO NO NO YES
%S51 RTCERR
YES
YES
YES
%S59 RTCTUNING
YES
YES
YES
35006144.07 07/2008
155
System objects
%S65 CARDIS
Card disable
YES
NO
NO
Application backup
YES
NO
NO
156
35006144.07 07/2008
System objects
Description This bit is used to monitor the status of the main battery when the memory card is in the upper PCMCIA slot (all the Atriums, Premiums, and on the Quantums (140 CPU 671 60/60S, 140 CPU 651 60/60S, 140 CPU 652 60, and 140 CPU 651 50)): set to 1: main voltage battery is low (application is preserved but you must replace the battery following the so-called predictive maintenance (See Premium and Atrium using Unity Pro, Processors, Racks and power supply modules, Implementation manual, Changing the Batteries of a PCMCIA Memory Card OLD)) procedure, set to 0: main battery voltage is sufficient (application always preserved). Bit %S67 is managed: on the PV06 small and medium capacity RAM memory cards (product version written on the card label), i.e. offering memory size under Unity #768K: TSX MRP P 128K, TSX MRP P 224K TSX MCP C 224K, MCP C 512K, TSX MRP P 384K, TSX MRP C 448K, TSX MRP C 768K, under Unity whose version is 2.02. Note: With "blue PCMCIAs" (PV>=04), bit %S67 is not set to 1 when main battery is absent, though with "green PCMCIAs" (PV<04, bit %S67 is set to 1 in the same condition.
Initial state -
Modicon M340 NO
Quantum YES
%S68 PLCBAT
This bit is used to check the operating state of the backup battery for saving data and the program in RAM. set to 0: battery present and operational set to 1: battery missing or nonoperational
NO
YES
YES
35006144.07 07/2008
157
System objects
Description This bit is used to monitor the status of the main battery when the memory card is in the lower PCMCIA slot (Premium (TSX P57 4 and TSX P57 5) and Quantum (140 CPU 671 60/60S*, 140 CPU 651 60/ 60S*, 140 CPU 652 60, and 140 CPU 651 50): set to 1: main voltage battery is low (application is preserved but you must replace the battery following the so-called predictive maintenance (See Premium and Atrium using Unity Pro, Processors, Racks and power supply modules, Implementation manual, Changing the Batteries of a PCMCIA Memory Card OLD)) procedure, set to 0: main battery voltage is sufficient (application always preserved). Bit %S75 is managed: on the PV06 small and medium capacity RAM memory cards (product version written on the card label), i.e. offering memory size under Unity #768K: TSX MRP P 128K, TSX MRP P 224K TSX MCP C 224K, MCP C 512K, TSX MRP P 384K, TSX MRP C 448K, TSX MRP C 768K, under Unity whose version is 2.02. * Data stored on a memory card in slot B is not processed in safety projects.
Initial state -
Modicon M340 NO
Quantum YES
%S76 DIAGBUFFCONF
This bit is set to 1 by the system when the diagnostics option has been configured a diagnostics buffer for storage of errors found by diagnostics DFBs is then reserved. This bit is read-only. This bit is set to 1 by the system when the buffer that receives errors from the diagnostics function blocks is full. This bit is read-only. Normally at 0, this bit can be set to 1 by the user, to program a PLC stop on application fault: %S15, %S18, %20. On Quantum safety PLCs, the Halt state is replaced by the Error state when you are in Safe mode. Note also that %S15 and %20 are not available.
YES
YES
YES
%S77 DIAGBUFFFFULL
YES
YES
YES
%S78 HALTIFERROR
YES
YES
YES
158
35006144.07 07/2008
System objects
Description This bit change the behavior of the Quantum Modbus server regarding forced bits: at 0 (default value), standard management: bit value is changed even if the bit is forced. if set to 1 by the user: write bits request on forced bits do not change their value. There is no error in the response of the request. As other accesses, the history bit is always updated, whatever the forcing state.
Initial state 0
Modicon M340 NO
Premium Atrium NO
Quantum YES
35006144.07 07/2008
159
System objects
NO
YES
NO
%S91 LCKASYNREQ
NO
YES
NO
%S92 EXCHGTIME
YES
YES
NO
160
35006144.07 07/2008
System objects
Description Normally at 0, this bit can be set to 1 by the user to replace the initial values of the declared variables with a Save attribute (e.g.: DFB variables) with the current values. For Modicon M340, on a %S94 rising edge, the internal RAM and the memory card content are different (%S96 = 0 and the CARDERR LED is on). On cold start, the current values are replaced by the most recent initial values only if a save to memory card function (Backup Save or %S66 rising edge) was done. The system resets the bit %S94 to 0 when the replacement has been made. Note: this bit must be used with care: do not set this bit permanently to 1 and use the master task only. This bit is not available on Quantum safety PLCs. When used with the TSX MFP or TSX MCP flash PCMCIA memory the saving adjustment values is not available. This bit is set to 0 or 1 by the system. Set to 0 when the card is missing or unusable (bad format, unrecognized type, etc.), or the card content is inconsistent with Internal Application RAM. Set to 1 when the card is correct and the application is consistent with CPU Internal Application RAM.
Initial state 0
%S96 BACKUPPROGOK
Backup program OK
YES
NO
NO
CAUTION
UPLOAD FAILURE The bit %S94 must not be set to 1 during an upload. If the bit %S94 is set to 1 upload may fail. Failure to follow these instructions can result in injury or equipment damage.
CAUTION
LOSS OF DATA The bit %S94 must not be used with the TSX MFP or the TSX MCP flash PCMCIA memory. The function of this system bit is not available with this type of memory. Failure to follow these instructions can result in injury or equipment damage.
35006144.07 07/2008
161
System objects
%S118 REMIOERR
YES
YES
YES
%S119 LOCIOERR
YES
YES
YES
%S120 DIOERRPLC
NO
NO
YES (except for safety PLCs) YES (except for safety PLCs) YES (except for safety PLCs)
%S121 DIOERRNOM1
NO
NO
%S122 DIOERRNOM2
NO
NO
162
35006144.07 07/2008
System objects
6.2
Description
Subject of this Section What's in this Section?
System Words
This chapter describes the Modicon M340, Atrium, Premium and Quantum system words. This section contains the following topics:
Topic Description of System Words %SW0 to %SW11 Description of System Words %SW12 to %SW29 Description of System Words %SW30 to %SW47 Description of System Words %SW48 to %SW59 Description of System Words %SW70 to %SW99 Description of System Words %SW108 to %SW116 Description of System Words %SW124 to %SW127 Page 164 168 172 174 176 183 184
35006144.07 07/2008
163
System objects
164
35006144.07 07/2008
System objects
Detailed Description
Word Symbol %SW0 MASTPERIOD
%SW1 FASTPERIOD
YES
YES
%SW2 AUX0PERIOD %SW3 AUX1PERIOD %SW4 AUX2PERIOD %SW5 AUX3PERIOD %SW6 %SW7
NO
YES (1)
35006144.07 07/2008
165
System objects
Description Normally set to 0, this bit can be set to 1 or 0 by the program or the terminal. It inhibits the input acquisition phase of each task: %SW8.0 = 1 inhibits the acquisition of inputs relating to the MAST task. %SW8.1 = 1 inhibits the acquisition of inputs relating to the FAST task. %SW8.2 to 5 = 1 inhibits the acquisition of inputs relating to the AUX 0...3 tasks. (1) Note: On Modicon M340, inputs/outputs distributed via CANopen bus are not affected by the word %SW8. (2) Note: On Quantum, inputs/outputs distributed via DIO bus are not affected by the word %SW8. This word is not available on Quantum safety PLCs.
Initial state 0
%SW9 TSKINHIBOUT
Normally set to 0, this bit can be set to 1 or 0 by the program or the terminal. Inhibits the output updating phase of each task. %SW9.0 = 1 assigned to the MAST task; outputs relating to this task are no longer managed. %SW9.1 = 1 assigned to the FAST task; outputs relating to this task are no longer managed. %SW9.2 to 5 = 1 assigned to the AUX 0...3 tasks; outputs relating to these tasks are no longer managed. (3) Note: On Modicon M340, inputs/outputs distributed via CANopen bus are not affected by the word %SW9. (4) Note: On Quantum, inputs/outputs distributed via DIO bus are not affected by the word %SW9. This word is not available on Quantum safety PLCs.
YES (3)
YES
166
35006144.07 07/2008
System objects
CAUTION
HAZARD OF UNEXPECTED BEHAVIOR On Premium/Atrium: Module outputs located on the X Bus automatically switch to the configured mode (fallback or maintain). On the Fipio bus, certain devices do not manage fallback mode. Here, only maintain mode is possible. On Quantum: All outputs, as well as the local or remote rack (RIO) are maintained in the state that preceded the switch to 1 of the %SW9 bit corresponding to the task. The Distributed Inputs/Outputs (DIO) are not assigned by the system word %SW9. Failure to follow these instructions can result in injury or equipment damage.
Description If the value of the current task bit is set to 0, this means that the task is performing its first cycle after a cold start. %SW10.0: assigned to the MAST task. %SW10.1: assigned to the FAST task. %SW10.2 to 5: assigned to the AUX 0...3 tasks. This word is not available on Quantum safety PLCs.
Initial state 0
%SW11 WDGVALUE
Watchdog duration
Reads the duration of the watchdog. The duration is expressed in milliseconds (10...1500 ms). This word cannot be modified.
YES
YES
YES
35006144.07 07/2008
167
System objects
%SW12 APMODE
16#A501
NO
NO
%SW13 XWAYNETWADDR
This word indicates the following for the main network (Fipway or Ethway): the station number (least significant byte) from 0 to 127, the network number (most significant byte) from 0 to 63, (value of the micro-switches on the PCMCIA card).
254 (16#00FE)
NO
YES
%SW13 INTELMODE
For Quantum safety PLC only, this word indicates the operating mode of the Intel Pentium processor of the CPU module. 16#501A = maintenance mode 16#5AFE = safe mode Any other value is interpreted as an error. Note: In a HotStand By safety system, this word is exchanged from the primary to the standby PLC to inform the standby PLC of the safe or maintenance mode.
NO
NO
168
35006144.07 07/2008
System objects
Description This word contains the commercial version of the PLC processor. Example: 16#0135 version: 01 issue number: 35 This word contains the commercial version of the PLC processor patch. It is coded onto the least significant byte of the word. Coding: 0 = no patch, 1 = A, 2 = B... Example: 16#0003 corresponds to patch C. This word contains the Firmware version number in hexadecimal of the PLC processor firmware. Example: 16#0011 version: 2.1 VN: 17 When an error in a floating arithmetic operation is detected, bit %S18 is set to 1 and %SW17 error status is updated according to the following coding: %SW17.0 = Invalid operation / result is not a number, %SW17.1 =Denormalized operand / result is acceptable (flag not managed by Modicon M340), %SW17.2 = Division by 0 / result is infinity, %SW17.3 = Overflow / result is infinity, %SW17.4 = Underflow / result is 0, %SW17.5 to 15 = not used. This word is reset to 0 by the system on cold start, and also by the program for re-usage purposes. This word is not available on Quantum safety PLCs.
Quantum YES
%SW15 OSCOMMPATCH
YES
YES
YES
%SW16 OSINTVERS
YES
YES
YES
%SW17 FLOATSTAT
YES
YES
35006144.07 07/2008
169
System objects
Description %SW18 represents the least significant bytes and %SW19 the most significant bytes of the double word %SD18, which is incremented by the system every 1/10th of a second. The application can read or write these words in order to perform duration calculations. %SD18 is incremented systematically, even in STOP mode and equivalent states. However, times when the PLC is switched off are not taken into account, since the function is not linked to the real-time scheduler, but only to the real-time clock. For Quantum safety PLC, knowing that the 2 processors must process exactly the same data, the value of %SD18 is updated at the beginning of the mast task, and then frozen during the application execution.
Quantum YES
For M340 and Quantum PLCs %SD20 is incremented every 1/1000th of a second by the system (even when the PLC is in STOP, %SD20 is no longer incremented if the PLC is powered down). %SD20 can be read by the user program or by the terminal. %SD20 is reset on a cold start. %SD20 is not reset on a warm start. For Premium TSX P57 14M/24M/34M/ C024M/024M and TSX PCI57 204M/354M PLCs, %SD20 is incremented by 5 every 5/ 1000th of a second by the system. For all the others Premium PLCs, %SD20 is time counter at 1 ms like Quantum and M340 PLCs. For Quantum safety PLC, knowing that the 2 processors must process exactly the same data, the value of %SD18 is updated at the beginning of the mast task, and then frozen during the application execution. The least significant byte contains the Ethernet processor rotary switch. It can be read by the user program or by the terminal. This system word allows to verifiy on server side the number of requests processed by PLC per cycle.
YES
YES
YES
%SW23
YES
NO
NO
%SW26
YES
YES
YES
170
35006144.07 07/2008
System objects
Description %SW27 is the last system overhead time. %SW28 contains the maximum system overhead time. %SW29 contains the minimum system overhead time. The system overhead time depends on the configuration (number of I/O...) and on the current cycle requests (communication, diagnostics). System overhead time = Mast Cycle Time User code execution time. These can be read and written by the user program or by the terminal.
Premium Atrium NO
Quantum NO
35006144.07 07/2008
171
System objects
YES
YES
YES
YES
YES
YES (except for safety PLCs) YES (except for safety PLCs) YES (except for safety PLCs)
%SW34 FASTMAXTIME
YES
YES
%SW35 FASTMINTIME
YES
YES
Note: Execution time is the time elapsed between the start (input acquisition) and the end (output update) of a scanning period. This time includes the processing of event tasks, the fast task, and the processing of console requests.
172
35006144.07 07/2008
System objects
35006144.07 07/2008
173
System objects
%SW49 DAYOFWEEK %SW50 SEC %SW51 HOURMIN %SW52 MONTHDAY %SW53 YEAR
YES
YES
YES
174
35006144.07 07/2008
System objects
Word Symbol %SW54 STOPSEC %SW55 STOPHM %SW56 STOPMD %SW57 STOPYEAR %SW58 STOPDAY
Description System words containing date and time of the last power failure or PLC stop (in Binary Coded Decimal): %SW54: Seconds (00SS), %SW55: Hours and Minutes (HHMM), %SW56: Month and Day (MMDD), %SW57: Year (YYYY), %SW58: the most significant byte contains the day of the week (1 for Monday through to 7 for Sunday), and the least significant byte contains the code for the last stop: 1 = change from RUN to STOP by the terminal or the dedicated input, 2 = stop by watchdog (PLC task or SFC overrun), 4 = power outage or memory card lock operation, 5 = stop on hardware fault, 6 = stop on software fault. Details on the type of software fault are stored in %SW125. 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=1. In the following illustration, bits in the left column increment the value, and bits in the right column decrement the value:
Initial state -
Quantum YES
%SW59 ADJDATETIME
YES
YES
YES
+ Bits 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
- Type of value Day of the week Seconds Minutes Hours Days Months Years Centuries
35006144.07 07/2008
175
System objects
%SW75 TIMEREVTNB
YES
YES (1)
%SW76 DLASTREG
YES
YES
YES
%SW77 DLASTDEREG
YES
YES
YES
%SW78 DNBERRBUF
YES
YES
YES
176
35006144.07 07/2008
System objects
Description These words are updated by the system, and can also be reset using %S80. %SW80: Number of messages sent by the system to the terminal port (Modbus serial port on Modicon M340, UniTelway port on Premium), %SW81: Number of messages received by the system from the terminal port (Modbus serial port on Modicon M340, Uni-Telway port on Premium). These words are updated by the system, and can also be reset using %S80. %SW82: Number of messages sent by the system to the PCMCIA module, %SW83: Number of messages received by the system from the PCMCIA module. These words are updated by the system, and can also be reset using %S80. For Premium: %SW84: Number of telegrams sent by the system, %SW85: Number of telegrams received by the system. For Modicon M340: %SW84: Number of messages sent to the USB port, %SW85: Number of messages received by the USB port.
Initial state 0
Quantum YES
Message management
NO
YES
NO
YES
YES
NO
%SW86 MSGCNT6
Message management
This word is updated by the system, and can also be reset using %S80. For Premium: Number of messages refused by the system. For Modicon M340: Number of messages refused by the system, not treated because of lack of resources for example.If the message is refused by Modbus Server then it corresponds to Modbus exception messages, sent by the CPU to the remote Modbus client.
YES
YES
NO
35006144.07 07/2008
177
System objects
Description Number of requests processed by synchronous server per master (MAST) task cycle. The requests processed may come from all communication ports (having access to the server Modbus/UNI-TE, each of them having its own limitation). This means also that requests from other clients, then communication EFs like IO Scanner, connected HMI and so on should be counted. For Premium: %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. For Modicon M340: %SW88: Number of HTTP requests received by the processors Web server per second, %SW89: Number of FTP requests received by the FTP server per second.
Initial state 0
Quantum YES
Premium: Communication flow management Modicon M340: HTTP and FTP requests received by the processors Web server and FTP server per second
YES
YES
NO
178
35006144.07 07/2008
System objects
Description This word is used to set a maximum number of requests (all protocols included: UNI-TE, Modbus, etc.) which can be processed by the PLC per master task cycle. When the CPU is the server: This number of requests must be between 2 (minimum) and N+4 (maximum). N: number differs depending on the model. BMX P34 10/20/: N = 8 (minimum 2, maximum 8 + 4 = 12), TSX 57 1: N = 4 (minimum 2, maximum 4 + 4 = 8), TSX 57 2: N = 8, TSX 57 3: N = 12, TSX 57 4: N = 16, TSX 57 5: N = 16, With Fipio, the Premium range processes up to 7 requests. The value 0 will not work. If a value that is outside of the range is entered, it is the value N that is taken into account. The number of requests to be processed per cycle should take into account requests from all communication ports (having access to the server). This means also that requests from other clients, then communication EFs like IO Scanner, connected HMI and so on should be taken into account.
Initial state N
Quantum YES
%SW91-92
%SW91: Number of function blocks messages sent per second, %SW92: Number of function block messages received per second. Can be read by the user program or by the terminal. These counters does not include other outgoing requests coming from an IO Scanner for example.
YES
YES
NO
35006144.07 07/2008
179
System objects
Function
Description
Initial state 0
Premium Atrium NO
Quantum NO
Memory card file Can be read and written by the user program system format or the terminal. This word is used by the command & status customer to format or clean up the memory card. The clean up operation deletes the content of the data storage directory. Formatting or clean up is possible only in Stop mode: %SW93.0 = 1 a rising edge starts the format operation. %SW93.1 gives the file system status after a format or a clean Up operation request: %SW93.1 = 0 invalid file system or command under progress, %SW93.1 = 1 valid file system. %SW93.2 = 1 a rising edge starts the clean up operation.
%SW94 %SW95
These two words contain a 32-bit value that changes at every application modification except when: updating upload information, replacing the initial value with the current value, saving the parameter command. They can be read by the user program or by the terminal.
YES
NO
NO
180
35006144.07 07/2008
System objects
Description This word is used to copy or delete the current value of %MW to or from internal flash memory (see Structure, p. 109) and to give the actions status. It can be read by the user program or by the terminal: %SW96.0: Request to copy current value of %MW to internal Flash memory. Set to 1 by the user to request a save, and set to 0 by the system when a save is in progress. %SW96.1 is set to 1 by the system when a save is finished, and set to 0 by the system when a save is in progress. %SW96.2 = 1 indicates an error on a save or restore operation (see %SW96.8 to 15 for error code definitions). %SW96.3 = 1 indicates that a restore operation is in progress. %SW96.4 may be set to 1 by the user to delete %MW area in internal Flash memory. %SW96.7 = 1 indicates that internal memory has valid %MW backup. %SW96.8 to 15 are error codes when %SW96.2 is set to 1: %SW96.9 = 1 indicates that the saved %MW number is less than the configured number, %SW96.8 = 1 and %SW96.9 = 1 mean that the saved %MW number is greater than the configured number, %SW96.8 = 1, %SW96.9 = 1 and %SW96.10 = 1 indicate a write error in internal flash memory.
Initial state -
Premium Atrium NO
Quantum NO
%SW97 CARDSTS
Card status
Can be read by the user program or by the terminal. Indicates the status of the card. %SW97: 0000 = no error. 0001 = application backup or file write sent to a write-protected card. 0002 = card not recognized, or application backup damaged. 0003 = backup of the application requested, but no card available. 0004 = card access error, for example after a card has been removed not properly. 0005 = no file system present in the card, or file system not compatible. Use %SW93.0 to format the card.
YES
NO
NO
35006144.07 07/2008
181
System objects
Description Word used to manage the redundancy of network modules. When a problem is detected on a communication module used to access a network number x (X-WAY), it is possible to switch to another communication module (connected to the same network) by entering the network number in the %SW99 word. %SW99 is reset to 0 by the system.
Initial state 0
Modicon M340 NO
Quantum NO
182
35006144.07 07/2008
System objects
YES
NO
YES
%SW116 REMIOERR
NO
NO
YES
35006144.07 07/2008
183
System objects
%SW125 BLKERRTYPE
YES
YES
YES
Address of the instruction that generated the application blocking error. For 16 bit processors, TSX P57 1/2: %SW126 contains the offset for this address %SW127 contains the segment number for this address. For 32 bit processors: %SW126 contains the least significant word for this address %SW127 contains the most significant word for this address
YES
YES
YES
184
35006144.07 07/2008
System objects
6.3
Description
Subject of this Section What's in this Section?
This section describes the system words %SW128 to %SW167 for Premium and Atrium PLCs. This section contains the following topics:
Topic Description of System Words %SW60 to %SW65 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 Premium/Atrium System Words %SW155 to %SW167 Page 186 188 189 190 191 193 194
35006144.07 07/2008
185
System objects
Description of system words %SW60 to %SW65 on Premium and Atrium Hot Standby.
Function Premium Hot Standby command register Description Meaning of the different bits of the word %SW60: %SW60.1 =0 sets PLC A to OFFLINE mode. =1 sets PLC A to RUN mode. %SW60.2 =0 sets PLC B to OFFLINE mode. =1 sets PLC B to RUN mode. %SW60.4 OS Version Mismatch =0 If OS Versions Mismatch with Primary, Standby goes to Offline mode. =1 If OS Versions Mismatch with Primary PLC, Standby stays in standby mode. Firmware OS Mismatch.This relate to main processor OS version, embedded copro OS version, monitored ETY OS version and enables a Hot Standby system to operate with different versions of the OS running on the Primary and Standby. Meaning of the different bits of the word %SW61.0 to %SW61.6: 0 %SW61.0 and %SW61.1 Status of local PLC. %SW61.1=0 and %SW61.0=1: OFFLINE mode. %SW61.1=1 and %SW61.0=0: Primary mode. %SW61.1=1 and %SW61.0=1: Standby mode. %SW61.2 and %SW61.3 Status of remote PLC. %SW61.3=0 and %SW61.2=1: OFFLINE mode. %SW61.3=1 and %SW61.2=0: Primary mode. %SW61.3=1 and %SW61.2=1: Standby mode. %SW61.3=0 and %SW61.2=0: the remote PLC is not accessible (Power off, no communication). %SW61.4 is set=1: whenever a logic mismatch is detected between the Primary and Standby controllers. %SW61.5 is set to 0 or 1, depending on the Ethernet copro MAC address: =0 the PLC with the lowest MAC dress becomes PLC A. =1 the PLC with the highest MAC address becomes PLC B. %SW61.6: this bit indicates if the CPU-sync link between the two PLC is valid: %SW61.6=0: the CPU-sync link is valid.The content of bit 5 is significant. %SW61.6=1: the CPU-sync link is not valid. In this case, the contents of the bit 5 is not significant because the comparison of the two MAC addresses cannot be performed. Initial state 0 Premium YES Atrium NO
%SW61 HSB_STS
YES
NO
186
35006144.07 07/2008
System objects
Description Meaning of the different bits of the word %SW61.7 to %SW61.9: %SW61.7: this bit indicates if there is a Main Processor OS version mismatch between Primary and Standby: =0: no OS version firmware mismatch. =1: OS version mismatch. If OS version mismatch is not allowed in the command register (bit 4 = 0), the system will not work as redundant as soon as the fault is signaled. %SW61.8: this bit indicates if there is a COPRO OS version mismatch between Primary and Standby: =0: no COPRO OS version mismatch. =1: COPRO OS version mismatch. If OS version mismatch is not allowed in the command register (bit 4 = 0), the system will not work as redundant as soon as the fault is signaled. %SW61.9: this bit indicates if at least one ETY module does not have the minimum version: =0: all the ETY modules have the minimum version. =1: at least one ETY module doesn't have the minimum version. In this case, no Primary PLC could start.
Initial state 0
Premium YES
Atrium NO
%SW61 HSB_STS
Meaning of the different bits of the word %SW61.10 and %SW61.15: 0 %SW61.10: this bit indicates if there is a Monitored ETY OS version mismatch between Primary and Standby: =0: no Monitored ETY OS version mismatch. =1: Monitored ETY OS version mismatch. If OS version mismatch is not allowed in the command register (bit 4 = 0), the system will not work as redundant as soon as the fault is signaled. %SW61.15: If %SW 61.15 is set = 1, the setting indicates that Ethernet Copro device is set up correctly and working. These four words are reverse registers reserved for the Reverse Transfer process. These four reverse registers can be written to the application program (first section) of the Standby controller and are transferred at each scan to the Primary controller. 0
YES
NO
Premium %SW62 HSBY_REVERSE Transfer word 0 %SW63 HSBY_REVERSE 1 %SW64 HSBY_REVERSE 2 %SW65 HSBY_REVERSE 3
YES
NO
35006144.07 07/2008
187
System objects
Table showing correspondence between word bits and connection point address:
Bit 0 Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 Bit 7 Bit 8 Bit 9 Bit 10 %SW128 %SW129 %SW130 %SW131 %SW132 %SW133 %SW134 %SW135 %SW136 %SW137 %SW138 %SW139 %SW140 %SW141 %SW142 %SW143 0 16 32 48 64 80 96 112 128 144 160 176 192 208 224 240 1 17 33 49 65 81 97 113 129 145 161 177 193 209 225 241 2 18 34 50 66 82 98 114 130 146 162 178 194 210 226 242 3 19 35 51 67 83 99 115 131 147 163 179 195 211 227 243 4 20 36 52 68 84 100 116 132 148 164 180 196 212 228 244 5 21 37 53 69 85 101 117 133 149 165 181 197 213 229 245 6 22 38 54 70 86 102 118 134 150 166 182 198 214 230 246 7 23 39 55 71 87 103 119 135 151 167 183 199 215 231 247 8 24 40 56 72 88 104 120 136 152 168 184 200 216 232 248 9 25 41 57 73 89 105 121 137 153 169 185 201 217 233 249 10 26 42 58 74 90 106 122 138 154 170 186 202 218 234 250 Bit 11 11 27 43 59 75 91 107 123 139 155 171 187 203 219 235 251 Bit 12 12 28 44 60 76 92 108 124 140 156 172 188 204 220 236 252 Bit 13 13 29 45 61 77 93 109 125 141 157 173 189 205 221 237 253 Bit 14 14 30 46 62 78 94 110 126 142 158 174 190 206 222 238 254 Bit 15 15 31 47 63 79 95 111 127 143 159 175 191 207 223 239 255
188
35006144.07 07/2008
System objects
%SW145 BAPARAM
%SW146 BASTATUS
The least significant byte indicates the status of the producer / consumer function. The most significant byte indicates the status of the bus arbiter function. Byte value: 16#00: the function does not exist (no Fipio application). 16#70: the function has been initialized but is not operational (in STOP). 16#F0: the function is currently being executed normally (in RUN).
CAUTION
Concerns words %SW144 and %SW145 Modifying these system words can cause the PLC station to stop. Failure to follow these instructions can result in injury or equipment damage.
35006144.07 07/2008
189
System objects
Number of This word indicates the number of messages resent by the Fipio messages resent channel manager.
190
35006144.07 07/2008
System objects
bit 0 = "overrun station fault": corresponds to loss of a MAC symbol while receiving this is linked to the receiver reacting too slowly. bit 1 = "message refusal fault": indicates that a message with acknowledgment was refused, or that it was not acknowledged in the first place. receiving MAC. bit 2 = "interrupt variable refusal fault". bit 3 = "underrun station fault": corresponds to the station being unable to respect transfer speed on the network. bit 4 = "physical layer fault": corresponds to a prolonged transmission absence in the physical layer. bit 5 = "non-echo fault": corresponds to a fault which occurs when the transmitter is currently sending, with a transmission current in the operating range, and when at the same time there is detection of an absence of signal on the same channel. bit 6 = "talking 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 data link layer. bit 7 = "undercurrent fault": corresponds to a fault whereby the transmitter generates, when solicited, a current weaker than the minimum set operating limit. This fault is caused by increased line impedance (e.g. open line, etc.). bit 8 = "pierced 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. bit 9 = "Receiving frame CRC fault": indicates that the CRC calculated on a normally received frame and the CRC contained within this frame have different values. bit 10 = "Receiving frame code fault": indicates that certain symbols, belonging exclusively to delimitation sequences at the start and end of frames, have been received within the body of the frame. bit 11 = "received frame length fault": more than 256 bytes have been received for the frame body.
35006144.07 07/2008
191
System objects
bit 12 = "unknown frame type received": within the frame body, the first byte identifies the type of frame link. A set number of frame types are defined in the WorldFip standard link protocol. Any other code found within a frame is therefore an unknown frame type. bit 13 = "a truncated frame has been received": a frame section is recognized by a sequence of symbols delimiting the end of the frame, while the destination station awaits the arrival of a delimiter sequence for the start of the frame. bit 14 = "unused, non-significant value". bit 15 = "unused, non-significant value"
192
35006144.07 07/2008
System objects
bit 0 = "aperiodic sequence time-out": indicates that the messages or aperiodic variables window has overflowed its limit within an elementary cycle of the macrocycle. bit 1 = "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 to comply with a request. bit 2 = "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 to comply with a request. bit 3 = "non-urgent update command refused": indicates that the queue for nonurgent aperiodic variable exchange requests is saturated - for the time being the bus arbiter is in no position to latch onto nor to comply with a request. bit 4 = "pause fault": the bus arbiter has not detected any bus activity during a time period larger than the standardized WorldFip time period. bit 5 = "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). bit 6 = "bus arbiter overrun fault": indicates a conflict on accessing the bus arbiter station memory. bit 7 = "unused, non-significant value". bit 8 to bit 15 = reserved on 0.
35006144.07 07/2008
193
System objects
194
35006144.07 07/2008
System objects
6.4
Description
Subject of this Section What's in this Section?
This section describes the system words %SW128 to %SW547 for Quantum PLCs.
35006144.07 07/2008
195
System objects
%SW61 HSB_STS
196
35006144.07 07/2008
System objects
Word Symbol %SW62 HSBY_REVERSE0 %SW63 HSBY_REVERSE1 %SW64 HSBY_REVERSE2 %SW65 HSBY_REVERSE3
Description These 4 words may be modified by the master task first section user . They are then transferred automatically from the Standby processor to update the primary PLC. They may be read on the primary PLC and be used as primary application parameters.
Initial state 0
35006144.07 07/2008
197
System objects
Description of system words %SW110 to %SW179; these words are active on Quantum 140 CPU 6 PLCs.
Function number of unrestricted memory area for %M number of unrestricted memory area for %MW Number of connections open Number of connections refused Number of messages refused Description This system word gives information on the size of the unrestricted memory area for %M. This system word gives information on the size of the unrestricted memory area for %MW. The Most Significant Byte of this word indicates the number of TCP connections open on the Ethernet link TCP/IP port 502. This word indicates the number of TCP connections refused on the Ethernet link TCP/IP port 502. This word indicates the number of TCP messages refused on the Ethernet link TCP/IP port 502. This double word %SDW132 indicates the number of messages sent on the Ethernet link TCP/IP port 502. This double word %SDW134 indicates the number of messages received on the Ethernet link TCP/IP port 502. This word indicates the number of devices scanned on the Ethernet link TCP/IP port 502. This word indicates the number of messages received per second from the IO Scanning service on the Ethernet link TCP/IP port 502. Global Data coherence error The Least Significant Byte of this word measures the percentage of load relating to IO Scanning. The Most Significant Byte of this word measures the percentage of load relating to Global Data. The Least Significant Byte of this word measures the percentage of load relating to messaging. The Most Significant Byte of this word measures the percentage of load relating to other services. This double word %SDW141 receives the IP address of the Ethernet link. This double word %SDW143 receives the subnetwork mask of the Ethernet link. This double word %SDW145 receives the address of the default Ethernet gateway. The words %SW147, %SW148,%SW149 code the addresses MAC 1, MAC 2 and MAC 3 respectively. This word codes the coprocessor version for 140 CPU 671-60 PLCs. The version is displayed in hexadecimal format. Initial state 0 0 0 0 0 0 0 0 0 0 0
%SW132 and %SW133 Number of messages NB_SENT_MSG sent %SW134 and %SW135 Number of messages NB_RCV_MSG received %SW136 NB_IOS_CNX %SW137 NB_IOS_MSG %SW138 GLBD_ERROR %SW139 BW_GLBD_IOS Number of devices scanned Number of IO Scanning messages received Global Data coherence error Global Data and IO Scanning service load
%SW140 BW_OTHER_MSG
%SW141 and %SW142 IP Address IP_ADDR %SW143 and %SW144 IP subnetwork mask IP_NETMASK %SW145 and %SW146 Default Ethernet IP_GATEWAY gateway address %SW147 to %SW149 MAC_ADDR1 to 3 %SW150 MAC Addresses Coprocessor version
0 0 0 0 0
198
35006144.07 07/2008
System objects
Description This word codes the status of the Ethernet link. Bit 0 =0 if the Ethernet link is stopped Bit 1 =0 Bit 2: 0= half duplex mode, 1=full duplex Bit 3 =0 Bits 4 to 11: =7 for Quantum, =6 for Hot Standby Quantum Bit 12: 0 = 10 Mbits link, 1= 100 Mbits link Bit 13: 0 = 10/100Base-TX link (twisted pair) Bit 14: 0 Bit 15: 0 = Ethernet link inactive, 1= Ethernet link active The bits of words %SW160 to %SW167 are associated with devices that have been IO scanned. The bit is set to 0 if the device is faulty, and set to 1 if the device is operating correctly. %SW160.0: device No. 1. %SW160.1: device No. 2. ........... %SW167.15: device No. 128. Note: These system words are only available for Quantum coprocessors, and are unavailable for NOE modules. The bits of words %SW168 to %SW171 are associated with Global Data. The bit is set to 0 if the device is faulty, and set to 1 if the device is operating correctly. %SW168.0: device No. 1. %SW168.1: device No. 2. ........... %SW171.15: device No. 64.
Initial state 0
35006144.07 07/2008
199
System objects
Slot number of the processor with Modbus Plus link Operating status of the distributed station modules of the first DIO network
%SW405 NOM1DIOSLOT
200
35006144.07 07/2008
System objects
Function Operating status of the distributed station modules of the second DIO network
Description The words %SW406 to %SW469 are associated with the distributed stations (DIO): 64 words associated with the 64 DIO stations of the second network. %SW406: operating status of the station 1 modules. %SW407: operating status of the station 2 modules. ........... %SW469: operating status of the station 64 modules. Bits 0 to 15 of each of these words are associated with the modules located in positions 16 to 1 of these stations. The bit is set to 0 if the module is faulty, and set to 1 if the module is operating correctly. Example: %SW412.5 =0 The module located in station 7 slot 11 of the second DIO network is faulty. Note: For modules 140 CRA 2 the value of this bit is not significant, and is always set to 0. These words are not available on safety PLCs. Slot number of module 140 NAME 2 for connection to the third DIO network. The slot number is coded from 0 to 15. This word is not available on Quantum safety PLCs. The words %SW471 to %SW534 are associated with the distributed stations (DIO): 64 words associated with the 64 DIO stations of the third network. %SW471: operating status of the station 1 modules. %SW472: operating status of the station 2 modules. ........... %SW534: operating status of the station 64 modules. Bits 0 to 15 of each of these words are associated with the modules located in positions 16 to 1 of these stations. The bit is set to 0 if the module is faulty, and set to 1 if the module is operating correctly. Example: %SW520.5 =0 The module located in station 86 slot 11 of the third DIO network is faulty. Note: For modules 140 CRA 2 the value of this bit is not significant, and is always set to 0. These words are not available on safety PLCs.
Initial state -
%SW470 NOM2DIOSLOT
Slot number of the second interface module of the DIO network Operating status of the distributed station modules of the third DIO network
35006144.07 07/2008
201
System objects
Function
Description
Initial state -
RIO error on start- This word stores the start-up error code. This word is always set to 0 when up the system is running; in the event of error, the PLC does not start up, but generates a stop status code 01: I/O assignment length 02: Remote I/O link number 03: Number of stations in the I/O assignment 04: I/O assignment checksum 10: Length of the station descriptor 11: I/O station number 12: Station autonomy time 13: ASCII port number 14: Number of station modules 15: Station already configured 16: Port already configured 17: More than 1024 output points 18: More than 1024 input points 20: Module slot address 21: Module rack address 22: Number of output bytes 23: Number of input bytes 25: First reference number 26: Second reference number 28: Internal bits outside the 16 bit range 30: Unpaired odd output module 31: Unpaired odd input module 32: Unpaired odd module reference 33: Reference 1x after register 3x 34: Reference of dummy module already used 35: Module 3x is not a dummy module 36: Module 4x is not a dummy module Communication status on cable A The words %SW536 to %SW538 are the communication error words on cable A. %SW536: most significant byte: counts framing errors least significant byte: counts overruns of the DMA receiver. %SW537: most significant byte: counts receiver errors least significant byte: counts incorrect station receptions. %SW538: %SW538.15 = 1, short frame %SW538.14 = 1, no end-of-frame %SW538.3 = 1, CRC error %SW538.2 = 1, alignment error %SW538.1 = 1, overrun error %SW538.13 to 4 and 0 are unused
202
35006144.07 07/2008
System objects
Description The words %SW539 to %SW541 are the communication error words on cable A. %SW539: most significant byte: counts framing errors least significant byte: counts overruns of the DMA receiver. %SW540: most significant byte: counts receiver errors least significant byte: counts incorrect station receptions. %SW541: %SW541.15 = 1, short frame %SW541.14 = 1, no end-of-frame %SW541.3 = 1, CRC error %SW541.2 = 1, alignment error %SW541.1 = 1, overrun error %SW541.13 to 4 and 0 are unused The words %SW542 to %SW544 are the global communication error words. %SW542: displays the global communication status. %SW542.15 = 1, communication operating correctly %SW542.14 = 1, communication on cable A operating correctly %SW542.13 = 1, communication on cable B operating correctly %SW542.11 to 8 = lost communications counter %SW542.7 to 0 = retry totalizer counter. %SW543: is the global error totalizer counter for cable A: most significant byte: counts the errors detected least significant byte: counts "non responses". %SW544: is the global error totalizer counter for cable B: most significant byte: counts the errors detected least significant byte: counts "non responses". The words %SW545 to %SW640 are used to describe the status of the decentralized stations. Three status words are used for each station. %SW545: displays the global communication status for station 1. %SW545.15 = 1, communication operating correctly %SW545.14 = 1, communication on cable A operating correctly %SW545.13 = 1, communication on cable B operating correctly %SW545.11 to 8 = lost communications counter %SW545.7 to 0 = retry totalizer counter. %SW546: is the global error totalizer counter for cable A station 1: most significant byte: counts the errors detected least significant byte: counts "non responses". %SW547: is the global error totalizer counter for cable B station 1: most significant byte: counts the errors detected least significant byte: counts "non responses". The words: %SW548 to 550 are assigned to station 2 %SW551 to 553 are assigned to station 3 ....... %SW638 to 640 are assigned to station 32
Initial state -
35006144.07 07/2008
203
System objects
Description For the PLCs where station 1 is reserved for local input/outputs, the status words %SW545 to %SW547 are used in the following way. %SW545: status of the local station. %SW545.15 = 1, all modules are operating correctly. %SW545.14 to 8 = unused, always set to 0. %SW545.7 to 0 = number of times the module has appeared defective; the counter loops back at 255. %SW546: this is used as a counter for 16-bit input/output bus errors. %SW547: this is used as a counter for 16-bit input/output bus repetitions.
Initial state -
204
35006144.07 07/2008
System objects
6.5
%SW160 to %SW167 Premium and PREMRACK0 to Modicon M340 PREMRACK7 Rack 0 to 7 error
35006144.07 07/2008
205
System objects
206
35006144.07 07/2008
Data Description
III
At a Glance
In This Chapter This part describes the different data types that can be used in a project, and how to implement them. This part contains the following chapters:
Chapter 7 8 9 10 Chapter Name General Overview of Data Data Types Data Instances Data References Page 209 217 275 289
35006144.07 07/2008
207
Data Description
208
35006144.07 07/2008
7
At a Glance
Subject of this Chapter This chapter provides a general overview of: the different data types the data instances the data references This chapter contains the following topics:
Topic General General Overview of the Data Type Families Overview of Data Instances Overview of the Data References Syntax Rules for Type\Instance Names Page 210 211 213 214 215
35006144.07 07/2008
209
General
Introduction A data item designates an object which can beinstantiated such as: a variable, a function block. Data is defined in three phases. These are: the data types phase, which specifies the following: its category, its format. the data instances phase, which defines its storage location and property, which is: located, or unlocated. the data references phase, which defines its means of access: by immediate value, by name, by address. Illustration The following are the three phases that characterize the data:
Instantiate Data types Data instances Reference Data references
Instantiating a data item consists in allocating it a memory slot according to its type. Referencing a data item consists in defining a reference for it (name, address, etc.) allowing it to be accessed in the memory.
210
35006144.07 07/2008
Variables
Function blocks
EDT
DDT
EFB
DFB
35006144.07 07/2008
211
Definitions
DDT
EFB
DFB
212
35006144.07 07/2008
Variables
Function blocks
EDT
DDT
Unlocated
Unlocated
Unlocated
Located
Located
Definitions
Located
35006144.07 07/2008
213
Variables
Function blocks
EDT
DDT
By value
By name (symbol)
By name (symbol)
214
35006144.07 07/2008
35006144.07 07/2008
215
216
35006144.07 07/2008
Data Types
8
At a Glance
Subject of this Chapter What's in this Chapter? This chapter describes all the data types that can be used in an application.
35006144.07 07/2008
217
Data Types
8.1
At a Glance
Subject of this Section
This section describes Binary format data types. These are: Boolean types Integer types Time types This section contains the following topics:
Topic Overview of Data Types in Binary Format Boolean Types Integer Types The Time Type Page 219 220 225 227
218
35006144.07 07/2008
Data Types
A data item can be: signed. Here the highest ranking bit is the sign bit: 0 indicates a positive value 1 indicates a negative value [ 2 , 2 Bits 1 1 ] The range of values is: unsigned. Here all the bits represent the value The range of values is: Bits=number of bits (format). Data Types in Binary Format List of data types:
Type
BOOL EBOOL INT DINT UINT UDINT TIME Bits 1
[ 0, 2 Bits 1 ]
Designation
Boolean Boolean with forcing and edge detection Integer Double integer Unsigned integer Unsigned double integer Unsigned double integer
35006144.07 07/2008
219
Data Types
Boolean Types
At a Glance There are two types of Boolean. These are: BOOL type, which contains only the value FALSE (=0) or TRUE (=1) EBOOL type, which contains the value FALSE (=0) or TRUE (=1) but also information concerning the management of falling or rising edges and forcing Principle of the BOOL Type This type takes up one memory byte, but the value is only stored in one bit. The default value for this type is FALSE (=0). It is accessible via an address containing the offset of the corresponding byte: Address settings:
Memory
Offset
In the case of the word extracted bit, it is accessible via an address containing the following information: an offset of the corresponding byte the rank defining its position in the word Address settings:
Memory
Offset
V Rank
220
35006144.07 07/2008
Data Types
This type takes up one memory byte which contains: the bit for the value (V), the history bit (H) for managing rising or falling edges. Each time the objects status changes, the value is copied to this bit, the bit containing the forcing status (F). Equal to 0 if the object is not forced and equal to 1 if the object is forced. The default value for the bits associated with the EBOOL type is FALSE (=0). It is accessible via an address specifying the offset of the corresponding byte: Address settings:
Memory
Offset
The trend diagram below shows the main statuses of the value and history bits associated with the EBOOL type. The rising edges of the value bit (1, 4) are copied to the history bit in the next PLC cycle (2, 5). The falling edges of the value bit (2, 7) are copied to the history bit of the next PLC cycle (3, 8).
(1) (2) (3) (4) (5) (6) (7) (8) (9) (10)
Value
History bit
35006144.07 07/2008
221
Data Types
The trend diagram below shows the main statuses of the value, history and forcing bits associated with the EBOOL type. The rising edges of the value bit (1, 4) are copied to the history bit in the next PLC cycle (2, 5). The falling edges of the value bit (2, 7) are copied to the history bit in the next PLC cycle (3, 8). Between (4 and 5), the forcing bit equals 1, while the value and history bits remain at 1.
(1) (2) (3) (4) (5) (6) (7) (8) (9) (10)
Value bit
Forcing bit
History bit
List of variables
Variable Internal bit System bit Word extracted bit %I inputs Module error bit Channel error bit Input bit %Q outputs Output bit EBOOL BOOL BOOL EBOOL Type EBOOL BOOL BOOL
222
35006144.07 07/2008
Data Types
The operations authorized between these two types of variables are: value copying address copying Copies between types
BOOL destination BOOL source EBOOL source Yes Yes EBOOL destination Yes Yes
EBOOL
35006144.07 07/2008
223
Data Types
Compatibility
EBOOL data types follow the rules below: A EBOOL type variable cannot be passed as a BOOL type input/output parameter. EBOOL arrays cannot be passed as ANY type parameters of an FFB. BOOL and EBOOL arrays are not compatible for instructing assignment (same rule as for FFB parameters). On Quantum: EBOOL type located variables cannot be passed as EBOOL type input/output parameters. EBOOL arrays cannot be passed as parameters of a DFB.
224
35006144.07 07/2008
Data Types
Integer Types
At a Glance Integer types are used to represent a value in different bases. These are: base 10 (decimal) by default. Here the value is signed or unsigned depending on the integer type base 2 (binary). Here the value is unsigned and the prefix is 2# base 8 (octal). Here the value is unsigned and the prefix is 8# base 16 (hexadecimal). Here the value is unsigned and the prefix is 16#
Note: In decimal representation, if the chosen type is signed, the value can be preceded by the + sign or - sign (the + sign is optional).
Signed type with a 16-bit format. This table shows the range in each base.
Base Decimal Binary Octal Hexadecimal from... -32768 2#1000000000000000 8#100000 16#8000 to... 32767 2#0111111111111111 8#077777 16#7FFF
Signed type with a 32-bit format. This table shows the range in each base.
Base Decimal Binary Octal Hexadecimal from... -2147483648 to... 2147483647
35006144.07 07/2008
225
Data Types
Unsigned type with a 16-bit format. This table shows the range in each base.
Base Decimal Binary Octal Hexadecimal from... 0 2#0 8#0 16#0 to... 65535 2#1111111111111111 8#177777 16#FFFF
Unsigned type with a 32-bit format. This table shows the range in each base.
Base Decimal Binary Octal Hexadecimal from... 0 2#0 8#0 16#0 to... 4294967295 2#11111111111111111111111111111111 8#37777777777 16#FFFFFFFF
226
35006144.07 07/2008
Data Types
35006144.07 07/2008
227
Data Types
8.2
At a Glance
Subject of this section
This section describes BCD format (Binary Coded Decimal) data types. These are: Date type Time of Day type (TOD) Date and Time (DT) type This section contains the following topics:
Topic Overview of Data Types in BCD Format The Date Type The Time of Day (TOD) Type The Date and Time (DT) Type Page 229 231 232 233
228
35006144.07 07/2008
Data Types
Binary value
0111
1000
1001
1001
0011
0000
0001
0110
35006144.07 07/2008
229
Data Types
230
35006144.07 07/2008
Data Types
Syntax Rules
The Date type is entered as follows: D#<Year>-<Month>-<Day> This table shows the lower/upper limits in each field.
Field Year Month Day Limits [1990,2099] [01,12] [01,31] [01,30] [01,29] [01,28] The left 0 is always displayed, but can be omitted at the time of entry For the months 01\03\05\07\08\10\12 For the months 04\06\09\11 For the month 02 (leap years) For the month 02 (non leap years) Comment
Example:
Entry D#2001-1-1 d#1990-02-02 Comments The left 0 of the month and the day can be omitted The prefix can be written in lower case
35006144.07 07/2008
231
Data Types
Note: The 8 least significant bits are unused. Representation in BCD format of the time of day 13:25:47:
Hour (13) 0001 0011 Minutes (25) 0010 0101 Seconds (47) 0100 0111 Least significant byte Unused
Syntax Rules
The Time of Day type is entered as follows: TOD#<Hour>:<Minutes>:<Seconds> This table shows the lower/upper limits in each field.
Field Hour Minute Second Limits [00,23] [00,59] [00,59] Comment The left 0 is always displayed, but can be omitted at the time of entry The left 0 is always displayed, but can be omitted at the time of entry The left 0 is always displayed, but can be omitted at the time of entry
Example:
Entry TOD#1:59:0 tod#23:10:59 Tod#0:0:0 Comment The left 0 of the hours and seconds can be omitted The prefix can be written in lower case The prefix can be mixed (lower\upper case)
232
35006144.07 07/2008
Data Types
Note: The 8 least significant bits are unused. Example: Representation in BCD format of the date and Time 2000-09-20:13:25:47.
Year (2000) 0010 0000 0000 0000 Month (09) 0000 1001 Day (20) 0010 0000 Hour (13) 0001 0011 Minute (25) 0010 0101 Seconds (47) 0100 0111 Least significant byte Unused
Syntax Rules
The Date and Time type is entered as follows: DT#<Year>-<Month>-<Day>-<Hour>:<Minutes>:<Seconds> This table shows the lower/upper limits in each field.
Field Year Month Day Limits [1990,2099] [01,12] [01,31] [01,30] [01,29] [01,28] Hour Minute Second [00,23] [00,59] [00,59] The left 0 is always displayed, but can be omitted during entry For the months 01\03\05\07\08\10\12 For the months 04\06\09\11 For the month 02 (leap years) For the month 02 (non leap years) The left 0 is always displayed, but can be omitted during entry The left 0 is always displayed, but can be omitted during entry The left 0 is always displayed, but can be omitted during entry Comment
Example:
Entry DT#2000-1-10-0:40:0 dt#1999-12-31-23:59:59 Dt#1990-10-2-12:02:30
35006144.07 07/2008
Comment The left 0 of the month\hour\second can be omitted The prefix can be written in lower case The prefix can be mixed (lower\upper case)
233
Data Types
8.3
The value of the fixed-point part (Mantissa) is between [0, 1], and is calculated using the following formula.
f = ( 2
i=0
22
i 23
bi )
bi represents the value of the bit (0 or 1) of the corresponding rank (i=0 to 22)
234
35006144.07 07/2008
Data Types
These are the numbers which are: normalized denormalized of infinite values with values +0 and -0 This table gives the values in the different fields according to number type.
e [0, 255] 0 255 255 255 255 0 0 f [0, 1] [0, 1] 0 0 [0,1] and bit 22 = 0 [0,1] and bit 22 = 0 0 0 S 0 or 1 0 or 1 0 1 0 or 1 0 or 1 0 1 Number type normalized denormalized DEN + infinity (INF) - infinity (-INF) SNAN QNAN +0 -0
Note: Standard IEC 559 defines two classes of NAN (not a number): QNAN and SNAN. QNAN: is a NAN whose bit 22 is set to 1 SNAN: is a NAN whose bit 22 is set to 0 They behave as follows: QNAN do not trigger errors when they appear in operands of a function or an expression. SNAN trigger an error when they appear in operands of a function or an arithmetic expression (See %SW17 (see Detailed Description, p. 168) and %S18 (see Description of System Bits %S15 to %S21, p. 152)).
35006144.07 07/2008
235
Data Types
This table gives the calculation formula of the value V of the floating-point number:
Floating-point number type Normalized Value V
( 1 ) 2
( e 127 )
(1 + f) f
Denormalized (DEN)
( 1 ) 2
126
Note: A real number between -1.1754944e-38 and 1.1754944e-38 is a denormalized DEN. When an operand is a DEN, the result is not guaranteed. The bits %SW17 (see Detailed Description, p. 168) and %S18 (see Description of System Bits %S15 to %S21, p. 152) are raised except for the Modicon M340. The Modicon M340 PLCs are able to use the denormalized operands but, due to the format, with a loss of precision. Underflow is signaled depending on the operation only when the result is 0 (total underflow) or when the result is a denormalized (gradual underflow, with loss of precision).
Presentation:
Type REAL Scale (bits) 32 Default value 0.0
1.1754944e-38
When a calculation result is: between -1.1754944e-38 and 1.1754944e-38, it is a DEN less than -3.4028234e+38, the symbol -INF (for -infinite) is displayed greater than +3.4028234e+38, the symbol INF (for +infinite) is displayed undefined (square root of a negative number), the symbol NAN is displayed
236
35006144.07 07/2008
Data Types
Examples
35006144.07 07/2008
237
Data Types
8.4
238
35006144.07 07/2008
Data Types
Examples
Entry examples:
Type Entry Contents of the string represents the end of string character * represents empty bytes ABDC************ (16 characters) john Its john* ***** **** the no 0123456789*** <cr><lf>*** $1.00
A STRING type variable can be declared in two different ways: STRING and STRING[<Number of elements>] Behavior differs depending on usage:
FFB input parameter The size is equal to the actual size of the input parameter. The size is equal to the actual size of the input parameter limited to n characters.
EF output parameter The size is equal to the actual size of the input parameter. The EF writes a maximum of n characters.
35006144.07 07/2008
239
Data Types
When you use a STRING type variable as an ANY type parameter, it is highly recommended to check that the size of the variable is less than the maximum declared size. Example: Use of STRING on the SEL function (Selector). String1: STRING[8] String2: STRING[4] String3: STRING[4] String1:= 'AAAAAAAA'; String3:= 'CC'; Scenario 1: String2:= 'BBBB'; (* the size of the string is equal to the maximum declared size *) String1:= SEL(FALSE, String2, String3); (* the result will be: 'BBBBAAAA' *) Scenario 2: String2:= 'BBB'; (* the size of the string is less than the maximum declared size *) String1:= SEL(FALSE, String2, String3); (* the result will be: 'BBB' *)
240
35006144.07 07/2008
Data Types
8.5
At a Glance
Subject of this Section
This section describes data types in bit string format. These are: Byte type Word type Dword type This section contains the following topics:
Topic Overview of Data Types in Bit String Format Bit String Types Page 242 243
35006144.07 07/2008
241
Data Types
242
35006144.07 07/2008
Data Types
Representation examples:
Data content 00001000 00110011 00110011 Representation in one of the bases 16#8 8#63 2#110011
The Word type is coded in 16 bit format. This table shows the lower/upper limits of the bases which can be used.
Base Hexadecimal Octal Binary Lower limit 16#0 8#0 2#0 Upper limit 16#FFFF 8#177777 2#1111111111111111
Representation examples:
Data content 0000000011010011 1010101010101010 0000000011010011 Representation in one of the bases 16#D3 8#125252 2#11010011
35006144.07 07/2008
243
Data Types
The Dword type is coded in 32 bit format. This table shows the lower/upper limits of the bases which can be used.
Base Hexadecimal Octal Binary Lower limit 16#0 8#0 2#0 Upper limit 16#FFFFFFFF 8#37777777777 2#11111111111111111111111111111111
Representation examples:
Data content 00000000000010101101110011011110 00000000000000010000000000000000 00000000000010101011110011011110 Representation in one of the bases 16#ADCDE 8#200000 2#10101011110011011110
244
35006144.07 07/2008
Data Types
8.6
At a Glance
Subject of this Section
This section presents Derived Data Types. These are: tables (DDT) structures structures concerning input/output data (IODDT) structures concerning other data (DDT) This section contains the following topics:
Topic Arrays Structures Overview of the Derived Data Type family (DDT) DDT: Mapping Rules Overview of Input/Output Derived Data Types (IODDT) Page 246 249 250 253 257
35006144.07 07/2008
245
Data Types
Arrays
What Is an Array? It is a data item that contains a set of data of the same type, such as: elementary data (EDT), for example: a group of BOOL words, a group of UINT integer words, etc. derived data (DDT) such as: a group of WORD tables, a group of structures, etc. An array is characterized by two parameters: a parameter which defines its organization (array dimension(s)), a parameter that defines the type of data it contains.
Characteristics
Note: The most complex organization is the array with six dimensions. The syntax comprising these two parameters is:
246
35006144.07 07/2008
Data Types
Instancing an array
Tab_1: X Tab_2: ARRAY[1..10] OF BOOL
The instances Tab_1 and Tab_2 are of the same type and the same dimension, the only difference being that during instancing: the Tab_1 type takes the name X, the Tab_2 type must be defined (unnamed table).
Note: It is beneficial to name the type, as any modification that has to be made will only be done so once, otherwise there will be as many modifications as there are instances.
35006144.07 07/2008
247
Data Types
Examples
WARNING UNRECOGNIZABLE ARRAY INDEX Many functions (READ_VAR, WRITE_VAR for example) dont recognize the index of an array of words starting by a number different from 0. If you use such an index the functions will look at the number of words in the array, but not at the starting index set in the definition of the array. Failure to follow these instructions can result in death, serious injury, or equipment damage. Access to a data item in array Tab_1 and Tab_3: Tab_1[2] ;To access second element Tab_3[4][18] ;To access eighteenth element of the fourth sub-array
There are the 4 following arrays: Tab_1:ARRAY[1..10] OF INT Tab_2:ARRAY[1..10] OF INT Tab_3:ARRAY[1..11] OF INT Tab_4:ARRAY[101..110] OF INT
Tab_1:=Tab_2; Assignment authorized Tab_1:=Tab_3; Assignment refused (non-IEC compliant) Tab_1:=Tab_4; Assignment refused (non-IEC compliant)
248
35006144.07 07/2008
Data Types
Structures
What is a Structure? It is a data item containing a set of data of a different type, such as: a group of BOOL, WORD, UNINT, etc. , (EDT structure), a group of tables (DDT structure), a group of REAL, DWORD, tables, etc., (EDT and DDT structures).
Note: You can create nested structures (nested DDTs) over 8 levels. Recurring structures (DDT) are not allowed.
Characteristics
A structure is composed of data which are each characterized by: a type, a name, which enables it to be identified, a comment (optional) describing its role. Definition of a structure type:
IDENT Surname: STRING[12] First name: STRING[16] Age: UINT ;The IDENT type structure contains a UINT type data item and two STRING type data
35006144.07 07/2008
249
Data Types
DDT
Tables
Structures
EDT tables
DDT tables
DDT structures
EDT structures
250
35006144.07 07/2008
Data Types
Characteristics
A data item belonging to the DDT family is made up of: the type name (see Syntax Rules for Type\Instance Names, p. 215) (32 characters maximum) defined by the user (not obligatory for tables but recommended) (see Defining and Instancing an Array, p. 247) the type (structure or table) an optional comment (of a maximum of 1024 characters). Authorized characters correspond to the ASCII codes 32 to 255 the description (in the case of a structure) of these elements the element name (see Syntax Rules for Type\Instance Names, p. 215) (32 characters maximum) the element type an optional comment (1024 characters maximum) describing its role. The authorized characters correspond to the ASCII codes 32 to 255 information such as: type version number date of the last modification of the code or of the internal variables or of the interface variables an optional descriptive file (32767 characters) describing the block function and its different modifications
Note: The total size of a table or of a structure does not exceed 64 Kbytes.
35006144.07 07/2008
251
Data Types
Examples
Definition of types COORD X: INT Y: INT ;COORD type structure SEGMENT Origin: COORD Destination: COORD ;SEGMENT type structure structures
containing
COORD
type
100
SEGMENT
type
DRAW Color: INT Anchor: COORD Pattern: ARRAY[0..15,0..15] OF WORD Contour: OUTLINE Access to the data of a DRAW-type structure instance Cartoon: DRAW ;Instance of DRAW type structure Cartoon.Pattern[15,15] ;Access to last data item in the Pattern table of the Cartoon structure Cartoon.Contour[0].Origin.X ;Access to data item X of the COORD structure belonging to the first SEGMENT structure of the Contour table.
252
35006144.07 07/2008
Data Types
WARNING
Be careful with the compatibility of applications converted from Concept. With the Concept programming application, the data structures do not handle any shift in offsets (each element is set one after the other in the memory, regardless of its type). Consequently, we recommend that you check everything, in particular the consistency of the data when using DDTs located on the "State RAM" (risk of shifts) or functions for communication with other devices (transfers with a different size from those programmed in Concept). Failure to follow these instructions can result in death, serious injury, or equipment damage.
35006144.07 07/2008
253
Data Types
The storage principle for Modicon M340 PLCs is as follows: Elements are stored in the order in which they are declared in the structure, The basic element is the byte, One alignment rule and function of the element: the BOOL and BYTE types are aligned on either even or uneven bytes, the INT, WORD and UINT types are aligned on even bytes, the DINT, UDINT, REAL, TIME, DATE, TOD, DT and DWORD are aligned on double words, structures and tables are aligned according to the rules of their elements.
WARNING
Bad exchanges between a Modicon M340 project and a Premium or Quantum project. Check if the structure of the exchanged data have the same alignments in the two projects. Otherwise, the data will not be exchanged properly. Failure to follow these instructions can result in death, serious injury, or equipment damage.
Note: It is possible that the alignment of data are not the same when the project is transferred from the simulator of Unity Pro to a M340 PLC. So check the structure of the data of the project.
Note: Unity Pro (See Unity Pro 3.1 Operating Modes, Choice of Configuration Parameters for Project Generation) indicates where the alignment seems to be different. Check the corresponding instances in the data editor. See the page of Project settings (See Unity Pro 3.1 Operating Modes, Choice of Configuration Parameters for Project Generation) to know how enable this option.
254
35006144.07 07/2008
Data Types
Examples
The table below gives some examples of data structures. In the following examples, structure type DDTs are addressed to %MWi. The words 1st byte corresponds to the least significant 8 bits and the words 2nd byte corresponds to the most significant 8 bits. For all the following structures, the first variable is mapped to the address %MW100: First Memory Address Modicon M340 %MW100 (1 byte) %MW102 (1st byte) %MW104 (1st byte)
st
Mode_TOTALIZER %MW100 (1st byte) %MW100 (2nd byte) %MW100 (1st byte) %MW100 (2nd byte) hold: BOOL rst: BOOL
Info_TOTALIZER %MW100 (1st byte) %MW100 (1st byte) outc: REAL cter: UINT done: BOOL Reserved for the alignment
35006144.07 07/2008
255
Data Types
The table below gives two examples of data structures with arrays:
First Memory Address Modicon M340 %MW100 (1 byte) %MW100 (2 %MW104
nd st
EHC105_Out byte) byte) Quit: BYTE Control: ARRAY [1..5] OF BYTE Final: ARRAY [1..5] OF DINT
byte) byte)
%MW100 (2
(1st
%MW103 (1 byte)
CPCfg_ex %MW100 (1st byte) %MW101 (1st byte) %MW102 (1st byte) %MW103 (1st byte) %MW104 (1st byte) %MW106 (2nd byte) %MW100 (1st byte) %MW101 (1st byte) %MW102 (1st byte) %MW103 (1st byte) %MW104 (1st byte) %MW106 (2nd byte) Profile_type: INT Interp_type: INT Nb_of_coords: INT Nb_of_points: INT reserved: ARRAY [0..4] OF BYTE Reserved for the alignment of variable Master_offset on even bytes Master_offset: DINT Follower_offset: INT Reserved for the alignment
256
35006144.07 07/2008
Data Types
IODDT
structures
EDT
The IODDT types are structures whose size (the number of elements of which they are composed) depends on the channel or the input\output module that they represent. A given input\output module can have more than one IODDT. The difference with a conventional structure is that: the IODDT structure is predefined by the manufacturer The elements comprising the IODDT structure do not have a contiguous memory allocation, but rather a specific address in the module
35006144.07 07/2008
257
Data Types
Examples
258
35006144.07 07/2008
Data Types
8.7
At a Glance
Subject of this Section
This section describes function block data types. These are: user function blocks (DFB) elementary function blocks (EFB) This section contains the following topics:
Topic Overview of Function Block Data Type Families Characteristics of Function Block Data Types (EFB\DFB) Characteristics of Elements Belonging to Function Blocks Page 260 262 264
35006144.07 07/2008
259
Data Types
EFB
DFB
Function blocks are entities containing: input and output variables acting as an interface with the application a processing algorithm that operates input variables and completes the output variables private and public internal variables operated by the processing algorithm Illustration Function block:
Algorithm A p p l i c a t i o n Input Output A p p l i c a t i o n
Output
Internal variables
260
35006144.07 07/2008
Data Types
The user function block types (Derived Function Blocks) are developed by the user using one or more languages (according to the number of sections). These languages are: Ladder language Structured Text language Instruction List language Functional block language FBD A DFB type can have one or more instances where each instance is referenced by a name (symbol) and possesses DFB data types.
Elementary Function Blocks (EFBs) are provided by the manufacturer and are programmed in C language. The user can create his own EFB for which he will need an optional software tool "SDKC". An EFB type can have one or more instances where each instance is referenced by a name (symbol) and possesses EFB type data.
35006144.07 07/2008
261
Data Types
262
35006144.07 07/2008
Data Types
Characteristics
This table gives the characteristics of the elements that make up a type:
Element Name Comment Input Data Input/Output data Output data Number of interfaces (Inputs+Outputs+Inputs/Outputs) Public data Private data Programming language EFB 32 characters 1024 characters 32 maximum 32 maximum 32 maximum 32 maximum (2) No limits (1) No limits (1) C language DFB 32 characters 1024 characters 32 maximum 32 maximum 32 maximum 32 maximum (2) No limits (1) No limits (1) Language: Structured Text, Instruction List, Ladder language, function block. A section is defined by: a name (maximum 32 characters), a validation condition, a comment (maximum 256 characters), a protection: without, read only, read\write mode. A section cannot access declared variables in the application, except for: system double words %SDi, system words %SWi, system bits %Si.
Section
(1): the only limit is the size of the PLC's memory. (2): the EN input and ENO output are not taken into account.
35006144.07 07/2008
263
Data Types
IODDT Input data Input/output data Output data Public data Private data Yes Yes (1) Yes Yes Yes No Yes No No No
(1): not authorized for the EBOOL type static data used on Quantum PLCs (2): not authorized for BOOL and EBOOL type data (3): must be completed during the execution of the DFB, and not usable outside the DFB
264
35006144.07 07/2008
Data Types
IODDT Input data Input/output data Output data Public data Private data Yes Yes Yes Yes Yes No Yes No No No
Unnamed tables No No No No No
other Yes Yes Yes Yes Yes Yes (1) Yes (1) Yes (1) (2) No No No No No No Yes
(1): not authorized for BOOL and EBOOL type data (2): must be completed during the execution of the EFB, and not usable outside the EFB Initial Values for an Element Belonging to a DFB This table specifies whether the initial values can be entered from the DFB type definition or the DFB instance:
Element of the DFB Input data (no ANY... type) Input data (of ANY... type) Input/output data Output data (no ANY... type) Output data (of ANY... type) Public data Private data From the DFB type Yes No No Yes No Yes Yes From the DFB instance Yes No No Yes No Yes No
35006144.07 07/2008
265
Data Types
This table specifies whether the initial values can be entered from the EFB type definition or the EFB instance:
Element of the EFB Input data (no ANY... type See Overview of Generic Data Types, p. 267) Input data (of ANY... type) Input/output data From the EFB type Yes From the DFB instance Yes
No No
No No Yes No Yes No
Output data (no ANY... type) Yes Output data (of ANY... type) Public data Private data No Yes Yes
WARNING
Index of an array not recognizable for EFBs and DFBs EFBs and DFBs dont recognize the index of an array of words starting by a number different from 0. If you use such an index EFBs and DFBs will look at the number of words in the array, but not at the starting index set in the definition of the array Failure to follow these instructions can result in death, serious injury, or equipment damage.
266
35006144.07 07/2008
Data Types
8.8
35006144.07 07/2008
267
Data Types
Example
Note: The authorized objects for the various parameters are defined in this table (see Authorized Objects for the Different Parameters, p. 539).
268
35006144.07 07/2008
Data Types
8.9
Step -1
Step -N
Structure SFCSTEP_STATE
Structure SFCSTEP_TIMES
Structure SFCSTEP_STATE
Structure SFCSTEP_TIMES
Note: The two structure types SFCSTEP_STATE and SFCSTEP_TIMES are also linked to each Macro step of the sequential function chart.
This structure includes all types of data linked to the status of the step or of the Macro step. These data types are: x: BOOL elementary data type (EDT) containing the value TRUE when the step is active, t: TIME elementary data type (EDT) containing the activity time of the step. When deactivated, the step value is maintained until the next activation, tminErr: BOOL elementary data type (EDT) containing the value TRUE if the activity time of the step is less than the minimum programmed activity time, tmaxErr: BOOL elementary data type (EDT) containing the value TRUE if the activity time of the step is greater than the maximum programmed activity time, These data types are accessible from the application in read only mode.
35006144.07 07/2008
269
Data Types
This structure includes all types of data linked to the definition of the runtime parameters of the step or of the Macro step. These data types are: delay: TIME elementary data type (EDT), defining the polling delay time of the transition situated downstream from the active step, tmin: TIME elementary data type (EDT) containing the minimum value during which the step must at least be executed. If this value is not respected the data tmin.Err switches to the value TRUE, tmax: TIME elementary data type (EDT) containing the maximum value during which the step must at least be executed. If this value is not respected the data tmax.Err switches to the value TRUE. These data types are only accessible from the SFC editor.
The instance names of this structure correspond to the names of the steps or macro steps of the sequential function chart
Syntax Name_Step.x Name_Step.t Name_Step.tminErr Name_Step.tmaxErr Comment Used to find out the status of the step (active\inactive) Used to find out the current or total activation time for the step Used to find out if the minimum activation time of the step is less than the time programmed in Name_Step.tmin Used to find out if the maximum activation time of the step is greater than the time programmed in Name_Step.tmax
270
35006144.07 07/2008
Data Types
8.10
35006144.07 07/2008
271
Data Types
ELEMENT_2 My_Element: INT Other_Element: BOOL ;ELEMENT_2 type structure ELEMENT_3 Element: INT Other_Element: BOOL ;ELEMENT_3 type structure ELEMENT_4 Other_Element: BOOL My_Element: INT ;ELEMENT_4 type structure
272
35006144.07 07/2008
Data Types
Rules concerning the tables Two tables are compatible if: their dimensions and the order of their dimensions are identical each corresponding dimension is of the same type There are five types of table:
TAB_1: ARRAY[10..20]OF INT ;Table one dimension of TAB_1 type TAB_2: ARRAY[20..30]OF INT ;Table one dimension of TAB_2 type TAB_3: ARRAY[20..30]OF INT ;Table one dimension of TAB_3 type TAB_4: ARRAY[20..30]OF TAB_1 ;Table one dimension of TAB_4 type TAB_5: ARRAY[20..30,10..20]OF INT ;Table two dimensions of type TAB_5
35006144.07 07/2008
273
Data Types
The Generic Data Type (GDT) family is made up of groups organized hierarchically which contain data types belonging to the following families: Elementary Data Types (EDT) Derived Data Types (DDT) Rules: A conventional data type is compatible with the genetic data types related to it hierarchically. A generic data type is compatible with the generic data types related to it hierarchically. Example:
The INT type is compatible ANY_MAGNITUDE types. with the ANY_INT or ANY_NUM or
The INT type is not compatible with the ANY_BIT or ANY_REAL types. The ANY_INT generic type is compatible with the ANY_NUM type. The ANY_INT generic type is not compatible with the ANY_REAL type.
274
35006144.07 07/2008
Data Instances
9
At a Glance
What's in this Chapter? This chapter describes data instances and their characteristics. These instances can be: unlocated data instances located data instances direct addressing data instances What's in this Chapter? This chapter contains the following topics:
Topic Data Type Instances Data Instance Attributes Direct Addressing Data Instances Page 276 280 282
35006144.07 07/2008
275
Data Instances
276
35006144.07 07/2008
Data Instances
Located data instances have a predefined memory location in the PLC, and this location is known to the user. Located data instances are defined using data types belonging to one of the following families: Elementary Data Types (EDT) Derived Data Types (DDT) Sequential Function Chart data types (SFC)
Note: For Premium/Atrium double-type instances of located data (%MD<i>, %KD<i>) or floating (%MF<i>, %KF<i>) should be located by an integer type (%MW<i>, %KW<i>). Only I/O objects make it possible to locate type instances (%MD<i>, %KD<i>, %QD, %ID, %MF<i>, %KF<i>, %QF, %IF) by using their topological address (for example %MD0.6.0.11, %MF0.6.0.31).
Note: For Modicon M340, double-type instances of located data (%MD<i>, %KD<i>) or floating (%MF<i>, %KF<i>) are not available.
Note: For Modicon M340, the index (i) value must be even (see Principle for Modicon M340, p. 254) for double-type instances of located data (%MW and %KW).
35006144.07 07/2008
277
Data Instances
Examples:
Var_1 : EBOOL AT %M100 ;Instance of EDT family of Boolean allocation) predefined in %M100 Var_2: BOOL AT %I2.1.0.ERR ;Instance of EDT family of Boolean allocation) predefined in %I2.1.0.ERR Var_3: INT AT %MW10 ;Instance of EDT family of integer allocation) predefined in %MW10 type (with 1 byte memory
type
(with
byte
memory
type
(with
byte
memory
Var_4: : DINT AT %MW1 ;Prohibited for Modicon M340. Double type located data instances must have a topological address even (%MW2, %MW10.....). Var_5: WORD AT %MW10 ;Instance of EDT family of WORD type (with 2 byte memory allocation) predefined in %MW10 Var_6: ARRAY[1..10]OF INT AT %MW50 ;Instance of EDT family of table allocation) predefined from %MW50 COORD X: INT Y: INT Var_7: COORD AT %MW20 ;Instance of DDT family of COORD structure type (with 4 byte memory allocation) predefined from %MW20 Var_8: DINT AT %MD0.6.0.11 ;Instance of EDT family of DINT type (with 4 byte memory allocation) predefined from the topologic address of the I/O object of the application-specific module.
type
(with
20
byte
memory
Var_9: REAL AT %MF0.6.0.31 ;Instance of EDT family of REAL type (with 4 byte memory allocation) predefined from the topologic address of the I/O object of the application-specific module.
Note: Sequential Function Chart (SFC) data type instances are created the moment they are inserted in the application program, with a default name that the user can modify.
278
35006144.07 07/2008
Data Instances
Direct addressing data instances have a predefined location in the PLC memory or in an application-specific module, and this location is known to the user. Direct addressing data instances are defined using types belonging to the Elementary Data Type (EDT) family. Examples of direct addressing data instances:
Internal %Mi %MWi %MDi (1) %MFi (1) %KWi %KDi (1) %KFi (1) Constant System %Si %SWi Input/Output %Q, %I %QW, %IW %QD, %ID %QF, %IF %NW Network
35006144.07 07/2008
279
Data Instances
280
35006144.07 07/2008
Data Instances
The names of instances are declared implicitly while the user drafts his sequential function chart. They are default names supplied by the manufacturer which the user can modify. Manufacturer-supplied default names:
SFC object Step Step of Macro step Macro step Nested macro step Input step of Macro step Output step of Macro step Transition Transition of Macro step Name S_<section name>_<step No.> S_<section name>_<macro step No.>_<step No.> MS_<section name>_<step No.> MS_<section name>_<macro step No.>_<step No.> S_IN<section name>_<macro step No.> S_OUT<section name>_<macro step No.> T_<section name>_<transition No.> T_<section name>_<macro step No.>_<transition No.>
Instance names are implicitly declared while the user inserts the instances into the sections of the application program. They are default names supplied by the manufacturer which the user may modify. Syntax of manufacturer-supplied default names:
FB_<name of function block type>_<instance No.>
Note: Instance names do not include the name of the section in which the instance is used, since it can be used in different sections of the application.
Rule: The maximum size of the access syntax is 1024 characters, and the possible limits of a derived data type are as follows: 10 nesting levels (tables/structures) 6 dimensions per table 4 digits (figures) to define the index of a table element
35006144.07 07/2008
281
Data Instances
Access Syntax
%M<i> or %MX<i> 3 bits (EBOOL) %MW<i> %MW<i>.<j> %MD<i> (1) %MF<i> (1) 16 bits (INT) 1 bit (BOOL) 32 bits (DINT) 32 bits (REAL)
<i> represents the instance number (starts a 0 for Premium and 1 for Quantum). For Modicon M340 double-type instance (double word) or floating instance (real) must be located in an integer type %MW. The index <i> of the %MW has to be even. Note: The %M<i> or %MX<i> data detect edges and manage forcing.
282
35006144.07 07/2008
Data Instances
Memory organization:
%MD4 = %MF4
Note: The modification of %MW<i> involves the corresponding modifications of %MD<i> and %MF<i>.
%K Constants
Access syntax:
Syntax Word constant Double word constant Real (floating point) constant %KW<i> %KD<i> (1) %KF<i> (1) Format 16 bits (INT) 32 bits (DINT) 32 bits (REAL) Program access rights R R R
<i> represents the instance number. Note: The memory organization is identical to that of internal variables. It should be noted that these variables are not available on Quantum PLCs.
35006144.07 07/2008
283
Data Instances
%I Constants
Access syntax:
Syntax Bit constant Word constant %I<i> %IW<i> Format 3 bits (EBOOL) 16 bits (INT) Program access rights R R
<i> represents the instance number. Note: These data are only available on Quantum and Momentum PLCs.
%S System Variables
Access syntax:
Syntax Bit Word %S<i> or %SX<i> %SW<i> Format 1 bit (BOOL) 32 bits (INT) Program access rights R/W or R R/W or R
<i> represents the instance number. Note: The memory organization is identical to that of internal variables. The %S<i> and %SX<i> data are not used for detection of edges and do not manage forcing.
%N Network Variables
These variables contain information, which has to be exchanged between several application programs across the communication network. Access syntax:
Syntax Common word Word extracted bit %NW<n>.<s>.<d> %NW<n>.<s>.<d>.<j> Format 16 bits (INT) 1 bit (BOOL) Program access rights R\W or R R\W or R
<n> represents the network number. <s> represents the station number. <d> represents the data number. <j> represents the position of the bit in the word.
284
35006144.07 07/2008
Data Instances
Input/Output structure (IODDT) %I inputs BOOL type module error bit BOOL type channel error bit BOOL or EBOOL type bit
%CH<@mod>.<c>
%I4.2.MOD.ERR %I4.2.3.ERR %I4.2.3 %I4.2.3.1 %IW4.2.3 %IW4.2.3.1 %ID4.2.3 %ID4.2.3.2 %IF4.2.3 %IF4.2.3.2
R R R R R R R R R R
%IW<@mod>.<c> %IW<@mod>.<c>.<d>
%ID<@mod>.<c> %ID<@mod>.<c>.<d>
%IF<@mod>.<c> %IF<@mod>.<c>.<d>
%Q outputs EBOOL type bit %Q<@mod>.<c> %Q<@mod>.<c>.<d> INT type word %QW<@mod>.<c> %QW<@mod>.<c>.<d> DINT type double word %QD<@mod>.<c> %QD<@mod>.<c>.<d> Read type REAL (floating point) %QF<@mod>.<c> %QF<@mod>.<c>.<d> %M variables (Premium) INT type word %MW<@mod>.<c> %MW<@mod>.<c>.<d> DINT type double word %MD<@mod>.<c> %MD<@mod>.<c>.<d> Read type REAL (floating point) %MF<@mod>.<c> %MF<@mod>.<c>.<d> %K Constants (Modicon M340 and Premium) INT type word %KW<@mod>.<c> %KW<@mod>.<c>.<d> %KW4.2.3 %KW4.2.3.1 R R %MW4.2.3 %MW4.2.3.1 %MD4.2.3 %MD4.2.3.2 %MF4.2.3 %MF4.2.3.2 R/W R/W R/W R/W R/W R/W %Q4.20.3 %Q4.20.30.1 %QW4.2.3 %QW4.2.3.1 %QD4.2.3 %QD4.2.3.2 %QF4.2.3 %QF4.2.3.2 R/W R/W R/W R/W R/W R/W R/W R/W
35006144.07 07/2008
285
Data Instances
Syntax DINT type double word %KD<@mod>.<c> %KD<@mod>.<c>.<d> Read type REAL (floating point) %KF<@mod>.<c> %KF<@mod>.<c>.<d>
<@mod = \<b>.<e>\<r>.<m> <b> bus number (omitted if station is local). <e> device connection point number (omitted if station is local, the connection point is also called Drop for Quantum users). <r> rack number. <m> module slot <c> channel number (0 to 999) or MOD reserved word. <d> data number (0 to 999) or ERR reserved word (optional if 0 value). For Modicon M340 <d> is always even.
286
35006144.07 07/2008
Data Instances
Examples: local station and station on bus for Modicon M340 PLCs. Configuration Modicon M340
Line end
CANopen Bus No. 3 1 10
DDO 3410
ACO 1210
A B
NIP 3212
PDT 3100
DDI 3410
DDI 3410
ACI 1230
LEXIUM05 ATV31_V1_1
ATV 31
XPS MC 16
LEXIUM 05
%IW\3.10\0.0.0.1 (bus 3 adresse device 10 channel 0 data 1)
35006144.07 07/2008
287
Data Instances
Examples: local station and station on bus for Quantum and Premium PLCs.
Quantum example
P C NA RI I/ I/ I/ I/ I/ I/
Premium example
P C NA RI I/
I/
I/
I/
I/
I/
Local rack
%IW\3.2\1.4.1.5 (bus 3, drop (device) 2, rack 1, module 4 channel 1 data 5) DIO (No. 2)
DI I/ I/ I/ DI I/ I/ I/
288
35006144.07 07/2008
Data References
10
At a Glance
What's in this Chapter? This chapter provides the references of data instances. These references can be: value-based references, name-based references, address-based references. What's in this Chapter? This chapter contains the following topics:
Topic References to Data Instances by Value References to Data Instances by Name References to Data Instances by Address Data Naming Rules Page 290 292 295 299
35006144.07 07/2008
289
Data References
290
35006144.07 07/2008
Data References
35006144.07 07/2008
291
Data References
Tables: The user chooses a name (symbol) which can be used to access the data instance:
Giving 2 types of table: Color_Range ARRAY[1..15]OF STRING Vehicles ARRAY[1..100]OF Color_range ; Car: Vehicles Instance name of the Vehicles-type table Car[11, 5] Access to car 11 of the color corresponding to element 5 of the Color_range table
292
35006144.07 07/2008
Data References
Structures: The user chooses a name (symbol) which can be used to access the data instance:
Giving the 2 structures: ADDRESS Street: STRING[20] Post_Code: UDINT Town: STRING: [20] IDENT Surname: STRING[15] First name: STRING[15] Age: UINT Date_of_Birth: DATE Location: ADDRESS
Person_1 :IDENT ;Instance name of structure of IDENT type Person_1.Age Access to the age of Person_1 Person_1.Location.Town ;Access to the location where Person_1 resides
35006144.07 07/2008
293
Data References
The user chooses a name (symbol) which can be used to access the data instance.
Giving the DFB type: Parts_Counter %I0.4.1.5 %MW100
Num_Parts_Prog
Screw_Counter: Parts_Counter Instance name of block of Parts_Counter type Screw_Counter.Num_Parts_Prog Access to public variable Num_Parts_Prog Screw_Counter.Num_parts_attained Access to the output interface Num_parts_attained
294
35006144.07 07/2008
Data References
Note: Instances %MD<i>, %MF<i>, %KD<i>, and %KF<i> are not available for Modicon M340.
Addressing is considered direct when the address of the instance is fixed, or, in other words, when it is written into the program. Examples: %M1 Access to first bit of the memory %MW12 Access to twelfth word of the memory %MD4 Access to fourth double word of the memory %KF100 ;Access to hundredth floating pointing word of the memory %Q0.4.0.5 Access to fifth bit of the output module in position 4 of rack 0
35006144.07 07/2008
295
Data References
Addressing is considered indexed when the address of the instance is completed with an index. The index is defined either by: a value belonging to an Integer type an arithmetical expression made up of Integer types An indexed variable always has a non-indexed equivalent:
%MW<i>[<index>] <=> %MW<j>
Examples:
%MD6[10] <=> %MD26 %MW10[My_Var+8] <=> %MW20 (with My_Var=2)
During compilation of the program, a check verifies that: the index is not negative the index does not exceed the space in the memory allocated to each of these three data types
296
35006144.07 07/2008
Data References
It is possible to extract one of the 16 bits of single words (%MW, %SW; %KW, %IW, %QW). The address of the instance is completed with the rank of the extracted bit (<j>).
WORD<i> . <j>
Examples:
%MW10.4 Bit No. 4 of word %MW10 %SW8.4 Bit No. 4 of system word %SW8 %KW100.14 Bit No. 14 of constant KW100 %QW0.5.1.0.10 Bit No. 10 of word 0 of channel 1 of output module 5 of rack 0
35006144.07 07/2008
297
Data References
These are a series of adjacent objects (bits or words) of the same type and of a defined length.
OBJECT<i> :L
Constant words
No
System words
Yes
Examples:
%M2:65 Defines an EBOOL table from %M2 to %M66 %MW125:30 Defines an INT table from %MW125 to %MW 154
298
35006144.07 07/2008
Data References
35006144.07 07/2008
299
Data References
Rules
This table defines whether or not it is possible to use a name that already exists in the application for newly-created elements:
Application Content -> New elements (below) Section SR DDT/IODDT FB type FB Instances EF Variable Section SR DDT/ IODDT FB type FB Instances EF Variable
No No No Yes No (2) No
Yes No No (3) No No No
Yes (1)
Yes No
(1): An instance belonging to the application domain cannot have the same name as an EF. (2): An instance belonging to the type domain (internal variable) can have the same name as an EF. The EF in question cannot be used in this type. (3): The creation or import of EFB/DFBs with the same name as an existing instance are prohibited. (4): An DDT/IODDT element might have the same name of an FB/EF, however it is not advised as the FB/EF should not be used in the application. Note: A number of additional considerations to the rules given in the table are listed below, specifying that: Within a type, an instance (internal variable) cannot have the same name as the type name of the object to which it belongs, There is no conflict between the name of an instance belonging to a section of the application and the name of the instance belonging to a section of a DFB, There is no conflict between the name of a section belonging to a task and the name of the section belonging to a DFB.
300
35006144.07 07/2008
Programming Language
IV
Introduction
Contents of this Section What's in this Part? This section describes the syntax of the programming languages that are available.
35006144.07 07/2008
301
Programming Language
302
35006144.07 07/2008
11
Introduction
Overview This chapter describes the function block language FBD which conforms to IEC 61131. This chapter contains the following topics:
Topic General Information about the FBD Function Block Language Elementary Functions, Elementary Function Blocks, Derived Function Blocks and Procedures (FFBs) Subroutine Calls Control Elements Link Text Object Execution Sequence of the FFBs Change Execution Sequence Loop Planning Page 304 306 316 317 318 320 321 323 328
35006144.07 07/2008
303
Inversion
ST Expression
Literals
Topological Addresses
Link
Objects
The objects of the FBD programming language (Function Block Diagram) help to divide a section into a number of: EFs and EFBs (Elementary Functions (see Elementary Function, p. 306) and Elementary Function Blocks (see Elementary Function Block, p. 307)), DFBs (Derived Function Blocks) (see DFB, p. 308), Procedures (see Procedure, p. 308) and Control Elements (see Control Elements, p. 317). These objects, combined under the name FFBs, can be linked with each other by: Links (see Link, p. 318) or Actual Parameters (see Parameters, p. 309). Comments regarding the section logic can be provided using text objects (see Text Object, p. 320).
304
35006144.07 07/2008
Section Size
One FBD section consists of a window containing a single page. This page has a grid background. A grid unit consists of 10 coordinates. A grid unit is the smallest possible space between 2 objects in an FBD section. The FBD programming language is not cell oriented but the objects are still aligned with the grid coordinates. An FBD section can be configured in number of cells (horizontal grid coordinates and vertical grid coordinates).
IEC Conformity
For a description of the extent to which the FBD programming language conforms to IEC, see IEC Conformity (see IEC Compliance, p. 609).
35006144.07 07/2008
305
Elementary Functions, Elementary Function Blocks, Derived Function Blocks and Procedures (FFBs)
Introduction FFB is the generic term for: Elementary Function (EF) (see Elementary Function, p. 306) Elementary Function Block (EFB) (see Elementary Function Block, p. 307) DFB (Derived Function Block) (see DFB, p. 308) Procedure (see Procedure, p. 308) Elementary functions (EF) have no internal states. If the input values are the same, the value on the output is the same every time the function is called. For example, the addition of two values always gives the same result . An elementary function is represented graphically as a frame with inputs and one output. The inputs are always represented on the left and the output is always on the right of the frame. The name of the function, i.e. the function type, is displayed in the center of the frame. The execution number (see Execution Sequence of the FFBs, p. 321) for the function is shown to the right of the function type. The function counter is shown above the frame. The function counter is the sequential number of the function within the current section. Function counters cannot be modified. Elementary Function
.1 1 DIV IN1 IN2 OUT
Elementary Function
306
35006144.07 07/2008
Elementary function blocks (EFBs) have internal states. If the input values are the same, the value on the output can be different each time the function is called. e.g. for a counter the value on the output is incremented. An elementary function block is represented graphically as a frame with inputs and outputs. The inputs are always represented on the left and the outputs always on the right of the frame. Function blocks can have more than one output. The name of the function block, i.e. the function block type, is displayed in the center of the frame. The execution number (see Execution Sequence of the FFBs, p. 321) for the function block is shown to the right of the function block type. The instance name is displayed above the frame. The instance name serves as a unique identification for the function block in a project. The instance name is created automatically and has the following structure: FBI_n FBI = Function Block Instance n = sequential number of the function block in the project This automatically generated name can be modified for clarification. The instance name (max. 32 characters) must be unique throughout the project and is not casesensitive. The instance name must conform to general naming conventions. Note: To conform to IEC61131-3, only letters are permitted as the first character of the name. If you want to use a numeral as your first character however, this must be enabled explicitly. Elementary Function Block
FBI_1 CTU CTU R PV 1 Q CV
35006144.07 07/2008
307
DFB
Derived function blocks (DFBs) have the same properties as elementary function blocks. The user can create them in the programming languages FBD, LD, IL, and/ or ST. The only difference to elementary function blocks is that the derived function block is represented as a frame with double vertical lines. Derived Function Block
FBI_1 1 DFB_EXAMP IN1 IN2 IN3 OUT1 OUT2
Procedure
Procedures are functions viewed technically. The only difference to elementary functions is that procedures can occupy more than one output and they support data type VAR_IN_OUT. Procedures are a supplement to IEC 61131-3 and must be enabled explicitly. To the eye, procedures are no different than elementary functions. Procedure
.2 PROC_EXAMP IN1 IN2 IO1 1
308
35006144.07 07/2008
Parameters
Inputs and outputs are required to transfer values to or from an FFB. These are called formal parameters. Objects are linked to formal parameters; these objects contain the current process states. They are called actual parameters. Formal and actual parameters:
Actual Parameters FBI_2 CTU Clock %I1.1.3 MUX(1,var1,var2) CTU R PV 1 Q CV Actual Parameters Output Current_Value
Formal Parameters
At program runtime, the values from the process are transferred to the FFB via the actual parameters and then output again after processing. Only one object (actual parameter) of the following types may be linked to FFB inputs: Variable Address Literal ST Expression (see Expression, p. 479) ST expressions on FFB inputs are a supplement to IEC 61131-3 and must be enabled explicitly. Link The following combinations of objects (actual parameters) can be linked to FFB outputs: one variable a variable and one or more connections (but not for VAR_IN_OUT (see VAR_IN_OUT Variable, p. 315) outputs) an address an address and one or more connections (but not for VAR_IN_OUT (see VAR_IN_OUT Variable, p. 315) outputs) one or more connections (but not for VAR_IN_OUT (see VAR_IN_OUT Variable, p. 315) outputs) The data type of the object to be linked must be the same as that of the FFB input/ output. If all actual parameters consist of literals, a suitable data type is selected for the function block. Exception: For generic FFB inputs/outputs with data type ANY_BIT, it is possible to link objects of data type INT or DINT (not UINT and UDINT).
35006144.07 07/2008
309
This is a supplement to IEC 61131-3 and must be enabled explicitly. Example: Allowed:
.1 AND
IntVar1 IntVar2
IN1 IN2
OUT
IntVar3
Not allowed:
.1 AND_WORD
IntVar1 IntVar2
IN1 IN2
OUT
IntVar3
(In this case, AND_INT must be used.) Not all formal parameters have to be assigned an actual parameter. However, this does not apply in the case of negated pins. These must always be assigned an actual parameter. This is also the case with some formal parameter types. These types are shown in the following table. Table of formal parameter types:
Parameter type EFB: Input EDT STRING + + + + + + ARRAY + + + + + + + + + + ANY_ARRAY IODDT + + + + + / + + + + / + + / + / + + + + STRUCT FB + + + + + + + + / / / / / / + / / + / / ANY + + + + + + + + + + +
DFB: VAR_IN_OUT + DFB: Output EF: Input EF: VAR_IN_OUT EF: Output Procedure: Input Procedure: VAR_IN_OUT Procedure: Output + / + + -
310
35006144.07 07/2008
FFBs that use actual parameters on the inputs that have not yet received any value assignment, work with the initial values of these actual parameters. If no value is allocated to a formal parameter, then the initial value will be used for executing the function block. If no initial value has been defined then the default value (0) is used. If a formal parameter is not assigned a value and the function block/DFB is instanced more than once, then the subsequent instances are run with the old value. Public Variables In addition to inputs and outputs, some function blocks also provide public variables. These variables transfer statistical values (values that are not influenced by the process) to the function block. They are used for setting parameters for the function block. Public variables are a supplement to IEC 61131-3. The assignment of values to public variables is made using their initial values. Public variables are read via the instance name of the function block and the names of the public variables. Example:
FBI_1 D_ACT ED DTIMEL DTIMEA TRIGR UNLOCK REACT Instance Name 1 ERR ACT (The function block has the public variables AREA_NR and OP_CTRL)
35006144.07 07/2008
311
Private Variables
In addition to inputs, outputs and public variables, some function blocks also provide private variables. Like public variables, private variables are used to transfer statistical values (values that are not influenced by the process) to the function block. Private variables can not be accessed by user program. These type of variables can only be accessed by the animation table. Note: Nested DFBs are declared as private variables of the parent DFB. So their variables are also not accessible through programming, but trough the animation table. Private variables are a supplement to IEC 61131-3.
Programming Notes
Attention should be paid to the following programming notes: FFBs are only executed if the input EN=1 or if the input EN is grayed out (see also EN and ENO, p. 313). Boolean inputs and outputs can be inverted. Special conditions apply when using VAR_IN_OUT variables (see VAR_IN_OUT Variable, p. 315). Function block/DFB instances can be called multiple times (also see Multiple Function Block Instance Call, p. 312). Function block/DFB instances can be called more than once; other than instances from communication EFBs and function blocks/DFBs with an ANY output but no ANY input: these can only be called once. Calling the same function block/DFB instance more than once makes sense, for example, in the following cases: If the function block/DFB has no internal value or it is not required for further processing. In this case, memory is saved by calling the same function block/DFB instance more than once since the code for the function block/DFB is only loaded once. The function block/DFB is then handled like a "Function". If the function block/DFB has an internal value and this is supposed to influence various program segments, for example, the value of a counter should be increased in different parts of the program. In this case, calling the same function block/DFB means that temporary results do not have to be saved for further processing in another part of the program.
312
35006144.07 07/2008
EN and ENO
One EN input and one ENO output can be used in all FFBs. If the value of EN is equal to "0" when the FFB is invoked, the algorithms defined by the FFB are not executed and ENO is set to "0". If the value of EN is equal to "1" when the FFB is invoked, the algorithms defined by the FFB will be executed. After the algorithms have been executed successfully, the value of ENO is set to "1". If an error occurs when executing these algorithms, ENO is set to "0". If ENO is set to "0" (caused by EN=0 or an error during execution): Function blocks EN/ENO handling with function blocks that (only) have one link as an output parameter:
FUNCBLOCK_1 EN IN1 IN2 ENO OUT FUNCBLOCK_2 EN IN1 IN2 ENO OUT
If EN of FUNCBLOCK_1 is set to "0", the link on output OUT of FUNCBLOCK_1 maintains the old status it had during the last correctly executed cycle. EN/ENO handling with function blocks that have one variable and one link as output parameters:
FUNCBLOCK_1 EN IN1 IN2 ENO OUT OUT1 FUNCBLOCK_2 EN IN1 IN2 ENO OUT
If EN of FUNCBLOCK_1 is set to "0", the link on output OUT of FUNCBLOCK_1 maintains the old status it had during the last correctly executed cycle. The OUT1 variable on the same pin either retains its previous status or can be changed externally without influencing the link. The variable and the link are saved independently of each other. Functions/Procedures As defined in IEC61131-3, the outputs from deactivated functions (EN input set to "0") are undefined. (The same applies to procedures.) Here nevertheless an explanation of the output statuses in this case: EN/ENO handling with function/procedure blocks that (only) have one link as an output parameter:
FUNC_PROC_1 EN IN1 IN2 ENO OUT EN IN1 IN2 FUNC_PROC_2 ENO OUT
35006144.07 07/2008
313
If EN of FUNC_PROC_1 is set to "0", the link on output OUT of FUNC_PROC_1 maintains the old status it had during the last correctly executed cycle. EN/ENO handling with function/procedure blocks that have one variable and one link as output parameters:
FUNC_PROC_1 EN IN1 IN2 ENO OUT OUT1 EN IN1 IN2 FUNC_PROC_2 ENO OUT
If EN of FUNC_PROC_1 is set to "0", the link on output OUT of FUNC_PROC_1 maintains the old status it had during the last correctly executed cycle. The OUT1 variable on the same pin either retains its previous status or can be changed externally without influencing the link. The variable and the link are saved independently of each other. The output behavior of the FFBs does not depend on whether the FFBs are invoked without EN/ENO or with EN=1. Note: For disabled function blocks (EN = 0) with an internal time function (e.g. function block DELAY), time seems to keep running, since it is calculated with the help of a system clock and is therefore independent of the program cycle and the release of the block.
314
35006144.07 07/2008
VAR_IN_OUT Variable
FFBs are often used to read a variable at an input (input variables), to process it and to output the altered values of the same variable (output variables). This special type of input/output variable is also called a VAR_IN_OUT variable. The link between input and output variables is represented by a line in the FFB. VAR_IN_OUT variable
.2 EXAMP1 Input1 Input2 Comb_IN_OUT IN1 IN2 IO1 1 OUT1 OUT2 IO1 Output1 Output2 Comb_IN_OUT
The following special features are to be noted when using FFBs with VAR_IN_OUT variables. All VAR_IN_OUT inputs must be assigned a variable. Via graphical links only VAR_IN_OUT outputs with VAR_IN_OUT inputs can be connected. Only one graphical link can be connected to a VAR_IN_OUT input/output. A combination of variable/address and graphical connections is not possible for VAR_IN_OUT outputs). No literals or constants can be connected to VAR_IN_OUT inputs/outputs. No negations can be used on VAR_IN_OUT inputs/outputs. Different variables/variable components can be connected to the VAR_IN_OUT input and the VAR_IN_OUT output. In this case the value of the variables/variable component on the input is copied to the at the output variables/variable component.
35006144.07 07/2008
315
Subroutine Calls
Calling a Subroutine In FBD, subroutines are called using the following blocks.
SR_CALL Condition MySR EN SR_NAME ENO
If the status of EN is 1, the respective subroutine (variable name inSR_Name) is called. The output ENO is not used to display the error status for this type of block. The output ENO is always 1 for this type of block and is used to call multiple subroutines simultaneously. The following construction makes it possible to call multiple subroutines simultaneously.
SR_CALL Condition MySR1 EN SR_NAME ENO MySR2 SR_CALL EN SR_NAME ENO
The subroutine to be called must be located in the same task as the FBD section called. Subroutines can also be called from within subroutines. Subroutine calls are a supplement to IEC 61131-3 and must be enabled explicitly. In SFC action sections, subroutine calls are only allowed when Multitoken Operation is enabled.
316
35006144.07 07/2008
Control Elements
Introduction Control elements are used for executing jumps within an FBD section and for returning from a subroutine (SRx) or derived function block (DFB) to the main program. The following control elements are available.
Representation
NEXT
Control Elements
Designation Jump
Description When the status of the left link is 1, a jump is made to a label (in the current section). To generate a conditional jump, a jump object is linked to a Boolean FFB output. To generate an unconditional jump, the jump object is assigned the value 1 for example, using the AND function. Labels (jump targets) are indicated as text with a colon at the end. This text is limited to 32 characters and must be unique within the entire section. The text must conform to general naming conventions. Jump labels can only be placed between the first two grid points on the left edge of the section. Note: Jump labels may not "cut through" networks, i.e. an assumed line from the jump label to the right edge of the section may not be crossed by any object. This is also valid for links. RETURN objects can not be used in the main program. In a DFB, a RETURN object forces the return to the program which called the DFB. The rest of the DFB section containing the RETURN object is not executed. The next sections of the DFB are not executed. The program which called the DFB will be executed after return from the DFB. If the DFB is called by another DFB, the calling DFB will be executed after return. In a SR, a RETURN object forces the return to the program which called the SR. The rest of the SR containing the RETURN object is not executed. The program which called the SR will be executed after return from the SR.
Label
LABEL:
Return
RETURN
35006144.07 07/2008
317
Link
Description Links are vertical and horizontal connections between FFBs.
OR
Representation
AND
OR
AND
OR
318
35006144.07 07/2008
Programming Notes
Attention should be paid to the following programming notes: Links can be used for any data type. The data types of the inputs/outputs to be linked must be the same. Several links can be connected with one FFB output. Only one may be linked with an FFB input however. Inputs and outputs may be linked to one-another. Linking more than one output together is not possible. That means that no OR connection is possible using links in FBD. An OR function is to be used in this case. Overlapping links with other objects is permitted. Links may not be used to create loops since the sequence of execution in this case cannot be clearly determined in the section. Loops must be created using actual parameters (see Loop Planning, p. 328). To avoid links crossing each other, links can also be represented in the form of connectors. The source and target for the connection are labeled with a name that is unique within the section. The connector name has the following structure depending on the type of source object for the connection: For functions: "Function counter/formal parameter" for the source of the connection
.3 AND IN1 IN2
1
.3OUT >>
OUT
OUT
>> .3OUT
For function blocks: "Instance name/formal parameter" for the source of the connection
FBI_2 TON IN PT
1
OUT ET
OUT
35006144.07 07/2008
319
Text Object
Description Text can be positioned as text objects using FBD Function Block language. The size of these text objects depends on the length of the text. The size of the object, depending on the size of the text, can be extended vertically and horizontally to fill further grid units. Text objects may not overlap with FFBs; however they may overlap with links.
320
35006144.07 07/2008
35006144.07 07/2008
321
Priorities
Example
.15 5 AND .19 6 AND EN .17 10 AND .16 9 NW3 AND .18 11 AND NW4 ENO AND .20 8
.21 7 AND
322
35006144.07 07/2008
.8 AND 6 B
35006144.07 07/2008
323
By using a link instead of a variable the two networks are executed in the proper sequence (see also Original Situation, p. 323).
.4 ..3 1 AND A AND 2
.5 6 AND
.6 3 AND EN ENO
.7 4 AND A
.8 6 AND
324
35006144.07 07/2008
Network Positions
The correct execution sequence can be achieved by changing the position of the networks in the section (see also Original Situation, p. 323).
.6 AND EN 1 ENO .7 AND 2 A
.8 AND 3 B
.4 .3 AND 4 A AND 5
.5 AND B 6
35006144.07 07/2008
325
Explicit Definition
The correct execution sequence can be achieved by explicitly changing the execution sequence of an FFB. To indicate that which FFBs had their execution order changed, the execution number is shown in a black field (see also Original Situation, p. 323).
.4 .3 1 AND A AND 4
.5 6 AND B
.6 2 AND EN ENO
.7 3 AND A
.8 5 AND B
Note: Only one reference of an instance is allowed, e.g. the instance ".7" may only be referenced once.
326
35006144.07 07/2008
FFB Positions
The position of FFBs only influences the execution sequence if more than one FFB is linked to the same output of the "calling" FFB (see also Original Situation, p. 323). In the first network, block positions .4 and .5 are switched. In this case (common origins for both block inputs) the execution sequence of both blocks is switched as well (processed from top to bottom). In the second network, block positions .7 and .8 are switched. In this case (different origins for the block inputs) the execution sequence of the blocks is not switched (processed in the order the block outputs are called).
.5 .3 AND 1 B AND 2
.7 AND 7 A
35006144.07 07/2008
327
Loop Planning
Non-Permitted Loops Configuring loops exclusively via links is not permitted since it is not possible to clearly specify the signal flow (the output of one FFB is the input of the next FFB, and the output of this one is the input of the first). Non-permitted Loops via Links
.5 OR IN1 IN2 1 .6 AND 2
This type of logic must be resolved using feedback variables so that the signal flow can be determined. Feedback variables must be initialized. The initial value is used during the first execution of the logic. Once they have been executed the initial value is replaced by the actual value. Pay attention to the two different types of execution sequences (number in brackets after the instance name) for the two blocks. Loop generated with an actual parameter: Type 1
.5 1 OR IN1 OUT1 IN2 AND OUT1 .6 2
328
35006144.07 07/2008
12
Introduction
Overview This chapter describes the ladder diagram language LD which conforms to IEC 611311. This chapter contains the following topics:
Topic General Information about the LD Ladder Diagram Language Contacts Coils Elementary Functions, Elementary Function Blocks, Derived Function Blocks and Procedures (FFBs) Control Elements Operate Blocks and Compare Blocks Links Text Object Edge Recognition Execution Sequence and Signal Flow Loop Planning Change Execution Sequence Page 330 333 334 336 346 347 349 352 353 359 361 362
35006144.07 07/2008
329
330
35006144.07 07/2008
Representation of an LD Section
%IX20
Representation:
Normally Closed Contact Horizontal Boolean Link Coil
%QX100
%MX50 /
%MX60
Jump
Label (Jump target) NEXT: EN Input ENO Output FFB Link Variable
EN IN1 TRUE 1 AND ENO %IX1.5.4 %IX1.5.5 EN OR ENO A<B C=D EN AND ENO Result1
Error1
Inversion
ST Expression
Literals
Topological Addresses
Link
Crossing
XOR EN IN4 ENO Result2
Error2
35006144.07 07/2008
331
Objects
The objects of the LD programming language help to divide a section into a number of: Contacts (see Contacts, p. 333) Coils (see Coils, p. 334) EFs and EFBs (Elementary Functions (see Elementary Function, p. 336) and Elementary Function Blocks (see Elementary Function Block, p. 337)) DFBs (Derived Function Blocks (see DFB, p. 338)) Procedures (see Procedure, p. 338) Control Elements (see Control Elements, p. 346) and Operation and Comparison blocks (see Operate Blocks and Compare Blocks, p. 347) that represent an extension to IEC 61131-3 These objects can be connected with each other by means of: Links (see Links, p. 349) or Actual Parameters (see Parameters, p. 339) (FFBs only). Comments regarding the section logic can be provided using text objects (see Text Object, p. 352).
Section Size
One LD section consists of a window containing a single page. This page has a grid that divides the section into rows and columns. A width of 11-64 columns and 17-2000 lines can be defined for LD sections. The LD programming language is cell oriented, i.e. only one object can be placed in each cell.
Processing Sequence
The processing sequence of the individual objects in an LD section is determined by the data flow within the section. Networks connected to the left power rail are processed from top to bottom (link to the left power rail). Networks that are independent of each other within the section are processed according to their position (from top to bottom) (see also Execution Sequence and Signal Flow, p. 359). For a description of IEC conformity for the LD programming language, see IEC Conformity (see IEC Compliance, p. 609).
IEC Conformity
332
35006144.07 07/2008
Contacts
Introduction A contact is an LD element that transfers a status on the horizontal link to its right side. This status is the result of a Boolean AND operation on the status of the horizontal link on the left side with the status of the relevant Boolean actual parameter. A contact does not change the value of the relevant actual parameter. Contacts take up one cell. The following are permitted as actual parameters: Boolean variables Boolean constants Boolean addresses (topological addresses or symbolic addresses) ST expression (see Expression, p. 479) delivering a Boolean result (e.g. VarA OR VarB) ST expressions as actual parameters for contacts are a supplement to IEC 61131-3 and must be enabled explicitly Contact Types
Designation Normally open
Description In the case of normally open contacts, the status of the left link is transferred to the right link if the status of the relevant Boolean actual parameter (indicated with xxx) is ON. Otherwise, the status of the right link is OFF. In the case of normally closed contacts, the status of the left link is transferred to the right link if the status of the relevant Boolean actual parameter (indicated with xxx) is OFF. Otherwise, the status of the right link is OFF. With contacts for detection of positive transitions, the right link for a program cycle is ON if a transfer of the relevant actual parameter (labeled by xxx) goes from OFF to ON and the status of the left link is ON at the same time. Otherwise, the status of the right link is 0. Also see Edge Recognition, p. 353. With contacts for detection of negative transitions, the right link for a program cycle is ON if a transfer of the relevant actual parameter (labeled by xxx) goes from ON to OFF and the status of the left link is ON at the same time. Otherwise, the status of the right link is 0. Also see Edge Recognition, p. 353.
Normally closed
xxx /
xxx P
xxx N
35006144.07 07/2008
333
Coils
Introduction A coil is an LD element which transfers the status of the horizontal link on the left side, unchanged, to the horizontal link on the right side. The status is stored in the respective Boolean actual parameter. Normally, coils follow contacts or FFBs, but they can also be followed by contacts. Coils take up one cell. The following are permitted as actual parameters: Boolean variables Boolean addresses (topological addresses or symbolic addresses)
334
35006144.07 07/2008
Coil Types
Designation Coil
Description With coils, the status of the left link is transferred to the relevant Boolean actual parameter (indicated by xxx) and the right link. With negated coils, the status of the left link is copied onto the right link. The inverted status of the left link is copied to the relevant Boolean actual parameter (indicated by xxx). If the left link is OFF, then the right link will also be OFF and the relevant Boolean actual parameter will be ON. With coils that detect positive transitions, the status of the left link is copied onto the right link. The relevant actual parameter of data type EBOOL (indicated by xxx) is 1 for a program cycle, if a transition of the left link from 0 to 1 is made. Also see Edge Recognition, p. 353. With coils that detect negative transitions, the status of the left link is copied onto the right link. The relevant actual Boolean parameter (indicated by xxx) is 1 for a program cycle, if a transition of the left link from 1 to 0 is made. Also see Edge Recognition, p. 353. With set coils, the status of the left link is copied onto the right link. The relevant Boolean actual parameter (indicated by xxx) is set to ON if the left link has a status of ON, otherwise it remains unchanged. The relevant Boolean actual parameter can be reset through the reset coil. Also see Edge Recognition, p. 353. With reset coils, the status of the left link is copied onto the right link. The relevant Boolean actual parameter (indicated by xxx) is set to OFF if the left link has a status of ON, otherwise it remains unchanged. The relevant Boolean actual parameter can be set through the set coil. Also see Edge Recognition, p. 353. With halt coils, if the status of the left link is 1, the program execution is stopped immediately. (With stop coils the status of the left link is not copied to the right link.) With call coils, the status of the left link is copied to the right link. If the status of the left link is ON then the respective sub-program (indicated by xxx) is called. The subroutine to be called must be located in the same task as the calling LD section. Subroutines can also be called from within subroutines. Subroutines are a supplement to IEC 61131-3 and must be enabled explicitly. In SFC action sections, call coils (subroutine calls) are only allowed when Multitoken Operation is enabled.
negated coil
xxx /
Coil for detecting positive transitions Coil for detecting negative transitions Set coil
xxx P
xxx N
xxx S
Reset coil
xxx R
Stop coil
xxx H
Call coil
xxx C
35006144.07 07/2008
335
Elementary Functions, Elementary Function Blocks, Derived Function Blocks and Procedures (FFBs)
Introduction FFB is the generic term for: Elementary Function (EF) (see Elementary Function, p. 336) Elementary Function Block (EFB) (see Elementary Function Block, p. 337) Derived Function Block (DFB) (see DFB, p. 338) Procedure (see Procedure, p. 338) FFBs occupy 1 to 3 columns (depending on the length of the formal parameter names) and 2 to 33 lines (depending on the number of formal parameter rows). Elementary Function Functions have no internal states. If the input values are the same, the value on the output is the same every time the function is called. For example, the addition of two values always gives the same result. . An elementary function is represented graphically as a frame with inputs and one output. The inputs are always represented on the left and the output is always on the right of the frame. The name of the function, i.e. the function type, is displayed in the center of the frame. The execution number (see Execution Sequence and Signal Flow, p. 359) for the function is shown to the right of the function type. The function counter is shown above the frame. The function counter is the sequential number of the function within the current section. Function counters cannot be modified. Elementary Function
.1
1
DIV EN IN1 IN2
ENO OUT
336
35006144.07 07/2008
Elementary function blocks have internal states. If the input values are the same, the value on the output can be different each time the function is called. e.g. for a counter the value on the output is incremented. An elementary function block is represented graphically as a frame with inputs and outputs. The inputs are always represented on the left and the outputs always on the right of the frame. The name of the function block, i.e. the function block type, is displayed in the center of the frame. The instance name is displayed above the frame. Function blocks can have more than one output. The name of the function block, i.e. the function block type, is displayed in the center of the frame. The execution number (see Execution Sequence and Signal Flow, p. 359) for the function block is shown to the right of the function block type. The instance name is displayed above the frame. The instance name serves as a unique identification for the function block in a project. The instance name is created automatically and has the following structure: FBI_n FBI = Function Block Instance n = sequential number of the function block in the project This automatically generated name can be modified for clarification. The instance name (max. 32 characters) must be unique throughout the project and is not casesensitive. The instance name must conform to general naming conventions. Note: To conform to IEC61131-3, only letters are permitted as the first character of the name. If you want to use a numeral as your first character however, this must be enabled explicitly. Elementary Function Block
FBI_1 CTU EN CTU R RV CV 1 ENO Q
35006144.07 07/2008
337
DFB
Derived function blocks (DFBs) have the same properties as elementary function blocks. The user can create them in the programming languages FBD, LD, IL, and/ or ST. The only difference to elementary function blocks is that the derived function block is represented as a frame with double vertical lines. Derived Function Block
FBI_1 1 DFB_EXAMP EN IN1 IN2 IN3 OUT2 ENO OUT1
Procedure
Procedures are functions viewed technically. The only difference to elementary functions is that procedures can occupy more than one output and they support data type VAR_IN_OUT. To the eye, procedures are no different than elementary functions. Procedures are a supplement to IEC 61131-3 and must be enabled explicitly. Procedure
.1 1 PROC_EXAMP EN IN1 IN2 IO1 ENO OUT1 OUT2 IO1
338
35006144.07 07/2008
Parameters
Inputs and outputs are required to transfer values to or from an FFB. These are called formal parameters. Objects are linked to formal parameters; these objects contain the current process states. They are called actual parameters. Formal and actual parameters:
Actual Parameters FBI_1 1 CTU EN Clock %I1.1.3 MUX(1,var1,var2) CTU R PV CV Current_Value ENO Q Output Actual Parameters
Formal Parameters
At program runtime, the values from the process are transferred to the FFB via the actual parameters and then output again after processing. Only one object (actual parameter) of the following types may be linked to FFB inputs: Contact Variable Address Literal ST Expression ST expressions on FFB inputs are a supplement to IEC 61131-3 and must be enabled explicitly. Link The following combinations of objects (actual parameters) can be linked to FFB outputs: one or more coils one or more contacts one variable a variable and one or more connections (but not for VAR_IN_OUT (see VAR_IN_OUT-Variable, p. 345) outputs) an address an address and one or more connections (but not for VAR_IN_OUT (see VAR_IN_OUT-Variable, p. 345) outputs) one or more connections (but not for VAR_IN_OUT (see VAR_IN_OUT-Variable, p. 345) outputs)
35006144.07 07/2008
339
The data type of the object to be linked must be the same as that of the FFB input/ output. If all actual parameters consist of literals, a suitable data type is selected for the function block. Exception: For generic FFB inputs/outputs with data type ANY_BIT, it is possible to link objects of data type INT or DINT (not UINT and UDINT). This is a supplement to IEC 61131-3 and must be enabled explicitly. Example: Allowed:
.1 AND
IntVar1 IntVar2
IN1 IN2
OUT
IntVar3
Not allowed:
.1 AND_WORD
IntVar1 IntVar2
IN1 IN2
OUT
IntVar3
(In this case, AND_INT must be used.) Not all formal parameters have to be assigned an actual parameter. However, this does not apply in the case of negated pins. These must always be assigned an actual parameter. This is also the case with some formal parameter types. These types are shown in the following table.
340
35006144.07 07/2008
FFBs that use actual parameters on the inputs that have not yet received any value assignment, work with the initial values of these actual parameters. If no value is allocated to a formal parameter, then the initial value will be used for executing the function block. If no initial value has been defined then the default value (0) is used. If a formal parameter is not assigned a value and the function block/DFB is instanced more than once, then the subsequent instances are run with the old value. Public Variables In addition to inputs/outputs, some function blocks also provide public variables. These variables transfer statistical values (values that are not influenced by the process) to the function block. They are used for setting parameters for the function block. Public variables are a supplement to IEC 61131-3. The assignment of values to public variables is made using their initial values. Public variables are read via the instance name of the function block and the names of the public variables.
35006144.07 07/2008
341
Example:
FBI_1 D_ACT ED DTIMEL DTIMEA TRIGR UNLOCK REACT 1 ERR ACT
(The function block has the public variables AREA_NR and OP_CTRL.)
Instance Name
Public Variable
.1 AND 1 OUT
FBI_1.OP_CTRL Var2
IN1 IN2
Var3
Private Variables
In addition to inputs, outputs and public variables, some function blocks also provide private variables. Like public variables, private variables are used to transfer statistical values (values that are not influenced by the process) to the function block. Private variables can not be accessed by user program. These type of variables can only be accessed by the animation table. Note: Nested DFBs are declared as private variables of the parent DFB. So their variables are also not accessible through programming, but trough the animation table. Private variables are a supplement to IEC 61131-3.
Programming Notes
Attention should be paid to the following programming notes: FFBs will only be processed when they are directly or indirectly connected to the left bus bar. If the FFB will be conditionally executed, the EN input may be pre-linked through contacts or other FFBs (also see EN and ENO, p. 343). Boolean inputs and outputs can be inverted. Special conditions apply when using VAR_IN_OUT variables (see VAR_IN_OUT-Variable, p. 345). Function block/DFB instances can be called multiple times (also see Multiple Function Block Instance Call, p. 343).
342
35006144.07 07/2008
Function block/DFB instances can be called more than once; other than instances from communication EFBs and function blocks/DFBs with an ANY output but no ANY input: these can only be called once. Calling the same function block/DFB instance more than once makes sense, for example, in the following cases: If the function block/DFB has no internal value or it is not required for further processing. In this case, memory is saved by calling the same function block/DFB instance more than once since the code for the function block/DFB is only loaded once. The function block/DFB is then handled like a "Function". If the function block/DFB has an internal value and this is supposed to influence various program segments, for example, the value of a counter should be increased in different parts of the program. In this case, calling the same function block/DFB means that temporary results do not have to be saved for further processing in another part of the program.
EN and ENO
One EN input and one ENO output can be used in all FFBs. If the value of EN is equal to "0" when the FFB is invoked, the algorithms defined by the FFB are not executed and ENO is set to "0". If the value of EN is equal to "1" when the FFB is invoked, the algorithms defined by the FFB will be executed. After the algorithms have been executed successfully, the value of ENO is set to "1". If an error occurs when executing these algorithms, ENO is set to "0". If ENO is set to "0" (caused by EN=0 or an error during execution): Function blocks EN/ENO handling with function blocks that (only) have one link as an output parameter:
FUNCBLOCK_1 EN IN1 IN2 ENO OUT FUNCBLOCK_2 EN IN1 IN2 ENO OUT
If EN of FUNCBLOCK_1 is set to "0", the link on output OUT of FUNCBLOCK_1 maintains the old status it had during the last correctly executed cycle. EN/ENO handling with function blocks that have one variable and one link as output parameters:
FUNCBLOCK_1 EN IN1 IN2 ENO OUT OUT1 FUNCBLOCK_2 EN IN1 IN2 ENO OUT
35006144.07 07/2008
343
If EN of FUNCBLOCK_1 is set to "0", the link on output OUT of FUNCBLOCK_1 maintains the old status it had during the last correctly executed cycle. The OUT1 variable on the same pin either retains its previous status or can be changed externally without influencing the link. The variable and the link are saved independently of each other. Functions/Procedures As defined in IEC61131-3, the outputs from deactivated functions (EN input set to "0") are undefined. (The same applies to procedures.) Here nevertheless an explanation of the output statuses in this case: EN/ENO handling with function/procedure blocks that (only) have one link as an output parameter:
FUNC_PROC_1 EN IN1 IN2 ENO OUT EN IN1 IN2 FUNC_PROC_2 ENO OUT
If EN of FUNC_PROC_1 is set to "0", the link on output OUT of FUNC_PROC_1 maintains the old status it had during the last correctly executed cycle. EN/ENO handling with function/procedure blocks that have one variable and one link as output parameters:
FUNC_PROC_1 EN IN1 IN2 ENO OUT OUT1 EN IN1 IN2 FUNC_PROC_2 ENO OUT
If EN of FUNC_PROC_1 is set to "0", the link on output OUT of FUNC_PROC_1 maintains the old status it had during the last correctly executed cycle. The OUT1 variable on the same pin either retains its previous status or can be changed externally without influencing the link. The variable and the link are saved independently of each other. The output behavior of the FFBs does not depend on whether the FFBs are invoked without EN/ENO or with EN=1. Note: For disabled function blocks (EN = 0) with an internal time function (e.g. function block DELAY), time seems to keep running, since it is calculated with the help of a system clock and is therefore independent of the program cycle and the release of the block.
344
35006144.07 07/2008
VAR_IN_OUTVariable
FFBs are often used to read a variable at an input (input variables), to process it and to output the altered values of the same variable (output variables). This special type of input/output variable is also called a VAR_IN_OUT variable. The link between input and output variables is represented by a line in the FFB. VAR_IN_OUT variable
.1 1 EXAMP1 EN Input1 Input2 Comb_IN_OUT IN1 IN2 IO1 ENO OUT1 OUT2 IO1 Output1 Output2 Comb_IN_OUT
The following special features are to be noted when using FFBs with VAR_IN_OUT variables. All VAR_IN_OUT inputs must be assigned a variable. Via graphical links only VAR_IN_OUT outputs with VAR_IN_OUT inputs can be connected. Only one graphical link can be connected to a VAR_IN_OUT input/output. A combination of variable/address and graphical connections is not possible for VAR_IN_OUT outputs. No literals or constants can be connected to VAR_IN_OUT inputs/outputs. No negations can be used on VAR_IN_OUT inputs/outputs. Different variables/variable components can be connected to the VAR_IN_OUT input and the VAR_IN_OUT output. In this case the value of the variables/variable component on the input is copied to the at the output variables/variable component.
35006144.07 07/2008
345
Control Elements
Introduction Control elements are used for executing jumps within an LD section and for returning from a subroutine (SRx) or derived function block (DFB) to the main program. Control elements take up one cell. Control Elements
Designation Jump
Description When the status of the left link is 1, a jump is made to a label (in the current section). To generate an unconditional jump, the jump object must be placed directly on the left power rail. To generate a conditional jump, a jump object is placed at the end of a series of contacts. Labels (jump targets) are indicated as text with a colon at the end. This text is limited to 32 characters and must be unique within the entire section. The text must conform to general naming conventions. Jump labels can only be placed in the first cell directly on the power rail. Note: Jump labels may not "cut through" networks, i.e. an assumed line from the jump label to the right edge of the section may not be crossed by any object. This also applies to Boolean links and FFB links. RETURN objects can not be used in the main program. In a DFB, a RETURN object forces the return to the program which called the DFB. The rest of the DFB section containing the RETURN object is not executed. The next sections of the DFB are not executed. The program which called the DFB will be executed after return from the DFB. If the DFB is called by another DFB, the calling DFB will be executed after return. In a SR, a RETURN object forces the return to the program which called the SR. The rest of the SR containing the RETURN object is not executed. The program which called the SR will be executed after return from the SR.
Label
LABEL:
Return
RETURN
346
35006144.07 07/2008
Objects
Designation Operate block
Description When the status of the left link is 1, the ST instruction in the block is executed. All ST instructions (see Instructions, p. 479) are allowed except the control instructions: (RETURN, JUMP, IF, CASE, FOR etc.) For operate blocks, the state of the left link is passed to the right link (regardless of the result of the ST instruction). A block can contain up to 4096 characters. If not all characters can be displayed then the beginning of the character sequence will be followed by suspension points (...). An operate block takes up 1 line and 4 columns. Example:
In1 Instruction1; In2 Instruction2; Out1
RES := <FCT_NAME>(...)
In the example, Instruction1 is executed if In1=1. Instruction2 is executed if In1=1 and In2=1 (the result of Instruction1 has no meaning for the execution of Instruction2). Out1 becomes 1 if In1=1 and In2=1 (the results of Instruction1 and Instruction2 have no meaning for the status of Out1).
35006144.07 07/2008
347
Representation
COMPARE
Description Horizontal compare blocks used to execute a compare expression (<, >, <=, >=, =, <>) in the ST programming language. (Note: The same functionality is also possible using ST expressions (see Expression, p. 479).) A compare block performs an AND of its left In-pin and the result of its compare condition and assigns the result of this AND unconditionally to its right Out-pin. For example, if the state of the left link is 1 and the result of the comparison is 1, the state of the right link is 1. A horizontal matching block can contain up to 4096 characters. If not all characters can be displayed then the beginning of the character sequence will be followed by suspension points (...). A horizontal matching block takes up 1 line and 2 columns. Example:
In1 Compare1; In2 Compare2; Out1
<obj1 OP obj2>
In the example, Compare1 is executed if In1=1. Compare2 is executed if In1=1 , In2=1 a the result of Compare1=1. Out1 becomes 1 if In1=1, In2=1, the result of Compare1=1 and the result of Compare2=1.
348
35006144.07 07/2008
Links
Description Links are connections between LD objects (contacts, coils and FFBs etc.). There are 2 different types of links: Boolean Links Boolean links consist of one or more segments linking Boolean objects (contacts, coils) with one another. There are different types of Boolean links as well: Horizontal Boolean Links Horizontal Boolean links enable sequential contacts and coil switching. Vertical Boolean Links Vertical Boolean links enable parallel contacts and coil switching. FFB Links FFB connections are a combination of horizontal and vertical segments that connect FFB inputs/outputs with other objects. Connections:
Horizontal Boolean Link
XXX EN ENO EN
XXX ENO
FFB Link
XXX EN XXX EN ENO ENO
35006144.07 07/2008
349
Attention should be paid to the following general programming notes: The data types of the inputs/outputs to be linked must be the same. Links between parameters with variable lengths (e.g. ANY_ARRAY_INT) are not allowed. Several links can be connected with one output (right-hand side of one contact, one coil or one FFB output). However, only one link can be connected with an input (left-hand side of one contact, one coil or one FFB output). Unconnected contacts, coils and FFB inputs are specified as "0" by default. Links may not be used to create loops since the sequence of execution in this case cannot be clearly determined in the section. Loops must be created using actual parameters (see Non-Permitted Loops, p. 361). Notes on Programming Boolean Links: Overlapping Boolean links with other objects is not permitted. The signal flow (power flow) is from left to right for Boolean links. Therefore, backwards links are not allowed. If two Boolean links are crossed, the links are connected automatically. Since crossing Boolean links is not possible, links are not indicated in any special way. Notes on Programming FFB Links: At least one side of an FFB link must be connected with an FFB input or output. To differentiate them from Boolean links, FFB links are shown with a doubly thick line. The signal flow (power flow) in FFB links is from the FFB output to the FFB input, no matter which direction they are made in. Therefore, backwards links are allowed. Only FFB inputs and FFB outputs may be linked to one-another. Linking more than one FFB outputs together is not possible. That means that no OR connection is possible in LD using FFB links. Overlapping FFB links with other objects is permitted. Crossing FFB links is also permitted. Crossed links are indicated by a "broken" link.
AND OR
AND
OR
Connection points between more FFB links are shown with a filled circle.
350
35006144.07 07/2008
OR
AND
OR
To avoid links crossing each other, FFB links can also be represented in the form of connectors. The source and target for the FFB connection are labeled with a name that is unique within the section. The connector name has the following structure depending on the type of source object for the connection: For functions: "Function counter/formal parameter" for the source of the connection
.3
1
.4
2
AND OUT
IN2
IN2
For function blocks: "Instance name/formal parameter" for the source of the connection
.3
1
.4
2
AND OUT
PT
IN2
IN2
Vertical Links
The "Vertical Link" is special. The vertical link serves as a logical OR. With this form of the OR link, 32 inputs (contacts) and 64 outputs (coils, links) are possible.
35006144.07 07/2008
351
Text Object
Introduction Text can be positioned as text objects in the Ladder Diagram (LD). The size of these text objects depends on the length of the text. The size of the object, depending on the size of the text, can be extended vertically and horizontally to fill further grid units. Text objects may overlap with other objects.
352
35006144.07 07/2008
Edge Recognition
Introduction During the edge recognition, a bit is monitored during a transition from 0 -> 1 (positive edge) or from 1 -> 0 (negative edge). For this, the value of the bit in the previous cycle is compared to the value of the bit in the current cycle. In this case, not only the current value, but also the old value, are needed. Instead of a bit, 2 bits are therefore needed for edge recognition (current value and old value). Because the data type BOOL only offers one single bit (current value), there is another data type for edge recognition, EBOOL (expanded BOOL). In addition to edge recognition, the data type EBOOL provides an option for forcing. It must also be saved whether forcing the bit is enabled or not. The data type EBOOL saves the following data: the current value of the bit in Value bit the old value of the bit in History bit (the content of the value bit is copied to the History bit at the beginning of each cycle) Information whether forcing of the bit is enabled in Force-Bit (0 = Forcing disabled, 1 = Forcing enabled) Recognizing Positive Edges A contact to recognize positive edges is used to recognize positive edges. With this contact, the right connection for a program cycle is 1 when the transition of the associated actual parameter (A) is from 0 to 1 and, at the same time, the status of the left connection is 1. Otherwise, the status of the right link is 0. In the example, a positive edge of the variable A is supposed to be recognize and B should therefore be set for a cycle.
A P B
35006144.07 07/2008
353
Anytime the value bit of A equals 1 and the history bit equals 0, B is set to 1 for a cycle (cycle 1, 4, and 9).
(1) (2) (3) (4) (5) (6) (7) (8) (9) (10)
A: Value bit
A: History Bit
B: Value bit
A contact to recognize negative edges is used to recognize negative edges. With this contact, the right connection for a program cycle is 1 when the transition of the associated actual parameter (A) is from 1 to 0 and, at the same time, the status of the left connection is 1. Otherwise, the status of the right link is 0. In the example, a negative edge of the variable A is supposed to be recognize and B should therefore be set for a cycle.
A N B
Anytime the value bit of A equals 0 and the history bit equals 1, B is set to 1 for a cycle (cycle 2 and 8).
(1) (2) (3) (4) (5) (6) (7) (8) (9) (10)
A: Value bit
A: History Bit
B: Value bit
354
35006144.07 07/2008
Forcing Bits
When forcing bits, the value of the variable determined by the logic will be overwritten by the force value. In the example, a negative edge of the variable A is supposed to be recognized and B should therefore be set for a cycle.
A N B
Anytime the value bit or force bit of A equals 0 and the history bit equals 1, B is set to 1 for a cycle (cycle 1 and 8).
(1) (2) (3) (4) (5) (6) (7) (8) (9) (10)
A: Value bit
A: Force Bit
A: History Bit
B: Value bit
35006144.07 07/2008
355
Forcing of coils can cause the loss of edge recognition. In the example, when A equals 1, B should equal 1, and with a rising edge from A, the coil B will be set for a cycle. In this example, the variable B is first assigned to the coil, and then to the link to recognize positive edges.
A B
B P
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
B: Value bit
B: Force-Bit
B: History Bit
C: Value bit
At the beginning of the second cycle, the value bit of B equals 0. When forcing B within this cycle, the force bit and value bit are set to 1. While processing the first line of the logic in the third cycle, the history bit of the coil (B) will also be set to 1. Problem: During edge recognition (comparison of the value bit and the history bit) in the second line of the logic, no edge is recognized, because due to the updating, the value bit and history bit on line 1 of B are always identical.
356
35006144.07 07/2008
Solution: In this example, the variable B is first assigned to the link to recognize positive edges and then the coil.
B P A B C
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
B: Value bit
B: Force-Bit
B: History Bit
C: Value bit
At the beginning of the second cycle, the value bit of B equals 0. When forcing B within this cycle, the force bit and value bit are set to 1. While processing the first line of the logic in the third cycle, the history bit of the link (B) will remain set to 0. Edge recognition recognizes the difference between value bits and history bit and sets the coil (C) to 1 for one cycle.
35006144.07 07/2008
357
Using Set Coil or Reset Coil Can Cause the Loss of Edge Recognition
Using set coil or reset coil can cause the loss of edge recognition with EBOOL variables. The variable above the set/reset coil (variable C in the example) is always affected by the value of the left link. If the left link is 1, the value bit (variable C in the example) is copied to the history bit and the value bit is set to 1. If the left link is 0, the value bit (variable C in the example) is copied to the history bit, but the value bit is not changed. This means that whatever value the left link has before the set or reset coil, the history bit is always updated. In the example, a positive edge of the variable C should be recognized and set D for a cycle.
Code line 1 Behavior in LD Original situation: C = 0, History bit = 0
A B C S
A = 1, B = 1, C = 1, History bit = 0 2
A B C R
A = 1, B = 1, C = 1, History = 1 3
C P D
C = 1, History = 1 D = 0, as the value bit and history bit of C are identical. The rising edge of C, shown in code line 1, is not recognized by the code in line 2, as this forces the history bit to be updated. (If the condition is FALSE, the present value of C is again assigned to C, see ELSE statement in code line 2 in ST example.)
358
35006144.07 07/2008
35006144.07 07/2008
359
Priorities
Example
Note: The execution numbers for contacts and coils is not shown. They are only shown in the graphic to provide a better overview.
360
35006144.07 07/2008
Loop Planning
Non-Permitted Loops Creating loops using links alone is not permitted because it is not possible to clearly define the signal flow (the output of one FFB is the input of the next FFB, and the output of this one is the input of the first again). Non-permitted loops via links:
.5 1 AND EN IN1 IN2 AND EN .6 2
ENO
ENO
This type of logic must be generated using feedback variables so that the signal flow can be determined. Feedback variables must be initialized. The initial value is used during the first execution of the logic. Once they have been executed the initial value is replaced by the actual value. Pay attention to the two different types of execution sequences (number in brackets after the instance name) for the two blocks. Loop generated with an actual parameter: Type 1
.5 1 AND EN IN1 OUT1 IN2 .6 2 EN
ENO
ENO
OUT1
ENO
ENO
35006144.07 07/2008
361
362
35006144.07 07/2008
Original Situation
The following representation shows two networks for which the execution sequences are only defined by their position within the section, without taking into account that block 0.4/0.5 and 0.7/0.8 require another execution sequence.
.1 ADD EN 1 .3 ENO ADD EN 3 EN ENO A .4 ADD 4 ENO
.6 ADD EN 6 ENO
.7 ADD EN 7 ENO A
.8 ADD EN 8 ENO B
35006144.07 07/2008
363
By using a link instead of a variable the two networks are run in the proper sequence (see also Original Situation, p. 363).
.1 ADD EN 1 .3 ENO ADD EN ADD 3 ENO A EN .4 7 ENO
.6 ADD EN 4 ENO
.7 ADD EN 5 ENO A
.8 ADD EN 6 ENO
364
35006144.07 07/2008
Network Positions
The correct execution sequence can be achieved by changing the position of the networks in the section (see also Original Situation, p. 363).
.6 ADD EN 1 ENO EN .7 ADD 2 ENO A
.8 ADD EN 3 ENO B
.1 ADD EN 4 .3 ENO ADD EN .2 ADD EN 5 ENO EN B .5 ADD 8 ENO 6 EN ENO A ADD .4 7 ENO
35006144.07 07/2008
365
Positioning of Objects
The position of objects can only have an influence on the execution order if several inputs (left link of Contacts/Coils, FFB inputs) are linked with the same output of the object "to be called" (right link of Contacts/Coils, FFB outputs) (see also Original Situation, p. 363). Original situation:
.1 3 ADD EN ENO A
.2 4 ADD EN ENO B
.3 11 ADD EN ENO
.4 12 ADD EN ENO E
.5 13 .6 14 ADD EN ENO G
H
ADD EN ENO F
In the first network, block positions 0.1 and 0.2 are switched. In this case (common origins for both block inputs) the execution sequence of both blocks is switched as well (processed from top to bottom). The same applies when switching coils C and D in the second network.
366
35006144.07 07/2008
In the third network, block positions 0.4 and 0.5 are switched. In this case (different origins for the block inputs) the execution sequence of the blocks is not switched (processed in the sequence that the block outputs are called in). The same applies when switching coils G and H in the last network.
.1 3 ADD EN ENO A
.2 4 ADD EN ENO B
.4 .6 14 ADD EN ENO G
H
12 ADD EN ENO F
35006144.07 07/2008
367
368
35006144.07 07/2008
13
Introduction
Overview What's in this Chapter? This chapter describes the SFC sequence language which conforms to IEC 611311. This chapter contains the following sections:
Section 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 13.10 Topic General Information about SFC Sequence Language Steps and Macro Steps Actions and Action Sections Transitions and Transition Sections Jump Link Branches and Merges Text Objects Single-Token Multi-Token Page 370 376 385 391 396 397 398 401 402 413
35006144.07 07/2008
369
13.1
Introduction
Overview What's in this Section? This section contains a general overview of the SFC sequence language. This section contains the following topics:
Topic General Information about SFC Sequence Language Link Rules Page 371 375
370
35006144.07 07/2008
35006144.07 07/2008
371
Appearance:
T1
Transition condition (Boolean Variable) S_4_5 Parallel branch Step (associated to an action)
S_4_2
T_4_2 Transition condition (return value of a transition section) S_4_3 %I10.1 %I10.2 %I10.3
Alternative branch
S_4_6
S_4_9
S_4_7 Jump
T_4_3 %I10.4 > S_4_4 S_4_7 %I10.5 Alternative junction Transition condition (Topological Boolean address)
Return_Var
372
35006144.07 07/2008
An SFC section is a "Status Machine", i.e. the status is created by the active step and the transitions pass on the switch/change behavior. Steps and transitions are linked to one another through directional links. Two steps can never be directly linked and must always be separated by a transition. The active signal status processes take place along the directional links and are triggered by switching a transition. The direction of the chain process follows the directional links and runs from the end of the preceding step to the top of the next step. Branches are processed from left to right. Every step has zero or more actions. A transition condition is necessary for every transition. The last transition in the chain is always connected to another step in the chain (via a graphic link or jump symbol) to create a closed loop. Step chains are therefore processed cyclically.
SFCCHART_STAT E Variable
When an SFC section is created, it is automatically assigned a variable of data type SFCCHART_STATE. The variable that is created always has the name of the respective SFC section. This variable is used to assign the SFC control blocks to the SFC section to be controlled.
Token Rule
The behavior of an SFC network is greatly affected by the number of tokens selected, i.e. the number of active steps. Explicit behavior is possible by using one token (single token). (Parallel branches each with an active token [step] per branch as a single token). This corresponds to a step chain as defined in IEC 61131-3). A step chain with a number of maximum active steps (Multi Token) defined by the user increases the degree of freedom. This reduces/eliminates the restrictions for enforcing unambiguousness and non-blocking and must be guaranteed by the user. Step chains with Multi Token do not conform to IEC 61131-3.
35006144.07 07/2008
373
Section Size
An SFC section consists of a single-page window. Because of performance reasons, it is strongly recommended to create less than 100 SFC sections in a project (makro section are not counted). The window has a logical grid of 200 lines and 32 columns. Steps, transitions and jumps each require a cell. Branches and links do not require their own cells, they are inserted in the respective step or transition cell. A maximum of 1024 steps can be placed per SFC section (including all their macro sections). A maximum of 100 steps can be active (Multi Token) per SFC section (including all their macro sections) . A maximum of 64 steps can be set manually at the same time per SFC section (Multi Token). A maximum of 20 actions can be assigned to each SFC step. The nesting depth of macros, i.e. macro steps within macro steps, is to 8 levels. For a description of the extent to which the SFC programming language conforms to IEC, see IEC Conformity (see IEC Compliance, p. 609).
IEC Conformity
374
35006144.07 07/2008
Link Rules
Link Rules The table indicates which object outputs can be linked with which object inputs.
From object output of To object input of Step Transition Alternative Branch Parallel joint Transition Step Jump Parallel Branch Alternative joint Alternative Branch Alternative joint Transition Step Jump Parallel Branch Alternative joint Parallel Branch Step Jump Alternative joint (only with Multi-Token (see Multi-Token, p. 413)) Parallel joint Transition Alternative branch (only with Multitoken (see Multi-Token, p. 413)) Alternative joint
35006144.07 07/2008
375
13.2
Introduction
Overview
This section describes the step and macro step objects of the SFC sequence language. This section contains the following topics:
Topic Step Macro Steps and Macro Sections Page 377 381
376
35006144.07 07/2008
Step
Step Types
Type "Normal" Step
S_1_2
Initial step
S_1_1
Macro Step
Input step
MS_1_1_IN
Output step
MS_1_1_OUT
Step Names
When creating a step, it is assigned with a suggested number. The suggested number is structured as follows S_i_j, whereas i is the (internal) current number of the section and j is the (internal) current step number in the current section. You can change the suggested numbers to give you a better overview. Step names (maximum 32 characters) must be unique over the entire project, i.e. no other step, variable or section etc. may exist with the same name. There are no case distinctions. The step name must correspond with the standardized name conventions.
35006144.07 07/2008
377
Step Times
Each step can be assigned a minimum supervision time, a maximum supervision time and a delay time: Minimum Supervision Time The minimum supervision time sets the minimum time for which the step should normally be active. If the step becomes inactive before this time has elapsed, an error message is generated. In animation mode, the error is additionally identified by a colored outline (yellow) around the step object. If no minimum supervision time or a minimum supervision time of 0 is entered, step supervision is not carried out. The error status remains the same until the step becomes active again. Maximum Supervision Time The maximum supervision time specifies the maximum time in which the step should normally be active. If the step is still active after this time has elapsed, an error message is generated. In animation mode, the error is additionally identified by a colored outline (pink) around the step object. If no maximum supervision time or a maximum supervision time of 0 is entered, step supervision is not carried out. The error status remains the same until the step becomes inactive. Delay Time The delay time (step dwell time) sets the minimum time for which the step must be active.
Note: The defined times apply for the step only, not for the allocated actions. Individual times can be defined for these.
The following formula is to be used for defining/determining these times: Delay time< minimum supervision time< maximum supervision time There are 2 ways to assign the defined values to a step: As a duration literal Use of the data structure SFCSTEP_TIMES
378
35006144.07 07/2008
SFCSTEP_TIME S Variable
Every step can be implicitly allocated a variable of data type SFCSTEP_TIMES. The elements for this data structure can be read from and written to (read/write). The data structure is handled the same as any other data structure, i.e. they can be used in variable declarations and therefore accessing the entire data structure (e.g. as FFB parameter) is possible. Structure of the Data Structure: Element Name "VarName".delay "VarName".min "VarName".max Data type TIME TIME TIME Description Delay Time Minimum Supervision Time Maximum Supervision Time
35006144.07 07/2008
379
SFCSTEP_STAT E Variable
Every step is implicitly allocated a variable of data type SFCSTEP_STATE. This step variable has the name of the allocated step. The elements for this data structure can only be read (read only). You can see the SFCSTEP_STATE variables in the Data Editor. The Comment for a SFCSTEP_STATE variable is the comment entered as a property of the step itself. Please refer to "Defining the properties of steps" (See Unity Pro 4.0, Operating Modes, Defining the properties of steps) in the Unity Pro Operating Modes Manual. The data structure cannot be used in variable declarations. Therefore, accessing the entire data structure (e.g. as FFB parameter) is not possible. Structure of the Data Structure:
Element Name "StepName".t Data type TIME Description Current dwell time in the step. If the step is deactivated, the value of this element is retained until the step is activated again. 1: Step active 0: Step inactive This element is a supplement to IEC 61131-3. 1: Underflow of minimum supervision time 0: No underflow of minimum supervision time The element is automatically reset in the following cases: If the step is activated again If the sequence control is reset If the command button Reset Time Error is activated This element is a supplement to IEC 61131-3. 1: Overflow of maximum supervision time 0: No overflow of maximum supervision time The element is automatically reset in the following cases: If the step is exited If the sequence control is reset If the command button Reset Time Error is activated
"StepName".x "StepName".tminErr
BOOL BOOL
"StepName".tmaxErr
BOOL
380
35006144.07 07/2008
Macro steps have the following properties: Macro steps can be positioned in "Sequence Control" sections and in macro sections. The number of macro steps is unlimited. The nesting depth, i.e. macro steps within macro steps is to 8 levels. Each macro step is implicitly allocated a variable of data type SFCSTEP_STATE, see SFCSTEP_STATE Variable, p. 380. Macro steps can be allocated a variable of data type SFCSTEP_TIMES, see SFCSTEP_TIMES Variable, p. 379. Macro steps can NOT be allocated with actions. Each macro step can be replaced with the sequence string in the allocated macro section. Macro steps are a supplement to IEC 61131-3 and must be enabled explicitly. Input Step Every macro section begins with an input step. Representation of an input step:
MS_1_1_IN
Input steps have the following properties: Input steps are automatically placed in macro sections by the SFC editor. Only 1 individual input step is placed for each macro section. An input step cannot be deleted, copied or inserted manually. Each input step is implicitly allocated a variable of data type SFCSTEP_STATE, see SFCSTEP_STATE Variable, p. 380. Input steps can be allocated a variable of data type SFCSTEP_TIMES, see SFCSTEP_TIMES Variable, p. 379. Input steps can be allocated actions.
35006144.07 07/2008
381
Output Step
Every macro section ends with an output step. Representation of an output step:
MS_1_1_OUT
Output steps have the following properties: Output steps are automatically placed in macro sections by the SFC editor. Only 1 individual output step is placed for each macro section. An output step cannot be deleted, copied or inserted manually. Output steps can NOT be allocated with actions. Output steps can only be assigned a delay time. Assigning supervision times is not possible, see Step Times, p. 378. Macro Section A macro section consists of a single sequence string having principally the same elements as a "sequence control" section (e.g. steps, initial step[s], macro steps, transitions, branches, joints, etc.). Additionally, each macro section contains an input step at the beginning and an output step at the end. Each macro step can be replaced with the sequence string in the allocated macro section. Therefore, macro sections can contain 0, 1 or more initial steps, see also Step Types, p. 377. Single-Token 0 Initial steps are used in macro sections, if there is already an initial step in the higher or lower section. 1 Initial step is used in macro sections, if there are no initial steps in the higher or lower section. Multi-Token A maximum of 100 initial steps can be placed per section (including all their macro sections).
382
35006144.07 07/2008
S_1_1
MS_1_1_IN
MS_1_2_IN
MS_1_1
S_1_6
MS_1_2
S_1_11
S_1_3
S_1_7
S_1_9
MS_1_2_OUT
MS_1_1_OUT
The name of the macro section is identical to the name of the macro step that it is called from. If the name of the macro step is changed then the name of the respective macro section is changed automatically. A macro section can only be used once. Macro Step Processing Macro Step Processing:
Phase 1 2 Description A macro step is activated if the previous transition condition is TRUE. At the same time, the input step in the macro section is activated. The sequence string of the macro section is processed. The macro step remains active as long as at least one step in the macro section is active. If the output step of the macro section is active then the transitions following the macro step are enabled. The macro step becomes inactive when the output step is activated which causes the following transition conditions to be enabled and the transition condition to be TRUE. At the same time, the output step in the macro section is activated.
3 4
35006144.07 07/2008
383
Step Names
When creating a step, it is assigned with a suggested number. Meanings of the Suggested Numbers:
Suggested Number Description MS_i_j MS = Macro Step i = (internal) current (sequential) number of the current section j = (internal) current (sequential) macro step number of the current section MS = Macro Step k = (internal) current (sequential) number of the calling section l = (internal) current (sequential) macro step number of the calling section IN = Input Step MS = Macro Step k = (internal) current (sequential) number of the calling section l = (internal) current (sequential) macro step number of the calling section OUT = Output Step S = Step k = (internal) current (sequential) number of the calling section m = (internal) current (sequential) step number of the calling section
Input step
MS_k_l_IN
Output step
MS_k_l_OUT
S_k_m
You can change the suggested numbers to give you a better overview. Step names (maximum 28 characters for macro step names, maximum 32 characters for step names) must be unique within the entire project, i.e. no other step, variable or section (with the exception of the name of the macro section assigned to the macro step) etc. may exist with the same name. There are no case distinctions. The step name must correspond with the standardized name conventions. If the name of the macro step is changed then the name of the respective macro section and the steps within it are changed automatically. For example If MS_1_1 is renamed to MyStep then the step names in the macro section are renamed to MyStep_IN, MyStep_1, ..., MyStep_n, MyStep_OUT.
384
35006144.07 07/2008
13.3
Introduction
Overview
This section describes the actions and action sections of the SFC sequence language. This section contains the following topics:
Topic Action Action Section Qualifier Page 386 388 389
35006144.07 07/2008
385
Action
Introduction Actions have the following properties: An action can be a Boolean variable (action variable (see Action Variable, p. 387)) or a section (action section (see Action Section, p. 388)) of programming language FBD, LD, IL or ST. A step can be assigned none or several actions. A step which is assigned no action has a waiting function, i.e. it waits until the assigned transition is completed. If more than one action is assigned to a step they are processed in the sequence in which they are positioned in the action list field. Exception: Independent of their position in the action list field, actions with the qualifier (see Available Qualifiers, p. 389) P1 are always processed first and actions with the qualifier P0 are processed last. The control of actions is expressed through the use of qualifiers (see Qualifier, p. 389). A maximum of 20 actions can be assigned to each step. The action variable that is assigned to an action can also be used in actions from other steps. The action variable can also be used for reading or writing in any other section of the project (multiple assignment). Actions that are assigned an qualifier with duration can only be activated one time. Only Boolean variables/addresses or Boolean elements of multi-element variables are allowed as action variables. Actions have unique names. The name of the action is either the name of the action variable or the name of the action section.
386
35006144.07 07/2008
Action Variable
The following are authorized as action variables: Address of data type BOOL An action can be assigned to a hardware output using an address. In this case, the action can be used as enable signal for a transition, as input signal in another section and as output signal for the hardware. Simple variable or element of a multi-element variable of data type BOOL The action can be used as an input signal with assistance from a variable in another section. Unlocated Variable With unlocated variables, the action can be used as enable signal for a transition and as input signal in another section. Located Variable With located variables the action can be used as an enabling signal for a transition, as an input signal in another section and as an output signal for the hardware. If an address or a variable is used as an action then that name (e.g. %Q10.4, Variable1) is used as the action name. If an action section is used as an action then the section name is used as the action name. Action names (maximum 32 characters) must be unique over the entire project, i.e. no other transition, variable or section etc. may exist with the same name. There are no case distinctions. The action name must correspond with the standardized name conventions.
Action Names
35006144.07 07/2008
387
Action Section
Introduction An action section can be created for every action. This is a section which contains the logic of the action and it is automatically linked with the action. The name of the action section is always identical to the assigned action, see Action Names, p. 387. FBD, LD, IL and ST are possible as programming languages for action sections.
Action sections have the following properties: Action sections can have any amount of outputs. Subroutine calls are only possible in action sections when Multitoken operation is enabled. Note: The called subroutines are not affected by the controller of the sequence string, i.e. the qualifier assigned to the called action section does not affect the subroutine the subroutine also remains active when the called step is deactivated No diagnosis functions, diagnosis function blocks or diagnosis procedures may be used in action sections. Action sections can have any amount of networks. Action sections belong to the SFC section in which they were defined and can be assigned any number of actions within this SFC section (including all of their macro sections). Action sections which are assigned an qualifier with duration, can only be activated one time. Action sections belong to the SFC section that they were defined in. If the respective SFC section is deleted then all action sections of this SFC section are also deleted automatically. Action sections can be called exclusively from actions.
388
35006144.07 07/2008
Qualifier
Introduction Each action that is linked to a step must have an qualifier which defines the control for that action. The following qualifiers are available:
Meaning Not Stored Overriding reset Description If the step is active then action is 1 and if the step is inactive the action is 0. The action, which is set in another step with the qualifier S, is reset. The activation of any action can also be prevented. Note: Qualifiers are automatically declared as unbuffered. This means that the value is reset to 0 after stop and cold restart, e.g. when voltage is on/off. Should a buffered output be required, please use the RS or SR function block from the standard block library. The set action also remains active, when the associated step is inactive. The action only becomes inactive when it is reset in another step in the current sequence string using the qualifier R, i.e. resetting the action from another section is not possible for example.
Available Qualifiers
Qualifier N / None R
Set (saved)
Section_1
S_1_1 S A1
S_1_2
S_1_3
A1
S_1_1 S_1_2 S_1_3 Note: Qualifiers are automatically declared as unbuffered. This means that the value is reset to 0 after stop and cold restart, e.g. when voltage is on/off. Should a buffered output be required, please use the RS or SR function block from the standard block library. Note: A maximum of 100 actions are permitted using the S qualifier per SFC Section.
35006144.07 07/2008
389
Qualifier L
Description If the step is active, the action is also active. After the process of the time duration, defined manually for the action, the action returns to 0, even if the step is still active. The action also becomes 0 if the step is inactive. Note: For this qualifier, an additional duration of data type TIME must be defined. If the step is active, the internal timer is started and the action becomes 1 after the process of the time duration, which was defined manually for the action. If the step becomes inactive after that, the action becomes inactive as well. If the step becomes inactive before the internal time has elapsed then the action does not become active. Note: For this qualifier, an additional duration of data type TIME must be defined. If the step becomes active, the action becomes 1 and this remains for one program cycle, independent of whether or not the step remains active. If the step becomes active, the internal timer is started and the action becomes active after the process of the manually defined time duration. The action first becomes inactive again when qualifier R is used for a reset in another step. If the step becomes inactive before the internal time has elapsed then the action does not become active. Note: For this qualifier, an additional duration of data type TIME must be defined. If the step becomes active (0->1-edge), the action becomes 1 and this remains for one program cycle, independent of whether or not the step remains active. Note: Independent of their position in the action list field, actions with the qualifier P1 are always processed first, see Action, p. 386 as well. If the step becomes active (1->0-edge), the action becomes 1 and this remains for one program cycle. Note: Independent of their position in the action list field, actions with the qualifier P0 are always processed last, see Action, p. 386 as well.
Delayed
P DS
P1
P0
390
35006144.07 07/2008
13.4
Introduction
Overview
This section describes the transition objects and transition sections of the SFC sequence language. This section contains the following topics:
Topic Transition Transition Section Page 392 394
35006144.07 07/2008
391
Transition
Introduction A transition provides the condition through which the checks of one or more pretransition steps pass on one or more consecutive steps along the corresponding link. Every transition is allocated with a transition condition of data type BOOL. The following are authorized as transaction conditions: an address (input or output) a variable (input or output) a Literal or a Transition Section (see Transition Section, p. 394) The type of transition condition determines the position of the name.
Transition Condition Address Variable Literal 1 Transition Section Trans_Section Position of the Name
Transition Condition
Trans_Variable
Transition Name
If an address or a variable is used as a transition condition then the transition name is defined with that name (e.g. %I10.4, Variable1). If a transition section is used as a transition condition then the section name is used as the transition name. Transition names (maximum 32 characters) must be unique over the entire project, i.e. no other transition, variable or section (with the exception of the assigned transition section) etc., may exist with the same name. There are no case distinctions. The transition name must correspond with the standardized name conventions.
392
35006144.07 07/2008
Enabling a Transition
A transition is enabled if the steps immediately preceding it are active. Transitions whose immediately preceding steps are not active are not normally analyzed. Note: If no transition condition is defined, the transition will never be active.
Triggering a Transition
A transition is triggered when the transition is enabled and the associated transition conditions are satisfied. Triggering a transition leads to the disabling (resetting) of all immediately preceding steps that are linked to the transition, followed by the activation of all immediately following steps.
The transition trigger time (switching time) can theoretically be as short as possible, but can never be zero. The transition trigger time lasts at least the duration of a program cycle.
35006144.07 07/2008
393
Transition Section
Introduction For every transition, a transition section can be created. This is a section containing the logic of the transition condition and it is automatically linked with the transition. The name of the transition section is always identical to the assigned transition, see Transition Name, p. 392.
394
35006144.07 07/2008
Programming Languages
Language FBD
IN1 IN2
FBD, LD, IL and ST are possible as programming languages for transition sections. Suggested Networks for Transition Section:
Description The suggested network contains an AND block with 2 inputs for which the output is linked with a variable having the name of the transition section. The suggested block can either be linked or it can be deleted if desired.
Suggested Network
AND OUT T1
LD
T1
The suggested network contains a coil which is linked with a variable having the name of the transition section. The suggested coil can either be linked or it can be deleted if desired.
IL
The suggested network is empty. The content may only be created of Boolean logic. The assignment of the logic result on the output (the transition variable) is done automatically, i.e. the memory assignment ST is not allowed. Example: LD A AND B The suggested network is empty. The content may only be created of Boolean logic in the form of a (nested) expression. The assignment of the logic result on the output (the transition variable) is done automatically, i.e. the instruction assignment := is not allowed. The expression is not terminated by a semicolon (;). Example: A AND B or A AND (WORD_TO_BOOL (B))
ST
Transition sections have the following properties: Transition sections only have one single output (transition variable), whose data type is BOOL. The name of these variables are identical to the names of the transition sections. The transition variable can only be used once in written form. The transition variable can be read in any position within the project. Only functions can be used, function blocks or procedures cannot. Only one coil may be used in LD. There is only one network, i.e. all functions used are linked with each other either directly or indirectly. Transition sections can only be used once. Transition sections belong to the SFC section in which they were defined. If the respective SFC section is deleted then all transition sections of this SFC section are also deleted automatically. Transition sections can be called exclusively from transitions.
395
35006144.07 07/2008
13.5
Jump
General
Jump
Jumps are used to indicate directional links that are not represented in their full length. Representation of a jump:
S_1_12
Properties of Jumps
Jumps have the following properties: More than one jump may have the same target step. In accordance with IEC 61131-3, jumps into a parallel sequence (see Parallel Branch and Parallel Joint, p. 400) or out of a parallel sequence are not possible. If it should also be used again then it must be enabled explicitly. With jumps, there is a difference between a Sequence Jump (see Sequence Jump, p. 405) and a Sequence Loop (see Sequence Loop, p. 406). The jump target is indicated by the jump target symbol (>).
> S_4_7
Jump Name
Jumps do not actually have their own names. Instead, the name of the target step (jump target) is shown inside of the jump symbol.
396
35006144.07 07/2008
13.6
Link
Introduction Properties of Links
Link
Links connect steps and transitions, transitions and steps etc. Links have the following properties: Links between objects of the same type (step with step, transition with transition, etc.) are not possible Links are possible between: unlinked object outputs and unlinked or linked step inputs (i.e. multiple step inputs can be linked) Overlapping links and other SFC objects (step, transition, jump, etc.) is not possible Overlapping links and links is possible Crossing links with links is possible and is indicated by a "broken" link:
Links consist of vertical and horizontal segments Standard signal flow in a sequence string is from top to bottom. To create a loop however, links can be made from below to a step above. This applies to links from transitions, parallel branches or alternative joints to a step. In these cases, the direction of the link is indicated with an arrow symbol:
S_1_1
S_1_2
With links, there is a difference between a String Jump (see Sequence Jump, p. 405) and a String Loop (see Sequence Loop, p. 406)
35006144.07 07/2008
397
13.7
Introduction
Overview
This section describes the branch and merge objects of the SFC sequence language. This section contains the following topics:
Topic Alternative Branches and Alternative Joints Parallel Branch and Parallel Joint Page 399 400
398
35006144.07 07/2008
S_5_11
S_5_12
S_5_13
S_5_14
S_5_16
S_5_15
g > S_5_16
The properties of an alternative sequence mainly depend on whether the sequence control is operating in single token or multi-token mode. See Properties of an Alternative Sequence in Single Token (see Alternative String, p. 404) Properties of an Alternative Sequence in Multi Token (see Alternative String, p. 415)
399
35006144.07 07/2008
S_5_14
S_5_15
S_5_16
S_5_17
see Properties of a Parallel Sequence in Single Token (see Alternative String, p. 404) Properties of a Parallel Sequence in Multi-Token (see Alternative String, p. 415)
400
35006144.07 07/2008
13.8
Text Object
Introduction
Text Objects
Text can be positioned in the form of text objects using SFC sequence language. The size of these text objects depends on the length of the text. This text object is at least the size of a cell and can be vertically and horizontally enlarged to other cells according to the size of the text. Text objects can overlap with other SFC objects.
35006144.07 07/2008
401
13.9
Introduction
Overview What's in this Section?
Single-Token
This section describes the "Single-Token" operating mode for sequence controls. This section contains the following topics:
Topic Execution Sequence Single-Token Alternative String Sequence Jumps and Sequence Loops Parallel Strings Asymmetric Parallel String Selection Page 403 404 405 408 410
402
35006144.07 07/2008
35006144.07 07/2008
403
Alternative String
Alternative Strings According to IEC 61131-3, only one switch (1-off-n-select) can be made from the transitions. The branch to be run is determined by the result of the transition conditions of the transitions that follow the alternative branch. Branch transitions are processed from left to right. If a transition condition is satisfied, the remaining transitions are no longer processed The branch with the satisfied transition is activated. This results in a left to right priority for branches. If none of the transitions are switched, the step that is currently set remains set. Alternative Strings:
S_5_10
S_5_11
S_5_12
S_5_13
If...
Then
If S_5_10 is active and transition condition a then a sequence is run from S_5_10 to is true (independent of b), S_5_11. If S_5_10 is active and transition condition b then a sequence is run from S_5_10 to is true and a is false, S_5_12.
404
35006144.07 07/2008
S_5_11
S_5_13
S_5_14
S_5_11
S_5_14
f S_5_13
S_5_12
S_5_12
d > S_5_13
S_5_13
If... If transition condition a is true, If transition condition b is true, If transition condition e is true,
Then then a sequence is run from S_5_10 to S_5_11, S_5_12 and S_5_13. then a jump is made from S_5_10 directly to S_5_13. then a sequence is run from S_5_10 to S_5_14 and S_5_13.
35006144.07 07/2008
405
Sequence Loop
A sequence loop is a special type of alternative branch with which one or more branches lead back to a previous step. A sequence loop can be made with jumps or with links. Sequence loop:
a > S_1_12
S_1_12
S_1_13
S_1_14
S_1_11
S_1_13
S_1_14
S_1_15
S_1_12
S_1_15
If... If transition condition a is true, If transition condition b is true, If transition condition b is false and c is true, If transition condition f is true,
Then then a sequence runs from S_1_11 to S_1_12. then a sequence runs from S_1_12 to S_1_13. then a sequence runs from S_1_12 to S_1_14. then a jump is made from S_1_14 back to S_1_12.
The loop from S_1_12 by means of transition conditions c and f back to S_1_12 is repeated until transition condition b is true or c is false and d is true. If transition conditions b and c are false and d is true, then a jump is made from S_1_12 directly back to S_1_11.
The loop from S_1_11 to S_1_12 and back to S_1_11 via transition conditions a and d is repeated until transition condition b or c is true.
a > S_1_2
b > S_1_3
S_1_4
S_1_2
S_1_3
S_1_4
S_1_5
S_1_4
S_1_3
S_1_5
S_1_6
S_1_6
If... If transition condition b is true, If transition condition e is true, If transition condition f is true,
Then then a sequence runs from S_1_1 to S_1_3. then a jump is made to S_1_4. then a jump is made to S_1_3.
The loop from S_1_3 via transition condition e, to S_1_4 via transition condition f and a jump back to S_1_3 again, is now repeated infinitely.
35006144.07 07/2008
407
Parallel Strings
Parallel Strings With parallel branches, switching a single transition leads to a parallel activation of more than one (maximum 32) steps (branches). This applies with Single-Token as well as with Multi-Token. Processing Parallel Strings:
S_5_10
S_5_14
S_5_15
S_5_16
S_5_17
If... If S_5_10 is active and transition condition a, which belongs to the common transition, is also true, If steps S_5_11, S_5_12 and S_5_13 are activated, If S_5_14, S_5_15 and S_5_16 are active at the same time and transition condition e, which belongs to the common transition, is true,
Then then a sequence runs from S_5_10 to S_5_11, S_5_12 and S_5_13. then the strings run independently of one another. then a sequence is run from S_5_14, S_5_15 and S_5_16 to S_5_17.
408
35006144.07 07/2008
If a single alternative branch is used in a parallel string, it leads to blocking the string with Single-Token. Using an Alternative Branch in a Parallel String:
a S_7_1 S_7_2
S_7_3
S_7_4
S_7_5
S_7_6
If... If transition condition a is true, If steps S_7_1 and S_7_2 are activated, If transition condition d is true, If transition condition b is true and c is false,
Then then a sequence is run to S_7_1 and S_7_2. then the strings run independently of one another. then a sequence runs to S_7_5. then a sequence runs to S_7_3.
Since S_7_3, S_7_4 and S_7_5 are linked with a parallel merge, no sequence can follow to S_7_6 because S_7_3 and S_7_4 can never be active at the same time. (Either S_7_3 is activated with transition condition b or S_7_4 with transition condition c, never both at the same time.) Therefore S_7_3, S_7_4 and S_7_5 can never be active at the same time either. The string is blocked. The same problem occurs if transition condition b is false and c is true when entering the alternative branch.
35006144.07 07/2008
409
S_19_5
If... If transition condition a is true, If steps S_19_2, S_19_3 and S_19_4 are activated, If transition condition b is true, If steps S_19_2 and S_19_5 are active and transition condition c, is true,
Then then a sequence runs to S_19_2, S_19_3 and S_19_4. then the strings run independently of one another. then a sequence runs to S_19_5. then the parallel string is departed.
410
35006144.07 07/2008
S_19_4
S_19_5
If... If transition condition a is true, If steps S_19_2 and S_19_3 are activated, If transition condition b is true, If steps S_19_4 and S_19_5 are activated, If steps S_19_2, S_19_4 and S_19_5 are active and transition condition c is true,
Then then a sequence runs to S_19_2 and S_19_3. then the strings run independently of one another. then a sequence runs to S_19_4 and S_19_5. then the strings run independently of one another. then the parallel string is departed.
35006144.07 07/2008
411
S_8_10
S_8_11
S_8_12
S_8_13
S_8_14
S_8_15
S_8_16
S_8_17
S_8_18
S_8_19
If... If transition condition a is true, If transition condition b is true, If transition condition c is true, If steps S_8_13 and S_8_14 are active and transition condition d, is true, If steps S_8_12 and S_8_17 are active and transition condition e, is true, ...
Then then a sequence runs to S_8_10 and S_8_11. then a sequence runs to S_8_12 and S_8_13. then a sequence runs to S_8_14, S_8_15 and S_8_16. then a sequence runs to S_8_17. then a sequence runs to S_8_18. ...
412
35006144.07 07/2008
13.10
Introduction
Overview What's in this Section?
Multi-Token
This section describes the "Multi-Token" operating mode for sequence controls. This section contains the following topics:
Topic Multi-Token Execution Sequence Alternative String Parallel Strings Jump into a Parallel String Jump out of a Parallel String Page 414 415 419 423 424
35006144.07 07/2008
413
414
35006144.07 07/2008
Alternative String
Alternative Strings The user can define the behavior for the evaluation of transition conditions in alternative branches with Multi-Token. The following are possible: Processing is from left to right with a stop after the first active transition (1-off-nselect). This corresponds with the behavior of alternative strings with SingleToken (see Alternative String, p. 404). Parallel processing of all transitions of the alternative branch (x-off-n-select)
35006144.07 07/2008
415
x-off-n-select
With Multi-Token, more than one parallel switch can be made from the transitions (1-off-n-select). The branches to be run are determined by the result of the transition conditions of the transitions that follow the alternative branch. The transitions of the branches are all processed. All branches with satisfied transitions are activated. If none of the transitions are switched, the step that is currently set remains set. x-off-n-select:
S_5_10
S_5_11
S_5_12
S_5_13
If...
Then
If S_5_10 is active and transition condition a is true and b is false, then a sequence is run from S_5_10 to S_5_11. If S_5_10 is active and transition condition a is false and b is true, then a sequence is run from S_5_10 to S_5_12. If S_5_10 is active and transition conditions a and b are true, then a sequence is run from S_5_10 to S_5_11 and S_5_12.
A second token is created by the parallel activation of the two alternative branches. These two tokens are now running parallel to one another, i.e. S_5_11 and S_5_12 are active at the same time. Token 1 (S_5_11) If... If the transition condition c is true, Then then a sequence is run from S_5_11 to S_5_13. Token 2 (S_5_12) If... If transition condition d is true, Then then a sequence is run from S_5_12 to S_5_13.
If S_5_13 is still active (token 1) because of the activation of transition condition c, then token 2 is ended and the string will be further processed as Single-Token. If S_5_13 is no longer active (token 1), then it is reactivated by token 2 and both tokens continue running parallel (Multi-Token).
If alternative branches should only be switched exclusively in this mode of operation, then this must be defined explicitly with the transition logic.
416
35006144.07 07/2008
Example:
S_5_10
NOT a
S_5_11
S_5_12
35006144.07 07/2008
417
If a parallel merge is used to terminate an alternative branch, it may block the string. Terminating an Alternative Branch with a Parallel Merge:
a S_6_1
b S_6_2
Since S_6_1 and S_6_2 are linked by a parallel merge, the branch cannot be departed because S_6_1 and S_6_2 can never be active at the same time. (Either S_6_1 is activated with transition condition a or S_6_2 with transition condition b.) Therefore S_6_1 and S_6_2 can never be active at the same time either. The string is blocked. This block can be removed, for example, by a second timed token that runs via transition b.
418
35006144.07 07/2008
Parallel Strings
Parallel Strings With parallel branches, switching a single transition leads to a parallel activation of more than one (maximum 32) steps (branches). This applies with Single-Token as well as with Multi-Token Processing Parallel Strings:
S_5_10
S_5_14
S_5_15
S_5_16
S_5_17
If... If S_5_10 is active and transition condition a, which belongs to the common transition, is also true, If steps S_5_11, S_5_12 and S_5_13 are activated, If S_5_14, S_5_15 and S_5_16 are active at the same time and transition condition e, which belongs to the common transition, is true,
Then then a sequence runs from S_5_10 to S_5_11, S_5_12 and S_5_13. then the strings run independently of one another. then a sequence is run from S_5_14, S_5_15 and S_5_16 to S_5_17.
35006144.07 07/2008
419
Terminating a parallel branch can also be done with an alternative merge instead of a parallel merge with Multi-Token. Terminating a Parallel String with an Alternative Branch (variation 1):
a S_5_1 S_5_2
S_5_3
If... If the transition condition a is true, If steps S_5_1 and S_5_2 are activated, If transition condition b is true and c is false,
Then then a sequence runs to S_5_1 and S_5_2. then the strings run independently of one another. then a sequence runs to S_5_3.
A second token is created by the sequence running on the alternative merge out of the parallel string. The two tokens are running parallel to one another, i.e. S_5_2 and S_5_3 are active at the same time. Token 1 (S_5_3) If... Step S_5_3 is active. Then Token 2 (S_5_2) If... Step S_5_2 is active. If the transition condition c is true, then a sequence runs to S_5_3. Then
If S_5_3 is still active (token 1) then token 2 is ended and the string is further processed as Single-Token. If S_5_3 is no longer active (token 1), then it is reactivated by token 2 and both tokens continue running parallel (MultiToken).
420
35006144.07 07/2008
S_5_2
A second token is created by the sequence running on the alternative merge out of the parallel string. These two tokens are now running parallel to one another, i.e. S_5_1 and S_5_2 are active at the same time. Token 1 (S_5_2) If... Step S_5_2 is active. Then Token 2 (S_5_1) If... Step S_5_1 is active. If transition condition b is true, then a sequence runs to S_5_2. Then
If S_5_2 is still active (token 1) then token 2 is ended and the string is further processed as Single-Token. If S_5_2 is no longer active (token 1), then it is reactivated by token 2 and both tokens continue running parallel (MultiToken).
35006144.07 07/2008
421
If one single alternative branch is used in a parallel string, it may block the string. Using an Alternative Branch in a Parallel String:
a S_7_1 S_7_2
S_7_3
S_7_4
S_7_5
If... If transition condition a is true, If steps S_7_1 and S_7_2 are activated, If transition condition d is true, If transition condition b is true,
Then then a sequence is run to S_7_1 and S_7_2. then the strings run independently of one another. then a sequence runs to S_7_5. then a sequence runs to S_7_3.
Since S_7_3, S_7_4 and S_7_5 are linked by a parallel merge, the parallel string cannot be departed because S_7_3 and S_7_4 can never be active at the same time. (Either S_7_3 is activated with transition condition b or S_7_4 with transition condition c.) Therefore S_7_3, S_7_4 and S_7_5 cannot be active at the same time either. The string is blocked. This block can be removed for example, by a second timed token that runs via transition c.
422
35006144.07 07/2008
S_1_3
S_1_1
If... If the transition condition a is true, If steps S_1_1 and S_1_2 are activated, If S_1_2 is active and transition condition b, is true,
Then then a sequence runs to S_1_1 and S_1_2. then the strings run independently of one another. then a sequence runs from S_1_2 to S_1_3.
If S_1_1 and S_1_3 are active and transition condition c, then a sequence runs from S_1_1 and S_1_3 to a jump which belongs to the common transition, is true, to S_1_1. If S_1_1 is activated by the jump, then only the branch from S_1_1 is active. The branch from S_1_2 is not active.
Since S_1_1 and S_1_3 are not active at the same time, the string cannot continue. The string is blocked. This block can removed by e.g. a second timed token that is set to reactivate step S_1_2.
35006144.07 07/2008
423
b S_2_3
S_2_3
S_2_4
S_2_5
424
35006144.07 07/2008
If... If the transition condition a is true and b is false, If steps S_2_1 and S_2_2 are activated, If the transition condition c is true,
Then then a sequence runs to S_2_1 and S_2_2. then the strings run independently of one another. then a jump is made to S_2_3.
A second token is created by the jump out of the parallel string. Both tokens are running parallel to one another, i.e. S_2_1 and S_2_3 are active at the same time. Token 1 (S_2_1) If... If the transition condition e is true, Then then a sequence runs to S_2_5. Token 2 (S_2_3) If... If transition condition d is true, Then then a sequence runs to S_2_4.
If S_2_5 is still active (token 1) because of the activation of transition condition e, then token 2 is ended and the string will be further processed as Single-Token. If S_2_5 is no longer active (token 1), then it is reactivated by token 2 and both tokens continue running parallel (Multi-Token).
35006144.07 07/2008
425
S_4_3
S_4_1
If... If the transition condition a is true, If steps S_4_1 and S_4_2 are activated, If transition condition b is true, If the transition condition c is true,
Then then a sequence runs to S_4_1 and S_4_2. then the strings run independently of one another. then a sequence runs to S_4_3. then a jump is made to S_4_1.
A second token is created by the jump out of a branch string. Both tokens are running parallel to one another, i.e. S_4_3 and S_4_1 are active at the same time. Token 1 (S_4_3) If... Step S_4_3 is processed Then Token 2 (S_4_1) If... Step S_4_1 is processed If transition condition b is true, then a sequence runs to S_4_3. Then
If step S_4_3 is still active (token 1) during the activation by token 2 then token 2 is ended and the string will continue to be processed as Single-Token. If step S_4_3 is no longer active (token 1) because of the activation by token 2 , then it is reactivated by token 2 and both tokens continue running parallel (Multi-Token). In both cases, true transition condition d causes the parallel string to be left.
426
35006144.07 07/2008
S_3_4
S_3_5
S_3_6
If... If the transition condition a is true, If steps S_3_1 and S_3_2 are activated, If transition condition b is false and c is true,
Then then a sequence runs to S_3_1 and S_3_2. then the strings run independently of one another. then a sequence runs to S_3_5.
A second token is created by the sequence running on the alternative branch out of the parallel string. Both tokens are running parallel to one another, i.e. S_3_1 and S_3_5 are active at the same time. Token 1 (S_3_1) If... Then Token 2 (S_3_5) If... If transition condition d is true, Then then a sequence runs to S_3_6.
If transition condition a is true then a sequence runs to S_3_1 and S_3_2. This ends token 2 and the string is again processed as Single-Token. If the transition condition a is true, then a sequence runs to S_3_1 and S_3_2. If transition condition b is true and c is false, then a sequence runs to S_3_4.
Since S_3_4 cannot become active, S_3_1 remains (token 1) active until a sequence appears on S_3_2 (token 2) and the transition is b. If S_4_4 is no longer active (token 1), then it is reactivated by token 2 and both tokens continue running parallel (Multi-Token). (Merging the two tokens can also be done in S_4_3.)
35006144.07 07/2008
427
428
35006144.07 07/2008
14
Introduction
Overview This chapter describes the programming language instruction list IL which conforms to IEC 61131. This chapter contains the following sections:
Section 14.1 14.2 Topic General Information about the IL Instruction List Calling Elementary Functions, Elementary Function Blocks, Derived Function Blocks and Procedures Page 430 450
35006144.07 07/2008
429
14.1
Introduction
Overview What's in this Section?
This section contains a general overview of the IL instruction list. This section contains the following topics:
Topic General Information about the IL Instruction List Operands Modifier Operators Subroutine Call Labels and Jumps Comment Page 431 434 436 437 446 447 449
430
35006144.07 07/2008
Instructions
Modifier
IL is a so-called accumulator orientated language, i.e. each instruction uses or alters the current content of the accumulator (a form of internal cache). IEC 61131 refers to this accumulator as the "result". For this reason, an instruction list should always begin with the LD operand ("Load in accumulator command"). Example of an addition:
Command LD 10 ADD 25 ST A Meaning Load the value 10 into the accumulator. "25" is added to the contents of the accumulator. The result is stored in the variable A. The content of the variable A and the accumulator is now 35. Any further instruction will work with accumulator contents "35" if it does not begin with LD.
35006144.07 07/2008
431
Compare operations likewise always refer to the accumulator. The Boolean result of the comparison is stored in the accumulator and therefore becomes the current accumulator content. Example of a comparison:
Command LD B GT 10 ST A Meaning The value B is loaded into the accumulator. 10 is compared with the contents of the accumulator. The result of the comparison is stored in the variable A. If B is less than or equal to 10, the value of both variable A and the accumulator content is 0 (FALSE). If B is greater than 10, the value of both variable A and the accumulator content is 1 (TRUE).
Section Size
The length of an instruction line is limited to 300 characters. The length of an IL section is not limited within the programming environment. The length of an IL section is only limited by the size of the PLC memory.
Syntax
Identifiers and Keywords are not case sensitive. Spaces and tabs have no influence on the syntax and can be used as and when required, Exception: Not allowed - spaces and tabs keywords literals values identifiers variables and limiter combinations [e.g. (* for comments)]
432
35006144.07 07/2008
Execution Sequence
Instructions are executed line by line, from top to bottom. This sequence can be altered with the use of parentheses. If, for example, A, B, C and D have the values 1, 2, 3 and 4, and are calculated as follows: LD A ADD B SUB C MUL C ST E the result in E will be 0. In the case of the following calculation: LD A ADD B SUB( LD C MUL D ) ST E the result in E will be -9.
Error Behavior
The following conditions are handled as an error when executing an expression: Attempting to divide by 0. Operands do not contain the correct data type for the operation. The result of a numerical operation exceeds the value range of its data type For a description of IEC conformity for the IL programming language, see IEC Conformity (see IEC Compliance, p. 609).
IEC Conformity
35006144.07 07/2008
433
Operands
Introduction Operators are used for operands. An operand can be: an address a literal a variable a multi-element variable an element of a multi-element variable an EFB/DFB output or an EFB/DFB call Data Types The operand and the current accumulator content must be of the same type. Should operands of various types be processed, a type conversion must be performed beforehand. In the example the integer variable i1 is converted into a real variable before being added to the real variable r4. LD i1 INT_TO_REAL ADD r4 ST r3 As an exception to this rule, variables with data type TIME can be multiplied or divided by variables with data type INT, DINT, UINT or UDINT. Permitted operations: LD timeVar1 DIV dintVar1 ST timeVar2 LD timeVar1 MUL intVar1 ST timeVar2 LD timeVar1 MUL 10 ST timeVar2 This function is listed by IEC 61131-3 as "undesired" service.
434
35006144.07 07/2008
Addresses can be used directly (without a previous declaration). In this case the data type is assigned to the address directly. The assignment is made using the "Large prefix". The different large prefixes are given in the following table.
Large prefix / Symbol no prefix X B W D F Example %I10, %CH203.MOD, %CH203.MOD.ERR %MX20 %QB102.3 %KW43 %QD100 %MF100 Data type BOOL BOOL BYTE INT DINT REAL
Should other data types be assigned as the default data types of an address, this must be done through an explicit declaration. This variable declaration takes place comfortably using the variable editor. The data type of an address can not be declared directly in an ST section (e.g. declaration AT %MW1: UINT; not permitted). The following variables are declared in the variable editor: UnlocV1: ARRAY [1..10] OF INT; LocV1: ARRAY [1..10] OF INT AT %MW100; LocV2: TIME AT %MW100; The following calls then have the correct syntax: %MW200 := 5; LD LocV1[%MW200] ST UnlocV1[2] LD t#3s ST LocV2
When accessing field variables (ARRAY), only literals and variables of INT, DINT, UINT and UDINT types are permitted in the index entry. The index of an ARRAY element can be negative if the lower threshold of the range is negative. Example: Saving a field variable LD var1[i] ST var2.otto[4]
35006144.07 07/2008
435
Modifier
Introduction Table of Modifiers Modifiers influence the execution of the operators (see Operators, p. 437). Table of Modifiers:
Modifier N Use of Operators of data type BOOL, BYTE, WORD, DWORD Description The modifier N is used to invert the value of the operands bit by bit. Example: In the example C is 1, if A is 1 and B is 0. LD A ANDN B ST C The modifier C is used to carry out the associated instruction, should the value of the accumulator be 1 (TRUE). Example: In the example, the jump after START is only performed when A is 1 (TRUE) and B is 1 (TRUE). LD A AND B JMPC START If the modifiers C and N are combined, the associated instruction is only performed if the value of the accumulator be a Boolean 0 (FALSE). Example: In the example, the jump after START is only performed when A is 0 (FALSE) and B is 0 (FALSE). LD A AND B JMPCN START The left bracket modifier (is used to move back the evaluation of the operand, until the right bracket operator) appears. The number of right parenthesis operations must be equal to the number of left bracket modifiers. Brackets can be nested. Example: In the example E is 1, if C and/or D is 1 and A and B are 1. LD A AND B AND( C OR D ) ST E The example can also be programmed in the following manner: LD A AND B AND( LD C OR D ) ST E
BOOL
CN
BOOL
all
436
35006144.07 07/2008
Operators
Introduction An operator is a symbol for: an arithmetic operation to be executed, a logical operation to be executed or calling an elementary function block - DFBs or subroutines. Operators are generic, i.e. they adapt automatically to the data type of the operands. Load and Save Operators
Operator LD Modifier N (only for operands of data type BOOL, BYTE, WORD or DWORD)
ST
35006144.07 07/2008
437
438
35006144.07 07/2008
Logical Operators
Operator AND Modifier N, N(, (
OR
N, N(, (
Logical OR
Literal, variable, direct address of BOOL, BYTE, WORD or DWORD data types
35006144.07 07/2008
439
Operator XOR
Modifier N, N(, (
Operands Literal, variable, direct address of BOOL, BYTE, WORD or DWORD data types
Description The XOR operator makes a logical exclusive OR link between the accumulator content and the operand. If more than two operands are linked, the result with an uneven number of 1-states is 1, and is 0 with an even number of 1-states. In the case of BYTE, WORD and DWORD data types, the link is made bit by bit. Example: In the example D is 1 if A or B is 1. If A and B have the same status (both 0 or 1), D is 0. LD A XOR B ST D If more than two operands are linked, the result with an uneven number of 1-states is 1, and is 0 with an even number of 1-states. Example: In the example F is 1 if 1 or 3 operands are 1. F is 0 if 0, 2 or 4 operands are 1. LD A XOR B XOR C XOR D XOR E ST F The accumulator content is inverted bit by bit with NOT. Example: In the example B is 1 if A is 0 and B is 0 if A is 1. LD A NOT ST B
NOT
440
35006144.07 07/2008
Arithmetic Operators
Operator ADD Modifier (
SUB
Subtraction
Literal, variable, direct address of data types INT, DINT, UINT, UDINT, REAL or TIME
MUL
Multiplication
Literal, variable, direct address of data type INT, DINT, UINT, UDINT or REAL
DIV
Division
Literal, variable, direct address of data type INT, DINT, UINT, UDINT or REAL
MOD
Modulo Division
Literal, variable, direct address of INT, DINT, UINT or UDINT data types
35006144.07 07/2008
441
Comparison Operators
Operator GT Modifier (
Comparison: > Literal, variable, direct address of data type BOOL, BYTE, WORD, DWORD, STRING, INT, DINT, UINT, UDINT, REAL, TIME, DATE, DT or TOD
GE
Comparison: >=
Literal, variable, direct address of data type BOOL, BYTE, WORD, DWORD, STRING, INT, DINT, UINT, UDINT, REAL, TIME, DATE, DT or TOD
EQ
Comparison: = Literal, variable, direct address of data type BOOL, BYTE, WORD, DWORD, STRING, INT, DINT, UINT, UDINT, REAL, TIME, DATE, DT or TOD
442
35006144.07 07/2008
Operator NE
Modifier (
Operands Literal, variable, direct address of data type BOOL, BYTE, WORD, DWORD, STRING, INT, DINT, UINT, UDINT, REAL, TIME, DATE, DT or TOD
Description The NE operator compares the contents of the accumulator with the contents of the operand. If the contents of the accumulator are not equal to the contents of the operands, the result is a Boolean 1. If the contents of the accumulator are equal to the contents of the operands, the result is a Boolean 0. Example: In the example the value of D is 1 if A is not equal to 10, otherwise the value of D is 0. LD A NE 10 ST D The LE operator compares the contents of the accumulator with the contents of the operand. If the contents of the accumulator are less than/ equal to the contents of the operands, the result is a Boolean 1. If the contents of the accumulator are greater than the contents of the operands, the result is a Boolean 0. Example: In the example the value of D is 1 if A is smaller than or equal to 10, otherwise the value of D is 0. LD A LE 10 ST D The LT operator compares the contents of the accumulator with the contents of the operand. If the contents of the accumulator is less than the contents of the operands, the result is a Boolean 1. If the contents of the accumulator is greater than/equal to contents of the operands, the result is a Boolean 0. Example: In the example the value of D is 1 if A is smaller than 10, otherwise the value of D is 0. LD A LT 10 ST D
LE
Comparison: <=
Literal, variable, direct address of data type BOOL, BYTE, WORD, DWORD, STRING, INT, DINT, UINT, UDINT, REAL, TIME, DATE, DT or TOD
LT
Comparison: < Literal, variable, direct address of data type BOOL, BYTE, WORD, DWORD, STRING, INT, DINT, UINT, UDINT, REAL, TIME, DATE, DT or TOD
35006144.07 07/2008
443
Call Operators
Operator CAL Modifier
Call of a Instance name of the function block, function block, DFB DFB or or subprogram subprogram
FUNCTIO NNAME
Executing a function
Literal, variable, A function is performed by specifying the name of direct address (data the function. type is dependent on see also Calling Elementary Functions, p. 451 function) Literal, variable, A procedure is performed by specifying the name direct address (data of the procedure. type is dependent on see also Calling Procedures, p. 468 procedure)
PROCEDU RENAME
Executing a procedure
444
35006144.07 07/2008
Structuring Operators
Operator JMP Modifier
C, CN (only if the accumulator contents are of the BOOL data type) C, CN (only if the accumulator contents are of the BOOL data type)
RET
RETURN operators can be used in DFBs (derived function blocks) and in SRs (subroutines). RETURN operators can not be used in the main program. In a DFB, a RETURN operator forces the return to the program which called the DFB. The rest of the DFB section containing the RETURN operator is not executed. The next sections of the DFB are not executed. The program which called the DFB will be executed after return from the DFB. If the DFB is called by another DFB, the calling DFB will be executed after return. In a SR, a RETURN operator forces the return to the program which called the SR. The rest of the SR containing the RETURN operator is not executed. The program which called the SR will be executed after return from the SR.
A right bracket ) starts the processing of the deferred operator. The number of right bracket operations must be equal to the number of left bracket modifiers. Brackets can be nested. Example: In the example E is 1 if C and/or D is 1 and A and B are 1. LD A AND B AND( C OR D ) ST E
35006144.07 07/2008
445
Subroutine Call
Call Subroutine A subroutine call consists of the CAL operator, followed by the name of the subroutine section, followed by an empty parameter list (optional). Subroutine calls do not return a value. The subroutine to be called must be located in the same task as the IL section called. Subroutines can also be called from within subroutines. e.g. ST A CAL SubroutineName () LD B or ST A CAL SubroutineName LD B Subroutines are a supplement to IEC 61131-3 and must be enabled explicitly. In SFC action sections, subroutine calls are only allowed when Multitoken Operation is enabled.
446
35006144.07 07/2008
Jump Properties:
35006144.07 07/2008
447
Example
start2: LD A ST counter.CU LD B ST counter.R LD C ST counter.PV CAL counter JMPCN start4 start1: LD A AND B OR C ST D JMPC start3 LD A ADD E JMP start5 start3: CAL counter ( CU:=A R:=B PV:=C ) JMP start1 LD A OR B OR C ST D start4: JMPC start1 LD C OR B start5: ST A
448
35006144.07 07/2008
Comment
Description In the IL editor, comments always start with the string (* and end in the string *). Any comments can be entered between these character strings. Nesting comments is not permitted according to IEC 61131-3. If comments are nested nevertheless, then they must be enabled explicitly.
35006144.07 07/2008
449
14.2
Calling Elementary Functions, Elementary Function Blocks, Derived Function Blocks and Procedures
Introduction
Overview Calling Elementary Functions, Elementary Function Blocks, Derived Function Blocks and Procedures in the IL programming language. This section contains the following topics:
Topic Calling Elementary Functions Calling Elementary Function Blocks and Derived Function Blocks Calling Procedures Page 451 456 468
450
35006144.07 07/2008
35006144.07 07/2008
451
Not all formal parameters must be assigned a value for formal calls. Which formal parameter types must be assigned a value can be seen in the following table.
Parameter type Input VAR_IN_OUT Output + / EDT + STRING + ARRAY + + ANY_ARRAY IODDT + + + + STRUCT FB + + + / / ANY + + -
If no value is assigned to a formal parameter, the initial value will be used when the function is executed. If no initial value has been defined, the default value (0) is used. Programming Notes Attention should be paid to the following programming notes: Functions are only executed if the input EN=1 or the EN input is not used (see also EN and ENO, p. 455). All generic functions are overloaded. This means the functions can be called with or without entering the data type. E.g. LD i1 ADD i2 ST i3 is identical to LD i1 ADD_INT i2 ST i3 In contrast to ST, functions in IL cannot be nested. There are two ways of invoking a function: Formal call (calling a function with formal parameter names) Informal call (calling a function without formal parameter names)
452
35006144.07 07/2008
Formal Call
With this type of call (call with formal parameter names), the function is called using an instruction sequence consisting of the function name, followed by the bracketed list of value assignments (actual parameters) to the formal parameters. The order in which the formal parameters are listed is not significant. The list of actual parameters may be wrapped immediately following a comma. After executing the function the result is loaded into the accumulator and can be stored using ST. EN and ENO can be used for this type of call. Calling a function with formal parameter names: Function Name Formal Parameters LIMIT (MN:=0, IN:=var1, MX:=var2) ST out Actual Parameters (Inputs) Actual Parameter (Output) or LIMIT ( MN:=0, IN:=var1, MX:=var2 ) ST out Calling the same function in FBD:
LIMIT 0 var1 var2 MN IN MX
OUT
out
With formal calls, values do not have to be assigned to all formal parameters (see also Parameters, p. 451). LIMIT (MN:=0, IN:=var1) ST out Calling the same function in FBD:
LIMIT 0 var1 MN IN MX
OUT
out
35006144.07 07/2008
453
Informal Call
With this type of call (call without formal parameter names), the function is called using an instruction sequence made up by loading the first actual parameter into the accumulator, followed by the function name and an optional list of actual parameters. The order in which the actual parameters are listed is significant. The list of actual parameters cannot be wrapped. After executing the function the result is loaded into the accumulator and can be stored using ST. EN and ENO cannot be used for this type of call. Calling a function with formal parameter names: Actual Parameters Function Name LD A LIMIT B,C ST result Actual Parameters Result of the function Calling the same function in FBD:
LIMIT A B C MN IN MX
OUT
result
Note: Note that when making an informal call, the list of actual parameters cannot be put in brackets. IEC 61133-3 requires that the brackets be left out in this case to illustrate that the first actual parameter is not a part of the list. Invalid informal call for a function: LD A LIMIT (B,C) If the value to be processed (first actual parameter) is already in the accumulator, the load instruction can be omitted. LIMIT B,C ST result If the result is to be used immediately, the store instruction can be omitted. LD A LIMIT_REAL B,C MUL E If the function to be executed only has one input, the name of the function is not followed by a list of actual parameters.
454
35006144.07 07/2008
Calling a function with one actual parameter: Actual Parameters Function Name LD A SIN ST result Result of the function Calling the same function in FBD:
SIN A IN
OUT
result
EN and ENO
With all functions an EN input and an ENO output can be configured. If the value of EN is equal to "0" when the function is called, the algorithms defined by the function are not executed and ENO is set to "0". If the value of EN is equal to 1 when the function is called, the algorithms defined by the function are executed. After the algorithms have been executed successfully, the value of ENO is set to "1". If an error occurred while executing the algorithms, ENO is set to "0". If ENO is set to "0" (caused when EN=0 or an error occurred during execution), the output of the function is set to "0". The output behavior of the function does not depend on whether the function was called up without EN/ENO or with EN=1. If EN/ENO are used, the function call must be formal. LIMIT (EN:=1, MN:=0, IN:=var1, MX:=5, ENO=>var2) ST out Calling the same function in FBD:
LIMIT 1 0 var1 5 EN MN IN MX ENO
OUT
var2 out
35006144.07 07/2008
455
Parameter
456
35006144.07 07/2008
Not allowed: AND_WORD (WordParam1 := IntVar1, WordParam2 := IntVar2) (In this case, AND_INT must be used.) AND_ARRAY_WORD (ArrayInt, ...) (In this case an explicit type conversion must be carried out using INT_ARR_TO_WORD_ARR (...). Not all formal parameters need be assigned a value. You can see which formal parameter types must be assigned a value in the following table.
Parameter type EFB: Input EDT STRING + + + + ARRAY + + + + + + ANY_ARRAY IODDT + + + + + / / + + / + / STRUCT FB + + + + / / / / / / ANY + + + + + +
If no value is allocated to a formal parameter, then the initial value will be used for executing the function block. If no initial value has been defined then the default value (0) is used. If a formal parameter is not assigned a value and the function block/DFB is instanced more than once, then the following instances are run with the old value. Public Variables In addition to inputs and outputs, some function blocks also provide public variables. These variables transfer statistical values (values that are not influenced by the process) to the function block. They are used for setting parameters for the function block. Public variables are a supplement to IEC 61131-3. The assignment of values to public variables is made via their initial values or via the load and save instructions.
35006144.07 07/2008
457
Example:
Instance Name Public Variable (D_ACT1 is an instance of the function block D_ACT and has the public variables AREA_NR and OP_CTRL.)
LD 1 ST D_ACT1.OP_CTRL
Public variables are read via the instance name of the function block and the names of the public variables. Example:
Instance Name Public Variable
LD D_ACT1.OP_CTRL ST Var1 Private Variables In addition to inputs, outputs and public variables, some function blocks also provide private variables. Like public variables, private variables are used to transfer statistical values (values that are not influenced by the process) to the function block. Private variables can not be accessed by user program. These type of variables can only be accessed by the animation table. Note: Nested DFBs are declared as private variables of the parent DFB. So their variables are also not accessible through programming, but trough the animation table. Private variables are a supplement to IEC 61131-3.
458
35006144.07 07/2008
Programming Notes
Attention should be paid to the following programming notes: Functions are only executed if the input EN=1 or the EN input is not used (see also EN and ENO, p. 465). The assignment of variables to ANY or ARRAY output types must be made using the => operator (see also Formal Form of CAL with a List of Input Parameters, p. 460). Assignments cannot be made outside the function block call. The instruction My_Var := My_SAH.OUT is invalid, if the output OUT of the SAH function block is of type ANY. The instruction Cal My_SAH (OUT=>My_Var) is valid. Special conditions apply when using VAR_IN_OUT variables (see VAR_IN_OUT Variable, p. 466). The use of function blocks consists of two parts: the Declaration (see Declaration, p. 459) calling the function block There are four ways of calling a function block: Formal Form of CAL with a list of input parameters (see Formal Form of CAL with a List of Input Parameters, p. 460) (call with formal parameter names) In this case variables can be assigned to outputs using the => operator. Informal form of CAL with a list of input parameters (see Informal Form of CAL with a List of Input Parameters, p. 461) (call without formal parameter names) CAL and Load/Save (see CAL and Load/Save the Input Parameters, p. 462) the input parameter Use of the input operators (see Use of the Input Operators, p. 463) Function block/DFB instances can be called multiple times; other than instances of communication EFBs, these can only be called once (see Multiple Function Block Instance Call, p. 464). Before calling a function block it must be declared in the variables editor.
Declaration
35006144.07 07/2008
459
With this type of call (call with formal parameter names), the function block is called using a CAL instruction which follows the instance name of the function block and a bracketed list of actual parameter assignments to the formal parameters. The assignment of the input formal parameter is made using the := assignment and the output formal parameter is made using the => assignment. The sequence in which the input formal parameters and output formal parameters are enumerated is not significant. The list of actual parameters may be continued immediately following a comma. EN and ENO can be used for this type of call. Function block call in the formal form of CAL with a list of input parameters:
Actual Parameters (Inputs) or CAL MY_COUNT (CU:=var1, R:=reset, PV:=100, Q=>out, CV=>current) Calling the same function block in FBD:
MY_COUNT CTU var1 reset 100 CU R PV Q CV
out current
It is not necessary to assign a value to all formal parameters (see also Parameter, p. 456). CAL MY_COUNT (CU:=var1, R:=reset, Q=>out, CV=>current) Calling the same function block in FBD:
MY_COUNT CTU var1 reset CU R PV Q CV
out current
460
35006144.07 07/2008
The value of a function block output can be stored and then saved by loading the function block output (function block instance name and separated by a full stop or entering the formal parameter). Loading and saving function block outputs: Instance Name Formal Parameter (Output) LD ST LD ST Informal Form of CAL with a List of Input Parameters MY_COUNT.Q out MY_COUNT.CV current Actual Parameter (Output)
With this type of call (call without formal parameter names), the function block is called using a CAL instruction, that follows the instance name of the function block and a bracketed list of actual parameter for the inputs and outputs. The order in which the actual parameters are listed in a function block call is significant. The list of actual parameters cannot be wrapped. EN and ENO cannot be used for this type of call. Function block call in the informal form of CAL with a list of input parameters: Instance Name Actual Parameter (Input)
CAL MY_COUNT (var1, reset, 100, out, current) Actual Parameter (Output) Calling the same function block in FBD:
MY_COUNT CTU var1 reset 100 CU R PV Q CV
out current
With informal calls it is not necessary to assign a value to all formal parameters (see also Parameter, p. 456). This is a supplement to IEC 61131-3 and must be enabled explicitly. An empty parameter field is used to omit a parameter. Call with empty parameter field: CAL MY_COUNT (var1, , 100, out, current)
35006144.07 07/2008
461
out current
An empty parameter field does not have to be used if formal parameters are omitted at the end. MY_COUNT (var1, reset) Calling the same function block in FBD:
MY_COUNT CTU var1 reset CU R PV Q CV
Function blocks may be called with an instruction list consisting of loading the actual parameters, followed by saving into the formal parameter, followed by the CAL instruction. The sequence of loading and saving the parameters is not significant. Only load and save instructions for the function block currently being configured are allowed between the first load instruction for the actual parameters and the call of the function block. All other instructions are not allowed in this position. It is not necessary to assign a value to all formal parameters (see also Parameter, p. 456). CAL with Load/Save the input parameters: Actual Parameter (Input) LD var1 ST MY_COUNT.CU LD reset ST MY_COUNT.R LD value ST MY_COUNT.PV CAL MY_COUNT LD ST LD ST MY_COUNT.Q out MY_COUNT.CV current
Formal Parameter (Input) Calling the function block Formal Parameter (Output) Actual Parameter (Output)
462
35006144.07 07/2008
Function blocks can be called using an instruction list that consists of loading the actual parameters followed by saving them in the formal parameters followed by an input operator. The sequence of loading and saving the parameters is not significant. Only load and save instructions for the function block currently being configured are allowed between the first load instruction for the actual parameters and the input operator of the function block. All other instructions are not allowed in this position. EN and ENO cannot be used for this type of call. It is not necessary to assign a value to all formal parameters (see also Parameter, p. 456). The possible input operators for the various function blocks can be found in the table. Additional input operators are not available.
Input Operator S1, R S, R1 CLK CLK CU, R, PV CD, LD, PV CU, CD, R, LD, PV IN, PT IN, PT IN, PT FB type SR RS R_TRIG F_TRIG CTU_INT, CTU_DINT, CTU_UINT, CTU_UDINT CTD_INT, CTD_DINT, CTD_UINT, CTD_UDINT CTUD_INT, CTUD_DINT, CTUD_UINT, CTUD_UDINT TP TON TOF
Use of the input operators: LD reset ST MY_COUNT.R LD value Input Operator ST MY_COUNT.PV LD var1 CU MY_COUNT LD MY_COUNT.Q ST out LD MY_COUNT.CV ST current
Actual Parameter (Input) Formal Parameter (Input) Instancename Formal Parameter (Output) Actual Parameter (Output)
35006144.07 07/2008
463
Even if the function block has no inputs or the inputs are not to be parameterized, the function block should be called before its outputs can be used. Otherwise the initial values of the outputs will be transferred, i.e. "0". E.g. Calling the function block in the IL programming language: CAL MY_CLOCK () CAL MY_COUNT (CU:=MY_CLOCK.CLK1, R:=reset, PV:=100) LD MY_COUNT.Q ST out LD MY_COUNT.CV ST current Calling the same function block in FBD:
MY_CLOCK SYSCLOCK CLK1 CLK2 CLK3 CLK4 CLK5 TIMER reset 100 CU R PV MY_COUNT CTU Q CV
out current
Function block/DFB instances can be called multiple times; other than instances of communication EFBs, these can only be called once. Calling the same function block/DFB instance more than once makes sense, for example, in the following cases: If the function block/DFB has no internal value or it is not required for further processing. In this case, memory is saved by calling the same function block/DFB instance more than once since the code for the function block/DFB is only loaded one time. The function block/DFB is then handled like a "Function". If the function block/DFB has an internal value and this is supposed to influence various program segments, for example, the value of a counter should be increased in different parts of the program. In this case, calling the same function block/DFB means that temporary results do not have to be saved for further processing in another part of the program.
464
35006144.07 07/2008
EN and ENO
With all function blocks/DFBs, an EN input and an ENO output can be configured. If the value of EN is equal to "0", when the function block/DFB is called, the algorithms defined by the function block/DFB are not executed and ENO is set to "0". If the value of EN is equal to "1", when the function block/DFB is invoked, the algorithms which are defined by the function block/DFB will be executed. After the algorithms have been executed successfully, the value of ENO is set to "1". If an error occurs when executing these algorithms, ENO is set to "0". If ENO is set to "0" (results from EN=0 or an error during execution), the outputs of the function block/DFB retain the status from the last cycle in which they were correctly executed. The output behavior of the function blocks/DFBs does not depend on whether the function blocks/DFBs are called without EN/ENO or with EN=1. If EN/ENO are used, the function block call must be formal. The assignment of variables to ENO must be made using the => operator. CAL MY_COUNT (EN:=1, CU:=var1, R:=reset, PV:=value, ENO=>error, Q=>out, CV=>current) ; Calling the same function block in FBD:
MY_COUNT CTU 1 var1 reset value EN CU R PV ENO Q CV error out current
35006144.07 07/2008
465
VAR_IN_OUT Variable
Function blocks are often used to read a variable at an input (input variables), to process it and to output the updated values of the same variable (output variables). This special type of input/output variable is also called a VAR_IN_OUT variable. The following special features are to be noted when using function blocks/DFBs with VAR_IN_OUT variables. All VAR_IN_OUT inputs must be assigned a variable. VAR_IN_OUT inputs may not have literals or constants assigned to them. VAR_IN_OUT outputs may not have values assigned to them. VAR_IN_OUT variables cannot be used outside the block call. Calling a function block with a VAR_IN_OUT variable in IL: CAL MY_FBLOCK(IN1:=V1, IN2:=V2, IO1:=V3, OUT1=>V4, OUT2=>V5) Calling the same function block in FBD:
MY_FBLOCK FBLOCK V1 V2 V3 IN1 IN2 IO1 OUT1 OUT2 IO1 V4 V5 V3
VAR_IN_OUT variables cannot be used outside the function block call. The following function block calls are therefore invalid: Invalid call, example 1:
LD V1 CAL InOutFB Loading a V1 variable in the accumulator Calling a function block with the VAR_IN_OUT parameter. The accumulator now contains a reference to a VAR_IN_OUT parameter. AND operation on accumulator contents and V2 variable. Error: The operation cannot be performed since the VAR_IN_OUT parameter (accumulator contents) cannot be accessed from outside the function block call.
AND V2
466
35006144.07 07/2008
The following function block calls are always valid: Valid call, example 1:
CAL InOutFB (IN1:=V1,inout:=V2 Calling a function block with the VAR_IN_OUT parameter and assigning the actual parameter within the function block call.
35006144.07 07/2008
467
Calling Procedures
Procedure Procedures are provided in the form of libraries. The logic of the procedure is created in the programming language C and may not be modified in the IL editor. Procedures - like functions - have no internal states. If the input values are the same, the value on the output is the same every time the procedure is executed. For example, the addition of two values gives the same result every time. In contrast to functions, procedures do not return a value and support VAR_IN_OUT variables. Procedures are a supplement to IEC 61131-3 and must be enabled explicitly. Parameter "Inputs and outputs" are required to transfer values to or from procedures. These are called formal parameters. The current process states are transferred to the formal parameters. These are called actual parameters. The following can be used as actual parameters for procedure inputs: Variable Address Literal The following can be used as actual parameters for procedure outputs: Variable Address The data type of the actual parameter must match the data type of the formal parameter. The only exceptions are generic formal parameters whose data type is determined by the actual parameter. When dealing with generic ANY_BIT formal parameters, actual parameters of the INT or DINT (not UINT and UDINT) data types can be used. This is a supplement to IEC 61131-3 and must be enabled explicitly. Example: Allowed: AND (AnyBitParam := IntVar1, AnyBitParam2 := IntVar2) Not allowed: AND_WORD (WordParam1 := IntVar1, WordParam2 := IntVar2) (In this case, AND_INT must be used.) AND_ARRAY_WORD (ArrayInt, ...) (In this case an explicit type conversion must be carried out using INT_ARR_TO_WORD_ARR (...).
468
35006144.07 07/2008
Not all formal parameters must be assigned a value for formal calls. Which formal parameter types must be assigned a value can be seen in the following table.
Parameter type Input VAR_IN_OUT Output + / EDT + STRING + ARRAY + + ANY_ARRAY IODDT + + + + STRUCT FB + + + / / ANY + + +
If no value is allocated to a formal parameter, then the initial value will be used for executing the function block. If no initial value has been defined, the default value (0) is used. Programming Notes Attention should be paid to the following programming notes: Procedures are only executed if the input EN=1 or the EN input is not used (see also EN and ENO, p. 473). Special conditions apply when using VAR_IN_OUT variables (see VAR_IN_OUT Variable, p. 474). There are two ways of calling a procedure: Formal call (calling a function with formal parameter names) In this case variables can be assigned to outputs using the => operator (calling a function block in shortened form). Informal call (calling a function without formal parameter names) With this type of call (call with formal parameter names), the procedure is called using an optional CAL instruction sequence followed by the name of the procedure and a bracketed list of actual parameter to formal parameter assignments. The assignment of the input formal parameter is made using the := assignment and the output formal parameter is made using the => assignment. The order in which the input formal parameters and output formal parameters are listed is not significant. The list of actual parameters may be wrapped immediately following a comma. EN and ENO can be used for this type of call.
Formal Call
35006144.07 07/2008
469
Calling a procedure with formal parameter names: Formal Parameters (Inputs) Formal Parameters (Outputs)
PROC (IN1:=var1, IN2:=var1, OUT1=>result1, OUT2=>result2) Actual Parameters (Inputs) Procedure Name or CAL PROC (IN1:=var1, IN2:=var1, OUT1=>result1,OUT2=>result2) or PROC (IN1:=var1, IN2:=var1, OUT1=>result1, OUT2=>result2) or CAL PROC (IN1:=var1, IN2:=var1, OUT1=>result1, OUT2=>result2) Calling the same procedure in FBD:
PROC var1 var2 IN1 IN2
OUT1 OUT2
result1 result2
With formal calls, values do not have to be assigned to all formal parameters (see also Parameter, p. 468). PROC (IN1:=var1, OUT1=>result1, OUT2=>result2) or CAL PROC (IN1:=var1, OUT1=>result1, OUT2=>result2) Calling the same procedure in FBD:
PROC var1 IN1 IN2
OUT1 OUT2
result1 result2
470
35006144.07 07/2008
With this type of call (call without formal parameter names), procedures are called using an instruction sequence consisting of the first actual parameter loaded into the accumulator, followed by the procedure name, followed by a list of the input and output actual parameters. The order in which the actual parameters are listed is significant. The list of actual parameters cannot be wrapped. EN and ENO cannot be used for this type of call. Calling a procedure with formal parameter names: Actual Parameters (Inputs) LD var1 PROC var2,result1,result2 Actual Parameters (Outputs) Procedure Name Calling the same procedure in FBD:
PROC var1 var2 IN1 IN2
OUT1 OUT2
result1 result2
Note: Note that when making an informal call, the list of actual parameters cannot be put in brackets. IEC 61133-3 requires that the brackets be left out in this case to illustrate that the first actual parameter is not a part of the list. Invalid informal call for a procedure: LD A LIMIT (B,C) If the value to be processed (first actual parameter) is already in the accumulator, the load instruction can be omitted. EXAMP1 var2,result1,result2
35006144.07 07/2008
471
With this type of call, procedures are called using an instruction sequence consisting of the CAL instruction, followed by the procedure name followed by a list of the input and output actual parameters. The order in which the actual parameters are listed is significant. The list of actual parameters cannot be wrapped. EN and ENO cannot be used for this type of call. Calling a procedure with formal parameter names using CAL instruction: Actual Parameters (Inputs) CAL PROC (var1,var2,result1,result2) Actual Parameters (Outputs) Procedure Name or CAL PROC (var1, var2, result1, result2) Calling the same procedure in FBD:
PROC var1 var2 IN1 IN2
OUT1 OUT2
result1 result2
Note: Unlike informal calls without a CAL instruction, when making informal calls with a CAL instruction, the value to be processed (first actual parameter) is not explicitly loaded in the battery. Instead it is part of the list of actual parameters. For this reason, when making informal calls with a CAL instruction, the list of actual parameters must be put in brackets.
472
35006144.07 07/2008
EN and ENO
With all procedures, an EN input and an ENO output can be configured. If the value of EN is equal to "0" when the procedure is called, the algorithms defined by the procedure are not executed and ENO is set to "0". If the value of EN is "1" when the procedure is called, the algorithms defined by the function are executed. After the algorithms have been executed successfully, the value of ENO is set to "1". If an error occurs when executing these algorithms, ENO is set to "0". If ENO is set to "0" (caused when EN=0 or an error occurred during executing), the outputs of the procedure are set to "0". If EN/ENO are used, the procedure call must be formal. The assignment of variables to ENO must be made using the => operator. PROC (EN:=1, IN1:=var1, IN2:=var2, ENO=>error, OUT1=>result1, OUT2=>result2) ; Calling the same procedure in FBD:
PROC 1 var1 var2 EN IN1 IN2 ENO OUT1 OUT2 error result1 result2
35006144.07 07/2008
473
VAR_IN_OUT Variable
Procedures are often used to read a variable at an input (input variables), to process it and to output the updated values of the same variable (output variables). This special type of input/output variable is also called a VAR_IN_OUT variable. The following special features are to be noted when using procedures with VAR_IN_OUT variables. All VAR_IN_OUT inputs must be assigned a variable. VAR_IN_OUT inputs may not have literals or constants assigned to them. VAR_IN_OUT outputs may not have values assigned to them. VAR_IN_OUT variables cannot be used outside of the procedure call. Calling a procedure with VAR_IN_OUT variable in IL: PROC3 (IN1:=V1, IN2:=V2, IO1:=V3, OUT1=>V4, OUT2=>V5) ; Calling the same procedure in FBD:
PROC3 V1 V2 V3 IN1 IN2 IO1 OUT1 OUT2 IO1 V4 V5 V3
VAR_IN_OUT variables cannot be used outside the procedure call. The following procedure calls are therefore invalid: Invalid call, example 1:
LD V1 CAL InOutProc Loading a V1 variable in the accumulator Calling a procedure with the VAR_IN_OUT parameter. The accumulator now contains a reference to a VAR_IN_OUT parameter. AND operation on contents of accumulator with variable V2. Error: The operation cannot be carried out since the VAR_IN_OUT parameter (contents of accumulator) cannot be accessed outside the procedure call.
AND V2
474
35006144.07 07/2008
The following procedure calls are always valid: Valid call, example 1:
CAL InOutProc (IN1:=V1,inout:=V2) Calling a procedure with the VAR_IN_OUT parameter and formal assignment of the actual parameter within the procedure call.
35006144.07 07/2008
475
476
35006144.07 07/2008
15
Introduction
Overview This chapter describes the programming language structured text ST which conforms to IEC 61131. This chapter contains the following sections:
Section 15.1 15.2 15.3 Topic General Information about the Structured Text ST Instructions Calling Elementary Functions, Elementary Function Blocks, Derived Function Blocks and Procedures Page 478 490 508
35006144.07 07/2008
477
15.1
Introduction
Overview What's in this Section?
This section contains a general overview of the structured text ST. This section contains the following topics:
Topic General Information about Structured Text (ST) Operands Operators Page 479 481 483
478
35006144.07 07/2008
Expression
Instructions
Representation of an ST Section
Instruction
Expression
Section Size
The length of an instruction line is limited to 300 characters. The length of an ST section is not limited within the programming environment. The length of an ST section is only limited by the size of the PLC memory.
35006144.07 07/2008
479
Syntax
Identifiers and Keywords are not case sensitive. Exception: Not allowed - spaces and tabs keywords literals values identifiers variables and limiter combinations [e.g. (* for comments)]
Execution Sequence
The evaluation of an expression consists of applying the operators to the operands in the sequence as defined by the rank of the operators (see Table of Operators (see Table of Operators, p. 483)). The operator with the highest rank in an expression is performed first, followed by the operator with the next highest rank, etc., until the evaluation is complete. Operators with the same rank are performed from left to right, as they are written in the expression. This sequence can be altered with the use of parentheses. If, for example, A, B, C and D have the values 1, 2, 3 and 4, and are calculated as follows: A+B-C*D the result is -9. In the case of the following calculation: (A+B-C)*D the result is 0. If an operator contains two operands, the left operand is executed first, e.g. in the expression SIN(A)*COS(B) the expression SIN(A) is calculated first, then COS(B) and only then is the product calculated.
Error Behavior
The following conditions are handled as an error when executing an expression: Attempting to divide by 0. Operands do not contain the correct data type for the operation. The result of a numerical operation exceeds the value range of its data type If an error occurs when executing the operation, the corresponding Systembit (%S) is set (if supported by the PLC being used).
IEC Conformity
For a description of IEC conformity for the ST programming language, see IEC Conformity (see IEC Compliance, p. 609).
480
35006144.07 07/2008
Operands
Introduction An operand can be: an address a literal a variable a multi-element variable an element of a multi-element variable a function call an FFB output Data types, which are in an instruction of processing operands, must be identical. Should operands of various types be processed, a type conversion must be performed beforehand. In the example the integer variable i1 is converted into a real variable before being added to the real variable r4. r3 := r4 + SIN(INT_TO_REAL(i1)) ; As an exception to this rule, variables with data type TIME can be multiplied or divided by variables with data type INT, DINT, UINT or UDINT. Permitted operations: timeVar1 := timeVar2 / dintVar1; timeVar1 := timeVar2 * intVar1; timeVar := 10 * time#10s; This function is listed by IEC 61131-3 as "undesired" service. Direct Use of Addresses Addresses can be used directly (without a previous declaration). In this case the addresses data type is assigned directly. The assignment is made using the "Large prefix". The different large prefixes are given in the following table:
Large prefix / Symbol no prefix X B W D F Example %I10, %CH203.MOD, %CH203.MOD.ERR %MX20 %QB102.3 %KW43 %QD100 %MF100 Data type BOOL BOOL BYTE INT DINT REAL
Data Types
35006144.07 07/2008
481
Should other data types be assigned as the default data types of an address, this must be done through an explicit declaration. This variable declaration takes place comfortably using the variable editor. The data type of an address can not be declared directly in an ST section (e.g. declaration AT %MW1: UINT; not permitted). For example, the following variables are declared in the variable editor: UnlocV1: ARRAY [1..10] OF INT; LocV1: ARRAY [1..10] OF INT AT %MW100; LocV2: TIME AT %MW100; The following calls then have the correct syntax: %MW200 := 5; UnlocV1[2] := LocV1[%MW200]; LocV2 := t#3s;
When accessing field variables (ARRAY), only literals and variables of the INT, UINT, DINT and UDINT data types are permitted in the index entry. The index of an ARRAY element can be negative if the lower threshold of the range is negative. Example: Using field variables var1[i] := 8 ; var2.otto[4] := var3 ; var4[1+i+j*5] := 4 ;
482
35006144.07 07/2008
Operators
Introduction An operator is a symbol for: an arithmetic operation to be executed or a logical operation to be executed or a function edit (call) Operators are generic, i.e. they adapt automatically to the data type of the operands. Table of Operators Operators are executed in sequence according to priority, see also Execution Sequence, p. 480. ST programming language operators:
Operator () Meaning Use of Brackets: Order of rank 1 (highest) possible operands Expression Description Brackets are used to alter the execution sequence of the operators. Example: If the operands A, B, C and D have the values 1, 2, 3, and 4, A+B-C*D has the result -9 and (A+B-C)*D has the result 0. Function processing is used to execute functions (see Calling Elementary Functions, p. 509). During negation - a sign reversal for the value of the operand takes place. Example: In the example OUT is -4 if IN1 is 4. OUT := - IN1 ; In NOT a bit by bit inversion of the operands takes place. Example: In the example OUT is 0011001100 if IN1 is 1100110011. OUT := NOT IN1 ; In exponentiation, ** the value of the first operand (basis) is raised to the power of the second operand (exponent). Example: In the example OUT is 625.0 if IN1 is 5.0 and IN2 is 4.0. OUT := IN1 ** IN2 ; 483
Expression, Literal, Variable, Address (all data types) Expression, Literal, Variable, Address of Data TypeINT, DINT, UINT, UDINT or REAL Expression, Literal, Variable, Address of Data Type BOOL, BYTE, WORD or DWORD Expression, Literal, Variable, Address of Data TypeREAL (Basis) and INT, DINT, UINT, UDINT or REAL (Exponent)
NOT
Complement
**
Exponentiation 4
35006144.07 07/2008
Operator *
Meaning Multiplication
Order of rank 5
possible operands Expression, Literal, Variable, Address of Data TypeINT, DINT, UINT, UDINT or REAL
Description In multiplication, * the value of the first operand is multiplied by the value of the second operand (exponent) . Example: In the example OUT is 20.0 if IN1 is 5.0 and IN2 is 4.0. OUT := IN1 * IN2 ; Note: The MULTIME function in the obsolete library is available for multiplications involving the data type Time. In division, / the value of the first operand is divided by the value of the second operand. Example: In the example OUT is 4.0 if IN1 is 20.0 and IN2 is 5.0. OUT := IN1 / IN2 ; Note: The DIVTIME function in the obsolete library is available for divisions involving the data type Time. For MOD the value of the first operand is divided by that of the second operand and the remainder of the division (Modulo) is displayed as the result. Example: In this example OUT is 1 if IN1 is 7 and IN2 is 2 OUT is 1 if IN1 is 7 and IN2 is -2 OUT is -1 if IN1 is -7 and IN2 is 2 OUT is -1 if IN1 is -7 and IN2 is -2 OUT := IN1 MOD IN2 ;
Division
Expression, Literal, Variable, Address of Data TypeINT, DINT, UINT, UDINT or REAL
MOD
Modulo
Expression, Literal, Variable, Address of Data Type INT, DINT, UINT or UDINT
Addition
Expression, Literal, Variable, Address of Data Type INT, DINT, UINT, UDINT, REAL or TIME
In addition, + the value of the first operand is added to the value of the second operand. Example: In this example OUT is 9, if IN1 is 7 and IN2 is 2 OUT := IN1 + IN2 ; In subtraction, - the value of the second operand is subtracted from the value of the first operand. Example: In the example OUT is 6 if IN1 is 10 and IN2 is 4. OUT := IN1 - IN2 ;
Subtraction
Expression, Literal, Variable, Address of Data Type INT, DINT, UINT, UDINT, REAL or TIME
484
35006144.07 07/2008
Operator *
Meaning Multiplication
Order of rank 5
possible operands Expression, Literal, Variable, Address of Data TypeINT, DINT, UINT, UDINT or REAL
Description In multiplication, * the value of the first operand is multiplied by the value of the second operand (exponent) . Example: In the example OUT is 20.0 if IN1 is 5.0 and IN2 is 4.0. OUT := IN1 * IN2 ; Note: The MULTIME function in the obsolete library is available for multiplications involving the data type Time. In division, / the value of the first operand is divided by the value of the second operand. Example: In the example OUT is 4.0 if IN1 is 20.0 and IN2 is 5.0. OUT := IN1 / IN2 ; Note: The DIVTIME function in the obsolete library is available for divisions involving the data type Time. For MOD the value of the first operand is divided by that of the second operand and the remainder of the division (Modulo) is displayed as the result. Example: In this example OUT is 1 if IN1 is 7 and IN2 is 2 OUT is 1 if IN1 is 7 and IN2 is -2 OUT is -1 if IN1 is -7 and IN2 is 2 OUT is -1 if IN1 is -7 and IN2 is -2 OUT := IN1 MOD IN2 ;
Division
Expression, Literal, Variable, Address of Data TypeINT, DINT, UINT, UDINT or REAL
MOD
Modulo
Expression, Literal, Variable, Address of Data Type INT, DINT, UINT or UDINT
Addition
Expression, Literal, Variable, Address of Data Type INT, DINT, UINT, UDINT, REAL or TIME
In addition, + the value of the first operand is added to the value of the second operand. Example: In this example OUT is 9, if IN1 is 7 and IN2 is 2 OUT := IN1 + IN2 ; In subtraction, - the value of the second operand is subtracted from the value of the first operand. Example: In the example OUT is 6 if IN1 is 10 and IN2 is 4. OUT := IN1 - IN2 ;
Subtraction
Expression, Literal, Variable, Address of Data Type INT, DINT, UINT, UDINT, REAL or TIME
35006144.07 07/2008
485
Operator *
Meaning Multiplication
Order of rank 5
possible operands Expression, Literal, Variable, Address of Data TypeINT, DINT, UINT, UDINT or REAL
Description In multiplication, * the value of the first operand is multiplied by the value of the second operand (exponent) . Example: In the example OUT is 20.0 if IN1 is 5.0 and IN2 is 4.0. OUT := IN1 * IN2 ; Note: The MULTIME function in the obsolete library is available for multiplications involving the data type Time. In division, / the value of the first operand is divided by the value of the second operand. Example: In the example OUT is 4.0 if IN1 is 20.0 and IN2 is 5.0. OUT := IN1 / IN2 ; Note: The DIVTIME function in the obsolete library is available for divisions involving the data type Time. For MOD the value of the first operand is divided by that of the second operand and the remainder of the division (Modulo) is displayed as the result. Example: In this example OUT is 1 if IN1 is 7 and IN2 is 2 OUT is 1 if IN1 is 7 and IN2 is -2 OUT is -1 if IN1 is -7 and IN2 is 2 OUT is -1 if IN1 is -7 and IN2 is -2 OUT := IN1 MOD IN2 ;
Division
Expression, Literal, Variable, Address of Data TypeINT, DINT, UINT, UDINT or REAL
MOD
Modulo
Expression, Literal, Variable, Address of Data Type INT, DINT, UINT or UDINT
Addition
Expression, Literal, Variable, Address of Data Type INT, DINT, UINT, UDINT, REAL or TIME
In addition, + the value of the first operand is added to the value of the second operand. Example: In this example OUT is 9, if IN1 is 7 and IN2 is 2 OUT := IN1 + IN2 ; In subtraction, - the value of the second operand is subtracted from the value of the first operand. Example: In the example OUT is 6 if IN1 is 10 and IN2 is 4. OUT := IN1 - IN2 ;
Subtraction
Expression, Literal, Variable, Address of Data Type INT, DINT, UINT, UDINT, REAL or TIME
486
35006144.07 07/2008
Operator <
Order of rank 7
possible operands Expression, Literal, Variable, Address of Data Type BOOL, BYTE, INT, DINT, UINT, UDINT, REAL, TIME, WORD, DWORD, STRING, DT, DATE or TOD
Description The value of the first operand is compared with the value of the second using <. If the value of the first operand is less than the value of the second, the result is a Boolean 1. If the value of the first operand is greater than or equal to the value of the second, the result is a Boolean 0. Example: In the example OUT is 1 if IN1 is less than 10 and is otherwise 0. OUT := IN1 < 10 ; The value of the first operand is compared with the value of the second using >. If the value of the first operand is greater than the value of the second, the result is a Boolean 1. If the value of the first operand is less than or equal to the value of the second, the result is a Boolean 0. Example: In the example OUT is 1 if IN1 is greater than 10, and is 0 if IN1 is less than 0. OUT := IN1 > 10 ; The value of the first operand is compared with the value of the second operand using <=. If the value of the first operand is less than or equal to the value of the second, the result is a Boolean 1. If the value of the first operand is greater than the value of the second, the result is a Boolean 0. Example: In the example OUT is 1 if IN1 is less than or equal to 10, and otherwise is 0. OUT := IN1 <= 10 ;
>
Expression, Literal, Variable, Address of Data Type BOOL, BYTE, INT, DINT, UINT, UDINT, REAL, TIME, WORD, DWORD, STRING, DT, DATE or TOD
<=
Expression, Literal, Variable, Address of Data Type BOOL, BYTE, INT, DINT, UINT, UDINT, REAL, TIME, WORD, DWORD, STRING, DT, DATE or TOD
35006144.07 07/2008
487
Operator >=
Meaning
Order of rank
possible operands Expression, Literal, Variable, Address of Data Type BOOL, BYTE, INT, DINT, UINT, UDINT, REAL, TIME, WORD, DWORD, STRING, DT, DATE or TOD
Description The value of the first operand is compared with the value of the second operand using >=. If the value of the first operand is greater than or equal to the value of the second, the result is a Boolean 1. If the value of the first operand is less than the value of the second, the result is a Boolean 0. Example: In the example OUT is 1 if IN1 is greater than or equal to 10, and otherwise is 0. OUT := IN1 >= 10 ; The value of the first operand is compared with the value of the second operand using =. If the value of the first operand is equal to the value of the second, the result is a Boolean 1. If the value of the first operand is not equal to the value of the second, the result is a Boolean 0. Example: In the example OUT is 1 if IN1 is equal to 10 and is otherwise 0. OUT := IN1 = 10 ; The value of the first operand is compared with the value of the second using <>. If the value of the first operand is not equal to the value of the second, the result is a Boolean 1. If the value of the first operand is equal to the value of the second, the result is a Boolean 0. Example: In the example OUT is 1 if IN1 is not equal to 10 and is otherwise 0. OUT := IN1 <> 10 ; With &, there is a logical AND link between the operands. In the case of BYTE, WORD and DWORD data types, the link is made bit by bit. Example: In the examples OUT is 1 if IN1, IN2 and IN3 are 1. OUT := IN1 & IN2 & IN3 ;
Equality
Expression, Literal, Variable, Address of Data Type BOOL, BYTE, INT, DINT, UINT, UDINT, REAL, TIME, WORD, DWORD, STRING, DT, DATE or TOD
<>
Inequality
Expression, Literal, Variable, Address of Data Type BOOL, BYTE, INT, DINT, UINT, UDINT, REAL, TIME, WORD, DWORD, STRING, DT, DATE or TOD
&
Logical AND
Expression, Literal, Variable, Address of Data Type BOOL, BYTE, WORD or DWORD
488
35006144.07 07/2008
Operator AND
Order of rank 9
possible operands Expression, Literal, Variable, Address of Data Type BOOL, BYTE, WORD or DWORD
Description With AND, there is a logical AND link between the operands. In the case of BYTE, WORD and DWORD data types, the link is made bit by bit. Example: In the examples OUT is 1 if IN1, IN2 and IN3 are 1. OUT := IN1 AND IN2 AND IN3 ; With XOR, there is a logical Exclusive OR link between the operations. In the case of BYTE, WORD and DWORD data types, the link is made bit by bit. Example: In the example OUT is 1 if IN1 and IN2 are not equal. If A and B have the same status (both 0 or 1), D is 0. OUT := IN1 XOR IN2 ; If more than two operands are linked, the result with an uneven number of 1-states is 1, and is 0 with an even number of 1-states. Example: In the example OUT is 1 if 1 or 3 operands are 1. OUT is 0 if 0, 2 or 4 operands are 1. OUT := IN1 XOR IN2 XOR IN3 XOR IN4 ; With OR, there is a logical OR link between the operands. With the BYTE and WORD, DWORD data types, the link is made bit by bit. Example: In the example OUT is 1 if IN1, IN2 or IN3 is 1. OUT := IN1 OR IN2 OR IN3 ;
XOR
Logical Exclusive OR
10
Expression, Literal, Variable, Address of Data Type BOOL, BYTE, WORD or DWORD
OR
Logical OR
11 (lowest)
Expression, Literal, Variable, Address of Data Type BOOL, BYTE, WORD or DWORD
35006144.07 07/2008
489
15.2
Introduction
Overview
Instructions
This section describes the instructions for the programming language of structured text ST. This section contains the following topics:
Topic Instructions Assignment Select Instruction IF...THEN...END_IF Select Instruction ELSE Select Instruction ELSIF...THEN Select Instruction CASE...OF...END_CASE Repeat Instruction FOR...TO...BY...DO...END_FOR Repeat Instruction WHILE...DO...END_WHILE Repeat Instruction REPEAT...UNTIL...END_REPEAT Repeat Instruction EXIT Subroutine Call RETURN Empty Instruction Labels and Jumps Comment Page 491 492 494 495 496 497 498 500 501 502 503 504 505 506 507
490
35006144.07 07/2008
Instructions
Description Instructions are the "Commands" of the ST programming language. Instructions must be terminated with semicolons. Several instructions (separated by semicolons) can be present in one line. A single semicolon represents an Empty instruction (see Empty Instruction, p. 505).
35006144.07 07/2008
491
Assignment
Introduction When an assignment is performed, the current value of a single or multi-element variable is replaced by the result of the evaluation of the expression. An assignment consists of a variable specification on the left side, followed by the assignment operator :=, followed by the expression to be evaluated. Both variables (left and right sides of the assignment operator) must have the same data type. Arrays are a special case. After being explicitly enabled, assignment of two arrays with different lengths can be made. Assigning the Value of a Variable to Another Variable Assignments are used to assign the value of a variable to another variable. The instruction A := B ; is used, for example, to replace the value of the variable A with the current value of variable B. If A and B are elementary data types, the individual value of B is passed to A. If A and B are derived data types, the values of all B elements are passed to A. Assigning the Value of a Literal to a Variable Assignments are used to assign a literal to variables. The instruction C := 25 ; is used, for example, to assign the value 25 to the variable C. Assigning the Value of an Operation to a Variable Assignments are used to assign to a variable a value which is the result of an operation. The instruction X := (A+B-C)*D ; is used, for example, to assign the result of the operation (A+B-C)*D to the variable X.
492
35006144.07 07/2008
Assignments are used to assign a value returned by a function or a function block to a variable. The instruction B := MOD(C,A) ; is used, for example, to call the MOD (Modulo) function and assign the result of the calculation to the variable B. The instruction A := MY_TON.Q ; is used, for example, to assign the value of the Q output of the MY_TON function block (instance of the TON function block) to the variable A. (This is not a function block call) )
Multiple Assignments
Multiple assignments are a supplement to IEC 61131-3 and must be enabled explicitly. Even after being enabled, multiple assignments are NOT allowed in the following cases: in the parameter list for a function block call in the element list to initialize structured variables The instruction X := Y := Z is allowed. The instructions FB(in1 := 1, In2 := In3 := 2) ; and strucVar := (comp1 := 1, comp2 := comp3 := 2) ; are not allowed.
Assignments between arrays and WORD-/DWORD variables are only possible if a type conversion has previously been carried out, e.g.: %Q3.0:16 := INT_TO_AR_BOOL(%MW20) ; The following conversion functions are available (General Library, family Array): MOVE_BOOL_AREBOOL MOVE_WORD_ARWORD MOVE_DWORD_ARDWORD MOVE_INT_ARINT MOVE_DINT_ARDINT MOVE_REAL_ARREAL
35006144.07 07/2008
493
The condition can be expressed using a Boolean variable. If FLAG is 1, the instructions will be executed; if FLAG is 0, they will not be executed. IF FLAG THEN C:=SIN(A) * COS(B) ; B:=C - A ; END_IF ; The condition can be expressed using an operation that returns a Boolean result. If A is greater than B, the instructions will be executed; if A is less than or equal to B, they will not be executed. IF A>B THEN C:=SIN(A) * COS(B) ; B:=C - A ; END_IF ;
The condition can be inverted using NOT (execution of both instructions at 0). IF NOT FLAG THEN C:=SIN_REAL(A) * COS_REAL(B) ; B:=C - A ; END_IF ; ELSE (see Select Instruction ELSE, p. 495) ELSIF (see Select Instruction ELSIF...THEN, p. 496)
See Also
494
35006144.07 07/2008
Example ELSE
IF A>B THEN C:=SIN(A) * COS(B) ; B:=C - A ; ELSE C:=A + B ; B:=C * A ; END_IF ; IF (see Select Instruction IF...THEN...END_IF, p. 494) ELSIF (see Select Instruction ELSIF...THEN, p. 496) CASE (see Select Instruction CASE...OF...END_CASE, p. 497)
See Also
35006144.07 07/2008
495
Example ELSIF...THEN
IF A>B THEN C:=SIN(A) * B:=SUB(C,A) ELSIF A=B THEN C:=ADD(A,B) B:=MUL(C,A) END_IF ;
COS(B) ; ; ; ;
IF A>B THEN IF B=C THEN C:=SIN(A) * COS(B) ; ELSE B:=SUB(C,A) ; END_IF ; ELSIF A=B THEN C:=ADD(A,B) ; B:=MUL(C,A) ; ELSE C:=DIV(A,B) ; END_IF ; IF (see Select Instruction IF...THEN...END_IF, p. 494) ELSE (see Select Instruction ELSE, p. 495)
See Also
496
35006144.07 07/2008
Tags
See Also
35006144.07 07/2008
497
498
35006144.07 07/2008
If an increment other than 1 is to be used, it can be defined by BY. The increment, the initial value, the end value and the control variable must be of the same data type (DINT or INT). The criterion for the processing direction (forwards, backwards) is the sign of the BY expression. If this expression is positive, the loop will run forward; if it is negative, the loop will run backward. Counting forward in two steps Control variable Start value End value Increment
FOR i:= 1 TO 10 BY 2 DO (* BY > 0 : Forwards.loop *) C:= C * COS(B) ; (* Loop is 5 x executed *) END_FOR ; Example: Counting Backwards Counting backwards FOR i:= 10 TO 1 BY -1 DO (* BY < 0 : Backwards.loop *) C:= C * COS(B) ; (* Instruction is executed 10 x *) END_FOR ; The loops in the example are run exactly once, as the initial value = end value. In this context it does not matter whether the increment is positive or negative. FOR i:= 10 TO 10 DO (* Unique Loop *) C:= C * COS(B) ; END_FOR ; or FOR i:= 10 TO 10 BY -1 DO (* Unique Loop *) C:= C * COS(B) ; END_FOR ; Example: Critical Loops If the increment is j > 0 in the example, the instruction is executed. If j < is 0, the instructions are not executed because the situation initial value < only allows the end value to be incremented by 0. If j = 0, the instructions are executed and an endless loop is created as the end value will never be reached with an increment of 0. FOR i:= 1 TO 10 BY j DO C:= C * COS(B) ; END_FOR ;
35006144.07 07/2008
499
See Also
500
35006144.07 07/2008
See Also
35006144.07 07/2008
501
502
35006144.07 07/2008
Subroutine Call
Subroutine Call A subroutine call consists of the name of the subroutine section followed by an empty parameter list. Subroutine calls do not return a value. The subroutine to be called must be located in the same task as the ST section called. Subroutines can also be called from within subroutines. For example: SubroutineName () ; Subroutine calls are a supplement to IEC 61131-3 and must be enabled explicitly. In SFC action sections, subroutine calls are only allowed when Multitoken Operation is enabled.
35006144.07 07/2008
503
RETURN
Description RETURN instructions can be used in DFBs (derived function blocks) and in SRs (subroutines). RETURN instructions can not be used in the main program. In a DFB, a RETURN instruction forces the return to the program which called the DFB. The rest of the DFB section containing the RETURN instruction is not executed. The next sections of the DFB are not executed. The program which called the DFB will be executed after return from the DFB. If the DFB is called by another DFB, the calling DFB will be executed after return. In a SR, a RETURN instruction forces the return to the program which called the SR. The rest of the SR containing the RETURN instruction is not executed. The program which called the SR will be executed after return from the SR.
504
35006144.07 07/2008
Empty Instruction
Description A single semicolon ; represents an empty instruction. For example, IF x THEN ; ELSE .. In this example, an empty instruction follows the THEN instruction. This means that the program exits the IF instruction as soon as the IF condition is 1.
35006144.07 07/2008
505
Properties of Jumps
Example
506
35006144.07 07/2008
Comment
Description In the ST editor, comments always start with the string (* and end in the string *). Any comments can be entered between these character strings. Comments can be entered in any position in the ST editor, except in keywords, literals, identifiers and variables. Nesting comments is not permitted according to IEC 61131-3. If comments are nested nevertheless, then they must be enabled explicitly.
35006144.07 07/2008
507
15.3
Calling Elementary Functions, Elementary Function Blocks, Derived Function Blocks and Procedures
Introduction
Overview Calling Elementary Functions, Elementary Function Blocks, Derived Function Blocks and Procedures in the ST programming language. This section contains the following topics:
Topic Calling Elementary Functions Call Elementary Function Block and Derived Function Block Procedures Page 509 515 523
508
35006144.07 07/2008
509
Not all formal parameters must be assigned with a value. You can see which formal parameter types must be assigned with a value in the following table.
Parameter type Input VAR_IN_OUT Output + / EDT + STRING + ARRAY + + ANY_ARRAY IODDT + + + + STRUCT FB + + + / / ANY + + -
If no value is allocated to a formal parameter, then the initial value will be used for executing the function block. If no initial value has been defined then the default value (0) is used. Programming Notes Attention should be paid to the following programming notes: All generic functions are overloaded. This means the functions can be called with or without entering the data type. E.g. i1 := ADD (i2, 3); is identical to i1 := ADD_INT (i2, 3); Functions can be nested (see also Nesting Functions, p. 513). Functions are only executed if the input EN=1 or the EN input is not used (see also EN and ENO, p. 514). There are two ways of calling a function: Formal call (calling a function with formal parameter names) Informal call (calling a function without formal parameter names)
510
35006144.07 07/2008
Formal Call
With formal calls (calls with formal parameter names), the call consists of the actual parameter of the output, followed by the assignment instruction :=, then the function name and then by a bracketed list of value assignments (actual parameters) to the formal parameter. The order in which the formal parameters are enumerated in a function call is not significant. EN and ENO can be used for this type of call. Calling a function with formal parameter names: Actual Parameter (Output) Formal Parameters
out:=LIMIT (MN:=0, IN:=var1, MX:=5 + var) ; Function Name Actual Parameters (Inputs)
With formal calls it is not necessary to assign a value to all formal parameters (see also Parameters, p. 509). out:=LIMIT (MN:=0, IN:=var1) ; Calling the same function in FBD:
LIMIT 0 var1 MN IN MX
OUT
out
35006144.07 07/2008
511
Informal Call
With informal calls (calls without formal parameter names), the call consists of the actual parameter of the output, followed by the symbol of the assignment instruction :=, then the function name and then by a bracketed list of the inputs actual parameters. The order that the actual parameters are enumerated in a function call is significant. EN and ENO cannot be used for this type of call. Calling a function without formal parameter names: Actual Parameter (Output) out:=LIMIT (0, var1, 5 + var) ; Function Name Actual Parameters (Inputs)
With informal calls it is not necessary to assign a value to all formal parameters (see also Parameters, p. 509). This is a supplement to IEC 61131-3 and must be enabled explicitly. An empty parameter field is used to skip a parameter. Call with empty parameter field: out:=LIMIT ( ,var1, 5 + var) ; Calling the same function in FBD:
LIMIT var1 5 + var MN IN MX out
An empty parameter field does not have to be used if formal parameters are omitted at the end. out:=LIMIT (0, var1) ; Calling the same function in FBD:
LIMIT 0 var1 MN IN MX out
512
35006144.07 07/2008
Nesting Functions
A function call can include the call of further functions. The nesting depth is not limited. Nested call of array function: out:=LIMIT (MN:=4, IN:=MUL(IN1:=var1, IN2:=var2), MX:=5) ; Calling the same function in FBD:
LIMIT MUL var1 var2 IN1 IN2 4 MN IN MX out
OUT
5
Functions that return a value of the ANY_ARRAY data type can not be used within a function call. Unauthorized nesting with ANY_ARRAY: ANY_ARRAY out:=LIMIT (MN:=4, IN:=EXAMP(IN1:=var1, IN2:=var2), MX:=5) ; ANY_ARRAY is permitted as the return value of the function called or as a parameter of the nested functions. Authorized nesting with ANY_ARRAY: ANY_ARRAY ANY_ARRAY ANY_ARRAY
35006144.07 07/2008
513
EN and ENO
With all functions an EN input and an ENO output can be configured. If the value of EN is equal to "0", when the function is called, the algorithms defined by the function are not executed and ENO is set to "0". If the value of EN is equal to "1", when the function is called, the algorithms which are defined by the function are executed. After successful execution of these algorithms, the value of ENO is set to "1". If an error occurs during execution of these algorithms, ENO will be set to "0". If ENO is set to "0" (caused when EN=0 or an error occurred during executing), the output of the function is set to "0". The output behavior of the function does not depend on whether the function was called up without EN/ENO or with EN=1. If EN/ENO are used, the function call must be formal. out:=LIMIT (EN:=1, MN:=0, IN:=var1, MX:=5, ENO=>var2) ; Calling the same function in FBD:
LIMIT 1 0 var1 5 EN MN IN MX ENO var2 out
514
35006144.07 07/2008
Parameter
35006144.07 07/2008
515
Not all formal parameters must be assigned with a value. Which formal parameter types must be assigned a value can be seen in the following table.
Parameter type EFB: Input EDT STRING + + + + ARRAY + + + + + + ANY_ARRAY IODDT + + + + + / / + + / + / STRUCT FB + + + + / / / / / / ANY + + + + + +
If no value is allocated to a formal parameter, then the initial value will be used for executing the function block. If no initial value has been defined then the default value (0) is used. If a formal parameter is not assigned with a value and the function block/DFB is instanced more than once, then the following instances are run with the old value. Public Variables In addition to inputs and outputs, some function blocks also provide public variables. These variables transfer statistical values (values that are not influenced by the process) to the function block. They are used for setting parameters for the function block. Public variables are a supplement to IEC 61131-3. The assignment of values to public variables is made via their initial values or assignments. Example:
Instance Name Public Variable (D_ACT1 is an instance of the function block D_ACT and has the public variables AREA_NR and OP_CTRL.)
D_ACT1.OP_CTRL := 1 ;
Public variables are read via the instance name of the function block and the names of the public variables. Example:
Instance Name Public Variable
Var1 := D_ACT1.OP_CTRL ;
516
35006144.07 07/2008
Private Variables
In addition to inputs, outputs and public variables, some function blocks also provide private variables. Like public variables, private variables are used to transfer statistical values (values that are not influenced by the process) to the function block. Private variables can not be accessed by user program. These type of variables can only be accessed by the animation table. Note: Nested DFBs are declared as private variables of the parent DFB. So their variables are also not accessible through programming, but trough the animation table. Private variables are a supplement to IEC 61131-3.
Programming Notes
Attention should be paid to the following programming notes: Functions blocks are only executed if the input EN=1 or the EN input is not used (see also EN and ENO, p. 521). The assignment of variables to ANY or ARRAY output types must be made using the => operator (see also Formal Call, p. 518). Assignments cannot be made outside of the function block call. The instruction My_Var := My_SAH.OUT; is invalid, if the output OUT of the SAH function block is of type ANY. The instruction Cal My_SAH (OUT=>My_Var); is valid. Special conditions apply when using VAR_IN_OUT variables (see VAR_IN_OUT-Variable, p. 521). The use of function blocks consists of two parts in ST: the Declaration (see Declaration, p. 517) calling the function block There are two ways of calling a function block: Formal call (see Formal Call, p. 518) (calling a function with formal parameter names) This way variables can be assigned to outputs using the => operator. Informal call (see Informal Call, p. 519) (call without formal parameter names) Function block/DFB instances can be called multiple times; other than instances of communication EFBs, these can only be called once (see Multiple Function Block Instance Call, p. 520). Before calling a function block it must be declared in the variables editor.
Declaration
35006144.07 07/2008
517
Formal Call
With formal calls (call with formal parameter names), the function block is called using an instruction sequence made from the function blocks instance names that follows a bracketed list of actual parameter assignments to the formal parameters. Assign input formal parameters via :=Assignment and the assignment of the input formal parameter using the := assignment. The sequence in which the input formal parameters and output formal parameters are enumerated is not significant. EN and ENO can be used for this type of call. Calling a function block with formal parameter names:
Actual Parameters (Inputs) Actual Parameters (Outputs) Calling the same function block in FBD:
MY_COUNT CTU var1 reset 100 + value CU R PV Q CV
out current
Assigning the value of a function block output is made by entering the actual parameter name, followed by the assignment instruction :=followed by the instance name of the function block and loading the formal parameter of the function block output (separated by a full-stop). E.g. MY_COUNT (CU:=var1, R:=reset, PV:=100 + value); Q := MY_COUNT.out ; CV := MY_COUNT.current ; Note: Type Array DDTs cannot be assigned this way. However, Type Structure DDTs may be assigned. It is not necessary to assign a value to all formal parameters (see also Parameter, p. 515). MY_COUNT (CU:=var1, R:=reset, Q=>out, CV=>current);
518
35006144.07 07/2008
out current
Informal Call
With informal calls (call without Formal parameter names), the function block is called using an instruction made from the function block instance names, followed by a bracketed list of the actual parameters for the inputs and outputs. The order in which the actual parameters are listed in a function block call is significant. EN and ENO cannot be used for this type of call. Calling a function block without formal parameter names: Instance Name Actual Parameter (Input) MY_COUNT (var1, reset, 100+value, out, current) ; Actual Parameter (Output) Calling the same function block in FBD:
MY_COUNT CTU var1 reset 100 + value CU R PV Q CV
out current
With informal calls it is not necessary to assign a value to all formal parameters (see also Parameter, p. 515). This does not apply for VAR_IN_OUT variables, for input parameters with dynamic lengths and outputs of type ANY. It must always be assigned a variable. This is a supplement to IEC 61131-3 and must be enabled explicitly. An empty parameter field is used to skip a parameter. Call with empty parameter field: MY_COUNT (var1, , 100 + value, out, current) ; Calling the same function block in FBD:
MY_COUNT CTU var1 100 + value CU R PV Q CV
out current
35006144.07 07/2008
519
An empty parameter field does not have to be used if formal parameters are omitted at the end. MY_COUNT (var1, reset) ; Calling the same function block in FBD:
MY_COUNT CTU var1 reset CU R PV Q CV
Even if the function block has no inputs or the inputs are not to be parameterized, the function block should be called before its outputs can be used. Otherwise the initial values of the outputs will be transferred, i.e. "0". E.g. Calling the function block in ST: MY_CLOCK () ; MY_COUNT (CU:=MY_CLOCK.CLK1, R:=reset, PV:=100, Q=>out, CV=>current) ; Calling the same function block in FBD:
MY_CLOCK SYSCLOCK CLK1 CLK2 CLK3 CLK4 CLK5 TIMER reset 100 CU R PV MY_COUNT CTU Q CV
out current
Function block/DFB instances can be called multiple times; other than instances of communication EFBs, these can only be called once. Calling the same function block/DFB instance more than once makes sense, for example, in the following cases: If the function block/DFB has no internal value or it is not required for further processing. In this case, memory is saved by calling the same function block/DFB instance more than once since the code for the function block/DFB is only loaded once. The function block/DFB is then handled like a "Function". If the function block/DFB has an internal value and this is supposed to influence various program segments, for example, the value of a counter should be increased in different parts of the program. In this case, calling the same function block/DFB means that temporary results do not have to be saved for further processing in another part of the program.
35006144.07 07/2008
520
EN and ENO
With all function blocks/DFBs, an EN input and an ENO output can be configured. If the value of EN is equal to "0", when the function block/DFB is called, the algorithms defined by the function block/DFB are not executed and ENO is set to "0". If the value of EN is equal to "1", when the function block/DFB is invoked, the algorithms which are defined by the function block/DFB will be executed. After the algorithms have been executed successfully, the value of ENO is set to "1". If an error occurred while executing the algorithms, ENO is set to "0". If ENO is set to "0" (results from EN=0 or an error during execution), the outputs of the function block/DFB retain the status from the last cycle in which they were correctly executed. The output behavior of the function blocks/DFBs does not depend on whether the function blocks/DFBs are called without EN/ENO or with EN=1. If EN/ENO are used, the function block call must be formal. The assignment of variables to ENO must be made using the => operator. MY_COUNT (EN:=1, CU:=var1, R:=reset, PV:=100 + value, ENO=>error, Q=>out, CV=>current) ; Calling the same function block in FBD:
MY_COUNT CTU 1 var1 reset 100 + value EN CU R PV ENO Q CV error out current
VAR_IN_OUTVariable
Function blocks are often used to read a variable at an input (input variables), to process it and to restate the altered values of the same variable (output variables). This special type of input/output variable is also called a VAR_IN_OUT variable. The following special features are to be noted when using function blocks/DFBs with VAR_IN_OUT variables. All VAR_IN_OUT inputs must be assigned a variable. VAR_IN_OUT inputs may not have literals or constants assigned to them. VAR_IN_OUT outputs may not have values assigned to them. VAR_IN_OUT variables cannot be used outside of the function block call. Calling a function block with VAR_IN_OUT variable in ST: MY_FBLOCK(IN1:=V1, IN2:=V2, IO1:=V3, OUT1=>V4, OUT2=>V5);
35006144.07 07/2008
521
VAR_IN_OUT variables cannot be used outside the function block call. The following function block calls are therefore invalid: Invalid call, example 1:
InOutFB.inout := V1; Assigning the variables V1 to a VAR_IN_OUT parameter. Error: The operation cannot be executed since the VAR_IN_OUT parameter cannot be accessed outside of the function block call.
The following function block calls are always valid: Valid call, example 1:
InOutFB (inout:=V1); Calling a function block with the VAR_IN_OUT parameter and formal assignment of the actual parameter within the function block call.
522
35006144.07 07/2008
Procedures
Procedure Procedures are provided in the form of libraries. The logic of the procedure is created in the programming language C and may not be modified in the ST editor. Procedures - like functions - have no internal states. If the input values are the same, the value on the output is the same for all executions of the procedure. For example, the addition of two values gives the same result at every execution. In contrast to functions, procedures do not return a value and support VAR_IN_OUT variables. Procedures are a supplement to IEC 61131-3 and must be enabled explicitly. Parameter "Inputs and outputs" are required to transfer values to or from procedures. These are called formal parameters. The current process states are transferred to the formal parameters. These are called actual parameters. The following can be used as actual parameters for procedure inputs: Variable Address Literal ST Expression The following can be used as actual parameters for procedure outputs: Variable Address The data type of the actual parameters must match the data type of the formal parameters. The only exceptions are generic formal parameters whose data type is determined by the actual parameter. When dealing with generic ANY_BIT formal parameters, actual parameters of the INT or DINT (not UINT and UDINT) data types can be used. This is a supplement to IEC 61131-3 and must be enabled explicitly. Example: Allowed: AND (AnyBitParam := IntVar1, AnyBitParam2 := IntVar2);
35006144.07 07/2008
523
Not allowed: AND_WORD (WordParam1 := IntVar1, WordParam2 := IntVar2); (In this case, AND_INT must be used.) AND_ARRAY_WORD (ArrayInt, ...); (In this case an explicit type conversion must be carried out using INT_ARR_TO_WORD_ARR (...);. Not all formal parameters must be assigned with a value. You can see which formal parameter types must be assigned with a value in the following table.
Parameter type Input VAR_IN_OUT Output + / EDT + STRING + ARRAY + + ANY_ARRAY + + IODDT + + STRUCT + + FB + / / ANY + + +
If no value is allocated to a formal parameter, then the initial value will be used for executing the function block. If no initial value has been defined then the default value (0) is used. Programming Notes Attention should be paid to the following programming notes: Procedures are only executed if the input EN=1 or the EN input is not used (see also EN and ENO, p. 527). Special conditions apply when using VAR_IN_OUT variables (see VAR_IN_OUT Variable, p. 528). There are two ways of calling a procedure: Formal call (see Formal Call, p. 525) (calling a function with formal parameter names) This way variables can be assigned to outputs using the => operator. Informal call (see Informal Call, p. 526) (call without formal parameter names)
524
35006144.07 07/2008
Formal Call
With formal calls (call with formal parameter names), the procedures are called using an instruction sequence made from the procedure name, followed by a bracketed list of actual parameter assignments to the formal parameters. The assignment of the input formal parameter is made using the := assignment and the output formal parameter is made using the => assignment. The sequence in which the input formal parameters and output formal parameters are enumerated is not significant. EN and ENO can be used for this type of call. Calling a procedure with formal parameter names: Procedure Name Formal Parameters (Inputs) Formal Parameters (Outputs)
result1 result2
With formal calls it is not necessary to assign a value to all formal parameters (see also Parameter, p. 523). PROC (IN1:=var1, OUT1=>result1, OUT2=>result2); Calling the same procedure in FBD:
PROC var1 IN1 IN2
OUT1 OUT2
result1 result2
35006144.07 07/2008
525
Informal Call
With informal calls (call without formal parameter names), procedures are called using an instruction made from the procedure name, followed by a bracketed list of the inputs and outputs actual parameters. The order that the actual parameters are enumerated in a procedure call is significant. EN and ENO cannot be used for this type of call. Calling a procedure without formal parameter names: Procedure Name Actual Parameters (Inputs)
PROC (var1, var2, result1, result2) ; Actual Parameter (Output) Calling the same procedure in FBD:
PROC var1 var2 IN1 IN2 OUT1 OUT2
result1 result2
With informal calls it is not necessary to assign a value to all formal parameters (see also Parameter, p. 523). This is a supplement to IEC 61131-3 and must be enabled explicitly. An empty parameter field is used to skip a parameter. Call with empty parameter field: PROC (var1, , result1, result2) ; Calling the same procedure in FBD:
PROC var1 IN1 IN2 OUT1 OUT2
result1 result2
An empty parameter field does not have to be used if formal parameters are omitted at the end. PROC (var1, var2, result1) ; Calling the same procedure in FBD:
PROC var1 var2 IN1 IN2 OUT1 OUT2
result1
526
35006144.07 07/2008
EN and ENO
With all procedures, an EN input and an ENO output can be configured. If the value of EN is equal to "0", when the procedure is called, the algorithms defined by the procedure are not executed and ENO is set to "0". If the value of EN is "1" when the procedure is called, the algorithms defined by the function are executed. After successful execution of these algorithms, the value of ENO is set to "1". If an error occurs during execution of these algorithms, ENO will be set to "0". If ENO is set to "0" (caused when EN=0 or an error occurred during executing), the outputs of the procedure are set to "0". The output behavior of the procedure does not depend on whether the function is called without EN or with EN=1. If EN/ENO are used, the procedure call must be formal. The assignment of variables to ENO must be made using the => operator. PROC (EN:=1, IN1:=var1, IN2:=var2, ENO=>error, OUT1=>result1, OUT2=>result2) ; Calling the same procedure in FBD:
PROC 1 var1 var2 EN IN1 IN2 ENO OUT1 OUT2 error result1 result2
35006144.07 07/2008
527
VAR_IN_OUT Variable
Procedures are often used to read a variable at an input (input variables), to process it and to restate the altered values of the same variable (output variables). This special type of input/output variable is also called a VAR_IN_OUT variable. The following special features are to be noted when using procedures with VAR_IN_OUT variables. All VAR_IN_OUT inputs must be assigned a variable. VAR_IN_OUT inputs may not have literals or constants assigned to them. VAR_IN_OUT outputs may not have values assigned to them. VAR_IN_OUT variables cannot be used outside of the procedure call. Calling a procedure with VAR_IN_OUT variable in ST: PROC2 (IN1:=V1, IN2:=V2, IO1:=V3, OUT1=>V4, OUT2=>V5) ; Calling the same procedure in FBD:
PROC2 V1 V2 V3 IN1 IN2 IO1 OUT1 OUT2 IO1 V4 V5 V3
VAR_IN_OUT variables cannot be used outside of the procedure call. The following procedure calls are therefore invalid: Invalid call, example 1:
InOutProc.inout := V1; Assigning the variables V1 to a VAR_IN_OUT parameter. Error: The operation cannot be executed since the VAR_IN_OUT parameter cannot be accessed outside of the procedure call.
The following procedure calls are always valid: Valid call, example 1:
InOutProc (inout:=V1); Calling a procedure with the VAR_IN_OUT parameter and formal assignment of the actual parameter within the procedure call.
528
35006144.07 07/2008
V
At a Glance
In This Chapter This part presents: the user function blocks (DFB) the internal structure of DFBs Diagnostics DFBs the types and instances of DFBs instance calls using different languages What's in this Part? This part contains the following chapters:
Chapter 16 17 18 19 20 Chapter Name Overview of User Function Blocks (DFB) Description of User Function Blocks (DFB) User Function Blocks (DFB) Instance Use of the DFBs from the Different Programming Languages User Diagnostics DFB Page 531 537 549 555 573
35006144.07 07/2008
529
DFB
530
35006144.07 07/2008
16
At a Glance
Subject of this Chapter What's in this Chapter? This chapter provides an overview of the user function blocks (DFB), and the different steps in their implementation. This chapter contains the following topics:
Topic Introduction to User Function Blocks Implementing a DFB Function Block Page 532 534
35006144.07 07/2008
531
Overview of DFBs
532
35006144.07 07/2008
Overview of DFBs
Domain of Use
The following table shows the domain of use for the DFBs.
Function PLCs for which DFBs can be used. DFB creation software Software with which DFBs can be used. Programming language for creating the DFB code. Programming language with which DFBs can be used. Domain Premium\Atrium and Quantum Unity Pro Unity Pro or Unity Pro Medium IL, ST, LD or FBD (1) IL, ST, LD or FBD (1)
(1) IL: Instruction List , ST: Structured Text, LD: LaDder, FBD: Functional Block Diagram language.
35006144.07 07/2008
533
Overview of DFBs
This operation consists in designing a model of the DFB you want to use in your application. To do this, use the DFB editor to define and code all the elements that make up the DFB: Description of the function block: name, type (DFB), activation of diagnostics, comment. Structure of the function block: parameters, variables, code sections.
Note: If you use a DFB that is already in the User-Defined Library and modify it, the new modified type will be used for any additional instances in the open project. However, the User-Defined Library remains unchanged.
534
35006144.07 07/2008
Overview of DFBs
The function block comprises the following elements: Name: name of the DFB type (max. 32 characters). This name must be unique in the libraries, the authorized characters used depend on the choice made in the Identifiers area of the Language extensions tab in the Project Settings (See Unity Pro, Operating Modes, Language extensions): Inputs: input parameters (excluding input/output parameters). Outputs: output parameters (excluding input/output parameters). Inputs/Outputs: input/output parameters. Public variables: internal variables accessible by the application program. Private variables: nested internal variables or DFBs, not accessible by the application program. Sections: DFB code sections in LD, IL, ST or FBD. Comment of a maximum of 1024 characters. Formatting characters (carriage return, tab, etc.) are not authorized. For each type of DFB, a descriptive file is also accessible via a dialog box: size of the DFB, number of parameters and variables, version number, date of last modification, protection level, etc. Online Help for DFB Types It is possible to link an HTML help file to each DFB in the User-Defined Library. This file must: Have a name that is identical to the linked DFB, Be located in the directory \Schneider Electric\FFBLibset\CustomLib\MyCustomFam\Language (where Language is named Eng, Fre, Ger, Ita, Spa or Chs according to the language desired). Once the DFB type is created, you can define an instance of this DFB via the variable editor or when the function is called in the program editor. A DFB instance is used as follows as a standard function block in Ladder (LD) or Functional Block Diagram (FBD) language, as an elementary function in Structured Text (ST) or Instruction List (IL) language. A DFB instance can be used in all application program tasks, except event tasks and Sequential Function Chart (SFC) transitions. Storage The DFB types the user creates can be stored (See Unity Pro, Operating Modes, Archiving a DFB Type) in the function and function block library.
35006144.07 07/2008
535
Overview of DFBs
536
35006144.07 07/2008
17
At a Glance
Subject of this Chapter What's in this Chapter? This chapter provides an overview of the different elements that make up the user function blocks. This chapter contains the following topics:
Topic Definition of DBF Function Block Internal Data DFB Parameters DFB Variables DFB Code Section Page 538 540 544 546
35006144.07 07/2008
537
Description of DFBs
Types of Objects
538
35006144.07 07/2008
Description of DFBs
For each of the DFB parameters, the following object families may be used:
Object families Inputs Inputs/outputs EDT Yes Yes
(2)
IODDT No
FB No No
No No Yes
Key: (1) (2) Derived data family, except input/output derived data types (IODDT). Except for EBOOL-type static variables, with Quantum PLCs.
CAUTION
Shift of index for ANY_ARRAY_x parameters There is a shift of index when we use ARRAY variable with start index not null on ANY_ARRAY_x entry. The value of the shift corresponds to the start index value. Failure to follow these instructions can result in injury or equipment damage.
35006144.07 07/2008
539
Description of DFBs
DFB Parameters
Illustration This illustration shows some examples of DFB parameters Inputs Control Deviation Speed Accel Error Outputs
Outputs
32 (2)
Inputs/ Outputs
32
Legend: (1) Number of inputs + Number of inputs/outputs less than or equal to 32 (2) Number of outputs + Number of inputs/outputs less than or equal to 32 Note: The IODDT related to CANopen devices for Modicon M340 cannot be used as a DFB I/O parameter. During the analyse/build step of a project, the following message:"This IODDT cannot be used as a DFB parameter" advises the limitations to the user.
540
35006144.07 07/2008
Description of DFBs
The only parameters that can be accessed by the application program outside the call are output parameters. To make this possible, the following syntax must be used in the program: DFB_Name.Parameter_name DFB_Name represents the name of the instance of the DFB used (maximum of 32 characters). Parameter_Name represents the name of the output parameter (maximum 32 characters). Example: Control.Accel indicates the output Accel of the DFB instance called Control
EN is an input parameter, and ENO is an output parameter. They are both of BOOL type, and may or may not be used (optional) in the definition of a DFB type. Where the user wishes to use these parameters, the editor sets them automatically: EN is the first input parameter and ENO the first output parameter. Example of implementation of EN\ENO parameters. Control EN Deviation Inputs Speed Error ENO Accel Outputs
If the EN input parameter of an instance is assigned the value 0 (FALSE), then: the section(s) that make up the code of the DFB is/are not executed (this is managed by the system), the ENO output parameter is set to 0 (FALSE) by the system. If the EN input parameter of an instance is assigned the value 1 (TRUE), then: the section(s) that make up the code of the DFB is/are executed (this is managed by the system), the ENO output parameter is set to 1 (TRUE) by the system.
35006144.07 07/2008
541
Description of DFBs
If an error is detected (for example a processing error) by the DFB instance, the user has the option of setting the ENO output parameter to 0 (FALSE). In this case: either the output parameters are frozen in the state they were in during the previous process until the fault disappears, or the user provides a function in the DFB code whereby the outputs are forced to the required state until the fault disappears. VAR_IN_OUT Variable Function blocks are often used to read a variable at an input (input variables), to process it and to output the updated values of the same variable (output variables). This special type of input/output variable is also called a VAR_IN_OUT variable. The following special features are to be noted when using function blocks/DFBs with VAR_IN_OUT variables. All VAR_IN_OUT inputs must be assigned a variable. VAR_IN_OUT inputs may not have literals or constants assigned to them. VAR_IN_OUT outputs may not have values assigned to them. VAR_IN_OUT variables cannot be used outside the block call. Calling a function block with a VAR_IN_OUT variable in IL: CAL MY_FBLOCK(IN1:=V1, IN2:=V2, IO1:=V3, OUT1=>V4, OUT2=>V5) Calling the same function block in FBD:
MY_FBLOCK FBLOCK V1 V2 V3 IN1 IN2 IO1 OUT1 OUT2 IO1 V4 V5 V3
VAR_IN_OUT variables cannot be used outside the function block call. The following function block calls are therefore invalid: Invalid call, example 1:
LD V1 CAL InOutFB Loading a V1 variable in the accumulator Calling a function block with the VAR_IN_OUT parameter. The accumulator now contains a reference to a VAR_IN_OUT parameter. AND operation on accumulator contents and V2 variable. Error: The operation cannot be performed since the VAR_IN_OUT parameter (accumulator contents) cannot be accessed from outside the function block call.
AND V2
542
35006144.07 07/2008
Description of DFBs
The following function block calls are always valid: Valid call, example 1:
CAL InOutFB (IN1:=V1,inout:=V2 Calling a function block with the VAR_IN_OUT parameter and assigning the actual parameter within the function block call.
35006144.07 07/2008
543
Description of DFBs
DFB Variables
Description of the Variables This table shows the role of each type of variable.
Variable Public Private Maximum number unlimited unlimited Role These internal variables of the DFB may be used by the DFB, by the application program and by the user in adjust mode. These internal variables of the DFB can only be used by this function block, and are therefore not accessible by the application program, but these type of variables can be accessed by the animation table. These variables are generally necessary to the programming of the block, but are of no interest to the user (for example, the result of an intermediate calculation, etc.).
Note: Nested DFBs are declared as private variables of the parent DFB. So their variables are also not accessible through programming, but trough the animation table.
The only variables that can be accessed by the application program are public variables. To make this possible, the following syntax must be used in the program: DFB_Name.Variable_Name DFB_Name represents the name of the instance of the DFB used (maximum of 32 characters), Variable_Name represents the name of the public variable (maximum of 8 characters). Example: Control.Gain indicates the public variable Gain of the DFB instance called Control
544
35006144.07 07/2008
Description of DFBs
Setting the %S94 system bit to 1 causes the public variables you have modified to be saved by program or by adjustment, in place of the initial values of these variables (defined in the DFB instances). Replacement is only possible if the backup attribute is correctly set for the variable.
CAUTION
UPLOAD FAILURE The bit %S94 must not be set to 1 during an upload. If the bit %S94 is set to 1 upload may fail. Failure to follow these instructions can result in injury or equipment damage.
35006144.07 07/2008
545
Description of DFBs
Defining a Section
Programming Rules
546
35006144.07 07/2008
Description of DFBs
Example of Code
The following program provides an example of Structured Text code CHR_200:=CHR_100; CHR_114:=CHR_104; CHR_116:=CHR_106; RESET DEMARRE; (*We increment 80 times CHR_100*) FOR CHR_102:=1 TO 80 DO INC CHR_100; WHILE((CHR_104-CHR_114)<100)DO IF(CHR_104>400) THEN EXIT; END_IF; INC CHR_104; REPEAT IF(CHR_106>300) THEN EXIT; END_IF; INC CHR_106; UNTIL ((CHR_100-CHR_116)>100) END_REPEAT; END_WHILE; (* Loop as long as CHR_106) IF (CHR_106=CHR_116) THEN EXIT; ELSE CHR_114:=CHR_104; CHR_116:=CHR_106; END_IF; INC CHR_200; END_FOR;
35006144.07 07/2008
547
Description of DFBs
548
35006144.07 07/2008
18
At a Glance
Subject of this Chapter What's in this Chapter? This chapter provides an overview of the creation of a DFB instance, and its execution. This chapter contains the following topics:
Topic Creation of a DFB Instance Execution of a DFB Instance Programming Example for a Derived Function Block (DFB) Page 550 551 552
35006144.07 07/2008
549
DFB instance
550
35006144.07 07/2008
DFB instance
2 3
Note: The internal variables of DFBs are not reinitialized when using Build project online command after an input modification. To reinitialize all internal variables use Rebuild all project command.
Debugging of DFBs
The Unity Pro software offers several DFB debugging tools: animation table: all parameters, and public and private variables are displayed and animated in real-time. Objects may be modified and forced breakpoint, step by step and program diagnostics runtime screens: for unitary debugging
35006144.07 07/2008
551
DFB instance
Done BOOL
552
35006144.07 07/2008
DFB instance
The internal program of the DFB type Cpt_parts is defined in Structured Text as follows. !(*Programming of the Cpt_parts DFB*) IF RE (Reset) THEN V_cour:=0; END_IF; IF RE (Count) THEN V_cour:=V_cour+1; END_IF; IF(V_cour>=Presel) THEN SET (Done); ELSE RESET (Done); END_IF;
Example of Use
Let us suppose your application needs to count 3 part types (for example, bolts, nuts and screws). The DFB type Cpt_parts can be used three times (3 instances) to perform these different counts. The number of parts to be procured for each type is defined in the words %MD10, %MD12 and %MD14 respectively. When the number of parts is reached, the counter sends a command to an output (%Q1.2.1, %Q1.2.2 or %Q1.2.3) which then stops the procurement system for the corresponding parts.
35006144.07 07/2008
553
DFB instance
The application program is entered in Ladder language as follows. The 3 DFBs (instances) Cpt_bolts, Cpt_nuts and Cpt_screws are used to count the different parts. Cpt_bolts %I1.0 Cpt_parts Reset %MD10 %I1.1 Done %Q2.1
Presel
Count
Presel
Count
Presel
Count
554
35006144.07 07/2008
19
At a Glance
Subject of this Chapter What's in this Chapter? This chapter provides an overview of DFB instance calls made using the different programming languages. This chapter contains the following topics:
Topic Rules for Using DFBs in a Program Use of IODDTs in a DFB Use of a DFB in a Ladder Language Program Use of a DFB in a Structured Text Language Program Use of a DFB in an Instruction List Program Use of a DFB in a Program in Function Block Diagram Language Page 556 560 563 565 567 571
35006144.07 07/2008
555
Use of DFBs
556
35006144.07 07/2008
Use of DFBs
Assignment of Parameters
The following table summarizes the different possibilities for assigning parameters in the different programming languages.
Parameter Inputs Type EDT (2) BOOL DDT ANY_... ANY_ARRAY Inputs/outputs EDT DDT IODDT ANY_... ANY_ARRAY Outputs EDT DDT ANY_... ANY_ARRAY Assignment of the parameter (1) Connected, value, object or expression Connected, value, object or expression Connected, value or object Connected or object Connected or object Connected or object Connected or object Connected or object Connected or object Connected or object Connected or object Connected or object Connected or object Connected or object Assignment Optional (3) Optional Compulsory Compulsory Compulsory Compulsory Compulsory Compulsory Compulsory Compulsory Optional Optional Compulsory Optional
(1) Connected in Ladder (LD) or Function Block Diagram (FBD) language. Value or object in Instruction List (IL) or Structured Text (ST) language. (2) Except BOOL-type parameters (3) Except for STRING-type parameters that is compulsory.
35006144.07 07/2008
557
Use of DFBs
Assignment of Parameters
The following table summarizes the different possibilities for assigning parameters in the different programming languages.
Parameter Inputs Type EDT (2) BOOL DDT ANY_... ANY_ARRAY Inputs/outputs EDT DDT IODDT ANY_... ANY_ARRAY Outputs EDT DDT ANY_... ANY_ARRAY Assignment of the parameter (1) Connected, value, object or expression Connected, value, object or expression Connected, value or object Connected or object Connected or object Connected or object Connected or object Connected or object Connected or object Connected or object Connected or object Connected or object Connected or object Connected or object Assignment Optional (3) Optional Compulsory Compulsory Compulsory Compulsory Compulsory Compulsory Compulsory Compulsory Optional Optional Compulsory Optional
(1) Connected in Ladder (LD) or Function Block Diagram (FBD) language. Value or object in Instruction List (IL) or Structured Text (ST) language. (2) Except BOOL-type parameters (3) Except for STRING-type parameters that is compulsory.
558
35006144.07 07/2008
Use of DFBs
WARNING
UNEXPECTED EQUIPMENT OPERATION Check the size of arrays when copying from source into target arrays using DFBs. Failure to follow these instructions can result in death, serious injury, or equipment damage. When using dynamic arrays, it is mandatory to check the sizes of arrays that are identical. In specific case, using dynamic arrays as an output or input/output, an overflow could lead to improper execution of the program and stop of the PLC. This behavior occurs if the following conditions are fulfilled simultaneously: Use of a DFB with at least one output or I/O parameter of dynamic array type (ANY_ARRAY_XXX). In the coding of a DFB, use of a function or function block (FFB of type FIFO, LIFO, MOVE, MVX, T2T, SAH or SEL). Note that, the function or FFB needs two ANY type parameters with at least one defined on the output. The DFB parameter of the dynamic array is used in writting during the FFB call (on the ANY type parameter). For other ANY parameters, an array with a fixed size is used. The size of the fixed size array is bigger than the size of the dynamic array calculated to store the result.
The following example shows how to check the size of arrays using the function LENGTH_ARWORD in a DFB.
LENGTH_ARWORD Table_1
IN
OUT
LENGTH_ARWORD Table_2
IN2
IN
OUT
In this example, Table_1 is an array with a fixed size, Table_2 is a dynamic array of type ANY_ARRAY_WORD. This program checks the size of each array. The functions LENGTH_ARWORD compute the size of each array in order to condition the execution of the MOVE function.
35006144.07 07/2008
559
Use of DFBs
Modicon M340
Premium
Quantum
No No No No No No
No No No No No No
No No No No No No
No No Yes Yes No No No No No No No No No
No No No No No No No No No No No No No
Use of DFBs
IODDT families T_CNT_105 Electronic cam application T_CCY_GROUP0 T_CCY_GROUP1_2_3 Axis control application T_AXIS_AUTO T_AXIS_STD T_INTERPO_STD T_STEPPER_STD Sercos application T_CSY_CMD T_CSY_TRF T_CSY_RING T_CSY_IND T_CSY_FOLLOW T_CSY_COORD T_CSY_CAM Communication application T_COM_STS_GEN T_COM_UTW_M T_COM_UTW_S T_COM_MB T_COM_CHAR T_COM_FPW T_COM_MBP T_COM_JNET T_COM_ASI T_COM_ETY_1X0 T_COM_ETY_210 T_COM_IBS_128 T_COM_IBS_242 T_COM_PBY T_COM_CPP100 T_COM_ETYX103
Modicon M340 No
Premium No
Quantum No
No No
No No
No No
No No No No
No No No No
No No No No No No No
No No No No No No No
Yes No No No No No No No No No No No No No No No
Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
No No No No No No No No No No No No No No No No
35006144.07 07/2008
561
Use of DFBs
IODDT families T_COM_ETHCOPRO T_COM_MB_BMX T_COM_CHAR_BMX T_COM_CO_BMX T_COM_ETH_BMX Adjustment application T_PROC_PLOOP T_PROC_3SING_LOOP T_PROC_CASC_LOOP T_PROC_SPP T_PROC_CONST_LOOP Weiging application T_WEIGHING_ISPY101 Common to all applications T_GEN_MOD
Premium Yes No No No No
Quantum No No No No No
No No No No No
No No No No No
No
Yes
No
No
No
No
562
35006144.07 07/2008
Use of DFBs
%MW100 (6)
35006144.07 07/2008
563
Use of DFBs
The following table lists the different elements of the DFB block, labeled in the above illustration.
Label 1 2 3 4 5 6 7 8 9 Element Name of the DFB (instance) Name of the DFB type Input assigned by an expression Input assigned by a value Connected input Input assigned by an object (address or symbol) Input parameters Output parameters Input/output parameters
564
35006144.07 07/2008
Use of DFBs
The following simple example explains the different DFB calls in Structured Text language. This is the instance Cpt_1 of the Cpt_parts: type DFB. Cpt_1 Cpt_parts Clear P_Select Reset Presel Done %Q1.2.1
100
Count
35006144.07 07/2008
565
Use of DFBs
The formal DFB call Cpt_1 is performed with the following syntax: Cpt_1 (Reset:=Clear, Presel:=P_Select, Count:=100, Done=>%Q1.2.1); Where the input parameters assigned by a value (expression, object or immediate value) are entered in the list of arguments, the syntax is: Cpt_1 (Reset:=Clear, Presel:=P_Select, Count:=100); ... %Q1.2.1:=Cpt_1.Done;
The following table lists the different elements of the program sequence, when a formal DFB call is made.
Element Cpt_1 Reset, Presel, Count := Clear 100 Done => %Q1.2.1 ; , Meaning Name of the DFB instance Input parameters Assignment symbol of an input Assignment object of an input (symbol) Assignment value of an input Output parameter Assignment symbol of an output Assignment object of an output (address) End of sequence symbol Argument separation symbol
The informal DFB call Cpt_1 is performed with the following syntax: Cpt_1 (Clear, %MD10, , 100); ... %Q1.2.1:=Cpt_1.Done;
The following table lists the different elements of the program sequence, when a formal DFB call is made.
Element Cpt_1 Clear, %MD10, ,100 ; , Meaning Name of the DFB instance Assignment object or value of the inputs. Non-assigned inputs are represented by an empty field End of sequence symbol Argument separation symbol
566
35006144.07 07/2008
Use of DFBs
35006144.07 07/2008
567
Use of DFBs
Example of a DFB
The following example explains the different calls of a DFB in Instruction List. This is the instance Cpt_1 of the Cpt_parts: type DFB Cpt_1 Cpt_parts Clear P_Select Reset Presel Done %Q1.2.1
100
Count
When the arguments are assignments, the DFB call Cpt_1 is performed with the following syntax: CAL Cpt_1 (Reset:=Clear, Presel:=%MD10, Count:=100, Done=>%Q1.2.1) Where the input parameters assigned by a value (expression, object or immediate value) are entered in the list of arguments, the syntax is: CAL Cpt_1 (Reset:=Clear, Presel:=%MD10, Count:=100) ... LD Cpt_1.Done ST %Q1.2.1 In order to make your application program more legible, you can enter a carriage return after the commas that separate the arguments. The sequence then takes the following syntax: CAL Cpt_1( Reset:=Clear, Presel:=%MD10, Count:=100, Done=>%Q1.2.1)
568
35006144.07 07/2008
Use of DFBs
The following table lists the different elements of the DFB call program.
Element CAL Cpt_1 Reset, Presel, Count := Clear, %MD10, 100 Done => %Q1.2.1 , Meaning DFB call instruction Name of the DFB instance Input parameters Assignment symbol of an input Assignment object or value of the inputs Output parameter Assignment symbol of an output Assignment object of an output Argument separation symbol
When the arguments are values, the DFB call Cpt_1 is performed with the following syntax: CAL Cpt_1 (Clear, %MD10,, 100) ... LD Cpt_1.Done ST %Q1.2.1
The following table lists the different elements of the DFB call program.
Element CAL Cpt_1 Clear, %MD10, 100 , Meaning DFB call instruction Name of the DFB instance Assignment object or value of the inputs Argument separation symbol
35006144.07 07/2008
569
Use of DFBs
When there is no argument, the DFB call Cpt_1 is performed with the following syntax: LD Clear ST Cpt_1.Reset LD %MD10 ST Cpt_1.Presel LD 100 ST Cpt_1.Count CAL Cpt_1( ... LD Cpt_1.Done ST %Q1.2.1
The following table lists the different elements of the DFB call program.
Element LD Clear ST Cpt_1.Reset CAL Cpt_1( Meaning Load instruction to load the Clear value into a register Assign instruction to assign the contents of the register to the input parameter Cpt_1.Reset Call instruction for the DFB Cpt_1
570
35006144.07 07/2008
Use of DFBs
10000 (4)
Speed (6)
(5)
Enable (6)
35006144.07 07/2008
571
Use of DFBs
The following table lists the different elements of the DFB block, labeled in the above illustration.
Label 1 2 3 4 5 6 7 8 Element Name of the DFB (instance) Name of the DFB type Input assigned by an object (symbol) Input assigned by a value Connected input Input parameters Output parameter Input assigned by an object (address)
572
35006144.07 07/2008
20
Presentation of User Diagnostic DFBs
General The Unity Pro application is used to create your own diagnostic DFBs (See Unity Pro 3.1 Operating Modes, Project diagnostic). These diagnostic DFBs are standard DFBs that you will have configured beforehand with the Diagnostic property and in which you will have used the following two functions: REGDFB (See Unity Pro 3.1 Diagnostics Block Library, REGDFB: Alarm saving and dating ) to save the alarm date DEREG (See Unity Pro 3.1 Diagnostics Block Library, Alarm de-registration) to de-register the alarm
Note: It is strongly recommended to only program a diagnostic DFB instance once within the application. These DFBs enable you to monitor your process. They will automatically report the information you will have chosen in the Viewer. You can thus monitor changes in state or variations in your process. Advantages The main advantages inherent in this service are as follows: The diagnostic is integrated in the project, and can thus be conceived during development and therefore better meets the user's requirements. The error dating and recording system is done at the source (in the PLC), which means the information exactly represents the state of the process. You can connect a number of Viewers (Unity Pro, Magelis, Factory Cast) which will transcribe the exact state of the process to the user. Each Viewer is independent, and any action performed on one (for example, an acknowledgement) is automatically viewed on the others.
35006144.07 07/2008
573
Diagnostics DFB
574
35006144.07 07/2008
Appendices
Introduction
At a Glance What's in this Appendix? The appendix contains additional information. The appendix contains the following chapters:
Chapter A B Chapter Name EFB Error Codes and Values IEC Compliance Page 577 609
35006144.07 07/2008
575
Appendices
576
35006144.07 07/2008
A
Overview
Introduction The following tables show the error codes and error values created for the EFBs sort by library and family. This chapter contains the following topics:
Topic Tables of Error Codes for the Base Library Tables of Error Codes for the Diagnostics Library Tables of Error Codes for the Communication Library Tables of Error Codes for the IO Management Library Tables of Error Codes for the CONT_CTL Library Tables of Error Codes for the Motion Library Tables of Error Codes for the Obsolete Library Common Floating Point Errors Page 578 580 581 584 591 599 601 608
35006144.07 07/2008
577
DIVTIME
E_DIVIDE_BY_ZERO
-30176 16#8A2 0
Divide by zero
DIVTIME
E_NEGATIVE_INPUT_ FOR_TIME_OPERATIO N E_ARITHMETIC_ ERROR E_ERR_ARITHMETIC FP_ERROR E_ERR_ARITHMETIC E_ARITHMETIC_ERRO R_MUL_OV E_ARITHMETIC_ERRO R_ADD_OV E_ARITHMETIC_ERRO R_BIG_PAR E_NEGATIVE_INPUT_F OR_TIME_OPERATION FP_ERROR
-30177
16#8A1 F 16#8A2 6
F F F F F F F F F
16#8AC Arithmetic overflow (%S18 set) D See table Common Floating Point Errors, p. 608
16#8AC Arithmetic overflow (%S18 set) D 16#8A2 4 16#8A2 3 16#8A2 5 16#8A1 F Arithmetic error / Muliplication overflow Arithmetic error / Addition overflow Arithmetic error / Parameter exceeds range A negative value cannot be converted to data type TIME See table Common Floating Point Errors, p. 608
578
35006144.07 07/2008
Statistical
EFB name
Table of error codes and errors values created for EFBs of the Statistical family.
Error code ENO state in case of error Error value in Dec Error Error description value in Hex
AVE
AVE
Divide by zero
F F F
-30170 -30150
16#8A2 6 16#8A3 A
See table Common Floating Point Errors, p. 608 Arithmetic error Illegal floating point operation
E_ARITHMETIC_ ERROR_MUL_OV E_ARITHMETIC_ ERROR_ADD_OV E_ARITHMETIC_ ERROR_BIG_PAR E_ARITHMETIC_ERRO R_UNSIGN_OV FP_ERROR FP_ERROR E_SELECTOR_OUT_OF _RANGE
F F F F F F F
Arithmetic error / Muliplication overflow Arithmetic error / Addition overflow Arithmetic error / Parameter exceeds range Arithmetic error / Unsigned overflow See table Common Floating Point Errors, p. 608 See table Common Floating Point Errors, p. 608 Selector is out of range
16#8A2 1
35006144.07 07/2008
579
Diagnostics
EFB name
ONLEVT
E_EFB_ONLEVT
580
35006144.07 07/2008
Extended
EFB name
E_EFB_MSTR_ERROR E_EFB_NOT_STATE_RAM_ 4X -
16#8A11 MSTR communication error 16#88BD Variable not mapped to % MW (4x) area 16#2003 Value displayed in status word. (Comes together with E_EFB_MSTR_ERROR) Value displayed in status word. Comes together with E_EFB_NOT_STATE_RAM_4X See tables of : Modbus Plus and SY/MAX EtherNet Error Codes (See Unity Pro, Communication Library, Modbus Plus and SY/MAX Ethernet Error Codes) SY/MAX specific Error Codes (See Unity Pro, Communication Library, SY/MAXspecific error codes) TCP/IP EtherNet Error Codes (See Unity Pro, Communication Library, TCP/IP Ethernet error codes)
CREAD_REG
8206
16#200E
CREAD_REG
CWRITE_REG CWRITE_REG
E_EFB_MSTR_ERROR -
F F
-30191 8195
16#8A11 MSTR communication error 16#2003 Value displayed in status word Comes together with E_EFB_MSTR_ERROR Value displayed in status word Comes together with E_EFB_NOT_STATE_RAM_4X
CWRITE_REG
8206
16#200E
35006144.07 07/2008
581
EFB name
Error code
Error description
CWRITE_REG
See tables of : Modbus Plus and SY/MAX EtherNet Error Codes (See Unity Pro, Communication Library, Modbus Plus and SY/MAX Ethernet Error Codes) SY/MAX specific Error Codes (See Unity Pro, Communication Library, SY/MAXspecific error codes) TCP/IP EtherNet Error Codes (See Unity Pro, Communication Library, TCP/IP Ethernet error codes)
E_EFB_OUT_OF_RANGE E_EFB_NOT_STATE_RAM_ 4X -
F F F
16#8A10 Internal error: EFB has detected a violation e.g. write exceeds %MW (4x) boundaries 16#88BD Variable not mapped to %MW (4x) area 16#2003 Value displayed in status word Comes together with E_EFB_MSTR_ERROR in status of control block Value displayed in status word Comes together with E_EFB_NOT_STATE_RAM_4X in status of control block See tables of : Modbus Plus and SY/MAX EtherNet Error Codes (See Unity Pro, Communication Library, Modbus Plus and SY/MAX Ethernet Error Codes) SY/MAX specific Error Codes (See Unity Pro, Communication Library, SY/MAXspecific error codes) TCP/IP EtherNet Error Codes (See Unity Pro, Communication Library, TCP/IP Ethernet error codes)
MBP_MSTR
8206
16#200E
MBP_MSTR
F F F F
16#759E Parameter out of range 16#88BD Variable not mapped to %MW (4x) area 16#8A11 MSTR communication error 16#2003 Value displayed in status word Comes together with W_WARN_OUT_OF_RANGE
582
35006144.07 07/2008
EFB name
Error code
Error description
READ_REG
MBPUNLOC
8206
16#200E
Value displayed in status word Comes together with E_EFB_NOT_STATE_RAM_4X See tables of : Modbus Plus and SY/MAX EtherNet Error Codes (See Unity Pro, Communication Library, Modbus Plus and SY/MAX Ethernet Error Codes) SY/MAX specific Error Codes (See Unity Pro, Communication Library, SY/MAXspecific error codes) TCP/IP EtherNet Error Codes (See Unity Pro, Communication Library, TCP/IP Ethernet error codes)
READ_REG
F F F F
16#759E Parameter out of range 16#88BD Variable not mapped to %MW (4x) area 16#8A11 MSTR communication error 16#2003 Value displayed in status word Comes together with W_WARN_OUT_OF_RANGE Value displayed in status word Comes together with E_EFB_NOT_STATE_RAM_4X See tables of : Modbus Plus and SY/MAX EtherNet Error Codes (See Unity Pro, Communication Library, Modbus Plus and SY/MAX Ethernet Error Codes) SY/MAX specific Error Codes (See Unity Pro, Communication Library, SY/MAXspecific error codes) TCP/IP EtherNet Error Codes (See Unity Pro, Communication Library, TCP/IP Ethernet error codes)
WRITE_REG
8206
16#200E
WRITE_REG
35006144.07 07/2008
583
I_FILTER I_SET I_SET I_SET I_SET I_SET I_SET I_SET I_SET O_FILTER O_SET O_SET O_SET O_SET O_SET O_SET O_SET O_SET
-30188 -30200 -30201 -30202 -30203 -30204 -30210 -30211 -30212 -30188 -30200 -30201 -30202 -30203 -30204 -30210 -30211 -30212
16#8A14 EFB configuration does not match hardware configuration 16#8A08 The input IN_REG is not connected with the number of an input word (%IW). 16#8A07 The input IN_REG is connected with an invalid number of an input word (%IW). 16#8A06 MN_RAW MX_RAW 16#8A05 Unknown value for MN_PHYS 16#8A04 Unknown value for MX_PHYS 16#89FE ST_REG not entered 16#89FD ST_REG too large 16#89FC ST_CH not entered 16#8A14 EFB configuration does not match hardware configuration 16#8A08 The input OUT_REG is not connected with the number of an output word (%MW). 16#8A07 The input OUT_REG is connected with an invalid number of an output word (%MW). 16#8A06 MN_RAW MX_RAW 16#8A05 Unknown value for MN_PHYS 16#8A04 Unknown value for MX_PHYS 16#89FE ST_REG not entered 16#89FD ST_REG too large 16#89FC ST_CH not entered
584
35006144.07 07/2008
Table of error codes and errors values created for EFBs of the Analog I/O Scaling family.
Error code ENO state in case of error F F F F F F F F F F F F F F F F F F F F F Error value in Dec Error value in Hex Error description
I_NORM I_NORM I_NORM_WARN I_NORM_WARN I_NORM_WARN I_NORM_WARN I_PHYS I_PHYS I_PHYS I_PHYS I_PHYS I_PHYS I_PHYS_WARN I_PHYS_WARN I_PHYS_WARN I_PHYS_WARN I_PHYS_WARN I_PHYS_WARN I_PHYS_WARN I_RAW I_RAW
E_EFB_NEG_OVER_RANGE E_EFB_NOT_CONFIGURED E_EFB_NO_WARNING_STAT US_AVAILABLE E_EFB_POS_OVER_RANGE E_EFB_NEG_OVER_RANGE E_EFB_NOT_CONFIGURED E_EFB_NO_WARNING_STAT US_AVAILABLE E_INPUT_VALUE_OUT_OF_ RANGE E_EFB_NO_MEASURING_RA NGE E_EFB_POS_OVER_RANGE E_EFB_NEG_OVER_RANGE E_EFB_NOT_CONFIGURED E_EFB_NO_WARNING_STAT US_AVAILABLE E_EFB_FILTER_SQRT_NOT_ AVAIL E_INPUT_VALUE_OUT_OF_ RANGE E_EFB_NO_MEASURING_RA NGE E_EFB_POS_OVER_RANGE E_EFB_NEG_OVER_RANGE E_EFB_NOT_CONFIGURED E_EFB_OUT_OF_RANGE E_EFB_NOT_CONFIGURED
-30187 -30188 -30189 -30186 -30187 -30188 -30189 -30183 -30185 -30186 -30187 -30188 -30189 -30195 -30183 -30185 -30186 -30187 -30188 -30192 -30188
16#8A15
Negative overflow
16#8A14 EFB configuration does not match hardware configuration 16#8A13 Module delivers no warning status
16#8A14 EFB configuration does not match hardware configuration 16#8A13 16#8A19 16#8A17 Module delivers no warning status Input value is out of range Internal error
16#8A14 EFB configuration does not match hardware configuration 16#8A13 16#8A0D 16#8A19 16#8A17 Module delivers no warning status Filter SQRT is not available Input value is out of range Internal error
16#8A14 EFB configuration does not match hardware configuration 16#8A10 Internal error: EFB has detected a violation e.g. write exceeds %MW (4x) boundaries
35006144.07 07/2008
585
EFB name
Error code
Error description
I_RAWSIM I_SCALE I_SCALE I_SCALE I_SCALE_WARN I_SCALE_WARN I_SCALE_WARN I_SCALE_WARN O_NORM O_NORM O_NORM O_NORM_WARN O_NORM_WARN O_NORM_WARN O_PHYS O_PHYS O_PHYS O_PHYS O_PHYS_WARN O_PHYS_WARN O_PHYS_WARN O_PHYS_WARN O_RAW O_RAW O_SCALE
E_EFB_NOT_CONFIGURED E_EFB_POS_OVER_RANGE E_EFB_NEG_OVER_RANGE E_EFB_NOT_CONFIGURED E_EFB_NO_WARNING_STAT US_AVAILABLE E_EFB_POS_OVER_RANGE E_EFB_NEG_OVER_RANGE E_EFB_NOT_CONFIGURED E_EFB_POS_OVER_RANGE E_EFB_NEG_OVER_RANGE E_EFB_NOT_CONFIGURED E_EFB_POS_OVER_RANGE E_EFB_NEG_OVER_RANGE E_EFB_NOT_CONFIGURED E_EFB_NO_MEASURING_RA NGE E_EFB_POS_OVER_RANGE E_EFB_NEG_OVER_RANGE E_EFB_NOT_CONFIGURED E_EFB_NO_MEASURING_RA NGE E_EFB_POS_OVER_RANGE E_EFB_NEG_OVER_RANGE E_EFB_NOT_CONFIGURED E_EFB_NEG_OVER_RANGE E_EFB_NOT_CONFIGURED E_INPUT_VALUE_OUT_OF_ RANGE
-30188 -30186 -30187 -30188 -30189 -30186 -30187 -30188 -30186 -30187 -30188 -30186 -30187 -30188 -30185 -30186 -30187 -30188 -30185 -30186 -30187 -30188 -30187 -30188 -30183
16#8A14 EFB configuration does not match hardware configuration 16#8A16 Positive overflow 16#8A15 Negative overflow
16#8A14 EFB configuration does not match hardware configuration 16#8A13 Module delivers no warning status
16#8A14 EFB configuration does not match hardware configuration 16#8A16 Positive overflow 16#8A15 Negative overflow
16#8A14 EFB configuration does not match hardware configuration 16#8A16 Positive overflow 16#8A15 Negative overflow
16#8A14 EFB configuration does not match hardware configuration 16#8A17 Internal error
16#8A14 EFB configuration does not match hardware configuration 16#8A17 Internal error
16#8A14 EFB configuration does not match hardware configuration 16#8A15 Negative overflow
16#8A14 EFB configuration does not match hardware configuration 16#8A19 Input value is out of range
586
35006144.07 07/2008
EFB name
Error code
Error description
16#8A14 EFB configuration does not match hardware configuration 16#8A19 Input value is out of range
35006144.07 07/2008
587
Immediate I/O
EFB name
Table of error codes and errors values created for EFBs of the Immediate I/O family.
Error code ENO state in case of error F F F Error value in Dec Error value in Hex Error description
Operation OK invalid operation type (e.g. the I/O module addressed is not an input module) Invalid rack or slot number (I/O map in the configurator contains no module entry for this slot) invalid slot number Module not OK Operation OK invalid operation type (e.g. the I/O module addressed is not an input module) Invalid rack or slot number (I/O map in the configurator contains no module entry for this slot) invalid slot number Module not OK
F F F F F
IMIO_OUT IMIO_OUT
F F
8195 -4095
2003 F001
588
35006144.07 07/2008
Table of error codes and errors values created for EFBs of the Quantum I/O Configuration family.
Error code ENO state in case of error Error value in Dec Error value in Hex Error description
ACI030 ACI040 ACI040 ACO020 ACO130 ACO130 AII330 AII330 AII33010 AII33010 AIO330 AIO330 AMM090 ARI030 ARI030 ATI030 AVI030 AVO020
-30188 -30188 -30197 -30188 -30188 -30197 -30188 -30198 -30188 -30197 -30188 -30197 -30188 -30188 -30198 -30188 -30188 -30188
16#8A14 EFB configuration does not match hardware configuration 16#8A14 EFB configuration does not match hardware configuration 16#8A0B EFB error: Current mode is not allowed
16#8A14 EFB configuration does not match hardware configuration 16#8A14 EFB configuration does not match hardware configuration 16#8A0B EFB error: Current mode is not allowed
16#8A14 EFB configuration does not match hardware configuration 16#8A0A EFB error: Illegal configuration data
16#8A14 EFB configuration does not match hardware configuration 16#8A0B EFB error: Current mode is not allowed
16#8A14 EFB configuration does not match hardware configuration 16#8A0B EFB error: Current mode is not allowed
16#8A14 EFB configuration does not match hardware configuration 16#8A14 EFB configuration does not match hardware configuration 16#8A0A EFB error: Illegal configuration data
16#8A14 EFB configuration does not match hardware configuration 16#8A14 EFB configuration does not match hardware configuration 16#8A14 EFB configuration does not match hardware configuration
35006144.07 07/2008
589
EFB name
Error code
Error description
DROP ERT_854_10 ERT_854_10 ERT_854_10 ERT_854_10 ERT_854_10 ERT_854_10 ERT_854_10 ERT_854_10 ERT_854_10 ERT_854_10 ERT_854_10 ERT_854_10 ERT_854_10 ERT_854_10 QUANTUM QUANTUM XBE XBE XDROP
E_EFB_NOT_CONFIGURED F ES_WRONG_SLOT E_WRONG_SLOT ES_HEALTHBIT E_HEALTHBIT ES_TIMEOUT E_TIMEOUT E_ERT_BASIC - values E_WRONG_ANSW ES_CBUF_OFLOW E_CBUF_OFLOW ES_WRONG_PAKET E_WRONG_PAKET ES_WRONG_FELD E_WRONG_FELD F F F F F F F F F F F F F F
-30188 20480 -30215 24576 -30216 32768 -30210 -30199 -30211 28672 -30217 8192 -30212 12288 -30213 -30188 -30190 -30188 -30190 -30188
16#8A14 EFB configuration does not match hardware configuration 16#5000 16#89F9 16#6000 16#89F8 16#8000 16#89FE 16#8A09 16#89FD 16#7000 16#89F7 16#2000 16#89FC 16#3000 16#89FB Defined as E_EFB_USER_ERROR_16 Defined as E_EFB_USER_ERROR_17 Defined as E_EFB_USER_ERROR_11 Defined as E_EFB_USER_ERROR_1 + 1 Defined as E_EFB_USER_ERROR_12 Defined as E_EFB_USER_ERROR_18 Defined as E_EFB_USER_ERROR_13 Defined as E_EFB_USER_ERROR_14
E_EFB_NOT_CONFIGURED F E_EFB_UNKNOWN_DROP F
16#8A14 EFB configuration does not match hardware configuration 16#8A12 Unknown drop / No Quantum traffic cop
E_EFB_NOT_CONFIGURED F E_EFB_UNKNOWN_DROP F
16#8A14 EFB configuration does not match hardware configuration 16#8A12 Unknown drop / No Quantum traffic cop
E_EFB_NOT_CONFIGURED F
Note: For details about ERT_854_10, please refer to the ERT_854_10 description (See Unity Pro, I/O Management Data Flow) in the IO Management Library.
590
35006144.07 07/2008
Conditioning
EFB name
30110 -
16#759E Parameter out of range See table Common Floating Point Errors, p. 608 For details about the DTIME status word refer to the DTIME desription (See Unity Pro, Control Block Library)
INTEGRATOR INTEGRATOR INTEGRATOR LAG_FILTER LAG_FILTER LDLG LDLG LEAD LEAD MFLOW MFLOW MFLOW
E_ERR_DEN E_ERR_IB_MAX_MIN FP_ERROR E_ERR_DEN FP_ERROR E_ERR_DEN FP_ERROR E_ERR_DEN FP_ERROR W_WARN_OUT_OF_RANG E FP_ERROR Status word values
F F F F F F F F F T F T/F
16#8A38 Not a valid floating point number 16#8A6A YMAX < YMIN See table Common Floating Point Errors, p. 608
16#8A38 Not a valid floating point number See table Common Floating Point Errors, p. 608
16#8A38 Not a valid floating point number See table Common Floating Point Errors, p. 608
16#8A38 Not a valid floating point number See table Common Floating Point Errors, p. 608
16#759E Parameter out of range See table Common Floating Point Errors, p. 608 For details about the MFLOW status word refer to the MFLOW desription (See Unity Pro, Control Block Library)
QDTIME SCALING
E_ERR_DEN E_ERR_NULL_INPUT_SCA LE
F F
-30152 -30121
16#8A38 Not a valid floating point number 16#8A57 Null input scale: max and min limit must be different
35006144.07 07/2008
591
EFB name
Error code
Error description
SCALING SCALING
See table Common Floating Point Errors, p. 608 For details about the SCALING status word refer to the SCALING description (See Unity Pro, Control Block Library)
T F T T/F
30110 30113 -
16#759E Parameter out of range See table Common Floating Point Errors, p. 608
16#75A1 Maximum value of cter has been reached For details about the TOTALIZER status word refer to the TOTALIZER description (See Unity Pro, Control Block Library)
F F F
-30152 -30101 -
16#8A38 Not a valid floating point number 16#8A6B YMAX < YMIN See table Common Floating Point Errors, p. 608
592
35006144.07 07/2008
Controller
EFB name
Table of error codes and errors values created for EFBs of the Controller family.
Error code ENO state in case of error T F T F F T/F Error value in Dec Error value in Hex Error description
W_WARN_OUT_OF_RANG E E_ERR_NULL_INPUT_SCA LE W_WARN_AUTOTUNE_FAI LED FP_ERROR E_ERR_AUTOTUNE_ID_UN KNOWN Status word values
16#759E Parameter out of range 16#8A57 16#759F 16#8A58 Null input scale: max and min limit must be different AUTOTUNE has failed See table Common Floating Point Errors, p. 608 The tuned EFB is not allowed or has not yet been called For details about the AUTOTUNE status word refer to the AUTOTUNE description (See Unity Pro, Control Block Library)
T F F T/F
30110 -30121 -
16#759E Parameter out of range 16#8A57 Null input scale: max and min limit must be different See table Common Floating Point Errors, p. 608 For details about the PI_B status word refer to the PI_B description (See Unity Pro, Control Block Library)
T F F T/F
30110 -30121 -
16#759E Parameter out of range 16#8A57 Null input scale: max and min limit must be different See table Common Floating Point Errors, p. 608 For details about the PIDFF status word refer to the PIDFF description (See Unity Pro, Control Block Library)
F T F
-30184 30110 -
16#8A18 Internal error 16#759E Parameter out of range See table Common Floating Point Errors, p. 608
35006144.07 07/2008
593
EFB name
Error code
Error description
STEP2
For details about the STEP2 status word refer to the STEP2 description (See Unity Pro, Control Block Library)
T F T/F
30110 -
16#759E Parameter out of range See table Common Floating Point Errors, p. 608 For details about the STEP3 status word refer to the STEP3 description (See Unity Pro, Control Block Library)
594
35006144.07 07/2008
Mathematics
EFB name
Table of error codes and errors values created for EFBs of the Mathematics family.
Error code ENO state in case of error T F T F F F Error value in Dec Error value in Hex Error description
30110 30110 -
16#759E Parameter out of range See table Common Floating Point Errors, p. 608
16#759E Parameter out of range See table Common Floating Point Errors, p. 608 See table Common Floating Point Errors, p. 608 See table Common Floating Point Errors, p. 608
35006144.07 07/2008
595
Measurement
EFB name
Table of error codes and errors values created for EFBs of the Measurement family.
Error code ENO state in case of error F T F F T F F F F F F F F Error value in Dec Error value in Hex Error description
AVGMV AVGMV AVGMV AVGMV_K AVGMV_K AVGMV_K DEAD_ZONE DEAD_ZONE DEAD_ZONE LOOKUP_TABLE1 LOOKUP_TABLE1 LOOKUP_TABLE1 LOOKUP_TABLE1
E_ERR_DEN W_WARN_AVGMV FP_ERROR E_ERR_DEN W_WARN_AVGMV_K FP_ERROR E_ERR_DEN E_ERR_DZONE FP_ERROR E_ERR_DEN E_ERR_POLY_ANZAHL E_ERR_POLY_FOLGE FP_ERROR
16#8A38 Not a valid floating point number 16#759C AVGMV: N must be <= 50 See table Common Floating Point Errors, p. 608
16#8A38 Not a valid floating point number 16#759D AVGMV_K: N must be <= 10000 See table Common Floating Point Errors, p. 608
16#8A38 Not a valid floating point number 16#8A59 DZONE: DZ must be >= 0 See table Common Floating Point Errors, p. 608
16#8A38 Not a valid floating point number 16#8A65 number of inputs not even 16#8A64 base point x(i) <= x(i-1) See table Common Floating Point Errors, p. 608
596
35006144.07 07/2008
Output Processing
EFB name
Table of error codes and errors values created for EFBs of the Output Processing family.
Error code ENO state in case of error T F T/F Error value in Dec Error value in Hex Error description
MS MS MS
30110 -
16#759E Parameter out of range See table Common Floating Point Errors, p. 608 For details about the MS status word refer to the MS description (See Unity Pro, Control Block Library)
F F F T/F
-30113 -
16#8A5F t_min < t_max See table Common Floating Point Errors, p. 608 See table Common Floating Point Errors, p. 608 For details about the SERVO status word refer to the SERVO description (See Unity Pro, Control Block Library)
T F F T/F
30110 -30121 -
16#759E Parameter out of range 16#8A57 Null input scale: max and min limit must be different See table Common Floating Point Errors, p. 608 For details about the SPLRG status word refer to the SPLRG description (See Unity Pro, Control Block Library)
35006144.07 07/2008
597
Setpoint Management
EFB name
Table of error codes and errors values created for EFBs of the Setpoint Management family.
Error code ENO state in case of error T F T/F Error value in Dec Error value in Hex Error description
30110 -
16#759E Parameter out of range See table Common Floating Point Errors, p. 608 For details about the RAMP status word refer to the RAMP description (See Unity Pro, Control Block Library) See table Common Floating Point Errors, p. 608 For details about the RATIO status word refer to the RATIO description (See Unity Pro, Control Block Library)
RATIO RATIO
F T/F
T F T/F
30110 -
16#759E Parameter out of range See table Common Floating Point Errors, p. 608 For details about the SP_SEL status word refer to the SP_SEL description (See Unity Pro, Control Block Library)
598
35006144.07 07/2008
MMF Start
EFB name
CFG_CP_F CFG_CP_F CFG_CP_F CFG_CP_V CFG_CP_V CFG_CP_V CFG_CS CFG_CS CFG_FS CFG_FS CFG_IA CFG_IA CFG_RA CFG_RA CFG_SA CFG_SA DRV_DNLD DRV_DNLD DRV_UPLD DRV_UPLD IDN_CHK IDN_CHK IDN_XFER IDN_XFER MMF_BITS MMF_ESUB MMF_ESUB
35006144.07 07/2008
BAD_REVISION MMF_BAD_4X MMF_ABORT_SUB BAD_REVISION MMF_BAD_4X MMF_ABORT_SUB BAD_REVISION MMF_ABORT_SUB BAD_REVISION MMF_ABORT_SUB BAD_REVISION MMF_ABORT_SUB BAD_REVISION MMF_ABORT_SUB BAD_REVISION MMF_ABORT_SUB BAD_REVISION MMF_ABORT_SUB BAD_REVISION MMF_ABORT_SUB BAD_REVISION MMF_ABORT_SUB BAD_REVISION MMF_ABORT_SUB BAD_REVISION BAD_REVISION MMF_ABORT_SUB
-30200 9010 7004 -30200 9010 7004 -30200 7004 -30200 7004 -30200 7004 -30200 7004 -30200 7004 -30200 7004 -30200 7004 -30200 7004 -30200 7004 -30200 -30200 7004
16#8A08 defined as E_EFB_USER_ERROR_1 16#8A08 defined as E_EFB_USER_ERROR_1 16#1B5C SubNum/SubNumEcho handshake error
599
EFB name
Error code
Error description
MMF_IDNX MMF_IDNX MMF_JOG MMF_JOG MMF_JOG MMF_MOVE MMF_MOVE MMF_RST MMF_SUB MMF_SUB MMF_USUB MMF_USUB
BAD_REVISION MMF_ABORT_SUB BAD_REVISION MMF_ABORT_SUB MMF_SUB_TIMEOUT BAD_REVISION MMF_ABORT_SUB BAD_REVISION BAD_REVISION MMF_ABORT_SUB BAD_REVISION MMF_ABORT_SUB
-30200 7004 -30200 7004 7005 -30200 7004 -30200 -30200 7004 -30200 7004
16#8A08 defined as E_EFB_USER_ERROR_1 16#1B5C 16#1B5D SubNum/SubNumEcho handshake error Subroutine does not complete in time
16#8A08 defined as E_EFB_USER_ERROR_1 16#8A08 defined as E_EFB_USER_ERROR_1 16#1B5C SubNum/SubNumEcho handshake error
Note: For details about MMF error codes and error values, please refer to the Faults and Error Reporting (See Unity Pro, Drive control, Block Library) description in the Motion Library.
600
35006144.07 07/2008
CLC
EFB name
DELAY INTEGRATOR1 INTEGRATOR1 INTEGRATOR1 LAG1 LAG1 LEAD_LAG1 LEAD_LAG1 LIMV LIMV LIMV PI1 PI1 PI1 PID1 PID1 PID1 PIDP1 PIDP1 PIDP1 SMOOTH_RATE
E_ERR_DEN E_ERR_DEN E_ERR_IB_MAX_MIN FP_ERROR E_ERR_DEN FP_ERROR E_ERR_DEN FP_ERROR E_ERR_DEN E_ERR_AB1_MAX_MIN FP_ERROR E_ERR_DEN E_ERR_PI_MAX_MIN FP_ERROR E_ERR_DEN E_ERR_PID_MAX_MIN FP_ERROR E_ERR_DEN E_ERR_PID_MAX_MIN FP_ERROR E_ERR_DEN
-30152 -30152 -30102 -30152 -30152 -30152 -30101 -30152 -30103 -30152 -30104 -30152 -30104 -30152
16#8A38 Not a valid floating point number 16#8A38 Not a valid floating point number 16#8A6A YMAX < YMIN See table Common Floating Point Errors, p. 608
16#8A38 Not a valid floating point number See table Common Floating Point Errors, p. 608
16#8A38 Not a valid floating point number See table Common Floating Point Errors, p. 608
16#8A38 Not a valid floating point number 16#8A6B YMAX < YMIN See table Common Floating Point Errors, p. 608
16#8A38 Not a valid floating point number 16#8A69 YMAX < YMIN See table Common Floating Point Errors, p. 608
16#8A38 Not a valid floating point number 16#8A68 YMAX < YMIN See table Common Floating Point Errors, p. 608
16#8A38 Not a valid floating point number 16#8A68 YMAX < YMIN See table Common Floating Point Errors, p. 608
35006144.07 07/2008
601
EFB name
Error code
Error description
SMOOTH_RATE THREE_STEP_CO N1 THREE_STEP_CO N1 THREE_STEP_CO N1 THREE_STEP_CO N1 THREE_STEP_CO N1 THREE_STEP_CO N1 THREEPOINT_CO N1 THREEPOINT_CO N1 THREEPOINT_CO N1 THREEPOINT_CO N1 THREEPOINT_CO N1 TWOPOINT_CON1 TWOPOINT_CON1 TWOPOINT_CON1 TWOPOINT_CON1 TWOPOINT_CON1
FP_ERROR E_ERR_DEN W_WARN_DSR_TN W_WARN_DSR_TSN W_WARN_DSR_KP E_ERR_DSR_HYS FP_ERROR E_ERR_DEN W_WARN_ZDR_XRR W_WARN_ZDR_T1T2 FP_ERROR E_ERR_ZDR_HYS E_ERR_DEN W_WARN_ZDR_XRR W_WARN_ZDR_T1T2 FP_ERROR E_ERR_ZDR_HYS
-30152 30101 30102 30103 -30105 -30152 30105 30104 -30106 -30152 30105 30104 -30106
16#8A38 Not a valid floating point number 16#7595 16#7596 16#7597 TN = 0 TSN = 0 KP <= 0
16#8A67 2 * |UZ| < |HYS| See table Common Floating Point Errors, p. 608
16#8A38 Not a valid floating point number 16#7599 16#7598 DR: XRR < -100 or XRR > 100 T2 > T1 See table Common Floating Point Errors, p. 608
16#8A66 2 * |UZ| < |HYS| 16#8A38 Not a valid floating point number 16#7599 16#7598 DR: XRR < -100 or XRR > 100 T2 > T1 See table Common Floating Point Errors, p. 608
602
35006144.07 07/2008
CLC_PRO
EFB name
Table of error codes and errors values created for EFBs of the CLC_PRO family.
Error code ENO state in case of error F F F F F F F F F F F F F F F T T F F F F F F F F F F Error value in Dec Error value in Hex Error description
ALIM ALIM ALIM ALIM COMP_PID COMP_PID COMP_PID COMP_PID COMP_PID DEADTIME DERIV DERIV FGEN FGEN FGEN FGEN FGEN FGEN FGEN INTEG INTEG INTEG LAG LAG LAG2 LAG2 LEAD_LAG
E_ERR_DEN WAF_AB2_VMAX WAF_AB2_BMAX FP_ERROR E_ERR_DEN WAF_KPID_KUZ WAF_KPID_OGUG WAF_KPID_UZ FP_ERROR E_ERR_DEN E_ERR_DEN FP_ERROR E_ERR_DEN WAF_SIG_TV_MAX WAF_SIG_TH_MAX WAF_SIG_TA_MAX WAF_SIG_T1_MIN WAF_SIG_FKT FP_ERROR E_ERR_DEN E_ERR_IB_MAX_MIN FP_ERROR E_ERR_DEN FP_ERROR E_ERR_DEN FP_ERROR E_ERR_DEN
-30152 -30111 -30112 -30152 -30110 -30104 -30109 -30152 -30152 -30152 -30116 -30117 30106 30107 -30118 -30152 -30102 -30152 -30152 -30152
16#8A38 Not a valid floating point number 16#8A61 16#8A60 vmax <= 0 bmax <= 0 See table Common Floating Point Errors, p. 608
16#8A38 Not a valid floating point number 16#8A62 16#8A68 16#8A63 gain_red < 0 or gain_red > 1 YMAX < YMIN db < 0 See table Common Floating Point Errors, p. 608
16#8A38 Not a valid floating point number 16#8A38 Not a valid floating point number See table Common Floating Point Errors, p. 608
16#8A38 Not a valid floating point number 16#8A5C t_acc > t_rise / 2 16#8A5B t_rise too big 16#759A t_off >= halfperiod 16#759B t_max <= t_min 16#8A5A func_no <= 0 or func_no > 8 See table Common Floating Point Errors, p. 608
16#8A38 Not a valid floating point number 16#8A6A YMAX < YMIN See table Common Floating Point Errors, p. 608
16#8A38 Not a valid floating point number See table Common Floating Point Errors, p. 608
16#8A38 Not a valid floating point number See table Common Floating Point Errors, p. 608
35006144.07 07/2008
603
EFB name
Error code
Error description
LEAD_LAG PCON2 PCON2 PCON2 PCON2 PCON2 PCON3 PCON3 PCON3 PCON3 PCON3 PD_OR_PI PD_OR_PI PD_OR_PI PDM PDM PDM PI PI PI PID PID PID PID_P PID_P PID_P PIP
FP_ERROR E_ERR_DEN W_WARN_ZDR_XRR W_WARN_ZDR_T1T2 FP_ERROR E_ERR_ZDR_HYS E_ERR_DEN W_WARN_ZDR_XRR W_WARN_ZDR_T1T2 FP_ERROR E_ERR_ZDR_HYS E_ERR_DEN WAF_PDPI_OG_UG FP_ERROR PDM_TMAX_TMIN PDM_OG_UG FP_ERROR E_ERR_DEN E_ERR_PI_MAX_MIN FP_ERROR E_ERR_DEN E_ERR_PID_MAX_MIN FP_ERROR E_ERR_DEN E_ERR_PID_MAX_MIN FP_ERROR E_ERR_DEN
-30152 30105 30104 -30106 -30152 30105 30104 -30106 -30152 -30103 -30115 -30114 -30152 -30103 -30152 -30104 -30152 -30104 -30152
16#8A38 Not a valid floating point number 16#7599 16#7598 DR: XRR < -100 or XRR > 100 T2 > T1 See table Common Floating Point Errors, p. 608
16#8A66 2 * |UZ| < |HYS| 16#8A38 Not a valid floating point number 16#7599 16#7598 DR: XRR < -100 or XRR > 100 T2 > T1 See table Common Floating Point Errors, p. 608
16#8A66 2 * |UZ| < |HYS| 16#8A38 Not a valid floating point number 16#8A69 16#8A5D 16#8A69 YMAX < YMIN See table Common Floating Point Errors, p. 608 t_max <= t_min |pos_up_x| > |pos_lo_x| or |neg_up_x| > |neg_lo_x| See table Common Floating Point Errors, p. 608
16#8A38 Not a valid floating point number 16#8A69 YMAX < YMIN See table Common Floating Point Errors, p. 608
16#8A38 Not a valid floating point number 16#8A68 YMAX < YMIN See table Common Floating Point Errors, p. 608
16#8A38 Not a valid floating point number 16#8A68 YMAX < YMIN See table Common Floating Point Errors, p. 608
604
35006144.07 07/2008
EFB name
Error code
Error description
PIP PIP PPI PPI PPI PWM PWM QPWM QPWM SCON3 SCON3 SCON3 SCON3 SCON3 SCON3 VLIM VLIM VLIM
E_ERR_PI_MAX_MIN FP_ERROR E_ERR_DEN E_ERR_PI_MAX_MIN FP_ERROR WAF_PBM_TMINMAX FP_ERROR WAF_PBM_TMINMAX FP_ERROR E_ERR_DEN W_WARN_DSR_TN W_WARN_DSR_TSN W_WARN_DSR_KP E_ERR_DSR_HYS FP_ERROR E_ERR_DEN E_ERR_AB1_MAX_MIN FP_ERROR
-30103 -30152 -30103 -30113 -30113 -30152 30101 30102 30103 -30105 -30152 -30101 -
16#8A69 YMAX < YMIN See table Common Floating Point Errors, p. 608
16#8A38 Not a valid floating point number 16#8A69 YMAX < YMIN See table Common Floating Point Errors, p. 608
16#8A5F t_min < t_max See table Common Floating Point Errors, p. 608
16#8A5F t_min < t_max See table Common Floating Point Errors, p. 608
16#8A38 Not a valid floating point number 16#7595 16#7596 16#7597 TN = 0 TSN = 0 KP <= 0
16#8A67 2 * |UZ| < |HYS| See table Common Floating Point Errors, p. 608
16#8A38 Not a valid floating point number 16#8A6B YMAX < YMIN See table Common Floating Point Errors, p. 608
35006144.07 07/2008
605
Extension/ Compatibility
EFB name
Table of error codes and errors values created for EFBs of the Extension/ Compatibility family.
Error code ENO state in case of error F F F F F F F F F F F F F F F F F F F Error value in Dec Error value in Hex Error description
AKF_TA AKF_TE AKF_TI AKF_TS AKF_TV FIFO GET_3X GET_4X GET_BIT IEC_BMDI IEC_BMDI IEC_BMDI IEC_BMDI IEC_BMDI IEC_BMDI IEC_BMDI IEC_BMDI IEC_BMDI IEC_BMDI
E_AKFEFB_TIMEBASE_IS_ ZERO E_AKFEFB_TIMEBASE_IS_ ZERO E_AKFEFB_TIMEBASE_IS_ ZERO E_AKFEFB_TIMEBASE_IS_ ZERO E_AKFEFB_TIMEBASE_IS_ ZERO E_INPUT_VALUE_OUT_OF _RANGE E_INPUT_VALUE_OUT_OF _RANGE E_INPUT_VALUE_OUT_OF _RANGE E_INPUT_VALUE_OUT_OF _RANGE E_EFB_USER_ERROR_1 E_EFB_USER_ERROR_2 E_EFB_USER_ERROR_3 E_EFB_USER_ERROR_4 E_EFB_USER_ERROR_5 E_EFB_USER_ERROR_6 E_EFB_USER_ERROR_7 E_EFB_USER_ERROR_8 E_EFB_USER_ERROR_9 E_EFB_USER_ERROR_10
-30482 -30482 -30482 -30482 -30482 -30183 -30183 -30183 -30183 -30200 -30201 -30202 -30203 -30204 -30205 -30206 -30207 -30208 -30209
16#88EE Time base is zero 16#88EE Time base is zero 16#88EE Time base is zero 16#88EE Time base is zero 16#88EE Time base is zero 16#8A19 Input value is out of range 16#8A19 Input value is out of range 16#8A19 Input value is out of range 16#8A19 Input value is out of range 16#8A08 Input value is invalid register type (SourceTable). 16#8A07 The input offset (OffsetInSourceTable) selects an address outside acceptable limits. 16#8A06 The input offset (OFF_IN) is not 1 or a multiple of 16+1. 16#8A05 Output value is invalid register type (DestinationTable). 16#8A04 The output offset (OffsetInDestinationTable) selects an address outside acceptable limits. 16#8A03 The output offset (OffsetInDestinationTable) is not 1 or a multiple of 16+1. 16#8A02 The value for (NumberOfElements) is 0. 16#8A01 The value for (NumberOfElements) addresses more than 1600 bits. 16#8A00 The value for (NumberOfElements) addresses more than 100 words. 16#89FF The value for (NumberOfElements) selects a source address outside the acceptable limits.
606
35006144.07 07/2008
EFB name
Error code
Error description
IEC_BMDI
E_EFB_USER_ERROR_11
-30210
16#89FE The value for (NumberOfElements) selects a destination address outside the acceptable limits. 16#89FD The value for (NumberOfElements) is not a multiple of 16. 16#89FC Warning: Address overlap of input and output addresses. 16#8A19 Input value is out of range 16#8A19 Input value is out of range 16#8A21 Selector is out of range 16#8A19 Input value is out of range
E_EFB_USER_ERROR_12 E_EFB_USER_ERROR_13 E_INPUT_VALUE_OUT_OF _RANGE E_INPUT_VALUE_OUT_OF _RANGE E_SELECTOR_OUT_OF_R ANGE E_INPUT_VALUE_OUT_OF _RANGE
F F F F F F
35006144.07 07/2008
607
Error value in Dec -30150 -30151 -30152 -30154 -30155 -30158 -30159 -30162 -30163 -30166
Error value in Hex 16#8A3A 16#8A39 16#8A38 16#8A36 16#8A35 16#8A32 16#8A31 16#8A2E 16#8A2D 16#8A2A
Error description Base value (not apearing as an error value) Illegal floating point operation Operand is denormalized - not a valid REAL number Illegal divide by zero Illegal floating point operation / Divide by zero Floating point overflow Illegal floating point operation / Overflow Floating point overflow / Divide by zero Illegal floating point operation / Overflow / Divide by zero Internal error
608
35006144.07 07/2008
IEC Compliance
B
At a Glance
Overview What's in this Chapter? This chapter contains the compliance tables required by IEC 61131-3. This chapter contains the following sections:
Section B.1 B.2 B.3 B.4 Topic General Information regarding IEC 61131-3 IEC Compliance Tables Extensions of IEC 61131-3 Textual language syntax Page 610 612 634 635
35006144.07 07/2008
609
IEC Compliance
B.1
610
35006144.07 07/2008
IEC Compliance
The supported features and other implementation specific information is given in the following compliance statement and the subsequent tables as required by the Standard.
35006144.07 07/2008
611
IEC Compliance
B.2
At a Glance
Overview
This system complies with the requirements of IEC 61131-3 for the language and feature listed in the following tables. This section contains the following topics:
Topic Common elements IL language elements ST language elements Common graphical elements LD language elements Implementation-dependent parameters Error Conditions Page 613 625 626 627 628 629 632
612
35006144.07 07/2008
IEC Compliance
Common elements
Common elements IEC compliance table for common elements:
Table No. Feature No. 1 2 3a 4a 5a 2 1 2 3 3 3a 4 1 1 1 2 3 4 5 6 7 8 9 5 1 3 6 2 3 4 5 6 7 8 9 Description of Feature Lower case characters Number sign (#) Dollar sign ($) Vertical bar (|) Upper case and numbers Upper and lower case, numbers, embedded underlines Upper and lower case , numbers, leading or embedded underlines Comments Pragmas Integer literals Real literals Real literals with exponents Base 2 literals Base 8 literals Base 16 literals Boolean zero and one Boolean FALSE and TRUE Typed literals Single-byte character strings Single-byte typed string literals Dollar sign Single quote Line feed New line Form feed (page) Carriage return Tab Double quote
35006144.07 07/2008
613
IEC Compliance
Description of Feature Duration literals without underlines: short prefix long prefix Duration literals with underlines: short prefix long prefix Date literals (long prefix) Date literals (short prefix) Time of day literals (long prefix) Time of day literals (short prefix) Date and time literals (long prefix) Date and time literals (short prefix) Data type BOOL Data type INT Data type DINT Data type UINT Data type UDINT Data type REAL Data type TIME Data type DATE Data type TIME_OF_DAY or TOD Data type DATE_AND_TIME or DT Data type STRING Data type BYTE Data type WORD Data type DWORD Array data types Structured data types Initialization of array data types Initialization of derived structured data types
614
35006144.07 07/2008
IEC Compliance
Description of Feature Input location Output location Memory location Single bit size (X Prefix) Single bit size (No Prefix) Word (16 bits) size Double word (32 bits) size Long (quad) word (64 bits) size Declaration of locations of symbolic variables (Note 5, p. 622) Array location assignment (Note 5, p. 622) Automatic memory allocation of symbolic variables Array declaration (Note 11, p. 624) Retentive array declaration (Note 11, p. 624) Declaration for structured variables Initialization of directly represented variables (Note 11, p. 624) Location and initial value assignment to symbolic variables Array location assignment and initialization Initialization of symbolic variables Array initialization (Note 11, p. 624) Retentive array declaration and initialization (Note 11, p. 624) Initialization of structured variables Initialization of constants Initialization of function block instances Negated input Negated output formal function / function block call non-formal function / function block call Use of EN and ENO shown in LD Usage without EN and ENO shown in FBD In-out variable declaration (textual) In-out variable declaration (graphical) Graphical connection of in-out variable to different variables (graphical)
35006144.07 07/2008
615
IEC Compliance
Description of Feature Overloaded functions Typed functions *_TO_** (Note 1, p. 621) TRUNC (Note 2, p. 621) *_BCD_TO_** (Note 3, p. 622) **_TO_BCD_* (Note 3, p. 622) ABS function SQRT function LN function LOG function EXP function SIN function COS function TAN function ASIN function ACOS function ATAN function ADD function MUL function SUB function DIV function MOD function EXPT function MOVE function SHL function SHR function ROR function ROL function AND function OR function XOR function NOT function
616
35006144.07 07/2008
IEC Compliance
Description of Feature SEL function MAX function MIN function LIMIT function MUX function GT function GE function EQ function LE function LT function NE function LEN function (Note 4, p. 622) LEFT function (Note 4, p. 622) RIGHT function (Note 4, p. 622) MID function (Note 4, p. 622) INSERT function (Note 4, p. 622) DELETE function (Note 4, p. 622) REPLACE function (Note 4, p. 622) FIND function (Note 4, p. 622) ADD function (Note 6, p. 623) ADD_TIME function ADD_TOD_TIME function ADD_DT_TIME function SUB function (Note 6, p. 623) SUB_TIME function SUB_DATE_DATE function SUB_TOD_TIME function SUB_TOD_TOD function SUB_DT_TIME function SUB_DT_DT function MUL function (Note 6, p. 623) MULTIME function DIV function function (Note 6, p. 623) DIVTIME function
35006144.07 07/2008
617
IEC Compliance
Description of Feature RETAIN qualifier for internal variables (Note 11, p. 624) RETAIN qualifier for output variables (Note 11, p. 624) RETAIN qualifier for input variables (Note 11, p. 624) RETAIN qualifier for internal function blocks (Note 11, p. 624) VAR_IN_OUT declaration (textual) VAR_IN_OUT declaration and usage (graphical) VAR_IN_OUT declaration with assignment to different variables (graphical) Bistable Function Block (set dominant) Bistable Function Block (reset dominant) Rising edge detector Falling edge detector CTU (Up-counter) function block CTU_DINT function block CTU_UDINT function block CTD (Down-counter) function block CTD_DINT function block CTD_UDINT function block CTUD (Up-down-counter) function block CTUD_DINT function block CTUD_UDINT function block TP (Pulse) function block TON (On delay) function block TOF (Off delay) function block Use of directly represented variables Step and initial step - Graphical form with directed links Step flag General form Step elapsed time General form
618
35006144.07 07/2008
IEC Compliance
Description of Feature Use of transition name Transition condition linked through transition name using LD language Transition condition linked through transition name using FBD language Transition condition linked through transition name using IL language Transition condition linked through transition name using ST language Any Boolean variable declared in a VAR or VAR_OUTPUT block, or their graphical equivalents, can be an action Graphical declaration of action in LD language Graphical declaration of action in FBD language Textual declaration of action in ST language Textual declaration of action in IL language Action block physically or logically adjacent to the step (Note 7, p. 624) Concatenated action blocks physically or logically adjacent to the step (Note 8, p. 624) Action qualifier in action block supported Action name in action block supported None - no qualifier Qualifier N Qualifier R Qualifier S Qualifier L Qualifier D Qualifier P Qualifier DS Qualifier P1 Qualifier P0 Action control without "final scan"
35006144.07 07/2008
619
IEC Compliance
Description of Feature Single sequence Divergence of sequence selection: left-to-right priority of transition evaluations Convergence of sequence selection Simultaneous sequences - divergence and convergence Sequence skip: left-to-right priority of transition evaluations Sequence loop: left-to-right priority of transition evaluations CONFIGURATION...END_CONFIGURATION construction (Note 12, p. 624) Periodic TASK construction Non-periodic TASK construction WITH construction for PROGRAM to TASK association (Note 9, p. 624) PROGRAM declaration with no TASK association (Note 10, p. 624) Non-preemptive scheduling (Note 13, p. 624) Preemptive scheduling (Note 14, p. 624)
620
35006144.07 07/2008
IEC Compliance
Note 1
List of type conversion functions: BOOL_TO_BYTE, BOOL_TO_DINT, BOOL_TO_INT, BOOL_TO_REAL, BOOL_TO_TIME, BOOL_TO_UDINT, BOOL_TO_UINT, BOOL_TO_WORD, BOOL_TO_DWORD BYTE_TO_BOOL, BYTE_TO_DINT, BYTE_TO_INT, BYTE_TO_REAL, BYTE_TO_TIME, BYTE_TO_UDINT, BYTE_TO_UINT, BYTE_TO_WORD, BYTE_TO_DWORD, BYTE_TO_BIT DINT_TO_BOOL, DINT_TO_BYTE, DINT_TO_INT, DINT_TO_REAL, DINT_TO_TIME, DINT_TO_UDINT, DINT_TO_UINT, DINT_TO_WORD, DINT_TO_DWORD, DINT_TO_DBCD, DINT_TO_STRING INT_TO_BOOL, INT_TO_BYTE, INT_TO_DINT, INT_TO_REAL, INT_TO_TIME, INT_TO_UDINT, INT_TO_UINT, INT_TO_WORD, INT_TO_BCD, INT_TO_DBCD, INT_TO_DWORD, INT_TO_STRING REAL_TO_BOOL, REAL_TO_BYTE, REAL_TO_DINT, REAL_TO_INT, REAL_TO_TIME, REAL_TO_UDINT, REAL_TO_UINT, REAL_TO_WORD, REAL_TO_DWORD, REAL_TO_STRING TIME_TO_BOOL, TIME_TO_BYTE, TIME_TO_DINT, TIME_TO_INT, TIME_TO_REAL, TIME_TO_UDINT, TIME_TO_UINT, TIME_TO_WORD, TIME_TO_DWORD, TIME_TO_STRING UDINT_TO_BOOL, UDINT_TO_BYTE, UDINT_TO_DINT, UDINT_TO_INT, UDINT_TO_REAL, UDINT_TO_TIME, UDINT_TO_UINT, UDINT_TO_WORD, UDINT_TO_DWORD UINT_TO_BOOL, UINT_TO_BYTE, UINT_TO_DINT, UINT_TO_INT, UINT_TO_REAL, UINT_TO_TIME, UINT_TO_UDINT, UINT_TO_WORD, UINT_TO_DWORD, WORD_TO_BOOL, WORD_TO_BYTE, WORD_TO_DINT, WORD_TO_INT, WORD_TO_REAL, WORD_TO_TIME, WORD_TO_UDINT, WORD_TO_UINT, WORD_TO_BIT, WORD_TO_DWORD DWORD_TO_BOOL, DWORD_TO_BYTE, DWORD_TO_DINT, DWORD_TO_INT, DWORD_TO_REAL, DWORD_TO_TIME, DWORD_TO_UDINT, DWORD_TO_UINT, DWORD_TO_BIT, The effects of each conversion are described in the help text supplied with the Base Library.
Note 2
List of types for truncate function: REAL_TRUNC_DINT, REAL_TRUNC_INT, REAL_TRUNC_UDINT, REAL_TRUNC_UINT The effects of each conversion are described in the help text supplied with the Base Library.
35006144.07 07/2008
621
IEC Compliance
Note 3
List of types for BCD conversion function: BCD_TO_INT, DBCD_TO_INT, DBCD_TO_DINT List of types for BCD conversion function: INT_TO_BCD, INT_TO_DBCD, DINT_TO_DBCD The effects of each conversion are described in the help text supplied with the Base Library.
Note 4
List of types for String functions: LEN_INT, LEFT_INT, RIGHT_INT, MID_INT, INSERT_INT, DELETE_INT, REPLACE_INT, FIND_INT A variable can be mapped to a directly represented variable if they stricly have the same type. This means that a variable of type INT can only be mapped on a directly represented variable of type INT. But there is one exception to this rule: for internal word (%MW<i>), Flat word (%IW<i>) and constant word (%KW<i>) memory variables any declared variable type is allowed. Allowed mappings:
Syntax Internal bit Internal word %M<i> or %MX<i> %MW<i> Data type EBOOL INT Allowed variable types EBOOL ARRAY [..] OF EBOOL All types are allowed except: EBOOL ARRAY [..] OF EBOOL No mapping, because of overlapping between %MW<i> and %MD<i> and %MF<i>. No mapping, because of overlapping between %MW<i> and %MD<i> and %MF<i>. All types are allowed except: EBOOL ARRAY [..] OF EBOOL
Note 5
%MD<i>
DINT
Internal real
%MF<i>
REAL
Constant word
%KW<i>
INT
622
35006144.07 07/2008
IEC Compliance
Allowed variable types No mapping, because of overlapping between %KW<i> and %KD<i> and %KF<i>. This kind of variables only exists on Premium PLCs. No mapping, because of overlapping between %KW<i> and %KD<i> and %KF<i>. This kind of variables only exists on Premium PLCs. EBOOL INT DINT EBOOL ARRAY [..] OF EBOOL This kind of variables only exists on Qantum PLCs. All types are allowed except: EBOOL ARRAY [..] OF EBOOL This kind of variables only exists on Qantum PLCs.
Constant real
%KF<i>
REAL
Flat word
%IW<i>
INT
INT ...
INT Same Type (On some digital I/O modules it is allowed to map arrays of EBOOL on %IX<topo> and %QX<topo> objects.) BOOL
Extract bits
%MWi.j, ...
BOOL
Note 6
Only operator "+" (for ADD), "-" (for SUB), "*" (for MUL) or "/" (for DIV) in ST language.
35006144.07 07/2008
623
IEC Compliance
Note 7 Note 8
This feature is only presented in the "expanded view" of the chart. This feature is presented in the "expanded view" of the chart, but not as concatenated blocks, but as a scrollable list of action names with associated qualifiers inside one single block symbol. There is only a one-to-one mapping of program instance to task. The textual format is replaced by a property dialog. The textual format is replaced by a property dialog. All variables are retentive (RETAIN qualifier implicitly assumed in variable declarations). The textual format is replaced by the project browser representation. Using Mask-IT instruction, the user is able to get a non-preemptive behaviour. You will find MASKEVT (Global EVT masking) and UNMASKEVT (Global EVT unmasking) in the System functions of the libset. By default, the multi-task system is preemptive.
Note 9
Note 10 Note 11
Note 12 Note 13
Note 14
624
35006144.07 07/2008
IEC Compliance
IL language elements
IL language elements IEC compliance table for IL language elements:
Table No. 51b 51b 52 Feature No. 1 2 1 2 3 4 6 7 7a 8 9 10 11 11a 12 13 14 15 16 17 18 19 20 21 53 1a 1b 2 4 5 Feature description Parenthesized expression beginning with explicit operator Parenthesized expression (short form) LD operator (with modifier "N") ST operator (with modifier "N") S, R operator AND operator (with modifiers "(", "N") OR operator (with modifiers "(", "N") XOR operator (with modifiers "(", "N") NOT operator ADD operator (with modifier "(") SUB operator (with modifier "(") MUL operator (with modifier "(") DIV operator (with modifier "(") MOD operator (with modifier "(") GT operator (with modifier "(") GE operator (with modifier "(") EQ operator (with modifier "(") NE operator (with modifier "(") LE operator (with modifier "(") LT operator (with modifier "(") JMP operator (with modifiers "C", "N") CAL operator (with modifiers "C", "N") RET operator (with modifiers "C", "N") (Note, p. 625) ) (evaluate deferred operation) CAL of Function Block with non-formal argument list CAL of Function Block with formal argument list CAL of Function Block with load/store of arguments Function invocation with formal argument list Function invocation with non-formal argument list
Note
In DFB only.
35006144.07 07/2008
625
IEC Compliance
ST language elements
ST language elements IEC compliance table for ST language elements:
Table No. Feature No. 55 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 56 1 2 3 4 5 6 7 8 9 10 Feature description Parenthesization (expression) Function evaluation: functionName(listOfArguments) Exponentiation: ** Negation: Complement: NOT Multiply: * Divide: / Modulo: MOD Add: + Subtract: Comparison: <, >, <=, >= Equality: = Inequality: <> Boolean AND: & Boolean AND: AND Boolean Exclusive OR: XOR Boolean OR: OR Assignment Function block invocation and function block output usage RETURN statement (Note, p. 626) IF statement CASE statement FOR statement WHILE statement REPEAT statement EXIT statement Empty statement
Note
In DFB only.
626
35006144.07 07/2008
IEC Compliance
Note
In DFB only.
35006144.07 07/2008
627
IEC Compliance
LD language elements
LD language elements IEC compliance table for LD language elements:
Table No. Feature No. 59 1 2 60 1 2 61 1 3 5 7 62 1 2 3 4 8 9 Feature description Left power rail Right power rail Horizontal link Vertical link Normally open contact (vertical bar) (Note, p. 628) Normally closed contact (vertical bar) (Note, p. 628) Positive transition-sensing contact (vertical bar) (Note, p. 628) Negative transition-sensing contact (vertical bar) (Note, p. 628) Coil Negated coil SET (latch) coil RESET (unlatch) coil Positive transition-sensing coil Negative transition-sensing coil
Note
628
35006144.07 07/2008
IEC Compliance
Implementation-dependent parameters
Implementationdependent parameters IEC compliance table for implementation-dependent parameters:
Parameters Maximum length of identifiers Maximum comment length Limitations/Behavior 32 characters Within the Unity Pro: 1024 characters for each editor object. Import: limited by XML constraints or UDBString usage in the persistent layer. Unity V1.0 only implements 1 pragma, used for legacy convertor: { ConvError (' error text'); } any other pragma construct is ignored (a warning message is given) (#2 of table 5 is supported)
Syntax and semantics for the use of the double-quote character when a particular implementation supports Feature #4 but not Feature #2 of Table 5.
Range of values and precision of for TIME : t#0ms .. t#4294967295ms representation for variables of type TIME, (=t#49D_17H_2M_47S_295MS) DATE, TIME_OF_DAY and DATE_AND_TIME for DATE: D#1990-01-01 .. D#2099-1231 for TOD: TOD#00:00:00 .. TOD#23:59:59 Precision of representation of seconds in types TIME, TIME_OF_DAY and DATE_AND_TIME Maximum number of enumerated values Maximum number of array subscripts Maximum array size Maximum number of structure elements Maximum structure size Maximum range of subscript values Maximum number of levels of nested structures Default maximum length of STRING and WSTRING variables Maximum allowed length of STRING and WSTRING variables
35006144.07 07/2008
TIME: precision 1 ms TIME_OF_DAY: precision 1 s Not applicable 6 64 kbytes no limit 64 kbytes DINT range 10 16 characters 64 kbytes
629
IEC Compliance
Parameters Maximum number of hierarchical levels Logical or physical mapping Maximum number of inputs of extensible functions
Limitations/Behavior Premium: physical mapping (5 levels) Quantum: logical mapping (1 level) The number of all input parameters (including in-out parameters) is limited to 32. The number of all output parameters (including inout parameters) is also limited to 32. Thus the limit for extensible input parameters is (32 - number of input parameters - number of in-out parameters). The limit for extensible output parameters is (32 - number of output parameters - number of in-out parameters). See online help. Error conditions are described in the onlinehelp. Globally %S18 is set for overflow errors. ENO is also set. The result is depending on the specific function. INTEL floating point processing or emulation.
Effects of type conversions between time See online help. data types and other data types not defined in Table 30 Maximum number of function block specifications and instantiations Function block input variable assignment when EN is FALSE Pvmin, Pvmax of counters Only limited by the maximum size of a section. No assignment INT base counters: Pvmin=-32768 (0x8000) Pvmax=32767 (0x7FFF) UINT base counters: Pvmin=0 (0x0) Pvmax=65535 (0xFFFF) DINT base counters: Pvmin= -2147483648 (0x80000000) Pvmax=2147483647 (0x7FFFFFFF) UDINT base counters: Pvmin=0 (0x0) Pvmax=4294967295 (0xFFFFFFFF)
630
35006144.07 07/2008
IEC Compliance
Limitations/Behavior The new PT values are immediatelytaken at once into account, even during a running timing operation immediately works with the new values. Depends on controller type and memory 10 ms 1024 steps per SFC section
Program size limitations Precision of step elapsed time Maximum number of steps per SFC
Maximum number of transitions per SFC and Limited by the available area for entering per step steps/transitions and by the maximum number of steps per SFC section (1024 Steps). 32 transition per step. Limited by the available area for entering Alternative/Parallel branches, maximum is 32 rows. Maximum number of action blocks per step 20
Access to the functional equivalent of the Q or not applicable A outputs Transition clearing time Maximum width of diverge/converge constructs Contents of RESOURCE libraries Effect of using READ_WRITE access to function block outputs Maximum number of tasks Task interval resolution Maximum length of expressions Maximum length of statements Maximum number of CASE selections Value of control variable upon termination of FOR loop Restrictions on network topology Evaluation order of feedback loops Target dependent; always < 100 micro-seconds 32 Not applicable Not applicable Depends on controller type. Maximum on most powerful controller: 9 tasks 10 ms Practically no limit Practically no limit Practically no limit Undefined No restrictions The block connected to the feedback variable is executed first
35006144.07 07/2008
631
IEC Compliance
Error Conditions
Error Conditions IEC standards table for error conditions:
Error conditions Nested comments Value of a variable exceeds the specified subrange Missing configuration of an incomplete address specification ("*" notation) Attempt by a program organization unit to modify a variable which has been declared CONSTANT Improper use of directly represented or external variables in functions A VAR_IN_OUT variable is not "properly mapped" Type conversion errors Treatment (see Note, p. 633) 2) error is reported during programming 4) error is reported during execution Not applicable 2) error is reported during programming
Not applicable 2) error is reported during programming 4) error is reported during execution
Numerical result exceeds range for data type 4) error is reported during execution Division by zero 4) error is reported during execution
Mixed input data types to a selection function 2) error is reported during programming Result exceeds range for data type No value specified for an in-out variable Zero or more than one initial steps in SFC network 4) error is reported during execution 2) error is reported during programming 3) error is reported during analyzing/loading/ linking
User program attempts to modify step state or 2) error is reported during programming time Side effects in evaluation of transition condition Action control contention error Simultaneously true, non-prioritized transitions in a selection divergence Unsafe or unreachable SFC Data type conflict in VAR_ACCESS A task fails to be scheduled or to meet its execution deadline 3) error is reported during analyzing/loading/ linking 3) error is reported during analyzing/loading/ linking Not applicable 3) error is reported during analyzing/loading/ linking Not applicable 4) error is reported during execution
632
35006144.07 07/2008
IEC Compliance
Error conditions
Numerical result exceeds range for data type 4) error is reported during execution Current result and operand not of same data type Division by zero 2) error is reported during programming 4) error is reported during execution
Numerical result exceeds range for data type 4) error is reported during execution Invalid data type for operation Return from function without value assigned Iteration fails to terminate Same identifier used as connector label and element name Uninitialized feedback variable 4) error is reported during execution Not applicable 4) error is reported during execution Not applicable 1) error is not reported
Note
Identifications for the treatment of error conditions according to IEC 61131-3, subclause 1.5.1, d): 1) error is not reported 2) error is reported during programming 3) error is reported during analyzing/loading/linking 4) error is reported during execution
35006144.07 07/2008
633
IEC Compliance
B.3
634
35006144.07 07/2008
IEC Compliance
B.4
35006144.07 07/2008
635
IEC Compliance
636
35006144.07 07/2008
Glossary
!
%I %ID According to the IEC standard, %I indicates a discrete input-type language object. According to the IEC standard, %MW indicates an input double word-type language object. Only I/O objects make it possible to locate type instances (%MD<i>, %KD<i>, %QD, %ID, %MF<i>, %KF<i>, %QF, %IF) by using their topological address (for example %MD0.6.0.11, %MF0.6.0.31). According to the IEC standard, %MW indicates an input real-type language object. Only I/O objects make it possible to locate type instances (%MD<i>, %KD<i>, %QD, %ID, %MF<i>, %KF<i>, %QF, %IF) by using their topological address (for example %MD0.6.0.11, %MF0.6.0.31). According to the IEC standard, %IW indicates an analog input -type language object. According to the IEC standard, %MW indicates a constant double word-type language object. For Premium/Atrium PLCs double-type instances of located data (%MD<i>, %KD<i>) or floating (%MF<i>, %KF<i>) should be located by an integer type (%MW<i>, %KW<i>). Only I/O objects make it possible to locate type instances (%MD<i>, %KD<i>, %QD, %ID, %MF<i>, %KF<i>, %QF, %IF) by using their topological address (for example %MD0.6.0.11, %MF0.6.0.31). For Modicon M340 PLCs, double-type instances of located data (%MD<i>, %KD<i>) or floating (%MF<i>, %KF<i>) are not available.
%IF
%IW %KD
35006144.07 07/2008
637
Glossary
%KF
According to the IEC standard, %MW indicates a constant real-type language object. For Premium/Atrium PLCs double-type instances of located data (%MD<i>, %KD<i>) or floating (%MF<i>, %KF<i>) should be located by an integer type (%MW<i>, %KW<i>). Only I/O objects make it possible to locate type instances (%MD<i>, %KD<i>, %QD, %ID, %MF<i>, %KF<i>, %QF, %IF) by using their topological address (for example %MD0.6.0.11, %MF0.6.0.31). For Modicon M340 PLCs, double-type instances of located data (%MD<i>, %KD<i>) or floating (%MF<i>, %KF<i>) are not available. According to the IEC standard, %KW indicates a constant word-type language object. For Premium/Atrium PLCs double-type instances of located data (%MD<i>, %KD<i>) or floating (%MF<i>, %KF<i>) should be located by an integer type (%MW<i>, %KW<i>). Only I/O objects make it possible to locate type instances (%MD<i>, %KD<i>, %QD, %ID, %MF<i>, %KF<i>, %QF, %IF) by using their topological address (for example %MD0.6.0.11, %MF0.6.0.31). For Modicon M340 PLCs, double-type instances of located data (%MD<i>, %KD<i>) or floating (%MF<i>, %KF<i>) are not available. According to the IEC standard, %M indicates a memory bit-type language object. According to the IEC standard, %MW indicates a memory double word-type language object. For Premium/Atrium PLCs double-type instances of located data (%MD<i>, %KD<i>) or floating (%MF<i>, %KF<i>) should be located by an integer type (%MW<i>, %KW<i>). Only I/O objects make it possible to locate type instances (%MD<i>, %KD<i>, %QD, %ID, %MF<i>, %KF<i>, %QF, %IF) by using their topological address (for example %MD0.6.0.11, %MF0.6.0.31). For Modicon M340 PLCs, double-type instances of located data (%MD<i>, %KD<i>) or floating (%MF<i>, %KF<i>) are not available. According to the IEC standard, %MW indicates a memory real-type language object. For Premium/Atrium PLCs double-type instances of located data (%MD<i>, %KD<i>) or floating (%MF<i>, %KF<i>) should be located by an integer type (%MW<i>, %KW<i>). Only I/O objects make it possible to locate type instances (%MD<i>, %KD<i>, %QD, %ID, %MF<i>, %KF<i>, %QF, %IF) by using their topological address (for example %MD0.6.0.11, %MF0.6.0.31). For Modicon M340 PLCs, double-type instances of located data (%MD<i>, %KD<i>) or floating (%MF<i>, %KF<i>) are not available.
%KW
%M %MD
%MF
638
35006144.07 07/2008
Glossary
%MW
According to the IEC standard, %MW indicates a memory word-type language object. For Premium/Atrium PLCs double-type instances of located data (%MD<i>, %KD<i>) or floating (%MF<i>, %KF<i>) should be located by an integer type (%MW<i>, %KW<i>). Only I/O objects make it possible to locate type instances (%MD<i>, %KD<i>, %QD, %ID, %MF<i>, %KF<i>, %QF, %IF) by using their topological address (for example %MD0.6.0.11, %MF0.6.0.31). For Modicon M340 PLCs, double-type instances of located data (%MD<i>, %KD<i>) or floating (%MF<i>, %KF<i>) are not available. According to the IEC standard, %Q indicates a discrete output-type language object. According to the IEC standard, %MW indicates an output double word-type language object. Only I/O objects make it possible to locate type instances (%MD<i>, %KD<i>, %QD, %ID, %MF<i>, %KF<i>, %QF, %IF) by using their topological address (for example %MD0.6.0.11, %MF0.6.0.31). According to the IEC standard, %MW indicates an output real-type language object. Only I/O objects make it possible to locate type instances (%MD<i>, %KD<i>, %QD, %ID, %MF<i>, %KF<i>, %QF, %IF) by using their topological address (for example %MD0.6.0.11, %MF0.6.0.31). According to the IEC standard, %QW indicates an analog output-type language object.
%Q %QD
%QF
%QW
A
Animating the links This is also called power flow, and refers to a type of animation used with Ladder language and the function blocks. The links are displayed in red, green or black according to the variables connected. There is a hierarchy between the different types of data. In the DFB, it is sometimes possible to declare which variables can contain several types of values. Here, we use ANY_xxx types.
ANY
35006144.07 07/2008
639
Glossary
ARRAY
An ARRAY is a table of elements of the same type. The syntax is as follows: ARRAY [<terminals>] OF <Type> Example: ARRAY [1..2] OF BOOL is a one-dimensional table made up of two BOOL-type elements. ARRAY [1..10, 1..20] OF INT is a two-dimensional table made up of 10x20 INT-type elements.
35006144.07 07/2008
640
Glossary
ASCII
ASCII is the abbreviation of American Standard Code for Information Interchange. This is an American code (but which has become an international standard) that uses 7 bits to define every alphanumerical character used in English, punctuation symbols, certain graphic characters and other miscellaneous commands. Optional periodic tasks used to process procedures that do not require fast processing: measurement, adjustment, diagnostic aid, etc.
Auxiliary tasks
B
Base 10 literals A literal value in base 10 is used to represent a decimal integer value. This value can be preceded by the signs "+" and "-". If the character "_" is employed in this literal value, it is not significant. Example: -12, 0, 123_456, +986 An literal value in base 16 is used to represent an integer in hexadecimal. The base is determined by the number "16" and the sign "#". The signs "+" and "-" are not allowed. For greater clarity when reading, you can use the sign "_" between bits. Example: 16#F_F or 16#FF (in decimal 255) 16#F_F or 16#FF (in decimal 224) A literal value in base 2 is used to represent a binary integer. The base is determined by the number "2" and the sign "#". The signs "+" and "-" are not allowed. For greater clarity when reading, you can use the sign "_" between bits. Example: 2#1111_1111 or 2#11111111 (in decimal 255) 2#1110_0000 or 2#11100000 (in decimal 224) A literal value in base 8 is used to represent an octal integer. The base is determined by the number "8" and the sign "#". The signs "+" and "-" are not allowed. For greater clarity when reading, you can use the sign "_" between bits. Example: 8#3_77 or 8#377 (in decimal 255) 8#34_0 or 8#340 (in decimal 224) The Binary Coded Decimal (BCD) format is used to represent decimal numbers between 0 and 9 using a group of four bits (half-byte). In this format, the four bits used to code the decimal numbers have a range of unused combinations.
Base 16 literals
Base 2 literals
Base 8 literals
BCD
35006144.07 07/2008
641
Glossary
Example of BCD coding: the number 2450 is coded: 0010 0100 0101 0000 BIT This is a binary unit for a quantity of information which can represent two distinct values (or statuses): 0 or 1. BOOL is the abbreviation of Boolean type. This is the elementary data item in computing. A BOOL type variable has a value of either: 0 (FALSE) or 1 (TRUE). A BOOL type word extract bit, for example: %MW10.4. Used in the "debug" mode of the application. It is unique (one at a time) and, when reached, signals to the processor to stop the program run. Used in connected mode, it can be positioned in one of the following program elements: LD network, Structured Text Sequence or Instruction List, Structured Text Line (Line mode). BYTE When 8 bits are put together, this is callad a BYTE. A BYTE is either entered in binary, or in base 8. The BYTE type is coded in an 8 bit format, which, in hexadecimal, ranges from 16#00 to 16#FF
BOOL
Break point
C
Constants An INT, DINT or REAL type variable located in the constant field (%K), or variables used in direct addressing (%KW, %KD or %KF). The contents of these cannot be modified by the program during execution. Is the abbreviation of Control Processing Unit. This is the microprocessor. It is made up of the control unit combined with the arithmetic unit. The aim of the control unit is to extract the instruction to be executed and the data needed to execute this instruction from the central memory, to establish electrical connections in the arithmetic unit and logic, and to run the processing of this data in this unit. We can sometimes find ROM or RAM memories included in the same chip, or even I/O interfaces or buffers.
CPU
642
35006144.07 07/2008
Glossary
Cyclic execution
The master task is executed either cyclically or periodically. Cyclical execution consists of stringing cycles together one after the other with no waiting time between the cycles.
D
DATE The DATE type coded in BCD in 32 bit format contains the following information: the year coded in a 16-bit field, the month coded in an 8-bit field, the day coded in an 8-bit field. The DATE type is entered as follows: D#<Year>-<Month>-<Day> This table shows the lower/upper limits in each field:
Field Year Month Day Limits [1990,2099] [01,12] [01,31] [01,30] [01,29] [01,28] Comment Year The left 0 is always displayed, but can be omitted at the time of entry For the months 01\03\05\07\08\10\12 For the months 04\06\09\11 For the month 02 (leap years) For the month 02 (non leap years)
DATE_AND_TIM E DBCD
see DT
Representation of a Double BCD-format double integer. The Binary Coded Decimal (BCD) format is used to represent decimal numbers between 0 and 9 using a group of four bits. In this format, the four bits used to code the decimal numbers have a range of unused combinations. Example of DBCD coding: the number 78993016 is coded: 0111 1000 1001 1001 0011 0000 0001 0110 DDT is the abbreviation of Derived Data Type. A derived data type is a set of elements of the same type (ARRAY) or of various types (structure)
DDT
35006144.07 07/2008
643
Glossary
DFB
DFB is the abbrevation of Derived Function Block. DFB types are function blocks that can be programmed by the user ST, IL, LD or FBD. By using DFB types in an application, it is possible to: simplify the design and input of the program, increase the legibility of the program, facilitate the debugging of the program, reduce the volume of the generated code. A DFB type instance occurs when an instance is called from a language editor. The instance possesses a name, input/output interfaces, the public and private variables are duplicated (one duplication per instance, the code is not duplicated). A DFB type can have several instances. DINT is the abbrevation of Double Integer format (coded on 32 bits). The lower and upper limits are as follows: -(2 to the power of 31) to (2 to the power of 31) - 1. Example: -2147483648, 2147483647, 16#FFFFFFFF. Contains all the information of the project. The documentation is printed once compiled and used for maintenance purposes. The information contained in the documentation cover: the hardware and software configuration, the program, the DFB types, the variables and animation tables, the cross-references. ... When building the documentation file, you can include all or some of these items.
DFB instance
DINT
Documentation
Driver
A program indicating to your computer's operating system the presence and characteristics of a peripheral device. We also use the term peripheral device driver. The best-known drivers are printer drivers. To make a PLC communicate with a PC, communication drivers need to be installed (Uni-Telway, XIP, Fipway, etc.).
644
35006144.07 07/2008
Glossary
DT
DT is the abbreviation of Date and Time. The DT type coded in BCD in 64 bit format contains the following information: The year coded in a 16-bit field, the month coded in an 8-bit field, the day coded in an 8-bit field, the hour coded in a 8-bit field, the minutes coded in an 8-bit field, the seconds coded in an 8-bit field.
Note: The 8 least significant bits are unused. The DT type is entered as follows: DT#<Year>-<Month>-<Day>-<Hour>:<Minutes>:<Seconds> This table shows the lower/upper limits in each field:
Field Year Month Day Limits [1990,2099] [01,12] [01,31] [01,30] [01,29] [01,28] Hour Minute Second [00,23] [00,59] [00,59] Comment Year The left 0 is always displayed, but can be omitted at the time of entry For the months 01\03\05\07\08\10\12 For the months 04\06\09\11 For the month 02 (leap years) For the month 02 (non leap years) The left 0 is always displayed, but can be omitted at the time of entry The left 0 is always displayed, but can be omitted at the time of entry The left 0 is always displayed, but can be omitted at the time of entry
DWORD
DWORD is the abbreviation of Double Word. The DWORD type is coded in 32 bit format. This table shows the lower/upper limits of the bases which can be used:
Base Hexadecimal Octal Binary Lower limit 16#0 8#0 2#0 Upper limit 16#FFFFFFFF 8#37777777777 2#11111111111111111111111111111111
35006144.07 07/2008
645
Glossary
Representation examples:
Data content 00000000000010101101110011011110 00000000000000010000000000000000 00000000000010101011110011011110 Representation in one of the bases 16#ADCDE 8#200000 2#10101011110011011110
E
EBOOL EBOOL is the abbrevation of Extended Boolean type. A EBOOL type variable brings a value (0 (FALSE) or 1 (TRUE) but also rising or falling edges and forcing capabilities. An EBOOL type variable takes up one byte of memory. The byte split up into: one bit for the value, one bit for the history bit (each time the states object changes, the value is copied inside the history bit), one bit for the forcing bit (equals to 0 if the object isnt forced, equal to 1 if the bit is forced. The default type value of each bit is 0 (FALSE). EDT EDT is the abbreviation of Elementary Data Type. These types are as follows: BOOL, EBOOL, WORD, DWORD, INT, DINT, UINT, UDINT, REAL, DATE, TOD, DT.
646
35006144.07 07/2008
Glossary
EF
Is the abbreviation of Elemantary Function. This is a block which is used in a program, and which performs a predefined software function. A function has no internal status information. Multiple invocations of the same function using the same input parameters always supply the same output values. Details of the graphic form of the function invocation can be found in the "[Functional block (instance)] ". In contrast to the invocation of the function blocks, function invocations only have a single unnamed output, whose name is the same as the function. In FBD each invocation is denoted by a unique [number] via the graphic block, this number is automatically generated and can not be altered. You position and set up these functions in your program in order to carry out your application. You can also develop other functions using the SDKC development kit. Is the abbreviation for Elementary Function Block. This is a block which is used in a program, and which performs a predefined software function. EFBs have internal statuses and parameters. Even where the inputs are identical, the output values may be different. For example, a counter has an output which indicates that the preselection value has been reached. This output is set to 1 when the current value is equal to the preselection value. see EF
EFB
EN means ENable, this is an optional block input. If EN = 0, the block is not activated, its internal program is not executed and ENO ist set to 0. If EN = 1, the internal program of the block is executed, and ENO is set to 1 by the system. If an error occurs, ENO is set to 0. ENO means Error NOtification, this is the output associated to the optional input EN. If ENO is set to 0 (caused by EN=0 or in case of an execution error), the outputs of function blocks remain in the status they were in for the last correct executed scanning cycle and the output(s) of functions and procedures are set to "0".
35006144.07 07/2008
647
Glossary
Event processing
Event processing 1 is a program section launched by an event. The instructions programmed in this section are executed when a software application event (Timer) or a hardware event (application specific module) is received by the processor. Event processes take priority over other tasks, and are executed the moment the event is detected. The event process EVT0 is of highest priority. All others have the same level of priority. Note: For M340, IO events with the same priority level are stored in a FIFO and are treated in the order in which they are received. All the timers have the same priority. When several timers end at the same time, the lowest timer number is processed first. The system word %SW48 counts the number of IO events processed.
F
Fast task Task launched periodically (setting of the period in the PC configuration) used to carry out a part of the application having a superior level of priority to the Mast task (master). FBD is the abbreviation of Function Block Diagram. FBD is a graphic programming language that operates as a logic diagram. In addition to the simple logic blocks (AND, OR, etc.), each function or function block of the program is represented using this graphic form. For each block, the inputs are located to the left and the outputs to the right. The outputs of the blocks can be linked to the inputs of other blocks to form complex expressions. Collective term for EF (Elementary Function), EFB (Elementary Function Block) and DFB (Derived Function block) PCMCIA memory card containing the program and constants of the application. FNES is the abbreviation of Fichiers Neutres dEntres Sorties (Neutral I/O Documentation). FNES format describes using a tree structure the PLCs in terms of rack, cards and channels. It is based on the CNOMO standard (comit de normalisation des outillages de machines outils). see EF
35006144.07 07/2008
FBD
FFB
Function
648
Glossary
see EFB View making it possible to see the program part of the application through the functional modules created by the user (see Functional module definition). A functional module is a group of program elements (sections, sub-programs, macro steps, animation tables, runtime screen, etc.) whose purpose is to perform an automation device function. A functional module may itself be separated into lower-level functional modules, which perform one or more sub-functions of the main function of the automation device.
Functional Module
G
GRAY Gray or "reflected binary" code is used to code a numerical value being developed into a chain of binary configurations that can be differentiated by the change in status of one and only one bit. This code can be used, for example, to avoid the following random event: in pure binary, the change of the value 0111 to 1000 can produce random numbers between 0 and 1000, as the bits do not change value altogether simultaneously. Equivalence between decimal, BCD and Gray: Decimal BCD Gray 0 1 2 3 4 5 6 7 8 9
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101
H
Hyperlink The hyperlink function enables links to be created between your project and external documents. You can create hyperlinks in all the elements of the project directory, in the variables, in the processing screen objects, etc. The external documents can be web pages, files (xls, pdf, wav, mp3, jpg, gif, etc.).
35006144.07 07/2008
649
Glossary
I
I/O Object An I/O object is an implicit or explicit language object for an expert function module or a I/O device on a fieldbus. They are of the following types: %Ch, %I, %IW, %ID, %IF, %Q, %QW, % QD, QF, %KW, %KD, %KF, %MW, %MD, and %MF. The objects' topological address depends on the module's position on the rack or the device's position on the bus. For Premium/Atrium PLCs double-type instances of located data (%MD<i>, %KD<i>) or floating (%MF<i>, %KF<i>) should be located by an integer type (%MW<i>, %KW<i>). Only I/O objects make it possible to locate type instances (%MD<i>, %KD<i>, %QD, %ID, %MF<i>, %KF<i>, %QF, %IF) by using their topological address (for example %MD0.6.0.11, %MF0.6.0.31). For Modicon M340 PLCs, double-type instances of located data (%MD<i>, %KD<i>) or floating (%MF<i>, %KF<i>) are not available. International standard: Programmable Logic Controls Part 3: Programming languages. IL is the abbreviation of Instruction List. This language is a series of basic instructions. This language is very close to the assembly language used to program processors. Each instruction is composed of an instruction code and an operand. Used to indicate that a number overruns the allowed limits. For a number of Integers, the value ranges (shown in gray) are as follows:
IEC 61131-3
IL
INF
+INF 3.402824e+38
When a calculation result is: less than -3.402824e+38, the symbol -INF (for -infinite) is displayed, greater than +3.402824e+38, the symbol +INF (for +infinite) is displayed. Instanciate To instanciate an object is to allocate a memory space whose size depends on the type of object to be instantiated. When an object is instantiated, it exists and can be manipulated by the program.
650
35006144.07 07/2008
Glossary
INT
INT is the abbreviation of single integer format (coded on 16 bits). The lower and upper limits are as follows: -(2 to the power of 31) to (2 to the power of 31) - 1. Example: -32768, 32767, 2#1111110001001001, 16#9FA4. Integer literal are used to enter integer values in the decimal system. The values can have a preceding sign (+/-). Individual underlines (_ ) between numbers are not significant. Example: -12, 0, 123_456, +986 IODDT is the abbreviation of Input/Output Derived Data Type. The term IODDT designates a structured data type representing a module or a channel of a PLC module. Each application expert module possesses its own IODDTs.
Integer literals
IODDT
K
Keyword A keyword is a unique combination of characters used as a syntactical programming language element (See annex B definition of the IEC standard 61131-3. All the key words used in Unity Proand of this standard are listed in annex C of the IEC standard 61131-3. These keywords cannot be used as identifiers in your program (names of variables, sections, DFB types, etc.)).
L
LD LD is the abbreviation of Ladder Diagram. LD is a programming language, representing the instructions to be carried out in the form of graphic diagrams very close to a schematic electrical diagram (contacts, coils, etc.). A located variable is a variable for which it is possible to know its position in the PLC memory. For example, the variable Water_pressure, is associated with%MW102. Water_pressure is said to be localized.
Located variable
35006144.07 07/2008
651
Glossary
M
Macro step A macro step is the symbolic representation of a unique set of steps and transitions, beginning with an input step and ending with an output step. A macro step can call another macro step. Main program task. It is obligatory and is used to carry out sequential processing of the PLC. An application comprising a single task, and so necessarily the Master task. Application comprising several tasks (Mast, Fast, Auxiliary, event processing). The order of priority for the execution of tasks is defined by the operating system of the PLC. Operating mode of an SFC. In multitoken mode, the SFC may possess several active steps at the same time.
Master task
Multiple token
N
Naming convention (identifier) An identifier is a sequence of letters, numbers and underlines beginning with a letter or underline (e.g. name of a function block type, an instance, a variable or a section). Letters from national character sets (e.g: ,, , ) can be used except in project and DFB names. Underlines are significant in identifiers; e.g. A_BCD and AB_CD are interpreted as different identifiers. Multiple leading underlines and consecutive underlines are invalid. Identifiers cannot contain spaces. Not case sensitive; e.g. ABCD and abcd are interpreted as the same identifier. According to IEC 61131-3 leading digits are not allowed in identifiers. Nevertheless, you can use them if you activate in dialog Tools Project settings in tab Language extensions the check box Leading digits. Identifiers cannot be keywords. Used to indicate that a result of an operation is not a number (NAN = Not A Number). Example: calculating the square root of a negative number.
NAN
652
35006144.07 07/2008
Glossary
Note: The IEC 559 standard defines two classes of NAN: quiet NAN (QNAN) and signaling NaN (SNaN) QNAN is a NAN with the most significant fraction bit set and a SNAN is a NAN with the most significant fraction bit clear (Bit number 22). QNANs are allowed to propagate through most arithmetic operations without signaling an exception. SNAN generally signal an invalid-operation exception whenever they appear as operands in arithmetic operations (See %SW17 and %S18). Network Mainly used in communication, a network is a group of stations which communicate among one another. The term network is also used to define a group of interconnected graphic elements. This group forms then a part of a program which may be composed of a group of networks.
O
Operator screen This is an editor that is integrated into Unity Pro, which is used to facilitate the operation of an automated process. The user regulates and monitors the operation of the installation, and, in the event of any problems, can act quickly and simply.
P
Periodic execution The master task is executed either cyclically or periodically. In periodic mode, you determine a specific time (period) in which the master task must be executed. If it is executed under this time, a waiting time is generated before the next cycle. If it is executed over this time, a control system indicates the overrun. If the overrun is too high, the PLC is stopped. Procedures are functions view technically. The only difference to elementary functions is that procedures can take up more than one output and they support data type VAR_IN_OUT. To the eye, procedures are no different than elementary functions. Procedures are a supplement to IEC 61131-3. Option preventing the contents of a program element to be read (read protected), or to write or modify the contents of a program element (read/write protected). The protection is confirmed by a password.
Procedure
Protection
35006144.07 07/2008
653
Glossary
R
REAL Real type is a coded type in 32 bits. The ranges of possible values are illustrated in gray in the following diagram:
-INF -3.4028235e+38 -1.1754944e-38 0.0 1.1754944e-38 INF 3.4028235e+38
When a calculation result is: between -1.175494e-38 and 1.175494e-38 it is considerd as a DEN, less than -3.4028234e+38, the symbol -INF (for - infinite) is displayed, greater than +3.4028234e+38, the symbol INF (for +infinite) is displayed, undefined (square root of a negative number), the symbol NAN or NAN is displayed.
Note: The IEC 559 standard defines two classes of NAN: quiet NAN (QNAN) and signaling NaN (SNaN) QNAN is a NAN with the most significant fraction bit set and a SNAN is a NAN with the most significant fraction bit clear (Bit number 22). QNANs are allowed to propagate through most arithmetic operations without signaling an exception. SNAN generally signal an invalid-operation exception whenever they appear as operands in arithmetic operations (See %SW17 and %S18).
Note: when an operand is a DEN (Denormalized number) the result is not significant. Real literals An literal real value is a number expressed in one or more decimals. Example: -12.0, 0.0, +0.456, 3.14159_26 An Literal decimal value can be expressed using standard scientific notation. The representation is as follows: mantissa + exponential. Example: -1.34E-12 or -1.34e-12 1.0E+6 or 1.0e+6 1.234E6 or 1.234e6
654
35006144.07 07/2008
Glossary
RS 232C
Serial communication standard which defines the voltage of the following service: a signal of +12 V indicates a logical 0, a signal of -12 V indicates a logical 1. There is, however, in the case of any attenuation of the signal, detection provided up to the limits -3 V and +3 V. Between these two limits, the signal will be considered as invalid. RS 232 connections are quite sensitive to interferance. The standard specifies not to exceed a distance of 15 m or a maximum of 9600 bauds (bits/s).
RS 485
Serial connection standard that operates in 10 V/+5 V differential. It uses two wires for send/receive. Their "3 states" outputs enable them to switch to listen mode when the transmission is terminated. Function enabling the startup of the application program of the PLC. Function enabling the execution of the PLC application program to be started automatically in the case of a cold start. A rung is the equivalent of a sequence in LD; other related terms are "Ladder network" or, more generally, "Network". A rung is inscribed between two potential bars of an LD editor and is composed of a group of graphic elements interconnected by means of horizontal or vertical connections. The dimensions of a rung are 17 to 256 lines and 11 to 64 columns maximum.
Rung
S
Section Program module belonging to a task which can be written in the language chosen by the programmer (FBD, LD, ST, IL, or SFC). A task can be composed of several sections, the order of execution of the sections corresponding to the order in which they are created, and being modifiable. SFC is the abbreviation of Sequential Function Chart. SFC enables the operation of a sequential automation device to be represented graphically and in a structured manner. This graphic description of the sequential behavior of an automation device, and the various situations which result from it, is performed using simple graphic symbols. An SFC object is a data structure representing the status properties of an action or transition of a sequential chart.
SFC
SFC objects
35006144.07 07/2008
655
Glossary
Single token
Operating mode of an SFC chart for which only a single step can be active at any one time. ST is the abbreviation of Structured Text language. Structured Text language is an elaborated language close to computer programming languages. It enables you to structure series of instructions. A variable of the type STRING is an ASCII standard character string. A character string has a maximum length of 65534 characters. View in the project navigator with represents the project structure. Program module belonging to a task (Mast, Fast, Aux) which can be written in the language chosen by the programmer (FBD, LD, ST, or IL). A subroutine may only be called by a section or by another subroutine belonging to the task in which it is declared.
ST
STRING
Structure Subroutine
T
Task A group of sections and subroutines, executed cyclically or periodically for the MAST task, or periodically for the FAST task. A task possesses a level of priority and is linked to inputs and outputs of the PLC. These I/O are refreshed in consequence. The type TIME expresses a duration in milliseconds. Coded in 32 bits, this type makes it possible to obtain periods from 0 to (2 to the power of 32)-1 milliseconds. The units of type TIME are the following: the days (d), the hours (h), the minutes (m), the seconds (s) and the milliseconds (ms). A literal value of the type TIME is represented by a combination of previous types preceded by T#, t#, TIME# or time#. Examples: T#25h15m, t#14.7S, TIME#5d10h23m45s3ms In communication projects, The Time out is a delay after which the communication is stopped if there is no answer of the target device. see TOD
TIME
Time literals
Time Out
TIME_OF_DAY
656
35006144.07 07/2008
Glossary
TOD
TOD is the abbreviation of Time of Day. The TOD type coded in BCD in 32 bit format contains the following information: the hour coded in a 8-bit field, the minutes coded in an 8-bit field, the seconds coded in an 8-bit field.
Note: The 8 least significant bits are unused. The Time of Day type is entered as follows: TOD#<Hour>:<Minutes>:<Seconds> This table shows the lower/upper limits in each field:
Field Hour Minute Second Limits [00,23] [00,59] [00,59] Comment The left 0 is always displayed, but can be omitted at the time of entry The left 0 is always displayed, but can be omitted at the time of entry The left 0 is always displayed, but can be omitted at the time of entry
U
UDINT UDINT is the abbreviation of Unsigned Double Integer format (coded on 32 bits) unsigned. The lower and upper limits are as follows: 0 to (2 to the power of 32) - 1. Example: 0, 4294967295, 2#11111111111111111111111111111111, 8#37777777777, 16#FFFFFFFF. UINT is the abbreviation of Unsigned integer format (coded on 16 bits). The lower and upper limits are as follows: 0 to (2 to the power of 16) - 1. Example: 0, 65535, 2#1111111111111111, 8#177777, 16#FFFF.
UINT
35006144.07 07/2008
657
Glossary
Unlocated variable
An unlocated variable is a variable for which it is impossible to know its position in the PLC memory. A variable which have no address assigned is said to be unlocated.
V
Variable Memory entity of the type BOOL, WORD, DWORD, etc., whose contents can be modified by the program during execution. This window, also called a watch window, displays the variables that cannot be animated in the language editors. Only those variables that are visible at a given time in the editor are displayed.
Visualization window
W
Watch point Used in the "debug" mode of the application. It enables the display of animated variables to be synchronized with the execution of a program element (containing the watch point) in order to ascertain their values at this precise point of the program. The WORD type is coded in 16 bit format and is used to carry out processing on bit strings. This table shows the lower/upper limits of the bases which can be used:
Base Hexadecimal Octal Binary Lower limit 16#0 8#0 2#0 Upper limit 16#FFFF 8#177777 2#1111111111111111
WORD
Representation examples
Data content 0000000011010011 1010101010101010 0000000011010011 Representation in one of the bases 16#D3 8#125252 2#11010011
658
35006144.07 07/2008
Index
B C A
CASE...OF...END_CASE ST, 497 channel data structure, 257 cold start, 121, 132 comparison IL, 437 LD, 347 ST, 483 compatibility data types, 271
Symbols
%S, 146 %SW generic, 163 Modicon M340, 205 Premium, 185 Quantum, 195
A
ADD IL, 441 addressing data instances, 282 input/output, 282 Alignment constraint, 253 AND IL, 439 ST, 489 ANY_ARRAY, 267 ARRAY, 246 automatic start in RUN, 121
D
D SFC, 389 data instances, 275 data types, 217 DATE, 231 DDT, 245 derived data types (DDT), 245, 249 derived function block (DFB), 529 representation, 260, 534 DFB representation, 534 diagnostics DFB, 573 DINT, 225 DIV IL, 441 DS SFC, 389 DT, 233 DWORD, 243
659
B
BOOL, 220 BYTE, 243
C
CAL, 444
35006144.07 07/2008
Index
E
EBOOL, 220 EDT, 217 EFB, 259 elementary data types (EDT), 217 elementary function block (EFB), 259, 260 ELSE, 495 ELSIF...THEN, 496 EN/ENO FBD, 313 IL, 455, 465, 473 LD, 343 ST, 514, 521, 527 EQ IL, 442 error codes, 577 event processing, 87 EXIT, 502
IN_OUT FBD, 315 IL, 466, 474 LD, 345 ST, 521, 528 input/output addressing, 282 instruction list (IL) language, 429, 451, 456, 468 operators, 437 structure, 431 INT, 225
J
JMP FBD, 317 IL, 445, 447 LD, 346 SFC, 396 ST, 506
F
FBD language, 303, 306 structure, 304 floating point, 234 FOR...TO...BY...DO...END_FOR ST, 498 forced bits, 220
L
L SFC, 389 labels FBD, 317 IL, 447 LD, 346 ST, 506 LD language, 329, 336 structure, 330 LD operators IL, 329 LE IL, 443 LT, 443
G
GE IL, 442 GT IL, 442
H
HALT, 144
I
IEC Compliance, 609 IF...THEN...END_IF ST, 494
660
M
memory structures, 107, 109
35006144.07 07/2008
Index
MOD IL, 441 ST, 484, 485, 486 MUL IL, 441
REPEAT...UNTIL...END_REPEAT, 501 RETURN FBD, 317 IL, 445 LD, 346 ST, 504
N
NE IL, 443 NOT IL, 440
S
S IL, 438 LD, 334 SFC, 389 sections, 76, 77 SFC language, 369, 386 structure, 371 SFCCHART_STATE, 373 SFCSTEP_STATE, 380 SFCSTEP_TIMES, 379 STRING, 238 structure, 245 structured text (ST) instructions, 490 language, 477, 509, 515, 523 operators, 483 structure, 479 SUB IL, 441 subroutines, 76, 79 system bits, 146 system words, 163 Modicon M340, 205 Premium, 185, 188 Quantum, 195, 198
O
operate, 347 OR IL, 439 ST, 489
P
P SFC, 389 P0 SFC, 389 P1 SFC, 389 private variables DFB, 544 FBD, 312, 342, 458, 517 public variables DFB, 544 FBD, 311 IL, 457 LD, 341 ST, 516
T
tasks, 69, 73 cyclic, 83 periodic, 84 TIME, 227 TOD, 232
R
R IL, 438 LD, 334 SFC, 389 REAL, 234
35006144.07 07/2008
661
Index
U
UDINT, 225 UINT, 225
W
warm start, 121 watchdogs mono-task, 85 multi-task, 92 WHILE...DO...END_WHILE ST, 500 WORD, 243
X
XOR IL, 440 ST, 489
662
35006144.07 07/2008