Download as pdf or txt
Download as pdf or txt
You are on page 1of 200

® B0193AV

REV N

I/A Series®
Integrated Control Configurator
March 30, 2001

LOGIC

CONTINUOUS SEQUENCE LOGIC


EXACT_MV

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.

Copyright 1990-2001 The Foxboro Company


All rights reserved

SOFTWARE LICENSE AND COPYRIGHT INFORMATION


Before using the Foxboro supplied software supported by this Foxboro documentation, you
should read and understand the following information concerning copyrighted software.
1. The license provisions in the Foxboro Software License for your system govern your
obligations and usage rights to the software described in this documentation. If any
portion of those license provisions is violated, The Foxboro Company will no longer
provide you with support services and assumes no further responsibilities for your sys-
tem or its operation.
2. All software issued by The Foxboro Company, and copies of the software that you are
specifically permitted to make, are protected in accordance with Federal copyright
laws. It is illegal to make copies of any software media provided to you by
The Foxboro Company for any purpose other than those purposes mentioned in the
Foxboro Software License.
Contents
Figures.................................................................................................................................... xi

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

2. The Compound Summary Access Utility ........................................................................ 13


CSA Conventions ................................................................................................................... 13
Selecting Compound Name .................................................................................................... 14
Searching by Character or Character String ............................................................................. 15
Searching for Compounds by Block Name .............................................................................. 15

iii
B0193AV – Rev N Contents

Searching for Compounds by Block Type ............................................................................... 16


Creating a New Compound from CSA ................................................................................... 16
Selecting the OK Key in CSA ................................................................................................. 17
Selecting the Vol Key in CSA .................................................................................................. 17
Selecting the Close Key in CSA ............................................................................................... 17
Selecting Station Type to Edit ................................................................................................. 18
Selecting a Control Processor to Configure ............................................................................. 18
Select Screen ........................................................................................................................... 19

3. Compounds, Blocks, and ECBs ....................................................................................... 21


ICC Basics and Conventions ................................................................................................... 21
Compound Functions ............................................................................................................. 21
Insert New Compound ...................................................................................................... 22
Edit Compound Parameters ............................................................................................... 25
Copy to Paste Buffer .......................................................................................................... 26
Copy and Append to Paste Buffer ...................................................................................... 27
Paste from Paste Buffer ....................................................................................................... 27
Save to Diskette .................................................................................................................. 28
Load from Diskette ............................................................................................................ 30
Move Functions ................................................................................................................. 32
Upload ............................................................................................................................... 33
Delete ................................................................................................................................. 34
Delete (Compound, Block, or ECB) .................................................................................. 34
Delete & Undelete (Compound, Block, or ECB) .......................................................... 34
Cancel ........................................................................................................................... 34
View Blocks/ECBs in this Compound ................................................................................ 35
Block/ECB Functions Display ................................................................................................ 35
View Compound List .............................................................................................................. 35
Insert New Block .................................................................................................................... 36
Block Name Window .............................................................................................................. 37
Block Type Window ............................................................................................................... 38
Show Block Type Names Window .......................................................................................... 39
Edit Block Parameters Window .............................................................................................. 40
Copy a Block .......................................................................................................................... 40
Block Order ............................................................................................................................ 41
Insert New ECB ...................................................................................................................... 42
ECB Functions Menu ............................................................................................................. 45
ECB Name Window ............................................................................................................... 46
ECB Type Window ................................................................................................................ 47
ECB Device Identification Window ........................................................................................ 48

iv
Contents B0193AV – Rev N

Copy ECB .............................................................................................................................. 48


Edit Block/ECB Parameters .................................................................................................... 49
Warning and Error Messages ................................................................................................... 50
Edit Sequence Logic ................................................................................................................ 52
Edit Ladder Logic ................................................................................................................... 52
Rename Block/ECB ................................................................................................................ 52

4. Menu Bar Functions........................................................................................................ 55


Show Menu ............................................................................................................................. 55
Diskette Directory ................................................................................................................... 56
FBM Menu ............................................................................................................................. 56
Fix All Function ...................................................................................................................... 56
Ladder Assignment Function .................................................................................................. 56
Print Menu ............................................................................................................................. 57
New Menu Pick ...................................................................................................................... 57
Checkpoint Menu Pick ........................................................................................................... 58
Maint Menu ........................................................................................................................... 58
Initialize .................................................................................................................................. 58
Format Floppy ........................................................................................................................ 58
Eject Floppy ............................................................................................................................ 58
LoadAll ................................................................................................................................... 59
SaveAll .................................................................................................................................... 59
SaveAll w/Fmt ......................................................................................................................... 60
Shrink ..................................................................................................................................... 60
LoadAll/SaveAll for Batch Processing ...................................................................................... 61
Buffer Menu Pick .................................................................................................................... 61
Cancel/Done ........................................................................................................................... 61
Exit Menu Pick ....................................................................................................................... 61

5. Block Parameter Connections ......................................................................................... 63


Mixed Data Types ................................................................................................................... 63
Boolean Connection Extensions .............................................................................................. 65
General Format of Boolean Connection Extensions ........................................................... 66
Boolean Extensions to Source Data .................................................................................... 67
Boolean Extensions to Source Status .................................................................................. 68
Boolean Extensions to Status Parameters ............................................................................ 69
Block Status Symbols ..................................................................................................... 70
Alarm Status Symbols .................................................................................................... 71

v
B0193AV – Rev N Contents

Packed Boolean Connection Extensions ........................................................................ 72


Defaults for Integer and Real Connections .............................................................................. 73

6. Editing Ladder Logic ....................................................................................................... 75


Entering and Exiting the Ladder Logic Editor ......................................................................... 75
Getting Help ........................................................................................................................... 75
Editing a Ladder Diagram ....................................................................................................... 76
Creating/Modifying Functions ........................................................................................... 80
Positioning Editing Cursor ............................................................................................ 80
Adding or Replacing a Symbol ...................................................................................... 82
Showing Symbols .......................................................................................................... 83
Connecting Two Rows .................................................................................................. 83
Deleting a Symbol ......................................................................................................... 84
Deleting a Rung Descriptor ........................................................................................... 84
Entering Text Associated with a Symbol ........................................................................ 84
Entering a Rung Descriptor ........................................................................................... 86
Adding or Deleting a Ladder Row ................................................................................. 87
Selecting Library Functions ..................................................................................................... 87
View Library ...................................................................................................................... 87
Copy From Library ............................................................................................................ 88
Save In Library ................................................................................................................... 88
Cancel ................................................................................................................................ 89
Printing a Ladder Diagram ...................................................................................................... 89
Checking Syntax ..................................................................................................................... 89
Ladder Installation .................................................................................................................. 90
Installation Requirements ................................................................................................... 90
Uninstallation .................................................................................................................... 90
Prerequisites for Ladder Installation ................................................................................... 91
Causes of Installation Failure .............................................................................................. 91
PLB Ladder Display Installation ......................................................................................... 91
50 Series Workstation Access ......................................................................................... 92
20 Series Workstation Access ......................................................................................... 92
Location of Ladder Displays .......................................................................................... 92
Configuring Ladder Display Location ................................................................................ 92

7. Editing Sequence Logic ................................................................................................... 95


Help ........................................................................................................................................ 96
Sequence Files ......................................................................................................................... 96
Source File ......................................................................................................................... 97
Compiler Files .................................................................................................................... 97
Sequence Logic Functions ....................................................................................................... 97
Cancel ................................................................................................................................ 98
Compile Source of this Block ............................................................................................. 98
Copy Source of this Block from Library ............................................................................. 99

vi
Contents B0193AV – Rev N

Delete Block Source from Library .................................................................................... 101


Done With Sequence ....................................................................................................... 103
Edit Source of this Block .................................................................................................. 103
Print Compilation Listing ................................................................................................ 107
Print Listing of this Block ................................................................................................. 107
Save Source of this Block to Library ................................................................................. 108
View Compilation Listing ................................................................................................ 110
View Include Library Contents ........................................................................................ 111
View Source Library Contents .......................................................................................... 112
Sequence Code Installation ................................................................................................... 113
50 Series Workstation Access ............................................................................................ 113
20 Series Workstation Access ............................................................................................ 113

8. Sequence Language........................................................................................................ 115


Algorithm Structure .............................................................................................................. 115
Heading ........................................................................................................................... 115
Subroutines ...................................................................................................................... 116
Subroutine Heading and Formal Arguments ............................................................... 117
Subroutine Local Variables .......................................................................................... 118
Subroutine Statements ................................................................................................. 119
Calling the Subroutine ................................................................................................ 119
Subroutine Examples ................................................................................................... 120
Subroutine Trace Mode ............................................................................................... 122
Standard Block Exception Handlers (SBXs) ..................................................................... 122
Main Statement Section ................................................................................................... 122
Steps and Step Labels ................................................................................................... 123
Data Types ............................................................................................................................ 123
Declaration of User Labeled Parameters ................................................................................ 124
Character Set ......................................................................................................................... 125
Vocabulary ............................................................................................................................ 125
Special Symbols ................................................................................................................ 125
Keywords ......................................................................................................................... 126
References ........................................................................................................................ 127
Internal References ...................................................................................................... 127
External References ...................................................................................................... 128
Reference Format ........................................................................................................ 128
Literals ............................................................................................................................. 129
Labels ............................................................................................................................... 130
Comments ....................................................................................................................... 131
Operator Remarks ............................................................................................................ 131
Expressions ............................................................................................................................ 131
String Expressions ............................................................................................................ 132
Arithmetic Expressions ..................................................................................................... 132
Operands .......................................................................................................................... 134
Operators ......................................................................................................................... 134
Functions ......................................................................................................................... 135

vii
B0193AV – Rev N Contents

Transfer Functions ...................................................................................................... 135


Arithmetic Functions ................................................................................................... 137
Array Functions ........................................................................................................... 137
Operator Order of Precedence .......................................................................................... 138
Data Type Checking ............................................................................................................. 139
Reference Connection Checking ........................................................................................... 139
Operational Errors ................................................................................................................ 139
Bad Status Attribute .............................................................................................................. 140
Preprocessor Directives .......................................................................................................... 140
File Inclusion ................................................................................................................... 141
Sequence Compiler Limits .................................................................................................... 142
Prior to the 4.2 Release ..................................................................................................... 142
Starting from the 4.2 Release ............................................................................................ 142
Sequence Compiler Limits Table .......................................................................................... 143

9. HLBL Statements.......................................................................................................... 145


Statement Syntax .................................................................................................................. 145
Statement Format Conventions ........................................................................................ 147
Abort .................................................................................................................................... 147
Actcases ................................................................................................................................. 147
Activate ................................................................................................................................. 148
Assignment, Scalar ................................................................................................................ 148
Scalar String Assignment .................................................................................................. 149
Scalar Arithmetic Assignment ........................................................................................... 149
Assignment, Array ................................................................................................................. 150
Bit_pattern ............................................................................................................................ 152
Exit ....................................................................................................................................... 153
Exitloop ................................................................................................................................ 153
For ........................................................................................................................................ 154
Goto ..................................................................................................................................... 155
If ........................................................................................................................................... 156
Monitor Case ........................................................................................................................ 157
Repeat ................................................................................................................................... 158
Retry ..................................................................................................................................... 159
Sendconf ............................................................................................................................... 160
Sendmsg ................................................................................................................................ 161
Set_sbxs ................................................................................................................................ 163
Start_timer ............................................................................................................................ 164
Stop_timer ............................................................................................................................ 165

viii
Contents B0193AV – Rev N

Wait ...................................................................................................................................... 165


While .................................................................................................................................... 166

Appendix A. Sequence Control Printed Error Messages .................................................... 167


Run-Time Data Conversion Errors ....................................................................................... 168
HLBL Semantics Violation Errors ......................................................................................... 168
Environmental Interaction Errors .......................................................................................... 169
Sequence Control Block System Errors ................................................................................. 169
CPGET/CPSET Error Messages ........................................................................................... 171

Index .................................................................................................................................. 175

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.

Keys Used in ICC


In addition to the standard alphanumeric keys, ICC recognizes keys (refer to Table 1-1) that
direct:
♦ Cursor movement
♦ Deletions
♦ Entries.

2
1. Introduction B0193AV – Rev N

UNIX Platform Users Only:


Ladder logic uses other keys as well, for example, the function keys, Escape key, and Insert, to
name a few.

All Users:
Table 1-1 describes the general control keys.

Table 1-1. Cursor Movement

Key or Keys Function


Horizontal Arrows Move cursor horizontally to next or previous character position.
Vertical Arrows* Move cursor vertically to corresponding position in next or
(One Line Scroll) previous row.
5 (Numeric Keypad) Select an entry field once the cursor is positioned.
Backspace Delete previous character of the current field (if any).
Delete Delete current character – cursor does not move.
Insert Insert character(s) at the current cursor position.
Return/Enter Press to confirm user input expected by the ICC.
Shift+Delete Delete all characters on current line in the parameter list.
Shift+End Move cursor to the end of the current entry field.
Shift+Home Move cursor to the beginning of the current entry field.

* Or use pointing device

One Function at a Time


In general, ICC functions must be completed or cancelled before another function can begin. For
example, if you are in the process of inserting a block, you cannot select another action from the
menu bar until the insert is complete.
Exceptions are Help and Show.

Selecting Functions and Menu Items


Some functions can be selected either by pointing device or keyboard.
When the ICC is expecting input from a pointing device, this document uses Select (function or
menu item).
When the ICC is expecting input from the keyboard, this document uses Press (key name) or
Type.

One Function at a Time 3


B0193AV – Rev N 1. Introduction

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.

Invoking the ICC


The Integrated Control Configurator resides with other configurators in the process engineer’s
environment.

UNIX Platform Users:


From the engineer’s environment at a UNIX-based workstation processor (WP), application
workstation (AW), or personal workstation (PW), select:
Config
from the menu bar. From the list of configurators that appears, select:
Control_Cfg
which takes you to one of the following submenus based on the hosting AP of the WP:

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.

Windows NT Platform Users:


From the engineer’s environment at an AW70, select:
Config

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.

Configuring AP Hosts, CP Stations, and Volumes


UNIX Platform Users Only:
Initial selection of the following options allows you to configure a menu listing all AP hosts, CP
stations, or volumes from which or for which you wish to directly invoke a ICC session:
♦ CIO_AP_Cfg
♦ CIO_STN_Cfg
♦ CIO_VOL_Cfg.
After initial selection of the CIO_AP_Cfg, CIO_STN_Cfg, and CIO_VOL_Cfg, a dialog box appears
(refer to Figure 1-1).

Figure 1-1. AP Host_Cfg Dialog Box

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.

Selecting a Sequence Editor


UNIX Platform Users Only:
Selecting CIO_SeqEdt from the AP20 menu presents the dialog box (refer to Figure 1-2) for con-
figuring a sequence block text editor (vi or ice). A choice of editor is allowed only on an AP20 or
PW.

6
1. Introduction B0193AV – Rev N

Figure 1-2. CIO_SeqEdt Dialog Box

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.

Editable Work Areas


The editable work areas of the ICC (refer to Figure 1-3) are configuration files and a paste buffer.
Configuration files consist of both station files and library volumes and are accessed from the CSA
utility.

UNIX Platform Users Only:


Configuration files can also be accessed from a direct menu pick of an AP, station, or volume
accessible from the Control_Cfg submenu.

All Users:
The Paste Buffer is an ICC function, and is accessed from the ICC menu bar. Editable file areas
are illustrated below.

Editable Work Areas 7


B0193AV – Rev N 1. Introduction

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

Figure 1-3. Editable Work Areas

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.

ICC Print Configuration


Following is a discussion of printer configuration for the Integrated Control Configurator
(ICC). The default printer configuration for ICC printed output is the Unix/Solaris standard of
66 lines per page. A partial page is filled out by blank lines up to a full page size of 66 lines. If you
want a different page format, you perform the reconfiguration by modifying the file print_cfg.usr.

Printer Configuration Files


The file print_cfg.usr is located in the directory /opt/fox/ciocfg/ciocfg_printers. There are two
other files, print_cfg.src and print_cfg.old.
♦ print_cfg.usr is the version of the file actually used by the ICC. You modify this file to
effect changes in ICC printing format.
♦ print_cfg.src is the configuration file initially installed as part of the ICC package.
♦ print_cfg.old is a reference version of print_cfg.usr that is used by the software instal-
lation process to determine whether changes have been made to the print_cfg.usr file.
During the software installation process, the new version of the configuration file, print_cfg.src is
copied to print_cfg.usr and print_cfg.old. Any previous versions of these files are lost.
If you have modified print_cfg.usr, the new file print_cfg.src is not copied and warning messages
are generated in the ICC install log. This means that if you have customized the printer configu-
ration, a new installation of the ICC will not disable the customized file. The ICC install process
determines whether the file print_cfg.usr has been modified by comparing it with the previously
saved file print_cfg.old. If the files are different, it is assumed that you have modified the file
print_cfg.usr.

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 Parameters


