AADvance Workbench
AADvance Workbench
1 Workbench
System release 1.40
AADvance
Copyright © 2018: Rockwell Automation Technologies, Inc. All rights reserved. No portion
of this work may be reproduced in any form or by any means, without the prior written
permission of Rockwell Automation.
Table of Contents
Additional Information _____________________________ 1
AADvance Workbench _____________________________ 5
Language Editor..................................................................................................... 7
Editing the Contents of Language Containers ................................................ 8
Block Library ....................................................................................................... 13
Version Control.................................................................................................... 15
Defining a Repository................................................................................... 18
Checking In Elements to Version Control.................................................... 19
Checking Out Elements from Version Control ............................................ 21
Undoing Check Outs of Elements ................................................................ 22
Reviewing Pending Checkins ....................................................................... 23
Getting the Latest Versions of Elements ...................................................... 24
Labeling a Version........................................................................................ 25
Archiving and Restoring Repository Projects .............................................. 26
Accessing Repository Projects ..................................................................... 28
Publishing Libraries...................................................................................... 30
Working Offline and Reconnecting to a Repository .................................... 31
Viewing the History of Elements ................................................................. 33
Refreshing the Version Control Status of Elements ..................................... 35
Controller Status .................................................................................................. 37
Front Panel Status Indicators ........................................................................ 39
Variable Dependencies ........................................................................................ 43
Properties Window ....................................................................................... 47
Locked Variables Viewer .................................................................................... 49
Toolbox ................................................................................................................ 51
Variable Selector.................................................................................................. 55
Managing Variables from the Variable Selector .......................................... 59
Creating Variables from the Variable Selector........................................60
Editing Variables from the Variable Selector..........................................64
Deleting Variables from the Variable Selector........................................65
Block Selector...................................................................................................... 67
Parameters Display ....................................................................................... 70
AADvance Workbench i
Parameters View.................................................................................................. 71
Find and Replace Utility...................................................................................... 75
Quick Find .................................................................................................... 76
Quick Replace .............................................................................................. 78
Compiler Verification.......................................................................................... 81
Spy Lists .............................................................................................................. 89
Add-in Manager................................................................................................... 99
External Tools.................................................................................................... 101
Working in the Development Environment....................................................... 103
Zooming the Contents of Active POUs...................................................... 104
Displaying the Output Window.................................................................. 105
Using the Error List .................................................................................... 107
Arranging and Docking Windows.............................................................. 109
Searching in the Development Environment.............................................. 112
Navigating in the Development Environment............................................ 113
Customizing Toolbars ................................................................................ 115
Creating Toolbars ....................................................................................... 116
Customizing Commands ............................................................................ 117
Importing and Exporting Settings .............................................................. 121
Export Selected Environment Settings ..................................................122
Naming a Settings File.....................................................................123
Settings Export in Progress..............................................................124
Import Selected Environment Settings ..................................................125
Choosing a Collection of Settings to Import....................................126
Choosing Settings to Import ............................................................127
Settings Import in Progress..............................................................128
Reset all Settings ...................................................................................129
Settings Reset in Progress................................................................130
Operations Summary .............................................................................131
Development Environment Keyboard Shortcuts........................................ 132
Options for the Development Environment....................................................... 135
Setting Environment Options ..................................................................... 136
Find and Replace Settings .....................................................................138
Import and Export Settings....................................................................139
Shortcut Keyboard Combinations..........................................................140
Startup....................................................................................................143
Tabs and Windows ................................................................................144
Specifying Project Options......................................................................... 146
AADvance Workbench v
Channels for Digital Inputs..............................................................446
Threshold Values for Digital Inputs ................................................450
Analog Inputs.........................................................................................454
Channels for Analog Inputs .............................................................455
HART for Analog Inputs .................................................................459
HART Pass-Through for Analog Inputs ....................................465
Threshold Values for Analog Inputs................................................474
Digital Outputs ......................................................................................478
Channels for Digital Outputs ...........................................................479
Advanced Settings for Digital Output Channels........................485
Variables for Digital Outputs...........................................................487
Status Booleans ..........................................................................489
Field Power Status Integers........................................................490
Analog Outputs......................................................................................492
Channels for Analog Outputs...........................................................493
Advanced Settings for Analog Output Channels .......................498
HART for Analog Outputs...............................................................500
HART Pass-Through for Analog Outputs..................................506
System Security ................................................................................................. 515
Network Firewall........................................................................................ 517
Windows Firewall ...................................................................................... 519
AADvance Discover.......................................................................................... 521
Generating Documentation................................................................................ 535
FBD Language................................................................................................... 541
FBD Diagram Main Format ....................................................................... 542
Execution Order of FBD Programs ............................................................ 544
Debugging FBD Programs ......................................................................... 546
FBD Elements ............................................................................................ 547
Blocks ....................................................................................................549
Variables ................................................................................................551
Vertical Bars ..........................................................................................553
Labels.....................................................................................................554
Jumps .....................................................................................................556
Returns...................................................................................................558
Rungs .....................................................................................................559
Left Power Rails ....................................................................................560
Right Power Rails ..................................................................................561
Coils.......................................................................................................562
AADvance Workbench ix
Addition...................................................................................................... 742
AND .......................................................................................................... 744
ANY_TO_BOOL ....................................................................................... 745
ANY_TO_BYTE........................................................................................ 746
ANY_TO_DATE ....................................................................................... 747
ANY_TO_DINT ........................................................................................ 748
ANY_TO_DWORD ................................................................................... 749
ANY_TO_INT ........................................................................................... 750
ANY_TO_LINT ......................................................................................... 751
ANY_TO_LREAL ..................................................................................... 753
ANY_TO_LWORD ................................................................................... 754
ANY_TO_REAL........................................................................................ 756
ANY_TO_SINT ......................................................................................... 757
ANY_TO_STRING.................................................................................... 758
ANY_TO_TIME ........................................................................................ 760
ANY_TO_UDINT...................................................................................... 761
ANY_TO_UINT ........................................................................................ 762
ANY_TO_ULINT ...................................................................................... 763
ANY_TO_USINT ...................................................................................... 765
ANY_TO_WORD...................................................................................... 766
Division ...................................................................................................... 767
Equal........................................................................................................... 769
Greater Than............................................................................................... 771
Greater Than or Equal ................................................................................ 773
Less Than ................................................................................................... 775
Less Than or Equal..................................................................................... 777
Multiplication ............................................................................................. 779
NEG ........................................................................................................... 781
NOT ........................................................................................................... 782
Not Equal.................................................................................................... 783
OR ............................................................................................................. 785
Subtraction.................................................................................................. 786
XOR ........................................................................................................... 788
Functions ........................................................................................................... 789
ABS ........................................................................................................... 791
ACOS ........................................................................................................ 792
AND_MASK.............................................................................................. 793
ASCII.......................................................................................................... 794
ASIN .......................................................................................................... 795
AADvance Workbench xi
CMP ........................................................................................................... 849
CTD ........................................................................................................... 851
CTU ........................................................................................................... 853
CTUD ........................................................................................................ 854
DERIVATE ................................................................................................ 856
F_TRIG ...................................................................................................... 858
HYSTER .................................................................................................... 859
INTEGRAL ................................................................................................ 860
LIM_ALRM ............................................................................................... 862
R_TRIG ...................................................................................................... 864
RS .............................................................................................................. 865
SIG_GEN ................................................................................................... 867
SR .............................................................................................................. 869
STACKINT ................................................................................................ 871
TOF ........................................................................................................... 873
TON ........................................................................................................... 874
TP .............................................................................................................. 875
Series 9000_L Function Blocks......................................................................... 877
KvbConsNetStatus ..................................................................................... 878
KvbProdNetStatus ...................................................................................... 880
MathErr ...................................................................................................... 882
ModbusServiceStatus ................................................................................. 883
SoeServiceStatus ........................................................................................ 884
Glossary ............................................................................................................. 887
Licensing ........................................................................................................... 913
It is not intended that the information in this publication cover every possible detail about the
construction, operation, or maintenance of a control system installation. You should also refer
to your own local (or supplied) system safety manual, installation and operator/maintenance
manuals.
Important: System integrators tasked with building and setting up systems must ensure the
application is compliant with local, national, international, and safety standards.
The AADvance controller has a program enable key plugged into the key connector on the
9100 processor base unit. When the key is removed, the controller application is protected from
unwanted changes. You must fit the program enable key before performing downloads,
modifying the application, or modifying the controller IP address.
AADvance Workbench 1
ADDITIONAL INFORMATION
For additional information about the AADvance Workbench and AADvance controllers,
review the information located at the Rockwell Automation Support Center:
http://rockwellautomation.custhelp.com
Important: A login account is required to access the Support Center. Click Sign Up to create
an account. Additionally, some Knowledgebase articles require a TechConnect Support
Contract.
From the Support site, you can access the following information:
Literature Library
For Knowledgebase articles, refine the search by Product, and then select ICS
Triplex>AADvance.
Publication # Manual
ICSTT-RM446M- AADvance Safety Manual
EN-P
(http://literature.rockwellautomation.com/idc/groups/literature/document
s/rm/icstt-rm446_-en-p.pdf)
ICSTT-RM458A- AADvance Configuration Guide (WB2.x)
EN-P
(http://literature.rockwellautomation.com/idc/groups/literature/document
s/rm/icstt-rm458_-en-p.pdf)
Note: The majority of the information found in this manual is also found
in the current Workbench online help.
ICSTT-RM448I-E AADvance System Build Manual
N-P
(http://literature.rockwellautomation.com/idc/groups/literature/document
s/rm/icstt-rm448_-en-p.pdf)
ICSTT-RM406G- Troubleshooting and Repair Manual
EN-P
(http://literature.rockwellautomation.com/idc/groups/literature/document
s/rm/icstt-rm406_-en-p.pdf)
553701 OPC Portal Server User Guide
(http://literature.rockwellautomation.com/idc/groups/literature/document
s/rm/icstt-rm407_-en-p.pdf)
DOCUMENTATION FEEDBACK
Your comments help us to write better user documentation. If you discover an error, or have a
suggestion on how to make this publication better, send your comment to our technical support
group:
http://rockwellautomation.custhelp.com
AADvance Workbench 3
4 AADvance 2.1 - Additional Information
AADvance Workbench
AADvance is a complete suite for building process control projects for use with Series 9000
controllers. The AADvance environment includes development tools and other technologies
simplifying design, development, and deployment of applications. You develop projects on a
Windows development platform, from the workbench and language editors.
The workbench graphically represents and organizes controllers and networks. The
development process consists of creating projects made up of controllers, representing
individual target nodes. The development environment is made up of multiple windows and
tools:
Application View
Communication View
Equipment View
AADvance Discover
Language Editors
Block Library
Controller Status
Variable Dependencies
Collection Editor
Variable Selector
Block Selector
AADvance Workbench 5
Parameters Display
Parameters List
Spy List
Add-in Manager
Description Window
Properties Window
Toolbox
Error list
Output Window
Document Generator
From the language editor, you can edit multiple POUs simultaneously. Individual POUs are
opened in separate workspaces each having a tab indicating the POU name. The tabs enable
moving from one POU to another.
When working in the language editor, you can choose to expand the workspace to a full-screen
view.
You can edit the contents of language containers in the editor workspace.
AADvance Workbench 7
Editing the Contents of Language Containers
You develop POUs using language containers. When developing POUs, you can only insert
elements from the corresponding language Toolbox into the open language container. POUs
can have only one language container.
Selecting elements
Inserting elements
Inserting identifiers
Inserting blocks
Moving elements
Resizing elements
Deleting elements
For graphical POUs, the workbench displays an error symbol ( ) below elements having
errors in the programming logic. Pausing on this symbol displays a description of the error.
To select elements
In the workspace, you can select individual or multiple elements within a language container.
Selected elements are displayed with a colored handles. When selecting multiple elements, the
handles of the first element are green and subsequent elements are turquoise.
When aligning multiple elements, the reference point differs depending on the programming
language.
To insert elements
You can insert elements of a given language into its corresponding language container within
the workspace.
From the Toolbox, drag the element into the language container.
To insert an identifier
You can insert identifiers, i.e., variables, from the Dictionary. You can also create new
variables, enter literal values into a POU, and access the parameters of functions or function
blocks. When creating a new variable, you need to assign a unique name, specify its type, and
define its scope in relation to the POU.
When inserting identifiers, you can choose to insert a constant or variable automatically via the
Variable Selector.
1. From the Toolbox, drag the variable element into the language container.
2. From the Variable Selector, perform one of the following, and then click OK.:
In the Name field, type a literal value.
When inserting literal values that begin with a letter or an underscore, enclose the
variable name in single quotes as follows: 'abc'
Select the required variable from the lists of variables.
AADvance Workbench 9
To insert a block
You insert blocks into language containers of graphical programs from the Toolbox. Following
insertion, you specify the type of block, i.e., operator, function, or function block, in the Block
Selector accessed by double-clicking the block. For programs, the available items are operators
(OPE), standard functions (SFU), standard function blocks (SFB), user IEC 61131-3
Functions (IFU), user IEC 61131-3 Function Blocks (IFB) and all "C" Functions (CFU) and
Function Blocks (CFB) supported by the target attached to the current controller. From the
Toolbox, drag the block element into the language container.
1. In the Block Selector, in the list of blocks, locate the required block.
2. To limit the blocks displayed, you can sort the block list and filter the block list.
3. From the list of available blocks, select a block, and then click OK.
To resize an element
When developing POUs using certain graphical programming languages, you can change the
dimensions of specific individual elements.
2. Place the cursor over the element handles, then click and drag to the required size.
You can delete one or more elements from a language container. Deleting a variable element
does not remove the variable from the dictionary.
In the language container, select one or more elements, then do one of the following:
Right-click the selection, and then click Delete.
Press DELETE.
AADvance Workbench 11
12 AADvance 2.1 - Language Editor
Block Library
The block library provides a graphical view of all operators, functions, and function blocks
available for the POUs of a project. When developing POUs, you can drag and drop blocks
from the library to the language container. You can sort blocks displayed in the library
according to alphabetical order, categories, or scope as well as limit a search based on names.
You can also display the blocks in either tile or list views.
The following types of blocks may be available from the block library:
Standard operators
Standard functions
Standard blocks
AADvance Workbench 13
Library blocks (a scope for each library dependency)
Target-specific C blocks
The block library displays the blocks applicable to the project template and target.
Note: The block library can also be accessed using the keyboard shortcut Ctrl+Alt+T.
In the block library, locate the required block, then click and hold the mouse on the block
while dragging to the destination in the POU container.
Right-click in the block library window, and then for each sort group click one of the
following:
Category or Scope
List View or Tree View
Expander display mode or Tabs display mode
You can perform searches for blocks by entering any part a block name. As you type text
in the library search field, the library displays only the blocks containing these characters.
In the field in the block library window, type the required text.
To limit searches
You can perform searches for blocks by entering any part of a block name. As you type text in
the library search field, the library displays only the blocks containing these characters.
In the search field of the block library window, type the required text.
The version control automatically checks in elements to the version control repository upon
performing the following operations:
Creating a project
Updating targets
Such automatic check-ins ensure that the code located on a target always has a corresponding
version stored in the version control repository. When a user performs one of these operations
for a project or an element while others also have elements checked out, the user performing
the operation steals the locks from the other users. Modifications performed on such elements
by the original lock holder are no longer available for committing.
When modifying elements, you automatically check out elements then check in these
modifications.
From the repository, you check out elements for exclusive access when making modifications.
Also, upon modifying checked-in elements, these elements become checked out for your
exclusive access. Afterwards, you can check in modifications performed on these elements into
the repository. When checking in elements, you can choose to recursively check in all
sub-elements to the repository.
When deleting, renaming, and adding elements, you check out the parent of that element.
Element Parent
Program, Function, Controller, Library
Function Block
AADvance Workbench 15
Controller Project
Library Project
When retrieving, i.e., updating, a Workbench element from the repository, you can choose to
update this element to the latest version or any specific version previously checked in to the
repository. When getting the latest version, you can recursively replace all sub-elements from
the repository. When retrieving a specific version from the version control history, the local
element and its sub-elements revert to those from the version control. For controllers having
been renamed, you must retrieve the required version from the controller history; you cannot
retrieve the required controller version from the project history.
Note: When a controller has been renamed, you must execute the View History command on
the most recent version of the controller.
From the Application View, you can view the version control status for all elements. From the
Communication View and Equipment View, you can view the version control status for
projects and controllers.
Available element where local version is the same as the version in the
repository
Available element where local version differs from the modified version in the
repository
Available element where locally modified version differs from the version in
the repository
Locked element currently checked out by another user where local version is
the same as the version in the repository
Locked element currently checked out by another user where local version
differs from the modified version in the repository
Locked element currently checked out by another user where locally modified
version differs from the version in the repository
Checked out element where local version is the same as the version in the
repository
Checked out element where locally modified version differs from the version
in the repository
New element not yet checked in to the repository
Defining a Repository
Labeling a Version
Publishing Libraries
AADvance Workbench 17
Defining a Repository
AADvance uses a repository where it stores version control files containing the history for
projects and elements. You can choose to define a repository at any local or server (URI)
location. AADvance creates all necessary files in which to store the changes for projects and
elements for the repository. The default installation for the repository is the following:
When opening projects, the available projects are those from the current repository.
The information stored in a repository does not include customizations to the workbench
options.
To define a repository
1. From the File menu, point to Version Control, and then click Select Repository.
2. In the Select Repository dialog box, enter the path for the repository or browse for the
repository folder location.
When creating a project, all elements are automatically checked in to the repository.
When checking in elements having sub-elements, you can perform a recursive check in which
includes checking in sub-elements. You can also choose to keep elements checked out
following a check-in. When performing recursive operations, elements locked, i. e, checked
out, by other users are not modified.
Warning: When deleting or renaming elements, you need to check in these modifications.
Otherwise, subsequent deleting and renaming is no longer available.
From the Application View, you can perform version control operations for all elements. From
the Communication View and Equipment View, you can perform version control operations
for projects and controllers.
You can check in projects or elements that have been checked out from a repository. When
checking in projects, the necessary files are added to the repository.
1. From the required view, select the project or element to check in to the repository.
2. From the File menu, point to Version Control, and then click Check In.
3. In the Check In dialog box, indicate whether to perform a recursive check in and whether
to keep the elements checked out following the check-in, and then click OK.
The elements are saved in the repository and are displayed with the checked in icon in the
Application View.
You can add new elements to a repository. Elements available for checking in to a repository
are displayed with a blue asterisk in the Application View.
AADvance Workbench 19
1. From the required view, select the element to add to the repository.
2. From the File menu, point to Version Control, and then click Check In.
3. In the Check In dialog box, indicate whether to perform a recursive check in and whether
to keep the elements checked out following the check-in, and then click OK.
The elements are saved in the repository and are displayed with the checked in icon in the
Application View.
When creating a project, all elements are automatically checked in to the repository.
When checking out elements having sub-elements, you can perform a recursive check out
which includes checking out sub-elements. When performing recursive operations, elements
locked, i. e, checked out, by other users are not modified.
From the Application View, you can perform version control operations for all elements. From
the Communication View and Equipment View, you can perform version control operations
for projects and controllers.
1. From the Application View, select the project or element to check out from the repository.
2. From the File menu, point to Version Control, and then click Check Out.
3. In the Check Out dialog box, indicate whether to perform a recursive check out including
all sub-elements, and then click OK.
The elements are checked out from the repository and are displayed with the unlocked icon in
the Application View.
AADvance Workbench 21
Undoing Check Outs of Elements
You can undo check outs of projects, libraries, controllers, programs, functions, and function
blocks from a repository. Undoing a check out undoes all changes to the elements definitions
since these were checked out. The elements are no longer checked out, but instead of updating
the repository with the edited version, Undo Check Out reverts to the local version to the latest
version from the repository.
When performing recursive operations, elements locked, i. e, checked out, by other users are
not modified.
From the Application View, you can perform version control operations for all elements. From
the Communication View and Equipment View, you can perform version control operations
for projects and controllers.
1. From the required view, select the project or element for which to undo the check out
from the repository.
2. From the File menu, point to Version Control, and then click Undo Check Out.
3. In the Undo Check Out dialog box, indicate whether to perform a recursive undo check
out including all sub-elements, and then click OK.
The elements are replaced in the repository and are displayed with the checked in icon in the
Application View.
Undo check outs for all checked out and locally modified elements
Files for pending checkins can have the following action types: locked, deleted, modified,
added, and renamed.
When performing check ins and check outs, you can choose to keep files checked out.
1. In the Pending Checkins window, select the elements to check in to the repository.
1. In the Pending Checkins window, select the elements for which to undo check outs.
AADvance Workbench 23
Getting the Latest Versions of Elements
You can get the latest version for elements such as projects, libraries, controllers, programs,
functions, and function blocks. When getting the latest version, you can recursively replace all
sub-elements from the repository. When performing recursive operations, elements locked, i.
e, checked out, by other users are not modified.
From the Application View, you can perform version control operations for all elements. From
the Communication View and Equipment View, you can perform version control operations
for projects and controllers.
1. From the required view, select the element for which to get the latest version from the
repository.
2. From the File menu, point to Version Control, and then click Get Latest Version.
3. In the Get Latest dialog box, indicate whether to perform a recursive get latest version
including all sub-elements and whether to keep or replace locally modified elements, and
then click OK.
From the Application View, you can perform version control operations for all elements. From
the Communication View and Equipment View, you can perform version control operations
for projects and controllers.
1. From the required view, select the project or element for which to apply a label.
2. From the File menu, point to Version Control, and then click Label.
3. In the Add Label dialog box, enter the text to display as the label in the version control
history, and then click OK.
AADvance Workbench 25
Archiving and Restoring Repository Projects
You can archive projects contained in a repository and you can restore projects that were
previously archived. Archiving a repository project means compressing the content of a project
into a *.vsc file. You can either archive the complete version of a project, including the
modification history and all comments, or you can archive the latest version of a project
checked into a repository. You can then restore the archived file in another repository. The
archived file can then be restored in another repository. Note that performing updates or
connecting to controllers is unavailable after restoring a project archived at the latest version.
Note: To reduce the time taken to perform archive and restore operations, have a different
repository folder for each project.
You can restore projects archived with the AADvance 2.1 Workbench. Projects archived from
the AADvance 2.1 Workbench cannot be restored in AADvance 1.X or 2.0 Workbench
versions.
From the Application View, you can perform version control operations for all elements. From
the Communication View and Equipment View, you can perform version control operations
for projects and controllers.
Note: Before archiving a project at the latest version, you are recommended to label the version
of the project, ensuring the version control history displays the expected description after
project restoration.
2. From the File menu, point to Version Control, and then click Archive.
3. In the Archive Project dialog box, indicate whether to archive the complete project
history or the latest version, and then click Archive.
4. In the Save As dialog box, specify a name and storage location for the archive file, and
then click Save.
The default name and storage location for archive files is the project name and folder.
2. In the New Project dialog box, in the Project Types list, click Restore.
3. In the Templates list, click the Restore Project from an Archive template, and then click
Browse.
4. In the Select Archive File dialog box, locate the project archive, and then click Open.
The default name and storage location for archive files is the project name and folder.
AADvance Workbench 27
Accessing Repository Projects
While working with the AADvance Workbench, you need to access projects stored in a
repository. When multiple computers need to access the same project, you are recommended
to use a repository located in a shared folder. This preferred method enables different users to
check out and modify the project while ensuring a complete modification history. Only one
user can check out a project element at any given time.
When only using a locally stored repository, you may need to transfer the storage location of
the repository to another computer. Transferring a repository also transfers all of the projects
contained within the repository folder. Needing to transfer the storage location of the repository
occurs when upgrading to a new computer or permanently changing workstation. You should
only keep one instance of the repository folder.
When needing to access a specific project on a computer other than the one storing the local
repository folder, you are recommended to archive your project and then restore the *.vsc file
in the local repository folder of the other computer. Note that the modification history is
retained when restoring the project.
Warning: You cannot open a project having the same name as a project saved in the
projects directory; you must delete the local copy before opening the project.
1. In the Workbench, from the File menu, point to Version Control, and then click Select
Repository.
2. In the Select Repository dialog box, click Browse to locate the shared folder, and then
click OK.
3. For all required computers, ensure the Workbench uses the repository located in the
shared folder.
Warning: You cannot open a project having the same name as a project saved in the
projects directory; you must delete the local copy before opening the project.
2. On the other computer, open the Workbench and then from the File menu, point to
Version Control, and then click Select Repository.
3. In the Select Repository dialog box, click Browse to locate the transferred repository
folder, and then click OK.
Warning: You cannot restore a project having the same name as a project saved in the
projects directory; you must delete the local copy before restoring the project. If the project
is already stored in the repository, you should restore the project in another repository
folder. Replacing the project currently stored in the repository folder may corrupt the
project.
1. From the Application View, right-click the project, point to Version Control, and then
click Archive.
2. In the Archive Project dialog box, select the Complete archive mode, and then click
Archive.
3. In the Save As dialog box, specify a name and storage location for the archive file, and
then click Save.
5. On the other computer, open the Workbench and then from the File menu, click New
Project.
6. In the New Project dialog box, in the Project Types list, click Restore.
7. In the Templates list, click the Restore Project from an Archive template, and then click
Browse.
8. In the Select Archive File dialog box, locate the project archive, and then click Open.
The project is checked into to the repository located on the other computer.
AADvance Workbench 29
Publishing Libraries
Publishing libraries makes these available from the repository for use in other projects. You
can only publish a library after checking in the library. You publish libraries that you create in
projects.
To publish a library
When publishing a library, AADvance places a copy of the library in the repository.
2. From the File menu, point to Version Control, and then click Check In.
3. In the Check In dialog box, select whether to keep the library checked out, and then click
OK.
5. In the Publish dialog box, enter a name, version, and comment for the library, and then
click Publish.
1. When a local working copy becomes disconnected from the repository, the workbench
displays a message informing you of the disconnection from the repository.
2. When unable to reestablish the connection, you can choose to work offline with the local
file by creating a temporary local repository:
b) To set a local folder to a new or existing repository, from the File menu, point to
Version Control, and then click Select Repository.
c) To point to the previously saved project, from the File menu, click New Project, and
from the New Project dialog box import the required project.
Warning: Downloading this local copy prevents other team members from connecting to the
respective controller. Also, the history for the local file is not transferred to the temporary local
repository.
3. When the connection is restored with the original repository, return your local working
copy to the original repository:
a) For each element to merge back, save the element as its original name in the original
repository.
The element is saved as a *.pxf file.
AADvance Workbench 31
b) Open the original project file, and then import the element *.pxf file.
Warning: When checking in elements that were modified locally, you may overwrite
modifications other users performed for the element.
4. To enable connecting to the physical controllers, download the most current code to the
required controllers.
When viewing the history of an element, a list displays all available versions of the element
with their assigned version numbers. Each version entry includes the date, the user, the action,
and a description from the check-in.
Note: When a controller has been renamed, you must execute the View History command on
the most recent version of the controller.
When viewing the history of elements, you can perform the following tasks:
You can retrieve specific versions for elements such as projects, libraries, controllers,
programs, functions, and function blocks. When retrieving a specific version from the version
control history, the local element and its sub-elements revert to those from the version control.
1. From the Application View, select the element for which to get the latest version from the
repository.
2. From the File menu, point to Version Control, and then click View History.
3. In the Version History dialog box, select the required version from the list of available
versions, and then click Get Version.
To update the list of displayed versions available for an element, click Refresh.
AADvance Workbench 33
To clear the list of versions for an element
When clearing the list of versions for an element, the history for the element remains in the
repository. Therefore, subsequently retrieving the history for the element produces the versions
listed prior to clearing the list.
You can refresh the control status of icons displayed in the different views using menu options
or the Refresh button located at the top of the views.
From the required view, right-click any element in the structure, point to Version
Control, and then click Refresh Status.
The Application View displays the current version control status for all elements.
From the required view, right-click any element in the structure, point to Version
Control, and then click Refresh Status.
The Application View displays the current version control status for all elements.
AADvance Workbench 35
36 AADvance 2.1 - Version Control
Controller Status
You can access real-time status information for all controllers in a project. The available
information is the following:
AADvance Workbench 37
Locked By Name of the Workbench user that applied read-only
mode to the controller.
Password Protected Indication that the controller is password-protected.
True indicates a password-protected controller.
When viewing the Controller Status, the Name column displays icons that indicate the
connection status of the controllers.
The front panel of the T9110 processor module displays the following status indicators:
Note: The Healthy LED briefly flashes RED while booting up after
installation or when a reset is in progress.
GREEN During installation, the Healthy LED briefly flashes RED when
receiving power, and then turns GREEN as the module boots up. The
LED remains GREEN indicating the module is operational and
contains no hardware faults.
When in recovery mode and no faults are present, the LED is GREEN.
Note: If the Healthy LED is GREEN and all other status indicators are
OFF, the module has failed to boot up.
If the Healthy LED is GREEN and the Ready and Run LEDs are RED,
the module is in the shutdown state.
AADvance Workbench 39
Indicator Status Description
Ready Indicates the education and synchronization status of the module.
OFF No power
RED The modules is booting up, not educated, or not synchronized with
partners.
GREEN The module is educated and synchronized.
FLASHI Education or synchronization of the module is in progress.
NG
GREEN
AMBER The module is in recovery mode.
Run Indicates the application status of the module. The application status
should be identical for all educated and synchronized processors.
OFF No power. The LED also remains OFF while the module boots up.
RED The module is not educated, not synchronized, or no application is
loaded. The LED is also RED when the processor module is in
recovery mode and the base-level firmware is running.
GREEN The application is running.
AMBER The module is in recovery mode or the application data may be present
but not running; press Fault Reset to run the application.
System Indicates the global health of the system, including all processors and
Healthy I/O modules. All educated and synchronized processors must indicate
the same status.
OFF No power. The LED also remains OFF while the module boots up.
RED System or module faults are present. The LED is also RED when the
application stops running due to the module being in recovery mode.
GREEN No system or module faults are present during normal operations or
when in recovery mode.
AADvance Workbench 41
42 AADvance 2.1 - Controller Status
Variable Dependencies
You can view the dependencies of a variable in both ascending and descending directions.
Ascending dependencies display the variables affecting the variable while descending
dependencies display the variables affected by the variable. These dependencies are displayed
as structures leading to the right for ascending dependencies and to the left for descending
dependencies. When viewing the dependencies of a variable, the variable identification
indicates its source: ProjectName.ControllerName.VariableName.
You can view dependencies of variables while editing or connected. While connected, you can
monitor and force the values of variables from the dependencies.
The following example shows the dependencies of the Alarm_Memo variable where the
variables on the right, ascending, affect its value while the variable affects the values of the
variables to the left, descending.
When viewing the dependencies of a variable, you can perform the following tasks:
Furthermore, you can also force the values of variables while connected.
AADvance Workbench 43
To display the dependencies of a variable
You can access the dependencies of variables from graphic programs or dictionary instances.
Note: Before accessing the dependencies of variables, you need to generate the cross
references for a project.
From a graphic program or a dictionary instance, right-click the variable, and then click
Dependencies.
You can display the dependencies of variables from the ascending or descending structures.
From the dependencies structure for a variable, double-click the variable from the
ascending or descending structure for which to display the dependencies.
The dependencies structure for the selected variable is displayed in another window.
You can add variables from dependencies structures to the Spy List.
From the dependencies structure for a variable, right-click the variable to add to the Spy
List, and then click Add to Spy List.
You can force, i.e., write, the value of a variable from the ascending or descending structures.
1. From the dependencies structure for a variable, right-click the variable for which to force
the value, and then click Write Variable.
2. In the Write Logical Value dialog box, type the value for the variable.
The variable displays the written value within the dependencies structure.
You can access the dictionary instance containing a variable for variables displayed in
dependencies structures.
From the dependencies structure for a variable, right-click the variable for which to
access the dictionary instance, and then click Variables.
You can adjust the magnification factor for individual dependencies windows.
From the dependencies window for a variable, slide the zoom scale to the required
magnification factor.
AADvance Workbench 45
46 AADvance 2.1 - Variable Dependencies
Properties Window
The Properties window enables viewing and editing the properties of items selected within
language containers and the Application View. You can also use the Properties window to view
and edit file, and project properties. You can view the common properties for multiple objects
and elements. When selecting multiple objects, the Properties window displays only the
properties that are common to all the objects and elements.
In the Properties window, properties are organized into categories displayed alphabetically.
You can expand the categories to view the property information including property names and
values. Note that properties displayed in gray are read-only.
You edit property values using the plain text fields and drop-down combo-boxes provided.
Where required, links to custom editors or dialogs are displayed in the property value fields.
Not applicable
AADvance Workbench 47
48 AADvance 2.1 - Properties Window
Locked Variables Viewer
The Locked Variables window enables unlocking locked variables while an application is
connected. This window lists all locked variables and their source throughout an application.
When viewing locked variables, the variable identification indicates its source:
ProjectName.ControllerName.ControllerName.VariableName.
From the Locked Variables window, you can perform the following tasks:
Find variables within the list of locked variables based on any part of their source name
You can only access the Locked Variables window while an application is connected. The
viewer lists all locked variables throughout the application.
From the Online menu, point to Windows, and then click Locked Variables.
You can perform searches based on any part of the variable identification displayed in the
Locked Variables window such as the complete or partial variable, controller, or project name.
AADvance Workbench 49
In the search field, enter text contained in the identification of the required variable, then
do one of the following:
You can unlock one or more variables from the list of locked variables.
In the list of locked variables, select the variables to unlock or click to select all the
The toolbox displays icons for elements that you can add to POUs. When shifting focus to a
different program, the current selection in the toolbox shifts to the tab for the corresponding
programming language. You can manipulate the toolbox in the following ways:
You can customize the toolbox by rearranging elements within a tab or adding custom tabs and
elements. You can manipulate toolbox tabs in the following ways:
You can insert elements in language containers displayed in the integrated development
environment (IDE). This action adds the fundamental code to create an instance of the toolbox
element in the active program file. You can manipulate toolbox elements in the following
ways:
AADvance Workbench 51
To search elements in the toolbox
In the search field of the toolbox, enter text contained in the element to locate.
The toolbox displays only the elements containing the specified text.
Click the blank right-pointing arrow next to the name of the collapsed toolbox tab.
Click the darkened down-pointing arrow next to the name of the expanded toolbox tab.
You can move toolbox tabs within the toolbox by performing one of the following:
Right-click on the name of the tab, and then click Move Down or Move Up.
1. From the Toolbox, right-click the required tab, and then click Rename Tab.
2. In the space provided, type a name for the tab, and then press ENTER.
When adding tabs, these are displayed at the bottom of the toolbox. You can reposition and add
elements to tabs.
1. From the Toolbox, right-click any tab, and then click Add Tab.
2. On the blank tab, in the space provided, type a name for the tab, and then press ENTER.
When removing custom tabs, move the elements to retain to other tabs before you delete the
custom tabs.
1. From the Toolbox, right-click the tab to remove, and then click Delete Tab.
When elements remain on the tab, a message box informs you that those elements will be
deleted.
To rename an element
1. In the toolbox, right-click the required element, and then click Rename Item.
2. In the space provided, type a name for the element, and then press ENTER.
To rearrange elements
In the toolbox, select the required element and perform one of the following:
AADvance Workbench 53
Right-click on the element, then click Move Down or Move Up.
Drag the element to the required position.
In the toolbox, select the required element and perform one of the following:
Drag the required element onto another tab.
Right-click the element and click Cut or Copy, then right-click the required tab and
click Paste.
To remove an element
Note that certain elements cannot be removed, such as the Pointer element.
In the toolbox, right-click the required element, and then click Delete.
Warning: Make sure to read this section attentively before using the Variable Selector.
The main purpose of the selector is to select variables for use in POUs or mapping variables
for the communication protocols. The preferred method to create variables is from dictionary
instances.
When working with the Variable Selector, the following features enable performing many
tasks:
Grid filtering fields, limits the variables displayed in the variables grid by typing
alphanumeric characters in the Name field.
Scope tabs, indicates the scope for the variables to display in the variables grid. For
POUs, the available scopes are local, global, system variables, directly represented
variables, and defined words. When mapping variables for communication protocols, the
available scopes are either local and global, or only global.
Grid column headers, sorts the contents of the grid in ascending or descending
alphanumerical order according to the individual attributes.
AADvance Workbench 55
Column filtering cells, filters the contents of the grid by typing specific alphanumerical
characters contained in the variables to display or clicking the down arrow to display the
available grouping options from a drop-down list. You can also perform filtering other
than the default “starts with” operation by clicking the rightmost icon in the filtering cell.
Variables grid, contains the variables defined for the selected scope.
Available definition row, enables the definition of the attributes for a new variable.
When working in the Variable Selector, you can navigate using keyboard and mouse controls.
Arrow keys Enable moving up, down, left, and right among the cells of the list of
variables. Also enables moving left and right among the tabs.
Tab key Enables moving from left to right between the fields, tab, and list of
variables. Within the list, enables moving left to right between cells of a row.
After exiting the list of variables, enables moving between the command
buttons and back to the fields.
Esc key Enables closing the Variable Selector without selecting a variable.
Enter key Enables closing the Variable Selector and displaying the selected variable in
the workspace.
To select a variable
The Variable Selector is displayed listing the available variables in the variables grid.
2. To sort the variables listed in the variables grid, click the column heading of the attribute
for which to toggle between ascending and descending alphanumeric order.
4. Locate the required variable by scrolling down the list of variables displayed in the grid.
5. Select the variable by clicking anywhere in the row, and then click OK.
You can add a variable defined in the variable selector to existing variable groups.
In the variable grid, right-click the variable, point to Add to Variable Group, then click
the required group.
AADvance Workbench 57
The variable is added to the group.
From the Variable Selector, you can also perform the following actions:
AADvance Workbench 59
Creating Variables from the Variable Selector
Warning: The preferred method to create variables is from dictionary instances to avoid
potential mistakes such as inserting a variable in an unintended scope.
When creating variables from the Variable Selector, you define the variables in the variables
grid where you specify values for all variable attributes. In the grid, you create a variable by
providing the required information in the cells of the available definition row (having an
asterisk). A quick declaration feature enables creating multiple variables having the same
prefix, suffix (optional), numbering range, data type, direction, and string length (string data
types only).
2. In the variables grid, locate the available definition row (having the asterisk), define the
required attributes, and then press ENTER.
You can create multiple variables having the same prefix, suffix, data type, and continuous
numbering definition. You create multiple variables from the grid area in the Variable Selector.
2. Create multiple variables having the same prefix, suffix, data type, and continuous
numbering definition:
a) In the grid area, locate the available definition row (having the asterisk), right-click
in the Name cell, and then click Quick Declaration.
AADvance Workbench 61
b) In the Quick Declaration dialog box, specify the numbering range, a prefix, a suffix
(optional), the data type, the direction, and the string length (if applicable), and then
click OK.
The numbering range indicates the number of variables to create, i.e., a range of 0 to 9
creates ten variables. When using the quick declaration method for creating variables, the
consecutive variables shall have the same prefix followed by the starting range number,
and optionally finishing with the same suffix.
You can insert literal values when using the Variable Selector. When inserting literal values
beginning with a letter or an underscore, enclose the variable name in single quotes as follows:
'abc'
2. In the Name field, type the literal value, and then click OK.
AADvance Workbench 63
Editing Variables from the Variable Selector
Warning: The preferred method to edit variables is from dictionary instances to avoid
potential mistakes such as editing a variable from an unintended scope.
To edit a variable
2. In the variables grid, locate the variable to edit, modify the required attribute cells for the
variable, and then press ENTER.
Warning: The preferred method to delete variables is from dictionary instances to avoid
potential mistakes such as editing a variable from an unintended scope.
Deleting variables from the Variable Selector also removes these variables from the Dictionary
instance for the program or controller.
To delete a variable
2. In the variables grid, right-click the variable to delete, and then click Delete.
AADvance Workbench 65
66 AADvance 2.1 - Variable Selector
Block Selector
The Block Selector enables the selection of operators, functions, and function blocks for use in
block elements defined in programs. For FBD 61131 programs, you enter blocks and declared
instances.
The Block Selector lists the available operators, functions, and function blocks for
IEC 61131-3 programs. For IEC 61131-3 programs, the available items are operators (OPE),
standard functions (SFU), standard function blocks (SFB), user IEC 61131-3 Functions (IFU),
user IEC 61131-3 Function Blocks (IFB) and all "C" Functions (CFU) and “C” Function
Blocks (CFB) supported by the target attached to the current controller.
AADvance Workbench 67
Column Description
Name Name of the function, function block, or operator
Type Type of function, function block, or operator. Possible types are
"C" function (CFU), "C" function block (CFB) , IEC 61131-3 function
(IFU), IEC 61131-3 function block (IFB), operator (OPE), standard
function block (SFB), and standard function (SFU).
Category Category of function, function block, or operator. Possible categories vary
depending on the target definition.
Comment Comment for the function, function block, or operator. Free-format text.
Scope Indicates where the POU is defined.
When selecting operators such as addition, multiplication, and AND, you need to specify the
number of inputs.
Using the Block Selector, you can refine the list of available blocks by sorting the block list
and limiting searches. You can also choose to display the parameters while viewing the blocks.
When working in the Block Selector, you can navigate using keyboard and mouse controls.
Arrow keys Enable moving up, down, left, and right within the cells of the blocks list
Tab key Enables moving left and right within the cells of each row in the blocks list.
After exiting the blocks list, enables moving from left to right between the
fields, option, command buttons and back to the blocks list.
Esc key Enables moving from the blocks list to the fields
Space bar When the Show Parameters option is selected, opens the Parameters Display.
Enter key Enables closing the Block Selector and displaying the chosen block in the
workspace.
From the Block Selector, you can access help for the displayed operators, functions, and
function blocks.
The Block Selector is available while editing language containers for POUs and displays only
the operators, functions, and function blocks available to the POU.
Declared instances are function blocks having assigned instances. For graphical and
non-graphical programs, you declare such instances in the Block Selector. These instances are
considered as variables.
1. From the list of available blocks, select the function block type.
2. In the Instance field, type a name for the instance, and then click OK.
You can sort the columns of the block list by setting these in ascending or descending order.
Click the required column header to toggle the sort order between ascending and
descending.
To limit searches
As you type text in the Search field, the list displays only the blocks containing these
characters.
In the Search field in of the Block Selector, type the required text.
AADvance Workbench 69
Parameters Display
The parameters display graphically presents the parameters for a POU selected in the Block
Selector. When selecting a POU from the block list, the parameters display automatically
shows the local, input, and output parameters. You can expand all or collapse all parameters
for POUs.
You can expand or collapse all input and output parameters for user-defined functions and
function blocks.
1. In the block list, select the required block for which to display the existing parameters.
2. To expand all parameters, right-click in the parameters display, and then click Expand
All.
3. To collapse all parameters, right-click in the parameters display, and then click Collapse
All.
You can perform the following tasks from the parameter view:
AADvance Workbench 71
In the Parameters view, you can define the properties of parameters and local variables:
Column Description
Name Name of the parameter
Alias The short name used in the graphical language editors for display only.
Limited to four characters.
Data Type Data type of the parameter
Dimension For function blocks, dimension of the block. The dimension is defined as
a positive double integer (DINT) value.
Attribute Property of a parameter indicating its read and write access rights.
Possible values are Read, Write, or ReadWrite.
Comment Comment for the parameter. Free-format text.
Initial Value Value held by a variable when the virtual machine starts the execution of
the controller.
You can modify the parameters for functions and function blocks. User-defined functions are
limited to one output parameter having a modifiable data type.
You access the parameters view when defining parameters for user-defined functions and
function blocks.
1. From the Application View, create a user-defined function or function block in the
respective section.
You create parameters for a currently opened user-defined function or function block.
Functions can only have one output.
1. In the Application View, right-click the required function or function block, and then
click Parameters.
3. To add an output parameter to a function block, click New Output, then define the
properties for the parameter.
4. To add a local variable, click New Variable, then define the properties for the variable.
You edit parameters and local variables for a currently opened user-defined function or
function block.
1. In the Application View, right-click the required function or function block, and then
click Parameters.
3. To edit a local variable, select the variable, then modify its properties.
You delete parameters and local variables for a currently opened user-defined function or
function block.
1. In the Application View, right-click the required function or function block, and then
click Parameters.
2. Select the parameter or local variable to delete, right-click and then click Delete.
You can cut, copy, and paste parameters and local variables for a currently opened user-defined
function or function block.
1. In the parameters view for a user-defined function or function block, cut or copy the
required parameter or local variable:
AADvance Workbench 73
To remove the parameter or local variable, select the item, then right-click and then
click Cut.
To copy the parameter or local variable, select the item, then right-click and then
click Copy.
2. To paste a copied parameter or local variable, right-click in the parameters view and then
click Paste.
Duplicated parameters or local variables are automatically placed in their respective area,
i.e., input, output, or variable.
You can expand and collapse the display of data types for all parameters and local variables of
a currently opened user-defined function or function block.
Quick Find
Quick Replace
AADvance Workbench 75
Quick Find
You can find strings or expressions in files using the Quick Find utility. Quick Find steps from
one search result to the next in sequence, either backwards or forwards from the insertion point.
Upon reaching the end or beginning of a document, Quick Find automatically jumps to
unsearched sections. When the search is complete, a message is displayed.
When all search options are defined, you can choose to find the next instances of the required
string or expression within the specified scope.
Find What, enables defining the string or expression to find within the open document.
You can type the required string into the field, select one of the last twenty searches from
the Find What drop-down combo-box, and use wildcards or regular expressions in
searches. When using wildcards or regular expressions, the Expression Builder displays a
list of available wildcards or expressions.
Look in, enables defining the scope for the search. You can select the required scope from
the Look in drop-down combo-box.
Find Options, enables selecting options that refine the search. You can search for case
sensitive matches using Match Case. You can disregard partial word matches by selecting
Match whole word. You can search for matches from the insertion point to the top of the
file by selecting Search up. You can search collapsed or concealed text by selecting
Search hidden text. You can include special characters, such as wildcards or regular
expressions, in the Find What field by selecting Use.
You can perform searches using the Find and Replace utility or you can type the necessary text
in the search field on the toolbar. You can place the cursor in the toolbar search field using the
Ctrl+D keyboard shortcut.
1. From the Edit menu, click Find and Replace, then click Quick Find (or press Ctrl+F).
2. In the Quick Find utility, enter the required information, then click Find Next (or press
F3).
Note: You can also access the Find utility found on the toolbar using the keyboard shortcut
Ctrl+D.
2. From the Use drop-down combo-box, select the required option, either Wildcards or
Regular expressions.
3. In the Find What field, type the required wildcard or regular expression, or click to
select from the list of available wildcards or regular expressions.
AADvance Workbench 77
Quick Replace
You can replace strings or expressions in files using the Quick Replace utility. Quick Replace
steps from one search result to the next in sequence, either backwards or forwards from the
insertion point. Upon reaching the end or beginning of a document, Quick Replace
automatically jumps to unsearched sections. When the search is complete, a message is
displayed.
When all search options are defined, you can choose to find the next instance of the required
string or expression within the specified scope, then replace individual or all instances of
searched items.
Find What, enables defining the string or expression to find within the open document.
You can type the required string or expression in the field, select one of the last twenty
searches from the Find What drop-down combo-box, and use wildcards or regular
expressions in searches. When using wildcards or regular expressions, the Expression
Builder displays a list of available wildcards or expressions.
Replace with, enables defining the string or expression that will replace each match
found. You can type the required string or expression in the field provided, or select one
of the last twenty items entered using the drop-down combo-box. You can delete matches
found by leaving the Replace with field empty. You can use wildcards or regular
expressions in the Replace with field.
Look in, enables defining the scope for the search. You can select the required scope from
the Look in drop-down combo-box.
Find Options, enables selecting options that refine the search. You can search for case
sensitive matches using Match Case. You can disregard partial word matches by selecting
Match whole word. You can search for matches from the insertion point to the top of the
file by selecting Search up. You can search collapsed or concealed text by selecting
Search hidden text. You can include special characters, such as wildcards or regular
expressions, in the Find What field by selecting Use.
From the Edit menu, click Find and Replace, then click Quick Replace (or press Ctrl+H).
1. In the Quick Replace utility, enter the required information, then click one of the
following command buttons: Find Next, Replace, or Replace All.
2. From the Use drop-down combo-box, select the required option, either Wildcards or
Regular expressions.
3. In the Find What or Replace with fields, type the required wildcard or regular expression,
AADvance Workbench 79
80 AADvance 2.1 - Find and Replace Utility
Compiler Verification
The Compiler Verification Tool (CVT) ensures the following:
The compiler output contains only the essential elements of the source code input.
The compilation verification process validates the accuracy of the compilation process by
comparing individual POU STF files with their resulting TIC code. The verification process
starts when the compiler completes the generation of the TIC code from the STF file. The
process consists of converting the STF file to an XML file and disassembling the TIC code
towards another XML file, then comparing both resulting XML files for differences. The
conversion of the STF file and the disassembly of the TIC code is performed by separate
utilities.
Code Generation
Verification Process
To ensure the CVT provides an efficient and accurate analysis of the source TIC code, the
following best practices on keeping the code simple and clear are recommended:
AADvance Workbench 81
82 AADvance 2.1 - Compiler Verification
Best Practice Example
Use simple networks FBD network having a loop:
In FBD, loops can yield
CVT mismatches due to
the execution order. Note
that the compiled
execution is not at fault,
only the CVT
comparison. To avoid
these mismatches, you are
recommended to reassign
variables instead.
Best practice:
AADvance Workbench 83
Best Practice Example
Avoid overlapping loops FBD program having overlapping networks:
In FBD, networks should
be separate from one
another to avoid network
overlapping.
Best practice:
Best practice:
AADvance Workbench 85
Best Practice Example
Avoid using user-defined FBD program with a user-defined function block having no input
function blocks having no or output parameters:
input or output
parameters
To avoid CVT errors as
well as get the correct
execution, each
user-defined function
block must have at least Best practice:
one input.
AADvance Workbench 87
Best Practice Example
Avoid assigning multiple FBD network having multiple levels of variables:
levels of variables in a
network
To avoid CVT
mismatches due to the
execution order, flatten
the variables on a single boolValue3 := boolValue1;
level. boolValue2 := NOT(boolValue1);
boolValue4 := boolValue3;
boolValue5 := boolValue1;
Best practice:
In ST, avoid using the ST statement containing the result of an operation as a parameter
result of an operation as a to a function:
parameter to a function.
dVal := TON_BOOL((realMin > realMax), boolValue);
To prevent safety issues
Best practice:
from occurring, you are
recommended to store the boolParam := (realMin > realMax);
result of the operation in a dVal := TON_BOOL(boolParam, boolValue);
temporary variable.
When managing spy lists, you can perform the following tasks:
AADvance Workbench 89
Column Description Possible Values
Name Name of the variable or function Limited to 128 characters beginning
block instance with a letter or underscore character
followed by letters, digits, and single
underscore characters. These names
cannot have two consecutive underscore
characters.
Alias Any name (for use in LD POUs) Limited to 128 characters beginning
with a letter or underscore character
followed by letters, digits, and single
underscore characters. These cannot
have two consecutive underscore
characters.
Logical Value Available when online. The Input: Locked
displayed value differs depending Output: Updated by the running TIC
on the direction of the variable or code
function block instance. Internal: Locked
Physical Value Available when online. The Input: Updated by the field value
displayed value differs depending Output: Locked
on the direction of the variable or Internal: Updated by the running TIC
function block instance. code
Lock Available when online. The Yes or No
indication of whether the value of
the variable or function block
instance is locked. Locking
operates differently for simple
variables, array and structure
elements, and function block
parameters. For simple variables,
individual variables are locked
directly. For structure and array
elements, locking an element locks
all the elements of the structure or
array.
You can also customize spy lists by arranging the columns to display and setting the display
colors. In the Spy List, you can refine the contents of the grid by grouping items in a list, sorting
items in a list, and filtering items in a list.
Monitoring Refresh Rate The rate at which the values of variables are refreshed in the
spy list, in milliseconds. You can only change the refresh rate
while in edition mode.
Spy List Name Name of the spy list displayed in the spy list title bar and the
menu
When working in the Spy List, you can navigate using the mouse controls and arrow keys to
move up and down the list.
1. From the Online menu, point to Windows, then point to Watch, and then click Create
Spy List.
AADvance Workbench 91
2. To assign a name other than the default name, specify the required name in the Name
field of the spy list window.
From the Online menu, point to Windows, then point to Watch, and then click the
required spy list.
1. From the Debug menu, point to Spy Lists, then click the name of the spy list to remove.
2. In the spy list window, verify the correct name of the spy list to remove, then click .
While editing, simulating, or running an application, you add variables, arrays, structures, and
instances of function blocks individually to a spy list directly, from the dictionary, or from a
language editor.
a) Access the existing spy list from the Debug menu, point to Spy Lists, then click the
required spy list name.
b) In the spy list window, click in the available Name cell and type the specific
alphanumerical characters contained in the name of the item to add to the spy list.
a) Access the dictionary instance containing the item to add to the spy list.
b) In the dictionary instance, right-click the name field for the item to add, point to Add
to Spy List, then click the name of the required spy list from the available lists.
AADvance Workbench 93
3. To add items from a language editor:
a) Access the POU containing the item to add to the spy list.
b) In the language container, right-click the item to add, point to Add to Spy List, then
click the name of the required spy list from the available lists.
While editing, simulating, or running an application, you can delete variables, arrays,
structures, and instances of function blocks from a spy list. When selecting an item, an
indicator arrow is displayed in the leftmost column of the list.
In the spy list, select the item to delete, right-click the selection, and then click Delete.
From the required spy list, click the Close button at the top-left corner of the Spy List
window.
You can cut, copy, and paste variables, arrays, structures, and instances of function blocks
between spy lists. When selecting these items, an indicator arrow is displayed in the leftmost
column of the list.
AADvance Workbench 95
1. In the grid of the required spy list, cut or copy the required items.
To remove variables, select the required item or items, right-click the selection, and
then click Cut.
To copy variables, select the required item or items, right-click the selection, and
then click Copy.
2. In the grid of the required spy list, right-click the required location, and then click Paste.
You can drag variables, arrays, structures, and instances of function blocks from one spy list
to another.
1. Access the spy lists containing the required items and their destination.
2. From the spy list containing the required items, select the items.
3. Drag to the destination, placing it at the required location within the list.
When dragging a column header, arrows indicate the current position of the header.
2. To show or hide a column, right-click on a column header, and then click the required
column name.
You can sort items in a spy list according to the ascending or descending order for the different
columns.
You can filter variables, arrays, structures, and instances of function blocks displayed in a list.
When filtering, you create a view displaying only the entries containing specified characters.
The filter row is the top row of the grid. You can filter variables and function block instances
by typing alphabetical and numerical characters in the cells of the filter row. You can also
select from the drop-down-combo box. Matching variables and function block instances are
automatically displayed.
In the filter row of the Spy List, click the required cell, then do one of the following:
Type the characters to use in the filtering operation
Select the required structure from the drop-down combo box
For spy list variables having a write access value of false, you must restrict access before
forcing the values. For variables having a write access value of true:
From the spy list, double-click the variable's corresponding cell in the Value column, then
in the dialog box, click Write. For boolean variables, click the required boolean value.
AADvance Workbench 97
98 AADvance 2.1 - Spy Lists
Add-in Manager
The Add-in manager enables specifying the loading method of available, i.e., registered,
add-ins. The Add-in manager dialog box lists the available add-ins for which you specify
whether to load at startup or using a command line. The dialog box also displays descriptions
defined for add-ins.
At startup or build time, when add-ins are set to load using command line switches, those
having user interfaces are automatically displayed. Add-ins displaying as toolbar icons or
menu commands are also displayed within the toolbars and menus. When add-ins are set to
load at startup time, you can stop the add-in from loading by pressing and holding SHIFT during
startup. Add-ins having user interfaces remain accessible from toolbars and menus.
For projects containing add-ins, you can avoid errors when moving a project to another
location by updating its paths in the following tag of the respective *.Addin XML file:
<Assembly>C:\MyAddin1.dll</Assembly>
When working in the Add-in Manager dialog box, you can toggle the selection of the loading
options using keyboard shortcuts for a selected add-in: Startup option using ALT+S and
Command Line option using ALT+C.
1. From the Add-In Manager, in the Available Add-ins column, click the check box next to
the add-in name, then perform the following as required:
To load the add-in at startup, click the check-box in the Startup column.
To load the add-in using a command line, click the check-box in the
Command Line column.
2. Click OK.
AADvance Workbench 99
100 AADvance 2.1 - Add-in Manager
External Tools
You can launch external tools and applications by adding items to the Tools menu. You can
also create keyboard shortcuts for external tools added to the Tools menu. Supported file types
include *.exe, *.bat, *.com, *.cmd, and *.pif.
From the External Tools dialog box, you can perform the following tasks:
When specifying a tool for handling arguments, the required argument is immediately
transferred to the tool when the external tool is launched. At this time, you can also choose to
edit required arguments. Upon subsequent startups of the external tool from the Tools menu,
selected arguments are automatically passed to the tool. When Prompt for Arguments is
selected, the Arguments dialog box is displayed.
You can define a working directory for tools or commands. You can also specify additional
arguments when the command is launched.
2. In the External Tools dialog box, in the Title field, type a name for the menu option. To
include a keyboard shortcut, type an ampersand (&) before the letter in the title to use as
shortcut. For example: "My External Tool", the letter "x" is the keyboard shortcut.
3. In the Command field, type the path to the file, or browse for the file by clicking .
4. Select the Use Output window and Close on exit check boxes (optional).
The Use Output window option is only available for .bat and .com files.
When the specified tool is launched, the required argument is immediately transferred to the
tool. Selecting the Prompt for Arguments option enables editing the argument at launch time.
2. In the External Tools dialog box, in the Menu contents list, select the required tool.
3. In the Arguments field, type the required arguments, or select a predefined argument by
clicking .
4. Select Prompt for arguments (optional), click Apply, then click OK.
Selecting the Prompt for Arguments option enables adding additional arguments at launch
time.
2. In the External Tools dialog box, in the Menu contents list, select the required tool.
3. In the Initial directory field, enter the working directory for the tool, or select a
4. Select Prompt for arguments (optional), click Apply, then click OK.
Zoom out, provides a larger overview of the contents of an active graphic POU
document, as if viewed from further away
Zoom to fit all, sets the magnification factor to display the contents within the width and
height of an active graphic POU document
Zoom to page width, sets the magnification factor to display the contents within the width
of an active graphic POU document
Zoom percentage factor, enables specifying the magnification factor for the contents of
an active graphic POU document
You can access the zoom options from the Zoom toolbar and from the View menu.
1. Click the active graphic POU document for which to adjust the zoom factor.
Show output from: Enables selecting individual features for which to view
generated status messages
Moves the insertion point to the line in the language editor
Find Message in Code
containing the selected build error
In the Output window, jumps to the previous build error
Go to Previous Message
message. In the code editor, locates the build error and
automatically moves the insertion point to the error.
In the Output window, jumps to the next build error
Go to Next Message message. In the code editor, locates the build error and
automatically moves the insertion point to the error.
In the Output window, deletes all displayed messages.
Clear all
Wraps text to continue on the next line for messages
Toggle Word Wrap
extending beyond the viewing area
You can manage the word wrapping and clear the contents of the window.
From the Error List window, you can navigate from one error to the next using the contextual
menu options. You can also navigate between errors using the keyboard arrows.
Column Description
Category Displays an icon identifying the type of error
Default Order Displays an integer indicating the order in which the error occurred
relative to the other errors
Description Displays the error message text
File Displays the program name or the program location and program name
Line Displays the line number
Column Displays the column number
Project Displays the name of the project
You can sort the contents of the Error List. You can customize the Error List by hiding
columns, resizing columns, and arranging the columns to display.
The Error List window displays only the messages containing the specified text.
2. To modify the width of columns, drag the column dividers to the required location.
Tool windows are available from the View menu. Open document windows are listed in the
Window menu with the top-most window listed first.
For tool windows such as the Application View, Communication View, Equipment View,
Toolbox, and Properties windows, you can choose the following window positions:
Auto hide, the window is reduced to a navigation bar item on the edges of the workspace.
Clicking toggles between showing and reducing the window.
For document windows such as programs, you can choose the following positions:
When omitting to set floating tab wells or tool windows to stay on top of the main window, the
View > All Windows option is available to bring forth such windows that may be hidden
behind the development environment or any other application on the desktop.
1. For a tool window, click the window to display from the View menu.
2. For a document window, double-click the document from the respective view. For
example, you open a program by double-clicking it from the Application View.
2. Drag the window toward the center of the workspace. To move a dockable window
without snapping it into place, press Ctrl while dragging the window.
A guide diamond appears. The four arrows of the diamond point toward the four sides of
the workspace. For tool windows, an additional four arrows point to the four edges of the
Workbench.
3. When the window reaches the docking location, move the pointer over the corresponding
portion of the guide diamond. The shaded area indicates the respective window position.
4. To dock the window in the indicated position, release the mouse button.
5. To return a tool window or document window to its previous position, double-click its
title bar while pressing Ctrl.
When arranging the windows layout, you can auto hide tool windows, display windows as
tabbed documents within one or more tab groups. Tool windows set to auto hiding are reduced
to a navigation bar item on the edges of the Workbench and remain open when closing all
documents. At any time, you can reset the windows layout to the default layout. You can return
a window to its previous position by double-clicking the title bar while pressing Ctrl.
2. To display a window as a tabbed document, click the window and then click Dock as
Tabbed Document on the Window menu.
3. To add a horizontal or vertical tab group for tool windows or document windows:
a) For a horizontal tab group, click a window to add to the new group and then click
New Horizontal Tab Group from the Window menu. The window is displayed in
the new tab group.
b) For a vertical tab group, click a window to add to the new group and then click New
Vertical Tab Group from the Window menu. The window is displayed in the new
tab group.
c) To move subsequent windows to the next tab group, click each window and then
click Move to Next Tab Group from the Window menu.
4. To close a tool window, click the tool window and then click Hide from the Window
menu.
5. To close a document window, click the Close button on the window tab.
6. To close all tool windows and document windows at once, click Close All Documents
from the Window menu. The windows set to auto hide remain open.
7. To bring forth floating tab wells and tool windows hidden behind the main window or
any other application on the desktop, click All Windows from the View menu. This
feature is only available when you clear the Floating tab wells always stay on top of the
main window and Floating tool windows always stay on top of the main window items in
the Tabs and Windows environment options in the Options dialog box.
8. To reset the windows layout to the default layout, click Reset Window Layout from the
Window menu. Click Yes when prompted to confirm the restoration of the windows
default layout.
Options dialog box (available from the Tools menu), where you can search for text
contained in entries of the table of contents
Toolbox, where you can filter the number of displayed elements by entering text
contained in the required elements
Error list, where you can filter the number of displayed messages by entering text
contained in the required messages. Pressing the Esc key returns filtered messages to
their unfiltered results. Pressing the Enter key opens the document containing the source
of a displayed error.
Block library, where you can filter the number of displayed blocks by entering text
contained in the required blocks. For example, a search for "and" results in the display of
the AND, AND_MASK, and RAND standard blocks.
The search results display the information containing the specified text.
From the Windows dialog box, you can perform the following management tasks for active
files:
3. To save changes to active files, select the required files from the list, and then click Save.
4. To close active files, select the required files from the list, and then click Close
Window(s).
To customize a toolbar
The Customize dialog box lists the provided toolbars as well as any custom user toolbars.
2. From the Customize dialog box, click the Toolbars tab, make the required changes, and
then click Close.
To modify the docking location for a toolbar, select the required toolbar from the
Toolbars list, click Modify Selection, then select the preferred location for docking
the toolbar. Available docking locations are top, left, right, and bottom.
To rename a custom toolbar, select the required toolbar from the Toolbars list,
click Modify Selection, and then type the required name in the text field.
To delete a custom toolbar, select the required toolbar from the Toolbars list, and
then click Delete.
The toolbar is removed from the Toolbars list.
2. From the Customize dialog box, click the Toolbars tab, and then click New.
3. In the New Toolbar dialog box, type a name for the custom toolbar, and then click OK.
When customizing menus, the following image shows the different levels and options for menu
items.
Menu Items
Submenu
Commands
3. Select Menu Bar from the Menu bar drop-down combo box.
5. Rename the menu item by clicking Modify Selection, then typing the required name in
the text field.
Menu items are either commands or subcategories leading to submenus. Before adding a menu
item, you need to arrange the required order by selecting the menu item following the location
of the new item in the list or rearranging the menu items after insertion.
3. Select the required menu from the Menu bar, Toolbar, or Context menu drop-down
combo boxes.
The menu item is added to the existing menu category, toolbar, or contextual menu.
5. To rename the menu or command, click Modify Selection, and then type the required
name in the text field.
3. Select the required menu from the Menu bar, Toolbar, or Context menu drop-down
combo boxes.
4. In the Controls list, select the item to delete, and then click Delete.
3. Select the required menu from the Menu bar, Toolbar, or Context menu drop-down
combo boxes.
4. From the Controls list, select the menu item starting the group, click Modify Selection,
and then click Begin a Group.
4. To place the menu item at a different location in the selected menu or toolbar, select the
menu item in the Controls list, and then click Move Up or Move Down to move across
the existing menu items.
Initially, the display options for commands are set to default. In menus, the default display
option is Image and Text, while in toolbars it is Text Only (in Menus). The Text Only (in
Menus) option displays an image in a toolbar or text in a menu. The Text Only (Always) option
displays text in a menu or toolbar. The Image and Text option displays both image and text in
a menu or toolbar. A command may not have an associated image.
3. Select the menu to modify from the Menu bar, Toolbar, or Context menu drop-down
combo boxes.
4. To specify the display options, select the required command in the Controls list,
click Modify Selection, and then select from the following:
Default style
Text Only (Always)
Text Only (in Menus)
Image and Text
2. Select the required option, and then follow the on-screen instructions.
When exporting selected environment settings, you need to choose the settings to export from
the list of available environment settings. Environment settings identified with a warning
symbol are not selected by default since these may contain intellectual property or sensitive
information. Some categories may have sub-categories visible upon expanding the arrows to
the left of the category item.
During the environment settings export process, a dialogue indicates the progress of the
operation. Upon completion of the environment settings export process, a summary page
indicates the results of the operation.
Import Selected Environment Settings
When exporting selected environment settings, you need to specify a settings file in which to
store the exported settings. The default location of this settings file is the following:
%USERPROFILE%\Documents\AADvance 2.1\Settings\AADvance
During the environment settings export process, a window indicates the progress of the
operation.
When importing selected environment settings, you need to choose a file containing the
settings to import, then select the required settings to import from the list of available
environment settings in the file. Environment settings identified with a warning symbol are not
selected by default since these may contain intellectual property or sensitive information. Some
categories may have sub-categories visible upon expanding the arrows to the left of the
category item.
1. Choosing whether to save the current environmental settings or overwriting the current
setting with the settings to import.
3. Selecting the individual settings to import from the list of available environment settings
in the settings file.
During the environment settings import process, a dialogue indicates the progress of the
operation. Upon completion of the environment settings import process, a summary page
indicates the results of the operation.
Export Selected Environment Settings
When importing selected environment settings, you need to choose a file containing the
settings to import.
Choosing Settings to Import
When importing selected environment settings, you can select the required settings to import
from the list of available environment settings contained in the settings file. Environment
settings identified with a warning symbol are not selected by default since these may contain
intellectual property or sensitive information. Some categories may have sub-categories visible
upon expanding the arrows to the left of the category item.
Choosing a Collection of Settings to Import
During the environment settings import process, a window indicates the progress of the
operation.
You can revert the environment settings to the initial settings. When resetting the environment
settings, you can choose whether to save the current environment settings to a file.
During the environment settings reset process, a window indicates the progress of the
operation.
When performing one of the following tasks regarding the environment settings, the wizard
informs you of the results (whether successful or unsuccessful) for the operation.
Accessing Windows
Getting Help
Note: Keyboard shortcuts specific to the programming languages, debugging, and version
source control are indicated on their respective keyboard shortcut pages.
Accessing Windows
Getting Help
Ctrl+mouse wheel Increases and decreases the magnification factor of the contents of
POUs
You can perform searches for entries in the Options table of contents.
In the Search field of the Options dialog box, enter text contained in the entry to locate in
the table of contents.
The Options table of contents displays only the entries containing the specified text.
You can modify the general settings for the workbench by accessing the general environment
options. Some changes to the general settings take effect after restarting the workbench.
Visual experience, indicates the color theme to use in the development environment and
specifies whether the visual experience is set automatically or explicitly. For the color
theme, the possible colors are blue and light. For the visual experience, the adjustment
may change the display of colors from gradients to flat colors, or it may restrict the use of
animations in menus or popup windows. Enabling the full visual experience includes
gradients and animations. Clear this option when using remote desktop connections or
older graphics adapters because these features may have poor performance in such cases.
Use hardware graphics acceleration if available rather than software acceleration.
Window menu, indicates the number of windows (ranging from 1 to 24) displayed in the
Windows list of the Window menu. For the number of items shown in the Window menu,
the default value is 10.
Recently used, indicates the number of recently used files displayed in menus. The items
shown in recently used lists field defines the number of recent projects and files (ranging
from 1 to 24) displayed in the File menu. For the number of items shown in recently used
lists, the default value is 4.
Show status bar, displays the status bar showing progress information for ongoing
operations.
Close button affects active tool window only, enables the Close button to shut down the
active window only. This option is selected by default.
Auto Hide button affects active tool window only, enables Auto Hide to hide the active
window only.
The general environment options are displayed in the Options dialog box.
You can define the display settings for the Find and Replace dialog box. You can choose to
display informational messages and warnings as well as populate the Find What field with text
from an open editor.
To define the display settings for the Find and Replace dialog box
2. In the Options dialog box, expand Environment, then click Find and Replace.
3. In the Options dialog box, select the required options, then click OK.
You can define options for saving settings files. You can choose to save your settings to a
*.vssetting file located on your system or to a shared settings files. When saving settings to a
shared *.vssettings file, you must provide a UNC path or local path to the shared file.
Automatically save my settings to this file, displays the name and path to the *.vssettings
file currently in use. You can change the setting file used by typing a different path or
browsing to locate the required settings file on your system.
Use team settings file, enables navigating to a shared *.vssettings file. You can browse to
locate the required settings file. This *.vssettings file is automatically re-applied to the
workbench following each modification.
2. In the Options dialog box, expand Environment, then click Import and Export
Settings.
3. In the Options dialog box, define the required name and location of the settings file, then
click OK.
The keyboard options enable you to perform many tasks regarding the keyboard shortcuts for
the various commands available in the AADvance environment. You can perform the
following tasks:
Keyboard shortcuts enable quicker operation of the AADvance environment. The keyboard
options enable viewing the defined keyboard shortcuts mapping schemes available for
commands. In AADvance, only the default keyboard shortcut mapping scheme is available.
You view commands in the Show commands containing section listing all available commands
and their respective keyboard shortcuts. In the text field, you can also type text to find a specific
command. By default, only some commands have pre-defined shortcuts. Users can define
(add) a shortcut to a command or modify an existing shortcut by adding a new shortcut and
removing an unwanted shortcut. You manage keyboard combinations from the following
options:.
Apply the following additional keyboard mapping scheme, only the default mapping
scheme is available for AADvance.
Shortcuts for selected command, lists mapped keyboard shortcuts for the command
selected in the Show commands containing list.
Use new shortcut in, specifies the scope of the keyboard shortcut. You can use the
shortcut globally in the AADvance environment or only within a specific context (or
window). The default setting is global, meaning the shortcut key works in any active
window. If a global keyboard shortcut and context specific shortcut are identical, the
context specific shortcut takes precedence. For example, commands having the MLGE
editor scope have precedence over commands having the global scope. A context specific
keyboard shortcut remains in effect only while the context (or window) is active.
Shortcut currently used by, displays the command assigned to the current keyboard
shortcut combination. The textbox is only activated when you assign a key combination
that is already assigned to another command. To replace the current shortcut keyboard
combination with a custom one you must define a new keyboard shortcut mapping
scheme.
3. In the Show commands containing field, scroll to find a command or type the required
command name without spaces. For example, ShowNextStatement.
The shortcuts for the selected command drop-down combo-box displays the required shortcut
key combinations.
3. In the Use new shortcut in drop-down combo-box, select the scope. For example, MLGE.
4. In the Press shortcut keys field, type the new key combination.
1. From the keyboard options, in the Show commands containing field, type the required
command name without spaces. For example, ShowNextStatement.
3. In the Shortcuts for selected command field, select the keyboard shortcut to be removed.
4. Click Remove.
The startup options enable you to specify the Workbench behavior when launching
AADvance:
Open Home Page, where the Workbench automatically displays the AADvance home
page
Load last loaded solution, where the Workbench opens the last opened project
Show Open Project dialog box, where the Workbench automatically displays the Open
Project dialog box
Show New Project dialog box, where the Workbench automatically displays the New
Project dialog box
Show empty environment, where the Workbench opens without displaying any project or
dialog box
You can specify various options for arranging tabs and windows in the development
environment. These options also enable specifying the tool windows mouse-over behavior.
Tab Wells
Insert new tabs to the right of existing tabs, opens document windows as new tabs to the
right of existing tabs on tab wells. The default placing of new tabs on tab wells is to the
left of existing tabs.
Floating tab wells always stay on top of the main window, keeps tab wells set to floating
over or outside the development environment on top of the main window. When omitting
to set floating tab wells to stay on top of the main window, the View > All Windows
menu item is available when the environment includes at least one floating tab well.
Floating tool windows always stay on top of the main window, keeps tool windows set to
floating over or outside the development environment on top of the main window. When
omitting to set floating tool windows to stay on top of the main window, the View > All
Windows menu item is available when the environment includes at least one floating tool
window.
Pinned Tabs
Show pinned tabs in a separate row, places pinned tabs in a row separate from unpinned
tabs.
Show pin button in unpinned tabs, displays and makes available pin buttons in unpinned
tabs.
Maintain pin status if document is removed from well, holds the pinned or unpinned
status for a document tab following manipulations including closing and reopening.
Preview Tab
Tool Windows
Show auto-hidden windows on mouse over, displays tool windows set to auto hide upon
mouse-over.
2. In the Options dialog box, expand Environment, then click Tabs and Windows.
3. In the Options dialog box, select the required options, then click OK.
Project location, User project template location, and User item template location, enable
defining the default path to project folders used in workbench dialog boxes. The Project
location path is used in the Open Project dialog box to define the My Projects location.
The User project template location is used in the New Project dialog box to define the My
templates list. The User item template location is used in the Add New Item dialog box to
define the My Templates list. When defining these default paths, you can type directly in
the field or browse for the required location.
Note: When setting the project location, you need to specify a local path; network paths
may cause unexpected results.
Always show Error List if build finishes with errors, enables opening the Error list
window when errors occur during a build operation. When the build operation is
complete, the Error List is displayed containing the errors generated by the build
operation.
Warn user when the project location is not trusted, displays a warning message when
opening projects from an untrusted location.
Show Output window when build starts, enables displaying the Output window when
starting build operations.
Prompt for symbolic renaming when renaming files, enables displaying a message
prompting you to select whether to rename all references in the project or just the selected
file.
3. In the Options dialog box, type the required paths or click to browse for their
locations, select the required options, then click OK.
You can specify whether a message is displayed before cleaning and rebuilding operations are
executed. After performing cleaning operations, online changes are unavailable.
Proceed to cleaning without asking, enables displaying a message indicating that online
updates become unavailable after performing a cleaning operation.
Proceed to rebuilding without asking, enables displaying a message indicating that online
updates become unavailable after rebuilding.
When monitoring applications, you can choose to display messages prompting you to confirm
the locking or unlocking of variables. You can also specify the number system and number of
significant digits used for displaying of numerical values of the different data types categories.
Prompt for Lock or Unlock, enables the display of messages prompting users to confirm
the locking or unlocking of selected variables.
To enable the display of message prompts when locking and unlocking variables
In the Numerical Display section, set the required values for the different data type categories.
2. In the Options dialog box, expand Block Library Settings, then click General.
In the Options dialog box, select the required display mode from the drop-down menu,
then click OK.
Arrays View
Dictionary View
Parameters Grid
Structures View
2. In the Options dialog box, expand Grid Settings, then click required grid type.
The grid options for the selected grid type are displayed in the Options dialog box.
You can customize the colors displayed in the Arrays grid including column headers and rows.
The Arrays grid automatically alternates colored rows with white rows. You can adjust the
number of consecutive rows used for the alternating sequence. The default row coloring
scheme is one colored row followed by one white row. For colored rows, you can define the
colors displayed. You can also define the color used to indicate disabled rows. You can choose
whether to display the filter bar in the Arrays grid.
2. From the Options dialog box, expand Grid Settings, then click Arrays.
You can customize the colors displayed in the Defined Words grid including column headers
and rows. The Defined Words grid automatically alternates colored rows with white rows. You
can adjust the number of consecutive rows used for the alternating sequence. The default row
coloring scheme is one colored row followed by one white row. For colored rows, you can
define the colors displayed. You can also define the color used to indicate disabled rows. You
can choose whether to display the filter bar in the Defined Words grid.
2. From the Options dialog box, expand Grid Settings, then click Dictionary.
You can customize the colors displayed in Dictionary instances including column headers and
rows. The Dictionary grid automatically alternates colored rows with white rows. You can
adjust the number of consecutive rows used for the alternating sequence. The default row
coloring scheme is one colored row followed by one white row. For colored rows, you can
define the colors displayed. You can also define the color used to indicate disabled rows. You
can choose whether to display the filter bar in the Dictionary.
2. From the Options dialog box, expand Grid Settings, then click Dictionary.
You can customize the colors displayed in Parameters grid including column headers and rows.
The Parameters grid automatically alternates colored rows with white rows. You can adjust the
number of consecutive rows used for the alternating sequence. The default row coloring
scheme is one colored row followed by one white row. For colored rows, you can define the
colors displayed. You can also define the color used to indicate disabled rows. You can choose
whether to display the filter bar in the Parameters grid.
2. From the Options dialog box, expand Grid Settings, then click Parameters.
You can customize the colors displayed in Structures grid including column headers and rows.
The Structures grid automatically alternates colored rows with white rows. You can adjust the
number of consecutive rows used for the alternating sequence. The default row coloring
scheme is one colored row followed by one white row. For colored rows, you can define the
colors displayed. You can also define the color used to indicate disabled rows. You can choose
whether to display the filter bar in the Structures grid.
2. From the Options dialog box, expand Grid Settings, then click Structures.
You can customize the colors displayed in the Variable Groups view including column headers
and rows. The Variable Groups view automatically alternates colored rows with white rows.
You can adjust the number of consecutive rows used for the alternating sequence. The default
row coloring scheme is one colored row followed by one white row. For colored rows, you can
define the colors displayed. You can also define the color used to indicate disabled rows. You
can choose whether to display the filter bar in the Variable Groups view.
2. From the Options dialog box, expand Grid Settings, then click Variable Groups.
You can customize the colors displayed in Variable Selector including column headers and
rows. The Variable Selector automatically alternates colored rows with white rows. You can
adjust the number of consecutive rows used for the alternating sequence. The default row
coloring scheme is one colored row followed by one white row. For colored rows, you can
define the colors displayed. You can also define the color used to indicate disabled rows. You
can define whether the Variable Selector opens with the local or global (controller) variables
tab selected. You can choose whether to display the filter bar in the Variable Selector. You can
also specify whether the Variable Selector opens displaying the local or global variables tab.
2. From the Options dialog box, expand Grid Settings, then click Variable Selector.
You can customize the displayed settings for FBD diagrams. You can choose to display grids
and instance names. You can choose the comment position for variables. You can choose
whether to display instance names for function blocks. You can define the colors used when
displaying FBD elements and text as well as define which variable information is displayed in
FBD diagrams. You can also choose whether to display grid lines inside FBD language
containers.
Block Style
Background Color The function and function block background color. The
possible colors are custom, web, and system colors.
Background Gradient Color The function and function block background gradient color.
The possible colors are custom, web, and system colors.
Cell Width The width for a function or function block, in number of grid
cells.
Display Instance Names The indication of whether to display instance names for
function blocks.
In design mode, go to While in design mode, enables going to the definition on
definition on double click double click.
Transparency The level of transparency. The possible values range from 0 to
255 where 0 indicates complete transparency.
Comment Style
Background Color The comment background color. The possible colors are
custom, web, and system colors.
Constant Style
Background Color - Events The constant background color. The possible colors are
custom, web, and system colors.
Background Gradient Color - The constant background gradient color. The possible colors
Events are custom, web, and system colors.
Cell Width The width for a constant, in number of grid cells.
2. From the Options dialog box, expand IEC Languages, then click Function Block
Diagram (FBD).
3. Using the available options, customize the required settings, then click OK.
You can customize the displayed settings for Ladder diagrams. You can choose to display grids
and instance names. You can define the colors used when displaying LD elements and text as
well as define which variable information is displayed in LD diagrams. You can choose the
width and height for LD elements in the language container.
Block Settings
Display Image The indication of whether to display block images.
Display Instance Names The indication of whether to display instance names for
function blocks.
Enable EN/ENO Forces EN and ENO parameters onto all operators, functions,
and function blocks.
Function Blocks Background The function block background color. The possible colors are
Color custom, web, and system colors.
Function Blocks Background The function block background gradient color. The possible
Gradient Color colors are custom, web, and system colors.
Functions Background Color The function background color. The possible colors are
custom, web, and system colors.
Functions Background The function background gradient color. The possible colors
Gradient Color are custom, web, and system colors.
Go to Definition on While in design mode, enables going to the definition on
Double-click double click.
Operators Background Color The operator background color. The possible colors are
custom, web, and system colors.
Operators Background The operator background gradient color. The possible colors
Gradient Color are custom, web, and system colors.
Container Settings
Cell Height The height of individual cells making up the grid, in pixels.
Cell Width The width of individual cells making up the grid, in pixels.
Display Grid The indication of whether to display the grid.
2. From the Options dialog box, expand IEC Languages, then click Ladder Diagram.
3. Using the available options, customize the required settings, then click OK.
You can customize the displayed settings for SFC diagrams. You can choose the orientation of
the pane splitting when displaying SFC diagram and actions/conditions programming
simultaneously in the language container. You can choose to display grids and sequence
control types as well as diagram background and grid colors for design and online modes. For
action blocks, jumps, and transitions, you can define the background, gradient, and font colors
as well as the font style. For steps, you can define the active and inactive step and step gradient
colors, the font color and style as well as the action list and list gradient colors.
3. Using the available options, customize the required settings, then click OK.
You can define the default display setting for ST elements and text displayed in ST language
containers. You can choose the font used when displaying comments, editor text, identifiers,
numbers, operators, POUs, punctuation, reserved words, and strings. You can choose to
display these in bold, italic, strike-through, or underlined text as well as define their text color
and size.
Comment
Comment Font The font definition used for comment text. The definition
includes the font name, size, unit of measure, as well as the
indication of whether to apply bold, italic, strikeout, and
underline styles. The GDI Character Set and GDI Vertical
Font properties are not editable.
Comment Text Color The color of the font for comments. The possible colors are
custom, web, and system colors.
Editor
Editor Font The font definition used for the ST editor. The definition
includes the font name, size, unit of measure, as well as the
indication of whether to apply bold, italic, strikeout, and
underline styles. The GDI Character Set and GDI Vertical
Font properties are not editable.
Editor Text Area Background The color of the ST editor background. The possible colors are
Color custom, web, and system colors.
Identifier
Identifier Font The font definition used for identifiers. The definition includes
the font name, size, unit of measure, as well as the indication
of whether to apply bold, italic, strikeout, and underline styles.
The GDI Character Set and GDI Vertical Font properties are
not editable.
Identifier Text Color The color of the font for identifiers. The possible colors are
custom, web, and system colors.
Number
2. From the Options dialog, expand IEC Languages, then click Structured Text (ST).
3. Expand the respective category, customize the required setting, then click OK.
You can customize the offline behavior options and look and feel of spy lists. The available
behavior options are the following:
Filter Row, displaying a row below the column heading enabling the filtering of items in
the list.
Grouping Drop Area, displaying an area at the top of spy lists enabling the grouping of
items in a list according to column types.
Item Count Rows, displaying rows indicating the item count for complete spy lists as
well as individual arrays, structures, and function block instances.
Look and Feel options, the available options enable customizing the colors used for the
headers, various rows, and borders as well the text colors.
Default Refresh Rate, the default rate for refreshing spy list variables, in milliseconds.
You can also modify the refresh rate of individual spy lists. You can only modify refresh
rates while offline.
You can define different settings for the offline and online options.
2. From the Options dialog box, expand Spy List Settings, then click Offline Grid Settings
and make the required changes.
You can customize the online behavior options and look and feel of spy lists. The available
behavior options are the following:
Filter Row, displaying a row below the column heading enabling the filtering of items in
the list
Grouping Drop Area, displaying an area at the top of spy lists enabling the grouping of
items in a list according to column types
Item Count Rows, displaying rows indicating the item count for complete spy lists as
well as individual arrays, structures, and function block instances
The available look and feel options enable customizing the colors used for the headers, various
rows, and borders as well the text colors.
You can define different settings for the offline and online options.
2. From the Options dialog box, expand Spy List Settings, click Online Grid Settings and
make the required changes.
The Description window is dockable and scalable. When clicking the different items in the
Application View, the contents of the Description window automatically displays the
description for the selected item.
While in debug mode, the content displayed in the Description window is read-only.
You can access the description window from the menus or from the properties for items.
To access the Description Window, from the View menu, click Description Window.
Projects can be developed using the following programming languages from the IEC 61131-3
standard: Functional Block Diagram (FBD), Ladder Diagram (LD), Structured Text (ST), and
Sequential Function Chart (SFC). Note that SFC is not supported for safety related
applications.When building, controllers are compiled to produce very fast "target independent
code" (TIC).
You can declare variables using standard IEC 61131-3 data types (i.e., Boolean, integer, real,
etc.) or user-defined types such as arrays or structures.
Libraries enable you to define functions, function blocks, and data types for reuse throughout
projects.
Individual controllers are downloaded, using SNCP networks, onto hardware equipment.
You can choose to simulate the running of a project, after building a project, using high-level
debugging tools, before actually downloading controllers to hardware equipment. You then
connect the Workbench to monitor real-time information and perform updates. A standard
Ethernet network is used to connect the AADvance Workbench to controllers and to connect
controllers to other controllers.
A project is composed of hardware platforms called controllers. A project can contain one or
more programming units called POUs (Program Organization Unit). POUs are linked together
in a tree-like architecture and can be described using any of SFC, ST, FBD, or LD graphic or
literal languages. POUs can be programs, functions, or function blocks.
Import AADvance Project, enables importing an AADvance project into the AADvance
2.1 Workbench
Restore Project from an Archive, enables restoring an AADvance version 2.1 project that
was previously archived from an AADvance repository
Series 9000, enables creating a series 9000 project containing one controller in the
AADvance 2.1 workbench
Info
Comment Text displayed next to the project name
Description Free-form text describing a project
Name (Read-only) Name of the project. Project names are limited to 128
characters beginning with a letter followed by letters, digits, and
single underscores. The last character for a project name must be a
letter or digit; project names cannot end with an underscore
character. Names cannot be reserved words, defined words, or data
types (i.e., elementary, structures, or arrays). Names must be
unique for projects within a solution.
Building projects
Cleaning projects
Connecting projects
You control access for projects by setting a password restricting modifications such as adding
controllers, programs, functions, and function blocks.
To create a project
1. From the File menu, click New Project (or press Ctrl+Shift+N).
2. In the New Project dialog box, in the Project Types list, click Series 9000.
3. In the Templates list, click the Create Empty Series 9000 Project template.
You can import target definition files having the *.txt or *.tdb extensions.
1. In the Application View, right-click the project, and then click Import Target
Definitions.
2. In the Open dialog box, locate the target definition file to import, and then click Open.
You can import projects created using any version of AADvance. You can also import a
project and then rename it to create a duplicate version of the project.
Note: When importing a project having a dependency on a library, make sure to import the
library immediately after importing the project, before performing any other operation, to
ensure maintaining the references between function blocks and user-defined data types in the
library.
2. In the New Project dialog box, in the Project Types list, click Import.
4. Specify a name for the project, and then click Browse to select the database path.
5. In the Select Database File dialog box, locate and select the project database file (*.mdb),
and then click Open.
In the Workbench, you can only open one project at any given time. If changes have been made
to an open project, the system automatically prompts you to save changes before closing a
project or opening another.
Adding controllers
Renaming controllers
Deleting controllers
Building controllers
Cleaning controllers
Code
Code For Indication of whether to produce code for simulation for an application
Simulation
To add a controller
In the Application View, right-click the project element, point to Add, and then click
New Controller.
You can import controllers, programs, functions, and function blocks from exchange files
(*.pxf) from projects
3. In the Save As dialog box, browse for the location in which to store the element exchange
file, then click Save.
You can import controllers from AADvance elements previously saved as exchange files
(*.pxf). When adding controllers having bindings, these controllers must keep the same
number and name as when exported to retain binding definitions. Therefore, before adding
such controllers, make sure to renumber and rename conflicting controllers.
1. In the Application View, right-click the Project element, point to Add, and then click
Existing Controller.
2. In the Select Exchange File dialog box, locate the exchange file containing the controller,
and then click Open.
3. In the Add Existing Controller dialog box, select the element to import, and then click
Import.
1. In the Application View, right-click the controller, and then click Copy.
To rename a controller
In the Application View, right-click the controller, then click Rename, and then type a
name for the controller.
To delete a controller
In the Application View, right-click the controller, and then click Delete.
Adding programs
Renaming programs
Deleting programs
Code Generation
Generate Debug Info Indication of whether to generate information required for
debugging using step-by-step execution
Generate Monitoring For graphical POUs, indication of whether to generate information
Symbols required for graphically displaying the output values of elements
when debugging or simulating
Info
Comment Text displayed next to the program name
Description Free-form text describing a program
Full Name (Read-only) Full name of the program indicating the project and
controller to which it belongs
Language (Read-only) Programming language of the POU
To add a program
3. In the Save As dialog box, browse for the location in which to store the element exchange
file, and then click Save.
1. In the Application View, right-click the Programs element, point to Add Programs, then
Existing Program.
2. In the Select Exchange File dialog box, locate the exchange file containing the program,
and then click Open.
3. In the Add Existing Program dialog box, select the element to import, and then click
Import.
1. In the Application View, right-click the program, and then click Copy.
To rename a program
In the Application View, right-click the program, then click Rename, and then type a
name for the program.
To delete a program
In the Application View, right-click the program, and then click Delete.
Adding functions
Renaming functions
Deleting functions
Building functions
Code Generation
Generate Debug Info Indication of whether to generate information required for
debugging using step-by-step execution.
Info
Comment Text displayed next to the function name
Description Free-form text describing a function
Full Name (Read-only) Full name of the function indicating the project and
controller to which it belongs
Language (Read-only) Programming language of the POU
When adding functions, you also need to define parameters. Functions can have a maximum
of 128 parameters (inputs and outputs). When defining parameters, consider the following
limitations:
Parameter names are limited to 128 characters beginning with a letter followed by letters,
digits, and single underscores. The last character for a parameter name must be a letter or
digit; parameter names cannot end with an underscore character. Names cannot be
reserved words, defined words, or data types (i.e., elementary, structures, or arrays).
Names must be unique for the same type of elements within a scope.
Possible data types for parameters are BOOL, SINT, USINT, BYTE, INT, UINT, WORD,
DINT, UDINT, DWORD, LINT, ULINT, LWORD, REAL, LREAL, TIME, DATE,
STRING, Array types, Structure types, Function blocks
For String type variables, string capacity is limited to 252 characters excluding the
terminating null character (0), a byte for the current length of the string, and a byte for the
maximum length of the string
For user defined addresses, the format is hexadecimal and the value ranges from 1 to
FFFF
For dimensions, example: [1..10] for a one dimensional array, [1..4,1..7], for a two
dimensional array
You can save functions as exchange files (*.pxf) to export them. You can also save functions
from libraries.
3. In the Save As dialog box, browse for the location in which to store the element exchange
file, and then click Save.
1. In the Application View, right-click the Functions element, point to Add Functions, and
then click Existing Function.
2. In the Select Exchange File dialog box, locate the exchange file containing the function,
and then click Open.
3. In the Add Existing Function dialog box, select the element to import, and then click
Import.
1. In the Application View, right-click the function, and then click Copy.
To rename a function
In the Application View, right-click the function, then click Rename, and then type a
name for the function.
To delete a function
In the Application View, right-click the function, and then click Delete.
Code Generation
Generate Debug Info Indication of whether to generate information required for
debugging using step-by-step execution.
Generate Monitoring For graphical POUs, indication of whether to generate information
Symbols required for graphically displaying the output values of elements
when debugging or simulating
Instance Symbols Extra Size of memory reserved for each function block instance for
Bytes adding symbols monitoring information during updates. A
string-type output takes up 260 bytes.
Info
Comment Text displayed next to the function block name in the Application
View
Description Free-form text describing a function block
When adding function blocks, you also need to define parameters. Function blocks can have a
maximum of 128 parameters (inputs and outputs). When defining parameters, consider the
following limitations:
Parameter names are limited to 128 characters beginning with a letter followed by letters,
digits, and single underscores. The last character for a parameter name must be a letter or
digit; parameter names cannot end with an underscore character. Names cannot be
reserved words, defined words, or data types (i.e., elementary, structures, or arrays).
Names must be unique for the same type of elements within a scope.
Possible data types for parameters are BOOL, SINT, USINT, BYTE, INT, UINT, WORD,
DINT, UDINT, DWORD, LINT, ULINT, LWORD, REAL, LREAL, TIME, DATE,
STRING, Array types, Structure types, Function blocks
For String type variables, string capacity is limited to 252 characters excluding the
terminating null character (0), a byte for the current length of the string, and a byte for the
maximum length of the string
For user defined addresses, the format is hexadecimal and the value ranges from 1 to
FFFF
For instances of function blocks, you can reset the initial values defined for individual
instances.
You can save function blocks as exchange files (*.pxf) to export them. You can also save
functions from libraries.
1. In the Application View, select the function block to save as an exchange file.
3. In the Save As dialog box, browse for the location in which to store the element exchange
file, and then click Save.
You can import function blocks previously saved as exchange files (*.pxf).
1. In the Application View, right-click the Function Blocks element, point to Add Function
Blocks, and then click Existing Function Block.
2. In the Select Exchange File dialog box, locate the exchange file containing the function,
and then click Open.
1. In the Application View, right-click the function block, and then click Copy.
3. In the Application View, right-click the function block, then click Rename, and then type
a name for the function block.
Variable names are limited to 128 characters beginning with a letter or single underscore
followed by letters, digits, and single underscores. The last character for a variable name must
be a letter or digit; variable names cannot end with an underscore character. Names cannot be
reserved words, defined words, or data types (i.e., elementary, structures, or arrays). Names
must be unique for the same type of elements within a scope.
When defining complex variables such as arrays and structures, the syntax for the variable
name is as follows:
When adding controller variables to a group, you can add these to the group from the variables
grid or you can drag these between the variables grid and the group grid.
1. In the Application View, expand the Variables item, right-click Groups, and then click
Add New Variable Group.
a) Open the controller variables grid, right-click the left most column for the required
variable, point to Add to Group, and then click the required group.
a) Open the variables grid for the group by double-clicking and place both grids
side-by-side.
b) In the controller variables grid, select the consecutive variables, then click and drag
from the cell having the arrow in the left most column to within the variables group
grid.
Adding an AADvance library, where you create a library based on the AADvance
template
Adding a library from a repository, where you add a library from a repository. Libraries
having been previously published are available from a version control repository.
Importing an AADvance (*.mdb) library, where you import a project or library having
the MS-Access database (*.mdb) format. When adding libraries based on projects or
libraries from previous versions, these libraries only contain the functions, function
blocks, and data types.
Importing an AADvance 1.X (*.pxf) library, where you import an existing library having
been saved as an exchange file (*.pxf) format. When importing libraries based on
projects or libraries from previous versions, these libraries only contain the functions,
function blocks, and data types.
Importing an AADvance 2.x (*.pxf) library, where you import an existing library having
been saved as an exchange file (*.pxf) format.
Libraries are stored within the projects where these are created. When a library becomes
unresolved, you need to restore the reference to the library.
Library functions, function blocks, and data types must have unique names within a project,
including other libraries used in the project. When these have the same names as those defined
in a project in which these are used, only those from the project are recognized.
Library functions and function blocks are compiled with the project. However, you can verify
the syntax for library functions and function blocks.
When working with libraries, you can perform the following tasks:
Renaming libraries
Deleting libraries
When adding new libraries, you can choose to add an empty AADvance library.
1. In the Application View, right-click the Libraries item, point to Add, and then click New
Library.
2. In the New Library dialog box, click AADvance Library in the Library Types list, and
then click the Create Empty Library template.
Libraries having been previously published are available from a version control repository.
1. In the Application View, right-click the Libraries item, point to Add, and then click
Published Library.
2. In the Add Published Library dialog box, browse for the repository containing the
published library, indicate whether to only show the latest versions of the published
libraries, and then select the required library from the list.
3. Click OK.
When adding libraries, you can import an AADvance 1.X library having the MS-Access
database (*.mdb) format.
1. In the Application View, right-click the Libraries item, point to Add, and then click New
Library.
2. In the New Library dialog box, click Import in the Library Types list, then click the
Import AADvance Library template.
3. Enter a library name and description, and then click Browse to locate the MS-Access
database (*.mdb).
4. From the Select a Database File dialog box, locate the required MS-Access database
(*.mdb), and then click Open.
5. Click OK.
To import an existing AADvance library from a AADvance 1.X exchange file format
When adding libraries, you can import an AADvance 1.X project or library having the
exchange (*.pxf) file format.
1. In the Application View, right-click the Project item, point to Add, and then click
Existing Controller.
2. In the Select Exchange File dialog box, click Browse to locate the exchange file (*.pxf),
and then click Open.
4. Cut and paste or drag POUs from the imported controller to the library.
When adding libraries, you can import an AADvance 2.x library having been previously saved
as an exchange file (*.pxf).
1. In the Application View, right-click the Libraries element, point to Add, and then click
Existing Library.
2. In the Select Exchange File dialog box, locate the exchange file containing the library,
and then click Open.
3. In the Add Existing Library dialog box, select the library to import, and then click
Import.
When a reference towards a library is unresolved, you need to restore this reference.
2. Follow the steps for the respective library import method while making sure to specify
the exact name of the library for which to restore the reference.
To add a published library from a repository
To import an AADvance library having the MS-Access database format
To import an existing AADvance library from a AADvance 2.x exchange file format
1. In the Application View, right-click the function block in the source library, and then
click Copy.
2. Right-click the respective section of the destination library, and then click Paste.
You can export functions or function blocks from libraries and save these as exchange files
(*.pxf).
3. In the Save As dialog box, browse for the location in which to store the element exchange
file, and then click Save.
In libraries, you can import functions or function blocks from AADvance elements saved as
exchange files (*.pxf).
1. In the Application View, right-click the Functions or Function Blocks element of the
respective library, point to Add, and then click Existing Function or Existing Function
Block.
2. In the Select Exchange File dialog box, locate the exchange file containing the function
or function block, and then click Open.
3. In the Add Existing dialog box, select the element to import, and then click Import.
In the source library, drag the function or function block to the respective section in the
destination library.
To rename a library
In the Application View, right-click the library, then click Rename, and then type a name
for the library.
1. From the File menu, click Open Project (or press Ctrl+Shift+O).
2. In the Open Project dialog box, select the required project, and then click OK.
To close a project
Note: Since POUs are encrypted, you need to retain password definitions.
In the Application View, the following indicates the security state for elements:
When opening a project having password-protected elements, you are only prompted to enter
the password once for each element. Password-protected elements have the following
modification restrictions:
You can edit existing passwords for projects and project sub-elements. You can also remove
existing passwords. When copying, pasting, importing, and exporting elements having access
control, password definitions are retained.
1. In the Application View, right-click the required element, and then click Set Password.
2. In the Set Password dialog box, enter the required information, then click OK.
To edit a password
1. In the Application View, right-click the required element, and then click Set Password.
2. In the Change Password dialog box, enter the required information, then click OK.
To remove a password
1. In the Application View, right-click the required element, and then click Set Password.
2. In the Change Password dialog box, enter the required information, then click OK.
Note: The password definitions for controller targets are saved on target systems.
Downloading an application
Updating an application
Locking a variable
You can edit existing passwords for targets. You can also remove existing passwords for target
controllers. When setting, editing, and deleting the password for a controller target, the
attached target must be running.
1. In the Application View, right-click the controller instance, and then click Set Target
Password.
2. In the Set Password dialog box, enter the required information, then click OK.
1. In the Application View, right-click the required controller, and then click Set Target
Password.
2. In the Set Password dialog box, enter the required information, then click OK.
1. In the Application View, right-click the required controller, and then click Set Target
Password.
2. In the Set Password dialog box, enter the required information, then click OK.
In the Old Password field, type the current password.
The New Password and Confirm Password fields must remain blank.
Note: When importing a variables data file missing any columns, the Workbench uses the
default values for the missing data.
When exporting variables, you specify the location in which to save the exported files. To
develop the contents of variables data files (*.xls or *.csv) in a respective editor, i.e., Microsoft
Excel or Notepad, you can export an empty file serving as a template.
A variables data file includes a header row, a mapping row, a version number, and the variables
data. The header row displays the names of the data columns. Note that the column names of
the header row are the various variable properties. The mapping row displays the internal
names of data columns in brackets used for processing. An automatically generated version
number indicates the version of the import/export feature. The individual variable data is
placed in the respective columns.
The following table indicates the syntax used in the variables data files for the variable
properties and the associated internal names:
A progress bar indicates the advancement of import and export operations. You can choose to
cancel import and export operations. For import operations, the process stops after importing
the last variable in progress. For export operations, the process does not produce an exported
variables file.
To import variables
You can import variables stored as Excel (.xls) or comma-separated values (.csv) format.
1. In the Application View, right-click the destination receiving the Local Variables or
Controller Variables, and then click Import Variables....
2. From the Import Variables dialog box, select the file type containing the variables, locate
the file, and then click Open.
The progress bar indicates the advancement of the import operation. Upon completion of the
import operation, the imported variables are available for use as local variables or controller
variables. When you cancel an import operation, the process stops after importing the last
variable in progress.
To export variables
You can export variables data in Excel (.xls) or comma-separated values (.csv) format.
A progress bar indicates the advancement of the export operation. The variables are exported
to the specified file. When you cancel an export operation, the process does not produce an
exported variables file.
You can choose to build specific project elements, including controllers, functions, and
function blocks. You can also verify the syntax of programs. When building a selected project
element, the Workbench builds the code for the selected element only.
You can choose to clean projects and controllers. Cleaning projects and controllers deletes the
intermediate and output files generated during the last build operation. However, after
cleaning, you cannot perform online changes. Therefore, to retain the capacity to perform
online changes, you can perform subsequent builds for a project or controller rather than
cleaning then building it.
Building a Project
Cleaning a Project
When building projects, controllers, functions, or function blocks, you can view the progress
of the build operation in the Output window. When the build operation is complete, you can
view generated errors in the Error List.
The Workbench rebuilds controllers and increases the build number in the following
conditions:
A dependent library is not compiled, was compiled after the controller, or was modified
since the last compilation
Contains a POU needing compilation: a POU has been modified since the last
compilation, a POU is an LD or FBD function block for which symbol monitoring is
activated, and a POU has local array variables when array index verification is activated.
The controller contains variables in binding consumer links or variables in CIP consumer
links
The compiler generates different code for simulation than for targets. Therefore, you need to
specify the code for simulation in the controller properties before building.
To build a project
In the Application View, right-click the project element, and then click Build All (or
press Ctrl+Shift+B).
You can perform build operations for controllers, functions, or function blocks.
2. In the Options dialog box, expand Projects, click General, select the following options,
and then click OK.
Always show Error List if build finishes with errors
Show Output window when build starts
2. In the Options dialog box, expand Projects, click General, select the following options,
and then click OK.
Always show Error List if build finishes with errors
Show Output window when build starts
After cleaning a project, you cannot perform updates for any controllers. After cleaning a
controller, you cannot perform updates for the controller. To retain the capacity to perform
updates, you can perform a subsequent build rather than cleaning and building.
To clean a project
Cleaning a project removes the capacity to perform updates for all controllers.
In the Application View, right-click the project to clean, and then click Clean All.
To clean a controller
Cleaning a controller removes the capacity to perform updates for the controller.
In the Application View, right-click the controller to clean, and then click Clean
Controller.
Before running an application on physical controllers, you need to build the project code and
download the application code onto the target.
For debugging purposes, you can also simulate the running of an application. The compiler
generates different code for simulation than for online.
1. From the Communication View, specify the IP addresses for the controllers in the
project.
2. From the Properties Window, specify the required Number for the controller. Each
controller in a project must have a unique Number matching the Resource Number of the
required AADvance controller. From the AADvance Discover tool, you can view and
change the Resource Number of AADvance controllers.
3. To set the connection mode for the project, from the Project menu, point to Connect
Mode, and then click Online.
Note the appearance of the Online menu category having the online command options.
The Workbench applies a version control label to the downloaded code and files.
The Workbench saves the application state and gets the corresponding version control
label for the running version of the controller. Upon disconnecting, the Workbench
returns the controllers to the state previous to connecting.
When performing a download operation, the AADvance Workbench verifies that the latest
build reflects the current project.
Note: If you are unable to download an application to a controller, you can free memory by
clearing the applications from the AADvance controller.
If you need to change the resource number of a controller, you are recommended to perform
the following:
2. Modify the resource number in AADvance Discover and in the Workbench controller
properties.
The computer where the AADvance Workbench is installed must be connected to the
hardware controller through an SNCP network.
2. From the Application View, right-click the project element, and then click Download.
3. In the Download window, select the controllers for which to download code to the
physical equipment, and then click Download.
When performing updates, you need to ensure sufficient free memory space for the storage of
modified or added items. Updates are denied when memory space is insufficient. You specify
the available memory size for updates in the controller properties.
You can modify the I/O configuration of a controller. Modifications to the controller I/O must
match the hardware configuration. To modify the controller I/O, you must enable the Update
I/O Device Online controller property. The default value for this property is False.
Before modifying the I/O configuration and performing updates while the
controller is connected, you must set up alternative safety measures lasting
the duration of the update.
When modifying properties of controllers, you need to perform a download for the changes to
take effect. Also, the initial values of variables are applied upon starting controllers. Updates
do not start controllers.
2. Confirms the download is error free and verifies if the controller will accept the update
For all AADvance versions, the following limitations exist for updates:
Declared, i.e., user-defined, arrays and structures cannot be modified. Declared arrays and
structures are defined as data types.
Modifications to controller properties are not applied after an update.
The following tasks are available for the latest AADvance version when performing updates:
Warning: Updates are unavailable after getting a previous version from the repository; you
must perform a download operation.
To perform an update
You can perform an update after building a project. Updates are unavailable after cleaning a
project.
1. Make sure that the memory size properties for the required controllers indicate sufficient
memory space.
2. From the Application View, right-click the project for which to perform the update, and
then click Update.
3. In the Update window, select the controllers to update, and then click Update.
3. In the Start/Stop Application dialog box, set one of the following actions for each
controller:
None
Start
Stop
When clearing applications, you specify the individual controllers from those existing in a
project, then specify the controllers for which to clear applications. For individual controllers,
you can view version information for the local and physical controller applications as well as
the status of the controller and any comments.
Note: When clearing an application, only the files belonging to the current resource number
are deleted. You are recommended to clear the application before changing resource number.
2. In the Application View, select the Project, then from the Project menu, click Clear.
3. In the Clear Application dialog box, perform one of the following steps:
To clear applications for individual controllers, select the required controllers, and
then click Clear.
To clear applications for all controllers, click Select All, and then click Clear.
The application files are removed from the required physical controllers. You can now
download a different application having the same IP address to the physical controller.
Before initially connecting controllers, you need to build the project, then download the code
to the controller. Subsequent connections automatically extract the controller code from the
version control repository resulting from the latest download or update operation.
When you connect, you can choose to connect individual controllers within a project. The
Connect dialog box enables the selection of individual controllers to connect. You can also
choose to connect all controllers.
While connected, a local or remote Workbench locks, i. e., restricts access to, a controller from
other users when performing any operation modifying the controller. Only one Workbench can
lock a controller at any given time. Operations locking a controller include performing
downloads, performing updates, modifying the values of variables and I/Os, modifying cycle
timing, and more. A Workbench unlocks access when disconnecting from the controller. When
performing downloads, a Workbench unlocks access upon completion of the download. When
a Workbench locks a controller, the identity is indicated as the user name from the computer.
If the Workbench is unable to restrict access to the controller, the operation modifying the
controller, such as performing an update, will fail.
From these Views, you can obtain detailed status information for controllers including the
identity of a Workbench locking a controller by mousing over the controller status icons. From
the Controller Status, you can also view the identities of Workbenches locking controllers.
To connect an application
Before connecting an application, you need to build the application code and download the
code to the target.
1. In the Communication View, specify the IP addresses for the controllers in the project.
Note: The compiler generates different code for simulation than for targets.
2. From the Project menu, point to Connect Mode, and then click Online.
Note the appearance of the Online menu category having the online command options.
5. In the Application View, select the Project element, then from the Online menu, click
Connect (or press F5).
6. In the Connect window, select the controllers to connect, and then click Connect.
The minimum cycle time for an AADvance application is 64 milliseconds. The cycle time for
most applications is between 64 and 260 milliseconds, depending on the system size. Note that
the cycle time will increase during an update or when a new processor is synchronizing.
Note: Setting the Programmed Cycle Time to 0 allows the controller to execute cycles as fast
as possible, i.e. at a rate close to the True Cycle Time.
The Cycle Timing dialog box displays cycle time information for all controllers defined
in the project.
You can reset the statistical values for the maximum cycle time and cycle overflow
information.
The Cycle Timing dialog box displays cycle time information for all controllers defined
in the project.
2. To refresh the maximum cycle time and cycle overflow information displayed for
controllers, click Reset all Statistics.
To disconnect controllers
In the Application View, select the Project element, then from the Online menu, click
Disconnect.
The compiler generates different code for simulation than for online.
Before simulating an application, you need to build the code for the project and controllers.
When starting simulation, you can choose to start all controllers or start individual controllers.
Virtual machines disregard inputs and outputs. All tasks such as binding exchanges and
execution of POUs are executed by the Windows platform. Each controller is executed by one
virtual machine on the computer running the Workbench.
While simulating, you can execute controller code using one of two execution modes:
Real-time, the run time normal execution mode where target cycles are triggered by the
programmed cycle timing. While in real-time mode, you can switch to cycle-to-cycle
mode.
Cycle-to-cycle, a cyclical execution mode where the virtual machine loads the code but
does not execute it until you execute one cycle or activate real-time mode.
When setting breakpoints for LD and ST programs for which you generate debug information,
the controller automatically switches to step-by-step execution when the application
encounters a breakpoint. At this time, you can choose to step into or step over the next code.
1. In the Properties window, set the following properties for each controller to simulate:
Set the Code for Simulation property to True.
Specify the Execution Mode as either Real Time or Cycle to Cycle.
2. To enable monitoring the values for operators and functions, for the applicable programs
and function blocks, set Generate Monitoring Symbols to True.
Note the appearance of the Simulation menu category having the simulation command
options.
5. In the Application View, select the project, then choose one of the following options from
the Simulation menu:
To start the simulation of all controllers in the project, click Start Simulation Now.
To start the simulation of some controllers in the project, click Start Simulation,
then in the Simulate dialog box, select the controllers for which to start simulation,
and then click Simulate.
1. In the Application View, select the controller for which to resume simulation.
1. In the Application View, select the controller for which to resume simulation.
Locking and unlocking operates differently for simple variables, array elements, and structure
elements. For simple variables, individual variables are locked and unlocked directly. For
simple-type members of a complex variable such as a structure or array, when locking or
unlocking any member, you can lock or unlock individual members. For array and structure
elements, locking and unlocking an element affects only that element.
For locked variables, the values displayed in the Logical Value and Physical Value columns
differ depending on their direction:
For variables with the write access value of false, you must lock access before forcing the
values. For variables with the write access value of true:
From the Dictionary, double-click the variable's corresponding cell in the Logical
column, then in the dialog box, enter a value and click Write.
From the LD and FBD editors, double-click the variable, then in the dialog box, enter a
value and click Write.
You can also force the value of variables from the spy list.
While debugging, you can force the values of locked user-defined or directly-represented
variables.
For dictionary instances, the logical values, physical values, and lock status of variables are
displayed in their respective columns. For graphical programs and function blocks, values are
displayed differently depending on their type:
Values of variables having the boolean type are displayed using color. The output value
color continues to the next input. The default colors are red when True and blue when
False.
Values of variables having the SINT, USINT, BYTE, INT, UINT, WORD, DINT,
UDINT, DWORD, LINT, ULINT, LWORD, REAL, LREAL, TIME, DATE, and
STRING type are displayed as a numeric or textual value. When the output is a structure
type, the displayed value is the selected member.
Note: You cannot monitor the values of arrays having a variable as an index.
1. In the Application View, select the graphical POU for which to generate symbols
monitoring.
2. In the Properties window, set the Generate Monitoring Symbols property to True.
System variables hold the values of information relating to cycle count, timing, kernel
bindings, and controller information. You can monitor system variables from the dictionary
instances for resources. You can read from and write to system variables. The available system
variables are the following:
You can monitor the values of system variables for an application running online or in
simulation.
Dictionary variables The dictionary can contain up to 4 294 967 296 entries
for each variable type.
Variable names Variable names are limited to 128 characters beginning
with a letter or single underscore followed by letters,
digits, and single underscores. The last character for a
variable name must be a letter or digit; variable names
cannot end with an underscore character. Names
cannot be reserved words, defined words, or data types
(i.e., elementary, structures, or arrays). Names must be
unique for the same type of elements within a scope.
BOOL variables Boolean variables can have the boolean value TRUE
(1) or FALSE (0).
SINT variables SINT variable integer values range from -128 to +127.
Short integer constants must begin with a prefix
identifying the base. There is no prefix for DECIMAL
values. For HEXADECIMAL values the prefix is
"16#", for OCTAL values the prefix is "8#", and for
BINARY values the prefix is "2#".
USINT variables USINT variable integer values range from 0 to 255.
Unsigned short integer constants must begin with a
prefix identifying the base. There is no prefix for
DECIMAL values. For HEXADECIMAL values the
prefix is "16#", for OCTAL values the prefix is "8#",
and for BINARY values the prefix is "2#".
BYTE variables BYTE variable integer values range from 0 to 255.
BYTE constants must begin with a prefix identifying
the base. There is no prefix for DECIMAL values. For
HEXADECIMAL values the prefix is "16#", for
OCTAL values the prefix is "8#", and for BINARY
values the prefix is "2#".
Defined word names Defined word names are limited to 128 characters
beginning with a letter or single underscore followed
by letters, digits, and single underscores. The last
character for a defined word name must be a letter or
digit; defined word names cannot end with an
underscore character. Names cannot be reserved
words, defined words, or data types (i.e., elementary,
structures, or arrays). Names must be unique for the
same type of elements within a scope.
Defined word equivalents Defined word equivalents are limited to 128
characters.
SFC
SFC steps per program SFC programs are limited to 65 536 steps.
SFC transitions per program SFC programs are limited to 65 536 transitions.
SFC step and transition names SFC step and transition names are limited to
128 characters beginning with a letter or single
underscore followed by letters, digits, and single
underscores. The last character for an SFC step and
transition name must be a letter or digit; SFC step and
transition names cannot end with an underscore
character. SFC step and transition names cannot
contain reserved keywords or share the same names as
the variables.
AADvance projects
%USERPROFILE%\Documents\AADvance 2.1\Projects
Version control repository
%PUBLIC%\Public Documents\AADvance 2.1\Repository
Document Generation templates
%USERPROFILE%\AppData\Local\Rockwell Automation\AADvance
2.1\ACP\Templates\DocumentGenerator
OPC configuration
%ALLUSERSPROFILE%\Rockwell Automation\AADvance 2.1\AADvance Gateway
Workbench and OPC logs
%USERPROFILE%\AppData\Local\Rockwell Automation\AADvance 2.1
Application binary files
%PROGRAMFILES(x86)%\Rockwell Automation\AADvance 2.1
Environment settings file (when exporting)
%USERPROFILE%\Documents\AADvance 2.1\Settings\AADvance
Defined Words Grid, enables managing the defined words for a project
Variables Grid, enables managing the variables for controllers and programs. Each
controller and program has its instance of the grid. For controllers, the grid displays
global variables. For programs, the grid displays local variables.
The grids each display the properties for the type of element. You can open multiple grid
instances simultaneously. When working in a grid, you can navigate the cells using the mouse
controls. For complex data types, you can expand fields using Ctrl+PLUS SIGN on numeric
keypad (+) and collapse fields using Ctrl+MINUS SIGN on numeric keypad (-).
You can customize the Dictionary environment by arranging the columns to display and setting
the display colors.
1. From the Application View, expand the project and controller nodes.
2. For the variables of a controller, expand the required controller node, then expand the
Variables node, and then double-click Controller Variables.
The Dictionary instance is displayed containing the variables belonging to the controller.
3. For the variables of a program, expand the required program node, and then double-click
Local Variables.
The Dictionary instance is displayed containing the variables belonging to the program.
The data types Dictionary instance is displayed with the Arrays, Structures, and Defined
Words tabs.
5. For the data types of a library, expand the Libraries node, then expand the required
library, and then double-click Data Types.
The Dictionary instance is displayed containing the data types belonging to the library.
To retain customized display settings, you must save the Dictionary instance before closing.
When dragging a column header, arrows indicate the current position of the header.
2. To hide a column, right-click on a column header, and then click Hide Column.
3. To show a column, right-click on any column header, point to Show Column, and then
click the required column name.
Creating arrays
Deleting arrays
You can customize the Dictionary environment by arranging the columns to display.
To create an array
1. From the Application View, access the Dictionary instance for the data types of the
project.
3. In an empty row of the Arrays grid, define the required properties for the array, and then
press ENTER.
1. From the Application View, access the Dictionary instance for the data types of the
project.
To delete an array
1. From the Application View, access the Dictionary instance for the data types of the
project.
You can sort the arrays in the grid using an ascending or descending order for the individual
columns.
1. From the Application View, expand the project, controller, and lib nodes, then
double-click the Data Types item.
4. Toggle the column header to switch between ascending and descending order.
You can filter arrays displayed on the Arrays tab of Data Types instance. When filtering, you
create a view displaying only the arrays containing specified characters.
The filter row is the top row of the grid. You can filter arrays by typing alphabetical and
numerical characters in the cells of the filter row. You can also select from the drop-down
combo box. Matching arrays are automatically displayed.
1. From the Application View, access the Dictionary instance for the data types of the
project.
3. In the filter row of the Arrays grid, click the required cell, and then do one of the
following:
Type the characters to use in the filtering operation
Select the required array from the drop-down combo box
Creating structures
Deleting structures
You can customize the Dictionary environment by arranging the columns to display.
To create a structure
1. From the Application View, access the Dictionary instance for the data types of the
project.
3. In an empty row of the Structures grid, define the required properties for the structure,
and then press ENTER.
1. From the Application View, access the Dictionary instance for the data types of the
project.
3. In the Structures grid, make the required changes, and then press ENTER.
To delete a structure
1. From the Application View, access the Dictionary instance for the data types of the
project.
You can sort the structures in the grid using an ascending or descending order for the individual
columns.
1. From the Application View, access the Dictionary instance for the data types of the
project.
4. Toggle the column header to switch between ascending and descending order.
You can filter structures in Structures grid. When filtering, you create a view displaying only
the structures containing specified characters.
The filter row is the top row of the grid. You can filter structures by typing alphabetical and
numerical characters in the cells of the filter row. You can also select from the drop-down
combo box. Matching structures are automatically displayed.
1. From the Application View, access the Dictionary instance for the data types of the
project.
3. In the filter row of the Structures grid, click the required cell, then do one of the
following:
Type the characters to use in the filtering operation
Select the required structure from the drop-down combo box
You can customize the Dictionary environment by arranging the columns to display.
1. From the Application View, access the Dictionary instance for the data types of the
project.
2. From the Data Types instance, click the Defined Words tab.
3. In the Defined Words grid, define the required properties, and then press ENTER.
1. From the Application View, access the Dictionary instance for the data types of the
project.
2. From the Data Types instance, click the Defined Words tab.
You can delete defined words from the Defined Words grid.
1. From the Application View, access the Dictionary instance for the data types of the
project.
2. From the Data Types instance, click the Defined Words tab.
3. In the Defined Words grid, right-click the defined word to remove, and then click Delete.
You can sort the defined words in the grid using an ascending or descending order for the
individual columns.
1. From the Application View, access the Dictionary instance for the data types of the
project.
2. From the Data Types instance, click the Defined Words tab.
4. Toggle the column header to switch between ascending and descending order.
You can filter defined words in Defined Words grid. When filtering, you create a view
displaying only the defined words containing specified characters.
The filter row is the top row of the grid. You can filter defined words by typing alphabetical
and numerical characters in the cells of the filter row. You can also select from the drop-down
combo box. Matching defined words are automatically displayed.
1. From the Application View, access the Dictionary instance for the data types of the
project.
2. From the Data Types instance, click the Defined Words tab.
3. In the filter row of the Defined Words grid, click the required cell, and then do one of the
following:
Type the characters to use in the filtering operation
Select the required defined word from the drop-down combo box
Creating variables
Dragging variables
Deleting variables
You can customize the Dictionary environment by arranging the columns to display.
To create a variable
1. From the Application View, access the Dictionary instance for the required controller or
program.
2. In an empty row of the variables grid, define the required properties for the variable, and
then press ENTER.
1. From the Application View, access the Dictionary instance for the required controller or
program.
To drag a variable
You can drag variables from a Dictionary instance to multiple locations within a project. These
locations include other Dictionary instances as well as elements within a language container.
You drag variables to other locations individually. When dragging a variable to another
Dictionary instance, you can place the variable anywhere in the grid. When dragging a variable
into a language container, you can place the variable anywhere in the language container. To
retain changes made to Dictionary instances and language containers, save the respective
instance or POU before closing.
1. From the Application View, access the Dictionary instance containing the required
variable and the destination for the variable.
To delete a variable
You can delete variables from Dictionary instances. Deleting variables from an instance
opened for a program element removes the variables from the instance only.
1. From the Application View, access the Dictionary instance for the required controller or
program.
2. In the variables grid, right-click the variable to remove, and then click Delete.
When selecting variables, an indicator arrow ( ) is displayed in the leftmost column of the
grid. You can cut, copy, and paste variables from one Dictionary instance to another. You can
also cut, copy, and paste variables from the Variable Selector to the Dictionary.
1. In the grid of the required Dictionary instance, cut or copy the required variables.
To remove variables, select the required variable or variables, right-click the
selection, and then click Cut.
To copy variables, select the required variable or variables, right-click the selection,
and then click Copy.
2. In the grid of the required Variable Selector tab or Dictionary instance, right-click the
required location, and then click Paste.
You can sort the variables in the grid using an ascending or descending order for the individual
columns.
1. From the Application View, access the Dictionary instance for the required controller or
program.
3. Toggle the column header to switch between ascending and descending order.
You can filter variables in variables grid instances. When filtering, you create a view
displaying only the variables containing specified characters.
The filter row is the top row of the grid. You can filter variables by typing alphabetical and
numerical characters in the cells of the filter row. You can also select from the drop-down
combo box. Variables containing matching characters are automatically displayed in the grid.
1. From the Application View, access the Dictionary instance for the required controller or
program.
2. In the filter row of the variables grid, click the required cell, and then do one of the
following:
Type the characters to use in the filtering operation
Select the required defined word from the drop-down combo box
You can add a variable defined in the variables grid to existing variable groups.
In the variable grid, right-click the variable, point to Add to Variable Group, then click
the required group.
Using the Quick Declaration dialog box, you can simultaneously create multiple local or global
variables. Quick Declaration can be accessed using the Dictionary. A preview of the variable
is available on the top-right of the Quick Declaration dialog box.
Property Description
Numbering The range of values for the variables. The digits option is set to auto by default
and can be changed to alter the quantity of displayed digits.
1. In the required dictionary instance, right click an empty row, and then click Quick
Declaration.
2. Configure the variable attributes in the Quick Declaration dialog box, and then click OK.
The properties for the Functions and Function Blocks views are the following:
The properties for the Defined Words view are the following:
In the element list, color is used to identify elements used within the project. Element displayed
as blue are used at least once within the project. Elements displayed as red are not in use. For
elements other than programs, you can select elements displayed as blue to view the location
information for each instance of the element within the project. You can jump to the location
of individual instances by double-click in the instance list.
When working in the Cross Reference Browser, you can navigate using keyboard and mouse
controls.
Arrow keys Enable moving up, down, left and right within the rows of the elements list
Tab key Enables moving left and right within the fields and commands of the toolbar.
Also enables moving from the elements list to the list of instances.
Esc key Enables moving from the Cross Reference Browser to the workspace
From the View menu, click Cross Reference Browser (or press Ctrl+W, Ctrl+C).
When locating elements in the Cross Reference Browser, you refresh the list of
cross references by clicking (or pressing Ctrl+T, Ctrl+R).
1. From the Context View drop-down list, select the type of elements to display.
In the element list, elements displayed in blue are used at least once within the project. For
these elements, selecting in the element list displays all related instances in the instance list.
2. In the instance list, double-click the required instance of the element (or press F8 or
Shift+F8).
The program containing the instance of the element is displayed with the instance selected.
From the tree view, you can perform many tasks for project elements:
Connecting controllers
Accessing version control operations for projects, controllers, programs, functions, and
function blocks
Cutting, copying, pasting, deleting, and renaming programs, functions and function
blocks
From the Application View, you can obtain version control status and controller status details
by mousing over the respective icons.
To add an element
You can add elements such as controllers, programs, functions, and function blocks to projects.
To move an element
You can drag and drop elements to change their position in the tree structure. You can only
move elements
You can drag and drop elements within their corresponding element type (Controllers,
Programs, Functions, Function Blocks, Variable Groups, or Libraries) to change their position
in the tree structure. For example, you can move an LD program to any position in the Program
section.
In the Application View, drag the required element to the new position within the same
section.
Note: For SFC POUs, you can move an SFC main program, to a different position in the tree
structure. When you move an SFC POU having children, the children follow their parent. You
can also move a child SFC POU to a different main SFC POU or to a different hierarchy level.
You can only drag child SFC POUs to hierarchical levels already containing an SFC child.
To delete an element
To permanently delete an element, right-click the element, then click Delete. Projects
always have at least one controller.
To rename an element
Right-click an element, click Rename, then type a new name in the space provided.
From the Communication View, you can use the following protocols with Ethernet networks
and serial ports:
Modbus RTU/TCP
OPC
SOE
SNTP
SNCP bindings
CIP
Peer-to-Peer
Quality of Service
In the Communication View, you select tree nodes to access related communication options for
the equipment series. These options are displayed in the property pages. When working in the
Communication View, you can navigate using the mouse controls or keyboard arrows. You can
view additional properties for selected elements in the Properties window.
When working in the Communication View, you can navigate using the mouse controls or
keyboard arrows. You can view additional properties for selected elements in the
Communication property page and Properties window.
The En-1 Ethernet ports are all on one network and the En-2 ports are on a second network.
Note: To avoid unexpected ARP requests, you are strongly recommended to configure IP
addresses for En-2 ports (even if they are unused).
When defining Ethernet ports, you indicate an IP address and optionally a comment. Each
controller on a local area network must have a unique IP address. You must set the IP address
when creating a system or fitting a new processor base unit. The IP address must be configured
in the physical controller by using AADvance Discover and must then be configured in the
Workbench controller.
To connect the AADvance Workbench project to the physical controller, you must define the
IP addresses set for the controller in the project. You can also add comments to IP address
definitions.
4. In the Communication property page, type the IP address for each required port.
Note: Ports that are Not Configured can be configured individually by selecting the required
port in the Communication View.
Note: The AADvance controller does not support the Modbus ASCII protocol.
The Modbus functionality implemented by the AADvance controller meets the following
standard: Modbus Application Protocol Specification, version 1.1b. December 2006. The
Modbus Organization.
To use Modbus communications, you must map Modbus variables for the controller. These
variables are then used by Modbus slaves, Modbus masters, and Modbus master slaves. When
mapping variables, these are mapped as the following types:
Coils
Discrete Inputs
Input Registers
Holding Registers
The base addresses used for Modbus data transfer listings start at one. The first variable
network address of the AADvance Workbench is 1 and the first coil is 00001.
When managing Modbus variables, you can perform the following tasks in the Modbus
element:
You can also configure Modbus Master and Slave protocols for use in the communication
services for controllers.
When adding variables, these are placed at the top of the mapped variables list and are assigned
the next available base address.
2. In the property page, select the tab in which to map the variable, and then click Add
Variable.
4. In the property page, enter the required value for the Base Address property.
5. For Coils and Holding Registers, set the Allow MODBUS Write property to the required
value.
You can renumber the base addresses of Modbus mapped variables. Base address values are
assigned in the order of appearance in the list of mapped variables. Base addresses range from
1 to 65536; the default starting address value is 1.
2. In the property page, select the tab having the required mapped variables.
4. In the Renumber Addresses dialog box, specify the value to use for the base address of
the first selected variable, and then click OK.
The base addresses of the selected variables are renumbered starting from the specified value.
You can allow the Modbus write attribute for coils and holding registers mapped variables.
2. In the Communication property page, select the tab having the required mapped
variables.
3. In the list of mapped variables, select and right-click the variables for which to allow the
Modbus write attribute, and then click Allow MODBUS Write.
You can disable the Modbus write attribute for mapped variables. The Modbus write attribute
is only available for coils and holding registers variables.
2. In the Communication property page, select the tab having the required mapped
variables.
3. In the list of mapped variables, select and right-click the variables for which to disable
the Modbus write attribute, and then click Disable MODBUS Write.
3. In the list of mapped variables, select the variables to remove, and then click Remove
Selected.
The selected variables are removed from the Modbus mapping list.
Note: As a Modbus slave device, the controller only transmits data upon a request from a
Modbus master and does not communicate with other slaves.
When configuring a controller as a Modbus slave, you need to select whether the slave uses a
serial or Ethernet connection. The connection type affects the slave properties such as the
available protocols and ports.
Serial Port The serial port used for Modbus communications. Possible value
is one of the following: S1-1, S1-2, S2-1, S2-2, S3-1, or S3-2.
Name Name of the Modbus slave.
Protocol When using a serial port, the controller supports Modbus RTU.
ID Represents the Slave ID for a serial connection. Possible values
range from 1 to 247; the default value is 1.
Port For serial connections, the Port field is disabled.
Comment Free-formatted text
Per processor, you can have a maximum of two Modbus slaves using a serial connection, one
per serial port. A controller having three processor modules supports up to six Modbus slaves
using serial ports.
Ethernet Port The Ethernet ports used for Modbus communications. Possible
value is one of the following slices: E1-1 and E1-2, E2-1, and
E2-2, or E3-1 and E3-2.
Name Name of the Modbus slave.
Note: Modbus slaves having the same Modbus master must use
unique port numbers.
Comment Free-formatted text
Per processor, you can have a maximum of 10 Modbus slaves using an Ethernet connection. A
controller having three processor modules supports up to 30 Modbus slaves using Ethernet
ports.
1. In the Communication View, expand the required controller, and then expand the
MODBUS element.
2. Right-click the MODBUS Slave element, and then click Add New Slave.
3. In the Communication View, double-click the slave instance, then in the Communication
property page, select the connection type and define the required properties.
The AADvance controller can fulfill the role of a Modbus master to one or more Modbus slave
devices. Slave devices can include programmable logic controllers, remote devices (typically
with little or no processing capability) and, more rarely, other functional safety controllers
(Trusted or AADvance). A controller can have a maximum of 32 Modbus masters.
The AADvance controller supports the Modbus TCP and Modbus RTU protocols, as well as a
subset of Modbus commands. Each Modbus master can connect to only one Modbus TCP slave
device or to one or more Modbus RTU slave devices. You can use Modbus TCP with Ethernet
ports and Modbus RTU with point-to-point or multi-drop serial links. Serial links can use a
full-duplex, 4-wire connection, or a half-duplex, 2-wire connection.
The Modbus master functionality has a safety integrity level of zero (SIL0) and
should only be used for non-safety applications.
To use the AADvance controller as a Modbus master, you must perform the following:
Define the physical connections from the controller to the slave devices
Set up the project for Modbus master and configure the application
The Modbus master functionality is built into the 9110 processor module and the physical
communication ports are located on the 9100 processor base unit.
The following example displays possible arrangements for Modbus master connections:
You can set up an individual list of messages (commands) for each slave device. Modbus read
commands cause data to be read from the slave device to the Modbus master, while Modbus
write commands cause data to be copied from the Modbus master to the slave device. You can
also define a sequence of broadcast write commands, which a Modbus master can send to
multiple Modbus RTU slaves without requiring an acknowledgment. The AADvance
controller can control and monitor individual Modbus master objects and their slave links.
A processor module failure also causes the failure of the Modbus communications allocated to
that processor. Communication with slaves allocated to different processor modules are
unaffected.
When configuring a Modbus Master, you need to define the following properties:
Last Rate, reports the length of the most recent scan time.
All Modbus masters defined for a project (be they Modbus RTU or Modbus TCP) function
independently of each other. Each master polls its associated slave devices, to send the
messages scheduled for the slaves.
If a Modbus master encounters communication errors to a slave device, the master suspends
polling the slave for a length of time. The suspension enables polling other slaves on the same
master without pausing for the communications timeout on each cycle. At regular intervals, the
controller pings the non-communicating slave. When the slave responds to a ping, the polling
of the slave restarts on the next cycle.
Note: If the controller receives error messages with the replies from a slave, the slave remains
in the polling cycle since the controller does not treat error messages as a communication
failure.
1. In the Communication View, expand the required controller, and then expand the
MODBUS element.
2. Right-click the MODBUS Master element, and then click Add New Master.
4. In the property page, select the required Master Connection and Port, and then define the
required properties.
You define Modbus master slaves for existing Modbus masters. A controller and a Modbus
master can have a maximum of 64 master slaves. When adding a master slave, you are creating
a link between the Modbus master and slave device. Each master slave device represents a
server. When configuring a Modbus master, you need to define general and messages
properties.
Important: If the Modbus master is configured for Modbus TCP, only create one master slave
link. If you reconfigure a Modbus RTU master having multiple slave links to Modbus TCP,
you can only keep one master slave and must delete the other links.
Every Modbus master slave link contains a pair of holding registers: a control register and a
slave register. The control register enables the application to control the link and port, while
the status register retrieves the status information. Each register is found at a unique address
and is defined using the Control Address and Status Address. Registers are optional. To use a
register, you must declare a variable for the register in the application variables and the address
must also be specified in the holding registers.
Name Name of the Modbus master slave. Possible values are any
combination of alphanumeric characters and punctuation
including spaces.
Slave ID Unique identifier for the Modbus master slave.
When the protocol of the master is RTU, possible values range
from 1 to 247; the default value is 1.
When the protocol of the master is TCP, possible values range
from 1 to 255; the default value is 255.
Note: Modbus slaves having the same Modbus master must use
unique port numbers.
Note: You are not recommended to use the Do Not Ping mode
since the master does not look for the slave after disconnection.
When using Do Not Ping, communications only restart when there
is a change to the control register of the master or slave.
Ping Interval The maximum time between each initiation of a Read Holding
Register or Function Code 08 diagnostic message and specified
individually for each master slave.
Possible values range from 0 to 65535 milliseconds; the default
value is 5000 ms.
Ping Address For use with the Read Holding Register ping mode and specified
individually for each master slave; it is the Modbus address of the
slave holding register.
Possible values range from 1 to 65536, or 0 to disable; the default
value is 0.
Last Rate, reports the length of the most recent scan time.
Modbus Statistics
The AADvance controller has a cycle timer and counters to generate statistics for each slave.
The statistics are available to the application, enabling to react accordingly or report that a link
is operating correctly. These statistics are also used by diagnostic commands.The application
can read the statistics as variables (the address of each variable must be specified) and can also
reset the statistics to zero. Statistics are only available for point-to-point message transfers.
During operation, the statistics are updated on the first message of each slave and on the first
slave linked to each master to provide the slave and master cycle times. The Workbench also
verifies the application interface to see if a statistics reset is required.
The AADvance Workbench also uses these application variables to supply diagnostic
information such as the status of the communication link and the Modbus slave devices
connected to the link.
The AADvance controller uses the absence of a response from a slave device to identify an
error on a link between a master and slave. When the AADvance controller operates as a slave,
in some cases the controller can report the following exception codes through the application:
The Modbus protocol allows these errors to pass by returning an error frame to the master. The
error frame consists of the originally requested function code with the high bit set and a data
field having the error code. The Modbus master locates these codes and considers them general
errors to the slave device. The slave status variable is set to Slave Error, enabling the
application to respond to the exception.
You can define Modbus master slaves for existing Modbus masters.
1. In the Communication View, expand the required controller, and then expand the
MODBUS element.
2. Expand the MODBUS Master element, right-click the existing Modbus master, and then
click Add New Master Slave.
3. Double-click the master slave instance, and in the Communication property page, define
the required properties and messages:
You can set up an individual list of messages (commands) for each slave device. A Modbus
master can support a maximum of 400 messages from slave devices. A Modbus master
Modbus read commands cause data to be read from the slave device to the Modbus master,
while Modbus write commands cause data to be copied from the Modbus master to the slave
device. You can also define a sequence of broadcast write commands, which a Modbus master
can send to multiple Modbus RTU slaves without requiring an acknowledgment. The
AADvance controller can control and monitor individual Modbus master objects and their
slave links.
Command Read Coils Reads the coil status in a remote slave device. You
can have a maximum Count of 2000 coils for
each message.
Read Discrete Inputs Reads the discrete input (coil) status in a remote
slave device. You can have a maximum Count of
2000 inputs for each message.
Read Holding Registers Reads the holding registers in a remote slave
device. You can have a maximum Count of 125
registers for each message.
Read Input Registers Reads the input registers in a remote slave device.
You can have a maximum Count of 125 registers
for each message.
Write Coils If the Master Space is Coils, forces each coil in a
sequence of coils on and off in a remote slave
device.
If the Master Space is Discrete Inputs, writes to
each discrete input in a remote slave device.
You can have a maximum Count of 2000 coils or
inputs for each message.
Write Holding Registers Writes to the holding or input registers. You can
have a maximum Count of 125 registers for each
message.
All Modbus master objects defined for a project (be they Modbus RTU or Modbus TCP)
function independently of each other. Each master polls its associated slave devices, to send
the messages scheduled for the slaves.
Example
The following example displays the message schedule for a master having three slaves
requiring a different number of messages:
1. In the Communication View, expand the required MODBUS master, and then
double-click the required MODBUS master slave.
The Communication property page is displayed with the General and Messages tabs.
3. To add a message, click Add Message, and then specify the message properties.
1. In the Communication View, expand the required MODBUS master, and then
double-click the required MODBUS master slave.
The Communication property page is displayed with the General and Messages tabs.
3. To delete messages, select the required messages in the grid, and then click Remove
Selected.
OPC
SOE
1. In the Communication View, expand the controller, and double-click Workbench &
OPC.
The Communication property page for the Workbench and OPC is displayed.
See Also
Defining Ethernet Ports
The AADvance Workbench enables the write access from the Workbench OPC portal without
restricting access. You can only allow OPC write for variables from the OPC-specific
Communication property page.
By default, the following options to map OPC variables are selected (True):
Note: When Auto-include All Variables is selected, all of the controller’s variables are added
to the list of mapped variables.
When adding or removing individual variables, the Auto-include All Variables option must be
cleared.
1. In the Communication View, expand the required controller, and then expand the
Workbench & OPC element.
2. Double-click OPC.
The Communication property page displays the variables mapped for OPC
communication.
4. To automatically include all variables for the OPC service, select Auto-include All
Variables. You can also choose to add all of a controller’s variables by clicking Add All
Variables.
5. To add individual variables to the list, click Add Variable, and then choose the required
variable from the Variable Selector.
6. To remove a variable, select a variable from the list, and then click Remove Selected.
You can enable OPC write for variables mapped for OPC communications.
1. In the Communication View, expand the required controller, and then expand the
Workbench & OPC element.
2. Double-click OPC.
The Communication property page displays the variables mapped for OPC
communication.
3. In the property page, in the Allow OPC Write column, select the required variables.
The AADvance Workbench supports a Sequence of Events (SOE) service for boolean
variables. When an SOE service is defined, you can define the following SOE properties for
variables:
SOE is dependent on the scan time. When you map a wired input variable to SOE and the state
changes, the variable uses the timestamp local to the I/O module. When you map an unwired
variable to SOE and the state changes, the variable uses the timestamp voted by the processors
at the beginning of the application cycle.
You can add and remove variables from the SOE variables list. For SOE variables, you can also
define the falling-edge severity, rising-edge severity, filter time, as well as reference a variable.
1. In the Communication View, expand the required controller, and then expand the
Workbench & OPC element.
2. Double-click SOE.
The Communication property page displays the variables mapped for SOE
communication.
3. In the property page, add the required variables by clicking Add Variable.
The serial port settings define the protocol type and the data characteristics of the individual
serial ports.
You can choose to configure the serial ports from a list or select them individually by
expanding Serial element.
1. In the Communication View, expand the required controller, and then double-click the
Serial element.
2. In the property page, specify the properties for the individual serial ports.
The AADvance controller supports a fault-tolerant Simple Network Time Protocol (SNTP)
service, synchronizing the date and time used by the networks of the system. The NTP protocol
enables time to be communicated using networks. Synchronizing the date and time used by
controllers facilitates using the Sequence of Events (SOE) service for boolean variables,
log-based troubleshooting, as well as increasing the dependability of other investigations.
SNTP client
SNTP server
Controllers are usually configured as SNTP clients, receiving the time from a dedicated time
server. When no dedicated time server is available, the AADvance controller can be used as an
SNTP server. Using a local time server enables broadcasting. Broadcasting is considered the
most efficient and predictable way to circulate the time to many clients.
You can use one of the following methods to provide a network time server:
Note: You can configure any of the three processor modules as time
servers. When one processor module is configured as an SNTP server,
the other processor modules, including the module set as the server,
must not be configured as SNTP clients.
Whether configuring SNTP as a client, server, or both, you must always select both Ethernet
ports of a processor slice (even when only a primary server is required). The first Ethernet port
selected in the list is considered the primary network time server. The secondary time server is
only used when no primary network time server is visible.
Configuring a Controller as an SNTP Client
As an SNTP client, the AADvance controller accepts the current time from an external
Network Time Protocol (NTP) or SNTP network time server.
The SNTP client receives the real time clock data from the primary network time server.
Important: Modifications to the SNTP settings are active after the power has cycled.
The SNTP client settings provide the following information to the controller:
1. In the Communication View, expand the required controller, and then double-click
SNTP.
2. From the property page, in the SNTP Client section, select Enable SNTP Client.
4. Select the required Ethernet Ports and then define the SNTP Server IP Address property
for the required servers.
For a non-fault tolerant operation, define one SNTP server for only one processor.
The other processors will automatically synchronize to the first processor and inherit
the time.
For a fault-tolerant SNTP client operation, define more than one server address.
5. Define the Required SNTP Version property for each required pair of servers for the
processor modules.
Note: When the NTP/SNTP server version is unknown, use the Any option, disabling some
validation aspects of the incoming signal.
The AADvance controller can fulfill the role of a primary or secondary SNTP server to provide
a network time signal throughout the network.
SNTP servers can operate in broadcast and unicast time synchronization signal modes. For
both modes, specifying a directed broadcast address for an interface enables serving time on
the interface. This method of configuring is derived from the NTP configuration command
language. For an interface, the directed broadcast address:
For example, if the IP address for an interface is 10.10.1.240 and its subnet-mask is
255.255.255.0, then the directed broadcast address is:
= (10.10.1.255)
Important: Modifications to the SNTP settings are active after the power has cycled.
You need to configure each pair of servers for all processor modules.
1. In the Communication View, expand the required controller, and then double-click
SNTP.
2. From the property page, in the SNTP Server section, select Enable SNTP Server.
3. Select the required Ethernet Ports, and then define the SNTP Server Broadcast Address
Mask and Broadcast Poll (seconds) properties for the required servers.
To disable the server, set the IP address to 0.0.0.0
For a non-fault tolerant operation, define one SNTP server for only one processor.
The other processors will automatically synchronize to the first processor and inherit
the time.
In a system having many AADvance controllers, configuring one controller as a client and
server can be helpful. The controller becomes the client of a hardware or software network time
server and transmits the date and time to the other controllers configured as clients. A controller
being both a client and server can reduce the load on the server when the clients are using
unicast.
See Also
Configuring a Controller as an SNTP Client
Configuring a Controller as an SNTP Server
Each available serial port shall support a single TCP/IP connection. You cannot establish a TCI
TCP/IP connection to an unavailable serial port, i.e., where the corresponding processor
module is not present or is inactive. Serial ports retain their configured settings for TCI mode.
You can establish TCI links between any serial port and any Ethernet port (i.e., the Ethernet
and serial ports may be for different processor modules).
When a TCI link is established, any incoming data from the TCP/IP connection is transmitted
to the serial port and any incoming data from the serial port is transmitted to the TCP/IP
connection. Incoming data from the TCP/IP connection is immediately transmitted to the serial
port. Incoming data from the serial port is transmitted to the TCP/IP connection when one of
the following conditions occurs:
The elapsed time between received characters exceeds the specified Idle Time value
Connections only transmit valid characters; Connections ignore characters having errors such
as parity or framing.
Inactivity Time The period of time where no data flows through the TCP
connection (in either direction) before the TCI function closes
down the connection, in seconds. Closing the connection prevents
a dormant connection being kept open. In any case, if the
controller is re-enabled any TCI connections will be closed.
Possible values are 1 to 65535; The default value is 600.
Idle Time The period of time waiting for incoming characters from a serial
device, in milliseconds. When a complete packet is received,
AADvance forwards the data through the Ethernet interface. If
idle time is 0, individual characters are forwarded in their own
TCP segment, wasting much bandwidth and processing time.
Possible values are 1 to 1000; the default value is 3.
For online changes, while the system is operational, you can enable or disable transparent
communications operations and modify the Inactivity Time and Idle Time properties.
1. In the Communication View, expand the required controller, and then double-click Serial
Tunneling.
3. For each port, define the Inactivity Time and Idle Time properties.
The controller consuming the data establishes a binding link with the controller producing the
data. The controller also schedules sending and receiving data, sending diagnostic data,
managing the safety response when faults occur, and managing communications redundancy.
When defining bindings, controllers must be connected via the SNCP (Safety Network Control
Protocol) network. The SNCP network is a SIL 3 certified protocol supplying a safety layer for
the Ethernet network. The following diagram displays an SNCP network:
SNCP networks can be configured as simplex (fail-safe) or redundant (fault tolerant). The
network configuration depends on the application safety and availability requirements. Since
the connection between controllers is treated as a logical network, sending and receiving data
occurs independently from the physical network.
For individual controllers, variable binding definitions are available from both the producer
mapping and consumer mapping perspectives. For example, you can view the C1_Var1
(Producer) to C2_Var1 (Consumer) binding between Controller1 and Controller2 from the
Produce Mapping view for Controller1 or the Consume Mapping section for Controller2.
Note: When importing or adding existing controllers having bindings, these controllers must
keep the same number and name as when exported to retain binding definitions. Therefore,
before importing or adding such controllers, make sure to renumber and rename conflicting
controllers.
Bindings use the parameters defined for the producer controller; parameters defined for the
consumer controller are ignored. Multiple consumers can connect to a single producer. A
single consumer can connect to multiple producers. A producer can also be a consumer and
vice versa.
Variables are not updated in the consuming controller until the producing controller sends the
values through the binding media:
Binding
Consumer
AADvance does not impose the read-only accessibility for consumed variables. However, to
avoid conflicts between bindings and the execution of POUs, it is highly recommended to
declare consumed variables with the read-only attribute.
Before defining bindings between controllers, you need to create a link enabling the transfer of
variable values between these controllers. For each controller, you need to specify the Ethernet
port allowing communication and the SNCP link properties.
To test values for the binding status, you should create the following defined words in the
dictionary for your project:
To monitor the health of the bindings network, you can use the consume status variable and the
following function blocks: KvbConsNetStatus and KvbProdNetStatus.
You define bindings between controllers in the Bindings section of the Communication View:
Binding Process
At the start-up of a binding process, the consume status variable is set to the
SNCP_KVB_ERR_NO_PRODUCER value and the consumer sends a "Request Connect"
message to the producer. When the producer receives the "Request Connect" message, it
validates the message, enters the consumer in a list, and sends a "Reply Connect" message if
accepted. If no response is received within Connect Timeout milliseconds, the consumer
sends another "Request Connect" message and this process continues until a "Reply Connect"
message is received from the producer. During the connection process, the consume status
variable value is set to the SNCP_KVB_ERR_BINDING_IN_PROCESS for the duration of
the application cycle while sending the "Request Connect" message.
When the consumer receives the "Reply Connect" message, it also validates the message and
may set the consume status variable value to SNCP_KVB_ERR_BAD_CRC if a mismatch
exists between the producer and the consumer CRC. If the connection is accepted, the consume
status variable is set to SNCP_KVB_ERR_BINDING_READY.
The target is a producer or a consumer for the first time, the connection process is started
and proceeds as during start-up.
The target was and remains a producer, the producer clears the list of connected
consumers, loads new binding data, restarts the binding process and waits for a consumer
to request a connection.
The target was and remains a consumer, the consumer sends a "Disconnect" message to
the producer, loads new binding data and enters in a reconnection state. In the
reconnection state, the consume status variable is set to the
SNCP_KVB_ERR_UPD_IN_PROCESS value and the consumer sends a "Request
Connect" message to the producer. If an update behavior default value is defined, the
bound variable takes this value. The reconnection process following an online change is
the same as the start-up connection process except CRC errors are ignored since the
producer may not yet be updated. A reconnection attempt will also occur once every
Connect Timeout time lapse.
Links between controllers enable the transfer of values between producer and consumer
variables defined in bindings. Before defining variable bindings, you need to create links
between controllers having producer variables and consumer variables to use in these bindings.
To use bindings, you must define at least one Ethernet port to be used by SNCP bindings. When
multiple ports are defined, each IP address is pinged to locate accessible links. Communication
occurs on the first Ethernet port (slice) selected in the list of ports; the other addresses continue
to be pinged. If a timeout occurs on the active link, communications switch to another IP
address. To use bindings, you must also configure the SNCP link properties.
Important: Linked controllers must have the same SNCP Link Properties.
The following example displays the timeout behavior when Max Age is set to 2500 ms and
Bind Response Timeout is set to 1000 ms:
You create links between controllers having producer variables and consumer variables to use
in these bindings
1. In the Communication View, expand the required controller to link, then right-click
Bindings, point to Add Controller Link, and then click the controller with which to
link.
3. From the property page, in the Allow Communication section, select the required Ethernet
ports. The available Ethernet ports are those defined for the individual controllers.
4. In the SNCP Link Properties section, enter the required values for the following
properties:
Bind Request Timeout (ms)
Bind Response Timeout (ms)
Connect Timeout (ms)
Max Age (ms)
Update Timeout (ms)
6. In the Variable Selector, select the required variable of type DINT, and then click OK.
1. In the Communication View, expand the required controller, and then expand Bindings.
You can map variable bindings from the producer or consumer mapping perspective for a
controller. When mapping bindings, you can view all available variables for both linked
controllers. You create a binding by selecting a variable from each controller, then adding it to
the bindings list. The Bindings list displays the variables and data type of defined bindings. For
the consumption behavior of individual variable bindings, you can specify a value to use for
error behavior and update behavior; the default value is the last value for the variable binding.
Note: Default values for the error behavior and update behavior are unsupported by variable
bindings using complex data types such as structures and arrays; you must use the last value.
When you select a variable from a list of available variables, the details for the variable are
displayed below the list. You can limit the number of variables displayed for a controller by
typing search characters.
You can delete or rename variables used as producer variables in bindings. However, these
modifications cause the bound variables to display errors.
The consumption behavior indicates the values to use when communication for the binding is
in error, i.e., the update timeout period is exceeded, and during an online update. The update
behavior period begins when the producing or consuming variables are being updated and ends
when the binding definition between the producing and consuming variables match and the
consuming variable receives valid production values.
When creating a variable binding, you can choose to create the binding from the perspective of
the controller having the producer variable or from the perspective of the controller having the
consumer variable. This procedure defines a binding from the perspective of the controller
having the producer variable.
2. Create a link with the controller having the consumer variable to include in the binding.
The link between the controllers is created and has a Produce Mapping and Consume
Mapping item.
The Communication property page is displayed and lists the producer controller’s
variables in the list on the left and the linked consumer controller’s variables in the list on
the right.
4. From the property page, select the producer variable from the list of producer variables
on the left and the consumer variable from the list of consumer variables on the right.
5. Verify the variable information displayed below the lists of producer variables and
consumer variables.
6. Specify an Error Behavior and Update Behavior for the binding, and then click Add.
CIP should only be used to share non-safety data with other controllers. To share
safety-related data between AADvance controllers, use SNCP bindings.
The controller supports produce and consume communications to redundancy systems. The
support for produce/consume variables is non-interfering; a failure of the Ethernet/IP stack
does not interfere with the safe operation of the system.
To use CIP over Ethernet/IP, define the required consume and produce links, specify an
Ethernet port to connect to the CIP network having the remote controller, then define producer
and consumer variables (or structures) for the exchange of data. For CIP consume links, also
specify the producer and the CIP path to the producer. At runtime, the controller having
producer variables sends values to the remote controller, whereas, the controller having
consumer variables pulls values from the remote controller having producer variables.
Warning: When connecting a controller not supporting CIP to a CIP network, the Workbench
displays a warning and does not implement the connection. The default IP address for a
connection between a controller and a CIP network is blank. When a valid IP address is not
specified, the Workbench reports an error when building: 'Network CIP: invalid connection
properties for … (the particular configuration).'
Communications Cycle
Before executing the logic at the start of an application scan, the AADvance controller sets the
consumer variables to the most recently received values. The controller updates the producer
variables after executing the logic at the end of the application scan. When sending a packet,
the AADvance controller uses the most recent value of a producer variable, ensuring the
variable uses the expected Requested Packet Interval (RPI).
A consumer variable retains the most recently received value; a default value cannot be set.
CIP over Ethernet/IP shares non-safety data between AADvance controllers as well as other
controllers supporting CIP over Ethernet/IP. To use CIP over Ethernet/IP, configure controllers
to use the Unicast mode since AADvance controllers use unicast for CIP.
For a controller, you can create one CIP produce link for sending data to a remote controller
across a CIP network. When defining a produce link, you need to specify the Ethernet port
connecting to the CIP network having the remote controller. You can then map producer
variables.
Note: If the IP address of the producer is modified, you must update the path to the producer
in the consume link.
1. In the Communication View, expand the required controller, right-click CIP, and then
click Add CIP Produce Link.
The With Any link and CIP Produce item are added to the Communication View tree
structure.
2. Double-click the With Any link, then in the Communication property page, select the
Ethernet port to use for communication with the CIP network.
The producer link is defined and you can now map CIP producer variables.
Each AADvance controller supports 128 mapped producer variables and a maximum of 255
CIP variables. The maximum size of a CIP variable is 500 bytes. A variable is configured either
as a producer or as a consumer; a variable cannot be both. Only global variables are available
for use with controllers supporting a connection to a CIP Network. Only BOOL, DINT, INT,
LINT, LREAL, REAL, and SINT data types can be used with CIP; library data types are
unsupported.
The Communication property page displays these properties for CIP producer variables:
Property Description
Name Name of the variable. For CIP producers, variable names are limited to
40 characters.
Remote Tag Name of the consumer variable communicating with the producer
Name variable
Data Type Data type of the global variable.
BOOL, DINT, INT, LINT, LREAL, REAL, and SINT data types are
supported as long as the data type is of size 4 bytes (32 bits) or larger.
Array or structure variables are also supported, but not member elements
of arrays or structures. To transfer data types smaller than four bytes,
create a user-defined data type and pad it accordingly.
When the variable is a structure containing members of supported data
types, each member starts on a new byte or word depending on the size.
For example, a DINT starts a new 4-byte word even though the last word
only had a one-bit BOOL.
Direction For I/O wiring, indicates whether a variable is an input, output, or
internal.
Max Connections The maximum number of simultaneous consumers of the variable.
Possible values range from 1 to 10. The default value is 5.
The AADvance controller supports a maximum of 255 CIP connections.
Warning: The AADvance controller rejects any CIP requests to connect to a producer variable
beyond the maximum number of connections (255). Do not set the number of connections
larger than required since each connection uses resources from a limited pool.
1. In the Communication View, expand the CIP produce link, and then double-click CIP
Produce.
2. In the property page, map a producer variable by clicking Add Variable to access the
Variable Selector.
3. In the Variable Selector, select the required variable, and then click OK.
4. In the property page, define the Max Connections for the producer variable.
For a controller, you can define up to 128 CIP consume links for receiving data from remote
controllers across a CIP network. You add one consume link per controller requiring CIP
communications. When defining a CIP consume link, you need to specify the Ethernet port
connecting to the CIP network having the remote controller.
Note: When configuring a CIP consume link, you must define the producer name and the CIP
path to the producer. If the IP address of the producer is modified, you must update the path to
the producer.
1. In the Communication View, expand the required controller, right-click CIP, and then
click Add CIP Consume Link.
The With Unnamedx (Not configured) link and CIP Consume item are added to the
Communication View tree structure.
b) From the property page, select the Ethernet port to use for communication with the
CIP network.
c) In the Producer Name field, indicate the name of the CIP producer from which the
consumer receives data.
d) In the CIP Path to Producer field, type the CIP path to the controller. The path uses
the following format:
IP_address,port,slot
where
IP_address is the address of the CIP Ethernet module in the system.
port is the communications route from the remote controller. For ControlLogix
controllers, the port should always be 1 specifying the ControlLogix backplane.
Other numbers specify different communications routes from ControlLogix.
slot is the number of the slot where the CPU module is installed. These slots start
from 0 and are numbered from left to right.
The consume link is defined and you can now map CIP consumer variables.
Each AADvance controller supports 128 mapped consumer variables and a maximum of 255
CIP variables. The maximum size of a CIP variable is 500 bytes. A variable is configured either
as a producer or as a consumer; a variable cannot be both. Only global variables are available
for use with controllers supporting a connection to a CIP Network. Only BOOL, DINT, INT,
LINT, LREAL, REAL, and SINT data types can be used with CIP; library data types are
unsupported.
Note: When adding a consumer variable, define the Remote Tag Name and Requested Packet
Interval (RPI) properties.
The Communication property page displays these properties for CIP consumer variables:
Property Description
Name Name of the variable. For CIP consumers, variable names are limited to
40 characters.
Remote Tag Name of the producer variable communicating with the consumer
Name variable
RPI Requested Packet Interval. The frequency in milliseconds that the remote
controller offers the variable to the AADvance controller. Possible values
range from 1 to 1000 ms. The default value is 20 ms.
1. In the Communication View, expand the required CIP consume link, and then
double-click CIP Consume.
2. In the property page, map a consumer variable by clicking Add Variable to access the
Variable Selector.
3. In the Variable Selector, select the required variable, and then click OK.
4. In the property page, define the Remote Tag Name and RPI for the consumer variable.
Note: The current version of the AADvance controller only supports two multicast IP
addresses. A fixed address can be configured for each Ethernet port.
A Peer-to-Peer network consists of one or more Ethernet networks connecting together a series
controllers to enable passing safety application data between them. Peer controllers only
communicate with other peer controllers sharing the same network. You can connect the
following types of controllers:
Trusted controller The controller has four communication interfaces with eight
Ethernet ports. The Peer-to-Peer network can use all eight physical
Ethernet networks, referred to as subnets, to provide redundant data
paths via up to eight separate physical routes. The eight ports can be
assigned to one or multiple peer networks.
To participate in peer communication, you must fit each Trusted
system with a T812x processor interface adapter.
AADvance controller The two network interfaces of the AADvance processor module can
be used simultaneously for Peer-to-Peer communication. A triple
modular redundant (TMR) controller having three processor
modules provides a maximum of six physical connections that can
be divided between the different peer networks or assigned to the
same network.
A peer network consists of one or more subnets. Network subnets are assigned to the Ethernet
ports of the processor. Each subnet is considered a physical network representing a redundant
data path on the network. Subnets of the same redundant network should use different
processor modules to achieve the highest level of hardware fault tolerance.
Note: The AADvance Workbench also supports external communications using Modbus over
serial and Ethernet links. Performance may be affected when using both Modbus and
Peer-to-Peer communications.
The information to transfer over the peer network is defined within the application data blocks.
You configure data blocks of 16 or 128 digital points, 16 or 128 analog points, as well as the
network status information.
Communications Cycle
The Peer-to-Peer network operates in a cycle. Each controller is asked in turn to send all the
configured output data.
At the start of the communications cycle, the peer master issues an inquiry command to the first
slave. If the master receives a response, the slave is registered as active and the master repeats
the process with the next slave. The sequence continues until all slaved are polled.
For redundant networks, data integrity is verified using the CRC of the data packet sent
between systems.
When configuring the Peer-to-Peer network, you must define the following settings:
Network ID The number identifying the network for the controller. Possible values
range from 1 to 8.
Peer ID The number identifying the controller IP address in the Peer List. Possible
values range from 1 to 40.
2. In the Network Configuration dialog box, set the Network ID and Peer ID, and then click
OK.
The Peer-to-Peer network is added to the controller. Subnet 1 is automatically added to the
network.
The Network as well as its subnets and data blocks are deleted.
When configuring the Peer-to-Peer subnet, you must define the following settings:
Subnet ID The number identifying the Ethernet network for the controller. Possible
values are 1 to 8.
Network The processor slice that the peer network is physically connected to.
Interface Possible values are Processor Slice A, Processor Slice B, Processor Slice C,
or No Connection.
Response The amount of time for a peer to acknowledge reception of a data packet, in
Timeout (ms) milliseconds. Possible values range from 0 to 10000 ms. The default value
is 0 ms.
Set the value above 0 to avoid network packet sequence errors, which occur
when the propagation delay between two nodes exceeds 1 ms. The value
must be greater than the propagation delay (measurable by using the ping
command).
Set to 0 when no acknowledgment is required. For example, no
acknowledgment is required if the entire Peer-to-Peer network is on a local
Ethernet network and contains no routers or gateways.
The Response Timeout acts as a watchdog trip for a lost packet and should
be the shortest value for the timeout settings.
Note: A slave is only declared inactive (FALSE) after the occurrence of two
consecutive timeouts. The slave remains inoperable until reactivated by the
subnet master.
To calculate the Slave Transmit Timeout value, do the following:
Subnet 1 is automatically created when adding a network. When adding subsequent subnets to
a network, you can define the Subnet ID.
1. In the Communication View, right-click the required Peer-to-Peer network instance, and
then click Add Subnet.
2. In the Subnet Configuration dialog box, set the Subnet ID and then click OK.
4. In the property page, enter the required values for the following properties:
Network Interface
Response Timeout
Refresh Timeout
Slave Transmit Timeout
Note: Networks must always have at least one subnet; you cannot remove the last remaining
subnet under a network.
In the Communication View, right-click the subnet instance to remove, and then click
Delete.
The Peer List contains the IP addresses of the peer controllers defined for one subnet. Each peer
controller has a unique Peer ID, defining the position of the IP address in the Peer List. The
Peer List can contain up to 40 Peer IDs. The Peer List must be the same for all controllers on
the same subnet. You can configure multicast IP addresses in the Peer List.
Unique IDs enable data to pass between one output data block and one input data block, or
multicast from one output data block to multiple input data blocks on different controllers.
Muticasting is part of TCP/IP communications. The following IP addresses are specifically
used for multicast:
224.1.2.3
224.4.5.6
Each receiving peer is configured to accept data from the multicast addresses as well as the
defined IP address for that peer.
The Communication property page is displayed with the Subnet and Peer List tabs.
3. In the list, enter the IP address for each peer. You must enter the IP address in the row
having the corresponding Peer ID.
The information to transfer over the peer network is defined in data blocks. The data blocks
can be used with safety and non-safety data. Data blocks can have either 16 or 128 channels.
You can add the following types of data blocks:
Digital Inputs
Analog Inputs
Digital Outputs
Analog Outputs
Each data block must have a unique ID on the peer network. To enable communication
between an input data block and output data block, the blocks must be on the same network,
have the same Block ID, and reference each other’s Peer ID in the Peer List.
After adding a data block, you can wire status variables and data variables.
When adding a data block, you must define the following properties:
Block ID The number identifying the data block. Possible values range from 1
to 64.
Direction Indicates whether a data block is an input or output.
Peer ID For input data blocks, the number identifying the peer sending data.
For output data blocks, the number identifying the peer receiving
data. Possible values range from 1 to 40.
Type The type of data block. Possible values are digital and analog.
Size The amount of channels associated to a data block. Possible values
are 16 and 128.
Warning: The analog data block having 128 channels must only be used for
non-safety related data since there are insufficient measures to ensure the transport
of data meets the safety integrity level of SIL3.
1. In the Communication View, right-click the required peer-to-peer network, and then click
Add Data Block.
2. In the Data Block Configuration dialog box, enter the required values, and then click OK.
When configuring a digital input data block, you must define the following properties:
You can wire the following status variables for digital input data blocks:
Input Data is Valid TRUE - Input data was refreshed within the specified Refresh
Timeout value.
FALSE - Input data was not refreshed within the specified time.
Refreshed by Subnet 1 This status variable is used to detect latent faults within a redundant
network. The data is simultaneously delivered over all available
subnets.
TRUE - The input data was refreshed by Subnet 1 within the
specified Refresh Timeout value.
FALSE - The data failed to arrive on Subnet 1 within the specified
Refresh Timeout milliseconds.
Refreshed by Subnet 2 This status variable is used to detect latent faults within a redundant
network. The data is simultaneously delivered over all available
subnets.
TRUE - The input data was refreshed by Subnet 2 within the
specified Refresh Timeout value.
FALSE - The data failed to arrive on Subnet 2 within the specified
Refresh Timeout milliseconds.
The Communication property page is displayed with the Data Block and Data Variables
tabs.
2. In the Data Block tab, enter the required values for the Refresh Timeout and Value in
Failed State.
When configuring an analog input data block, you must define the following properties:
You can wire the following status variables for analog input data blocks:
Input Data is Valid TRUE - Input data was refreshed within the specified Refresh
Timeout value.
FALSE - Input data was not refreshed within the specified time.
Refreshed by Subnet 1 This status variable is used to detect latent faults within a redundant
network. The data is simultaneously delivered over all available
subnets.
TRUE - The input data was refreshed by Subnet 1 within the
specified Refresh Timeout value.
FALSE - The data failed to arrive on Subnet 1 within the specified
Refresh Timeout milliseconds.
Refreshed by Subnet 2 This status variable is used to detect latent faults within a redundant
network. The data is simultaneously delivered over all available
subnets.
TRUE - The input data was refreshed by Subnet 2 within the
specified Refresh Timeout value.
FALSE - The data failed to arrive on Subnet 2 within the specified
Refresh Timeout milliseconds.
The Communication property page is displayed with the Data Block and Data Variables
tabs.
2. In the Data Block tab, enter the required values for the Refresh Timeout and Value in
Failed State.
When configuring a digital output data block, you must define the following property:
The Communication property page is displayed with the Data Block and Data Variables
tabs.
2. In the Data Block tab, enter the required value for the Refresh Interval.
When configuring an analog output data block, you must define the following properties:
The Communication property page is displayed with the Data Block and Data Variables
tabs.
2. In the Data Block tab, enter the required values for the Refresh Interval and Minimum
Change before Update.
Data variables are used to send digital or analog data from data block outputs to data block
inputs. Each data block has either 16 or 128 channels. An input channel must have the same
variable data type as the corresponding output channel.
You can wire data variables for the following types of data blocks:
Digital Inputs
Analog Inputs
Digital Outputs
Analog Outputs
Column Description
Channel The number of the channel. Data variable grids can contain 16 or 128 channels,
where the numbering starts at 1 and continues in ascending order.
Variable The name of the variable. When no variable is wired to the channel, the directly
represented variable is displayed.
Type Only available for analog inputs and outputs, sets the data type for the variable.
Possible values are DINT and REAL; the default value is DINT.
The Communication property page is displayed with the Data Block and Data Variables
tabs.
3. For analog input and output data blocks, set the data type of the variable for a specific
channel by clicking the type to toggle between DINT and REAL.
Note: When the Quality of Service feature is enabled, the scan rate of the controller may differ
by five milliseconds.
When enabled, the service uses bit patterns in the "DS-byte" of IP, which is the
Type-of-Service (ToS) octet for IPv4. When defining the quality of service, you can set the
priority of applications as high, medium, low, or as a value ranging from 0 to 255.
Important: When using all 8 bits of the ToS byte, the networking equipment may interpret the
packet incorrectly. To avoid issues, you are recommended to use a maximum value of 252 for
ToS.
TCP Negotiation
When TCP negotiation is enabled, the TCP/IP stack applies the user-specified ToS priority
during the TCP negotiation.
When the controller acts as a server, disable TCP negotiation. The controller uses the default
value of 0 for ToS during the 3-way TCP communication and then applies the defined ToS
value when connected.
Whether enabled or disabled, the ToS value may change after the completion of the TCP
negotiation if another service has a more specific rule for the port.
Note: If you need to apply a connection by ToS during the enabled TCP negotiation, you must
define Protocol and Port values; the Peer Address must remain empty.
When setting the Quality of Service, you must define the following:
Note: To prioritize traffic coming from devices using the same port to
communicate with the AADvance controller, leave the Peer Address at 0.0.0.0.
ToS The value of the priority.
Possible values are Low, Medium, High, or a value ranging from 0 to 255. The
default value is 0.
Important: When setting the value of ToS to 255, the networking equipment may
interpret the packet incorrectly. You are recommended to use a maximum value
of 254 for ToS.
You can define the priority of services for up to 16 applications. For TCP, each service using
the same port must have a different peer address. For UDP, each service must use a different
port. Note that the same port number can be used for both protocols.
1. In the Communication View, expand the required controller, and then double-click
Quality of Service.
2. In the property page, select Enable Quality of Service to enable the feature.
4. In the table, set the values for the Protocol, Port, and ToS for each required service. If
needed, set the Peer Address.
The Quality of Service priority for IP traffic is now defined for the required applications.
You can perform the following actions from the Equipment View:
Configure the system type, process safety time, and battery alarm for a controller
Hardware Redundancy
The AADvance enables creating hardware redundancy from the Equipment View. When
defining I/O modules to empty IO bus slots, you have the option of adding one, two, or three
modules. Adding two (duplex arrangement) or three (triplex arrangement) modules enables
redundancy, with each module carrying out the same function to improve reliability. When
adding an I/O module having a duplex or triplex arrangement, the Workbench automatically
assigns the modules to the adjacent slots. For duplex or triplex groups, you can only configure
one set of channels.
Note: The AADvance automatically connects to each processor after setting the network
connection.
During redundancy, the processors read all the module inputs independently through the I/O
bus. The processors then share the input data, application variables, and other communication
data to agree on the data to use in the application. The processors run their logic independently,
then share the outputs to send to the I/O and communications. Once they agree on the data, the
processors individually send the output data, and then the next cycle starts.
Digital and analog modules are processed (voted) the following way:
Valid Description
Modules
3 The mid-value is used by the application
2 The lower value is used by the application
1 The value is used by the application
0 The previous value is used by the
application. A fault will occur after the
process safety time (PST).
Note: For analog output modules, the measured currents are added together since they share
the current.
A valid module means the HART and process measurements pass the integrity checks.
Output Voting
For the commanded output data to digital and analog output modules, the application does the
following:
Redundant Description
Configuration
Dual Processors The output modules processing the integrated circuit (FPGA)
disregard discrepant data from the processors and the outputs
hold (freeze) at their last state.
Triple Processors When only two of the three sets of data agree, the 2oo3 data is
used and the third set is discarded. When all three sets of data
disagree, the FPGAs discard all data and the outputs hold
(freeze) at their last state.
Note: Frozen outputs are only tolerated for the PST period. When the PST expires and no valid
data is received, the outputs enter the shutdown state defined in the application.
System Type
The type of system affects the available I/O modules. The Mixed controller type enables
configuring a standard controller with both Standard and Eurocard I/O modules.
Note: You must set the required system type before adding I/O modules to a controller.
The process safety time (PST) defines the maximum time in milliseconds that the outputs of a
controller remain in the ON state after detecting important diagnostic or application faults.
When the defined PST is exceeded, the outputs go into their specified safe states. You must set
the PST for the controller. The default PST for the controller is 2500 ms. By default, each group
of I/O modules inherits the PST from the controller. You can also set an alternate PST for each
I/O group.
Battery Alarm
The 9110 processor module contains a battery supporting retained variables as well as the Real
Time Clock (RTC) when the system power is turned off. The system contains a processor
battery alarm informing you that the battery voltage is low and the battery must be replaced.
The battery alarm is enabled by default for Standard and Mixed controllers.
Note: You must disable the Battery Alarm for Eurocard controllers.
The remote fault reset enables resetting faulty processors in the controller without needing to
physically press the Fault Reset button located on the T9110 front panel. As well, you can use
the remote fault reset to join processors to a running system. The remote fault reset is required
for sub-sea systems since it is impossible to physically manipulate the processors. By default,
Remote Fault Reset is disabled (0x00000000). To enable the feature, you must enter a non-zero
hexadecimal value matching the combined values of the control integers Allow Remote Fault
Reset MSB and Allow Remote Fault Reset LSB. Possible values range from 0x00000001 to
0xFFFFFFFF. When enabling Remote Fault Reset, a warning is displayed confirming you
want to remotely reset the controller.
To configure the controller system type, process safety time, battery alarm, and remote
From the Controller property page, in the Processor tab, you can set the system type, process
safety time, battery alarm, and remote fault reset for a controller.You must set the system type
before adding I/O modules. The defined PST must be larger than the execution time for the
application to run. By default, the battery alarm is enabled. You can disable the alarm for
sub-sea systems or other systems lacking a battery. By default, the remote fault reset is
disabled. You are recommended to enable the fault reset for sub-sea systems.
3. From the Processor tab, select the required System Type. You can select one of the
following:
Standard
Eurocard
Mixed
The Equipment View is refreshed to display the IO Buses and slots attributed to the
specific system type.
4. From the Processor tab, in the Process Safety Time field, type the required value ranging
between 20 ms and 60000 ms.
Note: For large systems, set the PST for the controller to 1500 ms or more, ensuring sufficient
time to educate a second or third processor module.
6. Set the Remote Fault Reset value to 0x0 (disabled) or a non-zero hexadecimal value
(enabled).
When enabling the property, a warning is displayed confirming the action. Click Yes
to enable Remote Fault Reset.
The controller system type, PST, battery alarm, and remote fault reset are configured for the
controller and you can now add I/O modules to the controller.
You configure the processor variables from the property page of the controller. Each type of
processor variable is wired in a separate tab, as seen in the following:
Status tab, contains status integers and booleans supplying data about the controller to the
application.
Control tab, contains control integers and booleans enabling the application to send data
to the controller.
RTC tab, contains status, program, and control variables for the real time clock. RTC
status variables supply the date and time to the application. RTC program variables hold
the date and time to be written to the real time clock. RTC control variables set and
update the clock.
4. From the Variable Selector, select the required variable and click OK.
3. From the processor variable tab, locate the wired variable, and in the Unwire column
click .
Status processor variables supply data about the controller to the application. The AADvance
controller has the following status processor variables:
Status Integers
Number of Locked Input Variables
Number of Locked Output Variables
Processor Module A Temperature
Processor Module B Temperature
Processor Module C Temperature
Status Booleans
System Health
System Health Reset
Dongle Detected (Voted)
Processor Module A Online
Processor Module B Online
Processor Module C Online
Processor Module A Health
Processor Module B Health
Processor Module C Health
Processor Module A 24v1 Power Feed Health
Processor Module B 24v1 Power Feed Health
Processor Module C 24v1 Power Feed Health
Processor Module A 24v2 Power Feed Health
Processor Module B 24v2 Power Feed Health
Processor Module C 24v2 Power Feed Health
The following status integers supply data about the controller to the application:
The following status booleans supply data about the controller to the application:
System Health
Note: After a fault, you can reset the Set System Health Alarm in a system containing at least
one healthy processor or I/O module in a module group.
FALSE - The processor modules are unable to detect a program enable key.
Wiring %IX1.2.2
Description Reports the presence or absence of a program enable key.
FALSE - The processor module is faulty and the Healthy LED indicator is
red.
Wiring %IX1.2.8
Description Reports the health status of a processor module.
FALSE - The processor module is faulty and the Healthy LED indicator is
red.
Wiring %IX1.2.9
Description Reports the health status of a processor module.
FALSE - The processor module is faulty and the Healthy LED indicator is
red.
Wiring %IX1.2.10
Description Reports the health status of a processor module.
FALSE - The voltage of the back-up battery is low or the battery is missing.
Wiring %IX1.2.26
Description Reports the health status of the back-up battery in a processor module. The battery
voltage is verified during start up and then every 24 hours.
FALSE - The voltage of the back-up battery is low or the battery is missing.
Wiring %IX1.2.27
Description Reports the health status of the back-up battery in a processor module. The battery
voltage is verified during start up and then every 24 hours.
FALSE - The voltage of the back-up battery is low or the battery is missing.
Wiring %IX1.2.28
Description Reports the health status of the back-up battery in a processor module. The battery
voltage is verified during start up and then every 24 hours.
Control processor variables enable the application to send data to the controller. The
AADvance controller has the following control processor variables:
Control Integers
AUX LED Color
Allow Remote Fault Reset MSB
Allow Remote Fault Reset LSB
Control Booleans
Unlock All Locked Variables
Set System Health Alarm
HART Pass-Through
Perform Remote Fault Reset
Perform Remote Fault Join
The following control integer lets the application send instructions to the controller:
1 = red
2 = green
3 = amber
The default value is 0
Wiring %QW1.1.0
Description Sets the state of the Aux LED indicator on all 9110 processor modules.
The following control Booleans let the application send instructions to the controller:
FALSE - No effect
The default value is FALSE
Wiring %QX1.3.0
Description Removes all user locks on input and output variables.
RTC processor variables manage information regarding the real time clock. The AADvance
controller has the following RTC processor variables:
RTC Status Variables: Year, Month, Day of Month, Hours, Minutes, Seconds,
Milliseconds
RTC Program Variables: Year, Month, Day of Month, Hours, Minutes, Seconds,
Milliseconds
RTC Control Variables: RTC Write, RTC Read, Year, Month, Day of Month, Hours,
Minutes, Seconds, Milliseconds
The AADvance controller contains a real time clock (RTC) used to make a record of the time
and date of system events, SOE services, and log files. You can manually set the real time clock
of the processor by using RTC variables or use SNTP from the Communication View.
Important: You are strongly recommended to use SNTP to synchronize controllers so that all
time-related events, services, and logs use the same time of day.
You manually set the real time clock of the processor by using RTC variables.
4. Force the following RTC Control Variables to TRUE, therefore requesting IXL
restricted access: RTC Read, Year, Month, Day of Month, Hours, Minutes, Seconds, and
Milliseconds.
The RTC Status variables now display the current date and time in the processor.
6. Double-click each RTC Program Variable (Year, Month, Day of Month, Hours,
Minutes, Seconds, and Milliseconds), specify a value, and then click Write.
7. To enable writing the new date and time to the processor, set RTC Write to TRUE and
then FALSE.
The RTC Status Variables now display the set date and time in the processor.
The following RTC status variables supply data about the controller real-time clock to the
application:
The RTC program variables contain the information of the date and time to write to the
real-time clock. RTC program variables can only be used if the RTC Control variable RTC
Write is TRUE. The values are only written if the RTC control variable Year is TRUE. The
following RTC program variables are available for AADvance controllers:
The following RTC control variables set and update the real-time clock:
The change is started by the transition of the variable from FALSE to TRUE. If
the application holds the TRUE state until the end of the application cycle (or
longer), the application makes the change at the end of the cycle. There is no time
limit on returning the value from TRUE to FALSE after the clock is updated. If
the application returns the variable to FALSE before the end of the application
cycle, the clock is not updated.
Example
Year = 2008
Month = 10
Day = 28
Hours = 8
Minutes = 12
Seconds = 35
FALSE - The RTC status values are static (no update occurs).
The default value is FALSE
Wiring %QX1.6.1
Description Verifies if the RTC Status Variables (Year, Month, Day of Month, Hours,
Minutes, and Seconds) update in real time.
All RTC Status Variables must be set to TRUE when the RTC Read variable is set
to TRUE, otherwise the real-time clock is not updated.
The RTC program variable Year is only updated if the RTC control variable RTC
Read is set to TRUE and all other RTC Control variables are set to TRUE.
The RTC program variable Month is only updated if the RTC control variable
RTC Read is set to TRUE and all other RTC variables are set to TRUE.
The RTC program variable Day of Month is only updated if the RTC control
variable RTC Read is set to TRUE and all other RTC Control variables are set to
TRUE.
The RTC program variable Hours is only updated if the RTC control variable RTC
Read is set to TRUE and all other RTC Control variables are set to TRUE.
The RTC program variable Minutes is only updated if the RTC control variable
RTC Read is set to TRUE and all other RTC Control variables are set to TRUE.
The RTC program variable Seconds is only updated if the RTC control variable
RTC Read is set to TRUE and all other RTC Control Variables are set to TRUE.
The RTC program variable Milliseconds is only updated if the RTC control
variable RTC Read is set to TRUE and all other RTC Control Variables are set to
TRUE.
Note: In anticipation of modifications to the I/O hardware, you can add a duplex/triplex group
for a simplex arrangement or a triplex group for a duplex arrangement. If required, you can also
create a hot swap.
When Configuring the Controller, you select the required system type. You must define the
system type before adding any I/O modules. Different I/O modules are available depending on
the selected system type. When the system type is Mixed, both Standard and Eurocard I/O
modules are available.
The following I/O modules are available when the controller system type is Standard or Mixed:
The following I/O modules are available when the controller system type is Eurocard or Mixed:
Before adding an I/O module, ensure you have defined the required system type for the
controller.
1. From the Equipment View, expand the required controller and IO Bus to display the slots.
2. Right-click the required slot, and then click Assign I/O Module.
When adding duplex or triplex redundant groups, ensure sufficient free slots are
available adjacent to the required slot. You can also right-click an occupied slot and
then click Insert Empty Slot.
3. From the Select an I/O Module dialog box, select the required module and termination
assembly, then click OK.
You can move an I/O module to a different slot as long as the slot is empty. You can also move
a group of I/O modules as long as enough free slots are available.
From the Equipment View, expand the required IO bus, then click and drag the I/O
module to the required empty slot. You can alternately cut and paste the I/O module to the
required slot.
Digital Inputs
Analog Inputs
Digital Outputs
Analog Outputs
For all types of I/O modules, you configure the process safety time (PST) and status variable.
When configuring I/O modules, you must define the process safety time (PST). The process
safety time (PST) defines the maximum time in milliseconds that the outputs of a controller
remain in the ON state after detecting important diagnostic or application faults. When the
defined PST is exceeded, the outputs go into their specified safe states. By default, the PST is
inherited from the controller (See Configuring the Controller). You can also specify a smaller
PST for each I/O group.
When configuring an I/O module, you can use a status variable to get data from the module
such as the health, ready, online, run, and shutdown statuses. The status variable must have the
structure data type T9K_TA_GROUP_STATUS.
The following example displays the module-specific tab where you define the PST and wire
the status variable for an I/O module:
Note: The first module in a termination assembly is defined as A, the second as B, and the third
as C. The T9K_TA_GROUP_STATUS structure type always includes the fields for modules
A, B, and C even if the termination assembly only contains a simplex or duplex arrangement.
By default, the PST value is inherited from the controller, but you can set a smaller PST for I/O
groups.
1. From the Equipment View, expand the IO bus and double-click the required I/O module.
2. From the Equipment property page, in the module-specific tab, clear the Inherit option.
3. In the Process Safety Time field, type the required value ranging between 20 ms and
60000 ms. The value must be smaller than the PST set for the controller.
2. In the Equipment View, expand the IO bus and double-click the required I/O module.
3. From the property page, in the module-specific tab, click in the Status Variable
field.
4. In the Variable Selector, select the required variable and then click OK.
The status variable is wired to the I/O module. When online, the controller gets the health,
ready, online, run, and shutdown statuses for the I/O module or group.
The AADvance contains two types of variables structures when wiring to I/O channels: full
and compact. When wiring variables to I/O channels, you declare variables using the full or
compact structure data types applicable to the I/O module. You can also only wire the first
element by declaring a variable of the required data type. For example, if you only want to wire
the first element of the 9431 24Vdc AI channel, you must declare a variable of the REAL data
type.
When wiring a variable having the full or compact structure type, the AADvance Workbench
creates a set of variable structure members having the same <tagname>. The variable members
wired to the I/O channel are dependent on the chosen structure type. The syntax for a structure
member variable is <tagname>.XX, where <tagname> represents the name of the variable and
XX represents the structure member. For example, <tagname>.DI is a boolean reporting the
digital input state for a channel.
The following structure data types are used for wiring I/O variables to I/O channels:
Channels
Threshold Values
You can use the following structure types when wiring channels for digital inputs:
T9K_DI_COMPACT
T9K_DI_FULL
If you only want to wire the first element of a digital input channel, you declare a variable using
the BOOL data type. The element retrieves the input module state.
The T9K_DI_FULL structure type reports state values, including the faulted state, for digital
input channels.
You wire channel variables so the controller receives the reported input values for the channels.
T9K_DI_COMPACT
A digital input channel is faulted when the channel is unable to report a voltage within a safety
accuracy specification of 10% of the full scale of the 24 Vdc supply (2.4 V). When a state is
faulted, the state value is 7. When a faulted state is reported, the following "safe" values are
reported by the other channel variables:
Discrepancy = TRUE
Voltage = 0 mV
You wire variables to digital input channels to enable the application to use the input.
1. From the Equipment View, double-click the required digital input module.
The Equipment property page is displayed with the module-specific tab as well as the
Channels and Thresholds tabs.
2. From the Equipment property page, click the Channels tab. The channels are displayed.
4. In the Variable Selector, select the required variable and then click OK.
The channel state and line fault status for the module are determined by comparing the channel
input voltage with a set of threshold values. You can use the default threshold values or define
custom values. When defining threshold values for the input module, each channel inherits the
threshold values. You can also define individual threshold values for each digital input
channel.
An indeterminate region is defined between the closed and open regions to detect marginal
faults in either the sensor or external wiring. To prevent chatter, the AADvance controller
provides hysteresis on the thresholds for increasing and decreasing values. The AADvance
Workbench updates the reporting values during each application cycle. The following displays
the typical (default) threshold values (T#), state values (STA), digital input statuses (DI), and
line fault statuses for a digital input module:
The following default threshold values for digital inputs are for a standard (online monitored)
24 Vdc digital input channel:
You can set custom threshold values for a digital input module. The channels of the digital
input module inherit the custom threshold values. You can also define custom threshold values
for individual channels.
1. From the Equipment View, double-click the required digital input module.
The Equipment property page is displayed with the module-specific tab as well as the
Channels and Thresholds tabs.
3. Select the Use Custom Thresholds option, then in the threshold fields, type the required
values.
The digital input channels inherit the custom threshold values from the module.
1. From the Equipment View, expand the digital input module and then double-click the
required channel.
The Equipment property page is displayed with the Channel-specific tab and Thresholds
tab.
2. From the Equipment property page, click the Thresholds tab. The inherited threshold
values are displayed.
3. Select the Use Custom Thresholds option, then in the threshold fields, type the required
values.
Channels
HART
HART Pass-Through
Threshold Values
You can use the following structure types when wiring channels for analog inputs:
T9K_AI_COMPACT
T9K_AI_FULL
If you only want to wire the first element of an analog input channel, you declare a variable
using the REAL data type. The element retrieves a floating-point value representing 4 to 20
mA.
The structure types contain additional information about the input, such as the discrepancy
status. The T9K_AI_FULL structure type also reports state values, including the faulted state,
for analog input channels.
You wire channel variables so the controller receives the reported input values for the channels.
T9K_AI_COMPACT
0 represents 0 mA
5,120 represents 20 mA
Accuracy is within ± 13 counts, equivalent to ±
0.05 mA
Discrepancy <tagname>.DIS BOOL TRUE - A discrepancy in current larger than 2%
exists between the channels of a duplex or triplex
redundant configuration.
0 represents 0 mA
5,120 represents 20 mA
Accuracy is within ± 13 counts, equivalent to ± 0.05
mA
Line Fault <tagname>.LF BOOL TRUE - The state value is 1, 5, 6 or 7
FALSE - The state value is 2, 3 or 4
Discrepancy <tagname>.DIS BOOL TRUE - A discrepancy in current larger than 2%
exists between the channels of a duplex or triplex
redundant configuration.
Channel Fault <tagname>.CF BOOL TRUE - Module diagnostics detect a fault in the
channel electronics or firmware (state = 7)
State <tagname>.STA USINT Reports one of the following state values for the
channel:
1 = Open circuit
2 = Transmitter fault (low)
3 = Normal
4 = Transmitter fault (high)
5 = Short circuit
6 = Over range
7 = Faulted
An analog input channel is faulted when the channel is unable to report a count within a safety
accuracy specification of 1% of the full scale measurement range of 5,120 (51 counts, 0.2 mA).
When a state is faulted, the state value is 7. When a faulted state is reported, the following
"safe" values are reported by the other channel variables:
Discrepancy = TRUE
Count = 0
You wire variables to analog input channels to enable the application to use the input.
1. From the Equipment View, expand the analog input module, and double-click the
required channel.
The Equipment property page is displayed with the Channel-specific tab as well as the
HART and Thresholds tabs.
4. In the Variable Selector, select the required variable and then click OK.
6. In the Engineering fields, set the Low and High scaling factor in the range of 0% to
100%.
Example
Highway Addressable Remote Transducer (HART) is an open protocol for process control
instrumentation. HART combines digital signals with analog signals to supply control and
status data for field devices. The AADvance controller supports the use of HART on each
analog input and output channel. The AADvance controller also supports HART
Pass-Through. The application can use HART data to monitor and respond to device conditions
and to supply diagnostic information such as data comparison and error reporting. The HART
protocol increases the level of safety system diagnostics.
Do not use HART variables as the primary initiator for a Safety Instrumented
Function (SIF). The HART protocol does not satisfy the required safety
integrity levels for Safety Instrumented Functions.
Ensure the custom data for the device (the data given in response to HART
command 3) is used in accordance with the recommendations of the
manufacturer.
When enabling HART on an AADvance controller, you must ensure the HART field devices
support the HART commands 0 (read unique ID) and 3 (read current and four dynamic
variables). The commands are used for communication between the AADvance controller and
the HART field devices. The analog input and output modules use the HART command 3 to
collect data from the field devices as specified by Revision 5 of the HART specification.
To enable monitoring HART field device information, you wire a HART variable to the
required channels of analog input and output modules. HART variables must be declared using
the following structure types:
T9K_AI_HART
T9K_AI_HART_FULL
In the AADvance Workbench, the T9K_AI_HART_FULL structure type is used for HART
Pass-Through communication.
You can use the loop current variable for diagnostic checks in the application, comparing the
value of the variable with the value on the 4 to 20 mA loop, and reacting if there is a
discrepancy. You can also monitor the status of the field device and use this to report diagnostic
errors and manual configuration changes.
Important: The update rate for HART data from field devices is slower than the update rate
for the 4 to 20 mA analog signal itself. HART data can take a maximum of 4 seconds to update,
depending on the device type and configuration.
T9K_AI_HART
T9K_AI_HART_FULL
To monitor a field device, you must configure an analog channel to use HART by wiring a
variable having the T9K_AI_HART structure type. You must enable HART on each channel
to use the HART protocol.
1. In the dictionary, declare a HART variable having the structure type T9K_AI_HART.
2. From the Equipment View, expand the analog input module and then double-click the
required channel.
The Equipment property page is displayed with the Channel-specific tab as well as the
HART and Thresholds tabs.
6. In the Variable Selector, select the required variable and then click OK.
The HART Pass-Through feature enables using an external asset management system to
manage HART compatible field devices connected to an AADvance controller.
HART Pass-Through uses the Device Type Manager (DTM) standard, defined by the HART
Communication Foundation, to enable using any asset management system having the generic
'Frame' standard. Examples of compatible tools are the Fieldcare application by
Endress+Hauser and the FactoryTalk AssetCentre by Rockwell Automation.
To use HART Pass-Through, you must install the AADvance HART DTM software on the
computer running the asset management system. You can then enable or disable the HART
Pass-Through capability of the controller. You declare HART variables to monitor HART
Pass-Through data for analog input and output channels.
Note: HART Pass-Through should not be used on a safety application loop but is considered
non-interfering on the SIL 3 loop. Also, note that HART Pass-Through data is unmonitored.
The HART feature in AADvance provides a controller capability to pass through requests and
responses.
To use HART Pass-Through in the AADvance Workbench, you must perform the following:
Declare a control processor variable for HART Pass-Through (See Control Booleans)
Attention: HART Pass-Through has the following limitation for the maximum
size of a HART message:
For an analog input module, the maximum message size is 0x5F (plus
between 5 and x14 bytes preamble) for the command to remote HART
device and 0x5F for a response (including up to 14 bytes for the preamble).
<tagname>.ELAPSED (DINT), displays the time in milliseconds since the most recent
valid non-Pass-Through communication. The value of this element resets to 0 (zero)
when the application passes new HART data on the channel.
The application can use these members to choose when to permit HART Pass-Through
communications.
You configure an analog input channel to supply HART and use Pass-Through communication
monitoring. You must wire a variable having the T9K_AI_HART_FULL structure type to the
required channels. You must enable HART on each channel to use HART Pass-Through.
2. From the Equipment View, expand the analog input module and then double-click the
required channel.
The Equipment property page is displayed with the Channel-specific tab as well as the
HART and Thresholds tabs.
6. In the Variable Selector, select the required variable having the T9K_AI_HART_FULL
type, and then click OK.
The analog input channel is configured to use HART protocol and HART Pass-Through.
For AADvance systems, the AADvance HART DTM is the device type manager for the HART
Pass-Through feature. You must install the software on the Windows computer running the
asset management system. The AADvance HART DTM is accessible from the RA Download
Center.
3. Locate and install the file named AADvance DTM 1.xxx Setup.exe.
To use HART Pass-Through, you must define at least one CIP Produce variable in the
Workbench. To activate the CIP stack, you must have CIP produce and consume variables.
The Equipment property page is displayed with the Processor, Status, Control, and RTC
tabs.
5. In the Variable Selector, select the HART_CONTROL variable, and then click OK.
The following is an example displaying how to configure FactoryTalk AssetCentre to use the
HART Pass-Through feature with analog input and output modules.
1. From the FactoryTalk AssetCentre, in the Tools menu, click DTM Catalog.
3. Uninstall the existing version of the DTM installed on your computer and then restart the
system.
4. In the DTM Networks dialog box, right-click the Host computer item at the top of the tree
view, and then click Add DTM.
9. Enter the IP address for the AADvance controller and the slot number for the analog
input module, and then click Next.
11. In the Select Communication Channel dialog box, select all of the channels, and then
click OK.
All the input channels on the AADvance controller are now set up for the HART Pass-Through
functionality.
The channel state and line fault status for the module are determined by comparing the channel
input current with a set of threshold values. You can use the default threshold values or define
custom values. When defining threshold values for the input module, each channel inherits the
threshold values. You can also define individual threshold values for each analog input
channel.
Important: When the system is operational, threshold values can only be changed using an
online update.
To prevent chatter, the AADvance controller provides hysteresis on the thresholds for
increasing and decreasing values The AADvance Workbench updates the reporting values
during each application cycle. The following displays the typical (default) threshold values
(T#), state values (STA), and line fault statuses for an analog input module:
The default threshold values for analog inputs are for a standard (online monitored) 24 Vdc
analog input channel. The values agree with the lower limit and higher limits for an analog
signal detailed in the NAMUR NE43 standard. The following are the default values:
You can set custom threshold values for an analog input module. The channels of the analog
input module inherit the custom threshold values. You can also define custom threshold values
for individual channels.
1. From the Equipment View, double-click the required analog input module.
The Equipment property page is displayed with the Module-specific tab as well as the
Channels, HART, and Thresholds tabs.
3. Select the Use Custom Thresholds option, then in the threshold fields, type the required
values.
The digital input channels inherit the custom threshold values from the module.
1. From the Equipment View, expand the digital input module and then double-click the
required channel.
The Equipment property page is displayed with the Channel-specific, HART, and
Thresholds tabs.
2. From the Equipment property page, click the Thresholds tab. The inherited threshold
values are displayed.
3. Select the Use Custom Thresholds option, then in the threshold fields, type the required
values.
Channels
Advanced Settings
Variables
You can use the following structure types when wiring channels for digital outputs:
T9K_DO_COMPACT
T9K_DO_FULL
The structure types provide data about the output such as the line fault and discrepancy
statuses.
If you only want to wire the first element of a digital output channel, you declare a variable
using the BOOL data type.
You can also set the Advanced settings for individual digital output channels.
Important: The controller writes to the digital outputs once during each application cycle and
the digital output variables are updated once during each application cycle.
T9K_DO_COMPACT
A digital output channel is faulted when normal operations or diagnostic tests find a known
fault condition. When a channel is faulted, the state reports the value 7, and the other variables
report the following 'safe' values:
Discrepancy = TRUE
Voltage = 0 mV
Current = 0 mA
The AADvance controller has three mechanisms to protect digital output channels:
The controller tolerates inrush currents so the digital outputs can energize capacitive loads
without causing the controller to report a short circuit. The following displays the
characteristics of the maximum load currents the controller tolerates when a digital output is
energized. If the load current enters the region above the curve on the graph, the controller
applies inrush current protection.
When the short circuit is removed, the channel re-energizes. The short circuit report is
then cleared by pressing the fault reset button on the 9110 processor module or by setting
the command state to FALSE.
The controller verifies de-energized digital output channels for possible short circuits.
Periodically, the controller partially turns on each de-energized output in turn and measures the
loop current. If the loop current shows a loop resistance of less than approximately 10 Ω, the
controller reports a short circuit.
You wire variables to digital output channels to enable the application to use the output.
1. From the Equipment View, double-click the required digital output module.
The Equipment property page is displayed with the module-specific tab as well as the
Channels and Variables tabs.
2. From the Equipment property page, click the Channels tab. The channels are displayed.
4. In the Variable Selector, select the required variable and then click OK.
You can configure the following advanced settings for individual digital output channels:
Shutdown State
Shutdown State
The Shutdown State defines how the output behaves when the following occurs to the parent
9451 digital output module:
You can enable or disable the line test in the AADvance Workbench. The 9451 digital output
module performs a test (Disable Line Test) for a no load condition on each output. A no load
condition occurs when the controller is unable to locate a load connected to the field wiring or
the load current is below 20 mA when the output command state is TRUE. You must disable
the line test if you want to connect a low load to an output or if the output is unused and you
prefer not to fit a dummy load.
When the line test is enabled, the module reports a no load condition by setting the state
variable (<tagname>.STA) to the value 3 and by setting the channel LED to amber. After
disabling the line test, and assuming there are no other faults present, the state variable
indicates the value 2 or 4 (depending on the command state value) and the channel LED is off
or green instead of amber.
Important: If you disable the line test, there are other scenarios, such as no field voltage, that
set the channel LED to amber.
1. From the Equipment View, expand the digital output module and then double-click the
required channel.
The Equipment property page is displayed with the Channel-specific and Advanced tabs.
Important: To maintain the safety rating of the system, when using Hold Last State for a
safety-related output, you must restore the communications in less than the MTTR or use other
compensating measures during a module failure.
The advanced settings are configured for the digital output channel.
The 9451 digital output module provides the following status variables available to the
application:
Status Booleans
Group Field Power Health
The Equipment property page is displayed with the Module-specific, Channels, and
Variables tabs.
3. From the Variables tab, locate the required status variable, and in the Wire column click
.
4. From the Variable Selector, select the required variable and click OK.
1. From the Equipment View, double-click the required digital output module.
3. From the Variables tab, locate the wired variable, and in the Unwire column click .
The following status boolean provides data to the application about the field power supplies to
a group of digital output modules:
The following field power status integers provides data to the application about the field power
supplies to a group of digital output modules:
Channels
Advanced Settings
HART
HART Pass-Through
You can use the following structure types when wiring channels for analog outputs:
T9K_AO_COMPACT
T9K_AO_FULL
If you only want to wire the first element of an analog output channel, you declare a variable
using the REAL data type. This variable retrieves the command state.
The structure types provide data about the output such as the line fault and discrepancy
statuses.
The controller writes to the analog outputs once during each application cycle. The analog
output variables are also updated once during each application cycle.
T9K_AO_COMPACT
An analog output channel is faulted when normal operation or diagnostic tests find a known
fault condition. When a channel is faulted, the state reports the value 7, and the other variables
report the following 'safe' values:
Discrepancy = TRUE
Voltage = 0 mV
Raw Count = 0 mA
You wire variables to analog output channels to enable the application to use the output.
1. From the Equipment View, expand the analog output module, and double-click the
required channel.
The Equipment property page is displayed with the Channel-specific tab as well as the
HART and Advanced tabs.
4. In the Variable Selector, select the required variable and then click OK.
6. In the Engineering fields, set the Low and High scaling factor in the range of 0% to
100%.
Example
You can configure the following advanced settings for individual analog output channels:
Shutdown State
You can configure the advanced shutdown state for an analog output channel. The shutdown
state defines how the output behaves when its parent 9481 or 9482 analog output module goes
into shutdown mode due to a loss of communications with the processor or a failure in the
module.
1. From the Equipment View, expand the analog output module and then double-click the
required channel.
The Equipment property page is displayed with the Channel-specific, HART, and
Advanced tabs.
Important: To maintain the safety rating of the system, when using Hold Last State for a
safety-related output, you must restore the communications in less than the MTTR or use other
compensating measures during a module failure.
5. When setting the Shutdown State to Custom, you must set the Custom Shutdown Value
to a value of current using the same scaling as the command value (<tagname>.CV).
The default scaling factor is 0 to 100%, representing 4 to 20 mA
The default value is -25.00
6. Set the Fail-Safe Guard Band. This property defines the threshold for the discrepancy
alarm between the command value (<tagname>.CV) and Count (<tagname>.CNT). The
discrepancy alarm is reported by the structure member <tagname>.DIS. The Fail-Safe
Guard Band can be set to the following values:
0 to 100% of full scale 20 mA (1% = 0.2 mA)
The default value is 1%
The advanced settings are configured for the analog output channel.
Highway Addressable Remote Transducer (HART) is an open protocol for process control
instrumentation. HART combines digital signals with analog signals to supply control and
status data for field devices. The AADvance controller supports the use of HART on each
analog input and output channel. The AADvance controller also supports HART
Pass-Through. The application can use HART data to monitor and respond to device conditions
and to supply diagnostic information such as data comparison and error reporting. The HART
protocol increases the level of safety system diagnostics.
Do not use HART variables as the primary initiator for a Safety Instrumented
Function (SIF). The HART protocol does not satisfy the required safety
integrity levels for Safety Instrumented Functions.
Ensure the custom data for the device (the data given in response to HART
command 3) is used in accordance with the recommendations of the
manufacturer.
When enabling HART on an AADvance controller, you must ensure the HART field devices
support the HART commands 0 (read unique ID) and 3 (read current and four dynamic
variables). The commands are used for communication between the AADvance controller and
the HART field devices. The analog input and output modules use the HART command 3 to
collect data from the field devices as specified by Revision 5 of the HART specification.
To enable monitoring HART field device information, you wire a HART variable to the
required channels of analog input and output modules. HART variables must be declared using
the following structure types:
T9K_AI_HART
T9K_AI_HART_FULL
In the AADvance Workbench, the T9K_AI_HART_FULL structure type is used for HART
Pass-Through communication.
You can use the loop current variable for diagnostic checks in the application, comparing the
value of the variable with the value on the 4 to 20 mA loop, and reacting if there is a
discrepancy. You can also monitor the status of the field device and use this to report diagnostic
errors and manual configuration changes.
Important: The update rate for HART data from field devices is slower than the update rate
for the 4 to 20 mA analog signal itself. HART data can take a maximum of 4 seconds to update,
depending on the device type and configuration.
T9K_AI_HART
T9K_AI_HART_FULL
To monitor a field device, you must configure an analog channel to use HART by wiring a
variable having the T9K_AI_HART structure type. You must enable HART on each channel
to use the HART protocol.
1. In the dictionary, declare a HART variable having the structure type T9K_AI_HART.
2. From the Equipment View, expand the analog output module and then double-click the
required channel.
The Equipment property page is displayed with the Channel-specific tab as well as the
HART and Advanced tabs.
6. In the Variable Selector, select the required variable and then click OK.
The HART Pass-Through feature enables using an external asset management system to
manage HART compatible field devices connected to an AADvance controller.
HART Pass-Through uses the Device Type Manager (DTM) standard, defined by the HART
Communication Foundation, to enable using any asset management system having the generic
'Frame' standard. Examples of compatible tools are the Fieldcare application by
Endress+Hauser and the FactoryTalk AssetCentre by Rockwell Automation.
To use HART Pass-Through, you must install the AADvance HART DTM software on the
computer running the asset management system. You can then enable or disable the HART
Pass-Through capability of the controller. You declare HART variables to monitor HART
Pass-Through data for analog input and output channels.
Note: HART Pass-Through should not be used on a safety application loop but is considered
non-interfering on the SIL 3 loop. Also, note that HART Pass-Through data is unmonitored.
The HART feature in AADvance provides a controller capability to pass through requests and
responses.
To use HART Pass-Through in the AADvance Workbench, you must perform the following:
Declare a control processor variable for HART Pass-Through (See Control Booleans)
Attention: HART Pass-Through has the following limitation for the maximum
size of a HART message:
For an analog output module, the limits are 0x31 bytes for the command
(plus between 5 and x14 bytes preamble) and 0x63 bytes for a response
(including up to 0x14 bytes for the preamble).
<tagname>.ELAPSED (DINT), displays the time in milliseconds since the most recent
valid non-Pass-Through communication. The value of this element resets to 0 (zero)
when the application passes new HART data on the channel.
The application can use these members to choose when to permit HART Pass-Through
communications.
You configure an analog output channel to supply HART and use Pass-Through
communication monitoring. You must wire a variable having the T9K_AI_HART_FULL
structure type to the required channels. You must enable HART on each channel to use HART
Pass-Through.
2. From the Equipment View, expand the analog output module and then double-click the
required channel.
The Equipment property page is displayed with the Channel-specific tab as well as the
HART and Advanced tabs.
6. In the Variable Selector, select the required variable having the T9K_AI_HART_FULL
type, and then click OK.
The analog output channel is configured to use HART protocol and HART Pass-Through.
For AADvance systems, the AADvance HART DTM is the device type manager for the HART
Pass-Through feature. You must install the software on the Windows computer running the
asset management system. The AADvance HART DTM is accessible from the RA Download
Center.
3. Locate and install the file named AADvance DTM 1.xxx Setup.exe.
To use HART Pass-Through, you must define at least one CIP Produce variable in the
Workbench. To activate the CIP stack, you must have CIP produce and consume variables.
The Equipment property page is displayed with the Processor, Status, Control, and RTC
tabs.
The following is an example displaying how to configure FactoryTalk AssetCentre to use the
HART Pass-Through feature with analog input and output modules.
1. From the FactoryTalk AssetCentre, in the Tools menu, click DTM Catalog.
4. In the DTM Networks dialog box, right-click the Host computer item at the top of the tree
view, and then click Add DTM.
9. Enter the IP address for the AADvance controller and the slot number for the analog
output module, and then click Next.
11. In the Select Communication Channel dialog box, select all of the channels, and then
click OK.
All the output channels on the AADvance controller are now set up for the HART
Pass-Through functionality.
Network Firewall
Windows Firewall
To ensure the system is secure, perform the following general security steps:
Important: You may need to temporarily disable firewalls when using the
AADvance Discover tool.
The application must be password protected if the program enable key is not
used on the system.
Note: Since AADvance serial networks are closed, local, and have limited protocol
functionality, they are immune to external attacks (apart from deliberate local sabotage).
Threat Analysis
You must perform a system threat analysis and mitigate all high risk threats before
commissioning the system.
AADvance creates and uses the *.aadsln and *.aadproj for extensions for projects. The default
location where product-managed files are saved is the following:
%USERPROFILE%\Documents\AADvance 2.1\Projects\ProjectName\*.aadsln
%USERPROFILE%\Documents\AADvance
2.1\Projects\ProjectName\ProjectName\*.aadproj
Services Dependency
AADvance requires the following services. To reduce security risks on Windows platforms,
disable unnecessary services.
Service / Location Dependant Service Dependant
Executable Name Name Service Location
AADvanceWB.exe %PROGRAMFILES(X86)%\ Microsoft Remote N/A
Rockwell Procedure Call (RPC)
Automation\AADvance
2.1\ACP
AADOPCSV.exe %PROGRAMFILES(X86)%\ Microsoft Remote N/A
Rockwell Procedure Call (RPC)
Automation\AADvance
2.1\CAM
AADvance\AADvance
Gateway
When the Always available ports are not configured or unused, they are open to unauthorized
access. Perform the following actions to protect network ports:
If the network used by the AADvance system is connected to another network, the
connection must pass through the firewall to protect the AADvance system from
potential threats from other networks.
Configure the firewall to block all communication ports. If required, you can enable a
specific port to a device needing to communicate with other devices on other networks.
The SNCP port must only be allowed to pass through the firewall if the Windows PCs
running the AADvance Workbench are on a separate network.
The other communication ports (such as MODBUS and SNTP), must only be allowed to
pass through the firewall if the AADvance controller or Windows PC communicates with
other devices on other networks.
You may need to allow the workstations to access the Windows Updates, time
synchronization, and anti-virus updates.
The Windows workstation may run additional software (such as HMI or data logging),
therefore requiring the ports to pass through the firewall.
Note: Refer to the manufacturer’s manual for instructions about firewall settings.
From AADvance Discover, you can access the Controller Configuration dialog box, enabling
the configuration of the Resource Number, IP Address, Subnet Mask, Gateway, and Gateway
Port values to be stored in a physical controller. For Locked Controllers, you can only view this
information. You can also use the Controller Configuration dialog box to save and load
controller configurations.
You can perform the following tasks when using AADvance Discover:
Configure the IP Address, Subnet Mask, Gateway, and Gateway Port in a controller
The AADvance controller provides up to six Ethernet communication ports, two for each 9110
processor module present. Each pair of Ethernet ports is identified as En-1 and En-2 where n
indicates the processor module. The En-1 Ethernet ports are all on one network and the En-2
ports are on a second network.
Note: To avoid unexpected ARP requests, you are strongly recommended to configure IP
addresses for En-2 ports (even if they are unused).
The AADvance controller stores the IP address data in non-volatile memory in the 9100
processor base unit. The controller retains the address information when removing a processor
module since the data is independent of the 9110 modules.
You can allocate a local network IP address or use an address from the following ranges of
private networks:
10.0.0.0 to 10.255.255.255
172.16.0.0 to 172.31.255.255
192.168.0.0 to 192.168.255.255
Important: The two Ethernet ports on each 9110 processor module must be on different
subnets.
You can only define one Gateway address per processor module.
AADvance Discover is accessible from the Windows Start menu or from the Workbench (in
the View menu).
Status Description
Configurable The controller is available for configuration. The following criteria are
satisfied:
You can click Refresh in the AADvance Discover tool to update the list of controllers. When
refreshing, a status bar is displayed at the bottom of the window, below the list.
Searching, the tool locates all the controllers connected to the network
Querying, the tool displays the resource number and status of the controllers
Ethernet Forwarding
Ethernet forwarding enables the Ethernet ports of an AADvance controller to re-send Ethernet
packets intended for a third-party device along with unicast, broadcast, and multicast
messages. A device connected through the processor module gets an IP configuration through
BOOTP, DHCP, or statistically. You enable Ethernet forwarding from the Controller
Configuration dialog box. The following diagram displays Ethernet forwarding:
Warning: Do not bridge safety and non-safety networks. Ethernet forwarding is not designed
to link different processor modules.
To configure the IP Address, Subnet Mask, Gateway, and Gateway Port in the Controller
You must configure the IP address when assembling a new AADvance controller or installing
a new 9100 processor base unit. Modifications occur immediately and no restart is required.
1. Note the MAC address (Controller ID) labeled on the processor base unit and then install
at least one 9110 processor module into the base.
2. Ensure the program enable key is inserted in the KEY connector on the processor base
unit.
3. From the Start menu, click All Programs, then click Rockwell Automation, then
AADvance, and then click AADvDiscover.
The AADvance Discover tool is displayed and lists the controllers available on the
network.
4. In the list, locate the controller having the MAC address previously noted and ensure the
status is Configurable.
6. In the IP Address, Subnet Mask, and Gateway Port fields, type the required values for
each Ethernet port.
7. In the Gateway fields, type the required values for each processor module, then click
Apply.
The AADvance Discover tool refreshes the list of controllers. The controller settings are
updated and the controller is configurable.
You must configure the resource number when assembling a new AADvance controller or
installing a new 9100 processor base unit. The resource number is a type of device address, and
must also be configured in the AADvance 2.1 Workbench.
2. Ensure the program enable key is inserted in the KEY connector on the processor base
unit.
3. From the Start menu, click All Programs, then click Rockwell Automation, then
AADvance, and then click AADvDiscover.
The AADvance Discover tool is displayed and lists the controllers available on the
network.
4. In the list, locate the controller having the MAC address previously noted and ensure the
status is Configurable.
6. In the Resource Number field, type the required value, then click Apply.
The AADvance Discover tool refreshes the list of controllers. The controller status has
changed from Configurable to Pending Restart.
7. To finish applying the modification, turn off power to the physical controller, and then
restart the controller.
Important: You must also configure the Resource Number in the Workbench.
1. Ensure the program enable key is inserted in the KEY connector on the processor base
unit.
3. From AADvance Discover, locate the required controller and ensure the status is
Configurable.
5. From the Controller Configuration dialog box, select or clear Enable Ethernet
Forwarding, then click Apply.
You can view the MAC addresses for the six Ethernet ports in a controller.
2. From the Controller Configuration dialog box, click View MAC addresses....
2. In the Controller Configuration dialog box, type the required configuration information,
and then click Save.
3. In the Save configuration file as... dialog box, specify a name and save location, then
click Save.
You can only load configurations into controllers having a Configurable status.
1. In the AADvance Discover tool, double-click the required Controller ID (MAC Address).
To connect the AADvance Workbench project to the physical controller, you must define the
IP addresses set for the controller in the project. You can also add comments to IP Address
definitions.
The Communication property page is displayed with the six Ethernet Ports.
4. In the Communication property page, type the IP Address for each required port.
Note: Ports that are Not Configured can be configured individually by selecting the required
port in the Communication View.
You must also configure the resource number in the Workbench when assembling a new
AADvance controller or installing a new 9100 processor base unit. The resource number is a
type of device address.
3. In the Application View, right-click the required controller, and click Properties.
4. From the Properties Window, in the Number property, type the same resource number
defined in AADvance Discover.
Note: You need to have Microsoft Word® 2010 (or more recent) or another .docx application
installed to properly view, search, and edit the generated documentation.
The Generate Documentation dialog box is separated into three panes: Document Options,
Sections, and TOC Preview. Selections made in a pane affect what is displayed in the following
pane (from left to right). Therefore, changes made in the Document Options pane affects the
Sections pane and changes made in the Sections pane affects what is displayed in the TOC
Preview pane.
Selecting a Sections Template in the Document Options pane modifies the items listed in the
Sections pane. The Title Page and Table of contents items are always available for selection in
the Sections pane. The button displays the Variable Settings dialog box and is used to
specify how you want the variables to be sorted in the generated documentation. You can sort
variables by Name, Comment, Alias, Data Type, Wiring, Attribute, Dimension, Initial Value,
Direction, or String Size in ascending or descending order.
The items selected in the Sections pane modifies the items displayed in the tree view of the
TOC Preview pane. You can also select or clear items in the TOC Preview pane. The final
selection in the TOC Preview pane displays what will be generated in the documentation.
The Document Generator retains the selections made in the three panes for each element across
project sessions. You can reset the pane selections by clicking Default Settings.
Users can create their own custom templates for the Sections Templates (*.xml) and Microsoft
Word® templates (*.dotx). When creating a custom XML template, you must use the
following syntax:
Section Description
TitlePageSection The title page
TOCPageSection The table of contents
SolutionSection The title of the solution name
ProjectSection The title of the project name
ArraysSection The table displaying arrays
StructuresSection The table displaying structures
DefinedWordsSection The table displaying defined words
ConfigurationSection The title of the controller name as well as the table
displaying network links
ProgramSection The title of the program name
POUContentSection The POU diagrams
VariableSection The tables for local and global variables. Also displays
the extended attributes for global variables.
IOWiringSection The I\O wiring table
TargetSection The table displaying the targets
BindingSection The table displaying the bindings
Style Description
Heading 1 How Header 1 is displayed in the documentation.
Heading 2 How Header 2 is displayed in the documentation.
Heading 3 How Header 3 is displayed in the documentation.
Heading 4 How Header 4 is displayed in the documentation.
Heading 5 How Header 5 is displayed in the documentation.
Heading 6 How Header 6 is displayed in the documentation.
Heading 7 How Header 7 is displayed in the documentation.
Heading 8 How Header 8 is displayed in the documentation.
Heading 9 How Header 9 is displayed in the documentation.
Alias How the Alias section is displayed in the documentation.
Comment How comments are displayed in the documentation.
Table Style Description
IOWiring The tables displaying information for I/O wiring and targets.
NormalStyle The tables displaying information for bindings.
VariableTableStyle The tables displaying information for variables, arrays, structures, and
defined words.
To generate documentation
1. In the Application View, select the element (project, controller, POU, library element,
etc.) for which to generate documentation.
In FBD containers, you can also include LD elements such as coils, contacts, jumps, labels, and
returns. However, in contrast to LD elements usage in LD containers where these elements
follow strict graphical positioning regulations, LD elements within FBD container are
independent of these regulations.
Function Block
Inputs Outputs
An entire process represented by an FBD program is built using the available variables,
operators, functions, and function blocks. Each block has either a fixed or defined number of
input and output connection points. A block is represented by a single rectangle. The inputs are
connected on its left border. The outputs are connected on its right border. An elementary block
performs a single function between its inputs and its outputs. The name of the function to be
performed by the block is written inside its rectangle shape. Each input or output of a block is
labeled and has a well defined type.
Function Name
Inputs Output
Output variables of an FBD program must be connected to output connection points of blocks.
The type of each variable must be the same as the type expected for the associated block output.
An output for FBD diagram can be any internal or output variable, or the name of the function
(for functions only). When an output is the name of the currently edited function, it represents
the assignment of the return value for the function (returned to the calling program).
Input and output variables, inputs and outputs of the blocks are wired together with connection
lines, or links. Single lines can be used to connect two logical points of a diagram:
The connection is oriented, meaning that the line carries associated data from left to right. The
left and right ends of the connection line must be of the same data type.
Multiple right connections, also called divergences can be used to broadcast information from
their left end to each of the right ends. All ends of the connections must be of the same data
type.
For the execution order of a program, a block is any object in the diagram, a network is a group
of blocks linked together, and the position of a block is based on its top-left corner. For function
blocks, the instance name is included in the bounding box and considered the top-left corner
when defining the execution order. The following rules apply to the execution order of the
program:
All inputs must be resolved, i.e., known, for an element in order to assign its outputs. A
constant or unassigned variable is considered resolved. When the inputs of two or more
elements are resolved at the same time, the decision for the execution is based on the
position of the element (top to bottom, then left to right).
The order of execution is assigned from 1 to n following the order in which the assignable
elements are found.
When analyzing the execution order for the following network, the compiler proceeds through
the elements as indicated:
1. The compiler immediately locates the topmost element FB1_1 in the diagram and notices
that only the first two inputs of three inputs are resolved.
2. To resolve the third input of element FB1_1, the compiler considers TON_1 where all
inputs are resolved and assigns the first tag (1) for the execution order, since this block is
the first to be resolved.
3. Since resolving TON_1 enables resolving all inputs for FB1_1, the compiler assigns the
next tag (2) to FB1_1.
4. Because FB1_1 is resolved, the compiler starts assigning tags to the FB1_1 outputs
which is not yet done for TON_1.
6. While FB1_1 is completely resolved, the compiler proceeds to resolving the FB2_1
outputs.
7. The compiler assigns the fifth tag (5) to varDintOut1 since this output is the topmost of
those to resolve, then the sixth tag (6) to varBoolOut1.
8. The compiler assigns the next and final tag (7) to varTimeOut1.
Output values of boolean type are displayed using color. The output value color continues
to the next input. When the output value is unavailable, boolean elements remain black.
The default colors are red when True and blue when False. You can customize the colors
used for boolean items.
Output values of SINT, USINT, BYTE, INT, UINT, WORD, DINT, UDINT, DWORD,
LINT, ULINT, LWORD, REAL, LREAL, TIME, DATE, and STRING type are displayed
as a numeric or textual value in the variable. When the output is a structure type, the
displayed value is the selected member.
When the output value for a numeric or textual value is unavailable, WAIT is displayed in the
output label. Values are also displayed in the corresponding dictionary instance.
Blocks
Variables
Vertical Bars
Labels
Jumps
Returns
Rungs
Coils
Contacts
Regions
Comments
For links between FBD elements, you can set the property Is Negation to TRUE to place a
negation at the end of a link. You can also indicate whether to display an arrow at the end of a
link by enabling the property Is Arrow. The Line Style property specifies the style of the link
where the possible values are solid, dash, dot, dash-dot, and dash-dot-dot. The Line Type
property specifies the type of line used for links.The normal line type has squared corners and
overlapping link intersections. The rounded line type has rounded corners and overlapping link
intersections. The rounded with jump line type has rounded corners and link intersections are
jumped over.
Block elements can be operators, functions, or function blocks. You connect block inputs and
outputs to variables, contacts or coils, or other block inputs and outputs. You insert block
elements in language containers.
Functions and function blocks are represented by a box displaying the name of the function,
function block, or operator, and the parameter short names. For function blocks, the instance
name is displayed in italics.
For functions, the return parameter is the only output. For function blocks, multiple return
parameters can provide multiple outputs. The return parameter of a function has the same name
as the function. The return parameters of a function block can have any name.
You can define the parameters of POUs for multiple controllers by navigating the tabs for
individual controllers displayed in the parameter view.
Using loops with functions or operators may yield unpredictable results since these types of
blocks use temporary variables generated by the FBD editor. For predictable results, you are
recommended to assign variables in loops. The following example displays an FBD diagram
having a loop resulting in an unpredictable result. When a variable is added in the loop, the
result becomes predictable.
Note: Since instances of function blocks are defined in the library, the FBD editor does not
generate temporary variables.
The parameter view is available from function or function block instances located in the
Application View.
1. In the Application View, right-click the required function or function block instance in
the controller library, and then click Parameters.
2. To define the parameters of a function or function block, select the block, then enter the
required information in the fields provided.
1. From the Toolbox, drag the block element into the language container.
2. In the Block Selector, select the required function block, and then click OK. You can sort
the block list according to the columns by setting these in ascending or descending order.
To connect a new symbol to an existing one (another variable, a block input, or a block output)
in the workspace, keep the mouse button depressed (the cursor becomes a "ghost" symbol) and
drag the element until its connecting line on the left (or right) overlaps an existing connecting
point. When the mouse is released, the new symbol is automatically created and linked.
Drag to place the existing element: Release the mouse button. The variable is
automatically connected:
You replace existing variables in POUs by double-clicking them to access the Variable Selector
or single-clicking them to select from a drop-down combo box containing the global and local
variables. Also, you can single-click a variable, then type a literal value in the text box
provided. When inserting literal values that being with a letter or an underscore, enclose these
in single quotes as follows: 'abc'.
Select a variable from the drop-down combo Type a literal value in the text box:
box:
When selecting items such as local variables, controller variables, system variables, and
defined words from the drop-down combo box, typing characters in the text box focuses on the
possible items. You can focus on listed items by typing letters, digits, and specific special
characters: !, #, $, %, &, \, *, +, -, ,/ <, :, =, >, ?, @, \, ^, _, `, |, and ~.
To insert a variable
1. From the Toolbox, drag the variable element into the language container.
2. In the Variable Selector, select the required variable, then click OK.
Vertical bars are graphic components of FBD programs enables closing multiple parallel links.
More than one horizontal links on the left side of a vertical bar are connected to one link on the
right side. The Boolean state of the right end is the logical OR between all the left extremities.
Labels can be placed anywhere in an FBD diagram. They are used as a target for Jump
instructions, to change the execution order of the diagram. Labels are not connected to other
elements.
Place Labels on the left of the diagram in order to increase diagram readability.
Labels are used to control the execution of the diagram. No other object may be connected on
the right of a label symbol.
If the connection line on the left of the jump symbol has the Boolean state TRUE, the execution
of the program directly jumps to after the corresponding label symbol.
Example
To insert a label
1. From the Toolbox, drag the label element into the language container.
2. In the language container, click inside the label, and then type a label name in the space
provided.
A Jump symbol must be linked to a Boolean point. When this Boolean (left) connection is
TRUE, the execution of the diagram Jumps directly to the target Label.
Jumps are used to control the execution of the diagram. No other object may be connected on
the right of a jump symbol.
Warning: Inserting backward jumps in the diagram may block the PLC loop.
If the connection line on the left of the jump symbol has the Boolean state TRUE, the execution
of the program directly jumps to after the corresponding label symbol.
Example
Before inserting jumps, define one or more labels within the program.
1. From the Toolbox, drag the jump element into the language container.
2. In the language container, click the jump element, then select the required label name
from the drop-down combo box.
If the connection line (to the left of the Return element) has the Boolean state TRUE, the
Program ends - no further part of the diagram is executed.
The Return element must be connected to a Boolean output connection point of a block. The
element represents a Conditional End of the program: if the output of the box connected to the
Return element has the Boolean value TRUE, the end (remaining part) of the diagram is not
executed.
Example
(* ST equivalence: *)
If auto_mode OR alarm Then
Return;
End_if;
bo67 := (bi10 AND bi23) OR x_cmd;
To insert a return
From the Toolbox, drag the return element into the language container.
Rungs are graphic components of FBD programs and represent a group of circuit elements
leading to the activation of a coil. Dragging the rung element into the workspace inserts a
left power rail linked to a right power rail. Also, the rung contains a direct contact and a direct
coil. Error symbols ( ) indicate that the direct contact and direct coil are undefined.
To insert a rung
From the Toolbox, drag the rung element into the language container.
Left Power Rails are graphic components of FBD programs that represent the left boundary of
a rung. Any horizontal link connected to a left power rail has the boolean state TRUE.
You can link left power rails to right power rails as well as many FBD and LD elements,
including variables, blocks, jumps, returns, vertical bars, coils, and contacts.
Right Power Rails are graphic components of FBD programs that represent the right boundary
of a rung.
You can link right power rails to left power rails as well as many FBD and LD elements,
including variables, blocks, vertical bars, coils, and contacts.
Coils are graphic components of LD programs that you can use in FBD programs representing
the assignment of Boolean outputs. A coil represents an action. It must be connected on the left
to a Boolean symbol, such as a contact or the Boolean output of a block.
The following types of coils are available from the FBD stencil:
Direct Coil
Reverse Coil
Set Coil
Reset Coil
You can change the type of a coil at anytime following its insertion.
When inserting coils in POUs, you assign variables using the Variable Selector. Names of
assigned variables are displayed above the coil elements within POUs. You replace existing
variables by double-clicking the variable names to access the Variable Selector or by
single-clicking variable names to select from drop-down combo boxes containing the global
and local variables. Also, you can single-click existing variables, then type literal values in the
text boxes provided. When inserting literal values that begin with a letter or an underscore,
enclose the variable name in single quotes as follows: 'abc'.
Select a variable from the Type a literal value in the text box:
drop-down combo box:
1. From the Toolbox, drag the required coil type into the language container and place it on
the rung.
2. In the Variable Selector, select the required variable, then click OK.
The coil element and its associated variable name are displayed in the language container.
In the language container, select the coil, and then select the required type in the Modifier
property of the Properties window.
Left Right
Connection Connection
The associated variable is assigned with the Boolean state of the left connection. The state of
the left connection is propagated into the right connection. The right connection can be
connected to the right vertical power rail.
The associated name can be the name of the program (for functions only). This corresponds to
the assignment of the return value of the function.
Example
(* ST Equivalence: *)
output1 := input1;
output2 := input1;
Reverse coils enable a Boolean output according to the Boolean negation of a connection line
state.
Left Right
Connection Connection
The associated variable is assigned with the Boolean negation of the state of the left
connection. The state of the left connection is propagated into the right connection. The right
connection can be connected to the right vertical power rail.
The associated name can be the name of the program (for functions only). This corresponds to
the assignment of the return value of the function.
Example
(* ST Equivalence: *)
output1 := NOT (input1);
output2 := input1;
Left Right
Connection Connection
The associated variable is set to TRUE when the boolean state of the left connection becomes
TRUE. The output variable keeps this value until an inverse order is made by a "RESET" coil.
For information on variables, see page 441. The state of the left connection is propagated into
the right connection. The right connection can be connected to the right vertical power rail.
Example
(* ST Equivalence: *)
IF input1 THEN
output1 := TRUE;
END_IF;
IF input2 THEN
output1 := FALSE;
END_IF;
Left Right
Connection Connection
The associated variable is reset to FALSE when the Boolean state of the left connection
becomes TRUE. The output variable keeps this value until an inverse order is made by a "SET"
coil. The state of the left connection is propagated into the right connection. The right
connection can be connected to the right vertical power rail.
Example
(* ST Equivalence: *)
IF input1 THEN
output1 := TRUE;
END_IF;
IF input2 THEN
output1 := FALSE;
END_IF;
Contacts are graphic components of LD diagrams that you can use in FBD programs.
Depending on the type of contact, it represents the value or function of an input or internal
variable.
The following contact types are available from the FBD stencil:
Direct Contact
Reverse Contact
You can change the type of a contact at any time following its insertion.
When inserting contacts in POUs, you assign variables using the Variable Selector. Names of
assigned variables are displayed above the contact elements within POUs. You replace existing
variables by double-clicking the variable names to access the Variable Selector or by
single-clicking variable names to select from drop-down combo boxes containing the global
and local variables. Also, you can single-click existing variables, then type literal values in the
text boxes provided. When inserting literal values beginning with a letter or an underscore,
enclose the variable name in single quotes as follows: 'abc'.
1. From the Toolbox, drag the required contact type into the language container and place it
on the rung.
2. From the Variable Selector, select the required variable, then click OK.
The contact and its associated variable name are displayed in the language container.
1. From the Toolbox, drag a contact element into the language container while placing it
parallel to the existing contact.
2. In the Variable Selector, select the required variable, then click OK.
3. Drag the left and right connections to the respective connection points on the rung.
The contact and its associated variable name are displayed on the branch.
In the language container, select the contact, then select the required type in the Modifier
property of the Properties window.
Direct contacts enable a Boolean operation between a connection line state and a Boolean
variable.
Left Right
Connection Connection
The state of the connection line on the right of the contact is the logical AND between the state
of the left connection line and the value of the variable associated with the contact.
Example
(* ST Equivalence: *)
output1 := input1 AND input2;
Reverse contacts enable a Boolean operation between a connection line state and the Boolean
negation of a Boolean variable.
Left Right
Connection Connection
The state of the connection line on the right of the contact is the logical AND between the state
of the left connection line and the Boolean negation of the value of the variable associated with
the contact.
Example
(* ST Equivalence: *)
output1 := NOT (input1) AND NOT (input2);
Pulse rising edge (positive) contacts enable a Boolean operation between a connection line
state and the rising edge of a Boolean variable.
Left Right
Connection Connection
The state of the connection line on the right of the contact is set to TRUE when the state of the
connection line on the left is TRUE, and the state of the associated variable rises from FALSE
to TRUE. The state is reset to FALSE in all other cases.
Example
(* ST Equivalence: *)
output1 := input1 AND (input2 AND NOT (input2prev));
(* input2prev is the value of input2 at the previous cycle *)
Pulse falling edge (negative) contacts enable a Boolean operation between a connection line
state and the falling edge of a Boolean variable.
Left Right
Connection Connection
The state of the connection line on the right of the contact is set to TRUE when the state of the
connection line on the left is TRUE, and the state of the associated variable falls from TRUE
to FALSE. The state is reset to FALSE in all other cases.
Example
(* ST Equivalence: *)
output1 := input1 AND (NOT (input2) AND input2prev);
(* input2prev is the value of input2 at the previous cycle *)
Regions delineate and group together areas of an FBD POU. A region consists of a header and
a delineated zone grouping together elements.The header section enables entering free-format
text. After entering text in the header, click elsewhere in the region to exit editing mode. When
moving the location of a region in the language container, you can also move all the content
grouped within. You can resize regions.
To insert a region
From the Toolbox, drag the region element into the language container.
To move a region
1. In the language container, left-click the top right corner of the region element and hold
the mouse button.
2. Drag the region element to the required location and release the mouse button.
The region and the elements contained inside have moved location in the language container.
Execution Order of FBD Programs
Comments are free format text inserted anywhere in the FBD POU, for documentation
purposes only.
After entering text, click elsewhere in the workspace to 'validate' the comment.
You can expand and collapse comment elements displayed in the workspace by clicking the
maximize and minimize buttons. You can also resize comments.
Minimize Maximize
To insert a comment
You can apply text formatting options including bold, italic, underline, strikethrough, and
justify using the Format menu. You can also defined the foreground color.
1. From the Toolbox, drag the comment element into the language container.
2. In the language container, double-click the comment, then type the required text within
the space provided.
background and gradient colors for operators, functions, and function blocks
displaying the grid as well as the height and width of grid cells, in pixels
the height and width of elements, in grid cells. Basic elements are blocks without inputs
or outputs, coils, and contacts. For blocks, each input and output adds a basic element
dimension. For example, note the contact using the default settings of one grid cell high
by four grid cells wide. The following block uses a basic element width for the inputs,
another for the block, and another for the outputs. The block uses a basic element height
for the EN/ENO level, another for the first input and the output, and another for the
second input.
the font type, size, style, and color applied to the text displayed in elements
various options such as displaying comments and labels, aligning coils, and setting the colors
for variables, labels, comments, power rails, and rung headers
Output values of boolean type are displayed using color. The output value color continues
to the next input. When the output value is unavailable, boolean elements remain black.
The default colors are red when True and blue when False. You can customize the colors
used for boolean items.
Output values of SINT, USINT, BYTE, INT, UINT, WORD, DINT, UDINT, DWORD,
LINT, ULINT, LWORD, REAL, LREAL, TIME, DATE, and STRING type are displayed
as a numeric or textual value in the element. When the output is a structure type, the
displayed value is the selected member.
When the output value for a numeric or textual value is unavailable, WAIT is displayed in the
output label. Transitional elements such as Pulse rising edge (positive) contacts, having an
unstable state, remain black. Values are also displayed in the corresponding dictionary
instance.
Note: For more details on possible operations during simulation, refer to the Simulating an
Application section.
Step into the next rung, executing the next rung then stepping into the subsequent rung.
When the next rung includes a call to a function, stepping continues in the called function
then returns to the next rung in the POU.
Step over the next rung, executing the current rung then stepping to the next rung
In the language editor, breakpoints appear as red circles to the left of the rung. When a
breakpoint is encountered, a yellow arrow is displayed beside the breakpoint and the next rung
is highlighted in yellow.
When stepping passes beyond the last rung of a POU, the arrow points downward.
While debugging, you can toggle the Boolean logical value of a selected contact, coil, or
function block input.
Generate debug information for LD POUs enables step-by-step debugging within the POU.
2. In the Properties window for the POU, set Generate Debug Info to True.
1. In the Properties window for the POU, set Generate Debug Info to True.
2. Select the rung or rungs requiring breakpoints, right-click in the rung area, and then click
Add Breakpoint.
To remove breakpoints
Select the rung or rungs requiring the removal of breakpoints, right-click in the rung area,
and then click Remove Breakpoint.
The POU executes the current rung then steps into the next one and stepping continues in any
called function before returning to the next rung of the POU.
The POU executes the current rung then steps to the next one.
Select the required element, then right-click Toggle Boolean Value (or press Ctrl+T).
Rungs
Blocks
Coils
Contacts
Jumps
Returns
Branches
While dragging rungs and elements from either the toolbox or within a diagram, the language
editor displays the possible drop points. Drop points are displayed as plus signs in a black
circle. For rungs, the possible drop points are displayed between the rung handles on the left.
For elements, the possible drop points are displayed on the rung.
For variables connected to block, coil, and contact elements, you can add these to existing
variables groups from the language container by right-clicking the variable, pointing to Add to
Variable Group, then clicking the required group.
Rungs are graphic components of LD programs and represent a group of circuit elements
leading to the activation of a coil. Rungs have labels for identification within a diagram. Labels
along with jumps enable controlling the execution of a diagram. The label and jump must have
the same name. When the connection on the left of the jump element has the TRUE Boolean
state, the diagram execution proceeds at the label element. Comments are free format text
inserted above the rung, for documentation purposes only. To the left of a rung, a handle
indicates the position within a diagram and enables repositioning by dragging and dropping.
While dragging rungs from either the toolbox or within a diagram, the language editor displays
the possible drop points. Drop points are displayed as plus signs in a black circle. For rungs,
the possible drop points are displayed between the rung handles on the left.
You can insert rungs from the Toolbox, contextual menus, or using keyboard shortcuts. While
inserting or dragging a block, drop points indicate the possible locations where the block can
be placed on a rung.
From the Toolbox, drag the rung element into the language container where a drop point is
displayed.
When dragging rungs, the possible drop points are displayed between the handles on the left.
1. To reposition a rung within a diagram, select the rung handle while holding down the left
mouse button.
2. Drag the rung to the required position in the diagram where a drop point is displayed.
You can define labels using the space to the left of the rung.
2. In the upper left-hand corner, click in the text area beside the gray square and type the
required label text.
You place comments in the space above the rung. After entering text, click elsewhere in the
workspace to 'validate' the comment. Text formating options including bold, italic, underline,
strikethrough, and justify, are available from the Format menu. Using the Format menu, you
can also defined the foreground color.
In the language container, click the rectangular space above the rung, then type the
required text.
In a language container, you connect blocks to Boolean lines. Blocks can be operators,
functions, or function blocks. Boolean inputs and outputs are not always contained within
blocks. Boolean inputs connecting blocks to rungs are always executed each cycle. Boolean
outputs connecting blocks to rungs control the remaining rung power flow. When inserting
blocks in a diagram, the EN and ENO parameters are added to some block interfaces. You can
also force the inclusion of the EN and ENO parameters for blocks having either one Boolean
input, one Boolean output, or no Boolean input and output. You activate the Enable EN/ENO
and Display Instance Names options from the Ladder Diagram options.
For functions and function blocks, you set the value of return parameters using coils. The return
parameter of a function has the same name as the function. The return parameters of a function
block can have any name.
When working with different controllers, you can define parameters of POUs for multiple
controllers by navigating the tabs for individual controllers displayed in the Parameters view.
You insert blocks from the LD stencil in the Toolbox. You can set the type of a block using the
Block Selector at any time following insertion. When you set the type of block, variables are
automatically displayed and are connected to the inputs and outputs of the block.
You replace input and output variables by double-clicking them to access the Variable Selector
or single-clicking them to select from a drop-down combo box containing the global and local
variables. Also, you can single-click a variable, then type a literal value in the text box
provided. When inserting literal values that being with a letter or an underscore, enclose the
variable name in single quotes as follows: 'abc'.
When selecting items such as local variables, controller variables, system variables, and
defined words from the drop-down combo box, typing characters in the text box focuses on the
possible items. You can focus on listed items by typing letters, digits, and specific special
characters: !, #, $, %, &, \, *, +, -, ,/ <, :, =, >, ?, @, \, ^, _, `, |, and ~.
EN Input
For operators, functions, and function blocks where the first input is not a Boolean data type,
another input called EN is automatically inserted at the first position since the first input is
always connected to the rung. The block is executed only when the EN input is TRUE. The
following example shows a comparison operator and its equivalent code expressed in ST.
IF rung_state THEN
o1:= (value1 > value 2);
ELSE
o1:= FALSE;
END_IF;
(* continue rung with o1 state *)
For operators, functions, and function blocks where the first output is not a Boolean data type,
another output called ENO is automatically inserted at the first position since the first output is
always connected to the rung. The ENO output always has the same state as the first input of
the block. The following example shows the AVERAGE function block and its equivalent code
expressed in ST.
In some cases, both EN and ENO parameters are required. The following example shows an
arithmetic operator and its equivalent code expressed in ST.
IF rung_state THEN
result := (value1 + value2);
END_IF;
ENO := rung_state;
While dragging blocks from either the toolbox or within a diagram, the language editor
displays the possible drop points. Drop points are displayed as plus signs in a black circle. For
elements, the possible drop points are displayed on the rung.
The Parameters view is available from function or function block instances located in the
Application View.
1. In the Application View, right-click the required function or function block instance in
the controller library, and then click Parameters.
2. To define the parameters of a function or function block, enter the required information in
the Parameters view.
To insert a block
You can insert blocks from the Toolbox, contextual menus, or using keyboard shortcuts. While
inserting or dragging a block, drop points indicate the possible locations where the block can
be placed on a rung.
1. From the Toolbox, drag the block element into the language container and place it on the
rung where a drop point is displayed.
2. In the Block Selector, locate the required block. You can sort the block list according to
the columns by setting these in ascending or descending order.
To force the inclusion of the EN/ENO parameters, select Enable EN/ENO.
3. Click OK.
While inserting or dragging an element, drop points indicate the possible locations where the
element can be placed on a rung.
1. From the Toolbox, drag the branch element onto the existing block in the language
container.
a) From the Toolbox, drag the block element into the language container, placing it on
the branch.
The Block Selector is displayed.
b) In the Block Selector, locate the required block. You can sort the block list according
to the columns by setting these in ascending or descending order.
To force the inclusion of the EN/ENO parameters, select Enable EN/ENO.
c) Click OK.
To drag a block
When dragging blocks, the possible drop points on a rung are displayed while moving over the
rung.
To reposition a block within the diagram, select the block while holding down the left
mouse button, then drag the block to the required location on a rung where a drop point is
displayed.
Coils are graphic components of LD programs and represent the assignment of Boolean
outputs. In an LD program, a coil represents an action. It must be connected on the left to a
Boolean symbol, such as a contact or the Boolean output of a block.
Direct Coil
Reverse Coil
Set Coil
Reset Coil
You can change the type of a coil at anytime following its insertion. When inserting coils in
POUs, you assign variables using the Variable Selector. Names of assigned variables are
displayed above the coil elements within POUs. You replace existing variables by
double-clicking the variable names to access the Variable Selector or by single-clicking
variable names to select from drop-down combo boxes containing the global and local
variables. Also, you can single-click existing variables, then type literal values in the text boxes
provided. When inserting literal values beginning with a letter or an underscore, enclose the
variable name in single quotes as follows: 'abc'.
Select a variable from the drop-down combo Type a literal value in the text box:
box:
You can align the coils of all rungs making up diagrams to improve readability.
While dragging coils from either the toolbox or within a diagram, the language editor displays
the possible drop points. Drop points are displayed as plus signs in a black circle. For elements,
the possible drop points are displayed on the rung. For instance, since a rung can only have one
coil on the right, the editor does not display possibilities when dragging another coil onto the
rung. However, if a parallel branch is placed around the coil, the editor displays a possible
location for another coil on the branch.
To insert a coil
You can insert coils from the Toolbox, contextual menus, or using keyboard shortcuts. While
inserting or dragging a coil, drop points indicate the possible locations where the coil can be
placed on a rung.
1. From the Toolbox, drag the required coil type into the language container and place it on
the rung where a drop point is displayed.
2. In the Variable Selector, select the required variable, then click OK.
The coil element and its associated variable name are displayed on the rung.
While inserting or dragging an element, drop points indicate the possible locations where the
element can be placed on a rung.
1. From the Toolbox, drag the branch element onto the existing coil in the language
container.
2. From the Toolbox, drag the desired coil type onto the branch.
3. In the Variable Selector, select the required variable, then click OK.
The coil element and its associated variable name are displayed on the branch.
Left Right
Connection Connection
The associated variable is assigned with the Boolean state of the left connection. The state of
the left connection is propagated into the right connection. The right connection can be
connected to the right vertical power rail.
The associated name can be the name of the program (for functions only). This corresponds to
the assignment of the return value of the function.
Example
(* ST Equivalence: *)
output1 := input1;
output2 := input1;
Reverse coils enable a Boolean output according to the Boolean negation of a connection line
state.
Left Right
Connection Connection
The associated variable is assigned with the Boolean negation of the state of the left
connection. The state of the left connection is propagated into the right connection. The right
connection can be connected to the right vertical power rail.
The associated name can be the name of the program (for functions only). This corresponds to
the assignment of the return value of the function.
Example
(* ST Equivalence: *)
output1 := NOT (input1);
output2 := input1;
Pulse rising edge coils or "Positive" coils enable Boolean output of a connection line Boolean
state.
Left Right
Connection Connection
The associated variable is set to TRUE when the Boolean state of the left connection rises from
FALSE to TRUE. The output variable resets to FALSE in all other cases. The state of the left
connection is propagated into the right connection. The right connection can be connected to
the right vertical power rail.
Example
(* ST Equivalence: *)
IF (input1 and NOT(input1prev)) THEN
output1 := TRUE;
ELSE
output1 := FALSE;
END_IF;
Pulse falling edge coils or "Negative" coils enable Boolean output of a connection line Boolean
state.
Left Right
Connection Connection
The associated variable is set to TRUE when the Boolean state of the left connection falls from
TRUE to FALSE. The output variable resets to FALSE in all other cases. The state of the left
connection is propagated into the right connection. The right connection can be connected to
the right vertical power rail.
Example
(* ST Equivalence: *)
IF (NOT(input1) and input1prev) THEN
output1 := TRUE;
ELSE
output1 := FALSE;
END_IF;
Left Right
Connection Connection
The associated variable is set to TRUE when the boolean state of the left connection becomes
TRUE. The output variable keeps this value until an inverse order is made by a "RESET" coil.
For information on variables, see page 441. The state of the left connection is propagated into
the right connection. The right connection can be connected to the right vertical power rail.
Example
(* ST Equivalence: *)
IF input1 THEN
output1 := TRUE;
END_IF;
IF input2 THEN
output1 := FALSE;
END_IF;
Left Right
Connection Connection
The associated variable is reset to FALSE when the Boolean state of the left connection
becomes TRUE. The output variable keeps this value until an inverse order is made by a "SET"
coil. The state of the left connection is propagated into the right connection. The right
connection can be connected to the right vertical power rail.
Example
(* ST Equivalence: *)
IF input1 THEN
output1 := TRUE;
END_IF;
IF input2 THEN
output1 := FALSE;
END_IF;
Direct Contact
Reverse Contact
You can change the type of a contact at any time following its insertion.
When inserting contacts in POUs, you assign variables using the Variable Selector. Names of
assigned variables are displayed above the contact elements within POUs. You replace existing
variables by double-clicking the variable names to access the Variable Selector or by
single-clicking variable names to select from drop-down combo boxes containing the global
and local variables. Also, you can single-click existing variables, then type literal values in the
text boxes provided. When inserting literal values beginning with a letter or an underscore,
enclose the variable name in single quotes as follows: 'abc'.
Select a variable from the drop-down combo Type a literal value in the text box:
box:
While dragging contacts from either the toolbox or within a diagram, the language editor
displays the possible drop points. Drop points are displayed as plus signs in a black circle. For
elements, the possible drop points are displayed on the rung.
To insert a contact
You can insert contacts from the Toolbox, contextual menus, or using keyboard shortcuts.
While inserting or dragging a contact, drop points indicate the possible locations where the
contact can be placed on a rung.
1. From the Toolbox, drag the required contact type into the language container and place it
on the rung where a drop point is displayed.
2. In the Variable Selector, select the required variable, then click OK.
The contact and its associated variable name are displayed on the rung.
While inserting or dragging an element, drop points indicate the possible locations where the
element can be placed on a rung.
2. From the Toolbox, drag a contact element into the language container, placing it on the
branch.
3. In the Variable Selector, select the required variable, and then click OK.
The contact and its associated variable name are displayed on the branch.
To drag a contact
When dragging contacts, the possible drop points on a rung are displayed while moving over
the rung.
To reposition a contact within the diagram, select the contact while holding down the left
mouse button, then drag the contact to the required location on a rung where a drop point
is displayed.
Direct contacts enable a Boolean operation between a connection line state and a Boolean
variable.
Left Right
Connection Connection
The state of the connection line on the right of the contact is the logical AND between the state
of the left connection line and the value of the variable associated with the contact.
Example
(* ST Equivalence: *)
output1 := input1 AND input2;
Reverse contacts enable a Boolean operation between a connection line state and the Boolean
negation of a Boolean variable.
Left Right
Connection Connection
The state of the connection line on the right of the contact is the logical AND between the state
of the left connection line and the Boolean negation of the value of the variable associated with
the contact.
Example
(* ST Equivalence: *)
output1 := NOT (input1) AND NOT (input2);
Pulse rising edge (positive) contacts enable a Boolean operation between a connection line
state and the rising edge of a Boolean variable.
Left Right
Connection Connection
The state of the connection line on the right of the contact is set to TRUE when the state of the
connection line on the left is TRUE, and the state of the associated variable rises from FALSE
to TRUE. The state is reset to FALSE in all other cases.
Example
(* ST Equivalence: *)
output1 := input1 AND (input2 AND NOT (input2prev));
(* input2prev is the value of input2 at the previous cycle *)
Pulse falling edge (negative) contacts enable a Boolean operation between a connection line
state and the falling edge of a Boolean variable.
Left Right
Connection Connection
The state of the connection line on the right of the contact is set to TRUE when the state of the
connection line on the left is TRUE, and the state of the associated variable falls from TRUE
to FALSE. The state is reset to FALSE in all other cases.
Example
(* ST Equivalence: *)
output1 := input1 AND (NOT (input2) AND input2prev);
(* input2prev is the value of input2 at the previous cycle *)
Conditional and unconditional jump elements enable controlling the execution of diagrams.
You cannot place connections to the right of a jump element. When the connection on the left
of the jump element has the TRUE Boolean state, the diagram execution proceeds at the label.
The label and jump must have the same name. The following diagram shows a jump in the
parallel branch on the first rung.
Warning: Inserting backward jumps in the diagram may block the PLC loop.
To insert a jump
Before inserting jumps, define one or more labels within the program. You can insert jumps
from the Toolbox, contextual menus, or using keyboard shortcuts. While inserting or dragging
a jump, drop points indicate the possible locations where the jump can be placed on a rung.
1. From the Toolbox, drag the jump element into the language container and place it on the
rung where a drop point is displayed.
2. In the language container, click the jump element, then select the required label name
from the drop-down combo box.
The jump is displayed on the rung with the required label name.
To drag a jump
When dragging jumps, the possible drop points on a rung are displayed while moving over the
rung.
To reposition a jump within the diagram, select the jump while holding down the left
mouse button, then drag the jump to the required location on a rung where a drop point is
displayed.
You can use RETURN elements as outputs representing a conditional end of a diagram. You
cannot place connections to the right of a RETURN element.
When the left connection line has the TRUE Boolean state, the diagram ends without executing
the equations located on the next lines of the diagram.
When the LD diagram is a function, its name is associated with an output coil to set the return
value (returned to the calling diagram).
While dragging Return elements from either the toolbox or within a diagram, the language
editor displays the possible drop points. Drop points are displayed as plus signs in a black
circle. For elements, the possible drop points are displayed on the rung. For instance, since a
rung can only have one Return, the editor does not display possibilities when dragging another
Return onto the rung. However, if a parallel branch is placed around the Return, the editor
displays a possible location for another Return on the branch.
(* ST Equivalence: *)
If Not (manual_mode) Then RETURN; End_if;
result := (input1 OR input3) AND input2;
To insert a return
You can insert returns from the Toolbox, contextual menus, or using keyboard shortcuts. While
inserting or dragging a Return element, drop points indicate the possible locations where the
contact can be placed on a rung.
From the Toolbox, drag the return element into the language container, placing it on the
rung where a drop point is displayed.
When dragging Return elements, the possible drop points on a rung are displayed while
moving over the rung.
To reposition a Return element within the diagram, select the Return element while
holding down the left mouse button, then drag the Return element to the required location
on a rung where a drop point is displayed.
Branches create alternative routing for connections. You can add parallel branches to elements
on a rung. Parallel branch structures are displayed with connections upon clicking a rung.
To perform operations such as cutting, copying, pasting, and deleting branches, you can select
a single branch or all branches from a parallel structure. When selecting a single branch, you
click the connection on the left or right extremity of the branch. The branch connection is
highlighted and the branch is outlined. When selecting all branches, you click any of the
vertical lines joining the branch connections on the left or right extremity of the branches. The
branch arm is highlighted and all branches in the structure are outlined.
While dragging branches from either the toolbox or within a diagram, the language editor
displays the possible drop points. Drop points are displayed as plus signs in a black circle. For
elements, the possible drop points are displayed on the rung.
You can insert branches from the Toolbox, contextual menus, or using keyboard shortcuts.
While inserting or dragging a branch, drop points indicate the possible locations where the
branch can be placed on a rung.
From the Toolbox, drag the branch element into the language container and place in on
the rung where a drop point is displayed.
To drag a branch
When dragging branches, the possible drop points on a rung are displayed while moving over
the rung.
To reposition a branch within the diagram, select the branch while holding down the left
mouse button, then drag the branch to the required location on a rung where a drop point
is displayed.
When selecting elements, you can only select elements having the same level on a rung; you
cannot select elements from different rungs. Upon clicking a rung, parallel branch structures
are displayed with connections. The following diagram shows the selection of two contacts and
a parallel branch structure on a rung. These three elements are at the same level while the
individual parallel branches are sub-elements of the branch structure.
For branches, you can select a single branch or all branches from a structure. When selecting
a single branch, you click the connection on the left or right extremity of the branch. The
connection for the selected branch is highlighted and the branch is outlined. When selecting all
branches, you click any of the vertical lines joining the branch connections on the left or right
extremity of the branches. The branch arm is highlighted and all branches in the structure are
outlined.
To select elements
You can select individual or multiple elements using the mouse or keyboard shortcuts. When
selecting branches, you can either select a single branch or all branches from a structure. You
can only select elements of the same level on the same rung.
2. To select multiple elements, click each of the required elements while holding down the
Ctrl key.
3. To select a single branch from a parallel branch structure, click the connection on the left
or right extremity of the branch.
4. To select all branches from a parallel branch structure, click any of the vertical lines
joining the branch connections on the left or right extremity of the branches.
The following keyboard shortcuts are available for use with the LD language. Some shortcuts
do not apply or may differ while debugging.
Comments enable the inclusion of non-executed information throughout code. You can insert
comments anywhere in an ST program. Comments can run multiple lines and must begin with
"(*" and end with "*)". You cannot use interleave comments, i.e., comments within comments.
When typing statements, a drop-down combo box automatically lists the available items such
as identifiers, operators, functions, and function blocks. The listed items are filtered by typing
letters, digits, and specific special characters: !, #, $, %, &, \, *, +, -, ,/ <, :, =, >, ?, @, \, ^, _,
`, |, and ~.
function call
When entering ST syntax, basic coding is black while other items are displayed using
customizable colors. The default colors for ST elements are the following:
Inactive separators between active separators, literals, and identifiers increase ST program
legibility. ST inactive separators are the following: space (blank), tabs and end of line. You can
place end of lines anywhere in a program. The following rules apply to using inactive
separators:
Examples
Low Readability
imax := max_ite; cond := X12;
if not(cond (* alarm *)
then return; end_if;
for i (* index *) := 1 to max_ite
do if i <> 2 then Spcall();
end_if; end_for;
(* no effect if alarm *)
2. From the Options dialog box, expand IEC Languages, and then click Structured Text
(ST).
3. Expand the respective category, customize the required setting, and then click OK.
The customized settings are now the default values for ST programs.
Customize the font for the required item by clicking . The Font dialog box is
displayed allowing for customization of the font, text size, bold, italic, strikeout, and
underline styles.
Customize the text color for the required items. The possible colors are custom, web,
and system colors.
Parentheses are used to isolate sub parts of an expression and to explicitly order the priority of
operations. When no parentheses are given for a complex expression, the operation sequence
is implicitly given by the default priority between ST operators. For example:
Name: name of the called function written in IEC 61131-3 language or in "C"
Meaning: calls ST, LD, or FBD functions or a "C" function and gets its return value
Syntax: <variable> := <funct> (<par1>, ... <parN> );
Operands: The type of return value and calling parameters must follow the interface
defined for the function.
Return value: value returned by the function
When setting the value of the return parameter in the body of a function, assign the return
parameter using the same name as the function:
FunctionName := <expression>;
Example
Example2: "C" function call – same syntax as for IEC 61131-3 function calls
(* Functions used in complex expressions: min, max, right, mlen and
left are standard "C" functions *)
limited_value := min (16, max (0, input_value) );
rol_msg := right (message, mlen (message) - 1) + left (message, 1);
When setting the value of the return parameter in the body of a function block, assign the return
parameter using its name concatenated with the function block name:
FunctionBlockName.OutputParaName := <expression>;
Example
(* ST program calling a function block *)
(* declare the instance of the block in the dictionary: *)
(* trigb1 : block R_TRIG - rising edge detection *)
(* Function block activation from ST language *)
trigb1 (b1);
(* return parameters access *)
If (trigb1.Q) Then nb_edge := nb_edge + 1; End_if;
Note: For more details on possible operations during simulation, refer to the Simulating an
Application section.
When debugging, the application stops when it encounters a breakpoint. At this time, the
controller is in the DEBUGGING state and you can choose to perform one of the following
operations:
Step into the next line of code, executing the next line of code then stepping into the
subsequent line of code. When the next line of code includes a call to a function, stepping
continues in the called function then returns to the next line of code in the POU.
Step over the next line of code, executing the current line of code then stepping to the
next line of code
When a breakpoint is encountered, a yellow arrow is displayed beside the breakpoint and the
next line of code is highlighted in pink.
When stepping passes beyond the last line of code of a POU, the arrow points downward.
Generate debug information for ST POUs enables step-by-step debugging within the POU.
1. In the Application View, select the ST POU for which to generate debug information.
2. In the Properties for the POU, set Generate Debug Info to True.
To remove a breakpoint
Right-click in the area to the left of the line of code having a breakpoint to remove, then
click Add/Remove Breakpoint.
The POU executes the current line of code then steps into the next one and stepping continues
in any called function before returning to the next line of the POU.
The POU executes the current line of code then steps to the next one.
Assignments
CASE Statement
EXIT Statement
FOR Statement
IF-THEN-ELSIF-ELSE-END_IF Statement
REPEAT Statement
RETURN Statement
WHILE Statement
For variables in the syntax, you can add these to existing variables groups from the language
container by right-clicking the variable, pointing to Add to Variable Group, then clicking the
required group.
Name: :=
Meaning: Assigns a variable to an expression
Syntax: <variable> := <any_expression> ;
Operands: Variable must be an internal or output variable and the expression must have
the same type
Example
(* ST program with assignments *)
(* variable <<= variable *)
bo23 := bo10;
(* Variable <<= expression *)
bo56 := bx34 OR alrm100 & (level >= over_value);
result := (100 * input_value) / scale;
(* assignment with function call *)
limited_value := min (16, max (0, input_value) );
To insert an Assignment
CASE values must be integer constant expressions. Several values, separated by commas, can
lead to the same list of statements. The ELSE statement is optional.
Example
(* ST program using CASE statement *)
CASE error_code OF
255: err_msg := 'Division by zero';
fatal_error := TRUE;
1: err_msg := 'Overflow';
2, 3: err_msg := 'Bad sign';
ELSE
err_msg := 'Unknown error';
END_CASE;
To insert a CASE
From the Toolbox, drag the CASE element into the language container.
Name: EXIT
Meaning: exit from a FOR, WHILE or REPEAT iteration statement
Syntax: EXIT;
The EXIT is commonly used within an IF statement, inside a FOR, WHILE or REPEAT block.
Example
(* ST program using EXIT statement *)
(* this program searches for a character in a string *)
length := mlen (message);
found := NO;
FOR index := 1 TO length BY 1 DO
code := ascii (message, index);
IF (code = searched_char) THEN
found := YES;
EXIT;
END_IF;
END_FOR;
To insert an EXIT
Warning: Because the virtual machine is a synchronous system, input variables are not
refreshed during FOR iterations.
Example
(* ST program using FOR statement *)
(* this program extracts the digit characters of a string *)
length := mlen (message);
target := ''; (* empty string *)
FOR index := 1 TO length BY 1 DO
code := ascii (message, index);
IF (code >= 48) & (code <= 57) THEN
target := target + char (code);
END_IF;
END_FOR;
Name: IF ... THEN ... ELSIF ... THEN ... ELSE ... END_IF
Meaning: executes one of several lists of ST statements
selection is made according to the value of a Boolean expression
Syntax: IF <Boolean_expression> THEN
<statement> ;
<statement> ;
...
ELSIF <Boolean_expression> THEN
<statement> ;
<statement> ;
...
ELSE
<statement> ;
<statement> ;
...
END_IF;
The ELSE and ELSIF statements are optional. If the ELSE statement is not written, no
instruction is executed when the condition is FALSE. You can use the ELSIF statement more
than once. The ELSE statement, if used, must appear only once at the end of the ‘IF, ELSIF...’
sequence.
AADvance evaluates complete Boolean expressions. For instance, evaluating the following
line of code, where i represents the array index having a definition of 2..10, causes a run-time
error upon reaching the second part where it applies the value 1 as the array index.
IF i >= 2 and i <= 10 and Array1[i] > 5 THEN
You can avoid this type of error by using the following code:
IF i >= 2 and i <= 10 THEN
IF Array1[i] THEN
Example
(* ST program using IF statement *)
To insert an IF-THEN-ELSIF-ELSE-END_IF
From the Toolbox, drag the IF THEN ELSE element into the language container.
Warning: Because the virtual machine is a synchronous system, input variables are not
refreshed during REPEAT iterations. The change of state of an input variable cannot be used
to describe the ending condition of a REPEAT statement.
Example
(* ST program using REPEAT statement *)
(* this program uses specific "C" functions to read characters *)
(* on a serial port *)
str := ''; (* empty string *)
nbchar := 0;
IF ComIsReady ( ) THEN
REPEAT
str := str + ComGetChar ( );
nbchar := nbchar + 1;
UNTIL ( (nbchar >= 16) OR NOT (ComIsReady ( )) )
END_REPEAT;
END_IF;
To insert a REPEAT
From the Toolbox, drag the REPEAT element into the language container.
Name: RETURN
Meaning: terminates the execution of the current program
Syntax: RETURN ;
Operands: (none)
In an SFC action block, the RETURN statement indicates the end of the execution of that block
only.
Example
Warning: Since the virtual machine is a synchronous system, input variables are not refreshed
during WHILE iterations. The change of state of an input variable cannot be used to describe
the condition of a WHILE statement.
Example
(* ST program using WHILE statement *)
(* this program uses specific "C" functions to read characters *)
(* on a serial port *)
str := ''; (* empty string *)
nbchar := 0;
WHILE ((nbchar < 16) & ComIsReady ( )) DO
str := str + ComGetChar ( );
nbchar := nbchar + 1;
END_WHILE;
To insert a WHILE
From the Toolbox, drag the WHILE element into the language container.
Warning: These functions are not part of the IEC 61131-3 standard.
Simple equivalents for the GSTART and GKILL statements are available using the following
syntax in an SFC step:
The following fields enable accessing the status of an SFC step or child (from its parent):
Name: GSTART
Meaning: Starts an SFC child program or function block by placing a token into
each of its initial steps. The abbreviated syntax is equivalent to an
SFC Child action block having the S qualifier. The extended syntax
only applies to SFC child function blocks.
Syntax: GSTART ( <child_name> );
or
GSTART ( <child_name,step_name,input1,input2,...inputn> )
where
child_name represents the name of the SFC child POU
step_name represents the name of the active step. step_name must be
preceded by two underscore characters (e.g., __S1)
input1,input2,...inputn indicate the values of the input parameters of
the SFC child POU
Operands: the specified SFC program must be a child of the one in which the
statement is written
Return value: (none)
Children of the child program are not automatically started by the GSTART statement.
Since GSTART is not part of the IEC 61131-3 standard, it is preferable to use the S qualifier
attached to the child name.
To insert a GSTART
Name: GFREEZE
Meaning: freezes a child SFC (program or function block); suspends its execution. The
suspended SFC POU can then be restarted using the GRST statement.
Syntax: GFREEZE ( <child_name> );
where
child_name represents the name of the SFC child POU
Operands: the specified SFC program must be a child of the one in which the statement
is written
Return value: (none)
Children of the child program are automatically frozen along with the specified program.
To insert a GFREEZE
Name: GKILL
Meaning: Terminates a child SFC program by removing the Tokens currently existing
in its Steps. The syntax is equivalent to an SFC Child action block having the
R qualifier.
Syntax: GKILL ( <child_name> );
where
child_name represents the name of the SFC child POU
Operands: the specified SFC program must be a child of the one in which the statement
is written
Return value: (none)
Children of the child program are automatically terminated with the specified program.
Since GKILL is not part of the IEC 61131-3 standard, it is preferable to use the R qualifier
attached to the child name.
To insert a GKILL
Name: GSTATUS
Meaning: returns the current status of an SFC program
Syntax: <var> := GSTATUS ( <child_name> );
where
child_name represents the name of the SFC child POU
Operands: the specified SFC program must be a child of the one in which the statement
is written
Return value: 0 = Program is inactive (terminated)
1 = Program is active (started)
2 = Program is frozen
To insert a GSTATUS
Name: GRST
Meaning: restarts a child SFC program frozen by the GFREEZE statement: all the
Tokens removed by GFREEZE are restored. The extended syntax only
applies to SFC child function blocks.
Syntax: GRST ( <child_name> );
or
GRST ( <child_name,input1,input2,...inputn> );
where
child_name represents the name of the SFC child POU
input1,input2,...inputn indicate the value of the input parameter of the SFC
child POU
Operands: the specified SFC program must be a child of the one in which the statement
is written
Return value: (none)
To insert a GRST
SFC is the core of the IEC 61131-3 standard. The other languages usually describe the actions
within the steps and the logical conditions for the transitions. The SFC editor allows the user
to enter complete SFC programs. It combines graphic and text editing capabilities, thus
allowing the entry of both the SFC chart, and the corresponding actions and conditions.
The SFC programming language is not supported for safety related applications.
SFC programs describe sequential operations, where the time variable explicitly synchronizes
basic operations. These are called sequential programs. Programs before and after SFC
programs describe cyclic operations and are not time-dependent. These are called cyclic
programs. Main sequential programs (at the top of the hierarchy) are executed according to the
SFC dynamic behavior. Cyclic programs are systematically executed at the beginning of each
run time cycle. In Programs sections, sequential programs are grouped together.
Main sequential programs are described with the SFC language; Cyclic programs cannot be
described with the SFC language. Any SFC program can have one or more SFC child
programs.
Functions and function blocks can be called from actions or conditions of SFC programs.
SFC programs and SFC child programs have dynamic behavior limits which are set at the
controller level. These dynamic behavior limits determine the amount of memory, allocated by
a target at initialization time, designated to manage SFC dynamic behavior (i.e. token moving).
The amount of allocated memory is calculated as a linear relation with the number of SFC
POUs:
Alloc Mem (bytes) = N * NbElmt * sizeof(typVa)
NbElmt = GainFactor * NbOfSFC + OffsetFactor
Where:
Factor of dynamic behavior limits determining the amount of memory, allocated by a target at
initialization time, designated to manage token moving. The amount of allocated memory is
calculated as a linear relation with the number of SFC POUs:
The following points offer a simplified and more approximate definition of the allocated
memory:
The maximum number of actions (N, P1 or P0 action linked to the step) that can be
executed
When the available memory is insufficient at a specific moment for a target where check mode
(ITGTDEF_SFCEVOCHECK defined in dsys0def.h) is generated, the target kernel generates
a warning. This warning signals an SFC token moving error or an action execution error and
the controller is set to ERROR mode, i.e., cycles are no longer executed or kernel behavior may
become unpredictable.
For SFC function blocks and SFC child function blocks, each has a maximum number of
tokens which is set in the properties of the block.
SFC function block instances, as their SFC child blocks, have a maximum number of tokens,
unlike SFC programs whose dynamic behavior limits are set at the controller level.
Within the execution cycle, the dynamic behaviors of the SFC language are the following:
Initial situation
The Initial Situation is characterized by the initial steps which are, by definition, in the active
state at the beginning of the operation. At least one initial step must be present in each SFC
program.
Clearing of a transition
A transition is clearable if it is enabled and active at the same time. When a transition is
clearable, the steps immediately preceding it become inactive and those immediately following
it become active. When transitions follow a divergence, multiple transitions may become
clearable. However, the only transition that is cleared is the one having the highest priority
The clearing of a transition simultaneously leads to the active state of the immediately
following steps and to the inactive state of the immediately preceding steps. The code within a
step is only executed if the step is active.
All transitions (of all SFC programs) that can be cleared (enabled and active), are
simultaneously cleared.
End
The End is characterized by reaching the end of clearable transitions or the end of the control
chart.
Child Program
Within a controller there are certain restrictions on the relative positions of programs within
the hierarchy:
Main SFC programs are activated by the system when the application starts
The basic actions that a parent SFC program can take to control its child program are:
Any SFC POU may control other SFC POUs. Such low level units are called child SFC POUs.
A child SFC POU is a parallel unit that can be started, terminated, frozen, or restarted by its
parent. The parent POU and child POU must both be described with the SFC language. A child
SFC POU can have local variables.
When a parent POU starts a child SFC, it puts an SFC token (activates) into each initial step of
the child. This command is described with the GSTART statement or with the name of the
child with the S qualifier. When a parent POU terminates a child SFC, it clears all the tokens
existing in the steps of the child. Such a command is described with the GKILL statement or
with the name of the child and the R qualifier. When a parent POU starts a child, the parent
continues its execution.
When a parent POU freezes a child SFC, it clears all the tokens existing in the child, and keeps
their position in memory. Such a command is described with the GFREEZE statement. When
a parent POU restarts a frozen child SFC, it restores all the tokens cleared when the child was
frozen. Such a command is described with the GRST statement.
Child SFC function block instances, as for their SFC function block parents, have a maximum
number of tokens, unlike SFC programs whose dynamic behavior limits are set at the controller
level. You specify the tokens limit for an SFC function block in its settings properties.
FB_Child.Local1
You can drag and drop SFC POUs within the Programs or Function Blocks sections to change
their position in the tree structure. When you move an SFC POU having children, the children
follow their parent. You can also move a child SFC POU to a different main SFC POU or to a
different hierarchy level. Note that you can only drag child SFC POUs to hierarchical levels
already containing an SFC child.
In the Application View, drag the SFC POU to the required position and hierarchy level.
Note: You cannot set or remove SFC breakpoints while a controller is in the STEPPING state.
Breakpoints appear as red circles with a white checkmark displayed on the left part of the step
or transition. For steps, breakpoints on activation are displayed at the top corner while
breakpoints on deactivation are displayed at the bottom corner.
You set breakpoints onto steps and transitions. For steps, you can apply a breakpoint on
activation or a breakpoint on deactivation.
Right-click on the step or transition, and then click the required breakpoint command.
Once the breakpoint is reached, you can execute one cycle or switch to real-time mode to
continue execution.
When the step goes from the inactive (no token) to the active (token) state, then breakpoint
mode is set for the next cycle. The current cycle goes on executing normally. In particular
around the step where the breakpoint is placed, before breakpoint mode is really set:
All P0 actions, linked to all previous steps that become inactive, are executed.
All P1 – S – R – N actions, linked to the step that becomes active, are executed.
The following illustrates cycle execution when a breakpoint on step activation is encountered.
When the step goes from the active (token) to the inactive (no token) state, then breakpoint
mode is set for the next cycle. Current cycle goes on executing normally. In particular around
the step where the breakpoint is placed, before breakpoint mode is really set:
All P0 actions, linked to the step that becomes inactive, are executed.
All P1 – S – R – N actions, linked to all successor steps that become active, are executed.
The behaviors of setting a breakpoint on step activation is the same as step de-activation. These
are both available to avoid setting multiple breakpoints as shown below.
Note: On a given step, you cannot set both a breakpoint on step activation and a breakpoint on
step de-activation.
When a transition becomes clearable (transition is valid i.e. all previous steps are active, and
its receptivity is true) then breakpoint mode is set for the next cycle. The current cycle goes on
executing normally except that the transition is not cleared and therefore related tokens are not
moved.
You can force the clearing of a transition while in simulation whether all previous steps are
active or not. The tokens are moved and the actions are executed the same as with usual
transition clearings.
Tokens of all predecessor steps are removed and tokens of all successor steps are created. All
P0 actions linked to predecessor steps and P1 - S - R - N actions linked to successor steps are
executed.
Warning: Clearing a transition may cause abnormal behavior of your chart since several
tokens may be created.
To clear a transition
While in simulation mode, right-click the transition and then click Clear Transition.
Steps
Transitions
Sequence Controls
Jumps to Steps
When inserting steps and transitions, these are assigned a default naming convention including
numbering. For steps, the default naming is Sn where S indicates a step and n indicates the
numbering for the step. For transitions, the default naming is Tn where T indicates a transition
and n indicates the numbering for the transition. You can rename steps and transitions.
However, when renaming steps and transitions using the default naming convention and
changing only the numbering, you can renumber these elements to a numbering scheme
starting from top to bottom, then from left to right.
Renumbering ignores steps and transitions using a naming convention other than the default
Sn for steps and Tn for transitions.
1. Open the SFC program for which to renumber the steps and transitions.
2. From the Tools menu, point to Multi-language Editor, and then click Renumber Steps
and Transitions.
SFC programs contain initial steps and steps. Intial steps express the initial situation of an SFC
program. Whereas, steps are placed throughout an SFC program. An SFC program must
contain at least one initial step. Initial steps are double bordered. Initial steps and steps are
referenced by a name, written in their square symbol. This information is the level 1 of the step.
Initial Step
Step
At run time, a token indicates that the step is active. For initial steps, a token is automatically
placed in each when the program is started.
Steps have attributes. These can be used in any of the other languages.
For SFC function blocks, when reading a child active step or duration from a parent:
(where ChildName is the name of the child. Note that S1 is preceded by two underscore
(_)characters)
To insert a step
From the Toolbox, drag the step element into the language container.
Transitions are represented by small horizontal bars that cross the connection link. Each
transition is referenced by a name, written next to the transition symbol. This information is
called the level 1 of the transition.
When using single divergences, the first transitions following the divergence are set in a group
to define their priority of execution. The Workbench automatically assigns the priority of
transitions in the order of creation of the divergence branch. You can specify a different priority
for a transition. The possible priority values range from 1 to 255.
To insert a transition
For transitions following divergences, you set the priorities in the Properties window for
transitions which you can access by right-clicking the transition or the title bar of the
transition's level 2.
1. From the Toolbox, drag the transition element into the language container.
2. To link the transition to an existing step, click the mouse with the cursor on the grid cell
above or below the step.
b) In the Properties window, set the priority to the required value, and then click OK.
Sequence controls are divergences or convergences. These elements adjust automatically to the
context of the SFC diagram. For instance, the editor automatically inserts the type of sequence
control required according to the elements at the insertion point. Moreover, when adding a
parallel element below a sequence control, the sequence control automatically branches out to
the added element. Also, when a sequence control is placed erroneously within a diagram, the
editor displays it as red.
Divergences are multiple links from one SFC element (step or transition) to multiple SFC
symbols. Convergences are multiple connections from more than one SFC symbol to one other
symbol.
When inserting a sequence control, the type is determined logically according to the number
of SFC elements of a same type (whether multiple) located initially above then below the
control.
A selection divergence (OR) is a multiple link from one step to multiple transitions. The
selection divergence enables an active token to pass into one of a number of branches.
Conditions attached to the different transitions at the beginning of a selection divergence are
not implicitly exclusive. Exclusivity of transitions is defined by the priorities set to those
transitions following the divergence.
The first transitions following a single divergence are set in a group to define their priority of
execution. The workbench automatically assigns the priority of transitions, displayed on the
left, in the order of creation of the divergence branch. You can specify a different priority for
a transition in the properties. The possible priority values range from 1 to 255.
Example
A selection convergence (OR) is a multiple link from multiple transitions to a single step.
Selection convergences are generally used to group branches which were started using
selection divergences.
A simultaneous divergence (AND) is a multiple link from one transition to multiple steps. A
simultaneous divergence corresponds to parallel operations of a process.
Example
A simultaneous convergence (AND) is a multiple link from multiple steps to a single transition.
Simultaneous convergences are generally used to group branches which were started using
simultaneous divergences.
Jump symbols may be used to indicate a connection link from a transition to a step, without
having to draw the connection line. The jump symbol must be referenced with the name of the
destination step:
Jump to Step S1
1. From the Toolbox, drag the jump element into the language container and place it directly
below the existing transition.
2. In the Select Destination Step dialog box, select the required step and then click OK.
Example
Boo where where the action block name is automatically associated to Boolean variable
selected from the variable selector. Possible qualifiers are Action (N), Reset (R), and
Set (S).
LD where you program an LD diagram in the level 2 window. Possible qualifiers are
Action (N), Pulse on Deactivation Action (P0), and Pulse On Activation Action (P1).
SFC where the action block name is automatically associated to the SFC child. Possible
qualifiers are Action (N), Reset (R), and Set (S).
ST where you define ST code in the level 2 window. Possible qualifiers are Action (N),
Pulse on Deactivation Action (P0), and Pulse On Activation Action (P1).
1. Step activation - beginning when the previous transition is cleared. During this period,
defined action blocks are executed in the order of appearance.
2. Step cycle - beginning when the step becomes active and ending when the step completes
deactivation. During this period, defined action blocks are executed in the order of
appearance.
3. Step deactivation - ending when the following transition becomes active. During this
period, defined action blocks other than Boolean (Boo) action blocks having the N
qualifier are executed in the order of appearance. Boolean (Boo) action blocks are
executed after all other action blocks.
3. Specify the required properties for the action block from the Properties window by
clicking the action block definition on the step.
a) To rename the ST or LD action block, type the required text in the Name field.
Note: The names for Boo and SFC action blocks are automatically associated to their
respective assignation (Boolean variable or SFC child).
b) To specify the qualifier for the action block, select the required type in the Qualifier
field.
4. For a Boo action block, double-click the action block name, then from the Variable
Selector, select the variable for use in the block.
5. For an ST or LD action block, access the level 2 for the block by double-clicking the
action block name on the step, then program the required level 2 operations in the level 2
window displayed to the right of the POU.
2. Right-click the action block, and then click Move Up or Move Down.
Boolean (Boo) actions assign a Boolean variable to the activity of the Step. The Boolean
variable can be an output or a memory variable. The variable is assigned each time the step
activity starts or stops. The operation for Boolean actions differs for the different qualifiers:
The Boolean variable must be an OUTPUT or a MEMORY variable. The following SFC
programming leads to the indicated behavior:
A pulse action is a list of instructions which are executed only once at the activation of the step:
P1 qualifier, or executed only once at deactivation of the step: P0 qualifier. Instructions are
written using the ST or LD syntax.
The following shows the results of a pulse action with the P1 qualifier:
Step Activity
Execution
Example
A non-stored (normal) action is a list of ST or LD instructions which are executed at each cycle
during the whole active period of the step. Instructions are written according to the language
syntax in use. Non-stored actions have the "N" qualifier.
Step Activity
Execution
Example
An SFC action is a child SFC sequence, started or terminated according to the change of the
step activity signal. An SFC action can have the N (Non stored), S (Set), and R (Reset)
qualifiers. This is the meaning of the action on an SFC child:
N on a child starts the child sequence when the step becomes active and
terminates the child sequence when the step becomes inactive
S on a child starts the child sequence when the step becomes active
R on a child stops the child sequence when the step becomes active
The SFC sequence specified as an action must be a child SFC program of the program currently
being edited.
Example
The main SFC program is named Parent having one SFC child, called SeqMlx. The SFC
programming of the parent SFC program is the following:
3. From the Properties window, specify the required properties for the transition.
a) To rename the transition, type the required text in the Name field.
b) To specify the type (programming language) for the transition condition, select the
required type in the Type field.
The ST language can be used to describe the condition for a transition. The complete
expression must have Boolean type and may be terminated by a semi colon, according to the
following syntax:
The expression may be a TRUE or FALSE constant expression, a single input or an internal
Boolean variable, or a combination of variables that leads to a Boolean value.
Example
The Ladder Diagram (LD) language can be used to describe the condition attached to a
transition. The initial diagram is composed of a rung.
Example
The value returned by the function must be Boolean and yield the resulting condition:
Example
The syntax of function calls for LD is indicated in the respective language section.
An SFC condition is evaluated only when all of its preceding steps are active (not at each
cycle)
Programs
Functions
Function Blocks
Execution Rules
Reserved Keywords
Variables
Defined Words
Data Types
Programs before and after sequential programs describe cyclic operations. These are cyclic
programs which are not time-dependent. Cyclic programs are systematically executed at the
beginning of each run time cycle. Main sequential programs (at the top of the hierarchy) are
executed according to their respective dynamic behavior.
Programs located at the beginning of a cycle (before sequential programs) typically describe
preliminary operations on input controllers to build high level filtered variables. Sequential
programs frequently use these variables. Programs located at the end of the cycle (after
sequential programs) typically describe security operations on the variables operated on by
sequential programs, before sending values to output controllers.
Programs are described using the available graphic or literal languages. You specify the
programming language when creating a program; you cannot change the programming
language for an existing program.
POUs defined as programs are executed on the target system respecting the order shown in the
Programs section.
You need to respect the hierarchy of programs. Programs are linked together in a hierarchical
tree. Those placed at the top of the hierarchy are activated by the system. Child-programs
(lower level of the hierarchy) are activated by their parent.
For programs within a project and dependency libraries, names are limited to 128 characters
beginning with a letter followed by letters, digits, and single underscores. The last character for
a program name must be a letter or digit; program names cannot end with an underscore
character. Names cannot be reserved words, defined words, or data types (i.e., elementary,
structures, or arrays). Names must be unique for the same type of elements within a scope.
The execution of a function is driven by its parent program. Therefore, the execution of the
parent program is suspended until the function ends:
Any program of any section can call one or more functions. A function can have local
variables.
AADvance does not support recursivity during function calls. When a function of the
Functions section is called by itself or one of its called functions, a run-time error occurs.
Furthermore, functions do not store the local values of their local variables. Since functions are
not instantiated, these cannot call function blocks.
The interface of a function must be explicitly defined with a type and a unique name for each
of its calling (input) parameters or return (output) parameter. A function has one return
parameter. The value of the return parameter for a function differs for the various programming
languages.
POUs (programs, functions, and function blocks) within a project and dependency libraries
must have unique names within a scope. Function names and function parameter names are
limited to 128 characters beginning with a letter followed by letters, digits, and single
underscores. The last character for a function name must be a letter or digit; function names
cannot end with an underscore character. Names cannot be reserved words, defined words, or
data types (i.e., elementary, structures, or arrays).
Function blocks can be called by any POU in the project. Function blocks can call functions or
other function blocks. The order in which function blocks appear within their section is not
important.
You can move or copy all function blocks to the Programs section and all but the SFC function
block to the Functions section. You can also move or copy functions and programs, written
with languages supported by function blocks, to the Functions section. When moving or
copying a program to the Function Blocks section, all local variables defined in the program
are converted to function block parameters.
The interface of a function block must be explicitly defined with a type and a unique name for
each of its calling (input) parameters or return (output) parameters. Function blocks can have
more than one output parameter. The value of a return parameter for a function block differs
for the various programming languages.
POUs (programs, functions, and function blocks) within a project and dependency libraries
must have unique names within a scope. Function block names and function block parameter
names are limited to 128 characters beginning with a letter followed by letters, digits, and
single underscores. The last character for a function block name must be a letter or digit;
function block names cannot end with an underscore character. Names cannot be reserved
words, defined words, or data types (i.e., elementary, structures, or arrays).
Each instance of IEC 61131-3 or 'C' written function corresponds to data stored in AADvance
virtual machine real time database. You cannot add new automatic instances of IEC 61131-3
function blocks or of standard 'C' function blocks with or without initial values. To enable
online changes, you need to work with function blocks declared in the Dictionary.
3. Execute POUs
In a case where bindings are defined, variables consumed by a controller are updated after the
inputs are scanned and the variables produced for other controllers are sent before updating
outputs.
When a cycle time is specified, a controller waits until this time has elapsed before starting the
execution of a new cycle. The POUs execution time varies depending on the size of the
application. When a cycle exceeds the specified time, the loop continues to execute the cycle
but sets an overrun flag. In such a case, the application no longer runs in real time.
When a cycle time is not specified, a controller performs all programs then restarts a new cycle
without waiting.
A ABS, ACOS, ADD, ANA, AND, AND_MASK, ANDN, ARRAY, ASIN, AT,
ATAN,
B BCD_TO_BOOL, BCD_TO_INT, BCD_TO_REAL, BCD_TO_STRING,
BCD_TO_TIME, BOO, BOOL, BOOL_TO_BCD, BOOL_TO_INT,
BOOL_TO_REAL, BOOL_TO_STRING, BOOL_TO_TIME, BY, BYTE,
C CAL, CALC, CALCN, CALN, CALNC, CASE, CONCAT, CONSTANT, COS,
D DATE, DATE_AND_TIME, DELETE, DINT, DIV, DO, DT, DWORD,
E ELSE, ELSIF, EN, END_CASE, END_FOR, END_FUNCTION, END_IF,
END_PROGRAM, END_REPEAT, END_RESOURCE, END_STRUCT,
END_TYPE, END_VAR, END_WHILE, ENO, EQ, EXIT, EXP, EXPT,
F FALSE, FIND, FOR, FUNCTION,
G GE, GFREEZE, GKILL, GRST, GSTART, GSTATUS, GT,
I IF, INSERT, INT, INT_TO_BCD, INT_TO_BOOL, INT_TO_REAL,
INT_TO_STRING, INT_TO_TIME,
J JMP, JMPC, JMPCN, JMPN, JMPNC,
L LD, LDN, LE, LEFT, LEN, LIMIT, LINT, LN, LOG, LREAL, LT, LWORD,
M MAX, MID, MIN, MOD, MOVE, MSG, MUL, MUX,
N NE, NOT,
O OF, ON, OR, OR_MASK, ORN,
P PROGRAM
R R, READ_ONLY, READ_WRITE, REAL, REAL_TO_BCD, REAL_TO_BOOL,
REAL_TO_INT, REAL_TO_STRING, REAL_TO_TIME, REPEAT, REPLACE,
RESSOURCE, RET, RETAIN, RETC, RETCN, RETN, RETNC, RETURN,
RIGHT, ROL, ROR,
Variable names are limited to 128 characters beginning with a letter or single underscore
character followed by letters, digits, and single underscore characters. The last character for a
variable name must be a letter or digit; variable names cannot end with an underscore character.
Names cannot be reserved words, defined words, or data types (i.e., elementary, structures, or
arrays). Names must be unique for the same type of elements within a scope.
All variables have an attribute and a direction. Variables can have one of the following
attributes:
Read/Write Variable which can be used for reading or writing, with an initial value
Read Read-only variable with an initial value
Write Write-only variable with an initial value
Variables can have one of the following directions. However, some variables such as time
cannot have the input or output direction. Refer to the corresponding data type for restrictions.
Initial values can be assigned to variables of elementary IEC 61131-3 data types. Default initial
values are 0 or FALSE. An initial value is the value of a variable when a target starts its first
cycle.
The naming conventions of a directly represented variable for a channel of a single I/O device.
"s" is the slot number of the I/O device. "c" is the number of the Channel:
Example
For POUs, a defined word can replace literal expressions, boolean expressions, reserved
keywords or complex ST expressions.
Defined word names are limited to 128 characters beginning with a letter or single underscore
followed by letters, digits, and single underscores. The last character for a defined word name
must be a letter or digit; defined word names cannot end with an underscore character. Names
cannot be reserved words, defined words, or data types (i.e., elementary, structures, or arrays).
Names must be unique for the same type of elements within a scope.
Note the invalid definition (with strikethrough mark) in the following defined word examples:
You can program objects using the following elementary IEC 61131-3 types:
TIME: time values less than 49d17h2m47s295ms; these value types cannot store dates
(32 bit)
STRING: character string having a defined size, representing the maximum number of
characters the string can contain.
When creating a variable, a dimension can be given to define an array. The following example
shows the MyVar variable of type BOOL having a dimension defined as follows:
[1..10]
FOR i = 1 TO 10 DO
MyVar[i] := FALSE;
END_FOR;
Boolean variables (BOOL) can take one of the Boolean values: TRUE or FALSE. Boolean
variables are typically used in Boolean expressions.
For Boolean literal expressions, 2.1 targets evaluate all parts of such expressions. Whereas, the
IEC 61131-3 standard states that Boolean expressions may be evaluated only to the extent
necessary to determine the resultant value. In the following example according to the IEC
61131-3 standard, if B is zero then the first expression (B <> 0) is false and the second
expression (A/B > 0) is not performed.
if ((B <> 0) and (A/B > 0)) then
GREATER := true;
else
GREATER := false;
end_if;
Short Integer (SINT) variables are 8-bit signed integers from -128 to +127.
A bit of a short integer variable, array, structure, or the output of a function block instance can
be accessed using the following syntax:
MyVar.i
Short integer constants may be expressed with one of the following Bases. Short integer
constants must begin with a Prefix that identifies the Bases used:
The underscore character ('_') may be used to separate groups of digits. It has no particular
significance other than to improve literal expression readability.
Unsigned Short Integer or BYTE variables are 8-bit unsigned integers from 0 to 255.
A bit of an unsigned short integer or BYTE variable, array, structure, or the output of a function
block instance can be accessed using the following syntax:
MyVar.i
Unsigned short integer and BYTE literal expressions represent unsigned integer (8 bit) values:
from 0 to 255
Short integer and BYTE constants may be expressed with one of the following Bases. These
constants must begin with a Prefix that identifies the Bases used:
The underscore character ('_') may be used to separate groups of digits. It has no particular
significance other than to improve literal expression readability.
Integer (INT) variables are 16-bit signed integers from -32768 to 32767.
A bit of an integer variable, array, structure, or the output of a function block instance can be
accessed using the following syntax:
MyVar.i
If MyVar is an Integer.
MyVar.i is a Boolean. "i" must be a constant value from 0 to 15.Integer literal expressions
represent signed integer (16 bit) values:
Integer constants may be expressed with one of the following Bases. Integer constants must
begin with a Prefix that identifies the Bases used:
The underscore character ('_') may be used to separate groups of digits. It has no particular
significance other than to improve literal expression readability.
Unsigned Integer or WORD variables are 16-bit unsigned integers from 0 to 65535.
A bit of an unsigned integer or WORD variable, array, structure, or the output of a function
block instance can be accessed using the following syntax:
MyVar.i
Unsigned integer and WORD literal expressions represent unsigned integer (16 bit) values:
from 0 to 65535
Unsigned integer and WORD constants may be expressed with one of the following Bases.
These constants must begin with a Prefix that identifies the Bases used:
The underscore character ('_') may be used to separate groups of digits. It has no particular
significance other than to improve literal expression readability.
Double Integer variables are 32-bit signed integers from -2147483648 to +2147483647.
A bit of a double integer variable, array, structure, or the output of a function block instance
can be accessed using the following syntax:
MyVar.i
If MyVar is an Integer.
MyVar.i is a Boolean. "i" must be a constant value from 0 to 31.
Double integer literal expressions represent signed double integer (32 bit) values:
Double integer constants may be expressed with one of the following Bases. Double integer
constants must begin with a Prefix that identifies the Bases used:
The underscore character ('_') may be used to separate groups of digits. It has no particular
significance other than to improve literal expression readability.
Unsigned Double Integer or Double Word variables are 32-bit unsigned integers from 0
to 4294967295.
A bit of an unsigned double integer or double word variable, array, structure, or the output of
a function block instance can be accessed using the following syntax:
MyVar.i
Unsigned double integer and Double Word literal expressions represent unsigned double
integer (32 bit) values:
from 0 to 4294967295
Double integer and double word constants may be expressed with one of the following Bases.
Double integer and double word constants must begin with a Prefix that identifies the
Bases used:
The underscore character ('_') may be used to separate groups of digits. It has no particular
significance other than to improve literal expression readability.
A bit of a long integer variable, array, structure, or the output of a function block instance can
be accessed using the following syntax:
MyVar.i
Long integer literal expressions represent signed long integer (64 bit) values:
Long integer constants may be expressed with one of the following Bases. Long integer
constants must begin with a Prefix that identifies the Bases used:
The underscore character ('_') may be used to separate groups of digits. It has no particular
significance other than to improve literal expression readability.
Unsigned Long Integer or Long Word variables are 64-bit unsigned integers from 0
to 18446744073709551615.
A bit of an unsigned long integer or long word variable, array, structure, or the output of a
function block instance can be accessed using the following syntax:
MyVar.i
Unsigned long integer and long word literal expressions represent unsigned long integer (64
bit) values:
from 0 to 18446744073709551615
Unsigned long integer and long word constants may be expressed with one of the following
Bases. Long integer and long word constants must begin with a Prefix that identifies the
Bases used:
The underscore character ('_') may be used to separate groups of digits. It has no particular
significance other than to improve literal expression readability.
Real variables are standard IEEE 32-bit floating values (single precision).
A real variable has six significant digits. For larger values, the maximum possible value
is ±3.402823466E+38 while for smaller values, the minimum possible value is
±1.175494351E-38. Therefore, values greater than ±3.402823466E+38 and greater than 0.0
but less than ±1.175494351E-38 are not supported. The following example shows the value
ranges including 0.0 that are supported for real variables:
Real literal expressions can be written with either Decimal or Scientific representation. The
decimal point ('.') separates the Integer and Decimal parts. The decimal point must be used to
differentiate a Real literal expression from an Integer one. The scientific representation uses
the letter 'E' to separate the mantissa part and the exponent. The exponent part of a real
scientific expression must be a signed integer value from -37 to +37. A real variable has six
significant digits.
Example
3.14159 -1.0E+12
+1.0 1.0E-15
-789.56 +1.0E-37
The expression "123" does not represent a Real literal expression. Its correct real representation
is "123.0".
Long Real variables are standard IEEE 64-bit floating values (double precision).
A long real variable has 15 significant digits. For larger values, the maximum possible value
is ±1.7976931348623158e+308 while for smaller values, the minimum possible value is
±2.22507385850721E-308. Therefore, values greater than ±1.7976931348623158e+308 and
greater than 0.0 but less than ±2.22507385850721E-308 are not supported. The following
example shows the value ranges including 0.0 that are supported for long real variables:
Long real literal expressions can be written with either Decimal or Scientific representation.
The decimal point ('.') separates the Integer and Decimal parts. The decimal point must be used
to differentiate a Real literal expression from an Integer one. The scientific representation uses
the letter 'E' to separate the mantissa part and the exponent. The range of a real scientific
expression must be a signed integer value from 1.7E -308 to 1.7E +308. A long real variable
has 15 significant digits.
Example
3.14159 -1.0E+12
+1.0 1.0E-15
-789.56 +1.0E-37
The expression "123" does not represent a long real literal expression. Its correct real
representation is "123.0".
Time variables are typically used in Time expressions. A Time value represents values from 0
to 49d17h2m47s294ms. Time variables are stored in 32 bit words. The internal representation
is a positive number of milliseconds. Time variables can be used with timer function blocks
such as TOF and TON.
Time literal expressions represent time values from 0 to 49d17h2m47s294ms. The lowest
allowed unit is a millisecond. Standard time units used in literal expressions are:
The time literal expression must begin with "T#" or "TIME#" prefix. Prefixes and unit letters
are not case sensitive. Some units may not appear.
When the TIME value is equal to -1 (as a DINT value), the value is considered as overflow and
invalid. For example:
IF ANY_TO_DINT(TIME1) = -1 then
(* Handle overflow *)
END_IF;
Example
The following ST code gets the current time for use in the clock portion of a date variable:
clock := any_to_time(CURRENT_ISA_DATE()); (* Gets the current time *)
Date variables have date values and are typically used in Date expressions. A Date value ranges
from 1970-01-01 to 2038-01-18. Date variables are stored using the 32 bit ISO 'C' time_t data
type. The internal representation is a positive number of seconds since 1970-01-01 at midnight
GMT.
Date literal expressions represent date values in the year-month-day format, separated by
hyphens. Possible date literal expressions range from 1970-01-01 to 2038-01-18 GMT.
The date literal expression must begin with "D#" or "DATE#" prefix. Prefixes and unit letters
are not case sensitive.
Example
D#2005-02-20
date#2005-02-20
String variables contain character strings. The length of the string can change during process
operations. The length of a string variable cannot exceed the capacity (maximum length)
specified when the variable is declared. String capacity is limited to 252 characters excluding
the terminating null character (0), a byte for the current length of the string, and a byte for the
maximum length of the string. When declaring string variables, the maximum number of
characters is defined in the String Size column of the Dictionary or Variable Selector.
String variables can contain any character of the standard ASCII table (ASCII code from 0
to 255). The null character (0) can exist in a character string, however, it indicates the end of
the string.
String literal expressions represent character strings. Characters must be preceded by a quote
and followed by an apostrophe. For example:
'THIS IS A MESSAGE'
Warning: A string literal expression must be expressed on one line of the program source
code. When placing single quote (') characters within a string literal, these characters must be
preceded by the dollar ($) character. In the following string literal, note the dollar character
preceding the single quote character.
Empty string literal expressions are represented by two apostrophes, with no space or tab
character between them:
The dollar ('$') special character, followed by other special characters, can be used in a string
literal expression to represent a non-printable character:
(*) "hh" is the hexadecimal value of the ASCII code for the expressed character.
You can define arrays of standard IEC 61131-3 types or derived types. An array has one or
more dimensions. When an array is defined, a variable can be created with this type and a
structure can have a field with this type. Array dimensions are positive DINT literal
expressions and array indexes are DINT literal expressions or variables.
Array names are limited to 128 characters beginning with a letter or single underscore followed
by letters, digits, and single underscores. The last character for an array name must be a letter
or digit; array names cannot end with an underscore character. Names cannot be reserved
words, defined words, or data types (i.e., elementary, structures, or arrays). Names must be
unique for the same type of elements within a scope.
Example
1. One-dimensional array:
MyArrayType is an array of 10 BOOL. Its dimension is defined as follows: [1..10].
MyVar is of type MyArrayType.
Ok := MyVar[4];
2. Two-dimensional array:
MyArrayType2 is an array of DINT. It has two dimensions defined as follows:
[1..10,1..3]
MyVar2 is of type MyArrayType2
MyVar2[1,2] := 100;
3. Array of an array:
MyVar3 is an array of MyArrayType; Its dimension is defined as follows [1..3]
FOR I := 1 TO 3 DO
FOR J := 1 TO 10 DO
MyVar3[I][J] := FALSE;
END_FOR;
END_FOR;
Users can define structures using elementary IEC 61131-3 types or derived types. A structure
is composed of sub-entries called Fields. When a structure is defined, a variable can be created
with this type.
Structure names are limited to 128 characters beginning with a letter or single underscore
followed by letters, digits, and single underscores. The last character for a structure name must
be a letter or digit; structure names cannot end with an underscore character. Names cannot be
reserved words, defined words, or data types (i.e., elementary, structures, or arrays). Names
must be unique for the same type of elements within a scope.
Example
Arguments:
Description:
Directly links the input to output. When used with a Boolean negation, inverts the state of the
line connected to the output.
Example
(* ST equivalence: *)
ao23 := ai10;
bo100 := NOT (bi1 AND bi2);
Arguments:
(inputs) SINT - USINT - BYTE - INT - can be of any integer, real, TIME, or
UINT - WORD - DINT - UDINT - STRING format
DWORD - LINT - ULINT - (all inputs must have the same format)
LWORD - REAL - LREAL -
TIME - STRING
o1 SINT - USINT - BYTE - INT - addition of the input terms
UINT - WORD - DINT - UDINT -
DWORD - LINT - ULINT -
LWORD - REAL - LREAL -
TIME - STRING
Description:
Example
Arguments:
(inputs) BOOL
o1 BOOL Boolean AND of the input terms
Description:
Example
(* ST equivalence: *)
bo10 := bi101 AND NOT (bi102);
bo5 := (bi51 AND bi52) AND bi53;
Arguments:
Description:
Example
(* ST Equivalence: *)
Arguments:
Description:
Example
(* ST Equivalence: *)
Arguments:
Description:
Converts variables to DATE variables. A 32-bit variable, providing the number of seconds
since Jan 1, 1970, based on the time_t data type.
Example
(* ST Equivalence: *)
Arguments:
Description:
Example
(* ST Equivalence: *)
Arguments:
Description:
Example
(* ST Equivalence: *)
Arguments:
Description:
Example
(* ST Equivalence: *)
Arguments:
Description:
Note: The maximum value for a REAL or LREAL input must be less than 9.2233720e+18. For
input values greater than this maximum, the output value is determined by the target type. For
Windows and Linux targets, the output value will be reset to zero when the input value is
greater than 9.2233720e+18. While for QNX targets, the output value will go into overflow.
Example
(* ST Equivalence: *)
Arguments:
Description:
Example
(* ST Equivalence: *)
Arguments:
Description:
Note: The maximum value for a REAL or LREAL input must be less than 1.8446744e+19. For
input values greater than this maximum, the output value is determined by the target type. For
Windows and Linux targets, the output value will be reset to zero when the input value is
greater than 1.8446744e+19. While for QNX targets, the output value will go into overflow.
Example
(* ST Equivalence: *)
Arguments:
Description:
Example
(* ST Equivalence: *)
Arguments:
Description:
Example
(* ST Equivalence: *)
Arguments:
Description:
Example
(* ST Equivalence: *)
Arguments:
i1 BOOL - SINT - USINT - BYTE Any positive value other than a time and date format
- INT - UINT - WORD - DINT - i1 (or integer part of i1 if it is real) is the number of
UDINT - DWORD - LINT - milliseconds
ULINT - LWORD - REAL - STRING (number of milliseconds, for example, a
LREAL - TIME - DATE - value of 300032 represents 5 minutes and 32
STRING milliseconds)
o1 TIME time value represented by i1. A value of
1193h2m47s295ms indicates an invalid time.
Description:
Converts variables to TIME variables, except for TIME and DATE variables. The
SUB_DATE_DATE function enables the conversion of a DATE to TIME format.
Example
(* ST Equivalence: *)
Arguments:
Description:
Example
(* ST Equivalence: *)
Arguments:
Description:
Example
(* ST Equivalence: *)
Arguments:
Description:
Note: The maximum value for a REAL or LREAL input must be less than 1.8446744e+19. For
input values greater than this maximum, the output value is determined by the target type. For
Windows and Linux targets, the output value will be reset to zero when the input value is
greater than 1.8446744e+19. While for QNX targets, the output value will go into overflow.
Example
(* ST Equivalence: *)
Arguments:
Description:
Example
(* ST Equivalence: *)
Arguments:
Description:
Example
(* ST Equivalence: *)
Arguments:
i1 SINT - USINT - BYTE - INT - UINT - WORD can be of any integer or real format
- DINT - UDINT - DWORD - LINT - ULINT - (operand)
LWORD - REAL - LREAL
i2 SINT - USINT - BYTE - INT - UINT - WORD non-zero integer or real value
- DINT - UDINT - DWORD - LINT - ULINT - (divisor)
LWORD - REAL - LREAL (i1 and i2 must have the same
format)
o1 SINT - USINT - BYTE - INT - UINT - WORD integer or real division of i1 by i2
- DINT - UDINT - DWORD - LINT - ULINT -
LWORD - REAL - LREAL
Description:
Division of two integer or real variables (the first divided by the second).
Example
Arguments:
i1 BOOL - SINT - USINT - BYTE - INT - Both inputs must have the same format.
UINT - WORD - DINT - UDINT -
DWORD - LINT - ULINT - LWORD -
REAL - LREAL - TIME - DATE - STRING
i2 BOOL - SINT - USINT - BYTE - INT -
UINT - WORD - DINT - UDINT -
DWORD - LINT - ULINT - LWORD -
REAL - LREAL - TIME - DATE - STRING
o1 BOOL TRUE if i1 = i2
Description
For integer, REAL, TIME, DATE, and STRING variables, compares the first input to the
second to determine equality.
For TON, TP, TOF, BLINK, and StepName.t in SFC chart, equality testing of TIME variables
is not recommended.
Example
Arguments:
i1 SINT - USINT - BYTE - INT - UINT - Both inputs must have the same type
WORD - DINT - UDINT - DWORD - LINT
- ULINT - LWORD - REAL - LREAL -
TIME - DATE - STRING
i2 SINT - USINT - BYTE - INT - UINT -
WORD - DINT - UDINT - DWORD - LINT
- ULINT - LWORD - REAL - LREAL -
TIME - DATE - STRING
o1 BOOL TRUE if i1 > i2
Description:
For integer, REAL, TIME, DATE, and STRING variables, compares input variables to
determine whether the first is greater than the second.
Example
(* ST Equivalence: *)
aresult := (10 > 25); (* aresult is FALSE *)
Arguments:
i1 SINT - USINT - BYTE - INT - UINT - Both inputs must have the same type.
WORD - DINT - UDINT - DWORD - LINT
- ULINT - LWORD - REAL - LREAL -
TIME - DATE - STRING
i2 SINT - USINT - BYTE - INT - UINT -
WORD - DINT - UDINT - DWORD - LINT
- ULINT - LWORD - REAL - LREAL -
TIME - DATE - STRING
o1 BOOL TRUE if i1 >= i2
Description:
For integer, REAL, TIME, DATE, and STRING variables, compares input variables to
determine whether the first is greater than or equal to the second.
For TON, TP, TOF, BLINK, and StepName.t in SFC chart, equality testing of TIME variables
is not recommended.
Example
Arguments:
i1 SINT - USINT - BYTE - INT - UINT - Both inputs must have the same type
WORD - DINT - UDINT - DWORD - LINT
- ULINT - LWORD - REAL - LREAL -
TIME - DATE - STRING
i2 SINT - USINT - BYTE - INT - UINT -
WORD - DINT - UDINT - DWORD - LINT
- ULINT - LWORD - REAL - LREAL -
TIME - DATE - STRING
o1 BOOL TRUE if i1i2 < i2
Description:
For integer, REAL, TIME, DATE, and STRING variables, compares input variables to
determine whether the first is less than the second.
Example
(* ST Equivalence: *)
aresult := (10 < 25); (* aresult is TRUE *)
Arguments:
i1 SINT - USINT - BYTE - INT - UINT - Both inputs must have the same type.
WORD - DINT - UDINT - DWORD - LINT
- ULINT - LWORD - REAL - LREAL -
TIME - DATE - STRING
i2 SINT - USINT - BYTE - INT - UINT -
WORD - DINT - UDINT - DWORD - LINT
- ULINT - LWORD - REAL - LREAL -
TIME - DATE - STRING
o1 BOOL TRUE if i1 <= i2
Description:
For integer, REAL, TIME, DATE, and STRING variables, compares input variables to
determine whether the first is less than or equal to the second.
For TON, TP, TOF, BLINK, and StepName.t in SFC chart, equality testing of TIME variables
is not recommended.
Example
Arguments:
Description:
Example
(* ST equivalence *)
Arguments:
i1 SINT - INT - DINT - LINT - REAL - Input and output must have the same
LREAL format
o1 SINT - INT - DINT - LINT - REAL -
LREAL
Description:
Example
(* ST equivalence: *)
ao23 := - (ai10);
ro100 := - (ri1 + ri2);
Arguments:
Description:
Example
(* ST equivalence: *)
bo10 := NOT bi101;
Arguments:
i1 BOOL - SINT - USINT - BYTE - INT - both inputs must have the same type
UINT - WORD - DINT - UDINT -
DWORD - LINT - ULINT - LWORD -
REAL - LREAL - TIME - DATE - STRING
i2 BOOL - SINT - USINT - BYTE - INT -
UINT - WORD - DINT - UDINT -
DWORD - LINT - ULINT - LWORD -
REAL - LREAL - TIME - DATE - STRING
o1 BOOL TRUE if first <> second
Description:
For integer, REAL, TIME, DATE, and STRING variables, compares input variables to
determine whether the first is not equal to the second.
Example
(* ST Equivalence: *)
aresult := (10 <> 25); (* aresult is TRUE *)
Arguments:
(inputs) BOOL
output BOOL Boolean OR of the input terms
Description:
Example
(* ST equivalence: *)
bo10 := bi101 OR NOT (bi102);
bo5 := (bi51 OR bi52) OR bi53;
Arguments:
i1 SINT - USINT - BYTE - INT - UINT - WORD can be of any integer, real or long
- DINT - UDINT - DWORD - LINT - ULINT - real, or TIME format
LWORD - REAL - LREAL - TIME
i2 SINT - USINT - BYTE - INT - UINT - WORD (i1 and i2 must have the same
- DINT - UDINT - DWORD - LINT - ULINT - format)
LWORD - REAL - LREAL - TIME
o1 SINT - USINT - BYTE - INT - UINT - WORD subtraction (first minus second)
- DINT - UDINT - DWORD - LINT - ULINT -
LWORD - REAL - LREAL - TIME
Description:
Example
(* ST equivalence: *)
Arguments:
i1 BOOL
i2 BOOL
o1 BOOL Boolean exclusive OR of the two input terms
Description:
Example
(* ST equivalence: *)
bo10 := bi101 XOR NOT (bi102);
bo5 := (bi51 XOR bi52) XOR bi53;
Arguments:
Description:
Example
(* ST Equivalence: *)
over := (ABS (delta) > range);
Arguments:
Description:
Yields the Arc Cosine of a REAL value. Input and output values are in radians.
Example
(* ST Equivalence: *)
cosine := COS (angle);
result := ACOS (cosine); (* result is equal to angle *)
Arguments:
Description:
Example
(* ST Equivalence: *)
parity := AND_MASK (xvalue, 1); (* 1 if xvalue is odd *)
result := AND_MASK (16#abc, 16#f0f); (* equals 16#a0c *)
Arguments:
Description:
Example
(* ST Equivalence: *)
FirstChr := ASCII (message, 1);
(* FirstChr is the ASCII code of the first character of the string *)
Arguments:
Description:
Example
(* ST Equivalence: *)
sine := SIN (angle);
result := ASIN (sine); (* result is equal to angle *)
Arguments:
Description:
Example
(* ST Equivalence: *)
tangent := TAN (angle);
result := ATAN (tangent); (* result is equal to angle*)
Arguments:
Description:
Example
(* ST Equivalence: *)
Display := CHAR ( value + 48 );
(* value is in set [0..9] *)
(* 48 is the ascii code of '0' *)
(* result is one character string from '0' to '9' *)
Arguments:
Description:
Example
(* ST Equivalence: *)
cosine := COS (angle);
result := ACOS (cosine); (* result is equal to angle *)
Arguments:
Description:
Example
(* ST Equivalence: *)
datResult := CURRENT_ISA_DATE();
Arguments:
Description:
Example
Arguments:
Description:
Where 'base' is the first argument and 'exponent' is the second argument, yields the REAL
result of the following operation: (base exponent).
Example
(* ST Equivalence: *)
tb_size := ANY_TO_DINT (EXPT (2.0, range) );
Arguments:
Description:
Example
(* ST Equivalence: *)
complete_string := 'ABCD' + 'EFGH'; (* complete_string is 'ABCDEFGH '
*)
Arguments:
Description:
Example
(* ST Equivalence: *)
MyName := INSERT ('Mr JONES', 'Frank ', 4);
Arguments:
Description:
From the left end of strings, yields the number of characters defined.
Example
(* ST Equivalence: *)
(* complete_string is '56781234'
*)
Arguments:
Description:
Restricts integer values to a given interval. Integer values between the minimum and maximum
are unchanged. Integer values greater than the maximum are replaced with the maximum
value. Integer values less than the minimum are replaced with the minimum value.
Example
(* ST Equivalence: *)
new_value := LIMIT (min_value, value, max_value);
Arguments:
Description:
Example
(* ST Equivalence: *)
xpos := ABS (xval);
xlog := LOG (xpos);
Arguments:
Description:
Example
(* ST Equivalence: *)
new_value := MAX (MIN (max_value, value), min_value);
Arguments:
Description:
Using the position and number of characters provided, yields required parts of strings.
Example
(* sub_string is 'de' *)
Arguments:
Description:
Example
(* ST Equivalence: *)
new_value := MAX (MIN (max_value, value), min_value);
Arguments:
Description:
Example
(* ST Equivalence: *)
nbchar := MLEN (complete_string);
If (nbchar < 3) Then Return; End_if;
prefix := LEFT (complete_string, 3);
Arguments:
Description:
Example
(* ST Equivalence: *)
division_result := (value / divider); (* integer division *)
rest_of_division := MOD (value, divider); (* rest of the division *)
Arguments:
Description:
Example
Arguments:
Description:
Example
Arguments:
Description:
Example
(*ST equivalence: *)
result := NOT_MASK (16#1234);
(* result is 16#FFFF_EDCB *)
Arguments:
Description:
Example
(* ST Equivalence: *)
If Not (ODD (value)) Then Return; End_if;
value := value + 1;
Arguments:
Description:
Example
(* ST Equivalence: *)
parity := OR_MASK (xvalue, 1); (* makes value always odd *)
result := OR_MASK (16#abc, 16#f0f); (* equals 16#fbf *)
Arguments:
Description:
When the first arguement is 'base' and the second arguement is 'exponent', yields the REAL
result of the following: (base exponent). 'Exponent' is a REAL value.
Example
(* ST Equivalence: *)
result := POW (xval, power);
Arguments:
Description:
Example
(* ST Equivalence: *)
selected := MUX4 ( RAND (4), 1, 4, 8, 16 );
(*
random selection of 1 of 4 pre-defined values
the value issued of RAND call is in set [0..3],
so 'selected' issued from MUX4, will get 'randomly' the value
Arguments:
Description:
Example
Arguments:
Description:
From the right ends of strings, yields the number of characters defined.
Example
*)
Arguments:
Description:
Example
(* ST Equivalence: *)
result := ROL (register, 1);
(* register = 2#0100_1101_0011_0101*)
(* result = 2#1001_1010_0110_1010*)
Arguments:
Description:
Example
(* ST Equivalence: *)
result := ROR (register, 1);
(* register = 2#0100_1101_0011_0101 *)
(* result = 2#1010_0110_1001_1010 *)
Arguments:
Description:
Example
(* ST Equivalence: *)
ProCmd := SEL (AutoMode, ManuCmd, InpCmd);
Arguments:
Description:
For 32-bit integers, moves integers to the left and places 0 in the least significant bit.
Example
(* ST Equivalence: *)
result := SHL (register,1);
(* register = 2#0100_1101_0011_0101 *)
(* result = 2#1001_1010_0110_1010 *)
Arguments:
Description:
Shifts the 32 bits of an integer to the right and replicates the leftmost bit (significant bit) to fill
the vacant bits.
Example
(* ST Equivalence: *)
result := SHR (register,1);
(* register = 2#1100_1101_0011_0101 *)
Arguments:
Description:
Example
(* ST Equivalence: *)
sine := SIN (angle);
result := ASIN (sine); (* result is equal to angle *)
Arguments:
Description:
Example
(* ST Equivalence: *)
xpos := ABS (xval);
xroot := SQRT (xpos);
Arguments:
Description:
Example
(* ST Equivalence: *)
timResult := SUB_DATE_DATE (datVal1, datVal2);
Arguments:
Description:
Example
(* ST Equivalence: *)
tangent := TAN (angle);
result := ATAN (tangent); (* result is equal to angle*)
Arguments:
Description:
Example
(* ST Equivalence: *)
result := TRUNC (+2.67) + TRUNC (-2.0891);
(* means: result := 2.0 + (-2.0) := 0.0; *)
Arguments:
Description:
Example
(* ST Equivalence: *)
crc32 := XOR_MASK (prevcrc, nextc);
result := XOR_MASK (16#012, 16#011); (* equals 16#003 *)
Arguments:
Description:
Stores a value at each cycle and calculates the average value of all stored values. Only the latest
N values are stored.
The maximum number of samples N is 128. When N exceeds 128, the number of samples is
truncated to 128.
When the "RUN" command is FALSE (reset mode), the output value is equal to the input
value.
Upon reaching the maximum N of stored values, the first stored value is overwritten with the
latest value.
Example
Arguments:
Description:
Timing diagram:
Arguments:
Description:
Compare two values: tell if they are equal, or if the first is less or greater than the second one.
Example
Arguments:
Description:
Example
Arguments:
Description:
Example
Arguments:
Description:
Example
Arguments:
Description:
If the "CYCLE" parameter value is less than the cycle timing of the execution of the controller
in the target, the sampling period is forced to this cycle timing.
Example
Arguments:
Description:
Example
Arguments:
Description:
Example
Arguments:
Description:
If the "CYCLE" parameter value is less than the cycle timing of the execution of the controller
in the target, the sampling period is forced to this cycle timing.
Example
Arguments:
Description:
A hysteresis is applied on high and low limits. The hysteresis delta used for either the high or
low limit is equal to the EPS parameter.
Example
Arguments:
Description:
Example
Arguments:
Description:
Example
Arguments:
Description:
Generates various signal: blink on a boolean, a integer counter-up, and real sine wave.
When counting reaches maximum value, it restarts from 0 (zero). So END keeps the TRUE
value only during 1 PERIOD.
Timing diagram:
Arguments:
Example
Arguments:
Description:
Manages a stack of integer values. The STACKINT function block includes a rising edge
detection for both PUSH and POP commands. The maximum size of the stack is 128. The
application defined stack size N cannot be less than 1 or greater than 128. This function
manages invalid values as follows:
Example
Arguments:
Description:
Timing diagram:
Arguments:
Description:
Timing diagram:
Arguments:
IN BOOL If rising edge, starts increasing internal timer (if not already increasing)
If FALSE and only if timer is elapsed, resets the internal timer
Any change on IN during counting has no effect.
PT TIME Maximum programmed time
Q BOOL If TRUE: timer is counting
ET TIME Current elapsed time. Possible values range from 0ms to
1193h2m47s294ms.
Description:
Timing diagram:
KvbConsNetStatus
KvbProdNetStatus
MathErr
ModbusServiceStatus
SoeServiceStatus
Note: This function block should only be used for network diagnostics.
Arguments:
Description:
From a consumer controller, obtains the status of a network link to a given producer IP address.
KvbConsNetStatus monitors incoming connections.
Example
In an application which has two controllers with identities 1 and 2, controller 1 is a producer
and has a bindings link to controller 2. Controller 1 has two network interfaces with IPs
10.44.200.1 and 192.168.3.1. Controller 2 has two network interfaces with IPs 10.44.200.2 and
192.168.3.2.
The following example shows the KvbConsNetStatus functions used in a redundant manner
verifying the error status of the network links for both controller 1 instances located at the
different IP addresses.
Note: This function block should only be used for network diagnostics.
Arguments:
Description:
From a producer controller, obtains the status of a network link to a given consumer IP address.
KvbProdNetStatus monitors outgoing connections.
Example
In an application which has two controllers with identities 1 and 2, controller 1 is a producer
and has a bindings link to controller 2. Controller 1 has two network interfaces with IPs
10.44.200.1 and 192.168.3.1. Controller 2 has two network interfaces with IPs 10.44.200.2 and
192.168.3.2.
Arguments:
Description:
Obtains and enables clearing the mathematical error status lasted reported by the TIC
interpreter
Example
In the following example, if the value of `DintOp2' is zero, MathErr() returns 1 and clears the
math error status.
(* Equivalent FBD *)
The ModbusServiceStatus C function block provides the status of the Modbus service. This
function block has the following input:
The SoeServiceStatus C function block provides the status of the SOE service. This function
block has the following input:
Demo License, delivered with the product and available for testing the product. This is a
30-day trial of the fully operational version of AADvance.
Full License, obtained by manually activating an unlicensed version of the product. The
Full License is a fully operational version of the product enabling the creation of projects
containing multiple controllers.
The obtained license is specific to a computer. The Single Controller or Full license persists
through all uninstall and reinstall operations. To move the license to another computer, contact
the support team to remove the license and then re-authorize it on a different computer.
After the Demo License has expired, you must obtain a Single Controller or Full license to
continue using the AADvance Workbench.
The licensing information for the AADvance 2.1 Workbench is displayed along with
three User Codes.
2. Send an e-mail containing the required license type and all three User Codes to the
support team:
keymaster@ra.rockwell.com
3. The support team will email you back Registration Keys 1 and 2.
Note that the User Codes may have changed since they were last displayed; the
Registration Keys returned by the support team will be invalid. You must request new
Registration Keys by sending the displayed User Codes.
The licensing for the AADvance 2.1 Workbench is displayed along with three User
Codes.
2. Send an email containing all three user codes to the support team:
keymaster@ra.rockwell.com
3. The support team will email you back Registration Keys 1 and 2.
4. Insert the registration keys in their respective fields and click Validate.
G
gateway 521 I
generate documentation 535
generating identifiers, using defined words as 718
documentation 535 IEC languages, customizing display options for
generating documentation 535 159
getting latest versions of elements 24 IF, THEN, ELSE, ELSIF, END_IF, ST basic
GFREEZE statement 650 statements 641
GKILL statement 652 importing
glossary of terms 887 environment settings 125
gotolink io_modules 894 projects from previous versions 180
graphic languages variables 217
in programs 708 initial steps
SFC (sequential function chart) 663 inserting in SFC 679
greater than operator 771 input voting 391
greater than or equal operator 773 insert empty slot 431
grids INSERT function 805
spy list 89 inserting
grids, setting color options for 151 blocks from the block library 13
groups blocks in function block diagrams 549
controller variables, for 202 comments (FBD elements) 575
GRST statement 656 elements, blocks, and identifiers 8
GSTART statement 648 initial steps and steps in SFC 679
GSTATUS statement 654 jumps in SFC 688
jumps to labels (FBD elements) 556
labels (FBD elements) 554
left power rails (FBD elements) 560
H regions (FBD elements) 574
hardware equipment returns (FBD elements) 558
clearing applications from 238 right power rails (FBD elements) 561
connecting with 239 rungs (FBD elements) 559
disconnecting from 243 sequence controls in SFC 682
Z
W zoom
contents of active POUs 104
warning status, controller 37
WHILE, DO, END_WHILE, ST basic statements
646
wildcards
finding with 76
replacing with 78
window
output, the 105
windows