ControlWave Designer Programmer's Handbook

Emerson Remote Automation Solutions - Watertown, CT - BFK

ControlWave™ Designer Programmer’s Handbook

example presented in the Getting Started with ControlWave Designer Manual ( part number D301416X012). It is designed to explain various concepts to first -time ControlWave users. In addition, please review the quick setup guide for your particular controller (see next

controlwave-designer-programmer-s-handbook-en-178780
ControlWave Designer Programmer's Handbook
D301426X012 August 2020
ControlWaveTM Designer Programmer's Handbook
Remote Automation Solutions

ControlWave Designer Programmer's Handbook
D301426X012 August 2020
Application Safety Considerations
 Protecting Operating Processes A failure of this application -- for whatever reason -- may leave an operating process without appropriate protection and could result in possible damage to property or injury to persons. To protect against this, you should review the need for additional backup equipment or provide alternate means of protection (such as alarm devices, output limiting, fail-safe valves, relief valves, emergency shutoffs, emergency switches, etc.).
CAUTION
When implementing control using this product, observe best industry practices as suggested by applicable and appropriate environmental, health, and safety organizations. While this product can be used as a safety component in a system, it NOT intended or designed to be the ONLY safety mechanism in that system.

2

Contents

Contents

ControlWave Designer Programmer's Handbook
D301426X012 August 2020

Introduction .....................................................................................................................1

ControlWave Product Line

1

Manuals You Should Read Before You Read This One

1

What is Covered in this Manual?

1

What Related Documentation is Available?

2

ACCOL III Function Block Library ........................................................................................5

Alarm Configuration .........................................................................................................9

What are Alarms?

9

Where can I get detailed information about these function blocks?

11

Configuring an Analog Alarm

12

Using the ALARM_ANALOG function block

13

Configuring a Logical Alarm

17

Using the ALARM_LOGICAL_ON function block

17

Configuring a Change of State Alarm

19

Application Licensing ......................................................................................................23

Granting a License for a Controller to Run a Standard Application

23

Removing an Application License from a Controller:

24

Viewing a History of Dongle Issue / Remove Operations:

25

Application Parameters ...................................................................................................27

Archive Configuration .....................................................................................................29

What Are Archive Files?

29

Archive configuration involves four basic steps:

30

What can be done with the data from the Archive File(s)?

31

Step 1. Define Archive Files(s) in the Flash Configuration Utility

31

Step 2. In Your ControlWave Designer Project, Identify the variables you want to archive in the

Archive List

36

Step 3. Create an Output List for Accessing the Most Recent Archive Record (OPTIONAL)

37

Step 4. Configure the ARCHIVE Function Block

38

Array Configuration.........................................................................................................41

Audit Configuration ........................................................................................................43

Step 1. Set parameters in the Flash Configuration Utility

43

Step 2. In ControlWave Designer, identify Variables for which you want to maintain Audit Logging

46

Step 3. Configure an AUDIT Function Block

47

BSAP Addressing and Networks .......................................................................................49

What is BSAP?

49

Adding A ControlWave to an OpenBSI BSAP Network in the RTU Wizard

51

Setting the BSAP Local Address and EBSAP Group

52

What is Client/Server Communication?

53

BSAP - Underlying Technical Details (For ADVANCED USERS)

53

BSAP Master Port ............................................................................................................55

Configuring A BSAP Master Port

56

BSAP Slave Port ...............................................................................................................61

Configuring a BSAP Slave Port

61

Communication Ports .....................................................................................................67

Contents

iii

ControlWave Designer Programmer's Handbook
D301426X012 August 2020

How do I configure the Ports on the ControlWave?

81

What are the factory default settings for communication ports?

81

How can the port configuration be changed?

92

Dialing - An Overview

92

Serial Port Sharing between the BSAP Slave and Custom Slave Protocols:

92

Compiling .......................................................................................................................95

Conditional Logic ............................................................................................................97

DataView ......................................................................................................................101

Before you begin:

101

Calling up ControlWave Data in DataView

102

Debugging -- An Overview.............................................................................................105

Starting Debug Mode

105

Using the Watch Window

105

Using the Cross-Reference Window

107

On-line Editing with Patch POU

108

Using the Force/Overwrite Options

109

Setting a Breakpoint

110

Exiting Debug Mode

112

Downloading ................................................................................................................113

Two Methods Available for Downloading

113

Downloading from within ControlWave Designer

114

Downloading Your ControlWave Project from Within ControlWave Designer

117

Downloading using the OpenBSI ControlWave Downloader

119

Starting the ControlWave Downloader

121

Using the ControlWave Downloader

122

Creating Download Scripts for Batch Downloading of ControlWave Controllers

123

Expanded BSAP (EBSAP) Communications .....................................................................127

Expanded BSAP -- The Concept

128

General Requirements for Expanded BSAP (EBSAP):

129

Creating an EBSAP Master

130

OpenBSI Workstation is EBSAP Master

130

ControlWave-series Controller is the EBSAP Master

131

Configuring the Control and Status Arrays

132

Defining the Virtual Nodes

141

Defining the EBSAP Slave Nodes

142

Example 1 -- OpenBSI Workstation is EBSAP Master to 1000 ControlWave controllers

143

Example 2 -- ControlWave Controller is EBSAP Master to 300 ControlWave EBSAP Slaves

146

Flash Configuration Utility -- An Overview ......................................................................149

Starting the Flash Configuration Utility

149

Flash File Access ............................................................................................................155

Viewing a List of Files in the Flash File Area:

156

Uploading a File from the ControlWave to Your OpenBSI Workstation:

156

Copying a File from the OpenBSI Workstation to Your ControlWave:

157

Deleting a File from the ControlWave User Flash Files Area:

157

Refreshing the List of Files:

158

Function Blocks -- Creating ............................................................................................159

Function Block Parameter Name Prefixes.......................................................................165

Historical Data ..............................................................................................................167

iv

Contents

ControlWave Designer Programmer's Handbook
D301426X012 August 2020

What is Historical Data Used For?

167

What types of Historical Data can be saved in the ControlWave Controller?

167

How is Audit Trail and Archive Data Retrieved from the ControlWave Controller?

168

I/O Configurator............................................................................................................169

Tables of Board Types

174

Analog Boards

179

Digital Boards

183

High Speed Counter (HSC) Boards

185

Remote I/O Status Board

186

System Controller Board

186

CWM_RTU Board

187

Notes About Ethernet I/O Boards

187

HART Interface Board (CWM_HIB)

193

I/O Mapping..................................................................................................................197

Common Device Map

197

Local I/O - ControlWave

198

Ethernet I/O

206

ControlWave I/O Expansion Rack Boards

218

Local I/O -- ControlWave MICRO-series

229

Local I/O -- ControlWave GFC-CL and ControlWave XFC

242

Local I/O -- ControlWave Express and ControlWave GFC

248

Local I/O -- ControlWave CW10, CW30, CW35

256

I/O -- ControlWave CW_31

261

ControlWave MICRO I/O Expansion Rack

269

I/O Simulator ................................................................................................................283

What is the I/O Simulator?

283

Starting the I/O Simulator

283

Analog Boards

287

Digital Boards

288

Counter Boards

288

Viewing the Board Configuration Status

289

Configuring a Pin

289

Viewing Simulated Alarms

290

Shutting Down the I/O Simulator

290

Troubleshooting Tip

290

IP Addressing and Networks ..........................................................................................293

What is the Format of IP Addresses?

293

Adding a ControlWave to an IP Network with the RTU Wizard

298

Setting up IP Ports in the Flash Configuration Utility

299

Recommended Ranges for IP Addresses

299

IP Parameters................................................................................................................301

IP Ports - Ethernet .........................................................................................................307

IP Ports -- PPP ................................................................................................................309

IP Routes.......................................................................................................................311

Libraries ........................................................................................................................315

Memory Usage..............................................................................................................319

Some Background - What is Memory?

319

What is Downloading?

319

Types of Memory in the ControlWave Process Automation Controller (CW PAC)

320

Contents

v

ControlWave Designer Programmer's Handbook
D301426X012 August 2020

What happens in the event of a power failure or the power switch is turned off?

323

What happens in the event of a watchdog condition?

323

What happens on restart after a power failure or watchdog?

324

Variations when using ControlWave MICRO/EFM

327

Variations when using ControlWave GFC/GFC-CL, XFC, Corrector, Express or ExpressPAC

328

Variations when using ControlWave_10/ _30/ _35 (CW_10, CW_30, CW_35)

329

Memory Allocation Issues

330

Determining POU Size at Compilation Time

330

Resolving "Not Enough Memory" Messages

330

Modbus Configuration ..................................................................................................335

Configuring Your ControlWave Controller as a Modbus Master Device

335

Configuring Your ControlWave Controller as a Modbus Slave or Enron Modbus Slave Device 339

Modbus Ports................................................................................................................341

Configuring Modbus Ports

341

Reset ControlWave Utility .............................................................................................343

Security ........................................................................................................................345

Other Security-Related Issues

351

Security Protocols (CHAP and PAP) ................................................................................355

Security Protocols (CHAP and PAP) Used on PPP Links

355

Challenge Handshaking Authentication Protocol (CHAP)

355

Password Authentication Protocol (PAP)

358

System Tasks (Warm/Cold Starts)..................................................................................361

System Variables...........................................................................................................363

Using the System Variable Wizard

363

System Variable Mapping Charts

367

Static Memory Area:

392

Using the System Variable Viewer

395

Variable Extension Wizard .............................................................................................399

Before You Begin

399

Starting the Variable Extension Wizard

399

Using the Variable Extension Wizard

400

Marking a Variable for Report by Exception (RBE) Collection

403

Configuring a Variable as an Alarm

404

Creating / Editing a List

406

Setting initial values for Manual or Alarm Inhibit/Enable Flags

408

Assigning Units Text (Analog Variables ONLY)

409

Assigning ON/OFF Text (BOOL Variables ONLY)

410

Creating Descriptive Text for the Variable

411

Saving the Initialization Files and Exiting the Wizard

412

Format of Initialization Files

412

Troubleshooting Tips

417

Variables and Data Types ..............................................................................................419

Global Variables Vs. Local Variables

419

Variable Addressing

420

System Variables

421

Data Types

421

Notes about STRING variables .........................................................................................................422

Variable Naming Conventions .......................................................................................423

vi

Contents

ControlWave Designer Programmer's Handbook
D301426X012 August 2020

Versions and Compatibility............................................................................................425

Virtual Ports ..................................................................................................................441

VSAT Slave Port -- Configuration ....................................................................................443

Configuring Flash Parameters

443

Configuring System Variables

444

VSAT Master Ports

446

Using Web Pages ..........................................................................................................447

Other Notes About Using Web Pages

448

Calling Up Web_BSI Pages

449

Creating Your Own Web Pages to Use with the ControlWave

451

Appendix A: Troubleshooting Tips .................................................................................453

Using the Debug Information Tool

458

Other Debugging Tools (BTCP Spy, DLM Monitor)

462

Appendix B: ControlWave Designer Compatibility Issues................................................463

Bringing an Older ControlWave Project into a Newer Version of ControlWave Designer

463

Warning - I/O Configurator and Multiple Copies of ControlWave Designer

464

Contents

vii

Introduction

ControlWave Designer Programmer's Handbook D301426X012 August 2020

ControlWave Product Line
Unless otherwise noted, the information in this manual applies to any controller in the ControlWave product line, including:  ControlWave Process Automation Controller  ControlWave Low Power (LP) Controller  ControlWave Redundant Controller  ControlWave MICRO Controller  ControlWave Electronic Flow Meter (EFM)  ControlWave Gas Flow Computer (GFC)  ControlWave Gas Flow Computer Plus (GFC Plus)  ControlWave Explosion-Proof Gas Flow Computer (XFC)  ControlWave Express / Express Process Automation Controller  ControlWave Corrector
Manuals You Should Read Before You Read This One
Before you read this document, we strongly recommend you read, and try out, the example presented in the Getting Started with ControlWave Designer Manual (part number D301416X012). It is designed to explain various concepts to first-time ControlWave users. In addition, please review the quick setup guide for your particular controller (see next page for the proper document) which contains notes about how to initially set up your ControlWave Controller, and how to configure certain parameters for first-time use. The ControlWave Designer Programmer's Handbook (which you are reading right now) builds on the information contained in these other documents, so it is essential that you are familiar with the material included in them.
What is Covered in this Manual?
The ControlWave Designer Programmer's Handbook is intended to provide you the information you need to get the most out of your ControlWave Designer software. It includes:

Introduction

1

ControlWave Designer Programmer's Handbook D301426X012 August 2020
 Examples of how to configure various sub-systems of ControlWave software, which are commonly required in process control applications, such as: alarming, and historical data collection.
 Instructions for how to create your own function blocks, and how to create a library of them, so they can be re-used in other projects.
 Notes about how to use OpenBSI, and BSAP, or IP, to include your ControlWave in a network.
 Explanations about how ControlWave memory works, and how I/O points can be configured.
 Discussions of communication options, as well as how to download your ControlWave project into the ControlWave controller.

What Related Documentation is Available?

For information on this...
 ControlWave Designer
 IEC 61131 terminology and languages  Projects, Project Tree, POUs, Tasks,
Resources  ACCOL3 library  PROCONOS library  Flash Configuration
 Web Pages  ActiveX controls used with ControlWave  Converting ACCOL II source files (*.ACC)
into ControlWave Projects  ControlWave Process Automation
Controller  ControlWave Low Power (LP) Controller
 ControlWave I/O Expansion Rack
 ControlWave Redundant Controller
 ControlWave MICRO Controller
 ControlWave Electronic Flow Meter (EFM)
 ControlWave Gas Flow Computer (GFC)

Please consult this...
Getting Started with ControlWave Designer (part D301416X012) Online help in ControlWave Designer, accessible through the question mark [?] menu item.
Chapter 5 of the OpenBSI Utilities Manual (part number D301414X012) contains full details on flash configuration. Web_BSI Manual (part number D301418X012). ACCOL Translator User's Guide (part number D301417X012) ControlWave Quick Setup Guide (part number D301415X012) ControlWave LP Quick Setup Guide (part number D301422X012) ControlWave I/O Expansion Rack Quick Setup Guide (part number D301423X012) ControlWave Redundancy Setup Guide (part number D301424X012). ControlWave Micro Quick Setup Guide (part number D301425X012) ControlWave Electronic Flow Meter (EFM) Instruction Manual (part number D301383X012) ControlWave Gas Flow Computer (GFC) Instruction Manual (part number (D301387X1012)

2

Introduction

ControlWave Designer Programmer's Handbook D301426X012 August 2020

For information on this...
 ControlWave Explosion-Proof Gas Flow Computer (XFC)
 ControlWave Express  ControlWave Express PAC  ControlWave Corrector  ControlWave Gas Flow Computer Plus
 ControlWave Ethernet I/O  ControlWave Industrial Ethernet Real
Time Switches

Please consult this...
ControlWave Explosion-Proof Gas Flow Computer (XFC) Instruction Manual (part number D301396X012) ControlWave Express RTU Instruction Manual (part number D301386X012) ControlWave Express PAC Instruction Manual (part number D301384X012) ControlWave Corrector Instruction Manual (part number D301382X012) ControlWave Gas Flow Computer Plus Instruction Manual (part number D301389X012) ControlWave Ethernet I/O Instruction Manual (part number D301395X012) ControlWave Industrial Ethernet Real-time Switches Instruction Manual (part number D301390X012)

Introduction

3

ControlWave Designer Programmer's Handbook D301426X012 August 2020

4

Introduction

ControlWave Designer Programmer's Handbook D301426X012 August 2020

ACCOL III Function Block Library
The ACCOL III Function Block Library is a set of functions and function blocks created by Emerson and included with ControlWave Designer. ACCOL III function blocks are designed to provide ControlWave Designer with the capabilities of ACCOL II modules used in our previous ACCOL II language. This library also includes several newer functions which were not available in ACCOL II.

Note Other function block libraries are available for liquids calculations, and NIST23 calculations. Contact Emerson Remote Automation Solutions division for more information.

For instructions on how to use any of these function blocks, please consult the online help in ControlWave Designer.

Function block or Function
AGA3
AGA3DENS
AGA3I AGA3SELECT AGA3TERM
AGA5 AGA7 AGA8DETAIL
AGA8GROS AGA10 ALARM

Minimum Firmware Revision Required
2.00.00
4.10.00
1.00.00 5.50.00 2.00.00
2.00.00 2.00.00 2.00.00
1.00.00 4.50.00 4.70.00

Description
Computes natural gas volume flow rate through an orifice plate in thousands of cubic feet per hour (MSCFH) according to American Gas Association (AGA) Report #3 1985 Edition. Computes mass and volume flow rate for fluids (gases or liquids) in lbs/hour and cubic ft per hour, for orifice plates, with flange taps ONLY, according to the method explained in the American Gas Association (AGA) Report #3 of August, 1992, 3rd Edition (Part 1 and Part 4). Computes natural gas volume flow rate according to the Factors Method in AGA Report #3. Combines the functions of the AGA3I and AGA3TERM function blocks into a single function block. Computes natural gas volume flow rate through an orifice plate in thousands of cubic feet per hour (MSCFH) according to AGA Report #3 1985 Edition. Allows factor substitution and display. Performs AGA-5 calculations for conversion of computed gas volume to energy equivalents. Performs AGA-7 calculations for base volume rate. Computes Base compressibility, Flowing compressibility and Supercompressibility for natural gas mixtures, according to the Detail Characterization Method in AGA Report 8. Computations for natural gas mixtures according to the Gross Characterization method in AGA Report 8. Computations for natural gas mixtures according to AGA Report Number 10. Used to batch process alarms defined in the Variable Extension Wizard.

ACCOL III Function Block Library

5

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Function block or Function
ALARM_ANALOG

Minimum Firmware Revision Required
1.00.00

ALARM_LOGICAL_ON ALARM_LOGICAL_OFF ALARM_STATE

1.00.00 1.00.00 1.00.00

ANOUT ARCHIVE ARRAY_ANA_GET
ARRAY_ANA_SET
ARRAY_LOG_GET
ARRAY_LOG_SET
AUDIT AUDIT_SELECTED

1.00.00 1.00.00 4.50.00
4.50.00
4.50.00
4.50.00
1.00.00 5.40.00

AUTOADJUST
AVERAGER BTI
CALC_DENSITY
CLIENT
COMMAND COMPARATOR CRC CUSTOM DACCUMULATOR DB_LOAD DEMUX DIAL_CTRL
DIFFERENTIATOR

2.00.00
1.00.00 4.70.00
June 22, 2009 library or newer. 2.00.00
1.00.00 1.00.00 2.00.00 1.00.00 1.00.00 4.00.00 1.00.00 4.00.00
1.00.00

Description
Monitors a process variable and sends a notification message to a remote computer when the variable's value exceeds user defined limits. Monitors a Boolean process variable and sends a notification message to a remote computer when the variable is TRUE. Monitors a Boolean process variable and sends a notification message to a remote computer when the variable is FALSE. Monitors a Boolean process variable and sends a notification message to a remote computer when the variable changes state. Converts and scales signals for hardware analog output. Provides historical storage of signal values. Function. Returns the REAL value of the specified array element. Function. Writes a REAL value to the specified array element. Function. Returns the BOOL value of the specified array element. Function. Writes a BOOL value to the specified array element. Provides historical storage of alarms and events. Allows you to log events for value changes of individual variables or log customized events. The customized events can include standard value change information, alternate values, or NOTE events. You can use the AUDIT_SELECTED FB independently of the AUDIT FB. Performs adjusted volume and self check calculations for an Invensys Auto-adjust Turbine Meter. Computes the time-average and integral. Allows CW_10, CW_30, and CW_35 controllers with the BBTI board to collect data from the Bristol TeletransTM Model 3508 Transmitter. Calculates the mass density of a gas using the real gas relative density (specific gravity) Communicates with other ControlWave controllers that have implemented the Server Function Block. Pulse Delayed Output. Analog signal comparison. Calculates CRC of data stored in an array. Custom Communications Interface. Performs Double Precision Arithmetic. Loads variable information (LISTS) from a text file. Copies a signal value into a list of signals. Establishes a dial-up connection on a given port, or interface to a modem. Differentiates an analog signal.

6

ACCOL III Function Block Library

Function block or Function
DISPLAY ENCODE EVP FIELDBUS
FILE_CLOSE FILE_DELETE FILE_DIR FILE_OPEN
FILE_READ FILE_READ_STR FILE_WRITE FILE_WRITE_STR FPV
FUNCTION GENERIC_SERIAL
GPA8173
GSV HART HILOLIMITER HILOSELECT HSCOUNT HWSTI IEC62591
INTEGRATOR ISO5167
LEAD_LAG LICENSE LIQUID_DENSITY LISTxxx LIST_ELE_NAME MUX PDO PID3TERM PORTATTRIB
PORT_CONTROL

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Minimum Firmware Revision Required
4.20.00 1.00.00 4.50.00 5.10.00
2.20.00 2.20.00 2.20.00 2.20.00
2.20.00 2.20.00 2.20.00 2.20.00 2.00.00
1.00.00 2.00.00
4.50.00
4.50.00 5.00.00 1.00.00 1.00.00 1.00.00 4.80.00 5.50.00
1.00.00 2.00.00
1.00.00 4.90 4.50.00 1.00.00 3.00.00 1.00.00 1.00.00 1.00.00 4.40.00
4.20.00

Description
Provides support for the keypad display. Set/Read System Time, Julian /Wall Time Conversions. Calculates the equilibrium vapor pressure for a liquid. Interfaces with Foundation Fieldbus devices via a bridge server. Function ­ End access to a flash file. Function ­ Remove a file from flash. Function Block ­ Get a listing of files. Retrieve file attributes. Function ­ Start access to an existing flash file or create a new one. Function ­ Read binary data from file. Function ­ Read a line from a file and load into a string. Function ­ Send a buffer of binary data to a flash file. Function ­ Send a formatted string to a flash file. Computes Super Compressibility Factor (FPV) of a gas per AGA Report NX-19. Table lookup and interpolation with arrays. Generic Serial communications serves as a means to buffer user defined data through a serial port. Converts the mass of natural gas liquids to equivalent liquid volumes at base conditions. Converts the gross standard volume for a liquid. Interface to HART field devices via serial port or I/O board. Compares a signal against a high and low limit. Finds highest and lowest REAL values in a signal list. High Speed Counter. Honeywell Smart Transmitter Interface Allows a ControlWave Micro controller with an IEC62591 Interface module to communicate to IEC62591 wireless devices. Computes an integral approximation. Calculates flow rate for Orifice plates, Nozzles, Venturi tubes, and Venturi-nozzle Primary Devices per ISO 51671980 (E), 1980 edition Adds a controlled delay effect. Determines application licenses for the RTU. Calculates the density of liquid at flowing conditions. Define/Expand a list. Returns the variable name for a given list element. Extracts the value of a signal from a list of signals Pulse Duration Output. 3 Mode PID Control. Allows the user to set the port characteristics online (except for the MODE). Communications port manual control.

ACCOL III Function Block Library

7

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Function block or Function
R_INT R_RND RBE RBE_DISABLE

Minimum Firmware Revision Required
1.00.00 1.00.00 4.40.00 5.60.00

REDUN_SWITCH

2.00.00

REG_ARRAY SCHEDULER

1.00.00 3.00.00

SEQUENCER SERVER

1.00.00 2.00.00

STEPPER STORAGE TCHECK

1.00.00 04.40 4.70.00

TOT_TRND USERS_ACTIVE USERS_DEFINED

1.00.00 5.20 5.20

V_ATTRIB_GET

04.50

V_ATTRIB_SET

04.50

VAR_ATTRIB_GET VAR_ATTRIB_SET VAR_CI_PROC

2.10.00 2.10.00 2.10.00

VAR_FETCH

3.00.00

VAR_SEARCH

3.00.00

VIRT_PORT

2.20.00

VLIMIT VMUX

1.00.00 3.00.00

WATCHDOG XMTR

5.60 4.70.00

Description
Function to Truncate to Integer. Function to Round to nearest Integer. Supports Report by Exception Disables selected RBE variables to prevent RBE reporting from them. Function to perform programmed fail-over to Redundant Standby. Register Arrays ­ For HMI Access. Equalizes the elapsed running time of a number of external devices. Provides sequential output control. Communicates with other ControlWave controllers that have implemented the Client Function Block. Sequence up to 255 Boolean Outputs. Stores and retrieve historical data. Provides status checking and data processing for a 3508 Teletrans Transmitter. Computes totals from input and slope of input. Returns information on all currently signed-in users. Allows encrypted access to the security configuration of the ControlWave. This function returns the value of the specified attribute of a variable. This function sets the value of the specified attribute of a variable. Retrieves the value of an attribute for a variable. Sets the value of an attribute for a variable. Performs the CI (Control Inhibit) processing for the given variable. This function block fetches complete information about a variable given its name. This function searches the PDD for variables, both with a given index, and by name. This function block creates a virtual port by defining a connection to a terminal server. Limit an input's rate of change. Extracts the value of a signal from a list of signals and ramps the output to match the input. Activates a watchdog output based on user-defined criteria. Provides read/write access to the memory of a TeleTrans Transmitter, or other compatible device.

8

ACCOL III Function Block Library

Alarm Configuration

ControlWave Designer Programmer's Handbook D301426X012 August 2020

What are Alarms?
Alarms are messages generated by the controller when one or more process variables changes, and that change violates some pre-defined limit or state.
There are three types of alarms:
Analog Alarms­ These alarms are generated when an analog variable (type REAL, INT, etc.) exceeds a pre-defined alarm limit. A return-to-normal message is generated when the variable returns to within the pre-defined limit. Deadbands can be established around the alarm limits so that variables can fluctuate slightly near the alarm limit without constantly going into and out of an alarm state, and thereby flooding the system with repetitive alarms. Analog alarms are configured using the ALARM_ANALOG function block.
Logical Alarms ­ These alarms are generated when a variable of type BOOL enters its 'in-alarm' state. A return-to-normal message is generated when the variable returns to its opposite (non-alarm) state The user chooses which state is the 'in alarm' state by the choice of alarm function block. If its 'in-alarm' state occurs when the BOOL variable becomes TRUE, then the ALARM_LOGICAL_ON function block should be used. if the variable's 'in-alarm' state occurs when the BOOL variable becomes FALSE, then the ALARM_LOGICAL_OFF function block should be used.
Note: The ALARM_LOGICAL_ON and ALARM_LOGICAL_OFF function blocks are identical except that the ALARM_LOGICAL_ON function block generates an alarm when the associated process variable (iaAlarmVar) is TRUE, whereas the ALARM_LOGICAL_OFF function block generates an alarm when the associated process variable (iaAlarmVar) is FALSE.

Alarm Configuration

9

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Change-of-State Alarms ­ These alarms are generated whenever a variable of type BOOL changes state. In this case, there is no such thing as a return-to-normal condition. Change-of-State alarms are configured using the ALARM_STATE function block.

All three types of alarms have various inputs and outputs associated with them. These inputs and outputs are configured within the alarm function block. The following information is common to all three types of alarms:

Alarm Variable Alarm Priority

This is the actual process variable which is to be monitored by the alarm function block. Analog (REAL, INT, etc.) can only be monitored via the ALARM_ANALOG function block. Boolean variables can be monitored by either the ALARM_LOGICAL_ON, ALARM_LOGICAL_OFF, or ALARM_STATE function block(s). The alarm priority is basically a number which indicates the importance of the alarm. There are four priorities supported in the system:

Descriptive Text
Disable

Priority
Event Operator Guide Non-Critical
Critical

Value
0 1
2
3

Meaning
Event alarms are used to indicate normal, everyday occurrences. Operator guide alarms are used to indicate everyday occurrences which are slightly more important than events. Non-critical alarms are used to indicate problems, which, while not serious enough to cause damage to a plant or process, require corrective action. Critical alarms are used to indicate dangerous problems that require immediate attention and/or corrective action.

The choice of which alarm priorities are to be assigned to a particular alarm variable is entirely at the discretion of the user.

Up to 64 characters of descriptive text may be stored along with any alarm message. This text may be changed dynamically by control logic.

Alarm processing for a particular process variable can be turned OFF. This prevents any alarm messages for that process variable from being generated. This might be used in the case of system maintenance or troubleshooting.

Status

Every alarm function block maintains error and status information. Improper configuration is indicated by negative status values, and will prevent execution of the alarm function block. Positive values indicate the variable is in an alarm state. A value of `0' indicates there are no

10

Alarm Configuration

ControlWave Designer Programmer's Handbook D301426X012 August 2020
configuration errors, and the variable is NOT in an alarm state. For a full description of status values, see the on-line help files.

Alarm Sequence #

An alarm sequence number is assigned to each alarm message to uniquely identify it within the Alarm System. Alarm sequence numbers range from 0 to 65,535 and are shared among all alarm function blocks in the alarm system to maintain proper ordering of messages.

Global Sequence #

A global sequence number is assigned to each audit record, archive record, or alarm message to uniquely identify it within the ControlWave controller. Global sequence numbers range from 0 to 65,535 and are shared by all of these sub-systems to maintain proper ordering of messages.

The remaining inputs/outputs configured within the Alarm function block vary depending upon the type of alarm function block being used.

Note Some parameters in the alarm function block may not be required, depending upon your specific application. In addition, if you do NOT intend to change the value of a particular input value, and its parameter only supports a single data type (i.e., its parameter name does NOT have an "ia" or "iany" prefix), you can enter it as a constant, instead of assigning a variable name.
Alternatively, the OpenBSI Alarm Router can be used to view alarms, and offers an interface to custom alarm applications. See the Open BSI Utilities Manual (part number D301414X012) for information on Alarm Router.

Where can I get detailed information about these function blocks?
On-line help is provided within ControlWave Designer for every ACCOL3 function block. To access this, you can right click on the ACCOL3 library icon, and choose "Help on ACCOL 3 Library..." from the pop-up menu.

Important
This section describes the standard method for alarm configuration. Beginning with OpenBSI Version 5.4, an alternate way to create alarms is to use the Variable Extension Wizard and the ALARM function block for batch processing. The Variable Extension Wizard configures the alarms in the controller, but they do NOT appear within your project. For information on this method, see the Variable Extension Wizard section, later in this manual.

Alarm Configuration

11

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Configuring an Analog Alarm
For this example, let's say we have a tank full of water which must be maintained at a certain temperature range. A temperature transmitter is mounted on the tank to measure the current temperature of the water, and it has been decided that the water temperature should be kept between 40.00 C and 70.00 Celsius. Any temperature reading outside of that range indicates an alarm condition.
The figure, below, shows a plot of the value of the variable measuring Celsius temperature in the tank, as it fluctuates over time. Four alarm limits and two deadbands have been defined. Starting from the left of the graph, the value of the variable increases until it reaches 70.00 C, the high alarm limit (see Item 1). At this point a high alarm message is generated, and the variable is considered to be in a `high alarm' state.
The value of the variable continues to increase. When it passes the high-high alarm limit of 90.00 C a `high-high' alarm message is generated (see Item 2). At this point, the variable is considered to be in a high-high alarm state.

The value of the variable then starts to decrease. Although the value passes below 90.00C, it is still considered to be in a `high-high' alarm state because there is a 10.00 high deadband in effect (deadbands are shown as shaded areas on the graph.) When the variable value falls lower than 80.00 C point (90.00 C high alarm limit minus the high deadband of 10.00 C) the variable is no longer in a `high-high' alarm state (See Item 3). It is still however in a `high' alarm state.

12

Alarm Configuration

ControlWave Designer Programmer's Handbook D301426X012 August 2020
As the value of the variable decreases below 70.00 C, it remains in a `high' alarm state until its value falls below 60.00 C (70.00 C alarm limit, minus a 10.00 C high deadband). (See Item 4). At this point, the variable is in its normal range, and a `return-to-normal' alarm message is sent.
Then, however, the value of the variable continues to drop. When it reaches 40.00 C, a `Low Alarm' message is generated (See Item 5).
The variable remains in a `Low Alarm' state until the variable value drops to 20.00 C. (See Item 6). This causes a `Low Low Alarm' message to be generated.
The variable remains in a `Low-Low Alarm' state until the variable rises above 30.00 C, (20.00 C low-low alarm limit plus low deadband of 10.00 C). (See Item 7). The variable is still in a `Low Alarm' state, however.
Once the variable rises above 50.00 C (40.00 C low alarm limit + low deadband of 10.00 C), it has left the low-alarm state, and a `return to normal' alarm message is sent (See Item 8).
As long as the variable remains in the normal range (between 40.0 and 70.00 C), no more alarm messages will be generated.
Using the ALARM_ANALOG function block
Where you insert your ALARM_ANALOG function block depends upon the overall construction of your project:
The ALARM_ANALOG function block can only detect an alarm condition when it is executed. Therefore, when constructing your project, you should think about how and when you want to execute the function block.
 You might choose to place the ALARM_ANALOG function block in the same POU which holds primary control logic for the process variable. This is always required if the variable being monitored is not global. Typically, the ALARM_ANALOG function block would be placed at the end of the POU. If you require timestamps to reflect the exact moment the alarm condition occurred, you could place the ALARM_ANALOG function block immediately following the logic which manipulates the process variable.
 Alternatively, you could place the ALARM_ANALOG function block in a separate POU, which could even be executed at a different task interval. This approach may be convenient if you want to organize your project such that all alarm function blocks are in the same place.
Step 1. Following the considerations discussed above, insert an ALARM_ANALOG function block into your program. A separate ALARM_ANALOG function block is required for every analog variable you want to configure as an alarm.

Alarm Configuration

13

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Step 2. Based on our example of monitoring water temperature in a tank, assign meaningful variable names, and where applicable, initial values to each of the parameters of the ALARM_ANALOG function block.
The actual process variable being monitored for alarm conditions must be assigned to the iaAlarmVar parameter. In this case we will call it WATER_TEMP since that is the process I/O variable from the temperature transmitter.
Now we need to assign alarm limits and deadbands based on our previous discussion of the proper range for the water temperature.
Important You must use the same variable type for alarm limits and alarm deadbands as you use for your alarm variable. For example, if the alarm variable is defined as type REAL, then every alarm limit and alarm deadband for that ALARM_ANALOG function block must also be defined as type REAL. Type mismatches of any kind will prevent the ALARM_ANALOG function block from working and will generate errors on the odiStatus parameter.

14

Alarm Configuration

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Setting Alarm Limits (iaLoLimit, iaLoLoLimit, iaHiLimit, iaHiHiLimit)
We want to generate an alarm when the temperature goes out of the range 40.00 Celsius to 70.00 Celsius, so 40.0 will be our low alarm limit (iaLoLimit parameter) and 70.0 will be our high alarm limit (iaHiLimit parameter). We can also assign Low-Low and High-High alarm limits to generate additional alarm messages if the variable goes much higher or much lower than the Low and High limits. These are on the iaHiHiLimit and iaLoLoLimit parameters, respectively. NOTE: You do not need to use all four limits. Only one alarm limit is required to configure an analog alarm.

Setting Deadbands (iaHiDeadBand, iaLoDeadBand)
We strongly recommend that you define deadbands around your alarm limits. Two deadbands are supported, iaHiDeadBand is applied to the high and high-high alarm limits, and iaLoDeadBand is applied to the low and low-low alarm limits. Deadbands are ranges above a low limit, or below a high limit, in which a return-to-normal message will NOT be sent, even though a process variable has returned inside the range defined by the alarm limits. This is to prevent the system from being flooded with alarm messages if a process variable is fluctuating around the alarm limit. Without a deadband defined, every time the process variable enters or leaves the normal range, a return-to-normal or alarm message would be generated, thereby flooding the system with repetitive alarms, even though the process variable has changed very little. For this example, we have chosen a deadband of 10.0 for both the low and high deadbands.

Setting Alarm Priorities (iiLoPriority, iiLoLoPriority, iiHiPriority, iiHiHiPriority)
Alarm priorities indicate the severity of the alarm condition triggered by passing one of the pre-defined alarm limits. For this example, passing either the low or high alarm limits is considered NON-CRITICAL, and passing either the low-low or high-high alarm limits is considered CRITICAL. The alarm priority has no effect on the operation of the alarm system, and is defined strictly at the user's discretion. Priorities are displayed as part of the alarm message.

Units Text, Descriptive Text (istrUnitsText, istrDescText)

These parameters are strictly for the convenience of the user. They specify engineering units for the alarm variable, and descriptive text for the alarm condition.

The table, below, summarizes the values for the various parameters used in this example:

Parameter Name
ibDisable
iaAlarmVar

Suggested Variable Name
WATER_TEMP_ALARM_DISABLE WATER_TEMP

iaHiHiLimit

WATER_HH_LIMIT

Variable Type
BOOL

Value
FALSE

REAL, SINT, INT, DINT, USINT, UINT, or UDINT REAL, SINT, USINT, INT,

None 90.0

Notes
For disabling/ enabling alarm processing. The actual process variable measuring temperature in the tank. High-high alarm limit

Alarm Configuration

15

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Parameter Name

Suggested Variable Name

iaHiLimit

WATER_H_LIMIT

iaLoLimit

WATER_L_LIMIT

iaLoLoLimit

WATER_LL_LIMIT

iaHiDeadBand

WATER_HDB

iaLoDeadBand

WATER_LDB

iiPriority iiHiPriority iiLoPriority iiLoLoPriority istrUnitsText
istrDescText
odiStatus

CRITICAL_PRIORITY NON_CRITICAL_PRIORITY NON_CRITICAL_PRIORITY CRITICAL_PRIORITY TEMP_UNITS
WATER_TEMP_DESC_TEXT
WATER_TEMP_ALARM_STATUS

ouiAlarmSeq ouiGlobalSeq

WATER_TEMP_ALARM_SEQ_NUM WATER_TEMP_GLOBAL_SEQ_NUM

Variable Type
UINT, DINT, or UDINT REAL, SINT, USINT, INT, UNIT, DINT or UDINT REAL, SINT, USINT, INT, UINT, DINT or UDINT REAL, SINT, USINT, INT, UINT, DINT or UDINT REAL, SINT, USINT, INT, UINT, DINT or UDINT REAL, SINT, USINT, INT, UINT, DINT or UDINT INT INT INT INT STRING
STRING
DINT

Value Notes

70.0

High alarm limit

40.0

Low alarm limit

20.0

Low low alarm limit

10.0

High alarm deadband

10.0

Low alarm deadband

3 2 2 3
'DEG_C'
'WATER TEMPERAT URE'
None

High-High Priority High Priority Low Priority Low-Low Priority Engineering units (up to 6 characters) Descriptive text (up to 64 characters)
Status of the execution of this function block.

UINT UINT

None None

Alarm sequence number. Global sequence number.

16

Alarm Configuration

ControlWave Designer Programmer's Handbook D301426X012 August 2020
The configured alarm block appears, below:

Configuring a Logical Alarm
For this example, let's say we have an electrical switch which turns ON in the event of a compressor power failure. When the switch turns ON, we want to generate an alarm. When the power is restored, the switch turns OFF and a return-to-normal message will be generated.
Because the alarm condition occurs when the switch turns ON, we must use an ALARM_LOGICAL_ON function block. (If we wanted to generate an alarm when the switch turned OFF, we would have used an ALARM_LOGICAL_OFF function block.)
Using the ALARM_LOGICAL_ON function block
Where you insert your ALARM_LOGICAL_ON function block depends upon the overall construction of your project:
 The ALARM_LOGICAL_ON function block can only detect an alarm condition when it is executed. Therefore, when constructing your project, you should think about how and when you want to execute the function block.
 You might choose to place the ALARM_LOGICAL_ON function block in the same POU which holds primary control logic for the process variable. This is always required if the variable being monitored is not global. Typically, the ALARM_LOGICAL_ON function block would be placed at the end of the POU. If you require timestamps to reflect the

Alarm Configuration

17

ControlWave Designer Programmer's Handbook D301426X012 August 2020
exact moment the alarm condition occurred, you could place the ALARM_LOGICAL_ON function block immediately following the logic which manipulates the process variable.
 Alternatively, you could place the ALARM_LOGICAL_ON function block in a separate POU, which could even be executed at a different task interval. This approach may be convenient if you want to organize your project such that all alarm function blocks are in the same place.

Parameter Name
ibDisable iaAlarmVar
iiPriority istrOnText istrOffText istrDescText

Step 1. Following the considerations discussed above, insert an ALARM_LOGICAL_ON function block into your program. A separate ALARM_LOGICAL_ON (or ALARM_LOGICAL_OFF) function block is required for every variable you want to configure as a logical alarm.

Step 2. Based on our example of detecting a change of state of a pump, assign meaningful variable names, and where applicable, initial values to each of the parameters of the ALARM_LOGICAL_ON function block.

The actual process variable being monitored for alarm conditions must be assigned to the iaAlarmVar parameter. In this case we will call it COMPRESSOR_POWER_FAILURE since that is the process I/O variable from the switch.

The table, below, summarizes the values for the various parameters used in this example.

Suggested Variable Name
POWERFAIL_ALARM_DISABLE COMPRESSOR_POWER_FAILURE

Variable Type
BOOL
BOOL

Value
FALSE None

Notes
For disabling/ enabling alarm processing. The ON/OFF status of the switch used to indicate power failure of the compressor.

CRITICAL_PRIORITY POWER_FAIL_ONTEXT POWER_FAIL_OFFTEXT POWERFAIL_DESC_TEXT

INT STRING STRING STRING

3
'FAILED'
'NORMAL'
'WATER TEMPERAT URE'

NOTE: Alarms are only generated when iaAlarmVar is ON. Priority of this alarm condition. ON message text (up to 6 characters) OFF message text (up to 6 characters) Descriptive text (up to 64 characters)

18

Alarm Configuration

Parameter Name
odiStatus
ouiAlarmSeq
ouiGlobalSeq

Suggested Variable Name
POWERFAIL_ALARM_STATUS POWERFAIL_ALARM_SEQ_NUM POWERFAIL_GLOBAL_SEQ_NUM

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Variable Type
DINT
UINT
UINT

Value
None None None

Notes
Status of the execution of this function block. Alarm sequence number Global sequence number

The configured alarm block appears, below:

Configuring a Change of State Alarm
For this example, let's say we have a pump which is critical to the operation of a water plant. Whenever it starts or stops, we want to generate an alarm message. NOTE: In change-of-state alarms, there is NO return-to-normal state; every change from ON-to-OFF or OFF-to-ON generates an alarm message.
Using the ALARM_STATE function block
Where you insert your ALARM_STATE function block depends upon the overall construction of your project:
 The ALARM_STATE function block can only detect an alarm condition when it is executed. Therefore, when constructing your project, you should think about how and when you want to execute the function block.
 You might choose to place the ALARM_STATE function block in the same POU which holds primary control logic for the process variable. This is always required if the variable being monitored is not global. Typically, the ALARM_STATE function block would be placed at the end of the POU. If you require timestamps to reflect the exact moment the alarm condition occurred, you could place the ALARM_STATE function block immediately following the logic which manipulates the process variable.
 Alternatively, you could place the ALARM_STATE function block in a separate POU, which could even be executed at a different task interval. This approach may be

Alarm Configuration

19

ControlWave Designer Programmer's Handbook D301426X012 August 2020
convenient if you want to organize your project such that all alarm function blocks are in the same place.
Step 1. Following the considerations discussed above, insert an ALARM_STATE function block into your program. A separate ALARM_STATE function block is required for every variable you want to configure as a change-of-state alarm.

Parameter Name
ibDisable iaAlarmVar iiPriority istrOnText istrOffText istrDescText
odiStatus ouiAlarmSeq ouiGlobalSeq

Step 2. Based on our example of detecting a change of state of a water pump, assign meaningful variable names, and where applicable, initial values to each of the parameters of the ALARM_STATE function block.

The actual process variable being monitored for alarm conditions must be assigned to the iaAlarmVar parameter. In this case we will call it WATER_PUMP_STATUS.

The table, below, summarizes the values for the various parameters used in this example:

Suggested Variable Name
DISABLE_WATERPMP_STATALRM WATER_PUMP_STATUS CRITICAL_PRIORITY WATER_PUMP_ONTEXT WATER_PUMP_OFFTEXT WATER_PUMP_DESC_TEXT
WATER_PUMP_ALARM_STATUS WATER_PUMP_ALARM_SEQ_NUM WATER_PUMP_GLOBAL_SEQ_NUM

Variable Type
BOOL BOOL INT STRING STRING STRING
DINT UINT UINT

Value Notes

FALSE
None
3
'ACTIVE'
'IDLE'
'WATER PUMP STATE CHANGE'
None
None
None

For disabling/ enabling alarm processing. The ON/OFF status of the water pump. Priority of this alarm condition. ON message text (up to 6 characters) OFF message text (up to 6 characters) Descriptive text (up to 64 characters)
Status of the execution of this function block. Alarm sequence number Global sequence number

20

Alarm Configuration

ControlWave Designer Programmer's Handbook D301426X012 August 2020
The configured alarm block appears, below:

Alarm Configuration

21

ControlWave Designer Programmer's Handbook D301426X012 August 2020

22

Alarm Configuration

Application Licensing

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Certain standard applications sold by Emerson Remote Automation Solutions are licensed to prevent unauthorized duplication. When you purchase the application(s), you will receive a license key (also known as a USB dongle), that will allow you to manage which controllers will be license recipients for the standard applications.

Note: Only ControlWave-series controllers with firmware 04.90 or newer support application licensing.

Granting a License for a Controller to Run a Standard Application

1.

Install the dongle in your PC's USB port, and allow it to be recognized.

2.

Start the Application Licensing Tool, using the following sequence:

Start  Programs  OpenBSI Tools  ControlWave Tools  Application Licensing

3. The Application Licensing Tool will read the dongle, and display the following information:

Application

A list of all the standard application licenses originally issued via this dongle.

RTU State

The license status of a particular controller for a particular standard application. If the controller has not been queried yet, this will display `Unknown'.

Ordered

The total number of licenses included on this dongle, for a given application, when it left the factory.

Available

The total number of licenses, for a given application, which have not yet been issued to controller(s).

Application Licensing

23

ControlWave Designer Programmer's Handbook D301426X012 August 2020

4. Select the controller to which you want to issue the license, using the [Browse] button. (If communication is via NetView, the controller must exist in the current NETDEF file; otherwise select the locally connected `RTU'.)
5. Enter a valid username / password combination for that controller, and click on the [Query RTU License State] button.
6. The application window will be updated to show which applications have been licensed for this controller. Select the application you want to issue to the controller. There must be at least 1 or more listed in the "Available" field.
7. Click on [Issue License]. The license will be granted to the controller, and the "Available" count will be decremented by 1.
8. Repeat this process for any other controllers you want to issue licenses to. When finished, click on [Exit].
Removing an Application License from a Controller:
You might want to remove a license from a controller, for example, if you have to take it out of service, for repairs, and want to use its license in a replacement unit. Follow the steps, below:
1. Install the dongle in your PC's USB port, and allow it to be recognized. 2. Start the Application Licensing Tool, using the following sequence:
Start  Programs  OpenBSI Tools  ControlWave Tools  Application Licensing

24

Introduction

ControlWave Designer Programmer's Handbook D301426X012 August 2020
3. The Application Licensing Tool will read the dongle, and display the following information: Application A list of all the standard application licenses originally issued via this dongle.
RTU State The license status of a particular controller for a particular standard application. If the controller has not been queried yet, this will display `Unknown'.
Ordered The total number of licenses included on this dongle, for a given application, when it left the factory.
Available The total number of licenses, for a given application, which have not yet been issued to controller(s).
4. Select the controller for which you want to revoke the license, using the [Browse] button. (If communication is via NetView, the controller must exist in the current NETDEF file; otherwise select the locally connected `RTU'.)
5. Enter a valid username / password combination for that controller, and click on the [Query RTU License State] button.
6. The application window will be updated to show which applications have been licensed for this controller. Select the application you want to remove from the controller.
7. Click on [Remove License]. The license will be removed from the controller, and restored onto the dongle. The "Available" count will be incremented by 1.
Viewing a History of Dongle Issue / Remove Operations:
The Application Licensing Tool maintains, on the dongle, a list of the last 150 license operations. To view this history, click on [View Event Log].

Application Licensing

25

ControlWave Designer Programmer's Handbook D301426X012 August 2020

26

Introduction

Application Parameters

ControlWave Designer Programmer's Handbook D301426X012 August 2020

The Application Parameters page is accessible from the "Application Parameters" tab in the Flash Configuration Utility. For instructions on calling up the Flash Configuration Utility, see Flash Configuration ­ An Overview, later in this manual. These parameters apply only to ControlWave-series units that are configured as IP nodes.

Note:
Unless you are using redundancy or have a specific need to edit these parameters (for example, if you are running an application with special memory requirements, or if you are encountering performance problems related to CPU activity), leave these parameters at their defaults. Users should exercise particular caution when modifying the application parameters for memory. Making a significant change to these parameters without understanding how the parameters interact could actually reduce the amount of available memory, even though you have increased the values of the parameters. When changing these parameters, use only small incremental changes.

CPU:

Goal Idle

This is a goal expressing the percentage of time the ControlWave CPU should be idle. The default value is 30%. If this goal cannot be met, the DEFAULT task period will automatically be adjusted to free up CPU time.

Idle Min Ticks This is the minimum number of 1 millisecond clock ticks to be left between executions of the DEFAULT task. The default value is 2.

Minimum Idle

If this percentage of free CPU time is not maintained within the ControlWave CPU, an overload exception is reported. The default value is 5%.

Application Parameters

27

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Memory:

Prog RAM

In kilobytes, this is the amount of memory reserved (at system start) for storing the generated code for the ControlWave project. This value should NOT be set significantly larger than the amount of memory actually needed for the project, because any unused reserved memory will be unavailable for data or other purposes. NOTE: If the system does not have sufficient memory to hold the user requests, the requests will be reduced proportionally. This defaults to 1024k in the ControlWave and ControlWave MICRO, and 256k in the ControlWaveLP. This can range from 10k to 1024k.

Data RAM

This is the size of storage reserved for variables in kilobytes. This can range from 10k to 1024k.This defaults to 256k in the ControlWave and ControlWave MICRO, and 64k in the ControlWaveLP. NOTE: This amount does not include historical data (audit/archive).

Retain RAM

This is the size of storage space (in kilobytes) reserved at system start for variables marked as `RETAIN'. The values of variables marked as `RETAIN' are preserved in the event of a warm start download. This can range from 0k to 1024k, and defaults to 256k in the ControlWave and ControlWave MICRO, and 64k in the ControlWaveLP.

Redundancy Transfer
Unit A Addr
Unit B Addr

This must be an IP address corresponding to an Ethernet port on the A controller in a redundant pair.
This must be an IP address corresponding to an Ethernet port on the B controller in a redundant pair.

Variations when using the ControlWave I/O Expansion Rack
For the ControlWave I/O Expansion Rack, the 'Memory' and 'CPU' sections of the Application Parameters page are omitted, and a 'Timeouts' section is added.
The "Power Fail Timeout" determines how outputs of the I/O rack should be set when power is restored following a power failure, or under certain circumstances, during a restart following a CPU watchdog.
"Host Comm Loss Timeout" specifies how the outputs of the I/O Rack should be affected in the event of a communication failure with the host ControlWave controller.
For a full description of these options, please see the ControlWave I/O Expansion Rack Quick Setup Guide (part number D301423X012).

28

Application Parameters

Archive Configuration

ControlWave Designer Programmer's Handbook D301426X012 August 2020

What Are Archive Files?
Archive information is saved at the ControlWave-series controller in structures called archive files. The archive files are essentially tables of data stored in rows and columns. Each row has a timestamp, and sequence numbers, associated with it, and each column is associated with a process variable. A row of process variable values, along with its associated timestamp and sequence numbers is called a record.
A record constitutes a 'snapshot' of the values for those variables at that particular time. Depending upon how you configure the archive file, the values saved may be just instantaneous values, or they may be the result of calculations performed on data received during the collection interval (integration, averaging, etc.)
Data is stored in the archive file either at a specified interval (periodic storage) or based on settings in the ARCHIVE function block.
Some Background - Archive Calculations (Weight Factors, Intervals, and Samples)
Optionally, calculations can be performed on the data prior to its being saved in the archive file. These calculations could be averaging, integration, etc.
The calculations performed using the Archive system are particularly useful in fluid flow applications, for fluids in either the gas or liquid state. The calculations are intended to assist in meeting the requirements of the American Petroleum Institute Manual of Measurement Standards, Chapter 21, by supporting some of the averaging techniques described in that document. If desired, these same calculations may be utilized for other applications (besides the fluid flow applications for which they were originally intended).
In the following explanations some mathematical terminology is used that is directly connected to the execution rate of the ARCHIVE function block. The Archive will have been declared to have a periodic type and an Interval of 1 day or less. Within this Periodic Interval the ARCHIVE function block will be executed at an execution interval established by the task execution.
Some of the calculations make use of a "Weight factor". The weight factors are set as input parameters of the ARCHIVE function block, and can be any REAL number values. The weight factors are used to control whether a sample is used in the calculation performed. The weight factors are typically used to control the number of samples included in the averaging calculations, so that, for example, Pressure or Temperature is only averaged when the weight factors indicate that it is valid to use the samples.
The averaging methods also provide an automatic switch from one type of averaging to another anytime after the start of a periodic interval. If a periodic interval begins with Weight Factor2 in a non-zero state then throughout the interval Weight Factor2 controls the averaging ­ samples are only used if Weight Factor2 is not zero. If the Interval begins with Weight Factor2 already zero then each sample is weighted using Weight Factor1, but

Archive Configuration

29

ControlWave Designer Programmer's Handbook D301426X012 August 2020
if at any time during the interval Weight Factor2 becomes non-zero, all samples taken with Weight Factor1 are discarded and a new average is started under control of Weight Factor2. For the rest of the interval Weight Factor2 is in control and Weight Factor1 has no more effect.
For example, if Weight Factor1 represents the delta time between ARCHIVE function block executions, and Weight Factor2 represents the delta flow time between ARCHIVE function block executions, then for those archive intervals where no flow time occurred, the result is a straight time average. For those archive intervals where flow time has occurred, the result is a flow time average.

Defining a Straight-time Average Archive
To set up a simple straight-time averaged archive, there are two methods available:

Method 1:

Set Weight Factor1 to the delta time between ARCHIVE function block executions each time the ARCHIVE function block is executed. (Note: The delta time between each execution of the ARCHIVE function block must be dynamically calculated by user-created logic in your program. Do NOT simply enter a constant based on the rate of execution of the task, because that will not account for any slippage in execution time.)

Method 2: Set Weight Factor1 to 1.0 each time the ARCHIVE function block is executed. This provides an average based on the number of samples taken. (This is equivalent to a time-based average.)

Archive configuration involves four basic steps:
1. Define the archive file(s) using the Flash Configuration Utility. This includes specifying the number of rows (records) and columns, the types of calculations performed, etc.
2. Identify in ControlWave Designer, every variable you want to have archived. This is accomplished by including these variables in a LIST function block.
3. Create another LIST to hold the current archive record. (THIS IS OPTIONAL). This allows the current archive record data to be used within your ControlWave project; if you don't want to do this, skip this step.
4. Configure an ARCHIVE function block in your ControlWave project. This function must be executed frequently enough to collect an adequate number of samples.

30

Archive Configuration

ControlWave Designer Programmer's Handbook D301426X012 August 2020
What can be done with the data from the Archive File(s)?
Once archiving has been fully configured, and the ControlWave project has been downloaded and has been running, archive data will be collected, and the Archive File(s) will be populated with data. There are various methods for extracting this Archive data:
 The Archive Collection web page control may be used to display archive data. This web page is included in the standard Web_BSI set, and allows you to display the archive data in Microsoft® Internet Explorer.
 The OpenBSI DataView utility can display archive data on the screen of your OpenBSI Workstation.
 The PocketBSI Data Viewer can display archive data on the PocketBSI AccessPack.  The OpenBSI Harvester can collect the archive data, and store it in files on the OpenBSI
Workstation, which the OpenBSI Data File Conversion Utility can export to human machine interface (HMI) packages such as OpenEnterprise.
Step 1. Define Archive Files(s) in the Flash Configuration Utility
The individual columns of the archive file, and various parameters that define how archiving is performed, are specified in the Archive page of the Flash Configuration Utility. Changes made in the Archive page will NOT take effect until the unit has been powered off and back on.

Archive Configuration

31

ControlWave Designer Programmer's Handbook D301426X012 August 2020
To begin defining an Archive File, click on the [New] button, then complete the fields as discussed, below:

File Definition
Number Name Records
Columns

This is a unique ID number for this Archive File. It can range from 1 to 32767.
This is the archive file name. Up to 8 alphanumeric characters, beginning with a letter, can be used.
This determines how many rows of 'snapshot' data will be retained in this Archive File. For example, if you want to save 24 rows (records) enter 24 here. The upper limit on the number of records is based on the size of each record. The maximum size of an Archive File is fixed. This means that as the size of the archive record increases (based on number of columns, types of data, etc.) fewer records can be saved in the Archive File. NOTE: Each archive record includes 14 bytes to store the timestamp and sequence numbers, in addition to the bytes used to store the actual column data. Because the sizing of Archive Files can change based on firmware revision, consult the online help files for archives in ControlWave Designer. Also, there is a Histsize_Calculator.xls file included with OpenBSI if you need more detailed information on Archive File size.
This is the number of columns in the Archive File. Each column corresponds to data for a particular variable. The number of columns can range from 1 to 64. Note: OpenBSI programs such as DataView and Harvester cannot collect archive records larger than 220 bytes. For all floating point (REAL) data, this means no more than 53 columns should be specified.

Location

Flash RAM

When selected, all Archive records will be stored in FLASH memory. FLASH memory is preserved in the event the ControlWave unit loses power, or if the unit's backup battery fails.
When selected, all Archive records will be stored in static RAM. If the ControlWave unit is reset, for any reason, Archive records will be preserved only so long as the unit's backup battery continues to operate, or the user does not perform a system cold start. See the Memory Usage section for a discussion of system cold starts.

Interval

1 Min, 5 Min, Only applies when the "Timestamp Mode" is "Periodic". This specifies how often 15 Min, 1 Hour, Archive records 'snapshots' should be stored. 1 Day

Mode

At Store When "At Store" is chosen, the timestamp assigned to this archive record is

32

Archive Configuration

Start of Period

ControlWave Designer Programmer's Handbook D301426X012 August 2020
the time at which the record is stored.
When "Start of Period" is chosen, the timestamp assigned to this archive record is the time at the beginning of the interval.

Type

Nonperiodic
Periodic

When this is chosen, archive records are stored when the ARCHIVE function block executes, if the criteria determined by the iiMode terminal is met.
When this is chosen, archive records are stored when the ARCHIVE function block executes, and the chosen interval (either 1 minute, 5 minute, 15 minute, 1 hour, 1 day) has expired.

Column Definitions
To begin defining a column, click on the [Add] button. The Archive Column Definition dialog box will appear. Descriptions of the various fields are included, below; click on [OK] when finished defining the column, and you will return to the Archive page of the Flash Configuration Utility.
If you need to change the definition of a column after you've clicked on [OK], click on the column number, then click on the [Modify] button, and the Archive Column Definition dialog box will be recalled.
If you need to delete a column you have defined, click on the number for the column, then click on the [Remove] button.

Title

Is a description for the column. It can range from 1 to 16 characters.

Characteristics Determines the type of calculation to be performed on the collected data for this variable. Choose from the list box.

Archive Configuration

33

ControlWave Designer Programmer's Handbook D301426X012 August 2020
In these formulas, the following notation is used:
is the time at which the ARCHIVE function block executes and reads or 'samples' the variable.
is the number of module executions or samples that can occur within the defined Periodic Interval e.g., with a one second Task execution and a one Hour Periodic Interval "I" will be 3600.
The term 'Wfactor' used in these formulas refers to the Weight Factor. Weight Factors are specified in the ARCHIVE function block.
The choices are:
Avg for time when Wfactor2 !=0
This performs a simple sum and divide averaging calculation, but a weight factor is applied to each sample as it is read. The weight factor is set by other program logic, as required, to control the averaging done by the function block; it would typically be used to ensure that the variable being read is only averaged while another condition is valid. The equation is shown below:

Arith Mean Over Wfactor1
Perform a simple sum and divide average with each sample weighted by WeightFactor1. See the equation below:

Avg of Sqrt(var) for time when Wfactor2 !=0
During the periodic interval, sample the variable, take the square root of the sample, multiply it by WeightFactor2, and sum it. At the end of the interval,

34

Archive Configuration

ControlWave Designer Programmer's Handbook D301426X012 August 2020
calculate the average square root and store the result in the Archive. See the equation, below:

Sqr of (Avg of sqrt(var))
During the periodic interval, sample the variable, take the square root of the sample, multiply it by WeightFactor2 and sum it. At the end of the interval, calculate the average square root, then square it and store the result in the archive. The equation is shown below:

Archive Configuration

Note: The result is zero if Weight Factor 2 is zero for the entire interval.
Instantaneous Place value in log No calculation performed. At the end of the periodic interval, simply store the current value of the variable in the archive.
Min observed value for period At the end of the periodic interval, store the lowest value of the variable among all values collected during this interval.
Max observed value from period At the end of the periodic interval, store the highest value of the variable among all values collected during this interval.
Place value in log, and 0 signal At the end of the periodic interval, store the current value of the variable, and reset
35

ControlWave Designer Programmer's Handbook D301426X012 August 2020
the variable to zero.
Integration over Wfactor2 Sum the samples taken during the periodic interval after multiplying each sample by WeightFactor 2. Perform the following calculation:
Data Type Choose any one of the data types. The default is Real. The other choices are: Boolean, Short Int, Int, Double Int, Long Int, Bit String-Byte, Bit String-Word, Bit-String-Dword.
Precision Specify the numerical precision in which values should be displayed.
Deleting An Existing Archive File Definition
To delete an existing archive file definition, which will also delete the columns and records of the archive file, click on the file name in the list box in the left part of the page, then click on the [Delete] button. NOTE: The actual file deletion does not take place until the ControlWave-series unit is powered off, and then re-started.
Working with String-Based Archives
See the ControlWave Designer online help for instructions on configuring string-based archives.
Step 2. In Your ControlWave Designer Project, Identify the variables you want to archive in the Archive List
All variables for which you would like to archive data must be included in the Archive List.
Important The variables in the Archive List must have a direct one-for-one correspondence with the columns of the archive file, as defined in the Archive page of the Flash Configuration Utility (Step 1). For example, the first variable in the archive list corresponds with column 1 of the archive file, the second variable in the archive list corresponds with column 2 of the archive file, etc. Also note that the timestamp, global sequence number, and archive sequence number which are included at the beginning of every archive record, do not count as columns when specifying this correspondence.

36

Archive Configuration

ControlWave Designer Programmer's Handbook D301426X012 August 2020
To create the Archive List, insert one of the LIST function blocks (LIST010, LIST020, LIST030, LIST050, or LIST100) in your ControlWave Designer program. The choice of which LIST function block is determined by how many variables you want to include in the Archive List; for example, if you want to include 37 variables in your Archive List, you should choose LIST050, which can hold up to 50 variables; if you want to include 63 variables in your Archive List, you should choose LIST100, since it can hold up to 100 variables.
Note: Archive files cannot hold more than 64 columns of data, therefore, your archive list should not include more than 64 variables. The figure, at right, shows an Archive List with 5 variables.
You should insert the ARCHIVE function block in one of your POUs. The POU you choose must be part of a task which executes faster than the rate at which you want your archive calculations and storage to occur, since archive calculations and storage only occur when the ARCHIVE function block is executed.
Notes:  Typically, you would want to define control logic to only execute the list once. For
information on how to do this, see the Conditional Logic section of this manual.  All variables in your Archive List must be marked as `PDD' in order to be collected by
external archive collection programs such as DataView, or the Harvester.  The variables you want to include in the Archive List must reside in the same POU as
the LIST function block used for the Archive List, or they must be global variables.
Step 3. Create an Output List for Accessing the Most Recent Archive Record (OPTIONAL)
Optionally, you can create a list which will hold a specified Archive record. This allows the specified archive record data to be accessible within your ControlWave program.
The figure at right shows the Output list. The table, below, details the

Archive Configuration

37

ControlWave Designer Programmer's Handbook D301426X012 August 2020

data type requirements of the output list used in this example.

Parameter Name
iiListNumber

Suggested Variable Name
(no variable, entered as a constant)

Variable Type Value

INT

8

odiStatus

LIST8_STAT

DINT

None

ianyElement1 ianyElement2

TIMESTAMP ARCHSEQNUM

REAL DINT

None None

ianyElement3

GLOBALSEQNUM

DINT

None

ianyElement4 to ianyElement n

(desired variable names)

Match the data type to the corres-ponding variable in the Archive List

None

Notes
The list number (must be entered on the iiOutList parameter of the ARCHIVE function block) OPTIONAL ­ This reports status values regarding the Output List. Negative values indicate errors. The timestamp associated with the archive record. The local archive sequence number associated with the archive record. The global sequence number associated with the archive record. These elements of the list contain the values of the associated process variables for the archive record.

Step 4. Configure the ARCHIVE Function Block
Insert an ARCHIVE function block in one of your POUs of your project. The POU you choose must be part of a task which executes fast enough to produce valid archive calculations. If, for example, you want to calculate average flows for the past hour, for all variables in the Archive List, you must have executed the ARCHIVE function block enough times to obtain a valid average, based on your requirements. This might be once a minute, once every 10 seconds, etc. So, even though the calculation is stored hourly, the ARCHIVE function block must be executed faster.
When the ARCHIVE function block executes, it performs any intermediate calculations, and then only stores the archive data if the specified interval has been reached, or if ondemand archiving has been specified (MODE 2 or 3). Once the most recent archive data has been stored, it will be accessible in the Output List (if the Output List was configured).

38

Archive Configuration

ControlWave Designer Programmer's Handbook D301426X012 August 2020

The table, below, summarizes the configuration details for the parameters in the ARCHIVE function block for this particular example. More detailed information on the ARCHIVE function block is included in the on-line help.

Parameter Name
iiArchiveNumber

Variable Name
(in this case we entered no variable, we used a constant instead)

iiArchiveList iiOutList

(no variable, entered as a constant)
(no variable, entered as a constant)

Variable Type
INT
INT INT

Value
1
7 8

Notes
This must match the archive number defined for the archive file on the Archive page of the Flash Configuration Utility. This must match the iiListNumber of the Archive List defined in Step 2. This must match the iiListNumber of the Output List defined in Step 3.

isiMode

ARCH1_MODE

isiContractHour

CONTRACT_HOUR

irWFactor1

WF1

SINT
SINT REAL

1
8 None

In this particular mode (Mode 1), archiving occurs at the interval specified for the archive file on the Archive page of the Flash Configuration Utility. This is the default mode; for information about other modes, see the on-line help. If interval configured on the web page is daily, this is the contract hour at which the daily collection should occur. This can range from 0 to 23. This weight factor is used in certain averaging calculations. This is discussed earlier in this section.

Archive Configuration

39

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Parameter Name
irWFactor2

Variable Name
WF2

idiSequenceIndex

SEQ_INDEX

odiStatus

ARCHIVE1_STAT

ouiNumRecords ouiOldestRecord

ARCH_REC_TOTAL OLDEST_ARCH_SEQNUM

ouiNewestRecord

NEWEST_ARCH_SEQNUM

Variable Type
REAL DINT
DINT UINT UINT UINT

Value
None None
None None None None

Notes
This weight factor is used in certain averaging calculations. This is discussed earlier in this section.. This is only used in Mode 5 or 6. The user can specify the sequence number of a particular record, and its data will be reported in the output list (Mode 5), or the user can choose an indexed (fixed) position in the Archive file (Mode 6), and the data from that record will be reported in the output list. See the online help for the ARCHIVE function block for more info. OPTIONAL ­ This reports status values regarding the execution of the ARCHIVE function block. Negative values indicate errors. This is the total number of archive records currently in the archive file. OPTIONAL ­ This reports the Local (Archive) Sequence number of the oldest record in the archive file. OPTIONAL ­ This reports the Local (Audit) Sequence number of the newest record in the archive file.

40

Archive Configuration

Array Configuration

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Instead of storing data exclusively in individual variables, you may find it more convenient, for some applications, to store some of the data in tabular form, such as in a data array. A data array is really variables which are part of a more complex structure. The structure is organized in rows and columns. It must be defined in the "Data Types" portion of the project tree, because it is considered to be a user-defined data type.
Arrays are most easily manipulated in POUs defined in the Structured Text (ST) language.
Defining an Array Data Type
Let's say, for example, that we wanted to save 3 temperature values (of type REAL), every hour, for an entire day. We need to define a data type for the columns of the array (which is type TEMPS), and an array of rows (which is type TODAYS_TEMPS). The 3 column by 24 row array is defined by entering the following in the "Data Types" section of the project tree:
TYPE
TEMPS : ARRAY[1..3] OF REAL;
TODAYS_TEMPS : ARRAY[1..24] OF TEMPS;
END_TYPE

Important
You should define this data type in your own data type worksheet. Do NOT use the SYS_VAR_WZ_TYPES sheet, because if you subsequently change your system variables, any data types you add to that sheet would be overwritten by the changes. To add your own data type worksheet, right-click on the `Datatypes' item in the project tree, then choose "Insert  Datatypes" from the pop-up menus, then supply a name for the worksheet.

Creating an Array Using Your User-Defined Type

On one of your variable worksheets, create a variable using your newly defined data type. The text, below, creates an array called WEDNESDAY, which uses the data type we just defined.

VAR_EXTERNAL (*AUTOINSERT*)

WEDNESDAY

:TODAYS_TEMPS;

END_VAR

Array Configuration

41

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Using the Array
In your structured text POU, you can assign values to elements of your array. Note that in the text shown, T1_TEMP, T2_TEMP, and T3_TEMP MUST be variables of type REAL, since each cell of the WEDNESDAY array holds a REAL value.
WEDNESDAY[1][1] :=T1_TEMP;
WEDNESDAY[1][2] :=T2_TEMP;
WEDNESDAY[1][3] :=T3_TEMP;
Making the Array Accessible to OpenBSI Collection Programs
In ControlWave Designer, data arrays are defined by a name. In the OpenBSI Utilities such as DataView, the Data Collector, and the Scheduler, however, data arrays are referred to by a number, since in Network 3000-series products, arrays only have numbers, not names.
To collect arrays from a ControlWave controller, using OpenBSI, the named array must be assigned a number using the REG_ARRAY function block. In addition, the array variable must be marked "PDD".

For this example, the following table details the usage of each parameter in the REG_ARRAY function block:

Parameter Name Variable Name

arrayDescriptor

WEDNESDAY

iiArrayNumber

1 (just entered a constant here)

Variable Type
User-defined array type, in this case TODAYS_TEMPS INT

Value
None
1

odiStatus

ARRAY_1_STAT

DINT

ouiNumRows ouiNumColumns

ARRAY_1_NUMROWS ARRAY_1_NUMCOLS

UINT UINT

None
None None

Notes
Indicates the name of your array, which is of some data type you defined.
Indicates the array number you are assigning to your array. When you collect this array using OpenBSI, this is the number which you use to refer to it in the OpenBSI utilities. Reports status values regarding the REG_ARRAY function block. Negative values indicate errors. Indicates the number of rows in this array to be reported. Indicates the number of columns in this array to be reported.

42

Array Configuration

Audit Configuration

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Audit logging is one of the historical storage capabilities of the ControlWave-series controllers. It allows a record to be kept of significant events such as alarms, operator setpoint changes, operator logins, and system events.
There are three basic steps to configuration of Audit logging:
1. Define audit parameters on the `Audit' page of the Flash Configuration Utility. 2. Define an Event list in your ControlWave project that lists non-alarm variables you
want to monitor for changes. 3. Configure the AUDIT function block and execute it at the desired frequency.
What can be done with the data from the AUDIT data once it has been logged?
Once audit logging has been fully configured, and the ControlWave project has been downloaded and has been running, audit data will be collected, as events and alarms occur. There are various methods for extracting the Audit data:
 The Audit Collection web page control may be used to display audit data. This web page is included in the standard Web_BSI set, and allows you to display the audit data in Microsoft® Internet Explorer.
 The OpenBSI DataView utility can display audit data on the screen of your OpenBSI Workstation.
 The OpenBSI Harvester can collect the audit data, and store it in files on the OpenBSI Workstation, which the OpenBSI Data File Conversion Utility can export to human machine interface (HMI) packages such as OpenEnterprise.

Step 1. Set parameters in the Flash Configuration Utility
Configuration parameters for audit logging are set on the Audit page of the Flash Configuration Utility.

Note: Changes made in the Audit page will NOT take effect until the unit has been powered off and back on.

Audit Configuration

43

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Storage Location
Flash
RAM

When selected, all Audit records will be stored in FLASH memory. FLASH memory is preserved in the event the ControlWave-series unit loses power, or if the unit's backup battery fails.
When selected, all Audit records will be stored in static RAM. If the ControlWave-series unit is reset, for any reason, Audit records will be preserved only so long as the unit's backup battery continues to operate, or the user does not perform a system cold start. See the `Memory Usage' section for a discussion of system cold starts.

Logging Type

Continuous

When Logging Type is specified as `Continuous', if the storage area for audit records becomes full, the oldest records will be erased (overwritten) as new records come in.

Stop on Full

When Logging Type is specified as `Stop on Full', if the storage area for audit records becomes full, all logging will stop. NOTE: This does not have any impact on the variables themselves; they will continue to change, only their changes will not be logged to the Audit system.

Sizing

Number of Events
Number of Alarms

Specifies the number of events to be logged. This value can range from 0 to 584. 0 is the default, which means that no events will be logged.
Specifies the number of alarms to be logged. This value can range from 0 to 584. 0 is the default, which means that no alarms will be logged.

44

Audit Configuration

Port

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Number of Records in the Output Buffer [% of corresponding log]

When "Flash" is chosen as the storage location for the Audit Trail records, the Audit system cannot write data into the Alarm or Event logs when a flash log becomes full. Should alarm(s) or event(s) be generated during that time, it must be temporarily stored in the Output Buffer, until such time as the new useful records can be written into an Alarm or Event log in flash. The Output Buffer size specifies (as a percentage of the log file size) how much temporary storage is available during such operations. For example, if "Number of Alarms" is 300, and the "Number of Records in the Output Buffer" is set to 20, it means that up to 20% of 300 alarms (or 60 alarms) can be stored in the output buffer, before alarm data could be lost. If the "Number of Alarms" is 300 and "Number of Records in the Output Buffer" is set to 100, it means that 100% of the 300 alarms (or 300 alarms) can be stored in the output buffer, before alarm data could be lost. The default is 100.

Logging Master Port

Defines the only port which is capable of deleting the audit records from the audit logs. The Logging Master Port is only meaningful when the recording mode is set to "Stop on Full". The port number for the logging master port can be one of the following values:

Value Port

0

Serial Port 1

1

Serial Port 2

2

Serial Port 3

3

Serial Port 4

4

Serial Port 5

5

Serial Port 6

6

Serial Port 7

7

Serial Port 8

8

Serial Port 9

9

Serial Port 10

10

Serial Port 11

11-14 currently unused

IP Port (any IP port on the unit)

Audit Configuration

45

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Step 2. In ControlWave Designer, identify Variables for which you want to maintain Audit Logging
If there are several non-alarm variables for which you would like to maintain Audit logging, they must be included in the Event List. This is a list of variables which is scanned for any value changes, every time the AUDIT function block is executed.
Note If you have a small number of event variables, instead of using the Event List, you can, if you choose, configure a separate AUDIT function block for each of the variables, and then assign each variable to the ianyEventVar parameter of its associated AUDIT function block.
Important  We strongly recommend you do NOT include in the Event List any variables tied to
process I/O points or calculated variables which change frequently, because several minor fluctuations of a process I/O variable or calculated variable would generate multiple event records, thereby quickly filling up your event log. The Event List should be reserved for operator setpoints, configuration parameters, and other variables which change infrequently.
 Alarm variables are automatically included in the Audit alarm log.The Audit alarm log, however, only includes the alarm messages generated when a variable enters its 'inalarm' state, and when it returns to normal. Intermediate value changes to the alarm are NOT included in the alarm log. If you need to log this information, for example, for an operator setpoint variable, which is also configured as an alarm, you must include that variable in the event list. Again, however, this should only be done if the alarm changes infrequently. If you do not need this intermediate information, we recommend you do NOT include alarm variables in the Event List, since 'in alarm' and 'return to normal' messages are always stored in the Audit alarm log.
 When the Audit alarm log and event log become full, they can be configured either to overwrite the oldest records when new data comes in, or to stop logging completely until one or more audit records are deleted by the user. You should configure the OpenBSI Harvester to periodically extract audit data and export it to your HMI software; to help prevent your audit logs from filling up.
 DO NOT make on-line changes to the contents of the Event List as this will cause discrepancies in detection of value changes. If you want to change the Event List, make the changes off-line, then download the new project and execute a cold start of the unit.

46

Audit Configuration

ControlWave Designer Programmer's Handbook D301426X012 August 2020
To create the Event List, insert one of the LIST function blocks (LIST010, LIST020, LIST030, LIST050, or LIST100) in your ControlWave Designer program.
The choice of which LIST function block is determined by how many variables you want to include in the Event List; for example, if you want to include 15 variables in your Event List, you should choose LIST020, which can hold up to 20 variables; if you want to include 63 variables in your Event List, you should choose LIST100, since it can hold up to 100 variables.
The figure, at right, shows an Event List with 9 variables.
If larger lists are required, you can chain multiple LIST function blocks together by simply specifying the same iiListNumber on each one.
Notes:  All variables in your Event List must be marked as `PDD' in order to be collected by
external audit collection programs such as DataView, or the Harvester.  The variables you want to include in the Event List must reside in the same POU as the
LIST function block used for the Event List, or they must be global variables.  Typically, you would want to define control logic to only execute the list once. See the
`Conditional Logic' section for more information on this subject.
Step 3. Configure an AUDIT Function Block
Insert an AUDIT function block into one of your POUs. The POU you choose must be part of a task which executes fast enough to handle your Audit logging requirements, since the Audit logging only occurs when the AUDIT function block is executed.

Audit Configuration

47

ControlWave Designer Programmer's Handbook D301426X012 August 2020

The following table summarizes the configuration details for the parameters in the AUDIT function block for this particular example. More detailed information on the AUDIT function block is included in the online help.

Parameter Name Suggested Variable Name

ibDisable

AUDIT_LOGGING_DISABLE

Variable Type
BOOL

Value
FALSE

iiAuditList ianyEventVar

here, we have entered a constant of `5' since the LIST function block we configured in Step 2 is numbered `5' left unused ­ only applies when there is no Event List. Used only when a single variable is to be monitored in the event log.

INT
REAL, SINT, INT, or DINT

5 none

odiStatus

AUDIT_STATUS

DINT

none

ouiNumEvents

NUM_EVENTS

ouiOldestEvent

OLDEST_EVENT_SEQ_NUM

UINT UINT

ouiNewestEvent

NEWEST_EVENT_SEQ_NUM

UINT

ouiNumAlarms

NUM_ALARMS

ouiOldestAlarm

OLDEST_ALARM_SEQ_NUM

UINT UINT

ouiNewestAlarm

NEWEST_ALARM_SEQ_NUM

UINT

none none none none none none

Notes
For disabling/ enabling audit logging. Identifies the iiListNumber of the LIST function block we are using.
This parameter is only used if there is only one variable for which you want to maintain event logging. That single variable is identified by ianyEventVar. OPTIONAL ­ This reports status values regarding the execution of the AUDIT function block. Negative values indicate errors. OPTIONAL ­ This reports the number of events in the event log. OPTIONAL - This reports the Local (Audit) Sequence number of the oldest event in the event log. OPTIONAL - This reports the Local (Audit) Sequence number of the newest event in the event log. OPTIONAL ­ This reports the number of alarms in the alarm log. OPTIONAL - This reports the Local (Audit) Sequence number of the oldest alarm in the alarm log. OPTIONAL - This reports the Local (Audit) Sequence number of the newest alarm in the alarm log.

48

Audit Configuration

ControlWave Designer Programmer's Handbook D301426X012 August 2020
BSAP Addressing and Networks

What is BSAP?
The Bristol Synchronous / Asynchronous Protocol (BSAP) is used for communication within ControlWave and Network 3000 controller networks. BSAP has been used in a wide variety of applications, and is particularly suited to networks where several controllers are connected via a multi-drop cable. It has also been used successfully with several different modes of data transmission including direct cable connections, dial-up modems, radios and satellite links.
At the top of a BSAP network is a host computer, called the network master. The network master is usually a PC workstation running human-machine interface (HMI) or supervisory control and data acquisition (SCADA) software such as Emerson OpenEnterpriseTM software, or a third-party HMI package such as Intellution® FIX® or Iconics GenesisTM. The HMI software communicates using the communications driver provided in the Open Bristol System Interface (OpenBSI) software. The HMI/SCADA software at the Network Master allows the operator to view what is going on in the network through graphical displays, trends, or printed logs and reports.

Note
Pseudo master devices can be connected to lower levels of the network to view data. These are similar to Network Masters, however, they are not considered to be "nodes" in the network, and so do NOT appear in the NETDEF files.

Below the Network Master are the remote process controllers.

Level 0

Network Master PC running Open BSI and HMI/SCADA software

Cable or dial-up connections

Radio connection

Level 1 Level 2 Level 3 BSAP Addressing and Networks

ControlWave controller

Network 3000 controller

Network 3000 Flow computers/correctors

Network 3000 controller

Network 3000 controller

Pseudo Master Device running UOI or Open BSI

ControlWave controller
49

ControlWave Designer Programmer's Handbook D301426X012 August 2020
The controllers in the network are organized into a hierarchical structure of one or more levels. A BSAP network can support up to six levels (not including the Network Master referred to as level 0.) The number of levels required varies depending upon the size and scope of your project.
Each controller (node) serves as a master to the nodes connected to it on the level immediately below, and as a slave to the node connected to it on the level immediately above. A node can have many slaves but only one master. Each master polls its slaves for data, which it retains in memory until it is polled by its master. In this way, data flows from slave to master, slave to master, etc. until it reaches the Network Master, where it is made accessible to the operator via HMI software.
Note Initially, the ControlWave series could only serve as BSAP slave devices. Beginning with ControlWave firmware release CWP02.0, ControlWave-series controllers may also serve as BSAP master devices.
The user assigns each controller under a given master node a unique 7-bit local address (from 1 to 127). OpenBSI will automatically assign the controller a unique 15-bit global address (GLAD), based on its location in the network. Addresses and network structure are specified in the Network Definition (NETDEF) files generated by the OpenBSI NetView program. They must also be specified in the controller; either by switch settings (for certain Network 3000 controllers) or by parameters stored in FLASH memory (for ControlWave controllers, and certain Network 3000 controllers).
The network information stored internally by a node is called its Node Routing Table (NRT). The NRT is updated whenever a valid time synchronization message (TS/NRT) message is received from the master node. Typically, this occurs when the Master is downloaded, but TS/NRT transmission can also be forced by the user via a menu selection in NetView.
The level of a given controller specifies how many intervening communication lines there are between it, and the network master. The first level controllers are called top-level nodes because data must travel over only 1 communication line to reach the Network Master. A communication line can consist of a direct cable connection, a radio or satellite link, or a dial-up modem connection. Each communication line is configured independently with its own baud rate, poll period, timeout, etc.
From a given node, BSAP client/server communication (transferring array or list data) is only possible to its Master node, any connected slave nodes, and any siblings (nodes on the same level which share the same master). If communication is required to any node not in these categories, it must be routed up using client / server function blocks (Master/Slave modules in Network 3000) at each individual level of the network, until it reaches either the Network Master, or a Master which is a sibling to another Master. The message can then be routed down, again, in the same way, until it reaches the desired node.

50

BSAP Addressing and Networks

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Within OpenBSI's NetView, the ControlWave can be added to an existing BSAP network in the same way as you would add any other controller.
Adding A ControlWave to an OpenBSI BSAP Network in the RTU Wizard
Simply choose the icon for the network to which you want to add the ControlWave, rightclick on the icon, and choose AddRTU to call up the RTU Wizard.
In the RTU Wizard, be sure you specify the appropriate node type (such as ControlWave, CWave_LP or CWave_Micro), and also specify the full path of the ControlWave project.

In addition, you can optionally specify the startup web page for the controller. Because this is a BSAP network, the startup web page must reside on the PC, and you must specify its full path. Web pages residing within the ControlWave are not accessible within a BSAP network so the Access startup page from RTU check box is NOT available.
You will also need to specify a local address for the ControlWave. The local address must match whatever local address you defined for the ControlWave on the 'Soft Switches' page of the Flash Configuration Utility. For information on configuring soft switches, see the discussion of the Flash Configuration Utility in Chapter 5 of the OpenBSI Utilities Manual (part D301414X012).
Full details on creating a BSAP network, and adding controllers to OpenBSI networks are included in Chapter 6 of the OpenBSI Utilities Manual (part D301414X012).

BSAP Addressing and Networks

51

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Tuning the BSAP Network
Instructions on tuning a BSAP network and troubleshooting communication problems are included in Chapter 14 of the OpenBSI Utilities Manual (part D301414X012). Additional information on BSAP networks is included in the Network 3000 Communications Configuration Guide (part D301413X012). For developers requiring information on the internal structure of BSAP networks, please the Network 3000 Communications Application Programmer's Reference, (part D301401X012).
Setting the BSAP Local Address and EBSAP Group
The BSAP local address, and the expanded BSAP (EBSAP) group number are set on the `Soft Switches' page of the Flash Configuration Utility.
BSAP Local Address
Every controller in a BSAP network has a "Local address" that ranges from 1 to 127, which is entered on the `Soft Switches' page of the Flash Configuration Utility. This address identifies the controller's location within its level in the network, and is used for network routing. The local address entered here must match the local address specified for the RTU (controller) in OpenBSI's NetView program.

EBSAP Group Number
If your network uses expanded BSAP, in which more than 127 nodes exist on the same BSAP network level, each controller is assigned to a particular expanded node addressing group. The group is identified by an "EBSAP Group" number, which is entered on the `Soft Switches' page of the Flash Configuration Utility. For more information on EBSAP, please refer to the Expanded BSAP (EBSAP) Communications section of this manual. If you are NOT using Expanded node addressing (EBSAP) you MUST leave the "EBSAP Group" at 0.
For both the local address and EBSAP group number, changes will not take affect until after you have clicked [Save to Rtu], and powered the controller off and then and back on.

52

BSAP Addressing and Networks

ControlWave Designer Programmer's Handbook D301426X012 August 2020
What is Client/Server Communication?
If desired, you can configure CLIENT and SERVER function blocks to transfer data arrays or lists from one controller to another.
A CLIENT function block requests array or list data from a SERVER function block in another controller. The SERVER function block processes the request, and sends the array or list data to the CLIENT.
Instructions for configuring the CLIENT / SERVER function blocks are included in the ControlWave Designer online help.

BSAP - Underlying Technical Details (For ADVANCED USERS)

This sub-section summarizes various aspects of BSAP. For a full explanation of BSAP messages, please see the Network 3000 Communications Application Programmer's Reference (part D301401X012).

Polling:

The polling function of the BSAP Master is cyclic. It is repeated at the rate specified by the _P1_POLL_PER system variable, in seconds. During a polling cycle all slave nodes belonging to the polling master are polled. If, for any reason, a complete pass cannot be completed within this period the next polling cycle is started immediately after the end of the current polling cycle. Only the nodes that are active, see _SLAVE_POLL_DIS, are considered for polling.

Poll and Response Sequence:
The BSAP Master sends the poll message to its slaves. When a slave node receives a poll message it takes one of the following actions:
1. It transmits an alarm message if one is waiting and the poll message has a flag that indicates that the Master will accept the alarm messages (polling for alarm), or
2. It transmits a data response message if one is waiting, or 3. It transmits an Acknowledgement with No Data to send protocol message.

Data Message Routing:
Local Messages: The local messages are the ones generated by an application, such as a BSAP Client/Server function block, in this node. Such messages arrive at the appropriate BSAP Master after the application sends these messages and the message routing has been completed. BSAP Master does not have to track such messages, as response messages are destined for local applications. Applications are responsible for performing the application response timeout.
Global Messages: The BSAP Slave may receive global messages that are addressed to the slaves in the network below this node. The message recipient performs the routing on these global messages and selects the appropriate Master for forwarding them to the

BSAP Addressing and Networks

53

ControlWave Designer Programmer's Handbook D301426X012 August 2020
target node. The BSAP Master transmits these messages to the target nodes. A tracking structure is also created for each global message. If a response is not received to a tracked global message within the passthrough timeout (_MSG_TIMEOUT) the tracking structure is freed and any future response to that particular global message is discarded.
Response Messages:
The BSAP Master receives messages in response to the poll messages. It performs routing on these messages and they are forwarded to the proper destinations, local applications, BSAP Slave/Pseudo slaves, or Ethernet slaves.
Network Slave Port:
A ControlWave/ControlWaveLP port can have multiple slave ports which can be BSAP or IP. Among all of these ports, however, only one can serve as the Network Slave Port.
The Network Slave Port is the default route for upward traffic to global address (GLAD) 0 (Network Master).
To specify which port will serve as the Network Slave Port, the user must set the _SLAVE_PORT system variable to the port number.
TS/NRT Message:
Any Slave port can receive and process the Time Synchronization/Node Routing Table (TS/NRT) message. Separate system variables are available per serial port (_Px_TS_DIS and _Px_NRT_DIS) to allow each Slave to selectively determine whether it can or cannot process the Time Synch and/or NRT portion of the TS/NRT message. A flag is also available which causes the BSAP Slave to generate a request to its master for a TS/NRT message. All TS/NRT messages are accepted that are different than the current TS/NRT in this node. As the name implies the TS/NRT message is made up of two distinct entities:
1. TIME SYNCH: This part of the TS/NRT includes the complete system time and calendar information. When the Time Synch is processed the system time/calendar information is updated.
2. NRT: Node Routing Table - This part of the TS/NRT message is the heart of the BSAP message routing mechanism.
The BSAP Master sends a TS/NRT to its slave nodes as a result of the following:
 A new valid NRT has been received at any of the slave ports
 A slave node explicitly requests a TS/NRT message.
 After completion of a global download of one of its slaves. (Sends only to the node which received the download).

54

BSAP Addressing and Networks

BSAP Master Port

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Starting with release CWP02.0, the ControlWave-series of controllers support the BSAP Master mode of communication. The following functionality is possible:
 The ControlWave-series controller acts as the BSAP Master node to any ControlWave or Network 3000 controller with a BSAP Slave Port or Pseudo Slave port. This makes it possible for this node to be placed anywhere in the BSAP network, i.e. as a Network master or at any other level in the BSAP network.
 Multiple master ports are possible in the same controller.
 Each Master port can be assigned any consecutive numbered slaves from 1 to 127; e.g. slaves 1-10 to Master port 5, slaves 11-25 to Master port 2, and slaves 26-127 to Master port 4. Note: This slightly differs from Network 3000 configuration rules.
 It is possible to have gaps in the assigned slave numbers, e.g. slaves 1-5 to Master port 4, slaves 14-17 to Master port 5, and slaves 50-55 to Master port 2.
 A particular slave number cannot be assigned to more than one Master port, e.g. slaves 1-5 to Master port 2 and slaves 5-12 to Master port 4 would not work, because slave 5 is assigned to two different ports.
 Local download to the ControlWave-series controller is NOT supported.
 Global download of any Network 3000 slave controllers at any layer below a Master port is supported.
 BSAP Client/Server (similar to ACCOL II Peer-Peer) communication is supported.
 All BSAP global communication, including the pass through of report by exception (RBE) messages from the network below is supported.
 Supports all BSAP Alarm message communication from the network below. Alarm handling is as follows:
a. All global alarm report messages are logged with the local alarm system.
b. This ControlWave controller alarm system will forward these global alarm messages, interspersed with the local alarm reports, to all active alarm destinations.
c. If, at any time, the local alarm report pool becomes full the Master port will stop polling for alarms from the slave nodes.
d. Alarm polling will be resumed as soon as space is freed up in the local alarm report pool. Thus the loss of any alarm report from the slaves is prevented.
e. The global alarm reports carry the global network address of the reporting controller.
f. The ControlWave controller routes the global alarm acknowledgements, like any other global message, to the designated RTU.

BSAP Master Port

55

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Configuring A BSAP Master Port
BSAP Master Port configuration is divided into two parts:  Configuring Flash Parameters  Configuring System Variables for the Port
Note: This section assumes your controller is either already part of a BSAP network (if you are using NetView), or that you established local communications using LocalView, and you have configured a local address, etc.
Configuring Flash Parameters
Step 1. In the Flash Configuration Utility, click on the 'Ports' tab, and choose the ControlWave port you want to configure (COM1, COM2, etc.) Then select 'BSAP Master' as the "Mode".

Step 2. Enter the baud rate for the communication line in the "Baud Rate" field. 1200, 2400, 4800, 9600, 19200, 38400, 57600, or 115200 are all valid. The default is 9600.
Step 3. Define the range of BSAP local addresses used by the slave nodes of this BSAP master port. Enter the lower and upper ends of this range in the "Low Slave" and "High Slave" fields. These numbers must be integers in the range 1 to 127.
Step 4. Click on the [Save to Rtu] button, and respond to any sign-on prompts.

56

BSAP Master Port

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Step 5. At this point, you can optionally make additional changes on other pages of the Flash Configuration Utility. When you are finished, turn off the ControlWave, then turn it back on, for the new port definition to come into effect.
Configuring System Variables
Within ControlWave Designer, start the System Variable Wizard by clicking on View  System Variable Wizard. When the wizard has successfully established communications with ControlWave Designer, and your project is open, do the following: 1. Choose the 'Port Detail' tab. 2. Select the "Enable" box for the port which will serve as the BSAP Master. 3. Click [Configuration].
First, check the box of the port you want to configure.
Next, click on the "Configuration" button for that port.

4. In the Configuration page, select only the items shown in the following figure and enter appropriate values. A discussion of the various items appears below:

BSAP Master Port

57

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Once you select an item, you can specify its value in the corresponding field.
The items checked are used with BSAP Master ports.

Poll Time (_Px_POLL_PER)
Write Delay (_Px_WRITE_DEL)

This is the frequency (in seconds) at which the Master port will attempt to poll all of its slave nodes. For example, if the poll time is set to 30 seconds, then every 30 seconds, the Master port will attempt to poll all of its slaves nodes for data. If the Master port cannot complete a complete polling cycle within the specified poll time, it will start the new polling cycle as soon as it completes the current cycle.
This specifies a delay (in milliseconds) which must elapse before this master port attempts to communicate with its

58

BSAP Master Port

Write (CTS) Timeout (_Px_WRITE_T MO)
Retries (_Px_RETRIES)
Data Link Timeout
(_Px_TIMEOUT)

ControlWave Designer Programmer's Handbook D301426X012 August 2020
slave. This is useful if the slave hardware has a slower CPU-type (e.g. 186) and requires more turn-around time to respond to messages from its master.
Since the Clear-To-Send (CTS) must be received in order to transmit, this timeout (in milliseconds) is added to the expected message transmission time at the effective Baud Rate for this port. The message must be completely transmitted before the resulting timeout. The default is dynamic and calculated based on the current baud rate.
This is the number of data link level retries if a transmission fails. The default is 0, i.e. only 1 transmission attempt, and no retries.
This is the data link level response timeout. Message transmission must start before expiration of this timeout.

Idle Polling

RESERVED FOR FUTURE USE.

(_Px_IDLE_POLL

)

Click on [OK] when finished.

Optionally, you can then click on the [Information] button in the Port Detail page, to specify variables used to store communication port statistics. (This page is not shown here).

Once you have configured all Port Detail parameters, you need to set global port parameters. Click on the 'Port - Globals' tab. Select only the items shown on the next page, and enter appropriate values. A discussion of the various items follows:

Passthru Timeout (_MSG_TIMEOUT)

All messages passing through the controller are tracked. This timeout applies to each passthrough message. If the value is <=0, the default timeout of 30000 milliseconds (30 seconds) is assumed.

Master - Dead Slaves (_SLAVE_DEAD)

This references an array of 127 BOOL variables. Array elements correspond to slave nodes of this Master Port. If a slave node is not responding to poll messages from the Master Port, its corresponding array element is set by the system to TRUE, and the node is declared 'dead'. This array is to report status.

Don't Poll Array (_SLAVE_POLL_DIS)

This references an array of 127 BOOL variables. Array elements correspond to slave nodes of this Master Port. Any element set to TRUE indicates that the corresponding slave node should NOT be polled by the Master Port. The default is FALSE. The user can turn off polling for a particular node by setting its corresponding array element to TRUE.

BSAP Master Port

59

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Select these items when you configure a BSAP Master Port.

60

BSAP Master Port

BSAP Slave Port

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Configuring a BSAP Slave Port
BSAP Slave Port configuration is divided up into two parts:  Configuring Flash Parameters  Configuring System Variables for the Port
Configuring Flash Parameters
Step 1. In the Flash Configuration Utility, click on the 'Ports' tab, and choose the ControlWave serial port you want to configure (COM1, COM2, etc.) Then select 'BSAP Slave' as the "Mode".
Enter the baud rate for the communication line in the "Baud Rate" field. 1200, 2400, 4800, 9600, 19200, 38400, 57600, or 115200 are all valid. The default is 9600.

Step2. Click on the [Save to Rtu] button, and respond to the sign-on prompts.
Step 3. Turn off the ControlWave, then turn it back on for the new port definition to come into effect.

BSAP Slave Port

61

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Configuring System Variables
Within ControlWave Designer, start the System Variable Wizard by clicking on View  System Variable Wizard. When the wizard has successfully established communications with ControlWave Designer, and your project is open, do the following: 1. Choose the Port Detail tab. 2. Select the "Enable" box for the port which will serve as the BSAP Slave. 3. Click [Configuration].
First, check the box of the port you want to configure.
Next, click on the "Configuration" button for that port.

62

BSAP Slave Port

Check these items for a BSAP Slave Port.

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Once you select an item, you can specify its value in the corresponding field.

4. In the Configuration page, select only the items shown in the figure above and enter appropriate values. A discussion of the various items appears, below:

Poll Time (_Px_POLL_PER)

This defines a period of time (in seconds) during which this Slave node expects to receive a poll message from its Master. If a poll message

BSAP Slave Port

63

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Write Delay (_Px_WRITE_DEL)
Write (CTS) Timeout (_Px_WRITE_TMO)
Time Sync Disable (_Px_TS_DIS)
Time Sync Needed (_Px_TS_FORCE)
Node Routing Table Disable (_Px_NRT_DIS)

does not arrive within this period of time, the Master is assumed to have failed, and all messages queued to go up to the Master are discarded. If you are experiencing discards for transmission on this slave port (as reported by a nonzero value on the _Px_DISC_TRANS statistic system variable), it is recommended that you increase this value until no further discards occur. The default value of 5 should generally be increased to a larger number, e.g. 20, especially, if you are experiencing this problem.
This specifies a delay (in milliseconds) which must elapse, before this Slave port attempts to communicate with its Master. This is useful if the Master hardware has a slower CPU-type (e.g. 186) and requires more turn-around time to accept responses from the Slave.
Since the Clear-To-Send (CTS) must be received in order to transmit, this timeout (in milliseconds) is added to the expected message transmission time at the effective Baud Rate for this port. The message must be completely transmitted before the resulting timeout. The default is dynamic and calculated based on the current baud rate.
When set to TRUE, any time synchronization (TimeSync) message arriving at this slave port will be ignored. The default is FALSE which means TimeSync messages received at this port will be accepted and processed.
When set to TRUE, the Slave sends a request to the Master Port for a TimeSync/Node Routing Table (TS/NRT) message. Once the TS/NRT is received, this is cleared.
When set to TRUE, any Node Routing Table (NRT) message arriving at this slave port will be ignored. The default is FALSE which means NRT messages received at this port will be accepted and processed.

Alarm Disable (_Px_ALM_DIS)

This allows you to disable alarm transmissions through this port.

Click [OK] when finished.

64

BSAP Slave Port

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Identifying the Network Slave Port:
Although you may define multiple Slave Ports in your controller, only one of these ports can be the Network Slave Port. The Network Slave Port is the only port, among all the serial Slave Ports and IP ports, that is defined as the upward route for message traffic to the Network Master. To identify this Slave Port as the Network Slave Port, click on the 'Port Globals' tab. Select only the item shown in the figure, below, and enter the port number of the Network Slave Port. Valid entries for the Network Slave Port are:
1 = COM1 2 = COM2 3 = COM3 4 = COM4 5 = COM5 6 = COM6 7 = COM7 8 = COM8 9 = COM9 10 = COM10 11 = COM11 12 = currently unused 13 = IP (covers Ethernet as well as PPP serial ports) 14 = IP (covers Ethernet as well as PPP serial ports) 15 = IP (covers Ethernet as well as PPP serial ports)

BSAP Slave Port

65

ControlWave Designer Programmer's Handbook D301426X012 August 2020
There can only be one Network Slave Port. Here we are choosing COM2 as the Network Slave Port.

66

BSAP Slave Port

Communication Ports
Communication Ports

ControlWave Designer Programmer's Handbook D301426X012 August 2020

ControlWave Process Automation Controller, ControlWave Redundant Controller
Both the ControlWave Process Automation Controller, and the ControlWave Redundant Controller have from 2 to 4 serial communication ports, and from 1 to 3 Ethernet communication ports.(NOTE: The Redundant Version actually has twice the number of physical ports, but the second set serve in standby mode, unless there is a failure of the primary unit.) These ControlWave units have COM1 and COM2 (both serial). Depending upon the options you purchase, you may have up to two additional serial ports (COM3 and COM4) and from one to three Ethernet Ports (Ethernet Port 1, Ethernet Port 2 and Ethernet Port 3).

ControlWave Process Automation Controller
(ControlWave Redundant Controller Port locations are similar)
ControlWave MICRO Process Automation Controller
 The ControlWave MICRO Process Automation Controller CPU Module (CPU board) in Chassis Slot 2 may be ordered with different combinations of communication ports. One option allows for three serial ports on the CPU board where COM1 and COM2 are RS-232 and COM3 is RS485. Another option allows for the same three serial ports, with the addition of a single Ethernet port. A third available option for the CPU board is two serial ports, where COM1 is RS-232 and COM3 is RS-485 and two Ethernet ports; with this option, there is no COM2.
 If, instead of installing an I/O Module (board) in Chassis Slot 3, you install an Expansion Communication Module (ECOM board) in Chassis Slot 3, 4 additional serial ports are available. COM4 is RS-232, COM5 is RS-485, COM6 is for radio communication, and COM7 is for a modem. (OPTIONAL)

Communication Ports

67

ControlWave Designer Programmer's Handbook D301426X012 August 2020
 If, instead of installing an I/O Module (board) in Chassis Slot 4, you install an Expansion Communication Module (ECOM board) in Chassis slot 4, another 4 additional serial ports are available. COM8 is RS-232, COM9 is RS-485, COM10 is for radio communication, and COM11 is for a modem. (OPTIONAL). NOTE: This board can only be installed if there is already an Expansion Communication Module (ECOM board) in Chassis Slot 3; it cannot be installed if there is an I/O module in Chassis Slot 3.

Comm Port 4 (RS-232) (OPTIONAL)

Chassis Slot Numbers

Comm Port 5 (RS-485) (OPTIONAL)

12 3 4 56 78

Comm Port 8 (RS-232) (OPTIONAL)

Status LEDs
RUN/REMOTE/ LOCAL switch

Comm Port 9 (RS-485) (OPTIONAL)

Power Switch

I/O Modules with Bezel

PSSM CPU Module Module

I/O Modules with Bezel

I/O Modules with Bezel

Comm Port 1 (RS-232) Comm Port 2 (RS-232)
Comm Port 3 (RS-485) Ethernet Port (OPTIONAL)

Comm Port 10 (Radio) (OPTIONAL) Comm Port 11 (Modem) (OPTIONAL)
Comm Port 7 (Modem) (OPTIONAL) Comm Port 6 (Radio) (OPTIONAL)

ControlWave MICRO controller with 1 Ethernet port

68

Communication Ports

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Comm Port 1 (RS-232)

Comm Port 4 (RS-232) (OPTIONAL)
Comm Port 5 (RS-485) (OPTIONAL)

Chassis Slot Numbers

12345678

Comm Port 8 (RS-232) (OPTIONAL)

Status LEDs
RUN/REMOTE/ LOCAL switch

Comm Port 9 (RS-485) (OPTIONAL)

Power Switch

Comm Port 3 (RS-485)

Ethernet Port 2 Ethernet Port 1

Comm Port 10 (Radio) Comm Port 11 (Modem) (OPTIONAL) (OPTIONAL)
Comm Port 7 (Modem) (OPTIONAL) Comm Port 6 (Radio) (OPTIONAL)

ControlWave MICRO controller with 2 Ethernet ports

ControlWave MICRO I/O Expansion Rack
The number and location of communication ports on the ControlWave MICRO I/O Expansion Rack matches those of the ControlWave MICRO.
ControlWave Electronic Flow Meter (EFM)
 Communication port options for the EFM are identical to those of the ControlWave MICRO described on the previous page. The main difference is that EFM units may have fewer chassis slots.
ControlWave Gas Flow Computer Classic (GFC-CL)
 The ControlWave Gas Flow Computer Classic comes standard with three serial ports on the CPU board. COM1 is RS-232. COM2 can be RS-232 or RS-485, and COM3 is RS485. NOTE: COM1 has different connector types for you to choose from, depending on usage.
 The GFC-CL does NOT have any Ethernet ports, but serial IP can be done via PPP.

Communication Ports

69

ControlWave Designer Programmer's Handbook D301426X012 August 2020
COM1 has a choice of different connectors (either of these, or the Local Port, below).
COM2 COM3

COM1
J19
COM3 RS-485 Config. SW3

ON 1234 5678

J21

Isolated RS-485 Daughter Bd.

TB1

TB2

TB3

1

1

1

Power

J1

F1

COM1

COM2

COM3

1A

W7

W3

W5

W4

W21

W24

W19

W20

R164

W22 W23

1

1

1

1

1

1

1

1

1

1

J16 = MSP430
JTAG Header 1 J16 P2 = LCD Display Intf. (On Reverse Side)

LCD Contrast 1 P2

J13
Radio Daughter Bd.

W2: Enable/Disable Pwr. On LED: (1 to 2 = Enable, 2 to 3 = Disable) W3: Pwr. Supply Shutdown Voltage: (1 to 2 = 12V, 2 to 3 = 6V) W4: Pwr. Supply Shutdown Voltage: (1 to 2 = 12V, 2 to 3 = 6V) W5: Pwr. Fail Trip Point Hysterisis: (1 to 2 = 12V, 2 to 3 = 6V) W7: Pwr. Fail Trip Point: (1 to 2 = 12V, 2 to 3 = 6V) W8: Radio/Modem Configure: (1 to 2 = Radio, 2 to 3 = Modem) W9: Mds/FreeWave Selection: (IN = MDS, OUT = FreeWave Radio, Modem or RS-232) W10: Radio/Modem DTR Power Control: (OUT = Remove Pwr., IN = Power Always On) W11: Radio/Modem Installed: (IN= Modem, OUT = Radio or RS-232) W12: COM2 Config.: (IN = RS-485, OUT = RS-232, Radio or Modem) W13: Keypad/2 Pushbutton: (1 to 2 = 5x5 Keypad, 2 to 3 = 2 Pushbutton) W15: Enable/Disable SPI Receive Termination: (In = Enable, Out = Disable) W16: Enable/Disable Status LEDs: (In = Enable, Out = Disable)

CR41: Watchdog LED CR42: Idle LED
CR13: Power Good

ON 1234 5678 CR46: RX Comm. 1 CR45: TX Comm. 1 CR48: RX Comm. 2 CR47: TX Comm. 2 CR44: RX Comm. 3 CR43: TX Comm. 3

COM2 RS-485 Config.

SW4 W25

J15

J15

9

1 PLD JTAG

10

2 Header

Factory

Use

1

J12

CR22: DTR Active
CR21: DCD ON

J11

J10 W8

1

1

Modem

W9

Connectors

(J7, J8, J10, J11)

W12 W10

1 1 W11 1

J8

J7

J9 RJ-11
Modem Phone
Intf.

Keypad
J2

J14

2-Key Pushbutton

W13 1

1 W2

PLD JTAG

Emulator Connector Factory use

J6
CR36

CR40 CR39 CR38 CR37
1

1

Header J18

2

10

9

W28

CR35

W16

S1

1

CR35 - CR40: Status LEDs 1 through 6

S1 = 3V, 1200mA-hr Lithium Coin Cell Battery

W19: COM2 Port Config.: (1 to 2 = Modem or RS-485, 2 to 3 = RS-232 or Radio) W20: COM2 CTS Control: (1 to 2 = CTS Source from Device, 2 to 3 = RTS to CTS Loopback) W21: COM2 Port Config.: (1 to 2 = RS-232 or Radio, 2 to 3 = RS-485) W22 through W24: Same as W21 W25: Enable/Disable Comm. Status LEDs: (In = Enable, Out = Disable) W28: Battery Back-up Enable/Disable: (In = Enable, Out = Disable)

W26 W27

Recovery

SW1
ON

SW2
ON

DIP

Switch

1234

1234 5678

General

Purpose

DIP

Switch

W26/W27

Factory

11

Use

W15 1

J5

I/O Bus Connector

COM1
COM1 connector when using LOCAL PORT. (Local port is wired to TB1.) NOTE: Only one of the COM1 connectors can be used at any one time.)
ControlWave GFC-CL

70

Communication Ports

ControlWave Designer Programmer's Handbook D301426X012 August 2020
ControlWave Gas Flow Computer (GFC)
 The ControlWave Gas Flow Computer comes standard with three serial ports on the CPU board. COM1 and COM2 support RS-232 and COM3 can support either RS-232 or RS485. Note: COM1 has different connector types for you to choose from, depending on usage.
 Some models of the ControlWave GFC support an Ethernet port; for those that do not, serial IP can be done via PPP using the serial port(s).
COM1
COM2
COM3
COM1 connector when using LOCAL PORT. (Local port is wired to this connector.) NOTE: Only one of the COM1 connectors can be used at any one time.)
ControlWave GFC

Communication Ports

71

ControlWave Designer Programmer's Handbook D301426X012 August 2020
ControlWave Express
 The ControlWave Express comes standard with three serial ports on the CPU board. COM1 and COM2 support RS-232 and COM3 can support either RS-232 or RS485.
 Some models of the ControlWave Express support an Ethernet port; for those that do not, serial IP can be done via PPP using the serial port(s).

COM1

COM2
Ethernet COM3

ControlWave Express

72

Communication Ports

ControlWave Designer Programmer's Handbook D301426X012 August 2020
ControlWave Express PAC
 The ControlWave Express PAC comes standard with three serial ports on the CPU board. COM1 and COM2 support RS-232 and COM3 can support either RS-232 or RS485.
 Some models of the ControlWave Express PAC support an Ethernet port; for those that do not, serial IP can be done via PPP using the serial port(s).
COM1 COM2
Ethernet Port
COM3
ControlWave Express PAC

Communication Ports

73

ControlWave Designer Programmer's Handbook D301426X012 August 2020

ControlWave Explosion-Proof Flow Computer (XFC)

The ControlWave Explosion-Proof Flow Computer's communication ports are wired inside the cover with wires brought in through a conduit; there are no external connectors due to the explosion-proof rating.

HSC#1 (Example) Internally Sourced High Speed Counter
Wiring Diagram
Ex tern al Signal
Generator

DO#1 (Example) DI#1 (Example) Ext. Powered Dry Contact
Discrete Output Discrete Input Wiring Diagram Wiring Diagram

400mA Max. Load

+

RTD Input

RTD+ (Excitation)

RRTTDD+_

(Sense) (Return)

J2

J5
POWER _+
J6

G

P2

P1

G

G TXD RXD RTS CTS DTR
DCD G

G DI1 DI2
G D01
D02 D03 D04

RTD ++

_

NETWORK LOCAL RS485

RS485

G1 TRTR+

2 = TR3 = TR+

RS -4 85

} To -
To +

COM3
to/from Model

3808

J3 Communication Ports

TR-

TR+

G

+V

RXD

TXD

COM2

COM1 COM3

J2

+V

AI1

G +V AI2
G
+V AI3
G AO
+V

Internally Powered
or

J4

J2

NETWORK

8 TXD RXD RTS CTS DTR
DCD

8 = TXD 9 = RXD
10 = RTS 11 = CTS 12 = DTR 13 = DCD

}To R
To T

RS -2 32 COM2

to/from

Model

3808

14 G

14 = GND To V-

Ext. Powered
AO (Examples) 4-20mA
Analog Output Wiring Diagrams

AI#2 (Example) Simplified Internally Powered
1-5V Analog Input Wiring Diagram

AI#1 (Example) Externally Powered 1-5V
Analog Input Wiring Diagram

ControlWave XFC

74

Communication Ports

ControlWave Designer Programmer's Handbook D301426X012 August 2020
ControlWave CW_10
The ControlWave_10 (CW_10) is an RTU 3310 chassis and I/O upgraded with new ControlWave CPU and multi-function interface boards (MFIB).
COM4 RS232 / RS485 (formerly PORT_D) COM3 RS232 / RS485 (formerly PORT_C) COM2 RS-485/Modem (formerly PORT_B) COM1 RS-232 (formerly PORT_A)
COM5 RS232 / RS485 (formerly BIP_1)

CW_10

COM6 RS232 / RS485 (formerly BIP2)

Communication Ports

75

ControlWave Designer Programmer's Handbook D301426X012 August 2020
ControlWave CW_30
The ControlWave_30 (CW_30) is a DPC 3330 chassis and I/O upgraded with new ControlWave CPU and communication boards.

CW_30

76

Communication Ports

ControlWave Designer Programmer's Handbook D301426X012 August 2020
ControlWave CW_35
The ControlWave_35 (CW_35) is a DPC 3335 chassis and I/O upgraded with new ControlWave CPU and communication boards.

COM9 COM3 COM5

I/O MODULE I/O MODULE I/O MODULE I/O MODULE I/O MODULE I/O MODULE I/O MODULE I/O MODULE I/O MODULE

NOTE: There is no COM1, COM2 or COM7, COM8.
COM10 COM4 COM6

Ethernet Ethernet Port 1 Port 2
CW_35

Communication Ports

77

ControlWave Designer Programmer's Handbook D301426X012 August 2020
ControlWave CW_31
The ControlWave_31 (CW_31) is an RIO 3331 Remote I/O Rack chassis and I/O upgraded with new ControlWave communication boards.

COM5

I/O MODULE I/O MODULE I/O MODULE I/O MODULE I/O MODULE I/O MODULE I/O MODULE I/O MODULE I/O MODULE I/O MODULE

NOTE: There is no COM1, COM2 COM3 or COM4.
COM6

Ethernet Port 1
CW_31

78

Communication Ports

ControlWave Designer Programmer's Handbook D301426X012 August 2020
ControlWave I/O Expansion Rack
The ControlWave I/O Expansion Rack is a chassis containing additional I/O boards for a ControlWave host. It is also used as the shared I/O in certain redundancy configurations.

COM2 (J2) (RS-232)
Ethernet Port 1 (J3)

COM3 (J1) (RS485)
COM4 (J2) (RS-485)
COM5 (J3) (RS-232)
COM6 (J4) (RS-232)

ControlWave I/O Expansion Rack
Methods for Communicating with ControlWave-series Controllers.
There are several ways to communicate with the ControlWave-series controllers including:
 Bristol Synchronous / Asynchronous Protocol (BSAP) - The ControlWave can be part of an OpenBSI BSAP network, and beginning with firmware release CWP02, it can serve as a BSAP Master node.
 Internet Protocol (IP) - The ControlWave can be connected to an IP network of ControlWave or Network 3000 nodes. This can utilize Ethernet or serial Point-to-Point Protocol (PPP). Other IP options are available as well, e.g. Open Modbus. NOTE: Not all units include Ethernet ports.
 ControlWave Designer Protocol - The ControlWave has its own native protocol for communication with ControlWave Designer software. ControlWave Designer protocol can be transmitted via serial links, TCP/IP or OpenBSI.

Communication Ports

79

ControlWave Designer Programmer's Handbook D301426X012 August 2020

 Serial Modbus - This industry standard protocol allows communication between a ControlWave controller configured for MODBUS, and another MODBUS device.

The table, below, summarizes the major communication options. NOTE: Different units of the ControlWave series support different numbers of ports.

Protocol
Bristol Synchronous / Asynchronous Protocol (BSAP)

Reasons to Use
Collect data from ControlWave using OpenBSI. Download the ControlWave project. View web pages. Update FLASH parameters and soft switches

Which software is used?
OpenBSI Utilities suite (NetView, DataView, Downloader, etc.)

Internet Protocol (IP)

NOTE: Peer-to-peer communication with other ControlWave or Network 3000 controllers requires Client / Server function blocks (firmware 02.00 or newer). Client/Server function blocks are discussed in the ControlWave Designer on-line help. Collect data from ControlWave using OpenBSI. Download the ControlWave project. View web pages. IP MODBUS communication

OpenBSI Utilities suite (NetView, DataView, Downloader, etc.)

ControlWave Designer Protocol
(using either OpenBSI DLL, serial DLL or TCP/IP DLL) Very Small Aperture Terminal (VSAT) Allen-Bradley DF1 Master / Slave

NOTE: Peer-to-peer communication with other ControlWave or Network 3000 controllers requires Client / Server function blocks (firmware 02.00 or newer). Client/Server function blocks are discussed in the ControlWave Designer on-line help. Run ControlWave Designer in on-line mode, which includes: Performing debugging operations. Downloading ControlWave project.
Send data via satellite links.
Exchange data with other Allen-Bradley DF1 devices

DNP3

Industry-standard protocol for SCADA, etc.

ControlWave Designer
ControlWave Designer, OpenBSI NetView
ControlWave Designer CUSTOM function block. Port configured for DF1 within the Ports page of the Flash Configuration Utility. ControlWave Designer CUSTOM function block. Port configured for DNP3 within the Ports page of the Flash Configuration Utility.

CIP

Allen-Bradley protocol.

This protocol requires 4.40 (or newer) firmware. It is NOT supported for ControlWave LP. ControlWave Designer CUSTOM

80

Communication Ports

Protocol

Reasons to Use

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Which software is used?
function block.

Serial MODBUS
HART
Foundation Fieldbus

Exchange data with other MODBUS devices (including another ControlWave configured for MODBUS communication.)
Exchange data with HART devices through HART Interface Board (HIB) or a serial port ­ ControlWave Micro / EFM only.
Exchange data with FFbus devices through ControlWave Foundation Fieldbus Interface

This protocol requires 4.40 (or newer) firmware. It is NOT supported for ControlWave LP. ControlWave Designer CUSTOM function block. Port configured for MODBUS within the Ports page of the Flash Config. Utility. ControlWave Designer HART function block
This protocol requires 5.00 (or newer) firmware. Fieldbus function block Field Interface Configurator software. This protocol requires 5.10 (or newer) firmware. .It is NOT supported for ControlWave LP.

How do I configure the Ports on the ControlWave?
The Flash Configuration Utility, available in LocalView and NetView, is used to configure the ports on any ControlWave unit, as well as for setting other parameters such as the BSAP local address. The Flash Configuration Utility is discussed in detail in Chapter 5 of the OpenBSI Utilities Manual (document# D5081).

What are the factory default settings for communication ports?

Factory Defaults for Ethernet Ports
Depending upon the type of ControlWave, there may be up to three Ethernet ports. Ethernet ports are pre-configured at the factory with initial IP addresses and masks, as follows:
ETH1 IP Address: 10.0.1.1 IP Mask: 255.255.255.0
ETH2 IP Address: 10.0.2.1 IP Mask: 255.255.255.0
ETH3 IP Address: 10.0.3.1 IP Mask: 255.255.255.0
Because each unit shipping from the factory will have these initially pre-programmed, you should only use these addresses for `bench' testing and configuration. These addresses

Communication Ports

81

ControlWave Designer Programmer's Handbook D301426X012 August 2020
must be changed before putting ControlWave units on an actual network, since an address conflict would exist as soon as the second ControlWave unit was placed online.

Factory Defaults for Serial Ports
Default configuration for ControlWave Serial ports is included in the table, below. These default settings are activated any time the default switch is in the OFF position:
 The default switch on the ControlWave Process Automation Controller, ControlWave I/O Expansion Rack and ControlWave XFC is (SW1-3).
 The default switch on the ControlWave LP Controller is (SW4-3).
 The default switch on the ControlWave MICRO Controller, EFM, GFC, GFC-CL, Express, Express PAC, ControlWave_10, ControlWave_30, ControlWave_35, and ControlWave_31 is (SW2-3).
 The ControlWave, ControlWave MICRO, ControlWave Redundant Controller, and EFM initially ship from the factory with serial COM port 1 set to BSAP at 115,200. Once the default switch is OFF however, a factory default of PPP at 115,200 applies.
More details on the factory default settings of communication ports are included in the hardware manual.

Factory Defaults for ControlWave, CW Redundant Controller Serial Ports

Name
Serial Port COM1 Serial Port COM2 Serial Port COM3

Baud Rate
115200
9600
9600

Bits Per Character
8

Stop Bits
1

Parity Protocol
NONE Serial IP (PPP)

8

1

NONE BSAP Slave/

ControlWave

Designer

8

1

NONE BSAP Slave/

ControlWave

Designer

Cable

Notes

RS232 null modem Use IP address

cable

1.1.1.1.

RS232 null modem cable

Either RS232 null modem cable OR RS485 cable depending upon how ordered from factory. Cable connectors vary depending upon type ordered.

CHOICE OF RS232/RS485 MADE WHEN ORDERED FROM FACTORY. CANNOT BE CHANGED IN THE FIELD.

Serial

9600

8

Port

COM4

1

NONE BSAP Slave/

Either RS232 null CHOICE OF

ControlWave

modem cable OR RS232/RS485

Designer

RS485 cable

MADE WHEN

depending upon ORDERED FROM

how ordered from FACTORY.

factory.

CANNOT BE

CHANGED IN

FIELD.

82

Communication Ports

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Factory Defaults for ControlWave I/O Expansion Rack Serial Ports

Name
Serial Port COM1 Serial Port COM2 Serial Port COM3 Serial Port COM4

Baud Rate
9600
9600
9600
9600

Bits Per Character
8

Stop Bits
1

Parity Protocol
NONE Serial IP (PPP)

8

1

NONE BSAP Slave/

ControlWave

Designer

8

1

NONE BSAP Slave/

ControlWave

Designer

8

1

NONE BSAP Slave/

ControlWave

Designer

Cable
RS232 null modem cable RS-232 cable
RS485 cable
RS485 cable

Notes
Use IP address 1.1.1.1.

Serial

9600

8

Port

COM5

Serial

9600

8

Port

COM6

1

NONE BSAP Slave/

RS232 cable

ControlWave

Designer

1

NONE BSAP Slave/

RS232 cable

ControlWave

Designer

Factory Defaults for ControlWave MICRO, ControlWave EFM Serial Ports

Name
Serial Port COM1 Serial Port COM2 Serial Port COM3 Serial Port COM4

Baud Rate
115200
9600
9600
9600

Bits Per Character
8

Stop Bits
1

Parity Protocol
NONE Serial IP (PPP)

8

1

NONE BSAP Slave /

ControlWave

Designer

8

1

NONE BSAP Slave/

ControlWave

Designer

8

1

NONE BSAP Slave/

ControlWave

Designer

Cable / Interface
RS232 null modem cable
RS232 null modem cable
RS485 cable
RS232 null modem cable

Serial

9600

8

Port

COM5

1

NONE BSAP Slave/

RS485 cable

ControlWave

Designer

Notes
Use IP address 1.1.1.1. See Note below
Configured via CPU switch SW3.
OPTIONAL ­ requires ECOM Board in chassis slot 3. OPTIONAL ­ requires ECOM Board in chassis slot 3. Configured by

Communication Ports

83

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Name

Baud Rate

Bits Per Stop Character Bits

Parity Protocol

Serial

9600

8

Port

COM6

1

NONE BSAP Slave/

ControlWave

Designer

Serial

9600

8

Port

COM7

Serial

9600

8

Port

COM8

Serial

9600

8

Port

COM9

Serial

9600

8

Port

COM10

1

NONE BSAP Slave/

ControlWave

Designer

1

NONE BSAP Slave/

ControlWave

Designer

1

NONE BSAP Slave/

ControlWave

Designer

1

NONE BSAP Slave/

ControlWave

Designer

Serial

9600

8

Port

COM11

1

NONE BSAP Slave/

ControlWave

Designer

Cable / Interface
Requires coaxial RF cable to connect MDS / FreeWave® spread spectrum modem (radio). RJ11 connector for connecting to 56K PSTN modem RS232 null modem cable
RS485 cable
Requires coaxial RF cable to connect MDS / FreeWave® spread spectrum modem (radio). RJ11 connector for connecting to 56K PSTN modem

Notes
switch SW1 on ECOM board. OPTIONAL ­ requires ECOM Board in chassis slot 3.
See 2.3.3.5 in CIControlWave MICRO for radio installation steps. OPTIONAL ­ requires ECOM Board in chassis slot 3.
OPTIONAL ­ requires ECOM Board in chassis slot 4. OPTIONAL ­ requires ECOM Board in chassis slot 4. Configured by switch SW1 on ECOM board OPTIONAL ­ requires ECOM Board in chassis slot 4.
See 2.3.3.5 in CIControlWave MICRO for radio installation steps. OPTIONAL ­ requires ECOM Board in chassis slot 4.

Factory Defaults for ControlWave MICRO I/O Expansion Rack Serial Ports

Name
Serial

Baud Rate
9600

Bits Per Character
8

Stop Bits
1

Parity
NONE

Protocol
Gould MODBUS

Cable / Interface
RS232 null

Notes

84

Communication Ports

Name
Port COM1 Serial Port COM2 Serial Port COM3 Serial Port COM4

Baud Rate
115200
115200
115200

Serial Port COM5

115200

Serial Port COM6

115200

Serial Port COM7

115200

Serial Port COM8
Serial Port COM9

115200 115200

Serial Port COM10

115200

Bits Per Character
8 8 8 8
8
8 8 8
8

Stop Parity Bits

1

NONE

1

NONE

1

NONE

1

NONE

1

NONE

1

NONE

1

NONE

1

NONE

1

NONE

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Protocol
Slave ­ RTU mode. BSAP Slave / ControlWave Designer BSAP Slave/ ControlWave Designer BSAP Slave/ ControlWave Designer
BSAP Slave/ ControlWave Designer
BSAP Slave/ ControlWave Designer
BSAP Slave/ ControlWave Designer
BSAP Slave/ ControlWave Designer
BSAP Slave/ ControlWave Designer
BSAP Slave/ ControlWave Designer

Cable / Interface
modem cable

Notes

RS232 null modem cable

RS485 cable

Configured via CPU switch SW3.

RS232 null modem cable
RS485 cable
Requires coaxial RF cable to connect MDS / FreeWave® spread spectrum modem (radio). RJ11 connector for connecting to 56K PSTN modem RS232 null modem cable
RS485 cable
Requires coaxial RF cable to connect MDS / FreeWave®

OPTIONAL ­ requires ECOM Board in chassis slot 3. OPTIONAL ­ requires ECOM Board in chassis slot 3. Configured by switch SW1 on ECOM board. OPTIONAL ­ requires ECOM Board in chassis slot 3.
See 2.3.3.5 in CIControlWave MICRO for radio installation steps. OPTIONAL ­ requires ECOM Board in chassis slot 3.
OPTIONAL ­ requires ECOM Board in chassis slot 4. OPTIONAL ­ requires ECOM Board in chassis slot 4. Configured by switch SW1 on ECOM board OPTIONAL ­ requires ECOM Board in chassis slot 4.

Communication Ports

85

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Name

Baud Rate

Bits Per

Stop Parity

Character Bits

Protocol

Serial

115200

8

Port

COM11

1

NONE BSAP Slave/

ControlWave

Designer

Cable / Interface
spread spectrum modem (radio). RJ11 connector for connecting to 56K PSTN modem

Notes
See 2.3.3.5 in CIControlWave MICRO for radio installation steps. OPTIONAL ­ requires ECOM Board in chassis slot 4.

Factory Defaults for ControlWave Gas Flow Computer Classic (GFC-CL) Serial Ports

Name
Serial Port COM1

Baud Rate
115200

Bits Per Character
8

Stop Bits
1

Parity
NONE

Protocol
BSAP Slave / ControlWave Designer

Serial

9600

8

Port

COM2

1

NONE BSAP Slave /

ControlWave

Designer

Serial

9600

8

Port

COM3

1

NONE BSAP Slave/

ControlWave

Designer

Cable / Interface
RS232 null modem cable
RS232 null modem cable or RS485 cable
RS485 cable

Notes
Can also serve as Local Port. Different connectors are available depending on usage. Can serve as either RS232 or RS485. If using RS485, switch SW4 used for configuration. This port supports radio / modem option. Configured via CPU switch SW3.

Factory Defaults for ControlWave Gas Flow Computer (GFC) / ControlWave Express / ControlWave Express PAC Serial Ports

Name
Serial Port COM1

Baud Rate
115200

Bits Per Character
8

Stop Bits
1

Parity
NONE

Protocol
BSAP Slave / ControlWave Designer

Serial

9600

8

Port

COM2

1

NONE BSAP Slave /

ControlWave

Designer

Cable / Interface
RS232 null modem cable
RS232 null modem cable

Notes
Can also serve as Local Port. Different connectors are available depending on usage. This port supports radio / modem option.

86

Communication Ports

Name
Serial Port COM3

Baud Rate
9600

Bits Per Character
8

Stop Bits
1

Parity
NONE

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Protocol
BSAP Slave/ ControlWave Designer

Cable / Interface
RS232 null modem cable or RS485 cable

Notes
Can serve as either RS232 or RS485. If using RS485, configured via CPU switch SW3.

Factory Defaults for ControlWave Gas Flow Computer (XFC) Serial Ports

Name
Serial Port COM1 Serial Port COM2 Serial Port COM3

Baud Rate
115200
9600
9600

Bits Per Character
8
8
8

Stop Bits
1
1
1

Parity
NONE NONE NONE

Protocol
BSAP Slave / ControlWave Designer BSAP Slave / ControlWave Designer BSAP Master/ ControlWave Designer

Cable / Interface
RS232 null modem cable
RS232 null modem cable
RS485 cable

Notes
Local Port
Network Port
Configured as BSAP Master for communication with 3808 MVT Transmitter.

Factory Defaults for ControlWave_10 (CW_10) Serial Ports

Name
Serial Port COM1

Baud Rate
115200

Bits Per Character
8

Stop Bits
1

Parity Protocol

NONE

BSAP Slave / ControlWave Designer

Serial

9600

8

Port

COM2

1

NONE BSAP Slave /

ControlWave

Designer

Serial

9600

8

Port

COM3

1

NONE BSAP Slave /

ControlWave

Designer

Serial

9600

8

Port

1

NONE BSAP Slave /

ControlWave

Cable / Interface
RS232 null modem cable
RS232 null modem cable or RS485
RS232 null modem cable or RS485
RS232 null modem cable

Notes
Configured by jumper W4 on CMFIB. On original RTU 3310 known as Port A. Configured by jumpers W5 and W7 and switch SW2 on CMFIB. On original RTU 3310 known as Port B. Configured by jumpers W8 through W14 and switch SW3 on CMFIB. On original RTU 3310 known as Port C. Configured by jumpers W15

Communication Ports

87

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Name
COM4

Baud Rate

Bits Per Stop Character Bits

Parity Protocol
Designer

Serial

9600

8

Port

COM5

1

NONE BSAP Slave /

ControlWave

Designer

Serial

9600

8

Port

COM6

1

NONE BSAP Slave /

ControlWave

Designer

Cable / Interface
or RS485
RS232 null modem cable or RS485
RS232 null modem cable or RS485

Notes
through W21 and switch SW4 on CMFIB. On original RTU3310 known as Port D. Configured by jumpers W9 through W15 and switch SW3 on CCPU board. On original RTU 3310 known as BIP1. Configured by jumpers W16 through W22 and switch SW4 on CCPU board. On original RTU 3310 known as BIP2.

Factory Defaults for ControlWave_30 (CW_30) Serial Ports

Name
Serial Port COM1

Baud Rate
115200

Bits Per Character
8

Stop Bits
1

Parity Protocol

NONE

BSAP Slave / ControlWave Designer

Serial

9600

8

Port

COM2

1

NONE BSAP Slave /

ControlWave

Designer

Serial

9600

8

Port

COM3

1

NONE BSAP Slave /

ControlWave

Designer

Cable / Interface
RS232 null modem cable or RS485
RS232 null modem cable or RS485
RS232 null modem cable or RS485

Notes
Port 1 on the first CCB. Configured by jumpers W2 through W8 and switch SW1 on CCB. On original DPC 3330 known as Port A. Port 2 on the first CCB. Configured by jumpers W9 through W16 and switch SW3 on CCB. On original DPC 3330 known as Port B. Port 3 on the second CCB. Configured by jumpers W2 through W8 and switch SW1 on CCB. On original DPC

88

Communication Ports

Name

Baud Rate

Serial Port COM4

9600

Serial Port COM5

9600

Serial Port COM6

9600

Serial Port COM7

9600

Serial Port COM8

9600

Serial Port COM9

9600

Bits Per Stop Character Bits

8

1

8

1

8

1

8

1

8

1

8

1

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Parity Protocol

NONE

BSAP Slave / ControlWave Designer

NONE

BSAP Slave / ControlWave Designer

NONE

BSAP Slave / ControlWave Designer

NONE

BSAP Slave / ControlWave Designer

NONE

BSAP Slave / ControlWave Designer

NONE

BSAP Slave / ControlWave Designer

Cable / Interface
RS232 null modem cable or RS485
RS232 null modem cable or RS485
RS232 null modem cable or RS485
RS232 null modem cable or RS485
RS232 null modem cable or RS485
RS232 null modem cable or RS485

Notes
3330 known as Port C. Port 4 on the second CCB. Configured by jumpers W9 through W16 and switch SW3 on CCB. On original DPC 3330 known as Port D. Configured by jumpers W9 through W15 and switch SW3 on CCPU board. On original DPC 3330 known as BIP1. Configured by jumpers W16 through W22 and switch SW4 on CCPU board. On original DPC 3330 known as BIP2. Port 7 on the first CCB. Configured by jumpers W17 through W23 and switch SW2 on CCB. On original DPC 3330 known as Port G. Port 8 on the first CCB. Configured by jumpers W24 through W30 and switch SW4 on CCB. On original DPC 3330 known as Port H. Port 9 on the second CCB. Configured by jumpers W17 through W23 and switch SW2 on CCB. On original DPC 3330 known as Port

Communication Ports

89

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Name

Baud Rate

Bits Per Stop Character Bits

Parity Protocol

Serial

9600

8

Port

COM10

1

NONE BSAP Slave /

ControlWave

Designer

Cable / Interface
RS232 null modem cable or RS485

Notes
I. Port 10 on the second CCB. Configured by jumpers W24 through W30 and switch SW4 on CCB. On original DPC 3330 known as Port J.

Factory Defaults for ControlWave_35 (CW_35) Serial Ports

Note: Because the CW_35 does NOT support a communications board in Slot 13, and for firmware compatibility purposes, the following ports do NOT exist on these units: COM1, COM2, COM7, and COM8.

Name
Serial Port COM3

Baud Rate
9600

Serial Port COM4

9600

Serial Port COM5

9600

Serial Port COM6

9600

Bits Per Character
8

Stop Bits
1

Parity Protocol

NONE

BSAP Slave / ControlWave Designer

8

1

NONE BSAP Slave /

ControlWave

Designer

8

1

NONE BSAP Slave /

ControlWave

Designer

8

1

NONE BSAP Slave /

ControlWave

Designer

Cable / Interface
RS232 null modem cable or RS485
RS232 null modem cable or RS485
RS232 null modem cable or RS485
RS232 null modem cable or RS485

Notes
Port 3 on the CCB. Configured by jumpers W2 through W8 and switch SW1 on CCB. On original DPC 3335 known as Port C. Port 4 on the CCB. Configured by jumpers W9 through W15 and switch SW3 on CCB. On original DPC 3335 known as Port D. Port on the CCPU. Configured by jumpers W10 through W16 and switch SW3 on CCPU. On original DPC 3335 known as Port BIP1. Port on the CCPU. Configured by jumpers W18

90

Communication Ports

Name

Baud Rate

Serial Port COM9

9600

Serial Port COM10

9600

Bits Per Stop Character Bits

8

1

8

1

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Parity Protocol

NONE

BSAP Slave / ControlWave Designer

NONE

BSAP Slave / ControlWave Designer

Cable / Interface
RS232 null modem cable or RS485
RS232 null modem cable or RS485

Notes
through W24 and switch SW4 on CCPU. On original DPC 3330 known as Port BIP2. Port 9 on the CCB. Configured by jumpers W16 through W23 and switch SW2 on CCB. On original DPC 3335 known as Port I. Port 10 on the CCB. Configured by jumpers W24 through W30 and switch SW4 on CCB. On original DPC 3335 known as Port J.

Factory Defaults for ControlWave_31 (CW_31) Serial Ports

Note: Because the CW_31 does NOT support a communications board in Slot 13 or Slot 10, and for firmware compatibility purposes, the following ports do NOT exist on these units: COM1, COM2, COM3, COM4, COM7, COM8, COM9, COM10.

Name
Serial Port COM5

Baud Rate
9600

Bits Per Character
8

Stop Bits
1

Parity Protocol

NONE

BSAP Slave / ControlWave Designer

Serial

9600

8

Port

COM6

1

NONE BSAP Slave /

ControlWave

Designer

Cable / Interface
RS232 null modem cable or RS485
RS232 null modem cable or RS485

Notes
Port on the CCPU. Configured by jumpers W10 through W16 and switch SW3 on CCPU. On original RIO 3331 known as Port BIP1. Port on the CCPU. Configured by jumpers W18 through W24 and switch SW4 on CCPU. On original RIO 3331 known as Port BIP2.

Communication Ports

91

ControlWave Designer Programmer's Handbook D301426X012 August 2020
How can the port configuration be changed?
If you want to use port settings other than the defaults, you must connect to the ControlWave unit, and change the port configuration settings. The new settings are saved in the 512K FLASH BIOS of the ControlWave unit. Port configurations may be changed via the Flash Configuration Utility.
Important When you make changes to port configurations, some of the changes will take effect immediately after you exit the Flash Configuration Utility. Other changes will not take effect until after you have reset the ControlWave unit (turned it off and then back on).

Dialing - An Overview
Beginning with ControlWave firmware version 04.00, dialing is supported via the DIAL_CTRL function block. To configure dialing, you must:  Configure the communication port from the 'Ports' page of the Flash Configuration
utility.  Identify the communication port used for dialing via the _Px_DIAL_PORT system
variable, in your ControlWave project. Dialing will NOT function unless the port is identified as a dial port. System variables are configured in the System Variable Wizard.  Configure your ControlWave project to handle dialing. Use the DIAL_CTRL function block to specify the various dialing parameters. See the on-line help in ControlWave Designer for more information. Any RS-232 port can be a dial port, and you can have multiple dial ports and multiple DIAL_CTRL function blocks in your project, but each port must have a dedicated modem.  Configure the external modem which will perform the dialing. Currently, we offer the MultiTech® Systems Embedded Data FAX Modem. See the documentation accompanying this modem for configuration details.
Serial Port Sharing between the BSAP Slave and Custom Slave Protocols:
Normally, when you configure a serial port on a ControlWave-series controller, the port only uses a single protocol, such as BSAP or Modbus and that protocol has full control over that port. Under certain circumstances, though, you can configure serial port sharing which allows a single port to serve as both a BSAP slave, and as a custom slave using a custom protocol.

92

Communication Ports

ControlWave Designer Programmer's Handbook D301426X012 August 2020
To implement serial port sharing, you must follow these rules:
1. Define the serial port as the appropriate custom slave port, such as Modbus slave, Allen-Bradley slave, etc.
2. Ensure that the port characteristics, e.g. baud rate, start/stop bits, and parity, used by both the BSAP master, and the custom master match exactly.
3. When switching from one master to the other master, the first communication protocol must relinquish control over the port and allow the second protocol to establish successful communication with the new master using one of the following methods:
a. The communication line must be quiet for approximately 1 minute or
b. The new master must make approximately five attempts to establish communications with the slave, even if it receives no response.
c. You can set the _Pn_INH_BSAP_SLAVE system variable to TRUE (firmware 05.43 and newer) to inhibit the serial port from accepting any BSAP slave communications.
Serial port sharing has been tested for switching between the BSAP and Modbus slaves as well as between BSAP and Allen-Bradley DF1 slaves. For any other protocol combinations, you must verify that serial port sharing works properly for your application.

Communication Ports

93

ControlWave Designer Programmer's Handbook D301426X012 August 2020

94

Communication Ports

Compiling

ControlWave Designer Programmer's Handbook D301426X012 August 2020

When you have finished editing your ControlWave Designer project, it must be compiled. The compilation process takes your project (programs, function blocks, tasks, etc.) and generates machine-readable code from it. After successful compilation, the machine readable code for the project can be downloaded into the ControlWave-series controller or the I/O Simulator.
Note: If a particular POU has NOT been compiled, its name will have an asterisk (*) next to it in the project tree.
The compilation process checks for any syntactical errors in your project, and also issues warnings about possible problems with the structure of the project. It does NOT check for logic errors in your control strategy, however.
To compile the project, click on the icon shown at left, or go to the menu bar, and click as follows: BuildMake
Various messages will appear on the screen.

If there are errors or warnings, click on the "Errors" or "Warnings" tab for more information.

If there are errors or warnings generated during the compilation, you can view them by clicking on the `Errors' or `Warnings' tabs, respectively. Often, you can double-click on the error listed in the error window, and its location in the project will be identified.

Compiling

95

ControlWave Designer Programmer's Handbook D301426X012 August 2020
For more information about what a particular error message means, right-click on the error message, then choose "Help on Message" from the pop-up menu (if it is available.)
Right-click on the error message to jump to the location in the file where the compiler found this error.
Double-click on the error message and choose "Help on Message" from the pop-up menu to get more information on the error.

96

Compiling

Conditional Logic

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Certain function blocks (for example, LIST function blocks) should only be executed once at application cold start and at application warm start.

Note Lists can also be created using the DB_LOAD function block (without any LIST function blocks). See the Variable Extension Wizard for more information.

If you attempt to execute these function blocks multiple times, the system tries to define the list structures multiple times, which results in an error code, each time the LIST is executed. While this does not prevent your ControlWave project from executing properly, it can burden you with unnecessary error messages, which could prevent you from seeing more useful error messages.
To avoid this, you can use conditional logic to execute the list only once.
Using Conditional Logic to Execute a Function Block Only Once
This is most easily accomplished when using a POU written in Structured Text (ST) language.
In the example, below, a variable called INIT, of type BOOL has been created, which has an initial state of TRUE. Note that for this type of operation, the variable should NOT be marked as "RETAIN", because that would prevent the list from being defined following an application warm start.

At application start up, the INIT variable is read as part of an IF - ENDIF block. Since it is TRUE, the LIST function block will be executed, thereby defining the list. At the very end of

Conditional Logic

97

ControlWave Designer Programmer's Handbook D301426X012 August 2020
the IF-ENDIF block, the INIT variable is set to FALSE, to prevent that block of code from executing again:
ST CODE EXCERPT: IF (INIT) THEN _LIST_10_1.iiListNumber := 1; _LIST_10_1.ianyElement1 := LOAD_NAME; _LIST_10_1.ianyElement2 := FUN1_TEST_CNT; _LIST_10_1.ianyElement3 := FUN_TEST1_HLT; _LIST_10_1.ianyElement4 := FUN_OUT_001; _LIST_10_1.ianyElement5 := FUN_ERROR1_CNT; _LIST_10_1.ianyElement6 := FUN2_TEST_CNT; _LIST_10_1.ianyElement7 := FUN_TEST2_HLT; _LIST_10_1(); INIT:= FALSE; END_IF;

98

Conditional Logic

Using LD:

ControlWave Designer Programmer's Handbook D301426X012 August 2020
To execute a block of code only once in Ladder Language (LD), you can use the '>>' jump statement to effectively skip the code on subsequent executions. Execution proceeds leftto-right and top-to-bottom.
In the first line, the jump statement at the far left is ignored, because 'C002' is FALSE, and so execution continues on the next line
The second line turns on 'C002'.

The third line (LIST function block) is executed.

On subsequent executions, the second and third lines will be skipped, because 'C002' is now TRUE - - program execution will jump to the 'Sample' label, where additional code could be executed.
This will continue on all subsequent executions (until the system is restarted), because the jump condition is satisfied.

Conditional Logic

99

ControlWave Designer Programmer's Handbook D301426X012 August 2020

100

Conditional Logic

DataView

ControlWave Designer Programmer's Handbook D301426X012 August 2020

You can use OpenBSI's DataView to call up the value of variables in your ControlWave project. For this work, OpenBSI communications (NetView or LocalView) must already be communicating with the ControlWave.

Note: For a full discussion of how to use DataView, please refer to Chapter 8 of the OpenBSI Utilities Manual (part number D301414X012).

Before you begin:
Note: Only global variables (typically I/O global variables), or variables which have been marked as "PDD" in ControlWave Designer will be visible in DataView.

Click here to mark the variable as "PDD."

DataView

101

ControlWave Designer Programmer's Handbook D301426X012 August 2020
In addition, you must have made the proper settings for PDD in the Resource Settings dialog box (shown below):

Check this to declare all global variables as "PDD."

Check this to declare all local variables marked as "PDD" as "PDD."

Calling up ControlWave Data in DataView
Step 1. In NetView or LocalView, right-click on the icon of the ControlWave you want to access, and choose RTU  DataView from the pop-up menus.
Step 2. Sign on.
Step 3. Click on the Signal Search icon or click on File  New, and then click on "Signal Search" in the New list box. Either method will call up the Signal Search Properties dialog box.

102

DataView

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Step 4. The Signal Search dialog box should appear, with the ControlWave's node name in the "Node" field.
To see ALL variables which are global, or have been marked as PDD, just click on [OK].
To search for a specific variable, follow the instructions in Chapter 8 of the OpenBSI Utilities Manual (part number D301414X012).

DataView

103

ControlWave Designer Programmer's Handbook D301426X012 August 2020

104

DataView

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Debugging ­ An Overview
Once you have corrected all syntactical errors and have successfully compiled your project, you can download it into the ControlWave-series controller or the I/O Simulator (see Downloading for information on how to do this).
ControlWave Designer supports several different debugging techniques to help isolate logic problems you find in your running ControlWave project. The techniques supported include:  Using the Watch Window to display only a certain set of variables which you are
interested in.  Using the Cross-Reference Window to display where all variables and function blocks
are used within a project.  Using the Patch POU feature to perform edits to a running project, without stopping
execution.  Using breakpoints to stop execution at particular points in a POU, allowing the user to
step through code, and view the results of execution at each step.  Using the Force/Overwrite options to manually change values of variables in the
running project.
Important We recommend that debugging be performed only in the I/O Simulator, or in a ControlWave-series controller that is NOT currently connected to a running plant or process. This is because debug operations such as setting breakpoints, or forcing variables could cause an upset to a critical process.
These techniques are all performed in on-line Debug Mode, when you are communicating on-line with the ControlWave-series controller, or the I/O Simulator, from within ControlWave Designer.
Starting Debug Mode
With the project executing in the ControlWave, or the I/O Simulator, you can put ControlWave Designer into on-line Debug Mode to view the current values of variables, or perform debugging operations. To enter Debug Mode, click on the `Debug On/Off' icon, shown above, or click on OnlineDebug.
Using the Watch Window
The Watch Window allows you to view just the variables you are interested in. To open the Watch Window, click on View Watch Window.

Debugging ­ An Overview

105

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Open up your main worksheet, and right-click on the name of a variable you want to include in the watch window, then choose "Add to Watch Window" from the pop-up menu.
Right-click on the variable's name, then choose "Add to Watch Window."

Watch Window.

Click on tabs to bring up different pages of the Watch Window.

The variable will be added to the currently open page of the Watch Window. Continue to add variables to the watch window, as desired.

106

Debugging ­ An Overview

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Using the Cross-Reference Window
The Cross-Reference Window displays in detail, how and where any particular variable, function block, etc. is used within the project. To open the Cross-Reference Window, click on Build  Build Cross References.
Right-click in the Cross-References Window, and choose "Build Cross References" from the pop-up menu.
The Cross Reference tables will be generated and displayed in the window. You may want to drag the window borders to display additional information.
Once the cross-reference information is displayed, you can double-click on any variable name, and the worksheet containing that particular usage of the variable will be displayed.

Double-click on a variable name in the cross-reference window, and the worksheet containing that usage of the variable opens.

Debugging ­ An Overview

107

ControlWave Designer Programmer's Handbook D301426X012 August 2020

On-line Editing with Patch POU
On-line editing allows you to make changes to the ControlWave project running in the controller, or in the I/O Simulator, without pausing the execution of the project. First, clear all breakpoints. (Clearing breakpoints is discussed later in this section.)

If you are already in on-line Debug Mode, you must click on the

button to exit Debug

Mode, or click on "OnlineDebug".

Now make the edits you want to make in your POU. For example, the COMMAND function block shown on the left, below, has no variable for the ibOFF_Lim_Sw parameter defined. On the right we have added it. Because we have made an off-line edit, the `Patch POU' icon now becomes available.

Once you make your edit, in this case, adding a variable name, the Patch POU icon becomes available.

Click on the `Patch POU' icon and the edits you have made to your POU will be compiled, and downloaded into the running project, without stopping execution.
On-line Debug Mode will automatically be started so you can observe the behavior of the newly modified POU in your running project.

108

Debugging ­ An Overview

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Using the Force/Overwrite Options
Force and Overwrite are ways to manually change the values of variables in the running ControlWave project.
Forcing an I/O Variable's Value
Force should only be used with I/O variables. To force an I/O variable changes its value at the point it is sent to the I/O board. Other logic within POUs can alter the I/O variable's value within the project, but at the point it reaches the I/O, the force action will be applied. That I/O point will stay at its forced value, until changed by the user, or until the force is removed.  In Debug Mode, go into the worksheet for one of your POUs, for example, one of the
graphical worksheets, and find the I/O variable you want to force.  Double-click on the I/O variable that you want to force. The Debug: RTU Resource
dialog box will appear.  Select the new value for the forced variable. (For REAL variables, enter a value in the
"Value" field; for BOOL variables, select either "TRUE" or "FALSE". After specifying the value, click on the [Force] button, and the force will be applied at the I/O point.  To stop applying the forced value, double-click on the I/O variable, and click on the [Reset force] button in the Debug: RTU Resource dialog box.
Enter the value you want to force the value to, then click Force.
To remove the force, click Reset force.

Debugging ­ An Overview

109

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Note: The force operation is only applied at the I/O point, as the value is sent to the physical I/O board. If you examine the value of the variable at other points in the POU execution, you may see a different value for the variable, because the force has not yet been applied at that point. Also, if you are seeing unexpected values for the variable, you may want to use the I/O Configurator to associate the I/O board containing points you are going to force with a particular task (see "Related Task" field in the I/O Configuration Wizard); this will ensure that execution of the task is coordinated with data updates to the I/O point.
Temporarily Overwriting a Variable's Value
To overwrite a variable, means that the user changes the variable's value, however, there is nothing to prevent logic in the control strategy from subsequently changing it.  In Debug Mode, go into the worksheet for one of your POUs, for example, one of the
graphical worksheets, and find the variable you want to overwrite.  Double-click on the variable that you want to overwrite. The Debug: RTU Resource
dialog box will appear. (See page 110).  Specify the new value you want to send to the variable. (For REAL variables, enter a
value in the "Value" field; for BOOL variables, select either "TRUE" or "FALSE". After specifying the value, click on the [Overwrite] button, and the new value will overwrite the current value of the variable.
Note: This only temporarily changes the variable's value. Logic in your ControlWave project can change it to a value different from the value you specified.
Setting a Breakpoint
A breakpoint is used to temporarily halt execution of the ControlWave at a particular spot in the executing project. Once a breakpoint is activated, the user can manually `step through' the code, to observe the values of variables at each step of the program execution.  In Debug Mode, go into the worksheet for one of your POUs, for example, one of the
graphical worksheets, and double-click on a particular point in the code, where you want to set a breakpoint, for example, on a variable as it enters a function block. The Debug: RTU Resource dialog box will appear (see page 110).  In the `Breakpoint' section of the dialog box, click on the [Set BP] button to set the breakpoint. Execution of the project will halt at that point, and that area of the code will be highlighted in orange. If not already visible, call up the RTU_RESOURCE dialog

110

Debugging ­ An Overview

ControlWave Designer Programmer's Handbook D301426X012 August 2020
box by clicking on "Online Project Control" or by clicking on the Project Control icon.  In the RTU_RESOURCE dialog box, you now can choose how you want to resume execution. There are three different choices: Choice 1: Click on [Go] and the project will execute until it encounters another breakpoint, and then it will halt.
Choice 2: Click on [Step] and the project will execute the next item of code and halt, again, until you click on [Step] again. This allows the programmer to move through the execution step-by-step, and examine how variables are affected at each step of execution. The current location where execution has halted is highlighted in orange.
Choice 3: Click on [Trace] this is similar to [Step] except it shows even more detail by executing step-by-step through individual function blocks.
Clearing the Breakpoint(s)
When you are finished performing debugging operations, you must remove the breakpoints from your project, or it will be unable to execute properly.
In the Debug: RTU Resource dialog box, click on [Reset BP] to reset the current breakpoint (the one where execution is currently halted. To clear all breakpoints, click on [Reset all BP].
Verifying that Breakpoints and Forces Have Been Cleared
Before exiting Debug Mode, you should check to see that you have cleared all breakpoints, and force operations. Otherwise, these will remain active in your project, even after you exit Debug Mode.
To verify that these have been cleared, click on the [Info] button in the RTU_RESOURCE dialog box, and look at the `Breakpoints' and `Force' sections at the bottom of the Resource page. If it says `No breakpoints active' and `No variables forced' it is safe to exit Debug Mode.
If, however, you see `Breakpoints active' or `Variables forced', you must select the "Reset breakpoints" and "Reset forcelist" check boxes, and click on [OK], prior to exiting Debug Mode, or the breakpoints and forces will remain set.

Debugging ­ An Overview

111

ControlWave Designer Programmer's Handbook D301426X012 August 2020

If you see "Breakpoints active" or "Variables forced" you should check the reset boxes and click "OK".

Exiting Debug Mode
You must exit Debug Mode in order to make edits to your project. To exit on-line Debug Mode, click on the `Debug On/Off' icon, shown above, or click on OnlineDebug.

112

Debugging ­ An Overview

Downloading

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Downloading is the process of transferring the compiled control strategy from your PC workstation, into the memory of the ControlWave controller.

Note: Besides the control strategy, the compressed project source code (*.ZWT) can also be downloaded.
In ControlWave Designer, a user creates a control strategy to perform whatever systemspecific job they want to use the controller for, and saves it as a ControlWave project. The project is compiled and the resulting computer code is then downloaded from the PC into the ControlWave's memory using either ControlWave Designer, or the OpenBSI Downloader.
When downloading the project directly from within ControlWave Designer, the user has a choice of downloading the project directly into dynamic memory for execution (SDRAM or SRAM depending on the platform), or downloading into the FLASH memory area (this is called downloading the boot project). When downloading from the OpenBSI 1131 Downloader, only the boot project may be downloaded.
A project can only execute from the dynamic memory area, but is lost in the event of a power failure or a program watchdog condition.
Because dynamic memory is not saved in these situations, a copy of the project is typically stored in the boot project area of FLASH memory. The boot project cannot execute from inside the FLASH memory area, but is automatically copied into the dynamic memory area during system re-boot (power restoration after power failure, restart following program watchdog condition.)
Typically, users download their project into the dynamic memory area only during system development and debugging. Once a control strategy is finalized, and has been tested fully, it should be downloaded as the boot project into FLASH memory.

Two Methods Available for Downloading
There are two ways to download your ControlWave project into the ControlWave series controller:  Download the project from within the ControlWave Designer program.  Download the project with the OpenBSI IEC61131 Downloader.

Downloading

113

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Downloading from within ControlWave Designer
Using the Resource Settings Dialog Box to Set up ControlWave Designer Communications
Step 1. Connect a cable between the PC workstation running ControlWave Designer, and the ControlWave. The type of cable used will vary depending upon which ports on the PC and on the ControlWave you have chosen. NOTE: For ControlWave Designer TCP/IP or OpenBSI connections, the cable might not go directly to the ControlWave, it may go to a network, of which the ControlWave is part.
Ignore the COM1 through COM4 selections. They are not used.
Simulations are only used when you download to the I/O Simulator.
Choose this to specify the method of communication with the ControlWave.
Choices are "Serial," "TCP/IP" or "Open BSI."

If you choose "Serial," for the DLL, specify the PC comm. port, baud rate, and timeout in milliseconds. If you choose "TCP/IP" specify the IP address of the ControlWave, and the timeout in milliseconds. If you choose "Open BSI" just specify the node name of the ControlWave.
Step 2. Open your ControlWave Designer project. For help on creating a project in ControlWave Designer, see Getting Started in ControlWave Designer (part number D301416X012).
Step 3. Call up the Resource Settings dialog box by right-clicking on RTU_RESOURCE: ControlWave in the project tree, and choosing "Settings" in the pop-up menu. NOTE: This dialog box is NOT accessible when on-line communication is already in progress.

114

Downloading

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Step 4. In the 'Port' box, choose "DLL" and the "DLL" list box and "Parameter" field will be activated. NOTE: "DLL" will be grayed out and unavailable if you do NOT have a software copy protection key (dongle) plugged into the parallel port of your PC.
Step 5. In the "DLL" list box, choose one of the three available DLLs ('Serial', 'TCP/IP', or 'OpenBSI'), and enter the "Parameters" appropriate to that DLL.
'Serial'
If you choose 'Serial', this means you will use the ControlWave Designer Protocol (Serial DLL) to communicate with the ControlWave.
In order to use this DLL, the ControlWave key switch must be in the 'LOCAL' position.
The cable connection must be to one of the ControlWave's serial COM ports.
In the "Parameter" field (shown below) specify the PC COM port (not the ControlWave COM port), the baud rate at which communications will occur (which must match the baud rate configured at the ControlWave) and a timeout for the port in milliseconds.
ControlWave Designer Serial DLL

PC COM port

PC port Baud rate (must match baud rate at controller's port.)

Timeout (in milliseconds)

'TCP/IP'
If you choose 'TCP/IP', this means you will use the ControlWave Designer Protocol (TCP/IP DLL) to communicate with the ControlWave.
In order to use this DLL, the ControlWave key switch must be in either the 'LOCAL' or 'REMOTE' position.
The ControlWave must be reachable via TCP/IP, from this PC.
In the "Parameter" field (shown below) specify the IP address of the ControlWave port to which the connection has been made, and a timeout for the port in milliseconds.

Downloading

115

ControlWave Designer Programmer's Handbook D301426X012 August 2020
ControlWave Designer TCP/IP DLL

IP address of the controller's port

Timeout (in milliseconds)

'OpenBSI'
If you choose 'OpenBSI', this means OpenBSI will handle all communications between ControlWave Designer, and the ControlWave. For this to work, you must have already configured OpenBSI, and included the ControlWave controller in an OpenBSI network.
The ControlWave key switch must be in either the 'LOCAL' or 'REMOTE' position.
In the "Parameter" field (shown below) replace the '<node>' with the RTU node name (as defined in the OpenBSI network) for the ControlWave.
ControlWave Designer communications handled entirely by OpenBSI

In place of <node> enter the RTU node name of the controller, as defined in NetView. (Be sure you erase the "<>".)
Step 6. Click on [Ok] to exit the Resource Settings dialog box. You can now proceed to download your ControlWave project, or you can enter debug mode.

116

Downloading

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Downloading Your ControlWave Project from Within ControlWave Designer
Before downloading a project into the ControlWave, you must have compiled all of your edits and specified the communications method using the Resource Settings dialog box (see above). If the ControlWave is connected to an actual running process, we recommend you download and test the project in the I/O Simulator first.
DANGER
Users should never attempt to download an untested program into a controller if the controller is currently connected to a running plant or industrial process. Safeguards must be taken prior to downloading to ensure that the controller is isolated from the process and I/O is disconnected. Failure to take such precautions could result in injury to persons or damage to property.
Step 1. Click on Online Project Control Step 2. The RTU_RESOURCE dialog box will appear. If there is already a project running in
the ControlWave, you can optionally stop it first, before proceeding with the download, by clicking on the [Stop] button. Provide your username and password, if prompted. Now click on the [Download] button to call up the Download dialog box.
If you already have a project running in the controller, click here to stop it, first.
Click here to call up the Download dialog box.
Step 3. Click on the [Download] button on the left side 'Project' portion of the dialog box, and the compiled project code will be downloaded in the SDRAM memory (or SRAM) of the ControlWave. (There are several other options for downloading; see the figure on the next page).
Note For many ControlWave platforms (GFC, XFC, Express) there is no SDRAM. The control strategy file executes in Static RAM (SRAM).

Downloading

117

To download the bootproject (*.pro) at the same time as you download the ControlWave project, select this.

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Click here to download your compiled project. This is the actual executable code which runs in the ControlWave. The project code executes in either SDRAM or SRAM.

Click here to download just the compiled project code into the bootproject area of FLASH memory. This is preserved in the event of a power failure.

To download the zipped ControlWave source file (*.zwt) at the same time as you download the ControlWave project, select this.
You should check "Include OPC data" if you want to use ObjectServer or you want to use Signal Extractor to create a database.
Click here to download just the zipped ControlWave source file (*.zwt). This is the file and libraries you actually edit with ControlWave Designer, NOT the compiled code which executes in the ControlWave.

"Activate" copies the bootproject into SDRAM or SRAM (depending on the platform). This happens automatically on power-up.

This deletes the bootproject.

User libraries are usercreated collections of functions and function blocks.
Pagelayouts are the graphical elements of your project e.g. the project tree.

This can be used to download other files (e.g. web pages) to the FLASH area of the ControlWave.
Click here to delete any existing *.ZWT file already in the ControlWave.

Step 4. In the RTU_RESOURCE dialog box, start the project execution by clicking on either the [Warm] or [Cold] buttons.
The [Warm] button performs an application warm start. The [Cold] button performs an application cold start. An application warm start means that the project in SDRAM is started from the beginning of its cycle, using saved values for variables marked "RETAIN" from the Static RAM (SRAM). Application warm starts are performed whenever there is no version mismatch between the project, and the retain values, and there was no system cold start. If a system cold start occurred, however (i.e. loss of battery power to the SRAM, or static memory SRAM Control Switch set OFF) all data in static RAM is gone, so an application cold start

118

Downloading

ControlWave Designer Programmer's Handbook D301426X012 August 2020
must be performed. In this case, the project in SDRAM is started from the beginning, and all variables are set to their initial values. Application warm starts and cold starts can also be performed by the user after downloading a project from within ControlWave Designer by choosing the [Cold] or [Warm] buttons in the RTU Resource dialog box. For more information on this subject, see `Memory Usage' later in this manual.
Downloading using the OpenBSI ControlWave Downloader
Before You Begin
There are certain things you must do before you can download to a ControlWave-series controller.
 You must save your project as a ControlWave project *.MWT file.  You must generate a boot project file during compilation in ControlWave Designer. To
do this, you must check the Generate bootproject during compile box for your resource.  You must generate a zipped project file (*.ZWT) in ControlWave Designer. One way you can do this is to manually save your ControlWave project as a zip file:

Make sure this box is checked in ControlWave Designer when you compile/build your project.

Downloading

119

ControlWave Designer Programmer's Handbook D301426X012 August 2020

First click the "Save Project As/Zip Project As" option in ControlWave Designer.
Next, make sure you choose "Zipped Project Files (*.zwt) in the Save as type list box, or else the project won't be zipped.
Use the "..." button to specify the directory which will hold your download files. When you initiate a transfer, the utility creates a sub-directory of the download directory to hold the boot and zip files for this particular project.

If you didn't generate a ZWT file yet, check this box and the utility does it for you.

Click here to start the transfer.

You must transfer the bootfile and zip file for this project to a sub-directory of whichever directory you want to use for downloads. You can accomplish this if you click Build  Transfer Download Files in ControlWave Designer. In this utility, you must specify the download directory in the Download dir field.

120

Downloading

ControlWave Designer Programmer's Handbook D301426X012 August 2020
If you check Zip Project and Transfer Zip File (default), the system zips the current project automatically, in preparation for the transfer. If you select the Compress user libraries into download project option, the system zips the user libraries and includes them in the zip project.
Note: Zip Project and Transfer Zip overwrites any pre-existing zip file for this project. To prevent this, you can disable the option, however, if you do, you must have a previously created zip available for transfer.

When you finish making selections, click Transfer and the file transfer begins.
If your ControlWave-series node includes a key operated RUN / REMOTE/ LOCAL switch, you must turn the switch to either the REMOTE or LOCAL position, depending upon how the PC connects to the ControlWave. Downloading CANNOT occur with the switch in the RUN position.

Starting the ControlWave Downloader

There are two methods for starting the ControlWave Downloader:

Method 1:

Click Start  Programs  OpenBSI Tools  ControlWave Tools  ControlWave Downloader. The Select New Node dialog box opens. Use the list box to select the node which you want to download to; then
click OK, and the Downloader opens.

Method 2:

The second method is to rightclick on the icon for the controller you want to download, in the NetView tree, and choose RTUDownload from the pop-up menu.

Downloading

121

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Using the ControlWave Downloader

When the ControlWave Downloader dialog box opens, complete the fields as described, below:

Enter the proper username and password for this controller.

Click here to start the download.

RTU node name (as it appears in the NetView tree)
Check this to allow the ZWT file to download.
Shows the progress of the download.

Use this browse button to choose the sub-directory containing your bootfile.pro and
Use this browse button to choose the sub-directory containing user files. You can use the ControlView utility to retrieve these.

When downloading a project, click "Warm Boot" to perform a warm download (project is started from the beginning using values saved as RETAIN ­ if project hasn't changed to a degree that those values don't apply). If you de-select "Warm Boot" a cold download occurs (project is started from the beginning

Check this box to download user files (.HTML, etc.) which the ControlView utility can retrieve later.

Field
Node

When the fields are completed, click Begin to start the download. The fields/buttons in this dialog box are:
Description
This displays the node name (as it appears in the NetView tree) for this ControlWave-series controller.

Username, Password

Enter a valid username/password combination for this ControlWave-series controller.

Project Path

Enter the path of the project that the Downloader will download to this controller, or use the Browse Bootfile button to locate it. (The path must be a sub-directory of whichever directory you specified for downloads (Download Dir) in the Transfer Download Files dialog box) The project files consist of the .PRO boot file, generated when you compile your ControlWave project, and the zip file (*.zwt) containing the project source. Note: If your

122

Downloading

Field
User Files Path Begin

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Description
project includes multiple resources, each one has a different path, and you must choose the appropriate one.
Enter the path of the folder containing files you want to download to the user files area of the ControlWave, or use the Browse Path button to locate it. (See Download User Files, below).
Click here to start the download.

Cancel

Click here to exit down the 1131 Downloader.

Warm Boot

When you don't select this check box, all variables initialize as part of the download, and the project restarts. When you choose Warm Boot, any variables configured as RETAIN do not re-initialize as part of the download, however, all other variables initialize, and the project restarts from the beginning of its cycle.

ZipFile

When you select this option, the download operation includes the zipped project file (*.ZWT).

Download User Files

The ControlWave can store user files (*.ZIP, *.HTML, etc.) in flash memory, for later retrieval using the ControlView utility. You must place the user files you want to download to the ControlWave in the folder identified by the User Files Path field. Note: This feature was added in OpenBSI 5.3 Service Pack 2.

Creating Download Scripts for Batch Downloading of ControlWave Controllers

Optionally, you can create download scripts which allow you to download files to ControlWave controllers using a single command.

You create download scripts as ASCII text files, with the file extension of *.RDL, and store them in the Downloads sub-directory of your OpenBSI directory.

Each line of the download script, defines the downloading parameters for a single ControlWave controller. The syntax of a line of the download script is:

nodename,filetype,startup,includezip,source_path

where:

nodename

is the name of the ControlWave controller you want to download. This name must match the name you define in NetView. (This is the only required field.)

filetype

specifies the kind of file you want to download. filetype must be either:

P

Download a ControlWave project (default)

F

Download a user file (used with ControlView)

Downloading

123

ControlWave Designer Programmer's Handbook D301426X012 August 2020

startup

specifies whether the system should perform a warm boot upon completion of the download. startup must be either:

Y

Perform a warm boot (default)

N

Do not perform a warm boot

includezip

specifies whether or not the Downloader should also download the zipped ControlWave project (*.ZWT). includezip must be either:

Y

Include *.ZWT with the download

N

Do not include *.ZWT with the download (default).

path

specifies the source folder containing the file you want to download. If you

download a project, this must be the directory containing bootfile.pro. If you

download user files for use with ControlView, this must be the folder containing

those files. If the folder name contains spaces, you must surround it with

quotation marks " ". If you enter nothing here, the Downloader uses OpenBSI

Application Parameter defaults.

Example RDL File: RPC1,P,Y,Y,C:\ProgramData\Bristol\OpenBSI\"My downloads" RPC2,P,Y,Y,C:\ProgramData\Bristol\OpenBSI\"My downloads" RPC3,P,Y,Y,C:\ProgramData\Bristol\OpenBSI\"My downloads" RPC4,P,Y,Y,C:\ProgramData\Bristol\OpenBSI\"My downloads" Starting the Download Script To start the download script you create, click on File  Open Script within the ControlWave Downloader, then choose the RDL file that contains the download script. You can also run download scripts from the command line prompt according to the following syntax:
dl1131 script_name username password

where: script_name

is the name of the RDL file (omitting the RDL extension)

username password is a valid username/password combination for the first RTU in the script. The named user must have privileges sufficient to download.
For example, to run the download script myloads.RDL where the first RTU in the RDL file has a username/password combination of THOMAS BOB276, type the following:
dl1131 myloads THOMAS BOB276

124

Downloading

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Running the ControlWave Downloader from the Command Line:

Optionally, you can start ControlWave Downloader from the DOS command prompt. Follow the syntax rules below; optional switches appear in brackets "[ ]." The command for this is:

dl1131 node [file] username password

where:

node

is the RTU node name as defined in the NETDEF files. If no file is specified, the Downloader uses the file specified in the RTU Properties in NetView.

File

is the basename of the ControlWave project. You can omit the .PRO or .MWT

extension. When you specify a file, you override any filename specified in the RTU

Properties in NetView. If the filename includes spaces, you must surround it with

quotation marks " ".

username password

is a valid username/password combination for this RTU. The user you specify must have sufficient privileges to perform the download.

Downloading

125

ControlWave Designer Programmer's Handbook D301426X012 August 2020

126

Downloading

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Expanded BSAP (EBSAP) Communications
A Bristol Synchronous / Asynchronous Protocol (BSAP) network enforces an absolute limit on the number of nodes (remote process controllers) which may be addressed on the level below a given node or OpenBSI Workstation. That limit, from all master ports combined, is 127 nodes. Certain applications (particularly those involving large numbers of radio remotes operating on the same frequency) may require larger numbers of nodes to be addressed through the same port. To address more than 127 nodes through a given master yet still not violate the BSAP limit, you must use a technique called expanded BSAP (or EBSAP).
Expanded BSAP allows the creation of virtual nodes below an EBSAP Master Port, and each of these virtual nodes can address up to 127 actual nodes. The virtual node, itself, exists only as a software structure in the EBSAP Master node above it; there is no additional physical remote process controller involved. The presence of the virtual node, however, introduces an intermediate level into the network which allows up to 127 actual physical nodes to be addressed below it, while only one node, the virtual one, is counted on the intermediate level. Since a real, physical remote process controller on level n of the network can address 127 nodes below it (all on level n+1), if each of these nodes were virtual nodes, and each virtual node had 127 real, physical nodes below it (on level n+2) expanded addressing would theoretically allow 127 groups of slave nodes, with each group containing up to 127 nodes, all addressed by a single master node. In fact, they could all be on the same master port. That's 127 X 127 or a total of 16,129 nodes!
Important Although the expanded addressing scheme theoretically allows 16,129 nodes, other practical limitations (such as running out of memory in the master node, the ability of OpenBSI to support only up to 4,999 nodes, limitations on the number of data collection templates in the HMI, and the unacceptable length of time required to poll so many nodes) would rule out such a large number of nodes.
On some systems with radio remotes, where very long polling rates (several minutes, at least) are acceptable, it may be practical to use expanded BSAP. In other time-critical applications, even fifty nodes (far fewer than 127, and thereby not requiring expanded BSAP) may be too many to support fast data updates. It all depends on the capabilities of your network.
CAUTION
The size and composition of a network and the decision to use expanded BSAP must be made only after you have carefully examined of your system requirements and have fully considered how expanded BSAP may impact network performance.

Expanded BSAP (EBSAP) Communications

127

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Expanded BSAP -- The Concept
The following figure shows a portion of a BSAP network which does not use EBSAP. It has a single master node (on level n) with 50 slave nodes below it (on level n+1). These slave nodes use local addresses 1 through 50 (though there isn't room to show all of them in this picture.)

Because of new system requirements, it is decided that 90 additional slave nodes must be addressed through this master node, for a total of 140 slave nodes. This presents a problem because with fifty slave nodes already present, only 77 additional nodes could normally be added (50 + 77 = 127).
To get around this limitation, expanded BSAP will be used (see the figure below). An EBSAP Master Port will be added that will allow communication with virtual nodes. A virtual node, with a local address of 51, will be added to the network (on level n+1). The virtual node can address the 90 new real, physical nodes on the level below it (level n+2). These are called Expanded Addressing Slave (EASlave) nodes (or just EBSAP slave nodes).

Master Port Slave Port

EBSAP Master Port
Dial-up or radio link Slave Port (Local addresses 3
to 49 not shown)

Slave Port

Local Address: 1 Local Address: 2

Local Address: 50

Level n

VIRTUAL NODE

Level n+1

Local Address: 51

Local Address: 1

(Local addresses 3 to 89 not shown)

Local Address: 2

Local Address: 90

EBAP Slave Nodes

Level n+2

128

Expanded BSAP (EBSAP) Communications

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Since the virtual node is really a phantom controller, existing only in software, the EBSAP scheme has allowed a single EBSAP Master node at level n, to address 140 nodes; 13 more than would normally be allowed.
General Requirements for Expanded BSAP (EBSAP):
Every EBSAP network must have:
 An EBSAP Master node.
An EBSAP Master node can be any of the following:
1. An OpenBSI Workstation that has been configured with an EBSAP communication line. Virtual nodes must be on level 1 of the network, and EBSAP slaves must be on level 2 of the network.
2. Any ControlWave-series controller with version 04.50 or newer firmware that has been configured with an EBSAP Master Port. Control and status arrays must also be defined to handle polling for EBSAP slaves.
3. Certain Network 3000-series controllers (DPC 3330, DPC 3335, RTU 3310, or RTU 3305 with AG, RMS00, PLS00, LS500 or newer firmware). NOTE: This manual does NOT cover how Network 3000-series controllers are used in EBSAP. For information on this subject, please refer to the Expanded Node Addressing section of the ACCOL II Reference Manual (document# D4044).
 One or more virtual nodes
All the nodes immediately below an EBSAP Master port or on an EBSAP communication line must be virtual nodes. Virtual nodes are just software structures that reside in the EBSAP Master. They are defined in NetView, similar to any other RTU, but they are not actual hardware.
 From 1 to 127 EBSAP slave nodes underneath each virtual node
An EBSAP slave node can be any ControlWave-series controller or any ACCOL II-based Network 3000-series controller.
The EBSAP slave node must be assigned to the proper EBSAP group. EBSAP slave nodes underneath the first virtual node on an EBSAP Master port must be assigned to Group 0; EBSAP slave nodes underneath the second virtual node on an EBSAP Master port must be assigned to Group 1; and so on.
The following rules must be adhered to when using EBSAP:
 All nodes, whether master, slave, or virtual, must be defined in the current NETDEF file.
 All slaves on an EBSAP Master Port, which are on the level immediately below the node containing the port, must be virtual nodes.
 All slaves of the virtual nodes must be real remote process controllers; i.e. a virtual node cannot have a virtual slave.

Expanded BSAP (EBSAP) Communications

129

ControlWave Designer Programmer's Handbook D301426X012 August 2020
 Just like local address assignments, the choice of group numbers is important, and should NOT be done randomly. The EBSAP Group number identifies which virtual node on a given EBSAP communication line is above a particular RTU. See Specifying the Group Number for an RTU later in this section, for details.
 Peer-to-peer communication of signal lists and data arrays is only supported between nodes within the same group, and immediately below the same virtual node.
 Poll periods and timeouts must be set carefully based on the size of your EBSAP network.
Creating an EBSAP Master
As noted earlier, an OpenBSI Workstation or a ControlWave controller can serve as an EBSAP Master. Certain Network 3000 controllers can also serve as EBSAP Masters; they are not discussed in this manual.
Note: For information on using Network 3000 controllers in an EBSAP network, refer to Expanded Node Addressing section of the ACCOL II Reference Manual (document# D4044).
OpenBSI Workstation is EBSAP Master
To make an OpenBSI Workstation the EBSAP Master, you must define an EBSAP communication line that covers the address range of the virtual nodes.
Defining an EBSAP communication line:
There are two methods for defining an EBSAP communication line:
Method 1:
In NetView, drag an EBSAP line icon from the Toolbox into your network hierarchy. This will activate the Comm Line Wizard, from which you can proceed to define the EBSAP line as you would a regular BSAP line.

130

Expanded BSAP (EBSAP) Communications

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Method 2:
If you're already in the Comm Line Wizard, choose `EBSAP Line' as the node type and then continue to define it as you would a regular BSAP line.

Select EBSAP Line

ControlWave-series Controller is the EBSAP Master
Any ControlWave-series controller with 04.50 or newer firmware can serve as an EBSAP Master. To be an EBSAP Master, the ControlWave-series controller must be configured with an EBSAP Master Port, as well as control and (optionally) status arrays.
Defining an EBSAP Master Port
An EBSAP Master Port is configured from within the Flash Configuration Utility.
 Choose `EBSAP Master' as the "Protocol Mode".
 Specify the baud rate for the port in the "Baud Rate" field.
 Using the "Low Virtual Slave" and "High Virtual Slave" fields, specify the range of local addresses used by the virtual nodes. For example, if the virtual slaves use local addresses 5 through 9 on this EBSAP Master Port, then enter `5' for the "Low Virtual Slave" and `9' for the "High Virtual Slave".
 Set "Max Slaves" to the maximum number of real slave nodes that will be on the level immediately below any one of the virtual nodes on this port. For example, if you have 3 virtual nodes on this port, and one will have 20 nodes underneath it, another will have 15 nodes underneath it, and the third will have 27 nodes underneath it, then "Max Slaves" would be set to 27, since that is the maximum under any one virtual node. NOTE: The value of "Max Slaves" must be consistent with the maximum size of your network, as defined in NetView; i.e. if you mustn't specify more slaves than are supported by the network levels you defined previously. In addition, the "Max Slaves" value must be used later when you define the size of the control and status arrays for your port.
 When finished, save the port definition to the RTU by clicking on [Save to Rtu] and reset the controller for the change to take effect.

Expanded BSAP (EBSAP) Communications

131

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Defines the local address range of the virtual nodes on this port.

Choose "EBSAP Master"

Maximum number of real nodes allowed underneath one of these virtual nodes.

Configuring the Control and Status Arrays
There are four different arrays that are useful in EBSAP. Basically, they are used to turn ON/OFF polling for nodes, and to report whether communications are working for particular nodes.

Note:
ll these arrays must be registered using REG_ARRAY function blocks, and must be marked as PDD variables so they can be accessed by external programs (e.g. DataView).

_SLAVE_DEAD array and _SLAVE_POLL_DIS array
The _SLAVE_DEAD array provides an indication whether any responses have been received for slaves of the EBSAP Master. Because all the slaves immediately below the EBSAP Master are virtual nodes, the indication of responses received will actually deal with the EBSAP slaves under each virtual node. If there are any EBSAP slaves responding through a

132

Expanded BSAP (EBSAP) Communications

ControlWave Designer Programmer's Handbook D301426X012 August 2020
particular virtual node, the virtual node is considered `alive'; otherwise, it is considered `dead'. The _SLAVE_POLL_DIS array allows the programmer to selectively turn ON/OFF polling for the slaves of the EBSAP Master. Because all the slaves immediately below the EBSAP Master are virtual nodes, turning OFF polling for a particular virtual node will actually turn OFF polling for all the EBSAP slaves under that virtual node.. Because both the _SLAVE_DEAD array and _SLAVE_POLL_DIS array are also used in standard BSAP systems, they are automatically present in your project. You need to generate the system variables for them, however, in order to make reference to them. To configure the _SLAVE_DEAD and _SLAVE_POLL_DIS arrays do the following:
1.On the `Port Globals' page of the System Variable Wizard, check the "Master Dead_Slaves" (_SLAVE_DEAD) and "Don't Poll Array" (_SLAVE_POLL_DIS ) boxes. The arrays should also be marked as "PDD" to allow for collection by OpenBSI.
Check the boxes for "_SLAVE_DEAD" and "_SLAVE_POLL_DIS"

Expanded BSAP (EBSAP) Communications

133

ControlWave Designer Programmer's Handbook D301426X012 August 2020
2. This will cause a new worksheet to be created called SYS_VAR_WZ_TYPES. This worksheet contains the data types used by the _SLAVE_DEAD and _SLAVE_POLL_DIS arrays. In order to ensure that the new data type is fully accessible, please re-build your project using the command Build  Rebuild Project.

_SLAVE_DEAD and _SLAVE_POLL_DIS use the data type 'B_127'

3. For each of these two arrays (_SLAVE_DEAD and _SLAVE_POLL_DIS) you will want to register the arrays, so they can be made accessible to OpenBSI programs such as DataView or Harvester. To do this, use the Edit Wizard in ControlWave Designer to insert a REG_ARRAY function block (1 for each array).

a. The arrayDescriptor parameter should be set to the name of the array (either _SLAVE_DEAD or _SLAVE_POLL_DIS in this case.)
b. The iiArrayNumber parameter assigns an array number to the array, so it may be requested by external programs such as OpenBSI's DataView or Harvester.
c. The remaining

Choose either "_SLAVE_DEAD" or "_SLAVE_POLL_DIS" depending upon which one you are registering.

134

Expanded BSAP (EBSAP) Communications

parameters, odiStatus, ouiNumRows, ouiNumColumns need only be assigned variable names; since they are output parameters.

ControlWave Designer Programmer's Handbook D301426X012 August 2020

When you have completed this configuration for both arrays, and compiled and downloaded the project, the _SLAVE_DEAD and _SLAVE_POLL_DIS arrays will be operational.
Note: The interpretation of the BOOL array elements in all the control and status arrays can be toggled based on the value of the _BSAP_FLAG_SENSE system variable. By default, _BSAP_FLAG_SENSE is FALSE. By default then, in the _SLAVE_DEAD array, a TRUE BOOL value means that the associated virtual node is dead; i.e. there are no `live' EBSAP slave nodes for that virtual node. Also, by default, a TRUE BOOL value in _SLAVE_POLL_DIS turns polling OFF for a slave node.
If, however, the user changes the value of _BSAP_FLAG_SENSE to TRUE, the logic for interpreting the values of the array elements is reversed; a TRUE BOOL value in the _SLAVE_DEAD array would mean that there is at least one 'live' EBSAP slave node for this virtual node; similarly a TRUE BOOL value in _SLAVE_POLL_DIS would turn polling ON for a slave node.
_Px_DEAD_ARRAY and _Px_DISABLE_ARRAY
The _Px_DEAD_ARRAY and _Px_DISABLE_ARRAY system variables define the registered number of user defined arrays that handle reporting on whether polling is successful to EBSAP slaves on this port, and whether polling for the EBSAP slaves on this port should be enabled or disabled.
The user-defined array referenced by _Px_DEAD_ARRAY performs a similar function to the _SLAVE_DEAD array, except that instead of reporting on the virtual nodes, it reports on whether responses have been received from any EBSAP slave on this particular EBSAP Master Port. Users must define the data type for this array, based on the maximum number of EBSAP slave nodes for any virtual node on this port, and by the local address range of the virtual nodes used on this port.
Let's look at the network, below. It has one EBSAP Master port (Port 2) with 2 virtual nodes, and another EBSAP Master port (Port 3) with 1 virtual node. For Port 2, one virtual node has 90 EBSAP slave nodes; and the other has 72 EBSAP slave nodes. The maximum number of EBSAP slave nodes under any virtual node on Port 2 is therefore 90 so "Max Slaves" for Port 2 is set to 90. The single virtual node under Port 3 has just 2 EBSAP slave nodes, so the

Expanded BSAP (EBSAP) Communications

135

ControlWave Designer Programmer's Handbook D301426X012 August 2020
maximum number of EBSAP slave nodes for Port 3 is 2, and "Max Slaves" for Port 3 is set to 2.
Important: Because these arrays use dimensions of `Max Slaves' as defined in the Flash Configuration Utility; the appropriate dimension of the array must match that value exactly. Sizing the array larger or smaller, will prevent EBSAP from working.

Master Port EBSAP Master Port

Dial-up or radio links

Master Port

EBSAP Master Port

Slave Port

Slave Port

Local Address: 1 Local Address: 2

Slave Port

VIRTUAL NODE

VIRTUAL NODE

VIRTUAL NODE

Local Address: 3

Local

Local

Address: 4 Address: 5

Local Address: 6

(Note: These two nodes are in Group 0 because Group numbering starts at 0 for the first virtual node on any EBSAP Master Port. These nodes are on a different EBSAP Master Port than the other nodes shown.)

Local Address: 1 Local Address: 2

Local Address: 90

(Local addresses 3 to 89 not shown)

Local Address: 1

Local Address: 2

Local Address: 72

(Local addresses 3 to 71 not shown)

Local Address: 1

Local Address: 2

GROUP 0 EBSAP SLAVE NODES

GROUP 1 EBSAP SLAVE NODES

GROUP 0 EBSAP SLAVE NODES

We're going to describe how to create the arrays for Port 2 only. Port 3 would be similar.
1. To configure the data types for these arrays, first right-click on the `Data Types' item in the project tree in ControlWave Designer, and choose Insert  Data Types from the pop-up menu.
136

Expanded BSAP (EBSAP) Communications

ControlWave Designer Programmer's Handbook D301426X012 August 2020

2. Enter a name for your Data Types worksheet, and click on [OK].

Enter a name for the worksheet, then click "OK".

3. Now we need to define the data types used for the arrays. The array size is determined based on the maximum number of EBSAP slave nodes under a given virtual node on a port, and the number of virtual nodes on the port. Since, in this example, the largest number of EBSAP slave nodes is 90 we want to create an array type called `MaxSlaves' that consists of 90 BOOL values. Since we happen to have up to two virtual nodes on a port, we want to make another array type called `NumVirtNodes' that consists of a column of size `MaxSlaves' for each virtual node under the port.

Here we define the data types used for the arrays.
Note: Although we made NumVirtNodes dimensions to be [1..2], we could have it [3..4] based on the local address, since it just needed a dimension of 2.

Expanded BSAP (EBSAP) Communications

137

ControlWave Designer Programmer's Handbook D301426X012 August 2020
4. Now that the array data types have been defined, we can define the actual array variables that will be used to report on polling success or turn ON/OFF polling for EBSAP slaves on this port. We will call them PORT2_ESLAVE_DEAD, and PORT2_ESLAVE_DISABLE. They must be defined in the Global Variables worksheet (so they are accessible throughout the project) and they will both be of the array type `NumVirtNodes'.
Insert new variables in the Global Variables worksheet. You must specify them to be of the array data type you defined previously.
5. Configure two REG_ARRAY function blocks, one for each of these arrays:  The arrayDescriptor parameter should be set to the name of the array (either PORT2_ESLAVE_DISABLE or PORT2_ESLAVE_DEAD in this case.)  The iiArrayNumber parameter assigns an array number to the array, so it may be requested by external programs such as OpenBSI's DataView or Harvester.  The remaining parameters, odiStatus, ouiNumRows, ouiNumColumns need only be assigned variable names; since they are output parameters.

138

Expanded BSAP (EBSAP) Communications

ControlWave Designer Programmer's Handbook D301426X012 August 2020
6. On the `Port Detail' page of the System Variable Wizard for Port 2, you must identify the array number for each of these arrays, so that they can be properly associated with the port. You must check the box next to _Px_DEAD_ARRAY and _Px_DISABLE_ARRAY; this will create system variables called _P2_DEAD_ARRAY and _P2_DISABLE_ARRAY (since this is for port 2). The values of these system variables are then set to the same number you assigned to the iiArrayNumber parameter in the REG_ARRAY function block. In this case, we have specified array numbers 10 and 11.

Check these boxes to create the EBSAP system variables for this

These numbers identify the registered array numbers (done through REG_ARRAY).

7. Once your project has been compiled and downloaded, these arrays can be used to enable/disable polling for EBSAP slave nodes on Port 2, and to report whether responses are being received from EBSAP slave nodes on that port.
8. Now, let's consider how to use these arrays that we've created. It may help your understanding if you refer to the figure on page 136 of this section that shows the network.

Expanded BSAP (EBSAP) Communications

139

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Individual array elements of a single-dimension array (_SLAVE_DEAD or _SLAVE_POLL_DIS) are referenced by their row number, for example _SLAVE_DEAD[row_number]. So if you reference _SLAVE_DEAD[5] you are referencing the BOOL value in row 5 of array _SLAVE_DEAD.
Individual array elements from a two-dimensional array (such as P2_ESLAVE_DISABLE) are referenced by row and column number, for example P2_ESLAVE_DISABLE[row][column]. So if you reference P2_ESLAVE_DISABLE[3][17] references the BOOL value in the row 3 (a virtual node) and column 17 (the 17th EBSAP slave node under that virtual node.)
_SLAVE_DEAD
To see whether responses are being received for poll messages from any EBSAP slave nodes under the first virtual node on Port 2 (which has a local address of 3), we would look at the BOOL value of _SLAVE_DEAD[3], where 3 is the row number of the array.
To see whether responses are being received for poll messages from any EBSAP slave nodes under the second virtual node on Port 2 (which has a local address of 4), we would look at the BOOL value of _SLAVE_DEAD[4].
Note: By default, A TRUE BOOL value indicates the virtual node is DEAD, i.e. there are no `live' EBSAP slaves for this virtual node.
_SLAVE_POLL_DIS
This is very similar to the _SLAVE_DEAD array, except it actually turns polling ON or OFF.
To turn ON/OFF polling for any EBSAP slave nodes under the first virtual node on Port 2 (which has a local address of 3), we would manipulate the BOOL value of _SLAVE_POLL_DIS[3].
Note: Interpretation of the meaning of the BOOL value is determined by the system variable _BSAP_FLAG_SENSE.
PORT2_ESLAVE_DEAD
We had said, as part of this example, that PORT2, an EBSAP Master Port, had two virtual nodes underneath it. The first virtual node on PORT2 has 90 EBSAP slave nodes; the second virtual node on PORT2 has 72 EBSAP slave nodes.
To find out whether responses have been received from any particular node from among the 90 EBSAP slaves underneath the first virtual node, we would examine the BOOL values of PORT2_ESLAVE_DEAD[1][1] to PORT2_ESLAVE_DEAD[1][90].
To find out whether responses have been received from any particular node from among

140

Expanded BSAP (EBSAP) Communications

ControlWave Designer Programmer's Handbook D301426X012 August 2020
the 72 EBSAP slaves underneath the second virtual node, we would examine the BOOL values of PORT2_ESLAVE_DEAD[2][1] to PORT2_ESLAVE_DEAD[2][72].
Note: By default, a TRUE BOOL value in this array indicates that the associated EBSAP slave node is dead. This interpretation can be reversed by _BSAP_FLAG_SENSE.
PORT2_ESLAVE_DISABLE Again, PORT2 is an EBSAP Master Port that has two virtual nodes underneath it. The first virtual node on PORT2 has 90 EBSAP slave nodes; the second virtual node on PORT2 has 72 EBSAP slave nodes. To enable/disable polling for any particular node from among the 90 EBSAP slaves underneath the first virtual node, we would manipulate the BOOL values of PORT2_ESLAVE_DISABLE[1][1] to PORT2_ESLAVE_DISABLE[1][90]. To enable/disable polling for any particular node from among the 72 EBSAP slaves underneath the second virtual node, we would examine the BOOL values of PORT2_ESLAVE_DISABLE[2][1] to PORT2_ESLAVE_DISABLE[2][72].
Note: Interpretation of the meaning of the BOOL value is determined by the system variable _BSAP_FLAG_SENSE.

Defining the Virtual Nodes
On the network level immediately below the EBSAP Master are one or more virtual nodes. Although, virtual nodes are really just software structures residing in the EBSAP Master, virtual nodes are created in NetView's RTU Wizard, just like any other RTU in your network. The only difference is that you have to specify that it is a virtual node, instead of a real piece of RTU hardware.
There are two ways to define a virtual node:
Method 1:
In NetView, drag a Virtual node icon from the Toolbox into your network hierarchy. This will activate the RTU Wizard, from which you can proceed to define the node as you would any other RTU.

Expanded BSAP (EBSAP) Communications

141

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Method 2:
If you're already in the RTU Wizard, choose `VIRTUAL' as the node type and then continue to define it as you would any other RTU.

Choose "VIRTUAL"

Defining the EBSAP Slave Nodes
An EBSAP Slave node can either be a ControlWave-series controller or a Network 3000series controller. This section will only discuss configuring ControlWave-series controllers as EBSAP slave nodes; for information on using Network 3000-series controllers as EBSAP slave nodes, please consult the Expanded Node Addressing section of the ACCOL II Reference Manual (document# D4044).
Defining the EBSAP Slave Port
Each EBSAP slave node must have an EBSAP Slave Port configured via the Flash Configuration Utility. (NOTE: A Slave Port could be used, instead, however, we recommend EBSAP Slave Ports to ensure proper communication statistics are collected.)
Specifying the EBSAP Group Number for a Slave Node
All RTU's immediately below the first virtual node on a given EBSAP communication line belong to group 0; all RTU's immediately below the second virtual node on a given EBSAP communication line belong to group 1, and so on.
Because of this, if you have multiple EBSAP communication lines from a particular EBSAP Master node, each EBSAP line will have a group 0 for its first virtual node, a group 1 for its second virtual node, etc., depending upon how many virtual nodes are on that line.
For the current generation of ControlWave RTU's, the group number of a particular RTU is assigned in the "EBSAP Group" field of the `Soft Switches' page of the Flash Configuration Utility.

142

Expanded BSAP (EBSAP) Communications

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Note: See Expanded Node Addressing in the ACCOL II Reference Manual (document# D4044) if you have an older Network 3000 RTU which cannot store a group number in FLASH memory.
If you are NOT using EBSAP in your network, this must be left at the default of `0'. Use the [Save to Rtu] button to save the entries to the controller.
Note: Changes to soft switches do not take effect until the RTU has been reset.

Example 1 -- OpenBSI Workstation is EBSAP Master to 1000 ControlWave controllers
Suppose there is an OpenBSI Workstation, and 3 ports which will be defined as EBSAP Master lines. Two of the EBSAP lines need to communicate with 400 ControlWave controllers, and a third EBSAP line needs to communicate with 200 ControlWave controllers, for a total of 1000 ControlWave controllers in the network. Here's how to approach this.
1. In NetView, define 3 separate EBSAP lines (COM1, COM2, COM3). COM1 and COM2 will each communicate with 400 RTUs, and COM3 will communicate with 200 RTUs.
2. On level 1 of the network, define virtual nodes and on level 2 of the network define the real 1000 RTUs.
For COM1, 4 virtual nodes must be defined in order to address 400 real RTUs.
VN1, VN2, VN3, and VN4 are added in NetView on Level 1, by selecting 'VIRTUAL' as the node type. (By the way you don't have to name the virtual node `VN', we're just doing that for ease of explanation.)
 VN1 will have a local address of 1, and it is responsible for RTU1 to RTU127. RTU1 to RTU127 are in Group 0 because VN1 is the first virtual node on COM1. The local addresses for these RTUs will be 1 to 127. NOTE: In this example we are assigning real nodes to local address 127, however, certain older RTU types reserve address 127 for special purposes (e.g. redundant DPC 3330s with RASCL) and don't assign an RTU to it. Keep this in mind if you are working with older RTUs.
 VN2 will have a local address of 2, and it is responsible for RTU128 to RTU254. RTU128 to RTU254 are in Group 1 because VN2 is the second virtual node on COM1. The local addresses for these RTUs will be 1 to 127.
 VN3 will have a local address of 3, and it is responsible for RTU255 to RTU381. RTU255 to RTU381 are in Group 2 because VN3 is the third virtual node on COM1. The local addresses for these RTUs will be 1 to 127.

Expanded BSAP (EBSAP) Communications

143

ControlWave Designer Programmer's Handbook D301426X012 August 2020
 VN4 will have a local address of 4, and it is responsible for RTU382 to RTU400. RTU382 to RTU400 are in GROUP 3 because VN4 is the fourth virtual node on COM1. The local addresses for these RTUs will be 1 to 19.
 RTUs 1 to 400 must all be on Level 2 of the Network.
For COM2 we again need to define at least 4 virtual nodes (VN) in order to address another 400 real RTUs. VN5, VN6, VN7, and VN8 are added in NetView, again, by selecting 'VIRTUAL' as the node type.
 VN5 will have a local address of 5, and it is responsible for RTU401 to RTU527. RTU401 to RTU527 are in Group 0 because VN5 isthe first virtual node on COM2. The local addresses for these RTUs will be 1 to 127.
 VN6 will have a local address of 6, and it is responsible for RTU528 to RTU654. RTU528 to RTU654 are in Group 1 because VN6 is the second virtual node on COM2. The local addresses for these RTUs will be 1 to 127.
 VN7 will have a local address of 7, and it is responsible for RTU655 to RTU781. RTU655 to RTU781 are in Group 2 because VN7 is the third virtual node on COM2. The local addresses for these RTUs will be 1 to 127.
 VN8 will have a local address of 8, and it is responsible for RTU782 to RTU800. RTU782 to RTU800 are in Group 3 because VN8 is the fourth virtual node on COM2. The local addresses for these RTUs will be 1 to 19.
 RTUs 401 to 800 must all be on Level 2 of the Network.
For COM3 I again need to define at least 2 virtual nodes (VN) in order to address the remaining 200 real RTUs. VN9 and VN10 are added in NetView, on Level 1 again, by selecting 'VIRTUAL' as the node type.
 VN9 will have a local address of 9, and it is responsible for RTU801 to RTU927. RTU801 to RTU927 are in Group 0 because VN9 is the first virtual node on COM3. The local addresses for these RTUs will be 1 to 127.
 VN10 will have a local address of 10, and it is responsible for RTU928 to RTU1000. RTU928 to RTU1000 are in Group 1 because VN10 is the second virtual node on COM3. The local addresses for these RTUs will be 1 to 73.
 RTUs 801 to 1000 must all be on Level 2 of the Network.
The figure on the next page shows the completed network, though there is only space to show the first and last RTU of each group.

144

Expanded BSAP (EBSAP) Communications

ControlWave Designer Programmer's Handbook D301426X012 August 2020
OPEN BSI WORKSTATION
COM3:

COM1:

COM2:

LEVEL1 Local Addr: 1 VN1 Local Addr: 2 VN2 Local Addr: 3 VN3 Local Addr: 4 VN4

LEVEL2

RTU1 RTU127 Local Addr 1-127 Group Num: 0

RTU128 RTU254 Local Addr 1-127 Group Num: 1

RTU255 RTU381 Local Addr 1-127 Group Num: 2

RTU382 RTU400 Local Addr 1-19 Group Num: 3

Local Addr: 5

Local Addr: 6

LEVEL1

VN5

VN6

Local Addr: 7

Local Addr: 8

VN7

VN8

LEVEL2

RTU401 RTU527 Local Addr 1-127 Group Num: 0

RTU528 RTU654 Local Addr 1-127 Group Num: 1

RTU655 RTU781 Local Addr 1-127 Group Num: 2

RTU782 RTU800 Local Addr 1-19 Group Num: 3

Local Addr: 9

Local Addr: 10

LEVEL1

VN9

VN10

LEVEL2

RTU801 RTU927 Local Addr 1-127 Group Num: 0

RTU928 RTU1000 Local Addr 1-73 Group Num: 1

Expanded BSAP (EBSAP) Communications

145

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Example 2 -- ControlWave Controller is EBSAP Master to 300 ControlWave EBSAP Slaves
There are many possible ways to do this with regard to number of ports and virtual nodes. At least three virtual nodes would be required beneath the EBSAP Master controller, since no one node can support more than 127 nodes. That could mean, for example, 127 nodes underneath the first virtual node, 127 nodes underneath the second virtual node, and 46 nodes underneath the third virtual node, for a total of 300 EBSAP slaves. Or, we could have 100 nodes underneath each of the three virtual nodes. We could have all three virtual nodes on a single EBSAP Master port, or use more than one EBSAP Master Port. We could even have more than 3 virtual nodes to have a smaller number of EBSAP slaves through each virtual node, but provide more room for expansion. It's up to you how you want to do it.
For this example let's have 3 virtual nodes, each with 100 EBSAP Slave nodes, and we'll put them all on the same port (Port 2). The virtual nodes use local addresses 3 for and 5.
Here's how we configure this.
1. Using the OpenBSI Flash Configuration Utility, configure an EBSAP Master Port for the ControlWave controller which will serve as the EBSAP Master. The "Low Virtual Slave" must be set to 3 and the "High Virtual Slave" must be set to 5. Since we will have no more than 100 EBSAP slaves under each one, make the "Max Slaves" 100.
2. Configure the Control and Status Arrays.
 Because they are present in all projects by default, you can configure the _SLAVE_DEAD and _SLAVE_POLL_DIS arrays by just checking the "Master -- Dead_Slaves" and "Don't Poll Array" boxes on the `Port Globals' page of the System Variable Wizard. Then use two REG_ARRAY function blocks (one for each array) to register the arrays.

Note: The next arrays are optional, but we strongly recommend you create them:

 Under the `Data Types' item in the ControlWave Designer project tree, add a worksheet to define new data types. You will need to create something like this:
TYPE

MaxSlaves:

ARRAY [1..100] OF BOOL;

NumVirtNodes: ARRAY [3..5] OF MaxSlaves;

END_TYPE

Note: The numbers used to dimension the NumVirtNodes data type can be different, so long as the size is correct. For example, [1..3] could be used since there are three virtual

146

Expanded BSAP (EBSAP) Communications

ControlWave Designer Programmer's Handbook D301426X012 August 2020
nodes; [3..5] could be used since their local addresses are 3,4 and 5, or you could use [0..2] since that would represent the EBSAP group numbers (0, 1, and 2) of their respective EBSAP Slaves. It doesn't matter so long as the size of 3 is correct. Note also that the names `MaxSlaves' and `NumVirtNodes' can be changed; those are just the names we chose.
 In the Global Variables worksheet, define two arrays of type `NumVirtNodes' (or whatever you called that type). One should be used for handling reporting of polling success for Port 2 EBSAP slaves; the other should be used for enabling/disabling polling of individual EBSAP slaves on Port 2. Assign numbers to these arrays using REG_ARRAY function blocks.
 In the System Variable Wizard, go to the `Port Detail' page for Port 2. You must check the box next to _Px_DEAD_ARRAY and _Px_DISABLE_ARRAY; this will create system variables called _P2_DEAD_ARRAY and _P2_DISABLE_ARRAY (since this is for port 2). The values of these system variables are then set to the same numbers you assigned to the iiArrayNumber parameters in the REG_ARRAY function blocks.
3. Define three virtual nodes in NetView's RTU Wizard. They would have local addresses 3, 4, and 5, and would be defined like any other node, except the type is `VIRTUAL'.
4. Configure the EBSAP Slave nodes in NetView As we've said, there are to be 300 of them; 100 under each virtual node. In the OpenBSI Flash Configuration Utility, assign the proper group number for each EBSAP Slave. The nodes underneath the first virtual node must be assigned to Group 0; the nodes underneath the second virtual node must be assigned to Group 1, and the nodes underneath the third virtual node must be assigned to Group 2. Each EBSAP Slave node must also be configured with an EBSAP Slave Port.

Master Port

EBSAP Master Port

Slave Port

Slave Port

Local Address: 1 Local Address: 2

VIRTUAL NODE

VIRTUAL NODE

VIRTUAL NODE

Local Address: 3

Local

Local

Address: 4 Address: 5

Local Address: 1 Local Address: 2

Local Address: 100 Local Address: 1 Local Address: 2

(Local addresses 3

(Local addresses 3

to 99 not shown)

to 99 not shown)

Local Address: 100

Local Address: 1 Local Address: 2

Local Address: 100

(Local addresses 3

to 99 not shown)

GROUP 0 EBSAP SLAVES

GROUP 1 EBSAP SLAVES

GROUP 2 EBSAP SLAVES

Expanded BSAP (EBSAP) Communications

147

ControlWave Designer Programmer's Handbook D301426X012 August 2020

148

Expanded BSAP (EBSAP) Communications

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Flash Configuration Utility ­ An Overview
Use the Flash Configuration Utility to set various configuration parameters in the ControlWave-series controller. Some changes to flash parameters only take effect after the unit has been powered down and then back on. In addition, changes you make to some flash parameters are not activated unless the controller's default switch is in the ON position. For a ControlWave, the default switch is SW1-3; for ControlWave LP, the default switch is SW4-3; and for the ControlWave MICRO, the default switch is SW2-3.
Starting the Flash Configuration Utility
The Flash Configuration Utility is initially activated via 'Configure' mode in LocalView. Once LocalView has been used to set these parameters, and other system configuration has been completed, the parameters may be subsequently modified by calling up the same utility from within NetView (or LocalView) by clicking on the icon for the RTU, and then pressing the right mouse button and choosing RTU  RTU Configuration Parameters.

Flash Configuration Utility ­ An Overview

149

ControlWave Designer Programmer's Handbook D301426X012 August 2020
The various configuration settings are separated into different pages of the utility. You can access them by clicking on the tab for a particular page.

Click on any of these tabs to bring up other pages of the Flash Configuration utility.

This is only useful when using NetView. It allows you to close the session with the current controller, while still leaving the current values on the various pages of the utility. This allows you to configure a different controller, without having to re-enter values in all the fields.

You must click here to sign-on with a username and password in order to access any flash parameters.
This button reads the current configuration from the controller into the utility.
This button saves ALL changes to the controller.
This button reads the current configuration from the Flash Configuration (FCP) file.

This button saves ALL changes to the FCP file.

This button reads the current configuration from the NETDEF files into the utility.

This button shuts down the Flash Configuration utility.

This button saves ALL changes to the NETDEF files.

The various pages of the utility are discussed, briefly, below:
Soft Switches This page allows you to set the BSAP local address of the controller, and, if using expanded node addressing, the EBSAP group number.
Ports This page allows configuration of all communication ports on the controller: serial BSAP ports, serial IP ports (PPP), and Ethernet IP ports.
IP Parameters This page allows you to set certain parameters for IP communications such as the IP address of the Network Host PC (NHP), UDP socket numbers, and the address of the default gateway.

150

Flash Configuration Utility ­ An Overview

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Application Parameters This page allows you to set 'tuning' parameters which govern how the ControlWave executes its application (project).
Archive Archive data is one portion of the historical capabilities of the ControlWave-series controller. It allows 'snapshots' of many variables to be saved at the same instant, to provide a detailed historical record of process variables at a particular moment in time. The archive data is saved at the controller, in structures called archive files and is configured, in part, using the ARCHIVE function block in your ControlWave project. Archive files may be collected by OpenBSI Utilities such as DataView, or the Harvester.
Audit Audit Trail is one portion of the historical capabilities of the ControlWave controller. It allows records to be kept of when certain variables change value, as well as recording all alarms in the system. The Audit page specifies various parameters used to set up the Audit Trail system. Configuration is also performed, in part, using the AUDIT function block in your ControlWave project.
IP Routes Dynamic IP routes allow messages which cannot successfully reach a particular destination address, to be re-routed through a different path in the IP network.
Security This page allows configuration of user accounts and privileges.
Push Buttons:
[Apply New Node] This button is only useful when the Flash Configuration utility is started from within NetView (since no other nodes are accessible in the Select New Node dialog box within LocalView).
It allows the session with the current controller to be closed, and then allows the user to select a different controller for configuration, without reinitializing the values in the pages of the utility.
The new controller must have been defined within the NETDEF files.
One application of this is to open a session with a new node, and then load configuration information from the NETDEF file(s) that was for a different node (via [Read From NDF]). This can be useful if multiple nodes have similar configurations; the common configuration can be brought into the utility, and then the unique portions only need to be modified for each individual controller.

Flash Configuration Utility ­ An Overview

151

ControlWave Designer Programmer's Handbook D301426X012 August 2020
[Sign On] - This button must be used to sign-on to the controller with a username and password prior to reading or writing Flash parameters.

Note: If you do NOT sign on, the first time you attempt a read/write operation with the controller, you will be prevented from doing so, and will be prompted to sign on then.
[Read From NDF] - This button reads the current configuration of this controller as specified in NetView's NETDEF files, and copies it into the pages of the Flash Configuration Utility. This can be particularly useful in a situation where the CPU board of a controller has failed, and the replacement board must be configured; this allows the configuration to be called up from the NETDEF, and subsequently copied into the controller using the [Write To RTU] button. NOTE: This operation can only be performed from within NetView, or when you start LocalView in Configure Mode.
Note The reason other LocalView modes (such as Local or Flash) cannot perform these operations is that only the Configure mode allows you to specify a particular NETDEF file for modification (by checking the "Use an Existing Configuration (.ndf) File" and then by identifying the path and name of the NETDEF). The other modes use a temporary NETDEF which disappears on program exit.
Write To NDF] This button causes all entries made in the Flash Configuration Utility for the current controller to be copied into the current NETDEF file. This avoids the need to reenter the same configuration information in NetView. This operation will only work when the Flash Configuration Utility is invoked from within NetView or when LocalView is in Configure Mode; otherwise a permanent NETDEF file is not available to write to (see note above).

152

Flash Configuration Utility ­ An Overview

ControlWave Designer Programmer's Handbook D301426X012 August 2020
[Read From RTU] - This button reads the current configuration characteristics directly from the controller, and copies them into the pages of the Flash Configuration Utility. These can subsequently be stored in the NETDEF using the [Write To NDF] button (see above), to avoid the need to re-enter the same configuration details inside the NetView program. Note: If you haven't signed on prior to clicking on this button, you will be prompted to do so.
[Write To RTU] - This button saves ALL entries in the pages of the Flash Configuration Utility to the ControlWaveseries controller. NOTE: If you haven't signed on prior to clicking on this button, you will be prompted to do so.
After the write operation completes, the Flash Configuration Utility prompts you to reset the RTU, if a reset is needed.
[Read FCP] - This button reads the current configuration of this controller, as specified in a Flash Configuration Profile file (*.FCP), and copies it into the pages of the Flash Configuration Utility. The flash configuration can subsequently be copied into the controller using the [Write To RTU] button.
Note: We recommend that you never edit the file FCP manually because no validation is performed on the file when the utility opens it. Improper edits could corrupt the file.
[Write FCP] - This button causes all entries made in the Flash Configuration Utility for the current controller to be copied into the Flash Configuration Profile file (*.FCP).
[Close] This button shuts down the Flash Configuration Utility.
For details on the individual pages of the Flash Configuration Utility, see Chapter 5 of the OpenBSI Utilities Manual (part number D301414X012).

Flash Configuration Utility ­ An Overview

153

ControlWave Designer Programmer's Handbook D301426X012 August 2020

154

Flash Configuration Utility ­ An Overview

Flash File Access

ControlWave Designer Programmer's Handbook D301426X012 August 2020

The Flash File Access utility lets you view a list of user files residing in the ControlWave's flash area. You can optionally delete files from the flash area, upload files from the ControlWave flash to the OpenBSI workstation, or send files from the OpenBSI workstation to the flash area.

Important This utility reads/writes files to and from the ControlWave's flash file memory area, but it cannot be used to download ControlWave system firmware or to send/retrieve historical files (audit/archive). Although those items may reside in flash, the Flash File Access utility does not access those portions of flash. Flash file access is only appropriate for downloading, uploading, or deleting user files such as ControlWave zipped source files (*.zwt), web pages, etc. For example, a typical usage would be to delete excess files to free up flash space.
With communications active in LocalView or NetView, click StartProgramsOpenBSI ToolsDebugging Tools Flash File Access (FileDirect)

Flash File Access

155

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Viewing a List of Files in the Flash File Area:
1. Either click File  New RTU or click the New RTU icon .
2. In the Select New Node dialog box, select the RTU with which you want to communicate and click OK.

3. The utility generates a list of files in the user flash file area. It may take some time for it to collect all the file details.

Uploading a File from the ControlWave to Your OpenBSI Workstation:

With the list of files in the user flash files area visible, do the following: 1. Click on the file you want to upload to the PC, so it is highlighted. 2. Either click Operations  Upload File or click the Upload File icon
dialog box opens.

. The Choose File

3. In the PC File field of the Choose File dialog box, you can optionally specify a new name for the file on the PC, and select a destination folder on the PC for the file, using the Browse button.
4. If you want the utility to compress the file during transfer, select Use Compression. (Note: Do not use compression for JPG or ZWT files which are already compressed.)

156

Flash File Access

ControlWave Designer Programmer's Handbook D301426X012 August 2020
5. If your communication with the ControlWave is via IP, select IP Based Link. This allows for faster file transfers on IP links.
6. Click OK to initiate the upload, and the utility uploads the file to the specified folder on your PC.

Copying a File from the OpenBSI Workstation to Your ControlWave:

1. Either click Operations  Copy to RTU.. or click the Copy File icon File dialog box opens.

. The Choose

2. Use the Browse button to specify the path and filename of the PC you want to copy to the ControlWave user flash files area.

3. In the RTU File field, you can optionally specify a new name for the file at the ControlWave.
4. If you want the utility to compress the file during transfer, select Use Compression. (Note: Do not use compression for JPG or ZWT files which are already compressed.)
5. If your communication with the ControlWave is via IP, select IP Based Link. This allows for faster file transfers on IP links.
6. Click OK to initiate the copy, and the utility copies the file from the OpenBSI workstation to the ControlWave.
Deleting a File from the ControlWave User Flash Files Area:
With the list of files in the user flash files area visible, do the following: 1. Click on the file you want to delete, so it is highlighted. 2. Be certain this is the file you want to delete, because there is no undo-delete or prompting
to confirm the deletion. 3. Click Operations  Delete or click on the Delete icon.

Flash File Access

157

ControlWave Designer Programmer's Handbook D301426X012 August 2020
4. The utility erases the specified file.
Refreshing the List of Files:
Either click Operations  Refresh or click on the Refresh icon.

158

Flash File Access

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Function Blocks ­ Creating
Suppose we have created a program in ControlWave Designer that we want to re-use. For example, let's say we created a program that controls the flow of liquid in a pipeline. (To see a simple example of such a program, refer to the Getting Started with ControlWave Designer Manual, part number D301416X012.)
Now, however, we need to perform the same exact flow control operation on eight different pipelines using a single ControlWave controller. Let's also assume that the initial values for all of the different parameters for the re-used program (with the exceptions of the input, output, and setpoint) will be the same for each of the eight pipelines. There are several different ways we could do that. We could create seven additional program POUs for the project, and repeat the exact same steps we did to create the first program, except we would create multiple program instances of that same program. That would be somewhat tedious.
Another approach would be to go back to our original flow control program, and use the EditCopy and EditPaste commands to copy multiple sets of the function blocks around in the same worksheet, and then change the variables for each one. That would be a little quicker, but still tedious.
A third solution, which we will discuss here, is to create a user defined function block from our original program. You probably noticed when creating your first program in ControlWave Designer that you had the option of defining a variable as either local or global. Local variables are only accessible within the current POU (that is, a function, function block, or program). If you define a variable as a local variable, and you create another POU, the local variables in the first POU are completely unknown to the second POU.
This can be an advantage because the first POU can then be treated as a re-usable little sub-routine which performs some sort of calculation or function. The values of variables are passed into the sub-routine as parameters. The sub-routine uses the values, and performs its calculations locally, inside the sub-routine, and then it passes out an answer.
A user defined function block is such a sub-routine. It is made up of other functions and function blocks. To the user, the whole user-defined function block is like a black box. You send inputs into it, any local calculations are performed inside, out of view, and you get outputs from it.
Let's look at the case of the flow control program we discussed previously. Typically, once such a program has been tested, and proper initial values defined, many of the parameters probably won't be changed. The input and output process variables, though, will have to be replaced with other inputs and outputs, based on whichever pipeline you are controlling, and the setup parameter would change, because the setpoint is determined outside of the program, perhaps by an operator. Once you get the other parameters configured the way you want them, though, you might not ever want to change them again. If that is the case, we can create a user-defined function block which can be re-used as many times as you want, and all you need to do is specify the parameters which will

Creating Function Blocks

159

ControlWave Designer Programmer's Handbook D301426X012 August 2020
change (for example, an input, an output, and a setpoint for each instance of the user defined function block).
To illustrate this technique, open the project containing the program we want to re-use.
Drag a box around the items in the worksheet that you want to re-use, and when you release the mouse, they will be selected. Click on the `Copy' icon, or choose EditCopy from the menu bar.
First, drag a box around the program you want to re-use, then release the mouse to select the items.

Next, click the "Copy" icon, or click Edit  Copy from the menu bar.
Now, we need to create an empty function block to paste our program into, thereby creating a new user-defined function block. To do this, right-click on the Logical POUs section of the project tree and choose "InsertFunction Block" from the pop-up menu.

160

Creating Function Blocks

Choose "Function Block"

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Enter a name for the function block here

Choose "<independent>"

Choose "<independent>"

In the Insert dialog box, choose "Function Block" for the "Type" and enter a name for the user defined function block. (Here we entered `My_new_Function_Block', but you'll probably want to choose something shorter, and more descriptive.) Specify the PLC type and Processor type as shown, above, and click on [OK]. Icons for `My_new_Function_Block' will be added to a new branch in the project tree.
In the new branch of the project tree, double-click on the third icon, `My_new_Function_Block*' and an empty worksheet will appear. Click on the `Paste' icon, or click on EditPaste and an outline image of the copied program will appear; position the image where you want it in the worksheet and click; the program will be copied into the worksheet.

Creating Function Blocks

161

ControlWave Designer Programmer's Handbook D301426X012 August 2020
First, click on the "Paste" icon or click Edit  Paste.

Then position the image where you want it, and click.

Now, copy the variables from the program into your new function block and re-define the variables as necessary.

First, double-click on the variables section of the program from which you want to copy.

Second, highlight the entire contents of the variables section. (You can do this by choosing Edit  Select All, or by dragging the mouse over all of the rows

Finally, right click and choose "Copy" from the pop-up menu.
162

Creating Function Blocks

Now, double-click on the variable section of the new function block you are creating.

ControlWave Designer Programmer's Handbook D301426X012 August 2020

When the empty variable window opens, you must click on this box in the upper left part of the window (on the same line as the "Default").

Finally, you can right-click, and choose "Paste" from the pop-up menu.

Now modify the variables section of the new function block.
Any variable which you want to be changeable in the new function block should be made either a VAR_INPUT (if it is an input) or a VAR_OUTPUT (if it is an output). Click in the `Usage' column to change this.
You will also want to change the names to make them more generic: instead of F101_INPUT and F101_OUTPUT (as in the original program), name them just INPUT and OUTPUT, respectively. The variable used for the setpoint, would be named SETPOINT, with a usage type of VAR_INPUT. You can change these names by clicking in the `Name' column and typing in the changes.

Creating Function Blocks

163

ControlWave Designer Programmer's Handbook D301426X012 August 2020

To change a variable's name, click on the variable in the "Name" column and make the change.

To change a variable's usage, click in the "Usage" column for the variable, then select the new usage, e.g. VAR_INPUT.

When you have finished making these modifications, save your project, and execute a build.

Now, when you are in the Edit Wizard, if you call up a list of all functions and function blocks via the `<all Fus and FBs>' group, you will see the name of the function block you created.

In the Edit Wizard, when you review the list of all function blocks, you can see the function block you just created in the list.

If you insert the `My_new_Function_block' function block into one of the programs of your project, it will only show those variables declared as VAR_INPUT and VAR_OUTPUT; the others are hidden. You can then proceed to configure it like any other function block.
Once you have saved your project with your new user-defined function block, you can use it in other projects by importing the first project as a user library. See Libraries later in this manual.

164

Creating Function Blocks

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Function Block - Parameter Name Prefixes
Function Block Parameter Name Prefixes

The following table summarizes the meaning of the letters in the parameter name prefix of function blocks in the ACCOL3 library.

Parameter Name Prefix
ia, iany
iab iais iar iarb iaus ib idi ii ioab ioar ir is, isi is, istr iudi iui ius ob odi oi or oud oui Ous

Input or Output
INPUT
INPUT INPUT INPUT INPUT INPUT INPUT INPUT INPUT INPUT & OUTPUT INPUT & OUTPUT INPUT INPUT INPUT INPUT INPUT INPUT OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT

Valid Data Types:
REAL, SINT, INT, DINT NOTE: You CANNOT use constants on parameters with the 'ia' or 'iany' prefix; only variables may be used. BOOL variable - NO constants allowed. STRING or INT variable. No constants. REAL variable - NO constants allowed. REAL or BOOL variable. NO constants allowed. USINT variable or array of USINT. No constants. BOOL variable or constant DINT variable or constant INT variable or constant BOOL variable - NO constants allowed. REAL variable - NO constants allowed. REAL variable or constant SINT variable or constant STRING (must be surrounded by single quotes) UDINT variable or constant UINT variable or constant USINT variable or constant BOOL variable or constant DINT variable or constant INT variable or constant REAL variable or constant UDINT variable or constant UINT variable or constant USINT variable or constant

Function Block Parameter Name Prefixes

165

ControlWave Designer Programmer's Handbook D301426X012 August 2020

166

Function Block Parameter Name Prefixes

Historical Data

ControlWave Designer Programmer's Handbook D301426X012 August 2020

The data in your ControlWave controller is constantly being updated, with the latest available data values collected from field instrumentation (pressure transmitters, temperature transmitters, electrical contacts, switches, etc.) Data from a particular instant in time, however, is only maintained for a short period (usually, no longer than a few seconds, depending upon how fast data is collected in your system) because when a new value is collected, it automatically overwrites the previous value.
Although this is ideal for reporting the current state of process variables in your system, most users need to retain certain data for a longer period of time (hours, weeks, etc.). This data is referred to as historical data.
Depending upon your system requirements, historical data might be saved by whatever (graphical user interface (GUI) software is running at your central computer (such as Emerson's OpenEnterpriseTM, Iconics Genesis®, Intellution® FIX®, or Wonderware®).
Some categories of historical data can also be saved within the controller itself. That is the subject we will address in this section.

What is Historical Data Used For?
Historical data is typically used in printed reports or spreadsheets. Often, records of certain variables such as flow, temperature, etc. must be maintained for months or even years to fulfill particular plant management or regulatory requirements.
Historical data is also frequently incorporated into trending packages to allow a graphical representation of data from a given period of time.

What types of Historical Data can be saved in the
ControlWave Controller?
There are two types of historical data which can be saved within the ControlWave controller: Archives and Audit Trail Logs.
 Archives are snapshots of selected variables at a given moment in time. Archives are typically used for saving data which is destined for printed reports, such as flow variables, temperature variables, etc. Each archive record consists of a timestamp plus several columns of data values reflecting the state of process variables at the time of the timestamp, or in some cases, calculated values based on the state of process variables. Additonal data for proper sequencing of the archive records is also stored. Typically, archives are generated at a pre-defined interval, however, on-demand archiving can also be configured. Archives are configured using both the Archive Configuration web page and the ARCHIVE function block.

Historical Data ­ An Overview

167

ControlWave Designer Programmer's Handbook D301426X012 August 2020
 Audit Trail Logs are records of significant events occurring in the controller. There are two types of Audit Trail logs - - the alarm log and the event log. The alarm log maintains a record of any alarms generated in the ControlWave controller. The event log keeps a record of any changes to variables which have been designated for event monitoring. Other events which are logged include a System Date/Time change, recovery from a power failure, and 'note' events received from the human machine interface (HMI) software. Variables are designated for event monitoring by including them in an event list. Audit Trail logs are configured using both the Audit Configuration web page, and one or more AUDIT function block(s).
How is Audit Trail and Archive Data Retrieved from the ControlWave Controller?
OpenBSI Utilities, such as DataView, can collect Audit Trail and Archive data from the ControlWave unit and display it on the screen.
Alternatively, tools such as the OpenBSI Scheduler or OpenBSI Data Collector can retrieve the data and store it in historical data files, on a scheduled or demand basis. These files can then be automatically exported, using the OpenBSI Data File Conversion Utility, to CSV or ODBC-compatible file formats for use in OpenEnterprise, or in third-party software packages such as Microsoft® Excel® and Access® databases.

168

Historical Data ­ An Overview

I/O Configurator

ControlWave Designer Programmer's Handbook D301426X012 August 2020

In order to reference I/O points on the process I/O boards of your controller, you need to configure them within your project.
Although it is possible to manually edit the "IO_Configuration" section of the project tree, we strongly recommend you use the I/O Configuration Wizard, as it will perform syntax checking, and is easier for most users.
The I/O Configuration Wizard is accessible from within ControlWave Designer by clicking: ViewIO Configurator
When started, any existing I/O configuration data will be read and displayed in the I/O Configuration Wizard. The Configuration Wizard is a multi-page tool; [>>Next>>] and [<<Back<<] buttons are provided to allow you to move between the pages. A [Settings] push button allows the user to rename default variable names, if necessary. (See Changing Default Variable Names, later in this section.) NOTE: Page 1 allows the user to define multiple resources. Typically, only a single resource is used, so by default, page 2 will appear first since most users do not need to use Page 1.

Important The IO Configuration Wizard will add a variable group to the Global_Variables worksheet called IO_GLOBAL_VARIABLES. Both the IO_GLOBAL_VARIABLES group in the Global_Variables worksheet and the IO_Configuration worksheet should never be manually edited by the user; these should only be modified through the IO Configuration Wizard.
CAUTION
If you intend to run multiple copies of ControlWave Designer simultaneously, do not attempt to run multiple copies of the I/O Configurator. If you do, you risk corrupting your I/O definitions.

Number of I/O Boards That May be Defined
Prior to OpenBSI 5.5 Service Pack 2, the number of I/O boards that could be defined within the I/O Configurator was 51. In OpenBSI 5.5 Service Pack 2 and newer, that limit has been increased to whatever number of boards can be defined in the 64K I/O memory space. In either case this limit includes both boards defined as local I/O as well as boards defined in a ControlWave I/O Expansion Rack or ControlWave Ethernet I/O unit.
The larger of the input or output I/O map size of the board defines the overall board size. See the I/O Mapping section for details.

I/O Configurator

169

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Effect of Number of Boards on the I/O Simulator
The I/O Simulator has a limit on the number of boards that may be accessible within a given simulation. This limit is dictated by an internal limit of 500 characters for the list used to describe the boards available during a given session within the I/O Simulator.
A default set of boards are normally included in the list available for simulation. If, after you've added boards in the I/O Configurator, you receive a warning message (see figure below) indicating that one or more of the boards you have selected is not supported within the I/O Simulator, you must de-select one or more of the default groups of boards that you are not using, to make additional room in the simulation list. Then select the group of boards that you want to use in the simulator. If groups for all the boards you need have now been selected, and you have de-selected enough of the unused board groups so that the total number of characters has fallen below 500, click [Ok] and you can proceed.

By default, these boards are included in the list of boards for the simulation.

The maximum number of characters currently used. If this exceeds 500, you must un-check some boards to make room in the I/O Simulator list.
Note: If you're not planning on using the I/O Simulator, you can click on [Ignore Simulation Warnings] and the I/O Configurator will allow you to proceed through this session, without checking for unsupported boards. If later, you decide you do want to use the I/O Simulator, and some boards do not appear, you must re-run the I/O Configurator, and de-select a sufficient number of board groups, and select the board groups you need, as described above.

170

I/O Configurator

ControlWave Designer Programmer's Handbook D301426X012 August 2020
I/O Configuration Wizard (Step 1 of 3): (Most users can skip to Step 2)

The first page of the I/O Configuration Wizard allows the user to select from the available I/O configurations and I/O resources. NOTE: Because most projects use a single configuration and resource, this page is skipped when first starting the I/O Configuration Wizard. It is accessible, however, by clicking the [<<Back<<] button from the second page of the Wizard.

Available Configurations

This lists all configurations in the current project. Select the I/O Configuration Section for which you are defining the I/O. NOTE: Typically, projects use a single I/O configuration section.

Available Resources

This lists all resources for the selected I/O configuration. Choose the resource for which I/O is to be defined. Note: Typically, projects use a single resource.

Click [Next>] to proceed to the next step.

I/O Configurator

171

ControlWave Designer Programmer's Handbook D301426X012 August 2020
I/O Configuration Wizard (Step 2 of 3):
The second page of the I/O Configuration Wizard allows the user to identify which process I/O boards are actually installed in the ControlWave-series controller, as well as boards which are installed in separate devices such as I/O Expansion Racks, or Remote Ethernet I/O units.

Boards should be selected from the selection boxes in the ascending order of their slot number.

First, use the "Unit Type" list box to identify which type of ControlWave controller you are configuring, then select the desired boards, and click on [ADD].

If this controller has associated I/O racks, or Remote Ethernet I/O units, choose those boards in the "Remote IO" selection box and click on [ADD].

For more information on the various fields, see below:

Unit Type

This field allows you to identify the type of ControlWave-series controller you are configuring, so that the proper board types can be

172

I/O Configurator

ControlWave Designer Programmer's Handbook D301426X012 August 2020

displayed for it. The types of controllers include:

CW_ CWM_ LP_ CXX_ ERM_ RXX_

ControlWave Process Automation Controller ControlWave MICRO Process Controller series ControlWave Low Power (LP) Process Controller ControlWave CW_30 or CW_10 Controller Expansion Rack for ControlWave MICRO CW_35 Controller or CW_31 Remote I/O Rack

Once you select the type of controller, the boards which can be installed in that unit will be displayed as possible choices.

For ease of configuration, select the boards from the list in ascending order of their slot number in the ControlWave unit. Clicking once on the board abbreviation will cause a description of the board to be displayed at the bottom of the Wizard page. Double-clicking on the board abbreviation (or clicking once on the board and then clicking [ADD]) will add the board to the "Selected Boards List". The table, on the next page, lists the various types of boards.

Remote IO

This lists boards used in ControlWave Remote Ethenet I/O units or ControlWave I/O Expansion racks.

Double-clicking on the board abbreviation (or clicking once on the board and then clicking [ADD]) will add the board to the "Selected Boards List"

Selected Boards List

This list allows the user to declare which boards reside in the ControlWave controller or its configured ControlWave Remote Ethernet I/O unit(s), or ControlWave I/O Expansion Racks. To remove a board from the "Selected Boards List" double-click on it, or click on it once, and then click [REMOVE]. To remove all boards click [REMOVE ALL].

Click on [Next] to verify configuration information, adjust slot numbering, define zeros and spans for analog inputs, etc.

I/O Configurator

173

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Tables of Board Types

ControlWave Process Automation Controller (CW)

Board Code
CW_AI16 CW_AO8 CW_DO32 CW_DI32 CW_HSC12 CW_RTD8 CW_TC12

Board Description
8 or 16 Input Pin Analog Board 4 or 8 Output Pin Analog Board 16 or 32 Output Pin Digital Board 16 or 32 Input Pin Digital Board 6 or 12 Channel High Speed Counter/Universal Disc. Input Board 8 RTD Input Board 12 Thermocouple Input Board

ControlWave MICRO Process Controller (CWM) ­ series

Board Code
CWM_AI6 CWM_AI8 CWM_AO4 CWM_BAT CWM_DI16 CWM_DO16 CWM_ECPU CWM_EIO CWM_HIB CWM_HSC4 CWM_MA CWM_MD CWM_MIX CWM_RTD4 CWM_RTU CWM_SCB CWM_TC6

Board Description
6 Input Pin Analog Board 8 Analog Input Board 4 Analog Output Board Battery (Voltage) Monitor 16 Input Pin Digital Board 16 Output Pin Digital Board System Controller Board Mixed I/O Board (various configuration options) HART Interface Board (HIB) 4 Channel High Speed Counter Mixed Analog Board (6 analog inputs, 2 analog outputs) Mixed Digital Board (12 digital inputs, 4 digital outputs) Mixed I/O Board 4 Resistance Temperature Device (RTD) Input Board Mixed I/O & System Controller Board System Controller Board 6 Thermocouple Input Board

CWM_AI6 CWM_AI8 CWM_AO4 CWM_BAT* CWM_DI16

Some ControlWave MICRO boards are used in multiple platforms. See the table, below for details:

CW

CW CW XFC CW

CW

CW CW

CW

CW CW GFC-IS

MICRO EFM

GFC GFC GFC Corrector Express EPAC

CL

Plus





















174

I/O Configurator

CW

CW CW XFC CW

CW

MICRO EFM

GFC GFC

CL

Plus

CWM_DO16 



CWM_ECPU

CWM_EIO

CWM_HIB





CWM_HSC4





CWM_MA





CWM_MD





CWM_MIX





CWM_RTD4





CWM_RTU







CWM_SCB ** 



CWM_TC6





* Does not support wet end.

** Supports wet end.

ControlWave Designer Programmer's Handbook D301426X012 August 2020

CW CW

CW

CW CW GFC-IS

GFC Corrector Express EPAC

   













ControlWave 10/30 Controllers (CW_10, CW_30)

Board Code
CXX_AI8 CXX_AO4 CXX_DI16 CXX_DO16 CXX_HSC8 CXX_LL4

Board Description
4 or 8 Analog Input Board 2 or 4 Analog Output Board 8 or 16 Digital Input Board 8 or 16 Digital Output Board 4 or 8 Channel High Speed Counter Board 4 Low Level Analog Input Board

ControlWave 35/31 Controller and I/O Rack (CW_35, CW_31)

Board Code
RXX_AI8 RXX_AO4 RXX_DI16 RXX_DO16 RXX_HSC8 RXX_LL4 RXX_STAT

Board Description
4 or 8 Analog Input Board 2 or 4 Analog Output Board 8 or 16 Digital Input Board 8 or 16 Digital Output Board 4 or 8 Channel High Speed Counter Board 4 Low Level Analog Input Board External Rack Status Board

ControlWave Low-Power Controller (LP)

Board Code
LP_AI8 LP_AO4 LP_BAT

Board Description
8 Input Pin Analog Board (Slot 0 ­ fixed) 4 Output Pin Analog Board Battery (Voltage) Monitor (Slot 0 ­ fixed)

I/O Configurator

175

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Board Code
LP_DI16 LP_DO8 LP_HSC4

Board Description
16 Input Pin Digital Board (Slot 0 ­ fixed) 8 Output Pin Digital Board (Slot 0 ­ fixed) 4 Channel High Speed Counter (Slot 0 ­ fixed)

ControlWave I/O Expansion Rack (ER)

Board Code
ER_AI16 ER_AO8 ER_DI32 ER_DO32 ER_HSC12 ER_RTD8 ER_STAT
ER_TC12

Board Description
16 Analog Input Board 8 Analog Output Board 32 Digital Input Board 32 Digital Output Board 12 Channel High Speed Counter Board 8 Resistance Temperature Device (RTD) Input Board I/O Expansion Rack Statistics Board (Virtual board) NOT A PHYSICAL HARDWARE BOARD 12 Thermocouple Input Board

Expansion Rack ControlWave MICRO

Board Code

Board Description

ERM_AI6

6 Analog Input Board

ERM_AI8

8 Analog Input Board

ERM_AO4

4 Analog Output Board

ERM_DI16

16 Digital Input Board

ERM_DO16

16 Digital Output Board

ERM_HSC4

4 High Speed Counter Board

ERM_MA

6 Analog Input and 2 Analog Output Board

ERM_MD

12 Digital Input and 4 Digital Output Board

ERM_MIX

Mixed I/O Board

ERM_RTD4

4 Resistance Temperature Device (RTD) Input Board

ERM_STAT

External Rack Status Board

ERM_TC6

6 Thermocouple Input Board

ControlWave Ethernet Remote I/O (BB)

Board Code
BB_16AI BB_8AI4AO BB_8DI8AI BB_8DI8DO BB_16DI BB_16DO BB_8INS BB_8HSC BB_4RTDI IPMB_INP IPMB_OUT

Board Description
RIO­ 16AI2 (16 Remote Analog Input) RIO­ 8AI2, 4AO2 (8 Remote Analog Input and 4 Remote Analog Output) RIO­ 8DI2 ­ 8AI2 (8 Remote Digital Input and 8 Remote Analog Input) RIO- 8DI2 ­ 8DO2 ( 8 Remote Digital Input and 8 Remote Digital Output) RIO­ 16DI2 (16 Remote Digital Input) RIO­ 16DO2 (16 Remote Digital Output) RIO­ 8INS (Instrumentation Board) RIO - 8HSC (8 channel high speed counter) RIO 4RTD - 4 Digital Input Board RIO Open Modbus Input RIO Open Modbus Output

176

I/O Configurator

ControlWave Designer Programmer's Handbook D301426X012 August 2020
I/O Configuration Wizard (Step 3 of 3):
The third page of the I/O Configuration Wizard displays configuration details for each board. To see the details, click on the board abbreviation, and the configuration details will be displayed on the right hand side of the page.

Selected Boards List

Displays all boards selected on the previous page. Click on a particular board abbreviation to display configuration details for the board.

Board Name

A name for the board can be specified here. This name will be used when configuring pins for the board.

Map Type

(Information only field) Depending upon the type of board, separate memory areas (called maps) are reserved for either inputs or outputs. Some boards have both an input map and an output map. For example, a digital output board has outputs (DOs) in its output map, but it may also have inputs which indicate board status conditions and errors.

I/O Configurator

177

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Start... End Address Slot Number
IP Address

Note: If you have an older ControlWave project in which you changed the map type from the default choice, this may cause errors to be generated when the project is rebuilt. If this occurs, you should delete the board definition and re-define the board.
For more detailed information on the input and output maps for various boards, see the `I/O Mapping' section of this manual.
Displays the range of memory addresses used by the board.
Displays either the physical I/O slot in the ControlWave controller which holds the board, or if this is a Mixed I/O Board (MIOB) it displays a board selection number. For ControlWave and ControlWave Micro, I/O slot numbers are positive integers, e.g. 1, 2, 3, etc. For the ControlWaveLP, the slot number is 0 for all boards except for the AO; for the AO the slot can be 8 to 13. NOTE: I/O Slot number is NOT the same as the chassis slot number. Chassis slots which hold the power supply and CPU boards are not considered to be I/O slots, so the first I/O slot is typically the third chassis slot.
ControlWave Remote Ethernet I/O boards are identified by their Internet Protocol (IP) address, instead of the I/O slot number. The same is true for boards residing in a ControlWave I/O Expansion Rack.

Related Task

Shows the name of the task which uses this board. In some cases, for example, when using Ethernet I/O, or analog boards in an RTU 3340, it is important to associate a board with the task which uses the board. When a board is associated with a task, that board will be read / written to, at the rate cycle associated with the task, thereby ensuring up-todate information for calculations performed in the task. When no task is associated with the board, board execution is associated with the default task, which runs at a lower priority, and therefore may not provide sufficient up-to-date I/O information when it is required by a task.

Mark Variables as PDD OPC

This determines how values of the I/O variables associated with this board will be made available to other software programs. Checking "PDD" allows the controller to reference variables by name, which is necessary if you intend to access a variable by external software which requires `read-by-name' access, such as DataView, or one of the other OpenBSI Utilities. Checking "OPC" adds this variable to a collection list used by the OPC Server or by the OpenBSI Signal Extractor. This is necessary when data is to be extracted, and sent to a database.

178

I/O Configurator

ControlWave Designer Programmer's Handbook D301426X012 August 2020
When edits have been made to this page, click on the [Show xxx Information] button. The name on this button, and the pin configuration details, vary depending on the type of board being configured. See the pages that follow for the standard board types.
Analog Boards
Analog Input Board Page (CWM_AI8 board)

(some of these fields do NOT appear for other models)
Analog Output Board Page (CW_AO8 board) (some of these fields do NOT appear for certain models)

I/O Configurator

179

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Low Level Analog Input Board

List of Available Pins

Displays a list of the individual pins (I/O points) on this process I/O board. If the pin is displayed in RED, that pin is active. If the pin is left grayed out, that pin is considered unused.

Pin Name

Defines a name identifying this pin. IMPORTANT: This name is used as a variable name to reference the I/O pin in your POU.

Value

Defines the initial value for this I/O pin, in floating point format. NOTE: This is not available for analog input pins.

Zero

Defines the lowest value of the range for this I/O pin. Used to scale the input/output value.

Span

Span is added to the ZERO value to define the highest value of the range for this I/O pin. Used to scale the input/output value.

Add Over Range Status

When selected, will cause a variable to be created to store the value of the overrange status bit. Over range conditions occur when an attempt is made to drive the variable associated with this pin outside the range defined by the zero and span. When this occurs, the over range status bit will be set to TRUE.

Range Type

Some boards allow you to specify whether the board input is in current or voltage. Choose `VOLTS' or `AMPS'. NOTE: For example, if 4 to 20 milliamps of current drive the board, you would choose `AMPS', then enter 0.004 for the "Bottom Range" value, and 0.020 for the "Top Range" value.

180

I/O Configurator

Bottom Range
Top Range
Set Actual Output Value Add Board Status Add Last Operation Status Calibration Error
Board Time Out
Mark All Pins Used Configure Hold Values
Update Default Value Hold Last Output
User Configured Output

ControlWave Designer Programmer's Handbook D301426X012 August 2020
The lowest usable value for VOLTS or AMPS for this board input. For example, if the board input can range from 1 to 5 VOLTS, the "Bottom Range" would be set to 1.0. If this board input can range from 4 to 20 milliamps, "Bottom Range" would be set to 0.004. Other ranges are possible as well.
The highest usable value for VOLTS or AMPS for this board input. For example, if the board input can range from 1 to 5 VOLTS, the "Top Range" would be set to 5.0. If this board input can range from 4 to 20 milliamps, "Top Range" would be set to 0.020. Other ranges are possible as well.
When selected, this will cause a variable to be created which displays the actual value which was written to the output pin.
When selected, will cause a variable to be created to store board status information.
When selected, will cause a variable to be created to store the status of the last conversion operation information.
This is only present for certain ControlWave MICRO boards. When checked, will cause a variable to be created to store error information. This variable will be set to TRUE whenever there is bad calibration data in the EEPROM.
This is only present for certain ControlWave MICRO boards. When checked, will cause a variable to be created to store information about board time out errors. Board time outs occur if there is a problem with conversion operations.
When checked, will activate all pins on this I/O board. They will all appear in RED.
When checked, enables other fields on the page for configuring a hold value for this pin. A hold value is the value used by the I/O card if it detects a watchdog of the ControlWave CPU. The I/O board maintains this value at the pin until the unit is restarted.
When checked, allows the "User Configured Output" hold value to be changed on-line; otherwise the hold value can only be set in the I/O Configurator.
When checked, specifies that during a watchdog failure, the hold value for this pin will be whatever value was on the pin when the failure occurred. NOTE: "Hold Last Output" and "User Configured Output" are mutually exclusive. Either one may be configured for a particular pin, but NOT both.
When checked, allows the user to enter a value for this pin which will be used as the hold value in the event there is a watchdog

I/O Configurator

181

ControlWave Designer Programmer's Handbook D301426X012 August 2020

failure of the ControlWave. NOTE: "Hold Last Output" and "User Configured Output" are mutually exclusive. Either one may be configured for a particular pin, but NOT both.

Point Type

Specifies the type of low-level analog input/thermocouple. See the table, below, for a list of supported temperature/voltage ranges for inputs to the board.

Point Type Thermocouple Type B Thermocouple Type E Thermocouple Type J Thermocouple Type K Thermocouple Type R Thermocouple Type S Thermocouple Type T Resistance Temperature Device (RTD) Voltage

Range 100o C to 1820o C -270o C to 1000o C -210o C to 1200o C -270o C to 1370o C -50o C to 1720o C -50o C to 1760o C -270o C to 400o C
-220o C to 850o C
-10 mV to 10 mV

When all pins have been configured, click on [Done]. You can then proceed to select and configure pins for another board.

182

I/O Configurator

Digital Boards

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Digital Input Board Page (Not all fields are present for all board types)

Digital Output Board Page

List of Available Pins

Displays a list of the individual pins (I/O points) on this process I/O board. If the pin is displayed in RED, that pin is active. If the pin is left grayed out, that pin is considered unused.

Pin Name Is a name identifying this pin. This name is used as a variable name to reference the I/O pin in your POU.

Set Pin Status

Sets the initial value for this digital output (DO). NOTE: This option is not available for digital inputs.

Enable Counter Processing

Turns on or off the counters associated with the digital input (DI) process I/O board. Counters are used in certain applications. For example, if a mixed I/O board is used with a ControlWaveLP, a digital input (DI) can be used as a low speed counter (30 millisecond filter). Enabling counter processing in such a case will allow interrupt processing to occur for that DI.

I/O Configurator

183

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Add Board When selected, will cause a variable to be created to store board status

Status

information.

Mark All When checked, will activate all pins on this I/O board. They will all appear in Pins Used RED.

Turn off Leds

This option is only available on certain ControlWave MICRO boards. When checked, it will create a variable which allows you to turn OFF the I/O board's diagnostic LEDs to save on power. LEDs are turned OFF when the variable is set ON. NOTE: For this to work, the LED enable jumper on the board must be in position 2-3; otherwise, the software cannot disable the LEDs, only a hardware jumper can. See manual CI-ControlWaveMICRO for details.

Reset Point Count

When set to ON, allows the number of counts to be reset. This occurs automatically whenever the board is restarted.

Set No Init When checked, counters on the board will NOT be initialized to zero on a

Counter Flag

warm start of the unit.

Add Time Stamp of Last Sample

When selected, will cause a variable to be created to store the timestamp of the last sample collected by this I/O board.

When all pins have been configured, click on [Done]. You can then proceed to select and configure pins for another board.

184

I/O Configurator

ControlWave Designer Programmer's Handbook D301426X012 August 2020
High Speed Counter (HSC) Boards

IOCONFIG-HSC4.CDR

High Speed Counter Page (Not all fields are present for all board types / platforms)

List of Available Channels

Displays a list of the individual channels (counter I/O points) on this process I/O board. If the channel is displayed in RED, that channel is active. If the channel is left grayed out, that channel is considered unused.

Channel Name

Is a name identifying this channel. This name is used as a variable name to reference the channel in your POU.

Add Input Channel State
Reset Point Count

When selected, displays the TRUE/FALSE value of the channel.
When selected allows the number of counts to be reset. Choose either ON or OFF for the initial value on startup. A reset occurs when you choose ON; software then turns this OFF. NOTE: Reset occurs automatically whenever the board is restarted.

Select Filter

Specifies how the board will operate for this channel:

'None'

Defaults to 30 millisecond filtering.

'30 ms'

Turns on 30 millisecond filter. Typically used for push-

button debouncing.

'1 ms'

Turns on 1 millisecond filter. Used for low speed counter

applications.

'HSC Channel' High Speed Counter. 10 KHz filter. (Default for CWM_RTU board). Requires 04.90 or newer firmware.

Add Board When selected, will cause a variable to be created to store board status

Status

information.

Add Time Stamp of Last

When selected, will cause a variable to be created to store the timestamp of the last sample collected by this I/O board.

I/O Configurator

185

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Sample

Mark All When checked, will activate all channels on this I/O board. They will all Pins Used appear in RED.

Set No Init When checked, counters on the board will NOT be initialized to zero on a

Counter Flag

warm start of the unit. Requires 04.41 or newer firmware.

Turn off Leds

(Not Shown) This option is only available on certain ControlWave MICRO boards. When checked, it will create a variable which allows you to turn OFF the I/O board's diagnostic LEDs to save on power. LEDs are turned OFF when the variable is set ON. NOTE: For this to work, the LED enable jumper on the board must be in position 2-3; otherwise, the software cannot disable the LEDs, only a hardware jumper can. See manual CI-ControlWaveMICRO for details.

Remote I/O Status Board
The Remote I/O Status Board is a 'virtual' board, i.e. there is no actual physical board. By including it within your ControlWave project, global variables will be created to store communication statistics information, and board ID strings for the ControlWave I/O Expansion Rack, or other remote I/O devices.
Note: The size of RIO STAT boards has increased. This can cause an overlap with the memory maps of other I/O boards. If you have an RIO STAT board in your project, please remove it, and then add it back into the project, to allow memory maps to be adjusted properly.
For more information about these RIO status variables, and the software configuration for the ControlWave I/O Expansion Rack, please see the ControlWave I/O Expansion Rack Quick Setup Guide (document# D5122).

System Controller Board
The System Controller Board is used with ControlWave MICRO units equipped with a transmitter, such as the Electonic Flow Meter (EFM) version of the ControlWave MICRO.

186

I/O Configurator

Live Data Signals
Configuration Signals

ControlWave Designer Programmer's Handbook D301426X012 August 2020
When selected, creates variables for storing live data, e.g. pressure readings, from the transmitter.
When selected, creates variables for storing configuration information.

Calibration Signals

When selected, creates variables for storing calibration information.

CWM_RTU Board

In addition to analog and digital pins, certain RTUs with the CWM_RTU board (GFC, XFC) may include a built-in internal transmitter with sensor (wet end). Some special versions of the XFC can include two wet ends.
The Transmitter Interface dialog box for the CWM_RTU allows variables to be mapped for both of the wet ends.
These choices are similar to the System Controller Board.

Notes About Ethernet I/O Boards
Unlike process I/O boards which are physically installed in the ControlWave controller, ControlWave Remote Ethernet I/O boards are in a separate location, and communicate to the ControlWave unit using TCP/IP. (The IP address for the Ethernet I/O board is configured from the third page of the I/O Configuration Wizard.)

IP Address is specified here

I/O Configurator

187

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Certain parameters must be specified for the Ethernet I/O units which hold the boards. Once this is done, however, the configuration of the individual board pins is identical to that described earlier.
Note: The dialog box shown at right includes all possible fields for the ControlWave Remote Ethernet I/O, however, not all of these fields are visible in all cases.

Unit Number

Specifies the Modbus unit address number associated with this ControlWave Remote Ethernet I/O unit.

Add Driver Status

When selected, will cause a variable to be created to store I/O driver status information.

Activate Counters

Creates / disables a variable which allows the user to control the starting / stopping of the counters in the ControlWave Remote Ethernet I/O board. These counters are used with digital inputs (DI).

Add Freshness Counter

When selected, will cause a variable to be created to store a `freshness' counter value. The freshness counter represents the number of program executions since new data has been collected through this Ethernet I/O board. A value of 0, indicates the data is as new (fresh) as possible.

Clear Counters Sets all counter values associated with this board to 0.

Convert RTD value to tenths

(For RIO 4RTD - 4 Digital Input Board ONLY) - When checked, causes values from the Resistance Temperature Device board to be divided by 10, thereby providing greater precision.

[Show Pins], [Analog Pins], [Digital Pins]

When clicked on, calls up a dialog box for configuring the individual pins for the board.

[Done]

Click here when configuration for this board is complete.

Additional Configuration For ControlWave Remote Ethernet I/O
Besides the I/O configuration within ControlWave Designer, additional configuration for Ethernet I/O hardware must be performed using the Remote I/O Toolkit software (not to be

188

I/O Configurator

ControlWave Designer Programmer's Handbook D301426X012 August 2020
confused with what used to be known as the OpenBSI Technician Toolkit). Documentation on the Remote I/O Toolkit software is provided in the form of on-line help screens.
The Remote I/O Toolkit software is included as an installation option on the OpenBSI CD ROM.
 To use counters (DI) you must enable counters in the Remote I/O Toolkit software.
 The IP address entered for a ControlWave Remote Ethernet I/O board in the ControlWave Designer I/O Configuration Wizard must MATCH the IP address entered in the Remote I/O Toolkit.
 If you are using high speed counters, 32 bit counters must be enabled within Remote I/O Toolkit.
 For analog inputs/outputs (AI, AO) you must NOT change the default scaling within Remote I/O Toolkit. Changes should only be made within the ControlWave Designer I/O Configuration Wizard.
 Be aware that if you are using counters (Digital Input or High Speed Counter), restarting of the ControlWave Remote Ethernet I/O will cause a large jump in counts.
 If you intend to use TPO (Time Proportioned Outputs) for any point, you must enable TPO for those points.
 If you check the `Turn OFF outputs on communications loss' option' in the Remote I/O Toolkit, outputs will be set to 0 if the `Com Timeout' value expires without any communication from the ControlWave. The default value for `Com Timeout' in the Remote I/O Toolkit is 5 seconds. The rate at which the ControlWave communicates with the Ethernet I/O is determined by the ControlWave task associated with the board. If this is an `output-only' board, however, and the output(s) coming from the ControlWave have not changed, the ControlWave will not attempt to communicate with the Ethernet I/O more frequently than once every 15 seconds. (Prior to ControlWave firmware 04.60, if outputs had not changed, the ControlWave would not attempt to communicate with the Ethernet I/O more frequently than once every 60 seconds.) To prevent outputs from being zeroed out due to a delay in communication from the ControlWave because outputs have not changed, you must increase the `Com Timeout' value to greater than 15 seconds. The `Com Timeout' value has a maximum of 25 seconds.
RIO Open Modbus Boards
These RIO Open Modbus board types are provided to allow the ControlWave to communicate with various third-party Modbus devices.
Before using these board types, you must be familiar with certain characteristics of the third-party device. In particular, you will need to know the following:
 The IP address of the third-party Modbus device. This is entered in the I/O Configurator as shown in the figure, below.

I/O Configurator

189

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Enter the IP address of the third-party Modbus device here

It is recommended that you associate the board with some executing task. Data collection from the Modbus device will occur at the rate specified for the task.

 The Modbus Unit Number as programmed in the third-party Modbus device.
 The register numbers in the third-party Modbus device which you will be 'reading from / writing to'.
 The Modbus function code(s) you will be using to 'read from / write to' registers in the third-party Modbus device. This also affects your choices of data types for the variables in ControlWave Designer which will be used to hold the Modbus register data.

These parameters are entered in the Configure Remote Board Pins dialog box, which is accessible from the [Show Detail Pins' Information] button.

The unit number programmed in the third-party Modbus device

This is the number of bytes which will be reserved in the ControlWave project for this data

The Modbus function code

These numbers define which registers will be 'read-from / written to' in the Modbus device. Here, we are requesting data from 10 registers (numbered 0 through 9).

190

I/O Configurator

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Unit Number

Specifies the Modbus unit number as programmed in the third-party Modbus device. NOTE: If you will be requesting data from noncontiguous regions of memory in the same Modbus device, and you need to use the same function code to collect the data, you will need to define multiple Open Modbus boards, and give them different unit numbers, even though they all refer to the same Modbus device. The first board definition should use the actual Modbus unit number in the device; the unit numbers for all subsequent boards must be chosen by adding a multiple of 256 to the actual unit number. If, say, the Modbus unit number programmed in the Modbus device is 13, and you need to define three different boards to get data from three different memory regions in the device, you should use Modbus unit numbers of 7, 269, and 525. All refer to the same device.

Add Driver Status

When selected, will cause a variable to be created to store I/O driver status information.

Add Freshness Counter

When selected, will cause a variable to be created to store a `freshness' counter value. The freshness counter represents the number of program executions since new data has been collected through this Open Modbus board. A value of 0, indicates the data is as new (fresh) as possible.

Total Memory Size

This is the total number of bytes which will be reserved inside the ControlWave project for data 'read from / written to' the third-party Modbus device. The default is the maximum memory available for the longest possible request.

Starting Register

The first register in the third-party Modbus device which you will be 'reading from / writing to'. IMPORTANT NOTE: Both the Open Modbus Input Board and Open Modbus Output Board send requests for the exact register number you specify. Some third-party Modbus devices, however, number their registers differently, for example, starting register numbers at the number 1, instead of the number 0. As a consequence, you may need to request one less than the register number you want to get the correct register. Consult the literature accompanying the device to verify the register numbering.

Number of Registers

The total number of registers to be read/written.

Function Code

The Modbus function code. Only the Modbus function codes listed, below, can be used through these boards:

1

Read Multiple Coil Outputs

2

Read Multiple Coil Inputs

3

Read Multiple Analog Outputs

I/O Configurator

191

ControlWave Designer Programmer's Handbook D301426X012 August 2020

4

Read Multiple Analog Inputs

15 (Fhex)

Write Multiple Coil Outputs

16 (10hex) Write Multiple Analog Outputs

[Done]

Click here when configuration for this board is complete.

Besides configuring the board, itself, you must explicitly declare located variables in one of your ControlWave worksheets that will hold the data 'read from / written to' the Modbus device.

Located variables would typically be entered either in your 'RTU_RESOURCEV' worksheet, or in some other worksheet you create, and would take the format shown below:

variable_name Datatype usage description %location_prefixsize_prefixaddress

variable_name datatype usage description location_prefix
size_prefix
address

is the variable name.
is one of the IEC 61131-3 data types, e.g. BOOL, INT, etc.
specifies the scope of how the variable is used, e.g. VAR, VAR_GLOBAL, etc.

is an optional description.

describes where this data will be located. It is one of the following letters:

I

for physical inputs (input map)

Q

for physical outputs (output map)

specifies the amount of space needed for the variable. It is one of the following letters. (NOTE: If no size_prefix is included, single bit size is assumed.)

X

single bit size (BOOL only)

B

byte size (8 bits)

W

word size (16 bits)

D

double word size (32 bits)

is the memory address reserved this variable plus the appropriate offset. Inputs and outputs start at an offset of 4 in the memory map of the board. See `I/O Mapping' for more details on offsets into the I/O map for the Open Modbus boards.

192

I/O Configurator

ControlWave Designer Programmer's Handbook D301426X012 August 2020
As an example, suppose we have defined both an Open Modbus Input board that will be reading a register in the Modbus device to obtain a flow temperature. This temperature is
stored in the Modbus device as a 16 bit (word), and will be stored in an integer variable in the ControlWave, named FLOW_TEMP. The variable must be declared as follows:
The choice of 4 for the address was determined by examining the I/O global variables worksheet to determine the address of the IPMB_INP (Open Modbus Input board). In this case, the address was 0, and then putting in the correct offset, based on the I/O Mapping information in the `I/O Mapping' section. In this case the offset was 4.
HART Interface Board (CWM_HIB)
The CWM_HIB board allows your ControlWave MICRO to communicate with HART® devices using the Highway Addressable Remote Transducer (HART) protocol, or with Bristol 3508/3808 transmitters using the BSAP protocol. If using a HART device, you must configure a HART function block. See the ControlWave Designer online help for details. If using a Bristol 3508 or 3808 transmitter, you must configure an XMTR or LBTI function block. See the ControlWave Designer online help for details.

I/O Configurator

193

ControlWave Designer Programmer's Handbook D301426X012 August 2020

You must associate the HIB board with a task, using the Related Task field, in order to have control of its rate of execution.

It must be executed fast enough to accommodate your data update requirements, depending upon whether or not you are accessing the current loop directly. For example, if you want to access the primary variable at a faster rate (100 msec) through the 4 to 20 mA current loop, you must associate the HIB board with a task that executes at least once every 100 msec.

Although the dialog box in the I/O Configurator shows 16 pins, only the first 8 are used; the remaining ones are reserved for future expansion. Pin types are:

Pin Type
Not Configured Analog Input

Valid for this channel Any Any

Analog Output 1 or 2

HART Multi-

Any

drop

BTI

Any

Notes
The channel is not configured. Valid only for a single 4-20 mA device on this channel (point-topoint). You must specify a zero and span for the input. Not used with multi-dropped HART devices. If using on Channel 1, set switch SW3 to "IN". If using on Channel 2, set switch SW4 to "IN". Valid only for a single 4-20 mA HART device on this channel, that is NOT a transmitter. You must specify a zero and span for the output. Not used with multi-dropped HART devices. If using on Channel 1, set switch SW3 to "OUT". If using on Channel 2, set switch SW4 to "OUT". Up to five multi-dropped HART devices allowed per channel (total of 40 allowed for the entire board ­ main and daughter). If used on channels 1 or 2, switches SW3 and/or SW4 must be set to "IN". Valid for either a Bristol 3508 or Bristol 3808 transmitter. If used on channels 1 or 2, switches SW3 and/or SW4 must be set to "IN".

Changing Default Variable Names (All board types)
As you proceed to define your I/O, the I/O Configuration Wizard will automatically create variable names associated with the I/O board to store status information, zeros and spans, etc.

194

I/O Configurator

ControlWave Designer Programmer's Handbook D301426X012 August 2020
These variable names are based on the pin name you define with an appropriate suffix added. To see the default suffix, click on the [Variable Names] button (previously called [Settings]) visible on certain pages of the I/O Configuration Wizard. While NOT recommended, the variable suffixes can be altered by the user, if desired. The different pages of the Global Output Variables Names dialog box are accessible by clicking on the tabs. Make changes on the various pages, then click [OK] to save all the changes.

I/O Configurator

195

ControlWave Designer Programmer's Handbook D301426X012 August 2020

196

I/O Configurator

I/O Mapping

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Important Most users do not need to be concerned with the details described in this section. The typical user configures I/O using the I/O Configuration Wizard. Only certain users with special I/O requirements or customized software need to be familiar with this information.
In IEC 61131, I/O is addressed by mapping the physical I/O into one of two I/O memory regions. Addresses for these regions are either %Qtxx (Output) or %Itxx (Input), where t is the data type and xx is the offset (for example: %QD100, %QW50, or %QX0.1).
Typically, the inputs are scanned at the start of a task's cycle, and outputs are written at the end. (Note: the user has the choice about which task will process each I/O definition). The user can also force I/O processing to occur by using a standard function block
Common Device Map
The status area is defined for all I/O boards at offset 0 of the input map. This region is 4 bytes long; the first byte is reserved for board errors (see bit definitions in each I/O board section) and the other three are divided as needed by the individual board drivers.
DI The status of DI points is always mapped from bytes 4-19 of the input map. Any other features (such as counters) will be mapped starting at address offset 20.
DO The values to be output to a DO are always mapped at bytes 0-15 of the output map. Any other features will be mapped starting at address offset 16.
AI The AI map is organized into two sections: The input values are mapped as REAL values, starting at offset 8 (there is an exception here when a combo board is used). The output map consists of pairs of REAL values (ZERO, SPAN) by which each input is scaled. The outputs are typically mapped starting at offset 0. If a zero / span pair is not initialized, the scale defaults to ZERO = 0.0 and SPAN = 100.0.
Note: The Input or Output map may be shortened to reduce the number of points processed.

I/O Mapping

197

ControlWave Designer Programmer's Handbook D301426X012 August 2020
AO To output an AO, a set of three REAL values is used: ZERO, SPAN, VALUE. These are mapped starting at offset 0. If a zero / span pair is not initialized, the scale defaults to ZERO = 0.0 and SPAN = 100.0.
Note: The Input or Output map may be shortened to reduce the number of points processed.

Local I/O - ControlWave

The following sections describe the local I/O boards supported, and their memory maps.

CW_DO32 ControlWave 32 Output Pin Digital Board

DRIVER_NAME:

`CW_DO32'

DATA_TYPE:

BYTE

DRIVER_PAR1:

Slot number.

DRIVER_PAR2:

Bit mask of outputs to be processed by 61131 program. If specified as 0, all points will be allowed.

DRIVER_PAR3:

Bit mask for outputs to be processed by 61131 (bits 16-31). If specified as 0, all points will be allowed.

Input Map:

Max Size: 8 bytes (6 bytes for 16 point)

Offset
0

Default Variable Name where x is the board slot and y is the pin number.
DO32_x_BOARDSTATUS

4-7

DO32_x_y_I

Description
Board status. Only bit 0 is currently defined. If set, board is not present. DO status as seen by card. 1 bit per value.

Offset
0 1-3

Output Map: Size: 4 bytes (2 bytes on 16 pt)

Default Variable Name where x is the board slot and y is the pin number.
DO32_x_y
DO32_x_y

Description
Outputs. 1 bit per value. DO1 is LSB; DO8 is MSB. Typically specified as %QXy.z, where y is I/O space offset, and z is bit number from 0 to 7. Repeat for DO9-32. Offset 1 is DO9-16, 2 is DO17-24, etc.

198

I/O Mapping

CW_DI32
Offset
0 4 5 6 7

ControlWave Designer Programmer's Handbook D301426X012 August 2020

ControlWave 32 Input Pin Digital Board

DRIVER_NAME:

`CW_DI32'

DATA_TYPE:

DWORD (32 bits)

DRIVER_PAR1:

Slot number.

DRIVER_PAR2:

Unused

Input Map:

Max Size: 8 bytes (6 bytes for 16 pt)

Default Variable Name where x is the board slot and y is the pin number.
DI32_x_BOARDSTATUS
DI32_x_y DI32_x_y DI32_x_y DI32_x_y

Description
Board status. Only bit 0 is currently defined. If set, board is not present. Current status of DI1 (in bit 0) to DI8 (in bit 7). Current status of DI9 (in bit 0) to DI16 (in bit 7). Current status of DI17 (in bit 0) to DI24 (in bit 7). Current status of DI25 (in bit 0) to DI32 (in bit 7).

CW_AI16 ControlWave 16 Input Pin Analog Board

DRIVER_NAME:

`CW_AI16'

DATA_TYPE:

DWORD (32 bits)

DRIVER_PAR1:

Slot number.

Input Map:

Max Size: 72 bytes (40 for 8 point)

Due to the amount of time required to process the AI points, it is highly recommended that the input region for this board be sized only as large as needed for the points used by the application.

Also, the I/O fetches should be programmed to only occur as fast as needed (via task association).

Offset
0 (Bit 0) 0 (Bit 1) 4-5

Default Variable Name where x is the board slot and y is the pin number.
AI16_x_BOARDSTATUS AI16_x_LASTOPERATION AI16_x_y_OUTRANGE

8

AI16_x_y

12, 16, ... AI16_x_y

Description
Board status. Bit 0 is set if board is not present; Bit 1 is set if the last conversion operation failed. 1 bit per AI, AI1 is bit 0, offset 1, AI8 is bit 7, offset 1, AI9 is bit 0, offset 2. If set, input is Out-of-range. Value for AI1 in engineering units (4-byte float REAL). To access the value, a variable needs to be defined `%IDxx'. Direct access to %IDxx is not possible. Value for AI2, AI3, ...

I/O Mapping

199

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Output Map:

Max Size: 128 bytes (64 bytes for 8 point)

To provide consistent scaling values across Application Warm Starts, this I/O region should be marked as `RETAIN'.

Offset
0

Default Variable Name where x is the board slot and y is the pin number.
AI16_x_y_ZERO

4

AI16_x_y_SPAN

8, 16, 24, ... 12, 20, 28, ...

AI16_x_y_ZERO AI16_x_y_SPAN

Description
Zero for AI1 (4-byte float ­ REAL). To access the value, define the variable %QDxx. This variable can be initialized at declaration. Span for AI1 (4-byte float - REAL). If zero, the AI will be scaled from 0 to 100.0. Zeros for AI2, AI3, ... Spans for AI2, AI3, ...

CW_AO8 ControlWave 8 Output Pin Analog Board

DRIVER_NAME:

`CW_AO8'

DATA_TYPE:

DWORD (32 bits)

DRIVER_PAR1:

Slot number.

Input Map:

Max Size: 72 bytes (Extra space reserved for future expansion up to AO16)

Offset
0 (Bit 0) 0 (Bit 1) 4

Default Variable Name where x is the board slot and y is the pin number.
AO8_x_BOARDSTATUS AO8_x_LASTOPERATION AO8_x_y_OUTRANGE

8, 12, ..., AO8_x_y_ACTUAL 36

40, 44, ..., 68

AO8_x_y_ACTUAL

Description
Board status. Bit 0 is set if board is not present; Bit 1 is set if the last conversion operation failed. 1 bit per AO, AO0 is bit 0, AO8 is bit 7. If set, output is Out-of-range. Actual output value for points 1 to 8. If output is Outof-range low the output will be constrained to the points Zero value. If output is O-o-r high it will be set to the points Zero+Span value. Output values for points 9 to 16 (To allow for future expansion)

Output Map: Max Size: 268 bytes (Extra space reserved for future expansion up to AO16)
Due to the amount of time required to process the AO points, it is highly recommended that the output region for this board be sized only as large as needed for the points used by the application.
Also, the I/O sets should be programmed to only occur as fast as needed (via task association).

200

I/O Mapping

Offset
0 4 8 12, 24, 36, ... 16, 28, 40, ... 20, 32, 44, ... 192
196
200
204, 208, 212, ...

ControlWave Designer Programmer's Handbook D301426X012 August 2020

To provide consistent scaling values across Application Warm Starts, this I/O region should be marked as `RETAIN'.

Default Variable Name where x is the

Description

board slot and y is the pin number.

AO8_x_y_ZERO

Zero for AO1 (4-byte float - REAL). To access the

value, define the variable %QDxx. This variable can

be initialized at declaration.

AO8_x_y_SPAN

Span for AO1 (4-byte float). If zero, the AO will be

scaled from 0 to 100.0.

AO8_x_y

Value for AO1 (4-byte float).

AO8_x_y_ZERO

Zeros for AO2, AO3, AO4, etc.

AO8_x_y_SPAN

Spans for AO2, AO3, AO4, etc.

AO8_x_y

Values for AO2, AO3, AO4, etc.

AO8_x_y_DEF_VAL

Update Default Values for AO1 - AO16 (4-byte

integer - DWORD). To access this value, define the

variable %QX192.0. This variable can be initialized at

declaration. Setting this bit to TRUE will write the

default values for AO1 - AO16 to the AO hardware.

After the default values are written to the board this

variable will then be set back to FALSE.

AO8_x_y_HOLD_LO

Hold Last Output (HLO) Control for AO1 - AO16 (4-

byte integer - DWORD). To access the values, define

variables %QXxxx.x. This variable can be initialized at

declaration. (192.0 for AO1, 192.1 for AO2, ... 193.7

for AO16)

AO8_x_y_UCO_FLG

User Configured Output (UCO) Control for AO1 -

AO16 (4-byte integer - DWORD). To access the

value, define variables %QXxxx.x. This variable can

be initialized at declaration. (196.0 for AO1, 196.1

for AO2, ... 197.7 for AO16)

AO8_x_y_UCD_VAL

User Configured Default (UCD) Value for AO1, AO2,

AO3, etc. (4-byte float - REAL). To access the value,

define the variable %QDxxx. These variables can be

initialized at declaration.

If neither Hold Last State or User Configured Output are enabled, for a point, the output

will go to -5% if the unit watchdogs.

If Hold Last State and User Configured Output are both enabled at the same time, for the same point, neither will be the winner. If the unit watchdogs the output will fall back to 5%.

CW_HSC12 Board

ControlWave 12 Channel High Speed Counter / Universal Discrete Input

DRIVER_NAME: DATA_TYPE: DRIVER_PAR1:

`CW_HSC12' DWORD (32 bits) Slot number.

I/O Mapping

201

ControlWave Designer Programmer's Handbook D301426X012 August 2020

DRIVER_PAR2:

UNUSED

Input Map:

Max Size: 68 bytes (44 bytes for 6 point)

Offset
0 1

Default Variable Name where x is the board slot and y is the pin number.
HSC12_x_BOARDSTATUS
HSC12_x_y_STATE

4

HSC12_x_TIMESTAMP

8

HSC12_x_y_COUNTER

12,16,20, ..., 52 HSC12_x_y_COUNTER

Description
Board status. Only bit 0 is currently defined. If set, board is not present. Input channel state. BOOL Offset 1 Bit 0 is for channel 1, Bit 1 is channel 2, etc. Each bit will reflect the state, either on or off, of the signal on its respective channel. Timestamp of last sample from HSC. This is the number of milliseconds since boot. Number of counts since boot (Channel 1) Counts for Channel 2, 3, 4, ..., 12

Offset
0
2 (Bit 1) 4
8

Ouput Map:

Max Size: 12 bytes

Default Variable Name where x is the board slot and y is the pin number.
HSC12_x_y_RESET_COUNT
HSC12_x_NOINIT HSC12_x_y_FILTER
HSC12_x_y_HSC_SEL

Description
Reset point counts. BOOL Offset 0, Bit 0 is point 1 ... Offset 1, bit 3 is point 12. Setting a bit to TRUE (1) will reset the count for the point selected. The driver will reset the bit after the count has been reset. Bit 1 ­ If set to TRUE, maintain counts across warm start. 30ms/1ms filter select. Offset 4, Bit 0 represent Channel 1 to select 30ms (FALSE) and 1ms (TRUE) respectively. Offset 4, Bit 1 is Channel 2, Offset 5, Bit 3 is Channel 12. High Speed Counter select. Offset 8, Bit 0 represent Channel 1 to select High Speed Counter (TRUE). Offset 8, Bit 1 is Channel 2, Offset 9, Bit 3 is Channel 12. Setting an HSC select bit to TRUE will override the 30ms/1ms selection for the same channel.

CW_TC12 ­ ControlWave 12 Point Thermocouple Board

DRIVER_NAME

`CW_TC12'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

Input Map:

Max Size: 56 bytes

Due to the amount of time required to process the thermocouple points, it is highly recommended that this I/O driver be assigned to a task (instead of "No Task"). Care should also be taken in using the I/O board in a task of less than 40ms.

202

I/O Mapping

Offset
0 (Bit 0) 0 (Bit 2) 0 (Bit 3) 4 5 8
12, 16, 20, 24, ... 52

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Default Variable Name where x is the board slot and y is the pin number.
TC12_x_BOARDSTATUS TC12_x_CALIBRATE TC12_x_TIMEOUT TC12_x_y_OUTRANGE TC12_x_y_OUTRANGE TC12_x_y
TC12_x_y

Description
If set, the board is not present. If set indicates invalid calibration data written to the board. If set, indicates that had an error reading or writing to the board. 1 bit per TC, TC1 is bit 0, TC8 is bit 7. If set, input is Out-of-range. 1 bit per TC, TC9 is bit 0, TC12 is bit 3. If set, input is Out-of-range. Value for TC1 in engineering units (4-byte float REAL). To access the value, define the variable AT %IDxx. Direct access to %IDxx is not possible. Value for TC2, TC3, TC4, TC5, TC6... TC12

Output Map: Max Size: 112 bytes

Offset
0
4
8, 16, 24, 32, ... 88 12, 20, 28, 36, ... 92 100
101, 102, 103, 104, ... 111

Default Variable Name where x is the board slot and y is the pin number.
TC12_x_y_ZERO
TC12_x_y_SPAN
TC12_x_y_ZERO TC12_x_y_SPAN TC12_x_y_MODE TC12_x_y_MODE

Description
Zero for TC1 (4-byte float - REAL). To access the value, define the variable AT %QDxx. This variable can be initialized at declaration. Span for TC1 (4-byte float). If zero, the TC will be scaled as in the chart below. If specified, the new value will be ORG_VALUE * Span + Zero. Zeros for TC2, TC3, TC4, to TC12 ­ Example: for C to F, use 32.0 Spans for TC2, TC3, TC4, to TC12 ­ Example for C to F, use 1.8 Point type for TC1; see Thermocouple type codes section for details. Point types for TC2, TC3, TC4, to TC12.

Type Code
0 1 2 3 4 5

Type codes for Thermocouple Points.

Code

Range

B

Thermocouple: 100C ­ +1820C

E

Thermocouple: -270C ­ +1000C

J

Thermocouple: -210C ­ +1200C

K

Thermocouple: -270C ­ +1370C

R

Thermocouple: -50C ­ +1720C

S

Thermocouple: -50C ­ +1760C

I/O Mapping

203

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Type Code
6 7 8 9 10

Code
T Unused 10MV C N

Range
Thermocouple: -270C ­ +400C Unused Voltage Inputs: -10 mV to +10 mV (Outputs as 0.0 to 1.0) Thermocouple: 0C ­ +2315C Thermocouple: -270C ­ +1300C

CW_RTD8 - ControlWave 8 Point Resistance Temperature Device (RTD) Board

DRIVER_NAME

`CW_RTD8'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

Input Map:

Max Size: 40 bytes

Due to the amount of time required to process the RTD points, it is highly recommended that this I/O driver be assigned to a task (instead of "No Task"). Care should also be taken in using the I/O board in a task of less than 40ms.

Offset
0 (Bit 0) 0 (Bit 2) 0 (Bit 3) 1 (Bit 0) 1 (Bit 7) 4 8
12, 16, ...36

Default Variable Name where x is the board slot and y is the pin number.
RTD8_x_BOARDSTATUS RTD8_x_CALIBRATE
RTD8_x_TIMEOUT
RTD8_x_LASTCALBOP RTD8_x_CALBCMD
RTD8_x_y_READERR RTD8_x_y
RTD8_x_y

Description
If set, the board is not present. If set indicates invalid calibration data written to the board. If set, indicates that had an error reading or writing to the board. Set if last calibration or reset operation failed. Calibration Commands Allowed. Until this bit is set, all calibration commands are ignored. RTD Reading Error. Bit 0 is RTD1, Bit 7 is RTD8 RTD1 reading ­ REAL ­ In units of Degrees Centigrade (unless scaled by values in the output map). Readings for RTD2 ... RTD8.

Output Map: Offset
0 4

Max Size: 280 bytes
Default Variable Name where x is the board slot and y is the pin number.
RTD8_x_y_ZERO
RTD8_x_y_SPAN

Description
Zero for RTD 1(4-byte float - REAL). Example: for C to F, use 32.0. Defaults to 0.0 Span for RTD 1(4-byte float ­ REAL). If zero, RTD will not be scaled. If specified, the scaled value will be ORG_VALUE * Span + Zero. Example for C to F, use 1.8.

204

I/O Mapping

Offset
8,16,24,32 40,48,56 12,20,28, 36,44,52, 60 120 (Bit 0) *
121 *
124 ** 128 ** 132 ** 136 ** 140 (Bit 0) *
141 *
144 ** 148 ** 152 ** 156 ** .... 260 (Bit 0) *
261 *
264* 268** 272** 276**

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Default Variable Name where x is the board slot and y is the pin number.
RTD8_x_y_ZERO

Description
Zero for RTDs 2-8

RTD8_x_y_SPAN

Span for RTDs 2-8

RTD8_x_y_RESTORE
RTD8_x_y_OPERATION
RTD8_x_y_COEFF_A RTD8_x_y_COEFF_B RTD8_x_y_COEFF_R0 RTD8_x_y_APPLIED RTD8_x_y_RESTORE
RTD8_x_y_OPERATION
RTD8_x_y_COEFF_A RTD8_x_y_COEFF_B RTD8_x_y_COEFF_R0 RTD8_x_y_APPLIED
RTD8_x_y_RESTORE
RTD8_x_y_OPERATION
RTD8_x_y_COEFF_A RTD8_x_y_COEFF_B RTD8_x_y_COEFF_R0 RTD8_x_y_APPLIED

If set, restore RTD 1 calibration to Factory

Defaults. Will be reset when operation

completes.

Calibration Operation for RTD 1 ­ SINT

5

RTD Zero (100 Ohms)

6

RTD Span (300 Ohms)

7

RTD Coefficients (A, B, R0)

8

RTD Span (not using 300

Ohms)

Coefficient A (RTD 1)

Coefficient B (RTD 1)

Coefficient R0 (RTD 1)

The applied temperature when calibration

operation 8 was performed. (RTD 1)

If set, restore RTD 2 calibration to Factory

Defaults. Will be reset when operation

completes.

Calibration Operation for RTD 2 ­ SINT

5

RTD Zero (100 Ohms)

6

RTD Span (300 Ohms)

7

RTD Coefficients (A, B, R0)

8

RTD Span (not using 300

Ohms)

Coefficient A (RTD 2)

Coefficient B (RTD 2)

Coefficient R0 (RTD 2)

The applied temperature when calibration

operation 8 was performed. (RTD 2)

.....

If set, restore RTD 8 calibration to Factory

Defaults. Will be reset when operation

completes.

Calibration Operation for RTD 8 ­ SINT

5 RTD Zero (100 Ohms)

6 RTD Span (300 Ohms)

7 RTD Coefficients (A, B, R0)

8 RTD Span (not using 300 Ohms)

Coefficient A (RTD 8)

Coefficient B (RTD 8)

Coefficient R0 (RTD 8)

The applied temperature when calibration

I/O Mapping

205

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset

Default Variable Name where x is the board slot and y is the pin number.

Description
operation 8 was performed. (RTD 8)

* Value written to perform operation. The value will be reset by driver when the operation completes.
** Value is read from the board by the driver. In order to perform calibration operations 7 and 8, the user can overwrite the values; then, issue the calibration command.

Ethernet I/O
Data from Ethernet I/O units will be transferred to the process automation controller using a TCP/IP data link. The data link may be a dedicated Ethernet line or may have other IP traffic. Performance-critical applications should not be run in over a shared link.
A series of special I/O configuration modules, boards, will be defined to support Ethernet I/O. These modules are to be included by the application developer and a firmware driver will support each module. The drivers will be linked as a part of the system firmware for the controller. These drivers will provide a front-end to a common driver that hands TCP/IP communication, Modbus mapping and timing responsibilities. This driver will be responsible for exchanging data between the I/O configuration memory and the actual Ethernet I/O hardware units.
A special software program for Ethernet I/O configuration, called the Remote I/O Toolkit, is included as an installation option on the OpenBSI CD ROM.
A copy of the I/O image memory that supports the Ethernet I/O data will be held in a buffer controlled by the common driver. This driver will copy the data into the I/O image memory whenever a call is made to the driver's read member function. A read call will also initiate a communication request to refresh the image data from the remote hardware. Similarly, the I/O image memory will be copied into the driver's image buffer when the write member function of the driver is called.
Sending the data request message will be delayed, such that the response data will arrive just before the next scheduled driver read call. The driver will collect statistics, possibly a rolling average, in order to calculate the optimal amount of time to delay. Problems could occur in this optimal time calculation if either the request for data is not regular or the data link is not very consistent in response time.
To provide some indication of the freshness of the Ethernet I/O data, a read request counter is included in each input I/O configuration block. This counter will be incremented during the Read input portion of application task's execution. The increment will occur just after the image data is copied. The driver will clear this count while updating its internal image from a data response message. This way if a fresh block of data is received the counter will be zero, but if the data is the same as the last read request, the counter will be greater than zero.

206

I/O Mapping

ControlWave Designer Programmer's Handbook D301426X012 August 2020

The Open Modbus standard is supported using TCP/IP. The units contain an ID string, which will be used to verify that the proper unit type is mapped to an IP address. No other verification of the Ethernet I/O configuration will be performed. It is assumed that this function will be done using the Remote I/O Toolkit.

Also implemented are two general-purpose Open Modbus I/O boards to allow communication with other compliant hardware without requiring new firmware. One board will support input and the other output.

Driver status for all board types is defined as follows:

Bit

Bit Value Meaning

0

1

Cannot communicate properly with Ethernet I/O module.

1

2

Communications can be established with the Ethernet I/O device, but,

the data response cannot be properly parsed. This is most likely due to an

invalid device type being configured.

3

8

Configuration Error. For units which support a device ID request, if this is

set, the unit responded with an unexpected unit identifier.

The memory map of each module is described below.

BB_8DI8DO (8 Remote Digital Input and 8 Remote Digital Output Pin Ethernet I/O Board)

DRIVER_NAME:

`BB_8DI8DO'

DATA_TYPE:

BYTE

DRIVER_PAR1:

always 0

DRIVER_PAR2 :

IP address - first and second quads.

DRIVER_PAR3:

IP address - third and fourth quads

DRIVER_PAR4:

Open Modbus Unit number - used for gateway chaining.

Input Map:

Max Size: 52 bytes

Offset
0 1 4 5-19 20/23

Default Variable Name where x is the board slot and y is the pin number.
RDIDO_x_DRIVERSTATUS RDIDO_x_FRESHNESSCOUNT RDIDO_x_y
RDIDO_x_y_COUNTER

24/27, ..., RDIDO_x_y_COUNTER 48/51

Description
Driver status - see table above. Freshness counter. Current status of DI1 (in bit 0) to DI8 (in bit 7). spare If counter processing is enabled, the number of counts for DI1. A count is registered when the DI transitions from low to high. Note: Only a 16 bit counter is held, but a 32 bit value will be reported here. Roll over in the 16 bit counter will be carried into the 32-bit counts. Counts for DI2, ..., DI8.

I/O Mapping

207

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Output Map:

Size: 48 bytes

Offset
0

Default Variable Name where x is the board slot and y is the pin number.
RDIDO_x_y_O

1-15 16 17 18/19

RDIDO_x_ACTIVATECOUNTER RDIDO_x_CLEARCOUNTER RDIDO_x_y_O_TPOVALUE

20/21, ..., RDIDO_x_y_O_TPOVALUE 46/47

Description
Outputs. 1 bit per value. DO1 is LSB; DO8 is MSB. Typically specified as %QXy.z, where y is I/O space offset, and z is bit number from 0 to 7. Spare Activate counters. 1 bit per point. Clear counters. Sets values back to 0. 1 bit per point. TPO value for DO point 1. 1 word / DO point for the Pulse count in the range 0 to 32767. See 'Tpo' and the 'Time Proportioned Output' topic in the Remote I/O Tool Kit on-line help for more information. TPO value for DO points 2 ... 8.

Modbus Function Codes:

02 to read DI values @ 1 ... 8 04 to read Counter values @ 1 ... 8 0Fh to set DO values @ 1 ... 8 10h to set TPO values @ 1 ... 8

BB_16DI-(16 Remote Digital Input Pin Ethernet I/O Board)

DRIVER_NAME:

`BB_16DI'

DRIVER_PAR1:

always 0

DRIVER_PAR2:

IP address - first and second quads.

DRIVER_PAR3:

IP address - third and fourth quads

DRIVER_PAR4:

Open Modbus Unit number - used for gateway chaining.

Input Map:

Max Size: 84 bytes

Offset
0 1 4 5 6-19 20/23

Default Variable Name where x is the board slot and y is the pin number.
RDI_x_DRIVERSTATUS RDI_x_FRESHNESSCOUNT RDI_x_y RDI_x_y
RDI_x_y_COUNTER

Description
Driver status - see table above. Freshness counter. Current status of DI1 (in bit 0) to DI8 (in bit 7). Current status of DI9 (in bit 0) to DI16 (in bit 7). Spare If counter processing is enabled, the number of counts for DI1. A count is registered when the DI transitions from low to high. Note: Only a 16-bit counter is held, but a 32-bit value will be reported here. Roll over in the 16-bit counter will be carried

208

I/O Mapping

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset

Default Variable Name where x is the board slot and y is the pin number.

24/27, ..., RDI_x_y_COUNTER 80/83

Description
into the 32-bit counts. Counts for DI2, ..., DI16.

Output Map:

Size: 4 bytes

Offset
0/1

Default Variable Name where x is the board slot and y is the pin number.
RDI_x_ACTIVATECOUNTER

2/3

RDI_x_CLEARCOUNTER

Description
Activate counters. 1 bit per point. Counters 1-8 in first byte, 9-16 in second. Clear counters. Sets values back to 0. 1 bit per point.

Modbus Function Codes:

02 to read DI values @ 1 ... 16 04 to read Counter values @ 1 ... 16

BB_16DO (16 Remote Digital Output Pin Ethernet I/O Board)

DRIVER_NAME:

`BB_16DO'

DATA_TYPE:

BYTE

DRIVER_PAR1:

always 0

DRIVER_PAR2:

IP address - first and second quads.

DRIVER_PAR3:

IP address - third and fourth quads

DRIVER_PAR4:

Open Modbus Unit number - used for gateway chaining.

Input Map:

Max Size: 2 bytes

Offset
0 1

Default Variable Name where x is the board slot and y is the pin number.
RDO_x_DRIVERSTATUS RDO_x_FRESHNESSCOUNT

Description
Driver status - see table above. Freshness counter.

Output Map:

Size: 48 bytes

Offset
0

Default Variable Name where x is the board slot and y is the pin number.
RDO_x_y

1 2-15 16/17

RDO_x_y RDO_x_y_TPOVALUE

Description
Outputs. 1 bit per value. DO1 is LSB; DO8 is MSB. Typically specified as %QXy.z, where y is I/O space offset, and z is bit number from 0 to 7. Outputs. 1 bit per value. DO9 is LSB; DO16 is MSB. spare TPO value for DO point 1. 1 word / DO point for the Pulse count in the range 0 to 32767. See 'Tpo' and the 'Time Proportioned Output' topic in the Remote I/O

I/O Mapping

209

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Offset Default Variable Name where x is the board slot and y is the pin number.

18/19, ..., 46/47

RDO_x_y_TPOVALUE

Description
Tool Kit on-line help for more information. TPO for DO points 2 to 16.

Modbus Function Codes:

0Fh to set DO values @ 1 ... 16 10h to set TPO values @ 1 ... 16

BB_8DI8AI - (8 Remote Digital Input and 8 Remote Analog Input Pin Ethernet I/O Board)

Note: For Proper functioning of the AIs, the Remote I/O Toolkit must be used to set the "Features" for each channel to be "Positive Only" or "- Below 4mA".

DRIVER_NAME:

`BB_8DI8AI'

DATA_TYPE:

BYTE

DRIVER_PAR1:

always 0

DRIVER_PAR2:

IP address - first and second quads.

DRIVER_PAR3:

IP address - third and fourth quads

DRIVER_PAR4:

Open Modbus Unit number - used for gateway chaining.

Input Map:

Max Size: 84 bytes

Offset
0 1 4 5-19 20/23

Default Variable Name where x is the board slot and y is the pin number.
RDIAI_x_DRIVERSTATUS RDIAI_x_FRESHNESSCOUNT RDIAI_x_y_DI
RDIAI_x_y_DI_COUNTER

24/27, ..., 48/51 52/55

RDIAI_x_y_DI_COUNTER RDIAI_x_y_AI

56/59, ..., RDIAI_x_y_AI 80/83

Description
Driver status - see table above. Freshness counter. Current status of DI1 (in bit 0) to DI8 (in bit 7). Spare If counter processing is enabled, the number of counts for DI1. A count is registered when the DI transitions from low to high. Counts for DI2, ..., DI8.
Value for AI1 in engineering units (4-byte float REAL). To access the value, define the variable %IDxx. Direct access to %IDxx is not possible. Values for AI2 to AI8.

210

I/O Mapping

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Output Map:

Size: 68 bytes

Offset
0

Default Variable Name where x is the board slot and y is the pin number.
RDIAI_x_ACTIVATECOUNTER

1

RDIAI_x_CLEARCOUNTER

4/7

RDIAI_x_y_AI_ZERO

8/11

RDIAI_x_y_AI_SPAN

12/15 16/19 20/23, ..., 64/67

RDIAI_x_y_AI_ZERO RDIAI_x_y_AI_SPAN

Description
Activate counters. 1 bit per point. Typically specified as %QXy.z, where y is I/O space offset, and z is bit number from 0 to 7. Clear counters. Sets values back to 0. 1 bit per point. Zero for AI1 (4-byte float - REAL). To access the value, define the variable %QDxx. This variable can be initialized at declaration. Span for AI1 (4-byte float). If zero, the AI will be scaled from 0 to 100.0. Zero for AI2. Span for AI2. Zeros and Spans for AI3 ... AI8.

Modbus Function Codes:

02 to read DI values @ 1 ... 8 04 to read Counter and AI values @ 1 ... 8 0Fh to set /clear counters @ 1 ... 8

BB_16AI (16 Remote Analog Input Pin Ethernet I/O Board)

Note: For Proper functioning of the AIs, the Remote I/O Toolkit must be used to set the "Features" for each channel to be "Positive Only" or "- Below 4mA".

Offset
0 1 2/3

DRIVER_NAME:

`BB_16AI'

DATA_TYPE:

DWORD (32 bits)

DRIVER_PAR1:

always 0

DRIVER_PAR2:

IP address - first and second quads.

DRIVER_PAR3:

IP address - third and fourth quads

DRIVER_PAR4:

Open Modbus Unit number - used for gateway chaining.

Input Map:

Max Size: 68 bytes

Default Variable Name where x is the board slot and y is the pin number.
RAI_x_DRIVERSTATUS RAI_x_FRESHNESSCOUNT

Description
Driver status - see table above. Freshness counter. Spare

I/O Mapping

211

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset
4/7

Default Variable Name where x is the board slot and y is the pin number.
RAI_x_y

8/11 12/15, ..., 64/67

RAI_x_y RAI_x_y

Description
Value for AI1 in engineering units (4-byte float REAL). To access the value, define the variable %IDxx. Direct access to %IDxx is not possible. Value for AI2 Values for AI3 to AI16.

Offset
0/3
4/7
8/11 12/15 16/19 ... 124/127

Output Map:

Max Size: 128 bytes per slot

To provide consistent scaling values across Application Warm Starts, this I/O region should be marked as RETAIN.

Default Variable Name where x is the board slot and y is the pin number.
RAI_x_y_ZERO
RAI_x_y_SPAN
RAI_x_y_ZERO RAI_x_y_SPAN

Description
Zero for AI1 (4-byte float - REAL). To access the value, define the variable %QDxx. This variable can be initialized at declaration. Span for AI1 (4-byte float). If zero, the AI will be scaled from 0 to 100.0. Zero for AI2. Span for AI2. Zeros and Spans for AI3 ... AI16.

Modbus Function Codes:

04 to read AI values @ 1 ... 16

BB_8AI4AO - (8 Remote Analog Input and 4 Remote Analog Output Pin Ethernet I/O Board)

Note: Note: For Proper functioning of the AIs, the Remote I/O Toolkit must be used to set the "Features" for each channel to be "Positive Only" or "- Below 4mA".

DRIVER_NAME: DATA_TYPE: DRIVER_PAR1: DRIVER_PAR2: DRIVER_PAR3: DRIVER_PAR4: Input Map:

`BB_8AI4AO'

DWORD

(32 bits)

always 0

IP address - first and second quads.

IP address - third and fourth quads

Open Modbus Unit number - used for gateway chaining.

Max Size: 36 bytes

212

I/O Mapping

Offset
0 1 2/3 4/7
8/11, ..., 32/35

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Default Variable Name where x is the board slot and y is the pin number.
RAIAO_x_DRIVERSTATUS RAIAO_x_FRESHNESSCOUNT
RAIAO_x_y
RAIAO_x_y

Description
Driver status - see table above. Freshness counter. spare Value for AI1 in engineering units (4-byte float REAL). To access the value, define the variable %IDxx. Direct access to %IDxx is not possible. Values for AI2 to AI8.

Offset
0/3
4/7 8/11, ... , 28/31 64/67
68/71 72/75 76/79, , 108/111

Output Map:

Max Size: 112 bytes

To provide consistent scaling values across Application Warm Starts, this I/O region should be marked as RETAIN.

Default Variable Name where x is the board slot and y is the pin number.
RAIAO_x_y_ZERO
RAIAO_x_y_SPAN

Description
Zero for AI1 (4-byte float - REAL). To access the value, define the variable %QDxx. This variable can be initialized at declaration. Span for AI1 (4-byte float). If zero, the AI will be scaled from 0 to 100.0. Zeros and Spans for AI2 ... AI8.

RAIAO_x_y_O_ZERO
RAIAO_x_y_O_SPAN RAIAO_x_y_O

Zero for AO1 (4-byte float - REAL). To access the value, define the variable %QDxx. This variable can be initialized at declaration. Span for AO1 (4-byte float). If zero, the AO will be scaled from 0 to 100.0. Value for AO1 (4-byte float). Zeros, Spans and Values for AO2 to AO4.

Modbus Function Codes:

04 to read AI values @ 1 ... 8

10h to set AO value @ 1 ... 4

BB_8INS (Instrumentation Ethernet I/O Board)

DRIVER_NAME:

`BB_8INS'

DATA_TYPE:

DWORD

(32 bits)

DRIVER_PAR1:

always 0

DRIVER_PAR2:

IP address - first and second quads.

DRIVER_PAR3:

IP address - third and fourth quads

I/O Mapping

213

ControlWave Designer Programmer's Handbook D301426X012 August 2020

DRIVER_PAR4:

Open Modbus Unit number - used for gateway chaining.

Input Map:

Max Size: 36 bytes

Offset
0 1 2/3 4/7
8/11, ..., 32/35

Default Variable Name where x is the board slot and y is the pin number.
RIN_x_DRIVERSTATUS RIN_x_FRESHNESSCOUNT
RIN_x_y
RIN_x_y

Description
Driver status - see table above. Freshness counter. Spare Value for AI1 in engineering units (4-byte float REAL). To access the value, define the variable %IDxx. Direct access to %IDxx is not possible. Values for AI2 to AI8.

Offset
0/3
4/7 8/11, ... , 28/31

Output Map:

Max Size: 32 bytes

To provide consistent scaling values across Application Warm Starts, this I/O region should be marked as RETAIN.

Default Variable Name where x is the board slot and y is the pin number.
RIN_x_y_ZERO
RIN_x_y_SPAN

Description
Zero for AI1 (4-byte float - REAL). To access the value, define the variable %QDxx. This variable can be initialized at declaration. Span for AI1 (4-byte float). If zero, the AI will be scaled from 0 to 100.0. Zeros and Spans for AI2 ... AI8.

Modbus Function Codes:

04 to read AI values @ 1 ... 8

BB_8HSC-(8 Channel High Speed Counter Channel Ethernet I/O Board)

Note:
For proper functioning of the counters, the Remote I/O Toolkit must be used to set up for 32-bit counters. Also, the counts reported are the RAW counts from the module. No adjustment is performed to convert to counts since boot.

DRIVER_NAME: DATA_TYPE: DRIVER_PAR1: DRIVER_PAR2:

`BB_8HSC' DWORD (32 bits) always 0 IP address - first and second quads.

214

I/O Mapping

Offset
0 1 2/3 4
8 12, 16, ..., 36

ControlWave Designer Programmer's Handbook D301426X012 August 2020

DRIVER_PAR3:

IP address - third and fourth quads

DRIVER_PAR4:

Open Modbus Unit number - used for gateway chaining.

Input Map:

Max Size: 40 bytes

Default Variable Name where x is the board slot and y is the pin number.
RHSC_x_DRIVERSTATUS RHSC_x_FRESHNESSCOUNT
RHSC_x_TIMESTAMP
RHSC_x_y_COUNTER RHSC_x_y_COUNTER

Description
Driver status - see table above. Freshness counter. Spare Timestamp of last sample from HSC. This is the number of milliseconds since boot. Number of counts since boot (Channel 1) Counts for Channel 2, 3, ..., 8

Modbus Function Codes: 04 to read HSC value @ 1 ... 8 (must read 2 16-bit register pairs per counter)

IPMB_INP (Open Modbus ­ Input Ethernet I/O Board)

DRIVER_NAME:

`IPMB_INP'

DATA_TYPE:

BYTE

DRIVER_PAR1:

Low Byte ­ Function Code (see below) - High byte undefined

DRIVER_PAR2:

IP address - first and second quads.

DRIVER_PAR3:

IP address - third and fourth quads

DRIVER_PAR4:

Modbus unit number.

Function Code: Function Description:

Number of Bytes in Response:

(N=requested elements)

01

Read Coil Status

N / 8

02

Read Input Status

N / 8

03

Read Holding Registers

2 * N

04

Read Input Registers

2 * N

Input Map: Max Size: (2 + requested size) bytes

Offset
0 1 4, ...

Default Variable Name where x is the board slot and y is the pin number.
RIN_x_DRIVERSTATUS RIN_x_FRESHNESSCOUNT

Description
Driver status - see table above. Freshness counter. See function codes for size of responses in bytes above.

I/O Mapping

215

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Output Map: Max Size: 6

Offset
0,1 2,3

Default Variable Name where x is the board slot and y is the pin number.
RIN_x_STARTREGISTER RIN_x_NUMREGISTERS

Description
Modbus Register/Coil start address Number of Registers or Coils.

Note: The fields in the output map are only settable one time. Once a non-zero number is written to Offset 2,3, the request is defined and will start collecting.

IPMB_OUT (Open Modbus ­ Output - Ethernet I/O Board)

DRIVER_NAME:

`IPMB_OUT'

DATA_TYPE:

BYTE

DRIVER_PAR1:

Low Byte ­ Function Code (see below) - High byte undefined

DRIVER_PAR2:

IP address - first and second quads.

DRIVER_PAR3 :

IP address - third and fourth quads

DRIVER_PAR4:

Modbus unit number.

Function Code: Function Description:

0F

Force Multiple Coils

10

Set Multiple Registers

Number of Bytes in Response: (N=requested elements)
N / 8 2 * N

Input Map:

Max Size: 2 bytes

Offset
0 1

Default Variable Name where x is the board slot and y is the pin number.
ROUT_x_DRIVERSTATUS ROUT_x_FRESHNESSCOUNT

Description
Driver status - see table above. Freshness counter.

Output Map:

Max Size: 6 + data size - see above.

Offset
0,1 2,3 4, ...

Default Variable Name where x is the board slot and y is the pin number.
ROUT_x_STARTREGISTER ROUT_x_NUMREGISTERS

Description
Modbus Register/Coil start address Number of Registers or Coils. Data bytes to be output.

216

I/O Mapping

ControlWave Designer Programmer's Handbook D301426X012 August 2020
BB_4RTDI (RTD - Resistance Temperature Device Ethernet I/O Board)

Note: For proper functioning of the RTDs, the Remote I/O Toolkit must be used to set the proper scaling range.

Offset
0 1 2-3 4 5-19 20-23
24-27 28-31 32-35 36-39
40-43 44-47 48-51

DRIVER_NAME:

`BB_4RTDI'

DATA_TYPE:

BYTE

DRIVER_PAR1:

always 0

DRIVER_PAR2:

IP address - first and second quads.

DRIVER_PAR3:

IP address - third and fourth quads

DRIVER_PAR4:

Open Modbus Unit number - used for gateway chaining.

Input Map:

Max Size: 52 bytes

Default Variable Name where x is the board slot and y is the pin number.
RTDDI_x_DRIVERSTATUS RTDDI_x_FRESHNESSCOUNT
RTDDI_x_y_DI
RTDDI_x_y_DI_COUNTER
RTDDI_x_y_DI_COUNTER RTDDI_x_y_DI_COUNTER RTDDI_x_y_DI_COUNTER RTDDI_x_y_AI
RTDDI_x_y_AI RTDDI_x_y_AI RTDDI_x_y_AI

Description
Driver status - see table above. Freshness counter. Spare Current status of DI1 (in bit 0) to DI4 (in bit 4). Spare (for driver consistency) If counter processing is enabled, the number of counts for DI1. A count is registered when the DI transitions from low to high. Counts for DI2 Counts for DI3 Counts for DI4 Value for RTD1 in engineering units (4-byte float REAL). To access the value, define the variable %Idxx. Direct access to %Idxx is not possible. Value for RTD2 Value for RTD3 Value for RTD4

Output Map:

Size: 3 bytes

Offset
0

Default Variable Name where x is the board slot and y is the pin number.
RTDDI_x_ACTIVATECOUNTER

1

RTDDI_x_CLEARCOUNTER

2.0

RTDDI_x_DISPLAYTENTHS

Description
Activate counters. 1 bit per point. Typically specified as %Qby.z, where y is I/O space offset, and z is bit number from 0 to 3. Clear counters. Set values back to 0. 1 bit per point. Convert RTD values to tenths precision. Unit level control. True = tenths (BOOL).

I/O Mapping

217

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Modbus Function Codes:

02 to read DI values @ 1 ... 4 04 to read Counter and AI values @ 1 ... 4 0Fh to set / clear counters @ 1 ... 4

ControlWave I/O Expansion Rack Boards

Common Status Information

The first two bytes of the input map contain status information, which is common to all Expansion Rack boards.

Byte
0 0 0 0

Bit
0 (0x1, 1) 3 (0x8, 8) 4 (0x10, 16) 7 (0x80, 128)

Description
No board is present in the destination rack. Board type does not match the board installed in the rack. Communications lost with the expansion rack. Initial opening of channel to the expansion rack has not been completed.

Driver status for each I/O Expansion Rack board type is stored as an USINT.

ER_DO32 32 Digital Output Pin ControlWave I/O Expansion Rack Board

DRIVER_NAME:

`ER_DO32'

DATA_TYPE:

BYTE

DRIVER_PAR1:

Slot number

DRIVER_PAR2:

IP address - first half

DRIVER_PAR3:

IP address - second half

DRIVER_PAR4:

Specifies redundant board (0 = False, 1 = True)

Input Map:

Max Size: 8 bytes (6 bytes for 16 point)

Offset
0

Default Variable Name where x is the board slot and y is the pin number.
ERDO_x_DRIVERSTATUS

4-7

ERDO_x_y_I

Description
Board Status (see Common Status Information section) DO status as seen by card. 1 bit per value.

218

I/O Mapping

Offset
0 1-3

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Output Map: Size: 4 bytes (2 bytes on 16 pt)

Default Variable Name where x is the board slot and y is the pin number.
ERDO_x_y
ERDO_x_y

Description
Outputs. 1 bit per value. DO1 is LSB; DO8 is MSB. Typically specified as %QXy.z, where y is I/O space offset, and z is bit number from 0 to 7. Repeat for DO9-32. Offset 1 is DO9-16, 2 is DO1724, etc.

ER_DI32 32 Digital Input Pin ControlWave I/O Expansion Rack Board

DRIVER_NAME:

`ER_DI32'

DATA_TYPE:

DWORD (32 bits)

DRIVER_PAR1:

Slot number

DRIVER_PAR2:

IP address - first half

DRIVER_PAR3:

IP address - second half

DRIVER_PAR4:

Specifies redundant board (0 = False, 1 = True)

Input Map:

Max Size: 8 bytes (6 bytes for 16 pt)

Offset
0
4 5 6 7

Default Variable Name where x is the board slot and y is the pin number.
ERDI_x_DRIVERSTATUS
ERDI_x_y ERDI_x_y ERDI_x_y ERDI_x_y

Description
Board status. (See Common Status Information section) Current status of DI1 (in bit 0) to DI8 (in bit 7). Current status of DI9 (in bit 0) to DI16 (in bit 7). Current status of DI17 (in bit 0) to DI24 (in bit 7). Current status of DI25 (in bit 0) to DI32 (in bit 7).

ER_AI16

16 Analog Input Pin ControlWave I/O Expansion Rack Board

DRIVER_NAME:

`ER_AI16'

DATA_TYPE:

DWORD (32 bits)

DRIVER_PAR1:

Slot number

DRIVER_PAR2:

IP address - first half

DRIVER_PAR3:

IP address - second half

DRIVER_PAR4:

Specifies redundant board (0 = False, 1 = True)

Input Map:

Max Size: 72 bytes (40 for 8 point)

I/O Mapping

219

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Due to the amount of time required to process the AI points, it is highly recommended that the input region for this board be sized only as large as needed for the points used by the application.

Also, the I/O fetches should be programmed to only occur as fast as needed (via task association).

Offset
0 2 (bit 1) 4-5
8
12, 16, ...

Default Variable Name where x is the board slot and y is the pin number.
ERAI_x_DRIVERSTATUS ERAI_x_LASTOPERATION ERAI_x_y_OUTRANGE
ERAI_x_y
ERAI_x_y

Description
Board status. (see Common Status Information section) Bit 1 is set if the last conversion operation failed. 1 bit per AI, AI1 is bit 0, offset 1, AI8 is bit 7, offset 1, AI9 is bit 0, offset 2. If set, input is Out-ofrange. Value for AI1 in engineering units (4-byte float REAL). To access the value, define the variable %IDxx. Direct access to %IDxx is not possible. Value for AI2, AI3, ...

Offset
0
4 8, 16, 24, ... 12, 20, 28, ...

Output Map:

Max Size: 128 bytes (64 bytes for 8 point)

To provide consistent scaling values across Application Warm Starts, this I/O region should be marked as `RETAIN'.

Default Variable Name where x is the board slot and y is the pin number.
ERAI_x_y_ZERO
ERAI_x_y_SPAN
ERAI_x_y_ZERO ERAI_x_y_SPAN

Description
Zero for AI1 (4-byte float ­ REAL). To access the value, define the variable %QDxx. This variable can be initialized at declaration. Span for AI1 (4-byte float - REAL). If zero, the AI will be scaled from 0 to 100.0. Zeros for AI2, AI3, ... Spans for AI2, AI3, ...

ER_AO8

8 Analog Output Pin ControlWave I/O Expansion Rack Board

DRIVER_NAME:

`ER_AO8'

DATA_TYPE:

DWORD (32 bits)

DRIVER_PAR1:

Slot number

DRIVER_PAR2:

IP address - first half

DRIVER_PAR3:

IP address - second half

DRIVER_PAR4:

Specifies redundant board (0 = False, 1 = True)

220

I/O Mapping

Offset
0 2 (bit 1) 4 8, 12, ..., 36
40, 44, ..., 68

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Input Map:

Max Size: 72 bytes (Extra space reserved for future expansion up to AO16)

Default Variable Name where x is the board slot and y is the pin number.
ERAO_x_DRIVERSTATUS ERAO_x_LASTOPERATION ERAO_x_y_OUTRANGE ERAO_x_y_ACTUAL
ERAO_x_y_ACTUAL

Description
Board status. (See Common Status Information section) Bit 1 is set if the last conversion operation failed. 1 bit per AO, AO0 is bit 0, AO8 is bit 7. If set, output is Out-of-range. Actual output value for points 1 to 8. If output is out-of-range low the output will be constrained to the points Zero value. If output is 0-or high it will be set to the points Zero+Span value. Output values for points 9 to 16 (To allow for future expansion)

Offset
0
4 8 12, 24, 36, ... 16, 28, 40, ... 20, 32, 44, ... 192
196

Output Map: Max Size: 268 bytes (Extra space reserved for future expansion up to AO16)

Due to the amount of time required to process the AO points, it is highly recommended that the output region for this board be sized only as large as needed for the points used by the application.

Also, the I/O sets should be programmed to only occur as fast as needed (via task association).

To provide consistent scaling values across Application Warm Starts, this I/O region should be marked as `RETAIN'.

Default Variable Name where x is the board slot and y is the pin number.
ERAO_x_y_ZERO
ERAO_x_y_SPAN ERAO_x_y ERAO_x_y_ZERO ERAO_x_y_SPAN ERAO_x_y ERAO_x_y_DEF_VAL
ERAO_x_y_HOLD_LO

Description
Zero for AO1 (4-byte float - REAL). To access the value, define the variable %QDxx. This variable can be initialized at declaration. Span for AO1 (4-byte float). If zero, the AO will be scaled from 0 to 100.0. Value for AO1 (4-byte float). Zeros for AO2, AO3, AO4, etc. Spans for AO2, AO3, AO4, etc. Values for AO2, AO3, AO4, etc. Update Default Values for AO1 - AO16 (4-byte integer - DWORD). To access this value, define the variable %QX192.0. This variable can be initialized at declaration. Setting this bit to TRUE will write the default values for AO1 - AO16 to the AO hardware. After the default values are written to the board this variable will then be set back to FALSE. Hold Last Output (HLO) Control for AO1 - AO16

I/O Mapping

221

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset
200
204, 208, 212, ...

Default Variable Name where x is the

Description

board slot and y is the pin number.

(4-byte integer - DWORD). To access the values,

define variables %QXxxx.x. This variable can be

initialized at declaration. (192.0 for AO1, 192.1

for AO2, ... 193.7 for AO16)

ERAO_x_y_UCO_FLG

User Configured Output (UCO) Control for AO1 -

AO16 (4-byte integer - DWORD). To access the

value, define variables %QXxxx.x. This variable can

be initialized at declaration. (196.0 for AO1, 196.1

for AO2, ... 197.7 for AO16)

ERAO_x_y_UCD_VAL

User Configured Default (UCD) Value for AO1,

AO2, AO3, etc. (4-byte float - REAL). To access

the value, define the variable %QDxxx. These

variables can be initialized at declaration.

If neither Hold Last State or User Configured Output are enabled, for a point, the output

will go to -5% if the unit watchdogs.

If Hold Last State and User Configured Output are both enabled at the same time, for the same point, neither will be the winner. If the unit watchdogs the output will fall back to 5%.

ER_HSC12 12 Channel High Speed Counter ControlWave I/O Expansion Rack Board

DRIVER_NAME:

`ER_HSC12'

DATA_TYPE:

DWORD (32 bits)

DRIVER_PAR1:

Slot number

DRIVER_PAR2:

IP address - first half

DRIVER_PAR3:

IP address - second half

DRIVER_PAR4:

Specifies redundant board (0 = False, 1 = True)

Input Map:

Max Size: 68 bytes (44 bytes for 6 point)

Offset
0 1

Default Variable Name where x is the board slot and y is the pin number.
ERHSC_x_DRIVERSTATUS
ERHSC_x_y_STATE

4

ERHSC_x_TIMESTAMP

8

ERHSC_x_y_COUNTER

12,16,20, ..., 52 ERHSC_x_y_COUNTER

Description
Board status (see Common Status Information section) Input channel state. BOOL Offset 1 Bit 0 is for channel 1, Bit 1 is channel 2, etc. Each bit will reflect the state, either on or off, of the signal on its respective channel. Timestamp of last sample from HSC. This is the number of milliseconds since boot. Number of counts since boot (Channel 1) Counts for Channel 2, 3, 4, ..., 12

222

I/O Mapping

Offset
0
4 8

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Ouput Map:

Max Size: 12 bytes

Default Variable Name where x is the board slot and y is the pin number.
ERHSC_x_y_RESET_COUNT
ERHSC_x_y_FILTER
ERHSC_x_y_HSC_SEL

Description
Reset point counts. BOOL Offset 0, Bit 0 is point 1 ... Offset 1, bit 3 is point 12. Setting a bit to TRUE (1) will reset the count for the point selected. The driver will reset the bit after the count has been reset. 30ms/1ms filter select. Offset 4, Bit 0 represent Channel 1 to select 30ms (FALSE) and 1ms (TRUE) respectively. Offset 4, Bit 1 is Channel 2, Offset 5, Bit 3 is Channel 12. High Speed Counter select. Offset 8, Bit 0 represent Channel 1 to select High Speed Counter (TRUE). Offset 8, Bit 1 is Channel 2, Offset 9, Bit 3 is Channel 12. Setting an HSC select bit to TRUE will override the 30ms/1ms selection for the same channel.

ER_STAT ControlWave I/O Expansion Rack Statistics Board

Note: This is a virtual board; not a physical board in the controller.

Offset
0-1
2-3 4 (bit 0) 4 (bit 1) 4 (bit 2)

DRIVER_NAME:

ER_STAT

DATA_TYPE:

BYTE

DRIVER_PAR1:

N/A

DRIVER_PAR2:

IP address - first half

DRIVER_PAR3:

IP address - second half

DRIVER_PAR4:

Specifies redundant board (0 = False, 1 = True)

Input Map:

728 bytes (from RIO)

Default Variable Name where x is the board slot and y is the pin number.
ERSTAT_x_BOARDSTATUS
ERSTAT_x_BATSTAT ERSTAT_x_HOTCARDSTAT ERSTAT_x_MASTER_IS_B

Description
Board status. Bit 0 - board is not present, Bit 1 Message parse error, Bit 2 ­ Memory allocation error, Bit 3 - Board configuration error, Bit 4 ­ Communications error, Bit 7 - IP channel open in progress. Spare Expanded IO Status. Battery OK Expanded IO Status. Hot card in progress, Expanded IO Status- Is RIO B master?

I/O Mapping

223

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset
4 (bit 3) 4 (bit 4) 5 6 (bit 0)

Default Variable Name where x is the board slot and y is the pin number.
ERSTAT_x_STBYVALID ERSTAT_x_FAILOVERERR
ERSTAT_x_RDN_IO_1_ERR

6 (bit 1) ERSTAT_x_RDN_IO_2_ERR

6 (bit 2) ERSTAT_x_RDN_IO_3_ERR

6 (bit 3) ERSTAT_x_RDN_IO_4_ERR

6 (bit 4) ERSTAT_x_RDN_IO_5_ERR

6 (bit 5) ERSTAT_x_RDN_IO_6_ERR

6 (bit 6) ERSTAT_x_RDN_IO_7_ERR

6 (bit 7) ERSTAT_x_RDN_IO_8_ERR

8-11 12-15

ERSTAT_x_HOTCARDCT ERSTAT_x_DOWNTIMEUSER

16-19

ERSTAT_x_DOWNTIMEACT

20-23 24-27 28-31

ERSTAT_x_WRITECT ERSTAT_x_READCT ERSTAT_x_CONNECTS

32-35 36-41 42-126

ERSTAT_x_HEARTBEAT ERSTAT_x_BDSTR1

127-211 ERSTAT_x_BDSTR2

212-296 ERSTAT_x_BDSTR3

297-381 ERSTAT_x_BDSTR4

382-466 ERSTAT_x_BDSTR5

467-551 ERSTAT_x_BDSTR6

552-636 ERSTAT_x_BDSTR7

Description
Expanded IO Status- Is the Standby RIO valid? Expanded IO Status- Fail-over error Spare Failure, readback error, or mismatch with I/O board in redundant standby unit. Failure, readback error, or mismatch with I/O board in redundant standby unit. Failure, readback error, or mismatch with I/O board in redundant standby unit. Failure, readback error, or mismatch with I/O board in redundant standby unit. Failure, readback error, or mismatch with I/O board in redundant standby unit. Failure, readback error, or mismatch with I/O board in redundant standby unit. Failure, readback error, or mismatch with I/O board in redundant standby unit. Failure, readback error, or mismatch with I/O board in redundant standby unit. Hot card count 32-Bit Count ­ Number of seconds (as configured by the user) that the I/O Expansion Rack can be powered off before the outputs are reset to defaults when the unit is powered back up. 32-Bit Count ­ Number of seconds that the I/O Expansion Rack was powered off on the last power fail. Number of messages written to Expanded IO. Number of update message sent to host. Number of times the Expanded IO has connected to a host (open + close). Number of heartbeat messages sent to a host. Spare Expanded IO local board string information for slot #1. Expanded IO local board string information for slot #2. Expanded IO local board string information for slot #3. Expanded IO local board string information for slot #4. Expanded IO local board string information for slot #5. Expanded IO local board string information for slot #6. Expanded IO local board string information for slot

224

I/O Mapping

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset

Default Variable Name where x is the board slot and y is the pin number.

637-722 ERSTAT_x_BDSTR8

724-727 728-812 813-897 898-982 983-1067 10681152 11531237 1240

ERSTAT_x_REDUNSTAT ERSTAT_x_BDSTR9 ERSTAT_x_BDSTR10 ERSTAT_x_BDSTR11 ERSTAT_x_BDSTR12 ERSTAT_x_BDSTR13
ERSTAT_x_BDSTR14
ERSTAT_x_INPUTVOLTS

Description
#7. Expanded IO local board string information for slot #8. Redundancy status Reserved for possible future use. Reserved for possible future use. Reserved for possible future use. Reserved for possible future use. Reserved for possible future use.
Reserved for possible future use.
Float ­ Reading (in volts) of power-supply input voltage.

Offset 0 1
2-3

Output Map: 4 bytes (to RIO) Default Variable Name where x is the board slot and y is the pin number. ERSTAT_x_FAILOVER_O
ERSTAT_RDN_IOERR_WARN

Description
Bit 0 - Force redundant Expanded IO to become standby unit.
When set TRUE, I/O errors are treated only as warnings. When FALSE, I/O errors disable redundancy.
Spare

ER_TC12 ControlWave I/O Expansion Rack­ 12 Point Thermocouple Board

DRIVER_NAME

`ER_TC12'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

DRIVER_PAR2

First two bytes of Primary IP address

DRIVER_PAR3

Lower two bytes of Primary IP address

DRIVER_PAR4

If Bit 0 is 1, this is a redundant Expansion Rack

Input Map:

Max Size: 56 bytes

Due to the amount of time required to process the thermocouple points, it is highly recommended that this I/O driver be assigned to a task (instead of "No Task"). Care should also be taken in using the I/O board in a task of less than 40ms.

I/O Mapping

225

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset
0 2 (Bit 2) 2 (Bit 3) 4 5 8
12, 16, 20, 24, ... 52

Default Variable Name where x is the board slot and y is the pin number.
ERTC_x_DRIVERSTATUS ERTC_x_CALIBRATE ERTC_x_TIMEOUT ERTC_x_y_OUTRANGE ERTC_x_y_OUTRANGE ERTC_x_y
ERTC_x_y

Description
Board Status. See Common Status Information section. If set indicates invalid calibration data written to the board. If set, indicates that had an error reading or writing to the board. 1 bit per TC, TC1 is bit 0, TC8 is bit 7. If set, input is Out-of-range. 1 bit per TC, TC9 is bit 0, TC12 is bit 3. If set, input is Out-of-range. Value for TC1 in engineering units (4-byte float REAL). To access the value, define the variable AT %IDxx. Direct access to %IDxx is not possible. Value for TC2, TC3, TC4, TC5, TC6... TC12

Output Map: Max Size: 112 bytes

Offset
0
4
8, 16, 24, 32, ... 88 12, 20, 28, 36, ... 92 100
101, 102, 103, 104, ... 111

Default Variable Name where x is the board slot and y is the pin number.
ERTC_x_y_ZERO
ERTC_x_y_SPAN
ERTC_x_y_ZERO ERTC_x_y_ZERO ERTC_x_y_MODE ERTC_x_y_MODE

Description
Zero for TC1 (4-byte float - REAL). To access the value, define the variable AT %QDxx. This variable can be initialized at declaration. Span for TC1 (4-byte float). If zero, the TC will be scaled as in the chart below. If specified, the new value will be ORG_VALUE * Span + Zero. Zeros for TC2, TC3, TC4, to TC12 ­ Example: for C to F, use 32.0 Spans for TC2, TC3, TC4, to TC12 ­ Example for C to F, use 1.8 Point type for TC1; see Thermocouple type codes section for details. Point types for TC2, TC3, TC4, to TC12.

Type Code
0 1 2 3 4 5

Type codes for Thermocouple Points.

Code
B E J K R S

Range
Thermocouple: 100C ­ +1820C Thermocouple: -270C ­ +1000C Thermocouple: -210C ­ +1200C Thermocouple: -270C ­ +1370C Thermocouple: -50C ­ +1720C Thermocouple: -50C ­ +1760C

226

I/O Mapping

Type Code
6 7 8 9 10

Code
T Unused 10MV C N

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Range
Thermocouple: -270C ­ +400C Unused Voltage Inputs: -10 mV to +10 mV (Outputs as 0.0 to 1.0) Thermocouple: 0C ­ +2315C Thermocouple: -270C ­ +1300C

ER_RTD8 - ControlWave I/O Expansion Rack ­ 8 Point Resistance Temperature Device (RTD) Board

DRIVER_NAME

`ER_RTD8'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

DRIVER_PAR2

First two bytes of Primary IP address

DRIVER_PAR3

Lower two bytes of Primary IP address

DRIVER_PAR4

If Bit 0 is 1, this is a redundant Expansion Rack

Input Map:

Max Size: 40 bytes

Due to the amount of time required to process the RTD points, it is highly recommended that this I/O driver be assigned to a task (instead of "No Task"). Care should also be taken in using the I/O board in a task of less than 40ms.

Offset
0 2 (Bit 2) 2 (Bit 3) 3 (Bit 0) 3 (Bit 7) 4 8
12, 16, ...36

Default Variable Name where x is the board slot and y is the pin number.
ERRTD_x_DRIVERSTATUS
ERRTD_x_CALIBRATE
ERRTD_x_TIMEOUT
ERRTD_x_LASTCALBOP ERRTD_x_CALBCMD
ERRTD_x_y_READERR ERRTD_x_y
ERRTD_x_y

Description
Board Status. See Common Status Information section. If set indicates invalid calibration data written to the board. If set, indicates that had an error reading or writing to the board. Set if last calibration or reset operation failed. Calibration Commands Allowed. Until this bit is set, all calibration commands are ignored. RTD Reading Error. Bit 0 is RTD1, Bit 7 is RTD8 RTD1 reading ­ REAL ­ In units of Degrees Centigrade (unless scaled by values in the output map). Readings for RTD2 ... RTD8.

Offset
0

Output Map:

Max Size: 280 bytes

Default Variable Name where x is the board slot and y is the pin number.
ERRTD_x_y_ZERO

Description
Zero for RTD 1(4-byte float - REAL). Example: for

I/O Mapping

227

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset

Default Variable Name where x is the board slot and y is the pin number.

4

ERRTD_x_y_SPAN

8,16,24,32 40,48,56 12,20,28, 36,44,52, 60 64 65,66,67, 68,69 100 101,102 103,104 105,106, 107 120 (Bit 0) *
121 *

ERRTD_x_y_ZERO ERRTD_x_y_SPAN
ERRTD_x_y_MODE ERRTD_x_y_MODE
ERRTD_x_y_RESTORE ERRTD_x_y_OPERATION

124 ** 128 ** 132 ** 136 **
140 (Bit 0) *
141 *

ERRTD_x_y_COEFF_A ERRTD_x_y_COEFF_B ERRTD_x_y_COEFF_R0 ERRTD_x_y_APPLIED
ERRTD_x_y_RESTORE
ERRTD_x_y_OPERATION

144* 148** 152* 156**
.... 260 (Bit 0) *

ERRTD_x_y_COEFF_A ERRTD_x_y_COEFF_B ERRTD_x_y_COEFF_R0 ERRTD_x_y_APPLIED
ERRTD_x_y_RESTORE

Description
C to F, use 32.0. Defaults to 0.0 Span for RTD 1(4-byte float ­ REAL). If zero, RTD will not be scaled. If specified, the scaled value will be ORG_VALUE * Span + Zero. Example for C to F, use 1.8. Zero for RTDs 2-8
Span for RTDs 2-8
NOT USED; RESERVED FOR FUTURE USE NOT USED; RESERVED FOR FUTURE USE
RTD 1 Type RTDs 2-8 Type
If set, restore RTD 1 calibration to Factory Defaults. Will be reset when operation completes. Calibration Operation for RTD 1 ­ SINT 5 RTD Zero (100 Ohms) 6 RTD Span (300 Ohms) 7 RTD Coefficients (A, B, R0) 8 RTD Span (not using 300 Ohms) Coefficient A (RTD 1) Coefficient B (RTD 1) Coefficient R0 (RTD 1) The applied temperature when calibration operation 8 was performed. (RTD 1) If set, restore RTD 2 calibration to Factory Defaults. Will be reset when operation completes. Calibration Operation for RTD 2 ­ SINT 5 RTD Zero (100 Ohms) 6 RTD Span (300 Ohms) 7 RTD Coefficients (A, B, R0) 8 RTD Span (not using 300 Ohms) Coefficient A (RTD 2) Coefficient B (RTD 2) Coefficient R0 (RTD 2) The applied temperature when calibration operation 8 was performed. (RTD 2) ..... If set, restore RTD 8 calibration to Factory

228

I/O Mapping

Offset
261 *
264** 268** 272** 276**

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Default Variable Name where x is the board slot and y is the pin number.
ERRTD_x_y_OPERATION
ERRTD_x_y_COEFF_A ERRTD_x_y_COEFF_B ERRTD_x_y_COEFF_R0 ERRTD_x_y_APPLIED

Description
Defaults. Will be reset when operation completes. Calibration Operation for RTD 8 ­ SINT 5 RTD Zero (100 Ohms) 6 RTD Span (300 Ohms) 7 RTD Coefficients (A, B, R0) 8 RTD Span (not using 300 Ohms) Coefficient A (RTD 8) Coefficient B (RTD 8) Coefficient R0 (RTD 8) The applied temperature when calibration operation 8 was performed. (RTD 8)

* Value written to perform operation. The value will be reset by driver when the operation completes.
** Value is read from the board by the driver. In order to perform calibration operations 7 and 8, the user can overwrite the values; then, issue the calibration command.

Local I/O ­ ControlWave MICRO-series
The following sections describe the local I/O boards supported, and their memory maps. Offset 0 of the input map defines the board status. All boards support bit 0, which is set if the board is not present.

CWM_DO16 ­ ControlWave MICRO 16 pin Digital Output Board

DRIVER_NAME

`CWM_DO16'

DATA_TYPE

BYTE

DRIVER_PAR1

slot number.

Input Map:

Max Size: 6 bytes

Offset
0 4,5

Default Variable Name where x is the board slot and y is the pin number.
DO16_x_BOARDSTATUS DO16_x_y_I

Description
Board status. DO status as seen by card. 1 bit per value.

Offset
0

Output Map:

Size: 5 bytes

Default Variable Name where x is the board slot and y is the pin number.
DO16_x_y

Description
Outputs. 1 bit per value. DO1 is LSB; DO8 is MSB.

I/O Mapping

229

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset

Default Variable Name where x is the board slot and y is the pin number.

1

DO16_x_y

4

DO16_x_LEDSTATUS

Description
Typically specified as %QXy.z, where y is I/O space offset, and z is bit number from 0 to 7. Outputs 9 to 16. Single bit. If bit is set, the diagnostic LEDS for the points are turned off to save power.

CWM_DI16 ­ ControlWave MICRO 16 pin Digital Input Board

DRIVER_NAME

`CWM_DI16'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1 s

lot number.

Input Map:

Max Size: 8 bytes

Offset
0 4 5

Default Variable Name where x is the board slot and y is the pin number
DI16_x_BOARDSTATUS DI16_x_y DI16_x_y

Description
Board status. Current status of DI1 (in bit 0) to DI8 (in bit 7). Current status of DI9 (in bit 0) to DI16 (in bit 7).

Offset
4

Output Map:

Size: 5 bytes

Default Variable Name where x is the board slot and y is the pin number
DI16_x_LEDSTATUS

Description
Single bit. If bit is set, the diagnostic LEDS for the points are turned off to save power.

CWM_MD ­ ControlWave MICRO - Mixed Digital Board 12 Digital Input Pins / 4 Digital Output Pins

DRIVER_NAME

`CWM_MD'

DATA_TYPE

BYTE

DRIVER_PAR1

slot number.

Input Map:

Max Size: 9 bytes

Offset
0 4 5 8

Default Variable Name where x is the board slot and y is the pin number
DIDO_x_BOARDSTATUS DIDO_x_y DIDO_x_y DIDO_x_y_O_I

Description
Board status. Current status of DI1 (in bit 0) to DI8 (in bit 7). Current status of DI9 (in bit 0) to DI12 (in bit 3). DO status as seen by card. 1 bit per value.

230

I/O Mapping

Offset
0 4

Output Map:

Size: 5 bytes

Default Variable Name where x is the board slot and y is the pin number
DIDO_x_y_O

DIDO_x_LEDSTATUS

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Description
Outputs. 1 bit per value. DO1 is LSB; DO4 is MSB. Typically specified as %QXy.z, where y is I/O space offset, and z is bit number from 0 to 3. Single bit. If bit is set, the diagnostic LEDS for the points are turned off to save power.

CWM_AI8 ­ ControlWave MICRO 8 Analog Input Pin Board

DRIVER_NAME

`CWM_AI8'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

Input Map:

Max Size: 40 bytes

Due to the amount of time required to process the AI points, it is highly recommended that the input region for this board be sized only as large as needed for the points used by the application.

Also, the I/O fetches should be programmed to only occur as fast as needed.

Offset
0 (bit 0) 0 (bit 2) 0 (bit 3) 4 8
12, 16, ...

Default Variable Name where x is the board slot and y is the pin number.
AI8_x_y_BOARDSTATUS AI8_x_CALIBRATE
AI8_x_TIMEOUT
AI8_x_y_OUTRANGE AI8_x_y
AI8_x_y

Description
Board status. Bit 0 is set if board is not present. Calibration error. Bit set on error. Indicates a serious hardware failure on the board. Timeout ­ If board timeout occurs, bit set. Indicates a serious hardware failure on the board. 1 bit per AI, AI1 is bit 0, AI8 is bit 7. If set, input is Out-of-range. Value for AI1 in engineering units (4-byte float ­ REAL). To access the value, define the variable AT %IDxx. Direct access to %IDxx is not possible. Value for AI2, AI3, ...

Offset
0 4

Output Map:

Max Size: 64 bytes

Default Variable Name where x is the board slot and y is the pin number.
AI8_x_y_ZERO
AI8_x_y_SPAN

Description
Zero for AI1 (4-byte float - REAL). To access the value, define the variable AT %QDxx. This variable can be initialized at declaration. Span for AI1 (4-byte float). If zero, the AI will be scaled from 0 to 100.0.

I/O Mapping

231

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset
8, 16, 24, ... 12, 20, 28, ... 64, 72, 80, ...

Default Variable Name where x is the board slot and y is the pin number.
AI8_x_y_ZERO AI8_x_y_SPAN AI8_x_y_BOTTOMRANGE

68, 76, 84, ...

AI8_x_y_TOPRANGE

128

AI8_x_y_MODE

Description
Zeros for AI2, AI3, ... Spans for AI2, AI3, ... Bottom end of usable current / voltage range for this input. Specified as a REAL. For example, for a 1-5V input, this value is 1.0. Top end of usable current / voltage range for this input. Specified as a REAL. For example, for a 1-5V input, this value is 5.0. Mode - 1 bit per AI; set TRUE if the point is voltage; FALSE if current.

CWM_AO4 ­ ControlWave MICRO 4 Analog Output Pin Board

DRIVER_NAME

`CWM_AO4'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

Input Map:

Max Size: 24 bytes

Offset
0 (bit 0) 0 (bit 2) 0 (bit 3) 6 8,12,16,20

Default Variable Name where x is the board slot and y is the pin number.
AO4_x_BOARDSTATUS
AO4_x_CALIBRATE
AO4_x_TIMEOUT
AO4_x_y_OUTRANGE
AO4_x_y_ACTUAL

Description
Board status. Bit 0 is set if board is not present; Bit 1 is set if the last conversion operation failed. Calibration error. Bit set on error. Indicates a serious hardware failure on the board. Timeout ­ If board timeout occurs, bit set. Indicates a serious hardware failure on the board. 1 bit per AO, AO0 is bit 0, AO4 is bit 3. If set, output is Out-of-range. Real value of value actually output. Clamped to 0-100% of scale.

Offset
0

Output Map:

Max Size: 48 bytes

Due to the amount of time required to process the AO points, it is highly recommended that the output region for this board be sized only as large as needed for the points used by the application.

Also, the I/O sets could be programmed to only occur as fast as needed.

Default Variable Name where x is the board slot and y is the pin number.
AO4_x_y_ZERO

Description
Zero for AO1 (4-byte float - REAL). To access the value,

232

I/O Mapping

Offset

Default Variable Name where x is the board slot and y is the pin number.

4

AO4_x_y_SPAN

8 12, 24, 36 16, 28, 40 20, 32, 44

AO4_x_y AO4_x_y_ZERO
AO4_x_y_SPAN
AO4_x_y

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Description
define the variable AT %QDxx. This variable can be initialized at declaration. Span for AO1 (4-byte float). If zero, the AO will be scaled from 0 to 100.0. Value for AO1 (4-byte float). Zeros for AO2, AO3, AO4
Spans for AO2, AO3, AO4
Values for AO2, AO3, AO4

CWM_MA ­ ControlWave MICRO - Mixed Analog Board - 6 Analog Input Pin / 2 Analog Output Pin Board

DRIVER_NAME

`CWM_MA'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

Input Map:

Max Size: 40 bytes

Due to the amount of time required to process the AI points, it is highly recommended that the input region for this board be sized only as large as needed for the points used by the application.

Also, the I/O fetches should be programmed to only occur as fast as needed.

Offset
0 (bit 0) 0 (bit 2) 0 (bit 3)
4 6 8
12, 16, ... 32,36

Default Variable Name where x is the board slot and y is the pin number.
AIAO_x_BOARDSTATUS AIAO_x_CALIBRATE AIAO_x_TIMEOUT
AIAO_x_y_OUTRANGE AIAO_x_y_O_OUTRANGE AIAO_x_y
AIAO_x_y AIAO_x_y_O_ACTUAL

Description
Board status. Bit 0 is set if board is not present (or if either Bit 2 or Bit 3 is set). Calibration error. Bit set on error. Indicates a serious hardware failure on the board. Bit 3 is set to indicate that a board data read has timed out. Indicates a serious hardware failure on the board. 1 bit per AI, AI1 is bit 0, AI6 is bit 5. If set, input is Out-of-range. 1 bit per AO, AO0 is bit 0, AO2 is bit 1. If set, output is Out-of-range. Value for AI1 in engineering units (4-byte float REAL). To access the value, define the variable AT %IDxx. Direct access to %IDxx is not possible. Value for AI2, AI3, ... Value actually written to AO ­ clamped to 0-100%.

I/O Mapping

233

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Output Map:

Max Size: 72 bytes

Offset
0

Default Variable Name where x is the board slot and y is the pin number.
AIAO_x_y_ZERO

4

AIAO_x_y_SPAN

8, 16, 24, ... 12, 20, 28, ... 48, 60 52, 64 56, 68

AIAO_x_y_ZERO
AIAO_x_y_SPAN
AIAO_x_y_O_ZERO AIAO_x_y_O_SPAN AIAO_x_y_O

Description
Zero for AI1 (4-byte float - REAL). To access the value, define the variable AT %QDxx. This variable can be initialized at declaration. Span for AI1 (4-byte float). If zero, the AI will be scaled from 0 to 100.0. Zeros for AI2, AI3, ...
Spans for AI2, AI3, ...
Zeros for AO1, AO2 Spans for AO1, AO2 Values for AO1, AO2

CWM_AI6 ­ ControlWave MICRO - 6 Analog Input Pin Board

DRIVER_NAME

`CWM_AI6'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

Input Map:

Max Size: 40 bytes

Due to the amount of time required to process the AI points, it is highly recommended that the input region for this board be sized only as large as needed for the points used by the application.

Also, the I/O fetches should be programmed to only occur as fast as needed.

Offset
0 (bit 0) 0 (bit 2) 0 (bit 3)
4 6 8
12, 16, ... 32 to 36

Default Variable Name where x is the board slot and y is the pin number.
AI6_x_BOARDSTATUS AI6_x_CALIBRATE AI6_x_TIMEOUT
AI6_x_y_OUTRANGE
AI6_x_y
AI6_x_y

Description
Board status. Bit 0 is set if board is not present (or if either Bit 2 or Bit 3 is set); Calibration error. Bit set on error. Indicates a serious hardware failure on the board. Bit 3 is set to indicate that a board data read has timed out. Indicates a serious hardware failure on the board. 1 bit per AI, AI1 is bit 0, AI6 is bit 5. If set, input is Out-of-range. Unused Value for AI1 in engineering units (4-byte float REAL). To access the value, define the variable AT %IDxx. Direct access to %IDxx is not possible. Value for AI2, AI3, ... Unused

234

I/O Mapping

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Output Map:

Max Size: 72 bytes

Offset
0

Default Variable Name where x is the board slot and y is the pin number.
AI6_x_y_ZERO

4

AI6_x_y_SPAN

8, 16, 24, ... 12, 20, 28, ... 48 to 68

AI6_x_y_ZERO AI6_x_y_SPAN

Description
Zero for AI1 (4-byte float - REAL). To access the value, define the variable AT %QDxx. This variable can be initialized at declaration. Span for AI1 (4-byte float). If zero, the AI will be scaled from 0 to 100.0. Zeros for AI2, AI3, ...
Spans for AI2, AI3, ...
Unused

CWM_HSC4 ­ ControlWave MICRO - 4 channel High Speed Counter Board

DRIVER_NAME

`CWM_HSC4'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

Input Map:

Max Size: 24 bytes

Offset 0

Default Variable Name where x is the board slot and y is the pin number. HSC4_x_BOARDSTATUS

Description
Board status. Only bit 0 is currently defined. If set, board is not present.

4

HSC4_x_TIMESTAMP

Timestamp of last sample from HSC. This is the number of milliseconds since boot.

8

HSC4_x_y _COUNTER

Number of counts since boot (Channel 1)

12, 16, HSC4_x_y _COUNTER 20

Counts for Channel 2, 3, 4

Offset
0 2
4

Output Map:

Size: 8 bytes

Default Variable Name where x is the board slot and y is the pin number.
HSC4_x_y _RESET_COUNT HSC4_x_NOINIT

HSC4_x_LEDSTATUS

Description
Counter reset flags, HSC1 (in bit 0) to HSC4 (in bit 3) Bit 1 ­ If set to TRUE, maintain counts across warm start. Single bit. If bit is set, the diagnostic LEDS for the

I/O Mapping

235

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset

Default Variable Name where x is the board slot and y is the pin number.

Description
points are turned off to save power.

CWM_BAT ­ ControlWave MICRO Battery (Voltage) Monitor

DRIVER_NAME

`CWM_BAT'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number should be specified as 0.

Input Map:

Max Size: 8 bytes

Due to the expense of performing the A-to-D conversion for this value, this input should be fetched only when needed.

Offset
0 4

Default Variable Name where x is the board slot and y is the pin number.
BAT_x_STATUS
BAT_x_READING

Description
Board status. Board is always present, therefore is always 0. Value for Input Voltage in engineering units (4-byte float ­ REAL ­ 0 to 32V range). To access the value, define the variable AT %IDxx. Direct access to %IDxx is not possible.

CWM_MIX ­ ControlWave MICRO - 6 DI/O, 4AI, 1AO (optional), 2 HSC - Mixed I/O Board

This card contains the following I/O: DIO 6, AI4, AO1 (optional), and HSC2

DRIVER_NAME

`CWM_MIX'

DATA_TYPE

DWORD

DRIVER_PAR1

slot number.

Input Map:

Max Size: 68 bytes

Offset
0 (bit 0) 0 (bit 2)
0 (bit 3)
4
6 8 10

Default Variable Name where x is the board slot and y is the pin number.
MIX_x_BOARDSTATUS MIX_x_CALIBRATE
MIX_x_TIMEOUT
MIX_x_y_AI_OUTRANGE
MIX_x_y_AO_OUTRANGE MIX_x_y_DI MIX_x_y_DO_I

Description
Board status. Calibration error. Bit set on error. Indicates a serious hardware failure on the board. Timeout ­ If board timeout occurs, bit set. Indicates a serious hardware failure on the board. AI under / over range. One bit per point: AI1 in bit 0, AI4 in bit 3. AO under / over range. AO1 is in bit 0. Current status of DI1 (in bit 0) to DI6 (in bit 5). Read-back of current value for DO1 (in bit 0) to DO6

236

I/O Mapping

Offset
12 16 20

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Default Variable Name where x is the board slot and y is the pin number.
MIX_x_TIMESTAMP
MIX_x_y_COUNTER MIX_x_y_COUNTER

Description
(in bit 5). Timestamp of last sample from HSC. This is the number of milliseconds since boot. Number of counts since boot (Channel 1) Counts for Channel 2

32

MIX_x_y_AI

36, 40, ... MIX_x_y_AI

Value for AI1 in engineering units (4-byte float REAL). To access the value, define the variable AT %IDxx. Direct access to %IDxx is not possible. Value for AI2, AI3, ...

64

MIX_x_y_AO_ACTUAL

Value actually written to AO ­ clamped to 0-100%.

Offset
0
2 4 (Bit 0) 4 (Bit 1) 8
12 16, 24, 32 20, 28, 36 72
76 80

Output Map:

Size: 84 bytes

Default Variable Name where x is the board slot and y is the pin number.
MIX_x_y_DO
MIX_x_y _RESET_COUNT MIX_x_LEDSTATUS MIX_x_NOINIT MIX_x_y_AI_ZERO
MIX_x_y_AI_SPAN MIX_x_y_AI_ZERO

Description
Outputs. 1 bit per value. DO1 is LSB; DO6 is MSB. Typically specified as %QXy.z, where y is I/O space offset, and z is bit number from 0 to 5. Counter reset flags, HSC1 (in bit 0) to HSC2 (in bit 1) Bit 0 - If bit is set, the diagnostic LEDS for the points are turned off to save power. Bit 1 ­ If set to TRUE, maintain counts across warm start. Zero for AI1 (4-byte float - REAL). To access the value, define the variable AT %QDxx. This variable can be initialized at declaration. Span for AI1 (4-byte float). If zero, the AI will be scaled from 0 to 100.0. Zeros for AI2, AI3, AI4

MIX_x_y_AI_SPAN

Spans for AI2, AI3, AI4

MIX_x_y_AO_ZERO
MIX_x_y_AO_SPAN MIX_x_y_AO

Zero for AO1 (4-byte float - REAL). To access the value, define the variable AT %QDxx. This variable can be initialized at declaration. Span for AO1 (4-byte float). If zero, the AO will be scaled from 0 to 100.0. Value for AO1 (4-byte float).

I/O Mapping

237

ControlWave Designer Programmer's Handbook D301426X012 August 2020

CWM_SCB ­ ControlWave EFM System Controller Board

Firmware release 04.20 supports the battery (incoming) voltage reading only. Unless otherwise noted, firmware release 04.30 and newer supports all of the items shown, below.

DRIVER_NAME

`CWM_SCB'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number should be specified as 0.

Input Map:

Max Size: 40 bytes

Offset
0 (Bit 0)
0 (Bit 1) 0 (Bit 2)
0 (Bit 3) 0 (Bit 4)
0 (Bit 5) 0 (Bit 6) 0 (Bit 7)
1 (Bit 0) 3
4
8

Default Variable Name where x = board slot number
SCB_x_BOARDSTATUS
SCB_x_PSRDERR SCB_x_PSRDINITERR
SCB_x_PSRDCOMMERR SCB_x_PSRDNORESET
SCB_x_RTDRDERR SCB_x_BATRDERR SCB_x_ALLOWCALIB
SCB_x_LASTCALBOP SCB_x_BOARDPRESENT
SCB_x_INVOLT
SCB_x_DP

12 16 20
24 26 28 29 30 31 (Bit 0) 32 (Bit 0) 33 (Bit 0) 36

SCB_x_SP SCB_x_RTD SCB_x_TEMP
SCB_x_SENSORID SCB_x_SENORSERIES SCB_x_SENSORTYPE SCB_x_DPRANGE SCB_x_SPRANGE SCB_x_DPENABLE SCB_x_SPENABLE SCB_x_RTDENABLE SCB_x_LASTOPERR

Description
Board status. If SCB is present, will be FALSE; if Micro Power Supply is present, it will be TRUE. Pressure Reading Error. If set, pressure reading is not valid. Pressure Reading ­ Initialization failure ­ no retry performed on this error. Pressure Reading ­ Communications failure ­ will be retried. Pressure Reading ­ Wet End has been changed without power reset. RTD Reading Error. Battery Voltage Reading Error. Calibration Commands Allowed. Until this bit is set, all calibration commands are ignored. Set if last calibration or reset operation failed. I/O board present. See Board Type Table code numbers, later in this section. Value for Input Voltage in engineering units (4-byte float ­ REAL ­ 0 to 32V range). Differential Pressure ­ REAL ­ In units of Inches of Water (inH20) or PSI. The units used depend on the range type of the connected transmitter (see chart below). Static Pressure ­ REAL ­ In units of Pounds per Square Inch (PSI). RTD reading ­ REAL ­ In units of Degrees Centigrade. Estimated Sensor Temperature ­ REAL ­ In units of Degrees Centigrade. Sensor ID (Block Number) ­INT Sensor Series - SINT Sensor Type ­ SINT DP Range Code ­ SINT SP Range Code ­ SINT Differential Pressure Processing is enabled. Static Pressure Processing is enabled. RTD Processing is enabled. DWORD ­ Specific Error for last operation ­ See codes below.

238

I/O Mapping

Offset
40

Default Variable Name where x = board slot number
SCB_x_MSPTEMP

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Description
Not applicable; not used for this platform.

Transmitter types:

Sensor Type

DP Range Code

32 (Differential Pressure)

12

32 (Differential Pressure)

13

32 (Differential Pressure)

14

32 (Differential Pressure)

20

12 (Gauge Pressure)

14

12 (Gauge Pressure)

20

12 (Gauge Pressure)

22

12 (Gauge Pressure)

23

12 (Gauge Pressure)

25

12 (Gauge Pressure)

26

12 (Gauge Pressure)

28

12 (Gauge Pressure)

29

Note: If DP Range Code is < 20, units are InH20, if >= 20, units are psi.

Sensor Type
32 (Differential Pressure) 32 (Differential Pressure) 32 (Differential Pressure) 32 (Differential Pressure)

SP Range Code
1 2 3 4

Range / Units
150 InH20 100 InH20 300 InH20 25 psi 300 InH20 25 psi 100 psi 300 psi 1000 psi 3000 psi 2000 psi 4000 psi
Range / Units
1000 psi 2000 psi 500 psi 4000 psi

Specific Error Codes (this is an addition of the following bit values: 0x00000001 Could not erase MSP Info memory 0x00000002 Could not write MSP Info memory 0x00000004 Checksum failure in Serial EEP. 0x00000008 Flash checksum failure in Sensor. 0x00000010 Flash checksum failure in MSP Info. 0x00000100 DP - Could not initialize the SA. 0x00000200 DP - SA flash checksum error. 0x00000400 DP - Data error after Init done. 0x00000800 DP - Data error during scan. 0x00001000 DP - Data scan error. 0x00010000 SP - Could not initialize the SA. 0x00020000 SP - SA flash checksum error.

I/O Mapping

239

ControlWave Designer Programmer's Handbook D301426X012 August 2020

0x00040000 SP - Data error after Init done.

0x00080000 SP - Data error during scan.

0x00100000 SP - Data scan error.

0x01000000 Could not initialize the ADS.

0x02000000 Data scan error.

0x04000000 RTD out of range.

0x08000000 Temperature calculation error.

Output Map:

Max Size: 28 bytes

Offset

Default Variable Name Description

0 (Bit 0)* 1 (Bit 0)* 2 (Bit 0)* 3 **
8 ** 12 ** 16 *** 20 *** 24 *** 28

where x = board slot

number

SCB_x_RESTOREDP

Restore Factory Calibration Values for Differential Pressure.

SCB_x_RESTORESP

Restore Factory Calibration Values for Static Pressure.

SCB_x_RESTORERTD

Restore Factory Values for RTD.

SCB_x_CALIBOP

Perform Calibration Operation ­ SINT

1

DP Zero

2

DP Span

3

SP Zero

4

SP Span

5

RTD Zero (100 Ohms)

6

RTD Span (300 Ohms)

7

RTD Coefficients (A, B, R0)

8

RTD Span (not using 300 Ohms)

SCB_x_DPSPAN

DP Applied at DP Span Calibration ­ REAL ­ Units of Inches of Water..

SCB_x_SPSPAN

SP Applied at SP Span Calibration ­ REAL ­ Units of Pounds per Square Inch.

SCB_x_RTDA

RTD Coeff ­ A

SCB_x_RTDB

RTD Coeff ­ B

SCB_x_RTDR0

RTD Coeff ­ R0

SCB_x_RTDSPAN

The applied temperature when calibration operation 8 was performed (RTD 8).

* Value is cleared by the driver when the operation completes.

** Value is read from the hardware at startup and after any calibration operation. User changes to this value only can be made when Bit 7 of Offset 0 in the input map is set.

*** Same as **; but, reserved for future expansion.

Note: For any REAL variables, a variable needs to be defined at the proper address; direct access to the memory location via %IDxx is not possible.

240

I/O Mapping

ControlWave Designer Programmer's Handbook D301426X012 August 2020

CWM_HIB ­ ControlWave MICRO ­ HART Interface Board

DRIVER_NAME

`CWM_HIB'

DATA_TYPE

DWORD (32 bits)

DRIVER_PAR1

Slot number

Input Map:

Max Size: 164 bytes

Offset
0 (Bit 0) 0 (Bit 2) 0 (Bit 3)
4, 5 8 12, 16, ...68 72..87

Default Variable Name where x is the board slot and y is the pin number.
HIB_x_BOARDSTATUS HIB_x_CALIBRATE HIB_x_TIMEOUT
HIB_x_y_OUTRANGE HIB_x_y_I HIB_x_y_I HIB_x_y_STATUS

Description
Board status. Bit 0 is set if board is not present. Calibration Error. AI and/or AO calibration data is invalid. Timeout ­ If board timeout occurs, bit set. Indicates a serious hardware failure on the board. 1 bit per Point. If set, input or output is Out-of-range. Value for AI1 in engineering units (4-byte float - REAL). Value for points 2 to 16 USINT per point: 00 = no error 01 = switch set incorrectly for I/O configuration.

Switch errors result from any of the following three error cases:

88-99 100 104, 108, .. 160

HIB_x_y_ACTUAL HIB_x_y_ACTUAL

HART channel configured in software (I/O Configurator) as: Analog Input Analog Output HART Multidrop

Switch SW3 (channel 1) or Switch SW4 (channel 2) incorrectly set to: Output Input Channel(s) set to Output

Note: For multi-drop, both SW3 and SW4 must be set as inputs. Neither can be outputs. Padding ­ Align AO actual at offset = 100 AO - Actual value written to board. (4-byte float - REAL). AO - Actual value for points 2 to 16

Offset
0 4 8..120 12..124

Output Map:

Size:208 bytes

Default Variable Name where x is the board slot and y is the pin number.
HIB_x_y_ZERO HIB_x_y_SPAN HIB_x_y_ZERO HIB_x_y_SPAN

Description
Zero for Point 1 (4-byte float ­ REAL). Span for Point 1 (4-byte float ­ REAL) Zeroes for Points 2 ­ 16 Spans for Points 2 ­ 16

I/O Mapping

241

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset
128

Default Variable Name where x is the board slot and y is the pin number.
HIB_x_y_O

132..188 192..207

HIB_x_y_O HIB_x_y_TYPE

Description
AO value to be written for point 1. Ignored for nonAO point types. AO value for points 2 ­ 16 USINT per point. Indicates how the point is to be configured:
0 = Unconfigured 1 = AI 2 = AO 3 = HART Multidrop 4 = BBTI. NOTE: AI and AO modes allow HART point to point communications. Setting the configuration to a valid non-zero value will lock the channel to that configuration.

Local I/O ­ ControlWave GFC-CL and ControlWave XFC
The following sections describe the local I/O boards supported, and their memory maps. Offset 0 of the input map defines the board status. All boards support bit 0, which is set if the board is not present.

CWM_RTU - Mixed I/O board
This card contains the following I/O: DIO 6 (previously 4), AI3, AO1, HSC2, Battery Voltage, RTD, and Wet-End interface.
Notes:  Due to the design of the SPI interface connecting the CPU to the I/O board, the I/O can
only be read / written at one second intervals.  The GFC and XFC share this I/O map. Points for which there is no physical hardware will
not function (and a status is provided to indicate which I/O sub-system is present).  Two versions of this board have been produced. The main difference between them is
that the original board (P/N 400-075-00) supported 4 DIO, whereas the newer board (P/N 400-132-00) supports 6 DIO.

DRIVER_NAME DATA_TYPE DRIVER_PAR1 Input Map:

`CWM_RTU' DWORD slot number ­ specify as 0. Max Size: 136 bytes

242

I/O Mapping

Offset
0 (Bit 0)
0 (Bit 2) 0 (Bit 3) 1 (Bit 1) 1 (Bit 2)
1 (Bit 3) 1 (Bit 4)
1 (Bit 5) 1 (Bit 6) 1 (Bit 7)
2 (Bit 0) 3
4 6 8
10
12
16 20 32
36, 40 64 80 100
104
108 112 116
120 122 124 125

Default Variable Name where x = board slot number
MIX_x_BOARDSTATUS
MIX_x_CALIBRATE MIX_x_TIMEOUT MIX_x_PSRDERR MIX_x_PSRDINITERR
MIX_x_PSRDCOMMERR MIX_x_PSRDNORESET
MIX_x_RTDRDERR MIX_x_BATRDERR MIX_x_ALLOWCALIB
MIX_x_LASTCALBOP MIX_x_BOARDPRESENT
MIX_x_AI_OUTRANGE MIX_x_y_AO_OUTRANGE MIX_x_1_DI, MIX_x_2_DI
MIX_x_1_DO_I MIX_x_2_DO_I
MIX_x_TIMESTAMP
MIX_x_1_COUNTER MIX_x_2_COUNTER MIX_x_1_AI
MIX_x_2_AI, MIX_x_3_AI MIX_x_y_AO_ACTUAL MIX_x_1_STATE, MIX_x_2_STATE MIX_x_INVOLT
MIX_x_DP
MIX_x_SP MIX_x_RTD MIX_x_TEMP
MIX_x_SENSORID MIX_x_SENORSERIES MIX_x_SENSORTYPE MIX_x_DPRANGE

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Description
Board status. If this SCB is present, status is FALSE; TRUE indicates that the board is not plugged in. Calibration Error. AI and/or AO calibration data is invalid. Timeout occurred communicating with I/O board. Pressure Reading Error. If set, pressure reading is not valid. Pressure Reading ­ Initialization failure ­ no retry performed on this error. Pressure Reading ­ Communications failure ­ will be retried. Pressure Reading ­ Wet End has been changed without power reset. RTD Reading Error. Battery Voltage Reading Error. Calibration Commands Allowed. Until this bit is set, all calibration commands are ignored. Set if last calibration or reset operation failed. I/O board present. See Board Type Table code numbers, later in this section. AI under / over range. One bit per point: AI1 in bit 0, AI3 in bit 2. AO under / over range. AO1 is in bit 0. Current status of DI1 (in bit 0) to DI6 (in bit 5) NOTE: Older boards only had DI1 and DI2 (bits 0 and 1). Read-back of current value for DO1 (in bit 0) to DO4 (in bit 3). NOTE: Older boards only had DO1 and DO2 (bits 0 and 1). Timestamp of last sample from HSC. This is the number of Milliseconds since boot. Number of counts since boot (Channel 1) Counts for Channel 2 Value for AI1 in engineering units (4-byte float - REAL). To access the value, define the variable AT %IDxx. Direct access to %IDxx is not possible. Value for AI2, AI3 Value actually written to AO ­ clamped to 0-100%. Current status of HSC1 (in bit 0) to HSC2 (in bit 1). Value for Input Voltage in engineering units (4-byte float ­ REAL ­ 0 to 32V range). Differential Pressure ­ REAL ­ In units of Inches of Water (inH20) or PSI. The units used depend on the range type of the connected transmitter (see chart below). Static Pressure ­ REAL ­ In units of Pounds per Square Inch. RTD reading ­ REAL ­ In units of Degrees Centigrade. Estimated Sensor Temperature ­ REAL ­ In units of Degrees Centigrade. Sensor ID (Block Number) ­INT Sensor Series ­ SINT Sensor Type ­ SINT DP Range Code ­ SINT

I/O Mapping

243

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset
126 127 (Bit 0) 128 (Bit 0) 129 (Bit 0) 132 136
140

Default Variable Name where x = board slot number
MIX_x_SPRANGE MIX_x_DPENABLE MIX_x_SPENABLE MIX_x_RTDENABLE MIX_x_LASTOPERR MIX_x_ALTERVOLT
MIX_x_MSPTEMPT

Description
SP Range Code ­ SINT Differential Pressure Processing is enabled. Static Pressure Processing is enabled. RTD Processing is enabled. DWORD ­ Specific Error for last operation ­ See codes below. This is the alternate input voltage. (For platforms that support alternate voltage input.) REAL ­ Estimated Temperature of the MSP on the CPU board ­ this is used (by the MSP) to control the battery charging circuit.

Board Type
1 2 3 4 1 3 4 5 6 7 8 9 A B C D

Board Type Code:
Device ID
4 (GFC) 4 4 4 7 (3820 XFC) 7 7 7 7 9 (Express ­ CPU) 9 A (Express ­ I/O) A A 7 (3820 XFC) 7

Description
2DI, 2DO, 2HSC, 6 volt 2DI, 2DO, 2HSC, 3AI, 6 volt 2DI, 2DO, 2HSC, 3AI, 1AO, 12 volt 2DI, 2DO, 2HSC, 12 volt 2DI, 2DO, 2HSC 2DI, 2DO, 2HSC, 3AI, 1AO None 2DI, 4DO, 2HSC 2DI, 4DO, 2HSC, 3AI, 1AO 2HSC, Wet End, RTD, Battery 2HSC, Battery 2DIO, 4DI, 2DO, 2HSC 2DIO, 4DI, 2DO, 2HSC, 3AI 2DIO, 4DI, 2DO, 2HSC, 3AI, 1AO 2DI, 4DIO, 2HSC 2DI, 4DIO, 2HSC, 3AI, 1AO

Transmitter types:
Sensor Type
32 (Differential Pressure) 32 (Differential Pressure) 32 (Differential Pressure) 32 (Differential Pressure) 12 (Gauge Pressure) 12 (Gauge Pressure) 12 (Gauge Pressure) 12 (Gauge Pressure) 12 (Gauge Pressure) 12 (Gauge Pressure) 12 (Gauge Pressure) 12 (Gauge Pressure)

DP Range Code
12 13 14 20 14 20 22 23 25 26 28 29

Range / Units
150 InH20 100 InH20 300 InH20 25 psi 300 InH20 25 psi 100 psi 300 psi 1000 psi 3000 psi 2000 psi 4000 psi

244

I/O Mapping

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Note: If DP Range Code is < 20, units are InH20, if >= 20, units are psi.

Sensor Type
32 (Differential Pressure) 32 (Differential Pressure) 32 (Differential Pressure) 32 (Differential Pressure)

SP Range Code
1 2 3 4

Range / Units
1000 psi 2000 psi 500 psi 4000 psi

Specific Error Codes (this is an addition of the following bit values: 0x00000001 Could not erase MSP Info memory 0x00000002 Could not write MSP Info memory 0x00000004 Checksum failure in Serial EEP. 0x00000008 Flash checksum failure in Sensor. 0x00000010 Flash checksum failure in MSP Info. 0x00000100 DP - Could not initialize the SA. 0x00000200 DP - SA flash checksum error. 0x00000400 DP - Data error after Init done. 0x00000800 DP - Data error during scan. 0x00001000 DP - Data scan error. 0x00010000 SP - Could not initialize the SA. 0x00020000 SP - SA flash checksum error. 0x00040000 SP - Data error after Init done. 0x00080000 SP - Data error during scan. 0x00100000 SP - Data scan error. 0x01000000 Could not initialize the ADS. 0x02000000 Data scan error. 0x04000000 RTD out of range. 0x08000000 Temperature calculation error.

Offset
0

Output Map: Size: 152 bytes

Default Variable Name where x = board slot number y=point number
MIX_x_1_DO, MIX_x_2_DO, MIX_x_3_DO, MIX_x_4_DO, MIX_x_5_DO, MIX_x_6_DO

Description
Outputs. 1 bit per value. DO1 is LSB; DO6 is MSB. Typically specified as %QXy.z, where y is I/O space offset, and z is bit number from 0 to 5.

I/O Mapping

245

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset
2
4 6 8 12 16, 24 20, 28 72 76 80 120 (Bit 0)* 121 (Bit 0)* 122 (Bit 0)* 123 **
128 ** 132 ** 136 *** 140 *** 144 *** 148

Default Variable Name where x = board slot number y=point number
MIX_x_y_RESET COUNT
MIX_x_NOINIT MIX_x_y_HSC_SEL
MIX_x_1_AI_ZERO
MIX_x_1_AI_SPAN
MIX_x_2_AI_ZERO, MIX_x_3_AI_ZERO MIX_x_2_AI_SPAN, MIX_x_3_AI_SPAN MIX_x_1_AO_ZERO
MIX_x_1_AO_SPAN
MIX_x_1_AO MIX_x_RESTOREDP

Description
HSC 1 = Bit 0, HSC2 = Bit 1 TRUE = Reset counts to 0 after a warm start; FALSE= do NOT reset counts (default). Bit 1. When set TRUE, board is not re-initialized. 1 ms filter select: HSC 1 = Bit 0, HSC2 = Bit 1. Bit set TRUE = 1 ms filter, FALSE=10K Hz counter, default = FALSE. Zero for AI1 (4-byte float - REAL). To access the value, define the variable AT %QDxx. This variable can be initialized at declaration. Span for AI1 (4-byte float). If zero, the AI will be scaled from 0 to 100.0. Zeros for AI2, AI3 Spans for AI2, AI3 Zero for AO1 (4-byte float - REAL). To access the value, define the variable AT %QDxx. This variable can be initialized at declaration. Span for AO1 (4-byte float). If zero, the AO will be scaled from 0 to 100.0. Value for AO1 (4-byte float). Restore Factory Calibration Values for Differential Pressure.

MIX_x_RESTORESP

Restore Factory Calibration Values for Static Pressure.

MIX_x_RESTORERTD

Restore Factory Values for RTD.

MIX_x_CALIBOP

Perform Calibration Operation ­ SINT

1

DP Zero

2

DP Span

3

SP Zero

4

SP Span

5

RTD Zero (100 Ohms)

6

RTD Span (300 Ohms)

7

RTD Coefficients (A, B, R0)

8

RTD Span (not using 300 Ohms)

MIX_x_DPSPAN

DP Applied at DP Span Calibration ­ REAL ­ Units of Inches of

Water..

MIX_x_SPSPAN

SP Applied at SP Span Calibration ­ REAL ­ Units of Pounds per

Square Inch.

MIX_x_RTDA

RTD Coeff ­ A

MIX_x_RTDB

RTD Coeff ­ B

MIX_x_RTDR0

RTD Coeff ­ R0

MIX_x_RTDSPAN

The applied temperature when calibration operation 8 was

performed. (RTD 8)

* Value is cleared by the driver when the operation completes.

** Value is read from the hardware at startup and after any calibration operation. User changes to this value only can be made when Bit 7 of Offset 0 in the input map is set.

246

I/O Mapping

ControlWave Designer Programmer's Handbook D301426X012 August 2020
*** Same as **; but, reserved for future expansion.
Note: For any REAL variables, a variable needs to be defined at the proper address; direct access to the memory location via %IDxx is not possible.

Notes for Configuring DI/DO Points on the CWM_RTU board

For This I./O Point:
DI1 DI2 DI3/DO1 is used as a DI DI3/DO1 is used as a DO DI4/DO2 is used as a DI DI4/DO2 is used as a DO DI5/DO3 is used as a DI DI5/DO3 is used as a DO DI6/DO4 is used as a DI DI6/DO4 is used as a DO

Configure this Digital Pin in I/O Configurator:
PIN 1: PIN 2 PIN 3

Default Variable Notes: Name:

MIX_1_1_DI MIX_1_2_DI MIX_1_3_DI

Fixed input ­ always present Fixed input ­ always present When used, do NOT use PIN13.

PIN 13

MIX_1_1_DO

When used, do NOT use PIN3.*

PIN 4

MIX_1_4_DI

When used, do NOT use PIN14.

PIN 14

MIX_1_2_DO

When used, do NOT use PIN4.*

PIN 5

MIX_1_5_DI

When used, do NOT use PIN15.

PIN 15

MIX_1_3_DO

When used, do NOT use PIN5.*

PIN 6

MIX_1_6_DI

When used, do NOT use PIN16.

PIN 16

MIX_1_4_DO

When used, do NOT use PIN6.*

Note: Pins 7 through 12 are unused on this platform.

.* Advanced users may optionally read the DI pin, which will be `TRUE' when the DO is ON; and `FALSE' when the DI is OFF. Users should never physically wire a point as a DI and then attempt to drive the DO pin, however, as this will override the incoming DI value.

I/O Mapping

247

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Local I/O ­ ControlWave Express and ControlWave GFC

CWM_ECPU High Speed Counter/ RTD/ Wet End Interface Board

This card contains the following I/O:

HSC2, Battery Voltage, RTD, and Wet-End interface.

Offset
0 (Bit 0)
1 (Bit 1) 1 (Bit 2)
1 (Bit 3) 1 (Bit 4)
1 (Bit 5) 1 (Bit 6) 1 (Bit 7)
2 (Bit 0) 3
12
16 20 80 100
104
108

Note: Due to the design of the SPI interface connecting the CPU to the I/O board, the I/O can only be read / written at one second intervals.

DRIVER_NAME

`CWM_ECPU'

DATA_TYPE

DWORD

DRIVER_PAR1

slot number ­ not used, specify as 0.

Input Map:

Max Size: 144 bytes

Default Variable Name where x = board slot number
ECPU_ x _BOARDSTATUS
ECPU_ x_PSRDERR ECPU_x_PSRDINITERR
ECPU_x_PSRDCOMMERR ECPU_x_PSRDNORESET
ECPU_x_RTDRDERR ECPU_x_BATRDERR ECPU_x_ALLOWCALIB
ECPU_x_LASTCALBOP ECPU_x_BOARDPRESENT
ECPU_x_TIMESTAMP
ECPU_x_1_COUNTER ECPU_x_2_COUNTER ECPU_x_1_STATE ECPU_x_INVOLT
ECPU_x_DP
ECPU_x_SP

Description
Board status. If this "board" is present, will be FALSE; TRUE indicates that the MSP on the CPU board is not functioning. Pressure Reading Error. If set, pressure reading is not valid. Pressure Reading ­ Initialization failure ­ no retry performed on this error. Pressure Reading ­ Communications failure ­ will be retried. Pressure Reading ­ Wet End has been changed without power reset. RTD Reading Error. Battery Voltage Reading Error. Calibration Commands Allowed. Until this bit is set, all calibration commands are ignored. Set if last calibration or reset operation failed. I/O board present.
7 ­ 2HSC, Wet End, RTD, Battery 8 ­ 2HSC, Battery. Timestamp of last sample from HSC. This is the number of Milliseconds since boot. Number of counts since COLD start or clear (Channel 1) Counts for Channel 2 Current status of HSC1 (in bit 0) to HSC2 (in bit 1). Value for Input Voltage in engineering units (4-byte float ­ REAL ­ 0 to 32V range). Differential Pressure ­ REAL ­ In units of Inches of Water (inH20) or PSI. The units used depend on the range type of the connected transmitter (see chart below). Static Pressure ­ REAL ­ In units of Pounds per Square Inch.

248

I/O Mapping

Offset

Default Variable Name where x = board slot number

112

ECPU_x_RTD

116

ECPU_x_TEMP

120

ECPU_x_SENSORID

122

ECPU_x_SENORSERIES

124 125 126 127 (Bit 0)

ECPU_x_SENSORTYPE ECPU_x_DPRANGE ECPU_x_SPRANGE ECPU_x_DPENABLE

128 (Bit 0) ECPU_x_SPENABLE

129 (Bit 0) 132 136

ECPU_x_RTDENABLE ECPU_x_LASTOPERR ECPU_x_ALTERVOLT

140

ECPU_x_MSPTEMP

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Description
RTD reading ­ REAL ­ In units of Degrees Centigrade. Estimated Sensor Temperature ­ REAL ­ In units of Degrees Centigrade. Sensor ID (Block Number) ­UINT
Sensor Series ­ SINT
Sensor Type ­ SINT DP Range Code ­ SINT SP Range Code ­ SINT Differential Pressure Processing is enabled.
Static Pressure Processing is enabled.
RTD Processing is enabled. DWORD ­ Specific Error for last operation ­ See codes below. REAL ­ Voltage at secondary battery input. Not supported, will always be 0. REAL ­ Estimated Temperature of the MSP on the CPU board ­ the MSP uses this to control the battery charging circuit.

Transmitter types:

Sensor Type

DP Range Code

Range / Units

32 (Differential Pressure)

12

150 InH20

32 (Differential Pressure)

13

100 InH20

32 (Differential Pressure)

14

300 InH20

32 (Differential Pressure)

20

25 PSI

12 (Gauge Pressure)

14

300 InH20

12 (Gauge Pressure)

20

25 PSI

12 (Gauge Pressure)

22

100 PSI

12 (Gauge Pressure)

23

300 PSI

12 (Gauge Pressure)

25

1000 PSI

12 (Gauge Pressure)

28

2000 PSI

Note: If DP Range Code is < 20, units are InH20, if >= 20, units are PSI.

Specific Error Codes (this is an addition of the following bit values:

0x00000001

Could not erase MSP Info memory

0x00000002

Could not write MSP Info memory

0x00000004

Checksum failure in Serial EEP.

I/O Mapping

249

ControlWave Designer Programmer's Handbook D301426X012 August 2020
0x00000008 0x00000010 0x00000100 0x00000200 0x00000400 0x00000800 0x00001000 0x00010000 0x00020000 0x00040000 0x00080000 0x00100000 0x01000000 0x02000000 0x04000000 0x08000000

Flash checksum failure in Sensor. Flash checksum failure in MSP Info. DP - Could not initialize the SA. DP ­ SA flash checksum error. DP - Data error after Init done. DP - Data error during scan. DP - Data scan error. SP - Could not initialize the SA. SP - SA flash checksum error. SP - Data error after Init done. SP - Data error during scan. SP - Data scan error. Could not initialize the ADS. Data scan error. RTD out of range. Temperature calculation error.

Offset
2
4.1
120 (Bit 0)* 121 (Bit 0)* 122 (Bit 0)* 123 **

Output Map:

Size: 148 bytes

Default Variable Name where x = board slot number
ECPU_x_1_RESET_COUNT ECPU_x_NOINIT
ECPU_x_RESTOREDP

Description
HSC reset flags: 1 bit per point. HSC1 is LSB (bit 0) , HSC2 is MSB (bit1) Retain HSC values on Warm Start. If variable is set, the HSC counts will be maintained across an application WARM start. If clear, HSC counts will be cleared on both Cold and Warm starts. Restore Factory Calibration Values for Differential Pressure.

ECPU_x_RESTORESP

Restore Factory Calibration Values for Static Pressure.

ECPU_x_RESTORERTD

Restore Factory Values for RTD.

ECPU_x_CALIBOP

Perform Calibration Operation ­ SINT

1

DP Zero

2

DP Span

3

SP Zero

4

SP Span

5

RTD Zero (100 Ohms)

6

RTD Span (300 Ohms)

250

I/O Mapping

Offset

Default Variable Name where x = board slot number

128 ** ECPU_x_DPSPAN 132 ** ECPU_x_SPSPAN 136 *** ECPU_x_RTDA

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Description

7

RTD Coefficients ­ Update

8

RTD Span (not using 300 Ohms)

DP Applied at DP Span Calibration ­ REAL ­ Units of Inches of

Water.

SP Applied at SP Span Calibration ­ REAL ­ Units of Pounds per

Square Inch.

RTD Coeff ­ A

140 *** ECPU_x_RTDB

RTD Coeff ­ B

144 *** 148

ECPU_x_RTDR0

RTD Coeff ­ R0

ECPU_x_RTDSPAN

The applied temperature when calibration operation 8 was

performed. (RTD 8)

* The driver clears value when the operation completes.

** Value is read from the hardware at startup and after any calibration operation. User changes to this value only can be made when Bit 7 of Offset 0 in the input map is set.

*** Same as **; but, reserved for future expansion.

Note: For any REAL variables, a variable needs to be defined at the proper address; direct access to the memory location via %IDxx is not possible.

CWM_EIO ­ Mixed I/O Board
This card contains the following I/O:

DIO2, DI4, DO2, HSC2, AI3 (Opt), AO1 (Opt).

Note: The I/O on this board may be read / written at rates up to 20 times per second (50 Millisecond intervals).

Offset
0 (Bit 0)

DRIVER_NAME

`CWM_EIO'

DATA_TYPE

DWORD

DRIVER_PAR1

slot number ­ not used ­ specify as 0.

Input Map:

Max Size: 120 bytes

Default Variable Name where x = board slot number
EIO_x_BOARDSTATUS

Description
Board status. If this I/O board is present, will be FALSE; TRUE indicates that the board is not plugged in.

I/O Mapping

251

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset
0 (Bit 2) 0 (Bit 3) 3

Default Variable Name where x = board slot number
EIO_x_CALIBRATE EIO_x_TIMEOUT EIO_x_BOARDPRESENT

4

EIO_x_1_AI_OUTRANGE

6

EIO_x_1_AO_OUTRANGE

8

EIO_x_1_DI

EIO_x_2_DI

EIO_x_3_DI

EIO_x_4_DI

Description
Calibration Error. AI and/or AO calibration data is invalid. Timeout occurred communicating with I/O board. I/O board present. 9 ­ 2DIO, 4DI, 2DO, 2HSC
10 ­ 2DIO, 4DI, 2DO, 2HSC, 3AI. 11 ­ 2DIO, 4DI, 2DO, 2HSC, 3AI, 1AO AI under / over range. One bit per point: AI1 in bit 0, AI3 in bit 2. AO under / over range. AO1 is in bit 0. Current status of DI1 (in bit 0) to DI4 (in bit 3). DIO1 as DI (in bit 4), DIO2 as DI (in bit5)

10

EIO_x_1_DO_I

EIO_x_2_DO_I

12

EIO_x_TIMESTAMP

16

EIO_x_1_COUNTER

20

EIO_x_2_COUNTER

32

EIO_x_1_AI

36, 40
64 80

EIO_x_2_AI EIO_x_3_AI EIO_x_1_AO_ACTUAL EIO_x_1_STATE

Read-back of current value for DO1 (in bit 0) to DO2 (in bit 1). DIO1 as DO (in bit 2), DIO2 as DO (in bit 3). Timestamp of last sample from HSC. This is the number of milliseconds since boot. Number of counts since COLD start or clear (Channel 1) Counts for Channel 2 Value for AI1 in engineering units (4-byte float - REAL). To access the value, define the variable AT %IDxx. Direct access to %IDxx is not possible. Value for AI2, AI3
Value actually written to AO1­ clamped to 0-100%. Current status of HSC1 (in bit 0) to HSC2 (in bit 1).

Offset
0
2 4.1
8 12 16, 24 20, 28

Output Map: Default Variable Name where x = board slot number
EIO_x_1_DO EIO_x_2_DO
EIO_x_1_RESET_COUNT
EIO_x_NOINIT
EIO_x_1_AI_ZERO
EIO_x_1_AI_SPAN
EIO_x_2_AI_ZERO EIO_x_3_AI_ZERO EIO_x_2_AI_SPAN EIO_x_3_AI_SPAN

Size: 84 bytes
Description
Outputs. 1 bit per value. DO1 is bit 0; DO2 is bit 1, DIO1 as DO is bit2, DIO2 as DO is bit3. Typically specified as %QXy.z, where y is I/O space offset, and z is bit number from 0 to 3. HSC reset flags: 1 bit per point. HSC1 is LSB (bit 0) , HSC2 is MSB (bit 1) Retain HSC values on Warm Start. If variable is set, the HSC counts will be maintained across an application WARM start. If clear, HSC counts will be cleared on both Cold and Warm starts. Zero for AI1 (4-byte float - REAL). To access the value, define the variable AT %QDxx. This variable can be initialized at declaration. Span for AI1 (4-byte float). If zero, the AI will be scaled from 0 to 100.0. Zeros for AI2, AI3
Spans for AI2, AI3

252

I/O Mapping

Offset
72 76 80

Default Variable Name where x = board slot number
EIO_x_1_AO_ZERO
EIO_x_1_AI_SPAN
EIO_x_1_AO

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Description
Zero for AO1 (4-byte float - REAL). To access the value, define the variable AT %QDxx. This variable can be initialized at declaration. Span for AO1 (4-byte float). If zero, the AO will be scaled from 0 to 100.0. Value for AO1 (4-byte float).

CWM_TC6 ­ ControlWave Micro ­ 6-point Thermocouple board

DRIVER_NAME

`CWM_TC6'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

Input Map:

Max Size: 32 bytes

Due to the amount of time required to process the thermocouple points, it is highly recommended that this I/O driver be assigned to a task (instead of "No Task"). Care should also be taken in using the I/O board in a task of less than 40ms.

Offset
0 (Bit 0) 0 (Bit 2) 0 (Bit 3) 4 8
12, 16, 20, 24, 28

Default Variable Name where x is the board slot and y is the pin number.
TC6_x_DRIVERSTATUS TC6_x_CALIBRATE
TC6_x_TIMEOUT
TC6_x_y_OUTRANGE
TC6_x_y
TC6_x_y

Description
If set, the board is not present. If set indicates invalid calibration data written to the board. If set, indicates that had an error reading or writing to the board. 1 bit per TC, TC1 is bit 0, TC6 is bit 5. If set, input is out-of-range. Value for TC1 in engineering units (4-byte float REAL). To access the value, define the variable AT %IDxx. Direct access to %IDxx is not possible. Value for TC2, TC3, TC4, TC5, TC6

Offset
0
4 8, 16, 24,

Output Map:

Max Size: 70 bytes

Default Variable Name where x is the board slot and y is the pin number.
TC6_x_y_ZERO
TC6_x_y_SPAN
TC6_x_y_ZERO

Description
Zero for TC1 (4-byte float - REAL). To access the value, define the variable AT %QDxx. This variable can be initialized at declaration. Span for TC1 (4-byte float). If zero, the TC will be scaled as in the chart below. If specified, the new value will be ORG_VALUE * Span + Zero. Zeros for TC2, TC3, TC4, to TC6 ­ Example: for C to

I/O Mapping

253

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset
32, 40 12, 20, 28, 36, 44 64
65, 66, 67, 68, 69

Default Variable Name where x is the board slot and y is the pin number.
TC6_x_y_SPAN TC6_x_y_MODE TC6_x_y_MODE

Description
F, use 32.0 Spans for TC2, TC3, TC4, to TC6 ­ Example for C to F, use 1.8 Point type for TC1; see Thermocouple type codes section for details. Point types for TC2, TC3, TC4, TC5, and TC6.

Type codes for Thermocouple Points.

Type Code
0 1 2 3 4 5 6 7 8
9 10

Code
B E J K R S T Unused 10MV
C N

Range
Thermocouple: 100C ­ +1820C Thermocouple: -270C ­ +1000C Thermocouple: -210C ­ +1200C Thermocouple: -270C ­ +1370C Thermocouple: -50C ­ +1720C Thermocouple: -50C ­ +1760C Thermocouple: -270C ­ +400C Unused Voltage Inputs: -10 mV to +10 mV (Outputs as 0.0 to 1.0) Thermocouple: 0C ­ +2315C Thermocouple: -270C ­ +1300C

CWM_RTD4 ­ ControlWave Micro ­ 4 Point Resistance Temperature Device (RTD) Board

DRIVER_NAME

`CWM_RTD4'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

Input Map:

Max Size: 24 bytes

Due to the amount of time required to process the RTD points, it is highly recommended that this I/O driver be assigned to a task (instead of "No Task"). Care should also be taken in using the I/O board in a task of less than 40ms.

Offset
0 (Bit 0) 0 (Bit 2)
0 (Bit 3)

Default Variable Name where x is the board slot and y is the pin number.
RTD4_x_BOARDSTATUS RTD4_x_CALIBRATE
RTD4_x_TIMEOUT

Description
If set, the board is not present. If set indicates invalid calibration data written to the board. If set, indicates that had an error reading or writing

254

I/O Mapping

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset
1 (Bit 0) 1 (Bit 7) 4 8
12, 16, ...20

Default Variable Name where x is the board slot and y is the pin number.
RTD4_x_LASTCALBOP RTD4_x_CALBCMD
RTD4_x_y_READERR RTD4_x_y
RTD4_x_y

Description
to the board. Set if last calibration or reset operation failed. Calibration Commands Allowed. Until this bit is set, all calibration commands are ignored. RTD Reading Error. Bit 0 is RTD1, Bit 3 is RTD4 RTD1 reading ­ REAL ­ In units of Degrees Centigrade (unless scaled by values in the output map). Readings for RTD2 ... RTD4.

Offset
0 4
8,16,24,32 40,48,56 12,20,28, 36,44,52, 60 64 65,66,67, 68,69 100 120 (Bit 0) *
121 *
124** 128** 132** 136** 140 (Bit 0) *
141 *

Output Map:

Max Size: 200 bytes

Default Variable Name where x is the board slot and y is the pin number.
RTD4_x_y_ZERO RTD4_x_y_SPAN
RTD4_x_y_ZERO

Description
Zero for RTD 1(4-byte float - REAL). Example: for C to F, use 32.0. Defaults to 0.0 Span for RTD 1(4-byte float ­ REAL). If zero, RTD will not be scaled. If specified, the scaled value will be ORG_VALUE * Span + Zero. Example for C to F, use 1.8. Zero for RTDs 2-8

RTD4_x_y_SPAN

Span for RTDs 2-8

RTD4_x_y_MODE RTD4_x_y_MODE
RTD4_x_y_RESTORE
RTD4_x_y_OPERATION
RTD4_x_y_COEFF_A RTD4_x_y_COEFF_B RTD4_x_y_COEFF_R0 RTD4_x_y_APPLIED RTD4_x_y_RESTORE
RTD4_x_y_OPERATION

NOT USED ­ FOR EXPANSION NOT USED ­ FOR FUTURE EXPANSION
NOT USED ­ FOR FUTURE EXPANSION If set, restore RTD 1 calibration to Factory Defaults. Will be reset when operation completes. Calibration Operation for RTD 1 ­ SINT
5 RTD Zero (100 Ohms) 6 RTD Span (300 Ohms) 7 RTD Coefficients (A, B, R0) 8 RTD Span (not using 300 Ohms) Coefficient A (RTD 1) Coefficient B (RTD 1) Coefficient R0 (RTD 1) The applied temperature when calibration operation 8 was performed. (RTD 1) If set, restore RTD 2 calibration to Factory Defaults. Will be reset when operation completes. Calibration Operation for RTD 2 ­ SINT

I/O Mapping

255

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset
144 ** 148 ** 152 ** 156 ** .... 180 (Bit 0) *
181 *
184 ** 188 ** 192 ** 196 **

Default Variable Name where x is the

Description

board slot and y is the pin number.

5 RTD Zero (100 Ohms)

6 RTD Span (300 Ohms)

7 RTD Coefficients (A, B, R0)

8 RTD Span (not using 300 Ohms)

RTD4_x_y_COEFF_A???

Coefficient A (RTD 2)

RTD4_x_y_COEFF_B???

Coefficient B (RTD 2)

RTD4_x_y_COEFF_R0???

Coefficient R0 (RTD 2)

RTD4_x_y_APPLIED????

The applied temperature when calibration

operation 8 was performed. (RTD 2)

.....

RTD4_x_y_RESTORE

If set, restore RTD 4 calibration to Factory

Defaults. Will be reset when operation

completes.

RTD4_x_y_OPERATION

Calibration Operation for RTD 4 ­ SINT

5 RTD Zero (100 Ohms)

6 RTD Span (300 Ohms)

7 RTD Coefficients (A, B, R0)

8 RTD Span (not using 300 Ohms)

RTD4_x_y_COEFF_A???

Coefficient A (RTD 4)

RTD4_x_y_COEFF_B???

Coefficient B (RTD 4)

RTD4_x_y_COEFF_R0???

Coefficient R0 (RTD 4)

RTD4_x_y_APPLIED????

The applied temperature when calibration

operation 8 was performed. (RTD 4)

* Value written to perform operation. The value will be reset by driver when the

operation completes.

** Value is read from the board by the driver. In order to perform calibration operations 7 and 8, the user can overwrite the values; then, issue the calibration command.

Local I/O ­ ControlWave CW10, CW30, CW35

Note:
I/O boards of type CXX (CW10 and CW30) cannot be mixed within the same ControlWave Designer resource with I/O boards for any other ControlWave Platform. This can, however, be done with two resources within the same ControlWave Designer project.

CXX_AI8 ­ ControlWave CW_10/CW_30/CW_35 4- or 8-Analog Input Pin Board

DRIVER_NAME

`CXX_AI8'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

256

I/O Mapping

Offset
0 (Bit 0) 0 (Bit 1) 4 8
12, 16, ...

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Input Map:

Max Size: 40 bytes

Due to the amount of time required to process the AI points, it is highly recommended that this I/O driver be assigned to a task (instead of "No Task"). Care should also be taken in using the I/O board in a task of less than 25ms.

Default Variable Name where x is the board slot and y is the pin number.
AI8_x_BOARDSTATUS AI8_x_LASTOPERATION
AI8_x_y_OUTRANGE
AI8_x_y
AI8_x_y

Description
Board status. Bit 0 is set if board is not present. Board status. Bit 1 is set if the last conversion operation failed. 1 bit per AI, AI1 is bit 0, AI8 is bit 7. If set, input is Out-of-range. Value for AI1 in engineering units (4-byte float REAL). To access the value, define the variable AT %IDxx. Direct access to %IDxx is not possible. Value for AI2, AI3, ...

Output Map:

Max Size: 64 bytes

Offset
0

Default Variable Name where x is the board slot and y is the pin number.
AI8_x_y_ZERO

4

AI8_x_y_SPAN

8, 16, 24, ... 12, 20, 28, ...

AI8_x_y_ZERO AI8_x_y_SPAN

Description
Zero for AI1 (4-byte float - REAL). To access the value, define the variable AT %QDxx. This variable can be initialized at declaration. Span for AI1 (4-byte float). If zero, the AI will be scaled from 0 to 100.0. Zeros for AI2, AI3, ...
Spans for AI2, AI3, ...

CXX_AO4 ­ ControlWave CW_10/CW_30/CW_35 2 or 4 Analog Output Pin Board

DRIVER_NAME

`CXX_AO4'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

Input Map:

Max Size: 24 bytes

Offset
0 (bit 0) 0 (bit 1) 4

Default Variable Name where x is the board slot and y is the pin number.
AO4_x_BOARDSTATUS AO4_x_LASTOPERATION AO4_x_y_OUTRANGE

Description
Board status. Bit 0 is set if board is not present. Bit 1 is set if the last conversion operation failed. 1 bit per AO, AO1 is bit 0, AO4 is bit 3. If set, output is Out-of-range.

I/O Mapping

257

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset
8,12,16,20

Default Variable Name where x is the board slot and y is the pin number.
AO4_x_y_ACTUAL

Description
Real value of value actually output. Clamped to 0100% of scale.

Offset
0
4
8 12, 24, 36 16, 28, 40 20, 32, 44

Output Map:

Max Size: 48 bytes

Due to the amount of time required to process the AO points, it is highly recommended that this I/O driver be assigned to a task (instead of "No Task"). Care should also be taken in using the I/O board in a task of less than 25ms.

Default Variable Name where x is the board slot and y is the pin number.
AO4_x_y_ZERO
AO4_x_y_SPAN AO4_x_y AO4_x_y_ZERO

Description
Zero for AO1 (4-byte float - REAL). To access the value, define the variable AT %QDxx. This variable can be initialized at declaration. Span for AO1 (4-byte float). If zero, the AO will be scaled from 0 to 100.0. Value for AO1 (4-byte float). Zeros for AO2, AO3, AO4

AO4_x_y_SPAN

Spans for AO2, AO3, AO4

AO4_x_y

Values for AO2, AO3, AO4

CXX_DI16 ­ ControlWave CW_10/CW_30/CW_35 4 or 8 or 16 Digital Input Pin Board

DRIVER_NAME

`CXX_DI16'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

DRIVER_PAR2

Mask of points enabled as low-speed counters

Input Map:

Max Size: 84 bytes

Offset
0 4 5 16
20 24, ...

Default Variable Name where x is the board slot and y is the pin number.
DI16_x_BOARDSTATUS DI16_x_y DI16_x_y DI16_x_y_TIMESTAMP
DI16_x_y_COUNTER DI16_x_y_COUNTER

Description
Board status. Current status of DI1 (in bit 0) to DI8 (in bit 7). Current status of DI9 (in bit 0) to DI16 (in bit 7). Timestamp of last sample from HSC. This is the number of milliseconds since boot. 32-bit counter for DI1 32-bit counters for DI2 ­ DI16

258

I/O Mapping

Output Map:

Size: 4 bytes

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset
0 1 2.1

Default Variable Name where x is the board slot and y is the pin number. DI16_x_y_RESET_COUNT DI16_x_y_RESET_COUNT DI16_x_y_NOINIT

Description
Counter reset flags, DI1 (in bit 0) to DI8 (in bit 7) Counter reset flags, 9 to 16. Maintain Counts across Warm Start (TRUE = maintain)

CXX_DO16 ­ ControlWave CW_10/CW_30/CW_35 4- or 8- or 16-Digital Output Pin Board

DRIVER_NAME

`CXX_DO16'

DATA_TYPE

BYTE

DRIVER_PAR1

slot number.

Input Map:

Max Size: 6 bytes

Offset
0 4
5

Default Variable Name where x is the board slot and y is the pin number.
DO16_x_BOARDSTATUS DO16_x_y_I
DO16_x_y_I

Description
Board status. Read-back of output: 1 bit per value. DO1 is LSB, DO8 is MSB. Read-back for outputs 9 to 16.

Offset
0 1

Output Map:

Size: 2 bytes

Default Variable Name where x is the board slot and y is the pin number.
DO16_x_y
DO16_x_y

Description
Outputs. 1 bit per value. DO1 is LSB; DO8 is MSB. Typically specified as %QXy.z, where y is I/O space offset, and z is bit number from 0 to 7. Outputs 9 to 16.

CXX_HSC8 ­ ControlWave CW_10/CW_30/CW_35 4 or 8 Channel High Speed Counter Board

DRIVER_NAME

`CXX_HSC8'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

Input Map:

Max Size: 40 bytes

Offset
0

Default Variable Name where x is the board slot and y is the pin number.
HSC8_x_BOARDSTATUS

Description
Board status. Only bit 0 is currently defined. If set, board is not present.

I/O Mapping

259

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset
4

Default Variable Name where x is the board slot and y is the pin number.
HSC8_x_TIMESTAMP

8

HSC8_x_y_COUNTER

12, 16, .. HSC8_x_y_COUNTER

Description
Timestamp of last sample from HSC. This is the number of milliseconds since boot. Number of counts since boot (Channel 1) Counts for Channel 2, 3, etc.

Offset
0

Output Map:

Size: 4 bytes

Default Variable Name where x is the board slot and y is the pin number.
HSC8_x_y_RESET_COUNT

Description
Counter reset flags, HSC1 (in bit 0) to HSC8 (in bit 7)

2.1

HSC8_x_NOINIT

Maintain Counts across Warm Start (TRUE = maintain)

CXX_LL4 ­ ControlWave CW_10/CW_30/CW_35 4 Low-Level Analog Input Pin Board

DRIVER_NAME

`CXX_LL4'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

Input Map:

Max Size: 24 bytes

Due to the amount of time required to process the Low-level points, it is highly recommended that this I/O driver be assigned to a task (instead of "No Task"). Care should also be taken in using the I/O board in a task of less than 25ms.

Offset
0 (bit 0) 0 (bit 1) 4 6
8
12, 16, 20

Default Variable Name where x is the board Description

slot and y is the pin number.

LL4_x_BOARDSTATUS

Board status. Bit 0 is set if board is not present.

LL4_x_LASTOPERATION

Board status. Bit 1 is set if the board is either in

calibration mode or being reset.

LL4_x_y_OUTRANGE

1 bit per LL, LL1 is bit 0, LL4 is bit 3. If set, input is

Out-of-range.

BYTE value ­ Board error code ­ see table below. *

Note: a variable is not automatically created by the

System Variable Wizard for this field.

LL4_x_y

Value for LL1 in engineering units (4-byte float -

REAL). To access the value, define the variable AT

%IDxx. Direct access to %IDxx is not possible.

LL4_x_y

Value for LL2, LL3, LL4

LLAI Board Error Codes (values are in Hex 16#):

0n Channel errors ­ Bit 0 = point 1, Bit 1 = point 2, etc.

10 Board is in process of being reset.

An Board is in Calibration mode.

260

I/O Mapping

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Output Map:

Max Size: 68 bytes

Offset
0

Default Variable Name where x is the board slot and y is the pin number.
LL4_x_y_ZERO

4

LL4_x_y_SPAN

8, 16, 24 12, 20, 28

LL4_x_y_ZERO LL4_x_y_SPAN

Description
Zero for LL1 (4-byte float - REAL). To access the value, define the variable AT %QDxx. This variable can be initialized at declaration. Span for LL1 (4-byte float). If zero, the LL will be scaled as in the chart below. If specified, the new value will be ORG_VALUE * Span + Zero. Zeros for LL2, LL3, LL4 ­ Example: for C to F, use 32.0 Spans for LL2, LL3, LL4 ­ Example for C to F, use 1.8

64 65, 66, 67

LL4_x_y_MODE LL4_x_y_MODE

Point type for LL1, see table below for type codes. Point types for LL2, LL3, and LL4.

Type codes for Low-Level Points

Type Code

Code

0

B

1

E

2

J

3

K

4

R

5

S

6

T

7

RTD

8

10MV

Range
Thermocouple: 100C ­ +1820C Thermocouple: -270C ­ +1000C Thermocouple: -210C ­ +1200C Thermocouple: -270C ­ +1370C Thermocouple: -50C ­ +1720C Thermocouple: -50C ­ +1760C Thermocouple: -270C ­ +400C RTD: -220C to +850C Voltage Inputs: -10 mV to +10 mV (Outputs as 0.0 to 1.0)

I/O ­ ControlWave CW_31

Common Status Information

The first two bytes of the input map contain status information, which is common to all Expansion Rack boards.

Byte
0 0 0 0

Bit
0 (0x1, 1) 3 (0x8, 8) 4 (0x10, 16) 7 (0x80, 128)

Description
No Board is present in the destination Rack. Board type does not match the board installed in the Rack. Communications lost with the Expansion Rack. Initial opening of channel to the Expansion Rack has not been completed.

I/O Mapping

261

ControlWave Designer Programmer's Handbook D301426X012 August 2020

RXX_AI8 ­ CW_31 4 or 8 Pin Analog Input Board

DRIVER_NAME

`RXX_AI8'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

DRIVER_PAR2

First two bytes of Primary IP address

DRIVER_PAR3

Lower two bytes of Primary IP address

Input Map:

Max Size: 40 bytes

Offset
0 2 (bit 1) 4 8
12, 16, ...

Default Variable Name where x is the board slot and y is the pin number.
RXAI_x_DRIVERSTATUS
RXAI_x_LASTOPERATION RXAI_x_y_OUTRANGE
RXAI_x_y
RXAI_x_y

Description
Board Status. See Common Status Information section. Bit 1 ­ Last conversion operation failed. 1 bit per AI, AI1 is bit 0, AI8 is bit 7. If set, input is Out-of-range. Value for AI1 in engineering units (4-byte float REAL). To access the value, define the variable AT %IDxx. Direct access to %IDxx is not possible. Value for AI2, AI3, ...

Output Map:

Max Size: 64 bytes

Offset
0

Default Variable Name where x is the board slot and y is the pin number.
RXAI_x_y_ZERO

4

RXAI_x_y_SPAN

8, 16, 24, ... 12, 20, 28, ...

RXAI_x_y_ZERO RXAI_x_y_SPAN

Description
Zero for AI1 (4-byte float - REAL). To access the value, define the variable AT %QDxx. This variable can be initialized at declaration. Span for AI1 (4-byte float). If zero, the AI will be scaled from 0 to 100.0. Zeros for AI2, AI3, ...
Spans for AI2, AI3, ...

RXX_AO4 ­ CW_31 2 or 4 Analog Output Pin Board

DRIVER_NAME

`RXX_AO4'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

262

I/O Mapping

ControlWave Designer Programmer's Handbook D301426X012 August 2020

DRIVER_PAR2

First two bytes of Primary IP address

DRIVER_PAR3

Lower two bytes of Primary IP address

Input Map:

Max Size: 24 bytes

Offset
0

Default Variable Name where x is the board slot and y is the pin number.
RXAO_x_DRIVERSTATUS

2 (bit 1) 4

RXAO_x_LASTOPERATION RXAO_x_y_OUTRANGE

8,12,16,20 RXAO_x_y_ACTUAL

Description
Board Status. See Common Status Information section. Bit 1 ­ Last conversion operation failed. 1 bit per AO, AO0 is bit 0, AO4 is bit 3. If set, output is Out-of-range. Real value of value actually output. Clamped to 0100% of scale.

Output Map:

Max Size: 48 bytes

Offset
0
4
8 12, 24, 36 16, 28, 40 20, 32, 44

Default Variable Name where x is the board slot and y is the pin number.
RXAO_x_y_ZERO
RXAO_x_y_SPAN RXAO_x_y RXAO_x_y_ZERO RXAO_x_y_SPAN RXAO_x_y

Description
Zero for AO1 (4-byte float - REAL). To access the value, define the variable AT %QDxx. This variable can be initialized at declaration. Span for AO1 (4-byte float). If zero, the AO will be scaled from 0 to 100.0. Value for AO1 (4-byte float). Zeros for AO2, AO3, AO4
Spans for AO2, AO3, AO4
Values for AO2, AO3, AO4

RXX_DI16 CW_31 8 or 16 Digital Input Pin Board

DRIVER_NAME

`RXX_DI16'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

DRIVER_PAR2

First two bytes of Primary IP address

DRIVER_PAR3

Lower two bytes of Primary IP address

Note: Low speed counter processing is automatically enabled for all points.

Input Map:

Max Size: 84 bytes

I/O Mapping

263

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset
0

Default Variable Name where x is the board slot and y is the pin number.
RXDI_x_DRIVERSTATUS

4

RXDI_x_y

5

RXDI_x_y

Description
Board Status. See Common Status Information section. Current status of DI1 (in bit 0) to DI8 (in bit 7). Current status of DI9 (in bit 0) to DI16 (in bit 7).

16
20 24, ...

RXDI_x_TIMESTAMP
RXDI_x_y_COUNTER RXDI_x_y_COUNTER

Timestamp of last sample. This is the number of milliseconds since boot. 32-bit counter for DI1 32-bit counters for DI2 ­ DI16

Offset
0 1
2 (bit 1)

Output Map:

Size: 4 bytes

Default Variable Name where x is the board slot and y is the pin number.
RXDI_x_y_RESET_COUNT RXDI_x_y_RESET_COUNT

Description
Counter reset flags, DI1 (in bit 0) to DI8 (in bit 7) Counter reset flags, 9 to 16.

RXDI_x_NOINIT

Maintain Counts across Warm Start (TRUE = maintain)

RXX_DO16 CW_31 4, 8 or 16 Digital Output Pin Board

DRIVER_NAME

`RXX_DO16'

DATA_TYPE

BYTE

DRIVER_PAR1

slot number.

DRIVER_PAR2

First two bytes of Primary IP address

DRIVER_PAR3

Lower two bytes of Primary IP address

Input Map:

Max Size: 6 bytes

Offset
0 4 5

Default Variable Name where x is the board slot and y is the pin number.
RXDO_x_DRIVERSTATUS
RXDO_x_y_I
RXDO_x_y_I

Description
Board Status. See Common Status Information section. Read-back of output: 1 bit per value. DO1 is LSB, DO8 is MSB. Read-back for outputs 9 to 16.

Offset
0

Output Map:

Size: 2 bytes

Default Variable Name where x is the board slot and y is the pin number.
RXDO_x_y

Description
Outputs. 1 bit per value. DO1 is LSB; DO8 is MSB. Typically specified as %QXy.z, where y is I/O space

264

I/O Mapping

Offset
1

Default Variable Name where x is the board slot and y is the pin number.
RXDO_x_y

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Description
offset, and z is bit number from 0 to 7. Outputs 9 to 16.

RXX_HSC8 CW_31 4 or 8 Channel High Speed Counter Board

DRIVER_NAME

`RXX_HSC8'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

DRIVER_PAR2

First two bytes of Primary IP address

DRIVER_PAR3

Lower two bytes of Primary IP address

Input Map:

Max Size: 40 bytes

Offset
0

Default Variable Name where x is the board slot and y is the pin number.
RXHSC_x_DRIVERSTATUS

4

RXHSC_x_TIMESTAMP

8

RXHSC_x_y_COUNTER

12, 16, .. RXHSC_x_y_COUNTER

Description
Board Status. See Common Status Information section. Timestamp of last sample from HSC. This is the number of milliseconds since boot. Number of counts since boot (Channel 1) Counts for Channel 2, 3, etc.

Offset
0 2 (bit 1)

Output Map:

Size: 4 bytes

Default Variable Name where x is the board slot and y is the pin number.
RXHSC_x_y_RESET_COUNT RXHSC_x_NOINIT

Description
Counter reset flags, HSC1 (in bit 0) to HSC8 (in bit 7) Maintain Counts across Warm Start (TRUE = maintain)

RXX_LL4 CW_31 4 Low Level Analog Input Pin Board

DRIVER_NAME

`RXX_LL4'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

DRIVER_PAR2

First two bytes of Primary IP address

DRIVER_PAR3

Lower two bytes of Primary IP address

Input Map:

Max Size: 24 bytes

I/O Mapping

265

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset
0 2 4 6
8
12, 16, 20

Default Variable Name where x is the board slot and y is the pin number.
RXLL_x_DRIVERSTATUS RXLL_x_LASTOPERATION RXLL_x_y_OUTRANGE
RXLL_x_y
RXLL_x_y

Description
Board Status. See Common Status Information section. Bit 1 - Calibration Mode or hardware is being reset 1 bit per LL, LL1 is bit 0, LL4 is bit 3. If set, input is Out-of-range. BYTE value ­ Board error code ­ see table below. * Note: a variable is not automatically created by the IO Configuration Wizard for this field. Value for LL1 in engineering units (4-byte float REAL). To access the value, define the variable AT %IDxx. Direct access to %IDxx is not possible. Value for LL2, LL3, LL4

LLAI Board Error Codes (values are in Hex 16#):

0n Channel errors ­ Bit 0 = point 1, Bit 1 = point 2, etc.

10 Board is in process of being reset.

An Board is in Calibration mode.

Output Map:

Max Size: 68 bytes

Offset
0

Default Variable Name where x is the board slot and y is the pin number.
RXLL_x_y_ZERO

4

RXLL_x_y_SPAN

8, 16, 24 12, 20, 28

RXLL_x_y_ZERO RXLL_x_y_SPAN

Description
Zero for LL1 (4-byte float - REAL). To access the value, define the variable AT %QDxx. This variable can be initialized at declaration. Span for LL1 (4-byte float). If zero, the LL will be scaled as in the chart below. If specified, the new value will be ORG_VALUE * Span + Zero. Zeros for LL2, LL3, LL4 ­ Example: for C to F, use 32.0 Spans for LL2, LL3, LL4 ­ Example for C to F, use 1.8

64 65, 66, 67

RXLL_x_y_MODE RXLL_x_y_MODE

Point type for LL1, see table below for type codes. Point types for LL2, LL3, and LL4.

Type codes for Low-Level Points

Type Code
0 1

ACCOL Code Range

B

Thermocouple: 100C ­ +1820C

E

Thermocouple: -270C ­ +1000C

266

I/O Mapping

Type Code
2
3 4 5 6 7 8

ACCOL Code

Range

ControlWave Designer Programmer's Handbook D301426X012 August 2020

J
K R S T RTD 10MV

Thermocouple: -210C ­ +1200C
Thermocouple: -270C ­ +1370C Thermocouple: -50C ­ +1720C Thermocouple: -50C ­ +1760C Thermocouple: -270C ­ +400C RTD: -220C to +850C Voltage Inputs: -10 mV to +10 mV (Outputs as 0.0 to 1.0)

RXX_STAT CW_31 Status Board

In addition, an Expansion Rack Status board (RXX_STAT) is defined. This board has a similar I/O map as the status board for the ControlWave Expansion Rack (ER_STAT).

DRIVER_NAME

`RXX_STAT'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number (ignored ­ specify as zero).

DRIVER_PAR2

First two bytes of Primary IP address

DRIVER_PAR3

Lower two bytes of Primary IP address

Input Map:

Max Size: 1068 bytes

Offset
0 4 (bit 0) 4 (bit 1)

Default Variable Name where x is the board slot and y is the pin number.
RXSTAT_x_BOARDSTATUS
RXSTAT_x_BATSTAT
RXSTAT_x_HOTCARDSTAT

8

RXSTAT_x_HOTCARDCT

12

RXSTAT_x_DOWNTIMEUSER

16

RXSTAT_x_DOWNTIMEACT

20

RXSTAT_x_WRITECT

24

RXSTAT_x_READCT

Description
Board Status. See Common Status Information section. Memory battery status at Expansion Rack. TRUE indicates good battery. TRUE indicates that a HOT Card replacement is in progress at the Expansion Rack. Will always be FALSE on platforms which do not support on-line HOT Card replacement. 32-Bit Count of Hot Card replacement events which have occurred. 32-Bit Count ­ Number of seconds (as configured by the user) that the Expansion Rack can be powered off before the outputs are reset to defaults when the unit is powered back up. 32-Bit Count ­ Number of seconds that the Expansion Rack was powered off on the last power fail. 32-Bit Count ­ Number of I/O updates sent to the Expansion Rack 32-Bit Count ­ Number of I/O updates sent from the

I/O Mapping

267

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset

Default Variable Name where x is the board slot and y is the pin number.

28

RXSTAT_x_CONNECTS

32

RXSTAT_x_HEARTBEAT

42

RXSTAT_x_BDSTR1

127

RXSTAT_x_BDSTR2

212

RXSTAT_x_BDSTR3

297

RXSTAT_x_BDSTR4

382

RXSTAT_x_BDSTR5

467

RXSTAT_x_BDSTR6

552

RXSTAT_x_BDSTR7

637

RXSTAT_x_BDSTR8

724

728 813 898 983 1068 1153

RXSTAT_x_BDSTR9 RXSTAT_x_BDSTR10 RXSTAT_x_BDSTR11 RXSTAT_x_BDSTR12 RXSTAT_x_BDSTR13 RXSTAT_x_BDSTR14

1240

RXSTAT_x_INPUTVOLTS

Description
Expansion Rack 32-Bit Count ­ Number of Connects and Disconnects made to the Expansion Rack. 32-Bit Count ­ Number of IDLE time Heartbeats sent from the Expansion Rack to the host. String ­ I/O board string for slot #1 String ­ I/O board string for slot #2 String ­ I/O board string for slot #3 String ­ I/O board string for slot #4 String ­ I/O board string for slot #5 String ­ I/O board string for slot #6 String ­ I/O board string for slot #7 String ­ I/O board string for slot #8 DINT ­ Current redundancy status of the Expansion Rack ­ will always be zero on this platform String ­ I/O board string for slot #9 String ­ I/O board string for slot #10 String ­ I/O board string for slot #11 String ­ I/O board string for slot #12 String ­ I/O board string for slot #13 String ­ I/O board string for slot #14 (Note slot #13 and #14 will be populated with zeroes (NULL string) Float ­ Reading (in volts) of power-supply input voltage.

Offset
0.0
1.0

Output Map:

Max Size: 4 bytes

Default Variable Name where x is the board slot and y is the pin number.
RXSTAT_x_RDN_IOERR_WARN

Description
If this is a Redundant Expansion Rack, and the Standby is valid, then writing a TRUE to this location will cause the rack to fail-over. Not used on this platform.

268

I/O Mapping

ControlWave Designer Programmer's Handbook D301426X012 August 2020

ControlWave MICRO I/O Expansion Rack

Common Status Information

The first two bytes of the input map contain status information, which is common to all Expansion Rack boards.

Byte
0 0 0 0

Bit
0 (0x1, 1) 3 (0x8, 8) 4 (0x10, 16) 7 (0x80, 128)

Description
No board is present in the destination rack. Board type does not match the board installed in the rack. Communications lost with the expansion rack. Initial opening of channel to the expansion rack has not been completed.

ERM_DO16 ­ ControlWave MICRO I/O Expansion Rack 16 Digital Output Pin Board

DRIVER_NAME

`ERM_DO16'

DATA_TYPE

BYTE

DRIVER_PAR1

slot number.

DRIVER_PAR2

First two bytes of Primary IP address

DRIVER_PAR3

Lower two bytes of Primary IP address

Input Map:

Max Size: 6 bytes

Offset
0 4,5

Default Variable Name where x is the board slot and y is the pin number.
ERDO_x_DRIVERSTATUS
ERDO_x_y_I

Description
Board Status. See Common Status Information section. DO status as seen by card. bit per value.

Offset
0
1 4

Output Map:

Size: 5 bytes

Default Variable Name where x is the board slot and y is the pin number.
ERDO_x_y

ERDO_x_y ERDO_x_LEDSTATUS

Description
Outputs. 1 bit per value. DO1 is LSB; DO8 is MSB. Typically specified as %QXy.z, where y is I/O space offset, and z is bit number from 0 to 7. Outputs 9 to 16. Single bit. If bit is set, the diagnostic LEDS for the points are turned off to save power.

ERM_DI16 ­ ControlWave MICRO I/O Expansion Rack 16 Digital Input Pin Board

DRIVER_NAME

`ERM_DI16'

DATA_TYPE

DWORD

(32 bits)

I/O Mapping

269

ControlWave Designer Programmer's Handbook D301426X012 August 2020

DRIVER_PAR1

slot number.

DRIVER_PAR2

First two bytes of Primary IP address

DRIVER_PAR3

Lower two bytes of Primary IP address

Input Map:

Max Size: 8 bytes

Offset
0
4 5

Default Variable Name where x is the board slot and y is the pin number.
ERDI_x_DRIVERSTATUS
ERDI_x_y ERDI_x_ y

Description
Board Status. See Common Status Information section. Current status of DI1 (in bit 0) to DI8 (in bit 7). Current status of DI9 (in bit 0) to DI16 (in bit 7).

Offset
4

Output Map:

Size: 5 bytes

Default Variable Name where x is the board slot and y is the pin number.
ERDI_x_LEDSTATUS

Description
Single bit. If bit is set, the diagnostic LEDS for the points are turned off to save power.

ERM_MD ControlWave MICRO I/O Expansion Rack Mixed Digital (12 DI / 4 DO) Board

DRIVER_NAME

`ERM_MD'

DATA_TYPE

BYTE

DRIVER_PAR1

slot number.

DRIVER_PAR2

First two bytes of Primary IP address

DRIVER_PAR3

Lower two bytes of Primary IP address

Input Map:

Max Size: 9 bytes

Offset
0
4 5 8

Default Variable Name where x is the board slot and y is the pin number.
ERDIDO_x_DRIVERSTATUS
ERDIDO_x_y ERDIDO_x_y ERDIDO_x_y_O_I

Description
Board Status. See Common Status Information section. Current status of DI1 (in bit 0) to DI8 (in bit 7). Current status of DI9 (in bit 0) to DI12 (in bit 3). DO status as seen by card. 1 bit per value.

Offset
0

Output Map:

Size: 5 bytes

Default Variable Name where x is the board slot and y is the pin number.
ERDIDO_x_y_O

Description
Outputs. 1 bit per value. DO1 is LSB; DO4 is MSB. Typically specified as %QXy.z, where y is I/O space offset, and z is bit number from 0 to 3.

270

I/O Mapping

Offset
4

Default Variable Name where x is the board slot and y is the pin number.
ERDIDO_x_LEDSTATUS

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Description
Single bit. If bit is set, the diagnostic LEDS for the points are turned off to save power.

ERM_AI8 ­ ControlWave MICRO I/O Expansion Rack ­ 8 Analog Input Pin Board

DRIVER_NAME

`ERM_AI8'

DATA_TYPE DWORD

(32 bits)

DRIVER_PAR1 slot number.

DRIVER_PAR2 First two bytes of Primary IP address

DRIVER_PAR3 Lower two bytes of Primary IP address

Input Map:

Max Size: 40 bytes

Offset
0 2 (bit 2) 2 (bit 3) 4 8
12, 16, ...

Default Variable Name where x is the board slot and y is the pin number.
ERAI_x_DRIVERSTATUS
ERAI_x_CALIBRATE ERAI_x_TIMEOUT
ERAI_x_y_OUTRANGE
ERAI_x_y
ERAI_x_y

Description
Board Status. See Common Status Information section. Bit 2 is set if the calibration data is invalid. Bit 3 is set to indicate that a board data read has timed out. 1 bit per AI, AI1 is bit 0, AI8 is bit 7. If set, input is Out-of-range. Value for AI1 in engineering units (4-byte float REAL). To access the value, define the variable AT %IDxx. Direct access to %IDxx is not possible. Value for AI2, AI3, ...

Output Map:

Max Size: 132 bytes

Offset
0

Default Variable Name where x is the board slot and y is the pin number.
ERAI_x_y_ZERO

4

ERAI_x_y_SPAN

8, 16, 24, ... 12, 20, 28, ... 64, 72, 80, ...

ERAI_x_y_ZERO ERAI_x_y_SPAN ERAI_x_y_BOTTOMRANGE

Description
Zero for AI1 (4-byte float - REAL). To access the value, define the variable AT %QDxx. This variable can be initialized at declaration. Span for AI1 (4-byte float). If zero, the AI will be scaled from 0 to 100.0. Zeros for AI2, AI3, ...
Spans for AI2, AI3, ...
Bottom end of usable current / voltage range for this input. Specified as a REAL. For example, for a 1-5V input, this value is 1.0.

I/O Mapping

271

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset
68, 76, 84, ...

Default Variable Name where x is the board slot and y is the pin number.
ERAI_x_y_TOPRANGE

128

ERAI_x_y_MODE

Description
Top end of usable current / voltage range for this input. Specified as a REAL. For example, for a 1-5V input, this value is 5.0. 1 bit per AI; set TRUE if the point is voltage; FALSE if current.

ERM_AO4 ­ ControlWave MICRO I/O Expansion Rack - 4 Analog Output Pin Board

DRIVER_NAME

`ERM_AO4'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

DRIVER_PAR2

First two bytes of Primary IP address

DRIVER_PAR3

Lower two bytes of Primary IP address

Input Map:

Max Size: 24 bytes

Offset
0 2 (bit 2) 2 (bit 3) 6 8,12,16,20

Default Variable Name where x is the board slot and y is the pin number.
ERAO_x_DRIVERSTATUS
ERAO_x_CALIBRATE ERAO_x_TIMEOUT
ERAO_x_y_OUTRANGE
ERAO_x_y_ACTUAL

Description
Board Status. See Common Status Information section. Bit 2 is set if the calibration data is invalid Bit 3 is set to indicate that a board data read has timed out. 1 bit per AO, AO1 is bit 0, AO4 is bit 3. If set, output is Out-of-range. Real value of value actually output. Clamped to 0100% of scale.

Offset
0
4 8 12, 24, 36 16, 28, 40 20, 32, 44

Output Map:

Max Size: 48 bytes

Default Variable Name where x is the board slot and y is the pin number.
ERAO_x_y_ZERO
ERAO_x_y_SPAN
ERAO_x_y ERAO_x_y_ZERO ERAO_x_y_SPAN ERAO_x_y

Description
Zero for AO1 (4-byte float - REAL). To access the value, define the variable AT %QDxx. This variable can be initialized at declaration. Span for AO1 (4-byte float). If zero, the AO will be scaled from 0 to 100.0. Value for AO1 (4-byte float). Zeros for AO2, AO3, AO4 Spans for AO2, AO3, AO4 Values for AO2, AO3, AO4

272

I/O Mapping

ControlWave Designer Programmer's Handbook D301426X012 August 2020

ERM_AI6 ­ ControlWave MICRO I/O Expansion Rack 6 Analog Input Pin Board

DRIVER_NAME

`ERM_AI6'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

DRIVER_PAR2

First two bytes of Primary IP address

DRIVER_PAR3

Lower two bytes of Primary IP address

Input Map:

Max Size: 32 bytes

Offset
0 2 (bit 2) 2 (bit 3) 4 8

Default Variable Name where x is the board slot and y is the pin number.
ERAI_x_DRIVERSTATUS
ERAI_x_CALIBRATE ERAI_x_TIMEOUT
ERAI_x_y_OUTRANGE
ERAI_x_y

12, 16, ... ERAI_x_y

Description
Board Status. See Common Status Information section. Bit 2 is set if the calibration data is invalid. Bit 3 is set to indicate that a board data read has timed out. 1 bit per AI, AI1 is bit 0, AI6 is bit 5. If set, input is Out-of-range. Value for AI1 in engineering units (4-byte float REAL). To access the value, define the variable AT %IDxx. Direct access to %IDxx is not possible. Value for AI2, AI3, ...

Output Map:

Max Size: 48 bytes

Offset
0

Default Variable Name where x is the board slot and y is the pin number.
ERAI_x_y_ZERO

4

ERAI_x_y_SPAN

8, 16, 24, ... 12, 20, 28, ...

ERAI_x_y_ZERO ERAI_x_y_SPAN

Description
Zero for AI1 (4-byte float - REAL). To access the value, define the variable AT %QDxx. This variable can be initialized at declaration. Span for AI1 (4-byte float). If zero, the AI will be scaled from 0 to 100.0. Zeros for AI2, AI3, ...
Spans for AI2, AI3, ...

ERM_MA ­ ControlWave MICRO I/O Expansion Rack - Mixed Analog (6 AI / 2 AO) Board

DRIVER_NAME

`ERM_MA'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

DRIVER_PAR2

First two bytes of Primary IP address

I/O Mapping

273

ControlWave Designer Programmer's Handbook D301426X012 August 2020

DRIVER_PAR3

Lower two bytes of Primary IP address

Input Map:

Max Size: 40 bytes

Offset
0 2 (bit 2) 2 (bit 3) 4 6 8
12, 16, ... 32,36

Default Variable Name where x is the board slot and y is the pin number.
ERAIAO_x_DRIVERSTATUS
ERAIAO_x_CALIBRATE ERAIAO_x_TIMEOUT
ERAIAO_x_y_OUTRANGE
ERAIAO_x_y_O_OUTRANGE
ERAIAO_x_y
ERAIAO_x_y ERAIAO_x_y_O_ACTUAL

Description
Board Status. See Common Status Information section. Bit 2 is set if the calibration data is invalid. Bit 3 is set to indicate that a board data read has timed out. 1 bit per AI, AI0 is bit 0, AI2 is bit 1. If set, output is Out-of-range. 1 bit per AO AO1 is bit 0, AO2 is bit 1. If set, output is Out-of-range. Value for AI1 in engineering units (4-byte float REAL). To access the value, define the variable AT %IDxx. Direct access to %IDxx is not possible. Value for AI2, AI3, ... Value actually written to AO ­ clamped to 0-100%.

Output Map:

Max Size: 72 bytes

Offset
0

Default Variable Name where x is the board slot and y is the pin number.
ERAIAO_x_y_ZERO

4

ERAIAO_x_y_SPAN

8, 16, 24, ... 12, 20, 28, ... 48, 60 52, 64 56, 68

ERAIAO_x_y_ZERO
ERAIAO_x_y_SPAN
ERAIAO_x_y_O_ZERO ERAIAO_x_y_O_SPAN ERAIAO_x_y_O

Description
Zero for AI1 (4-byte float - REAL). To access the value, define the variable AT %QDxx. This variable can be initialized at declaration. Span for AI1 (4-byte float). If zero, the AI will be scaled from 0 to 100.0. Zeros for AI2, AI3, ...
Spans for AI2, AI3, ...
Zeros for AO1, AO2 Spans for AO1, AO2 Values for AO1, AO2

ERM_MIX ­ ControlWave MICRO I/O Expansion Rack - Mixed I/O board

This card contains the following I/O: DIO 6, AI4, AO1, and HSC2

DRIVER_NAME

`ERM_MIX'

DATA_TYPE

DWORD

DRIVER_PAR1

slot number.

DRIVER_PAR2

First two bytes of Primary IP address

274

I/O Mapping

Offset
0
2 (bit 2) 2 (bit 3)
4
6 8 10
12
16 20 32
36, 40, ...

ControlWave Designer Programmer's Handbook D301426X012 August 2020

DRIVER_PAR3

Lower two bytes of Primary IP address

Input Map:

Max Size: 68 bytes

Default Variable Name where x is the board slot and y is the pin number.
ERMIX_x_DRIVERSTATUS
ERMIX_x_CALIBRATE ERMIX_x_TIMEOUT
ERMIX_x_y_AI_OUTRANGE
ERMIX_x_y_AO_OUTRANGE ERMIX_x_y_DI ERMIX_x_y_DO_I
ERMIX_x_TIMESTAMP
ERMIX_x_y_COUNTER ERMIX_x_y_COUNTER ERMIX_x_y_AI
ERMIX_x_y_AI

Description
Board Status. See Common Status Information section. Bit 2 is set if the calibration data is invalid Bit 3 is set to indicate that a board data read has timed out. AI under / over range. One bit per point: AI1 in bit 0, AI4 in bit 3. AO under / over range. AO1 is in bit 0. Current status of DI1 (in bit 0) to DI6 (in bit 5). Read-back of current value for DO1 (in bit 0) to DO6 (in bit 5). Timestamp of last sample from HSC. This is the number of Milliseconds since boot. Number of counts since boot (Channel 1) Counts for Channel 2 Value for AI1 in engineering units (4-byte float REAL). To access the value, define the variable AT %IDxx. Direct access to %IDxx is not possible. Value for AI2, AI3, ...

64

ERMIX_x_y_AO_ACTUAL

Value actually written to AO ­ clamped to 0-100%.

Offset
0
2 4
8
12 16, 24, 32 20, 28, 36

Output Map:

Size: 84 bytes

Default Variable Name where x is the board slot and y is the pin number.
ERMIX_x_y_DO

ERMIX_x_y_RESET_COUNT ERMIX_x_LEDSTATUS

ERMIX_x_y_AI_ZERO

ERMIX_x_y_AI_SPAN ERMIX_x_y_AI_ZERO ERMIX_x_y_AI_SPAN

Description
Outputs. 1 bit per value. DO1 is LSB; DO6 is MSB. Typically specified as %QXy.z, where y is I/O space offset, and z is bit number from 0 to 5. Counter reset flags, HSC1 (in Bit 0) to HSC2 (in bit 1) Bit 0 - If set, the diagnostic LEDS for the points are turned off to save power. Bit 1 ­ If set, maintains counts across Warm Start Zero for AI1 (4-byte float - REAL). To access the value, define the variable AT %QDxx. This variable can be initialized at declaration. Span for AI1 (4-byte float). If zero, the AI will be scaled from 0 to 100.0. Zeros for AI2, AI3, AI4
Spans for AI2, AI3, AI4

I/O Mapping

275

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset
72

Default Variable Name where x is the board slot and y is the pin number.
ERMIX_x_y_AO_ZERO

76

ERMIX_x_y_AO_SPAN

80

ERMIX_x_y_AO

Description
Zero for AO1 (4-byte float - REAL). To access the value, define the variable AT %QDxx. This variable can be initialized at declaration. Span for AO1 (4-byte float). If zero, the AO will be scaled from 0 to 100.0. Value for AO1 (4-byte float).

ERM_HSC4 ­ ControlWave MICRO I/O Expansion Rack - 4 Channel High Speed Counter Board

DRIVER_NAME

`ERM_HSC4'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

DRIVER_PAR2

First two bytes of Primary IP address

DRIVER_PAR3

Lower two bytes of Primary IP address

Input Map:

Max Size: 24 bytes

Offset
0
4
8 12, 16, 20

Default Variable Name where x is the board slot and y is the pin number.
ERHSC_x_DRIVERSTATUS
ERHSC_x_TIMESTAMP
ERHSC_x_y_COUNTER ERHSC_x_y_COUNTER

Description
Board Status. See Common Status Information section. Timestamp of last sample from HSC. This is the number of milliseconds since boot. Number of counts since boot (Channel 1) Counts for Channel 2, 3, 4

Offset
0 2 (bit 1)
4

Output Map:

Size: 8 bytes

Default Variable Name where x is the board slot and y is the pin number.
ERHSC_x_y_RESET_COUNT ERHSC_x_NOINIT
ERHSC_x_LEDSTATUS

Description
Counter reset flags, HSC1 (in bit 0) to HSC4 (in bit 3) Maintain Counts across Warm Start (TRUE = maintain) Single bit. If bit is set, the diagnostic LEDS for the points are turned off to save power.

ERM_STAT ­ ControlWave MICRO I/O Expansion Rack Status Board
In addition, an Expansion Rack Status board (ERM_STAT) is defined. This board has a similar I/O map as the status board for the ControlWave Expansion Rack (ER_STAT).

276

I/O Mapping

Offset
0 4 (bit 0) 4 (bit 1)
8 12
16
20 24 28 32 42 127 212 297 382 467 552 637 724

ControlWave Designer Programmer's Handbook D301426X012 August 2020

DRIVER_NAME

`ERM_STAT'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number (ignored ­ specify as zero).

DRIVER_PAR2

First two bytes of Primary IP address

DRIVER_PAR3

Lower two bytes of Primary IP address

Input Map:

Max Size: 1242 bytes

Note: Data starting at offset 12 will only be refreshed as fast as a 1 second interval.

Default Variable Name where x is the board slot and y is the pin number.
ERSTAT_x_BOARDSTATUS ERSTAT_x_BATSTAT ERSTAT_x_HOTCARDSTAT
ERSTAT_x_HOTCARDCT ERSTAT_x_DOWNTIMEUSER
ERSTAT_x_DOWNTIMEACT
ERSTAT_x_WRITECT ERSTAT_x_READCT ERSTAT_x_CONNECTS ERSTAT_x_HEARTBEAT ERSTAT_x_BDSTR1 ERSTAT_x_BDSTR2 ERSTAT_x_BDSTR3 ERSTAT_x_BDSTR4 ERSTAT_x_BDSTR5 ERSTAT_x_BDSTR6 ERSTAT_x_BDSTR7 ERSTAT_x_BDSTR8

Description
Board Status. See Common Status Information section. Memory battery status at Expansion Rack. TRUE indicates good battery. TRUE indicates that a HOT Card replacement is in progress at the Expansion Rack. Will always be FALSE on platforms which do not support on-line HOT Card replacement. 32-Bit Count of Hot Card replacement events which have occurred. 32 Bit Count ­ Number of seconds (as configured by the user) that the Expansion Rack can be powered off before the outputs are reset to defaults when the unit is powered back up. 32-Bit Count ­ Number of seconds that the Expansion Rack was powered off on the last power fail. 32-Bit Count ­ Number of I/O updates sent to the Expansion Rack 32-Bit Count ­ Number of I/O updates sent from the Expansion Rack 32-Bit Count ­ Number of Connects and Disconnects made to the Expansion Rack. 32-Bit Count ­ Number of IDLE time Heartbeats sent from the Expansion Rack to the host. String ­ I/O board string for slot #1 String ­ I/O board string for slot #2 String ­ I/O board string for slot #3 String ­ I/O board string for slot #4 String ­ I/O board string for slot #5 String ­ I/O board string for slot #6 String ­ I/O board string for slot #7 String ­ I/O board string for slot #8 DINT ­ Current redundancy status of the Expansion Rack ­ will always be zero on this platform

I/O Mapping

277

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Offset
728 813 898 983 1068 1153 1240

Default Variable Name where x is the board slot and y is the pin number.
ERSTAT_x_BDSTR9 ERSTAT_x_BDSTR10 ERSTAT_x_BDSTR11 ERSTAT_x_BDSTR12 ERSTAT_x_BDSTR13 ERSTAT_x_BDSTR14 ERSTAT_x_INPUTVOLTS

Description
String ­ I/O board string for slot #9 String ­ I/O board string for slot #10 String ­ I/O board string for slot #11 String ­ I/O board string for slot #12 String ­ I/O board string for slot #13 String ­ I/O board string for slot #14 Float ­ Reading (in volts) of power-supply input voltage.

Output Map:

Max Size: 4 bytes

Offset
0.0

Default Variable Name where x is the board slot and y is the pin number.

Description
If this is a Redundant Expansion Rack, and the Standby is valid, then writing a TRUE to this location will cause the rack to fail-over. Not used on this platform.

ERM_TC6 ­ ControlWave MICRO I/O Expansion Rack 6 Point Thermocouple Board

DRIVER_NAME

`ERM_TC6'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

DRIVER_PAR2

First two bytes of Primary IP address

DRIVER_PAR3

Lower two bytes of Primary IP address

Input Map:

Max Size: 32 bytes

Due to the amount of time required to process the thermocouple points, it is highly recommended that this I/O driver be assigned to a task (instead of "No Task"). Care should also be taken in using the I/O board in a task of less than 40ms.

Offset
0 2 (Bit 2) 2 (Bit 3) 4

Default Variable Name where x is the board slot and y is the pin number.
TC6_x_DRIVERSTATUS
TC6_x_CALIBRATE
TC6_x_TIMEOUT
TC6_x_y_OUTRANGE

Description
Board Status. See Common Status Information section. If set indicates invalid calibration data written to the board. If set, indicates that had an error reading or writing to the board. 1 bit per TC, TC1 is bit 0, TC6 is bit 5. If set, input is Out-of-range.

278

I/O Mapping

Offset
8
12, 16, 20, 24, 28

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Default Variable Name where x is the board slot and y is the pin number.
TC6_x_y
TC6_x_y

Description
Value for TC1 in engineering units (4-byte float REAL). To access the value, define the variable AT %IDxx. Direct access to %IDxx is not possible. Value for TC2, TC3, TC4, TC5, TC6

Output Map:

Max Size: 70 bytes

Offset
0
4
8, 16, 24, 32, 40 12, 20, 28, 36, 44 64 65, 66, 67, 68, 69

Default Variable Name where x is the board slot and y is the pin number.
TC6_x_y_ZERO
TC6_x_y_SPAN
TC6_x_y_ZERO TC6_x_y_SPAN TC6_x_y_MODE TC6_x_y_MODE

Description
Zero for TC1 (4-byte float - REAL). To access the value, define the variable AT %QDxx. This variable can be initialized at declaration. Span for TC1 (4-byte float). If zero, the TC will be scaled as in the chart below. If specified, the new value will be ORG_VALUE * Span + Zero. Zeros for TC2, TC3, TC4, to TC6 ­ Example: for C to F, use 32.0 Spans for TC2, TC3, TC4, to TC6 ­ Example for C to F, use 1.8 Point type for TC1; see Thermocouple type codes section for details. Point types for TC2, TC3, TC4, TC5, and TC6.

Type codes for Thermocouple Points.

Type Code
0 1 2 3 4 5 6 7 8 9 10

Code
B E J K R S T Unused 10MV C N

Range
Thermocouple: 100C ­ +1820C Thermocouple: -270C ­ +1000C Thermocouple: -210C ­ +1200C Thermocouple: -270C ­ +1370C Thermocouple: -50C ­ +1720C Thermocouple: -50C ­ +1760C Thermocouple: -270C ­ +400C Unused Voltage Inputs: -10 mV to +10 mV (Outputs as 0.0 to 1.0) Thermocouple: 0C ­ +2315C Thermocouple: -270C ­ +1300C

I/O Mapping

279

ControlWave Designer Programmer's Handbook D301426X012 August 2020

ERM_RTD4 ­ ControlWave Micro I/O Expansion Rack ­ 4 Point Resistance Temperature Device (RTD) Board

DRIVER_NAME

`ERM_RTD4'

DATA_TYPE

DWORD

(32 bits)

DRIVER_PAR1

slot number.

DRIVER_PAR2

First two bytes of Primary IP address

DRIVER_PAR3

Lower two bytes of Primary IP address

Input Map:

Max Size: 24 bytes

Due to the amount of time required to process the RTD points, it is highly recommended that this I/O driver be assigned to a task (instead of "No Task"). Care should also be taken in using the I/O board in a task of less than 40ms.

Offset
0 2 (Bit 2) 2 (Bit 3) 3 (Bit 0) 3 (Bit 7) 4 8
12, 16, ...20

Default Variable Name where x is the board slot and y is the pin number.
ERRTD_x_DRIVERSTATUS
ERRTD_x_CALIBRATE
ERRTD_x_TIMEOUT
ERRTD_x_LASTCALBOP ERRTD_x_CALBCMD
ERRTD_x_y_READERR ERRTD_x_y
ERRTD_x_y

Description
Board Status. See Common Status Information section. If set indicates invalid calibration data written to the board. If set, indicates that had an error reading or writing to the board. Set if last calibration or reset operation failed. Calibration Commands Allowed. Until this bit is set, all calibration commands are ignored. RTD Reading Error. Bit 0 is RTD1, Bit 3 is RTD4 RTD1 reading ­ REAL ­ In units of Degrees Centigrade (unless scaled by values in the output map). Readings for RTD2 ... RTD4.

Offset
0
4
8,16,24,32 40,48,56 12,20,28, 36,44,52, 60

Output Map:

Max Size: 200 bytes

Default Variable Name where x is the board slot and y is the pin number.
ERRTD_x_y_ZERO ERRTD_x_y_SPAN
ERRTD_x_y_ZERO

Description
Zero for RTD 1(4-byte float - REAL). Example: for C to F, use 32.0. Defaults to 0.0 Span for RTD 1(4-byte float ­ REAL). If zero, RTD will not be scaled. If specified, the scaled value will be ORG_VALUE * Span + Zero. Example for C to F, use 1.8. Zero for RTDs 2-8

ERRTD_x_y_SPAN

Span for RTDs 2-8

280

I/O Mapping

Offset
64 65,66,67, 68,69 100 120 (Bit 0) *
121 *
124** 128** 132** 136** 140 (Bit 0) *
141 *
144** 148** 152* 156* .... 180 (Bit 0) *
181 *
184 ** 188 ** 192 ** 196 **

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Default Variable Name where x is the board slot and y is the pin number.
ERRTD_x_y_MODE ERRTD_x_y_MODE

Description

NOT USED; RESERVED FOR FUTURE USE

ERRTD_x_y_RESTORE

If set, restore RTD 1 calibration to Factory

Defaults. Will be reset when operation

completes.

ERRTD_x_y_OPERATION

Calibration Operation for RTD 1 ­ SINT

5 RTD Zero (100 Ohms)

6 RTD Span (300 Ohms)

7 RTD Coefficients (A, B, R0)

8 RTD Span (not using 300 Ohms)

ERRTD_x_y_COEFF_A

Coefficient A (RTD 1)

ERRTD_x_y_COEFF_B

Coefficient B (RTD 1)

ERRTD_x_y_COEFF_R0

Coefficient R0 (RTD 1)

ERRTD_x_y_APPLIED

The applied temperature when calibration

operation 8 was performed. (RTD 1)

ERRTD_x_y_RESTORE

If set, restore RTD 2 calibration to Factory

Defaults. Will be reset when operation

completes.

ERRTD_x_y_OPERATION

Calibration Operation for RTD 2 ­ SINT

5 RTD Zero (100 Ohms)

6 RTD Span (300 Ohms)

7 RTD Coefficients (A, B, R0)

8 RTD Span (not using 300 Ohms)

ERRTD_x_y_COEFF_A

Coefficient A (RTD 2)

ERRTD_x_y_COEFF_B

Coefficient B (RTD 2)

ERRTD_x_y_COEFF_R0

Coefficient R0 (RTD 2)

ERRTD_x_y_APPLIED

The applied temperature when calibration

operation 8 was performed. (RTD 2)

.....

ERRTD_x_y_RESTORE

If set, restore RTD 4 calibration to Factory

Defaults. Will be reset when operation

completes.

ERRTD_x_y_OPERATION

Calibration Operation for RTD 4 ­ SINT

5 RTD Zero (100 Ohms)

6 RTD Span (300 Ohms)

7 RTD Coefficients (A, B, R0)

8 RTD Span (not using 300 Ohms)

ERRTD_x_y_COEFF_A

Coefficient A (RTD 4)

ERRTD_x_y_COEFF_B

Coefficient B (RTD 4)

ERRTD_x_y_COEFF_R0

Coefficient R0 (RTD4)

ERRTD_x_y_APPLIED

The applied temperature when calibration

operation 8 was performed. (RTD 4)

* Value written to perform operation. The value will be reset by driver when the

operation completes.

I/O Mapping

281

ControlWave Designer Programmer's Handbook D301426X012 August 2020
** Value is read from the board by the driver. In order to perform calibration operations 7 and 8, the user can overwrite the values; then, issue the calibration command.

282

I/O Mapping

I/O Simulator

ControlWave Designer Programmer's Handbook D301426X012 August 2020

What is the I/O Simulator?
The control programs generated through ControlWave Designer are executed by the ControlWave controller using the IEC 61131 real time system, working in conjunction with ControlWave firmware.
The PC-based I/O Simulator operates using copies of the IEC 61131 real time system and ControlWave firmware which are identical to those running in the controller. This allows any control strategy generated for ControlWave Designer to be tested on a PC, with simulated analog and digital inputs and outputs. Initial I/O testing and debugging may be performed in a safe, isolated environment, without the need for a running ControlWave controller and process I/O boards.
Important The I/O Simulator is designed to work with IPCxx RTU resources. It does NOT work with ARM-based RTU resources. Therefore, projects created to run in the ControlWave MICROseries of controllers will not execute in the I/O Simulator.
Number of Boards Available within the I/O Simulator
The I/O Simulator has a limit on the number of boards that may be accessible within the simulation. This limit is dictated by an internal limit of 500 characters for the list used to describe the boards used in the I/O Simulator. If, while using the I/O Simulator, some boards do not appear, you must re-run the I/O Configurator, and select for I/O simulation the group of boards that are missing and de-select unused boards, as needed, so the limit is not exceeded.
Starting the I/O Simulator
Before you can start the I/O Simulator, you must identify it as the download destination for your control program. This is done in the Resource Settings dialog box.
To choose the resource, right click on the resource and choose "Settings" from the pop-up menu.

I/O Simulator

283

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Choose "Simulation 1"

Choose "Simulation 1" in the Resource Settings dialog box, and click on [OK]. Next, click as follows: OnlineProject Control The I/O Simulator will appear, however, no I/O boards will be displayed, yet.

Bring board list window to front

View board status

Open alarm window

284

I/O Simulator

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Minimize the I/O Simulator in order to uncover the RTU Resource dialog box.
Click on the [Download] button in the RTU Resource dialog box.

The Download dialog box will appear. Click the [Download] button in the Project section of the Download dialog box.
The RTU_Resource dialog box will re-appear. Click either the [Warm] or [Cold] buttons. The [Warm] button only re-initializes non-retentive variables, i.e. variables which are NOT marked as `RETAIN'. The [Cold] button re-initializes all variables.
If desired, execution can be stopped by clicking the [Stop] button. Then, execution can be re-started using either the [Warm] or [Cold] buttons.

I/O Simulator

285

ControlWave Designer Programmer's Handbook D301426X012 August 2020
In the I/O Simulator, icons will now appear for all configured process I/O boards. In this example, we have two process I/O boards ­ one analog input board, and one analog output board. In the figure, below, they are shown as Slot 1 and Slot 2, respectively.

Slot the board occupies

Click on either of the board icons, or press the [Enter] key while one of the boards is highlighted, and a graphical representation of the board, showing simulated values for all pins on the board will appear. Analog values are shown as bar graphs; digital values are shown as buttons.

Type of board

Board status indicator. Shows red when board simulation is disabled; green when board simulation is active. Click on it to change the board status.

Graphical representation of the value of each pin on the board.

286

I/O Simulator

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Enabling / Disabling the Board Simulation
For all board types, the board simulation can be enabled/disabled by clicking on the board status indicator in the upper right hand corner of the board graphic. This indicator will appear in green when the simulation is active, or red when the board simulation is turned off or the board has not been configured.
Analog Boards
Analog Input Boards
In analog input boards, the value of a particular pin may be altered by dragging the slider bar associated with the graphic for each pin. Alternatively, right click on the pin and choose "Configure Pin" from the pop-up menu. Enter a value in the "Current Value" field.
Drag slider bar to change value of this input pin
Current value displayed here
Analog Output Boards
Within the I/O Simulator Analog output boards are depicted similarly to analog input boards, however, you are NOT allowed to alter the value of individual pins.

I/O Simulator

287

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Digital Boards

Digital Input Boards

For digital input boards, the value of a particular pin may be altered by clicking on the

button which corresponds to that pin. A pin is ON when its button is displayed in green; a

pin is OFF when its button is displayed in red.

The pin's ON/OFF status can be

Pin status is displayed based on

toggled by clicking on it.

color; green is ON and red is

OFF.

Digital Output Boards
Within the I/O Simulator, digital output boards are depicted similarly to digital input boards, however, you are NOT allowed to alter the status of individual pins.
Counter Boards
High Speed Counter input values can be displayed within the I/O Simulator. You can also enter new values for the counter inputs.

288

I/O Simulator

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Viewing the Board Configuration Status
To view the status of a board in the I/O simulation, click on OptionsConfigure Current Board or right-click in certain portions of the graphical representation of the board and choose "Configure Board" from the pop-up menu.
Board Configuration Page
The contents of the Board Configuration page vary, depending upon what type of board you are configuring.
In all cases, you can disable the simulation for the board, by de-selecting the "Board Status" check box; this causes the text `NOT PRESENT' to appear. This is equivalent to setting the board status indicator to OFF.
Configuring a Pin
For boards which simulate input values, you can change the value / status of a particular pin, by rightclicking on the graphical representation for that I/O point, and chooisng Configure Pin from the pop-up menu. You can then enter a new value (for analog boards) or toggle the status (for digital boards). Output board types only allow you to view information about the pin, not to change it.

I/O Simulator

289

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Viewing Simulated Alarms
As you proceed to manipulate process variables in the I/O simulator, you can generate alarm messages, if those process variables are connected to alarm function blocks. The alarm messages can then be viewed in the Alarm Window. To view alarm messages in the I/O Simulator's Alarm Window, click on the 'Alarm Window' icon, or click on OptionsDisplay Alarm Window.

Shutting Down the I/O Simulator
The I/O Simulator cannot be shutdown from a board window; it will re-appear if you attempt this. The only way to shut it down is by choosing the [Close] button from the RTU_Resource dialog box.
Note: If the RTU_Resource dialog box is not visible, minimize other windows of the I/O Simulator to uncover it.
Troubleshooting Tip
For some Windows operating systems, if Physical Address Extension capability is turned ON, it may prevent the I/O Simulator from running and generate an error. If you are having trouble running the simulator you should check to see your operating system supports this capability, and if it does, try turning it OFF and see if this remedies the situation.
To see if Physical Address Extension is supported:
Double-click on System in the Windows Control Panel. If you see Physical Address Extension displayed on the "General" tab, it means your operating system supports this.

290

I/O Simulator

ControlWave Designer Programmer's Handbook D301426X012 August 2020

If you see "Physical Address Extension" displayed here, it means your operating system supports it.
To Turn Off Physical Address Extension:
There are two methods available for turning OFF physical address extension capability. Method 1: 1. In the System Properties dialog
box, click the Advanced tab. 2. Click Settings in the
Performance section.
Click "Settings".

3. In the Performance Options dialog box, click the Data Execution Prevention tab.

I/O Simulator

291

ControlWave Designer Programmer's Handbook D301426X012 August 2020
4. On the Data Execution Prevention tab, check the button for Turn on DEP for essential Windows programs and services only.

5. Click OK and reboot your PC for the change in settings to take effect.
Method 2:
If you are familiar with configuring system BIOS, you can turn physical address extension OFF in the BIOS by disabling NX technology.

292

I/O Simulator

ControlWave Designer Programmer's Handbook D301426X012 August 2020
IP Addressing and Networks
Internet Protocol (IP) is one method in which the ControlWave controller can communicate on a network. IP is supported through the ControlWave's Ethernet port(s), and serial IP (PPP) is supported through its serial ports.
What is the Format of IP Addresses?
Each network connection from an IP node has an IP address which is unique within the network. It is important to note that the IP address is associated with the network connection (IP Port) on the node, NOT the node itself. This allows a single IP node to have more than one IP port, and consequently, more than one IP address.
IP addresses consist of 32 bits (1's and 0's) which are divided up into 4 groups of 8 bits each. A period is used to separate each group. Each group of 8 bits is then converted from binary to a decimal number from 0 to 255. The resulting IP address is said to be in dotted decimal notation.

Each of the numbers in the address generally has a specific meaning. The IP address is generally divided up into a network portion which must be common to each node in the network, and a local portion of which some part must be unique to a particular node.
How is the Specific Meaning of Each Part of the Address Defined?
Addresses must be assigned to be consistent with whatever conventions have been established for your system. For example, if this network has connections outside the plant (such as connection to the real world-wide Internet), then the choice of this network number is assigned by an Internet governing body called the Network Information Center (NIC) or whatever Internet service provider you are using. In addition, there are certain rules to defining addresses, which will be discussed later.
The specific meaning of each part of the address is defined in something called the IP mask or sub-net mask. The sub-net mask is simply another set of 32 bits (which must also be converted to dotted decimal notation). Each bit in the sub-net mask corresponds to a bit in the IP address. If a bit in the sub-net mask is set to 1 (ON), then the corresponding bit in the IP address is considered to be part of the network portion of the IP address. The network portion can be ignored (or 'masked') when performing communications to nodes within the same network, because by definition, all nodes in the same network have identical network

IP Addressing and Networks

293

ControlWave Designer Programmer's Handbook D301426X012 August 2020
portions. Any bit in the sub-net mask which is 0 (OFF) is considered to be part of the local addressing scheme. The figure, below, shows the IP address and corresponding sub-net mask for an IP address of 120.0.210.1 and a sub-net mask of 255.0.0.0.
As we said before, a '1' in the sub-net mask indicates that the corresponding IP address bit is part of the network portion of the address. Because the first part of the IP address '01111000.' has a corresponding sub-net mask of '11111111' we know that '01111000' (120 in decimal) is the network portion of the address. The remaining parts of the IP address '00000000.11010010.00000001' have a corresponding sub-net mask of '00000000.00000000.00000000'. These bits are used as part of the local communications addressing scheme.

294

IP Addressing and Networks

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Rules for Creating a Local Addressing Scheme
When you are creating your IP address, the network portion of the address must appear first. For example, if the network portion is 200, you CANNOT define an IP address as 0.200.14.1. The network portion must appear first. This means that when creating the sub-net mask, the masked portion (i.e. all 1's) must appear first.
The organization of the remaining bits can follow any local communications scheme you choose to devise, except that each group of bits that represents something must be contiguous.
For example, let's say the first 16 bits have been 'masked out' to define the network address, i.e. there is a sub-net mask of:
11111111 . 11111111 . 00000000 . 00000000
which in dotted decimal format is:
255 . 255 . 0 . 0
That leaves 16 bits (indicated by the 0's) for devising a local communications scheme.
You might want to use the first 8 bits to indicate a section or area number for a section of your network. 8 bits will allow up to 256 sections to be defined. Another 8 bits (remaining out of the 16 available) can be used to indicate a node number, allowing up to 256 IP controllers (RTUs) and OpenBSI workstations, in a given section.

If you have a device (controller, or workstation) which will have multiple IP ports, we recommend you exercise special care when specifying the IP address and mask for each IP port to ensure that IP communication functions according to your plan. For example, you typically would want each IP port to sit on a unique IP network. This is because having two or more IP ports of the same device on the same network is not particularly useful, since only one of the ports will be allowed to send messages out to the network; the other ports will only be able to receive messages.

Sub-net Masks Determine Which Nodes are Reachable From this Node
So far, we have been talking about the mechanics of creating IP addresses and sub-net masks. The aspect we have not discussed is why IP addresses and subnet masks are so important.

IP Addressing and Networks

295

ControlWave Designer Programmer's Handbook D301426X012 August 2020
A node's IP address, and its sub-net mask, define the range of acceptable addresses with which the node can communicate. For example, if one node has an IP address of 4.3.2.1 and another node has an IP address of 100.100.0.1, there is no common network portion between the two addresses. For that reason, there is NO way these two nodes can communicate with each other directly - - they are each part of different networks. Any messages between these nodes would have to pass through one or more router computers.
For two nodes to communicate directly, the network portion of their addresses (as specified by the sub-net mask) must match exactly.
To illustrate this concept, look at the figure, below. The network shown has one Network Host PC (NHP) called NHP1, and 3 controllers (RTUs) named OAK_STREET, ELM_STREET, AND WALNUT_AVE.

However, the table below reveals a problem with the configured sub-net masks.

296

IP Addressing and Networks

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Node Name NHP1 WALNUT_AVE
OAK_STREET
ELM_STREET

IP Address, Subnet Mask:
IP ADR: 100.22.49.1 MASK: 255.255.255.0 IP ADR: 100.22.49.178 MASK: 255.255.0.0
IP ADR: 100.22.50.33 MASK: 255.255.0.0
IP ADR: 100.22.51.14 MASK: 255.255.0.0

Mask Says This Node Can Send Messages to All Nodes with Addresses: 100.22.49.yyy where yyy is an integer from 0 to 255. 100.22.yyy.zzz where yyy and zzz are integers from 0 to 255. 100.22.yyy.zzz where yyy and zzz are integers from 0 to 255. 100.22.yyy.zzz where yyy and zzz are integers from 0 to 255.

Based on their specified IP addresses and sub-net masks, OAK_STREET, ELM_STREET, and WALNUT_AVE can all communicate with each other. They can also send messages to NHP1.
There is a problem, however. NHP1 has a sub-net mask which specifies that it can only send messages to nodes with addresses 100.22.49.nnn where nnn is an integer from 0 to 255. The only node which it can send messages to, therefore, is WALNUT_AVE.
To remedy this situation, NHP1's sub-net mask should be changed to 255.255.0.0 so that it can also send messages to OAK_STREET and ELM_STREET. The corrected sub-net mask is reflected in the figure at right.

IP Addressing and Networks

297

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Adding a ControlWave to an IP Network with the RTU Wizard
Within OpenBSI's NetView program, the ControlWave can be added to an existing IP network in the same way as you would add any other controller.
Within the NetView tree, simply choose the icon for the network to which you want to add the ControlWave, right-click on the icon, and choose AddRTU to call up the RTU Wizard.
In the RTU Wizard, be sure you specify its node type, for example, 'ControlWave' 'CWave_MICRO', etc. and that you also specify the full path of the ControlWave project .MWT file.

Specify the full path of the ControlWave project (*.MWT file)

Choose the correct node type for your ControlWave unit

In addition, you should specify the startup web page for the controller. If the startup web page is on the PC, specify its full path. If it resides within the ControlWave, just specify the name and select the "Access startup page from RTU" check box.
You will also need to specify a local address for the ControlWave, and, as well as an IP address and IP mask for the ControlWave. The local address must match whatever local address has been defined for the ControlWave in the Port Configuration web page or Flash Configuration Utility 'Ports' page. The default is 1. This subject is discussed, in more detail, later.

298

IP Addressing and Networks

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Note: To view web pages in OpenBSI, the path of Microsoft® Internet Explorer (IEXPLORE.EXE) must be entered in the "Web Browser" field of the OpenBSI Application Parameters dialog box in NetView. To access the OpenBSI Application Parameters dialog box, sign on to NetView with the system password, and then click on the Application Parameters icon. For more information on the OpenBSI Application Parameters dialog box, and the NetView program, see the OpenBSI Utilities Manual (part number D301414X012).
Full details on adding controllers to OpenBSI networks are included in Chapter 6 of the OpenBSI Utilities Manual (part number D301414X012).
Setting up IP Ports in the Flash Configuration Utility
The `Ports' page in the Flash Configuration Utility allows you to configure the characteristics of the ControlWave-series controller's serial and Ethernet ports. See the `IP Ports ­ Ethernet' and `IP Ports ­ PPP' sections in this manual for more information.
Recommended Ranges for IP Addresses
If you are intending to connect your OpenBSI network directly to the global world-wide Internet, you must obtain a range of IP addresses from your Internet service provider (ISP) or from an Internet governing body such as the Internet Assigned Numbers Authority (IANA).
If you have no plans to connect your network to the global Internet, there is no restriction on your choice of IP addresses, however, the Internet Engineering Task Force recommends (in accordance with RFC 1918, or Rekhter, et al, Best Current Practice memo - Address Allocation for Private Internets, Internet Engineering Task Force, February, 1996; see http://www.ietf.org for the complete text of this memo) that IP addresses for private networks should be assigned from the following ranges:
10.0.0.0 to 10.255.255.255
172.16.0.0 to 172.31.255.255
192.168.0.0 to 192.168.255.255
These particular ranges of Internet addresses have been set aside for private networks. Any messages coming from these addresses can be recognized by most Internet Service Providers (ISP) as coming from private networks, and so can be filtered out. This helps avoid addressing conflicts should an accidental connection occur between a private network, and the global Internet.
Devices (e.g. controllers, workstations) in networks created with OpenBSI must always use fixed IP addresses. This causes certain complexities if you choose to use Dynamic Host

IP Addressing and Networks

299

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Configuration Protocol (DHCP) in your network to provide addresses to other nonControlWave or Network 3000 devices. Because DHCP assigns IP addresses dynamically, as they are needed, you must examine your DHCP server to determine the addresses which have been assigned for each ControlWave or Network 3000 controller or OpenBSI workstation and then manually enter those addresses in NetView. You should then specify the longest possible lease time for the addresses, to help prevent the loss of a given address through a device failure.
It is also strongly recommended that the DHCP server is configured such that the addresses reserved for the controllers are permanently reserved (by tying them to the RTU MAC addresses within the DHCP configuration or by having them in a totally different address range). The same should be done when configuring RAS servers or other machines capable of providing dynamic addressing information. Otherwise, you can easily have duplicate IP addresses on your network.

300

IP Addressing and Networks

IP Parameters

ControlWave Designer Programmer's Handbook D301426X012 August 2020

The IP Parameters page is accessible from the "IP Parameters" tab in the Flash Configuration Utility. This page is used to specify the IP addresses (in dotted decimal format) of this controller's Network Host PC (NHP), as well as UDP port/socket information. Additional parameters are available related to IP routing, and communications security.

NHPs: UDP Ports:

IP ADDR A: This is the primary IP address for this controller's Network Host PC (NHP). It must be entered in dotted decimal format.
IP ADDR B: This is a secondary IP address for the same NHP referenced by "IP ADDR A" or the IP address of a redundant backup NHP. It must be entered in dotted decimal format. If neither of these situations apply, leave IP ADDR B blank.

IBP:

This is the UDP port number (socket number) used by the IP driver. It is used

to split message traffic along different streams. All PCs or RTUs which are to

communicate with each other must have the same "IBP" number. In a sense, this

value is like a common password which must be known by each node in the

network. If no value is entered, a default value from the NETDEF files is used.

(NOTE: Although the term UDP Port is used, it has no actual relationship with

the physical communication ports.)

Time Synch: This is the UDP port number (socket number) used for time synchronization of the RTUs. All PCs or RTUs must have this value defined, or else they will be unable to receive time synchronization messages. In a sense, this value is like

IP Parameters

301

ControlWave Designer Programmer's Handbook D301426X012 August 2020
a common password which must be known by each node in the network. If no value is entered, a default value from the NETDEF files is used. (NOTE: Although the term UDP Port is used, it has no actual relationship with the physical communication ports.)

SNMP: (Requires CWP/LPS/CWR 03.00 or newer firmware)
Disable SNMP Processing: SNMP allows certain IP parameters to be monitored and adjusted remotely. For security purposes, you may want to check this box to disable this capability.
Other notes about SNMP:
If you choose to leave SNMP processing enabled, you should be aware of the following things:
ControlWave supports RFC1213 (MIB II).
For the community string, any string is accepted to read data. For writes (updates) the community string must be specified as a valid <username>/<password> combination.
The system contact, description, and location strings are taken from the _CW_CONTACT_STR, _CW_DESCRIPTION_STR, and _CW_LOCATION_STR system variables. See the System Variables section of this manual for more information on these strings.

Gateway:

Default G/W:

This is an IP address of a default gateway. The default gateway is an address to which the system sends any messages with destinations that are not directly reachable (that is, not in the address range specified via the IP mask for this node). This address must be entered in dotted decimal format. For more information on using gateways in your network, see Chapter 1 of the OpenBSI Utilities Manual (part number D301414X012).

RIP Protocol:

This section allows configuration of parameters for the Routing Internet Protocol (RIP) (refer to Douglas Comer and David Stevens, Internetworking with TCP/IP - Volumes 1 & 2 (Englewood Cliffs, NJ: Prentice Hall, 1991); Frank Derfler and Steve Rigney, TCP/IP A Survival Guide for Users (New York: MIS Press, 1998). RIP is used to support dynamic IP routing (described below) and is implemented beginning in ControlWave firmware CWP02.0. A router which supports RIP essentially maintains a set of tables of IP address ranges which it can reach, either directly, or through another router. Users can specify include address ranges and exclude address ranges for use in these tables, to avoid sending out routes to known areas in the same network.
Each router sends a broadcast message (at periodic intervals) which includes these tables. Other routers receive the broadcast message, and determine from them, whether there is a better route to a particular IP destination, than the route stored in their own tables. If there is, they update their own tables. In this way, devices throughout the network(s) can

302

IP Parameters

ControlWave Designer Programmer's Handbook D301426X012 August 2020

determine the best possible route for sending a message from one node to another. Various safeguards are built into the protocol to prevent looping situations where two routers each think the other router has the best route to a particular destination.

Inclusion Addr:

This is an IP address, which will be used with the Inclusion Mask (below) to define a range of IP addresses which this controller will 'advertise' that it can reach, and so will be included in RIP broadcasts throughout the network. Note that this range may be further restricted based on the optional definition of an Exclusion Addr and Exclusion Mask.

Inclusion Mask:

A non-zero value in any of the Inclusion Mask fields indicates that the corresponding Inclusion Addr field is specifying a portion of the IP address which must be identically matched with every IP address on routes which this controller is 'advertising' in its RIP broadcasts. A zero value in any of the Inclusion Mask fields means that any integer from (0 to 255) is considered valid for that corresponding portion of the Inclusion address.

Exclusion Addr:

This is an IP address, which will be used with the Exclusion Mask (below) to define a range of IP addresses on routes which this controller will not advertise in its RIP broadcasts, because they are already known to be reachable (that is, they are in the same network). Note that this range can be further modified based on the optional definitions of an Inclusion Addr and Inclusion Mask discussed above.

Exclusion Mask:

A non-zero value in any of the Exclusion Mask fields indicates that the corresponding Exclusion Addr field is specifying a portion of the IP address which must be identically matched with every IP address which this controller is specifically excluding from its advertised routes. A zero value in any of the Exclusion Mask fields means any integer from (0 to 255) is considered valid for that corresponding portion of the destination Exclusion address.

Important: If you do not make any entries in either the Inclusion Addr/Mask or Exclusion Addr/Mask, RIP will NOT function.
Also, only devices which have been configured for RIP will be able to make use of the routing tables provided in the RIP broadcast messages.
Some examples for setting the inclusion and or exclusion address/mask pairs are shown below:
In Example #1, on the next page, Network A, as well as Gateway 1 and Gateway 2 are all configured with RIP. Network B is not configured with RIP but has Gateway 1 as its default Gateway. Because of RIP, Network A will know about Gateway 2 as an alternate route to Network B, if Gateway 1 should fail.

IP Parameters

303

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Example #1 In this arrangement, Network A knows that both GATEWAY 1 and GATEWAY 2 provide a route to Network B. Should either GATEWAY fail, traffic to Network B can be routed via the other GATEWAY.
Network A and Gateways 1&2 support RIP. Inclusion address/masks are set as follows:

Network A

Inclusion Addr: 172.16.0.0 Inclusion Mask: 255.255.0.0

ControlWave 10.0.0.1 10.0.0.2
ControlWave

10.0.0.200 GATEWAY 1 172.16.0.200 10.0.1.200 GATEWAY 2 172.16.1.200

Network B does NOT support RIP, but has GATEWAY 1 as its default gateway. Default Gateway: 172.16.0.200
Network B
ControlWave 172.16.0.1
172.16.0.2 ControlWave

In Example #2, Networks A and B, as well as the Gateways are all configured to support RIP. Here we specified just an Exclusion Address and Mask for an address which isn't even on any of the two networks. In this case we chose 1.1.1.1. With this minimal exclusion range defined, RIP broadcasts will include routes to ALL known addresses outside a particular Network, i.e. Network A will receive information about routes to Network B, and Network B will receive information about routes to Network A.

Example #2 - Network A, Network B, and all the gateways are configured for RIP, so that all routes between the networks are known.
Configure Exclusion Addr/Mask as follows:

Network A

Exclusion Addr: 1.1.1.1 Exclusion Mask: 255.255.255.255

Network B

ControlWave 10.0.0.1 10.0.0.2
ControlWave

10.0.0.200 10.0.1.200

172.16.0.1 ControlWave GATEWAY 1 172.16.0.200
172.16.0.2 ControlWave GATEWAY 2 172.16.1.200

304

IP Parameters

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Dynamic IP Routing Ping:

Dynamic IP routing is discussed in the description of the IP Routes page.

Rate:

This is the frequency (in milliseconds) at which an IP route will be tested (via a ping message) to verify that the connection still functions. If the test is unsuccessful (no return from the ping within the specified timeout) the test is said to have failed. If Retries is a non-zero value, that number of additional attempts will be made to perform the ping test. If the test is still unsuccessful, IP traffic will be re-routed according to the information defined on the IP Routes page.

Timeout: This is period of time (in milliseconds) after which a ping test of a given IP route is said to have failed.

Retries:

This is the number of additional attempts to perform a ping test will be performed after the first failure. If the total number of retries has been exhausted, re-routing of IP traffic will begin.

Challenge Protocol:

Two standard protocols have been implemented for security on PPP links in networks of ControlWave controllers: Challenge Handshaking Authentication Protocol (CHAP) and Password Authentication Protocol (PAP). These protocols operate in a client/server arrangement. Typically, CHAP should be used since it is more secure.

The CHAP (or PAP) server would be a ControlWave-series controller. The CHAP (or PAP) client could be either a ControlWave-series controller or an OpenBSI workstation.

The client must always supply a valid username/password combination in order to gain access to the server. If a ControlWave controller is the client, the username and password combination must have been pre-configured in the unit as a parameter stored in FLASH. This username / password text string will automatically be transmitted in response to a login prompt from the server.

Default Username:

This is the username which will be transmitted if this ControlWave is serving as a PAP/CHAP client, and receives a challenge message from the PAP/CHAP server. This username must be one of the user accounts defined for the ControlWave, and will be sent along with the password defined for the specified user account.

Click [Write to RTU] to save changes to the IP parameters. NOTE: Changes will NOT take effect until after the controller has been powered off and then back on.

IP Parameters

305

ControlWave Designer Programmer's Handbook D301426X012 August 2020

306

IP Parameters

IP Ports - Ethernet

ControlWave Designer Programmer's Handbook D301426X012 August 2020

A ControlWave-series controller's IP addresses are tied to its communication ports. There are two types of IP ports supported in ControlWave ­ Ethernet, and Point-to-Point Protocol (PPP). This section covers the Ethernet type:
Setting Up an Ethernet Port
Any of the Ethernet ports may be configured for IP communication. This configuration is performed from the `Ports' page of the Flash Configuration Utility.

Specify an IP address and an IP mask.

1. Choose the Ethernet port you want to configure.
Note: If you will be defining more than one IP port (whether PPP or Ethernet) for this controller, it is strongly recommended that each IP port reside on a separate IP network. If you define more than one IP port on the same network, only one of the ports will be able to send messages; the other port(s) will only be able to receive messages.
2. Specify an IP address in the IP ADDR A field and enter an IP MASK for this port. IP addresses must be unique within your network. Conversely, IP masks are typically the same for all devices in the same portion of a network. Together, the IP address and IP mask define a range of addresses to which this port can send messages. (See Recommended Ranges for IP Addresses in the IP Networks and Addressing section.)

IP Ports - Ethernet

307

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Note: The IP ADDR B field only applies when configuring a redundant controller.
Basically, a non-zero value in any of the "IP MASK" fields indicates that the corresponding "IP ADDR A" field is specifying a portion of the IP address which must be identically matched with every destination IP address to which this port will send messages. A zero value in any of the "IP MASK" fields means that this communication port can send messages to addresses in which any integer from (0 to 255) is considered valid for that corresponding portion of the destination IP address.
Important In newer ControlWave units, all Ethernet ports are pre-programmed at the factory with initial IP addresses and masks, as follows: ETH1 IP Address: 10.0.1.1 IP Mask: 255.255.255.0 ETH2 IP Address: 10.0.2.1 IP Mask: 255.255.255.0 ETH3 IP Address: 10.0.3.1 IP Mask: 255.255.255.0 Because each unit shipping from the factory will have these initially pre-programmed, you should only use these addresses for `bench' testing and configuration. These addresses must be changed before putting ControlWave units on an actual network, since an address conflict would exist as soon as the second ControlWave unit was placed online.
In the figure on the previous page, the "IP ADDR A" for the port is 10.211.74.222 and the "IP MASK" is 255.255.0.0. This means that this port can send to any address in the format 10.211.x.y where x and y are any integer from 0 to 255. So, 10.211.1.7 and 10.211.35.93 would be valid destinations, but 10.45.1.1, and 10.83.27.1 would NOT be because the 255.255 in the "IP MASK" indicates that the corresponding portion of the destination's IP address MUST be 10.211.
Important If you accidentally specify overlapping address ranges for two or more Ethernet ports, ONLY the last Ethernet port created will function.
3. Click [Write to RTU]. 4. You must reset the controller to activate the new port configuration.

308

IP Ports - Ethernet

IP Ports ­ PPP

ControlWave Designer Programmer's Handbook D301426X012 August 2020

A ControlWave-series controller's IP addresses are tied to its communication ports. There are two types of IP ports supported in ControlWave: Ethernet and Point-to-Point Protocol (PPP). This section covers the PPP type.
Setting Up A Serial IP Port (PPP)
When the default switch is OFF, serial port COM1 on the ControlWave has an IP address of 1.1.1.1, and is configured for the serial point-to-point protocol (PPP). In any other configuration, PPP must be configured by the user.
Any of the serial COM ports can be configured as Serial IP (PPP) ports.
This configuration is performed from the Ports page of the Flash Configuration Utility.

Specify the baud rate for the port; this must match whatever baud rate you specify for the PC port.

Choose "PPP"

Specify an IP address for this port

Specify an IP mask for this port

1. Choose the ControlWave port you want to configure.

IP Ports - PPP

309

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Note If you will be defining more than one IP port (whether PPP or Ethernet) for this controller, it is strongly recommended that each IP port reside on a separate IP network. If you define more than one IP port on the same network, only one of the ports will be able to send messages; the other port(s) will only be able to receive messages.
2. Choose 'PPP' from the "Mode" list box.
3. Choose the desired baud rate from the Baud Rate field. This must match the baud rate configured for whatever software you are using at the PC.
4. Either PAP or CHAP security can be configured on PPP lines. See the Security section in this manual for more information.
5. Specify an IP address in the IP ADDR field, and specify an IP MASK for this port. IP addresses must be unique within your network. Conversely, IP masks are typically the same for all devices in the same portion of a network. Together, the IP Address and IP Mask define a range of addresses to which this port can send messages. (See Recommended Ranges for IP Addresses in this manual for more information.)
Basically, a non-zero value in any of the IP MASK fields indicates that the corresponding IP ADDR field is specifying a portion of the IP address which must be identically matched with every destination IP address to which this port will send messages. A zero value in any of the IP MASK fields means that this communication port can send messages to addresses in which any integer from (0 to 255) is considered valid for that corresponding portion of the destination IP address.
In the figure on the previous page, the IP ADDR for the port is 10.1.1.1 and the IP MASK is 255.0.0.0. This means that this port can send to any address in the format 10.x.y.z where x, y, and z, are any integer from 0 to 255. So, 10.43.127.76 and 10.84.35.93 would be valid destinations, but 5.1.1.1 would not because the 255 in the IP MASK indicates that the corresponding portion of the IP ADDR MUST be 10.
6. If this PPP port uses PAP or CHAP protocol, choose whether the port is a PAP/CHAP server or a PAP/CHAP client, and select the appropriate protocol. See Security Protocols for an explanation of PAP and CHAP.. If the PC workstation is a server, you must configure the port as a client.
7. Click [Write to RTU].
8. Reset the controller to activate the new port configuration.

310

IP Ports - PPP

IP Routes

ControlWave Designer Programmer's Handbook D301426X012 August 2020

The IP Routes page is accessible from the "IP Routes" tab in the Flash Configuration Utility.
Beginning with ControlWave firmware CWP02.0, multiple gateways (routers) can optionally be configured for a particular network to support dynamic IP routing.
A dynamic IP route is considered to be a range of destinations (IP addresses) and the gateways used to reach them.
Gateways are essentially routers (devices which have IP connections on two or more separate networks). As such, they provide a means for sending messages from one network to another. You might want to think of gateways as entrance ramps to a highway.
Up to 4 gateways can be configured to reach a particular destination address range, and each controller can have up to 16 destination address ranges specified.
Since messages can be sent to a particular route by a choice of more than one gateway, the system can attempt transmission through one gateway, and if it fails, traffic will be sent through one of the other gateways. This provides a degree of fault-tolerance in the system (see the following figure).

Network A

If one gateway fails, message traffic between networks 'A' and 'B' can be re-routed through one of the other three gateways.
USING MULTIPLE GATEWAYS FOR FAULT TOLERANCE

Network B

ControlWave 10.0.0.1 10.0.0.2
ControlWave

Hardware failure
10.0.0.200 GATEWAY 172.16.0.200

ControlWave 172.16.0.1 172.16.0.2 ControlWave

ControlWave 10.0.0.3

10.0.0.201 GATEWAY 172.16.0.201

172.16.0.3 ControlWave

ControlWave 10.0.0.4

10.0.0.202 GATEWAY 172.16.0.202

172.16.0.4 ControlWave

ControlWave 10.0.0.5

10.0.0.203 GATEWAY 172.16.0.203

172.16.0.5 ControlWave

10.0.0.6 ControlWave

172.16.0.6 ControlWave

IP Routes

311

ControlWave Designer Programmer's Handbook D301426X012 August 2020
The system can test a particular path by using a specified ping address. The ping address could be the gateway itself, or it could be the destination controller.
The actual re-routing occurs only after a specified timeout has expired. (See the IP Parameters section in this manual for details.)
The 'IP Routes' page displayed, below, shows a typical configuration for the network depicted on the previous page. (This configuration would be for a controller belonging to network "A" as shown on the previous page.)

After you have completely defined a particular route, you can click on the next route number in the box in the upper left corner, and the various fields will be cleared to allow you to enter information on the next route. A total of 16 separate routes can be defined.

Route x Destination

IP Address:

This IP Address together with its IP Mask define a range of destination IP addresses on this particular route.

IP Mask:

Any non-zero value in the IP Mask specifies a portion of the IP address which must be identically matched with every IP address on the destination route.

Check Primary: In the event re-routing has occurred due to a failure, checking this selection will force a re-test of the first gateway (or ping address) to see if the failure has been corrected, thereby allowing traffic to return to its normal path via the first gateway. This might be particularly important if the secondary route is slower than the primary. If this is NOT checked, traffic will continue to use the secondary route, unless it too fails.

312

IP Routes

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Route x Gateways:
IP Address 1 to IP Address 4: These must be IP addresses for gateways which are in the same network as the current controller. During normal operation, the gateway 1 address would be used, but if there is a failure along the path defined for that gateway, an attempt will be made to re-route traffic to the next gateway (IP address 2). If that second gateway cannot be used, then the next would be used, and so on, up to the fourth gateway. If the last configured gateway fails, an attempt will be made to use the first gateway, and so on.
Route x Pings:
IP Address 1 to IP Address 4: For each of the four possible paths of a given route, the user can optionally define a ping address for testing the route. Typically, the ping address would be the IP address used by the gateway connection in the other network. Alternatively, the ping address could be one of the destination controllers in the other network; this might be done to check for failure of one of the controllers in a redundant pair.

IP Routes

313

ControlWave Designer Programmer's Handbook D301426X012 August 2020

314

IP Routes

Libraries

ControlWave Designer Programmer's Handbook D301426X012 August 2020

A library is a collection of functions and function blocks,which can be used in a ControlWave Designer project. There are two types of libraries: firmware libraries and user-created libraries.
Firmware libraries include functions and function blocks which are defined in the internal system firmware of the ControlWave controller. They have the file extension, *.FWL, and are loaded automatically when you create a project using the ControlWave template. Two examples of firmware libraries are the ACCOL3 library, which includes all of the ACCOL3 functions and function blocks, and the PROCONOS library, which includes various KW standard function blocks, and IEC 61131 standard function blocks. NOTE: For information on the various functions and function blocks in the ACCOL3 and PROCONOS libraries, please consult the online help in ControlWave Designer.
User libraries include functions and function blocks, which you have created yourself, for some application-specific purpose. User created function blocks are made by combining, in some logical way, functions and function blocks that already exist, typically from the ACCOL3 or PROCONOS firmware libraries. User libraries have a file extension of *.MWT, and can be re-used in any ControlWave project, by inserting the library in that project.
Creating a Library of User-defined Function Blocks

Note For information on creating user-defined function blocks (which you must do before you can create a user library) see Function Blocks - Creating in this manual.
1. Choose an existing project (*.MWT file) which includes the user-defined function blocks you want as part of your user library. If desired, rename that project to reflect the name you want for your library. In this case, we have named our library `My_own_library'.

2. Open whichever project you want to include the library in. Right click on the "Libraries" icon and choose "InsertUser Library" from the pop-up menus.

Libraries

315

ControlWave Designer Programmer's Handbook D301426X012 August 2020
3. Select the MWT file from step 1. This is called announcing the library.

4. The next time you call up the Edit Wizard, the library should appear as a group, from which you can select your user-defined function blocks.

Manually Including the ACCOL3 Firmware Library in Your Project
Note If you are unsure whether the ACCOL3 Firmware Library is part of your project, look in the "Libraries" folder in your project tree. If you see `Accol3' in the tree, you already have the ACCOL3 Firmware Library included. You can then skip this section.
Note If, when you first opened your new project, you chose the ControlWave template, the ACCOL3 firmware library (which includes the ACCOL3 function blocks) was automatically included in your project. You can then skip this section.
If you did not choose the `ControlWave' template when you opened your new project, and you want to use ACCOL3 function blocks as part of your project, you must include the ACCOL3 Firmware Library.

316

Libraries

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Note All parameters for the function blocks in the ACCOL3 Firmware Library are forced by the system to be RETAIN variables.
To do this, right click on "Libraries" in the project tree, and choose "Insert" from the pop-up menu. The Include Library dialog box will appear. Change the "Files of type" list box to show `Firmware Library (*.fwl)'.
Go to the folder, `\OpenBSI\Mwt\Plc\FW_lib\Accol3\' and click on `Accol3.fwl' in the list box, then click on the [Include] button.

The ACCOL3 Firmware library will now appear in the project tree, under "Libraries".
The ACCOL3 library now appears in the project tree

Libraries

317

ControlWave Designer Programmer's Handbook D301426X012 August 2020

318

Libraries

Memory Usage

ControlWave Designer Programmer's Handbook D301426X012 August 2020

This section explains the terminology used in the discussion of ControlWave memory, and explains the differences between the different kinds of memory used in the ControlWave series of controllers.

Note
This section describes the memory for a standard ControlWave first. The internal memory arrangement and usage for other ControlWave products (Micro, XFC, EFM, GFC, Express, CW_10, CW_30, CW_35) are different. Variations between the different products are discussed near the end of this section.

Some Background - What is Memory?
As a ControlWave controller runs its program(s), the controller's central processing unit (CPU) executes each instruction in the program. These instructions, and the data associated with them, are read from, and/or written to, physical locations within computer chips in the controller. These physical locations are referred to as memory. They are similar to memory you might have in your personal computer at home. Each memory location also has a numerical identifier called an address. The address is used internally to locate data stored in memory.
The amount of memory in your controller varies depending upon the purchased memory options.
Information in memory is stored as a series of 0s and 1s; each '0' or '1' is referred to as a bit. These bits are grouped together into chunks of 8 which are called bytes. (Two bytes together are called a word.) Each byte can hold a character of data. A group of 1024 bytes is referred to as 1K. 1024K is referred to as a Megabyte or 1MB.
What is Downloading?
Downloading is the process of transferring the compiled control strategy from your PC workstation, into the memory of the ControlWave controller. Additionally, you can also download the compressed project source code (*.ZWT).
In ControlWave Designer, you create a control strategy that directs the controller to perform a system-specific job and save that strategy as a ControlWave project. The project is compiled and the resulting computer code is then downloaded from the PC into the ControlWave's memory using either ControlWave Designer or the OpenBSI Downloader.
When downloading the project directly from within ControlWave Designer, you have a choice of downloading the project directly into the dynamic memory, or downloading into the flash memory area (this is called downloading the bootproject). When downloading from the OpenBSI 1131 Downloader, only the bootproject may be downloaded.

Memory Usage

319

ControlWave Designer Programmer's Handbook D301426X012 August 2020
A project can only execute from the dynamic memory area, but is lost in the event of a power failure or a program watchdog condition.
Because dynamic memory is not saved in these situations, a copy of the project is typically stored in the bootproject area of flash memory. The bootproject cannot execute from inside the flash memory area, but is automatically copied into the dynamic memory area during system re-boot (either from a power restoration after power failure or a restart following program watchdog condition).
Typically, you download a project into the dynamic memory area only during system development and debugging. Once a control strategy is finalized, and has been tested fully, it should be downloaded as the bootproject into flash memory.
Instructions for downloading from within ControlWave Designer are included in the section Downloading with ControlWave Designer in this manual. Instructions for downloading using the OpenBSI Downloader are included in Chapter 7 of the OpenBSI Utilities Manual (part number D301414X012).

Types of Memory in the ControlWave Process Automation Controller (CW PAC)
 The system supports four types of memory which are of interest to the user:  Boot flash  Synchronous Dynamic Random-Access Memory (SDRAM)  Static Random-Access Memory (SRAM)  Flash

Note
In addition to the memory types listed here, the CPU contains its own CMOS RAM for the real-time clock and configuration data. None of this memory can be directly used by your ControlWave program(s).

The following table details the types of information stored in these types of memory.

Type of Memory
Boot Flash

Amount Currently Supported
512K

Usage
 Soft switch values.  User account and port configuration parameters.  Archive File Definitions  Audit Trail Configuration Parameters

320

Memory Usage

Type of Memory
SDRAM SRAM
Flash Memory

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Amount Currently Supported
64 MB
2 MB
32 MB

Usage
 The running control strategy (ControlWave project) and the current values of any variables NOT marked as RETAIN, or stored in the Static Memory area.
 A copy of the system firmware (loaded from FLASH into SDRAM to allow for faster system execution).
Notes:  The project and system firmware can ONLY execute in SDRAM.  Anything stored only in SDRAM is lost in the event of a watchdog failure or power failure.  Current status of output variables in RETAIN.  Historical data (Audit Trail / Archive) (Optional - most users choose to store this information in FLASH instead)  Current values for any variables marked as 'RETAIN' including the variables associated with ACCOLIII function blocks.  Values for variables manually assigned to the Static Memory Area (beginning with addresses %3.100000). The static memory area is only initialized at a system cold start (discussed later).  Pending alarm messages (alarms which have not yet been reported to the user)
Notes:  So long as switch SW1-5 is set ON, and the backup battery continues to operate, data stored in SRAM is retained in the event of a system warm start. This memory is initialized, however, if switch SW1-5 is set OFF, or if the backup battery fails.
The ControlWave system firmware (firmware uses up to 4MB). The remaining memory can hold the following:
 The ControlWave bootproject  The compressed ControlWave source code file including
graphical elements of the project (*.ZWT)  Historical data (Audit Trail / Archive) Notes:  The flash memory area is unaffected by a power failure or
watchdog condition.

Memory Usage

321

ControlWave Designer Programmer's Handbook D301426X012 August 2020
BOOT FLASH 512 K Audit/Archive Def Soft Switches User Accounts Port Config.

Static RAM - 2 MB Unreported (Pending) Alarm Messages
Historical Data (Audit / Archive)
RETAIN Area - All variables marked as "RETAIN" in project
Static Memory Area - Starts at address %3.100000

FLASH Memory - 32 MB
System Firmware Loaded at the factory
Historical Data (Audit / Archive)

Executing PROJECT incl. all variables not stored in SRAM

Zipped copy of project incl. graphics, etc. (*.Zwt)

Copied on re-start

BOOT PROJECT

322

Memory Usage

ControlWave Designer Programmer's Handbook D301426X012 August 2020
What happens in the event of a power failure or the power switch is turned off?
If the ControlWave loses power, or the power switch is turned off:
 The synchronous dynamic RAM (SDRAM) area is cleared. The executing control strategy, and its running data are lost.
 If the SRAM Control Switch (SW1-5) is set to ON and the backup battery for the SRAM remains good, data is preserved. If you have made edits to your project that directly affect variables marked 'RETAIN', the RETAIN area may be erased when the system restarts, because the structure of the RETAIN area has been modified. Other areas of SRAM (such as the Static Memory Area or historical data) are not erased.
 Flash and BOOT FLASH memory will be preserved.
The controller will attempt to restart immediately whenever power is restored. (See What happens on restart after a power failure or watchdog?).
What happens in the event of a watchdog condition?
If the ControlWave suffers an internal program error (but power remains good) which causes the executing control strategy to halt (called a watchdog condition):
 The synchronous dynamic RAM (SDRAM) area is cleared. The executing control strategy, and its running data are lost.
 Any analog I/O boards which are configured with hold values will hold their last value at the output pins, provided that the I/O board still has power. NOTE: Only certain analog I/O boards support this feature.
 If the SRAM Control Switch (SW1-5) is set to ON, and the backup battery for the Static RAM (SRAM) remains good, data is preserved. If you have made edits to your project that directly affect variables marked 'RETAIN', the RETAIN area may be erased when the system restarts, because the structure of the RETAIN area has been modified. Other areas of SRAM, i.e. the Static Memory Area, historical data, etc. will not be erased.
 Flash and Boot flash memory is preserved.
 The Watchdog hardware relay/switch circuitry will be activated (this can be wired to an external device (klaxon, alarm bell, etc.) to indicate that the controller has entered a watchdog condition.
The controller will attempt to restart immediately after entering the watchdog state. (See What happens on restart after a power failure or watchdog?).

Memory Usage

323

ControlWave Designer Programmer's Handbook D301426X012 August 2020
What happens on restart after a power failure or watchdog?
When a ControlWave controller first starts up, it first performs various diagnostic checks ("is the power stable?" etc.). The results of these checks are displayed on the power-on self test (POST) display. Internal system devices are then initialized.
Under normal operation (no system firmware upgrade needed) the system then decides whether it can perform a system warm start or a system cold start.
Note: System firmware is loaded into the ControlWave before it leaves the factory. If you need to perform a field upgrade of system firmware (new version released with new features, or update needed to correct some problem), set switch SW3-3 on before powering on the ControlWave. The ControlWave then enters recovery mode and shows "86" on the display. You can then load system firmware (for directions, refer to the ControlWave Process Automation Controller Instruction Manual, part number D301381X012).
System warm start or system cold start
A system cold start occurs when the SRAM control switch (SW1-5) is set to OFF or the backup battery for the SRAM has failed. In either of these cases, the entire static RAM (SRAM) area is erased. Any other situation is referred to as a system warm start.
Load System Firmware, Start Communications
Once the system warm start or system cold start completes, the system firmware is copied from flash memory into SDRAM, because firmware can only execute from SDRAM.
Next, the communication system starts. Soft switches are read, and the communication ports are activated.
Next, the ControlWave checks to see if there is a project in the bootproject area of flash memory. If no project is present, the ControlWave shows "00" on its display and waits for you to download a project. If a project is present, the bootproject will be copied into dynamic memory SDRAM to allow it to be executed. The system then determines whether to perform an application warm start or an application cold start.

324

Memory Usage

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Application Warm Start or Application Cold Start
An application warm start means that the project in SDRAM starts from the beginning of its cycle, using saved values for variables marked "RETAIN" from the static RAM (SRAM). Application warms starts are performed whenever there is no version mismatch between the project, and the retain values, and there was no system cold start.
If a system cold start occurred (because of loss of battery power to the SRAM or the switch SW1-5 was set to off), all data in static RAM is gone, so an application cold start must be performed.
In this case, the project in SDRAM is started from the beginning, and all variables are set to their initial values.
You can also perform application warm starts and cold starts on demand after downloading a project from within ControlWave Designer by clicking the [Cold] or [Warm] buttons in the RTU Resource dialog box.
The figure on the next page shows the start-up sequence of the ControlWave controller following a watchdog or restoration of power.

Memory Usage

325

ControlWave Designer Programmer's Handbook D301426X012 August 2020

OR
Power switch turned from "O" to "1" by the user

Controller watchdog failure and restart is attempted (Switch SW1-1 must be set to ON - Watchdog enable)

OR
System power is restored after a power failure

System checks if power is

stable? (indication to user:

PWRGOOD

NO

LED on Power Supply

Sequencer Module turns

GREEN)

See Figure 1-7 in CI-ControlWave for location of Status LEDs on Power Supply Sequencer Module

System checks if Master Clear

(MC) is ON, i.e. are voltage levels

within acceptable limits?

(indication to user: MC LED on Power

NO

Supply Sequencer Module is briefly RED as voltage levels go from

outside limits into acceptable range.)

YES

System performs BIOS Power On Self Test (POST) (Indication to user: POST codes appear briefly on display).

See Table 3-3 of CI-ControlWave for POST status codes

APPLICATION WARM START
The PROJECT is started from the beginning, using any values marked as "RETAIN" that were stored in SRAM

Enter Recovery Mode and wait for system firmware to be loaded via Hyperterminal (Indication: An "86" appears on the display)

YES

Load system fiirmware as described in Chapter 2 of hardware manual (CI-ControlWave)

Is the unit set for recovery mode? (Switch SW3-3 in ON position. Should only be used when user wants to perform a field upgrade of system firmware)
NO

See Table 2-2 of CI-ControlWave for info. on this switch

Initialize internal system devices (Real Time Clock, Math co-processor, etc.)

YES
Can an application warm start be performed?
(i.e. NO SYSTEM COLD START, there is saved data in SRAM, and there is no version mismatch between the data in SRAM and BOOT PROJECT)

APPLICATION COLD START
NO All variables in the RETAIN area of SRAM are set to their initial values, and the PROJECT is started from the beginning.

SYSTEM COLD START
Initialize entire Static RAM area (ALL data in SRAM is erased!)

YES

Is the SRAM Control switch (SW1-5) set to OFF?
Has the battery power for the SRAM failed?

See Table 1-2 in CI-ControlWave for info. on switch SW1-5

NO SYSTEM WARM START
Copy System Firmware From FLASH into SDRAM (Allows for fast execution)

System copies BOOT PROJECT from FLASH into SDRAM
YES

Is there a valid PROJECT in the BOOT PROJECT area of FLASH?

Wait for user to download NO a PROJECT.
(Indication: "00" appears on display)
See Chapter 7 in D5081 or Chapter 11 in D5088 for information on downloading

Start Communications System o Read Soft switches o Activate Serial Port(s) o Activate Ethernet Port(s)

326

Memory Usage

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Variations when using ControlWave MICRO/EFM
The main difference between the memory configuration in the ControlWave and the ControlWave MICRO and EFM is that the flash memory in the MICRO is faster, so system firmware that would have been executed in SDRAM executes in flash memory instead.
 Executing system firmware resides in flash memory; it is NOT copied into SDRAM. (The control strategy itself does execute in SDRAM.)
 The SRAM Control Switch is SW2-5.  The Recovery Mode Switch is SW1-3.  The Watchdog Circuit Enable Switch is SW2-1.  The ControlWave Micro and ControlWave EFM have 16MB flash instead of 32MB in the
ControlWave PAC.
BOOT FLASH 512 K Audit/Archive Def Soft Switches User Accounts Port Config.

Static RAM - 1 or 2 MB Unreported (Pending) Alarm Messages
Historical Data (Audit / Archive)
RETAIN Area - All variables marked as "RETAIN" in project
Static Memory Area - Starts at address %3.100000

Executing PROJECT incl. all variables not stored in SRAM

FLASH Memory - 16MB
System Firmware Loaded at the factory
Historical Data (Audit / Archive)

Zipped copy of project incl. graphics, etc. (*.Zwt)

Copied on re-start

BOOT PROJECT

Memory Usage

327

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Variations when using ControlWave GFC/GFC-CL, XFC, Corrector, Express or ExpressPAC
The main difference between the memory configuration in the ControlWave and these units is that the flash memory in these units is faster, so system firmware executes in flash memory. Also, the project executes in SRAM, because there is NO SDRAM in these units.
 Executing system firmware resides in FLASH memory.
 The Control strategy itself executes in Static RAM (SRAM). On restart, the control strategy would be lost.
 The SRAM Control Switch for these units is SW2-5, except for the XFC which uses SW15.
 The Recovery Mode Switch is SW1-3 for these units except for the XFC which uses; SW1-9 and 10.
 The Watchdog Circuit Enable Switch for these units is SW2-1, except for the XFC which uses SW1-1.
BOOT FLASH 512 K Audit/Archive Def Soft Switches User Accounts Port Config.

Static RAM - 2 MB
Executing PROJECT
Unreported (Pending) Alarm Messages Historical Data (Audit / Archive) RETAIN Area - All variables marked as "RETAIN" in project Static Memory Area - Starts at address %3.100000

FLASH Memory - 8MB
System Firmware Loaded at the factory
Historical Data (Audit / Archive)

Zipped copy of project incl. graphics, etc. (*.Zwt)

Copied on re-start

BOOT PROJECT

328

Memory Usage

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Variations when using ControlWave_10/ _30/ _35 (CW_10, CW_30, CW_35)
Memory in the CW_10, CW_30, and CW_35 is very similar to the ControlWave Process Automation Controller. There are some differences, however:
 There is less static RAM (1 MB of SRAM instead of 2MB in the ControlWave).  There is less flash memory (16 MB instead of a maximum of 32MB in the
ControlWave).  The SRAM Control Switch is SW2-5.  The Recovery Mode Switch is SW1-3.  The Watchdog Circuit Enable Switch is SW2-1.
BOOT FLASH 512 K Audit/Archive Def Soft Switches User Accounts Port Config.

Static RAM - 1 MB Unreported (Pending) Alarm Messages
Historical Data (Audit / Archive)
RETAIN Area - All variables marked as "RETAIN" in project
Static Memory Area - Starts at address %3.100000

Synchronous Dynamic RAM (SDRAM) - 4 MB

FLASH Memory - 16MB

Executing System Firmware - up to 2MB (copied on startup from FLASH)

Copied on re-start

System Firmware Loaded at the factory

Historical Data (Audit / Archive)

Executing PROJECT incl. all variables not stored in SRAM

Zipped copy of project incl. graphics, etc. (*.Zwt)

Copied on re-start

BOOT PROJECT

Memory Usage

329

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Memory Allocation Issues
The ControlWave Process Automation Controller contains 64 MB of SDRAM. Of this 64 MB, approximately 700 KB is required to hold the system firmware (the internal code which tells the CPU how to run programs), and another 300 KB is required for system overhead.
When all other things are taken into account, approximately 62.7 MB of SDRAM are available for your ControlWave project, and its data. The only fixed restrictions on how you use the remaining 62.7 MB are:  No program organization unit (POU) can exceed 640 KB. (Prior to OpenBSI 5.7 Service
Pack 2, this limit was 64K.)  There can be no more than 512 POUs in the project.  A small amount of free-space (between 64 KB and 128 KB must be maintained).
Determining POU Size at Compilation Time
As previously noted, any POU exceeding 640 K bytes will not work. When you compile your project using the Make command, you can determine the approximate size of individual POUs by calling up the "Infos" tab in the Message Window and multiplying the number of bytes shown for a POU by a platform-dependent factor. For standard ControlWave units (using the IPC processor) use a factor of 1.3. For other units (using the ARM processor) use a factor of 1.5. Note that this is just an approximation, the actual size may vary. Any POU exceeding the 640 Kb size limit will either need to be removed or re-written so that it does not exceed the 640 Kb limit.
Resolving "Not Enough Memory" Messages
If you encounter error messages related to not having enough memory after downloading the project into the ControlWave controller (or into the I/O Simulator), your project is too big as currently configured. There are a few things you can do to reduce the size of the project, so that it may fit into the available SDRAM space:
Find out how much SDRAM your project is using, so you know how much you need to get back
When you download a project into the ControlWave, or into the I/O Simulator, statistics are maintained as to how much memory is free, after the download. To view this information, click [Info] in the RTU_RESOURCE dialog box.
Click here to obtain statistics on memory usage.

330

Memory Usage

ControlWave Designer Programmer's Handbook D301426X012 August 2020

The `Resources' tab displays the amount of memory available:

This is the amount of RETAIN memory available in SRAM (static RAM).

This number indicates the amount of SDRAM (or SRAM if the unit does not support SDRAM) available to run program POUs.

This is the amount of SDRAM (or SRAM if the unit does not support SDRAM) available for anything other than your program POUs such as communication buffers, PDD, system firmware.

Memory Usage

331

ControlWave Designer Programmer's Handbook D301426X012 August 2020
The POUs tab displays the amount of memory used, including the total program size, and the amount of data used for both RETAIN and non-RETAIN variables. Number of bytes used by code for particular functions, function blocks

Total program size (in bytes). NOTE: May not be equal to the sum of individual lines due to system overhead.

Number of bytes of data (both RETAIN and non-RETAIN) used by the variables for these functions/function blocks.

Note:
Certain function blocks are always included in memory, even if you don't use them in your project. These include counter function blocks (CTD, CTU, CTUD) and timer function blocks (TOF, TON, TP).

332

Memory Usage

ControlWave Designer Programmer's Handbook D301426X012 August 2020
If possible, reduce the number of variables marked "PDD"
Checking the "PDD" box for a particular variable stores the variable's name in memory, which allows allow external programs (such as OpenBSI's DataView) to collect that variable.
If you check "PDD" for every variable (just in case you might want to collect it at some later time), this forces all of those variable names to be stored in memory. If you have thousands of variables marked for PDD, this can result in a shortage of available memory.
Examine the variables that you have marked for "PDD" collection and see if there are some you could de-select.
Initialize LIST function blocks via DB_LOAD, if possible
If you have a large number of LIST function blocks, containing thousands of list elements, which you initialize within the project, you should consider performing the initialization using the DB_LOAD function block. DB_LOAD allows much of this information to be stored in a text file, external to the project, thus reducing the amount of memory used. For more information on DB_LOAD, see the ACCOL3 help files in ControlWave Designer.
Adjust Application Parameters for Memory
Application parameters for memory are changed from the `Application Parameters' page in the Flash Configuration Utility.
Important Users should exercise caution when modifying the application parameters for memory. Making a significant change to these parameters without understanding how the parameters interact could actually reduce the amount of available memory, even though you have increased the values of the parameters. For more detailed information about the individual application parameters, see the Application Parameters section earlier in this manual.
Before changing any of the application parameters for memory, you should first check how much memory you have free (from the `Info' option of the RTU_RESOURCE dialog box.)
If you have little or no "Prog. Mem" free, you should increase slightly the "Prog RAM" value in the Application Parameters page of the Flash Configuration utility. Changes should be incremental; don't set "Prog RAM" too high - its value is fixed on startup. If you set it significantly larger than it needs to be, all the extra space will be wasted because it will be reserved for the program, even if the program isn't large enough to make use of the space. That unused space will be missing from the available memory pool for the data, which could result in memory errors. If, however, you set the value for "Data RAM" to be too large, the system will reduce it, proportionally, as needed.

Memory Usage

333

ControlWave Designer Programmer's Handbook D301426X012 August 2020
If you set this value to a number that is significantly larger than you need, you will waste the excess amount.

If you set this value too large, the system reduces it proportionally, as needed.

Notes about Flash Files and Folders
Flash memory in the ControlWave uses a linear file structure. Because of this, the folders are used internally just as path names for files. If you were to use a File Transfer Program (FTP) to examine the contents of the ControlWave's flash memory, you would see what appear to be multiple folders sharing the same name. Don't be concerned by this; they are not duplicate folders, just multiple references to the same folder. The picture, below. shows this duplication. Several folders share the same name; in reality these are simply unique references to the same folder for each file in the folder.

334

Memory Usage

Modbus Configuration

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Configuring Your ControlWave Controller as a Modbus Master Device
Important This example assumes you are familiar with Modbus concepts.
Modbus is an industry-standard communications protocol used by a wide variety of controller and PLC manufacturers. By configuring your ControlWave unit as a Modbus Master device, you can read/write coil status, 16-bit register, or 32-bit register information from a PLC serving as a Modbus Slave, and store that data in variables or structures in your control strategy program.
Important Modbus communication requires that you include the CUSTOM function block in an executing task. Modbus communication requests/responses and processing only occur when the CUSTOM function block executes. Also, you must have a port configured for Modbus communication, before you begin.

Note Both serial Modbus communication and Open Modbus (IP) communication is supported. Serial Modbus communication utilizes the serial ports, Open Modbus (IP) communication utilizes the IP ports. For help on configuring a communication port for Modbus, see the Modbus Ports section.
Step 1.Insert the CUSTOM function block in your program.
The program you choose must have been assigned to an executable task. The system will attempt to perform Modbus communications at the rate specified for the task containing the CUSTOM function block.
Step 2.Configure the CUSTOM function block for Modbus Master communications.
The following table describes the various parameters of the CUSTOM function block, as it is used in this particular example:

Modbus Configuration

335

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Parameter Name
ioabInit
idiRepeat
iiMode iiCustomlist iiComPort iiSlaveAddress

Type of Variable
BOOL input/output variable (NO constants allowed)
DINT input
INT input
INT input INT input INT input

Description
Init - This parameter should be set to TRUE any time a configuration change has been made to any of the input parameters (except for changes in the IOList discussed later). This re-initializes the function block with the new configuration data. Once the re-initialization is complete, this parameter will automatically be set to FALSE. NOTE: The very first time the function block is executed, this parameter is automatically set to TRUE in order for initial configuration parameters to be set. Repeat - This optional parameter specifies, in milliseconds, the time which must expire before another attempt will be made to send/receive a Modbus message. So, for example, if 0 is entered as the repeat value, an attempt will be made to send/receive a Modbus message every time the CUSTOM function block executes (provided that the previous message has completed). If 10000 is entered as a repeat value, the executing CUSTOM function block will attempt to send/receive a MODBUS message only if 10 seconds have elapsed since the last Modbus message request. Mode ­ Specifies the mode in which the Custom Block operates. Valid values are: 4 (Modbus Master ­ serial) or 52 (Open Modbus Master (IP)). Custom List ­ Specifies the number of a LIST function block which will hold additional configuration parameters. See Step 3. Set Up the Custom List later in this example. Communication Port ­ For serial Modbus only: Identifies the port to be used for communication with Modbus slaves: 1 = COM1:, 2 = COM2:, etc. For Serial Modbus: Slave Address: This parameter specifies the address of the Modbus slave. Slave addresses may range from 1 to 247. A slave address of 0 is used to generate a broadcast message. Read functions (Function Type 1 through 5) are not valid for a broadcast message. For Open Modbus (TCP/IP) Unit Number ­ A value which specifies the unit number of the slave device to match the transactions against. This unit number is included in the Modbus / TCP message prefix.

idiTimeout
isIPAddress odiStatus

DINT input
STRING input DINT output

Timeout - This parameter specifies, in milliseconds, the amount of time the system waits for a response message from the Modbus slave. If you enter 0, a default value equivalent to 3000 milliseconds will be used. Otherwise, the value can range up to 65535 milliseconds. IP Address of MODBUS Slave - For Open Modbus only: Specifies the Open Modbus slave device's IP address, such as 120.0.0.13. Status - This output parameter reports a status / error code which indicates the status of the CUSTOM function block execution. This parameter is only updated at the completion of the CUSTOM function block execution. For a complete description of error and status codes for all ACCOLIII function blocks, see the on-line help.

336

Modbus Configuration

Parameter Name
oudDoneCount

Type of Variable
UDINT output

obDoneFlag

BOOL output

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Description
Done Count ­ This is incremented by 1 whenever a Modbus communication message has been read/written and processed. This parameter is only updated at the completion of the CUSTOM function block execution. To determine whether or not the communication transaction was successful, check the Status. Done Flag ­ This is set to TRUE whenever a Modbus communication message has been read/written and processed. This parameter is only updated at the completion of the CUSTOM function block execution. To determine whether or not the communication transaction was successful, check the Status.

Step 3.Set up the Custom List
The custom list defines various additional parameters which govern Modbus Master operation. Insert a LIST20 function block, and configure its entries as follows:

Parameter
iiListnumber ianyElement1 (Required)
ianyElement2 (Required) ianyElement3

Note Variables in the list are automatically interpreted as type INT. This allows other types (REAL, DINT, SINT) to be used without the user needing to perform type conversions.

Variable type (recommended)
INT
INT

Description

List Number ­ This entry must match the iiCustomlist parameter value

on the CUSTOM function block.

Function Code - This entry specifies the MODBUS Function Code. In

some cases the Function code requires an offset of 1000 to make the

transmitted address correct ­see Coil/Register Address. The entries

below show the numbers to enter for a particular function:

Value Function

1

Read Coil Status

2

Read Input Status

3

Read Holding Registers

4

Read Input Registers

5

Force Single Coil

6

Preset Single Register

7

Read Exception Status

8

Force Multiple Coils

9

Preset Multiple Registers

INT

Coil / Register Address ­ This entry specifies the starting address for

coil, input, or register operations. The address transmitted to the Slave

will be one less than the value specified here unless the Function code

has an offset of 1000. For example, the address 7031 will be sent as

7030 for Function code 3, and 7031 for Function code 1003.

INT

Data Count ­ A value specifying the number of coils, inputs, or

Modbus Configuration

337

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Parameter
(Required) ianyElement4 (Required) ianyElement5 (Required) ianyElement6 (Required)
ianyElement7 (Optional)

Variable type (recommended)
INT INT INT
INT

Description

registers to be read. The value can range from 1 to 2000 for coils and

inputs, 1 to 125 for 16-bit registers and 1 to 62 for 32-bit registers.

I/O List Number ­ A value specifying the list which will hold the coil or

register data to be sent or received.

I/O Array ­ RESERVED FOR FUTURE USE. Even though it is not used, it

must be configured with a variable, which is set to 0.

Data Size ­ This value specifies the data size to be used when accessing

Holding Registers via function codes 3, 6, and 9. This option does not

affect the operation of any other function codes. If signal 6 is unwired a

default value is 3 is used. Valid values are:

1 = use single bit register data

2 = use 8-bit register data

3 = use 16-bit integer register data (default)

4 = use 32-bit integer register data with each double integer value

taking up one register address.

5 = use 32-bit floating point data with each floating point value taking

up one register address. In this mode, the selection is also used on

Preset Single Register and Preset Multiple Register commands.

6 = Use 32-bit integer register data with each double integer value

taking up two register addresses.

7 = Use 32-bit floating point data, with each floating point value taking

up 2 register addresses. In this mode, the selection is also used on

Preset Single Register and Preset Multiple Register commands.

Bit Order - Determines the ordering of bits in a byte. Note: Unless

users have some special application requiring a different bit order, this

value should always be left at the default of 0.

If set to 0 (default), bit order within a byte is as follows:

bit0 = lowest order coil

:

:

bit7 = highest order coil.

ianyElement8

INT

(Optional)

If set to 1, bit order within a byte is as follows:

bit0 = highest order coil

:

:

bit7 = lowest order coil.

Byte Order - Determines the order in which bytes are transmitted.

Note: Unless users have some special application requiring a different

byte order, this value should always be left at the default of 1.

If set to 1 (default) the high order byte is transmitted first.

ianyElement9

INT

(Optional)

If set to 0, the low order byte is transmitted first. Word Order - Determines the order in which words are transmitted. Note: Unless users have some special application requiring a different word order, this value should always be left at the default of 1.

If set to 1 (default) the high order word is transmitted first.

338

Modbus Configuration

Parameter

Variable type (recommended)

Description

ControlWave Designer Programmer's Handbook D301426X012 August 2020

ianyElement10

INT

(Optional)

ianyElement11

INT

(Optional)

If set to 0, the low order word is transmitted first. RTS/CTS Delay Time ­ This is an optional element used only in serial MODBUS applications. It specifies a time delay. The time delay can either be used to monitor for CTS being raised, or to delay transmitting a message; the choice of how it is used is specified by the RTS/CTS Delay Mode. The delay value can range from 0 milliseconds to 65,535 milliseconds. RTS/CTS Delay Mode- This is an optional value which specifies how the RTS/CTS Delay Time is used. There are two choices for the mode.

0 = Message Transmit Delay Mode: After RTS is raised, a delay timer will be started. (The length of the delay is determined by the value of RTS/CTS Delay Time). No message will be sent until after this delay has expired. The value of CTS does not affect the operation of this mode. NOTE: In order for this mode to work, RTS-CTS must be jumpered or the CTS must be received before the specified delay expires.

odiStatus

DINT

Step 4.Set up the I/O List

1 = Monitor For CTS Mode: After RTS is raised, the time delay will be used as the maximum time to wait within which CTS must be received. If CTS is received at any time before this delay expires, the message transmission begins. If CTS is NOT received prior to the expiration of the delay, no response will be sent, and an error will be reported.
Status Codes ­ Status or error codes for this list. See on-line help for details.

At this point, all that remains is to set up the I/O List which will hold the coil/register values sent to and received from the MODBUS slave device.

The list identification number must match the I/O List Number entry in the Custom List, and the length of the list must be greater than or equal to the number of variables needed to hold the coil/register data.

Type conversions will automatically be performed on the coil/register data to ensure that there is no conflict with the defined variables in the I/O List.

Configuring Your ControlWave Controller as a Modbus Slave or Enron Modbus Slave Device
Your ControlWave controller can be configured to serve as a Modbus Slave or Enron Modbus Slave device. The process is similar to that described in this previous example, i.e. configuring a CUSTOM function block, defining a CUSTOM list, etc. Full instructions about how to perform this configuration for Modbus Slave applications is included in the online help of ControlWave Designer.

Modbus Configuration

339

ControlWave Designer Programmer's Handbook D301426X012 August 2020

340

Modbus Configuration

Modbus Ports

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Configuring Modbus Ports
To use Modbus protocol to communicate you must configure a Modbus port. Any ControlWave-series controller's serial port can be configured for Modbus communications.
With communications active in LocalView or NetView, right-click on the ControlWave icon, and choose RTURTU Configuration Parameters from the pop-up menus.
The Flash Configuration Utility opens. Click on the `Ports' tab.

Mode
Baud Rate Bits Per Char Stop Bits Parity

Sets the operational mode for this ControlWave-series controller in the Modbus network. Valid values are Modbus Master, ENRON Slave, or GOULD Modbus Slave, depending upon the controller's role. Alternatively, you can select USER_MODE for certain userdefined Modbus protocols.
Indicates the baud rate used by this Modbus protocol. The default value for baud rate is 9600.
Indicates the number of bits used in a character. If the "Message Type" is 'ASCII', the number of bits is 7 or 8. The default is 8. If the "Message Type" is 'RTU (binary)' this parameter is fixed at 8 bits.
Indicates the number of stop bits per character. The default is 1.
Specifies either ODD, EVEN, or NONE for the parity. The default is

Modbus Ports

341

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Message Type
Modbus Store & Forward
Activate Store & Forward

NONE.
Specifies the type of data to be transmitted. Valid values are RTU (binary) or ASCII.
Activates the Modbus Store and Forward feature (only for Modbus slaves). Modbus store and forward accepts a message with a given slave address, replaces that address with a different address, and then retransmits the message. See the ControlWave Designer online help for more information on configuring the Modbus store and forward feature

342

Modbus Ports

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Reset ControlWave Utility
The Reset ControlWave Utility allows you to power cycle the ControlWave (turn it off and then back on). This operation stops the project currently running in the ControlWave, reboots the ControlWave, clears its dynamic memory, and runs internal startup checks.
You can also restart the ControlWave project in "cold", "warm," or "hot" mode.

To reset a ControlWave:
1. Start the utility by clicking Start  Programs  OpenBSI Tools  Debugging Tools  Reset ControlWave.
2. Click [Select] to choose the node name of the controller you want to reset. 3. Sign on to the unit by entering a valid "User Name" and "Password" combination,
then click [Reset Unit]. 4. If signed on successfully, a prompt appears asking you to confirm that you want to
proceed with the reset. Click [OK] to proceed or [Cancel] to abort the operation. 5. Wait for the "Status" field to report completion of the reboot operation. 6. Click [Close] to exit the utility.
To re-start a ControlWave project:
1. Start the utility by clicking Start  Programs  OpenBSI Tools  Debugging Tools  Reset ControlWave.
2. Click the [Select] button to choose the node name of the controller running the project.
3. Sign on to the ControlWave by entering a valid "User Name" and "Password" combination.
4. Choose one of the following options: [Cold Start] Click to re-start the ControlWave project from the beginning, using default values for all variables.
[Warm Start] Click to re-start the project from the beginning of the task cycle, with saved values used for all RETAIN variables. (Only possible if Static RAM preserved; i.e. not cleared by battery failure or switch setting.)

Reset ControlWave Utility

343

ControlWave Designer Programmer's Handbook D301426X012 August 2020
[Hot Start] Click to stop the project, and then re-start the project from the beginning of the task cycle.
5. Wait for the "Status" field to report "Restart Complete."
6. Click [Close] to exit the utility.

Running RESETCW From the Command Line

You can also run the RESETCW program from the command line. The syntax for this is as follows: RESETCW node_name command username password

where: node_name

is the name of the ControlWave unit to be reset

command username password

is either `RESET' to reset the unit, or a startup mode, as described, above, which could be either `COLD', `WARM', or `HOT'. is a valid username password combination for this node.

Example: RESETCW CW3 COLD ROB 123ABCDE

344

Reset ControlWave Utility

Security

ControlWave Designer Programmer's Handbook D301426X012 August 2020

There are two methods available for configuring ControlWave security:
 Configure security one RTU at a time using the Security page of the Flash Configuration utility. See Chapter 5 of the OpenBSI Utilities Manual (part number D301414X012) for information on doing this.
 Use the Security Management Tool (available in OpenBSI 5.8 and newer). The Security Management Tool is very similar to the first method, except it allows you to send the same user security configuration information to all active RTUs in the network, thereby reducing the amount of work to configure your security system.

Note
To use the Security Management Tool, NetView must be running, and you must be logged on in NetView as the system administrator. This requires you to log on as the SYSTEM user with the appropriate password. Also, a SYSTEM user with matching password must exist at each RTU.

Starting the Security Management Tool
Click as follows: Start  Programs  OpenBSI Tools  ControlWave Tools  User Management Tool
Defining Usernames and Passwords, and Specifying Privileges
The Security Management Tool allows you to create usernames and passwords for ControlWave users, and to define user privileges. In this way, you can create restrictions on who has access to various features and functions of the controller.

Security

345

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Adding A New User
A ControlWave-series controller supports up to 240 different users (previous to OpenBSI 5.8, 32 users was the maximum allowed). To add a new user, first enter the user's name (up to 16 characters long) in the Username field, and enter a password (up to 16 characters long) for that user in both the Password and Verify fields. (The password does not appear as you type it.)
Important Prior to OpenBSI 5.8 Service Pack 1, some OpenBSI programs which communicated with the controller (such as DataView) only supported shorter usernames and passwords (10 characters or less for the username, 6 characters or less for the password) and UPPERCASE only for the password. If you have any OpenBSI workstations you haven't upgraded yet, you may want to limit ControlWave usernames/passwords to conform to this. Newer OpenBSI software conforms to the 16 character ControlWave limits.
Note ControlWave firmware versions prior to version 5.20 only support the previous limit of 32 users. In those cases, the Security Management Tool only stores the first 32 users in your user list at the RTU. If RDB_MAX and/or the currently logged on user are not among the first 32 users in you user list, the Security Management Tool accommodates this by replacing the 32nd and, if necessary the 31st users in the list with RDB_MAX and/or the currently logged on user.

346

Security

Security

ControlWave Designer Programmer's Handbook D301426X012 August 2020
To select the privileges for this user, click Custom and then select the individual privileges in the Privileges list box, to highlight them. Alternatively, you can choose Operator, Engineer, or Administrator for a particular user, which automatically highlights privileges associated with those user categories. The tables, on the next page, show the privileges associated with these user categories, and list what the various privileges mean.
When all desired privileges have been selected, click Add to add the user to the system.

Note
Every ControlWave-series controller has a special user called RDB_Max. This user account defines the maximum privileges allowed for RDB protocol messages coming into the ControlWave. (Programs such as DataView, the Harvester, etc. use RDB to request data from the ControlWave.) You can neither delete nor rename the RDB_Max user, but you can change its privileges.

The table below shows the privileges associated with the Operator, Engineer, and Administrator categories:

Privilege
Read Data Value Update Data Value Update Signal Attributes Read Flash Files via FTP Change / Del Flash Files via FTP Read Historical Data Change Last Read Pointers in Audit Info Change / Delete Historical Definitions Add / Change / Del User Security Info Modify Soft Switches Run Diag to read Memory Run Diag to write Memory Read Stat / Diag Info Reset Stat / Crash Blocks Read Application Values Write Application Values Full Application Access

Operator
 


Engineer
       

















Administrator
                

The table, below, describes the meaning of each privilege:

Privilege
Read Data Value Update Data Value Update Signal Attributes
Read Flash Files via FTP

Description
Allows this user to read data values from this controller. Allows this user to change data values in this controller. Allows this user to modify the status of inhibit / enable flags in the controller. Allows this user read access (via File Transfer Protocol) to files stored in this ControlWave's Flash memory. This could include the ControlWave boot project, source files

347

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Privilege
Change / Del Flash Files via FTP
Read Historical Data
Change Last Read Pointers in Audit Info Change / Delete Historical Definitions Add / Change / Del User Security Info
Modify Soft Switches Run Diag to read Memory Run Diag to write Memory Read Stat / Diag Info Reset Stat / Crash Blocks Read Application Values Write Application Values Full Application Access

Description
(*.ZWT), etc. Allows this user (via File Transfer Protocol) to add, change or delete files stored in the ControlWave's Flash memory. This could include the ControlWave boot project, source files (*.ZWT), etc. Allows this user to view historical data (Audit / Archive information) from the controller, either via web pages, or OpenBSI DataView. Allows the user to delete Audit Trail data from the controller. Allows this user to add, change or delete historical definitions via the Flash Configuration Utility. Allows this user to add, change, or delete security configuration information via the Flash Configuration Utility. Allows this user to change Soft Switch values on the soft switches page of the Flash Configuration Utility. Allows this user to run diagnostics to read memory at the controller. Allows this user to run diagnostics to write to memory at the controller. Allows this user to view communication statistics and other information on the Statistics web pages. Allows this user to reset statistics and crash block areas on the Statistics web pages. Allows this user to read values using the ControlWave Designer OPC Server. Allows this user to modify values using the ControlWave Designer OPC Server. Allows this user full privileges to perform debugging operations in ControlWave Designer.

Loading the Security Definition for a Particular RTU into the tool
To load the security configuration information from a particular RTU into the tool, click Load from RTU and select the RTU from the Select New Node dialog box. Depending on the number of users defined, it may take some time for the load to complete.
Modifying the Privileges of an Existing User
To change the privileges of an existing user, select the user's name from the list of Usernames and select / de-select privileges for that user in the Privileges list box. When you finish making selections, click Modify to store the modified privileges for that user.
You can only modify privileges for users defined as Custom. The privileges for operators, engineers, administrators, etc. are fixed.

348

Security

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Cloning an Existing User
If you want to create several users with identical privileges, click on the name of the user that has the desired privileges, and then click Clone.
Type the number of users you want to create in the Number of Cloned Users box, then press the [Enter] key. Users named CLONE will appear. You can then modify those users with new usernames and passwords. (OpenBSI 5.8 and newer.)
Deleting an Existing User
To delete a user from the system, select the user's name from the Usernames list and click Delete.
Note You cannot delete the RDB_Max user and you cannot delete the current user or any user who is currently signed on to this ControlWave.
Saving / Retrieving the Master Security Configuration File
You can export the security configuration information for the users on this ControlWave to an encrypted binary file called the master file. To export a master security configuration file, click Save to Master File. To import a master security configuration file, click Load from Master File. The import/export feature requires OpenBSI 5.8 and newer.
Sending the Security Configuration to One or More RTUs
Once you define all the privileges for the users, you can transfer them to the controller. If you want to define the same users for multiple controllers, you can specify to which controllers you want to send the configuration. Click the Transfer to RTUs button to open the Transfer to RTUs dialog box.

Security

349

ControlWave Designer Programmer's Handbook D301426X012 August 2020

When the dialog box opens, all RTUs appear in the Selected RTUs list box.
If you don't want to send the security configuration to all RTUs, hold down the [Ctrl] key and then click on any RTUs you want to exclude, then click the [>>] button.
To select a whole block of RTUs in the list press [Ctrl] to select the first RTU, then press the [Shift] key with the cursor on the last RTU in the block.
You can click the [<<] button to move RTUs back from the Excluded RTUs list.
When the Selected RTUs list box shows only the RTUs you want to transfer security information to, click the Transfer button. The tool sequentially sends the security configuration to each RTU in the Selected RTUs list.
Removing the Lockout That Prevents Other Tools From Modifying Security Configurations
If you want to allow other tools such as the Flash Configuration Utility to modify the security configuration of one or more RTUs, select the RTUs for which you want to allow this so they show in the Selected RTUs list box, then click Allow Security Changes from

350

Security

ControlWave Designer Programmer's Handbook D301426X012 August 2020
other Tools and then click Transfer. The tool sequentially removes the lockout from each RTU in the Selected RTUs list.
Exporting Security Data for Modbus Devices
To export security data for use in MODBUS registers, click Export to MODBUS and specify the location for the file.
Default Switch Settings at the Controller
The default switch on each RTU (also called the Use/Ignore Soft Switches) should be turned ON (Use Soft Switches), when you are finished, otherwise the special default security account (SYSTEM) remains active and the security configuration you store via the Security Management Tool is ignored.
 The default switch on the ControlWave Process Automation Controller is SW1-3.  The default switch on the ControlWave Low Power (LP) Controller is SW4-3.  The default switch on the ControlWave MICRO Process Automation Controller is SW2-
3.  The default switch on the ControlWave Gas Flow Computer (GFC) is SW2-3.  The default switch on the ControlWave Electronic Flow Meter (EFM) is SW2-3.  This default switch on the ControlWave Explosive-Proof Flow Computer (XFC) is SW1-
3.  The default switch on the CW_10 and CW_30 is SW2-3.
Other Security-Related Issues
In addition to defining usernames and passwords, there are certain other issues to consider when setting up security for your network. Some of these issues are not strictly related to ControlWave, but to the entire process control network.
The most secure process control network would be self-contained (that is, it would no connections to the outside Internet). In addition, it would be isolated from other network activities in your organization. For example, the process control network would not be on the same network as the billing department. If, however, your organization chooses to share networks, or include connections to the outside world, security should be a paramount concern.
Security Protocols for PPP Communication (PAP, CHAP)
If you are using the Point-to-Point (PPP) Internet Protocol, via the ControlWave-series controller's serial ports, you should consider using either the PAP or CHAP security protocols. CHAP is considered more secure than PAP, because it uses encryption. For information on these protocols, see the Security Protocols section in this manual.

Security

351

ControlWave Designer Programmer's Handbook D301426X012 August 2020
OpenBSI Security
Since ControlWave-series controllers are designed to be used in OpenBSI networks, OpenBSI security should also be configured. For information on configuring security for your OpenBSI network, please see Chapter 6 of the OpenBSI Utilities Manual (part number D301414X012). This chapter also includes information on granting proxy access to the network, from remote OpenBSI Workstations, which can have security implications.
Network Infrastructure (UDP and TCP Sockets)
While this is generally more concerned with network traffic issues, UDP and TCP sockets throughout an IP network must match for each controller and PC Workstation. It is recommended that these numbers be changed from their default values, for greater security. For information on setting these at the OpenBSI level, see the OpenBSI Utilities Manual (part number D301414X012). For information on setting these in your ControlWave controller, please see the IP Parameters section of this manual.
Security Configuration for your Human Machine Interface (HMI) Software
Most supervisory control and data acquisition (SCADA) systems incorporate various levels of security. If you are using OpenEnterprise, security can be set up for both the OpenEnterprise Server database, individual database objects, and the OpenEnterprise Workstation(s). See the OpenEnterprise online help for details.
Virus Protection for Your Workstations
Each workstation should be equipped with virus protection software and you should subscribe to a regular update service for this software, so the virus protection remains current as new viruses become a threat. Virus protection is particularly important if the workstation has any connection to outside networks.
Firewall Software for Your Networks
If your process control network is connected to the Internet, you are strongly urged to purchase and configure commercially available firewall software, to provide some level of protection against external intrusion from hackers.
Physical Security
Consider issues related to the physical security of your workstations, and the nature of your operation. Are the workstations in a high traffic area? Are they in a room which can be locked up to prevent unauthorized access? Are the environmental conditions (excessive dust, high/low humidity) in the room poor?
For ControlWave-series controller, have you removed the RUN/REMOTE/LOCAL keys from the controllers and put them in a safe place? Otherwise, someone could accidentally or deliberately change the controller's operating mode.

352

Security

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Networked Surveillance of Remote Sites using ControlWave
If surveillance cameras are part of your physical security scheme, you should be aware that ControlWave-series controllers have successfully been used as part of surveillance schemes. Using third-party security cameras and software, captured images can be uploaded to the controller, and stored in flash memory. Customers can download the images via File Transfer Protocol (FTP). See the ControlWave Security Vision Application User's Guide (part number D301427X012) for more information.
Maintain Current Backups
This is valuable not only for security issues, but for any type of disaster recovery. System administrators should back up all necessary files on a regular basis, and store the backup media (tapes, CDs, DVDs, USB drives) in a safe, secure location, preferably off-site.
Human Factors
This may seem basic, but the downfall of security is often the human factor. No matter how well you configure your security system, if you post your passwords right next to the workstation or write them down where unauthorized persons can read them, or if you neglect to change default passwords or choose passwords that are simple for an intruder to figure out (like your name or the name of the company) then the protection provided by your security system can be severely diminished.

Security

353

ControlWave Designer Programmer's Handbook D301426X012 August 2020

354

Security

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Security Protocols (CHAP and PAP)
Security Protocols (CHAP and PAP) Used on PPP Links
While it is not required to implement security on PPP links, users should be aware of the possibility of unauthorized access to their networks by an intruder (hacker), and strongly consider using one of the two supported security protocols.
Two standard protocols have been implemented for security on PPP links in networks of ControlWave RTUs: Challenge Handshaking Authentication Protocol (CHAP) and Password Authentication Protocol (PAP). These protocols operate in a client/server arrangement. Typically, CHAP should be used since it is more secure.
The CHAP (or PAP) server would be a ControlWave-series controller; the CHAP (or PAP) client could be either a ControlWave-series controller, or an OpenBSI workstation.
Whether a workstation or controller is the client, the client must always supply a valid username/password combination in order to gain access to the server.
If the OpenBSI workstation were the client, the username and password would be entered directly by the user in response to a login prompt. These must match one of the username / password combinations stored in the ControlWave.
If a ControlWave controller is the client, one of its valid usernames must be entered in the "Challenge Protocol Default Username" field in the Ports tab of the Flash Configuration Utility. This username / password text string for that username will automatically be transmitted in response to a login prompt from the server.
At the user-level, both of these security methods are similar. The difference occurs in the underlying operation of the protocols.
Challenge Handshaking Authentication Protocol (CHAP)
The CHAP server (ControlWave) issues an encrypted challenge message (which appears as a normal login prompt) to any CHAP client (workstation or ControlWave controller) requesting access. The supplied username and password will be encrypted according to a pre-defined secret encryption key; the result is called the response message.
Even though the username / password combination for a particular user does NOT change on each login attempt, the encrypted challenge and response messages is different on each attempt. This helps prevent an intruder from replicating the proper response message for a given challenge message, either through trial and error or through brute force searches of all possible challenge messages. Another characteristic of CHAP is that even after the client has logged in, subsequent challenge / response transactions will occur to verify that the connection is still with a valid user.

Security Protocols (CHAP and PAP)

355

ControlWave Designer Programmer's Handbook D301426X012 August 2020
CHAP Example 1: In the first example of using CHAP, the CHAP client is a PC workstation, and the CHAP server is a ControlWave controller:

CHALLENGE HANDSHAKING AUTHENTICATION PROTOCOL (CHAP)

EXAMPLE 1 - WORKSTATION TO CONTROLLER

1 Login prompt (Challenge) message arrives at CHAP client workstation, and is decrypted using a secret key. To the user, it appears as a normal login prompt. User enters username and password combination.

CHAP client

Username: JOHN Password: smartguy

2 Username / Password combination is encrypted using secret key and sent out (Response Message). NOTE: This may involve a 2 message interchange between the client and server.

Each login attempt from a particular node results in a different encrypted response message, therefore, anyone intercepting the message after encryption would not be able to re-use it to gain access.

p5092kjfdkdhgfls83l72kdflsa

3 CHAP Server controller decrypts the response message using the secret key. The result is a username / password combination.

CHAP server

4 Server checks its password database to verify that the received username/password combination is valid.
Is ''JOHN' and 'smartguy' a valid username and password combination? If YES, grant access, otherwise deny access.

356

Security Protocols (CHAP and PAP)

ControlWave Designer Programmer's Handbook D301426X012 August 2020
CHAP Example 2: The second example using CHAP is very similar, except in this case, the CHAP client is another ControlWave controller. For this reason, the username/password combination (default IP user) must be stored as parameters in flash memory and referenced by the Challenge Protocol Default Username.
CHALLENGE HANDSHAKING AUTHENTICATION PROTOCOL (CHAP)
EXAMPLE 2 - CONTROLLER TO CONTROLLER 1 Username / password combinations are stored in the
ControlWave as FLASH parameters. The choice of which user is the Default IP User is specified through the "Challenge Protocol Default Username" entered on the IP Parameters page.
2 Login prompt (Challenge) message arrives at CHAP client, and is decrypted using a secret key.

CHAP Client

3 Username / Password combination (default IP user string) is encrypted using secret key and sent out (Response Message). NOTE: This may involve a 2 message interchange between the client and server.
Each login attempt from a particular node results in a different encrypted response message, therefore, anyone intercepting the message after encryption would not be able to re-use it to gain access.

0qiuh4wtpojf;rlt rt[qertjq

4 CHAP Server controller decrypts the response message using the secret
key. The result is a username /
password combination.

CHAP Server

5 Server checks its password database to verify that the received username/password combination is valid. If it is, grant access, otherwise, deny access.

Security Protocols (CHAP and PAP)

357

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Password Authentication Protocol (PAP)
PAP requires a client requesting access to provide a username and password, similar to CHAP. PAP is a simpler method of protection, however, that has certain characteristics which make it less secure than CHAP.
PAP allows passwords to be sent as clear plain text unencrypted strings of characters. There is a possibility, therefore, that an unauthorized person could intercept a password message, and then subsequently use the password to gain access.
PAP also has no safeguards against repeated attempts to log in. For example, someone using trial and error to guess a password, or someone using software which performs a brute force search of all possible passwords could gain access.
PAP Example 1: In the first example of using PAP, the PAP client is a PC workstation, and the PAP server is a ControlWave controller.
PASSWORD AUTHENTICATION PROTOCOL (PAP) EXAMPLE 1 - WORKSTATION TO CONTROLLER
1 User logs in at a client workstation
PAP client Username: JOHN Password: smartguy

JOHN smartguy

PAP Server

2 Username / Password combination transmitted 'in the clear' to PAP server. The message is vulnerable to interception by an outside party during transmission.
3 Server checks its password database to verify that the received username/password combination is valid.
Is 'JOHN' and 'smartguy' a valid username password combination? If YES, grant access, otherwise deny access.

358

Security Protocols (CHAP and PAP)

ControlWave Designer Programmer's Handbook D301426X012 August 2020
PAP Example 2: The second example using PAP is very similar, except in this case, the PAP client is another ControlWave controller. For this reason, the username/password combination must be stored as a parameter in flash memory and designated using the Challenge Protocol Default Username.
PASSWORD AUTHENTICATION PROTOCOL (PAP) EXAMPLE 2 - CONTROLLER TO CONTROLLER
1 Username / password combinations are stored in the ControlWave as FLASH parameters. The choice of which user is the Default IP User is specified through the "Challenge Protocol Default Username" entered on the IP Parameters page.

PAP client PAP Server

JOHN smartguy

2 In response to a login prompt, Username / Password combination for default IP user is transmitted 'in the clear' to PAP server. The message is vulnerable to interception by an outside party during transmission.
3 Server checks its password database to verify that the received username/password combination is valid.
Is 'JOHN' and 'smartguy' a valid username password combination? If YES, grant access, otherwise deny access.

References:
Lloyd, Brian , and Simpson, William, "PPP Authentication Protocols", Daydreamer Computer Systems Consulting Services, RFC 1334, October, 1992. (available at www.ietf.org)
Rivest, Ronald, "The MD5 Message-Digest Algorithm", MIT Laboratory for Computer Science, and RSA Data Security Inc., RFC 1321, April, 1992. (available at www.ietf.org)

Security Protocols (CHAP and PAP)

359

ControlWave Designer Programmer's Handbook D301426X012 August 2020

360

Security Protocols (CHAP and PAP)

ControlWave Designer Programmer's Handbook D301426X012 August 2020
System Tasks (Warm/Cold Starts)
A system task is a grouping of one or more programs which execute only under certain pre-defined conditions.
Creating a Warm start or Cold start System Task
Note Refer to the section Memory Usage in this manual for an explanation of "warm start" and "cold start."
When you define a warm start or a cold start system task, the programs in that task are only executed once at the application warm start or application cold start, respectively. To create a warm start or cold start system task, create a task as you normally would, but be sure you choose 'SYSTEM' as the "Task type".
Enter a name for the system task
Be sure you choose SYSTEM as the task type.
After you click OK, you must choose either 'Warm Start (SPG 0)' or 'Cold Start (SPG 1)' as the condition which will cause this system task to be executed.

System Tasks (Warm/Cold Starts)

361

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Click OK to finish. Once your completed project has been downloaded into the ControlWave, it executes only when triggered by the specified condition.

362

System Tasks (Warm/Cold Starts)

System Variables

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Important With the exception of port configuration parameters, most users do not need to be concerned with these system variables. Advanced users, however, may find the system variables useful for many purposes, including:  Monitoring the efficiency of task execution  Accessing the system date and time  Viewing diagnostic information about the communication ports
Various system variables are maintained by the ControlWave series controller. They are mapped to standard memory locations, and are accessible only when the user creates variables to specifically access those locations.
These variables are stored in static RAM and so are capable of surviving all application reloads and cold, warm, or hot application restarts or the CPU power off/on. They are set/modified by applications and remain that way until modified again. The only way these system variables lose their settings is when the SRAM Control switch setting forces a memory clear on a power on, the SRAM back-up battery is low, or if the system detects an SRAM corruption and reinitializes them. All input/output parameters are defined with their default settings when applicable. Other input parameters must be given some specific value by an application.
There are two ways to access the System Variables:  Use the System Variable Wizard to create the variables, and for certain variables, enter
values (this is the preferred method)  Manually create variables according to the information contained in the System
Variable Mapping Charts. You must use the name, data type and address shown in the charts.
Using the System Variable Wizard
1. Start ControlWave Designer. 2. Open your ControlWave project. 3. Start the System Variable Wizard by clicking ViewSystem Variable Wizard. 4. The System Variable Wizard will appear.
 You can access the various pages of the wizard by clicking on the different tabs.  Information on the use of individual variables is included in the System Variable
charts (later in this section).

System Variables

363

ControlWave Designer Programmer's Handbook D301426X012 August 2020
 In instances where there are too many variables to appear on a single page, a push button is included to call up a different page containing more variables. Simply click on the push button to access the new page.
 To create a variable, just check the appropriate box. The variable name shown is the name you must use in your ControlWave project to access the variable. That same name also should be used to look up a description of what the variable is used for in the System Variable Mapping Charts.
 Sometimes several variables will be grayed out until a different variable is created; this is because they are all related in some way.
 If the user may set a variable, an entry box or selection box will appear, with a default entry or selection - enter a new value in the entry box, if desired, or select from among the options presented.
 At the bottom of each page are check boxes which allow you to mark variables for "PDD" or "OPC" collection. NOTE: These boxes apply to ALL system variables; i.e. if you check PDD on one page, it applies to every system variable on every page. In addition, if you call up a system variable in the standard variable dialog box, and select one of these options, it will also apply to ALL system variables the next time you open the System Variable Wizard. You cannot pick and choose individual variables with this option.
 If you choose the "Write All" option (added in OpenBSI 5.4) ALL system variables will be created from every page of the wizard.
 Click [OK] to exit the System Variable Wizard, and save the changes you have made; otherwise, click [Cancel].

364

System Variables

ControlWave Designer Programmer's Handbook D301426X012 August 2020
You can access the various pages of the System Variable Wizard by clicking on the different tabs.
If the variable may be set by the user (input variable) choose from the selection box or enter a value in the entry box, as appropriate.

If you check "OPC" ALL system variables in this project will be marked for OPC collection.
If you check "PDD" ALL system variables in this project will be marked for PDD collection.

To create a variable, check the box associated with it.
Only click on OK when you want to save all entries and exit the System Variable Wizard.

Select "Write All" only if you want to generate all the system variables on ALL the pages of the System Variable Wizard.

System Variables

365

ControlWave Designer Programmer's Handbook D301426X012 August 2020
In this case, select the port you want to configure, then choose the push button to access another page containing the actual variables
Select the number of tasks in your project; separate sets of the variables shown on this page are created for each task.

366

System Variables

ControlWave Designer Programmer's Handbook D301426X012 August 2020

System Variable Mapping Charts

System Variable Name
_PLCMODE_ON

Address Data Type
%MX 1.0.0 : BOOL

Minimum Firmware Needed
1.0

_PLCMODE_RUN

%MX 1.0.1 : BOOL

1.0

Description
Status of the unit. TRUE = unit is powered on but an
application is not loaded. (State field in the ControlWave Designer Project Control dialog box will also show ON.) FALSE = unit is power on and application is loaded. Only one of the variables _PLCMODE_ON, _PLCMODE_RUN, _PLCMODE_STOP, and _PLCMODE_HALT is set to TRUE at any given time. Status of the ControlWave Designer application. TRUE = ControlWave project is running (State field in the ControlWave Designer Project Control dialog box will also show RUNNING.) FALSE = project is not running.

_PLCMODE_STOP _PLCMODE_HALT

%MX 1.0.2 : BOOL

1.0

%MX 1.0.3 : BOOL

1.0

Only one of the variables _PLCMODE_ON, _PLCMODE_RUN, _PLCMODE_STOP, and _PLCMODE_HALT is set to TRUE at any given time. Status of the ControlWave Designer application execution. TRUE = ControlWave project is stopped.
(State field in the ControlWave Designer Project Control dialog box will also show "Stop.") FALSE = ControlWave project is executing. Only one of the variables _PLCMODE_ON, _PLCMODE_RUN, _PLCMODE_STOP, and _PLCMODE_HALT is set to TRUE at any given time. Debug status of the ControlWave Designer application. TRUE = ControlWave project is halted at a

System Variables

367

ControlWave Designer Programmer's Handbook D301426X012 August 2020

System Variable Name

Address Data Type

Minimum Firmware Needed

_PLCDEBUG_BPSET

%MX 1.1.4 : BOOL

1.0

_PLCDEBUG_FORCE

%MX 1.2.0 : BOOL

1.0

_PLCDEBUG_POWERFLOW %MX 1.2.3 : BOOL

1.0

_PLC_TICK_PER_SEC _PLC_SYS_TICK_CNT

%MW 1.44 : INT

1.0

%MD 1.52 : DINT

1.0

_LOAD_BOOT_PRESENT _LOAD_SRC_PRESENT

%MX 1.332.0 : BOOL %MX 1.333.0 : BOOL

04.80 04.80

_LOAD_MEM_PRESENT

%MX 1.334.0 : BOOL 04.80

_LOAD_BOOT_CRC _LOAD_SRC_CRC _LOAD_MEM_CRC _MAX_TASK _CUR_TASK

%MD 1.336 DWORD
%MD 1.340 DWORD
%MD 1.344 DWORD
%MW 1.1000 : INT
%MW 1.1002 : INT

04.80 04.80 04.80 1.0 1.0

Description
breakpoint in debug mode (State field in the ControlWave Designer Project Control dialog box will also show "Halt (Debug)). FALSE = project is not halted at a breakpoint.
TRUE=one or more breakpoints are set for debugging purposes TRUE=one or more I/O variables are forced for debugging purposes TRUE=power flow is active for Debugging purposes Number of ticks per second (will be 250) The number of ticks since the application was started. The boot project is present in FLASH memory. The project source file (*.ZWT) is present in the FLASH memory. There is a project loaded into memory (SDRAM) or SRAM, depending upon type of unit. Cyclic redundancy (CRC) check number for boot project. Cyclic redundancy check (CRC) number for project source (*.ZWT). Cyclic redundancy check (CRC) number for project in memory. The maximum number of user tasks supported. The current number of user tasks.

Note
System variables which are specific to a particular task are preceded by a prefix. The first task system variable name begins with a `_T1' prefix, the second task system variable name begins with a `_T2' prefix, etc.

The next several system variables are created for the first Task in the system

System Variable Name Address Data Type

_T1_TASK_NAME

%MB 1.1004 : SI_10

Minimum Firmware Needed
1.0

Description
Array of 10 characters which defines the task's name.

368

System Variables

System Variable Name Address Data Type

_T1_TASK_PRIO _T1_TASK_PERIOD
_T1_TASK_WDOG
_T1_CUR_DUR
_T1_MIN_DUR _T1_MAX_DUR T1_AVG_DUR _T1_CUR_DELAY
_T1_MIN_DELAY _T1_MAX_DELAY _T1_AVG_DELAY

%MW 1.1014 : INT %MW 1.1018 : INT
%MW 1.1024 : INT
%MW 1.1032 : INT
%MW 1.1034 : INT %MW 1.1036 : INT %MW 1.1038 : INT %MW 1.1040 : INT
%MW 1.1042 : INT %MW 1.1044 : INT %MW 1.1046 : INT

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Minimum Firmware Needed
1.0 1.0
1.0
1.0
1.0 1.0 1.0
1.0 1.0 1.0

Description
The configured priority of this task. If the task is a cyclic task, this is the number of milliseconds between scheduled start times. Configured time (in milliseconds) before which the task must complete (or an error will be generated) Number of ticks, which the task took to execute (from scheduled time to task completion) Minimum execution time for the task. Maximum execution time for the task. Average execution time for the task. Number of ticks after the scheduled time, which the current task has taken to start execution. Minimum of CUR_DELAY since the system was started. Maximum of delay since the system was started. Average of delay since the system was started.

The next several system variables are created for the second Task in the system:

System Variable Name
_T2_TASK_NAME _T2_TASK_PRIO _T2_TASK_PERIOD _T2_TASK_WDOG _T2_CUR_DUR _T2_MIN_DUR _T2_MAX_DUR _T2_AVG_DUR _T2_CUR_DELAY

Address Data Type
%M 1.1068 : SI_10 %MW 1.1078 : INT %MW 1.1082 : INT %MW 1.1088 : INT %MW 1.1096 : INT %MW 1.1098 : INT %MW 1.1100 : INT %MW 1.1102 : INT %MW 1.1104 : INT

Minimum Firmware Needed
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0

Description
See above description for corresponding T1 variable See above description for corresponding T1 variable See above description for corresponding T1 variable See above description for corresponding T1 variable See above description for corresponding T1 variable See above description for corresponding T1 variable See above description for corresponding T1 variable See above description for corresponding T1 variable See above description for corresponding

System Variables

369

ControlWave Designer Programmer's Handbook D301426X012 August 2020

System Variable Name

Address Data Type

_T2_MIN_DELAY
_T2_MAX_DELAY
_T2_AVG_DELAY
System variables for tasks would continue from this point on, following the same pattern as shown for the first and second tasks, above:

%MW 1.1106 : INT
%MW 1.1108 : INT
%MW 1.1110 : INT
3rd task begins at %M1.1132 4th task begins at %M1.1196 5th task begins at %M1.1260 etc.

Minimum Firmware Needed
1.0
1.0
1.0

Description
T1 variable See above description for corresponding T1 variable See above description for corresponding T1 variable See above description for corresponding T1 variable

System Variable Name
_LOAD_BOOT_PRESENT _LOAD_SRC_PRESENT _LOAD_MEM_PRESET
_LOAD_BOOT_CRC _LOAD_SRC_CRC _LOAD_MEM_CRC _POWER_UP
_QUEST_DATE

Address Data Type

%MX 1.332.0 : BOOL %MX 1.333.0 : BOOL %MX 1.334.0 : BOOL

%MD 1.336

DWORD

%MD 1.340

DWORD

%MD 1.344

DWORD

%MX 3.0.0 : BOOL

%MX 3.0.1 : BOOL

Minimum Firmware Needed
04.80 04.80 04.80
04.80 04.80 04.80 1.0
1.0

Description
The boot project is present in FLASH memory. The project source file (*.ZWT) is present in the FLASH memory. There is a project loaded into memory (SDRAM) or SRAM, depending upon type of unit. Cyclic redundancy (CRC) check number for boot project. Cyclic redundancy check (CRC) number for project source (*.ZWT). Cyclic redundancy check (CRC) number for project in memory. Set on system restart. Cleared by the user if detection of power-fail recovery is needed. Should be FALSE during normal operation. Set TRUE if the real time clock value is invalid and the unit needs a time synchronization message from the host. This occurs immediately after power-up, or after the project is downloaded; once the time synch message from the host is processed, this is set to FALSE. _QUEST_DATE also becomes TRUE if the SRAM backup battery voltage falls below

370

System Variables

System Variable Name
_TS_REQ _TS_INHIB _OCTIME_ERROR _TIME_000 _TIME_008 _JULIAN_TIME
_TIME_4SEC _TIME_001 _TIME_002 _TIME_003 _DAY_OF_WEEK _TIME_004 _TIME_005 _TIME_006

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Address Data Type
%MX 3.0.2 : BOOL := FALSE %MX 3.0.3 : BOOL := FALSE %MX 3.1.0 : BOOL %MD 3.4 : DWORD %MW 3.4 : INT %MD 3.4 REAL
%MW 3.6 : INT %MD 3.8 : DINT %MW 3.12 : INT %MB 3.14 : SINT %MB 3.15 : SINT %MB 3.16 : SINT %MB 3.17 : SINT %MB 3.18 : SINT

Minimum Firmware Needed
1.0 1.0 4.50 1.0
1.0 Not tied to firmware. Requires OpenBSI 5.7 Service Pack 1 or newer.
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0

Description
the level necessary to power the real time clock (battery failed and must be replaced). Set to force time synch from master. Will be cleared when time synch is received. Set if user wishes to inhibit processing of time synch messages. Reports if time was changed on last time synch. Combination Julian Date and seconds since midnight. Used to time-stamp historical information. Julian Date. Julian Date and Time in REAL format. number of seconds since midnight. This is the floating point representation of the _TIME_000 value. The applications may use this value directly as the Julian time. The hex representation of this Julian time is used as an input in producing the date and time. Example: The date/time 1/18/2008 09:20 will be reported as 3.5435290E-019. The Hex representation of this floating point value is 20D12C4C. The first 2-byte value is the number of 4 second intervals since midnight. It is used to calculate time in HH:MM;SS where the seconds resolution, is in multiples of 4 seconds. Therefore, 20D1 represents 09:20:04. The second two byte value is the number of days since midnight of 12/31/1976. Therefore, 2C4C represents the date of 01/18/2008 . Number of 4-second intervals since midnight. Number of seconds since midnight. Year (4 digit) Month (1 to 12) Day within the current week (1=Sunday to 7=Saturday) Date (1 to 31) Hour (0 to 23) Minute (0 to 59)

System Variables

371

ControlWave Designer Programmer's Handbook D301426X012 August 2020
System Variable Name Address Data Type

_TIME_007 _POWER_OFF _CPU_OVERLD _RIO_REQ_SAFE
_RIO_REQ_PACK

%MB 3.19 : SINT %MD 3.20 : DINT %MD 3.24 : DINT %MD 3.28 : DINT := 50
%MD 3.32 : DINT := 10

_BAD_ANY_CONST _BAT_OK

%MD 3.36 : DINT %MX 3.40.0 : BOOL

_HOT_CARD_IN_PROG

%MX 3.41.0 : BOOL

_USE_ACCOL_NAME

%MX 3.42.0 BOOL

_AI_FOR_NON_ALMS

%MX 3.42.1 BOOL

Minimum Firmware Needed
1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 4.00
4.10

Description
Second (0 to 59) Number of seconds the system was powered off (after a power-fail recovery) Number of times that the System Idle time was detected to be too small Number of milliseconds before calculated due time to start collection of I/O from remote devices In milliseconds. If two RIO requests are to be made to the same IP address within this time, they are packed into a single TCP packet. Invalid constants loaded onto variable of type 'ia' or 'iany'. Should be TRUE during normal operation. It is set TRUE if ControlWave's SRAM backup battery is OK. If the battery cannot provide the necessary voltage to backup the SRAM (battery voltage low, battery failed, or missing) this becomes FALSE, and the battery should be replaced. It also shows FALSE if the backup battery is disabled by the jumper. On power-up after battery failure, all retain values in SRAM are set to 0, or their initial values. NOTE: Does not work for RTU 3340 - always will show a '1' Set when ControlWave 'hot' card replacement is in progress. When set, I/O values for the board are held constant. Used in response to RDB messages from OpenBSI. When set to TRUE global variable names (those beginning with @GV) will be translated to ACCOL signal name format before being sent back. If _USE_ACCOL_LCL, variables with instance names other than `@GV' will also be translated to ACCOL II signal format. Variable names must not exceed 20 characters, and must follow the 8 character basename, 6 character extension, and 4 character attribute rules of ACCOL II. Alarm variables are only those variables which have been configured as alarms using one of the Alarm function blocks. A

372

System Variables

System Variable Name Address Data Type

_INH_SYS_EVENTS

%MX 3.42.2 BOOL

_USE_ACCOL_LCL

%MX 3.42.4 BOOL

_SEC_SIGNIN_AUD_ENA %MX 3.42.5 BOOL

_SEC_SIGNIN_AUD_FTP_E %MX 3.42.6 BOOL NA

_INH_EXTERNAL_EVENTS %MX 3.42.7 BOOL

_ALARM_FORMAT

%MB 3.43 SINT

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Minimum Firmware Needed

Description
non-alarm variable is any variable which hasn't been configured as an alarm using one of the Alarm function blocks.

When _AI_FOR_NON_ALMS is set to FALSE, the Alarm Inhibit/Enable bit is permanently set to AI (alarm inhibit) for all non-alarm variables. (This is the default).

4.20 4.90
5.20 5.20
5.11 4.60

When _AI_FOR_NON_ALMS is set to TRUE, the Alarm Inhibit/Enable bit for each individual non-alarm variable can be set by the user to either Alarm Inhibit (FALSE state), or Alarm Enable (TRUE state). Because these are NOT alarms, this has no practical effect, unless the AI / AE bit is used for some specific purpose, e.g. in the OpenEnterprise Database. Certain system events are logged by the AUDIT system (for example, the power on of the unit, etc.) To inhibit logging of these events, set this to TRUE. If set to TRUE, local signals with instance names other than `@GV' will be converted to ACCOL II style signal names in the Signal Extractor's SIG file, by changing underscores `_' to periods `.', and system signal underscores to pound `#' signs. When set TRUE, enables audit logging of user sign-on and sign-off activities at the RTU. This bit once turned on will not turn off except on an application COLD start. To keep this enabled a cold start task should turn this back on. Default: FALSE When set TRUE, enables audit logging of FTP sign-on and sign-off activities at the RTU. Users can sign-on via FTP to look at the contents of the RTU flash memory area. Default: FALSE. Note: The RTU ignores the value of this system variable if _SEC_SIGNIN_AUD_ENA is FALSE. When set TRUE, turns off logging of user events such as calibration events, notes events, and clear history events. Alarm Report Format. Default = FALSE ­

System Variables

373

ControlWave Designer Programmer's Handbook D301426X012 August 2020
System Variable Name Address Data Type

_FLASH_FREE _FL_FILE_USAGE _FL_FILE_FREE _FL_HIST_USAGE _FL_HIST_FREE _HOT_CARD_COUNT _FP_ERR_SC

%MD 3.44 : DINT %MD 3.48 : DINT %MD 3.52 : DINT %MD 3.56 : DINT %MD 3.60 : DINT %MD 3.64 : DINT %MD 3.68 : DINT := 60000

_SUSP_PERCENT _EXP_HEART_BEAT

%MW 3.72 : INT %MD 3.76 DINT :=1000

_TOTAL_ALARMS

%MD 3.80 UDINT

_TOTAL_AUD_EVENTS

%MD 3.84 UDINT

_TOTAL_AUD_ALARMS

%MD 3.88 UDINT

_ALARMS_PRESENT

%MX 3.92.0 BOOL

Minimum Firmware Needed
1.0 1.0 1.0 1.0 1.0 1.0 1.0
2.0 3.10
4.00
4.00
4.00
4.00

Description
Long Format. For short format, set to TRUE. Common free FLASH space in the FLASH memory area. Total FLASH memory used for files. Free FLASH memory space available for files. Total FLASH memory used for Historical data. Free FLASH memory space available for Historical data. Hot card insert/remove count. Incremented at start of lock. Scan interval for floating point errors in tasks. All floating point errors occurring during the scan interval are counted as a single error in the ControlWave. In the RTU 3340, all floating point errors occurring during the scan interval are registered individually. Default scan interval is 60000 (1 minute). A measurement of the percentage of time that application-level tasks are suspended. This is the rate (in milliseconds) at which the ControlWave issues a heartbeat poll message to the I/O Expansion Rack(s). Default is 1000 (1 second). This value maintains a count of alarms generated. It is incremented by 1 each time a new alarm comes in. Users can reset the count as desired. This value maintains a count of events logged by the Audit system. It is incremented by 1 each time a new event occurs. Users can reset the count as desired. This value maintains a count of alarms logged by the Audit system. It is incremented by 1 each time a new alarm comes in. Users can reset the count as desired. This variable is set to TRUE, whenever a new alarm has been generated since the variable was last cleared (set to FALSE). If the user wants to use this as a notification that new alarms have arrived, the user

374

System Variables

System Variable Name Address Data Type

_AUD_EVT_PRESENT

%MX 3.93.0 BOOL

_AUD_ALM_PRESENT

%MX 3.94.0 BOOL

_IDLE_LED_MODE

%MB 3.95 SINT

_ALARMS_IBP_DEST1 _ALARMS_IBP_DEST2 _ALARMS_IBP_DEST3 _ALARMS_IBP_DEST4

%MX 3.96.0 BOOL %MX 3.96.1 BOOL %MX 3.96.2 BOOL %MX 3.96.3 BOOL

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Minimum Firmware Needed
4.00
4.00
5.00

Description
must include logic to turn it OFF (set it to FALSE) after receiving each notification, so that it will be ready when the next alarm comes in. This variable is set to TRUE, whenever a new audit event has been generated since the variable was last cleared (set to FALSE). If the user wants to use this as a notification that a new audit event has arrived, the user must include logic to turn it OFF (set it to FALSE) after receiving each notification, so that it will be ready when the next audit event comes in. This variable is set to TRUE, whenever a new audit alarm has been generated since the variable was last cleared (set to FALSE). If the user wants to use this as a notification that new audit alarms have arrived, the user must include logic to turn it OFF (set it to FALSE) after receiving each notification, so that it will be ready when the next audit alarm comes in. Specifies behavior of the IDLE LED on ControlWave XFC platform only. Possible mode values are: 0 = To conserve power, LED remains OFF for the first 58 seconds of every minute; in the final two seconds, acts as in Mode 2. 1 = To conserve power, LED is unused and is always OFF. 2 = LED reflects busy/idle status of the CPU. When ON, the CPU has idle time. When OFF, CPU is busy.

Non-XFC platforms: LED always reflects busy/idle status of the CPU. When ON, the CPU has idle time. When OFF, CPU is busy.

4.20 4.20 4.20 4.20

Alarms are present, that are to be shipped to Alarm Destination 1. Alarms are present, that are to be shipped to Alarm Destination 2. Alarms are present, that are to be shipped to Alarm Destination 3. Alarms are present, that are to be shipped to Alarm Destination 4.

System Variables

375

ControlWave Designer Programmer's Handbook D301426X012 August 2020
System Variable Name Address Data Type

_ALARMS_BSAP_PORT1

%MX 3.96.4 BOOL

_ALARMS_BSAP_PORT2

%MX 3.96.5 BOOL

_ALARMS_BSAP_PORT3

%MX 3.96.6 BOOL

_ALARMS_BSAP_PORT4

%MX 3.96.7 BOOL

_ALARMS_BSAP_PORT5

%MX 3.97.0 BOOL

_ALARMS_BSAP_PORT6

%MX 3.97.1 BOOL

_ALARMS_BSAP_PORT7

%MX 3.97.2 BOOL

_ALARMS_BSAP_PORT8

%MX 3.97.3 BOOL

_ALARMS_BSAP_PORT9

%MX 3.97.4 BOOL

_ALARMS_BSAP_PORT10 %MX 3.97.5 BOOL

_ALARMS_BSAP_PORT11 %MX 3.97.6 BOOL

_LOCAL_ADDRESS

%MW 3.98 : INT

_EBSAP_GROUP

%MW 3.99 : INT

_CPU_BUSY_P1

%MW 3.100 : INT

_ARCH_ACCESS_TYPE _APPLICATION_LOCKED

%MD 3.102 : SINT %MX 3.103.0 : BOOL

_NHP_ADDITIONAL_MASK %MD 3.104 :DWORD

_HEAP_CUR_FREE

%MD 3.108 : DINT

_HEAP_BLK_FREE

%MD 3.112 : DINT

_HEAP_START_FREE

%MD 3.116 : DINT

Minimum Firmware Needed 4.20 4.20 4.20 4.20 4.20 4.20 4.20 4.20 4.20 4.20 4.20 4.20 4.20
4.20
4.41 4.50
4.20 4.40 4.40
4.40

Description
Alarms are present, that are to be sent out BSAP port 1 to the host. Alarms are present, that are to be sent out BSAP port 2 to the host. Alarms are present, that are to be sent out BSAP port 3 to the host. Alarms are present, that are to be sent out BSAP port 4 to the host. Alarms are present, that are to be sent out BSAP port 5 to the host. Alarms are present, that are to be sent out BSAP port 6 to the host. Alarms are present, that are to be sent out BSAP port 7 to the host. Alarms are present, that are to be sent out BSAP port 8 to the host. Alarms are present, that are to be sent out BSAP port 9 to the host. Alarms are present, that are to be sent out BSAP port 10 to the host. Alarms are present, that are to be sent out BSAP port 11 to the host. The BSAP local address programmed into the unit. The EBSAP Group number programmed into the unit. A value of 0 indicates that standard BSAP is used (no EBSAP). This measures (in units of 0.1%) how occupied the CPU is, running applicationlevel tasks, or active system tasks. When non-zero, reads archive files as if they were analog arrays. When set TRUE, prevents external control changes to project via ControlWave Designer. Also prevents project downloads. This defines an IP mask for additional NHP addresses. Displays the current amount of RAM that is free for system use. Displays the size of the largest block of free volatile memory. (Either SDRAM or SRAM, depending upon the ControlWave platform being used.) The value of HEAP_CUR_FREE when the application (project) was started.

376

System Variables

System Variable Name Address Data Type

_HEAP_RBLK_FREE _TS_DELTA_ACCURACY _SEC_SIGNIN_FAILURES _SEC_SIGNOFF_TMO

%MD 3.120 : DINT %MD 3.124 : DINT %MD 3.128 UDINT %MD 3.132 UDINT

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Minimum Firmware Needed 4.40
4.50
5.20
5.20

Description
Displays the size of the maximum block of retain memory that is currently free. Turn-around time before accepting timestamp. Count of the number of failed sign-in attempts at the RTU. Specifies a period of time ( in seconds) after which the RTU automatically logs a user off for inactivity. Range: 0-86400

Per Task Parameters (generated according to the number of tasks specified to the SysVar wizard)

The next several system variables are generated for each individual task. The first task system variable name begins with a `_T1' prefix, the second task system variable name begins with a `_T2' prefix, etc.

System Variable Name
_T1_SLIP

Address Data Type
%MD 3.1032 : DINT

Minimum Firmware Needed
1.0

_T1_FP_ERR

%MD 3.1036 : DINT 1.0

_T2_SLIP

%MD 3.1064 : DINT 1.0

_T2_FP_ERR

%MD 3.1068 : DINT 1.0

System variables for tasks would continue from this point on, following the same pattern as shown for the first and second tasks, above:

3rd task 3.1096 to 3.127 4th task 3.128 to 3.159 etc. etc.

Description
Number of times that the watchdog timer expired for the current task. Number of floating point errors detected (underflow, overflow, etc.) See above description for corresponding T1 variable See above description for corresponding T1 variable

Communication Statistics per port. A fixed 68-byte long statistics area is reserved per port. SysVar Wizard selects from the following parameters according to the port type.

System Variable Name Address Data Type

Port 1 offsets 3000-3067:

_P1_TYPE

%MB 3.3000 : SINT

Minimum Firmware Needed

Description

1.0

0 = UNUSED

System Variables

377

ControlWave Designer Programmer's Handbook D301426X012 August 2020

System Variable Name Address Data Type

_P1_MODE _P1_RECEIVES
_P1_TRANSMIT
_P1_POLLS _P1_RESP_TMO
_P1_DISC_TRANS _P1_CONS_TMO
_P1_NAKS _P1_NAKS_RCV _P1_CRC_ERR _P1_DISC

%MB 3.3001 : SINT %MD 3.3004 : DINT := 0
%MD 3.3008 : DINT := 0
%MD 3.3012 : DINT := 0
%MD 3.3016 : DINT := 0
%MD 3.3020 : DINT := 0 %MD 3.3024 : DINT := 0

_P1_DISC_RCV _P1_PROT_ERR _P1_TMO_SEND Reserved
:

%MD 3.3028 : DINT := 0 %MD 3.3032 : DINT := 0 %MD 3.3036 : DINT := 0 %Mx3.3040 - 3.3067

Minimum Firmware Needed
1.0 1.0
1.0
1.0 (Polls) 2.0 (Resp timeout) 2.0
1.0 2.0 1.0 2.0
2.0 2.0 2.0

Description
1 = BSAP Slave 2 = BSAP Master 15 = Custom Protocol 28 = Serial IP (PPP) protocol mode This is the total number of messages received through this port. (Does not include protocol messages.) This is the total number of messages transmitted through this port. For the Master Port this includes poll messages as well. For the Slave: This is the number of poll messages received by the Slave Port (as applicable). For the Master: Response Timeouts. For the Slave: Discards for transmission. If nonzero, may indicate _Px_POLL_PER value for the Slave Port should be a larger number. For the Master: Consecutive timeouts. For the Slave: NAKs issued. For the Master: NAKs received. For the Master: A message was received by the Master port with correct framing; however it failed the CRC check and was discarded. Usually, this is due to noise on the line. The Master ignores this message. For the Slave: A message which is received by the Slave but whose ACK is not received by the Master is retransmitted by the Master. The Slave discards the duplicate message and advises the Master by issuing an 'ACK, Message Discarded' response. This is commonly caused by noise on the line. Discarded ACKs received by the Master.
This is the number of protocol errors for the Master port. This is the number of timeouts when sending messages. Reserved for future

Port 2 offsets 3068-3135: Replication of port 1 offsets. Port 3 offsets 3136-3203: Replication of port 1 offsets. Port 4 offsets 3204-3271: Replication of port 1 offsets. Port 5 offsets 3272-3339: Replication of port 1 offsets. Port 6 offsets 3340-3407: Replication of port 1 offsets.

378

System Variables

Port 7 offsets 3408-3475: Replication of port 1 offsets. Port 8 offsets 3476-3543: Replication of port 1 offsets. Port 9 offsets 3544-3611: Replication of port 1 offsets. Port 10 offsets 3612-3679: Replication of port 1 offsets. Port 11 offsets 3680-3747: Replication of port 1 offsets. Port 12 offsets 3748-3815: Replication of port 1 offsets.

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Communication System Configuration Parameters

System Variable Name Address Data Type

_ALM_RETRIES _ALM_RET_ACT _ALM_RET_DEAD _ETH_POLL_PER _ETH1_ACT _ETH2_ACT _ETH3_ACT _NHP_IGNORE_NRT
_NHP_IGNORE_TS

%MW 3.4000 : UINT := 3 %MW 3.4002 : UINT := 60 %MW 3.4004 : UINT := 120 %MW 3.4006 : UINT := 0 %MX 3.4008.0 : BOOL %MX 3.4008.1 : BOOL %MX 3.4008.2 : BOOL %MX 3.4009.0 : BOOL
%MX 3.4009.1 : BOOL

Minimum Firmware Needed
1.0
1.0
1.0
1.0
1.0 1.0 1.0
4.00
4.00

Description
Number of times to retry alarm reports before slowing retry interval. Amount of time (in seconds) to wait before an alarm retry in ACTIVE state. Amount of time (in seconds) to wait before an alarm retry in DEAD state. Timeout for traffic on Ethernet lines. (Ethernet poll period) Ethernet port 1 Active. Ethernet port 2 Active. Ethernet port 3 Active. When set TRUE, node routing tables received via IP from the Network Host PC will be ignored. When set TRUE, time synchronization messages received via IP from the Network Host PC will be ignored.

Communication System ­ Port specific configuration parameters.

Port 1 - offsets 4010-4019: SysVar Wizard selects from the following parameters according to the port type.

System Variable Name Address Data Type

_P1_POLL_PER

%MW 3.4010 : UINT := 5

Minimum Firmware Needed
1.0

Description
Polling cycle time in seconds. Applies to Master and Slave. Master: Begins a new polling cycle on every timeout. If actual polling of all slave lasts longer than this timeout then the next polling cycle is started as soon as the current cycle finishes. Slave: If the master does not poll within this time period all messages queued to go up to the master are discarded.

System Variables

379

ControlWave Designer Programmer's Handbook D301426X012 August 2020
System Variable Name Address Data Type

_P1_WRITE_DEL

%MW 3.4012 : UINT := 0

Minimum Firmware Needed
1.0

_P1_RETRIES

%MW 3.4014 : UINT := 0 2.0

_P1_ACTIVE

%MX 3.4016.0 : BOOL

1.0

_P1_TS_FORCE
_P1_DTR_STATE _P1_DCD_STATE _P1_DIAL_ACTIVE _P1_TS_DIS

%MX 3.4016.1 : BOOL := 1.0 FALSE

%MX 3.4017.0 BOOL

4.20

%MX 3.4017.1 BOOL

4.20

%MX 3.4017.2 BOOL

3.11

%MX 3.4018.0 : BOOL := 1.0 FALSE

_P1_NRT_DIS

%MX 3.4018.1 : BOOL := 2.0 FALSE

_P1_IDLE_POLL _P1_ALM_DIS _P1_IMM_DIS

%MX 3.4018.2 : BOOL := 2.0 FALSE

%MX 3.4018.3 : BOOL := 2.0 FALSE

%MX 3.4018.4 : BOOL

3.10

:=FALSE

Description
Time in milliseconds. Applies to Master and Slave. Message reply delay. After CTS is received, wait this period before beginning the transmission. Number of link level retries. Applies to Master only. Default no retries, i.e. single transmission. For example, if set to 2, a total of 3 transmissions may occur. Output from comm. System. For BSAP Slave: One or more messages was received during the previous poll period. For BSAP Master: One or more slave nodes is still alive. Applies only to the Slave. Input/Output to/ from comm. system. When set to TRUE a request asking for the TS/NRT message is sent to the port master. Reports the current state of the Data Terminal Ready (DTR) line for this port. TRUE means DTR active. Reports the current state of the Data Carrier Detect (DCD) line for this port. TRUE means DCD active. When TRUE, indicates that dialing is in progress on this port. Applies only to the Slave. Input to the comm. System. When set to TRUE do not process the TimeSync information at this port. Set it to FALSE to accept and process the TimeSync at this port (Default). Applies only to the Slave. Input to the comm. System. When set to TRUE do not process the NRT information at this port. Set it to FALSE to accept and process the NRT at this port (Default). Applies only to the Master. Input to the comm. system. When set to FALSE the IDLE polling is Enabled (Default). Set this to TRUE to disable the IDLE polling. Input to the comm. System. When set to FALSE the port can transmit alarm reports (Default). Set this to TRUE when alarm reports are not to be transmitted through this port. Input to the comm. System. When FALSE (the default), this port can operate in immediate response mode. When set to TRUE, this port CANNOT operate in immediate response

380

System Variables

System Variable Name Address Data Type

_P1_IGNORE_ECHO
_P1_DIAL_PORT _P1_AUTO_DTR

%MX 3.4018.5 BOOL
%MX 3.4018.6 BOOL %MX 3.4018.7 BOOL

_P1_LOCAL_PORT

%MX 3.4019.0 BOOL

_P1_RESET_STATISTICS %MX 3.4019.1 BOOL

_P1_INH_BSAP_SLAVE

%MX 3.4019.2 BOOL

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Minimum Firmware Needed
3.10 4.00 4.20
4.20 5.30 5.43

Description
mode. On two-wire RS485 ports, anything sent is echoed back. Set to TRUE, to ignore the data echoed back. Set to TRUE to allow dialing on this port. The function of this variable varies depending upon the type of port. For all port types, DTR is disabled if DCD is inactive. In addition, the following restrictions apply: For BSAP Master Ports, DTR is only on while a communication transaction is in progress; once the transaction is over, DTR is dropped, until the completion of the poll period. For Custom Master ports, DTR is dropped after the transaction and no other request is pending. For Generic Serial Ports, no processing is done since DTR control is expected to be in manual mode. Defines this port as a BSAP Local Port. It will answer polls to any BSAP address, even if this ControlWave has a different local address than the incoming poll message. Resets the statistics in the array for the I/O expansion rack. Used with the RIO 485 interface. See the ControlWave Designer online help for more information. When set TRUE prevents BSAP slave communications on this port.

Port 2 - offsets 4020-4029 (replication of port 1 offsets as applicable). Port 3 - offsets 4030-4039 (replication of port 1 offsets as applicable). Port 4 - offsets 4040-4049 (replication of port 1 offsets as applicable). Port 5 - offsets 4050-4059 (replication of port 1 offsets as applicable) Port 6 - offsets 4060-4069 (replication of port 1 offsets as applicable) Port 7 - offsets 4070-4079 (replication of port 1 offsets as applicable) Port 8 - offsets 4080-4089 (replication of port 1 offsets as applicable) Port 9 - offsets 4090-4099 (replication of port 1 offsets as applicable) Port 10 - offsets 5000-5009 (replication of port 1 offsets as applicable)

System Variables

381

ControlWave Designer Programmer's Handbook D301426X012 August 2020

System Variable Name Address Data Type

Minimum

Firmware

Needed

Port 11 - offsets 5010-5019 (replication of port 1 offsets as applicable)

Port 12 - offsets 5020-5029 (replication of port 1 offsets as applicable)

Description

Other Communication parameters ­ Data Line Monitoring

_DLM_PORT _DLM_R_PTR _DLM_READ _DLM_WRITE

%MB 3.5000 : SINT :=

1.0

%MD 3.5001 : USINT

1.0

%MB 3.5003 : STRING 1.0

%MB 3.5088 : STRING 1.0

String Data:

_CW_NAME_STR

%MB 3.5400 : STRING 2.0

_CW_DESCRIPTION_STR %MB 3.5485 : STRING

2.0

_CW_CONTACT_STR _CW_LOCATION_STR _CW_LOAD_STR _S1_IO_BOARD_ID_STR _S2_IO_BOARD_ID_STR _S3_IO_BOARD_ID_STR _S4_IO_BOARD_ID_STR _S5_IO_BOARD_ID_STR _S6_IO_BOARD_ID_STR _S7_IO_BOARD_ID_STR _S8_IO_BOARD_ID_STR

%MB 3.5570 : STRING

2.0

%MB 3.5655 : STRING

2.0

%MB 3.5740 : STRING

4.40

%MB 3.6000 : STRING 2.0

%MB 3.6085 : STRING

2.0

%MB 3.6170 : STRING

2.0

%MB 3.6255 : STRING

2.0

%MB 3.6340 : STRING

2.0

%MB 3.6425 : STRING

2.0

%MB 3.6510 : STRING

2.0

%MB 3.6595 : STRING

2.0

1-based port number to monitor. Position in string to load next character. Storage for string which has been read. String which has been written.
Defines the name. Description: Automatically set by the system to the firmware ID. Defines the contact. Defines the location. Defines the project version. ID string for 1st I/O board. ID string for 2nd I/O board. ID string for 3rd I/O board. ID string for 4th I/O board. ID string for 5th I/O board. ID string for 6th I/O board. ID string for 7th I/O board. ID string for 8th I/O board.

Redundancy parameters: (See ControlWave Redundancy Setup Guide (D5123) for details.)

Additional Communication System configuration parameters.

_SLAVE_PORT

%MW 3.8000 : UINT := 1 2.0

_MSG_TIMEOUT

%MD 3.8004 : DINT :=

2.0

30000

_NEW_NRT_RCVD
382

%MX 3.8008.0 : BOOL := 2.0

Port number for the network slave port. Valid values are:
1 - 11 (serial COM ports) 15 = IP (Ethernet or PPP) Timeout for all messages being tracked (all global messages passing through this node are tracked). If this value is <= 0 then the default time out of 30000 milliseconds (30 seconds) is assumed. Output from Comm. system. TRUE indicates a
System Variables

System Variable Name Address Data Type
FALSE

_SLAVE_DEAD _SLAVE_POLL_DIS

%M 3.8010 Map this to a user defined data type of a BOOL array with 127 elements. B_127 : ARRAY [1..127] OF BOOL; If this array is also to be manipulated using the Dataview or equivalent tool then the data type must be a two dimensional array with 127x1 or 1x127. B_1_1 : ARRAY [1..1] OF BOOL; B_127 : ARRAY [1..127] OF B_1_1; In addition, it must be registered with REG_ARRAY. %M 3.8138 Map this to a user defined data type of a BOOL array with 127 elements. B_127 : ARRAY [1..127] OF BOOL; If this array is also to be manipulated using the Dataview or equivalent tool then the data type must be a two dimensional array with 127x1 or 1x127. B_1_1 : ARRAY [1..1] OF BOOL; B_127 : ARRAY [1..127] OF B_1_1; In addition, it must be registered with REG_ARRAY.

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Minimum Firmware Needed
2.0

Description
new NRT was received and has to be propagated to the slave RTUs. FALSE following the TRUE state indicates that BSAP Master has or is in process of sending the NRT to all slave RTUs. Can be set to TRUE by the user to force transmission of NRT to slave nodes. Applicable to the Master only. Array elements 1-127 are used by the system to report the current status of the slaves 1-127. When a node is not responding to the POLLS it is declared as dead and the corresponding status is set to TRUE. (NOTE: This logic can be reversed via _BSAP_FLAG_SENSE.)

This array is similar to the #NODE.xxx. signals used in ACCOL II for Network 3000-series controllers.

2.0

Applicable to the Master only.

Array elements 1-127 are used as input to the

comm. system to indicate whether the slave(s)

are to be polled or not. When an array element

is set to TRUE the corresponding node is not

polled. (NOTE: This logic can be reversed via

_BSAP_FLAG_SENSE.)

This array is similar to the #NDARRAY used in ACCOL II for Network 3000-series controllers, except by default, the logic is opposite.

System Variables

383

ControlWave Designer Programmer's Handbook D301426X012 August 2020
System Variable Name Address Data Type

_BSAP_FLAG_SENSE

%MX 3.8265.0 BOOL :=FALSE

Minimum Firmware Needed
4.00

Description
Default is FALSE. When set TRUE, reverses the interpretation of BOOL values in all four control and status arrays. See table, below:

Control or Status Array BSAP_FLAG_SENSE=FALSE (Default) BSAP_FLAG_SENSE=TRUE

_SLAVE_DEAD element

TRUE = Slave Node Dead; FALSE = Slave Node Alive

TRUE = Slave Node Alive; FALSE = Slave Node Dead

_SLAVE_POLL_DIS element

TRUE = Do NOT poll this node; FALSE = Poll this node

TRUE = Poll this node; FALSE = Do NOT Poll this node

_Px_DEAD_ARRAY element

TRUE = EBSAP Slave Node Dead; FALSE = EBSAP Slave Node Alive

TRUE = EBSAP Slave Node Alive; FALSE = EBSAP Slave Node Dead

_Px_DISABLE_ARRAY element TRUE = Do NOT poll this EBSAP node; FALSE = Poll this EBSAP node

TRUE = Poll this EBSAP node; FALSE = Do NOT Poll this EBSAP node

Port 1 ­ offsets 8384-8428 _P1_TIMEOUT _P1_CYCLE_INT _P1_CYCLE_TIMEO _P1_WRITE_TMO
_P1_LOW_SL _P1_HIGH_SL _P1_VSAT_MIN_RESP

%MD 3.8384 : DINT := 500; 2.0

%MD 3.8388 : DINT

4.20

%MD 3.8392 : DINT

4.20

%MD 3.8396 : DINT := 0

2.0

%MB 3.8400 : SINT := 0

2.0

%MB 3.8401 : SINT := 0

2.0

%MD 3.8402 : INT

4.40

In milliseconds. Link level response timeout. This timeout value must be set approximately 50 ms higher than the facing slave's Message Write Delay. The interval (in milliseconds) at which DTR is enabled (Fast Duty Cycle). Fast duty cycle timeout. Common. In milliseconds. Since the CTS must be received in order to transmit, this time out is added to the expected message transmission time at the effective Baud Rate for this port. The response message must be completely transmitted before the resulting timeout. Default is dynamic and calculated based on the current baud rate. Output parameter. Set to the value from the flash parameter. It is the lowest slave Address for this port. Output parameter. Set to the value from the flash parameter. It is the highest slave Address for this port. The minimum period of time that a VSAT Slave Port will wait before

384

System Variables

Port 1 ­ offsets 8384-8428

_P1_VSAT_MAX_RESP

%MD 3.8404 : INT

_P1_VSAT_UP_ACK_WAIT

%MD 3.8406 : INT

_P1_RBE_ERE_COUNT

%MD 3.8408 UDINT

ControlWave Designer Programmer's Handbook D301426X012 August 2020

4.40
4.40 4.40

responding to a message from the master. The main purpose of this delay is to allow a VSAT Master Port enough time to send messages to multiple slaves without getting a response from any of them until all of those messages have been sent out. Beginning with ControlWave firmware 04.80, this variable has two possible uses:
1.The maximum period of time (in milliseconds) that a VSAT Slave Port will wait before responding to a message from the master. This timer is meant to allow enough time for a data response to become available. One of the following can happen before this timer expires: a) An alarm message is sent. b) A data response message is sent. If the timer expires without either of these messages being sent, then a) A DOWNACK is sent (if received message was a data request) or b) An ACK/NO DATA message will be sent (if received message was a poll).
2. Beginning with ControlWave firmware 04.80, if the port is a BSAP Slave Port and immediate response is configured for this port, ( i.e. _Pn_IMM_DIS is set to FALSE), this variable specifies how long the BSAP Slave driver must wait for a data response. If the response is received before this time, the response will be sent immediately. However, if the the timer expires then the driver will send a DOWN-ACK protocol response to the Master. This timeout value may range from 50 to 32767 milliseconds. This is the period of time the VSAT Master will wait, after sending an UPACK-WITHOUT-POLL message (to terminate a poll transaction), to allow time for the VSAT Slave to get ready for the next request. Count of the number of Exception

System Variables

385

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Port 1 ­ offsets 8384-8428

_P1_RBE_RM_COUNT

%MD 3.8412 UDINT

_P1_RBE_POOL_OVERFLOW

%MD 3.8416 UDINT

_P1_RBE_POOL_SIZE

%MW 3.8420 UINT

_P1_RBE_REXMIT_COUNT

%MD 3.8422 USINT

_P1_RBE_RM_SINCE_ACK

%MD 3.8423 USINT

386

4.40 4.40 4.40
4.40 4.40

Reports (ER) generated and posted to the Report Pool for port n. This count is incremented each time a new exception is reported. Application may reset this count. Count of the number of Report Messages successfully transmitted for port n. Each RM can have more than 1 Exception Report in it. This count is not incremented when RM are retransmitted. Application may reset this count. Count of the number of Exception Reports the RBE FB wanted to post in the Report Pool but could not because the Report Pool was full. These exceptions may essentially be lost for the RBE Client at this port. Application may reset this count. The capacity of the Report Pool for port n. This size governs the maximum number of Exception Reports that can be outstanding at any given time without being successfully reported. This size is determined based on the expected rate of exception occurrence and the throughput at the port. This size can be changed on line. However, for the new size to be effective the RBE FB must be re-run with the ioabInit parameter in TRUE state. When this variable is set to 0 (default), the RBE is not active for the port. Adjust this parameter only if the Report Pool overflows or if the system wide RAM usage needs to be redistributed. Indicates number of retransmissions of the last Report Message. This happens when an expected RBE_ACK is not received from the RBE Client. Following the RBE_ACK_TMO the last RM is retransmitted. On such retransmissions the RM_COUNT is not incremented. This count is automatically reset back to 0 whenever an ACK is received. Indicates number of Report Messages sent since last ACK was received. Count is adjusted whenever an ACK is received.

System Variables

Port 1 ­ offsets 8384-8428

_P1_RBE_CLIENT_ID

%MD 3.8424 USINT

_P1_RBE_ERE_FORMAT _P1_RBE_ACK_LIMIT

%MD 3.8425 USINT %MD 3.8426 USINT

_P1_RBE_STOP_RPT_MSG

%MX 3.8427.0 : BOOL

_P1_RBE_PENDING

%MX 3.8427.1 : BOOL

_P1_RBE_USE_ACCOL_NAME

%MX 3.8427.2 : BOOL

_P1_RBE_GO_ACT_ON_START %MX 3.8427.3 : BOOL

ControlWave Designer Programmer's Handbook D301426X012 August 2020

4.40 4.40 4.40
4.40
4.40 4.40 4.40

This count is continuously incremented for each Report Message sent when the ACK Limit is set to 0. Identity of the RBE Client for port n. (0xA3 = default) Valid range available = 0x00-0xFF. Only time this will require a change is when the RBE Client in use has a different ID. Exception Report format type for port n. Indicates if and when an ACK is expected from the RBE Client. 0 = Never wait for an ACK for Report Message (default) n = 1-127 = send up to n Report Messages (RM) then stop if an ACK is not received for any of the Report Messages. When the reporting has stopped while waiting for an ACK, a timeout will result in the retransmission of the last RM. The periodic retransmission will occur until an ACK is received. FALSE = Start/Restart Report Message transmission at port n. TRUE = Temporarily stop sending Report Message for port n. When restarting from the stopped state the RM will begin with the next new Exception Report. This does not prevent new Exception Reports from being put into the buffer pool. It is possible to overflow the buffer pool while this variable is set. This variable is set to TRUE when there is one or more Exception Reports pending for port n. It will automatically be changed to FALSE when the last Exception Report from the Report Pool has been successfully transmitted. This variable determines the format of the variable name in the Exception Report. TRUE = the variable names are in ACCOLII format. FALSE= the variable names are in IEC61131 format. Variable determines the initial state for the RBE following an application COLD or WARM start. FALSE (default) = RBE is to send the

System Variables

387

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Port 1 ­ offsets 8384-8428

_P1_RBE_REPEAT_TIMEOUT

%MD 3.8428 DINT

_P1_RBE_STATE

%MB 3.8432 SINT

_P1_MAX_SLAVES
_P1_TOP_LEVEL_NODES
_P1_TOTAL_NODES _P1_DEAD_ARRAY

%MD 3.8440 USINT
%MD 3.8441 USINT
%MD 3.8442 : INT %MD 3.8444 : INT

388

4.40
4.60 4.50 4.50 4.50 4.50

WAITING_INIT message to the RBE Client and wait for the INIT_REQ message. Periodically, ACK_TMO, repeat the wait message until the init message is received. TRUE = Following a successful initialization the RBE enters the active state where the database scan and exception reporting take place. Specifies the time to wait for an RBE ACK. If an ACK is not received within this period then retransmit the last Report Message. Periodically repeat this until an RBE ACK is received from the client. Ignore unrelated or out of sequence ACKs. A new Init or Demand Request will force an exit from this state. This timeout is also used during the initialization stage to determine when a WAITING INIT message will be re-sent if an INIT_REQ message has not been received. When this variable equals 0 no transmissions will occur.
Indicates the current state of this RBE port. See the `RBE' function block online help to learn the meaning of the number. Maximum number of slaves allowed below a virtual node. The number of slaves under a master (or virtual nodes under an Emaster.) Total number of slaves on this port. This array is similar to the _SLAVE_DEAD array. It is applicable to the EBSAP Master only. _Pn_DEAD_ARRAY is the number of a registered BOOL array that represents the number of slave nodes on Port n. The array must be dimensioned by the number of virtual nodes and max_slaves for row and column, respectively. The array elements are used by the system to report the current status of the slaves. By default, when a node is not responding to the POLLS it is declared as dead and the corresponding BOOL status is set to TRUE. NOTE: This default

System Variables

Port 1 ­ offsets 8384-8428

_P1_DISABLE_ARRAY

%MD 3.8446 : INT

_P1_PAD_FRONT _P1_PAD_BACK _P1_STATISTICS_ARRAY

%MD 3.8448 USINT %MD 3.8449 USINT %MD 3.8450 INT

ControlWave Designer Programmer's Handbook D301426X012 August 2020

4.50
4.60 4.60 5.30

logic for interpreting the BOOL can be reversed via _BSAP_FLAG_SENSE. This array is similar to the _SLAVE_POLL_DIS array. It is applicable to the EBSAP Master only. _Pn_DISABLE_ARRAY is the number of a registered BOOL array that represents the number of slave nodes on Port n. The array must be dimensioned by the number of virtual nodes and max_slaves for row and column, respectively. The array elements are used as an input to the communication system to indicate whether the slave(s) are to be polled or not. By default, when an array element is set to TRUE the corresponding node is not polled. NOTE: This default logic for interpreting the BOOL can be reversed via _BSAP_FLAG_SENSE. Number of front pad characters for BSAP messages. Number of back pad characters for BSAP messages. This designates an array to maintain statistics for an I/O Expansion Rack using RS 485 communication. For details on the array structure and statistics, see the online help in ControlWave Designer.

Port 2 ­ offsets 8512-8556 (replication of port 1 offsets as applicable). Port 3 ­ offsets 8640-8684 (replication of port 1 offsets as applicable). Port 4 ­ offsets 8768-8812 (replication of port 1 offsets as applicable). Port 5 ­ offsets 8896-8940 (replication of port 1 offsets as applicable). Port 6 ­ offsets 9024-9068 (replication of port 1 offsets as applicable). Port 7 ­ offsets 9152-9196 (replication of port 1 offsets as applicable). Port 8 ­ offsets 9280-9324 (replication of port 1 offsets as applicable). Port 9 ­ offsets 9408-9452 (replication of port 1 offsets as applicable). Port 10 ­ offsets 9536-9580 (replication of port 1 offsets as applicable).

System Variables

389

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Port 1 ­ offsets 8384-8428
Port 11 ­ offsets 9664-9708 (replication of port 1 offsets as applicable).
Port 12 ­ offsets 9792-9836 (replication of port 1 offsets as applicable).

_S9_IO_BOARD_ID_STR _S10_IO_BOARD_ID_STR _S11_IO_BOARD_ID_STR _S12_IO_BOARD_ID_STR _S13_IO_BOARD_ID_STR _S14_IO_BOARD_ID_STR

%MB 3.11000 : STRING %MB 3.11085 : STRING %MB 3.11170 : STRING %MB 3.11255 : STRING %MB 3.11340 : STRING %MB 3.11425 : STRING

ID string for 9th I/O board. ID string for 10th I/O board. ID string for 11th I/O board. ID string for 12th I/O board. ID string for 13th I/O board. ID string for 14th I/O board.

System Variable Name
_IPn_RBE_ERE_COUNT _IPn_RBE_RM_COUNT _IPn_RBE_POOL_OVERFLOW _IPn_RBE_REXMIT_COUNT
_IPn_RBE_PENDING

Address Data Type
%MD 3.12000 UDINT %MD 3.12004 UDINT %MD 3.12008 UDINT %MD 3.12014 USINT
%MX 3.12019.1 : BOOL

Minimum Firmware Needed
4.50
4.50
4.50
4.50
4.50

Description
Count of the number of Exception Reports (ER) generated and posted to the Report Pool for Ethernet port n. This count is incremented each time a new exception is reported. Application may reset this count. Count of the number of Report Messages successfully transmitted for Ethernet port n. Each RM can have more than 1 Exception Report in it. This count is not incremented when RM are retransmitted. Application may reset this count. Count of the number of Exception Reports the RBE FB wanted to post in the Report Pool but could not because the Report Pool was full. These exceptions may essentially be lost for the RBE Client at this port. Application may reset this count. Indicates number of retransmissions of the last Report Message. This happens when an expected RBE_ACK is not received from the RBE Client. Following the RBE_ACK_TMO the last RM is retransmitted. On such retransmissions the RM_COUNT is not incremented. This count is automatically reset back to 0 whenever an ACK is received. This variable is set to TRUE when there is one or more Exception Reports pending for Ethernet port n. It will automatically be changed to FALSE when the last Exception Report from the Report Pool has been

390

System Variables

System Variable Name Address Data Type

_IPn_RBE_RM_SINCE_ACK

%MD 3.12015 USINT

_IPn_IP_RBE_ADDRESS _IPn_RBE_POOL_SIZE

%MD 3.12128 UDINT %MW 3.12012 UINT

_IPn_RBE_ERE_FORMAT _IPn_RBE_ACK_LIMIT

%MD 3.12017 USINT %MD 3.12018 USINT

_IPn_RBE_REPEAT_TIMEOUT %MD 3.12020 DINT

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Minimum Firmware Needed
4.50 4.50 4.50
4.50 4.50
4.50

Description
successfully transmitted. Indicates number of Report Messages sent since last ACK was received at Ethernet Port n. Count is adjusted whenever an ACK is received. This count is continuously incremented for each Report Message sent when the ACK Limit is set to 0. Displays the IP Address for Ethernet Port n. The capacity of the Report Pool for port Ethernet Port n. This size governs the maximum number of Exception Reports that can be outstanding at any given time without being successfully reported. This size is determined based on the expected rate of exception occurrence and the throughput at the port. This size can be changed on line. However, for the new size to be effective the RBE FB must be re-run with the ioabInit parameter in TRUE state. When this variable is set to 0 (default), the RBE is not active for the port. Adjust this parameter only if the Report Pool overflows or if the system wide RAM usage needs to be redistributed. Exception Report format type for Ethernet port n. RBE Acknowledge Limit for Ethernet Port n. Indicates if and when an ACK is expected from the RBE Client. 0 = Never wait for an ACK for Report Message (default) n = 1-127 = send up to n Report Messages (RM) then stop if an ACK is not received for any of the Report Messages. When the reporting has stopped while waiting for an ACK, a timeout will result in the retransmission of the last RM. The periodic retransmission will occur until an ACK is received. Specifies the time to wait for an RBE ACK at Ethernet Port n. If an ACK is not received within this period then retransmit the last Report Message. Periodically repeat this until an RBE ACK is received from the client. Ignore unrelated or out of sequence ACKs. A new Init or Demand Request will force an exit from this state. This timeout is also used during the initialization stage to determine

System Variables

391

ControlWave Designer Programmer's Handbook D301426X012 August 2020 System Variable Name Address Data Type
_IPn_RBE_STOP_RPT_MSG %MX 3.12019.0 : BOOL
_IPn_RBE_USE_ACCOL_NAME %MX 3.12019.2 : BOOL
_IPn_RBE_GO_ACT_ON_STA %MX 3.12019.3 : BOOL RT

_IPn_RBE_STATE

%MB 3.12024

Minimum Firmware Needed
4.50
4.50 4.50
4.60

Description
when a WAITING INIT message will be re-sent if an INIT_REQ message has not been received. When this variable equals 0 no transmissions will occur. Control report message transmissions for port n. FALSE = Start/Restart Report Message transmission at port n. TRUE = Temporarily stop sending Report Message for port n. When restarting from the stopped state the RM will begin with the next new Exception Report. This does not prevent new Exception Reports from being put into the buffer pool. It is possible to overflow the buffer pool while this variable is set. This variable determines the format of the variable name in the Exception Report. TRUE = the variable names are in ACCOLII format. FALSE= the variable names are in IEC1131 format. Variable determines the initial state for RBE at Ethernet Port n following an application COLD or WARM start. FALSE (default) = RBE is to send the WAITING_INIT message to the RBE Client and wait for the INIT_REQ message. Periodically, ACK_TMO, repeat the wait message until the init message is received. TRUE = Following a successful initialization the RBE enters the active state where the database scan and exception reporting take place. The current state of RBE for the Ethernet port. See the `RBE function block' online help to learn the meaning of the number.

Static Memory Area:
In addition to the system variables described, a static memory array exists beginning at offset 3.100000. The static memory area is useful for storing data you have accumulated, and don't want to lose if the controller is restarted, such as flow totals, equipment run times, etc. This memory is normally NOT written to by the system, and so can be used to save user information across restarts. This defaults to 16K but can be reduced if there is insufficient space in SRAM for variables marked 'RETAIN'. This memory will only be re-

392

System Variables

ControlWave Designer Programmer's Handbook D301426X012 August 2020
initialized on a re-start if the SRAM control switch is set OFF, or if there is no battery backup.
It can also be initialized under program control by setting its value to 0.

Example - Manually Defining a System Variable to Display the Task Priority

Let's say that within one of our programs we want to know the configured priority of the first task in the project:

To find out if this information is available, look through the System Variable Mapping Charts and you will find the entry:

_T1_TASK_PRIO

%MW 1.1014 : INT

The configured priority of this task.

Our _T1_TASK_PRIO variable would be defined in a variable worksheet. For this particular project, it's called RTU_RESOURCEV but depending upon which version of ControlWave Designer you are using, it could be named `Global Variables' or something else.  First, double-click on the `Global Variables' icon in the project tree, to bring up the
worksheet.  Then right-click in the `Global Variables' section, and choose "Insert variable" from the
pop-up menu.
First, double-click on the Global Variables worksheet icon

Next, right-click within the worksheet, and choose "Insert variable" from the pop-up menu.

 A new variable called `NewVar1' will appear in the worksheet. Double-click on the `NewVar' name to edit it. Enter the name `_T1_TASK_PRIO' from the table.

System Variables

393

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Double-click on the "NewVar1" name to edit it.
Click in the "Type" field to change the Type.  Now click on the `Type' field, and a list box will appear. Choose `INT' because that is the type specified in the table. When you have finished editing the "Name" and "Type" they should look like this.
 Drag the scroll bar to bring additional fields into view.  Now, enter the address for the variable, as shown in the table `%MW 1.1014'. When
this is done, and the worksheet is closed, you have successfully defined a global variable for the task priority. Enter the address here

394

System Variables

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Using the System Variable Viewer
OpenBSI includes a debugging tool for viewing the current value of system variables in the ControlWave.
To start the System Variable Viewer, click Start Programs  OpenBSI Tools  Debugging Tools  System Variable Viewer.

In the System Variable Viewer, click Data  Communications to call up the Choose Communications dialog box.

There are three possible connection types:

TCP/IP:

Specify the IP address, and timeout (in milliseconds).

Syntax is: -ip ip_address timeout

Example Argument String: -ip 10.211.74.222 2000

Open BSI:

Specify the node name of the ControlWave to which you want to communicate for the Argument String.
Example: CWM2

System Variables

395

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Serial:

Specify the PC communication port, baud rate, and timeout (in milliseconds).

Syntax is: comm._port baud_rate timeout

Example Argument String: COM1 9600 2000

Click OK when you complete the argument string. This calls up the Choose Display Type dialog box.

If you want to view variables for a task other than Task 1, choose it here.

If you want to view variables for a port other than Port 1, choose it here.

In the Choose Display Type dialog box. Specify the list of system variables you want to view. If you want to see Task Information or Port information, you'll need to choose the proper numbered task or port first. After you make your selection, click OK and the list opens.

396

System Variables

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Notes:  The tool prompts you to log in to the RTU to view the system variables.  If you click on a particular value, it appears in the Expanded Value field.  Refreshing of the screen may be slow.  To choose a different list to view, click File  New List.

System Variables

397

ControlWave Designer Programmer's Handbook D301426X012 August 2020

398

System Variables

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Variable Extension Wizard
What is the Variable Extension Wizard?
The Variable Extension Wizard is run from within ControlWave Designer (this feature was added with OpenBSI Version 5.4/ControlWave Designer Version 4.0). It allows you to create initialization files (*.INI) which assist in batch configuration of variables within the ControlWave-series controller. The information in these initialization files is incorporated into the ControlWave project when read using either the DB_LOAD or RBE function blocks. The initialization files may be used to:  Configure lists (Requires ControlWave firmware 04.40 or newer)  Identify variables which should be collected via Report by Exception (Requires
ControlWave firmware 04.40 or newer)  Configure alarms (Requires ControlWave firmware 04.90 or newer)  Configure descriptive text, ON/OFF text, inhibit/enable flags, or units text (Requires
ControlWave firmware 04.90 or newer)
Important The configuration information entered via this method is not visible within ControlWave Designer. For example, you will not see LIST function blocks for lists created via this method, since it is performed via initialization files.
Before You Begin
 In order to view variables in the Variable Extension Wizard, you must have marked those variables for PDD collection within the project before you run the Variable Extension Wizard.
 Your ControlWave project must be in a state where it can be compiled successfully.
Starting the Variable Extension Wizard
The Variable Extension Wizard is run from within ControlWave Designer. To do this, click on:
View  Variable Extension Wizard

Variable Extension Wizard

399

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Using the Variable Extension Wizard
If your project includes more than one resource, you will be prompted to choose which resource and I/O Configuration you want to work with. Choose the resource, then click [Next>].
Choose the appropriate I/O configuration and resource (if prompted to do so)
Click on [Next>] When the Variable Extension Wizard first starts it will compile your ControlWave project.

400

Variable Extension Wizard

ControlWave Designer Programmer's Handbook D301426X012 August 2020
When the compilation has completed successfully, the Variable Search dialog box will appear.
Search only for variables with a given string in the variable name. (You must enter that string in the "Sub String Search" field.)
Search only for global variables.

Search for all global variables and all variables marked `PDD'.
Search only for variables with a given instance name. (You must enter that in "Instance Name".)

In the Variable Search dialog box, choose the type of variables you want to search for.

All Variables

Selecting this will cause the Wizard to search for all variables marked PDD, as well as all global variables (those with an instance name of @GV).

All Globals

Selecting this will cause the Wizard to search for all global variables in the project (those with an instance name of @GV).

Instance

Selecting this will cause the Wizard to search only for variables from a particular program instance. You must enter the name of that program instance in the "Instance Name" field.

Sub String

Selecting this will cause the Wizard to search only for variables whose names include a particular string of text. You must enter that text string in the "Sub String Search" field.

Variable Extension Wizard

401

ControlWave Designer Programmer's Handbook D301426X012 August 2020
When you've chosen which variables to search for, click [OK] and the variables display in a Search Grid.
Drag the scroll bar to bring more variables
Once the variables are displayed in the Search Grid you can do any of the following:  Mark the variable for Report By Exception (RBE) collection, and, if an analog variable,
configure its deadband value.  Configure the variable as an alarm.  Create one or more lists containing variables.  Assign units (for analogs) or ON/OFF text (for BOOLs) to the variable.  Set initial values of manual or alarm inhibit/enable flags.  Create descriptive text for the variable.

402

Variable Extension Wizard

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Marking a Variable for Report by Exception (RBE) Collection
RBE is a method of data collection where variables are collected only when they change.
For logical variables (BOOL), this means whenever the variable goes from TRUE to FALSE or FALSE to TRUE.
For analog variables (INT, REAL, etc.), this means whenever the analog variable changes more than a pre-configured deadband value. You MUST configure a deadband for an analog RBE variable, or else any change at all, even a minor fluctuation, would cause the variable to be collected.
To select a BOOL variable for RBE collection, just select its "Rbe" checkbox.

To mark an analog variable for RBE collection, first select its "Rbe" checkbox, then enter a deadband in the "Rbe Deadband" field, or use the list box for the field to select a variable which holds a value that will serve as the deadband.
NOTE: You must press the [Enter] key on the keyboard to complete the entry, or else you cannot exit the field.

Variable Extension Wizard

403

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Note: Your project must include an RBE function block, and you must have configured it, in order for these variables to be collected via RBE.
For a logical RBE variable
To define a logical RBE variable, simply check the "Rbe" check box for that variable.
For an analog RBE variable
To define an analog RBE variable, check the "Rbe" check box for that variable, then enter a deadband value in the "Rbe Deadband" field, or use the list box for the field to select another variable whose value will be used as the RBE deadband. Note: You MUST press the [Enter] key on your keyboard to exit the "Rbe Deadband" field.
Marking / Unmarking all variables in the Search Window for RBE collection
To mark all variables in the Search Grid for RBE collection, click on All  Mark All RBE. You will still have to define RBE deadbands for all analog RBE variables. To un-mark all variables in the search grid, so that none of them will be collected by RBE, click on: All Clear All RBE
Configuring a Variable as an Alarm
The controller generates alarm messages in response to a significant change in a variable's value or status. Full details on how alarms work are explained in the Alarm Configuration section in this manual. Alarms are configured in one of two ways:
1. Using Alarm function blocks (See the Alarm Configuration section, earlier in this manual)
2. Using the Variable Extension Wizard
Configuring an Analog Alarm Variable
Click on the "Alm" check box for the variable. The Analog Alarms dialog box will appear. Specify alarm limits for the variable. These limits determine at what point the variable enters an alarm condition. The alarm limit values may be entered directly as a constant, or you may specify separate analog variables to hold the value of each alarm limit. Specify a high deadband value, and/or low deadband value for the variable. Deadbands are used to define a range around the alarm limits where a minor fluctuation of the variable should not change the `in alarm' or `normal state' condition of the variable. Again, it may be entered as a constant, or as a separate analog variable. Choose priorities for each alarm limit. These are used to specify the severity of the alarm condition. The priorities from least important to most important are: Event `Evt', Operator Guide `OpG', Non-Critical `NCrit', and Critical `Crit'.

404

Variable Extension Wizard

Click [OK] when finished.
First, select the "Alm" box for the variable.

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Then specify alarm limits, priorities, and deadbands. When you're done click on [OK].

Variable Extension Wizard

405

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Configuring a Logical (BOOL) Alarm Variable

Click on the "Alm" check box for the variable. The Logical Alarms dialog box will appear.

Choose the "Type" of the alarm: `Alarm on True State' means that an alarm is generated when the variable changes from FALSE to TRUE; `Alarm on False State' means that an alarm is generated when the variable changes from TRUE to FALSE; `Alarm on Change of State' means that an alarm is generated by any change.

Choose a priority for the alarm, to indicate its severity. The priorities from least important to most important are: Event `Evt', Operator Guide `OpG', Non-Critical `NCrit', and Critical `Crit'.

Click on [OK] when finished.
First, select the "Alm" box for the variable.

Next, choose the type of alarm, and the priority, then click on [OK].

Creating / Editing a List
To create a list of variables, click on View  Lists.

The Lists dialog box will appear. If you want to edit an existing list, select it from the "List Number" list box. To create an all new list, click [New] and enter a number for the list.

406

Variable Extension Wizard

ControlWave Designer Programmer's Handbook D301426X012 August 2020
To add a variable to the current list, click on its name in the "Searched Variable Directory" then click on the [>>] button. To remove a variable from the current list, click on its name in the "List Entries" field then click on the [<<] button.
You can optionally enter a description for the list in the "List Descriptor" field.
If you want users to be able to edit the list, online, check the "Allow on-line edits" box. Note: Users can delete variables; but can only add variables that already exist in the project.
To delete an existing list, choose the list number, then click [Delete]. Note: There is no prompt to confirm the deletion ­ the entire list is deleted immediately from the wizard. (OpenBSI 5.7 Service Pack 2 and newer.)
Note: Your ControlWave project must include a configured DB_LOAD function block to load these lists.

To edit a pre-existing list, select it from the list box.
To add a variable to the current list, click on the variable name, then click on the [>>] button to add it to the "List Entries."
To remove a variable to the current list, click on the variable name in "List Entries," then click on the [<<] button.

Optionally, you can enter a description for the list here.

If you want users to be able to make online edits to signal lists, check this box.
Click on "New" to create a new empty list.
Variables are stored and referenced in the list in the order in they appear under "List Entries." To change the position of a variable, click on it in "List Entries" and then click on the [Move Up] or [Move Down] buttons to position it in the desired order.

Variable Extension Wizard

407

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Setting initial values for Manual or Alarm Inhibit/Enable Flags
To set the initial value of a Manual Inhibit/Enable flag or Alarm Inhibit/Enable flag to Inhibit, simply select the "MI" or "AI" checkboxes, respectively.

To set a variable's initial Alarm Inhibit/Enable status to `Inhibit', check the AI box.

To set a variable's initial Manual Inhibit/Enable status to `Inhibit', check the MI box.

408

Variable Extension Wizard

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Assigning Units Text (Analog Variables ONLY)
To assign engineering units to a variable, click in the "Units Text" field, and enter up to six characters of units text, then press the [Enter] key on the keyboard, to exit the field. Alternatively, you can specify a variable name in the field, which will hold the units text.

Note: You can enter units text in brackets in the Description field of a variables worksheet in ControlWave Designer.
The units text entered there, however, only appears within ControlWave Designer; it is not downloaded to the RTU. It cannot be viewed in DataView or other data collection programs. You can view this text in the Variable Extension Wizard, however, it appears in green to indicate that it does not become part of the _VARDEFS.INI file and is not downloaded to the RTU. If you want to convert this text so it can be downloaded to the RTU, position your cursor in the units text field of the Variable Extension Wizard, and press the [Enter] key.
Position the cursor in the field.
The text now changes color from green to black, and can be downloaded as if it was entered directly in the Variable Extension Wizard.

Variable Extension Wizard

409

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Assigning ON/OFF Text (BOOL Variables ONLY)
To assign ON/OFF text to a BOOL variable, click in the "Units Text" field, and enter up to six characters of ON text, followed by a slash "/", and then up to six characters of OFF text. Press the [Enter] key on the keyboard, to exit the field.
Alternatively, you can specify a variable name in the field, which will hold the ON/OFF text.

You can enter ON/OFF text in brackets in the Description field of a variables worksheet in ControlWave Designer.
The ON/OFF text entered there, however, only appears within ControlWave Designer; it is not downloaded to the RTU. It cannot be viewed in DataView or other data collection programs. You can view this text in the Variable Extension Wizard, however, it appears in green to indicate that it does not become part of the _VARDEFS.INI file and is not downloaded to the RTU. If you want to convert this text so it can be downloaded to the RTU, position your cursor in the units text field of the Variable Extension Wizard, and press the [Enter] key on the keyboard.
Position the cursor in the field.
The text now changes color from green to black, and can be downloaded as if it was entered directly in the Variable Extension Wizard.

410

Variable Extension Wizard

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Creating Descriptive Text for the Variable
To create descriptive text for a variable, click in the "Descriptor" field, and enter up to 64 characters of descriptive text, then press the [Enter] key on the keyboard, to exit the field.
Alternatively, you can specify a variable name in the field, which will hold the descriptive text.

You can enter descriptive text in the Description field of a variables worksheet in ControlWave Designer.
The descriptive text entered there, however, only appears within ControlWave Designer; it is not downloaded to the RTU. It cannot be viewed in DataView or other data collection programs. You can view this text in the Variable Extension Wizard, however, it appears in green to indicate that it does not become part of the _VARDEFS.INI file and is not downloaded to the RTU. If you want to convert this text so it can be downloaded to the RTU, you have two options:

Variable Extension Wizard

411

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Option 1: Identify the text for each individual variable:
If you only want the descriptive text for certain variables to be downloaded to the RTU you must position your cursor in the descriptor field of the Variable Extension Wizard, and press the [Enter] key.
Position the cursor in the field.

The text now changes color from green to black, and can be downloaded as if it was entered directly in the Variable Extension Wizard. Repeat this process for each variable you want to have descriptive text.
Option 2: Specify that you want descriptive text for ALL variables to be downloaded
If you want the descriptive text entered in variable worksheets for ALL variables to be downloaded to the RTU, click All > Store All Descriptors. Note: This method requires OpenBSI 5.9 or newer.
Saving the Initialization Files and Exiting the Wizard
To save the initialization files, click on File  Save. To exit the wizard, click on File  Exit.
Note: If you subsequently rename your ControlWave project, via a File  Save As command, you must then re-start the Variable Extension Wizard, and save the initialization files to update the project name within the initialization files; otherwise the initialization files will still have the old project name.
Format of Initialization Files
We recommend you generate these initialization files only using the Variable Extension Wizard. Advanced users may want to edit the initialization files manually, with an ASCII text editor. Exercise extreme care when doing this, because syntactical errors could result in problems in your ControlWave project.

412

Variable Extension Wizard

__LISTS.INI

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Do NOT leave spaces between lines of these files.
*LIST listnumber variable1 variable2
: variablen

where listnumber variable1-n
For example:

is the number used to identify this list. are the variables in the list.

__RBE.INI

*LIST 1 @GV._AI_FOR_NON_ALARMS @GV._ALARMS_BSAP_PORT1 @GV._ALARMS_BSAP_PORT1 @GV._ALARMS_BSAP_PORT10 @GV._ALARMS_BSAP_PORT11 @GV._ALARMS_BSAP_PORT11 @GV._T16_AVG_DUR

variable1 [deadband] variable2 [deadband]
: variablen [deadband]

where: variable1 ­ variablen
[deadband]

are the names of variables you want marked for RBE collection.
is an RBE deadband applied to analog variables. This does NOT apply for BOOL variables. The deadband can be entered as a constant value, or a variable name can be entered, in which case, the value of that variable will serve as the deadband.

Example: @GV.TANK_LEVEL @GV.TANK_LVL_DB @GV.PRESSURE_NOW 10

Variable Extension Wizard

413

ControlWave Designer Programmer's Handbook D301426X012 August 2020
__VAR_DEFS.INI
This file is created by the Variable Extension Wizard; however, it may be edited manually using a text editor.
[VERSION] ProjName=project_name Build=number Date=mm/dd/yy hh:mm:ss NumAlms=number_of_alarms

[SIG_n] Name=variable_name Alarm=variable_type Units=text Desc=description LogPri=logical_alarm_priority HiLimit=high_limit HiPri=high_priority HiHiLimit=high_high_limit HiHiPri=high_high_priority LoLimit=low_limit LoPri=low_priority LoLoLimit=low_low_limit LoLoPri=low_low_priority HiDB=high_deadband LoDB=low_deadband

project_name

the name of the ControlWave Designer project.

number
mm/dd/yy hh:mm:ss
number_of_alarms [Sig_n] variable_name variable_type

the version number of the build for this project (incremented automatically by the Variable Extension Wizard).
the date and time the project was built where mm/dd/yy refers to the 2 digit month, day, and year, respectively, and hh:mm:ss refers to the hour (0-23), minute, and seconds, respectively.
the number of alarms defined in the file
the number of the variable. A separate [Sign_n] section must be defined for each variable included in the file. the variable name, including any instance name
the type of the alarm variable. This can be any one of the following:

414

Variable Extension Wizard

text
description high_limit, high_high_limit, low_limit, low_low_limit
Variable Extension Wizard

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Analog

Analog alarm variable

Log_True

Logical alarm variable. Alarm is generated when its value becomes TRUE.

Log_False

Logical alarm variable. Alarm is generated when its value becomes FALSE.

Log_State

Logical alarm variable. Alarm is generated when its value changes state from TRUE to FALSE or FALSE to TRUE.

None

Regular non-alarm variable.

For analog variables this refers to the engineering units text, e.g. MSCFH, GPM, MGD, DEGC, DEGF, etc. Units text can be up to six (6) characters. The 6 characters of units text may alternatively be held in a STRING variable, in which case the string variable name should be specified here, preceded by a tilde `~' character.

For logical (BOOL) variables, this refers to the ON / OFF text of the variable. Up to six characters of ON text followed by a slash `/' and then up to six characters of OFF text is supported. The ON/OFF text may alternatively be held in a STRING variable, in which case the string variable name should be specified here, preceded by a tilde `~' character.

Descriptive text for the variable, up to 64 characters. Alternatively, the descriptive text may be stored in a separate STRING variable, in which case the string variable name should be specified here, preceded by a tilde `~' character.

For Analog alarm variables ONLY. These limits specify alarm limits, for this analog alarm variable. When the variable's value exceeds the high_limit or high_high_limit, or falls below the low_limit, or low_low_limit, alarm messages are generated. When the variable's value comes back within limits, a return-to-normal message is generated. These limits may be entered as constant values, or they may be stored in variables, in which case the variable name would be entered here, preceded by a

415

ControlWave Designer Programmer's Handbook D301426X012 August 2020
tilde `~'. NOTE: Deadbands may be set up to reduce fluctuations into and out-of the alarm state.

low_deadband, high_deadband

In the case of a high, or high-high alarm, the alarm condition does not clear (i.e. generate a `return to normal' alarm message) until the value of the variable goes below the alarm limit, minus the value of the high_deadband. In the case of a low, or low-low alarm, the alarm condition does not clear until the value of the variable rises above the alarm limit, plus the value of the low_deadband. These deadbands may be entered as constant values, or they may be stored in variables, in which case the variable name would be entered here, preceded by a tilde `~'.

logical_alarm_priority high_priority, high_high_priority, low_priority, low_low_priority

Alarm priorities designate the importance of the alarm. Logical (BOOL) variables have a single alarm priority; analog alarm variables can have up to four alarm priorities ­ one for each alarm limit. Alarm priorities from least important to most important are:

Example:

Event (Evt) Operator Guide (OpG) Non Critical (NCrit) Critical (Crit)

[Version] ProjName=bktest1 Build=7 Date=11:25:16 01-21-08 NumAlms=3 [SIG_5] Name=@GV.PRESSUR3_CURRENT AI=1 [SIG_1] Name=@GV.OUTPUT_1 Alarm=Log_True LogPri=0 Units=START/STOP [SIG_2] Name=@GV.PRESSUR1_CURRENT Desc=CURRENT PRESSURE READING Units=PSI [SIG_3] Name=@GV.PRESSUR3_CURRENT Alarm=Analog HiPri=2 HiLimit=@GV.PRESSURE_HI_LIM

416

Variable Extension Wizard

ControlWave Designer Programmer's Handbook D301426X012 August 2020
HiHiPri=3 HiHiLimit=@GV.PRESSURE_HIHI_LIM LoPri=1 LoLimit=@GV.PRESSURE_LO_LIM LoLoPri=0 LoLoLimit=@GV.PRESSURE_LOLO_LIM LoDB=@GV.PRESSURE_LO_DB AI=1 MI=1
Troubleshooting Tips
I can't see function blocks for the alarms, audit, or lists I created when I open my project?
You won't. The Variable Extension Wizard is an alternate method for creating these data structures, so they won't appear as function blocks in your project ­ they are configured via the INI files only.
The wizard is hung up when I type in certain fields. I can't go to another field. What should I do?
The Wizard won't let you move to another field unless you first press the [Enter] key. Press [Enter] and you should be able to proceed. The [Esc] also allows you to exit the field.
I ran the Variable Extension Wizard to Create My Alarms, but they don't appear in my Project?
Did you rename the project? If so, you must re-start the Variable Extension wizard in the new project, and save the initialization files again. Otherwise, they will still hold the old project name, before you renamed it.

Variable Extension Wizard

417

ControlWave Designer Programmer's Handbook D301426X012 August 2020

418

Variable Extension Wizard

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Variables and Data Types
Variables are structures that hold a single numerical, Boolean, or string value, that can typically be changed or updated either by user intervention, or by logic in your ControlWave project. Variables serve the same purpose as `signals' used in the Network 3000 series product line.
Variables can be any of several different data types. For example, a numerical variable could be of data type REAL, or INT (integer).

Global Variables Vs. Local Variables

Variables fall into one of two categories ­ local and global. They are declared as either local or global when you create them in a particular program. Generally, unless you have a specific reason for defining a variable as global, for example, it is an I/O variable, or you know it has to be used in more than one of the POUs listed in the `Logical POUs' branch of the project tree, you should define it as local.

Global variables:
  

may be accessed and used in any or all of the POUs in your project must be declared as VAR_GLOBAL in the global variables declaration worksheet must be declared as VAR_EXTERNAL in each POU in which they are used

Data Type
Variable name

Usage shows whether this variable is used locally or globally

Optional description (used as a comment in the program)

Internal address

used to store and

reference the

Initial value

variable

of the

variable

Check RETAIN if you want to keep the variable in retain memory.

Check PDD if you want to collect this variable via OpenBSI utilities such as DataView.

Check OPC if you want to export this variable for use in an HMI database such as in an OpenEnterprise Server.

The Global Variables worksheet is shown, above. All variables are defined as `VAR_GLOBAL' because they can be used in any logical POU of the project.

Variables and Data Types

419

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Local variables:

 are only used in a single POU of your project

 they are unknown to all other POUs in your project

Variable name

 are declared in the worksheet of the POU in which they are used

Usage shows whether this variable is used locally or globally

Data Type

Optional description (used as a comment in the program)

Initial value of the variable

Check RETAIN if you want to keep the variable in retain memory.

Check PDD if you want to collect this variable via OpenBSI utilities such as DataView.

Check OPC if you want to export this variable for use in an HMI database such as in an OpenEnterprise Server.

The Local Variables Worksheet for a particular POU in the project tree is shown, above. Notice that the F101_INPUT variable is defined as `VAR_EXTERNAL' and several fields are NOT available. This is because F101_INPUT is a global variable which happens to be used in this POU, but is defined in the Global Variables Worksheet (see previous page).

Variable Addressing

Variables addresses identify where a variable is located within the ControlWave project. In general, users do NOT need to be concerned with variable addresses, as they are assigned automatically by the I/O Configurator, or when the variable is created.
Variable addresses follow the format:
AT %locationsize. Address

Where: location is one of the following:

I

indicates that this is a physical input (input I/O variable)

Q indicates that this is a physical output (output I/O variable)

420

Variables and Data Types

ControlWave Designer Programmer's Handbook D301426X012 August 2020
M indicates that this is a variable in memory (non-I/O variable)

size

is one of the following

X

single bit size (only used with data type of BOOL)

nothing if left blank, indicates single bit size

B

byte size (8 bits)

W Word size (16 bits)

D Double word size (32 bits)

Address

is the actual address in memory

An example variable address is shown below:

AT %MW 1.1018

System Variables
One special category of variables is system variables. System variables are created automatically by the system and are used for special `housekeeping' purposes within the ControlWave system. See the System Variables section in this manual for more information.

Data Types

Data Type
BOOL SINT INT DINT USINT UINT UDINT REAL

IEC 61131-3 supports three different categories of data types.

Elementary data types are used as building blocks of more complex data types. The elementary data types are shown in the table, below:

Description
Boolean Short Integer Integer Double integer Unsigned short integer Unsigned integer Unsigned double integer Real numbers

Size (in bits)
1 8 16 32 8 16 32 32

Valid Range
1 or 0 (TRUE or FALSE) -127 ... 127 -32768 ... 0 ... 32767 -2,147,483,648 up to 2,147,483,647 ? 0 up to 255 0 up to 65535 0 up to 4,294,967,295 + 1.18 x 1038 up to + 3.40 x 1038

TIME

Time (duration)

32

BYTE

Bit string of length 8

8

STRING

Sequence of characters

80

WORD

Bit string of length 16

16

DWORD

Bit string of length 32

32

+ #4,294,976,295 milliseconds up to + # 4,294,976,295 seconds 0x00...0xFF
0x0000 ... 0xFFFF 0x00000000 ... 0xFFFFFFFF

Variables and Data Types

421

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Generic Data Types are data types made up of elementary data types. For example, ANY_BIT, or ANY_INT.
User Defined Data Types are data types created by the user, such as ARRAYs.
Notes about STRING variables
The standard IEC62591 STRING data type allows up to 80 characters. You can also create string variables using user-defined STRING data types of varying lengths. Be aware that in either case, there are restrictions on displaying strings in programs outside of ControlWave Designer.
 ControlWave RTUs do not report strings that exceed 127 characters and behave as if the variable does not exist when data requests come in for that variable from software.
 OpenEnterprise SCADA software, OpenBSI tools such as DataView, Web_BSI web pages communicating over a serial connection, and any other program using the RDB interface to retrieve data can only display the first 64 characters of a ControlWave string variable.
 Web_BSI web pages communicating over IP can display up to 127 characters of a string variable's value.

422

Variables and Data Types

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Variable Naming Conventions
 Variable names consist of a combination of letters (A-Z, a-z), numbers (0-9) and the underscore character '_'.
 The first character of a variable name cannot be a number.
 Variables are not case sensitive, i.e. MY_VARIABLE, my_variable, and mY_vAriaBLe are all considered to be the same variable name.
 Although you won't always see it, in addition to the variable name you enter, the system automatically precedes every variable by one or more instance names, separated by periods, depending upon where the variable was defined ('@GV.' for global variables, task and function block instance names for local variables) e.g. @GV.F101_INPUT or Flow1.V003
 If you have OpenBSI Utilities Version 4.0 or earlier, we recommend your variable names be limited to 20 characters or less (including the instance name or '@GV.' described above). This is recommended because prior to OpenBSI Version 4.1, tools such as DataView only recognized the first 20 characters; and so, that is the only portion of the variable name those tools will display. Newer versions recognize up to 64 characters.
 If you decide to use longer variable names (up to 128 characters are allowed), only the first 30 characters will be recognized within ControlWave Designer. If you have variables in your ControlWave POU worksheet with more than 30 characters, however, make sure there are no two variables in which the first 30 characters are the same, or else those two variables will be treated as the same variable.
For example, two variables named:
COMPRESSOR_STATION_FOUR_STATUS_ON
and
COMPRESSOR_STATION_FOUR_STATUS_OFF
should not be included in the same worksheet because the first 30 characters 'COMPRESSOR_STATION_FOUR_STATUS' are the same, and therefore the difference between the '_ON' and '_OFF' would not be recognized by the compiler.

Variable Naming Conventions

423

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Here are some legal variable names:
COMPRESSOR_4_STATUS
_PUMP_START
tank_level_hi_alarm

Here are some illegal variable names, and the reason they are illegal:

1_STATION4_MAINSWITCH (*illegal because it starts with a number*)

PUMP#4_START

(*illegal because the '#' character is not allowed*)

424

Variable Naming Conventions

ControlWave Designer Programmer's Handbook D301426X012
September 2020
Versions and Compatibility

To use ControlWave Designer with a particular ControlWave firmware revision, you must ensure that the compatible resource is loaded in ControlWave Designer. The following table lists each ControlWave hardware platform and the compatible resource required for each given firmware revision.

Controller Type

Compatible Resource

Firmware Required

ControlWave Process Automation Controller

IPC_30

Earlier than 03.10

Firmware Prefix: CWP

IPC_33

03.10 or newer

IPC_40

04.40 or newer

ControlWave Low Power (LP) Controller

IPC_30

Earlier than 03.10

Firmware Prefix: LPS

IPC_33

03.10 or newer

IPC_40

04.40 or newer

ControlWave Redundant Controller

IPC_30

Earlier than 03.10

Firmware Prefix: CWP

IPC_33

03.10 or newer

IPC_40

04.40 or newer

ControlWave Micro Controller

ARM_L_33

4.00 or newer

Firmware Prefix: CWM

ARM_L_40

4.40 or newer

ControlWave Electronic Flow Meter (EFM)

ARM_L_33

4.32 or newer

Firmware Prefix: CWE

ARM_L_40

4.40 or newer

ControlWave Gas Flow Computer (GFC)

ARM_L_33

4.40 or newer

Firmware Prefix: CWI

ARM_L_40

4.40 or newer

ControlWave Express GFC/RTU/PAC:

ARM_L_40

4.60 or newer

14 Mhz CPU

Firmware Prefix: E1S

ControlWave Express GFC/RTU/PAC:

ARM_L_40

4.60 or newer

33 Mhz CPU

Firmware Prefix: E3S

ControlWave Explosion Proof GFC (XFC)

ARM_L_40

4.41 or newer

Firmware Prefix: CWX

ControlWave_10, _30, _35

ARM_L_40

4.50 or newer (10/30)

Firmware Prefix: C_3

4.70 or newer (35)

ControlWave_31

ARM_L_40

4.70 or newer

Firmware Prefix: C_1

Additionally, the ControlWave I/O Expansion Rack has a firmware prefix of CWR and the

ControlWave Micro I/O Expansion Rack has a firmware prefix of CMR and the HART

Interface Board (HIB) has a firmware prefix of HBA.

Versions and Compatibility

425

ControlWave Designer Programmer's Handbook D301426X012 September 2020

ControlWave Firmware Release Summary
For full details, consult official release notes.

Firmware Release
CWP 01.00.00 Released on April 20, 2001

Resource File needed in ControlWave Designer and Designer Version
IPC_30

ControlWave Designer Version
3.0

OpenBSI Major Features Version

4.0 or newer

Communications: This version supported BSAP slave messages only. No BSAP Master Port capability is provided.
This initial release incorporated the following functions and function blocks in the BBISFB Library:

 AGA3I  AGA8GROS  ALARM_ANALOG  ALARM_LOGICAL_OFF  ALARM_LOGICAL_ON  ALARM_STATE  ANOUT  ARCHIVE  AUDIT  AUTOADJUST  AVERAGER  COMMAND  COMPARATOR

 CUSTOM

 LIST030

 DACCUMULATOR  LIST050

 DEMUX

 LIST100

 DIFFERENTIATOR  MUX

 ENCODE

 PDO

 FUNCTION

 PID3TERM

 HILOLIMITER

 REG_ARRAY

 HILOSELECT

 R_INT

 HSCOUNT

 R_RND

 INTEGRATOR

 SEQUENCER

 LEAD_LAG

 STEPPER

 LIST010

 TOT_TRND

 LIST020

 VLIMIT

CWP 02.00.00 IPC_30

3.0

LPS 02.00.00

Released on November 20, 2001

CWP 02.01.00 IPC_30

3.0

LPS 02.01.00

4.02

New features include BSAP Master support, IP and BSAP client-server,

or newer generic serial protocol, and the following new function blocks:

4.02 or newer

 AGA3

 AGA8DETAIL

 GENERIC_SERIAL  AGA3TERM

 CLIENT

 ISO5167

 AGA5

 CRC

 AGA7

 FPV

 REDUN_SWITCH (currently unused)

 SERVER

Maintenance -- No new features

Released on

December 18,

2001

CWP 02.10.00 IPC_30

3.0

LPS 02.10.00

4.1 or newer

Maintenance -- No new features

Released on April

1, 2002

CWP 02.11.00 IPC_30

3.0

LPS 02.11.00

4.2 or newer

Maintenance -- No New Features

Released on May 28, 2002

426

Versions and Compatibility

Firmware Release
CWP 02.20.00 LPS 02.20.00

Resource File needed in ControlWave Designer and Designer Version IPC_30

ControlWave Designer Version
3.0

ControlWave Designer Programmer's Handbook D301426X012
September 2020
OpenBSI Major Features Version

4.2 or newer

New function blocks for file management, as well as the VIRT_PORT function block for serial connections to a terminal server:

Released on July 11, 2002

 FILE_CLOSE  FILE_DELETE  FILE_DIR  FILE_OPEN

 FILE_READ  FILE_READ_STR  FILE_WRITE  FILE_WRITE_STR

 VIRT_PORT

In addition, this version supported the I/O Expansion Rack interface.

CWP 03.00.00 IPC_30

3.0

LPS 03.00.00

CWR 03.00.00

Released on September 30, 2002

4.2 or newer

First release which supports Redundancy. (CWP only) New function blocks added:

 LIST_ELEM_NAME  SCHEDULER  VAR_FETCH

 VAR_SEARCH  VMUX,

I/O Expansion Rack released (CWR 03.00.00) -- Host must have CWP 03.00.00 or newer. I/O Expansion Rack not supported with ControlWave LP, or other platforms. Only for ControlWave Process Automation Controller.

CWP 03.10.00 IPC_33

3.3

LPS 03.10.00

CWR 03.10.00

Released on May 15, 2003

5.0 or newer

New System Variables including:  _pn_IMM_DIS.  _USE_ACCOL_NAME
Function Block Library now called `ACCOL3'. Numerous enhancements and corrections.

CWP 03.11.00 IPC_33

3.3

LPS 03.11.00

CWR 03.11.00

Released on June 5, 2003 CWP 04.00.00 LPS04.00.00 CWM04.00.00 CWR04.00.00
Released on September 5, 2003

IPC_33 for CWP, 3.3 LPS, and CWR
ARM_L_33 for CWM

5.0 or newer

Only change from previous version is to support ControlWave FLASH upgrade. Previous 4MB of FLASH was available. Now 8MB is supported. (ControlWave only.) This change also required boot firmware to be upgraded CWB04.

5.1 or newer

First release of ControlWave Micro (CWM firmware).

New function blocks added:

 DBLOAD

 DIAL_CTRL

New system variables added:
 _ALARMS_PRESENT  _AUD_ALM_PRESENT  _AUD_EVT_PRESENT  _BSAP_FLAG_SENSE  _NHP_IGNORE_NRT  _NHP_IGNORE_TS

 _Px_DIAL_ACTIVE  _Px_DIAL_PORT  _TOTAL_ALARMS  _TOTAL_AUD_ALARMS  _TOTAL_AUD_EVENTS  _USE_ACCOL_NAMES

CWP 04.01.00 LPS04.01.00 CWM04.01.00

IPC_33 for CWP, 3.3 LPS, and CWR

5.1 or newer

Maintenance -- No New Features

Versions and Compatibility

427

ControlWave Designer Programmer's Handbook D301426X012 September 2020

Firmware Release
CWR04.01.00
Released on September 10, 2003 CWP 04.10.00 LPS04.10.00 CWM04.10.00 CWR04.10.00
Released on December 17, 2003

Resource File needed in ControlWave Designer and Designer Version ARM_L_33 for CWM

ControlWave Designer Version

OpenBSI Major Features Version

IPC_33 for CWP, 3.3 LPS, and CWR
ARM_L_33 for CWM

5.2 or newer

CYBOCON function block library added.
AGA3DENS function block added.
New system variables:  _AI_FOR_NON_ALMS  _ALARMS_BSAP_PORTx  _ALARMS_IBP_DESTx

CWP 04.20.00 LPS04.20.00 CWM04.20.00 CWR04.20.00 CWE04.20.00

IPC_33 for CWP, 3.3 LPS, and CWR
ARM_L_33 for CWM and CWE

5.3 or newer

First release for ControlWave EFM (CWE). Numerous enhancements, plus:

New function blocks:

 DISPLAY

 PORTCONTROL

Released on March 19, 2004

CWP 04.30.00 LPS04.30.00 CWM04.30.00 CWR04.30.00, CWE04.30.00

IPC_33 for CWP, 3.3 LPS, and CWR
ARM_L_33 for CWM and CWE

5.3 or newer

New system variables:

 _CPU_BUSY_P1

_Px_CYCLE_INT

 _EBSAP_GROUP

 _Px_CYCLE_TIMEO

 _INH_SYS_EVENTS

 _Px_DCD_STATE

 _LOCAL_ADDRESS

 _Px_DTR_STATE

 _NHP_ADDITIONAL_MASK  _Px_LOCAL_PORT

 _Px_AUTO_DTR

Larger historical archive files supported.

Released on June 10, 2004 CWP 04.31.00 LPS04.31.00 CWM04.31.00 CWR04.31.00 CWE 04.31.00

IPC_33 for CWP, 3.3 LPS, and CWR
ARM_L_33 for CWM and CWE

5.3 or newer

Maintenance release

Released on August 19, 2004 CWP 04.32.00 LPS04.32.00 CWM04.32.00 CWR04.32.00 CWE04.32.00

IPC_33 for CWP, 3.3 LPS, and CWR
ARM_L_33 for CWM and CWE

5.3 or newer

Maintenance -- No new features

Released on

428

Versions and Compatibility

Firmware Release
October 8, 2004 CWP 04.40.00 LPS04.40.00 CWM04.40.00 CWR04.40.00 CWE 04.40.00 CWI 04.40.00

Resource File needed in ControlWave Designer and Designer Version

ControlWave Designer Version

IPC_40 for CWP, 4.0 LPS, and CWR

ARM_L_40 for CWM, CWE, and CWI

Released on February 7, 2005

ControlWave Designer Programmer's Handbook D301426X012
September 2020
OpenBSI Major Features Version

5.4 or newer

First release for the ControlWave Gas Flow Computer (CWI).
First release to support Report By Exception (RBE). Also, VSAT Slave support added, and NIST23 calculations are supported via a new library.
Alarms can now be reported via BTCP to OpenBSI.
EN/ENO IEC 61131 language support for CW and CW LP.

Other protocols added include: CIP, and DNP.

New function/function blocks:  RBE  PORT_ATTRIB
 STORAGE

 Trigonometric functions (ARCSIN, ARCCOS, ARCTAN) added for CW and LP platforms.

Modifications:  ARCHIVE function block: Mode 8 added.  Custom - Modbus Enron mode for date/time format added.

CWP 04.41.00 LPS04.41.00 CWM04.41.00 CWR04.41.00 CWE 04.41.00 CWI 04.41.00 CWX 04.41.00

IPC_40 for CWP, 4.0 LPS, and CWR
ARM_L_40 for CWM, CWE, CWI, and CWX

5.4 Service Pack 1 and Newer

New system variables:

 _CW_LOAD_STR

_Px_RBE_REPEAT_TIMEOUT

 _HEAP_BLK_FREE

 _Px_RBE_REXMIT_COUNT

 _HEAP_CUR_FREE

 _Px_RBE_RM_COUNT

 _HEAP_RBLK_FREE

 _Px_RBE_RM_SINCE_ACK

 _HEAP_START_FREE

 _Px_RBE_STOP_RPT_MSG

 _Px_RBE_ACK_LIMIT

_Px_RBE_USE_ACCOL_NAME

 _Px_RBE_CLIENT_ID

 _Px_VSAT_MAX_RESP

 _Px_RBE_ERE_COUNT

 _Px_VSAT_MIN_RESP

 _Px_RBE_ERE_FORMAT

 _Px_VSAT_UP_ACK_WAIT

 _Px_RBE_GO_ACT_ON_START

 _S11_IO_BOARD_ID_STRING

 _Px_RBE_PENDING

 _S12_IO_BOARD_ID_STRING

 _Px_RBE_POOL_OVRFLW  _S13_IO_BOARD_ID_STRING

 _Px_RBE_POOL_SIZE

 _S14_IO_BOARD_ID_STRING

Release to support XFC (ControlWave Explosion-Proof Gas Flow

Computer) CWX04.41.

Firmware for other platforms released for consistency purposes.

Enhancements include:

 AINet Slave Protocol

 Archive Access as Data Arrays

 New system variable: _ARCH_ACCESS_TYPE

Released on May 12, 2005 CWP 04.50.00

IPC_40 for CWP, 4.0

5.4

New functions:

Versions and Compatibility

429

ControlWave Designer Programmer's Handbook D301426X012 September 2020

Firmware Release
LPS04.50.00 CWM04.50.00 CWR04.50.00 CWE 04.50.00 CWI 04.50.00 CWX 04.50.00, C_304.50.00
Released on November 15, 2005

Resource File needed in ControlWave Designer and Designer Version LPS, and CWR

ControlWave Designer Version

ARM_L_40 for CWM, C_3, CWE, CWI, CWX

OpenBSI Major Features Version

Service Pack 2 and Newer

 ARRAY_ANA_GET  ARRAY_ANA_SET  ARRAY_LOG_GET  ARRAY_LOG_SET  V_ATTRIB_GET  V_ATTRIB_SET
Support for CW_10/CW_30 platform

New system variables:  _OCTIME_ERROR  _TS_DELTA_ACCURACY  _Pn_TOP_LEVEL_NODES  _Pn_DISABLE_ARRAY

 _APPLICATION_LOCKED  _Pn_MAX_SLAVES  _Pn_DEAD_ARRAY  _Pn_TOTAL_NODES

CWP 04.60.00 IPC_40 for CWP, 4.5

LPS04.60.00

LPS, and CWR

CWM04.60.00

CWR04.60.00

ARM_L_40 for

CWE 04.60.00 CWM, CWE,

CWI 04.60.00

CWI, CWX, C_3,

CWX 04.60.00 E1S, and E3S.

C_304.60.00

E1S04.60.00

E3S04.60.00

Released on May

25, 2006

CWP 04.62.00 IPC_40 for CWP, 4.5

LPS04.62.00

LPS, and CWR

CWM04.62.00

CWR04.62.00

ARM_L_40 for

CWE 04.62.00 CWM, C_3,

CWI 04.62.00

CWE, CWI,

CWX 04.62.00 CWX, E1S, and

C_304.62.00

E3S.

E1S04.62.00

E3S04.62.00

Released on

October 12, 2006

5.5 Service Pack 1

Online editing of archive configuration and lists via TechView. First release for ControlWave Express product line.

CWM and ARM-based support POU size greater than 64K.

New system variables:
 _ALARM_FORMAT  _Pn_RBE_STATE  _iPn_RBE_STATE  _Pn_PAD_FRONT  _Pn_PAD_BACK

5.5 Service Pack 2

Audit Trail record count added to Modbus Slave Enron Mode

CWP 04.63.00 LPS04.63.00 CWM04.63.00 CWR04.63.00 CWE 04.63.00 CWI 04.63.00 CWX 04.63.00 C_304.63.00 E1S04.63.00 E3S04.63.00 Released on December 22, 2006

IPC_40 for CWP, 4.5 LPS, and CWR
ARM_L_40 for CWM, C_3, CWE, CWI, CWX, E1S, and E3S.

5.6

Maintenance release

430

Versions and Compatibility

Firmware Release
CWP 04.70.00 LPS04.70.00 CWM04.70.00 CWR04.70.00 CWE 04.70.00 CWI 04.70.00 CWX04.70.00 CMR04.70.00 C_104.70.00 C_304.70.00 E1S04.70.00 E3S04.70.00

Resource File ControlWave

needed in

Designer

ControlWave Version

Designer and

Designer

Version

IPC_40 for CWP, 4.5

LPS, and CWR

ARM_L_40 for all others

Released January 17, 2007

CWP 04.71.00 LPS04.71.00 CWM04.71.00 CWR04.71.00 CWE 04.71.00 CWI 04.71.00 CWX 04.71.00 C_304.71.00 C_104.71.00 CMR04.71.00 E1S04.71.00 E3S04.71.00

IPC_40 for CWP, 4.5 LPS, and CWR
ARM_L_40 for all others

ControlWave Designer Programmer's Handbook D301426X012
September 2020
OpenBSI Major Features Version

5.6

New platforms:

ControlWave_35 (C_3)

ControlWave_31 (C_1)

ControlWave Micro I/O Expansion Rack (CMR)

New function blocks:

 BTI  TCHECK  XMTR

New I/O boards for expansion racks.

Alarm System: When upgrading the firmware from 04.32 or earlier

versions, collect all alarms from the running units prior to upgrading to

this release as the new firmware performs a complete re-initialization

of the alarm system.

5.6

Maintenance Release -- No new features

Released March

14, 2007

CWP 04.72.00 IPC_40 for CWP, 4.5

LPS04.72.00

LPS, and CWR

CWM04.72.00

CWR04.72.00

ARM_L_40 for

CWE 04.72.00 all others

CWI 04.72.00

CWX04.72.00

C_304.72.00

C_104.72.00

CMR04.72.00

E1S04.72.00

E3S04.72.00

Released June 28,

2007

CWP 04.80.00 IPC_40 for CWP, 4.7

LPS04.80.00

LPS, and CWR

CWM04.80.00

CWR04.80.00

ARM_L_40 for

CWE04.80.00

all others

5.6 Service Pack 1

Primarily a maintenance release -- No new features, however, DNP3 performance was increased.

5.7

New function blocks:

 HWSTI

 TP-27 liquid FB library (LIQTAB23E, LIQTAB24E, LIQTAB53E,

LIQTAB54E, LIQTAB59E, LIQTAB60E)

Versions and Compatibility

431

ControlWave Designer Programmer's Handbook D301426X012 September 2020

Firmware Release
CWI04.80.00 CWX04.80.00 C_304.80.00 C_104.80.00 CMR04.80.00 E1S04.80.00 E3S04.80.00

Resource File needed in ControlWave Designer and Designer Version

ControlWave Designer Version

OpenBSI Major Features Version
Support for HEX Repeater protocol Support for ON/OFF and units text in DISPLAY function block Support for Audit / Archive clear function in RTU (Clear History function in OpenBSI) Support for configurable timeout in Immediate Response Mode. Support for variable buffer length in Generic Serial Port Support for collecting Archive Files as if they were Data Arrays

Released September 27, 2007

CWP 04.90.00 LPS04.90.00 CWM04.90.00 CWR04.90.00 CWE 04.90.00 CWI 04.90.00 CWX04.90.00 C_304.90.00 C_104.90.00 CMR04.90.00 E1S04.90.00 E3S04.90.00 C5R04.90.00

IPC_40 for CWP, 4.7 LPS, and CWR
ARM_L_40 for all others

Released May 8, 2008

5.7 Service Pack 1

New system variables for load validation: _LOAD_MEM_PRESENT _LOAD_SRC_PRESENT _LOAD_BOOT_PRESENT _LOAD_MEM_CRC _LOAD_BOOT_CRC _LOAD_SRC_CRC Support for new platform: ELAN processor for ControlWave I/O Expansion Rack (C5R). Support for simplified alarm configuration using ALARM FB with the Variable Extension Wizard in ControlWave Designer. Standard application licensing. Support in RDB for program instance names in ACCOL format variables other than @GV. Support for RTU to RTU transfer of archive files. Support for Enron Modbus reading of archive files in wraparound mode to simulate the data arrays used as archive data storage by some vintage systems. Support for new I/O board in ControlWave XFC.

New system variable: _JULIAN_TIME

New Function Blocks:  ALARM

CWP 04.91.00 LPS04.91.00 CWM04.91.00 CWR04.91.00 CWE 04.91.00 CWI 04.91.00 CWX04.91.00 C_304.91.00 C_104.91.00 CMR04.91.00 E1S04.91.00 E3S04.91.00 C5R04.91.00

IPC_40 for CWP, 4.7 LPS, and CWR
ARM_L_40 for all others

Released June 13, 2008

5.7 Service Pack 1

Maintenance Release -- No new features

432

Versions and Compatibility

Firmware Release

Resource File needed in ControlWave Designer and Designer Version

ControlWave Designer Version

ControlWave Designer Programmer's Handbook D301426X012
September 2020
OpenBSI Major Features Version

CWP 04.92.00 LPS04.92.00 CWM04.92.00 CWR04.92.00 CWE 04.92.00 CWI 04.92.00 CWX04.92.00 C_304.92.00 C_104.92.00 CMR04.92.00 E1S04.92.00 E3S04.92.00 C5R04.92.00

IPC_40 for CWP, 4.7 LPS, and CWR
ARM_L_40 for all others

5.7 Service Pack 1

Maintenance Release -- No new features

Released June 27, 2008

CWP 05.00.00 LPS05.00.00 CWM05.00.00 CWR05.00.00 CWE 05.00.00 CWI 05.00.00 CWX05.00.00 C_305.00.00 C_105.00.00 CMR05.00.00 E1S05.00.00 E3S05.00.00 C5R05.00.00

IPC_40 for CWP, 4.7 LPS, and CWR
ARM_L_40 for all others

5.7 Service Pack 2

Support for ControlWave WXFC Support for Hart Interface Board (HIB) Support for redundant AO/DO with readback New function block: HART

Released April 17, 2009

CWP 05.10.00 LPS05.10.00 CWM05.10.00 CWR05.10.00 CWE 05.10.00 CWI 05.10.00 CWX05.10.00 C_305.10.00 C_105.10.00 CMR05.10.00 E1S05.10.00 E3S05.10.00 C5R05.10.00

IPC_40 for CWP, 4.7 LPS, and CWR
ARM_L_40 for all others

5.7 Service Pack 2

New function blocks:
 FIELDBUS  LIQTAB59D (In liquids library)  LIQTAB60D (In liquids library)

New library: FB_RETAIN

Upgrades to new standards for AGA8Gros and ISO5167

Archive files now support ASCII data.

Various minor enhancements.

Released

Versions and Compatibility

433

ControlWave Designer Programmer's Handbook D301426X012 September 2020

Firmware Release
September 4, 2009

Resource File needed in ControlWave Designer and Designer Version

ControlWave Designer Version

OpenBSI Major Features Version

CWP 05.11.00 LPS05.11.00 CWM05.11.00 CWR05.11.00 CWE 05.11.00 CWI 05.11.00 CWX05.11.00 C_305.11.00 C_105.11.00 CMR05.11.00 E1S05.11.00 E3S05.11.00 C5R05.11.00

IPC_40 for CWP, 4.7 LPS, and CWR
ARM_L_40 for all others

5.7 Service Pack 2

New function block: BASE_DENSITY (in Liquids library) New system variable: _INH_EXTERNAL_EVENTS

Released December 3, 2009

CWP 05.12.00 LPS05.12.00 CWM05.12.00 CWR05.12.00 CWE 05.12.00 CWI 05.12.00 CWX05.12.00 C_305.12.00 C_105.12.00 CMR05.12.00 E1S05.12.00 E3S05.12.00 C5R05.12.00

IPC_40 for CWP, 4.7 LPS, and CWR
ARM_L_40 for all others

5.7 Service Pack 2

Maintenance Release -- No new features

Released December 18, 2009

CWP 05.20.00 LPS05.20.00 CWM05.20.00 CWR05.20.00 CWE 05.20.00 CWI 05.20.00 CWX05.20.00 C_305.20.00 C_105.20.00 CMR05.20.00 E1S05.20.00

IPC_40 for CWP, 5.0 LPS, and CWR
ARM_L_40 for all others

OpenBSI AUDIT FB enhanced to log user sign-on and sign-offs, and log out due

5.8

to sign-off.

ControlWave Micro now support full duplex comm. at 100MB FLASH storage area for configuration parameters increased from 64K to 128K.

Enhancement to allow detection of I/O board failures.

Number of ControlWave usernames increased from 32 to 240.

434

Versions and Compatibility

Firmware Release
E3S05.20.00 C5R05.20.00

Resource File needed in ControlWave Designer and Designer Version

Released April 9, 2010

ControlWave Designer Version

ControlWave Designer Programmer's Handbook D301426X012
September 2020
OpenBSI Major Features Version
New function blocks:
 USER_ACTIVE  USER_DEFINED
New system variables: _SEC_SIGNIIN_AUD_ENA _SEC_SIGIN_AUD_FTP_ENA _SEC_SIGIN_FAILURES _SEC_SIGNOFF_TMO

CWP 05.21.00 CWM05.21.00 CWE 05.21.00 CEW05.21.00 CWX05.21.00 C_305.21.00 C_105.21.00 CMR05.21.00 E1S05.21.00 E3S05.21.00 C5R05.21.00

IPC_40 for CWP, 5.0
ARM_L_40 for all others

OpenBSI 5.8

Enhancements to DNP protocol to support secure authentication. Misc. enhancements to Enron Modbus protocol. New boot firmware to support additional memory:
CWB08 for ControlWave PAC (CWP) and ControlWave I/O Expansion Rack (CWR) to support 32MB FLASH, and 64MB SDRAM.

CAB0521 for ControlWave Micro (CWM) and ControlWave Micro I/O Expansion Rack (CMR) to support 16MB FLASH and 64MB SDRAM.

CBE0521 for ControlWave EFM (CWE) to support 16MB FLASH and 64MB SDRAM. NOTE: This is for the new EFM modules; earlier versions had no SDRAM.

Released July 22, 2010

Support added for read-only Modbus slave.

CWP 05.30.00 CWM05.30.00 CWE 05.30.00 CEW05.30.00 CWX05.30.00 C_305.30.00 C_105.30.00 CMR05.30.00 E1S05.30.00 E3S05.30.00 C5R05.30.00

IPC_40 for CWP 5.0
ARM_L_40 for all others

OpenBSI Support added for RS-485 serial communication to CW and CW Micro

5.8

I/O expansion racks. Including system variables:

_Pn_RESET_STATISTICS _Pn_STATISTICS_ARRAY

Open Modbus Master / Slave custom modes now support an alternate TCP port.

DNP protocol updated to level 3 compliance.

Released September 9, 2010

CWP 05.40.00 CWM05.40.00 CWE 05.40.00 CEW05.40.00 CWX05.40.00 C_305.40.00

IPC_40 for CWP 5.0
ARM_L_40 for all others

OpenBSI 5.8 Service Pack 2

Note: New 33MHz CPU board for CW Express with new boot flash. New function block:  AUDIT_SELECTED

Versions and Compatibility

435

ControlWave Designer Programmer's Handbook D301426X012 September 2020

Firmware Release
C_105.40.00 CMR05.40.00 E1S05.40.00 E3S05.40.00 C5R05.40.00

Resource File needed in ControlWave Designer and Designer Version

ControlWave Designer Version

OpenBSI Major Features Version
Enhancements to XMTR function block to allow calibration of 3508 and 3808 transmitters via the HART interface board and the BTI interface board.

Released February 4, 2011

CWP 05.43.00 CWM05.43.00 CWE 05.43.00 CEW05.43.00 CWX05.43.00 C_305.43.00 C_105.43.00 CMR05.43.00 E1S05.43.00 E3S05.43.00 C5R05.43.00

IPC_40 for CWP 5.0
ARM_L_40 for all others

Released March 22, 2012

OpenBSI 5.8 Service Pack 2

Updates to KW ProCOnOS 1131 operating system.
Enhancements:
COMMAND function block enhanced to allow double-precision floating point value for runtime accumulations.

AUTOADJ function block now supports a new on-demand check of the sensor rotor frequency.

New system variable for BSAP slave port and port sharing: Pn_INH_BSAP_SLAVE

An easier method is now supported for changing Modbus slave from RTU transmission mode to ASCII transmission mode.

XMTR function block - enhancements for transmitter calibration.

AGA7 function block - enhanced error reporting.

DNP3 -- enhancements for specifying the host IP address.

CWP 05.50.00 CWM05.50.00 CWE 05.50.00 CEW05.50.00 CWX05.50.00 C_305.50.00 C_105.50.00 CMR05.50.00 E1S05.50.00 E3S05.50.00 C5R05.50.00

IPC_40 for CWP 5.0
ARM_L_40 for all others

OpenBSI 5.8 Service Pack 2

New function blocks:
 IEC62591  AGA3SELECT

Released July 31, 2012

CWP 05.60.00 CWM05.60.00 CWE 05.60.00 CEW05.60.00

IPC_40 for CWP 5.35
ARM_L_40 for all others

5.9

New function blocks:

RBE_DISABLE

WATCHDOG

436

Versions and Compatibility

Firmware Release
CWX05.60.00 C_305.60.00 C_105.60.00 CMR05.60.00 E1S05.60.00 E3S05.60.00 C5R05.60.00

Resource File needed in ControlWave Designer and Designer Version

ControlWave Designer Version

ControlWave Designer Programmer's Handbook D301426X012
September 2020
OpenBSI Major Features Version
New version of NIST23 library DNP3 enhancements

Released March 6, 2014

CWM05.70.00 ARM_L_40

5.35

5.9

IEC62591 FB enhanced to support discrete control.

Released August 13, 2014

CWP 05.71.00 CWM05.71.00 CWE 05.71.00 CEW05.71.00 CWX05.71.00 C_305.71.00 C_105.71.00 CMR05.71.00 E1S05.71.00 E3S05.71.00 C5R05.71.00

IPC_40 for CWP 5.35
ARM_L_40 for all others

5.9 Service Pack 1

Added support to allow Field Tools to collect HART device information from wired and wireless HART networks.

Released Decenber 4, 2014

CWP 05.72.00 CWM05.72.00 CWE 05.72.00 CEW05.72.00 CWX05.72.00 C_305.72.00 C_105.72.00 CMR05.72.00 E1S05.72.00 E3S05.72.00 C5R05.72.00

IPC_40 for CWP 5.35
ARM_L_40 for all others

5.9 Service Pack 1

Maintenance Release -- No new features

Released April 1, 2015

CWP 05.73.00 IPC_40

5.35

Released April 23, 2015

5.9 Service Pack 1

Maintenance Release -- No new features

Versions and Compatibility

437

ControlWave Designer Programmer's Handbook D301426X012 September 2020

Firmware Release

Resource File needed in ControlWave Designer and Designer Version

ControlWave Designer Version

OpenBSI Major Features Version

CWM05.74.00 ARM_L_40

5.35

Released July 1, 2015

5.9 Service Pack 1

Maintenance Release -- No new features

CWP 05.75.00 CWM05.75.00 CWE 05.75.00 CEW05.75.00 CWX05.75.00 C_305.75.00 C_105.75.00 CMR05.75.00 E1S05.75.00 E3S05.75.00 C5R05.75.00

IPC_40 for CWP 5.35
ARM_L_40 for all others

5.9 Service Pack 2

Maintenance Release -- No new features

Released October 1, 2015

CWP 05.76.00 CWM05.76.00 CWE 05.76.00 CEW05.76.00 CWX05.76.00 C_305.76.00 C_105.76.00 CMR05.76.00 E1S05.76.00 E3S05.76.00 C5R05.76.00

IPC_40 for CWP 5.35
ARM_L_40 for all others

5.9 Service Pack 3

Support for array/list numbers greater than 255.

Released June 17, 2016

CWP 05.77.00 CWM05.77.00 CWE 05.77.00 CEW05.77.00 CWX05.77.00 C_305.77.00 C_105.77.00 CMR05.77.00 E1S05.77.00 E3S05.77.00 C5R05.77.00

IPC_40 for CWP 5.35
ARM_L_40 for all others

5.9 Service Pack 3

Modification to ARCHIVE function block to support additional mode values for timestamp.

Released April 28, 2017

438

Versions and Compatibility

Firmware Release

Resource File needed in ControlWave Designer and Designer Version

ControlWave Designer Version

ControlWave Designer Programmer's Handbook D301426X012
September 2020
OpenBSI Major Features Version

CWP 05.78.00 CWM05.78.00 CWE 05.78.00 CEW05.78.00 CWX05.78.00 C_305.78.00 C_105.78.00 CMR05.78.00 E1S05.78.00 E3S05.78.00 C5R05.78.00

IPC_40 for CWP 5.35
ARM_L_40 for all others

5.9 Service Pack 3

Maintenance Release -- No new features

Released September 22, 2017

CWP 05.79.00 CWM05.79.00 CMR05.79.00 E1S05.79.00 E3S05.79.00 C5R05.79.00

IPC_40 for CWP 5.35
ARM_L_40 for all others

5.9 Service Pack 3

Maintenance Release -- No new features

Released November 28, 2017

CWP 05.80.00 CWM05.80.00 CMR05.80.00 E1S05.80.00 E3S05.80.00 C5R05.80.00, HBA05.80.00

IPC_40 for CWP 5.35
ARM_L_40 for all others

5.9 Service Pack 3

Updates to IEC62591 function block to support various Rosemount devices and several other enhancements. Note: IEC V1.20 is not backwards compatible with ControlWave firmware versions 5.79 or earlier.

Released October 27, 2019

CWP 05.91.00 CWM05.91.00 E1S05.91.00 E3S05.91.00 CMR05.91.00 C5R05.91.00, Released August 2020

IPC_40 for CWP 5.35
ARM_L_40 for all others

5.9 Service Pack 3

Support added to allow binary inputs, counters, and analog inputs to be retained as events for DNP3 use. These events can be backed up redundantly over DNP3.

Support added for DNP3 over UDP.

Versions and Compatibility

439

ControlWave Designer Programmer's Handbook D301426X012 September 2020

440

Versions and Compatibility

Virtual Ports

ControlWave Designer Programmer's Handbook D301426X012 August 2020

The VIRT_PORT function block offers a way to get around limits on the actual number of physical communication ports. This is similar to the functionality for the OpenBSI Redirector.
Using the VIRT_PORT function block, users can now attach to a terminal server and send serial data out. (The terminal server could be one bought off the shelf or it could be any ControlWave, including the I/O Expansion Rack.)
The terminal server then sends the data out as serial data. This could be a way to add a BSAP Master port, for example.
To configure the ControlWave as a terminal server, you must set the CUSTOM user mode to 31.
Up to 126 virtual ports can be defined.
For full details on this subject, please refer to the online help for the VIRT_PORT function block.

Virtual Ports

441

ControlWave Designer Programmer's Handbook D301426X012 August 2020

442

Virtual Ports

ControlWave Designer Programmer's Handbook D301426X012 August 2020
VSAT Slave Port ­ Configuration
Important This activity requires ControlWave Designer 4.0 (or newer), OpenBSI 5.4 (or newer), and 04.40 ControlWave Firmware (or newer).
Very Small Aperture Terminal (VSAT) is a protocol used with satellite communications. The VSAT slave port allows a ControlWave-series controller to be part of a VSAT system. VSAT Slave Port configuration has two components:  Configuring flash parameters  Configuring system variables for the rort
Configuring Flash Parameters
1. In the Flash Configuration Utility, click on the Ports tab and choose the ControlWave serial port you want to configure (COM1, COM2, etc.) Then select VSAT Slave as the Mode. Enter the baud rate for the communication line in the "Baud Rate" field. The default is 9600. The maximum supported for VSAT Slave is 57600.

2. Click on the [Save to Rtu] button, and respond to the sign-on prompts.
3. Turn off the ControlWave, then turn it back on for the new port definition to come into effect.

Configuring a VSAT Slave Port

443

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Configuring System Variables
Within ControlWave Designer, start the System Variable Wizard by clicking on View  System Variable Wizard.
First, check the box of the port you want to configure.
Next, click on the "Configuration" button for that port.

When the wizard has successfully established communications with ControlWave Designer, and your project is open, do the following:
1. Choose the 'Port Detail' tab.

2. Select the "Enable" box for the port which will serve as the BSAP Slave.

3. Click [Configuration].

4. In the Configuration page, select only the items shown in the figure, on the next page, and enter appropriate values. A discussion of the various items appears, below:

VSAT ­ Minimum Response Time (_Px_VSAT_MIN_ RESP)

This defines the minimum period of time (in milliseconds) during which this VSAT Slave node will wait before responding to a message from its VSAT Master.

444

Configuring a VSAT Slave Port

VSAT ­ Maximum Response Time (_Px_VSAT_MAX_ RESP)
Click [OK] when finished.

ControlWave Designer Programmer's Handbook D301426X012 August 2020
The purpose of this delay is to allow the VSAT Master enough time to send messages to multiple VSAT slaves before having to handle their response messages.
This defines the maximum period of time (in milliseconds) that this VSAT Slave node will wait before responding to a message from its VSAT Master. The purpose of this delay is to allow enough time for requested data to become available. If alarms become available, they will be sent immediately, regardless of this value. If no data becomes available by the conclusion of this period, an acknowledgment will be sent to the VSAT Master.

Once you select an item, you can specify the value in the corresponding field.
These fields apply to VSAT Slave Ports.

Configuring a VSAT Slave Port

445

ControlWave Designer Programmer's Handbook D301426X012 August 2020
VSAT Master Ports
OpenBSI Workstations with BSAP Master ports can serve as VSAT Masters because they understand VSAT messages. The only configuration required is to configure the UpAckDelay parameter in the BSBSAP.INI file. Similarly, ControlWave BSAP Master ports can serve as VSAT Masters. The only configuration involves setting the _VSAT_UP_ACK_WAIT system variable (shown under `Master' in the figure above).
These parameters (UpAckDelay or _VSAT_UP_ACK_WAIT) define an interval of time (in milliseconds) during which the driver will wait after sending an ACK for a message sent by the slave. Since the VSAT slave will not be responding to the ACK, it allows the VSAT Slave time to get ready for the next request from the VSAT Master.

446

Configuring a VSAT Slave Port

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Web Pages ­ Notes About Using
The standard set of web pages, referred to as Web_BSI, is described in detail in the Web_BSI Manual (part number D301418X012). Various configuration details related to web page setup are repeated here.
Specifying the Location of Your Web Browser
If the path of your web browser is other than the default (\Program Files\Internet Explorer\) you need to use a text editor to edit the WEB_BROWSER_PATH parameter in your NDF file to reflect the web browser's location.
WEB_BROWSER_PATH=C:\Program Files\Internet Explorer
Specifying the Startup Web Page For A Controller
During OpenBSI system configuration, you must specify a startup HTML web page for each controller. This can be done in NetView's RTU Wizard when you initially add the controller or from the RTU's Properties dialog box, after the RTU is already in the network.
To access the RTU Properties dialog box, right click on the icon for the controller, and choose "Properties" from the pop-up menu.
 The startup web page resides on the PC workstation, so a full path and filename must be entered in the "Startup" field of the RTU Properties dialog box.
 If you would like access to the standard web page set, specify web_bsi.htm as the startup page. This web page is referred to as the Main Menu, and contains links to all of the standard web pages.

Using Web Pages

447

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Specify the complete path and filename on the PC, of the startup web page here. (Click Browse to locate the web page, if necessary.)
Other Notes About Using Web Pages
 For optimum results, set screen resolution to 1024 x 768 when using the Web_BSI web pages.
 You can have multiple web pages open simultaneously, for example, to look at different types of data from the same RTU. To do this, just open a new instance of Internet Explorer (or open a new window in IE using the FileNew command). Note, however, that if you terminate one instance (or window) communicating with a particular RTU, you will terminate all instances or windows communicating with that same RTU.
 If your ControlWave controller is part of a BSAP network, it will be treated as a BSAP controller; and only those configuration facilities and features available for a BSAP controller will be available.
 The standard set of web pages (Web_BSI) are stored in the directory:

448

Using Web Pages

ControlWave Designer Programmer's Handbook D301426X012 August 2020
\ProgramData\Bristol\OpenBSI\WebPages where openbsi_installation_path is whatever directory you chose for the installation of OpenBSI. The default is OpenBSI.
Calling Up Web_BSI Pages
There are two different methods for calling up the Web_BSI web pages:
Important If this is the first time you are calling up the Web_BSI web pages, you will need to use the Node Locator page, to identify the nodes with which you want to communicate. After that, you should not need to use it again, unless you are communicating with different nodes, or if your network configuration has changed.

Method 1

With NetView or LocalView running, click as follows: StartProgramsOpenBSI ToolsWeb Page AccessStandard Pages
Important Depending upon what version of the Windows operating system you use, you may need to log in with Administrative privileges in order to use certain configuration web pages, in particular the Node Locator.

Method 2

In order to call up the web page(s) associated with a particular controller, right click on the icon for the controller in the OpenBSI NetView tree, and choose RTUWebPage Access from the popup menu. Internet Explorer will be started, and whichever startup web page associated with the controller will be displayed.

Using Web Pages

449

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Note: If a web page is initially being stored within the controller, you must retrieve it for viewing using the ControlView utility (RTU  ControlView). See the BSI_Config User's Guide (part number D301428X012) for information on ControlView.
To call up other web pages, click on a category, and then select from the choices that appear below it.

The Main Menu page in the standard set is shown above, although the startup page for your controller may be different. Typically, the Security Sign-On always appears on the Main Menu page.
The various web pages include category buttons along the left hand side, for calling up additional pages; when you click your cursor on a category button, a list of pages belonging in that category will appear below it. The category buttons are named Security, Configuration, Statistics, Signal Data, and Historical Data.
A "Node Name" field displays the name of the current controller from which data is being viewed on the web page.

450

Using Web Pages

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Creating Your Own Web Pages to Use with the ControlWave
If desired, you can develop your own customized web pages to collect and display data from a ControlWave series controller. To do this, you must use ActiveX controls. See Appendix A of the Web_BSI Manual (part number D301418X012) for more information.

Using Web Pages

451

ControlWave Designer Programmer's Handbook D301426X012 August 2020

452

Using Web Pages

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Appendix A: Troubleshooting Tips
I had a previous version of ControlWave Designer installed. Now, I just installed a new copy of ControlWave Designer 3.3 (or newer), but it will only operate in demo mode. How come?
Prior to ControlWave Designer Version 3.3, a software copy protection key (dongle) had to be plugged into the parallel port of the PC. Beginning with Version 3.3, you should NOT use the copy protected key. Unplug it, and try starting ControlWave Designer again, and all functions should be available.
When I try to download a project to the ControlWave, I get an 'Access locked by Switch' message in the Sign On dialog box. What does that mean?
This typically refers to the key switch which is just above COM port 1 on the ControlWave. In order to download a project, this switch must be either in the 'REMOTE' or 'LOCAL' position, depending upon whether you are communicating serially, or using TCP/IP. (Serial communications from ControlWave Designer require the switch be in the 'LOCAL' position; TCP/IP communications support either 'REMOTE' or 'LOCAL'.)
OpenBSI downloads can occur with the switch in either the 'REMOTE' or 'LOCAL' position.
I am able to connect to the ControlWave, but Internet Explorer returns a '-404 File Not Found' error when I try to call up a web page.
If you are using web pages, make sure you have the correct path and filename.

Appendix A: Troubleshooting Tips

453

ControlWave Designer Programmer's Handbook D301426X012 August 2020

In DataView, when I try to do a signal search, I can't see any of the variables in the

ControlWave project. Why?
DataView can only collect

A variable is marked as "PDD" here.

variables which have been

defined as "PDD".

Variables which are explicitly marked as "PDD" by the user (see picture at right) can be collected by DataView if the "Marked Variables" for PDD option is selected in the Resource Settings dialog box (see below)

In addition, you can also choose to automatically mark all global variables as "PDD" by choosing the "All global variables" option in the Resource Settings dialog box.
Most users choose NOT to do this, since it means that all global variables will be collected, many of which are likely to not be of interest to the average user.

When this is checked, all global variables will be declared as "PDD".

When this is checked, local variables marked as "PDD" will be declared as "PDD".

454

Appendix A: Troubleshooting Tips

ControlWave Designer Programmer's Handbook D301426X012 August 2020
In DataView, how come I can't always call up the signal lists I want to see?,
In Version 5.9 Service Pack 2 and earlier, DataView could only display signal lists numbered from 1 to 255; any higher number list could not be displayed. Edit the iiListNumber value for any LIST function blocks to be from 1 to 255.

I made changes to configuration parameters in the ControlWave (port type, user accounts, etc.) but the old settings are still in effect. How come?
This is one of the most common occurrences in ControlWave. For new settings to take effect, you must first reset the unit (turn the unit off, then turn it back on). The other reason this can occur is if you still have the default switch in the OFF position. Changes to soft switches are ignored when the default switch is OFF. On a standard ControlWave, the default switch is SW1-3, on the LP, it is SW4-3, and on the MICRO, it is SW2-3.

Communications with the ControlWave operate fine until I connect it to a Network 3000 controller, then communications are seriously degraded, or stop entirely. Why?
This has been known to happen if you are using the wrong cable type, or if the ControlWave or Network 3000 controllers are not properly grounded. See the hardware manual for details about cabling and grounding.

I tried to start ControlWave Designer to communicate with the ControlWave, but I got the message 'Could not attach to serial port'. What causes that?
This can occur if the serial port on the PC is already being used by some other program. For example, if you are running NetView to communicate with the ControlWave, you cannot use the same PC port simultaneously to communicate directly using ControlWave Designer. You can, however, start ControlWave Designer from within NetView.

When I try to use the OPC Server to get data out of the ControlWave, I can't find anything.

How come?

Check the "OPC" box

The OPC Server can only access variables which have been specified for OPC access.

Variables which are explicitly marked as "OPC" by the user (see picture at right) are available to the OPC Server if the "Marked Variables" for OPC option is selected in the Resource Settings dialog box (see next page).

In addition, you can choose to automatically mark all global variables to be marked for "OPC" access by choosing the "All global variables" OPC option in the Resource Settings dialog box.

Appendix A: Troubleshooting Tips

455

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Make sure you have checked "Marked variables", or "All global variables", or both.

If you still cannot collect variables via OPC, you should check that your configuration settings for the OpenBSI Signal Extractor are correct. See Chapter 12 of the OpenBSI Utilities Manual for details.
In ControlWave Designer, I can't see the units text I entered for my variables. What's wrong?
If these are retain variables, you might not have enough retain memory allocated. See Memory Usage.
Windows isn't letting me run ControlWave Designer or the I/O Simulator. Why not?
Data Execution Settings (DEP) which exist in certain Windows versions can prevent ControlWave Designer and I/O Simulator from running. You must change the settings from Windows Control Panel. Call-up sequences vary slightly based on the operating system, but the basic sequence is:
1. Click Start  Settings  Control Panel  System 2. Click Advanced 3. Click Performance  Settings 4. Click Data Execution Prevention on Performance Options: 5. Do the following, based on the platform:

456

Appendix A: Troubleshooting Tips

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Windows 2003 Server or Windows 2008 Server
Either: Turn on DEP for essential programs and services only
Or Turn on DEP for all programs and services except those I select: C:\windows\system32\rundll32.exe.

Windows XP or Windows 7
Turn on DEP for essential programs and services only

Appendix A: Troubleshooting Tips

457

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Using the Debug Information Tool
(ADVANCED USERS ONLY 04.40 Firmware or NEWER)
It is possible to view internal details about a ControlWave unit's operation using the ControlWave Debug Information tool. This tool is intended solely for use by Emerson Development, Engineering, and Technical/Application Support personnel, or by customers being directly assisted by these personnel. The ControlWave Debug Information tool retrieves information such as:  Contents of internal memory  Contents of user stack (memory)  Contents of messages sent/received via a particular port (similar to a Data Line
Monitor)  RBE information
Starting the Debug Information Tool:

Note: Communications via NetView, LocalView, or TechView must be active in order to use the Debug Information Tool.

To start the Debug Information Tool, click on as follows:

Start  Programs  OpenBSI Tools  Utility Programs  ControlWave Debug Info

The Trouble Shooting Information dialog box will appear:
First, choose the ControlWave controller from which you want to collect data. Enter the name of the ControlWave in the "Node Name" or choose the name from the list of nodes in your NETDEF file using the [Select] button. (If you've used the tool before, the last node you looked at will appear in the field, by default.)

Select the node name from which you want to collect data.

Specify a name for the log file that will hold the data from the ControlWave.

Next, provide a name for the file that will hold the collected data in the "Output File" field, or use the [Browse] file to locate one. Output files must have the extension of *.LOG. (If you've used the tool before, the last log file you

Click on [Levels] to specify what level of detail of data you want to collect.

458

Appendix A: Troubleshooting Tips

ControlWave Designer Programmer's Handbook D301426X012 August 2020
used will appear in the field, by default.)
Now, you need to specify what level of data you want to collect. To do this click on the [Levels] button.

Specifying the Logging Levels for the Debug Information Tool

In the Configure Logging Levels dialog box, choose the sub-system (port, memory, etc.) that you're interested in, and click on the corresponding level column number.

The sub-systems are identified by a "Type" number. The type numbers are:

Type
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 40 41 60

Sub-System
Memory Port 1 Port 2 Port 3 Port 4 Port 5 Port 6 Port 7 Port 8 Port 9 Port 10 Port 11 Port 12 ­ UNUSED Port 13 ­ UNUSED Port 14 ­ UNUSED Port 15 - UNUSED Virtual Ports Flash Access (covers read/write of files from FLASH memory) Time Synch Temporary Use Custom Protocol CIP Protocol AMOCAMS AI Net Custom Protocol RBE System Display System Dynamic IP Routes

The Change Logging Level dialog box will appear. Logging levels range from 1 to 8. The higher the logging level, the more information will be collected, so generally, you should choose `8'. Click on [OK] to update the level. Repeat this process for each additional item you want to monitor. When you are finished, click on [OK] to exit the Configure Logging Levels dialog box.

Appendix A: Troubleshooting Tips

459

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Choose the sub-systems within the ControlWave that you want to monitor by clicking on the corresponding level.

Use the scroll bar to bring more items into view.
The level settings are saved in the ControlWave, and will be used for all subsequent logging sessions, unless changed or erased by a system cold start.
Collecting the Debug Data
Once you've finished defining the logging level, click on the [Refresh] button. The [Start/Stop] button should now be labeled [Start]. Click on [Start] and data on the items you selected will begin to be stored in unused areas of static memory. The debug data will not affect memory needed for system operation. If you want the data to be preserved across warm starts of the ControlWave, click on [Retain].
Note: Once the tool is started, you do not need to leave it running; since collection occurs in the background.

Viewing the Debug Data
When you decide you want to retrieve the debug data into a log file, for viewing, click on the [Retrieve] button in the Debug Information Tool, and the data will be stored in the log file specified.

460

Appendix A: Troubleshooting Tips

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Firmware Version: CWM 04.60.10 Link Date: 03/29 Crash Blocks: 0

**** Registers ****

*** Enhanced Crash Information. ***

Version: 0000 Complement: 0000 Mult Crash: 0

Executing:

Free Vol: 0 (0 bytes) Free Non Vol: 0 (0 bytes) Free Malloc: 0 bytes
*** User Stack ***
*** System Stack ***

Timestamp in hexadecimal format, based on system time from day 0.

*** Debug Activity Log ***

Retain Log: 1 Entries: 1126

Log Active: T000: 8 T001: 8 T002: 8 T003: 8 T004: 8 T005: 8
064cd064 MEM_SYS: Free 276, Address: 60006a70, Caller: 00000000 064cd158 MEM_SYS: Get 276, Address: 60006a70, Caller: 10052d04 064cd158 MEM_SYS: Free 276, Address: 60003008, Caller: 00000000 064cd3c8 P3: Lengths: Read: 11, Write: 0 064cd3c8 P3: RAW: 1002 02f58510 10100327 064cd3c8 P3: RAW: ad00 00000000 00000000 064cd408 P3: Lengths: Read: 11, Write: 0 064cd408 P3: RAW: 1002 03f68510 101003ae 064cd408 P3: RAW: 8300 00000000 00000000 064cd448 P3: Lengths: Read: 11, Write: 0 064cd448 P3: RAW: 1002 06f78510 10100341 064cd448 P3: RAW: b900 00000000 00000000 064cd448 P3: BSAP Recv, Slave/Len: 0605, S/DMex/ID: 89850310, S/D GLAD: 00000000 064cd448 P3: BSAP Send, Slave/Len: 0007, S/DMex/ID: 01870006, S/D GLAD: 00000000 064cd448 P3: Lengths: Read: 0, Write: 12 064cd448 P3: RAW: 1002 00f78706 00011003

Appendix A: Troubleshooting Tips

461

ControlWave Designer Programmer's Handbook D301426X012 August 2020
You can view the log file in any text editor. As the information in the log file is intended primarily for Emerson Development Engineering personnel, instructions for interpreting the contents of the log file is beyond the scope of this manual.
DEBUG_LOG_NULL;0;0;0;NULL Entry DEBUG_LOG_MEM_SUM;0;0;1;MEM_SYS: Sum - Ret Pages:%04x, Page Pool: %08x, Total: %08x DEBUG_LOG_MEM_PFRET;0;1;0;MEM_SYS: Retain Page Free, %d Pages, Address: %08x DEBUG_LOG_MEM_PARET;0;1;1;MEM_SYS: Retain Page Alloc, %d Pages, Address: %08x DEBUG_LOG_MEM_PF;0;1;2;MEM_SYS: Page Free, %d Pages, Address: %08x DEBUG_LOG_MEM_PA;0;1;3;MEM_SYS: Page Alloc, %d Pages, Address: %08x DEBUG_LOG_MEM_GET;0;2;0;MEM_SYS: Get %5d, Address: %08x, Caller: %08x DEBUG_LOG_MEM_FREE;0;2;1;MEM_SYS: Free %5d, Address: %08x, Caller: %08x DEBUG_LOG_P1_MOD_CHANGE;1;0;0;P1: Modem Control Change: %d DEBUG_LOG_P1_DCD_CHANGE;1;0;1;P1: Carrier Changed to: %d
Erasing Debug Data
If you don't want the log entries retained between warm starts of the ControlWave, click [Clear], and they will be erased at the next warm start. (An exception to this is if the unit crashes and restarts; the information will not be erased.)
If you want to clear the log entries from static memory, immediately, and not wait until a warm start, click [Initialize].
Other Debugging Tools (BTCP Spy, DLM Monitor)
These tools are reserved for Emerson Remote Automation Solutions support and development personnel and are not intended for customer use.

462

Appendix A: Troubleshooting Tips

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Appendix B: ControlWave Designer Compatibility Issues
If you install ControlWave Designer on your PC Workstation, and you already have an earlier version of ControlWave Designer installed, the earlier version is automatically overwritten.
Important ControlWave Designer is backward compatible such that older ControlWave projects can be opened in a new version of ControlWave Designer. Any ControlWave project created or modified with the newer version of ControlWave Designer, however, cannot subsequently be brought back into the older version of ControlWave Designer.
In other words, once you bring a project created with an older version of ControlWave Designer into a newer version if ControlWave Designer, you can't edit it with the older ControlWave Designer, because it would now be incompatible. Similarly, if you create an all-new project in the newer ControlWave Designer, it also cannot be used within the older ControlWave Designer.
For this reason, you should only open a project in the newer version of ControlWave Designer if you intend to edit it, from that time onwards, in the newer version.
Bringing an Older ControlWave Project into a Newer Version of ControlWave Designer
If you have an older ControlWave Designer project, that you want to open it in a newer version of ControlWave Designer, there are certain steps you must take.
1. After you have brought the project in, you must delete the ACCOL3 firmware library, and any other (*.FWL) libraries.
2. Now, insert the most recent *.FWL libraries (which come with the new version of ControlWave Designer, you are using). Firmware libraries are located in the path \Openbsi\mwt\plc\fw_lib\

3. Finally, re-build any user libraries (*.MWT) built based on the older libraries, by clicking on Build  Make.

Appendix B: ControlWave Designer Compatibility Issues

463

ControlWave Designer Programmer's Handbook D301426X012 August 2020
Warning - I/O Configurator and Multiple Copies of ControlWave Designer
If you intend to run multiple copies of ControlWave Designer simultaneously, do NOT attempt to run multiple copies of the I/O Configurator. If you do, you risk corrupting your I/O definitions.

464

Appendix B: ControlWave Designer Compatibility Issues

Index

ControlWave Designer Programmer's Handbook D301426X012 August 2020

_TIME system variables ...................................371 ACCOL names ......................................... 372, 373 Addressing
in an IP network ...........................................293 in BSAP networks ...........................................52 Alarms _ALARM_FORMAT system variable ..............373 configuring ...................................................... 9 marking alarm variables in Variable Extension
Wizard .....................................................404 priority of.......................................................10 Application licensing of standard ControlWave applications
.................................................................. 23 parameters ....................................................27 Archive File configuring ....................................................29 Array configuring an ...............................................41 Audit configuration ................................................. 43 breakpoint clearing a.....................................................111 setting a ......................................................110 BSAP local address..................................................52 Master Port....................................................55 Slave Port ......................................................61 what is it? ......................................................49 Challenge Handshaking Authentication Protocol (CHAP) ........................................................305 CHAP............................................................... 355 setting the default username for..................305 specifying for a PPP port ..............................310 Cold start application ..................................................325
starting with a System task.......................361 system ......................................................... 324 Communication Ports .......................................67 defaults for ....................................................81 setting up a BSAP Master Port ........................55

setting up a BSAP Slave Port .......................... 61 setting up a Modbus Port............................. 341 setting up a PPPort ...................................... 309 setting up a VSAT Slave Port ........................ 443 setting up an Ethernet Port.......................... 307 sharing .......................................................... 92 Compiling your project ..................................... 95 Conditional logic in your ControlWave project.......................... 97 Configuring Modbus ....................................................... 335 Data Types IEC 61131-3................................................. 421 DataView using with ControlWave .............................. 101 Debugging your project .................................. 105 Default settings for communicaton ports................................ 81 Downloading your ControlWave project ......... 113 EBSAP ............................................................. 127 group number ............................................... 52 Ethernet Port .................................................. 307 Firmware libraries ........................................... 315 Flash Configuration utility starting ....................................................... 149 Flash File access utility..................................... 155 Forcing a variable's value ................................ 109 Function block creating....................................................... 159 executing once at startup .............................. 97 list of function blocks in ACCOLIII library .......... 5 parameter name prefixes ............................ 165 Global variables............................................... 419 Group number in an EBSAP network...................................... 52 Historical data................................................. 167 I/O Configurator.............................................. 169 I/O Mapping.................................................... 197 I/O Simulator .................................................. 283 Initialization Files in Variable Extension Wizard........................ 412

Index

465

ControlWave Designer Programmer's Handbook D301426X012 August 2020
IP addressing ...................................................293 IP Parameters ..................................................301 IP Ports
Ethernet ......................................................307 PPP ..............................................................309 IP Routes .........................................................311 Libraries firmware and user........................................315 Licensing of standard ControlWave applications ...........23 Lists defining in Variable Extension Wizard ..........406 Local address in a BSAP network ..........................................52 Local variables .................................................420 Master Port .......................... See BSAP Master Port Memory ..........................................................319 Flash File Access utility .................................155 static memory area......................................393 Modbus configuring ..................................................335 exporting security data to............................351 Modus Port......................................................341 Network Host PC (NHP)...................................301 Overwriting a variable's value ..........................109 PAP .................................................................355 specifying for a PPP port ..............................310 Passwords .......................................................345 CHAP usage .................................................305 Patch POU .......................................................108 Point-to-Point Protocol (PPP) Port ...................309 Ports .................................................................67 defaults for ....................................................81 setting up a BSAP Master Port ........................55 setting up a BSAP Slave Port...........................61 setting up a Modbus Port .............................341 setting up a PPP Port....................................309 setting up a VSAT Slave Port ........................443 setting up an Ethernet Port ..........................307 sharing ..........................................................92 POU size..........................................................330 RBE collection marking variables in Variable Extension Wizard
................................................................ 403

Reseting the ControlWave .............................. 343 Routing Internet Protocol (RIP) ....................... 302 Security .......................................................... 345
setting the default username for CHAP protocol usage....................................................... 305
Security Protocols ........................................... 355 Serial port
sharing .......................................................... 92 Sharing
a serial port ................................................... 92 Slave Port................................ See BSAP Slave Port Specifying IP address for an NHP ..................... 301 String Variables............................................... 422 System task .................................................... 361 System Variables............................................. 363 User Security Management Tool ..................... 345 User-created libraries ...................................... 315 Variable Extension Wizard............................... 399 Variables ......................................................... 419
addresses of ................................................ 420 default variable names for I/O...................... 197 forcing or overwriting a value ...................... 109 naming conventions for............................... 423 system ........................................................ 363 Versions compatibility of different software and firmware
................................................................ 425 Virtual Ports .................................................... 441 VSAT Slave Port
setting up a ................................................. 443 Warm start
application starting with a System task ...................... 361
system ........................................................ 324 Watch window ................................................ 105 Watchdog
what happens to memory............................ 323 Web browser
specifying the location of ............................ 447 Web pages
notes about using........................................ 447 Wizard
Variable Extension ....................................... 399

466

Index

ControlWave Designer Programmer's Handbook D301426X012 August 2020

Index

467

ControlWave Designer Programmer's Handbook
D301426X012 August 2020

For customer service and technical support, visit www.Emerson.com/SupportNet.
Global Headquarters, North America, and Latin America:
Emerson Automation Solutions Remote Automation Solutions 6005 Rogerdale Road Houston, TX 77072 U.S.A. T +1 281 879 2699 | F +1 281 988 4445 www.Emerson.com/RemoteAutomation
Europe: Emerson Automation Solutions Remote Automation Solutions Unit 8, Waterfront Business Park Dudley Road, Brierley Hill Dudley UK DY5 1LX T +44 1384 487200 | F +44 1384 487258
Middle East/Africa: Emerson Automation Solutions Remote Automation Solutions Emerson FZE P.O. Box 17033 Jebel Ali Free Zone ­ South 2 Dubai U.A.E. T +971 4 8118100 | F +971 4 8865465
Asia-Pacific: Emerson Automation Solutions Remote Automation Solutions 1 Pandan Crescent Singapore 128461 T +65 6777 8211| F +65 6777 0947

© 2003-2020 Remote Automation Solutions, a business unit of Emerson Automation Solutions. All rights reserved.
This publication is for informational purposes only. While every effort has been made to ensure accuracy, this publication shall not be read to include any warranty or guarantee, express or implied, including as regards the products or services described or their use or applicability. Remote Automation Solutions (RAS) reserves the right to modify or improve the designs or specifications of its products at any time without notice. All sales are governed by RAS terms and conditions which are available upon request. RAS accepts no responsibility for proper selection, use or maintenance of any product, which remains solely with the purchaser and/or end-user.

Remote Automation Solutions


Adobe PDF Library 15.0