The file print_cfg.usr contains three parameters as follows:
♦ USE_NEW_HEADERS can be set to the values yes (default) or no. For the
I/A-Series Release 6.3, the page headers of PLB ladder diagram printouts and
Sequence listings have been changed to include the applicable compound:block name.
The page headers for compound and block reports now include the title of the report
as depicted on the ICC PRINT menu. If for some reason this is not desired,
USE_NEW_HEADERS should be set to no. Normally, this parameter would not be
changed.
♦ LINES_PER_PAGE can be set to an integer value from 1 to 200. The usual range is
40 to 80. The default is 66, the Unix standard. This number is the number of lines
per page of output. This parameter is used in combination with the EJECT parameter
as explained under the section "Printer Configuration".
♦ EJECT can be set to no (default) or yes. If set to yes, a page eject is produced follow-
ing each printed page. If set to no, a partial page will be filled with blank lines out to
the number of lines as defined by the LINES_PER_PAGE parameter.

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.

Notes On Printer Configuration


If you wants to use all possible lines of a printer (for example 66), and also terminate the page
with a page eject, you must proceed as follows.
1. Set EJECT to yes.
2. Set LINES_PER_PAGE equal to the actual printer page size minus one (65 in this
example) because if the number of lines is equal to the page size, the system will pro-
vide a local page eject and then the ICC will add another one. This results in a printed
page followed by an empty page, which is not desirable.

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.

ICC Print Configuration 11


B0193AV – Rev N 1. Introduction

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 .

Selecting Compound Name


The initial display of the Compound Summary Access is illustrated in Figure 2-1.

Figure 2-1. Compound Summary Access

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.

Searching by Character or Character String


1. Select the Compound Name field with the pointing device to illuminate a
12-character search field.
2. Type in a 1 to 12-character string. All compound names are in full caps. However, you
may type in lowercase characters. These are automatically converted to uppercase by
the system.
3. The UNIX-like wild card characters ? and * may be specified in names. ? matches any
single character. * matches any group of characters.
4. Press Enter. The utility searches for, finds, and lists all the compounds in the system
that start with the search string that you typed in. Any others are removed from the
window.
You can use this search method for block names and types as well.

Searching for Compounds by Block Name


1. Select the Block Name Search field with the pointing device to illuminate a
12-character search field.
2. Enter the desired name. Include wild card characters to search for multiple names.
3. Press Enter (or Return) to initiate the search.
4. If there are no compounds that contain the block name for which you are searching in
the system, the list of compounds disappears and a blank window appears.
5. If there are compounds in the system that contain the block for which you are search-
ing, the appropriate compounds appear in the window and all others disappear.

Searching by Character or Character String 15


B0193AV – Rev N 2. The Compound Summary Access Utility

Searching for Compounds by Block Type


1. Select the Block Type Search field with the pointing device to illuminate a
12-character search field.
2. Enter the desired block type. Include wild card characters to search for multiple types.
3. Press Enter (or Return) to initiate the search.
If there are no system compounds in the system that contain a block of the type for which you are
searching, the list of compounds disappears and a blank window appears.
If there are compounds in the system that contain a block of the type for which you are searching,
the appropriate compounds appear in the window and all others disappear.

Creating a New Compound from CSA


You can create compounds both from the CSA utility and the Compound Functions display of
the ICC. The advantage to creating compounds from CSA is that the newly created compound
resides in the “scratchpad” work volume.
This enables you to build compounds first, then copy them to an appropriate ICC file when you
wish. See “Copy to Paste Buffer” on page 26 for copy information.
To create a compound from the CSA utility:
1. Select the Compound Name field with the pointing device to illuminate a
12-character search field.
2. Press the Enter (or Return) key three times to get to the Choice field.
3. Type in a system-unique name. You must not give compounds names that are:
a. the same as a letterbug of a CP or processor, or
b. the letterbug of a CP or processor, followed by _VSTA, _STA, _VECB , or _ECB .
For example, if a CP has the letterbug UCE001 , do not assign the name UCE001
or UCE001_ECB to a compound. However, you can use UCE001_ECB07 , for
example.
When building compounds that are to be copied and pasted to another location,
assign names different from their “final destination” name. Otherwise the require-
ment for system-unique names complicates the copy and paste procedures.
For example, when building a compound TOWER1 to be copied later to a CP,
build it as TOWER1X in the volume and rename it TOWER1 as you “copy” or
“paste” to the destination CP.
4. Press Enter. The name that you entered appears in the Choice field and the selection
box moves up to the compound name field.
5. If you made a typing error, you can cancel the choice by pressing the Enter key again
and repeating Steps 3 and 4.
6. Once the name is correct, select OK at the bottom left of the display. The work vol-
ume appears with the newly created compound, with its default values, listed at the
top of the compound list in the work volume. All of the appropriate compound/block
editing functions are now available.

16
2. The Compound Summary Access Utility B0193AV – Rev N

Selecting the OK Key in CSA


Selecting the OK key causes you to exit from the CSA utility. You can then:
1. View or edit the compound whose name appears in the Choice field.
2. If the Choice field is empty, you enter the work volume directly from the CSA utility
without selecting a particular compound.

Selecting the Vol Key in CSA


1. Select the Vol key at the bottom of the display (see Figure 2-2). Selecting Vol causes
you to exit from the CSA utility and calls up the Select Station Type to Edit menu.
2. Select Edit Station or Edit Library Volume from this menu.
3. If you select Edit Library Volume, a list of library volumes appears. Select the volume
of your choice. Subsequent editing is done in an inactive mode.
4. Selecting Cancel brings you back to the Select a Station to Edit menu.

Figure 2-2. Selecting Volume Key from the CSA Utility Screen

Selecting the Close Key in CSA


If there are no compounds in the Paste Buffer, selecting Close causes you to exit the ICC.
If there are compounds in the Paste Buffer when you select the Close key, an error dialog box
appears. You must clear the Paste Buffer before you are allowed to exit.

Selecting the OK Key in CSA 17


B0193AV – Rev N 2. The Compound Summary Access Utility

Selecting Station Type to Edit


Selecting the Volume (Vol) key from the CSA utility calls up the Select Station Type to Edit menu
with the choices:
♦ Edit Station
♦ Edit Library Volume
♦ Cancel.
Selecting Cancel brings you back to the CSA utility menu.
Selecting Edit Station displays the Select a Control Processor to Configure menu.
Whenever you select a target station or library volume to edit, its corresponding compound data-
base file is locked. You receive a copy of this file.

Selecting a Control Processor to Configure


Selecting a control processor from the Select a Control Processor to Configure menu:
♦ Retrieves that station’s current data files.
♦ Puts the file in an Active editing mode.
♦ Lists the compounds in that station.
♦ Indicates the station name and AP letterbug, STA = [station name] @ AP [letterbug],
and that the station is Active. The Active/Inactive mode status appears on the line
under the menu bar function line.
♦ Calls up the Compound Functions menu.
♦ Highlights the keys in the system menu bar to show that they are enabled.
Selecting a station whose database file has been “locked” displays the dialog box illustrated in
Figure 2-3.

Figure 2-3. Override Lock Display

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.

Figure 2-4. Compound and Block Overview Display

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.

Table 2-1. Detail Buttons

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.

ICC Basics and Conventions


This section describes the primary functions of the ICC. Edit Station selection (refer to
Figure 3-1) is used to activate these functions. Edit Station allows you to see the compounds in a
specific control processor and enables various function keys in the system menu bar.

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

Figure 3-1. Compound Function Display

Insert New Compound


Select Insert New Compound from the Compound Functions menu and fill in a valid name in the
name definition field. This causes a new compound to be created with default parameters and
inserted before (that is, in front of) the currently highlighted compound or End position.
Selecting End causes the compound to be inserted at the end of the list. (This list order can always
be changed.)

22
3. Compounds, Blocks, and ECBs B0193AV – Rev N

The procedure is detailed below.


1. Position the highlight bar on a compound or End, as shown in Figure 3-2.

Mixer has been highlighted, so the


new compound will be inserted in front
of it in the list.

Figure 3-2. Compounds Functions Menu

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

Enter the name of


the proposed new
compound within
the yellow data
entry field.

Figure 3-3. Compound Name Window

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.

Figure 3-4. Compound Parameters List

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.

Edit Compound Parameters


After you have selected a compound to edit from the summary list, select Edit Compound Param-
eters from the Compound Functions menu. This retrieves a copy of the current parameter list of
the highlighted compound. This list contains parameter labels with adjoining fill-in fields. If the
compound has never been edited, it contains default values where applicable.

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.

Copy to Paste Buffer


The Copy to Paste Buffer function is available from the Compound Functions menu. It works
only with compounds and is not selectable if the current buffer is the Paste Buffer.
Copy to Paste Buffer deletes the present contents of the Paste Buffer and copies the selected com-
pound to the buffer.
If you want to queue a list of compounds in the Paste Buffer for a multiple paste function, use the
Copy and Append to Paste Buffer function.
The copy functions also copy any source code of Sequence blocks (and, in the case of UNIX plat-
form users, PLB blocks) contained in the compound.
To copy a compound to the Paste Buffer:
1. Move the highlight frame to the appropriate compound in the left window to select it.
2. Select Copy to Paste Buffer from the Compound Functions menu.
3. Since compound names must be unique within the system, a dialog box returns the
name of the selected compound and asks you to rename it for the copy function.
4. Move the cursor to the field next to the new name request and select it with the point-
ing device.
A boxed field is highlighted and the ICC waits for characters to be input from the key-
board.
5. Type in the new name and press Enter (Return).
6. Select Done.
If compounds already exist in the Paste Buffer, a dialog box notifies you that the copy
function deletes any compounds in the Paste Buffer.
7. Select Yes or No to the question, Empty Paste Buffer, Are You Sure?
8. Select Yes to delete the contents of the Paste Buffer and copy the highlighted com-
pound into the buffer.
9. To verify that the copy function was successful, select Buffer from the menu bar.
By selecting Buffer, you can enter the Paste Buffer area and edit the copied compound
as you would in a ICC file.
10. Select Buffer again to return to the ICC file.
After a successful Copy to Paste Buffer function, the Paste from Paste Buffer function is high-
lighted and becomes selectable from the Compound Functions menu.
If you want the copied compound to assume a particular position in the summary list, select its
position before you select Paste from Paste Buffer.

UNIX Platform Users Only:


The paragraph below describes how the Copy to Paste Buffer function could be used in a proce-
dure that moves a compound from one control station to another (to balance loading, for exam-
ple).

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.

Copy and Append to Paste Buffer


Copy and Append to Paste Buffer is selectable from the Compound Functions menu when the
Paste Buffer already has some contents.
This function is not selectable from the Paste Buffer.
It mirrors the Copy to Paste Buffer function with the exception that it does not delete the buffer
contents before it performs the copy. If any compounds are already in the buffer, it appends the
copied compound to the present list.
Copy and Append to Paste Buffer allows you to queue a number of compounds in the buffer for
a multiple paste operation.
Selecting Paste from Paste Buffer causes the entire contents of the Paste Buffer to move to the
summary list. If you want the buffer contents to assume a particular position in the summary list,
select the position before you select Paste from Paste Buffer.

Paste from Paste Buffer


This function is only available from the Compound Functions menu, and is only selectable when
the Paste Buffer has contents.
Selecting Paste from Paste Buffer causes any compounds that exist in the Paste Buffer to be
moved to the ICC file, in the preselected position in the summary list.
1. Select a compound name (or End) from the left ICC window. This selection indicates
the position that the incoming compound takes in the compound summary list.
2. Select Paste from Paste Buffer. The copied compound(s) are inserted above the
selected compound.
If the Copy to Paste Buffer function was used to copy the compound to the Paste Buffer, only one
compound is moved into the list.
If the Copy and Append to Paste Buffer function was used to copy compounds to the Paste
Buffer, the entire buffer contents are moved into the list.
As each compound is successfully inserted into the station or volume, it is added to the workfile
and display list. If an insert operation fails, the Paste from Paste Buffer process stops, and an
error message is displayed.
You can then edit the remaining contents of the Paste Buffer and retry the paste operation.

UNIX Platform Users Only:


The Paste from Paste Buffer function may be part of a procedure to move a compound from one
control station to another (to balance loading, for example). See “Copy to Paste Buffer” on
page 26.

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.

Figure 3-5. Save to Diskette Dialog Box

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

Figure 3-6. Selected Device

6. In the Host Name field, enter the host letterbug.


7. In the Device Name field, enter one of the following:
UNIX Platform Users Only:
/dev/fh0 (for an AP20 or PW)
/dev/fd0 (for a 50 Series AP/AW)
or
Windows NT Platform Users Only:
a:
8. Select Done to continue the Save to Diskette operation with Step 2, or select Cancel
to exit the operation.
If the selected compound name already exists on the diskette, you are given the option of replac-
ing the compound on diskette, renaming the selected compound, or cancelling the operation.

! 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.

UNIX Platform Users Only:


A WP failure during a Save to Diskette operation may cause the error message Floppy Disk
Mount Failed which indicates that the diskette is still mounted to the file system of the associated
AP. To recover when using an AP20-hosted drive, access the VT100 mode on the AP20 hosting
the disk drive and enter the command:
umount /dev/fh0
To recover when using a 50 Series host drive, access the VT100 mode on the host for the disk
drive and enter the commands:
umount /dev/fd0
eject
The diskette is unmounted and ejected from the drive.

Compound Functions 29
B0193AV – Rev N 3. Compounds, Blocks, and ECBs

Load from Diskette


This function allows you to load a compound and its associated blocks into the configuration file
or Paste Buffer from a high density diskette in the designated drive of the designated host AP.

! 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.

To load a compound from diskette:


1. Select Load from Diskette from the Compound Functions menu. This displays the
dialog box illustrated in Figure 3-7. If the desired host and drive have been automati-
cally listed in this dialog box by the ICC, go to the next step; otherwise go to Step 5.

Figure 3-7. Load from Diskette

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

Figure 3-8. Select Device for Load from Diskette

6. In the Host Name field, enter the host letterbug.


7. In the Device Name field, enter one of the following:
UNIX Platform Users Only:
/dev/fh0 (for an AP20 or PW)
/dev/fd0 (for a 50 Series AP/AW)
or
Windows NT Platform Users Only:
a:
8. Select Done to continue the load operation with Step 2, or select Cancel to exit the
operation.
If the compound cannot be located on the diskette, the ICC displays a notification message and
the operation is cancelled.
If the compound exists on diskette, but already exists in the system, you are given the option of
renaming the selected compound as it is loaded from the diskette, or cancelling the operation.
Load from diskette copies from the currently active disk:
♦ The compound parameter list
♦ All associated block parameter lists
♦ All ECB parameter lists
♦ All associated PLB (UNIX platform users only) and sequence block source files.

UNIX Platform Users Only:


A WP failure during a Load from Diskette operation may cause the error message Floppy Disk
Mount Failed, which may indicate that a diskette is still mounted to the file system of the associ-
ated AP. To recover when using an AP20-hosted drive, access the VT100 mode on the AP20 host-
ing the disk drive and enter the command:
umount /dev/fh0
To recover when using a drive hosted by a 50 Series AP/AW, access the VT100 mode on the
AP/AW hosting the disk drive and enter the commands:
umount /dev/fd0
eject

Compound Functions 31
B0193AV – Rev N 3. Compounds, Blocks, and ECBs

The diskette is automatically unmounted and ejected from the drive.

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 **

Figure 3-9. Moving Objects

To move one object in the list:


1. Click on the name of the 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
rehighlights 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. This moves the selected object to a position immediately in front of
the target position, and deactivates the move functions in the menu.
To move more than one object in the list:

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

1. Selecting Upload Compound Parameters from the Compound Functions display


stores the compound, block, and ECB parameter values of the selected compound
into the ICC workfiles.
2. Selecting Upload Block/ECB Parameters from the Block/ECB Functions display
stores the block or ECB parameter values of the selected block or ECB into the ICC
workfiles.
3. Selecting Upload from the menu bar’s Maint menu stores the compound, block, and
ECB parameters of the selected station into the ICC workfiles.

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:

Figure 3-10. Delete and Undelete

Delete (Compound, Block, or ECB)


To delete a compound, block, or ECB, select Delete in the dialog box. This sends a delete request
to the control station. You cannot delete the station compound, station block, ECB compound,
or the primary ECB.

Delete & Undelete (Compound, Block, or ECB)


The Delete & Undelete key moves a selected compound/block or ECB in and out of a temporary
delete buffer. The temporary delete buffer is not an editable area.
The position of the compound or block in the database is not changed.

Cancel
Selecting Cancel discontinues the operation and returns to the previous display.

34
3. Compounds, Blocks, and ECBs B0193AV – Rev N

View Blocks/ECBs in this Compound


This function is available from the Compound Functions menu.
♦ It replaces the compound list in the left window with the Block/ECB list.
♦ It replaces the Compound Functions menu with the Block/ECB Functions menu.
When the block list appears, the highlight bar illuminates the first block item in the list which is
not in the ECB zone. This is either a continuous block or the End CON1 marker.

