Controlwave Designer Programmer S Handbook en 178780
Controlwave Designer Programmer S Handbook en 178780
D301426X012
February 2023
System Training
A well-trained workforce is critical to the success of your operation. Knowing how to correctly install, configure, program, calibrate, and trouble-
shoot your Emerson equipment provides your engineers and technicians with the skills and confidence to optimize your investment. Energy and
Transportation Solutions offers a variety of ways for your personnel to acquire essential system expertise. Our full-time professional instructors
can conduct classroom training at several of our corporate offices, at your site, or even at your regional Emerson office. You can also receive the
same quality training via our live, interactive Emerson Virtual Classroom and save on travel costs. For our complete schedule and further
information, contact the Energy and Transportation Solutions Training Department at 800-338-8158 or email us at [email protected].
ii
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Contents
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
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
Contents iii
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Step 2. In ControlWave Designer, identify Variables for which you want to maintain Audit Logging46
Step 3. Configure an AUDIT Function Block ................................................................................... 47
Communication Ports 67
Compiling 95
Conditional Logic 97
DataView 101
Before you begin: ....................................................................................................................... 101
Calling up ControlWave Data in DataView .................................................................................. 102
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
iv Contents
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Contents v
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
IP Parameters 301
IP Routes 311
Libraries 315
Security 345
Other Security-Related Issues ......................................................................................................351
Contents vii
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
viii Contents
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Introduction
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
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.
Introduction 1
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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.
2 Introduction
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
For information on this… Please consult this…
ControlWave Explosion-Proof Gas Flow ControlWave Explosion-Proof Gas Flow
Computer (XFC) Computer (XFC) Instruction Manual (part
number D301396X012)
ControlWave Express ControlWave Express RTU Instruction Manual
(part number D301386X012)
ControlWave Express PAC ControlWave Express PAC Instruction Manual
(part number D301384X012)
ControlWave Corrector ControlWave Corrector Instruction Manual
(part number D301382X012)
ControlWave Gas Flow Computer Plus ControlWave Gas Flow Computer Plus
Instruction Manual (part number
D301389X012)
ControlWave Ethernet I/O ControlWave Ethernet I/O Instruction Manual
(part number D301395X012)
ControlWave Industrial Ethernet Real ControlWave Industrial Ethernet Real-time
Time Switches Switches Instruction Manual (part number
D301390X012)
Note:
Because the existing ControlWave install-base includes customers with older hardware
and software, for support purposes this manual includes references to older un-supported
operating systems and devices.
Introduction 3
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
4 Introduction
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Note
Other function block libraries are available for liquids calculations, and NIST23 calculations.
Contact Emerson Energy and Transportation Solutions for more information.
For instructions on how to use any of these function blocks, please consult the online help
in ControlWave Designer.
Alarm Configuration
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.
Alarm Configuration 9
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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.
Alarm Variable 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).
Alarm Priority The alarm priority is basically a number which indicates the importance
of the alarm. There are four priorities supported in the system:
Disable 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
February 2023
configuration errors, and the variable is NOT in an alarm state. For a full
description of status values, see the on-line help files.
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.
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
February 2023
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
February 2023
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.
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
February 2023
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
February 2023
The table, below, summarizes the values for the various parameters used in this example:
Alarm Configuration 15
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Parameter Suggested Variable Name Variable Value Notes
Name Type
UINT, DINT, or
UDINT
iaHiLimit WATER_H_LIMIT REAL, SINT, 70.0 High alarm limit
USINT, INT,
UNIT, DINT or
UDINT
iaLoLimit WATER_L_LIMIT REAL, SINT, 40.0 Low alarm limit
USINT, INT,
UINT, DINT or
UDINT
iaLoLoLimit WATER_LL_LIMIT REAL, SINT, 20.0 Low low alarm limit
USINT, INT,
UINT, DINT or
UDINT
iaHiDeadBand WATER_HDB REAL, SINT, 10.0 High alarm deadband
USINT, INT,
UINT, DINT or
UDINT
iaLoDeadBand WATER_LDB REAL, SINT, 10.0 Low alarm deadband
USINT, INT,
UINT, DINT or
UDINT
iiPriority CRITICAL_PRIORITY INT 3 High-High Priority
iiHiPriority NON_CRITICAL_PRIORITY INT 2 High Priority
iiLoPriority NON_CRITICAL_PRIORITY INT 2 Low Priority
iiLoLoPriority CRITICAL_PRIORITY INT 3 Low-Low Priority
istrUnitsText TEMP_UNITS STRING 'DEG_C' Engineering units (up
to 6 characters)
istrDescText WATER_TEMP_DESC_TEXT STRING 'WATER Descriptive text (up to
TEMPERAT 64 characters)
URE'
odiStatus WATER_TEMP_ALARM_STATUS DINT None Status of the execution
of this function block.
16 Alarm Configuration
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
The configured alarm block appears, below:
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.)
Alarm Configuration 17
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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.
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.
18 Alarm Configuration
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Parameter Suggested Variable Name Variable Value Notes
Name Type
odiStatus POWERFAIL_ALARM_STATUS DINT None Status of the execution
of this function block.
ouiAlarmSeq POWERFAIL_ALARM_SEQ_NUM UINT None Alarm sequence
number
ouiGlobalSeq POWERFAIL_GLOBAL_SEQ_NUM UINT None Global sequence
number
Alarm Configuration 19
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
convenient if you want to organize your project such that all alarm function blocks are
in the same place.
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:
20 Alarm Configuration
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
The configured alarm block appears, below:
Alarm Configuration 21
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
22 Alarm Configuration
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Application Licensing
Certain standard applications sold by Emerson Energy and Transportation 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.
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
February 2023
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].
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
February 2023
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.
Application Licensing 25
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
26 Introduction
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Application Parameters
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
February 2023
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 This must be an IP address corresponding to an Ethernet port on the A
controller in a redundant pair.
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
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Archive Configuration
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.
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).
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
February 2023
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.
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.)
30 Archive Configuration
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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.
Archive Configuration 31
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
To begin defining an Archive File, click on the [New] button, then complete the fields as
discussed, below:
File Definition
Number This is a unique ID number for this Archive File. It can range from 1 to 32767.
Name This is the archive file name. Up to 8 alphanumeric characters, beginning with
a letter, can be used.
Records 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.
Columns 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 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.
RAM 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
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
the time at which the record is stored.
Start of When "Start of Period" is chosen, the timestamp assigned to this archive
Period record is the time at the beginning of the interval.
Type
Non- When this is chosen, archive records are stored when the ARCHIVE function
periodic block executes, if the criteria determined by the iiMode terminal is met.
Periodic 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.
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
February 2023
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.
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:
Perform a simple sum and divide average with each sample weighted by
WeightFactor1. See the equation below:
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
February 2023
calculate the average square root and store the result in the Archive. See the
equation, below:
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:
Note: The result is zero if Weight Factor 2 is zero for the entire interval.
No calculation performed. At the end of the periodic interval, simply store the
current value of the variable in the archive.
At the end of the periodic interval, store the lowest value of the variable
among all values collected during this interval.
At the end of the periodic interval, store the highest value of the variable
among all values collected during this interval.
At the end of the periodic interval, store the current value of the variable, and
Archive Configuration 35
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
reset the variable to zero.
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.
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
February 2023
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.
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.
Archive Configuration 37
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
data type requirements of the output list used in this example.
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 on-
demand 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
February 2023
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.
Archive Configuration 39
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Parameter Name Variable Name Variable Type Value Notes
irWFactor2 WF2 REAL None This weight factor is used in
certain averaging
calculations. This is discussed
earlier in this section..
idiSequenceIndex SEQ_INDEX DINT None 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 on-
line help for the ARCHIVE
function block for more info.
odiStatus ARCHIVE1_STAT DINT None OPTIONAL — This reports
status values regarding the
execution of the ARCHIVE
function block. Negative
values indicate errors.
ouiNumRecords ARCH_REC_TOTAL UINT None This is the total number of
archive records currently in
the archive file.
ouiOldestRecord OLDEST_ARCH_SEQNUM UINT None OPTIONAL — This reports the
Local (Archive) Sequence
number of the oldest record
in the archive file.
ouiNewestRecord NEWEST_ARCH_SEQNUM UINT None OPTIONAL — This reports the
Local (Audit) Sequence
number of the newest record
in the archive file.
40 Archive Configuration
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Array Configuration
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.
TYPE
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.
VAR_EXTERNAL (*AUTOINSERT*)
WEDNESDAY :TODAYS_TEMPS;
END_VAR
Array Configuration 41
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
WEDNESDAY[1][1] :=T1_TEMP;
WEDNESDAY[1][2] :=T2_TEMP;
WEDNESDAY[1][3] :=T3_TEMP;
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:
42 Array Configuration
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Audit Configuration
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.
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.
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
February 2023
Storage Location
Flash 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.
RAM 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 Specifies the number of events to be logged. This value can range from 0
Events to 584. 0 is the default, which means that no events will be logged.
Number of Specifies the number of alarms to be logged. This value can range from
Alarms 0 to 584. 0 is the default, which means that no alarms will be logged.
44 Audit Configuration
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Number of When "Flash" is chosen as the storage location for the Audit Trail records,
Records in the the Audit system cannot write data into the Alarm or Event logs when a
Output Buffer flash log becomes full. Should alarm(s) or event(s) be generated during
[% of that time, it must be temporarily stored in the Output Buffer, until such
corresponding time as the new useful records can be written into an Alarm or Event log
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.
Port
Logging Defines the only port which is capable of deleting the audit records
Master from the audit logs. The Logging Master Port is only meaningful when
Port 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
Audit Configuration 45
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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 'in-
alarm' 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
February 2023
To create the Event List, insert one of the LIST function blocks (LIST010, LIST020, LIST030,
LIST050, or LIST100) in your ControlWave Designer program.
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.
Audit Configuration 47
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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.
48 Audit Configuration
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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 OpenEnterprise™
software, or a third-party HMI package such as Intellution® FIX® or Iconics Genesis™. 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.
Network Master PC
running Open BSI
Level 0 and HMI/SCADA
software Cable or dial-up
connections Radio connection
Level 1
ControlWave Network 3000
controller controller Network 3000 Flow
computers/correctors
Level 2
Network 3000 Network 3000
controller controller Pseudo Master Device
running UOI or Open BSI
Level 3
ControlWave
controller
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.
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).
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.
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.
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.
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.
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
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.
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).
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.
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.
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:
Poll Time This is the frequency (in seconds) at which the Master
(_Px_POLL_PER) 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.
Data Link This is the data link level response timeout. Message
Timeout transmission must start before expiration of this timeout.
(_Px_TIMEOUT)
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 All messages passing through the controller are tracked. This timeout
(_MSG_TIMEOUT) applies to each passthrough message. If the value is <=0, the default
timeout of 30000 milliseconds (30 seconds) is assumed.
Master - Dead Slaves This references an array of 127 BOOL variables. Array elements
(_SLAVE_DEAD) 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 This references an array of 127 BOOL variables. Array elements
(_SLAVE_POLL_DIS) 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.
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.
Check these
items for a BSAP
Slave Port.
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 This defines a period of time (in seconds) during which this Slave node
(_Px_POLL_PER) expects to receive a poll message from its Master. If a poll message
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.
Write Delay This specifies a delay (in milliseconds) which must elapse, before this
(_Px_WRITE_DEL) 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.
Write (CTS) Since the Clear-To-Send (CTS) must be received in order to transmit,
Timeout this timeout (in milliseconds) is added to the expected message
(_Px_WRITE_TMO) 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.
Time Sync Disable When set to TRUE, any time synchronization (TimeSync) message
(_Px_TS_DIS) 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.
Time Sync Needed When set to TRUE, the Slave sends a request to the Master Port for a
(_Px_TS_FORCE) TimeSync/Node Routing Table (TS/NRT) message. Once the TS/NRT is
received, this is cleared.
Node Routing When set to TRUE, any Node Routing Table (NRT) message arriving at
Table Disable this slave port will be ignored. The default is FALSE which means NRT
(_Px_NRT_DIS) messages received at this port will be accepted and processed.
Alarm Disable This allows you to disable alarm transmissions through this port.
(_Px_ALM_DIS)
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
Communication Ports
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).
Communication Ports 67
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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.
Power Switch
I/O Modules
with Bezel
68 Communication Ports
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Power Switch
Communication Ports 69
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
W20
W19
W24
W21
R164
W4
W5
W3
W7
J19 1
W22
1
W23
1
J16 = MSP430
COM3 JTAG Header LCD Contrast
1
1
1
1
1
1
1
1
J16
RS-485 1
Config. P2 = LCD Display Intf. (On Reverse Side) P2
SW3 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)
1 2 3 4 5 6 7 8
CR48: RX Comm. 2
CR44: RX Comm. 3
Keypad
CR45: TX Comm. 1
CR47: TX Comm. 2
CR43: TX Comm. 3
2-Key
Pushbutton 1
W2
ON
2
1
9 1 PLD JTAG Emulator CR38
10 2 Header Connector CR37
Factory Factory use
Use 1 CR36 1
CR35 W16
J12 W28
10
9
S1 1 CR35 - CR40: Status LEDs 1 through 6
CR22: DTR
Active
S1 = 3V, 1200mA-hr Lithium Coin Cell Battery
CR21:
DCD ON
J11 J10 W8
1
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
1 W25: Enable/Disable Comm. Status LEDs: (In = Enable, Out = Disable)
W9 W28: Battery Back-up Enable/Disable: (In = Enable, Out = Disable)
Modem
Connectors
W26
W27
COM1
ControlWave GFC-CL
70 Communication Ports
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
COM1
COM2
COM3
ControlWave GFC
Communication Ports 71
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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
February 2023
COM1
COM2
Ethernet
Port
COM3
Communication Ports 73
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
RS485
TR-
TR+ 3 = TR+
To -
To + }to/from
Model
3808
RTD
D03
D01
D04
D02
DI1
DI2
+ + _
P1
P2
G
G
G
J5 J3 Communication Ports
NETWORK LOCAL RS485
DCD
POWER
RXD
RXD
DTR
CTS
TXD
TXD
RTS
TR+
TR-
_ +
+V
G
AI2
AO
AI1
+V
+V
+V
+V
G
G
G
J4 J2
8 = TXD
}
8TXD To R
RXD
9 = RXD
To T RS-232
NETWORK
Ext.
Powered
AI#2
(Example)
Simplified
Internally
Powered
AO (Examples) 1-5V AI#1 (Example)
4-20mA Analog Input Externally
Analog Output Wiring Diagram Powered
Wiring Diagrams 1-5V
Analog Input
Wiring Diagram
ControlWave XFC
74 Communication Ports
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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).
CW_10
Communication Ports 75
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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
February 2023
ControlWave CW_35
The ControlWave_35 (CW_35) is a DPC 3335 chassis and I/O upgraded with new
ControlWave CPU and communication boards.
I/O MODULE
I/O MODULE
I/O MODULE
I/O MODULE
I/O MODULE
I/O MODULE
NOTE: There is
I/O MODULE
no COM1, COM2
or COM7, COM8.
I/O MODULE
I/O MODULE
COM9 COM10
COM3 COM4
COM5 COM6
Ethernet Ethernet
Port 1 Port 2
CW_35
Communication Ports 77
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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.
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
I/O MODULE
no COM1, COM2
COM3 or COM4.
I/O MODULE
COM5 COM6
Ethernet
Port 1
CW_31
78 Communication Ports
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
COM3 (J1)
(RS485)
COM4 (J2)
(RS-485)
COM2 (J2)
(RS-232)
COM5 (J3)
(RS-232)
Ethernet
Port 1 (J3) COM6 (J4)
(RS-232)
Communication Ports 79
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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.
80 Communication Ports
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Protocol Reasons to Use Which software is used?
function block.
Communication Ports 81
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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.
82 Communication Ports
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Communication Ports 83
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Name Baud Bits Per Stop Parity Protocol Cable / Notes
Rate Character Bits Interface
switch SW1 on
ECOM board.
Serial 9600 8 1 NONE BSAP Slave/ Requires OPTIONAL —
Port ControlWave coaxial RF requires ECOM
COM6 Designer cable to Board in chassis slot
connect MDS / 3.
FreeWave®
spread See 2.3.3.5 in CI-
spectrum ControlWave
modem MICRO for radio
(radio). installation steps.
Serial 9600 8 1 NONE BSAP Slave/ RJ11 OPTIONAL —
Port ControlWave connector for requires ECOM
COM7 Designer connecting to Board in chassis slot
56K PSTN 3.
modem
Serial 9600 8 1 NONE BSAP Slave/ RS232 null OPTIONAL —
Port ControlWave modem cable requires ECOM
COM8 Designer Board in chassis slot
4.
Serial 9600 8 1 NONE BSAP Slave/ RS485 cable OPTIONAL —
Port ControlWave requires ECOM
COM9 Designer Board in chassis slot
4. Configured by
switch SW1 on
ECOM board
Serial 9600 8 1 NONE BSAP Slave/ Requires OPTIONAL —
Port ControlWave coaxial RF requires ECOM
COM10 Designer cable to Board in chassis slot
connect MDS / 4.
FreeWave®
spread See 2.3.3.5 in CI-
spectrum ControlWave
modem MICRO for radio
(radio). installation steps.
Serial 9600 8 1 NONE BSAP Slave/ RJ11 OPTIONAL —
Port ControlWave connector for requires ECOM
COM11 Designer connecting to Board in chassis slot
56K PSTN 4.
modem
Factory Defaults for ControlWave MICRO I/O Expansion Rack Serial Ports
Name Baud Bits Per Stop Parity Protocol Cable / Notes
Rate Character Bits Interface
Serial 9600 8 1 NONE Gould MODBUS RS232 null
84 Communication Ports
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Name Baud Bits Per Stop Parity Protocol Cable / Notes
Rate Character Bits Interface
Port Slave — RTU modem cable
COM1 mode.
Serial 115200 8 1 NONE BSAP Slave / RS232 null
Port ControlWave modem cable
COM2 Designer
Serial 115200 8 1 NONE BSAP Slave/ RS485 cable Configured via CPU
Port ControlWave switch SW3.
COM3 Designer
Serial 115200 8 1 NONE BSAP Slave/ RS232 null OPTIONAL —
Port ControlWave modem cable requires ECOM
COM4 Designer Board in chassis slot
3.
Serial 115200 8 1 NONE BSAP Slave/ RS485 cable OPTIONAL —
Port ControlWave requires ECOM
COM5 Designer Board in chassis slot
3. Configured by
switch SW1 on
ECOM board.
Serial 115200 8 1 NONE BSAP Slave/ Requires OPTIONAL —
Port ControlWave coaxial RF requires ECOM
COM6 Designer cable to Board in chassis slot
connect MDS / 3.
FreeWave®
spread See 2.3.3.5 in CI-
spectrum ControlWave
modem MICRO for radio
(radio). installation steps.
Serial 115200 8 1 NONE BSAP Slave/ RJ11 OPTIONAL —
Port ControlWave connector for requires ECOM
COM7 Designer connecting to Board in chassis slot
56K PSTN 3.
modem
Serial 115200 8 1 NONE BSAP Slave/ RS232 null OPTIONAL —
Port ControlWave modem cable requires ECOM
COM8 Designer Board in chassis slot
4.
Serial 115200 8 1 NONE BSAP Slave/ RS485 cable OPTIONAL —
Port ControlWave requires ECOM
COM9 Designer Board in chassis slot
4. Configured by
switch SW1 on
ECOM board
Serial 115200 8 1 NONE BSAP Slave/ Requires OPTIONAL —
Port ControlWave coaxial RF requires ECOM
COM10 Designer cable to Board in chassis slot
connect MDS / 4.
FreeWave®
Communication Ports 85
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Name Baud Bits Per Stop Parity Protocol Cable / Notes
Rate Character Bits Interface
spread See 2.3.3.5 in CI-
spectrum ControlWave
modem MICRO for radio
(radio). installation steps.
Serial 115200 8 1 NONE BSAP Slave/ RJ11 OPTIONAL —
Port ControlWave connector for requires ECOM
COM11 Designer connecting to Board in chassis slot
56K PSTN 4.
modem
Factory Defaults for ControlWave Gas Flow Computer Classic (GFC-CL) Serial Ports
Name Baud Bits Per Stop Parity Protocol Cable / Notes
Rate Character Bits Interface
Serial 115200 8 1 NONE BSAP Slave / RS232 null Can also serve as
Port ControlWave modem cable Local Port. Different
COM1 Designer connectors are
available depending
on usage.
Serial 9600 8 1 NONE BSAP Slave / RS232 null Can serve as either
Port ControlWave modem cable RS232 or RS485. If
COM2 Designer or RS485 cable using RS485, switch
SW4 used for
configuration. This
port supports radio
/ modem option.
Serial 9600 8 1 NONE BSAP Slave/ RS485 cable Configured via CPU
Port ControlWave switch SW3.
COM3 Designer
Factory Defaults for ControlWave Gas Flow Computer (GFC) / ControlWave Express /
ControlWave Express PAC Serial Ports
Name Baud Bits Per Stop Parity Protocol Cable / Notes
Rate Character Bits Interface
Serial 115200 8 1 NONE BSAP Slave / RS232 null Can also serve as
Port ControlWave modem cable Local Port. Different
COM1 Designer connectors are
available depending
on usage.
Serial 9600 8 1 NONE BSAP Slave / RS232 null This port supports
Port ControlWave modem cable radio / modem
COM2 Designer option.
86 Communication Ports
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Name Baud Bits Per Stop Parity Protocol Cable / Notes
Rate Character Bits Interface
Serial 9600 8 1 NONE BSAP Slave/ RS232 null Can serve as either
Port ControlWave modem cable RS232 or RS485. If
COM3 Designer or RS485 cable using RS485,
configured via CPU
switch SW3.
Factory Defaults for ControlWave Gas Flow Computer (XFC) Serial Ports
Name Baud Bits Per Stop Parity Protocol Cable / Notes
Rate Character Bits Interface
Serial 115200 8 1 NONE BSAP Slave / RS232 null Local Port
Port ControlWave modem cable
COM1 Designer
Serial 9600 8 1 NONE BSAP Slave / RS232 null Network Port
Port ControlWave modem cable
COM2 Designer
Serial 9600 8 1 NONE BSAP Master/ RS485 cable Configured as BSAP
Port ControlWave Master for
COM3 Designer communication
with 3808 MVT
Transmitter.
Communication Ports 87
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Name Baud Bits Per Stop Parity Protocol Cable / Notes
Rate Character Bits Interface
COM4 Designer or RS485 through W21 and
switch SW4 on
CMFIB. On original
RTU3310 known as
Port D.
Serial 9600 8 1 NONE BSAP Slave / RS232 null Configured by
Port ControlWave modem cable jumpers W9
COM5 Designer or RS485 through W15 and
switch SW3 on
CCPU board. On
original RTU 3310
known as BIP1.
Serial 9600 8 1 NONE BSAP Slave / RS232 null Configured by
Port ControlWave modem cable jumpers W16
COM6 Designer or RS485 through W22 and
switch SW4 on
CCPU board. On
original RTU 3310
known as BIP2.
88 Communication Ports
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Name Baud Bits Per Stop Parity Protocol Cable / Notes
Rate Character Bits Interface
3330 known as Port
C.
Serial 9600 8 1 NONE BSAP Slave / RS232 null Port 4 on the second
Port ControlWave modem cable CCB. Configured by
COM4 Designer or RS485 jumpers W9
through W16 and
switch SW3 on CCB.
On original DPC
3330 known as Port
D.
Serial 9600 8 1 NONE BSAP Slave / RS232 null Configured by
Port ControlWave modem cable jumpers W9
COM5 Designer or RS485 through W15 and
switch SW3 on
CCPU board. On
original DPC 3330
known as BIP1.
Serial 9600 8 1 NONE BSAP Slave / RS232 null Configured by
Port ControlWave modem cable jumpers W16
COM6 Designer or RS485 through W22 and
switch SW4 on
CCPU board. On
original DPC 3330
known as BIP2.
Serial 9600 8 1 NONE BSAP Slave / RS232 null Port 7 on the first
Port ControlWave modem cable CCB. Configured by
COM7 Designer or RS485 jumpers W17
through W23 and
switch SW2 on CCB.
On original DPC
3330 known as Port
G.
Serial 9600 8 1 NONE BSAP Slave / RS232 null Port 8 on the first
Port ControlWave modem cable CCB. Configured by
COM8 Designer or RS485 jumpers W24
through W30 and
switch SW4 on CCB.
On original DPC
3330 known as Port
H.
Serial 9600 8 1 NONE BSAP Slave / RS232 null Port 9 on the second
Port ControlWave modem cable CCB. Configured by
COM9 Designer or RS485 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
February 2023
Name Baud Bits Per Stop Parity Protocol Cable / Notes
Rate Character Bits Interface
I.
Serial 9600 8 1 NONE BSAP Slave / RS232 null Port 10 on the
Port ControlWave modem cable second CCB.
COM10 Designer or RS485 Configured by
jumpers W24
through W30 and
switch SW4 on CCB.
On original DPC
3330 known as Port
J.
90 Communication Ports
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Name Baud Bits Per Stop Parity Protocol Cable / Notes
Rate Character Bits Interface
through W24 and
switch SW4 on
CCPU. On original
DPC 3330 known as
Port BIP2.
Serial 9600 8 1 NONE BSAP Slave / RS232 null Port 9 on the CCB.
Port ControlWave modem cable Configured by
COM9 Designer or RS485 jumpers W16
through W23 and
switch SW2 on CCB.
On original DPC
3335 known as Port
I.
Serial 9600 8 1 NONE BSAP Slave / RS232 null Port 10 on the CCB.
Port ControlWave modem cable Configured by
COM10 Designer or RS485 jumpers W24
through W30 and
switch SW4 on CCB.
On original DPC
3335 known as Port
J.
Communication Ports 91
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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.
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
February 2023
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:
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
February 2023
94 Communication Ports
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Compiling
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
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
February 2023
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.
96 Compiling
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Conditional Logic
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.
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
February 2023
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
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Using LD:
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 left-
to-right and top-to-bottom.
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
February 2023
DataView
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).
DataView 101
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
In addition, you must have made the proper settings for PDD in the Resource Settings
dialog box (shown below):
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
February 2023
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
February 2023
104 DataView
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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).
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.
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.
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.
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
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.
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.
Force and Overwrite are ways to manually change the values of variables in the running
ControlWave project.
To remove the
force, click
Reset force.
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.
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
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].
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.
If you see
“Breakpoints
active” or
“Variables
forced” you
should check
the reset
boxes and
click “OK”.
Downloading
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.
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.
Downloading 113
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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).
114 Downloading
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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
'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.
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
February 2023
'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
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
February 2023
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 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.
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
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
To download the
bootproject (*.pro) at Click here to download your Click here to download
the same time as you compiled project. This is the actual just the compiled project
download the executable code which runs in the code into the bootproject
ControlWave project, ControlWave. The project code area of FLASH memory.
select this. executes in either SDRAM or SRAM. This is preserved in the
event of a power failure.
“Activate” copies
the bootproject
into SDRAM or
To download the zipped
SRAM (depending
ControlWave source file
on the platform).
(*.zwt) at the same time
This happens
as you download the
automatically on
ControlWave project,
power-up.
select this.
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
February 2023
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 119
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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
February 2023
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.
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 right-
click 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
February 2023
When the fields are completed, click Begin to start the download. The fields/buttons in this
dialog box are:
Field Description
Node 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
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Field Description
project includes multiple resources, each one has a different path, and you must choose
the appropriate one.
User Files Path 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).
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 The ControlWave can store user files (*.ZIP, *.HTML, etc.) in flash memory, for later
User Files 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.
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:
Downloading 123
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
startup specifies whether the system should perform a warm boot upon completion of
the download. startup must be either:
includezip specifies whether or not the Downloader should also download the zipped
ControlWave project (*.ZWT). includezip must be either:
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.
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”
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:
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:
124 Downloading
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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 is a valid username/password combination for this RTU. The user you specify
password must have sufficient privileges to perform the download.
Downloading 125
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
126 Downloading
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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.
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).
Level n
Master Port EBSAP Master Port
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.
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).
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.
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
Select EBSAP Line
BSAP line.
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).
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
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.
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 Choose either “_SLAVE_DEAD” or
OpenBSI’s DataView “_SLAVE_POLL_DIS” depending upon
or Harvester. which one you are registering.
c. The remaining
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.
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
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.
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.
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.
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 These numbers identify the registered array
EBSAP system variables for this 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.
_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
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.
Method 1:
Choose “VIRTUAL”
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.
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.
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.
COM2:
COM1:
LEVEL1 Local Addr: 1 VN1 Local Addr: 2 VN2 Local Addr: 3 VN3 Local Addr: 4 VN4
LEVEL2
RTU1 RTU127 RTU128 RTU254 RTU255 RTU381 RTU382 RTU400
Local Addr 1-127 Local Addr 1-127 Local Addr 1-127 Local Addr 1-19
Group Num: 0 Group Num: 1 Group Num: 2 Group Num: 3
LEVEL2
RTU401 RTU527 RTU528 RTU654 RTU655 RTU781 RTU782 RTU800
Local Addr 1-127 Local Addr 1-127 Local Addr 1-127 Local Addr 1-19
Group Num: 0 Group Num: 1 Group Num: 2 Group Num: 3
LEVEL2
RTU801 RTU927 RTU928 RTU1000
Local Addr 1-127 Local Addr 1-73
Group Num: 0 Group Num: 1
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.
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
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
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.
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.
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:
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.
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 re-
enter 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).
[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).
For details on the individual pages of the Flash Configuration Utility, see Chapter 5 of the
OpenBSI Utilities Manual (part number D301414X012).
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.
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.
2. Either click Operations Upload File or click the Upload File icon . The Choose File
dialog box opens.
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.)
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.
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
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.
Choose “Function Block” Enter a name for the function block here
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.
First, click on the “Paste” icon or Then position the image where you
click Edit Paste. want it, and click.
Now, copy the variables from the program into your new function block and re-define the
variables as necessary.
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.
To change a variable’s name, click on the To change a variable’s usage, click in the
variable in the “Name” column and make “Usage” column for the variable, then
the change. 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.
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.
Historical Data
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 OpenEnterprise™, 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.
Historical data is also frequently incorporated into trending packages to allow a graphical
representation of data from a given period of time.
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.
I/O Configurator
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.
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.
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.
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.
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 This lists all configurations in the current project. Select the I/O
Configurations Configuration Section for which you are defining the I/O.
NOTE: Typically, projects use a single I/O configuration section.
Available This lists all resources for the selected I/O configuration.
Resources 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.
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].
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
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.
Selected Boards This list allows the user to declare which boards reside in the
List 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.
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
CWM_AI6 ■ ■
CWM_AI8 ■ ■
CWM_AO4 ■ ■
CWM_BAT* ■ ■
CWM_DI16 ■ ■
Selected Displays all boards selected on the previous page. Click on a particular
Boards List 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.
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.
Start… End Displays the range of memory addresses used by the board.
Address
Slot Number 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.
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-to-
date 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 This determines how values of the I/O variables associated with this
as PDD OPC 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.
Analog Boards
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 When selected, will cause a variable to be created to store the
Status 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.
Top Range 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.
Set Actual Output When selected, this will cause a variable to be created which
Value displays the actual value which was written to the output pin.
Add Board Status When selected, will cause a variable to be created to store board
status information.
Add Last Operation When selected, will cause a variable to be created to store the
Status status of the last conversion operation information.
Calibration Error 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.
Board Time Out 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.
Mark All Pins Used When checked, will activate all pins on this I/O board. They will all
appear in RED.
Configure Hold When checked, enables other fields on the page for configuring a
Values 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.
Update Default When checked, allows the "User Configured Output" hold value to
Value be changed on-line; otherwise the hold value can only be set in
the I/O Configurator.
Hold Last Output 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.
User Configured When checked, allows the user to enter a value for this pin which
Output will be used as the hold value in the event there is a watchdog
When all pins have been configured, click on [Done]. You can then proceed to select and
configure pins for another board.
Digital Boards
List of Displays a list of the individual pins (I/O points) on this process I/O board. If
Available the pin is displayed in RED, that pin is active. If the pin is left grayed out,
Pins 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 Sets the initial value for this digital output (DO). NOTE: This option is not
Status available for digital inputs.
Enable Turns on or off the counters associated with the digital input (DI) process
Counter I/O board. Counters are used in certain applications. For example, if a mixed
Processing 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.
Mark All When checked, will activate all pins on this I/O board. They will all appear in
Pins Used RED.
Turn off This option is only available on certain ControlWave MICRO boards. When
Leds 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 When set to ON, allows the number of counts to be reset. This occurs
Point automatically whenever the board is restarted.
Count
Set No Init When checked, counters on the board will NOT be initialized to zero on a
Counter warm start of the unit.
Flag
Add Time When selected, will cause a variable to be created to store the timestamp
Stamp of of the last sample collected by this I/O board.
Last
Sample
When all pins have been configured, click on [Done]. You can then proceed to select and
configure pins for another board.
IOCONFIG-HSC4.CDR
List of Displays a list of the individual channels (counter I/O points) on this process
Available I/O board. If the channel is displayed in RED, that channel is active. If the
Channels channel is left grayed out, that channel is considered unused.
Channel Is a name identifying this channel. This name is used as a variable name to
Name reference the channel in your POU.
Add Input When selected, displays the TRUE/FALSE value of the channel.
Channel
State
When selected allows the number of counts to be reset. Choose either ON
Reset
Point or OFF for the initial value on startup. A reset occurs when you choose ON;
Count software then turns this OFF. NOTE: Reset occurs automatically whenever
the board is restarted.
Select Specifies how the board will operate for this channel:
Filter
'None' Defaults to 30 millisecond filtering.
'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 When selected, will cause a variable to be created to store the timestamp
Stamp of of the last sample collected by this I/O board.
Last
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 warm start of the unit. Requires 04.41 or newer firmware.
Flag
Turn off (Not Shown) This option is only available on certain ControlWave MICRO
Leds 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.
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).
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.
Unit Number Specifies the Modbus unit address number associated with this
ControlWave Remote Ethernet I/O unit.
Add Driver When selected, will cause a variable to be created to store I/O driver
Status status information.
Activate Creates / disables a variable which allows the user to control the
Counters starting / stopping of the counters in the ControlWave Remote
Ethernet I/O board. These counters are used with digital inputs (DI).
Add Freshness When selected, will cause a variable to be created to store a ‘freshness’
Counter 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 (For RIO 4RTD - 4 Digital Input Board ONLY) - When checked, causes
value to tenths values from the Resistance Temperature Device board to be divided by
10, thereby providing greater precision.
[Show Pins], When clicked on, calls up a dialog box for configuring the individual
[Analog Pins], pins for the board.
[Digital Pins]
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.
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.
Add Driver When selected, will cause a variable to be created to store I/O driver
Status status information.
Add Freshness When selected, will cause a variable to be created to store a ‘freshness’
Counter 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 This is the total number of bytes which will be reserved inside the
Size 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 The first register in the third-party Modbus device which you will be
Register '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.
Function The Modbus function code. Only the Modbus function codes listed,
Code below, can be used through these boards:
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.
datatype is one of the IEC 61131-3 data types, e.g. BOOL, INT, etc.
usage specifies the scope of how the variable is used, e.g. VAR,
VAR_GLOBAL, etc.
location_prefix describes where this data will be located. It is one of the following
letters:
size_prefix 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.)
address 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.
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.
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.
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 Valid for this Notes
channel
Not Configured Any The channel is not configured.
Analog Input Any Valid only for a single 4-20 mA device on this channel (point-to-
point). 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”.
Analog Output 1 or 2 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”.
HART Multi- Any Up to five multi-dropped HART devices allowed per channel
drop (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”.
BTI Any 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”.
I/O Mapping
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
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.
Note:
The Input or Output map may be shortened to reduce the number of points processed.
DATA_TYPE: BYTE
DRIVER_PAR2: Unused
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).
To provide consistent scaling values across Application Warm Starts, this I/O region should
be marked as ‘RETAIN’.
Input Map: Max Size: 72 bytes (Extra space reserved for future expansion up to
AO16)
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).
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%.
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.
DRIVER_NAME ‘CW_RTD8’
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.
* 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.
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.
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_PAR1: always 0
DATA_TYPE: BYTE
DRIVER_PAR1: always 0
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
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_16AI’
DRIVER_PAR1: always 0
To provide consistent scaling values across Application Warm Starts, this I/O region should
be marked as RETAIN.
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: ‘BB_8AI4AO’
DRIVER_PAR1: always 0
To provide consistent scaling values across Application Warm Starts, this I/O region should
be marked as RETAIN.
DRIVER_PAR1: always 0
To provide consistent scaling values across Application Warm Starts, this I/O region should
be marked as RETAIN.
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: ‘BB_8HSC’
DRIVER_PAR1: always 0
Modbus Function Codes: 04 to read HSC value @ 1 … 8 (must read 2 16-bit register
pairs per counter)
DATA_TYPE: BYTE
DRIVER_PAR1: Low Byte — Function Code (see below) - High byte undefined
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.
DATA_TYPE: BYTE
DRIVER_PAR1: Low Byte — Function Code (see below) - High byte undefined
Note:
For proper functioning of the RTDs, the Remote I/O Toolkit must be used to set the proper
scaling range.
DRIVER_NAME: ‘BB_4RTDI’
DATA_TYPE: BYTE
DRIVER_PAR1: always 0
Driver status for each I/O Expansion Rack board type is stored as an USINT.
DATA_TYPE: BYTE
Also, the I/O fetches should be programmed to only occur as fast as needed (via task
association).
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’.
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’.
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’
Note:
This is a virtual board; not a physical board in the controller.
DRIVER_NAME: ER_STAT
DATA_TYPE: BYTE
DRIVER_PAR1: N/A
2-3 Spare
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.
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.
* 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.
Offset 0 of the input map defines the board status. All boards support bit 0, which is set if
the board is not present.
DATA_TYPE BYTE
CWM_MD — ControlWave MICRO - Mixed Digital Board 12 Digital Input Pins / 4 Digital
Output Pins
DRIVER_NAME ‘CWM_MD’
DATA_TYPE BYTE
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.
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.
CWM_MA — ControlWave MICRO - Mixed Analog Board - 6 Analog Input Pin / 2 Analog
Output Pin Board
DRIVER_NAME ‘CWM_MA’
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.
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.
Due to the expense of performing the A-to-D conversion for this value, this input should be
fetched only when needed.
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_NAME ‘CWM_SCB’
Transmitter types:
** 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.
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.
Switch errors result from any of the following three error cases:
Note: For multi-drop, both SW3 and SW4 must be set as inputs.
Neither can be outputs.
88-99 Padding — Align AO actual at offset = 100
100 HIB_x_y_ACTUAL AO - Actual value written to board. (4-byte float - REAL).
104, 108, .. HIB_x_y_ACTUAL AO - Actual value for points 2 to 16
160
Offset 0 of the input map defines the board status. All boards support bit 0, which is set if
the board is not present.
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 ‘CWM_RTU’
DATA_TYPE DWORD
Transmitter types:
** 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.
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.
.* 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.
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
Transmitter types:
** 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.
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.
Note:
The I/O on this board may be read / written at rates up to 20 times per second (50
Millisecond intervals).
DRIVER_NAME ‘CWM_EIO’
DATA_TYPE DWORD
10 EIO_x_1_DO_I Read-back of current value for DO1 (in bit 0) to DO2 (in bit 1). DIO1
EIO_x_2_DO_I as DO (in bit 2), DIO2 as DO (in bit 3).
12 EIO_x_TIMESTAMP Timestamp of last sample from HSC. This is the number of
milliseconds since boot.
16 EIO_x_1_COUNTER Number of counts since COLD start or clear (Channel 1)
20 EIO_x_2_COUNTER Counts for Channel 2
32 EIO_x_1_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.
36, 40 EIO_x_2_AI Value for AI2, AI3
EIO_x_3_AI
64 EIO_x_1_AO_ACTUAL Value actually written to AO1— clamped to 0-100%.
80 EIO_x_1_STATE Current status of HSC1 (in bit 0) to HSC2 (in bit 1).
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.
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.
** 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.
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.
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.
Offset Default Variable Name where x is the board slot and y Description
is the pin number.
0 DI16_x_y_RESET_COUNT Counter reset flags, DI1 (in bit 0) to DI8 (in bit 7)
1 DI16_x_y_RESET_COUNT Counter reset flags, 9 to 16.
2.1 DI16_x_y_NOINIT Maintain Counts across Warm Start (TRUE =
maintain)
DATA_TYPE BYTE
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.
64 LL4_x_y_MODE Point type for LL1, see table below for type codes.
65, 66, LL4_x_y_MODE Point types for LL2, LL3, and LL4.
67
Note:
Low speed counter processing is automatically enabled for all points.
DATA_TYPE BYTE
64 RXLL_x_y_MODE Point type for LL1, see table below for type codes.
65, 66, RXLL_x_y_MODE Point types for LL2, LL3, and LL4.
67
DRIVER_NAME ‘RXX_STAT’
ERM_DO16 — ControlWave MICRO I/O Expansion Rack 16 Digital Output Pin Board
DRIVER_NAME ‘ERM_DO16’
DATA_TYPE BYTE
ERM_DI16 — ControlWave MICRO I/O Expansion Rack 16 Digital Input Pin Board
DRIVER_NAME ‘ERM_DI16’
ERM_MD ControlWave MICRO I/O Expansion Rack Mixed Digital (12 DI / 4 DO) Board
DRIVER_NAME ‘ERM_MD’
DATA_TYPE BYTE
ERM_AI8 — ControlWave MICRO I/O Expansion Rack — 8 Analog Input Pin Board
DRIVER_NAME ‘ERM_AI8’
ERM_AO4 — ControlWave MICRO I/O Expansion Rack - 4 Analog Output Pin Board
DRIVER_NAME ‘ERM_AO4’
ERM_AI6 — ControlWave MICRO I/O Expansion Rack 6 Analog Input Pin Board
DRIVER_NAME ‘ERM_AI6’
ERM_MA — ControlWave MICRO I/O Expansion Rack - Mixed Analog (6 AI / 2 AO) Board
DRIVER_NAME ‘ERM_MA’
DRIVER_NAME ‘ERM_MIX’
DATA_TYPE DWORD
ERM_HSC4 — ControlWave MICRO I/O Expansion Rack - 4 Channel High Speed Counter
Board
DRIVER_NAME ‘ERM_HSC4’
Note: Data starting at offset 12 will only be refreshed as fast as a 1 second interval.
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.
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.
I/O Simulator
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 MICRO-
series of controllers will not execute in the I/O Simulator.
Choose “Simulation 1”
Choose “Simulation 1” in the Resource Settings dialog box, and click on [OK].
The I/O Simulator will appear, however, no I/O boards will be displayed, yet.
The Download dialog box will appear. Click the [Download] button in the Project section of
the Download dialog box.
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.
Board status indicator. Shows red
when board simulation is
disabled; green when board
Slot the board Type of board simulation is active. Click on it to
occupies change the board status.
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.
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.
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.
Configuring a Pin
For boards which simulate input
values, you can change the value /
status of a particular pin, by right-
clicking 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.
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.
Method 1:
Click “Settings”.
3. In the Performance Options dialog box, click the Data Execution Prevention tab.
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:
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.
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
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 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:
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.
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.
Node Name IP Address, Subnet Mask: Mask Says This Node Can Send Messages to
All Nodes with Addresses:
NHP1 IP ADR: 100.22.49.1 100.22.49.yyy
MASK: 255.255.255.0 where yyy is an integer from 0 to 255.
WALNUT_AVE IP ADR: 100.22.49.178 100.22.yyy.zzz
MASK: 255.255.0.0 where yyy and zzz are integers from 0 to
255.
OAK_STREET IP ADR: 100.22.50.33 100.22.yyy.zzz
MASK: 255.255.0.0 where yyy and zzz are integers from 0 to
255.
ELM_STREET IP ADR: 100.22.51.14 100.22.yyy.zzz
MASK: 255.255.0.0 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.
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.
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.
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).
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
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.
IP Parameters
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:
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.
UDP Ports:
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
February 2023
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.)
If you choose to leave SNMP processing enabled, you should be aware of the following
things:
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
February 2023
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
February 2023
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.
10.0.0.200 172.16.0.200
GATEWAY 1
10.0.0.2 172.16.0.2 ControlWave
ControlWave
10.0.1.200 GATEWAY 2 172.16.1.200
304 IP Parameters
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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
February 2023
306 IP Parameters
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
IP Ports - Ethernet
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:
Specify an
IP address
and an IP
mask.
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.)
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:
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.
IP Ports — PPP
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.
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.
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.
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.
IP Routes
The IP Routes page is accessible from the "IP Routes" tab in the Flash Configuration Utility.
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.
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).
10.0.0.5 172.16.0.5
ControlWave 10.0.0.203 GATEWAY 172.16.0.203 ControlWave
10.0.0.6
172.16.0.6 ControlWave
ControlWave
IP Routes 311
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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
February 2023
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
February 2023
314 IP Routes
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Libraries
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.
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
February 2023
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.
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.
316 Libraries
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Note
All parameters for the function blocks in the ACCOL3 Firmware Library are forced by the
system to be RETAIN variables.
The ACCOL3 Firmware library will now appear in the project tree, under “Libraries”.
Libraries 317
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
318 Libraries
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Memory Usage
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.
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.
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).
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.
BOOT FLASH
512 K
Audit/Archive Def
Soft Switches
User Accounts
Port Config.
Historical Data
(Audit / Archive) Historical Data
(Audit / Archive)
RETAIN Area - All
variables marked as
"RETAIN" in project
Zipped copy
of project incl.
Static Memory
graphics, etc.
Area - Starts
(*.Zwt)
at address
%3.100000
Executing PROJECT
incl. all variables BOOT PROJECT
not stored in SRAM Copied on
re-start
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).
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.
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.
OR OR
Power switch Controller watchdog failure
and restart is attempted System power is
turned from "O" restored after a
to "1" by the user (Switch SW1-1 must be set
to ON - Watchdog enable) power failure
YES
Enter Recovery Mode and Is the unit set for recovery mode? YES
wait for system firmware to YES (Switch SW3-3 in ON position. See Table 2-2 of
be loaded via Hyperterminal Should only be used when user CI-ControlWave
(Indication: An "86" appears wants to perform a field upgrade for info. on this switch
on the display) of system firmware)
Can an application
warm start be performed?
Load system fiirmware as APPLICATION COLD START
described in Chapter 2 of
(i.e. NO SYSTEM COLD
hardware manual (CI-ControlWave) NO
START, there is saved data All variables in the RETAIN
in SRAM, and there is no area of SRAM are set to their
NO
version mismatch between initial values, and the
the data in SRAM and BOOT PROJECT is started from
PROJECT) the beginning.
Initialize internal system devices
(Real Time Clock, Math co-processor, etc.)
BOOT FLASH
512 K
Audit/Archive Def
Soft Switches
User Accounts
Port Config.
Historical Data
(Audit / Archive) Historical Data
(Audit / Archive)
RETAIN Area - All
variables marked as
"RETAIN" in project
Zipped copy
of project incl.
Static Memory
graphics, etc.
Area - Starts
(*.Zwt)
at address
%3.100000
Executing PROJECT
incl. all variables BOOT PROJECT
not stored in SRAM Copied on
re-start
BOOT FLASH
512 K
Audit/Archive Def
Soft Switches
User Accounts
Port Config.
Static RAM - 2 MB
Historical Data
Unreported (Audit / Archive)
(Pending) Alarm
Messages
Historical Data
(Audit / Archive) Zipped copy
of project incl.
RETAIN Area - All graphics, etc.
variables marked as (*.Zwt)
"RETAIN" in project
Static Memory
Area - Starts BOOT PROJECT
Copied on
at address re-start
%3.100000
BOOT FLASH
512 K
Audit/Archive Def
Soft Switches
User Accounts
Port Config.
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).
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.
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.
Total program size (in bytes). NOTE: Number of bytes of data (both RETAIN
May not be equal to the sum of and non-RETAIN) used by the
individual lines due to system variables for these functions/function
overhead. 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).
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.
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.
If you set this value to a number that If you set this value too large, the
system reduces it proportionally, as
is significantly larger than you need,
you will waste the excess amount. needed.
Modbus Configuration
Configuring Your ControlWave Controller as a Modbus
Master Device
Important
This example assumes you are familiar with Modbus concepts.
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.
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.
ianyElement2 INT Coil / Register Address — This entry specifies the starting address for
(Required) 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.
ianyElement3 INT Data Count — A value specifying the number of coils, inputs, or
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.
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.
odiStatus DINT Status Codes — Status or error codes for this list. See on-line help for
details.
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.
Modbus Ports
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.
Baud Rate Indicates the baud rate used by this Modbus protocol. The default
value for baud rate is 9600.
Bits Per Char 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.
Stop Bits Indicates the number of stop bits per character. The default is 1.
Parity Specifies either ODD, EVEN, or NONE for the parity. The default is
NONE.
Message Type Specifies the type of data to be transmitted. Valid values are RTU
(binary) or ASCII.
Modbus Store & Activates the Modbus Store and Forward feature (only for Modbus
Forward 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
Activate Store & online help for more information on configuring the Modbus store
Forward and forward feature
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.
[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.)
Security
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.
Security 345
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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 Description
Read Data Value Allows this user to read data values from this controller.
Update Data Value Allows this user to change data values in this controller.
Update Signal Attributes Allows this user to modify the status of inhibit / enable flags
in the controller.
Read Flash Files via FTP 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
Security 347
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Privilege Description
(*.ZWT), etc.
Change / Del Flash Files via FTP 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.
Read Historical Data Allows this user to view historical data (Audit / Archive
information) from the controller, either via web pages, or
OpenBSI DataView.
Change Last Read Pointers in Audit Allows the user to delete Audit Trail data from the
Info controller.
Change / Delete Historical Allows this user to add, change or delete historical
Definitions definitions via the Flash Configuration Utility.
Add / Change / Del User Security Info Allows this user to add, change, or delete security
configuration information via the Flash Configuration
Utility.
Modify Soft Switches Allows this user to change Soft Switch values on the soft
switches page of the Flash Configuration Utility.
Run Diag to read Memory Allows this user to run diagnostics to read memory at the
controller.
Run Diag to write Memory Allows this user to run diagnostics to write to memory at
the controller.
Read Stat / Diag Info Allows this user to view communication statistics and other
information on the Statistics web pages.
Reset Stat / Crash Blocks Allows this user to reset statistics and crash block areas on
the Statistics web pages.
Read Application Values Allows this user to read values using the ControlWave
Designer OPC Server.
Write Application Values Allows this user to modify values using the ControlWave
Designer OPC Server.
Full Application Access 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.
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
February 2023
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.)
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.
To import a master security configuration file, click Load from Master File.
Click the Transfer to RTUs button to open the Transfer to RTUs dialog box.
Security 349
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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
February 2023
other Tools and then click Transfer. The tool sequentially removes the lockout from each
RTU in the Selected RTUs list.
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 351
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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.
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
February 2023
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
February 2023
354 Security
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
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.
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.
CHALLENGE HANDSHAKING
AUTHENTICATION PROTOCOL (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
2 Username / Password
combination transmitted
'in the clear' to PAP server.
The message is vulnerable
to interception by an outside
party during transmission.
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)
To implement SAv5 in the ControlWave platform, you must create an application that
includes the required structures for DNP3 communications and secure authentication.
ControlWave Designer online help includes topics that describe how to configure DNP3
and SAv5. ControlWave Designer includes a sample application as a starting point. Once
you configure the application, download it, and store the DNP3 key used for SAv5 there
are other things you need to consider:
DNP3 makes no use of the PDD and leaving variables in the PDD would allow BSAP
access.
Require Physical-Access-Only for non-SCADA Communications-
OpenBSI/ControlWave Designer connections to the device do not support secure
authentication. Therefore, once your application is complete, tested, and
downloaded, you should lock-down the device to prevent download of an application
either from ControlWave Designer or from the OpenBSI 1131 Downloader.
Communication via ControlWave Designer should only occur when you have direct,
physical access to the device. Presumably you would also limit direct physical access
by mounting the device in a locked control room, or locked tamper-resistant
enclosure.
On the PSSM module, On the PSSM module, Set CPU switch SW1-1 to
turn the key to the RUN Set SW1-1 (the upper the OFF position and SW1-
position, and then DIP switch) to the Open 2 to the ON position to
(right) position and
remove the key and keep SW1-2 (the lower DIP place the RTU in Local
it in a safe place. This switch) to the Closed mode, which is used for
prevents downloading an (left) position to place normal running
application using the ControlWave Micro operations.
ControlWave Designer or in Local mode, which is
used for normal running
OpenBSI, operations.
Set switches to disable remote upgrade of system firmware and to prevent changes to
soft switches:
Set CPU switch SW1-2 to Set CPU switch SW2-2 Set CPU switch SW2-2
OFF to lock soft switches. to OFF to lock soft to OFF to lock soft
switches. switches.
Set CPU switch SW3-2 to
ON to disable remote Set CPU switch SW2-6 Set CPU switch SW2-6
system firmware upgrades. to OFF to disable remote to OFF to disable remote
system firmware system firmware
upgrades. upgrades.
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".
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.
Click OK to finish.
Once your completed project has been downloaded into the ControlWave, it executes only
when triggered by the specified condition.
System Variables
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.
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
The next several system variables are created for the second Task in the system:
_ALARMS_IBP_DEST1 %MX 3.96.0 BOOL 4.20 Alarms are present, that are to be shipped
to Alarm Destination 1.
_ALARMS_IBP_DEST2 %MX 3.96.1 BOOL 4.20 Alarms are present, that are to be shipped
to Alarm Destination 2.
_ALARMS_IBP_DEST3 %MX 3.96.2 BOOL 4.20 Alarms are present, that are to be shipped
to Alarm Destination 3.
_ALARMS_IBP_DEST4 %MX 3.96.3 BOOL 4.20 Alarms are present, that are to be shipped
to Alarm Destination 4.
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.
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.
Port 1 - offsets 4010-4019: SysVar Wizard selects from the following parameters according
to the port type.
String Data:
Redundancy parameters: (See ControlWave Redundancy Setup Guide (D5123) for details.)
_SLAVE_PORT %MW 3.8000 : UINT := 1 2.0 Port number for the network slave port. Valid
values are:
_SLAVE_DEAD element TRUE = Slave Node Dead; TRUE = Slave Node Alive;
FALSE = Slave Node Alive FALSE = Slave Node Dead
_SLAVE_POLL_DIS element TRUE = Do NOT poll this node; TRUE = Poll this node;
FALSE = Poll this node FALSE = Do NOT Poll this node
_Px_DEAD_ARRAY element TRUE = EBSAP Slave Node Dead; TRUE = EBSAP Slave Node Alive;
FALSE = EBSAP Slave Node Alive FALSE = EBSAP Slave Node Dead
_Px_DISABLE_ARRAY element TRUE = Do NOT poll this EBSAP node; TRUE = Poll this EBSAP node;
FALSE = Poll this EBSAP node FALSE = Do NOT Poll this EBSAP node
_P1_TIMEOUT %MD 3.8384 : DINT := 500; 2.0 In milliseconds. Link level response
timeout. This timeout value must be set
approximately 50 ms higher than the
facing slave's Message Write Delay.
_P1_CYCLE_INT %MD 3.8388 : DINT 4.20 The interval (in milliseconds) at which
DTR is enabled (Fast Duty Cycle).
_P1_CYCLE_TIMEO %MD 3.8392 : DINT 4.20 Fast duty cycle timeout.
_P1_WRITE_TMO %MD 3.8396 : DINT := 0 2.0 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.
_P1_LOW_SL %MB 3.8400 : SINT := 0 2.0 Output parameter. Set to the value from
the flash parameter. It is the lowest
slave Address for this port.
_P1_HIGH_SL %MB 3.8401 : SINT := 0 2.0 Output parameter. Set to the value from
the flash parameter. It is the highest
slave Address for this port.
_P1_VSAT_MIN_RESP %MD 3.8402 : INT 4.40 The minimum period of time that a
VSAT Slave Port will wait before
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
_P1_RBE_STATE %MB 3.8432 SINT 4.60 Indicates the current state of this RBE
port. See the ‘RBE’ function block online
help to learn the meaning of the
number.
_P1_MAX_SLAVES %MD 3.8440 USINT 4.50 Maximum number of slaves allowed
below a virtual node.
_P1_TOP_LEVEL_NODES %MD 3.8441 USINT 4.50 The number of slaves under a master (or
virtual nodes under an Emaster.)
_P1_TOTAL_NODES %MD 3.8442 : INT 4.50 Total number of slaves on this port.
_P1_DEAD_ARRAY %MD 3.8444 : INT 4.50 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
logic for interpreting the BOOL can be
reversed via _BSAP_FLAG_SENSE.
_P1_DISABLE_ARRAY %MD 3.8446 : INT 4.50 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
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.
Now click on the ‘Type’ field, and a list box will appear. Choose ‘INT’ because that is
the type specified in the table.
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.
Open BSI: Specify the node name of the ControlWave to which you want to
communicate for the Argument String.
Example: CWM2
Serial: Specify the PC communication port, baud rate, and timeout (in milliseconds).
Click OK when you complete the argument string. This calls up the Choose Display Type
dialog box.
If you want to view variables for If you want to view variables for
a task other than Task 1, choose a port other than Port 1, choose
it here. 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.
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.
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.
Click on [Next>]
When the Variable Extension Wizard first starts it will compile your ControlWave project.
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.
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.
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.
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.
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
1. Using Alarm function blocks (See the Alarm Configuration section, earlier in this
manual)
2. Using the Variable Extension Wizard
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’.
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’.
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.
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.
Alternatively, you can specify a variable name in the field, which will hold the units text.
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.
The text now changes color from green to black, and can be downloaded as if it was
entered directly in the Variable Extension Wizard.
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.
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:
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.
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.
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.
__LISTS.INI
*LIST listnumber
variable1
variable2
:
variablen
For example:
*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
__RBE.INI
variable1 [deadband]
variable2 [deadband]
:
variablen [deadband]
where:
variable1 – are the names of variables you want marked for RBE
variablen collection.
Example:
@GV.TANK_LEVEL @GV.TANK_LVL_DB
@GV.PRESSURE_NOW 10
__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
mm/dd/yy hh:mm:ss 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.
variable_type the type of the alarm variable. This can be any one of the
following:
Event (Evt)
Operator Guide (OpG)
Non Critical (NCrit)
Critical (Crit)
Example:
[Version]
ProjName=bktest1
Build=7
Date=11:25:16 01-21-08
NumAlms=3
[SIG_5]
[email protected]_CURRENT
AI=1
[SIG_1]
[email protected]_1
Alarm=Log_True
LogPri=0
Units=START/STOP
[SIG_2]
[email protected]_CURRENT
Desc=CURRENT PRESSURE READING
Units=PSI
[SIG_3]
[email protected]_CURRENT
Alarm=Analog
HiPri=2
[email protected]_HI_LIM
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.
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:
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
Check RETAIN if you Check PDD if you Check OPC if you want to
want to keep the want to collect this export this variable for use
variable in retain variable via OpenBSI in an HMI database such as
memory. utilities such as in an OpenEnterprise Server.
DataView.
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.
Local variables:
are only used in a single POU of your project
they are unknown to all other POUs in your project
are declared in the worksheet of the POU in which they are used
Usage shows
whether this variable
is used locally or Check RETAIN
globally if you want to
Data Type Optional description keep the
Initial value variable in
Variable (used as a comment of the
in the program) retain memory.
name variable
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.
AT %locationsize. Address
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
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:
User Defined Data Types are data types created by the user, such as ARRAYs.
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.
COMPRESSOR_4_STATUS
_PUMP_START
tank_level_hi_alarm
Here are some illegal variable names, and the reason they are illegal:
Note: Some Controller types listed above have been discontinued, though they may still be
installed in the field.
CWP 02.00.00 IPC_30 3.0 4.02 New features include BSAP Master support, IP and BSAP client-server,
LPS 02.00.00 or newer generic serial protocol, and the following new function blocks:
Released on
November 20, ● AGA3 ● AGA8DETAIL
2001 ● GENERIC_SERIAL ● AGA3TERM
● CLIENT ● ISO5167
● AGA5 ● CRC
● AGA7 ● FPV
● REDUN_SWITCH (currently unused)
● SERVER
CWP 02.01.00 IPC_30 3.0 4.02 Maintenance — No new features
LPS 02.01.00 or newer
Released on
December 18,
2001
CWP 02.10.00 IPC_30 3.0 4.1 or Maintenance — No new features
LPS 02.10.00 newer
Released on April
1, 2002
CWP 02.11.00 IPC_30 3.0 4.2 or Maintenance — No New Features
LPS 02.11.00 newer
Released on May
28, 2002
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 5.0 or New System Variables including:
LPS 03.10.00 newer ● _pn_IMM_DIS.
CWR 03.10.00 ● _USE_ACCOL_NAME
Released on May
15, 2003 Function Block Library now called ‘ACCOL3’.
Numerous enhancements and corrections.
CWP 03.11.00 IPC_33 3.3 5.0 or Only change from previous version is to support ControlWave FLASH
LPS 03.11.00 newer upgrade. Previous 4MB of FLASH was available. Now 8MB is supported.
CWR 03.11.00 (ControlWave only.) This change also required boot firmware to be
Released on June upgraded CWB04.
5, 2003
CWP 04.00.00 IPC_33 for CWP, 3.3 5.1 or First release of ControlWave Micro (CWM firmware).
LPS04.00.00 LPS, and CWR newer New function blocks added:
CWM04.00.00 ● DBLOAD ● DIAL_CTRL
CWR04.00.00 ARM_L_33 for
Released on CWM New system variables added:
September 5, ● _ALARMS_PRESENT ● _Px_DIAL_ACTIVE
2003 ● _AUD_ALM_PRESENT ● _Px_DIAL_PORT
● _AUD_EVT_PRESENT ● _TOTAL_ALARMS
● _BSAP_FLAG_SENSE ● _TOTAL_AUD_ALARMS
● _NHP_IGNORE_NRT ● _TOTAL_AUD_EVENTS
● _NHP_IGNORE_TS ● _USE_ACCOL_NAMES
CWP 04.20.00 IPC_33 for CWP, 3.3 5.3 or First release for ControlWave EFM (CWE).
LPS04.20.00 LPS, and CWR newer Numerous enhancements, plus:
CWM04.20.00
CWR04.20.00 ARM_L_33 for New function blocks:
CWE04.20.00 CWM and CWE ● DISPLAY ● PORTCONTROL
Released on
March 19, 2004 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
CWP 04.30.00 IPC_33 for CWP, 3.3 5.3 or Larger historical archive files supported.
LPS04.30.00 LPS, and CWR newer
CWM04.30.00
CWR04.30.00, ARM_L_33 for
CWE04.30.00 CWM and CWE
Released on June
10, 2004
CWP 04.31.00 IPC_33 for CWP, 3.3 5.3 or Maintenance release
LPS04.31.00 LPS, and CWR newer
CWM04.31.00
CWR04.31.00 ARM_L_33 for
CWE 04.31.00 CWM and CWE
Released on
August 19, 2004
CWP 04.32.00 IPC_33 for CWP, 3.3 5.3 or Maintenance — No new features
LPS04.32.00 LPS, and CWR newer
CWM04.32.00
CWR04.32.00 ARM_L_33 for
CWE04.32.00 CWM and CWE
Released on
October 8, 2004
Modifications:
● ARCHIVE function block: Mode 8 added.
● Custom - Modbus Enron mode for date/time format added.
CWP 05.10.00 IPC_40 for CWP, 4.7 5.7 New function blocks:
LPS05.10.00 LPS, and CWR Service ● FIELDBUS
CWM05.10.00 Pack 2 ● LIQTAB59D (In liquids library)
CWR05.10.00 ARM_L_40 for ● LIQTAB60D (In liquids library)
CWE 05.10.00 all others
CWI 05.10.00 New library: FB_RETAIN
CWX05.10.00
C_305.10.00 Upgrades to new standards for AGA8Gros and ISO5167
C_105.10.00
CMR05.10.00 Archive files now support ASCII data.
E1S05.10.00
E3S05.10.00 Various minor enhancements.
C5R05.10.00
Released
September 4,
2009
CWP 05.50.00 IPC_40 for CWP 5.0 OpenBSI New function blocks:
CWM05.50.00 5.8
CWE 05.50.00 ARM_L_40 for Service ● IEC62591
CEW05.50.00 all others Pack 2 ● AGA3SELECT
CWX05.50.00
C_305.50.00
C_105.50.00
CMR05.50.00
E1S05.50.00
E3S05.50.00
C5R05.50.00
Released July 31,
2012
CWP 05.60.00 IPC_40 for CWP 5.35 5.9 New function blocks:
CWM05.60.00 RBE_DISABLE
CWE 05.60.00 ARM_L_40 for WATCHDOG
CEW05.60.00 all others
CWX05.60.00 New version of NIST23 library
C_305.60.00 DNP3 enhancements
C_105.60.00
CMR05.60.00
E1S05.60.00
E3S05.60.00
C5R05.60.00
Released March 6,
2014
CWP 05.72.00 IPC_40 for CWP 5.35 5.9 Maintenance Release — No new features
CWM05.72.00 Service
CWE 05.72.00 ARM_L_40 for Pack 1
CEW05.72.00 all others
CWX05.72.00
C_305.72.00
C_105.72.00
CMR05.72.00
E1S05.72.00
E3S05.72.00
C5R05.72.00
Released April 1,
2015
CWP 05.73.00 IPC_40 5.35 5.9 Maintenance Release — No new features
Released April 23, Service
2015 Pack 1
CWM05.74.00 ARM_L_40 5.35 5.9 Maintenance Release — No new features
Released July 1, Service
2015 Pack 1
CWP 05.75.00 IPC_40 for CWP 5.35 5.9 Maintenance Release — No new features
CWM05.75.00 Service
CWE 05.75.00 ARM_L_40 for Pack 2
CEW05.75.00 all others
CWX05.75.00
C_305.75.00
C_105.75.00
CMR05.75.00
E1S05.75.00
E3S05.75.00
C5R05.75.00
Released October
1, 2015
Released
December 22,
2021
CWP 06.10.00 IPC_40 for CWP 5.35 5.9 Removed support for DNP3 SAv2 secure authentication.
CWM06.10.00 Service
E1S06.10.00 ARM_L_40 for Pack 3 Added support for DNP3 SAv5 secure authentication.
E3S06.10.00 all others
CMR06.10.00 DNP3 events stored in archive files are now removed from the archive
C5R06.10.00, after collection by the host session.
CEW06.10.00
Released February
2023
Virtual Ports
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.
For full details on this subject, please refer to the online help for the VIRT_PORT function
block.
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.
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.
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:
Once you
select an item,
you can
specify the
value in the
corresponding
field.
These fields
apply to VSAT
Slave Ports.
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.
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:
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 pop-
up menu. Internet Explorer will be
started, and whichever startup web
page associated with the controller
will be displayed.
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.
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.
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.
In DataView, when I try to do a signal search, I can't see any of the variables in the
ControlWave project. Why?
A variable is marked as "PDD"
DataView can only collect here.
variables which have been
defined as “PDD”.
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.
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.
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.
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:
Note:
Communications via NetView, LocalView, or TechView must be active in order to use the
Debug Information Tool.
Now, you need to specify what level of data you want to collect. To do this click on the
[Levels] button.
The sub-systems are identified by a “Type” number. The type numbers are:
Type Sub-System
0 Memory
1 Port 1
2 Port 2
3 Port 3
4 Port 4
5 Port 5
6 Port 6
7 Port 7
8 Port 8
9 Port 9
10 Port 10
11 Port 11
12 Port 12 — UNUSED
13 Port 13 — UNUSED
14 Port 14 — UNUSED
15 Port 15 - UNUSED
16 Virtual Ports
17 Flash Access (covers read/write of files from FLASH memory)
18 Time Synch
19 Temporary Use
20 Custom Protocol
21 CIP Protocol
22 AMOCAMS AI Net Custom Protocol
40 RBE System
41 Display System
60 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.
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.
Executing:
Timestamp in hexadecimal
*** User Stack ***
format, based on system time
from day 0.
*** System Stack ***
Retain Log: 1
Entries: 1126
If you want to clear the log entries from static memory, immediately, and not wait until a
warm start, click [Initialize].
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.
3. Finally, re-build any user libraries (*.MWT) built based on the older libraries, by clicking
on Build Make.
Index
_TIME system variables.................................... 375 setting up a PPPort ...................................... 309
ACCOL names ......................................... 376, 377 setting up a VSAT Slave Port ........................ 447
Addressing setting up an Ethernet Port .......................... 307
in an IP network ........................................... 293 sharing .......................................................... 92
in BSAP networks ........................................... 52 Compiling your project ..................................... 95
Alarms Conditional logic
_ALARM_FORMAT system variable .............. 377 in your ControlWave project .......................... 97
configuring ...................................................... 9 Configuring
marking alarm variables in Variable Extension Modbus ....................................................... 335
Wizard ..................................................... 408 Data Types
priority of....................................................... 10 IEC 61131-3................................................. 425
Application DataView
licensing of standard ControlWave applications using with ControlWave .............................. 101
.................................................................. 23 Debugging your project .................................. 105
parameters .................................................... 27 Default settings
Archive File for communicaton ports................................ 81
configuring .................................................... 29 DNP3 SAv5 ...................................................... 361
Array Downloading your ControlWave project ......... 113
configuring an ............................................... 41 EBSAP ............................................................. 127
Audit group number ............................................... 52
configuration ................................................. 43 Ethernet Port .................................................. 307
breakpoint Firmware libraries ........................................... 315
clearing a ..................................................... 111 Flash Configuration utility
setting a ...................................................... 110 starting ....................................................... 149
BSAP Flash File access utility ..................................... 155
local address .................................................. 52 Forcing a variable’s value................................. 109
Master Port .................................................... 55 Function block
Slave Port ...................................................... 61 creating....................................................... 159
what is it? ...................................................... 49 executing once at startup .............................. 97
Challenge Handshaking Authentication Protocol list of function blocks in ACCOLIII library .......... 5
(CHAP) ........................................................ 305 parameter name prefixes............................. 165
CHAP............................................................... 355 Global variables............................................... 423
setting the default username for .................. 305 Group number
specifying for a PPP port .............................. 310 in an EBSAP network ...................................... 52
Cold start Historical data ................................................. 167
application .................................................. 325 I/O Configurator.............................................. 169
starting with a System task ....................... 365 I/O Mapping .................................................... 197
system ......................................................... 324 I/O Simulator .................................................. 283
Communication Ports ....................................... 67 Initialization Files
defaults for .................................................... 81 in Variable Extension Wizard ........................ 416
setting up a BSAP Master Port ........................ 55 IP addressing................................................... 293
setting up a BSAP Slave Port ........................... 61 IP Parameters .................................................. 301
setting up a Modbus Port ............................. 341 IP Ports
Index 469
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
470 Index
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023
Index 471
ControlWave Designer Programmer’s Handbook
D301426X012
February 2023