0% found this document useful (0 votes)
16 views1,100 pages

EcoStruxure Machine Expert Guide

The EcoStruxure Machine Expert Programming Guide provides detailed information on the EcoStruxure Machine Expert Logic Builder, including its user interface, configuration, and programming components. It emphasizes the importance of safety regulations and proper usage of Schneider Electric products. The document serves as a comprehensive resource for users to understand and effectively utilize the EcoStruxure Machine Expert software.

Uploaded by

Tjhand
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views1,100 pages

EcoStruxure Machine Expert Guide

The EcoStruxure Machine Expert Programming Guide provides detailed information on the EcoStruxure Machine Expert Logic Builder, including its user interface, configuration, and programming components. It emphasizes the importance of safety regulations and proper usage of Schneider Electric products. The document serves as a comprehensive resource for users to understand and effectively utilize the EcoStruxure Machine Expert software.

Uploaded by

Tjhand
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

EcoStruxure Machine Expert

EIO0000002854 06/2019

EcoStruxure Machine
Expert
Programming Guide
06/2019
EIO0000002854.00

[Link]
The information provided in this documentation contains general descriptions and/or technical
characteristics of the performance of the products contained herein. This documentation is not
intended as a substitute for and is not to be used for determining suitability or reliability of these
products for specific user applications. It is the duty of any such user or integrator to perform the
appropriate and complete risk analysis, evaluation and testing of the products with respect to the
relevant specific application or use thereof. Neither Schneider Electric nor any of its affiliates or
subsidiaries shall be responsible or liable for misuse of the information contained herein. If you
have any suggestions for improvements or amendments or have found errors in this publication,
please notify us.
You agree not to reproduce, other than for your own personal, noncommercial use, all or part of
this document on any medium whatsoever without permission of Schneider Electric, given in
writing. You also agree not to establish any hypertext links to this document or its content.
Schneider Electric does not grant any right or license for the personal and noncommercial use of
the document or its content, except for a non-exclusive license to consult it on an "as is" basis, at
your own risk. All other rights are reserved.
All pertinent state, regional, and local safety regulations must be observed when installing and
using this product. For reasons of safety and to help ensure compliance with documented system
data, only the manufacturer should perform repairs to components.
When devices are used for applications with technical safety requirements, the relevant
instructions must be followed.
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 information can result in injury or equipment damage.
© 2019 Schneider Electric. All rights reserved.

2 EIO0000002854 06/2019
Table of Contents

Safety Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
About the Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Part I Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Chapter 1 General Introduction to the EcoStruxure Machine Expert
Logic Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
What is the EcoStruxure Machine Expert Logic Builder? . . . . . . . . . . 30
Tasks Performed by the EcoStruxure Machine Expert Logic Builder . 31
Chapter 2 EcoStruxure Machine Expert Logic Builder User Interface 33
Elements of the EcoStruxure Machine Expert Logic Builder Screen. . 34
Multi-Tabbed Navigators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Functional tree. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Multi-Tabbed Catalog View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Customizing the User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
User Interface in Online Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Menus and Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Chapter 3 Basic Concepts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Introduction and Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Part II Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Chapter 4 Installing Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Integration of Sercos Devices from Third-Party Vendors . . . . . . . . . . 63
Chapter 5 Managing Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.1 Adding Devices by Drag and Drop . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Adding Devices by Drag and Drop . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.2 Adding Devices by Contextual Menu or Plus Button . . . . . . . . . . . . . . 69
Adding a Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Adding Expansion Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Adding Communication Managers . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Adding Devices to a Communication Manager . . . . . . . . . . . . . . . . . . 74
Adding Devices from Template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.3 Updating Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Updating Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5.4 Converting Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Converting Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

EIO0000002854 06/2019 3
5.5 Converting Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Converting SoMachine Basic and Twido Projects . . . . . . . . . . . . . . . . 81
Chapter 6 Common Device Editor Dialogs . . . . . . . . . . . . . . . . . . . . 101
6.1 Device Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
General Information About Device Editors. . . . . . . . . . . . . . . . . . . . . . 103
Communication Settings in Controller Selection Mode . . . . . . . . . . . . 105
Communication Settings in Simple Mode . . . . . . . . . . . . . . . . . . . . . . 125
Communication Settings in Classic Mode . . . . . . . . . . . . . . . . . . . . . . 128
Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Synchronized Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
PLC Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Users and Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Access Rights . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Task Deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
6.2 I/O Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
I/O Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Working with the I/O Mapping Dialog. . . . . . . . . . . . . . . . . . . . . . . . . . 158
I/O Mapping in Online Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Implicit Variables for Forcing I/Os . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Part III Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Chapter 7 Program Components . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
7.1 Program Organization Unit (POU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
POU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Adding and Calling POU Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Transition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
POUs for Implicit Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

4 EIO0000002854 06/2019
7.2 Function Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
General Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Function Block Instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Calling a Function Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Configuring a Memory Reserve for the Online Change of Function
Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Extension of a Function Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Implementing Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Method Invocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
SUPER Pointer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
THIS Pointer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
7.3 Application Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Data Type Unit (DUT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Global Variable List - GVL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Network Variable List (Receiver) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Persistent Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
External File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Text List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Image Pool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
7.4 Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Chapter 8 Task Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Task Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
Adding Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Chapter 9 Managing Applications . . . . . . . . . . . . . . . . . . . . . . . . . . 249
9.1 General Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
9.2 Building and Downloading Applications. . . . . . . . . . . . . . . . . . . . . . . . 252
Building Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Build Process at Changed Applications. . . . . . . . . . . . . . . . . . . . . . . . 256
Downloading an Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
9.3 Running Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Running Applications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
9.4 Maintaining Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Core Dump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

EIO0000002854 06/2019 5
Programming Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Refactoring. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
Static Analysis Light . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
Creating an Archive in Your Controller on Download. . . . . . . . . . . . . . 287
Part IV Logic Editors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
Chapter 10 Common Features of Graphic Editors . . . . . . . . . . . . . . . 291
Common Features of Graphic Editors . . . . . . . . . . . . . . . . . . . . . . . . . 291
Chapter 11 FBD/LD/IL Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
11.1 Information on the FBD/LD/IL Editor . . . . . . . . . . . . . . . . . . . . . . . . . . 294
FBD/LD/IL Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
Function Block Diagram (FBD) Language . . . . . . . . . . . . . . . . . . . . . . 296
Ladder Diagram (LD) Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Instruction List (IL) Language. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
Modifiers and Operators in IL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Working in the FBD and LD Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
Working in the IL Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Cursor Positions in FBD, LD, and IL . . . . . . . . . . . . . . . . . . . . . . . . . . 316
FBD/LD/IL Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
FBD/LD/IL Editor in Online Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
11.2 FBD/LD/IL Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
FBD/LD/IL Toolbox. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
Network in FBD/LD/IL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
Assignment in FBD/LD/IL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
Jump in FBD/LD/IL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
Label in FBD/LD/IL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Boxes in FBD/LD/IL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
RETURN Instruction in FBD/LD/IL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
Branch / Hanging Coil in FBD/LD/IL. . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Parallel Branch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Branch Start / End . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
Set/Reset in FBD/LD/IL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
Set/Reset Coil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
Execute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
11.3 LD Elements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Contact. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Coil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350

6 EIO0000002854 06/2019
Chapter 12 Continuous Function Chart (CFC) Editor . . . . . . . . . . . . 351
Continuous Function Chart (CFC) Language . . . . . . . . . . . . . . . . . . . 352
CFC Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Cursor Positions in CFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
CFC Elements / ToolBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
Working in the CFC Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
CFC Editor in Online Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
CFC Editor Page-Oriented . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
Chapter 13 Sequential Function Chart (SFC) Editor . . . . . . . . . . . . . 371
SFC Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
SFC - Sequential Function Chart Language . . . . . . . . . . . . . . . . . . . . 374
Cursor Positions in SFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
Working in the SFC Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
SFC Element Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
SFC Elements / ToolBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
Qualifier for Actions in SFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
Implicit Variables - SFC Flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
Sequence of Processing in SFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
SFC Editor in Online Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
Chapter 14 Structured Text (ST) Editor. . . . . . . . . . . . . . . . . . . . . . . 401
14.1 Information on the ST Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
ST Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
ST Editor in Online Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
14.2 Structured Text ST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
Structured Text ST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
Part V Object Editors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
Chapter 15 Declaration Editors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
Textual Declaration Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
Tabular Declaration Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Declaration Editor in Online Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
Chapter 16 Device Type Manager (DTM) Editor . . . . . . . . . . . . . . . . 433
DTM Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
Chapter 17 Data Unit Type (DUT) Editor. . . . . . . . . . . . . . . . . . . . . . 435
Data Unit Type Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
Chapter 18 Global Variables List (GVL) Editor . . . . . . . . . . . . . . . . . 437
GVL Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437

EIO0000002854 06/2019 7
Chapter 19 Network Variables List (NVL) Editor . . . . . . . . . . . . . . . . . 439
19.1 Information on the NVL Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
Network Variables List Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
19.2 General Information on Network Variables . . . . . . . . . . . . . . . . . . . . . 441
Introduction to Network Variables List (NVL) . . . . . . . . . . . . . . . . . . . . 442
Configuring the Network Variables Exchange . . . . . . . . . . . . . . . . . . . 446
Network Variables List (NVL) Rules. . . . . . . . . . . . . . . . . . . . . . . . . . . 452
Operating State of the Sender and the Receiver . . . . . . . . . . . . . . . . . 455
Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
Compatibility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
Chapter 20 Task Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
Information on the Task Configuration . . . . . . . . . . . . . . . . . . . . . . . . . 466
Properties Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
System Events Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
Monitor Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
Variable Usage Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
Configuration of a Specific Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
Task Processing in Online Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
Chapter 21 Watch List Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
Watch View / Watch List Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480
Creating a Watch List. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
Watch List in Online Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
Chapter 22 Tools Within Logic Editors . . . . . . . . . . . . . . . . . . . . . . . . 485
Function and Function Block Finder. . . . . . . . . . . . . . . . . . . . . . . . . . . 486
Input Assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
Part VI Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
Chapter 23 Data Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
Introduction to Data Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
Chapter 24 Recipe Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
Recipe Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
Recipe Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
RecipeMan Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
Loading Recipe Values from the Controller . . . . . . . . . . . . . . . . . . . . . 514
Memory Usage by Recipes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
Chapter 25 Trace Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
25.1 Trace Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
Trace Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
Creating a Trace Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521

8 EIO0000002854 06/2019
25.2 Trace Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525
Trace Configuration - Tree Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
Variable Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528
Record Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
Display Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534
Advanced Trace Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
Display Settings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
25.3 Trace Editor in Online Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
Trace Editor in Online Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
25.4 Keyboard Operations for Trace Diagrams . . . . . . . . . . . . . . . . . . . . . . 543
Keyboard Shortcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
Chapter 26 Trend Recording . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
26.1 Trend Recording Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
Trend Recording Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
Trend Recording Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
26.2 Trend Recording Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
Trend Recording Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
Record Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
Variable Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
Steps for Trend Recording Configuration . . . . . . . . . . . . . . . . . . . . . . 556
26.3 Recording Trend Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
Start the Recording Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
Chapter 27 Unit Conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561
Unit Conversion Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562
Usage in IEC Editors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
Chapter 28 Symbol Configuration Editor . . . . . . . . . . . . . . . . . . . . . . 567
Symbol Configuration Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
Symbol Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573
Adding a Symbol Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574
Chapter 29 EcoStruxure Machine Expert Controller - HMI Data
Exchange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
EcoStruxure Machine Expert Single Variable Definition . . . . . . . . . . . 578
Publishing Variables in the Controller Part . . . . . . . . . . . . . . . . . . . . . 582
Selecting Variables in the HMI Part . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
Publishing Variables in the HMI Part . . . . . . . . . . . . . . . . . . . . . . . . . . 585
Parameterization of the Physical Media . . . . . . . . . . . . . . . . . . . . . . . 587
Communication Performance on Controller - HMI Data Exchange . . . 588
Indications for HMI Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591

EIO0000002854 06/2019 9
Chapter 30 Cam Motion Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593
30.1 Cam Motion Editor - General Information . . . . . . . . . . . . . . . . . . . . . . 594
General Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
Adding a Cam Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596
Opening the Motion Editor of a Cam Object . . . . . . . . . . . . . . . . . . . . 597
30.2 Generating IEC Program Code from Cam Data. . . . . . . . . . . . . . . . . . 598
Using Cam Data for Function Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . 599
Copying the Source Code of the Cam Diagram. . . . . . . . . . . . . . . . . . 601
30.3 Online View and Functions of the Cam Motion Editor . . . . . . . . . . . . . 602
Online View and Functions of the Cam Motion Editor . . . . . . . . . . . . . 602
30.4 Discontinuous Courses of the Positions. . . . . . . . . . . . . . . . . . . . . . . . 603
Discontinuous Courses of the Positions. . . . . . . . . . . . . . . . . . . . . . . . 603
30.5 Dialog Boxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
Motion Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605
Generating IEC Source Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614
Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615
Part VII Programming Reference . . . . . . . . . . . . . . . . . . . . . 617
Chapter 31 Variables Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
31.1 Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
General Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
Recommendations on the Naming of Identifiers . . . . . . . . . . . . . . . . . 624
Variables Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630
Shortcut Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
AT Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632
Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633
31.2 Variable Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
Variable Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637
Attribute Keywords for Variable Types. . . . . . . . . . . . . . . . . . . . . . . . . 641
Variables Configuration - VAR_CONFIG . . . . . . . . . . . . . . . . . . . . . . . . 645
31.3 Method Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647
FB_Init, FB_Reinit, and FB_ExitMethods. . . . . . . . . . . . . . . . . . 647
31.4 Pragma Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652
Pragma Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
Message Pragmas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656
Conditional Pragmas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658
Region Pragmas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666

10 EIO0000002854 06/2019
31.5 Attribute Pragmas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667
Attribute Pragmas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669
User-Defined Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670
Attribute call_after_global_init_slot. . . . . . . . . . . . . . . 672
Attribute call_after_init. . . . . . . . . . . . . . . . . . . . . . . . . . . . 673
Attribute call_after_online_change_slot . . . . . . . . . . . . 674
Attribute call_before_global_exit_slot. . . . . . . . . . . . . . 675
Attribute call_on_type_change . . . . . . . . . . . . . . . . . . . . . . . 676
Attribute const_replaced, Attribute const_non_repla
ced . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677
Attribute 'dataflow' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678
Attribute displaymode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679
Attribute estimated-stack-usage . . . . . . . . . . . . . . . . . . . . . 680
Attribute ExpandFully . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681
Attribute global_init_slot. . . . . . . . . . . . . . . . . . . . . . . . . . . 682
Attribute hide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684
Attribute hide_all_locals. . . . . . . . . . . . . . . . . . . . . . . . . . . . 685
Attribute initialize_on_call . . . . . . . . . . . . . . . . . . . . . . . . 686
Attribute init_namespace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687
Attribute init_On_Onlchange . . . . . . . . . . . . . . . . . . . . . . . . . 688
Attribute instance-path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689
Attribute linkalways . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690
Attribute monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691
Attribute namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695
Attribute no_assign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697
Attribute no_check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698
Attribute no_copy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699
Attribute no-exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700
Attribute no_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701
Attribute no_instance_in_retain . . . . . . . . . . . . . . . . . . . . . 702
Attribute no_virtual_actions . . . . . . . . . . . . . . . . . . . . . . . . 703
Attribute pingroup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705
Attribute pin_presentation_order_inputs/outputs . . . . 707
Attribute obsolete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709
Attribute pack_mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710
Attribute qualified_only. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711
Attribute reflection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712

EIO0000002854 06/2019 11
Attribute subsequent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713
Attribute symbol. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714
Attribute warning disable . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716
Attribute enable_dynamic_creation . . . . . . . . . . . . . . . . . . . 717
31.6 The Smart Coding Functionality. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718
Smart Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718
Chapter 32 Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721
32.1 General Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722
Data Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722
32.2 Standard Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723
Standard Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723
32.3 Extensions to IEC Standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
UNION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 730
BIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731
References. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732
Pointers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734
32.4 User-Defined Data Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738
Defined Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740
Structures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744
Enumerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746
Subrange Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749
Chapter 33 Programming Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . 753
33.1 Naming Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754
General Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754
33.2 Prefixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756
Prefix Parts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757
Order of Prefixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758
Scope Prefix. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760
Data Type Prefix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761
Property Prefix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763
POU Prefix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764
Namespace Prefix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765
Chapter 34 Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767
34.1 Arithmetic Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768
ADD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769
MUL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771
SUB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773

12 EIO0000002854 06/2019
DIV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775
MOD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778
MOVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780
SIZEOF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781
34.2 Bitstring Operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782
AND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783
OR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784
XOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785
NOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786
34.3 Bit-Shift Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787
SHL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 788
SHR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790
ROL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791
ROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793
34.4 Selection Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795
SEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796
MAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797
MIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798
LIMIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 799
MUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 800
34.5 Comparison Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801
GT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802
LT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803
LE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804
GE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805
EQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806
NE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807
34.6 Address Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808
ADR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809
Content Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 810
BITADR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811
34.7 Calling Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812
CAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812
34.8 Type Conversion Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813
Type Conversion Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814
BOOL_TO Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815
TO_BOOL Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817
Conversion Between Integral Number Types . . . . . . . . . . . . . . . . . . . 819

EIO0000002854 06/2019 13
REAL_TO / LREAL_TO Conversions. . . . . . . . . . . . . . . . . . . . . . . . . . 820
TIME_TO/TIME_OF_DAY Conversions . . . . . . . . . . . . . . . . . . . . . . . . 822
DATE_TO/DT_TO Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824
STRING_TO Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826
TRUNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828
TRUNC_INT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829
ANY_..._TO Conversions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830
TO_<xxx> Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831
34.9 Numeric Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832
ABS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833
SQRT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834
LN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835
LOG. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836
EXP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837
SIN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 838
COS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839
TAN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 840
ASIN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841
ACOS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842
ATAN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843
EXPT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844
34.10 IEC Extending Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845
IEC Extending Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846
__DELETE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847
__ISVALIDREF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850
__NEW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851
__QUERYINTERFACE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854
__QUERYPOINTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 856
AND_THEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 858
OR_ELSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859
__TRY, __CATCH, __FINALLY, __ENDTRY . . . . . . . . . . . . . . . . . 860
__VARINFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863
Scope Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865
34.11 Initialization Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 867
INI Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 867

14 EIO0000002854 06/2019
Chapter 35 Operands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869
35.1 Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 870
BOOL Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 871
TIME Constants. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 872
DATE Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 874
DATE_AND_TIME Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 875
TIME_OF_DAY Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876
Number Constants. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 877
REAL/LREAL Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 878
String Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 879
Typed Constants / Typed Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . 881
35.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 882
Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 883
Addressing Bits in Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884
35.3 Addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 887
Direct Addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 887
35.4 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 889
Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 889
Part VIII EcoStruxure Machine Expert Templates . . . . . . . . . 891
Chapter 36 General Information about Templates . . . . . . . . . . . . . . 893
36.1 EcoStruxure Machine Expert Templates . . . . . . . . . . . . . . . . . . . . . . . 894
General Information About EcoStruxure Machine Expert Templates . 895
Administration of EcoStruxure Machine Expert Templates . . . . . . . . . 897
Chapter 37 Managing Device Templates . . . . . . . . . . . . . . . . . . . . . 905
37.1 Managing Device Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 906
Facts of Device Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907
Adding Devices from Template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 908
Creating a Device Template on the Basis of Field Devices or I/O
Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 911
Visualizations Suitable for Creating Device Templates . . . . . . . . . . . . 912
Further Information on Integrating Control Logic into Device Templates 913
Steps to Create a Device Template. . . . . . . . . . . . . . . . . . . . . . . . . . . 915
Chapter 38 Managing Function Templates . . . . . . . . . . . . . . . . . . . . 919
38.1 Managing Function Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 920
Facts of Function Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921
Adding Functions from Template. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 922
Application Functions as Basis for Function Templates . . . . . . . . . . . 928
Steps to Create a Function Template . . . . . . . . . . . . . . . . . . . . . . . . . 930

EIO0000002854 06/2019 15
Part IX Troubleshooting and FAQ . . . . . . . . . . . . . . . . . . . . 935
Chapter 39 Generic - Troubleshooting and FAQ. . . . . . . . . . . . . . . . . 937
39.1 Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 938
How Can I Enable and Configure Analog Inputs on CANopen? . . . . . 939
Why is EcoStruxure Machine Expert Startup Performance Sometimes
Slower? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 940
How Can I Manage Shortcuts and Menus? . . . . . . . . . . . . . . . . . . . . . 941
How Can I Increase the Memory Limit Available for EcoStruxure
Machine Expert on 32-Bit Operating Systems? . . . . . . . . . . . . . . . . . . 943
How Can I Reduce the Memory Consumption of EcoStruxure Machine
Expert?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 944
How Can I Increase the Build-Time Performance of EcoStruxure
Machine Expert? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 945
What Can I Do in Case of Issues with Modbus IOScanner on Serial
Line? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946
What Can I Do If My Network Variables List (NVL) Communication Has
Been Suspended? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 947
Chapter 40 Accessing Controllers - Troubleshooting and FAQ . . . . . 949
40.1 Troubleshooting: Accessing New Controllers . . . . . . . . . . . . . . . . . . . 950
Accessing New Controllers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 951
Connecting via IP Address and Address Information. . . . . . . . . . . . . . 953
40.2 FAQ - What Can I Do in Case of Connection Problems With the
Controller? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 955
FAQ - Why is a Connection to the Controller not Possible? . . . . . . . . 956
FAQ - Why has the Communication Between PC and Controller been
Interrupted? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 959
Appendices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 961
Appendix A Network Communication . . . . . . . . . . . . . . . . . . . . . . . . . 963
Network Topology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964
Addressing and Routing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 965
Structure of Addresses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967
Appendix B Python Script Language . . . . . . . . . . . . . . . . . . . . . . . . . . 971
B.1 General Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 972
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 973
Accessing the Python Interpreter in EcoStruxure Machine Expert . . . 976
Using the Logic Builder Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 981
Using the Logic Builder Scripting Immediate View. . . . . . . . . . . . . . . . 989
Keyboard Commands in the Logic Builder Shell and the Scripting
Immediate View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 992
Explore EcoStruxure Machine Expert Python API (with dir() and
inspectapi) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 993

16 EIO0000002854 06/2019
Using Logic Builder Shell with Microsoft Visual Studio and PTVS . . . 998
Using Logic Builder Shell with JetBrains PyCharm . . . . . . . . . . . . . . . 1004
Using Logic Builder Shell with Microsoft Visual Studio Code and
Python Extension. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008
Executing Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1012
Best Practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014
Reading .NET API Documentations . . . . . . . . . . . . . . . . . . . . . . . . . . 1016
EcoStruxure Machine Expert Python API . . . . . . . . . . . . . . . . . . . . . . 1018
EcoStruxure Machine Expert Scripting - Python API. . . . . . . . . . . . . . 1019
Calling Scripts Via Toolbar Icons. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024
B.2 Schneider Electric Script Engine Examples . . . . . . . . . . . . . . . . . . . . 1026
New Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1027
Device Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1029
Compiler Version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1031
Visualization Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1032
Update Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1034
Update Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1035
Clean and Build Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1036
Communication Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1037
Start ETEST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1038
Reset Diagnostic Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1040
Reboot the Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1041
Convert Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1042
Comparing Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1046
Advanced Library Management Functions . . . . . . . . . . . . . . . . . . . . . 1047
Accessing POUs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1048
B.3 CoDeSys Script Engine Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 1050
Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1051
Online Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1060
Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1063
Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1064
System / User Interface (UI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1069
Reading Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1073
Reading Values From Recipe and Send an Email . . . . . . . . . . . . . . . 1075
Determine Device Tree of the Open Project . . . . . . . . . . . . . . . . . . . . 1077
Script Example 4: Import a Device in PLCOpenXML From Subversion 1078

EIO0000002854 06/2019 17
Script Example 5: Creating and Editing POUs. . . . . . . . . . . . . . . . . . . 1080
Script Example 6: User Interface / Interaction with the User . . . . . . . . 1081
Script Example 7: Manipulation of the Project information Object . . . . 1083
Advanced Example: Checkout a Library from SVN and Installation in
EcoStruxure Machine Expert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1084
Appendix C Controller Feature Sets for Migration . . . . . . . . . . . . . . . . 1085
Controller Feature Sets for Migration . . . . . . . . . . . . . . . . . . . . . . . . . . 1085
Appendix D Know-How Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1089
Know-How Protection of Projects and Libraries. . . . . . . . . . . . . . . . . . 1089
Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1091
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1095

18 EIO0000002854 06/2019
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, service, 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.

EIO0000002854 06/2019 19
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.
A qualified person is one who has skills and knowledge related to the construction and operation
of electrical equipment and its installation, and has received safety training to recognize and avoid
the hazards involved.

20 EIO0000002854 06/2019
About the Book

At a Glance

Document Scope
This document describes the graphical user interface of the EcoStruxure Machine Expert software
and the functions it provides. For further information, refer to the separate documents provided in
the EcoStruxure Machine Expert online help.

Validity Note
This document has been updated for the release of EcoStruxureTM Machine Expert V1.1.

Related Documents

Document title Reference


EcoStruxure Machine Expert Introduction EIO0000002836 (ENG);
EIO0000002837 (FRE);
EIO0000002838 (GER);
EIO0000002840 (SPA);
EIO0000002839 (ITA);
EIO0000002841 (CHS)
EcoStruxure Machine Expert Menu Commands EIO0000002860 (ENG);
Online Help EIO0000002861 (FRE);
EIO0000002862 (GER);
EIO0000002864 (SPA);
EIO0000002863 (ITA);
EIO0000002865 (CHS)
EcoStruxure Machine Expert Compatibility and EIO0000002842 (ENG);
Migration User Guide EIO0000002843 (FRE);
EIO0000002844 (GER);
EIO0000002846 (SPA);
EIO0000002845 (ITA);
EIO0000002847 (CHS)
EcoStruxure Machine Expert Functions and Libraries EIO0000002829 (ENG);
User Guide EIO0000002830 (FRE);
EIO0000002831 (GER);
EIO0000002833 (SPA);
EIO0000002832 (ITA);
EIO0000002834 (CHS)

EIO0000002854 06/2019 21
Document title Reference
EcoStruxure Machine Expert Controller Assistant EIO0000001671 (ENG);
User Guide EIO0000001672 (FRE);
EIO0000001673 (GER);
EIO0000001675 (SPA);
EIO0000001674 (ITA);
EIO0000001676 (CHS)
EcoStruxure Machine Expert Device Type Manager EIO0000003047 (ENG);
(DTM) User Guide EIO0000003048 (FRE);
EIO0000003049 (GER);
EIO0000003051 (SPA);
EIO0000003050 (ITA);
EIO0000003052 (CHS)
EcoStruxure Machine Expert TwidoEmulationSupport EIO0000001692 (ENG);
Library Guide EIO0000001693 (FRE);
EIO0000001694 (GER);
EIO0000001696 (SPA);
EIO0000001695 (ITA);
EIO0000001697 (CHS)
EcoStruxure Machine Expert Network Variable EIO0000002974 (ENG);
Configuration SE_NetVarUdp Library Guide EIO0000002975 (FRE);
EIO0000002976 (GER);
EIO0000002978 (SPA);
EIO0000002977 (ITA);
EIO0000002979 (CHS)

You can download these technical publications and other technical information from our website
at [Link]/en/download.

22 EIO0000002854 06/2019
Product Related Information

WARNING
LOSS OF CONTROL
 The designer of any control scheme must consider the potential failure modes of control paths
and, for certain critical control functions, provide a means to achieve a safe state during and
after a path failure. Examples of critical control functions are emergency stop and overtravel
stop, power outage and restart.
 Separate or redundant control paths must be provided for critical control functions.
 System control paths may include communication links. Consideration must be given to the
implications of unanticipated transmission delays or failures of the link.
 Observe all accident prevention regulations and local safety guidelines.1
 Each implementation of this equipment must be individually and thoroughly tested for proper
operation before being placed into service.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

1For additional information, refer to NEMA ICS 1.1 (latest edition), "Safety Guidelines for the
Application, Installation, and Maintenance of Solid State Control" and to NEMA ICS 7.1 (latest
edition), "Safety Standards for Construction and Guide for Selection, Installation and Operation of
Adjustable-Speed Drive Systems" or their equivalent governing your particular location.

WARNING
UNINTENDED EQUIPMENT OPERATION
 Only use software approved by Schneider Electric for use with this equipment.
 Update your application program every time you change the physical hardware configuration.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

EIO0000002854 06/2019 23
Terminology Derived from Standards
The technical terms, terminology, symbols and the corresponding descriptions in this manual, or
that appear in or on the products themselves, are generally derived from the terms or definitions
of international standards.
In the area of functional safety systems, drives and general automation, this may include, but is not
limited to, terms such as safety, safety function, safe state, fault, fault reset, malfunction, failure,
error, error message, dangerous, etc.
Among others, these standards include:

Standard Description
IEC 61131-2:2007 Programmable controllers, part 2: Equipment requirements and tests.
ISO 13849-1:2015 Safety of machinery: Safety related parts of control systems.
General principles for design.
EN 61496-1:2013 Safety of machinery: Electro-sensitive protective equipment.
Part 1: General requirements and tests.
ISO 12100:2010 Safety of machinery - General principles for design - Risk assessment and risk
reduction
EN 60204-1:2006 Safety of machinery - Electrical equipment of machines - Part 1: General
requirements
ISO 14119:2013 Safety of machinery - Interlocking devices associated with guards - Principles
for design and selection
ISO 13850:2015 Safety of machinery - Emergency stop - Principles for design
IEC 62061:2015 Safety of machinery - Functional safety of safety-related electrical, electronic,
and electronic programmable control systems
IEC 61508-1:2010 Functional safety of electrical/electronic/programmable electronic safety-
related systems: General requirements.
IEC 61508-2:2010 Functional safety of electrical/electronic/programmable electronic safety-
related systems: Requirements for electrical/electronic/programmable
electronic safety-related systems.
IEC 61508-3:2010 Functional safety of electrical/electronic/programmable electronic safety-
related systems: Software requirements.
IEC 61784-3:2016 Industrial communication networks - Profiles - Part 3: Functional safety
fieldbuses - General rules and profile definitions.
2006/42/EC Machinery Directive
2014/30/EU Electromagnetic Compatibility Directive
2014/35/EU Low Voltage Directive

24 EIO0000002854 06/2019
In addition, terms used in the present document may tangentially be used as they are derived from
other standards such as:

Standard Description
IEC 60034 series Rotating electrical machines
IEC 61800 series Adjustable speed electrical power drive systems
IEC 61158 series Digital data communications for measurement and control – Fieldbus for use in
industrial control systems

Finally, the term zone of operation may be used in conjunction with the description of specific
hazards, and is defined as it is for a hazard zone or danger zone in the Machinery Directive
(2006/42/EC) and ISO 12100:2010.
NOTE: The aforementioned standards may or may not apply to the specific products cited in the
present documentation. For more information concerning the individual standards applicable to the
products described herein, see the characteristics tables for those product references.

EIO0000002854 06/2019 25
26 EIO0000002854 06/2019
EcoStruxure Machine Expert
Introduction
EIO0000002854 06/2019

Part I
Introduction

Introduction

What Is in This Part?


This part contains the following chapters:
Chapter Chapter Name Page
1 General Introduction to the EcoStruxure Machine Expert Logic Builder 29
2 EcoStruxure Machine Expert Logic Builder User Interface 33
3 Basic Concepts 59

EIO0000002854 06/2019 27
Introduction

28 EIO0000002854 06/2019
EcoStruxure Machine Expert
General Introduction to the EcoStruxure Machine Expert Logic Builder
EIO0000002854 06/2019

Chapter 1
General Introduction to the EcoStruxure Machine Expert Logic Builder

General Introduction to the EcoStruxure Machine Expert Logic


Builder

What Is in This Chapter?


This chapter contains the following topics:
Topic Page
What is the EcoStruxure Machine Expert Logic Builder? 30
Tasks Performed by the EcoStruxure Machine Expert Logic Builder 31

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 29
General Introduction to the EcoStruxure Machine Expert Logic Builder

What is the EcoStruxure Machine Expert Logic Builder?

General Description
The Logic Builder provides the configuration and programming environment for EcoStruxure
Machine Expert projects.
It displays the different elements of your project in separate views that you can arrange on the
EcoStruxure Machine Expert user interface and on your desktop according to your individual
requirements. This view structure allows you to add hardware and software elements to your
project by drag and drop. The main configuration dialog boxes that allow you to create content for
the project are provided in the center of the Logic Builder screen.
In addition to easy configuration and programming, the Logic Builder also provides powerful
diagnostic and maintenance features.

30 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
General Introduction to the EcoStruxure Machine Expert Logic Builder

Tasks Performed by the EcoStruxure Machine Expert Logic Builder

Configuring and Programming Projects


The Logic Builder allows you to program logic and add devices to EcoStruxure Machine Expert
projects.
To assist you in performing this task, it provides the following functions:
 Separate hardware catalog views for Controller, HMI & iPC, Devices & Modules, Diverse allow
you to add hardware devices to your project by simple drag and drop. It also allows you to use
device templates and function templates.
 Separate software catalog views for Variables, Assets, Macros, ToolBox, Libraries allow you to
add different types of software elements by simple drag and drop. The Assets view, for example,
allows you to create and manage your function blocks and POUs.
To display only the relevant views for the task that is being performed, EcoStruxure Machine
Expert provides individual perspectives (see page 53) for hardware configuration, software
configuration, and online mode. You are allowed to adapt these default perspectives to your
individual requirements, and to create your own perspectives with the views you use most
frequently.

Building Projects
The Logic Builder provides different ways (such as Build, Build all, or Clean all) to build your
EcoStruxure Machine Expert project.

Communication with Controller


The Logic Builder provides scan functions to detect available controllers in the Ethernet network.
It supports different protocols for communication with the controller.
After communication has been established, applications can be downloaded to or uploaded from
the controller. Applications can be started and stopped on the controller.

Online Features and Monitoring


The Logic Builder online and monitoring features allow you to perform the following tasks:
 Online monitoring of values in program code and in Watch views
 Performing online changes
 Online configuration of traces
 Watching traces online
 Interacting with your machine by using built-in visualizations in online mode for diagnostic and
test purposes
 Reading the status of controllers and devices
 Detecting potential programming logic errors by using the debugging function

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 31
General Introduction to the EcoStruxure Machine Expert Logic Builder

32 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
EcoStruxure Machine Expert Logic Builder User Interface
EIO0000002854 06/2019

Chapter 2
EcoStruxure Machine Expert Logic Builder User Interface

EcoStruxure Machine Expert Logic Builder User Interface

What Is in This Chapter?


This chapter contains the following topics:
Topic Page
Elements of the EcoStruxure Machine Expert Logic Builder Screen 34
Multi-Tabbed Navigators 40
Functional tree 46
Multi-Tabbed Catalog View 49
Customizing the User Interface 51
User Interface in Online Mode 55
Menus and Commands 57

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 33
EcoStruxure Machine Expert Logic Builder User Interface

Elements of the EcoStruxure Machine Expert Logic Builder Screen

Overview
Logic Builder consists of the following elements:
 Menus and toolbars
 Navigator views
 Catalog views
 Main editor pane

When you open the Logic Builder, it provides a default screen layout. This document describes the
default positions.
You can adapt the elements according to your individual requirements as described in the
Customizing the User Interface chapter (see page 51). You can see and modify the present
settings in the Customize dialog box. It is by default available in the Tools menu.
You can also arrange the views and windows anytime via shifting, docking/undocking views,
resizing or closing windows. The positions are saved with the project. When you reopen a project,
the elements are placed at the positions where they were when the project was saved. The
positions of views are saved separately in perspectives (see page 53).

34 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert Logic Builder User Interface

Default Logic Builder Screen


Default positions of menus, bars, and views on the Logic Builder screen

1 Menu bar
2 Toolbar
3 Multi-tabbed Navigators: Devices tree, Tools tree, Applications tree, Functional tree
4 Messages view
5 Information and status bar
6 Multi-tabbed catalog view: hardware catalog: Controller, HMI & iPC, Devices & Modules, Diverse software
catalog: Variables, Assets. Macros, ToolBox, Libraries
7 Multi-tabbed editor view

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 35
EcoStruxure Machine Expert Logic Builder User Interface

Default Components
The Logic Builder screen contains the following components that are visible by default:

Component Description
Menu bar Provides menus which contain the available commands as defined in
the Tools → Customize dialog box.
Toolbar Contains buttons to execute the available tools as defined in the Tools
→ Customize dialog box.
Multi-tabbed Navigators The following Navigators are available as tabs where the different
objects of a project are organized in a tree structure:
 Devices tree
 Applications tree
 Tools tree
 Functional tree

For further information, refer to the chapter Multi-Tabbed Navigators


(see page 40).
Messages view Provides messages on precompile, compile, build, download
operations. Refer to the description of the Messages view commands
for details (see EcoStruxure Machine Expert, Menu Commands, Online
Help).
Information and status bar Provides the following information:
 Information on the present user.
 Information on editing mode and present position if an editor is
open.
For further information, see the Information and Status Bar section in
this chapter.
Multi-tabbed Catalog view The Catalog view consists of different tabs where the available
hardware and software objects are listed:
 Hardware Catalog
 Controller
 HMI & iPC
 Devices & Modules
 Diverse

 Software Catalog
 Variables
 Assets
 Macros
 ToolBox
 Libraries

For further information, refer to the chapter Multi-Tabbed Catalog


Views (see page 49).

36 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert Logic Builder User Interface

Component Description
Multi-tabbed editor window Used for creating the particular object in the respective editor.
In the case of language editors (for example, ST editor, CFC editor),
usually the window combines the language editor in the lower part and
the declaration editor in the upper part.
In the case of other editors, it can provide dialog boxes (for example,
task editor, device editor). The name of the POU or the resource object
is displayed in the title bar of this view. You can open the objects in the
editor window in offline or online mode by executing the Edit Object
command.

Information and Status Bar


The bar at the lower border of the Logic Builder screen provides three types of information:
 Information on the logged-in user.
 If you are working in an editor window: the position of the cursor and the status of editing mode.
 In online mode: the status of the program.

Information on the logged-in user


Each project has a user and access management setting (refer to the Project → User Management
→ Permissions... command (see EcoStruxure Machine Expert, Menu Commands, Online Help)).
The logged-in user is named in the status bar.
Cursor positions in editor windows
The cursor position is counted from the left or upper margin of the editor window.

Abbreviation Description
Ln Line in which the cursor is placed.
Col Column in which the cursor is placed.
(A column includes exactly one space, character, or digit.)
Ch Number of characters.
(In this context, a character can be a single character or digit as well as a tab
including, for example, four columns.)

Double-click one of the fields to open the dialog box Go To Line. Here you can enter a different
position where the cursor is placed.
The status of the editing mode is indicated by the following abbreviations:

Abbreviation Description
INS Insert mode
OVR Overwrite mode

Double-click this field to toggle the setting.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 37
EcoStruxure Machine Expert Logic Builder User Interface

The following status of the program is indicated:

Text Description
Program loaded Program loaded on device.
Program unchanged Program on device matches that in the programming system.
Program modified (Online Program on device differs from that in the programming system, online
Change) change required.
Program modified (Full Program on device differs from that in the programming system, full download
download) required.

Online mode information


Status of the application on the device:

Text Background Color Description


RUN Green Program running.
STOP Red Program stopped.
HALT ON BP Red Program halted on a breakpoint.
The following status field is only available if the controller, depending on a setting in the device description, supports
cycle-independent monitoring.
IN CYCLE White Indicates that the values of the monitored expressions
are read within one cycle.
OUT OF CYCLE Red Indicates that the retrieval of the values of the
monitored variables cannot be performed within
one cycle.

38 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert Logic Builder User Interface

Watch Windows and Online Views of Editors


Watch windows and online editor views display a monitoring view of a POU or a user-defined list
of watch expressions.

Windows, Views, and Editor Windows


There are two different types of windows in the Logic Builder:
 Some can be docked to any margin of the EcoStruxure Machine Expert window or can be
positioned on the screen as undocked windows independently from the EcoStruxure Machine
Expert window. Additionally they can be hidden by being represented as a tab in the
EcoStruxure Machine Expert window frame (refer to the Customizing the User Interface chapter
(see page 51)). These windows display information which is not dependent on a single object
of the project (for example Messages view or Devices tree). You can access them via the View
menu (see EcoStruxure Machine Expert, Menu Commands, Online Help). Most views include
a non-configurable toolbar with buttons for sorting, viewing, searching within the window.
 Other windows open when you are viewing or editing a specific project object in the respective
editor. They are displayed in the multi-tabbed editor window. You cannot hide or undock them
from the EcoStruxure Machine Expert window. You can access them via the Window menu.

Switching Windows
EcoStruxure Machine Expert allows you to switch between open views and editors. To switch
between open views and editors, press the Ctrl and Tab keys simultaneously. A window opens that
lists the views and editors that are open. As long as the Ctrl key is pressed the window stays open.
Use the Tab key or the Arrow keys simultaneously to select a specific view or editor.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 39
EcoStruxure Machine Expert Logic Builder User Interface

Multi-Tabbed Navigators

Overview
The multi-tabbed Navigators are default components of the Logic Builder screen.
By default, the following navigators are available:
 Devices tree: It allows you to manage the devices on which the application is to run.
 Applications tree: It allows you to manage project-specific as well as global POUs, and tasks in
a single view.
 Tools tree: It allows you to manage project-specific as well as global libraries or other elements
in a single view.
 Functional tree: It allows you to group the content of a controller according to your individual
requirements.
You can access views via the View menu.

Adding Elements to the Navigators


The root node of a navigator represents a programmable device. You can insert further elements
below this root node.
To add elements to a node of a Navigator, simply select a device or object in the hardware or
software catalog on the right-hand side of the Logic Builder screen and drag it to the Navigator (for
example, the Devices tree). The node or nodes where the selected device or object fits are
automatically expanded and displayed in bold. The other nodes where the selected device or
object cannot be inserted are grayed. Drop the device or object on the suitable node and it is
inserted automatically. If any further elements are required for the device or object, such as
communication managers, they are inserted automatically.
Alternatively, you can select a node in the tree. If it is possible to add an object to the selected
device or object, a green plus button is displayed. Click this plus button to open a menu providing
the elements available for insertion.
It is also possible to add an object or a device, by right-clicking a node in a Navigator and executing
the command Add Object or Add Device. The device type which can be inserted depends on the
selected object within the Navigator. For example, modules for a PROFIBUS DP slave cannot be
inserted without having inserted an appropriate slave device before. Note that only devices
correctly installed on the local system and matching the present position in the tree are available
for insertion.

Repositioning Objects
To reposition objects, use the clipboard commands (Cut, Copy, Paste, Delete) from the Edit menu.
Alternatively, you can drag the selected object with the mouse while the mouse-button (plus CTRL
key for copying) is pressed. When you add devices using the copy and paste function, the new
device gets the same name followed by an incrementing number.

40 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert Logic Builder User Interface

Updating the Version of a Device


A device that is already inserted in the Navigators can be updated to another version or converted
to another device.
Refer to the description of the separate commands:
 Update Device command (see page 78)
 Convert Device command (see page 79)

Description of the Devices Tree


Each device object in the Devices tree represents a specific (target) hardware object.
Examples: controller, fieldbus node, bus coupler, drive, I/O module
Devices and subdevices are managed in the Devices tree. Other objects which are needed to run
an application on a controller are grouped in the other Navigators.

 The root node of the tree is a symbolic node entry: <projectname>


 The controller configuration is defined by the topological arrangement of the devices in the
Devices tree. The configuration of the particular device or task parameters is performed in
corresponding editor dialogs. Also refer to the chapter Task Configuration (see page 246).
Thus the hardware structure is mapped and represented within the Devices tree by the
corresponding arrangement of device objects, allowing you to set up a complex heterogeneous
system of networked controllers and underlying fieldbusses.
 To add devices configured with DTMs (Device Type Managers) to your project, activate the
check box Use DTM Connection in the lower part of the Devices tree. This has the effect that a
node FdtConnections is added below the root node of the tree. Below the FdtConnections node,
a communication manager node is inserted automatically. You can add the suitable DTM device
to this node.
For further information, refer to the Device Type Manager (DTM) User Guide (see EcoStruxure
Machine Expert, Device Type Manager (DTM), User Guide).
 Consider the recommendations for Adding Elements to the Navigators in this chapter.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 41
EcoStruxure Machine Expert Logic Builder User Interface

Example of a Devices tree:

1 Root node
2 Programmable device (with applications)
3 Symbolic device name
4 Device name defined in device description file

 Each entry in the Devices tree displays the symbol, the symbolic name (editable), and the
device type (= device name as provided by the device description).
 A device is programmable or configurable. The type of the device determines the possible
position within the tree and also which further resources can be inserted below the device.
 Within a single project, you can configure one or several programmable devices - regardless of
manufacturer or type (multi-resource, multi-device, networking).
 Configure a device concerning communication, parameters, I/O mapping in the device dialog
(device editor). To open the device editor, double-click the device node in the Devices tree (refer
to the description of the device editor (see page 103)).
 In online mode, the status of a device is indicated by an icon preceding the device entry:
 Controller is connected, application is running, device is in operation, data is exchanged.
The option Update IO while in stop in the PLC settings view of the device editor
(see page 141) can be enabled or disabled.

 Controller is connected and stopped (STOP). The option Update IO while in stop in the
PLC settings view of the device editor (see page 141) is disabled.

42 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert Logic Builder User Interface

 Controller is connected, active application is running, diagnostic information is available.


 Device is in preoperative mode and is not yet running, diagnostic information is available.
 Device is not exchanging data, bus error detected, not configured or simulation mode
(refer to the description of the Simulation command).
 Device is running in demo mode for 30 minutes. After this time, the demo mode expires
and the fieldbus stops exchanging data.

 Device is configured but not fully operational. Data is not exchanged. For example,
CANopen devices are in startup and preoperational.
 Redundancy mode active: The fieldbus master is not sending data because another
master is in active mode.
 Device description was not found in device repository. For further information on installing
and uninstalling devices in the Device Repository dialog box, refer to the description of the
Device Repository (see EcoStruxure Machine Expert, Menu Commands, Online Help).
 The names of the connected devices and applications are displayed green shaded.
 The names of devices running in simulation mode (refer to the description of the Simulation
command) are displayed in italics.
 Additional diagnostic information is provided in the Status view of the device editor
(see page 153).
You can also run the active application on a simulation device which is by default automatically
available within the programming system. Therefore, no real target device is needed to test the
online behavior of an application (at least that which does not rely on hardware resources for
execution). When you switch to simulation mode (see EcoStruxure Machine Expert, Menu
Commands, Online Help), an entry in the Devices tree is displayed in italics, and you can log into
the application.
You can also connect to the controller in online configuration mode (refer to chapter Online Config
Mode (see EcoStruxure Machine Expert, Menu Commands, Online Help)) without the need of first
having loaded a real application into the controller. This is useful for the initial start-up of an I/O
system because you can access and test the I/Os in the controller configuration before you build
and load a real application program.
For information on the conversion of device references when opening projects, refer to the
Compatibility and Migration User Guide.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 43
EcoStruxure Machine Expert Logic Builder User Interface

Arranging and Configuring Objects in the Devices Tree


Adding devices / objects:
To add devices or objects to the Devices tree, simply select a device or object in the hardware
catalog on the right-hand side of the Logic Builder screen and drag it to the Devices tree. The node
or nodes where the selected device or object fits is expanded and is displayed in bold. The other
nodes where the selected device or object cannot be inserted are grayed. Drop the device or object
on the suitable node and it is inserted automatically.
Alternatively, you can select a node in the tree. If it is possible to add an object to the selected
device or object, a green plus button is displayed. Click the plus button to open a menu providing
the elements available for insertion.
Alternatively, you can add an object or a device, by right-clicking a node in the Devices tree and
executing the command Add Object or Add Device. The device type which can be inserted
depends on the selected object within the Devices tree. For example, modules for a
PROFIBUS DP slave cannot be inserted without having inserted an appropriate slave device
before. No applications can be inserted below non-programmable devices.
Note that only devices correctly installed on the local system and matching the present position in
the tree are available for insertion.
Repositioning objects:
To reposition objects, use the clipboard commands (Cut, Copy, Paste, Delete) from the Edit menu.
Alternatively, you can draw the selected object with the mouse while the mouse-button (plus CTRL
key for copying) is pressed. Consider for the Paste command: In case the object to be pasted can
be inserted below or above the selected entry, the Select Paste Position dialog box opens. It allows
you to define the insert position. When you add devices using the copy and paste function, the new
device gets the same name followed by an incrementing number.
Updating the version of a device:
A device that is already inserted in the Devices tree can be replaced by another version of the same
device type or by a device of another type (device update). In doing so, a configuration tree
indented below the respective device is maintained as long as possible.
Adding devices to the root node:
Only devices can be positioned on the level directly below the root node <projectname>. If you
choose another object type from the Add Object dialog box, such as a Text list object, this is added
to the Global node of the Applications tree.
Subnodes:
A device is inserted as a node in the tree. If defined in the device description file, subnodes are
inserted automatically. A subnode can be a programmable device again.
Inserting devices below a device object:
You can insert further devices below a device object. If they are installed on the local system and
thus available in the hardware catalog or in the Add Object or Add Device dialog box. The device
objects are sorted within the tree from top to bottom: On a particular tree level first the
programmable devices are arranged, followed by any further devices – each sorted alphabetically.

44 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert Logic Builder User Interface

Description of the Applications Tree


The Application objects, task configuration, and task objects are managed in the Applications tree.
The objects needed for programming the device (applications, text lists, etc.), are managed in the
Applications tree. Devices that are not programmable (configuration only) cannot be assigned as
programming objects. You can edit the values of the device parameters in the parameter dialog of
the device editor.
Programming objects, like particular POUs or global variable lists can be managed in 2 different
ways in the Applications tree, depending on their declaration:
 When they are declared as a subnode of the Global node, these objects can be accessed by all
devices.
 When they are declared as a subnode of the Applications node, these objects can only be
accessed by the corresponding devices declared in this Applications node.
You can insert an Application object only in the Applications tree.
Below each application, you can insert additional programming objects, such as DUT, GVL, or
visualization objects. Insert a task configuration below an application. In this task configuration, the
respective program calls have to be defined (instances of POUs from the Global node of the
Applications tree or device-specific POUs). Consider that the application is defined in the I/O
Mapping view of the respective device editor (see page 156).

Description of the Tools Tree


Libraries are managed in the Tools tree. Pure configurable devices cannot be assigned such
programming objects. You can edit the values of the device parameters in the parameter dialog of
the device editor.
Programming objects, like the Library Manager, can be managed in 2 different ways in the Tools
tree, depending on their declaration:
 When they are declared as a subnode of the Global node; then these objects can be accessed
by all devices.
 When they are declared as a subnode of the Applications node; then these objects can only be
accessed by the corresponding devices declared in this Applications node.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 45
EcoStruxure Machine Expert Logic Builder User Interface

Functional tree

Overview
The Functional tree is available for controllers that have a Functional Model node in the Devices
tree. It allows you to group multiple objects, such as IEC code or devices, and link them to a
function. Once this function is created, you can reuse it. By creating this modularity, it is possible
for you to reuse your developments more easily and to improve your vision of the project. You can
export / import the Functional tree and reuse it in another project.

Description of the Functional tree


Example of a Functional tree:

1 Root node: corresponds to the name of the open project


2 Controller node: only those controllers that have a Functional Model node in the Devices tree are displayed
3 Functional module: nodes for structuring the Functional tree
4 Attached object: object attached to the functional module
5 Child object: child object of the attached object

Selecting Controllers
Select controllers for the Functional tree as follows:

Step Action Result


1 In the Functional tree, right-click the root node, and A new subnode Functional Model is
execute the command Select Controllers. inserted for each selected controller in
the Devices tree.
2 In the Select Controllers dialog box, select the New controller nodes are added to the
controllers you want to add to the Functional tree, and Functional tree below the root node for
click OK. each selected controller.

46 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert Logic Builder User Interface

Adding Nodes
To group the content of a controller according to your individual requirements, the Functional tree
allows you to create subnodes below the controller nodes.

Node Description How to create


Functional module A functional module is a group of program Select a parent node (for example, the
elements intended to perform an application controller node), and click the green plus
function. button.
Functional module nodes create a
hierarchical structure in the Functional tree.
To create a meaningful structure, edit the
default name and assign a name of your
choice to each functional module.
Attached object Attached objects are nodes of the other Right-click a functional module node, and
navigators (Devices tree, Applications tree, execute the command Select Objects from
Tools tree) that represent the content of the the contextual menu. From the Select
controller. Objects dialog box, select the node you
Note the following: want to attach and click OK.
 One object can only be attached to one
functional module.
 An object can only be attached to a
function module of the same controller.
 You can attach only those objects that
are also allowed in function templates
(see page 926).
Child object Child objects of the attached objects. Child objects are displayed in the
Functional tree.

Deleting Nodes
To delete a node from the Functional tree, right-click it, and execute the command Delete from the
contextual menu. You are requested to decide whether to delete the selected object, with its child
objects, only from the Functional tree or from the whole project.
Child objects cannot be removed from the Functional tree only. If you intend to delete a child object,
you are prompted to confirm that the object is removed from the whole project.

Reusing Functional Modules


If you have created a functional module that you want to reuse in the same or in another project,
the function templates are the preferred instrument because function templates can resolve the
dependencies between the attached objects. The Import/Export commands and the copy/paste
functions can also be used, but they only serve special cases as described in the following
sections.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 47
EcoStruxure Machine Expert Logic Builder User Interface

Reusing Functional Modules by Using Function Templates


You can save a functional module to a function template by right-clicking the node and executing
the command Save as Function Template from the contextual menu.
To instantiate a functional module from a function template, right-click a node in the Functional
tree, and execute the command Add Function From Template from the contextual menu.
For further information, refer to the Managing Function Templates chapter (see page 920).

Reusing Functional Modules by Using the Import/Export Commands


When you use the Project → Export command (see EcoStruxure Machine Expert, Menu
Commands, Online Help) and the Project → Import command (see EcoStruxure Machine Expert,
Menu Commands, Online Help) for reusing functional modules, note the following:

If... Then ...


If you export a complete controller device, and then Then the functional model is recreated.
import it in the same or in another project,
If you export and import the functional model only, Then the attached objects are not recreated.

Reusing Functional Modules by Using the Copy and Paste Functions


When you use the copy and paste functions for reusing functional modules, note the following:

If... Then ...


If you copy a complete controller device, and then Then the functional model is recreated.
paste it in the same or in another project,
If you copy and paste one or more functional modules Then the attached objects are not recreated.
only,

It is not possible to copy and paste attached objects in the Functional tree.

48 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert Logic Builder User Interface

Multi-Tabbed Catalog View

Overview
The multi-tabbed Hardware Catalog is a default component of the Logic Builder screen.
It contains the following tabs:
 Controller: Contains the Logic, HMI, and Motion controllers that can be inserted in your
EcoStruxure Machine Expert project.
 Devices & Modules: Contains the PLC Components, I/O Modules, and the Communication,
Motor Control, Safety, and Sensor devices that can be inserted in your EcoStruxure Machine
Expert project. It also allows you to insert devices by using a device template.
 HMI & iPC: Contains the HMI and iPC devices that can be inserted in your EcoStruxure Machine
Expert project.
 Diverse: Contains third-party devices that can be inserted in your EcoStruxure Machine Expert
project.
The content of the individual tabs depends on the project. If the controllers integrated in the
EcoStruxure Machine Expert project do not support, for example, CANopen, then CANopen
devices are not displayed in the catalogs.
You can extend this view by the tabs of the Software Catalog (Variables, Assets, Macros, ToolBox,
Libraries) via the menu View → Software Catalog.

The buttons Hardware Catalog and Software Catalog in the toolbar allow you to display
or hide the catalog views.
You can add the elements from the catalogs to the project by simple drag and drop as described
in the Adding Devices by Drag and Drop chapter (see page 66).

Searching Within Catalogs


Each tab of the catalog view contains a search box. The sublists of the tab are analyzed for the
string you enter in the search box. In open sublists, the identified entries are marked yellow. Any
other items of the list that do not correspond to the search string are hidden. The number of items
found in closed sublists is displayed in bold print in the title bar of each sublist.
By default, the search is executed on the names of the items in the lists. But EcoStruxure Machine
Expert also supports the tagging mechanism. It allows you to assign search strings of your choice
to any item included in the Catalog view.

Favorites List
Each tab of the catalog view contains a Favorites list. To provide quick access, you can add
frequently used elements to this Favorites list by drag and drop.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 49
EcoStruxure Machine Expert Logic Builder User Interface

Adding Devices From Device Templates in the Devices & Modules Tab
The Devices & Modules tab contains the option Device Template at the bottom. Activate this option
to display the available templates of field devices in the lists of the Devices & Modules tab. Add
them to the Devices tree as described in the Adding Devices from Template chapter
(see page 908).

50 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert Logic Builder User Interface

Customizing the User Interface

Overview
The look of the user interface, in terms of arrangement and configuration of the particular
components, depends on the following:
 Default pre-settings for menus, keyboard functions, and toolbars. You can overwrite the
EcoStruxure Machine Expert default settings via the Customize dialog box (see EcoStruxure
Machine Expert, Menu Commands, Online Help) (by default available in the Tools menu). The
present settings are saved on the local system. A reset function is available for restoring the
default values at any time.
 Properties of an editor as defined in the respective Tools → Options dialog box
(see EcoStruxure Machine Expert, Menu Commands, Online Help). You can also overwrite
these settings. The present configuration is saved on the local system.
 The way you arrange views or editor windows within the project. The present positions are
saved with the project (see below).
 The selected perspective. By default, the Logic Configuration perspective is selected. For
further information, refer to the Perspectives paragraph in this chapter (see page 53).

Arranging Menu Bars and Toolbars


The menu bar is positioned at the top of the user interface, between the window title bar and view
windows. You can position a toolbar within the same area as the menu bar (fix) or as an
independent window anywhere on the screen.
In view windows, such as the Devices tree, a special toolbar is available. It provides elements for
sorting, viewing, and searching within the window. You cannot configure this toolbar.

Arranging Windows and Views


Closing a view or editor window: Click the cross button in the upper right corner.
Opening a closed view: By default, you can reopen the views of default components via the View
menu. To open an editor window, execute the command Project → Edit object or double-click the
respective entry in the Devices tree, Applications tree, or in the Tools tree.
Resizing a view or window within the frame window: Move the separator lines between neighboring
views. You can resize independent view windows on the desktop by moving the window borders.
Moving a view to another position on your desk top or within the frame window: Click the title bar
or, in the case of tabbed views alternatively the tab of the view, keep the mouse-button pressed,
and move the view to the desired place. Arrow symbols indicate possible target positions. Keep
the mouse-button pressed and choose the desired position by moving the cursor on the respective
arrow symbol. The target position is indicated by a blue-shadowed area.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 51
EcoStruxure Machine Expert Logic Builder User Interface

Arrow symbols indicating new position

Arrow symbol Description


View is placed above.

View is placed below.

View is placed to the right.

View is placed to the left.

View is placed here: the view currently placed at this position and the new
one are arranged as icons.

Example of navigation by the arrow symbols

52 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert Logic Builder User Interface

When you release the mouse-button, the view is placed at the new position.
Views with an Auto Hide button can be placed as independent windows (floating) anywhere on the
screen by moving them and not dragging them on one of the arrow symbols. In this case, the view
looses the Auto Hide button. As an alternative, execute the commands Dock and Float from the
Window menu.
Hiding views: You can hide views with Auto Hide buttons at the border of the EcoStruxure Machine
Expert window. Click the Auto Hide down button in the upper right corner of the view. The view will
be displayed as a tab at the nearest border of the frame window. The content of the view is only
visible as long as the cursor is moved on this tab. The tab displays the icon and the name of the
view. This state of the view is indicated by the docking button changed to Auto Hide.
Unhiding views: To unhide a view, click the Auto Hide button.
An alternative way of hiding and unhiding a view is provided by the Auto Hide command that is by
default available in the Window menu.
It is not possible to reposition the information and status bar on the lower border of the user
interface (see page 35).

Perspectives
A perspective is used to save the layout of EcoStruxure Machine Expert views. It stores whether
the Messages and Watch views are open and at which position the view windows are located
(docked or independent windows).
By default, EcoStruxure Machine Expert provides 4 perspectives for the following use cases in the
Window → Switch Perspective menu or in the perspective table in the toolbar.

Perspective name Use case Navigators (on the left Catalog views (on the Views at the bottom of
side) right side) the screen
Device For adding /  Devices tree Hardware catalog Messages (in Auto
Configuration configuring devices.  Applications tree  Controller Hide mode)
 Tools tree  Devices & Modules
 HMI & iPC
 Diverse

Logic Configuration For adding / creating  Devices tree Software catalog Messages (in Auto
logic.  Applications tree  Variables Hide mode)
 Tools tree  Assets
 Macros
 ToolBox
 Libraries

CODESYS Classic Standard CoDeSys  Devices Hardware catalog Messages (in Auto
views.  POUs  Controller Hide mode)
 Devices & Modules
 HMI & iPC
 Diverse

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 53
EcoStruxure Machine Expert Logic Builder User Interface

Perspective name Use case Navigators (on the left Catalog views (on the Views at the bottom of
side) right side) the screen
Online For online mode.  Devices tree Hardware catalog  Messages (in Auto
 Applications tree  Controller Hide mode)
 Tools tree  Devices & Modules  Watch 1
 HMI & iPC
 Diverse

The Online perspective is automatically selected when the application is switched to online mode.
Creating your own perspective:
In addition to these default perspectives, you can create your own view layout and save it in
different perspectives according to your individual requirements.
To create your own perspective, proceed as follows:

Step Action
1 Resize, open, or close views according to your individual requirements.
2 Execute the command Save Perspective from the Window menu to save your modifications to
a new perspective.
3 In the Save Perspective dialog box, enter a name for your perspective.
Result: The present view layout is saved. The new perspective is available in the Window →
Switch Perspective menu and in the perspective table in the toolbar.

Resetting a perspective to its initial state:


To reset a modified perspective to its initial state, execute the command Reset current Perspective
from the Window menu.
Importing / exporting perspectives:
To be able to exchange perspectives between different EcoStruxure Machine Expert installations
or between different users, the Tools → Options → Perspectives dialog box (see EcoStruxure
Machine Expert, Menu Commands, Online Help) allows you to export perspectives to an XML file
and to import already available perspective XML files.

Zoom

Each editor window provides a zoom function. Click the zoom button in the lower right corner
of the window to open a list. It allows you to choose one of the zoom levels 25, 50, 100, 150, 200,
and 400 percent or to enter a zoom factor of your choice. A printout always refers to the 100% view.
Customization of the user interface is possible in offline and in online mode.

54 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert Logic Builder User Interface

User Interface in Online Mode

Overview
As soon as you log in with the project, the objects which have already been opened in offline mode,
are automatically viewed in online mode. The perspective is automatically switched to the Online
perspective (see page 53) which means that the Watch view opens by default.
To open an object in online mode which is not already open, double-click the node in the
Applications tree or execute the Project → Edit Object command. The object will be opened in
online mode.
If there are several instances of the selected object (such as function blocks) contained in the
project, a dialog box named Select Online State <object name> will display. It allows you to choose
whether an instance or the base implementation of the object should be viewed and whether the
object should be displayed in online or offline mode.
Select Online State dialog box

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 55
EcoStruxure Machine Expert Logic Builder User Interface

The Device/Application field contains the device and application to which the respective object is
associated.
To open the online view of the object, activate the option Online mode and click OK. To see the
offline view, activate the option Offline mode.
If the object is a function block, the Function block instance field contains a list of the instances
currently used in the application.
In this case, the options available are:
 Either select one of the instances and activate Online or Offline mode.
 Or select the option Implementation which - independently of the selected instance - will open
the base implementation view of the function block. The Implementation option has no affect for
non-instantiated objects.
For more information on the online views of the particular editors, refer to the respective editor
descriptions.
The status bar (see page 35) provides information on the current status of the application.

56 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert Logic Builder User Interface

Menus and Commands

Overview
The following figure shows the default menu bar:

Some commands are not visible in the default view. To add a command to a menu, insert it in a
menu of your choice by using the Tools → Customize dialog box (see EcoStruxure Machine
Expert, Menu Commands, Online Help).
Specific commands, for a particular editor for example, are usually available in a corresponding
menu. These commands are only visible when the editor is open. For example: when you edit an
object in the SFC editor, the SFC menu is added to the menu bar.
To reorganize the menu structures, use the Tools → Customize dialog box.
For a description of the menus and commands, refer to the separate EcoStruxure Machine Expert
Menu Commands Online Help (see EcoStruxure Machine Expert, Menu Commands, Online Help).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 57
EcoStruxure Machine Expert Logic Builder User Interface

58 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Basic Concepts
EIO0000002854 06/2019

Chapter 3
Basic Concepts

Basic Concepts

Introduction and Basic Concepts

Overview
EcoStruxure Machine Expert is a device-independent controller programming system.
Conforming to the IEC 61131-3 standard, it supports all standard programming languages.

Object Orientation
The object-oriented approach is not only reflected by the availability of appropriate programming
elements and features, but also in the structure and version handling of EcoStruxure Machine
Expert and in the project organization. Multi-device usage of a EcoStruxure Machine Expert project
is possible based on jointly used, instantiated programming units.

Version Handling
A parallel installation of several versions of EcoStruxure Machine Expert components and working
with the desired combination of versions is possible. This also pertains the device-specific use of
different compiler versions. Individual functions can be added without having to update the whole
version.
For further information, refer to the Compatibility and Migration User Guide.

Project Organization
Project organization is also determined in an object oriented fashion. A EcoStruxure Machine
Expert project contains a controller program composed of various programming objects and it
contains definitions of the resources which are needed to run instances of the program
(application) on defined target systems (devices, controllers).
So there are two main types of objects in a project:

Object Type Description


Programming objects (POUs) These are programs, functions, function blocks, methods, interfaces,
(see page 171) actions, data type, definitions, and so on.
Resource objects (Devices tree) Device objects are only managed in the Devices tree. When you
insert objects in the Devices tree, consider the recommendations
described in the Adding Elements to the Navigators section
(see page 44).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 59
Basic Concepts

Code Generation
Code generation by integrated compilers and the subsequent use of the resulting machine code
provides for short execution times.

Data Transfer to the Controller Device


The data transfer between EcoStruxure Machine Expert and the device is conducted via a gateway
(component) to a runtime system. After downloading the application to the controller it can be
monitored and controlled in EcoStruxure Machine Expert.

Supported Programming Languages


The programming languages mentioned in the IEC standard IEC 61131 are supported via specially
adapted editors:
 FBD/LD/IL editor (see page 293) for function block diagram (FBD), ladder logic diagram (LD),
and instruction list (IL)
 SFC editor (see page 371) for sequential function chart
 ST editor (see page 401) for structured text

Additionally, EcoStruxure Machine Expert provides an editor for programming in CFC that is not
part of the IEC standard:
 CFC editor (see page 351) for continuous function chart

CFC is an extension to the standard IEC programming languages.


A CFC - page-oriented editor is also provided. It allows you to arrange the CFC elements on
individual pages.

60 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Configuration
EIO0000002854 06/2019

Part II
Configuration

Configuration

What Is in This Part?


This part contains the following chapters:
Chapter Chapter Name Page
4 Installing Devices 63
5 Managing Devices 65
6 Common Device Editor Dialogs 101

EIO0000002854 06/2019 61
Configuration

62 EIO0000002854 06/2019
EcoStruxure Machine Expert
Installing Devices
EIO0000002854 06/2019

Chapter 4
Installing Devices

Installing Devices

Integration of Sercos Devices from Third-Party Vendors

Introduction
Via the Device Repository dialog box (see EcoStruxure Machine Expert, Menu Commands, Online
Help), you can integrate Sercos devices with generic I/O profiles in your programming system.
To install this Sercos device, you need the SDDML (Sercos Device Description Markup Language)
file (device description file for Sercos devices) provided by the vendor of the device. The
SDDML file is a device description file for Sercos devices.
There are two types of Sercos devices with generic I/O profiles available:
 Block I/O devices
A block I/O device is a pre-assembled block that consists of a bus interface and an I/O module.
 Modular I/O devices
Modular I/O devices are I/O modules which can be connected to a bus interface.

Integrating In EcoStruxure Machine Expert


Proceed as follows to integrate Sercos devices from third-party vendors in your programming
system:

Step Action
1 Select Tools → Device Repository... from the menu bar.
Result: The Device Repository dialog box opens.
2 Click the Install... button in the Device Repository dialog box.
Result: The Install Device Description dialog box opens.
3 Select the file type SERCOS III I/O device descriptions (*.xml) and browse your file system for
the SDDML file to open.
4 Select the SDDML file and click Open.
Result: The SDDML file is converted and imported into a compatible file format for EcoStruxure
Machine Expert.

NOTE: If the selected SDDML file is not compatible or if the Sercos device of the third-party vendor
is not using a compatible FSP (Function Specific Profile) type, then a corresponding diagnostic
message is indicated in the Messages view (see EcoStruxure Machine Expert, Menu Commands,
Online Help).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 63
Installing Devices

Verifying the Integration


To verify whether a Sercos device with generic I/O profile has been integrated in your programming
system, proceed as follows:

Step Action
1 Select Tools → Device Repository... from the menu bar.
Result: The Device Repository dialog box opens.
2 In the tree structure Installed device descriptions, expand the node Fieldbusses → Sercos.
3 Expand the subnode Slave to verify whether the Sercos bus interfaces that you integrated are
available in the list.
4 Expand the subnode Module to verify whether the Sercos I/O modules that you integrated are
available in the list.

For further information, refer to the description of the Device Repository dialog box
(see EcoStruxure Machine Expert, Menu Commands, Online Help).

64 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Managing Devices
EIO0000002854 06/2019

Chapter 5
Managing Devices

Managing Devices

What Is in This Chapter?


This chapter contains the following sections:
Section Topic Page
5.1 Adding Devices by Drag and Drop 66
5.2 Adding Devices by Contextual Menu or Plus Button 69
5.3 Updating Devices 78
5.4 Converting Devices 79
5.5 Converting Projects 81

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 65
Managing Devices

Section 5.1
Adding Devices by Drag and Drop

Adding Devices by Drag and Drop

Adding Devices by Drag and Drop

Overview
EcoStruxure Machine Expert provides a multi-tabbed catalog view on the right-hand side of the
EcoStruxure Machine Expert Logic Builder.
Two different types of catalog views are available:
 The Hardware Catalog
 The Software Catalog

To add a device to the Devices tree, select the respective entry in the Hardware Catalog, drag it to
the Devices tree, and drop it at a suitable node. It is added automatically to your project.

Adding Controllers by Drag and Drop


To add a controller to your project, proceed as follows:

Step Action
1
Open the Hardware Catalog by clicking the Hardware Catalog button in the EcoStruxure
Machine Expert Logic Builder toolbar if it is not already opened.
2 Select the tab Controller in the Hardware Catalog.
Result: The controllers suitable for your EcoStruxure Machine Expert project are displayed in
the Hardware Catalog.
3 Select a controller entry in the Controller tab, drag it to the Devices tree and drop it at a suitable
node. You can drop a controller at any empty space inside the Devices tree.
Result: The controller is added to the Devices tree as a new node with different subnodes
depending on the controller type.

66 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Devices

Adding Expansion Devices by Drag and Drop


To add an expansion device to a controller, proceed as follows:

Step Action
1
Open the Hardware Catalog by clicking the Hardware Catalog button in the EcoStruxure
Machine Expert Logic Builder toolbar if it is not already opened.
2 Select the tab Devices & Modules in the Hardware Catalog.
Result: The expansion devices suitable for your EcoStruxure Machine Expert project are
displayed in the Hardware Catalog.
3 Select your expansion device, drag it to the Devices tree and drop it at a suitable subnode of a
controller.
NOTE: Suitable subnodes are expanded and highlighted by EcoStruxure Machine Expert.
Result: The expansion device is added to the Devices tree below the subnode of the controller.
4 If the expansion device requires a communication manager, this node is added automatically to
the Devices tree.
If several communication managers are available for your expansion device, a dialog box is
displayed allowing you to select the suitable communication manager.

Adding Devices and Modules by Drag and Drop


To add a field device to a controller, proceed as follows:

Step Action
1
Open the Hardware Catalog by clicking the Hardware Catalog button in the EcoStruxure
Machine Expert Logic Builder toolbar if it is not already opened.
2 Select the tab Devices & Modules in the Hardware Catalog.
Result: The field devices suitable for your EcoStruxure Machine Expert project are displayed in
the Hardware Catalog.
3 Select a field device entry in the Devices & Modules catalog view, drag it to the Devices tree,
and drop it at a suitable subnode of a controller.
NOTE: Suitable subnodes are expanded and highlighted by EcoStruxure Machine Expert.
Result: The field device is added to the Devices tree below the subnode of the controller.
4 If the field device requires a communication manager, this node is added automatically to the
Devices tree.
If several communication managers are available for your field device, a dialog box is displayed
allowing you to select the suitable communication manager.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 67
Managing Devices

Adding Devices from Device Template by Drag and Drop


To add a device from a device template, proceed as follows:

Step Action
1
Open the Hardware Catalog by clicking the Hardware Catalog button in the EcoStruxure
Machine Expert Logic Builder toolbar if it is not already opened.
2 Select the tab Devices & Modules in the Hardware Catalog.
3 Select the option Device Template at the bottom of the Devices & Modules tab.
Result: The device templates suitable for your EcoStruxure Machine Expert project are
displayed in the Devices & Modules tab.
4 Add them to the Devices tree as described in the Adding Devices from Template chapter
(see page 908).

Adding Devices from Function Template by Drag and Drop


To add a device from a function template, proceed as follows:

Step Action
1
Open the software catalog by clicking the Software Catalog button in the EcoStruxure
Machine Expert Logic Builder toolbar if it is not already opened.
2 Select the tab Macro in the Software Catalog.
Result: The function templates available in EcoStruxure Machine Expert are displayed in the
Software Catalog.
3 Select a function template entry in the Macro view, drag it to the Devices tree, and drop it at a
suitable subnode of a controller.
NOTE: Suitable subnodes are expanded and highlighted by EcoStruxure Machine Expert.
Result: The device based on the function template is added to the Devices tree.

68 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Devices

Section 5.2
Adding Devices by Contextual Menu or Plus Button

Adding Devices by Contextual Menu or Plus Button

What Is in This Section?


This section contains the following topics:
Topic Page
Adding a Controller 70
Adding Expansion Devices 71
Adding Communication Managers 72
Adding Devices to a Communication Manager 74
Adding Devices from Template 77

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 69
Managing Devices

Adding a Controller

Introduction
As an alternative to dragging and dropping devices on the Devices tree, click the green plus button
that is displayed at the suitable node in the Tree. Alternatively, you can right-click a node of the
Tree to add a suitable device using the contextual menu. The Add Device dialog box opens that
allows you to determine whether the device will be appended, inserted, or plugged to the selected
node (see EcoStruxure Machine Expert, Menu Commands, Online Help).
When you add a controller to your project, several nodes are automatically added to the Devices
tree. These subnodes are controller-specific, depending on the functions the controller provides.
The following paragraph describes the general procedure of adding a controller. For details on a
specific controller, refer to the programming manual for your particular controller.

Adding a Controller
To add a device to your EcoStruxure Machine Expert project, proceed as follows:

Step Action
1 Select a project node, right-click the project node and execute the Add Device... command from the
contextual menu.
Result: The Add Device dialog box opens.
2 In the Add Device dialog box, select Schneider Electric from the list box Vendor.
3 Choose the controller you want to insert into the project.
4 Rename your device by typing a name in the text box Name.
NOTE: Choose a name that complies to the IEC standard. Do not use special characters, leading
digits, or spaces within the name. The name must not exceed a length of 32 characters. If you do
not rename the device, a name is given by default.
Naming the device meaningfully may ease the organization of your project.
5 Click the Add Device button.
Result: The selected controller is added to the project and appears as a new node in the Devices
tree. The Add Device dialog box remains open. You can do the following:
 You can add another controller by going back to step 3
 You can click the Close button to close the Add Device dialog box

70 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Devices

Adding Expansion Devices

Available Expansion Devices


For a list of expansion devices available for the different controllers, refer to the Supported Devices
chapter of the EcoStruxure Machine Expert Introduction document.

WARNING
UNINTENDED EQUIPMENT OPERATION
 Only use software approved by Schneider Electric for use with this equipment.
 Update your application program every time you change the physical hardware configuration.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

Adding Expansion Devices


To add expansion devices to your device, proceed as follows:

Step Action
1 Select a controller node and click the green plus button of the node or right-click the controller node and
execute the Add Device... command from the contextual menu.
Result: The Add Device dialog box opens.
2 In the Add Device dialog box, select Schneider Electric from the Vendor list.
3 Choose the expansion device you want to add to your controller from the Device list below.
4 Rename your expansion device by typing a name in the text box Name.
NOTE: The name must not contain any space character. If you do not rename the expansion device, a
name is given by default.
Naming the expansion device meaningfully may ease the organization of your project.
5 Click the Add Device button.
Result: The selected expansion device is added to the project and is displayed in the Devices Tree as a
new subnode of your controller.
The Add Device dialog box remains open. You can do the following:
 You can add another expansion device by going back to step 3 of this description
 You can click the Close button

NOTE: When you add a TWDNOI10M3 object (AS-Interface Master Module), the corresponding
Virtual AS interface bus fieldbus manager will automatically be inserted.

Expansion Device Configuration


For more information about configuration, refer to the Programming Guide of your expansion
device.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 71
Managing Devices

Adding Communication Managers

Overview
Communication managers are mandatory to activate and configure any hardware bus interface,
for example CANopen or serial line.
Two types of communication managers exist:
 Fieldbus managers which allow to configure fieldbus devices (for example CANopen slaves or
Modbus slaves)
 General communication managers

Communication managers available in EcoStruxure Machine Expert are listed below:

Name Interface type Description


ASCII Manager Serial line Used to transmit and/or receive data with a simple device.
Machine Expert-Network  Serial line For exchanging data with HMIs.
Manager (max. 1)
 Ethernet
(max. 3)
Modbus IOScanner Serial line Modbus RTU or ASCII protocol manager used to define
implicit exchanges (I/O scanning) with Modbus slave
devices.
Modbus Manager Serial line Used for Modbus RTU or ASCII protocol in master or slave
mode.
CANopen Performance CAN CANopen manager for performance controllers (M241,
M251, M258, and LMC058).
CANopen_Manager CAN CANopen manager for PacDrive controllers.
CANmotion CAN CANmotion manager for Modicon LMC058 Motion
Controller CAN1 port only.
J1939_Manager CAN For adding J1939 slaves (Electronic Control Units (ECU))
on M241 / M251 controllers.
Modbus TCP Slave Device Ethernet Modbus TCP manager for controllers with Ethernet port.
EthernetIP Ethernet EtherNet/IP manager for controllers with Ethernet port
(M251, M258, and LMC058).
Industrial Ethernet Network Ethernet For configuring EtherNet/IP and Modbus TCP scanner
services on M241 / M251 controllers with Ethernet port.

72 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Devices

Adding the Communication Manager


Communication managers are automatically added with the respective device.
To add a communication manager separately, proceed as follows:

Step Action
1 In the Devices Tree, select the bus interface (Serial Line, CANopen bus / CANbus, Ethernet)
and click the green plus button of the node or right-click the bus interface node and execute the
Add Device... command from the contextual menu.
Result: The Add Device dialog box opens.
2 In the Add Device dialog box, select Schneider Electric from the list Vendor.
Note: You can filter the devices by brand by clicking the list Vendor.
3 Select the Communication manager from the list.
4 Rename your device by typing a name in the Name box.
Note: Do not use spaces within the name. If you do not rename the device, a name is given by
default.
Naming the device meaningfully may ease the organization of your project.
5 Click the Add Device button.
6 Click the Close button to close the Add Device dialog box.
7 Configure the Communication manager.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 73
Managing Devices

Adding Devices to a Communication Manager

Overview
You can add field devices to the communication manager by selecting the field device manager
node (for example, CANopen or Modbus manager) in the Devices Tree and clicking the green plus
sign. Alternatively, you can right-click the field device manager node in the Devices Tree and
execute the Add Device command.
As a prerequisite, the device must be available in the Device Repository dialog box
(see EcoStruxure Machine Expert, Menu Commands, Online Help).

Adding Devices

Step Action
1 Select the field device manager node (CANopen or Modbus manager) in the Devices Tree and
click the green plus sign, or right-click the field device manager node and execute the Add
Device... command from the contextual menu.
Result: The Add Device dialog box opens.
2 In the Add Device dialog box, select Schneider Electric from the list box Vendor.
Note: You can filter the devices by brand by clicking the list box Vendor.
3 Select the device of your choice from the list below.
4 Rename your device by typing a name in the Name textbox.
NOTE: Do not use spaces within the name. Do not use an underscore character (_) at the end
of the name.
If you do not rename the device, a name is given by default.
Naming the device meaningfully may ease the organization of your project.
5 Click the Add Device button.
Result: The field device is added to the field device manager.
NOTE: The Add Device dialog box remains open.
You can do the following:
 You can add another device by going back to step 2.
 You can click the Close button.

Access to Diagnostic Information


To get diagnostic information of devices on CANopen, use the CAA_CiA405.library.

74 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Devices

Access to Configuration Diagnostic (for Advanced Users)


You can use the options Abort if error and Jump to line if error in the Service Data Object tab of
the CANopen configurator to manage potential configuration inconsistencies.
To optimize the CAN master performance, CAN diagnostics are external from the CAN master in
the controller. The CAN diagnostic structure is defined in the CanConfig Extern library available in
the Library Manager.
The structure g_aNetDiagnosis contains the most recent diagnostic information from the
slaves. The structure is updated every time a slave is configured, for whatever reason.
This structure can be used within the program to do the following:
 Monitoring the response of the slaves configured via SDO messages.
 Monitoring the master for any abort messages from the slaves before allowing a machine /
application start-up.
This structure must be in place and active within the user application during testing, debugging and
commissioning of the application. When the machine and its controlling application have been
commissioned and validated, then it would be possible to disable this code from execution to
reduce traffic on the CANopen network.
However, if during the lifecycle of an application and the machine or process that it controls, slaves
are added or replaced in the operational system, then the diagnostic structure should continue to
remain active in the application.

WARNING
UNINTENDED EQUIPMENT OPERATION
 Use the g_aNetDiagnosis data structure within the application to monitor CAN slave
responses to configuration commands.
 Verify that the application does not start up or put the machine or process in an operational
state in the event of receiving SDO abort messages from any of the CAN slaves.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

After adding the CanConfig Extern library to your application, use the Net Diagnostic definition
within your application to test for SDO abort messages from the CAN slaves.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 75
Managing Devices

The following code example illustrates the use of the CAN diagnostic data structure:
IF g_aNetDiagnosis[CAN_Net_Number].ctSDOErrorCounter = 0 THEN
(* No error is detected in the configuration*)
ELSE
(* An error has been detected during configuration. Get the latest
error information.*)
// node ID of the slave which sent the abort code
ReadLastErrorNodeID := g_aNetDiagnosis[CAN_Net_Number].usiNodeID;
// index used in the aborted SDO
ReadLastErrorIndex := g_aNetDiagnosis[CAN_Net_Number].wIndex;
// subIndex used in the aborted SDO
ReadLastErrorSubIndex := g_aNetDiagnosis[CAN_Net_Number].bySubIndex
;
//SDO abort code
ReadLastErrorSdoAbortCode := g_aNetDiagnosis [CAN_Net_Number].udiAb
ortCode;
(* Do not allow the start-
up or other operation of the machine or process *)
END_IF
NOTE: In this example, the CAN_Net_Number would be 0 for the CAN0 port and, if the controller
is so equipped, 1 for the CAN1port.

76 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Devices

Adding Devices from Template

Overview
It is also possible to add a new device using a device template. For a description of this procedure,
refer to the Managing Device Templates section (see page 908).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 77
Managing Devices

Section 5.3
Updating Devices

Updating Devices

Updating Devices

Introduction
The update device function allows you to replace a device selected in the Devices tree
 By another version of the same device or
 By a different type of device.

Updating Devices
To replace a device of your EcoStruxure Machine Expert project by another version or by a
different device, proceed as follows:

Step Action
1 Select the device you want to replace in the Devices tree and execute the command Update Device... from
the Project menu.
OR
Right-click the device you want to replace in the Devices tree and execute the command Update Device... from
the contextual menu.
Result: The Update Device dialog box opens.
OR
Right-click the device you want to replace in the Devices tree and execute the command Add Device... from
the contextual menu. In the Add Device dialog box select the Action: Update device.
Result: The Add Device dialog box is converted into the Update Device dialog box.
2 From the Device: list, choose the device that should replace the present device.
To select a specific version of the device, select the options Display all versions (for experts only) and/or
Display outdated versions.
3 Click the Update Device button.
Result: The device that had been selected in the Devices tree is replaced by the new device type or the new
version. The new device type or the new version is now displayed at the selected node in the Devices tree.

Effects after Updating a Device


The subdevices that are located in the Devices tree below the device you updated are
automatically updated as well.
The device configuration settings are not modified if the device type has not been changed.
If the update procedure causes any mismatch in the existing configuration, this is detected at the
next Build run of the application. Detected mismatches are indicated by appropriate messages.
This also concerns implicitly added libraries which will not be removed automatically and
appropriately at a device update.

78 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Devices

Section 5.4
Converting Devices

Converting Devices

Converting Devices

Introduction
EcoStruxure Machine Expert 4.0 and later versions allow you to convert a device that is configured
in your project to a different, but compatible device. EcoStruxure Machine Expert automatically
converts the currently configured device into the selected device and displays the changes that are
made in the Messages view.
The Convert Device command may automatically add or remove modules. These hardware
changes also have influences on the addressing and the libraries.
To help to avoid unintended behavior after a device was converted:
 Verify that the new device supports all functions and communication ports that are required in
your project
 Avoid using direct addresses in your application
 Perform a backup of the project to the PC before converting a device

WARNING
UNINTENDED EQUIPMENT OPERATION
 Verify that any direct addresses used in your application (for example, %IB5) have been
converted correctly after device conversion.
 Verify that the modified project contains the intended configurations and provides the intended
functionality after you have converted the device.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

NOTICE
LOSS OF DATA
Perform a backup of the project to the PC before converting a device.
Failure to follow these instructions can result in equipment damage.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 79
Managing Devices

Converting a Device
To convert a device to a compatible device, proceed as follows:

Step Action
1 Perform a backup of the project to the PC by executing the File → Save Project As... command before
converting a device.
2 Right-click the device you want to convert in the Devices Tree.
3 Execute the Convert Device command from the contextual menu.
Result: The Convert Device dialog box is displayed. It lists those devices that are compatible to the device
you selected and provides further information on the selected device.
4 Select the device from the list in which you want to convert your currently configured device.
To display the available versions of a device, select the option Display all versions (for experts only).
5 If you have not yet performed a backup of your project, click Cancel to stop without changes and perform
a backup before you start the procedure once again.
To start the conversion, click OK.
Result: The currently configured device is converted into the device you selected from the list. The
information you entered is conserved if the related modules are still available. Any modifications or
configurations that could not be converted are listed in the Messages view.
6 Check whether the converted project still contains the intended configurations and provides the intended
functions. If not, adapt the configuration or restore the backup of the unchanged project file.

Conversion Information in the Messages View


The following information is displayed in the Messages view for the conversion process:
 The source devices and the target devices they have been converted to.
 The parameters that have not been transferred to the target.
 The devices that have not been converted.

To save the information displayed in the Messages view, you can copy it to the Clipboard (press
CTRL + C) and paste it to a data file (press CTRL + V).

80 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Devices

Section 5.5
Converting Projects

Converting Projects

Converting SoMachine Basic and Twido Projects

Introduction
With EcoStruxure Machine Expert, you can convert a SoMachine Basic or TwidoSoft/TwidoSuite
project and the configured controller to a selectable EcoStruxure Machine Expert logic controller
(see page 1085). The controller and the corresponding logic are converted and integrated in the
EcoStruxure Machine Expert project.
For the conversion process, execute the File → Convert SoMachine Basic Project or the File →
Convert Twido Project command. The Convert SoMachine Basic Project dialog box or Convert
Twido Project dialog box opens. If the commands are not available, you can insert them in a menu
of your choice by using the Tools → Customize dialog box (see EcoStruxure Machine Expert,
Menu Commands, Online Help).
The SoMachine Basic versions supported by this conversion mechanism are listed in the release
notes of EcoStruxure Machine Expert. If you convert a SoMachine Basic project that was created
with a SoMachine Basic version that is newer than the latest supported version, this is indicated
by a message in the Messages view (see EcoStruxure Machine Expert, Menu Commands, Online
Help). You can then continue or cancel the conversion. If you continue, the application will be
converted, but it may not be possible to do so without encountering errors that will need to be
rectified. In this case, review and verify both the message view and your application before
attempting to put it into service.
NOTE: Verify that the SoMachine Basic or Twido project is valid before you convert it into
EcoStruxure Machine Expert.
NOTE: It is not possible to convert password-protected projects.
To help to avoid unintended behavior after a project was converted, verify that the target controller
supports the functions and communication ports that are required in your project.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 81
Managing Devices

WARNING
UNINTENDED EQUIPMENT OPERATION
 Verify that the program for the target controller contains the intended configurations and
provides the intended functions after you have converted the project.
 Fully debug, verify, and validate the functionality of the converted program before putting it into
service.
 Before converting a program, verify that the source program is valid, i.e., is downloadable to
the source controller.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

NOTE: For more information, advice and important safety information concerning importing
projects into EcoStruxure Machine Expert, see the Compatibility and Migration User Guide
(see EcoStruxure Machine Expert Compatibility and Migration, User Guide).

82 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Devices

Converting a SoMachine Basic or a Twido Project


To convert a SoMachine Basic or a Twido project, proceed as follows:

Step Action
1 To start the conversion process, perform one of the three actions in the EcoStruxure Machine Expert
Logic Builder (as listed in the Introduction block of this chapter (see page 81)).
Result: The Convert SoMachine Basic Project dialog box or Convert Twido Project dialog box opens:

2 Enter a name for the controller in the Device Name field.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 83
Managing Devices

Step Action
3 Enter the path to the SoMachine Basic or Twido project file in the Project File box, or click the ... button
to browse for the file.
NOTE: If you already browsed for your SoMachine Basic or Twido project in the Open project dialog box,
the path has been entered automatically in the Project File field and cannot be edited.
4 Select the programming language in which the logic will be converted from the Implementation Language
list.
The following programming languages are supported:
 Ladder diagram (LD)
 Function block diagram (FBD)
 Instruction list (IL)
 Continuous function chart (CFC)

5 Select the target controller from the Devices list in which you want to convert your SoMachine Basic or
Twido controller. Further information on the selected device is displayed in the Information area of the
dialog box.
6 Click Convert to start the conversion.
Result: The SoMachine Basic or Twido project is converted and integrated in the open EcoStruxure
Machine Expert project. Modifications or configurations that could not be converted are listed in the
Messages view (see EcoStruxure Machine Expert, Menu Commands, Online Help).
7 Consult the category Project Conversion of the Messages view and verify the errors and alerts detected
and listed.
8 Verify whether the converted project contains the intended configurations and provides the intended
functions. If not, adapt the configuration.

IEC Compatibility of Object and Variable Names


Object names and variable names in EcoStruxure Machine Expert projects have to comply with
the naming conventions defined in the IEC standard. Any names in your SoMachine Basic or
Twido project that do not comply with the standard are automatically adapted to IEC conventions
by the converter.
If you want to preserve names that are not IEC-compatible in the converted EcoStruxure Machine
Expert project, activate the option Allow unicode characters for identifiers in the Project Settings
→ Compile options dialog box (see EcoStruxure Machine Expert, Menu Commands, Online Help).

TwidoEmulationSupport Library
The TwidoEmulationSupport library (see EcoStruxure Machine Expert, Twido Emulation Support
Library, Library Guide) contains functions and function blocks that provide SoMachine Basic and
TwidoSoft/TwidoSuite functionality in a EcoStruxure Machine Expert application. The TwidoEmu-
lationSupport library is automatically integrated in the EcoStruxure Machine Expert project with the
converted controller.

84 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Devices

Conversion of the Application Program


In the target EcoStruxure Machine Expert project, separate programs are created for each
SoMachine Basic POU and free POU and for each Twido subroutine and program section. The
programming language that is used for these programs is determined by the Implementation
Language selected in the Convert SoMachine Basic Project / Convert Twido Project dialog box.
An exception is made for POUs that were programmed in graphical Grafcet. They are converted
to an SFC program. For detailed information, refer to the Grafcet section in this chapter
(see page 93).
For each language object (such as memory objects or function blocks) being used by the
application program, one global variable is created. Separate global variable lists (see page 218)
for the different object categories (one for memory bits, one for memory words and so forth) are
created.
The following restrictions apply for the conversion of the application program concerning the
program structure:
 In EcoStruxure Machine Expert, it is not possible to jump to a label (see page 334) in another
program.
 It is not possible to define Grafcet steps in a subprogram.
 It is not possible to activate or deactivate Grafcet steps (per # and D# instruction) in a
subprogram.

Conversion of Memory Objects


The areas provided for memory objects in SoMachine Basic and Twido differ from EcoStruxure
Machine Expert.
In SoMachine Basic and Twido, there are three distinct areas for memory objects:

Area Memory objects included


memory bit area memory bits (%M)
memory word area  memory words (%MW)
 double words (%MD)
 floating point values (%MF)

constant area  constant words (%KW)


 double words (%KD)
 floating point values (%KF)

In EcoStruxure Machine Expert, there is only the memory word area for memory objects:

Area Memory objects included


memory word area  memory words (%MW)
 double words (%MD)
 floating point values
There is no specific addressing format for floating point values.
Floating point variables can be mapped on a %MD address.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 85
Managing Devices

The graphic provides an overview of the different layouts of %MD and %MF addresses in SoMachine
Basic / Twido and EcoStruxure Machine Expert.

1 Memory addresses in SoMachine Basic / Twido


2 Memory addresses in EcoStruxure Machine Expert

Memory objects are converted as follows:

Source memory objects Target memory object Further information


%MW Mapped to the same %MW address For each %MW object, a global
Example variable of type INT is created.
%MW2 is mapped on %MW2.
%MD and %MF with even Mapped such that they are located For each %MD object, a global
addresses on the same %MW address as before. variable of type DINT is created.
Example For each used %MF object, a global
%MD4 / %MF4 are mapped on %MD2. variable of type REAL is created.
%MD and %MF with uneven Cannot be mapped because a DINT A variable is created to help ensure
addresses variable cannot be located on an that the converted application can
odd word address. be built. However, you need to
examine the effect that such
variable creation has on the overall
functionality of your program.
%M Mapped as a packed bit field to a fix For each %M object, a global
location in the %MW area. variable of type BOOL is created.
%KW Mapped to consecutive addresses For each used %KW object, a global
of the %MW area. variable of type INT is created.

86 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Devices

The relationship between %KW, %KD, and %KF objects is the same as for %MW, %MD, and %MF objects.
For example, %KD4 / %KF4 are mapped on the same location as %KW4. Uneven %KD / %KF
addresses cannot be mapped.
Remote Access
Memory objects (%MW, %MD, %MF, and %M) can be accessed by a remote device through Modbus
services:
 If a remote device accesses %MW, %MD or %MF objects in the source application, this access will
still be available in the EcoStruxure Machine Expert application.
 If a remote device accesses %M objects in the source application, this access will no longer be
available in the EcoStruxure Machine Expert application.
Handling Rising and Falling Edges
A rising/falling edge contact is converted as follows:
1. An additional global variable with the suffix _Rise/_Fall is created (for example, M1_Rise
for a rising edge contact for %M1).
2. This variable is set via an R_TRIG/F_TRIG instance in the SystemFunctions program.
Edge detection is performed at the beginning of the controller cycle.
A FALLING/RISING instruction is directly converted into an R_TRIG/F_TRIG instance.
Edge detection is performed at the same place of the execution sequence as in the original
application.

Conversion of Function Blocks


For the following function blocks in SoMachine Basic / Twido, the TwidoEmulationSupport library
provides function blocks with compatible functions:

SoMachine Basic / Twido function block TwidoEmulationSupport library function block


Timers %TM FB_Timer

Counters %C FB_Counter

Register %R FB_FiFo / FB_LiFo


Drum %DR FB_Drum

Shift bit register %SBR FB_ShiftBitRegister

Step counter %SC FB_StepCounter

Schedule %SCH FB_ScheduleBlock

PID FB_PID
Exchange / message %MSG FB_EXCH

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 87
Managing Devices

SoMachine Basic / Twido function block TwidoEmulationSupport library function block


High-speed counter %HSC / %VFC They are converted as described in the section
Conversion of Fast Counters, High-speed Counters
Fast counter %FC
(Twido: Very Fast Counters) and Pulse Generators
PLS pulse generator %PLS (see page 91) of this chapter.
PWM pulse generator %PWM
PTO function blocks %PTO, %MC_xxx_PTO
Frequency generator %FREQGEN
Communication function blocks FB_ReadVar, FB_WriteVar, FB_WriteReadVar,
READ_VAR, WRITE_VAR, WRITE_READ_VAR , and FB_SendRecvMsg
and SEND_RECV_MSG
SMS function block SEND_RECV_SMS They are not converted.
MC_MotionTask_PTO
Drive function blocks %MC_xxx_ATV
%DATALOG

For the conversion of function blocks, note the following:


 The TwidoEmulationSupport library does not provide any function blocks for hardware-related
functions, such as high-speed counters, fast counters, and the pulse generators. They must be
controlled through function blocks provided by the platform-specific HSC and PTO_PWM
libraries. These function blocks are not compatible with the source function blocks. In short, a
full conversion is not possible if the source program contains functions based on controller
hardware resources. For further information, refer to the description Conversion of Fast
Counters, High-speed Counters (Twido: Very Fast Counters) and Pulse Generators
(see page 91).
 In SoMachine Basic / Twido, the messaging function is provided by the EXCHx instruction and
the %MSGx function block. In the EcoStruxure Machine Expert application, this function is
performed by a single function block FB_EXCH.
 In SoMachine Basic / Twido, certain function blocks can be configured using special
configuration dialog boxes. This configuration data is provided to the function blocks of the
TwidoEmulationSupport library by dedicated parameters.
 If a rung contains multiple function blocks, the converter may split the rung into multiple logic
networks.

88 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Devices

Conversion of Network Objects


The table indicates the network object types that are supported by the conversion:

Network object Object function Supported


%QWE Input assembly (EtherNet/IP) Yes
%IWE Output assembly (EtherNet/IP) Yes
%QWM Input registers (Modbus TCP) Yes
%IWM Output registers (Modbus TCP) Yes
%IN Digital inputs (IO scanner) Only Serial IO scanner
%QN Digital outputs (IO scanner) Only Serial IO scanner
%IWN Input registers (IO scanner) Only Serial IO scanner
%QWN Output registers (IO scanner) Only Serial IO scanner
%IWNS (IO scanner Diagnostics) Only Serial IO scanner

Conversion of System Variables


The following system bits and words are converted:

System bit / word Further information


%S0 Is set to 1 in the first cycle after a cold start.
NOTE: It is not possible to trigger a cold start by writing to this system bit.
%S1 Is set to 1 in the first cycle after a warm start.
NOTE: It is not possible to trigger a warm start by writing to this system bit.
%S4 Pulse with the time base 10 ms.
%S5 Pulse with the time base 100 ms.
%S6 Pulse with the time base 1 s.
%S7 Pulse with the time base 1 min.
%S13 Is set to 1 in the first cycle after the controller was started.
%S18 Is set to 1 if an arithmetic overflow occurs.
NOTE: This flag is provided by the TwidoEmulationSupport library and is
only set by functions provided by this library.
%S21 , %S22 Are only written. Reading is not supported for these variables.
%S113 Stops the Modbus Serial IOScanner on serial line 1.
%S114 Stops the Modbus Serial IOScanner on serial line 2.
%SW63...65 Error code of the MSG blocks 1...3.
%SW114 Enable flags for the schedule blocks.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 89
Managing Devices

Other system variables are not supported by the conversion. If an unsupported system variable is
used by the source application program, a message is generated in the category Project
Conversion of the Messages view (see EcoStruxure Machine Expert, Menu Commands, Online
Help).

Conversion of Retain Behavior


The variables and function blocks in SoMachine Basic / Twido are retain variables. This means,
they keep their values and states even after an unanticipated shutdown of the controller as well as
after a normal power cycle of the controller.
This retain behavior is not conserved during conversion. In EcoStruxure Machine Expert, the
converted variables and function blocks are regular, which means that they are initialized during
unanticipated shutdown and power cycle of the controller. If you need retain variables in your
EcoStruxure Machine Expert application, you have to declare this attribute keyword
(see page 641) manually.

Conversion of Animation Tables


Management of animation tables differs in the source and target applications:
 SoMachine Basic / Twido allow you to define multiple animation lists identified by name. Each
animation list can contain multiple entries for objects to be animated. For each variable, you can
select the option Trace.
 In EcoStruxure Machine Expert, there are 4 predefined watchlists (see page 480)
(Watch 1...Watch 4). Each watchlist can contain multiple variables to be animated.
One watchlist can contain variables from different controllers.
For those variables that have the option Trace selected in SoMachine Basic / Twido,
EcoStruxure Machine Expert creates a trace object. You can view these variables in the trace
editor (see page 517).
During the conversion process, the entries of the source animation tables are added at the end of
watchlist Watch 1.

90 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Devices

Conversion of Symbols
Symbols defined in a SoMachine Basic / Twido project are automatically transferred into the
EcoStruxure Machine Expert project.
The following restrictions apply to the naming of symbols:

If... Then ...


a symbol name does not comply with the naming the name of the symbol is modified.
rules of EcoStruxure Machine Expert,
a symbol name is equal to a keyword of EcoStruxure the name of the symbol is modified.
Machine Expert,
no variable is created for a language object, the name of the symbol is discarded.
a symbol is not used anywhere in the application the name of the symbol may be discarded.
program,

For the complete list of symbol modifications that were required, refer to the Messages view.

Conversion of Fast Counters, High-Speed Counters (Twido: Very Fast Counters) and Pulse Generators
The function blocks provided by EcoStruxure Machine Expert differ from the function blocks
provided by SoMachine Basic / Twido. Nevertheless, the configuration of fast counters, high-speed
counters, and pulse generators is converted as far as possible. The following sections provide an
overview of the restrictions that apply.
General Restrictions
The following general restrictions apply:

Restriction Solution
The inputs and outputs used by the converted high- Take this into account in the wiring of the converted
speed counters and pulse generators may differ from controller.
the used inputs and outputs of the source application. The reassignment of inputs and outputs is reported in
the Messages view (see EcoStruxure Machine
Expert, Menu Commands, Online Help).
The SoMachine Basic controller may support a You have to adapt your application manually.
different number of counters and pulse generators
than the selected target controller. The conversion
function only converts the counters and pulse
generators that are supported by the target controller.

Constraints Pertaining to the Conversion of %FC, %HSC / %VFC, %PLS, and %PWM
For each %FC, %HSC / %VFC, %PLS, and %PWM function block being used in the SoMachine Basic /
Twido application, a single program is created in EcoStruxure Machine Expert. You can improve
this basic implementation according to the needs of your application.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 91
Managing Devices

The following restrictions apply:

Restriction Solution
The access to function block parameters is performed If the source application accesses parameters of the
differently in SoMachine Basic and EcoStruxure function block, you have to extend the converted
Machine Expert. application accordingly.
In SoMachine Basic, the parameters of a function
block can be accessed directly by the application
program, for example, %HSC.P = 100.
In EcoStruxure Machine Expert, a controller-specific
function block (for example, EXPERTSetParam) has
to be used to access a parameter.
The behavior of counters differs in EcoStruxure You have to adapt your application manually.
Machine Expert from SoMachine Basic / Twido when
the preset value is set.
In Twido:
 The down counter continues counting if zero is
reached.
 The up counter continues counting if the preset
value is reached.
In EcoStruxure Machine Expert:
 The down counter stops counting if zero is
reached.
 The up counter starts to count from the beginning
if the preset value is reached.
The following parameters of SoMachine Basic You have to adapt your application manually.
function blocks cannot be converted to EcoStruxure
Machine Expert:
Function block %PLS:
 Output parameter D [Done]
 Parameter R [Duty Cycle]

Function block %PWM:


 Parameter R [Duty Cycle]

Function block %HSC:


 Output parameter U [Counting Direction]

92 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Devices

Constraints Pertaining to the Conversion of PTO Function Blocks %PTO and %MC_xxxx
For M241:
The PTO function blocks provided by EcoStruxure Machine Expert for M241 controllers are
compatible with the PTO function blocks provided by SoMachine Basic. PTO function blocks are
converted without restrictions. The only exception is the MC_MotionTask_PTO function block.
The MC_MotionTask_PTO is not converted.
For HMISCU:
The PTO function blocks provided by EcoStruxure Machine Expert for HMISCU controllers are not
compatible with the PTO function blocks provided by SoMachine Basic. PTO function blocks are
not converted.
Constraints Pertaining to the Conversion of Frequency Generator Function Block %FREQGEN
The frequency generator function block %FREQGEN is converted without restrictions for both M241
and HMISCU controllers.

Conversion of Loop Elements (FOR / ENDFOR)


The destination languages for the conversion do not support loops. For that reason, a FOR loop is
broken up into a functionally equivalent sequence of logical networks using label and jump
elements.

Conversion of Conditional Elements (IF / ELSE / ENDIF)


The destination languages for the conversion do not support conditional statements (except EN /
ENO, which are already used for other purposes). For that reason, an IF structure is broken up into
a functionally equivalent sequence of logical networks using label and jump elements.

Conversion of a Grafcet Program


You can write a Grafcet program in a textual or in a graphical way.

Grafcet type Description Supported by


Textual Various IL and LD programming elements  TwidoSoft/TwidoSuite
are available for the definition, activation,  SoMachine Basic
and deactivation of Grafcet states.
Graphical Allows you to draw the layout of steps, Only SoMachine Basic V1.4 and later
transitions, and branches in a graphical versions.
manner.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 93
Managing Devices

Conversion of Textual Grafcet


The programming languages of EcoStruxure Machine Expert do not support the programming with
Grafcet.
For that reason, a converted Grafcet application contains additional language elements that
implement the Grafcet management.

Additional element Description


folder Grafcet This folder contains the following language elements used for the
management of the Grafcet state machine.
data structure GRAFCET_STATES This data structure has one bit element for each allowed Grafcet
state.
If it is an initial state, the element is initialized to TRUE, otherwise
it is FALSE.
global variable list GrafcetVariables This global variable list contains the following variables:
 1 variable STATES that contains 1 bit for each Grafcet state.
Each bit represents the present value of the corresponding
Grafcet state (%Xi object).
 1 variable ACTIVATE_STATES that contains 1 bit for each
Grafcet state. If the bit is TRUE, the Grafcet state is activated in
the next cycle.
 1 variable DEACTIVATE_STATES that contains 1 bit for each
Grafcet state. If the bit is TRUE, the Grafcet state is deactivated
in the next cycle.
program Grafcet This program implements the Grafcet state machine. It contains the
logic for the activation and deactivation of Grafcet steps.
The program contains the following actions:
 Init initializes the Grafcet steps to their initial states. It is
executed when the system bit %S21 is set by the application
program.
 Reset resets the Grafcet steps to FALSE. It is executed when
the system bit %S22 is set by the application program.

The Grafcet instructions in the application program are converted as follows:


 The beginning of each Grafcet step is marked by a label with the name of the step.
The first statement within the Grafcet step checks if the step is active. If not, it jumps to the label
of the next Grafcet step.
 The access to the %Xi is converted to an access to the [Link] variable.
 A Grafcet activation instruction #i is converted to setting the activation bit of state i and the
deactivation bit of the present state.
 A Grafcet deactivation instruction #Di is converted to setting the deactivation bit of state i and
the deactivation bit of the present state.
You can extend the converted Grafcet program if you consider the information given in this section.

94 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Devices

Conversion of graphical Grafcet


Graphical Grafcet is similar to the programming language SFC provided by EcoStruxure Machine
Expert. For this reason, a graphical Grafcet POU is converted to an SFC program, as far as
possible.
There are the following differences between graphical Grafcet and SFC:

Graphical Grafcet SFC Further information


Can have an arbitrary number of Must have exactly one initial step. If the graphical Grafcet POU has
initial steps. several initial steps, then the
converter creates several initial
steps in SFC. This has the effect,
that the converted application
cannot be built without errors being
detected.
Carefully adapt the converted
program.
Activation of multiple steps of an Only one step of an alternative Carefully verify that the converted
alternative branch is allowed. branch can be activated. program is working as expected.
The output transitions of a step are The transitions of the Carefully verify that the converted
evaluated right after the step has SFC program are evaluated after program is working as expected.
been executed. all active steps have been
executed.
The layout of steps, transitions, The layout of steps, transitions, The graphical layout is converted
and branches is relatively free. and branches is more restricted. to SFC as far as possible. The
incompatibilities encountered
during the conversion are reported
in the Messages view.
The step actions and transition
sections are fully converted.
Complete the created SFC as
necessary.

A graphical Grafcet POU can be initialized by setting the system bit %S21. If this bit is set in the
SoMachine Basic project, the converter activates the implicit variable SFCInit and uses it to
initialize the SFC program.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 95
Managing Devices

Conversion of TM2 Expansion Modules to TM3 Expansion Modules


Twido controllers only use TM2 expansion modules. Even though M221 and M241 Logic
Controllers can handle TM2 as well as TM3 modules, it is a good practice to use TM3 modules. To
convert the TM2 modules used in your Twido project into TM3 modules for the EcoStruxure
Machine Expert project, the option Upgrade TM2 Modules to TM3 is by default selected.
The TM2 expansion modules are converted into TM3 expansion modules as listed in the table:

Source TM2 expansion module Target TM3 expansion module Further information
TM2DDI8DT TM3DI8 –
TM2DAI8DT TM3DI8A –
TM2DDO8UT TM3DQ8U –
TM2DDO8TT TM3DQ8T –
TM2DRA8RT TM3DQ8R –
TM2DDI16DT TM3DI16 –
TM2DDI16DK TM3DI16K –
TM2DRA16RT TM3DQ16R –
TM2DDO16UK TM3DQ16UK –
TM2DDO16TK TM3DQ16TK –
TM2DDI32DK TM3DI32K –
TM2DDO32UK TM3DQ32UK –
TM2DDO32TK TM3DQ32TK –
TM2DMM8DRT TM3DM8R –
TM2DMM24DRF TM3DM24R –
TM2AMI2HT TM3AI2H –
TM2AMI4LT TM3TI4 It is possible that the behavior of the converted
temperature module differs from the original
module. Carefully verify the converted module.
TM2AMI8HT TM3AI8 –
TM2ARI8HT – The TM2 modules TM2ARI8HT, TM2ARI8LRJ,
and TM2ARI8LT are not converted because there
is no corresponding TM3 expansion module. You
can replace this module by two TM3TI4 modules.
TM2AMO1HT TM3AQ2 The target TM3 expansion module has more
I/O channels than the source TM2 module.
TM2AVO2HT –
TM2AMM3HT TM3TM3 –
TM2ALM3LT It is possible that the behavior of the converted
temperature module differs from the original
module. Carefully verify the converted module.

96 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Devices

Source TM2 expansion module Target TM3 expansion module Further information
TM2AMI2LT TM3TI4 The target TM3 expansion module has more
I/O channels than the source TM2 module.
It is possible that the behavior of the converted
temperature module differs from the original
module. Carefully verify the converted module.
TM2AMM6HT TM3AM6 –
TM2ARI8LRJ – The TM2 modules TM2ARI8HT, TM2ARI8LRJ,
and TM2ARI8LT are not converted because there
is no corresponding TM3 expansion module. You
can replace this module by two TM3TI4 modules.
TM2ARI8LT – The TM2 modules TM2ARI8HT, TM2ARI8LRJ,
and TM2ARI8LT are not converted because there
is no corresponding TM3 expansion module. You
can replace this module by two TM3TI4 modules.

NOTE: If you are using TM2 as well as TM3 expansion modules in your EcoStruxure Machine
Expert project, note their position in the tree structure: If TM3 nodes are located below TM2 nodes
in the tree structure, this is reported as a detected Build error in the Messages view.

Conversion of Modbus Serial IOScanner


Due to the differences between controller platforms, and especially for connected controller
equipment that depend on the proper functioning of the converted program, you must verify the
results of the conversion process. Whether or not errors or alerts are detected during the
conversion, it is imperative that you thoroughly test and validate your entire system within your
machine or process.

WARNING
UNINTENDED EQUIPMENT OPERATION
 Verify that the program for the target controller contains the intended configurations and
provides the intended functions after you have converted the project.
 Fully debug, verify, and validate the functionality of the converted program before putting it into
service.
 Before converting a program, verify that the source program is valid, i.e., is downloadable to
the source controller.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 97
Managing Devices

Configuration
The IOScanner configuration is completely converted:
 The devices are converted to the Generic Modbus Slave device. The source device type is not
preserved.
 The device configuration is completely converted. This includes initialization requests, channel
settings, and reset variable.
Function Blocks
The drive function blocks for the control of Altivar drives over the Modbus IOScanner
(MC_xxx_ATV) are not converted.
Status Handling
Since the IOScanner status handling differs for SoMachine Basic and EcoStruxure Machine
Expert, these features can only be partly converted. If your application uses IOScanner status
information, verify that this logic still works.

IOScanner Status Further information


Device Status (%IWNSx) Both SoMachine Basic and EcoStruxure Machine Expert provide status
information for a slave device, but the status values are different. The
status logic is partly converted.
Channel Status (%IWNSx.y) EcoStruxure Machine Expert does not provide status information for
single channels. The channel status is converted to the device status.
System words and bits:
%S110/%S111 (IOScanner reset) They are not converted.
%S113/%S114 (IOScanner stop) They are converted.
%SW210/%SW211 (IOScanner They are not converted.
status)

Conversion of Modbus TCP IO Scanner


The configuration of the Modbus TCP IO Scanner is not converted.

98 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Devices

Immediate I/O Access


The instructions READ_IMM_IN and WRITE_IMM_OUT of SoMachine Basic for immediate access
to digital local I/O channels are not converted.
For M241 controllers, you can use the functions GetImmediateFastInput and Physical-
WriteFastOutputs provided by the PLCSystem library, but consider the following differences:

READ_IMM_IN and WRITE_IMM_OUT instructions GetImmediateFastInput and


(M221 controllers) PhysicalWriteFastOutputs functions (M241
controllers)
Access to all local inputs and outputs. Access only to fast inputs and outputs.
WRITE_IMM_OUT writes a single bit (similar to the PhysicalWriteFastOutputs writes fast outputs
read function). at the same time.
WRITE_IMM_OUT returns an error code. PhysicalWriteFastOutputs only returns the
information on which outputs have actually been
written.
The error codes of READ_IMM_IN and GetImmediateFastInput differ.
READ_IMM_IN updates the input object (%I0.x). GetImmediateFastInput only returns the read
value but does not update the input channel.

NOTE: For HMISCU controllers, no equivalent function exists.

Twido Communication Features


The following communication features of Twido are not converted:
 AS Interface
 CANopen
 remote link

If you use these communication features in your Twido application, you have to adapt the
EcoStruxure Machine Expert application manually.
During conversion, one variable is created for each related I/O object in order to allow the
EcoStruxure Machine Expert application to be built successfully. These variables are collected in
separate global variable lists. This helps you in identifying the variables to be replaced.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 99
Managing Devices

Detected Errors and Alerts Indicated in the Messages View


If errors or alerts are detected during the conversion process, a message box is displayed,
indicating the number of errors and alerts detected. For further information, consult the category
Project Conversion of the Messages view (see EcoStruxure Machine Expert, Menu Commands,
Online Help). Verify each entry carefully to see whether you have to adapt your application.

WARNING
UNINTENDED EQUIPMENT OPERATION
 Verify that the program for the target controller contains the intended configurations and
provides the intended functions after you have converted the project.
 Fully debug, verify, and validate the functionality of the converted program before putting it into
service.
 Before converting a program, verify that the source program is valid, i.e., is downloadable to
the source controller.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

 A warning message indicates that the conversion process made some adjustments that, in all
likelihood, do not have impact on the functions of your application.
 An error message indicates that some parts of the application could not be fully converted. In
this case, you have to adapt the application manually in order to preserve the same functionality
in the target application.
 If the application program makes use of functionality that cannot be completely converted, the
converter creates variables for the unsupported language objects. This allows you to compile
your application successfully. However, verify this unsupported functionality after the
conversion.
To save the information displayed in the Messages view, you can copy it to the Clipboard (press
CTRL + C) and paste it to a data file (press CTRL + V).

100 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Common Device Editor Dialogs
EIO0000002854 06/2019

Chapter 6
Common Device Editor Dialogs

Common Device Editor Dialogs

What Is in This Chapter?


This chapter contains the following sections:
Section Topic Page
6.1 Device Configuration 102
6.2 I/O Mapping 155

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 101
Common Device Editor Dialogs

Section 6.1
Device Configuration

Device Configuration

What Is in This Section?


This section contains the following topics:
Topic Page
General Information About Device Editors 103
Communication Settings in Controller Selection Mode 105
Communication Settings in Simple Mode 125
Communication Settings in Classic Mode 128
Configuration 132
Parameter 133
Applications 134
Synchronized Files 136
Files 137
Log 139
PLC Settings 141
Users and Groups 143
Access Rights 148
Task Deployment 152
Status 153
Information 154

102 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

General Information About Device Editors

Overview
The device editor provides parameters for the configuration of a device, which is managed in the
Devices tree.
To open the device editor for a specific device, do the following:
 Double-click the node of the device in the Devices tree or
 Select device in the Devices tree and execute the Edit Object command via the contextual menu
or via the Project menu.
The Tools → Options → Device editor dialog box allows you to make the generic device
configuration views invisible (see page 132).
This chapter describes the main device editor dialogs. Bus-specific configuration dialogs are
described separately.

Main Device Editor Dialogs


The title of the main dialog consists of the device name, for example MyPlc.
Depending on the device type, the device editor can provide the following tabs:

Tab Description
Communication Settings in Controller Configuration of the connection between programming system and
selection mode (see page 105) a programmable device (controller). The tab that is displayed
Communication Settings in Simple depends on the mode selected with the parameter Communication
page in the Tools → Options → Device editor dialog box
mode (see page 125)
(see EcoStruxure Machine Expert, Menu Commands, Online Help).
Communication Settings in Classic
mode (see page 128)
Configuration (see page 132) Display or configuration of the device parameters.
Parameter (see page 133) Display or configuration of the device parameters of PacDrive
controllers.
Applications (see page 134) List of applications running on the controller. Refer to the description
in the Program chapter (see page 167).
Synchronized Files (see page 136) List of files that are downloaded to the controller with an application
download.
Files (see page 137) Configuration of a file transfer between host and controller.
Log (see page 139) Display of the controller log file.
PLC settings (see page 141) Configuration of:
 Application noticed for I/O handling
 I/O behavior in stop status
 Bus cycle options

Users and Groups (see page 143) User management concerning device access during runtime.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 103
Common Device Editor Dialogs

Tab Description
Access Rights (see page 148) Configuration of the access rights on runtime objects and files for
the particular user groups.
Task Deployment (see page 152) Display of inputs and outputs assigned to the defined task - used for
troubleshooting.
Status (see page 153) Device-specific status and diagnostic messages.
Information (see page 154) General information on the device (for example: name, provider,
version).
I/O Mapping (see page 155) Mapping of the input and output channels of an I/O device on project
(application) variables.
OPC UA server configuration Provides various functionalities to edit the server configuration file
[Link] on the Compact Flash (CF) card of the
controller.
The OPC UA server configuration allows you to perform the
following actions:
 Define default properties for new server certificates.
 View and delete existing server certificates.
 View and add sampling rates.
 Import and export server certificates.
 Enable and manage various settings.

This function is not available for all supported controllers. Consult


the Programming Guide specific to your controller.

104 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

Communication Settings in Controller Selection Mode

Overview
The Communication Settings tab in controller selection mode is displayed when the mode
Controller selection mode has been selected for the parameter Communication page in the Tools
→ Options → Device editor dialog box (see EcoStruxure Machine Expert, Menu Commands,
Online Help). The tab provides access to the Network Device Identification service that allows you
to scan the Ethernet network for available controllers and to display them in a list. You can
configure the parameters for the communication between the devices (referred to as controllers in
this chapter) and the programming system.
The list of controllers contains those controllers in the network that have sent a response to the
request of EcoStruxure Machine Expert. It may happen that the controller of your choice is not
included in this list. This can have several causes. For causes and suitable solutions, refer to the
chapter Accessing Controllers - Troubleshooting and FAQ (see page 949).
Communication Settings tab in controller selection mode

The Communication Settings tab provides the following elements:


 Buttons in the toolbar
 List providing information on the available controllers
 Option, list, and box at the bottom of the tab

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 105
Common Device Editor Dialogs

Description of the Buttons in the Toolbar


The following buttons are available in the toolbar:

Button Description
Optical Click this button to cause the selected controller to indicate an optical
signal: It flashes a control LED quickly. This can help you to identify the
respective controller if many controllers are used.
The function stops on a second click or automatically after about
30 seconds.
NOTE: The optical signal is issued only by controllers that support this
function.
Optical and acoustical Click this button to cause the selected controller to indicate an optical and
an acoustical signal: It starts to beep and flashes a control LED quickly.
This can help you to identify the respective controller if many controllers
are used.
The function stops on a second click or automatically after about
30 seconds.
NOTE: The optical and acoustical signals are issued only by controllers
that support this function.
Update Click this button to refresh the list of controllers. A request is sent to the
controllers in the network. Controllers that respond to the request are
listed with the present values.
Pre-existing entries of controllers are updated with every new request.
Controllers that are already in the list but do not respond to a new request
are not deleted. They are marked as inactive by a red cross being added
to the controller icon.
The Update button corresponds to the Refresh list command that is
provided in the contextual menu if you right-click a controller in the list.
To refresh the information of a selected controller, the contextual menu
provides the command Refresh this controller. This command requests
more detailed information from the selected controller.
NOTE: The Refresh this controller command can also refresh the
information of other controllers.
Remove inactive controllers from Controllers that do not respond to a network scan are marked as inactive
list. in the list. This is indicated by a red cross being added to the controller
icon. Click this button to remove the controllers that are marked as
inactive controllers from the list.
NOTE: A controller can be marked as inactive even if this is not the case.
The contextual menu that opens if you right-click a controller in the list
provides two other commands for removing controllers:
 The Remove selected controller from list command allows you to
remove only the selected controller from the list.
 The Remove all controllers from list command allows you to remove
all controllers simultaneously from the list.

106 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

Button Description
New Favorite... and Favorite 0 You can use Favorites to adjust the selection of controllers to your
personal requirements. This can help you keep track of many controllers
in the network.
A Favorite describes a collection of controllers that are recognized by a
unique identifier.
Click a favorite button (such as Favorite 0) to select or deselect it. If you
have not selected a favorite, all detected controllers are visible.
You can also access Favorites via the contextual menu. It opens upon
right-clicking a controller in the list.
Move the cursor over a favorite button in the toolbar to view the
associated controllers as a tooltip.

List of Controllers
The list of controllers in the middle of the Communication Settings tab of the device editor lists
those controllers that have sent a response to the network scan. It provides information on each
controller in several columns. You can adapt the columns displayed in the list of controllers
according to your individual requirements.
To achieve this, right-click the header of a column to open the Process columns dialog box.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 107
Common Device Editor Dialogs

You can create your own layout of this table. Click New, and enter a name for your layout. Shift
columns from the list of Possible columns to the list of Current columns and vice versa by clicking
the horizontal arrow buttons. To change the order of the columns in the Current columns list, click
the arrow up and arrow down buttons.

Configuring Communication Settings


To set the parameters for communication between the programming system and a controller,
proceed as follows:

Step Action
1 Select the controller in the list of controllers.
2 Right-click the controller entry and execute the command Edit communication settings... from
the contextual menu.
Result: The Edit communication settings dialog box opens with the settings of the controller.

NOTE: Most controllers provide a parameter (such as RemoteAccess) that helps prevent
changing communication parameters of the controller.

108 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

Step Action
3 Configure the communication parameters:
 Boot Mode
 FIXED: A fixed IP address is used according to the values entered below (IP address,
Subnet mask, Gateway).
 BOOTP: The IP address is received dynamically by BOOTP (bootstrap protocol). The
values below will be ignored.
 DHCP: The IP address is received dynamically by DHCP (dynamic host configuration
protocol). The values below will be ignored.
NOTE: Not all devices support BOOTP and/or DHCP.
 IP address
When configuring IP addresses, refer to the hazard message below.
This box contains the IP address of the controller. It is a unique address that consists of
four numbers in the range of 0...255 separated by periods. The IP address has to be unique
in this (sub)network.
 Subnet mask
The subnet mask specifies the network segment to which the controller belongs. It is an
address that consists of four numbers in the range of 0...255 separated by periods.
Generally, only the values 0 and 255 are used for standard subnet mask numbers.
However, other numeric values are possible. The value of the subnet mask is generally the
same for all controllers in the network.
 Gateway
The gateway address is the address of a local IP router that is located on the same network
as the controller. The IP router passes the data to destinations outside of the local network.
It is an address that consists of four numbers in the range of 0...255 separated by periods.
The value of the gateway is generally the same for all controllers in the network.
 To save the communication settings in the controller even if it is restarted, activate the
option Save settings permanently.
4 Click OK to transfer the settings to the controller.

Carefully manage the IP addresses because each device on the network requires a unique
address. Having multiple devices with the same IP address can cause unintended operation of
your network and associated equipment.

WARNING
UNINTENDED EQUIPMENT OPERATION
 Verify that all devices have unique addresses.
 Obtain your IP address from your system administrator.
 Confirm that the device’s IP address is unique before placing the system into service.
 Do not assign the same IP address to any other equipment on the network.
 Update the IP address after cloning any application that includes Ethernet communications to
a unique address.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 109
Common Device Editor Dialogs

Managing Favorites
To manage favorites in the list of controllers, proceed as follows:

Step Action
1 Select the controller in the list of controllers.
2 Right-click the controller and select one of the commands:
 New Favorite to create a new group of favorites.
 Favorite n in order to
 Add the selected controller to this list of favorites
 Remove the selected controller from this list of favorites
 Remove all controllers from this list of favorites
 Select a favorite
 Rename a favorite
 Remove a favorite

Encrypted communication Option


When the Encrypted communication option is selected, communication to the controller will be
encrypted.
NOTE:
The following prerequisites must be fulfilled to perform encrypted communication with a controller:
 The controller must support TLS (Transport Layer Security).
 A certificate must be available on the controller.

Consult the Programming Guide specific to your controller for information on the support of TLS.
The following scenarios are possible when you attempt to log into a controller using encrypted
communication:

If... Then ... Comment


If the controller does not support TLS Then a message will be displayed The login is denied.
(prerequisite 1 is not fulfilled) when you attempt to log into the
controller, indicating that the controller
does not support TLS.
If a certificate is not available on the Then a message will be displayed The login is denied.
controller (prerequisite 2 is not when you attempt to log into the
fulfilled) controller, indicating that encrypted
communication could not be initialized
successfully.

110 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

If... Then ... Comment


If both prerequisites are fulfilled Then a message will be displayed If you confirm with OK:
when you attempt to log into the  The login will be successful given
controller for the first time, requesting that the user password, if required,
you to install the (untrusted) controller is provided as well.
certificate to the local Controller  Communication to the controller
Certificates store of the PC running will be encrypted.
EcoStruxure Machine Expert.  The message will not be displayed
again.
If you click Cancel:
 The login will be denied.
 The message will be displayed
with every new attempt to log in.

Confirmed online mode Option


The Confirmed online mode option causes EcoStruxure Machine Expert to display a message
requiring confirmation when one of the following online commands is selected: Force values,
Login, Multiple download, Release force list, Single cycle, Start, Stop, Write values. To disable the
Confirmed online mode option and thereby delete the display of this message, clear this option.

Specifying Unique Device Names (NodeNames)


The term NodeName is used as a synonym for the term device name. Since nodenames are also
used to identify a controller after a network scan, manage them as carefully as IP addresses and
verify that each nodename is unique in your network. Having multiple devices assigned the same
nodename can cause unpredictable operation of your network and associated equipment.

WARNING
UNINTENDED EQUIPMENT OPERATION
 Ensure that all devices have unique nodenames.
 Confirm that the device’s nodename is unique before placing the system into service.
 Do not assign the same nodename to any other equipment on the network.
 Update the nodename after cloning any application that includes Ethernet communications to
a unique nodename.
 Create a unique nodename for each device that does not create it automatically, such as M241
and M251 controllers.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

Depending on the type of controller, the automatic creation of the NodeName (device name) may
differ in procedure. To create a unique name, some controllers integrate their IP address, others
use the MAC address of the Ethernet adapter. In this case, you do not have to change the name.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 111
Common Device Editor Dialogs

You can also assign a unique device name (NodeName) as follows:

Step Action
1 Right-click the controller in the list and execute the command Change device name... from the
contextual menu.
Result: The Change device name dialog box opens.
2 In the Change device name dialog box, enter a unique device name in the box New.
3 Click the OK button to confirm.
Result: The device name you entered is assigned to the controller and is displayed in the
column NodeName of the list.
NOTE: Device name and NodeName are synonymous.

Specifying the Connection Mode


The Connection Mode list at the lower left of the Communication Settings tab allows you to select
a format for the connection address you have to enter in the Address field.
The following formats are supported:
 Automatic (see page 112)
 Nodename (see page 113)
 IP Address (see page 113)
 IP Address (Fast TCP) (see page 114)
 Nodename via NAT (Remote TCP) (see page 114) (NAT = network address translation)
 IP Address via NAT (Remote TCP) (see page 116)
 Nodename via Gateway (see page 118)
 IP Address via Gateway (see page 121)
 Nodename via MODEM (see page 124)
 IP Address (PacDriveM only) (see page 114) (only available in service tools like Controller
Assistant)
NOTE: After you have changed the Connection Mode, it may be required to perform the login
procedure twice to gain access to the selected controller.

Connection Mode Automatic


If you select the option Automatic from the Connection Mode list, you can enter the nodename, the
IP address, or the connection URL (uniform resource locator) to specify the Address.
NOTE: Do not use spaces at the beginning or end of the Address.
If you have selected another Connection Mode and you have specified an Address for this mode,
the address you specified will still be available in the Address box if you switch to Connection Mode
→ Automatic.

112 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

Example:
Connection Mode → Nodename via NAT (Remote TCP) selected and address and nodename
specified

If you switch to Connection Mode → Automatic, the information is converted to a URL, starting with
the prefix enodename3://

If an IP address has been entered for the connection mode, the information is converted to a URL
starting with a prefix. For the Connection Mode → IP Address , the prefix etcp3:// is used. For
the Connection Mode → IP Address (Fast TCP) , the prefix etcp4:// is used. For example,
etcp4://<IpAddress>.
NOTE: In the Controller Assistant and the Diagnostics tools, an IP address can additionally have
the prefix etcp2://. This is only available for PacDrive M controllers.
If a nodename has been entered for the connection mode (for example, when Connection Mode
→ Nodename has been selected), the information is converted to a URL starting with the prefix
enodename3://. For example, enodename3://<Nodename>.

Connection Mode → Nodename


If you select the option Nodename from the Connection Mode list, you can enter the nodename of
a controller to specify the Address. The text box is filled automatically if you double-click a
controller in the list of controllers.
Example: Nodename: MyM238 ([Link])
If the controller you selected does not provide a nodename, the Connection Mode automatically
changes to IP Address, and the IP address from the list is entered in the Address box.

Connection Mode → IP Address


If you select the option IP Address from the Connection Mode list, you can enter the IP address of
a controller to specify the Address. The box is filled automatically if you double-click a controller in
the list of controllers.
Example: IP Address: [Link]
If the controller you selected does not provide an IP address, the Connection Mode automatically
changes to Nodename, and the nodename from the list is entered in the Address box.
NOTE: Enter the IP address according to the format
<Number>.<Number>.<Number>.<Number>

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 113
Common Device Editor Dialogs

Connection Mode → IP Address (Fast TCP)


If you select the option IP Address (Fast TCP) from the Connection Mode list, you can connect to
a controller using the TCP protocol. Enter the Target IP address/Port of the controller in the
respective field. You can adapt the default setting 11740 for the Port if you are using network
address translation (NAT).
Example: IP Address: [Link]
NOTE: Enter the IP address according to the format
<Number>.<Number>.<Number>.<Number>
If the controller is not listed in the list of controllers, click the Test button. If the controller sends a
response to the network scan, an entry for this controller is added to the list of controllers. This
entry is marked by the icon TCP being displayed in the first column.
NOTE: This function is not available for all supported controllers. Consult the Programming Guide
specific to your controller to find out whether it supports the IP Address (Fast TCP) connection
mode.

Connection Mode → IP Address (PacDriveM only)


If you select the option IP Address (PacDriveM only) from the Connection Mode list, you can enter
the IP address of a controller to specify the Address. The box is filled automatically if you double-
click a PacDrive M controller in the list of controllers.
Example: IP Address: [Link]
NOTE: Enter the IP address according to the format
<Number>.<Number>.<Number>.<Number>

Connection Mode → Nodename via NAT (Remote TCP)


If you select the option Nodename via NAT (Remote TCP) from the Connection Mode list, you can
specify the address of a controller that resides behind a NAT router in the network. Enter the
nodename of the controller, and the IP address or host name and port of the NAT router.

1 PC
2 NAT router
3 Target device

Example: NAT Address/Port: [Link]/1105 Target Nodename:


MyM238 ([Link])
NOTE: Enter a valid IP address (format <Number>.<Number>.<Number>.<Number>) or a valid
host name for the NAT Address.

114 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

Enter the port of the NAT router to be used. Otherwise, the default port 1105 is used.
The information you enter is interpreted as a URL that creates a remote TCP bridge - using
TCP block driver - and then connects by scanning for a controller with the given nodename on the
local gateway.
NOTE: The NAT router can be located on the target controller itself. You can use it to create a
TCP bridge to a controller.
You can also scan a remote network via a remote controller (bridge controller). To achieve this,
enter the NAT Address/Port, and click the refresh button right to the NAT Address/Port text field.
The controllers that send a response to the remote network scan are listed in the list of controllers.
Each of these entries is marked by the icon REM being displayed in the first column. To fill the list
with more detailed information, right-click a controller entry and execute the command Refresh this
controller. If the controller supports this function, further information on the controller is added to
the list. Consult the Programming Guide specific to your controller.

1 Refresh button
2 REM icon

In the following example, the bridge controller, controller 2, and controller 3 are scanned.

1 Local subnet
2 Remote subnet
3 Bridge controller
4 Controller 3
5 Controller 2
6 NAT router
7 PC

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 115
Common Device Editor Dialogs

Connection Mode → IP Address via NAT (Remote TCP)


If you select the option IP Address via NAT (Remote TCP) (NAT = network address translation)
from the Connection Mode list, you can specify the address of a controller that resides behind a
NAT router in the network. Enter the IP address of the controller, and the IP address or host name
and port of the NAT router.

1 PC
2 NAT router
3 Target device

Example: NAT Address/Port: [Link]/1105 Target IP Address: [Link]


NOTE: Enter a valid IP address (format <Number>.<Number>.<Number>.<Number>) or a valid
host name for the NAT Address.
Enter the port of the NAT router to be used. Otherwise, the default port 1105 is used.
Enter a valid IP address (format <Number>.<Number>.<Number>.<Number>) for the
Target IP Address.
The information you enter is interpreted as a URL that creates a remote TCP bridge - using
TCP block driver - and then connects by scanning for a controller with the given nodename on the
local gateway. The IP address is searched in the nodename (such as
MyController ([Link])) or by calling a service on each scanned device of the
gateway.
NOTE: The NAT router can be located on the target controller itself. You can use it to create a
TCP bridge to a controller.
You can also scan a remote network via a remote controller (bridge controller). To achieve this,
enter the NAT Address/Port, and click the refresh button right to the NAT Address/Port text field.
The controllers that send a response to the remote network scan are listed in the list of controllers.
Each of these entries is marked by the icon REM being displayed in the first column. To fill the list
with more detailed information, right-click a controller entry and execute the command Refresh this
controller. If the controller supports this function, further information on the controller is added to
the list. Consult the Programming Guide specific to your controller.

116 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

1 Refresh button
2 REM icon

In the following example, the bridge controller, controller 2, and controller 3 are scanned.

1 Local subnet
2 Remote subnet
3 Bridge controller
4 Controller 3
5 Controller 2
6 NAT router
7 PC

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 117
Common Device Editor Dialogs

Connection Mode → Nodename via Gateway


If you select the option Nodename via Gateway from the Connection Mode list, you can specify the
address of a controller that resides behind or close to a EcoStruxure Machine Expert gateway
router in the network. Enter the nodename of the controller, and the IP address or host name and
port of the EcoStruxure Machine Expert gateway router.

1 PC / HMI
2 PC / HMI / devices with installed EcoStruxure Machine Expert gateway
3 Target device

Example: Gateway Address/Port: [Link]/1217Target Nodename: MyPLC


NOTE: Enter a valid IP address (format <Number>.<Number>.<Number>.<Number>) or a valid
host name for the Gateway Address/Port:.
Enter the port of the gateway router to be used. Otherwise, the default EcoStruxure Machine
Expert gateway port 1217 is used.
Do not use spaces at the beginning or end and do not use commas in the Target Nodename box.
The information you enter is interpreted as a URL. The gateway is scanned for a device with the
given nodename that is directly connected to this gateway. Directly connected means in the
EcoStruxure Machine Expert gateway topology it is the root node itself or a child node of the root
node.
NOTE: The EcoStruxure Machine Expert gateway can be located on an HMI, destination PC, or
the local PC, making it possible to connect to a device that has no unique nodename but resides
in a subnet behind a EcoStruxure Machine Expert network.

118 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

The graphic shows an example that allows a connection from the PC to the target controller 3 (item
4 in the graphic) by using the address of hop PC2 (item 5 in the graphic) that must have a
EcoStruxure Machine Expert gateway installed.

1 Hop PC 1
2 Target controller 1: MyNotUniqueNodename
3 Target controller 2: MyNotUniqueNodename
4 Target controller 3: MyNotUniqueNodename
5 Hop PC 2
6 PC / HMI
7 Router
8 Ethernet

To verify whether the connection to a specific controller can be established, enter the Gateway
Address/Port, and click the Test button. If the controller sends a response to the network scan, an
entry for this controller is added to the list of controllers. This entry is marked by the icon GAT being
displayed in the first column.
To scan a specific gateway for available controllers, enter the Gateway Address/Port, and click the
refresh button right to the Gateway Address/Port text field. The controllers that send a response to
the gateway scan are listed in the list of controllers. Each of these entries is marked by the icon
GAT being displayed in the first column. To fill the list with more detailed information, right-click a
controller entry and execute the command Refresh this controller. If the controller supports this
function, further information on the controller is added to the list. Consult the Programming Guide
specific to your controller.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 119
Common Device Editor Dialogs

1 Refresh button
2 GAT icon

The gateway that is scanned can be located on a PC or on an HMI that can reside in the local or
in a remote subnet. In the following example, the bridge target controller 1 and target controller 2
are scanned.

1 Local subnet
2 Remote subnet
3 Target controller 1
4 Target controller 2
5 Gateway
6 PC
7 Ethernet

You can connect to the listed devices using the gateway.

120 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

Connection Mode → IP Address via Gateway


If you select the option IP Address via Gateway from the Connection Mode list, you can specify the
address of a controller that resides behind or close to a EcoStruxure Machine Expert gateway
router in the network. Enter the IP address of the controller, and the IP address or host name and
port of the EcoStruxure Machine Expert gateway router.

1 PC / HMI
2 PC / HMI / devices with installed EcoStruxure Machine Expert gateway
3 Target device

Example: Gateway Address/Port: [Link]/1217Target IP Address: [Link]


NOTE: Enter a valid IP address (format <Number>.<Number>.<Number>.<Number>) or a valid
host name for the Gateway Address/Port:.
Enter the port of the gateway router to be used. Otherwise, the default EcoStruxure Machine
Expert gateway port 1217 is used.
Enter a valid IP address (format <Number>.<Number>.<Number>.<Number>) for the
Target IP Address.
The information you enter is interpreted as a URL. The gateway is scanned for a device with the
given IP address. The IP address is searched in the nodename (such as
MyController ([Link])) or by calling a service on each scanned device of the
gateway.
NOTE: The EcoStruxure Machine Expert gateway can be located on an HMI, destination PC, or
the local PC. It is therefore possible to connect to a device that has no unique nodename but
resides in a subnet behind a EcoStruxure Machine Expert network.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 121
Common Device Editor Dialogs

The graphic shows an example that allows a connection from hop PC2 (item 5 in the graphic) that
must have a EcoStruxure Machine Expert gateway installed to the target controller 3 (item 4 in the
graphic).

1 Hop PC 1
2 Target controller 1: [Link]
3 Target controller 2: [Link]
4 Target controller 3: [Link]
5 Hop PC 2
6 PC
7 Router
8 Ethernet

To verify whether the connection to a specific controller can be established, enter the Gateway
Address/Port, and click the Test button. If the controller sends a response to the network scan, an
entry for this controller is added to the list of controllers. This entry is marked by the icon GAT being
displayed in the first column.
To scan a specific gateway for available controllers, enter the Gateway Address/Port, and click the
refresh button right to the Gateway Address/Port text field. The controllers that send a response to
the gateway scan are listed in the list of controllers. Each of these entries is marked by the icon
GAT being displayed in the first column. To fill the list with more detailed information, right-click a
controller entry and execute the command Refresh this controller. If the controller supports this
function, further information on the controller is added to the list. Consult the Programming Guide
specific to your controller.

122 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

1 Refresh button
2 GAT icon

The gateway that is scanned can be located on a PC or on an HMI that can reside in the local or
in a remote subnet. In the following example, the bridge target controller 1 and target controller 2
are scanned.

1 Local subnet
2 Remote subnet
3 Target controller 1
4 Target controller 2
5 Gateway
6 PC
7 Ethernet

You can connect to the listed devices using the gateway.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 123
Common Device Editor Dialogs

Connection Mode → Nodename via MODEM


If you select the option Nodename via MODEM from the Connection Mode list, you can specify a
controller that resides behind a modem line.

1 PC
2 PC / MODEM
3 Target modem
4 Target device
5 Phone line

To establish a connection to the modem, click the MODEM → Connect button. In the Modem
Configuration dialog box, enter the Phone number of the target modem and configure the
communication settings. Click OK to confirm and to establish a connection to the modem.
If the EcoStruxure Machine Expert gateway is stopped and restarted, any connection of the local
gateway is terminated. EcoStruxure Machine Expert displays a message that has to be confirmed
before the restart process is started.
After the connection to the modem has been established successfully, the MODEM button
changes from Connect to Disconnect. The list of controllers is cleared and refreshed scanning the
modem connection for connected controllers. You can double-click an item from the list of
controllers or enter a nodename in the Target Nodename: box to connect to a specific controller.
Click the MODEM → Disconnect button to terminate the modem connection and to stop and restart
the EcoStruxure Machine Expert gateway. The list of controllers is cleared and refreshed scanning
the Ethernet network.

124 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

Communication Settings in Simple Mode

Overview
The Communication Settings tab in simple mode is displayed when the mode Simple mode has
been selected for the parameter Communication page in the Tools → Options → Device editor
dialog box (see EcoStruxure Machine Expert, Menu Commands, Online Help). It provides a
graphic view to configure the parameters for the communication between device and programming
system.
The Communication Settings tab in simple mode contains an illustration of the programming
device, the present gateway, and the target device with the connection status.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 125
Common Device Editor Dialogs

Select a gateway and a target device in the selection fields. The list entries you can select are
determined by the Manage gateways and Manage favorite devices parameters.
You can enter the target device in different ways:
 By the IP address, for example [Link]
 By the device address, for example [056D]
 By the device name, for example MyDevice

NOTE: To search for a device via the device name, unique device names are required within the
network.
A status bullet at the right bottom of the gateway symbol indicates the communication status:

Color Description
Red Connection cannot be established.
Green Connection is established.
Black Connection state is not defined.

NOTE: Some communication protocols do not allow a periodic verification of the gateway. Thus,
the status cannot be displayed.
Click the status bullet of the target device to start a network scan for the device. However, this is
only possible if the gateway has not already started searching.

Description of the Elements


Elements of the Communication Settings tab in simple mode:

Element Description
Scan network... button Opens the Select Device dialog box that lists the
configured gateways and their associated devices.
Gateway list –
Add new gateway... Opens the Gateway dialog box for adding a new
gateway (see EcoStruxure Machine Expert, Menu
Commands, Online Help).
Manage gateways... Opens the Manage gateways dialog box showing an
overview of all gateways. In this dialog box, you can
add or remove gateways. You can change the order
of the gateway entries by using the buttons.
Configure local Opens the Gateway Configuration dialog box
gateway... (see EcoStruxure Machine Expert, Menu
Commands, Online Help). It enables you to set up the
block driver configuration for the local gateway.
Device list –
Add current device to Adds the defined device to the list of favorite devices.
favorites

126 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

Element Description
Manage favorite Opens a dialog box showing the list of favorite
devices... devices. In this dialog box, you can add or remove
devices or change the order of the entries. The
device at top of the list defines the default device.
Rename active device... Opens a dialog box for renaming the device.
Wink active device The connected controller flashes during login.
Send echo service EcoStruxure Machine Expert implements the echo
service that is similar to the ping tool.
In order to verify the quality of the network
connection, EcoStruxure Machine Expert sends five
echo data packets to the controller. The amount of
user data that is consecutively added to these
packets depends on the communication buffer size of
the controller.
A result message is displayed that indicates the
average round-trip delay time and the amount of user
data that has been echoed through the connection.
Store communication If this option is activated, EcoStruxure Machine
settings in project Expert can automatically restore the communication
settings, even if you are going to open the project on
another computer. If this option is not selected, the
settings are stored in the local EcoStruxure Machine
Expert options on your computer. In this case, you
must reconfigure them if you are going to use the
project on another computer.
Confirmed online mode If this option is activated, EcoStruxure Machine
Expert prompts the user for confirmation each time
one of the following online commands is to be
executed: Force values, Write values, Multiple
download, Release force list, Single cycle, Start,
Stop.
Filter network scans by If this option is activated, the list is reduced to those
target ID devices which have the same target ID as the device
configured in the project.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 127
Common Device Editor Dialogs

Communication Settings in Classic Mode

Overview
The Communication Settings tab in classic mode is displayed when the mode Classic mode has
been selected for the parameter Communication page in the Tools → Options → Device editor
dialog box (see EcoStruxure Machine Expert, Menu Commands, Online Help). It allows you to
configure the parameters for the communication between device and programming system.
The Communication Settings tab in classic mode provides a tree structure to configure the
parameters:

This tab is divided in 2 parts:


 The left part shows the configured gateway channels in a tree structure.
 The right part shows the corresponding data and information.

128 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

Description of the Tree Structure


When you create the first project on your local system, the local Gateway is already available as a
node in the tree. This gateway is started automatically during system start.
The settings of this gateway are displayed in the right part of the window:
Example:
Device Name: Gateway-1
Port: 1217
IP-Address: [Link]
Driver: TCP/IP
A status bullet at the bottom right of the gateway symbol indicates the status of the connection:

Color Description
Red Connection cannot be established.
Green Connection is established.
Black Connection state is undefined.

NOTE: Some communication protocols do not allow a periodic verification of the gateway. Thus,
the status cannot be displayed.
Indented below the Gateway node (open/close via the +/- sign), you will see entries for the devices
which are reachable through this gateway. The device entries are preceded by a symbol.
Entries with a target ID different to that of the device configured in the project, are displayed in gray
font. To obtain an up-to-date list of the available devices, use the button Scan network.

The device nodes consist of a symbol followed by the node name and the node address. In the
right part of the window, the respective Device Name, Device Address, Number of Channels,
Target ID, Target Name, Target Type, Target Vendor, and Target Version are shown.
In the Select the network path to the controller field, the gateway channel is specified automatically
by selecting the channel in the tree structure.
NOTE: The parameter Number of Channels displays the number of channels that is supported by
the selected controller. You cannot monitor online the number of channels that are being used.
A channel is a connection to a client (such as Diagnostics, Logic Builder, WebVisu, OPC, HMI).
Depending on the communication service, a client may occupy more than one channel for a short
time. When all channels supported by the controller are being used, Logic Builder displays the
message Connection denied by device: All available communication channels are already in use.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 129
Common Device Editor Dialogs

Filter and Sorting Function


You can filter and sort the gateway and device nodes displayed in the tree by the selection boxes
in the right part of the tab:
 Filter: Allows you to reduce the entries of the tree structure to those devices with a Target ID
matching that of the device configured in the project.
 Sorting order: Allows you to sort the entries of the tree structure according to the Name or Node
Address in alphabetical or ascending order.

Description of the Buttons / Commands


For changing the communication configuration, the following buttons or commands are available:

Button / Command Description


Set active path This command sets the selected communication channel as the active path
to the controller. See the description of the Set Active Path command.
Double-clicking the node in the tree structure has the same effect.
Add gateway... This command opens the Gateway dialog box where you can define a
gateway to be added to the configuration.
See the description of the Add Gateway command (see EcoStruxure
Machine Expert, Menu Commands, Online Help).
Add device... This command opens the Add Device dialog box where you can manually
define a device to be added to the selected gateway entry (Consider the
Scan network functionality).
See the description for adding devices (see page 69).
Edit Gateway... This command opens the Gateway dialog box for editing the settings of the
selected gateway.
See the description of the Edit Gateway... command (see EcoStruxure
Machine Expert, Menu Commands, Online Help).
Delete selected Device This command removes the selected device from the configuration tree.
Scan for device by address This command scans the network for devices which have the address
specified here in the configuration tree. Those which are found will then be
represented in the gateway with the specified node address complemented
by their name. The scan refers to devices below that gateway in whose tree
an entry is selected.
By default, the command is not available in the menus. Add this command
via the Tools → Customize menu (see EcoStruxure Machine Expert, Menu
Commands, Online Help).
Scan for device by name This command scans the network for devices which have the names
specified here in the configuration tree (case-sensitive search). Those
which are found will then be represented in the gateway with the specified
name complimented by their unique node address. The scan refers to
devices below that gateway in whose tree an entry is selected.
By default, the command is not available in the menus. Add this command
via the Tools → Customize menu (see EcoStruxure Machine Expert, Menu
Commands, Online Help).

130 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

Button / Command Description


Scan for device by IP address This command scans the network for devices which have the IP address
specified here in the configuration tree. Those which are found will then be
represented in the gateway with the specified node address complimented
by their name. The scan refers to devices below that gateway in whose tree
an entry is selected.
By default, the command is not available in the menus. Add this command
via the Tools → Customize menu (see EcoStruxure Machine Expert, Menu
Commands, Online Help).
Send echo service EcoStruxure Machine Expert implements the echo service that is similar to
the ping tool.
In order to verify the quality of the network connection, EcoStruxure
Machine Expert sends five echo data packets to the controller. The amount
of user data that is consecutively added to these packets depends on the
communication buffer size of the controller.
A result message is displayed that indicates the average round-trip delay
time and the amount of user data that has been echoed through the
connection.
Configure the local gateway This command opens a dialog box for the configuration of a local gateway
and therefore provides an alternative to manual editing the file
[Link].
See the description of the Configure the local gateway... command
(see EcoStruxure Machine Expert, Menu Commands, Online Help).
Scan network This command starts a search for available devices in your local network.
The configuration tree of the concerned gateway will be updated
accordingly.

Description of the Options


Two options are available below the tree structure:

Option Description
Don't store communication Activate this option if the network path definition should not be stored in the
settings in project project, but in the local option settings on your computer. Therefore, the
path setting is restored if the project is reopened on the same computer. It
will have to be redefined if the project is used on another system.
Confirmed online mode Activate this option if the user should be prompted for confirmation when
selecting one of the following online commands: Force values, Multiple
download, Release force list, Single cycle, Start, Stop, Write values.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 131
Common Device Editor Dialogs

Configuration

Overview
The Configuration view is only available in the device editor if the option Show generic device
configuration views in the Tools → Options → Device editor dialog box is activated. The
Configuration view shows the device-specific parameters, and, if allowed by the device description,
provides the possibility to edit the parameter values.
Configuration view of the device editor

The view contains the following elements:

Element Description
Parameter Parameter name, not editable
Type Data type of parameter, not editable
Value Primarily, the default value of the parameter is displayed directly or
by a symbolic name. If the parameter can be modified (this depends
on the device description, non-editable parameters are displayed as
gray-colored), click the table cell to open an edit frame or a selection
list to change the value. If the value is a file specification, the dialog
box for opening a file opens by double-clicking the cell. It allows you
to select another file.
Default Value Default parameter value, not editable
Unit Unit of the parameter value (for example: ms for milliseconds), not
editable
Description Short description of the parameter, not editable

132 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

Parameter

Overview
The Parameter view displays the controller-specific parameters in a table. You can edit the Value
of those parameters that are defined as editable in the device description. This function is not
available for all supported controllers. Consult the Programming Guide specific to your controller
for further information.
The view contains the following elements:

Element Description
Parameters Indicates the parameter name, not editable.
Type Indicates the data type of the parameter, not editable.
Value The default value of the parameter is displayed directly or by a
symbolic name.
If the value can be modified, double-click the field to open an edit
frame, a selection list, or a file selection dialog box.
Parameters that are not defined as editable in the device description
are displayed as gray-colored in this list.
Default Value Indicates the default parameter value as defined in the device
description, not editable
Unit Indicates the unit of the parameter value (for example: ms for
milliseconds), not editable.
Description Indicates the short description of the parameter as defined in the
device description, not editable.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 133
Common Device Editor Dialogs

Applications

Overview
The Applications view of the device editor serves to scan and to remove applications on the
controller. Information on the content of the application can be available as well as some details on
the application properties.

Description of the Elements


The Applications view provides the following elements:

Element Description
Applications on the PLC This text box lists the names of applications which have been found
on the controller during the last scan (by clicking Refresh List).
If no scan has been executed yet or if a scan is not possible because
no gateway is configured (see page 125) for a connection, an
appropriate message is displayed.
Remove Click these buttons to remove the application currently selected in
Remove All the list or all applications from the controller.
Details Click this button to open a dialog box showing the information as
defined in the Information tab of the Properties dialog box of the
application object.
Content If, in the View → Properties → Application build options, the option
Download Application Info is activated for the application object
(see EcoStruxure Machine Expert, Menu Commands, Online Help),
then additional information on the content of the application is loaded
to the controller.
Click the Content button to view the different POUs, in a comparison
view. Upon several downloads, this information allows you to
compare the code of the new application with that already available
on the controller. This provides more information for decisions on
how to log in. For further information, refer to the description of the
Login command.
Refresh List Click this button to scan the controller for applications. The list will be
updated accordingly.

134 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

Verifications Before Loading an Application to the Controller


The following verifications are performed before an application is loaded to the controller:
 The list of applications on the controller is compared with those available in the project. If
inconsistencies are detected, the appropriate dialog boxes are displayed for either loading the
applications not yet available on the controller, or for removing other applications from the
controller.
 POUs externally implemented in the application to be loaded are verified as to whether they are
also available on the controller. If they are not available on the controller, an appropriate
message (unresolved reference(s)) will be generated in a message box as well as in the
Messages view if the option Download is selected.
 The parameters (variables) of the POUs of the application to be loaded are compared with those
of the same-named POUs of the application already available on the controller (validation of
signatures). In case any inconsistencies are detected, an appropriate message (signature
mismatch(es)) will be generated in a message box as well as in the Messages view if the option
Download is selected.
NOTE: If in the View → Properties → Application build options the option Download Application
Info is activated, additional information on the content of the application will be loaded to the
controller. See the description of the Content button in the previous table.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 135
Common Device Editor Dialogs

Synchronized Files

Overview
The Synchronized Files view of the device editor lists the files that are downloaded to the controller
when the application is downloaded:
 External files, for example, that were added to an application.
 Implicit files, such as the source code archive file, are displayed only in this view if the time of
download is configured and the option Show implicit files for application download on the editor
of a PLC is selected in the Tools → Options → Device Editor dialog box (see EcoStruxure
Machine Expert, Menu Commands, Online Help).
This function is not available for all supported controllers. Consult the Programming Guide specific
to your controller for details on this function.

Description of the Elements


The Synchronized Files view provides the following elements:

Element Description Example


File name Name of the file below the application, or direct [Link]
name of the implicitly transferred file (for example,
[Link]).
Double-click the file name to open the file.
Host path Storage location or original location of the file. D:\Proj1\Files
Double-click the path to open the directory in the
Windows Explorer.
Time interval Time interval for updating the file on the controller. After download / online
change of the
application.
Information Additional information, depending on the object. Object: external file
Origin Type of origin of the file. External file objects,
Source code download
provider

136 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

Files

Overview
The Files view of the device editor serves to transfer files between the host and the controller. You
can choose any file from a directory of the local network to copy it to the file directory of the
currently connected runtime system, or vice versa.
This view is divided in two parts:
 The left part shows the files on the Host.
 The right part shows the files on the Runtime system.

Description of the Elements


The Files view provides the following elements:

Element Description
Updates the Runtime list.

Creates a new folder in which you can copy the files.

Removes the selected files or folders from the list.

Location Specifies the folder of the respective file system that will be used for
the file transfer.
Select an entry from the list or browse in the file system tree.
<< >> File transfer between EcoStruxure Machine Expert and controller
(see paragraph below).

For the directories in the file trees there are the following variants:

Element Description
Normal file directory.

Placeholder file directory, defined in the configuration of the runtime


system of the controller.

Implicitly created placeholder file directory of the runtime system of


the controller.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 137
Common Device Editor Dialogs

File Transfer Between EcoStruxure Machine Expert and Controller

Step Action Comment


1 Select the files to be copied in the file system Multiple selection is possible. You can even
tree. select a folder in order to copy the files
contained within.
2 Click the button >> or << to transfer the To transfer in this context means to copy. So, if
selected files to the directory set in the runtime a file is not yet available in the runtime directory,
system. it will be created there. However, if it already
exists, it will be overwritten.
If a file with the given name is already available
and is write-protected, an appropriate message
is generated.

138 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

Log

Overview
The Log view of the device editor is used to display the events which have been logged on the
runtime system of the controller.
This concerns:
 Events at system start or shutdown (loaded components and their versions)
 Application download and boot project download
 Customer-specific entries
 Log entries of I/O drivers
 Log entries of the data server

Description of the Elements


The Log view provides the following elements:

Element Description
Severity The events of the log are grouped in four categories:
 warning
 error
 exception
 information

The buttons in the bar above the listing display the number
of loggings in the respective category. Click the buttons to
switch on or off the display of the entries of each category.
Time Stamp Date and time:
Example: 13.01.2007 09:48.
Description Description of the event:
Example: <Application> started
Component Choose a particular component in order to obtain only
displayed log entries regarding this component. The default
setting is <All components>.
Logger The selection list provides the available loggings. The default
setting is <Default Logger>, which is defined by the runtime
system.
Updates the list.

Exports the list to an XML file. The dialog box for saving a file
opens. The file filter is set to xml-files (*.xml). The log file is
stored with the specified file name with extension .XML in the
chosen directory.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 139
Common Device Editor Dialogs

Element Description
Displays log entries stored in an XML file which may have
been exported as described above. The dialog box for
browsing for a file opens. The filter is set to xml-files (*.xml).
Choose the desired log file. The entries of this file are
displayed in a separate window.
Clears the log table by removing the displayed entries.

Offline-Logging This option is not used in EcoStruxure Machine Expert.


UTC Time Activate this option to display the time stamp of the runtime
system as it is (without conversion). If deactivated, the time
stamp of the local time of the computer is displayed
(according to the time zone of the operating system).
NOTE: In order to display the time stamp in UTC (Universal
Time Coordinated), you must set the time of the controller to
UTC time beforehand (also refer to the Services tab of your
controller configuration).

Troubleshooting
In case an error is detected and displays the text *SOURCEPOSITION*, you can open the
respective function by double-click or by executing the command Show source code in editor from
the contextual menu. The cursor marks the relevant position. You can also use the project archive
including the Download information files and the exported log file for diagnostics. In case of
protected functions, the message The source code is not available for <function name> is
displayed.

140 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

PLC Settings

Overview
The PLC settings view of the device editor is used to configure general settings for the controller.

Description of the Elements


The PLC settings view provides the following elements:

Element Description
Application for I/O handling Define here the application assigned to the device in the Devices
tree that will be monitored for the I/O handling. For EcoStruxure
Machine Expert, there is only one application available.
PLC settings area
Update IO while in stop Note for PacDrive controllers: Supported by TM5 / TM7 IOs but not
by controls or drive based IOs.
If this option is activated (default), the values of the input and output
channels are updated when the controller is stopped. In case of
expiration of the watchdog, the outputs are set to the defined default
values.
Behaviour for outputs in Stop From the selection list, choose one of the following options to define
how the values at the output channels are handled in case of
controller stop:
 Keep current values
The present values will not be modified.
 Set all outputs to default
The default values resulting from the mapping will be assigned.
 Execute program
You can determine the outputs behavior by a program available
within the project. Enter the name of this program here and it will
be executed when the controller gets stopped. Click the button ...
to use the Input Assistant for this purpose.
Always update variables Global definition, if the I/O variables are updated in the bus cycle
task. This setting takes effect for the I/O variables of the slaves and
modules only if their update setting is defined as Disabled.
 Disabled (update only if used in a task): The I/O variables are
only updated if they are used in a task.
 Enabled 1 (use bus cycle task if not used in any task): The I/O
variables are updated in the bus cycle task if not used in any
other task.
 Enabled 2 (always in bus cycle task): All variables are updated in
every cycle of bus cycle task, regardless of whether they are
being used or whether they are mapped to an input or to an
output channel.
You can set this option separately for each device in the I/O Mapping
dialog (see page 160).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 141
Common Device Editor Dialogs

Element Description
Bus cycle options area
Bus cycle task The selection list offers the tasks defined in the Task Configuration
of the active application (for example, MAST). The default setting
MAST is entered automatically.
<unspecified> means that the task is selected according to
controller-internal settings, which are therefore controller-
dependent.

NOTE: Setting the bus cycle task to <unspecified> may cause unintended behavior of your
application. Consult the Programming Guide specific to your controller.

WARNING
UNINTENDED EQUIPMENT OPERATION
Do not set the Bus cycle task to <unspecified>, unless you understand the bus cycle task settings
of the controller.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

Additional Settings

Element Description
Generate force variables for IO This setting is only available if supported by the device. Consult the
mapping: Programming Guide specific to your controller for further
information.
If the option is activated, for each I/O channel, which is assigned to
a variable in the I/O Mapping dialog box, 2 global variables will be
created as soon as the application is built. These variables can be
used in an HMI visualization for forcing the I/O value. For further
information, refer to the I/O Mapping chapter (see page 155).
Enable diagnosis for device The library CAA Device Diagnosis is added to the project
automatically. For each device, a function block is generated in the
Applications tree. If the function block already exists, an extended
FB is used (for example, EtherCAT) or an additional function block
instance is added. This function block contains the general
implementation for the device diagnostics. By use of these function
block instances, the status of the devices can be retrieved in the
application. Furthermore, detected errors can be evaluated. The
library also provides functions for the programmatical evaluation of
the Devices tree (for example, search in child devices or jump to the
parent device). For detailed information, see the PDF document
CAA Device Diagnosis which is part of the library.
Show I/O warnings as errors Warnings concerning the I/O configuration are dumped as detected
errors.

142 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

Users and Groups

Overview
The Users and Groups view of the device editor is provided for devices supporting device Users
and Groups management. If supported by the device, you can view and edit the Users and Groups
management for the device. Thereafter, you can assign rights to allow certain user groups to
access objects on the controller at runtime by assigning Access Rights.
For the user management at the project level, refer to the Project → User Management →
Permissions... command (see EcoStruxure Machine Expert, Menu Commands, Online Help).
The device Users and Groups management can be pre-defined in the device description.
As in the project user management, users have to be members of at least one user group. Only
user groups can be assigned specific access rights (see page 148).
For managing Users and Groups, you have to login as Administrator user.
NOTE: It is not intended that the Users and Groups feature be used to protect the EcoStruxure
Machine Expert project against malicious access, but rather to help prevent mistakes from trusted
users.
If you want to protect your entire project, activate the option Enable project file encryption in the
Project Settings → Security dialog box (see EcoStruxure Machine Expert, Menu Commands,
Online Help).
If you want to protect only a part of your code inside the project, put this code inside a compiled
library (see EcoStruxure Machine Expert, Menu Commands, Online Help).

CAUTION
UNAUTHENTICATED, UNAUTHORIZED ACCESS
 Do not expose controllers and controller networks to public networks and the Internet as much
as possible.
 Use additional security layers like VPN for remote access and install firewall mechanisms.
 Restrict access to authorized people.
 Change default passwords at start-up and modify them frequently.
 Validate the effectiveness of these measurements regularly and frequently.
Failure to follow these instructions can result in injury or equipment damage.

NOTE: You can use the security-related commands (see EcoStruxure Machine Expert, Menu
Commands, Online Help) which provide a way to add, edit, and remove a user in the online Users
and Groups management of the target device where you are logged in.
NOTE: You must establish user access-rights using EcoStruxure Machine Expert software. If you
have cloned an application from one controller to another, you will need to enable and establish
user access-rights in the targeted controller.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 143
Common Device Editor Dialogs

NOTE: The only way to gain access to a controller that has user access-rights enabled and for
which you do not have the password(s) is by performing an Update firmware operation using an
SD card or USB memory key (refer to the Controller Assistant User Guide for further information),
depending on the support of your particular controller, or by running a script. Since the process of
running a script is specific to each controller, refer to the chapters File Transfer with SD Card or
File Transfer with USB Memory Key in the Programming Guide of the controller you are using. This
will effectively remove the existing application from the controller memory, but will restore the ability
to access the controller.

Toolbar of the Users and Groups View


The toolbar provides the following elements:

Element Description
Synchronization Click the Synchronization button to switch on / off the synchronization
between the editor and the Users and Groups management in the controller.
If Synchronization is not activated, then the editor contains a Users and
Groups management configuration that has been imported from disk, or it
does not contain any configuration at all.
If Synchronization is activated, the data displayed in the editor is continuously
synchronized with the Users and Groups management configuration on the
connected controller.
If you invoke Synchronization while the editor contains a Users and Groups
configuration that is not synchronized with the device, you are prompted to
decide what will be displayed in the editor:
 Upload from the device and overwrite the editor content: The Users and
Groups configuration from the controller is loaded to the editor. The
contents of the editor is overwritten.
 Download the editor content to the device and overwrite the user
management there: The configuration from the editor is loaded to the
controller. The contents of the controller is overwritten.
Import from disk Click the Import from disk button to open a dialog box for selecting and
importing a Users and Groups management configuration from the disk.
When you click the button in the Users and Groups view, the file type is set
to Device user management files (*.dum). The Import from disk is available
when you are in offline mode or Synchronization is deactivated.
Export to disk Click the Export to disk button to open a dialog box for saving a file to the disk.
The Users and Groups management configuration is saved as an XML file.
When you click the button in the Users and Groups view, the file type is set
to Device user management files (*.dum).
Device user Name of the user who is logged into the controller.

144 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

Users and Groups Management


The handling of the Users and Groups management dialogs is similar to that of the project user
management.
Users and Groups view of the device editor:

This view is divided in 2 parts:


 The upper part is dedicated to access management of Users.
 The lower part is dedicated to access management of Groups.

Editing or Viewing the Users and Groups Management Before any Users and Groups Have Been
Established
If the controller supports device Users and Groups management, proceed as follows during first
login:

Step Action Comment


1 Double-click the controller node in the Devices tree. Result: The device editor opens.
2 Select the Users and Groups view. –
3 Result: A dialog box opens prompting you to
Click the Synchronization button . decide whether the device Users and Groups
management should be activated.
4 Click Yes to confirm the dialog box and to activate Result: The Device user login dialog box opens.
device Users and Groups management.
5 Enter Administrator as User name and Password. Result: The Password expired! Please provide a
new one. dialog box opens.
6 Enter a new password and click OK to confirm. Result: The device Users and Groups
management is displayed in the editor view.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 145
Common Device Editor Dialogs

Setting up a New User in the Users and Groups Management of the Controller
If the controller supports device Users and Groups management, you can add a new user as
follows:

Step Action Comment


1 Double-click the controller node in the Devices tree. Result: The device editor opens.
2 Select the Users and Groups view. –
3 If you are not logged in to the controller yet, then
Click the Synchronization button to load the Users the dialog box Device User Login opens. It allows
and Groups management configuration from the you to enter the user name and the password.
controller to the editor. Result: The Users and Groups management
configuration of the controller is displayed in the
editor.
4 Click the Add button in the Users part of the Users and Result: The Add User dialog box opens.
Groups view.
5 Enter a Name for the new user and select a Default You can assign the user to other groups later.
group for the user from the list.
6 Enter a new password, confirm the password, and –
Specify whether the user can change the password
and whether the user has to change the password at
the first login.
7 Click OK to confirm and to close the Add User dialog Result: The new user is displayed in the Users
box. part as a new node and in the Groups part as a
new subnode of the selected default group.

146 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

Loading a Users and Groups Management From a *.dum File, Modifying it, and Later Downloading it to
the Controller

Step Action Comment


1 Double-click the controller node in the Devices tree. Result: The device editor opens.
2 Select the Users and Groups view. –
3 Click the Edit button, browse to the *.dum file that Result: The users and groups settings that are
contains the saved Users and Groups management, saved in the file are displayed in the editor.
and click Open to confirm.
4 Adapt the settings according to your requirements. –
5 A dialog box is displayed, prompting you to select
Click the Synchronization button to transfer the the suitable operation.
Users and Groups management configuration to the
controller.
6 Select the option Download the editor content to the Result: The Device user login dialog box is
device and overwrite the user management there. displayed.
7 Enter valid login data in order to log in to the controller. After successful login, the modifications are
transferred to the controller.

As long as the Synchronization button is


activated, modifications made in the editor are
automatically transferred to the controller.

Printing the Users and Groups Management Configuration


To print the settings of the Users and Groups view, execute the command Print from the File menu
or the command Document from the Project menu.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 147
Common Device Editor Dialogs

Access Rights

Overview
In the Access Rights view of the device editor, define the device access rights of device users to
objects in the controller.
In order for the Access Rights view to be available in the device editor of controllers, activate the
Show access rights page option in the Tools → Options → Device Editor dialog box
(see EcoStruxure Machine Expert, Menu Commands, Online Help). Furthermore, Users and
Groups management must be set up in the controller.
Access Rights view of the device editor

148 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

Modifying Access Rights to Controller Objects in the Users and Groups Management of the Controller
If the controller supports device Users and Groups management, you can assign access rights as
follows:

Step Action Comment


1 Double-click the controller node in the Devices tree. Result: The device editor opens.
2 Select the Access Rights view. –
3 If you are not logged in to the controller
Click the Synchronization button to load the yet, then the dialog box Device User
Access Rights management configuration from the Login opens. It allows you to enter the
controller to the editor. user name and the password.
Result: The Access Rights management
configuration of the controller is
displayed in the editor.
4 In the Objects tree structure on the left-hand side, Result: In the Rights area on the right-
select the object. hand side, the access rights of the
selected object are displayed in a table
for the configured user groups.
5 In the Rights table, double-click the right you want to If the selected object has child objects, a
modify. dialog box is displayed, prompting you
whether you want to modify the rights for
the child objects at the same time.
6 Click Yes or No to modify the rights of the child objects Result: The rights are switched from
and to close the dialog box. allowed to not allowed or vice versa.
The symbol in the table cell is modified
accordingly.
Rights that are set explicitly are
displayed in the table by green or red
symbols.
Rights that are inherited from a parent
object are displayed in the table by gray
symbols.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 149
Common Device Editor Dialogs

Toolbar of the Access Rights View


The toolbar provides the following elements:

Element Description
Synchronization Click the Synchronization button to switch on / off the synchronization
between the editor and the Access Rights management in the controller.
If Synchronization is not activated, then the editor contains an Access Rights
management configuration that has been imported from disk, or it does not
contain any configuration at all.
If Synchronization is activated, the data displayed in the editor is continuously
synchronized with the Access Rights management configuration on the
connected controller.
If you invoke Synchronization while the editor contains an Access Rights
management configuration that is not synchronized with the device, you are
prompted to decide what will be displayed in the editor:
 Upload from the device and overwrite the editor content: The Access
Rights configuration from the controller is loaded to the editor. The
contents of the editor is overwritten.
 Download the editor content to the device and overwrite the user
management there: The configuration from the editor is loaded to the
controller. The contents of the controller is overwritten.
Load from disk Click the Load from disk button to open a dialog box for selecting and
importing a user access rights management configuration from the disk.
When you click the button in the Access Rights view, the file type is by default
set to Device rights management files (*.drm).
Save to disk Click the Save to disk button to open a dialog box for saving a file to the disk.
When you click the button in the Access Rights view, the file type is by default
set to Device rights management files (*.drm).
Device user Name of the user who is logged into the controller.

Objects Area
In the Objects tree structure on the left-hand side, the objects are listed that allow actions to be
executed in runtime mode. The objects are assigned by their object source. They are partially
sorted in object groups. In the Rights area on the right-hand side, you can configure the access
options of the selected object for a user group.
On the top level of the Objects tree structure there are two object categories grouped in folders:
 File system objects
 Runtime system objects

Indented below the object categories, there are further subnodes. The subnode Device, for
example, can, in turn, have the following subnodes:
 Logger
 PlcLogic
 Settings
 UserManagement

150 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

Rights Area
In the Rights area on the right-hand side, the access rights of the selected object are displayed in
a table. For every user group, it displays the rights configured for the possible actions on the
selected object.
The following actions can be configured for the object:
 Add/Remove
 Modify
 View
 Execute

The symbols represent the access rights:

Icon Description
Access (action) is permitted explicitly.

Access (action) is denied explicitly.

The access right has been inherited from the parent object.

Access has not been permitted or denied explicitly, even for the parent
object. No access is possible

No icon Several objects with different access rights are selected.

To modify an access right, click the symbol.

Printing the Access Rights Definition


To print the settings of the Access Rights view, execute the command Print from the File menu or
the command Document from the Project menu.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 151
Common Device Editor Dialogs

Task Deployment

Overview
The Task deployment view of the device editor shows a table with inputs/outputs and their
assignment to the defined tasks. Before the information can be displayed, the project has to be
compiled and the code has to be generated. This information helps in troubleshooting in case that
the same input/output is updated in different tasks with different priorities.
Task deployment of the device editor

The table shows the tasks sorted by their task priority. Click the column heading (task name) to
display only the variables assigned to this task. To show all variables again, click the first column
(I/O channels).
To open the I/O mapping table of a channel, double-click the input or output.
A blue arrow indicates the task of the bus cycle.
In the example above, the variable usiBK5120Out AT %QB0 is used in 2 different tasks. In this
situation, the output, set by one task, can be overwritten by the other task: this can lead to an
undefined value. In general, it is ill-advised to write output references in more than one task, as it
makes the program difficult to debug and often may lead to unintended results in the operation of
your machine or process.

WARNING
UNINTENDED EQUIPMENT OPERATION
Do not write to an output variable in more than one task.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

152 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

Status

Overview
The Status view of the device editor shows status information (for example, Running, Stopped) and
specific diagnostic messages from the respective device; also on the used card and the internal
bus system.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 153
Common Device Editor Dialogs

Information

Overview
The Information view of the device editor shows some general information on the device currently
selected in the Devices tree: Name, Vendor, Type, Version number, Order Number, Description,
Image.

154 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

Section 6.2
I/O Mapping

I/O Mapping

What Is in This Section?


This section contains the following topics:
Topic Page
I/O Mapping 156
Working with the I/O Mapping Dialog 158
I/O Mapping in Online Mode 163
Implicit Variables for Forcing I/Os 164

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 155
Common Device Editor Dialogs

I/O Mapping

Overview
The I/O Mapping view of the device editor is named <devicetype> I/O Mapping (for example,
PROFIBUS DP I/O Mapping). It serves to configure an I/O mapping of the controller. This means
that project variables used by the application are assigned to the input, output, and memory
addresses of the controller.
Define the application which should handle the I/Os in the PLC settings view (see page 141).
NOTE: If supported by the device, you can use the online configuration mode to access the I/O
hardware without having an application loaded beforehand. For further information, refer to the
description of the Online Config Mode (see EcoStruxure Machine Expert, Menu Commands,
Online Help).
See the following chapters:
 Working with the I/O Mapping Dialog (see page 158)
 I/O Mapping in Online Mode (see page 163)
 Implicit Variables for Forcing I/Os (see page 164)

General Information on Mapping I/Os on Variables


Whether an I/O mapping can be configured for the present device depends on the device. It can
be that the view is only used to show the implicitly created device instance. See description of the
IEC objects (see page 162).
Basically, note the following for the mapping of I/Os to variables:
 Variables requiring an input cannot be accessed by writing.
 An existing variable can only be mapped to one input.
 Instead of using the I/O Mapping view, you can also assign an address to a variable via the
AT declaration (see page 632).
However, consider the following:
 You can use AT declarations only with local or global variables; not however, with input and
output variables of POUs.
 The possibility of generating force variables for I/Os (refer to Implicit Variables for Forcing
I/Os (see page 164)) will not be available for AT declarations.
 If AT declarations are used with structure or function block members, all instances will
access the same memory location. This memory location corresponds to static variables in
classic programming languages such as C.
 The memory layout of structures is determined by the target device.
 For each variable which is assigned to an I/O channel in the I/O Mapping view, force variables
can be created during a build run of the application (see EcoStruxure Machine Expert, Menu
Commands, Online Help). You can use them for forcing the input or output value during the
commissioning of a machine, for example, via a visualization. Refer to the chapter Implicit
Variables for Forcing I/Os (see page 164).

156 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

Automatic I/O Mapping


The automatic I/O mapping function automatically creates IEC variables as soon as a device or
module with I/O modules is added to the Devices Tree and maps them on each input and/or output.
By default, the function is activated.
You can deactivate and configure the function in the Project → Project Settings → Automatic I/O
mapping dialog box.
The dialog box provides the following elements:

Element Description
Create variable on I/Os mapping Select or deselect this option to activate or deactivate the automatic
I/O mapping function.
Mapping area
Bitwise Select this option to create variables for each bit.
Module-wise Select this option to create a variable for each module, not for the
individual bits.
Naming Rule area
text box Enter the following characters preceded by a # symbol to specify the
parts the variable name will consist of:
 Enter #X to integrate an i for inputs and a q for outputs in the
variable name.
 Enter #T to integrate the prefix code for the respective data type
of the variable in the variable name. The prefixes that are used for
the different data types are listed in the Recommendations on the
Naming of Identifiers chapter (see page 624).
 Enter #D to integrate the name of the device in the variable name.
 Enter #C to integrate the name as defined in the Channel column
in the variable name.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 157
Common Device Editor Dialogs

Working with the I/O Mapping Dialog

Overview
The following is an illustration of the I/O Mapping tab of the device editor:

Description of the Elements in the Channels Area


The I/O Mapping tab provides the following elements in the Channels area if provided by the
device:

Element Description
Channel Symbolic name of the input or output channel of the device
Address Address of the channel, for example: %IW0
Type Data type of the input or output channel, for example: BOOL
If the data type is not standard, but a structure or bit field defined in the device
description, it will be listed only if it is part of the IEC standard. It is indicated
as IEC type in the device description. Otherwise, the entry of the table will be
empty.

158 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

Element Description
Default value Default value that is assigned to the channel when the controller is set to
STOP mode.
This column is only available if the option Set all outputs to default is selected
for the parameter Behaviour for outputs in Stop in the PLC Settings view of
the device editor (see page 141).
You can edit this field only if you are mapping to a new created variable or if
no mapping is specified. When you are mapping to an existing variable, the
initialization value of the variable is used as the default value.
NOTE: In case a “new” variable and an “existing” variable (by using the
AT declaration) are mapped to the same output, the initialization value of the
“existing” variable is used as default value.
Unit Unit of the parameter value, for example: ms for milliseconds
Description Short description of the parameter
Current Value Present value of the parameter, displayed in online mode

NOTE: Inputs and outputs that are not used in the application are not read by the controller in
online mode. To indicate that these inputs and outputs are not used, they are marked with a gray
background. Any values that might appear in these gray lines are invalid.

Modifying and Fixing Addresses


This function is not available for all supported controllers. Consult the Programming Guide specific
to your controller for further information.
You can modify and fix the displayed address of an output or input here in this tab. Use this to adapt
the addressing to a given hardware configuration or to keep the address value even if the order of
the modules is changed. By default, this would cause an automatic adaptation of the address
values.
Consider that depending on the device description, you can only modify the address of the input
or output, however, not that of its subelements (bit channels). Therefore, if an input or output is
represented here in the mapping table with a subtree, you can edit only the address field of the
uppermost entry (see the figure below: only the address field in the first line can be opened).
In order to fix the address value, select the entry in the Address column and press the SPACE bar
to open the edit field. Either modify the value or leave it unmodified and close the edit field via the
RETURN key. The address field is marked by an M symbol which indicates that the present value
is fixed.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 159
Common Device Editor Dialogs

If the value has been modified, the subsequent addresses (up to the next fixed address) will be
adapted correspondingly:

If you want to remove the fixation of the value, reopen the address edit field, delete the address
entry, and close with Enter. The address and the identified succeeding addresses will be set back
to the values they had before the manual modification. The M symbol will be removed.

Configuration of the I/O Mapping


Perform the I/O mapping by assigning the appropriate project variables to the device input and
output channels each in the Variable column.
 The type of the channel is already indicated in the Variable column by a symbol: for input,
for output. In this line, enter the name or path of the variable to which the channel should be
mapped. You can either map on an existing project variable or define a new variable, which then
will automatically be declared as a global variable.
 When mapping structured variables, the editor will prevent that both the structure variable (for
example, on %QB0) and particular structure elements (for example, in this case on %QB0.1 and
QB0.2 ) can be entered.
This means: When there is a main entry with a subtree of bit channel entries in the mapping
table (as shown in the figure below), then either in the line of the main entry a variable can be
entered or in those of the subelements (bit channels) never in both.
 For mapping on an existing variable, specify the complete path. For example: <application
name>.<pou path>.<variable name>';
Example: app1.plc_prg.ivar
For this purpose, it can be helpful to open the input assistant via the ... button. In the Mapping
column, the symbol will be displayed and the address value will be crossed out. This does
not mean that this memory address does not exist any longer. However, it is not used directly
because the value of the existing variable is managed on another memory location, and,
especially in case of outputs, no other already existing variable should be stored to this address
(%Qxx in the I/O mapping) in order to avoid ambiguities during writing the values.

160 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

See in the following example an output mapping on the existing variable xBool_4:

NOTE: When you are mapping to an existing variable, the initialization value of the variable is used
as the default value. You can edit the Default value field only if you are mapping to a new created
variable or if no mapping is specified.
 If you want to define a new variable, enter the desired variable name.
Example: bVar1

In this case, the symbol will be inserted in the Mapping column and the variable will be
internally declared as a global variable. From here, the variable will be available globally within
the application. The mapping dialog is another place for the declaration of global variables.
NOTE: Alternatively, an address can also be read or written within a program code, such as
in ST (structured text).
 Considering the possibility of changes in the device configuration, do the mappings within the
device configuration dialog.
NOTE: If a UNION is represented by I/O channels in the mapping dialog, it depends on the device
whether the root element is mappable or not.
If a declared variable of a given data type is larger than that to which it is being mapped, the value
of the variable being mapped will be assigned a truncated to the size of the mapped target variable.
For example, if the variable is declared as a WORD data type, and it is mapped to a BYTE, only
8 bits of the word will be mapped to the byte.
This implies that, for the monitoring of the value in the mapping dialog, the value displayed at the
root element of the address will be the value of the declared variable - as currently valid in the
project. In the subelements below the root, the particular element values of the mapped variable
will be monitored. However, only part of the declared value may be displayed among the
subelements.
A further implication is when you map a declared variable to physical outputs. Likewise, if you map
a data type that is larger than the output data type, the output data type may receive a truncated
value such that it may affect your application in unintended ways.

WARNING
UNINTENDED EQUIPMENT OPERATION
Verify that the declared data type that is being mapped to physical I/O is compatible with the
intended operation of your machine.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 161
Common Device Editor Dialogs

Element Description
Reset mapping Click this button to reset the mapping settings to the defaults
defined by the device description file.
Always update variables Definition if the I/O variables are updated in the bus cycle
task (see page 141). The default value is defined in the
device description.
 Use parent device settings: Update according to the
settings of the parent device.
 Enabled 1 (use bus cycle task if not used in any task):
The I/O variables are updated in the bus cycle task if not
used in another task.
 Enabled 2 (always in bus cycle task): The variables are
updated in every cycle of bus cycle task, regardless of
whether they are being used or whether they are mapped
to an input or to an output channel.

IEC Objects
This part of the tab is only available if implicitly a function block instance of a device has been
created, which can be accessed by the application (for example, in order to restart a bus or to poll
information). Whether such an instance is available and how it can be used, depends on the
controller. Consult the Programming Guide specific to your controller.

Bus Cycle Options


This configuration option will be available for devices with cyclic calls before and after reading
inputs or outputs. It allows you to set a device-specific bus cycle task (see page 141).
Per default, the parent bus cycle setting will be valid (Use parent bus cycle setting). This means
that is the Devices Tree will be searched for the next valid bus cycle task definition.
To assign a specific bus cycle task, select the desired one from the selection list. The list provides
the tasks currently defined in the application task configuration.

162 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

I/O Mapping in Online Mode

I/O Mapping in Online Mode


If a structure variable is mapped on the root element of the address (the uppermost in the tree of
the respective address in the mapping dialog), then in online mode no value will be displayed in
this line. If, however, for example, a DWORD variable is mapped to this address, then in the root
line, as well as in the bit channel lines indented below, the respective values will be monitored.
Basically, the field in the root line stays empty if the value is composed of multiple subelements.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 163
Common Device Editor Dialogs

Implicit Variables for Forcing I/Os

Overview
During the commissioning of a plant or a machine, it may be necessary to force I/Os. For this
purpose, you can generate special force variables for each I/O channel which is mapped on a
variable in the I/O Mapping tab of the device editor.
As a precondition the setting Generate force variables for IO mapping has to be activated in the
PLC settings tab. Then, at each build run of the application, for each mapped I/O channel,
two variables are generated according to the following syntax. Any empty spaces in the channel
name are replaced by underscores.
<devicename>_<channelname>_<IECaddress>_Force of type BOOL, for activating and
deactivating the forcing
<devicename>_<channelname>_<ECaddress>_Value of datatype of the channel, for defining the
value to be forced on the channel
These variables will be available in the input assistant in category Variables → IoConfig_Globals_-
Force_Variables. They can be used in any programming objects, in visualizations, symbol
configuration, and so on, within the programming system.
A rising edge at the force variable activates the forcing of the respective I/O with the value define
by the value variable. A falling edge deactivates the forcing. Deactivating by setting the force
variable back to FALSE is necessary before a new value can be forced.
Consider the restrictions listed below.

Example
If the mapping is completed as shown in figure I/O Mapping tab of the device editor (see page 158),
then at a build (F11) of the application, the following variables will be generated and be available
in the input assistant:
 Digitax_ST_Control_word_QW0_Force : BOOL;
 Digitax_ST_Control_word_QW0_Value : UINT;
 Digitax_ST_Target_position_QD1_Force : BOOL;
 Digitax_ST_Target_position_QD1_Value : DINT;
 Digitax_ST_Status_word_IW0_Force : BOOL;
 Digitax_ST_Status_word_IW0_Value : UINT;
 Digitax_ST_Position_actual_value_ID1_Force : BOOL;
 Digitax_ST_Position_actual_value ID1_Value : DINT;

164 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Common Device Editor Dialogs

Restrictions
 Only channels which are mapped on a variable in the I/O Mapping tab (i.e., a variable has to be
defined in the Variable column, no matter whether it is a new or an existing) can be forced by
the above described implicit variables.
 Unused inputs / outputs as well as those which are mapped via AT declaration in an application
program cannot be forced.
 The respective I/O channels have to be used in at least one task.
 Forced I/Os are not indicated in the monitoring (watch view, I/O mapping dialog). The value is
only used implicitly in the I/O driver for writing onto the device.
 Forced inputs are displayed correctly by the red force symbol (F), not however, forced
inputs/outputs.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 165
Common Device Editor Dialogs

166 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Program
EIO0000002854 06/2019

Part III
Program

Program

What Is in This Part?


This part contains the following chapters:
Chapter Chapter Name Page
7 Program Components 169
8 Task Configuration 245
9 Managing Applications 249

EIO0000002854 06/2019 167


Program

168 EIO0000002854 06/2019


EcoStruxure Machine Expert
Program Components
EIO0000002854 06/2019

Chapter 7
Program Components

Program Components

What Is in This Chapter?


This chapter contains the following sections:
Section Topic Page
7.1 Program Organization Unit (POU) 170
7.2 Function Block 194
7.3 Application Objects 215
7.4 Application 243

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 169
Program Components

Section 7.1
Program Organization Unit (POU)

Program Organization Unit (POU)

What Is in This Section?


This section contains the following topics:
Topic Page
POU 171
Adding and Calling POU Objects 172
Program 176
Function 178
Method 180
Property 183
Interface 185
Action 189
Transition 191
POUs for Implicit Checks 192

170 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

POU

Overview
The term Program Organizational Unit (POU) is used for all programming objects (programs,
function blocks, functions, etc.) which are used to create a controller application.
As defined in the IEC 61131 standard, a POU is a program, a function block, or a function.
However, in this document the term POU is used for programming elements in general that can
contain IEC code, such as methods, properties, interfaces etc. Whenever this document refers to
POUs in the more restricted sense as defined in IEC 61131, the term POU object is used.

POU Management
POUs which are managed in the Global node of the Applications tree are not device-specific but
they can be instantiated for the use on a device (application). For this purpose, program POUs
must be called by a task of the respective application.
But POU also is the name of a certain sub-category of these objects in the Add Object menu. At
this place, it just comprises programs, function blocks, and functions.
Therefore, a POU object in general is a programming unit. It is an object which is managed either
non-device-specifically in the Global node of the Applications tree or directly below an application
in the Applications tree. It can be viewed and edited in an editor view. A POU object can be a
program, function, function block.
It is possible to set certain Properties (such as build conditions, etc.) for each particular POU
object.
For a description on how to create a POU object, refer to the section Adding POU Objects to an
Application (see page 173). The POU objects you have created are added to the Assets view of
the Software catalog.
You can add a POU object available in the Assets view to the project in 2 different ways:
 Select a POU object in the Assets view and drag it to the suitable node in the Applications tree.
 Select a POU object in the Assets view and drag it to the logic editor view (see page 289).

Besides the POU objects, there are device objects used for running the program on the target
system (Resource, Application, Task Configuration etc.). They are managed in the Applications
tree.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 171
Program Components

Adding and Calling POU Objects

Introduction
You can add Program Organization Unit (POU) objects to your application in the Software catalog
→ Assets or in the Applications tree.
The different types of POU objects are:
 Program: It returns one or several values during operation. All values are retained from the last
time the program was run until the next. It can be called by another POU object.
 Function Block: It provides one or more values during the processing of a program. As opposed
to a function, the values of the output variables and the necessary internal variables shall persist
from one execution of the function block to the next. So invocation of a function block with the
same arguments (input parameters) need not always yield the same output values.
 Function: It yields exactly one data element (which can consist of several elements, such as
fields or structures) when it is processed. The call in textual languages can occur as an operator
in expressions.

172 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Adding POU Objects to an Application


To add a POU object to the application of the controller, proceed as follows:

Step Action
1 In the Software catalog → Assets → POUs section, select an Application node, click the green plus
button, and execute the command POU.... As an alternative, you can right-click the Application node
of the controller and choose Add Object → POU.
The two methods are also available in the Applications tree.
Result: The Add POU dialog box opens.

2 In the Add POU dialog box, assign a name to your POU object by typing a name in the text field
Name.
NOTE: The name must not contain any space characters. If you do not enter a name, a name is
given by default.
Assigning a meaningful name to a POU may ease the organization of your project.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 173
Program Components

Step Action
3 Select the type of POU object you want:
 Program
 Function Block:
a. If you want your function block to extend an already existing function block, select Extends and
click the browser to select the function block you want in the Input Assistant.
b. Click the OK button.
c. If you want your function block to implement an interface, select Implements and click the
browser to select the interface you want in the Input Assistant.
d. Click the OK button.
e. If your function block implements an interface, in the list box Method implementation language,
select the programming language you want for editing the methods and properties defined in
the implemented interface.
 Function:
a. Click the browse button to select the Return type you want in the Input Assistant.
b. Click the OK button.
4 From the list box Implementation Language, select the programming language you want for editing
your POU object.
5 Click the Open button.

Already defined POU objects are listed in the Software catalog → Assets → POUs section. You
can add them to your application, by dragging them to the Applications tree and dropping them on
an Application node. You can also drop a POU object on the logic editor view.

Assigning Programs to a Task


At least one program has to be assigned to a task. To add a program to a task, proceed as follows:

Step Action
1 Under the node Task Configuration of the controller, double-click the task to which you want to add
your program. In the Configuration tab, click Add Call.
Alternatively, in the Applications tree select the task to which you want to assign your program and
click the green plus button. Execute the command Program Call... from the list. Click the ... button.
Result: The Input Assistant dialog box is displayed.
2 In the tab Categories of the Input Assistant dialog box, select Programs.
3 Click to clear the check box Structured view.
4 In the Items panel, select the POU you want.
5 Click the OK button.

174 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Calling POUs
POUs can call other POUs. Recursion however is not allowed (a POU that calls itself).
When a POU assigned to an application calls another POU just by its name (without any
namespace (see page 866) added), consider the following order of browsing the project for the
POU to be called:

1. current application
2. Library Manager of the current application in the Tools tree
3. Global node of the Applications tree
4. Library Manager in the Global node of the Tools tree

If a POU with the name specified in the call is available in a library of the Library Manager of the
application as well as an object in the Global node of the Applications tree, there is no syntax for
explicitly calling the POU in the Global node of the Applications tree, just by using its name. In this
case move the respective library from the Library Manager of the application to the Library
Manager of the Global node of the Applications tree. Then you can call the POU from the Global
node of the Applications tree just by its name (and, if needed, that from the library by preceding the
library namespace).
Also refer to the chapter POUs for Implicit Checks (see page 192).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 175
Program Components

Program

Overview
A program is a POU object which returns one or several values during operation. All values are
retained from the last time the program was run until the next. However, there are not separate
instances of programs, unlike function blocks. When calling a function block, only the values in the
given instance of the function block are modified. The modifications are only affected when the
same instance is called again. Program value modifications will be retained until the program gets
called again even if called from another POU.

Adding a Program
To add a program to an existing application, select the application node in the Applications tree,
click the green plus button, and execute the command POU.... As an alternative, right-click the
Application node, and execute the command Add Object → POU from the contextual menu. To
add an application-independent POU, select the Global node of the Applications tree, and execute
the same commands.
In the Add POU dialog box select the Program option, enter a name for the program, and select
the desired implementation language. Click Open to confirm. The editor view for the new program
opens and you can start editing the program.

Declaring a Program
Syntax:
PROGRAM <program name>
This is followed by the variable declarations of input (see page 637), output (see page 638), and
program variables. Access variables are available as options as well.
Example of a program

176 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Calling a Program
A program can be called by another POU. However, a program call in a Function (see page 178)
is not allowed. There are no instances of programs.
If a POU has called a program and if the values of the program have been modified, these
modifications will be retained until the program gets called again. This applies even if it is called
from within another POU. Consider that this is different from calling a function block. When calling
a function block, only the values in the given instance of the function block are modified. The
modifications are only affected when the same instance is called again.
In order to set input and/or output parameters in the course of a program call, in text language
editors (for example, ST), assign values to the parameters after the program name in parentheses.
For input parameters, use := for this assignment, as with the initialization of variables
(see page 629) at the declaration position. For output parameters, use =>. See the following
example.
If the program is inserted via the Input Assistant using the option Insert with arguments in the
implementation view of a text language editor, it will be displayed automatically according to this
syntax with all parameters, though you do not necessarily have to assign these parameters.

Example for Program Calls


Program in IL:
CAL PRGexample (
in_var:= 33 )
LD PRGexample.out_var
ST erg
Example with assigning the parameters (Input Assistant using the option Insert with arguments):
Program in IL with arguments:
CAL PRGexample (
in_var:= 33 ,
out_var=> erg )
Example in ST
PRGexample(in_var:= 33);
erg := PRGexample.out_var;
Example with assigning the parameters (Input Assistant using the option Insert with arguments as
described previously):
PRGexample (in_var:=33, out_var=>erg );
Example in FBD
Program in FBD:

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 177
Program Components

Function

Overview
A function is a POU which yields exactly one data element (which can consist of several elements,
such as fields or structures) when it is processed. Its call in textual languages can occur as an
operator in expressions.

Adding a Function
To assign the function to an existing application, select the application node in the Applications
tree, click the green plus button, and execute the command POU.... As an alternative, right-click
the Application node, and execute the command Add Object → POU from the contextual menu.
To add an application-independent POU, select the Global node of the Applications tree, and
execute the same commands.
In the Add POU dialog box, select the Function option. Enter a Name (<function name>) and a
Return Data Type (<data type>) for the new function and select the desired implementation
language. To choose the return data type, click the button ... to open the Input Assistant dialog box.
Click Open to confirm. The editor view for the new function opens and you can start editing.

Declaring a Function
Syntax:
FUNCTION <function name> : <data type>
This is followed by the variable declarations of input and function variables.
Assign a result to the function. This means that the function name is used as an output variable.
Do not declare local variables as RETAIN or PERSISTENT in a function because this will have no
effect.
Example of a function in ST: this function takes 3 input variables and returns the product of the last
2 added to the first one.

178 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Calling a Function
The call of a function in ST can appear as an operand in expressions.
In IL, you can position a function call only within actions of a step or within a transition.
Functions (in contrast to a program or function block) contain no internal state information, that is,
invocation of a function with the same arguments (input parameters) always will yield the same
values (output). For this reason, functions may not contain global variables and addresses.

Example of Function Calls in IL


Function calls in IL;
LD 5
Fct 3 ,
22
ST result

Example of Function Calls in ST


result := fct1(5,3,22);

Example of Function Calls in FBD


Function calls in FBD:

Example:
fun(formal1 := actual1, actual2); // -> error message
fun(formal2 := actual2, formal1 := actual1); // same semantics as the f
ollowing:
fun(formal1 := actual1, formal2 := actual2);
According to the IEC 61131-3 standard, functions can have additional outputs. They can be
assigned in the call of the function. In ST, for example, according to the following syntax:
out1 => <output variable 1> | out2 => <output variable 2> | ...further output variables

Example
Function fun is defined with 2 input variables in1 and in2 and two output variables out1 and
out2. The output values of fun are written to the locally declared variables loc1 and loc2.
fun(in1 := 1, in2 := 2, out1 => loc1, out2 => loc2);

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 179
Program Components

Method

Overview
A method is a language element similar to a function that can be used in a context of a function
block (see page 194). It can be regarded as a function which contains an instance of the respective
function block. Such as a function, a method has a return value, and its own declaration part for
temporary variables and parameters.
Also as a means of object-oriented programming, you can use interfaces (see page 185) to
organize the methods available in a project.
NOTE: When copying or moving a method or property from a POU to an interface, the contained
implementations are deleted automatically. When copying or moving from an interface to a POU,
you are requested to specify the desired implementation language.

Inserting a Method
To assign a method to a function block or interface, select the appropriate function block or
interface node in the Applications tree, click the green plus button and execute the command
Method. Alternatively, you can right-click the function block or interface node and execute the
command Add Object → Method from the contextual menu.
In the Add Method dialog box, enter a Name, the desired Return Type, the Implementation
Language, and the Access Specifier (see below). For choosing the return data type, click the
button ... to open the Input Assistant... dialog box.
Access specifier: For compatibility reasons, access specifiers are optional. The specifier PUBLIC
is available as an equivalent for having set no specifier.
Alternatively, choose one of the options from the selection list:
 PRIVATE: The access on the method is restricted to the function block.
 PROTECTED: The access on the method is restricted to the function block and its derivation.
 INTERNAL: The access on the method is restricted to the present namespace (the library).

Click Open to confirm. The method editor view opens.

Input Assistance when Creating Inheriting Function Blocks


EcoStruxure Machine Expert facilitates object-oriented programming using inheritance within
function blocks: When you execute Add Object on a function block that inherits from another
function block, the Action, Method, Property, and Transition elements used in the base function
block are listed for selection:
 Action, Method, Property, and Transition elements with Access specifier = PUBLIC,
PROTECTED, and INTERNAL defined in the base function block are available for selection.
You can adapt the definition for the inherited object. In the inherited object, the same Access
specifier is assigned as to the source elements.
 Action, Method, Property, and Transition elements with Access specifier = PRIVATE are not
available for selection because access is restricted to the base function block.

180 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Declaring a Method
Syntax:
METHOD <access specifier> <method name> : <return data type>VAR_INPUT ... END_VAR
For a description on how to declare interface handling methods, refer to the Interface chapter
(see page 185).

Calling a Method
Method calls are also named virtual function calls. For further information, refer to the chapter
Method Invocation (see page 208).
Note the following for calling a method:
 The data of a method is temporary and only valid during the execution of the method (stack
variables). This means that the variables and function blocks declared in a method are
reinitialized at each call of the method.
 Methods defined in an interface (see page 185) are only allowed to have input, output, and
input/output variables, but no body (implementation part).
 Methods such as functions can have additional outputs. They must be assigned during method
invocation (see page 208).

Implementing a Method
Note the following for implementing a method:
 In the body of a method, access to the function block instance variables is allowed.
 If necessary, use the THIS pointer (see page 212) which always points on the present instance.
 VAR_TEMP variables of the function block cannot be accessed in a method.

Special Methods for a Function Block

Method Description
Init A method named FB_init is by default declared implicitly, but can also be declared
explicitly. It contains initialization code for the function block as declared in the
declaration part of the function block. Refer to FB_init method (see page 647).
Reinit If a method named FB_reinit is declared for a function block instance, it is called
after the instance has been copied (like during Online Change) and will reinitialize the
new instance module. Refer to FB_init, FB_reinit methods (see page 647).
Exit If an exit method named FB_exit is desired, it has to be declared explicitly. There is
no implicit declaration. The Exit method is called for each instance of the function
block before a new download, a reset or during online change for all moved or deleted
instances. Refer to FB_exit method (see page 647).

Properties (see page 183) and interface properties (see page 186) each consist of a Set and/or a
Get accessor method.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 181
Program Components

Method Call Also When Application Is Stopped


In the device description file, it can be defined that a certain method should always be called task-
cyclically by a certain function block instance (of a library module). If this method has the following
input parameters, it is processed also when the active application is not running.
Example
VAR_INPUT
pTaskInfo : POINTER TO DWORD;
pApplicationInfo: POINTER TO _IMPLICIT_APPLICATION_INFO;
END_VAR
The programmer can check the application status via pApplicationInfo, and can define what
should happen.
IF pApplicationInfo^.state = RUNNING THEN <instructions> END_IF

182 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Property

Overview
A property in extension to the IEC 61131-3 is available as a means of object-oriented
programming. It consists of a pair of accessor methods (Get, Set). They allow encapsulating a
read or write access to variables declared inside of a POU or a GVL into a function call, while
keeping the syntax of a variable access.
To insert a property as an object below a program (see page 176), a function block (see page 194),
a GVL (see page 218), or an interface (see page 185) node, select the node in the Applications
tree, click the green plus button, and execute the command Property. As an alternative, right-click
the node and execute the command Add Object → Property from the contextual menu.
In the Add Property dialog box specify the Name, Return Type, desired Implementation Language,
and optionally an Access Specifier.
The same access specifiers are available as for methods (see page 180):
 PUBLIC
 PRIVATE
 PROTECTED
 INTERNAL

NOTE: Properties can also be declared within interfaces.


EcoStruxure Machine Expert facilitates object-oriented programming using inheritance within
function blocks: When you execute Add Object on a function block that inherits from another
function block, the Action, Method, Property, and Transition elements used in the base function
block are listed for selection:
 Action, Method, Property, and Transition elements with Access specifier = PUBLIC,
PROTECTED, and INTERNAL defined in the base function block are available for selection.
You can adapt the definition for the inherited object. In the inherited object, the same Access
specifier is assigned as to the source elements.
 Action, Method, Property, and Transition elements with Access specifier = PRIVATE are not
available for selection because access is restricted to the base function block.

Get and Set Accessors of a Property


2 special methods (see page 180), named accessor, are inserted automatically in the Applications
tree below the property object. You can delete one of them if the property should only be used for
writing or only for reading. An accessor, like a property (see previous paragraph), can get assigned
an access modifier in the declaration part, or via the Add Object dialog box, when explicitly adding
the accessor.
 The Set accessor is called when the property is written.
 The Get accessor is called when the property is read.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 183
Program Components

Example:
Function block FB1 has a property seconds that uses a local variable milli. This variable is
determined by the properties Get and Set:
Get implementation example
seconds := milli / 1000;
Set implementation example
milli := seconds * 1000;
You can write the property of the function block (Set method), for example by
[Link] := 22;.
(fbinst is the instance of FB1).
You can read the property of the function block (Get method) for example by
testvar := [Link];.
In the following example, property seconds is assigned to function block FB1:

A property can have additional local variables but no additional inputs and - in contrast to a function
(see page 178) or method (see page 180) - no additional outputs.
NOTE: When copying or moving a method or property from a POU to an interface, the contained
implementations are deleted automatically. When copying or moving from an interface to a POU,
you are requested to specify the desired implementation language.

Monitoring a Property
A property can be monitored in online mode either with help of inline monitoring (see page 404) or
with help of a watch list (see page 480). The precondition for monitoring a property is the addition
of the pragma {attribute 'monitoring' := 'variable'} (refer to the chapter Attribute
Monitoring (see page 691)) on top of its definition.

184 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Interface

Overview
The use of interfaces is a means of object-oriented programming. An interface POU defines a set
of methods (see page 180) and properties (see page 183) without an implementation. An interface
can be described as an empty shell of a function block (see page 194). It must be implemented
(see page 206) in the declaration of the function block in order to get realized in the function block
instances. A function block can implement one or several interfaces.
The same method can be realized with identical parameters but different implementation code by
different function blocks. Therefore, an interface can be used/called in any POU without the need
that the POU identifies the particular function block that is concerned.

Example of Interface Definition and Usage in a Function Block


An interface IFT is inserted below an application. It contains 2 methods Method1 and Method2.
Neither the interface nor the methods contain any implementation code. Just the declaration part
of the methods is to be filled with the desired variable declarations:
Interface with 2 methods:

1 or multiple function blocks can now be inserted, implementing the above defined interface ITF.
Creating a function block implementing an interface

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 185
Program Components

When function block POU is added to the Applications tree, the methods Method1 and Method2
are automatically inserted below as defined by ITF. Here they can be filled with function block-
specific implementation code.
Using the interface in the function block definition

An interface can extend other interfaces by using EXTENDS (see following example Example for
Extending an Interface (see page 187)) in the interface definition.

Interface Properties
An interface can also define an interface property, consisting of the accessor methods Get and/or
Set. For further information on properties, refer to the chapter Property (see page 183). A property
in an interface like the possibly included methods is just a prototype that means it contains no
implementation code. Like the methods, it is automatically added to the function block, which
implements the interface. There it can be filled with specific programming code.

186 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Considerations
Consider the following:
 It is not allowed to declare variables within an interface. An interface has no body (implemen-
tation part) and no actions. Just a collection of methods is defined within an interface and those
methods are only allowed to have input variables, output variables, and input/output variables.
 Variables declared with the type of an interface are treated as references.
 A function block implementing an interface must have assigned methods and properties which
are named exactly as they are in the interface. They must contain identically named inputs,
outputs, and inputs/outputs.
NOTE: When copying or moving a method or property from a POU to an interface, the contained
implementations are deleted automatically. When copying or moving from an interface to a POU,
you are requested to specify the desired implementation language.

Inserting an Interface
To add an interface to an application, select the Application node in the Applications tree or in the
Software Catalog → Assets, click the green plus button and select Add Other Objects... →
Interface. Alternatively, execute the command Add Object → Interface. If you select the node
Global before you execute the command, the new interface is available for all applications.
In the Add Interface dialog box, enter a name for the new interface (<interface name>). Optionally
you can activate the option Extends: if you want the current interface to be an extension
(see page 203) of another interface.

Example for Extending an Interface


If ITF1 extends ITF_base, all methods described by ITF_base will be automatically available in
ITF1.
Extending an interface

Click Add to confirm the settings. The editor view for the new interface opens.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 187
Program Components

Declaring an Interface
Syntax
INTERFACE <interface name>
For an interface extending another one:
INTERFACE <interface name> EXTENDS <base interface name>
Example
INTERFACE interface1 EXTENDS interface_base

Adding the Desired Collection of Methods


To complete the definition of the interface, add the desired collection of methods. For this purpose,
select the interface node in the Applications tree and execute the command Interface method....
The Add Interface Method dialog box opens for defining a method to be part of the interface.
Alternatively, select the interface node in the Applications tree, click the green plus button and
select Interface Method. Add as many methods as desired and remember that these methods are
only allowed to have input variables, output variables, and input/output variables, but no body
(implementation part).

188 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Action

Overview
You can define actions and assign them to function blocks (see page 194) and programs
(see page 176). An action is an additional implementation. It can be created in a different language
than the basic implementation. Each action is given a name.
An action works with the data of the function block or program to which it belongs. It uses the
input/output variables and local variables defined and does not contain its own declarations.

Example of an Action of a Function Block


The following illustration shows an action in FB

In this example, each call of the function block FB1 increases or decreases the output variable out,
depending on the value of the input variable in. Calling action Reset of the function block sets the
output variable out to 0. The same variable out is written in both cases.

Inserting an Action
To add an action, select the respective program or function block node in the Applications Tree or
in the Global node of the Applications Tree, click the green plus button, and execute the command
Action.... Alternatively, right-click the program or function block node, and execute the command
Add Object → Action. In the Add Action dialog box, define the action Name and the desired
Implementation Language.
EcoStruxure Machine Expert facilitates object-oriented programming using inheritance within
function blocks: When you execute Add Object on a function block that inherits from another
function block, the Action, Method, Property, and Transition elements used in the base function
block are listed for selection:
 Action, Method, Property, and Transition elements with Access specifier = PUBLIC,
PROTECTED, and INTERNAL defined in the base function block are available for selection.
You can adapt the definition for the inherited object. In the inherited object, the same Access
specifier is assigned as to the source elements.
 Action, Method, Property, and Transition elements with Access specifier = PRIVATE are not
available for selection because access is restricted to the base function block.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 189
Program Components

Calling an Action
Syntax
<Program_name>.<Action_name>
or
<Instance_name>.<Action_name>
Consider the notation in FBD (see the following example).
If it is required to call the action within its own block, that is the program or function block it belongs
to it is sufficient to use the action name.

Examples
This section provides examples for the call of the above described action from another POU.
Declaration for all examples:
PROGRAM PLC_PRG
VAR
Inst : Counter;
END_VAR
Call of action Reset in another POU, which is programmed in IL:
CAL [Link](In := FALSE)
LD [Link]
ST ERG
Call of action Reset in another POU, which is programmed in ST:
[Link](In := FALSE);
Erg := [Link];
Call of action Reset in another POU, which is programmed in FBD:
Action in FBD

NOTE: The IEC standard does not recognize actions other than actions of the sequential function
chart (SFC). These actions are an essential part containing the instructions to be processed at the
particular steps of the chart.

190 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Transition

Overview
You can use transition objects as transition elements in a program or function block implemented
in SFC.
For further information, refer to the description of steps and transitions in the chapter SFC
Elements / ToolBox (see page 381).
EcoStruxure Machine Expert facilitates object-oriented programming using inheritance within
function blocks: When you execute Add Object on a function block that inherits from another
function block, the Action, Method, Property, and Transition elements used in the base function
block are listed for selection:
 Action, Method, Property, and Transition elements with Access specifier = PUBLIC,
PROTECTED, and INTERNAL defined in the base function block are available for selection.
You can adapt the definition for the inherited object. In the inherited object, the same Access
specifier is assigned as to the source elements.
 Action, Method, Property, and Transition elements with Access specifier = PRIVATE are not
available for selection because access is restricted to the base function block.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 191
Program Components

POUs for Implicit Checks

Overview
You have to add special POUs below an application to provide implicitly available check functions.
They verify array and range boundaries, the validity of pointers and verify the presence of division
by zero during runtime.
NOTE: The availability of the check functions have a runtime performance impact.
NOTE: For the check functions to verify the code of uncompiled referenced libraries, you have to
enter the Compiler defines string checks_in_libs in the Build tab of the Properties dialog box
(see EcoStruxure Machine Expert, Menu Commands, Online Help) of the application.
To add monitoring functions under an application, select the application node in the Applications
tree and click the green plus button or execute the command Add Object → POU for implicit
checks....
The dialog box allows you to activate the following check functions for the selected application:

Category Added functions


Bound Checks CheckBounds (for arrays) (see page 740)
Division Checks  CheckDivDInt (see page 775)
 CheckDivLInt(see page 775)
 CheckDivReal (see page 775)
 CheckDivLreal (see page 775)

Range Checks  CheckRangeSigned (see page 749)


 CheckRangeUnsigned (see page 749)
LRange Checks  CheckLRangeSigned (see page 749)
 CheckLRangeUnsigned (see page 749)
Pointer Checks CheckPointer (see page 736)

When you insert a check POU, the option is no longer available in the dialog box to help avoid a
double insertion. If the different types of check POUs have been added below the application, the
Add Object dialog box does not provide the POUs for implicit checks option any longer.

192 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

CAUTION
INCORRECT IMPLICIT CHECKS FUNCTIONALITY
Do not modify the declaration part of an implicit check function in order to maintain its functional
integrity.
Failure to follow these instructions can result in injury or equipment damage.

NOTE: You may, however, add local variables to the declaration part of an implicit check function.
NOTE: After having removed implicit check function (such as CheckBounds) from your application,
no Online Change is possible, just a download. An appropriate message is displayed.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 193
Program Components

Section 7.2
Function Block

Function Block

What Is in This Section?


This section contains the following topics:
Topic Page
General Information 195
Function Block Instance 198
Calling a Function Block 199
Configuring a Memory Reserve for the Online Change of Function Blocks 201
Extension of a Function Block 203
Implementing Interfaces 206
Method Invocation 208
SUPER Pointer 210
THIS Pointer 212

194 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

General Information

Overview
A function block is a POU (see page 171) which provides 1 or more values during the processing
of a controller program. As opposed to a function, the values of the output variables and the
necessary internal variables shall persist from one execution of the function block to the next.
Therefore, invocation of a function block with the same arguments (input parameters) need not
always yield the same output values.
In addition to the functionality described by standard IEC11631-3, object-oriented programming is
supported and function blocks can be defined as extensions (see page 203) of other function
blocks. They can include interface (see page 206) definitions concerning Method invocation
(see page 208). Therefore, inheritance can be used when programming with function blocks.
A function block always is called via an instance (see page 198), which is a reproduction (copy) of
the function block.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 195
Program Components

Adding a Function Block


To add a function block to an existing application, select the respective node in the Software
Catalog → Assets or Applications tree, click the green plus button and select POU.... Alternatively
you can right-click the node and execute the command Add Object → POU. To create a function
block that is independent of an application, select the Global node of the Applications tree or
Assets.
In the Add Object dialog box, select the option Function Block, enter a function block Name
(<identifier>) and choose the desired Implementation Language.
Additionally, you can set the following options:

Option Description
Extends Enter the name of another function block available in the project, which
should be the base for the current one. For details, refer to Extension of a
Function Block (see page 203).
Implements Enter the names of interfaces (see page 185) available in the project, which
should be implemented in the current function block. You can enter several
interfaces separated by commas. For details, refer to Implementing
Interfaces (see page 206).
Access specifier For compatibility reasons, access specifiers are optional. Specifier PUBLIC
is available as an equivalent for having set no specifier.
Alternatively, choose one of the options from the selection list:
 INTERNAL: The access on the function block is restricted to the current
namespace (the library).
 FINAL: Deriving access is not possible that is the function block cannot
be extended by another one. Enables optimized code generation.
NOTE: The access specifiers are valid as of compiler version [Link]
and thus can be used as identifiers in earlier versions.
For further information, refer to the EcoStruxure Machine
Expert/CoDeSys compiler version mapping table in the EcoStruxure
Machine Expert Compatibility and Migration User Guide
(see EcoStruxure Machine Expert Compatibility and Migration, User
Guide).
Method implementation Choose the desired programming language for all method and property
language objects created via the interface implementation, independently from that set
for the function block itself.

Click Add to confirm the settings. The editor view for the new function block opens and you can
start editing.

196 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Declaring a Function Block


Syntax
FUNCTION_BLOCK <access specifier> <function block name> | EXTENDS <function block
name> | IMPLEMENTS <comma-separated list of interface names>
This is followed by the declaration of the variables. You can also group the inputs and outputs for
quick fading out and in when the function block is used in an FBD or LD editor. Also refer to the
chapter Attribute Pingroup (see page 705).

Example
FBexample shown in the following figure has 2 input variables and 2 output variables out1 and
out2.
out1 is the sum of the 2 inputs, out2 is the result of a comparison for equality.
Example of a function block in ST

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 197
Program Components

Function Block Instance

Overview
Function blocks are called (see page 199) through an instance which is a reproduction (copy) of a
function block (see page 195).
Each instance has its own identifier (instance name), and a data structure containing its inputs,
outputs, and internal variables.
Instances like variables are declared locally or globally. The name of the function block is indicated
as the data type of an identifier.

Syntax for Declaring a Function Block Instance


<identifier>:<function block name>;

Example
Declaration (for example, in the declaration part of a program) of instance INSTANCE of function
block FUB:
INSTANCE: FUB;
The declaration parts of function blocks and programs can contain instance declarations.

198 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Calling a Function Block

Overview
Function blocks (see page 195) are called through a function block instance. Thus a function block
instance has to be declared locally or globally. Refer to the chapter Function Block Instance
(see page 198) for information on how to declare.
Then the desired function block variable can be accessed using the following syntax.

Syntax
<instance name>.<variable name>

Considerations
 Only the input and output variables of a function block can be accessed from outside of a
function block instance, not its internal variables.
 Access to a function block instance is limited to the POU (see page 171) in which it was
declared unless it was declared globally.
 At calling the instance, the desired values can be assigned to the function block parameters.
See the following paragraph Assigning Parameters at Call.
 The input / output variables (VAR_IN_OUT) of a function block are passed as pointers.
 In SFC, function block calls can only take place in steps.
 The instance name of a function block instance can be used as an input parameter for a function
or another function block.
 All values of a function block are retained until the next processing of the function block.
Therefore, function block calls do not always return the same output values, even if done with
identical arguments.
NOTE: If at least 1 of the function block variables is a remanent variable, the total instance is stored
in the retain data area.

Examples for Accessing Function Block Variables


Assume: Function block fb has an input variable in1 of the type INT. See here the call of this
variable from within program prog. See declaration and implementation in ST:
PROGRAM prog
VAR
inst1:fb;
END_VAR
inst1.in1:=22; (* fb is called and input variable in1 gets assigned v
alue 22 *)
inst1(); (* fb is called, this is needed for the following access on th
e output variable *)
res:=[Link]; (* output variable of fb is read *)

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 199
Program Components

Example of a function block call in FBD:

Assigning Parameters at Call


In the text languages IL and ST, you can set input and/or output parameters immediately when
calling the function block. The values can be assigned to the parameters in parentheses after the
instance name of the function block. For input parameters, this assignment takes place using :=
as with the initialization of variables (see page 629) at the declaration position. For output
parameters, => is to be used.

Example of a Call with Assignments


In this example, a timer function block (instance CMD_TMR) is called with assignments for the
parameters IN and PT. Then the result variable Q is assigned to the variable A. The result variable
is addressed with the name of the function block instance, a following point, and the name of the
variable:
CMD_TMR(IN := %IX5, PT := 300);
A:=CMD_TMR.Q

Example of Inserting Via Input Assistant with Arguments


If the instance is inserted via Input Assistant with the option With arguments in the implementation
view of an ST or IL POU, it is displayed automatically according to the syntax showed in the
following example with all of its parameters, though it is not necessarily required to assign these
parameters.
For the previously mentioned example, the call would be displayed as follows.
CMD_TMR(in:=, pt:=, q=>)
-> fill in, e.g.:
CMD_TMR(in:=bvar, pt:=t#200ms, q=>bres);

200 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Configuring a Memory Reserve for the Online Change of Function Blocks

Overview
You can configure a memory reserve for the online change of function blocks. After you have made
modifications on the declaration of a function block (in particular after you have added a new
variable), and you perform an online change, it is no longer necessary to copy the instances of the
function block to a new memory area. Thus, the online change is performed faster and fewer errors
are detected.
If the memory reserve you configured is depleted, a message is displayed before the online change
is performed.
It is a good practice to configure the memory reserve for a function block before you download the
application to the controller. If you configure the memory reserve when the application is already
located on the controller, then you have to perform an online change that is even more time-
consuming.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 201
Program Components

Procedure of Configuring a Memory Reserve for the Online Change of Function Blocks
If you intend to perform later modifications on a function block that would require the function block
instance to be copied to other memory locations when executing an online change, then you can
use the Online Change Memory Reserve Settings command.
By default, the command is not available in the menus. Add this command via the Tools →
Customize menu (see EcoStruxure Machine Expert, Menu Commands, Online Help).

Step Action Comment


1 Execute the command View → Online Change Result: The Online Change Memory Reserve
Memory Reserve Settings view opens.
2 From the list of applications, select the suitable –
application.
3 Execute the Build command from the Build menu. –
4 Click the button Scan Application. –
5 From the Function Blocks area, select the entry All. Result: The function blocks of the application are
displayed in the middle of the Online Change
Memory Reserve view.
6 Select the function block for which you want to If the application has not been downloaded to the
configure a memory reserve. controller yet, then the input field Memory reserve
(in bytes) is editable.
If the application is already available on the
controller, then click the Edit button in the Enable
editing area.
NOTE: If you modify the memory reserve of an
application that is already available on the
controller, then the instances of all affected
function blocks must be copied.
7 Enter a value for the Memory reserve (in bytes), and Result: The value you entered is displayed in the
click the Apply for selection button. Memory Reserve cell of the table.
8 Execute the Build command from the Build menu. –
9 Click the button Scan Application. Result: The values of the cells Size, Instance
Count, Additional memory for all instances and
Remaining size of memory reserve Memory
Reserve are updated in the list for the configured
function block.

When you download the application to the controller, the memory size that is reserved for the
function block is calculated by the present size of the function block plus the memory reserve you
configured in the Online Change Memory Reserve view.
Future modifications to the function block can be downloaded to the controller with the online
change without having to copy all instances of the function block to a new memory area.

202 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Extension of a Function Block

Overview
Supporting object-orientated programming, a function block can be derived from another function
block. This means a function block can extend another, thus automatically getting the
methods/properties/actions/transitions and variables of the basing function block in addition to its
own.
The extension is performed by using the keyword EXTENDS in the declaration of a function block.
You can choose the EXTENDS option already during adding a function block to the project via the
Add Object dialog box.
For further information, refer to the sections describing how to add a method (see page 180), a
property (see page 183), an action (see page 189), or a transition (see page 191).

Syntax
FUNCTION_BLOCK <function block name> EXTENDS <function block name>
This is followed by the declaration of the variables.

Example
Definition of function block fbA
FUNCTION_BLOCK fbA
VAR_INPUT
x:int;
END_VAR
...
Definition of function block fbB
FUNCTION_BLOCK fbB EXTENDS fbA
VAR_INPUT
ivar: INT := 0;
END_VAR
...

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 203
Program Components

Extension by EXTENDS
Extension by EXTENDS means:
 fbB contains all data and methods which are defined by fbA. An instance of fbB can now be
used in any context where a function block of type fbA is expected.
 fbB is allowed to override the methods/properties/actions/transitions defined in fbA. This
means: fbB can declare a method with the same name and the same inputs and output as
declared by A.
 fbB is not allowed to declare function block variables with the same name as used in fbA. In
this case, the compiler will generate an error message.
 fbA variables and methods can be accessed directly within an fbB scope by using the SUPER
pointer (see page 210) (SUPER^.<method>).
NOTE: A function block can implement multiple interfaces, but it can only extend a single function
block.

Example
FUNCTION_BLOCK FB_Base
VAR_INPUT
END_VAR
VAR_OUTPUT
iCnt : INT;
END_VAR
VAR
END_VAR
THIS^.METH_DoIt();
THIS^.METH_DoAlso();

METHOD METH_DoIt : BOOL


VAR
END_VAR
iCnt := -1;
METH_DoIt := TRUE;

METHOD METH_DoAlso : BOOL


VAR
END_VAR
METH_DoAlso := TRUE;

204 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

FUNCTION_BLOCK FB_1 EXTENDS FB_Base


VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
END_VAR
// Calls the method defined under FB_1
THIS^.METH_DoIt();
THIS^.METH_DoAlso();
// Calls the method defined under FB_Base
SUPER^.METH_DoIt();
SUPER^.METH_DoAlso();
METHOD METH_DoIt : BOOL
VAR
END_VAR
iCnt := 1111;
METH_DoIt := TRUE;
PROGRAM PLC_PRG
VAR
Myfb_1: FB_1;
iFB: INT;
iBase: INT;
END_VAR
Myfb_1();
iBase := Myfb_1.iCnt_Base;
iFB := Myfb_1.iCnt_THIS;

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 205
Program Components

Implementing Interfaces

Overview
In order to support object-oriented programming, a function block can implement several interfaces
(see page 185) which allows you to use methods (see page 180).

Syntax
FUNCTION_BLOCK <function block name> IMPLEMENTS <interface_1 name>|,<interface_2
name>, ..., <interface_n name>
A function block that implements an interface must contain all methods and properties (interface
properties (see page 186)) defined by this interface. This includes name, inputs, and the output of
the particular method or property which must be exactly the same.
For this purpose - when creating a new function block implementing an interface - automatically all
methods and properties defined in this interface will be inserted below the new function block in
the Applications Tree.
NOTE: If afterwards, methods are added to the interface definition, they will not be added
automatically in the concerned function blocks and thus produce compiler errors. Execute the
command Implement interfaces... (see EcoStruxure Machine Expert, Menu Commands, Online
Help) to perform this update explicitly.
When you use inheritance for function blocks, consider that if methods or attributes were created
by inheritance of an interface, either implement them, or delete them if the implementation of the
base function block is to be used. Pragma attributes are automatically inserted. They are detected
during compilation and messages are generated to remind you that the inherited methods or
properties have to be verified. Delete the pragma attributes after you have completely implemented
the new function block.
For further information, refer to the description of the Implement interfaces... command
(see EcoStruxure Machine Expert, Menu Commands, Online Help).

206 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Example
INTERFACE I1 includes method GetName:
METHOD GetName : STRING
Function blocks A and B each implement interface I1:
FUNCTION_BLOCK A IMPLEMENTS I1
FUNCTION_BLOCK B IMPLEMENTS I1
Thus in both function blocks the method GetName has to be available and will be inserted
automatically below each when the function blocks are inserted in the Applications Tree.
Consider a declaration of a variable of type I1:
FUNCTION DeliverName : STRING
VAR_INPUT
l_i : I1;
END_VAR
This input can receive all function blocks that implement interface I1.
Example for function calls:
DeliverName(l_i := A_instance); // call with instance of type A
DeliverName(l_i := B_instance); // call with instance of type B
NOTE: A variable of an interface-type must get assigned an instance of a function block before a
method can be called on it. A variable of an interface-type always is a reference to the assigned
function block instance.
Thus a call to the interface method results in a call to the function block implementation. As soon
as the reference is assigned, the corresponding address is monitored in online mode. Otherwise,
if no reference has been assigned yet, the value 0 is displayed within monitoring in online mode.
For this example see in the implementation part of the function DeliverName:
DeliverName := l_i.GetName(); // in this case it depends on the "real"
type of l_i whether [Link] or [Link] is called
NOTE: See also the possibility to extend a function block (see page 203) by using the keyword
EXTENDS in the declaration.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 207
Program Components

Method Invocation

Overview
Object-oriented programming with function blocks is - besides of the possibility of extension
(see page 203) via EXTENDS - supported by the possible use of interfaces (see page 206) and
inheritance. This requires dynamically resolved method invocations, also called virtual function
calls.
Virtual function calls need some more time than normal function calls and are used when:
 a call is performed via a pointer to a function block (pfub^.method)
 a method of an interface variable is called ([Link])
 a method calls another method of the same function block
 a call is performed via a reference to a function block
 VAR_IN_OUT of a base function block type can be assigned an instance of a derived function
block type
Virtual function calls make possible that the same call in a program source code will invoke
different methods during runtime.
For more information and in-depth view, refer to:
 Method (see page 180) for further information on methods.
 THIS Pointer (see page 212) for using THIS pointer.
 SUPER Pointer (see page 210) for using SUPER pointer.

Calling Methods
According to the IEC 61131-3 standard, methods such as normal functions (see page 178) can
have additional outputs. They can be assigned in the method call according to syntax:
<method>(in1:=<value> |, further input assignments, out1 => <output variable 1> | out2 => <output
variable 2> | ...further output variables)
This has the effect that the output of the method is written to the locally declared variables as given
within the call.

208 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Example
Assume that function blocks fub1 and fub2 EXTEND function block fubbase and IMPLEMENT
interface1. Method method1 is contained.
Possible use of the interfaces and method calls:
PROGRAM PLC_PRG
VAR_INPUT
b : BOOL;
END_VAR
VAR
pInst : POINTER TO fubbase;
instBase : fubbase;
inst1 : fub1;
inst2 : fub2;
instRef : REFERENCE to fubbase;
END_VAR
IF b THEN
instRef REF= inst1; (* Reference to fub1 *)
pInst := ADR(instBase);
ELSE
instRef REF= inst2; (* Reference to fub2 *)
pInst := ADR(inst1);
END_IF
pInst^.method1(); (* If b is true, fubbase.method1 is c
alled, else fub1.method1 is called *)
instRef.method1(); (* If b is true, fub1.method1 is call
ed, else fub2.method1 is called *)
Assume that fubbase of the upper example contains 2 methods method1 and method2. fub1
overrides method2 but not method1.
method1 is called as shown in the upper example.
pInst^.method1(); (* If b is true fubbase.method1 is called, else fub1.
method1 is called *)
For calling via THIS pointer, refer to THIS Pointer (see page 212).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 209
Program Components

SUPER Pointer

Overview
For each function block that extends a base function block, a pointer with name SUPER is
automatically available. It points to the base function block instances.
This provides an effective solution for the following issue:
 SUPER offers access to methods of the base function block implementation. With the keyword
SUPER, a method can be called which is valid in the base (parent) class instance. Thus, no
dynamic name binding takes place.
SUPER may only be used in methods and in the associated function block implementation.
Because SUPER is a pointer to the base function block, you have to dereference it to get the
address of the function block: SUPER^.METH_DoIt

SUPER Call in Different Implementation Languages

Implementation Language Example


ST SUPER^.METH_DoIt();
FBD/CFC/LD

NOTE: The functionality of SUPER is not yet implemented for Instruction List.

210 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Example
Use of SUPER and THIS pointers.
FUNCTION_BLOCK FB_Base
VAR_OUTPUT
iCnt : INT;
END_VAR
METHOD METH_DoIt : BOOL
iCnt := -1;

METHOD METH_DoAlso : BOOL


METH_DoAlso := TRUE;

FUNCTION_BLOCK FB_1 EXTENDS FB_Base


VAR_OUTPUT
iBase: INT;
END_VAR
// Calls the method defined under FB_1
THIS^.METH_DoIt();
THIS^.METH_DoAlso();
// Calls the method defined under FB_Base
SUPER^.METH_DoIt();
SUPER^.METH_DoAlso();
iBase := SUPER^.iCnt;

METHOD METH_DoIt : BOOL


iCnt := 1111;
METH_DoIt := TRUE;

PROGRAM PLC_PRG
VAR
myBase: FB_Base;
myFB_1: FB_1;
iTHIS: INT;
iBase: INT;
END_VAR
myBase();
iBase := [Link];
myFB_1();
iTHIS := myFB_1.iCnt;

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 211
Program Components

THIS Pointer

Overview
For each function block, a pointer with name THIS is automatically available. It points to its own
function block instance.
This provides an effective solution for the following issues:
 If a locally declared variable in the method hides a function block variable.
 If you want to refer a pointer to its own function block instance for using in a function.

THIS may only be used in methods/properties/actions/transitions and in the associated function


block implementation.
THIS must be written in capital letters. Other spellings are not accepted.
Because THIS is a pointer to the function block, you have to dereference it to access an element
of the function block: THIS^.METHDoIt.

THIS Call in Different Implementation Languages

Implementation Language Example


ST THIS^.METH_DoIt();
FBD/CFC/LD

NOTE: The functionality of THIS is not yet implemented for Instruction List.

212 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Example 1
Local variable iVarB shadows the function block variable iVarB.
FUNCTION_BLOCK fbA
VAR_INPUT
iVarA: INT;
END_VAR
iVarA := 1;

FUNCTION_BLOCK fbB EXTENDS fbA


VAR_INPUT
iVarB: INT := 0;
END_VAR
iVarA := 11;
iVarB := 2;

METHOD DoIt : BOOL


VAR_INPUT
END_VAR
VAR
iVarB: INT;
END_VAR
iVarB := 22; // Here the local iVarB is set.
THIS^.iVarB := 222; // Here the function block variable iVarB is se
t, although iVarB is overloaded.

PROGRAM PLC_PRG
VAR
MyfbB: fbB;
END_VAR

MyfbB(iVarA:=0 , iVarB:= 0);


[Link]();

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 213
Program Components

Example 2
Function call that needs a reference to its own instance.
FUNCTION funA
VAR_INPUT
pFB: fbA;
END_VAR
...;

FUNCTION_BLOCK fbA
VAR_INPUT
iVarA: INT;
END_VAR
...;

FUNCTION_BLOCK fbB EXTENDS fbA


VAR_INPUT
iVarB: INT := 0;
END_VAR
iVarA := 11;
iVarB := 2;

METHOD DoIt : BOOL


VAR_INPUT
END_VAR
VAR
iVarB: INT;
END_VAR
iVarB := 22; //Here the local iVarB is set.
funA(pFB := THIS^); //Here funA is called with THIS^.

PROGRAM PLC_PRG
VAR
MyfbB: fbB;
END_VAR
MyfbB(iVarA:=0 , iVarB:= 0);
[Link]();

214 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Section 7.3
Application Objects

Application Objects

What Is in This Section?


This section contains the following topics:
Topic Page
Data Type Unit (DUT) 216
Global Variable List - GVL 218
Network Variable List (Receiver) 220
Persistent Variables 227
External File 229
Text List 231
Image Pool 238

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 215
Program Components

Data Type Unit (DUT)

Overview
Along with the standard data types, you can define your own data types. You can create structures
(see page 744), enumeration types (see page 746), and references (see page 732) as data type
units (DUTs) in a DUT editor (see page 435).
For a description of the particular standard and the user-defined data types, refer to the description
of the data types (see page 722).

Adding a DUT Object


To add a DUT object to an existing application, select the application node in the Software catalog
→ Assets → Types or in the Applications tree, click the green plus button, and select DUT.... Or
right-click the respective node and execute the command Add Object → DUT. To create an
application-independent DUT object, select the Global node in the Assets or Applications tree. In
the Add DUT dialog box, enter a Name for the new data type unit, and choose the desired type
Structure, Enumeration, Alias, or Union.
To DUT objects of type Enumeration you can add text list support. For further information, refer to
the description of the Add text list support command (see EcoStruxure Machine Expert, Menu
Commands, Online Help).
In case of type Structure, you can use the principle of inheritance, thus supporting object-oriented
programming. Optionally, you can specify that the DUT extends another DUT which is already
defined within the project. This means that the definitions of the extended DUT will be automatically
valid within the current one. For this purpose, activate the option Extends: and enter the name of
the other DUT.
Click Add to confirm the settings. The editor view for the new DUT opens and you can start editing.

Declaring a DUT Object


Syntax
TYPE <identifier> : <DUT components declaration>END_TYPE
The DUT component declaration depends on the type of DUT, for example, a structure
(see page 744), or an enumeration (see page 746).

216 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Example
The following example contains 2 DUTS, defining structures struct1 and struct2; struct2
extends struct1, which means that you can use struct2.a in your implementation to access
variable a.
TYPE struct1 :
STRUCT
a:INT;
b:BOOL;
END_STRUCT
END_TYPE
TYPE struct2 EXTENDS struct1 :
STRUCT
c:DWORD;
d:STRING;
END_STRUCT
END_TYPE

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 217
Program Components

Global Variable List - GVL

Overview
A global variables list (GVL) is used to declare global variables (see page 639). If a GVL is placed
in the Global node of the Software catalog → Variables → Global Variables or the Applications
tree, the variables will be available for the entire project. If a GVL is assigned to a certain
application, the variables will be valid within this application.
To add a GVL to an existing application, select the application node in the Software catalog →
Assets → POUs or Applications tree, click the green plus button and select Global Variable List....
Alternatively you can right-click the node and execute the command Add Object → Add Global
Variable List.... If you select the Global node in these views, the new GVL object will application-
independent.
Use the GVL editor (see page 437) to edit a global variable list.
The variables contained in a GVL can be defined to be available as network variables
(see page 963) for a broadcast data exchange with other devices in the network. For this purpose,
configure appropriate network properties (in the menu View → Properties → Network Variables or
Network Variable Sender Properties) for the GVL.
NOTE: The maximum size of a network variable is 255 bytes. The number of network variables is
not limited.
NOTE: Variables declared in GVLs get initialized before local variables of POUs.

GVL for Configurable Constants (Parameter List) in Libraries


The value of a global constant provided via a library can be replaced by a value defined by the
application. For this purpose, the constant has to be declared in a parameter list in the library.
Then, when the library is included in the application, its value can be edited in the Parameter List
tab of the Library Manager of the application. See the following example for a description on how
to do in detail.

Parameter List Handling


A library [Link] provides an array variable g_Array. The size of the array variable is
defined by a global constant g_c_Arraysize. The library is included in various applications, each
needing a different array size. Therefore, you want to overwrite the global constant of the library
by an application-specific value.
Proceed as follows: When creating [Link], define the global constant g_c_Arraysize
within a special type of global variable list (GVL), the so-called parameter list. For this purpose,
execute the command Add Object and add a parameter list object, in the current example named
Param. In the editor of this object, which equals that of a standard GVL, insert the declaration of
variable g_c_Arraysize.

218 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Parameter list Param in library [Link]

Edit parameter g_c_Arraysize in the Library Manager of a project

Select the library in the upper part of the Library Manager to get the module tree. Select Param in
order to open the tab Library Parameters showing the declarations. Select the cell in column Value
(editable) and use the empty space to open an edit field. Enter the desired new value for
g_c_Arraysize. It will be applied to the current, local scope of the library after having closed the
edit field.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 219
Program Components

Network Variable List (Receiver)

Overview
A network variable list (receiver) is used in the Software catalog → Variables → Global Variables
view and in the Applications tree. It defines variables, which are specified as network variables in
another device within the network.
NOTE: The maximum size of a network variable is 255 bytes. The number of network variables is
not limited.
Thus you can add a network variable list (receiver) object to an application if a network variable list
(sender) with special network properties (network variable list) is available in one of the other
network devices. This is independent of whether defined in the same project or in different projects.
If several of appropriate network variable lists (sender) are found within the present project for the
present network, select the desired network variable list (sender) from a selection list Sender when
adding a network variable list (receiver) via the dialog box Add Object → Network Variable List
(Receiver). Network variable lists (sender) from other projects must be imported as described in
this chapter.
This means that each network variable list (receiver) corresponds exactly to one network variable
list (sender) in another device.
Dialog box Add Network Variable List (Receiver)

220 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Description of the Elements


When adding the network variable list (receiver), besides a Name, also define a Task, responsible
for the handling of the network variables.
Alternatively to directly choosing a network variable list (sender) from another device, you can
specify a network variable list (sender) export file *.GVL with the option Import from file. This
network variable list (sender) file has been generated previously from the network variable list
(sender) via View → Properties → Link To File dialog box (see EcoStruxure Machine Expert, Menu
Commands, Online Help). In any case this is necessary if the desired network variable list (sender)
is defined within another project. For this purpose, select the option Import from file in the Sender
selection list and enter the file path in the Import from file text field (or click the ... button to open
the dialog for browsing in the file system).
You can modify the settings at a later time via the View → Properties → Network Settings dialog
box (see EcoStruxure Machine Expert, Menu Commands, Online Help).
A network variable list (receiver) is displayed by the NVL editor (see page 440), but it cannot be
modified. It displays the content of the corresponding network variable list (sender). If you modify
the basic network variable list (sender), the network variable list (receiver) is updated accordingly.
A comment is added automatically at top of the declaration part of a network variable list (receiver),
providing information on the sender (device path), the network variable list (sender) name, and the
protocol type.

Network Variable List Example


Network variable list

NOTE: Only arrays whose bounds are defined by a literal or a constant are transferred to the
remote application. Constant expressions in this case are not allowed for bounds definition.
Example: arrVar : ARRAY[0..g_iArraySize-1] OF INT ; is not transferred
arrVar : ARRAY[0..10] OF INT ; is transferred
For further information, refer to the Network Communication chapter (see page 963).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 221
Program Components

Example of a Simple Network Variable Exchange


In the following example, a simple network variable exchange is established. In the sender
controller, a network variable list (sender) is created. In the receiver controller, the corresponding
network variable list (receiver) is created.
Perform the following preparations in a default project, where a sender controller Dev_Sender and
a receiver controller Dev_Receiver are available in the Devices tree:
 Create a POU (program) prog_sender below the Application node of Dev_Sender.
 Under the Task Configuration node of this application, add the task Task_S that calls
prog_sender.
 Create a POU (program) prog_rec below the Application node of Dev_Receiver.
 Under the Task Configuration node of this application, add the task Task_R that calls prog_rec.
NOTE: The 2 controllers must be configured in the same subnet of the Ethernet network.

Defining the Network Variable List (Sender)


Step 1: Define a global variable list in the sender controller:

Step Action Comment


1 In the Software catalog → Assets View → POUs, The Properties dialog box of the network variable
select the Application node of the controller list (sender) is displayed.
Dev_Sender and click the green plus button. Execute
the command Network Variable List (Sender).
2 Enter the Name GVL_Sender and click Add to create The GVL_Sender node appears below the
a new global variable list. Application node in the Applications tree and the
editor opens on the middle of the EcoStruxure
Machine Expert screen.
3 In the editor, enter the following variable definitions: –
VAR_GLOBAL
iglobvar:INT;
bglobvar:BOOL;
strglobvar:STRING;
END_VAR

222 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Step 2: Define the network properties of the network variable list (sender):

Step Action Comment


1 In the Applications tree, select the GVL_Sender The Properties - GVL_Sender dialog box is
node, click the green plus button, and execute the displayed.
command Properties...
2 Open the Network properties tab and configure the –
parameters as indicated in the graphic:

3 Click OK. The dialog box is closed and the network variable
list (sender) network properties are set.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 223
Program Components

Defining the Network Variable List (Receiver)


Step 1: Define a global network variable list in the receiver controller:

Step Action Comment


1 In the Applications tree, select the Application node The Add Global Network Variable List dialog box is
of the controller Dev_Receiver, click the green plus displayed.
button, and execute the command Global Network
Variable List....
2 Configure the parameters as indicated in the This global network variable list is the counterpart of
graphic. the network variable list (sender) defined for the
sender controller.

224 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Step Action Comment


3 Click Open. The dialog box is closed and the GNVL_Receiver
appears below the Application node of the
Dev_Receiver controller:

This network variable list (receiver) automatically


contains the same variable declarations as the
GVL_Sender.

Step 2: View and / or modify the network settings of the network variable list (receiver):

Step Action Comment


1 In the Devices tree, right-click the GNVL_Receiver The Properties - GNVL_Receiver dialog box is
node and select the command Properties.... displayed.
2 Open the Network settings tab. –

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 225
Program Components

Step 3: Test the network variable exchange in online mode:

Step Action Comment


1 Under the Application node of the controller The editor for prog_sender opens on the right-hand
Dev_Sender, double-click the POU prog_sender. side.
2 Enter the following code for the variable iglobvar: –

3 Under the Application node of the controller The editor for prog_rec opens on the right-hand
Dev_Receiver, double-click the POU prog_rec. side.
4 Enter the following code for the variable –
ivar_local:

5 Log on with sender and receiver applications within The variable ivar_local in the receiver gets the
the same network and start the applications. values of iglobvar as currently displayed in the
sender.

226 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Persistent Variables

Overview
This object is a global variable list (GVL), which only contains persistent variables of an application.
Thus it has to be assigned to an application. For this purpose, it has to be inserted in the
Applications tree via selecting the respective node, clicking the green plus button, and selecting
Add Other Objects → Persistent Variables....
Only those variables which are declared with VAR PERSISTENT and which are contained in this
list are persistent. The Add all Instance Paths command (see EcoStruxure Machine Expert, Menu
Commands, Online Help) adds all PERSISTENT declarations found in other POUs to the list.
Variables declared with VAR PERSISTENT are also retain variables. Retain variables have the
capacity to keep their values after executing a Reset warm command (see EcoStruxure Machine
Expert, Menu Commands, Online Help). The difference is, that persistent variables are only
reinitialized upon executing the Reset origin command (see EcoStruxure Machine Expert, Menu
Commands, Online Help) or by a new application download (after the application had been
removed from the controller). An exception is made if you modified their names or data types.
Persistent variable list

For further information, refer to the description of remanent variables (see page 641).
Also refer to the description of the special commands for handling persistent variables
(see EcoStruxure Machine Expert, Menu Commands, Online Help).
Edit a persistent variable list in the persistence editor, which corresponds to the GVL editor
(see page 437). The VAR_GLOBAL PERSISTENT RETAIN is already preset in the first line.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 227
Program Components

Adding and Declaring Remanent Variables


When you add variables to an application, you can declare some of the variables as remanent
variables. Remanent variables can retain their values in the event of power outages, reboots,
resets, and application program downloads. There are multiple types of remanent variables,
declared individually as retain or persistent, or in combination as retain-persistent.
Consult the Programming Guide specific to your controller for information on the memory size
reserved for retain and persistent variables in the different controllers.
To add a global variable list called Persistent Variables to your application, proceed as follows:

Step Action
1 Select the respective application node in the Applications tree, click the green plus
button, and select Add Other Objects → Persistent Variables....
Alternatively, you can right-click the application node, and execute the command Add
Object → Persistent Variables....
2 In the Add Persistent Variables dialog box type a name for this list in the Name text
box.
3 Click Add.
Result: A persistent variable node is created in the Applications tree. For an example,
refer to the Overview paragraph in this chapter.

228 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

External File

Overview
To add an external file to the Global node of the Applications Tree or Tools Tree, select the Global
node, click the green plus button and execute the commands Add other objects → External File....
Click the ... button to open the dialog box for browsing a file. The path of this file is entered in the
File path text box. In the Name text box, the name of the chosen file is entered automatically
without extension. You can edit this field to define another name for the file under which it should
be handled within the project.
Add External File dialog box:

Description of the What Do You Want to Do with the External File? Section of the Dialog Box
Select one of the following options:

Option Description
Remember the link. The file will be available in the project only if it is available in the defined link path
Remember the link and embed into A copy of the file will be stored internally in the project but also the link to the
project. external file will be recalled. As long as the external file is available as defined,
the defined update options will be implemented accordingly. Otherwise just the
file version stored in the project will be available.
Embed into project. Just a copy of the file will be stored in the project. There will be no further
connection to the external file.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 229
Program Components

Description of the When the External File Changes, Then Section of the Dialog Box
If the external file is linked to the project, you can additionally select one of the options:

Option Description
reload the file automatically. The file is updated within the project as soon as it has been changed
externally.
prompt whether to reload the file. A dialog box pops up as soon as the file has been changed externally.
You can decide whether the file is updated also within the project.
do nothing. The file remains unchanged within the project, even when it is changed
externally.

Description of the Buttons

Button Description
Display file properties... This button opens the dialog box for the properties of a file. This dialog
box also appears when you select the file object in the Applications
Tree or Tools Tree and execute the command Properties. In the tab
External file of this dialog box, you can view and modify the properties.
Add After you have completed the settings, click the Add button to add the
file to the Global node of the Applications Tree or Tools Tree. It is
opened in that tool which is defined as default for the given file format.

230 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Text List

Overview
A text list is an object managed globally in the Global node of the Applications Tree or assigned to
an application in the Applications Tree.
It serves the following purposes:
 Multi-language support for static (see page 232) and dynamic (see page 233) texts and tooltips
in visualizations and in the alarm handling
 Dynamic text exchange

Text lists can be exported and (re-) imported (see page 236). Export is necessary, if a language
file in XML format has to be provided for a target visualization, but is also useful for translations
(see page 237).
Possible formats of text lists:
 Text
 XML

You can activate support of Unicode (see page 236).


Each text list is uniquely defined by its namespace. It contains text strings which are uniquely
referenced within the list by an identifier (ID, consisting of any sequence of characters) and a
language identifier. The text list to be used is specified when configuring the text for a visualization
element.
Depending on the language which is set in the visualization, the corresponding text string is
displayed in online mode. The language used in a visualization is changed by a Change the
language input. This is accomplished by a mouse action that you have configured on the given
visualization element. Each text list must at least contain a default language, and optionally in other
languages that you choose to define. If no entry is found which matches the language currently set
in EcoStruxure Machine Expert, the default language entry of the text list is used. Each text can
contain formatting definitions (see page 236).
Basic structure of a text list

Identifier Default <Language 1> <Language 2> .... <Language n>


(Index)
<unique <text abc in default <text abc in <text abc in ...
string of language> language 1> language 2>
characters>
<unique <text xyz in default <text xyz in <text xyz in ...
string of language> language 1> language 2>
characters>

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 231
Program Components

Text List Types


There are two types of text usable in visualization elements and correspondingly there are two
types of list:
 GlobalTextList for static texts
 Textlist for dynamic texts

GlobalTextList for Static Texts


GlobalTextList is a special text list where the identifiers for the particular text entries are handled
implicitly and are not editable. The list can be exported, edited externally and then reimported.
Static texts in a visualization, in contrast to dynamic texts, are not exchanged by a variable in online
mode. The only option to exchange the language of a visualization element is via a Change the
language input. A static text is assigned to a visualization element via property Text or Tooltip in
category Texts. When the first static text is defined in a project, a text list object named
GlobalTextList is added to the Global node of the Applications Tree. It contains the defined text
string found in the column Default, and an automatically assigned integer number as the text
identifier. For each static text that is created thereafter, the identifier number is incremented and
assigned to the visualization element.
If a static text is entered into a visualization element (for example, if in a rectangle with property
category of Texts, the string Text Example is specified), this text is looked up in the GlobalTextList.
 If the text is found (for example, ID 4711, Text Example), the element value 4711 of TextId will
be assigned to an internal variable. This establishes the relationship between the element and
the corresponding line in the GlobalTextList.
 If the text is not found, a new line is inserted in the GlobalTextList (for example, ID 4712, Text
Example). In the element, the value 4712 is assigned to the internal variable.
NOTE: If it does not yet exist - you can create a global text list explicitly by the command Create
Global Text List.
If you have exported, edited and reimported the GlobalTextList, it is validated as to whether the
identifiers are still matching those which are used in the configuration of the respective visualization
elements. If necessary, an implicit update of the identifiers used in the configuration will be
implemented.
To update the ID numbers of the texts that are defined for a visualization, you can remove the
GlobalTextList by right-clicking the node and executing the Delete command. Then open a
visualization and execute the command Visualization → Create Global Text List. A new
GlobalTextList node is created in the Applications tree with the static texts of the visualizations
available in the project.
NOTE: In case your GlobalTextList contains translated strings, they will not be regenerated when
the command Create Global Text List is executed.

232 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Example of a GlobalTextList
Create Global Text List

Textlist for Dynamic Texts


Dynamic texts can be modified dynamically in online mode. The text index (ID), which is a string
of characters, must be unique within the text list. In contrast to GlobalTextLists, you have to define
it. Also in contrast to the GlobalTextList, create text lists for dynamic texts explicitly by selecting the
Global node, clicking the green plus button, and executing the command Add other objects → Text
List....
The available dynamic text lists are offered when configuring a visualization element via property
Dynamic texts / Text list. If you specify a text list name combined with the text index (ID) - which
can be entered directly or by entering a project variable which defines the ID string - the text can
be modified in online mode.
A dynamic text list must be exported if it is needed as a language file for language switching in a
target visualization. Specify the file path in the Visualization Options. Such as GlobalTextList, a
dynamic text list can also be exported for external editing and reimported. In contrast to
GlobalTextList, when you import dynamic text lists, there is no automatic check and update of the
identifiers.

NOTICE
UNINTENDED MODIFICATION OF IDENTIFIERS
Do not modify the identifiers when editing the exported list.
Failure to follow these instructions can result in equipment damage.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 233
Program Components

Example of a Dynamic Text List Named ErrorList


Example ErrorList

Detailed Example
This example explains how to configure a visualization element, which displays the corresponding
message when an error is detected in an application that processes error events identified via
numeric IDs assigned to an integer variable ivar_err.
Provide a dynamic textlist named ErrorList where the message texts for error IDs 0 to 4 are defined
in languages German, English, and Default:

Within a table cell, you can add a line break by pressing the keyboard shortcut Ctrl + Enter.
To use the error IDs in the visualization configuration, define a STRING variable, for example
strvar_err. To assign the integer value of ivar_err to strvar_err, use
strvar_err:=INT_TO_STRING(ivar_err);.
strvar_err can be entered as Textindex parameter in the configuration of the Dynamic texts
properties of a visualization element. This element will display the appropriate message in online
mode.

234 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

The next example is for processing the error ID using project variables and configuration of a
visualization element (Properties), which should display the appropriate message:

Creating a Text List


 To create a text list for dynamic texts (see page 233), add a Text List object to the project in the
Applications Tree. To create an application-specific text list, select an application node. To
create a global text list, select the Global node. Then click the green plus button of the selected
node, and execute the command Add other objects → Text List.... When you have specified a
list name and confirmed the Add Textlist dialog box, the new list is inserted below the selected
node, and a text list editor view opens.
 To get a text list for static texts (see page 232) (GlobalTextList), either assign a text in property
Text in category Texts of a visualization object to get the list created automatically, or generate
it explicitly by command Create Global Text List.
 To open an existing text list for editing, select the list object in the Applications Tree or Global
node of the Applications Tree. Right-click the text list node and execute the command Edit
Object, or double-click the text list node. Refer to the table Basic structure of a text list for how
a text list is structured.
 For adding a new default text in a text list, either use the command Insert Text, or edit the
respective field in the empty line of the list. To edit a field in a text list, click the field to select it
and then click the field again or press SPACE to get an edit frame. Enter the desired characters
and close the edit frame with RETURN.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 235
Program Components

Support of Unicode Format


To use Unicode format, activate the respective option in the Visualization Manager. Further on, set
a special compilation directive for the application: select the application in the Devices Tree, open
the Properties dialog box, Build tab. In the Compiler defines field, enter VISU_USEWSTRING.
Dialog box with compiler definition

Export and Import of Text Lists


Static and dynamic text lists can be exported as files in CSV format. Exported files can also be
used for adding texts externally, for example by an external translator. However, only files available
in text format (*.csv) can be reimported.
See the description of the respective text list commands (see EcoStruxure Machine Expert, Menu
Commands, Online Help).
Specify the folder in which the export files should be saved in the dialog box File → Project Settings
→ Visualization.

Formatting of Texts
The texts can contain formatting definitions (%s,%d,…), which allow to include the present values
of variables in a text. For the possible formatting strings, see the Visualization part of the
EcoStruxure Machine Expert online help.
When using text with formatting strings, the replacement is done in the following order:
 The actual text string to be used is searched via list name and ID.
 If the text contains formatting definitions, these are replaced by the value of the respective
variable.

236 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Subsequent Delivery of Translated Texts


By inserting [Link] in the directory which is used for loading text files, a subsequent
integration of translated texts is possible. When the bootproject is started up, the firmware detects
that an additional file is available. The text is compared with that in the existing textlist files. New
and modified texts are then applied to the textlist files. The updated textlist files will then be applied
at the next startup.

List Components for Text Input


Via the dialog box Tools → Options → Visualization, you can specify a text template file. All texts
of column Default of this file will be copied to a list, which will be used for the List Components
functionality. A template file can be used which has been created before via the Export command.

Multiple User Operations


By use of the source control, it is possible that multiple users work simultaneously on the same
project. If a static text is modified in visualization elements by more than one user, it will cause
modifications to the GlobalTextList (refer to GlobalTextList (see page 232)). In this case, the Text-
Ids may no longer be coherent with the visualization elements. Use the following error detection
and correction methods:
 Use the command Check Visualization Text Ids, such errors may be detected in the
visualizations.
 Use the command Update Visualization Text Ids, these errors may be resolved automatically.
The affected visualizations as well as the GlobalTextList must have write permission.

Use of Textlists for Changing Language in Visualizations


If an appropriate textlist is available, that is, a textlist defining several language versions for a text,
then the language used for the texts in a visualization can be switched in online mode by an input
on a visualization element. The Dynamic Texts properties of the element must specify the textlist
to be used, and an OnMouse.. input action, Change the language, must be configured specifying
the language which should be used after the mouse action has been performed.
NOTE: The language must be specified with exactly this string which is displayed in the column
header of the respective textlist.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 237
Program Components

Image Pool

Overview
Image pools are tables defining the file path, a preview, and a string ID for each image. By
specifying the ID and (for unique accessing) additionally the image file name, the image can be
referenced, for example, when being inserted in a visualization (configuration of the properties of
an image element, refer to Using Images Which are Managed in Image Pools (see page 241) ).
In a library project, you can create an image pool. If you then declare the library to be a symbol
library, you can use the images it contains inside your project visualizations. To achieve this, right-
click the ImagePool node of the library project, select Properties, and set the Symbol library
settings in the Image Pool tab (by clicking the button Mark library as symbol library and optionally
selecting a Text list for symbol translation).
After you have added the library to your project, the image pool will appear (as you named it) in the
ToolBox when a visualization editor is active.
NOTE: Reduce the size of an image file as much as possible before adding it to an image pool.
Otherwise, the project size and the loading and storing efforts of visualization applications,
including images, can become large.

238 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Structure of an Image Pool


Example of an image pool:

Element Description
ID String ID (for example logo, y_icon, 2);
A unique referencing of an image is achieved by the combination of image list
name and ID (for example, List1.basic_logo).
File name Path of the image file (for example, C:\programs\images\[Link]).
Image formats supported by EcoStruxure Machine Expert:
 BMP
 EMF
 GIF
 ICO
 JPG
 PNG
 SVG
 TIFF

The controller you are using may not support all image formats. Consult the
Programming Guide specific to your controller for further information.
If the image file is stored in the directory for image files (as defined in Tools →
Options → Visualization, you only have to enter the file name in this text box.
Image Preview of the image.
Link type Information on how the image file is linked to the project.
Specify the Link type when you add the image file manually in the dialog box
Select image. Refer to the description Creating and Editing an Image Pool
(see page 240).

NOTE: If the target system does not support images in the vector image format SVG, they are
automatically converted to the format PNG during download. For information on the supported
image formats, refer to the device descriptions provided by your hardware manufacturer.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 239
Program Components

Creating and Editing an Image Pool


A project can contain several image pools. The automatically generated GlobalImagePool, as well
as manually generated image pools.
GlobalImagePool
Add an image, which is not yet part of an image pool of the project, to a visualization. In doing so,
enter in the element properties a static ID for the image. This results in the automatic creation of a
GlobalImagePool which contains an entry for the respective image file. The Link type is Link to file.
Manually creating an empty image pool:
You can insert an image pool object below an application node or below the Global node of the
Applications tree by clicking the green plus button and executing the commands Add other objects
→ Image Pool.... In the Add Image Pool dialog box, define a Name for the pool.
Adding an image file to an image pool

Adding an image file to an image pool Actions to be performed


By executing the command Insert Image 1. Put the focus into the image pool editor.
2. Execute the Insert Image command
(see EcoStruxure Machine Expert, Menu
Commands, Online Help) from the context menu.
Result: A unique ID is entered automatically,
which is editable.
3. Double-click the field File name in the new line to
specify the path of the image file.
4. For this purpose, you can open the dialog box

Select Image by clicking the button. The


edit fields and options of this dialog box are
explained below this table.
NOTE: If you do not use the dialog box Select
Image, but enter the image file path directly, then
automatically the link type setting Remember the link
is used.
By directly entering the file name In the editor of the image pool, double-click the field
File name of the first empty line. Enter - as described
above for the first option (executing the command
Insert Image) - the path of the desired image file.
Result: The file name is automatically entered as ID.
By drag&drop from the file system In the local file system browser, select the desired
image file and drag it into the image pool editor.
Multiple selection is possible.
Result: The file name is automatically entered as ID.
The link type setting Remember the link is used
automatically.

240 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Elements of the Select Image dialog box:

Element Description
Image File
Enter the path of the image file or click the button for getting the
standard dialog box for browsing the local file system. Select the desired file
or files. Multiple selection is possible.
What do you want to do with Choose a link type:
the image file?  Remember the link: The file is only available in the project if it is available
in the specified path. Files specified without path must be stored in the
project folder.
 Remember the link and embed into project: A copy of the file is stored
internally in the project. The link to the specified path is stored as well. As
long as the image file is available under the stored path, the update action
as defined below, is valid. As soon as the image file is removed from the
specified location, only the copy of the file stored internally in the project
will be used.
 Embed into project: Only a copy of the file is stored internally in the
project. The link to the external path is not stored.
If you choose the option Remember the link and embed into project, you can
select one of the following update actions:
When the image file changes, then
 reload the file automatically.
 prompt whether to reload the file.
 do nothing.

Using Images Which Are Managed in Image Pools


If the ID of the image to be used is specified in multiple image pools:
 search order: If you choose an image managed in the GlobalImagePool, you do not need to
specify the pool name. The search order for images corresponds to that for global variables:
1. GlobalImagePool
2. image pools assigned to the currently active application
3. image pools in Global node of the Applications tree besides GlobalImagePool
4. image pools in libraries
 unique accessing: You can directly call the desired image by adding the image pool name
before the ID according to syntax: <pool name>.<image ID> (For an example, see
imagepool1.drive_icon in the previous graphic.)

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 241
Program Components

Using an Image in a Visualization Element of Type Image


When inserting an image element in a visualization, you can define it to be a static image or a
dynamic image. The dynamic image can be changed in online mode according to the value of a
project variable:
Static images:
In the configuration of the element (property Static ID), enter the image ID or the image pool name
+ image ID. Consider in this context the remarks on search order and unique accessing in the
previous paragraph.
Dynamic images:
In the configuration of the element (property Bitmap ID variable), enter the variable which defines
the ID, for example, PLC_PRG.imagevar.

Using an Image for the Visualization Background


In the background definition of a visualization, you can define an image to be displayed as
visualization background. The image file can be specified as described previously for a
visualization element by the name of the image pool and the image file name.

242 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Program Components

Section 7.4
Application

Application

Application

Overview
An application is a set of objects which are needed for running a particular instance of the controller
program on a certain hardware device (controller). For this purpose, independent objects managed
in the Global node of the Applications tree are instantiated and assigned to a device. This meets
the concept of object-orientated programming. However, you can also use purely application-
specific POUs.
An application is represented by an application object in the Applications tree. Below an application
entry, insert the objects defining the application resource set.
One application is available for each controller. It is not possible to add further applications.
A part of each application is the Task Configuration controlling the run of a program (POU
instances or application-specific POUs). Additionally, it can have assigned resource objects like
global variable lists, libraries, and so on. These - in contrast to those managed in the Global node
of the Applications tree - can only be used by the particular application and children. For the rules,
refer to the description of arranging and configuring objects in the Devices tree (see page 44).

Consideration
When going to log in with an application on a target device (controller or simulation target), two
checks are performed: Which application is currently in the controller? Are the application
parameters in the controller matching those in the application within EcoStruxure Machine Expert?
Appropriate messages indicate mismatches and offer some ways to continue in this case. Also you
have the possibility to delete the application in the controller. Refer to the description of the Login
command (see page 254) for more details.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 243
Program Components

244 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Task Configuration
EIO0000002854 06/2019

Chapter 8
Task Configuration

Task Configuration

What Is in This Chapter?


This chapter contains the following topics:
Topic Page
Task Configuration 246
Adding Tasks 247

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 245
Task Configuration

Task Configuration

Overview
The Task Configuration defines 1 or several tasks for controlling the processing of an application
program.
It is a resource object for an application (see page 243). It has to be inserted in the Applications
tree below an application node. A task can call an application-specific program POU, which is only
available in the Applications tree below the application. It can also call a program which is managed
in the Global node of the Applications tree. In the latter case, the program that is available globally
will be instantiated by the application.
You can edit a task configuration in the Task Configuration editor (see page 465).
In online mode, the Task Configuration editor provides a monitoring view that presents information
on cycles, cycle times, and task status.
As an additional functionality of the task configuration, if supported by the device, the monitoring
view allows a dynamic analysis of the POUs which are controlled by a task. It supplies information
about the cycle times, the quantity of function block calls and the unused code lines.

246 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Task Configuration

Adding Tasks

Introduction
You can add tasks to your application via the Applications tree.

Procedure

Step Action
1 In the Applications tree, select the Task Configuration node, click the green plus
button, and execute the command Task....
Alternatively, you can right-click the Task Configuration node, and select Add Object
→ Task... from the context menu.
Result: The Add Task dialog box opens.
2 In the Add Task dialog box, enter a name in the Name: text box.
Note: The name must neither contain any space nor exceed a length of 32
characters.
3 Click Add.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 247
Task Configuration

248 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Managing Applications
EIO0000002854 06/2019

Chapter 9
Managing Applications

Managing Applications

What Is in This Chapter?


This chapter contains the following sections:
Section Topic Page
9.1 General Information 250
9.2 Building and Downloading Applications 252
9.3 Running Applications 269
9.4 Maintaining Applications 270

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 249
Managing Applications

Section 9.1
General Information

General Information

Introduction

Introduction
To run an application, you must first connect the PC to the controller, then download the application
to the controller.
NOTE: Due to memory size limitation, some controllers are not able to store the application source
but only a built application that is executed. This means that you are not able to upload the
application source from the controller to a PC.

WARNING
UNINTENDED EQUIPMENT OPERATION
 Confirm that you have entered the correct device designation or device address in the
Communication Settings dialog when downloading an application.
 Confirm that machine guards and tags are in place such that any potential unintended
machine operation will not result in personal injury or equipment damage.
 Read and understand all user documentation of the software and related devices, as well as
the documentation concerning equipment or machine operation.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

Preconditions
Verify that your application meets the following conditions before downloading it to the controller:
 the active path is set for the correct controller,
 the application you want to download is active,
 the application is free of compilation errors.

250 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Applications

Boot Application
The boot application is the application that is launched on controller start. This application is stored
in the controller memory. To configure the download of the boot application, right-click the
Application node in the Applications tree and select the Properties command.
At the end of a successful download of a new application, a message is displayed asking you if you
want to create the boot application.
You can manually create a boot application in the following ways:
 In offline mode: Click Online → Create boot application to save the boot application to a file.
 In online mode, with the controller being in STOP mode: Execute the Online → Create boot
application command (see EcoStruxure Machine Expert, Menu Commands, Online Help) to
download the boot application to the controller.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 251
Managing Applications

Section 9.2
Building and Downloading Applications

Building and Downloading Applications

What Is in This Section?


This section contains the following topics:
Topic Page
Building Applications 253
Login 254
Build Process at Changed Applications 256
Downloading an Application 257

252 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Applications

Building Applications

Overview
EcoStruxure Machine Expert provides different build procedures in the Build menu
(see EcoStruxure Machine Expert, Menu Commands, Online Help). These procedures serve to
handle syntactical checks, either just on the changed objects or on all objects of the active
application.
You can perform an offline code generation in order to check for compilation errors before
downloading the code to the device. For a successful login, the code generation must have been
completed without detecting any errors.

Code Generation, Compile Information


Machine code is generated in the following cases:
 When the Application (see page 243) project is downloaded to the target device (controller,
simulation target).
 When the Build → Generate code command is executed.

At each download, the compile information, containing the code and a reference ID of the loaded
application, is stored in the project directory in a file <projectname>.<devicename>.<application
ID>.compileinfo. The compileinfo file is deleted when the Clean or Clean all command is executed.
No code generation is performed when the project is compiled by the build commands (by default
in the Build menu). The build process checks the project in order to detect programming errors.
Any detected programming errors are displayed in the Messages view (message category Build).
During code generation, additional errors can be detected and displayed. These errors can only be
detected by the code generator or they are caused by memory allocation.

Messages at Code Generation


At each code generation, additional information on the code and data size (in Bytes), on the
content of the allocated memory areas, and on the highest used address (Byte) is displayed in the
Messages → Build view.
It depends on the controller, in which memory areas the various types of data and the code are
stored. For the addresses %I, %M, %Q memory is allocated, even if no variable is assigned to an
address. After a Clean of the application, the memory is completely reallocated.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 253
Managing Applications

Login

Overview
The Online → Login command connects the application to the target device (controller or
simulation target) and thus changes into the online mode.
The default shortcut is Alt + F8.

WARNING
UNINTENDED EQUIPMENT OPERATION
 Confirm that you have entered the correct device designation or device address in the
“Communication Settings” dialog when downloading an application.
 Confirm that machine guards and tags are in place such that any potential unintended
machine operation will not result in personal injury or equipment damage.
 Read and understand all user documentation of the software and related devices, as well as
the documentation concerning equipment or machine operation.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

If there is an online user management (also refer to the chapter Users and Groups (see page 143))
established on the target device, at login you are prompted to enter the appropriate user name and
password. For this purpose, the dialog box Device User Logon opens.
NOTE: The layout of EcoStruxure Machine Expert views can change when you connect to the
target device because the Online perspective (see page 53) is automatically selected when you
switch to online mode.

Selecting the View of the Communication Settings Tab in the Device Editor
Depending on the option selected for Communication page in the Tools → Options → Device
editor dialog box (see EcoStruxure Machine Expert, Menu Commands, Online Help), the
Communication Settings tab of the device editor is displayed in three different modes. Refer to the
description of the different tabs for details:

Mode Communication page setting Dialog of the device editor


1 Controller selection mode (default Communication Settings tab in controller
setting) selection mode (see page 105)
2 Simple mode Communication Settings tab in simple mode
(see page 125)
3 Classic mode Communication Settings tab in classic mode
(see page 128)

254 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Applications

Login Procedure
The steps of the login procedure are identical. They only differ in the presentation of the
Communication Settings tab.
For a successful login, the code generation must have been completed without detecting errors
(refer to the chapter Build Process Before Login (see page 256)).

Step Action
1
Execute the command Online → Login, or click the Login button from the toolbar, or press
ALT + F8.
Result: Since no target address has been set before, the Communication Settings tab of the
device editor opens in the mode you selected. A message box is displayed indicating that a valid
address has not been defined.
2 If only one controller has been detected by EcoStruxure Machine Expert, this controller is used
as target device.
If several controllers have been detected, double-click the controller you want to log in.
NOTE: In controller selection mode and in classic mode, only those controllers are listed that
have the same Target ID as the selected controller. To display all controllers in the list, set the
Filter criterion to None.
3
Execute the command Online → Login, or click the Login button from the toolbar, or press
ALT + F8.
Result: A message box displays to inform you of potential hazards.
4 Click Cancel to abort the login operation or press ALT + F to confirm the message and to log in
to the selected controller.
Result: If you press ALT + F the connection to the controller is established, and you can
download the application (see page 257).

Unsuccessful Login

If... Then ... Comment


If an error is detected during login Then the operation is aborted and In the error message, you can
to the controller, an error message is displayed. display the error details.
If an exception has occurred Then you can execute the This command opens the function
containing the text command Show source code in in the editor with the cursor at the
SOURCEPOSITION in the log editor. position where the error was
message, detected.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 255
Managing Applications

Build Process at Changed Applications

Build Process Before Login


Before Login and if the current affected application project has not been compiled since having
been opened or since the last modification, it will be compiled. This means that the project will be
built correspondingly to a Build run in offline mode and compilation code for the controller will be
generated.
If errors are detected during compilation, a message box opens with the following text: There are
compile errors. Do you want to login without download? You can choose to correct the detected
errors first, or to login nevertheless. In the latter case, you are logged in to that version of the
application which is possibly already available on the controller.
The detected errors are listed in the Messages view (category Build).

256 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Applications

Downloading an Application

Introduction
To run an application, first connect the PC to the controller, then download the application to the
controller.
Downloading a project allows you to copy the current project from EcoStruxure Machine Expert to
the controller memory.
NOTE: Due to memory size limitation, some controllers are not able to store the application source
but only a built application that is executed. This means that you are not able to upload the
application source from the controller to a PC.

WARNING
UNINTENDED EQUIPMENT OPERATION
 Confirm that you have entered the correct device designation or device address in the
Communication Settings dialog when downloading an application.
 Confirm that machine guards and tags are in place such that any potential unintended
machine operation will not result in personal injury or equipment damage.
 Read and understand all user documentation of the software and related devices, as well as
the documentation concerning equipment or machine operation.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

Preconditions
Verify that your application meets the following conditions before downloading it to the controller:
 The active path is set for the correct controller.
 The application you want to download is active.
 The application is free of compilation errors.

Boot Application
The boot application is the application that is launched on controller start. This application is stored
in the controller memory. To configure the download of the boot application, right-click the
Application node in the Devices view and select the Properties command.
At the end of a successful download of a new application, a message is displayed asking you if you
want to create the boot application.
You can manually create a boot application in the following ways:
 In offline mode: Click Online → Create boot application to save the boot application to a file.
 In online mode, with the application being in STOP mode: Click Online → Create boot
application to download the boot application to the controller.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 257
Managing Applications

Operating Modes
The download method differs depending on the relationship between the loaded application and
the application you want to download. The 3 cases are:
 Case 1: The application in the controller is the same as the one you want to load. In this case,
no download occurs, you just connect EcoStruxure Machine Expert to the controller.
 Case 2: Modifications have been made to the application that is loaded in the controller in
comparison to the application in EcoStruxure Machine Expert. In this case, you can specify if
you want to download all or parts of the modified application or keep the application in the
controller as it is.
 Case 3: A different or a new version of application is already available on the controller. In this
case, you are asked whether this application should be replaced.
 Case 4: The application is not yet available on the controller. In this case, you are asked to
confirm the download.

Downloading Your Application to the Controller: Case 1


The application in the controller is the same as the one you want to load. In this case, no download
occurs, you just connect EcoStruxure Machine Expert to the controller.

Step Action
1 To connect to the controller, select Online → Login to ’Application[YourApplicationName; Plc Logic]’.
2 You are connected to the controller.

258 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Applications

Downloading Your Application to the Controller: Case 2


Modifications have been made to the application that is loaded in the controller in comparison to
the application in EcoStruxure Machine Expert.

Step Action
1 To connect to the controller, select Online → Login to ’Application[YourApplicationName; Plc Logic]’.
2 In case you modified your application, and you want to reload it into the controller, the following message
appears:

Login with online change Only the modified parts of an already running project is reloaded to the
controller.
Login with download The whole modified application is reloaded to the controller.
Login without any change The modifications are not loaded.

NOTE: If you select the option Login without any change, the changes you perform in the EcoStruxure
Machine Expert application are not downloaded to the controller. In this case, the information and status
bar in EcoStruxure Machine Expert will show RUNNING as operational state and will indicate Program
modified (Online change). This differs from the options Login with online change or Login with download,
where the information and status bar indicates Program unchanged.
In this case, monitoring of variables is possible, but the logic flow may be confusing because the values
on function block outputs may not match to the values on the inputs.
Examples
In LD, contact states are monitored based on the affected variables. This may have the effect that a blue
animated contact followed by a blue link (meaning true) is shown, although the coil connected to this
contact shows it as [Link] ST logic flow, an IF statement or a loop seems to be executed, but it is actually
not executed because the condition expression is different in the project and on the controller.
3 Select the suitable option and click OK.

NOTE: Consult the Programming Guide specific to your controller for important safety-related
information concerning the downloading of applications.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 259
Managing Applications

Downloading Your Application to the Controller: Case 3


A different or a new version of application is already available on the controller.

Step Action
1 To connect to the controller, select Online → Login to ’Application[YourApplicationName; Plc Logic]’.
2a In case, the controller is not in RUN mode, and you want to load a different application than the one
currently in the controller, the following message appears:

Refer to the hazard messages below before you click Yes to download the new application to the
controller, or No to cancel the operation.
2b In case, the controller is in RUN mode, and you want to load a different application than the one currently
in the controller, the following message appears:

Refer to the build messages below before you click Yes to download the new application to the controller,
or No to cancel the operation.

WARNING
UNINTENDED EQUIPMENT OPERATION
Verify that you have the correct application before confirming the download.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

If you click Yes, the application running in your controller will be overwritten.

260 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Applications

Downloading Your Application to the Controller: Case 4


The application is not yet available on the controller.

Step Action
1 To connect to the controller, select Online → Login to ’Application[YourApplicationName; Plc Logic]’.
2 In case the application is not yet available on the controller, you are asked to confirm the download. For
this purpose, a dialog box with the following text displays:

Click Yes to download the application to the controller, or No to cancel the operation.

NOTE: Consult the Programming Guide specific to your controller for important safety-related
information concerning the downloading of applications.

Online Change
The Online Change command modifies the running application program and does not affect a
restart process:
 The program code can behave other than after a complete initialization because the machine
keeps its state.
 Pointer variables keep their values from the last cycle. If there is a pointer on a variable, which
has changed its size due to an online change, the value will not be correct any longer. Verify
that pointer variables are reassigned in each cycle.

WARNING
UNINTENDED EQUIPMENT OPERATION
Thoroughly test your application code for proper operation before placing your system into
service.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

NOTE: Consult the Programming Guide specific to your controller, chapter Controller States
Description for specific information.
If the application project currently running on the controller has been changed in the programming
system since it has been downloaded last, just the modified objects of the project will be loaded to
the controller while the program keeps running.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 261
Managing Applications

In the Online Change Memory Reserve view (see page 201), you configure a memory reserve for
the online change of function blocks. After you have made modifications on a function block and
you perform an online change, it is no longer necessary to copy the instance variables of the
function block to a new memory area.

Implicit Online Change


When you try to log in again with a modified application (checked via the COMPILEINFO, which
has been stored in the project folder during the last download), you are asked whether you want
to make an online change, a download, or login without changing.
Login dialog box:

Description of the elements:

Element Description
Login with online change This option is selected per default. If you confirm the dialog box by clicking OK,
the modifications will be loaded and immediately displayed in the online view
(monitoring) of the respective object or objects.
Login with download Activate this option to load and initialize the application project completely.
Login without any change Activate this option in order to keep the program running on the controller
unchanged. Afterwards, an explicit download can be performed, thus loading
the complete application project. It is also possible that you are asked again
whether an online change should be performed at the next relogin.
Update boot project This option is by default not selected.
To select this option, activate the option Implicit boot application on Online
Change in the Boot Application tab of the Properties dialog box of the
Application node.
A boot application is then automatically created with an online change.
Details Click this button to obtain the Application Information dialog box (Project name,
Last modification, IDE version, Author, Description) on the current application
within the IDE (Integrated Development Environment, i.e., EcoStruxure
Machine Expert) in comparison to that currently available on the controller.
Refer to the following figure.

262 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Applications

Application Information dialog box

For further information, refer to the Login chapter (see page 254).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 263
Managing Applications

Application Content tab of the Application Information dialog box:

264 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Applications

If the option Download Application Info is activated in the Application Build Options tab of the View
→ Properties dialog box (see EcoStruxure Machine Expert, Menu Commands, Online Help), this
tab shows the following: The content of the application read from the controller is shown in the
column Uploaded code for application <App2> and can be compared to the content of the
application in the programming system. To update the left column Last generated code for
application <App2> with the latest version of the application active in the programming system,
click the button Application not up to date. Generate code now?. The contents of the applications
are compared and different objects are marked with colors as they are in the Project → Compare
function (see EcoStruxure Machine Expert, Menu Commands, Online Help). This more granular
information can help you to evaluate the effects downloading the new application.
If the online change will affect considerable changes in download code, like for example possible
moves of pointer addresses or necessary redirections of interface references (see page 185)
another message box is displayed after you have confirmed the Online change dialog box with OK
before download will be performed. It informs you about the effects you have to consider and
provides the option to abort the online change operation.

NOTE: After having removed implicit check function (such as CheckBounds) from your application,
no Online Change is possible, just a download. An appropriate message will appear.
Click the Details button in this message box to display detailed information, such as the number
and a listing of changed interfaces, POUs, affected variables, and so on.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 265
Managing Applications

Detailed Online Change Information dialog box

266 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Applications

Explicit Online Change


Execute the command Online Change (by default in the Online menu) to explicitly perform an
online change operation on a particular application.
An Online Change of a modified project is no longer possible after a Clean operation (Build →
Clean all, Build → Clean). In this case, the information on which objects have been changed since
the last download will be deleted. Therefore, only the complete project can be downloaded.
NOTE:
Consider the following before executing the Online Change command:
 Verify that the changed code is free from logical errors.
 Pointer variables keep their value from the last cycle. If you point to a variable which now has
been deplaced, the value will no longer be correct. For this reason, reassign pointer variables
in each cycle.

Information on the Download Process


When the project is loaded to the controller completely at Login or partially at Online Change, then
the Messages view will show information on the generated code size, the size of global data, the
needed memory space on the controller and in case of online change also on the affected POUs.
NOTE: In online mode, it is not possible to modify the settings of devices or modules. To change
parameters of the devices, the application must be logged out. Depending on the bus system, there
can be some special parameters which are allowed to be changed in online mode.

Boot Application (Boot Project)


At each successful download, the active application is automatically stored in a file <application
name>.app in the controller system folder, thus making it available as a boot application. The boot
application is started automatically when the controller is started (booted). To make the download
of the active application the boot application, you must execute the command Create boot
application (available in the Online menu).
You can also create the boot application while in offline mode (see page 257).
If you want to connect to the same controller from the programming system on different PC, or,
retrieve the active application from a different PC, without the need of an online change or
download, follow the steps described in the Transferring Projects to Other Systems paragraph.

Transferring Projects to Other Systems


For transferring a project to another computer, use a project archive (see EcoStruxure Machine
Expert, Menu Commands, Online Help).
You can transfer a project, which is already running on a controller xy, from the programming
system on PC1 to that on PC2. To be able to reconnect from PC2 to the same controller xy without
the need of an online change or download, verify the following project settings before creating a
project archive.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 267
Managing Applications

Perform the following steps:


1. Verify that only libraries with definitive versions are included in the project, except for the pure
interface libraries. (Open the Library Manager and check entries with an asterisk (*) instead of
a fix version (see EcoStruxure Machine Expert, Functions and Libraries User Guide).)
2. Ensure that a definitive compiler version is set in the Project Settings → Compile options dialog
box (see EcoStruxure Machine Expert, Menu Commands, Online Help).
3. Make sure that a definite visualization profile is set in the Project Settings → Visualization Profile
dialog box (for more information, refer to the Visualization part of the EcoStruxure Machine
Expert online help).
4. Verify that the application currently opened is the same as that already available on the
controller. That is, the boot project (refer to the Online → Create boot application command
(see EcoStruxure Machine Expert, Menu Commands, Online Help)) must be identical to the
project in the programming system. If there is an asterisk behind the project title in the title bar
of the programming system window, the project has been modified but not yet saved. In this
case, it can differ from the boot project. If necessary, before transferring the project to another
PC, create a (new) bootproject - for some controllers this is done automatically at a download -
and then download and start the project on the controller.
5. Create the project archive with the following information: Download information files, Library
profile, Referenced devices, Referenced libraries, Visualization Profile.
6. Log out. If necessary, stop and restart controller xy before reconnecting from PC2.
7. Extract the project archive on PC2 with the same information options activated as listed in
step 5.
NOTE: For login without online change, make sure that you use the EcoStruxure Machine Expert
version that was used to create and download the application in the controller.

268 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Applications

Section 9.3
Running Applications

Running Applications

Running Applications

Introduction
This part shows how to start/stop an application.

RUN/STOP with EcoStruxure Machine Expert


The controller can be started and stopped using EcoStruxure Machine Expert run on a PC
connected to the controller.
Click Online → Start ‘Application [ApplicationName: Plc logic]’ or F5 key or the Start ’Application
[ApplicationName: Plc logic]’ button in the menu bar to start the application.
Click Online → Stop ‘Application [ApplicationName: Plc logic]’ or Shift + F8 keys or the Stop
’Application [ApplicationName: Plc logic]’ button in the menu bar to stop the application.

RUN/STOP Input for Controllers


This function is not available for all supported controllers. Consult the Programming Guide specific
to your controller (for example, Run/Stop chapter (see Modicon M251 Logic Controller, Hardware
Guide)).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 269
Managing Applications

Section 9.4
Maintaining Applications

Maintaining Applications

What Is in This Section?


This section contains the following topics:
Topic Page
Monitoring 271
Debugging 272
Core Dump 277
Programming Support 279
Refactoring 280
Static Analysis Light 285
Creating an Archive in Your Controller on Download 287

270 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Applications

Monitoring

Overview
In online mode, there are various possibilities to display the current values of the objects in the
controller:
 You can see the values of the objects in a program editor screen while online. For details, see
the description of the respective editor.
 You can view object values in the online view of the declaration editor. For details, refer to the
description of the declaration editor (see page 425).
 You can view objects independently in lists through the command Watch. For details, refer to
the description of the watch view / watch list editor (see page 480). You can insert a variable in
a watch view by selecting it and executing the command Add watchlist from the context menu.
 You can view values via trace sampling: recording and displaying of variable values from the
controller. For details, refer to the description of the trace object functionality (see page 518).
 You can view object values that are contained in recipes: User-defined set of variables for
writing and watching these variables on the controller. Refer to the description of the recipe
manager (see page 495).
For information on monitoring of properties that are inserted beneath POUs or function blocks,
refer to the chapter Property (see page 183).
For information on monitoring of function calls, refer to the chapter Attribute Monitoring
(see page 691).
NOTE: If a value is not valid (for example, the result of calculating the square root of a negative
number), the result may be displayed as NaN (not a number) or INF (infinite value) depending on
the operation, the object, and the particular controller platform. Consult the Programming Guide
specific to your controller for more information.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 271
Managing Applications

Debugging

Overview
To evaluate potential programming errors, you can use the debugging functionality.
For testing purposes, an application can also run in simulation (see EcoStruxure Machine Expert,
Menu Commands, Online Help) without any required link to an actual target device. While
simulation avoids the need to connect to physical hardware, there are limitations to which you may
need to complete debugging online.

Breakpoints for Forcing Execution Stops


A breakpoint that is set in an application program stops program execution. The variable values
can then be seen at the current execution point. The current position can be determined more
precisely using the Call Stack (see EcoStruxure Machine Expert, Menu Commands, Online Help).
Only the debug task that has just reached the breakpoint is stopped. The other tasks continue to
execute. The possible breakpoint positions depend on the respective program editor. In each case,
there is a breakpoint at the end of a POU.
NOTE: The inputs / outputs handled by the debug task are not updated when stopped at a
breakpoint. This applies even if the option Update IO while in stop is enabled in the PLC settings
tab of the device editor (see page 141).
Refer to the chapter Breakpoints Commands for a description of the commands concerning
breakpoints. The Breakpoints dialog box (see EcoStruxure Machine Expert, Menu Commands,
Online Help) provides an overview on all breakpoints, allowing you to add, remove, and modify
breakpoints.

Conditional Breakpoints
The stop at the breakpoint can be dependent on the following conditions:
 At the time, a specific boolean expression is TRUE.
 Which cycle number is running.
 Which task is executing.
 When the value of a variable is modified (data breakpoint).

Declaring a specific debug task can help to avoid that several tasks are affected by the error check
(refer to the Breakpoints and Stepping in Applications with Multiple Tasks paragraph
(see page 275)).

Execution Points
In online mode, the Breakpoints dialog box (see EcoStruxure Machine Expert, Menu Commands,
Online Help) allows you to change a breakpoint and data breakpoint in such a way that it becomes
an execution point. Then the program does not stop at the position, but the code processing is
initiated.

272 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Applications

Symbols

Symbol Description
Breakpoint enabled.

Breakpoint disabled.

The breakpoint is set in another instance of the function block


that is open in the editor.

Stop at breakpoint.

Conditional breakpoint enabled.

Conditional breakpoint disabled.

Execution point enabled.

Execution point disabled.

Conditional execution point enabled.

Conditional execution point disabled.

Current step position.


Indicated by a yellow arrow before the respective line and a
yellow shadow behind the concerned operation.
Data breakpoint enabled.

Data breakpoint disabled.

Stop at data breakpoint.

Data execution point enabled.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 273
Managing Applications

Symbol Description
Data execution point disabled.

Stop at data execution point.

Conditional data execution point enabled.

Conditional data breakpoint enabled.

Stepping Through the Program


Stepping allows a controlled execution of an application program in online mode, for debugging
purposes. Before you can use stepping commands, the program must be stopped at a defined
program step, for example by setting a breakpoint. Basically, you step from one instruction to the
next by step into an instruction, step over the next instruction or step out of an instruction. Refer to
the chapter Breakpoint-Related Commands (see EcoStruxure Machine Expert, Menu Commands,
Online Help) for a description of the stepping commands.
EcoStruxure Machine Expert provides the following stepping functions:
 Step into command (see EcoStruxure Machine Expert, Menu Commands, Online Help):
Execution of a single step; this also applies to POUs called within a step.
 Step over command (see EcoStruxure Machine Expert, Menu Commands, Online Help):
Execution of a single step; POUs are executed completely within a step.
 Step out command (see EcoStruxure Machine Expert, Menu Commands, Online Help): If the
application program does not contain any calls, a jump back to the start of the application is
executed.
 Run to Cursor command (see EcoStruxure Machine Expert, Menu Commands, Online Help):
Execution of the program up to a temporary definable position.
 Set next statement command (see EcoStruxure Machine Expert, Menu Commands, Online
Help): Definition of the next instruction (statement) to be executed.
 Show next statement command (see EcoStruxure Machine Expert, Menu Commands, Online
Help): Jump to the instruction (statement) to be executed in the next step.
 Call Stack view (see EcoStruxure Machine Expert, Menu Commands, Online Help): This view
indicates the currently reached step position with the complete call path.
The possible stop positions when stepping through an application program depend on the editor
type. The current position is indicated by the yellow arrow.
The Call Tree view (see EcoStruxure Machine Expert, Menu Commands, Online Help) shows the
location of the function block in the call structure of an application program even before compiling
the application.

274 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Applications

Example of a Step Into Operation


Starting from the breakpoint you can execute each single command line with the stepping
command.
Step Into, example

Data Breakpoints
Data breakpoints allow you to stop program execution when the value of a variable changes.
This function is not available for all supported controllers. Consult the Programming Guide specific
to your controller.
The number of data breakpoints you can define depends on the number of registers that is
available in the controller you are using. A message is displayed when you attempt to set a data
breakpoint and the maximum number has been reached.
The following options exist for data breakpoints as for normal breakpoints:
 Linking the halt at the data breakpoint to an additional condition, refer to Conditional Breakpoints
(see page 272).
 Redefining a data breakpoint to a data execution point where the program does not halt, but
processes specific code, refer to Execution Points (see page 272).

Breakpoints and Stepping in Applications with Multiple Tasks


Debugging cannot be performed on multiple tasks at the same time. While you are working on a
task with breakpoints or stepping, breakpoints are ignored in other tasks.
If a breakpoint can be hit by multiple tasks, because the POU is used by multiple tasks, only the
task that executes first will be halted. Consider this in case of single stepping or if you continue
debugging after a halt. If only one certain task should be concerned (debug task), you can specify
it in the breakpoint condition properties (Breakpoints → New Breakpoint dialog box, tab Condition).

Flow Control for Displaying Exact Values When Processing


You can activate flow control to track parts of the application that have already run. As opposed to
standard monitoring, which displays only the variable value between two cycles, the flow control
yields the value for each processing step at the moment it is rendered. Also refer to the Flow
Control description in the Menu Commands Online Help (see EcoStruxure Machine Expert, Menu
Commands, Online Help).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 275
Managing Applications

Variable Values at Execution Stop


At every execution stop, EcoStruxure Machine Expert displays the values of variables in the
current cycle (monitoring). To determine the current position, you can display the call stack of a
variable. Also refer to the Call Stack description in the Menu Commands Online Help
(see EcoStruxure Machine Expert, Menu Commands, Online Help).

276 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Applications

Core Dump

Core Dump for Exceptions


A core dump is a memory snapshot of the application data. When supported by the runtime
system, a core dump is automatically saved to a file <application_name>.core in the application
directory on the controller when an exception is detected.
In online mode, you can also generate a core dump explicitly if the application is currently stopped
at breakpoint or if an exception has been detected. In this case, the core dump file is saved only in
the project directory and not on the controller.
In offline mode, you can load the core dump of the application from the controller to the
EcoStruxure Machine Expert project. Then the application is displayed in its online view with the
data and values at the time when the exception was detected and the core dump was created.
In addition, the log file of the controller can be displayed from the time the core dump was created
in the project.
NOTE: The firmware must support the functionality in order to display the variable values in the
core dump view correctly. In the online view of the application that is created by loading the core
dump into the project, menu commands are displayed as available but do not have any effect in
this status. When choosing one of these commands, a message is displayed.
Refer to your controller programming manual to verify whether it supports the core dump
functionality.
NOTE: Exception handling in the runtime system may overwrite parts of the variable values in the
call stack. As a result, original values may be lost and important information may no longer be
displayed when monitoring for variables in functions and methods.
Consider the following, for creating a project archive:

If... Then...
If you created a core dump explicitly by choosing the then an option is automatically available in the
command Create Core Dump, archive configuration.
If you copied the core dump from the controller, then you can add it to a project archive only by
choosing the function Additional files.

NOTE: A project archive with a core dump must include the download information; otherwise the
dump is unusable.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 277
Managing Applications

Using the Core Dump to Analyze Exceptions


Prerequisites:
 A project is open with an application that has produced an exception on the controller.
 The runtime system is able to create core dumps.
 The application in the project is in offline mode.

Step Action
1 Load the core dump from the controller by executing the command Debug → Load Core Dump.
Result: An online view of the application is displayed. You see the variable values and call stack
from the time when the error has been detected. This also includes the values of the I/O variables
in the mapping dialog of the device configurator and the task configuration. The message Core
dump loaded is displayed in the status line. The core dump file is copied as
<project_name>.<device_name>.<application_name>.<application-Guid>.core to the local
project directory.
2 Execute the command Debug → Load device log from Core Dump to load the device log from
the time the error has been detected into the project.
Result: The log view opens (as in online mode of the device configurator) displaying the events
at the time the core dump was created.
3 After you have completed the core dump analysis, execute the command Debug → Close Core
Dump.
Result: The core dump view of the application closes and the project returns to its views in
normal offline mode.

Manually Creating a Core Dump of the Running Application


Prerequisites:
 An application is in online mode.
 The runtime system supports core dump functionality.

Step Action
1 Execute the command Debug → Create Core Dump.
Result: The creation of a new core dump starts. A progress bar appears in the status line
together with a cancel button.
A core dump file is saved to the local project directory as
<project_name>.<device_name>.<application_name>.<application-Guid>.core.

Programmed Error Handling for Exceptions


As an IEC 61131-3 extension, EcoStruxure Machine Expert supports specific operators (__TRY,
__CATCH, __FINALLY, __ENDTRY) to catch exceptions. You can program statements that will be
executed in case an error is detected instead of stopping the program. For further information, refer
to the description of these operators (see page 860).
This function is not available for all supported controllers. Consult the Programming Guide specific
to your controller for further information.

278 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Applications

Programming Support

Overview
EcoStruxure Machine Expert offers settings, dialogs and functionalities, which facilitate the input
of program code and indicate detected errors at an early stage.
For further information, refer to the descriptions of the following functions:
 Input Assistant (see page 489)
 Intelli-sense (see page 718)
 Auto Declare... (see EcoStruxure Machine Expert, Menu Commands, Online Help)
 Smart Coding (see EcoStruxure Machine Expert, Menu Commands, Online Help)
 Static Analysis Light (see page 285)

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 279
Managing Applications

Refactoring

Overview
Generally refactoring is the process of restructuring and improving existing software code without
changing its behavior.
Refactoring in EcoStruxure Machine Expert provides functionalities for renaming object names and
variable names. It allows you to show all usage locations of changed objects and variables and to
get renamed all those at once, or only individual ones. You can configure whether and at which
locations you should get asked for performing refactoring. Explicitly you can use the command
Refactoring → Rename.
For further information, also refer to Options, Refactoring (see EcoStruxure Machine Expert, Menu
Commands, Online Help).

Command Rename
The command Refactoring → Rename is used for a global, project wide renaming of object names,
and variable names.
It is available in the context menu if you set the cursor on a variable name in the declaration or if
you right-click one of the following objects in a navigator:
 Functions
 POUs
 GVLs
 Methods
 Properties
 Devices

The command is also available if you select variables and unit conversions within the editor for unit
conversions.
The command is not available in online mode.

Process of Renaming
After you have executed the Refactoring → Rename command, a dialog is displayed. It shows the
locations where the concerned name is used: In the right part of the window the particular
locations, in the left part the navigation tree where the concerned object is marked.
You can select the following commands for each location individually:
 Reject/accept this change: Reject/accept single changes in the right window.
 Reject/accept this object: Reject/accept all changes in the concerned object.
 Reject/accept whole project: Reject/accept all changes in the project.

Accepted changes are displayed with a yellow background, rejected changes with gray
background.

280 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Applications

Command Add <variable>


The command Refactoring → Add <variable> allows you to declare variables in a POU and
performs an automatic update at its different points of use.
It is available in the context menu or in the Edit → Refactoring menu if the cursor is placed in a
declaration editor. The Auto Declare dialog box (see page 630) opens.
After you have confirmed the Auto Declare dialog box by clicking OK, the Refactoring dialog box
opens. It consists of the tree structure of the project on the left-hand side. The POUs where the
new variable is used are highlighted in the tree. You can double-click a POU to open the detailed
view on the right-hand side of the dialog box. In this declaration section and implementation of the
POU on the right-hand side, new declarations are highlighted in yellow.
Before you decide which changes you want to accept at which location, select the suitable option
from the list above the declaration section and implementation of the POU on the right-hand side:

Option Description
Add inputs with placeholder Select this option to insert the standard placeholder text _REFACTOR_
text whenever the new variable occurs in the implementation code. You can
search for this standard text later in order to identify the affected locations.
Add inputs with the following Select this option to insert an initialization value whenever the new variable
value occurs in the implementation code. Enter the initialization value in the text box
on the right-hand side of the option Add inputs with the following value.

In order to accept or reject changes, right-click the changed locations or execute the commands in
the left or right part of the dialog box, as described in the Process of Renaming paragraph in this
chapter.

Examples for Adding a Variable


Example 1:
By refactoring, the fun block receives a new input variable input3 with the initialization value 1.
The change has the following effect:
Before refactoring:
fun(a + b, 3, TRUE);
fun(input1:= a + b , input2 :=3 , inputx := TRUE);
After refactoring:
fun(a + b, 3, input3:=1, TRUE);
fun(input1:= a + b , input2 :=3 , input3:=_REFACTOR_,inputx := TRUE);

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 281
Managing Applications

Example 2:
By refactoring, the fun block receives a new input variable input3 with the placeholder text
_REFACTOR_:
Before refactoring:
inst(input1 := a + b, input2 := 3, inputx := TRUE);
fun(a + b, 3, TRUE);
After refactoring:
inst(input1 := a + b, input2 := 3, input3 := _REFACTOR_, inputx := TRUE
);
fun(a + b, 3, input3:=_REFACTOR_, TRUE);

Command Remove <variable>


The command Refactoring → Remove <variable> allows you to remove an input or output variable
from a POU. It is removed automatically from the POU at its different points of use.
The command is available in the context menu or in the Edit → Refactoring menu if the cursor is
placed in the declaration editor on the identifier of the variable to be removed. A dialog box opens
that provides information on the removal. If you confirm the message, the Refactoring dialog box
opens.
When you accept the changes proposed in the Refactoring dialog box, the respective input or
output variables are removed automatically from the respective POU at its different points of use.
NOTE: In CFC, only the connection is removed between the removed input or output and the block.
The input or output itself remains in the chart.

Example for Removing a Variable in ST


In a POU, refactoring removes the input4 input variable. It is automatically removed from the
respective POU at its different points of use:
Before removal:
inst(input1 := a + b, input2 := 3, input4 := 1, input5 := TRUE);
fun(a + b, 3, 1, TRUE);
After removal:
inst(input1 := a + b, input2 := 3, input5 := TRUE);
fun(a + b, 3, TRUE);

282 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Applications

Command Update Referenced Pins


The command Refactoring → Update Referenced Pins only takes effect on the CFC editor and the
FBD/LD/IL editor. It corresponds to the commands Reset Pins and Update parameters.
The command Refactoring → Update Referenced Pins updates the input and output pins of the
POU, at its different points of use, according to the current POU declaration.
It is available in the context menu or in the Edit → Refactoring menu if the cursor is placed in the
POU name, in the first line of the POU declaration or in the device editor.

Command Reorder Variables


The command Refactoring → Reorder Variables allows you to change the order of variable
declarations within the scopes VAR_INPUT, VAR_OUTPUT, or VAR_IN_OUT.
Example:
VAR_INPUT
invar2 : INT;
invar1 : INT;
in : DUT;
bvar : BOOL;
invar3 : INT;
Proceed as follows to change the order of declarations:

Step Action
1 Right-click the declaration part and execute the command Refactoring → Reorder Variables.
Result: The Reorder dialog box opens with a list of VAR_INPUT variables.
2 Drag the invar1 : INT; entry to the position before the invar2. entry.
Result: The invar1 declaration is at the top position.
3 Click OK to close the dialog box.
Result: The Refactoring dialog box opens. The affected elements are marked in yellow.
4 Click OK to accept the new order of parameters of the function block. Have in mind that the
modified order of the parameters will be reflected also at the call usages of the POUs.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 283
Managing Applications

Modifying a Variable Declaration and Applying Refactoring Automatically


Refactoring can help you in renaming variables (using Auto Declare) as indicated in the following
example.
As a prerequisite for this example, a function block fb_A with an input iA must be available.

Step Action Comment


1 Execute the command Tools → Options.... Result: The Options dialog box opens.
2 Select the category Refactoring on the left-hand side. –
3 In the Auto Declare section, select the options On –
adding or removing variables, or on changing the
scope and On renaming variables.
4 Double-click the function block fb_A. –
5 Select a variable in the declaration of fb_A, for As an alternative, you can place the
example, iA. cursor before or in the variable.

6 Execute the command Edit → Auto Declare.... As an alternative, use the shortcut Shift
+ F2.
Result: The Auto Declare dialog box
opens. The settings of the variable iA
are displayed.
7 Edit the Name and change iA into iCounter_A. Result: The Refactoring - Renaming
from iA to iCounterA dialog box opens.
The POUs where the variable is used
are highlighted in the tree structure.
8 Click OK to apply the renaming and to close the dialog –
box.

284 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Applications

Static Analysis Light

Overview
The static analysis function checks the source code of a project for deviations from certain coding
directives before the project is downloaded to the target system. This follows the basic idea of the
lint analysis tool.
You define the desired set of rules in the Project Settings → Static Analysis Light dialog box
(see EcoStruxure Machine Expert, Menu Commands, Online Help).
NOTE: The check is automatically performed at each code generation.
Deviations from the rules are displayed as messages of category Build in the Messages view. The
error numbers are displayed as SA<number>.
NOTE: The analysis is only done on the application code in the current project. Libraries are not
regarded.
NOTE: For GVL variables: If there are several applications in the project, then only objects below
the currently active application are checked. If there is only one application in the project, then also
any objects in the POUs pool are checked.

Pragma and Attribute for Static Analysis Light


With the help of pragma instructions, you can exclude parts of the code from the check.
Precondition: The rules must be activated in the Project Settings.
NOTE: Multiple write access on output, cannot be deactivated via pragma.

Pragma {analysis ...}


You can use the pragma {analysis ...} to disable particular coding rules for the subsequent
code lines. For this purpose, place it twice: In the line above the concerned code (disabling), and
in the line below the concerned code (re-enabling); each the numbers of the rule or rules to be
disabled must be specified preceded by a minus sign (–) for disabling or by a plus sign (+) for re-
enabling. Depending on the rule, the pragma can be used in the declaration part or in the
implementation part of a programming object.
Syntax
{analysis <sign><rule number>|,<further sign / rule number combinations
separated by commas>}

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 285
Managing Applications

Example
Rule 24 gets disabled for two lines (that means that it is not necessary here to write, for example,
nTest:=DINT#99), and afterwards re-enabled:
{analysis -24}
nTest := 99;
iVar := INT#2;
{analysis +24}
Specifying multiple rules:
{analysis -10, -24, -18}

Attribute {attribute 'analysis' := '...'}


You can use the attribute {attribute 'analysis' := '<sign><rule number>'} in the
declaration part for enabling or disabling particular rules for a complete programming object:
Syntax
{attribute 'analysis' := '<sign><rule number>|,<further rule numbers se
parated by commas>'}
Example
Rules 33 and 31 get disabled for the complete structure:
{attribute 'analysis' := '-33, -31'}
TYPE My_Structure :
STRUCT
iLocal : INT;
uiLocal : UINT;
udiLocal : UDINT;
END_STRUCT
END_TYPE
Rule 100 is disabled for the array:
{attribute 'analysis' := '-100'}
big: ARRAY[1..10000] OF DWORD;

286 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Applications

Creating an Archive in Your Controller on Download

Overview
Creating an archive in your controller allows you to have the complete project in your controller
which is useful for maintenance tasks. The following procedure describes how to create a project
archive automatically with the download procedure.
You can manually create a project archive be executing the File → Source download... command
as described in the Menu Commands online help (see EcoStruxure Machine Expert, Menu
Commands, Online Help).

Creating an Archive on Your Controller


To create an archive on your controller with the download procedure, perform the following three
main tasks.
1.) Configure the sources to be downloaded.
To define the elements to add to the archive, proceed as follows:

Step Action
1 Execute the command Project → Project Settings.
2 In the Project Settings dialog box, select Source Download → Additional Files...
The following options can be selected:
Option to connect with the uploaded project:
 Download information files

Options which are needed to connect with another EcoStruxure Machine Expert version:
 Download information files
 Library profile
 Referenced devices
 Referenced libraries
 Visualization Profile

For further information, refer to the Project Settings - Source Download description
(see EcoStruxure Machine Expert, Menu Commands, Online Help).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 287
Managing Applications

2.) Download the project (sources) to the controller.


To archive your project in your controller, proceed as follows:

Step Action Comment


1 Execute the command Online → Login to connect to A message is displayed.
the controller (see page 254).
2 Select Online → Source download to connected The project is archived and downloaded
device. to the controller.

3.) Upload the project (sources) from the controller by executing the Online → Source Upload...
command (see EcoStruxure Machine Expert, Menu Commands, Online Help).

288 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Logic Editors
EIO0000002854 06/2019

Part IV
Logic Editors

Logic Editors

What Is in This Part?


This part contains the following chapters:
Chapter Chapter Name Page
10 Common Features of Graphic Editors 291
11 FBD/LD/IL Editor 293
12 Continuous Function Chart (CFC) Editor 351
13 Sequential Function Chart (SFC) Editor 371
14 Structured Text (ST) Editor 401

EIO0000002854 06/2019 289


Logic Editors

290 EIO0000002854 06/2019


EcoStruxure Machine Expert
Common Features of Graphic Editors
EIO0000002854 06/2019

Chapter 10
Common Features of Graphic Editors

Common Features of Graphic Editors

Common Features of Graphic Editors

Zooming, Panning, Magnifier Tools


The following zooming, panning, magnifier tools are available in the editors of all graphic
programming languages.
The graphical editors for FBD, LD, CFC, and SFC provide a toolbar in the lower right corner of the
editor window:

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 291
Common Features of Graphic Editors

Item Name Description


number
1 Back to standard editing mode The pointer gets the usual shape of an arrow and you get back into the
normal editing mode, in which you can select and edit elements in the
editor window.
2 Panning tool The pointer gets the shape of crossed arrows. You can click somewhere
in the editor window and - while keeping the mouse-button pressed - shift
the visible area of the chart within the window.
3 Magnifier tool This function is useful when you have zoomed down the displayed chart
to less than 100%. It opens a subwindow in the lower right corner of the
editor window. As long as you move the pointer over your chart, this
subwindow shows the respective part of the chart in 100% size.
If you now click the window, the subwindow closes and that segment of
the chart which was shown in the subwindow, is displayed in 100% size.
So, if you want to keep the previously set zoom factor, use the Back to
standard editing mode button to get back to the normal editing mode.

4 Zooming tool The zoom button opens a submenu where you can select one of the
given zoom factors for the chart. To specify another value, click the ...
button to open an edit dialog box. The current zoom factor is displayed
to the left of the button.

To zoom by mouse wheel, press the Ctrl key while scrolling the mouse wheel. The current zoom
level is increased or decreased in steps of 10 percent.

292 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
FBD/LD/IL Editor
EIO0000002854 06/2019

Chapter 11
FBD/LD/IL Editor

FBD/LD/IL Editor

What Is in This Chapter?


This chapter contains the following sections:
Section Topic Page
11.1 Information on the FBD/LD/IL Editor 294
11.2 FBD/LD/IL Elements 327
11.3 LD Elements 348

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 293
FBD/LD/IL Editor

Section 11.1
Information on the FBD/LD/IL Editor

Information on the FBD/LD/IL Editor

What Is in This Section?


This section contains the following topics:
Topic Page
FBD/LD/IL Editor 295
Function Block Diagram (FBD) Language 296
Ladder Diagram (LD) Language 297
Instruction List (IL) Language 298
Modifiers and Operators in IL 300
Working in the FBD and LD Editor 305
Working in the IL Editor 310
Cursor Positions in FBD, LD, and IL 316
FBD/LD/IL Menu 320
FBD/LD/IL Editor in Online Mode 321

294 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

FBD/LD/IL Editor

Overview
A combined editor is available for editing POUs in the languages FBD (function block diagram
(see page 296)), LD (ladder diagram (see page 297)), and IL (instruction list (see page 298)).
Activate the IL implementation language for EcoStruxure Machine Expert in the Tools → Options
dialog box, category FBD, LD and IL editor, tab (see EcoStruxure Machine Expert, Menu
Commands, Online Help) IL.
Therefore, a common set of commands and elements is used and an automatic internal conversion
between the three languages is done. In offline mode, the programmer can switch between editor
views (View).
Keep in mind that there are some special elements which cannot be converted and thus will only
be displayed in the appropriate language. Also, there are some constructs which cannot be
converted unambiguously between IL and FBD and therefore will be normalized at a conversion
back to FBD; specifically, negation of expressions and explicit/implicit output assignments.
You can define the behavior, look, and menus of the FBD/LD/IL editor in the Customize and
Options dialog boxes. You also have options to define the display of comments and addresses.
The editor opens in a bipartite window. When you edit an object programmed in FBD/LD/IL, the
upper part contains a declaration editor (see page 426), the lower part contains a coding area.
The programming language for a new object is specified when you create the object.
For further information refer to:
 Working in the FBD and LD Editor View (see page 305)
 Working in the IL Editor View (see page 310)

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 295
FBD/LD/IL Editor

Function Block Diagram (FBD) Language

Overview
The Function Block Diagram is a graphically oriented programming language. It works with a list
of networks. Each network contains a graphical structure of boxes and connection lines which
represents either a logical or arithmetic expression, the call of a function block, a jump, or a return
instruction.
FBD networks

296 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

Ladder Diagram (LD) Language

Overview
The Ladder Diagram is a graphics-oriented programming language which resembles the structure
of an electric circuit.
On the one hand, the Ladder Diagram is suitable for constructing logical switches, on the other
hand it also allows you to create networks as in FBD. Therefore, the LD is useful for controlling the
call of other POUs.
The Ladder Diagram consists of a series of networks, each being limited by a vertical current line
(power rail) on the left. A network contains a circuit diagram made up of contacts, coils, optionally
additional POUs (boxes), and connecting lines.
On the left side, there is 1 or a series of contacts passing from left to right the condition ON or OFF
which corresponds to the boolean values TRUE and FALSE. To each contact a boolean variable
is assigned. If this variable is TRUE, the condition will be passed from left to right along the
connecting line. Otherwise, OFF will be passed. Thus, the coil or coils, which is/are placed in the
right part of the network, receive an ON or OFF coming from left. Correspondingly the value TRUE
or FALSE will be written to an assigned boolean variable.
Ladder Diagram network.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 297
FBD/LD/IL Editor

Instruction List (IL) Language

Overview
The instruction list (IL)is an assembler-like IEC 61131-3 conformal programming language.
This language supports programming based on an accumulator. The IEC 61131-3 operators are
supported as well as multiple inputs / multiple outputs, negations, comments, set / reset of outputs
and unconditional / conditional jumps.
Each instruction is primarily based on the loading of values into the accumulator by using the
LD operator. After that the operation is executed with the first parameter taken out of the
accumulator. The result of the operation is available in the accumulator, from where you should
store it with the ST instruction.
In order to program conditional executions or loops, IL supports both comparing operators such as
EQ, GT, LT, GE, LE, NE and jumps. The latter can be unconditional (JMP) or conditional (JMPC /
JMPCN). For conditional jumps, the value of the accumulator is referenced for TRUE or FALSE.

Syntax
An instruction list (IL) consists of a series of instructions. Each instruction begins in a new line and
contains an operator and, depending on the type of operation, 1 or more operands separated by
commas. You can extend the operator by a modifier.
In a line before an instruction, there can be an identification mark (label) followed by a colon (:)
(ml: in the example shown below). A label can be the target of a jump instruction (JMPC m1 in the
example shown below).
Place a comment as last element of a line.
You can insert empty lines between instructions.

298 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

Example
LD BVar1
ST [Link]
CAL tonInst1(
PT:=t1,
ET=>tOut2)
LD toninst1.Q
JMPC mark1
ST [Link]

___________________________________________________________

markl:
LD iVar2
ADD 230
For further information, refer to:
 Working in the IL Editor View (see page 310)
 Modifiers and operators in IL (see page 300)

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 299
FBD/LD/IL Editor

Modifiers and Operators in IL

Modifiers
You can use the following modifiers in Instruction List (see page 298).

C with JMP, CAL, RET: The instruction will only be executed if the result of the preceding
expression is TRUE.
N with JMPC, CALC, RETC: The instruction will only be executed if the result of the preceding
expression is FALSE.
N with operators according to the Negation of the operand (not of the accumulator).
Operators table below (N in
Modifiers column)
( with operators according to the To be used for complex operands. For details, refer to the list of
Operators table below (( (left use cases for complex operands (see page 302).
parenthesis) in Modifiers column)

NOTE: Generally, it is not good practice to use the statement CALC (/RETC/JMPC) directly after
an STN, S or R operator, as those instructions arbitrarily modify the value of the accumulator and
thus could lead to difficult-to-find programming errors.

Operators
The table shows which operators can be used in combination with the specified modifiers.
The accumulator stores the current value, resulting from the preceding operation.

Operator Modifiers Meaning Example


LD N Loads the (negated) value of the operand into the LD iVar
accumulator.
ST N Stores the (negated) content of the accumulator into the ST iErg
operand variable.
S – Sets the operand (type BOOL) to TRUE when the content of S bVar1
the accumulator is TRUE.
R – Sets the operand (type BOOL) to FALSE when the content of R bVar1
the accumulator is TRUE.
AND N,( Bitwise AND of the accumulator and the (negated) operand. AND bVar2
OR N,( Bitwise OR of the accumulator and the (negated) operand. OR xVar
XOR N,( Bitwise exclusive OR of the accumulator and the (negated) XOR N, (bVar
operand. 1,bVar2)
NOT – Bitwise negation of the content of the accumulator. –
ADD ( Addition of accumulator and operand, result is copied to the ADD iVar1
accumulator.

300 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

Operator Modifiers Meaning Example


SUB ( Subtraction of accumulator and operand, result is copied to the SUB iVar2
accumulator.
MUL ( Multiplication of accumulator and operand, result is copied to MUL iVar2
the accumulator.
DIV ( Division of accumulator and operand, result is copied to the DIV 44
accumulator.
GT ( Verifies if accumulator is greater than the operand, result GT 23
(BOOL) is copied into the accumulator; >
GE ( Verifies if accumulator is greater than or equal to the operand, GE iVar2
result (BOOL) is copied into the accumulator; >=
EQ ( Verifies if accumulator is equal to the operand, result (BOOL) EQ iVar2
is copied into the accumulator; =
NE ( Verifies if accumulator is not equal to the operand, result NE iVar1
(BOOL) is copied into the accumulator; <>
LE ( Verifies if accumulator is less than or equal to the operand, LE 5
result (BOOL) is copied into the accumulator; <=
LT ( Verifies if accumulator is less than operand, result (BOOL) is LT cVar1
copied into the accumulator; <
JMP C, CN Unconditional (conditional) jump to the label JMP next
 JMP = unconditional jump
 JMPC = conditional jump if accumulator is TRUE
 JMPCN = conditional jump if accumulator is FALSE

CAL C, CN Unconditional (conditional) call of a PROGRAM or CAL prog1


FUNCTION_BLOCK
 CAL = unconditional call
 CALC = conditional call if accumulator is TRUE
 CALCN = conditional call if accumulator is FALSE

RET C, CN Unconditional (conditional) return of the POU and jump back to RET
the calling POU
 RET = unconditional return
 RETC = conditional return if accumulator is TRUE
 RETCN = conditional return if accumulator is FALSE

) – Evaluate deferred operation –

See also IEC operators (see page 767) and Work in IL editor (see page 310) for how to use and
handle multiple operands, complex operands, function / method / function block / program / action
calls and jumps.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 301
FBD/LD/IL Editor

Example
Example IL program using some modifiers:
LD TRUE load TRUE to accumulator
ANDN bVar1 execute AND with negative value of bVar1
JMPC m1 if accum. is TRUE, jump to label "m1"
LDN bVar2 store negated value of bVar2...
ST bRes ... in bRes
___________________________________________________________

m1:
LD bVar2 store value of bVar2...
ST bRes ... in bRes

Using Operands
The table lists use cases for operands:

Use case Description Examples


Several operands Options  Option 1:
for one operator  Enter the operands into LD 2
consecutive rows, separated by ADD 3,
commas in the 2nd column. 4,
 Repeat the operator in 6
consecutive rows. ST iVAR
 Option 2:
LD 2
ADD 3
ADD 4
ADD 6
ST iVAR
Complex For a complex operand, enter the A string is rotated by one character each cycle:
operands left parenthesis ( in the first LD stRotate
column. RIGHT( stRotate
Enter the right parenthesis in the LEN
first column in a separate row SUB 1
followed by the operand entries in )
the following rows. CONCAT( stRotate,
LEFT 1
)
ST stRotate

302 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

Use case Description Examples


Function block Row 1: CAL POUToCall(
call, program call  Column 1: iCounter:=1,
Operator CAL or CALC iDecrement:=1000,
 Column 2: wError:=wResult)
Name of the function block
instance or the program and left LD [Link],
parenthesis (. If no parameters ST bErr
follow, the right parenthesis ) is
entered here.
Following rows:
 Column 1:
Parameter name followed by:
 := for input parameters
 => for output parameters

 Column 2:
Parameter value followed by a
comma , if followed by further
parameters.
Enter the right parenthesis )
after the last parameter.
According to the IEC standard
complex expressions are not
allowed here. Assign such
constructs to the function block or
the program before it is called.
Function call Row 1: LD X7
 Column 1: GeomAverage 25
LD ST Ave
 Column 2:
Input variable
Row 2:
 Column 1:
Function name
 Column 2:
Further input parameters,
separated by commas
The return value is written to the
accumulator.
Row 3:
 Column 1:
ST
 Column 2:
Variable to which the return
value is written

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 303
FBD/LD/IL Editor

Use case Description Examples


Action call Similar to function block call or CAL [Link]
program call.
The name of the action is
appended to the name of the
function block instance or the
program.
Jump  Column 1: LD BVar1
Operator JMP or JMPC JMPC Label1
 Column 2:
Name of the jump label of the
destination network.
 Unconditional jump:
The preceding instruction
sequence must end with one of
the following commands:
 ST
 STN
 S
 R
 CAL
 RET
 JMP

 Conditional jump:
The execution of the jump
depends on the loaded value.

304 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

Working in the FBD and LD Editor

Overview
Networks are the basic entities in FBD and LD programming. Each network contains a structure
that displays a logical or an arithmetical expression, a POU (function, program, function block call,
and so on), a jump, a return instruction.
When you create a new object, the editor window automatically contains 1 empty network.
Refer to the general editor settings in the Options dialog box, category FBD/LD/IL for potential
editor display options.

Tooltip
Tooltips contain information on variables or box parameters.
The cursor being placed on the name of a variable or box parameter will prompt a tooltip. It shows
the respective type. In case of function block instances the scope, name, datatype, initial value,
and comment will be displayed. For IEC operators SEL, LIMIT, and MUX a short description on
the inputs will display. If defined, the address and the symbol comment will be shown as well as
the operand comment (in quotation marks in a second line).
Example: Tooltip on a POU output

Inserting, Arranging, and Replacing Elements


 The commands for working in the editor are by default available in the FBD/LD/IL menu
(see page 320). Frequently used commands are also available in the context menu. It depends
on the current cursor position or the current selection (multiselection possible, see below
Selecting (see page 307)) which elements can be inserted via menu command.
 You can also drag elements with the mouse from the ToolBox (see page 328) to the editor
window or from one position within the editor to another (drag and drop). For this purpose select
the element to be dragged by a mouse-click, keep the mouse-button pressed and drag the
element into the respective network in the editor view. As soon as you have reached the
network, all possible insert positions for the respective type of element will be indicated by gray
position markers. When you move the mouse-cursor on one of these positions, the marker will
change to green and you can release the mouse-button in order to insert the element at that
position.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 305
FBD/LD/IL Editor

 If you drag a function block, an operator, or a network from the ToolBox (see page 328) onto
the up arrow or down arrow on the left-hand side of the editor, a new network is automatically
created above or below the existing element.
 To replace an element by another one, draw an appropriate other element on its position.
 To reposition an input connection or an output connection of a box, select the connection pin
directly at the box and put it to the desired other position at the box via drag and drop.
Insert positions in LD editor

 You can use the cut, copy, paste, and delete commands, available in the Edit menu, to arrange
elements. You can also copy an element by drag and drop: select the element within a network
by a mouse-click, press the CTRL key and while keeping the mouse button and the key
pressed, drag the element to the target position. As soon as that is reached (green position
marker), a plus-symbol will be added to the cursor symbol. Then, release the mouse-button to
insert the element.
 For possible cursor positions, refer to Cursor Positions in FBD, LD, and IL (see page 316).
 Inserting of EN/ENO boxes is handled diversely in the FBD and LD editor.
Refer to the description of the Insert Box command for further information (Inserting of EN/ENO
boxes is not supported in the IL editor).

Navigating in the Editor


 You can use the ARROW keys to jump to the next or previous cursor position (see page 316).
This is also possible between networks. The navigation with the ← and → key follows the signal
flow which is normally from left to right and vice versa. In case of line breaks, the following cursor
position can also be left under the currently marked position. If you press the ↑ or ↓ key the
selection jumps to the next neighbor above or below the current position if this neighbor is in the
same logical group (for example, a pin of a box). If no such group exists, it jumps to the nearest
neighbor element above or below. Navigation through parallel connected elements is performed
along the first branch.
 Press the HOME key to jump to the first element. Press the END key to jump to the last element
of the network.
 Use the TAB key to jump to the next or previous cursor position (see page 316) within a
network.
 Press CTRL + HOME to scroll to the begin of the document and to mark the first network.
 Press CTRL + END to scroll to the end of the document and to mark the last network.

306 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

 Press PAGE UP to scroll up 1 screen and to mark the topmost rectangle.


 Press PAGE DOWN to scroll down 1 screen and to mark the topmost rectangle.

Selecting
 You can select an element, also a network, via taking the respective cursor position by a mouse-
click or using the arrow or tab keys. Selected elements are indicated as red-shaded. Also refer
to Cursor Positions in FBD, LD, and IL (see page 316).
 In the LD editor, you can also select the lines between elements in order to execute commands,
for example, for inserting a further element at that position.
Selected line in LD editor

 Multi-selection of elements or networks is possible by keeping pressed the CTRL key while
selecting the desired elements one after the other.

Open a Function Block


If a function block is added to the editor, you can open this block with a double-click. Alternatively,
you can use the command Browse - Go To Definition from the context menu.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 307
FBD/LD/IL Editor

FBD editor

LD editor

308 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

For information on the languages, refer to:


 Function Block Diagram - FBD (see page 296)
 Ladder Diagram - LD (see page 297)

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 309
FBD/LD/IL Editor

Working in the IL Editor

Overview
The IL Instruction List (see page 298) editor is a table editor. The network structure of FBD or LD
programs is also represented in an IL program. Basically, one network (see page 330) is sufficient
in an IL program, but considering switching between FBD, LD and IL you also can use networks
for structuring an IL program.
Activate the IL implementation language for EcoStruxure Machine Expert in the Tools → Options
dialog box, category FBD, LD and IL editor, tab (see EcoStruxure Machine Expert, Menu
Commands, Online Help) IL.

Tooltip
Tooltips contain information on variables or box parameters.
Refer to Working in the FBD and LD Editor View (see page 305).

Inserting and Arranging Elements


 The commands for working in the editor are available in the FBD/LD/IL menu. Frequently used
commands are also available in the contextual menu.
 Programming units that are elements are inserted each at the current cursor position via the
Insert commands, available in the FBD/LD/IL menu.
 You can drag a Network element from the ToolBox (see page 328) onto the up arrow or down
arrow on the left-hand side of the editor. A new network is then created above or below the
existing element.
 You can use the cut, copy, paste, and delete commands, available in the Edit menu, to arrange
elements.
 See also some information on the programming language Instruction List - IL (see page 298).
 Operators with EN/ENO functionality can be inserted only within the FBD and LD editor.
This chapter explains how the table editor is structured, how you can navigate in the editor and
how to use complex operands, calls and jumps.

310 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

Structure of the IL Table Editor


IL table editor

Each program line is written in a table row, structured in fields by the table columns:

Column Contains... Description


1 operator This field contains the IL operator (LD, ST, CAL, AND, OR, and so on) or a
function name.
In case of a function block call, the respective parameters are also specified
here. Enter the prefix field := or =>.
For further information, refer to Modifiers and Operators in IL
(see page 300).
2 operand This field contains exactly one operand or a jump label. If more than one
operand is needed (multiple/extensible operators AND A, B, C, or function
calls with several parameters), write them in the following lines and leave
the operator field empty. In this case, add a parameter-separating comma.
In case of a function block, program or action call, add the appropriate
opening and/or closing brackets.
3 address This field contains the address of the operand as defined in the declaration
part. You cannot edit this field. Use the option Show symbol address to
switch it on or off.
4 symbol comment This field contains the comment as defined for the operand in the
declaration part. You cannot edit this field. Use the option Show symbol
address to switch it on or off.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 311
FBD/LD/IL Editor

Column Contains... Description


5 operand comment This field contains the comment for the current line. It is editable and can be
switched on or off via option Show operand comment.

Navigating in the Table


 UP and DOWN arrow keys: Moving to the field above or below.
 TAB: Moving within a line to the field to the right.
 SHIFT + TAB: Moving within in a line to the field to the left.
 SPACE: Opens the currently selected field for editing. Alternatively, performs a further mouse-
click on the field. If applicable, the input assistant will be available via the ... button. You can
close a currently open edit field by pressing ENTER, confirming the current entries, or by
pressing ESC canceling the made entries.
 CTRL + ENTER: Enters a new line below the current one.
 DEL: Removes the current line that is where you have currently selected any field.
 Cut, Copy, Paste: To copy 1 or several lines, select at least 1 field of the line or lines and
execute the Copy command. To cut a line, use the Cut command. Paste will insert the
previously copied/cut lines before the line where currently a field is selected. If no field is
selected, they will be inserted at the end of the network.
 CTRL + HOME scrolls to the begin of the document and marks the first network.
 CTRL + END scrolls to the end of the document and marks the last network.
 PAGE UP scrolls up 1 screen and marks the topmost rectangle.
 PAGE DOWN scrolls down 1 screen and marks the topmost rectangle.

Multiple Operands (Extensible Operators)


If the same operator (see page 300) is used with multiple operands, 2 ways of programming are
possible:
 The operands are entered in subsequent lines, separated by commas, for example:
LD 7
ADD 2,
4,
7
ST iVar
 The instruction is repeated in subsequent lines, for example:
LD 7
ADD 2
ADD 4
ADD 7
ST iVar

312 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

Complex Operands
If a complex operand is to be used, enter an opening bracket before, then use the following lines
for the particular operand components. Below them, in a separate line, enter the closing bracket.
Example: Rotating a string by 1 character at each cycle.
Corresponding ST code:
stRotate := CONCAT(RIGHT(stRotate, (LEN(stRotate) -
1)), (LEFT(stRotate, 1)));
LD stRotate
RIGHT( stRotate
LEN
SUB 1
)
CONCAT( stRotate
LEFT 1
)
ST stRotate

Function Calls
Enter the function name in the operator field. Give the (first) input parameter as an operand in a
preceding LD operation. If there are further parameters, give the next one in the same line as the
function name. You can add further parameters in this line, separated by commas, or in
subsequent lines.
The function return value will be stored in the accumulator. The following restriction concerning the
IEC standard applies.
NOTE: A function call with multiple return values is not possible. Only 1 return value can be used
for a succeeding operation.
Example: Function GeomAverage, which has 3 input parameters, is called. The first parameter is
given by X7 in a preceding operation. The second one, 25, is given with the function name. The
third one is given by variable tvar, either in the same line or in the subsequent one. The return
value is assigned to variable Ave.
Corresponding ST code:
Ave := GeomAverage(X7, 25, tvar);
Function call in IL:
LD X7
GeomAverage 25
tvar
ST Ave

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 313
FBD/LD/IL Editor

Function Block Calls and Program Calls


Use the CAL- or CALC operator (see page 300). Enter the function block instance name or the
program name in the operand field (second column) followed by the opening bracket. Enter the
input parameters each in one of the following lines:
Operator field: Parameter name
Prefix field:
 := for input parameters
 => for output parameter

Operand field: Current parameter


Postfix field:
 , if further parameters follow
) after the last parameter
 () in case of parameter-less calls

Example: Call of POUToCAll with 2 input and 2 output parameters.


Corresponding ST code:
POUToCall(Counter := iCounter, iDecrement:=2, bError=>bErr, wError=>wRe
sult);
Program call in IL with input and output parameters:

It is not necessary to use all parameters of a function block or program.


NOTE: Complex expressions cannot be used. These must be assigned to the input of the function
block or program before the call instruction.

314 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

Action Call
To be performed like a function block or program call, the action name is to be appended to the
instance name or program name.
Example: Call of action ResetAction.
Corresponding ST code:
[Link]();
Action call in IL:
CAL [Link]()

Method Call
To be performed like a function call, the instance name with appended method name is to be
entered in the first column (operator).
Example: Call of method Home.
Corresponding ST code:
Z := [Link](TRUE, TRUE, TRUE);
Method call in IL:
LD TRUE
[Link] TRUE
TRUE
ST Z

Jump
A jump (see page 333) is programmed by JMP in the first column (operator) and a label name in
the second column (operand). The label is to be defined in the target network in the label
(see page 334) field.
The statement list preceding the unconditional jump has to end with one of the following
commands: ST, STN, S, R, CAL, RET, or another JMP.
This is not the case for a conditional jump (see page 333). The execution of the jump depends on
the value loaded.
Example: Conditional jump instruction; in case bCallRestAction is TRUE, the program should
jump to the network labeled with Cont.
Conditional jump instruction in IL:
LDN bCallResetAction
JMPC Cont

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 315
FBD/LD/IL Editor

Cursor Positions in FBD, LD, and IL

IL Editor
This is a text editor, structured in form of a table. Each table cell is a possible cursor position. Also
refer to Working in the IL Editor View (see page 310).

FBD and LD Editor


These are graphic editors, see below examples (1) to (15) showing the possible cursor positions:
text, input, output, box, contact, coil, return, jump, line between elements and network.
Actions such as cut, copy, paste, delete, and other editor-specific commands refer to the current
cursor position or selected element. See Working in the FBD and LD Editor (see page 305).
Basically, in FBD a dotted rectangle around the respective element indicates the current position
of the cursor. Additionally, texts and boxes become blue- or red-shadowed.
In LD, coils and contacts become red-colored as soon as the cursor is positioned on.
The cursor position determines which elements are available in the context menu for getting
inserted (see page 305).

Possible Cursor Positions


(1) Every text field

In the left image, the possible cursor positions are marked by a red-frame. The right image shows
a box with the cursor being placed in the AND field. Keep in mind the possibility to enter addresses
instead of variable names if configured appropriately in the FBD, LD and IL editor Options dialog
box.
(2) Every input:

316 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

(3) Every operator, function, or function block:

(4) Outputs if an assignment or a jump comes afterward:

(5) Just before the lined cross above an assignment before a jump or a return instruction:

(6) The right-most cursor position in the network or anywhere else in the network besides the other
cursor positions. This will select the whole network:

(7) The lined cross directly in front of an assignment:

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 317
FBD/LD/IL Editor

(8) Every contact:

(9) Every coil:

(10) Every return and jump:

(11) The connecting line between the contacts and the coils:

(12) Branch or subnetwork within a network:

318 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

(13) The connection line between parallel contacts (Pos. 1...4):

(14) Before or after a network:

You can add new networks on the left-most side of the editor. The insertion of a new network before
an existing network is only possible before network 1.
(15) Begin or end of a network:

You can add contacts and function blocks at the begin of a network on the field Start here. You can
add the elements return, jump, and coil at the end of a network on the field Add output or jump here.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 319
FBD/LD/IL Editor

FBD/LD/IL Menu

Overview
When the cursor is placed in the FBD/LD/IL Editor (see page 295) window, the FBD/LD/IL menu
is available in the menu bar, providing the commands for programming in the currently set editor
view.
FBD/LD/IL menu in FBD editor view:

 For a description of the commands, refer to the chapter FBD/LD/IL Editor Commands.
 For configuration of the menu, refer to the description of the Customize Menu.

320 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

FBD/LD/IL Editor in Online Mode

Overview
In online mode, the FBD/LD/IL editor provides views for Monitoring (see page 321) and for writing
and forcing the values and expressions on the controller.
Debugging functionality (breakpoints, stepping, and so on) is available, see Breakpoint or Halt
Positions (see page 325).
 For information on how to open objects in online mode, refer to the chapter User Interface in
Online Mode (see page 55).
 Keep in mind that the editor window of an FBD, LD, or IL object also includes the Declaration
Editor in the upper part. Also refer to the chapter Declaration Editor in Online Mode
(see page 432).

Monitoring
If the inline monitoring is not explicitly deactivated in the Options dialog box, it will be supplemented
in FBD or LD editor by small monitoring windows behind each variable or by an additional
monitoring column showing the actual values (inline monitoring). This is even the case for
unassigned function block inputs and outputs.
The inline monitoring window of a variable shows a little red triangle in the upper left corner if the
variable is currently forced (see page 324), a blue triangle in the lower left corner if the variable is
currently prepared for writing or forcing. In LD, for contacts and coils the currently prepared value
(TRUE or FALSE) will be displayed down right below the element.
Example for a variable which is currently forced and prepared for releasing the force

Example for a contact variable which is currently prepared to get written or forced with value TRUE

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 321
FBD/LD/IL Editor

Online view of an FBD program

322 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

Online view of an IL program

In online view, ladder networks have animated connections:


 Connections with value TRUE are displayed in bold blue.
 Connections with value FALSE are displayed in bold black.
 Connections with no known value or with an analog value are displayed in standard outline
(black and not bold).
The values of the connections are calculated from the monitoring values.
Online view of an LD program

Open a function by double-click or execute the command Browse - Go To Definition from the
context menu. Refer to the description of the User Interface in Online Mode (see page 55) for
further information.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 323
FBD/LD/IL Editor

Forcing/Writing of Variables
In online mode, you can prepare a value for forcing or writing a variable either in the declaration
editor (see page 432) or within the editor. Double-click a variable in the editor to open the following
dialog box:
Dialog box Prepare Value

You find the name of the variable completed by its path within the device tree (Expression), its type,
and current value. By activating the corresponding item, you can do the following:
 Preparing a new value which has to be entered in the edit field.
 Removing a prepared value.
 Releasing the forced variable.
 Releasing the forced variable and resetting it to the value it was assigned to just before forcing.

The selected action will be carried out on executing the menu command Force values (in the
Online menu) or by pressing F7.
For information on how the current state of a variable (forced, prepared value) is indicated at the
respective element in the network, refer to the section Monitoring (see page 321).

324 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

Breakpoint or Halt Positions


Possible positions you can define for a breakpoint (halt position) for debugging purposes are those
positions at which values of variables can change (statements), at which the program flow
branches out, or at which another POU is called.
These are the following positions:
 On the network as a whole such that the breakpoint will be applied to the first possible position
within the network.
 On a box (see page 335), if this contains a statement. Therefore it is not possible on operator
boxes like for example ADD, DIV. See the Note below.
 On an assignment.
 At the end of a POU at the point of return to the caller; in online mode, automatically an empty
network will be displayed for this purpose. Instead of a network number, it is identified by RET.
NOTE: You cannot set a breakpoint directly on the first box of a network. If, however, a breakpoint
is set on the complete network, the halt position will automatically be applied to the first box.
For the currently possible positions, refer to the selection list within the View → Breakpoints dialog
box.
A network containing any active breakpoint position is marked with the breakpoint symbol (red filled
circle) right to the network number and a red-shaded rectangle background for the first possible
breakpoint position within the network. Deactivated breakpoint positions are indicated by a non-
filled red circle or a surrounding non-filled red rectangle.
Breakpoint set and breakpoint reached

1 breakpoint set
2 breakpoint reached

As soon as a breakpoint position is reached during stepping or program processing, a yellow arrow
will be displayed in the breakpoint symbol and the red shaded area will change to yellow.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 325
FBD/LD/IL Editor

Halt positions shown in FBD

Halt position shown in IL

NOTE: A breakpoint will be set automatically in all methods which may be called. If an interface-
managed method is called, breakpoints will be set in all methods of function blocks implementing
that interface and in all derivative function blocks subscribing the method. If a method is called via
a pointer on a function block, breakpoints will be set in the method of the function block and in all
derivative function blocks which are subscribing to the method.

326 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

Section 11.2
FBD/LD/IL Elements

FBD/LD/IL Elements

What Is in This Section?


This section contains the following topics:
Topic Page
FBD/LD/IL Toolbox 328
Network in FBD/LD/IL 330
Assignment in FBD/LD/IL 332
Jump in FBD/LD/IL 333
Label in FBD/LD/IL 334
Boxes in FBD/LD/IL 335
RETURN Instruction in FBD/LD/IL 336
Branch / Hanging Coil in FBD/LD/IL 337
Parallel Branch 340
Branch Start / End 343
Set/Reset in FBD/LD/IL 344
Set/Reset Coil 345
Execute 346

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 327
FBD/LD/IL Editor

FBD/LD/IL Toolbox

Overview
The FBD/LD/IL Editor (see page 295) provides a toolbox which offers the programming elements
for being inserted in the editor window by drag and drop. Open the toolbox by executing the
command ToolBox which is in the View menu.
It depends on the currently active editor view which elements are available for inserting (see the
respective description of the insert commands).
The elements are sorted in categories: General (general elements such as Network, Assignment
and so on), Boolean operators, Math operators, Other operators (for example,
SEL, MUX, LIMIT, and MOVE), Function blocks (for example,
R_TRIG, F_TRIG, RS, SR, TON, TOF, CTD, CTU), Ladder elements, and POUs (user-
defined).
The POUs category lists all POUs which have been defined below the same application as the
FBD/LD/IL object which is open in the editor. If a POU has been assigned a bitmap in its properties,
then this will be displayed before the POU name. Otherwise, the standard icon for indicating the
POU type will be used. The list will be updated automatically when POUs are added or removed
from the application.
The category Other operators contains among SEL, MUX, LIMIT, and MOVE operators a
conversion placeholder element. You can drag and drop this element to the appropriate position
of the network. The conversion type is set automatically, dependent on the required type of the
insert position. In some situations however the required conversion type cannot be determined
automatically. Change the element manually in this case.
To unfold the category folders, click the button showing the respective category name. See in the
following image: The category General is unfolded, the others are folded. The image shows an
example for inserting an Assignment element by drag and drop from the toolbox.

328 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

Only the section General in the toolbox is unfolded:


Insert from toolbox

To insert an element in the editor, select it in the toolbox by a mouse-click and bring it to the editor
window by drag and drop. The possible insert positions will be indicated by position markers, which
appear as long as the element is drawn - keeping the mouse button pressed - across the editor
window. The nearest possible position will light up green. When you release the mouse button, the
element will be inserted at the green position.
If you drag a box element on an existing box element, the new one replaces the old one. If inputs
and outputs already have been assigned, those will remain as defined, but they will not be
connected to the new element box.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 329
FBD/LD/IL Editor

Network in FBD/LD/IL

Overview
A network is the basic entity of an FBD (see page 296) or LD (see page 297) program. In the
FBD/LD editor, the networks are arranged in a vertical list. Each network is designated on the left
side by a serial network number and has a structure consisting of either a logical or an arithmetic
expression, a program, function or function block call, and possibly jump or return instructions.
The IL Editor (see page 298), due to the common editor base with the FBD and LD editors, also
uses the network element. If an object initially was programmed in FBD or LD and then is converted
to IL, the networks will be still present in the IL program. Vice versa, if you start programming an
object in IL, you need at least 1 network element which might contain all instructions, but you can
also use further networks to structure the program.
A network optionally can get assigned a title, a comment and a label (see page 334).
You can switch the visibility of the title, the comment fields, and the network separator on and off
in the FBD, LD and IL editor options dialog box. If the option is activated, click in the network
directly below the upper border to open an edit field for the title. For entering a comment,
correspondingly open an edit field directly below the title field. The comment can be multi-lined.
Press ENTER to insert line breaks. Press CTRL + ENTER to terminate the input of the comment
text.
Whether and how a network comment is displayed in the editor, is defined in the FBD, LD, and
IL editor options dialog box.
To add a label (see page 334), which then can be addressed by a jump (see page 333), use the
command Insert label . If a label is defined, it will be displayed below the title and comment field or
- if those are not available - directly below the upper border of the network.
Comments and label in a network

330 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

You can set a network in comment state. This indicates that the network is not processed but
displayed and handled as a comment. To achieve this, use the command Toggle network
comment state.
On a currently selected network (cursor position 6 (see page 316)), you can apply the default
commands for copying, cutting, inserting, and deleting.
NOTE: Right-clicking (cursor position 6 (see page 316)) titles, comments, or labels will select this
entry only instead of the whole network. So the execution of the default commands does not affect
the network.
To insert a network, use command Insert Network or drag it from the toolbox (see page 328). A
network with all belonging elements can also be copied or moved (see page 305) by drag and drop
within the editor.
You can also create subnetworks (see page 337) by inserting branches.

RET Network
In online mode, an additional empty network will be displayed below the existing networks. Instead
of a network number, it is identified by RET.
It represents the position at which the execution will return to the calling POU and provides a
possible halt position (see page 321).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 331
FBD/LD/IL Editor

Assignment in FBD/LD/IL

Overview
Depending on the selected cursor position (see page 316) in FBD or LD, an assignment will be
inserted directly in front of the selected input (cursor position 2 (see page 316)), directly after the
selected output (cursor position 4 (see page 316)) or at the end of the network (cursor position 6
(see page 316)). In an LD network, an assignment will be displayed as a coil (see page 350).
Alternatively, drag the assignment element from the toolbox (see page 328) or copy or move
(see page 305) it by drag and drop within the editor view.
After insertion, the text string ??? can be replaced by the name of the variable that is to be
assigned. For this, use the ... button to open the Input Assistant.
In IL (see page 298), an assignment is programmed via LD and ST instructions. Refer to Modifiers
and Operators in IL (see page 300).

332 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

Jump in FBD/LD/IL

Overview
Depending on the selected cursor position (see page 316) in FBD (see page 296) or LD
(see page 297), a jump will be inserted directly in front of the selected input (cursor position 2),
directly after the selected output (cursor position 4) or at the end of the network (cursor position 6).
Alternatively, drag the jump element from the toolbox (see page 328) or copy or move
(see page 305) it by drag and drop within the editor.
After insertion, you can replace the automatically entered ??? by the label to which the jump should
be assigned.
In IL (see page 298), a jump is inserted via a JMP instruction. See in this context the description
of the operators and modifiers in IL (see page 300).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 333
FBD/LD/IL Editor

Label in FBD/LD/IL

Overview
Below the network comment field each FBD (see page 296), LD (see page 297) or IL network have
a text input field for defining a label. The label is an optional identifier for the network and can be
addressed when defining a jump (see page 333). It can consist of any sequence of characters.
Position of a label in a network

See the Tools → Options → FBD, LD and IL editor dialog box for defining the display of comment
and title.

334 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

Boxes in FBD/LD/IL

Overview
A box, insertable in an FBD (see page 296), LD (see page 297), or IL (see page 298) network, is
a complex element and can represent additional functions like timers, counters, arithmetic
operations, or also programs, IEC functions and IEC function blocks.
A box can have one or more inputs and outputs and can be provided by a library or can be
programmed by the user.
You can group the inputs and outputs of a function block in its declaration via the
attribute pingroup. In the display of the function block in an FBD or LD editor, the groups can
then be faded out and in. For further information, refer to the Attribute pingroup chapter
(see page 705).
If provided with the respective module and if the option Show box icon is activated, an icon is
displayed within the box.

Use in FBD, LD
You can position a box in a LD network or in an FBD network by using the command Insert Box,
Insert Empty Box. Alternatively, you can insert it from the toolbox (see page 328) or copy or move
it within the editor via drag and drop. For further information, refer to the description of the Insert
Box command.

Use in IL
In an IL (see page 298) program, a CAL (see page 300) instruction with parameters will be inserted
in order to represent a box element.
You can update the box parameters (inputs, outputs) - in case the box interface has been modified
- with the current implementation without having to reinsert the box by executing the Update
parameters command.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 335
FBD/LD/IL Editor

RETURN Instruction in FBD/LD/IL

Overview
With a RETURN instruction, the FBD (see page 296), LD (see page 297) or IL (see page 298) POU
can be exited.
In an FBD or LD network, you can place it in parallel or at the end of the previous elements. If the
input of a RETURN is TRUE, the processing of the POU will immediately be exited.
Execute the command Insert Return to insert a RETURN instruction. Alternatively, drag the element
from the toolbox (see page 328) or copy or move (see page 305) it from another position within the
editor.
RETURN element

In IL, the RET (see page 300) instruction is used for the same purpose.

336 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

Branch / Hanging Coil in FBD/LD/IL

Overview
In a Function Block Diagram (see page 296) or Ladder Diagram (see page 297) network, a branch
or a hanging coil splits up the processing line as from the current cursor position. The processing
line will continue in 2 subnetworks which will be executed 1 after each other from top to bottom.
Each subnetwork can get a further branch, such allowing multiple branching within a network.
Each subnetwork gets an own marker (an upright rectangle symbol). You can select it (cursor
position 11 (see page 316)) in order to perform actions on this arm of the branch.
Branch markers

In FBD, insert a branch via command Insert branch. Alternatively, drag the element from the
toolbox (see page 328). For the possible insert positions, refer to the description of the Insert
branch command.
NOTE: Cut and paste is not implemented for subnetworks.
A branch has been inserted at the SUB box output in the example shown below. This created 2
subnetworks, each selectable by their subnet marker. After that, an ADD box was added in each
subnetwork.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 337
FBD/LD/IL Editor

Network in FBD with inserted branch

To delete a subnetwork, first remove all elements of the subnetwork, that is all elements which are
positioned to the right of the marker of the subnetwork. Then select the marker and execute the
standard Delete command or press the DEL key.
In the following image, the 3-input-OR element has to be deleted before you can select and delete
the marker of the lower subnetwork.
Delete branch or subnetwork

338 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

Execution in Online Mode


The particular branches will be executed from left to right and then from top to bottom.

IL (Instruction List)
The IL (see page 298) does not support networks with branches. They will stay in the original
representation.

Parallel Branches
You can use parallel branches for setting up parallel branch (see page 340) evaluation in ladder
networks.
In contrast to the open branch (without the junction point), the parallel branches are closed. They
have common split and junction points.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 339
FBD/LD/IL Editor

Parallel Branch

Overview
A parallel branch allows you to implement a parallel evaluation of logical elements. This is
accomplished via a methodology described as Short Circuit Evaluation (SCE). SCE allows you to
by-pass the execution of a function block with a boolean output if certain parallel conditions are
evaluated to be TRUE. The condition can be represented in the LD editor by a parallel branch to
the function block branch. The SCE condition is defined by 1 or several contacts within this branch,
connected parallel or sequentially.
The vertical connections of short circuit evaluation branches executed in parallel are represented
by a double line in order to differentiate them from OR constructs that are represented by a single
line (see the figure Parallel branch for SCE in a ladder network).
NOTE: The term branch is also used for another element that splits off a signal flow. This branch
(see page 337) as opposed to the parallel branch has no junction point.
The parallel branch works as follows: first it will be parsed for the branches not containing a function
block. If 1 of such branches is evaluated to be TRUE, then the function block in the parallel branch
will not be called and the value at the input of the function block branch will be passed to the output.
If the SCE condition is evaluated to be FALSE, then the function block will be called and the
boolean result of the function block execution call will be passed on.
If all branches contain function blocks, then they will be evaluated in top-to-bottom order and the
outputs of them will be combined with logical OR operations. If there are no branches containing a
function block call, then the normal OR operation will be performed.
To insert a parallel branch with SCE function, select the function block box and execute the
command Insert Contact Parallel above or Insert Contact Parallel below. This is only possible if the
first input and the main output of the function block are of type BOOL.
Below is an example of the generated language model for the given network.

340 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

Example for SCE


The function block instance x1 (TON) has a boolean input and a boolean output. Its execution
can be skipped if the condition in the parallel branch is evaluated to be TRUE. This condition value
results from the OR and AND operations connecting the contacts cond1, cond2 and cond3.
Parallel branch for SCE in a ladder network

1 The double vertical connection lines indicate a construct that is subject to an SCE.
2 The single vertical connection line indicates an OR construct.

The processing is as shown in the following, whereby P_IN and P_OUT represent the boolean
value at the input (split point) and output (junction point) of the parallel branch, respectively.
P_IN := b1 AND b2;
IF ((P_IN AND cond1) AND (cond2 OR cond3)) THEN
P_OUT := P_IN;
ELSE
x1(IN := P_IN, PT := {p 10}t#2s);
tElapsed := [Link];
P_OUT := x1.Q;
END_IF
bRes := P_OUT AND b3;
The following images show the dataflow (blue) in case the function block is executed (condition
resulting from cond1, cond2 and cond3 is FALSE) or bypassed (condition is TRUE).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 341
FBD/LD/IL Editor

Condition=FALSE, function block is executed:

Condition=TRUE, function block is bypassed:

342 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

Branch Start / End

Overview
The branch start / end element is an LD element.
It allows you to define the start / end point of a branch. If there is no start point defined, you can
use the element to define it. Is the start point already defined the element determines the end point.
For further information, refer to the chapter Parallel Branch (see page 340).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 343
FBD/LD/IL Editor

Set/Reset in FBD/LD/IL

FBD and LD
A boolean output in FBD (see page 296) or correspondingly an LD (see page 297) coil can be set
or reset. To change between the set states, use the respective command Set/Reset from the
context menu when the output is selected. The output or coil will be marked by an S or an R.

Set If value TRUE arrives at a set output or coil, this output/coil will become TRUE
and remain TRUE. This value cannot be overwritten at this position as long as
the application is running.
Reset If value TRUE arrives at a reset output or coil, this output/coil will become FALSE
and remain FALSE. This value cannot be overwritten at this position as long as
the application is running.

Set output in FBD

In the LD editor, you can insert set and reset coils by drag and drop. To perform this action, use
either the ToolBox, category Ladder elements, or the S and R elements from the tool bar.
Example:
Set coil, reset coil

For further information, see Set/Reset Coil (see page 345).

IL
In an Instruction List, use the S and R (see page 300) operators to set or reset an operand.

344 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

Set/Reset Coil

Overview
Coils (see page 350) can also be defined as set or reset coils.
You can recognize a set coil by the S in the coil symbol: (S). A set coil will not overwrite the value
TRUE in the appropriate boolean variable. That is, the variable once set to TRUE remains TRUE.
You can recognize a reset coil by the R in the coil symbol: (R). A reset coil will not overwrite the
value FALSE in the appropriate boolean variable. That is, the variable once set to FALSE will
remain FALSE.
In the LD editor, you can insert set coils and reset coils directly via drag and drop from the ToolBox,
category Ladder elements. In doing so, you can also replace already inserted coil elements by
others.
Set coil, reset coil

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 345
FBD/LD/IL Editor

Execute

Overview
The Execute element is a block with EN/ENO that you can insert in an FBD or LD network and
that you can fill with ST code. The ST code is executed when the block is activated for processing
with a TRUE signal at the EN input.
Drag the Execute element from the toolbox (see page 328) into the network or execute the
FBD/LD/IL → Execute command (see EcoStruxure Machine Expert, Menu Commands, Online
Help) to insert the element.

Entering ST Code

Step Action Comment


1 Click the input field with the text Enter ST- The ST editor (see page 403) opens
Code here... in the box. providing the usual functionalities.

2 Enter ST code. The necessary variable declarations are


inserted in the declaration section of the
FBD/LD/IL function block.
3 Complete entering code by clicking out of the block or –
pressing Ctrl + Enter.

Online Mode
In online mode, you can open the ST editor by clicking the plus sign under the EN input on the
function block. The usual online functionalities (monitoring, debugging) are available in the editor.

346 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

Example
Examples for an Execute block in the FBD network.
Offline mode, ST program inserted

Online mode, ST editor open

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 347
FBD/LD/IL Editor

Section 11.3
LD Elements

LD Elements

What Is in This Section?


This section contains the following topics:
Topic Page
Contact 349
Coil 350

348 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
FBD/LD/IL Editor

Contact

Overview
This is an LD element.
In LD (see page 297) in its left part, each network contains 1 or several contacts. Contacts are
represented by 2 vertical, parallel lines.

Contacts pass on condition ON (TRUE) or OFF (FALSE) from left to right. A boolean variable is
assigned to each contact. If this variable is TRUE, the condition is passed from left to right and
finally to a coil in the right part of the network. Otherwise the right connection receives the value
FALSE.
You can connect multiple contacts in series as well as in parallel. Contacts in parallel represent a
logical 'OR' condition such that only one of them need be TRUE to have the parallel branch transmit
the value TRUE. Conversely, contacts in series represent a logical 'AND' condition whereas all the
contacts must be TRUE to have the final contact transmit TRUE.
Therefore, the contact arrangement corresponds to either an electric parallel or a series circuit.
A contact can also be negated. This is indicated by the slash in the contact symbol.

A negated contact passes on the incoming condition (TRUE or FALSE) only if the assigned
boolean variable is FALSE.
You can insert a contact in an LD network via one of the commands Insert Contact or Insert
Contact (right) Insert Contact Parallel (above), Insert Contact Parallel (below), Insert Rising Edge
Contact, or Insert Falling Edge Contact which are part of the LD menu. Alternatively, you can insert
the element via drag and drop from the ToolBox (see page 328) or from another position within the
editor (drag and drop).
You can replace an already inserted contact by a new contact or a negated contact. For this
purpose, drag a contact or a negated contact from the toolbox (see page 328) onto an existing
contact and drop it there.

FBD and IL
If you are working in FBD (see page 296) or IL (see page 298) view, the command will not be
available. But contacts and coils inserted in an LD network will be represented by corresponding
FBD elements or IL instructions.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 349
FBD/LD/IL Editor

Coil

Overview
This is an LD element.
On the right side of an LD network, there can be any number of coils which are represented by
parentheses.

They can only be arranged in parallel. A coil transmits the value of the connections from left to right
and copies it to an appropriate boolean variable. At the entry line, the value ON (TRUE) or the value
OFF (FALSE) can be present.
Coils can also be negated. This is indicated by the slash in the coil symbol.

In this case the negated value of the incoming signal will be copied to the appropriate boolean
variable.
You can insert a coil in a network via one of the commands Insert Coil, Insert Set Coil, Insert Reset
Coil, or Insert Negated Coil in the LD menu. Alternatively, you can insert the element via drag and
drop from the ToolBox (Ladder elements) or via drag and drop from another position within the
editor. Also refer to Set and Reset Coils (see page 345).

FBD and IL
If you are working in FBD (see page 296) or IL (see page 298) view, the command will not be
available. But contacts and coils inserted in an LD network will be represented by corresponding
FBD elements or IL instructions.

350 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Continuous Function Chart (CFC) Editor
EIO0000002854 06/2019

Chapter 12
Continuous Function Chart (CFC) Editor

Continuous Function Chart (CFC) Editor

What Is in This Chapter?


This chapter contains the following topics:
Topic Page
Continuous Function Chart (CFC) Language 352
CFC Editor 353
Cursor Positions in CFC 355
CFC Elements / ToolBox 357
Working in the CFC Editor 363
CFC Editor in Online Mode 366
CFC Editor Page-Oriented 369

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 351
Continuous Function Chart (CFC) Editor

Continuous Function Chart (CFC) Language

Overview
The Continuous Function Chart is an extension to the IEC 61131-3 standard, and is a graphical
programming language based on the Function Block Diagram (FBD) language (see page 296).
However, in contrast to the FBD language, there are no networks. CFC allows the free positioning
of graphic elements, which in turn allows for feedback loops.
For creating CFC programming objects in EcoStruxure Machine Expert, see the description of the
CFC editor (see page 353).

352 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Continuous Function Chart (CFC) Editor

CFC Editor

Overview
The CFC editor is a graphical editor available for programming objects in the continuous function
chart (CFC) programming language (see page 352), which is an extension to the IEC 61131-3
programming languages. Choose the language when you add a new program organization unit
(POU) object to your project. For large projects, consider using the page-oriented version
(see page 369).
The editor will be available in the lower part of the window which opens when opening a CFC POU
object. This window also includes the declaration editor (see page 426) in its upper part.
CFC editor

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 353
Continuous Function Chart (CFC) Editor

The CFC editor in contrast to the FBD / LD editor allows free positioning (see page 363) of the
elements, which allows direct insertion of feedback paths. The sequence of processing is
determined by a list which contains all currently inserted elements and can be modified.
The following elements are available in a toolbox (see page 357) and can be inserted via drag and
drop:
 box (operators, functions, function blocks, and programs)
 input
 output
 jump
 label
 return
 composer
 selector
 connection marks
 comments

You can connect the input and output pins of the elements by drawing a line with the mouse. The
path of the connecting line will be created automatically and will follow the shortest possible route.
The connecting lines are automatically adjusted as soon as the elements are moved. For further
information, refer to the description of inserting and arranging elements (see page 363). For
complex charts, you can use connection marks (see page 358) instead of lines. You may also
consider the possibility of modifying the routing.
It may happen that elements get positioned in a way that they cover already routed connections.
These collisions are indicated by red connection lines. If there are any collisions in the chart, the

button in the upper right corner of the editor view gets a red outline: . To edit the collisions step
by step, click this button and execute the command Show next collision. Then the next found
concerned connection will be selected.
For complex charts, you can use connection marks (see page 358) instead of lines. You may also
wish to use the page-oriented version of the CFC editor.

A zoom function allows you to change the dimension of the editor window: Use the button in
the lower right corner of the window and choose between the listed zoom factors. Alternatively, you
can select the entry ... to open a dialog box where you can type in any arbitrary factor.
You can call the commands for working in the CFC editor from the context menu or from the CFC
menu which is available as soon as the CFC editor is active.

354 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Continuous Function Chart (CFC) Editor

Cursor Positions in CFC

Overview
Cursor positions in a CFC program are indicated by a gray background when hovering over the
programming element.
When you click one of these shadowed areas, before releasing the mouse-button, the background
color will change to red. As soon as you release the mouse-button, this will become the current
cursor position, with the respective element or text being selected and displayed as red-colored.
There are 3 categories of cursor positions. See the possible positions indicated by a gray shaded
area as shown in the illustrations of the following paragraphs.

Cursor Positioned on a Text


If the cursor is positioned on a text and you click on the mouse-button, it is displayed as blue-
shaded and can be edited. The ... button is available for opening the input assistant. Primarily after
having inserted an element, the characters ??? represent the name of the element. Replace these
characters by a valid identifier. After that a tool tip is displayed by positioning the cursor on the
name of a variable or a box parameter. The tool tip contains the type of the variable or parameter
and, if it exists, the associated comment in a second line.
Possible cursor positions and an example of selected text:

Cursor Positioned on the Body of an Element


If the cursor is positioned on the body of an element (box, input, output, jump, label, return,
comment, connection mark), these will be displayed as red-colored and can be moved by moving
the mouse.
Possible cursor positions and example of a selected body:

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 355
Continuous Function Chart (CFC) Editor

Cursor Positioned on the Body on Input or Output Connection of an Element


If the cursor is positioned on an input or output connection of an element, a red filled square will
indicate that position (point of connection). It can be negated or set/reset.
Possible cursor positions (gray shadows) and examples of selected output and input positions (red
squares):

356 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Continuous Function Chart (CFC) Editor

CFC Elements / ToolBox

Overview
The graphical elements available for programming in the CFC editor (see page 353) window are
provided by a toolbox. Open the toolbox in a view window by executing the command ToolBox in
the View menu.

Select the desired element in the toolbox and insert (see page 363) it in the editor window via drag
and drop.

Besides the programming elements, there is an entry , at the top of the toolbox list. As
long as this entry is selected, the cursor has the shape of an arrow and you can select elements in
the editor window for positioning and editing.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 357
Continuous Function Chart (CFC) Editor

CFC Elements

Name Symbol Description


page The number of the page is given automatically according to its
position. You can enter the name (Overview in this example) in
the orange field at the top of the page.

control point A control point is needed to fix a manually modified connection


line routing. This helps to prevent the modification from being
reverted by the command Route all Connections. By 2 control
points you can mark a definite segment of a line for which you
want to modify the routing.

input You can select the text offered by ??? and replace it by a variable
or constant. The input assistance serves to select a valid
identifier.
output

box You can use a box to represent operators, functions, function


blocks, and programs. You can select the text offered by ??? and
replace it by an operator, function, function block, or program
name. The input assistance serves to select one of the available
objects.
If you insert a function block, another ??? will be displayed above
the box. Replace the question marks by the name of the function
block instance. If a function block with constant input parameters
is instantiated, then the box element shows a field Parameters...
in the bottom left corner of the box. Click this button to open a
dialog box for editing the input parameters. Refer to the Edit
Parameters... chapter (see EcoStruxure Machine Expert, Menu
Commands, Online Help).
If you replace an existing box by another (by modifying the
entered name) and the new one has a different minimum or
maximum number of input or output pins, the pins will be adapted
correspondingly. If pins are to be removed, the lowest one will be
removed first.
jump Use the jump element to indicate at which position the execution
of the program should continue. This position is defined by a label
(see below). Therefore, replace the text offered by ??? by the
label name.
label A label marks the position to which the program can jump (see the
element jump).
In online mode, a return label for marking the end of POU is
automatically inserted.

358 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Continuous Function Chart (CFC) Editor

Name Symbol Description


return In online mode, a return element is automatically inserted in the
first column and after the last element in the editor. In stepping, it
is automatically jumped to before execution leaves the POU.
composer Use a composer to handle an input of a box which is of type of a
structure. The composer will display the structure components
and thus make them accessible in the CFC for the programmer.
For this purpose name the composer like the concerned structure
(by replacing ??? by the name) and connect it to the box instead
of using an input element.
selector A selector in contrast to the composer is used to handle an output
of a box which is a type of structure. The selector will display the
structure components and thus make them accessible in the CFC
for the programmer. For this purpose, name the selector like the
concerned structure (replace ??? by the name) and connect it to
the box instead of using an output element.
comment Use this element to add any comments to the chart. Select the
placeholder text and replace it with any desired text. To obtain a
new line within the comment, press CTRL + ENTER.
connection You can use connection marks instead of a connection line
mark – (see page 364) between elements. This can help to clear
source complex charts.
connection For a valid connection, assign a connection mark – source
mark – sink element at the output of an element and assign a connection mark
– sink (see below) at the input of another element. Assign the
same name to both marks (no case-sensitivity).
Naming:
The first connection mark – source element inserted in a CFC by
default is named C-1 and can be modified manually. In its
counterpart connection mark – sink, replace the ??? by the same
name string as used in the source [Link] editor will verify that
the names of the marks are unique. If the name of a source mark
is changed, the name of the connected sink mark will
automatically be renamed as well. However, if a sink mark is
renamed, the source mark will keep the old name. This allows you
to reconfigure connections. Likewise, removing a connection
mark does not remove its counterpart.
To use a connection mark in the chart, drag it from the toolbox to
the editor window and then connect its pin with the output or input
pin of the respective element. Alternatively you can convert an
existing normal connection line by using the command
Connection Mark. This command allows you to change
connection marks back to normal connection lines as well.
For figures showing some examples of connection marks, refer to
the chapter Connection Mark.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 359
Continuous Function Chart (CFC) Editor

Name Symbol Description


input pin Depending on the box type, you can add an additional input. For
this purpose, select the box element in the CFC network and draw
the input pin element on the box.
You can drag an input or output connection to another position at
the box while keeping pressed the Ctrl key.

output pin – Depending on the box type, you can add an additional output. For
this purpose, select the box element in the CFC network and draw
the output pin element on the box.
You can drag an input or output connection to another position at
the box while keeping pressed the Ctrl key.

Example of a Composer
A CFC program cfc_prog handles an instance of function block fublo1, which has an input
variable struvar of type structure. Use the composer element to access the structure
components.
Structure definition stru1 :
TYPE stru1 :
STRUCT
ivar:INT;
strvar:STRING:='hallo';
END_STRUCT
END_TYPE
Declaration and implementation of function block fublo1:
FUNCTION_BLOCK fublo1
VAR_INPUT
struvar:STRU1;
END_VAR
VAR_OUTPUT
fbout_i:INT;
fbout_str:STRING;
END_VAR
VAR
fbvar:STRING:='world';
END_VAR
fbout_i:=[Link]+2;
fbout_str:=CONCAT ([Link],fbvar);

360 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Continuous Function Chart (CFC) Editor

Declaration and implementation of program cfc_prog:


PROGRAM cfc_prog
VAR
intvar: INT;
stringvar: STRING;
fbinst: fublo1;
erg1: INT;
erg2: STRING;
END_VAR
Composer element

1 composer
2 function block with input variable struvar of type structure stru1

Example of a Selector
A CFC program cfc_prog handles an instance of function block fublo2, which has an output
variable fbout of type structure stru1. Use the selector element to access the structure
components.
Structure definition stru1:
TYPE stru1 :
STRUCT
ivar:INT;
strvar:STRING:='hallo';
END_STRUCT
END_TYPE

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 361
Continuous Function Chart (CFC) Editor

Declaration and implementation of function block fublo1:


FUNCTION_BLOCK fublo2
VAR_INPUT CONSTANT
fbin1:INT;
fbin2:DWORD:=24354333;
fbin3:STRING:='hallo';
END_VAR
VAR_INPUT
fbin : INT;
END_VAR
VAR_OUTPUT
fbout : stru1;
fbout2:DWORD;
END_VAR
VAR
fbvar:INT;
fbvar2:STRING;
END_VAR
Declaration and implementation of program cfc_prog:
VAR
intvar: INT;
stringvar: STRING;
fbinst: fublo1;
erg1: INT;
erg2: STRING;
fbinst2: fublo2;
END_VAR
The illustration shows a selector element where the unused pins have been removed by executing
the command Remove Unused Pins.

1 function block with output variable fbout of type structure stru1


2 selector

362 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Continuous Function Chart (CFC) Editor

Working in the CFC Editor

Overview
The elements available for programming in the CFC editor are provided in the ToolBox
(see page 357) which by default is available in a window as soon as the CFC editor is opened.
The Tools → Options → CFC editor defines general settings for working within the editor.

Inserting
To insert an element, select it in the ToolBox (see page 357) by a mouse-click, keep the mouse-
button pressed and drag the element to the desired position in the editor window. During dragging,
the cursor will be displayed as an arrow plus a rectangle and a plus-sign. When you release the
mouse-button, the element will be inserted.

Selecting
To select an inserted element for further actions such as editing or rearranging, click an element
body to select the element. It will be displayed by default as red-shaded. By additionally pressing
the SHIFT key, you can click and select further elements. You can also press the left mouse-button
and draw a dotted rectangle around all elements which you want to select. As soon as you release
the button the selection will be indicated. By command Select all , all elements are selected at
once.
By using the arrow keys you can shift the selection mark to the next possible cursor position. The
sequence depends on the execution order or the elements, which is indicated by element numbers
(see page 365).
When an input pin is selected and you press CTRL + LEFT ARROW, the corresponding output will
be selected. When an output pin is selected and you press CTRL + LEFT ARROW, the
corresponding outputs will be selected.

Drag and Drop of Variables


You can directly insert variables from the GVL (see page 218) or a POU (see page 171) as an
input or output element of a function block. To achieve this, select the variable in the GVL or POU,
and drag it to the input or output pin of a function block. The input or output element for this variable
is automatically created and connected to the pin of the function block.

Replacing Boxes
To replace an existing box element, replace the currently inserted identifier by that of the desired
new element. The number of input and output pins will be adapted if necessary due to the definition
of the POUs and thus some existing assignments could be removed.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 363
Continuous Function Chart (CFC) Editor

Moving
To move an element, select the element by clicking the element body (see possible cursor
positions (see page 355)) and drag it, while keeping the mouse-button pressed, to the desired
position. Then release the mouse-button to place the element. You also can use the Cut and Paste
commands for this purpose.

Connecting
You can connect the input and output pins of 2 elements by a connection line or via connection
marks.
Connection line: You can either select a valid point of connection that is an input or output pin of
an element (refer to Cursor Positions in CFC (see page 355)), and then draw a line to another point
of connection with the mouse. Or you can select 2 points of connection and execute the command
Select connected pins. A selected possible point of connection is indicated by a red filled square.
When you draw a line from such a point to the target element, you can identify the possible target
point of connection. When you then position the cursor over a valid connection point, an arrow
symbol is added to the cursor when moving over that point, indicating the possible connection.
The following figure provides an example: After a mouse-click on the input pin of the var1 element,
the red rectangle is displayed showing that this is a selected connection point. By keeping the
mouse button pressed, move the cursor to the output pin of the ADD box until the cursor symbol
appears as shown in the figure. Now release the mouse button to establish the connection line.

The shortest possible connection is created taking into account the other elements and
connections.
You can drag an input or output connection to another position at the box while keeping pressed
the Ctrl key.
Connection marks: you could as well use connection marks instead of connection lines in order to
simplify complex charts. Refer to the description of connection marks (see page 358).

Copying
To copy an element, select it and use the Copy and Paste commands.

Editing
After you have inserted an element, by default the text part is represented by ???. To replace this
by the desired text (POU name, label name, instance name, comment, and so on), click the text to
obtain an edit field. Also the button ... will be available to open the Input Assistant.

364 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Continuous Function Chart (CFC) Editor

Deleting
You can delete a selected element or connection line by executing the command Delete, which is
available in the context menu or press the DEL key.

Opening a Function Block


If a function block is added to the editor, you can open this block with a double-click. Alternatively,
use the command Browse → Go To Definition from the context menu.

Execution Order, Element Numbers


The sequence in which the elements in a CFC network are executed in online mode is indicated
by numbers in the upper right corner of the box, output, jump, return, and label elements. The
processing starts at the element with the lowest number, which is 0.
You can modify the execution order by commands which are available in the submenu Execution
Order of the CFC menu.
When adding an element, the number will automatically be given according to the topological
sequence (from left to right and from top to bottom). The new element receives the number of its
topological successor if the sequence has already been changed, and all higher numbers are
increased by 1.
Consider that the number of an element remains constant when it is moved.
Consider that the sequence influences the result and must be changed in certain cases.

Changing Size of the Working Sheet


In order to get more space around an existing CFC chart in the editor window, you can change the
size of the working area (working sheet). Do this by selecting and dragging all elements with the
mouse or use the cut-and-paste commands (refer to Moving (see page 364))
Alternatively, you can use a special dimension settings dialog box. This may save time in the case
of large charts. Refer to the description of the Edit Working Sheet dialog box (see EcoStruxure
Machine Expert, Menu Commands, Online Help). In case of page-oriented CFC, you can use the
Edit Page Size command (see EcoStruxure Machine Expert, Menu Commands, Online Help).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 365
Continuous Function Chart (CFC) Editor

CFC Editor in Online Mode

Overview
In online mode, the CFC editor provides views for monitoring, writing and forcing the variables and
expressions on the controller. The debugging functionality (breakpoints, stepping, and so on) is
available as described below.
 For information on how to open objects in online mode, refer to the description of the user
interface in online mode (see page 55).
 The editor window of a CFC object also includes the declaration editor in the upper part. Refer
to the description of the declaration editor in online mode (see page 432).
 For information on how to edit parameters in the CFC editor, refer to the description of the Edit
Parameters... command (see EcoStruxure Machine Expert, Menu Commands, Online Help).

Monitoring
The actual values are displayed in small monitoring windows behind each variable (inline
monitoring).
Online view of a program object PLC_PRG:

Note for the online view of a function block POU, that monitoring is only possible in an instance
view. In the base implementation of the function block POU, no values are displayed. The column
Value contains the text Value of the expression and the inline monitoring fields in the implemen-
tation part show three question marks each.
Boolean connections are monitored in the colors TRUE = blue and FALSE = black.

366 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Continuous Function Chart (CFC) Editor

Forcing/Writing Variables
In online mode, you can prepare a value for forcing or writing a monitored variable either in the
declaration editor or - if the option Prepare values in implementation part is activated - also in the
implementation part. For working in the declaration editor, refer to the chapter Declaration Editor
in Online Mode (see page 432). In the implementation part, click the monitoring box next to the
respective element or directly the element to open the Prepare Value dialog box (see page 405).
For boolean variables, no dialog box opens, but clicking the value currently displayed next to the
variable directly toggles between the possible values to be forced or written. In the monitoring box
of a currently forced variable a red F is displayed.
Forced value in the implementation part

If the CFC option Prepare values in implementation part is enabled, then the value currently
prepared for writing or forcing is displayed behind the current value in angle brackets in the
monitoring field of a variable.
Prepared value in the implementation part

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 367
Continuous Function Chart (CFC) Editor

Breakpoint Positions in CFC Editor


The possible breakpoint positions basically are those positions in a POU at which values of
variables can change or at which the program flow branches out or another POU is called. See
possible positions in the following image.
Breakpoint positions in CFC editor:

NOTE: A breakpoint will be set automatically in all methods which may be called. If an interface-
managed method is called, breakpoints will be set in all methods of function blocks implementing
that interface and in all derivative function blocks subscribing the method. If a method is called via
a pointer on a function block, breakpoints will be set in the method of the function block and in all
derivative function blocks which are subscribing to the method.

368 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Continuous Function Chart (CFC) Editor

CFC Editor Page-Oriented

Overview
In addition to the CFC standard editor, EcoStruxure Machine Expert provides the CFC editor
pagination. Besides the tools (see page 357) and commands of the standard CFC editor, this
editor allows you to arrange the elements on any number of different pages.
NOTE: You cannot convert POUs created in the language CFC page-oriented to normal CFC and
vice versa. You can copy elements between these 2 editors with the copy and paste commands
(via clipboard) or the drag and drop function.
CFC pagination

To change the size of the page execute the command Edit Page Size.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 369
Continuous Function Chart (CFC) Editor

Connections Between 2 Pages


Connections between 2 pages are realized with the elements connection mark – source and
connection mark – sink (refer to the description of connection marks). You can place the
connection mark – source by drag and drop to the right margin - the connection mark – sink to the
left margin. If you draw a connection line from an input or output of an element to the margin, the
connection mark is placed automatically. Click the ... button to open the list of connection marks
provided by the Input Assistant.
Use the arrow keys to navigate within the diagram from one element to the next.
Insertion of connection marks

Execution Order
The execution order of the pages is from top to the bottom. Within a page, the order follows the
rules of the standard CFC editor (refer to further information of execution order (see page 365)).
You can change the execution order of elements only within the associated page. You cannot
change the execution order of elements on different pages.

370 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Sequential Function chart (SFC) Editor
EIO0000002854 06/2019

Chapter 13
Sequential Function Chart (SFC) Editor

Sequential Function Chart (SFC) Editor

What Is in This Chapter?


This chapter contains the following topics:
Topic Page
SFC Editor 372
SFC - Sequential Function Chart Language 374
Cursor Positions in SFC 375
Working in the SFC Editor 377
SFC Element Properties 379
SFC Elements / ToolBox 381
Qualifier for Actions in SFC 392
Implicit Variables - SFC Flags 393
Sequence of Processing in SFC 398
SFC Editor in Online Mode 400

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 371
Sequential Function chart (SFC) Editor

SFC Editor

Overview
The SFC editor is available for programming objects in the IEC 61131-3 programming language
SFC - Sequential Function Chart (see page 374). Choose the language when you add a new POU
object to the project.
The SFC editor is a graphical editor. Perform general settings concerning behavior and display in
the Options → SFC editor dialog box.
The SFC editor is available in the lower part of the window which opens when you edit an SFC
POU object. This window also includes the Declaration Editor (see page 426) in the upper part.
SFC editor

372 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Sequential Function chart (SFC) Editor

Working with the SFC Editor


The elements (see page 381) used in an SFC diagram are available in the SFC menu. The menu
is available as soon as the SFC editor is active. Arrange them in a sequence or in parallel
sequences of steps which are connected by transitions. For further information, refer to Working in
the SFC Editor (see page 377).
You can edit the properties of steps in a separate properties (see page 379) window. Among
others, you can define the minimum and maximum time of activity for each step.
You can access implicit variables (see page 393) for controlling the processing of an SFC (for
example, step status, timeout analyzation, reset).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 373
Sequential Function chart (SFC) Editor

SFC - Sequential Function Chart Language

Overview
The Sequential Function Chart (SFC) is a graphically oriented language which describes the
chronological order of particular actions within a program. These actions are available as separate
programming objects, written in any available programming language. In SFC, they are assigned
to step elements and the sequence of processing is controlled by transition elements. For a
detailed description on how the steps will be processed in online mode, refer to Sequence of
Processing in SFC (see page 398).
For information on how to use the SFC editor in EcoStruxure Machine Expert, refer to the
description of the SFC Editor (see page 372).

Example
Example for a sequence of steps in an SFC module:

374 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Sequential Function chart (SFC) Editor

Cursor Positions in SFC

Overview
Possible cursor positions in an SFC diagram in the SFC editor (see page 372) are indicated by a
gray shadow when moving with the cursor over the elements.

Cursor Positions in Texts


There are 2 categories of cursor positions: texts and element bodies. See the possible positions
indicated by a gray shaded area as shown in the following illustrations:
Possible cursor positions in texts:

When you click a text cursor position, the string will become editable.
Select action name for editing:

Cursor Positions in Element Bodies


Possible cursor positions in element bodies:

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 375
Sequential Function chart (SFC) Editor

When you click a shadowed area, the element is selected. It gets a dotted frame and is displayed
as red-shaded (for multiple selection, refer to Working in the SFC Editor (see page 377) ).
Selected step element

376 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Sequential Function chart (SFC) Editor

Working in the SFC Editor

Overview
By default, a new SFC POU contains an initial step and a subsequent transition. This chapter
provides information on how to add further elements, and how to arrange and edit the elements.

Possible Cursor Positions


For further information, refer to the chapter Cursor Positions in SFC (see page 375).

Navigating
Use the arrow keys to jump to the next or previous element in the chart.

Inserting Elements
To insert the particular SFC elements (see page 381), execute the respective commands from the
SFC menu. For further information, refer to the description of the SFC editor commands
(see EcoStruxure Machine Expert, Menu Commands, Online Help). Double-click an already
inserted step, transition, or action element, which does not yet reference a programming object, to
open a dialog box for assigning one.

Selecting Elements
Select an element or text field by clicking a possible cursor position. You can also give the selection
to an adjacent element by using the arrow keys. The element will change color to red. For example,
see the chapter Cursor Positions in SFC (see page 375).
NOTE: In contrast to previous versions of EcoStruxure Machine Expert, you can select and thus
also move (cut, copy, paste) or delete steps and transitions separately.
For multiple selection, the following possibilities are available:
 Keep the SHIFT key pressed and then click the particular elements to be selected.
 Press the left mouse-key and draw a rectangle (dotted line) around the elements to be selected.
 Execute the command Select All, by default from the Edit menu.

Editing Texts
Click a text cursor position to open the edit field, where you can edit the text. If a text area has been
selected via the arrow keys, open the edit field explicitly by using the SPACE bar.

Editing Associated Actions


Double-click a step (entry, active, or exit) or transition action association to open the associated
action in the corresponding editor. You can, for example, double-click the transition element or the
triangle indicating an exit action in a step element.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 377
Sequential Function chart (SFC) Editor

Cutting, Copying, Pasting Elements


Select the elements and execute the command Cut, Copy, or Paste (from the Edit menu) or use
the corresponding keys.
NOTE:
 When you paste one or several cut or copied elements, the content of the clipboard will be
inserted before the currently selected position. If nothing is selected, the elements will be
appended at the end of the currently loaded chart.
 If you paste a branch while the currently selected element is also a branch, the pasted branch
elements will be inserted to the left of the existing elements.
 If you paste an action (list) at a currently selected step, the actions will be added at the beginning
of the action list of the step or an action list for the step will be created.
 Incompatible elements when cutting/copying:
If you select an associated action (list) and additionally an element which is not the step to which
the action (list) belongs, a message box will display: The current selection contains incompatible
elements. No data will be filed to the clipboard. The selection will not be stored and you cannot
paste or copy it somewhere else.
 Incompatible elements when pasting:
If you try to paste an action (list) while the currently selected element is not a step or another
association, a message box will display: The current clipboard content cannot be pasted at the
current selection. If you try to paste an element like a step, branch, or transition when currently
an associated action (list) is selected, the same message box will display.
 For copying step and transition elements that call action objects or transition objects, two
different duplication modes are available. Either the references are copied only, or the
referenced objects are embedded and duplicated when copying. Select a mode in the Element
Properties dialog box with the Duplicate on copy option (see page 380).

Deleting Elements
Select the elements and execute the command Delete or press the DEL key.
Consider the following:
 Deleting a step also deletes the associated action list.
 Deleting the initial step automatically sets the following step to be the initial one. This option
Initial step will be activated in the properties of this step.
 Deleting the horizontal line preceding a branched area will delete all branches.
 Deleting all particular elements of a branch will delete the branch.

378 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Sequential Function chart (SFC) Editor

SFC Element Properties

Overview
You can view and edit the properties of an SFC element in the Element Properties dialog box.
Open this dialog box via the command Element Properties, which is part of the View menu.
It depends on the currently selected element which properties are displayed.
You can configure whether the particular types of properties should be displayed next to an
element in the SFC chart from the View tab of the SFC editor options.

Common Properties

Property Description
Name Element name, by default <element><running number>
Examples: step name Step0, Step1, branch name branch0
and so on.
Comment Element comment, text stringExample: Reset the counter.
Press CTRL + ENTER to insert line breaks.
Symbol For each SFC element implicitly a flag is created, named like
the element.
Here you can specify whether this flag variable should be
exported to the symbol configuration and how the symbol
then should be accessible in the controller.
None: The symbol will be exported to the symbol
configuration, but it will not be accessible in the controller.
Read: The symbol will be exported to the symbol
configuration and it will be readable in the controller.
Write: The symbol will be exported to the symbol
configuration and it will be written to the controller.
Read/Write: Combination of read and write.
By default, this field is left empty. That is that no symbol is
exported to the symbol configuration.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 379
Sequential Function chart (SFC) Editor

Specific Properties

Specific Property Description


Initial step This option is activated in the properties of the current initial
step (init step) (see page 381). By default, it is activated for
the first step in an SFC and deactivated for other steps. If you
activate this option for another step, you must deactivate it in
the previous init step. Otherwise, a compiler error will be
generated.
Duplicate on copy This option is available for steps that contain a step action
(entry action, main action, or exit action), and for transitions
that are linked to a transition object.
If the option Duplicate on copy is selected, a new object is
created for each called action, step, and property when the
step or transition is copied. The new object contains a copy
of the implementation code of the source object.
If the option Duplicate on copy is not selected, the link to the
called object is retained for the associated actions, steps,
and properties when the step or transition is copied. New
objects are not created. The source and the copies of the
step or transition call the same action, step, or property.
Times Defines the minimum and maximum processing times for the
step.
Minimal active Minimum length of time the processing of this step should
take, even though the following transition is TRUE.
Permissible values: time according to IEC syntax (for
example, t#8s) or TIME variable; default: t#0s.
Maximal active Maximum length of time the processing of this step should
take. Time outs in steps are indicated by the implicit variable
(see page 393) SFCError flag. Permissible values: time
according to IEC syntax (for example, t#8s) or TIME
variable; default: t#0s
Actions Defines the actions (see page 384) to be performed when
the step is active. Refer to the description of the Sequence
of Processing in SFC (see page 398) for details.
Step entry This action will be executed after the step has become
active.
Step active This action will be executed when the step is active and
possible entry actions have already been processed.
Step exit This action will be executed in the subsequent cycle after a
step has been deactivated (exit action).

NOTE: Use the appropriate implicit variables to determine the status of actions and time outs via
SFC flags (see page 393).

380 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Sequential Function chart (SFC) Editor

SFC Elements / ToolBox

Overview
You can insert the graphic elements usable for programming in the SFC editor window by
executing the commands from the SFC menu.
For information on working in the editor, refer to the description in the chapter Working in the SFC
Editor (see page 377)
The following elements are available and are described in this chapter:
 step (see page 381)
 transition (see page 381)
 action (see page 384)
 branch (alternative) (see page 388)
 branch (parallel) (see page 388)
 jump (see page 390)
 macro (see page 390)

Step / Transition
To insert a single step or a single transition, execute the command Step or Transition from the
ToolBox. Steps and transitions can also be inserted in combination, via command Insert step-
transition ( ) or Insert step-transition after ( ) from the toolbar.
A step is represented by a box primarily containing an automatically generated step name. It is
connected to the preceding and subsequent transition by a line. The box frame of the first step
within an SFC, the initial step, is double-lined.
The transition is represented by a small rectangle. After inserting it has a default name, Trans<n>,
whereby n is a running number.
Example for step and subsequent transition:

Example for initial step and subsequent transition:

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 381
Sequential Function chart (SFC) Editor

You can edit the step and transition names inline.


Step names must be unique in the scope of the parent POU. Consider this especially when using
actions programmed in SFC. Otherwise an error will be detected during the build process.
You can transform each step to an initial step by executing the command Init step or by activating
the respective step property. An initial step will be executed first when the IL-POU is called.
Each step is defined by the step properties (see page 379).
After you have inserted a step, associate the actions to be performed when the step is active
(processed); see below for further information on actions (see page 384).

Recommendations on Transitions
A transition has to provide the condition on which the subsequent step shall become active as soon
as the condition value is TRUE. Therefore, a transition condition must have the value TRUE or
FALSE.
A transition condition can be defined in the following 2 ways:

Type of Definition Type of Condition Description


direct inline Replace the default transition name by one of the following
elements:
 boolean variable
 boolean address
 boolean constant
 instruction having a boolean result (example: (i<100)
AND b).
You cannot specify programs, function blocks, or
assignments here.
using a separate multi-use Replace the default transition name by the name of a
transition or property
object transition ( ) or property object ( ) available in the
project. (This allows multiple use of transitions; see for
example condition_xy in the figures below.)
The object like an inline transition can contain the following
elements:
 boolean variable
 address
 constant
 instruction
 multiple statements with arbitrary code

NOTE: If a transition produces multiple statements, assign the desired expression to a transition
variable.
NOTE: Transitions which consist of a transition or a property object are indicated by a small triangle
in the upper right corner of the rectangle.

382 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Sequential Function chart (SFC) Editor

Transition object (multiple use transition):

Examples of transitions:

1 Transition conditions entered directly


2 Transition condition_xy programmed in ST

Multiple use conditions (transitions or properties) are indicated by a triangle:

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 383
Sequential Function chart (SFC) Editor

In contrast to previous versions of EcoStruxure Machine Expert, a transition call is handled like a
method call. It will be entered according to the following syntax:
<transition name>:=<transition condition>;
Example: trans1:= (a=100);
or just
<transition condition>;
Example: a=100;
See also an example (condition_xy) in the figure Examples of transitions.

Action
An action can contain a series of instructions written in one of the valid programming languages. It
is assigned to a step and, in online mode, it will be processed according to the defined sequence
of processing (see page 398) .
Each action to be used in SFC steps must be available as a valid POU within the SFC POU or the

project ( ).

Step names must be unique in the scope of the parent POU. An action may not contain a step
having the same name as the step to which it is assigned to. Otherwise, an error will be detected
during the build process.
Example of an action written in ST

The IEC conforming and the IEC extending step actions are described in the following paragraphs.

384 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Sequential Function chart (SFC) Editor

IEC Conforming Step Action (IEC Action)


This is an action according to the IEC61131-3 standard which will be processed according to its
qualifier (see page 392) when the step becomes active, and then a second time when it becomes
deactivated. In case of assigning multiple actions to a step, the action list will be executed from top
to bottom.
 Different qualifiers can be used for IEC step actions in contrast to a normal step action.
 A further difference to the normal step actions is that each IEC step action is provided with a
control flag. This permits that, even if the action is called also by another step, the action is
executed always only once at a time. This is not the case with the normal step actions.
 An IEC step action is represented by a bipartite box connected to the right of a step via a
connection line. In the left part, it shows the action qualifier, in the right part the action name.
You can both edit inline.
 IEC step actions are associated to a step via the Insert action association command. You can
associate one or multiple actions with a step. The position of the new action depends on the
current cursor position and the command. The actions have to be available in the project and
be inserted with a unique action name (for example, plc_prg.a1).
IEC conforming step action list associated to a step:

Each action box in the first column shows the qualifier and in the second the action name.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 385
Sequential Function chart (SFC) Editor

IEC Extending Step Actions


These are actions extending the IEC standard. They have to be available as objects below the
SFC object. Select unique action names. They are defined in the step properties.
The table lists the IEC extending step actions:

Action Type Processing Association Representation


step entry action This type of step action will The action is associated to It is represented by an E in
(step activated) be processed as soon as a step via an entry in the the lower left corner of the
the step has become active Step entry field of the step respective step box.
and before the step active properties (see page 379).
action.
step active action This type of step action will The action is associated to It is represented by a small
(step action) be processed when the a step via an entry in the triangle in the upper right
step has become active Step active field of the step corner of the respective
and after a possible step properties (see page 379). step box.
entry action of this step has
been processed. However,
in contrast to an IEC step
action (see above) it is not
executed again when it is
deactivated and cannot get
assigned qualifiers.
step exit action An exit action will be The action is associated to It is represented by an X in
(step deactivated) executed once when the a step via an entry in the the lower right corner of the
step becomes deactivated. Step exit field of the step respective step box.
However, this execution will properties (see page 379).
not be done in the same,
but at the beginning of the
subsequent cycle.

IEC extending step actions

386 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Sequential Function chart (SFC) Editor

Example: Differences Between IEC Matching / Extending Step Actions


The main difference between step actions and IEC actions with qualifier N is that the IEC action is
at least executed twice: first time when the step is active and the second time when the step is
deactivated. See the following example.

Action Action_AS1 is associated to step AS1 as a step action (left), or as an IEC action with
qualifier N (right). Due to the fact that in both cases 2 transitions are used, it will take 2 controller
cycles each before the initial step is reached again, assuming that a variable iCounter is
incremented in Action_AS1. After a reactivation of step Init, iCounter in the left example will
have value 1. In the right one however, it will have value 2 because the IEC action - due to the
deactivation of AS1 - has been executed twice.
For further information on qualifiers, refer to the list of available qualifiers (see page 392).
In contrast to IEC actions, step actions can be embedded in such a way that they can only be called
from the corresponding step. If you copy this step, new action objects are automatically created
and the implementation code is duplicated. Select the duplication mode for step actions as Copy
reference or Copy implementation in the dialog box that is displayed when you insert the first action
into the step. You can select the duplication mode later by activating the Duplicate on copy option
(see page 380) in the Element Properties dialog box. It is also possible to configure the Default
insertion method as a general option in the Tools → Options → SFC Editor dialog box
(see EcoStruxure Machine Expert, Menu Commands, Online Help).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 387
Sequential Function chart (SFC) Editor

Branches
A sequential function chart (SFC) can diverge; that is the processing line can be branched into 2 or
several further lines (branches). Parallel branches (see page 388) will be processed parallel
(simultaneously). In the case of alternative branches (see page 388), only one will be processed
depending on the preceding transition condition. Each branching within a chart is preceded by a
horizontal double (parallel) or simple (alternative) line and also terminated by such a line or by a
jump (see page 390).

Parallel Branch

A parallel branch has to begin and end with a step. Parallel branches can contain alternative
branches or other parallel branches.
The horizontal lines before and after the branched area are double-lines.
Processing in online mode: If the preceding transition (t2 in the example shown on the left) is
TRUE, the first steps of all parallel branches will become active (Step11 and Step21). The
particular branches will be processed in parallel to one another before the subsequent transition
(t3) will be recognized.
To insert a parallel branch, select a step and execute the command Insert branch right.
You can transform parallel and alternative branches to each other by executing the commands
Parallel or Alternative.
Automatically a branch label is added at the horizontal line preceding the branching which is
named Branch<n> whereby n is a running number starting with 0. You can specify this label when
defining a jump target (see page 390).

388 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Sequential Function chart (SFC) Editor

Alternative Branch

The horizontal lines before and after the branched area are simple lines.
An alternative branch has to begin and end with a transition. Alternative branches can contain
parallel branches and other alternative branches.
If the step which precedes the alternative beginning line is active, then the first transition of each
alternative branch will be evaluated from left to right. The first transition from the left whose
transition condition has value TRUE, will be opened, and the following steps will be activated.
To insert alternative branches, select a transition and execute the command Insert branch right.
You can transform parallel and alternative branches from one another by executing the commands
Parallel or Alternative.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 389
Sequential Function chart (SFC) Editor

Jump

A jump is represented by a vertical connection line plus a horizontal arrow and the name of the
jump target. It defines the next step to be processed as soon as the preceding transition is TRUE.
You can use jumps to avoid that processing lines cross or lead upward.
Besides the default jump at the end of the chart, a jump may only be used at the end of a branch.
To insert a jump, select the last transition of the branch and execute the command Insert jump.
The target of the jump is specified by the associated text string which can be edited. It can be a
step name or the label of a parallel branch.

Macro
Main SFC editor view

390 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Sequential Function chart (SFC) Editor

Macro editor view for Macro1

A macro is represented by a bold-framed box containing the macro name. It includes a part of the
SFC chart, which thus is not directly visible in the main editor view. The process flow is not
influenced by using macros; it is just a way to hide some parts of the program, for example, in order
to simplify the display. To insert a macro box, execute the command Insert macro (after). The
macro name can be edited.
To open the macro editor, double-click the macro box or execute the command Zoom into macro.
You can edit here just as in the main editor view and enter the desired section of the SFC chart.
To get out, execute the command Zoom out of macro.
The title line of the macro editor shows the path of the macro within the current SFC example:

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 391
Sequential Function chart (SFC) Editor

Qualifier for Actions in SFC

Overview
In order to configure in which way the actions (see page 384) should be associated to the
IEC steps, some qualifiers are available, which are to be inserted in the qualifier field of an action
element.

Available Qualifiers

Qualifier Long Form Description


N non-stored The action is active as long as the step is active.
R0 overriding reset The action becomes deactivated.
S0 set (stored) The action will be started when the step becomes active
and will be continued after the step is deactivated until
the action is reset.
L time limited The action will be started when the step becomes active.
It will continue until the step becomes inactive or a set
time has passed.
D time delayed A delay timer will be started when the step becomes
active. If the step is still active after the time delay, the
action will start and continue until it is deactivated.
NOTE: When two consecutive steps have a D (time
delayed) action for setting the same boolean variable,
this variable will not be reset during the transition from
one step to the other. In order to reset the variable, insert
an intermediate step between the two steps.
P pulse The action will be started when the step becomes
active/deactive and will be executed once.
SD stored and time delayed The action will be started after the set time delay and it
will continue until it is reset.
DS delayed and stored If the step is still active after the specified time delay, the
action will start and it will continue until it is reset.
SL stored and time limited The action will be started when the step becomes active
and it will continue for the specified time or until a reset.

The qualifiers L, D, SD, DS, and SL need a time value in the TIME constant format. Enter it directly
after the qualifier, separated by a blank space, for example L T#10s.
NOTE: When an IEC action has been deactivated, it will be executed one more time. The
implication is that each action will execute at least twice.

392 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Sequential Function chart (SFC) Editor

Implicit Variables - SFC Flags

Overview
Each SFC step and IEC action provides implicitly generated variables for watching the status
(see page 393) of steps and IEC actions during runtime. Also, you can define variables for
watching and controlling the execution of an SFC (timeouts, reset, tip mode). These variables can
also be generated implicitly by the SFC object.
Basically, for each step and each IEC action, an implicit variable is generated. A structure instance,
named for the element, for example, step1 for a step with step name step1. You can define in the
element properties (see page 379) whether for this flag a symbol definition should be exported to
the symbol configuration and how this symbol should be accessible in the controller.
The data types for those implicit variables are defined in library [Link]. This library will
automatically be included in the project as soon as an SFC object is added.

Step and Action Status and Step Time


Basically, for each step and each IEC action, an implicit structure variable of type SFCStepType
or SFCActionType is created. The structure components (flags) describe the status of a step or
action or the currently processed time of an active step.
The syntax for the implicitly done variable declaration is:
<stepname>: SFCStepType;
or
_<actionname>:SFCActionType;
NOTE: Implicit variables for IEC actions are preceded by an underscore.
The following boolean flags for step or action states are available:
Boolean flags for steps:

Boolean Flag Description


<stepname>.x shows the current activation status
<stepname>._x shows the activation status for the next cycle

If <stepname>.x = TRUE, the step will be executed in the current cycle.


If <stepname>._x = TRUE and <stepname>.x = FALSE, the step will be executed in the following
cycle. This means that <stepname>._x is copied to <stepname>.x at the beginning of a cycle.
Boolean flags for actions:

Boolean Flag Description


_<actionname>.x is TRUE if the action is executed
_<actionname>._x is TRUE if the action is active

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 393
Sequential Function chart (SFC) Editor

Symbol generation
In the element properties (see page 379) of a step or an action, you can define if a symbol
definition should be added to a possibly created and downloaded symbol configuration for the step
or action name flag. For this purpose, make an entry for the desired access right in column Symbol
of the element properties view.
NOTE: If you use the boolean flag <stepname>.x to force a certain status value for a step (for
setting a step active), be aware that this will affect uncontrolled states within the SFC.

WARNING
UNINTENDED EQUIPMENT OPERATION
Do not use the boolean flag <stepname>.x to force a status value for setting a step active.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

Time via TIME variables:


The flag t gives the current time span which has passed since the step had become active. This
is only for steps, no matter whether there is a minimum time configured in the step attributes
(see page 379) or not (see below: SFCError).
For steps:
<stepname>.t (<stepname>._t not usable for external purposes)
For actions:
The implicit time variables are not used.

Control of SFC Execution (Timeouts, Reset, Tip Mode)


You can use some implicitly available variables, also named SFC flags (see table below) to control
the operation of an SFC. For example, for indicating time overflows or enabling tip mode for
switching transitions.
In order to be able to access these flags you have to declare and activate them. Do this in the SFC
Settings dialog box. This is a subdialog box of the object Properties dialog box.
Manual declaration, as it was needed in SoMachine / SoMachine Motion V3.1, is only necessary
to enable write access from another POU (refer to the paragraph Accessing Flags).
In this case, consider the following:
If you declare the flag globally, you have to deactivate the Declare option in the SFC Settings dialog
[Link] this leads to an implicitly declared local flag, which then would be used instead of
the global one. Keep in mind, that the SFC settings for an SFC POU initially are determined by the
definitions set in the Options → SFC dialog box.
Consider that a declaration of a flag variable solely done via the SFC Settings dialog box will only
be visible in the online view of the SFC POU.

394 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Sequential Function chart (SFC) Editor

The following implicit variables (flags) can be used. For this purpose, you have to declare and
activate them in the SFC Settings dialog box.

Variable Type Description


SFCInit BOOL If this variable becomes TRUE, the sequential function chart will be set back to
the Init step (see page 381). All steps and actions and other SFC flags will be
reset (initialization). The initial step will remain active, but not be executed as
long as the variable is TRUE. Set back SFCInit to FALSE in order to get back
to normal processing.
SFCReset BOOL This variable behaves similarly to SFCInit. Unlike the latter however, further
processing takes place after the initialization of the initial step. Thus, in this
case, a reset to FALSE of the SFCReset flag could be done in the initial step.
SFCError BOOL As soon as any timeout occurs at 1 of the steps in the SFC, this variable will
become TRUE. Precondition: SFCEnableLimit must be TRUE.
Consider that any further timeout cannot be registered before a reset of
SFCError. SFCError must be defined, if you want to use the other time-
controlling flags (SFCErrorStep, SFCErrorPOU, SFCQuitError).
SFCEnableLimit BOOL You can use this variable for the explicit activation (TRUE) and deactivation
(FALSE) of the time control in steps via SFCError. This means, that if this
variable is declared and activated (SFC Settings) then it must be set TRUE in
order to get SFCError working. Otherwise, any timeouts of the steps will not
be registered. The usage can be reasonable during start-ups or at manual
operation. If the variable is not defined, SFCError will work automatically.
Precondition: SFCError must be defined.
SFCErrorStep STRING This variable stores the name of a step at which a timeout was registered by
[Link].
Precondition: SFCError must be defined.
SFCErrorPOU STRING This variable stores the name of the SFC POU in which a timeout has
occurred.
Precondition: SFCError must be defined.
SFCQuitError BOOL As long as this variable is TRUE, the execution of the SFC diagram is stopped,
and variable SFCError will be reset. As soon as the variable has been reset
to FALSE, all current time states in the active steps will be reset.
Precondition: SFCError must be defined.
SFCPause BOOL As long as this variable is TRUE, the execution of the SFC diagram is stopped.
SFCTrans BOOL This variable becomes TRUE, as soon as a transition is actuated.
SFCCurrentStep STRING This variable stores the name of the currently active step, independently of the
time monitoring. In case of simultaneous sequences, the name of the outer
right step will be registered.
SFCTipSFCTipMode BOOL These variables allow using the inching mode within the current chart. When
this mode has been switched on by SFCTipMode=TRUE, you can only skip to
the next step by setting SFCTip=TRUE (rising edge). As long as SFCTipMode
is set to FALSE, it is possible to skip by the transitions.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 395
Sequential Function chart (SFC) Editor

The following figure provides an example of some SFC detected error flags in online mode of the
editor.
A timeout has been detected in step s1 in SFC object POU by flag SFCError.

Accessing Flags
For enabling access on the flags for the control of SFC execution (timeouts, reset, tip mode),
declare and activate the flag variables as described above (Control of SFC Execution
(see page 394)).
Syntax for accessing from an action or transition within the SFC POU:
<stepname>.<flag>
or
_<actionname>.<flag>
Examples:
status:=step1._x;
checkerror:=SFCerror;
Syntax for accessing from another POU:
<SFC POU>.<stepname>.<flag>
or
<SFC POU>._<actionname>.<flag>

396 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Sequential Function chart (SFC) Editor

Examples:
status:=SFC_prog.step1._x;
checkerror:=SFC_prog.SFCerror;
Consider the following in case of write access from another POU:
 The implicit variable additionally has to be declared explicitly as a VAR_INPUT variable of the
SFC POU
 or it has to be declared globally in a GVL (global variable list).

Example: Local declaration


PROGRAM SFC_prog
VAR_INPUT
SFCinit:BOOL;
END_VAR
Example: Global declaration in a GVL
VAR_GLOBAL
SFCinit:BOOL;
END_VAR
Accessing the flag in PLC_PRG:
PROGRAM PLC_PRG
VAR
setinit: BOOL;
END_VAR
SFC_prog.SFCinit:=setinit; //Write access to SFCinit in SFC_prog

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 397
Sequential Function chart (SFC) Editor

Sequence of Processing in SFC

Overview
In online mode, the particular action types will be processed according a defined sequence; see
the table below.

Definition of Terms
The following terms are used:

Term Description
active step A step, whose step action is being executed.
In online mode active steps are filled with blue color.
initial step In the first cycle after an SFC POU has been called, the initial step
automatically becomes active and the associated step action
(see page 384) is executed.
IEC actions IEC actions are executed at least twice:
 The first time when they became active.
 The second time - in the following cycle - when they have been
deactivated.
alternative branches If the step preceding the horizontal start line of alternative branches
is active, then the first transition of each particular branch will be
evaluated from left to right. The first transition from the left whose
transition condition has value TRUE will be searched and the
respective branch will be executed that is the subsequent step within
this branch will become active.
parallel branches If the double-line at the beginning line of parallel branches is active
and the preceding transition condition has the value TRUE, then in all
parallel branches each first step will become active. The branches
now will be processed in parallel to one another. The step
subsequent to the double-line at the end of the branching will become
active when all previous steps are active and the transition condition
after the double-line has the value TRUE.

398 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Sequential Function chart (SFC) Editor

Processing Order
Processing order of elements in a sequence:

Step Description
1. Reset of the IEC Actions All action control flags of the IEC actions (see page 384) get reset (not, however,
the flags of IEC actions that are called within actions).
2. Step exit actions (step All steps are checked in the order which they assume in the sequence chart (top to
deactivated) bottom and left to right) to determine whether the requirement for execution of the
step exit action is [Link] that is the case, it will be executed. An exit action will
be executed if the step is going to become deactivated (see page 381). This means
if the entry and step actions - if existing - have been executed during the last cycle,
and if the transition for the following step is TRUE.
3. Step entry actions(step All steps are tested in the order which they assume in the sequence to determine
activated) whether the requirement for execution of the step entry action is provided. If that is
the case, it will be executed. An entry action will be executed if the step-preceding
transition condition is TRUE and thus the step has been activated.
4. Timeout check, step active For non-IEC steps, the corresponding step active action is now executed in the
actions order in which they are positioned in the sequence (top -> down and left -> right).
5. IEC actions IEC actions (see page 384) that are used in the sequence are executed in
alphabetical order. This is done in 2 passes through the list of actions. In the first
pass, all the IEC actions that are deactivated in the current cycle are executed. In
the second pass, all the IEC actions that are active in the current cycle are
executed.
6. Transition check, activating Transitions (see page 381) are evaluated. If the step in the current cycle was active
next steps and the following transition returns TRUE (and if applicable the minimum active
time has already elapsed), then the following step is activated.

NOTE: An action may be executed multiple times in 1 cycle because it is called from more than
one other IEC actions when there are multiple steps active. That is to say, the same IEC action is
used simultaneously in different levels of an SFC, and this could lead to undesired effects.
Example: An SFC could have 2 IEC actions A and B, which are both implemented in SFC, and
which both call IEC action C. Then in IEC actions A and B both can be active in the same cycle
and furthermore, in both actions IEC action C can be active. Then C would be called twice.

WARNING
UNINTENDED EQUIPMENT OPERATION
Do not call IEC actions from multiple other IEC actions in the same cycle.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

NOTE: Use implicit variables (see page 393) for determining the status of steps and actions or the
execution of the chart.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 399
Sequential Function chart (SFC) Editor

SFC Editor in Online Mode

Overview
In online mode, the SFC editor provides views for monitoring (see below) and for writing and
forcing the variables and expressions on the controller. Debugging functionality like for the other
IEC languages (breakpoints, stepping, and so on) is not available in SFC. However, consider the
following hints for debugging SFC:
 For information on how to open objects in online mode, refer to the description of the user
interface in online mode (see page 55).
 The editor window of an SFC object also includes the declaration editor in the upper part. For
general information, refer to the chapter Declaration Editor in Online Mode (see page 432) . If
you have declared implicit variables (SFC flags) (see page 393) via the SFC Settings dialog
box, they will be added here, but will not be viewed in the offline mode of the declaration editor.
 Consider the sequence of processing (see page 398) of the elements of a Sequential Function
Chart.
 See the object properties or the SFC editor options and SFC defaults for settings concerning
compilation or online display of the SFC elements and their attributes.
 Consider the possible use of flags (see page 393) for watching and controlling the processing
of an SFC.

Monitoring
Active steps are displayed as filled with blue color. The display of step attributes depends on the
set SFC editor options.
Online view of program object SFC_prog

400 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Structured Text (ST) Editor
EIO0000002854 06/2019

Chapter 14
Structured Text (ST) Editor

Structured Text (ST) Editor

What Is in This Chapter?


This chapter contains the following sections:
Section Topic Page
14.1 Information on the ST Editor 402
14.2 Structured Text ST 408

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 401
Structured Text (ST) Editor

Section 14.1
Information on the ST Editor

Information on the ST Editor

What Is in This Section?


This section contains the following topics:
Topic Page
ST Editor 403
ST Editor in Online Mode 404

402 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Structured Text (ST) Editor

ST Editor

Overview
The ST editor is used to create programming objects in the IEC programming language Structured
Text (ST) or extended Structured Text which provides some extensions to the IEC 61131-3
standard.
The ST editor is a text editor. Therefore, use the corresponding text editor settings in the Options
and Customize dialog boxes to configure behavior, appearance, and menus. There you can define
the default settings for highlight coloring, line numbers, tabs, indenting, and many other options.

Further Information
To select blocks, press the ALT key and select the desired text area with the mouse.
The editor will be available in the lower part of a window which also includes the declaration editor
(see page 426) in the upper part.
If syntactic errors are detected during editing, the corresponding messages will be displayed in the
Precompile Messages window. This window is updated each time you reset the focus to the editor
window (for example, place your cursor in another window and then back to the editor window).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 403
Structured Text (ST) Editor

ST Editor in Online Mode

Overview
In online mode, the structured text editor (ST editor) provides views for monitoring (see page 404),
and for writing, and forcing the variables and expressions on the controller. Debugging
(breakpoints, stepping, and so on) is available. See Breakpoint positions in ST Editor
(see page 406).
 For information on how to open objects in online mode, refer to the description of the user
interface in online mode (see page 55).
 For information on how to enter prepared values for variables in online mode, see Forcing of
variables (see page 405).
 The editor window of an ST object also includes the declaration editor in the upper part. For
information on the declaration editor in online mode, see Declaration Editor in Online Mode
(see page 432).

Monitoring
If the monitoring is not explicitly deactivated in the Options dialog box, small monitoring boxes will
be displayed behind each variable showing the actual value.
Online view of a program object PLC_PRG with monitoring:

404 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Structured Text (ST) Editor

Forcing of Variables
In addition to the possibility to enter a prepared value for a variable within the declaration of any
editor, the ST editor offers double-clicking the monitoring box of a variable within the implemen-
tation part (in online mode). Enter the prepared value in the rising dialog box.
Dialog box Prepare Value

You find the name of the variable completed by its path within the Devices Tree (Expression), its
type, and current value.
By activating the corresponding item, you can choose the following options:
 preparing a new value which has to be entered in the edit field
 removing a prepared value
 releasing the variable that is being forced
 releasing the variable that is being forced and resetting it to the value it was assigned before
forcing
To carry out the selected action, execute the command Debug → Force values (item Online) or
press the F7 key.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 405
Structured Text (ST) Editor

Breakpoint Positions in ST Editor


You can set a breakpoint basically at the positions in a POU where values of variables can change
or where the program flow branches out or another POU is called. In the following descriptions,
{BP} indicates a possible breakpoint position.
Assignment:
At the beginning of the line. Keep in mind that assignments as expressions (see page 410) define
no further breakpoint positions within a line.
FOR-loop:
1. before the initialization of the counter
2. before the test of the counter
3. before a statement
{BP} FOR i := 12 TO {BP} x {BP} BY 1 DO
{BP} [statement1]
...
{BP} [statementn-2]
END_FOR
WHILE-loop:
1. before checking the condition
2. before an instruction
{BP} WHILE i < 12 DO
{BP} [statement1]
...
{BP} [statementn-1]
END_WHILE
REPEAT-loop:
 before checking the condition
REPEAT
{BP} [statement1]
...
{BP} [statementn-1]
{BP} UNTIL i >= 12
END_REPEAT
Call of a program or a function block:
At the beginning of the line.
{{BP} POU( );
At the end of a POU:
When stepping through, this position will also be reached after a RETURN instruction.

406 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Structured Text (ST) Editor

Breakpoint display in ST

Breakpoint in Online Mode Disabled Breakpoint Program Stop at Breakpoint

NOTE: A breakpoint will be set automatically in all methods which may be called. If an interface-
managed method is called, breakpoints will be set in all methods of function blocks implementing
that interface and in all derivative function blocks subscribing the method. If a method is called via
a pointer on a function block, breakpoints will be set in the method of the function block and in all
derivative function blocks which are subscribing to the method.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 407
Structured Text (ST) Editor

Section 14.2
Structured Text ST

Structured Text ST

What Is in This Section?


This section contains the following topics:
Topic Page
Structured Text ST 409
Expressions 410
Instructions 413

408 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Structured Text (ST) Editor

Structured Text ST

Overview
Structured Text is a textual high-level programming language, similar to PASCAL or C. The
program code is composed of expressions (see page 410) and instructions (see page 413). In
contrast to IL (Instruction List), you can use numerous constructions for programming loops, thus
allowing the development of complex algorithms.

Example
IF value < 7 THEN
WHILE value < 8 DO
value:=value+1;
END_WHILE;
END_IF;

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 409
Structured Text (ST) Editor

Expressions

Overview
An expression is a construction which after its evaluation returns a value. This value is used in
instructions.
Expressions are composed of operators (see page 767), operands (see page 869), and/or
assignments. An operand can be a constant, a variable, a function call, or another expression.
Examples

33 (* Constant *)
ivar (* Variable *)
fct(a,b,c) (* Function call*)
a AND b (* Expression *)
(x*y) / z (* Expression *)
real_var2 := int_var; (* Assignment, see below *)

410 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Structured Text (ST) Editor

Order of Operations
The evaluation of an expression is performed by processing the operators according to certain
rules. The operator with the highest order of operation is processed first, then the operator with the
next operating level, and so on, until all operators have been processed.
Below you find a table of the ST operators in the order of their ordinal operating level:

Operation Symbol Operating Level


placed in parentheses (expression) highest order
function call function name (parameter list) ..............
exponentiation EXPT .............
negate – ............
building of complements NOT ...........
multiply * ..........
divide / .........
modulo MOD ........
add + .......
subtract – ......
compare V <,>,<=,>= .....
equal to = ....
not equal to <> ...
boolean AND AND ..
boolean XOR XOR .
boolean OR OR lowest order

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 411
Structured Text (ST) Editor

Assignment as Expression
As an extension to the IEC 61131-3 standard (ExST), assignments can be used as an expression.
Examples:

int_var1 := int_var2 := int_var3 + 9; (* int_var1 and int_var2 both equal to the value
of int_var3 + 9*)
real_var1 := real_var2 := int_var; (* correct assignments, real_var1 and
real_var2 will get the value of int_var *)
int_var := real_var1 := int_var; (* a message will be displayed due to type mismatch
real-int *)
IF b := (i = 1) THEN (*Expression used inside of IF condition statement:
i := i + 1; First b will be assigned TRUE or FALSE, depending
END_IF on whether i is 1 or not, then the result value of b will
be evaluated.*)

412 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Structured Text (ST) Editor

Instructions

Overview
Instructions describe what to do with the given expressions (see page 410).
The following instructions can be used in ST:

Instruction Example
assignment (see page 414) A:=B; CV := CV + 1; C:=SIN(X);
Calling a function block (see page 415) and CMD_TMR(IN := %IX5, PT := 300);
using the function block output A:=CMD_TMR.Q
RETURN (see page 416) RETURN;

IF (see page 416) D:=B*B;


IF D<0.0 THEN
C:=A;
ELSIF D=0.0 THEN
C:=B;
ELSE
C:=D;
END_IF;
CASE (see page 417) CASE INT1 OF
1: BOOL1 := TRUE;
2: BOOL2 := TRUE;
ELSE
BOOL1 := FALSE;
BOOL2 := FALSE;
END_CASE;
FOR (see page 418) J:=101;
FOR I:=1 TO 100 BY 2 DO
IF ARR[I] = 70 THEN
J:=I;
'EXIT;
END_IF;
END_FOR;
WHILE (see page 419) J:=1;
WHILE J<= 100 AND ARR[J] <> 70 DO
J:=J+2;
END_WHILE;
REPEAT (see page 420) J:=-1;
REPEAT
J:=J+2;
UNTIL J= 101 OR ARR[J] = 70
END_REPEAT;
EXIT (see page 421) EXIT;

CONTINUE (see page 421) CONTINUE;

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 413
Structured Text (ST) Editor

Instruction Example
JMP (see page 421) label1: i:=i+1;
IF i=10 THEN
JMP label2;
END_IF
JMP label1;
label2:
empty instruction ;

Assignment Operators
Default Assignment
On the left side of an assignment, there is an operand (variable, address) to which the value of the
expression on the right side is assigned by the assignment operator :=.
Also refer to the description of the MOVE operator (see page 780) which has the same function.
For an example with assignment, refer to the Example of a Call with Assignments paragraph
(see page 200) of the Calling a Function Block chapter.
Example
a:= b;
a gets the value of b.
Set operator S=
The value will be set: if it is once set to TRUE, it will remain TRUE.
Example
a S= b;
a is set to TRUE if b is TRUE while processing the assignment.
If b is FALSE while processing the assignment, the value of a will not be modified.
Reset operator R=
The value will be reset: if it is once set to FALSE, it will remain FALSE.
Example
a R= b;
a is set to FALSE as soon as b = TRUE.
NOTE: In case of a multiple assignment, set and reset assignments refer to the last member of the
assignment.

414 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Structured Text (ST) Editor

Example
a S= b R= fun1(par1,par2)
In this case, b will be the reset output value of fun1. But a does not get the set value of b, but gets
the set output value of fun1.
Consider that an assignment can be used as an expression (see page 410). This is an extension
to the IEC 61131-3 standard.
Assignment operator REF
This operator generates a reference to a value.
Syntax
REF= <variable>
Example
A : REFERENCE TO DUT;
B : DUT;
C : DUT;
A REF= B; // corresponds to A := ADR(B);
A := C; // corresponds to A^ := C;

Calling Function Blocks in ST


A function block (abbreviated by FB) is called in structured text according to the following syntax:
<name of FB instance>(FB input variable:=<value or address>|, <further FB input variable:=<value
or address>|...further FB input variables);
Example
In the following example, a timer function block (TON) is called with assignments for the parameters
IN and PT. Then result variable Q is assigned to variable A. The timer function block is instantiated
by TMR:TON;. The result variable, as in IL, is addressed according to syntax <FB instance
name>.<FB variable>:
TMR(IN := %IX5, PT := 300);
A:=TMR.Q;
There is also another syntax available for outputs:
fb(in1:=myvar, out1=>myvar2);

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 415
Structured Text (ST) Editor

RETURN Instruction
You can use the RETURN instruction to leave a POU.
Syntax
RETURN;
Example
IF b=TRUE THEN
RETURN;
END_IF;
a:=a+1;
If b is TRUE, instruction a:=a+1; will not be executed. As a result, the POU will be left
immediately.

IF Instruction
With the IF instruction you can test for a condition, and, depending upon this condition, execute
instructions.
Syntax
IF <boolean_expression1> THEN
<IF_instructions>
{ELSIF <boolean_expression2> THEN
<ELSIF_instructions1>
..
..
ELSIF <boolean_expression n> THEN
<ELSIF_instructions-1>
ELSE
<ELSE_instructions>}
END_IF;
The segment in brackets {} is optional.
If the <boolean_expression1> returns TRUE, then only the <IF_instructions> are executed and, as
a result, none of the other instructions. Otherwise, the boolean expressions, beginning with
<boolean_expression2>, are evaluated one after the other until 1 of the expressions returns TRUE.
Then only those instructions after this boolean expression and before the next ELSE or ELSIF are
evaluated. If none of the boolean expressions produce TRUE, then only the <ELSE_instructions>
are evaluated.

416 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Structured Text (ST) Editor

Example
IF temp<17
THEN heating_on := TRUE;
ELSE heating_on := FALSE;
END_IF;
Here, the heating is turned on when the temperature sinks below 17 degrees. Otherwise, it remains
off.

CASE Instruction
With the CASE instruction, you can combine several conditioned instructions with the same
condition variable in one construct.
Syntax
CASE <Var1> OF
<value1>: <instruction 1>
<value2>: <instruction 2>
<value3, value4, value5>: <instruction 3>
<value6..value10>: <instruction4>
..
..
<value n>: <instruction n>
ELSE <ELSE instruction>
END_CASE;
A CASE instruction is processed according to the following model:
 If the variable in <Var1> has the value <Value I>, then the instruction <Instruction I> will be
executed.
 If <Var 1> has none of the indicated values, then the <ELSE Instruction> will be executed.
 If the same instruction is to be executed for several values of the variables, then you can write
these values one after the other separated by commas and thus condition the common
execution.
 If the same instruction is to be executed for a value range of a variable, you can write the initial
value and the end value separated by 2 dots. Therefore, you can condition the common
condition.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 417
Structured Text (ST) Editor

Example
CASE INT1 OF
1, 5: BOOL1 := TRUE;
BOOL3 := FALSE;
2: BOOL2 := FALSE;
BOOL3 := TRUE;
10..20: BOOL1 := TRUE;
BOOL3:= TRUE;
ELSE
BOOL1 := NOT BOOL1;
BOOL2 := BOOL1 OR BOOL2;
END_CASE;

FOR Loop
With the FOR loop, you can program repeated processes.
Syntax
INT_Var:INT;
FOR <INT_Var> := <INIT_VALUE> TO <END_VALUE> {BY <step size>} DO
<instructions>
END_FOR;
The segment in brackets {} is optional.
The <instructions> are executed as long as the counter <INT_Var> is not greater than the
<END_VALUE>. This is checked before executing the <instructions> so that the <instructions> are
not executed if <INIT_VALUE> is greater than <END_VALUE>.
When <instructions> are executed, <INT_Var> is increased by <Step size>. The step size can
have any integer value. If it is missing, then it is set to 1. The loop will terminate when <INT_Var>
is greater than the <END_VALUE>.
Example
FOR Counter:=1 TO 5 BY 1 DO
Var1:=Var1*2;
END_FOR;
Erg:=Var1;
Assuming that the default setting for Var1 is 1. Then it will have the value 32 after the FOR loop.
NOTE: If <END_VALUE> is equal to the limit value for the data type of <INT_Var> (Counter in the
above example), you will produce an infinite, or endless, loop. If Counter is of type SINT, for
example, and the <END_VALUE> is 127 (the maximum positive value for a SINT type variable),
then the loop can never terminate because adding 1 to this maximum value would result in the
variable becoming negative and never exceeding the limits imposed by the FOR instruction.

418 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Structured Text (ST) Editor

WARNING
ENDLESS LOOP RESULTING IN UNINTENDED EQUIPMENT OPERATION
Ensure that the variable type used in FOR instructions is of a sufficient capacity (has a great
enough upper limit) to account for the <END_VALUE> + 1.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

You can use the CONTINUE instruction within a FOR loop. This is an extension to the IEC 61131-3
standard.

WHILE Loop
An alternative to the FOR loop is the WHILE loop, which executes the loop if, and for as long as, a
boolean condition is, and remains, TRUE. If the condition is not initially TRUE, the loop is not
executed. If the condition which was initially TRUE becomes FALSE, the loop is terminated.
Syntax
WHILE <boolean expression> DO
<instructions>
END_WHILE;
Evidently, the initial and ongoing boolean expression must assume a value of FALSE at some point
within the instructions of the loop. Otherwise, the loop will not terminate, resulting in an infinite, or
endless, loop condition.

WARNING
ENDLESS LOOP RESULTING IN UNINTENDED EQUIPMENT OPERATION
Ensure that the WHILE loop will be terminated within the instructions of the loop by creating a
FALSE condition of the boolean expression.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

The following is an example of instructions in the loop causing the loop to terminate:
WHILE Counter>0 DO
Var1 := Var1*2;
Counter := Counter-1;
END_WHILE
The REPEAT instruction has not yet been introduced so moving paragraph (with modification) to
below.
You can use the CONTINUE instruction within a WHILE loop.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 419
Structured Text (ST) Editor

REPEAT Loop
The REPEAT loop is another alternative to the FOR loop, as it is for the WHILE loop. The REPEAT
loop differs from the WHILE loop in that the exit condition is evaluated only after the loop has been
executed at least once, at the end of the loop.
Syntax
REPEAT
<instructions>
UNTIL <boolean expression>
END_REPEAT;
The <instructions> are carried out repeatedly as long as the <boolean expression> returns TRUE.
If <boolean expression> is produced already at the first UNTIL evaluation, then <instructions> are
executed only once. The <boolean expression> must assume a value of TRUE at some point
within the instructions of the loop. Otherwise, the loop will not terminate, resulting in an infinite, or
endless, loop condition.

WARNING
ENDLESS LOOP RESULTING IN UNINTENDED EQUIPMENT OPERATION
Ensure that the REPEAT loop will be terminated within the instructions of the loop by creating a
TRUE condition of the boolean expression.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

The following is an example of instructions in the loop causing the loop to terminate:
REPEAT
Var1 := Var1*2;
Counter := Counter-1;
UNTIL
Counter=0
END_REPEAT;
You can use the CONTINUE instruction within a REPEAT loop. This is an extension to the
IEC 61131-3 standard.
The WHILE and REPEAT loops are, in a certain sense, more powerful than the FOR loop since you
do not have to know the number of cycles before executing the loop. In some cases, you will
therefore only be able to work with these two loop types. If, however, the number of the loop cycles
is clear, then a FOR loop is preferable since, in most cases, it inherently excludes endless loops
(see hazard message in the FOR loop paragraph (see page 418)).

420 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Structured Text (ST) Editor

CONTINUE Instruction
As an extension to the IEC 61131-3 standard, the CONTINUE instruction is supported within FOR,
WHILE, and REPEAT loops. CONTINUE makes the execution proceed with the next loop cycle.
Example
FOR Counter:=1 TO 5 BY 1 DO
INT1:=INT1/2;
IF INT1=0 THEN
CONTINUE; (* to avoid division by zero *)
END_IF
Var1:=Var1/INT1; (* only executed, if INT1 is not "0" *)
END_FOR;
Erg:=Var1;

EXIT Instruction
The EXIT instruction terminates the FOR, WHILE or REPEAT loop in which it resides without regard
to any condition.

JMP Instruction
You can use the JMP instruction for an unconditional jump to a code line marked by a jump label.
Syntax
JMP <label>;
The <label> is an arbitrary, but unique identifier that is placed at the beginning of a program line.
The instruction JMP has to be followed by the indication of the jump destination that has to equal
a predefined label.

WARNING
ENDLESS LOOP RESULTING IN UNINTENDED EQUIPMENT OPERATION
Ensure that the use of the JMP instruction is conditional such that it does not result in an infinite,
or endless, loop.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

The following is an example of instructions in the create logical conditions that avoid an infinite, or
endless, loop between the jump and its destination:

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 421
Structured Text (ST) Editor

aaa:=0;
_label1: aaa:=aaa+1;
(*instructions*)
IF (aaa < 10) THEN
JMP _label1;
END_IF;
As long as the variable i, being initialized with 0, has a value less than 10, the jump instruction of
the example above will affect a repeated flyback to the program line defined by label _label1.
Therefore, it will affect a repeated processing of the instructions comprised between the label and
the JMP instruction. Since these instructions also include the increment of the variable i, the jump
condition will be infringed (at the ninth check) and program flow will proceed.
You can also achieve this functionality by using a WHILE or REPEAT loop in the example.
Generally, using jump instructions reduces the readability of the code.

Comments in ST
There are 2 possibilities to write comments in a structured text object:
 Start the comment with (* and close it with *). This allows you to insert comments which run
over several lines. Example: (*This is a comment.*)
 Single-line comments as an extension to the IEC 61131-3 standard: // denotes the start of a
comment that ends with the end of the line. Example: // This is a comment.
You can place the comments everywhere within the declaration or implementation part of the
ST editor.
Nested comments: You can place comments within other comments.
Example
(*
a:=[Link]; (* to be checked *)
b:=b+1;
*)
In this example, the comment that begins with the first bracket is not closed by the bracket following
checked, but only by the last bracket.

422 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Object Editors
EIO0000002854 06/2019

Part V
Object Editors

Object Editors

What Is in This Part?


This part contains the following chapters:
Chapter Chapter Name Page
15 Declaration Editors 425
16 Device Type Manager (DTM) Editor 433
17 Data Unit Type (DUT) Editor 435
18 Global Variables List (GVL) Editor 437
19 Network Variables List (NVL) Editor 439
20 Task Editor 465
21 Watch List Editor 479
22 Tools Within Logic Editors 485

EIO0000002854 06/2019 423


Object Editors

424 EIO0000002854 06/2019


EcoStruxure Machine Expert
Declaration Editors
EIO0000002854 06/2019

Chapter 15
Declaration Editors

Declaration Editors

Overview
The textual declaration editor serves to create the declaration part of a POU object. It can be
supplemented by a tabular view. Any modification made in 1 of the views is immediately applied to
the other one.
Depending on the current settings in the declaration editor options, either only the textual or only
the tabular view will be available. You can switch between both via buttons (Textual / Tabular) at
the right border of the editor window.
Usually, the declaration editor is used in combination with the programming language editors. This
means, it will be placed in the upper part of the window which opens when you are going to edit or
view (monitor) an object in offline or online mode. The declaration header describes the POU type
(for example: PROGRAM, FUNCTION_BLOCK, FUNCTION). It can be extended by POU-global
pragma attributes.
The online mode of the declaration editor (see page 432) is structured like that of a Watch view.
Variable declaration is also performed in Global Variable Lists and Data Unit Types, which are
created in separate editors.
Also refer to the Variables Declaration chapter (see page 621).

What Is in This Chapter?


This chapter contains the following topics:
Topic Page
Textual Declaration Editor 426
Tabular Declaration Editor 427
Declaration Editor in Online Mode 432

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 425
Declaration Editors

Textual Declaration Editor

Overview
Textual editor view

Behavior and appearance are determined by the respective current text editor settings in the
Options and Customize dialog boxes. There you can define the default settings for highlight
coloring, line numbers, tabs, indenting, and many more options. The usual editing functions are
available such as copy and paste. Block selection is possible by pressing the ALT key while
selecting the desired text area with the mouse.

426 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Declaration Editors

Tabular Declaration Editor

Overview
Tabular editor view

The tabular view of the editor provides columns for the usual definitions for variable declaration
(see page 621): Scope, Name, Address, Data type, Initialization, Comment and (pragma)
Attributes. The particular declarations are inserted as numbered lines.
To add a new line of declaration above an existing one, first select this line and execute the
command Insert from the toolbar or the contextual menu.
To add a new declaration at the end of the table, click beyond the last existing declaration line and
also use the Insert command.
The newly inserted declaration by default first uses scope VAR and the recently entered data type.
The input field for the obligatory variable Name opens automatically. Enter a valid identifier and
close the field by pressing the Enter key or by clicking another part of the view.
Double-click a table cell to open the respective possibilities to enter a value.
Double-click the Scope to open a list from which you can choose the desired scope and scope
attribute keyword (flag).
Type in the Data type directly or click the > button to use the Input Assistant or the Array wizard.
Type in the Initialization value directly or click the ... button to open the Initialization value dialog
box (see page 429). This is useful especially in case of arrays and structured variables.
Each variable is declared in a separate line where the lines are numbered.
You can change the order of lines (line numbers) by selecting a line and move it one up or down
by the Move up or Move down command from the toolbar or the contextual menu.
You can sort the list of declarations according to each of the columns by clicking the header of the
respective column.
To delete one or several declarations, select the respective lines and press the Del key or execute
the Delete command from the contextual menu or click the button in the toolbar.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 427
Declaration Editors

Declaration of Arrays
For the declaration of array variables, use the arrow button > at the right side of the Type field and
select Array Wizard. The Array dialog box opens.
Fill at least the fields marked with a red exclamation mark icon. Define the Dimensions by entering
the lower and upper limits, and the Base Type of the variable. You can click the arrow button to
open the Input Assistant dialog box or another Array Wizard for declaring the base type.
You can define an array of variable length with [*,*,*]. Arrays of variable length can only be
used in VAR_IN_OUT declarations of function blocks, methods, and functions. To declare an array
of variable length, enter an asterisk * for each dimension. This results in
ARRAY [*..*] OF INT. After you have confirmed with OK, adapt the dimension string to [*]
(one asterisk only).
Example for a two-dimensional array of variable length:
ARRAY [*,*]
The Result area of the dialog box provides a preview of the configured array declaration.
For further information, refer to the Arrays description (see page 740).
Click OK to close the declaration dialog box. The variable declaration appears in the declaration
editor in accordance to the IEC syntax.

428 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Declaration Editors

Initialization Value
Initialization value dialog box

The Expressions of the variable are displayed with the present initialization values. Select the
desired variables and edit the initialization value in the field below the listing. Then click the Apply
value to selected lines button. To restore the default initializations, click the Reset selected lines
to default values button.
Press Ctrl + Enter to insert line breaks in the Comment entry.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 429
Declaration Editors

Edit Declaration Header


You can edit the declaration header in the Edit Declaration Header dialog box. Open it by clicking
the header bar of the editor (PROGRAM PLC_PRG in the figure above) or via the command Edit
Declaration Header.
Edit Declaration Header dialog box

The Edit Declaration Header dialog box provides the following elements:

Element Description
Declaration Insert type (from the selection list) and name of the POU
object.
Comment Insert a comment. Press Ctrl + Enter to insert line breaks.
Attributes Opens the Attributes dialog box (see further below in this
chapter) for inserting pragmas and attributes.

430 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Declaration Editors

Attributes
In the Edit Declaration Header dialog box, click the Attributes... button to open the Attibutes dialog
box. It allows you to enter multiple attributes and pragmas in text format. Insert them without
enclosing {} braces, use a separate line per each. For the example shown in the following image,
see the corresponding textual view above in the graphic of the textual editor view (see page 426).
Attributes dialog box

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 431
Declaration Editors

Declaration Editor in Online Mode

Overview
The online view of the declaration editor presents a table similar to that used in watch views
(see page 482). The header line shows the actual object path <device name>.<application
name>.<object name>. The table for each watch expression shows the type and present value as
well as - if currently set - a prepared value for forcing or writing. If available, a directly assigned IEC
Address and / or Comment are displayed in further columns.
To establish a prepared value for a variable, either use the Prepare Value dialog box or click in the
assigned field of the column Prepared value and directly type in the desired value. In case of
enumerations, a list showing the enumeration values opens to select a value. In case of a boolean
variable, the handling is even easier.
You can toggle boolean preparation values by use of the Return or Space key according to the
following order:
 If the value is TRUE, the preparation steps are FALSE -> TRUE -> nothing.
 If the value is FALSE, the preparation steps are TRUE -> FALSE -> nothing.

If a watch expression (variable) is a structured type, for example, an instance of a function block
or an array variable, then a plus or minus sign precedes the expression. With a mouse-click on this
sign the particular elements of the instanced object can be additionally displayed (see fbinst in
the following image) or hidden (see aVar). Icons indicate whether the variable is an input ,
output or an ordinary variable .
If the expression is an array, you can define the range of the array indices to monitor. To achieve
this, double-click the Type column to open the Monitoring Range dialog box. Enter the Start Index
and the End Index to define the range.
When you point with the cursor on a variable in the implementation part, a tooltip shows the
declaration and comment of the variable. See the following image showing the declaration editor
in the upper part of a program object PLC_PRG in online view:
Online view of the declaration editor

432 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Device Type Manager (DTM) Editor
EIO0000002854 06/2019

Chapter 16
Device Type Manager (DTM) Editor

Device Type Manager (DTM) Editor

DTM Editor

Overview
The DTM editor view depends on the device type manager.
For further information on DTMs, refer to the Device Type Manager (DTM) User Guide
(see EcoStruxure Machine Expert, Device Type Manager (DTM), User Guide).
For a list of the DTM versions currently supported by EcoStruxure Machine Expert, refer to the
Release Notes of your EcoStruxure Machine Expert installation.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 433
Device Type Manager (DTM) Editor

434 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Data Unit Type (DUT) Editor
EIO0000002854 06/2019

Chapter 17
Data Unit Type (DUT) Editor

Data Unit Type (DUT) Editor

Data Unit Type Editor

Overview
You can create user-defined data types (see page 722) in the Data Unit Type editor (DUT editor).
This is a text editor and behaves according to the currently set text editor options.
The DUT editor will be opened automatically in a window when you add a DUT object in the Add
object dialog box. In this case, it provides by default the syntax of an extended structure
declaration. You can use it as desired to enter a simple structure declaration or to enter the
declaration of another data type unit, for example an enumeration.
The editor also opens when you open an existing DUT object currently selected in the POUs view.
DUT editor window

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 435
Data Unit Type (DUT) Editor

436 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Global Variables List (GVL) Editor
EIO0000002854 06/2019

Chapter 18
Global Variables List (GVL) Editor

Global Variables List (GVL) Editor

GVL Editor

Overview
The GVL editor is a Declaration Editor for editing Global Variables Lists. The GVL editor works as
does the Declaration Editor and corresponds to the options, both offine and online, set for the text
editor. The declaration starts with VAR_GLOBAL and ends with END_VAR. These keywords are
provided automatically. Enter valid declarations of global variables between them.
GVL editor

GVL Editor Used as Persistent Variables Editor


The GVL editor can also be used to manage Persistent Variables objects. In this case, the editor
contains declarations of VAR_GLOBAL PERSISTENT variables. For further information, refer to the
chapter Persistent Variables (see page 227) .

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 437
Global Variables List (GVL) Editor

438 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Network Variables List (NVL) Editor
EIO0000002854 06/2019

Chapter 19
Network Variables List (NVL) Editor

Network Variables List (NVL) Editor

What Is in This Chapter?


This chapter contains the following sections:
Section Topic Page
19.1 Information on the NVL Editor 440
19.2 General Information on Network Variables 441

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 439
Network Variables List (NVL) Editor

Section 19.1
Information on the NVL Editor

Information on the NVL Editor

Network Variables List Editor

Overview
The NVL editor is a Declaration Editor for editing Network Variables Lists. The NVL editor works
as does the Declaration Editor and corresponds to the options, both offine and online, set for the
text editor. The declaration starts with VAR_GLOBAL and ends with END_VAR.These keywords are
provided automatically. Enter valid variable declarations (see page 619) of global variables
between them.
NVL editor

440 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Network Variables List (NVL) Editor

Section 19.2
General Information on Network Variables

General Information on Network Variables

What Is in This Section?


This section contains the following topics:
Topic Page
Introduction to Network Variables List (NVL) 442
Configuring the Network Variables Exchange 446
Network Variables List (NVL) Rules 452
Operating State of the Sender and the Receiver 455
Example 456
Compatibility 461

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 441
Network Variables List (NVL) Editor

Introduction to Network Variables List (NVL)

Overview
The Network Variables List (NVL) feature consists of a fixed list of variables that can be sent or
received through a communication network. This enables data exchange within a network via
network variables, if supported by the controller (target system).
The list must be defined in the sender and in the receiver controllers (and can be handled in a
single or in multiple projects). Their values are transmitted via broadcasting through User
Datagram Protocol (UDP) datagrams. UDP is a connectionless Internet communications protocol
defined by IETF RFC 768. This protocol facilitates the direct transmission of datagrams on Internet
Protocol (IP) networks. UDP/IP messages do not expect a response, and are therefore ideal for
applications in which dropped packets do not require retransmission (such as streaming video and
networks that demand real-time performance).
The NVL functionality is a powerful feature of EcoStruxure Machine Expert. It allows you to share
and monitor data between controllers and their applications. However, there are no restrictions as
to the purpose of the data exchanged between controllers, including, but not limited to, attempting
machine or process interlocking or even controller state changes.
NOTE: The type of the network variable is not shared between different controllers. You have to
ensure that the used types have the same definition on all devices; otherwise NVL communication
is not possible. This applies, for example, to the types SEC.ETH_R_STRUCT or
SEC.PLC_R_STRUCT. They are available by default in various controllers with different size or
fields.
Only you, the application designer and/or programmer, can be aware of all the conditions and
factors present during operation of the machine or process and, therefore, only you can determine
the proper communication strategies, interlocks and related safeties necessary for your purposes
in exchanging data between controllers using this feature. Strict care must be taken to monitor this
type of communication feature, and to be sure that the design of the machine or process will not
present safety risks to people or property.

442 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Network Variables List (NVL) Editor

WARNING
LOSS OF CONTROL
 The designer of any control scheme must consider the potential failure modes of control paths
and, for certain critical control functions, provide a means to achieve a safe state during and
after a path failure. Examples of critical control functions are emergency stop and overtravel
stop, power outage and restart.
 Separate or redundant control paths must be provided for critical control functions.
 System control paths may include communication links. Consideration must be given to the
implications of unanticipated transmission delays or failures of the link.
 Observe all accident prevention regulations and local safety guidelines.1
 Each implementation of this equipment must be individually and thoroughly tested for proper
operation before being placed into service.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

1For additional information, refer to NEMA ICS 1.1 (latest edition), "Safety Guidelines for the
Application, Installation, and Maintenance of Solid State Control" and to NEMA ICS 7.1 (latest
edition), "Safety Standards for Construction and Guide for Selection, Installation and Operation of
Adjustable-Speed Drive Systems" or their equivalent governing your particular location.
You can use Diagnostic (see EcoStruxure Machine Expert, Network Variable Configuration,
SE_NetVarUdp Library Guide) and Error Management (see EcoStruxure Machine Expert, Network
Variable Configuration, SE_NetVarUdp Library Guide) function blocks as well as network
properties parameters to monitor the health, status and integrity of communications using this
feature. This feature was designed for data sharing and monitoring and cannot be used for critical
control functions.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 443
Network Variables List (NVL) Editor

Network Variables List (NVL)


The network variables to be exchanged are defined in the following two types of lists:
 Network Variables Lists (NVL sender) in a sending controller
 Network Variables List (NVL receiver) in a receiving controller

The corresponding NVL (sender) and NVL (receiver) contain the same variable declarations. You
can view their contents in the respective editor that opens after double-clicking the NVL (sender)
or NVL (receiver) node in the Devices tree.
An NVL (sender) contains the network variables of a sender. In the Network properties of the
sender, protocol and transmission parameters are defined. According to these settings, the
variable values are broadcasted within the network. They can be received by the controllers that
have a corresponding NVL (receiver).
NOTE: For network variables exchange, the respective network libraries must be installed. This is
done automatically for the network type UDP as soon as the network properties for an NVL
(sender) are set.
Network variables are broadcasted from the NVL (sender) to one or more NVL (receiver). For each
controller, you can define NVL (sender) as well as NVL (receiver). Thus each controller can act as
sender as well as receiver.
An NVL (sender) can be provided by the same or by another project. So, when creating an NVL
(receiver), the NVL (sender) can either be chosen from a selection list of all available NVL (sender)
within the network, or it can be read from an export file, which previously has been generated (for
example, by using the Link to File dialog box) from the NVL (sender).
NOTE: An export file is needed if the NVL (sender) to be used is defined within another project.

NVL Considerations
The following table shows the list of controllers that support the network variables list (NVL)
functionality:

Function Name M241 M251 M258 LMC Eco


LMC058 LMC Pro
LMC Pro2
Network Variables Yes Yes Yes Yes
List

444 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Network Variables List (NVL) Editor

The figure shows a network consisting of one sender and the maximum of seven receivers:

Controller Sender A: Sender with the NVL (sender) and receiver controller with network variables lists (NVL
(receiver))
Controller Receiver 1...7: Receivers (with NVL (receiver)) from A and sender controller (NVL (sender)) only
for A

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 445
Network Variables List (NVL) Editor

Configuring the Network Variables Exchange

Overview
To exchange network variables between a sender and a receiver, one sender and one receiver
controller must be available in the EcoStruxure Machine Expert Devices tree. These are the
controllers that are assigned the network properties described below.
Proceed as follows to configure the network variables list:

Step Action
1 Create a sender and a receiver controller in the Devices tree.
2 Create a program (POU) for the sender and receiver controller.
3 Add a task for the sender and receiver controller.
NOTE: In order to maintain performance transparency, you should set the task priority of the
dedicated NVL task to something greater than 25, and regulate communications to avoid
saturating the network unnecessarily.
4 Define the NVL (sender) for the sender.
5 Define the NVL (receiver) for the receiver.

An example with further information is provided in the Appendix (see EcoStruxure Machine Expert,
Network Variable Configuration, SE_NetVarUdp Library Guide).

446 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Network Variables List (NVL) Editor

Global Variables List


To create the NVL (sender), define the following network properties in the GVL → Properties →
Network properties dialog box:

Description of parameters

Parameter Default Value Description


Network type UDP Only the network type UDP is available.
To change the Broadcast Address and the Port, click the Settings...
button.
Task MAST Select the task you configured below the Task Configuration item for
executing NVL code.
To help maintain performance transparency, it is a good practice
configure a cycle time Interval ≥50 ms for this task.
NOTE: In order to maintain performance transparency, you should set
the task priority of the dedicated NVL task to something greater than
25, and regulate communications to avoid saturating the network
unnecessarily.
List identifier 1 Enter a unique number for each NVL (sender) on the network. It is
used by the receivers for identifying the variables list (see EcoStruxure
Machine Expert, Network Variable Configuration, SE_NetVarUdp
Library Guide).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 447
Network Variables List (NVL) Editor

Parameter Default Value Description


Pack variables activated With this option activated, the variables are bundled in packets
(datagrams) for transmission.
If this option is deactivated, one packet per variable is transmitted.
Transmit checksum deactivated Activate this option to add a checksum to each packet of variables
during transmission.
Receivers will then check the checksum of each packet they receive
and will reject those with a non-matching checksum. A notification will
be issued with the NetVarError_CHECKSUM parameter
(see EcoStruxure Machine Expert, Network Variable Configuration,
SE_NetVarUdp Library Guide).
Acknowledgement deactivated Activate this option to prompt the receiver to send an
acknowledgement message for each data packet it receives.
A notification will be issued with the NetVarError_ACKNOWLEDGE
parameter (see EcoStruxure Machine Expert, Network Variable
Configuration, SE_NetVarUdp Library Guide) if the sender does not
receive this acknowledgement message from the receiver before it
sends the next data packet.
Cyclic transmission activated Select this option for cyclic data transmission at the defined Interval.
 Interval This Interval should be a multiple of the cycle time you defined in the
task for executing NVL code to achieve a precise transmission time of
the network variables.
Transmit on change deactivated Select this option to transmit variables whenever their values have
 Minimum gap  T#20ms changed.
NOTE: After the first download or using of Reset Cold or Reset Warm
command in Online Mode the receiver controllers are not updated and
keep their last value, whereas the sender controller value becomes 0
(zero).
The Minimum gap parameter defines a minimum time span that has to
elapse between the data transfer.
Transmit on event deactivated Select this option to transmit variables as long as the specified
 Variable  – Variable equals TRUE. The variable is checked with every cycle of the
task for executing NVL code.

Description of the button Settings...

Parameter Default Value Description


Port 1202 Enter a unique port number (≥ 1202) for each NVL (sender).
Broadcast Address [Link] Enter a specific broadcast IP address for your application.

448 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Network Variables List (NVL) Editor

Network Variables List (Receiver)


A global network variables list can only be added in the Devices tree. It defines variables, which
are specified as network variables in another controller within the network.
Thus, an NVL (receiver) object can only be added to an application if an NVL (sender) with network
properties (network variables list) has already been created in one of the other network controllers.
These controllers may be in the same or different projects.
To create the NVL (receiver), define the following parameters in the Add Object → Global Network
Variable List dialog box:

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 449
Network Variables List (NVL) Editor

Description of parameters

Parameter Default Value Description


Name NVL Enter a name for the NVL (receiver).
Task task defined in the Select a task from the list of tasks which will receive the frames from
Task Configuration the sender that are available under the Task Configuration node of the
node of this receiver controller.
Application
Sender 1 of the NVL Select the NVL (sender) from the list of the NVL (sender) with network
(sender) available properties available in the project.
in the project Select the entry Import from file from the list to use an NVL (sender)
from another project. This activates the Import from file: parameter
below.
Import from file: – This parameter is only available after you selected the option Import
from file for the parameter Sender.
The ... opens a Windows Explorer window that allows you to browse to
the export file *.gvl you created from an NVL (sender) in another
project.
For further information, refer to the How to Add an NVL (Receiver)
From a Different Project paragraph below.

How to Add an NVL (Receiver) in the Same Project


When you add an NVL (receiver) via the Add Object dialog box, the appropriate NVL (sender) that
are found within the present project for the present network are provided for selection in the Sender
list box. NVL (sender) from other projects must be imported (see the How to Add an NVL (Receiver)
From a Different Project paragraph below).
Due to this selection, each NVL (receiver) in the present controller (sender) is linked to one specific
NVL (sender) in another controller (receiver).
Additionally, you have to define a name and a task, that is responsible for handling the network
variables, when adding the NVL (receiver).

How to Add an NVL (Receiver) From a Different Project


Alternatively to directly choosing an NVL (sender) from another controller, you can also specify an
NVL (sender) export file you had generated previously from the NVL (sender) by using the Link to
file properties. This allows you to use an NVL (sender) that is defined in another project.
To achieve this, select the option Import from file for the Sender: parameter and specify the path
in the Import from file: parameter.
You can modify the settings later on via the Properties - GVL dialog box.

450 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Network Variables List (NVL) Editor

NVL (Receiver) Properties


If you double-click an NVL (receiver) item in the Devices tree, its content will be displayed on the
right-hand side in an editor. But the content of the NVL (receiver) cannot be edited, because it is
only a reference to the content of the corresponding NVL (sender). The exact name and the path
of the sender that contains the corresponding NVL (sender) is indicated at the top of the editor
pane together with the type of network protocol used. If the corresponding NVL (sender) is
changed, the content of the NVL (receiver) is updated accordingly.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 451
Network Variables List (NVL) Editor

Network Variables List (NVL) Rules

Rules on the Amount of Data


Due to some performance limitations, respect the following rules:

Number Rule
1 Data transmission from one NVL (sender) to one NVL (receiver) should not exceed 200 bytes.
2 Data exchange between several NVL (sender) of one controller and their associated NVL (receiver)
should not exceed 1000 bytes of variables.

Rules on the Number of Datagrams


To limit the maximum cycle time of NVL tasks, respect the following rules:

Number Rule Description


1 Limit the number of received datagrams When the limit is exceeded, the remaining datagrams are
per cycle to 20. treated in the next cycle. A notification Received overflow is
raised in the diagnostics data (see EcoStruxure Machine
Expert, Network Variable Configuration, SE_NetVarUdp Library
Guide) when the limit is reached.
One datagram can contain up to 256 bytes. That means that
you should not exceed the limit of 5120 bytes of data
transmitted to one receiver.
2 Limit the number of transmitted When the limit is exceeded, the remaining datagrams are
datagrams per cycle to 20. treated in the next cycle. A notification Transmit overflow is
raised in the diagnostics data (see EcoStruxure Machine
Expert, Network Variable Configuration, SE_NetVarUdp Library
Guide) when the limit is reached.
One datagram can contain up to 256 bytes. That means that
you should not exceed the limit of 5120 bytes of data
transmitted by one sender controller.

If the number of received / transmitted datagrams per cycle exceeds the limit several times, the
following may happen:
 Loss of UDP (user datagram protocol) datagrams
 Incoherent or inconsistent exchange of variables

Adapt the following parameters according to your needs:


 Cycle time of sender controller
 Cycle time of receiver controller
 Number of senders in the network

452 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Network Variables List (NVL) Editor

NOTICE
LOSS OF DATA
Thoroughly test your application for proper transmission and reception of UDP datagrams prior
to placing your system into service.
Failure to follow these instructions can result in equipment damage.

Maximum Number of NVL (Sender)


Define a maximum of seven NVL (sender) per controller (sender) to help maintain performance
transparency.

Rules on Task Cycle Times of NVL (Sender) and NVL (Receiver)


To help avoid reception overflow, you must define a cycle time for the task that manages the NVL
(sender) transmission that is at least two times greater than the cycle time of the task that manages
the NVL (receiver) reception.

Rules on the List Identifier Protection


The NVL function includes a list identifier checking:
The list identifier helps to avoid that an NVL (sender) from two separate controllers with the same
list identifier (see dialog box GVL → Properties → List identifier:) sends datagrams to the same
NVL (receiver) of any controller. If the List Identifier is not unique, this can cause an interruption in
the exchange of variables.

NOTICE
LOSS OF COMMUNICATION
Ensure that the list identifier in the network is only used by one IP address.
Failure to follow these instructions can result in equipment damage.

The list identifier checking function is implemented in the receiver controller.


If an NVL (receiver) detects that two different IP addresses are using the same list identifier, the
receiver immediately stops to receive datagrams.
Furthermore, a notification is issued in the NETVARGETDIAGINFO function block. The IP
addresses of the two senders are provided in the output parameters dwDuplicateListIdIp1
and dwDuplicateListIdIp2 of this function block (see EcoStruxure Machine Expert, Network
Variable Configuration, SE_NetVarUdp Library Guide).
With the function block NETVARRESETERROR, the detected NVL errors are reset and the
communication is restarted.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 453
Network Variables List (NVL) Editor

Consistency in the Type of Network Variables


NOTE: The type of the network variable is not shared between different controllers. You have to
ensure that the used types have the same definition on all devices; otherwise NVL communication
is not possible.
This applies, for example, to the types SEC.ETH_R_STRUCT or SEC.PLC_R_STRUCT. They are
available by default in various controllers with different size or fields.

454 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Network Variables List (NVL) Editor

Operating State of the Sender and the Receiver

Operating State

Operating State of the... Network Variables Behavior


Sender Receiver
RUN RUN Network variables are exchanged between the sender
and the receiver.
STOP RUN The sender is no longer sending variables to the
receiver. The network variables are not exchanged
between sender and receivers.
RUN STOP The receiver is not processing network variables from
the sender.
When the receiver returns to RUN state, the network
variables are again processed by the receiver.
STOP STOP No variables are exchanged.

NOTE: Several communication initialization errors (NetVarError_INITCOMM) are detected,


when you change the operating state of the sender from STOP to RUN.

Events in the Task that Manages NVL


If the following events occur in the task that manages NVL, the behavior expected for the NVL is
the same as if the controller was in STOP state in the array above:
 an exception occurs in the application which suspends the task
 a breakpoint is hit or a single cycle is processed on the task

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 455
Network Variables List (NVL) Editor

Example

Overview
In the following example, a simple network variables exchange is established. In the sender
controller, an NVL (sender) is created. In the receiver controller, the corresponding NVL (receiver)
is created.
Perform the following preparations in a standard project, where a sender controller Dev_Sender
and a receiver controller Dev_Receiver are available in the Devices tree:
 Create a POU (program) prog_sender below the Application node of Dev_Sender.
 Under the Task Configuration node of this application, add the task Task_S that calls
prog_sender.
 Create a POU (program) prog_rec below the Application node of Dev_Receiver.
 Under the Task Configuration node of this application, add the task Task_R that calls prog_rec.
NOTE: The two controllers must be configured in the same subnet of the Ethernet network.

456 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Network Variables List (NVL) Editor

Defining the NVL (Sender)


Step 1: Define a global variable list in the sender controller:

Step Action Comment


1 In the Devices tree, right-click the Application node The Add Global Variable List dialog box is
of the controller Dev_Sender and execute the displayed.
command Add Object → Global Variable List....
2 Enter the Name NVL_Sender and click Open to The NVL_Sender node appears below the
create a new global variable list. Application node in the Devices tree and the editor
is opened on the right-hand side.
3 In the editor on the right-hand side, enter the –
following variable definitions:
VAR_GLOBAL
iglobvar:INT;
bglobvar:BOOL;
strglobvar:STRING;
END_VAR

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 457
Network Variables List (NVL) Editor

Step 2: Define the network properties of the NVL (sender):

Step Action Comment


1 In the Devices tree, right-click the NVL_Sender The Properties - NVL_Sender dialog box is
node and execute the command Properties.... displayed.
2 Open the Network properties tab and configure the –
parameters as shown in the graphic:

3 Click OK. The dialog box is closed and the NVL (sender)
network properties are set.

Defining the NVL (Receiver)


Step 1: Define a global network variable list in the receiver controller:

Step Action Comment


1 In the Devices tree, right-click the Application node The Add Global Network Variable List dialog box is
of the controller Dev_Receiver and execute the displayed.
command Add Object → Global Network Variable
List....

458 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Network Variables List (NVL) Editor

Step Action Comment


2 Configure the parameters as shown in the graphic. This global network variable list is the counterpart of
the NVL (sender) defined for the sender controller.

3 Click Open. The dialog box is closed and the GNVL_Receiver


appears below the Application node of the
Dev_Receiver controller:

This NVL (receiver) automatically contains the


same variable declarations as the GVL_Sender.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 459
Network Variables List (NVL) Editor

Step 2: View and / or modify the network settings of the NVL (receiver):

Step Action Comment


1 In the Devices tree, right-click the GNVL_Receiver The Properties - GNVL_Receiver dialog box is
node and execute the command Properties.... displayed.
2 Open the Network settings tab. –

Step 3: Test the network variables exchange in online mode:

Step Action Comment


1 Under the Application node of the controller The editor for prog_sender is opened on the right-
Dev_Sender, double-click the POU prog_sender. hand side.
2 Enter the following code for the variable iglobvar: –

3 Under the Application node of the controller The editor for prog_rec is opened on the right-hand
Dev_Receiver, double-click the POU prog_rec. side.
4 Enter the following code for the variable –
ivar_local:

5 Log on with sender and receiver applications within The variable ivar_local in the receiver gets the
the same network and start the applications. values of iglobvar as currently shown in the
sender.

460 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Network Variables List (NVL) Editor

Compatibility

Introduction
Even if the controllers work with applications of different versions of the programming system (for
example, V2.3 and V3.x), communication via network variables is possible.
However, the file formats of the different export files between versions (*.exp versus *.gvl) makes
it impossible to simply import and export these files between projects.
If an NVL (receiver) is set up in the latest version (for example, V3.x), the required network
parameters configuration must be provided by a sender of the latest version (for example, V3.x).
An export file *.exp created from a sender by an earlier version (for example, V2.3) does not
contain this information.
A solution for exchanging network variables between applications of different programming system
versions is provided in the following paragraphs.

Updating the Global Network Variables List


To exchange network variables between applications of different programming system versions
(for example, V2.3 and V3.x), update the global network variables list by performing the following
steps:

Step Action Comment


1 Re-create the network variables list (NVL) To achieve this, add an NVL (sender) with network
that is already available in the earlier properties, containing the same variables
version (V2.3) in the latest version (V3.x). declarations as in the NVL of the earlier version
(V2.3).
2 Export the new NVL (sender) to an *.exp NOTE: Activate the option Exclude from build in the
file by using the Link to File tab. Build tab to keep the NVL (sender) in the project to
help prevent precompile events and ambiguous
names. Deactivate the option to re-create the *.exp
file again in case any modifications on the NVL
(sender) are required.
3 Re-import the list. To achieve this, create a new NVL (receiver) by
using the previously generated *.exp file in order to
create an appropriately configured receiver list.

These steps are illustrated by the following example.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 461
Network Variables List (NVL) Editor

Example
In this example, the variable trans23, that is defined in a V2.3 application, is made available for
a later version (V3.x).
The following conditions are defined:

Condition Description
1 In the earlier programming system version (V2.3) the project [Link] contains a global variables list
GVL_23 with the following declaration:
VAR_GLOBAL
trans23:INT;
END_VAR
2 The network properties of GVL_23 are configured as follows:

NOTE: The export of this GVL_23 creates a *.exp file, that only contains the following variable
declaration:
VAR_GLOBAL
trans23:INT;
END_VAR
The *.exp file does not contain any configuration settings.

462 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Network Variables List (NVL) Editor

The following table shows the next steps to be executed for re-creating GVL_23 in the latest
version (V3.x):

Step Action Comment


1 Add an NVL (sender) object named –
GVL_23 to an application.
2 Set the network properties as defined
within the [Link] project.

3 In the Link to File tab, configure a


target export file [Link].

4 In the Build tab, set the Exclude from This setting allows you to keep the file on disk for later
Build option. modifications.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 463
Network Variables List (NVL) Editor

Step Action Comment


5 Compile the project. The [Link] file is generated and contains variable and
configuration settings:

6 Add an NVL (receiver) object in the This serves to read the variable trans23 from the controller of
V3.x project from the [Link] export file the earlier programming system (V.2.3).
(with the Import from file: command). If both, the project from the earlier version (V2.3) as well as the
application from the latest version (V3.x), are running within the
network, the application from the latest version (V3.x) can read
variable trans23 from project [Link].

464 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Task Editor
EIO0000002854 06/2019

Chapter 20
Task Editor

Task Editor

What Is in This Chapter?


This chapter contains the following topics:
Topic Page
Information on the Task Configuration 466
Properties Tab 467
System Events Tab 468
Monitor Tab 471
Variable Usage Tab 473
Configuration of a Specific Task 474
Task Processing in Online Mode 478

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 465
Task Editor

Information on the Task Configuration

Overview
The task configuration defines one or several tasks for controlling the processing of an application
program. Thus, task configuration is an essential object for an application and must be available in
the Applications Tree.

Description of the Task Configuration Tree

At the topmost position of a task configuration tree, there is the entry Task Configuration .
Below there are the defined tasks, each represented by the task name. The POU calls of the
particular tasks are displayed in the task configuration tree.
You can edit the task tree (add, copy, paste, or remove tasks) by the appropriate commands
usable for the Applications tree. For example, for adding a new task, select the Task Configuration
node, click the green plus button, and execute the command Task.... Alternatively, you can right-
click the Task Configuration node, and execute the command Add Object → Task....
Configure the particular tasks in the task editor (see page 474) which additionally provides a
monitoring view in online mode. The options available for task configuration depend on the
controller platform.
Task configuration in Applications tree

Tasks
A task (see page 474) is used to control the processing of an IEC program. It is defined by a name,
a priority and by a type determining which condition will trigger the start of the task. You can define
this condition by a time (cyclic, freewheeling) or by an internal or external event which will trigger
the task; for example, the rising edge of a global project variable or an interrupt event of the
controller.
For each task, you can specify a series of program POUs that will be started by the task. If the task
is executed in the present cycle, these programs will be processed for the length of 1 cycle.
The combination of priority and condition will determine in which chronological order
(see page 478) the tasks will be executed.
For each task, you can configure a time control (watchdog). The possible settings depend on the
specific controller platform.

466 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Task Editor

Properties Tab

Overview
When the Task Configuration (see page 466) node is selected, the Properties tab will be opened
in the Task Configuration editor.
Task configuration, Properties tab, example

Information on the current task configuration as provided by the controller will be displayed, for
example, the maximum allowed numbers of tasks per task type.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 467
Task Editor

System Events Tab

Overview
Use the System Events tab of the Task Configuration editor to call a project function by a system
event (not by a task). You can define the functions that are called per event, and you can activate
or deactivate each system event individually.
This function is not available for all supported controllers. Consult the Programming Guide specific
to your controller for further information.

Description of the Buttons

Button Description
Add Event Handler... Opens the Add Event Handler dialog box that allows
you to define an assignment between an event and
the function it calls.
Remove Event Handler Deletes the selected list assignment.
Event Info Displays information of the corresponding event
library.
Open Event Function Opens the editor of the new function for the selected
assignment.
The implementation language of the new function is
selected in the Add Event Handler dialog box.

Add Event Handler Dialog Box

Element Description
Event Displays a list of system events for selection.
The available events depend on the target controller.
Unavailable events are marked with a red symbol.
Function to call Enter a name for the function.
A new POU, type Function is created with this name
and added to the Applications tree when you confirm
the Add Event Handler dialog box with OK.
Scope  Select the option Application to make the new
function available for the application.
 Select the option POUs to make the new function
available for the entire project.
Implementation language Select the programming language for the new
function.
Description Provides a short description of the selected event.

468 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Task Editor

List of System Events


The system events you define with the Add Event Handler dialog box are displayed in the list of
the System Events tab:

Column Description
Name Indicates the name of the Event you defined in the
Add Event Handler dialog box.
Description Indicates a short description of the selected event.
Function to call Indicates the name of the function you defined with
the parameter Function to call in the Add Event
Handler dialog box.
Active The option is by default selected and the function is
activated.
To deactivate the function, deselect the option
Active.

The list of the System Events tab displays additional information in online mode. Consult the
Programming Guide specific to your controller for controller-specific information on the supported
system events.

Column Description
Event Status 0 indicates that no error has been detected.
If the value is not 0, then an error has been detected.
Number of Calls Indicates the number of times the event has occurred
and the associated function has been called.

Button Description
Online Reset Click the Online Reset button to reinitialize the event
lists, and to reset the counter for the events / function
calls. Events that are not correctly initialized are
displayed with a red Event Status cell.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 469
Task Editor

System Events
The table lists the system events that can be displayed:

Event Description Task Debugging


AfterWritingOutputs Called after writing outputs. IEC task Yes
BeforeReadingInputs Called before reading IEC task Yes
inputs.
CodeInitDone The event is sent after new Communication task No
application code is
initialized during online-
change.
Exception The event is sent if an During an IEC exception, the Depends on the
exception has been event is called from the system task.
detected in the context of exception task or the task with
an application. the exception itself.
Login Login of a client in this Communication task No
application.
Logout Logout of a client from this Communication task No
application.
OnlineChangeDone Called after application Communication task No
online change.
PrepareOnlineChange Called before application Communication task No
online change.
sercos_BeforeChangeToPhase0 Called before change to TskSercos3App No
phase 0.
sercos_BeforeConnectSlaves Called before real slaves TskSercos3App No
are mapped to logical
slaves in the Devices tree.
sercos_TasksPhase0 Called during change to TskSercos3App No
phase 0.
sercos_TasksPhase1 Called during change to TskSercos3App No
phase 1.
sercos_TasksPhase2PostFW Called after change to TskSercos3App No
phase 2
sercos_TasksPhase2PreFW Called before change to TskSercos3App No
phase 2
sercos_TasksPhase3PostFW Called after change to TskSercos3App No
phase 3
sercos_TasksPhase3PreFW Called before change to TskSercos3App No
phase 3
sercos_TasksPhase4 Called during change to TskSercos3App No
phase 4.

470 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Task Editor

Monitor Tab

Overview
If it is supported by the target system, the monitoring functionality is allowed. This is a dynamic
analysis of the execution time and the number of the calls which are controlled by a task. In online
mode, the task processing can be monitored.

Online View of the Task Configuration Editor


When you select the top node in the Task Configuration tree, besides the Properties tab
(see page 467), the Monitor tab is available. In online mode, it shows the status and some current
statistics on the cycles and cycle times in a table view. The update interval for the values is the
same as used for the monitoring of controller values.

Description of the Elements


When the top node in the Task Configuration tree is selected, besides the Properties dialog
(see page 467) on a further tab the Monitoring dialog is available. In online mode, it shows the
status and some current statistics on the cycles and cycle times are displayed in a table view. The
update interval for the values is the same as used for the monitoring of controller values.
Task Configuration, Monitoring

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 471
Task Editor

For each task the following information is displayed in a line:

Task Task name as defined in the Task configuration.


State Possible entries:
 Not created: has not been started since last update;
especially used for event tasks
 Created: task is known in the runtime system, but is not
yet set up for operation
 Valid: task is in normal operation
 Exception: task has got an exception

IEC-Cycle Count Number of run cycles since having started the application;
0 if the function is not supported by the target system.
Cycle Count Number of already run cycles (depending on the target
system, this can be equal to the IEC Cycle Count, or bigger
if cycles are even counted when the application is not
running.)
Last Cycle Time (µs) Last measured runtime in µs
Average Cycle Time (µs) Average runtime of all cycles in µs
Max. Cycle Time (µs) Maximum measured runtime of all cycles in µs
Min. Cycle Time (µs) Minimum measured runtime of all cycles in µs
Jitter (µs) Last measured jitter* in µs
Min. Jitter (µs) Minimum measured jitter* in µs
Max. Jitter (µs) Maximum measured jitter* in µs
* jitter: Time that passes after the task has been started until the operating system indicates
that it is running.

To reset the values to 0 for a task, place the cursor on the task name field and execute the Reset
command available in the context menu.

472 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Task Editor

Variable Usage Tab

Overview
The Variable Usage tab of the Task Configuration provides an overview of the variables and their
usage in the tasks.

Variable Usage List


The list of the Variable Usage tab provides the following information:

Column Description
Variables Indicates the name of the variable.
Type Indicates the data type of the variable.
Count Indicates the number of tasks that access the
variable.
<task name> Indicates the access to the variable:
 r = read
 w = write
 rw = read/write

Commands of the Context Menu


Right-click an entry in the list to display the context menu that allows you to:
 Hide tasks from the list by deselecting the task.
 Display the cross-reference list to variables by executing the command Browse Cross
References.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 473
Task Editor

Configuration of a Specific Task

Overview
When you insert a task in the Task Configuration node of the Applications tree, the task editor view
for setting the task configuration opens with the Configuration tab.
It also opens if you double-click an available task (for example, MAST) in order to modify the
configuration of the task.
NOTE: You can modify the task name by editing the respective entry in the Applications tree.
Insert the desired attributes.

Priority
Priority (0...31) A number from 0...31; 0 is the highest priority, 31 is the lowest
The default value for new tasks is defined by your controller.
NOTE: Consider the controller-specific task settings to find appropriate
settings for your application tasks. This may be important when assigning
priority to tasks dedicated to communications, and its relation to topics such as
cyber security. You can increase system robustness by setting application
tasks to a higher priority than communication tasks.

Type
The target device defines which task types are supported. Not all types are available for some target devices.
Consult the Programming Guide specific to your controller for more information.
Cyclic The task will be processed cyclic according to the time definition (task cycle
time) given in the field Interval (see below).
Event The task will be started as soon as the variable defined in the Event field gets
a rising edge.
Freewheeling The task will be processed as soon as the program is started and at the end of
one run it will automatically be restarted in a continuous loop. There is no cycle
time defined.
External The task will be started as soon as the system event, which is defined in the
External Event field, occurs. It depends on the target, which events will be
supported and offered in the selection list. (Not to be mixed up with system
events.)
Status The task will be started if the variable defined in the Event field is TRUE.

474 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Task Editor

Obligatory Entries Depending on Task Type

Entry Description
Interval (for Obligatory for task type Cyclic.
example, The time (in milliseconds [ms]]) after which the task should be restarted.
t#200ms) When you set the task cycle time, consider the bus system used by the application. For example, on
a CAN bus system, you can set the Bus cycle task in the CANopen I/O Mapping tab. The task cycle
time must match the transmission rate and the number of frames used on the bus. Additionally, the
times set for heartbeat, nodeguarding and sync always should be a multiple of the task cycle time.
Otherwise, CAN frames may go unrecognized. For further information, refer to the Device Editor part
of the EcoStruxure Machine Expert online help.
Event Obligatory for type Event or triggered by an External event.
A global boolean variable which will trigger the start of the task as soon as a rising edge is detected.
Use button ... or the Input Assistant to get a list of all available global event variables.
NOTE: If the event that is driving a task stems from an entry, there must be at least one task which
is not driven by events. Otherwise, the I/Os will never get updated and the task will never get started.
NOTE: Only internal IEC variables are permitted. Referencing a property (including system
parameter) in an event task will lead to a watchdog exception error (see page 476) being detected
during download.

Difference Between Status and Event


The specified event being TRUE fulfills the start condition of a status driven task, whereas an event
driven task requires the change of the event from FALSE to TRUE. If the event changes too fast
from TRUE to FALSE and back to TRUE, then this event may be left undetected and thus the Event
task will not be started.
The following example illustrates the resulting behavior of the task in reaction to an event (green
line):

At sampling points 1...4 tasks of different types show a different reaction:

Behavior at Point: 1 2 3 4
Status No start Start Start Start
Event No start Start No start because No start
the event
changed too fast
from TRUE to
FALSE and back
to TRUE

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 475
Task Editor

Watchdog Settings
For each task, you can configure a time control (watchdog).
The default watchdog settings depend on your controller.
When the Enable option is activated (check mark is set), the watchdog is enabled. When the task
watchdog is enabled, an Exception error is detected if the execution time of the task exceeds the
defined task time limit (Time). The application that contains the task in which the error occurred
and the corresponding child applications are stopped. This has the effect that the tasks of these
applications are also stopped. The defined Sensitivity is taken into account. If option Update IO
while in stop is enabled in the controller settings dialog box, the outputs are set to the pre-defined
default values depending upon the particular controller platform. This function is not available for
all supported controllers. Consult the Programming Guide specific to your controller.
The following cases may occur:
 Several consecutive timeouts:
 Sensitivity: 0, 1 - exception in cycle 1
 Sensitivity: 2 - exception in cycle 2
 Sensitivity: n - exception in cycle n
NOTE: The upper bound of Sensitivity (n) is controller dependent. For more information
concerning Sensitivity, Task time and other relevant parameters, consult the Programming
Guide for your controller, chapter System and Task Watchdog.
 Single timeout: Exception if the cycle time of the present cycle is longer than
(task time limit * sensitivity).
Example:
Time=t#10 ms, Sensitivity=5 (An exception is indicated as soon as the task is running longer
than 50 ms.)

Time (e.g. t#200ms) Defines the allowable maximum execution time for a task. When a task
takes longer than this, the controller will report a task watchdog exception.
Sensitivity Defines the number of task watchdog exceptions that must occur before the
controller detects an application error.

NOTE: The watchdog function is not available in simulation mode.


Consult the Programming Guide specific to your controller, chapter System and Task Watchdog,
for information on task time, sensitivity and other possible watchdog parameters.

476 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Task Editor

POUs
The POUs which are controlled by the task are listed here in a table with the POU name and an
optional Comment. Above the table there are commands for editing:
 In order to define a new POU, open the Input Assistant dialog box via the command Add Call.
Choose 1 of the programs available in the project. You can also add POUs of type program to
the list by drag and drop from the Applications tree.
 In order to replace a program call by another 1, select the entry in the table, open the Input
Assistant via command Change Call.. and choose another program.
 In order to delete a call, select it in the table and use the command Remove Call.
 The command Open POU opens the selected program in the corresponding editor.

The sequence of the listed POU calls from top to bottom determines the sequence of execution in
online mode. You can shift the selected entry within the list via the commands Move up and Move
down.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 477
Task Editor

Task Processing in Online Mode

Which Task Is Being Processed?


For the execution of the tasks defined in the Task Configuration, the following rules apply:
 That task is executed, whose condition has been met. This means, if the specified time has
expired, or after its condition (event) variable exhibits a rising edge.
 If several tasks have a valid requirement, then the task with the highest Priority will be executed.
 If several tasks have valid conditions and equivalent priorities, then the task with the longest
waiting time will be executed first.
 The processing of the POU (of type program) calls will be done according to their order (top
down) in the Task Editor. If a POU is called which is available with the same name both in the
Applications tree assigned to the application, as well as in a library or project-globally in the
Global node of the Applications tree, the one will be executed that is directly declared below in
the Applications tree.

478 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Watch List Editor
EIO0000002854 06/2019

Chapter 21
Watch List Editor

Watch List Editor

What Is in This Chapter?


This chapter contains the following topics:
Topic Page
Watch View / Watch List Editor 480
Creating a Watch List 481
Watch List in Online Mode 482

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 479
Watch List Editor

Watch View / Watch List Editor

Overview
A watch list is a user-defined set of project variables. They are displayed in the watch view for
monitoring (see page 482) the values in a table. Also, writing and forcing of the variables is
possible within the watch view.
Open a watch view via the Watch command submenu (by default in the View menu). It provides
an editor for creating watch lists (see page 481).
By default, you can set up 4 individual watch lists in the watch views Watch 1, Watch 2, Watch 3,
Watch 4. View Watch all Forces in online mode gets filled (see page 483) automatically with all
currently forced values of the active application.

480 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Watch List Editor

Creating a Watch List

Procedure
Create a watch list by executing the following actions:

Step Action Comment


1 Execute the command View → Watch → –
Watch<n> to open a Watch view.
2 Double-click the field in the column Expression NOTE: If you enter the name of a structured
and enter the variable to be watched either variable, then in online mode the particular
manually or via the Input Assistant. structure components are entered in further
Syntax: lines automatically.
<device name>.<application name>.<
object name>.<variable name>
3 Subsequently define all variables which you The fields Execution point, Type, Address,
want to get monitored in the current watch list. Comment are filled automatically
You can modify the order of the entries via drag corresponding to the declaration of the
and drop. variables. The symbol preceding the
expression indicates whether it is an input

variable , an output variable , or a


normal variable .

Online Mode
In online mode, the current variable value is shown in the column Value. Like at other monitoring
positions, you can define Prepared Values and force or write them. For further information, refer to
the chapters Force Values, Prepare Value Dialog Box (see EcoStruxure Machine Expert, Menu
Commands, Online Help) and Monitoring (see page 271).
In online mode, you can add a currently focused expression to the watch list by executing the
command Add Watch.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 481
Watch List Editor

Watch List in Online Mode

Monitoring
A watch list (see page 480) (Watch<n>) in online mode shows the current value of a variable in the
Value column. This is the value the variable has between 2 task cycles.
Also a possibly assigned direct IEC address and/or comment are displayed. The components of
the view correspond to those of the online view of the declaration editor (see page 432).
See chapter Creating a Watch List (see page 481) for a description on how to set up such a watch
list and how to handle folds in case of structured variables.
Watch view in online mode

NOTE: In online mode you can add expressions to the watch list by use of the command Add
Watch.

Write and Force Values


In column Prepared value, you can enter a desired value which will be written or forced to the
respective expression on the controller by command Write values or Force values. Refer to the
descriptions of the commands Write and Force, usable also in other monitoring views (for example,
declaration editor).

482 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Watch List Editor

Watch All Forces


This is a special watch list view, which in online mode is automatically filled with all currently forced
values of the active application. Each Expression, Type, Value, and Prepared value will be shown,
as in the online view of a Watch<n> list.
You can unforce values by 1 of the following commands available via the button Unforce...:
 Unforce all selected Expressions, without modifying the value.
 Unforce all selected Expressions and restore the variable to the value it had before forcing it.

Watch all Forces dialog box

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 483
Watch List Editor

484 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Tools Within Logic Editors
EIO0000002854 06/2019

Chapter 22
Tools Within Logic Editors

Tools Within Logic Editors

What Is in This Chapter?


This chapter contains the following topics:
Topic Page
Function and Function Block Finder 486
Input Assistant 489

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 485
Tools Within Logic Editors

Function and Function Block Finder

Overview
EcoStruxure Machine Expert provides the FFB (function and function block) finder that assists you
in finding a specific function or function block even if you do not know its exact name.
You can use the function and function block finder in the following programming languages that
allow to insert function blocks:
 CFC
 LD
 IL
 FBD
 ST

How to Find a Function or Function Block with the FFB Finder


When you are about to create programming code in the EcoStruxure Machine Expert Logic Builder,
go to the place where you want to insert the function block and open the FFB finder as follows:
 select the menu Edit → FFB Finder
or
 right-click at the respective place in the editor and select the command FFB Finder... from the
context menu

486 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Tools Within Logic Editors

The FFB Finder dialog box opens:

The FFB Finder dialog box contains the following elements for finding a function or function block:

Element Description
Find what In the Find what textbox, enter the name of the function or function block you want
to insert into your programming code.
As wildcards you can use a question mark (?), which replaces exactly one character,
or an asterisk (*), which can replace several characters or no character at all.
Company If you know the company that created the library which includes the function block
you are searching for, you can select the companies from the Company list.
This parameter is by default set to All companies.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 487
Tools Within Logic Editors

Element Description
Match case Check the Match case check box to perform a case-sensitive search.
By default, this check box is not selected.
Include comments in search Check the Include comments in search check box to search for the entered string
not only in the names of functions and function blocks but also in the comments that
are saved with them.
By default, this check box is not selected.
Search in project Libraries only Check the Search in project libraries only check box to limit the search to those
libraries that are used in the current application.
By default, this check box is not selected and the find operation includes all libraries
that are installed on the EcoStruxure Machine Expert PC.
Find Click the Find button or press the ENTER key to start searching for the function or
function block.

Results Returned by the FFB Finder


Any function or function block that matches the entered search criteria will be listed in the Results
list with the following information:
 Name of the function or function block
 the Library the function or function block is saved in
 the Version of the library
 the Company that created the library
 A comment, if available, will be displayed in the column on the right side.
 The column Loaded on the left side indicates whether the library, the function or function block
is saved in, is already used in the current project.
To display further information on one of the functions or function blocks, select it from the list. In
the field below, a graphic of the function / function block with its inputs and outputs will be
displayed, as well as a description or any further information, if available.

Integrating a Function / Function Block into the Programming Code


To integrate a function / function block that was found by the FFB Finder in your programming
code, select it in the Results list, and
 either double-click the selected entry in the Results list,
 or click the OK button.

The selected function / function block will be inserted at the place where your cursor is positioned
in your programming code and the respective library will be loaded automatically.
Repeat this operation whenever you need assistance in finding a specific function / function block.

488 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Tools Within Logic Editors

Input Assistant

Overview
The Input Assistant dialog box and the corresponding command Input Assistant (by default in the
Edit → Smart Coding menu) are only available if the cursor is placed in a text editor window. The
dialog box offers the available project items for being inserted at the current cursor position.
Default shortcut: F2
Input Assistant dialog box

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 489
Tools Within Logic Editors

Description of the Elements


The Input Assistant dialog box provides the following elements:

Element Description
Categories In this area, the project items are sorted by Categories.
Filter You can set a Filter for the category Variables. To display a certain type of variable,
select an entry from the list, such as Local variables, Global variables, Constants.
Items area
Name, Type, Address, Origin The Items area shows the available items and - depending on the category - also their
data Type, Address, and Origin for the category selected in the Categories area.
The Origin is shown for I/O variables (path within the Devices Tree) and library-
defined variables (library name and category).
You can sort the items by Name, Type, Address, Origin in ascending or descending
alphabetic order. To achieve this, click in the respective column header (arrow-up or
arrow-down symbol).
To hide or display the columns Type, Address or Origin, right-click the headline of the
respective column.
Structured view If the option Structured view is selected, the project items are displayed in a structure
tree supplemented with icons.
If the option is not selected, the project items are arranged flat. Each project item is
displayed with the POU it belongs to (example: GVL1.gvar1).

NOTE: If there are objects with the same name available in the Global node of the Applications
Tree as well as below an application (Applications Tree), only 1 entry is offered in the Input
Assistant because the usage of the object is determined by the usual call priorities (first the
application-assigned object, then the global one).

Element Description
Show documentation If the option Show documentation is selected, the Input Assistant dialog box is
extended by the Documentation field.
If the selected element is a variable and an address is assigned to this variable or a
comment has been added at its declaration, these are displayed here.
Insert with arguments If this option is selected, items which include arguments, for example functions, are
inserted with those arguments.
Example:
If function block FB1, which contains an input variable fb1_in and an output variable
fb1_out, is inserted with arguments, the following will be written to the editor:
fb1(fb1_in:= , fb1_out=> )
Insert with namespace prefix If this option is selected, the item is inserted with the prefixed namespace.
This option has to be selected when inserting objects into libraries which have defined
in their Properties that the use of the namespace prefix is obligatory (option Only allow
qualified access to all identifiers (see EcoStruxure Machine Expert, Functions and
Libraries User Guide) is selected).

490 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Tools
EIO0000002854 06/2019

Part VI
Tools

Tools

What Is in This Part?


This part contains the following chapters:
Chapter Chapter Name Page
23 Data Logging 493
24 Recipe Manager 495
25 Trace Editor 517
26 Trend Recording 545
27 Unit Conversion 561
28 Symbol Configuration Editor 567
29 EcoStruxure Machine Expert Controller - HMI Data Exchange 577
30 Cam Motion Editor 593

EIO0000002854 06/2019 491


Tools

492 EIO0000002854 06/2019


EcoStruxure Machine Expert
Data Logging
EIO0000002854 06/2019

Chapter 23
Data Logging

Data Logging

Introduction to Data Logging

Overview
You can monitor and analyze application data by examining the data log file (.log).

The figure shows an application that includes the 2 function blocks, LogRecord and Dump. The
LogRecord function block writes data to the buffer, which empties into the data log file (.log)
located into the controller memory. The buffer dumping is automatic when 80% full or it can be
forced by the Dump function. As a standard FTP client, a PC can access this data log file when the
controller acts as an FTP server. It is also possible to upload the file with EcoStruxure Machine
Expert or by the controller web server.
NOTE: Only controllers with file management functionality can support data logging. Refer to your
controller programming manual to see if it supports file management.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 493
Data Logging

Sample Data Log File (.log)


Entries in File: 8; Last Entry: 8;
18/06/2009;14:12:33;cycle: 1182;
18/06/2009;14:12:35;cycle: 1292;
18/06/2009;14:12:38;cycle: 1450;
18/06/2009;14:12:40;cycle: 1514;
18/06/2009;14:12:41;cycle: 1585;
18/06/2009;14:12:43;cycle: 1656;
18/06/2009;14:14:20;cycle: 6346;
18/06/2009;14:14:26;cycle: 6636;

Implementation Procedure
First declare and configure the data log files in your application before starting to write your
program.

494 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Recipe Manager
EIO0000002854 06/2019

Chapter 24
Recipe Manager

Recipe Manager

What Is in This Chapter?


This chapter contains the following topics:
Topic Page
Recipe Manager 496
Recipe Definition 500
RecipeMan Commands 505
Loading Recipe Values from the Controller 514
Memory Usage by Recipes 516

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 495
Recipe Manager

Recipe Manager

Overview
The Recipe Manager provides the functionality for handling user-defined lists of project variables,
named recipe definitions, and definite value sets for these variables within a recipe definition,
named recipes.
You can use recipes to modify or read recipe values for a specific set of variables (recipe definition)
on the controller. They can also be loaded from and saved to files. These interactions are possible
by using visualization elements which you have to configure appropriately (input configuration
execute command). You can also use certain recipe commands in the application (see page 505).
When you have selected a recipe, validate that the recipe is appropriate for the process that will
be controlled.

WARNING
UNINTENDED EQUIPMENT OPERATION
 Conduct a safety analysis for the application and equipment installed.
 Verify that recipe is appropriate for the process and equipment or function in the installation.
 Supply appropriate parameters, particularly for limits and other safety-related elements.
 Verify that all sensors and actuators are compatible with the recipe selected.
 Thoroughly test all functions during verification and commissioning.
 Provide independent paths for critical control functions (emergency stop, over-limit conditions
etc.) according to the safety analysis and applicable codes and regulations.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

By default, the recipe manager is loaded to the controller during download. It handles the writing
and reading of recipes when the application is running on the controller. However, it is not
necessary to load the recipe manager to the controller to use recipes only for exchanging
parameters during startup of the system (that is when EcoStruxure Machine Expert is still
connected to the controller). You can deactivate its download for this purpose using the option
Recipe Management in the PLC. The writing and reading of recipe values will then be handled by
the standard online commands and services. If the recipe management has to run on the controller,
because it is needed by the application program during run time, then the RecipeCommands
function block is responsible for handling the recipe commands.
For a description of the behavior of recipes in the various online modes, refer to the chapter Recipe
Definition (see page 500).
If the recipe manager is located on another controller other than the application being affected by
the recipes, the data server will be used to read/write the variables contained in the recipes.
Reading and writing of the variables is done synchronously. By calling g_RecipeM-
[Link] after reading/writing, you may verify if the transmission has been carried out
successfully (g_RecipeManager.LastError=0 in this case).

496 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Recipe Manager

Recipe Management Objects in the Tools Tree


To add a Recipe Manager object to the Tools tree, select the Application node, click the green plus
button, and execute the command Add other objects... → Recipe Manager.... Confirm the Add
Recipe Manager dialog box by clicking Add and the Recipe Manager node is inserted below the
Application node.
You can add one or several Recipe Definition objects to a Recipe Manager node. To achieve this,
click the green plus button of the Recipe Manager node and execute the command Recipe
Definition.... Enter a Name in the Add Recipe Definition dialog box, and click Add. Double-click the
node to view and edit recipe definitions including the particular recipes in a separate editor window.
For a description of the behavior of recipes in the various online modes, refer to the chapter Recipe
Definition (see page 500).

Recipe Manager Editor, Storage Tab


By default, the recipes will be stored automatically to files according to the settings in the Storage
tab of the Recipe Manager editor:

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 497
Recipe Manager

Parameter Description
Storage Type Select Textual or Binary storage type.
File Path Specify the location where the recipe is to be saved in the controller or in the
local file system. In the controller, the path must end with a backslash (\),
such as MyRecipes\.
File Extension Specify the file extension of the recipe file.

NOTE: A storage file can also be defined by the input on a visualization element (input
configuration - execute command - save/load a recipe from a file). However, when defining the
name of such a file in the visualization configuration, do not overwrite the * .txtrecipe file defined
here in the recipe manager.

Parameter Description
Separator In case of textual storage, the columns selected for storage will be separated
by a separator. Select 1 of the 6 options proposed.
Available Columns All columns of the recipe definition, represented by the respective header.
Selected Columns Selected columns of the recipe definition, that is, the columns to be stored.
At least the column containing the Current Value is included in this part. It
cannot be deselected.
arrow buttons The other columns can be shifted to the right or to the left by selecting the
respective entry and clicking the arrow buttons. You can also shift all entries
from one side to the other at once by using the double arrow buttons.
Up and Down buttons Click these buttons to adjust the order of the selected columns, which
represents the order of the columns in the storage file.
For each recipe, a file <recipe name>.<recipe definition>.<file extension> will
be created in the specified folder. This file will be reloaded to the recipe
manager at each restart of the application. For the update configuration of the
recipe storage files, refer to the description of the General tab (see page 499).
Save as default Click the Save as default button to use the settings made within this dialog
box as default settings for each further recipe manager inserted.

NOTE: Floating point values (type REAL/LREAL) are stored in the textual recipe files in decimal
format as well as in hexadecimal format. (Because the hexadecimal value represents the exact
value whereas the decimal REAL value represents the value to the seventh decimal place.)
Example: PLC_PRG.realVar:=22.0F16#1600000H-5
For manually modifying a value in the recipe file, edit the decimal value and remove the
subsequent hexadecimal entry. (If both values are available, the hexadecimal value is loaded.)

498 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Recipe Manager

Recipe Manager Editor, General Tab

Parameter Description
Recipe Management in the If the recipe manager is not needed on the controller, because no recipes are
PLC to be handled during run time of the application, you can deactivate this option
so that the manager is not downloaded.
An automatic update of the recipe file is only possible after the download has
been performed. To download the recipe management to the controller, select
this option.
Save recipe
Save changes to recipe files This option is available only if the option Recipe Management in the PLC is
automatically selected.
Select the Save changes to recipe files automatically option to update recipe
files automatically in runtime mode whenever a recipe is changed.
Load recipe
Load only by exact match of Select the option Load only by exact match of the variable list to load recipe
the variable list files only if the file contains all variables available in the variable list of the
recipe definition of the application. The variables in the file must be in the
same order as in the variable list. Additional entries at the end are ignored.
Otherwise, the recipe cannot be loaded and the return value (see page 508)
ERR_RECIPE_MISMATCH is set ([Link]).
Load matching variables by Select the option Load matching variables by variable name to load only
variable name variables with matching variable names from the recipe file. No error status is
set when the variable list in the file is different from the list in the recipe
definition of the application. Thus, recipe files can also be loaded if variables
in the file or in the recipe definition have been deleted.
Write recipe
Limit the variable to min/max Select the option Limit the variable to min/max when recipe value is out of the
when recipe value is out of range to write the defined minimum or maximum value to the controller if the
the range recipe contains a value that is beyond the value range.
Do not write to a variable Select the option Do not write to a variable when the recipe value is out of the
when the recipe value is out min/max range to prevent a value from being written to the controller if the
of the min/max range recipe contains a value that is beyond the value range. The value that is
present in the controller will be retained.

Write Recipe
Click the Write Recipe button to write the selected values of a recipe to the variables in the
controller when the application is in online mode.
NOTE: The present values in the controller will be overwritten by the recipe values.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 499
Recipe Manager

Recipe Definition

Overview
The recipe manager (see page 496) handles 1 or several recipe definitions. A recipe definition
contains a list of variables and 1 or several recipes (value sets) for these variables. You can save
a recipe to a file or write recipe files to the controller. By using different recipes, you can assign
another set of values to a set of variables on the controller in one stroke. There is no limitation of
the number of recipe definitions, recipes, and variables per recipe.

Recipe Definition
You can add 1 or several Recipe Definition objects to a Recipe Manager node in the Tools tree.
To achieve this, click the green plus button of the Recipe Manager node and execute the command
Recipe Definition....
Double-click the node to view and edit recipe definitions including the particular recipes in a
separate editor view.
Recipe definition editor view

1 Recipe definition name


2 Recipe names

The editor window is titled with the name of the recipe definition.

500 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Recipe Manager

Parameter Description
Variable In the table, you can enter several project variables for which you want to
define 1 or several recipes. For this purpose, you can use the command Insert
Variable when the cursor is in any field of any line. Alternatively, you can
double-click a Variable field, or you can select it and press the spacebar to get
into editor mode. Enter the valid name of a project variable, for example
plc_prg.ivar. You can click the ... button to open the Input Assistant.
You can also specify a POU, for example, a program like PLC_PRG shown in
the figure above. In this case, all variables defined within the POU are added
to the recipe definition automatically when you close the input field. The same
applies to data types or function blocks.
You can toggle between the normal and the structured view using the buttons
on the right side.
After you have modified the declaration of structured data types or POUs, the
recipe definition can be reduced or extended by the concerned variables
automatically. For further information, refer to the Update structured variables
command (see EcoStruxure Machine Expert, Menu Commands, Online
Help).
Type The Type field is filled automatically. Optionally, you can define a symbolic
Name.
Name You can define a symbolic Name.
Comment Enter additional information, such as the unit of the value recorded in the
variable.
Minimal Value and Maximal You can optionally specify these values which should be permissible for being
Value written on this variable.
Current Value This value is monitored in online mode.
Save changes to recipe files It is a good practice to activate this option in the General tab of the Recipe
automatically manager editor because it affects the usual behavior of a recipe
management: the storage files are updated immediately at any modification
of a recipe during run time. Consider that the option can only be effective as
long as the recipe manager is available on the controller.

You can remove a variable (line) from the table by pressing the DEL key when one of its cells is
selected. You can select multiple lines by keeping the CTRL key pressed while selecting cells. You
can copy the selected lines by copy and paste. The paste command inserts the copied lines above
the selected line. In doing so, recipe values are inserted in the matching recipe column, if available.
To add a recipe to the recipe definition, execute the Add a new recipe command (see EcoStruxure
Machine Expert, Menu Commands, Online Help) when the focus is in the editor view. For each
recipe, an own column is created, titled with the recipe name (example: R1 and R2 in the figure
above).
In online mode, a recipe can be changed either by an appropriately configured visualization
element (input configuration execute command) or by using the appropriate methods of the
function block RecipeManCommands of the Recipe_Management.library.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 501
Recipe Manager

The following methods are available in the contextual menu of a recipe column in the recipe
definition editor view:
 ReadRecipe: The present variable values are taken into the recipe.
 WriteRecipe: The recipe is written into the variables.
 SaveRecipe: The recipe is stored into a default recipe file.
 LoadRecipe: The recipe is loaded from a default recipe file.
 CreateRecipe: A new recipe in the recipe definition is created.
 DeleteRecipe: An existing recipe from a recipe definition is deleted.

See in the following paragraphs, how the recipes behave in the particular online states. It is a good
practice to set the option Save changes to recipe files automatically (in order to get the usual
behavior of a recipe management).

Recipe
You can add or remove a recipe offline or online. In offline mode, use the commands Add a new
recipe (see EcoStruxure Machine Expert, Menu Commands, Online Help) and Remove recipes
(see EcoStruxure Machine Expert, Menu Commands, Online Help) within the recipe manager
editor. In online mode, either configure an input on an appropriately configured visualization
element, or use the appropriate methods of function block RecipeManCommands of the
Recipe_Management.library.
When adding a recipe, a further column is added behind the right-most column, titled with the name
of the recipe (see the figure of the recipe definition editor view). The fields of a recipe column can
be filled with appropriate values. Thus, for the same set of variables, different sets of values can
be prepared in the particular recipes.

Using Recipes in Online Mode


The recipes can be handled (created, read, written, saved, loaded, deleted) by using the methods
of the function block RecipeManCommands, provided by the library Recipe_Management.libray,
in the application code, or via inputs on visualization elements.
Recipe handling in online mode if Save changes to recipe files automatically is activated:

Actions Recipes Defined Within the Project Recipes Created During Run Time
Online Reset Warm The recipes of all recipe definitions get Dynamically created recipes remain
Online Reset Cold set with the values out of the open unchanged.
Download project.
Online Reset Origin The application is removed from the controller. If a new download is done
afterwards, the recipes will be restored like on an Online Reset Warm.
Shut down and restart the After the restart, the recipes are reloaded from the automatically created files. So
controller the status before shutdown will be restored.
Online Change The recipe values remain unchanged. During run time, a recipe can only be
modified by the commands of the RecipeManCommands function block.
Stop At a stop/start of the controller, the recipes remain unchanged.

502 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Recipe Manager

NOTE: Floating point values (type REAL/LREAL) are stored in the textual recipe files in decimal
format as well as in hexadecimal format. (Because the hexadecimal value represents the exact
value whereas the decimal REAL value represents the value to the seventh decimal place.)
Example: PLC_PRG.realVar:=22.0F16#1600000H-5
For manually modifying a value in the recipe file, edit the decimal value and remove the
subsequent hexadecimal entry. (If both values are available, the hexadecimal value is loaded.)
Recipe handling in online mode if Save changes to recipe files automatically is NOT activated:

Actions Recipes Defined Within the Project Recipes Created During Run Time
Online Reset Warm The recipes of all recipe definitions Dynamically created recipes get
Online Reset Cold get set with the values out of the lost.
Download open project. However, these are
only set in the memory. In order to
store the recipe in a file, the save
command must be used explicitly.
Online Reset Origin The application is removed from Dynamically created recipes get
the controller. If a new download is lost.
done afterwards, the recipes will
be restored.
Shut down and restart the After the restart the recipes are reloaded from the initial values which
controller had been created at download from the values out of the project. So the
status as it was before shutdown will not be restored.
Online Change The recipe values remain unchanged. During run time, a recipe can only
be modified by the commands of the RecipeManCommands function
block.
Stop At a stop/start of the controller, the recipes remain unchanged.

Further information:
 Concerning the storage of recipes in files, which are reloaded at a restart of the application, refer
to the description of the Recipe Manager Editor, Storage Tab (see page 497).
 For a description of the particular RecipeManCommands methods (see page 505), refer to the
documentation within the library.
 For the appropriate input configuration of a visualization element, refer to its help page (category
Input → execute command).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 503
Recipe Manager

The following actions on recipes are possible:

Actions Description
Create recipe (= Add a new A new recipe is created in the specified recipe definition.
recipe)
Read recipe The values of the variables of the specified recipe definition are read from the
controller and are written to the specified recipe. This means that the values
will be stored implicitly (in a file on the controller). They will also be monitored
immediately in the recipe definition table in the Recipe Manager. In other
words, the recipe managed in the Recipe Manager gets updated with the
actual values from the controller.
Write recipe The values of the given recipe, as visible in the recipe manager, are written to
the variables on the controller.
Save Recipe The values of the specified recipe are written to a file with extension
*.txtrecipe, the name of which you have to define. For this purpose, the dialog
box for saving a file in the local file system opens.
NOTE: The implicitly used recipe files, necessary as a buffer for reading and
writing of the recipe values, may not get overwritten. This means that the
name for the new recipe file must be different from <recipe name>.<recipe
definition name>.txtrecipe.
Load Recipe The recipe which has been stored in a file (see the Save Recipe description)
can be reloaded from this file. The dialog box for browsing for a file opens for
this purpose. The filter is automatically set to extension *.txtrecipe. After
reloading the file, the recipe values will be updated accordingly in the recipe
manager.
Delete recipe (= Remove The specified recipe is removed from the recipe definition.
recipe)
Change recipe The value of the project variables can be changed. With a following write
recipe action, the appropriate project variables are written with the new
values.

Creating Specific Tasks for Modicon M241 and M251 Logic Controllers
For Modicon M241 and M251 logic controllers that should gain access to recipe files (create, read,
write, delete), create specific tasks (see page 474) with low priority and with the Watchdog function
disabled. Otherwise this can have an impact on the cycle time of the application.

504 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Recipe Manager

RecipeMan Commands

Overview
When calling a recipe command, internal data access is performed. Depending on the device type,
this takes a few milliseconds. Verify that these calls are not performed by the MAST task or by a
task with a configured watchdog or a real-time task. This may lead to an application error and the
controller will enter the HALT state.
Consider that the option Save changes to recipe files automatically also performs a file access with
each modification of the recipe. Deactivate this option if the storage of the recipe is triggered by
the application.

Return Values
The following return values are possible for recipe commands:

Return Value Description


ERR_NO_RECIPE_MANAGER_SET No recipe manager is available on the controller.
ERR_RECIPE_DEFINITION_NOT_FOUND The recipe definition does not exist.
ERR_RECIPE_ALREADY_EXIST The recipe already exists in the recipe definition.
ERR_RECIPE_NOT_FOUND The recipe does not exist in the recipe definition.
ERR_RECIPE_FILE_NOT_FOUND The recipe file does not exist.
ERR_RECIPE_MISMATCH The content of the recipe file does not match the
present recipe.
NOTE: This return value is only generated when the
storage type is textual and when a variable name in
the file does not match the variable name in the
recipe definition. The recipe file is not loaded.
ERR_RECIPE_SAVE_ERR The recipe file could not be opened with write access.
ERR_FAILED The operation was unsuccessful.
ERR_OK The operation was successful.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 505
Recipe Manager

CreateRecipe
This method creates a new recipe in the specified recipe definition and afterwards reads the
controller values into the new recipe. At the end, the new recipe is stored in the default file.

Parameter Description
RecipeDefinitionName: Name of the recipe definition
RecipeName: Name of the recipe

Return values (see page 505):


ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
ALREADY_EXIST, ERR_FAILED, ERR_OK

CreateRecipeNoSave
This method creates a new recipe in the specified recipe definition and afterwards reads the
controller values into the new recipe.

Parameter Description
RecipeDefinitionName: Name of the recipe definition
RecipeName: Name of the recipe

Return values (see page 505):


ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_FAILED, ERR_OK

DeleteRecipe
This method deletes a recipe from a recipe definition.

Parameter Description
RecipeDefinitionName: Name of the recipe definition
RecipeName: Name of the recipe

Return values (see page 505):


ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_FAILED, ERR_OK

506 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Recipe Manager

DeleteRecipeFile
This method deletes the default recipe file from a recipe.

Parameter Description
RecipeDefinitionName: Name of the recipe definition
RecipeName: Name of the recipe

Return values (see page 505):


ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_RECIPE_FILE_NOT_FOUND, ERR_OK

LoadAndWriteRecipe
This method loads a recipe from the default recipe file and afterwards writes the recipe into the
controller variables.

Parameter Description
RecipeDefinitionName: Name of the recipe definition
RecipeName: Name of the recipe

Return values (see page 505):


ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_RECIPE_FILE_NOT_FOUND, ERR_RECIPE_MISMATCH, ERR_FAILED,
ERR_OK

LoadFromAndWriteRecipe
This method loads a recipe from the specified recipe file and afterwards writes the recipe into the
controller variables.

Parameter Description
RecipeDefinitionName: Name of the recipe definition
RecipeName: Name of the recipe
FileName: Name of the file

Return values (see page 505):


ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_RECIPE_FILE_NOT_FOUND, ERR_RECIPE_MISMATCH, ERR_FAILED,
ERR_OK

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 507
Recipe Manager

LoadRecipe
This method loads a recipe from the default recipe file. The default recipe file name is
<recipe>.<recipe definition>.<recipeextension>.

Parameter Description
RecipeDefinitionName: Name of the recipe definition
RecipeName: Name of the recipe

Return values (see page 505):


ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_RECIPE_FILE_NOT_FOUND, ERR_RECIPE_MISMATCH, ERR_FAILED,
ERR_OK

ReadAndSaveRecipe
This method reads the controller values into the recipe and afterwards stores the recipe into the
default recipe file.

Parameter Description
RecipeDefinitionName: Name of the recipe definition
RecipeName: Name of the recipe

Return values (see page 505):


ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_RECIPE_SAVE_ERR, ERR_FAILED, ERR_OK

ReadAndSaveRecipeAs
This method reads the controller values into the recipe and afterwards stores the recipe into the
specified recipe file. The content of an existing file would be overridden.

Parameter Description
RecipeDefinitionName: Name of the recipe definition
RecipeName: Name of the recipe
FileName: Name of the file

Return values (see page 505):


ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_RECIPE_SAVE_ERR, ERR_FAILED, ERR_OK

508 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Recipe Manager

SaveRecipe
This method stores the recipe into the default recipe file. The content of an existing file would be
overridden. The default recipe file name is <recipe>.<recipedefinition>.<recipeextension>.

Parameter Description
RecipeDefinitionName: Name of the recipe definition
RecipeName: Name of the recipe

Return values (see page 505):


ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_RECIPE_SAVE_ERR, ERR_FAILED, ERR_OK

ReadRecipe
This method reads the controller values into the recipe.

Parameter Description
RecipeDefinitionName: Name of the recipe definition
RecipeName: Name of the recipe

Return values (see page 505):


ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_FAILED, ERR_OK

WriteRecipe
This method writes the recipe into the controller variables.

Parameter Description
RecipeDefinitionName: Name of the recipe definition
RecipeName: Name of the recipe

Return values (see page 505):


ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_FAILED, ERR_OK

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 509
Recipe Manager

ReloadRecipes
This method reloads the list of recipes from the file system.

Parameter Description
RecipeDefinitionName: Name of the recipe definition

Return values (see page 505):


ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_FAILED,
ERR_OK

GetRecipeCount
This method returns the number of recipes from the corresponding recipe definition.

Parameter Description
RecipeDefinitionName: Name of the recipe definition

Return values: -1 : if the recipe definition is not found.

GetRecipeNames
This method returns the recipe names from the corresponding recipe definition.

Parameter Description
RecipeDefinitionName: Name of the recipe definition
pStrings : The strings where the recipe values should be stored
iSize : The size of an array of strings
iStartIndex : The start index; can be used for a scrolling function

Return values (see page 505):


ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_FAILED,
ERR_OK

510 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Recipe Manager

Example:
There are 50 recipes. To create a table which shows 10 recipe names at a time, define an array of
strings:
strArr: ARRAY[0..9] OF STRING;
Corresponding to the iStartIndex, the recipe names can be read from a specific area.
iStartIndex := 0;
The names 0...9 are returned.
iStartIndex := 20;
The names 20...29 are returned. In this example:
iSize := 10;

GetRecipeValues
This method returns the recipe variable values from the corresponding recipe.

Parameter Description
RecipeDefinitionName: Name of the recipe definition
RecipeName Name of the recipe
pStrings : The strings where the recipe values are to be stored
iSize : The size of an array of strings
iStartIndex : The start index; can be used for a scrolling function
iStringLength : The length of the string in the array

Return values (see page 505):


ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_FAILED, ERR_OK
Example:
There are 50 recipes. To create a table which shows 10 recipe names at a time, define an array of
strings:
strArr: ARRAY[0..9] OF STRING;
Corresponding to the iStartIndex, the recipe names can be read from a specific area.
iStartIndex := 0;
The values 0...9 are returned.
iStartIndex := 20;
The values 20...29 are returned. In this example:
iStringLength := 80;
iSize := 10;

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 511
Recipe Manager

GetRecipeVariableNames
This method returns the variable name of the corresponding recipe.

Parameter Description
RecipeDefinitionName: Name of the recipe definition
RecipeName Name of the recipe
pStrings : The strings where the recipe values should be stored
iSize : The size of an array of strings
iStartIndex : The start index; can be used for a scrolling function

Return values (see page 505):


ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_FAILED, ERR_OK
Example:
There are 50 recipes. To create a table which shows 10 recipe names at a time, define an array of
strings:
strArr: ARRAY[0..9] OF STRING;
Corresponding to the iStartIndex, the recipe names can be read from a specific area.
iStartIndex := 0;
The names 0...9 are returned.
iStartIndex := 20;
The names 20...29 are returned. In this example:
iSize := 10;

SetRecipeValues
This method sets the recipe values into the corresponding recipe.

Parameter Description
RecipeDefinitionName: Name of the recipe definition
RecipeName Name of the recipe
pStrings : The strings where the recipe values should be stored
iSize : The size of an array of strings
iStartIndex : The start index; can be used for a scrolling function

Return values (see page 505):


ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_FAILED, ERR_OK

512 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Recipe Manager

Example:
There are 50 recipes. To create a table which shows 10 recipe names at a time, define an array of
strings:
strArr: ARRAY[0..9] OF STRING;
Corresponding to the iStartIndex, the recipe names can be read from a specific area.
iStartIndex := 0;
The values 0...9 are set.
iStartIndex := 20;
The values 20...29 are set. In this example:
iStringLength := 80;
iSize := 10;

GetLastError
This method returns the last detected error of the previous operations.
Return values (see page 505): ERR_NO_RECIPE_MANAGER_SET, ERR_OK

ResetLastError
This method resets the last detected error.
Return values (see page 505): ERR_NO_RECIPE_MANAGER_SET, ERR_OK

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 513
Recipe Manager

Loading Recipe Values from the Controller

Overview
You can apply recipe values from the controller to recipe definitions in the project, even if these
definitions have been modified in the project.
As a prerequisite, the option Recipe Management in the PLC has to be activated in the General
tab of the Recipe Manager editor and File Path has to be set to 'Recipes\'.

Loading Recipe Values from the Controller


To load recipe values from the controller, proceed as follows:

Step Action Comment


1 Create a recipe definition RecDef1 in the project, –
containing the variables PLC_PRG.ivar and
PLC_PRG.bvar.
2 Insert a recipe R1: –
Value for PLC_PRG.ivar: 33
Value for PLC_PRG.bvar: TRUE
3 Log in to the controller and download the application. Result: The recipe file
[Link] is saved to the
directory Recipes of the controller.
4 Log out from controller. –
5 Add another variable PLC_PRG.dwvar to the recipe –
definition in the project.
6 Edit the recipe definition file [Link] on –
the controller by changing the value for
PLC_PRG:ivar from 33 to 34.
7 Add another recipe on the controller by copying the –
[Link] file and renaming it to
[Link].
8 Edit the [Link] file and modify the Result: On the controller, there are now
recipe values: two recipes, R1 and R2.
PLC_PRG:ivar: 1 In the project, there is only R1 available.
PLC_PRG.bvar: FALSE This recipe R1 contains other values
than R1 on the controller.
9 Log in to the controller. Result: A dialog box opens.
10 From the dialog box, select the option Login with online –
change or Login with download, and click OK
11 While the recipe definition editor view is open, execute Result: A dialog box indicates that the
the command Upload recipes from device from the recipe for PLC_PRG.dwvar loaded from
contextual menu of the Recipe definition editor view. the controller cannot provide a value
from the controller.

514 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Recipe Manager

Step Action Comment


12 Confirm the dialog box to continue. Result: The value of PLC:_PRG.ivar
in recipe R1 of the recipe definition in the
project changes to 34.
PLC_PRG.dwvar remains in the recipe
definition.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 515
Recipe Manager

Memory Usage by Recipes

Memory Usage
If the option Recipe Management in the PLC is activated in the General tab of the recipe manager
editor, then code is generated for the recipe manager and the recipe definitions. This code is saved
in the controller. The size of the memory used depends on the number of recipes and their
variables, as well as the data type of the variables. If the fields of the recipe definition are filled, this
also requires memory space.
You can use the values provided in the table as a guideline for determining the memory space:

– Code size (bytes) Data size (bytes) Total (bytes)


Recipe definition with 100 INT variables 194406 79400 267352
Recipe definition with 200 INT variables 238318 121284 459344
Recipe definition with 300 INT variables 282230 163084 543856
Recipe definition with 100 BOOL 192742 69884 343168
variables
Recipe definition with 200 BOOL 235446 101568 436872
variables
Recipe definition with 300 BOOL 278146 133284 510072
variables
Recipe definition with 100 STRING 203278 870084 1154000
variables
Recipe definition with 200 STRING 255570 1709784 2973296
variables
Recipe definition with 300 STRING 307886 2549484 2964112
variables

516 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Trace Editor
EIO0000002854 06/2019

Chapter 25
Trace Editor

Trace Editor

What Is in This Chapter?


This chapter contains the following sections:
Section Topic Page
25.1 Trace Object 518
25.2 Trace Configuration 525
25.3 Trace Editor in Online Mode 542
25.4 Keyboard Operations for Trace Diagrams 543

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 517
Trace Editor

Section 25.1
Trace Object

Trace Object

What Is in This Section?


This section contains the following topics:
Topic Page
Trace Basics 519
Creating a Trace Object 521

518 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Trace Editor

Trace Basics

Trace Functionality
The trace functionality allows you to capture the progression of the values of variables on the
controller over a certain time, similar to a digital sampling oscilloscope. Additionally, you can set a
trigger to control the data capturing with input (trigger) signals. The values of trace variables are
steadily written to a EcoStruxure Machine Expert buffer of a specified size. They can be observed
in the form of a two-dimensional graph plotted as a function of time.
NOTE: The tracing of data is continued when you log off the controller.
If PC processor-consuming tasks are executed in EcoStruxure Machine Expert or on the PC
running EcoStruxure Machine Expert while a trace is running, it may happen that variable values
are not captured by the trace.

NOTICE
LOSS OF DATA
Avoid executing actions and/or PC applications that lead to a high processor load while running
a trace.
Failure to follow these instructions can result in equipment damage.

Way of Tracing Data


The tracing of data on the control is performed in two different ways:
 Either from IEC code generated by the trace object and downloaded to the controller by a trace
child application.
 Or within the CmpTraceMgr component (also named Trace Manager).

NOTE: The tracing of data can significantly increase the cycle time of the IEC task.
What data is captured is determined by an entry in the target settings (trace → trace manager).
The trace manager has advanced functionality. It allows you to:
 Configure and trace parameters of the control system, such as the temperature curve of the
processor or the battery. For more information, refer to the variable settings (see page 528) and
to the record (trigger) settings (see page 531).
 Read out device traces, such as the trace of the electric current of a drive. For more information,
refer to the description of the Upload Trace command (see EcoStruxure Machine Expert, Menu
Commands, Online Help).
 Trace system variables of other system components.

Furthermore, the additional command (see EcoStruxure Machine Expert, Menu Commands,
Online Help) Online List is available.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 519
Trace Editor

NOTE:
 If a trace is used in the visualization, device parameters cannot be traced or used for the trigger.
 The trigger level cannot be set to an IEC expression, only literals and constants are supported.
 The record condition cannot be set to an IEC expression of type BOOL, only variables are
supported.
 If a property is traced or used for the trigger, it must be annotated with the attribute monitoring
(see page 691) in IEC declaration.

Configuration
Configure the trace data as well as the display settings of the trace data in the Configuration. It
provides commands for accessing the configuration dialog boxes. Several variables can be traced
and displayed at the same time, in different views such as multi-channel mode. Record traces of
variables with different trigger settings in their own trace object. You can create any number of
trace objects.
Tools tree with several trace objects

Commands for modifying the settings of the display are described in the Features paragraph
(see page 522). Zooming functionalities and a cursor are available as well as commands for
running the trace so that the graph can be compressed or stretched.
To integrate the readout of a trace within a visualization, use the visualization element Trace.
For further information on trace configuration for data recording, refer to the Record Settings
(see page 531).

520 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Trace Editor

Creating a Trace Object

Overview
To insert a trace object in the Tools tree, select the Application node, click the green plus button,
and execute the command Trace.... Double-click the Trace node in the Tools tree to open the trace
editor.

Configuration
Newly created trace with contextual menu:

A trace contains at least one variable which is sampled.


In the trace tree area in the right part of the window, the configured trace variables are displayed.
By default, the trace variables are displayed with their complete instance path.
Select the Hide instance paths check box to hide the instance path. To display this check box, click
the arrow button in the upper right corner of the trace tree area.
To configure or modify the trace settings, use the commands of the contextual menu in the trace
tree area:
 Add Variable...: Opens the Trace Configuration dialog box with Variable Settings
(see page 528).
 Delete: Deletes the selected variable. Only available if at least one trace variable exists.
 Visible: This command makes the selected variable visible. Only available if at least one trace
variable exists.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 521
Trace Editor

 Configuration...: Opens the Trace Configuration dialog box with Record Settings
(see page 531).
 Display Settings...: Opens the Display Settings dialog box (see page 538). It allows you to
configure the appearance of the graph and the coordinate system. This command is unavailable
until a configuration is loaded.

Features
For running the trace, use the following commands:
 Add variable (see EcoStruxure Machine Expert, Menu Commands, Online Help)
 Download Trace (see EcoStruxure Machine Expert, Menu Commands, Online Help)
 Start/Stop Trace (see EcoStruxure Machine Expert, Menu Commands, Online Help)
 Reset Trigger (see EcoStruxure Machine Expert, Menu Commands, Online Help)

For customizing the view of the graphs, use the following commands:
 Cursor (see EcoStruxure Machine Expert, Menu Commands, Online Help)
 Mouse Zooming (see EcoStruxure Machine Expert, Menu Commands, Online Help)
 Reset View (see EcoStruxure Machine Expert, Menu Commands, Online Help)
 Auto Fit (see EcoStruxure Machine Expert, Menu Commands, Online Help)
 Compress (see EcoStruxure Machine Expert, Menu Commands, Online Help)
 Stretch (see EcoStruxure Machine Expert, Menu Commands, Online Help)
 Convert to Multi-channel (see EcoStruxure Machine Expert, Menu Commands, Online Help)
 Convert to Single-channel (see EcoStruxure Machine Expert, Menu Commands, Online Help)
 For further information, refer to the chapter (see page 543) Keyboard Operations for Trace
Diagrams.
For access to traces stored on the runtime system, use the following commands:
 Online List (see EcoStruxure Machine Expert, Menu Commands, Online Help)
 Upload Trace (see EcoStruxure Machine Expert, Menu Commands, Online Help)

For access to traces stored on the disc, use the following commands:
 Save Trace... (see EcoStruxure Machine Expert, Menu Commands, Online Help)
 Load Trace... (see EcoStruxure Machine Expert, Menu Commands, Online Help)
 Export symbolic trace config (see EcoStruxure Machine Expert, Menu Commands, Online Help)

Getting Started
In order to start the trace in online mode, download the trace configuration to the controller by
executing the Download Trace command. The graphs of the trace variables are displayed in the
trace editor window where you can store them to an external file. This file can be reloaded to the
editor. Also refer to the chapter Trace Editor in Online Mode (see page 542).

Step Action
1 Login and run the associated application.
Result: The application runs on the controller.

522 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Trace Editor

Step Action
2 Download trace
Result: The trace graphs are immediately displayed according to the trace configuration.
3 Arrange the trace graphs, store the trace data, stop/start tracing.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 523
Trace Editor

Example
The trace editor shows an example of tracing in online mode. Four variables have been selected
for display in the variables tree in the right part of the dialog.
Trace in online mode

524 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Trace Editor

Section 25.2
Trace Configuration

Trace Configuration

What Is in This Section?


This section contains the following topics:
Topic Page
Trace Configuration - Tree Views 526
Variable Settings 528
Record Settings 531
Display Mode 534
Advanced Trace Settings 536
Display Settings 538

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 525
Trace Editor

Trace Configuration - Tree Views

Overview
The Trace Configuration dialog box provides two different tree views on the left-hand side:
 Trace Record tree view
 Presentation (diagrams) tree view

Trace Record Tree View


The Trace Record tree view lists the variables that are traced and provides access to the variable
settings.
The view that is displayed on the right-hand side of the Trace Configuration dialog box depends
on the element that is selected in the tree view:

If... Then ...


A trace name is selected The Record Settings view is displayed on the right-
hand side.
A trace variable is selected The Variable Settings view is displayed on the right-
hand side.

Commands of the Contextual Menu of the Trace Record Tree View


The contextual menu of the Trace Record tree view provides the following commands:

Command Description
Add variable Opens the Variable Settings view (see page 528) on
the right-hand side.
To add a new variable, click the browse button (...),
and select a variable for tracing.
Assign to diagram Right-click a variable and execute the Assign to
diagram command to list the diagrams that do not
include the selected variable. Select a diagram to
display the selected variable in this diagram.
This command is deactivated if the selected variable
is already assigned to all diagrams.
Enabled The variables are by default enabled.
Deactivated variables are displayed as disabled.
They are not displayed or recorded.

526 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Trace Editor

Presentation (diagrams) Tree View


The Presentation (diagrams) tree view lists the diagrams that are displayed in the trace editor and
provides access to the display mode.
The view that is displayed on the right-hand side of the Trace Configuration dialog box depends
on the element that is selected in tree view:

If... Then ...


The node Time axis is selected. The Display mode view (see page 534) is displayed
on the right-hand side. It allows you to specify the
time axis display.
A diagram name is selected The settings for the coordinate system of the diagram
and a preview are displayed.
The node Y axis is selected. The Display mode view (see page 534) is displayed
on the right-hand side. It allows you to specify the axis
display.
A trace variable is selected below the Shown The Variable Settings view (see page 528) on the
variables node. right-hand side that allows you to configure the trace
variables.

Commands of the Contextual Menu of the Presentation (diagrams) Tree View


The contextual menu of the Presentation (diagrams) tree view provides the following commands:

Command Description
Add diagram Adds a new diagram and displays it in the
Presentation (diagrams) tree view.
Add new variable Adds a new trace variable and opens the Variable
Settings view (see page 528) on the right-hand side.
Select a variable in the input field to trace the value
graph. Specify the display. The variable is assigned
to the selected diagram.
Add existing variable Right-click a diagram and execute the Add existing
variable command to list the trace variables where
the selected diagram is not displayed. Select a
variable to display it in the selected diagram.
This command is not available if all trace variables
are already displayed in the selected diagram.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 527
Trace Editor

Variable Settings

Overview
The Trace Configuration dialog box with Variable Settings opens when you select a trace variable
in the trace tree. It allows you to configure which variables should be traced and how they are
displayed.
Trace Configuration dialog box with Variable Settings

The trace variables are displayed in the left part of the window in a tree structure. The top node is
titled with the trace name.

Adding and Deleting a Trace Variable


For adding a variable to the trace tree or deleting one, use the commands below the trace tree:

Command Description
Add Variable Creates an anonymous entry in the trace tree.
In the right part of the dialog box, the settings of the new variable are
ready for configuration.
Delete Deletes the selected variable with the associated configuration.

528 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Trace Editor

Setting and Modifying the Variable Settings


To choose the variable settings, select the desired variable in the trace tree. The present settings
will be displayed in the right part of the trace configuration window. To modify the variable settings
later, select the variable entry in the trace tree and use the Variable Settings dialog box again.

Parameter Description
Variable Enter the name (path) of the signal to specify the signal that is traced.
A valid signal is an IEC variable, a property, a reference, the contents of a
pointer, or an array element of the application. Allowed types are all IEC basic
types, except STRING, WSTRING or ARRAY. Enumerations are also
allowed, whose basic type is not a STRING, a WSTRING or an ARRAY. Click
the ... button to open the input assistant that allows you to obtain a valid entry.
Controllers that support parameter tracing provide a list if you click the
Variable: parameter. If you want to trace a device parameter, select the item
Parameter from this list. Then you can find one with the help of the input
assistant. Edit or verify the variable settings. Device parameters are only
supported if the CmpTraceMgr component is used. If device parameters are
used for trace (or for trigger) variables, it is not possible to activate the option
Generate Trace POU for visualization.
NOTE: If CmpTraceMgr is used for tracing, a Property (see page 183) that
is used as a trace (or trigger) variable must get the compiler attribute Attribute
Monitoring (see page 691).
Graph color Select a color from the color selection list in which the trace curve for the
variable is displayed.
Line type Specify the way samples are connected in the graph. Use Line for large
volumes of data. It is also the default value.
Line The samples are connected to a line (default).
Step The samples are connected in the shape of a staircase. Thus, a horizontal
line to the time stamp of the next sample followed by a vertical line to the
value of the next sample.
None The samples are not connected.
Point type Specify how the values themselves are drawn in the graph.
Dot The samples are drawn as dots (default).
Cross The samples are drawn as crosses.
None The samples are not displayed.
Activate Minimum Warning If this option is activated, the trace graph is displayed in the color defined in
Warning minimum color as soon as the variable exceeds the value defined in
Critical lower limit.
Critical lower limit If the value of the variable entered here has fallen below and Activate
minimum warning is active, the values of the curve changes in the following
specified color.
Warning minimum color Color value for the activated lower limit.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 529
Trace Editor

Parameter Description
Activate Maximum Warning If this option is activated, the trace graph is displayed in the color defined in
Warning maximum color as soon as the variable exceeds the value defined
in Critical upper limit.
Critical upper limit If the value of the variable entered here is exceeded and Activate maximum
warning is active, the values of the curve changes in the following specified
color.
Warning maximum color Color value for the activated upper limit.

Multi-Selection of Variables
By using the keyboard shortcuts Shift + mouse-click or Ctrl + mouse-click, you can select several
variables for editing. Then the modifications made in the dialog box Variable Settings are applied
to all selected variables. The same can be achieved with Shift + Up Arrow/Down Arrow or Ctrl + Up
Arrow/Down Arrow.

530 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Trace Editor

Record Settings

Overview
The Trace Configuration dialog box with Record Settings opens if you execute the command
Configuration or if you double-click a trace variable in the trace tree. The configuration command
is also available in the contextual menu of the trace tree on the right part of the main trace editor
window.
NOTE: The settings completed in the dialog box Trace Configuration dialog box with Record
Settings are valid for all variables of the trace graph.

Trigger Basics
In most situations, it is not desired that tracing and displaying the input signals starts at random
moments, such as immediately after the previous measurement, or when the user presses the start
button. Most of the time it is preferred that the tracing is done when a trigger is fired for the
configured number of records (post trigger). This is called triggering and has to be defined here.
The following ways are used for triggering input signals:
 by configuring a trigger variable
 by configuring a record condition
 or both

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 531
Trace Editor

Setting and Modifying the Record (Trigger) Settings

Parameter Description
Enable Trigger Select the checkbox to enable the trigger system. It can be turned on or off
independently of the lower settings. If the trigger system is disabled, the trace
is free-running.
Trigger Variable Assign a variable. Specify which signal will be used as trigger by entering the
name (and path) of the signal.
A valid trigger signal is an IEC variable, a property, a reference, a pointer, an
array element of the application or an expression. Allowed types are all
IEC basic types, except STRING, WSTRING, or ARRAY. Enumerations are
also allowed, whose basic type is not a STRING, a WSTRING or an ARRAY.
The content of a pointer is not a valid signal. Click the ... button to open the
input assistant that allows you to obtain a valid entry.
Controllers that support using device parameters as triggers provide a list if
you click the Trigger Variable: parameter. If you want to use a device
parameter as trigger, select the item Trigger Parameter from this list. Open
the Input Assistant with the ... button and select traceable parameters. Under
Elements, the parameters available in the system are listed. You can also
type the parameter names directly or by copy and paste (from another
configuration) into the text field. Device parameters are only supported if the
trace manager is used.
NOTE: If CmpTraceMgr is used for tracing, a Property (see page 183) that
is used as a trace (or trigger) variable must get the compiler attribute Attribute
Monitoring (see page 691).
Trigger edge –
positive Trigger event on rising edge of the boolean trigger variable. Or as soon as
the value defined by Trigger Level for an analog trigger variable is reached
by an ascending run.
negative Trigger event on falling edge of the boolean trigger variable. Or as soon as
the value defined by Trigger Level for an analog trigger variable is reached
by a descending run.
both Trigger event on the conditions described for positive and negative.
Post Trigger Enter a number of records per trace signal, which are recorded after the
trigger is fired.
Default value: 50
Range: 0...4,294,967,295
Trigger Level Enter a value at which point the trigger fires.
With Trigger edge, you can specify whether it fires on a rising or a falling edge
of the trigger variable. It must be set if and only if an analog variable (variable
with numeric type, such as LREAL or INT) is used as trigger variable.
Directly enter a value. A GVL constant or an ENUM value is allowed if their
type is convertible to the trigger variable.
If IEC code is used, then you can also enter an arbitrary IEC expression of a
type that is convertible to that of the trigger variable.
Default value: – (empty)

532 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Trace Editor

Parameter Description
Task From the list of available tasks, select the one where capturing of the input
signals takes place.
Record condition If you want to start the record by a condition, enter here a variable. If the trace
is started before, for example by pressing the start button, and the variable
assigned here becomes TRUE, the data capturing is started and the traced
graph will be displayed.
If CmpTraceMgr is used, the record condition has to be a variable of type
BOOL or of a bit-access. A content of a pointer is not a valid entry. Properties
are also supported.
If IEC code is used, an arbitrary IEC expression of type BOOL can also be
entered.
Comment Enter a comment text concerning the present record.
Resolution Enter a resolution of the trace time stamp in ms or μs.
For each captured signal, pairs of value and time stamp are stored and
transmitted to the programming system. The transmitted time stamps are
relative and refer to the start of the tracing.
If the trace task has a cycle time of 1 ms or less, use a time stamp with
resolution in μs. This option is only possible when a trace manager is
available in the controller.
Automatic restart Set this option if the trace configuration and the last content of the RTS trace
buffers is to be stored persistently on the target device.
This option is only possible when a trace manager is tracing in the controller.
Advanced... Click this button to open the Advanced Trace Settings dialog box
(see page 536). It allows you to set some additional settings for the trace
trigger.

NOTE: If you want to capture and display a trace signal with a different time base, you have to do
a record configuration in a separate trace object.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 533
Trace Editor

Display Mode

Overview
The Display mode view opens when you select an axis in the Presentation (diagrams) tree view.
The following parameters are available:

Parameter Description
Display mode Select the following scaling options:
 Auto
The time axis is scaled automatically.
 Fixed length
Select this option and define a constant length for
a time axis segment.
 Fixed
Select this option and define a range for a time
axis segment by using the Minimum and
Maximum parameters.
Minimum When the Display mode → Fixed is selected, enter a
start value for the time axis segment.
Maximum When the Display mode → Fixed is selected, enter
an end value for the time axis segment.
Length Enter a value to define a constant length of the
segment. The start value is adapted accordingly.
Grid Select the option Grid to create a diagram with grid
lines in x-direction.
Select the color of the grid lines from the list next to
the Grid parameter.
Description Select the option Description and enter a describing
text in the box.
Tick marks section
Fixed spacing Select the option Fixed spacing to display tick marks.
Distance Enter a value to define the distance between the tick
marks.
Subdivisions Enter a value to define the number of subdivisions
between two tick marks.

534 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Trace Editor

The following elements are available:

Element Description
Font Click the Font button to open the Font dialog box and
configure the font for the time axis.
Preview link Click the Preview link to see a preview of the diagram
you defined in the Display mode view.
Add variable link If a trace is selected in the Trace Record tree view,
click the Add variable link to add a new trace variable
to the Trace Record tree view.
Delete variable link If a trace variable is selected in the Trace Record tree
view, click the Delete variable link to delete the
selected trace variable from the Trace Record tree
view.

Preview
The preview of the diagram you defined in the Display mode view is displayed when you click the
Preview link in the Display mode view.
Underneath the preview of the diagram, the following elements are available:

Element Description
Backcolor parameter Select a color for the background of the diagram from
the list next to the Backcolor parameter.
Backcolor on selection parameter Select a color for the background of the selected
diagram from the list next to the Backcolor on
selection parameter.
Add diagram link If a diagram is selected, click the Add diagram link to
add a new diagram to the Display mode view.
Delete diagram link If a diagram is selected, click the Delete diagram link
to delete the selected diagram from the Display mode
view.
Reset display settings link Click the Reset display settings link to reset the
display settings of the selected diagram or the
selected y-axis to the default values.
OK button Click the OK button to confirm the configuration
settings and to save the trace configuration.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 535
Trace Editor

Advanced Trace Settings

Overview
The Advanced Trace Settings dialog box opens if you click the Advanced... button in the Trace
Configuration dialog box (see page 532) with Record Settings. It includes settings for the data
recording, such as buffer size on the runtime or development system that the trace editor reads.
The interval that the application uses to record data is derived from the task configuration.
Advanced Trace Settings dialog box

You configure the buffer size by defining a number of samples. Using settings from the task
configuration, EcoStruxure Machine Expert calculates time intervals according to the number of
samples. The calculation is possible only if the task cycle time is determinable. The result is
displayed on the right, outside the table in a standardized style, for example, 1h1m1s1ms .

536 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Trace Editor

Description of the Parameters

Parameter Description Comment


Measure in every n-th Defines how often a data record is For example, the scanning interval of
cycle taken (every cycle, every second the data recording is every 10 ms.
cycle,...). This is the scanning rate.
Default: 1 This means that one data set
is recorded each cycle.
Recommended runtime The maximum number of samples that Maximum length of the time interval
buffer size (samples) EcoStruxure Machine Expert calculates during which the runtime system
and that the runtime system can store collects data, for example, 2 s (if
per trace variable. EcoStruxure Refresh interval = 500 ms and Measure
Machine Expert calculates the number in every n-th cycle = 1).
in the task cycle time from the value in
Refresh interval and the value in
Measure in every n-th cycle.
The Recommended runtime buffer size
(samples) is only used if the option
Override runtime buffer size is not
activated.
Override runtime buffer When this option is selected, the Maximum length of the time interval
size application does not use value set for during which the runtime system
Recommended runtime buffer size collects data, for example, 6 s.
(samples).
The number of samples per trace
variable that the application records.
This is the size of the runtime buffer.
Range: From 10 on, but not larger than
the value set for the trace editor buffer.
Default value: 100
Trace editor buffer size Limits the trace buffer provided by –
per variables (samples) EcoStruxure Machine Expert for
internal use.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 537
Trace Editor

Display Settings

Overview
The Display Settings dialog box includes the configuration for the display settings of the trace
diagram, for both the x-axis and y-axis, and provides a preview in the trace diagram.
Click the Display Settings button in the Trace Configuration dialog box, to open the Display
Settings dialog box.
You can manage the settings with the following buttons:

Button Description
Reset With this command, EcoStruxure Machine Expert resets the
settings to the default values.
Use as default With this command, EcoStruxure Machine Expert saves the settings
as default values.

X axis Tab
X axis tab of the Display Settings dialog box

538 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Trace Editor

Parameter Description
Display mode Scaling
Auto If this option is activated, EcoStruxure Machine Expert scales automatically.
Fixed length If this option is activated, EcoStruxure Machine Expert displays a segment of
constant length.
Fixed If this option is activated, EcoStruxure Machine Expert displays a segment
from Minimum to Maximum.
Minimum Initial value of the segment.
Requirement: Display mode is set to Fixed.
Maximum End value of the segment.
Requirement: Display mode is set to Fixed.
Length Constant segment length; EcoStruxure Machine Expert adapts initial value.
Grid If this option is activated, a diagram with grid line in the y-direction is
displayed. Select the color of the grid lines from the list.
Tick marks –
Fixed spacing If this option is activated, EcoStruxure Machine Expert draws tick marks with
Distance and Subdivisions.
Distance Distance between tick marks.
Subdivision Number of subdivisions between tick marks.
Font Font used for the x-axis.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 539
Trace Editor

Y axis Tab
Y axis tab of the Display Settings dialog box

Parameter Description
Display mode Scaling
Auto If this option is activated, EcoStruxure Machine Expert scales
automatically.
Fixed If this option is activated, EcoStruxure Machine Expert displays a
segment from Minimum to Maximum.
Minimum Initial value of the displayed segment.
Requirement: Display mode is set to Fixed.
Maximum End value of the displayed segment.
Requirement: Display mode is set to Fixed.
Grid If this option is activated, a diagram with grid line is displayed. Select
the color of the grid lines from the list.
Description If this option is activated, the axis is labeled as Description.
Tick marks –
Fixed spacing If this option is activated, EcoStruxure Machine Expert draws tick
marks with Distance and Subdivisions.
Distance Distance between tick marks.
Subdivision Number of subdivisions between tick marks.
Font Font used for the y-axis.

540 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Trace Editor

Parameters of the Coordinate System

Parameter Description
Backcolor Choose the background color for the coordinate system from the
list.
Backcolor on Selection Choose the background color for the coordinate system from the
list. It is used as long as the diagram is selected in the trace window.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 541
Trace Editor

Section 25.3
Trace Editor in Online Mode

Trace Editor in Online Mode

Trace Editor in Online Mode

Overview
If a trace is running on the device, it is indicated in the trace dialog box Online List (see EcoStruxure
Machine Expert, Menu Commands, Online Help).

Download Trace
In order to start the trace in online mode, download explicitly the trace to the controller with the
Trace → Download Trace menu command (see EcoStruxure Machine Expert, Menu Commands,
Online Help) while the application is logged in. The graphs of the trace signals will be displayed in
the trace editor window.
While doing logins and logouts on the application without changing it, the traces are running
without a new download.
If the application code is changed, then it depends on the login mode, in what happens with the
traces:
 Login with online change or Login without any change: The traces are still running.
 Login with download: The traces in the controller are deleted and a new download of them is
necessary.

Online Change of the Trace Graph Configuration


The Trace Configuration dialog box with Record Settings and the Trace Configuration dialog box
with Variable Settings are available in online mode and quite a few changes on the trace
configuration can be performed while the trace is running. If this is not possible, when the name of
the trace signal is changed; for example, the trace is stopped and a new download is required.

Online Navigation of the Trace Graph


The displayed range of the captured trace variable values depends not only on the trace
configuration. It can also be rearranged by scroll and zoom functionalities available in the Trace
menu, the toolbar or by using shortcuts. For information on how to navigate in the trace diagram,
refer to the Keyboard Shortcuts chapter (see page 543).

542 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Trace Editor

Section 25.4
Keyboard Operations for Trace Diagrams

Keyboard Operations for Trace Diagrams

Keyboard Shortcuts

Overview
The following table desicribes keyboard and mouse actions:

Actions By Keyboard Operation By Mouse Operation


Scroll the trace graph horizontally No trace cursor: Scroll the graph by drag and drop.
along the time axis.  ARROW LEFT/RIGHT This is indicated by a different view
 With greater distances: of the mouse cursor.
CTRL + ARROW LEFT/RIGHT
1 or 2 trace cursors:
 ALT + ARROW LEFT/RIGHT
 With greater distances:
CTRL + ALT + ARROW
LEFT/RIGHT
Scroll the trace graph vertically ARROW UP/DOWN Use CTRL + drag and drop.
along the Y-axis. With greater distances:
CTRL + ARROW UP/DOWN
Zoom to a rectangle (window) that – Use the command Mouse Zooming
is selected with the mouse. (see EcoStruxure Machine Expert,
Menu Commands, Online Help).
Shift the black trace cursor. ARROW LEFT/RIGHT Click the black triangle of the trace
With greater distances: cursor, drag it along the X-axis until
CTRL + LEFT/RIGHT ARROW you drop it.
Shift the gray trace cursor. SHIFT + ARROW LEFT/RIGHT Click the gray triangle of the trace
With greater distances: cursor, drag it along the X-axis until
CTRL + SHIFT + ARROW you drop it.
LEFT/RIGHT
Compress the time axis. – Use the mouse wheel.
In multi-channel mode, the time Or use the command Compress
axes for all diagrams are (see EcoStruxure Machine Expert,
compressed. Menu Commands, Online Help).
Stretch the time axis. + Use the mouse wheel.
In multi-channel mode, the time Or use the command Stretch
axes for all diagrams are stretched. (see EcoStruxure Machine Expert,
Menu Commands, Online Help).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 543
Trace Editor

Actions By Keyboard Operation By Mouse Operation


Compress the Y-axis. CTRL + – CTRL + mouse wheel
In multi-channel mode, the Y-axis
for the selected diagrams is
compressed.
Stretch the Y-axis. CTRL + + CTRL + mouse wheel
In multi-channel mode, the Y-axis
for the selected diagrams is
stretched.
Selection of the next diagram TAB Click an unselected diagram to
below in multi-channel mode. select this one.

544 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Trend Recording
EIO0000002854 06/2019

Chapter 26
Trend Recording

Trend Recording

What Is in This Chapter?


This chapter contains the following sections:
Section Topic Page
26.1 Trend Recording Objects 546
26.2 Trend Recording Configuration 549
26.3 Recording Trend Data 558

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 545
Trend Recording

Section 26.1
Trend Recording Objects

Trend Recording Objects

What Is in This Section?


This section contains the following topics:
Topic Page
Trend Recording Overview 547
Trend Recording Objects 548

546 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Trend Recording

Trend Recording Overview

Trend Recording Functionality


Trend recording offers a long-term acquisition of data. With the help of a trend recording, values of
IEC variables are acquired and persistently saved in a database. Historical data are retained so
that a trend can be read from the data. The database is located on the controller and is filled up at
runtime. Trend data can be displayed by a visualization, which reads out the database and
visualizes the records.
Depending on the amount of data that is recorded and the performance of the controller, it may
happen that a timeout expires during trend recording operations. This is detected as an exception
error.
Before you stop the controller or perform a download (execute the Online change command
(see EcoStruxure Machine Expert, Menu Commands, Online Help)), stop the trend recording
process to save the trend data to the database.

NOTICE
LOSS OF DATA
Stop the trend function and save the trend data before changing state of the controller from the
run state.
Failure to follow these instructions can result in equipment damage.

This function is not available for all supported controllers. Consult the Programming Guide specific
to your controller as to whether it supports trend recording.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 547
Trend Recording

Trend Recording Objects

Overview
To insert a trend recording object in the Tools tree, select the Application node, click the green plus
button, and execute the command Add other objects → Trend Recording.... Double-click an object
of the type Trend recording in the Tools tree to open the Trend Recording Editor.
Tools tree with trend recording objects:

1 TrendRecordingTask of the type Task


2 Trend Recording Manager
3 Object <name of the trend recording> of the type Trend Recording

Trend Recording Task Object


The Trend Recording Task object extends an application by a task in which the Trend Recording
Manager is executed. In the Tools tree, only one Trend Recording Manager subnode is available
per Application node. The task calls the following program:
[Link].g_TrendRecording-
[Link].
If you add a trend in a visualization, then the Task configuration node is extended by a Trend
Recording Task object.

Trend Recording Manager Object


The Trend Recording Manager object extends an application by the long-term data storage
function with the help of a database. In the Tools tree, only one Trend Recording Manager subnode
is available per Application node.

Object of the Type Trend Recording


An object of the type Trend Recording extends an application by the function Place data in a
database. The data is acquired with the trace function. Below an Application node, any number of
trend recording objects is allowed. Configure trend recording in the Trend Recording Editor.

548 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Trend Recording

Section 26.2
Trend Recording Configuration

Trend Recording Configuration

What Is in This Section?


This section contains the following topics:
Topic Page
Trend Recording Editor 550
Record Settings 551
Variable Settings 554
Steps for Trend Recording Configuration 556

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 549
Trend Recording

Trend Recording Editor

Overview
Double-click a trend recording object in the Tools tree or execute the command Visualization →
Edit trend recording to open the Trend Recording Editor.
The editor contains a tree view of the configuration and displays the Record Settings or the
Variable Settings, depending on the selection in the tree view.

Tree View of the Configuration


The tree view of the trend shows the trend variables that are configured and enables navigation to
the settings. The top node contains the name of the trend recording. Clicking this entry opens the
associated Record Settings. Under the top node, there are nodes for each trend variable whose
values are acquired. Clicking an entry opens the associated Variable Settings.

550 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Trend Recording

Record Settings

Overview
The Trend Recording dialog box with Record Settings opens when you select the top node in the
tree view of the Trend Recording Editor.
The recording of data is performed using the function of the runtime component that is also used
for tracing (see page 532). The settings that appear here are the same. The parameters that are
related to trigger settings are not required during trend recording and are therefore grayed out.

Setting and Modifying the Recording Settings


The Trend Recording Configuration dialog box with Record Settings contains the following
configuration elements:

Element Description
Task parameter From the list, select the task in which data acquisition is executed.
In general, the trend recording runs in the same task as the main
program, for example, PLC_PRG.
Record condition parameter Refers to a variable of the type BOOL, to a bit or to a property. The
data acquisition is executed if the value is TRUE. The setting is
optional.
Comment parameter Enter a comment text.
Resolution parameter Resolution with which the time stamp is acquired.
Set the resolution of the time stamp to 1 μs if the trend task has a
cycle time of 1 ms or less.
Trend storage... button Click this button to open the Trend storage dialog box. It allows you
to configure further parameters that concern the behavior of the
trend recording at runtime.
Advanced... button Click this button to open the Advanced Trend Settings dialog box
(see page 553). It allows you to configure parameters that concern
the acquisition and storage of data.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 551
Trend Recording

Trend Storage Dialog Box


Click the Trend Storage... button in the Record Settings dialog box to open the Trend Storage
dialog box.
The Trend Storage dialog box contains the configuration for buffering data during trend recording.

Parameter Description
Maximum number of variables Defines the maximum number of trend variables that are managed
in the database. If you modify this value, EcoStruxure Machine
Expert updates the database on the controller by forcing a download
during next login to the controller. The database will then be
uploaded from the controller, the variables of the database will be
increased or decreased according to this new setting, and will be
downloaded to the controller.
Store every N milliseconds Number of ms defining the time interval at which the recorded data
is temporarily stored in a local buffer before being stored
persistently in the database. The time interval is converted internally
to the number of task cycles. The duration of a task cycle is defined
in the task configuration.
A high value results in a better runtime performance. The
disadvantage of this is that the greater the value, the amount of data
subject to be lost in the case of a controller change of state is
likewise increased.
A low value reduces this risk. The disadvantage of this is that the
control of a trend visualization is degraded with large amounts of
data.
Limit Activate an option to limit the recording.
No Limit The amount of trend recording data that is stored is not limited.
Use this option only for testing purposes, as using this setting will
eventually exhaust the file space in the controller if not regularly
maintained.
Maximum number This option defines the maximum number of data records that are
of records stored in the database. Each data record consists of time stamp and
the values of the trend variables.
NOTE: If this limit is reached, trend recording is stopped.
Maximum storage This option defines the maximum memory size reserved for trend
size storage. The number of records that can be stored within this
memory depends on the size of the individual records.
Select the suitable unit from the list (kilobytes (Kb), megabytes (Mb),
or gigabytes (GB)).
NOTE: If the memory reserved for trend storage is full, trend
recording continues, overwriting the oldest records.

552 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Trend Recording

Advanced Trend Settings Dialog Box


Click the Advanced... button in the Record Settings dialog box to open the Advanced Trend
Settings dialog box.
The Advanced Trend Settings dialog box enables the configuration of further parameters that
concern the behavior of the trend recording at runtime.

Parameter Description
Measure in every n-th cycle Defines how often data is acquired by the runtime system,
depending on the number of cycles completed.
The time interval is calculated according to the frequency by using
the settings from the task configuration. Thus, the calculation can
only be performed if at least the task cycle time is set. The result is
shown on the right of the input field, for example, 1h1m1s1ms.
The default setting is 1. This means that data is acquired every
cycle.
Additional Runtime Buffer for Defines the time, in ms, that the runtime system can use an
additional “overflow” buffer for recording data.
Example: 1000 ms
NOTE: This additional buffer can help to avoid loss of data if a
delay occurs during storage of the trend data.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 553
Trend Recording

Variable Settings

Overview
The Trend Recording dialog box with Variable Settings opens when you select a trend variable in
the tree view of the Trend Recording Editor. It allows you to configure which variables and
parameters should be recorded and how they are displayed.
The Trend Configuration dialog box with Variable Settings corresponds to the dialog box for tracing
(see page 528). The trend variables are displayed in the left part of the window in a tree structure.
The top node is titled with the trend name.

Setting and Modifying the Variable Settings


To choose the variable settings, select the desired variable in the tree view on the left-hand side.
The present settings are displayed in the right part of the dialog box. To modify the variable settings
later, select the variable entry in the tree view and use the Variable Settings dialog box again.

Parameter Description
Variable Select the IEC variable from the list whose value is acquired. The variable
must have a valid type.
Parameter Select the parameter from the list whose value is acquired. The parameter
must have a valid type.
Show variable name If the option Show variable name is selected, the name of the IEC variable is
displayed by the visualization in the trend diagram in runtime mode, either
alone or in parentheses after the Description.
If the option is not selected, the name of the IEC variable is displayed and
does not appear in parentheses after the Description.
Description Enter text for the tooltip that is displayed when a visualization user focuses
on the variable in the trend diagram. This text is inserted in the
GlobalTextList object where it can be localized.
If the option Show variable name is selected, then the tooltip is extended by
the variable name in parentheses.
Example: Sensor A (PLC_PRG.iSensor_A)
If you do not enter text in this Description box, the option Show variable
name is selected by default, and only the name of the variable is displayed.
Example: PLC_PRG.iSensor_A
If a legend is assigned to the trend, then the trend variable is labeled in the
legend and is displayed as the trend is configured here.
Graph color
Color with which the variable is displayed in the trend diagram. Click to
open the color selection dialog box.
Line type Defines how the acquired values are displayed as a line chart. Use the option
Line for large amounts of data.

554 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Trend Recording

Parameter Description
Line The values are linked to form a line.
Step The values are linked in the form of steps.
None The values are not linked.
Point type Defines how the acquired values are displayed as a dot chart. Use the option
None for large amounts of data.
Dot The value is displayed as a dot.
Cross The value is displayed as a cross.
None The value is not displayed.
Activate minimum warning If this option is activated, a message is displayed when the variable value is
under the lower limit.
Critical lower limit If the value of the trend variable falls below the limit, the variable is displayed
in the Color defined for values below the limit.
Warning minimum color Color in which the variable is displayed when under the lower limit.
Activate maximum warning If this option is activated, a message is displayed when the variable value is
above the upper limit.
Critical upper limit If the value of the trend variable exceeds the limit, the variable is displayed
in the Color defined for values above the limit.
Warning maximum color Color in which the variable is displayed when above the upper limit.

A valid trend variable can be an IEC variable, a property, a reference, the contents of a pointer, an
ARRAY element, or an enumeration, as long as the type is not STRING, WSTRING, or ARRAY.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 555
Trend Recording

Steps for Trend Recording Configuration

Overview
Configure trend recording by performing the following steps:
 Assigning task.
 Inserting trend variable.
 Deleting trend variable.
 Configuring trend memory.
 Configuring advanced trend settings.

Assigning Task
Define the task in which the trend recording is to be executed. In general, the trend recording runs
in the same task as the main program, for example, PLC_PRG.

Step Action
1 Double-click a trend recording object in the Tools tree.
Result: The Trend Recording Editor opens.
2 Select the top node in the tree view.
Result: The Record Settings are displayed on the right-hand side of the dialog box.
3 Open the Task list and select the task in which the associated application runs.

Inserting Trend Variables


The number of trend variables is limited and is set in the Trend storage dialog box.

Step Action
1 Double-click a trend object in the Tools tree.
Result: The Trend Recording Editor opens.
2 Execute the Add variable command, which is located below the tree view.
Result: A new variable is inserted and the corresponding variable settings are displayed.
3 Enter a valid IEC variable from the Variable list, or select the entry Parameters and enter a valid
parameter.
Result: A signal has been assigned to the trend variable.
4 Configure the display of the trend variable.
5 Configure the color of the trend variable.

Also refer to the Variable Settings of the Trace Configuration (see page 528).

556 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Trend Recording

Deleting Trend Variables

Step Action
1 Double-click a trend object in the Tools tree.
Result: The Trend Recording Editor opens.
2 Click a trend variable in the tree view.
Result: The variable is selected.
3 Execute the Delete variable command, which is located below the tree view or press the Delete
key.

Configuring Trend Memory

Step Action
1 Double-click a trend object in the Tools tree.
Result: The Trend Recording Editor opens.
2 Select the top node in the tree view.
Result: The Record Settings are displayed on the right-hand side of the dialog box.
3 Click the Trend storage... button.
Result: The Trend Storage dialog box opens (see page 552).
4 Adapt the settings.

Configuring Advanced Trend Settings

Step Action
1 Double-click a trend object in the Tools tree.
Result: The Trend Recording Editor opens.
2 Select the top node in the tree view.
Result: The Record Settings are displayed on the right-hand side of the dialog box.
3 Click the Advanced... button.
Result: The Advanced Trend Settings dialog box opens.
4 Adapt the settings.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 557
Trend Recording

Section 26.3
Recording Trend Data

Recording Trend Data

Start the Recording Process

Precondition
To start the recording process, a configured object of the type Trend recording is required.

Start Trend Recording

Step Action
1 Start the controller.
2 Select the application that contains the trend recording and execute the command Application
→ Login.
3 Start the application.

Before you stop the controller or perform a download (execute the Online change command
(see EcoStruxure Machine Expert, Menu Commands, Online Help)), stop the trend recording
process to save the trend data to the database.

NOTICE
LOSS OF DATA
Stop the trend function and save the trend data before changing state of the controller from the
run state.
Failure to follow these instructions can result in equipment damage.

558 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Trend Recording

Conditionally Start Trend Recording


Precondition: Trend configuration has been carried out.

Step Action
1 Double-click a trend object.
Result: The Trend Recording Editor opens.
2 Select the top node in the tree view of the configuration.
Result: The Record settings are displayed on the right-hand side of the dialog box.
3 Assign a boolean variable to the Record Condition field.
The boolean variable controls the recording of the data.
4 Select the application that contains the trend recording and execute the command Application
→ Login.
5 Start the application.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 559
Trend Recording

560 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Unit Conversion
EIO0000002854 06/2019

Chapter 27
Unit Conversion

Unit Conversion

What Is in This Chapter?


This chapter contains the following topics:
Topic Page
Unit Conversion Configuration 562
Usage in IEC Editors 565

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 561
Unit Conversion

Unit Conversion Configuration

Overview
In the configuration editor UnitConversion, you define conversions which can be used for variables
in visualization elements and in the IEC editors. Add the editor as an object UnitConversion in the
Applications tree. You can rename it there.
UnitConversion editor

You can define various conversions for your project. Enter a Name and choose the Type for each.
The respective conversion formula is automatically displayed in the Setting column. Enter a
Condition to determine when the conversion should be executed. Depending on the selected Type,
define specific parameters in the area below the table.

562 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Unit Conversion

The editor provides the following conversion types:


 Calculation with an offset: Single shifting (offset) (see page 563)
 Calculation with a factor: Single scaling (factor) (see page 563)
 Calculation with a factor and an offset: Linear scaling 1 (factor and offset) (see page 564)
 Calculation with the base range and target range: Linear scaling 2 (base and target range)
(see page 564)
 Calculation with a user-defined expression: User-defined conversion (see page 564)
 Different calculations depending on a variable value: Switchable conversion (see page 564)
For usage of unit conversions in IEC editors, refer to the chapter Usage in IEC Editors
(see page 565).
For usage of unit conversions in visualizations, refer to the chapter Using Unit Conversion in the
Visualization part of the EcoStruxure Machine Expert online help.

Conditions
You can select 3 conditions to define when the calculation is executed:

Condition Description
TRUE The conversion is always performed.
Language Language of the visualization (value of variable
[Link])
Variable The conversion is performed depending on a variable
value. The compare value can be a constant, a
variable or an IEC expression.

Single Shifting (Offset)


Use this conversion if you want to add an offset to the input value.
(output value = input value + offset)

Parameter Description
Offset Value or variable

Single Scaling (Factor)


Use this conversion if you want to multiply the input value by a factor.
(output value = input value * factor)

Parameter Description
Factor Value or variable

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 563
Unit Conversion

Linear Scaling 1 (Factor and Offset)


Use this conversion if you want to multiply the input value by a factor and to add an offset.
(output value = (input value * factor) + offset)

Parameter Description
Factor Value or variable
Offset Value or variable

Linear Scaling 2 (Base and Target Range)


Use this conversion if you want to calculate the value by defining the input and output range. A
factor and an offset are calculated internally.

Parameter Description
Base start value Lower value of the input range
Base end value Upper value of the input range
Target start value Lower value of the output range
Target end value Upper value of the output range

Example
Base start value: 0
Base end value: 1024
Target start value: 4.0
Target end value: 20.0

User-Defined Conversion
Use this conversion if you want to calculate the input value by a user-defined expression. Use the
variable rValue as input value. In this expression, all IEC operands can be used.

Parameter Description
Convert Expression to convert the input value
Reverse Expression to revert the calculated value

Switchable Conversion
Use this conversion if you want to use different conversions, depending on the language or a
variable value. All defined conversions can be used.

564 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Unit Conversion

Usage in IEC Editors

Overview
You can use unit conversions in all IEC editors. If you create a conversion for each new conversion,
a function block is created automatically.
The function block includes 2 methods:

Method Description
Convert Calculation of the input value according to the
conversion formula.
Reverse Reverse calculation back to the input value.

You can call these methods in all IEC editors.

Example in ST
In this example, Conv_4_20 is the name of the conversion.
VAR
rValue : REAL;
rConvertedValue : REAL;
END_VAR
rConvertedValue := Conv_4_20.convert(rValue);
Reverse calculation back to the input value.
rValue := Conv_4_20.reverse(rConvertedValue);

Example in CFC
In the CFC editor, enter the instance name of the conversion above the element. In the element,
the method is defined.
Example in CFC method Convert:

Example in CFC method Reverse:

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 565
Unit Conversion

566 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Symbol Configuration Editor
EIO0000002854 06/2019

Chapter 28
Symbol Configuration Editor

Symbol Configuration Editor

What Is in This Chapter?


This chapter contains the following topics:
Topic Page
Symbol Configuration Editor 568
Symbol Configuration 573
Adding a Symbol Configuration 574

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 567
Symbol Configuration Editor

Symbol Configuration Editor

Overview
The symbol configuration functionality allows you to create symbol descriptions. The symbols and
the variables they represent can then be accessed by external applications, such as Vijeo-
Designer or OPC server.
To configure symbols for an application, double-click the Symbol Configuration node in the Tools
tree. The Symbol configuration editor view opens.
The editor contains a table. Depending on the set filter, it shows the available variables, or just
those already selected for the symbol configuration. For this purpose, the concerned POUs or
libraries are listed in the Symbols column. You can expand them in order to show the particular
variables.

Elements of the Toolbar

Element Description
View button The View button allows you to set the following filters to reduce the number of displayed
variables:
Unconfigured from Even variables not yet added to the symbol configuration, but
Project available for this purpose in the project, are displayed.
Unconfigured from Also variables from libraries, not yet added to the symbol
Libraries configuration, but available for this purpose in the project, are
displayed.
Symbols exported via This setting is effective only when the unconfigured variables are
attribute displayed (see the two filters described above).
It has the effect that also those variables are listed, which are
already selected for getting symbols by
{attribute 'symbol' := 'read'} within their declaration.
Such symbols are displayed grayed. The Attribute column shows
which access right is set for the variable by the pragma. Refer to the
following description of the Access Rights column (see page 570).
Build button The Build button allows you to build the project. The build run refreshes the variables view in
the configuration editor.
Settings button The Settings button allows you to activate the following options:
Support OPC UA This function is not supported.
features
Include comments in This has the effect that comments assigned to variables are also
XML exported to the symbol file.
Include node flags in This has the effect that the flags that contain the namespace are
XML also exported to the symbol file. They provide additional information
on the origin of the node in the namespace when OPC UA is active.

568 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Symbol Configuration Editor

Element Description
Configure comments Opens the Comments and Attributes dialog box that allows you to
and attributes... configure the contents of the symbol configuration and the XML file.
Configure Opens the Options tab of the Properties dialog box of the selected
synchronisation with controller. Refer to the description of the Access variables in sync
IEC tasks... with IEC tasks option in the EcoStruxure Machine Expert Menu
Commands Online Help (see EcoStruxure Machine Expert, Menu
Commands, Online Help).
NOTE: Do not activate the option Configure synchronisation with
IEC tasks... for motion and real time-critical application because the
delayed start of IEC tasks leads to a higher jitter.
For further information, refer to the paragraph Additional
Information on the Option Configure synchronisation with
IEC tasks... (see page 572).
Compatibility Layout Select this option to calculate the data output in the same way as in
SoMachine / SoMachine Motion versions prior to V4.3.
Do not use this layout together with exported STRUCTs that use the
attributes pack_mode or relative_offset.
The data layout created for the client is adapted as far as possible
to the layout created by the compiler.
Optimized Layout Select this option to calculate the data output in an optimized form,
independent of the internal compiler layout.
The optimization impacts only variables of a structured type and
function blocks. No gaps with padding bytes are generated for
members that are not published, for example, because they are
deactivated in the Symbol Configuration. For internal members, for
example, function blocks implementing interfaces, no gaps are
created either.
This option is by default selected for projects created with
SoMachine / SoMachine Motion versions V4.3 or later, or with
EcoStruxure Machine Expert. The setting is preserved after a
Project update.
This option requires SoMachine / SoMachine Motion versions V4.3
or later, or EcoStruxure Machine Expert. It is the default setting
when creating a new Symbol Configuration.
Tools button Save XML Scheme Opens the dialog box for saving a file in the file system. Allows you
File... to create an XSD (XML Schema Definition) format of the symbol
file, for use in external programs.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 569
Symbol Configuration Editor

Description of the Table


Columns of the Symbol configuration table:

Column Description
Symbols The column shows a list of POUs. You can select variables to be exported. If
you select variables of a structured data type, all members of the structure will
be exported.
You may also select only particular member variables in the dialog box
Symbol Configuration for Data Type. Click the browse ... button in the
Members column to open this dialog box. For further information, refer to the
description of the Members column.
Access Rights To modify the access rights for a selected item, click the Access Rights
column.
Each mouse-click switches the symbol within the following definitions:

 : read and write


 : write-only

 : read-only
 none

Maximal Shows the maximum access rights.


Type Shows the data type of the variable.
Variables of an alias data type are displayed as shown in the following
example of a variable:
myVar : MY_INT,, where MY_INT is an alias declared as:
TYPE MY_INT : INT; END_TYPE.
In this case, the Type column shows MY_INT : INT.
Members Click the ... button in the Members column to open the Symbol Configuration
for Data Type dialog box. It allows you to select only particular member
variables. In case of nested types, this dialog box again provides a button to
open another Symbol Configuration for Data Type dialog box.
This selection applies to all instances of this data type for which symbols are
exported. If not all members of a structured type are exported, then an
asterisk (*) is displayed in the check boxes of the members to indicate that all
exportable members of that type are exported.
Comment Shows any comments which have been added in the declaration of the
variable.

NOTE: With the POU property Link Always, an uncompiled POU can be forced to be downloaded
to the controller. If this property is set in the Build tab of the Properties dialog box of the selected
POU, then all variables declared in this POU are available, even if those variables are not
referenced by other code. Alternatively, you can use the pragma {attribute linkalways}
(see page 690) to make not compiled variables available in the symbol configuration.

570 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Symbol Configuration Editor

Variables which are configured to be exported but which are not valid in the application, for
example because their declaration has been removed, are shown in red. This also applies to the
concerned POU or library name.
By default, a symbol file is created with a code generation run. This file is transferred to the device
with the next download. If you want to create the file without performing a download, use the
command Generate code, by default available in the Build menu.
NOTE: Variables of a global variable list (GVL) will only be available in the symbol configuration if
at least one of them is used in the programming code.

Comments and attributes Dialog Box


The Comments and attributes dialog box opens upon clicking Settings → Configure comments and
attributes. It contains the following elements:

Element Description
Symbol table contents
Enable extended OPC UA information This function is not supported.
Include comments
Include attributes
Also include comments and attributes for type nodes
XML symbol file contents
Include namespace node flags Namespace node flags provide additional
information about the origin of a node in the
namespace. Node flags are available in the symbol
table when OPC UA is activated.
Deselect this option to prevent namespace node
flags from being inserted in the XML file if your parser
cannot process them.
Include comments Select this option to save comments in the XML file.
In SoMachine / SoMachine Motion versions prior to
V4.4, this includes the setting Prefer docu comments.
Include attributes Select this option to save attributes in the XML file.
Also include comments and attributes for type nodes This option is only available if the option Include
comments or the option Include attributes is
activated.
If this option is selected, the information for type
nodes is also included (user-defined types, such as
STRUCT and ENUM elements).
If this option is not selected, comments and attributes
are only available for directly exported variables.
Select comments
These parameters are only available if one of the Include comments options is activated.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 571
Symbol Configuration Editor

Element Description
Include docu comments: Select the options to determine the kind of comments
///They start with triple slash and are usually /// that are saved in the symbol configuration.
formatted in ReST (library documentation)
Include normal comments:
(*IEC/ Pascal style comments *) // C++-Style
comments with double-slash
Always include both types of comments
Prefer docu comments, fallback to normal ones
Prefer normal comments, fallback to docu comments
Filter Attributes (case insensitive)
These parameters are only available if one of the Include attributes options is activated.
Include all attributes (“foo”, “bar”, “[Link]”) Select the options to determine the attributes that are
saved in the symbol configuration.
Match simple identifiers (“foo”, “bar”)
Include attributes starting with:
Filter Attributes with regular expression

Additional Information on Configure synchronisation with IEC tasks...


To achieve synchronous, consistent access, the runtime system postpones the processing of read
or write request of the symbolic client until no IEC task is executed. As soon as this gap is found,
the restart of IEC tasks is postponed until the requested values have been copied to the variables
list.
This option is useful for permanently running systems without production clocking, for example, if
process values are to be written cyclically in fixed time intervals (such as 60 s).
NOTE: Do not activate the option Configure synchronisation with IEC tasks... for motion and real
time-critical application because the delayed start of IEC tasks leads to a higher jitter.
If you intend to use the Configure synchronisation with IEC tasks... option, consider the following
points when you define the variable lists that are read and written:
 Configure synchronous and consistent access only for those variables for which it is necessary.
 Create separate lists for consistent variables and for variables that may be inconsistent.
 Create several small lists containing consistent variables instead of one large list.
 Define the time intervals for cyclically reading values as large as possible.

The option Configure synchronisation with IEC tasks... is available at two different locations in
EcoStruxure Machine Expert:
 In the Symbol configuration editor, as an option of the Settings button. (If a symbol configuration
is available in the application.)
 In the Options tab of the Properties dialog box of the selected controller.

NOTE: In order for the setting to take effect, perform a Download or Online Change of the
applications on the controller and update the boot applications.

572 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Symbol Configuration Editor

Symbol Configuration

Overview
The symbol configuration is used to create symbols, provided with specific access rights. They
allow project variables to be accessed externally, for example by Vijeo-Designer. The description
of the symbols will be available in an XML file (symbol file) in the project directory. It will be
downloaded to the controller together with the application.

Symbol Information
The symbols defined for an application are exported to an XML file in the project directory (symbol
file) when the application is downloaded to the controller. This file is named according to the
following syntax:
<project name>.<device name>.<application name>.xml
Example: proj_xy.[Link]
Symbols for input addresses and variables that are mapped to input channels allow read-only
access. Write access is only allowed for testing purposes in simulation mode.
NOTE: In case a download to the controller is not possible, you can create the symbol configuration
file by executing the command Generate code.
Further on the symbol information is downloaded to the controller with the application. Depending
on the device description, it will be included in the application or a separate child application will be
generated. This will also be listed with the name <application name>._symbols in the Applications
view of the device editor (see page 134).
If the symbol configuration has been modified in online mode, you can reload it to the controller by
clicking the button Download in the editor window (see page 570).
For example, concerning the maximum number of applications on a controller, the symbol
application has to be handled as a normal application.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 573
Symbol Configuration Editor

Adding a Symbol Configuration

Prerequisites
Variables that will be exchanged between the controller and (multiple) HMI devices using the
transparent Machine Expert protocol (see EcoStruxure Machine Expert, Introduction) must be
published in the controller using the Symbol configuration. They will then be available as
EcoStruxure Machine Expert variables in Vijeo-Designer.

Defining a Symbol Configuration


In order to get the symbol configuration functionality available, add the symbol configuration object
to the application in the Tools tree as described in the Opening the Symbol Configuration
paragraph. This [Link] is automatically added to the Library Manager.
You can define the variables to be exported as symbols in the symbol configuration editor
(see page 568) or via pragmas (attribute symbol (see page 714)), which are to be added at the
declaration of the variables.
NOTE: Variables of a global variable list (GVL) will only be available in the symbol configuration if
at least one of them is used in the programming code.
NOTE: Constants are available in the Symbol configuration if the option Replace constants in the
Project Settings → Compile options dialog box (see EcoStruxure Machine Expert, Menu
Commands, Online Help) is deactivated. For particular constants, you can configure the option
explicitly by using the attributes {attribute 'const_replaced'} and {attribute
'const_non_replaced'}.
However, in any case the following is true: Constants in a global variable list (GVL) or in another
POU are only available in the Symbol configuration, if the GVL or POU is used in the program code,
or if the compiler option Link always is activated in the View → Properties → Build dialog box
(see EcoStruxure Machine Expert, Menu Commands, Online Help) of the GVL or POU.
Another possibility is provided by the SFC editor: You can define the implicitly created element
flags in the element properties (see page 379) for export to the symbol configuration.
The name of a symbol created by the symbol configuration is composed according to the following
syntax:
<application name>.<POU name>.<variable name>
Examples:
MyApplication.PLC_PRG.a
[Link].a
For accessing the variable, define the symbol name completely.

574 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Symbol Configuration Editor

Opening the Symbol Configuration


To open the Symbol configuration, proceed as follows:

Step Action
1 Select the Application node in the Tools tree, click the green plus button, and
select the command Add other objects → Symbol configuration....
Result: The Add Symbol configuration dialog box will be displayed.
2 In the Add Symbol configuration dialog box, optionally configure settings like
whether to include comments or not. The settings can be modified later in the
Symbol configuration editor (see page 568).
3 Click the Add button.
Result: A Symbol configuration node is created under the Application node in the
Tools tree. The Symbol configuration is displayed on the right-hand side.

NOTE: Only one symbol configuration node can be created per device.
For details on the variables interchange between the controller and HMI part, refer to the chapter
EcoStruxure Machine Expert Controller-HMI Data Exchange (see page 577).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 575
Symbol Configuration Editor

576 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Controller - HMI Data Exchange
EIO0000002854 06/2019

Chapter 29
EcoStruxure Machine Expert Controller - HMI Data Exchange

EcoStruxure Machine Expert Controller - HMI Data Exchange

What Is in This Chapter?


This chapter contains the following topics:
Topic Page
EcoStruxure Machine Expert Single Variable Definition 578
Publishing Variables in the Controller Part 582
Selecting Variables in the HMI Part 584
Publishing Variables in the HMI Part 585
Parameterization of the Physical Media 587
Communication Performance on Controller - HMI Data Exchange 588
Indications for HMI Connections 591

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 577
Controller - HMI Data Exchange

EcoStruxure Machine Expert Single Variable Definition

Overview
By publishing the variables in EcoStruxure Machine Expert, they will automatically be available for
use in the Vijeo-Designer HMI application.
For variable exchange with the Machine Expert protocol, perform the following steps:
 Create variables in the controller part.
 Publish the variables by defining them as Symbols in the controller part. They are now available
in the HMI part as EcoStruxure Machine Expert variables.
 Configure the physical connection (automatically setup by EcoStruxure Machine Expert).

NOTE: The last step is not necessary for XBTGC controllers because they may communicate with
their own control variables.

578 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Controller - HMI Data Exchange

Disabling Automatic Symbol Export to Vijeo-Designer


By default, EcoStruxure Machine Expert automatically exports those variables defined as Symbols
to the Vijeo-Designer HMI application.
Once symbols have been transferred to Vijeo-Designer, it is usually not necessary to make the
transfer every time you call Vijeo-Designer. If you later add or modify symbols in your EcoStruxure
Machine Expert application after having initially transferred the symbols, you can transfer symbols
to Vijeo-Designer manually at will. To save time when you open Vijeo-Designer, you can disable
the automatic transfer of symbols as follows:

Step Action
1 Select the Options... command from the Tools menu.
Result: The Options dialog box is displayed.
2 Select the entry Vijeo-Designer from the list on the left-hand side.
3 On the right-hand side, enable the check box Disable automatic symbol export.

4 Click OK to close the dialog box.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 579
Controller - HMI Data Exchange

NOTE: Activating the Disable automatic symbol export function inhibits the automatic export of
EcoStruxure Machine Expert variables defined as Symbols to Vijeo-Designer. In order to perform
this transfer manually, right-click the Symbol configuration node in the Devices window and
execute the Export Symbols to Vijeo-Designer command. If you do not perform this manual
transfer, Vijeo-Designer may not show the correct symbols which, in turn, may lead to errors being
detected in the project.

WARNING
UNINTENDED EQUIPMENT OPERATION
Execute the Export Symbols to Vijeo-Designer command if you have activated the Disable
automatic symbol export before you start working in Vijeo-Designer.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

Variable Types for EcoStruxure Machine Expert - HMI Data Exchange


The following table lists the variable types for EcoStruxure Machine Expert - HMI data exchange:

Variable Type in EcoStruxure Variable Type in Vijeo- Comment


Machine Expert Designer
BOOL BOOL --
BYTE Integer --
WORD UINT --
DWORD UDINT --
SINT Integer --
INT INT --
DINT DINT --
USINT Integer --
UINT UINT --
UDINT UDINT --
REAL REAL --
STRING STRING --
WSTRING STRING WSTRING is supported in Vijeo-Designer as a general
STRING type. This means that you can either exchange only
STRINGS or only WSTRINGS with the HMI. A mixture of
these two variable types is not allowed. If you use
WSTRINGs, all your strings must be WSTRINGs.
Indicate to the Vijeo-Designer driver that all strings should be
managed as UNICODE WSTRINGs as follows:
Select the node SoMachineNetwork or SoMachineCombo in
the Navigator tree of Vijeo-Designer and set the parameter
String Encoding to the value Unicode.

580 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Controller - HMI Data Exchange

Variable Type in EcoStruxure Variable Type in Vijeo- Comment


Machine Expert Designer
Array – In Vijeo-Designer, you can only reference the elements of an
array, not the whole array.
Example: Your array consists of SINTs called myValues. In
Vijeo-Designer, you can reference myValues[0] or
myValues[5] and put this into a variable on the HMI
controller.
Arrays must not contain more than 2,048 elements. If you try
to use arrays with more than 2,048 elements in Vijeo-
Designer, a message is issued.
DUT – In Vijeo-Designer you can only reference the elements of a
DUT, not the whole DUT. This behavior is similar to the
behavior of arrays.

Unsupported Variable Types


The following variable types are not supported for EcoStruxure Machine Expert - HMI data
exchange:
 The 64-bit integer formats
 LREAL
 The time and date formats
 Non-zero based arrays: you cannot import an array that is defined, example:
myArray[1..100].
 Arrays of arrays: you cannot import an array that has an array as its element type, such as
ARRAY [0..9] OF ARRAY [0..9] OF INT. Nevertheless, you can use multi-dimensional
arrays, such as ARRAY [0..9, 0..9] OF INT.
NOTE: The variables from the PLC_R structures of the PLCSystem library cannot be shared via
the Symbol Configuration with the Vijeo-Designer application of HMI targets (including HMI
controllers).
NOTE: Do not share references to a structured variable in the symbol configuration editor, as their
values will not be displayed correctly on the HMI.
For further information on variable types for EcoStruxure Machine Expert - HMI data exchange,
see the Vijeo-Designer online help.

Identifier Length
In Vijeo-Designer, the maximum length of the Symbol name is limited to 32 characters.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 581
Controller - HMI Data Exchange

Publishing Variables in the Controller Part

Overview
Publish variables in the controller part of the EcoStruxure Machine Expert application within the
Symbol configuration editor or in the Variables view of the software catalog (see page 36) of a
POU.

Publishing Variables in the Symbol Configuration Editor


To publish variables within the Symbol configuration editor, proceed as follows:

Step Action
1 Create a Symbol Configuration node under the Application node in the Tools tree as described in the
Adding a Symbol Configuration chapter (see page 574).
2 Double-click the Symbol Configuration node to open the Symbol configuration editor.
3 In the Symbol configuration editor, select those elementary variables that you wish to publish for
communication with 1 or several HMI terminals by selecting or deselecting the check box in the Symbols
column:

You can also assign read/write access rights to each variable individually in the Access Rights column.
For further information, refer to the description of the Symbol configuration editor (see page 568).
Note: Only variables on elementary data types are available for interchange with HMI terminals.
4 For your settings to become valid, click the Download link in the Symbol configuration editor.

NOTE: The publishing mechanism consumes an overhead of about 50 Kbyte in the controller.
Each published variable consumes 11 bytes within the controller application.

582 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Controller - HMI Data Exchange

Publishing Variables in the Variables View of the Software Catalog


To publish variables in the Variables view of the software catalog (see page 36), proceed as
follows:

Step Action
1 Open the Variables view of the software catalog (see page 36).
2 To publish a variable, select the respective check box in the Publish column.

NOTE: Verify that the POU of the selected variables is called in a task. Otherwise the selected
variables will not be published.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 583
Controller - HMI Data Exchange

Selecting Variables in the HMI Part

Selecting Variables
Those variables that have been published in the controller part are directly available in the HMI
part.
In the Expression Editor Pad of Vijeo-Designer, select the corresponding tab to have direct access
to the variables published in EcoStruxure Machine Expert.

For further information, refer to the Vijeo-Designer online help.

584 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Controller - HMI Data Exchange

Publishing Variables in the HMI Part

Supported Variable Types


The following variable types can be published in Vijeo-Designer to make them available for the
entire EcoStruxure Machine Expert project:
 BOOL
 DINT
 INT
 UINT
 UDINT
 Integer
 REAL
 STRING

Procedure
To publish the above mentioned variable types, proceed as follows:

Step Action
1 In the Vijeo-Designer Variable Editor, select those variables you want to publish.
2 Right-click the selected variable(s) and execute the command Move to SoMachine from the context
menu.

Result: The Move to SoMachine dialog box will be displayed.


3 In the Move to SoMachine dialog box open the subfolders of the devices defined in EcoStruxure Machine
Expert to see the levels where variables are defined (POU or GVL).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 585
Controller - HMI Data Exchange

Step Action
4 Select the POU or GVL to which you want to add the selected Vijeo-Designer variable(s) and click OK.

Result: The selected variable(s) has / have been moved to the selected EcoStruxure Machine Expert
POU or GVL and is / are available throughout the EcoStruxure Machine Expert project.

586 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Controller - HMI Data Exchange

Parameterization of the Physical Media

Overview
The runtime data exchange between the controller and the HMI is executed on different media,
depending on the selected hardware.

Configuration Example
The default settings below are valid for communications between M241 and an HMI panel via serial
line RS-485 using an XBTZ9008 cable (serial line SubD-RJ45).
Configuration of M241 with HMI panel:
M241 controller serial line configuration

Parameter Value
Physical Medium RS485
Baud rate 115200
Parity none
Data bits 8
Stop bits 1

HMI panel IO-Manager configuration using a driver: EcoStruxure Machine Expert - network with at
least one Scan-Group (for further information, refer to the Vijeo-Designer online help).

Parameter Value
Physical Medium RS485
Baud rate 115200
Parity none
Data bits 8
Stop bits 1
Equipment Name Controller device name (available in the Communication
Settings tab (see page 105)).

Configuration of XBTGC:

Device Configuration
XBTGC controller No configuration required.
HMI panel IO-Manager
Driver EcoStruxure Machine Expert - Combo with at least one
Scan-Group

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 587
Controller - HMI Data Exchange

Communication Performance on Controller - HMI Data Exchange

Overview
The communication speed between controller and HMI depends largely on the number of variables
that are exchanged. Therefore, the time that is required to display the values on the HMI panels
when a controller-HMI-connection is established, as well as to the refresh time of the variables, are
affected accordingly.
This chapter provides reference values that have been achieved under optimum conditions. Actual
values depend on the total performance of your controller application (for example, the
communication task responsible for data exchange is executed with a low priority).
For data exchange using the Machine Expert protocol via Ethernet, this chapter indicates the
number of variables allowed to achieve a good data transmission performance. If you are using
serial line, consider to change to Ethernet for increasing the performance.

General Measures for Improving Communication Performance


To improve the communication performance, you can take the following measures:
 In the equipment or scan group properties of your HMI, set the Vijeo-Designer parameter
ScanRate to Fast.
 Reduce the number of variables per HMI panel because only the variables on the active panel
are refreshed. It is a good practice to create several HMI panels with reduced number of
variables in Vijeo-Designer instead of creating one HMI panel that shows many variables.
 Add only those variables to the Symbol configuration that are used in the HMI.

Variable-to-Time Ratio for Displaying Values After Establishing the Controller-HMI-Connection


The graph indicates reference values that have been measured for the time that is required to
display the values on the HMI panels when establishing a connection over the Machine Expert
protocol via Ethernet (for example, after downloading applications). The reference values are
typically representative of the performance of the XBTGT HMI Controllers or M258 Logic
Controllers. The reference values were obtained by using different numbers of variables under
non-industrial conditions.

588 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Controller - HMI Data Exchange

Typical delay to establish a connection and display values on the HMI panel:

1 Time in seconds
2 Number of variables
3 XBTGT2330 + M258
4 XBTGT4330 + M258

Variable-to-Time Ratio for Refreshing Variables on the HMI Panel


The graph indicates reference values that have been measured for the time that is required to
refresh variables over the Machine Expert protocol via Ethernet between XBTGT HMI and M258
controllers with different numbers of variables under non-industrial conditions.
Typical delay to refresh variables on the HMI:

1 Time in seconds
2 Number of variables
3 XBTGT2330 + M258
4 XBTGT4330 + M258

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 589
Controller - HMI Data Exchange

Vijeo-Designer Suggestions on Variables


Vijeo-Designer provides the following suggested guidance for using variables in the Vijeo-Designer
online help:
Chapter Creating Variables → About Variables and Device Addresses → Source: Internal Versus
External:
 One target can have a maximum of 8000 or 12000 variables depending on the target type. Array
and structure holders (the group node) also count as variables. A block variable counts as
one variable.
 You can use a maximum of 800 variables on a single panel.
Chapter Appendix → Run-Time Specifications:
Number of variables per panel (limit):

Controller Maximum number of variables per panel


iPC series 2500
Other target types, except iPC 800

Number of variables per target (limit):

Controller Maximum number of variables


 iPC* 12000
 XBTGTW series

 XBTGC 8000
 XBTGT
 XBTGH
 HMIGTO
 HMISTO
 HMISTU
 HMISCU series

XBTGK series 8000


* For iPC: If persistent variables, such as alarm variables and data logging variables, are used, a maximum
of 8000 variables can be supported for each iPC target.

Chapter Errors → Message List → Editor Error Messages→ 1300 - 1999→ Error 1301:
Error 1301: [Target] [target name] too many variables. Variable limit is [8000 or 12000].
NOTE: The Vijeo-Designer online help indicates that the total number of elements in an array must
not exceed 2048 (refer to the chapter Creating Variables → Array Variables). This limits the size
of (single or multidimensional) array variables that are shared via the EcoStruxure Machine Expert
Symbol Configuration. To overcome this limit, consider sharing an array of DUT (for example,
ARRAY[0..99] OF DUT_30, where DUT_30 is a user-defined type containing 30 distinct
INT variables, resulting in 3000 variables). In any case, the Error 1301 will be issued if the
maximum number of variables per target (8000 or 12000) is exceeded.

590 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Controller - HMI Data Exchange

Indications for HMI Connections

Indications Regarding Communication Settings View


When you connect controllers to HMIs, select the option Nodename from the Connection Mode list
in the Communication Settings view (see page 113) to specify the address. Otherwise, a
corresponding message will be generated as soon as you intend to download a project to the HMI.

Indications for Windows Embedded HMIs


For Windows embedded HMIs, verify the following:
 Make sure that the Windows service CoDeSys Control is running on the Windows Embedded
HMI.
 Start the Vijeo-Designer Runtime to be able to download the application (for further information,
refer to the Vijeo-Designer online help, chapter 25.7 Run the User Application).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 591
Controller - HMI Data Exchange

592 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Cam Motion Editor
EIO0000002854 06/2019

Chapter 30
Cam Motion Editor

Cam Motion Editor

What Is in This Chapter?


This chapter contains the following sections:
Section Topic Page
30.1 Cam Motion Editor - General Information 594
30.2 Generating IEC Program Code from Cam Data 598
30.3 Online View and Functions of the Cam Motion Editor 602
30.4 Discontinuous Courses of the Positions 603
30.5 Dialog Boxes 604

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 593
Cam Motion Editor

Section 30.1
Cam Motion Editor - General Information

Cam Motion Editor - General Information

What Is in This Section?


This section contains the following topics:
Topic Page
General Information 595
Adding a Cam Object 596
Opening the Motion Editor of a Cam Object 597

594 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Cam Motion Editor

General Information

Overview
The cam motion editor is used to create and parameterize cam diagrams and assign them to
FB_MultiCam / MC_Cam_ID function blocks. In turn, these diagrams can then be used by the
Motion Sizer, for example, for drive sizing.
The cam diagrams are based on the motion laws defined in VDI 2143. They allow you to design
the motion of your axis in relation to the position of a master axis φ. Cam diagrams are used to
model the movement of a servo axis, which follows the motion of a virtual line shaft. The angle of
this line shaft is described by φ.
You can define segments for each cam diagram that correspond to the different sequences of
motion that your axis performs.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 595
Cam Motion Editor

Adding a Cam Object

Overview
To add a cam object to your project, right-click the Application node in the Tools tree, and execute
the command Add Object → CamDiagram... from the contextual menu.
Result: A Camdiagram node is inserted. By default, it contains a Segment subnode that is a child
object of the diagram object.

596 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Cam Motion Editor

Opening the Motion Editor of a Cam Object

Procedure
To open the motion editor of a cam diagram or a cam segment, double-click the node in the Tools
tree:

If... Then ...


You double-click the The Motion Editor tab opens in the multi-tabbed editor view.
CamDiagram node
You double-click the Segment The Motion Editor tab opens in the multi-tabbed editor view and highlights
node the selected segment with a green background in the diagram.

Displaying More than one Motion Editor


To compare interdependent motions with each other, you can display several motion editor views
simultaneously. To achieve this, execute the command Window → New Horizontal Tab Group or
Window → New Vertical Tab Group.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 597
Cam Motion Editor

Section 30.2
Generating IEC Program Code from Cam Data

Generating IEC Program Code from Cam Data

What Is in This Section?


This section contains the following topics:
Topic Page
Using Cam Data for Function Blocks 599
Copying the Source Code of the Cam Diagram 601

598 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Cam Motion Editor

Using Cam Data for Function Blocks

Overview
Cam diagrams are used as a basis to generate cam data structures with a corresponding number
of cam points.
These data structures can be used to parameterize the FB_MultiCam / MC_Cam_ID function
blocks or a POU with equivalent functionality.
Cam data is used to initialize function blocks/modules that are processing cam data structures in
the application program.

Specifying the Target Function Block


The Configuration tab of the cam motion editor provides an input field that allows you to specify an
existing cam data structure as target. If a target is defined, cam data will automatically be written
to this target structure when the program is initialized. If the expression is indeterminable, a
diagnostic message will be generated.
From the target defined, EcoStruxure Machine Expert detects whether the data structures are
CommonMotionType or PacDriveLib structures and parameterization is performed accordingly.

Data Structure Library


ST_Multicam PacDriveLib
FB_MultiCam / MC_Cam_ID CommonMotionType

Generating Data for Cam Data Structures


When the project is built (via the Build command from the Build menu or shortcut F11), IEC source
code is generated and written into the specified cam data structure.
The parameterization statements for the cam data structure are generated in the following format:
[Link] := 3;
[Link] := 0;
[Link][0].lrX := 0;
[Link][0].lrY := 100;
[Link][0].lrM := 0;
[Link][0].lrK := 0;
[Link][0].lrLambda := 0.5;
[Link][0].lrC := 1;
[Link][0].etCamType := ET_CAMTYPE.Poly5Com

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 599
Cam Motion Editor

;
[Link][1].lrX := 100;
[Link][1].lrY := 0;
[Link][1].lrM := 0;
[Link][1].lrK := 0;
[Link][1].lrLambda := 0.5;
[Link][1].lrC := 1;
[Link][1].etCamType := ET_CAMTYPE.SimplSin
;
In this example, [Link] is configured as target data structure.
The generated data is based on cam diagrams that were edited in offline mode. They are not
updated in online mode.

Maximum Number of CamPoints


Each cam segment is defined by a CamPoint that specifies the data located on the left margin of
the segment. The right CamPoint of a cam segment corresponds to the left CamPoint of the next
cam segment. To identify the end point of the cam diagram, the last cam segment is defined by an
own right CamPoint.
There is a maximum of 32 CamPoints available for a cam data structure. When a target structure
has been selected with a cam diagram having more than 31 segments, a diagnostic message will
be generated. In order to design the motion of an axis with more than 31 segments, you must
divide it into several cam diagrams.
NOTE: If several cam diagrams are incorporated, for drive sizing with Motion Sizer, Motion Sizer
make sure to use the total cam curve including all sub cam diagrams.

Initializing the Function Block


In order to provide the configured cam data to the target structure, an initialization code is executed
once during start-up. This initialization task is executed by a program POU that is called up as
initialization code after the user initialization processes have been completed.

600 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Cam Motion Editor

Copying the Source Code of the Cam Diagram

Overview
The Generated IEC source code tab of the cam motion editor provides the source code that has
been generated for the cam diagram in a read-only format. Whenever the cam diagram is modified,
the code is regenerated.
You can copy the IEC code for further usage in your program.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 601
Cam Motion Editor

Section 30.3
Online View and Functions of the Cam Motion Editor

Online View and Functions of the Cam Motion Editor

Online View and Functions of the Cam Motion Editor

Cam Motion Editor in Online Mode


If you enable the online mode in EcoStruxure Machine Expert while the cam motion editor is
active/visible, then the cam motion editor is also switched to online mode but still displays the
offline data.
As long as the online mode is enabled, you cannot modify values of the cam diagram:
 You cannot select a segment.
 You cannot modify the segment data.
 You cannot specify a variable as target.
 You cannot modify the axis-diagram allocation.

Nevertheless, you can select the different tabs to display the offline information of a cam diagram.
When you select another cam motion editor while you are in online mode, the offline data of the
corresponding cam data structure will be displayed.

Online Change
The cam motion editor supports the Online change function (see page 261).
After a cam data structure has been downloaded to the controller, the individual segments will be
editable as soon as you have switched to offline mode.
When switching back to online mode, the modifications are detected and you will be prompted to
decide whether you want to log in and perform the online change (see page 259). If you confirm
this message with OK, the cam data structure will be updated.
For the modifications to become effective, the FB_MultiCam / MC_Cam_ID function blocks must
be switched to the adequate mode to take into account the modified cam data structure.
You can achieve this by setting the input parameter (for example, iq_xNewCam...) via the Debug
→ Force values command. For further information, refer to the description of FB_MultiCam in the
PD_PacDriveLib or FB_MultiCam / MC_Cam_ID in the CommonMotionType library guide.

602 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Cam Motion Editor

Section 30.4
Discontinuous Courses of the Positions

Discontinuous Courses of the Positions

Discontinuous Courses of the Positions

Overview
The cam data structure is used to parameterize the FB_MultiCam / MC_Cam_ID function blocks.
The data structure cannot map any discontinuous courses of the positions. Therefore, the
FB_MultiCam / MC_Cam_ID function blocks do not move along inconsistently parameterized
cam courses.
In order to help avoid invalid parameterization, the positions are verified for inconsistencies.
For this purpose, the start point of a cam segment is compared to the end point of the preceding
segment. For each invalid parameterization, a compile error is generated.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 603
Cam Motion Editor

Section 30.5
Dialog Boxes

Dialog Boxes

What Is in This Section?


This section contains the following topics:
Topic Page
Motion Editor 605
Generating IEC Source Code 614
Configuration 615

604 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Cam Motion Editor

Motion Editor

Motion Editor Tab


The graphic displays the Motion Editor tab.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 605
Cam Motion Editor

Element Description Value range


Cam diagram The view on the left-hand side of this tab displays the –
individual segments of the cam diagram that have been
double-clicked in the Tools tree.
The selected cam segment is highlighted green. To
select a cam segment, double-click the segment in the
Tools tree view or click the segment in the Motion
Editor tab.
Start condition The condition that applies at the start point of the  Dwell
selected cam segment.  Velocity
 Return
 Motion

End condition The condition that applies at the end point of the  Dwell
selected cam segment.  Velocity
 Return
 Motion

Motionprofile The motion law describes the profile of the segment.  Straight line
The available motion profile depends on the Start  Quadratic parabola
condition and End condition selected. Refer to the  Polynomial of 5th degree
table Motion Profiles Available for Combinations of  Simple sinus
Start and End Conditions (see page 609).  Modified sinus
 Modified acceleration trapezoid
 General polynomial of the 5th degree
 Sinus-straight line combination
 The user-defined motion profiles

Spline This parameter is only available for user-defined  Natural spline


interpolation motion profiles. It defines how the edge condition at the  Spline on base of the slope of the
mode start point and end point of the profile is resolved. borders
 Periodic spline

Input parameters Select from the list the parameters which you will The values listed in the table depend on
configure. Result: The corresponding text fields will the Motionprofile you selected. Refer to
become editable. The remaining parameter will be the following tables that list the
calculated by EcoStruxure Machine Expert. parameters that are available per motion
law.
Left segment edge - Start section
X The x coordinate of the start point of the selected Decimal number
cam segment. Unit: φ
Represents the angle of the virtual line shaft where the
segment starts.
Y The y coordinate of the start point of the selected Decimal number
cam segment. Unit: Position
Represents the position of the axis at the segment
start. This is the value of s at the position x.

606 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Cam Motion Editor

Element Description Value range


Slope The slope of the position curve at the start point of the Decimal number
selected cam segment. This is the value of s’. Unit: Position / φ
Curvature The curvature of the position curve at the start point of Decimal number
the selected cam segment. This is the value of s’’. Unit: Position / φ2
Right segment edge - end section
X The x coordinate of the end point of the selected Decimal number
cam segment. Unit: φ
Represents the angle of the virtual line shaft where the
segment ends.
Y The y coordinate of the end point of the selected Decimal number
cam segment. Unit: Position
Represents the position of the axis at the segment end.
This is the value of s at the position x.
Slope The slope of the position curve at the end point of the Decimal number
selected cam segment. This is the value of s’. Unit: Position / φ
Curvature The curvature of the position curve at the end point of Decimal number
the selected cam segment. This is the value of s’’. Unit: Position / φ2
C Defines the fraction of the selected cam segment that 0...1
is spent for changing the velocity.
The value 1 indicates that there is no constant velocity
phase within the segment. Acceleration and
deceleration procedures are performed throughout the
segment.
The value 0.5, for example, indicates that acceleration
and deceleration procedures are performed during the
half of the segment time. The other half of the segment,
the inflexion point between acceleration and
deceleration, is reserved for constant velocity.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 607
Cam Motion Editor

Element Description Value range


Lambda Defines the position of the inflexion point (when C=1) 0...1
or of the phase within constant velocity (when C<1) on
the x axis (φ) within the selected cam segment.
Lambda describes the proportion between
acceleration and deceleration on the virtual line shaft
angle within the segment.
In a segment that only consists of an acceleration
phase (Start condition = Dwell, End condition =
Velocity, the Lambda value is fixed to 1. This means
that 100% of the time of changing the velocity is used
for acceleration, 0% is used for deceleration.
In a segment that only consists of a deceleration phase
(Start condition = Velocity, End condition = Dwell, the
Lambda value is fixed to 0. This means that 0% of the
time of changing the velocity is used for acceleration,
100% is used for deceleration.
In a segment that only consists of acceleration and
deceleration phases (Start condition = Dwell, End
condition = Dwell, the Lambda value is greater than 0
and less than 1. A value of 0.5 means that acceleration
and deceleration phases have the same length on the
x axis (φ). 50% of the total length is spent with
changing the velocity. A value of 0.1 means that 10%
of the acceleration and deceleration length on the
x axis (φ) are used for deceleration. 90% are used for
acceleration.

Additional information for certain motion laws:

Designation Description
C Cam percentage of a motion curve.
Valid interval: The value of the input field must be greater than 0 and less
than or equal to 1.
Examples:
C = 1: The course is bent or a cam.
C = 0.001: The course almost matches a straight line completely.
C = 0.4: The course has a straight line percentage of 60% and a
cam percentage of 40%.
Lambda Position of the inflexion point.
For dwell/dwell laws the inflexion point is within the valid interval: The
value of the input field must be greater than or equal to 0 and less than or
equal to 1.
For Lambda = 0.5, the inflexion point is precisely in the center of the cam
segment.
For Lambda = 0.00001, the inflexion point is almost at the left edge.
For the most dwell/velocity or velocity/dwell motion laws, Lambda is
exactly 1 or 0 and is precisely at the left or right edge.

608 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Cam Motion Editor

Motion Profiles Available for Combinations of Start and End Conditions


Depending on the combination of the boundary conditions (start condition, end condition) you can
select the following Motionprofiles.

From/to Dwell Velocity Return Motion


(v=0, a=0) (v<>0, a=0) (v=0, a<>0) (v<>0, a<>0)
Dwell Straight line Quadratic parabola General polynomial of General polynomial of
(v=0, a=0) Quadratic parabola Polynomial of 5th the 5th degree the 5th degree
Polynomial of 5th degree
degree Simple sinus
Simple sinus Modified sinus
Modified sinus Modified acceleration
Modified acceleration trapezoid
trapezoid General polynomial of
General polynomial of the 5th degree
the 5th degree (Lambda = 1)
Velocity Quadratic parabola Straight line General polynomial of General polynomial of
(v<>0, a=0) Polynomial of 5th General polynomial of the 5th degree the 5th degree
degree the 5th degree
Simple sinus
Modified sinus
Modified acceleration
trapezoid
General polynomial of
the 5th degree
(Lambda = 0)
Return General polynomial of the 5th degree Sinus straight General polynomial of
(v=0, a<>0) combination the 5th degree
General polynomial of
the 5th degree
Motion General polynomial of the 5th degree
(v<>0,
a<>0)

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 609
Cam Motion Editor

Parameters for Motion Laws Quadratic parabola, Polynomial of 5th degree, Simple sinus, Modified sinus,
Modified acceleration trapezoid
The table lists the parameters that are available for the motion laws Quadratic parabola,
Polynomial of 5th degree, Simple sinus, Modified sinus, Modified acceleration trapezoid, and the
values they can have in accordance with the selected Start condition and End condition:

Parameter Start condition - End condition


Dwell - Dwell Dwell - Velocity Velocity - Dwell
X start User input User input User input
Y start User input User input* or calculated User input* or calculated
by EcoStruxure Machine by EcoStruxure Machine
Expert Expert
Slope start Fixed to 0 Fixed to 0 User input or calculated
by EcoStruxure Machine
Expert*
Curvature start Fixed to 0 Fixed to 0 Fixed to 0
X end User input User input User input
Y end User input User input* or calculated User input* or calculated
by EcoStruxure Machine by EcoStruxure Machine
Expert Expert.
Slope end Fixed to 0 User input or calculated* Fixed to 0
by EcoStruxure Machine
Expert.
Curvature end Fixed to 0 Fixed to 0 Fixed to 0
C User input(0...1) User input* (0...1) or User input* (0...1) or
calculated by calculated by
EcoStruxure Machine EcoStruxure Machine
Expert. Expert.
Lambda User input(0...1) Fixed to 1 Fixed to 0
* By default, one out of four parameters is calculated by EcoStruxure Machine Expert, whereas the other
three parameters are [Link] can change this by clicking the option next to the parameter.

610 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Cam Motion Editor

Parameters for Motion Law Straight line


The table lists the parameters that are available for the motion law Straight line and the values they
can have in accordance with the selected Start condition and End condition:

Parameter Start condition - End condition


Dwell - Dwell Velocity - Velocity
X start User input User input
Y start User input User input* or calculated by EcoStruxure
Machine Expert
Slope start Fixed to 0 User input or calculated* by EcoStruxure
Machine Expert
Curvature start Fixed to 0 Fixed to 0
X end User input User input
Y end User input User input* or calculated by EcoStruxure
Machine Expert
Slope end Fixed to 0 The same value is used as for the parameter
Slope start.
Curvature end Fixed to 0 Fixed to 0
* By default, the Slope start parameter is calculated by EcoStruxure Machine Expert, whereas the parameters Y start
and Y end are [Link] can change this by clicking the option next to the parameter.

Parameters for Motion Law Sinus-straight line combination


The motion law Sinus-straight line combination is only available for Start condition → Return and
End condition → Return. The table lists the available parameters:

Parameter Start condition - End condition


Return - Return
X start User input
Y start User input
Slope start User input* or calculated by EcoStruxure Machine Expert
Curvature start User input* or calculated by EcoStruxure Machine Expert
X end User input
Y end User input
Slope end User input* or calculated by EcoStruxure Machine Expert
Curvature end User input* or calculated by EcoStruxure Machine Expert
C User input* or calculated by EcoStruxure Machine Expert
Lambda User input* or calculated by EcoStruxure Machine Expert
* Use the Input parameters list to select two out of six parameters as editable. The remaining four
parameters are calculated by EcoStruxure Machine Expert.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 611
Cam Motion Editor

Parameters for Motion Law General polynomial of the 5th degree


Since the motion law General polynomial of the 5th degree is available for 15 combinations of Start
condition - End condition values, 4 different parameter tables are provided for this motion law.
The table lists the parameters that are available for the motion law General polynomial of the 5th
degree and the values they can have in accordance with the selected Start condition=Dwell
together with several End condition values:

Parameter Start condition - End condition


Dwell - Dwell Dwell - Velocity Dwell - Motion Dwell - Return
X start User input User input User input User input
Y start User input User input User input User input
Slope start Fixed to 0 Fixed to 0 Fixed to 0 Fixed to 0
Curvature start Fixed to 0 Fixed to 0 Fixed to 0 Fixed to 0
X end User input User input User input User input
Y end User input User input User input User input
Slope end Fixed to 0 User input User input Fixed to 0
Curvature end Fixed to 0 Fixed to 0 User input User input

The table lists the parameters that are available for the motion law General polynomial of the 5th
degree and the values they can have in accordance with the selected Start condition=Motion
together with several End condition values:

Parameter Start condition - End condition


Motion - Dwell Motion - Motion Motion - Return Motion - Velocity
X start User input User input User input User input
Y start User input User input User input User input
Slope start User input User input User input User input
Curvature start User input User input User input User input
X end User input User input User input User input
Y end User input User input User input User input
Slope end Fixed to 0 User input Fixed to 0 User input
Curvature end Fixed to 0 User input User input Fixed to 0

612 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Cam Motion Editor

The table lists the parameters that are available for the motion law General polynomial of the 5th
degree and the values they can have in accordance with the selected Start condition=Return
together with several End condition values:

Parameter Start condition - End condition


Return - Dwell Return - Motion Return - Return Return - Velocity
X start User input User input User input User input
Y start User input User input User input User input
Slope start Fixed to 0 Fixed to 0 Fixed to 0 Fixed to 0
Curvature start User input User input User input User input
X end User input User input User input User input
Y end User input User input User input User input
Slope end Fixed to 0 User input Fixed to 0 User input
Curvature end Fixed to 0 User input User input Fixed to 0

The table lists the parameters that are available for the motion law General polynomial of the 5th
degree and the values they can have in accordance with the selected Start condition=Velocity
together with several End condition values:

Parameter Start condition - End condition


Velocity - Dwell Velocity - Motion Velocity - Return Velocity - Velocity
X start User input User input User input User input
Y start User input User input User input User input
Slope start User input User input User input User input
Curvature start Fixed to 0 Fixed to 0 Fixed to 0 Fixed to 0
X end User input User input User input User input
Y end User input User input User input User input
Slope end Fixed to 0 User input Fixed to 0 User input
Curvature end Fixed to 0 User input User input Fixed to 0

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 613
Cam Motion Editor

Generating IEC Source Code

Generated IEC Source Code Tab


The Generated IEC Source Code tab provides the program code that was generated automatically
based on the cam diagram and the target specified in the Configuration tab.
If you define a target structure (cam data structure), the cam data is automatically written into this
target structure during program initialization.
You can also configure a target structure manually by copying this code and replacing ### by the
name of your variable if no target has been defined.
The program code displayed in this tab is read-only. When the cam diagram is modified, the code
is regenerated.

614 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Cam Motion Editor

Configuration

Configuration Tab
The Configuration tab allows you to select a target structure for its generation and to define the
properties.
The Configuration tab allows you to do the following:
 Select a target structure for source code generation.
 Define properties for this structure.
 Assign the diagram to an axis (only in EDESIGN projects).

Element Description
Target technology The Target technology section allows you to select a target structure (cam data
structure) for source code generation.
Select a structure or click the browse button (...) to open the Input Assistant
dialog box.
After a target structure has been defined, cam data is written into this target
structure whenever the application program is started.
If the expression is undeterminable, a diagnostic message will be generated.
From the target defined, it is detected whether the data structures are
CommonMotionType or PacDriveLib structures and configuration is performed
accordingly.
MultiCam configuration The MultiCam configuration section allows you to configure the values of the
following parameters:
 User table Id: Can be a positive integer (including 0).
 Y - Period: Can be a positive floating-point number (including 0).

The default value for both parameters is 0.


Axis Assignment The Axis Assignment section allows you to configure the axis assignment for
only available for EDESIGN the cam diagram of EDESIGN projects.
projects Select an axis from the list containing all axes that are available in the project.
One axis can be assigned to each diagram. By default, there are no
assignments.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 615
Cam Motion Editor

616 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Programming Reference
EIO0000002854 06/2019

Part VII
Programming Reference

Programming Reference

What Is in This Part?


This part contains the following chapters:
Chapter Chapter Name Page
31 Variables Declaration 619
32 Data Types 721
33 Programming Guidelines 753
34 Operators 767
35 Operands 869

EIO0000002854 06/2019 617


Programming Reference

618 EIO0000002854 06/2019


EcoStruxure Machine Expert
Variables Declaration
EIO0000002854 06/2019

Chapter 31
Variables Declaration

Variables Declaration

What Is in This Chapter?


This chapter contains the following sections:
Section Topic Page
31.1 Declaration 620
31.2 Variable Types 636
31.3 Method Types 647
31.4 Pragma Instructions 652
31.5 Attribute Pragmas 667
31.6 The Smart Coding Functionality 718

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 619
Variables Declaration

Section 31.1
Declaration

Declaration

What Is in This Section?


This section contains the following topics:
Topic Page
General Information 621
Recommendations on the Naming of Identifiers 624
Variables Initialization 629
Declaration 630
Shortcut Mode 631
AT Declaration 632
Keywords 633

620 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

General Information

Overview
You can declare variables:
 in the Variables view of the Software Catalog (see page 35)
 in the Declaration Editor of a POU (see page 426)
 via the Auto Declare dialog box (see page 630)
 in a GVL editor

The kind (in the tabular declaration editor it is named Scope) of the variables to be declared is
specified by the keywords embracing the declaration of one or several variables. In the textual
declaration editor (see page 426), the common variable declaration is embraced by VAR and
END_VAR.
For further variable declaration scopes, refer to:
 VAR_INPUT
 VAR_OUTPUT
 VAR_IN_OUT
 VAR_GLOBAL
 VAR_TEMP
 VAR_STAT
 VAR_EXTERNAL
 VAR_CONFIG

The variable type keywords may be supplemented by attribute keywords (see page 641).
Example: RETAIN (VAR_INPUT RETAIN)

Syntax
Syntax for variable declaration:
<Identifier> {AT <address>}:<data type> {:=<initialization>};
The parts in braces {} are optional.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 621
Variables Declaration

Identifier
The identifier is the name of a variable.
Consider the following facts when defining an identifier.
 no spaces or special characters allowed
 no case-sensitivity: VAR1, Var1 and var1 are all the same variable
 recognizing the underscore character: A_BCD and AB_CD are considered 2 different identifiers.
Do not use more than 1 underscore character in a row.
 unlimited length
 recommendations concerning multiple use (see next paragraph)

Also, consider the recommendations given in chapter Recommendations on the Naming of


Identifiers (see page 624).

Multiple Use of Identifiers (Namespaces)


The following outlines the regulations concerning the multiple use of identifiers:
 Do not create an identifier that is identical to a keyword.
 Duplicate use of identifiers is not allowed locally.
 Multiple use of an identifier is allowed globally: a local variable can have the same name as a
global one. In this case, the local variable within the POU will have priority.
 A variable defined in a global variable list (GVL) can have the same name as a variable defined
in another global variable list (GVL). In this context, consider the following IEC 61131-3
extending features:
 Global scope operator: an instance path starting with a dot (.) opens a global scope. So, if
there is a local variable, for example ivar, with the same name as a global variable, .ivar
refers to the global variable.
 You can use the name of a global variable list (GVL) as a namespace for the included
variables. You can declare variables with the same name in different global variable lists
(GVL). They can be accessed specifically by preceding the variable name with the list name.
Example
[Link] := [Link];
(* ivar from globlist2 is copied to ivar in GVL globlist1 *)
 Variables defined in a global variable list of an included library can be accessed according to
syntax <library namespace>.<name of GVL>.<variable>.
Example:
[Link] := [Link]
(* ivar from globlist1 in library lib1 is copied to ivar in GVL globlist1 *)
 For a library also, a namespace is defined when it gets included via the Library Manager. So
you can access a library module or variable by <library
namespace>.<modulename|variablename>. Consider that, in case of nested libraries, the
namespaces of all libraries concerned have to be stated successively.

622 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Example: If Lib1 is referenced by Lib0, the module fun being part of Lib1 is accessed by
[Link]:
ivar := [Link](4, 5); (* return value of fun is copied to variable ivar in the
project *)
NOTE: Once the checkbox Publish all IEC symbols to that project as if this reference would
have been included there directly. has been activated within the Properties dialog box of the
referenced library Lib, the module fun may also be accessed directly via [Link].
 Variables declared in GVLs or POUs of the Global node of the Applications tree can be
accessed by prefixing them with the operator "__POOL.".

AT <address>
You can link the variable directly to a definite address (see page 632) using the keyword AT.
In function blocks, you can also specify variables with incomplete address statements. In order that
such a variable can be used in a local instance, an entry has to exist for it in the variable
configuration.

Type
Valid data type (see page 722), optionally extended by an :=< initialization> (see page 629).

Pragma Instructions
Optionally, you can add pragma instructions (see page 652) in the declaration part of an object in
order to affect the code generation for various purposes.

Hints
Automatic declaration (see page 630) of variables is also possible.
For faster input of the declarations, use the shortcut mode (see page 631).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 623
Variables Declaration

Recommendations on the Naming of Identifiers

Overview
Identifiers are defined:
 at the declaration of variables (variable name)
 at the declaration of user-defined data types
 at the creation of POUs (functions, function blocks, programs)

In addition to the general items to be considered when defining an identifier (refer to chapter
General Information on variables declaration (see page 621)), consider the following recommen-
dations in order to make the naming as unique as possible:
 Variable names (see page 624)
 Variable names in Libraries (see page 626)
 User-defined data types (DUTs) in Libraries (see page 627)
 Functions, Function blocks, Programs (POU), Actions (see page 627)
 POUs in Libraries (see page 628)

Variable Names
For naming variables in applications and libraries, follow the Hungarian notation as far as possible.
Find for each variable a meaningful, short description. This is used as the base name. Use a capital
letter for each word of the base name. Use small letters for the rest (example: FileSize).

Data Type Lower Limit Upper Limit Information Prefix Comment


Content
BOOL FALSE TRUE 1 bit x* –
b reserved
BYTE – – 8 bit by bit string, not for
arithmetic
operations
WORD – – 16 bit w bit string, not for
arithmetic
operations
DWORD – – 32 bit dw bit string, not for
arithmetic
operations
LWORD – – 64 bit lw not for arithmetic
operations
SINT –128 127 8 bit si –
USINT 0 255 8 bit usi –
* intentionally for boolean variables x is chosen as a prefix in order to differentiate from BYTE and also in order to
accommodate the perception of an IEC programmer (see addressing %IX0.0).

624 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Data Type Lower Limit Upper Limit Information Prefix Comment


Content
INT –32,768 32,767 16 bit i –
UINT 0 65,535 16 bit ui –
DINT –2,147,483,648 2,147,483,647 32 bit di –
UDINT 0 4,294,967,295 32 bit udi –
LINT –263 263-1 64 bit li –

ULINT 0 264-1 64 bit uli –


REAL – – 32 bit r –
LREAL – – 64 bit lr –
STRING – – – s –
WSTRING – – – ws –
TIME – – – tim –
TIME_OF_DAY – – – tod –
DATE_AND_TIME – – – dt –
DATE – – – date –
ENUM – – 16 bit e –
POINTER – – – p –
ARRAY – – – a –
* intentionally for boolean variables x is chosen as a prefix in order to differentiate from BYTE and also in order to
accommodate the perception of an IEC programmer (see addressing %IX0.0).

Simple declaration
Examples for simple declarations:
bySubIndex: BYTE;
sFileName: STRING;
udiCounter: UDINT;
Nested declaration
Example for a nested declaration where the prefixes are attached to each other in the order of the
declarations:
pabyTelegramData: POINTER TO ARRAY [0..7] OF BYTE;
Function block instances and variables of user-defined data types
Function block instances and variables of user-defined data types get a shortcut for the function
block or the data type name as a prefix (for example: sdo).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 625
Variables Declaration

Example
cansdoReceivedTelegram: CAN_SDOTelegram;
TYPE CAN_SDOTelegram : (* prefix: sdo *)
STRUCT
wIndex:WORD;
bySubIndex:BYTE;
byLen:BYTE;
aby: ARRAY [0..3] OF BYTE;
END_STRUCT
END_TYPE
Local constants
Local constants (c) start with prefix c and an attached underscore, followed by the type prefix and
the variable name.
Example
VAR CONSTANT
c_uiSyncID: UINT := 16#80;
END_VAR
Global variables and global constants
Global variables are prefixed by g_ and global constants are prefixed by gc_.
Example
VAR_GLOBAL
g_iTest: INT;
END_VAR
VAR_GLOBAL CONSTANT
gc_dwExample: DWORD;
END_VAR

Variable Names in Libraries


Structure
Basically, refer to the above description for variable names. Use the library namespace as prefix,
when accessing a variable in your application code.
Example
g_iTest: INT; (declaration)
CAN.g_iTest (implementation, call in an application program

626 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

User-Defined Data Types (DUT) in Libraries


Structure
The name of each structure data type consists of a short expressive description (for example,
SDOTelegram) of the structure.
Example (in library with namespace CAL):
TYPE Day :(
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY);
Declaration:
eToday: [Link];
Use in application:
IF eToday = [Link] THEN
NOTE: Consider the usage of the namespace when using DUTs or enumerations declared in
libraries.

Functions, Function Blocks, Programs (POU), Actions


The names of functions, function blocks, and programs are prefixed by an expressive short name
of the POU (for example, SendTelegram). As with variables, the first letter of a word of the POU
name should always be a capital letter whereas the others should be small letters. It is
recommended to compose the name of the POU of a verb and a substantive.
Example
FUNCTION_BLOCK SendTelegram (* prefix: canst *)
In the declaration part, provide a short description of the POU as a comment. Further on, the inputs
and outputs should be provided with comments. In case of function blocks, insert the associated
prefix for set-up instances directly after the name.
Actions
Actions do not get a prefix. Only those actions that are to be called only internally that is by the
POU itself, start with prv_.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 627
Variables Declaration

POUs in Libraries
Structure
For creating method names, the same rules apply as for actions. Enter English comments for
possible inputs of a method. Add a short description of a method to its declaration. Start interface
names with letter I; for example, ICANDevice.
NOTE: Consider the usage of the namespace when using POUs declared in libraries.

628 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Variables Initialization

Default Initialization Value


The default initialization value is 0 for all declarations, but you can add user-defined initialization
values in the declaration of each variable and data type.

User-Defined Initialization Values


The user-defined initialization is brought about by the assignment operator := and can be any valid
ST expression. Thus, constant values as well as other variables or functions can be used to define
the initialization value. Verify that a variable used for the initialization of another variable is already
initialized itself.
Example of valid variable initializations:
VAR
var1:INT := 12; * Integer variable with initial value of
12. *
x : INT := 13 + 8; * Integer value defined an expression wit
h literal values.*
y : INT := x + fun(4); * Integer value defined by an expression
containing a function call. NOTE: Be sure that any variables used in
the variable initialization have already been defined. *
z : POINTER TO INT := ADR(y); * POINTER is not described by the IEC6113
1-3:
Integer value defined by an address function; NOTE: The pointer will
not be initialized if the declaration is modified online. *
END_VAR

Further Information
For further information, refer to the following descriptions:
 initializing arrays (see page 740)
 initialization of structures (see page 744)
 initialization of a variable with a subrange type (see page 749)

NOTE: Variables of global variables lists (GVL) are initialized before local variables of a POU.
NOTE: As from SoMachine version 4.0, variables in a function block are initialized in the following
order: First, the constants in accordance with the order of their declarations, then the other
variables in accordance with the order of their declarations.
For further information regarding initialization order, refer to the Attribute global_init_slot
(see page 682).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 629
Variables Declaration

Declaration

Declaration Types
You can declare variables manually by using the textual or tabular declaration editor
(see page 426) or automatically like explained in this chapter.

Automatic Autodeclaration
You can define in the Options dialog box, category Text editor → Editing, that the Auto Declare
dialog box should open as soon as a not yet declared string is entered in the implementation part
of an editor and the ENTER key is pressed. This dialog box supports the declaration of the variable
(see page 621).

Manual Autodeclaration
To open the Auto Declare dialog box manually:
 execute the command Auto Declare, which by default is available in the Edit menu or
 press the keys SHIFT+F2

If you select an already declared variable before opening the Auto Declare dialog box
(see EcoStruxure Machine Expert, Menu Commands, Online Help), you can edit the declaration of
this variable.

630 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Shortcut Mode

Overview
The declaration editor (see page 426) and the other text editors where declarations are performed
support the shortcut mode.
Activate this mode by pressing CTRL+ENTER when you end a line of declaration.
It allows you to use shortcuts instead of completely typing the declaration.

Supported Shortcuts
The following shortcuts are supported:
 All identifiers up to the last identifier of a line will become declaration variable identifiers.
 The type of declaration is determined by the last identifier of the line.

In this context, the following replacements are performed:

B or BOOL is replaced by BOOL


I or INT INT
R or REAL REAL
S or string STRING

 If no type has been established through these rules, automatically BOOL is the type and the last
identifier will not be used as a type (see example 1).
 Every constant, depending on the type of declaration, will turn into an initialization or a string
(see examples 2 and 3).
 An address (as in %MD12) is extended by the AT keyword (see example 4).
 A text after a semicolon (;) becomes a comment (see example 4).
 All other characters in the line are ignored (see, for example, the exclamation point in
example 5).

Examples

Example No. Shortcut Resulting Declaration


1 A A: BOOL;
2 A B I 2 A, B: INT := 2;
3 sX S 2; A string sX:STRING(2); // A string
4 X %MD12 R 5; Real Number X %MD12 R 5 Real Number
5 B ! B: BOOL;

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 631
Variables Declaration

AT Declaration

Overview
In order to link a project variable with a definite address, you can assign variables to an address in
the I/O Mapping view of a device in the controller configuration (device editor). Alternatively you
can enter this address directly in the declaration of the variable.

Syntax
<identifier> AT <address> : <data type>;
A valid address has to follow the keyword AT. For further information, refer to the Address
description (see page 887). Consider possible overlaps in case of byte addressing mode.
This declaration allows assigning a meaningful name to an address. Any changes concerning an
incoming or outgoing signal may only be done in a single place (for example, in the declaration).
Consider the following when choosing a variable to be assigned to an address:
 Variables requiring an input cannot be accessed by writing. The compiler intercepts this
detecting an error.
 AT declarations only can be used with local or global variables. They cannot be used with input
and output variables of POUs.
 AT declarations are not allowed in persistent variable lists.
 If AT declarations are used with structure or function block members, all instances will access
the same memory location of this structure / function block. This corresponds to static variables
in classic programming languages such as C.
 The memory layout of structures is determined by the target as well.

Examples
xCounterHeat7 AT %QX0.0: BOOL;
xLightCabinetImpulse AT %IX7.2: BOOL;
xDownload AT %MX2.2: BOOL;

Note
If boolean variables are assigned to a BYTE, WORD or DWORD address, they occupy 1 byte with
TRUE or FALSE, not just the first bit after the offset.
The memory size for input, output, and memory data (declarations with AT %I, %Q and %M) is
predefined by the target device and can be overwritten in the properties of an application object
(see EcoStruxure Machine Expert, Menu Commands, Online Help) for PacDrive controllers
(PacDrive LMC Eco, PacDrive LMC Pro/Pro2).

632 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Keywords

Overview
Write keywords in uppercase letters in the editors.
The following strings are reserved as keywords. They cannot be used as identifiers for variables
or POUs:
 -
 &
 (
 )
 *
 ,
 .
 ..
 /
 :
 :=
 ;
 [
 ]
 ^
 __CATCH
 __CHECKLICENSE
 __CHECKLICENSEBIT
 __DELETE
 __ENDTRY
 __FINALLY
 __ISVALIDREF
 __MEMORYBARRIER
 __NEW
 __QUERYINTERFACE
 __QUERYPOINTER
 __THROW
 __TRY
 __XADO
 Ι
 +
 <
 <=
 <>
 =
 >=
 >
 =>

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 633
Variables Declaration

 ABS
 ACOS
 ADR
 AND
 AND_THEN
 ASIN
 ATAN
 BITADR
 BY
 CASE
 CONTINUE
 COS
 DO
 ELSE
 ELSIF
 END_CASE
 END_FOR
 END_IF
 END_REPEAT
 END_WHILE
 EXIT
 EXP
 EXPT
 FALSE
 FOR
 IF
 INI
 LIMIT
 LN
 LOG
 LOWER_BOUND
 MAX
 MIN
 MOD
 MOVE
 MUX
 NOT
 OR
 OR_ELSE
 R=
 REF=
 REPEAT
 RETURN
 ROL
 ROR

634 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

 S=
 SEL
 SHL
 SHR
 SIN
 SIZEOF
 SQRT
 SUPER
 TAN
 THEN
 THIS
 TO
 TRUE
 TRUNC
 TRUNC_INT
 UNTIL
 UPPER_BOUND
 WHILE
 XOR
Additionally, the conversion operators as listed in the Input Assistant are handled as keywords.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 635
Variables Declaration

Section 31.2
Variable Types

Variable Types

What Is in This Section?


This section contains the following topics:
Topic Page
Variable Types 637
Attribute Keywords for Variable Types 641
Variables Configuration - VAR_CONFIG 645

636 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Variable Types

Overview
This chapter provides further information on the following variable types:
 VAR local variables (see page 637)
 VAR_INPUT input variables (see page 637)
 VAR_OUTPUT output variables (see page 638)
 VAR_IN_OUT input and output variables (see page 638)
 VAR_GLOBAL global variables (see page 639)
 VAR_TEMP temporary variables (see page 639)
 VAR_STAT static variables (see page 639)
 VAR_EXTERNAL external variables (see page 640)
 VAR_INST instance variables (see page 640)

Local Variables - VAR


Between the keywords VAR and END_VAR, all local variables of a POU are declared
(see page 621). These have no external connection; in other words, they cannot be written from
the outside.
Consider the possibility of adding an attribute (see page 641) to VAR.
Example
VAR
iLoc1:INT; (* 1. Local Variable*)
END_VAR

Input Variables - VAR_INPUT


Between the keywords VAR_INPUT and END_VAR, all variables are declared (see page 621) that
serve as input variables for a POU. This means that at the call position, the value of the variables
can be provided along with a call.
Consider the possibility of adding an attribute (see page 641).
Example
VAR_INPUT
iIn1:INT (* 1. Inputvariable*)
END_VAR

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 637
Variables Declaration

Output Variables - VAR_OUTPUT


Between the keywords VAR_OUTPUT and END_VAR, all variables are declared that serve as output
variables of a POU. This means that these values are carried back to the POU that makes the call.
Consider the possibility of adding an attribute (see page 641) to VAR_OUTPUT.
Example
VAR_OUTPUT
iOut1:INT; (* 1. Outputvariable*)
END_VAR
Output variables in functions and methods:
According to IEC 61131-3 draft 2, functions (and methods) can have additional [Link] can
assign them in the call of the function as shown in the following example.
Example
fun(iIn1 := 1, iIn2 := 2, iOut1 => iLoc1, iOut2 => iLoc2);

Input and Output Variables - VAR_IN_OUT


Between the keywords VAR_IN_OUT and END_VAR, all variables are declared (see page 621) that
serve as input and output variables for a POU.
NOTE: With variables of IN_OUT type, the value of the transferred variable is changed (transferred
as a pointer, Call-by-Reference). This means that the input value for such variables cannot be a
constant. For this reason, even the VAR_IN_OUT variables of a function block cannot be read or
written directly from outside via <FBinstance>.<InOutVariable>.
NOTE: Do not assign bit-type symbols (such as %MXaa.b or BOOL variables that are located on
such a bit-type address) to BOOL-type VAR_IN_OUT parameters of function blocks. If any such
assignments are detected, they are reported as a detected Build error in the Messages view
(see EcoStruxure Machine Expert, Menu Commands, Online Help).
Example
VAR_IN_OUT
iInOut1:INT; (* 1. Inputoutputvariable *)
END_VAR

638 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Global Variables - VAR_GLOBAL


You can declare normal variables, constants, external, or remanent variables that are known
throughout the project as global variables. To declare global variables, use the global variable lists
(GVL). You can add a GVL by executing the Add Object command (by default in the Project menu).
Declare the variables locally between the keywords VAR_GLOBAL and END_VAR.
Consider the possibility of adding an attribute (see page 641) to VAR_GLOBAL.
A variable is recognized as a global variable by a preceding dot, for example, .iGlobVar1.
For detailed information on multiple use of variable names, the global scope operator dot (.)
and name spaces refer to the chapter Global Scope Operator (see page 865).
Global variables can only be declared in global variable lists (GVLs). They serve to manage global
variables within a project. You can add a GVL by executing the Add Object command (by default
in the Project menu).
NOTE: A variable defined locally in a POU with the same name as a global variable will have
priority within the POU.
NOTE: Global variables are initialized before local variables of POUs.

Temporary Variables - VAR_TEMP


This feature is an extension to the IEC 61131-3 standard.
Temporary variables get (re)initialized at each call of the POU. VAR_TEMP declarations are only
possible within programs and function blocks. These variables are also only accessible within the
body of the program POU or function block.
Declare the variables locally between the keywords VAR_TEMP and END_VAR.
NOTE: You can use VAR_TEMP instead of VAR to reduce the memory space needed by a POU (for
example inside a function block if the variable is only used temporarily).

Static Variables - VAR_STAT


This feature is an extension to the IEC 61131-3 standard.
Static variables can be used in function blocks, methods, and functions. Declare them locally
between the keywords VAR_STAT and END_VAR. They are initialized at the first call of the
respective POU.
Such as global variables, static variables do not lose their value after the POU in which they are
declared is left. They are shared between the POUs they are declared in (for example, several
function block instances, functions or methods share the same static variable). They can be used,
for example, in a function as a counter for the number of function calls.
Consider the possibility of adding an attribute (see page 641) to VAR_STAT.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 639
Variables Declaration

External Variables - VAR_EXTERNAL


These are global variables which are imported into the POU.
Declare them locally between the keywords VAR_EXTERNAL and END_VAR and in the global
variable list (GVL). The declaration and the global declaration have to be identical. If the global
variable does not exist, a message will display.
NOTE: It is not necessary to define variables as external. These keywords are provided in order to
maintain compatibility to IEC 61131-3.
Example
VAR_EXTERNAL
iVarExt1:INT; (* 1st external variable *)
END_VAR

Instance Variables - VAR_INST


If you declare a variable of a method as an instance variable by using the VAR_INST attribute, then
this variable is not stored on the method stack but on the stack of the function block instance. It
therefore behaves like other variables of the function block instance and is not reinitialized when
the method is called.
VAR_INST variables are only allowed in methods. You can access such variables within the
method only. Attributes such as CONST, RETAIN are not allowed in the declaration. The values of
the variables can be monitored in the declaration part of the method.
Example
METHOD meth_last : INT
VAR_INPUT
iVar : INT;
END_VAR
VAR_INST
iLast : INT := 0;
END_VAR
meth_last := iLast;
iLast := iVar;

640 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Attribute Keywords for Variable Types

Overview
You can add the following attribute keywords to the declaration (see page 621) of the variable type
in order to specify the scope:
 RETAIN: refer to Retain Variables (see page 641)
 PERSISTENT: refer to Persistent Variables (see page 642)
 CONSTANT: refer to Constants - CONSTANT (see page 643), Typed Literals (see page 644)

Remanent Variables - RETAIN, PERSISTENT


Remanent variables can retain their value throughout the usual program run period. Declare them
as retain variables or even more stringent as persistent variables.
The declaration determines the degree of resistance of a remanent variable in the case of resets,
downloads, or a reboot of the controller. In applications mainly the combination of both remanent
flags is used (refer to Persistent Variables (see page 642)).
NOTE: A VAR PERSISTENT declaration is interpreted in the same way as a
VAR PERSISTENT RETAIN or VAR RETAIN PERSISTENT.
NOTE: Use the command (see EcoStruxure Machine Expert, Menu Commands, Online Help) Add
all instance paths to take variables declared as persistent into the Persistent list object.

Retain Variables
Variables declared as retain variables are stored in a nonvolatile memory area. To declare this kind
of variable, use the keyword RETAIN in the declaration part of a POU or in a global variable list.
Example
VAR RETAIN
iRem1 : INT; (* 1. Retain variable*)
END_VAR
Retain variables maintain their value even after an unanticipated shutdown of the controller as well
as after a normal power cycle of the controller (or when executing the Online command Reset
Warm). At restart of the program, the retained values will be processed further on. The other (non-
retain) variables are newly initialized, either with their initialization values or with their default
initialization values (in case no initialization value was declared).
For example, you may want to use a retained value when an operation, such as piece counting in
a production machine, should continue after a power outage.
Retain variables, however, are reinitialized when executing the Online command Reset origin and,
in contrast to persistent variables, when executing the Online command Reset cold or in the course
of an application download.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 641
Variables Declaration

NOTE: Only the specific variables defined as VAR RETAIN are stored in nonvolatile memory.
However, local variables defined as VAR RETAIN in functions are NOT stored in nonvolatile
memory. Defining VAR RETAIN locally in functions is of no effect.
Using interfaces or function blocks out of System Configuration libraries in the retain program
section (VAR_RETAIN) will cause system exceptions, which may make the controller inoperable,
requiring a re-start.

WARNING
UNINTENDED EQUIPMENT OPERATION
 Do not use interfaces out of the SystemConfigurationItf library in the retain program section
(VAR_RETAIN).
 Do not use function blocks out of the SystemConfiguration library in the retain program section
(VAR_RETAIN).
Failure to follow these instructions can result in death, serious injury, or equipment damage.

NOTE: The libraries SystemConfigurationItf and SystemConfiguration are only available for
PacDrive controllers (PacDrive LMC Eco, PacDrive LMC Pro/Pro2).

Persistent Variables
Persistent variables are identified by keyword PERSISTENT (VAR_GLOBAL PERSISTENT). They
are only reinitialized when executing the Online command Reset origin. In contrast to retain
variables, they maintain their values after a download.
NOTE: Do not use the AT declaration in combination with VAR PERSISTENT.
Application example:
A counter for operating hours, which should continue counting even after a power outage or a
download. Refer to the synoptic table on the behavior of remanent variables (see page 643).
You can only declare persistent variables in a special global variable list of object type persistent
variables, which is assigned to an application. You can add only one such list to an application.
NOTE: A declaration with VAR_GLOBAL PERSISTENT has the same effect as a declaration with
VAR_GLOBAL PERSISTENT RETAIN or VAR_GLOBAL RETAIN PERSISTENT.
Like retain variables, the persistent variables are stored in a separate memory area.
Example
VAR_GLOBAL PERSISTENT RETAIN
iVarPers1 : DINT; (* 1. Persistent+Retain Variable App1 *)
bVarPers : BOOL; (* 2. Persistent+Retain Variable App1 *)
END_VAR

642 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

NOTE: Persistent variables can only be declared inside the Persistent list object. If they are
declared elsewhere, they will behave like retain variables and they will be reported as a detected
Build error in the Messages view. (Retain variables can be declared in the global variable lists or
in POUs.)
At each reload of the application, the persistent variable list on the controller will be checked
against that of the project. The list on the controller is identified by the application. In case of
inconsistencies, you will be prompted to reinitialize all persistent variables (see EcoStruxure
Machine Expert, Menu Commands, Online Help) of the application. Inconsistency can result from
renaming or removing or other modifications of the existing declarations in the list.
NOTE: Carefully consider any modifications in the declaration part of the persistent variable list and
the effect of the results regarding reinitialization.
You can add new declarations only at the end of the list. During a download, these are detected
as new and will not demand a reinitialization of the complete list. If you modify the name or data
type of a variable, this is handled as a new declaration and provokes a reinitialization of the variable
at the next online change or download.

Behavior of Remanent Variables


Consult the Programming Guide specific to your controller for further information on the behavior
of remanent variables.

Constants - CONSTANT
Constants are identified by the keyword CONSTANT. You can declare them locally or globally.
Syntax
VAR CONSTANT<identifier>:<type> := <initialization>;END_VAR
Example
VAR CONSTANT
c_iCon1:INT:=12; (* 1. Constant*)
END_VAR
Refer to the Operands chapter (see page 869) for a list of possible constants.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 643
Variables Declaration

Typed Literals
Basically, in using IEC constants, the smallest possible data type will be used. If another data type
has to be used, this can be achieved with the help of typed literals without the necessity of explicitly
declaring the constants. For this, the constant will be provided with a prefix which determines the
type.
Syntax
<type>#<literal>;

<type> specifies the desired data type


possible entries: BOOL, SINT, USINT, BYTE, INT, UINT, WORD,
DINT, UDINT, DWORD, REAL, LREAL
Write the type in uppercase letters.
<literal> specifies the constant
Enter data that fits within the data type specified under <type>.

Example
iVar1:=DINT#34;
If the constant cannot be converted to the target type without data loss, a message is issued.
You can use typed literals wherever normal constants can be used.

Constants in Online Mode


As long as the default setting Replace constants (File → Project Settings → Compile options) is
activated, constants in online mode have a symbol preceding the value in the Value column in
the declaration or watch view. In this case, they cannot be accessed by, for example, forcing or
writing.

644 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Variables Configuration - VAR_CONFIG

Overview
You can use the variable configuration to map function block variables on the process image that
is on the device I/Os. This avoids the need of specifying the definite address already in the
declaration of the function block variable. The assignment of the definite address (see page 887)
in this case is done centrally for all function block instances in a global VAR_CONFIG list.
For this purpose, you can assign incomplete addresses to the function block variables declared
between the keywords VAR and END_VAR. Use an asterisk to identify these addresses.

Identifier Syntax
<identifier> AT %<I|Q>* : <data type>
Example of the use of incompletely defined addresses:
FUNCTION_BLOCK locio
VAR
xLocIn AT %I*: BOOL := TRUE;
xLocOut AT %Q*: BOOL;
END_VAR
In this example, 2 local I/O variables are defined: a local input (%I*) and a local output variable
(%Q*).
Define the addresses in the variable configuration in a global variable list (GVL) as follows:

Step Action
1 Execute the Add Object command.
2 Add a Global Variable List (GVL) object to the Devices Tree.
3 Enter the declarations of the instance variables with the definite addresses
between the keywords VAR_CONFIG and END_VAR.

When defining the addresses, note the following:


 Specify the instance variables by the complete instance path and separate the individual POUs
and instance names from one another by periods.
 In the declaration, enter an address whose class (input/output) corresponds to that of the
incomplete specified address (%I*, %Q*) in the function block.
 Verify that the data type agrees with the declaration in the function block.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 645
Variables Declaration

Instance Variable Path Syntax


<instance variable path> AT %<I|Q><location> : <data type>;
Configuration variables whose instance path is invalid because the instance does not exist are
denoted as detected errors. An error is also detected if no definite address configuration exists for
an instance variable assigned to an incomplete address.
Example for a variable configuration
Assume that the following definition for function block locio - see the previous example - is given
in a program:
PROGRAM PLC_PRG
VAR
locioVar1: locio;
locioVar2: locio;
END_VAR
Then a corrected variable configuration (in a global variable list) will be:
VAR_CONFIG
PLC_PRG.[Link] AT %IX1.0 : BOOL;
PLC_PRG.[Link] AT %QX0.0 : BOOL;
PLC_PRG.[Link] AT %IX1.0 : BOOL;
PLC_PRG.[Link] AT %QX0.3 : BOOL;
END_VAR
NOTE: Changes on directly mapped I/Os are immediately shown in the process image, whereas
changes on variables mapped via VAR_CONFIG are not shown before the end of the responsible
task.
NOTE: In a global variable list, the keywords VAR_GLOBAL and VAR_CONFIG can only be used
exclusively.

646 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Section 31.3
Method Types

Method Types

FB_Init, FB_Reinit, and FB_ExitMethods

General Purpose of the Methods


You can explicitly use the methods FB_Init and FB_Reinit to influence the initialization of
function block variables as well as the behavior when exiting function blocks.
This chapter describes the methods, and the applications and effects of the methods in different
conditions that require variable initialization.

FB_Init
By default, the FB_Init method is available implicitly. It is used by EcoStruxure Machine Expert
to initialize a function block or a structure.
In order to influence the initialization, you can explicitly declare the FB_Init method by extending
the given default initialization code. This allows you to evaluate the return value.

FB_Reinit
The FB_Reinit method must be declared explicitly.
If the FB_Reinit method is available, it is called after the instance of the corresponding function
block has been copied (during an online change (see page 648) after modifications in the function
block declaration). It reinitializes the new instance module. The return value is not evaluated. In
order to achieve that the base function block is reinitialized, call FB_Reinit explicitly for that
function block. This allows you to evaluate the return value.

FB_Exit
The FB_Exit method must be declared explicitly.
If there is an implementation, then the method is called before the controller removes the code of
the function block instance (implicit call). The return value is not evaluated.
The following paragraphs provide use cases of these methods for different operating conditions.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 647
Variables Declaration

First Download
When you download an application to a controller that is in default state, the memory locations of
the variables are set to the desired initial state. The data areas of function blocks are set to the
desired values. You can influence this process by explicitly implementing FB_Init for function
blocks in the program code of the application.
The method parameters bInCopyCode set to FALSE and bInitRetains set to TRUE indicate
that a first download is being executed.

Online Change
When an Online Change command (see EcoStruxure Machine Expert, Menu Commands, Online
Help) is executed, the methods FB_Exit, FB_Init, and FB_Reinit can be used to influence the
initialization of function blocks.
During online change, the modifications made to the application in offline mode are downloaded to
the controller. The instances of function blocks are updated by the new instances as follows:
If you have only made changes in the implementation part of the function block and not in the
declaration part, the data areas are not replaced. The methods FB_Init, FB_Reinit, and
FB_Exit are not called.
If you have made changes in the declaration part of a function block, the copy process described
in the FB_Reinit paragraph (see page 647) is performed when the Online Change command
(see EcoStruxure Machine Expert, Menu Commands, Online Help) is executed. A list of the objects
that have been changed since the last download is provided in the Application Information dialog
box (see page 262). Open this dialog box by clicking the Details... button in the dialog box where
you select the option Login with online change.
The FB_Init and FB_Reinit method parameters bInCopyCode set to TRUE and
bInitRetains set to FALSE indicate that an online change is being executed.

Calls Executed During an Online Change


Executing the Online Change command can change the contents of addresses.

CAUTION
INVALID POINTER
Verify the validity of the pointers when using pointers on addresses and executing the Online
Change command.
Failure to follow these instructions can result in injury or equipment damage.

648 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

During an online change, the following calls are executed consecutively:

Step Action Comment


1 FB_Exit old_inst.FB_Exit(bInCopyCode := TRUE);
FB_Exit is called to initiate a cleanup process before the copy process is started.
It prepares the data for the next copy process and influences the state of the new
instance.
Other parts of the application are informed about the position changes that are
performed in the memory.
Keep in mind that variables of type POINTER or REFERENCE keep their values during
an online change and may no longer refer to the desired memory locations after the
process has been completed. Variables of type INTERFACE are adapted during online
change. External resources, such as socket, file, or other handles possibly can be
adopted by the new instance, and often need no separate treatment during online
change when the system resource is not affected by the online change copy process. If
needed, this must be treated in Init or Reinit implementations.
2 FB_Init new_inst.FB_Init(bInitRetains := FALSE, bInCopyCode := TRUE);
FB_Init can be used to perform specific operations during the online change process.
These are, for example, appropriately initializing variables at the new memory locations,
or providing information on the new position of certain variables to other parts of the
application.
3 Copy operation copy(&old_inst, &new_inst);
copy Existing values remain unchanged. For this purpose, they are copied from the old
instance into the new instance.
4 FB_Reinit new_inst.FB_Reinit();
The FB_Reinit method is called after the copy operation. It sets the variables of the
function block instance to defined values.
For example, you can appropriately initialize variables at the new memory locations, or
provide information on the new position of certain variables to other parts of the
application.
Implement the FB_Reinit method independent of online change because the method
can be called by the application anytime, whenever a function block is to be reset to the
original state.

NOTE: If you add the pragma (see page 699) {attribute no_copy} to a variable of a function
block, this variable will not be copied during online change; it will only be initialized.

Downloading an Updated Application


When you download an application to a controller that is already running an application, the
existing application will be replaced. You can use the FB_Exit method, for example, to assign a
defined state to external resources (such as socket or file handles).
The method parameters bInCopyCode set to FALSE and bInitRetains set to FALSE indicate
that a download of an updated application is being executed.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 649
Variables Declaration

Starting an Application
Before the first cycle of the tasks of an application is executed, the initial assignments are
processed.
Example:
T1 : TON := (PT:=t#500ms);
The assignments are executed after FB_Init has been called. To be able to verify the impacts of
these assignments, attach the {attribute call_after_init} pragma (see page 673) to a
function block and a method of a function block (for example, called MyInit). Insert this attribute
above the declaration part of the function block and above the declaration part of the corresponding
method. Attach this pragma also to function blocks that extend other function blocks which are
using the {attribute call_after_init} pragma. It is a good practice to assign the same
name, the same signature, and the same attribute to the corresponding method. To achieve this,
call SUPER^.MyInit. Select a method name of your choice (except FB_Init, FB_Reinit, and
FB_Exit). The method is called after the initial assignments have been processed and before the
tasks of an application are started.
NOTE: When the explicitly defined initialization code is executed, then the function block has
already been initialized completely via the implicit initialization code. Due to this, calling
SUPER^.FB_Init is not allowed.

Interface of the FB_Init Method


METHOD FB_Init : BOOL
VAR_INPUT
bInitRetains : BOOL; // TRUE: the retain variables are initialized (r
eset warm /reset cold)
bInCopyCode : BOOL; // TRUE the instance will be copied to the copy-
code afterward (online change)
END_VAR
The return value is not used.
In an FB_Init method, you can declare additional function block inputs. Assign the inputs in the
declaration of a function block instance.
Example: Method FB_Init for a function block serialdevice:
METHOD PUBLIC FB_Init : BOOL
VAR_INPUT
bInitRetains : BOOL; // Initialization of the retain variables
bInCopyCode : BOOL; // Instance is copied to copy-code
iCOMnum : INT; // additional input: number of the COM interface tha
t is to be observed
END_VAR

650 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Instantiation of function block serialdevice:


com1: serialdevice (iCOMnum:=1);
com0: serialdevice (iCOMnum:=0);

Interface of the FB_Reinit Method


METHOD FB_Reinit : BOOL

Interface of the FB_Exit Method


The parameter bInCopyCode. is mandatory.
METHOD FB_Exit : BOOL
VAR_INPUT
bInCopyCode : BOOL; // TRUE: the exit method is called in order to leave
the instance which will be copied afterwards (online change).
END_VAR

Derived Function Blocks


If a function block is derived from another function block, then the FB_Init method of the derived
function block must define the same parameters as the FB_Init method of the base function
block. However, you can add further parameters in order to implement a special initialization for
the instance.

Example for the Call Order of Derived Function Blocks for FB_Exit and FB_Init
The following is assumed for the POUs named in this list: SubFB EXTENDS MainFB and
SubSubFB EXTENDS SubFB:

Step Action
1 fbSubSubFb.FB_Exit(...);
2 fbSubFb.FB_Exit(...);
3 fbMainFb.FB_Exit(...);
4 fbMainFb.FB_Init(...);
5 fbSubFb.FB_Init(...);
6 fbSubSubFb.FB_Init(...);

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 651
Variables Declaration

Section 31.4
Pragma Instructions

Pragma Instructions

What Is in This Section?


This section contains the following topics:
Topic Page
Pragma Instructions 653
Message Pragmas 656
Conditional Pragmas 658
Region Pragmas 666

652 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Pragma Instructions

Overview
A pragma instruction is used to affect the properties of 1 or several variables concerning the
compilation or precompilation (preprocessor) process. This means that a pragma influences the
code generation.
NOTE: Consider that the available pragmas are not 1:1 implementations of C preprocessor
directives. They are handled as normal statements and therefore can only be used at statement
positions. They must not be used within an expression and not in the declaration part of editors.
A pragma can determine whether a variable will be initialized, monitored, added to a parameter list,
added to the symbol list (see page 714), or made invisible in the Library Manager. It can force
message outputs during the build process. You can use conditional pragmas to define how the
variable should be treated depending on certain conditions. You can also enter these pragmas as
definitions in the compile properties of a particular object.
You can use a pragma in a separate line, or with supplementary text in an implementation or
declaration editor line. Within the FBD/LD/IL editor, execute the command Insert Label and replace
the default text Label: in the arising text field by the pragma. In case you want to set a label as
well as a pragma, insert the pragma first and the label afterwards.
The pragma instruction is enclosed in curly brackets.

Syntax
{ <instruction text> }
The opening bracket can immediately come after a variable name. Opening and closing brackets
have to be in the same line.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 653
Variables Declaration

Correct Positions for a Conditional Pragma


{IF defined(abc)}
IF x =abc THEN
{IF defined(cde)}
y := 12;
{ELSE}
y :=13;
{END_IF}
END_IF
{ELSE}
IF x = 12 THEN
{IF defined(cde)}
y := 12;
{ELSE}
y :=13;
{END_IF}
END_IF

Incorrect Positions for a Conditional Pragma


NOTE: Do not use conditional pragmas at positions indicated in this negative example.

654 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Further Information
Depending on the type and contents of a pragma, the pragma operates on the subsequent
statement, respectively all subsequent statements, until 1 of the following conditions is met:
 It is ended by an appropriate pragma.
 The same pragma is executed with different parameters.
 The end of the code is reached.

The term code in this context refers to a declaration part, implementation part, global variable list,
or type declaration.
NOTE: Pragma instructions are case-sensitive.
If the compiler cannot meaningfully interpret the instruction text, the entire pragma is handled as a
comment and is skipped.
Refer to the following pragma types:
 Message Pragmas (see page 656)
 Attribute Obsolete (see page 709)
 Attribute Pragmas (see page 669)
 Conditional Pragmas (see page 658)
 Region Pragmas (see page 666)
 Attribute Symbol (see page 714)

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 655
Variables Declaration

Message Pragmas

Overview
You can use message pragmas to force the output of messages in the Messages view (by default
in the Edit menu) during the compilation (build) of the project.
You can insert the pragma instruction in an existing line or in a separate line in the text editor of a
POU. Message pragmas positioned within currently not defined sections of the implementation
code will not be considered when the project is compiled. For further information, refer to the
example provided with the description of the defined (identifier) in the chapter Conditional Pragmas
(see page 658).

Types of Message Pragmas


There are 4 types of message pragmas:

Pragma Icon Message Type


{text ’text string’} – text type
The specified text string will be displayed.
{info ’text string’} information
The specified text string will be displayed.
{warning digit ’text string’} alert type
The specified text string will be displayed.
In contrast to the global obsolete pragma
(see page 709), this alert is explicitly defined
for the local position.
{error ’text string’} error type
The specified text string will be displayed.

NOTE: For messages of types information, alert, and detected error, you can reach the source
position of the message - that is where the pragma is placed in a POU - by executing the command
Next Message. This is not possible for the text type.

Example of Declaration and Implementation in ST Editor


VAR
ivar : INT; {info 'TODO: should get another name'}
bvar : BOOL;
arrTest : ARRAY [0..10] OF INT;
i:INT;
END_VAR
arrTest[i] := arrTest[i]+1;
ivar:=ivar+1;
{warning 'This is an alert'}
{text 'Part xy has been compiled completely'}

656 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Output in Messages view:

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 657
Variables Declaration

Conditional Pragmas

Overview
The ExST (Extended ST) language supports several conditional Pragma Instructions
(see page 653), which affect the code generation in the precompile or compile process.
NOTE: Do not use any conditional pragmas in the declaration part. They are not regarded.
The implementation code which will be regarded for compilation can depend on the following
conditions:
 Is a certain data type or variable declared?
 Does a type or variable have a certain attribute?
 Does a variable have a certain data type?
 Is a certain POU or task available or is it part of the call tree, etc...

NOTE: It is not possible for a POU or GVL declared in the POUs Tree to use a {define...}
declared in an application. Definitions in applications will only affect interfaces inserted below the
respective application.

{define identifier string} During preprocessing, all subsequent instances of the identifier will be
replaced with the given sequence of tokens if the token string is not empty
(which is allowed and well-defined). The identifier remains defined and in
scope until the end of the object or until it is undefined in an {undefine}
directive. Used for conditional compilation (see page 659).
{undefine identifier} The preprocessor definition of the identifier (by {define}, see first
row of this table) will be removed and the identifier hence is undefined. If
the specified identifier is not currently defined, this pragma will be ignored.
{IF expr} These are pragmas for conditional compilation. The specified expressions
... exprs are required to be constant at compile time; they are evaluated in
{ELSIF expr} the order in which they appear until one of the expressions evaluates to a
... non-zero value. The text associated with the successful directive is
{ELSE} preprocessed and compiled normally; the others are ignored. The order of
... the sections is determinate; however, the elsif and else sections are
{END_IF} optional, and elsif sections may appear arbitrarily more often.
Within the constant expr, you can use several conditional compilation
operators (see page 659).
<expr> Within the constant expression expr of a conditional compilation pragma
({if} or {elsif}) (see previous table), you can use several operators.
These operators may not be undefined or redefined via {undefine} or
{define}, respectively.

You can also use these expressions as well as the definition completed by {define} in the
Compiler defines: text field in the Properties dialog box of an object (View → Properties → Build).

658 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Conditional Compilation Operators


The following operators are supported:
 defined (identifier) (see page 659)
 defined (variable:variable) (see page 660)
 defined (type:identifier) (see page 660)
 defined (pou:pou-name) (see page 660)
 hasattribute (pou: pou-name, attribute) (see page 661)
 hasattribute (variable: variable, attribute) (see page 662)
 hastype (variable:variable, type-spec) (see page 663)
 hasvalue (define-ident, char-string) (see page 664)
 NOT operator (see page 664)
 operator AND operator (see page 664)
 operator OR operator (see page 665)
 operator (see page 665)

defined (identifier)
This operator affects that the expression gets value TRUE, as soon as the identifier has been
defined with a {define} instruction and has not been undefined later by an {undefine}
instruction. Otherwise its value is FALSE.
Example on defined (identifier):
Precondition: There are 2 applications App1 and App2. Identifier pdef1 is defined in App2, but not
in App1.
{IF defined (pdef1)}
(* this code is processed in App1 *)
{info 'pdef1 defined'}
hugo := hugo + SINT#1;
{ELSE}
(* the following code is only processed in application App2 *)
{info 'pdef1 not defined'}
hugo := hugo - SINT#1;
{END_IF}
Additionally, an example for a message pragma (see page 656) is included:
Only information pdef1 defined will be displayed in the Messages view when the application is
compiled because pdef1 is defined. The message pdef1 not defined will be displayed when
pdef1 is not defined.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 659
Variables Declaration

defined (variable:variable)
When applied to a variable, its value is TRUE if this particular variable is declared within the current
scope. Otherwise it is FALSE.
Example on defined (variable:variable):
Precondition: There are 2 applications App1 and App2. Variable g_bTest is declared in App2,
but not in App1.
{IF defined (variable:g_bTest)}
(* the following code is only processed in application App2 *)
g bTest := x > 300;
{END_IF}

defined (type:identifier)
When applied to a type identifier, its value is TRUE if a type with that particular name is declared.
Otherwise it is FALSE.
Example on defined (type:identifier) :
Precondition: There are 2 applications App1 and App2. Data type DUT is defined in App2, but not
in App1.
{IF defined (type:DUT)}
(* the following code is only processed in application App1 *)
bDutDefined := TRUE;
{END_IF}

defined (pou:pou-name)
When applied to a POU name, its value is TRUE if a POU or an action with that particular POU
name is defined. Otherwise it is FALSE.
Example on defined (pou: pou-name):
Precondition: There are 2 applications App1 and App2. POU CheckBounds is available in App2,
but not in App1.
{IF defined (pou:CheckBounds)}
(* the following code is only processed in application App1 *)
arrTest[CheckBounds(0,i,10)] := arrTest[CheckBounds(0,i,10)] + 1;
{ELSE}
(* the following code is only processed in application App2 *)
arrTest[i] := arrTest[i]+1;
{END_IF}

660 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

hasattribute (pou: pou-name, attribute)


When applied to a POU, its value is TRUE if this particular attribute is specified in the first line
of the POUs declaration part.
Example on hasattribute (pou: pou-name, attribute):
Precondition: There are 2 applications App1 and App2. Function fun1 is defined in App1 and
App2, but in App1 has an attribute vision:
Definition of fun1 in App1:
{attribute 'vision'}
FUNCTION fun1 : INT
VAR_INPUT
i : INT;
END_VAR
VAR
END_VAR
Definition of fun1 in App2:
FUNCTION fun1 : INT
VAR_INPUT
i : INT;
END_VAR
VAR
END_VAR
Pragma instruction
{IF hasattribute (pou: fun1, 'vision')}
(* the following code is only processed in application App1 *)
ergvar := fun1 ivar);
{END_IF}

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 661
Variables Declaration

hasattribute (variable: variable, attribute)


When applied to a variable, its value is TRUE if this particular attribute is specified via the
{attribute} instruction in a line before the declaration of the variable.
Example on hasattribute (variable: variable, attribute):
Precondition: There are 2 applications App1 and App2. Variable g_globalInt is used in App1
and App2, but in App1 has an attribute DoCount :
Declaration of g_globalInt in App1
VAR_GLOBAL
{attribute 'DoCount'}
g_globalInt : INT;
g_multiType : STRING;
END_VAR
Declaration of g_globalInt in App2
VAR_GLOBAL
g_globalInt : INT;
g_multiType : STRING;
END_VAR
Pragma instruction
{IF hasattribute (variable: g_globalInt, 'DoCount')}
(* the following code line will only be processed in App1, because ther
e variable g_globalInt has got the attribute 'DoCount' *)
g_globalInt := g_globalInt + 1;
{END_IF}

662 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

hastype (variable:variable, type-spec)


When applied to a variable, its value is TRUE if this particular variable has the specified type-
spec. Otherwise it is FALSE.
Available data types of type-spec
 LREAL
 REAL
 LINT
 DINT
 INT
 SINT
 ULINT
 UDINT
 UINT
 USINT
 TIME
 LWORD
 DWORD
 WORD
 BYTE
 BOOL
 STRING
 WSTRING
 DATE_AND_TIME
 DATE
 TIME_OF_DAY

Example on operator hastype (variable: variable, type-spec):


Precondition: There are 2 applications App1 and App2. Variable g_multitype is declared in
App1 with type LREAL and in application App2 with type STRING:
{IF (hastype (variable: g_multitype, LREAL))}
(* the following code line will be processed only in App1 *)
g_multitype := (0.9 + g_multitype) * 1.1;
{ELSIF (hastype (variable: g_multitype, STRING))}
(* the following code line will be processed only in App2 *)
g_multitype := 'this is a multitalent';
{END_IF}

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 663
Variables Declaration

hasvalue (define-ident, char-string)


If the define (define-ident) is defined and it has the specified value (char-string), then its
value is TRUE. Otherwise it is FALSE.
Example on hasvalue (define-ident, char-string):
Precondition: Variable test is used in applications App1 and App2. It gets value 1 in App1 and
value 2 in App2:
{IF hasvalue(test,'1')}
(* the following code line will be processed in App1, because there var
iable test has value 1 *)
x := x + 1;
{ELSIF hasvalue(test,'2')}
(* the following code line will be processed in App1, because there var
iable test has value 2 *)
x := x + 2;
{END_IF}

NOT operator
The expression gets value TRUE when the inverted value of operator is TRUE. operator can
be one of the operators described in this chapter.
Example on NOT operator:
Precondition: There are 2 applications App1 and App2. POU PLC_PRG1 is used in App1 and
App2. POU CheckBounds is only available in App1:
{IF defined (pou: PLC_PRG1) AND NOT (defined (pou: CheckBounds))}
(* the following code line is only executed in App2 *)
bANDNotTest := TRUE;
{END_IF}

AND operator
The expression gets value TRUE if both operators are TRUE. operator can be one of the
operators listed in this table.
Example on AND operator:
Precondition: There are 2 applications App1 and App2. POU PLC_PRG1 is used in applications
App1 and App2. POU CheckBounds is only available in App1:
{IF defined (pou: PLC_PRG1) AND (defined (pou: CheckBounds))}
(* the following code line will be processed only in applications App1,
because only there "PLC_PRG1" and "CheckBounds" are defined *)
bORTest := TRUE;
{END_IF}

664 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

OR operator
The expression is TRUE if one of the operators is TRUE. operator can be one of the operators
described in this chapter.
Example on OR operator:
Precondition: POU PLC_PRG1 is used in applications App1 and App2. POU CheckBounds is only
available in App1:
{IF defined (pou: PLC_PRG1) OR (defined (pou: CheckBounds))}
(* the following code line will be processed in applications App1 and A
pp2, because both contain at least one of the POUs "PLC_PRG1" and "Chec
kBounds" *)
bORTest := TRUE;
{END_IF}

(operator)
(operator) braces the operator.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 665
Variables Declaration

Region Pragmas

Overview
Use region pragmas to group several lines into one block in a text editor. You can assign a name
to the block. Region pragmas can be nested.
The figure shows a program code that contains a region pragma in the extended and in the
collapsed view.

Region pragmas can be used in the ST editor and in the declaration editors. You can adapt syntax
highlighting to your individual requirements in the Tool → Options → Syntax Highlighting dialog
box (see EcoStruxure Machine Expert, Menu Commands, Online Help).

666 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Section 31.5
Attribute Pragmas

Attribute Pragmas

What Is in This Section?


This section contains the following topics:
Topic Page
Attribute Pragmas 669
User-Defined Attributes 670
Attribute call_after_global_init_slot 672
Attribute call_after_init 673
Attribute call_after_online_change_slot 674
Attribute call_before_global_exit_slot 675
Attribute call_on_type_change 676
Attribute const_replaced, Attribute const_non_replaced 677
Attribute 'dataflow' 678
Attribute displaymode 679
Attribute estimated-stack-usage 680
Attribute ExpandFully 681
Attribute global_init_slot 682
Attribute hide 684
Attribute hide_all_locals 685
Attribute initialize_on_call 686
Attribute init_namespace 687
Attribute init_On_Onlchange 688
Attribute instance-path 689
Attribute linkalways 690
Attribute monitoring 691
Attribute namespace 695
Attribute no_assign 697
Attribute no_check 698
Attribute no_copy 699
Attribute no-exit 700
Attribute no_init 701
Attribute no_instance_in_retain 702

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 667
Variables Declaration

Topic Page
Attribute no_virtual_actions 703
Attribute pingroup 705
Attribute pin_presentation_order_inputs/outputs 707
Attribute obsolete 709
Attribute pack_mode 710
Attribute qualified_only 711
Attribute reflection 712
Attribute subsequent 713
Attribute symbol 714
Attribute warning disable 716
Attribute enable_dynamic_creation 717

668 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Attribute Pragmas

Overview
You can assign attribute pragmas (see page 653) to a signature in order to influence the
compilation or pre-compilation that is the code generation.
There are user-defined attributes (see page 670), which you can use in combination with
conditional pragmas (see page 658).
Attributes are defined within the declaration part. An exception is made for the action and transition
objects which do not have a declaration part. You can define the attributes at the beginning of the
implementation part.
There are also the following predefined standard attribute pragmas:
 attribute displaymode (see page 679)
 attribute ExpandFully (see page 681)
 attribute global_init_slot (see page 682)
 attribute hide (see page 684)
 attribute hide_all_locals (see page 685)
 attribute initialize_on_call (see page 686)
 attribute init_namespace (see page 687)
 attribute init_On_Onlchange (see page 688)
 attribute instance-path (see page 689)
 attribute linkalways (see page 690)
 attribute monitoring (see page 691)
 attribute no_check (see page 698)
 attribute no_copy (see page 699)
 attribute no-exit (see page 700)
 attribute noinit (see page 701)
 attribute no_virtual_actions (see page 703)
 attribute obsolete (see page 709)
 attribute pack_mode (see page 710)
 attribute qualified_only (see page 711)
 attribute reflection (see page 712)
 attribute subsequent (see page 713)
 attribute symbol (see page 714)
 attribute warning disable (see page 716)

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 669
Variables Declaration

User-Defined Attributes

Overview
You can assign arbitrary user-defined or application-defined attribute pragmas to POUs, type
declarations, or variables. This attribute can be queried before compilation by conditional pragmas
(see page 658).

Syntax
{attribute 'attribute'}
This pragma instruction is valid for the subsequent POU declaration or variable declaration.
You can assign a user-defined attribute to:
 a POU or action
 a variable
 a data type

Example on POUs and Actions


Attribute vision for function fun1:
{attribute 'vision'}
FUNCTION fun1 : INT
VAR_INPUT
i : INT;
END_VAR
VAR
END_VAR

Example on Variables
Attribute DoCount for variable ivar :
PROGRAM PLC_PRG
VAR
{attribute 'DoCount'};
ivar:INT;
bvar:BOOL;
END_VAR

670 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Example on Types
Attribute aType for data type DUT_1:
{attribute 'aType'}
TYPE DUT_1 :
STRUCT
a:INT;
b:BOOL;
END_STRUCT
END_TYPE
For the usage of conditional pragmas, refer to the chapter Conditional Pragmas (see page 658).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 671
Variables Declaration

Attribute call_after_global_init_slot

Overview
All functions and programs containing this attribute in an own line above their declaration part are
called after the global initialization (GlobalInit). The calling sequence is determined by the
attribute value.
NOTE: Compile errors will be detected (during code generation) if VAR_INPUT declarations are
used in functions or methods that contain this attribute. The reason is that the input variables are
unknown when the function is called implicitly during online change.

Syntax
{attribute 'call_after_global_init_slot' := '<slot>'}
Replace <slot> by an integer value defining the priority within the calling sequence: The lower
the value, the earlier the call. In case of several signatures carrying the same value for the attribute,
the sequence of their initialization remains undefined.
If a method is provided with the attribute, then it is called for all instances of the concerned function
block. All instances are called within the specified slot; however, you cannot control the order
among the instances themselves.

672 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Attribute call_after_init

Overview
Use the pragma {attribute call_after_init} to define a method that is called implicitly
after the initialization of a function block instance. For performance reasons, attach the attribute
both to the function block itself and to the instance method to be called. The method has to be
called after FB_Init (see page 650) and after having applied the variable values of an initialization
expression in the instance declaration.
NOTE: Compile errors will be detected if VAR_INPUT declarations are used in methods that
contain this attribute. The reason is that the input variables are unknown when the method is called
implicitly during online change.

Syntax
{attribute 'call_after_init'}

Example
With the following definition:
{attribute 'call_after_init'}
FUNCTION_BLOCK FB
... <functionblock definition>
{attribute 'call_after_init'}
METHOD FB_AfterInit
... <method definition>
... declaration like the following:
inst : FB := (in1 := 99);
... will result in the following order of code processing:
inst.FB_Init();
inst.in1 := 99;
inst.FB_AfterInit();
So, in FB_Afterinit, you can react on the user-defined initialization.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 673
Variables Declaration

Attribute call_after_online_change_slot

Overview
All functions and programs containing this attribute in an own line above their declaration part are
called after an online change. The calling sequence is determined by the attribute value.
NOTE: Compile errors will be detected (during code generation) if VAR_INPUT declarations are
used in functions or methods that contain this attribute. The reason is that the input variables are
unknown when the function is called implicitly during online change.

Syntax
{attribute 'call_after_online_change_slot' := '<slot>'}
Replace <slot> by an integer value defining the priority within the calling sequence: The lower
the value, the earlier the call. If several modules have the same priority value for the attribute, then
the order in which they are called remains undefined.
If a method is provided with the attribute, then it is called for all instances of the concerned function
block. All instances are called within the specified slot; however, you cannot control the order
among the instances themselves.
NOTE: As the application cannot run during an online change, each code executed in this situation
can effect jitter. For this reason, minimize the code to be executed.

674 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Attribute call_before_global_exit_slot

Overview
All functions and programs containing this attribute in an own line above their declaration part are
called after the GlobalExit. The GlobalExit is executed before a new download, at a reset,
or during an online change and affects modules which are provided with an FB_exit method. The
calling sequence is determined by the attribute value.
NOTE: Compile errors will be detected (during code generation) if VAR_INPUT declarations are
used in functions or methods that contain this attribute. The reason is that the input variables are
unknown when the function is called implicitly during online change.

Syntax
{attribute 'call_before_global_exit_slot' := '<slot>'}
Replace <slot> by an integer value defining the priority within the calling sequence: The lower
the value, the earlier the call. If several modules have the same priority value for the attribute, then
the order in which they are called remains undefined.
If a method is provided with the attribute, then it is called for all instances of the concerned function
block. All instances are called within the specified slot; however, you cannot control the order
among the instances themselves.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 675
Variables Declaration

Attribute call_on_type_change

Overview
Attach the Attribute call_on_type_change pragma to methods of a function block A in
order to achieve that this method is called when the data type is changed for one or more function
blocks B, C, etc. that are referenced by A. The function blocks can be referenced by pointers
(see page 734) or references (see page 732).

Syntax
{attribute 'call_on_type_change':= '<name of the first referenced function block>|<name of the
second referenced function block>|<name of the nth referenced function block>'}
Insert the Attribute call_on_type_change above the first line in the method declaration.

Examples
Example of a function block with references:
FUNCTION_BLOCK FB_A
...
VAR
var_pt: POINTER TO FB_B;
var_ref: REFERENCE TO FB_C;
END_VAR
...
Example of a method that is called when data types are changed in the referenced function blocks
FB_B and FB_C:
{attribute 'call_on_type_change' := 'FB_B,
FB_C'}
METHOD METH_react_on_type_change : INT
VAR_INPUT
...

676 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Attribute const_replaced, Attribute const_non_replaced

Overview
Insert the pragma {attribute 'const_replaced'} in the declaration of a global constant if
you explicitly want to activate the compiler option Replace constants for this constant. This has the
effect that the constant becomes available in the Symbol Configuration.
Correspondingly, you can insert the pragma {attribute 'const_non_replaced'} in order
to deactivate the compiler option Replace constants.
The option Replace constants is pre-defined for the whole project in the Project Settings →
Compile options dialog box (see EcoStruxure Machine Expert, Menu Commands, Online Help).

Syntax
{attribute 'const_replaced'}
{attribute 'const_non_replaced'}

Example
The constants iTestCon and bTestCon are available in the Symbol Configuration because
Replace constants is deactivated by pragmas.
VAR_GLOBAL CONSTANT
{attribute 'const_non_replaced'}
iTestCon : INT := 12;
{attribute 'const_non_replaced'}
bTestCon : BOOL := TRUE;
rTestCon : REAL := 1.5;
END_VAR
VAR_GLOBAL
iTestVar : INT := 12;
bTestVar : BOOL := TRUE;
END_VAR

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 677
Variables Declaration

Attribute 'dataflow'

Overview
The pragma {attribute 'dataflow'} enables you to control the dataflow when processing
function blocks in the FBD/LD/IL editor. The attribute defines the input or output of a function block
that is used as the connection to the next or previous function block.
You can assign this attribute to only one input and one output in the declaration of the function
block.
For function blocks without the {attribute 'dataflow'}, the dataflow is determined
automatically as follows:
The connection is established between an output and an input of the same type. The uppermost
input and output variables of the function block are used first. If there are no variables with the
same data type, then the uppermost output is connected to the uppermost input of the next function
block.
You can also change the control flow in the editor by using the pointer to connect the connector
pins of the function block to other positions. For further information, refer to the description of
Inserting, Arranging, and Replacing Elements (see page 305).

Syntax
{attribute 'dataflow'}

Example
The FB and the previous function block are connected using the input variable i1. The FB and the
next function block are connected using the output variable outRes1.
FUNCTION_BLOCK FB
VAR_INPUT
r1 : REAL;
{attribute 'dataflow'}
i1 : INT;
i2 : INT;
r2 : REAL;
END_VAR
VAR_OUTPUT
{attribute 'dataflow'}
outRes1 : REAL;
out1 : INT;
g1 : INT;
g2 : REAL;
END_VAR

678 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Attribute displaymode

Overview
Use the pragma {attribute displaymode} to define the display mode of a single variable.
This setting will overwrite the global setting for the display mode of all monitoring variables done
via the commands of the submenu Display Mode (by default in the Online menu).
Position the pragma in the line above the line containing the variable declaration.

Syntax
{attribute 'displaymode':=<displaymode>}
The following definitions are possible:
- to display in binary format
{attribute 'displaymode':='bin'}
{attribute 'displaymode':='binary'}
- to display in decimal format
{attribute 'displaymode':='dec'}
{attribute 'displaymode':='decimal'}
- to display in hexadecimal format
{attribute 'displaymode':='hex'}
{attribute 'displaymode':='hexadecimal'}

Example
VAR
{attribute 'displaymode':='hex'}
dwVar1: DWORD;
END_VAR

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 679
Variables Declaration

Attribute estimated-stack-usage

Overview
The pragma {attribute 'estimated-stack-
usage' := '<allowed stack size in bytes>'} helps to prevent runtime systems with
an active stack check from issuing a message indicating that there is insufficient space in the stack.
This check is performed during the code generation. For recursive methods, you may want to
reduce the number of messages.

Syntax
{attribute 'estimated-stack-usage' := '<allowed stack size in bytes>'}

Insert Location
Insert this pragma in the line above the METHOD declaration in the declaration section of the
relevant method.

Example
{attribute 'estimated-stack-usage' := '99'}
METHOD xxMETH : INT
VAR_INPUT
END_VAR
VAR next: AFB;
big: ARRAY[0..100] OF DINT;
END_VAR
[Link]();

680 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Attribute ExpandFully

Overview
Use the pragma {attribute 'ExpandFully'} to make all members of arrays used as input
variables for referenced visualizations accessible within the Visualization Properties dialog box.

Syntax
{attribute 'ExpandFully'}

Example
Visualization visu is intended to be inserted in a frame within visualization visu_main.
As input variable arr is defined in the interface editor of visu and will later be available for
assignments in the Properties dialog box of the frame in visu_main.
In order to get the available particular components of the array in the Properties dialog box, insert
the attribute ExpandFully in the interface editor of visu directly before arr.
Declaration in the interface editor of visu:
VAR_INPUT
{attribute 'ExpandFully'}
arr : ARRAY[0..5] OF INT;
END_VAR
Resulting Properties dialog box of frame in visu_main:

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 681
Variables Declaration

Attribute global_init_slot

Overview
The pragma {attribute 'global_init_slot'} defines the sequence of initialization of
POUs or global variable lists.
Variables in a list (GVL or POU) are initialized from top to bottom.
If there are several global variable lists available, then the sequence of initialization is not defined.
The sequence of initialization is irrelevant for literal values, such as 1, 'hello', 3.6, or for
constants of base data types. However, if there are dependencies between the different lists, you
must define the sequence of initialization by yourself. To achieve this, you can assign a defined
initialization slot to a GVL or a POU using the attribute global_init_slot.

Syntax
{attribute 'global_init_slot' := '<slot>'}
Replace <slot> by an integer value that defines the position in the initialization order. The default
value for a POU (program, function block) is 50,000. The default value for a GVL is 49,990. A lower
value provokes an earlier initialization. In case of several POUs or GVLs carrying the same value
for the attribute global_init_slot, the sequence of their initialization remains undefined. This
will be indicated as a detected programming error in the Build category of the Messages view
(see EcoStruxure Machine Expert, Menu Commands, Online Help).
The pragma {attribute 'global_init_slot'} is valid for the entire GVL or POU and must
therefore be located above the VAR_GLOBAL or POU declaration.

682 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Example
The example includes 2 global variable lists GVL_1 and GVL_2 and a program PLC_PRG that uses
variables from both lists.
GVL_1 uses the variable B for initializing a variable A which is initialized in the GVL_2 with a value
of 1000.
GVL_1:
VAR_GLOBAL //49990
A : INT := GVL_2.B*100;
END_VAR
GVL_2:
VAR_GLOBAL //49990
B : INT := 1000;
C : INT := 10;
END_VAR
PLC_PRG:
PROGRAM PLC_PRG //50000
VAR
ivar: INT := GVL_1.A;
ivar2: INT;
END_VAR
ivar:=ivar+1;
ivar2:=GVL_2.C;
When building this example, a programming error is issued in the Build category of the Messages
view (see EcoStruxure Machine Expert, Menu Commands, Online Help) because GVL_2.B is
used for initializing GVL_1.A before GVL_2 has been initialized. To avoid this, use the
attribute global_init_slot in order to position GVL_2 before GVL_1 in the sequence of
initialization.
GVL_2 must have a slot value of 49989 or lower to achieve the earliest initialization within the
program.
GVL_2:
{attribute 'global_init_slot' := '100'}
VAR_GLOBAL
B : INT := 1000;
C : INT := 10;
END_VAR
You can even use GVL_2.C in the implementation part of PLC_PRG without a pragma because
both GVLs are initialized before the program in either case.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 683
Variables Declaration

Attribute hide

Overview
The pragma {attribute hide} helps you to prevent variables or even whole signatures from
being displayed within the functionality of listing components (see page 718) or the input assistant
or the declaration part in online mode. Only the variable subsequent to the pragma will be hidden.

Syntax
{attribute 'hide'}
To hide all local variables of a signature, use the attribute hide_all_locals (see page 685).

Example
The function block myPOU is implemented using the attribute:
FUNCTION_BLOCK myPOU
VAR_INPUT
a:INT;
{attribute 'hide'}
a_invisible: BOOL;
a_visible: BOOL;
END_VAR
VAR_OUTPUT
b:INT;
END_VAR
In the main program 2 instances of function block myPOU are defined:
PROGRAM PLC_PRG
VAR
POU1, POU2: myPOU;
END_VAR
When assigning an input value to POU1, the functionality of listing components (see page 718) that
works on typing POU1 in the implementation part of PLC_PRG will display the input variables a and
a_visible (and the output variable b). The hidden input variable a_invisible will not be
displayed.

684 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Attribute hide_all_locals

Overview
The pragma {attribute 'hide_all_locals'} helps you to prevent all local variables of a
signature from being displayed within the functionality of listing components (see page 718) or the
input assistant. This attribute is identical to assigning the attribute hide (see page 684) to each
particular of the local variables.

Syntax
{attribute 'hide_all_locals'}

Example
The function block myPOU is implemented using the attribute:
{attribute 'hide_all_locals'}
FUNCTION_BLOCK myPOU
VAR_INPUT
a:INT;
END_VAR
VAR_OUTPUT
b:BOOL;
END_VAR
VAR
c,d:INT;
END_VAR
In the main program 2 instances of function block myPOU are defined:
PROGRAM PLC_PRG
VAR
POU1, POU2: myPOU;
END_VAR
When assigning an input value to POU1, the functionality of listing components (see page 718) that
works on typing POU1 in the implementation part of PLC_PRG will display the variables a and b.
The hidden local variables c or d will not be displayed.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 685
Variables Declaration

Attribute initialize_on_call

Overview
You can add the pragma {attribute initialize_on_call} to input variables. An input of a
function block with this attribute will be initialized at any call of the function block. If an input expects
a pointer and if this pointer has been removed due to an online change, then the input will be set
to NULL.

Syntax
{attribute 'initialize_on_call'}

686 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Attribute init_namespace

Overview
A variable of type STRING or WSTRING, which is declared with the pragma
{attribute init_namespace} in a library, will be initialized with the current namespace of
that library. For further information, refer to the description of the library management
(see EcoStruxure Machine Expert, Functions and Libraries User Guide).

Syntax
{attribute 'init_namespace'}

Example
The function block POU is provided with all necessary attributes:
FUNCTION_BLOCK POU
VAR_OUTPUT
{attribute 'init_namespace'}
myStr: STRING;
END_VAR
Within the main program PLC_PRG an instance fb of the function block POU is defined:
PROGRAM PLC_PRG
VAR
fb:POU;
newString: STRING;
END_VAR
newString:=[Link];
The variable myStr will be initialized with the current namespace, for example [Link]. This
value will be assigned to newString within the main program.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 687
Variables Declaration

Attribute init_On_Onlchange

Overview
To initialize variables on online change, proceed as follows:

Step Action
1 Attach the pragma {attribute 'init_on_onlchange'} to a variable to initialize this
variable with each online change (see page 261).
2 Open the Build tab of the Properties dialog box of the application (see EcoStruxure Machine
Expert, Menu Commands, Online Help) and enter the string no_fast_online_change in the
Compiler defines box.

Syntax
{attribute 'init_on_onlchange' }

Insert Location
Insert this pragma in the line above the declaration of the variables.

688 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Attribute instance-path

Overview
You can add the pragma {attribute instance-path} to a local string variable. This local
string variable will be initialized with the Applications tree path of the POU to which this string
variable belongs. Applying this pragma presumes the use of the attribute reflection (see page 712)
for the corresponding POU and the additional attribute noinit (see page 701) for the string variable.

Syntax
{attribute 'instance-path'}

Example
Assume the following function block POU being equipped with the attribute 'reflection':
{attribute 'reflection'}
FUNCTION_BLOCK POU
VAR
{attribute 'instance-path'}
{attribute 'noinit'}
str: STRING;
END_VAR
In the main program PLC_PRG an instance myPOU of function block POU is called:
PROGRAM PLC_PRG
VAR
myPOU:POU;
myString: STRING;
END_VAR
myPOU();
myString:=[Link];
After initialization of instance myPOU, the string variable str gets assigned the path of instance
myPOU, for example: [Link].PLC_PRG.myPOU. This path will be assigned to
variable myString within the main program.
NOTE: The length of a string variable may be arbitrarily defined (even >255). However, the string
will be cut (from its back end) if it gets assigned to a string variable of a shorter length.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 689
Variables Declaration

Attribute linkalways

Overview
Use the pragma {attribute 'linkalways'} to mark POUs or global variable lists for the
compiler in a way so that they are always included into the compile information. As a result, objects
with this option will always be compiled and downloaded to the controller. The compiler option Link
always affects the same.

Syntax
{attribute 'linkalways'}
When you use the symbol configuration editor, the marked POUs are used as a basis for the
selectable variables for the symbol configuration.

Example
The global variable list GVLMoreSymbols is implemented making use of the attribute
'linkalways':
{attribute 'linkalways'}
VAR_GLOBAS
g_iVar1: INT;
g_iVar2: INT;
END_VAR
With this code, the symbols of GVLMoreSymbols become selectable in the Symbol configuration.

690 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Attribute monitoring

Overview
This attribute pragma allows you to get properties and function call results monitored in the online
view of the IEC editor or in a watch list.

Monitoring of Properties
Add the pragma in the line above the property definition. Then the name, type, and value of the
variables of the property will be displayed in the online view of the POU using the property or in a
watch list. Therein, you can also enter prepared values to force variables belonging to the property.
Example of property prepared for variable monitoring

Example of monitoring view

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 691
Variables Declaration

Monitoring the Current Value of the Property Variables


There are two different ways to monitor the current value of the property variables. For the
particular use case, consider carefully which attribute is suitable to actually get the desired value.
This will depend on whether operations on the variables are implemented within the property:
1. Pragma {attribute 'monitoring':='variable'}
An implicit variable is created for the property, which will get the current property value whenever
the application calls the set or get method. The latest value stored in this implicit variable will be
monitored.
Syntax
{attribute 'monitoring':='variable'}
2. Pragma {attribute 'monitoring':='call'}
You can only use this attribute for properties returning simple data types or pointers, not for
structured types.
The value to be monitored is read or written by a direct call of property: the monitoring service of
the runtime system executes the Get or Set method of the property function including the
implementation part of the property.
NOTE: When choosing this monitoring type instead of using an intermediate variable (see 1.
Pragma), consider possible side effects due to any operations implemented within the property.
NOTE: The monitoring pragma is also evaluated by the symbol configuration (see page 570). If
the value variable was specified, only a read-access on the property is available in the symbol
configuration.
Syntax
{attribute 'monitoring':='call'}

Monitoring of Function Call Results


You can use function call monitoring for any constant value that can be interpreted as 4 byte
numerical value (for example, INT, SHORT, LONG). For the other input parameters (for example,
BOOL), use a variable instead of a constant parameter. Add the pragma
{attribute 'monitoring':='call'} in the line above the function declaration. You can
then monitor this variable in the text editor view in online view of the POU in which a variable gets
assigned the result of a function call. You can also add the variable to a watch list for the same
purpose. To get the variable immediately provided within a watch view, execute the command Add
watchlist.

692 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Example 1: Functions FUN2 and FUN_BOOL2 with attribute 'monitoring'

Example 2: Call of functions FUN2 and FUN_BOOL2 in a program POU

Example 3: Function calls in online mode:

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 693
Variables Declaration

Monitoring of Variables with an Implicit Call of an External Function


For monitoring variables with an implicit call of an external function, the following conditions have
to be fulfilled:
 The function is marked with {attribute 'monitoring' := 'call'}.
 The function is marked as Link Always.
 The variable is marked with
{attribute 'monitoring_instead' := 'MyExternalFunction(a,b,c)'}.
 The values a,b,c are integer values and match the input parameters of the function to call.

NOTE: Forcing or writing of functions is not supported. You can implicitly implement forcing by
adding an additional input parameter for the particular function that serves as an internal force flag.
NOTE: Function monitoring is not possible on the compact runtime system.

694 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Attribute namespace

Overview
In combination with the attribute symbol (see page 714), the pragma {attribute namespace}
allows you to redefine the namespace of project variables. You can apply it on complete POUs,
like GVLs or programs, but not on particular variables. The concerned variables will be exported
with the new namespace definition to a symbol file and after a download of this file be available on
the controller.
This also allows you to access variables from POUs or visualizations which originally have got
different namespaces. For example, it allows you to run a previous EcoStruxure Machine Expert
visualization also in a later EcoStruxure Machine Expert environment.
For further information, refer to the description of the symbol configuration. A new symbol file will
be created at a download or online change of the project. It is downloaded to the controller together
with the application.

Syntax
{attribute 'namespace' := '<namespace>'}

Example of a Namespace Replacement for the Variables of a Program


{attribute 'namespace':='prog'}
PROGRAM PLC_PRG
VAR
{attribute 'symbol' := 'readwrite'}
iVar:INT;
bVar:BOOL;
END_VAR
If iVar, for example, was accessed by App1.PLC_PRG.ivar before, now it is accessible via
[Link].

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 695
Variables Declaration

Further Replacement Examples

Original Namespace Variable Namespace Replacement Access on the Variable


Within the Current
Project
App1.Lib2.GVL2 Var07 {attribute 'namespace':=''} .Var07
App1.GVL2 Var02 {attribute 'namespace':='Ext''} Ext.Var02
App1.GVL2.FB1 Var02 {attribute 'namespace':='App1.GVL2''} App1.GVL2.Var02

The replacements shown in the table result in the following entries in the symbol file:
<NodeList>
<Node name="">
<Node name="Var07" type="T_INT" access="ReadWrite">
</Node>
</NodeList>
<NodeList>
<Node name="Ext">
<Node name="Var02 " type="T_INT" access="ReadWrite"></Node>
</Node>
</NodeList>
<NodeList>
<Node name="App1">
<Node name="GVL2">
<Node name="Var02 " type="T_INT" access="ReadWrite"></Node>
</Node>
</Node>
</NodeList>

696 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Attribute no_assign

Overview
Insert the pragma {attribute 'no assign'} as first line of the declaration part of a function
block. This has the effect that compile errors are generated if an instance of the function block is
assigned to another instance of the same function block. For example, you might want to avoid
such assignments if the function block contains pointers. This could cause issues because they
are copied when values are assigned.
NOTE: Use the {attribute 'no assign'} in function blocks with internal pointers to help to
avoid assigning an instance of the function block to another instance of the same function block.

Assignment of Function Block Instances Containing Pointers


In this example, the value assignment of function block instances causes issues when fb_exit
is executed:
VAR_GLOBAL
inst1 : TestFB;
awsBufferLogFile : ARRAY [0..9] OF WSTRING(66);(* Area: 0, Offset:
0x1304 (4868)*)
LogFile : [Link] := (sFileName := '[Link]', pBuffer :=
ADR(awsBufferLogFile), udiMaxEntriesFile := UDINT#10000, udiMaxBuffere
d := UDINT#10, uiLineSize := UINT#64, wsSep := " ", xCircular := TRUE,
siDateFormat := SINT#0, siTimeFormat := SINT#0);
END_VAR
PROGRAM PLC_PRG
VAR
inst2 : TestFB := inst1;
LogFileNew : LogRecord := LogFile;
END_VAR
In this case, LogRecord manages a list of pointers. Different actions are executed for them if
fb_exit applies. When assigning function block instances, fb_exit will be executed twice
which causes an issue. Prevent this by adding the no_assign attribute to the declaration of
function block TestFB:
{attribute 'no_assign'}
FUNCTION_BLOCK TestFB
VAR_INPUT
...
The following compile errors are reported:
C0328: Assignment not allowed for type TestFB
C0328: Assignment not allowed for type LogRecord

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 697
Variables Declaration

Attribute no_check

Overview
You can add the pragma {attribute 'no_check'} to the declaration of a POU in order to
suppress the call of any POUs for implicit checks. As checking functions may influence the
performance, apply this attribute to POUs that are frequently called or already approved.
NOTE: This attribute has an automatic effect also on the child objects of a POU.
Example: In programs with this attribute, no check functions are executed. Not even for actions that
are assigned to this program.

Syntax
{attribute 'no_check'}

698 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Attribute no_copy

Overview
Generally, an online change will require a reallocation of instances, for example of POUs. The
value of the variables within this instance will get copied.
If, however, the pragma {attribute no_copy} is added to a variable, an online change copy
of this variable will not be performed; this variable will be initialized instead. This can be reasonable
in case of local pointer variable, pointing on a variable actually shifted by the online change (and
thus having a modified address).

Syntax
{attribute 'no_copy'}

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 699
Variables Declaration

Attribute no-exit

Overview
If a function block provides an FB_exit method (see page 647) , you can suppress its call for a
special instance with the help of assigning the pragma {attribute no-exit} to the function
block instance.

Syntax
{attribute 'no-exit'}

Example
Assume the method FB_Exit being added to a function block named POU:

In the main program PLC_PRG, 2 variables of type POU are instantiated:


PROGRAM PLC_PRG
VAR
POU1 : POU;
{attribute 'no-exit'}
POU2 : POU;
END_VAR
When variable bInCopyCode becomes TRUE within POU1, the method FB_Exit is called exiting
an instance that will get copied afterwards (online change). The method FB_Exit is not called in
context of the function block instance POU2.

700 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Attribute no_init

Overview
Variables provided with the pragma {attribute no_init} will not be initialized implicitly. The
pragma belongs to the variable declared subsequently.

Syntax
{attribute 'no_init'}
also possible
{attribute 'no-init'}
{attribute 'noinit'}

Example
PROGRAM PLC_PRG
VAR
A : INT;
{attribute 'no_init'}
B : INT;
END_VAR
If a reset is performed on the associated application, the integer variable A will be again initialized
implicitly with 0, whereas variable B maintains the value it is currently assigned to.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 701
Variables Declaration

Attribute no_instance_in_retain

Overview
The pragma {attribute 'no_instance_in_retain'} helps to avoid that the instance of a
certain function block instance is stored in the retain memory area.
Insert it as first line of the declaration of the function block. This has the effect that a message is
created in case any instance of the POU is declared as a RETAIN variable.

Syntax
{attribute 'no_instance_in_retain'}

702 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Attribute no_virtual_actions

Overview
This attribute is valid for function blocks, which are derived from a base function block implemented
in SFC, and which are using the main SFC workflow of the base class. The actions called therein
show the same virtual behavior as methods. This means that the base class actions may be
overridden by specific implementations related to the derived classes.
In order to help to prevent the action of the base class from being overridden, you can assign the
pragma {attribute 'no_virtual_actions'} to the base class.

Syntax
{attribute 'no_virtual_actions'}

Example
In the following example, the function block POU_SFC provides the base class to be extended by
the function block POU_child.

By use of the keyword SUPER, the derived class POU_child calls the workflow of the base class
that is implemented in SFC.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 703
Variables Declaration

The exemplary implementation of this workflow is restricted to the initial step. This is followed by
1 single step with associated step action ActiveAction concerned with the assignment of the
output variables:
an_int:=an_int+1; // counting the action calls
test_act:='father_action'; // writing string variable test_act
METH(); // Calling method METH for writing string var
iable test_meth
In case of the derived class POU_child, the step action will be overwritten by a specific implemen-
tation of ActiveAction. It differs from the original one by assigning the string 'child_action'
instead of 'father_action' to variable test_act.
Likewise, the method METH, assigning the string 'father_method' to variable test_meth
within the base class, will be overwritten such that test_meth will be assigned to
'child_method' instead.
The main program PLC_PRG will execute repeated calls to Child (an instance of POU_child). As
expected, the actual value of the output string report the call to action and method of the derived
class:

You can observe a different behavior if the base class is preceded by the attribute
'no_virtual_actions'
{attribute 'no_virtual_actions'}
FUNCTION_BLOCK POU_SFC...
Whereas method METH will still be overwritten by its implementation within the derived class, a call
of the step action will now result in a call of action ActiveAction of the base class. Therefore,
test_act will be assigned to string 'father_action'.

704 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Attribute pingroup

Overview
Insert the pragma {attribute 'pingroup' := '<groupname>'} in the declaration of a
function block, for grouping the input pins or output pins (parameters). Then, in the respective box
of the FBD and LD editor, each pin group can be displayed, folded, or unfolded. Multiple groups
are possible and are differentiated by their names. The particular state (folded/unfolded) per box
is saved in the project options.
Inputs and outputs without attribute pingroup are always displayed above any possible group or
groups.

Syntax
{attribute 'pingroup' := '<groupname>'}

Example
Two groups are defined:
 general (i1, out1)
 group1 (i2, g1)

r1, r2, outRes1 and g2 are always displayed.


FUNCTION_BLOCK FB
VAR_INPUT
r1 : REAL;
{attribute 'pingroup' := 'general'}
i1 : INT;
{attribute 'pingroup' := 'group1'}
i2 : INT;
r2 : REAL;
END_VAR
VAR_OUTPUT
outRes1 : REAL;
{attribute 'pingroup' := 'general'}
out1 : INT;
{attribute 'pingroup' := 'group1'}
g1 : INT;
g2 : REAL;
END_VAR

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 705
Variables Declaration

Pingroups in FBD editor

706 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Attribute pin_presentation_order_inputs/outputs

Overview
The pragmas define the order in which the inputs and outputs of a function block are displayed in
graphical language editors.

Syntax
{attribute 'pin_presentation_order_inputs' :=
'<input_k>,<input_l>,*,<input_m>'}
{attribute 'pin_presentation_order_outputs' :=
'<output_k>,<output_l>,*,<output_m>'}
The * character is the separator between the beginning and the end of the sorted list of input or
output parameters. The separator is replaced by undefined input or output parameters. If the
separator is not available, then the input or output parameters that are not defined explicitly in the
pragma will be added to the end of the sorted list.
The pragmas are inserted in the first line in the declaration part of a function block.
NOTE: The pragmas attribute 'pin_presentation_order_inputs and
attribute 'pin_presentation_order_outputs are not evaluated when the pragma
pingroup is used.

Example
{attribute 'pin_presentation_order_inputs' :=
'input_2,*,input_1'}
{attribute 'pin_presentation_order_outputs' :=
'output_2, output_1}
FUNCTION_BLOCK POU_BASE
VAR_INPUT
input_1 : BOOL;
input_2 : INT;
input_3 : INT;
input_4 : INT;
END_VAR
VAR_OUTPUT
output_1 : BOOL;
output_2 : INT;
output_3 : INT;
output_4 : BOOL;
END_VAR

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 707
Variables Declaration

This sample pragma definition leads to the following order of the input and output pins of the
POU_Base function block:

708 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Attribute obsolete

Overview
You can add an obsolete pragma to a data type definition in order to cause a user-defined alert
during a build, if the respective data type (structure, function block, and so on) is used within the
project. Thus, you can announce that the data type is not used any longer.
Unlike a locally used message pragma (see page 656), this alert is defined within the definition and
thus global for all instances of the data type.
This pragma instruction is valid for the current line or - if placed in a separate line - for the
subsequent line.

Syntax
{attribute 'obsolete' := 'user-defined text'}

Example
The obsolete pragma is inserted in the definition of function block fb1:
{attribute 'obsolete' := 'datatype fb1 not valid!'}
FUNCTION_BLOCK fb1
VAR_INPUT
i:INT;
END_VAR
...
If fb1 is used as a data type in a declaration, for example, fbinst: fb1; the following alert will
be dumped when the project is built:
'datatype fb1 not valid'

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 709
Variables Declaration

Attribute pack_mode

Overview
The pragma {attribute 'pack_mode'} defines the mode a data structure is packed while
being allocated. Set the attribute on top of a data structure. It influences the packing of the whole
structure.

Syntax
{attribute 'pack_mode' := '<value>'}
The placeholder <value> can have the following values:

pack_mode Associated packing method


0 Aligned
1 1-byte-aligned
2 2-byte-aligned
4 4-byte-aligned
8 8-byte-aligned

Depending on the structure, there may be no difference in the memory mapping of the individual
modes. For example, the memory allocation of a structure with pack_mode = 4 can correspond
to that of pack_mode = 8.
If structures are combined to arrays, bytes are added at the end of each structure to achieve that
the next structure is aligned.

Example
{attribute 'pack_mode' := '1'}
TYPE myStruct:
STRUCT
Enable: BOOL;
Counter: INT;
MaxSize: BOOL;
MaxSizeReached: BOOL;
END_STRUCT
END_TYPE
A variable of data type myStruct is instantiated aligned.
If the address of its component Enable is 0x0100, then the component Counter will follow on
address 0x0101, MaxSize on 0x0103 and MaxSizeReached on 0x0104.
With pack_mode=2, Counter would be found on 0x0102, MaxSize on 0x0104 and
MaxSizeReached on 0x0106.

710 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Attribute qualified_only

Overview
When the pragma {attribute 'qualified_only'} is assigned on top of a global variable
list, the variables of this list can only be accessed by using the global variable name, for example
gvl.g_var. This works even for variables of enumeration type. It can be useful to avoid name
mismatch with local variables.

Syntax
{attribute 'qualified_only'}

Example
Assume the following global variable list (GVL) is provided with attribute 'qualified_only':
{attribute 'qualified_only'}
VAR_GLOBAL
iVar:INT;
END_VAR
Within POU PLC_PRG, the global variable has to be called with the prefix GVL, as shown in this
example:
[Link]:=5;
The following incomplete call of the variable will be detected as an error:
iVar:=5;

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 711
Variables Declaration

Attribute reflection

Overview
The pragma {attribute 'reflection'} is attached to signatures. Due to performance
reasons, it is an obligatory attribute for POUs carrying the instance-path attribute
(see page 689).

Syntax
{attribute 'reflection'}

Example
Refer to the attribute instance-path example (see page 689).

712 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Attribute subsequent

Overview
The pragma {attribute 'subsequent'} forces variables to be allocated in a row at one
location in memory. If the list changes, the whole list will be allocated at a new location. This
pragma is used in programs and global variable lists (GVL).

Syntax
{attribute 'subsequent'}
NOTE: If one variable in the list is RETAIN, the whole list will be located in retain memory.
NOTE: VAR_TEMP in a program with attribute subsequent will be detected as a compiler error.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 713
Variables Declaration

Attribute symbol

Overview
The pragma {attribute 'symbol'} defines which variables are to be handled in the symbol
configuration.
The following export operations are performed on the variables:
 Variables are exposed as symbols in the symbol configuration.
 Variables are exported to an XML file in the project directory.
 Variables are exported to a file not visible and available on the target system for external access,
for example, by an OPC server.
Variables provided with that attribute will be downloaded to the controller even if they have not
been configured or are not visible within the symbol configuration editor.
NOTE: The symbol configuration has to be available as an object below the respective application
in the Tools Tree.

Syntax
{attribute 'symbol' := 'none' | 'read' | 'write' | 'readwrite'}
Access is only allowed on symbols coming from programs or global variable lists. For accessing a
symbol, specify the symbol name completely.
You can assign the pragma definition to particular variables or collectively to all variables declared
in a program.
 To be valid for a single variable, place the pragma in the line before the variable declaration.
 To be valid for all variables contained in the declaration part of a program, place the pragma in
the first line of the declaration editor. In this case, you can also modify the settings for particular
variables by explicitly adding a pragma.
The possible access on a symbol is defined by the following pragma parameters:
 'none'
 'read'
 'write'
 'readwrite'

If no parameter is defined, the default 'readwrite' will be valid.

714 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Example
With the following configuration, the variables A and B will be exported with read and write access.
Variable D will be exported with read access.
{attribute 'symbol' := 'readwrite'}
PROGRAM PLC_PRG
VAR
A : INT;
B : INT;
{attribute 'symbol' := 'none'}
C : INT;
{attribute 'symbol' := 'read'}
D : INT;
END_VAR

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 715
Variables Declaration

Attribute warning disable

Overview
You can use the pragma warning disable to suppress alerts. To enable the display of the alert,
use the pragma warning restore.

Syntax
{warning disable <compiler ID>}
Compiler ID: Every alert and every error detected by the compiler has a unique ID, which is
displayed at the beginning of the description.

Example Compiler Messages


------ Build started: Application: [Link] ------
typify code ...
C0196: Implicit conversion from unsigned Type 'UINT' to signed Type 'IN
T' : possible change of sign
Compile complete -- 0 errors

Example
VAR
{warning disable C0195}
test1 : UINT := -1;
{warning restore C0195}
test2 : UINT := -1;
END_VAR
In this example, an alert will be detected for test2. But no alert will be detected for test1.

716 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Attribute enable_dynamic_creation

Overview
The pragma enable_dynamic_creation is required for using the __NEW operator
(see page 851) for function blocks.

Syntax
{attribute 'enable_dynamic_creation'}
Insert the pragma in the first line in the declaration of the function block.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 717
Variables Declaration

Section 31.6
The Smart Coding Functionality

The Smart Coding Functionality

Smart Coding

Overview
Wherever identifiers (like variables or function block instances) can be entered (this can be inside
of the IEC 61131-3 language editors or inside Watch, Trace, Visualization windows), the smart
coding functionality is available. You can customize this feature in the SmartCoding section of the
Tools → Options dialog box.

Support in Identifier Insertion


The smart coding functionality helps to insert a correct identifier:
 If you - at any place, where a global identifier can be inserted - insert a dot (.) instead of the
identifier, a selection box will display. It lists the currently available global variables. You can
choose one of these elements and press the RETURN key to insert it behind the dot. You can
also insert the element by double-clicking the list entry.
 If you enter a function block instance or a structure variable followed by a dot (.), then a selection
box will appear. It lists the input and output variables of the corresponding function block or the
structure components. You can choose the desired element by pressing the RETURN key or by
double-clicking the list entry to insert it.
 In the ST editor, if you enter any string and press CTRL+SPACE, a selection box will display. It
lists the POUs and global variables available in the project. The first list entry, which is starting
with the given string, will be selected. Press the RETURN key to insert it into the program.

718 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Variables Declaration

Examples
The smart coding functionality offers components of structure:

The smart coding functionality offers components of a function block:

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 719
Variables Declaration

720 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Data Types
EIO0000002854 06/2019

Chapter 32
Data Types

Data Types

What Is in This Chapter?


This chapter contains the following sections:
Section Topic Page
32.1 General Information 722
32.2 Standard Data Types 723
32.3 Extensions to IEC Standard 729
32.4 User-Defined Data Types 738

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 721
Data Types

Section 32.1
General Information

General Information

Data Types

Overview
You can use standard data types (see page 723), user-defined data types (see page 738), or
instances of function blocks when programming in EcoStruxure Machine Expert. Each identifier is
assigned to a data type. This data type dictates how much memory space will be reserved and
what type of values it stores.

722 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Data Types

Section 32.2
Standard Data Types

Standard Data Types

Standard Data Types

Overview
EcoStruxure Machine Expert supports all data types (see page 722) described by standard
IEC61131-3.
The following data types are described in this chapter:
 BOOL (see page 723)
 Integer (see page 723)
 REAL / LREAL (see page 724)
 STRING (see page 725)
 WSTRING (see page 725)
 Time Data Types (LTIME) (see page 726)
 ANY and ANY_<type> (see page 726)

Additionally, some standard-extending data types (see page 729) are supported and you can
define your own user-defined data types (see page 738).

BOOL
BOOL type variables can have the values TRUE (1) and FALSE (0). 8 bits of memory space are
reserved.
For further information, refer to the chapter BOOL constants (see page 871).
NOTE: You can use implicit checks to validate the conversion of variable types (refer to the chapter
POUs for Implicit Checks (see page 192)).

Integer
The table lists the available integer data types. Each of the types covers a different range of values.
The following range limitations apply.

Data Type Lower Limit Upper Limit Memory Space


BYTE 0 255 8 bit
WORD 0 65,535 16 bit
DWORD 0 4,294,967,295 32 bit
LWORD 0 64
2 -1 64 bit
SINT –128 127 8 bit

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 723
Data Types

Data Type Lower Limit Upper Limit Memory Space


USINT 0 255 8 bit
INT –32,768 32,767 16 bit
UINT 0 65,535 16 bit
DINT –2,147,483,648 2,147,483,647 32 bit
UDINT 0 4,294,967,295 32 bit
LINT –263 263-1 64 bit
ULINT 0 264 -1 64 bit

NOTE: Conversions from larger types to smaller types may result in loss of information.
For further information, refer to the description of number constants (see page 877).
NOTE: You can use implicit checks to validate the conversion of variable types (refer to the chapter
POUs for Implicit Checks (see page 192)).

REAL / LREAL
The data types REAL and LREAL are floating-point types. They represent rational numbers.
Characteristics of REAL and LREAL data types:

Data type Lower limit Upper limit Memory Space


REAL -3.402823e+38 3.402823e+38 32 bit
LREAL -1.7976931348623158e+308 1.7976931348623158e+308 64 bit

NOTE: The support of data type LREAL depends on the target device. See in the corresponding
documentation whether the 64-bit type LREAL gets converted to REAL during compilation
(possibly with a loss of information) or persists.
NOTE: If a REAL or LREAL is converted to SINT, USINT, INT, UINT, DINT, UDINT, LINT, or ULINT
and the value of the real number is out of the value range of that integer, the result will be undefined
and will depend on the target system. Even an exception is possible in this case. In order to get
target-independant code, handle any range exceedance by the application. If the REAL/LREAL
number is within the integer value range, the conversion will work on all systems in the same way.
When assigning i1 := r1; an error is detected. Therefore, the previous note applies when using
conversion operators (see page 813) such as the following:
i1 := REAL_TO_INT(r1);
For further information, refer to REAL/LREAL constants (operands) (see page 878).
NOTE: You can use implicit checks to validate the conversion of variable types (refer to the chapter
POUs for Implicit Checks (see page 192)).

724 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Data Types

STRING
A STRING data type variable can contain any string of characters. The size entry in the declaration
determines the memory space to be reserved for the variable. It refers to the number of characters
in the string and can be placed in parentheses or square brackets. If no size specification is given,
the default size of 80 characters will be used.
In general, the length of a string is not limited. But string functions can only process strings with a
length of 1...255 characters. If a variable is initialized with a string too long for the variable data
type, the string will be correspondingly cut from right to left.
NOTE: The memory space needed for a variable of type STRING is 1 byte per character +
1 additional byte. This means, the "STRING[80]" declaration needs 81 bytes.
Example of a string declaration with 35 characters:
str:STRING(35):='This is a String';
For further information, refer to WSTRING and STRING Constants (Operands) (see page 879).
NOTE: You can use implicit checks to validate the conversion of variable types (refer to the chapter
POUs for Implicit Checks (see page 192)).

WSTRING
The WSTRING data type differs from the STRING type (ASCII) by interpretation in Unicode format,
and needing two bytes for each character and two bytes extra memory space (each only one in
case of a STRING).
The library [Link] provides functions for WSTRING strings.
The number of characters for WSTRING depends on the contained characters. A size of 10 for
WSTRING means that the length of the WSTRING can take a maximum of 10 WORDS. For some
characters in Unicode, multiple WORDS are required for coding a character so that the number of
characters does not have to correspond to the length of the WSTRING (10 in this case). The data
type requires one WORD of extra memory as it is terminated with a 0.
If a size is not defined, then 80 WORDS plus one for the terminating character 0 are allocated.
Examples:
wstr:WSTRING:="This is a WString";
wstr10 : WSTRING(10) := "1234567890";
For further information, refer to the following descriptions:
 STRING (see page 725)
 STRING constants (see page 879) (operands)

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 725
Data Types

Time Data Types


The data types TIME, TIME_OF_DAY (shortened TOD), DATE, and DATE_AND_TIME (shortened
DT) are handled internally like DWORD. Time is given in milliseconds in TIME and TOD. Time in
TOD begins at 12:00 A.M. Time is given in seconds in DATE and DT beginning with January 1,
1970 at 12:00 A.M.
LTIME
LTIME is supported as time base for high resolution timers. LTIME is of size 64 bit and resolution
nanoseconds.
Syntax of LTIME:
LTIME#<time declaration>
The time declaration can include the time units as used with the TIME constant and as:
 us : microseconds
 ns : nanoseconds

Example of LTIME:
LTIME1 := LTIME#1000d15h23m12s34ms2us44ns
Compare to TIME size 32 bit and resolution milliseconds (see page 726).
For further information, refer to the following descriptions:
 Data Types (see page 722)
 TIME constants (see page 872)
 DATE constants (see page 874)
 DATE_AND_TIME constants (see page 875)
 TIME_OF_DAY constants (see page 876)

NOTE: You can use implicit checks to validate the conversion of variable types (refer to the chapter
POUs for Implicit Checks (see page 192)).

ANY / ANY_<type>
When you implement a function, and one of the function inputs (VAR_INPUT) has a generic
IEC data type (ANY or ANY_<type>), then the data type of the call parameter is not defined as
unique. Variables of different data types can be passed to this function. The value passed and its
type can be requested within the function via a predefined structure.
Generic IEC data types that allow the use of elementary data types for function inputs:

Hierarchy of generic data types Elementary data types


ANY ANY_BIT – BOOL, BYTE, WORD, DWORD, LWORD
ANY_DATE – DATE_AND_TIME, DATE, TIME_OF_DAY
ANY_NUM ANY_REAL REAL, LREAL
ANY_INT USINT, UINT, UDINT, ULINT
SINT, INT, DINT, LINT
ANY_STRING – STRING, WSTRING

726 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Data Types

Example:
FUNCTION ANYBIT_TO_BCD : DWORD
VAR_INPUT
value : ANY_BIT;
END_VAR
If the function ANYBIT_TO_BCD is called, then a variable of data type BOOL, BYTE, WORD,
DWORD, or LWORD can be passed to the function as a parameter.
Predefined structure:
When compiling the code, an ANY data type is replaced internally with the following structure:
TYPE AnyType :
STRUCT
// the type of the actual parameter
typeclass : __SYSTEM.TYPE_CLASS ;
// the pointer to the actual parameter
pvalue : POINTER TO BYTE;
// the size of the data, to which the pointer points
diSize : DINT;
END_STRUCT
END_TYPE
The actual call parameter assigns the structure elements at runtime.
Example:
This code example compares whether the two passed variables have the same type and the same
value.
FUNCTION Generic_Compare : BOOL
VAR_INPUT
any1 : ANY;
any2 : ANY;
END_VAR
VAR
icount: DINT;
END_VAR

Generic_Compare := FALSE;
IF [Link] <> [Link] THEN
RETURN;
END_IF
IF [Link] <> [Link] THEN
RETURN;
END_IF

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 727
Data Types

// Byte comparison
FOR icount := 0 TO [Link]-1 DO
IF [Link][iCount] <> [Link][iCount] THEN
RETURN;
END_IF
END_FOR
Generic_Compare := TRUE;
RETURN;
// END_FUNCTION
Also refer to the description of the __VARINFO operator (see page 863).

728 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Data Types

Section 32.3
Extensions to IEC Standard

Extensions to IEC Standard

Overview
This chapter lists the data types that are supported by EcoStruxure Machine Expert in addition to
the standard IEC 61131-3.

What Is in This Section?


This section contains the following topics:
Topic Page
UNION 730
BIT 731
References 732
Pointers 734

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 729
Data Types

UNION

Overview
As an extension to the IEC 61131-3 standard, you can declare unions in user-defined types.
The components of a union have the same offset. This means that they occupy the same storage
location. Thus, assuming a union definition as shown in the following example, an assignment to
name.a also manipulates name.b.

Example
TYPE name: UNION
a : LREAL;
b : LINT;
END_UNION
END_TYPE

730 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Data Types

BIT

Overview
You can use the BIT data type only for particular variables within Structures (see page 744). The
possible values are TRUE (1) and FALSE (0).
A BIT element consumes 1 bit of memory space and allows you to address single bits of a structure
by name (for further information, refer to the paragraph Bit Access in Structures (see page 745)).
Bit elements which are declared one after another will be combined in bytes. In contrast to BOOL
types (see page 723), where 8 bits are reserved in any case, the use of memory space can get
optimized. On the other hand, the access to bits takes definitely more time. For that reason, use
the BIT data type if you want to store several boolean pieces of information in a compact format.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 731
Data Types

References

Overview
This data type is available in extension to the IEC 61131-3 standard.
A reference stores the address of an object (a variable) that is located elsewhere in memory; in this
respect, the behavior is identical to a pointer.
In contrast to a pointer, a variable behaves like an object when the syntax is concerned.
Additionally, variables declared as REFERENCE provide the following advantages compared to
POINTERS:
 A reference does not have to be dereferenced explicitly (with ^) to access the contents of the
referenced object.
 When passing values to input parameters of functions/function blocks/methods, the following
applies: If an input is declared as REFERENCE TO <data type>, a variable of the
corresponding <data type> can be passed (refInput := variable instead of
ptrInput :=ADR(variable)).
 The compiler verifies that references of the same data type are assigned to each other.

For further information, refer to the Assignment operator REF description (see page 414).

Syntax
<identifier> : REFERENCE TO <data type>

Example Declaration
A : REFERENCE TO DUT;
B : DUT;
C : DUT;
A REF= B; // corresponds to A := ADR(B);
A := C; // corresponds to A^ := C;
NOTE: It is not possible to declare references like REFERENCE TO REFERENCE or ARRAY OF
REFERENCE or POINTER TO REFERENCE.

732 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Data Types

Check for Valid References


You can use the operator __ISVALIDREF to check whether a reference points to a valid value that
is a value unequal to 0.
Syntax
<boolean variable> := __ISVALIDREF(identifier, declared with type <REFE
RENCE TO <datatype>);
<boolean variable> will be TRUE, if the reference points to a valid val
ue, FALSE if not.
Example
Declaration
ivar : INT;
ref_int : REFERENCE TO INT;
ref_int0: REFERENCE TO INT;
testref: BOOL := FALSE;
Implementation
ivar := ivar +1;
ref_int REF= ivar;
ref_int0 REF= 0;
testref := __ISVALIDREF(ref_int); (* will be TRUE, because ref_int po
ints to ivar, which is unequal 0 *)
testref := __ISVALIDREF(ref_int0); (* will be FALSE, because ref_int is
set to 0 *)

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 733
Data Types

Pointers

Overview
As an extension to the IEC 61131-3 standard, you can use pointers.
Pointers save addresses while an application program is running. A pointer can point to a variable
with any data type (see page 722). The possibility of using an implicit pointer monitoring function
is described further below in the paragraph CheckPointer function (see page 736).

Syntax of a Pointer Declaration


<identifier>: POINTER TO <data type>;
Dereferencing a pointer means to obtain the value currently stored at the address to which it is
pointing. You can dereference a pointer by adding the content operator ^ (ASCII caret or circumflex
symbol) (see page 810) after the pointer identifier. See pt^ in the example below.
You can use the ADR address operator (see page 809) to assign the address of a variable to a
pointer.

Example
VAR
pt:POINTER TO INT; (* of pointer pt *)
var_int1:INT := 5; (* declaration of variables var_int1 and var_int2 *
)
var_int2:INT;
END_VAR
pt := ADR(var_int1); (* address of var_int1 is assigned to pointer pt *
)
var_int2:= pt^; (* value 5 of var_int1 gets assigned to var_int2 v
ia dereferencing of pointer pt; *)

734 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Data Types

Function Pointers
EcoStruxure Machine Expert also supports function pointers. These pointers can be passed to
external libraries, but it is not possible to call a function pointer within an application in the
programming system. The runtime function for registration of callback functions (system library
function) expects the function pointer, and, depending on the callback for which the registration
was requested, the respective function will be called implicitly by the runtime system (for example,
at STOP). In order to enable such a system call (runtime system), set the respective properties (by
default under View → Properties... → Build) for the function object.
You can use the ADR operator (see page 809) on function names, program names, function block
names, and method names. Since functions can move after online change, the result is not the
address of the function, but the address of a pointer to the function. This address is valid as long
as the function exists on the target.
Executing the Online Change command can change the contents of addresses.

CAUTION
INVALID POINTER
Verify the validity of the pointers when using pointers on addresses and executing the Online
Change command.
Failure to follow these instructions can result in injury or equipment damage.

Index Access to Pointers


As an extension to the IEC 61131-3 standard, index access [] to variables of type POINTER,
STRING (see page 725) and WSTRING (see page 725) is allowed.
 pint[i] returns the base data type.
 Index access on pointers is arithmetic:
If the index access is used on a variable of type pointer, the offset pint[i] equates to
(pint + i * SIZEOF(base type))^. The index access also performs an implicit
dereferencing on the pointer. The result type is the base type of the pointer.
Consider that pint[7] does not equate to (pint + 7)^.
 If the index access is used on a variable of type STRING, the result is the character at offset
index-expr. The result is of type BYTE. str[i] will return the i-th character of the string as
a SINT (ASCII).
 If the index access is used on a variable of type WSTRING, the result is the character at offset
index-expr. The result is of type WORD. wstr[i] will return the i-th character of the string
as INT (Unicode).
NOTE: You can also use References (see page 732). In contrast to a pointer, references directly
affect a value.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 735
Data Types

CheckPointer Function
To monitor pointer access during runtime, you can use the implicit monitoring function
CheckPointer. You can adapt it, if required. To achieve this, add the POUs for implicit checks
object (see page 192) to the application. Activate the check box related to the category Pointer
Checks.
NOTE: You have to implement the CheckPointer function during machine commissioning to
verify whether the passed pointer refers to a valid memory address and whether the alignment of
the referenced memory area fits to the data type of the variable that the pointer points to.
CheckPointer monitors variables of type REFERENCE TO in a similar way.
NOTE: There is no implicit call of the check function for the THIS pointer.
Template:
Declaration part:
// Implicitly generated code : DO NOT EDIT
FUNCTION CheckPointer : POINTER TO BYTE
VAR_INPUT
ptToTest : POINTER TO BYTE;
iSize : DINT;
iGran : DINT;
bWrite: BOOL;
END_VAR
When called, the following input parameters are provided to the function:
 ptToTest: Target address of the pointer
 iSize: Size of referenced variable; the data type of iSize has to be integer-compatible and
has to cover the maximum potential data size stored at the pointer address.
 iGran: Granularity of the access that is the largest non-structured data type used in the
referenced variable; the data type of iGran has to be integer-compatible
 bWrite: Type of access (TRUE= write access, FALSE= read access); the data type of bWrite
has to be BOOL.

736 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Data Types

Implementation of the CheckPointer Function for PacDrive Controllers


The implementation of the CheckPointer function for PacDrive controllers (PacDrive LMC Eco /
PacDrive LMC Pro/Pro2) is to generate a system runtime exception and to write a call stack to the
message logger when the memory address or the alignment is invalid.
Implementation part:
CheckPointer := ptToTest;
IF ptToTest = 0 THEN
FC_DiagMsgWrite(4, 'CP = 0');
FC_SysUserCallStack(0);
ELSE
CheckPointer := ptToTest;
END_IF

Implementation of the CheckPointer Function for Optimized Controllers


The implementation of the CheckPointer function for Optimized Controllers (for example,
Modicon M241 Logic Controller) is to return the passed pointer.
Implementation part (incomplete):
// No standard way of implementation. Fill your own code here
CheckPointer := ptToTest;
In case of a positive result of the check, the unmodified input pointer will be returned (ptToTest).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 737
Data Types

Section 32.4
User-Defined Data Types

User-Defined Data Types

What Is in This Section?


This section contains the following topics:
Topic Page
Defined Data Types 739
Arrays 740
Structures 744
Enumerations 746
Subrange Types 749

738 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Data Types

Defined Data Types

Overview
Additionally, to the standard data types, you can define special data types within a project.
You can define them via creating DUT (Data Unit Type) objects in the POUs tree or Devices tree
or within the declaration part of a POU.
See the recommendations on the naming of objects (see page 624) in order to make it as unique
as possible.
See the following user-defined data types:
 arrays (see page 740)
 structures (see page 744)
 enumerations (see page 746)
 subrange types (see page 749)
 references (see page 732)
 pointers (see page 734)

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 739
Data Types

Arrays

Overview
One, two and three-dimensional fields (arrays) are supported as elementary data types. You can
define arrays both in the declaration part of a POU and in the global variable lists. You can also
use implicit boundary checks (see page 742). You can declare arrays with defined length and with
variable length.
The data type ARRAY with variable length can only be declared for VAR_IN_OUT variables of
function blocks, methods, and functions. Use the operators
LOWER_BOUND(<array name>,<dim>) and UPPER_BOUND(<array name>,<dim>) to get
the lower and upper limits of this array.

Syntax for the Declaration of an Array with Defined Length


<Array_Name> : ARRAY [<ll1>..<ul1>,<ll2>..<ul2>,<ll3>..<ul3>] OF <elem. type>
ll1, ll2, ll3 identify the lower limit of the field range.
ul1, ul2, and ul3 identify the upper limit of the field range.
The range values have to be of type integer.

Example for the Declaration of an Array with Defined Length


Card_game: ARRAY [1..13, 1..4] OF INT;

Syntax for the Declaration of an Array with Variable Length


<Array name> : ARRAY [*|, *|, *] OF <data type>;

740 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Data Types

Example for the Declaration of an Array with Variable Length


FUNCTION SUM: INT; // Onedimensional
arrays of variable lengths can be
passed to this addition function.
VAR_IN_OUT
A: ARRAY [*] OF INT;
END_VAR
VAR
i, sum2 : DINT;
END_VAR
sum2:= 0;
FOR i:= LOWER_BOUND(A,1) TO UPPER_BOUND(A,
1) // The length of the respective array is
determined.
sum2:= sum2 + A[i];
END_FOR;
SUM:= sum2;

Initializing Arrays
Example for complete initialization of an array
arr1 : ARRAY [1..5] OF INT := [1,2,3,4,5];
arr2 : ARRAY [1..2,3..4] OF INT := [1,3(7)]; (* short for 1,7,7,7 *)
arr3 : ARRAY [1..2,2..3,3..4] OF INT := [2(0),4(4),2,3];
(* short for 0,0,4,4,4,4,2,3 *)
Example of the initialization of an array of a structure
Structure definition
TYPE STRUCT1
STRUCT
p1:int;
p2:int;
p3:dword;
END_STRUCT
END_TYPE
Array initialization
ARRAY[1..3] OF STRUCT1:= [(p1:=1,p2:=10,p3:=4723),(p1:=2,p2:=0,p3:=299)
,(p1:=14,p2:=5,p3:=112)];
Example of the partial initialization of an array
arr1 : ARRAY [1..10] OF INT := [1,2];
Elements where no value is pre-assigned are initialized with the default initial value of the basic
type. In the previous example, the elements arr1[3]...arr1[10] are therefore initialized with
0.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 741
Data Types

Example of the Initialization of an Array of Function Blocks with Additional Parameters in FB_Init
Example of a function block FB and method FB_Init with two parameters:
FUNCTION_BLOCK FB
VAR
_nId : INT;
_lrIn : LREAL;
END_VAR
METHOD FB_Init : BOOL
VAR_INPUT
bInitRetains : BOOL;
bInCopyCode : BOOL;
nId : INT;
lrIn : LREAL;
END_VAR
_nId := nId;
_lrIn := lrIN;
Example of array declaration with initialization:
PROGRAM PLC_PRG
VAR
inst : FB(nId := 11, lrIn := 33.44);
ainst : ARRAY [0..1, 0..1] OF FB[(nId :=
12, lrIn := 11.22), (nId := 13, lrIn :=
22.33), (nId := 14, lrIn := 33.55),(nId := 15,
lrIn := 11.22)];
END_VAR

Accessing Array Elements


In a two-dimensional array, access the elements as follows:
<Array name>[Index1,Index2]
Example:
Card_game [9,2]

Check Functions on Array Bounds


In order to access an array element properly during runtime, the function CheckBounds has to be
available to the application. For information on inserting the function, refer to the description of the
POUs for implicit checks function (see page 192).
This check function has to treat boundary violations by an appropriate method (for example, by
setting a detected error flag or adjusting the index). The function is called implicitly as soon as a
variable of type ARRAY is assigned.

742 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Data Types

Example for the Use of Function CheckBounds


The default implementation of the check function is the following:
Declaration part:
// Implicitly generated code : DO NOT EDIT
FUNCTION CheckBounds : DINT
VAR_INPUT
index, lower, upper: DINT;
END_VAR
Implementation part:
// Implicitly generated code : Only an Implementation suggestion
IF index < lower THEN
CheckBounds := lower;
ELSIF index > upper THEN
CheckBounds := upper;
ELSE
CheckBounds := index;
END_IF
When called, the function gets the following input parameters:
 index: field element index
 lower: the lower limit of the field range
 upper: the upper limit of the field range

As long as the index is within the range, the return value is the index itself. Otherwise, in
correspondence to the range violation either the upper or the lower limit of the field range will be
returned.

Exceeding the Upper Limit of the Array a


The upper limit of the array a is exceeded in the following example:
PROGRAM PLC_PRG
VAR
a: ARRAY[0..7] OF BOOL;
b: INT:=10;
END_VAR
a[b]:=TRUE;
In this example, the implicit call to the CheckBounds function preceding the assignment affects
that the value of the index is changed from 10 into the upper limit 7. Therefore, the value TRUE is
assigned to the element a[7] of the array. This is how you can correct attempted access outside
the array range via the function CheckBounds.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 743
Data Types

Structures

Overview
Create structures in a project as DUT (Data Type Unit) objects via the Add Object dialog box.
They begin with the keywords TYPE and STRUCT and end with END_STRUCT and END_TYPE.

Syntax
TYPE <structurename>:
STRUCT
<declaration of variables 1>
...
<declaration of variables n>
END_STRUCT
END_TYPE
<structurename> is a type that is recognized throughout the project and can be used like a
standard data type.
Nested structures are allowed. The only restriction is that variables may not be assigned to
addresses (the AT declaration is not allowed).

Example
Example for a structure definition named Polygonline:
TYPE Polygonline:
STRUCT
Start:ARRAY [1..2] OF INT;
Point1:ARRAY [1..2] OF INT;
Point2:ARRAY [1..2] OF INT;
Point3:ARRAY [1..2] OF INT;
Point4:ARRAY [1..2] OF INT;
End:ARRAY [1..2] OF INT;
END_STRUCT
END_TYPE

Initialization of Structures
Example:
Poly_1:polygonline := ( Start:=[3,3], Point1:=[5,2], Point2:=[7,3], Poi
nt3:=[8,5], Point4:=[5,7], End:= [3,5]);
Initializations with variables are not possible. For an example of the initialization of an array of a
structure, refer to Arrays (see page 740).

744 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Data Types

Access on Structure Components


You can gain access to structure components using the following syntax:
<structurename>.<componentname>
For the previous example of the structure Polygonline, you can access the component Start
by Poly_1.Start.

Bit Access in Structures


The data type BIT (see page 731) is a special data type which can only be defined in structures. It
consumes memory space of 1 bit and allows you to address single bits of a structure by name.
TYPE <structurename>:
STRUCT
<bitname bit1> : BIT;
<bitname bit2> : BIT;
<bitname bit3> : BIT;
...
<bitname bitn> : BIT;
END_STRUCT
END_TYPE
You can gain access to the structure component BIT by using the following syntax:
<structurename>.<bitname>
NOTE: The usage of references and pointer on BIT variables is not possible. Furthermore, BIT
variables are not allowed in arrays.

Comparing Structures
For EQ operators (see page 806), it is possible to compare operands of type STRUCT (structure)
if the target system supports structured data types.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 745
Data Types

Enumerations

Overview
An enumeration is a user-defined type that is made up of a number of comma-delimited string
constants. These constants are referred to as enumeration values. Enumeration values are
identifiers for global constants in the project.
Enumeration values are recognized globally in all areas of the project even if they are declared
within a POU.
An enumeration is created in a project as a DUT object via the Add Object dialog box.
NOTE: Local enumeration declaration is only possible within TYPE.

Syntax for Declaring Enumerations


TYPE <enum identifier>: (<enum_0>|:=<value>,<enum_1>|:=<value>, ...,<en
um _n>|:=<value>)|<base data type>|:=<default value>;
END_TYPE
The following elements can additionally be used:
 Initialization of single enumeration values
 Definition of a <base data type> (refer to the paragraph Second Extension to the IEC 61131-
3 Standard (see page 748))
 Definitions of a default value for initializing all components

Syntax for Declaring Variables with the Enumeration Type


<variable identifier> : <enum identifier>| := <initialization value>
A variable of type <enum identifier> can take the enumeration values <enum_..>.

Initialization

If... Then ...


 If you have not defined a <default value> in The variable is initialized with the value of the first
the declaration of the enumeration (see following enumeration component. This applies unless a
example), and component is initialized with the value 0 in the
 If you have neither defined an explicit initialization enumeration declaration. In this case, the variable is
value for the declaration of variables of the type also initialized with the value 0.
<enum identifier>

746 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Data Types

Example of an Enumeration with an Explicit Initialization Value for a Component


Declaration of the Enumeration
TYPE TRAFFIC_SIGNAL: (red, yellow, green:=10);
(* The initial value for each of the colors is red 0, yellow 1, gre
en 10 *)
END_TYPE
In this declaration, the first two components get default initialization values:
red = 0, yellow = 1
The initialization value of the third component is explicitly defined:
green = 10
Use in the Implementation
TRAFFIC_SIGNAL1 : TRAFFIC_SIGNAL;
TRAFFIC_SIGNAL1:=10; (* The value of the TRAFFIC_SIGNAL1 is "green" *)
FOR i:= red TO green DO
i := i + 1;
END_FOR;

Example of an Enumeration with a Defined Default Value


Declaration of the Enumeration
TYPE COLOR :
(
red,
yellow,
green
) := green;
END_TYPE
Use in the Implementation
c1 : COLOR;
c2 : COLOR := yellow;
In this case, the variable c1 is initialized with the value green. The initialization value yellow is
defined for c2.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 747
Data Types

First Extension to the IEC 61131-3 Standard


You can use the type name of enumerations (as a scope operator (see page 866)) to disambiguate
the access to an enumeration constant.
Therefore, it is possible to use the same constant in different enumerations.
Example
Definition of two enumerations with same-named components
TYPE COLORS_1: (red, blue);
END_TYPE
TYPE COLORS_2: (green, blue, yellow);
END_TYPE
Use of same-named components from different enumerations in one block
colorvar1 : COLORS_1;
colorvar2 : COLORS_2;
(* valid: *)
colorvar1 := COLORS_1.blue;
colorvar2 := COLORS_2.blue;
(* invalid: *)
colorvar1 := blue;
colorvar2 := blue;

Second Extension to the IEC 61131-3 Standard


You can specify explicitly the base data type of the enumeration, which by default is INT.
Example of an Explicit Other Base Data Type for an Enumeration
TYPE COLORS_2 : (yellow, blue, green:=16#8000)DINT;
END_TYPE
NOTE: The strict attribute is automatically assigned to each enumeration that you add to a
project in the line above the TYPE declaration. This leads to errors that are detected during the
compile process in the following cases:
 Arithmetic operation with variables of the enumeration type
 Assignment of a constant value to a variable of the enumeration type, in which the constant
does not correspond to an enumeration value
 Assignment of a non-constant value to a variable of the enumeration type, in which the non-
constant has another data type than the enumeration type
You can explicitly add or remove the attribute.
Syntax: {attribute 'strict'}

748 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Data Types

Subrange Types

Overview
A subrange type is a user-defined type (see page 739) whose range of values is only a subset of
that of the basic data type. You can also use implicit range boundary checks (see page 750).
You can do the declaration in a DUT object but you can also declare a variable directly with a
subrange type.

Syntax
Syntax for the declaration as a DUT object:
TYPE <name>: <Inttype> (<ug>..<og>) END_TYPE;

<name> a valid IEC identifier


<inttype> one of the data types SINT, USINT, INT, UINT, DINT, UDINT, BYTE, WORD, DWORD
(LINT, ULINT, LWORD)
<ug> a constant compatible with the basic type, setting the lower boundary of the range types
The lower boundary itself is included in this range.
<og> a constant compatible with the basic type, setting the upper boundary of the range types.
The upper boundary itself is included in this basic type.

Example
TYPE
SubInt : INT (-4095..4095);
END_TYPE

Direct Declaration of a Variable with a Subrange Type


VAR
i : INT (-4095..4095);
ui : UINT (0..10000);
END_VAR
If a value is assigned to a subrange type (in the declaration or in the implementation) but does not
match this range (for example, i:=5000 in the upper shown declaration example), a message will
be issued.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 749
Data Types

Check Functions for Range Bounds


In order to observe the range bounds of subrange types during runtime, the functions CheckRan-
geSigned, CheckLRangeSigned or CheckRangeUnsigned, CheckLRangeUnsigned have
to be added to the application. For information on inserting the function, refer to the description of
the POUs for implicit checks function (see page 192).
The purpose of this check function is the proper treatment of violations of the subrange (for
example, by setting an error flag or changing the value). The function is called implicitly as soon
as a variable of subrange type is assigned.

WARNING
UNINTENDED EQUIPMENT OPERATION
Do not change the declaration part of an implicit check function.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

Example
The assignment of a variable belonging to a signed subrange type entails an implicit call to
CheckRangeSigned. The default implementation of that function trimming a value to the
permissible range is provided as follows:
Declaration part:
// Implicitly generated code : DO NOT EDIT
FUNCTION CheckRangeSigned : DINT
VAR_INPUT
value, lower, upper: DINT;
END_VAR
Implementation part:
// Implicitly generated code : Only an Implementation suggestion
IF (value < lower) THEN
CheckRangeSigned := lower;
ELSIF(value > upper) THEN
CheckRangeSigned := upper;
ELSE
CheckRangeSigned := value;
END_IF
When called, the function gets the following input parameters:
 value: the value to be assigned to the range type
 lower: the lower boundary of the range
 upper: the upper boundary of the range

750 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Data Types

As long as the assigned value is within the valid range, it will be used as return value of the function.
Otherwise, in correspondence to the range violation, either the upper or the lower boundary of the
range will be returned.
The assignment i:=10*y will now be replaced implicitly by
i := CheckRangeSigned(10*y, -4095, 4095);
If y, for example, has the value 1000, the variable i will not be assigned to 10*1000=10000 (as
provided by the original implementation), but to the upper boundary of the range that is 4095.
The same applies to function CheckRangeUnsigned.
NOTE: If neither of the functions is available, no type checking of subrange types occurs during
runtime. In this case, you can assign any DINT/UDINT value to a variable of subrange type
DINT/UDINT. You can assign any LINT/ULINT value to a variable of a subrange type LINT/ULINT.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 751
Data Types

752 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Programming Guidelines
EIO0000002854 06/2019

Chapter 33
Programming Guidelines

Programming Guidelines

What Is in This Chapter?


This chapter contains the following sections:
Section Topic Page
33.1 Naming Conventions 754
33.2 Prefixes 756

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 753
Programming Guidelines

Section 33.1
Naming Conventions

Naming Conventions

General Information

Creating Designator Names


Choose a relevant, short, description in English for each designator: the basis name. The basis
name should be self-explanatory. Capitalize the first letter of each word in the basis name. Write
the rest in lower case letters (example: FileSize). This basis name receives prefixes to indicate
scope and properties.
Whenever possible, the designator should not contain more than 20 characters. This value is a
guideline. You can adjust the number upward or downward if necessary.
If abbreviations of standard terms (TP, JK-FlipFlop, ...) are used, the name should not contain more
than 3 capital letters in sequence.

Case-Sensitivity
Consider case-sensitivity, especially for prefixes, to improve readability when using designators in
the IEC program.
NOTE: The compiler is not case-sensitive.

Valid Characters
Use only the following letters, numbers and special characters in designators:
0...9, A...Z, a...z,
In order to be able to display the prefixes clearly, an underline is used as the separator. The syntax
is explained in the respective prefix section.
Do not use underscores in the basis name.

754 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Programming Guidelines

Examples

Recommended Designator Not Recommended Designators


diState diSTATE
xInit x_Init
diCycleCounter diCyclecounter
lrRefVelocity lrRef_Velocity
c_lrMaxPosition clrMaxPosition
FC_PidController FC_PIDController

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 755
Programming Guidelines

Section 33.2
Prefixes

Prefixes

What Is in This Section?


This section contains the following topics:
Topic Page
Prefix Parts 757
Order of Prefixes 758
Scope Prefix 760
Data Type Prefix 761
Property Prefix 763
POU Prefix 764
Namespace Prefix 765

756 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Programming Guidelines

Prefix Parts

Overview
Prefixes are used to assign names by function.
The following parts of prefixes are available:

Prefix part Use Syntax Example


scope prefix (see page 760) scope of variables and [scope]_[designator] G_diFirstUserFault
constants
data type prefix identifying the data type of [type][designator] xEnable
(see page 761) variables and constants
property prefix identifying the properties of [property]_[designator] c_iNumberOfAxes
(see page 763) variables and constants
POU prefix (see page 764) identifying if POU was [POU]_[designator] FB_VisuController
implemented as a function,
function block, or program
namespace prefix for POUs, data types, [namespace].[identifier] TPL.G_dwErrorCode
(see page 765) variables, and constants
declared within a library

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 757
Programming Guidelines

Order of Prefixes

Overview
Designators contain the scope prefix and the type prefix. Use the property prefix according to the
property of the variables (for example, for constants). An additional namespace prefix is used for
libraries.

Obligatory Order
The following order is obligatory:
scope][property][_][type][identifier]
Scope prefixes and property prefixes are separated from type prefixes by an underscore (_).
Example
Gc_dwErrorCode : DWORD;
diCycleCounter : DINT;
The additional namespace prefix is used for libraries:
[namespace].[scope][property][_][type][identifier]
Example
ExampleLibrary.Gc_dwErrorCode

Independent Program Organization Units (POUs)


Insert an underscore to separate program organization units (functions, function blocks, and
programs) prefixes from identifiers:
[POU][_][identifier]
Example
FB_MotionCorrection
Use the additional namespace prefix for libraries:
[namespace].[POU][_][identifier]
Namespace prefixes are separated from POU prefixes by a dot (.).
Example
ExampleLibrary.FC_SetError()

758 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Programming Guidelines

Dependent Program Organization Units (POUs)


Methods, actions, and properties are considered to be dependent POUs. These are used on a level
below an independent POU.
Methods and actions do not have any prefixes.
Properties receive the type prefix of their return value.
Example
PROPERTY lrVelocity : LREAL

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 759
Programming Guidelines

Scope Prefix

Overview
The scope prefix indicates the scope of variables and constants. It indicates whether it is a local or
global variable, or a constant.
Global variables are indicated by a capital G_ and a property prefix c is added to global constants
(followed by an underscore in each case).
NOTE: Additionally identify the global variables and constants of libraries with the namespace of
the library.

Scope Prefix Type Use Example


no prefix VAR local variable xEnable
G_ VAR_GLOBAL global variable G_diFirstUserFault
Gc_ VAR_GLOBAL CONSTANT global constant Gc_dwErrorCode

Example
VAR_GLOBAL CONSTANT
Gc_dwExample : DWORD := 16#0000001A;
END_VAR
Access to the global variable of a library with the namespace INF:
INF.G_dwExample := 16#0000001A;

760 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Programming Guidelines

Data Type Prefix

Standard Data Types


The data type prefix identifies the data type of variables and constants.
NOTE: The data type prefix can also be composite, for example, for pointers, references and
arrays. The pointer or array is listed first, followed by the prefix of the pointer type or array type.
The IEC 61131-3 standard data type prefixes as well as the prefixes for the extensions to the
standard are listed in the table.

Data type prefix Type Use (memory location) Example


x BOOL boolean (8 bit) xName
by BYTE bit sequence (8 bit) byName
w WORD bit sequence (16 bit) wName
dw DWORD bit sequence (32 bit) dwName
lw LWORD bit sequence (64 bit) lwName
si SINT short integer (8 bit) siName
i INT integer (16 bit) iName
di DINT doubled integer (32 bit) diName
li LINT long integer (64 bit) liName
uli ULINT long integer (64 bit) uliName
usi USINT short integer (8 bit) usiName
ui UINT integer (16 bit) uiName
udi UDINT doubled integer (32 bit) udiName
r REAL floating-point number rName
(32 bit)
lr LREAL doubled floating-point lrName
number (64 bit)
dat DATE date (32 bit) datName
t TOD time (32 bit) tName
dt DT date and time (32 bit) dtName
tim TIME duration (32 bit) timName
ltim LTIME duration (64 bit) ltimName
s STRING character string ASCII sName
ws WSTRING character string unicode wsName
p pointers pointer pxName
r reference reference rxName
a array field axName

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 761
Programming Guidelines

Data type prefix Type Use (memory location) Example


e enumeration list type eName
st struct structure stName
if interface interface ifMotion
ut union union uName
fb function block function block fbName

Examples
piCounter: POINTER TO INT;
aiCounters: ARRAY [1..22] OF INT;
paiRefCounter: POINTER TO ARRAY [1..22] OF INT;
apstTest : ARRAY[1..2] OF POINTER TO ST_MotionStructure;
rdiCounter : REFERENCE TO DINT;
ifMotion : IF_Motion;

762 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Programming Guidelines

Property Prefix

Overview
The property prefix identifies the properties of variables and constants.

Prefix Type Use Syntax Example


c_ VAR CONSTANT local constant c_xName
r_ VAR RETAIN remanent variable type retain r_xName
p_ VAR PERSISTENT remanent variable type p_xName
persistent
rp_ VAR PERSISTENT remanent variable of type retain rp_xName
persistent
i_ VAR_INPUT input parameter of a POU i_xName
q_ VAR_OUTPUT output parameter of a POU q_xName
iq_ VAR_IN_OUT in-/output parameter of a POU iq_xName
ati_ AT %IX x.y AT %IB z input variable that should write ati_x0_0MasterEncoderInitOK
AT %IW k on the IEC input area
atq_ AT %QX x.y AT %QB z output variable that should atq_w18AxisNotDone
AT %QW k write on the IEC input area
atm_ AT %MX x.y AT %MB z marker variable that should atm_w19ModuleNotReady
AT %MW k write on the IEC marker area

NOTE:
 Do not declare constants as RETAIN or PERSISTENT.
 Do not declare any RETAIN variables within POUs. This administers the complete POU in the
retain memory area.

Example of AT-Declared Variables


The name of the AT-declared variable also contains the type of the target variable. It is used like
the type prefix.
ati_xEncoderInit AT %IX0.0 : BOOL;
atq_wAxisNotDone AT %QW18 : WORD;
atm_wModuleNotReady AT %MW19 : WORD;
NOTE: A variable can also be allocated to an address in the mapping dialog of a device in the
controller configuration (device editor). Whether a device offers this dialog is described in its
documentation.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 763
Programming Guidelines

POU Prefix

Overview
The following program organization units (POU) are defined in IEC 61131-3:
 function
 function block
 program
 data structure
 list type
 union
 interface
EcoStruxure Machine Expert offers additional POUs for the creation and management of test
cases:
 test case
 test series
 test resources

The designator is composed of a POU prefix and as short a name as possible (for example,
FB_GetResult). Just like a variable, capitalize the first letter of each word in the basis name.
Write the rest in lower case letters. Form a composite POU name from a verb and a noun.
The prefix is written with an underscore before the name and identifies the type of POU based on
the table:

POU prefix Type Use Example


SR_ PROGRAM program SR_FlowPackerMachine
FB_ FUNCTION_BLOCK function blocks FB_VisuController
FC_ FUNCTION functions FC_SetUserFault
ST_ STRUCT data structure ST_StandardModuleInterface
ET_ Enumeration list type ST_StandardModuleInterface
UT_ UNION union UT_Values
IF_ INTERFACE interface IF_CamProfile
TC_ Testcase* test case TC_MultiCam
TS_ TestSeries* test series TS_Robotic
TR_ Test resources* test resources TR_Axes

*IEC identifier enhancements introduced by Schneider Electric ETest plugin

764 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Programming Guidelines

Namespace Prefix

Overview
You can view the namespace of a library in the Library Manager. Use a short acronym
(PacDriveLib -> PDL) as namespace. Do not change the default namespace of a library.
To reserve an unambiguous namespace for your own, self-developed libraries, contact your
Schneider Electric responsible.

Example
A function FC_DoSomething() is located within the library TestlibraryA (namespace TLA) as well
as in TestlibraryB (namespace TLB). The respective function is accessed by prefixing the
namespace.
If both libraries are located within a project, the following call-up results in an error detected during
compilation:
FC_DoSomething();
In this case, it is necessary to define clearly which POU is to be called up.
TLA.FC_DoSomething();
TLB.FC_DoSomething();

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 765
Programming Guidelines

766 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Operators
EIO0000002854 06/2019

Chapter 34
Operators

Operators

Overview
EcoStruxure Machine Expert supports all IEC operators. In contrast to the standard functions,
these operators are recognized implicitly throughout the project.
Besides the IEC operators, the following operators are supported which are not prescribed by the
standard:
 ANDN
 ORN
 XORN
 SIZEOF (refer to arithmetic operators (see page 768))
 ADR
 BITADR
 content operator (refer to address operators (see page 808)
 some scope operators (see page 865)

What Is in This Chapter?


This chapter contains the following sections:
Section Topic Page
34.1 Arithmetic Operators 768
34.2 Bitstring Operators 782
34.3 Bit-Shift Operators 787
34.4 Selection Operators 795
34.5 Comparison Operators 801
34.6 Address Operators 808
34.7 Calling Operator 812
34.8 Type Conversion Operators 813
34.9 Numeric Functions 832
34.10 IEC Extending Operators 845
34.11 Initialization Operator 867

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 767
Operators

Section 34.1
Arithmetic Operators

Arithmetic Operators

Overview
The following operators, prescribed by the IEC1131-3 standard, are available:
 ADD
 MUL
 SUB
 DIV
 MOD
 MOVE

Additionally, there is the following standard-extending operator:


 SIZEOF

Consider possible overflows of arithmetic operations in case the resulting value exceeds the range
of the data type used for the result variable. This may result in low values being written to the
machine instead of high values or vice versa.

WARNING
UNINTENDED EQUIPMENT OPERATION
Always verify the operands and results used in mathematical operations to avoid arithmetic
overflow.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

What Is in This Section?


This section contains the following topics:
Topic Page
ADD 769
MUL 771
SUB 773
DIV 775
MOD 778
MOVE 780
SIZEOF 781

768 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

ADD

Overview
IEC operator for the addition of variables
Allowed types
 BYTE
 WORD
 DWORD
 LWORD
 SINT
 USINT
 INT
 UINT
 DINT
 UDINT
 LINT
 ULINT
 REAL
 LREAL
 TIME
 TIME_OF_DAY(TOD)
 DATE
 DATE_AND_TIME(DT)

For time data types, the following combinations are possible:


 TIME+TIME=TIME
 TOD+TIME=TOD
 DT+TIME=DT

In the FBD/LD editor, the ADD operator is an extensible box. This means, instead of a series of
concatenated ADD boxes, you can use 1 box with multiple inputs. Use the command Insert Input
for adding further inputs. The number is unlimited.

Example in IL
LD 7
ADD 2
ADD 4
ADD 7
ST iVar

Example in ST
var1 := 7+2+4+7;

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 769
Operators

Examples in FBD

1. series of ADD boxes


2. extended ADD box
3. ADD box with EN/ENO parameters

770 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

MUL

Overview
IEC operator for the multiplication of variables
Allowed types
 BYTE
 WORD
 DWORD
 LWORD
 SINT
 USINT
 INT
 UINT
 DINT
 UDINT
 LINT
 ULINT
 REAL
 LREAL
 TIME

TIME variables can be multiplied with integer variables.


In the FBD/LD editor, the MUL operator is an extensible box. This means, instead of a series of
concatenated MUL boxes, you can use 1 box with multiple inputs. Use the command Insert Input
for adding further inputs. The number is unlimited.

Example in IL
LD 7
MUL 2 ,
4 ,
7
ST Var1

Example in ST
var1 := 7*2*4*7;

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 771
Operators

Examples in FBD

1. series of MUL boxes


2. extended MUL box
3. MUL box with EN/ENO parameters

772 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

SUB

Overview
IEC operator for the subtraction of one variable from another one.
Allowed types:
 BYTE
 WORD
 DWORD
 LWORD
 SINT
 USINT
 INT
 UINT
 DINT
 UDINT
 LINT
 ULINT
 REAL
 LREAL
 TIME
 TIME_OF_DAY(TOD)
 DATE
 DATE_AND_TIME(DT)

For time data types, the following combinations are possible:


 TIME–TIME=TIME
 DATE–DATE=TIME
 TOD–TIME=TOD
 TOD–TOD=TIME
 DT-TIME=DT
 DT-DT=TIME

Consider that negative TIME values are undefined.

Example in IL
LD 7
SUB 2
ST Var1

Example in ST
var1 := 7-2;

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 773
Operators

Example in FBD

774 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

DIV

Overview
IEC operator for the division of one variable by another one:
Allowed types:
 BYTE
 WORD
 DWORD
 LWORD
 SINT
 USINT
 INT
 UINT
 DINT
 UDINT
 LINT
 ULINT
 REAL
 LREAL
 TIME

TIME variables can be divided by integer variables.

Example in IL
(Result in Var1 is 4.)
LD 8
DIV 2
ST Var1

Example in ST
var1 := 8/2;

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 775
Operators

Examples in FBD

1. series of DIV boxes


2. single DIV box
3. DIV box with EN/ENO parameters

Different target systems may behave differently concerning a division by zero error. It can lead to
a controller HALT, or may go undetected.

WARNING
UNINTENDED EQUIPMENT OPERATION
Use the check functions described in this document, or write your own checks to avoid division
by zero in the programming code.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

NOTE: For more information about the implicit check functions, refer to the chapter POUs for
Implicit Checks (see page 192).

Check Functions
You can use the following check functions to verify the value of the divisor in order to avoid a
division by 0 and adapt them, if necessary:
 CheckDivDInt
 CheckDivLint
 CheckDivReal
 CheckDivLReal

For information on inserting the function, refer to the description of the POUs for implicit checks
function (see page 192).
The check functions are called automatically before each division found in the application code.
See the following example for an implementation of the function CheckDivReal.

776 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

Default Implementation of the Function CheckDivReal


Declaration part
// Implicitly generated code : DO NOT EDIT
FUNCTION CheckDivReal : REAL
VAR_INPUT
divisor:REAL;
END_VAR
Implementation part:
// Implicitly generated code : only an suggestion for implementation
IF divisor = 0 THEN
CheckDivReal:=1;
ELSE
CheckDivReal:=divisor;
END_IF;
The operator DIV uses the output of function CheckDivReal as a divisor. In the following
example, a division by 0 is prohibited as with the 0 initialized value of the divisor d is changed to 1
by CheckDivReal before the division is executed. Therefore, the result of the division is 799.
PROGRAM PLC_PRG
VAR
erg:REAL;
v1:REAL:=799;
d:REAL;
END_VAR
erg:= v1 / d;

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 777
Operators

MOD

Overview
IEC operator for the modulo division of one variable by another one.
Allowed types:
 BYTE
 WORD
 DWORD
 LWORD
 SINT
 USINT
 INT
 UINT
 DINT
 UDINT
 LINT
 ULINT

The result of this function is the integer remainder of the division.


Different target systems may behave differently concerning a division by zero error. It can lead to
a controller HALT, or may go undetected.

WARNING
UNINTENDED EQUIPMENT OPERATION
Use the check functions described in this document, or write your own checks to avoid division
by zero in the programming code.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

NOTE: For more information about the implicit check functions, refer to the chapter POUs for
Implicit Checks (see page 192).

Example in IL
Result in Var1 is 1.
LD 9
MOD 2
ST Var1

Example in ST
var1 := 9 MOD 2;

778 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

Examples in FBD

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 779
Operators

MOVE

Overview
IEC operator for the assignment of a variable to another variable of an appropriate data type.
The MOVE operator is possible for all data types.
As MOVE is available as a box in the graphic editors FBD, LD, CFC, there the (unlocking) EN/ENO
functionality can also be applied on a variable assignment.

Example in CFC in Conjunction with the EN/ENO Function


Only if en_i is TRUE, var1 will be assigned to var2.

Example in IL
Result: var2 gets value of var1
LD var1
MOVE
ST var2
You get the same result with
LD var1
ST var2

Example in ST
ivar2 := MOVE(ivar1);
You get the same result with
ivar2 := ivar1;

780 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

SIZEOF

Overview
This arithmetic operator is not specified by the standard IEC 61131-3.
You can use it to determine the number of bytes required by the given variable x.
The SIZEOF operator returns an unsigned value. The type of the return value will be adapted to
the found size of variable x.

Return Value of SIZEOF(x) Data Type of the Constant Implicitly Used for
the Found Size
0 ≤ size of x < 256 USINT
256 ≤ size of x < 65,536 UINT
65,536 ≤ size of x < 4,294,967,296 UDINT
4,294,967,296 ≤ size of x ULINT

Example in ST
var1 := SIZEOF(arr1); (* d.h.: var1:=USINT#10; *)

Example in IL
Result is 10
arr1:ARRAY[0..4] OF INT;
Var1:INT;
LD arr1
SIZEOF
ST Var1

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 781
Operators

Section 34.2
Bitstring Operators

Bitstring Operators

Overview
The following bitstring operators are available, matching the IEC1131-3 standard:
 AND (see page 783)
 OR (see page 784)
 XOR (see page 785)
 NOT (see page 786)

The following operators are not specified by the standard and are not available:
 ANDN
 ORN
 XORN

Bitstring operators compare the corresponding bits of 2 or several operands.

What Is in This Section?


This section contains the following topics:
Topic Page
AND 783
OR 784
XOR 785
NOT 786

782 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

AND

Overview
IEC bitstring operator for bitwise AND of bit operands.
If the input bits each are 1, then the resulting bit will be 1, otherwise 0.
Allowed types:
 BOOL
 BYTE
 WORD
 DWORD
 LWORD

Example in IL
Result in Var1 is 2#1000_0010.
Var1:BYTE;
LD 2#1001_0011
AND 2#1000_1010
ST var1

Example in ST
var1 := 2#1001_0011 AND 2#1000_1010

Example in FBD

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 783
Operators

OR

Overview
IEC bitstring operator for bitwise OR of bit operands.
If at least 1 of the input bits is 1, the resulting bit will be 1, otherwise 0.
Allowed types:
 BOOL
 BYTE
 WORD
 DWORD
 LWORD

Example in IL
Result in var1 is 2#1001_1011.
var1:BYTE;
LD 2#1001_0011
OR 2#1000_1010
ST Var1

Example in ST
Var1 := 2#1001_0011 OR 2#1000_1010

Example in FBD

784 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

XOR

Overview
IEC bitstring operator for bitwise XOR of bit operands.
If only 1 of the input bits is 1, then the resulting bit will be 1; if both or none are 1, the resulting bit
will be 0.
Allowed types:
 BOOL
 BYTE
 WORD
 DWORD
 LWORD

NOTE: XOR allows adding additional inputs. If more than 2 inputs are available, then an XOR
operation is performed on the first 2 inputs. The result, in turn, will be XOR combined with input 3,
and so on. This has the effect that an odd number of inputs will lead to a resulting bit = 1.

Example in IL
Result is 2#0001_1001.
Var1:BYTE;
LD 2#1001_0011
XOR 2#1000_1010
ST var1

Example in ST
Var1 := 2#1001_0011 XOR 2#1000_1010

Example in FBD

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 785
Operators

NOT

Overview
IEC bitstring operator for bitwise NOT operation of a bit operand.
The resulting bit will be 1 if the corresponding input bit is 0 and vice versa.
Allowed types
 BOOL
 BYTE
 WORD
 DWORD
 LWORD

Example in IL
Result in Var1 is 2#0110_1100.
Var1:BYTE;
LD 2#1001_0011
NOT
ST var1

Example in ST
Var1 := NOT 2#1001_0011

Example in FBD

786 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

Section 34.3
Bit-Shift Operators

Bit-Shift Operators

What Is in This Section?


This section contains the following topics:
Topic Page
SHL 788
SHR 790
ROL 791
ROR 793

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 787
Operators

SHL

Overview
IEC operator for bitwise left-shift of an operand.
erg:= SHL (in, n)
in: operand to be shifted to the left
n: number of bits, by which in gets shifted to the left
NOTE: If n exceeds the data type width, it depends on the target system how BYTE, WORD,
DWORD and LWORD operands will be filled. Some cause filling with zeros (0), others with
n MOD <register width>.
NOTE: The amount of bits which is considered for the arithmetic operation depends on the data
type of the input variable. If the input variable is a constant, the smallest possible data type is
considered. The data type of the output variable has no effect at all on the arithmetic operation.

Examples
See in the following example in hexadecimal notation the different results for erg_byte and
erg_word. The result depends on the data type of the input variable (BYTE or WORD), although
the values of the input variables in_byte and in_word are the same.

Example in ST
PROGRAM shl_st
VAR
in_byte : BYTE:=16#45; (* 2#01000101 )
in_word : WORD:=16#0045; (* 2#0000000001000101 )
erg_byte : BYTE;
erg_word : WORD;
n: BYTE :=2;
END_VAR
erg_byte:=SHL(in_byte,n); (* Result is 16#14, 2#00010100 *)
erg_word:=SHL(in_word,n); (* Result is 16#0114, 2#0000000100010100 *)

Example in FBD

788 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

Example in IL
LD in_byte
SHL 2
ST erg_byte

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 789
Operators

SHR

Overview
IEC operator for bitwise right-shift of an operand.
erg:= SHR (in, n)
in: operand to be shifted to the right
n: number of bits, by which in gets shifted to the right
NOTE: If n exceeds the data type width, it depends on the target system how BYTE, WORD,
DWORD and LWORD operands will be filled. Some cause filling with zeros (0), others with
n MOD <register width>.

Examples
The following example in hexadecimal notation shows the results of the arithmetic operation
depending on the type of the input variable (BYTE or WORD).

Example in ST
PROGRAM shr_st
VAR
in_byte : BYTE:=16#45; (* 2#01000101 )
in_word : WORD:=16#0045; (* 2#0000000001000101 )
erg_byte : BYTE;
erg_word : WORD;
n: BYTE :=2;
END_VAR
erg_byte:=SHR(in_byte,n); (* Result is 16#11, 2#00010001 *)
erg_word:=SHR(in_word,n); (* Result is 16#0011, 2#0000000000010001 *)

Example in FBD

Example in IL
LD in_byte
SHR 2
ST erg_byte

790 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

ROL

Overview
IEC operator for bitwise rotation of an operand to the left.
erg:= ROL (in, n)
Allowed data types
 BYTE
 WORD
 DWORD
 LWORD

in will be shifted 1 bit position to the left n times while the bit that is furthest to the left will be
reinserted from the right
NOTE: The amount of bits which is considered for the arithmetic operation depends on the data
type of the input variable. If the input variable is a constant, the smallest possible data type is
considered. The data type of the output variable has no effect at all on the arithmetic operation.

Examples
See in the following example in hexadecimal notation the different results for erg_byte and
erg_word. The result depends on the data type of the input variable (BYTE or WORD), although
the values of the input variables in_byte and in_word are the same.

Example in ST
PROGRAM rol_st
VAR
in_byte : BYTE:=16#45;
in_word : WORD:=16#45;
erg_byte : BYTE;
erg_word : WORD;
n: BYTE :=2;
END_VAR
erg_byte:=ROL(in_byte,n); (* Result is 16#15 *)
erg_word:=ROL(in_word,n); (* Result is 16#0114 *)

Example in FBD

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 791
Operators

Example in IL
LD in_byte
ROL n
ST erg_byte

792 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

ROR

Overview
IEC operator for bitwise rotation of an operand to the right.
erg:= ROR (in, n)
Allowed data types
 BYTE
 WORD
 DWORD
 LWORD

in will be shifted 1 bit position to the right n times while the bit that is furthest to the left will be
reinserted from the left.
NOTE: The amount of bits which is noticed for the arithmetic operation depends on the data type
of the input variable. If the input variable is a constant, the smallest possible data type is noticed.
The data type of the output variable has no effect at all on the arithmetic operation.

Examples
See in the following example in hexadecimal notation the different results for erg_byte and
erg_word. The result depends on the data type of the input variable (BYTE or WORD), although
the values of the input variables in_byte and in_word are the same.

Example in ST
PROGRAM ror_st
VAR
in_byte : BYTE:=16#45;
in_word : WORD:=16#45;
erg_byte : BYTE;
erg_word : WORD;
n: BYTE :=2;
END_VAR
erg_byte:=ROR(in_byte,n); (* Result is 16#51 *)
erg_word:=ROR(in_word,n); (* Result is 16#4011 *)

Example in FBD

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 793
Operators

Example in IL
LD in_byte
ROR n
ST erg_byte

794 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

Section 34.4
Selection Operators

Selection Operators

Overview
Selection operations can also be performed with variables.
For purposes of clarity the examples provided in this document are limited to the following which
use constants as operators:
 SEL (see page 796)
 MAX (see page 797)
 MIN (see page 798)
 LIMIT (see page 799)
 MUX (see page 800)

What Is in This Section?


This section contains the following topics:
Topic Page
SEL 796
MAX 797
MIN 798
LIMIT 799
MUX 800

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 795
Operators

SEL

Overview
IEC selection operator for binary selection.
G determines whether IN0 or IN1 is assigned to OUT.
OUT := SEL(G, IN0, IN1) means:
OUT := IN0; if G=FALSE
OUT := IN1; if G=TRUE
Allowed data types:
IN0, ...,INn and OUT can be any identical data type. Make sure that variables of the identical
data type are used at these positions, especially when using user-defined data types. The compiler
verifies the identity of the types and returns compiler errors. Assigning function block instances to
interface variables is not supported.
G: BOOL

Example in IL
LD TRUE
SEL 3,4 (* IN0 = 3, IN1 =4 *)
ST Var1 (* result is 4 *)
LD FALSE
SEL 3,4
ST Var1 (* result is 3 *)

Example in ST
Var1:=SEL(TRUE,3,4); (* result is 4 *)

Example in FBD

Note
NOTE: An expression occurring ahead of IN0 will not be processed if G is TRUE. An expression
occurring ahead of IN1 will not be processed if G is FALSE.

796 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

MAX

Overview
IEC selection operator performing a maximum function.
The MAX operator returns the greater of the 2 values.
OUT := MAX(IN0, IN1)
IN0, IN1 and OUT can be any type of variable.

Example in IL
Result is 90
LD 90
MAX 30
MAX 40
MAX 77
ST Var1

Example in ST
Var1:=MAX(30,40); (* Result is 40 *)
Var1:=MAX(40,MAX(90,30)); (* Result is 90 *)

Example in FBD

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 797
Operators

MIN

Overview
IEC selection operator performing a minimum function.
The MIN operator returns the lesser of the 2 values.
OUT := MIN(IN0, IN1)
IN0, IN1 and OUT can be any type of variable.

Example in IL
Result is 30
LD 90
MIN 30
MIN 40
MIN 77
ST Var1

Example in ST
Var1:=MIN(90,30); (* Result is 30 *);
Var1:=MIN(MIN(90,30),40); (* Result is 30 *);

Example in FBD

798 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

LIMIT

Overview
IEC selection operator performing a limiting function.
OUT := LIMIT(Min, IN, Max) means:
OUT := MIN (MAX (IN, Min), Max)
Max is the upper and Min the lower limit for the result. Should the value IN exceed the upper limit
Max, LIMIT will return Max. Should IN fall below Min, the result will be Min.
IN and OUT can be any type of variable.

Example in IL
Result is 80
LD 90
LIMIT 30 ,
80
ST Var1

Example in ST
Var1:=LIMIT(30,90,80); (* Result is 80 *);

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 799
Operators

MUX

Overview
IEC selection operator for multiplexing operation.
OUT := MUX(K, IN0,...,INn)) means:
OUT := INk
IN0, ...,INn and OUT can be any identical data type. Make sure that variables of the identical
data type are used at these positions, especially when using user-defined data types. The compiler
verifies the identity of the types and returns compiler errors. Assigning function block instances to
interface variables is not supported.
K has to be BYTE, WORD, DWORD, LWORD, SINT, USINT, INT, UINT, DINT, LINT, ULINT or
UDINT.
MUX selects the Kth value from among a group of values.

Example in IL
Result is 30
LD 0
MUX 30 ,
40 ,
50 ,
60 ,
70 ,
80
ST Var1

Example in ST
Var1:=MUX(0,30,40,50,60,70,80); (* Result is 30 *);
NOTE: An expression occurring ahead of an input other than INk will not be processed to save
run time. Only in simulation mode will all expressions be executed.

800 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

Section 34.5
Comparison Operators

Comparison Operators

Overview
The following operators matching the IEC1131-3 standard are available:
 GT (see page 802)
 LT (see page 803)
 LE (see page 804)
 GE (see page 805)
 EQ (see page 806)
 NE (see page 807)

What Is in This Section?


This section contains the following topics:
Topic Page
GT 802
LT 803
LE 804
GE 805
EQ 806
NE 807

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 801
Operators

GT

Overview
Comparison operator performing a Greater Than function.
The GT operator is a boolean operator which returns the value TRUE when the value of the first
operand is greater than that of the second.
The operands can be of any basic data type.

Example in IL
Result is FALSE
LD 20
GT 30
ST Var1

Example in ST
VAR1 := 20 > 30;

Example in FBD

802 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

LT

Overview
Comparison operator performing a Less Than function.
The LT operator is a boolean operator which returns the value TRUE when the value of the first
operand is less than that of the second.
The operands can be of any basic data type.

Example in IL
Result is TRUE
LD 20
LT 30
ST Var1

Example in ST
VAR1 := 20 < 30;

Example in FBD

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 803
Operators

LE

Overview
Comparison operator performing a Less Than Or Equal To function.
The LE operator is a boolean operator which returns the value TRUE when the value of the first
operand is less than or equal to that of the second.
The operands can be of any basic data type.

Example in IL
Result is TRUE
LD 20
LE 30
ST Var1

Example in ST
VAR1 := 20 <= 30;

Example in FBD

804 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

GE

Overview
Comparison operator performing a Greater Than Or Equal To function.
The GE operator is a boolean operator which returns the value TRUE when the value of the first
operand is greater than or equal to that of the second.
The operands can be of any basic data type.

Example in IL
Result is TRUE
LD 60
GE 40
ST Var1

Example in ST
VAR1 := 60 >= 40;

Example in FBD

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 805
Operators

EQ

Overview
Comparison operator performing an Equal To function.
The EQ operator is a boolean operator which returns the value TRUE when the operands are equal.
The operands can be of any basic data type.

Example in IL
Result is TRUE
LD 40
EQ 40
ST Var1

Example in ST
VAR1 := 40 = 40;

Example in FBD

806 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

NE

Overview
Comparison operator performing a Not Equal To function.
The NE operator is a boolean operator which returns the value TRUE when the operands are not
equal.
The operands can be of any basic data type.

Example in IL
LD 40
NE 40
ST Var1

Example in ST
VAR1 := 40 <> 40;

Example in FBD

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 807
Operators

Section 34.6
Address Operators

Address Operators

What Is in This Section?


This section contains the following topics:
Topic Page
ADR 809
Content Operator 810
BITADR 811

808 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

ADR

Overview
This address operator is not specified by the standard IEC 61131-3.
ADR returns the address (see page 887) of its argument in a DWORD. This address can be
assigned to a pointer (see page 734) within the project.
NOTE: EcoStruxure Machine Expert allows you to use the ADR operator with function names,
program names, function block names, and method names.
Refer to the chapter Pointers (see page 734) and consider that function pointers can be passed to
external libraries. Nevertheless, there is no possibility to call a function pointer within EcoStruxure
Machine Expert. In order to enable a system call (runtime system), set the respective object
property (in the menu View → Properties... → Build) for the function object.

Example in ST
dwVar:=ADR(bVAR);

Example in IL
LD bVar
ADR
ST dwVar

Considerations for Online Changes


Executing the command Online Change can move variables to another place in the memory. There
is an indication during online change if copying is necessary.
The shift of variables may have the effect that POINTER variables point to invalid memory. So,
ensure that a pointer is not kept between cycles, but is reassigned in each cycle.

WARNING
UNINTENDED EQUIPMENT OPERATION
Assign the value of any POINTER TO type variable(s) prior to the first use of it within a POU, and
at every subsequent cycle.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

NOTE: POINTER TO variables of functions and methods should not be returned to the caller of this
function or passed to global variables.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 809
Operators

Content Operator

Overview
This address operator is not specified by the standard IEC 61131-3. You can dereference a pointer
by adding the content operator ^ (ASCII caret or circumflex symbol) after the pointer identifier.

Example in ST
pt:POINTER TO INT;
var_int1:INT;
var_int2:INT;
pt := ADR(var_int1);
var_int2:=pt^;

Considerations for Online Changes


Executing the Online Change command can change the contents of addresses.

CAUTION
INVALID POINTER
Verify the validity of the pointers when using pointers on addresses and executing the Online
Change command.
Failure to follow these instructions can result in injury or equipment damage.

810 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

BITADR

Overview
This address operator is not specified by the standard IEC 61131-3.
BITADR returns the bit offset within the segment in a DWORD. The offset value depends on
whether the option Byte addressing in the target settings is activated or not.
The highest nibble in that DWORD indicates the memory area:
Memory: 16x40000000
Input: 16x80000000
Output: 16xC0000000

Example in ST
VAR
var1 AT %IX2.3:BOOL;
bitoffset: DWORD;
END_VAR
bitoffset:=BITADR(var1); (* Result if byte addressing=TRUE: 16x80000013
, if byte addressing=FALSE: 16x80000023 *)

Example in IL
LD Var1
BITADR
ST bitoffset

Considerations for Online Changes


Executing the Online Change command can change the contents of addresses.

CAUTION
INVALID POINTER
Verify the validity of the pointers when using pointers on addresses and executing the Online
Change command.
Failure to follow these instructions can result in injury or equipment damage.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 811
Operators

Section 34.7
Calling Operator

Calling Operator

CAL

Overview
IEC operator for calling a function block or a program.
Use CAL in IL to call up a function block instance. Place the variables that will serve as the input
variables in parentheses right after the name of the function block instance.

Example
Calling up the instance Inst of a function block where input variables Par1 and Par2 are 0 and
TRUE, respectively.
CAL INST(PAR1 := 0, PAR2 := TRUE)

812 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

Section 34.8
Type Conversion Operators

Type Conversion Operators

What Is in This Section?


This section contains the following topics:
Topic Page
Type Conversion Functions 814
BOOL_TO Conversions 815
TO_BOOL Conversions 817
Conversion Between Integral Number Types 819
REAL_TO / LREAL_TO Conversions 820
TIME_TO/TIME_OF_DAY Conversions 822
DATE_TO/DT_TO Conversions 824
STRING_TO Conversions 826
TRUNC 828
TRUNC_INT 829
ANY_..._TO Conversions 830
TO_<xxx> Conversions 831

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 813
Operators

Type Conversion Functions

Overview
It is not allowed to convert implicitly from a larger type to a smaller type (for example, from INT to
BYTE or from DINT to WORD). To achieve this, you have to perform special type conversions. You
can basically convert from any elementary type to any other elementary type.

Syntax
Typed conversion: <elem.type1>_TO_<elem.type2>
Overloaded conversion: TO_<elem.type2>
NOTE: At ...TO_STRING conversions the string is generated as left-justified. If it is defined too
short, it will be cut from the right side.
The following type conversions are supported:
 BOOL_TO conversions (see page 815)
 TO_BOOL conversions (see page 817)
 conversion between integral number types (see page 819)
 REAL_TO-/ LREAL_TO conversions (see page 820)
 TIME_TO/TIME_OF_DAY conversions (see page 822)
 DATE_TO/DT_TO conversions (see page 824)
 STRING_TO conversions (see page 826)
 TRUNC (see page 828) (conversion to DINT)
 TRUNC_INT (see page 829)
 ANY_NUM_TO_<numeric data type>

814 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

BOOL_TO Conversions

Definition
IEC operator for conversions from type BOOL to any other type.

Syntax
BOOL_TO_<data type>

Conversion Results
The conversion results for number types and for string types depend on the state of the operand:

Operand State Result for Number Types Result for String Types
TRUE 1 TRUE
FALSE 0 FALSE

Examples in ST
Examples in ST with conversion results:

Example Result
i:=BOOL_TO_INT(TRUE); 1
str:=BOOL_TO_STRING(TRUE); 'TRUE'
t:=BOOL_TO_TIME(TRUE); T#1ms
tof:=BOOL_TO_TOD(TRUE); TOD#00:00:00.001
dat:=BOOL_TO_DATE(FALSE); D#1970
dandt:=BOOL_TO_DT(TRUE); DT#1970-01-01-00:00:01

Examples in IL
Examples in IL with conversion results:

Example Result
LD TRUE 1
BOOL_TO_INT
ST i
LD TRUE 'TRUE'
BOOL_TO_STRI...
ST str
LD TRUE T#1ms
BOOL_TO_TIME
ST t

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 815
Operators

Example Result
LD TRUE TOD#00:00:00.001
BOOL_TO_TOD
ST tof
LD FALSE D#1970-01-01
BOOL_TO_DATE
ST dandt
LD TRUE DT#1970-01-01-00:00:01
BOOL_TO_DT
ST dandt

Examples in FBD
Examples in FBD with conversion results:

Example Result
1

'TRUE'

T#1ms

TOD#00:00:00.001

D#1970-01-01

DT#1970-01-01-00:00:01

816 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

TO_BOOL Conversions

Definition
IEC operator for conversions from another variable type to BOOL.

Syntax
<data type>_TO_BOOL

Conversion Results
The result is TRUE when the operand is not equal to 0. The result is FALSE when the operand is
equal to 0.
The result is TRUE for STRING type variables when the operand is TRUE. Otherwise the result is
FALSE.

Examples in ST
Examples in ST with conversion results:

Example Result
b := BYTE_TO_BOOL(2#11010101); TRUE
b := INT_TO_BOOL(0); FALSE
b := TIME_TO_BOOL(T#5ms); TRUE
b := STRING_TO_BOOL('TRUE'); TRUE

Examples in IL
Examples in IL with conversion results:

Example Result
LD 213 TRUE
BYTE_TO_BOOL
ST b
LD 0 FALSE
INT_TO_BOOL
ST b
LD T#5ms TRUE
TIME_TO_BOOL
ST b
LD 'TRUE' TRUE
STRING_TO_BOOL
ST b

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 817
Operators

Examples in FBD
Examples in FBD with conversion results:

Example Result
TRUE

FALSE

TRUE

TRUE

818 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

Conversion Between Integral Number Types

Definition
Conversion from an integral number type to another number type.

Syntax
<INT data type>_TO_<INT data type>
For information on the integer data type, refer to the chapter Standard Data Types (see page 723).

Conversion Results
If the number you are converting exceeds the range limit, the first bytes for the number will be
ignored.

Example in ST
si := INT_TO_SINT(4223); (* Result is 127 *)
If you save the integer 4223 (16#107f represented hexadecimally) as a SINT variable, it will appear
as 127 (16#7f represented hexadecimally).

Example in IL
LD 4223
INT_TO_SINT
ST si

Example in FBD

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 819
Operators

REAL_TO / LREAL_TO Conversions

Definition
IEC operator for conversions from the variable type REAL or LREAL to a different type.
The value will be rounded up or down to the nearest whole number and converted into the new
variable type.
Exceptions to this are the following variable types:
 STRING
 BOOL
 REAL
 LREAL

Conversion Results
If a REAL or LREAL is converted to SINT, USINT, INT, UINT, DINT, UDINT, LINT or ULINT and
the value of the real number is out of the value range of that integer, the result will be undefined,
and may lead to a controller exception.
NOTE: Validate any range overflows by your application and verify that the value of the REAL or
LREAL is within the bounds of the target integer before performing the conversion.
When converting to type STRING, consider that the total number of digits is limited to 16. If the
(L)REAL number has more digits, then the sixteenth will be rounded. If the length of the STRING
is defined too short, it will be cut from the right end.

Example in ST
Examples in ST with conversion results:

Example Result
i := REAL_TO_INT(1.5); 2
j := REAL_TO_INT(1.4); 1
i := REAL_TO_INT(-1.5); –2
j := REAL_TO_INT(-1.4); –1

Example in IL
LD 2.75
REAL_TO_INT
ST i

820 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

Example in FBD

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 821
Operators

TIME_TO/TIME_OF_DAY Conversions

Definition
IEC operator for conversions from the variable type TIME or TIME_OF_DAY to a different type.

Syntax
TIME_TO_<data type>
TOD_TO_<data type>

Conversion Results
The time will be stored internally in a DWORD in milliseconds (beginning with 12:00 A.M. for the
TIME_OF_DAY variable). This value will then be converted.
In case of type STRING the result is a time constant.

Examples in ST
Examples in ST with conversion results:

Example Result
str := TIME_TO_STRING(T#12ms); 'T#12ms'
dw := TIME_TO_DWORD(T#5m); 300000
si := TOD_TO_SINT(TOD#00:00:00.012); 12

Examples in IL
Examples in IL with conversion results:

Example Result
LD T#12ms 'T#12ms'
TIME_TO_STRI...
ST str
LD T#300000ms 300000
TIME_TO_DWORD
ST dw
LD TOD#00:00:00.012 12
TIME_TO_SINT
ST si

822 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

Examples in FBD

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 823
Operators

DATE_TO/DT_TO Conversions

Definition
IEC operator for conversions from the variable type DATE or DATE_AND_TIME to a different type.

Syntax
DATE_TO_<data type>
DT_TO_<data type>

Conversion Results
The date will be stored internally in a DWORD in seconds since Jan. 1, 1970. This value will then
be converted.
For STRING type variables, the result is the date constant.

Examples in ST
Examples in ST with conversion results:

Example Result
b := DATE_TO_BOOL(D#1970-01-01); FALSE
i := DATE_TO_INT(D#1970-01-15); 29952
byt := DT_TO_BYTE(DT#1970-01-15-05:05:05); 129
str := DT_TO_STRING(DT#1998-02-13-14:20); 'DT#1998-02-13-14:20'

Examples in IL
Examples in IL with conversion results:

Example Result
LD D#1970-01-01 FALSE
DATE_TO_BOOL
ST b
LD D#1970-01-01 29952
DATE_TO_INT
ST i
LD D#1970-01-15-05:05: 129
DATE_TO_BYTE
ST byt
LD D#1998-02-13-14:20 'DT#1998-02-13-14:20'
DATE_TO_STRI...
ST str

824 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

Examples in FBD

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 825
Operators

STRING_TO Conversions

Definition
IEC operator for conversions from the variable type STRING to a different type.

Syntax
STRING_TO_<data type>

Specifying Values
Specify the operand of type STRING matching the IEC61131-3 standard. The value must
correspond to a valid constant (literal) (see page 643) of the target type. This applies to the
specification of exponential values, infinite values, prefixes, grouping character ("_") and comma.
Additional characters after the digits of a number are allowed, as for example, 23xy. Characters
preceding a number are not allowed.
The operand must represent a valid value of the target data type.
NOTE: If the data type of the operand does not match the target type, or if the value exceeds the
range of the target data type, then the result depends on the processor type and is therefore
undefined.
Conversions from larger types to smaller types may result in loss of information.

CAUTION
LOSS OF DATA
When converting mismatched data types or when the value being converted is larger than the
target data type, be sure that the result is validated within your application.
Failure to follow these instructions can result in injury or equipment damage.

Example in IL

Example Conversion result


LD 'TRUE' TRUE
STRING_TO_BOOL
ST b

826 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

Examples in ST

Example Conversion result


b := STRING_TO_BOOL('TRUE'); TRUE
w := STRING_TO_WORD('abc34'); 0
w := STRING_TO_WORD('34abc'); 34
t := STRING_TO_TIME('T#127ms'); T#127ms
r := STRING_TO_REAL('1.234'); 1.234
bv := STRING_TO_BYTE('500'); 244

Example in FBD

Example Conversion result


TRUE

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 827
Operators

TRUNC

Definition
IEC operator for conversions from REAL to DINT. The whole number portion of the value will be
used.
The result of these functions is not defined if the input value cannot be represented with a DINT or
INT. The behavior of such input values is platform-dependent.

Examples in ST
Examples in ST with conversion results:

Example Result
diVar:=TRUNC(1.9); 1
diVar:=TRUNC(–1.4); –1

Example in IL
LD 1.9
TRUNC
ST diVar

828 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

TRUNC_INT

Definition
IEC operator for conversions from REAL to INT. The whole number portion of the value will be
used.
The result of these functions is not defined if the input value cannot be represented with a DINT or
INT. The behavior of such input values is platform-dependent.

Examples in ST
Examples in ST with conversion results:

Example Result
iVar:=TRUNC_INT(1.9); 1
iVar:=TRUNC_INT(-1.4); –1

Example in IL
LD 1.9
TRUNC_INT
ST iVar

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 829
Operators

ANY_..._TO Conversions

Definition
Conversion from any data type, or more specifically from any numeric data type to another data
type. As with any type of conversion, the size of the operands must be taken into account in order
to have a successful conversion.

Syntax
ANY_NUM_TO_<numeric data type>
ANY_TO_<any data type>

Example
Conversion from a variable of data type REAL to INT:
re : REAL := 1.234;
i : INT := ANY_TO_INT(re)

830 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

TO_<xxx> Conversions

Definition
Conversion of variables from one type to another type. The input type must not be specified
explicitly (overloaded conversion).
Also refer to the description of type conversion functions (see page 814).

Syntax
TO_<data type>

Example in ST
Conversion from a variable of data type REAL to INT:
VAR
iVar: INT;
bVar: BOOL;
strVar: STRING;
rVar: REAL;
END_VAR
wVar:=TO_WORD('123') (* result is 123 *)
bVar:=TO_BOOL(1); (* result is TRUE *)
strVar:=TO_STRING(342); (* result is '342' *)
iVar_=TO_INT(4.22); (* result is 4 *)

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 831
Operators

Section 34.9
Numeric Functions

Numeric Functions

Overview
This chapter describes the available numeric IEC operators specified by the standard IEC 61131-
3.

What Is in This Section?


This section contains the following topics:
Topic Page
ABS 833
SQRT 834
LN 835
LOG 836
EXP 837
SIN 838
COS 839
TAN 840
ASIN 841
ACOS 842
ATAN 843
EXPT 844

832 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

ABS

Definition
Numeric IEC operator for returning the absolute value of a number.
In- and output can be of any numeric basic data type.

Example in IL
The result in i is 2.
LD –2
ABS
ST i

Example in ST
i:=ABS(–2);

Example in FBD

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 833
Operators

SQRT

Definition
Numeric IEC operator for returning the square root of a number.
The input variable can be of any numeric basic data type, the output variable has to be type REAL
or LREAL.

Example in IL
The result in q is 4.
LD 16
SQRT
ST q

Example in ST
q:=SQRT(16);

Example in FBD

834 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

LN

Definition
Numeric IEC operator for returning the natural logarithm of a number.
The input variable can be of any numeric basic data type, the output variable has to be type REAL
or LREAL.

Example in IL
The result in q is 3.80666.
LD 45
LN
ST q

Example in ST
q:=LN(45);

Example in FBD

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 835
Operators

LOG

Definition
Numeric IEC operator for returning the logarithm of a number in base 10.
The input variable can be of any numeric basic data type, the output variable has to be type REAL
or LREAL.

Example in IL
The result in q is 2.49762.
LD 314.5
LOG
ST q

Example in ST
q:=LOG(314.5);

Example in FBD

836 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

EXP

Definition
Numeric IEC operator for returning the exponential function.
The input variable can be of any numeric basic data type, the output variable has to be type REAL
or LREAL.

Example in IL
The result in q is 7.389056099.
LD 2
EXP
ST q

Example in ST
q:=EXP(2);

Example in FBD

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 837
Operators

SIN

Definition
Numeric IEC operator for returning the sine of an angle.
The input defining the angle in radians can be of any numeric basic data type, the output variable
has to be of type REAL or LREAL.

Example in IL
The result in q is 0.479426.
LD 0.5
SIN
ST q

Example in ST
q:=SIN(0.5);

Example in FBD

838 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

COS

Definition
Numeric IEC operator for returning the cosine of an angle.
The input defining the angle in arch minutes can be of any numeric basic data type where the
output variable has to be of type REAL or LREAL.

Example in IL
The result in q is 0.877583.
LD 0.5
COS
ST q

Example in ST
q:=COS(0.5);

Example in FBD

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 839
Operators

TAN

Definition
Numeric IEC operator for returning the tangent of a number. The value is calculated in arch
minutes.
The input variable can be of any numeric basic data type where the output variable has to be type
REAL or LREAL.

Example in IL
The result in q is 0.546302.
LD 0.5
TAN
ST q

Example in ST
q:=TAN(0.5);

Example in FBD

840 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

ASIN

Definition
Numeric IEC operator for returning the arc sine (inverse function of sine) of a number. The value
is calculated in arch minutes.
The input variable can be of any numeric basic data type where the output variable has to be type
REAL or LREAL.

Example in IL
The result in q is 0.523599.
LD 0.5
ASIN
ST q

Example in ST
q:=ASIN(0.5);

Example in FBD

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 841
Operators

ACOS

Definition
Numeric IEC operator for returning the arc cosine (inverse function of cosine) of a number. The
value is calculated in arch minutes.
The input variable can be of any numeric basic data type where the output variable has to be type
REAL or LREAL.

Example in IL
The result in q is 1.0472.
LD 0.5
ACOS
ST q

Example in ST
q:=ACOS(0.5);

Example in FBD

842 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

ATAN

Definition
Numeric IEC operator for returning the arc tangent (inverse function of tangent) of a number. The
value is calculated in arch minutes.
The input variable can be of any numeric basic data type where the output variable has to be type
REAL or LREAL.

Example in IL
The result in q is 0.463648.
LD 0.5
ATAN
ST q

Example in ST
q:=ATAN(0.5);

Example in FBD

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 843
Operators

EXPT

Definition
Numeric IEC operator for exponentiation of a variable with another variable:
OUT = IN1 to the IN2
The input variable can be of numeric basic data types (SINT, USINT, INT, UINT, DINT, UDINT,
LINT, ULINT, REAL, LREAL, BYTE, WORD, DWORD, and LWORD) where the output variable has
to be type REAL or LREAL.
The result of this function is not defined if the following applies:
 The base is negative.
 The base is zero and the exponent is ≤ 0.

The behavior for such input values is platform-dependent.

Example in IL
The result is 49.
LD 7
EXPT 2
ST Var1

Example in ST
var1:=EXPT(7,2);

Example in FBD

844 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

Section 34.10
IEC Extending Operators

IEC Extending Operators

What Is in This Section?


This section contains the following topics:
Topic Page
IEC Extending Operators 846
__DELETE 847
__ISVALIDREF 850
__NEW 851
__QUERYINTERFACE 854
__QUERYPOINTER 856
AND_THEN 858
OR_ELSE 859
__TRY, __CATCH, __FINALLY, __ENDTRY 860
__VARINFO 863
Scope Operators 865

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 845
Operators

IEC Extending Operators

Overview
In addition to the IEC operators, EcoStruxure Machine Expert supports following IEC extending
operators:
 ADR (see page 809)
 BITADR (see page 811)
 SIZEOF (see page 781)
 __DELETE (see page 847)
 __ISVALIDREF (see page 850)
 __NEW (see page 851)
 __QUERYINTERFACE (see page 854)
 __QUERYPOINTER (see page 856)
 scope operators (see page 865)

846 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

__DELETE

Definition
This operator is not specified by the IEC 61131-3 standard.
For compatibility information, refer to the EcoStruxure Machine Expert/CoDeSys compiler version
mapping table in the Compatibility and Migration User Guide (see EcoStruxure Machine Expert
Compatibility and Migration, User Guide).
The __DELETE operator deallocates the memory for objects allocated before via the __NEW
operator (see page 851).
__DELETE has no return value and its operand will be set to 0 after the operation.
Activate the option Use dynamic memory allocation in the Application build options view
(see EcoStruxure Machine Expert, Menu Commands, Online Help) (View → Properties... →
Application build options). Consult the Programming Guide specific to your controller for whether
the options are available on your controller.

Syntax
__DELETE (<pointer>)
If pointer is a pointer to a function block, the dedicated method FB_Exit will be called before the
pointer is set to NULL.
NOTE: Use the exact data type of the derived function block and not that of the base function block.
Do not use a variable of type POINTER TO BaseFB. This is necessary because if the base
function block implements no FB_Exit function, then at the later usage of __DELETE(pBaseFB),
no FB_Exit is called.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 847
Operators

Example
In the following example, the function block FBDynamic is allocated dynamically via _NEW from the
POU PLC_PRG. By doing so, FB_Init method will be called, in which a type DUT is allocated.
When __DELETE is called on, the function block pointer from PLC_PRG, FB_Exit will be called,
which in turn frees the allocated internal type.
FUNCTION_BLOCK FBDynamic
VAR_INPUT
in1, in2 : INT;
END_VAR
VAR_OUTPUT
out : INT;
END_VAR
VAR
test1 : INT := 1234;
_inc : INT := 0;
_dut : POINTER TO DUT;
END_VAR
out := in1 + in2;

METHOD FB_Exit : BOOL


VAR_INPUT
bInCopyCode : BOOL;
END_VAR
__Delete(_dut);

METHOD FB_Init : BOOL


VAR_INPUT
bInitRetains : BOOL;
bInCopyCode : BOOL;
END_VAR
_dut := __NEW(DUT);

METHOD INC : INT


VAR_INPUT
END_VAR
_inc := _inc + 1;
INC := _inc;

848 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

PLC_PRG(PRG)
VAR
pFB : POINTER TO FBDynamic;
bInit: BOOL := TRUE;
bDelete: BOOL;
loc : INT;
END_VAR
IF (bInit) THEN
pFB := __NEW(FBDynamic);
bInit := FALSE;
END_IF
IF (pFB <> 0) THEN
pFB^(in1 := 1, in2 := loc, out => loc);
pFB^.INC();
END_IF
IF (bDelete) THEN
__DELETE(pFB);
END_IF

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 849
Operators

__ISVALIDREF

Definition
This operator is not specified by the IEC 61131-3 standard.
It allows you to check whether a reference points to a valid value.
For how to use and an example, see the description of the reference (see page 732) data type.

850 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

__NEW

Definition
This operator is not prescribed by the IEC 61131-3 standard.
The operator __NEW allocates memory for function block instances or arrays of standard data
types. The operator returns a suitably typed pointer to the object. If the operator is not used within
an assignment, a message is displayed.
Activate the option Use dynamic memory allocation in the Application build options view
(see EcoStruxure Machine Expert, Menu Commands, Online Help) (View → Properties... →
Application build options) to use the __NEW operator. Consult the Programming Guide specific to
your controller for whether the options are available on your controller.
If no memory could be allocated, by __NEW will return 0.
For deallocating, use __DELETE.

Syntax
__NEW (<type>, [<size>]
The operator creates a new object of the specified type <type> and returns a pointer to that
<type>. The initialization of the object is called after creation. If 0 is returned, the operation has
not been completed successfully.
NOTE: Use the exact data type of the derived function block and not that of the base function block.
Do not use a variable of type POINTER TO BaseFB. This is necessary because if the base
function block implements no FB_Exit function, then at the later usage of __DELETE(pBaseFB),
no FB_Exit is called.
If <type> is scalar, the optional operand <length> has to be set additionally and the operator
creates an array of scalar types with the size length.

Example
pScalarType := __New(ScalarType, length);
NOTE: A function block created with __NEW has a fixed memory area. The data layout cannot be
modified by an online change. Therefore, new variables cannot be added or deleted, and types
cannot be modified.
Therefore, only function blocks out of libraries (because they cannot change) and function blocks
with attribute enable_dynamic_creation are allowed for the __NEW operator. If a function
block changes with this flag so that copy code will be necessary, a message is produced.
NOTE: The code for memory allocation needs to be non-re-entrant.
A semaphore (SysSemEnter) is used to avoid 2 tasks try to allocate memory at the same time.
Thus, extensive usage of __New may produce higher jitter.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 851
Operators

Example with a scalar type:


TYPE DUT :
STRUCT
a,b,c,d,e,f : INT;
END_STRUCT
END_TYPE
PROGRAM PLC_PRG
VAR
pDut : POINTER TO DUT;
bInit: BOOL := TRUE;
bDelete: BOOL;
END_VAR
IF (bInit) THEN
pDut := __NEW(DUT);
bInit := FALSE;
END_IF
IF (bDelete) THEN
__DELETE(pDut);
END_IF
Example with a function block:
{attribute 'enable_dynamic_creation'}
FUNCTION_BLOCK FBDynamic
VAR_INPUT
in1, in2 : INT;
END_VAR
VAR_OUTPUT
out : INT;
END_VAR
VAR
test1 : INT := 1234;
_inc : INT := 0;
_dut : POINTER TO DUT;
END_VAR
out := in1 + in2;
PROGRAM_PLC_PRG
VAR
pFB : POINTER TO FBDynamic;
loc : INT;
bInit: BOOL := TRUE;
bDelete: BOOL;
END_VAR

852 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

IF (bInit) THEN
pFB := __NEW(FBDynamic);
bInit := FALSE;
END_IF
IF (pFB <> 0) THEN
pFB^(in1 := 1, in2 := loc, out => loc);
pFB^.INC();
END_IF
IF (bDelete) THEN
__DELETE(pFB);
END_IF
Example with an array:
PLC_PRG(PRG)
VAR
bInit: BOOL := TRUE;
bDelete: BOOL;
pArrayBytes : POINTER TO BYTE;
test: INT;
parr : POINTER TO BYTE;
END_VAR
IF (bInit) THEN
pArrayBytes := __NEW(BYTE, 25);
bInit := FALSE;
END_IF
IF (pArrayBytes <> 0) THEN
pArrayBytes[24] := 125;
test := pArrayBytes[24];
END_IF
IF (bDelete) THEN
__DELETE(pArrayBytes);
END_IF

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 853
Operators

__QUERYINTERFACE

Definition
This operator is not prescribed by the IEC 61131-3 standard.
At runtime, __QUERYINTERFACE is enabling a type conversion of an interface reference to
another. The operator returns a result with type BOOL. TRUE implies, that the conversion is
successfully executed.

Syntax
__QUERYINTERFACE(<ITF_Source>, < ITF_Dest>
The operator needs as the first operand an interface reference or a function block instance of the
intended type and as second operand an interface reference. After execution of
__QUERYINTERFACE, the ITF_Dest holds a reference to the intended interface if the object
referenced from ITF source implements the interface. In this case, the conversion is successful
and the result of the operator returns TRUE. In all other cases, the operator returns FALSE.
A precondition for an explicit conversion is that not only the ITF_Source but also ITF_Dest is
an extension of the interface __System.IQueryInterface. This interface is provided implicitly
and needs no library.

Example
Example in ST:
INTERFACE ItfBase EXTENDS __System.IQueryInterface
METHOD mbase : BOOL
END_METHOD
INTERFACE ItfDerived1 EXTENDS ItfBase
METHOD mderived1 : BOOL
END_METHOD
INTERFACE ItfDerived2 EXTENDS ItfBase
METHOD mderived2 : BOOL
END_METHOD
FUNCTION_BLOCK FB1 IMPLEMENTS ItfDerived1
METHOD mbase : BOOL
mbase := TRUE;
END_METHOD
METHOD mderived1 : BOOL
mderived1 := TRUE;
END_METHOD
END_FUNCTION_BLOCK
FUNCTION_BLOCK FB2 IMPLEMENTS ItfDerived2
METHOD mbase : BOOL
mbase := FALSE;

854 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

END_METHOD
METHOD mderived2 : BOOL
mderived2 := TRUE;
END_METHOD
END_FUNCTION_BLOCK
PROGRAM POU
VAR
inst1 : FB1;
inst2 : FB2;
itfbase1 : ItfBase := inst1;
itfbase2 : ItfBase := inst2;
itfderived1 : ItfDerived1 := 0;
itfderived2 : ItfDerived2 := 0;
bTest1, bTest2, xResult1, xResult2: BOOL;
END_VAR
xResult1 := __QUERYINTERFACE(itfbase1, itfderived1); // xResult = TRUE,
itfderived1 <> 0
// references the instance inst1
xResult2 := __QUERYINTERFACE(itfbase1, itfderived2); // xResult = FALSE
, itfderived2 = 0
xResult3 := __QUERYINTERFACE(itfbase2, itfderived1); // xResult = FALSE
, itfderived1 = 0
xResult4 := __QUERYINTERFACE(itfbase2, itfderived2); // xResult = TRUE,
itfderived2 <> 0
// references the instance inst2

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 855
Operators

__QUERYPOINTER

Definition
This operator is not specified by the IEC 61131-3 standard.
At runtime, __QUERYPOINTER is assigning an interface reference to an untyped pointer. The
operator returns a result with type BOOL. TRUE implies, that the conversion has been successfully
executed.

Syntax
__QUERYPOINTER (<ITF_Source>, < Pointer_Dest>
For the first operand, the operator requires an interface reference or a function block instance of
the intended type and for the second operand an untyped pointer. After execution of
__QUERYPOINTER, the Pointer_Dest holds the address of the reference to the intended
interface. In this case, the conversion is successful and the result of the operator returns TRUE. In
all other cases, the operator returns FALSE. Pointer_Dest is untyped and can be cast to any
type. The programmer has to ensure the actual type. For example, the interface could provide a
method returning a type code.
A precondition for an explicit conversion is that the ITF_Source is an extension of the interface
__System.IQueryInterface. This interface is provided implicitly and needs no library.

Example
TYPE KindOfFB
(FB1 := 1, FB2 := 2, UNKOWN := -1);
END_TYPE
INTERFACE Itf EXTENDS __System.IQueryInterface
METHOD KindOf : KindOfFB
END_METHOD
FUNCTION_BLOCK F_BLOCK_1 IMPLEMENTS ITF
METHOD KindOf : KindOfFB
KindOf := KindOfFB.FB1;
END_METHOD
FUNCTION_BLOCK F_BLOCK_2 IMPLEMENTS ITF
METHOD KindOf : KindOfFB
KindOf := KindOfFB.FB2;
END_METHOD
FUNCTION CAST_TO_ANY_FB : BOOL
VAR_INPUT
itf_in : Itf;
END_VAR
VAR_OUTPUT
pfb_1: POINTER TO F_BLOCK_1 := 0;
pfb_2: POINTER TO F_BLOCK_2 := 0;

856 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

END_VAR
VAR
xResult1, xResult2 : BOOL;
END_VAR
IF itf_in <> 0
CASE itf_in.KindOf OF
KindOfFB.FB1:
xResult1 := __QUERYPOINTER(itf_in, pfb_1);
KindOfFB.FB2 THEN
xResult2 := __QUERYPOINTER(itf_in, pfb_2);
END_CASE
END_IF
CAST_TO_ANY_FB := xResult1 OR xResult2;

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 857
Operators

AND_THEN

Definition
This operator is not specified by the IEC 61131-3 standard. It is only allowed for programming in
structured text (ST).
The AND_THEN performs an AND-operation of operands of type BOOL and BIT with short-
circuiting mode. This has the following effect:
If all operands are TRUE, then the result of the operation is TRUE, otherwise it is FALSE.
When one operand is FALSE, then the expressions at the other operands are not evaluated (lazy
evaluation). In this regard, the AND_THEN operator differs from the AND operator as defined in the
standard IEC-61131-3. AND always evaluates all expressions (see page 783).
In contrast to this, when using the standard IEC-operator AND, always all operands are evaluated
(see page 783).

858 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

OR_ELSE

Definition
This operator is not specified by the IEC 61131-3 standard. It is only allowed for programming in
structured text (ST).
The OR_ELSE performs an OR-operation of operands of type BOOL and BIT with short-circuiting
mode. This has the following effect:
If at least one of the operands is TRUE, then the result of the operation is TRUE, otherwise it is
FALSE.
When one operand is TRUE, then the expressions at the other operands are not evaluated (lazy
evaluation). In this regard, the OR_ELSE operator differs from the OR operator as defined in the
standard IEC-61131-3. OR always evaluates all expressions (see page 784).

Example
VAR
bEver: BOOL;
bX1: BOOL;
dw: DWORD := 16#000000FF;
END_VAR
bEver := FALSE;
bX := dw.8 OR_ELSE dw.1 OR_ELSE dw.1 OR_ELSE (bEver := TRUE);
dw.8 is FALSE and dw.1 is TRUE, thus the result of the operation (bX) is TRUE. However, the
expression at the third input is not executed, bEver remains FALSE. If you used the standard OR
operation instead (see page 784), bEver were set to TRUE.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 859
Operators

__TRY, __CATCH, __FINALLY, __ENDTRY

Definition
These operators are not specified by the IEC 61131-3 standard.
The __TRY, __CATCH, __FINALLY, __ENDTRY operators are used for specific handling of
exceptions in IEC code. With these operators, you can execute specific statements in case an error
is detected. Furthermore, the program is not stopped (as usual) when an exception is detected.

Syntax
__TRY
<statements_try>
__CATCH(exec)
<statements_catch>
__FINALLY
<statements_finally>
__ENDTRY
<statements_next>

Function
If an exception is detected while <statements_try> is executed (even in functions called from
there), then <statements_catch> is executed. In that way, execution does not stop as it is the
case when other exceptions are detected. However, there is a log message in the runtime system
with information about the range offset and the type of exception that has been detected.
After executing <statements_catch>, <statements_finally> is automatically executed (if
programmed), and then <statements_next> is executed.
The variable <exception> must be of type __SystemExceptionCode.

Example
If the statement in __TRY produces an exception, then program execution is not stopped, and then
the statements in __CATCH are executed. This means that the function exc is executed. Then the
statement in __ENDTRY is executed.
FUNCTION Tester : UDINT
VAR_INPUT
count : UDINT;
END_VAR
VAR_OUTPUT
strExceptionText : STRING;
END_VAR
VAR
exc : __SYSTEM.ExceptionCode;

860 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

END_VAR
__TRY
Tester := tryFun(count := count, testcase := g_testcase);
//This statement is tested. If it produces an exception, then the state
ment in __CATCH is executed first, and then the statement in __FINALLY.
__CATCH(exc)
HandleException(exc, strExceptionText => strExceptionText);
__FINALLY
GVL.g_count := GVL.g_count + 2;
__ENDTRY
Use the Stop execution on handled exceptions command (see EcoStruxure Machine Expert, Menu
Commands, Online Help) to stop execution at the error location despite the programmed exception
handling.

Type __System.Exception
TYPE ExceptionCode:
( RTSEXCPT_UNKNOWN := 16#FFFFFFFF,
RTSEXCPT_NOEXCEPTION := 16#00000000,
RTSEXCPT_WATCHDOG := 16#00000010,
RTSEXCPT_HARDWAREWATCHDOG := 16#00000011,
RTSEXCPT_IO_CONFIG_ERROR := 16#00000012,
RTSEXCPT_PROGRAMCHECKSUM := 16#00000013,
RTSEXCPT_FIELDBUS_ERROR := 16#00000014,
RTSEXCPT_IOUPDATE_ERROR := 16#00000015,
RTSEXCPT_CYCLE_TIME_EXCEED := 16#00000016,
RTSEXCPT_ONLCHANGE_PROGRAM_EXCEEDED := 16#00000017,
RTSEXCPT_UNRESOLVED_EXTREFS := 16#00000018,
RTSEXCPT_DOWNLOAD_REJECTED := 16#00000019,
RTSEXCPT_BOOTPROJECT_REJECTED_DUE_RETAIN_ERROR := 16#0000001A,
RTSEXCPT_LOADBOOTPROJECT_FAILED := 16#0000001B,
RTSEXCPT_OUT_OF_MEMORY := 16#0000001C,
RTSEXCPT_RETAIN_MEMORY_ERROR := 16#0000001D,
RTSEXCPT_BOOTPROJECT_CRASH := 16#0000001E,
RTSEXCPT_BOOTPROJECTTARGETMISMATCH := 16#00000021,
RTSEXCPT_SCHEDULEERROR := 16#00000022,
RTSEXCPT_FILE_CHECKSUM_ERR := 16#00000023,
RTSEXCPT_RETAIN_IDENTITY_MISMATCH := 16#00000024,
RTSEXCPT_IEC_TASK_CONFIG_ERROR := 16#00000025,
RTSEXCPT_APP_TARGET_MISMATCH := 16#00000026,
RTSEXCPT_ILLEGAL_INSTRUCTION := 16#00000050,
RTSEXCPT_ACCESS_VIOLATION := 16#00000051,
RTSEXCPT_PRIV_INSTRUCTION := 16#00000052,
RTSEXCPT_IN_PAGE_ERROR := 16#00000053,
RTSEXCPT_STACK_OVERFLOW := 16#00000054,

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 861
Operators

RTSEXCPT_INVALID_DISPOSITION := 16#00000055,
RTSEXCPT_INVALID_HANDLE := 16#00000056,
RTSEXCPT_GUARD_PAGE := 16#00000057,
RTSEXCPT_DOUBLE_FAULT := 16#00000058,
RTSEXCPT_INVALID_OPCODE := 16#00000059,
RTSEXCPT_MISALIGNMENT := 16#00000100,
RTSEXCPT_ARRAYBOUNDS := 16#00000101,
RTSEXCPT_DIVIDEBYZERO := 16#00000102,
RTSEXCPT_OVERFLOW := 16#00000103,
RTSEXCPT_NONCONTINUABLE := 16#00000104,
RTSEXCPT_PROCESSORLOAD_WATCHDOG := 16#00000105,
RTSEXCPT_FPU_ERROR := 16#00000150,
RTSEXCPT_FPU_DENORMAL_OPERAND := 16#00000151,
RTSEXCPT_FPU_DIVIDEBYZERO := 16#00000152,
RTSEXCPT_FPU_INEXACT_RESULT := 16#00000153,
RTSEXCPT_FPU_INVALID_OPERATION := 16#00000154,
RTSEXCPT_FPU_OVERFLOW := 16#00000155,
RTSEXCPT_FPU_STACK_CHECK := 16#00000156,
RTSEXCPT_FPU_UNDERFLOW := 16#00000157,
RTSEXCPT_VENDOR_EXCEPTION_BASE := 16#00002000
RTSEXCPT_USER_EXCEPTION_BASE :=16#00010000 )
UDINT ; END_TYPE

862 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

__VARINFO

Definition
This operator is not specified by the IEC 61131-3 standard.

Function
The __VARINFO operator provides information about a variable of the project at runtime. The
information is stored as a data structure in a variable of data type __SYSTEM.VAR_INFO.

Example
At runtime, the variable MyVarInfo contains the information about the variable MyVar.
//Declaration
VAR
MyVarInfo: __SYSTEM.VAR_INFO
MyVAR: INT;
END_VAR

//Program code
MyVarInfo:= __VARINFO (MyVar);

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 863
Operators

Type SYSTEM.VAR_INFO
A variable with data type __SYSTEM.VAR_INFO contains the following elements:

Element Description
ByteAddress Address of the variable.
ByteOffset Offset (in bytes).
Area Number of the memory area.
BitNr Number of the bit in the byte.
If it is not a bit type, the value is -1.
BitSize Size of the variable (in bits).
BitAddress Bit address of the variable.
TypeClass Data type class of the variable.
TypeName Data type of the variable.
NumElements For arrays: Number of array elements.
BaseTypeClass For arrays: Data type class of the base data type.
ElemBitSize For arrays: Bit size of an array element.
MemoryArea Information for the memory area: memory, input,
output, retain, global, local.
Symbol Variable name.
Comment Comment.

864 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

Scope Operators

Definition
In extension to the IEC operators, there are several possibilities to disambiguate the access to
variables or modules if the variables or module name is used multiple times within the scope of a
project.
The following scope operators can be used:
 global scope operator
 global variable list name
 enumeration name
 library namespace
 global node operator

Global Scope Operator


An instance path starting with dot (.) opens a global scope (namespace). Therefore, if there is a
local variable with the same name <varname> as a global variable, then .<varname> refers to
the global variable.

Global Variable List Name


You can use the name of a global variable list as a namespace for the variables enclosed in this
list. Thus, it is possible to declare variables with identical names in different global variable lists
and, by preceding the variable name by <global variable list name>., it is possible to
access the desired one.
Syntax
<global variable list name>.<variable>
Example
The global variable lists globlist1 and globlist2 each contain a variable named varx. In the
following line, varx out of globlist2 is copied to varx in globlist1:
[Link] := [Link];
If a variable name declared in more than one global variable lists is referenced without the global
variable list name as a preceding operator, a message will be generated.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 865
Operators

Library Namespace
You can add the library namespace to a POU as a prefix separated by a dot to make the access
to the POU unique. By default, the namespace of a library is identical to the library name.
Example: LIB_A.FB_A
Syntax
<library namespace>.<library POU>
Example
If a library which is included in a project contains the POU FB_A and there is also a POU FB_A
defined locally in the project, then you can assign the name LIB_A.FB_A to the function block of
the library in order to differentiate from the POU.
var1 := FB_A(in := 12); // Call of the project function block FB_A
var2 := LIB_A.FB_A(in := 22); // Call of the library function block FB_
A
You can define another name for the namespace either in the Project Information when creating a
library project in the Project Information (by default in the Project menu), or later in the Properties
dialog box of an included library in the Library Manager.

Enumeration Name
You can use the type name of an enumeration to disambiguate the access to an enumeration
constant. Therefore, it is possible to use the same constant in different enumerations.
The enumeration name has to precede the constant name, separated by a dot (.).
Syntax
<enumeration name>.<constant name>
Example
The constant Blue is a component of enumeration Colors as well as of enumeration Feelings.
color := [Link]; // Access to enum value Blue in type Colors
feeling := [Link]; // Access to enum value Blue in type Feelings

Global Node Operator


Variables declared in GVLs or POUs of the Global node of the Applications tree can be accessed
by prefixing them with the operator "__POOL.".

866 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operators

Section 34.11
Initialization Operator

Initialization Operator

INI Operator

Overview
NOTE: The INI operator is obsolete. The method FB_init replaces the INI operator. For further
information about the FB_init method, refer to the chapter FB_init, FB_reinit Methods
(see page 650). However, the operator can still be used for keeping compatibility with projects
imported from earlier EcoStruxure Machine Expert versions.
You can use the INI operator to initialize retain variables which are provided by a function block
instance used in the POU.
Assign the operator to a boolean variable.

Syntax
<bool-variable> := INI(<FB-instance, TRUE|FALSE)
If the second parameter of the operator is set to TRUE, all retain variables defined in the function
block FB will be initialized.

Example in ST
fbinst is the instance of function block fb, in which a retain variable retvar is defined.
Declaration in POU
fbinst:fb;
b:bool;
Implementation part
b := INI(fbinst, TRUE);
ivar:=[Link] (* => retvar gets initialized *)

Example of Operator Call in FBD

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 867
Operators

868 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Operands
EIO0000002854 06/2019

Chapter 35
Operands

Operands

What Is in This Chapter?


This chapter contains the following sections:
Section Topic Page
35.1 Constants 870
35.2 Variables 882
35.3 Addresses 887
35.4 Functions 889

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 869
Operands

Section 35.1
Constants

Constants

What Is in This Section?


This section contains the following topics:
Topic Page
BOOL Constants 871
TIME Constants 872
DATE Constants 874
DATE_AND_TIME Constants 875
TIME_OF_DAY Constants 876
Number Constants 877
REAL/LREAL Constants 878
String Constants 879
Typed Constants / Typed Literals 881

870 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operands

BOOL Constants

Overview
BOOL constants are the logical values TRUE and FALSE.
Refer to the description of the data type BOOL (see page 723).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 871
Operands

TIME Constants

Overview
TIME constants are used to operate the standard timer modules. The time constant TIME is of size
32 bit and matches the IEC 61131-3 standard. Additionally, LTIME is supported as an extension
to the standard as time base for high-resolution timers. LTIME is of size 64 bit and resolution
nanoseconds.
The library [Link] provides functions for WSTRING strings.

Syntax for TIME Constant


t#<time declaration>
Instead of t#, you can also use the following:
 T#
 time
 TIME

The time declaration can include the following time units. They have to be used in the following
sequence, but it is not required to use all of them.
 d: days
 h: hours
 m: minutes
 s: seconds
 ms: milliseconds

Examples of correct TIME constants in an ST assignment

Example Description
TIME1 := T#14ms; –
TIME1 := T#100S12ms; (* The highest component may be allowed to
exceed its limit *)
TIME1 := t#12h34m15s; –

Examples of incorrect usage

Example Description
TIME1 := t#5m68s; (* limit exceeded in a lower component *)
TIME1 := 15ms; (* T# is missing *)
TIME1 := t#4ms13d; (* incorrect order of entries *)

872 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operands

Syntax for LTIME Constant


LTIME#<time declaration>
The time declaration can include the time units as used with the TIME constant and additionally:
 us: microseconds
 ns: nanoseconds

Examples of correct LTIME constants in an ST assignment:


LTIME1 := LTIME#1000d15h23m12s34ms2us44ns
LTIME1 := LTIME#3445343m3424732874823ns
For further information, refer to the description of the TIME data types (see page 726).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 873
Operands

DATE Constants

Overview
Use these constants to enter dates.

Syntax
d#<date declaration>
Instead of d# you can also use the following:
 D#
 date
 DATE

Enter the date declaration in format <year-month-day>.


DATE values are internally handled as DWORD values, containing the time span in seconds since
01.01.1970, 00:00 clock.
Examples
DATE#1996-05-06
d#1972-03-29
For further information, refer to the description of the TIME data types (see page 726).

874 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operands

DATE_AND_TIME Constants

Overview
DATE constants and TIME_OF_DAY constants can also be combined to form so-called
DATE_AND_TIME constants.

Syntax
dt#<date and time declaration>
Instead of dt# you can use the following:
 DT#
 date_and_time
 DATE_AND_TIME

Enter the date and time declaration in format <year-month-day-hour:minute:second>.


You can enter seconds as real numbers. This allows you to specify fractions of a second.
DATE_AND_TIME values are internally handled as DWORD values, containing the time span in
seconds since 01.01.1970, 00:00 clock.
Examples
DATE_AND_TIME#1996-05-06-15:36:30
dt#1972-03-29-00:00:00
For further information, refer to the description of the TIME data types (see page 726).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 875
Operands

TIME_OF_DAY Constants

Overview
Use this type of constant to store times of the day.

Syntax
tod#<time declaration>
Instead of tod# you can also use the following:
 TOD#
 time_of_day#
 TIME_OF_DAY#

Enter the time declaration in format <hour:minute:second>.


You can enter seconds as real numbers. This allows you to specify fractions of a second.
TIME_OF_DAY values are internally handled as DWORD values, containing the time span in
milliseconds since 00:00 clock.
Examples
TIME_OF_DAY#15:36:30.123
tod#00:00:00
For further information, refer to the description of the TIME data types (see page 726).

876 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operands

Number Constants

Overview
Number values can appear as binary numbers, octal numbers, decimal numbers, and hexadecimal
numbers. Integer values that are not decimal numbers are represented by the base followed by the
number sign (#) in front of the integer constant. The values for the numbers 10...15 in hexadecimal
numbers are represented by the letters A...F.
You can include the underscore character within the number.
Examples

14 (decimal number)
2#1001_0011 (dual number)
8#67 (octal number)
16#A (hexadecimal number)

These number values can be of type:


 BYTE
 WORD
 DWORD
 SINT
 USINT
 INT
 UINT
 DINT
 UDINT
 REAL
 LREAL

Implicit conversions from larger to smaller variable types are not permitted. This means that a DINT
variable cannot simply be used as an INT variable. Use the type conversion functions
(see page 814).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 877
Operands

REAL/LREAL Constants

Overview
REAL and LREAL constants can be given as decimal fractions and represented exponentially. Use
the standard American format with the decimal point to do this.

Examples

7.4 instead of 7,4


1.64e+009 instead of 1,64e+009

878 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operands

String Constants

Overview
A string constant is an arbitrary sequence of characters. STRING (see page 725) constants are
preceded and followed by single quotation marks. WSTRING (see page 725) constants are
preceded and followed by double quotation marks. The characters are coded according to the
character set specified in ISO/IEC 8859-1. You may also enter blank spaces and special
characters (special characters for different languages, like accents or umlauts).
In strings, the combination of the dollar sign ($) followed by 2 hexadecimal numbers is interpreted
as a hexadecimal code according to the coding in ISO/IEC 8859-1. The code corresponds to
ASCII code. In addition, note the special cases presented in the table.

Hexadecimal Code
Combinations of characters starting with a dollar sign which are interpreted as hexadecimal code:

String with $ code Interpretation


'$<8-bit code>' 8-bit code: Two-digit hexadecimal number that is interpreted
according to ISO/IEC 8859-1.
'$41' A
'$9A' ©
'$40' @
'$0D' Control character: Line break (corresponds to '$R')
'$0A' Control character: New line (corresponds to '$L' and '$N')

Special Cases of a STRING


Combinations of characters starting with a dollar sign which have a specific meaning:

String with $ code Interpretation


'$L', '$l' Control character: Line feed (corresponds to '$0A')
'$N', '$n' Control character: New line (corresponds to '$0A')
'$P' '$p' Control character: Form feed
'$R', '$r' Control character: Line break (corresponds to '$0D')
'$T', '$t' Control character: Tab
'$$' Dollar sign $
'$'' Single straight quotation mark: '

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 879
Operands

Examples
Constant declaration of a STRING:
VAR CONSTANT
constA : STRING := 'Hello world';
constB : STRING := 'Hello world $21'; // Hello world!
END_VAR
Examples of WSTRING declarations:
wstr:WSTRING:="This is a WString";
wstr10 : WSTRING(10) := "1234567890";

880 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operands

Typed Constants / Typed Literals

Overview
Basically, in using IEC constants, the smallest possible data type will be used. An exception is
REAL/LREAL constants where LREAL is always used. If another data type has to be used, use
typed literals (typed constants) without the necessity of explicitly declaring the constants. For this
purpose, the constant will be provided with a prefix which determines the type.

Syntax
<Type>#<Literal>
<Type> is the desired data type. Possible entries are:
 BOOL
 SINT
 USINT
 BYTE
 INT
 UINT
 WORD
 DINT
 UDINT
 DWORD
 REAL
 LREAL

Write the type in uppercase letters.


<Literal> specifies the constant. The data entered has to fit within the data type specified in
<Type>.
Example
var1:=DINT#34;
If the constant cannot be converted to the target type without data loss, a message will be
generated.
You can use typed literals wherever normal constants can be used.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 881
Operands

Section 35.2
Variables

Variables

What Is in This Section?


This section contains the following topics:
Topic Page
Variables 883
Addressing Bits in Variables 884

882 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operands

Variables

Overview
You can declare variables either locally in the declaration part of a POU or in a global variable list
(GVL) or in a persistent variables list or in the I/O mapping of devices.
Refer to the chapter Variables Declaration (see page 619) for information on the declaration of a
variable, including the rules concerning the variable identifier and multiple use.
It depends on the data type (see page 721) where a variable can be used.
You can access available variables through the Input Assistant.

Accessing Variables for Arrays, Structures, and POUs


The table lists the respective syntax for accessing arrays, structures, and POUs:

Syntax Access to
<array name>[Index1, Index2] 2-dimensional array (see page 740)
components
<structure name>.<variable name> structure (see page 744) variables
<function block name>.<variable name> function block and program variables

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 883
Operands

Addressing Bits in Variables

Overview
In integer variables, individual bits can be accessed. For this purpose, append the index of the bit
to be addressed to the variable and separate it by a dot. You can give any constant to the bit index.
Indexing is 0-based.

Syntax
<variablename>.<bitindex>

Example
a : INT;
b : BOOL;
...
a.2 := b;
The third bit of the variable a will be set to the value of the variable b, this means that variable a
will equal 3.
If the index is greater than the bit width of the variable, the following message will be generated:
'Index '<n>' outside the valid range for variable '<var>'!'
Bit addressing is possible with variables of the following data types:
 SINT
 INT
 DINT
 USINT
 UINT
 UDINT
 BYTE
 WORD
 DWORD

If the data type does not allow bit accessing, the following message will be generated:
'Invalid data type '<type>' for direct indexing'.
Do not assign bit access to a VAR_IN_OUT variable.

884 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operands

Bit Access Via a Global Constant


If you have declared a global constant defining the bit index, you can use this constant for a bit
access.
Example for a bit access via a global constant and on a variable:
1. Declaration of the global constant in a global variable list
The variable enable defines the bit that is accessed:
VAR_GLOBAL CONSTANT
enable:int:=2;
END_VAR
2. Bit access on an integer variable
Declaration in POU:
VAR
xxx:int;
END_VAR
Bit access:
[Link] := true; (* -> the third bit in variable xxx will be set TRUE
*)

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 885
Operands

Bit Access on BIT Data Types


The BIT data type is a special data type which is only allowed in structures. For further information,
refer to Bit Access in Structures (see page 745).
Example: Bit access on BIT data types
Declaration of structure
TYPE ControllerData :
STRUCT
Status_OperationEnabled : BIT;
Status_SwitchOnActive : BIT;
Status_EnableOperation : BIT;
Status_Error : BIT;
Status_VoltageEnabled : BIT;
Status_QuickStop : BIT;
Status_SwitchOnLocked : BIT;
Status_Warning : BIT;
END_STRUCT
END_TYPE
Declaration in POU
VAR
ControllerDrive1:ControllerData;
END_VAR
Bit access
ControllerDrive1.Status_OperationEnabled := TRUE;

886 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operands

Section 35.3
Addresses

Addresses

Direct Addresses

Overview
A direct address specified in EcoStruxure Machine Expert contains the following information:
 Information on the memory location.
 Memory format (size)
 Offset of the memory location. The offset is specified by an integer number, which in case of a
bit address is followed by a dot and a number for the position of the bit.

Syntax
%<memory area prefix><size prefix><number|.number|.number....>
The following memory area prefixes are supported:

I input (physical inputs via input driver, sensors)


Q output (physical outputs via output driver, actors)
M memory location

The following size prefixes are supported:

X single bit
None single bit
B byte (8 bits)
W word (16 bits)
D double word (32 bits)

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 887
Operands

Examples

Example address Description


%QX7.5 output bit 7.5
%Q7.5
%IW215 input word 215
%QB7 output byte 7
%MD48 double word in memory position 48 in the memory location
ivar AT %IW0: WORD; example of a variable declaration including an address assignment
For further information, refer to the AT Declaration chapter (see page 632).

NOTE: The memory size for input, output, and memory data (declarations with AT %I, %Q and %M)
is predefined by the target device and can be overwritten in the properties of an application object
(see EcoStruxure Machine Expert, Menu Commands, Online Help) for PacDrive controllers
(PacDrive LMC Eco, PacDrive LMC Pro/Pro2).

Byte Addressing Mode and Word Addressing Mode


Devices either use byte addressing mode or word addressing mode.
Examples

Mode Example
Byte addressing ADR(%IW1) = ADR(%IB1)
Word addressing ADR(%IW1) = ADR(%IB2)

The range for the second element of the bit address that is the number following the dot, is as
follows:
 byte addressing mode: 0...7
 word addressing mode: 0...15

Also for the handling of bit addresses, you can configure the devices differently. They are then
interpreted correspondingly by the EcoStruxure Machine Expert compiler.
Example: In a byte-addressing device, the bit address %IX2.5 addresses byte 2 (IB2). In a word-
addressing device, however, it addresses word 2, which refers to a different location within the
memory.
NOTE: Boolean values are allocated bytewise if no explicit single-bit address is specified.
Example: A change in the value of varbool1 AT %QB7 affects the range from QX0.0 to QX0.7.

888 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Operands

Section 35.4
Functions

Functions

Functions

Overview
In ST, a function call can be used as an operand.

Example
Result := Fct(7) + 3;
For a general description of functions and their declarations, refer to the Function description in the
Program Organization Unit (POU) section of this Programming Guide (see page 178).

TIME() Function
This function returns the time (based on milliseconds) which has been passed since the system
was started.
The data type is TIME.
Example in IL
TIME
ST systime (* Result for example: T#35m11s342ms *)
Example in ST
systime:=TIME();

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 889
Operands

890 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
EcoStruxure Machine Expert Templates
EIO0000002854 06/2019

Part VIII
EcoStruxure Machine Expert Templates

EcoStruxure Machine Expert Templates

What Is in This Part?


This part contains the following chapters:
Chapter Chapter Name Page
36 General Information about Templates 893
37 Managing Device Templates 905
38 Managing Function Templates 919

EIO0000002854 06/2019 891


EcoStruxure Machine Expert Templates

892 EIO0000002854 06/2019


EcoStruxure Machine Expert
General Information about Templates
EIO0000002854 06/2019

Chapter 36
General Information about Templates

General Information about Templates

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 893
General Information about Templates

Section 36.1
EcoStruxure Machine Expert Templates

EcoStruxure Machine Expert Templates

What Is in This Section?


This section contains the following topics:
Topic Page
General Information About EcoStruxure Machine Expert Templates 895
Administration of EcoStruxure Machine Expert Templates 897

894 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
General Information about Templates

General Information About EcoStruxure Machine Expert Templates

Overview
EcoStruxure Machine Expert provides templates in order to make dedicated control and
visualization functionality that has been developed in one EcoStruxure Machine Expert project
easily available to other EcoStruxure Machine Expert projects. They help to standardize the usage
of field devices and application functions throughout different EcoStruxure Machine Expert
projects.
The following types of templates are available:
 Device templates that are associated with a single field device or I/O module
 Function templates that are associated with a high-level application function

EcoStruxure Machine Expert provides various templates, but you can also create your own
templates for functionalities you want to make available in other projects.

Creating Your Own Templates


The following steps are required for EcoStruxure Machine Expert templates:

Step Action
1 Create your functionality within a EcoStruxure Machine Expert project and test it with the
appropriate hardware or in the simulation.
2 Save the functionality in a template library.
3 Open another EcoStruxure Machine Expert project and select the template from the template
library in order to make the functionality available to this project.

General Notes
When using EcoStruxure Machine Expert templates, note the following:
 Templates are not controller-specific and can therefore be made available for any controller.
Verify that the controller to which you add the template is capable of executing the functionality
contained in the template.
 After the template has been installed, you can freely adapt the created objects to your individual
requirements.
 It is possible to install one template several times on the same controller device. In order to avoid
naming conflicts when creating the objects, they are renamed automatically during installation.
For further information, refer to the Naming of Objects section of the Adding Devices from
Template chapter (see page 910).
 Templates do not support the use of direct representations of variables (for example %IX2.0).
However, you can use direct representations with an incomplete address specification (for
example %I*). For further information, refer to the chapter Variables configuration -
VAR_CONFIG (see page 645).
NOTE: Although this form of placeholder for direct addresses is available, avoid direct addressing
in your programs, and use symbolic addressing wherever and whenever possible.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 895
General Information about Templates

Supported I/O Modules


EcoStruxure Machine Expert templates can include the following I/O modules:
 TM2
 TM3
 TM5

Supported Fieldbusses
EcoStruxure Machine Expert templates can include field devices that are linked to the following
fieldbusses:
 CANopen
 Modbus serial line (Modbus IOScanner)
 Modbus TCP IO Scanner
 SoftMotion General Drive Pool (LMC058)
 CANmotion
 Ethernet IP Scanner
 Sercos3

896 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
General Information about Templates

Administration of EcoStruxure Machine Expert Templates

Overview
The following paragraphs provide an overview of how to create new or change existing device or
function templates and to save them as files for transferring them to other PCs.

Template Libraries
Template libraries contain the definition of several device or function templates.

Write Protection
The standard template libraries included in the EcoStruxure Machine Expert scope of delivery are
write-protected, which means that they cannot be deleted or renamed.
NOTE: You cannot change write-protected libraries (uninstalling individual templates or changing
names), but you can completely uninstall them.

Template Administration
For administration of the available device and function templates in EcoStruxure Machine Expert,
select Tools → Template Repository in the EcoStruxure Machine Expert Logic Builder.
The Template Repository dialog box opens:

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 897
General Information about Templates

From the Location list, select the type of templates to be displayed in the Installed Templates box:
 <All locations> is selected by default: all available device and function templates are displayed
 Legacy displays the device and function templates of EcoStruxure Machine Expert V3.1 (if
installed)
 User: displays only those device and function templates that you have created or installed
 System: displays the standard device and function templates delivered by EcoStruxure Machine
Expert
The path to the directory where the template libraries are stored is displayed below the Location
field.
The Installed Templates box lists the installed templates in 2 groups: Device Templates and
Function Templates. Each template library can either contain device templates or function
templates.

Installing Additional Template Libraries


To add additional template libraries to this list, proceed as follows:

Step Action
1 Click the Install button in the Template Repository dialog box.
Result: A File open dialog box opens.
2 Browse to the folder where the template library file you want to install is saved.
3 Select the library file you want to install and click OK.
Result: The selected template library is installed and is indicated in the Template Repository
dialog box, including the device or function templates it contains.

Removing Template Libraries


To remove a template library, proceed as follows:

Step Action
1 In the Installed Templates list of the Template Repository dialog box, select the template library
you want to remove.
2 To remove the selected template library, click the Uninstall button.
Result: The selected template library is removed from the installation.

898 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
General Information about Templates

Renaming Template Libraries


To rename a template library, proceed as follows:

Step Action
1 In the Installed Templates list of the Template Repository dialog box, select the template library
you want to rename.
2 Click the name of the template library you want to change.
Result: A box opens.
3 Enter the new name in the box and press Enter or leave the box.
Result: The template library is now assigned to the new name.

Creating a New Template Library


To create a new template library, proceed as follows:

Step Action
1 To create a new template library, select the option User or <All locations> from the Location list.
2 To create a new template library for device templates, select the Device Templates node in the
Installed Templates list and click the Create Library button.
Result: A new template library with a default name is added at the bottom of the Device
Templates section of the Installed Templates list.
To create a new template library for function templates, select the Function Templates node in
the Installed Templates list and click the Create Library button.
Result: A new template library with a default name is added at the bottom of the Function
Templates section of the Installed Templates list.
3 Rename the new template library as stated above and fill it with device or function templates by
using for example the copy and paste operations described below.

Saving Template Libraries as File


The template libraries that contain device or function templates are EcoStruxure Machine Expert-
specific XML files.
To provide them for use on other PCs, proceed as follows:

Step Action
1 Select the template library you want to export in the Installed Templates list.
2 Click the Save As File... button.
3 In the Save File dialog box, navigate to the folder where you want to save the template library
file.
4 Transfer the template library file to the other PC and install it by using the Template Repository.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 899
General Information about Templates

Copy and Paste Operations for Template Libraries


The Template Repository dialog box also supports the copy and paste operation for template
libraries.
To copy a template library with the device or function template it contains, select the respective
item in the Installed Templates list and click the Copy button.
Now select the Device Templates or Function Templates node, and click the Paste button to insert
a copy of this template library with a default name in the Installed Templates list.
Replace the default name by a name of your choice.

Copy and Paste Operations for Templates


The Template Repository dialog box supports the copy and paste operation for device or function
templates.
To copy a device or function template, select the respective item from below a template library
node in the Installed Templates list and click the Copy button.
You can now paste the template into a template library if the library is not write-protected.
A library can only be pasted into a library of the same kind.
Replace the default name, if you wish, by a name of your choice.

Adding Further Information for Templates or Template Libraries


The Template Repository dialog box allows you to enter further information for templates or
template libraries.
To add further information, select a library or template library in the Installed Templates list and
click the Properties... button.

900 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
General Information about Templates

The Properties dialog box for the selected library or template library is displayed.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 901
General Information about Templates

If the selected library or template library is not write-protected, the Properties dialog box contains
the following parameters that you can edit, along with their corresponding buttons:

Element Description
Template Name / Library Name box Indicates the name of the library or template library these properties apply to.
To change the name, click this box and adapt the name according to your
requirements.
Help ID box For Schneider Electric templates or template libraries, contains the reference
to the respective description in the online help.
If there is an online help document available for your templates, you can
enter a full reference to its location in the online help or a keyword
corresponding to an index in the online help.
Show Help button Opens the online help document specified in the Help ID box or the index of
the online help searching for the keyword specified in the Help ID box.
Info section –
Language list Contains the languages that are available for the graphical user interface of
EcoStruxure Machine Expert. If you select a language, the content of the
language-dependent elements Comment, Description, and Picture is
displayed in the selected language.
If no language-specific content is available, the default language English is
displayed.
Import From File Displays a standard Open dialog box. It allows you to browse for an XML file
button that contains the localized content of the language-dependent elements
Comment, Description, and Picture. The structure of this XML file must
follow the structure indicated in the example (see page 903).
Comment box Allows you to enter a short text (for example to provide an overview of the
contents and purpose of the selected library or template library). This text is
indicated as a tooltip when you select template libraries in EcoStruxure
Machine Expert.
Description box Allows you to enter a long text (for example to provide a detailed description
of the contents and purpose of the selected library or template library.
Picture parameter Allows you to enter a path to a language-specific picture.
... button You can also click the ... button to browse for the graphic file.
Supported graphic formats:
 Bitmap: *.bmp
 JPEG: *.jpg
 Graphics interchange format: *.gif
 Icon: *.ico

After the picture has been specified, it will be displayed in the Properties
dialog box.
If you click the OK button, the picture is embedded in the template.

The check box Read-Only is only available for template libraries to indicate whether the selected
template library is in read-only status. It is not possible to change the status of the template library
here.

902 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
General Information about Templates

Localization of Language-Dependent Elements


You can localize the content of the language-dependent elements Comment, Description, and
Picture by importing an XML file with the following structure:
<?xml version="1.0" encoding="UTF-8"?>
<TemplateProperties>
<HelpId>[Link]::/SoMProg_D-[Link]#D-SE-0001286.1</HelpId>
<PropertySet languageId = "en">
<Comment>This is a short description</Comment>
<Description>This is a long description</Description>
<ImageFile>[Link]</ImageFile>
</PropertySet>
<PropertySet languageId = "de">
<Comment>Kurze Beschreibung</Comment>
<Description>Lange Beschreibung</Description>
<ImageFile>[Link]</ImageFile>
</PropertySet>
</TemplateProperties>

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 903
General Information about Templates

904 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Managing Device Templates
EIO0000002854 06/2019

Chapter 37
Managing Device Templates

Managing Device Templates

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 905
Managing Device Templates

Section 37.1
Managing Device Templates

Managing Device Templates

What Is in This Section?


This section contains the following topics:
Topic Page
Facts of Device Templates 907
Adding Devices from Template 908
Creating a Device Template on the Basis of Field Devices or I/O Modules 911
Visualizations Suitable for Creating Device Templates 912
Further Information on Integrating Control Logic into Device Templates 913
Steps to Create a Device Template 915

906 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Device Templates

Facts of Device Templates

General Information on the Usage of Terms


The following description applies to field devices as well as to I/O modules even though only the
term field device is used to increase readability.

Content of Device Templates


Device templates are related to a specific field device or I/O module. They contain the following
information:
 Fieldbus configuration
 Control logic (controller programming) (optional)
 Visualization elements (visualization programming) (optional)

Using Device Templates


Already available device templates are saved in template libraries. Each template library contains
the definition for several device templates that have a common base (are related to motor control,
for example).
You can select them and adapt them to the requirements of your individual EcoStruxure Machine
Expert projects in order to create new pre-configured and ready to use field devices.

Creating New Device Templates


To make your already configured field devices reusable for any EcoStruxure Machine Expert
project, save them as device templates. This also includes the controller programming and
visualization linked to this field device.

Versions of Device Templates


During the creation of a device template, a verification is performed whether the device description
for the device to be created actually exists. If it does not, the device is automatically updated to the
latest version if a later version exists.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 907
Managing Device Templates

Adding Devices from Template

Overview
Device templates are related to a specific fieldbus device. They contain the following information:
 Fieldbus device configuration
 Control logic (controller programming) (optional)
 Visualization elements (visualization programming) (optional)

You can create your own device templates from your project. For details, refer to the Steps to
Create a Device Template chapter (see page 915).

Add Device from Template


EcoStruxure Machine Expert provides 2 ways to add a device from a device template:
 Creating a device using a device template by drag-and-drop:

Step Action
1 Open the Devices & Modules view of the hardware catalog.
2 At the bottom of the Devices & Modules view, activate the option Device Template.
Result: The templates of field devices available in EcoStruxure Machine Expert are displayed in the
Devices & Modules view.
3 Select an entry in the Devices & Modules view, drag it to the Devices tree, and drop it at a suitable
subnode of a controller.
Remark: Suitable subnodes are highlighted by EcoStruxure Machine Expert.
Result: The Add Device From Template dialog box displays.

4 In the Add Device From Template dialog box, set the Device Name as well as the Device Address if the
fieldbus requires numerical addresses. In case the device templates includes control logic, select the
program (POU) in which the control logic is inserted.
5 Click the OK button.
Result: The device is created and parameterized according to the selected device template including the
optional visualization screens and control logic.

908 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Device Templates

 Creating a device using a device template via contextual menu:

Step Action
1 Open the Devices tree.
2 Right-click field device manager, and execute the command Add Device From Template from the
contextual menu.
Result: The Add Device From Template dialog box displays.

3 In the Add Device From Template dialog box, select the Device Template to be used, and set the Device
Name as well as the Device Address if the fieldbus requires numerical addresses. In case the device
templates includes control logic, select the program (POU) in which the control logic is inserted.
4 Click the OK button.
Result: The device is created and parameterized according to the selected device template including the
optional visualization screens and control logic.

NOTE: The undo / redo function is not available for the process of creating field devices.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 909
Managing Device Templates

Naming of Objects
In order to avoid naming conflicts if the same device template is used as a basis for creating
different field devices, the following naming conventions are applied to the field devices and the
associated objects (FB, visualization, and variables):

If the name of the original object... Then ...


Case 1:
contains the name of the original field device, this part of the object is replaced by the name of the new field
device that is created.
Example:
The device template for the field device ATV1 For a new device Axis1 being created with this device
contains a variable Var_ATV1_Input. template, the new variable is correspondingly named
Var_Axis1_Input.
Case 2:
does not contain the name of the original the name of the new device plus an underscore are inserted
device, in the original name to form a unique new name.
Example:
The device template for the field device ATV1 For a new device Axis1 being created with this device
contains a variable Var_Input1. template, the new variable is correspondingly named
Axis1_Var_Input1.

910 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Device Templates

Creating a Device Template on the Basis of Field Devices or I/O Modules

Overview
You can create device templates based on field devices or I/O modules. The following description
applies to field devices as well as to I/O modules even though only the term field device is used to
increase readability.
The following paragraphs list:
 The criteria that must be fulfilled in order to save a field device or I/O module, including logic and
visualization, as device template;
 The information that is saved in the device template.

Prerequisites for Field Devices


The field devices must meet the following criteria in order to be saved as device templates:
 Field devices must be linked to the fieldbusses listed in the Supported Fieldbusses list
(see page 896);
 The device type must be installed in the Device Repository.

Prerequisites for I/O Modules


Only the supported I/O modules can be saved as device templates (see page 896).

Prerequisites for the Application


You can only create templates from correct applications. Correct means that no errors are detected
during the Build process.

Prerequisites for Including Control Logic into a Template


In order to include control logic into a template, it is required that the control logic contains one or
more code sections that exchange data with this field device. This control logic must be executed
(added to a task or called by another program). Otherwise, it is not considered when executing the
Build command.

Device Information Saved in Device Templates


The following information of field devices is saved in device templates:
 Device configuration
 I/O mapping of the field device
 Visualizations that are suitable for the field device
 Control logic exchanging data with the field device

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 911
Managing Device Templates

Visualizations Suitable for Creating Device Templates

Overview
Each device template can be associated with 1 or more Logic Builder visualizations. The supported
types of visualizations are described as follows.

Supported Visualizations
EcoStruxure Machine Expert supports both types of visualizations:
 Plain visualizations
 Modular visualizations using frames

Visualizations using frames have a better flexibility and modularity.

Plain Visualizations
Visualizations without frames are based on a single visualization object, created for the I/O device.
EcoStruxure Machine Expert references the data of the I/O device within the properties of the
visual elements. When you create a new device based on this device template, EcoStruxure
Machine Expert directly replaces the variables in the properties of the visual elements.

Visualizations Using Frames


A visualization using frames is built from a main screen that can be embedded with other
visualizations, using a number of smaller visualizations to be combined like modules in predefined
areas of the main screen (frames).
In the main screen, a frame-object is placed like a rectangular object as the container. You can
assign another visualization to such a container.
The embedded visualization can then be used with an interface to access visual elements
internally.
For more information, refer to the part Software → CODESYS Visualization of the EcoStruxure
Machine Expert online help.
To use embedded visualizations for device templates, define an interface that includes definitions
of all variables related to the connection to the I/O device or function block for each visualization
module. When you create a new device based on this device template, EcoStruxure Machine
Expert adapts all placeholders of the embedded visualizations according to the created I/O device
name.
NOTE: All the visualizations using frames and the function blocks linked to the specific I/O device
must be defined in a library so that EcoStruxure Machine Expert can find them.

912 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Device Templates

Further Information on Integrating Control Logic into Device Templates

Overview
You can include control logic into a device template if the logic contains one or more code sections
that exchange data with this field device in one of the following ways:
 A code section uses a new variable that is defined in the I/O mapping of the field device.
 A code section and the I/O mapping of the field device use a common variable that is defined in
a GVL or a controller program contained by the application to which the code section belongs.
NOTE: If you use structures or arrays, verify that they are only related to a single field device.
 A code section and the field device use a fix device-specific variable (for example the axis-ref
variables used with the Altivar or Lexium drives).

Interconnected Calls of Code Sections


Code sections consist of a sequence of interconnected calls of function blocks, functions, and
operators.
If one of the following relationships exists between the individual calls, they are considered as
being connected:
 a graphical connection exists between the individual calls in CFC, FBD, and LD
 a variable is connected to the output of the one call and the input of the other call
 One call uses the parameter of the other call

Individually Selecting Function Blocks


You can individually select the function blocks that are included in those code sections that
exchange data with the field device to be included in the device template. This allows you to create
different device templates providing different functions for the same field device.
NOTE: The function block type must be defined in a library.

Including Expressions into Device Templates


The expressions, as well as the variables used in these expressions that are connected to the
parameters of a function block, function or operator are automatically saved in the device template.

General Practices for the Creation of Control Logic


Only include simple control logic in a device template.
By this way, the code sections work identically even if they are created in different IEC languages.
NOTE: For complex control logic, you should rather create a function template.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 913
Managing Device Templates

Practices for the Creation of Control Logic in FBD / LD


Avoid edge detection elements because they do not exist in other IEC languages.
If possible, use R_TRIG or F_TRIG function blocks instead.

Practices for the Creation of Control Logic in CFC


Use the command Execution Order → Order By Data Flow to order the CFC elements belonging
to the same code section according to their position in the data flow. This provides a better
compatibility with other IEC languages.
Provide space (in horizontal direction) between the individual CFC elements because, due to
renaming, the names of variables are extended when a new device is created from a template.

Control Logic Example


The following figure shows a typical example of a code section for an Advantys OTB distributed I/O
device in a conveying application:

The code section consists of the following function blocks:

Name Type Function


InOTB_Conv20 Input block Converting data coming from the OTB into
the format required by the control block
Conv20 Control block Processing data
OutOTB_Conv20 Output block Converting data coming from the control
block into the format required by the OTB

The variables InByte1_Conv20, InByte2_Conv20 and OutByte_Conv20 are defined in the


I/O mapping of the OTB. This means that the code section exchanges data with the OTB device.
It can thus become part of the device template.

914 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Device Templates

Steps to Create a Device Template

Overview
The following paragraphs list the steps that have to be performed in order to save field devices
meeting the criteria stated in Creating a Device Template on the Basis of Field Devices
(see page 911).

Steps for Saving a Field Device as Template


To save an already existing field device as device template, proceed as follows:

Step Action
1 Right-click the field device you want to save as device template in the Devices tree.
2 Select the command Save As Device Template from the contextual menu.
Result: EcoStruxure Machine Expert automatically builds the application. After the built process has been
successfully completed, the Save as Device Template dialog box will be displayed.
3 Define the new device template in the Save as Device Template dialog box as stated below.
4 Click OK to close the Save as Device Template dialog box and to create your new device template.

Save As Device Template Dialog Box


The Save As Device Template dialog box contains the following parameters:

1 indicates the type of the field device on which the device template is based
2 indicates the fieldbus type of the field device
3 the name of the device template that will be created (initially the name of the original field device)
4 select the template library the device template will be added to
5 select function blocks and visualizations that should be saved with the device template
6 Properties button to add further information to the device template

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 915
Managing Device Templates

Defining a Name for the New Device Template


Use the text box Template Name to define a name for your device template.
By default, this text box includes the name of the selected field device.
You can either type the name of your choice directly into this text box, or you can click the ... button
to select an existing device template from the lists if you want to overwrite this device template.

Selecting the Template Library


To select one of the previously installed or created template libraries in which the device template
should be stored, proceed as follows:

Step Action
1 In the Save as Device Template dialog box, click the ... button right to the Template Library text box.
Result: The Select Template Library dialog box will be displayed.
2 The Select Template Library dialog box displays all template libraries that have been installed for the
current project or have been created. Write-protected template libraries are not displayed.
To add the new device template to 1 of these template libraries, select the suitable entry and click OK.

Selecting the Function Blocks


To select the function block instances to be included into the device template, proceed as follows:

Step Action
1 In the Save as Device Template dialog box, click the ... button to the right of the Function Blocks text box.
Result: The Select Function Block dialog box will be displayed.
The Select Function Block dialog box displays all function block instances contained by the control logic
of the field device (see page 913).
2 Select the check box of an individual function block to select it for the device template.
Or select the check box of a root node to select all elements below this node.
3 Click the OK button.

Selecting the Visualizations


To select the visualizations to be included into the field device, proceed as follows:

Step Action
1 In the Save as Device Template dialog box, click the ... button to the right of the Visualizations text box.
Result: The Select Visualizations dialog box will be displayed.
The Select Visualizations dialog box displays those visualizations that are linked with the field device or
with one of the selected function blocks.
2 Select the check box of an individual visualization to select it for the device template.
Or select the check box of a root node to select all elements below this node.
3 Click the OK button.

916 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Device Templates

Adding Further Information to the New Device Template


To add further information to the new device template, click the Properties... button. The Properties
dialog box opens. It allows you to enter further information for the device template. Since the dialog
box is identical for device templates and template libraries, see the description in the Adding
Further Information for Templates or Template Libraries chapter (see page 900).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 917
Managing Device Templates

918 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Managing Function Templates
EIO0000002854 06/2019

Chapter 38
Managing Function Templates

Managing Function Templates

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 919
Managing Function Templates

Section 38.1
Managing Function Templates

Managing Function Templates

What Is in This Section?


This section contains the following topics:
Topic Page
Facts of Function Templates 921
Adding Functions from Template 922
Application Functions as Basis for Function Templates 928
Steps to Create a Function Template 930

920 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Function Templates

Facts of Function Templates

Content of Function Templates


Function templates represent dedicated control and visualization functionality that are associated
with an application function.
A function template may include the following elements:
 One or several IEC programs, functions, or function blocks
 One or several user-defined data types (DUT)
 One or several field devices or I/O modules that are being used by the application function
 One or several visualizations that are being used to visualize the application function
 One or several global variable lists
 One or several global variables that may be shared with other application functions
 One or several text lists and image pools
 One or several traces
 One or several CAM tables (for CANmotion)
 One or several I/O variables to be mapped on an I/O channel
 One or several template parameters

Using Function Templates


Already available function templates are saved in template libraries. Each template library contains
the definition for several function templates that have a common base (for example, all are related
to packaging applications).
You can easily select them and adapt them to the requirements of your individual EcoStruxure
Machine Expert projects in order to create new ready to use application functions.

Creating New Function Templates


To make your already created application function reusable for any EcoStruxure Machine Expert
project, you can save it as function template.
When you save the function template, decide in which template library it should be stored.

Versions of Function Templates


During the creation of a function template, a verification is performed whether the device
description for the device to be created actually exists. If it does not, the device is automatically
updated to the latest version if a later version exists.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 921
Managing Function Templates

Adding Functions from Template

Procedure
EcoStruxure Machine Expert provides two ways to add a function from a function template:
To add an application function from a function template via drag-and-drop, proceed as follows:

Step Action
1 Open the Macros view of the Software Catalog.
2 Drag a function template from the Macros view and drop it on a suitable node in a navigator.
Suitable nodes are:
 An application node in the Applications tree
 A folder node below an application node in the Applications tree
 A controller node in the Functional tree
 A functional module node in the Functional tree

Result: The Add Function From Template dialog box opens.

Alternatively, you can add an application function from a function template by right-clicking a
suitable node in a navigator and executing the command Add Function From Template from the
contextual menu.

922 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Function Templates

Add Function From Template Dialog Box

The Add Function From Template dialog box provides the following elements to configure your
function:

Element Description
Function Name text box Enter a name that is used for the new folder of this application and for
the naming of the elements it contains.
Function Template Click the ... button and select a function template from the Select
Function Template dialog box.
I/O Devices table –
Device Name Contains the name of the future field device. You cannot change this
name.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 923
Managing Function Templates

Element Description
Device Type Indicates the type of the field device. You cannot edit this cell.
Fieldbus Type Indicates the fieldbus type of the field device. You cannot edit this cell.
Master Contains the fieldbus master to which the field device is connected. If
there are several masters, you can select the master of your choice
from the list.
Address Initially empty. For field devices on fieldbusses that require numerical
addresses (Modbus serial line and CANopen), click the ... button right
to the field and assign the address of your choice.
I/O Mapping table Lists the I/O variables that are part of the function template. It allows
you to map them to the I/O channels of existing devices and modules.
Name Contains the name of the I/O variable that has to be mapped on an
I/O channel.
Data Type Indicates the data type of the I/O channel to which the I/O variable was
originally mapped.
Mapping Click the ... button to open the Select I/O Mapping dialog box. It allows
you to select an I/O channel on which you can map the selected
variable.
After the variable has been mapped to an I/O channel, this Mapping
field contains the input or output address of the I/O channel on which
the variable is mapped.
Description Contains a description of the I/O variable.
Parameters table Lists the template parameters included in the function template.
Object Indicates the name of the GVL or program in which the variable is
defined. You cannot edit this field.
Name Contains the name of the variable. You cannot edit this cell.
Data Type Indicates the data type of the variable. You cannot edit this cell.
Default Indicates the default value of the variable. This is the initial value of the
variable when the template was created. You cannot edit this cell.
New Value Edit this cell if you want to assign a new value to the variable. If you
leave this cell empty, the Default value is used for this variable.
Enter a value that is valid for the given data type.
Description Contains a description of the variable.
OK button Confirm your settings by clicking the OK button.
Result: EcoStruxure Machine Expert verifies whether the settings are
correct and inserts the new application function as separate node
below the Application node or displays an error detection message.

924 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Function Templates

Select I/O Mapping Dialog Box


The Select I/O Mapping dialog box is used to map a variable selected in the Add Function From
Template dialog box to an I/O channel.
It displays the available I/O channels in a tree structure, similar to the Devices tree. The root node
is the controller. Only those I/O channels are displayed whose data type fits to the data type of the
new variable.
Two data types are compatible if they have identical type names or if they are elementary IEC data
types of the same size.
Example:
UINT --> INT allowed
UDINT --> INT not allowed
Display the subnodes by clicking the plus signs.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 925
Managing Function Templates

The Select I/O Mapping dialog box contains the following columns:

Column Description
Channel Contains the tree structure. Each device is represented by the device name and
the device icon. Each I/O channel is represented by the channel name.
Address Contains the input / output address that corresponds to the I/O channel.
Mapping Contains the I/O variable that is currently mapped on the I/O channel.
Description Contains the description of the I/O channel.

Consider the following practices for mapping variables to I/O channels:


 Map all variables provided by the function template to I/O channels.
 You can map an I/O variable of a function template to an I/O channel that already has a
mapping. The existing mapping is overwritten.
 Any mappings that lead to multiple assignments of variables on the same I/O channel are not
allowed.

Objects Created
The function template creates the following objects in your project:

Object Description
Root folder A new folder is created under the Application node in the Devices tree that is named as defined
in the Function Name text box.
Field devices The field devices that are included in the function template are created using names that apply
to the naming rules and are connected to the fieldbus master. The I/O mapping is automatically
adjusted, if necessary.
Objects available The objects that are included in the function template are created below the root folder in the
as subnodes of the respective navigator (Devices tree, Applications tree, Tools tree) using names that apply to the
root folder in the naming rules. The properties of the objects are automatically adjusted.
navigators
Task configuration The task configuration is adjusted as required by the function template.
Global variable The global variable lists that are included in the function template are created below the root
lists folder using names that apply to the naming rules.
External variables Global variables whose global variable lists do not belong to the function template are restored
in their original global variable list as follows:
 If a global variable list with the original name does not already exist below the application, it
is created automatically.
 If a global variable with the original name does not already exist in this global variable list, it
is created automatically.
If the type of global variable is not correct, EcoStruxure Machine Expert issues an error detection
message.

926 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Function Templates

Object Description
Persistent Persistent variables are restored in the respective variable list of the application as follows:
variables  If a persistent variable list does not already exist below the application, it is created
automatically with its original name.
 If a variable with the original name does not already exist in the persistent variable list, it is
created automatically.
If the type of persistent variable is not correct, EcoStruxure Machine Expert issues a message.
External objects Objects that are not included in the function template but are referenced by the function template
(such as function blocks and DUTs) are handled as follows:
 If the object does not exist, it is created
 If the object already exists and has not been modified, it remains unchanged
 If the object already exists and modifications are detected, an error is reported in the
Messages view. To display further information on the detected modifications, click the entry
in the Messages view.

Any objects that are created with the instantiation of the function template are listed in the
Messages pane.

Naming of Objects
In order to avoid naming conflicts, if you instantiate the same function template several times on
the same controller device, the following naming conventions are applied to the application
functions and the associated objects:

If the name of the original object... Then ...


Case 1:
contains the name of the application function, this part of the object is replaced by the name of the
new application function that is created.
Example:
The template original application function Axis For a new application function Axis1 being created
contains a program Axis_Init. with this template, the new program is
correspondingly named Axis1_Init.
Case 2:
does not contain the name of the application function, the name of the new application function plus an
underscore are inserted in the original name to form
a unique new name.
Example:
The original application function Axis contains a For a new application function Axis1 being created
program InitProg. with this function template, the new program is
correspondingly named Axis1_InitProg.

NOTE: Use rather short names for your application functions so that they are completely displayed.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 927
Managing Function Templates

Application Functions as Basis for Function Templates

Overview
The following paragraphs list:
 The criteria that must be fulfilled in order to save an application function with its associated field
devices, I/O modules, and visualizations as function template;
 The information that is saved in the function template.

Prerequisites for the Application


You can only create templates from correct applications. Correct means that no errors are detected
during the build process.

Prerequisites for Saving an Application Function as Function Template


In order to save an application function as function template, it is a prerequisite that all programs
of the application function are executed.
This means they must meet one of the following criteria:
 They must be added to a task.
 They must be called by another program.

Otherwise, they will not be considered when executing the Build command.

I/O Variables in Function Templates


An I/O variable is a variable that is mapped on an I/O channel of a field device. It is saved in the
function template if the following conditions apply:
 The I/O variable is used by any program or visualization that is included in the function template.
 The field device or I/O module to which the I/O variable is mapped cannot be included in the
function template.
You can map an I/O variable that is saved in the function template on an existing I/O channel when
an application function is created from the function template (see page 923).
The I/O variable has a description that is displayed in the Add Function From Template dialog box.
This description is created as follows:
 If the I/O variable was newly created in the I/O Mapping tab of the device editor (see page 158),
the description is taken from the description of the I/O channel (this only applies if the original
description has been changed).
 If the I/O variable is a reference to an existing variable, the description is taken from the
comment of this variable.

928 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Function Templates

Template Parameters
A template parameter is a variable with an adjustable initial value.
Example:When a device is used via a communication function block, then you have to assign the
address of the device to this function block as an input parameter. To be able to set this address,
connect a variable to the function block and define the variable as a template parameter.
A variable can become a template parameter if the following conditions apply:
 The variable is defined in a program or global variable list that is included in the function
template.
 The variable has a simple data type (BOOL, any numeric data type, any STRING, alias types
based on a simple data type).
 The initial value of the variable is explicitly defined as a literal value.

All variables that meet these conditions can be selected as template parameter when the function
template is saved (see page 933).
If a variable was selected as a template parameter, the initial value of this variable can be adjusted
when a new application function is created from the function template (see page 923).

Objects Saved in Function Templates


The following objects are saved in function templates:
 The objects that are available in the tree structure as subnodes below the Application node or
below the Functional Model node.
 The field devices and I/O modules that are used.
 The function blocks, functions, or DUTs that are referenced by an object.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 929
Managing Function Templates

Steps to Create a Function Template

Overview
EcoStruxure Machine Expert provides 2 ways to create a function template:
 From the Macros view using the Create New Template dialog box.
 From the Applications tree or Functional tree using the Save as Function Template dialog box.

The following paragraphs list the steps that have to be performed in order to save already available
application functions that meet the criteria stated in Application Functions as Basis for Function
Templates (see page 928) as function templates.

Procedure via Macros View


The procedure via Macros view allows you to create your own function template by dragging and
dropping elements:

Step Action
1 In the Macros view, expand the section My Template.
2 Select the My Template node, and click the green plus button.
Result: A new node with the default name LIB1 is inserted below the MyTemplate node.
3 Select the LIB1 node and click the green plus button.
Result: The Create New Template dialog box displays.

930 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Function Templates

Step Action
4 In the Function Template tab of the Create New Template dialog box, enter a Name for your function
template.
Drag the elements you want to include in the function template from the Applications tree to the Elements
box of the Function Template tab. The elements listed in this box is inserted in your function template.
NOTE: The elements must belong to the same application.
5 The Parameters tab of the Create New Template dialog box displays those variables that are included in
the elements you selected in the Function Template tab.

From the list of variables, select those you want to declare as template parameters by selecting the check
box of the variable or of a node.
6 The Properties tab of the Create New Template dialog box allows you to add further information to the
function template.
You can insert a link to the online help of this function template. The dialog box allows you to add further
textual information that can be localized, and you can add a graphic illustrating this function template. For
a description of these parameters, refer to the chapter Adding Further Information for Templates or
Template Libraries (see page 900).
7 Click the Save Template button.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 931
Managing Function Templates

Procedure via Applications tree or Functional tree


To save an already available application function as function template, proceed as follows:

Step Action
1 Right-click a subfolder of an application node in the Applications tree or a functional model node in the
Functional tree.
2 Execute the command Save As Function Template from the contextual menu.
Result: EcoStruxure Machine Expert automatically builds the application. After the built process has been
successfully completed, the Save As Function Template dialog box is displayed.

3 Define the new function template as stated below.


4 Click OK to close the Save as Function Template dialog box and to create your new function template.
Result: EcoStruxure Machine Expert verifies that the function template can be created and displays a
message that the function template has been created successfully or indicates the errors detected.

Assigning a Template Name


In the Template Name text box of the Save as Function Template dialog box, define the name
under which the function template is stored in the template library. By default, this text box contains
the name of the folder that contains your application function in the Applications tree but you can
adapt the name to your individual requirements.

Selecting the Template Library


To select one of the previously installed or created template libraries in which your new function
template should be stored, proceed as follows:

Step Action
1 In the Save as Function Template dialog box, click the ... button next to the Template Library text box.
Result: The Select Template Library dialog box is displayed.
2 The Select Template Library dialog box displays the template libraries that have been installed for the open
project or have been created. Write-protected libraries are not displayed.
To add your new function template to one of these template libraries, select the suitable entry and click OK.

932 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Managing Function Templates

Selecting Variables as Parameters


You can define variables of the function template as template parameters (see page 929).
To define variables of the function template as template parameters, proceed as follows:

Step Action
1 In the Save as Function Template dialog box, click the ... button to the right of the Parameters text box.
Result: The Select Variables as Parameters dialog box is displayed.
It displays the variables that are defined in the selected application.
2 Select the check box of an individual variable to select it as template parameter for the function template.
Or select the check box of a root node to select all elements below this node.
3 Click the OK button.
Result: The selected variables are displayed in the Parameters text box of the Save as Function Template
dialog box.
They are displayed in the Parameters table of the Add Function From Template dialog box where you can
assign New Values for these parameters.

Overwriting an Existing Function Template


To overwrite an existing function template with the selected application function, proceed as
follows:

Step Action
1 In the Save as Function Template dialog box, click the ... button right to the Template Name text box.
2 Browse to the already available function template you want to replace.
3 Select the function template you want to replace.
Result: The name of this function template is inserted in the Template Name text box and the name of the
template library where it is stored in is inserted in the Template Library text box.
4 Click OK to close the Save as Function Template dialog box and to replace the selected function template
with the new application function.

Adding Further Information to the New Function Template


To add further information to the new function template, click the Properties... button. The
Properties dialog box opens. It allows you to enter further information for the function template.
Since the dialog box is identical for device templates and template libraries, see the description in
the Adding Further Information for Templates or Template Libraries chapter (see page 900).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 933
Managing Function Templates

934 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Troubleshooting and FAQ
EIO0000002854 06/2019

Part IX
Troubleshooting and FAQ

Troubleshooting and FAQ

What Is in This Part?


This part contains the following chapters:
Chapter Chapter Name Page
39 Generic - Troubleshooting and FAQ 937
40 Accessing Controllers - Troubleshooting and FAQ 949

EIO0000002854 06/2019 935


Troubleshooting and FAQ

936 EIO0000002854 06/2019


EcoStruxure Machine Expert
Generic - Troubleshooting and FAQ
EIO0000002854 06/2019

Chapter 39
Generic - Troubleshooting and FAQ

Generic - Troubleshooting and FAQ

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 937
Generic - Troubleshooting and FAQ

Section 39.1
Frequently Asked Questions

Frequently Asked Questions

What Is in This Section?


This section contains the following topics:
Topic Page
How Can I Enable and Configure Analog Inputs on CANopen? 939
Why is EcoStruxure Machine Expert Startup Performance Sometimes Slower? 940
How Can I Manage Shortcuts and Menus? 941
How Can I Increase the Memory Limit Available for EcoStruxure Machine Expert on 32-Bit 943
Operating Systems?
How Can I Reduce the Memory Consumption of EcoStruxure Machine Expert? 944
How Can I Increase the Build-Time Performance of EcoStruxure Machine Expert? 945
What Can I Do in Case of Issues with Modbus IOScanner on Serial Line? 946
What Can I Do If My Network Variables List (NVL) Communication Has Been Suspended? 947

938 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Generic - Troubleshooting and FAQ

How Can I Enable and Configure Analog Inputs on CANopen?

Overview
This section provides instructions on enabling analog inputs according to the CANopen standard
by setting the SDO (Service Data Object) 6423 to the value 1.

Procedure

Step Action
1 Double-click the node of your analog CANopen device in the Devices tree.
2 In the CANopen Remote Device tab of the editor, enable the option Enable Expert Settings.
Result: Additional tabs are displayed and the Service Data Object tab is populated with information.
3 Open the Service Data Object tab and click the New... button.
Result: The Select item from object directory dialog box is displayed.

4 From the list of objects, select object 6423, enter 1 as Value, and click OK.
Result: Analog input transmission on the CANopen bus is activated. You can now configure parameters
of the analog values as described in the hardware manual of your device.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 939
Generic - Troubleshooting and FAQ

Why is EcoStruxure Machine Expert Startup Performance Sometimes Slower?

Overview
Beside the PC configuration there are several other conditions which can increase the time
EcoStruxure Machine Expert is consuming during startup:

Boot Phase Startup Performance


first start after EcoStruxure On first start after EcoStruxure Machine Expert has been installed, the
Machine Expert installation software will generate its working environment on the PC. This is done only
one time but has significant impact on the duration of the first startup.
first start after reboot After rebooting the PC, the startup time of EcoStruxure Machine Expert can
be longer than usual because Microsoft Windows consumes some time in the
background to launch services that are needed to run EcoStruxure Machine
Expert. This can have impact on the startup duration and cannot be avoided.
subsequent starts Users experience better performance of the startup when the system has
been started previously on the PC.

940 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Generic - Troubleshooting and FAQ

How Can I Manage Shortcuts and Menus?

Overview
The menus and shortcuts of the EcoStruxure Machine Expert software differ depending on the
current state, that is, the window or editor that is currently open.
You can adapt the shortcuts and menus to your individual preferences or you can load the
EcoStruxure Machine Expert or CoDeSys standard shortcuts and menus as described in the
following sections.

Customizing Shortcuts and Menus


You can adapt the shortcuts and menus to your individual preferences by using the Tools →
Customize menu.

Restoring the EcoStruxure Machine Expert Standard Shortcuts and Menus


To restore the EcoStruxure Machine Expert standard shortcuts and menus (after you have
customized them), proceed as follows:

Step Action
1 Execute the Customize command from the Tools menu.
Result: The Customize dialog box will be displayed.
2 In the Customize dialog box, click the Load... button.
Result: The Load Menu dialog box will be displayed.
3 In the Load Menu dialog box, navigate to the folder ...\Program Files\Schneider
Electric\SoMachine Software\Vx.x\LogicBuilder\Settings, select the file [Link], and
click Open.
Result: The Customize dialog box now shows the standard EcoStruxure Machine Expert
settings.
4 To load these standard settings to the EcoStruxure Machine Expert graphical user interface,
click OK.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 941
Generic - Troubleshooting and FAQ

Setting the Shortcuts and Menus to CoDeSys Standard


To import the CoDeSys shortcuts and menus to your EcoStruxure Machine Expert graphical user
interface, proceed as follows:

Step Action
1 Execute the Customize command from the Tools menu.
Result: The Customize dialog box will be displayed.
2 In the Customize dialog box, click the Load button.
Result: The Load Menu dialog box will be displayed.
3 In the Load Menu dialog box, navigate to the folder ...\Program Files\Schneider
Electric\SoMachine Software\Vx.x\LogicBuilder\Settings\OriginalCoDeSys, select the file
[Link], and click Open.
Result: The Customize dialog box now shows the CoDeSys settings.
4 To load these CoDeSys settings to the EcoStruxure Machine Expert graphical user interface,
click OK.

NOTE: The menus and shortcuts of the EcoStruxure Machine Expert software differ, depending on
the window or editor that is currently open.

Expanding Menus
EcoStruxure Machine Expert main menus and context menus can be displayed in a collapsed or
full view. In the collapsed mode seldom used or disabled commands are hidden. After clicking the
arrow menu item at the bottom of a menu, the corresponding menu expands, showing all its
menu items.
For always showing the menus in the full viewing mode, activate the option Always show full menus
in the Tools → Options → Features dialog box.

942 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Generic - Troubleshooting and FAQ

How Can I Increase the Memory Limit Available for EcoStruxure Machine Expert on 32-
Bit Operating Systems?

Overview
Large EcoStruxure Machine Expert projects can stress a 32-bit operating system to the technical
limit regarding memory consumption. This is due to 32-bit operating systems providing only 2 GB
of memory for user processes such as EcoStruxure Machine Expert.

Identifying a Large EcoStruxure Machine Expert Project


EcoStruxure Machine Expert projects can be considered to be large if they contain a large total
count of Objects. The Objects that are available in a project, such as Devices, POUs, Actions,
DUTs, Global Variable Lists, Visualizations are listed in the Statistics tab of the Project Information
dialog box (see EcoStruxure Machine Expert, Menu Commands, Online Help). However, it is not
just the total count of Objects that can indicate a large project. Even individual Objects can be
inherently large.

Enabling the 3 GB Switch on Windows 7 32-Bit Operating Systems


In order to increase the memory limit for user processes on Windows 7 32-bit Operating Systems,
you can enable the 3 GB switch function as follows:

Step Action
1 Goto Start Menu → All Programs → Accessories.
2 Right-click Command Prompt and execute the command Run as Administrator.
3 Enter bcdedit /set IncreaseUserVa 3072.
4 Restart the computer.

Disabling the 3 GB Switch on Windows 7 32-Bit Operating Systems


In order to increase the memory limit for user processes on Windows 7 32-bit Operating Systems,
you can enable the 3 GB switch function as follows:

Step Action
1 Goto Start Menu → All Programs → Accessories.
2 Right-click Command Prompt and execute the command Run as Administrator.
3 Enter bcdedit /deletevalue IncreaseUserVa.
4 Restart the computer.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 943
Generic - Troubleshooting and FAQ

How Can I Reduce the Memory Consumption of EcoStruxure Machine Expert?

Overview
This chapter provides tips that may help to reduce the memory consumption of the EcoStruxure
Machine Expert process on your system.

Splitting up Your EcoStruxure Machine Expert Project


If your EcoStruxure Machine Expert project consists of several independent parts, for example,
independent root devices (controller), you can split up the project and create independent
EcoStruxure Machine Expert projects for each root device. These smaller EcoStruxure Machine
Expert projects then require less memory each.

Closing EcoStruxure Machine Expert Editors


Close each EcoStruxure Machine Expert editor after you have made the respective settings
because every open editor consumes memory space.

944 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Generic - Troubleshooting and FAQ

How Can I Increase the Build-Time Performance of EcoStruxure Machine Expert?

Good Practices
The list of good practices may help you to avoid a slow performance when working with
EcoStruxure Machine Expert:
 Verify that the hardware of the PC meets the system requirements (see EcoStruxure Machine
Expert, Introduction).
 Use a Solid State Drive (SSD) and verify that sufficient memory space is available. Contact your
IT administration for further details.
 Consider uninstalling components that you do not need via the EcoStruxure Machine Expert
Configuration Manager.
 If you are using Vijeo-Designer integrated in EcoStruxure Machine Expert, consider to disable
the automatic symbol export function. To achieve this, activate the option Disable automatic
symbol export in the EcoStruxure Machine Expert Logic Builder Options → Vijeo-Designer
dialog box (see EcoStruxure Machine Expert, Menu Commands, Online Help).
 Consider activating the option Disable undo after deleting a DTM (performance optimization) in
the EcoStruxure Machine Expert Logic Builder Options → FDT Options dialog box
(see EcoStruxure Machine Expert, Menu Commands, Online Help) if this function is not
frequently used.
 Avoid large POUs. EcoStruxure Machine Expert has no limit for the size of POUs programmed
in graphical languages like LD. Nevertheless, it is a good practice to call POUs in sequences
instead of creating one large POU.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 945
Generic - Troubleshooting and FAQ

What Can I Do in Case of Issues with Modbus IOScanner on Serial Line?

Overview
This section provides instructions that may help you to solve issues that were detected when using
Modbus IOScanner on a Serial Line.

Exception State of the Application


A Modbus IOScanner on a Serial Line is configured on your controller and one of the Modbus slave
devices is disconnected.
If the application goes to exception state after the download or after a reset of the controller,
proceed as follows:

Step Action
1 Verify the integrity of your cable.
2 Verify that your cable is correctly connected between the controller and the Modbus Serial
slave.
3 Reset your controller.

Error Detected While Using Modbus IOScanner on a Serial Line

If... Then ...


an error is detected while using Modbus IOScanner the xError flag associated to the slave that has been
on a Serial Line detected as generating or causing the error is set to
TRUE.
the communication is NOT stopped (the controller still
tries to connect the slave).
the parameter
uiNumberOfCommunicatingSlaves is decreased
and xAllSlavesOK is set to FALSE.

After the communication to the slave has been re-established, a rising edge on the xReset entry
of the slave is required:
 To reset xError.
 To update the values of uiNumberOfCommunicatingSlaves.
 To update the values of xAllSlavesOK.

946 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Generic - Troubleshooting and FAQ

What Can I Do If My Network Variables List (NVL) Communication Has Been


Suspended?

Problem
The NVL communication has been suspended after an online change.

Solution
Restart the target controller.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 947
Generic - Troubleshooting and FAQ

948 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Accessing Controllers - Troubleshooting and FAQ
EIO0000002854 06/2019

Chapter 40
Accessing Controllers - Troubleshooting and FAQ

Accessing Controllers - Troubleshooting and FAQ

What Is in This Chapter?


This chapter contains the following sections:
Section Topic Page
40.1 Troubleshooting: Accessing New Controllers 950
40.2 FAQ - What Can I Do in Case of Connection Problems With the Controller? 955

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 949
Accessing Controllers - Troubleshooting and FAQ

Section 40.1
Troubleshooting: Accessing New Controllers

Troubleshooting: Accessing New Controllers

What Is in This Section?


This section contains the following topics:
Topic Page
Accessing New Controllers 951
Connecting via IP Address and Address Information 953

950 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Accessing Controllers - Troubleshooting and FAQ

Accessing New Controllers

Overview
To access a new controller, adapt the network settings of the controller to the network of your
EcoStruxure Machine Expert PC. This chapter provides a step-by-step example.

Example
This example shows the steps to access an LMC058 with IP address [Link] from a PC with
IP address [Link] residing in subnet [Link].

Step Action
1 Connect the controller directly to the PC running EcoStruxure Machine Expert or to the network of the PC
using an Ethernet cable.
2 In EcoStruxure Machine Expert, open the Communication Settings view of the device editor
(see page 105).
Result: The LMC058 controller will be included in the list.

3 To adapt the communication settings of the controller, right-click the controller in the Communication
Settings list, and execute the command Edit communication settings... from the contextual menu.
Result: The Edit communication settings dialog box opens.
4 In the Edit communication settings dialog box, enter a free IP address available in your network.
When configuring IP addresses, refer to the hazard message below.
5 Click OK to confirm the Edit communication settings dialog box.
6 In the Communication Settings view, connect to the controller.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 951
Accessing Controllers - Troubleshooting and FAQ

Carefully manage the IP addresses because each device on the network requires a unique
address. Having multiple devices with the same IP address can cause unintended operation of
your network and associated equipment.

WARNING
UNINTENDED EQUIPMENT OPERATION
 Verify that all devices have unique addresses.
 Obtain your IP address from your system administrator.
 Confirm that the device’s IP address is unique before placing the system into service.
 Do not assign the same IP address to any other equipment on the network.
 Update the IP address after cloning any application that includes Ethernet communications to
a unique address.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

NOTE: Some controllers support a parameter that helps to prevent them from being remotely
accessed (RemoteCommunicationAccess parameter of the LMC •0•C controllers.

952 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Accessing Controllers - Troubleshooting and FAQ

Connecting via IP Address and Address Information

Overview
The used communication protocol offers a mechanism to connect to a controller independent of
the type of connection. For example, this allows access to a target controller that is connected via
Ethernet to another hop controller that is connected via USB to the PC itself.

1 PC
2 hop controller
3 target controller
4 USB
5 Ethernet

Address Information
In the example, USB uses a different protocol. It is therefore normally not possible to use the
IP address to address the target controller. Instead, the routing information is used that describes
the way to connect to the target controller over 1 or more hops.
This routing information is displayed as a tooltip of an entry of the controller list (in the following
example [Address] 0000.2001):

NOTE: Since this address only describes the way the controller is connected, it can change upon
each modification of the local PCs or the network adapter settings of the hop controller. For
example, upon activating or deactivating network adapters or upon starting/stopping services that
use network adapters. The address to a specific target can differ from different sending PCs.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 953
Accessing Controllers - Troubleshooting and FAQ

Nodename
Since the Nodename of the controller is a stable identifier in the system, it is used to identify the
target.
If IP Address is selected as Connection Mode, it is tried to get the information from the Nodename
itself. Some controllers (such as LMC •0•C) create the Nodename automatically including the
IP address. You can also configure the Nodename by yourself (as described in the FAQ Why is
the Controller not Listed in the Communication Settings View? (see page 957)) to enable the
system to find a controller by its IP address. If the IP address is missing in the nodename, it is tried
to get the IP address from a controller. But not all devices or their current firmware version support
the service. In this case, use the Connection Mode Nodename to connect or set a device name
that includes the IP address in brackets. For example MyDevice ([Link]).

954 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Accessing Controllers - Troubleshooting and FAQ

Section 40.2
FAQ - What Can I Do in Case of Connection Problems With the Controller?

FAQ - What Can I Do in Case of Connection Problems With the


Controller?

What Is in This Section?


This section contains the following topics:
Topic Page
FAQ - Why is a Connection to the Controller not Possible? 956
FAQ - Why has the Communication Between PC and Controller been Interrupted? 959

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 955
Accessing Controllers - Troubleshooting and FAQ

FAQ - Why is a Connection to the Controller not Possible?

Why is a Connection to the Controller not Possible Even Though the IP Address Seems to Fit?
If you have set the IP address of the controller as described in the Accessing New Controllers
chapter (see page 951), and you still cannot connect to the controller, the reason can be the subnet
mask. Since the used communication protocol requires an identical subnet mask on both the
sender and the receiver site, it may be possible that a ping to the controller is successful, but a
connection cannot be established.
In order to solve this issue, proceed as follows:

Step Action
1 In EcoStruxure Machine Expert, open the Communication Settings view of the device editor
(see page 105).
2 To adapt the communication settings of the controller, right-click the controller in the Communication
Settings list, and execute the command Edit communication settings... from the contextual menu.
Result: The Edit communication settings dialog box opens.
3 Adapt the Subnet mask configured for the controller exactly to the subnet mask of your EcoStruxure
Machine Expert PC.
Example:
Change [Link] to [Link].

NOTE: After you have changed the Connection Mode in the Communication Settings dialog box,
it may be required to perform the login procedure twice to gain access to the selected controller.

Why is a Login to a Controller not Possible?


For communications between an application (such as EcoStruxure Machine Expert Logic Builder,
Controller Assistant) and a controller, a running EcoStruxure Machine Expert gateway is required.
If you attempt to login to a controller, the application automatically starts the active EcoStruxure
Machine Expert gateway. If EcoStruxure Machine Expert has not been started with (Windows)
administrator rights, the start of the gateway cannot be executed.
In order to solve this issue, proceed as follows:

Step Action
1 In the Windows notification area, verify whether the Gateway Management Console icon is displayed in

red to indicate that the selected gateway is stopped:


2 Right-click the Gateway Management Console icon, and execute the command Start Gateway from the
contextual menu.
Result: The selected gateway service is started.
3 In the Windows notification area, verify whether the Gateway Management Console icon is displayed in

green to indicate that the selected gateway is running:


4 Start another attempt to log in to the controller.

956 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Accessing Controllers - Troubleshooting and FAQ

Why is the Controller not Listed in the Communication Settings Tab?


If you establish a connection between the controller and the EcoStruxure Machine Expert PC by
using the classic mode, then the Communication Settings tab is displayed in classic mode
(see page 128).
If the controller of your choice is not displayed in the Communication Settings tab in classic mode,
you can temporarily switch to the Communication Settings tab in controller selection mode
(see page 105) as follows:

Step Action
1 Open the Tools → Options → Device editor dialog box (see EcoStruxure Machine Expert, Menu
Commands, Online Help).
2 Select the Communication page → Controller selection mode setting and confirm by clicking OK.

Why is the Controller not Listed in the Communication Settings View?


If you do not find your controller in the list of the Communication Settings tab in controller selection
mode (see page 105), the reason can be that two different devices are assigned the same
Nodename. If two devices are assigned the same Nodename, only one of these devices is listed
in the list.
You must carefully manage the Nodename because each device on the network requires a unique
Nodename. Having multiple devices with the same Nodename can cause unpredictable operation
of your network and associated equipment.

WARNING
UNINTENDED EQUIPMENT OPERATION
 Verify that all devices have unique Nodenames before placing the system into service.
 Update the Nodename after cloning any application that includes Ethernet communications to
a unique Nodename.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 957
Accessing Controllers - Troubleshooting and FAQ

To change the Nodename of a device, proceed as follows:

Step Action
1 Right-click the device that is assigned a double Nodename in the list and execute the command
Change device name from the contextual menu.
Result: The Change device name dialog box is displayed.

2 In the Change device name dialog box, enter a unique Nodename in the New text box.
3 Click OK to confirm and to close the Change device name dialog box.
4 In the Communication Settings view, click the Update button to refresh the list of devices.
Result: The second device with the same Nodename of the device you just have changed will
now be displayed in the list.
5 Repeat steps 1...4 until you have eliminated any double Nodenames.

NOTE: Some controllers, such as the LMC •0•C controllers, create a Nodename automatically out
of the device name of the project after a project download and the IP address (for example, MyLMC
([Link])). This automatic name overwrites the Nodename you assigned if any changes are
executed on the controller.

958 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Accessing Controllers - Troubleshooting and FAQ

FAQ - Why has the Communication Between PC and Controller been Interrupted?

Why has the Communication Between PC and Controller been Interrupted?


It may be necessary to restart the gateway as follows:

Step Action
1

Right-click the Gateway Tray Application icon in the Windows task bar .
2 Execute the command Restart Gateway from the contextual menu.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 959
Accessing Controllers - Troubleshooting and FAQ

960 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert

EIO0000002854 06/2019

Appendices

What Is in This Appendix?


The appendix contains the following chapters:
Chapter Chapter Name Page
A Network Communication 963
B Python Script Language 971
C Controller Feature Sets for Migration 1085
D Know-How Protection 1089

EIO0000002854 06/2019 961


962 EIO0000002854 06/2019
EcoStruxure Machine Expert
Network Communication
EIO0000002854 06/2019

Appendix A
Network Communication

Network Communication

What Is in This Chapter?


This chapter contains the following topics:
Topic Page
Network Topology 964
Addressing and Routing 965
Structure of Addresses 967

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 963
Network Communication

Network Topology

Overview
The EcoStruxure Machine Expert control network is a system programmed to configure itself
(address assignment) to support transparent communication media and to route packets between
different networks. The routing mechanism is simple enough that any node in the network, that is,
even nodes with low resources, are able to reroute packets. So, large routing tables, complex
calculations, or requests during runtime are avoided.
The control network is configured hierarchically, that is, each node has one parent node and an
arbitrary number of children. A node without a parent is referred to as top-level node. Cycles are
not permitted, that is, a control network has a tree structure.
Parent-child relationships arise from the specification of network segments. A network segment
corresponds, for example, to a local Ethernet or a serial point-to-point connection. It distinguishes
between the main network (mainnet) and the subnetworks (subnet). Each node has, at most, one
main network, wherein it expects its parent. For each node, an arbitrary number of subnets can be
configured. The node acts as parent for all of them.
If a network segment had been defined simultaneously as subnet of several nodes, the network
would have several parents. However, the resulting configuration will be invalid, as each network
segment is allowed to have one single parent only.

964 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Network Communication

Addressing and Routing

Overview
Addressing maps the topology of the control network to unique addresses. A node address
(see page 968) is built up hierarchically.
For each network connection, a local address identifying the node uniquely within its respective
local network is allocated by the relevant block driver. For the entire node address, this local
address is preceded by the subnet index the local network is assigned to by the parent.
Furthermore, it must be preceded by the node address of its parent.
The length of the subnet index (in bit) is determined by the device, whereas the length of the local
address is determined by the network type.
A node without a main network is a top-level node with address 0. A node with a main network that
does not contain a parent is also a top-level node and will be assigned to its local address in the
main network.
Example: Main net and sub nets

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 965
Network Communication

In the example, the addresses of the child nodes are given in hexadecimal representation. The first
4 digits represent the address of the particular parent within the main net. For example,
0x007A=122 for PLC1. The next byte (displayed in blue) is reserved for the subnet index and this
is followed by the local address, for example, C=12 for node ID 12.
Due to the structuring of the address, the routing algorithm can be kept relatively lean. For
example, no routing tables are necessary. Information is required locally: on the own address and
on the address of the parent node.
Thereon, a node may properly handle data packets.
 If the target address equals the address of the current node, it is determined as receiver.
 If the target address starts with the address of the current node, the packet is intended for a child
or descendant of the node and has to be forwarded.
 Else, the receiver is not a descendant of the current node. The packet has to be forwarded to
the own parent.

Relative Addressing
Relative addressing is a special feature. Relative addresses (see page 969) do not contain the
node number of the receiver node, but directly describe the path from the sender to the receiver.
The principle is similar to a relative path in the file system: The address consists of the number of
steps the packet has to move up, that is, to the next respective parent, and the subsequent path
down to the target node.
The advantage of relative addressing is that 2 nodes within the same subtree are able to continue
the communication when the entire subtree is moved to another position within the overall control
network. While the absolute node addresses will change due to such a relocation, the relative
addresses are still valid.

Determination of Addresses
A node attempts to determine its own address as that coming from its parent or whether itself is a
top-level node. For this purpose, a node will send an address determination via a broadcast
message to its main network during boot-up. As long as this message is not responded to, the node
considers itself to be a top-level node, although it will continue to try to detect a parent node. A
parent node will respond by an address notification. Thereon, the node will complete its own
address and pass it to the subnets.
Address determination can be executed at bootup or on request of the programming PC.

966 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Network Communication

Structure of Addresses

Overview
Below is a detailed description on the structure of the following address types:
 Network Addresses (see page 967)
 Node Addresses (see page 968)
 Absolute and Relative Addresses (see page 969)
 Broadcast Addresses (see page 970)

Network Addresses
Network addresses represent a mapping of addresses of a network type (for example,
IP addresses) to logical addresses within a control network. This mapping is handled by the
respective block driver. Within an Ethernet with class C IP addresses, the first 3 bytes of the
IP address are the same for all network devices. Therefore, the last 8 bits of the IP address suffice
as a network address since they allow unambiguous mapping between the 2 addresses at the
block driver.
A node has separate network addresses for each network connection. Different network
connections may have the same network address since this address has to be unique only locally
for each network connection.
Terminology: In general, the network address of a node without a statement of the network
connection refers to the network address in the main network.
The length of a network address is specified in bits and can be chosen by the block driver as
required. Within a network segment, the same length must be used for all nodes.
A network address is represented as an array of bytes with the following coding:
 Length of the network address: n bits
 Required bytes: b = (n + 7) DIV 8
 The (n MOD 8) lowest-order bits of the first byte and all remaining (n DIV 8) bytes are used for
the network address.

Example - Network Address


Length: 11 bit
Address: 111 1000 1100
Example for network address coding

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 967
Network Communication

Node Addresses
The node address indicates the absolute address of a node within a control network, and therefore,
is unique within the whole tree. The address consists of up to 15 address components, each
consisting of 2 bytes. The lower a node is located within the network hierarchy, the longer its
address.
The node address consists of the partial addresses of all predecessors of the node and the node
itself. Each partial address consists of one or several address components. The length is therefore
always a multiple of 2. The partial address of a node is formed from the network address of the
node in its main network and the subnet index of the main network in the parent node. The bits
required for the subnet index are determined by the router of the parent node. Filler bits are
inserted between the subnet index and the network address in order to ensure that the length of
the partial address is a multiple of 2 bytes.
Special cases:
 Node has no main network: This means that there is no subnet index nor a network address in
the main network. In this case, the address is set to 0x0000.
 Node with main network but without parent: In this case, a subnet index with 0-bit length is
assumed. The partial address corresponds to the network address, supplemented by filler bits
if required.
Example - node address

The node address representation is always hexadecimal. The individual address components
(2 bytes in each case) are separated by a colon (:). The bytes within a component display
sequentially without a separator (see example above). Since this represents a byte array and not
a 16-bit value, the components are not displayed in little-endian format. For manually entered
addresses missing digits in an address component are filled with leading zeros from the left:
274 = 0274. To improve readability, the output should always include the leading zeros.

968 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Network Communication

Absolute and Relative Addresses


Communication between 2 nodes can be based on relative or absolute addresses. Absolute
addresses are identical to node addresses. Relative addresses specify a path from the sender to
the receiver. They consist of an address offset and a descending path to the receiver.
The (negative) address offset describes the number of address components that a packet has to
be handed upwards in the tree before it can be handed down again from a common parent. Since
nodes can use partial addresses consisting of more than one address component, the number of
parent nodes to be passed is always = the address offset. This means that the demarcation
between parent nodes is no longer unambiguous. This is why the common initial part of the
addresses of the communication partners is used as parent address. Each address component is
counted as an upward step, irrespective of the actual parent nodes. Any error introduced by these
assumptions can be detected by the respective parent node and must be handled correctly by the
node.
On arrival at the common parent, the relative path (an array of address components) is then
followed downwards in the normal way.
Formal: The node address of the receiver is formed by removing the last address offset
components from the node address of the sender and appending the relative path to the remaining
address.

Example
Within the example, a letter will represent an address component, whereas a point will separate
the particular nodes. Since a node is allowed to have multiple address components, it is allowed
to have multiple letters within the example.
Node A: [Link].g
Node B: [Link].m
 Address of the lowest common parent: [Link]
 Relative address from A to B: -4/[Link].m (The number -4 results from the 4 components d, e, f,
and g. Therefore the packet has to be raised).
The relative address has to be adjusted with each pass through an intermediate node. It is
sufficient to adjust the address offset. This is always done by the parent node: If a node receives
a packet from one of its subnets, the address offset is increased by the length of the address
component of this subnet.
 If the new address offset is < 0, the packet must be forwarded to the parent node.
 If the address offset 1 ≥ 0, the packet must be forwarded to the child node of the local address
of which is located at the position described by the address offset within the relative address.
First, the address offset must be increased by the length of the local address of the child node
to ensure that the node sees a correct address.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 969
Network Communication

A special situation arises when the error described above occurs while determining the common
parent. In this case, the address offset at the “real” common parent is negative, but the magnitude
is greater than the length of the partial address of the subnet the packet originates from. The node
must detect this case, calculate the local address of the next child node based on the address of
the previous node and the length difference, and adapt the address offset such that the next node
will see a correct relative address. Also, the address components themselves remain unchanged
and only the address offset will be modified.

Broadcast Addresses
There are 2 types of broadcasts - global and local ones. A global broadcast is sent to all nodes
within a control network. The empty node address (length 0) is reserved for this purpose.
Local broadcasts are sent to all devices of a network segment. For this purpose, all bits of the
network address are set to 1. This is possible both in relative and in absolute addresses.
A block driver must be able to handle both broadcast addresses, that is, empty network addresses
and network addresses with all bits set to 1, must be interpreted and sent as broadcast.

970 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Python Script Language
EIO0000002854 06/2019

Appendix B
Python Script Language

Python Script Language

What Is in This Chapter?


This chapter contains the following sections:
Section Topic Page
B.1 General Information 972
B.2 Schneider Electric Script Engine Examples 1026
B.3 CoDeSys Script Engine Examples 1050

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 971
Python Script Language

Section B.1
General Information

General Information

What Is in This Section?


This section contains the following topics:
Topic Page
Introduction 973
Accessing the Python Interpreter in EcoStruxure Machine Expert 976
Using the Logic Builder Shell 981
Using the Logic Builder Scripting Immediate View 989
Keyboard Commands in the Logic Builder Shell and the Scripting Immediate View 992
Explore EcoStruxure Machine Expert Python API (with dir() and inspectapi) 993
Using Logic Builder Shell with Microsoft Visual Studio and PTVS 998
Using Logic Builder Shell with JetBrains PyCharm 1004
Using Logic Builder Shell with Microsoft Visual Studio Code and Python Extension 1008
Executing Scripts 1012
Best Practices 1014
Reading .NET API Documentations 1016
EcoStruxure Machine Expert Python API 1018
EcoStruxure Machine Expert Scripting - Python API 1019
Calling Scripts Via Toolbar Icons 1024

972 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Introduction

Python Scripting in EcoStruxure Machine Expert


EcoStruxure Machine Expert includes a Python interpreter which can be used as a powerful tool
to automate the development environment.
You can execute Python script files via the menu command Tools → Scripting → Execute Script
File... in the main menu of the EcoStruxure Machine Expert Logic Builder.
The documentation for Python scripting in EcoStruxure Machine Expert consists of several parts:
The chapter Accessing the Python Interpreter in EcoStruxure Machine Expert (see page 976)
describes how you can open the Python interpreter of EcoStruxure Machine Expert and how you
can execute script files with it and how you can otherwise interact with it. The chapters Using the
Logic Builder Shell (see page 981), Using the Logic Builder Scripting Immediate View
(see page 989), and Keyboard Commands in the Logic Builder Shell and the Scripting Immediate
View (see page 992) provide more details on individual parts.
The sections Schneider Electric Script Engine Examples (see page 1026) and CoDeSys Script
Engine Examples (see page 1050) provide various examples for how to automate EcoStruxure
Machine Expert with Python scripts. These examples are given to provide a common thread that
shows the capabilities of the EcoStruxure Machine Expert-specific API (Application Programming
Interface) available to Python scripts.
The chapters Explore EcoStruxure Machine Expert Python API (with dir() and inspectapi)
(see page 993), Best Practices (see page 1014), and EcoStruxure Machine Expert Scripting -
Python API (see page 1019) provide general hints on how to get started with Python scripting and
how to explore the API provided.
The sections Schneider Electric - Script Engine Class Library and Script Engine Plugin API
Reference provided in the Programming with EcoStruxure Machine Expert part of the EcoStruxure
Machine Expert online help provide the reference of the EcoStruxure Machine Expert-specific API
available to Python scripts. You can use these members in the same manner as described in the
aforementioned examples.

Choosing a Development Environment for Python


There are different alternatives for editing Python files available, such as Notepad++, Microsoft
Visual Studio with PTVS (Python Tools for Visual Studio), or PyCharm. Select the editor that suits
your needs.
Also refer to the chapters:
 Using Logic Builder Shell with Microsoft Visual Studio and PTVS (see page 998)
 Using Logic Builder Shell with JetBrains PyCharm (see page 1004)
 Using Logic Builder Shell with Microsoft Visual Studio Code and Python Extension
(see page 1008)

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 973
Python Script Language

Compatibility Between Python V2.x and Python V3.x


The Python interpreter delivered with EcoStruxure Machine Expert is an implementation of
IronPython based on Python version 2.7.
NOTE: There are some major changes in the Python language definition between version 2.x and
version 3.x. While the Python interpreter delivered with EcoStruxure Machine Expert is based on
Python V2.x, it is possible that you can write code compatible with the version 3.x implementation.
This involves, for example, using the from __future__ import print_function
statement.
For more information, refer to the websites
 [Link]
 [Link]
Examples of new functions:
from __future__ import print_function
from __future__ import division
# New Python print syntax
print('Hello World!')
# Division
# Python 2 return an integer and rounds off
# Python 3 returns a float
print(17/3)

Coding Conventions
In order to harmonize and facilitate the work of different programmers on the same programming
project, it makes sense to agree on a common programming style. EcoStruxure Machine Expert
adheres to the Style Guide for Python Code. The scripts and examples delivered with EcoStruxure
Machine Expert adhere to these conventions. For improved readability of code, it is a best practice
that your own code adheres to the same conventions.
For further information, refer to the Style Guide for Python Code at
[Link]

974 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Useful Links
For further information, refer to the following websites:
 Official Python webpage providing a tutorial and language references at [Link]
 Official Python blog at [Link]
 Beginner’s Guide to Python at [Link]
 Official CoDeSys forum providing examples and helpful information at
[Link]
 IronPython interpreter at [Link]
 PyTools (Visual Studio plugin) at [Link]
 PyCharm (Visual Studio plugin) at [Link]
 How to use PyCharm Debugging at
[Link]
 Visual Studio Code at [Link]
 Python extension at
[Link]
 IronPython Cookbook at [Link]
 Free Galileo Openbook (only available in German) at
[Link]

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 975
Python Script Language

Accessing the Python Interpreter in EcoStruxure Machine Expert

Overview
EcoStruxure Machine Expert can be automated with the Python script language.
The Python scripting capabilities in EcoStruxure Machine Expert are exposed in various ways. The
table lists different entry points:

Where Input type Description / Use case How to open


Logic Builder user interface Interactive (REPL) Interactive Python shell with a Menu command View →
command-line interface, Scripting Immediate in the
embedded in the user Logic Builder (also refer to the
interface of EcoStruxure chapter Using the Logic
Machine Expert. Builder Scripting Immediate
View (see page 989)).
Python file (*.py) Select a script file to be Menu command Tools →
executed from within the user Scripting → Execute Script
interface of EcoStruxure File... command in the Logic
Machine Expert. Builder (also refer to the
chapter Using the Logic
Builder Scripting Immediate
View (see page 989).
Stand-alone shell REPL Interactive Python shell with a Open [Link]
command-line interface, without command-line
running stand-alone (without arguments (refer to the chapter
the graphical user interface of Using the Logic Builder Shell
EcoStruxure Machine Expert). (see page 981)).
Python file (*.py) Executes a Python script from Open [Link]
the Windows command-line, with a script file as a command-
from a batch file, or similar line argument (refer to the
ways. chapter Using the Logic
Builder Shell (see page 981)).
Microsoft Visual Studio + REPL You can use the interactive Configure the
PTVS (Python Tools for REPL view in Microsoft Visual [Link] as
Visual Studio) Studio to execute Python Python interpreter inside
commands on the Logic Microsoft Visual Studio (refer
Builder Shell. to the chapter Using Logic
Builder Shell with Microsoft
Python file (*.py) Python files in a Visual Studio
project can be executed and
Visual Studio and PTVS
debugged on the Logic Builder (see page 998)).
Shell.
Also refer to the
considerations concerning
debugging in the feature
comparison table
(see page 977).

976 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Where Input type Description / Use case How to open


JetBrains PyCharm REPL You can use the Python Configure the
Console in JetBrains [Link] as
PyCharm to execute Python Python interpreter inside
commands on the Logic PyCharm (refer to the chapter
Builder Shell. Using Logic Builder Shell with
Python file (*.py) Python files can be executed JetBrains PyCharm
and debugged on the Logic
(see page 1004)).
Builder Shell.
Microsoft Visual Studio Python file (*.py) Python files can be executed Configure the
Code + Python extension and debugged on the Logic [Link] as
Builder Shell. Python interpreter inside
Also refer to the Microsoft Visual Studio Code
considerations concerning the (refer to the chapter Using
autocomplete and the syntax Logic Builder Shell with
error check functions in the Microsoft Visual Studio Code
feature comparison table and Python extension
(see page 977). (see page 1008)).

The following sections provide an overview of how Python scripting integrates in EcoStruxure
Machine Expert for different use cases.

Feature Comparison of Integrated Development Environment (IDE) from Third-Party Vendors


Each IDE from third-party vendors mentioned in this chapter supports different functions. The table
lists the three IDE with the functions they support.
NOTE: The Autocomplete (IntelliSense) function does not recognize any fields, properties, and
methods of the EcoStruxure Machine Expert-specific API.

Function Microsoft Visual Studio + PyCharm Microsoft Visual Studio


PTVS Code + Python extension
REPL X X –
Execute X X X
Debug X X X
Breakpoints X X X
Step Into / Over X X X
Watch Variables / Evaluate – X X
Expressions
Syntax Highlighting X X X
Syntax Error Check X X –
X Function is supported
– Function is not supported

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 977
Python Script Language

Function Microsoft Visual Studio + PyCharm Microsoft Visual Studio


PTVS Code + Python extension
Autocomplete (IntelliSense) X X Partial (local elements and
code snippets only)
Considerations – Modifications have to be Debugging stops execution
performed on the at a Python module function
EcoStruxure Machine but can be continued.
Expert installation for The Autocomplete function
PyCharm. starts several processes of
Debugging can be the [Link]. It
performed with IronPython will be available again after
but error messages are they have been completed.
displayed in the console. By further using the
Autocomplete function,
error messages are
provoked by the extension
and will be displayed in the
Microsoft Visual Studio
Code development console
(for further information,
refer to Help → Toggle
Developer Tools).
X Function is supported
– Function is not supported

978 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Logic Builder User Interface


The Logic Builder user interface allows you to execute script files via the Tools → Scripting →
Execute Script File... command or executes scripting statements via the Scripting Immediate view
The Scripting Immediate view is a (Python) interpreter integrated in EcoStruxure Machine Expert
allowing you, for example, to start functions.
The Scripting Immediate view hosts an interpreter and is based on REPL principles.
The block diagram shows how the EcoStruxure Machine Expert user interface is using the script
engine to execute Python commands:

Execute Statements Via Interactive Shell


The block diagram shows how the interactive interpreter in a REPL-based shell is using the script
engine to execute Python statements:

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 979
Python Script Language

Script Execution Via Non-Interactive Shell


The block diagram shows how the (non-interactive) shell is using the script engine to execute
scripts:

Script Debugging Using Integrated Development Environment (IDE) from Third-Party Vendors
The block diagram shows how an Integrated Development Environment (IDE) from third-party
vendors (for example, Visual Studio and PTVS) can be used for debugging Python scripts:

980 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Using the Logic Builder Shell

Starting the Logic Builder Shell


The [Link] is located in the installation directory of EcoStruxure Machine Expert.
The Logic Builder Shell provides the EcoStruxure Machine Expert REPL that is based on the
IronPython [Link]. This is the REPL of the standard IronPython package when installed on a PC.
Hence, it provides the same functionalities, such as tab completion, Python script debugging
support, and so on. Plus in addition, it allows access to the EcoStruxure Machine Expert Python
API.
Double-click the [Link] to start the Logic Builder Shell (without arguments) in a
console.
Result: The input prompt (>>>) is displayed:

Commands
At the input prompt (>>>), type your Python statements and press Enter to execute them.
The following sequence of commands provides an example on how to open a project, search a
device node and print the name:
IronPython 2.7.4 ([Link]) on .NET 4.0.30319.18444 (32-bit)
Type "help", "copyright", "credits" or "license" for more information.
>>> projectName = "C:\\temp\\[Link]"
>>> proj = [Link](projectName)
>>> sercosNode = [Link]("SERCOSIII", True)[0]
>>> print(sercosNode.get_name(False))
SERCOSIII
>>>

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 981
Python Script Language

Usage:
[Link] [options] [[Link]|- [arguments]]
The [options] are defined in the list of command-line arguments below.
[arguments] is a placeholder for arguments that are passed to the script file.
Command-line arguments of the Logic Builder Shell:

Command-line Description Example


argument
-h / --help Prints the IronPython command-line help. [Link] --help
[Link] -h
-m <module> Run library module as script. [Link] -m pdb
[Link]
-i Inspect interactively after running script. [Link] -i
[Link]
<Script File> Runs the specified Python script file. [Link]
[Link]
--nologo Skips the display of the informational text of [Link] --nologo
the Logic Builder during startup.
Skips the display of the …terminated
message during shutdown.

You can combine different command-line arguments. For example, the -i argument can be
combined with a specified Python script file and -nologo.
The list shows only a selection of IronPython command-line arguments. For a complete list, refer
to the IronPython website and documentation.

Use Cases for the Logic Builder Shell


You can use the Logic Builder Shell in different scenarios. The following use cases show how it
helps to improve the usability of working with EcoStruxure Machine Expert and the Python scripting
language.

Use Case 1
When executing scripts in Continuous Integration (CI) systems - for example, to Checkout a
EcoStruxure Machine Expert project from Subversion (SVN), compile the project and save as
library - you need the script output printed to a console. With the [Link] as real
console application, you can redirect the output or call it in a CI system (for example, Jenkins)
where the output is fetched and added to a build log.
Example:
[Link] [Link] > [Link]

982 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Use Case 2
You can integrate the [Link] as counterpart to Python Tools for Visual Studio (refer
to the chapter on debugging (see page 998)). In this case, the [Link] is used for
debugging communication between Visual Studio and EcoStruxure Machine Expert and to execute
the statements.

Use Case 3
[Link] allows you to use the built-in command-line debugging feature called pdb
module.
Example:
[Link] -m pdb [Link]

Use Case 4
Test your Python scripts in no UI mode to verify that it is working. In console mode, you can enter
input via the console. Keep in mind that reading input from the console is only possible in the
[Link]. In the Scripting Immediate view, that is available in the Logic Builder user
interface, no console input is possible. This has the effect that the statement readline() is
ignored.
Example:
import sys
print("Please enter a text: ")
text = [Link]()
print("Your entered text: " + text)

Use Case 5
Explore the Python and EcoStruxure Machine Expert API and documentation.
 Use the built-in help() feature to access the Python help via the IronPython shell. To achieve
this, make sure that an Internet connection is available.
Example:
help() # start the built-in help module
topics # list all available topics
##### here you'll get the list of available topics #####
LIST # dumps the help to work with lists.
##### here you'll get the help working with lists #####
quit # leaf build-in help feature
 Use the built-in dir() feature to print available api functions.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 983
Python Script Language

Example:
dir() # prints the list of defined variables and functions in cur
rent script scope
##### here you'll get the list of defined variables or functions in cur
rent script scope #####
import sys
dir(sys) # prints the available functions defined in sys module
##### here you'll get the list of defined variables or functions in sys
module #####
 Use the inspectapi module to explore the EcoStruxure Machine Expert Python API. Due do
technical restrictions, the built-in dir() feature of Python cannot print the API help for the
EcoStruxure Machine Expert Python API. To achieve this, use the inspectapi.
Example:
[Link](projects) # prints the available API functions of "proj
ects" which provides access e.g. to open a SoMachine project
##### here you'll get the SoMachine API provided via "projects" variabl
e #####

Use Case 6
Use -i switch as argument passed to the [Link] in combination with a specified
script to get the shell prompt at the end of the script run. This can help to inspect interactively after
running a script, for example, to see the content of variables.

Benefits of the Logic Builder Shell


It is a best practice to use the [Link] to execute scripts instead of using
[Link] to run scripts in no UI mode. Both ways are still possible but the command line of
the [Link] provides a better usability and the Logic Builder Shell prints the output
to the console.
Example of using the [Link] to run scripts in no UI mode:
[Link] -noui --runscript="<script file>"
Example of using the [Link]:
[Link] "<script file>"

Debugging EcoStruxure Machine Expert Python Scripts with Command-Line Debugger Module pdb
The [Link] provides the built-in command line debugging feature pdb module (for
more documentation, refer to [Link] This is a feature for
experts and used to debug Python scripts or to find an issue. IronPython itself provides a module
that can be loaded into a shell. When you start your own script via the pdb function run(…), you
can debug the Python code in the console. The console application only provides text-based UI
possibilities.

984 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

NOTE: Using the command-line debugger can be complicated. For a more user-friendly debugging
experience, consider using Microsoft Visual Studio and PTVS (for further information, refer to
Using Logic Builder Shell with Microsoft Visual Studio and PTVS (see page 998)).
The module pdb defines an interactive source code debugger for Python programs. It provides the
following features:
 Setting (conditional) breakpoints and single stepping at the source line level
 Inspection of stack frames
 Source code listing
 Evaluation of arbitrary Python code in the context of any stack frame
To start a Python script directly in pdb, use the following command-line syntax:
[Link] -m pdb [Link]
Selection of pdb debugger commands (refer to the Python help on the Internet for more details):

Debugger command Command description


h(elp) [command] Without argument, print the list of available commands.
With a command as argument, print help about that command.
help pdb displays the documentation file.
r(un) Restart the debugged Python program.
b(reak) With a line number argument, set a break at this position in the file.
With a function argument, set a break at the first executable
statement within that function. The line number may be prefixed
with a file name and a colon to specify a breakpoint in another file
(probably one that has not been loaded yet). The file is searched
on [Link]. Each breakpoint is assigned a number to which the
other breakpoint commands refer.
If a second argument is present, it is an expression which must
evaluate to TRUE before the breakpoint is honored.
Without argument, list all breaks. For each breakpoint listed, the
number of times that the breakpoint has been hit, the ignore count,
and the associated condition, if any, are included.
l(ist) [first[, last]] List source code for the file.
Without arguments, list 11 lines around the current line or continue
the previous listing.
With one argument, list 11 lines around at that line.
With two arguments, list the given range; if the second argument is
less than the first, it is interpreted as a count.
c(ontinue) Continue execution, only stop when a breakpoint is encountered.
n(ext) Continue execution until the next line in the current function is
reached or it returns. (The difference between next and step is
that step stops inside a called function while next executes called
functions at (nearly) full speed, only stopping at the next line in the
current function.)

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 985
Python Script Language

Debugger command Command description


s(tep) Execute the current line, stop at the first possible occasion (either
in a function that is called or on the next line in the current function).
u(ntil) Continue execution until the line with the line number greater than
the current one is reached or when returning from the current
frame.
r(eturn) Continue execution until the current function returns.
w(here) Print a stack trace, with the most recent frame at the bottom. An
arrow indicates the current frame, which determines the context of
most commands.
q(uit) Quit from the debugger. The program being executed is aborted.

Debugging Example with pdb


Example Python script to be debugged:
print("Demonstration how to use Visual Studio + PTVS to debug SoMachine
Python scripts")
# close open project
if [Link]:
print("Close project")
[Link]()
print("Open project")
[Link]("c:\\Temp\\[Link]")
sercosDevice = [Link]("SERCOSIII", True)[0]
sercosDeviceName = sercosDevice.get_name(False)
print("Sercos device name: " + sercosDeviceName)
print("Close project")
[Link]()
In each line in the following listing starting with (pdb), a debugger command is executed, such as
list (l) or help or next (n) or quit (q). In between you can see the statement or its
output which was executed.
[Link] -m pdb [Link]
SoMachine Logic Builder Shell version [Link]
Copyright (C) Schneider Electric Automation GmbH 2014-2015
Demonstration how to use Visual Studio + PTVS to debug SoMachine Python
scripts
> C:\temp\[Link](5)<module>()
-> if [Link]:
(Pdb) help

986 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Documented commands (type help <topic>):


========================================
EOF bt cont enable jump pp run unt
a c continue exit l q s until
alias cl d h list quit step up
args clear debug help n r tbreak w
b commands disable ignore next restart u whatis
break condition down j p return unalias where
Miscellaneous help topics:
==========================
exec pdb
Undocumented commands:
======================
retval rv
(Pdb) l
1
2 print("Demonstration how to use Visual Studio + PTVS to debug
SoMachine Python scripts")
3
4 # close open project
5 -> if [Link]:
6 print("Close project")
7 [Link]()
8
9 print("Open project")
10 [Link]("c:\\Temp\\[Link]")
11
(Pdb) n
> C:\temp\[Link](9)<module>()
-> print("Open project")
(Pdb) n
Open project
> C:\temp\[Link](10)<module>()
-> [Link]("c:\\Temp\\[Link]")
(Pdb) l
5 if [Link]:
6 print("Close project")
7 [Link]()
8
9 print("Open project")
10 -> [Link]("c:\\Temp\\[Link]")
11
12 sercosDevice = [Link]("SERCOSIII", True)[0]

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 987
Python Script Language

13
14 sercosDeviceName = sercosDevice.get_name(False)
15
(Pdb) n
IOError: IOError(...oject'.")
> C:\temp\[Link](10)<module>()
-> [Link]("c:\\Temp\\[Link]")
(Pdb) q
SoMachine Logic Builder Shell terminated.

988 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Using the Logic Builder Scripting Immediate View

Overview
When you start the Logic Builder with user interface via [Link], then the following two
commands are available to open two views dedicated to scripting purposes:
 View → Scripting Immediate
 View → Scripting Watch

Script execution in the EcoStruxure Machine Expert user interface via the Execute Script File...
command or via the Scripting Immediate view:

Scripting Immediate View


The Scripting Immediate view is a host for the same REPL as you can use in the Logic Builder
Shell. It allows you to interact with EcoStruxure Machine Expert in a textual based interface in
parallel to the user interface.
Execute the command View → Scripting Immediate to open the Scripting Immediate view.
The figure provides an example of how to open a project, find a device object and print its name in
the Scripting Immediate view.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 989
Python Script Language

The Scripting Immediate view allows you to enter Python statements and to execute them (using
the REPL).
To run a Python script file, click the ... button or enter the script name into the prompt textbox and
click the Go! button.

Click the Reset button to reset the Scripting Immediate view and to clear the current scope.

Scripting Watch View


The Scripting Watch view shows the content of the Python variables you have defined.
Execute the command View → Scripting Watch to open the Scripting Watch view.

990 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Elements of the Scripting Watch view:

Element Description
Add to watch button To add a watch expression, type the expression into
the Scripting Immediate view prompt, and click the
Add to watch button.
Remove watch button To remove a watch expression, select an entry in the
Scripting Watch view, and click the Remove watch
button.
Auto update option Select the Auto update option to enable the auto
update function for expressions in the Scripting
Watch view.
NOTE: The process of refreshing values can lead to
additional PC processor load.
Update values button The Scripting Watch view list is updated
automatically each time a statement is executed in
the Scripting Immediate view. To update the list
manually, click the Update values button.

Example
Enter and execute the following statement in the Scripting Immediate view.
projectName = "C:\\temp\\[Link]"
Proceed as follows:

Step Action
1 Enter projectName in the Scripting Immediate view.
2 Click the Add to watch button in the Scripting Watch view.
Result: The variable projectName is displayed in the Scripting Watch list.

When you assign a different value to the variable projectName, the changed content is
displayed.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 991
Python Script Language

Keyboard Commands in the Logic Builder Shell and the Scripting Immediate View

Overview
This chapter provides information on using the Logic Builder Shell started via the LogicBuild-
[Link] or the Logic Builder Scripting Immediate view.

Tab Completion / Intellisense


When you type Python statements, you can use the tab key on your keyboard to complete the
entered statement or to iterate through the options.
Example:
Type the text ins and press the tab key. Result: The expression is competed to inspectapi.
Type the text inspectapi.d and press the tab key multiple times. The different functions of
inspectapi starting with d are displayed.

Clear Current Entered Prompt Text


Type a Python statement and press the ESC key on your keyboard. The line is cleared.

Python Statement History


Press the up or down key on your keyboard to use the history of entered Python statements.

List Variables of Current Scope


Use the dir() function to display variables of the current scope.

exit() / exit(…) Function


Use the exit() / exit(…) function to leave the script and (if specified) to return the exit code for
later usage.
Example:
Python script (exit_code_test.py)
# …
# Python statements
exit(5)
Running the script in the Windows command prompt (or batch file) and using the exit code:
[Link] exit_code_test.py
echo %ERRORLEVEL%
Result:
5 is printed to the command prompt. You can use this %ERRORLEVEL% to control your batch flow.

992 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Explore EcoStruxure Machine Expert Python API (with dir() and inspectapi)

Overview
EcoStruxure Machine Expert provides a Python API that you can use for EcoStruxure Machine
Expert scripting. When you write Python scripts, most times you only need names of functions or
the list of required parameters and its names. You often also need the available functions of an
object returned by an API function you have called. The following functions allow you to explore
the EcoStruxure Machine Expert Python API to support you in developing Python scripts.

Built-in dir(…) function of Python


Without arguments, this function returns the list of names in the current local scope. With an
argument, this function attempts to return a list of valid attributes for that object.
The default dir() mechanism of Python behaves differently with different types of objects, as it
attempts to produce the most relevant, rather than complete information:
 If the object is a module object, the list contains the names of the attributes of the module.
 If the object is a type or class object, the list contains the names of its attributes, and recursively
of the attributes of its bases.
 Otherwise, the list contains the names of the attributes of the object, the names of the attributes
of its class, and recursively of the attributes of the base classes.
Example (in [Link]):
>>> import struct
>>> dir() # show the names in the module namespace
['__builtins__', '__doc__', '__name__', 'struct']
>>> dir(struct) # show the names in the struct module
['Struct', '__builtins__', '__doc__', '__file__', '__name__',
'__package__', '_clearcache', 'calcsize', 'error', 'pack', 'pack_into'
,
'unpack', 'unpack_from']
>>> class Shape(object):
def __dir__(self):
return ['area', 'perimeter', 'location']
>>> s = Shape()
>>> dir(s)
['area', 'perimeter', 'location']

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 993
Python Script Language

inspectapi Functions
Since the dir() function does not list all EcoStruxure Machine Expert Python API elements,
additional functions are provided to display them for Python script developers.
inspectapi is a Python module loaded automatically while starting the [Link] or
the Scripting Immediate view. As a result, a variable/module inspectapi is available in the
current scope. This variable is also listed by executing the dir() function.
The inspectapi variable/module provides the following functions:

Function name Parameters Description


[Link] obj: Specify an object (for This function provides a list of
example, a variable) for which you available EcoStruxure Machine
get more information. Expert Python API members you
(optional) verbose: The default can call. The fields, properties,
value is FALSE. Set the parameter events, and methods are listed.
inspectapi.dir_events to TRUE to get verbose output. This function provides a list of
inspectapi.dir_fields available EcoStruxure Machine
Expert Python API events you can
inspectapi.dir_methods call.
inspectapi.dir_properties

Examples:
# To see the API of the inspect api itself
[Link](inspectapi)
Output:
Members of type 'InspectAPI'
Methods:
dir (obj, verbose = False)
dir_events (obj, verbose = False)
dir_fields (obj, verbose = False)
dir_methods (obj, verbose = False)
dir_properties (obj, verbose = False)
# To see the API of projects variable
[Link](projects)

994 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Output:
Members of type 'ScriptProjects'
Properties:
[get] all
[get] primary
Methods:
convert (stPath, stOutputPath, converter, bPrimary)
convert (stPath, stOutputPath, converterGuid, bPrimary)
create (stPath, bPrimary)
get_all ()
get_by_path (stPath)
get_primary ()
open (stPath, stPassword, bPrimary)
open (stPath, encryption_password, session_user, session_password, bP
rimary)
open_archive (stArchiveFile, stProjectPath, bOverwrite, stPassword)
open_archive (stArchiveFile, stProjectPath, bOverwrite, encryption_pa
ssword, session_user, session_password)
# open a project
proj = [Link]("c:\\temp\\[Link] ")
# To see API of primary project
[Link]([Link])
Output (truncated):
Members of type 'ScriptProject'
Properties:
[set] active_application
[get] dirty
[get] handle
[get] has_library_manager
[get] has_project_info
[get] is_root
[get] library
[get] path
[get] primary
[get] project
[get] svn
[get] user_management
Methods:
add (stName, id, stModuleId)
add (stName, iType, stId, stVersion, stModuleId)
check_all_pool_objects ()
clean_all ()
close ()
compare_to (projectFile)

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 995
Python Script Language

compare_to (projectFile, ignoreWhiteSpace, ignoreComments, ignoreProp


erties)
...
logout ()
save ()
save_archive (stArchiveFile)
save_archive (stPath, additional_categories)
save_archive (stPath, comment, additional_categories)
save_archive (stPath, additional_files, additional_categories)
....
save_as (stPath, stPassword)
save_as_compiled_library (destination_name)
set_active_application (value)
update ()
# search objects by name (e.g. a device with name SERCOSIII)
objs = [Link]("SERCOSIII", True)
# extract object at index 0 from returned list (if found).
theObj = obj[0]
# see the available API of the found object SERCOSIII
[Link](theObj)
Output (truncated):
Members of type 'ScriptObject'
Properties:
[get] connectors
[get] device_parameters
[get] embedded_object_types
[get] guid
[get] handle
[get] has_textual_declaration
[get] has_textual_implementation
[get] index
[get] is_application
[get] is_device
[get] is_explicit_connector
[get] is_folder
[get] is_libman
[get] is_project_info
[get] is_root
[get] is_task
[get] parent
[get] project
[get] svn
[get] type
Methods:
add (stName, id, stModuleId)

996 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

add (stName, iType, stId, stVersion, stModuleId)


allowed_interfaces_at (index)
can_convert (targetDeviceId, targetModuleId = null)
can_convert (targetType, targetId, targetVersion, targetModuleId = nu
ll)
convert (targetDeviceId, targetModuleId = null)
convert (targetType, targetId, targetVersion, targetModuleId = null)
create_folder (stFolderName)
disable ()
enable ()
export_native (destination, includeChildren, profileName, reporter)
export_xml (reporter, stPath, bRecursive)
export_xml (reporter, stPath, bRecursive, bExportFolderStructure)
export_xml (reporter, stPath, bRecursive, bExportFolderStructure, bPl
ainText)
export_xml (stPath, bRecursive, bExportFolderStructure, bPlainText)
find (namePath)
find (stName, recursive)
get_address ()
get_all_parameters ()
...
move (newParent, nNewIndex)
plug (stName, id, stModuleId)
plug (stName, iType, stId, stVersion, stModuleId)
reboot_plc ()
remove ()
rename (stNewName)
reset_diagnosis_messages ()
set_communication_address (address)
set_gateway_and_address (stGateway, stAddress)
set_gateway_and_address (gateway, stAddress)
set_parameter (parameter, value)
set_parameter_iec_address (identifier, connectorId, iecAddress)
set_parameter_io_variable_mapping (identifier, connectorId, variable,
createVariable = False)
set_parameter_io_variable_mapping (identifier, connectorId, subElemen
tIndex, variable, createVariable = False)
set_simulation_mode (bSimulation)
unplug ()
update (id, stModuleId)
update (iType, stId, stVersion, stModuleId)

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 997
Python Script Language

Using Logic Builder Shell with Microsoft Visual Studio and PTVS

Overview
With EcoStruxure Machine Expert and the [Link], you can develop and debug
Python scripts. To develop a EcoStruxure Machine Expert Python script, you can use the editors
presented in the Introduction chapter (see page 973).
It is a good practice to use an IDE from a third-party vendor such as Microsoft Visual Studio with
installed extension Python Tools for Visual Studio (PTVS). Visual Studio is a product from
Microsoft and is not part of the EcoStruxure Machine Expert delivery.
NOTE: Since Python Tools for Visual Studio (PTVS) (see [Link] are free
and open source, it may be that not all versions are fully compatible with the EcoStruxure Machine
Expert [Link] versions.
In the following figure, you can see the two tools that are working together with EcoStruxure
Machine Expert [Link].

998 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Procedure of Developing and Debugging


After the tools are installed and configured, proceed as follows:

Step Action
1 Create a Visual Studio solution.
2 Add a Python project.
3 Add a Python script.
4 Configure the project to use the [Link] as interpreter.
5 Develop your script and execute it in Visual Studio.
Result: Visual Studio performs the following tasks:
 Launching the [Link].
 Establishing a TCP/IP connection between Visual Studio (+PTVS) and
[Link].
 Sending the Python statements to the shell.
 Getting feedback of results.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 999
Python Script Language

Developing Scripts with Microsoft Visual Studio


Visual Studio allows you to set breakpoints in the script and debug with the debugger commands
Run, Step Into, Step Over, and so on.
Visual Studio + PTVS allow you to develop your EcoStruxure Machine Expert Python script.
Visual Studio provides support for:
 Verification of the Python syntax while writing.
 Intellisense support.
 Syntax highlighting of Python script.

Syntax verification in Visual Studio of the Python script while writing:

After you have clicked Start Debugging in Visual Studio, the [Link] is launched and
the script execution starts. If you have set a breakpoint in the script and the breakpoint is hit, Visual
Studio marks the current statement and you can use the debugger commands (Step-Into,
Step-Over, Run, …). You can see the script output in the Logic Builder Shell that has been
started.

1000 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Python script debugging with Visual Studio:

1 Debugger commands
2 Configured Python environment to be used for debugging
3 [Link] started by Visual Studio
4 Breakpoint in Python script

System Requirements for Debugging Scripts


To debug EcoStruxure Machine Expert Python scripts, your system has to meet the following pre-
conditions.
 EcoStruxure Machine Expert with Logic Builder Shell feature installed.
 Visual Studio installed.
 Python Tools for Visual Studio (PTVS) installed.
 Logic Builder Shell environment configured in Visual Studio (see next paragraph).

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1001
Python Script Language

Configuring the Logic Builder Shell in Visual Studio


Configure the Logic Builder Shell environment in Visual Studio once on a system for each installed
EcoStruxure Machine Expert version with the Logic Builder Shell feature:

Step Action
1 Start Visual Studio.
2 Execute the command Tools → Options → Python Tools → Environment Options.
Result: The Options dialog box is displayed.
3 In the Options dialog box, click the Add Environment button and create an environment, for
example with the name LogicBuilderShell_V4.x.
4 Set the Logic Builder Shell as Default Environment.
5 Set the Path to your [Link] (for example, C:\Program Files (x86)\Schneider
Electric\SoMachine Software\Vx.x\[Link]).
6 Set the Windows Path to your [Link] (for example, C:\Program Files
(x86)\Schneider Electric\SoMachine Software\Vx.x\[Link]).
7 Set the Library Path to the ScriptLib folder (for example, C:\Program Files (x86)\Schneider
Electric\SoMachine Software\Vx.x\LogicBuilder\ScriptLib\[Link]).
8 Set the Architecture to x86.
9 Set the Language Version to 2.7.

1002 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Configuring Visual Studio Solution and Python Projects


Configure the Visual Studio solution and the Python projects for every solution or Python project
as follows:

Step Action
1 Start Visual Studio.
2 Create a new solution.
3 Create a new IronPython application.
4 Right-click your project in the solution and execute the command Properties from the context
menu.
5 In the General tab, select your configured LogicBuilderShell_V4.x as Interpreter.
6 In the Debug tab, select IronPython (.NET) launcher as Launch mode.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1003
Python Script Language

Using Logic Builder Shell with JetBrains PyCharm

Overview
With EcoStruxure Machine Expert and the [Link], you can develop and debug
Python scripts. To develop a EcoStruxure Machine Expert Python script, you can use the editors
presented in the Introduction chapter (see page 973).
It is a good practice to use an IDE from a third-party vendor such as JetBrains PyCharm. PyCharm
is a product from JetBrains and contains a free Community Edition and a purchasable Professional
Edition. It is not part of the EcoStruxure Machine Expert delivery but can be downloaded from
[Link] PyCharm is cross-platform and supports Windows, macOS,
and Linux.
In the following figure, you can see how PyCharm works together with EcoStruxure Machine Expert
[Link].

Procedure of Developing and Debugging


After the tools are installed and configured, proceed as follows:

Step Action
1 Start PyCharm.
2 Create or open a PyCharm project or Python file.
3 Develop your script and execute it in PyCharm.
Result: PyCharm performs the following tasks:
 Launching the [Link].
 Establishing a TCP/IP connection between PyCharm and [Link].
 Sending the Python statements to the shell.
 Getting feedback of results.

1004 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Developing Scripts with JetBrains PyCharm


PyCharm allows you to develop your EcoStruxure Machine Expert Python scripts.
The following features are supported:
 Verification of the Python syntax while writing.
 Debug by setting breakpoints and using the debugger commands Step Into, Step Over,
Step Out and more.
 Syntax highlighting of Python script.
 Autocomplete support. (NOTE: Code inside external modules cannot be resolved.)

After you have executed the command Run → Debug..., or you have pressed Alt+Shift+F9 in
PyCharm, and selected the Python script to be executed, the [Link] is launched
and script execution starts. If you have set a breakpoint in the script and the breakpoint is hit,
PyCharm marks the present statement, and you can use the debugger commands. The script
output is displayed in the Console.
Python script debugging with PyCharm:

1 Breakpoint in Python script


2 Debug Console of [Link] started by PyCharm
3 Debugger commands
4 Open evaluate expression dialog for directly issuing Python statements

For further information on how to use PyCharm debugging, refer to


[Link]
EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1005
Python Script Language

System Requirements for Debugging Scripts


To debug EcoStruxure Machine Expert Python scripts, your system has to meet the following pre-
conditions.
 EcoStruxure Machine Expert with Logic Builder Shell feature installed.
 PyCharm installed.
 Logic Builder Shell environment configured in PyCharm (see next section Configuring the Logic
Builder Shell in PyCharm (see page 1006)).

Configuring the Logic Builder Shell in PyCharm


NOTE: There is one action which must be applied to the corresponding EcoStruxure Machine
Expert installation in order to be able to use PyCharm. Since PyCharm expects and only allows the
original executable name to be configured for a Python interpreter, the [Link] must
be named appropriately. To achieve this, execute step 1 of the following steps.
Configure the Logic Builder Shell environment in PyCharm once on a system for each installed
EcoStruxure Machine Expert version with the Logic Builder Shell feature:

Step Action
1 Rename the [Link]:
 Navigate to your [Link] (for example, C:\Program Files (x86)\Schneider
Electric\SoMachine Software\V4.40 Motion) in Windows Explorer.
 Duplicate the files [Link] and [Link] by copying and pasting
them into the same directory.
 Rename the files to [Link] and [Link] since Logic Builder uses IronPython as Python
interpreter.
2 Start PyCharm and open the Settings dialog box via Configure → Settings.
3 Open the Project Interpreter view, and execute the command Add Local from the button to the right of the
Project Interpreter: box.

Result: After this process has been completed (which may take some time), the Project Interpreter is
displayed and set as default.
4 Execute the command More... from the button to the right of the Project Interpreter: box.
5 Select the newly created entry, and click the pencil on the right to edit the properties.
6 Rename it to LogicBuilderShell_V4.x where x is the specific version of the Logic Builder Shell.
7 Click OK to apply the settings and to close the dialog boxes.

For further information on how to configure PyCharm Python interpreters, refer to


[Link]

1006 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Configuring Existing PyCharm Projects or Python Files


If you apply the steps described in the previous section Configuring the Logic Builder Shell in
PyCharm (see page 1006) when you create PyCharm projects, the newly created Logic Builder
Shell Python interpreter is preconfigured.
To configure existing Python projects or single files, proceed as follows:

Step Action
1 Start PyCharm.
2 Open an existing project or Python file.
3 Click the Configure Python Interpreter link of the message in the header highlighted in yellow.
4 In the Settings dialog box, select the previously created LogicBuilderShell_V4.x as Project
Interpreter, and click OK to confirm.

For further information on how to configure PyCharm Project Interpreters, refer to


[Link]

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1007
Python Script Language

Using Logic Builder Shell with Microsoft Visual Studio Code and Python Extension

Overview
With EcoStruxure Machine Expert and the [Link], you can develop and debug
Python scripts. To develop a EcoStruxure Machine Expert Python script, you can use the editors
presented in the Introduction chapter (see page 973).
It is a good practice to use an IDE from a third-party vendor such as Microsoft Visual Studio Code
with installed Python extension. Visual Studio Code is an open source product from Microsoft. It is
not part of the EcoStruxure Machine Expert delivery but can be downloaded from
[Link] Visual Studio Code is cross-platform and supports Windows,
macOS, and several Linux distributions.
NOTE: Since the Python extension (see
[Link] is free and open
source, it may be that not all versions are fully compatible with the EcoStruxure Machine Expert
[Link] versions.
In the following figure, you can see the two tools that are working together with EcoStruxure
Machine Expert [Link].

1008 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Procedure of Developing and Debugging


After the tools are installed and configured, proceed as follows:

Step Action
1 Start Visual Studio Code.
2 Create or open a Python file.
3 Develop your script and execute it in Visual Studio Code.
Result: Visual Studio Code performs the following tasks:
 Launching the [Link].
 Establishing a TCP/IP connection between Visual Studio Code and [Link].
 Sending the Python statements to the shell.
 Getting feedback of results.

Developing Scripts with Microsoft Visual Studio Code


Visual Studio Code with Python extension allows you to develop your EcoStruxure Machine Expert
Python scripts.
The following features are supported:
 Debug by setting breakpoints and using the debugger commands Step Into, Step Over,
Step Out, and Continue.
 Syntax highlighting of Python script.
 IntelliSense for local elements and code snippets. (NOTE: Code inside external modules cannot
be resolved.)
After you have executed the command Debug → Start Debugging, or you have pressed F5 in
Visual Studio Code, the [Link] is launched, and script execution starts. If you have
set a breakpoint in the script and the breakpoint is hit, Visual Studio Code marks the present
statement, and you can use the debugger commands. The script output is displayed in the Debug
Console.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1009
Python Script Language

Python script debugging with Visual Studio Code:

1 Debugger commands
2 Breakpoint in Python script
3 Debug Console of [Link] started by Visual Studio Code
4 Input box for directly issuing Python statements

For further information on how to use Visual Studio Code debugging, refer to
[Link]

System Requirements for Debugging Scripts


To debug EcoStruxure Machine Expert Python scripts, your system has to meet the following pre-
conditions.
 EcoStruxure Machine Expert with Logic Builder Shell feature installed.
 Visual Studio Code installed.
 Visual Studio Code Python extension installed and configured (see next section Installing and
Configuring the Python Extension in Visual Studio Code).

1010 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Installing and Configuring the Python Extension in Visual Studio Code


The Python extension must be installed once in Visual Studio Code by performing the following
steps (also described at [Link]

Step Action
1 Start Visual Studio Code.
2 Execute the command View → Extensions or press Ctrl+Shift+X, and type python into the search box.
Result: The extension view opens, and a list of matching extensions is displayed.

3 Install the Python extension by clicking the Install button of the corresponding entry.
NOTE: Make sure to install the correct extension since there exist multiple different Python
implementations.
NOTE: If an error is detected during the installation, verify your Internet connection: An existing proxy of
the network you are connected to must be configured in Visual Studio Code using the [Link]* settings.
For further information regarding Visual Studio Code settings, refer to
[Link]
4 After the installation process of the Python extension has been completed successfully, restart Visual
Studio Code manually, or press the Reload button.
5 Configure the path to your [Link] (for example, C:\Program Files (x86)\Schneider
Electric\SoMachine Software\V4.40 Motion\[Link]) in your Visual Studio Code settings.
Open the [Link] file by executing the command File → Preferences → Settings, or press Ctrl+,,
and add the following lines inside the curly braces (adapt the path to your installation):
"[Link]": "C:\\Program Files (x86)\\Schneider Electric\\SoMachine
Software\\V4.40 Motion\\[Link]",
"[Link]": false
If the settings file already contains entries, append a final comma to the previous line.
After that it should look like this:

For further information regarding Visual Studio Code settings, refer to


[Link]

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1011
Python Script Language

Executing Scripts

Overview
You can execute script files ([Link]), containing a sequence of script commands, from the
EcoStruxure Machine Expert user interface.
For further information on running scripts form the EcoStruxure Machine Expert user interface,
refer to the chapter Script-Related Commands (see EcoStruxure Machine Expert, Menu
Commands, Online Help).

Batch Files
Frequently used commands

Command Description
- REM or :: The line is a comment and will be ignored.
cd Changes to another directory.
echo off The commands will not be displayed.
In order to prevent single commands from being displayed, insert an
@ character in front of the command.
echo Displays a string or a variable on the programming console.
set Declares a variable and assigns a value to this variable.
> Writes the output to a file. If the file already exists, it will be
overwritten.
>> Appends the output to a file. If the file does not already exist, it will be
created.

Application example:
@echo off
REM Go to the directory where EcoStruxure Machine Expert is installed
cd "<Replace this with the path to the [Link], for example,
C:\Program Files (x86)\Schneider Electric\SoMachine Software\>"
REM Run [Link] with no graphical user interface and the full
path to the script
[Link] --noui --
runscript="<Replace this with the full file path
where the script is stored, for example, D:\MyScripts\[Link]>"
pause

C# Console Application
Running the script in a C# application allows you to edit the script dynamically before the script is
executed by the engine. In addition, some previous steps can be performed in the C# application
as well

1012 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

using System;
using [Link];
using [Link];
using [Link];
using [Link];
namespace ExecuteScriptExample
{
class Program
{
static void Main(string[] args)
{
try
{
ProcessStartInfo psi = new ProcessStartInfo();

// Specify the name and the arguments you want to pass


[Link] = @"<Replace this with the path to the
[Link], for example,
C:\Program Files (x86)\Schneider Electric\SoMachine Software\LogicBuild
[Link]";
[Link] = "\
"<Replace this with the full file path where the script is stored,
for example, D:\MyScripts\[Link]\"";
// Create new process and set the starting information
Process p = new Process();
[Link] = psi;
// Set this so that you can tell when the process has
completed
[Link] = true;
[Link]();
// Wait until the process has completed
while (![Link])
{
[Link](1000);
}
}
catch (Exception ex)
{
[Link]([Link]);
}
[Link]();
}
}
}

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1013
Python Script Language

Best Practices

Indentation (Tabs and Spaces)


Blocks in Python are created by indentation of codes of block (unlike, for example, END_IF
statements in structured text, or curly brackets {" "} in the C programming language).
Examples:

C Programming language Python programming language


int factorial(int x) def factorial(x):
{ if x > 1:
if (x > 1) return x * factorial(x - 1)
return x* factorial(x - 1); else:
else return 1
return 1;
}

Note that when mixing tabs and spaces for indentation: In Python, tab characters are internally
replaced by 8 spaces. Since numerous editors by default use 4 spaces, this can lead to code errors
that are difficult to find. Source code blocks appear to have the same size of the indent but actually
the indentation is different.
Therefore, care should be taken when using copy and paste commands.
To help to avoid this, configure your editor in such a way that it automatically replaces tab
characters by spaces.

Case Sensitivity
Python is a case-sensitive language (in contrast to, for example, structured text). This means that
MyVar and MYVAR refer to two different variables.

Encoding Path Names


Python uses the backslash \ character to encode special characters, for example, the sequence
\n encodes the newline character.
Backslash characters are also commonly used to encode path names in a Windows file system
(for example, D:\PythonProjects\[Link]).
This can lead to issues when encoding path names in a Python script.
There are two possible solutions:
 Either encode all backslashes with the \\ sequence (for example,
project_path = "D:\\PythonProjects\\[Link]").
 Or disable the default behavior by prefixing an r in front of the opening quotation mark (for
example, sequence (for example,
project_path = r"D:\PythonProjects\[Link]").

1014 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Colons (:)
Loop declarations and conditions end with a colon.
Example:
if len(messages) == 0:
print("--- Build successful ---")

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1015
Python Script Language

Reading .NET API Documentations

Reading .NET API Documentations for Python Programmers


The current preliminary version of the script interface documentation is auto-generated from the
underlying .NET / C# sources. Thus, it contains some idioms which are not common to Python
programmers.
The list gives some hints on how to translate them to the Pythonic way of thinking:
 Interfaces in .NET are a contract about which members (methods, properties) have to be
provided by the classes implementing that interface. In IronPython, one can implement one or
several .NET interfaces by deriving them as one does with base classes. When a member
declared by the interface is missing in the declaration, an exception will be thrown at runtime.
(The [Link] example shows a class implementing the ImportReporter
interface.)
 In .NET, all parameters, properties, and function return values are statically typed. The allowed
type is annotated in front of the parameter name. For functions, the type of the return value is
in front of the function name. Instances of subclasses are allowed when a parent class (or
interface) is mentioned. void denotes a function without a return value.
 Methods may be overloaded, a class can have several methods with the same name, but they
differ in the number and/or types of parameters. IronPython will automatically call the matching
variant.
 The type INT can contain an integral number between -2,147,483,648... 2,147,483,647, BOOL
is equal to the Python type BOOL (TRUE and FALSE), the type STRING is equal to the Python
type str and unicode (which are equal in IronPython). IDictionary<Object, Object> denotes a
normal Python dictionary. IronPython automatically converts between the Python and .NET
types.
 If a type T derives from IBaseObject<T>, that type can be extended with more members by
other plugins. The actual usages of that type T in parameters or return values will be marked
with IExtendedObject<T>.
 The interface IEnumerable<T> describes any sequence (lists, arrays, generators) which yield
only objects of type T (or subclasses). When the sequence yields an incompatible object, an
exception will be thrown at runtime.
 The interface IList<T> describes a list which contains only objects of type T (or subclasses).
When trying to add an incompatible object, an exception will be thrown.
 The syntax params T [] name is equal to the Python syntax *name for variable argument
lists, but restricts the parameters to type T (or subclasses).

1016 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

 Enumerations (ENUM) do not exist as a language construct in Python. They are used to define
a fixed amount of constant values, for example, the days of a week. Enumeration values defined
in .NET can be accessed in IronPython via [Link] syntax (similar to static class
members), for example, [Link]. There are several patterns of emulating
enums in Python, for example, [Link] or
[Link]
 Properties marked with { get; set; } are read-write, properties only marked with
{ get; } are read-only. They are similar to the @property decorator in Python.
For scripts the following entry points are available:
 system: Basic functionality for integration in the EcoStruxure Machine Expert system. This
object provides all functions described under ISystem Interface, such as the exit of EcoStruxure
Machine Expert, the access to the message window or the query if the --noUI mode is running
by use of the ui_present command.
 projects: Basic functionality for project management. This object provides all functions
described under IScriptProjects Interface, such as loading of projects and project archives.
Furthermore, it is the entry point to the individual projects.
 online: Basic functionality for online connection to device. By use of the create_on-
line_application method, the online object of an application object can be created. This
online object allows login to controllers, starting applications and retrieving variable values.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1017
Python Script Language

EcoStruxure Machine Expert Python API

Detailed Information About Entry Points

Driver Name (Type) Description


System system (ISystem) basic functionality for integration in the EcoStruxure
Machine Expert system
Severity ENUM for news priority
Guid data type for Globally unique identifier
PromptResult ENUM for return values for user request
MultipleChoiceSelector delegate type for the selection of multiple choice
PromptChoiceFilter prompts

Projects projects (IScriptProjects) basic functionality for project management


ExportReporter interface for event handling during export
ImportReporter interface for event handling during import
ConflictResolve ENUM for conflict resolve during import
Online online (IScriptOnline) basic functionality for online connection to device
OnlineChangeOption ENUM for download types during login to device
ApplicationState ENUM for application state
OperatingState ENUM for operation state
ValuesFailedException exception due to errors detected with online
expressions
TimeoutException exception on timeout during online operations
DeviceObject DeviceID type encapsulation for device identification

For further information, refer to the chapter Schneider Electric Script Engine Examples in this
document (see page 1026) and to the [Link] files provided with EcoStruxure Machine
Expert.

1018 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

EcoStruxure Machine Expert Scripting - Python API

Overview
EcoStruxure Machine Expert provides a Python API that you can use in EcoStruxure Machine
Expert scripts.
The Python API consists of two categories:
 Standard Python API and Python modules / packages
 EcoStruxure Machine Expert Python API

The standard Python API (for dealing with strings, arrays, files, and so on) is part of the
EcoStruxure Machine Expert installation. For detailed help, consult the Internet (for example,
[Link] You can extend your EcoStruxure Machine Expert installation by
Python modules and packages available on the Internet.
To automate EcoStruxure Machine Expert, a EcoStruxure Machine Expert Python API is also
included in the EcoStruxure Machine Expert installation. It is used, for example, to open or close a
project, to change the project content or to compile a project and download it to a controller.
The EcoStruxure Machine Expert Python API concept is described in this chapter. Also refer to the
script engine examples (see page 1026). To explore the EcoStruxure Machine Expert Python API,
refer to the chapter Explore EcoStruxure Machine Expert API (see page 993).
For details of method / function descriptions or their parameter descriptions, refer to the section
Scripting Engine in the Software part of the EcoStruxure Machine Expert online help.

EcoStruxure Machine Expert Python API Concept Based on Object-Oriented Programming


To find the API methods suitable to your Python scripts, you must become familiar with the
EcoStruxure Machine Expert Python API concept and how the API is integrated into the script
engine (script execution). The main concept behind the EcoStruxure Machine Expert Python API
is an object-oriented API approach. Object-oriented programming (OOP) is a programming
paradigm based on two concepts: objects and code. Objects are data structures that contain data,
in the form of fields, also called attributes. Code is available in the form of procedures, also called
methods. The procedures of an object can access and modify the data fields of the object with
which they are associated. Computer programs that are designed according to OOP consist of
objects that interact with one another.
The challenge while writing scripts is to map the detailed EcoStruxure Machine Expert Python API
documentation on the right objects to call the procedures.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1019
Python Script Language

Predefined Variables and Types


When you run a script or use the REPL (in [Link] or Scripting Immediate view,) you
have a main script scope with predefined variables (and types). You can use them in your script
as an entry to the EcoStruxure Machine Expert Python API. To list the available predefined
variables in the main script scope, start the [Link] and execute dir().
List of predefined variables by running dir():
>>> dir()
['AccessRight', 'ApplicationState', 'ArchiveCategories', 'ChannelType',
'Compile
rMessage', 'ConflictResolve', 'ConnectorRole', 'CredentialSourceKind',
'DeviceID
', 'DeviceUserManagementFlags', 'DiagType', 'ExportReporter', 'Guid', '
Implement
ationLanguage', 'ImportReporter', 'MultipleChoiceSelector', 'NativeExpo
rtReporte
r', 'NativeImportFilter', 'NativeImportHandler', 'NativeImportResolve',
'NativeI
mportResult', 'ObjectPermissionKind', 'OnlineChangeOption', 'OperatingS
tate', 'P
ermissionState', 'ProjectType', 'PromptChoice', 'PromptChoiceFilter', '
PromptHan
dling', 'PromptResult', 'ResetOption', 'SV_DEV', 'SV_POU', 'Severity',
'TimeoutE
xception', 'ValuesFailedException', 'Version', '__SoMachine__', '__buil
tins__',
'__doc__', '__file__', '__name__', 'communication_settings', 'compiler_
settings'
, 'etest_test_provider', 'feature_settings_manager', 'librarymanager',
'libraryp
ackage_service', 'new_project', 'online', 'projects', 'system', 'visual
ization_s
ettings']
The predefined entries from this list written in lower case letters are variables which reference to
an object that provides methods or fields. This is a kind of global API that works with or without a
loaded EcoStruxure Machine Expert project.

1020 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

For example, system, or projects or online.


 system: Functionality for integrating in EcoStruxure Machine Expert. This object provides the
functions that are documented in ISystemInterface, such as accessing the Messages view
from EcoStruxure Machine Expert, or using ui_present to verify whether the program is
running in --noUI mode.
 projects: Functionality for project management. This object provides the functions that are
documented in IScriptProjects Interface, such as loading projects and project
archives. Furthermore, this is the entry point to individual projects.
 online: Functionality for online access to the controller. You can use the create_on-
line_application method to retrieve the appropriate online object (documented in
IScriptOnlineApplication) for an application object. This object allows you to log in to a
controller, start the application, and read variable values.
For more information, refer to the Script Engine Plugin API Reference part of the EcoStruxure
Machine Expert online help.
The predefined entries from this list starting with an upper case letter are enumerations or
types/classes which can be used or instantiated in your Python script. For example, DeviceID
(class) or Guid (class) or PromptChoice (enumeration).

Searching and Navigating Within the EcoStruxure Machine Expert Tree Structure
A EcoStruxure Machine Expert project consists of devices, POUs, DUTs, GVLs, and so on, which
are organized in a tree of objects (see, for example, the Devices tree in the Logic Builder). This
tree of objects (the project tree) is attached to [Link]. In [Link], the
API allows you to search objects by using the find(…) method. You can navigate within the
project tree, for example, by using the get_children() method to get the immediate child
objects (for example, the controller devices). On each child object, you can call get_children()
again to get their immediate child objects, and so on.
NOTE: The methods available on the project tree objects can vary from object to object depending
on its type (POU, DUT, GVL, device). It is a best practice to use [Link](…) to see the
list of available API methods on an object.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1021
Python Script Language

Examples
Example of using a global API function to open a project:
[Link]("[Link]")
Example to find and rename a project tree object (after a project was loaded):
myObject = [Link]("SERCOSIII")[0]
[Link]("New_SERCOSIII_Name")
The figure shows the project tree object in the user interface and the traversed project tree printed
by a script:

1022 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Example script to traverse the project tree (as printed above):


def print_tree_of_obj(treeobj, depth=0, verbose=False):
name = treeobj.get_name(False)
if treeobj.is_device:
deviceid = treeobj.get_device_identification()
details = ""
if verbose == True:
details = " [Device {0}/{1}/{2}]".format([Link], dev
[Link], [Link])
print("{0} * {1}{2}".format(" "*depth, name, details))
else:
print("{0} * {1}".format(" "*depth, name))

for child in treeobj.get_children(False):


print_tree_of_obj(child, depth+1, verbose)
def print_tree_of_project(pro, verbose=False):
if pro == None:
print("No project open.")
else:
for obj in pro.get_children():
print_tree_of_obj(obj, 0, verbose)
def print_tree(verbose=False):
if [Link] != None:
print_tree_of_project([Link], verbose)
else:
print("No project open.")
print_tree(True)

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1023
Python Script Language

Calling Scripts Via Toolbar Icons

Overview
You can configure icons that will be displayed in a toolbar to access up to 32 different script files
with one click.
To achieve this, you can create a maximum of two [Link] files each containing a maximum of
16 symbol entries.
Save the [Link] files at the following locations:
 C:\ProgramData\SoMachine Software\Script Commands
 <SoMM_Installation_Directory>\LogicBuilder\Script Commands, for example, C:\Program Files
(x86)\Schneider Electric\SoMachine Software\V4.40 Motion\LogicBuilder\Script Commands
When you start EcoStruxure Machine Expert, the script calls and the related icons are added to
the dialog box Tools → Customize in the tab Command Icons, category ScriptEngine Commands.
You can add them to a new or to an existing toolbar in the Toolbars tab of the Tools → Customize
dialog box.

Elements of the [Link] Configuration File


Each [Link] configuration file contains the following required and optional elements:

Element Required Description


"Name" Yes This text is displayed as a tooltip for the icon in the toolbar.
"Desc" No This element is not used in EcoStruxure Machine Expert.
"Icon" Yes This element contains the name of the image file (in .ico
format) if the image file is located in the same folder (Script
Commands) as the [Link] file.
If the image file is not located in the (Script Commands)
folder, you can add the path information here.
"Path" Yes This element contains the name of the Python script file in .py
format if the script file is located in the same folder (Script
Commands) as the [Link] file.
If the script file is not located in the (Script Commands) folder,
you can add the path information here.

1024 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Example of a [Link] File


A [Link] file can have the following content:
[
{
"Name": "Start Process1",
"Desc": "Processing1",
"Icon": "[Link]",
"Path": "[Link]",
},
{
"Name": "Start Process2",
"Desc": "Processing2",
"Icon": "[Link]",
"Path": "[Link]"
}
]
The folder Script Commands thus contains the following files:
 [Link]
 [Link]
 [Link]
 [Link]
 [Link]

The ScriptEngine Commands list of the Tools → Customize dialog box contains the following
entries that you can add to a toolbar:
 Start Process1
 Start Process2

Click an icon in the toolbar to execute the respective script file.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1025
Python Script Language

Section B.2
Schneider Electric Script Engine Examples

Schneider Electric Script Engine Examples

What Is in This Section?


This section contains the following topics:
Topic Page
New Projects 1027
Device Parameters 1029
Compiler Version 1031
Visualization Profile 1032
Update Project 1034
Update Libraries 1035
Clean and Build Application 1036
Communication Settings 1037
Start ETEST 1038
Reset Diagnostic Messages 1040
Reboot the Controller 1041
Convert Device 1042
Comparing Projects 1046
Advanced Library Management Functions 1047
Accessing POUs 1048

1026 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

New Projects

Overview
This chapter shows how to create a new project with the Schneider Electric Script Engine.
Even though there are 4 different project types available, the code for creating them is identical. In
these 4 cases, the create_project method of the global object new_project is called.
This instantiates 2 data containers that consist of the following elements:
 common project settings
 controller settings

Common Project Settings


The common project settings consist of the following elements:
 machine name
 author
 customer
 description
 picture (the path to an image)
 project name (the name of the project including the file extension .project)
 project type

The project type property allows you to select one of the 4 project types:

Property Value Description


StandardProject standard project
EDESIGN_Project EDESIGN project
Library library
EmptyProject empty project

Controller Settings
The controller settings consist of the following elements

Element Description
type type of the controller, can be retrieved from the
device identification of the controller
id ID of the controller, can be retrieved from the device
identification of the controller
version firmware version
device_name name of the device that you can assign
implementation_language 6 implementation languages are available

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1027
Python Script Language

Creating a Standard Project


To create a standard project, the create_project method is called. It consists of the data
containers CommonProjectSettings and ControllerSettings.
# Clean up any open project
if [Link]:
[Link]()

# Create a new instance of the common project settings object


common_settings_DTO = new_project.create_common_project_settings()
common_settings_DTO.machine_name = "Machine Name"
common_settings_DTO.author = "Author"
common_settings_DTO.customer = "Customer"
common_settings_DTO.description = "Description"
common_settings_DTO.picture = None
common_settings_DTO.project_name = "[Link]"
common_settings_DTO.project_path = r"D:\PythonProjects"
common_settings_DTO.project_type = [Link]

# Create a new instance of the controller settings object


controller_settings_DTO = new_project.create_controller_settings()
controller_settings_DTO.type = 4096
controller_settings_DTO.id = "1003 0082"
controller_settings_DTO.version = "[Link]"
controller_settings_DTO.device_name = "LMC_PacDrive"
controller_settings_DTO.implementation_language = ImplementationLanguag
e.structured_text

# Create new standard project


new_project.create_project(common_settings_DTO, controller_settings_DTO
)

# Save the project


[Link]()

1028 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Device Parameters

Overview
To change a parameter, the parameter ID and the ParameterSet are required.
In order to find the required device and list the respective parameters, use the find method that
finds objects by a given name or path in the project.

Script Engine Example


from __future__ import print_function

# Example-Device Lexium62
moduleName = 'DRV_Lexium62'

# find module/device in Project (you also can do this generic e.g. with
get_children()...)
module = [Link](moduleName, True)[0]

# get all possible connectors for this device


connectors = [Link]
print("Number of Connectors: ", [Link])
print(" - ")

cnt = 1
for c in connectors:
print("Connector " +str(cnt) +" for "+moduleName +": ")
params = c.host_parameters
count = [Link]
print("Number of available Parameters for this connector: ", co
unt)

if count > 0:
for p in params:
print(p.visible_name + " - ID: %s " % [Link] + " -
Value: %s" % [Link])

# example to get the value of a parameter by id:

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1029
Python Script Language

print(" - ")
print(" - Example for a single Parameter (ObjectType) - ")
objectType = params.by_id(268435457)
print("ObjectType: ", [Link])

cnt = cnt+1

print("--------------------------------------------------------
----------")

1030 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Compiler Version

Overview
With the compiler version extension, you can display the mapped compiler versions and you can
set a new compiler version by executing the script.

Script Engine Example


# Enable the new python 3 print syntax
from __future__ import print_function

# The path to the project


project_path = r"D:\PythonProjects\[Link]"

# Clean up any open Project:


if [Link]:
[Link]()

# Load the project


proj = [Link](project_path);

print("All compiler versions")


# Get all compiler versions (filtered)
compiler_versions = compiler_settings.get_all_compiler_versions()

# Print all compiler versions (filtered)


for version in compiler_versions:
print (" - OEM mapped version: " + version)

# Get active compiler version


compiler_version = compiler_settings.active_compiler_version
print("Current compiler version:" + compiler_version)

# Set new compiler version


compiler_settings.active_compiler_version = "[Link]"
print("New compiler version: " +
compiler_settings.active_compiler_version)

# Save project
[Link]()

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1031
Python Script Language

Visualization Profile

Overview
With the visualization profile extension, you can display the visualization profiles and you can set
the active visualization profile of the project.

Script Engine Example


# Enable the new python 3 print syntax
from __future__ import print_function

#The path to the project


project_path = r"D:\PythonProjects\[Link]"

# Clean up any open Project:


if [Link]:
[Link]()

# Load the project


proj = [Link](project_path);

# Set the project as primary project


proj = [Link]

# Print the active profile


print("Current visual profile: " +
visualization_settings.active_profile_name)

# Get all available visualization profiles


profile_names = visualization_settings.get_all_visual_profile_names()

# Print the profiles


for visual_profile in profile_names:
print (" - " + visual_profile)

# Set the profile to "SoMachine Motion V4.2"


visualization_settings.active_profile_name = "SoMachine Motion V4.2"

1032 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

# Get the active profile


profile_name = visualization_settings.active_profile_name

# Print the active profile


print("New visual profile: " + profile_name)

# Save project
[Link]()

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1033
Python Script Language

Update Project

Overview
With the update project extension, you can update your project. This is the same function as
provided by the Project Update dialog box that is displayed when you open the project in the
graphical user interface of EcoStruxure Machine Expert and click OK.

Script Engine Example


# Enable the new python 3 print syntax
from __future__ import print_function

# The path to the project


project_path = r"D:\PythonProjects\[Link]"

# Clean up any open project:


if [Link]:
[Link]()

# Load the project


proj = [Link](project_path)
# Set the project as primary project
proj = [Link]

# Update the project (devices, libraries, compiler version, visualizati


on style)
proj.update_project()

1034 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Update Libraries

Overview
With the update libraries extension, you can update the libraries of the project automatically. This
is the same function as provided by the Libraries → Automatic version mapping (all libraries)
command in the graphical user interface of EcoStruxure Machine Expert.

Script Engine Example


# Enable the new python 3 print syntax
from __future__ import print_function

# The path to the project


project_path = r"D:\PythonProjects\[Link]"

# Clean up any open project:


if [Link]:
[Link]()

# Load the project


proj = [Link](project_path);

# Search for die library manager objects in the project


lib_managers = [i for i in proj.get_children(True) if i.is_libman]

# Make the auto mapping for each library manager found


for lib_manager in lib_managers:
lib_manager.make_auto_mapping()

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1035
Python Script Language

Clean and Build Application

Overview
With the clean and build application extension, you can clean a project or build a new project.

Script Engine Example


# Enable the new python 3 print syntax
from __future__ import print_function

# The path to the project


project_path = r"D:\PythonProjects\[Link]"

# Clean up any open project:


if [Link]:
[Link]()

# Load the project


proj = [Link](project_path);

# Fetch the active application.


app = proj.active_application

# Clean application
new_project.clean_application(app)

# Compile application and store compiler messages in a list


messages = new_project.compile_application(app)

# If messages == None the build was successful


if len(messages) == 0:
print("--- Build successful ---")

# Otherwise print results


else:
for i in messages:
print([Link], [Link])

1036 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Communication Settings

Overview
This example shows how to load or set the IP address of a controller of your choice by executing
the script.

Script Engine Example


from __future__ import print_function

def main():
if not [Link]:
[Link]("No active project.")
return
project = [Link]

#find the controller by the object name where address should be set
and read.
controller = [Link]('LMC_PacDrive', True)[0]

#reboot the controller


controller.set_communication_address('[Link]')

#read address back and show it.


print('get_communication_address := ' + controller.get_communicatio
n_address())

main()

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1037
Python Script Language

Start ETEST

Overview
In software programming, the module ETEST is used to verify the correct functionality of individual
methods or algorithms of a program. ETEST is a white-box testing method, meaning that the
source code to be verified is known when designing test cases and determining the expected
results.
The procedure typically consists of 3 steps:
 initializing the initial state
 executing the operation that is to be tested
 comparing the actual results with the expected results

The ETEST script driver performs the following tasks:


 displaying test elements
 searching particular tests
 executing particular tests

Refer to the following example.

Script Engine Example


# Enable the new python 3 print syntax
from __future__ import print_function

# The path to the project


project_path = r"D:\PythonProjects\[Link]"

# Clean up any open project:


if [Link]:
[Link]()

# Load the project


proj = [Link](project_path)

# Fetch the active application.


app = proj.active_application

# Create the online application for it.


onlineapp = online.create_online_application(app)

# Log in to the device.


[Link]([Link], True)

# Start the application, if necessary.


if not onlineapp.application_state == [Link]:

1038 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

[Link]()

# Let the app do its work for some time...


[Link](1000)

# This function runs the specified test/test series


def func_run_test(test_name):
print(test_name)
etest_test_provider.run_test(test_name)
while etest_test_provider.is_test_running:
[Link](1000)
return

# Get all test series from the project


test_series = etest_test_provider.get_all_testseries()

# Run all test series


for test_object in test_series:
func_run_test(test_object)

# Get all test elements from test series "TS_MySeries"


test_elements = etest_test_provider.get_all_testelements("TS_MySeries")

if test_elements == None:
print ("No test series 'TS_MySeries' found")
else:
# Print all testelements
for test_element in test_elements:
print ("Found test element in Series TS_MySeries: " + test_elem
[Link])

# Run only "TS_Crank" test object


func_run_test(test_element.Name)

[Link]()

[Link]()

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1039
Python Script Language

Reset Diagnostic Messages

Overview
Once logged in to the application, you can reset the diagnostic messages of the controller. This is
an extension method of the controller object.
The following example shows how to reset diagnostic messages. You have to get the primary
project and log in to the application, as shown in the other examples (building an application
(see page 1036)).

Script Engine Example


# get the project instance and log in to the application

# find the controller which messages shall be reset


controller = [Link]("LMC", True)[0]

# "reset diagnosis messages on controller"


controller.reset_diagnosis_messages()

1040 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Reboot the Controller

Overview
Once there is an instance of the controller object in the script, you can reboot the controller by using
a method on that object.

Script Engine Example


from __future__ import print_function

def perform_application_login(project):
app = project.active_application
onlineapp = online.create_online_application(app)
[Link]([Link], True)

def main():
if not [Link]:
[Link]("No active project.")
return

perform_application_login([Link])

#find the controller named 'LMC_PacDrive' which shall be rebooted


controller = [Link]('LMC_PacDrive', True)[0]

#reboot the controller


controller.reboot_plc()

[Link]("Download or OnlineChange complete")

main()

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1041
Python Script Language

Convert Device

Overview
Converting devices within the project can become a complex procedure. This API simplifies the
conversion process and helps to avoid errors.

Using the DeviceID Object


The conversion API uses the DeviceID object which identifies a device or a device module by a
specific version. The DeviceID is created as follows:
<device type> <device model> <device version> <module name>

Element Example Description


device type 4096 identifies a controller
device model 1003 0082 or 1003 009D for LMCx00C or LMCx01C,
respectively
device version [Link] firmware version of the controller
module name LXM52 target device module

The conversion API accepts the DeviceID as object instance or as single parameter. This allows
using a DeviceID containing all elements mentioned in the above table or passing each element
as a single parameter.
The following example shows how to create a DeviceID for an LMCx00C controller with firmware
version [Link]:
Lmcx00c = DeviceID(4096, "1003 0082", "[Link]")

1042 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Testing Whether a Device Can be Converted


The following script allows you to verify whether a conversion to a given version is possible before
converting a device.
from __future__ import print_function

def main():
# Set the project as primary project
proj = [Link]
controller = [Link]('LMC_PacDrive', True)[0]
drives = [Link]('DRV_Lexium62', True)

if len(drives) == 0:
print("Expected drive object not found")
return

drive = drives[0]

# test if controller can be converted using DeviceID


x01c = DeviceID(4096, "1003 009D", "[Link]")
if controller.can_convert(x01c):
print("Conversion to LMCx01C possible")

# test if drive can be converted using Parameters and module id


if drive.can_convert(4096, "1003 0082", "[Link]", "LXM52"):
print("Conversion to LXM52 possible")

if not [Link]:
print("No project open.")
else:
main()

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1043
Python Script Language

Getting Alternative Conversion Targets


The API provides a call that retrieves the possible conversion targets for a certain device. It returns
the DeviceID for each target.
from __future__ import print_function

#help function to print the delivered device ids


def deviceid_to_string(devId):
mystr = "ID: {[Link]} Type: {[Link]} Version: {[Link]}".format(dev
Id)

if hasattr(devId, 'module_id') and devId.module_id is not None:


mystr += " ModuleID: {0.module_id}".format(devId)
return mystr

def main():

# Set the project as primary project


proj = [Link]

controller = [Link]('LMC_PacDrive', True)[0]


alternativeControllers = controller.get_alternative_devices()

print("ALTERNATIVE DEVICES FOR LMC")


for id in alternativeControllers:
print(deviceid_to_string(id))

drive = [Link]('DRV_Lexium62', True)[0]


alternativeDrives = drive.get_alternative_devices()

print("ALTERNATIVE DEVICES FOR DRIVE")


for id in alternativeDrives:
print(deviceid_to_string(id))

print("Test complete. Please check the script output window")

if not [Link]:
print("No project open.")
else:
main()

1044 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Converting the Device


The process of converting the device is straightforward because the only required action is calling
the conversion method.
from __future__ import print_function

def main():
proj = [Link]
controller = [Link]('LMC_PacDrive', True)[0]
drive = [Link]('DRV_Lexium62', True)[0]

# converting the controller


[Link](4096, "1003 009D", "[Link]")
# converting the drive
[Link](DeviceID(4096, "1003 0082", "[Link]"), "LXM52")

if not [Link]:
print("No project open.")
else:
main()

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1045
Python Script Language

Comparing Projects

Overview
There are several use cases where it is useful to have a script automatically comparing the
contents of 2 projects. The Python project comparison function allows you to compare 2 projects.
As a result it provides the information if the projects are different, as well as a detailed XML tree
that reflects the project tree and shows the differences for each object.

Script Engine Example


from __future__ import print_function

def main():
proj = [Link]

# compare the Primary Project to another Project on disk


diff = proj.compare_to(r"d:\PythonProjects\CompTest_Right.project")
write_diff(diff, "[Link]")

# compare, but ignore whitespaces, comments and properties


diff = proj.compare_to(r"d:\PythonProjects\CompTest_Right.project",
True, True, True)
write_diff(diff, "[Link]")

def write_diff(differences, filename):


if differences.difference_found:
f = open(filename, 'wb')
[Link](differences.result_tree)

if not [Link]:
print("No project open.")
else:
main()

1046 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Advanced Library Management Functions

Overview
EcoStruxure Machine Expert Logic Builder offers advanced functions for managing libraries, the
so-called forward compatible libraries (see EcoStruxure Machine Expert, Functions and Libraries
User Guide). They provide a convenient way to manage references and dependencies among
libraries.
This functionality is also available via scripts and can be used on the Library Manager of the entire
project or on a single application within the project. The following script shows how to check the
libraries for forward compatibility and valid references. It automatically maps the references and
explicitly sets library versions.

Script Engine Example


proj = [Link]
app = proj.active_application

libmgr = app.get_library_manager()
print("# Checking all libraries:")
for lib in libmgr.get_libraries():
print("-
" + lib + " Is Forward Compatible Library? " + str(libmgr.is_library_f
orward_compatible(lib)))

if not libmgr.is_current_mapping_valid():
for lib in libmgr.get_invalid_library_mappings():
print("Library reference cannot be satisfied for: " + lib)
print("Trying to auto-map libraries to valid versions")
libmgr.make_auto_mapping()
else:
print("All mappings valid")

# set version using individual parameters


libmgr.set_new_library_version("PD_GlobalDiagnostics", "Schneider Elect
ric", "[Link]")

# set version using the library full name


libmgr.set_new_library_version("PD_AxisModule, [Link] (Schneider Elect
ric)", "[Link]")

# set version to Legacy


libmgr.set_new_library_version("PD_Template", "Schneider Electric", Non
e)

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1047
Python Script Language

Accessing POUs

Overview
The following examples show how to print and manipulate the code of a POU. They are only
available for textual programming languages.

Script Engine Example


if not [Link]:
print('No primary project set')

proj = [Link]
pou = [Link]('SR_Main', True)[0]

# read and print the declaration of the program


decl = pou.textual_declaration
print([Link])

# read and print the implementation of the program


code = pou.textual_implementation
print([Link])

decl_text = "PROGRAM SR_Main\n" + \


"VAR\n" + \
" iTest: INT;\n" + \
"END_VAR";

code_text = "iTest := iTest + 1;"

# write new code to the declaration and implementation


[Link](decl_text)
[Link](code_text)

1048 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Script Engine Example for Obsolete set_interface_text() API


if not [Link]:
print("No primary project set")

proj = [Link]
pou = [Link]('SR_Main', True)[0]

# read and print the declaration of the program


decl = pou.get_interface_text()
print(decl)

# read and print the implementation of the program


code = pou.get_implementation_text()
print(code)

decl = "PROGRAM SR_Main\n" + \


"VAR\n" + \
" iTest: INT;\n" + \
"END_VAR";
code = "iTest := iTest + 1;"

# write new code to the declaration and implementation


pou.set_interface_text(decl)
pou.set_implementation_text(code)

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1049
Python Script Language

Section B.3
CoDeSys Script Engine Examples

CoDeSys Script Engine Examples

Overview
This chapter provides examples of frequently used members of the CoDeSysScript Engine. For a
complete description of the members of each namespace, refer to the CoDeSys API description.

What Is in This Section?


This section contains the following topics:
Topic Page
Project 1051
Online Application 1060
Objects 1063
Devices 1064
System / User Interface (UI) 1069
Reading Values 1073
Reading Values From Recipe and Send an Email 1075
Determine Device Tree of the Open Project 1077
Script Example 4: Import a Device in PLCOpenXML From Subversion 1078
Script Example 5: Creating and Editing POUs 1080
Script Example 6: User Interface / Interaction with the User 1081
Script Example 7: Manipulation of the Project information Object 1083
Advanced Example: Checkout a Library from SVN and Installation in EcoStruxure Machine 1084
Expert

1050 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Project

Overview
Since the examples for this namespace are relatively short and self-explanatory, their meaning is
not explained in detail. Complete examples are provided, where appropriate.

New Project
This method creates a new project.
It consists of 2 parameters:
 a string specifying the location where the project will be stored
 a boolean parameter: If TRUE, the project will be the new primary project. This parameter is
optional, the default value is TRUE.
The method returns the IProject instance (refer to the specification in the document Automation
Platform SDK) which can be used for further steps.
import os

try:
# Clean up any open project
if [Link]:
[Link]()

# Define the new file name for the project


project_name = "[Link]"

# Define the new path where the new project should be stored
project_path = r"C:\Python"

# Create the new project


proj = [Link]([Link](project_path, project_name), Tr
ue)

# Save the project to the specified path


[Link]()
except Exception as exception:
print("Error: " + str(exception))
if not [Link]:
print("Please turn on the 'Script Tracing' function to get detai
led information about the script execution.")

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1051
Python Script Language

Load Project
This method loads a project. Any open projects will not be closed.
The first parameter specifies the path of the project that will be loaded.
import os

try:
# Clean up any open project
if [Link]:
[Link]()

# Define the file name for the project


project_name = "[Link]"

# Define the path where the project is stored


project_path = r"C:\Python"

# Load the existing project


proj = [Link]([Link](project_path, project_name))
except Exception as exception:
print("Error: " + str(exception))
if not [Link]:
print("Please turn on the 'Script Tracing' function to get detai
led information about the script execution.")

Save Project
This method saves the project at its physical location.
# Save project
[Link]()

1052 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Save Archive
This method saves the project as an archive. The additional categories which are selected by
default are included, but no extra files.
The first parameter specifies the path where the archive will be saved.
import os

# Define the new file name for the archive


archive_name = "[Link]"

# Define the new path where the archive should be stored


archive_path = r"C:\Python"

# Save archive with the default values


[Link].save_archive([Link](archive_path, archive_name))

Close Project
This method closes the project. If there are unsaved changes in this project, these changes will be
discarded.
# Clean up any open project:
if [Link]:
[Link]()

Find Objects
This method finds objects matching the given name.
It consists of 2 parameters:
 The first parameter is the name of the object that is searched.
 The second parameter specifies whether a recursive search is performed. This parameter is
optional, the default value is FALSE. This method returns a collection of objects.
# Search for
result_list = [Link]('MyController', True)

for result in result_list:


print("Object " + result.get_name() + " found with Guid " + str(res
[Link]))
Names are not unique in the tree. This has the effect that several objects can be found. The search
is against the nonlocalized name.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1053
Python Script Language

Native Import
This method imports the specified files in the native XML format in the top level of this project.
import os

# Specify the project file name


project_name = "[Link]"

# Define the path where the project should be/is stored


project_path = r"C:\Python"

# Define the path where the exported objects are be stored


object_path = [Link](project_path, "Objects")

# Create the import reporter


class Handler(NativeImportHandler):
def conflict(self, name, obj, guid):
print("Object already exists: " + name)
return [Link]

def progress(self, name, obj, exception):


print("in progess: " + name)

def skipped(self, list):


return

def import_filter(name, guid, type, path):


# Workaround, skip the project settings object because we cant impo
rt it
if(type == "_3S.[Link]"):
return False
return True

try:
# Clean up any open project
if [Link]:
[Link]()

# Create the new project


project_reference = [Link]([Link](project_path, proj
ect_name), True)

files = [Link](object_path)

# Create the importer instance.


handler = Handler()

1054 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

for file in files:


file_path = [Link](object_path, file)
project_reference.import_native(file_path, import_filter, handl
er)

project_reference.save()

except Exception as exception:


print("Error: " + str(exception))
if not [Link]:
print("Please turn on the 'Script Tracing' function to get detai
led information about the script execution.")

PLCOpenXML Import
This method imports the contents of the specified PLCopenXML file into the top level of the project.
import os

# Specify the project file name


project_name = "[Link]"

# Define the path where the project should be/is storedproject_path = r


"C:\Python"

# Define the file where the exported object is stored


file_name = [Link](project_path, r"Objects\[Link]")

# Create the import reporter


class Reporter(ImportReporter):
def error(self, message):
system.write_message([Link], message)
def warning(self, message):
system.write_message([Link], message)
def resolve_conflict(self, obj):
return [Link]
def added(self, obj):
print("added: ", obj)
def replaced(self, obj):
print("replaced: ", obj)
def skipped(self, obj):
print("skipped: ", obj)
@property
def aborting(self):
return False

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1055
Python Script Language

try:
# Clean up any open project
if [Link]:
[Link]()

# Create the reporter instance


reporter = Reporter()

# Create the new project


project_reference = [Link]([Link](project_path, proj
ect_name), True)

# Import the data into the project


project_reference.import_xml(reporter, file_name)

# Save the project to the specified path


project_reference.save()
except Exception as exception:
print("Error: " + str(exception))
if not [Link]:
print("Please turn on the 'Script Tracing' function to get detai
led information about the script execution.")

Native Export
This method exports the given objects in native format into a string, or a file at the given path. The
non-exportable objects are detected as an error, but the export continues.
import sys,io,os

# Specify the project file name


project_name = "[Link]"

# Define the path where the project should be/is stored


project_path = r"C:\Python"

# Define the path where the exported objects should be stored


object_path = [Link](project_path, "Objects")

def collect_objects(project_reference):
# List that stores all POU nodes
project_objects = []

# Collect all the leaf nodes.


for node in project_reference.get_children(True):

1056 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

project_objects.append(node)

for i in project_objects:
print("Found: ", [Link], [Link], i.get_name())
return project_objects

def export_objects(collected_objects, project_reference):


if not [Link](object_path):
[Link](object_path)

# Export the files.


for candidate in collected_objects:
# Create a list of objects to export:
# The object itself
objects = [candidate]

# And sub-objects (POUs can have actions, properties, ...)


[Link](candidate.get_children(True))

# And the parent folders.


parent = [Link]
while ((not parent.is_root) and parent.is_folder):
[Link](parent)
parent = [Link]

# Create a unique file name


filename = [Link](object_path, "%s__%[Link]" % (candida
te.get_name(), [Link]))

# Print some user information


print("Exporting " + str(len(objects)) + " objects to: " + file
name)

# And actually export the project


project_reference.export_native(objects, filename)

try:
# Clean up any open project
if [Link]:
[Link]()

# Open a project first


project_reference = [Link]([Link](project_path, projec
t_name))

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1057
Python Script Language

# Collect the objects


collected_objects = collect_objects(project_reference)

export_objects(collected_objects, project_reference)
except Exception as exception:
print("Error: " + str(exception))
if not [Link]:
print("Please turn on the 'Script Tracing' function to get detai
led information about the script execution.")

PLCOpenXML Export
This method exports the given objects in PLCopenXML format into a string, or a file at the given
path. The non-exportable objects are detected as an error, but the export continues.
import os

# Specify the object which should be exported


object_name = "MyController"

# Define the path where the exported objects should be stored


object_path = r"C:\Python\Objects"

# Define the printing function


def print_tree(treeobj, depth=0):
name = treeobj.get_name(False)
if treeobj.is_device:
deviceid = treeobj.get_device_identification()
print("{0} - {1} {2}".format(" "*depth, name, deviceid))

for child in treeobj.get_children(False):


print_tree(child, depth+1)

# Create the export reporter


class Reporter(ExportReporter):
def error(self, message):
system.write_message([Link], message)
def warning(self, message):
system.write_message([Link], message)
def nonexportable(self, message):
print(message)
@property
def aborting(self):
return False

try:

1058 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

# Get the project reference of the currently opened project


project_reference = [Link]

# Get a reporter instance


reporter = Reporter()

# Print all devices in the project


for obj in project_reference.get_children():
print_tree(obj)

# Finds the object in the project, and return the first result
device = project_reference.find(object_name, True)

if device != None:
filename = [Link](object_path, device[0].get_name() + ".x
ml")

# Exports the object to the hard drive


project_reference.export_xml(reporter, device, filename, True,
True)

except Exception as exception:


print("Error: " + str(exception))
if not [Link]:
print("Please turn on the 'Script Tracing' function to get detai
led information about the script execution.")

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1059
Python Script Language

Online Application

Overview
NOTE: Some of the online application commands can temporarily change the active application.
This interface is exported to Python, and thus complies to Python naming standards.

Create Online Application


This method creates an online application.
# Create online application
online_application = online.create_online_application()

Prepared Values
This example shows how to write prepared values.
try:
# Trying to create online application
online_application = online.create_online_application()

print("app:" + str(online_application.application_state) + "op:" +


online_application.operation_state.ToString("f"))

for expression in online_application.get_prepared_expressions():


online_application.set_prepared_value(expression, '')
print "%s: '%s' '%s'" % (expression, online_application.read_va
lue(expression), online_application.get_prepared_value(expression))

for expression in online_application.get_forced_expressions():


online_application.set_unforce_value(expression)
print "%s: '%s' '%s'" % (expression, online_application.read_va
lue(expression), online_application.get_prepared_value(expression))

assert len(online_application.get_prepared_expressions()) == 0, "St


ill some prepared values remain."
assert len(online_application.get_forced_expressions()) == 0, "Stil
l some prepared values remain."

# Preparing a value and forcing it


online_application.set_prepared_value("[Link]", "123")
online_application.force_prepared_values()

1060 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

# Preparing a value and writing it online_application.set_prepar


ed_value("[Link]", "INT#1147")
online_application.write_prepared_values()

except Exception as exception:


print("Error: " + str(exception))
if not [Link]:
print("Please turn on the 'Script Tracing' function to get detai
led information about the script execution.")

Perform Application Login


This method performs the application login. If the application was logged in before, it will be logged
out and a fresh login will be performed.
It consists of 2 parameters:
 The first parameter is the change option.
 The second parameter will delete previous applications, if set to True.

# Get the project reference


project_reference = [Link]

# Fetch the active application


active_application = project_reference.active_application

# Create the online application for it


online_application = online.create_online_application(active_applicatio
n)

# Log in to the device.


online_application.login([Link], True)

Logout Application
This method logs out the application. If the application is not logged in, nothing happens.
# Get the project reference
project_reference = [Link]

# Fetch the active application


active_application = project_reference.active_application

# Create the online application for it


online_application = online.create_online_application(active_applicatio
n)

# Log in to the device.


online_application.logout()

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1061
Python Script Language

Start Application
This method starts the application.
# Get the project reference
project_reference = [Link]

# Fetch the active application


active_application = project_reference.active_application

# Create the online application for it


online_application = online.create_online_application(active_applicatio
n)

# Log in to the device.


online_application.login([Link], True)

# Start the application, if necessary


if not online_application.application_state == [Link]:
online_application.start()

# Let the app do its work for some time


[Link](1000)

Stop Application
This method stops the application.
# Get the project reference
project_reference = [Link]

# Fetch the active application


active_application = project_reference.active_application

# Create the online application for it


online_application = online.create_online_application(active_applicatio
n)

# Log in to the device.


online_application.login([Link], True)

# Stop the application, if necessary


if online_application.application_state == [Link]:
online_application.stop()

1062 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Objects

Find
This method finds objects matching the given name.
It consists of 2 parameters:
 The first parameter is the name of the object that is searched.
 The second parameter specifies whether a recursive search is performed. This parameter is
optional, the default value is FALSE. This method returns a collection of objects.
# Search for the specified object
results = [Link]('MyController', True)

for result in results:


print("Object " + result.get_name() + " found with Guid " + str(res
[Link]))

Remove
This method removes the object.
# Finds the MyController object in the project
results = [Link]("MyController", True)

for result in results:


# Removes all objects with the name MyController
[Link]()

Rename
This method renames the object to the new name.
# Finds the MyController object in the project
results = [Link]("MyController", True)

for result in results:


# Rename all MyController objects to MyController_2
[Link]("MyController_2")

Import/Export
Refer to the description of imports/exports for projects (see page 1055). The only difference is that
the object is called for import / export, instead of the project.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1063
Python Script Language

Devices

Overview
This chapter describes methods for manipulating device objects.

Add
This method adds the specified device.
It consists of 3 parameters:
 A string specifying the name of the device.
 DeviceID specifying the ID of the device. For the DeviceID value, refer to the device
description of the device you want to add.
 A string specifying the module ID.

# We want to add a TM5C12D6T6L Module to the TM5_Manager


# Search for the TM5_Manager. The new Module will be inserted below thi
s object.
parent_device = [Link]('TM5_Manager', True)[0]

if not(parent_device == None):
parent_device.add("Module_TM5C12D6T6L", DeviceID(51063, "101a 0363"
, "[Link]"))

Disable
This method marks this device as disabled during download.
# Finds the MyController object in the project
device = [Link]("MyController", True)[0]

if not(device == None):
[Link]()

Enable
This method marks this device as enabled during download.
# Finds the MyController object in the project
device = [Link]("MyController", True)[0]

if not(device == None):
[Link]()

1064 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Get Address
This method gets the address of the device. It returns a string.
# Finds the MyController object in the project
device = [Link]("MyController", True)[0]

if not(device == None):
print("Address: " + device.get_address())

Get Device Identification


This method gets the device identification.
# Finds the MyController object in the project
device = [Link]("MyController", True)[0]

if not(device == None):
print(str(device.get_device_identification()))

Get Gateway
This method returns the GUID of the gateway.
# Finds the MyController object in the project
device = [Link]("MyController", True)[0]

if not(device == None):
print("Gateway: " + str(device.get_gateway()))

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1065
Python Script Language

Insert
This method inserts the specified device at the specified index.
It consists of 4 parameters:
 A string specifying the name of the device.
 Int32 specifying the index where to insert the device.
 DeviceID specifying the ID of the device. For the DeviceID value, refer to the device
description of the device you want to add.
 A string specifying the module ID.

# Finds the MyController object in the project


parent_device = [Link]("TM5_Manager", True)[0]

if not(parent_device == None):
# We need the amount of children to add the new device at the end
child_count = len(parent_device.get_children())

# Use a unique name for the inserted device


parent_device.insert("Module_TM5C12D6T6L_" + str(child_count), chil
d_count, DeviceID(51063, "101a 0363", "[Link]"))

Set Gateway and Address


This method sets the gateway and the address. If you pass the empty GUID and an empty address,
the gateway address will be cleared.
# Finds the MyController object in the project
device = [Link]("MyController", True)[0]

if not(device == None):
device.set_gateway_and_address(gateway, address)

Set Simulation Mode


This method sets the simulation mode. If set to True, simulation is enabled.
# Finds the MyController object in the project
device = [Link]("MyController", True)[0]

if not(device == None):
device.set_simulation_mode (True)

1066 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Update
This method updates the specified device.
# This is a more generic approach to find and update a device by its de
vice description
import os

def find_device_repository(head_dir, sub_dir):


for root, dirs, files in [Link](head_dir):
for d in dirs:
current_dir = [Link](root, d)
if current_dir.endswith(sub_dir):
return current_dir

# This function is used to find the newest version


def version_tuple(v):
return tuple(map(int, ([Link]("."))))

def get_newest_version(directory, current_version):


newest_version = None
available_versions = [Link](directory)
for version in available_versions:
if version_tuple(version ) > version_tuple(current_version):
newest_version = version

return newest_version

# Finds the MyController object in the project


device = [Link]("MyController", True)[0]

if not(device == None):
device_identification = device.get_device_identification()

# Device Repository subdirectory


sub_dir = [Link](str(device_identification.type), device_iden
[Link])

# Find the path where the device description is stored

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1067
Python Script Language

result_directory= find_device_repository(r"c:/", sub_dir)

if not result_directory == None:


newest_version = get_newest_version(result_directory, device_id
[Link])

if not newest_version == None:


[Link](device_identification.type, device_identifica
[Link], newest_version)

1068 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

System / User Interface (UI)

Browse Directory Dialog Box


Opens a dialog box for browsing a directory. In --noUI mode, you can simply enter a path here.
# Import the .NET class [Link] from [Link] first
# Otherwise the [Link] Enumeration is not available
from System import Environment
import os

# Set the necessary fields


dialog_message = "Select Python Example Directory"
preselected_path = r"c:\Python"

# Store the selected path


selected_path = [Link].browse_directory_dialog(dialog_message, prese
lected_path, [Link], True)

# Remember to check if the user canceled the dialog


if(selected_path != None):
# List files in the specified directory
print([Link](selected_path))
It consists of 4 parameters:
 a string containing the message
 a string containing the path that will be preselected when the dialog box opens
 the [Link] contains the root folder for the browse dialog box
 a boolean parameter: If True, a button allowing you to create new folders is displayed in the
dialog box.
This method returns the selected path. If you cancel the dialog box, nothing is returned.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1069
Python Script Language

Choose
This method allows you to choose between one of several listed items.
# Set the necessary fields
option_list = ["TM221C16R", "TM241C24R", "TM258LF66DT4L"]

dialog_message = "Select the controller which should be added to the pr


oject:"

# A python tuple will be returned with the index of the selected item o
r -1 if canceled
selected_item = [Link](dialog_message, option_list, True)

# Remember to check if the user canceled the dialog


if(selected_item[0] != -1):
print(option_list[selected_item[0]] + " will be added to the projec
t.")
It consists of 3 parameters:
 a string containing the message
 a list of options to be displayed: The objects are converted to string in order to display them.
 a boolean parameter: If True, a button allowing you to create new folders is displayed in the
dialog box.
This method returns a Python tuple containing 2 items:
 the index of the selected item, or
-1 if cancelable was set to True and you canceled the dialog box
 the selected item or None

Error Detection
This method indicates an error detection message. It inhibits any further actions until the message
has been acknowledged.
[Link]("Error")

Info
This method indicates an information message. It inhibits any further actions until the message has
been acknowledged.
# Set the necessary fields
dialog_message = "Project update has been completed successfully"

# This method is used to display a simple message to the user


[Link](dialog_message)

1070 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Open File Dialog Box


This method displays an Open File dialog box. In --noUI mode, you can simply enter a path here.
# Set the necessary fields
dialog_title = "Select a Project"
dialog_filename = None
initial_directory = None
file_filter = "(*.project)|*.project"

# Open a select file dialog which only accepts *.project files


selected_file = [Link].open_file_dialog(dialog_title, dialog_filenam
e, initial_directory, file_filter)

# Remember to check if the user canceled the dialog


if(selected_file != None):
# Open the specified project
if [Link]:
[Link]()
[Link](selected_file)

Query String
This method queries the input or edit of a text string.
# Set the necessary fields
dialog_message = "Please enter a filename for your project:"
dialog_prefilled_text = "c:\Python\[Link]"

# This functions queries a string from the user


project_name = [Link].query_string(dialog_message, dialog_prefilled_
text)

# If a project is opened, the project will be saved under the new namei
f([Link]):
[Link].save_as(project_name)
It returns a string with the entered text.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1071
Python Script Language

Save File Dialog


This method displays a Save File dialog box. In --noUI mode, you can simply enter a path here.
import os

# Set the necessary fields


dialog_title = "Select a Filename"
initial_directory, dialog_filename = [Link]([Link]
h)
file_filter = "(*.project)|*.project"

# Open a select file dialog which only accepts *.project files


selected_file = [Link].save_file_dialog(dialog_title, dialog_filenam
e, initial_directory, file_filter)

# Remember to check if the user canceled the dialog


if(selected_file != None):
# File was saved under the specified name, lets close the project
[Link]()

Warning
This method indicates a warning message. It inhibits any further actions until the message has
been acknowledged.
# Set the necessary fields
dialog_message = "Project update failed. Please check the log for detai
led errors."

# This method is used to display a simple warning to the user


[Link](dialog_message)

1072 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Reading Values

Overview
The script opens an application in EcoStruxure Machine Expert and logs in to the device. If the
controller is not in RUNNING state, it will be set to RUNNING. Then the variable iVar1 is read and
displayed in the Messages view or command line. At the end, the application is closed.

# Script Example [Link]


import os

# Define the necessary fields for this example


project_name = "Ohne [Link]"
project_path = r"C:\Python"
value_name = "[Link]"

try:
# Clean up any open project
if [Link]:
[Link]()

# Create the new project


proj = [Link]([Link](project_path, project_name))

# Set the active application


app = proj.active_application

# Create the online application


onlineapp = online.create_online_application(app)

# Login to device
[Link]([Link], True)

# Set status of application to "run" if not in "run"


if not onlineapp.application_state == [Link]:
[Link]()

# Wait 1 second
[Link](1000)

# Read value of iVar1


value = onlineapp.read_value(value_name)

# Display value in message view or command line

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1073
Python Script Language

print (value_name + ": " + str(value))

# Log out from device and close the project


[Link]()
#[Link]()
except Exception as exception:
print("Error: " + str(exception))
print("Please turn on the 'Script Tracing' function to get detailed
information about the script execution.")

1074 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Reading Values From Recipe and Send an Email

Overview
The script opens an application in EcoStruxure Machine Expert and logs in to the device. If the
controller is not in mode RUNNING, it will be set to RUNNING. Then the variable iVar1 is read
and displayed in the Messages view or command line. At the end, the application is closed.

# Script Example [Link]


# Get the primary project reference
project = [Link]
# Retrieve active application
active_application = project.active_application

# Create online application


online_application = online.create_online_application(active_applicatio
n)

# Login to application
online_application.login([Link], True)

# Start PLC if necessary


if not online_application.application_state == [Link]:
online_application.start()

# Wait 2 seconds
[Link](2000)

# Define read values


watch_expressions = ["POU.value_1", "POU.value_2", "POU.value_3"]

# Read values from the controller


watch_values = online_application.read_values(watch_expressions)

# Open output file to write values


recipe_output_file = open(r"C:\Python\Objects\[Link]", "w")

for i in range(len(watch_expressions)):
recipe_output_file.write(watch_expressions[i])
recipe_output_file.write(" = ")
recipe_output_file.write(watch_values[i])
recipe_output_file.write("\n")

# Close files
recipe_output_file.close()

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1075
Python Script Language

# Send Email
# Import respective libraries
import smtplib
from [Link] import MIMEText
#open output file
recipe_output_file = open("C:\Python\Objects\[Link]", "r")
mail = MIMEText(recipe_output_file.read())
recipe_output_file.close()

# Email address sender and recipient


sender = "sender@[Link]"
to = "to@[Link]"

# Set sender and recipient


mail["Subject"] = "Attention value has changed"
mail["From"] = sender
mail["To"] = to

# Send email
smtp = [Link]("Name of the SMTP Server")
[Link](sender, [to], mail.as_string())
[Link]()

# Logout and close application


online_application.logout()
[Link]()

1076 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Determine Device Tree of the Open Project

Overview
This example determines the objects in the Devices tree of the open project and prints them out in
the command line or Messages view. It can be started from the EcoStruxure Machine Expert user
interface or from the command line.

# Script Example [Link]


# We enable the new python 3 print syntax
import sys

# Define the printing function


def printtree(treeobj, depth=0):
if treeobj.is_root:
name = [Link]
deviceid = ""
else:
name = treeobj.get_name(False)
if treeobj.is_device:
deviceid = treeobj.get_device_identification()
else:
deviceid = ""
print("{0} - {1} {2}".format(" "*depth, name, deviceid))
for child in treeobj.get_children(False):
printtree(child, depth+1)

# Now see whether a primary project is open.


if not [Link]:
print("Error: Please open a project file first!")
[Link]()

# And the actual output


print("Print the current tree of: ")
printtree([Link])

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1077
Python Script Language

Script Example 4: Import a Device in PLCOpenXML From Subversion

Overview
This example imports a device in PLCOpenXML from Subversion via command line svn client.
It can be started from the EcoStruxure Machine Expert user interface or from the command line.

# Script Example [Link]


# Imports a Device in PLCOpenXML from Subversion via command line svn c
lient
import os

# Some variable definitions


svn_executable = r"C:\Program Files\TortoiseSVN\bin\[Link]"
project_file = r"C:\Python\[Link]"

# !!! Important: File must be under version control !!!


export_file = r"C:\Python\SVN\[Link]"

# Clean up any open project:


if [Link]:
[Link]()

# Fetch the PLCOpenXML data from subversion


# The with construct automatically closes the open pipe for us.
with [Link]('"' + svn_executable + '" cat ' + export_file, "r") as pi
pe:
xmldata = [Link]()

# Create a new project


project_reference = [Link](project_file)

# Create the import reporter


class Reporter(ImportReporter):
def error(self, message):
system.write_message([Link], message)
def warning(self, message):
system.write_message([Link], message)
def resolve_conflict(self, obj):
return [Link]
def added(self, obj):
print("added: ", obj)
def replaced(self, obj):
print("replaced: ", obj)
def skipped(self, obj):

1078 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

print("skipped: ", obj)


@property
def aborting(self):
return False

# Create the importer instance


reporter = Reporter()

# Import the data into the project


project_reference.import_xml(reporter, xmldata)

# And finally save


project_reference.save()

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1079
Python Script Language

Script Example 5: Creating and Editing POUs

Overview
The script [Link] creates the objects MyStruct, MyAlias, and MyUnion in the
EcoStruxure Machine Expert project. The folder DataTypes must be available.

[Link]
# encoding:utf-8
from __future__ import print_function
STRUCT_CONTENT = """\
a : BOOL;
b : BIT;
c : BIT;
"""
UNION_WHOLE = """\
TYPE MyUnion :
UNION
Zahl : INT;
Prozent : MyAlias;
Bits : MyStruct;
END_UNION
END_TYPE
"""
proj = [Link]
folder = [Link]('DataTypes', recursive = True)[0]
# Create a struct DUT and insert the list of variables just into the right
# place in line two, row 0 (line numbering starts with line 0)
struktur = folder.create_dut('MyStruct') # [Link] is the
default
struktur.textual_declaration.insert(2, 0, STRUCT_CONTENT)
# Alias types get their "content" via the base type, which will just end
up
# as one line in the declaration part:
# TYPE MyAlias : INT (0..100); END_TYPE
bereich = folder.create_dut('MyAlias', [Link], "INT (0..100)")
# Instead of injecting the variables into the existing declaration,
# one can also just replace the complete declaration part, including the
# boilerplate code.
union = folder.create_dut('MyUnion', [Link])
union.textual_declaration.replace(UNION_WHOLE)

1080 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Script Example 6: User Interface / Interaction with the User

Overview
In some cases, scripts have to interact with the user. Simple APIs are provided for common
interactions. The sample script System_UI_Test.py shows the possible functions.

System_UI_Test.py
# encoding:utf-8
from __future__ import print_function

"""Performs some tests on the messagestore and UI."""

print("Some Error, Warning and Information popups:")


[Link]("Fatal error: Everything is OK. :-)")
[Link]("Your bank account is surprisingly low")
[Link]("Just for your information: 42")

print("Now, we ask the user something.")


res = [Link]("Do you like this?", [Link],
[Link]);
print("The user selected '%s'" % res)

print("Now, the user can choose between custom options:")


res = [Link]("Please choose:", ("First", 2, 7.5, "Something
else"))
print("The user selected option '%s'" % str(res)) # res is a tuple

print("Now, the user can choose several options:")


res = [Link].select_many("Please select one or more options",
[Link], [Link], ("La Premiere", "The Second",
"Das Dritte"))
print("The returned result is: '%s'" % str(res)) # res is a tuple

print("Now, the user can select files and directories")


res = [Link].open_file_dialog("Choose multiple files:", filter="Text
files (*.txt)|*.txt|Image
Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files (*.*)|*.*",
filter_index = 0, multiselect=True)
print("The user did choose: '%s'" % str(res)) # res is a tuple as
multiselect is true.

res = [Link].save_file_dialog("Choose a file to save:", filter="Text


files (*.txt)|*.txt|Image
Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files (*.*)|*.*",

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1081
Python Script Language

filter_index = 0)
print("The user did choose: '%s'" % res)

res = [Link].browse_directory_dialog("Choose a directory",


path="C:\\")
print("The user did choose: '%s'" % res)

print("Now we query a single line string")


res = [Link].query_string("What's your name?")
print("Nice to meet you, dear %s." % res)

print("Now we query a multi line string")


res = [Link].query_string("Please tell me a nice story about your
life!", multi_line=True)
if (res):
print("Huh, that has been a long text, at least %s characters!" %
len(res))
else:
print("Hey, don't be lazy!")

print("Username and passwort prompts...")


res = [Link].query_password("Please enter your favourite password!",
cancellable=True)
if res:
print("Huh, it's very careless to tell me your favourite password
'%s'!" % res)
else:
print("Ok, if you don't want...")

res = [Link].query_credentials("Now, for real...")


if res:
print("Username '%s' and password '%s'" % res) # res is a 2-tuple
else:
print("Sigh...")

1082 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Python Script Language

Script Example 7: Manipulation of the Project information Object

Overview
The script [Link], provides information in the Project information object. Important
information items, such as Title and Version, have explicit properties. However, you can read and
write the other information fields by using the dictionary syntax. For example, those that are
recommended for the properties of a library project.
The example below may seem unrealistic, but similar code is used in build servers that create, test,
and possibly release automatic library projects and other projects. The ScriptEngine is one of the
key elements for creating CI (Continuous Integration) and CD (Continuous Delivery) systems.

[Link]
# encoding:utf-8
from __future__ import print_function

proj = [Link]("D:\[Link]")

info = proj.get_project_info()

# Set some values


[Link] = "Test Library Ltd"
[Link] = "Script Test Project"
[Link] = (0, 8, 15, 4711)
info.default_namespace = "testlibrary"
[Link] = "Python von Scriptinger"

# some values recommended in the library toolchain


[Link]["DefaultNamespace"] = "testlibrary"
[Link]["Placeholder"] = "testlibrary"
[Link]["DocFormat"] = "reStructuredText"

# now we set a custom / vendor specific value.


[Link]["SpecialDeviceId"] = "PLC0815_4711"

# Enable generation of Accessor functions, so the IEC


# application can display the version in an info screen.
info.change_accessor_generation(True)

# And set the library to released


[Link] = True;

[Link]()

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1083
Python Script Language

Advanced Example: Checkout a Library from SVN and Installation in EcoStruxure


Machine Expert

Overview
The following sample script can perform the checkout and installation of a library as part of a CT
(Continuous Testing) environment so that they can be tested. The SVN Add-on must be installed
on the PC and the SVN Add-on license must be activated.

Sample Script
import tempfile

if [Link]:
[Link]()

tempdir = [Link]()
URL = "svn://localhost/testrepo/trunk/SvnTestLibrary/"

proj = [Link](URL, tempdir, "testlibrary", as_library=True)


[Link]()

repo = [Link][0]
librarymanager.install_library([Link], repo, True)

[Link]()

1084 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Controller Feature Sets for Migration
EIO0000002854 06/2019

Appendix C
Controller Feature Sets for Migration

Controller Feature Sets for Migration

Controller Feature Sets for Migration

Twido Controllers

Controller Dig In Dig Out MOD FC HSC PWM Serial ETH


TWDLCAA10DRF 6 4 No 3 1 0 1 No
TWDLCDA10DRF 6 4 No 3 1 0 1 No
TWDLCAA16DRF 9 7 No 3 1 0 1+1 No
TWDLCDA16DRF 9 7 No 3 1 0 1+1 No
TWDLCAA24DRF 14 10 No 3 1 0 1+1 No
TWDLCDA24DRF 14 10 No 3 1 0 1+1 No
TWDLCAA40DRF 24 16 No 4 2 2 1+1 No
TWDLCDA40DRF 24 16 No 4 2 2 1+1 No
TWDLCAE40DRF 24 16 No 4 2 2 1+1 Yes
TWDLCDE40DRF 24 16 No 4 2 2 1+1 Yes
TWDLMDA20DTK 12 8 Yes 2 2 2 1+1 No
TWDLMDA20DUK 12 8 Yes 2 2 2 1+1 No
TWDLMDA20DRT 12 8 Yes 2 2 2 1+1 No
TWDLMDA40DTK 24 16 Yes 2 2 2 1+1 No
TWDLMDA40DUK 24 16 Yes 2 2 2 1+1 No
Dig In = number of digital inputs
Dig Out = number of digital outputs
MOD = expansion modules
FC = number of fast counters
HSC = number of high-speed counters
PWM = number of pulse generators
Serial = number of serial ports
ETH = Ethernet ports

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1085
Controller Feature Sets for Migration

M221 Controllers

Controller Dig In Dig Out Ana In MOD FC HSC PWM Serial ETH CART
TM221C16R 9 7 2 TM2/TM3 4 2 0 1 No 1
TM221C16T 9 7 2 TM2/TM3 4 2 2 1 No 1
TM221C24R 14 10 2 TM2/TM3 4 2 0 1 No 1
TM221C24T 14 10 2 TM2/TM3 4 2 2 1 No 1
TM221C40R 24 16 2 TM2/TM3 4 2 0 1 No 2
TM221C40T 24 16 2 TM2/TM3 4 2 2 1 No 2
TM221CE16R 9 7 2 TM2/TM3 4 2 0 1 Yes 1
TM221CE16T 9 7 2 TM2/TM3 4 2 2 1 Yes 1
TM221CE24R 14 10 2 TM2/TM3 4 2 0 1 Yes 1
TM221CE24T 14 10 2 TM2/TM3 4 2 2 1 Yes 1
TM221CE40R 24 16 2 TM2/TM3 4 2 0 1 Yes 2
TM221CE40T 24 16 2 TM2/TM3 4 2 2 1 Yes 2
TM221M16R/G 8 8 2 TM2/TM3 4 2 0 2 No 0
TM221M16T/G 8 8 2 TM2/TM3 4 2 2 2 No 0
TM221M32TK 16 16 2 TM2/TM3 4 2 2 2 No 0
TM221ME16R/G 8 8 2 TM2/TM3 4 2 0 1 Yes 0
TM221ME16T/G 8 8 2 TM2/TM3 4 2 2 1 Yes 0
TM221ME32TK 16 16 2 TM2/TM3 4 2 2 1 Yes 0
Dig In = number of digital inputs
Dig Out = number of digital outputs
Ana In = number of analog inputs
MOD = expansion modules
FC = number of fast counters
HSC = number of high-speed counters
PWM = number of pulse generators
Serial = number of serial ports
ETH = Ethernet ports
CART = number of cartridges

1086 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
Controller Feature Sets for Migration

EcoStruxure Machine Expert Controllers

Controller Dig In Dig Out Ana In MOD FC HSC PWM Serial ETH CART
TM241C24R 14 10 0 TM2/TM3 8 2 4 2 No 1
TM241C24T/U 14 10 0 TM2/TM3 8 2 4 2 No 1
TM241C40R 24 16 0 TM2/TM3 8 2 4 2 No 2
TM241C40T/U 24 16 0 TM2/TM3 8 2 4 2 No 2
TM241CE24R 14 10 0 TM2/TM3 8 2 4 2 Yes 1
TM241CE24T/U 14 10 0 TM2/TM3 8 2 4 2 Yes 1
TM241CE40R 24 16 0 TM2/TM3 8 2 4 2 Yes 2
TM241CE40T/U 24 16 0 TM2/TM3 8 2 4 2 Yes 2
TM241CEC24R 14 10 0 TM2/TM3 8 2 4 2 Yes 1
TM241CEC24T/U 14 10 0 TM2/TM3 8 2 4 2 Yes 1
HMISCU•A5 16 10 0 No 2 1 2 1 Yes 0
HMISCU•B5 8 8 2 No 2 1 2 1 Yes 0
Dig In = number of digital inputs
Dig Out = number of digital outputs
Ana In = number of analog inputs
MOD = expansion modules
FC = number of fast counters
HSC = number of high-speed counters
PWM = number of pulse generators
Serial = number of serial ports
ETH = Ethernet ports
CART = number of cartridges

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1087
Controller Feature Sets for Migration

1088 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Know-How Protection
EIO0000002854 06/2019

Appendix D
Know-How Protection

Know-How Protection

Know-How Protection of Projects and Libraries

Know-How Protection Mechanisms


EcoStruxure Machine Expert incorporates the following mechanisms for know-how protection:
 The user management offers protection for the end user against accidental changes to the
protected objects.
 The user management does not serve as a know-how protection of the function blocks. Both
EcoStruxure Machine Expert itself, as well as plug-ins and persons with knowledge of the
project file format can view or change function blocks.
 Know-how protection of libraries can be achieved when libraries are delivered as compiled
libraries. These do not contain source code anymore, only encrypted compile information. Only
the compiler is able to interpret these data; other EcoStruxure Machine Expert components are
denied this information.
Compiled libraries are, in contrast to what the name suggests, independent of the target system.
 Know-how protection of projects can be achieved by encrypting the project file. To achieve this,
assign a project password.
NOTE: Losing a project password leads to the project being unable to load.

EIO0000002854 06/2019 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. 1089
Know-How Protection

1090 EcoStruxure Machine Expert version 1.1 does not support the M258, LMC058 and LMC078 controllers. EIO0000002854 06/2019
EcoStruxure Machine Expert
Glossary
EIO0000002854 06/2019

Glossary

C
CFC
(continuous function chart) A graphical programming language (an extension of the IEC 61131-3
standard) based on the function block diagram language that works like a flowchart. However, no
networks are used and free positioning of graphic elements is possible, which allows feedback
loops. For each block, the inputs are on the left and the outputs on the right. You can link the block
outputs to the inputs of other blocks to create complex expressions.

D
DTM
(device type manager) Classified into 2 categories:
 Device DTMs connect to the field device configuration components.
 CommDTMs connect to the software communication components.

The DTM provides a unified structure for accessing device parameters and configuring, operating,
and diagnosing the devices. DTMs can range from a simple graphical user interface for setting
device parameters to a highly sophisticated application capable of performing complex real-time
calculations for diagnosis and maintenance purposes.
DUT
(data unit type) Along with the standard data types the user can define own data type structures,
enumerationen types, and references as data type units in a DUT editor.

E
element
The short name of the ARRAY element.

F
FBD
(function block diagram) One of 5 languages for logic or control supported by the standard IEC
61131-3 for control systems. Function block diagram is a graphically oriented programming
language. It works with a list of networks, where each network contains a graphical structure of
boxes and connection lines, which represents either a logical or arithmetic expression, the call of
a function block, a jump, or a return instruction.

EIO0000002854 06/2019 1091


Glossary

G
GRAFCET
The functioning of a sequential operation in a structured and graphic form.
This is an analytical method that divides any sequential control system into a series of steps, with
which actions, transitions, and conditions are associated.
GVL
(global variable list) Manages global variables within an EcoStruxure Machine Expert project.

I
IL
(instruction list) A program written in the language that is composed of a series of text-based
instructions executed sequentially by the controller. Each instruction includes a line number, an
instruction code, and an operand (refer to IEC 61131-3).

L
LD
(ladder diagram) A graphical representation of the instructions of a controller program with symbols
for contacts, coils, and blocks in a series of rungs executed sequentially by a controller (refer to
IEC 61131-3).

M
MAC address
(media access control address) A unique 48-bit number associated with a specific piece of
hardware. The MAC address is programmed into each network card or device when it is
manufactured.

O
OPC UA
OPC Unified Architecture.

P
POU
(program organization unit) A variable declaration in source code and a corresponding instruction
set. POUs facilitate the modular re-use of software programs, functions, and function blocks. Once
declared, POUs are available to one another.

1092 EIO0000002854 06/2019


Glossary

Python interpreter
A program that directly executes instructions that have been entered.

R
REPL
(read-eval-print-loop) A simple, interactive computer programming environment. It takes single
user inputs, evaluates them, and returns the result.
RTS
(request to send) A data transmission signal and CTS signal that acknowledges the RTS from the
destination node.

S
Sercos
(serial real-time communications system) A digital control bus that interconnects, motion controls,
drives, I/Os, sensors, and actuators for numerically controlled machines and systems. It is a
standardized and open controller-to-intelligent digital device interface, designed for high-speed
serial communication of standardized closed-loop real-time data.
SFC
(sequential function chart) A language that is composed of steps with associated actions,
transitions with associated logic condition, and directed links between steps and transitions. (The
SFC standard is defined in IEC 848. It is IEC 61131-3 compliant.)
shell
A shell is a (console) program that allows the user to interact with a program with a textual based
interface.

T
TLS
(transport layer security) A protocol for encrypted data transfer. Successor of SSL.

U
UDP
(user datagram protocol) A connectionless mode protocol (defined by IETF RFC 768) in which
messages are delivered in a datagram (data telegram) to a destination computer on an IP network.
The UDP protocol is typically bundled with the Internet protocol. UDP/IP messages do not expect
a response, and are therefore ideal for applications in which dropped packets do not require
retransmission (such as streaming video and networks that demand real-time performance).

EIO0000002854 06/2019 1093


Glossary

UTC
(universal time coordinated) The primary time standard by which the world regulates clocks and
time.

1094 EIO0000002854 06/2019


EcoStruxure Machine Expert
Index
EIO0000002854 06/2019

Index

Symbols ADR
operator, 809
IronPython, 973
analog inputs
__DELETE
CANopen, 939
operator, 847
AND
__ISVALIDREF
IEC operator, 783
operator, 850
ANY, 726
__NEW
ANY_<type>, 726
operator, 851
ANY_NUM_TO
__QUERYINTERFACE
IEC operator, 830
operator, 854
ANY_TO
__QUERYPOINTER
IEC operator, 830
operator, 856
array, 761
"__POOL." operator, 866
array declaration, 428
ASIN
IEC operator, 841
0-9 ATAN
3 GB switch on Windows 7 32-bit, 943 IEC operator, 843
32-bit operating system automatic I/O mapping, 157
memory limit, 943 axis allocation
cam motion editor, 602, 605
A
ABS B
IEC operator, 833 BIT, 731
ACOS BITADR
IEC operator, 842 operator, 811
ADD BOOL, 723
IEC operator, 769 BOOL_TO
adding controllers, 70 IEC operator, 815
adding controllers by drag and drop, 66 boot application, 257
adding devices and modules by drag and Boot Application, 251
drop, 67 build-time performance, 945
adding devices from device template by drag
and drop, 68
adding devices from function template by C
drag and drop, 68
CAL
adding expansion devices by drag and drop,
IEC operator, 812
67
calculate value automatically
addressing, 965
cam motion editor, 602

EIO0000002854 06/2019 1095


Index

cam data device templates, 907, 908


cam data structure, 599 devices
cam data structures adding, 74
generate data, 599 dir(…)
generation, 594, 595 Python function, 993
cam diagram discontinuous courses of the positions, 603
add, 596 DIV
cam motion editor IEC operator, 775
parameterizing cam diagrams, 594 download, 250, 257
generating cam data structures, 594, 595 boot application, 257
cam segment, 596 Boot Application, 251
CANopen analog inputs, 939 DT, 726
CANopen devices, 72 DT_TO
CASE IEC operator, 824
instruction, 417 DTM, 41
Catalog view, 49
command
Convert Device, 79 E
Convert SoMachine Basic Project, 81 Edit communication settings dialog box, 108
Convert Twido Project, 81 END_IF
communication manager configuration, 72 instruction, 416
communication settings, 108 END_VAR, 637
configuration diagnostic, 75 END_WHILE
constants, 643 instruction, 419
Content EQ
operator, 810 IEC operator, 806
CONTINUE EXIT
instruction, 421 instruction, 421
controller - HMI variable exchange, 588 EXP
Convert Device command, 79 IEC operator, 837
convert SoMachine Basic project, 81 expansion devices, 71
convert Twido project, 81 expansions, 71
core dump, 277 EXPT
COS IEC operator, 844
IEC operator, 839 external variables - VAR_EXTERNAL, 640

D F
data types, 723 FAQ
DATE, 726 login to controller not successful, 956
DATE_AND_TIME, 726 FB_Exit, 647
DATE_TO FB_Init, 647
IEC operator, 824 FB_init
declaring IEC operator, 867
arrays, 428 FB_MultiCam, 599

1096 EIO0000002854 06/2019


Index

FB_Reinit, 647 INI


FdtConnections node, 41 IEC operator, 867
FFB Finder, 486 input and output variables - VAR_IN_OUT,
field device configuration, 72 638
fieldbus health information, 74 input data structure
fieldbusses supported by templates, 896 FB_MultiCam, 599
FOR MC_Cam_ID, 599
instruction, 418 input variables - VAR_INPUT, 637
Function and Function Block Finder, 486 [Link]
function templates, 921 Python function, 993
Functional Model node, 46 installation
Functional tree, 46 third-party Sercos devices, 63
instance variables - VAR_INST, 640
instructions
G ST editor, 413
GE INT, 723
IEC operator, 805 INT_TO
Generated IEC source code tab of the cam IEC operator, 819
motion editor, 601 integer, 723
global node operator, 866
global variables - VAR_GLOBAL, 639
GT J
IEC operator, 802 JMP
instruction, 421

H
health information L
fieldbus, 74 lambda
HMI - controller variable exchange, 588 law of motion, 609
HMI connection indications, 591 large EcoStruxure Machine Expert projects,
943
law of motion, 609
I LE
IEC code IEC operator, 804
generating from cam data, 598 LIMIT
IEC objects IEC operator, 799
fieldbus Diagnostic/O mapping, 74 literals
IEC source code typed, 644
generating, 614 LN
IEC source code of the cam diagram, 601 IEC operator, 835
IF local variables - END_VAR, 637
instruction, 416 local variables - VAR, 637
increasing build-time performance, 945 LOG
indications IEC operator, 836
HMI connection, 591 login, 250, 257

EIO0000002854 06/2019 1097


Index

login to controller not successful, 956 Network Device Identification


LREAL, 724 accessing new controllers, 951
LREAL_TO connecting via IP address and address in-
IEC operator, 820 formation, 953
LT FAQs, 956
IEC operator, 803 in Communication Settings tab, 105
LTIME, 726 network variables list (receiver), 449
NodeName, 111
NOT
M IEC operator, 786
managing tags, 49 NVL
MAX configuration example, 456
IEC operator, 797 considerations, 444
MC_Cam_ID, 599 controllers supporting NVL, 444
memory consumption of EcoStruxure Ma- network variables list, 442
chine Expert, 944 rules, 452
memory limit, 943 NVL communication suspended, 947
memory usage by recipes, 516
menus, 941
MIN O
IEC operator, 798 online mode
MOD cam motion editor, 602
IEC operator, 778 OR
Modbus IOScanner on a Serial Line, 946 IEC operator, 784
Modbus Serial IOScanner output variables - VAR_OUTPUT, 638
error detected, 946
Modbus SL devices, 72
Modbus slave disconnected, 946 P
Motion Editor parameterizing cam diagrams, 594
displaying several Motion Editor views, persistent variables, 642
597 pragmas
Motion Editor tab, 605 region, 666
MOVE PROGRAM, 176
IEC operator, 780 programming environments for Python, 973
MUL project archives, 287
IEC operator, 771 publishing variables, 582
MUX publishing variables (HMI), 585
IEC operator, 800 Python, 973

N R
NE REAL, 724
IEC operator, 807 REAL_TO
IEC operator, 820

1098 EIO0000002854 06/2019


Index

recipes STRING_TO
memory usage, 516 IEC operator, 826
reducing memory consumption, 944 SUB
refreshing variables, 588 IEC operator, 773
region pragmas, 666 symbol configuration, 574
remanent variables, 641
REPEAT
instruction, 420 T
retain variables, 641 tagging catalog items, 49
RETURN TAN
instruction, 416 IEC operator, 840
ROL tasks
IEC operator, 791 adding, 247
ROR template libraries, 907
IEC operator, 793 templates, 894
routing, 965 temporary variables - VAR_TEMP, 639
run, 269 TIME, 726
time data types, 726
TIME_OF_DAY, 726
S IEC operator, 822
Script Engine, 973 TIME_TO
searching within catalogs, 49 IEC operator, 822
SEL TO_BOOL
IEC operator, 796 IEC operator, 817
selecting variables, 584 TOD, 726
Sercos transition, 191
installation of third-party devices, 63 TRUNC
SHL IEC operator, 828
IEC operator, 788 TRUNC_INT
shortcuts, 941 IEC operator, 829
SHR typed literals, 644
IEC operator, 790
SIN
IEC operator, 838 U
SIZEOF UNION, 730
IEC operator, 781 updating devices, 78
smart coding, 718 Use DTM Connection checkbox, 41
SQRT
IEC operator, 834
ST editor V
instructions, 413 VAR, 637
startup performance, 940 VAR_EXTERNAL, 640
static variables - VAR_STAT, 639 VAR_GLOBAL, 639
stop, 269 VAR_IN_OUT, 638
STRING, 725 VAR_INPUT, 637

EIO0000002854 06/2019 1099


Index

VAR_INST, 640
VAR_OUTPUT, 638
VAR_STAT, 639
VAR_TEMP, 639
variable definition, 578
variable exchange
communication speed, 588
variable types, 578
variables, 637
persistent, 227
publishing, 582
publishing (HMI), 585
remanent, 227
visualizations, 912

W
WHILE
instruction, 419
WSTRING, 725

X
XOR
IEC operator, 785

1100 EIO0000002854 06/2019

You might also like