Block/ECB Functions Display


The Block/ECB Functions display is illustrated in Figure 3-11.

Figure 3-11. Block/ECB Functions Display

View Compound List


This function is available from the Block/ECB Functions menu.
♦ It replaces the Block/ECB list in the left window with the compound list.
♦ It replaces the Block/ECB Functions menu with the Compound Functions menu.

Block/ECB Functions Display 35


B0193AV – Rev N 3. Compounds, Blocks, and ECBs

When the compound list appears, note that the highlight bar illuminates the compound name
associated with the previous block/ECB list.

Insert New Block


Selecting Insert New Block/ECB in the Block/ECB Functions display allows you to create:
♦ A copy of a standard system block or ECB type with default parameters where
appropriate.
♦ A copy of an existing block or ECB with the parameter settings of that copied block.
Before you can insert a new block or ECB, you must create a new compound or select
a compound in which the block or ECB is to reside. Following this action, the View
Blocks/ECBs in this Compound option is highlighted in the Compound Functions
menu. Selecting it provides access to the Block/ECB Functions menu for inserting a
new block or ECB.

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.

To copy a standard system block (for example, AIN or MCOUT):


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 Dis-
play” on page 35).
2. Select Insert New Block/ECB from the Block/ECB Functions menu. This displays a
window for Block Definition (see “Block Name Window” on page 37).
3. For the Name, enter a valid (full caps, unique within the compound, up to 12-charac-
ters) name for the block to be created. Press Enter (or Return). If the name is accepted,
the Block Type window appears (see “Block Type Window” on page 38).
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. For the Type, there are two entry options:
a. Enter (in full caps) the valid, block type name and press Enter, or
b. Select Show from the menu bar and from the Show pull-down menu select Block
Type Names to list all of the block types in the right window of the display (see
the Show Block Type Names window).
Selecting a block type from this list automatically transfers it to the Type field.
Select Done.
Select Cancel to abort an insert operation.
5. After the block type is entered, the ICC checks its validity. If valid, the block is
inserted. The new block contains the default parameters of the standard block type.

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.

Block Name Window


Refer to Figure 3-12 when entering a new block name.

Enter the name of the proposed


new block within the yellow data
entry field.

Figure 3-12. Enter New Block Location

Block Name Window 37


B0193AV – Rev N 3. Compounds, Blocks, and ECBs

Block Type Window


Figure 3-13 illustrates the location where the block type is entered.

Enter the type of


the proposed new
block within the
yellow data entry
field.

Figure 3-13. Enter Block Type

38
3. Compounds, Blocks, and ECBs B0193AV – Rev N

Show Block Type Names Window


Refer to Figure 3-14 when showing block type.

Select the block type name


from the Show Block Type
names window which displays
the name within the yellow
data entry field.

Figure 3-14. Show Block Type

Show Block Type Names Window 39


B0193AV – Rev N 3. Compounds, Blocks, and ECBs

Edit Block Parameters Window

Edit block
parameters as
required

Figure 3-15. Edit Block Parameters

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

♦ Pre-sequence continuous control blocks (CON1)


♦ Sequence control blocks (SEQ)
♦ Post-sequence continuous control blocks (CON2)
♦ Data blocks.

Figure 3-16. Block Order within a Compound

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.

Insert New ECB


Defining Fieldbus devices for a control station (or AW70 processor) consists of installing the
appropriate ECBs in the ICC database.

UNIX Platform Users Only:


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.
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.

42
3. Compounds, Blocks, and ECBs B0193AV – Rev N

Windows NT Platform Users Only:


You can install and manipulate the ECBs in a manner similar to control blocks.
You can configure up to 36 Fieldbus devices, that is, FBMs, FBPs, and FBCs and 120 ECBs.

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.)

6. Perform either Step a or b as appropriate:


a. For ECBs 43, 44, and 45, enter the Fieldbus device hardware type value in the
Hwtype entry field. Entering the hardware type displays a list of all parameters for
that ECB.
b. For all other ECBs, enter the Fieldbus device hardware type value in the Hwtype
field.
7. Enter the Fieldbus device software type value.
8. Enter the expander type value for the FBM, if required.

Insert New ECB 43


B0193AV – Rev N 3. Compounds, Blocks, and ECBs

UNIX Platform Users Only:


For Fieldbus device hardware, software, and expander type values, if the Dev_id
value was defined to the System Configurator/Definition, the defaults for Hwtype,
Swtype, and Extype are from that configuration, and probably do not need to be
changed. However, you can still change them at this point if you desire.
All Users:
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 contains the default parameters of the standard ECB type.
9. Select Cancel before Done (or Enter) to abort an insert operation.
10. Select Done or press Enter. (To abort an insert operation, select Cancel.)
11. 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 Block/ECB Parameters function.

44
3. Compounds, Blocks, and ECBs B0193AV – Rev N

ECB Functions Menu


Refer to Figure 3-17 when inserting a new ECB.

FBM04 has been


highlighted, so the new
ECB will be inserted in
front of it in the list.

Figure 3-17. Insert New ECB

ECB Functions Menu 45


B0193AV – Rev N 3. Compounds, Blocks, and ECBs

ECB Name Window


Refer to Figure 3-18 when entering the name of a new ECB.

Enter the name of the


proposed new ECB within
the yellow data entry field.

Figure 3-18. Enter Name of New ECB

46
3. Compounds, Blocks, and ECBs B0193AV – Rev N

ECB Type Window


Refer to Figure 3-19 when entering the ECB type.

Enter the type of the proposed new


ECB within the yellow data entry
field.

Refer to the Show Legal


FBM/ECB combinations
window.

Figure 3-19. ECB Type Window

ECB Type Window 47


B0193AV – Rev N 3. Compounds, Blocks, and ECBs

ECB Device Identification Window


Figure 3-20 shows the Device Identification window.

Software Type
Expander Type
Hardware Type

Enter the proposed new


DEV_ID (Fieldbus device
letterbug) within the yellow
data entry field.

Refer to the Show Configured


ECB window for a list of all
system configured Fieldbus
device letterbugs.

Figure 3-20. ECB Device Identification Window

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.

Edit Block/ECB Parameters


You can either choose to Edit Standard Block/ECB Parameters or Edit All Block/ECB Parameters
from the Block/ECB Functions menu. Either selection retrieves the selected block or ECB along
with its parameter list. In this scrollable list, each parameter name has an adjoining fill-in value
field. The Control Configurator allows you to edit ECBs in a manner similar to control blocks.
If a block has never been edited, the field contains the default values for the parameters. You can
edit any field in this list except the block name and type. If the block is a (UNIX platform users
only) PLB or sequence block type, you can also modify any source code associated with the
selected block.
If an ECB has never been edited, the field contains the default values for appropriate parameters.
You can edit any field in this list except:
♦ ECB Name (NAME)
♦ ECB Type (TYPE)
♦ Letterbug (DEV_ID).

UNIX Platform Users Only:


ICC allows local and peer-to-peer connections for compound and block parameters. Local con-
nections are input parameter connections to source parameters in the same control station. Peer-
to-peer connections are input parameter connections to source parameters in different control sta-
tions.

Edit Block/ECB Parameters 49


B0193AV – Rev N 3. Compounds, Blocks, and ECBs

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.

NT Platform Users Only:


ICC allows local connections for compound and block parameters. Local connections are input
parameter connections to source parameters in the AW70.
ICC also allows local Boolean input connections to source data of any data type. When configur-
ing 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
the 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.

Warning and Error Messages


When a compound or block is sent to the control station by the ICC, a warning or error message
may be returned. An error, or failure message causes total rejection of all newly entered parame-
ters, including those which were not in error.
A warning message causes entry of the compound or block into the control processor. The block
parameter window is redisplayed to give you an opportunity to correct the erroneous parameter
without re-entering the other new parameters. If you cancel out of the parameter window, all of
the changed parameters, including the erroneous one, are retained in the control processor. This
results in the block being installed in an “undefined” state. You must correct the errors in order to
properly execute the block. The following is a list of warning messages that can be generated when
a compound or block is sent to the control station by the ICC. ICC retains in its work file an
incorrect configuration that causes a warning message, as a visual aid in correcting the error.

50
3. Compounds, Blocks, and ECBs B0193AV – Rev N

UNIX Platform Users Only:


The warning messages are:
“W43 – INVALID PERIOD/PHASE COMBINATION”
“W44 – INVALID ENGINEERING RANGE”
“W45 – CONFIGURATION ERROR IN STEP”
“W46 – INVALID INPUT CONNECTION”
“W47 – INVALID PARAMETER CONNECTION”
“W48 – INVALID BLOCK OPTION”
“W49 – INVALID BLOCK EXTENSION”
“W50 – INVALID SIGNAL CONDITIONING INDEX”
“W51 – INVALID HARDWARE/SOFTWARE TYPE”
“W52 – INVALID I/O CHANNEL/GROUP NUMBER”
“W53 – INVALID PARAMETER VALUE”
“W54 – ECB DOES NOT EXIST”
“W55 – CONTROLLER DOES NOT EXIST”
“W56 – INVALID CONTROLLER MODE”
“W57 – TUNING_CONSTANT LINKED”
“W58 – INSTALL ERROR; DELETE/UNDELETE BLOCK”
“W59 – DUPLICATE OUTPUT CHANNEL”

UNIX Platform Users Only:


The error messages are:
“E0 – NO ERROR”
“E1 – MISSING EQUALS SIGN”
“E2 – MISSING SEMICOLON”
“E3 – EXCEEDED SEQUENCE CODE SPACE”
“E4 – EXCEEDED MAXIMUM BLOCK SIZE”
“E5 – INVALID OPERATION”
“E6 – MISSING END KEYWORD; DO DELETE/UNDELETE”
“E7 – MISSING START KEYWORD”
“E8 – MISSING OPERATION KEYWORD”
“E9 – MISSING/INVALID TYPE KEYWORD”
“E10 – INVALID SEARCH TYPE
“E11 – MISSING TYPE OF SUBLIST”
“E12 – CANNOT DEFINE LIST TYPE”
“E13 – CANNOT FIND PARAMETER DEFINITION”
“E14 – CANNOT FIND BLOCK DEFINITION”
“E15 – INVALID PACKET TYPE; CANNOT FREE MEMORY”
“E16 – COMPOUND OR BLOCK NOT FOUND”
“E17 – UNABLE TO INSERT BEFORE THIS BLOCK”
“E18 – DATE/TIME NOT SET; USE SMDH TO SET TIME”
“E19 – MISSING NAME KEYWORD”
“E20 – INVALID BLOCK TYPE”
“E21 – BLOCK NOT FOUND”
“E22 – UNABLE TO OBTAIN DATE/TIME”
“E23 – INCOMPLETE ECB PATHNAME”
“E24 – LOCAL CONNECTION ERROR”
“E25 – REMOTE CONNECTION ERROR”
“E26 – HEADER ALLOCATION ERROR”
“E27 – ADDRESS LINK ERROR”
“E28 – INVALID SOFTWARE/HARDWARE TYPE”
“E29 – IPC ERROR”
“E30 – COMPOUND OR BLOCK ON SCAN”
“E31 – LOCATE PARAMETER DEFINITION ERROR”

Warning and Error Messages 51


B0193AV – Rev N 3. Compounds, Blocks, and ECBs

“E32 – OBJECT MANAGER OMOPEN FAILED”


“E33 – DATA BASE OPERATION IN PROGRESS”
“E34 – MISSING SEQUENCE BLOCK SIZE”
“E35 – INSUFFICIENT MEMORY FOR BLOCK”
“E36 – NON–CONNECTABLE PARAMETER”
“E37 – LINKAGE TYPE NOT COMPATIBLE”
“E38 – INCORRECT INTERPRETIVE CODE SIZE”
“E39 – INVALID BLOCK SIZE”
“E40 – COMPOUND OR BLOCK ALREADY EXISTS”
“E41 – UNLINKED INPUT SECURED; CHECK OM LISTS”
“E42 – INVALID/DUPLICATE DEVICE ID”

Edit Sequence Logic


This function is not selectable until you have named and defined a block as one of the following
sequence block types: MON, EXC, DEP, IND. The definition procedure is the same for all
blocks.
When you select Edit Sequence Logic, ICC calls the sequence domain and passes to it the
sequence block name, type, and a copy of the working sequence source file. The initial working
sequence source files are skeleton files, which are only templates to use as guides in laying out the
actual sequence code.
Display control then shifts to the sequence domain for implementation. It retains display control
until you exit sequence Logic and return to the Block/ECB Functions display.

Edit Ladder Logic


UNIX Platform Users Only:
This function is not selectable until you have named and defined a block as type PLB. The defini-
tion procedure is the same for all blocks.
After naming and defining the block, select Done. This creates a ladder logic block with default
values where appropriate.
Notice that the Edit Ladder Logic function in the Block/ECB Functions display is now high-
lighted and selectable.
When you select Edit Ladder Logic, ICC calls the ladder logic domain and passes it the current
station or library volume letterbug, compound name, and block name.
Display control then shifts to the ladder logic domain for implementation. It retains display con-
trol until you exit ladder logic and return to the Block Functions menu.
Refer to Chapter 7 “Editing Sequence Logic” and Chapter 8 “Sequence Language” for further
details.

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

1. Select a block or ECB name from the summary list.


2. Select Rename Block/ECB from the Block/ECB Functions menu.
3. A dialog box returns the present name and asks you to enter a new name.
4. Key in the new name (which must be unique within the compound).
5. Once the name is accepted, the Block/ECB display is updated with the new name.

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).

UNIX Platforms Only:


♦ Configured ECBs (System Configurator/Definition ECBs)
♦ Legal FBM/ECB Combinations
♦ SPECTRUM FBP Configuration
♦ SPECTRUM UCM I/O Cards
♦ SPECTRUM UIO I/O Cards
♦ SPECTRUM FIO I/O Cards
♦ SPECTRUM UFM I/O Cards.
Selecting Cancel causes the menu to disappear and the previous display to reappear. Any other
selection causes the menu to disappear and a new window to open at the right of the display. A
scrollable list appears in this window. If you select one of the items in this list and there is a cur-
rently open fill-in field, the selected item is copied to the fill-in field, replacing any previous con-
tents. This window closes when you select the close icon. Several windows do not allow copying
data to a fill-in field. They are: Boolean Descriptors, Configured ECBs, Legal FBM/ECB Combi-
nations, and the four SPECTRUM I/O Cards windows.
The Boolean Descriptors list contains mnemonic descriptions for each Boolean bit of the
selected packed Boolean parameter.

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).

Fix All Function


UNIX Platform Users Only:
Selecting the FBM menu Fix All function installs the ECBs specified by the System Configura-
tion/Definition database into the ICC database. These ECBs are installed in the Control Proces-
sor’s ECB compound (cplbug_ECB) and can be edited as explained in the “Edit Block/ECB
Parameters” on page 49. As each ECB is created, the block list for the ECB compound is updated
with the new ECB name. Any errors are displayed, and you are allowed to continue or exit the
operation.
The ECBs created by Fix All are appended to the ECB compound. They are added to any ECBs,
either system-configured or user-defined, which are already there. If a system-configured ECB
being added by Fix All is already present, an error is displayed and the new ECB is not added.
The ECBs for the SPECTRUM I/O cards specified by the System Configurator/Definition are
not installed by the Fix All function. They must be manually inserted.

Ladder Assignment Function


UNIX Platform Users Only:
The FBM menu’s Ladder Assignment function enables you to inspect the compound:block names
of the PLBs assigned to a selected PLB-type FBM.
Selecting Ladder Assignment moves you into the FBM Ladder Assignment function. The fol-
lowing is an example of the first display, the FBM Ladder Assignment Summary:

56
4. Menu Bar Functions B0193AV – Rev N

Selecting Done causes the FBM menu to exit.


The lower portion of the display lists all the PLB-type Fieldbus Modules installed in the control
station.
When you select one of the FBMs, the ICC pulls down onto the right side of the display a list of
the compound:block names of the (up to eight) PLBs assigned to the selected FBM, and automat-
ically exits the FBM menu.
The list is displayed at the right side of the display until you overwrite it or until you remove it by
clicking on the octagon-shaped icon at the bottom of the list.
Since ECBs can be contained in any compound, you are required to select the compound con-
taining the PLB ECBs before the ladder assignments for these ECBs can be accessed.

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.

New Menu Pick


Selecting New from the menu bar closes the file that you are working in, and saves it. The system
returns to the CSA utility so that you can choose another file.

Print Menu 57
B0193AV – Rev N 4. Menu Bar Functions

Checkpoint Menu Pick


UNIX Platform Users Only:
Checkpoint saves the selected station database in a check point file on the host file server.
The check point file is the database which is loaded into the control station when that station is
rebooted.

Windows NT Platform Users Only:


Checkpoint saves the station database in a check point file on the AW70.
The check point file is the database which is loaded into the AW when it is rebooted.

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.

UNIX Platform Users Only:


If LoadAll attempts to load a system-configured ECB that is already loaded in the control station,
Integrator, or gateway, an error message is displayed and the loading of the duplicate ECB is not
allowed. Selecting Continue allows subsequent ECBs to be loaded.

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.

