Professional Documents
Culture Documents
I/A Series Integrated Control Configurator: Continuous
I/A Series Integrated Control Configurator: Continuous
REV N
I/A Series®
Integrated Control Configurator
March 30, 2001
LOGIC
CONTINUOUS
EXACT_MV
SEQUENCE
CONTINUOUS
EXACT_MV
Foxboro, FIO, I/A Series, SPEC 200, SPECTRUM, and UFM are trademarks of The Foxboro Company.
Invensys is a trademark of Invensys plc.
PLC is a trademark of Allen-Bradley Company.
Sun and Solaris are trademarks of Sun Microsystems, Inc.
UNIX is a registered trademark of X/Open Company Limited.
VENIX is a trademark of VenturCom, Inc.
Windows NT is a trademark of Microsoft Corporation.
Tables.................................................................................................................................. xiii
Preface................................................................................................................................... xv
Revision Information .............................................................................................................. xv
Reference Documents ............................................................................................................. xv
1. Introduction ...................................................................................................................... 1
Document Structure ................................................................................................................. 1
Pointing Devices ....................................................................................................................... 2
Keys Used in ICC ..................................................................................................................... 2
One Function at a Time ............................................................................................................ 3
Selecting Functions and Menu Items ........................................................................................ 3
Menu Icons ............................................................................................................................... 4
Invoking the ICC ...................................................................................................................... 4
AP Hosts ................................................................................................................................... 5
Configuring AP Hosts, CP Stations, and Volumes .................................................................... 5
Selecting a Sequence Editor ....................................................................................................... 6
Editable Work Areas ................................................................................................................. 7
Configuration Files ................................................................................................................... 8
Station File ................................................................................................................................ 8
Library Volume ......................................................................................................................... 9
Work Volume ........................................................................................................................... 9
ICC Print Configuration ........................................................................................................... 9
Printer Configuration Files ................................................................................................... 9
Printer Configuration Parameters ....................................................................................... 10
Printer Configuration ......................................................................................................... 10
Notes On Printer Configuration ........................................................................................ 10
iii
B0193AV – Rev N Contents
iv
Contents B0193AV – Rev N
v
B0193AV – Rev N Contents
vi
Contents B0193AV – Rev N
vii
B0193AV – Rev N Contents
viii
Contents B0193AV – Rev N
ix
B0193AV – Rev N Contents
x
Figures
1-1. AP Host_Cfg Dialog Box .............................................................................................. 5
1-2. CIO_SeqEdt Dialog Box .............................................................................................. 7
1-3. Editable Work Areas ..................................................................................................... 8
2-1. Compound Summary Access ....................................................................................... 14
2-2. Selecting Volume Key from the CSA Utility Screen .................................................... 17
2-3. Override Lock Display ................................................................................................ 18
2-4. Compound and Block Overview Display .................................................................... 19
3-1. Compound Function Display ..................................................................................... 22
3-2. Compounds Functions Menu ..................................................................................... 23
3-3. Compound Name Window ........................................................................................ 24
3-4. Compound Parameters List ......................................................................................... 25
3-5. Save to Diskette Dialog Box ........................................................................................ 28
3-6. Selected Device ........................................................................................................... 29
3-7. Load from Diskette ..................................................................................................... 30
3-8. Select Device for Load from Diskette .......................................................................... 31
3-9. Moving Objects .......................................................................................................... 32
3-10. Delete and Undelete .................................................................................................... 34
3-11. Block/ECB Functions Display .................................................................................... 35
3-12. Enter New Block Location .......................................................................................... 37
3-13. Enter Block Type ........................................................................................................ 38
3-14. Show Block Type ........................................................................................................ 39
3-15. Edit Block Parameters ................................................................................................. 40
3-16. Block Order within a Compound ............................................................................... 42
3-17. Insert New ECB .......................................................................................................... 45
3-18. Enter Name of New ECB ........................................................................................... 46
3-19. ECB Type Window .................................................................................................... 47
3-20. ECB Device Identification Window ............................................................................ 48
6-1. Data Fields .................................................................................................................. 79
7-1. Block/ECB Functions Menu ....................................................................................... 95
7-2. Sequence Logic Functions Menu ................................................................................. 96
7-3. Copy Source of This Block From Library .................................................................. 100
7-4. Delete Block Source From Library ............................................................................ 102
7-5. Save Source of this Block to Library .......................................................................... 109
7-6. View Include Library Contents ................................................................................. 112
7-7. View Source Library Contents ................................................................................... 113
xi
B0193AV – Rev N Figures
xii
Tables
1-1. Cursor Movement ......................................................................................................... 3
1-2. Menu Icons ................................................................................................................... 4
2-1. Detail Buttons ............................................................................................................. 20
6-1. Field Inputs ................................................................................................................. 76
6-2. Cursor Control ........................................................................................................... 76
6-3. Editing Keys ................................................................................................................ 77
6-4. Symbol Keys ............................................................................................................... 78
6-5. Technical Identifiers .................................................................................................... 79
8-1. Special Symbols ......................................................................................................... 125
8-2. Sequence Compiler Limits ........................................................................................ 143
A-1. Run-Time Data Conversion Errors ........................................................................... 168
A-2. HLBL Semantics Violation Errors ............................................................................. 168
A-3. Environmental Interaction Errors .............................................................................. 169
A-4. Sequence Control Block System Errors ..................................................................... 169
A-5. CPGET/CPSET Error Messages ............................................................................... 171
A-6. Object Manager Error Codes .................................................................................... 172
xiii
B0193AV – Rev N Tables
xiv
Preface
This document is intended for use by process control and applications engineers. It provides spe-
cific information and procedures for configuring your process control database including Fieldbus
Modules, equipment control blocks, compounds, and blocks and their parameters. Complete
block descriptions and lists of their parameters are found in the Integrated Control Blocks Descrip-
tions (B0193AX) document.
Revision Information
For Release 6.3, the following changes were made to the document:
Chapter 1 “Introduction”
♦ Added information for printer configuration for the Integrated Control Configurator
with UNIX™/Solaris™, including configuration files and parameters.
Reference Documents
Refer to the following documents for additional information:
♦ Integrated Control Software Concepts (B0193AW)
♦ Integrated Control Block Descriptions (B0193AX)
♦ Integrated Control Configurator Application Programming Interface (B0193NE)
♦ Intelligent Transmitter Maintenance Workbench and Configurator (B0193MW)
♦ System Management Displays (B0193JC)
♦ Fieldbus Cluster I/O User’s Guide (B0193RB)
♦ SPECTRUM Migration Integrator User’s Guide (B0193RC)
♦ SPEC 200 Control Integrator User’s Guide (B0193RD)
♦ VENIX User Reference Manual (B0193BV)
♦ VENIX User Guide (B0193BY)
♦ SUN OS User’s Guide
xv
B0193AV – Rev N Preface
xvi
1. Introduction
This chapter serves as an introduction to the Integrated Control Configurator (ICC) and covers
the document set structure, pointing devices and keys used in the ICC, the use of one function at
a time, selecting functions and menu items and menu icons. Also covered in this chapter is
information on invoking the ICC, configuring AP hosts, CP stations and volumes, selecting a
sequence editor, using editable work areas, and configuration files including station files,
library volume, and work volume.
The Integrated Control Configurator (ICC) is intended for use by process control and applica-
tions engineers. It provides procedures for configuring your process control database including
Fieldbus Modules, equipment control blocks, compounds, and blocks and their parameters.
NOTE
Windows NT Platform Users: All references in this document to “control proces-
sors” or “control stations” should be interpreted to mean “the processor.”
Once you have physically connected your system and loaded the appropriate software through the
System Configurator/Definition, you can begin using ICC.
The best way to become familiar with the ICC is to just sit down and use it. Use a pointing device
(mouse or trackball) to make selections. ICC Help on FoxDoc provides the information on
ranges, parameters, and so forth.
Compound and block parameters have a default value. Therefore, you can build simple com-
pounds/blocks before you learn all the parameters and their functions. This feature saves time
when building control structures for general applications use.
NOTE
The Integrated Control Configurator is an initial condition configurator; that is,
updates to parameter values from run-time displays are not automatically passed
back to the configuration. You must use the update function to update the configu-
ration.
Document Structure
The Integrated Control document set consists of:
♦ Integrated Control Software Concepts (B0193AW)
♦ Integrated Control Block Descriptions (B0193AX)
♦ Integrated Control Configurator (B0193AV)
♦ Intelligent Transmitter Maintenance Workbench and Configurator (B0193MW).
Integrated Control Software Concepts (B0193AW) document contains conceptual information of
the control software. It also contains:
♦ SCIX tables
1
B0193AV – Rev N 1. Introduction
♦ Parameter list
♦ Ranges.
The Integrated Control Block Descriptions (B0193AX) document contains descriptions of each
block, along with data diagrams and parameter list.
This document Integrated Control Configurator (B0193AV) describes the ICC functions and how
to use them. The chapters in this document contain the following information:
♦ Chapter 1 “Introduction”
♦ Chapter 2 “The Compound Summary Access Utility”
♦ Chapter 3 “Compounds, Blocks, and ECBs”
♦ Chapter 4 “Menu Bar Functions”
♦ Chapter 5 “Block Parameter Connections”
♦ Chapter 6 “Editing Ladder Logic”
♦ Chapter 7 “Editing Sequence Logic”
♦ Chapter 8 “Sequence Language”
♦ Chapter 9 “HLBL Statements”
♦ Appendix A “Sequence Control Printed Error Messages”.
The Intelligent Transmitter Maintenance Workbench and Configurator (B0193MW) document
describes how to configure intelligent field devices.
Pointing Devices
The cursor is the primary means for making menu selections and for selecting ICC functions or
data fields. Cursor control is available through the touchscreen, a pointing device (mouse or track-
ball), or keyboard cursor control keys.
A menu or function is selectable if it is highlighted, or when it highlights or frames as the mouse
moves over it.
In some functions, auxiliary keystrokes from an alphanumeric keyboard are necessary for imple-
mentation. Two examples are:
♦ Typing in an expected name or value.
♦ Pressing Enter or Return to enter a selection.
The pointing device can also be used to select compound or block parameters during the com-
pound and block-building processes. This enables you to move quickly around in the list rather
than in a line-by-line order that the vertical arrow keys dictate.
2
1. Introduction B0193AV – Rev N
All Users:
Table 1-1 describes the general control keys.
Menu Icons
Menus that allow cursor movement within a list have icons (refer to Table 1-2) at the bottom of
each menu window.
Table 1-2. Menu Icons
Icon Function
Single Up/Down Arrow Move the highlighted cursor up or down one item.
Double Up/Down Arrow Move the highlighted cursor to the previous page or
to the next page.
Double Up/Down Arrow with a Rule Move the highlighted cursor to the beginning or
end of the list.
Octagon Close the window.
AP50/AW50/AP51/AW51 AP20/PW
CIO_Config CIO_Config
CIO_AP_Cfg CIO_AP_Cfg
CIO_STN_Cfg CIO_STN_Cfg
CIO_VOL_Cfg CIO_VOL_Cfg
CIO_SeqEdt
Selecting CIO_Config invokes the first display of the ICC, the Compound Summary Access
(CSA) search utility.
The other three (or the next three menu items in the case of the AP20/PW) are used to configure
or display a list of AP hosts, CP stations, or volumes from which or for which an ICC session can
be directly invoked.
4
1. Introduction B0193AV – Rev N
from the menu bar. Selecting CIO_Config invokes the first display of the ICC, the Compound
Summary Access (CSA) search utility.
AP Hosts
UNIX Platform Users Only:
The ICC executes in an AP, performing remote-draws to the WP. When the CSA compound
menu is displayed, the right-hand side of the title shows the letterbug of the AP in which the
information resides. Whenever a library or station volume is selected which is not hosted by the
AP noted in the title, execution of the ICC transfers from that AP to the AP which hosts the
selected station or volume. To configure a list of APs from which an ICC session can be invoked,
see “Configuring AP Hosts, CP Stations, and Volumes” on page 5.
You use this dialog box to add AP hosts, stations, or volumes to the appropriate menu listing, or
to delete them.
To add AP hosts, stations, or volumes to the appropriate menu listing:
1. Select the appropriate submenu entry: CIO_AP_Cfg, CIO_STN_Cfg, or CIO_VOL_Cfg.
2. When the dialog box appears, enter All or an individual AP host, CP station, or vol-
ume name. Press Enter.
AP Hosts 5
B0193AV – Rev N 1. Introduction
NOTE
The entry box is case sensitive. For AP hosts and CP stations enter each letterbug in
uppercase. For volumes, enter the volume name in lowercase.
3. Select Add. If individual entries are being made, continue to enter the letterbugs or
names and select Add after each entry.
4. A message appears in the message line for each AP, CP station, or volume that has
been successfully added to the menu or failed addition to the menu.
5. Select Close to close the dialog box.
To delete AP hosts, stations, or volumes from the appropriate menu listing:
1. Select the appropriate submenu entry: CIO_AP_Cfg, CIO_STN_Cfg, or CIO_VOL_Cfg.
2. When the dialog box appears, enter All or an individual AP host, CP station, or vol-
ume name. Press Enter.
NOTE
The entry box is case sensitive. For AP hosts and CP stations enter each letterbug in
uppercase. For volumes, enter the volume name in lowercase.
3. Select Delete. If individual entries are being made, continue to enter the letterbugs or
names and select Delete after each entry. A message appears in the message line for
each AP, CP station, or volume that has been successfully deleted from the menu.
To access the list of AP hosts, CP stations, or volumes from which to directly initiate a configura-
tion session:
1. After configuring the appropriate menu listings, select the appropriate option from
the Control_Cfg submenu:
♦ CIO_AP_Cfg
♦ CIO_STN_Cfg
♦ CIO_VOL_Cfg.
2. A menu listing the configured AP hosts, stations, or volume names for direct access to
an ICC session appears. The first entry in each menu listing provides access to the
configuration dialog box: APhost_Cfg, Station_Cfg, and Volume_Cfg. Select the
desired AP host, CP station, or volume name to initiate the session.
When the logical AP host of a WP50 is not configured for the ICC, one of the three new menu
picks, CIO_AP_Cfg, CIO_STN_Cfg, or CIO_VOL_Cfg, must be used to access the ICC.
6
1. Introduction B0193AV – Rev N
Select one of the text editors to be used whenever sequence logic associated with blocks running
in a CP hosted by that AP20 is edited. The selected editor also applies to Paste Buffer sequence
editing if that AP20 hosts the selected volume or station. When an editor is selected a message
such as the following appears in the message line:
<ice> selected as Sequence Editor
! CAUTION
The dialog box allows you to configure the text editor for the AP hosting the WP
you are using. When the ICC accesses a volume or CP station hosted by this same
AP, the configured text editor is used. If volumes or CP stations are hosted by
another AP(s), another configuration applies. If different editors are selected for dif-
ferent AP20s or if ice is selected for AP20s and some volumes in the system are
hosted by AP50s, then a single invocation of the ICC might alternate between ice
and vi editors as station volumes with different hosts are selected.
All Users:
The Paste Buffer is an ICC function, and is accessed from the ICC menu bar. Editable file areas
are illustrated below.
EDIT SESSION
PASTE PASTE
CHECKPOINT STATION PASTE LIB/WORK
FILE FILE BUFFER VOLUME
COPY COPY
REBOOT
LOAD/PASTE/EDIT
CHECKPOINT UPLOAD
CP LOADALL/SAVEALL
LOAD FROM DISKETTE
SAVE TO DISKETTE
Configuration Files
A configuration file is either a station file, library volume, or work volume.
A station file is a set of control compounds installed in a control processor or an AW70.
A library volume is a set of uninstalled compounds.
A work volume bears the same characteristics as a library volume without a given identifier. This
provides a “scratchpad” volume in which to build compounds before selecting an eventual ICC
file destination.
These files can be directly accessed through the Vol key from the CSA utility, or indirectly by
selecting a compound from the CSA utility.
Station File
When you select a station file to edit:
♦ A copy of the current data in a control station (or the AW70 processor) is provided for
editing.
♦ Editing is done in an active mode, which means that the control processor is
connected.
♦ There is data validity checking and linkage to the process.
♦ The message line beneath the menu bar indicates that you are editing a station file in a
station hosted by the designated AP, for example,
STA = [station name] @ AP [letterbug].
♦ Following the completion of a station edit, a check point of the control processor’s
database is automatically initiated.
8
1. Introduction B0193AV – Rev N
Library Volume
When you select a library volume to edit:
♦ There is no control processor connected.
♦ Editing is done in an inactive mode.
♦ There is no data validity checking and linkage to the process.
♦ The message line beneath the menu bar indicates:
VOL = [volume name] @ AP [letterbug of hosting AP].
Work Volume
You can access a scratchpad work volume from the CSA utility by selecting OK when a new, sys-
tem-unique, compound name is entered in the Choice field (or the Choice field is blank).
The work volume (Volwrk) provides a place to create and edit compounds before assigning them
to a particular library volume or station file. There is only one Volwrk (default name) in the sys-
tem.
In Volwrk, you have complete access to all the appropriate ICC functions.
When you are finished editing, you can copy the compound to a target configuration file using
the copy and paste functions. See “Copy to Paste Buffer” on page 26.
Library Volume 9
B0193AV – Rev N 1. Introduction
In order to customize printer configuration, modify only the print_cfg.usr file. You should not
modify other files in the ciocfg_printers directory.
To perform configuration file edits on Solaris platforms, go to VT100 mode, then change the
directory (cd /opt/fox/ciocfg/ciocfg_printers), then use the vi editor to edit the print_cfg.usr file.
To perform configuration file edits on Windows NT platforms, go to the Notepad, then go to the
directory /opt/fox/ciocfg/ciocfg_printers, then use the Notepad to edit the print_cfg.usr file.
Printer Configuration
The ICC normally assumes that the number of output lines per page is the Unix standard of 66.
On some systems, such as Windows NT, this may not be true. For such cases, the parameter
LINES_PER_PAGE can be modified to be equal to the number of lines appropriate to your
printer.
On a given system, there may be more than one printer, each with a different number of lines per
page. For this case, you may configure a “lowest common denominator." The parameter
LINES_PER_PAGE is set to the smallest page size for any of the system’s printers minus one. In
addition, EJECT is set to yes. As a result of this, the small size printer will contain print on all
possible lines. Any larger size printer will contain LINES_PER_PAGE lines, followed by a page
eject to provide proper alignment of the page header for the next page.
10
1. Introduction B0193AV – Rev N
If the value of the LINES_PER_PAGE parameter is too small to accommodate the five-line
header and five-line footer (I.E. - between one and ten), the ICC report is not formatted.
If the printer configuration file is formatted improperly or is missing altogether, ICC printing still
occurs. When printing is attempted, the error message Printer configuration file format/access
FAILED appears on the display. However, the print job will still be performed, using hard-coded
default values of USE_NEW_HEADERS=yes, LINES_PER_PAGE=66 and EJECT=no. So, for
this case, printing shows no effect except for the annoying error message, which will continue to
appear until the problem with the printer configuration file is fixed.
12
2. The Compound Summary Access
Utility
This chapter contains information on the Compound Summary Access (CSA) utility including
CSA conventions, selecting a compound name, searching by character or character string,
searching for compounds by block name, and searching for compounds by block type. Also
included in this chapter is information on creating a new compound from CSA, selecting the
OK, Vol, and Close keys in CSA, selecting a station type to edit, selecting a control processor to
configure, and the Select Screen.
The Compound Summary Access (CSA) utility is the first display that appears when you select
the ICC from the ICC menu. CSA has many uses. Use it to:
♦ Find and select a compound that resides anywhere in the system.
♦ Find and list all compounds in the system that begin with a particular character or
character string.
♦ Find and list all compounds that contain a particular block name.
♦ Find and list all compounds that contain a particular block type.
♦ Create a new compound in a scratchpad work volume.
♦ Access the Edit Library Volume menu, which allows you to choose a particular library
volume in which to work.
♦ Access the Edit Station menu, which allows you to modify a station.
The following sections explain the use of the Compound Summary Access utility:
♦ “CSA Conventions” on page 13
♦ “Selecting Compound Name” on page 14
♦ “Searching by Character or Character String” on page 15
♦ “Searching for Compounds by Block Name” on page 15
♦ “Searching for Compounds by Block Type” on page 16
♦ “Creating a New Compound from CSA” on page 16
♦ “Selecting the OK Key in CSA” on page 17
♦ “Selecting the Vol Key in CSA” on page 17
♦ “Selecting the Close Key in CSA” on page 17
♦ “Selecting Station Type to Edit” on page 18
♦ “Selecting a Control Processor to Configure” on page 18.
Windows NT platform users can may also access compounds via the Select Screen.
CSA Conventions
♦ Compound and block names must be in full caps. If you do type a compound or
block name in lowercase letters, the ICC converts them to uppercase.
13
B0193AV – Rev N 2. The Compound Summary Access Utility
♦ A pointing device and the Enter/Return keys govern your selections in the CSA utility.
Use the pointing device to select, and the Enter or Return key to enter the selection.
The arrow keys on the numeric keypad also move you through the CSA utility.
♦ The hierarchy of CSA is always compound name, block name, and block type; in that
order. Therefore, if you want to select either the block name or block type search, you
must first select the compound name field to highlight its selection field.
However, you do not need to type anything into the compound name field. After the
selection box appears, just press the Enter key (or the arrow keys on the numeric key-
pad) an appropriate number of times to move down to the field of your choice.
♦ To create a new compound in the “scratchpad” work volume using CSA, press the
Enter key (or the arrow keys on the numeric keypad) to move down to the Choice
field. See “Creating a New Compound from CSA” on page 16.
♦ Spaces are not valid within compound or block names. If you wish to use two words,
tie them together with an underscore, for example, REACTOR_1 .
If the compound that you want to find is visible in the CSA window, go right to Step 4. If it is
not:
14
2. The Compound Summary Access Utility B0193AV – Rev N
1. Select the Compound Name field with the pointing device to illuminate a
12-character search field.
2. Type the compound name in the appropriate case (or use the one to 12-character
string search, described in “Searching by Character or Character String” on page 15).
3. Press Enter.
The utility searches for, finds, and lists the compound that you requested. It appears
highlighted in a list of compounds that reside in the same configuration file.
4. Using the pointing device, select the appropriate compound from the displayed list.
Notice that the selected compound now appears under Choice.
5. If you accidentally highlight the wrong compound, go back to Step 4 and select the
correct compound. The CSA utility will overwrite the incorrect name in the Choice
field.
6. When the selected compound is the one you want to view or edit, select OK at the
bottom left of the display.
CSA gets the selected compound with all of its data, and transports it to the ICC. The selected
compound appears, highlighted, on the left of the display along with other compounds that reside
in that same station or volume.
16
2. The Compound Summary Access Utility B0193AV – Rev N
Figure 2-2. Selecting Volume Key from the CSA Utility Screen
Selecting Yes from the Database Locked dialog box displays the Communication to CP (-1000)
Failed dialog box. Selecting No causes a return to the Select a Control Processor to Configure
menu.
Selecting Continue from the Communication to CP (-1000) Failed dialog box displays the IUC_
OR UC_OPEN Failed dialog box.
18
2. The Compound Summary Access Utility B0193AV – Rev N
Selecting Continue from the IUC_ OR UC_OPEN Failed dialog box causes a return to the CSA
utility.
Select Screen
Windows NT Platform Users Only:
The Select Screen is a scrollable, hierarchical representation of the control database that allows
compounds to be selected and turned on or off. It also provides direct access to associated block
detail displays.
Figure 2-4 shows the compound and block overview display of the Select Screen function.
Double clicking on an expandable entry (that is, an entry with a + before it) expands the entry.
Each entry includes the compound name, status (on or off) and alarm state. The entry immedi-
ately above the compound names is the name of the AW in which the compound exists.
A list of blocks is displayed from the selected compound; each block includes the block’s name,
type, Auto/Manual status and alarm state.
To call up a detail display for a compound:
1. Select the compound from the list.
Select Screen 19
B0193AV – Rev N 2. The Compound Summary Access Utility
2. Select the Detail button. (The Detail button is disabled if no compound has been
selected.)
Each compound detail display shows all connectable compound parameters and allows settable
parameters to be set.
To call up a detail display for a block:
1. Select a compound from the list.
2. Access the list of blocks for the compound.
3. Select a block.
4. Select the Detail button. Detail buttons are listed in Table 2-1.
Button Function
Cpd On Turns compound On. If compound is already On, only Cpd Off is selectable.
Cpd Off Turns Compound Off. If compound is already Off, only Cpf On is selectable.
Detail Brings up the compound detail summary or block display.
Refresh Refreshes the display to reflect the current status of the compound and blocks.
20
3. Compounds, Blocks, and ECBs
This chapter contain information on compounds, blocks, and ECBs including ICC basics and
conventions, compound functions, block/ECB functions display, viewing a compound list,
inserting a new block, the block name window, the block type window, the show block type
names window, and the edit block parameters window. Also included in this chapter is
information on how to copy a block, block order, how to insert a new ECB, the ECB functions
menu, the ECB name window, the ECB type window, the ECB device identification window,
how to copy an ECB, how to edit block/ECB parameters, warning and error messages, edit
sequence logic, edit ladder logic, and how to rename a block/ECB.
Compound Functions
The ICC expects certain conditions to be met before making a function selectable. When these
conditions are satisfied, the appropriate function highlights.
For example, you must:
♦ Create a compound before adding any blocks or ECBs (initially)
♦ Create a PLB block before accessing ladder logic
♦ Create a Sequence block before accessing sequence logic
♦ Copy to Paste Buffer before accessing the Rename function
♦ Select a station file (Active mode) to edit Fieldbus Modules (ECBs can be edited in
volumes, but are not associated with physical FBMs).
You can use the System Configurator/Definition to define the letterbugs and hardware and soft-
ware types of the following Fieldbus devices associated with a control processor:
♦ Fieldbus Modules (FBMs)
♦ Fieldbus Processor Modules (FBPs) for Fieldbus Cluster and SPECTRUM I/O
♦ Fieldbus Cards (FBCs).
Whenever these devices are added to the system by the System Configurator/Definition, its name
and specifications are sent to the ICC’s equipment list. The ECBs for the above devices are then
installed in the ICC database using the Fix All function in the FBM pull-down menu. ECBs for
the SPECTRUM I/O cards used in conjunction with the FBPs must be inserted individually via
the ICC. Refer to the Fieldbus Cluster I/O User’s Guide (B0193RB), SPECTRUM Migration Inte-
grator User’s Guide (B0193RC), and SPEC 200 Control Integrator User’s Guide (B0193RD) docu-
ments for more information on these devices.
The ICC allows you to edit ECBs in a manner similar to control blocks. Defining Fieldbus
devices for a control processor consists of installing the appropriate ECBs in the ICC database.
21
B0193AV – Rev N 3. Compounds, Blocks, and ECBs
You can do this using the Fix All function in the FBM pull-down menu, or you can install and
manipulate the ECBs in a manner similar to control blocks. ECBs can be part of the built-in ECB
compound (cplbug_ECB), or you can install them in other compounds.
You can configure up to 64 Fieldbus devices; that is, FBMs, FBPs, and FBCs (48 devices for a
CP10) and 120 ECBs per control station.
All ECBs, except for the primary ECB, have a DEV_ID parameter that contains the letterbug of
the Fieldbus device associated with the ECB. In order to preserve backward compatibility and
support the ability to install ECBs in any compound, the IOM_ID parameter in the I/O control
blocks can contain either the letterbug value or the full pathname of the ECB block.
Compound
Compound List Functions List Available FBMs
22
3. Compounds, Blocks, and ECBs B0193AV – Rev N
2. Select Insert New Compound. This displays a name definition window (see
Figure 3-3).
Compound Functions 23
B0193AV – Rev N 3. Compounds, Blocks, and ECBs
3. Type in a valid compound name and press the Enter (Return) key. (“Valid” means full
caps, alphanumeric, unique in the system, and up to 12 characters.) Selecting Cancel
before Enter aborts the insert operation.
The ICC checks the validity of the name. If the name is accepted, the name definition template
disappears and a compound is created with default parameter values.
If the name is not unique, you are notified to enter a new name, or cancel the insert request.
The newly inserted compound appears highlighted in the compound summary list.
You can then edit the compound parameters, if you want, using the Edit Compound Parameters
function (see Figure 3-4).
24
3. Compounds, Blocks, and ECBs B0193AV – Rev N
Edit compound
parameters as
required.
The following two compounds containing one block each are automatically installed in a UNIX
platform control processor (on initial boot) and in the ICC when invoked the first time from a
control station:
♦ Station compound (cplbug_STA) containing the station block
(cplbug_STA:STATION)
♦ ECB compound (cplbug_ECB) containing the primary ECB
(cplbug_ECB:PRIMARY_ECB).
The same is true for Windows NT platform users, except that the primary ECB is not installed
automatically.
Compound Functions 25
B0193AV – Rev N 3. Compounds, Blocks, and ECBs
If you are just checking values without making changes, you can select Cancel when you are done.
Cancel aborts the edit. However, if you are making edits to the list, always select Done when you
are finished. Done saves the edits and overwrites the original.
26
3. Compounds, Blocks, and ECBs B0193AV – Rev N
Before making this move, ensure that every display in the system is static (not being updated from
points in that compound) to avoid problems with connecting displays.
To move the compound from the paste buffer into a different ICC file, select New from the menu
bar. This closes the current file and returns the ICC to the CSA utility.
Select the Vol key to retrieve the CIO_STN_Cfg or CIO_VOL_Cfg menu. After you have chosen an
ICC file, select Copy to Paste Buffer from the Compound Functions menu to retrieve the copied
compound. The copied compound is inserted in front of the currently selected compound.
Compound Functions 27
B0193AV – Rev N 3. Compounds, Blocks, and ECBs
Save to Diskette
This function is only available from the Compound Functions menu. It copies only to a high
density diskette that has been formatted with the appropriate file system. It copies the following
to a diskette in the selected drive:
♦ The currently highlighted compound (including its compound parameter list)
♦ All associated block parameter lists
♦ All associated ECB parameter lists
♦ All associated PLB (UNIX platform users only) and sequence block source files.
To execute a Save to Diskette operation:
1. Select Save to Diskette from the Compound Functions menu. This displays the dia-
log box illustrated in Figure 3-5. If the desired host and drive are listed in this dialog
box, go to the next step; otherwise, go to Step 5.
2. In the Current Name field, enter the name of the compound to be saved.
3. In the New Name field, enter the name you want the compound to assume on
diskette.
4. Select Done to save the compound or select Cancel to exit the operation.
5. If the desired host and drive are not listed in the above dialog box, select Device from
the above dialog box to designate the appropriate drive. This displays the following
dialog box:
28
3. Compounds, Blocks, and ECBs B0193AV – Rev N
! WARNING
Removing a diskette from the diskette drive during a Save to Diskette operation can
destroy the information on the diskette. Wait until the menu reappears before
removing the diskette.
Compound Functions 29
B0193AV – Rev N 3. Compounds, Blocks, and ECBs
! CAUTION
The compound maintains the same parameter settings as when it was saved to dis-
kette. To avoid disruption of the process, the compound can be copied into the
Paste Buffer and the parameters modified prior to pasting the compound into an
active station.
2. In the Current Name field, enter the name of the compound to be loaded.
3. In the New Name field, enter the name you want the compound to assume when it is
loaded.
4. Select Done to load the compound or select Cancel to exit the operation.
5. If the desired host and drive are not listed in the above dialog box, select Device from
the above dialog box to designate the appropriate drive. This displays the dialog box
illustrated in Figure 3-8.
30
3. Compounds, Blocks, and ECBs B0193AV – Rev N
Compound Functions 31
B0193AV – Rev N 3. Compounds, Blocks, and ECBs
Move Functions
Move and Move Group are used in conjunction with Select to Move and End Move to move one
or more objects in the compound or block/ECB list on the left side of the display (see Figure 3-9).
These functions are available from the Compound and Block/ECB Functions menus.
Step 1
TANK CPD TANK CPD
Select to Move
ECB01 Object to be moved is
ECB01
ECB02 highlighted in yellow. ECB02
END ECB*** END ECB***
AIN01 AIN01
Step 2
AIN02 AIN44
Point to and click on
AIN44 desired target point. AIN56
AIN56 Target is highlighted in END CON1**
blue MON01
END CON1**
MON01 TIM01
TIM01 Step 3 EXC03
EXC03 Move DEP22
DEP22 Desired object is IND01
IND01 moved in front of target. END SEQ***
END SEQ*** DGAP77
DGAP77 AIN02
Step 3a
CALC22 If Move Group is CALC22
PID13 selected, new movable PID13
object is highlighted.
PID14 PID14
END CON2** END CON2**
END DATA ** END DATA **
32
3. Compounds, Blocks, and ECBs B0193AV – Rev N
1. Click on the name of an object in the list. This displays the normal cursor on the
object.
2. Click on Select to Move from the Compound or Block/ECB Functions menu. This
highlights the selected object and displays the differently colored move cursor on it.
3. Click on the object immediately following the desired new position for the selected
object. This displays the normal cursor at the target position.
4. Click on Move Group. This moves the selected object to a position immediately in
front of the target position. This also highlights the object immediately following the
original position of the moved object and displays the move cursor on it. The normal
cursor remains at the target position.
5. Click on Move Group again. This moves the second highlighted object in front of the
target position. This highlights the next object and displays the move and normal cur-
sors as in Step 4.
6. Repeat Step 5 until you have moved all the desired objects.
7. Click on End Move or the move cursor. This ends the move operation and deactivates
the move functions in the menu. Clicking on the move cursor also redisplays it as the
normal cursor.
The Select to Move function is only active when the normal cursor is positioned on a legally mov-
able object. The station and ECB compounds and the End marker cannot be selected for moving.
When a valid compound has been selected for moving, it cannot be moved in front of either the
station or ECB compounds.
Within the Paste Buffer, copies of the station and ECB compounds are treated just like any other
compound for moving purposes.
A block cannot be moved into an invalid zone. For example, an ECB cannot be moved into the
sequence zone. Blocks can be moved back and forth between the two continuous zones (CON1
and CON2). Within the ECB compound, the primary ECB cannot be moved. Neither can
another ECB be moved to a position in front of the primary ECB.
Upload
The Upload function retrieves “settable” configuration compound, block, and ECB parameter
values from the station and stores these values into the ICC workfiles.
Tuning parameters and alarm limits are examples of “settable” values which are changed via appli-
cations such as default displays, customer-configured displays, and user-written applications.
Parameters that are uploaded include:
♦ Unconnected, settable parameters
♦ Unconnected inputs (value is not a pathname).
Parameters that are not uploaded include:
♦ Parameters that can be set only by the ICC
♦ Connected inputs (value is a pathname)
♦ Parameters of string data type.
The Upload function appears in three separate menus in the ICC.
Compound Functions 33
B0193AV – Rev N 3. Compounds, Blocks, and ECBs
Delete
Delete has two uses. You can use it to:
♦ Delete a compound or block from the display and database
♦ Re-establish broken compound or block connections.
Selecting Delete from the Compound or Block/ECB Functions screen displays the following dia-
log box:
Cancel
Selecting Cancel discontinues the operation and returns to the previous display.
34
3. Compounds, Blocks, and ECBs B0193AV – Rev N
When the compound list appears, note that the highlight bar illuminates the compound name
associated with the previous block/ECB list.
NOTE
For PLB (UNIX platform users only) and sequence blocks, only the parameter val-
ues are copied to the new block, not the logic. Use the PLB and/or sequence librar-
ies for transporting this logic.
36
3. Compounds, Blocks, and ECBs B0193AV – Rev N
If the type is unknown or invalid for the current station or location within the station,
you are notified with an error message dialog box. Select Continue and enter a new
type, or cancel the insert operation.
6. The new block appears immediately above the selected block in the block/ECB list
under the compound name. You can then edit the block parameters, if you wish,
using the Edit Standard Block/ECB Parameters or Edit All Block/ECB Parameters
selection to display the Edit Block Parameters window.
New blocks must be inserted in accordance with the block order zones described in
the paragraph “Block Order” on page 41.
You cannot add blocks to the station compound.
38
3. Compounds, Blocks, and ECBs B0193AV – Rev N
Edit block
parameters as
required
Copy a Block
To copy a block from an existing block:
1. From the block/ECB list for the compound, highlight the block that is to follow the
one you are creating. Highlight the appropriate End (End CON1, End seq, or
End CON2) if the new block is to be last one in the zone (see “Block/ECB Functions
Display” on page 35).
2. Select Insert New Block/ECB from the Block/ECB Functions menu. This displays a
window for Block Definition (see “Insert New Block” on page 36).
3. For the Name, enter a valid name (full caps, unique within the compound, up to
12 characters) for the new block. Press Enter (or Return). If accepted, a Block Type
window appears (see “Block Type Window” on page 38).
4. If the name is invalid, you are notified by an error message dialog box. You can then
select Continue and enter a new name.
5. For the Type (see “Block Type Window” on page 38), enter the name of the block to
be copied:
a. If the block is remote to the current compound, type (in full caps) the name of the
block using the COMPOUND:BLOCK_NAME convention and press Enter, or
40
3. Compounds, Blocks, and ECBs B0193AV – Rev N
b. If the block is in the current compound, type in the name of the block using the
:BLOCK_NAME convention and press Enter.
! CAUTION
The new block has the same parameter settings as the block that was copied. To
avoid disruption of the process when copying a block within an active station, you
should copy the block into the Paste Buffer and modify the parameters as follows:
1. Create a temporary compound within the Paste Buffer.
2. Copy the desired block into that compound.
3. View the parameter values and edit them for safe and effective operation, espe-
cially such settings as FBM assignments and output point connections.
6. After the name of the existing block is entered, the ICC checks its validity. If valid, the
block is copied with the new block name. The new block contains the same parameter
settings as the block that was copied.
7. If the block entered is unknown or invalid for the current station or location within
the station, you are notified with an error message dialog box. Select Continue and
enter a new type, or cancel the insert operation.
8. The new block appears immediately above the selected block in the block/ECB list
under the compound name. You can then edit the block parameters, if you wish,
using the Edit Standard Block/ECB Parameters or Edit All Block/ECB Parameters
selection to display the Edit Block Parameters window.
Block Order
To provide you with maximum flexibility in implementing your control scheme, the ICC
enforces a particular block building order within a compound (refer to Figure 3-16). The order is:
1. Equipment Control Blocks (ECBs)
2. Pre-Sequence Continuous
3. Sequence Monitor/Timer
4. Sequence Exception
5. Sequence Dependent/Independent
6. Post-Sequence Continuous.
Before a block insert is permitted, the ICC compares the type of block being inserted to the resi-
dent block types. This ensures that the ordering rules are followed.
An inappropriate type request generates an error message that the operation is invalid.
You can build a control database so that a set of continuous blocks are processed either before or
after sequence blocks in the same block processing cycle. These are referred to as pre-sequence and
post-sequence blocks. The ICC provides a visual mechanism for differentiating the borders
between the sequence blocks and the two sets of continuous blocks.
ICC provides the following zones with unique background colors within the block list window at
the left of the display and indicates the end of each zone as shown in the figure and diagram
below. The zones are:
♦ Equipment control blocks (ECB)
Block Order 41
B0193AV – Rev N 3. Compounds, Blocks, and ECBs
ICC also provides the following sub-zones for sequence blocks with the same background color:
♦ Monitor/Timer blocks
♦ Exception blocks
♦ Dependent/Independent blocks.
ICC also provides move functions that enable the blocks to be moved within any zone and
between the two continuous zones.
42
3. Compounds, Blocks, and ECBs B0193AV – Rev N
All Users:
ECBs can be part of the built-in ECB compound (cplbug_ECB) or you can install them in other
compounds. The primary ECB must be in the ECB compound. You can only add ECBs to the
built-in ECB compound.
To create a new ECB:
1. From the block/ECB list for the compound, highlight the ECB that is to follow the
one you are creating. Highlight End ECB if the new ECB is to be last one in the zone
(see “ECB Functions Menu” on page 45).
2. Select Insert New Block/ECB from the ECB Functions menu. This displays the ECB
Name window for name definition.
3. For the ECB name, enter a valid (full caps, unique within the compound, up to
12-characters) name for the ECB to be created. Press Enter (or Return). If accepted,
the ECB Type window appears.
If the name is invalid, you are notified by an error message dialog box. You can then
select Continue and enter a new name.
4. Enter (in full caps) the valid ECB type name and press Enter. You can select Show
from the menu bar and from the Show pull-down menu select Legal FBM/ECB Com-
binations to list all of the ECB types in the right window of the display. Entering the
type displays the ECB Device Identification window.
5. Enter the letterbug of the Fieldbus device for the device identification into the Dev_id
field. The Dev_id values must be unique within the station. For ECBs 43, 44, and 45,
entering the device identification displays the Hardware Type window. For all other
ECBs, entering the device identification immediately displays a list of all parameters
for that ECB.
NOTE
To preserve backward compatibility and support the ability to install ECBs in any
compound, the IOM_ID parameter in the I/O control blocks can contain either the
letterbug value or the full pathname of the ECB block. (UNIX platform users only:
fieldbus device letterbugs do not need to be unique across different control proces-
sors.)
44
3. Compounds, Blocks, and ECBs B0193AV – Rev N
46
3. Compounds, Blocks, and ECBs B0193AV – Rev N
Software Type
Expander Type
Hardware Type
Copy ECB
To copy an ECB from an existing ECB:
1. From the block/ECB list for the compound, highlight the ECB that is to follow the
one you are creating. Highlight End ECB if the new ECB is to be last one in the zone
(see “ECB Functions Menu” on page 45).
2. Select Insert New Block/ECB from the Block/ECB Functions menu. This displays a
window for ECB Definition (see “ECB Name Window” on page 46).
3. For the ECB Name, enter a valid name (full caps, unique within the compound, up to
12 characters) for the new ECB. Press Enter (or Return). If the name is accepted, the
ECB Type window appears.
If the name is invalid, you are notified by an error message dialog box. You can then
select Continue and enter a new name.
48
3. Compounds, Blocks, and ECBs B0193AV – Rev N
4. For the ECB Type, enter the name of the ECB to be copied.
a. If the ECB is remote to the current compound, type (in full caps) the name of the
ECB using the COMPOUND:ECB_NAME convention and press Enter, or
b. If the ECB is in the current compound, type in the name of the ECB using the
:ECB_NAME convention and press Enter.
Entering the ECB Type displays the ECB Device Identification window.
5. Enter a new Fieldbus device letterbug for the device identification in the Dev_id field.
The Dev_id values must be unique within the station. Entering the device identifica-
tion displays a list of all parameters, all of which are copied from the specified ECB.
6. If changes are desired, you can enter them. These include the Fieldbus device hard-
ware type value, software type, and FBM expander type.
If any of the above parameter values is unknown or invalid, you are notified with an
error message dialog box. Select Continue and enter a new value, or cancel the insert
operation. If the parameter values are valid, the ECB is inserted. The new ECB con-
tains the same parameter settings as the ECB that was copied.
7. Select Done. (Select Cancel before Done or Enter to abort an insert operation.)
8. The new ECB appears immediately above the selected ECB in the block/ECB list
under the compound name. You can then edit the ECB parameters if you wish, using
the Edit Standard Block/ECB Parameters or Edit All Block/ECB Parameters func-
tion.
ICC also allows local and peer-to-peer Boolean input connections to source data of any data type.
When configuring Boolean inputs, you can also configure additional extension information at the
end of the full pathname of the source parameter to specify additional functions.
ICC also allows block parameter (not string type) connections to shared variables that are not in a
control processor. The shared variable name consists of up to 12 uppercase characters that contain
no colons or periods.
All Users:
If the input parameter is a 16-bit packed Boolean variable, you can configure a connection exten-
sion to extract a specific set of bits from the source parameter without changing other bits in the
input.
To enter a hexadecimal number for a packed Boolean parameter value ranging from 0 to FFFF,
precede the number with 0X. For example, enter 0XFFFF to set all the bits in the value to one.
Enter 0X8000 to set only the high order bit. The same rule applies to a packed long parameter
value ranging from 0 to FFFFFFFF.
When entering data in the range 32768 through 65535 into a block parameter whose type is an
unsigned integer, you must enter the value as a hexadecimal number. For example, to set
ECB34.HORVAL to 50000, you must enter 0XC350.
50
3. Compounds, Blocks, and ECBs B0193AV – Rev N
Rename Block/ECB
This function is available from the Block/ECB Functions menu and is only selectable when the
current buffer is the Paste Buffer. It provides a dialog box which requests a new name for the cur-
rently selected block or ECB. The name must be unique in the current compound.
52
3. Compounds, Blocks, and ECBs B0193AV – Rev N
Rename Block/ECB 53
B0193AV – Rev N 3. Compounds, Blocks, and ECBs
54
4. Menu Bar Functions
This chapter contains information on menu bar functions including the Show menu, the FBM
menu, the Fix All function, the Ladder Assignment function, the Print menu, the New menu
pick, the Checkpoint menu pick, the Maint menu, Initialize, Format Floppy, Eject Floppy,
LoadAll, SaveAll, SaveAll w/Fmt, Shrink, LoadAll/SaveAll for batch processing, the Buffer
menu pick, Cancel/Done, and the Exit menu pick.
Show Menu
This function enables you to request a variety of lists. Selecting Show provides a menu of the fol-
lowing items:
♦ Available CPs (control stations)
♦ Available FBMs (Fieldbus devices in cplbug_ECB compound only)
♦ Block Type Names
♦ Diskette Directory
♦ Available WPs (Workstation Processors)
♦ Available Printers
♦ Available Historians
♦ CP Processing Periods
♦ Integrator and Gateway Processing Periods
♦ Boolean Descriptors (for packed Boolean parameters).
55
B0193AV – Rev N 4. Menu Bar Functions
Diskette Directory
When Diskette Directory is selected from the Show menu, the database on a SaveAll diskette is
displayed.
FBM Menu
UNIX Platform Users Only:
This function is only selectable when the ICC target is a station. Selecting FBM provides the fol-
lowing choices:
♦ Fix All
♦ Ladder Assignment
♦ Cancel (to close the FBM menu).
56
4. Menu Bar Functions B0193AV – Rev N
Print Menu
The Print menu allows you to print a hard copy of portions of the selected station database. You
can select from the Print menu:
♦ Parameters of all blocks in a compound
♦ Parameters of one compound or block
♦ Parameters of all compounds and blocks
♦ Names of all compounds
♦ Names of all blocks in a compound.
If one compound, block, or ECB is selected, you are prompted to fill-in a compound, block, or
ECB name. An unknown name causes an error notification and a return to the fill-in field. You
may try again with a new name, or Cancel.
Once you have made the item selection, you are asked to select a printer from a list of printers in
the system. When you select the printer, the print request is sent to the printer queue and control
returns to the ICC.
Print Menu 57
B0193AV – Rev N 4. Menu Bar Functions
Maint Menu
This selection provides a menu with the following functions:
♦ LoadAll
♦ SaveAll
♦ SaveAll w/Fmt
♦ Shrink
♦ Initialize
♦ Upload
♦ Format Floppy
♦ Eject Floppy.
Initialize
removes all compounds, ECBs, and blocks, including sequence and (UNIX platform
Initialize
users only) PLB source files, from the configuration file for the current station or volume. The sta-
tion must be rebooted after Initialize is performed.
Format Floppy
Format Floppy formats a double-sided, high density diskette in the designated diskette drive.
Eject Floppy
UNIX Platform Users Only:
Eject Floppy, which applies only to a 50 Series host drive, automatically ejects the diskette from
the designated drive. If you use it with an AP20-hosted drive or an AW70, nothing happens.
58
4. Menu Bar Functions B0193AV – Rev N
LoadAll
LoadAll allows you to load the entire contents of a diskette to the currently selected buffer: paste,
volume, or station.
All Users:
For compounds other than the ECB compound, failure of any block or ECB to load causes failure
of the entire compound.
When performing a LoadAll operation, any block which causes either an error (failure) or warn-
ing message records the associated message in a log file. When an error (failure) is detected, the
operation stops and a dialog box is displayed. Select Continue to restart the operation. For warn-
ing messages, the operation continues, but at the end of the operation a summary box informs
you of the errors and warnings and identifies the file which contains the associated error messages.
When you do batch processing (recipes) with sequence type blocks (IND, DEP, TIM, EXC,
MON), Foxboro recommends that you use the LoadAll/SaveAll ICCAPI shell scripts to perform
LoadAlls/SaveAlls to/from a hard drive. Refer to the Integrated Control Configurator Application
Programming Interface (B0193NE) document, the paragraph titled, “Load_All/Save_All
Recommendations.”
! CAUTION
The compounds, blocks, and ECBs maintain the same parameter settings as when
they were saved to diskette. The compounds can be copied into the paste buffer and
the parameters modified prior to installing the compounds into an active station.
SaveAll
SaveAll allows you to save all of the compounds in a control station, volume, or paste buffer to a
diskette or, if necessary, multiple diskettes. If the information being saved requires multiple dis-
kettes, the following dialog box appears:
The system indicates the first compound that will be saved to the new diskette.
LoadAll 59
B0193AV – Rev N 4. Menu Bar Functions
! WARNING
Removing a diskette from the diskette drive during a SaveAll operation may destroy
the information on the diskette. Wait until the menu reappears before removing the
diskette.
Disk drive device errors occur during Maint operations in the ICC if the disk drive is currently
selected in file manager. The device must be deselected in file manager to allow access to the drive.
SaveAll w/Fmt
SaveAll w/Fmt formats a double-sided, high density diskette in the designated diskette drive, and
then performs a SaveAll.
Shrink
Shrink compresses the current ICC database to save disk space. Upon completion, it automati-
cally selects the New function.
NOTE
Shrink only affects files on the disk. It does not affect the control processor.
60
4. Menu Bar Functions B0193AV – Rev N
Cancel/Done
Cancel always discards an action or menu and returns the previous display. Done always saves the
action and either returns to the previous display or proceeds to the next display.
62
5. Block Parameter Connections
This chapter contains information on block parameter connections including mixed data types,
Boolean connection extensions, and defaults for integer and real connections.
To access a block parameter value from outside the resident compound, you must use the entire
path:
Cname:Bname.Pname
where:
Cname = compound name
Bname = block name
Pname = parameter name.
Connectivity between blocks in different compounds is through this same convention, whether
the compounds are in the same or different stations.
To connect to either a block parameter value from another block within the same compound, or
to a parameter value from within the same block, you can use:
:Bname.Pname
Topics relating to block parameter connections described in the following sections are:
♦ Mixed Data Types
♦ Boolean Connection Extensions
♦ General Format of Boolean Connection Extensions
♦ Boolean Extensions to Source Data
♦ Boolean Extensions to Source Status
♦ Boolean Extensions to Status Parameters
♦ Packed Boolean Connection Extensions
♦ Defaults for Integer and Real Connections.
63
B0193AV – Rev N 5. Block Parameter Connections
64
5. Block Parameter Connections B0193AV – Rev N
Peer-to-peer connections do not support a mixture of real and integer data types, or a mixed con-
nection to a Boolean source.
♦ Perform a logical OR of a combination of value status bits associated with the source
data, using a combination of mnemonic symbols
♦ Perform logic functions (AND, XOR) on the source data against a user-specified
Boolean bit mask
♦ Invert the extracted result.
In conjunction with any of these options, you can specify a default (fallback) value for the Bool-
ean input. When the block is installed, the sink value is initialized to the default value (0 or 1)
specified in the connection extension.
NOTE
If the Boolean input is connected to itself, this feature allows you to create a Bool-
ean constant of 0 or 1 that cannot be changed without reconfiguring the
connection.
If the connection is broken or the source value is BAD or out-of-service (OOS), and a default
value is specified in the connection extension, the sink value is set to the default value.
NOTE
This feature allows you to preconfigure deterministic fallback states for any Boolean
input that is connected peer-to-peer to a source parameter in a different station.
If the extension information is invalid, the connection is marked Unresolved, the block is marked
Undefined, and the Object Manager (OM) scan status of the input is set to 0.
66
5. Block Parameter Connections B0193AV – Rev N
NOTE
B, A, or X can be used only if source is integer, long, packed boolean, or packed long
(other types invalid).
H can be used only with A or X functions if source is long or packed long (other
types invalid).
Extension* Meaning
1 Set default result = 1.
If connection broken, set result = 1.
Else, set result = source.
~ If source = 0, set result = 1.
Else, set result = 0.
1.~ Set default result = 1.
If connection broken, set result = 1.
Else, if source = 0, set result = 1.
Else, set result = 0.
Extension* Meaning
B12 Set result = boolean 12 of source.
0.B12 Set default result = 0.
If connection broken, set result = 0.
Else, set result = bit 12 of source.
~B12 Set default result = 0.
If connection broken, set result = 0.
Else, set result = inverse of source boolean 12.
A30A0 Bitwise AND the low-order 16-bits of source with hex 30A0.
If result not = 0, set result = 1.
Else, set result = 0.
~A30A0 Invert result of previous example.
X30A0 Bitwise XOR the low-order 16-bits of source with hex 30A0.
If result not = 0, set result = 1.
Else, set result = 0.
~XH30A0 Bitwise XOR the high-order 16-bits of source with hex 30A0.
If result not = 0, set result = 1.
Else, set result = 0.
Invert the result.
1.~XH30A0 Set default result = 1.
If connection broken, set result = 1.
Else, do logic in previous example.
NOTE
Pname cannot be BLKSTA, ALMSTA, or INHSTA in this format. For a description
of connections to these parameters, see “Boolean Extensions to Status Parameters”
on page 69.
68
5. Block Parameter Connections B0193AV – Rev N
Extension* Meaning
.B Result = BAD status bit of source.
.~B Invert result of previous example.
.BOD Result = logical OR of BAD, OOS, and OM Off-Scan status bits of source.
.~BOD Invert result of previous example.
Pname.Extension Meaning
BLKSTA.BAD Result = BAD boolean of source BLKSTA.
BLKSTA.~BAD Invert result of previous example.
ALMSTA.LDA Result = LDA boolean of source ALMSTA.
ALMSTA.~LDA Invert result of previous example.
INHSTA.HOA Result = HOA boolean of source INHSTA.
INHSTA.~HOA Invert result of previous example.
BLKSTA.B12 Result = boolean 12 of BLKSTA.
Pname.Extension Meaning
BLKSTA.AH30A0 Bitwise AND the high-order 16-bits of BLKSTA with hex 30A0.
If result not = 0, set result = 1.
Else, set result = 0.
70
5. Block Parameter Connections B0193AV – Rev N
RMP 1 = Ramp
SBX 1 = Executing SBX statements
SEL 1 = Redundant I/O Select
SIM 1 = PLB Simulation Mode
SPDN 1 = Set-point Ramp Down
SPUP 1 = Set-point Ramp Up
STN 1 = Self-Tune
STRK 1 = Set-point Track
TEST 1 = PLB Test Mode
TRIP 1 = Tripped
TRK 1 = Track
UDEF 1 = Undefined.
NOTE
The sink input data type must be packed Boolean. All other cases are invalid
(packed long extensions are not supported).
Example Meaning
Cname:Bname.Pname.xxxx 1 If Pname is Boolean data type:
. if Pname = 0, clear booleans xxxx in sink.
Else, set booleans xxxx in sink.
2 If Pname is integer, long integer, or short integer data type:
. copy booleans xxxx from Pname to sink.
booleans ~xxxx in sink are unchanged.
3 If Pname is real data type:
. convert Pname to unsigned integer and
copy booleans xxxx from converted Pname.
booleans ~xxxx in sink are unchanged.
72
5. Block Parameter Connections B0193AV – Rev N
74
6. Editing Ladder Logic
This chapter contains information on editing ladder logic including entering and exiting the
ladder logic editor, getting help, editing a ladder diagram, selecting library functions, printing
a ladder diagram, checking syntax, and ladder installation.
NOTE
This chapter does not apply to the AW70 platform.
Getting Help
You can use the ICC Help function on Foxdoc which describes the general features of the Inte-
grated Control Configurator.
75
B0193AV – Rev N 6. Editing Ladder Logic
You can also use the Symbols function (see “Showing Symbols” on page 83) to display a list of
function key assignments and select a symbol to insert in the ladder.
NOTE
1. Keys other than those listed for a given field are disabled.
2. Only an output symbol is accepted in the extreme right position.
76
6. Editing Ladder Logic B0193AV – Rev N
NOTE
1. Ladder line: A horizontal line of ladder logic providing only one path from the
input to an output coil or another ladder line.
2. Ladder rung: All ladder lines providing a path to a common output coil or to
fanned out output coils.
NOTE
When using function keys on the numeric keypad, be sure the Num Lock is not on.
78
6. Editing Ladder Logic B0193AV – Rev N
Display line One horizontal line of text or symbols (20 available display lines in the
ladder edit area)
Ladder line Six display lines, starting with the technical identifier line
Symbol position One of eight locations reserved for ladder symbols in the second display
line of a ladder row
HELP SYMBOLS COMPILE FILES PRINT NEW LINE NEW TI NEXT TI DONE CANCEL
LINE: 001 COMPOUND: name BLOCK: name TEST/RUN
Tech_ID
[Sym9]
User
Label
Rung Descriptor line 1
Rung Descriptor line 2 [Sym1]: Symbol position 1
Rung Descriptor line 3 Preset/Reset: counter/timer values
Creating/Modifying Functions
The following paragraphs describe the operations for editing ladder logic. The descriptions
include the addition and/or replacement of symbols, texts, values, rows, and rungs.
When making on-line edits keep in mind that:
♦ On-line edits to ladders do not cause the logic processor to re-initialize.
♦ On-line edits do not affect accumulated counts or latched coils.
♦ Because timer/counter status flags reflect the relation between the accumulator and
the preset registers, edits to preset values can alter status flags.
80
6. Editing Ladder Logic B0193AV – Rev N
The left arrow key moves the cursor to the right end of the preceding row.
If necessary, the display scrolls down one ladder row.
Moving to the Next Ladder Element Referencing the Tech ID of the Element
at the Current Cursor Position
The Next TI top menu bar button allows you to move the cursor to the next (forward) occurrence
of the currently referenced tech ID. The display scrolls, if necessary.
Click the Next TI button. This moves the cursor to the next forward ladder element referencing
the currently referenced Tech ID. The display scrolls, if necessary. If the end of the ladder is
reached, the search wraps around to the first ladder line. If the search finds no element with the
named Tech ID, the cursor does not move.
82
6. Editing Ladder Logic B0193AV – Rev N
identifier (for example, OFL_1) can be entered in more than one ladder segment of a composite
ladder, but doing so does not create additional OFLs. There is only one OFL_1, with a single data
value, in the FBM. It can be entered as an output coil in multiple segments of the ladder, in which
case the final concatenated ladder has more than one rung ending with symbol OFL_1. When the
OFL_1 value is transmitted to the control processor, its value depends on the evaluation of the
highest numbered rung ending in OFL_1, that is, the last calculation of OFL_1 during the ladder
scan. All PLBs connected to that FBM receive this value of OFL_1 as an input parameter. This
implies that if the usage of technical identifiers is overlapped, a PLB block could receive values of
parameters from the FBM different from the ones expected on the basis of their own ladder seg-
ments. The same considerations apply to overlapped usage of COs, TCs, and IFLs.
The order of concatenation of multiple ladder segments is the same as the order of listing of the
PLBs in the Ladder Assignment pick of the FBM menu.
If any IFL is referenced in multiple segments of a composite ladder, the value sent down to the
FBM for use in solving the ladder is the value of that IFL parameter in the PLB which is processed
last. This depends on the zones, and positions within the zones, of the various PLBs involved, as
shown on the Block/ECB Functions display of the ICC.
Showing Symbols
The Show Symbols function displays the instruction set and function key assignments.
1. Select the Symbols function from the menu bar.
The list of symbols, symbol names, and function key assignments overlays a strip of
the ladder extending from the Symbols heading down to the bottom of the work area.
2. After viewing the Symbols display, select the stop sign at the end of the symbol list.
The editor withdraws the symbols overlay.
While viewing the Symbols display, you can insert a symbol, if the editing cursor is in a symbol
position, by either of the following methods:
♦ Press a function key. The editor inserts the symbol and withdraws the symbols overlay.
♦ Select a symbol from the displayed list and click the pointing device button.
The editor inserts the symbol and removes the symbols overlay.
NOTE
Never attach UP branches to the first line in a rung.
4. Press the F6 key for the up vertical connector or select Connect Up from the
Symbols display.
To insert a connection from the lower of two rows UPward, do the above steps in the order 3, 4,
1, and 2.
Deleting a Symbol
Be sure that you want to delete the element at the cursor position before you press the Delete key,
because the effect is immediate. As soon as you press the key with a symbol selected, the symbol,
its technical identifier, and its label are deleted. If the cursor is in a rung descriptor when you press
Delete, all of the descriptor text is deleted immediately.
1. Use the arrow keys to position the cursor at a symbol.
2. See the appropriate subheading for the item to be deleted:
a. Coil or contact symbol: press the Delete key, the delete function key (F7), or select
Delete from the Symbols display to blank out the symbol, its Technical Identifier
and user-defined label, and any up or down connector immediately to the left of
it. If a coil represents a counter or timer, the preset and reset values in the column
at the right are also deleted.
b. Up or down vertical connector: With the cursor positioned at a symbol directly
following an up or down vertical connector, press the Shift and Delete keys to
blank out only the connector. See previous procedure for deleting a symbol if you
want to delete both the symbol and connector.
Blanks replacing a symbol open the rung connection, interrupting the power flow path.
84
6. Editing Ladder Logic B0193AV – Rev N
NOTE
If no Technical Identifier has been entered (the field is blank), pressing Enter or
Return repeatedly cycles the cursor back and forth between the symbol position and
the Technical Identifier field.
3. If a valid Technical Identifier exists (see Note under Step 2), press the Enter or Return
key to move the cursor to the first character position in the first line of the user-
defined label field, immediately below the symbol.
4. Press the Enter or Return key to move the cursor to the first character of the user-
defined label second line.
5. Press the Enter or Return key to move the cursor to the symbol position directly above
the user-defined label.
NOTE
Pressing the Return key while pointing to a text field without entering data does not
affect the original contents of the field. If you make a mistake while typing a text
field, use the Backspace key to delete incorrect characters.
NOTE
If the technical identifier you enter has been used elsewhere in the ladder, the editor
fills in the user-defined label fields with the label used previously and moves the cur-
sor to the first position of the first line. If you change the label, the new text appears
beneath all other symbols having the same Technical Identifier when they are redis-
played.
If the Technical Identifier has not been entered, you must enter it before you are
allowed to move to the label field (see “Entering a Technical Identifier” on page 85).
2. Type the first line of the label.
3. To move to the second line, type the seventh character of the first line or press Enter
or Return.
4. To return to the symbol position, type the seventh character of the second line or press
Enter or Return.
86
6. Editing Ladder Logic B0193AV – Rev N
♦At the end of each rung descriptor line, text wraps around to the beginning of the
next line. At the end of the third line, text wraps to the beginning of the first line.
Once wraparound occurs, you cannot get back to the end of the previous line
without retyping all of it.
5. Each ladder can have a maximum of twenty rung descriptors.
View Library
The View Library function lists all of the previously saved ladder source files. To list files:
1. Select View Library from the menu. The first page of the library appears.
2. If the library is more than one display long, use the paging icons to view the entire
library.
3. To exit the View Library function, select Done. The library window disappears.
Save In Library
The Save In Library function copies the current ladder source file into the library. The copy takes
place whether or not the ladder contains syntax errors.
The Save In Library function is the only way to save a source file that is not ready for compilation
when you want to exit the ladder logic editor. The two menu bar options that allow you to exit
the editor are Done and Cancel. The Done menu bar option is pickable only if all symbols have
valid technical identifiers and all ladder rows provide a complete path to the rung output. Cancel
can be selected at any time, but it does not save the source file. Therefore, to save an incomplete
ladder, you must save it in the library before selecting Cancel.
You can also save a ladder for use in more than one FBM. Once saved in the library, the ladder can
be copied into other source files where similar logic is needed.
To save the current ladder source file in the library source:
1. Select Save In Library from the menu. A dialog box appears on the display. The save
function displays the contents of the library.
2. Type the name in the Choice field with the alphanumeric keyboard. If you type the
name incorrectly, use the Delete key to delete characters and type the name again.
Press the Enter or Return key to register your choice.
88
6. Editing Ladder Logic B0193AV – Rev N
It is not necessary for the name to be the same as that of the current PLB. A name can
have up to 12 alphanumeric characters and must start with a letter. Scan the library to
make sure you do not select a name that already exists.
To leave the Save In Library function without saving the file, select Cancel from the
dialog box. The save function is canceled and the menu disappears. The top menu bar
functions become pickable again.
Cancel
To exit the Library functions menu, select Cancel. The menu display is removed and the top
menu bar functions again become pickable.
Checking Syntax
1. To check your ladder for syntax errors, select Compile from the menu bar or press the
Control and X keys. The keyboard is rendered inactive and the following message is
displayed:
Compiling ladder diagram XXXX. Please wait
XXXX is the ladder diagram source file’s related PLB name.
a. If the compilation was successful, the following message appears at the bottom of
the display:
Compile concluded – ladder is O.K.
b. If errors resulted from the compilation, the following message appears at the bot-
tom of the display:
Compilation complete. Error detected
The symbol associated with the error is highlighted and the error condition is dis-
played at the bottom of the display in ASCII text. If other errors exist, they remain
undetected until you correct the preceding error and perform another syntax
check.
You should correct error conditions immediately. If uncorrected, errors prohibit
downloading the interpretive code to the FBM when you select Done from the
menu bar.
2. When the compilation is complete, the ladder diagram reappears on the display and
the keyboard functions are reactivated. No interpretive code is generated, since Com-
pile is used only to check syntax. Interpretive code is generated when the ladder is
installed in the Fieldbus Module.
Ladder Installation
Ladder installation is the routine that:
♦ Merges the ladder source code (generated in the Ladder Logic editor) with the source
code of the other ladders residing in the assigned FBM.
♦ Converts the resultant composite source code (merged ladder) to interpretative code.
♦ Sends the interpretative code to the selected PLB-type FBM.
♦ Installs ladder displays to make them accessible to workstations on the network.
Note that installation (or uninstallation) always occurs as a result of an indirect user action. There
is no “install ladder” or “uninstall ladder” menu selection anywhere in ICC.
Installation Requirements
Ladder installation takes place automatically as soon as you complete the following two require-
ments:
1. The ladder source code that you generated in the ladder logic editor has been passed
through the editor’s Compile function, and exited via the Done option (rather than
the Cancel option).
2. The associated PLB block has been assigned to an on-line FBM with an ECB8 (mak-
ing it a PLB-type FBM).
The requirement that occurs last automatically triggers ladder installation:
♦ That is, if the PLB assignment (requirement 2) was completed first, the installation
automatically occurs the moment you select the Done key on the ladder logic editor
menu bar (completing requirement 1).
♦ Conversely, if the source code has previously been Compiled and Done (requirement
1), the installation automatically occurs the moment the assignment of the PLB to a
PLB-type FBM (requirement 2) is completed. ICC actions that can complete require-
ment 2 (thus triggering the installation if requirement 1 has been met) include:
a. Changing a null IOM_ID to a valid IOM_ID.
b. Changing one valid IOM_ID to another valid IOM_ID.
c. Pasting a compound containing one or more PLB blocks.
d. Performing a Maint LoadAll of a compound containing one or more PLB blocks.
Uninstallation
Ladders can be automatically “uninstalled,” or removed from the FBM. Some operations that can
trigger “uninstallation” are:
♦ Changing a valid IOM_ID to a null IOM_ID
♦ Deleting a PLB block
♦ Deleting a compound containing one or more PLB blocks.
90
6. Editing Ladder Logic B0193AV – Rev N
Ladder Installation 91
B0193AV – Rev N 6. Editing Ladder Logic
♦ Selecting Done from the top menu bar in the Ladder Logic Editor.
After Done is selected, ICC builds and installs the ladder displays.
The 50 Series ICC can install the ladder displays in 50 Series as well as 20 Series format, depend-
ing on the system configuration.
The 20 Series ICC only installs the ladder displays in 20 Series format on the CP’s host (AP20),
even if no WP20s or WP30s are configured for the I/A Series system.
These locations are configurable through ASCII file /usr/plc/plb_dir. Modification of this file
allows you to have the ladder display location in different directories or disk partitions.
ICC reads the plb_dir file to identify where to install the ladder displays. The Display Manager
also reads this file to identify the base directory of the ladder displays for that particular host.
The plb_dir file contains the following keywords:
92
6. Editing Ladder Logic B0193AV – Rev N
Ladder Installation 93
B0193AV – Rev N 6. Editing Ladder Logic
94
7. Editing Sequence Logic
This chapter contains information on editing sequence logic including the use of the ICC help
on FoxDoc, sequence files, sequence logic functions, and sequence code installation.
Sequence logic is composed of Sequence language statements and user-labeled parameters (refer to
Chapter 8 “Sequence Language”). To add sequence logic to a sequential control block:
1. Install a sequential control block in a compound or select a previously installed
sequential control block. After the block is selected or installed, the Block/ECB Func-
tions menu appears. Refer to Figure 7-1.
2. Select Edit Sequence Logic from the Block/ECB Functions menu. Edit Sequence
Logic cannot be selected unless the current block type is IND, DEP, EXC, or MON.
After you have selected Edit Sequence Logic, the Sequence Logic Functions menu
appears. See Figure 7-2.
95
B0193AV – Rev N 7. Editing Sequence Logic
When the Sequence Logic Functions menu is on the display, you cannot select any menu bar
functions except Help.
The current block name and block type are displayed above the menu.
The functions of the Sequence Logic Functions menu only operate on the current block. When
creating sequence logic, you are working in a source file. You must compile this file before you can
update the current block with the sequence logic.
Source and compiler files are described in “Sequence Files” on page 96. Sequence logic functions
are described in “Sequence Logic Functions” on page 97.
Help
Before or after selecting a function from the Sequence Logic Functions menu, you can use the
ICC Help on FOXDOC which describes the general features of the Integrated Control Configura-
tor (ICC).
Sequence Files
A sequential control block has the following files associated with it:
♦ A source file
♦ Compiler files.
96
7. Editing Sequence Logic B0193AV – Rev N
Source File
The source file is supplied automatically by the Integrated Control Configurator. As you create
sequence logic, it is stored in the source file. The following functions of the Sequence Logic
Functions menu operate on the source file:
♦ Cancel
♦ Compile Source of this Block
♦ Copy Source of this Block From Library
♦ Done With Sequence
♦ Edit Source of this Block
♦ Print Listing of this Block
♦ Save Source of this Block to Library.
For a description of each function, refer to “Sequence Logic Functions” on page 97. The source
file has the same name as the current block followed by an .s extension (blockname.s). Source file
names appear in the library functions:
♦ Copy Source of this Block from Library
♦ View Source Library Contents
♦ Save Source of this Block to Library
♦ Delete Block Source from Library.
The library is a directory where you can save source files for future use. For more information on
the source file, refer to “Edit Source of this Block” on page 103.
Compiler Files
The compiler produces the executable files needed at run time. The source file must be compiled
before you can update the sequence block with the sequence logic. When compilation is success-
ful, the compiler produces the following files:
♦ An interpretive code module
♦ An operator representation module
♦ A formatted sequence program listing.
When the compiler detects errors in the source file, it only produces the formatted sequence pro-
gram listing. The interpretive code module and operator representation module are run-time files.
The formatted sequence program listing is a formatted copy of the source file that can be used for
archiving or debugging.
When the compiler detects errors, it places error messages in the formatted sequence program list-
ing. You can use the following functions in the Sequence Logic Functions menu to look at the
compiler error messages:
♦ View Compilation Listing
♦ Print Compilation Listing.
For more information on the compiler and compiler files, refer to “Compile Source of this Block”
on page 98.
Cancel
The Cancel function exits the Sequence Logic Functions menu without updating the current
sequence block with sequence logic. The source file and compiler files (if the source file has been
compiled) are not saved.
To exit the Sequence Logic Functions menu without updating the current block; select Cancel
from the menu. The Block/ECB Functions menu appears on the display. Refer to Figure 7-1.
NOTE
1. The current block is updated with sequence logic only when the source file com-
piles without errors and you select Done With Sequence to exit the Sequence Logic
Functions menu. See “Compile Source of this Block” on page 98 and “Done With
Sequence” on page 103.
2. To exit the Sequence Logic Functions menu and save an uncompiled source file,
select Save Source of this Block to Library prior to selecting Cancel. This saves the
source file for future edits but does not update the current block. Refer to “Save
Source of this Block to Library” on page 108.
98
7. Editing Sequence Logic B0193AV – Rev N
CONTINUE
CHOICE
indblock.s
depblock.s
excblock.s
monblock.s
COPY CANCEL
To enter a name with the pointing device, select the file name from the list of source
files currently in the library. If the library is more than one display long, use the pag-
ing icons to view the entire library.
To move one display at a time to the end of the library, select the next display icon (a
pair of down arrows).
To move one display at time to the beginning of the library, select the previous display
icon (a pair of up arrows).
To go directly to the first display of the library, select the first display icon (a pair of up
arrows under a bar).
To go directly to the last display of the library, select the last display icon (a pair of
down arrows over a bar).
3. Select Copy from the dialog box. The source file selected in the previous step is copied
into the current block’s source file. An hour glass is displayed until the copy is com-
plete. Then, the Sequence Logic Functions menu appears.
4. To leave the Copy Source of this Block from Library function without copying a file,
select Cancel from the dialog box. The copy function is canceled and the Sequence
Logic Functions menu appears.
5. If the selected source file is not found in the library, the following message appears:
100
7. Editing Sequence Logic B0193AV – Rev N
Cannot Copy:
- Source Selected to copy from
library does not exist.
CONTINUE
The copy function is canceled. When you select Continue, the Sequence Logic Func-
tions menu appears.
! CAUTION
Do not delete any of the following skeleton files from the library: depblock.s,
excblock.s, indblock.s, and monblock.s.
CHOICE
indblock.s
depblock.s
excblock.s
monblock.s
DELETE CANCEL
To enter a name with the pointing device, select the file name from the list of source
files currently in the library. If the library is more than one display long, use the pag-
ing icons to view the entire library.
To move one display at a time to the end of the library, select the next display icon (a
pair of down arrows).
To move one display at time to the beginning of the library, select the previous display
icon (a pair of up arrows).
To go directly to the first display of the library, select the first display icon (a pair of up
arrows under a bar).
To go directly to the last display of the library, select the last display icon (a pair of
down arrows over a bar).
3. Select Delete from the dialog box. The source file selected in the previous step is
deleted from the library. Then, the Sequence Logic Functions menu appears.
4. To leave the Delete Block Source from Library function without deleting a file, select
Cancel from the dialog box. The delete function is cancelled and the Sequence Logic
Functions menu appears.
5. If the selected source file is not found in the library, the following message appears:
102
7. Editing Sequence Logic B0193AV – Rev N
Cannot Delete:
- Source Selected to delete from
library does not exist.
CONTINUE
The Delete function is cancelled. When you select Continue, the Sequence Logic
Functions menu appears.
NOTE
To exit the Sequence Logic Functions menu when the source file is not compiled,
use Cancel. This does not save the source file. If you want to save the source file,
select Save Source of this Block to Library before selecting Cancel.
INDEPENDENT_SEQUENCE{*******************************
** INDEPENDENT SEQUENCE **
** CONTROL BLOCK **
*****************************************}
CONSTANTS {*****************************************
* specify any Constants *
* in the following format: *
******************************************
* constant_name = value ; *
*****************************************}
VARIABLES {*****************************************
* specify any Block Local Variables *
* in the following format: *
******************************************
* variable_name [ , variable_name ] : type;*
*where type is one of B, I, R, S, S12, S6*
*****************************************}
USER_LABELS{****************************************
* specify any user labeled parameters *
* in one of the following formats: *
******************************************
* user_label_name : BI00nn; n = 01 -- 24 *
* user_label_name : BO00nn; n = 01 -- 16 *
* user_label_name : BA000n; n = 1 -- 4 *
* user_label_name : RI00nn; n = 01 -- 15 *
* user_label_name : RO00nn; n = 01 -- 15 *
* user_label_name : RA000n; n = 1 -- 2 *
* user_label_name : II000n; n = 1 -- 8 *
* user_label_name : IO000n; n = 1 -- 5 *
* user_label_name : IA0001; *
* user_label_name : SN00nn; n = 01 -- 10 *
*****************************************}
{*****************************************
* Specify any Subroutines *
******************************************
* SUBROUTINE name ( formal arguments ) *
* VARIABLES subr. local variables ; *
* STATEMENTS *
* ; *
* ENDSUBROUTINE *
*****************************************}
{*****************************************
* Specify any *
* Standard Block Exception Handlers *
******************************************
* BLOCK EXCEPTION exc_name [ DISABLE ] *
* STATEMENTS *
* ; *
* ENDEXCEPTION *
*****************************************}
STATEMENTS{*****************************************
* Specify the statements here *
*****************************************}
ENDSEQUENCE
104
7. Editing Sequence Logic B0193AV – Rev N
MONITOR {*****************************************
* MONITOR *
* CONTROL BLOCK *
*****************************************}
CONSTANTS {*****************************************
* specify any constants in the following *
* format: *
* *
* constant_name = value ; *
*****************************************}
USER_LABELS{****************************************
* specify user labeled parameters in *
* one of the following formats: *
* *
* user_label_name : BI00nn; n = 01 -- 24 *
* user_label_name : RI00nn; n = 01 -- 15 *
* user_label_name : II000n; n = 1 -- 8 *
*****************************************}
{***************************************************************
* specify all monitor case(s) in one of the following formats: *
****************************************************************
* nn ; *
* nn boolean_expression ; *
* nn boolean_expression --> user output ; *
* nn WHEN boolean_expression DO Sequence_Block_name ; *
* nn WHEN bool_expr --> user output DO Sequence_Block_name ; *
***************************************************************}
CASES
1 ;
2 ;
3 ;
4 ;
5 ;
6 ;
7 ;
8 ;
9 ;
10 ;
11 ;
12 ;
13 ;
14 ;
15 ;
16 ;
ENDMONITOR
A copy of each template is stored in the library. If, while editing sequence logic, you choose to
start over again with a clean template, you can copy the template into the source file, overwriting
any previous sequence logic (refer to “Copy Source of this Block from Library” on page 99).
The templates are stored in the library under the following file names:
♦ (Independent block template)
indblock.s
♦ depblock.s (Dependent block template)
♦ excblock.s (Exception block template)
♦ monblock.s (Monitor block template).
NOTE
The source file has the same name as the current block followed by an .s extension
(blockname.s). The source file name appears in functions that display the library
such as Copy Source of this Block from Library, View Source Library Contents, and
Save Source of this Block to Library.
NOTE
Do not enter Control+Z while in the sequence editor.
106
7. Editing Sequence Logic B0193AV – Rev N
5. Within the ICC display, select Continue in the blue dialog box; at this point, the
Sequence Logic Functions menu appears.
6. After you finish editing the sequence logic, you can compile the source file (refer to
the “Compile Source of this Block” on page 98).
All Users:
NOTE
You must use uppercase characters for all compound, block, and parameter names
in sequence logic. Since sequence commands (Activate, Start_timer, and so forth)
must also be in uppercase characters, you may find it easiest to use uppercase
throughout. Always leave a blank line after the Statements line, otherwise the All
Code page on the block detail display does not show the first statement.
PRINTERS AVAILABLE
CANCEL
2. Select the printer that is to produce the listing, or Cancel the printout. The ICC
returns to the Sequence Logic Functions menu.
1. Select the Print Listing of this Block function from the menu. The Printer Selection
menu appears.
PRINTERS AVAILABLE
CANCEL
108
7. Editing Sequence Logic B0193AV – Rev N
CHOICE
indblock.s
depblock.s
excblock.s
monblock.s
SAVE CANCEL
2. Type the file name with the alphanumeric keyboard and press the Return key. If the
name is entered incorrectly, use the Backspace key to delete characters and enter the
name again.
The name does not need to be the same as the current block name. A name can be up
to 12 alphanumeric characters long. The .s extension that identifies a source file is
optional for libraried files.
Scan the library to make sure you do not select a name that already exists. If you do,
the new file that you are saving overwrites the old file currently in the library.
When the library is more than one display long, use the paging icons to view the
entire library.
To move one display at a time to the end of the library, select the next display icon (a
pair of down arrows).
To move one display at a time to the beginning of the library, select the previous dis-
play icon (a pair of up arrows).
To go directly to the first display of the library, select the first display icon (a pair of up
arrows under a bar).
To go directly to the last display of the library, select the last display icon (a pair of
down arrows over a bar).
3. Select Save from the dialog box. The current source is saved in the library. An hour
glass is displayed until save is complete. When complete, the Sequence Logic Func-
tions menu appears.
4. To exit without saving the source file in the library, select Cancel from the dialog box.
The Sequence Logic Functions menu appears.
110
7. Editing Sequence Logic B0193AV – Rev N
2. Use the Notepad to display the listing file on the display. Error messages appear below
the statement where the error is located. There is also an error summary at the end of
the file. You can use the editing function to move through the file.
3. When finished viewing the file, exit the Notepad session. Within the ICC display,
select Continue in the blue dialog box to return to the Sequence Logic Functions
menu.
All Users:
1. Select View Include Library Contents from the menu. The first page of the library
appears. See Figure 7-6.
2. If the library is more than one display long, use the paging icons to view the entire
library.
To move one display at a time to the end of the library, select the next display icon (a
pair of down arrows).
To move one display at a time to the beginning of the library, select the previous dis-
play icon (a pair of up arrows).
To go directly to the first display of the library, select the first display icon (a pair of up
arrows under a bar).
depblock.s
excblock.s
indblock.s
monblock.s
INCTEST.seq
NOINV.seq
DONE
To go directly to the last display of the library, select the last display icon (a pair of
down arrows over a bar).
3. To cancel the View Include Library Contents function, select Done. The Sequence
Logic Functions menu appears.
112
7. Editing Sequence Logic B0193AV – Rev N
depblock.s
excblock.s
indblock.s
monblock.s
DONE
To go directly to the last display of the library, select the last display icon (a pair of
down arrows over a bar).
3. To cancel the View Source Library Contents function, select Done. The Sequence
Logic Functions menu appears.
114
8. Sequence Language
This chapter contains information on Sequence language including block algorithm structure,
sequence language data types, declaration of user labeled parameters, and sequence language
character set, vocabulary, and expressions. Also included in this chapter is information on data
type checking, reference connection checking, operational errors, the bad status attribute,
preprocessor directives, sequence compiler limits, and the sequence compiler limits table.
The Sequence language is a high level language similar to the Pascal programming language, but
designed to implement process control strategies. Sequence language is a synonym for High Level
Batch Language (HLBL).
The Sequence language is used to write Sequence (IND, DEP, and EXC) and Monitor (MON)
block algorithms. The three Sequence blocks support all HLBL statements. Timer (TIM) blocks
do not have Sequence language code.
Prior to writing a block algorithm with the Sequence language, the sequential control block must
be installed in the Integrated Control Configurator. To add sequence language statements and
user-labeled parameters to an installed block, you must select Edit Sequence Logic from the
Block Function menu in the Integrated Control Configurator (refer to Chapter 7 “Editing
Sequence Logic”).
Algorithm Structure
The block algorithm is composed of:
♦ The heading
♦ The subroutines section
♦ The standard block exceptions section
♦ A main statement section.
When you edit sequence logic, ICC provides you with the appropriate template for the current
block type. The template defines the beginning and end of the heading and statement sections.
You add parameter declarations, subroutines, Standard Block Exception Handlers (SBXs), and
statements to the template. Templates are described further in Chapter 7 “Editing Sequence
Logic”.
Heading
The heading section contains:
♦ Block type identification
♦ Definition of constants
♦ Definition of block local variables
♦ User-labeled parameter declarations.
The “Block Type Identification” is the identifier at the left margin of the first line of the template
(Dependent_sequence, Independent_sequence, or Exception_sequence). You determined this
115
B0193AV – Rev N 8. Sequence Language
identifier, before entering the Edit Sequence Logic Block function, when you selected the block
type.
Constants, variables, and user-labels can take any name normally used for standard block parame-
ters, for example, ACTIVE, PAUSED, BLKSTA, and so forth, except for the following five
names:
♦ OP_ERR
♦ STMNO
♦ SUBRNO
♦ SBXNO
♦ STEPNO.
The “Definition of Constants” section of the sequence block definition enables you to introduce
names for numerical values. A constant is an identifier which acts as a synonym for a value. The
definition of constants is the introduction of such synonyms.
Constants are known throughout the whole block: in the statements of all subroutines,
standard exception handlers and the block’s statement section.
Constants are an aid in compiling Sequence blocks.
Changing the value of a constant in an include file does not automatically affect a previously com-
piled Sequence block. To effect the value change, you must recompile the block.
The values of the block local variables can be scalars, or arrays, of data type boolean, real, integer,
or string. Strings can be 6, 12, or 80 characters. See Table 8-2 “Sequence Compiler Limits” on
page 143 for local variable related limits.
Variables provide local data storage for values, or intermediate results, which are only accessible
from the block in which they are declared. Block local variables are known throughout the whole
block: in the statements of all subroutines, standard exception handlers and the block’s statement
section.
The “User-Labeled Parameters” section of the sequence block definition enables you to attach a
specific name to a “usable parameter.” A “usable parameter” is a Sequence control block parameter
that is available to you. See Table 8-2 “Sequence Compiler Limits” on page 143 for the maximum
length of a user parameter label.
The assigning of a user label to a usable parameter is called a “parameter declaration.” User- labels
are optional, and the labeled parameters can be referenced by either the user-label or the parame-
ter name.
User labels cannot be used as labels of labeled statements or steps, to which you can jump by
means of a GOTO statement.
Subroutines
Subroutines are supported in Independent, Dependent, and Exception blocks. The Monitor and
Timer blocks do not have subroutines.
A Sequence subroutine is a sequence of user-programmed HLBL statements that can be called
from the Sequence block’s main code section, or from another subroutine. Recursive subroutines,
however, are not supported. Subroutines cannot call themselves, directly or indirectly. See
Table 8-2 “Sequence Compiler Limits” on page 143 for subroutine related limits.
Unlike control blocks, Sequence subroutines:
116
8. Sequence Language B0193AV – Rev N
routine but it is not made known outside the subroutine. Use the INOUT argument to return
values to the subroutine caller.
When a formal argument is used as the left value in an assignment, the resulting value is only
known to the caller if that argument is an INOUT argument.
When you define a formal argument, either IN or INOUT, to be an array type, its actual counter-
part in the CALL statement:
♦ Must be a reference to an array item (the formal argument is a destination array when
applying the array assignment rules)
♦ Cannot be an expression
♦ Can be an external reference (for IN arguments only).
Usable parameters and block local variables are known within the subroutine. They can also be
passed to the subroutine by means of arguments.
Subroutine arguments can take any name normally used for standard block parameters, for exam-
ple, ACTIVE, PAUSED, BLKSTA, and so forth, except for the following five names:
♦ OP_ERR
♦ STMNO
♦ SUBRNO
♦ SBXNO
♦ STEPNO.
Actual arguments are provided with the CALL statement. Refer to “Calling the Subroutine” on
page 119 for greater detail on actual arguments.
118
8. Sequence Language B0193AV – Rev N
Subroutine variables can take the same name as block variables. When they do, the subroutine
does not recognize the block variable.
Like the local Block variable, the local subroutine variable can be used in any expression or assign-
ment within the logic of the subroutine. You can transport the value outside the subroutine by
assigning it to a user parameter, a local variable, or an INOUT argument.
Subroutine Statements
All HLBL statements can be used in the subroutine body. Their syntax and semantics are the same
as if they were used within the block code. Control flow statements such as GOTO and EXIT-
LOOP are restricted to the environment of the subroutine, that is, “You cannot jump out of a
subroutine.”
Within a subroutine, you can reference user-input, user-output, and user-array parameters by
their standard names or by their user-labeled names.
A subroutine has a single exit point. Multiple return statements within a subroutine are not possi-
ble. The only way to leave the subroutine code is the ENDSUBROUTINE statement.
HLBL statements are numbered from one for each subroutine, for each SBX, and in the block’s
main code section. You can execute the subroutine statements one at a time when the block is in
the Subr-Trace mode.
Actual Arguments
When called, subroutines are supplied with a list of actual arguments which are substituted for the
corresponding formal arguments. The data types of the actual arguments should match the formal
ones.
The number of elements of an actual argument of type array (parameter or local variable) should
match the number of elements of the corresponding formal argument exactly. The corresponding
formal argument represents this actual argument during the entire execution of the subroutine.
When the CALL statement includes array references for formal arguments of the IN category, all
elements of the actual array are physically copied into the subroutine’s data space. If the reference
is for a formal argument of the INOUT category, only the address of the actual array is copied.
When a subroutine is defined as having a formal INOUT argument, the actual argument
included in the subroutine call must be an identifier referring to:
♦ A block user parameter (input, output, string, array)
♦ A local block variable
♦ In the case of nested subroutines, a formal argument
Subroutine Examples
120
8. Sequence Language B0193AV – Rev N
CF:= :’COMP_ID’:FLOW_BLK.RO01;
Valve_Out:= :’COMP_ID’:PID.OUT;
LAI:= :’COMP_ID’:INFLOW.LAI;
Dev_Shut:= :’COMP_ID’:PID.MEASHI OR :’COMP_ID’:PID.MEASLI;
ENDSUBROUTINE
The Main STATEMENTS Section includes the Subroutine Call statement/s
for the DATA_IN subroutine.
.......
COMP_ID:= “BLEND1”;
CALL DATA_IN ();
.......
.......
COMP_ID:= “BLEND2”;
CALL DATA_IN ();
.......
.......
ENDSEQUENCE
NOTE
The argument flow is, by default, an INOUT argument. The arguments Comp_Id
and Valve_No are here designated as IN and INOUT, respectively.
In the first call, the formal argument, Comp_Id, takes the literal string, RINSE_1. In the second
call, Comp_Id takes the literal assigned to the string variable, ProcName. If the actual argument,
ProcName, has the value RINSE_1 when the subroutine is called, the two CALL instructions per-
form identical operations.
String expressions such as PlantName,“RINSE_1” or PlantName, ProcName cannot be used
because the comma separating the entities is interpreted as a delimiter between actual arguments.
122
8. Sequence Language B0193AV – Rev N
Data Types
The Sequence language uses the following data types: real, long integer, integer, Boolean, string,
and enumerated data type. All data manipulated in the Sequence language must be of one of these
data types. The data type determines the type of values that an object can be as well as the opera-
tions that can be performed on the value.
Real data can assume values that are approximations of the real numbers. Real values have an
accuracy of seven digits and they are limited to the range -3.40282438...+3.40282438.
Integer data can have values that express whole numbers. Operations that can be performed are
addition, subtraction, multiplication, division, and testing on relational ordering of values. Inte-
ger values are limited to the range (-231)... (+231-1).
There is data conversion between real numbers and integers. Real values can be written to long,
short, or integer parameters. Conversely, integer values can be written to real parameters.
Boolean data can assume two values: TRUE and FALSE. These values can be manipulated by the
operators AND, OR, and NOT. They can be compared for equality with other Boolean values.
String data type variables and parameters can be used in string expressions and assignments. There
are, in addition to the standard 80 character string, the short (6-character) and medium (12-char-
acter) length string data type.
Predefined data is enumerated data associated with a standard parameter. The enumerated data
has a range of symbolic values. Enumerated data can be compared for equality. A standard param-
eter of the predefined data type is assigned symbolic values in the predefined range of integer val-
ues that correspond to the symbolic values in accordance with an ordinal numbering scheme (see
the ORD function in “Transfer Functions” on page 135).
Note that each predefined type is treated like a data type of its own; it is not considered a variation
of the integer data type.
The compound parameter SSTATE is the only enumerated data type supported in HLBL.
SSTATE has the following three values:
Symbolic Value Ordinal Value
INACTIVE 0
ACTIVE 1
EXCEPTION 2
In a Sequence language statement, you can use either the symbolic or the corresponding ordinal
value. For example, the expression of an IF statement, looking for the condition where the com-
pound SSTATE is active, can be either of the following:
IF (:COMPNAM.SSTATE = Active)
IF 1 = ORD(:COMPNAM.SSTATE);
For Release 4.0 or later, the sequence compiler and sequence processor recognize the packed Bool-
ean and packed long Boolean data types as valid for assignments and subroutine call arguments.
Packed Boolean data types are treated as long integer data types.
user parm =
user_arithm_parm_name |
user_string_parm_name |
user_array_parm_name .
user arithm parm name =
BI00nn (where nn = 01 -- 24) |
II000n (where n = 1 -- 8) |
RI00nn (where nn = 01 -- 15) |
BO00nn (where nn = 01 -- 16) |
IO000n (where n = 1 -- 5) |
RO00nn (where nn = 01 -- 15) .
124
8. Sequence Language B0193AV – Rev N
Character Set
The basic character set of the Sequence language consists of following letters, numbers, and spe-
cial symbols:
♦ Letters A through Z, a through z, and underscore
♦ Numbers 0 through 9
♦ Special Symbols + - * / = { } ( ) < > . , ; : “
Vocabulary
Sequence language statements are composed of the following lexical units:
Special Symbols Keywords
References Literals
Labels Comments
Operator Remarks
You should avoid the use of the following specific lexical units:
CONSTANTS DISABLE ENDSUBROUTINE EXCEPTION
IN INOUT SUBROUTINE to_inactive
to_manual to_paused to_sys_err to_usr_err
VARIABLES BAD ON E
B I R S
S80 S12 S6
Special Symbols
Special symbols serve as operators and delimiters in Sequence language statements (refer to
Table 8-1 below). Some operators and delimiters are created by combining several special sym-
bols.
Table 8-1. Special Symbols
Symbol Description
{ ... } Encloses comments. Comments are used to document the algorithm.
(* ... *) Encloses operator remarks. Remarks describe the actions performed by
statement execution. Remarks can be seen on the default displays.
“...” Encloses a string data type.
Symbol Description
--> Means “to.” Assign the results of a Boolean expression to a Boolean output
parameter in a Monitor (MON) block MONITOR CASES statement.
:= Assigns values to parameters.
; Ends a Sequence language statement.
: Begins an external reference to a block, compound or block parameter, or
shared variable. It also separates compound and block names in a block or
block parameter reference.
<<...>> Indicates a statement label. Labels can be referenced from other statements
such as the GOTO statement.
$$...$$ Step label.
(...) Establishes precedence when evaluating arithmetic and Boolean expressions. It
delimits messages sent with the SENDMSG statement. It delimits activation
requests in an ACTCASES statement. It delimits TIMER statements.
* The arithmetic operator for multiplication.
/ The arithmetic operator for real division.
+ The arithmetic operator for addition; it is also a unary operator for identity.
- The arithmetic operator for subtraction; it is also a unary operator for sign
inversion.
= The relational operator meaning equality.
<> The relational operator meaning inequality.
< The relational operator meaning less than.
> The relational operator meaning greater than.
<= The relational operator meaning less than or equal to.
>= The relational operator meaning greater than or equal to.
. Separates a compound from a parameter in a path or a block from a parameter
in a parameter reference.
, Separates a block reference from case activation requests in the ACTCASES
statement. Also, it separates lexical units that make up a message in the
SENDMSG statement – string concatenation operator.
Keywords
Keywords are reserved to specify actions carried out by statements when the block is processed.
Keywords are always expressed in uppercase characters. Other lexical units, such as literals and
identifiers, cannot be given the same name as a keyword. The keywords are:
ABORT DO ENDWHILE NOT THEN
ACTCASES DOWNTO EXIT ON TIMER
ACTIVATE E EXITLOOP OR TO
AFTER ELSE FALSE REPEAT TRUE
ALREADY ELSEIF FOR SECURED UNTIL
126
8. Sequence Language B0193AV – Rev N
References
A Sequence language algorithm can access data by specifying a path to the data in a Sequence lan-
guage statement. This data is called a reference. Any of the following types of data can serve as a
reference in a Sequence language statement:
♦ Blocks
♦ Parameter status attributes (ON SECURED BAD)
♦ Compound parameters
♦ Block parameters (standard and user-labeled)
♦ Shared variables
♦ Timers.
Before referencing user-labeled parameters in the statement section, you must declare the parame-
ters in the heading section. You do not need to declare in the heading section the standard Com-
pound:Block parameters (SSTATE, MA, and so forth).
Internal References
An internal reference is a reference to a standard block parameter, a user-labeled parameter, or one
of the status attributes (ON, SECURED, or BAD) associated with a user-labeled parameter, that
belongs to the block. In an internal reference, a user-labeled parameter must be referred to by the
user-label assigned to the parameter in the heading section.
Examples:
A user-labeled parameter declaration in the heading of block1:
ERR_FLG : BI0001;
Vocabulary 127
B0193AV – Rev N 8. Sequence Language
External References
An external reference is a reference to a standard parameter, shared variable, timer, or user-labeled
parameter that is specified by pathname. (It may or may not belong to the block.)
When you make an external reference to a user-labeled parameter, use the path to the parameter
and the parameter name (not the user-label assigned in the heading).
When you use a string type external reference in an expression, precede it with the keyword
STRING. HLBL assumes all external references without the keyword STRING are arithmetic
data types (real, integer, or Boolean).
You can use relative specification in external references. You can omit the compound name when
referring to blocks (and/or their parameters) within the compound. The compound name is pre-
pended to the path name.
Example:
A user-labeled parameter declaration in the header section of block1:
ERR_FLG : BI0001;
A reference to the user-labeled parameter in block1 from the statement section in block2
in the same compound:
:BLOCK1.BI0001 := TRUE;
A reference to the user-labeled parameter in compound1, block1 from the statement sec-
tion in compound2, block2:
:COMPOUND1:BLOCK1.BI0001 := TRUE;
External reference formats are described in “Reference Format” on page 128.
Reference Format
The path specified in a reference must not contain any spaces or comments. External references
are case sensitive. All compound names, block names, and parameters must be entered in upper-
case.
Internal Reference Formats:
PARAM
PARAM.STATF
where:
. = Separates parameter and status field names
PARAM = User-labeled parameter name (one to ten characters).
STATF = ON, SECURED, BAD, OOS, ERROR, or QUALITY parameter status field.
Examples:
128
8. Sequence Language B0193AV – Rev N
FILLFLAG
HEAT_F
LEVEL_F.SECURED
External Reference Formats:
:CNAM.CPARAM
:CNAM:BNAM
:CNAM:BNAM.BPARAM
:CNAM:BNAM.TIM
:BNAM
:BNAM.BPARAM
:BNAM.TIM
:SVAR
where:
: = Precedes external references; separates compound and block names.
. = Separates compound and block names from parameter and timer names.
CNAM = Compound name (one to 12 characters) – not required if referenced block is in
same compound.
CPARAM = Compound parameter name (one to six characters).
BNAM = Block name (one to 12 characters).
BPARAM = Block parameter name (one to six characters).
TIM = Timer name (TIMR1, TIMR2, TIMR3, TIMR4).
SVAR = Shared variable name (one to 12 characters).
Examples:
:REACT_FILL.ON
:REACT_FILL:LEVER
:REACT_FILL:DRAIN.MA
:REACT_FILL:DRAIN.BI0001
:REACT_FILL:FILL_TIME.TIMR4
:CLEAN.MA
:CLEAN.RI0004
:CLEAN_TIME.TIMR2
:TANK_LEVEL
Literals
Literals are values that are interpreted as they appear literally in a statement. A literal can be a real,
integer, Boolean, string, or enumerated value.
Examples:
unsigned integer literal: 325
unsigned real literal: 200, 233.2, 5E4, 23E-12, .5E+6
Boolean literal: TRUE, FALSE
enumerated literal: Active, Inactive, Exception
string literal: “Heat Phase is beginning”
Vocabulary 129
B0193AV – Rev N 8. Sequence Language
NOTE
1. No spacing or passage to a new line can occur within a literal (except the string
literal which can have spaces).
2. Two consecutive double quotation marks (“”) in a string literal are interpreted as
one double quotation mark that does not terminate the string literal.
3. String literals contain up to 80 characters (not including the enclosing quotation
marks), where two consecutive double quotation marks count as one.
4. An enumerated literal only appears as the single right operand of the = or <>
operators in an expression. The left operand must be a parameter of the same pre-
defined enumerated type (for example: SSTATE = Active). Expressions are
described in “Expressions” on page 131.
Labels
A label identifies a statement or a step. A labeled statement, or step, can be executed by request
from another statement, such as a GOTO statement in the same coded programming entity
(block, subroutine or SBX). Labels are only recognized in the block in which they are defined. At
run time, they cannot be referred to from sources outside the block. A label must not be the last
line in a subroutine or program.
You can refer to a statement label, or step label, within the block’s main code section, only from a
statement within that same main code section, or, from a statement in one of the block’s SBXs;
that is, you can use a label reference to jump out from an SBX into the main code section.
The HLBL compiler generates an error message if the program tries to use a label reference to:
♦ Jump into a subroutine
♦ Jump out from a subroutine
♦ Jump into a standard block exception handler.
Format:
<<x>>
where:
<< >> = special symbol that encloses the label.
x = one to 12 characters (letters, digits, or underscores).
Examples:
<<fill_vat2>>
ACTIVATE :REACT_LOGIC:FILL;
.
.
.
GOTO fill_vat2;
The fill_vat2 label is not enclosed in << >> symbols when referred to in a statement. Only the
actual label must be so enclosed.
<<repeat>>
ACTIVATE :COMP_REACT:DRAIN;
This is accepted by the HLBL compiler. If the label uses uppercase lettering, the compiler rejects
the label because REPEAT in uppercase characters is a keyword.
130
8. Sequence Language B0193AV – Rev N
Comments
Comments, enclosed by the special symbols { and }, describe algorithm actions; they do not affect
the algorithm’s flow of control or any data operations. You should use comments to document
your algorithm.
Comments can appear anywhere in the algorithm between identifiers, numbers, and special sym-
bols. A comment can occupy more than one line.
Format:
{x}
where:
{}= Special characters that enclose the comment
x = One or more characters (letters, digits, or underscores); there is no limit to the number
of characters.
Example:
{Set alarm block used to activate annunciator light.}
Operator Remarks
An operator remark tells the operator what the program is doing while executing. It is not used to
tell the operator to perform an action.
Operator remarks describe block algorithm procedures as do comments; however, operator
remarks are included in the Operator Representation Module and therefore are accessible to the
operator for guidance from displays during operation.
Remarks can appear at statement boundaries only. They can occupy more than one line includ-
ing carriage returns and the special symbols (* and *) used as delimiters. See Table 8-2 “Sequence
Compiler Limits” on page 143 for the maximum buffer size for each operator remark.
For MON blocks, operator remarks must be placed between the case number and the case state-
ment.
Format:
(*x*)
where:
= Special characters that enclose the remark.
(* *)
x = characters (letters, digits, carriage returns, or underscores).
Example:
(* Fill tank to 50% *)
NOTE
If the next line is a label, you must end the operator remark line with a semicolon.
Expressions
Expressions combine operands and operators according to rules of computation to obtain new
values.
Expressions 131
B0193AV – Rev N 8. Sequence Language
There are two kinds of expressions in HLBL: string expressions and arithmetic expressions.
String Expressions
A string expression constructs a string from any mixture of:
♦ String literals
♦ Results of arithmetic expressions (including non-string external references)
♦ Internal references to a string item, optional with a subset specification
♦ External references of data type string.
The comma (,) is the concatenation operator.
The conversion of arithmetic values to ASCII character string expressions are automatically per-
formed as follows:
1. A Boolean value is converted into one of the strings TRUE or FALSE.
2. An integer value is converted into a string of digits, if positive, or into a minus sign
followed by a string of digits, if negative.
3. A real value converts into a string of fixed length. The string contains:
For the mantissa: a sign character (+ or -), one digit, the decimal point, six digits, and
the character e. For the exponent: a sign character (+ or -), and two digits.
Examples: +8.800497e+01, -7.423075e-13
A string expression can occupy up to 80 characters. Characters in excess of 80 are ignored without
notification; that is, no operational error is raised.
Trailing blanks of the elements that make up the expression are not removed. Trailing blanks of
the string expression are also not removed.
An external reference is interpreted as data type string if, and only if, it is preceded by the keyword
STRING. Without that keyword, arithmetic values retrieved from the external reference are con-
verted to ASCII as described above. Examples of string expressions include:
1. 7 * 10 + 6
2. “7”, “6”
3. IO0003
If IO0003 = 76, then Examples 1, 2, and 3 all yield: 76.
4. STRING :.NAME , “biphenyl_temp =” , RO0002
If the compound name = COMP_64 and RO0002 = 27.4, then Example 4 yields:
COMP_64 biphenyl_temp = +2.740000e+01
5. “string” , SN0010 , 3 * i , :COMP:BLK.IO0003
The result of Example 5 consists of the characters “string”, contents of SN0010 (with-
out trailing blanks), the ASCII representation of the value of 3*i, and the ASCII repre-
sentation of the value stored in COMP:BLK.IO0003.
Arithmetic Expressions
Arithmetic expressions include integer, real, and Boolean expressions.
Integer arithmetic expressions are those in which the operators operate on integer operands only,
and the results are integers.
132
8. Sequence Language B0193AV – Rev N
In real arithmetic expressions, the operators operate on all real operands or a combination of inte-
ger and real operands. In the latter case the integer value is changed to real before the operator is
applied. The results are real.
In Boolean arithmetic expressions, the Boolean result is derived by applying the logical operator
not to a Boolean value, or by applying the relational operators (=, <>, <=, >=, <, or >) to compati-
ble operands, either arithmetic or string. Examples of Boolean expressions include:
BI0001 := NOT BI0002;
BI0003 := cycle_no = 6;
This assigns a value of TRUE (=1) to the parameter, BI0003, when the integer vari-
able, cycle_no, has a value of 6; any other value of cycle_no sets BI0003 to FALSE (=
0).
BI0004 := cycle_no <> last_cyc;
This assigns a value of TRUE (=1) to the parameter, BI0004, when the integer vari-
able, cycle_no, is not equal to the integer variable, last_cyc; if the two variables are
equal, BI0004 is set to FALSE (=0).
Boolean expressions (and IF conditional clauses) can also use string comparisons to determine
Boolean values.
The following string items can be compared:
♦ String constants
♦ Local string scalars (block or subroutine variables, or subroutine arguments)
♦ Subsets of local string scalars
♦ Elements of local string arrays (block or subroutine variables, or subroutine
arguments).
Any external string parameter to be used in a comparison must appear on the left hand side of the
(in)equality sign and must be preceded by the keyword STRING.
String expressions cannot be compared with each other because the concatenation operator (,)
cannot be used.
When entire strings are being compared, trailing blanks of the strings (on either the left or right
hand side of the comparison) are stripped away. As a result, the following Boolean expressions all
yield the same result:
IF STRING :A:B.SN0001 = “COOL ” THEN ...
IF STRING :A:B.SN0001 = “COOL” THEN ...
IF SN0001 = “COOL ” THEN ...
IF “COOL” = SN0001 THEN ...
When the expression is comparing string subsets, the trailing blanks are not stripped. For
instance, the following two statements do not yield the same result.
BI0001 := SN0002 ( 1 .. 5 ) = “COOL ”;
This assigns a value of TRUE (=1) to the parameter, BI0001, when the first
five characters of the string variable are C, O, O, L, and space. If any of the first charac-
ters differ, BI0001 is set to FALSE (=0).
BI0001 := SN0002 ( 1 .. 4 ) = “COOL ”;
In this example, BI0001 can never be true since the subset does not specify enough
characters, and since it is a subset that is being compared, the trailing space in COOL is
not stripped away.
Expressions 133
B0193AV – Rev N 8. Sequence Language
Operands
An operand is an internal or external reference that is evaluated according to the operators in an
expression. The following references can be used as operands: a compound parameter, block
parameter, block status attribute (ON, SECURED, or BAD), shared variable, or literal. Refer-
ences are described in more detail in “References” on page 127. Reference formats are described in
“Reference Format” on page 128.
When evaluating an expression, if the results of addition (adding operators: + and -) or multiplica-
tion (multiplying operators: *, /, MOD, and DIV ) cause an overflow, underflow or divide-by-zero
condition, the appropriate minimum or maximum value is substituted for the result. During
translation the HLBL compiler detects division by zero in constant expressions.
Operators
Operators combine operands to obtain a single value. The data type of operands and operators
must be consistent. The table below lists each operator and its appropriate operand data types.
Operator Operation Type of Operand Type of Result
Unary
+ Identity Integer or real Same as operand
- Sign inversion Integer or real Same as operand
NOT
Logical negation Boolean Boolean
Arithmetic Dyadic
+ Addition Integer or real Integer/Real
- Subtraction Integer or real Integer/Real
*
Multiplication Integer or real Integer/Real
/
DIV Real division Integer or real Real
MOD Integer division Integer Integer
Modulus Integer Integer
134
8. Sequence Language B0193AV – Rev N
Functions
The Sequence language provides a set of functions that include transfer functions, arithmetic
functions, and array functions shown in the following table.
Transfer functions convert values of one data type into another data type. They have one parame-
ter and deliver one result. A transfer function can be a simple expression by itself or an operand in
a more complex expression. HLBL transfer functions include TRUNC, ROUND, and ORD.
Arithmetic functions perform an algebraic operation on an integer or real value. An arithmetic
function can be a simple expression by itself or an operand in a more complex expression. HLBL
arithmetic functions include ABS and SQRT.
Array functions allow you to manipulate all elements of an array with a single statement. An array
function can only appear in the right hand side of an assignment statement. HLBL array func-
tions include SET_ARRAY, SUM_ARRAY, and MULT_ARRAY.
Transfer Functions
Transfer functions convert values of one data type into another data type. They have one parame-
ter and deliver one result. A transfer function can be a simple expression by itself or an operand in
a more complex expression. HLBL transfer functions include TRUNC, ROUND, and ORD.
Expressions 135
B0193AV – Rev N 8. Sequence Language
TRUNC
The TRUNC(r) function changes a real value into an integer value by truncating any places to the
right of the decimal point.
Examples:
TRUNC(1.83 + 1.56) = 3
TRUNC(-3.7) = -3
The value r must be an integer or a real value. If r is an integer, TRUNC(r) yields r.
If r is not within the range -3.1E10 to 3.1E10 (floating-point notation), TRUNC(r) assumes the
minimum value 80000001 hexadecimal (-231) or the maximum value 7FFFFFFF hexadecimal
(+231-1).
ROUND
The ROUND(r) function changes a real data value to an integer data value by rounding to the
nearest integer. Specifically, if r ≥ 0 then ROUND(r) = TRUNC(r + 0.5), or if r < 0 then ROUND(r)
= TRUNC(r - 0.5), where TRUNC truncates any places to the right of the decimal point.
Examples:
ROUND(3.2 + 1.3) = 5
ROUND(-4.5) = -5
The value r must be an integer or real. If r is an integer, then ROUND(r) yields r.
If r is not within the range -3.1E10 to 3.1E10 (floating-point notation), ROUND(r) assumes the
minimum value 80000001 hexadecimal (-231) or the maximum value 7FFFFFFF hexadecimal
(+231 - 1).
ORD
The ORD(v) function converts any enumerated type value into an integer value. The integer value
reflects the ordinal number in a list of symbolic values that defines the enumerated type. The
value v must yield a Boolean, integer, or enumerated type value.
If v is boolean, then ORD(false) = 0 and ORD(true) = 1.
If v is an integer, then ORD(v) yields the value of v.
If v is enumerated, then ORD(v) yields the integer ordinal number in the range of values for that
enumerated type. See “Data Types” on page 123, for the enumerated data types supported in
HLBL.
In a Sequence language statement, either the symbolic value or the corresponding ordinal value
can be used. For example, the expression of an IF statement looking for the condition where the
compound SSTATE is active can be either of the following:
IF (:COMPNAM.SSTATE = Active) THEN ...
IF 1:= ORD(:COMPNAM.SSTATE) THEN ...
The restrictions to the data types of the values r and v are enforced during compilation when the
data type is known. If r and v contain external references, data type checking is done at run time
and a violation yields an operational error.
The Bad Status attribute associated with the operand of a transfer function is propagated to the
result.
136
8. Sequence Language B0193AV – Rev N
Arithmetic Functions
Arithmetic functions perform an algebraic operation on an integer or real value. An arithmetic
function can be a simple expression by itself or an operand in a more complex expression. HLBL
arithmetic functions include ABS and SQRT.
ABS
The ABS(v) function yields the absolute value of the real or integer value v. The data type of the
result is that of v.
Example:
ABS(-26.37) = +26.37
SQRT
The SQRT(v) computes the real, square root of the integer or real value v. The data type of the
result is real.
Example:
SQRT(4) = 2.0
The HLBL compiler generates an error message when the operand, v, of the SQRT function
assumes a value that, during compilation, is known to be negative. If v assumes a negative value at
run time, the function yields the square root of the absolute value without any warning or error
message.
The Bad Status attribute associated with the operand of an arithmetic function is propagated to
the result.
Array Functions
Array functions allow you to manipulate all elements of an array with a single statement. HLBL
array functions include SET_ARRAY, SUM_ARRAY, and MULT_ARRAY.
An array function can only appear in the right-hand side of an assignment statement. Only one
array function can appear in a statement, that is, an array function cannot be a factor within a
more complicated expression.
The left-hand side of the statement is an internal reference to:
♦ An array item
♦ A user-array parameter
♦ A local-array variable
♦ An array IN argument
♦ An array INOUT argument.
An array function cannot manipulate the elements of an external array.
SET_ARRAY
The SET_ARRAY(expr) function assigns the value of the expression to all elements of an array.
The data type of the expression, and of the destination array, can be either string or arithmetic.
Examples:
Expressions 137
B0193AV – Rev N 8. Sequence Language
SUM_ARRAY
The SUM_ARRAY(expr) function adds the value of the expression to all elements of an array. The
data type of the expression, and of the destination array, must be arithmetic. The HLBL compiler
generates an error if the destination array is data type string.
Example:
RA0002 := SUM_ARRAY ( -130.5 * Min_Level ) ;
MULT_ARRAY
The MULT_ARRAY(expr) function multiplies all elements of an array by the value of the expres-
sion. The data type of the expression, and of the destination array, must be arithmetic. The HLBL
compiler generates an error if the destination array is data type string.
Example:
IA0002 := MULT_ARRAY ( 1 / AcidTempsArr [5] )
138
8. Sequence Language B0193AV – Rev N
Operational Errors
An operational error occurs at run time when a sequential control block encounters an error that
it cannot recover from by itself. Operational error codes are stored in the block’s OP_ERR param-
eter and can be displayed during operation. Here are some conditions that can cause operational
errors:
♦ Data type inconsistencies in an external reference are discovered.
Preprocessor Directives
Within HLBL sources the following directives of the C-preprocessor can be used.
#include to include other source files
#if to conditionally exclude lines of source code
#ifdef
#ifndef
#else
#endif
#define to define macros, abbreviations, etc.
#undef to cancel macro-definitions
140
8. Sequence Language B0193AV – Rev N
NOTE
The { and } are invalid to enclose comments for preprocessor directives. The /* and */
must be used for preprocessor directives.
All preprocessor directives are processed before the actual compilation. As a result those directives
do not appear in the error and listing file nor in the operator representation module.
File Inclusion
The file inclusion statement is a directive to the HLBL compiler to include the characters of the
named file into the source file of the block that is being translated.
The include statement can appear anywhere in an HLBL source. The characters in the include file
need not be a correct compilation unit. The source file, resulting from the combination of the
include file(s) and the source file, is checked by the HLBL compiler for syntax and semantic
errors.
If the same include files must be used on a CP hosted by another AP, you must copy files on the
AP by using remote file access or disk.
Example of a sequence source file using preprocessor directives:
INDEPENDENT_SEQUENCE
#define TESTPHASE 2
#define ON TRUE
#define OFF FALSE
#define Switch_Motor2(s) :COMP_12:MTR_101.MA:=s
CONSTANTS
#include “constant.defs.2”
VARIABLES
#include “vars_2.decl.org”
USER LABELS
Nylon_Temp : RI0001 ;
#include “nylon2.subrs”
#if TESTPHASE == 2
#include “dral.sbxs.tst” { test version }
#else
#include “dral.sbxs.fin { final version }
#endif
STATEMENTS
#include “polym.main” {main polymerization logic }
#ifdef TESTPHASE { not in final version }
SENDMSG (“Executing Motor switch logic”) TO MSGGR2 ;
#endif
Switch_Motor2 ( ON ); { <- parameterized macro }
WAIT 30;
Switch_Motor2 ( OFF );
ENDSEQUENCE
142
8. Sequence Language B0193AV – Rev N
A B Description
10000 32000 Maximum size (in bytes) of a sequence block including header,
parameters, and interpretive code
8450 30000 Maximum size (in bytes) of a sequence block including, parameters,
and interpretive code
12 16 Maximum length of a constant identifier
12 16 Maximum length of a variable name
12 16 Maximum length of an argument name
10 16 Maximum length of a user parameter label
12 16 Maximum length of a subroutine name
12 16 Maximum length of a step label (for example, $$step$$) excluding the
enclosing $$ and $$
12 16 Maximum length of a statement label (for example, <<stmt>>)
excluding the enclosing << and >>
50 128 Maximum number of block local variables in the main code
50 50 Maximum combined number of subroutine local variables and
subroutine arguments in each subroutine
20 20 Maximum number of comma separated arguments before a data type
specification
A B Description
256 256 Maximum number of dimensions in an array-type block local variable
or subroutine local variable
8 8 Maximum levels of nested array index expressions (for example,
a[1,b[6,c[8,2]]] has three levels)
10 10 Maximum number of nested subroutine CALLs
(Note that a subroutine cannot call itself, directly or indirectly.)
127 255 Maximum number of subroutines in each dependent, independent, or
exception block
255 255 Maximum number of external references
a) in each subroutine or
b) in the main code and all SBXs (standard block exception handlers)
255 255 Maximum number of message strings
a) in each subroutine or
b) in the main code and all SBXs
128 255 Maximum number of steps in the main code including INIT_STEP
and END_STEP
40 255 Maximum combined number of statement labels and step labels
a) in each subroutine or
b) in the main code and all SBXs
(Note that only the main code can have step labels and INIT_STEP
and END_STEP are counted as two.)
20 20 Maximum levels of nested control constructs
(for example if, for, repeat, while, . . .)
512 4096 Maximum buffer size for all subroutine names in each dependent,
independent, or exception block
3072 4096 Maximum buffer size for all external references
a) in each subroutine or
b) in the main code and all SBKs
2048 4096 Maximum buffer size for all message strings
a) in each subroutine or
b) in the main code and all SBKs
1025 1025 Maximum buffer size for each operator remark
144
9. HLBL Statements
This chapter contains information on HLBL statements including statement syntax and the
statements ABORT, ACTCASES, ACTIVATE, ASSIGNMENT, SCALAR, ASSIGNMENT,
ARRAY, BIT_PATTERN, EXIT, EXITLOOP, FOR, GOTO, IF, MONITOR CASE,
REPEAT, RETRY, SENDCONF, SENDMSG, SET_SBXS, START_TIMER,
STOP_TIMER, WAIT, and WHILE.
Sequence block statements can be divided into two groups: statements that alter the flow of con-
trol, and statements that perform operations on data.
The logic flow control statements are:
♦ EXIT
♦ EXITLOOP
♦ FOR
♦ GOTO
♦ IF
♦ MONITOR_CASE
♦ REPEAT
♦ RETRY
♦ WAIT
♦ WHILE.
The execution of statements causes actions to be performed. The elements of a statement can be
distributed over any number of lines of text.
Statements can be prefixed by a label. There are two types of labels:
statement_label – a name that serves to identify a single statement
step_label – a label that identifies a group of statements
Both statement and step labels can be referenced by GOTO statements or by GOTO clauses in
statements such as WAITUNTIL, SENDCONF, or ACTIVATE. A GOTO statement (or
GOTO clause) can redirect the flow of control to a specific statement by naming the label that
identifies the target statement.
Statements that are put in sequential textual order are executed in sequential time order at run
time.
Statement Syntax
The executable HLBL algorithm code in the IND, DEP, EXC, and MON blocks consists of state-
ments and statement_sequences defined below. The code enclosed by square brackets [ ] is
optional.
Executable algorithm syntax:
statement_sequence [ ; statement_sequence ; .... ]
algorithm_terminator
145
B0193AV – Rev N 9. HLBL Statements
Statement_sequence syntax:
labelled_statement [ ; labelled_statement ; .... ]
Labelled_statement syntax:
[ stmnt_label_def ] [ opr_remark ] statement
or
[ step_label_def ] [ opr_remark ] statement
Statement syntax:
assignment_statement
or
logic_flow_control_statement
or
procedural_statement
or
subr_call_statement
or
empty
Algorithm_terminator syntax:
ENDSEQUENCE
or
ENDSUBROUTINE
or
ENDEXCEPTION
A statement can also be empty.
The Monitor (MON) block has only one type of statement, the Monitor Cases statement. It is
used to define up to 16 cases that can be monitored by the block.
Following the information on statement syntax and format conventions, statements are listed in
alphabetical order.
The semicolon separates statements in an algorithm. Additional algorithm terminators are:
ENDFOR, ENDWHILE, ENDIF, ENDSEQUENCE, ELSE, ELSEIF, and UNTIL.
When constructing a statement, adjacent lexical units must be separated by spaces, tabs, or lines.
Except for comments, operator remarks, and string literals, lexical units must not contain spaces
or tabs.
Lexical units, except for comments and operator remarks, must fit on a single line. Otherwise,
spacing is optional and used to make statements legible.
146
9. HLBL Statements B0193AV – Rev N
Abort
Format
ABORT :compoundname:blockname
Description
The ABORT statement deactivates an active Sequence (IND, DEP, or EXC) or Monitor
(MON) block by writing a false value to the ACTIVE parameter of the addressed block. If
another request is pending, the ABORT statement is retried once every scheduled basic
processing cycle (BPC) until no other request is pending.
An attempt to deactivate a block that is already deactivated is treated as a successful
attempt.
An unsuccessful attempt to deactivate the block is treated as an operational error.
Example:
ABORT :REACT_LEVEL:FILL
Actcases
Format
ACTCASES (compoundname:blockname,“activate pattern”)
Description
The ACTCASES statement can set the activity status of individual cases in the Monitor
Case statement of the specified Monitor (MON) block.
The activation pattern represents the new activity states of the cases belonging to the
MON block specified in the statement.
Each character in the activation pattern corresponds to a case in that block. The characters
allowed in the pattern are A, I, and -. The character A stands for Active, I for Inactive, and
- indicates no change in activity state.
Abort 147
B0193AV – Rev N 9. HLBL Statements
The first character stands for the first case in the Monitor Case statement, the second
character for the second case, and so on. Any cases not specified in the pattern are left as
they are.
Examples:
ACTCASES (:REACT_LEVEL:FILL,“AAAAAIAIAIAIAAAA”)
ACTCASES (:REACT_LEVEL:DRAIN,“A-AIIIA-I---A”)
Activate
Format
ACTIVATE :compoundname:blockname [WHEN ALREADY GOTO label]
Description
The activation statement activates a Sequence (IND, DEP, or EXC) or Monitor (MON)
block by writing a true value to the ACTIVE parameter of the addressed block. If another
request is pending, the ACTIVATE statement is retried once every scheduled BPC until
no other request is pending.
An attempt to activate a block that is already active is treated as a successful attempt. An
optional WHEN ALREADY GOTO clause allows you to branch to a statement specified
by a label when the block is already active. The label can be either a statement label or a
step label.
An unsuccessful attempt to activate the block is treated as an operational error.
Examples:
ACTIVATE :REACT_LOGIC:FILL;
ACTIVATE :REACT_LOGIC:LEVEL WHEN ALREADY GOTO drain;
.
.
.
<<drain>>
ACTIVATE :REACT_LOGIC:DRAIN
Assignment, Scalar
Format 1
internal reference := expression
Format 2
external reference := expression
148
9. HLBL Statements B0193AV – Rev N
Description
The assignment statement replaces the current value of an internal or external reference
(on the left hand side) with the value that results from evaluating an expression (on the
right hand side). The value of the expression’s Bad status bit is transferred to the reference
(refer to “Bad Status Attribute” on page 140).
The two categories of scalar assignments are the arithmetic assignment statement and the
string assignment statement. The data type of the left hand side of the assignment state-
ment determines the category of any given statement.
If the left hand side is a reference to a string type internal reference, the assignment is a
string assignment. In all other cases involving internal references the assignment is arith-
metic.
If the left hand side is an external reference, the right hand side, if it is an internal refer-
ence, determines the assignment category.
If both left and right sides are external references, the assignment is arithmetic unless the
keyword STRING precedes the external reference in the right hand side. See the following
table.
External Reference
External References
Non-String Internal Reference AE CE AE CE are specified by a
FPN_construct.
String-Type Internal Reference SE SE SE SE
FPN = Full Pathname
External Reference AE SE AE SE
Examples:
:REACT_LOGIC:HEAT.BI0001 := TRUE
opr_res := -1
Assignment, Array
Format
array reference := array reference
where an array reference can be: an external reference, a user array parameter, or a
local variable array name.
150
9. HLBL Statements B0193AV – Rev N
Description
While scalar assignment statements can manipulate the individual elements of arrays,
array assignment statements can assign whole arrays, arithmetic or string, to each other
with one statement.
The right hand side of the statement should be an internal or an external reference; that is,
the right side cannot be an expression of more than one operand or operator.
Elements of external arrays cannot be accessed individually; that is, you cannot index
within an external array.
If the right hand side is an external array parameter, an operational error occurs at run
time because a whole array cannot be pushed onto the internally used evaluation stack. As
a result, elements of two external arrays cannot be moved from one to the other with a sin-
gle array assignment statement.
If the right hand side is a scalar and the left hand side is an array, no operational error
occurs, but only the first element of that array is assigned a new value.
The data types of the left and right hand side have the same compatibility requirements as
Scalar Assignment statements.
If the source and destination internal references do not have the same number of ele-
ments, the compiler issues an error message. If the number of elements are equal and the
dimensioning is different, the compiler issues a warning. For instance, two arrays dimen-
sioned [3, 2, 4] and [12, 2] can be assigned to each other. Note that arrays are stored in
memory with the last index moving fastest.
If either side is an external reference, the compiler cannot check its size. If the number of
elements differ, then:
♦ If the destination array contains fewer elements than the source array, an operational
error is raised and all the elements in the destination array remain unchanged.
or
♦ If the destination array contains more elements than source array, only destination ele-
ments in excess remain unchanged.
As with the scalar assignment, the array assignment is in one of two categories: arithmetic
and string.
An external reference cannot be a string array. Therefore, the compiler does not allow a
string-type array assignment to have external references. If both sides of an array assign-
ment are external references, the compiler translates the assignment as an arithmetic array
assignment.
Examples:
BA0003 := BOOL_VALUES
:COMP:BLK.RA0002 := IA0001
The number of array dimensions can be up to 256. There is no limit on the number of elements
you can define for an array.
The following are examples for assignments to sequence logic array:
BA0001[3] := FALSE;
USER_BA := SET_ARRAY(0);
USER_BA[2, 2, 2] := BA0001[3];
USER_BA[2, 3, 4] := TRUE;
IA0001[16] := 100;
Bit_pattern
Format
destination := BIT_PATTERN ( source )
Description
The BIT_PATTERN statement enables:
♦ The packing of a set of Boolean values into a bit pattern
♦ The unpacking of a bit pattern into a set of Boolean values
♦ The bit pattern that can be stored in a single user-integer parameter (II000x or
IO000x) or in an integer variable, either block or subroutine.
The set of Boolean values can consist of:
♦ All Boolean user-input parameters
♦ All Boolean user-output parameters
♦ One of the four Boolean user-array parameters
♦ A Boolean local-array variable.
A Boolean formal argument:
♦ The Boolean parameter (or variable or argument) determines how many bits are used
in the user integer parameter. When a Boolean local array is packed into a user integer
parameter, up to 32 elements are packed. Excess elements are ignored without an error
being raised.
♦ The data type on the left side of the := sign in the BIT_PATTERN statement deter-
mines whether the bits are packed or unpacked. If the left side is a user integer
parameter, a set of Boolean values are packed into the integer.
Examples:
IO0004 := BIT_PATTERN ( BA0003 )
{ All 16 elements of BA0003 are packed as a bit pattern into IO0004}
IO0008 := BIT_PATTERN ( BO0001 )
{All 16 boolean output parameters are packed as a bit pattern into IO0008}
II0001 := BIT_PATTERN ( Loc_Bool_Arr )
{Up to 32 elements of Loc_Bool_Arr are packed as a bit pattern into II0001}
BI0001 := BIT_PATTERN ( II0002 )
{24 bits of II0002 are unpacked to give all boolean input parameters a boolean value}
BO0001 := BIT_PATTERN ( Loc_Int_Var )
{16 bits of the Loc_Int_Var are unpacked to give all boolean output parameters a
boolean value}
152
9. HLBL Statements B0193AV – Rev N
Exit
Format
EXIT
Description
When executed, the EXIT statement terminates the block algorithm. Any statements fol-
lowing EXIT are not executed. You can use the EXIT statement in subroutines, in SBXs,
and/or the main code section.
Example:
STATEMENTS
<<fill>>
SENDMSG (“Beginning New Batch”) TO status_stg;
ACTIVATE :REACT_LOGIC:HEAT;
WAIT 1.0;
WAIT UNTIL fill_act = FALSE AND fill_flg = FALSE
AFTER 600 GOTO fill_fail;
EXIT;
<<fill_fail>>
SENDMSG (“Fill time too long 1:Retry 2:Abort 3:Continue”) TO
status_stg;
.
.
.
ENDSEQUENCE
NOTE
In this example, the statements after EXIT are not executed when conditions are
normal. However, if conditions specified in the AFTER clause of the WAIT
UNTIL statement are met, statement execution skips the EXIT statement and goes
to the statement labeled fill_fail. Then statement execution terminates at
ENDSEQUENCE.
Exitloop
Format
EXITLOOP
Description
The EXITLOOP statement directs control flow to the point right after the nearest enclos-
ing loop. It can only occur within a loop.
Exit 153
B0193AV – Rev N 9. HLBL Statements
Example:
FOR batchno := 1 TO 5 DO
SENDMSG (“Beginning batch number,” batchno) TO status_stg;
IF a = 1 THEN
GOTO startcycle;
ELSE
EXITLOOP;
ENDIF;
ENDFOR
NOTE
The EXITLOOP statement terminates the FOR loop, not the ELSE clause.
For
Format
FOR control variable := expression TO expression DO
statement...
statement...
statement...
ENDFOR;
FOR control variable := expression DOWNTO expression DO
statement...
statement...
ENDFOR
Description
The FOR statement executes a group of statements a specified number of times. The con-
trol variable determines the number of repetitions.
The control variable is an integer. It can be a user output parameter (labeled or not) or a
local variable (either block or subroutine) known by the sequence block, or an arithmetic
user parameter name (II000n or IO000n).
The first expression in the statement is the initial value of the control variable, the second
expression is the final value of the control variable for which the DO statement is per-
formed. Both expressions should yield an integer value. If they do not, a compiler error is
generated in case of internal references or a run-time error is generated in case of external
references.
Statements in the FOR loop are executed until the control variable reaches its final value.
After each repetition, the control variable is incremented or decremented by one until the
final value is reached. The keyword TO increments the value. The keyword DOWNTO
decrements the value.
The control variable value is tested before statements in the loop are executed. If the initial
value of the control variable is equal to (or greater than) the final value, when the key-
word, TO, is used, the statements are not executed. Likewise, when the keyword,
DOWNTO, is used, the statements are not executed if the initial value is equal to (or less
than) the final value.
154
9. HLBL Statements B0193AV – Rev N
For a positive increment, the FOR statement terminates when the control variable exceeds
the second expression. Likewise, for a negative increment, the FOR statement terminates
when the control variable is less than the second expression. These conditions are tested
before executing the DO statements. Therefore, if either of these conditions exist initially,
the DO statements are not executed. The value of the control variable, after leaving the
FOR statement, is undefined.
If evaluating one of the expressions sets the Bad Status Attribute, the Bad Status is ignored
and the statement uses the value as if it were not marked Bad. This can occur if:
♦ One of the operands of the expression is an input parameter that belongs to the block
and is currently serving as a data sink of a linkage.
♦ One of the operands of the expression is an external reference to an input, or output,
parameter that has its Bad status attribute set.
♦ If an operand is an external reference and its value cannot be retrieved at run time, an
operational error is raised.
Examples:
FOR batchno := :REACT_COMP:DRAIN.IO0001 TO end_cntr DO
SENDMSG (“Beginning batch number,” batchno) TO MSGGR2;
ENDFOR
The following FOR statement,
FOR i := 42 TO 50 DO
asciinr := i;
:'dcomp':V0'asciinr'.AUTOPN := FALSE;
ENDFOR
can replace the following nine commands:
:'dcomp':V042.AUTOPN:=FALSE;
:'dcomp':V043.AUTOPN:=FALSE;
:'dcomp':V044.AUTOPN:=FALSE;
:'dcomp':V045.AUTOPN:=FALSE;
:'dcomp':V046.AUTOPN:=FALSE;
:'dcomp':V047.AUTOPN:=FALSE;
:'dcomp':V048.AUTOPN:=FALSE;
:'dcomp':V049.AUTOPN:=FALSE;
:'dcomp':V050.AUTOPN:=FALSE
Goto
Format
GOTO label
Description
The GOTO statement provides transfer of the flow of control to any labeled statement
within the same coded programming entity (block main section, subroutine, or SBX).
Flow of control cannot be transferred to a statement inside another block.
Goto 155
B0193AV – Rev N 9. HLBL Statements
You can refer to a statement label, or a step label, within the block’s main code section
only from a statement within that same main code section or from a statement in one of
the block’s SBXs; that is, you can use the GOTO statement to jump out from an SBX into
the main code section.
The HLBL compiler generates an error message if the program tries to use the GOTO
statement to:
♦ Jump into a subroutine
♦ Jump out from a subroutine
♦ Jump into a standard block exception handler.
Example:
IF amount < REACT_COMP2:MIXER.RI0001
THEN GOTO drain_fail;
ENDIF;
<<drain_fail>>
SENDMSG (“Draining too slowly 1:Retry 2:Abort 3:Continue”) TO
status_stg
If
Format
IF expression THEN statement;
[ELSEIF expression THEN statement...;]
[ELSE statement;]
ENDIF
Description
The IF statement provides conditional statement execution. Statements are executed
according to the evaluation of a conditional expression. The ELSEIF and ELSE clauses are
optional. When an expression in the IF clause or an optional ELSEIF clause in the state-
ment is true, the THEN statement following the expression is executed. In an IF state-
ment that contains an optional ELSE clause, or if the IF clause expression and all optional
ELSEIF clauses are false, the statement following the ELSE clause is executed.
An IF statement can have multiple ELSEIF clauses and/or one ELSE clause.
If evaluating the expression sets the Bad status attribute, the block ignores it and interprets
the value as if it were not marked Bad. The Bad status attribute can be set when:
♦ One of the operands of the expression is an input parameter that belongs to the block
itself and the parameter serves as a data sink of a linkage.
♦ One of the operands of the expression is an external reference to an input or output
parameter that has its Bad status attribute set.
An operational error is raised if one of the operands is an external reference and its value
cannot be retrieved at run time.
156
9. HLBL Statements B0193AV – Rev N
Examples:
IF a <1 OR a >3 THEN
GOTO error_msg;
ENDIF;
IF a = 1 THEN
GOTO startcycle;
ELSEIF a = 2 THEN
GOTO stopcycle;
ELSE
GOTO error_msg;
ENDIF;
IF a = 1 THEN
GOTO startcycle;
ELSE
GOTO error_msg;
ENDIF
When a CALL subroutine statement is the last statement of an IF/THEN clause, and is
executed, the STEPNO parameter indicates the step number of the CALL subroutine
statement. The parameter, STMNO, indicates the statement being executed, or to be exe-
cuted next, within the current subroutine.
Monitor Case
Format
MONITOR
mb_heading;
casenumber boolean expression --> output parameter label;
casenumber WHEN boolean expression [ --> output parameter label] DO
:com-poundname:blockname;
ENDMONITOR
Description
The Monitor Case statement only applies to the Monitor (MON) block. Each MON
block contains one Monitor Case statement which can be assigned up to 16 cases for eval-
uation. All expressions in the Monitor Case statement must yield a Boolean value when
evaluated. The data type is checked at compilation time. No external references are
allowed in monitor expressions.
Each time a Monitor Case is evaluated the Boolean result is stored in the corresponding
Boolean output parameter. When a compound:block name is specified it can activate any
sequence block (EXC, DEP, IND, or MON).
The user-labeled Boolean output parameter is not declared in the heading section. It is
named in the case where it is used to save a Boolean value. That user-label is only intro-
duced to convey the boolean result of a particular Monitor Case onto another one. See
Table 8-2 “Sequence Compiler Limits” on page 143 for the maximum length of a user
parameter.
The Monitor block heading has two forms:
♦ Only user-label declarations without any keywords
Example:
MONITOR
level_hi : BI0001;
level_lo : BI0002;
CASES
0001 WHEN level_hi DO :REACT_LOGIC:HI_LVL_EXC;
0002 level_hi --> level_rec1;
.
.
.
0016 WHEN level_lo --> level_rec1 DO :REACT_LOGIC:LO_LVL;
ENDMONITOR
NOTE
1. Cases can be added after each of the case numbers listed.
2. Case numbers need not have a case assigned to them, but all case numbers must
be listed.
3. A case statement can be preceded by an operator remark that is following a case
number.
4. If the Bad status attribute is set as a result of evaluating the expression, the expres-
sion is interpreted as being false. The value of Bad status attribute is sent to the asso-
ciated Boolean output parameter.
Repeat
Format
REPEAT statement... UNTIL expression
158
9. HLBL Statements B0193AV – Rev N
Description
The REPEAT statement executes a series of statements repeatedly until the value of a con-
ditional expression is true. Statements in the REPEAT statement are executed at least
once.
Example:
REPEAT
IF opr_res < 1 OR opr__res > 3 THEN
GOTO drain_fail;
ENDIF;
UNTIL time = 50;
If evaluating the expression sets the bad status attribute, the block ignores it and interprets
the value as if it were not marked Bad. The Bad status attribute can be set when:
♦ One of the operands of the expression is an input parameter that belongs to the block
itself and the parameter serves as a data sink of a linkage.
♦ One of the operands of the expression is an external reference to an input or output
parameter that has its Bad status attribute set.
An operational error is raised if one of the operands is an external reference and its value
cannot be retrieved at run time.
Retry
Format
RETRY
Description
The RETRY statement is an alternate exit point from the two error handling SBXs. You
can use RETRY only with the two error handling SBXs. Any other use produces a com-
piler error.
When an error handling SBX is terminated with ENDEXCEPTION, statement execu-
tion resumes with the statement following the one that caused the SBX to be executed.
The RETRY statement directs the logic to re-execute the erroneous statement that caused
the SBX to be executed.
NOTE
Use the RETRY statement with care. The execution of an error handling SBX sup-
presses the generation of an alarm, and the switching of the block state to Manual.
The RETRY statement permits the repeated execution of the erroneous statement,
with no check, or indicator, of the number of retries. Foxboro advises you to build a
counting mechanism (see Example) and/or a security check into the SBX.
Retry 159
B0193AV – Rev N 9. HLBL Statements
Example:
BLOCK_EXCEPTION TO_SYS_ERROR
#if PHASE == FINAL APPLICATION
{ use this retry counting after all tests have passed }
IF Retry_Cnt < 3 THEN
Retry_Cnt := Retry_Cnt + 1;
RETRY ;
ELSE
SENDCONF (“Should”, COMPOUND103,”;”,BLOCK14,” do another 3
retries?”)
TO MSGGR1 AFTER 60 GOTO no_answer;
Retry_Cnt := 0;
RETRY ;
ENDIF
<<no_answer>>
SENDMSG (“No confirmation on retry, “, BLOCK14, “ de-activated”) TO
MSGGR1;
EXIT
Sendconf
Format
SENDCONF ([literal, literal..], [expression, expression..]) TO
parameter; AFTER expression GOTO label
Description
The SENDCONF statement sends messages interactively to logical devices or objects that
act like logical devices (such as historians and printers).
Upon executing the SENDCONF statement, the standard block parameter SUSPND
(suspended on message) is set true and statement execution is suspended until SUSPND
is set to false again from outside the block, or until an optional time-out value expires.
The message must be less than 80 characters.
The message is a string composed of any combination of string literals and expressions.
Commas separate individual strings and expressions in the message.
The label can be either a statement label or a step label.
Examples:
SENDCONF ( “Operational Error is”, OP_ERR ) TO MSGGR3;
SENDCONF ( “Suspension lasts for”, II0001, “sec.” ) TO MSGGR2;
AFTER II0001 GOTO DRAINING
160
9. HLBL Statements B0193AV – Rev N
Sendmsg
Format
SENDMSG ([string literal, string literal...], [expression, expres-
sion...]) TO parameter
Description
The SENDMSG statement sends messages to logical devices or objects that act like logical
devices (such as historians and printers) and user-labeled string parameters.
♦ The message is a string composed of any combination of string literals and
expressions.
♦ Commas separate individual strings and expressions in the message.
♦ The message must be less than 80 characters.
♦ When an expression that is part of a message, is evaluated, the results are converted
into strings as follows:
♦ A real value is converted into a string of fixed length. The string format is:
sx.xxxxxxesyy
where:
Sendmsg 161
B0193AV – Rev N 9. HLBL Statements
DV1 <logical_name>
DV3 <logical_name>
DV9 <logical_name>
DV15 <logical_name>
and
GR5 0xA082
where:
You can also send a message to a user-labeled string parameter that belongs to the
block. The Operator Message Interface can then retrieve the message for operator dis-
play. The standard parameter MSGNO belonging to the block is incremented by one
each time a new message is assigned to any of the user-labeled string parameters.
162
9. HLBL Statements B0193AV – Rev N
NOTE
1. Using an out-of-range value for x in the MSGGRx entry clamps the value at 1
or 8, whichever is nearest.
2. When sent to a message group parameter, the message is appended to a list of
fixed message fields and sent to all logical devices associated with the message group.
3. To send messages to the Historian, you should assign the message to a
MSGGRx parameter that has the Historian in its group of associated devices.
4. The compiler raises an error if the parameter name in the TO clause is not one of
MSGGRx parameters or a user-string parameter.
Examples:
status_flg : SN0001 ;
.
.
.
SENDMSG (“Beginning New Batch”) TO status_flg;
SENDMSG (“Beginning Batch Number = ”, batchno) TO MSGGR2
Set_sbxs
Format
SET_SBXS (availability pattern)
Description
The SET_SBXS statement uses its availability pattern to manipulate the five block param-
eters DISBX1, DISBX2, DISBX3, DISBX4, DISBX5. When an SBX is “Enabled” (DIS-
BXx = False) the SBX is available, and the block executes the statements specified in the
SBX when the corresponding event occurs.
The availability pattern is a string literal whose only three valid characters are:
As long as an SBX is set “Disabled” (DISBXx = True) the SBX is unavailable and its logic
is not executed.
Two standard block exception handlers (SBXs) are supported for error handling and three
are supported for state change handling.
Set_sbxs 163
B0193AV – Rev N 9. HLBL Statements
Each character in the availability pattern corresponds to a standard block exception han-
dler. The first character refers to SBX1, the second character to SBX2, and so forth.
If the number of characters in the availability pattern is less than maximum number of
SBXs, the availability states of the unnamed SBXs are left unchanged.
Example:
SET_SBXS (“E-EDD”)
This statement:
♦ Enables the “TO_SYS_ERROR” SBX (DISBX1 = False)
♦ Leaves the “TO_USR_ERROR” SBX as it was (DISBX2 is not changed)
♦ Enables the “TO_INACTIVE” SBX (DISBX3 = False)
♦ Disables the “TO_MANUAL” SBX (DISBX4 = True)
♦ Disables the “TO_PAUSED” SBX (DISBX5 = True).
Start_timer
Format
START_TIMER (:compoundname:blockname.timername [, expression])
Description
The START_TIMER statement turns on a specified timer in a Timer (TIM) block.
START_TIMER optionally initializes a timer to the number of seconds specified in the
expression. The timer is then incremented by the value of the block’s period each time the
block is scheduled to be executed. Timers are updated as long as the TIMER block is in
Auto and the compound is on.
Specify the timer name as TIMR1, TIMR2, TIMR3, or TIMR4.
If the addressed Timer block does not exist, an operational error is raised at run time.
Examples:
START_TIMER (:REACT_LOGIC:FILL_TIME.TIMR1)
START_TIMER (:REACT_LOGIC:FILL_TIME.TIMR1, 0.0)
164
9. HLBL Statements B0193AV – Rev N
Stop_timer
Format
STOP_TIMER (:compoundname:blockname.timername)
Description
The STOP_TIMER statement turns off a specified timer in a Timer (TIM) block.
Specify the timer names as: TIMR1, TIMR2, TIMR3, or TIMR4.
If the addressed Timer block does not exist, an operational error is raised at run time.
Example:
STOP_TIMER (:REACT_LOGIC:FILL_TIME.TIMR1)
Wait
Format 1
WAIT time_period
Format 2
WAIT UNTIL controlling_expression AFTER time_period GOTO label
Description
Statement execution can be delayed with a WAIT or WAIT UNTIL statement.
WAIT delays execution a specified number of seconds.
WAIT UNTIL delays execution until the result of the controlling_expression becomes
true. The AFTER – GOTO clause in the WAIT UNTIL statement is optional.
The optional AFTER – GOTO clause allows you to specify a time limit on the WAIT
period, and an alternate action, if that time limit is exceeded. Specifically, if the control-
ling expression does not go TRUE within the specified number of seconds, the statement
specified in the GOTO clause is executed. If the controlling expression does go true
within the time limit, the statement following the WAIT UNTIL statement is executed.
In both the WAIT and WAIT UNTIL statements, time_period is in seconds, and can be
a constant or an expression yielding an integer or real value.
For either statement, block execution is suspended until the next regular cycle (per the
block’s period) that equals or follows time_period. If time_period is less than 0.1, block
execution is always suspended by one period, regardless of the value of the period.
Measurement of time is independent of the state (Active, Paused, Inactive) of the block in
which the statement appears and the frequency at which the block is processed.
Stop_timer 165
B0193AV – Rev N 9. HLBL Statements
Examples:
WAIT 1.0;
WAIT UNTIL fill_actv = FALSE AFTER 600 GOTO fill_fail;
.
.
<<fill_fail>>
SENDMSG (“Filling too slowly 1:Retry 2:Abort 3:Continue”) TO
status_stg
While
Format
WHILE expression DO statement... ENDWHILE
Description
The WHILE statement executes a series of statements repeatedly while a given condi-
tional expression is true. Statements in the WHILE loop are not executed at all if the spec-
ified condition is not true initially.
Example:
WHILE count <= 5 DO
value := value * count;
count := count + 1;
ENDWHILE
If evaluating the expression sets the Bad status attribute, the block ignores it and interprets
the value as if it were not marked Bad. The Bad status attribute can be set when:
♦ One of the operands of the expression is an input parameter that belongs to the block
itself and the parameter serves as a data sink of a linkage.
♦ One of the operands of the expression is an external reference to an input or output
parameter that has its Bad status attribute set.
An operational error is raised if one of the operands is an external reference and its value
cannot be retrieved at run time.
When a CALL subroutine statement is the last statement of a WHILE loop, and is exe-
cuted, the STEPNO parameter indicates the step number of the CALL subroutine state-
ment. The parameter, STMNO, indicates the statement being executed, or to be executed
next, within the current subroutine.
166
Appendix A. Sequence Control
Printed Error Messages
Operational Errors occur at runtime when a sequential control block encounters an error that it
cannot recover from by itself. Operational error codes are stored in the block’s OP_ERR parame-
ter and can be displayed during operation. Here are some conditions that can cause operational
errors:
♦ Data type inconsistencies in an external reference are discovered.
♦ A statement tries to set the value of a secured parameter. For example, an
ACTCASES statement cannot address a MON block if the block’s ACTPAT parame-
ter is secured.
♦ An external reference is defined to a compound, block, or parameter that is not
defined in upper case.
♦ A statement references a parameter or block that does not exist. For example, a
START_TIMER statement cannot address a TIM block that does not exist.
♦ A statement cannot address a parameter or block due to communication errors. For
example, the ABORT statement fails to deactivate a block.
Operational Errors (OP_ERR) messages listed in the following sections are those which can be
raised in a Monitor or a Sequence block. When this occurs, the OP_ERR parameter assumes an
integer that indicates the type of failure.
The 2000 and 3000 series OP_ERR messages are detected by the sequence control blocks. The
values of OP_ERR less than 2000 are simply conveyed by the sequence control blocks.
These error messages are classified as either priority one (High) or priority two (Low) messages.
Priority one messages, requiring immediate attention, are those sent to the workstation processors
and/or personal computers designated to report system alarms. This type is also sent to the histo-
rian and to a high-priority message printer. Priority two messages, those usually not requiring
your immediate attention, are sent to the historian and to a low-priority message printer.
The following string text represents a typical message line that is printed via a logging device to a
priority printer. The standard message line contains the following constants:
(mm-dd-yy) month-day-year
(HH:MM:SS) hour:minute:second
(PRI <subsystem>) the primary subsystem (for example, PRI SYSMON=SYSMN1)
(IPC) the subsystem text string file
(-01071) the file code
“Invalid station address the Message
and/or letterbug”
167
B0193AV – Rev N Appendix A. Sequence Control Printed Error Messages
Code Description
2101 attempt to assign a Boolean value to a user parameter or variable with a data type of
integer or real
2102 attempt to assign a non-Boolean value to a Boolean user parameter or variable
2103 attempt to write to an array value(s) which cannot be converted to integer or real
2116 more external array elements read than can be assigned to destination array
Code Description
2301 in an arithmetic expression, the data type is unequal to BOOL, LONG, or FLOAT
encountered,
OR
in a string expression, the data type is unequal to STRING encountered.
(NOTE: External string parameters must be preceded by the keyword STRING in
string expressions.)
2302 only a Boolean data type is permitted in a logical expression
2303 a Boolean data type is not permitted in an arithmetic expression
2304 only an integer data type is permitted in a DIV or MOD function
2305 operands should be compatible for (in)equality
2306 operands should be integer or real for equality operator
2307 a Boolean data type is not permitted in a TRUNC, ROUND, ABS, or SQRT function
2308 a real data type is not permitted in an ORD function
2309 timer value is not treated as a real value
2310 array index out of bounds
2311 array index expression not of data type long
2312 first subset position out of bounds
2313 second subset position out of bounds
2314 string type expected (in string expressions)
2315 first subset position expression not of data type long
2316 second subset position expression not of data type long
2317 input parameter is not writable: an attempt was made to write to a linked input
parameter; check reason for linkage and reconfigure, if necessary.
168
Appendix A. Sequence Control Printed Error Messages B0193AV – Rev N
Code Description
2401 Indicates an attempt to set the ACTIVE parameter to a value it presently assumes
2402 Monitor case cannot activate block because the ACTIVE parameter of the target block
is the sink of the linkage or connection
Code Description
3001 bad SRC parameter detected by Monitor block
3002 deleted SRC block detected by Monitor block
3003 no input parameter located by Monitor block
3004 evaluation stack empty
3005 evaluation stack full
3006 invalid bit number
3007 invalid category number
3008 invalid constant type
3009 invalid function
3010 invalid message group index
3011 invalid message number
3012 invalid operator code
3013 invalid operator
3014 invalid parameter number
3015 invalid path
3016 invalid return from IC (interpretive code) processor
3017 statement request and IC-PTR null
3018 invalid data type on stack (stack may be corrupted)
3019 statement not implemented
3020 string corrupted
3021 (not being used)
3022 message not queued
Code Description
3023 no message packet allocated
3024 error return from string pool function stripped
3025 invalid vector type
3026 invalid scalar type
3027 invalid argument type
3028 invalid return from SUBR processor
3029 invalid path indication
3030 no FPN (full path name) construct
3031 invalid return from SBX (standard block exception) processor
3032 HLBL statement not found
3033 FPN constant too long
3034 invalid array operation
3035 invalid array category
3036 invalid data type
3037 invalid length for CPGET
3038 invalid length for GETVAL
3039 statement not found
3040 STMNO out of bounds
3041 real value too big (real to ASCII conversion – conversion to ASCII failed)
3042 real value too small (real to ASCII conversion – conversion to ASCII failed)
3101 invalid parameter type
3102 data type of loop variable not integer
3103 no conversion to string
3201 ERH entry for ACTIVATION is not serviced
3202 invalid index of ERH-entry
3203 (not being used)
3204 not an ACTIVATION ERH-entry
3205 request type mismatch
3206 invalid data type CPSET
3207 invalid data type setconfirm
3208 invalid length CPSET
3209 invalid length setconfirm
3301 data type of monitor expression is not boolean
170
Appendix A. Sequence Control Printed Error Messages B0193AV – Rev N
Code Description
2 INACTIVE – the parameter ACTIVE already has the value you are trying to write
(this is a warning, not an error)
3 SECURED – attempt to set a parameter that is secured
4 NOT_SECURABLE – the point is not securable
5 NOT_SECURED – the point is not secured
6 NOT_RELEASABLE – the point is secured and cannot be released
7 (not being used)
8 (not being used)
9 TO_BOOL_CONV_ERROR – value cannot be converted into boolean
10 TO_STRING_CONV_ERROR – value cannot be converted into string
11 TO_INTEGER_CONV_ERROR – value cannot be converted into integer
12 TO_REAL_CONV_ERROR – value cannot be converted into real
13 TOO_BIG – attempt to write a real value greater than an integer parameter can hold
14 NOT_CONNECTABLE – the point is not connectable
15 NOT_SETTABLE – attempt to set a parameter that is not settable
16 TOO_MUCH – attempt to write too much data to parameter, or not enough room
available to read value from parameter.
17 OUT_OF_ENG_RANGE – the point was set beyond the engineering range
18 LOCKED_ACCESS – locked access to the parameter
19 TO_CHAR_CONV_ERROR – to character conversion error
20 GETPTRP_ERROR – the string could not be retrieved from the string pool
21 PUTSTR_ERROR – the string could not be stored in the string pool
22 ONLY_LONG_FOR_ACTPAT – The ACTPAT parameter of the Sequence Monitor
block requires a data type of long integer; no other data type is acceptable
23 TO_PACKED_CONV_ERROR – to packed Boolean conversion error
24 OUTPUTS_DISABLED – outputs are disabled
25 TOO_LITTLE – too little (for example, an attempt to write a large INTEGER value
into SHORT INT, or an attempt to write a negative value into a parameter with the
“non_negative” rule [refer to SPRATE of PIDA])
Code Description
0 OM_SUCCESS – no error
-1 ENOTFOUND – top level name not found or internal time-out expired
-2 EBADTYPE – invalid data type argument
-3 ESECURE – attempt to write to a secured variable
-4 ENOTOPENED – invalid om_descriptor
-5 EREADERROR – inaccessible change-driven variable
-6 EREAD – om_descriptor has write-only access
-7 EWRITE – om_descriptor has read-only access
-8 EWRITEERROR – change-driven variable write
-9 ENOSPACE – memory allocation error or shared memory attach failure
-10 EDUPLICATE – entry is already in table
-11 ELOCAL – name is local; cannot import
-12 EBADNAME – invalid full pathname
-13 EBADLEN – all data not returned (receive buffer too small)
for example, SN0001 := ; SN0001 can accommodate 80 characters, but a shared
variable of the String type is good for 255 characters
-14 ESTRLEN – string length is invalid
-15 EOPENED – omopen list is already opened
-16 EBADLIST – bad variable list pointer
-17 EBADATBL – bad address table pointer
-18 ECONNBAD – omopen failure; no connections
-19 EQNOTEMPTY – change queue is not empty
-20 ENOVALUE – object type has no value record
-21 EBADVREC – bad value record
-22 EIMPORT – not enough space for import table
-23 EOBJDIR – not enough space for object directory
-24 EADDRTBL – not enough space for address table
-25 ESCANDB – not enough space for scanner db
-26 EIMPFULL – import list is full
-27 EBADQTBL – not enough space for dqchg queue table
-28 EBADQUE – error creating a queue
-29 EOMWSIZE – invalid omwrite list size
-30 EQEMPTY – dqchg queue is empty
-31 ENOADDTBL – optimized omopen without address table
-32 ENOQUE – unable to get a queue for omopen
-33 ENOSEND – unable to send omopen requests
-34 ENOADRSP – caller’s address table is full
172
Appendix A. Sequence Control Printed Error Messages B0193AV – Rev N
Code Description
-35 ENOTACTIVE – caller not activated with IPC
-36 EBCONTBL – error creating connection table
-37 ENODISQ – error creating disconnect queue
-38 ENOOPNTBL – error creating open ID table
-39 EMAXOPNS – the omopen ID table is full
-40 ESCANFUL – the scanner db is full
-41 EIPCRET – error detected in IPC system
-42 EWAIT – remote scanner has not responded
-43 ESTATION – communication problem with remote station (remote station has not
responded)
-44 EOBJPND – object with same name pending creation
-45 ENOCONFIRM – no setval confirmation
-46 ENOVENQ – unable to get omvenix queue
-47 ENOSCANTSK – unable to create scanner task
-48 ENOVENTSK – unable to create omvenix task
-49 ENOSRVTSK – unable to create server task
-50 EFABORT – a fabort was received from VENIX
-51 ESIZELST – invalid list size
-52 ENORECQ – error creating reconnect queue
-53 EBADRSZ – invalid users address table size
-54 ENORECTSK – error creating OM reconnect task
-55 OM_ECBSY – open failure; all connections busy
-56 EOMOSIZE – invalid open variables list size
-57 EBADINDEX – invalid open variables list index
-58 EBADMSK – bad status write mask
-59 EBADWKSTA – Workstation name length
-60 EBADPARM – parameter does not exist;
for example, this error is generated when a full pathname refers to a block that exists in
the control database, but the parameter with given name does not exists in the block
174
Index
A
Algorithm
structure 115
write sequence block 115
Archiving
sequence logic file 110
Assigning
ladder function 56
B
Balancing loading 27
Block building
order 41
Block exception handlers
sequence language standard block exception handler (SBX) 122
Block parameters
edit 49
Block/ECB
replace block/ECB list with compound list 35
replace ECB functions menu with compound functions menu 35
Blocks
continuous 41
create new 36
delete 34
editing parameters 49
reconnect 34
rename 52
retrieve settable parameter values 33
Boolean variable
16-bit packed 50
C
Checkpointing 58
Close current file and choose another 57
Compile
ladder logic diagram 89
sequence logic 96, 98
Compiler limits
sequence 143
Compound
block names 14
create new 22
creating new 14
175
B0193AV – Rev N Index
delete 34
functions menu
replace with the block/ECB functions menu 35
list
replace with the block/ECB list 35
move to the configurator file in a preselected position 27
parameters
edit 25
reconnect 34
Compound summary access (CSA) search utility 4
Compress
configurator database 60
Configuration compound
retrieve settable parameter values 33
Connections
block parameter 50
Boolean input 50
local 49
peer-to-peer 49
Control keys 3
Control processor 21
selection 18
Copy
sequence logic source file from library 99, 101
CPGET/CPSET error messages 171
Create
ladder logic 80
new compound 22
CSA 13
hierarchy 14
requirements 13
Cursor control 2
D
Database
compress 60
Debugging
sequence logic file 110
Defining Fieldbus Modules 42
Diskette
load compound from 30
save all compound function entities to 28
E
ECB
adding 43
create new 36
editing functions 21, 49
176
Index B0193AV – Rev N
editing parameters 49
reconnect 34
rename 52
retrieve settable parameter values 33
Edit
block parameters 49
compound parameters 25
exit 61
ladder logic 52
sequence logic 52, 95
sequence logic source file 103–107
Editing functions
ECB 21, 49
Engineer’s environment 4
Environmental interaction error messages 169
Erroneous parameter
correction 50
Error
failure or warning 50
floppy disk mount failed 29, 31, 60
ladder diagram syntax 89
log file 59
operation is invalid 41
paste insert failure 27
sequence logic compilation 107
summary box 59
unknown name 57
Error messages 167
CPGET/CPSET 171
environmental interaction 169
HLBL semantics violation 168
run time data conversion 168
sequence control block system 169
Exit
edit 61
sequence logic function 98
the sequence logic functions menu 103
F
Failure
ladder logic installation 91
FBM
Fix all function 56
function 56
pull-down menu 21
Fieldbus
defining modules 42
File
close current and choose another (new) 57
177
B0193AV – Rev N Index
G
GOTO statement 122
H
Help
ladder logic editor 75
Hierarchy
control configurator 4
CSA 14
High level batch language (HLBL) 115
HLBL algorithm code 145
HLBL semantics violation error messages 168
HLBL statements 145
ABORT 147
ACTCASES 147
ACTIVATE 148
ASSIGNMENT, ARRAY 150
ASSIGNMENT, SCALAR 148
BIT_PATTERN 152
EXIT 153
EXITLOOP 153
FOR 154
GOTO 155
IF 156
MONITOR CASE 157
REPEAT 158
RETRY 159
SENDCONF 160
SET_SBXS 163
START_TIMER 164
STOP_TIMER 165
WAIT 165
WHILE 166
178
Index B0193AV – Rev N
I
ice editor 106
Initial boot
compounds automatically installed 25
Insert
new compound 22
Install
ladder logic (code) 90
K
Keys
control 3
function 3
vol 18
L
Ladder diagram
edit 76–79
Ladder displays
access 92
configuring location 92
installation 91
location 92
Ladder function
assignment 56
Ladder installation 90
requirements 90
Ladder logic
diagram syntax 89
installation failure 91
prerequisites 91
print diagram 89
uninstalling 90
Ladder logic block
edit 52
Ladder logic diagram
source file 89
Ladder logic editor
create/modify functions 80–87
help 75
introduction 75
library functions 87–89
Library functions
ladder logic editor 87–89
List
show various lists of items 28
Load
a compound from a high-density diskette 30
179
B0193AV – Rev N Index
M
Menu item
selecting 3
Menus 4
Modify
ladder logic 80
station 13
Move
block within zone 42
objects in the compound or block/ECB list 32
N
Name
compound
block 14
P
Parameters
user-labeled sequence language 115
Paste
load from diskette 59
Paste buffer 17, 61
copy and append 27
copy to 26
Prerequisites
ladder logic installation 91
Print
a hard copy of the current file 57
sequence logic block listing function 107
sequence logic compilation listing function 107
R
Remove
all compounds, ECBs, and blocks from the configuration file 58
Rename
currently selected block or ECB 52
Requirements
CSA 13
Retrieve
settable configuration compound, block, and ECB parameter values 33
settable parameter values from station 33
Return to previous screen 61
180
Index B0193AV – Rev N
S
Save
action 61
all compound function entities to diskette 28
all the compounds in a control processor, volume, or paste buffer to a diskette 59
sequence logic source file to the library 99, 108
Scratchpad work volume 16
Selecting
control processor 18
functions 3
menu item 3
Sequence block
goto statements 145
HLBL statements 145
sendmsg 161
statement_labels 145
step_labels 145
Sequence block type
edit 52
Sequence code
access 113
installation 113
Sequence compiler limits 143
Sequence control block system error messages 169
Sequence control printed error messages 167
Sequence language
high level batch language (HLBL) 115
standard block exception handler (SBX) 122
subroutines 116–122
Sequence language statements
list of 107
Sequence logic 52, 95
copy source file from library 99, 101
exit functions 98
files 96
functions 97
print compilation listing function 107
print listing of this block function 107
save source file to library 99
source file 96
view compilation listing 110
view include library contents 111
view source library contents 112
Sequence logic file
archiving or debugging 110
Sequence logic source file
save to library 108
181
B0193AV – Rev N Index
Show
various lists of items 28
Statement labels 122
Statements
HLBL 145
Station
load from diskette 59
modifying 13
retrieving settable parameter values from 33
Store
settable parameter values 33
Syntax errors
ladder logic diagram 89
T
Template
Dependent block 103
Exception block 103
Independent block 103
sequence file source block 103
Transfer
AP hosting the selected volume 5
U
Uninstalling
ladder logic 90
User-labeled parameters 95, 115
V
View
sequence logic file compilation listing 110
Volume
load from diskette 59
Volume (Vol) key 18
W
Workfiles
storing settable parameter values into 33
Write Sequence block
algorithms 115
Z
Zones
background color 41
182
Index B0193AV – Rev N
183
B0193AV – Rev N Index