Fisher ControlWave Designer Programmer's Handbook Manuals & Guides

ControlWave Designer Programmer’s Handbook
ControlWave™ Designer Programmer’s Handbook
D301426X012
January 2022
Remote Automation Solutions
ControlWave Designer Programmer’s Handbook
D301426X012 January 2022
Application Safety Considerations
Protecting Operating Processes
A failure of this application – for whatever reason – may leave an operating process without appropriate protection and could result in possible damage to property or injury to persons. To protect against this, you should review the need for additional backup equipment or provide alternate means of protection (such as alarm devices, output limiting, fail-safe valves, relief valves, emergency shutoffs, emergency switches, etc.).
CAUTION
When implementing control using this product, observe best industry practices as suggested by applicable and appropriate environmental, health, and safety organizations. While this product can be used as a safety component in a system, it
NOT intended or designed to be the ONLY safety mechanism in that system.
ControlWave Designer Programmer’s Handbook
D301426X012
January 2022
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
ACCOL III Function Block Library ........................................................................................ 5
Alarm Configuration ......................................................................................................... 9
What are Alarms? 9 Where can I get detailed information about these function blocks? 11 Configuring an Analog Alarm 12 Using the ALARM_ANALOG function block 13 Configuring a Logical Alarm 17 Using the ALARM_LOGICAL_ON function block 17 Configuring a Change of State Alarm 19
Application Licensing ...................................................................................................... 23
Granting a License for a Controller to Run a Standard Application 23 Removing an Application License from a Controller: 24 Viewing a History of Dongle Issue / Remove Operations: 25
Application Parameters ................................................................................................... 27
Archive Configuration ..................................................................................................... 29
What Are Archive Files? 29 Archive configuration involves four basic steps: 30 What can be done with the data from the Archive File(s)? 31 Step 1. Define Archive Files(s) in the Flash Configuration Utility 31 Step 2. In Your ControlWave Designer Project, Identify the variables you want to archive in the
Archive List 36 Step 3. Create an Output List for Accessing the Most Recent Archive Record (OPTIONAL) 37 Step 4. Configure the ARCHIVE Function Block 38
Array Configuration ......................................................................................................... 41
Audit Configuration ........................................................................................................ 43
Step 1. Set parameters in the Flash Configuration Utility 43 Step 2. In ControlWave Designer, identify Variables for which you want to maintain Audit Logging46 Step 3. Configure an AUDIT Function Block 47
BSAP Addressing and Networks ....................................................................................... 49
What is BSAP? 49 Adding A ControlWave to an OpenBSI BSAP Network in the RTU Wizard 51 Setting the BSAP Local Address and EBSAP Group 52 What is Client/Server Communication? 53 BSAP - Underlying Technical Details (For ADVANCED USERS) 53
BSAP Master Port ............................................................................................................ 55
Configuring A BSAP Master Port 56
BSAP Slave Port ............................................................................................................... 61
Configuring a BSAP Slave Port 61
Communication Ports ..................................................................................................... 67
Contents iii
ControlWave Designer Programmer’s Handbook
D301426X012 January 2022
How do I configure the Ports on the ControlWave? 81 What are the factory default settings for communication ports? 81 How can the port configuration be changed? 92 Dialing - An Overview 92 Serial Port Sharing between the BSAP Slave and Custom Slave Protocols: 92
Compiling ....................................................................................................................... 95
Conditional Logic ............................................................................................................ 97
DataView ...................................................................................................................... 101
Before you begin: 101 Calling up ControlWave Data in DataView 102
Debugging – An Overview ............................................................................................. 105
Starting Debug Mode 105 Using the Watch Window 105 Using the Cross-Reference Window 107 On-line Editing with Patch POU 108 Using the Force/Overwrite Options 109 Setting a Breakpoint 110 Exiting Debug Mode 112
Downloading ................................................................................................................ 113
Two Methods Available for Downloading 113 Downloading from within ControlWave Designer 114 Downloading Your ControlWave Project from Within ControlWave Designer 117 Downloading using the OpenBSI ControlWave Downloader 119 Starting the ControlWave Downloader 121 Using the ControlWave Downloader 122 Creating Download Scripts for Batch Downloading of ControlWave Controllers 123
Expanded BSAP (EBSAP) Communications ..................................................................... 127
Expanded BSAP – The Concept 128 General Requirements for Expanded BSAP (EBSAP): 129 Creating an EBSAP Master 130 OpenBSI Workstation is EBSAP Master 130 ControlWave-series Controller is the EBSAP Master 131 Configuring the Control and Status Arrays 132 Defining the Virtual Nodes 141 Defining the EBSAP Slave Nodes 142 Example 1 – OpenBSI Workstation is EBSAP Master to 1000 ControlWave controllers 143 Example 2 – ControlWave Controller is EBSAP Master to 300 ControlWave EBSAP Slaves 146
Flash Configuration Utility – An Overview ...................................................................... 149
Starting the Flash Configuration Utility 149
Flash File Access ............................................................................................................ 155
Viewing a List of Files in the Flash File Area: 156 Uploading a File from the ControlWave to Your OpenBSI Workstation: 156 Copying a File from the OpenBSI Workstation to Your ControlWave: 157 Deleting a File from the ControlWave User Flash Files Area: 157 Refreshing the List of Files: 158
Function Blocks – Creating ............................................................................................ 159
Function Block Parameter Name Prefixes ....................................................................... 165
Historical Data .............................................................................................................. 167
ControlWave Designer Programmer’s Handbook
D301426X012
January 2022
What is Historical Data Used For? 167 What types of Historical Data can be saved in the ControlWave Controller? 167 How is Audit Trail and Archive Data Retrieved from the ControlWave Controller? 168
I/O Configurator............................................................................................................ 169
Tables of Board Types 174 Analog Boards 179 Digital Boards 183 High Speed Counter (HSC) Boards 185 Remote I/O Status Board 186 System Controller Board 186 CWM_RTU Board 187 Notes About Ethernet I/O Boards 187 HART Interface Board (CWM_HIB) 193
I/O Mapping .................................................................................................................. 197
Common Device Map 197 Local I/O - ControlWave 198 Ethernet I/O 206 ControlWave I/O Expansion Rack Boards 218 Local I/O – ControlWave MICRO-series 229 Local I/O – ControlWave GFC-CL and ControlWave XFC 242 Local I/O – ControlWave Express and ControlWave GFC 248 Local I/O – ControlWave CW10, CW30, CW35 256 I/O – ControlWave CW_31 261 ControlWave MICRO I/O Expansion Rack 269
I/O Simulator ................................................................................................................ 283
What is the I/O Simulator? 283 Starting the I/O Simulator 283 Analog Boards 287 Digital Boards 288 Counter Boards 288 Viewing the Board Configuration Status 289 Configuring a Pin 289 Viewing Simulated Alarms 290 Shutting Down the I/O Simulator 290 Troubleshooting Tip 290
IP Addressing and Networks .......................................................................................... 293
What is the Format of IP Addresses? 293 Adding a ControlWave to an IP Network with the RTU Wizard 298 Setting up IP Ports in the Flash Configuration Utility 299 Recommended Ranges for IP Addresses 299
IP Parameters ................................................................................................................ 301
IP Ports - Ethernet ......................................................................................................... 307
IP Ports – PPP ................................................................................................................ 309
IP Routes ....................................................................................................................... 311
Libraries ........................................................................................................................ 315
Memory Usage .............................................................................................................. 319
Some Background - What is Memory? 319 What is Downloading? 319 Types of Memory in the ControlWave Process Automation Controller (CW PAC) 320
ControlWave Designer Programmer’s Handbook
D301426X012 January 2022
What happens in the event of a power failure or the power switch is turned off? 323 What happens in the event of a watchdog condition? 323 What happens on restart after a power failure or watchdog? 324 Variations when using ControlWave MICRO/EFM 327 Variations when using ControlWave GFC/GFC-CL, XFC, Corrector, Express or ExpressPAC 328 Variations when using ControlWave_10/ _30/ _35 (CW_10, CW_30, CW_35) 329 Memory Allocation Issues 330 Determining POU Size at Compilation Time 330 Resolving “Not Enough Memory” Messages 330
Modbus Configuration .................................................................................................. 335
Configuring Your ControlWave Controller as a Modbus Master Device 335 Configuring Your ControlWave Controller as a Modbus Slave or Enron Modbus Slave Device 339
Modbus Ports ................................................................................................................ 341
Configuring Modbus Ports 341
Reset ControlWave Utility ............................................................................................. 343
Security ........................................................................................................................ 345
Other Security-Related Issues 351
Security Protocols (CHAP and PAP) ................................................................................ 355
Security Protocols (CHAP and PAP) Used on PPP Links 355 Challenge Handshaking Authentication Protocol (CHAP) 355 Password Authentication Protocol (PAP) 358
System Tasks (Warm/Cold Starts) .................................................................................. 361
System Variables ........................................................................................................... 363
Using the System Variable Wizard 363 System Variable Mapping Charts 367 Static Memory Area: 393 Using the System Variable Viewer 396
Variable Extension Wizard ............................................................................................. 399
Before You Begin 399 Starting the Variable Extension Wizard 399 Using the Variable Extension Wizard 400 Marking a Variable for Report by Exception (RBE) Collection 403 Configuring a Variable as an Alarm 404 Creating / Editing a List 406 Setting initial values for Manual or Alarm Inhibit/Enable Flags 408 Assigning Units Text (Analog Variables ONLY) 409 Assigning ON/OFF Text (BOOL Variables ONLY) 410 Creating Descriptive Text for the Variable 411 Saving the Initialization Files and Exiting the Wizard 412 Format of Initialization Files 412 Troubleshooting Tips 417
Variables and Data Types .............................................................................................. 419
Global Variables Vs. Local Variables 419 Variable Addressing 420 System Variables 421 Data Types 421
Notes about STRING variables ......................................................................................................... 422
Variable Naming Conventions ....................................................................................... 423
ControlWave Designer Programmer’s Handbook
D301426X012
January 2022
Versions and Compatibility ............................................................................................ 425
Virtual Ports .................................................................................................................. 441
VSAT Slave Port – Configuration .................................................................................... 443
Configuring Flash Parameters 443 Configuring System Variables 444 VSAT Master Ports 446
Web Pages – Notes About Using .................................................................................... 447
Other Notes About Using Web Pages 448 Calling Up Web_BSI Pages 449 Creating Your Own Web Pages to Use with the ControlWave 451
Appendix A: Troubleshooting Tips ................................................................................. 453
Using the Debug Information Tool 458 Other Debugging Tools (BTCP Spy, DLM Monitor) 462
Appendix B: ControlWave Designer Compatibility Issues ................................................ 463
Bringing an Older ControlWave Project into a Newer Version of ControlWave Designer 463 Warning - I/O Configurator and Multiple Copies of ControlWave Designer 464
Index .......................................................................................................................... 465

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 Designer Programmer’s Handbook
D301426X012
January 2022
ControlWave Explosion-Proof Gas Flow Computer (XFC)
ControlWave Express / Express Process Automation Controller
ControlWave Corrector
Manuals You Should Read Before You Read This One
Before you read this document, we strongly recommend you read, and try out, the example presented in the Getting Started with ControlWave Designer Manual (part number D301416X012). It is designed to explain various concepts to first-time ControlWave users.
In addition, please review the quick setup guide for your particular controller (see next page for the proper document) which contains notes about how to initially set up your ControlWave Controller, and how to configure certain parameters for first-time use.
The ControlWave Designer Programmer’s Handbook (which you are reading right now) builds on the information contained in these other documents, so it is essential that you are familiar with the material included in them.
What is Covered in this Manual?
The ControlWave Designer Programmer’s Handbook is intended to provide you the information you need to get the most out of your ControlWave Designer software. It includes:

Introduction 1

ControlWave Designer Programmer’s Handbook
For information on this…
Please consult this…
ControlWave Designer
Getting Started with ControlWave Designer
IEC 61131 terminology and languages
Online help in ControlWave Designer,
Flash Configuration
Chapter 5 of the OpenBSI Utilities Manual
Web Pages
Web_BSI Manual (part number
Converting ACCOL II source files (*.ACC)
ACCOL Translator User’s Guide (part number
ControlWave Process Automation
ControlWave Quick Setup Guide (part number
ControlWave Low Power (LP) Controller
ControlWave LP Quick Setup Guide (part
ControlWave I/O Expansion Rack
ControlWave I/O Expansion Rack Quick Setup
ControlWave Redundant Controller
ControlWave Redundancy Setup Guide (part
ControlWave Gas Flow Computer (GFC)
ControlWave Gas Flow Computer (GFC)
D301426X012 January 2022
Examples of how to configure various sub-systems of ControlWave software, which
are commonly required in process control applications, such as: alarming, and
historical data collection.
Instructions for how to create your own function blocks, and how to create a library of
them, so they can be re-used in other projects.
Notes about how to use OpenBSI, and BSAP, or IP, to include your ControlWave in a
network.
Explanations about how ControlWave memory works, and how I/O points can be
configured.
Discussions of communication options, as well as how to download your ControlWave
project into the ControlWave controller.
What Related Documentation is Available?
(part D301416X012)
Projects, Project Tree, POUs, Tasks, Resources
ACCOL3 library
PROCONOS library
ActiveX controls used with ControlWave
into ControlWave Projects
Controller
ControlWave MICRO Controller ControlWave Micro Quick Setup Guide (part
ControlWave Electronic Flow Meter (EFM) ControlWave Electronic Flow Meter (EFM)
accessible through the question mark [?] menu item.
(part number D301414X012) contains full details on flash configuration.
D301418X012).
D301417X012)
D301415X012)
number D301422X012)
Guide (part number D301423X012)
number D301424X012).
number D301425X012)
Instruction Manual (part number D301383X012)
2 Introduction
Instruction Manual (part number
(D301387X1012)
ControlWave Designer Programmer’s Handbook
For information on this…
Please consult this…
ControlWave Explosion-Proof Gas Flow
ControlWave Explosion-Proof Gas Flow
ControlWave Express
ControlWave Express RTU Instruction Manual
ControlWave Express PAC
ControlWave Express PAC Instruction Manual
ControlWave Corrector
ControlWave Corrector Instruction Manual
ControlWave Gas Flow Computer Plus
ControlWave Gas Flow Computer Plus
ControlWave Ethernet I/O
ControlWave Ethernet I/O Instruction Manual
D301426X012
January 2022
Computer (XFC)
ControlWave Industrial Ethernet Real Time Switches
Computer (XFC) Instruction Manual (part number D301396X012)
(part number D301386X012)
(part number D301384X012)
(part number D301382X012)
Instruction Manual (part number D301389X012)
(part number D301395X012)
ControlWave Industrial Ethernet Real-time 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 January 2022
4 Introduction
ControlWave Designer Programmer’s Handbook
Function block or
Minimum Firmware
Description
AGA3
2.00.00
Computes natural gas volume flow rate through an orifice plate in
Computes mass and volume flow rate for fluids (gases or liquids) in
AGA3I
1.00.00
Computes natural gas volume flow rate according to the Factors
AGA3SELECT
5.50.00
Combines the functions of the AGA3I and AGA3TERM function
AGA3TERM
2.00.00
Computes natural gas volume flow rate through an orifice plate in AGA5
2.00.00
Performs AGA-5 calculations for conversion of computed gas AGA7
2.00.00
Performs AGA-7 calculations for base volume rate.
AGA8_DET2017
6.00.00
Computes Base compressibility, Flowing compressibility and
AGA8DETAIL
2.00.00
Computes Base compressibility, Flowing compressibility and
AGA8_GRS2017
6.00.00
Computations for natural gas mixtures according to the Gross

ACCOL III Function Block Library

The ACCOL III Function Block Library is a set of functions and function blocks created by Emerson and included with ControlWave Designer. ACCOL III function blocks are designed to provide ControlWave Designer with the capabilities of ACCOL II modules used in our previous ACCOL II language. This library also includes several newer functions which were not available in ACCOL II.
Note
Other function block libraries are available for liquids calculations, and NIST23 calculations. Contact Emerson Remote Automation Solutions division for more information.
For instructions on how to use any of these function blocks, please consult the online help in ControlWave Designer.
D301426X012
January 2022
Function
AGA3DENS 4.10.00
Revision Required
thousands of cubic feet per hour (MSCFH) according to American Gas Association (AGA) Report #3 1985 Edition.
lbs/hour and cubic ft per hour, for orifice plates, with flange taps ONLY, according to the method explained in the American Gas Association (AGA) Report #3 of August, 1992, 3rd Edition (Part 1 and Part 4).
Method in AGA Report #3.
blocks into a single function block.
thousands of cubic feet per hour (MSCFH) according to AGA Report #3 1985 Edition. Allows factor substitution and display.
volume to energy equivalents.
Supercompressibility for natural gas mixtures, according to the Detail Characterization Method in the 2017 AGA Report 8 Part 1.
AGA8GROS 1.00.00 Computations for natural gas mixtures according to the Gross
ACCOL III Function Block Library 5
Supercompressibility for natural gas mixtures, according to the Detail Characterization Method in AGA Report 8.
Characterization method in AGA Report 8.
Characterization method in the 2017 AGA Report 8 Part 1.
ControlWave Designer Programmer’s Handbook
Function block or
Minimum Firmware
Description
AGA8_PART2
6.00.00
Performs calculations specified by 2017 AGA Report 8 Part 2, AGA10
4.50.00
Computations for natural gas mixtures according to AGA Report
ALARM
4.70.00
Used to batch process alarms defined in the Variable Extension
ALARM_ANALOG
1.00.00
Monitors a process variable and sends a notification message to a ALARM_LOGICAL_ON
1.00.00
Monitors a Boolean process variable and sends a notification
ALARM_LOGICAL_OFF
1.00.00
Monitors a Boolean process variable and sends a notification ANOUT
1.00.00
Converts and scales signals for hardware analog output.
ARCHIVE
1.00.00
Provides historical storage of signal values.
ARRAY_ANA_GET
4.50.00
Function. Returns the REAL value of the specified array element.
ARRAY_ANA_SET
4.50.00
Function. Writes a REAL value to the specified array element.
ARRAY_LOG_GET
4.50.00
Function. Returns the BOOL value of the specified array element.
ARRAY_LOG_SET
4.50.00
Function. Writes a BOOL value to the specified array element.
AUDIT_SELECTED
5.40.00
Allows you to log events for value changes of individual variables or
AUTOADJUST
2.00.00
Performs adjusted volume and self check calculations for an
BTI
4.70.00
Allows CW_10, CW_30, and CW_35 controllers with the BBTI CALC_DENSITY
June 22, 2009 library or
Calculates the mass density of a gas using the real gas relative
CLIENT
2.00.00
Communicates with other ControlWave controllers that have COMMAND
1.00.00
Pulse Delayed Output.
COMPARATOR
1.00.00
Analog signal comparison.
CRC
2.00.00
Calculates CRC of data stored in an array.
CUSTOM
1.00.00
Custom Communications Interface.
DACCUMULATOR
1.00.00
Performs Double Precision Arithmetic.
DEMUX
1.00.00
Copies a signal value into a list of signals.
D301426X012 January 2022
Function
ALARM_STATE 1.00.00 Monitors a Boolean process variable and sends a notification
Revision Required
Thermodynamic Properties of Natural Gas and Related Gases, GERG–2008 Equation of State.
Number 10.
Wizard.
remote computer when the variable’s value exceeds user defined limits.
message to a remote computer when the variable is TRUE.
message to a remote computer when the variable is FALSE.
message to a remote computer when the variable changes state.
AUDIT 1.00.00 Provides historical storage of alarms and events.
log customized events. The customized events can include standard value change information, alternate values, or NOTE events. You can use the AUDIT_SELECTED FB independently of the AUDIT FB.
Invensys Auto-adjust Turbine Meter.
AVERAGER 1.00.00 Computes the time-average and integral.
board to collect data from the Bristol TeletransTM Model 3508 Transmitter.
newer.
DB_LOAD 4.00.00 Loads variable information (LISTS) from a text file.
density (specific gravity)
implemented the Server Function Block.
DIAL_CTRL 4.00.00 Establishes a dial-up connection on a given port, or interface to a
6 ACCOL III Function Block Library
ControlWave Designer Programmer’s Handbook
Function block or
Minimum Firmware
Description
modem.
DIFFERENTIATOR
1.00.00
Differentiates an analog signal.
DISPLAY
4.20.00
Provides support for the keypad display.
ENCODE
1.00.00
Set/Read System Time, Julian /Wall Time Conversions.
EVP
4.50.00
Calculates the equilibrium vapor pressure for a liquid.
FIELDBUS
5.10.00
Interfaces with Foundation Fieldbus devices via a bridge server.
FILE_CLOSE
2.20.00
Function – End access to a flash file.
FILE_DELETE
2.20.00
Function – Remove a file from flash.
FILE_OPEN
2.20.00
Function – Start access to an existing flash file or create a new one.
FILE_READ_STR
2.20.00
Function – Read a line from a file and load into a string.
FILE_WRITE
2.20.00
Function – Send a buffer of binary data to a flash file.
FILE_WRITE_STR
2.20.00
Function – Send a formatted string to a flash file.
FPV
2.00.00
Computes Super Compressibility Factor (FPV) of a gas per AGA
GENERIC_SERIAL
2.00.00
Generic Serial communications serves as a means to buffer user
GPA8173
4.50.00
Converts the mass of natural gas liquids to equivalent liquid GSV
4.50.00
Converts the gross standard volume for a liquid.
HART
5.00.00
Interface to HART field devices via serial port or I/O board.
HILOLIMITER
1.00.00
Compares a signal against a high and low limit.
HILOSELECT
1.00.00
Finds highest and lowest REAL values in a signal list.
HSCOUNT
1.00.00
High Speed Counter.
HWSTI
4.80.00
Honeywell Smart Transmitter Interface
IEC62591
5.50.00
Allows a ControlWave Micro controller with an IEC62591 Interface INTEGRATOR
1.00.00
Computes an integral approximation.
ISO5167
2.00.00
Calculates flow rate for Orifice plates, Nozzles, Venturi tubes, and
LEAD_LAG
1.00.00
Adds a controlled delay effect.
LICENSE
4.90
Determines application licenses for the RTU.
LIQUID_DENSITY
4.50.00
Calculates the density of liquid at flowing conditions.
LISTxxx
1.00.00
Define/Expand a list.
MUX
1.00.00
Extracts the value of a signal from a list of signals
PDO
1.00.00
Pulse Duration Output.
PID3TERM
1.00.00
3 Mode PID Control.
PORTATTRIB
4.40.00
Allows the user to set the port characteristics online (except for the PORT_CONTROL
4.20.00
Communications port manual control.
D301426X012
January 2022
Function
FILE_DIR 2.20.00 Function Block – Get a listing of files. Retrieve file attributes.
FILE_READ 2.20.00 Function – Read binary data from file.
FUNCTION 1.00.00 Table lookup and interpolation with arrays.
Revision Required
Report NX-19.
defined data through a serial port.
volumes at base conditions.
LIST_ELE_NAME 3.00.00 Returns the variable name for a given list element.
ACCOL III Function Block Library 7
module to communicate to IEC62591 wireless devices.
Venturi-nozzle Primary Devices per ISO 5167-1980 (E), 1980 edition
MODE).
ControlWave Designer Programmer’s Handbook
Function block or
Minimum Firmware
Description
R_INT
1.00.00
Function to Truncate to Integer.
RBE
4.40.00
Supports Report by Exception
REDUN_SWITCH
2.00.00
Function to perform programmed fail-over to Redundant Standby.
REG_ARRAY
1.00.00
Register Arrays – For HMI Access.
SCHEDULER
3.00.00
Equalizes the elapsed running time of a number of external SEQUENCER
1.00.00
Provides sequential output control.
SERVER
2.00.00
Communicates with other ControlWave controllers that have STEPPER
1.00.00
Sequence up to 255 Boolean Outputs.
STORAGE
04.40
Stores and retrieve historical data.
TCHECK
4.70.00
Provides status checking and data processing for a 3508 Teletrans USERS_ACTIVE
5.20
Returns information on all currently signed-in users.
USERS_DEFINED
5.20
Allows encrypted access to the security configuration of the
V_ATTRIB_GET
04.50
This function returns the value of the specified attribute of a V_ATTRIB_SET
04.50
This function sets the value of the specified attribute of a variable.
VAR_ATTRIB_GET
2.10.00
Retrieves the value of an attribute for a variable.
VAR_ATTRIB_SET
2.10.00
Sets the value of an attribute for a variable.
VAR_CI_PROC
2.10.00
Performs the CI (Control Inhibit) processing for the given variable.
VAR_FETCH
3.00.00
This function block fetches complete information about a variable
VAR_SEARCH
3.00.00
This function searches the PDD for variables, both with a given
VIRT_PORT
2.20.00
This function block creates a virtual port by defining a connection VLIMIT
1.00.00
Limit an input’s rate of change.
VMUX
3.00.00
Extracts the value of a signal from a list of signals and ramps the WATCHDOG
5.60
Activates a watchdog output based on user-defined criteria.
XMTR
4.70.00
Provides read/write access to the memory of a TeleTrans
D301426X012 January 2022
Function
R_RND 1.00.00 Function to Round to nearest Integer.
RBE_DISABLE 5.60.00 Disables selected RBE variables to prevent RBE reporting from
TOT_TRND 1.00.00 Computes totals from input and slope of input.
Revision Required
them.
devices.
implemented the Client Function Block.
Transmitter.
ControlWave.
variable.
given its name.
index, and by name.
to a terminal server.
output to match the input.
Transmitter, or other compatible device.
8 ACCOL III Function Block Library

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.
There are three types of alarms:
Analog Alarms– These alarms are generated when an analog variable (type REAL, INT, etc.) exceeds a pre-defined message is generated when the variable returns to within the pre-defined limit. established around the alarm limits so that variables can fluctuate slightly near the alarm limit without constantly going into and out of an alarm state, and thereby flooding the system with repetitive alarms. Analog alarms are configured using the ALARM_ANALOG function block.
alarm limit. A return-to-normal
Deadbands can be
ControlWave Designer Programmer’s Handbook
D301426X012
January 2022
Logical Alarms – These alarms are generated when a variable of type BOOL enters its 'in-alarm' state. A return-to-normal message is generated when the variable returns to its opposite (non-alarm) state The user chooses which state is the 'in alarm' state by the choice of alarm function block. If its 'in-alarm' state occurs when the BOOL variable becomes TRUE, then the ALARM_LOGICAL_ON function block should be used. if the variable's 'in-alarm' state occurs when the BOOL variable becomes FALSE, then the
ALARM_LOGICAL_OFF function block should be used.
Note: The ALARM_LOGICAL_ON and ALARM_LOGICAL_OFF function blocks are identical except that the ALARM_LOGICAL_ON function block generates an alarm when the associated process variable (iaAlarmVar) is TRUE, whereas the ALARM_LOGICAL_OFF function block generates an alarm when the associated process variable (iaAlarmVar) is FALSE.

Alarm Configuration 9

ControlWave Designer Programmer’s Handbook
Alarm Variable
This is the actual process variable which is to be monitored by the alarm
Alarm Priority
The alarm priority is basically a number which indicates the importance
Priority
Value
Meaning
Operator
1
Operator guide alarms are used to indicate everyday
Non-Critical
2
Non-critical alarms are used to indicate problems,
Critical
3
Critical alarms are used to indicate dangerous
Descriptive Text
Up to 64 characters of descriptive text may be stored along with any
Disable
Alarm processing for a particular process variable can be turned OFF. Status
Every alarm function block maintains error and status information.
D301426X012 January 2022
Change-of-State Alarms – These alarms are generated whenever a variable of type BOOL changes state. In this case, there is no such thing as a return-to-normal condition. Change-of-State alarms are configured using the ALARM_STATE function block.
All three types of alarms have various inputs and outputs associated with them. These inputs and outputs are configured within the alarm function block. The following information is common to all three types of alarms:
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).
of the alarm. There are four priorities supported in the system:
Event 0 Event alarms are used to indicate normal, everyday
occurrences.
Guide
occurrences which are slightly more important than events.
which, while not serious enough to cause damage to a plant or process, require corrective action.
problems that require immediate attention and/or corrective action.
The choice of which alarm priorities are to be assigned to a particular alarm variable is entirely at the discretion of the user.
alarm message. This text may be changed dynamically by control logic.
This prevents any alarm messages for that process variable from being generated. This might be used in the case of system maintenance or troubleshooting.
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
configuration errors, and the variable is NOT in an alarm state. For a full
Alarm Sequence #
An alarm sequence number is assigned to each alarm message to
Global Sequence #
A global sequence number is assigned to each audit record, archive
D301426X012
January 2022
description of status values, see the on-line help files.
uniquely identify it within the Alarm System. Alarm sequence numbers range from 0 to 65,535 and are shared among all alarm function blocks in the alarm system to maintain proper ordering of messages.
record, or alarm message to uniquely identify it within the ControlWave controller. Global sequence numbers range from 0 to 65,535 and are shared by all of these sub-systems to maintain proper ordering of messages.
The remaining inputs/outputs configured within the Alarm function block vary depending upon the type of alarm function block being used.
Note
Some parameters in the alarm function block may not be required, depending upon your specific application. In addition, if you do NOT intend to change the value of a particular input value, and its parameter only supports a single data type (i.e., its parameter name does NOT have an “ia” or “iany” prefix), you can enter it as a constant, instead of assigning a variable name.
Alternatively, the OpenBSI Alarm Router can be used to view alarms, and offers an interface to custom alarm applications. See the Open BSI Utilities Manual (part number D301414X012) for information on Alarm Router.
Where can I get detailed information about these function blocks?
On-line help is provided within ControlWave Designer for every ACCOL3 function block. To access this, you can right click on the ACCOL3 library icon, and choose Library…” from the pop-up menu.
Important
This section describes the standard method for alarm configuration. Beginning with OpenBSI Version 5.4, an alternate way to create alarms is to use the Variable Extension Wizard and the ALARM function block for batch processing. The Variable Extension Wizard configures the alarms in the controller, but they do NOT appear within your project. For information on this method, see the Variable Extension Wizard section, later in this manual.
“Help on ACCOL 3
Alarm Configuration 11
ControlWave Designer Programmer’s Handbook D301426X012 January 2022
Configuring an Analog Alarm
For this example, let’s say we have a tank full of water which must be maintained at a certain temperature range. A temperature transmitter is mounted on the tank to measure the current temperature of the water, and it has been decided that the water temperature should be kept between 40.0 that range indicates an alarm condition.
The figure, below, shows a plot of the value of the variable measuring Celsius temperature in the tank, as it fluctuates over time. Four alarm limits and two deadbands have been defined. Starting from the left of the graph, the value of the variable increases until it reaches 70.0
0
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
0
90.0
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.
0
C and 70.00 Celsius. Any temperature reading outside of
The value of the variable then starts to decrease. Although the value passes below 90.0 it is still considered to be in a ‘high-high’ alarm state because there is a 10.0
0
high
0
C,
deadband in effect (deadbands are shown as shaded areas on the graph.) When the variable value falls lower than 80.0 deadband of 10.0
0
C) the variable is no longer in a ‘high-high’ alarm state (See Item 3). It is
0
C point (90.00 C high alarm limit minus the high
still however in a ‘high’ alarm state.
12 Alarm Configuration
ControlWave Designer Programmer’s Handbook
D301426X012
January 2022
As the value of the variable decreases below 70.00 C, it remains in a ‘high’ alarm state until its value falls below 60.0
0
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.0
0
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.0
0
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.0
0
(20.0
C low-low alarm limit plus low deadband of 10.00 C). (See Item 7). The variable is still
0
C,
in a ‘Low Alarm’ state, however.
Once the variable rises above 50.0
0
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.0
0
C), no more
alarm messages will be generated.
Using the ALARM_ANALOG function block
Where you insert your ALARM_ANALOG function block depends upon the overall construction of your project:
The ALARM_ANALOG function block can only detect an alarm condition when it is executed. Therefore, when constructing your project, you should think about how and when you want to execute the function block.
You might choose to place the ALARM_ANALOG function block in the same POU which
holds primary control logic for the process variable. This is always required if the
variable being monitored is not global. Typically, the ALARM_ANALOG function block
would be placed at the end of the POU. If you require timestamps to reflect the exact
moment the alarm condition occurred, you could place the ALARM_ANALOG function
block immediately following the logic which manipulates the process variable.
Alternatively, you could place the ALARM_ANALOG function block in a separate POU,
which could even be executed at a different task interval. This approach may be
convenient if you want to organize your project such that all alarm function blocks are
in the same place.
Step 1. Following the considerations discussed above, insert an ALARM_ANALOG function
block into your program. A separate ALARM_ANALOG function block is required for every analog variable you want to configure as an alarm.
Alarm Configuration 13
ControlWave Designer Programmer’s Handbook D301426X012 January 2022
Step 2. Based on our example of monitoring water temperature in a tank, assign
meaningful variable names, and where applicable, initial values to each of the parameters of the ALARM_ANALOG function block.
The actual process variable being monitored for alarm conditions must be assigned to the iaAlarmVar parameter. In this case we will call it WATER_TEMP since that is the process I/O variable from the temperature transmitter.
Now we need to assign alarm limits and deadbands based on our previous discussion of the proper range for the water temperature.
Important
You must use the same variable type for alarm limits and alarm deadbands as you use for your alarm variable. For example, if the alarm variable is defined as type REAL, then every alarm limit and alarm deadband for that ALARM_ANALOG function block must also be defined as type REAL. Type mismatches of any kind will prevent the ALARM_ANALOG function block from working and will generate errors on the odiStatus parameter.
14 Alarm Configuration
ControlWave Designer Programmer’s Handbook
Parameter
Suggested Variable Name
Variable
Value
Notes
iaAlarmVar
WATER_TEMP
REAL, SINT,
None
The actual process
iaHiHiLimit
WATER_HH_LIMIT
REAL, SINT,
90.0
High-high alarm limit
Setting Alarm Limits (iaLoLimit, iaLoLoLimit, iaHiLimit, iaHiHiLimit)
We want to generate an alarm when the temperature goes out of the range 40.00 Celsius to 70.0
0
Celsius, so 40.0 will be our low alarm limit (iaLoLimit parameter) and 70.0 will be our high alarm limit (iaHiLimit parameter). We can also assign Low-Low and High-High alarm limits to generate additional alarm messages if the variable goes much higher or much lower than the Low and High limits. These are on the iaHiHiLimit and iaLoLoLimit parameters, respectively. NOTE: You do not need to use all four limits. Only one alarm limit is required to configure an analog alarm.
Setting Deadbands (iaHiDeadBand, iaLoDeadBand)
We strongly recommend that you define deadbands around your alarm limits. Two deadbands are supported, iaHiDeadBand is applied to the high and high-high alarm limits, and iaLoDeadBand is applied to the low and low-low alarm limits. Deadbands are ranges above a low limit, or below a high limit, in which a return-to-normal message will NOT be sent, even though a process variable has returned inside the range defined by the alarm limits. This is to prevent the system from being flooded with alarm messages if a process variable is fluctuating around the alarm limit. Without a deadband defined, every time the process variable enters or leaves the normal range, a return-to-normal or alarm message would be generated, thereby flooding the system with repetitive alarms, even though the process variable has changed very little. For this example, we have chosen a deadband of
10.0 for both the low and high deadbands.
D301426X012
January 2022
Setting Alarm Priorities (iiLoPriority, iiLoLoPriority, iiHiPriority, iiHiHiPriority)
Alarm priorities indicate the severity of the alarm condition triggered by passing one of the pre-defined alarm limits. For this example, passing either the low or high alarm limits is considered NON-CRITICAL, and passing either the low-low or high-high alarm limits is considered CRITICAL. The alarm priority has no effect on the operation of the alarm system, and is defined strictly at the user’s discretion. Priorities are displayed as part of the alarm message.
Units Text, Descriptive Text (istrUnitsText, istrDescText)
These parameters are strictly for the convenience of the user. They specify engineering units for the alarm variable, and descriptive text for the alarm condition.
The table, below, summarizes the values for the various parameters used in this example:
Name
ibDisable WATER_TEMP_ALARM_DISABLE BOOL FALSE For disabling/ enabling
Type
INT, DINT, USINT, UINT, or UDINT
alarm processing.
variable measuring temperature in the tank.
Alarm Configuration 15
USINT, INT,
ControlWave Designer Programmer’s Handbook
Parameter
Suggested Variable Name
Variable
Value
Notes
UINT, DINT, or
iaHiLimit
WATER_H_LIMIT
REAL, SINT,
70.0
High alarm limit
iaLoLimit
WATER_L_LIMIT
REAL, SINT,
40.0
Low alarm limit
iaLoLoLimit
WATER_LL_LIMIT
REAL, SINT,
20.0
Low low alarm limit
iaHiDeadBand
WATER_HDB
REAL, SINT,
10.0
High alarm deadband
iaLoDeadBand
WATER_LDB
REAL, SINT,
10.0
Low alarm deadband
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
istrDescText
WATER_TEMP_DESC_TEXT
STRING
'WATER
Descriptive text (up to
odiStatus
WATER_TEMP_ALARM_STATUS
DINT
None
Status of the execution ouiAlarmSeq
WATER_TEMP_ALARM_SEQ_NUM
UINT
None
Alarm sequence
ouiGlobalSeq
WATER_TEMP_GLOBAL_SEQ_NUM
UINT
None
Global sequence
D301426X012 January 2022
Name
Type
UDINT
USINT, INT, UNIT, DINT or UDINT
USINT, INT, UINT, DINT or UDINT
USINT, INT, UINT, DINT or UDINT
USINT, INT, UINT, DINT or UDINT
USINT, INT, UINT, DINT or UDINT
16 Alarm Configuration
to 6 characters)
TEMPERAT URE'
64 characters)
of this function block.
number.
number.
ControlWave Designer Programmer’s Handbook
D301426X012
January 2022
The configured alarm block appears, below:
Configuring a Logical Alarm
For this example, let’s say we have an electrical switch which turns ON in the event of a compressor power failure. When the switch turns ON, we want to generate an alarm. When the power is restored, the switch turns OFF and a return-to-normal message will be generated.
Because the alarm condition occurs when the switch turns ON, we must use an ALARM_LOGICAL_ON function block. (If we wanted to generate an alarm when the switch turned OFF, we would have used an ALARM_LOGICAL_OFF function block.)
Using the ALARM_LOGICAL_ON function block
Where you insert your ALARM_LOGICAL_ON function block depends upon the overall construction of your project:
The ALARM_LOGICAL_ON function block can only detect an alarm condition when it is executed. Therefore, when constructing your project, you should think about how and
when you want to execute the function block.
You might choose to place the ALARM_LOGICAL_ON function block in the same POU which holds primary control logic for the process variable. This is always required if the variable being monitored is not global. Typically, the ALARM_LOGICAL_ON function block would be placed at the end of the POU. If you require timestamps to reflect the
Alarm Configuration 17
ControlWave Designer Programmer’s Handbook
Parameter
Suggested Variable Name
Variable
Value
Notes
ibDisable
POWERFAIL_ALARM_DISABLE
BOOL
FALSE
For disabling/ enabling
iaAlarmVar
COMPRESSOR_POWER_FAILURE
BOOL
None
The ON/OFF status of
iiPriority
CRITICAL_PRIORITY
INT 3 Priority of this alarm
istrOnText
POWER_FAIL_ONTEXT
STRING
'FAILED'
ON message text (up
istrOffText
POWER_FAIL_OFFTEXT
STRING
'NORMAL'
OFF message text (up
istrDescText
POWERFAIL_DESC_TEXT
STRING
'WATER
Descriptive text (up to
D301426X012 January 2022
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.
Step 1. Following the considerations discussed above,
insert an ALARM_LOGICAL_ON function block into your program. A separate
ALARM_LOGICAL_ON (or ALARM_LOGICAL_OFF) function block is required for every variable you want to configure as a logical alarm.
Step 2. Based on our example of detecting a change of
state of a pump, assign meaningful variable names, and where applicable, initial values to each of the parameters of the ALARM_LOGICAL_ON function block.
The actual process variable being monitored for alarm conditions must be assigned to the iaAlarmVar parameter. In this case we will call it COMPRESSOR_POWER_FAILURE since that is the process I/O variable from the switch.
Name
The table, below, summarizes the values for the various parameters used in this example.
Type
alarm processing.
the switch used to indicate power failure of the compressor.
NOTE: Alarms are only generated when iaAlarmVar is ON.
condition.
to 6 characters)
to 6 characters)
TEMPERAT URE'
64 characters)
18 Alarm Configuration
ControlWave Designer Programmer’s Handbook
Parameter
Suggested Variable Name
Variable
Value
Notes
odiStatus
POWERFAIL_ALARM_STATUS
DINT
None
Status of the execution
ouiAlarmSeq
POWERFAIL_ALARM_SEQ_NUM
UINT
None
Alarm sequence
ouiGlobalSeq
POWERFAIL_GLOBAL_SEQ_NUM
UINT
None
Global sequence
D301426X012
January 2022
Name
Type
of this function block.
number
number
The configured alarm block appears, below:
Configuring a Change of State Alarm
For this example, let’s say we have a pump which is critical to the operation of a water plant. Whenever it starts or stops, we want to generate an alarm message. NOTE: In change-of-state alarms, there is NO return-to-normal state; every change from ON-to-OFF or OFF-to-ON generates an alarm message.
Using the ALARM_STATE function block
Where you insert your ALARM_STATE function block depends upon the overall construction of your project:
The ALARM_STATE function block can only detect an alarm condition when it is executed. Therefore, when constructing your project, you should think about how and
when you want to execute the function block.
You might choose to place the ALARM_STATE function block in the same POU which holds primary control logic for the process variable. This is always required if the variable being monitored is not global. Typically, the ALARM_STATE function block would be placed at the end of the POU. If you require timestamps to reflect the exact moment the alarm condition occurred, you could place the ALARM_STATE function block immediately following the logic which manipulates the process variable.
Alternatively, you could place the ALARM_STATE function block in a separate POU, which could even be executed at a different task interval. This approach may be
Alarm Configuration 19
ControlWave Designer Programmer’s Handbook
Parameter
Suggested Variable Name
Variable
Value
Notes
ibDisable
DISABLE_WATERPMP_STATALRM
BOOL
FALSE
For disabling/ enabling
iaAlarmVar
WATER_PUMP_STATUS
BOOL
None
The ON/OFF status of
iiPriority
CRITICAL_PRIORITY
INT 3 Priority of this alarm
istrOnText
WATER_PUMP_ONTEXT
STRING
'ACTIVE'
ON message text (up
istrOffText
WATER_PUMP_OFFTEXT
STRING
'IDLE'
OFF message text (up
istrDescText
WATER_PUMP_DESC_TEXT
STRING
'WATER
Descriptive text (up to
odiStatus
WATER_PUMP_ALARM_STATUS
DINT
None
Status of the execution
ouiAlarmSeq
WATER_PUMP_ALARM_SEQ_NUM
UINT
None
Alarm sequence
ouiGlobalSeq
WATER_PUMP_GLOBAL_SEQ_NUM
UINT
None
Global sequence
D301426X012 January 2022
convenient if you want to organize your project such that all alarm function blocks are in the same place.
Step 1. Following the considerations
discussed above, insert an ALARM_STATE function block into your program. A separate
ALARM_STATE function block is required for every variable you want to configure as a change-of-state alarm.
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.
Name
The table, below, summarizes the values for the various parameters used in this example:
Type
alarm processing.
the water pump.
condition.
to 6 characters)
to 6 characters)
PUMP STATE CHANGE'
64 characters)
of this function block.
number
20 Alarm Configuration
number
ControlWave Designer Programmer’s Handbook
D301426X012
January 2022
The configured alarm block appears, below:
Alarm Configuration 21
ControlWave Designer Programmer’s Handbook D301426X012 January 2022
22 Alarm Configuration
Loading...
+ 446 hidden pages