UNIX Platform Users Only:


Diskettes containing a file system, such as SaveAll diskettes, created on an AP20/PW drive must
be read on an AP20/PW drive; diskettes created on a 50 Series host drive must be read on the
50 Series host drive.
A WP failure during a LoadAll or SaveAll operation can cause the error message Floppy Disk
Mount Failed, which indicates that the diskette is still mounted to the file system of the associated
AP. To recover when using an AP20-hosted drive, access the VT100 mode on the AP20 hosting
the disk drive and enter the command:
umount /dev/fh0
To recover when using a 50 Series host drive, access the VT100 mode on the host for the disk
drive and enter the commands:
umount /dev/fd0
eject
The diskette is automatically unmounted and ejected from the drive.
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.”

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

LoadAll/SaveAll for Batch Processing


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.”

Buffer Menu Pick


The Paste Buffer is a temporary editable area that accommodates:
♦ Compound(s) that are being copied from one ICC file to another
♦ Compound(s) that you are loading in from diskette
♦ Compound(s) that you are creating
♦ A block Rename function.
You can toggle back and forth between the Paste Buffer area and the configuration file area simply
by selecting Buffer on the menu bar.
When you do, notice that the status line, immediately beneath the menu bar, reflects the area that
is displayed, for example, Paste for the buffer area.
When the Paste Buffer is the active buffer, no interaction with the control processor occurs. Paste
buffer contents are only transmitted to the control processor during a paste action from paste
buffer operation.
Most compound/block functions can be performed when either the configuration file or paste
buffer is active. The exceptions are:

Configuration File Only Paste Buffer Only


Copy to Paste Buffer Rename Block/ECB
Copy and Append to Paste Buffer
Paste from Paste Buffer
Upload Compound Parameters

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.

Exit Menu Pick


Exit indicates that you have completed the editing process and wish to exit from the ICC.
Selecting Exit causes ICC to automatically initiate a check point, save the file that you are work-
ing in, and examine the paste buffer.
If compounds exist in the paste buffer, ICC warns that they will be deleted upon exit, and asks:
Are You Sure?

LoadAll/SaveAll for Batch Processing 61


B0193AV – Rev N 4. Menu Bar Functions

If your response is Yes, ICC:


♦ Deletes any compounds contained in the paste buffer
♦ Discards the contents of the delete buffer
♦ Deletes all temporary data files
♦ Exits ICC.
If your response is No, the Exit request is cancelled and the previous display reappears.

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.

Mixed Data Types


Local connections are input parameter connections to source parameters in the same CP station.
You can connect an input parameter to a source parameter of any data type in any block in the
same CP station.
The CP converts the data from the source format into the sink format when the data is copied
into the sink connection. This is done each block execution cycle prior to processing the block
algorithm.
In most cases, data conversions conform to the standard “C” programming language conventions
used in assignment statements containing mixed data types.
For the cases shown below, however, the converted value is clamped at the specified maximum
positive or minimum negative value.

63
B0193AV – Rev N 5. Block Parameter Connections

Sink Value Source Value Maximum Minimum


Short integer Integer 127 -128
Short integer Long integer 127 -128
Short integer Real value 127 -128
Integer Long integer 32767 -32768
Integer Real value 32767 -32768
Long integer Real value 2147483647 -2147483648

The following table summarizes the results of the conversion algorithms.

Sink Value Source Value Results


Boolean Short integer, integer, long integer, If source not = 0, result = 1
real, packed boolean Else result = 0
Short integer Boolean, packed boolean, Low-order byte of source
packed long
Integer, long integer Clamped source
Real Converted clamped source
Integer Boolean Unsigned low-order byte of source
Short integer Extended low-order byte of source
Long integer Clamped source
Real Converted clamped source
Packed boolean Source
Packed long Unsigned low-order integer of source
Long integer Boolean Unsigned low-order byte of source
Short integer Extended low-order byte of source
Packed boolean Unsigned low-order integer of source
Integer Extended low-order integer of source
Real Converted clamped source
Packed long Source
Real Boolean, short integer, integer Converted source
Long integer, packed long Converted truncated high-order source
Packed boolean Converted unsigned integer of source

64
5. Block Parameter Connections B0193AV – Rev N

Sink Value Source Value Results


Packed boolean Boolean If source = 0, mask bits cleared in sink
If source = 1, mask bits set in sink
(unmasked bits are unchanged)
Short integer Masked unsigned low-order byte of
source (unmasked bits are unchanged)
Integer, long integer, packed boolean, Masked unsigned low-order integer of
packed long source, (unmasked bits are unchanged)
Real Masked converted clamped integer of
source (unmasked bits are unchanged)
Packed long Boolean If source = 0, clear all sink bits
If source = 1, set all sink bits
Short integer Unsigned low-order byte of source
Integer, packed boolean Unsigned low-order integer of source
Real Converted clamped long of source
Long integer Source

Peer-to-peer connections are input parameter connections to source parameters in different CP


stations.
Peer-to-peer connections support a mixture of the following data types. The same conversions
specified for the mixed local connections in the previous table are performed for the combinations
of mixed peer-to-peer connections listed in the following table.

Valid Mixed Data Peer-to-Peer Connections

Source Value Sink Value


Long integer Integer, short integer, boolean, packed boolean,
packed long
Integer Long integer, short integer, boolean, packed boolean,
packed long
Short integer Long integer, integer, boolean, packed long

Peer-to-peer connections do not support a mixture of real and integer data types, or a mixed con-
nection to a Boolean source.

Boolean Connection Extensions


You can make local and peer-to-peer Boolean input connections to source data of any data type.
When configuring Boolean inputs, you also may configure additional extension information at
the end of the full pathname of the source parameter to specify any of the following functions:
♦ Extract a specified Boolean from the source data
♦ Extract individual block status or alarm status Booleans using a mnemonic name

Boolean Connection Extensions 65


B0193AV – Rev N 5. Block Parameter Connections

♦ 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.

General Format of Boolean Connection Extensions


The general format of Boolean connection extensions is:
Cname:Bname.Pname.Extension
where:
Extension = [{0,1}.]{~,[~]Bmask,[~]{A,X}[H]mask,[.][~]symbol}
Legend:
[] : optional
{,} : select one
~ : Invert the Boolean result
B : result = extracted Boolean of source value
A : result = bitwise AND of source value and mask
X : result = bitwise XOR of source value and mask
H : use high-order integer of value

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).

Mask = 1 to 2 digit boolean number if B function (non-digit, wrong length, or out-of-range) is


invalid. Range is:
♦ to 16 if source is integer (1 = high-order bit, 16 = low-order bit)
♦ to 32 if source is long integer (1 = high-order bit, 32 = low-order bit).
Mask = 1 to 4 digit hexadecimal mask if A or X function (non-hex digit or wrong length are
invalid).
0 : result = 0 (initial default and fallback value)
1 : result = 1 (initial default and fallback value)
.. : use status of source value

Symbol = 1 to 4 character symbol (wrong length or wrong character/combination are invalid):


♦ Source status bit(s) if status function
♦ Source value bit if Pname is BLKSTA, ALMSTA, or INHSTA.

Boolean Extensions to Source Data


The format of Boolean connection extensions to source data is:
Cname:Bname.Pname.Extension
where:
Extension = [{0,1}.]{~,[~]B mask,[~]{A,X}[H]mask}
Legend:
[] = optional
{,} = select one

The following table lists examples of this type of extension.

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.

Boolean Connection Extensions 67


B0193AV – Rev N 5. Block Parameter Connections

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.

* Extension is preceded by a “.”

Examples using the full Cname:Bname.Pname.Extension pathname are:


♦ BLENDER1:CIN.CIN.1.~
♦ BLENDER1:MCIN.PACKIN.A30A0.

Boolean Extensions to Source Status


The format of Boolean connection extensions to source status is:
Cname:Bname.Pname.Extension
where:
Extension = [{0,1}.].[~]symbol
Legend:
[] = optional
{,} = select one

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

The following table lists examples of this type of extension:

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.

* Extension is preceded by a “.”

Examples using the full Cname:Bname.Pname.Extension pathname are:


♦ BLENDER1:AIN.PNT..B
♦ BLENDER1:MAIN.PNT_3..~BOD.
The source status symbols are:
B 1 = Bad I/O
O 1 = Out_Of_Service
D 1 = OM Off-Scan (Disconnected)
E 1 = Propagated Error.

Boolean Extensions to Status Parameters


The format of Boolean connection extensions to status parameters is:
Cname:Bname.Pname.Extension
where:
= BLKSTA, ALMSTA, or INHSTA
Pname
Extension = [{0,1}.]{[~]Bmask,[~]{A,X}[H]mask,[~]symbol}
Legend:
[] = optional
{,} = select one

The following table lists examples of this type of extension.

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.

Boolean Connection Extensions 69


B0193AV – Rev N 5. Block Parameter Connections

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.

Examples using the full Cname:Bname.Pname.Extension pathname are:


♦ BLENDER1:PID.ALMSTA.LDA
♦ BLENDER1:MAIN.BLKSTA.AH30A0.

Block Status Symbols


The Boolean extension symbols for the block status parameter BLKSTA are:
ACC 1 = Accumulating
ACT 1 = Active
ASP 1 = Alternate Set Point
BAD 1 = Bad I/O
BADR 1 = Bad Redundant I/O
CTL 1 = Controlling
DEV 1 = Redundant I/O Deviation
DSB 1 = Disabled
DSR 1 = DSR Mismatch
FBM 1 = FBM Failure
FBMR 1 = Redundant FBM Fail
FOL 1 = Follow
FS 1 = Fail safe output
FTN 1 = Feedforward Tune Active
FTNI 1 = Feedforward Tune Inactive
HLD 1 = Hold
HOL 1 = High Output Limit
HRQ 1 = Hold Request
ILK 1 = Interlocked
LOL 1 = Low Output Limit
LR 1 = Remote, 0 = Local
LRO 1 = LR Override
MA 1 = Auto, 0 = Manual
MAO 1 = MA Override
MTN 1 = Manual Tune
ON 1 = On
PAUS 1 = Paused
PTN 1 = Pre-Tune

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.

Alarm Status Symbols


The Boolean extension symbols for the alarm status parameter ALMSTA are:
BAD 1 = I/O Bad Alarm
HDA 1 = High Deviation Alarm
HHA 1 = High-High Absolute Alarm
HMA 1 = High Measurement Alarm
HOA 1 = High Output Alarm
LDA 1 = Low Deviation Alarm
LLA 1 = Low-Low Absolute Alarm
LMA 1 = Low Measurement Alarm
LOA 1 = Low Output Alarm
OPER 1 = Operational Error Alarm
OOR 1 = Out of Range Alarm
PNT1 1 = Point 1 Alarm
PNT2 1 = Point 2 Alarm
PNT3 1 = Point 3 Alarm
PNT4 1 = Point 4 Alarm
PNT5 1 = Point 5 Alarm
PNT6 1 = Point 6 Alarm
PNT7 1 = Point 7 Alarm
PNT8 1 = Point 8 Alarm
PTRG 1 = Pre-Target Alarm
ROC 1 = Rate of Change Alarm
STA 1 = State Alarm
TARG 1 = Target Alarm

Boolean Connection Extensions 71


B0193AV – Rev N 5. Block Parameter Connections

TRIP 1 = Trip Alarm


UNAK 1 = Unacknowledged.
The Boolean extension symbols for the inhibit status parameter INHSTA are the same as those
for the ALMSTA parameter, except for the UNAK symbol.

Packed Boolean Connection Extensions


If the input parameter is a 16-bit packed Boolean variable, you can configure a connection exten-
sion to extract a specific set of booleans from the source parameter without changing other bool-
eans in the input.
This mask determines which booleans to copy each block cycle from the source parameter when
the parameter is refreshed.
The booleans specified in the connection mask are not settable by a Setval command, but all
other booleans are settable. If an extension mask is not specified in the connection, all booleans
are settable.
If the extension information is invalid, the connection is Unresolved, the block is marked Unde-
fined, and the OM scan status of the input is set to 0.
The format of packed Boolean connection extensions is:
[Cname] :Bname.Pname.mask
Legend:
[] = optional
{,} = select one

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.

An example using the full Cname:Bname.Pname.mask pathname is:


BLENDER1:CALC.IO01.02D0

72
5. Block Parameter Connections B0193AV – Rev N

Defaults for Integer and Real Connections


The paragraph “Boolean Connection Extensions” on page 65 explains how default values can be
specified for inputs of Boolean type. You can also specify such default values for inputs of integer
or real type by configuring the connection according to the following format:
Cname:Bname.Pname.n
where n is the desired default value.
If the sink is of integer type, n is an integer. Example:
EVAPORATOR:F1200.HOLIM.7000
If the sink is of real type, then n is a real value in floating-point or scientific notation. Examples:
EVAPORATOR.F1200.HOLIM.124.5
EVAPORATOR.F1200.LOLIM.-3.2E-2
The default value specified is used only until the source value is available (that is, the connection
is resolved and the source status is not BAD or OOS). When that happens, the source value is
copied into the input parameter, and the default value is lost. The connection is secured while the
specified default is in use.
If the input parameter is connected to itself, however, the default value specified in the connection
is preserved until the parameter is reconfigured. You can use this method of specifying defaults to
override the standard default for any parameter, as stated in the parameter tables.

Defaults for Integer and Real Connections 73


B0193AV – Rev N 5. Block Parameter Connections

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.

Entering and Exiting the Ladder Logic Editor


You enter the ladder logic editor from the Integrated Control Configurator (ICC). In ICC, you
create a Programmable Logic Block (PLB) for each ladder diagram. A source file for a given ladder
is created the first time you select the corresponding PLB and select Edit Ladder Logic. During an
editing session, you create ladder source code. When you end the session, you can have the ladder
code compiled and installed in a Fieldbus Module (FBM), saved in a library, or discarded.
The following is an overview of an editing session, based on the premise that a compound that is
to include ladder logic already exists.
1. Use the Integrated Control Configurator to select or create the compound that does
or will contain the desired PLB block.
2. Select an existing PLB or add a PLB using Insert New Block/ECB.
3. From the Block Functions menu of the ICC, select Edit Ladder Logic.
4. Create a new ladder or edit an existing one as described in “Creating/Modifying Func-
tions” on page 80.
5. Select any additional functions from the menu bar and follow the procedures shown
on subsequent displays.
6. After completing all desired ladder diagram functions, select Done, Cancel, or Files.
a. Select Done to install the ladder in the FBM specified in the IOM_ID parameter.
This option is available only if the ladder is complete, syntactically correct, and
compiled.
b. Select Cancel to discard the code generated in the current editing session.
c. Select Files to display a menu of library functions. Choose Save In Library to pre-
serve a ladder that is not ready to compile and download to an FBM. Such a lad-
der can also be used in other FBMs.
Ladder editing is terminated and control is returned to the ICC menu where you can select
another mode of operation.

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.

Editing a Ladder Diagram


The following quick reference tables precede the detailed procedures provided in this section on
the use of editing functions:
♦ Table 6-1. Field Inputs
♦ Table 6-2. Cursor Control
♦ Table 6-3. Editing Keys
♦ Table 6-4. Symbol Keys
♦ Table 6-5. Technical Identifiers.
Figure 6-1 shows the data fields of a ladder diagram.

Table 6-1. Field Inputs

Field Selected Input Accepted


Symbol position Function keys, pointing device
Technical identifier Alphanumeric keys – character string entered must be from the list
of valid technical identifiers
User label Alphanumeric keys
Preset/reset value Numeric keys – 0 through 65,000 counts; 0 through
6,500.0 seconds

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.

Table 6-2. Cursor Control

Function Pointing Device or Keys


Move cursor from any symbol position on the display to any Pointing device
other symbol position on display.
Move cursor horizontally to next or previous symbol Horizontal arrow keys
position or to a preset value field.
Move cursor up or down one symbol position – display Vertical arrow keys
scrolls as necessary – or between preset and reset value fields.
Move cursor to first symbol position – display scrolls Home key
as necessary.
Move cursor to corresponding position in entire ladder – End key
display scrolls as necessary.
Move cursor down or up one rung (not ladder line) – Page Down or Page Up keys
display scrolls as necessary.

76
6. Editing Ladder Logic B0193AV – Rev N

Table 6-2. Cursor Control (Continued)

Function Pointing Device or Keys


Move cursor within preset or reset field. Horizontal arrow keys
Move cursor between preset and reset fields without Vertical arrow keys
changing content.
Move cursor from preset to reset fields after entering Enter or Return keys
new information.

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.

Table 6-3. Editing Keys

Function Key or Keys to Use


Add or replace a symbol Symbol keys (Table 6-4)
(Use menu bar Symbols option to display keys and symbols.)
Delete a symbol Function Key 7 or Delete key
Enter digits in preset or reset field Right arrow, followed by numeric keys
(from timer or counter symbol)
Delete digits in preset or reset field Delete key to remove a digit at the current cursor position;
Backspace key to remove a digit to the left of the cursor
Delete previous character in a Backspace key
technical identifier or name field
Add branch leg: From one position to the right of the desired branch:
Insert connect down symbol In the upper row, F5
Insert connect up symbol In the lower row, F6
Delete branch leg: From one position to the right of the branch:
Remove connect down symbol In the upper row, Shift and Delete keys
Remove connect up symbol In the lower row, Shift and Delete keys
Move ladder rows down + key
(Insert ladder row)
Move ladder rows up - key
(Delete ladder row)
Enter technical identifier Enter, Return, or Insert key followed by alpha keys (must be
valid name)
Enter user-defined label (from After tech ID of less than six characters, press Enter or
technical identifier field, after Return; otherwise, type the sixth (last) character, and follow
typing a valid entry) with alpha keys

Editing a Ladder Diagram 77


B0193AV – Rev N 6. Editing Ladder Logic

Table 6-3. Editing Keys (Continued)

Function Key or Keys to Use


Enter rung descriptor (cursor in Shift and Insert followed by alpha keys; Shift and Insert again
last row of rung) to return to symbol.
Delete rung descriptor (cursor in Shift and Insert followed by Delete key.
last row of rung)
Check ladder logic syntax Menu bar Compile or Ctrl and X keys
Return control to main menu Menu bar Done to install ladder or Cancel to discard; (use
Save In Library option of Files) to save without installing

NOTE
When using function keys on the numeric keypad, be sure the Num Lock is not on.

Table 6-4. Symbol Keys

Symbol Name Key or Keys


—| |— Normally open contact F1
—|/ |— Normally closed contact F2
—— Connector F3
—( )— Energize coil F4
| Vertical connector, down F5
| Vertical connector, up F6
“ “ Delete F7
—(L)— Latch coil F8
—(U)— Unlatch coil F9
—(RTO)- Retentive timer-on delay F10
—(RTF)- Retentive timer-off delay Shift and F1
—(RST)- Counter or timer reset Shift and F2
—(CTU)- Up counter Shift and F3
—(CTD)- Down counter Shift and F4
—(MCR)- Master control relay Shift and F5
—(NCR)- End of master control relay Shift and F6
—(ZCL)- Zone control logic Shift and F7
—(NCL)- End of zone control logic Shift and F8
—(/)— Write not coil Shift and F9
—(TON)- Non-retentive Timer-on delay Alt and F1
—(TOF)- Non-retentive Timer-off delay Alt and F2

78
6. Editing Ladder Logic B0193AV – Rev N

Table 6-5. Technical Identifiers

Technical Identifiers Meaning


CIN_1 through CIN_32 Physical inputs
CO_1 through CO_16 Physical outputs
IFL_1 through IFL_32 External input flags
OFL_1 through OFL_32 External output flags
TC01_S through TC16_S Timer or counter coils
TC01_S through TC16_S Timer or counter status contacts
TC01_O through TC16_O Timer or counter overflow contacts
INT_01 through INT_32 Internal flags
INIT Initialize flag
POWERF Power fail flag
COMMF Communications failure flag
FAILSF Fail-Safe flag

The following terms describe display locations in a ladder display:

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

Ladder rung All ladder rows connecting to a common coil or coils.


Figure 6-1 shows the fields in which data is entered or displayed.

HELP SYMBOLS COMPILE FILES PRINT NEW LINE NEW TI NEXT TI DONE CANCEL
LINE: 001 COMPOUND: name BLOCK: name TEST/RUN

Tech_ID Tech_ID Tech_ID Tech_ID Tech_ID Tech_ID Tech_ID Tech_ID Preset


[Sym1] [Sym2] [Sym3] [Sym4] [Sym5] [Sym6] [Sym7] [Sym8] Reset
User User User User User User User User
Label Label Label Label Label Label Label Label

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

Figure 6-1. Data Fields

Editing a Ladder Diagram 79


B0193AV – Rev N 6. Editing Ladder Logic

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.

Positioning Editing Cursor


You can move the editing cursor by any of the following means:
♦ Pointing device
♦ Arrow keys
♦ Enter or Return keys
♦ Page Up or Page Down keys
♦ Home or End keys.
The following describes procedures for moving the cursor directly or incrementally between sym-
bol positions, from a timer/counter symbol position to a dialog box for preset/reset values,
between text fields, from any symbol position to the beginning or end of the ladder, from any
symbol position to the next or previous rung, from a symbol position to any other ladder line, and
from a symbol position to another symbol with the same or different technical ID.

Moving Cursor Directly to Any Symbol Position on Display


When the editing cursor is in a symbol position:
1. Use the pointing device to move the arrow cursor near any other symbol position
within the current display.
2. Click either pointing device button to bring the editing cursor to that location.

Moving Cursor Horizontally


1. From a symbol position:
The right arrow key moves the cursor one position right (hold down to repeat).
The left arrow key moves the cursor one position left (hold down to repeat).
2. From the right end of a row with a timer or counter coil:
The right arrow key moves the cursor into a dialog box for entering or modifying pre-
set and reset values.
3. From the right end of a row without a timer or counter coil:
The right arrow key moves the cursor to the left end of the following row.
If necessary, the display scrolls up one ladder row.
4. From the left end of a row:

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 Cursor Vertically


1. From a symbol position:
The up arrow key moves the cursor up one position (hold down to repeat).
The down arrow key moves the cursor down one position (hold down to repeat).
2. From any position in the preset value field:
The Enter or Return key moves the cursor to the first digit of the reset value field.
3. From any position in the reset value field:
The Enter or Return key moves the cursor out of the dialog box.
4. From the first position in the reset or preset value field:
The Enter or Return key (used before you type any digits) moves the cursor without
changing the value.
5. From a symbol position in the last row:
The down arrow key moves the cursor to the corresponding position in a new (blank)
row.

Moving Cursor to the Beginning or End of the Ladder


The Home key moves the cursor to the first symbol position in the first row of the ladder.
The End key moves the cursor from the current position to the corresponding position in the last
row of the ladder.

Moving to the Previous or Next Rung


The Page Up key moves the cursor to the first symbol position in the last row of the previous
rung.
The Page Down key moves cursor to the first symbol position on the following rung.
If necessary, the display scrolls one ladder row in either direction.

Moving to New Ladder Line


The New Line top menu bar button allows you to jump to a new ladder line.
1. Click the New Line button.
2. A dialog box appears, containing a data input field, a Done button and a Cancel but-
ton.
3. Enter the number of the ladder line of the target jump. All ladder line numbers can be
viewed in the printout of the ladder obtained via the Print function.
4. Press Enter/Return.
5. Select the Done button to execute the jump.
6. Select the Cancel button at any time to exit the dialog box without jumping to the
new line.

Editing a Ladder Diagram 81


B0193AV – Rev N 6. Editing Ladder Logic

Moving to the Next Ladder Element Referencing a Particular Tech ID


The New TI top menu bar button allows you to move the cursor to the next (forward) occurrence
of the specified Tech ID. The display scrolls, if necessary.
1. Click the New TI button.
2. A dialog box appears, containing a data input field, a Done button and a Cancel but-
ton.
3. Enter a Tech ID name, followed by a carriage return.
4. Select the Done button. This moves the cursor to the next forward ladder element ref-
erencing the named 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 ele-
ment with the named Tech ID, the cursor does not move.
5. Select the Cancel button at any time to exit the dialog box without moving the cursor.

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.

Adding or Replacing a Symbol


To add (or replace) a logic symbol in a ladder diagram:
1. Move the cursor to the desired symbol position.
2. Press a symbol key (See symbol key assignments listed previously in Table 6-4) or use
the show Symbols function (see “Showing Symbols” on page 83).
♦ Output symbols must be the final element within a ladder line. At any other posi-
tion, an error message appears (for example, Coils are last symbol in row).
♦ When you insert an NCL or NCR symbol, the editor automatically supplies a
direct connection to the left rail (power source).
♦ If the symbol position you specify is not unused, the selected symbol, other than
an up or down connector, replaces the one to which the cursor points. If you select
an up or down connector symbol, it is added to the left of the symbol to which the
cursor points.
Once you have placed a symbol within a rung, enter the technical identifier directly above it and
your choice of label below it. MCR, NCR, ZCL, and NCL have no technical identifiers or labels.
You can replace a normally closed contact symbol with a normally open one (or the reverse) and
the editor preserves the existing technical identifier and user-defined label. However, when you
replace a symbol with a horizontal connector, a blank symbol, or any coil symbol, even the same
as an existing coil, the editor deletes the technical identifier and user-defined label.
When entering contact and coil symbols in a ladder, you should note that the technical identifiers
listed in Table 6-5 constitute a fixed pool of resources associated with the FBM. A given technical

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.

Connecting Two Rows

NOTE
Never attach UP branches to the first line in a rung.

To insert a connection from the upper of two rows DOWNward:


1. Move the cursor to the upper of the two rows, one position to the right of the point
where you want to make the connection.
2. Press the F5 key for the down vertical connector or select Connect Dn from the Sym-
bols display.
3. Move the cursor to the lower of the two rows, at a symbol location one position to the
right of the point where you want to make the connection.

Editing a Ladder Diagram 83


B0193AV – Rev N 6. Editing Ladder Logic

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.

Deleting a Rung Descriptor


1. Locate the cursor anywhere in the last row of the rung.
2. Press the Shift and Insert keys. The cursor moves into the first position of the first line
of descriptor text.
a. To modify (by retyping) one entire line of text, press the Enter key as required to
position the cursor at the start of the line to be changed. Retype the entire line. If
you go beyond the last character position, you need to retype all of the next line
also.
b. To delete all lines of the descriptor, press the Delete key. The ladder closes up by
six lines formerly occupied by the rung descriptor.
3. Press the Shift and Insert keys. The cursor returns to its original position.

Entering Text Associated with a Symbol


You can cycle the cursor through the text fields associated with a symbol position by using the fol-
lowing key sequence:
1. Using arrow keys or the pointing device, move the cursor to a symbol position.
2. Press the Insert, Enter, or Return key to move the cursor to the first character position
of the Technical Identifier field immediately above the symbol.

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.

Entering a Technical Identifier


1. Move the cursor to the Technical Identifier field (see “Entering Text Associated with a
Symbol” on page 84). The cursor highlights the first position of the field, ready
to accept a new or revised identifier.
2. Type one of the predefined technical identifiers.
♦ If you make a mistake while typing a text field, use the Backspace key to delete
the incorrect characters.
♦ If you completed the entry but made a typing error or entered a label that was not
from the predefined list, the editor displays the message Invalid tech ID, clears the
text just entered, and returns the cursor to the first character position. If a valid
identifier existed previously, the editor redisplays it.
The cursor automatically moves to the first character position of the user-defined label field once
you have completed typing a valid Technical Identifier.

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.

Entering a User-Defined Label


1. Move the cursor to the first character, first line of the user-defined label (see “Entering
Text Associated with a Symbol” on page 84). The cursor highlights the first position
of the field, ready to accept a new or revised user-defined label.

Editing a Ladder Diagram 85


B0193AV – Rev N 6. Editing Ladder Logic

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.

Entering Preset/Reset Values


1. From the timer or counter symbol position, press the right arrow key to open a dialog
box showing a blank preset value field. The cursor is positioned to the first digit of the
five-digit field. The values last configured remain visible in the column to the right of
the dialog box until they are updated when the cursor returns to the symbol position.
2. Key in a new preset value, 0 through 65,000 counts or 0 through 6,500.0 seconds, or
skip to the next step to retain the present value. (For a timer value, the integer value
entered is converted to tenths.)
3. Press the Enter or Return key to enter the value (or retain an existing value without
change) and open a dialog box showing a blank reset value field. The cursor is posi-
tioned to the first digit of the five-digit field.
4. Key in a new reset value, 0 through 65,000 counts or 0 through 6,500.0 seconds. (For
a timer value, the integer value entered is converted to tenths.)
5. Press the Enter or Return key to enter the value (or retain an existing value) and return
to the symbol position.
♦ Digits within a field can be added, deleted, or modified on an individual basis.
Use the horizontal arrow keys to position the cursor and the Delete or Backspace
key to remove unwanted digits.
♦ If you key in leading zeros, they are suppressed when the dialog box is removed.
♦ The chosen preset and reset values are assigned to the counter or timer and are
also reflected in any other counter(s) or timer(s) within the ladder diagram having
the same Technical Identifier (that is, related to the same coil).

Entering a Rung Descriptor


1. Locate the cursor anywhere in the last row of the rung.
2. Press the Shift and Insert keys.
The ladder opens up. All ladder rows beyond the one selected scroll down six lines.
The cursor moves from its original position into the third display line following the
rung.
3. Key in up to three lines of ASCII text; each line can contain up to 60 characters.
4. Once the text has been entered, press the Shift and Insert keys a second time to return
the cursor to where it was.
♦ If you make a mistake while typing within a rung descriptor line, use the Back-
space key to delete the incorrect characters.

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.

Adding or Deleting a Ladder Row


The Move Ladder Rows procedure allocates space between two existing ladder rows for inserting
an additional ladder row. A ladder row consists of six display lines: one line for the Technical Iden-
tifier, one line for the symbol, two lines for the user-defined label, and two blank lines for rung
separation.
The Plus (+) key function lets you shift all remaining rows of a ladder downward one ladder row
(six display lines) to make room for the insertion. (A ladder row actually begins with the display
line reserved for the Technical Identifier field.)
To insert a ladder row, press the + key.
♦ Six display lines are blanked out and the existing lines are redisplayed below the newly
created blank area. The cursor moves to the first symbol position of the blank area.
The Minus (-) key function lets you shift all remaining rows of a ladder upward one ladder row
(six display lines). The procedure removes an existing ladder row.
To delete a ladder row, press the - key.
♦ The selected row is overwritten as the rows beyond it are redisplayed. If the cursor was
in the last row of a rung, the rung descriptor is overwritten (deleted) as well, as the
ladder is closed up.

Selecting Library Functions


1. Select the menu bar Files function. The Library Options menu is displayed:
♦ View Library
♦ Copy From Library
♦ Save In Library
♦ Cancel.
2. Use the pointing device to select a library option. See the following subheadings for
the option desired.
3. Select Cancel to exit from the Files menu without any further action. The menu is
withdrawn and the top menu bar functions are again pickable.

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.

Selecting Library Functions 87


B0193AV – Rev N 6. Editing Ladder Logic

Copy From Library


The Copy From Library function copies a source file from the library into the current source file.
You can use Copy From Library to create multiple ladders that have the same logic. When you
have a source file with a ladder diagram that you plan to use in more than one FBM, save it in the
library. You can copy a source file from the library into your current source file at any time.
When ladders with the same logic differ in areas such as I/O connections, you can edit the current
source file after the copy to make adjustments.
To copy the contents of a library source file into the current ladder source file:
1. Select Copy From Library from the menu. A dialog box appears on the display. The
copy function displays the contents of the library.
2. Use either the alphanumeric keyboard or the pointing device to select a source file or
use the pointing device to select Cancel.
a. 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.
b. Use the pointing device to select the name from the displayed list. If the menu is
more than one display long, use the paging icons to view the entire library.
c. To leave the Copy From Library function without copying a file, select Cancel
from the dialog box. The copy function is canceled and the Files menu is redis-
played.
3. Select Copy from the dialog box. The source file selected in the previous step is copied
into the current ladder’s source file. An hour glass symbol is displayed until the copy is
complete. Then the Files menu is redisplayed.

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.

Printing a Ladder Diagram


To print a ladder diagram:
1. Select the menu bar Print function. A dialog box appears with a list of available print-
ers.
2. Select a printer. The following message appears: Ladder printout initiated.
All other functions are disabled until the print operation completes or you terminate
it.
3. To terminate Print, press the Esc key. Control is returned to the menu bar, allowing
you to select another mode of operation.

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-

Printing a Ladder Diagram 89


B0193AV – Rev N 6. Editing Ladder Logic

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

Prerequisites for Ladder Installation


Procedures that must be done correctly before ladder installation can begin include the following:
1. The associated PLB must be installed in a station (rather than a library volume or
Paste Buffer).
2. The associated PLB block must have a valid FBM letterbug in the IOM_ID field. The
following are examples of valid ways to configure the PLB Blocks IOM_ID parame-
ter; these examples assume the FBM letterbug is PLB001:
♦ IOM_ID = PLB001
The FBM letterbug PLB001 is configured in the <Station_1bug>_ECB
compound.
♦ :PLB001
The FBM letterbug PLB001 is configured within the same compound (current
compound) as the PLB block.
♦ TEST01:PLB001
The FBM letterbug PLB001 is configured within TEST01 compound.
♦ <Station_1bug>_ECB:PLB001
The FBM letterbug PLB001 is configured in the <station_1bug>_ECB
compound.
3. An ECB8 block must be built for the associated FBM.
4. The ECB associated with the target FBM must be successfully installed in the target
station (by adding the ECB to the station).
5. The targeted FBM must be on-line.
6. The targeted FBM must be downloaded.

Causes of Installation Failure


The following lists some of the causes of installation failures:
1. The FBM file containing the up to eight compound:block names associated with the
assigned ladders is missing or corrupted.
2. One or more of the specified ladder source files has not been successfully syntax-
checked by the ladder editor.
3. The merged ladder contains syntax errors.
4. The merged ladder is too large to fit in the FBM.
5. The merged ladder has more than 100 lines of logic.
6. The Object Manager experiences errors communicating with the ECB block.

PLB Ladder Display Installation


ICC builds the ladder displays and stores them in a specified directory after all the following tasks
have been completed:
♦ Entering valid IOM_ID parameter for PLB block
♦ Compiling ladder logic without error

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.

50 Series Workstation Access


Once the PLB ladder displays are installed, the Display Manager block detail display running on
local or remote 50 Series workstations can directly access the ladder displays from any CP’s host
on the network.
This default functionality can be changed. For more information, refer to the Display Engineering
for 50 Series Workstations (B0193MQ) document.

20 Series Workstation Access


To access the ladder displays from a remote WP20, WP30, or PW (that is, when the CP’s host
(AP20) is not the workstation’s logical host) you must distribute the ladder displays to the WP’s
logical host.
Once the PLB ladder displays are installed and distributed to all WP logical hosts for remote WPs,
the block detail display on any WP20 or WP30 can directly access the ladder displays for any CP
on the network.

Location of Ladder Displays


ICC installs the ladder displays in a user-defined directory as follows:
♦ The 50 Series ICC installs the ladder displays in 50 Series format in the user-defined
directory (/usr/plc50 by default), when 50 Series workstations are configured for the
I/A Series system.
♦ The 20 Series ICC installs the ladder displays in 20 Series format in the user-defined
directory (/usr/plc by default), whether or not 20 Series workstations are configured
for the I/A Series system.

Configuring Ladder Display Location


By default, ICC installs the ladder displays in the following directories:
/usr/plc50 for 50 Series ladder displays
/usr/plc for 20 Series ladder displays

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

PLB50=<50 Series base directory>


PLB=<20 Series base directory>
where:
<50 Series base directory> is the full pathname to the 50 Series display file base
directory (maximum of 200 characters)
<20 Series base directory> is the full pathname to the 20 Series display file base
directory (maximum of 50 characters)
To reallocate a ladder display directory (for example, into the /opt partition), you must:
1. Create or modify the /usr/plc/plb_dir file with the appropriate ladder display directo-
ries.
2. Move the ladder displays to the new base directory.
When reallocating 20 Series display files on a 50 Series station to a base directory other than
/usr/fox/ia16, you must link or loop-back mount the /usr/fox/ia16/<new_directory> to
<new_directory>, otherwise WP20s, WP30s, and PWs cannot access the ladder displays.
For example, to move all of the 20 Series and 50 Series ladder displays on an AP51 into the
/opt/ladder directory, you must:
1. From the VT100 prompt, create the plb_dir file using the vi editor by typing:
vi /usr/plc/plb_dir
2. Set the keywords in the plb_dir file using the vi editor by typing:
PLB50=/opt/ladder/disp50
PLB=/opt/ladder/disp20
3. From the VT100 prompt, loop-back mount the /opt/ladder/disp20 directory:
a. For Model 50 stations, type:
mount -t lo /opt/ladder/disp20 /usr/fox/ia16/opt/ladder/disp20
b. For Model 51 stations, type:
mount -F lofs /opt/ladder/disp20 /usr/fox/ia16/opt/ladder/disp20
In addition to the above steps, you must add the new mount point to the Foxboro mount table
files, such that the /usr/fox/ia16/opt/ladder/disp20 is mounted when rebooting the AP:
From the VT100 prompt, use the vi editor to edit the mount table files:
a. For Model 50 stations, add the following line to the /etc/fstab file:
/opt/ladder/disp20 /usr/fox/ia16/opt/ladder/disp20 lo rw o o
b. For Model 51 stations, add the following line to the /etc/vfstab file:
/opt/ladder/disp20 - /usr/fox/ia16/opt/ladder/disp20 lofs - yes -
Once these changes are made, all the 50 Series workstations can access the ladder displays from
the new directory, and ICC installs the PLB ladder displays into these directories.
If a workstation contains ladder displays on its local disk or logical host, the files on the disk can
be moved as described above.

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.

HELP SHOW FBM PRINT NEW CHECKPOINT BUFFER MAINT EXIT


Integrated Control Configurator Inactive STA =STA101 @ AP1002
DT01BTMLCFC
DT01LT1D7 Block/ECB Functions
DT01CRC107
DT01FT116 View Compound List
DT01FRC116 Insert New Block/ECB
DT01CU120 Edit Standard Block/ECB Parameters
DT01ACUM116 Edit All Block/ECB Parameters
DT01SEQDEP Edit Ladder Logic
END SEQ*** Edit Sequence Logic
END CON2** Select to Move
Move
Move Group
End Move
Upload Block/ECB Parameters
Delete

Figure 7-1. Block/ECB Functions Menu

95
B0193AV – Rev N 7. Editing Sequence Logic

HELP SHOW FBM PRINT NEW CHECKPOINT BUFFER MAINT EXIT


Integrated Control Configurator Inactive STA =STA101 @ AP1002
Block Definition:
Name: DT01SEQDEP
Type: DEP
Sequence Logic Functions
Edit Source of this Block
Compile Source of this Block
View Compilation Listing
View Source Library Contents
Copy Source of this Block from Library
Save Source of this Block to Library
Delete Block Source from Library
Print Compilation Listing
Print Listing of this Block
View Include Library Contents
Done with Sequence
Cancel

Figure 7-2. Sequence Logic Functions Menu

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.

Sequence Logic Functions


In the paragraphs that follow, the sequence logic functions are described in alphabetical order.

Sequence Logic Functions 97


B0193AV – Rev N 7. Editing Sequence Logic

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.

Compile Source of this Block


The Compile Source of this Block function creates the executable files from the source file. The
current sequential control block cannot be updated with sequence logic until the source file com-
piles without errors.
When the source file compiles without errors, the compiler produces:
♦ An interpretive code module
♦ An operator representation module
♦ A formatted sequence program listing.
When the source file compiles with errors, the compiler only produces the formatted sequence
program listing.
The interpretive code module contains a sequential control block’s executable code.
The operator representation module contains a compiler-formatted listing of all sequence lan-
guage statements. At run time, it shows the progression of statement execution on block displays.
The formatted sequence program listing contains the sequence language statements formatted for
debugging or archiving. If errors exist, they are noted below the statements in which they occur.
The compiler lists external references found in the language statements of the main code, the sub-
routine code, and the exception handlers. External references are parameters or shared variables
from other blocks and applications referred to in the sequence algorithm. They are checked for
errors at run time.
All of the compiler-generated files have the same name as the current block. The different file
types are identified by file name extensions:
♦ blockname.i = interpretive code module
♦ blockname.r = operator representation module
♦ blockname.l = formatted sequence program listing.
To compile the current block:

98
7. Editing Sequence Logic B0193AV – Rev N

1. Select Compile Source of this Block from the menu.


2. When a source file compiles without errors, the Sequence Logic Functions menu
appears.
3. When the compiler detects errors in the source files, it produces the following mes-
sage:

HLBL Compilation Completed.

xxx HLBL Statement Errors Found.


Failed.
Select CONTINUE to Proceed

CONTINUE

is the number of compiler errors found in the source file.


xxx
The compilation is canceled. When you select Continue, the Sequence Logic Func-
tions menu appears.
4. When there are errors in the source file, the compiler stores error messages in the for-
matted sequence program listing file. Refer to “View Compilation Listing” on
page 110 or “Print Compilation Listing” on page 107.
Before you can update the sequence block with sequence logic, you must correct the
source file and compile it.

Copy Source of this Block from Library


The Copy Source of this Block from Library function copies a source file from the library into the
current source file. You can use Copy Source of this Block from Library to create blocks that have
the same sequence logic. When you have a source file with sequence logic that you plan to use in
more than one block, save it in the library (refer to “Save Source of this Block to Library” on
page 108). You can copy a source file from the library into your current source file at any time.
When blocks with the same sequence logic differ in areas, such as Input/Output connections, you
can edit the current source file after the copy to make adjustments (refer to “Edit Source of this
Block” on page 103).
To copy the contents of a library source file into the current source file:
1. Select Copy Source of this Block from Library from the menu. A dialog box appears
on the display. Refer to Figure 7-3. The copy function displays the contents of the
library.
2. Select a source file by entering the name in the Choice field with either the alphanu-
meric keyboard or the pointing device.
To enter a name with the keyboard, type in the name and press the Return key. If you
enter the name incorrectly, use the Delete key to delete characters, and enter the name
again.

Sequence Logic Functions 99


B0193AV – Rev N 7. Editing Sequence Logic

HELP SHOW FBM PRINT NEW CHECKPOINT BUFFER MAINT EXIT


Integrated Control Configurator Inactive STA =STA101 @ AP1002
Block Definition:
Name: DT01SEQDEP
Type: DEP

Sequence Block Library

CHOICE

indblock.s
depblock.s
excblock.s
monblock.s

COPY CANCEL

Figure 7-3. Copy Source of This Block From Library

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.

Select CONTINUE to Proceed

CONTINUE

The copy function is canceled. When you select Continue, the Sequence Logic Func-
tions menu appears.

Delete Block Source from Library


The Delete Block Source from Library function deletes a source file from the library.

! CAUTION
Do not delete any of the following skeleton files from the library: depblock.s,
excblock.s, indblock.s, and monblock.s.

To delete a block source file from the library:


1. Select Delete Block Source from Library from the menu. A dialog box appears on the
display. Refer to Figure 7-4. The delete function displays the contents of the library.
2. Select a source file by entering the name in the Choice field with either the alphanu-
meric keyboard or the pointing device.
To enter a name with the keyboard, type in the name and press the Return key. If you
enter the name incorrectly, use the Delete key to delete characters, and enter the name
again.

Sequence Logic Functions 101


B0193AV – Rev N 7. Editing Sequence Logic

HELP SHOW FBM PRINT NEW CHECKPOINT BUFFER MAINT EXIT


Integrated Control Configurator Inactive STA =STA101 @ AP1002
Block Definition:
Name: DT01SEQDEP
Type: DEP

Sequence Block Library

CHOICE

indblock.s
depblock.s
excblock.s
monblock.s

DELETE CANCEL

Figure 7-4. Delete Block Source From Library

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.

Select CONTINUE to Proceed

CONTINUE

The Delete function is cancelled. When you select Continue, the Sequence Logic
Functions menu appears.

Done With Sequence


The Done With Sequence function exits the Sequence Logic Functions menu and updates the
current sequence block with the sequence logic that you have created. A sequence block cannot be
updated with sequence logic unless the source file containing the logic compiles without errors.
To exit and update the sequence block with sequence logic, select Done With Sequence from the
menu. The Block/ECB Functions menu appears. Refer to Figure 7-1.

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.

Edit Source of this Block


The Edit Source of this Block function calls the sequence editor and displays the current source
file on the display. Through the editor, you can add Sequence language statements and user-
labeled parameter declarations to the source file. Initially the source file contains a template for
the current sequential block type. You add parameters and statements to the template to build the
sequence logic. Each template includes:
♦ Keywords denoting the structure of the source file
♦ Sequential control block type (IND, DEP, EXC, or MON)
♦ Comment lines that serve as guidance.
The templates for the Independent, Dependent, and Exception blocks are almost identical, differ-
ing only at the title lines at the very beginning of the template. A representation of these three
templates is shown below followed by the layout of the Monitor block template.

Sequence Logic Functions 103


B0193AV – Rev N 7. Editing Sequence Logic

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

Below is the layout of the Monitor block template.

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).

Sequence Logic Functions 105


B0193AV – Rev N 7. Editing Sequence Logic

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.

UNIX Platform Users Only:


To edit the current source file:
1. Select Edit Source of this Block from the menu. This calls the Sequence editor.

NOTE
Do not enter Control+Z while in the sequence editor.

2. The current block’s source file is displayed.


3. With the editor, you can add or modify sequence logic statements and parameters
(refer to Chapter 8 “Sequence Language”).
The Sequence editor is one of two possible editors:
a. For CPs hosted by AP20s, either the ice or vi editor is available. A WP hosted by
an AP20 can configure the text editor for the AP20 from the Control_cfg sub-
menu (CIO_SeqEdt selection). The initial default is ice.
b. For CPs hosted by AP50s, the vi editor is available.
For information on ice editing features, refer to the VENIX User Reference Manual
(B0193BV), “Commands and Applications Programs.” For information on vi edit-
ing features for VENIX platforms, refer to the VENIX User Guide (B0193BY),
“Screen Editing with vi”. For information on vi editing features for SUN plat-
forms, refer to the SUN OS Users Guide, “Getting Started” and “Editing Text
Files”.
4. To exit Edit Source of this Block, press F9. The Sequence Logic Functions menu
appears.
5. After you finish editing the sequence logic, you can compile the source file (refer to
the “Compile Source of this Block” on page 98).

AW70 Users Only:


To edit the current source file:
1. Select Edit Source of this Block from the menu. This causes display of a dialog box.
The box instructs you to open a Notepad window and supplies the path to be used in
finding the file to be edited.
2. Use the Notepad to display the current block’s source file.
3. With the editor, you can add or modify sequence logic statements and parameters
(refer to Chapter 8 “Sequence Language”).
4. When finished editing, save the modified source and exit the Notepad session.

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.

Print Compilation Listing


The Print Compilation Listing function generates a printed copy of the current block’s formatted
sequence program listing. The formatted sequence program listing is a file produced by the com-
piler that contains a list of the Sequence language statements formatted for debugging or
archiving.
In this file, any compilation errors that exist are noted below the statements in which they occur.
The file also provides you with a list of external references found in the language statements of the
main code, the subroutine code, and the exception handlers. External references are parameters
from other blocks or shared variables from other applications referred to in the sequence algo-
rithm. External references are not checked for errors until runtime.
To print the formatted listing:
1. Select the Print Compilation Listing function from the menu. The Printer Selection
menu appears.

PRINTERS AVAILABLE

CANCEL

smloki Okidata 182


lrgoki Okidata 293
LP01 Okidata 182

2. Select the printer that is to produce the listing, or Cancel the printout. The ICC
returns to the Sequence Logic Functions menu.

Print Listing of this Block


The Print Listing of this Block function generates a printed copy of the current block source file.
To print the source listing:

Sequence Logic Functions 107


B0193AV – Rev N 7. Editing Sequence Logic

1. Select the Print Listing of this Block function from the menu. The Printer Selection
menu appears.

PRINTERS AVAILABLE

CANCEL

smloki Okidata 182


lrgoki Okidata 293
LP01 Okidata 182

2. Select the printer that is to produce the listing.

Save Source of this Block to Library


The Save Source of this Block to Library function saves a copy of the current source file in a local
directory whether it has been compiled or not. Saving a source file in the library does not update
the current sequence block with sequence logic.
The Save Source of this Block to Library function is the only way to save an uncompiled source
file when you exit the Sequence Logic Functions menu. There are two functions to exit the
Sequence Logic Functions menu: Done With Sequence and Cancel. Done With Sequence can
only be selected when the source file has been compiled. Cancel can be selected at any time, but it
does not save the source file. Therefore, to save an uncompiled source file, you must save it in the
library before selecting Cancel.
Also, it is helpful to save a source file in the library when you plan to use the same sequence logic
contained in the source file in more than one block. Once saved in the library, it can be copied
into other sequence block source files (refer to “Copy Source of this Block from Library” on
page 99).
You can look at the list of files already saved in the library, with the View Source Library Contents
function (refer to “View Source Library Contents” on page 112).
To save the current source file in the library:
1. Select Save Source of this Block to Library from the menu. A dialog box appears on
the display. Refer to Figure 7-5. The Save function displays the contents of the
library.

108
7. Editing Sequence Logic B0193AV – Rev N

HELP SHOW FBM PRINT NEW CHECKPOINT BUFFER MAINT EXIT


Integrated Control Configurator Inactive STA =STA101 @ AP1002
Block Definition:
Name: DT01SEQDEP
Type: DEP

Sequence Block Library

CHOICE

indblock.s
depblock.s
excblock.s
monblock.s

SAVE CANCEL

Figure 7-5. Save Source of this Block to Library

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.

Sequence Logic Functions 109


B0193AV – Rev N 7. Editing Sequence Logic

View Compilation Listing


The View Compilation Listing function places the formatted sequence program listing on the dis-
play. This file, created by the compiler, is used for archiving or debugging. When errors are
detected, they are noted below the statements in which they occur.
The file also lists external references found in the language statements of the main code, the sub-
routine code, and the exception handlers. External references are checked for errors at run time.
(External references are parameters from other blocks or shared variables from other applications
referred to in the sequence algorithm).
Also, you can print a copy of the formatted sequence program listing with the print function
(refer to “Print Compilation Listing” on page 107).
Here is an example of a compiler error message:
If the source file had a statement that read:
IIF level > 50 THEN ACTIVATE :reactor_1:drain;
The listing file would have an error message below IIF:
IIF
^^^# ERROR: parameter ’IIF’ not declared
Since it does not recognize the beginning of the IF statement due to a typing error, it considers it
an undefined parameter. It also produces another error when it reaches the THEN clause in the IF
statement since it does not recognize IIF as a corresponding IF. In this way one error can generate
several error messages.

UNIX Platform Users Only:


To view the formatted sequence program listing:
1. After the block is compiled, the View Compilation Listing menu function becomes
selectable. Select this function. The listing file appears on your display. Error messages
appear below the statement where the error is located. There is also an error summary
at the end of the file.
2. Like Edit Source of this Block, View Compilation Listing places you in the Sequence
editor, vi or ice. You can use the appropriate editing functions to move through the
file. The Help function on the menu bar is not active. For information on vi for SUN
platforms, refer to the SUN OS User’s Guide, “Getting Started” and the “Editing Text
Files”. For information on vi editing features for VENIX platforms, refer to the
VENIX User Guide (B0193BY), “Screen Editing with vi”. For information on ice, refer
to the VENIX User Reference Manual (B0193BV), “Commands and Applications Pro-
grams.”
You can only look at errors in the listing file. Corrections must be made to the source
file through the Edit Source of this Block function.

AW70 Users Only:


To view the formatted sequence program listing:
1. After the block is compiled, the View Compilation Listing menu function becomes
selectable. Select this function. A dialog box appears; it instructs you to open a Note-
pad window and supplies the path to be used in finding the listing file. Error messages
appear below the statement where the error is located. There is also an error summary
at the end of the file.

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.

View Include Library Contents


The View Include Library Contents function lists all the user-developed sequence include files in
the include file directory.

UNIX Platform Users Only:


The include file directory on VENIX platforms is /usr/fox/ciocfg/sequeninclude. The include file
directory on SUN platforms is /opt/fox/ciocfg/sequeninclude.

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).

Sequence Logic Functions 111


B0193AV – Rev N 7. Editing Sequence Logic

HELP SHOW FBM PRINT NEW CHECKPOINT BUFFER MAINT EXIT

Integrated Control Configurator Inactive STA =STA101 @ AP1002


Block Definition:
Name: DT01SEQDEP
Type: DEP

Sequence Include Library

depblock.s
excblock.s
indblock.s
monblock.s
INCTEST.seq
NOINV.seq

DONE

Figure 7-6. View Include Library Contents

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.

View Source Library Contents


The View Source Library Contents function lists all previously saved sequential control block
source files. To list files:
1. Select View Source Library Contents from the menu. The first page of the library
appears. Refer to Figure 7-7.
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).

112
7. Editing Sequence Logic B0193AV – Rev N

HELP SHOW FBM PRINT NEW CHECKPOINT BUFFER MAINT EXIT


Integrated Control Configurator Inactive VOL = vo1001
Block Definition:
Name: DT01SEQDEP
Type: DEP

Sequence Source Library

depblock.s
excblock.s
indblock.s
monblock.s

DONE

Figure 7-7. View Source Library Contents

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.

Sequence Code Installation


The sequence code files that are used by the block detail display All Code page are installed in the
following directories:
♦ /opt/fox/ciocfg/<compound> (50 Series AP and AW)
♦ /usr/fox/ciocfg/<compound> (AP10 and AP20).

50 Series Workstation Access


Once a Sequence block is installed, the Display Manager block detail display on local or remote
50 Series workstations can directly access the sequence code from any CP’s host on the network.
This default functionality can be changed. For more information, refer to the Display Engineering
for 50 Series Workstations (B0193MQ) document.

20 Series Workstation Access


To access the sequence code from a remote WP20, WP30, or PW (that is, when the CP’s host
(AP20) is not the workstation’s logical host) you must distribute the code files to the logical host.
Once the sequence code is installed and distributed to all logical hosts for remote WPs, the block
detail display on any WP20, WP30, or PW can access the sequence code.

Sequence Code Installation 113


B0193AV – Rev N 7. Editing Sequence Logic

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

♦ Are not control objects


♦ Cannot be installed in a station as an independent identity
♦ Do not have parameters that can be linked, connected, or accessed from the outside in
any way.
Each subroutine name uses a number of bytes equal to one plus the number of characters in the
name (for example, SUBROUTINE TIMER uses six bytes).
The compiler numbers the subroutines in the order of their definition within the Sequence block.
The structure of a subroutine consists of:
♦ A heading
♦ The local subroutine variables
♦ A body of HLBL statements.
The heading specifies the subroutine’s name and formal arguments, if any.
A subroutine without arguments can be used for different actions upon the same set of parameters
or block variables.
A subroutine with arguments can be used for repeating the same action on different sets of param-
eters.
Subroutine local variables are optional.
The body contains the HLBL statements that define the algorithm.
The subroutine allows you to specify a general piece of coded control logic, only once within a
block, and apply it repeatedly by simply referring to the subroutine name. This saves program-
ming effort and gains reliability and consistency.
Subroutines can be used in equipment-oriented applications by using string type arguments. The
subroutine can then be called with the name of an object that represents or controls a piece of
equipment. For instance, a subroutine that contains the logic for opening a valve in a particular
way can be called for INLETVALVE1, for INLETVALVE2, and for INLETVALVE3, where these
names refer to I/O blocks that reside in the same compound as the Sequence block that calls the
subroutine label.
You can use subroutines to calculate long integer values for the Monitor block’s ACTPAT using
the new rules for this 32-bit value.
You can save defined objects, including subroutines, as include files, and make them available to
all configured blocks.

Subroutine Heading and Formal Arguments


The heading specifies the name of the subroutine and the formal arguments (if any).
Formal arguments are defined at subroutine definition. The data types of the formal arguments
can be boolean, long, real, or string (scalars and/or arrays). Whole arrays can be passed as argu-
ments to subroutines.
Formal arguments are known and accessible within the subroutine’s statements only. References to
formal arguments can only appear within the subroutine for which they are defined.
There are two categories of formal arguments: IN and INOUT. If no category is specified upon
definition, the default category, INOUT, is assigned. The IN argument provides the subroutine
with a value which is used inside the subroutine. The value can be changed locally within the sub-

Algorithm Structure 117


B0193AV – Rev N 8. Sequence Language

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.

Subroutine Local Variables


This section of the subroutine definition enables you to define the subroutine’s local variables.
Subroutine local variables are optional. They are only known and accessible within the subroutine
in which they are defined. They cannot be accessed in the block’s statements section, or from
another subroutine, or by means of GETVAL or SETVAL from outside the block.
Subroutine local variables provide local data storage for values, or intermediate results. When a
subroutine is called, the initial values of its local variables are undetermined.
Subroutine local variables can be multi-dimensional and their number and size are user- definable.
Permitted data types of subroutine local variables are the same as for block local variables: bool-
ean, long, real, or string (scalar or array).
Subroutine local variables can use all names normally used for standard block parameters, for
example, ACTIVE, PAUSED, BLKSTA, and so forth, except for the following five names:
♦ OP_ERR
♦ STMNO
♦ SUBRNO
♦ SBXNO
♦ STEPNO.
Local subroutine variables are referenced by their declared names. There are no user-label names
for subroutine local variables.

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.

Calling the Subroutine


The CALL statement serves to execute the subroutine denoted by the subroutine name. The
CALL statement can contain a list of actual arguments which are substituted in place of their cor-
responding formal arguments defined in the subroutine definition. The correspondence is estab-
lished by the position of the arguments in the list of formal and actual arguments, respectively.
When called, a subroutine executes its statements sequentially while its calling statement waits for
the subroutine to complete.

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

Algorithm Structure 119


B0193AV – Rev N 8. Sequence Language

♦ In the case of nested subroutines, a local subroutine variable.


An actual INOUT argument cannot be:
♦ An item of data type string with a subset specification
♦ An external reference
♦ A constant
♦ A literal
♦ An expression.
Upon call, the actual counterpart of an IN argument can be:
♦ A constant
♦ A name of:
♦ A user parameter (input, output, string, array)
♦ A local block variable
♦ In the case of nested subroutines, a formal argument
♦ In the case of nested subroutines, a local subroutine variable
♦ An external reference
♦ An expression that combines the categories listed above.
Any arithmetic expression is allowed for actual IN arguments, including external references.
Full blown string expressions are not allowed. Only string literals can be specified as IN argu-
ments. When a string expression is used as an IN argument, the comma denoting a concatenation
of string elements cannot be distinguished from a comma which separates the arguments of a sub-
routine.
The corresponding formal argument represents a local variable of the called subroutine, and the
current value of the expression is initially assigned to this variable.
If an actual argument is an array element, the index expressions are evaluated when the subroutine
is called.

Subroutine Examples

Subroutine with No Arguments


From the subroutine definition part of a Sequence block listing:
SUBROUTINE DATA_IN ()
{***********************************************************
* Purpose: Retrieve data from an identified compound *
* Arguments: - none *
* Global variables used in the Subroutine *
* COMP_ID - String containing the compound name for *
* the data to be retrieved - pre-assigned by the *
* calling program. *
* *
* Global variables modified by the Subroutine *
* CF - Compound Flow *
* Valve-Out - Compound valve output *
* LAI - Low Absolute Flow Alarm *
* Dev_Shut - Deviation Shutdown required *
***********************************************************}
STATEMENTS

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

Subroutine with Arguments

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.

From the subroutine definition part of a Sequence block listing:


SUBROUTINE RINSE_FLOW (IN Comp_Id : SI2
INOUT Valve_No: I
Flow : R )
{***********************************************************
* Purpose: Retrieve flow-rate from an identified valve *
* Arguments: Comp_Id - Compound name *
* Valve_No - Valve number within compound *
* Flow - Flow Rate through the valve *
* *
* Global variables used in the Subroutine *
* Comp_Proc - TRUE when compounds are being processed *
* *
* Global variables modified by the Subroutine - none *
***********************************************************}
STATEMENTS
IF Comp_Proc AND :'Comp_Id'.ON THEN
IF Valve_No = 1 THEN
Flow:= :'Comp_Id':FLOW1_PID.OUT;
ELSEIF Valve_No = 2 THEN
Flow:= :'Comp_Id':FLOW2_PID.OUT;
ELSEIF Valve_No = 3 THEN
Flow:= :'Comp_Id':FLOW3_PID.OUT;
ENDIF;
ELSE
Flow:= -1;
ENDIF;
ENDSUBROUTINE
The Main STATEMENTS Section includes the Subroutine Call statement/s
for the RINSE_FLOW subroutine.
......
CALL RINSE_FLOW (“RINSE_1”, 3, 0);
.......
.......
CALL RINSE_FLOW (ProcName, 2, 0);
.......
ENDSEQUENCE

Algorithm Structure 121


B0193AV – Rev N 8. Sequence Language

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.

Subroutine Trace Mode


In the Subr-Trace mode, you can single-step individual statements of subroutines. You enter the
Subr-Trace mode by writing the value 1 to the parameter TRACRQ. The mode is indicated by
the parameter TRACMD.
When a block is in Subr-Trace mode, and a CALL statement is requested, statement execution is
redirected just before the first statement within a subroutine. You can then single-step through the
subroutine statements by toggling the parameter NXTSTM. If a subroutine contains a CALL
statement then the statements of the nested subroutine can be single-stepped.
The parameter STMRQ always refers to statements within the block’s main code section. This
enables you to redirect statement execution from a (nested) subroutine statement to a block state-
ment by setting STMRQ.
When the block parameter SUBRNO is set to denote the currently called subroutine, the param-
eter STMNO shows the number of the current HLBL statement within the subroutine:
♦ During execution of the subroutine statements
♦ During suspension of a subroutine statement
♦ When a subroutine statement yields an operational error.
The statements of each subroutine are numbered starting from one. Upon a switch to Auto, block
execution proceeds starting at the statement that was reached in Subr-Trace mode.

Standard Block Exception Handlers (SBXs)


Five new sections of the sequence block definition consist of standard block exception handlers,
SBXs. In an SBX, logic can be specified for execution after detection of a specific event. Such an
event can be an operation error (user errors and system errors) or a change of the block’s state to
Inactive, to Manual, or to Paused.

Main Statement Section


The main statement section contains HLBL statements that specify the sequence block’s actions.
You must declare, in the heading section, any user-labeled parameters addressed in the statement
section. You do not need to declare standard parameters and shared variables from other blocks
and applications (refer to “References” on page 127).
Statement labels enable the program to redirect to a specific statement by referencing the state-
ment label in a GOTO statement, or in a GOTO clause in statements like SENDCONF, WAIT-
UNTIL, or ACTIVATE. A statement label is an identifier enclosed by << and >>, and placed
before the HLBL statement. You can also use statement labels within subroutines and SBXs. See
Table 8-2 “Sequence Compiler Limits” on page 143 for label related limits.
Example:

122
8. Sequence Language B0193AV – Rev N

<<FLOW_MEAS>> RI0001 := Flow;


enables the program, with the statement GOTO FLOW_MEAS, to redirect to the HLBL
statement, RI0001 := Flow;.

Steps and Step Labels


The block’s main code section is divided into steps. Steps cannot overlap and they are contiguous.
All the HLBL statements within the block’s main code belong to a step.
By default, the block’s main section is divided into two steps: INIT_STEP and END_STEP.
INIT_STEP, starting at the first statement, contains all the statements of the block’s main code
section up to the first statement of the next step. END_STEP consists of the last statement of the
main code section, which is always the ENDSEQUENCE statement. You need not define the
step labels INIT_STEP and END_STEP before referencing them.
You can subdivide the block’s main code section into more steps by labeling HLBL statements
with step labels, making labeled statement the first statement in the new step. The step ends with
the next step label.
Subroutines and SBXs cannot be subdivided into steps.
Step labels enable the program to redirect to a specific group of statements by referencing the step
label in a GOTO statement, or in a GOTO clause in statements like SENDCONF, WAITUN-
TIL, or ACTIVATE. A step label is an identifier enclosed by $$ and $$, and placed before the first
HLBL statement in the step.
Example:
$$Draining$$ RI0001 := Flow;
enables the program, with the statement GOTO DRAINING, to redirect to the HLBL
statement, RI0001 := Flow;.
Step labels can be used in GOTO commands in the same way as statement labels. The block
parameters STEPMD, STEPRQ, and STEPNO refer to the steps defined by these step labels.
Step labels also define the group of HLBL statements to be executed when block operates in the
Semi-Auto (or Step) mode.

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.

Data Types 123


B0193AV – Rev N 8. Sequence Language

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.

Declaration of User Labeled Parameters


The syntax is as follows:
user parm decl =
user_label_name ‘:’ user_parm_name |
empty .
user label name =
identifier10 .

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

user string parm name =


SN00nn (where nn = 01 -- 10) .
user array parm name =
BA000n (where n = 1 -- 4) |
IA0001 |
RA000n (where n = 1 -- 2) .
A user label cannot be one of the names of the standard parameters, of the
block local variables, or of the constants.

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.

Character Set 125


B0193AV – Rev N 8. Sequence Language

Table 8-1. Special Symbols (Continued)

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

AND ENDFOR GOTO SENDMSG WAIT


BAD ENDIF IF START_TIMER WHEN
CASES ENDMONITOR MOD STATEMENTS WHILE
DIV ENDSEQUENCE MONITOR STOP_TIMER
DEPENDENT_SEQUENCE EXCEPTION_SEQUENCE
INDEPENDENT_SEQUENCE

Additional keywords include:


ABS ACTIVE BIT_PATTERN BLOCK_EXCEPTION
BLOCK_NAME BLOCK_STMNO CALL COMPOUND_NAME
CONSTANTS DISABLE ENDEXCEPTION ENDSUBROUTINE
EXCEPTION INACTIVE MULT_ARRAY OP_ERR
ORD RETRY ROUND SBXNO
SENDMSG SENDCONF SET_ARRAY SET_SBXS
SQRT STEPNO STMNO STRING
SUBRNO SUBROUTINE SUBR_LEVEL SUM_ARRAY
TRUNC USER_LABELS VARIABLES

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

A reference to the user-labeled parameter in the statement section of block1:


ERR_FLG := TRUE;
A reference to a standard block parameter in the statement section of block1:
BI0001 := TRUE;
Internal reference formats are described in “Reference Format” on page 128.

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

Other examples of valid string comparisons include:


1. BO0001 := LoopNamesArr[14] = SN0005 ;
2. IF SN0003 ( 61 .. 72 ) = “TempLoop1988” THEN ...
3. BI0001 := STRING :COMP4711:BLK0011.SN0010 = “COMP002” ;
4. SUBROUTINE PQR ( IN arg1 : S80; INOUT arg2 : S12[2] )
VARIABLES
STATEMENTS
II0001 := 5 ;
BI0001 := (arg1[ II0001 .. 9 ] = arg2[1] );
ENDSUBROUTINE
.
.
.
strarr[1] := “FC101”
CALL PQR ( “ FC101”, strarr ); {this sets BI0001 True}

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

Operator Operation Type of Operand Type of Result


Relational
= Equality Both boolean or both compatible Boolean
<> Inequality Both boolean or both compatible Boolean
<=
Less than or equal Compatible Boolean
>=
< Greater than or equal Compatible Boolean
> Less than Compatible Boolean
Greater than Compatible Boolean
Logical Dyadic
AND Logical and Boolean Boolean
OR Logical or Boolean Boolean
String Dyadic
, Concatenation B, I, R, S, S12, S6 String

Where: Integer/Real = Integer if both operands are integers; real otherwise.


Compatible means the operands must be of the same data type or one operand must be integer
and the other must be real. In the latter case, the integer value is changed to real before the opera-
tor is applied.

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 Arithmetic Functions Array Functions


TRUNC ABS SET_ARRAY
ROUND SQRT SUM_ARRAY
ORD MULT_ARRAY

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

RA0001 := SET_ARRAY (0) ;


BA0001 := SET_ARRAY (II0008 < 3 OR BI0024) ;
STR_A2 := SET_ARRAY (“Initialized String ”) ;

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] )

MULT DIMENSIONAL ARRAY MANIPULATION


Sequence logic can manipulate a two dimensional array as follows.
In the VARIABLES section, an array is defined as follows:
array_name : I[i, j];
where : I is the type
i, j are the number of rows and columns respectively
In the STATEMENTS section, a specific row x and column y can be assigned a value z as
follows:
array_name[xx,y] := z;
In this example, the STATEMENTS section can include a specific row x and column y to be
monitored by a writeable integer input on the Sequence block’s detail display as follows:
II0001 := array[x,y] ;

Operator Order of Precedence


To avoid ambiguity when evaluating an expression, operators are evaluated in the following order:
1. Unary operators (+, -, NOT) and functions
2. Multiplying Operators (*, /, DIV, MOD)
3. Arithmetic Operators (+, -)
4. Relational Operators (=, <>, <=, >=, <, >)
5. Logical Operators (AND, OR).
Operators in parentheses are evaluated prior to other operators regardless of the order of
precedence.

138
8. Sequence Language B0193AV – Rev N

Data Type Checking


The data type of operands and operators in an expression must be consistent. Data consistency is
checked either during compilation or run time, depending on the type of operand.
If an operand contains an internal reference (parameter or parameter status attribute that belongs
to the block), its data type is known by the sequence block compiler and it can be checked for
consistency during compilation.
If an operand contains an external reference (a parameter, shared variable, or timer that belongs to
another block or application), its data type is not known by the compiler; therefore, consistency
cannot be checked until run time.
When data type consistency is checked at run time, inconsistencies are handled as follows:
♦ If an integer value appears where a real value is expected, the integer value is changed
to real.
♦ If any other type inconsistency occurs, it causes a run time operational error. Refer to
Appendix A “Sequence Control Printed Error Messages” in this document for lists of
operational errors.

Reference Connection Checking


References used in Sequence language statements have connection properties associated with
them. A reference can be connectable, settable, both, or neither.
Any parameter linked to another parameter or a shared variable, either to receive data or to send
data, must be a connectable parameter. If the parameter is to send data to the linked parameter or
shared variable, it can be either a connectable output or a connectable input parameter. If it is to
receive data from the linked parameter or shared variable, it must be a connectable input parame-
ter.
You define parameter linkages by means of the Integrated Control Configurator. The ICC’s block
functions, Edit Standard Parameters and Edit All Parameters, allow you to specify connections
to another parameter or to a shared variable. However, since the HLBL compiler cannot recognize
these linkages, they cannot be verified until run time.
Some Sequence language statements, such as ABORT, ACTCASES, ASSIGNMENT, ACTI-
VATE, START_TIMER, and STOP_TIMER set the value of a reference (block, parameter,
timer, or shared variable). When using one of these statements, the reference must be settable.
Internal references are settable with HLBL statements and are checked during compilation.
The settability of external references cannot be checked until run time.
In sequence blocks, as in all other blocks, output parameters are secured when a block is in Auto.
Input parameters are secured when they act as a data-sink in a linkage or connection.

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.

Data Type Checking 139


B0193AV – Rev N 8. Sequence Language

♦ 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 uppercase.
♦ 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.
SBX1, for user errors (OP_ERR = 2000 ... 3000) enables sequence blocks to suppress error mes-
sages and execute error handling logic. This logic can either re-execute the erroneous statement, or
move to the statement following the erroneous statement. You can also define SBX1 to count
errors and/or to output a user-specific message. SBX2 provides the same capability for system
errors (all errors outside the 2000 to 3000 range).

Bad Status Attribute


If a communications error occurs, the parameter’s Bad status bit is set to indicate that the value is
invalid. The Bad status bit can be set because a point, channel, or Fieldbus Module fails, or
because there is a mismatch between an Equipment Configurator block and a Fieldbus Module.
When a Sequence language expression is evaluated, if any operand (internal or external reference)
has the Bad status attribute set the result of the expression has the Bad status attribute set.
However, if the Bad status attribute is set as a result of evaluating an expression in a FOR, IF,
REPEAT, WAIT, or WHILE statement, it is ignored and the value is interpreted as if it were not
set.
In a Monitor (MON) block, if the Bad status attribute is set as a result of evaluating an expression
in the Monitor Case statement, the expression value is interpreted as false. The value of Bad status
attribute is sent to the Boolean output parameter associated with the expression.

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

The # sign must be the first character of a line of text.


The /* and */ comment markers can also be used. Note that this comment is stripped by the pre-
processor and, therefore, it does not appear in the error and listing file nor in the operator repre-
sentation module.

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.

AW70 Users Only:


Included files can include other files. This nesting level is only limited by the resources as deter-
mined by the Windows NT environment.
The preprocessor scans the sequence include directory. It is:
/opt/fox/ciocfg/sequeninclude
The syntax of the include file statement is as follows:
#include “ file_name ”
Include files are to be created outside the Control Configurator environment as follows:
♦ Change directory into the sequence include directory.
♦ Using an editor, create needed files to be included.

UNIX Platform Users Only (from here to end of chapter)


Included files can include other files. This nesting level is only limited by the resources as deter-
mined by the VENIX environment.
The preprocessor scans the sequence include directory.
For VENIX platforms, it is:
/usr/fox/ciocfg/sequeninclude
For SUN platforms, it is:
/opt/fox/ciocfg/sequeninclude
The syntax of the include file statement is as follows:
#include “ file_name ”
Include files are to be created outside the Control Configurator environment as follows:
♦ Go to host AP for the CP for which you are creating sequence blocks.
♦ Change directory into the sequence include directory.
♦ Using vi editor, or any available means, create needed files to be included.

Preprocessor Directives 141


B0193AV – Rev N 8. Sequence Language

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

Example of include file statement from sequeninclude library:


#include “/usr/fox/ciocfg/sequeninclude/ind.subrs”

Sequence Compiler Limits


Prior to the 4.2 Release
One set of sequence compiler software limits applies to all AP platforms.
The maximum size of a sequence block allowed by the sequence compiler on all AP platforms is
8450 bytes (including parameters and interpretive code, that is, the .i file).
The maximum size of a sequence block allowed by all CP platforms is 10000 bytes (including
block header, parameters, and interpretive code).

Starting from the 4.2 Release


The sequence compiler on VENIX platforms (AP20/PW) uses the same set of software limits as
before.
The sequence compiler on SunOS/Solaris platforms (AP50/AW50/AP51/AW51) uses a new set of
software limits to allow bigger sequence programs to be compiled.

142
8. Sequence Language B0193AV – Rev N

The maximum size of a sequence block allowed by the sequence compiler on


AP50/AW50/AP51/AW51 platforms is 30000 bytes (including parameters, and interpretive code,
that is, the .i file).
The maximum size of a sequence block allowed by CP30/CP40 and equivalent platforms is
32000 bytes (including block header, parameters, and interpretive code).
You can configure the size limit of a sequence block to a maximum of 32000 bytes (including
block header, parameters, and interpretive code) solely for the purpose of ensuring contiguous
memory allocation for sequence blocks in the CP (not for changing the limits imposed by the
compiler).
A sequence block with more than 10000 bytes (compiled size) cannot be compiled on AP20/PW
or processed by CP10 platforms; such sequence blocks can only be compiled on
AP50/AW50/AP51/AW51 and processed by CP30/CP40 or equivalent platforms.

Sequence Compiler Limits Table


The columns labeled A and B in Table 8-2 have the following meanings:
A: Software limits used by:
All AP platforms with I/A Series release prior to 4.2
And AP20/PW platforms with I/A Series release 4.2 or later.
B: Software limits used by:
AP50/AW50/AP51/AW51 platforms with I/A Series Release 4.2 and later.

Table 8-2. Sequence Compiler Limits

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

Sequence Compiler Limits Table 143


B0193AV – Rev N 8. Sequence Language

Table 8-2. Sequence Compiler Limits (Continued)

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

Statement Format Conventions


In the following alphabetized list of statements, the statement format is described using these con-
ventions:
[] Square brackets enclose optional lexical units.
... Ellipses indicate that a lexical unit or series of lexical units can
be repeated.
UPPERCASE Indicates keywords that must be typed exactly as they appear.
lowercase Indicates lexical units that are variable.

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.

WHERE RIGHT HAND SIDE OF ASSIGNMENT

AE = Arithmetic Expression Non-String Internal Reference


CE = Compiler Error Message
SE = String Expression String-Type Internal Reference

External Reference

‘STRING’ External Reference


LEFT HAND SIDE OF ASSIGNMENT

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

Scalar String Assignment


Example:
SN0007 := “Hello”

Scalar Arithmetic Assignment


In an arithmetic assignment, the left hand value can be:
♦ An external reference
♦ A user parameter (labeled or not)
♦ A local block variable

Assignment, Scalar 149


B0193AV – Rev N 9. HLBL Statements

♦ A local subroutine variable


♦ A formal subroutine argument.
External references can be any compound or block parameter or shared variable including stan-
dard parameters of the block that is defined. An operational error occurs if the assignment violates
the access restrictions of the external reference.
Internal references are governed by the following rules:
♦ The left value can be a user Output and Input parameter.
♦ If the left value is an Input parameter that is secured, the value is not assigned and the
block raises an operational error 2317.
♦ Standard parameters of the Sequence block cannot be the left value when addressed
using an internal reference.
♦ Connection status fields (SECURED, ON, and BAD) can only be read in HLBL
statements, that is, they can only appear on the right hand side of an assignment.
They cannot be set to some value by means of an assignment statement.
The data types of the reference and the value yielded by evaluating the expression must be com-
patible as follows:
♦ If the right value is integer, the left value must be either real or integer and the right
value is coerced appropriately.
♦ If the right value is real, the left value must be real. The expression can be pro-
grammed to deliver an integer using the TRUNC or the ROUND function.
♦ If the right value is Boolean, the left value must be Boolean.
When the data type is not known at compilation time, a check is performed at run time. At that
time, if the right value appears to be a real and the left value is an integer, the right value is coerced
automatically as if the ROUND function were specified. Any other data-type mismatch at run time
raises an operational error.
Any failure, not described above, that occurs during execution of the assignment statement, is
treated as an operational error.
If the conversion of a real value causes overflow, because the converted value does not fit into a
long integer, an appropriate minimum or maximum value is substituted for the result.

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];

Assignment, Array 151


B0193AV – Rev N 9. HLBL Statements

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

Monitor Case 157


B0193AV – Rev N 9. HLBL Statements

♦ Constants definition and the user-label declaration preceded by keywords.


Before you have added any cases, the HLBL source of a monitor looks like this:
MONITOR
0001 ;
0002 ;
0003 ;
0004 ;
0005 ;
0006 ;
0007 ;
0008 ;
0009 ;
0010 ;
0011 ;
0012 ;
0013 ;
0014 ;
0015 ;
0016 ;
ENDMONITOR

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:

s is a sign character (+ or -).


x is a digit. One digit before the decimal point and up to six digits after
the decimal point maximum.
e is the symbol for exponentiation.
yy is the exponent, a maximum of two digits.

For example: +0.000000e+00, -1.234567e-12


♦ A boolean value is converted into the string FALSE or TRUE.
♦ An integer value is converted into a string of digits. A negative integer value is pre-
ceded by a minus sign. The length of the string produced depends on the size of the
value.
♦ An enumerated value is converted using the ORD function and then treated like an
integer. The symbolic value is not converted into string format.
There are four message groups in a sequence block: namely, MSGGR1, MSGGR2, MSGGR3,
and MSGGR4. You can assign each of these parameters to one of eight message groups.
Prior to the I/A Series Version 4.0 software release, you could make this assignment only to mes-
sage group numbers 1 to 3, since only the three message groups in a compound were available to
the blocks.
For Version 4.0 and later, the Station block includes five additional alarm groups. These groups
are available to all blocks in any compound in that station as message group numbers 4 to 8. As in
previous versions, each block has its own compound groups available as message groups 1 to 4.
To send a message to message group 5:

Sendmsg 161
B0193AV – Rev N 9. HLBL Statements

1. Configure the MSGGRx block parameter value to 5 (where x = 1 to 4).


2. Use the following HLBL statement (where x = 1 to 4):
SENDMSG (“user’s message”) TO MSGGRx
In this example, the message is sent to all logical devices assigned to group 5.
Up to eight (8) logical devices can be assigned to each message group in a compound,
via the GRxDVy parameters ( x = 1 to 3, and y = 1 to 8). Each of these parameters can
be configured to contain the logical name of the device. A logical device belongs to
only one message group.
Up to 16 logical devices can be assigned to each message group in the Station block,
via the GRx and DVnn parameters (x = 1 to 8, and y = 1 to 16). The DVnn parame-
ters can be configured to contain the logical names of the devices. The GRx parame-
ters are packed Boolean bit maps that can be configured to specify which of the DVnn
devices belong to message groups x. The same logical device can belong to more than
one group.
In the above example, to send the message to logical devices 1, 3, 9, and 15 in message
group 5, you should configure the following Station block parameters:

DV1 <logical_name>
DV3 <logical_name>
DV9 <logical_name>
DV15 <logical_name>
and
GR5 0xA082

where:

0x specifies hexadecimal notation


A= 1010 in binary for devices 1 and 3
0= 0000 in binary for no devices
8= 1000 in binary for device 9
2= 0010 in binary for device 15

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:

E which enables the corresponding SBX


D which disables the corresponding SBX
- which disregards the corresponding SBX

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.

SBX Number SBX Function


1 System error handler, OP ERR = no user error
2 User error handler, OP ERR = 2000 .. 3000

Set_sbxs 163
B0193AV – Rev N 9. HLBL Statements

SBX Number SBX Function


3 Transition logic for switch to Inactive
4 Transition logic for switch to Manual
5 Transition logic for switch to Paused

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

Run-Time Data Conversion Errors


Table A-1. Run-Time Data Conversion Errors

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

HLBL Semantics Violation Errors


Table A-2. HLBL Semantics Violation Errors

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

Environmental Interaction Errors


Table A-3. Environmental Interaction Errors

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

Sequence Control Block System Errors


If the OP_ERR assumes one of the following values, a more serious error has occurred (that is, the
block is incorrectly installed, a memory corruption has occurred, and so forth). The error condi-
tion encountered is one that is normally checked by the HLBL compiler or the run-time system.
Carefully examine the possible cause of one of the following errors before any further block pro-
cessing is performed.

Table A-4. Sequence Control Block System Errors

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

Environmental Interaction Errors 169


B0193AV – Rev N Appendix A. Sequence Control Printed Error Messages

Table A-4. Sequence Control Block System Errors (Continued)

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

CPGET/CPSET Error Messages


The following codes are database access return codes generated by cpget(), cpset(), cpsecure(),
and/or cprelease(). These codes are returned to OM software in response to user
OPEN/CLOSE/GETVAL/SETVAL calls.

Table A-5. CPGET/CPSET Error Messages

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])

The following are Object Manager error/exception message codes.

CPGET/CPSET Error Messages 171


B0193AV – Rev N Appendix A. Sequence Control Printed Error Messages

Table A-6. Object Manager Error Codes

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

Table A-6. Object Manager Error Codes (Continued)

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

CPGET/CPSET Error Messages 173


B0193AV – Rev N Appendix A. Sequence Control Printed Error Messages

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

ladder logic diagram source file 89


remove all compounds, ECBs, and blocks 58
sequence logic 96
sequence logic source file editor 103–107
Fix all 56
Formatted sequence program listing
sequence logic 98
Function keys 3
Functions
FBM 56
selecting 3
sequence logic 97

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

the contents of a diskette to the currently-selected buffer


paste, volume, or station 59
Loading
balancing 27

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

Run time data conversion error messages 168

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

The Foxboro Company


33 Commercial Street
Foxboro, Massachusetts 02035-2099
United States of America
http://www.foxboro.com
Inside U.S.: 1-508-543-8750 or 1-888-FOXBORO (1-888-369-2676)
Outside U.S.: Contact your local Foxboro representative.

Printed in U.S.A. 0301


An Invensys company

You might also like