AspenCimIOV12 Usr

You might also like

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

Aspen Cim-IO

User’s Guide
Version: V12
October 2020
Copyright (c) 2020 by Aspen Technology, Inc. All rights reserved.

Aspen InfoPlus.21, Aspen Process Explorer, Aspen Cim-IO, GCS, CIM/21, Setcim, the aspen leaf logo and
Plantelligence and Enterprise Optimization are trademarks or registered trademarks of Aspen Technology, Inc.,
Bedford, MA.

All other brand and product names are trademarks or registered trademarks of their respective companies.

This document is intended as a guide to using AspenTech's software. This documentation contains AspenTech
proprietary and confidential information and may not be disclosed, used, or copied without the prior consent of
AspenTech or as set forth in the applicable license agreement. Users are solely responsible for the proper use of
the software and the application of the results obtained.

Although AspenTech has tested the software and reviewed the documentation, the sole warranty for the software
may be found in the applicable license agreement between AspenTech and the user. ASPENTECH MAKES NO
WARRANTY OR REPRESENTATION, EITHER EXPRESSED OR IMPLIED, WITH RESPECT TO THIS DOCUMENTATION,
ITS QUALITY, PERFORMANCE, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.

Aspen Technology, Inc.


20 Crosby Drive
Bedford, MA 01730
USA
Phone: (781) 221-6400
Toll Free: (1) (888) 996-7100
http://www.aspentech.com
Contents
1 Introduction .........................................................................................................1
About this Guide ..............................................................................................1
Organization ..........................................................................................1
Target Audience ...............................................................................................2
System Requirements.......................................................................................2
Technical Support ............................................................................................2

2 Overview ..............................................................................................................5
Architecture.....................................................................................................5
Cim-IO Redundant Servers ......................................................................6
Cim-IO Core ..........................................................................................6
Cim-IO Client Component........................................................................6
Cim-IO Server Component ......................................................................7
Cim-IO Internal Architecture....................................................................7
Cim-IO Interactive Programs ...................................................................9
Cim-IO Core Processes ...........................................................................9
Cim-IO Interface Specific Processes........................................................ 13
Cim-IO Client-Side Tasks ...................................................................... 14
Cim-IO Features ............................................................................................ 15
Read................................................................................................... 15
Write .................................................................................................. 15
Unsolicited Read .................................................................................. 15
Mixed Data Types................................................................................. 16
Smart Data Types ................................................................................ 16
Data Recovery ..................................................................................... 17
Cim-IO Security ................................................................................... 17
Cross-Version Compatibility ................................................................... 17

3 Cim-IO Interface Manager..................................................................................19

4 Cim-IO IP.21 Connection Manager .....................................................................25

5 Cim-IO Installation and Setup............................................................................31


Client and Server Installation........................................................................... 31
Client and Server Configuration ....................................................................... 31
The Cim-IO Directory Structure........................................................................ 32
Cim-IO Environment Variables ......................................................................... 32
Utilities to Set Cim-IO Variables ............................................................. 32
Cim-IO Variables.................................................................................. 34
Setting Cim-IO Server Security Options .................................................. 40
Setting Diagnostics Logging Options ....................................................... 41
Cim-IO Security ............................................................................................. 44
Cim-IO Checksum .......................................................................................... 45

Contents iii
Manager Parameters....................................................................................... 46

6 Cim-IO Test Utility Program ...............................................................................49


Starting the Cim-IO Test Utility Program ........................................................... 49
Before Running the Cim-IO Test Utility Program....................................... 49
Running the Cim-IO Test Utility Program................................................. 50
Data Transfer Options..................................................................................... 50
Status Fields........................................................................................ 51
Testing Cim-IO GET.............................................................................. 52
Testing Cim-IO PUT .............................................................................. 53
Testing Performance ............................................................................. 54
List Handling Options ...................................................................................... 57
Testing Cim-IO DECLARE ...................................................................... 57
Testing Cim-IO CANCEL ........................................................................ 58
Testing Cim-IO GET Historical Data ........................................................ 59
Testing Cim-IO Stop GET ...................................................................... 60
Disconnecting From a Device ................................................................. 61
Miscellaneous Options..................................................................................... 61
Test Cim-IO Time Functions................................................................... 61
Adding a Logical Device to Cim-IO.......................................................... 62
Deleting a Logical Device ...................................................................... 63
Logging an Error Block .......................................................................... 63
Logging a Message ............................................................................... 64
Retrieving an Error Message .................................................................. 65
Retrieving a Status Message .................................................................. 65
Shutting Down a Device ........................................................................ 66
Enable Scanner .................................................................................... 66
Disable Scanner ................................................................................... 66
Get list of OPC UA endpoints from manager............................................. 67
ListOPUAEndPoints App ......................................................................... 68
Get List Process Data Sources from manager ........................................... 68
ListProcessDataSources App .................................................................. 69
Automating Parameter Input ........................................................................... 69
Tag Name Entry Options ....................................................................... 69
Tag File Format.................................................................................... 69
Tag File Format for GET Request ............................................................ 71
Tag File Format for PUT Request ............................................................ 71
Tag File Format for DECLARE Request..................................................... 71
Tag File Format for CANCEL Request....................................................... 72
Tag File Format for Historical GET Request .............................................. 72
The Test Receiver Utility ................................................................................. 72
Start the Test Receiver ......................................................................... 72

7 Cim-IO Simulation Server...................................................................................75


Server Functionality........................................................................................ 75
Request Types ..................................................................................... 75
Data Types .......................................................................................... 75
Server Startup and Shutdown .......................................................................... 76
Simulation Data File Structure ......................................................................... 76

iv Contents
8 Cim-IO Client for InfoPlus.21 .............................................................................77
Installation .................................................................................................... 77
Cim-IO Client Configuration in IP.21 ................................................................. 77
Client Programs ................................................................................... 77
Ping Function....................................................................................... 78
Creating Transfer Records ..................................................................... 79
Starting Tasks ............................................................................................... 79
Configuration Example .................................................................................... 79

9 Creating Get, Put, and Unsol Records .................................................................83


Creating the Different Types of Cim-IO Get Records ........................................... 83
Creating the Different Types of Cim-IO Put Records............................................ 90
Creating the Different Types of Cim-IO Unsol Records......................................... 96

10 Cim-IO Records in InfoPlus.21 .......................................................................103


Naming Conventions..................................................................................... 103
Field Names ...................................................................................... 103
Selector Format Records ..................................................................... 103
Definition Records .............................................................................. 103
Data Records ..................................................................................... 103
The Cim-IO Task Definition Record ................................................................. 104
IoExternalTskDef Fields....................................................................... 104
The Cim-IO Device Record............................................................................. 105
IoDeviceRecDef Fields......................................................................... 106
The Cim-IO Group Record ............................................................................. 112
IoGroupsDef Fields ............................................................................. 113
The Cim-IO Engineering Units Conversion Record............................................. 114
Io-EU-Conv Fields .............................................................................. 115
The Cim-IO Deadband Record........................................................................ 117
Io-Deadbands Fields ........................................................................... 118
The Cim-IO I/O Transfer Records ................................................................... 119
The Cim-IO Read Transfer Records ................................................................. 120
IoGetDef Fields .................................................................................. 121
Automatic Scan-Off for Problematic Tags............................................... 128
The Cim-IO Unsolicited Read Transfer Record .................................................. 129
Record Activated Due to a Change to IO_RECORD_PROCESSING ............. 130
Record Activated Due to a Change to IO_DATA_PROCESSING.................. 130
Record Activated Due to a Change to the IO_ACTIVATE .......................... 130
Unsolicited Read Transfer Records: Fixed Data Area ............................... 131
Unsolicited Read Transfer Records: Repeat Data Area ............................. 131
IoUnsolDef Fields ............................................................................... 132
The Cim-IO Historical Read Transfer Record .................................................... 139
IoGetHistDef Fields............................................................................. 140
The Cim-IO Write Transfer Record .................................................................. 150
IoPutDef Fields .................................................................................. 151
Disabling IoPutDef.............................................................................. 154
The Cim-IO Write on Change of State Transfer Record ...................................... 158
The IoLogCntrl Record .................................................................................. 158
The IoMessageSw Condition Record................................................................ 159
The IoSummary Record ................................................................................ 159
The IoLog Record ......................................................................................... 160

Contents v
The IoGetAlarmLine Record ........................................................................... 161
The IoPutAlarmLine Record ........................................................................... 162
Structure Data Type Support ......................................................................... 163
Structure Support in Cim-IO Historical Read Transfer Records ................. 163
Structure Support in Cim-IO Read Transfer Records ............................... 166
Structure Support in Cim-IO Write Transfer Records ............................... 166
Structure Support in Cim-IO Unsolicited Transfer Records ....................... 169

11 Cim-IO Store and Forward..............................................................................173


Overview..................................................................................................... 173
Store and Forward Architecture...................................................................... 173
Scanner Module ................................................................................. 174
Store Module ..................................................................................... 174
Forward Module ................................................................................. 174
Windows Specific Architecture.............................................................. 174
Configuration ............................................................................................... 175
Configuring Store and Forward Parameters............................................ 175
Configuration via InfoPlus.21 ............................................................... 175
Defining External Tasks....................................................................... 177
Setting up Database Records ............................................................... 177
Store and Forward TCP/IP Services ...................................................... 180
Starting and Stopping a Store and Forward System .......................................... 181
cimio_sf_start File Options .................................................................. 182
Stopping Store and Forward ................................................................ 183
Store and Forward External Files .......................................................... 184
Monitoring Store files in Real-time.................................................................. 184
Running Cim-IO SF Monitor ................................................................. 185
Store and Forward Internal Files .................................................................... 187
Cim-IO Scan List File .......................................................................... 187
Cim-IO Unsolicited List File .................................................................. 188
Cim-IO Store List File ......................................................................... 188
Cim-IO Store Files .............................................................................. 188
Analyzing Performance and Resource Requirements ......................................... 189
Implementing Data Compression Using IoUnsolDef records ............................... 191
Store and Forward with Windows File Compression / Compressed Drives ............ 193
Rejecting Old Data ....................................................................................... 193
General Data Recovery with the RECOVER Utility ............................................. 194
Store and Forward RECOVER Programs ................................................. 194
Using Analyze .................................................................................... 195
Setting Up RECOVER .......................................................................... 195
Setting up InfoPlus.21 ........................................................................ 196
Using RECOVER ................................................................................. 196
The RECOVER Server .......................................................................... 196
The RECOVER Client ........................................................................... 198
Common Errors.................................................................................. 199
Performance ...................................................................................... 199
Impact on InfoPlus.21......................................................................... 199

12 Cim-IO Redundancy .......................................................................................203


Introduction ................................................................................................ 203
System Architecture ........................................................................... 204
Configuring Your System for Redundancy ........................................................ 205

vi Contents
Sites with more than seven redundant server pairs ................................ 205
Sample Failover Times .................................................................................. 208
Limitations of Redundancy............................................................................. 208
Manual vs. Automatic Fail Back ...................................................................... 209
Cleaning Up Old Data.................................................................................... 209
Reactivation ................................................................................................ 209
Enabling Diagnostic Messages........................................................................ 210
Alternate Diagnostic Logging Devices.................................................... 211
Known Issues .............................................................................................. 214

13 Cim-IO History Recovery ................................................................................215


Overview..................................................................................................... 215
History Recovery Architecture ........................................................................ 215
History Recovery Configuration ...................................................................... 216
Logical Device Definition File................................................................ 216
History Recovery External Tasks .......................................................... 216
Cim-IO Device Record......................................................................... 217
Historical Read Transfer Records .......................................................... 217
Starting History Recovery.............................................................................. 218
Starting External Tasks ....................................................................... 218
Synchronizing Cim-IO Tasks ................................................................ 220
Activating History Recovery Task ......................................................... 220

14 Troubleshooting .............................................................................................223
Frequently Encountered Errors ....................................................................... 223
Logical Device Not Found .................................................................... 223
Time-Out .......................................................................................... 224
Broken Connection ............................................................................. 224
Socket Write Time-Out........................................................................ 225
No Connection ................................................................................... 225
Address In Use .................................................................................. 226
Incorrect or Missing Service Name ....................................................... 226
Store File Will Not Unbuffer ................................................................. 227
Frequently Asked Questions (FAQs) ................................................................ 227

15 Error Processing.............................................................................................233
Message Log Files ........................................................................................ 233
Cim-IO Log File .................................................................................. 233
Error Reporting .................................................................................. 233
Cim-IO Diagnostics Logging........................................................................... 233
Configuration Utilities ......................................................................... 234
Example using extended print option for ASCII values Diagnostic Filter
Types ............................................................................................... 236
Diagnostic Configuration ..................................................................... 241
Diagnostic Output Format.................................................................... 253
Error Definitions........................................................................................... 254
Error Definition Files ........................................................................... 254
Cim-IO Errors Sorted by Error Identifier .......................................................... 255
Cim-IO Errors Sorted by Error Code................................................................ 287

Contents vii
Appendix A – Deprecated Procedures..................................................................321
I/O Functions Using the Administrator ............................................................ 321
Finding a Device ................................................................................ 321
Examining a Device ............................................................................ 322
Viewing Redundant Logical Devices vs. Single Logical Devices ................. 326
Starting a Device ............................................................................... 326
Stopping a Device .............................................................................. 327
Creating a Cim-IO Server Configuration File .......................................... 327
Remove a Device ............................................................................... 328
Change Cim-IO Manager Properties ...................................................... 329

Glossary ..............................................................................................................331

viii Contents
1 Introduction

This guide contains a detailed description of Aspen Cim-IO™.

About this Guide


Organization
This guide contains the following:
Chapter 1  Introduction. Provides a general overview of the guide, as well
as technical support information.
Chapter 2  Overview. Provides a general overview of Cim-IO. This chapter
presents the architecture and the basic functionality of the Cim-IO software.
Chapter 3 – Cim-IO Interface Manager. Describes the Cim-IO Interface
Manager.
Chapter 4 – Cim-IO IP.21 Connection Manager. Describes the Cim-IO IP.21
Connection Manager.
Chapter 5  Cim-IO Installation and Setup. Provides an overview for
installing and configuring the Cim-IO core, as well as a general description of
client and server installation and setup procedures.
Chapter 6  Cim-IO Test Utility Program. Describes the operation of
cimio_t_api, a simple client program supplied with the Cim-IO core for
testing purposes.
Chapter 7  Cim-IO Simulation Server. Describes the use of the Simulation
server, a simple server supplied with the Cim-IO core for testing purposes.
Chapter 8  Cim-IO Client for InfoPlus.21. Provides information on
installation, startup, and configuration of the most common Cim-IO client
software.
Chapter 9 – Creating Get, Put, and Unsol Records. Describes the different
types of Cim-IO records and how to create them.
Chapter 10  Cim-IO Records in InfoPlu.21. Provides information on the Cim-
IO records used with the InfoPlus.21 database.

1 Introduction 1
Chapter 11  Cim-IO Store and Forward. Provides a general description of
the Store and Forward system, along with instructions for configuration,
startup and shutdown.
Chapter 12 – Cim-IO Redundancy. Explains Cim-IO server redundancy and
how to configure your system to use redundancy.
Chapter 13  Cim-IO History Recovery. Provides a general description of the
History Recovery system, along with instructions for configuration, startup
and shutdown.
Chapter 14  Troubleshooting. Describes frequently encountered errors and
provides an FAQ sheet to describe the various aspects of Cim-IO.
Chapter 15  Error Processing. Provides a general description of how errors
are handled by Cim-IO, along with a listing of error values sorted both
numerically and alphabetically.
Appendix A – Deprecated Procedures. Contains information for procedures
that have been replaced by the Cim-IO Interface Manager and the Cim-IO
IP.21 Connection Manager.
Glossary  Provides definitions for several terms used in this document.

Target Audience
The guide is written for engineers and information service professionals, who
may need to install, update or test the Cim-IO core or its related client or
server software.
The information in this guide is intended only for Cim-IO clients and servers
using Cim-IO core.

System Requirements
System requirements for Cim-IO are provided in the Aspen InfoPlus.21
Product Family Installation Guide.

Technical Support
AspenTech customers with a valid license and software maintenance
agreement can register to access the online AspenTech Support Center at:
https://support.aspentech.com
This Web support site allows you to:
 Access current product documentation
 Search for tech tips, solutions and frequently asked questions (FAQs)
 Search for and download application examples
 Search for and download service packs and product updates
 Submit and track technical issues

2 1 Introduction
 Send suggestions
 Report product defects
 Review lists of known deficiencies and defects
Registered users can also subscribe to our Technical Support
e-Bulletins. These e-Bulletins are used to alert users to important technical
support information such as:
 Technical advisories
 Product updates and releases
Customer support is also available by phone, fax, and email. The most up-to-
date contact information is available at the AspenTech Support Center at
https://support.aspentech.com.

1 Introduction 3
4 1 Introduction
2 Overview

Architecture
Cim-IO is a socket-based communication mechanism used to transfer data
between applications or databases (such as InfoPlus.21, DMCplus and other
AspenTech products) and external devices.
Cim-IO runs in a client-server configuration. Client and server components
can run on the same computer or on different computers. Multi-threaded
client and server applications are supported on Windows Intel systems.
A Cim-IO client communicates with a Cim-IO server through the Cim-IO Core.
The Cim-IO Core relies on TCP/IP to provide reliable, transparent
communication between a Cim-IO client and a Cim-IO server.

Note: Even if the client and the server reside on the same computer, the
Cim-IO Core still relies on TCP/IP for communication.
The figure below shows the basic layout of a Cim-IO interface where the client
and server are running on a single computer and on separate computers:

2 Overview 5
Cim-IO Redundant Servers
The Cim-IO site can enhance the Cim-IO basic internal architecture by
configuring Cim-IO redundant server nodes. The Cim-IO client-side can
exchange data with the active logical device’s primary or secondary node, as
decided by the Cim-IO Changeover monitor program.
The Cim-IO client-side redundancy is fully compatible with the Store and
Forward server nodes, which assures no loss of data as Store and Forward
may be used in both the primary and secondary nodes. The redundancy
feature is described in the section “Cim-IO Redundancy.”

Cim-IO Core
The Cim-IO Core consists of a set of subroutines that Cim-IO client and server
components call to communicate with each other. The two components
exchange request and reply messages. The Cim-IO Core is "the glue"
between Cim-IO clients and Cim-IO servers, and it must reside on all
computers running a Cim-IO client or a Cim-IO server. The core is unique and
independent from any Cim-IO client or Cim-IO server.

Cim-IO Client Component


A Cim-IO client component resides between the application or the database
that uses Cim-IO and the Cim-IO Core. The function of a Cim-IO client
component is to request data from a Cim-IO server through the Cim-IO Core
and store the data into an application or a database or read data from an
application or a database and send this data to a Cim-IO server through the
Cim-IO Core. Cim-IO client components are specific to the application or
database with which they interface.
A Cim-IO client consists of a main client component and optional components
if asynchronous and/or unsolicited transfers are being used. In addition, if the
server being accessed supports History Recovery, a separate component may
be present as described later in this chapter and in the chapter entitled “Cim-
IO History Recovery for InfoPlus.21.”

6 2 Overview
Cim-IO Server Component
The function of a Cim-IO server is to provide communication with a device. A
Cim-IO server component resides between the Cim-IO Core and the device it
communicates with (note that the device could also be a database). The
server component receives requests from the Cim-IO client through the Cim-
IO Core, communicates with the device and sends replies back to the Cim-IO
client through the Cim-IO Core.
A Cim-IO server normally consists of a Device Logical Gateway Program
(DLGP) and one or more Device Input/Output Programs (DIOPs). If it makes
use of the Store and Forward and/or History Recovery features, it will also
have other components, as described later in this chapter and in the chapters
entitled “Cim-IO Store and Forward for InfoPlus.21” and “Cim-IO History
Recovery for InfoPlus.21.”

Cim-IO Internal Architecture


Cim-IO client and server components form an interface to perform data
transfer functions. The different parts of a Cim-IO interface are shown in the
figure below and are briefly described in the following sections.

2 Overview 7
Cim-IO Architecture

8 2 Overview
Cim-IO Interactive Programs

Cim-IO Interface Manager


The Cim-IO Interface Manager, depicted in green on the Cim-IO server
computer, is a server-side interactive program for the user to add, modify,
and delete instances of supported types of Cim-IO interfaces. This utility will
be covered later in detail in a separate chapter. This utility works in concert
with the local Cim-IO Manager service process (in yellow) to create files of
type .csd, each describing one specific Cim-IO interface instance.

IP.21 Cim-IO Connection Manager


The Cim-IO Connection Manager depicted in green on the Cim-IO server
computer, is a Cim-IO IP.21 client interactive program for the user to add and
delete connections to Cim-IO interfaces. This utility will be covered later in
detail in a separate chapter. This utility works in concert with the local Cim-IO
Manager service process (in yellow) to maintain the cimio_logical_devices.def
file.

Cim-IO Core Processes


The Cim-IO Core processes are depicted in the figure in yellow and some with
pattern fill. Apart from the Cim-IO Manager Service, which should always be
present and running, the other three core processes, Scanner, Store, and
Forward may not need to be present. A trio of these processes are associated
with one given Cim-IO interface instance for which the Store and Forward
option has been selected using the Cim-IO Interface Manager.

The Cim-IO Manager Service


The Cim-IO Manager program is installed as a service on Windows Intel
systems and started automatically during system boot. When it starts, the
Manager:
 Executes the batch file cimio_autostart.bat. Commands may be added
to this file to allow for example the start of non-Cim-IO, vendor specific
processes automatically when the operating system is started and before
Cim-IO server interfaces are started. These processes will keep running
even when the user has logged off the system. An equivalent file,
cimio_autostop.bat, is called when the service stops, as in the example
given above, I could contain the commands that orderly shuts down the
vendor’s specific software.
 Starts up none, one, or more Cim-IO servers defined locally. The
interfaces to start up are listed in the CIM-IO\management folder; each
has a file associated of type .csd (which stands for Cim-IO Server
Configuration).
 Creates, updates or deletes files of type .csd, as explained above as
directed by the local Cim-IO Interface Manager program. The Manager
caches the interface information in memory, which is formatted as a .csd

2 Overview 9
file and written back overriding existing ones every time the service stops.
In this way, Cim-IO avoids unintentional or at will user changes that may
tamper with the integrity of these files.
Important: The user should not tamper with the contents of a Cim-
IO Server Configuration (.csd) file that describes a Cim-IO
interface instance, as this could compromise the integrity and
functionality of the interface. Unless of course, the user modifies
the file under the advice of an Aspen Support Engineer.
 Assists the local Cim-IO Connections Manager program by adding,
modifying, and deleting logical device entries in the local
CIMIO_LOGICAL_DEVICES.def file
 Services local or remote programs which need information about locally
defined interface instances, which were added by the Cim-IO Interface
Manager program. For example, the InfoPlus.21 Administration Tool or the
Connection Interface Manager use local or remote Cim-IO Managers to
display status information of Cim-IO interfaces and their processes of
locally defined logical devices (connections), wherever these interfaces
might reside on the network
 Updates the local CIMIO Logical Devices file on behalf of the Cim-IO
Connections Manager as well as for the redundancy monitoring task
TSK_DETECT (depicted in orange color)
 On Cim-IO server computers, allocates or finds the TCP/IP services
associated with interface processes.
 Resolves for applications the port number associated with a specific Cim-
IO server instance

Cim-IO Manager Service Health Monitoring


The Cim-IO Manager service option periodically checks the health of local
active interface instances started by the service, restarting if necessary one
or more of their missing processes. In this context, health means that the
interface instance processes exist and can reply to connection requests from
the Cim-IO Manager service.
The option is selected on a one by one interface instance, as shown in the
figure below. The option is enabled if the Start at boot option is first set.

10 2 Overview
The health monitoring occurs at a user defined frequency. The monitor first
checks whether each instance process exists, starting it if missing.
If a process is active, the service sends it a request for connection that the
process is expected to acknowledge within a preconfigured timeout. If the
requests are timed out, the Cim-IO Manager service will stop and restart the
non-responsive process.
The frequency to monitor and the timeout value are defaulted to 1 minute
and 10 seconds respectively.
If InfoPlus.21 has been installed in the computer and there are locally defined
Cim-IO interface instances, these 2 parameters can be adjusted by using the
InfoPlus.21 Administration I/O Tool. Just expand the I/O tool, right click on
any of the interfaces defined and select the option Manager parameters
option from the context menu. This action will bring up the dialog window
Manager properties with boxes to enter the desired values.

2 Overview 11
For computers where InfoPlus.21 server has not been installed (and for the
time being), a text editor can be used to create, if the file does not exist, file
the file cimio_k_mgmt_parameters.def in folder Cim-IO\Management, which
contains 2 lines that define both parameters. The contents of the file look like
this:

Where the first line represents the frequency and the second line the timeout
value, both in 10th of seconds. In the figure 600 means 60 seconds and 100
means 10 seconds.

Scanner Process
The Scanner process is responsible for persisting lists containing tag names
whose real-time values are to be read from the DCS. For asynchronous lists,
these are periodically scheduled and presented to the interface’s DLGP
process. The unsolicited lists are also persisted and submitted to the DLGP
process but they are not periodically scheduled, the DCS will report by
exception the tags and their values when the tag given device dead band limit
has been violated, so the reply unsolicited messages may not contain values
for all tag in the lists, in fact the message may contain more value changes
than tags in the original list

Store Process
The Store process is responsible for sending reply asynchronous and
unsolicited messages back to the client. The asynchronous messages will be
sent to the asynchronous client task identified in the message routing. The
unsolicited messages are as well routed to the respective unsolicited client
task identified in the message.

12 2 Overview
If the Store file times out sending a reply message to the respective client
task, a Store and Forward (S&F) event is initiated. From this point and on, all
reply messages from the DCS will be buffered into the interface’s S&F store
file, until the communication with the corresponding client task returns to a
normal operation. At this point all messages buffered are sent to the client
which should acknowledge its reception, so the next message can be sent and
all buffered messages have been sent, so the Store process can resume the
submittal of messages directly to the destination client task, without the need
of an S&F sore file.

Forward Process
The Forward process is responsible for sending reply asynchronous and
unsolicited messages that have been buffered in the S&F store file for the
duration of the S&F episode and until all messages in the store file have been
sent. As when the Store process when the communication was normal, the
asynchronous messages are sent to the asynchronous client task identified in
the message routing. The unsolicited messages are as well sent to the
respective unsolicited client task identified in the message.

Cim-IO Interface Specific Processes


The process icons depicted in blue and in blue with a pattern fill, represent
processes created on the Cim-IO server side and on the IP.21 server side.
Depending of the configuration, the server side and client side could reside on
a single computer and on separate client and server computers.
The processes are specific to an instance of a Cim-IO interface type, e.g. an
instance of a Cim-IO for OPC UA interface type which communicates with a
specific OPC UA server.
On the Cim-IO server side, the number of processes associated to an
interface instance depend on the type of Cim-IO interface defined.

DLGP Process
At a minimum, a Data Logical Gateway Process (DLGP) must exist. This
process is responsible for all communication with Cim-IO clients, forwarding
requests to other processes associated with the interface instance. It is also
responsible for collecting all the reply messages arriving with data from the
DCS, which are intended to one Cim-IO client.

DIOP Processes
The other processes in the Cim-IO server side, depicted in blue in the figure
but with a pattern fill, are called Data Input/Output Processes (DIOPs), which
will be present only if the specific type of interface was developed with them
in mind. Some interfaces allow multiple versions of DIOP processes, such 2
DIOP Read processes, and so on. Some specific Cim-IO interfaces were
developed to support access to historical archives maintained by the specific
DCS.

2 Overview 13
Historical DLGP Process
This process, depicted in blue with a pattern fill, is responsible for the
retrieval of history from the DCS system. This process will be present only if
the specific type of interface was developed with it in mind, only few DCS
supported history archives available to external computers. This type of DLGP
process communicates directly with its counterpart in the client side, the
History Recovery CIM-IO external task, which runs as an IP.21 external task.

Cim-IO Client-Side Tasks


The number of tasks on the client side that are associated to a Cim-IO
interface instance will depend on the type of Cim-IO client used. At a
minimum, a Cim-IO client needs to have a Main client task-like (depicted in
solid blue color) that will request and receive data from a Cim-IO interface
instance. This is the case for example for the Aspen DMCplus product.
If the client used is IP.21, there will be, in addition to the Main client task, an
Asynchronous, and an Unsolicited client task, (depicted in blue with pattern
fill) and an optional History Recovery client task for a given interface instance.

Main Client Task


If an IP.21 Cim-IO client is used, the Main client task is responsible with the
definition of Cim-IO records in the IP.21 database, such as IO device records,
IO transfer records, etc. It is the only external task that interacts directly with
the interface’s DLGP process. It will download Cim-IO transfer records when
they are turned on or off.
For synchronous transfers, the Main task will wait for an immediate reply
message from DLGP, which shall contain real-time values of transfer record
tags. The scheduling of synchronous transfer records is under the control of
the Cim-IO client, for example, IP.21 records, if IP.21 is the client used.
For asynchronous and unsolicited transfers, the Main task downloads, only
once, the transfer records to the Scanner Process (depicted in yellow on the
server side). In this case, the Main task will not wait for a reply with data
from the DLGP process. The reply messages are instead sent back
asynchronously to the Asynchronous or Unsolicited client task.

IP.21 Asynchronous Client Task


The IP.21 Asynchronous client task is responsible for the reception of Cim-IO
asynchronous reply messages from the server side. These messages are
received either from the Store or the Forward process. If the communication
between IP.21 and the Cim-IO side has not been interrupted, the messages
are received from the Store process. Otherwise, the messages could be
received from the Forward process, if the Cim-IO server side had to buffer
real-time data while the communication with IP.21 was interrupted.

14 2 Overview
IP.21 Unsolicited Client Task
The IP.21 Unsolicited client task is responsible for the reception of Cim-IO
unsolicited reply messages from the server side. These messages are
received either from the Store or the Forward process. If the communication
between IP.21 and the Cim-IO side has not been interrupted, the messages
are received from the Store process. Otherwise, the messages could be
received from the Forward process, if the Cim-IO server side had to buffer
real-time data while the communication with IP.21 was interrupted.

IP.21 History Recovery Client Task


This client task receives historical reply messages from its counterpart
Historical DLGP process in the server side.

Ip.21 TSK_DETECT Client Task


This client task, depicted is color orange with a pattern fill, is created a first
time by the Cim-IO Connection Manager as soon as the first redundant
configuration connection is added to IP.21. It is responsible for the monitoring
of one or more redundant configurations in the IP.21 system. When necessary
and according to a given criteria, it will switch the focus of the IP.21 system
from the primary server to the secondary server, and vice versa.

Cim-IO Features
Note: A feature is available to a Cim-IO client only if the Cim-IO server with
which the client communicates supports it.

Read
A Cim-IO client can make a Read request to a Cim-IO server. For each tag
specified in the request, a (value, status, timestamp) triple is returned by the
server to the client.

Write
A Cim-IO client can make a write request to a Cim-IO server. The client
specifies tags and values in the request and the server returns a status and a
timestamp for each tag.

Unsolicited Read
A Cim-IO client can declare a list of tags, which have to be returned by the
server in an unsolicited manner, to a Cim-IO server. That is, for each tag in
the list, a (value, status, timestamp) triple is returned to the client by the
server if the difference between the current value and the previous value
returned exceeds a device deadband defined by the client.

2 Overview 15
Mixed Data Types
Cim-IO can perform the functions described above on different data types.
Cim-IO defines two classes of data types:
 Application data type: the type of the data under which the data is to be
returned to the client from the server (Read requests) or under which it is
sent to the server from the client (Write request).
 Device data type: the type of the data under which the data resides on
the device.
Although it is the responsibility of the Cim-IO server to make the conversion
between application data type and device data type, Cim-IO takes care of
data conversion across platforms.
In a single request, Cim-IO can process the following application data types:
 Single-precision floating-point values
 Double-precision floating-point values
 16-bit signed integer
 32-bit signed integer
 ASCII strings
 Structures
 Absolute time
Cim-IO can process the following device data types:
 Single-precision floating-point values
 Double-precision floating-point values
 16-bit signed integer
 32-bit signed integer
 ASCII strings
 Structures
 Absolute time
 Enumeration strings
 Ordinal
 Delta time
 External identifier
 Smart Data Types

Smart Data Types


Cim-IO client programs that perform control operations need information
about the state of data points in external devices. For example, the Cim-IO
software may not be able to write a data value to a point in an external
device if the point has the wrong attributes. One attribute, for example, may
indicate that the point is under operator control and the computer cannot
write to the point. In fact, whether a value can be written to a device can
depend on several point attributes. Cim-IO server tasks that communicate
with such devices must include logic to enable them to decide whether it is

16 2 Overview
possible to write to points. The server logic can vary widely between devices
but must be included in each server program.
Using a "smart" data type identifier in a Cim-IO request message, a client
program can request that a server program check to see if the point in a
device is in the proper state for output.

Data Recovery
If communication is broken between the Cim-IO client and the Cim-IO Server
or if the Cim-IO client goes down, Cim-IO can buffer data and send it to the
Cim-IO client once it is back up or once the link between the client and the
server has been re-established. If the Cim-IO server supports it, Cim-IO can
also recover historical data from the device and send it to the Cim-IO client.
(Refer to the chapters entitled “Cim-IO Store and Forward” and “Cim-IO
History Recovery” for more information).

Cim-IO Security
Cim-IO authenticates user names and the client node’s IP address. When a
Cim-IO client connects to a Cim-IO server, the Cim-IO server will verify if the
user name is known. If the user name is authenticated, the Cim-IO client will
have full access to the Cim-IO server. Otherwise, a failure to authenticate the
user name will cause a Cim-IO server to deny access to a Cim-IO client. A
node can be set up to accept or reject Cim-IO communications from nodes
with specified IP addresses. Nodes not in this list are treated the opposite of
nodes in the list (reject if on list and accept if not or accept if on list and
reject if not).
Cim-IO security does not include permission checking such as a Read or Write
only access to a Cim-IO server. It just verifies the user name, and a
successful authentication will provide full access to the Cim-IO server.
A NO_WRITE lock can be permanently installed for a site wishing to protect
devices from undesired write operations. Once this feature is enabled for a
system, no write operations will be allowed from that point on. Please request
from the AspenTech Support Desk the installation kit for the specific NO-
WRITE lock for the version(s) in use.

Cross-Version Compatibility
Versions of the Cim-IO kernel are cross-compatible as follows:
 All of the Cim-IO kernel components on a single node must be of the same
version.
 Cim-IO messages are compatible for Cim-IO 4.8 and later for all
supported platforms.
 Data save files (Store and Forward files) of the same type are compatible
across all Store and Forward programs that create files of that type. There
are currently 3 types of data save files:
o Type 0: kernels 4.8.0 to 5.0.0

2 Overview 17
o Type 1: kernels 5.1.0 to 5.5.0, as well as kernels 6.0.0 and later non-
Windows platforms
o Type 2: kernels 6.0.0 and later Windows platforms.
o The SFRecover program can read all 3 formats of store files.

18 2 Overview
3 Cim-IO Interface Manager

Note: This chapter provides a general discussion of the Cim-IO Interface


Manager. For more information about interface-specific settings, see the Cim-
IO Interface Manager Help, accessible from the application.
The Cim-IO Interface Manager application is installed with the Cim-IO
interface software on the Cim-IO server computer. It is used to configure
Cim-IO interfaces.
By default, the Cim-IO Interface Manager application appears automatically
when someone logs into the Cim-IO sever computer.

Initially you will see a message indicating that no Cim-IO interfaces have
been configured yet. Clicking Create a new one launches the Add Cim-IO
Interface Wizard.

3 Cim-IO Interface Manager 19


The Welcome screen explains the purpose of the wizard and lets you select
the type of Cim-IO interface to be configured.
Clicking Next invokes a screen that prompts you to name the interface.

20 3 Cim-IO Interface Manager


You can enter a new interface name or just accept the default name that is
provided.

Note: If you plan to use the interface with InfoPlus.21, do not exceed 10
characters.
Clicking Next invokes the Interface Configuration screen. This screen
prompts you to enter information that depends upon the kind of interface
being configured.

Clicking Next invokes the Summary screen. It explains what will happen
when you click the Next button again.

3 Cim-IO Interface Manager 21


Clicking Next invokes the Progress screen. It shows progress as the Wizard
configures the new interface instance.

Clicking Finish dismisses the Add Cim-IO Interface Wizard. You will see the
new interface instance has been configured and is running.

22 3 Cim-IO Interface Manager


Selecting the next higher node in the left pane (OPC Interface in the example
above) shows settings for all instances of the class of interface.

Selecting the highest node in the left pane (Cim-IO Interfaces in the example
above) shows information that pertains to all interfaces on the Cim-IO server
computer.

3 Cim-IO Interface Manager 23


24 3 Cim-IO Interface Manager
4 Cim-IO IP.21 Connection
Manager

Note: This chapter provides a general discussion of the Cim-IO IP.21


Connection Manager. For more information, see the Cim-IO IP.21 Connection
Manager Help, accessible from the application.
The Cim-IO IP.21 Connection Manager application is installed with InfoPlus.21
on an InfoPlus.21 server computer. It is used to establish and manage
connections to a Cim-IO interface running on a Cim-IO server computer.

Initially you will see a message indicating that no connections have been
configured yet. Clicking Create a new one launches the Add Cim-IO IP.21
Connection Wizard.

4 Cim-IO IP.21 Connection Manager 25


The Welcome screen prompts you to enter a device name that represents
the connection between the InfoPlus.21 system and the Cim-IO interface. You
can either enter a name or accept the default.

Note: If you plan to use the interface with InfoPlus.21, do not exceed 10
characters.
Clicking Next invokes the Configure Connection screen which prompts you
to enter the name of a Cim-IO server computer and select a Cim-IO interface
instance that was previously created on that computer by the Cim-IO
Interface Manager.

26 4 Cim-IO IP.21 Connection Manager


Clicking Next invokes the Summary screen which shows you what will
happen when you click the Next button again.

Clicking Next invokes the Progress screen which displays progress as the
connection is established. A Cim-IO device record is created in the local

4 Cim-IO IP.21 Connection Manager 27


InfoPlus.21 database. Then Cim-IO client tasks are added to the InfoPlus.21
defined task list and started.

Clicking Finish dismisses the wizard. You will see the new Cim-IO connection
appear in the Cim-IO IP.21 Connection Manager.

Selecting Cim-IO Connections in the left pane displays global Cim-IO


configuration information that applies to all Cim-IO connections.

28 4 Cim-IO IP.21 Connection Manager


4 Cim-IO IP.21 Connection Manager 29
30 4 Cim-IO IP.21 Connection Manager
5 Cim-IO Installation and
Setup

This chapter describes the general procedure for the installation and setup.
Implementation of Cim-IO consists of the following steps:
 Installation of any Cim-IO client or server software
 Configuration of the Cim-IO client and server software

Client and Server Installation


Cim-IO is installed as part of the aspenONE Manufacturing Execution Systems
(MES). See the Aspen InfoPlus.21 Product Family Installation Guide for
installation instructions.

Client and Server Configuration


After the Cim-IO client and Cim-IO server software has been installed, there
are configuration steps to be done to have each piece operate and
communicate as a Cim-IO interface.
Two tools are available to automate the Cim-IO configuration process: Aspen
Cim-IO Interface Manager and Cim-IO IP.21 Connection Manager.
These standalone desktop applications are launched from the Start menu or
Start page. Help is included and accessed through the applications.
The Cim-IO Interface Manager:
 Defines TCP/IP services for the Cim-IO server processes.
 Sets up the Cim-IO server. Refer to the specific Cim-IO server user’s
guide for any further configuration issues to be done such as setting up
command line arguments, setting up an initialization file, etc.
The Cim-IO IP.21 Connection Manager:
 Defines a Logical Device for each Cim-IO server DLGP process that a Cim-
IO client will communicate with.
 Sets up the IP.21 Cim-IO client, including creation of external task
records, device record, Cim-IO logical devices, etc. For Cim-IO client

5 Cim-IO Installation and Setup 31


configuration information for other clients using Cim-IO, refer to the
documentation for that specific AspenTech product.

The Cim-IO Directory Structure


When Cim-IO is installed, the following directories are created under the Cim-
IO root directory:
Directory Name Contents

code Executables
commands Command procedures
etc Definition files
include Include files
io Other directories containing the code for the different Cim-
IO servers installed on the system
lib Object libraries
log Cim-IO log file
example source Example source for development of a Cim-IO client and a
Cim-IO server
Management Files for the Cim-IO Manager

Cim-IO Environment Variables


Cim-IO uses environment variables to control certain aspects of its behavior.
This section will list the utilities provided to define them, on the client side
and on the server side, the variables and show you how to set them up.

Utilities to Set Cim-IO Variables


Some of the Cim-IO variables are specific to the client side, only a subset of
them can be defined in the server side. Depending on your configuration,
single computer or client/server, and whether your client is IP.21 or not, you
may need one utility or the two utilities provided.

32 5 Cim-IO Installation and Setup


Setting Cim-IO Variables in the Server Side
If Cim-IO has been installed standalone or your Cim-IO client is not IP.21 (for
example, DMCplus). To enter Cim-IO variables on the computer where Cim-
IO has been installed, the Cim-IO Interface Manager (CIM) is used.
As soon as CIM is started and whenever the user clicks the root node Cim-IO
Interfaces on the top level in the left most pane, the tabs used for
configuring Cim-IO are shown. The left most tab, named Variables, displays
server side Cim-IO variables that can be specified.

5 Cim-IO Installation and Setup 33


Setting Cim-IO Variables in the Client Side
The Cim-IO variables only on sites where IP.21 has been installed and
therefore all Cim-IO client modules are installed. To enter Cim-IO variables on
the computer where IP.21 has been installed, the Cim-IO Connection Manager
(CCM) is used.
As soon as CCM is started and whenever the user clicks the root node Cim-IO
Connections on the top level in the left most pane, the tabs used for
configuring Cim-IO are shown. The left most tab, Variables, displays the
server side Cim-IO variables that can be specified.

Note: The Cim-IO variables available on a Cim-IO standalone installation that


are modified with the Cim-IO Interface Manager, will also be included in the
Cim-IO Connection Manager

Cim-IO Variables
The Cim-IO variables are:
Enable changeover standby cleanup (default value is check box cleared):
This redundancy specific variable is meaningful on an InfoPlus.21 Client
Server computer configured to receive values from redundant Cim-IO Server
computers. It takes two possible values.

Check Box Variable Text Value

cleared Do not use changeover cleanup


selected Use changeover cleanup

The scenario where the variable is applied is as follows:

34 5 Cim-IO Installation and Setup


If the network connection between the InfoPlus.21 Server and both redundant
Cim-IO Server nodes goes down; however, the two redundant nodes remain
active (gathering data and storing it). This variable regulates the behavior of
the Changeover task in InfoPlus.21 to determine what to do with the two
store files once the network connection is reestablished.
Use changeover cleanup causes the Changeover task to tell the node that
becomes secondary to clean up its scan and store lists and to clear its store
file. Only the store file from the primary node will be accepted and processed.
Do not use changeover cleanup causes both store files to be forwarded
and processed. Duplicate and older values will be rejected.
Changeover timeout (default is 1 tenth of a second):
This redundancy specific variable is meaningful on an InfoPlus.21 Client. It
takes the following values:
Selectable Values

1 tenth of a second
½ a second
1 second
10 seconds
30 seconds
1 minute
5 minutes
10 minutes
30 minutes
1 hour

The scenario where the variable is applied is as follows:


When performing a changeover, the Cim-IO client side will attempt to
terminate its TCP/IP connection to the failed server, in case the server is still
running in some partially functional state. For every transfer record, the Cim-
IO client side will issue a stop get, stop put, or cancel request waiting this
amount of time for a response, before closing the TCP connection and
establishing a connection to the secondary server.
Enable client boxcar deadbanding (default value is check box cleared):
This unsolicited data specific variable is meaningful on an InfoPlus.21 Client.
It takes the following values:
Check Box Variable Text Value

Cleared Do not use boxcar deadbanding


Selected Use boxcar deadbanding
The scenario where this variable is applied is as follows:

5 Cim-IO Installation and Setup 35


Vlastknown

Y-Axis
Vprevious

Deadband
Tupdate

Tprev Tcurrent

Time

Customers have noted that when using Aspen Process Explorer to view
trends, trends from Cim-IO Unsolicited points that change very infrequently
on the device can have a long, shallow sloped line when joining a new value
that arrives, although a straight line with a spike would be more accurate.
Do not use boxcar deadbanding causes the Cim-IO client to simply join
the current value to the previous as indicated by the dashed line. This is the
default behavior.
Use boxcar deadbanding causes the Cim-IO client to monitor the gap
between points. If the gap between the current point time (Tcurrent), and the
previous point time (Tprev) is greater than twice the update time
(2*Tupdate), the Cim-IO client will insert in history an artificial point with
timestamp Tcurrent-Tupdate and value Vlastknown, where Vlastknown is the
last known value of the point before the present value. Then it will insert in
history the point’s present value. Note that the deadband used in this
algorithm is defined on a point-by-point basis in the corresponding transfer
record.

Note: As shown in the figure, if the point changes several times within its
deadband, Vlastknown may not be equal to Vprevious, the value of the point
at Tprev.
Inactive PUT when IO_DEVICE_PROCESSING is set to ‘ON’ (default
value is check box cleared):
This Put specific variable is meaningful on an InfoPlus.21 Client Server
computer configured to output values to Cim-IO Server computers. It takes
the following values:

36 5 Cim-IO Installation and Setup


Check Box Variable Text Value

cleared Activate Put when IO_DEVICE_PROCESSING is set to ‘ON’


selected Do not activate Put when IO_DEVICE_PROCESSING is set to ‘ON’

By default, when an IoPutDef record’s parent IoDeviceRecDef record has its


IO_DEVICE_PROCESSING set to ON, the Cim-IO client is notified, and the
device’s Put records are activated.
Activate PUT when IO_DEVICE_PROCESSING is set to 'ON' or 0 keeps
the default behavior.
Do not activate PUT when IO_DEVICE_PROCESSING is set to 'ON' or 1
causes Cim-IO to ignore this change. The Put record will then be sent when
the record is activated.

Note: Turning a Put record’s IO_RECORD_PROCESSING field ON does not cause


the value to be sent, and this variable does not change that behavior.

Update points if status changes or the deadband is exceeded (default


value is check box cleared):
Check Box Variable Text Value

cleared Update points if status changes or the deadband is exceeded


selected Do not update point if status is BAD

This variable is meaningful on an InfoPlus.21 Client Server computer. It


controls whether a point will be updated when its status is BAD.
Update points if status changes or the deadband is exceeded or 0 will
cause the point to be updated whenever its status changes or its deadband is
exceeded.
Do not update point if status is BAD or 1 will cause the Cim-IO clients to
ignore data value changes when the data quality remains BAD.
Dual Failure Delay (default value 30 seconds)
This redundancy specific variable is meaningful on an InfoPlus.21 Client. It
takes the following values:
Selectable Values
1 tenth of a second
½ second
1 sec
10 secs
30 secs
1 min
5 min
10 min
30 min
1 hour

The scenario where the variable is applied is as follows:

5 Cim-IO Installation and Setup 37


If the network connection between the InfoPlus.21 Server and both redundant
Cim-IO Server nodes goes down, but the two redundant nodes remain active
gathering data and storing it. This variable regulates the behavior of the
Changeover task in InfoPlus.21, on the event that communication with the
secondary node comes up first, to decide whether it should become the one
active by allowing reasonable time for the primary to restart. If the primary
system does not come up during the timeout, then the secondary node
becomes the active system. In this way Cim-IO reassures that the primary’s
store file will be the one to be recovered.
Max log size (default value 1 Mb)
This variable is meaningful in both InfoPlus.21 Clients and Cim-IO Server
computers. It represents the maximum size in MB that Cim-IO log files can
reach. This max applies the standard log files CIMIO_MSG.LOG and its
backup. It is recommended to set this value to 20.
Max ping Failures (default value 3):
This communication specific variable is meaningful in both InfoPlus.21 Clients
and Cim-IO Server computers. This is the number of Cim-IO Ping calls that
must fail in order for Cim-IO to consider that a connection is down.
Cim-IO on unavailable flag (default value Update timestamp to most
recent time + 0.1 seconds):
This variable is meaningful on an InfoPlus.21 Client Server computer.
When a point becomes unavailable, its status is set to bad. Since this is an
event, not a data transmission, there is no timestamp associated with it. This
variable regulates how to treat timestamp on that circumstance.
Update timestamp to current time uses the current time for this event.
Update timestamp to most recent time + 0.1 seconds causes Cim-IO to
use the point’s last timestamp plus 0.1 seconds.
Ping frequency (sec) (default value 60 seconds):
This variable is meaningful in both InfoPlus.21 Clients and Cim-IO Server
computers. It takes the following values:
Variable

1 second
5 secs
10 secs
30 secs
1 minute
2 min
5 min
10 min
30 min

This is the rate at which Cim-IO connections will be tested for “aliveness” with
a Cim-IO Ping.
Cim-IO rescan logical devices (default value Classic):

38 5 Cim-IO Installation and Setup


This redundancy specific variable is meaningful on an InfoPlus.21 Client
computer. It takes the following values:
The variable indicates to Cim-IO client tasks whether redundancy is enabled
or not. When enabled, the client tasks follow device reconfigurations made by
the Changeover task because of a switch, thus the name of the variable.
Redundant: Cim-IO Changeover used for a Redundant setup. The client
and the Changeover task creates a special file in the CIM-IO\io folder with a
.ldv extension. This file is used for coordinating the changeover process and
therefore should not be modified.
Classic: Cim-IO runs with no redundancy enabled. No redundant
processing or verification is done by the clients, even if all devices in the
system have been configured to use redundancy.

Note: If one or more devices have been configured to support redundancy


and this variable is not enabled, none of the redundancy events will be
detected or followed.
Cim-IO send cleanup cancels (default value Send only a DISCONNECT )
This redundancy specific variable is meaningful on an InfoPlus.21 Client
computer.
The scenario where this variable applies is as follows:
When one of the redundant nodes has failed, the Changeover task must send
a cleanup request to this node to cleanup all files and the connection. By
default, the task also sends requests to cancel all declared unsolicited tags. If
the switch happened because of a network failure, there is no
communications with the node and therefore every attempt to cancel tags will
be timed out. If the number of unsolicited tags and transfer records is
significant, the cancel requests could delay considerably the overall
changeover operation. For cases like this, this variable provides an option to
skip cancelling unsolicited tags as part of the cleanup.
Send CANCELs when cleaning up causes Changeover to cancel unsolicited
tag declarations as part of the cleanup.
Send only a DISCONNECT when cleaning up eliminates the cancelation of
unsolicited tag declarations.
Reject old data from Store and Forward (default value is Accept old
data):
This S&F specific variable is meaningful on an InfoPlus.21 Client computer. It
takes the following values:
Check Box Variable

cleared Accept old data from Store and Forward


selected Reject old data from Store and Forward - All data will be deleted
from store file for all tags!!!

Two of the scenarios where this variable applies are:


1 After recovering from a failure the single Cim-IO server or, in a redundant
configuration, one or both Cim-IO servers forward S&F files with data
stored during the failure. In this scenario, the secondary node may be

5 Cim-IO Installation and Setup 39


resending data from a file that has already been sent from the primary
node.
2 You decide to manually demand the recovery of a previously saved S&F
data file.
This variable regulates the behavior of the Cim-IO client tasks when you are
re-recovering data either automatically or on demand from a backup set of
store files, some of which may have already been inserted into the
InfoPlus.21 database.
Reject old data from Store and Forward causes the Cim-IO client to skip
any previously added store files. As soon as the client tasks detects that while
processing forwarded data for a tag, a sample is detected with a timestamp
older than the timestamp of the most recent value inserted, the whole file will
be rejected.
Accept old data from Store and Forward causes the Cim-IO client to
process all the files being recovered.

Setting Cim-IO Server Security Options

To modify Cim-IO security, select the second tab, Cim-IO Server Socket
Security. You can choose to enable or disable userid authentication in the left
box. The right box allows you to enable socket security for this node. Select
the check box to enable socket security. Click Allow to allow the selected IP
addresses and disallow all others. Click Disallow to disallow the selected IP
addresses and allow all others. Enter IP addresses in the four dot-separated
boxes. Use -1 to specify “any” in an address. For example, 192.168.1.-1
specifies all machines in the 192.168.1.X subnet, (subnet mask
255.255.255.0). After typing in an IP address, click Add to add the address
to the list. Note that the Add button is only selectable if the IP address is
valid. If you wish to remove addresses from the list, select them from the
right-hand list and click the Remove button. If no IP addresses are entered,

40 5 Cim-IO Installation and Setup


all connections will be allowed no matter which of Allow/Disallow is
selected. Note that the selection applies only to the Cim-IO servers on this
node; Cim-IO clients will never reject a connection.

Setting Diagnostics Logging Options


See the “Cim-IO Diagnostics Logging” section.
The figure below shows the Cim-IO Interface manager main screen when
started up. Note the Diagnostics Logging Tab is the 3rd tab from the left.

5 Cim-IO Installation and Setup 41


The figure below shows the Cim-IO Connection Manager screen on startup.
Notice the Diagnostics Logging is the 2nd tab from the left in this form.

Cim-IO Diagnostics Logging can be configured separately in InfoPlus.21 Client


or Cim-IO Server computers. See the section “Cim-IO Diagnostics
Logging” The Cim-IO Interface Manager and the Cim-IO Connections
Manager provide the same diagnostics configuration tool. Diagnostics can be
easily turned on and off by using the third tab, Cim-IO Diagnostics
Logging. On the left-hand side, enter the values you wish for your logging
session. Click on any of the fields on the right-hand side and click
Add/Update to log by application name, log category, CIMIO logical device,
log message ID number, or task name.

42 5 Cim-IO Installation and Setup


Category has its own special category selection box as shown above. Tabs
let you choose among options including enabling socket and logic logging,
enabling various types of message logging, and application-specific logging.
Each category item, other than messages, can be logged to a separate log
file. If you select the Separate log file check box, you can log each item to a
log file of your choice. To log to the default log file (cimio_diag.log), clear this
check box for that particular item. After you have modified these settings as
you wish, click the Add/Update button to update the configuration to reflect
your new settings. Click OK to return to the previous window.
Other items have a more generic selection box, shown below, that allows you
to select an item, and, if you wish, log it to a separate file. To use the default
log file cimio_diag.log, do not select the check box. If you wish to use another
file, select the check box and complete the Log file box.

Note: The Application Category OPCLOG provides diagnostics logging for


OPC DA. OPC UA diagnostic logging is not provided.

Click Add/Update to modify the current configuration shown above, and


then press OK to return to the previous window. Please see the section
entitled “Error Processing” for more information on Cim-IO Diagnostics, error
messages, and message numbers.
To save your configuration, click the Save Configuration button in the Cim-
IO Diagnostics Logging tab.
Extended Print Option for ASCII Data in Diagnostic Files By default
diagnostic files showing ASCII values in transfer records display a single line
containing the first 256 characters associated with each ASCII value. If the
key value HKLM\Software\Aspentech\CIM-IO\ExtendAsciiValuePrintOption of
type DWORD is defined in the Windows registry with a value of 1, two

5 Cim-IO Installation and Setup 43


additional lines will be printed for each ASCII value: the 1st additional line
containing the ASCII value characters in hexadecimal format and the 2nd
additional line containing a ruler showing the byte count for the characters
printed. This option aids to identify control characters being transmitted as
part of an ASCII value.

Diagnostic file extract example showing standard ASCII values

Example using extended print option for ASCII values

Cim-IO Security
Cim-IO Security now exists as two components: UserID security and socket
security.
Cim-IO UserID security is by default turned off when Cim-IO is installed. If
you have installed the Security Components and wish to enable security. You
use the Cim-IO Interface Manager, Socket Security tab to enable or disable
Cim-IO UserID security. Simply check the box titled Enable authenticated
security.

44 5 Cim-IO Installation and Setup


Cim-IO socket security allows you to configure a node to accept or reject
connections from various nodes based on IP addresses. If a node is not in the
list of nodes to be accepted/rejected, the default setting is used. See Setting
CIM-IO Servers Security Options above for instructions on how to configure
the security set-up you desire. Note that security only applies to servers, and
only to the node on which it is configured. Cim-IO Clients will never refuse to
connect to Cim-IO servers based on this setting. Thus, if you upgrade your
client side to the latest version of Cim-IO but have a server side that is pre-
2004.1, this server node will not be able to make any use of socket security.

Cim-IO Checksum
There was an incident where Cim-IO messages seemed to be corrupted. The
tag list in some of the requests were not complete, part of the tag names was
overwritten by spaces. The problem was caused by a faulty network card.
Cim-IO uses TCP/IP because the delivery and integrity of the packets are
supposed to be guaranteed, yet the problem happened. Cim-IO analyses
messages and checks the integrity of message structures as much as possible
but it could not detect an erroneous tag since, the corruption did not affect
the structure of the message.
An enhancement was made in Cim-IO to include a checksum for each Cim-IO
message. The sender calculates a checksum on the message and includes it in
the message, the receiver extracts the checksum from the message header,
calculates its own checksum on the message it received and compare both
checksums. If the checksums don’t match, the message is rejected and a
message is logged to the Cim-IO log file.
Whether the checksum calculation is enabled or not is user configurable to
insure backward compatibility will older version of Cim-IO. The user has to
install the newer version of Cim-IO and turn on the checksum functionality on
both the Cim-IO client and Cim-IO server side to have the checksum active. If
a newer version of Cim-IO is installed on a machine that needs to
communicate with an older version of Cim-IO, the checksum functionality will
have to stay turned off on the newer system to communicate successfully. A
situation could arise where a new Cim-IO version could need to talk to a new
Cim-IO version with the checksum enabled and to an old Cim-IO version
which does not support the checksum functionality. To allow for this kind of
configuration, it is possible to enable the checksum on machine selectively
depending on what kind of other Cim-IO system it is talking to. The checksum
functionality is enabled and configured with the Cim-IO Interface Manager
utility.

5 Cim-IO Installation and Setup 45


In the example above, the checksum functionality is switched to ON. The
node NODE1 is specified in the exclusion list so this node will calculate and
send a checksum to all the Cim-IO machines with which it communicates
except for NODE1 and it expects all the Cim-IO machines to send a checksum
except for NODE1.

Manager Parameters
The Cim-IO Manager will periodically check the status of a Cim-IO server by
pinging the Cim-IO server’s processes. The timeout value and the check
period can be changed for the ping function.
This is the 5th tab on the Cim-IO Interface Manager, and the 4th tab on the
Cim-IO IP.21 Connection Manager.

46 5 Cim-IO Installation and Setup


Connect timeout (Sec) - The time, in seconds, that the Cim-IO Manager will
wait on a response from a Cim-IO server process.
Health check frequency (Sec) - The frequency, in seconds, in which the
Cim-IO Manager will check for the existence of a Cim-IO server’s processes.

5 Cim-IO Installation and Setup 47


48 5 Cim-IO Installation and Setup
6 Cim-IO Test Utility Program

The Cim-IO Test Utility Program, cimio_t_api, is a Cim-IO client program


used to test the proper operation of Cim-IO servers by providing a known,
working client. The Test Utility program is supplied with the Cim-IO core.
This program consists of a simple menu-driven mechanism to allow you to
perform several basic functions manually to test the operation of Cim-IO. It is
in the code subdirectory of your Cim-IO install.

Starting the Cim-IO Test Utility


Program
Before Running the Cim-IO Test Utility
Program
cimio_t_api can communicate interactively with any Cim-IO server defined
in the cimio_logical_devices.def file. For the program to run properly, this
file must be modified as described in the “Modifying the Logical Device File”
section in the “Cim-IO Installation and Setup” chapter.

To start the Cim-IO Test Utility Program:


 Click Start | Programs | AspenTech | Aspen Manufacturing Suite |
Cim-IO | Test API. This starts the utility from a MS-DOS window.
Another way to start the Cim-IO Test Utility Program is to run cimio_t_api.exe
in the code subdirectory of your Cim-IO install.

6 Cim-IO Test Utility Program 49


Running the Cim-IO Test Utility Program
When the program starts, the following menu is displayed with the various
test options:

To select a function, enter the associated number 1 through 9 or a through x


(alphabetic characters are lowercase), and press Enter or Return. In some
cases, you will be prompted for more information. Use the information in this
chapter to assist in supplying the required values.
The test program calls various test subroutines based on the user's selection.
Each test subroutine prompts you to provide the appropriate parameters for
that test.
Below is a description of each of the functions provided by the Cim-IO Test
Utility program.

Data Transfer Options


Note: Cim-IO cannot transfer data for InfoPlus.21 tags with tagnames
containing cent or degree signs.
These options allow you to perform simple functions (GET and PUT) to verify
the operation of Cim-IO. When selected, they prompt for information that
may require further explanation:
 List ID: A group of one or more tag names requires a unique list ID
number. This ID number must be negative unless the list has previously
been established with the server by using a negative list ID number, and
the list of elements to be read or written have not been modified.
 Access Type: Asynchronous data collection may not be supported by all
servers. The Cim-IO simulation server handles only synchronous data
transfers.
 Tagname Entry Options: As an alternative, the program allows you to
input tag name and data type information from a disk file. The section
entitled Automating Parameter Input at the end of this chapter provides
more information.

50 6 Cim-IO Test Utility Program


 Output Type: When testing PUT operations using the test utility, you will
ordinarily want to simply output a value to the device. If necessary, it is
also possible to send NaN (Not a Number), or to send a flag to the server
indicating that the value is suspect or not to be sent to the device.
Individual servers may or may not be equipped to handle such requests.
Please see the documentation supplied with the product in question for
more details.

Status Fields
V7.1 and later offers status fields. Previously, there was not an easy way to
clearly discriminate and keep an account of the statuses of points in Get
records. To help monitor the status more effectively, the following fields have
been added to these transfer records:
New Field Name Description

IO_#_GOOD_TAGS Number of good DCS tags processed


IO_#_SUSPECT_TAGS Number of suspect DCS tags processed
IO_#_BAD_TAGS Number of bad DCS tags processed
IO__#_SCAN_OFF_TAGS Number of “scan off” DCS tags processed

This addition will give an indication as to whether the situation is stable,


improving, or declining.
Note that SCAN OFF will also be counted as a BAD TAG as this would be the
status marked on the destination tag.

6 Cim-IO Test Utility Program 51


Testing Cim-IO GET
This option reads one or more data values from a Cim-IO logical device
associated to a running Cim-IO interface instance previously defined and
started. The logical device may be any Cim-IO server.
For the examples in this user guide, we will be using an instance of Cim-IO
for OPC, configured to communicate with a local InfoPlus.21 system installed
and running on the same local server. In real life you may be testing access
to a local/remote interface not associated to InfoPlus.21.

Note: You may have to add a logical device before this option is exercised, if
none has been defined. You can add one, temporarily, using cimio_t_api
option 2, Test Adding a Logical Device, which is explained later.

Example

52 6 Cim-IO Test Utility Program


Testing:
1 Select this option from the menu, using the logical device name for the
server and entering the tag name ATCAI, which in our example is defined
with an IP_AnalogDef definition record in the InfoPlus.21 database.
2 Verify that the value returned is the same as that found in the InfoPlus.21
database.

Asynchronous I/O:
Test-API will ignore the incoming asynchronous reply and thus will not print
out a value. If you wish to send the asynchronous reply to an asynchronous
client process, type in the node and process name of the asynchronous
receiver process when prompted (“receiver node” and “receiver service”).

Note: When reading a value of type Time Entity (#6), the value may be
incorrect by 1 hour.

Testing Cim-IO PUT


This test writes one or more data values to a Cim-IO logical device. The
logical device may be any Cim-IO server.

6 Cim-IO Test Utility Program 53


Example

Testing
1 The Cim-IO server must be running.
2 Run the test program using the logical device name associated to the
server and entering an arbitrary tag name and value.
3 Verify that the value specified was written to the specified tag on the
server.

Testing Performance
This option allows the user to perform one or more test data access cycles
(GET or PUT) and displays the values and/or statuses returned. This test also
provides statistical information such as the average number of tags read and
written per second and the average time of GET and PUT requests. This test
supports REAL, DOUBLE, LONG and SHORT data types.

54 6 Cim-IO Test Utility Program


After selecting this option, you are prompted for the following information:
 Number of Test Cycles: the number of GET or PUT requests to issue.
 Type of Request: whether to issue GET requests, PUT requests, or both.
 Delay Time: amount of time to wait between requests. This value may be
a positive integer for the request to complete within the specified time, or
a negative integer to wait the specified time before issuing the next
request. If zero is entered, there will be no delay between requests.
 Random or Incremental Output (output only): indicates whether to output
random numbers or incremental values (that is, a series of increasing
values).
 Tolerance: compares the data values to the specified accuracy.
 Periodic display: indicates whether to display the results after each
request completes, or after completing all tests.
 Display information for all tags indicates whether to display data as for
GET and PUT options.
 Number of cycles before displaying results indicates how many cycles
should pass before beginning to display intermittent results (if applicable).

6 Cim-IO Test Utility Program 55


Example

56 6 Cim-IO Test Utility Program


List Handling Options
Testing Cim-IO DECLARE
This test specifies a group of tag names whose values are to be obtained as
unsolicited values. Because the Cim-IO test utility program does not process
asynchronous values, this function only declares one or more tag names as
unsolicited tag names. However, unsolicited data may be sent to the test
receiver utility program. See the “The Test Receiver Utility” section for more
information.
There are two deadband types that may be specified for the tags declared:
 Absolute – data values are returned only if they have changed more than
the amount specified.
 Relative – data values are returned only if they have changed more than
the percentage specified.

6 Cim-IO Test Utility Program 57


Example

Testing
1 The Cim-IO server must be running.
2 Run the test program using the logical device name for the simulation
server and entering an arbitrary tag name and deadband.
3 Verify that the tag name specified was added to the server.

Testing Cim-IO CANCEL


This option notifies the server to stop processing a list that was previously
declared.

58 6 Cim-IO Test Utility Program


Example

Testing Cim-IO GET Historical Data


This option reads historical data values from a Cim-IO logical device. It is only
available for those devices that allow access to historical data.
For our example, we added an instance of Aspen’s Cim-IO for IP.21 interface,
which communicates with the local InfoPlus.21 system and can retrieve
InfoPlus.21 history via its historical DLP process.
See the documentation supplied with the server to be used, for information
about its capability to retrieve history.

6 Cim-IO Test Utility Program 59


Example

Testing
1 Make sure that a historical service name is included in the logical device
definition as shown:
I_IP21_1 W12R2V1101 CIMIOSETCIM_200 CIMIOSETCIMH_200
2 Select the option from the menu and enter the required values to access
historical data associated with a point in the logical device.
3 Verify that historical data is returned for the point specified.

Testing Cim-IO Stop GET


This test notifies a Cim-IO logical device that a list of tags that had previously
been programmed for periodic scanning is not to be scanned any more.

60 6 Cim-IO Test Utility Program


Example

Disconnecting From a Device


This test terminates a connection between the program and a Cim-IO logical
device. A connection is first established with the server by sending a GET,
PUT, DECLARE or CANCEL request.

Example

Miscellaneous Options
Test Cim-IO Time Functions
This option tests the Cim-IO time conversion functions by determining the
current time and printing it on the screen. No input parameters are required.

6 Cim-IO Test Utility Program 61


Adding a Logical Device to Cim-IO
Important note: If InfoPlus.21 is installed and running on the system where
a logical device will be added with cimio_t_api, first verify whether you
should use the utility IP.21 Cim-IO Connection Manager instead. The
latter will add an IP.21 device record, external tasks associated with the
logical device, etc. cimio_t_api will not, it just updates the
cimio_logical_devices.def file, so basic tests could be performed on a Cim-
IO interface. The option is meant to be used on systems not using InfoPlus.21
or to add temporarily a logical device which it is not intended to modify an
existing InfoPlus.21 system.
This option adds a logical device definition to the cimio_logical_devices.def
file. The information needed is entered as described below:

Example

Testing
1 Select this option and enter the following information to add a Cim-IO
logical device to the system including:
o Cim-IO logical device name
o Computer network node name where the logical device server software
runs:
o Physical device name. The physical device name is the TCP/IP service
name that the Cim-IO server task uses to communicate with the Cim-
IO client task.
2 Check the contents of the definition file to verify that the file contains a
line like the following:
I_OPC_2 W12R2V1102 I_OPC_2

62 6 Cim-IO Test Utility Program


Deleting a Logical Device
Important note: If InfoPlus.21 is installed and running on the system where
a logical device will be added with cimio_t_api, first verify whether you
should use the utility IP.21 Cim-IO Connection Manager instead. The
latter will delete an IP.21 device record, external tasks associated with the
logical device, etc. cimio_t_api will not, it just updates the
cimio_logical_devices.def file. The option is meant to be used on systems
not using InfoPlus.21 or to add temporarily a logical device which it is not
intended to modify an existing InfoPlus.21 system.
This option removes a logical device definition from the
cimio_logical_devices.def file.

Example

Testing
1 Select the function from the menu and specify an existing logical device to
be deleted.
2 The test program deletes the associated text string from the
cimio_logical_devices.def file.
3 Check the contents of the definition file to verify that the proper line was
deleted from the file. Other lines will not be affected.

Logging an Error Block


An error block is a structure containing information regarding the degree of
success of an I/O request. It contains one or more errors for a given
operation. This test allows you to test Cim-IO error logging by specifying one
or more error codes and their related facility numbers for which a message is
to be printed in the error log file cimio_msg.log. This file is described in the
“Error Processing” section.

6 Cim-IO Test Utility Program 63


Example

Testing
1 Select an error code and facility number from one of the error definition
files, as described in the “Error Processing” section. For example, list the
cimio_x.def error definition file to get the facility number and one of the
error codes listed in the file (this error definition file is associated with the
Cim-IO Simulation server device).
2 Select this option, enter an error code and facility number at the prompt,
and exit the program. More than one error may be entered if desired.
3 After the function completes, verify that the last message in the
cimio_msg.log file contains the error message that was specified. The
message should contain lines like the following:
23-AUG2018 07:40:20.746, Logged by CIMIO_T_API1434988500912 on node W12r2V1101:
CIMIO_X_STATUS_BAD, Bad Status

Note: One message will be printed below the first line for each error that
was entered.

Logging a Message
This option allows you to test Cim-IO message logging. The message you
supply is printed to CIMIO_MSG.LOG.

Example

Testing
1 Select this option from the menu and enter a text string for the message
you want to send to CIMIO_MSG.LOG.
2 Check the CIMIO_MSG.LOG file to verify that the message has been
stored in the CIMIO_MSG.LOG log file in the log subdirectory of your
Cim-IO directory. It should look something like this:\
23-AUG-2018 08:12:29.405, Logged by CIMIO_T_API1534988500912 on node W12R2V1101:
This message is typed on the 2nd line

64 6 Cim-IO Test Utility Program


Retrieving an Error Message
This option allows you to display a Cim-IO error message on the screen,
based on an error code and facility number supplied.

Example

Please press RETURN to continue...

Testing
1 Select an error code and facility number from one of the error definition
files (see the Error Definition Files section in the “Error Processing”
chapter).
2 Select this option from the menu and enter an error code and a facility
number.
3 Verify that a character string containing the equivalent error message is
returned.

Retrieving a Status Message


This option allows you to test Cim-IO error message retrieval. The relevant
error block information and the appropriate message are printed on the
screen.

Example

Testing
1 Select a status code from the cimio.h file in the include subdirectory of
your CIM-IO directory.
2 Select a facility number and driver status error code from one of the error
definition files.
3 Select this option. Enter a value indicating the number of status blocks to
process and enter the data for each status block value.

6 Cim-IO Test Utility Program 65


4 Verify that the text string printed corresponds to the one associated with
the error code in the appropriate error definition file.

Shutting Down a Device


This option sends a shutdown message to a Cim-IO server component. You
are prompted for the logical device name associated with the Cim-IO server
software.

Example

Testing
1 Make sure that the interface server instance, CIMIOSETCIM_200 in our
example, has a logical device name defined, I_IP21_1 in our example.
2 Select this option from the menu and enter the logical device name for the
server.
3 Verify that the interface instance server processes have stopped running.

Enable Scanner
This option sets a flag to indicate that the program should send GET requests
to the Cim-IO Store and Forward scanner, rather than to the DLGP.

Example

Disable Scanner
This option sets a flag to indicate that the program should send GET requests
to the DLGP, rather than to the Cim-IO Store and Forward scanner.

66 6 Cim-IO Test Utility Program


Example

Get list of OPC UA endpoints from manager


This option obtains the list of OPC UA endpoints from the given node and
using a specific Cim-IO Manager:

6 Cim-IO Test Utility Program 67


ListOPUAEndPoints App

Get List Process Data Sources from


manager

68 6 Cim-IO Test Utility Program


ListProcessDataSources App

Automating Parameter Input


When using the Cim-IO Test Program (cimio_t_api) with some options (GET,
PUT, DECLARE, CANCEL, GET HISTORICAL DATA), there are two ways to
specify the tag information that is transmitted to the Cim-IO server:
 Entering tag information from the keyboard one tag at a time.
 Entering tag information into a text file and specifying the name of the file
when prompted by cimio_t_api.

Tag Name Entry Options


When using an option that requires tag name and data type information, you
will be prompted for the mechanism to be used to enter this information. The
menu appears as shown below:
1) Enter tag information one tag at a time
2) Obtain tag information from text file
Please select tag name entry option [1]:
Please enter filename
If tag name entry option 2 is selected, the name of the file containing the tag
names and corresponding data types must be specified. The program then
attempts to perform the data access function requested using the information
in the file. The results are printed on the screen.

Tag File Format


Each function uses its own format for the tag files. These files may be created
and modified using a text editor. In general, the files consist of one line for

6 Cim-IO Test Utility Program 69


each value to be accessed. The data on each line are separated with one or
more blanks.
All functions require a tag name at the beginning of each line. The tag name
field contains a device-specific string indicating the where to find the
requested value.

Note: Tag names and ASCII values that contain spaces or control characters
must be double-quoted.
If a numeric value is needed, it may be entered as either a floating-point
number or as an integer.
Some functions may require a Cim-IO data type field. This field describes the
internal Cim-IO format of the value being transferred, and it may contain the
following values:
 REAL
 SHORT
 ASCII
 LONG
 DOUBLE
 TIME
The device data type may also be required, which may be one of the
following:
 REAL
 SHORT
 ASCII
 LONG
 DOUBLE
 TIME
 ENUM
 ORDINAL
 DTIME
 EXTID
 CBAW
 CBST
 DBST
If output type must be specified, it may contain one of the following values:
 GOOD
 NAN (not a number)
 NONE
 SUSPECT
Deadband type may include one of the following:
 ABS (absolute difference)
 REL (relative difference)

70 6 Cim-IO Test Utility Program


Tag File Format for GET Request
For a GET request, the tag name, Cim-IO data type and device data type are
entered on separate lines for each value to be accessed. The device data type
may be omitted if it is the same as the Cim-IO data type. Therefore, each row
in the file contains either:
TAGNAMCIM-I/O DATA TYP DEVICE DATA TYPE
Or
TAGNAMCIM-I/O DATA TYPE

Example
TEST1 REAL REAL
TEST2 ASCII ENUM
TEST3 SHORT
TEST4 LONG ORDINAL
TEST5 LONG
TEST6 DOUBLE REAL

Tag File Format for PUT Request


The format for the tag file for a PUT request requires the tag name, Cim-IO
data type, value, output type, and device data type. If the device data type is
the same as the Cim-IO data type, it may be omitted. Each line in the file
must use one of the following formats:
TAGNAME CIM-IO DATA TYPE VALUE OUTPUT TYPE DEVICE DATA TYPE
Or
TAGNAME CIM-I/O DATA TYPE VALUE OUTPUT TYPE

Example
TEST1 REAL 123.456 GOOD REAL
TEST2 LONG 123456 GOOD LONG
TEST3 SHORT 1 GOOD ORDINAL
TEST4 DOUBLE -4545.4 GOOD
TEST5 ASCII ABC SUSPECT ENUM
TEST6 LONG 2 GOOD DBST

Tag File Format for DECLARE Request


Tag files for the "declare" option require the tag name, Cim-IO data type,
deadband type, and deadband value. Each line in the file uses the following
format:
TAGNAME CIM-I/O DATA TYPE DEADBAND TYPE DEADBAND VALUE

6 Cim-IO Test Utility Program 71


Example
TEST1 REAL ABS 1.0
TEST2 LONG ABS 400
TEST3 SHORT REL 2.4

Tag File Format for CANCEL Request


Tag files for the CANCEL operation consist of only the tag name to be
cancelled on each line.

Example
TEST1
TEST2
TEST3
TEST4

Tag File Format for Historical GET Request


The tag file used for a Historical GET request contains the tag name, number
of values to be retrieved, Cim-IO data type and device data type. The device
data type may be omitted if it is the same as the Cim-IO data type. The
format of each line is as follows:
TAGNAME # OF VALUES CIM-I/O DATA TYPE DEVICE DATA TYPE

Example
TEST1 10 REAL
TEST2 100 ASCII
TEST3 2 SHORT
TEST4 1000 LONG

The Test Receiver Utility


The program cimio_t_receiver, which is located in the code subdirectory of
your CIM-IO directory, allows you to test unsolicited Cim-IO communications.
The program can receive unsolicited data from any Cim-IO server defined in
cimio_logical_devices.def.
See “Testing Cim-IO DECLARE” in the “Cim-IO Test Utility Program” chapter
for information on how to specify cimio_t_receiver as an unsolicited data
receiver for a Cim-IO server.

Start the Test Receiver


To start this program, change to your code subdirectory of the CIM-IO
directory and type:
cimio_t_receiver logical_device_name optional_application_id

72 6 Cim-IO Test Utility Program


Note: The cimio_t_receiver program does not support receiving recovered
data messages that are being sent by Cim-IO Store and Forward.

6 Cim-IO Test Utility Program 73


7 Cim-IO Simulation Server

Cim-IO is delivered with an example server called the Cim-IO Simulation


server. The Cim-IO Simulation server is used to test the proper operation of a
Cim-IO client.
This server is installed with Cim-IO under the simulation subdirectory of the
io subdirectory of your CIM-IO directory.
The simulation server communicates with a pseudo-device that is an ASCII
file named device.device. This file is located under
c:\ProgramData\AspenTech\CIM-IO.

Server Functionality
Request Types
The Cim-IO Simulation server handles the following types of requests:
 GET
 PUT
 GETHIST
 DECLARE
 CANCEL

Data Types
The Cim-IO Simulation server handles the following data types:
 REAL
 SHORT INTEGER
 LONG INTEGER
 DOUBLE
 ASCII (but the ASCII string must contain only numeric characters)

7 Cim-IO Simulation Server 75


Server Startup and Shutdown
To startup or shutdown the simulation server, use the Aspen Cim-IO Manager
service.

Simulation Data File Structure


The Cim-IO Simulation server reads and writes data to the DEVICE.DEVICE
file, located in the following directory:
C:\ProgramData\AspenTech\CIM-IO\io\simulation
. This file contains five columns:
 The first two columns are internal integers that are of no use to the user.
 The third column contains tag names requested by client programs.
 The fourth column contains the current value for the tag.
 The fifth column contains the current status for the tag.
When a request is made, the server searches for the tag in the file. If the tag
is not found, the server creates a line with:
 Tag
 Value of 0 if the request is a GET or a DECLARE
 Value specified in the request is a PUT
 Status of 0
If the tag is found, the server:
 Returns the value and the status found in the file for the tag for a GET
request.
 Writes the value specified in the request and a status of 0 for a PUT
request.
For a DECLARE request, the server reads the file periodically according to the
frequency specified in the DECLARE request and sends the values for the tags
that were specified in the DECLARE request to the client application.
After receiving a CANCEL request, the server stops sending values for the tag
specified in the request.

76 7 Cim-IO Simulation Server


8 Cim-IO Client for
InfoPlus.21

Installation
The Cim-IO client is installed with InfoPlus.21.

Cim-IO Client Configuration in


IP.21
Cim-IO IP.21 Connection Manager is available to automate the Cim-IO
configuration process. This standalone desktop application is launched from
the Start menu or Start page. Help is included and accessed through the
application.
The Cim-IO IP.21 Connection Manager:
 Creates external task records
 Creates the logical device record
 Adds the external tasks to the startup procedure for the InfoPlus.21
database
Transfer records will be created manually. See “Creating Transfer Records”
later in this chapter.

Client Programs
The cimio_c_client program (main client task) sends requests, such as GET,
PUT, DECLARE, CANCEL, STOPGET or STOPPUT, to a Cim-IO server. A
separate task running its own copy of this program is required for each logical
device to be accessed.
The cimio_c_async program (asynchronous client task) is used to receive
asynchronous replies or if the Store and Forward feature will be used. If
asynchronous data collection is to be used, the main client task sends a
request to a Cim-IO server and the reply is received by the asynchronous

8 Cim-IO Client for InfoPlus.21 77


task. Start a separate task running its own copy of the program for each
logical device to be accessed.
The cimio_c_unsol program (unsolicited client task), receives data from the
server for tags declared as unsolicited in a DECLARE request. This program is
started only if unsolicited processing is needed and supported by the server
(refer to the user's guide for the specific Cim-IO server). A separate task
running its own copy of this program is required for each logical device to be
accessed.
The cimio_c_changeover program is used to monitor the connections to
two Cim-IO servers. To configure and use Cim-IO Redundancy, please see the
“Cim-IO Redundancy” chapter.

Ping Function
Both the cimio_c_async and cimio_c_unsol programs make periodic checks to
verify that the connection to the server remains valid using an internal ‘Ping’
function. cimio_c_client also uses this function when Store and Forward is
enabled. If communication with the server cannot be verified using Ping, the
data status values for the respective tags are set to "unavailable."

Configurable Pinging
The behavior of the Ping function is configurable. The two configurable
parameters are the pinging frequency and the number of failures that can
happen before data is marked as "unavailable."
On Windows, the configuration is set using the Cim-IO Interface Manager or
Cim-IO Connection Manager programs.
If the settings are not defined, the default values used are 60 seconds for the
pinging frequency and 3 for the number of pinging failures. The "3" value for
the number of pinging failures will not log any "unavailable" statuses. For the
pinging frequency value, specify the value in seconds. The smallest frequency
allowed is 10 seconds.

Note: No data will be marked “unavailable” until after


CIMIOMAXPINGFAILURES timeouts of time CIMIOPINGFREQUENCY, for a total
time of CIMIOMAXPINGFAILURES*CIMIOPIINGFREQUENCY seconds.
The cimio_c_histrec program (history recovery task) recovers data that was
lost when the database was shut down. This program is activated only when
the database is started. When activated, the history recovery task determines
how long the database has been down and requests the appropriate Cim-IO
server tasks to obtain historical data values from the device.
This program is started only if the Cim-IO server in question supports history
recovery (refer to the user's guide for the specific Cim-IO server to determine
whether this feature is supported). A separate task running its own copy of
this program is required for each logical device to be accessed.
When history recovery is enabled, real-time data acquisition is disabled until
all data has been recovered. The cimio_c_histrec_init program runs when the
database is started, before the cimio_c_histrec program, to set the flags

78 8 Cim-IO Client for InfoPlus.21


needed to temporarily disable real-time data acquisition. Only one copy of the
program may be started for the entire system, no matter how many logical
devices are to be accessed. Start this program only if at least one Cim-IO
server supports history recovery and history recovery is required.

Creating Transfer Records


In order to read or write data, Cim-IO transfer records must be created. For
reads, the following definition records are available:
 IoGetDef
 IoGetHistDef
 IoLongTagGetDef
 IoLLTagGetDef
 IoUnsolDef
For writes, the following definition records are available:
 IoPutDef
 IoLongTagPutDef
 IoLLTagPutDef
 IoPutOnCosDef
 IoLongTagPOCDef
 IoLLTagPOCDef
Refer to the “Cim-IO Records” chapter for details on the different Cim-IO
transfer records.

Starting Tasks
Under normal conditions, the client tasks are started automatically when the
database is started. However, tasks may be started manually if necessary as
follows:
Tasks are started manually using the InfoPlus.21 Manager, as follows:
 Select the task from the Defined Tasks list. If the task is not defined,
refer to the “Adding external tasks to the startup procedure” section
earlier in this chapter.
 Click the Run Task button.

Configuration Example
This example shows how to configure a Cim-IO client and a Cim-IO server for
communication with each other. Assume the OPC DA server is installed and
configured. It is running on a node called W2K12TIOV871and the database is
installed and running on a node called W2K12TIOV903.
To get data from the server and store it in a database, perform the following
steps on W2K12TIOV903:

8 Cim-IO Client for InfoPlus.21 79


1 Using the IoLongTagGetDef definition record, create a Cim-IO Get record
(Get1_00001), assuming the main external task name is
TSK_M_CIMIO_1, set IO_MAIN_TASK to TSK_M_CIMIO_1.
If you want to make asynchronous requests, set IO_ASYNC? to YES.

Enter in the repeat area #IO_TAGS all information about all individual
transfers like name of the tag in the DCS, the type of data to be obtained,
the destination record in IP.21, and the processing status of the
occurrences.

80 8 Cim-IO Client for InfoPlus.21


2 If you want to output data to the OPC DA server, create a Cim-IO Put
record (Put1_00001) using the definition record IoLongTagPutDef. In this
example, the put transfer will be started as soon as a new timestamp is
detected in the IP.21 record we are interested to put. This is achieved by
entering that information in field IO_ACTIVATION_COS

Enter in the repeat area #IO_TAGS all information about all individual
transfers like name of the tag in the DCS, the type of data to be put, the
record source in IP.21, and the processing status of the occurrences.

3 To receive unsolicited data, create a Cim-IO unsolicited record


(Uns1_0001) using IoLongTagUnsDef.

8 Cim-IO Client for InfoPlus.21 81


The following figure shows the relationship between the different records,
cimio_logical_devices.def file, and the simulation server DLGP:

Client Node

TSK_M_CIMIO_1 GET1_00001

IO_DEVICE: CIMIO_1 IO_MAIN_TASK: TSK_M_CIMIO_1

CIMIO_1

IO_MAIN_TASK: TSK_M_CIMIO_1

CIMIO_LOGICAL_DEVICES.DEF

CIMIO_1 W2K12TIOV871_OPC_1

Server Node

DLGP Program

Servicename: I_OPC_1

82 8 Cim-IO Client for InfoPlus.21


9 Creating Get, Put, and
Unsol Records

Creating the Different Types of


Cim-IO Get Records
The three types of Cim-IO Get records:
 Get defined by IoGetDef. This is a standard get record used to read data
from a device. IoGetDef can handle tags up to 39 characters in length.
 Long tag Get defined by IoLongTagGetDef. This get record is like the
standard Get record except that it allows tag names longer than 39
characters and that it allows historical gets. In a Long tag Get record, the
tag names have a maximum length of 79 characters.
 LongLong tag Get defined by IoLLTagGetDef. This get record is like the
standard Get record except that it allows tag names longer than 79
characters. In a LongLong tag Get record, the tag names have a
maximum length of 255 characters.
The procedure for creating and configuring the two types of Get records are
similar. The configuration differences will be pointed out. Each type of Get
record is used to read data from the device and store the values in the
database. The layout of each Get record and details of the fields are provided
in the Aspen Cim-IO User's Guide. This section describes how to create a Get
record using the drag and drop capabilities of the I/O folder.
1 Select a field from a data record. This is where a value will be stored.
2 Drag and drop the selected field in the Logical Device’s folder under the
Cim-IO icon. In this example, the Logical Device is CIMIOSIMUL.

9 Creating Get, Put, and Unsol Records 83


3 The Transfer object selection dialog box will appear. In the Transfer
type, choose the type of GET. See the section beginning for a description
of the two Get types: Get or Long tag Get. Either select a Get record that
has already been created or create a new one. To create a new Get
record, click the New… button. Otherwise, select a Get record from the
list and click the Next button.

4 If creating a new get record, the Select folder for new records dialog
box will appear. Select the folder to contain the new record.

84 9 Creating Get, Put, and Unsol Records


5 Click the Next button.
6 The Transfer object dialog box will appear. It contains the information
needed for the fixed area of the get record.

o Name – Enter a name for the Get record.


o Logical Device – The name of the Logical Device from which data will
be read.
o Unit – Enter the unit number. The meaning of this field is dependent
on the Logical Device’s Cim-IO server so refer to the Cim-IO server’s
user’s guide for valid values.
o Frequency – Enter the frequency. The default value is 30 seconds. The
frequency is dependent on a few factors such as Store and Forward,
the type of data reads (cache or demand), and the Cim-IO server
being used. If Store and Forward is being used, this field must have a
value. If Store and Forward is not being used and the Cim-IO server
supports cache reads, the frequency field must have a value. Cache

9 Creating Get, Put, and Unsol Records 85


reads are where the current data values are read from memory
instead of directly from the device. Demand reads are where current
data values are read from the device. Not all Cim-IO servers support
cache reads so verify the Cim-IO server’s functionality. If Store and
Forward is not being used and the reads are demand, the frequency
value should be all zeroes.
o Data type – Enter a default data type for all values to be read from
this Get record. The Data type’s value is dependent on the Cim-IO
server being used. The Data type is referred to as the Cim-IO device
data type. Not all Cim-IO servers support the device data type
functionality or may only support a few of the device data types. Verify
if the Cim-IO server supports this functionality. If the Cim-IO server
supports the device data type and if the device data type is not
defined in the Advanced parameters information, the Data type value
is used. If the Data type’s value is Default, the data type of the data
record’s field is used.
o Advanced parameters – Click this button to enter more information
about the Get record. The Transfer object advanced parameters
dialog box will appear.

o Group – Enter the group name with which the set of points is
associated. This is an optional box.
o Priority – Enter the priority (1-9, 1 highest) that the Cim-IO client will
use to send the request to the Cim-IO server when the record is
activated. The default value is 7.
o Timeout – Enter a positive timeout value. This is the amount of time
that the Cim-IO client will wait for a reply from the Cim-IO server. If a
negative or null value is specified, the client task waits forever for a
reply from the Cim-IO server. The default value is 5 seconds.
o Asynchronous reply – Select this check box if Store and Forward is
being used.
o History recovery – This group box is not present in the Transfer
object advanced parameters dialog box if a standard Get record is
being configured. The History recovery group box defines the

86 9 Creating Get, Put, and Unsol Records


parameters used in history recovery. Check the ON box if history
recovery is to be enabled for the tags in a Long tag Get record.
o Timeout – Enter a time out value. The timeout value is the amount of
time that the Cim-IO historical recovery client will wait on a response
from a Cim-IO server for historical data.
o Gap interval – Enter a time value. The gap interval is used to
determine if historical data should be retrieved for a tag. The database
has to be down for more than the gap interval time before historical
data will be retrieved for the tags. If the difference between the
current time and the most recent historical time is greater than the
gap interval time, the historical data for the tags will be retrieved. A
value of 00:00:00.0 means to always read historical data from the
device.
o Priority – Enter a priority number from 1 to 100 where a value of 1 is
the highest priority. The priority determines when the history recovery
for a get record will be started.
7 Click Finish when complete.
8 The Transfer object selection dialog box will appear. Select the newly
created Get record and click the Next button.

9 The Tags to be transferred dialog box will appear. Listed in the Name
column will be the data record and field that was added using drag and
drop. Complete the information for the value to be read from the Cim-IO
server.

9 Creating Get, Put, and Unsol Records 87


10 Enter the Cim-IO server’s tag name in the Tagname box.
11 Click the Set button to associate the tag name with the selected data
record. The tag name should appear in the Tag name column.
12 Click the Advanced button to set a tag name’s properties.

o Processing ON – Check this box if the tag is to be read from the Cim-
IO server. Uncheck the box if the tag is not to be read from the Cim-
IO server. The other tags defined in the record will be read from the
Cim-IO server as long as their processing is checked.
o Conversion – The Conversion group box refers to engineering units
conversion. The conversion changes a value read from a Cim-IO server
into engineering units using a linear equation. Select the descriptive
name of the engineering units conversion from the drop down menu. If
no conversion is necessary, leave the Conversion box to No
Conversion.

88 9 Creating Get, Put, and Unsol Records


o Range – The Range group box is part of the engineering units
conversion. The Max box holds the maximum value that a raw input
value can be converted to. For example, an E.U. value of 200 PSI is an
equivalent to the maximum raw count of 4095. The Min box holds the
minimum value that a raw input value can be converted to. For
example, an E.U. value of 100 PSI is an equivalent to the minimum
raw count of 0. The Max and Min boxes will be set when an
engineering units conversion has been selected.
o Point counts – The Point counts box is part of the engineering units
conversion. The Max box holds the maximum value that a converted
value can be. The Min box holds the minimum value that a converted
value can be. The Max and Min boxes will be set when an engineering
units conversion has been selected.
o Data type – Enter the data type of the value in the device. This is
referred to as the Cim-IO device data type and is not supported by all
Cim-IO servers. Verify by referring to the Cim-IO server user’s guide.
The Data type value here supersedes the Data type value in the
Transfer Object dialog box. This Data type value is for the individual
tag whereas the Data type value in the Transfer Object is for all tags
defined in the Get record. If both Data type fields are set to Default,
the data type of the data record’s field is used as the Cim-IO device
data type.
o Deadband – The Deadband group box refers to the filtering applied to
a value to prevent minor changes from being entered into the data
record. Enter the descriptive name of the deadband value from the
drop down menu. If no dead banding is necessary, leave the
Deadband box to No Deadband.
o Type – The Type box is part of the Deadband group. If the type is
Absolute, the value read from the Cim-IO server must exceed the last
good value by the deadband value before it will be stored in the data
record. If the type is Percent, the value read from the Cim-IO server
must exceed the last good value by the percentage value before being
stored in the data record. The Type box will be set when a deadband
has been selected.
o Value – The Value box is part of the Deadband group. It is a value
used in the dead banding. The Value box will be set when a deadband
has been selected.
o History recovery – This group box is not present in the Transfer object
advanced parameters dialog box if a standard Get record is being
configured. The History recovery group box defines some parameters
used in history recovery. Check the ON box if history recovery is to be
enabled for this individual tag.
o Record & field – Enter a record and field name where the historical
values are to be stored. The field must be a historical occurrence in
the data record.
o Tag name – Enter a tag name in the box if the historical data is be
retrieved from a different tag in the device than the tag name used to
read current data. If this box is left blank, the tag name used to read
current data will be used to read historical data.
13 Click OK when finished with the Transfer object properties dialog box.

9 Creating Get, Put, and Unsol Records 89


14 The Get record will be listed in the Get transfers folder under the Logical
Device folder in the Administrator. The Logical Device folder is under the
CIM-IO icon.

Creating the Different Types of


Cim-IO Put Records
The six types of Cim-IO Put records:
 Put defined by IoPutDef. This is a standard put record used to write data
to a device.
 Long tag Put defined by IoLongTagPutDef. This put record is like the
standard Put record except that it allows tag names longer than 39
characters. In a Long tag Put record, the tag names have a maximum
length of 79 characters.
 LongLong tag Put defined by IoLLTagPutDef. This put record is like the
standard Put record except that it allows tag names up to a maximum
length of 255 characters.
 Put on COS defined by IoPutonCosDef. The Put on COS (change of
state) records are very similar to the standard Put records. The only
difference is that Put on COS records are automatically activated anytime
one or more of the values to be written to the device changes. The
standard Put records do not recognize a value change and therefore have
to be activated manually when a new value needs to be written to the
device.
 Long tag Put on COS defined by IoLongTagPOCDef. This put record is
like the Put on COS record except that it allows tag names longer than 39
characters. In a Long tag Put on COS record, the tag names have a
maximum length of 79 characters.
 LongLong tag Put on COS defined by IoLongTagPOCDef. This put record
is like the Put on COS record except that it allows tag names longer than
39 characters. In a LongLong tag Put on COS record, the tag names have
a maximum length of 255 characters.

90 9 Creating Get, Put, and Unsol Records


The procedure for creating and configuring the six types of Put records is the
same. Each type of Put record is used to write data to the device. The record
specifies where to find the values in the database and where to place the
values in the device. The layout of each PUT record and details of the fields
are provided in the Aspen Cim-IO User's Guide. This section describes how to
create a Put record using the drag and drop capabilities of the I/O folder.
1 Select a field from a data record. This will be the value that will be written
to the device.
2 Drag and drop the selected field in the Logical Device’s folder under the
CIM-IO icon. In this example, the Logical Device is CIMIOSIMUL.

3 The Transfer object selection dialog box will appear. In Transfer type,
choose the type of PUT. Refer to the section beginning for a description of
the different put types: Put, Long tag Put, Put on COS, or Long tag Put on
COS. Either select a put record that has already been created or create a
new one. To create a new put record, click the New… button. Otherwise,
select a put record from the list and click the Next button.

9 Creating Get, Put, and Unsol Records 91


4 If creating a new put record, the Select folder for new records dialog
box will appear. Select the folder to contain the new record.

5 Click the Next button.


6 The Transfer object dialog box will appear. It contains the information
needed for the fixed area of the put record.

o Name – Enter a name for the Put record.


o Logical Device – The name of the Logical Device from which data will
be read. This was determined already when the drag and drop of the
data record’s field was done.
o Unit – Enter the unit number. The meaning of this field is dependent
on the Logical Device’s Cim-IO server so refer to the Cim-IO server’s
user’s guide for valid values.
o Frequency – Disregard this field because it is not used by Put records.

92 9 Creating Get, Put, and Unsol Records


o Data type – Enter a default data type for all values to be written from
this Put record. The Data type’s value is dependent on the Cim-IO
server being used. The Data type is referred to as the Cim-IO device
data type. Not all Cim-IO servers support the device data type
functionality or may only support a few of the device data types. Verify
if the Cim-IO server supports this functionality. If the Cim-IO server
supports the device data type and if the device data type is not
defined in the Advanced parameters information, the Data type value
is used. If the Data type’s value is Default, the data type of the data
record’s field is used.
o Advanced parameters – Click this button to enter more information
about the Put record. The Transfer object advanced parameters
dialog box will appear.

o Group – Enter the group name with which the set of points is
associated. This is an optional box.
o Priority – Enter the priority (1-9, 1 highest) that the Cim-IO client will
use to send the request to the Cim-IO server when the record is
activated. The default value is 7.
o Timeout – Enter a positive timeout value. This is the amount of time
that the Cim-IO client will wait for a reply from the Cim-IO server. If a
negative or null value is specified, the client task waits forever for a
reply from the Cim-IO server. The default value is 5 seconds.
o Asynchronous reply – Check the check box if the data is to be
processed asynchronously.
o Pulsed write – Check the check box if the value for the output is to be
reset to 0 after the value is written to the device.
7 Click Finish on the Transfer object dialog box when completed.
8 The Transfer object selection dialog box will appear. Select the newly
created Put record and click the Next button.

9 Creating Get, Put, and Unsol Records 93


9 The Tags to be transferred dialog box will appear. Listed in the Name
column will be the data record and field that was added using drag and
drop. Complete the information for the value to be written to the Cim-IO
server.

10 Enter the Cim-IO server’s tag name in the Tagname box.


11 Click the Set button to associate the tag name with the selected data
record. The tag name should appear in the Tag name column.
12 Click the Advanced button to set a tag name’s properties.

94 9 Creating Get, Put, and Unsol Records


o Processing ON – Check the box if the tag is to be written to the Cim-IO
server. Uncheck the box if the tag is not to be written to the Cim-IO
server. The other tags defined in the record will be written to the Cim-
IO server as long as their processing is checked.
o Conversion – The Conversion group box refers to engineering units
conversion. The conversion changes a value to be written to a Cim-IO
server from engineering units into raw counts using a linear equation.
Select the descriptive name of the engineering units conversion from
the drop down menu. If no conversion is necessary, leave the
Conversion box to No Conversion.
o Range – The Range group box is part of the engineering units
conversion. The Max box holds the maximum value that a raw input
value can be converted to. For example, an E.U. value of 200 PSI is an
equivalent to the maximum raw count of 4095. The Min box holds the
minimum value that a raw input value can be converted to. For
example, an E.U. value of 100 PSI is an equivalent to the minimum
raw count of 0. The Max and Min boxes will be set when an
engineering units conversion has been selected.
o Point counts – The Point counts box is part of the engineering units
conversion. The Max box holds the maximum value that a converted
value can be. The Min box holds the minimum value that a converted
value can be. The Max and Min boxes will be set when an engineering
units conversion has been selected.
o Output type – Select the output type. This field tells the Cim-IO server
whether this value should be written.
STORE – the value will be written to the device.
DO NOT STORE – the value will not be written to the device but will
still be part of the put request.
STORE NAN – the value sent to the Cim-IO server will be Not A
Number (NAN).
STORE SUSPECT – the output type will be set to SUSPECT for the
value and it is dependent on the Cim-IO server whether to write the
value to the device or not.

9 Creating Get, Put, and Unsol Records 95


STORE POS INFINITY – the value sent to the Cim-IO server will be
positive infinity.
STORE NEG INFINITY – the value sent to the Cim-IO server will be
negative infinity.
o Tag name – The tag name specifies the point in the device to be
written to and its format is dependent on the Cim-IO server. This box
should be set from the Tags to be transferred dialog box or it can be
set in the Transfer tag properties dialog box.
o Data type – Enter the data type of the value in the device. This is
referred to as the Cim-IO device data type and is not supported by all
Cim-IO servers. Verify by referring to the Cim-IO server user’s guide.
The Data type value here supersedes the Data type value in the
Transfer Object dialog box. This Data type value is for the individual
tag whereas the Data type value in the Transfer Object is for all tags
defined in the Get record. If both Data type fields are set to Default,
the data type of the data record’s field is used as the Cim-IO device
data type.
13 Click OK when finished with the Transfer object properties dialog box.
14 The Put record will be listed in the Put transfers folder under the Logical
Device folder in the Administrator. The Logical Device folder is under the
CIM-IO icon.

Creating the Different Types of


Cim-IO Unsol Records
There are three types of Cim-IO Unsolicited records:
1 Unsolicited defined by IoUnsolDef. This is a standard unsolicited record
used to read data from a device in an unsolicited means.
2 Long tag Unsolicited defined by IoLongTagUnsolDef. This unsolicited
record is like the standard Unsolicited record except that it allows tag
names longer than 39 characters. In a Long tag Unsolicited record, the tag
names have a maximum length of 79 characters.
3 LongLong tag Unsolicited defined by IoLLTagUnsolDef. This unsolicited
record is like the standard Unsolicited record except that it allows tag
names longer than 39 characters. In a LongLong tag Unsolicited record,
the tag names have a maximum length of 255 characters.
The procedure for creating and configuring the two types of Unsolicited
records are the same. Each type of Unsolicited record is used to read data
from the device in an unsolicited fashion. When a value changes in the device,
the device will send the change to the Cim-IO server, which forwards the data
to the Cim-IO Unsolicited client. This section describes how to create an
Unsolicited record using the drag and drop capabilities of the I/O folder.
1 Select a field from a data record. This is where a value will be stored.
2 Drag and drop the selected field in the Logical Device’s folder under the
CIM-IO icon. In this example, the Logical Device is CIMIOSIMUL.

96 9 Creating Get, Put, and Unsol Records


3 The Transfer object selection dialog box will appear. In the Transfer
type, choose the type of UNSOLICITED. Refer to the section beginning for
a description of the two get types: Unsolicited or Long tag Unsolicited.
Either select an unsolicited record that has already been created or create
a new one. To create a new unsolicited record, click the New… button.
Otherwise, select an unsolicited record from the list and click the Next
button.

4 If creating a new unsolicited record, the Select folder for new records
dialog box will appear. Select the folder to contain the new record.

9 Creating Get, Put, and Unsol Records 97


5 Click the Next button.
6 The Transfer object dialog box will appear. It contains the information
needed for the fixed area of the unsolicited record.

o Name – Enter a name for the Unsolicited record.


o Logical Device – The name of the Logical Device from which data will
be read.
o Unit – Enter the unit number. The meaning of this field is dependent
on the Logical Device’s Cim-IO server so refer to the Cim-IO server’s
user’s guide for valid values.
o Frequency – Enter the frequency. The default value is 30 seconds. The
frequency is dependent on a few factors such as Store and Forward,
and the Cim-IO server being used. If Store and Forward is being used,
this field must have a value. If Store and Forward is not being used
and the Cim-IO server supports polling data, the frequency field must
have a value. Polling data means to have the Cim-IO server send the

98 9 Creating Get, Put, and Unsol Records


data at the specified frequency for all tags defined in an Unsolicited
record even if the values have not changed. Not all Cim-IO servers
support polling so verify the Cim-IO server’s functionality.
o Data type – Enter a default data type for all values to be read from
this Get record. The Data type’s value is dependent on the Cim-IO
server being used. The Data type is referred to as the Cim-IO device
data type. Not all Cim-IO servers support the device data type
functionality or may only support a few of the device data types. Verify
if the Cim-IO server supports this functionality. If the Cim-IO server
supports the device data type and if the device data type is not
defined in the Advanced parameters information, the Data type value
is used. If the Data type’s value is Default, the data type of the data
record’s field is used.
o Advanced parameters – Click this button to enter more information
about the Unsolicited record. The Transfer object advanced parameters
dialog box will appear.

o Group – Enter the group name with which the set of points is
associated. This is an optional box.
o Priority – Enter the priority (1-9, 1 highest) that the Cim-IO client will
use to send the request to the Cim-IO server when the record is
activated. The default value is 7.
o Timeout - Enter a positive timeout value. This is the amount of time
that the Cim-IO client will wait for a reply from the Cim-IO server. If a
negative or null value is specified, the client task waits forever for a
reply from the Cim-IO server. The default value is 5 seconds.
o Asynchronous reply – Seleck the check box if Store and Forward is
being used.
7 Click Finish on the Transfer object dialog box when completed.
8 The Transfer object selection dialog box will appear. Select the newly
created Unsolicited record and click the Next button.
9 The Tags to be transferred dialog box will appear. Listed in the Name
column will be the data record and field that was added using drag and

9 Creating Get, Put, and Unsol Records 99


drop. Complete the information for the value to be read from the Cim-IO
server.

10 Enter the Cim-IO server’s tag name in the Tag name box.
11 Click the Set button to associate the tag name with the selected data
record. The tag name should appear in the Tag name column.
12 Click the Advanced button to set a tag name’s properties.

o Processing ON – Check the box if the tag is to be read from the Cim-IO
server. Clear the box if the tag is not to be read from the Cim-IO
server. The other tags defined in the record will be read from the Cim-
IO server as long as their processing is checked.
o Conversion – The Conversion group box refers to engineering units
conversion. The conversion changes a value read from a Cim-IO server
into engineering units using a linear equation. Select the descriptive
name of the engineering units conversion from the drop down menu. If

100 9 Creating Get, Put, and Unsol Records


no conversion is necessary, leave the Conversion box to No
Conversion.
o Range – The Range group box is part of the engineering units
conversion. The Max box holds the maximum value that a raw input
value can be converted to. For example, an E.U. value of 200 PSI is an
equivalent to the maximum raw count of 4095. The Min box holds the
minimum value that a raw input value can be converted to. For
example, an E.U. value of 100 PSI is an equivalent to the minimum
raw count of 0. The Max and Min boxes will be set when an
engineering units conversion has been selected.
o Point counts – The Point counts box is part of the engineering units
conversion. The Max box holds the maximum value that a converted
value can be. The Min box holds the minimum value that a converted
value can be. The Max and Min boxes will be set when an engineering
units conversion has been selected.
o Data type – Enter the data type of the value in the device. This is
referred to as the Cim-IO device data type and is not supported by all
Cim-IO servers. Verify by referring to the Cim-IO server user’s guide.
The Data type value here supersedes the Data type value in the
Transfer Object dialog box. This Data type value is for the individual
tag whereas the Data type value in the Transfer Object is for all tags
defined in the Get record. If both Data type fields are set to Default,
the data type of the data record’s field is used as the Cim-IO device
data type.
o Deadband – The Deadband group box refers to the filtering applied to
a value to prevent minor changes from being entered into the data
record. Choose the descriptive name of the deadband value from the
drop down menu. If no dead banding is necessary, leave the
Deadband box to No Deadband.
o Type – The Type box is part of the Deadband group. If the type is
Absolute, the value read from the Cim-IO server must exceed the last
good value by the deadband value before it will be stored in the data
record. If the type is Percent, the value read from the Cim-IO server
must exceed the last good value by the percentage value before being
stored in the data record. The Type box will be set when a deadband
has been selected.
o Value – The Value box is part of the Deadband group. It is a value
used in the dead banding. The Value box will be set when a deadband
has been selected.
o Device deadband – The Device deadband group box defines some
parameters used in deciding whether a value should be sent to the
Cim-IO unsolicited client. Choose the descriptive name of the
deadband value from the drop down menu. If no dead banding is
necessary, leave the Device deadband box to No Deadbands.
o Type – The Type box is part of the Device deadband group. If the type
is Absolute, the value read from the Cim-IO server must exceed the
last good value by the deadband value before it will be sent to the
Cim-IO unsolicited client. If the type is Percent, the value read from
the Cim-IO server must exceed the last good value by the percentage
value before being sent to the Cim-IO client. The Type box will be set
when a deadband has been selected.

9 Creating Get, Put, and Unsol Records 101


o Value – The Value box is part of the Device deadband group. This
value is used to filter out minor changes in a value read from the
device before deciding whether to send the read value to the Cim-IO
Unsolicited client. The Value box will be set when a device deadband
has been selected.
13 Click OK when finished with the Transfer object properties dialog box.
14 The Unsolicited record will be listed in the Unsolicited transfers or the Long
tag Unsolicited folder under the Logical Device folder in the Administrator.
The Logical Device folder is under the CIM-IO icon.

102 9 Creating Get, Put, and Unsol Records


10 Cim-IO Records in
InfoPlus.21

This chapter describes the different Cim-IO records used in InfoPlus.21.

Naming Conventions
Cim-IO provides definition records to allow you to create and configure input
and output processing. The following are the naming conventions used for
naming records and record fields associated with Cim-IO:

Field Names
The Cim-IO record field names start with IO_. The field names are uppercase,
and all words are separated by underscores (_). Examples are IO_DEVICE,
IO_TAGNAME, and IO_LAST_UPDATE.

Selector Format Records


All Cim-IO selector-format records start with Io-. All words are separated by
dashes (-) (not underscores). Each word starts uppercase and the rest are
mixed case. Examples are Io-Groups, Io-Priorities, and Io-Eu-Conv.

Definition Records
All Cim-IO definition records start with Io and end with Def. There are no
dashes (-), underscores (_) or spaces in the words. All words start with
uppercase and the rest are mixed case. Examples are IoGetDef, IoPutDef,
and IoDeviceRecDef.

Data Records
All of the provided Cim-IO data records start with Io. All words start with
uppercase and the rest are mixed case. There are no dashes (-),
underscores(_), or spaces in the words. Examples are IoLog and IoSummary.

10 Cim-IO Records in InfoPlus.21 103


The record definition file cimio.rld is provided as part of Cim-IO software
installation.
To configure Cim-IO for data transfer, you must create database records
using Cim-IO definition records as defined in the next sections.

The Cim-IO Task Definition


Record
Every external task to be activated needs an External Task Definition record.
For Cim-IO, each main, asynchronous, unsolicited and history recovery client
task must have an external task record.
For example, if the following conditions exist, seven Cim-IO external task
records have to be created using the IoExternalTskDef definition record:
 You have configured two logical devices, DCS1 and PLC1.
 Each logical device has unsolicited capabilities.
 You want data to be accessed synchronously.
 History data recovery is required for the DCS1 device.
The tasks are as follows:
 TSK_M_DCS1
 TSK_A_DCS1
 TSK_U_DCS1
 TSK_H_DCS1
 TSK_M_PLC1
 TSK_A_PLC1
 TSK_U_PLC1

IoExternalTskDef Fields
The figure below illustrates an external task record created with the
IoExternalTskDef record.
Record Contents TSK_M_DCS1 ID = 1506 28-SEP-94 14:48:56

TSK_M_DCS1 NAME
DCS1 IO_DEVICE_RECORD

NAME
Name is a 16-character field that contains the name of a Cim-IO main client
task as it runs in the computer.

104 10 Cim-IO Records in InfoPlus.21


IO_DEVICE_RECORD
This field contains the name of a Cim-IO Logical Device record that holds
device information. In the example, DCS1 is contained in this field in
TSK_M_DCS1, TSK_A_DCS1, TSK_U_DCS1, and TSK_H_DCS1. PLC1 in
contained in this field in TSK_M_PLC1, TSK_A_PLC1 and TSK_U_PLC1.

Note: Enter the logical device name in the IO_DEVICE_RECORD field in the
task definition record. Check device-specific documentation for the required
logical device name to use.

The Cim-IO Device Record


Each Cim-IO external task record references a Cim-IO Logical Device record.
You create the Logical Device record using the IoDeviceRecDef definition
record, as shown below:
Record Contents DCS1 ID = 1517 28-SEP-94 14:48:21

DCS1 NAME
TSK_M_DCS1 IO_MAIN_TASK
ON IO_DEVICE_PROCESSING
NO IO_ASYNC?
IO_ASYNC_TASK
! IO_ASYNC_EXECUTABLE
NO IO_UNSOL?
IO_UNSOL_TASK
IO_UNSOL_EXECUTABLE
IO_DLGP_SERVICE
IO_DLGP_NODE
NO IO_DLGP_STARTUP?
! IO_DLGP_STARTUP_PROC
NO IO_DLGP_SHUTDOWN?
! IO_DLGP_SHUTDOWN_PROC
?????? IO_HIST_GAP_REAL_VAL
0 IO_HIST_GAP_INT_VAL
No Data Available IO_HIST_GAP_ASC_VAL
17 IO_HIST_GAP_ASC_LEN
DO NOT INSERT GAP IO_HIST_GAP_DISPLAY
0 IO_%_RECOVERY
IO_CURRENT_GET_REC

10 Cim-IO Records in InfoPlus.21 105


0 IO_#_TAGS_TO_RECOVER
NO IO_STORE_ENABLE?
00000:00:00.0 IO_STORE_MAX_PERIOD
0 IO_STORE_MAX_SIZE
NOT_STARTED IO_FWD_ASYNC_STATUS
0 IO_FWD_ASYNC_START
0 IO_FWD_ASYNC_END
NOT_STARTED IO_FWD_UNSOL_STATUS
0 IO_FWD_UNSOL_START
0 IO_FWD_UNSOL_END
0 IO_STR_ASYNC_START
0 IO_STR_ASYNC_END
0 IO_STR_UNSOL_START
0 IO_STR_UNSOL_END
0 IO_TIMESTAMP_SRC
0 IO_COMM_STATUS

The only fields that require entry are: NAME, IO_MAIN_TASK, and
IO_DEVICE_PROCESSING.
In addition:
 If asynchronous operations are supported, enter the IO_ASYNC? and
IO_ASYNC_TASK fields.
 If unsolicited operations are supported, enter the IO_UNSOL? and
IO_UNSOL_TASK fields.
 If history recovery is to be performed, enter fields starting with IO_HIST
as needed. If data is to be recovered using the Cim-IO Store and Forward
feature, enter fields starting with IO_STORE as needed. Refer to the
following chapters as needed.
The remaining fields are defined for future versions of Cim-IO to facilitate
server subsystem configuration, startup and shutdown. For example, when
you create a Cim-IO Logical Device, you must add the logical device to the
cimio_logical_devices.def file, along with the DLGP Node name and the TCP/IP
service name of the DLGP. Refer to the installation section for a description of
the cimio_logical_devices.def file.

IoDeviceRecDef Fields
The Cim-IO device record fields are defined as follows:

NAME
This standard record name field contains the name of the record that was
entered into the Cim-IO external task record as described earlier in this
section. NAME has to be the same as the name specified in the

106 10 Cim-IO Records in InfoPlus.21


cimio_logical_devices.def file and also the name specified in the external
task definition record in the cimio_logical_devices.def disk file.

IO_MAIN_TASK
This field contains the main client task name for this Logical Device
(TSK_M_DCS1 or TSK_M_PLC1 in the previous example).

Warning: The device record cannot be made usable until this field has been
entered.

IO_DEVICE_PROCESSING
This field turns the logical device processing ON or OFF. When ON,
communications with the external device are open if there are no problems.
When OFF, communications with the external device are off. When OFF, no
read or write operations occur for the logical device.

IO_ASYNC?
This field indicates if an asynchronous process is allowed. If YES, the main
client task sends data requests to the Cim-IO server tasks, but does not wait
on a reply. Ensure that the asynchronous task is also started for the logical
device currently using the setcim.run file.

IO_ASYNC_TASK
This field contains the asynchronous client task name that is required to run
the asynchronous task on the computer. This name is the same as the
external task record name defined using the IoExternalTskDef definition
record.

IO_ASYNC_EXECUTABLE
If the standard asynchronous program cimio_c_async is used or
asynchronous processing is not allowed, this field can be left blank. If a
customized asynchronous program is used, specify the program name in this
field. If the executable program file is not in the SETCIMCODE directory,
specify the directory.

IO_UNSOL?
This field indicates whether the unsolicited read operation is to be performed.
If YES, ensure that the unsolicited read task is started using the setcim.run
file.

IO_UNSOL_TASK
This field contains the unsolicited client task name that is required to run the
unsolicited client task on the computer. This name is the same as the external
task record name defined using the IoExternalTskDef definition record.

10 Cim-IO Records in InfoPlus.21 107


IO_UNSOL_EXECUTABLE
If the standard unsolicited program cimio_c_unsol is used or unsolicited
processing is not allowed, this field can be left blank. If a customized
unsolicited program is used, specify the program name in this field. If the
program is not in the CIMIOCODE directory, specify the directory.

IO_HIST_GAP_REAL_VAL
This field specifies a floating-point value the Cim-IO history recovery client
task uses when actual historical values cannot be obtained from the external
device or other database during history data recovery. This value is inserted
into data value record of historical occurrences if the Cim-IO historical
software finds there is less actual historical data at the logical device than is
needed to fill gaps in history.
The default floating-point value is a NaN value. You can enter a default value
that is to be used when floating-point historical values are required, but
cannot be obtained.

IO_HIST_GAP_INT_VAL
This field specifies a signed 32-bit integer value that the Cim-IO history
recovery client task can use when actual historical values cannot be obtained
from the external device or other database during history data recovery. The
value in this field is inserted into integer data value record historical
occurrences if the Cim-IO historical software finds there is less actual
historical data at the logical device than is needed to fill gaps in history. The
default integer value is a zero value. You can enter a default value in this field
to be used when integer historical values are required, but cannot be
obtained.

IO_HIST_GAP_ASC_VAL
This field specifies a 39-character ASCII value the Cim-IO history recovery
client task can use when actual historical values cannot be obtained from the
external device or other database during history data recovery. The value in
this field is inserted into ASCII data value record historical occurrences if the
Cim-IO historical software finds there is less actual historical data at the
logical device than is needed to fill gaps in value history.
The default ASCII value is a string of 39 "-" characters. You can enter an
ASCII string in this field to be used when ASCII historical values are required,
but cannot be obtained. Currently, history recovery for ASCII data types is
not supported.

IO_HIST_GAP_ASC_LEN
This field contains the length of the ASCII string that is to be inserted into
ASCII data value historical occurrences. It indicates how many of the
characters specified in the IO_HIST_GAP_ASC_VAL field are to be used when
storing the ASCII string. The value can be a maximum of 39 " "characters.
You can specify how many characters to store by entering the ASCII data

108 10 Cim-IO Records in InfoPlus.21


value occurrence field width here. The default value is zero length. Currently,
history recovery for ASCII data types is not supported.

IO_HIST_GAP_DISPLAY
This field is a flag that determines whether the gap interval (the time that the
database was down) is to contain a gap value or not:
If the gap interval contains a gap value, the gap value is displayed on the
trend plots for the duration of the gap period.
If the gap interval does not contain a gap value, the gap is displayed as a
straight line from the value at the starting point of the gap to the value at the
ending point of the gap.
This field is formatted using the Io-Gap-Display selector record. The
selections are "DO NOT INSERT GAP" and "INSERT GAP". You can select how
historical gap data is displayed with this field.

Note: A gap value is defined in the IO_HIST_REAL_VAL, IO_HIST_INT_VAL,


or IO_HIST_ASC_VAL record fields.

IO_%_RECOVERY
This field displays the percentage of the tags that have currently been
recovered during the history recovery process. The Cim-IO history recovery
task stores values in this field.

IO_CURRENT_GET_REC
This field displays the name of the current historical read transfer record for
which the tag values are being recovered from the logical device.

IO_#_TAGS_TO_RECOVER
This field displays the number of all the tags in all historical read transfer
records for which historical data is to be recovered. This field is used
internally by history recovery task and not altered.

IO_STORE_ENABLE?
This field indicates whether the Store and Forward system is enabled. If this
field is set to YES, the client expects to receive data from the Store and
Forward process. If this field is set to NO, the client expects to receive data
directly from the DLGP. When this field is modified, the Store and Forward
configuration is automatically downloaded to the Cim-IO server tasks for this
device.

Note: If the asynchronous client task is being used to read data and this field
is set to YES, Store and Forward must be running on the server; otherwise,
no data will be transferred into the database on the client.

10 Cim-IO Records in InfoPlus.21 109


IO_STORE_MAX_PERIOD
This field contains a time period that indicates for how long the data is to be
stored by the Cim-IO Store and Forward system in the case of a problem. For
example, if this field is set to 00012:00:00.0, the Cim-IO Store and Forward
system keeps the most recent 12 hours of data in a file and discards older
data.
When this field is modified, the Store and Forward configuration is
automatically downloaded to the Cim-IO server tasks for this device. This field
is for future expansion and its contents are currently ignored by the Cim-IO
Store and Forward system. Instead, use the IO_STORE_MAX_SIZE field to
define any restrictions on the amount of data to be stored in the case of a
problem.

IO_STORE_MAX_SIZE
This field contains a disk file size amount (in megabytes) that indicates how
much data is to be stored by the Cim-IO Store and Forward system in the
case of a failure. For example, if this field is set to 100, the Cim-IO Store and
Forward system keeps storing the data in a file until the file size exceeds 100
megabytes. Then the Store and Forward system starts overwriting the oldest
data without allowing the file size to increase.
If this field is set to 0, this indicates an infinite file size. In this case, the file
size is limited only by the free-space on the disk. When this field is modified,
the Store and Forward configuration is automatically downloaded to the Cim-
IO server tasks for this device.

IO_FWD_ASYNC_STATUS
This field contains the current status of the Forward phase for frequency-
based data collection. This field has these statuses:
 NOT_STARTED. Forwarding has not been done since the asynchronous
client task was started.
 IN_PROGRESS. Forwarding is in progress for frequency-based data
collection.
 COMPLETE. Forwarding has been completed for frequency-based data
collection.

IO_FWD_ASYNC_START
This field contains the starting time for the Forward phase for frequency-
based data collection. When the asynchronous client task is started, this field
is filled with question marks showing undefined values. This field is updated
when the start of the Forward phase is detected. This field is not updated if
the Store and Forward processes or the Cim-IO interface on the server are
terminated.

IO_FWD_ASYNC_END
This field contains the starting time for the Forward phase for frequency-
based data collection. When the asynchronous client task is started, this field
is filled with question marks showing undefined values. This field is updated

110 10 Cim-IO Records in InfoPlus.21


when the end of the Forward phase is detected. This field is not updated if the
Store and Forward processes or the Cim-IO interface on the server are
terminated.

IO_FWD_UNSOL_STATUS
This field contains the current status of the Forward phase for unsolicited data
collection. This field has these statuses:
 NOT-STARTED. Forwarding has not been done since the unsolicited client
task was started.
 IN_PROGRESS. Forwarding is in progress for unsolicited data collection.
 COMPLETE. Forwarding has been completed for unsolicited data collection.

IO_FWD_UNSOL_START
This field contains the starting time for the Forward phase for unsolicited data
collection. When the unsolicited client task is started, this field is filled with
question marks showing undefined values. The field is updated when the start
of the Forward phase is detected. This field is not updated if the Store and
Forward processes or the Cim-IO interface on the server is terminated.

IO_FWD_UNSOL_END
This field contains the starting time for the Forward phase for unsolicited data
collection. When the unsolicited client task is started, this field is filled with
question marks showing undefined values. The field is updated when the end
of the Forward phase is detected. This field is not updated if the Store and
Forward processes or the Cim-IO interface on the server are terminated.

IO_STR_ASYNC_START
This field contains the starting time for the Store phase for asynchronous data
collection. When the asynchronous client task is started, this field is filled with
question marks showing undefined values. The field is updated to be the time
indicated in the timestamp of the first value received from the Forward
process.

IO_STR_ASYNC_END
This field contains the ending time for the Store phase for asynchronous data
collection. When the asynchronous client task is started, this field is filled with
question marks showing undefined values. The field is updated to be the time
indicated in the timestamp of the first reply received from the DLGP after the
Forward process has completed.

IO_STR_UNSOL_START
This field contains the starting time for the Store phase for unsolicited data
collection. When the unsolicited client task is started, this field is filled with
question marks showing undefined values. The field is updated to be the time
indicated in the timestamp of the first value received from the Forward
process.

10 Cim-IO Records in InfoPlus.21 111


IO_STR_UNSOL_END
This field contains the ending time for the Store phase for unsolicited data
collection. When the unsolicited client task is started, this field is filled with
question marks showing undefined values. The field is updated to be the time
indicated in the timestamp of the first reply received from the DLGP after the
forward process has completed.

IO_TIMESTAMP_SRC
This field consists of a selector allowing the user to define whether
timestamps refer to the time when each value was received by the client
(Cim-IO client - database), or the time as it was reported by the server (Cim-
IO server- Interface). This field is ignored for values sent by the Forward
process. In addition, if the value in this field changes, stop and restart the
MAIN, ASYNC and UNSOL client tasks.

Notes:
 Different machines may not have their clocks synchronized. When a value
is received, a time is recorded. This field allows the user to choose
whether to record, the time the value was received by the client or the
time reported by the server (the time the value was initially read).
 When turning UNSOL records from Off to ON, the timestamp recorded at
the destination pointed to by this field is the InfoPlus.21 system time
when IO_RECORD_PROCESSING was switched to ON.

IO_COMM_STATUS
This field consists of an integer selector containing information about the
general state of communications with the device in question. If the Store and
Forward processes (if enabled) or DLGP is unreachable, the value in this field
is set to Cim-IO Server Error. If communication is successful, the value is set
to Success.

The Cim-IO Group Record


Cim-IO provides the custom selector format record Io-Groups. The Cim-IO
Group record contains a list of group names and other information about each
group. You can create group names to identify plant areas or equipment in
the plant. Later, the group names are referenced in Cim-IO transfer records,
allowing you to group a set of points with a single piece of equipment or plant
area.
For instance, the Group names Furnace 1 and Furnace 2 can indicate two
different sets of tag names that are used to read values from two different
furnaces. Furnace 1 values can be read every 30 seconds and Furnace 2
values can be read every 60 seconds.
You are allowed to enable and disable data acquisition at a group level and to
specify the permission for read or write for the group. The Io-Groups record is
created using the IoGroupsDef definition record. A separate group is required
for each logical device.

112 10 Cim-IO Records in InfoPlus.21


IoGroupsDef Fields
The following illustrates a Cim-IO Group record:
Record Contents Io-Groups ID = 1502 28-SEP-94 17:32:25

1 1st_SELECTION_VALUE
Io-Groups NAME
2 #_OF_SELECTIONS
Furnace 1 1 SELECT_DESCRIPTION
ON 1 IO_GROUP_PROCESSING
Read Only 1 IO_GROUP_PERMISSION
Furnace 2 2 SELECT_DESCRIPTION
ON 2 IO_GROUP_PROCESSING
Read Only 2 IO_GROUP_PERMISSION

NAME
The name for the group record must be Io-Groups.

1st_SELECTION_VALUE
Required integer field for selector records (not used.)

#_OF_SELECTIONS
A repeat area count field indicating the number of groups defined by the user.

n SELECT_DESCRIPTION
This 12-character string defines the group name.

n IO_GROUP_PROCESSING
Current status (OFF/ON) of the group. The points associated with a group are
not processed if the IO_GROUP_PROCESSING field value is set to OFF.

n IO_GROUP_PERMISSION
Group permission for read or write. This field is formatted by the selector
record Io-Permits. The valid permissions are Read Only, Write Only or
Read/Write. Read/Write means both read and write operations are allowed.

10 Cim-IO Records in InfoPlus.21 113


The Cim-IO Engineering Units
Conversion Record
Some devices do not send values to the computer in engineering units (E.U.).
Sometimes the hardware sends integer numbers representing raw counts to
the computer. For example, a raw count value of 2000 can represent 100
engineering units and a value of 4000 can represent 200 engineering units.
During device data read and write operations, the conversion record includes
information to:
 Convert raw counts to engineering units.
 Convert engineering units to raw counts.
If E.U. value conversion is required on input and output operations, enter
values into the fields in this record to enable the Cim-IO software to perform
the E.U. conversions.
Otherwise, during output operations, the device may not have certain units of
measure defined, such as tons per hour. For example, the device may only
understand raw counts.
The IO-EU-CONV record is a custom selector record that contains a list of
engineering units types (units of measure) configured by the user and used
by the software. The Cim-IO normal read, historical read, unsolicited read and
write transfer records (described later) reference this record when
engineering unit conversions occur.
The first selector occurrence in this record is No Conversion. All associated
field values are set to 0. The No Conversion field name is entered on other
records to indicate no engineering units conversion is to occur — the value is
already in the proper units.
The following illustrates the definition of two conversions:
 1 SELECT_DESCRIPTION, No Conversion is required
 SELECT_DESCRIPTION, For pressures between 100 - 200 PSI
Record Contents Io-EU-Conv 01-SEP-94 12:00:00

Io-EU-Conv NAME
0 1st_SELECTION_VALUE
NO RECORD_MODIFIED
2 #_OF_SELECTIONS
No Conversion 1 SELECT_DESCRIPTION
F7.5 1 VALUE_FORMAT
0 1 MAX_COUNTS
0 1 MIN_COUNTS
0.0 1 RANGE_HI
0.0 1 RANGE_LO

114 10 Cim-IO Records in InfoPlus.21


100-200 PSI 2 SELECT_DESCRIPTION
F7.5 2 VALUE_FORMAT
4095 2 MAX_COUNTS
0 2 MIN_COUNTS
200.0 2 RANGE_HI
100.0 2 RANGE_LO

The names in the SELECT_DESCRIPTION record fields are user-definable.


Once defined, these names must be entered consistently in other records
when E.U. conversion is required.
The names are provided in a selector record for the IO_DATA_CONVERSION
field in the IoGetDef, IoPutDef, and so on, definition records to ensure that
the only valid entries for the IO_DATA_CONVERSION field are provided from
the IO-EU-CONV record. In this case, the user can highlight (press ENTER)
the IO_DATA_CONVERSION field and press TAB.
The user can view the list of valid entries (ASCII strings from the
SELECT_DESCRIPTION fields) from IO-EU-CONV record and make a selection.
Using the following equations, you can create new engineering units
conversion field names (units of measure) in this record. Each E.U. conversion
field name can be up to 16 characters in length and describe the conversion,
for example, 100 to 200 degrees - E.U. conversion. Add as many entries as
needed to customize this record as needed.
For read operations, the Cim-IO client tasks use the following equations to
convert raw counts to E.U. units using the fields of this record:
convertedValue=rangelo+(rangehi – rangelo)/(maxcounts –
mincounts) * (readvalue – mincounts)
if (convertedvalue > rangehi) then convertedvalue = rangehi
if (convertedvalue < rangelo) then convertedvalue = rangelo
Normally, the E.U. value is then stored in a data record.
For write operations, when converting E.U. data to raw counts during output
operations, the raw count conversion is performed using the following
information:
If (rangehi – rangelo) = 0 or if (maxcounts – mincounts) = 0 then the value
output to the external hardware device is the value in the Setcim data record.
Otherwise, the E.U. value to raw count conversion equation is used:
putvalue= ((setcimvalue – rangelo) * (maxcounts – mincounts) /
(rangehi – rangelo)) + mincounts

Io-EU-Conv Fields
NAME
Standard record name field. This record name must be Io-Eu-Conv.

10 Cim-IO Records in InfoPlus.21 115


1st_SELECTION_VALUE
Required integer field for selector records (not used.)

#_OF_SELECTIONS
A repeat area count field indicating the total number of defined E.U.
conversion field names. The remaining fields in this record are in this repeat
area.

n SELECT_DESCRIPTION
Engineering Units of measure descriptive name, for example, 100-200 PSI.
The first conversion name must be No Conversion.

n IO_VALUE_FORMAT
Formats the real-value fields in the record, for example, F 7.5.

n IO_MAX_COUNTS
This integer field holds the maximum value for the incoming counts, for
example, 4095. Indicates the maximum value of the raw count. For example,
for 12-bit A/D converters, the value is normally 4095.

n IO_MIN_COUNTS
This integer field holds the minimum value for the incoming counts, for
example, 0. Indicates the minimum value of the raw count.

n IO_RANGE_HI
This floating-point field holds the high value of the IO_MAX_COUNTS field as
the engineering units (E.U.) value equivalence. For example, an E.U. value of
200 PSI is an equivalent to the maximum raw count of 4095.

n IO_RANGE_LO
This floating-point field holds the low value of the IO_MIN_COUNTS field as
the engineering units (E.U.) value equivalence. For example, an E.U. value of
100 PSI is an equivalent to the minimum raw count of 0.

Important: The formulas should specify the mathematical conversion


between the external device and the InfoPlus.21 values. The “forward”
formula is used for reads, while the “reverse” formula is used for writes. Thus,
you do not have to define 2 formulas, one to get data from the device into
InfoPlus.21, and another to put data into the device from InfoPlus.21. You
should use the same formula for both. For example, your device returns a raw
value of 0-4095 but you wish an InfoPlus.21 value of 100-200 PSI. You can
then use the following constants:
IO_RANGE_LO = 100
IO_RANGE_HI = 200
IO_MIN_COUNTS = 0
IO_MAX_COUNTS=4095

116 10 Cim-IO Records in InfoPlus.21


If you read data from the device using this record, the return value of 0-4095
from the device will be converted to an E.U. value of 100-200 before being
stored in InfoPlus.21.
If you write data from InfoPlus.21 to the device using this record, the
InfoPlus.21 value of 100-200 will be converted to a raw value of 0-4095
before being written to the device.

The Cim-IO Deadband Record


The Cim-IO interface uses a deadband value to filter small variations in a
value being read. In this case an incoming value does not get stored into a
data record if the value change is within the deadband value. A deadband
value can be defined for each value being read from an external device or
database.
The Cim-IO Io-Deadbands record allows you to specify:
 Deadband identifier name. When you define a deadband identifier name in
this record and later enter the name into a Cim-IO transfer record, you
can cause the Cim-IO client tasks to filter small changes in the incoming
values to reduce the number of times values are updated in the database
records.
 Deadband type. A deadband type can be specified as an absolute or
percent deadband. When processing absolute deadband values, the
difference between the previous value and the current value must exceed
the deadband value (in E.U. units) before the value is processed.
 Deadband value. Deadband values are always specified in engineering
units.
For percent deadband values, the absolute difference between the last
value processed and the current value, divided by the difference between
high and low range values in the E.U. conversion record, times 100.0, is
compared to the percent deadband value to see if the new value is to be
processed.
If you select percent deadband and the high range value in the E.U.
conversion record is 0, the program assumes a high range value of 100.0
by default. If you select percent deadband and the low range value in the
E.U. conversion record is 0, the program assumes a low range value of
0.0 by default.
For the Io-Deadbands record, configure the record contents to the specific
application.

Note: When using deadband values to filter out small variations, be sure the
low and high range values in the Cim-IO E.U. conversion record are defined to
the proper values or the deadband can assume incorrect range values.
The Cim-IO Io-Deadbands record is a custom selector record that contains a
list of deadband identifier names. The record is created using the
IoDeadbandDef definition record. The selector field information in this record
is referenced in the Cim-IO transfer records.
The Io-Deadbands record requires you to create at least one deadband
identifier name, No Deadband, with a deadband type of absolute and a value

10 Cim-IO Records in InfoPlus.21 117


of 0. This deadband identifier name is used to indicate later that no deadband
processing is required.
If you want to add additional deadband definitions, just add additional
selections to the Io-Deadbands record and enter data into the new fields that
are created. Do not create new database records using the IoDeadbandDef
definition record.

Io-Deadbands Fields
The following figure illustrates the fields of the Io-Deadbands record:
Record Contents Io-Deadbands 01-SEP-1994 12:00:00

Io-Deadbands NAME
0 1st_SELECTION_VALUE
NO RECORD_MODIFIED
3 #_OF_SELECTIONS
No Deadband 1 SELECT_DESCRIPTION
F7.5 1 VALUE_FORMAT
Absolute 1 DEADBAND_TYPE
0.000 1 DEADBAND_VALUE
1.0 ABSOLUTE 2 SELECT_DESCRIPTION
F7.5 2 VALUE_FORMAT
Absolute 2 DEADBAND_TYPE
0.000 2 DEADBAND_VALUE
1.0 PERCENT 3 SELECT_DESCRIPTION
F7.5 3 VALUE_FORMAT
Percent 3 DEADBAND_TYPE
1.000 3 DEADBAND_VALUE

NAME
Standard record name field. This record name must be Io-Deadbands.

1st_SELECTION_VALUE
Required integer field for selector records (not used.)

#_OF_SELECTIONS
A repeat area count field indicating the number of deadbands defined. The
remaining fields of the record are in this repeat area.

118 10 Cim-IO Records in InfoPlus.21


n SELECTION_DESCRIPTION
Deadband identifier name, for example, 1.0 PERCENT. The No Deadband
name must exist and is used when deadband processing does not occur
during actual data processing. This 12-character field holds a unique
deadband identifier name.

n IO_VALUE_FORMAT
Formats the real fields in the records, for example, F7.5.

n IO_DEADBAND_TYPE
An integer field formatted by Io-Abs-Percent record. If the deadband type is
absolute, the incoming value must exceed the last good value by the
deadband value in the IO_DEADBAND_VALUE record field. If the field is
percent, the incoming value must exceed the last good value by the
percentage contained in the IO_DEADBAND_VALUE record field.
The IO_RANGE_HI and IO_RANGE_LO (Io-Eu-Conv record) are used in
calculating the deadband percentage. If no engineering units are specified in
the Io-Eu-Conv record, then the high and low range values of 100.0 and 0.0,
respectively, are used in the deadband calculation.

Note: Since data from an E.U. conversion record is required for percent
Deadband calculations and since there is no E.U. conversion record data for
data values already in engineering units, percent deadband filtering can only
be performed on data values coming in as raw counts. Absolute deadband
filtering can be performed on values already in engineering units.

n IO_DEADBAND_VALUE
This real field holds the deadband value, for example, 1.0. Use of this field is
determined by the IO_DEADBAND_TYPE field described earlier.

The Cim-IO I/O Transfer


Records
InfoPlus.21 has 4 standard I/O transfer records as follows:
 Get – For reading data from Cim-IO servers
 Put – For writing data to Cim-IO servers
 PutOnCOS – For writing data only when a certain value changes
 Unsol – For requesting periodic unsolicited updates
Each I/O transfer record type has their IO_TAGNAME field defined with 3
sizes, based on the theorical maximum length of the tag name that will be
used to reference the device data point. The maximum field sizes defined by
IP.21 are as follows:
 Regular – 40 character tag names
 Long – 80 character tag names

10 Cim-IO Records in InfoPlus.21 119


 LongLong – 256 character tag names
IMPORTANT NOTE: Cim-IO allows an actual maximum of 39,79, and 255
characters respectively in these fields. For sizing purpose, the IP.21 theorical
maximum sizes are used in the calculation in the table below
The maximum number of tags that can be placed in a record depends on a
record’s type and size, as follows:
Get Put PutOnCOS Unsol

Regular 1234 1392 1109 884


Long 558 976 828 696
LongLong 406 422 391 359

The Cim-IO Read Transfer


Records
These records allow you to transfer values from an external device or another
database to the InfoPlus.21 database data records. You must create one or
more read transfer records and specify several pieces of information in the
read transfer records. Among other things, you must specify:
 Where to find the values in the logical device
 Where to store the values in the local database
The term logical device represents the external device or other database.
Read transfer records are created using the IoGetDef definition record. In
general, read transfer records are used to periodically poll a logical device for
data.
Be sure you create a read transfer record for each remote hardware unit or
plant area from which values are to be read. A hardware unit can be a
furnace or tower. By associating a read record with a single device or area,
you can easily disable all read operations associated with the device or area
when the device is taken off-line for maintenance.
In addition, specify a maximum of 200-300 points to read per read transfer
record. This value has proven in the past to be a good value to use.
In Cim-IO version 4.6 and later, you can use normal read transfer records or
historical read transfer records to define the data to be read from the logical
device. If you meet all of the following conditions, use historical read transfer
records, instead of the normal read transfer records:
 Fill in gaps in history by obtaining historical data from the logical device
after the database has been restarted.
 Obtain historical data values from the logical device.
You must also verify that you are using a Cim-IO device-specific server
component that can acquire the logical device historical data.
Historical read transfer records contain additional fields of information normal
read transfer records do not have. See this section for information about the
historical read transfer records. See “Cim-IO History Recovery” for more
information.

120 10 Cim-IO Records in InfoPlus.21


You can use a mixture of normal read transfer records and historical read
transfer records when obtaining data from a logical device. If you plan to
acquire historical data in the future for the points defined in the normal read
transfer records, use a historical read transfer record when creating the
transfer records. The acquiring of historical data for the points can be
bypassed by setting the IO_HIST_RECOVERY fields in the historical read
transfer record to OFF.
In addition, if tag names longer than the 39-character maximum allowed by
IoGetDef or the historical read transfer record are needed, you can use the
IoLongTagGetDef definition record for tag names up to 79 characters long, or
the IOLLTagGetDef for tag names up to 255 characters long, instead of either
one. The structure of the IoLongTagGetDef and IOLLTagGetDef definition
records are identical to the historical read transfer record, except that they
allow longer tag names and thus allow fewer tags to be read per record. See
the “The Cim-IO I/O Transfer Records” section for more details as to number
of tags allowed per record.
Read transfer records contain a fixed area and a repeat area. Among other
things, the fixed area allows you to:
 Specify the name of the external task that processes the record.
 Specify the name of the group to which the transfer record belongs.
 Enable/disable the transfer operation for all the points.
 Specify how many points are to be transferred when the record is
activated.
Among other things the repeat area of the transfer record allows you to:
 Specify individual point tag names.
 Enable/disable individual point transfer.
 Specify individual point processing, data type, E.U. conversion and
deadband.

IoGetDef Fields
The following illustrates a read transfer record created using the IoGetDef
definition record. All of the points in a read transfer record with the
IO_DATA_PROCESSING field ON are sent together as a group to a Cim-IO
server task. The Cim-IO server task reads the values.

Note: If the content of a Read Transfer record is changed and Store and
Forward is being used, the record must be activated manually in order for the
record changes to be sent to the interface software.

Record Contents FURNACE01W ID = 1505 30-SEP-94 11:30:48

FURNACE01W NAME
FURNACE 1 WEST POINTS DESCRIPTION
ON IO_MESSAGE_SW
NO IO_ACTIVATE-

10 Cim-IO Records in InfoPlus.21 121


IO_ACTIVATION_COS
ON IO_RECORD_PROCESSING
TSK_M_DCS1 IO_MAIN_TASK
1 IO_DEVICE_UNIT
Furnace 1 IO_GROUP
9 IO_PRIORITY
Default IO_DEFAULT_DATA_TYPE
NO IO_ASYNC?
+00000:00:10.0 IO_TIMEOUT_VALUE
+00000:00:30.0 IO_FREQUENCY
22-NOV-94 14:36:52.4 IO_LAST_UPDATE
Success IO_LAST_STATUS
! IO_LAST_STATUS_DESC
0 IO_REQUEST_CHANGES
2 IO_#TAGS
FC8000.MV 1 IO_TAGNAME
ON 1 IO_DATA_PROCESSING
Real 1 IO_DATA_TYPE
FCMV8000 VALUE 1 IO_VALUE_RECORD&FLD
No Conversion 1 IO_DATA_CONVERSION
No Deadband 1 IO_DATA_DEADBAND
Data Ok 1 IO_DATA_STATUS
1 IO_DATA_STATUS_DESC
FC8000.PV 2 IO_TAGNAME
ON 2 IO_DATA_PROCESSING
Real 2 IO_DATA_TYPE
FCPV8000 VALUE 2 IO_VALUE_RECORD&FLD
No Conversion 2 IO_DATA_CONVERSION
No Deadband 2 IO_DATA_DEADBAND
Data Ok 2 IO_DATA_STATUS
2 IO_DATA_STATUS_DESC

NAME
Standard record name. Create a Cim-IO transfer record for each set of values
being read or written.

122 10 Cim-IO Records in InfoPlus.21


DESCRIPTION
A 32-character record description field.

IO_MESSAGE_SW
Enables/disables the storing of status messages into the Setcim records
IoSummary and IoLog when the IO_LAST_STATUS field in the read transfer
record changes value.

IO_ACTIVATE?
This local field can activate the record on demand. By setting this field to YES,
you can trigger Cim-IO to process this record now. This field returns to a
value of NO after being changed to YES.

IO_ACTIVATION_COS
A change-of-state field in which you can enter the name and value field of a
different record, whose value change causes this record to be activated.
For example, if you enter the data record name CRITICAL_ALARM and the
field name VALUE into this change-of-state field and if something else (input
value, another program and so on.) changes the value in the
CRITICAL_ALARM data record, the current transfer record is activated.

IO_RECORD_PROCESSING
This field enables/disables the processing of all points defined in this record.
When this field value is ON, all information in the record is eligible for
processing. When this field value is set to OFF, the information in this record
is not processed, although individual repeat area switches can show the
individual points to be turned ON.
It is recommended that you set the field to OFF when making changes to the
record. The Cim-IO Group record processing status and this record processing
status must be ON for the data in this record to be processed. The group
name is stored in the IO_GROUP field in this record.
If a read operation is being performed and this record is created using the
IoGetDef definition record, you must also grant read permission in the Cim-
IO group record to allow values defined in this record to be read.
If Cim-IO Store and Forward is enabled in the Cim-IO device record and the
IO_RECORD_PROCESSING field is set to OFF, a message is sent to the
scanner to disable scanning for this Cim-IO Read Transfer Record. If the
IO_RECORD_PROCESSING is set to ON after this occurs, the scanning for this
Cim-IO Read Transfer Record is not re-enabled. To enable the scanning again,
activate the Cim-IO Read Transfer Record manually.

IO_MAIN_TASK
Specifies the Cim-IO main client task that processes this record. The transfer
record cannot be made USABLE, unless this field is defined. Normally, you
define this field using the name of the main Cim-IO client task.

10 Cim-IO Records in InfoPlus.21 123


Because more than one main Cim-IO task may be running and the database
may be receiving data from different logical devices, be sure to enter the
correct Cim-IO client task name here. This is the same as the task name
entered in the Cim-IO task definition record. The task name is defined when
the user creates a record against IoExternalTskDef. For example,
TSK_M_DCS1. See Cim-IO Records earlier in this chapter.

IO_DEVICE_UNIT
Specifies the device unit number through which the values are to be read or
written. In some hardware configurations the Cim-IO device-specific server
DLGP task may be required to read data from, and write data to, several
different hardware units.
For instance, the DLGP task can communicate with four different DCS systems
using network communications. There may be 10 different PLC devices
connected to RS-232 serial ports. This field in the record identifies which of
the four gateways or which of the 10 PLCs, the values are to be read from, or
written to.

Note: Some Cim-IO device-specific interfaces can use this record field for
another purpose. Check the device-specific user guide for additional
information.

IO_GROUP
Specifies the group name string with which this set of tag names and values
is associated. For instance, this group can be associated with the hardware
device called Furnace 1.

IO_PRIORITY
The priority Cim-IO sends the request for data to the Cim-IO server tasks
when this record is activated. The valid priority range is 1 to 9. A value of 1 is
the highest priority, and a value of 9 is the lowest priority. Use a value of 5 to
9 for normal read operations. High priority read operations would have a
priority of 1 to 4.

Note: Some Cim-IO device-specific interfaces may use this record field for
another purpose. Check the device-specific user guide for additional
information.

IO_DEFAULT_DATA_TYPE
Specifies a default data type for all the values to be read using this read
transfer record. The possible data types are described in the Cim-IO
Overview. If this field value is Default, then the data type specified for each
individual point in the IO_DATA_TYPE record fields is used.

IO_ASYNC?
This switch indicates if the reply to data requests is to be processed
synchronously or asynchronously.

124 10 Cim-IO Records in InfoPlus.21


 Synchronous: Requests for every GET record is sent by the Main client
task (TSK_M), and received by the Main client task. No subsequent GET
requests are processed until a reply for the current GET request is
received, or until the request times out.
 Asynchronous: Requests for every GET record are sent by the Main client
task (TSK_M) and received by the Asynchronous client task (TSK_A).
When a request is sent, the GET records status is updated to ‘Waiting for
Async’. When the Asynchronous client task receives the data, the records
status is set to ‘Success’ or ‘Some Bad Points’ depending on the quality of
the points that were retrieved.
 Put Records:
 Synchronous: Requests are sent and received by the Main client task
(TSK_M). No subsequent PUT requests are processed until a reply for the
current PUT request is received, or until the request times out.
 Asynchronous: Requests for every PUT record are sent by the Main client
task (TSK_M) and received by the Asynchronous client task (TSK_A).

IO_TIMEOUT_VALUE
Specifies the time-out value that the main Cim-IO client task is to use during
synchronous read operations. Depending on the logical device, the following
value is usually sufficient:
+00000:00:10.0 to +00000:00:20.0
A negative or null time-out value means the main client task should wait
forever for a reply from the Cim-IO device-specific server DLGP task. For an
asynchronous request, the time-out value is the expected maximum time the
client will need to send the request to the server and receive and
acknowledgement. For a synchronous request, the time-out value is the
expected maximum time the client will need to send the request to the server
and for the server to process the request and send a reply to the client. If the
time-out is exceeded, the Get record status will indicate a time-out.

Note: If the time-out is 0 or negative, the default timeout of 5 seconds will


be used.

IO_FREQUENCY
If the IO_FREQUENCY field value is greater than 0, the values in this record
are obtained cyclically at the specified frequency by the DLGP. This allows the
data to be accessed from memory for better performance.
A negative value indicates the data does not have to be accessed directly
from the device, but could come from computer memory. That is, if the data
is not older than a time specified in the IO_FREQUENCY record field.
A value of 0 indicates the data must be acquired from the device right now.
The frequency is specified in terms of a second. When the Read Transfer
Record is activated, the scanner on the server computer is programmed to
periodically read values for this Read Transfer Record every IO_FREQUENCY
period:
 If the IO_FREQUENCY has a value greater than 0
 If Cim-IO Store and Forward is enabled for this device.

10 Cim-IO Records in InfoPlus.21 125


Note: If Cim-IO Store and Forward is disabled for this device, the availability
of this feature depends on the Cim-IO server subsystem implemented for the
specific logical device. Some Cim-IO server tasks may use this field value and
some do not. Check the device-specific interface documentation to see if this
field value is required.

IO_LAST_UPDATE
Specifies the timestamp when the IO_LAST_STATUS field was last updated.

IO_LAST_STATUS
Specifies an integer field formatted by the Io-Last-Status selector record
containing error messages. Records with a non-zero IO_LAST_STATUS are
listed in the IoSummary (SummaryDef) record and are logged to the
IoLog (LogDef) record if IO_MESSAGE_SW is ON.

IO_LAST_STATUS_DESC
Specifies a description of the last record processing status. If
IO_MESSAGE_SW is ON, the description is logged to the IoSummary and
IoLog record.

IO_REQUEST_CHANGES
You cannot modify the contents of this field. The contents of this field are
automatically incremented when you modify the contents of other fields in
this record. This field indicates to the Cim-IO client tasks:
 Contents of this record have changed.
 Client tasks are to indicate to the Cim-IO server tasks something has
changed.
Some server tasks need an indicator when the record contents have changed.

IO_#TAGS
Specifies a repeat area count field indicating the number of points defined in
the current transfer record that are to be accessed in the logical device. Enter
a number in this field to create record occurrences. Once created, enter
information in each record occurrence. A value is normally obtained from the
logical device for each record occurrence created by the user.
Note that, in general, fewer records with more points per record are more
efficient than more records with fewer points per record, due to the
processing and message overhead necessary for each read request. The Cim-
IO server may also be able to do few large reads faster than many small
reads, adding to the efficiency.

n IO_TAGNAME
Specifies a 39-character string field. The contents of this field can vary
greatly, depending on the device and the implementation of the server
subsystem. This field normally contains a hardware address indicating where
the point can be found in the logical device. The content of the field is called a

126 10 Cim-IO Records in InfoPlus.21


tag name. A tag name would typically be of the format ENTITY.PARAMETER
for a DCS and a register number for a PLC. Refer to the specific server
subsystem user's guide to determine the contents of this field.

n IO_DATA_PROCESSING
Enables/disables the processing of the value identified by the tag name string
stored in the IO_TAGNAME record field.
 If this field is set to OFF, the value associated with the tag name string is
not read from the device.
 If this field value is set to ON, the value associated with the tag name
string is processed.
In addition, the value attributes defined here for this value cannot be
modified unless this record field value is set to OFF.
If this field is set to OFF, the rest of the transfer record can still be processed.
Only the values whose IO_DATA_PROCESSING field is set to OFF are not
processed. You set IO_DATA_PROCESSING to OFF if the point has not yet
been created in the DCS, PLC or other database. Leave
IO_DATA_PROCESSING ON if the entire plant area or hardware device has
gone off-line.
Set the IO_RECORD_PROCESSING field to OFF if the entire logical device has
gone down for maintenance.

n IO_DATA_TYPE
Specifies the data type of the value in the logical device. The supported data
types are described in the Cim-IO Overview. The content of this field
supersede the IO_DEFAULT_DATA_TYPE field specified in the fixed area of the
record unless Default is specified in the IO_DATA_TYPE field. In such a case,
the data type is the one specified in IO_DEFAULT_DATA_TYPE, unless the
IO_DEFAULT_DATA_TYPE field is set to Default. If the
IO_DEFAULT_DATA_TYPE field is set to Default, the data type of the data
record is used.

n IO_VALUE_RECORD&FLD
Contains the data record name and field name in which the input value is to
be stored.

Note: The data record and field name must already exist before you can
enter the names into this field.

n IO_DATA_CONVERSION
Specifies the descriptive name of the engineering units if engineering unit
conversion is to be performed on raw input values. E.U. conversion is
described earlier in this section. In addition, see the device-specific user guide
for information.

10 Cim-IO Records in InfoPlus.21 127


n IO_DATA_DEADBAND
Specifies the deadband identification name to be applied to the value being
read. This filters minor changes in the input value. The default deadband
identification name is No Deadband.

Important: Filtering is done on the client side, so no network bandwidth or


store file space is saved when this option is selected. If you wish to save
network bandwidth and/or store file space, use the Unsolicited transfer record
in either normal or Compressed Unsolicited mode.
Note: Data from an E.U. conversion record is required for percent deadband
calculations. Because there is no E.U. conversion record data for data values
already in engineering units, percent deadband filtering can only be
performed on data values coming in as raw counts. Absolute deadband
filtering can be performed on values already in engineering units.

n IO_DATA_STATUS
Specifies an integer field indicating the Cim-IO generic status of the access
operation for the value. The contents of this field are defined using the Io-
Data-Status database selector record. The selector record contains all the
possible data status values interfaces can encounter. As new interfaces are
created, AspenTech updates the selector record and the CIMIO.H C-language
include file to add the new errors.

n IO_DATA_STATUS_DESC
A character string field indicating the device specific data status of the access
operation.

Automatic Scan-Off for Problematic Tags


This option is designed to allow users to configure InfoPlus.21 systems to
automatically take certain tags off scan in the repeat area of InfoPlus.21
IOGetDef records when these tags cause performance problems on Cim-IO
servers.
Specifically these problems have been seen in certain OPC servers. A typical
example of this is when tags that do not exist in the external data source are
being requested by InfoPlus.21. The repeated requests for these non-existent
tags can cause response time from the Cim-IO server to degrade.
To enable this option, the computer running InfoPlus.21 needs to be
configured to detect and scan off problematic tags. This is done by setting the
“CIMIODeviceScanOff” value using CimioProperties.
The value CIMIODeviceScanOff must be set to a comma separated list of
numeric Cim-IO device status codes for tags that should be taken off scan.
For example when using the Cim-IO/OPC server, if a non-existent tag is
requested, the device status returned for that tag will be “77101”. This
number indicates a Cim-IO server facility of “77” for OPC and an error of
“101” for invalid tag. In this example the value of CIMIODeviceScanOff would
be defined as “77101”. If necessary, multiple values can be defined by
separating them with commas. For example a string value of “77101, 77116”

128 10 Cim-IO Records in InfoPlus.21


would indicate tags with device status codes of 77101 and 77116 should be
taken off scan in the repeat area of the IOGetDef record.

Note: CIMIODeviceScanOff does not function if DisableCIMIODeviceScan is


set to “Do Not Use Scan Off”.
When a tag is taken off scan, the reason will be stored in the
IO_DATA_STATUS_DESC field of the IOGetDef record. This will contain the
descriptive text associated with the numeric device status code. In the above
OPC example, if a device status code of 77101 was detected this field would
be set to the string “Invalid Tag”.
These numeric codes and their associated descriptions are defined in the
server specific .def file, which contains the error codes for the Cim-IO server.
In the above OPC example the file would be called cimio_opc.def. For this
feature to work properly, the .def file for the Cim-IO server must be in the etc
directory of Cim-IO directory tree on the InfoPlus.21 computer and the file
cimio_errors.def must contain an entry listing the servers .def error file. For a
complete explanation of errors files, see the “Updating the Error Defintion
File” section of this document.
When problems with the tags have been corrected in the external data source
these tags will need to be put back on scan in the IOGetDef record. This can
either be done manually or through an InfoPlus.21 SQL script.

The Cim-IO Unsolicited Read


Transfer Record
The IoUnsolDef definition record creates database records associated with
unsolicited read operations. If longer tag names are desired, the
IoLongTagUnsDef definition record may be used for tag names up to 80
characters long, and the IOLLTagUnsDef record can be used for tag names up
to 255 characters long. These records are identical to the IoUnsolDef record,
except that they allow longer tag names and fewer items are allowed to be
read in one record (see the section “The Cim-IO I/O Transfer Records” above
for item limits).
Data from an external device can be obtained periodically (polled) or when
the device is ready to just send data (unsolicited). Different Cim-IO server
programs are used to process polled and unsolicited data.
Unsolicited read transfer records created with the IoUnsolDef definition record
allow you to define those points that are associated with unsolicited read
operations. Using fields in unsolicited transfer records, you can make points
eligible for unsolicited read processing (declare it) or remove it from
unsolicited read processing (cancel it).
The Cim-IO server task that processes unsolicited data only processes values
that are declared. When unsolicited read transfer records are activated,
messages are sent to the Cim-IO server tasks indicating the points in the
record to declare or cancel as unsolicited points. The software uses certain
rules to decide which unsolicited points to process and not process.

10 Cim-IO Records in InfoPlus.21 129


Record Activated Due to a Change to
IO_RECORD_PROCESSING
The result of a unsolicited record activation depends on the
IO_RECORD_PROCESSING and other fields in an unsolicited read record. The
rules of activation are:
 If the IO_RECORD_PROCESSING field value is changed to ON, all points
whose IO_DATA_PROCESSING field value is ON and whose
IO_DECLARE_STATUS field is not Declared are sent to the Cim-IO server
program to declare them as unsolicited points. The values stored in the
IO_DECLARE_STATUS record fields are changed to Declared by a Cim-IO
program. This indicates the points are now being processed.
All points whose IO_DATA_PROCESSING field value is OFF and whose
IO_DECLARE_STATUS field values are Declared, are sent to the Cim-IO
server program to remove the points from processing. The values stored
in the IO_DECLARE_STATUS record fields are changed to Canceled by a
Cim-IO client program and are used to indicate the points are now no
longer being processed.
 If the IO_RECORD_PROCESSING field value is changed to OFF, all points
whose IO_DECLARE_STATUS field value are Declared are sent to the Cim-
IO programs to Cancel them and to remove them from unsolicited
processing.

Record Activated Due to a Change to


IO_DATA_PROCESSING
 If the IO_RECORD_PROCESSING field has a value of OFF, a value change
to the IO_DATA_PROCESSING field value is ignored.
 If the IO_RECORD_PROCESSING field has a value of ON and the
IO_DATA_PROCESSING field value is changed to ON, information about
this single point is sent to the Cim-IO programs to indicate this point is to
be processed.
 If the IO_DATA_PROCESSING field value is changed to OFF, this single
point is sent to the Cim-IO programs to indicate this point is not to be
processed.

Record Activated Due to a Change to the


IO_ACTIVATE
This can also occur due to some other activation mechanism outside the
unsolicited read record.
 If the IO_RECORD_PROCESSING field contains a value of ON, all points
whose IO_DATA_PROCESSING fields contain an ON value are sent to the
Cim-IO server program to be processed even though the individual
IO_DECLARE_STATUS field value already contains the value Declared. All
points whose IO_DATA_PROCESSING field values contain an OFF value
are sent to the Cim-IO server program to remove the points from
processing even if the IO_DECLARE_STATUS field values already contain
the value Canceled.

130 10 Cim-IO Records in InfoPlus.21


 If the IO_RECORD_PROCESSING field contains a value of OFF, all points
whose IO_DATA_PROCESSING field values contain a value of ON are sent
to the Cim-IO programs to remove the points from processing even if the
IO_DECLARE_STATUS field values already contain the value Canceled.

Unsolicited Read Transfer Records: Fixed


Data Area
Unsolicited read transfer records contain a fixed data area and a repeat data
area, similar to the Cim-IO read transfer records defined using the IoGetDef
definition records. The fixed area allows you to:
 Specify the name of the external task that is to process the unsolicited
transfer record contents. The external task name is the main Cim-IO client
task name for the device. The external task name is not the Cim-IO
unsolicited external task name for the device.
The main client task is responsible for unsolicited point
declaration/cancellation operations. The unsolicited client task is
responsible for reading the unsolicited values sent to it by the device-
specific Cim-IO unsolicited server program. The unsolicited client task
updates the database data records with data values coming from the
device-specific unsolicited server task.
 Specify the name of a group to which the unsolicited transfer record
belongs.
 Enable/disable the processing for all points defined in the unsolicited
transfer record.
 Specify how many points are to be processed.
 Specify the time frequency at which the unsolicited server program sends
the data values cyclically to the unsolicited client program, if the
unsolicited server program supports this feature.

Unsolicited Read Transfer Records: Repeat


Data Area
The repeat data area of the unsolicited transfer record allows you to:
 Specify the location of each point being read from the logical device. An
ASCII tag name string is normally entered in this field to identify the
logical device value location.
 Enable/disable individual point processing.
 Specify the data type of each value in the logical device, whether
engineering unit (E.U.) conversion is required, and whether deadband
processing is to be performed by the unsolicited client program to filter
out small variations in input values.
 Specify a device deadband value using the Io-Dev-Deadbands selector
record for each point. This deadband value is sent to the Cim-IO server
program to use to filter out small variations in input values.

10 Cim-IO Records in InfoPlus.21 131


IoUnsolDef Fields
The following illustrates an unsolicited read transfer record created using the
IoUnsolDef definition record:
Record Contents TOWER5E ID = 3686 23-JAN-95 16:45:53

TOWER5E NAME
DIST. TOWER 5 EAST DESCRIPTION
OFF IO_MESSAGE_SW
NO IO_ACTIVATE?
ON IO_RECORD_PROCESSING
TSK_M_DCS1 IO_MAIN_TASK
1 IO_DEVICE_UNIT
IO Group 1 IO_GROUP
5 IO_PRIORITY
Default IO_DEFAULT_DATA_TYPE
NO IO_ASYNC?
+00000:00:20:0 IO_TIMEOUT_VALUE
+00000:00:30:0 IO_FREQUENCY
23-JAN-95 16:45:53.0 IO_LAST_UPDATE
Success IO_LAST_STATUS
IO_LAST_STATUS_DESC
0 IO_REQUEST_CHANGES
2 IO_#TAGS
QI1991.PV 1 IO_TAGNAME
ON 1 IO_DATA_PROCESSING
Real 1 IO_DATA_TYPE
QI1991 VALUE 1 IO_VALUE_RECORD&FLD
No Conversion 1 IO_DATA_CONVERSION
No Deadband 1 IO_DATA_DEADBAND
No Deadbands 1 IO_DEVICE_DEADBAND
23-JAN-95 16:45:53:0 1 IO_DATA_LAST_UPDATE
Data Ok 1 IO_DATA_STATUS
1 IO_DATA_STATUS_DESC
23-JAN-95 15:57:25:2 1 IO_LAST_DECLARE/CAN
Declared 1 IO_DECLARE_STATUS
1 IO_DECLARE_STS_DESC

132 10 Cim-IO Records in InfoPlus.21


QI1992.PV 2 IO_TAGNAME
ON 2 IO_DATA_PROCESSING

Default 2 IO_DATA_TYPE
QI1992 VALUE 2 IO_VALUE_RECORD&FLD
No Conversion 2 IO_DATA_CONVERSION
No Deadband 2 IO_DATA_DEADBAND
No Deadbands 2 IO_DEVICE_DEADBAND
23-JAN-95 16:45:53:0 2 IO_DATA_LAST_UPDATE
Data Ok 2 IO_DATA_STATUS
2 IO_DATA_STATUS_DESC
23-JAN-95 15:57:25:2 2 IO_LAST_DECLARE/CANC
Declared 2 IO_DECLARE_STATUS
2 IO_DECLARE_STS_DESC

NAME
Standard record name. Create an unsolicited transfer record for each set of
unsolicited points being read.

DESCRIPTION
Contains a 32-character record description field.

IO_MESSAGE_SW
Enables/disables the putting of entries into the IoSummary and IoLog
records when the IO_LAST_STATUS field changes value.

IO_ACTIVATE?
Specifies a local field whose value can be changed by the user or by another
program to activate the transfer record. Setting this field value to YES causes
the Cim-IO main client task to re-declare or re-cancel the unsolicited points
defined in the record. This field is automatically set back to NO after being
processed.

IO_RECORD_PROCESSING
Enables/disables processing of all points defined in this record.
 When this field value is ON, all the information in the transfer record is
eligible for processing.
 When this field value is set to OFF, the information in this record is not
processed, although individual point switches may show the individual
points to be turned ON. This field must be manually set to OFF in order to
change certain other fields in the record.

10 Cim-IO Records in InfoPlus.21 133


The Cim-IO Group record processing status and this record processing status
must be ON for the data in this record to be processed. Group processing is
discussed in this section and the group name is stored in the IO_GROUP field
in this record. Read permission must also be granted in the Cim-IO group
record for values defined in this record to be read.
When the Cim-IO Store and Forward system is enabled in the Cim-IO device
record and the IO_RECORD_PROCESSING field is set to OFF, a message is
sent to Cim-IO Store and Forward to disable storing and forwarding
unsolicited data for this Unsolicited Transfer Record. Setting
IO_RECORD_PROCESSING back to ON enables storing and forwarding
unsolicited data for this Unsolicited Transfer Record.

IO_MAIN_TASK
Specifies the Cim-IO main client task that processes the record. Do not
specify the unsolicited Cim-IO client task name here. The main client task is
responsible for declaration/cancellation of unsolicited points. The unsolicited
client task is responsible for receiving data coming from the unsolicited server
task and updating the database accordingly. This transfer record cannot be
made USABLE unless this field is defined.

IO_DEVICE_UNIT
Specifies the device unit number through which the values are to be read. In
some hardware configurations, the server DLGP task may read data from
several hardware units. For instance, the DLGP may communicate with four
different DCS units using network communications. There may be 10 different
PLC devices connected to RS-232 serial ports. This field in the record
identifies which of the 4 DCS units or which of the 10 PLCs from which the
values are to be read. Refer to the device-specific server user's guide for the
use of this parameter.
IO_GROUP
Specifies the group name string with which this set of points is associated. For
instance, this group may be associated with the hardware unit West Furnace.
The group name strings are described earlier in this section.

IO_PRIORITY
Specifies the priority the Cim-IO client program sends the processing request
to the Cim-IO server tasks when this record gets activated. The valid priority
range is 1 to 9. A value of 1 is the highest, and a value of 9 is the lowest
priority.

IO_DEFAULT_DATA_TYPE
Specifies a default data type for the entire record. The available data types
are described in the Cim-IO Overview. If this field value is Default, the data
type specified for each individual point is used.

134 10 Cim-IO Records in InfoPlus.21


IO_ASYNC?
Specifies a switch to indicate if the declaration/cancellation operations of the
unsolicited points are to be processed asynchronously or synchronously.
 If you select synchronous operations, the main client task sends the point
request and waits for the reply before processing the next transfer record.
 If you select asynchronous operations, the main client task sends the
point request, but does not wait for the reply. The asynchronous client
task receives the reply and processes it.
If you set this field value to YES, you must also ensure that the asynchronous
client task (TSK_A) is started when the main client task and unsolicited client
task are started. If this value is NO, the asynchronous client task does not
have to be started since the main client task performs all the communications
with the server programs.

Note: The IO_ASYNC? Parameter only applies to to send and receive of point
declarations only, not to the actual retrieval of DATA. A point declaration is a
special Cim-IO request that tells a Cim-IO server the points it should send
back whenever the point changes. These Unsolicited replies are always sent
to the Unsolicited client task (TSK_U).

IO_TIMEOUT_VALUE
Specifies the time specified is the time-out value that the main Cim-IO client
task is to use during synchronous read operations. Depending on the logical
device, the following value should be sufficient:
+00000:00:10.0 (10 seconds) to +00000:00:20.0 (20 seconds)
A negative or zero time-out value means that the main client task waits
forever for a reply from the Cim-IO device-specific server DLGP task. This
field does not apply to asynchronous requests.

IO_FREQUENCY
If the IO_FREQUENCY field value is greater than 0, the values in this record
indicates to the server how often it should poll the device to see if data has
changed. For instance, if the value in this field is 15, the server will poll the
device every 15 seconds, and will send a new value if it has changed.

Important: The behaviour can be Cim-IO Server specific. Many servers will
not poll the device even if a frequency is specified. Refer to the Cim-IO Server
specific manual for a description of the behaviour of that server.
If the IO_FREQUENCY field value is less than 0 this indicates that the Store
and Forward software should perform the unsolicited data IO by scanning the
Cim-IO server at the absolute value of the frequency specified and checking
for changes which exceed the deadband. See the “Cim-IO Store and Forward”
chapter for more details.

Important: Using an IO_FREQUENCY value of less than 0 will allow you to


obtain Unsolicited replies from a Cim-IO server that supports Get requests.
The server does not have to support Unsolicited messaging to use this option.

10 Cim-IO Records in InfoPlus.21 135


IO_LAST_UPDATE
Specifies the timestamp when the IO_LAST_STATUS field was last updated.

IO_LAST_STATUS
Specifies an integer field formatted by the Io-Last-Status selector record.
Records with a non-zero IO_LAST_STATUS are listed in the Setcim
IoSummary (SummaryDef) record. These records are logged to the IoLog
(LogDef) record when IO_MESSAGE_SW is ON.
This field is updated by the Cim-IO client task after the
declaration/cancellation of the unsolicited points. The unsolicited task also
updates this field after receiving data from the server task for this record.

IO_LAST_STATUS_DESC
Describes the last record processing status. If IO_MESSAGE_SW is ON, the
description is logged to the IoSummary and IoLog record.

IO_REQUEST_CHANGES
You cannot modify the contents of this field. This field is automatically
incremented when you modify other fields in this record. This field indicates
that the content of this record has changed to the Cim-IO client tasks. In
turn, the Cim-IO client tasks indicate to the Cim-IO server tasks that
something has changed, this status field is required by some server tasks.

IO_#TAGS
Specifies a repeat area count field indicating the number of points (defined in
the current transfer record) to be accessed in the logical device. Modify this
field to create one or more point occurrences. Enter data in the data
occurrences to indicate which tag names to declare or cancel.

Note: In general, fewer records with more points per record are more
efficient than more records with fewer points per record, due to the
processing and message overhead necessary to declare points and manage
unsolicited replies.

n IO_TAGNAME
Specifies a 39-character string field. This field can vary greatly depending on
the device and the implementation of the server subsystem. This field
normally contains a hardware address indicating where the point can be found
in the logical device.
This field contains a tag name. Typically, the tag name can have one of the
following formats, not both:
 Format POINT.PARAMETER for a DCS
 Register number for a PLC
Refer to the specific server subsystem user's guide.

136 10 Cim-IO Records in InfoPlus.21


n IO_DATA_PROCESSING
Enables/disables the processing of the value identified by the tag name string
stored in the IO_TAGNAME record field:
 If this field is set to OFF, then the value associated with the tag name
string is not read from the device.
 If this field value is set to ON, the value associated with the tag name
string is processed.

n IO_DATA_TYPE
Specifies the data type of the value in the logical device. The supported data
types are described in the Cim-IO Overview.
This field's contents supersede the IO_DEFAULT_DATA_TYPE field contents
specified in this record's fixed area, unless Default is specified in the
IO_DATA_TYPE field.
 The data type, IO_DEFAULT_DATA_TYPE, is used, unless the
IO_DEFAULT_DATA_TYPE field is set to Default.
 If the IO_DEFAULT_DATA_TYPE field is set to Default, the data type of the
Setcim data record is used.

n IO_VALUE_RECORD&FLD
Contains the data record name and field name in which the received value is
to be stored.

Note:
 The data record and field name must already exist before you can enter
the names into this field.
 When turning UNSOL records from OFF to ON, the timestamp recorded at
the destination pointed to by this field is the InfoPlus.21 system time
when the IO_RECORD_PROCESSING was switched to ON.

n IO_DATA_CONVERSION
If engineering unit conversion is to be performed on raw input values, the
engineering units enter the descriptive name in this field. E.U. conversion is
described earlier in this section. Also see the device-specific user guide for
information.

n IO_DATA_DEADBAND
Specifies the deadband descriptive name that identifies the deadband values.
The deadband values are applied to the input value to filter out minor
changes in the value before storing the value in a database record. The
default deadband identification name is No Deadband.

10 Cim-IO Records in InfoPlus.21 137


Important:
 DATA_DEADBAND filtering is done on the client side, so no network
bandwidth or store file space is saved when this option is selected. If you
wish to save network bandwidth and/or store file space, use
DEVICE_DEADBAND below.
 Since data from an E.U. conversion record is required for percent
deadband calculations and since there is no E.U. conversion record data
for data values already in engineering units, percent deadband filtering
can only be performed on data values coming in as raw counts. Absolute
deadband filtering can be performed on values already in engineering
units.

n IO_DEVICE_DEADBAND
The deadband device identification name. The main task sends the deadband
device type and value to the server task based on this device deadband
identification name when an unsolicited point is being declared. The server
task uses the device deadband data to filter out minor changes in the input
value before sending the value to the unsolicited client task. The deadband
device identification name should be specified in Io-Dev-Deadbands record.
The structure of Io-Dev-Deadbands record is exactly like the Io-Deadbands
record. The default deadband device identification name is No Deadband.

n IO_DATA_LAST_UPDATE
Specifies the timestamp when the points were last processed, for example,
read.

n IO_DATA_STATUS
Specifies an integer field indicating the declaration/cancellation status or the
results of the last unsolicited read operation. This field is defined using the
Io-Data-Status database selector record. The selector record contains all
possible data status values that interfaces can encounter.

Note: As new interfaces are created, AspenTech updates the selector record
and the cimio.h C-language include file to add the new errors.

n IO_DATA_STATUS_DESC
Specifies a character string field indicating the device-specific data status of
the access operation.

n IO_LAST_DECLARE/CANC
Specifies the timestamp when the point was last declared or canceled.

n IO_DECLARE_STATUS
Specifies an integer field formatted using the Io-Declare-Status record and
indicating the declaration/cancellation status of the point. The valid values
are:
 Never Declared

138 10 Cim-IO Records in InfoPlus.21


 Declared
 Canceled
 Declared Failed
 Cancel Failed
Any declaration/cancellation error is updated in the IO_DATA_STATUS and
IO_DATA_STATUS_DESC fields.

n IO_DECLARE_STATUS_DESC
Specifies a character string field indicating the success of the
declaration/cancellation status for this point.

The Cim-IO Historical Read


Transfer Record
The Cim-IO Historical Read Transfer record is similar to the normal read
transfer record. This record is used in lieu of the read transfer record if you
want to use the Cim-IO history recovery client tasks. The history recovery
tasks are described earlier in this section.
These records allow you to transfer values from an external device or another
database to the InfoPlus.21 database records. You must create one or more
historical read transfer records and specify in these records several pieces of
information. Among other things, you must specify where to find the values in
the logical device and where to store the values in the local database.
The term device represents the external device or other database. Historical
read transfer records are created using the IoGetHistDef definition record. In
general, historical read transfer records are used to periodically poll a logical
device for data. These records also obtain historical data from an external
device or another database before the normal Cim-IO client tasks start
obtaining current data for the points.
It is good practice to create a historical read transfer record for each remote
hardware unit or plant area from which values are to be read. (A hardware
unit can be a furnace or tower.) By associating a read record with a single
device or area, you can easily disable all read operations when the associated
with the device or area is taken off-line for maintenance.
If longer tag names are required, IoLongTagGetHistDef may be used in place
of IoGetHistDef. The two records are identical in structure, except for the
length of the IO_TAGNAME and IO_HISTORY_TAGNAME fields.

Note: If the content of a Historical Read Transfer record is changed and Store
and Forward is being used, the record must be activated manually in order for
the record changes to be sent to the interface software.
Historical read transfer records contain a fixed area and a repeat area. Among
other things, the fixed area allows you to:
 Specify the name of the external task that processes the record.
 Specify the name of the group to which the transfer record belongs.

10 Cim-IO Records in InfoPlus.21 139


 Enable/disable the transfer operation for all the points.
 Specify how many points are to be transferred.
 Enable/disable getting historical data for points.
 Show the status of historical data acquisition.
Among other things, the repeat area of the transfer record allows you to:
 Specify individual point tag names.
 Enable/disable individual point transfer.
 Specify individual point processing, data type, E.U. conversion, and
deadband.
 Specify where to find historical data in the logical device and where to
store the values in the database.
Create enough Cim-IO historical read transfer records to sufficiently define all
the values that are to be accessed on the device. Do not attempt to use a
single transfer record for more than one logical device. Use different transfer
records for different logical devices.

Note: You can use a mixture of normal read transfer records and historical
read transfer records to obtain data for a logical device. If you plan to acquire
historical data in the future for the points defined in the normal read transfer
records, use a historical read transfer record when creating the transfer
records. The acquisition of historical data for the points can be bypassed by
setting the IO_HIST_RECOVERY fields in the historical read transfer record to
OFF.

IoGetHistDef Fields
The figure below provides an example of a historical read transfer record that
was created using the IoGetHistDef definition record. All of the points in the
transfer record that have the IO_DATA_PROCESSING field ON are sent
together as a group to a Cim-IO server task. The Cim-IO server task takes
care of reading the values.

Note: The example record does not contain any history recovery information.
Record Contents WELL8N ID = 1505 30-SEP-94 11:30:48

WELL8N NAME
NORTH WELL #8 DESCRIPTION
ON IO_MESSAGE_SW
NO IO_ACTIVATE-
IO_ACTIVATION_COS
ON IO_RECORD_PROCESSING
TSK_M_DCS1 IO_MAIN_TASK
1 IO_DEVICE_UNIT
Furnace 1 IO_GROUP

140 10 Cim-IO Records in InfoPlus.21


9 IO_PRIORITY
Default IO_DEFAULT_DATA_TYPE
NO IO_ASYNC?
+00000:00:10.0 IO_TIMEOUT_VALUE
+00000:00:30.0 IO_FREQUENCY
22-NOV-94 14:36:52.4 IO_LAST_UPDATE
Success IO_LAST_STATUS
! IO_LAST_STATUS_DESC
0 IO_REQUEST_CHANGES
ON IO_HIST_RECOVERY
+00000:00:10.0 IO_HIST_TIMEOUT
+00000:01:00.0 IO_HIST_GAP_INTERVAL
???????????????????? IO_HIST_LAST_UPDATE
Initial State IO_HIST_LAST_STATUS
IO_HIST_STATUS_DESC
50 IO_HIST_PRIORITY
2 IO_#TAGS
FC8000.MV 1 IO_TAGNAME
ON 1 IO_DATA_PROCESSING
Real 1 IO_DATA_TYPE
FCMV8000 VALUE 1 IO_VALUE_RECORD&FLD
No Conversion 1 IO_DATA_CONVERSION
No Deadband 1 IO_DATA_DEADBAND
Data Ok 1 IO_DATA_STATUS
1 IO_DATA_STATUS_DESC
INACTIVE 1 IO_DATA_RECOV_STATUS
ON 1 IO_DATA_HIST_RECOV
FCMV8000 1 TREND_VALUE 1 IO_DATA_HIST_REC&FLD
1 IO_HISTORY_TAGNAME
FC8000.PV 2 IO_TAGNAME
ON 2 IO_DATA_PROCESSING
Real 2 IO_DATA_TYPE
FCPV8000 VALUE 2 IO_VALUE_RECORD&FLD
No Conversion 2 IO_DATA_CONVERSION
No Deadband 2 IO_DATA_DEADBAND
Data Ok 2 IO_DATA_STATUS

10 Cim-IO Records in InfoPlus.21 141


2 IO_DATA_STATUS_DESC
INACTIVE 2 IO_DATA_RECOV_STATUS
ON 2 IO_DATA_HIST_RECOV
FVPV8000 1 TREND_VALUE 2 IO_DATA_HIST_REC&FLD
2 IO_HISTORY_TAGNAME

NAME
Specifies the standard record name. Create a Cim-IO historical read transfer
record as follows:
 For each set of values being read
 To obtain historical data after the database is restarted.

DESCRIPTION
Specifies a 32-character record description field.

IO_MESSAGE_SW
Enables/disables the storing of status messages into the records IoSummary
and IoLog when the IO_LAST_STATUS field in the historical read transfer
record changes value.

IO_ACTIVATE?
Specifies a local field to activate the record on demand. By setting this field to
YES, you can trigger Cim-IO to process this record now. This field
automatically returns to a value of NO after being changed to YES.

IO_ACTIVATION_COS
Specifies a change of state field that contains the name and value field of a
different, contingent data record. When the value of the contingent record
changes, such as due to an input value, this historical read transfer record is
activated.
For example, you enter the data record name CRITICAL_ALARM and the field
name VALUE into this change of state field. When the value changes in the
CRITICAL_ALARM data record, , such as due to an input value, another
program and so on, then the current transfer read is activated.

IO_RECORD_PROCESSING
Enables/disables processing of all points defined in this record:
 When this field value is ON, the information in the record is eligible for
processing.
 When this field value is set to OFF, the information in this record is not
processed, although individual repeat area switches may show the
individual points to be turned ON. This field must be set to OFF to change
certain other fields in the record.

142 10 Cim-IO Records in InfoPlus.21


Note: The Cim-IO Group record processing status and this record processing
status must also be ON for the data in this record to be processed. The group
name is stored in the IO_GROUP field in this record.
If a read operation is being performed and this record is created using the
IOGetHistDef definition record, grant read permission in the Cim-IO group
record for values defined in this record to be read.
If Cim-IO Store and Forward is enabled in the Cim-IO device record, when the
IO_RECORD_PROCESSING field is set to OFF, a message is sent to the
scanner to disable scanning for this Cim-IO Read Transfer Record. Setting
IO_RECORD_PROCESSING back to ON does not enable scanning for this Cim-
IO Read Transfer Record. To re-enable the scanning, activate the Cim-IO
Read Transfer Record.

Note: The IO_RECORD _PROCESSING field contents have no effect on history


data recovery. Set the individual IO_DATA_PROCESSING field to ON before
history recovery is performed for the data record. Set other conditions before
historical data processing occurs for individual points. See “Cim-IO History
Recovery” for more information.

IO_MAIN_TASK
Specifies the Cim-IO main client task that processes this record. The transfer
record cannot be made USABLE unless this field is defined. Normally, you
enter the name of the main Cim-IO client task in this field. If there is more
than one main Cim-IO task running (the database is getting data from
different logical devices), be sure to enter the correct task name here. This is
the same task name you entered into the Cim-IO task definition record
described earlier.

IO_DEVICE_UNIT
Specifies the device unit number through which the values are to be read or
written. In some hardware configurations, the Cim-IO device-specific server
DLGP task may need to read data from and write data to several different
hardware units.
For example, the DLGP task may communicate with four different DCS
systems using network communications. There may be 10 different PLC
devices connected to RS-232 serial ports. Of the four DCS hardware units or
the 10 PLCs, this field identifies from which device the values are to be read
or to which device the values are to be written.

Note: Some Cim-IO device-specific interfaces may use this record field for
another purpose. Check the device-specific user's guide for additional
information.

IO_GROUP
Specifies the group name string with which this set of tag names and values
is associated. For instance, this group can be associated with the hardware
device called Furnace 1. The group name strings are described earlier in this
section.

10 Cim-IO Records in InfoPlus.21 143


IO_PRIORITY
Specifies the priority Cim-IO uses to send the request to obtain for historical
values to the Cim-IO server tasks when this record is activated. The valid
priority range is 1 to 9. A value of 1 is the highest priority; a value of 9 is the
lowest priority. A value of 5 – 9 is used for normal read operations. High
priority read operations have a priority of 1 – 4.

Note: Some Cim-IO device-specific interfaces may use this record field for
another purpose. Check the device-specific user guide for additional
information.

IO_DEFAULT_DATA_TYPE
Specifies a default data type for all current values to be read using this
historical read transfer record. The possible data types are described earlier.
If this field value is Default, the data type specified for each individual point in
the IO_DATA_TYPE record fields is used.

IO_ASYNC?
A switch to indicate if current value data is to be processed synchronously or
asynchronously.
 If synchronous, the main client task sends a request and waits for the
reply before processing the next transfer record.
 If asynchronous, the main client task sends the request to the Cim-IO
server tasks, but does not wait for the reply. The asynchronous client task
receives and processes the reply.

IO_TIMEOUT_VALUE
Specifies the time-out value the main Cim-IO client task is to use during
synchronous read current value operations. Depending on the logical device,
the following value is usually sufficient:
+00000:00:10.0 (10 seconds) to +00000:00:20.0 (20 seconds)
A negative or null time-out value means that the main client task may wait
forever for a reply from the Cim-IO device-specific server DLGP task. This
field does not apply to asynchronous requests.

Note: History recovery uses a separate time-out value. The


IO_HIST_TIMEOUT field value in the historical read transfer record is used
during history recovery operations.

IO_FREQUENCY
If the IO_FREQUENCY field value is greater than 0, the DLGP obtains the
current values in this record cyclically at the specified frequency. In this way
the data can be accessed from memory for better performance.
If the frequency is negative, then the current value data could be read from
memory if the timestamp is not older than the current time minus the
IO_FREQUENCY value.

144 10 Cim-IO Records in InfoPlus.21


If a historical read transfer record is being activated by the IO_ACTIVATE?
field, the frequency passed to the server is always 0 (the values are to
obtained right now), no matter what is in the frequency field. When activated
using this record field, data is to be read directly from the device and not
from the host computer memory.
When the Historical Read Transfer Record is activated, the scanner on the
server computer is programmed to periodically read the values for this
Historical Read Transfer Record every IO_FREQUENCY period, under the
conditions that the IO_FREQUENCY has a value greater than 0 and Cim-IO
Store and Forward is enabled for this device.

Note: If Cim-IO Store and Forward is not enabled, the availability of this
feature depends on the Cim-IO server subsystem implemented for the specific
device. Some Cim-IO server tasks may use this field's value and some do not.
Check the device-specific interface documentation to see if this field value is
required.

IO_LAST_UPDATE
Specifies the timestamp when the IO_LAST_STATUS field was last updated.

IO_LAST_STATUS
Specifies an integer field formatted by the Io-Last-Status selector record
containing error messages. Records with a non-zero IO_LAST_STATUS are
listed in the IoSummary (SummaryDef) record and are logged to the
IoLog (LogDef) record if IO_MESSAGE_SW is ON.

IO_LAST_STATUS_DESC
Specifies a description of the last record processing status. If
IO_MESSAGE_SW is ON, the description is logged to the IoSummary and
IoLog record.

IO_REQUEST_CHANGES
You cannot modify the contents of this field. This field is automatically
incremented when you modify other fields in this record. This field indicates
to the Cim-IO client tasks:
 Contents of this record have changed.
 Client tasks are to indicate to the Cim-IO server tasks that something has
changed.
Some server tasks need this indication that the record contents have
changed.

IO_HIST_RECOVERY
You change the value in this record field to enable and disable history
recovery for all the points in the historical read transfer record. Set this field
to ON before history recovery occurs for the points in this transfer record. The
default value is OFF.

10 Cim-IO Records in InfoPlus.21 145


IO_HIST_TIMEOUT
The Cim-IO history recovery task uses the time-out value in this field to know
how long to wait for responses from the Cim-IO server tasks when historical
data is being obtained. Depending on the logical device the following value is
usually sufficient:
+00000:00:10.0 (10 seconds) to +00000:00:20.0 (20 seconds)
A zero time-out value means that the history recovery client task should wait
forever for a reply from the Cim-IO device-specific server DLGP task. The
default value of +00000:00:00.0 means to wait forever.

IO_HIST_GAP_INTERVAL
Contains a time value. This field determines if history recovery for a point is
necessary and, if so, which historical data points are to be stored into the
history repeat area of the data record. The time difference between the
current time and the time of the most recent historical data value has to be
greater than IO_HIST_GAP_INTERVAL.
If the database has only been down for less than this time period, this field
alerts the Cim-IO history recovery task.
Do not try to obtain historical values from the logical device. This can be
thought of as a historical time deadband value. The default value is
+00000:00:00.0 (always read historical values from the logical device.)

IO_HIST_LAST_UPDATE
Specifies when the last history recovery process for this historical read
transfer record was completed.

IO_HIST_LAST_STATUS
Contains the status of the last history recovery process for this historical read
transfer record.

IO_HIST_STATUS_DESC
Contains a text description for the status contained in
IO_HIST_LAST_STATUS.

IO_HIST_PRIORITY

Note: The IO_HIST_PRIORITY value applies only to history recovery and is


totally independent of IO_PRIORITY, which applies to real-time data
acquisition.
Assigns a history recovery priority from 1 to 100 to the points in this historical
read transfer record. This priority determines when the history recovery for
the transfer record is to be started. Values for historical read transfer records
with higher history recovery priority are retrieved from history before the
values for historical read transfer records with lower priority. This makes the
points in a higher priority transfer record available for real-time data
collection sooner. A value of 1 is the highest priority; a value of 100 is the

146 10 Cim-IO Records in InfoPlus.21


lowest priority. The default value is zero. The history recovery task
automatically converts zero priority values to 100 when found.

Note: Once history recovery has started, any changes to history recovery
priorities do not take effect until the next history recovery.

IO_#TAGS
Specifies a repeat area count field. This field indicates the number of many
points in the current transfer record that are to be accessed in the logical
device. Enter a number in this field to create record occurrences. Once record
occurrences are created, enter information in each record occurrence. A value
is normally obtained from the logical device for each record occurrence
created by the user.

n IO_TAGNAME
Specifies a 39-character string field. The IO_TAGNAME section should contain
the same contents and format for all the read transfer records (IoGetDef,
IoGetHistDef, IoUnsolDef) and write transfer record. All have the same
information, but are formatted differently. This applies to many of the fields
used in all the Cim-IO records. The IO_TAGNAME is not consistent from one
Cim-IO transfer record to the next.
This field can vary greatly depending on the device and the implementation of
the server subsystem. This field normally contains a tag name identifying the
point in the device. A tag name typically is of the format POINT.PARAMETER
for a DCS and a register number for a PLC. Refer to the specific server
subsystem user's guide to determine which tag name to put in this field.
Enables/disables processing of the value identified by the tag name string
stored in the IO_TAGNAME record field.
 If this field is set to OFF, then the value associated with the tag name
string is not read from the device. When this field is set to OFF, the rest of
the transfer record can still be processed. Only the values whose
IO_DATA_PROCESSING field is set to OFF are not processed.
 If this field value is set to ON, the value associated with the tag name
string is processed. Set this field to ON before the Cim-IO history recovery
task attempts to acquire historical data for the data record defined in this
portion of the transfer record.

Note: Set this status to OFF if the point has not yet been created in the DCS,
PLC, or other database. Leave this ON if the entire plant area or hardware
device has gone off-line. Set the IO_RECORD_PROCESSING field to OFF if the
entire device has gone off-line.
The value attributes defined here for this value cannot be modified, unless
this record field value is set to OFF.

n IO_DATA_TYPE
Specifies the data type of the value in the logical device. The supported data
types are described in the Cim-IO Overview. This field supersedes the
IO_DEFAULT_DATA_TYPE fields specified in the fixed area of the record,

10 Cim-IO Records in InfoPlus.21 147


unless Default is specified in the IO_DATA_TYPE field. In this case the data
type used is the one specified in IO_DEFAULT_DATA_TYPE, unless the
IO_DEFAULT_DATA_TYPE field is set to Default. If so, the data type of the
Setcim data record is used.

n IO_VALUE_RECORD&FLD
Contains the data record name and field name in which the current input
value is to be stored.

Note: The data record and field name must already exist before you can
enter their names into this field.

n IO_DATA_CONVERSION
If engineering unit conversion is to be performed on raw input values, enter
the engineering unit's descriptive name in this field. E.U. conversion is
described earlier in this section. Refer to the device-specific user's guide for
information.

n IO_DATA_DEADBAND
Specifies the deadband ID to be applied to the value that is being read to
filter minor changes in the input value. The default deadband identification
name is No Deadband.

Note: Since data from an E.U. conversion record is required for percent
deadband calculations and since there is no E.U. conversion record data for
data values already in engineering units, percent deadband filtering can only
be performed on data values coming in as raw counts. Absolute deadband
filtering can be performed on values already in engineering units.

n IO_DATA_STATUS
Specifies an integer field indicating the Cim-IO generic status of the access
operation for the value. The contents of this field are defined using the Io-
Data-Status database selector record. The selector record contains all the
possible data status values that interfaces can encounter. As new interfaces
are created, AspenTech updates the selector record and the cimio.h C-
language include file to add the new errors.

n IO_DATA_STATUS_DESC
Specifies a character string field indicating the device specific data status of
the access operation.

n IO_DATA_RECOV_STATUS
Indicates the status of history recovery for the point. This field also signals to
Cim-IO client tasks to indicate when to start collecting real-time current value
data. This integer field is formatted with the Io-Recov-Status selector
record. The default value is INACTIVE. This field can be changed only by Cim-

148 10 Cim-IO Records in InfoPlus.21


IO programs. Cim-IO tasks do not start collecting real-time data while the
IO_DATA_RECOV_STATUS field contains a value of In Progress.

n IO_DATA_HIST_RECOV
Enables/disables history recovery for individual points:
 Change this field to OFF to make the history recovery Cim-IO task skip
processing of this point.
 If the value is set to ON before the recovery task runs, then this point is
processed. See “Cim-IO History Recovery” for more information.

n IO_DATA_HIST_REC&FLD
To recover historical data for the point, enter a data record and field name in
this transfer record field. Normally, current values are stored in a data record
field name called VALUE, although this can vary between data records. In
those same data records, current values are rolled into historical record
occurrences when the current value gets changed.
The data record historical occurrence usually contains a field called
TREND_VALUE, although this can also be different depending on the data
record. This field rolls values when a new current value is stored in the data
record. An example of the data record occurrence name to be entered into
the IO_DATA_HIST_REC&FLD is "FCMV8000 1 TREND_VALUE".
Use the 1 TREND_VALUE format to indicate the first historical occurrence.
Since the Cim-IO history recovery task stores values into the historical
occurrences in a data record, the data record and field name of the historical
occurrence is entered into this historical read transfer record field.
You can also have the Cim-IO client software store current values in one data
record and historical values in a separate data record. For example, when the
data record name entered in this transfer record field is different from the
data record name stored in the IO_VALUE_RECORD&FLD field. By default, this
historical read transfer record field is blank. If the record is still blank when
the history recovery task runs, an error occurs and no historical data is stored
in a data record historical occurrence.
You must specify a data record name and historical occurrence field name
here if historical values are to be obtained from the logical device.

n IO_HISTORY_TAGNAME
To obtain historical data from a tag name that is different from the one
specified in the IO_TAGNAME field, enter the tag name string in this field. If
this field is non-blank then the history recovery task uses the contents of this
record field as a hardware address where the historical data in the logical
device for this point is to be found. By default this field is blank. This field
indicates that the history recovery Cim-IO task is to use the tag name found
in the IO_TAGNAME transfer record field.

Note: Entering a tag name in this field does not affect the tag name the Cim-
IO client tasks use to get current values. It does allow the software to get the
current real-time value using one tag name and its historical values using a
different tag name. This is not normal, but it can be done.

10 Cim-IO Records in InfoPlus.21 149


The Cim-IO Write Transfer
Record
Cim-IO write transfer records specify which data records contain values to be
output to a logical device. You must create one or more write transfer
records. These records specify several pieces of information. Among other
things, these records indicate:
 Where to find the values in the local database
 Where to store the values in the logical device
The term logical device is used to represent the external device or other
database.
Write transfer records are created using IoPutDef, IoLongTagPutDef, or
IoLLTagPutDef. IoPutDef records allow tag names of up to 39 characters in
length. For 79-character tag names, use the IoLongTagPutDef record, and for
255-character tag names use the IOLLTagPutDef. Larger tag names are
allowed at the expense of fewer tags per record. See the section “The Cim-IO
I/O Transfer Records” for information on how many tags are allowed per
record.
In general, write transfer records output a group of values to a logical device.
Even though a single data value may have changed, the entire group of
output data records is processed at the same time.
It is recommended that you create a write transfer record for each remote
hardware unit or plant area to which values are to be written. A hardware unit
can be a furnace or tower. By associating a write record with a single device
or area, you can easily disable all write operations associated with the device
or area when they need to be taken off-line.

Note: If the value changes in a data record, use Cim-IO Write on Change of
State transfer records to write a single value. See the “Cim-IO Write on
Change of State Transfer Record” section.
Write transfer records contain a fixed area and a repeat area. Among other
things, the fixed area allows you to:
 Specify the name of the external task that processes the record.
 Specify the name of the group to which the transfer record belongs.
 Enable/disable the transfer operation for all the points.
 Specify how many points are to be transferred when the record is
activated.
Among other things, the repeat area of the transfer record allows you to:
 Specify individual point tag names.
 Enable/disable individual point transfer.
 Specify individual point processing, data type, E.U. conversion.
Create enough Cim-IO write transfer records to sufficiently define all the
values to be accessed on the device. Do not attempt to use a single transfer
record for more than one logical device. Use different transfer records for
different logical devices.

150 10 Cim-IO Records in InfoPlus.21


IoPutDef Fields
The following figure provides an example of a write transfer record created
using the IoPutDef definition record. All of the points in a transfer record, with
the IO_DATA_PROCESSING field ON, are sent together as a group to a Cim-
IO server task. The Cim-IO server task takes care of getting the values
written.

10 Cim-IO Records in InfoPlus.21 151


Record Contents FURNACE01WW ID = 1505 30-SEP-94 11:30:48

FURNACE01WW NAME
NO IO_PULSE
FURNACE 1 WEST POINTS DESCRIPTION
ON IO_MESSAGE_SW
NO IO_ACTIVATE?
IO_ACTIVATION_COS
ON IO_RECORD_PROCESSING
TSK_M_DCS1 IO_MAIN_TASK
1 IO_DEVICE_UNIT
Furnace 1 IO_GROUP
9 IO_PRIORITY
Default IO_DEFAULT_DATA_TYPE
NO IO_ASYNC?
+00000:00:10.0 IO_TIMEOUT_VALUE
22-NOV-94 14:36:52.4 IO_LAST_UPDATE
Success IO_LAST_STATUS
! IO_LAST_STATUS_DESC
0 IO_REQUEST_CHANGES
2 IO_#TAGS
FC1001.OP 1 IO_TAGNAME
ON 1 IO_DATA_PROCESSING
Real 1 IO_DATA_TYPE
FC1001 VALUE 1 IO_VALUE_RECORD&FLD
No Conversion 1 IO_DATA_CONVERSION
Data Ok 1 IO_DATA_STATUS
1 IO_DATA_STATUS_DESC
STORE 1 IO_OUTPUT_TYPE
FC1002.OP 2 IO_TAGNAME
ON 2 IO_DATA_PROCESSING
Real 2 IO_DATA_TYPE
FC1002 VALUE 2 IO_VALUE_RECORD&FLD
No Conversion 2 IO_DATA_CONVERSION
Data Ok 2 IO_DATA_STATUS
Store 2 IO_OUTPUT_TYPE

152 10 Cim-IO Records in InfoPlus.21


NAME
Standard record name. Create a Cim-IO transfer record for each set of values
being written.

DESCRIPTION
Specifies a 32-character record description field.

IO_PULSE
If set to YES, the source value for the output is reset to 0 after the source
value is written to the device.

IO_MESSAGE_SW
Enables/disables the storing of status messages into the records IoSummary
and IoLog when the IO_LAST_STATUS field in the write transfer record
changes value.

IO_ACTIVATE?
Specifies a local field that can activate the record on demand. By setting this
field to YES, you can trigger Cim-IO to process this record. This record
automatically returns to a value of NO after being changed to YES.

IO_ACTIVATION_COS
Specifies a change of state field that contains the name and value field of a
different, contingent data record. When the value of the contingent record
changes, such as due to an input value, this write transfer record is activated.
For example, you enter the data record name CRITICAL_ALARM and the field
name VALUE into this change of state field. When the value changes in the
CRITICAL_ALARM data record, such as due to an input value, another
program and so on, then the current transfer write is activated.

IO_RECORD_PROCESSING
Enables/disables processing of all points defined in this record:
 When this field value is ON, all the information in the record is eligible for
processing.
 When this field value is set to OFF, the information in this record is not
processed although individual repeat area switches may show the
individual points to be turned ON. Set this field to OFF to change certain
other fields in the record.
In addition, set the Cim-IO Group record processing status and this record
processing status to ON for the data in this record to be processed. The group
name is stored in the IO_GROUP field in this record. If a write operation is
being performed and this record is created using the IoPutDef definition
record, grant write permission in the Cim-IO group record to process the
values defined in the Cim-IO write transfer records.

10 Cim-IO Records in InfoPlus.21 153


Disabling IoPutDef
By default, whenever an IoPutDef record goes into an active state
(IO_RECORD_PROCESSING and its parent’s IO_DEVICE_PROCESSING both
ON) from an inactive state (either one off), the IoPutDef will activate, causing
the data to be sent to the device. To disable this feature, you will need
change your environment in some way.

Windows
This setting can be adjusted in Windows using the CimioProperties program.
Setting the value to any non-zero value will disable this feature, causing
IoPutDef records to not send data merely because they are transitioning from
an inactive state to an active state. Setting the value to 0 will cause IoPutDef
records to have their default behavior of sending data when they enter an
active state from an inactive state.

IO_MAIN_TASK
Specifies the Cim-IO main client task that processes this record. The transfer
record cannot be made USABLE unless this field is defined. Normally, you
enter the name of the main Cim-IO client task in this field. If there is more
than one main Cim-IO task running, enter the correct task name here,
because the database is writing data to different logical devices. Enter the
same task name that is entered into the Cim-IO task definition record.

IO_DEVICE_UNIT
Specifies the device unit number through which the values are to be read or
written. In some hardware configurations, the Cim-IO device-specific server
DLGP task is required to write data to several different hardware units.
For example, the DLGP task may communicate with four different DCS
systems using network communications. There may be 10 different PLC
devices connected to RS-232 serial ports. Of the four DCS hardware units or
the 10 PLCs, this field identifies from which device the values are to be read
or to which device the values are to be written.

Note: Some Cim-IO device-specific interfaces may use this record field for
another purpose. Check the device-specific user's guide for additional
information.

IO_GROUP
Specifies the group name string with which this set of tag names and values
is associated. For instance, this group may be associated with the hardware
device called Furnace 1. The group name strings are described earlier in this
section.

IO_PRIORITY
Specifies the priority Cim-IO uses to send values to the Cim-IO server tasks
when this record is activated. The valid priority range is 1 to 9. A value of 1 is

154 10 Cim-IO Records in InfoPlus.21


the highest priority; a value of 9 is the lowest priority. Use a value of 2 – 4 for
normal write operations. High priority write operations have a priority of 1.

Note: Some Cim-IO device-specific interfaces can use this record field for
another purpose. Refer to the device-specific user's guide for additional
information.

IO_DEFAULT_DATA_TYPE
Specifies a default data type for all the values being written using this write
transfer record. The possible data types are described in the “General
Overview.” If this field value is Default, then the data type specified for each
individual point in the IO_DATA_TYPE record fields is used.

IO_ASYNC?
Specifies a switch to indicate if the data is to be processed synchronously or
asynchronously.
 If synchronous, the main client task sends values to the Cim-IO server
tasks and waits for a reply message before processing the next transfer
record.
 If asynchronous, the main client task sends the values to the Cim-IO
server tasks but does not wait for the reply. The asynchronous client task
receives the reply and processes it. Usually a reply message indicates
whether the individual values were written properly.

IO_TIMEOUT_VALUE
The time specified here is the time-out value the main Cim-IO client task is to
use during synchronous write operations. Depending on the logical device, the
following value is usually sufficient:
+00000:00:10.0 (10 seconds) to +00000:00:20.0 (20 seconds)
A negative or zero time-out value means that the main client task should wait
forever for a reply from the Cim-IO device-specific server DLGP task. This
field does not apply to asynchronous requests.

IO_LAST_UPDATE
Specifies the timestamp when the IO_LAST_STATUS field was last updated.

IO_LAST_STATUS
Specifies an integer field formatted by the Io-Last-Status selector record
containing error messages. Records with a non-zero IO_LAST_STATUS are
listed in the IoSummary (SummaryDef) record and are logged to the
IoLog (LogDef) record if IO_MESSAGE_SW is ON.

IO_LAST_STATUS_DESC
Contains a description of the last record processing status. If
IO_MESSAGE_SW is ON, the description is logged to the IoSummary and
IoLog record.

10 Cim-IO Records in InfoPlus.21 155


IO_REQUEST_CHANGES
You cannot modify the contents of this field. This field is automatically
incremented when you modify other fields in this record. This field indicates
to the Cim-IO client tasks:
 Contents of this record have changed.
 Client tasks are to indicate to the Cim-IO server tasks that something has
changed.
Some server tasks need this indication that the record contents have
changed.

IO_#TAGS
Specifies a repeat area count field. This field indicates the number of points in
the current transfer record that are to be accessed in the logical device. Enter
a number in this field to create record occurrences. Once record occurrences
are created, enter information in each record occurrence. A value is normally
written to the logical device for each record occurrence created by the user.
Note that, in general, fewer records with more points per record are more
efficient than more records with fewer points per record, due to the
processing and message overhead necessary for each record. In addition, a
Cim-IO server may be able to perform a single, large write faster than many
small writes.

n IO_TAGNAME
Specifies a 39-character string field. This field can vary greatly depending on
the device and the implementation of the server subsystem. This field
normally contains a tag name identifying the point in the device.
This field contains a tag name. A tag name typically is of the format
POINT.PARAMETER for a DCS and a register number for a PLC. Refer to the
specific server subsystem user's guide to determine which tag name to put in
this field.

n IO_DATA_PROCESSING
Enables/disables processing of the value identified by the tag name string
stored in the IO_TAGNAME record field.
 If this field is set to OFF, then the value associated with the tag name
string is not written to the device. When this field is set to OFF, the rest of
the transfer record can still be processed. Only the values whose
IO_DATA_PROCESSING field is set to OFF are not processed.
 If this field value is set to ON, the value associated with the tag name
string is processed.

Note: Set this status to OFF if the point has not yet been created in the DCS,
PLC, or other database. Leave this ON if the entire plant area or hardware
device has gone off-line. Set the IO_RECORD_PROCESSING field to OFF if the
entire device has gone off-line.

156 10 Cim-IO Records in InfoPlus.21


The value attributes defined here for this value cannot be modified, unless
this record field value is set to OFF.

n IO_DATA_TYPE
Specifies the data type of the value in the logical device. The supported data
types are described in the Cim-IO Overview. This field supersedes the
IO_DEFAULT_DATA_TYPE fields specified in the fixed area of the record,
unless Default is specified in the IO_DATA_TYPE field. In this case the data
type used is the one specified in IO_DEFAULT_DATA_TYPE, unless the
IO_DEFAULT_DATA_TYPE field is set to Default. If so, the data type of the
Setcim data record is used.

Note: The definition of the IO_DATA_TYPE record field changed in version 4.6
of the Cim-IO software. If the user's system is upgraded to version 4.6 or
later, review existing transfer records and change the contents of this field. If
there is any doubt whether this field is being used by the Cim-IO device-
specific server tasks, refer to the device-specific user's guides or contact
AspenTech Customer Support for assistance.

n IO_VALUE_RECORD&FLD
Contains the data record name and field name from which the value to be
output comes.

Note: The data record and field name must already exist before you can
enter their names into this field.

n IO_DATA_CONVERSION
If engineering unit values must be converted to raw counts before output
occurs, enter the engineering unit's descriptive name in this field. E.U.
conversion is described earlier. Refer to the device-specific user's guide for
information.

n IO_DATA_STATUS
Specifies an integer field indicating the Cim-IO generic status of the write
operation. This field is defined using the Io-Data-Status database selector
record. The selector record contains all of the data status values that
interfaces can encounter.

n IO_DATA_STATUS_DESC
Specifies a character string field indicating the device-specific data status of
the write operation.

n IO_OUTPUT_TYPE
This field can indicate to the Cim-IO server tasks whether this value is to be
output. This field is formatted using the Io-Output-Types selector record.
 The data value is written to the device if this field contains the word
STORE.

10 Cim-IO Records in InfoPlus.21 157


 The data value is not written to the device if this field contains the words
DO NOT STORE.
 The Cim-IO client tasks send a Not A Number (NAN) value to the Cim-IO
server task if this field contains the words STORE NAN. Some DCS
systems allow the storage of a special number (usually a floating-point -
0.0) when a NAN value is output. If a NaN value is output, the value in the
data record to be output is not output.
Other selections for this field are STORE SUSPECT, STORE POS INFINITY, and
STORE NEG INFINITY:
 STORE SUSPECT results in an output type being sent to the server as
suspect for this tag. The server determines how to handle this output
type; different servers may interpret this field differently.
 STORE POS INFINITY results in data values of positive infinity being sent
to the server.
 STORE NEG INFINITY results in data values of negative infinity being sent
to the server. Again, the server determines how these output types are
interpreted.

The Cim-IO Write on Change of


State Transfer Record
The IoPutOnCosDef, IoLongTagPOCDef, and IoLLTagPOCDef records are very
similar to the Cim-IO write transfer records (IoPutDef, IoLongTagPutDef, and
IOLLTagPutDef, respectively.) The only difference is that PutOnCos (POC)
records are automatically activated anytime one or several of the value
source referenced in IO_VALUE_RECORD&FLD changes.
IoPutOnCosDef can handle tag names up to 39 characters in length,
IoLongTagPOCDef allows up to 79 characters, and IoLLTagPOCDef allows tag
names that are 255 characters in length. The added length is compensated
for by a smaller limit on the number of tags per record. See “The Cim-IO I/O
Transfer Records” for the maximum number of tags in a Change of State
transfer record.
If the IO_PULSE field is set to YES, the value source that triggered the output
is reset to 0 after the output was made.

The IoLogCntrl Record


The Cim-IO IoLogCntrl record controls what information gets logged. This
record is similar to the one described in the Aspen InfoPlus.21 Database
User's Guide, which describes the AlarmLogCntrl record. Refer to the
database user's guide for record field details.
The following shows an example of the provided logging control record. The
example indicates that all Cim-IO messages are to be logged in the Cim-IO
IoLog record. This record is provided. (You do not have to create this record

158 10 Cim-IO Records in InfoPlus.21


or the IoMessageSwCondition record referenced in this record.) Check the
contents of this record to see if any changes are desired.
Record Contents IoLogCntrl ID = 145 12-AUG-94 09:27:23

IoLogCntrl NAME
1 # CONDITION FIELDS
IoMessageSwCondition 1 CONDITION RECORD
D-IoGet IO_MESSAGE_SW 1 CONDITION FIELD
1 # LOG RECORDS
IoLog 1 LOG RECORD

The IoMessageSw Condition


Record
The following figure shows an example the Cim-IO IoMessageSwCondition
record. This record indicates which error messages are to be excluded from
the IoLog record. Each error message is identified by an integer. This allows
the message condition record to exclude certain messages from being logged
by indicating the ranges of integer numbers to exclude. See the database
user's guide for information on the MESSAGE SW CONDITION record for
record field details. This record is provided. (You do not have to create this
record.) Check the contents of this record to see if any changes are desired.
Record Contents IoMessageSwCondition ID = 874 12?AUG-94
09:25:34

IoMessageSwCondition NAME
2 #UNALLOWED_VALUES
32767 1 HIGH_UNALLOWED_VALUE
2 1 LOW_UNALLOWED_VALUE
0 2 HIGH_UNALLOWED_VALUE
-32768 2 LOW_UNALLOWED_VALUE

The IoSummary Record


The following figure shows an example of the Cim-IO IoSummary record. This
record is used when a GCS summary display of the data stored in the
IoSummary record is built. See the Aspen InfoPlus.21 Database User's Guide,
which describes the ALARM_SUMMARY record for record field details. This
record is provided. (You do not have to create this record.) Check the
contents of this record to see if any changes are desired.

10 Cim-IO Records in InfoPlus.21 159


Record Contents IoSummary ID = 144 12-AUG-94 09:26:08

IoSummary NAME
1 SUMMARY_LINES
132 SUMMARY_LINE_LENGTH
0 PAGE/TIME_OCC
0 RECENT/OLDEST_OCC
3 MAX_SUMMARY_LINES
1 SUMMARY_LINE
2 SUMMARY_LINE
3 SUMMARY_LINE
1 # CONDITION FIELDS
1 CONDITION RECORD
1 CONDITION FIELD
1 # HEADINGS
1 RECORD_&_FIELD_NAME
1 CHARACTER_STRING
0 1 HEADING_POSITION

The IoLog Record


The following figure shows an example of the Cim-IO IoLog record. This
record contains a history repeat area where Cim-IO log messages are stored.
See the Aspen InfoPlus.21 Database User's Guide, which describes the
AlarmLog record for record field details. This record is provided. (You do not
have to create this record.) Check the contents of this record to see if any
changes are desired.
Record Contents IoLog ID = 143 12-AUG-94 09:26:13

IoLog NAME
Standard Printer LOG_DEVICE
NO PRINT_LOG-
! LAST_LOG_ENTRY
LAST_LOG_TIME
0 LOG_SEQUENCE_PRINTED
0 LOG_SEQUENCE_NUMBER
20 LOGS_ON_DISK

160 10 Cim-IO Records in InfoPlus.21


+0:00:00.0 RESCHEDULE_INTERVAL
???????????????????? TIMEOUT_RESCHEDULE
0 # CONDITION FIELDS
1 LOGS_IN_MEMORY
! 1 LOG_ENTRY
1 LOG_TIME

The IoGetAlarmLine Record


The following figure shows an example of the Cim-IO IoGetAlarmLine record.
This record defines the layout of each summary line on a GCS display for
error messages associated with read operations. See the Aspen InfoPlus.21
Database User's Guide guide for a description of the ROC_ALARM_LINE record
for record field details.
Record Contents IoGetAlarmLine ID = 146 12-AUG-94 09:26:01

IoGetAlarmLine NAME
D-IoGet DEFAULT_BASE_RECORD
IoLogCntrl LOG_CONTROL_RECORD
IoLog LOG_SUMMARY_LINE
0 ACKNOWLEDGE VALUE
ACKNOWLEDGE FIELD
TIME_STAMP_FIELD
1 #UNALLOWED_VALUES
0 1 HIGH_UNALLOWED_VALUE
0 1 LOW_UNALLOWED_VALUE
6 #SUMMARY_DESCS
D-IoGet IO_LAST_UPDATE 1 SUMMARY_DESC_FIELD
1 ALTERNATE_FORMAT
-1 1 SUMMARY_DESC_POS
D-IoGet NAME 2 SUMMARY_DESC_FIELD
2 ALTERNATE_FORMAT
-1 2 SUMMARY_DESC_POS
D-IoGet IO_DEVICE 3 SUMMARY_DESC_FIELD
3 ALTERNATE_FORMAT
-1 3 SUMMARY_DESC_POS
D-IoGet IO_DEVICE_UNIT 4 SUMMARY_DESC_FIELD

10 Cim-IO Records in InfoPlus.21 161


4 ALTERNATE_FORMAT
-1 4 SUMMARY_DESC_POS
D-IoGet IO_LAST_STATUS 5 SUMMARY_DESC_FIELD
5 ALTERNATE_FORMAT
-1 5 SUMMARY_DESC_POS
D-IoGet IO_LAST_STATUS_DESC 6 SUMMARY_DESC_FIELD

6 ALTERNATE_FORMAT
-1 6 SUMMARY_DESC_POS
1 # SUMMARIES
IoSummary 1 SUMMARY_RECORD
IoMessageSwCondition 1 SUM CONDITION RECORD
0 # CONDITION FIELDS

The IoPutAlarmLine Record


The following figure shows an example of the Cim-IO IoPutAlarmLine record.
This record defines the layout of each summary line on a GCS display for
error messages associated with write operations. See the Aspen InfoPlus.21
Database User's Guide, which describes the ROC_ALARM_LINE record for
record field details.
Record Contents IoPutAlarmLine ID = 146 12-AUG-94 09:26:01

IoPutAlarmLine NAME
D-IoPut DEFAULT_BASE_RECORD
IoLogCntrl LOG_CONTROL_RECORD
IoLog LOG_SUMMARY_LINE
0 ACKNOWLEDGE VALUE
ACKNOWLEDGE FIELD
TIME_STAMP_FIELD
1 #UNALLOWED_VALUES
0 1 HIGH_UNALLOWED_VALUE
0 1 LOW_UNALLOWED_VALUE
6 #SUMMARY_DESCS
D-IoPut IO_LAST_UPDATE 1 SUMMARY_DESC_FIELD
1 ALTERNATE_FORMAT
-1 1 SUMMARY_DESC_POS

162 10 Cim-IO Records in InfoPlus.21


D-IoPut NAME 2 SUMMARY_DESC_FIELD
2 ALTERNATE_FORMAT
-1 2 SUMMARY_DESC_POS
D-IoPut IO_DEVICE 3 SUMMARY_DESC_FIELD
3 ALTERNATE_FORMAT
-1 3 SUMMARY_DESC_POS
D-IoPut IO_DEVICE_UNIT 4 SUMMARY_DESC_FIELD
4 ALTERNATE_FORMAT
-1 4 SUMMARY_DESC_POS
D-IoPut IO_LAST_STATUS 5 SUMMARY_DESC_FIELD
5 ALTERNATE_FORMAT
-1 5 SUMMARY_DESC_POS
D-IoPut IO_LAST_STATUS_DESC 6 SUMMARY_DESC_FIELD
6 ALTERNATE_FORMAT
-1 6 SUMMARY_DESC_POS
1 # SUMMARIES
IoSummary 1 SUMMARY_RECORD
IoMessageSwCondition 1 SUM CONDITION RECORD
0 # CONDITION FIELDS

Structure Data Type Support


Beginning with version 4.7 of Cim-IO, you can specify a data type of
Structure in Cim-IO database records. This data type allows Cim-IO to access
and update several fields of the database simultaneously as if all the fields
belonged to one tag.
Select the data type of structure for one or more tags in the following records
using the IO_DATA_TYPE and/or IO_DEFAULT_DATA_TYPE fields in those
records:
 Cim-IO Read Transfer Records
 Cim-IO Historical Read Transfer Records
 Cim-IO Write Transfer Records
 Cim-IO Write on Change of State Transfer Records
 Cim-IO Unsolicited Read Transfer Records

Structure Support in Cim-IO Historical Read


Transfer Records
In the following instances, a tag is considered to have the type Structure if:

10 Cim-IO Records in InfoPlus.21 163


 IO_DATA_TYPE field for the tag is set to type Structure.
 IO_DATA_TYPE field for the tag is set to Default and
IO_DEFAULT_DATA_TYPE for the whole transfer record is set to Structure.
If the tag has a type Structure, the record and field specified in the
IO_VALUE_RECORD&FLD field for that tag points to the starting record and
field for that structure. This means, the specified record is treated as a
structure and the starting point of that structure is the specified field.
For example, in the following Read Transfer record IO_DATA_TYPE is of type
Structure for tag tag1:
geth1 NAME
DESCRIPTION
OFF IO_MESSAGE_SW
NO IO_ACTIVATE?
IO_ACTIVATION_COS
OIO_RECORD_PROCESSING
Tsk_msim IO_MAIN_TASK
1 IO_DEVICE_UNIT
IO Group 1 IO_GROUP
1 IO_PRIORITY
Default IO_DEFAULT_DATA_TYPE
YES IO_ASYNC?
+00000:00:10.0 IO_TIMEOUT_VALUE
+00000:00:30.0 IO_FREQUENCY
10-JUN-96 09:37:03.3 IO_LAST_UPDATE
Success IO_LAST_STATUS
IO_LAST_STATUS_DESC
ON IO_HIST_RECOVERY
+00000:00:10.0 IO_HIST_TIMEOUT
+00000:00:00.0 IO_HIST_GAP_INTERVAL
16-APR-96 14:14:43.3 IO_HIST_LAST_UPDATE
Success IO_HIST_LAST_STATUS
Success recovering history IO_HIST_STATUS_DESC
0 IO_HIST_PRIORITY
1 IO_#TAGS
tag1 1 IO_TAGNAME
O 1 IO_DATA_PROCESSING
Structure 1 IO_DATA_TYPE
Analog1 VALUE 1 IO_VALUE_RECORD&FLD

164 10 Cim-IO Records in InfoPlus.21


No Conversion 1 IO_DATA_CONVERSION
No Deadband 1 IO_DATA_DEADBAND
request failed 1 IO_DATA_STATUS
1 IO_DATA_STATUS_DESC
COMPLETE 1 O_DATA_RECOV_STATUS
ON 1 IO_DATA_HIST_RECOV
Analog1 1 TREND VALUE 1
IO_DATA_HIST_REC&FLD
1 IO_HISTORY_TAGNAME

This tag is associated with the value record Analog1. The starting point of the
structure is the VALUE field in record Analog1. Record Analog1 is shown
below.

Note: In this example, the database data record ANALOG1 was built using a
special definition record created, especially to hold structure data values. The
data record was not created using the standard AnalogDef definition record.

Analog1 NAME
DESCRIPTION
F12. 7 VALUE FORMAT
???????????? VALUE
Initial VALUE STATUS
???????????????????? VALUE TIME
???????????? DP VALUE
Initial DP VALUE STATUS
???????????????????? DP VALUE TIME
11 INTEGER VALUE FORMAT
0 INTEGER VALUE
Initial INTEGER STATUS
???????????????????? INTEGER TIME
0 DP INTEGER VALUE
Initial DP INTEGER STATUS
???????????????????? DP INTEGER TIME
This is a test CHARACTER

Since the starting field for this structure is VALUE, the following fields of
Analog1 form the elements of this Cim-IO structure:
Database Field Database Type

VALUE Real

10 Cim-IO Records in InfoPlus.21 165


Database Field Database Type

VALUE STATUS Short


VALUE TIME Extended Time
DP VALUE Double
DP VALUE STATUS Short
DP VALUE TIME Extended Time
INTEGER VALUE Short
INTEGER STATUS Short
INTEGER TIME Extended Time
DP INTEGER VALUE Long
DP INTEGER STATUS Short
DP INTEGER TIME Extended Time
CHARACTER Character string

NAME, DESCRIPTION, and VALUE FORMAT do not take place in the structure
since these fields come before the starting field in the database.
No data element is generated for fields with unsupported types in the
structure. For example, if a field in the data record for a structure has the
type Record Pointer, this field is skipped when the structure is generated
because Record Pointer is not a type that is supported by Cim-IO. In the
above example for Analog1, the INTEGER VALUE FORMAT field is of type
Record Pointer, as such this field has not been included in the structure.
Aggregate database types (such as Double with Quality and Timestamp, Real
with Quality and Timestamp, and so on) are not supported as valid data fields
in data records with type structure.
The server replies with values, statuses and timestamps. For each tag with
type “structure”, there is one status, one timestamp, and as many values as
there are fields in the structure. Values are used for updating the fields of the
data record.
No engineering unit conversion or deadband processing is applied to the
elements of a structure.
History recovery is not supported and not attempted for tags with type
Structure.

Structure Support in Cim-IO Read Transfer


Records
For Cim-IO Read Transfer records, the Cim-IO client tasks behave the same
as the Cim-IO Historical Read Transfer records, as it concerns structure
support.

Structure Support in Cim-IO Write Transfer


Records
In the following instances, a tag is considered to have the type Structure if:
 IO_DATA_TYPE field for the tag is set to type Structure.

166 10 Cim-IO Records in InfoPlus.21


 IO_DATA_TYPE field for the tag is set to Default and
IO_DEFAULT_DATA_TYPE for the whole transfer record is set to Structure.
If the tag has a type structure, the record and field specified in
IO_VALUE_RECORD&FLD for that tag points to the starting record and field
for that structure. This means, the specified record is treated as a structure
and the starting point of that structure is the field.
If the values and the data template correspond to the elements of the record
specified in IO_VALUE_RECORD&FLD of a Cim-IO Write Transfer record, these
elements are sent to the server.
For example, in the following Write Transfer record, IO_DATA_TYPE is of type
structure for tag "tag1":
put1 NAME
DESCRIPTION
OFF IO_MESSAGE_SW
NO IO_ACTIVATE?
IO_ACTIVATION_COS
ON IO_RECORD_PROCESSING
tsk_msim IO_MAIN_TASK
1 IO_DEVICE_UNIT
IO Group 1 IO_GROUP
1 IO_PRIORITY
Default IO_DEFAULT_DATA_TYPE
NO IO_ASYNC?
+00000:00:10.0 IO_TIMEOUT_VALUE
10-JUN-96 09:37:03.3 IO_LAST_UPDATE
Success IO_LAST_STATUS
IO_LAST_STATUS_DESC
0 IO_REQUEST_CHANGES
1 IO_#TAGS
tag1 1 IO_TAGNAME
O 1 IO_DATA_PROCESSING
Structure 1 IO_DATA_TYPE
Analog2 VALUE 1 IO_VALUE_RECORD&FLD
No Conversion 1 IO_DATA_CONVERSION
request failed 1 IO_DATA_STATUS
1 IO_DATA_STATUS_DESC
STORE 1 IO_OUTPUT_TYPE

This tag is associated with the value record Analog2. The starting point of the
structure is the VALUE field in record Analog2.

10 Cim-IO Records in InfoPlus.21 167


Record Analog2 is shown below:
Analog2 NAME
DESCRIPTION
F12. 7 VALUE FORMAT
123.456 VALUE
No Status VALUE STATUS
12-JUN-96 09:39:03.3 VALUE TIME
567.8900000 DP VALUE
No Status DP VALUE STATUS
12-JUN-96 09:39:05.4 DP VALUE TIME
I11 INTEGER VALUE FORMAT
555 INTEGER VALUE
No Status INTEGER STATUS
12-JUN-96 09:39:06.7 INTEGER TIME
232 DP INTEGER VALUE
No Status DP INTEGER STATUS
12-JUN-96 09:41:04.3 DP INTEGER TIME
This is a test CHARACTER

Since the starting field for this structure is VALUE, the following fields of
Analog2 form the elements of this Cim-IO structure:
Database Field Database Type

VALUE Real
VALUE STATUS Short
VALUE TIME Extended Time
DP VALUE Double
DP VALUE STATUS Short
DP VALUE TIME Extended Time
INTEGER VALUE Short
INTEGER STATUS Short
INTEGER TIME Extended Time
DP INTEGER VALUE Long
DP INTEGER STATUS Short
DP INTEGER TIME Extended Time
CHARACTER Character string

NAME, DESCRIPTION and VALUE FORMAT do not take place in the structure
because these fields come before the starting field in the database.
For writes, no data element is generated for fields with unsupported types in
the structure. For example, if a field in the data record for a structure has the
type Record Pointer, this field is skipped when generating the structure
because Record Pointer is not a type that is supported by Cim-IO. In the

168 10 Cim-IO Records in InfoPlus.21


above example for Analog1, the INTEGER VALUE FORMAT field is of type
Record Pointer as such this field has not been included in the structure.
The server replies with statuses and timestamps. For each tag with type
structure, there is one status, one timestamp and one or more values
depending on the number of fields in the structure.

Structure Support in Cim-IO Unsolicited


Transfer Records
In the following instances, a tag is considered to have the type Structure if:
 IO_DATA_TYPE field for the tag is set to type Structure.
 IO_DATA_TYPE field for the tag is set to Default and
IO_DEFAULT_DATA_TYPE for the whole transfer record is set to Structure.
If the tag has a type Structure, the record and field specified in the
IO_VALUE_RECORD&FLD field for that tag points to the starting record and
field for that structure. This means that the specified record is treated as a
structure and the starting point of that structure is the field.
For example, in the following Unsolicited Transfer record, IO_DATA_TYPE is of
type structure for tag "tag1":
unsol1 NAME
DESCRIPTION
OFF IO_MESSAGE_SW
NO IO_ACTIVATE?
IO_ACTIVATION_COS
ON IO_RECORD_PROCESSING
tsk_msim IO_MAIN_TASK
1 IO_DEVICE_UNIT
IO Group 1 IO_GROUP
Default IO_DEFAULT_DATA_TYPE
YES IO_ASYNC?
+00000:00:10.0 IO_TIMEOUT_VALUE
+00000:00:30.0 IO_FREQUENCY
10-JUN-96 09:37:03.3 IO_LAST_UPDATE
Success IO_LAST_STATUS
IO_LAST_STATUS_DESC
0 IO_REQUEST_CHANGES
1 IO_#TAGS
tag1 1 IO_TAGNAME

O 1 IO_DATA_PROCESSING

10 Cim-IO Records in InfoPlus.21 169


Structure 1 IO_DATA_TYPE
Analog3 VALUE 1 IO_VALUE_RECORD&FLD
No Conversion 1 IO_DATA_CONVERSION
No Deadband 1 IO_DATA_DEADBAND
No Deadband 1 IO_DEVICE_DEADBAND
request failed 1 IO_DATA_STATUS
1 IO_DATA_STATUS_DESC
??????????????????? 1 IO_LAST_DECLARE/CANC
Never Declared 1 IO_DECLARE_STATUS
1 IO_DECLARE_STS_DESC

This tag is associated with the value record Analog3. The starting point of the
structure is the VALUE field in record Analog3. Record Analog3 is shown
below:

Analog3 NAME
DESCRIPTION
F12. 7 VALUE FORMAT
???????????? VALUE
Initial VALUE STATUS
???????????????????? VALUE TIME
???????????? DP VALUE
Initial DP VALUE STATUS
???????????????????? DP VALUE TIME
I11 INTEGER VALUE FORMAT
0 INTEGER VALUE
Initial INTEGER STATUS
???????????????????? INTEGER TIME
0 DP INTEGER VALUE
Initial DP INTEGER STATUS
???????????????????? DP INTEGER TIME
This is a test CHARACTER

Since the starting field for this structure is VALUE, the following fields of
Analog3 form the elements of this Cim-IO Structure:
Database Field Database Type

VALUE Real
VALUE STATUS Short
VALUE TIME Extended Time

170 10 Cim-IO Records in InfoPlus.21


Database Field Database Type

DP VALUE Double
DP VALUE STATUS Short
DP VALUE TIME Extended Time
INTEGER VALUE Short
INTEGER STATUS Short
INTEGER TIME Extended Time
DP INTEGER VALUE Long
DP INTEGER STATUS Short
DP INTEGER TIME Extended Time
CHARACTER Character string

NAME, DESCRIPTION, and VALUE FORMAT do not take place in the structure
since these fields come before the starting field in the database.

Note: No data element is generated for fields with unsupported types in the
structure. For example, if a field in the data record for a structure has the
type Record Pointer, this field is skipped when generating the structure
because Record Pointer is not a type that is supported by Cim-IO. In the
above example for Analog3, the INTEGER VALUE FORMAT field is of type
Record Pointer, as such this field has not been included in the structure.
The server replies with values, statuses and timestamps. For each tag with
type Structure, there is one status, one timestamp and one or more values
depending on the number of fields in the structure. Values are used for
updating the fields of the data record.
No engineering unit conversion or deadband processing is applied to the
elements of a structure.

Note: Do not make any assumptions about the time order in which fields of a
tag with type Structure are to be updated. This is subject to change between
versions of Cim-IO.

10 Cim-IO Records in InfoPlus.21 171


172 10 Cim-IO Records in InfoPlus.21
11 Cim-IO Store and Forward

Warning: Store and Forward should not be used if History Recovery is being
used. This may result in duplicate data being stored in InfoPlus.21 history.

Overview
Note: Store and Forward is only available with InfoPlus.21. If you are using
Cim-IO without one of these clients, you can skip this chapter.
Under some circumstances, the server software may be capable of collecting
data from the device, but the data cannot be transferred to the client
database. This situation can result in a loss of historical information. Cim-IO
Store and Forward is designed to allow for recovery under the following
situations:
 The client that requested the data is shut down or otherwise unable to
receive data, or
 The connection between the server and client computers is lost.
When the server determines that one of these conditions applies, Store and
Forward begins to accumulate the data as it is collected with its appropriate
timestamp. Once it becomes possible to return to normal operations, Store
and Forward begins to send the data accumulated to the client. This data is
stored in the database with its original timestamp.

Warning: If a value is inserted into the database manually while Store and
Forward is accumulating data, the timestamps will be ignored when the
values are recovered.

Store and Forward Architecture


The architecture of the Store and Forward system is diagrammed in the
chapter entitled “General Overview,” along with the rest of the structure of a
typical Cim-IO interface. The Store and Forward mechanism can be enabled
or disabled without shutting down any Cim-IO servers. The Store and Forward
system consists of 3 modules on the server computer:
 Cim-IO Scanner module

11 Cim-IO Store and Forward 173


 Cim-IO Store module
 Cim-IO Forward module

Scanner Module
If Store and Forward is enabled, the Scanner module functions as an
intermediary between the client and the DLGP. If the client is unavailable or
the link is broken, the Scanner module keeps sending the client’s data
requests to the DLGP.

Store Module
The Store module receives data from the DLGP. If the client is unavailable,
the Store module writes it to a store file until normal data transfer can be
reestablished.

Forward Module
When normal data transfer is determined to be available after an interruption,
the Forward module begins sending the contents of the store file to the client.
This process continues until the file is emptied.

Note: The Store module will keep writing data to the store file until the
Forward module has emptied the store file.

Windows Specific Architecture


For performance reasons, mainly to avoid disk fragmentation, Store and
Forward has Windows Specific enhancements:
 Store files are pre-allocated to their maximum configured size upon
creation. In previous versions, Store files grew in small increments as
needed, up to their maximum size.
 Store files are no longer deleted when the forward phase is complete. This
allows them to be efficiently re-used during the next store phase. Thus,
the user should not be surprised to see store files on the disk, even when
the system is not in store mode. You may view and monitor the contents
of a pre-allocated store file using the utility CimioSFMonitor.exe. Pre-
allocated store files can be deleted if required, they will be re-created on
the next store operation.
 The 2GB file limit on Store files has been removed, with the practical limit
now being available disk space.
These enhancements currently apply to Windows platforms only with NTFS
partitions.

Warning: The size of the store file must be defined for the store file to be
pre-allocated. IF a size of 0 is specified the store file is not pre-allocated and
will be deleted after each forward phase.

174 11 Cim-IO Store and Forward


Configuration
In order for Store and Forward to operate correctly, both the client and the
server must be configured. This requires the following steps:
 Configuring the Store and Forward parameters
 Creating Cim-IO client external tasks
 Setting up database records

Configuring Store and Forward Parameters

Windows Registry Setting


The Store and Forward configuration parameters used to configure S&F files
are kept in the Windows registry of the Cim-IO server. From there the S&F
processes will retrieve them as required to properly size the device’s S&F file.
The generic name for the Windows registry hive containing the S&F file sizing
parameters for a device is:
HKLM\Software\AspenTech\CIM-IO\CIMIO_SCANNER_devicename_CFG
Under the hive will be one or more keys that represent client computers with
their specific Store and forward file size information.
Each client computer key contains two DWORD values:
 max_period
 max_size
The only parameter currently implemented and in use by Cim-IO is max_size.
Max_period has not been implemented or used by Cim-IO yet. In any case,
both parameter values can be changed directly in the registry by using a
system-provided tool like Regedit.
If InfoPlus.21 and Cim-IO client tasks are used, the source values for the S&F
configuration parameter values for each Cim-IO logical device are kept in the
device’s record in the InfoPlus.21 database. When and how these parameter
values are changed in the Windows registry of the Cim-IO server where each
device runs are explained in the next section.

Configuration via InfoPlus.21


The S&F file sizing configuration parameters of a Cim-IO device are normally
created (if not available in the Windows registry yet) and updated
automatically in two instances:
 When the Cim-IO device’s associated InfoPlus.21 external main client task
is started. The main task downloads the S&F configuration information in
the device’s record in the database to the device’s scanner process on the
Cim-IO server computer.
 When any of the device’s specific Store and Forward file size parameter
values are changed in the device’s record, the main Cim-IO client task
downloads the configuration from the database to the scanner.

11 Cim-IO Store and Forward 175


If the Store and Forward processes are not running or the Cim-IO server is
not accessible at the time a configuration parameter value changes on the
InfoPlus.21 server, the main client task logs an error message indicating that
the S&F file configuration parameter could not be downloaded. Note that in
such a case, the main client task does not retry the download and as a result,
Store and Forward keeps using whatever configuration existed in the registry,
until communication between the InfoPlus.21 and the Cim-IO server is
reestablished and either InfoPlus.21 or the device’s external task is restarted.
If the registry hive does not exist, Store and Forward uses a default
configuration. The default configuration is infinite store file size, which in
reality is restricted to the amount of available hard disk space.
Below is an example of the registry hive, followed by keyword descriptions.

max_period
Maximum time period after which a circular Store file will be overwritten with
the latest data. This setting is currently not supported by Store and Forward.

max_size
Maximum size specifies the size of the store file, in Megabytes. On Windows
platforms, the default value of 0 indicates that the file will expand linearly as
needed, with no wrap-around, until it fills the hard drive. On non-Windows
platforms, your store file will grow incrementally until it reaches this size. The
store process will wrap around to the beginning, overwriting the data
previously stored at that location.

Warning: On Windows systems, a setting of 0 could potentially result in


computer lockup or failure if the Store file consumes all available disk space.
Please review all settings before you enable Store and Forward to ensure that
you have set reasonable limits for the Store file maximum size.

On the contrary, a setting of other than 0 could potentially cause data loss if a
wraparound occurs.

176 11 Cim-IO Store and Forward


Defining External Tasks
Both the Cim-IO main client task and the Cim-IO asynchronous client task
must be defined and started in order to use Store and Forward. Cim-IO client
tasks will automatically handle all of the necessary operations for Store and
Forward if their respective records are defined correctly. See “Setting Up
Database Records” for more information.

Setting up Database Records


Note: This section covers only database records for InfoPlus.21.

Device records
Device records are configured as described in Cim-IO Client for InfoPlus.21.
To enable Store and Forward, the IO_STORE_ENABLE? field must be set to
YES. Also, the IO_ASYNC? field must be set to YES with the name of the
asynchronous task specified in the IO_ASYNC_TASK field. The values
specified in the IO_STORE_MAX_PERIOD and IO_STORE_MAX_SIZE fields are
used to automatically configure Store and Forward. The configuration is
described in “Configuring Store and Forward Parameters” above.

Transfer Records
Store and Forward only saves values for tags that are configured as periodic
or unsolicited. These tags must be in one of the following:
 Read Transfer records
 Historical Read Transfer records
 Unsolicited Read Transfer records

Notes:
 The lowest scanning period the Store and Forward system supports is 0.1
seconds.
 Unsolicited Read Transfer records are converted by the Store and Forward
Scanner into repeated GET requests, and sent to the DLGP at the
unsolicited update rate. The GET reply messages that come back from the
DLGP are then converted by the Store and Forward Store program into
Unsolicited reply messages.

Example Database Records


Warning: Cim-IO Read Transfer and Historical Read Transfer records must
not be configured using scheduling records, such as those defined by
ScheduledActDef, while Store and Forward is in use. This will have an adverse
effect on data collection. If any such records have been configured, they
should be disabled before starting Store and Forward.
To configure a record for Store and Forward, set up the record as shown in
the “Cim-IO Client for InfoPlus.21” chapter. These records must contain a
positive scan frequency in the IO_FREQUENCY field. In addition, if either Read

11 Cim-IO Store and Forward 177


Transfer records or Historical Read Transfer records are being used, the
IO_ASYNC? field must be set to YES.
One benefit to using Store and Forward is the automatic scheduling to collect
data. You do not have to set up the scheduling in the database. Store and
Forward processes automatically schedule data collection based on the given
frequency.

Note: The Store and Forward mechanism stores the timestamp showing
when the Cim-IO server received the data from the device only if the
destination data record's value field is of type aggregate (value and
timestamp, or value, status, and timestamp). If it is not, that is, if the
timestamp is a separate field from the value field and is part of the update
generation of the value field (like analog records), the timestamps for the
forwarded data show the time when the data was actually put in the
database. This could result in timestamps being extremely close to one
another in the database.
The following figure provides a simple Historical Read Transfer record with a
single tag. This record has been configured for Store and Forward by
assigning a positive frequency value (30 seconds in this case) and setting
IO_ASYNC? Field to YES.
Geth1 NAME
DESCRIPTION
OFF IO_MESSAGE_SW
NO IO_ACTIVATE?
IO_ACTIVATION_COS
ON IO_RECORD_PROCESSING
tsk_msim IO_MAIN_TASK
1 IO_DEVICE_UNIT
IO Group 1 IO_GROUP
1 IO_PRIORITY
Default IO_DEFAULT_DATA_TYPE
YES IO_ASYNC?
+00000:00:10.0 IO_TIMEOUT_VALUE
+00000:00:30.0 IO_FREQUENCY
10-JUN-96 09:37:03.3 IO_LAST_UPDATE

Success IO_LAST_STATUS
IO_LAST_STATUS_DESC
0 IO_REQUEST_CHANGES
ON
+00000:00:10.0 IO_HIST_TIMEOUT

178 11 Cim-IO Store and Forward


+00000:00:00.0 IO_HIST_GAP_INTERVAL
16-APR-96 14:14:43.3 IO_HIST_LAST_UPDATE
Success IO_HIST_LAST_STATUS
Success recovering history IO_HIST_STATUS_DESC
0 IO_HIST_PRIORITY
1 IO_#TAGS
tag1 1 IO_TAGNAME
ON 1 IO_DATA_PROCESSING
Default 1 IO_DATA_TYPE
tag1 VALUE 1 IO_VALUE_RECORD&FLD
No Conversion 1 IO_DATA_CONVERSION
No Deadband 1 IO_DATA_DEADBAND
Request failed 1 IO_DATA_STATUS
1 IO_DATA_STATUS_DESC
COMPLETE 1 IO_DATA_RECOV_STATUS
ON 1 IO_DATA_HIST_RECOV
tag1 1 TREND VALUE 1 IO_DATA_HIST_REC&FLD
1 IO_HISTORY_TAGNAME

The following is an example device record that has been configured for Store
and Forward. In this example, IO_STORE_MAX_SIZE is set to 100. This
means that Store and Forward on the server computer will store up to 100
Megabytes of data (per client).

TDC3000 NAME
tsk_msim IO_MAIN_TASK
ON IO_DEVICE_PROCESSING
YES IO_ASYNC?
tsk_asim IO_ASYNC_TASK
! IO_ASYNC_EXECUTABLE
NO IO_UNSOL?
IO_UNSOL_TASK
! IO_UNSOL_EXECUTABLE
IO_DLGP_SERVICE
IO_DLGP_NODE
NO IO_DLGP_STARTUP?
! IO_DLGP_STARTUP_PROC
NO IO_DLGP_SHUTDWN?

11 Cim-IO Store and Forward 179


! IO_DLGP_SHUTDWN_PROC
?????? IO_HIST_GAP_REAL_VAL
0 IO_HIST_GAP_INT_VAL
IO_HIST_GAP_ASC_VAL

0 IO_HIST_GAP_ASC_LEN
DO NOT INSERT GAP IO_HIST_GAP_DISPLAY
100 IO_%_RECOVERY
Geth1 IO_CURRENT_GET_REC
1 IO_#_TAGS_TO_RECOVER
YES IO_STORE_ENABLE?
+00000:00:00.0 IO_STORE_MAX_PERIOD
100 IO_STORE_MAX_SIZE

Store and Forward TCP/IP Services


Store and Forward (S&F) TCP/IP services only reside on the Cim-IO server.
S&F TCP/IP service names are determined by the tools provided to define
interface instances as described below:
 The Scanner service name is generated by adding the suffix _SC to the
DLGP service name.
 The Store process service name is generated by adding the suffix _ST to
the DLGP service name.
 The Forward process service name is generated by adding the suffix _FW
to the DLGP service name.
For example, for a DLGP name of:
CIMIOSIMUL
The Scanner service name is:
CIMIOSIMUL_SC
The Store Process service name is:
CIMIOSIMUL_ST
The Forward Process service name is:
CIMIOSIMUL_FW
Since some operating systems place a limit on the length of TCP/IP service
names, the following rules apply in generating Store and Forward service
names from long DLGP service names.
 If the DLGP service name is longer than 15 characters, the name is not
allowed. Use a shorter DLGP service name. Cim-IO Interfaces provided by
AspenTech use a DLGP service name shorter than 15 characters.
 If the DLGP service name is longer than 12 characters, but shorter than
15 characters, the first 3 characters of the DLGP service name are not

180 11 Cim-IO Store and Forward


used when generating the service names for the Store and Forward
processes.
For example, if the DLGP service name is CIMIOSETCIM_300 which is 15
characters, the DLGP service name stays the same, but the following
service names are used for Store and Forward processes:
IOSETCIM_300_SC
IOSETCIM_300_ST
IOSETCIM_300_FW

Examples: TCP/IP Service Names


TCP/IP service names for configuring Store and Forward are defined as
follows. The figure below shows two DLGPs on the same node. The Service
name for the first DLGP is CIMIODLGP1. The Scanner, Store and Forward
process service names are assigned as CIMIODLGP1_SC, CIMIODLGP1_ST
and CIMIODLGP1_FW, respectively.
The Service name for the second DLGP is CIMIODLGP2. Scanner, Store and
Forward process service names are assigned as CIMIODLGP2_SC,
CIMIODLGP2_ST and CIMIODLGP2_FW, respectively. Only one Scanner, one
Store and one Forward process belong to each DLGP.
Client
computer
Client Computer
Services
CIMIODLGP1
CIMIODLGP2
CIMIODLGP1_SC
CIMIODLGP2_SC
CIMIODLGP1_ST
CIMIODLGP2_ST
CLIENT CIMIODLGP1_FW
CIMIODLGP2_FW

SCANNER1 STORE FORWARD STORE FORWARD


SCANNER2
service=CIMIODLGP1_SC
PROCESS1 PROCESS1 service=CIMIODLGP2_SC PROCESS2 PROCESS2
service=CIMIODLGP1_ST service=CIMIODLGP1_FW service=CIMIODLGP2_ST service=CIMIODLGP2_FW

STORE STORE
SERVER1 FILE 1 SERVER2 FILE 2
(DLGP1) (DLGP2)
service=CIMIODLGP1 service=CIMIODLGP2

Server
Computer

Starting and Stopping a Store


and Forward System
To start Store and Forward processes:
1 Open a command window.
2 Change directory to the Cim-IO command directory.

11 Cim-IO Store and Forward 181


3 Use the cimio_sf_start DLGP_service_name command to start Store and
Forward as follows:
Operating System Type

Windows Command
If necessary, make a copy of the Store and Forward startup file and add
or edit any needed arguments, see the “cimio_sf_start.bat file options”
section, below.

Autostarting Store and Forward on Windows


Systems

To start Store and Forward with a particular Cim-IO


server:
 Create a new batch file with the full path name and parameters of the
service start program (or batch file) on the first line, and the full path
name and parameters of the Store and Forward start file
(cimio_sf_start.bat, with the appropriate parameters) on the second line.

To auto start this batch file when Windows starts:


 Place the full path name of this batch file in your cimio_sf_start.bat file
(see “The CIM-IO Manager” in section 2).

cimio_sf_start File Options


To start Store and Forward manually, you can use the following command line
arguments:
Command Command line arguments

cimio_sf_forward DLGPServiceName StoreFilePath Timeout MSGS num


cimio_sf_store DLGPServiceName StoreFilePath NOTAGINFO Timeout
cimio_sf_scanner DLGPServiceName DEVICE NOTAGINFO Timeout

DLGPServiceName – This is the TCP/IP service name of the Cim-IO server's


DLGP process. This argument is required for all Store and Forward processes.
StoreFilePath – This is the location of the Store file. For this argument, specify
the directory path. This argument is optional.
Timeout – This is the send socket timeout, in seconds. This argument is
optional for all the Store and Forward processes. If used, it can either be the
second or third command line argument for each of the Store and Forward
processes. The default timeout for the Store and Forward processes are:
cimio_sf_forward - 5 seconds
cimio_sf_scanner - 3 seconds
cimio_sf_store - 3 seconds
MSGS num – By default, the forward process reads one message at a time
from the store file and forwards it to the client task. With the optional MSGS
parameter, you can increase the default value. This can lead to better

182 11 Cim-IO Store and Forward


forwarding performance under some circumstances, but requires more RAM to
store the additional messages. The performance gain depends on your system
configuration, including hard drive speed, disk fragmentation, network
performance, computer speed, available CPU, available RAM, etc. You should
test the performance of different settings before using this parameter in a
production system.
To use this setting, add the command line argument "MSGS" followed by a
blank space and then a value representing the number of messages to read
from the store file per iteration.
The example below shows how to edit the cimio_sf_start.bat file on a
Windows system to use the messaging option for the forward process. In the
example, the forward process has been configured to read 100 messages
from the store file at one time.
Example:
start /B /MIN cimio_sf_forward CIMIOSIMUL MSGS 100

Note: Increasing the MSGS parameter results in additional RAM requirements


for the Forward process. For each store file being forwarded by this Forward
process (recall that one store file is created per InfoPlus.21 client process),
the Forward process uses a buffer of MSGS Cim-IO reply messages. Read
section “Analyzing Performance and Resource Requirements” for details.
DEVICE – This is used to set a get request's frequency to zero. Because a
non-zero frequency must be specified in a get request when using Store and
Forward, this option allows the frequency to be changed to zero before the
get request is sent to the Cim-IO server for processing. This argument is
optional for the Store and Forward scanner process.
NOTAGINFO - Store and Forward has a new option which uses “dummy” tag
names to decrease the size of a Cim-IO message and also decrease the size
of a store file. The feature can be enabled by passing the NOTAGINFO
argument to the scanner process or to the store process. Do not pass the
NOTAGINFO to both processes. The cimio_sf_start file will need to edited to
add the NOTAGINFO argument to the appropriate process. Please note that
some servers will not work if “dummy” tag names are sent from the scanner
process. In these cases, enable this feature passing the NOTAGINFO
argument to the store process. During upgrades, all of the scan and store list
files must be removed before starting the Store & Forward processes
regardless if the NOTAGINFO is used or not.

For more information or for examples on configuring the Store and Forward
processes please go to https://support.aspentech.com

Stopping Store and Forward


To stop Cim-IO Store and Forward:
 Close the command window.
Or
 Use the cimio_sf_stop DLGPServiceName command.

11 Cim-IO Store and Forward 183


Store and Forward External Files
Store and Forward creates one store file for each InfoPlus.21 receiver task
(unsolicited and asynchronous) that is connected to it. The file is created as
soon as a break in communication between Store and Forward and the
InfoPlus.21 client is detected.
When Store and Forward is active, the store file is populated with messages,
wrapping around to the beginning when the messages reach the end of the
file. If the messages at the start of the file have not been forwarded, they will
be overwritten in favor of the more recent messages being stored. Thus, it is
important that store files be set to the size needed to store enough messages
for the maximum downtime of your client/server connection if zero data loss
is desired.

Auto-stopping Store and Forward on Windows


Systems

To stop Store and Forward with a particular Cim-IO


server:
 Create a new batch file with the full path name and parameters of the
service stop program (or batch file) on the first line, and the full path
name and parameters of the Store and Forward stop file
(cimio_sf_stop.bat, with the appropriate parameters) on the second line.

To auto stop this service when the Manager service stops:


 Place the full path name of this batch file in your cimio_sf_stop.bat file
(see “The Cim-IO Manager” in chapter 2).

Connection is Restored (Windows)


When the connection is restored, forwarding will start. When forwarding is
complete (the latest messages written to the store file have been forwarded),
the store file will not be deleted, but will have its header information zeroed
out so that the next store operation will start at the beginning of the file.
Thus, the file space is re-used on subsequent stores, as old store file
information is overwritten with new store file information.

Monitoring Store files in Real-


time
On Windows platforms, the Cim-IO SF Monitor utility allows you to monitor
the current status of your store file including:
 Space available in the Store File
 Store file resource usage
 Wraps around
 Forward completion

184 11 Cim-IO Store and Forward


Running Cim-IO SF Monitor
To run Cim-IO SF Monitor, use Windows Explorer to open your
Aspentech\CIM-IO\code directory, and double-click on CimioSFMonitor.exe.
You will see the main window as shown below.

The Cim-IO SF Monitor utility main window

On startup, Cim-IO SF Monitor will auto-detect all active store files on the
local computer, and load the appropriate information for each file into the
application’s Store Files list box.
To view the information for a specific store file, select it from the list. To
refresh the current information for a store file, click again on the same item,
or specify an Interval and click the Play button. This will cause a refresh for
the selected store file to take place at a specified frequency. To view the
status of another store file, simply click on a different item in the list.

Note: Cim-IO SF Monitor does not allow you to browse for a specific store file
on either a local or remote node. In addition, monitoring is only supported on
the local node. If you would like information on a specific store file, please
use cimio_sf_analyze.exe in your Aspentech\CIM-IO\code directory.
The following table describes all fields displayed in the Cim-IO SF Monitor
application:
Item Description

Store Files List box containing all store files available on the local
machine.
Store File Path Path indicating the location of the store file currently
being monitored.
Store File Name Name of the store file currently being monitored.
Client Node Client node the currently selected store file is located
on.
Client Task Client task associated with the currently selected store
file.
IP21 Group InfoPlus.21 group name in which the Client Task runs.

11 Cim-IO Store and Forward 185


Item Description

Revision Store file format version number. Version 1, 2, and 3


are all mutually incompatible.
Max Size (MB) The maximum size the store file is configured to reach.
Once the store file reaches this size, the Current Offset
will return to the beginning of the store file, and Wraps
Around will be incremented.
Last Message Size The size in bytes of the last Cim-IO message received
and added to the store file.
Messages The total number of messages currently stored in the
store file.
Forwarded The total number of messages successfully forwarded
to the client.
Forward Completion Percentage of forwarded messages compared to total
number of messages in the store file.
Current Offset The number of bytes from the beginning of the file to
where the next received message will be stored.
Forward Offset The number of bytes from the beginning of the file to
the location of the next message to be forwarded.
Last Offset The number of bytes from the beginning of the file to
the location of the message written last.
Oldest Offset Offset to the oldest message in the file.
Newest Offset Offset to the newest message in the file.
Wraps Around Number of times the store file has ‘wrapped’ from the
end of the store file to the beginning. When a wrap
around occurs, data previously stored is overwritten as
new data comes in.
Time in Store Mode The amount of time since store mode was entered.
Current Store Rate The current store rate in bytes per second.
Avg. Store Rate Average store rate in kilobytes per second since storing
began.
Forward Rate Forward rate in bytes per second.
Store/Forward Ratio Forward rate versus store rate in bytes per interval
where interval is the amount of time between a refresh
of the store file view.
A number greater than one indicates normal operation.
A number less than one indicates that data is being
stored faster that it can be forwarded. In this situation
your store file will continue to grow.

Note: The calculated fields Store Rate, Forward Rate, and Store/Forward
Ratio are based upon a sampling of data taken between refresh procedures
on the store file view. As this is the case, a larger refresh interval will result in
a more accurate picture of the store/forward rates and ratio.
If a Store file displayed in the list is deleted from disk after the application
has started, you will need to restart Cim-IO SF Monitor for the item to be
removed from the Store Files list.

186 11 Cim-IO Store and Forward


Cim-IO SF Monitor showing example store file information

There are currently 3 operations available in Cim-IO SF Monitor.


 View First/Last Messages will display a window and print out the first and
last message headers in the store file.
 View Entire Store File Contents will display a window and print out the
message headers of all of the messages in the store file. This is not
recommended for large store files.
 Reset Forward Pointer will reset the forward pointer back to the beginning
of the file. This operation should never be needed, and can be harmful to
forwarding your store file. If you click this button, a message box will
display to confirm that you wish to do this.

Note: The Cim-IO SF Monitor utility was added in version 6.0.0 SP1 (Cim-IO
6.0.1) and currently runs on Microsoft Windows systems only.

Store and Forward Internal


Files
Store and Forward creates and maintains several files on the server for
proper operation.

Warning: Do not modify or delete these files during normal operation.

Cim-IO Scan List File


This file is created in the io directory under the Cim-IO root directory.
The Scan List File name is generated by appending the DLGP service name,
separated by a dot, to the end of the string:
CIMIO_SCAN_LIST

11 Cim-IO Store and Forward 187


For example, if the DLGP service name is CIMIOSIMUL, the Scan List File
name is cimio_scan_list.cimiosimul.

Cim-IO Unsolicited List File


This file is created in the io directory.
The Unsolicited List File name is generated by appending the DLGP service
name, separated by a dot, to the end of the string:
CIMIO_UNSOL_LIST
For example, if the DLGP service name is CIMIOSIMUL, the Unsolicited List
File name is cimio_unsol_list.cimiosimul.

Cim-IO Store List File


This file is created in the io directory.
The Store List file name is generated by appending the DLGP service name,
separated by a dot, to the end of the string
CIMIO_STORE_LIST
For example, if the DLGP service name is CIMIOSIMUL, the Store List file
name is cimio_store_list.cimiosimul.

Cim-IO Store Files


By default, Cim-IO Store files are created under io directory. If desired,
another location can be specified when Store and Forward is started. For
example, under Windows you could use:
cimio_sf_start CIMIODEVICE \storefiles
In this case, the data is buffered in the Store files directory (This directory
must exist before invoking the command.) If a directory is not specified, the
default location is used.
There can be several Store files depending on the number of distinct client
tasks that sent cyclic or unsolicited requests to Cim-IO server tasks.
The Store File name is generated by appending the client computer node
name, a dot separator, asynchronous Cim-IO task name and the
asynchronous task group number to the end of the string:
CIMIO_STORE_
For example, if the client computer node name is SOLAR and the
asynchronous task name is TSK_ASIM running under group 300, the Store file
name is cimio_store_solar.tsk_asim_300.
If the node name contains a domain name, the dot separators are replaced by
underscores because OpenVMS file system does not support embedded dots
in the filename.
For example, if the node name in the example above was specified with the
domain name as follows:

188 11 Cim-IO Store and Forward


SOLAR.ASPENTECH.COM
In this case, the Store file name would be
cimio_store_solar_aspentech_com.tsk_asim_300.
Each Store file can grow up to the maximum size specified in the
Configuration file or the IO_STORE_MAX_SIZE field in the client database
device record. An IO_STORE_MAX_SIZE of 0 specifies an infinite file size on
Windows platforms.
If an infinite file size was specified for a Store file, the maximum file size is
still limited by the amount of available disk space.

Notes:
 Cim-IO was upgraded in version 6.0.1 to use 64-bit file access. Thus, the
maximum file size possible is now 8 billion GB, not the 2GB possible with
Cim-IO 5 and earlier versions. If you specify a maximum size for your
store file, the store file will grow incrementally for that store file until it
reaches the maximum size specified.
 Each Store file that belongs to the same instance of Store and Forward
has the same size limit. Set the size limit based on how many clients send
cyclic or unsolicited requests to the server subsystem.

For example, if there are two Cim-IO client tasks that are communicating with
Store and Forward, Store and Forward creates two separate Store files when
both client tasks are shut down. If the store file size has been set as 100
Megabytes, each Store file can grow up to 100 Megabytes, using up to 200
Megabytes of disk space.

Analyzing Performance and


Resource Requirements
When the Store and Forward system cannot send replies from the DLGP to
the client computer, Store and Forward starts accumulating replies in a Store
file.
The space required by the store file for each Get or Unsolicited reply can be
calculated as follows:
 500 bytes overhead, regardless of message data
 80 bytes per point, regardless of tag type. If NOTAGINFO is used, this will
be 41 bytes per point.
 An additional 40 bytes per point if long tag records are used
(LongTagGetDef, LongTagUnsolDef, LongTagPutDef or LongTagPOCDef). If
NOTAGINFO is used, ignore these additional 40 bytes.
 An additional 216 bytes if very long tag records are used (IOLLTagGetDef,
IOLLTagPOCDef, IOLLTagPutDef, or IOLLTagUnsDef). If NOTAGINFO is
used, ignore these additional 216 bytes.
 An additional 100 bytes per TextDef (String) point
 If a single point evaluates to a complex structure, such as a vector or
structure of different data types, add a number of bytes equal to all of the

11 Cim-IO Store and Forward 189


data needed by all of the points of the structure. For example, an array of
500 Double Float numbers takes up 500x8 bytes = 4000 bytes.

Note: This calculation is the same regardless of the Cim-IO client or Cim-IO
server involved. For example, data from the Cim-IO Bailey SEMAPI server
uses exactly the same Store and Forward calculations as data from the Cim-
IO SETCIM server.
The sum of all of the above elements is the number of bytes a store file will
require per message. The file growth rate can be calculated by dividing the
total above by the message rate. To calculate the total required file size,
multiply the growth rate by the maximum desired outage time coverage. To
find the total time coverage, divide the file size provided by the growth rate.
For example:
A LongTagGetDef is constructed with 100 integers, 100 reals, and 100
TextDef strings. The GetDef rate is once per 5 seconds. The amount of space
required for the store file is:
 500 bytes overhead
 300 * 80 bytes = 24,000 bytes for the points.
 300 * 40 = 12,000 bytes (since this is a LongTag record)
 An additional 100 * 100 = 10,000 bytes string space
 It has no complex structures
Thus, the total is 46,500 bytes. The update rate of 5 seconds results in a file
size growth rate of 46,500 * 12 = 558,000 bytes per minute.
An outage of 1 hour (60 minutes) would generate a file of size 33,480,000
bytes (close to 32 MB). If the plant allocates 1Gb for the store file, the
maximum outage time covered would be
1024 * 1024 * 1024 / 33,480,000 = 32.07 hours.
When the client computer becomes accessible, the Forward process forwards
the values to the client computer. While this forwarding takes place, the Store
process continuously adds the replies to the Store file. When forwarding is
complete, the Store file is removed and the Store process sends replies from
the DLGP directly to the client computer.
Forward Process Memory Requirement:
As mentioned above, it is possible to specify how many messages the forward
process reads at one time from the store file before forwarding them to the
Cim-IO Client (MSGS parameter). The bigger MSGS the more memory the
forward process needs. In the example above the size of one message was
46,500 byes, so if the MSGS parameter was set to 100, the forward process
would need 4,650,000 bytes of internal memory (close to 4.44 MB).
If you have multiple Forward programs running on a system, you will need to
calculate this for each Forward program. The sum is the additional memory
required.

Notes:
 If your system does not have this much RAM, the memory will be buffered
to disk by the operating system’s virtual memory manager. This will likely
slow down the performance of all applications on your system.

190 11 Cim-IO Store and Forward


 Store and Forward relies on both network and hard drive performance to
work well. If significant TCP activity and/or significant hard drive activity
occurs on the server system, either of the following conditions may occur:
If the TCP connection between the client computer and server computer is
slower than the fastest frequency at which the scanning takes place, the
Store process may store data faster than the Forward process can forward
to the client computer. In this case, the Store file keeps growing and
normal operation never resumes. For this reason, you are advised to
analyze the performance of the in-use hardware and determine if it is
likely that the Store and Forward system will not assume normal
operations where the replies are sent directly to the Cim-IO client process
instead of being put in the Store file. The system always catches up unless
the device is scanned at a faster rate than the Forward Process is
communicating with the client computer.
The Store program keeps a cache of messages it has not yet stored to
disk. If the hard drive is under significant load, or if a remote hard drive is
used for the Store file, Store may experience problems storing data at the
rate at which it comes in. An artificial “memory leak” will occur as the
Store process accumulates messages it has not stored to disk. The
amount of memory leaked is equal to the incoming message rate minus
the rate at which data is stored to disk. This will continue until disk access
becomes fast enough to support the incoming data. If the leak is severe or
lengthy enough, the Store program may not run properly or may crash
due to insufficient memory. For this reason it is recommended that store
files be on the same system as the server and that the hard drives
containing the store files not be overloaded.
 As a store file increases in size, the hard drive will require additional time
to move its read/write heads back and forth between tracks. For this
reason, a store file that does not leak when its size is a few hundred
megabytes may start leaking when the size reaches a few gigabytes or
tens of gigabytes.

Implementing Data
Compression Using IoUnsolDef
records
Data compression using exception reporting can be implemented in Store and
Forward. This is done by setting the frequency (IO_FREQUENCY field) of
IoUnsolDef records to a negative number. The benefits of doing this are
decreased network traffic and smaller store files due to the decrease in the
amount of data that is being reported to InfoPlus.21.
In all aspects except the negative frequency the behavior of the IoUnsolDef
records should be the same as if the Cim-IO server being used supported
unsolicited IO. The frequency of updates will depend on the size of the
deadbands defined in the repeat area of the IoUnsolDef record. In order to
obtain any benefits from data compression the size of the deadbands should
be carefully selected. Excessively small deadbands will result in no decrease
in network traffic, while large deadbands may result in lost data.

11 Cim-IO Store and Forward 191


When an IoUnsolDef record with a negative frequency is turned on,
InfoPlus.21 sends the declare request to the Scanner process rather than the
Cim-IO server. When the Scanner process receives one of these requests it
simply converts the request to a regularly scheduled get request and then
polls the Cim-IO server at the configured frequency. The Scanner process also
sends the initial declare request to the Store process so it can save the
deadbands. When a reply message to the scheduled poll is received by the
Store process it checks the values in the message for changes that exceed
the deadband and if any are found the original get reply is converted to an
unsolicited reply with only these values. The unsolicited reply is then sent to
InfoPlus.21 or written to the store file if communication to the InfoPlus.21
system is down.

Note: The calculation for the store file size above indicates the maximum
store file size. Compressed unsolicited records eliminate any element that
falls within the deadband. Strings (TextDefs) are considered within the
deadband if the current string is equal to the previous string, but outside of
the deadband if the current string is not equal to the previous string.
To calculate the store file rate for a Compressed Unsolicited record, only take
into account the rate at which data items change. Note that the 500 byte
message overhead must be included for each message, even if only one point
is being sent. For example:
A LongTagUnsolGetDef with:
 2 integers changing every minute
 2 reals changing once every 5 seconds
 2 strings (TextDefs) that never change
The following data transfer occurs every minute:
 11 messages sending only the 2 reals
 1 message sending the integers and the reals
 The strings are never sent after the initial transmission
Thus the message data size is:
1 500+2x80+2x40+0+0=740 bytes for the real messages
2 500+4x80+4x40+0+0=900 bytes for the larger message
yielding 11x740+1x900=9040 bytes per minute, or 151 bytes per second. In
this example, the amount of data stored is reduced by approximately 50%
compared to the previous example involving LongTagGetDef records.

Note: The amount of data stored is approximately equal to the amount of


data being transmitted over your network.

192 11 Cim-IO Store and Forward


Store and Forward with
Windows File Compression /
Compressed Drives
Store and Forward files can be used with Windows file compression or
compressed drives, however it is not recommended for critical data storage.
File compression on an active file (one that is being read from and written to,
such as a store file), requires that the I/O be “translated” to and from
compressed format. Microsoft support indicates on the following web site that
there is a danger if the operating system cannot keep up with the file I/O:
http://support.microsoft.com/default.aspx?scid=KB;EN-US;q251186
Because of this, heavy load on your system or disk drive can cause problems
with the Store and Forward process. Also, since Store and Forward is reading
and writing from multiple sections of the Store File (file header and file end
during store, file header, read location, and write location during forward),
the Windows compression feature will have to do more work than if, for
example, we were just appending to a general file (such as a Cim-IO log file).
If you are storing large quantities of data at a slow update rate (for example,
a megabyte of data every hour), you may find that the additional system load
is insignificant and the consequences of data loss are insignificant compared
to the file space saved, however this is not without its risks.
If disk file corruption occurs, you may lose much more data than would
otherwise be lost because of the compression process. If Windows
compression cannot recover from the error, you may lose a significant
amount, or all of, your data.

Important: We do not recommend that Windows compression be used with


Store and Forward because of the risk of unrecoverable data loss and the
additional load this places on the target machine. AspenTech support may not
be able to assist with support calls involving Store and Forward and Windows
file/disk compression.

Rejecting Old Data


In some cases, you may not want to retain data older than your most recent
InfoPlus.21 entry.
Use the CIMIOProperties program and set CIMIOSFRejectOldData to 1. The
files cimio_sf_reject.exe, cimio_sf_reject_old.bat, and
cimio_sf_accept_old.bat are no longer supported.
Store and Forward reads in the reject setting when it is started. You will need
to restart Store and Forward when you want it to use a new reject setting.

11 Cim-IO Store and Forward 193


General Data Recovery with the
RECOVER Utility
Although Store and Forward will send data if a client comes back up,
sometimes circumstances will prevent the client from being restored. For
example, if a hard drive crash disables a computer, the data on it may not be
recoverable and the node may have to be replaced by a second node. Also,
Store and Forward data recovery requires that an active client be present. On
some occasions you may want to load the old data, but not generate any new
data. These circumstances call for the use of the Cim-IO RECOVER utility. The
RECOVER utility is designed to recover data from Store and Forward files
without needing an actively running InfoPlus.21/Cim-IO data collection task.

Note: RECOVER can only be used to insert data into InfoPlus.21. It does not
support recovery into a SETCIM database.
The general procedure is outlined below. More detailed sections follow.

Preparation for recovery


1 Copy the store file to recover to the IP.21 system.
2 Back up history file sets.
3 Run utility CIMIO_SF_ANALYZE and choose the option to reset the forward
pointer.
4 Create a TCP/IP service in the services file (for example, MYSERVICE
47657/tcp).
5 Add a logical device to the file cimio_logical_devices.def with a line like
this: MYSERVICE ip21computername MYSERVICE.
6 Open two DOS Windows to run interactively the server and the client part
of the recovery
7 Set the default directory in both windows either to the folder where Cim-
IO and InfoPlus.21 executables are or to the folder containing the store
files to recover. In either, you will need to supply a path to the folder
where recovery programs are located or the path to where the store files
are.

Recovery
1 Start up the server process interactively from its DOS Window like this:
CIMIO_SF_RECOVER MYSERVICE StoreFileName
2 Start up the client server process interactively from the other DOS
Window like this: CIMIO_C_RECOVER MYSERVICE SLEEP 100

Store and Forward RECOVER Programs


Store and Forward RECOVER includes the following programs:
 CIMIO_SF_ANALYZE : analyzes Store and Forward files
 CIMIO_SF_RECOVER : recovery server
 CIMIO_C_RECOVER : recovery client (on InfoPlus.21 systems only)

194 11 Cim-IO Store and Forward


Using CIMIO_SF_ANALYZE, you can obtain information about the Store and
Forward file – the number of messages it contains, file pointers, and Store
and Forward file type.
The RECOVER server and client programs allow you to send data directly from
the store file into an InfoPlus.21 database without using InfoPlus.21 Cim-IO
tasks or other Cim-IO clients.

Using Analyze
To use Analyze, simply run the CIMIO_SF_ANALYZE program from the CODE
directory of your Cim-IO folder. You will be prompted for a service name that
the Analyze program will use if necessary, and the file name of the store file
you wish to analyze. You cannot use any other programs on this store file
until the analyze program completes. You can select any option seen below.
You can then select where the data is printed: to the screen, to a file, or both.
Command 4, “Track the number of messages forwarded”, is no longer useful,
but is retained for backwards compatibility. Command 5, “Reset the Store
File’s forward pointer”, should only be used if you are familiar with how store
files work.

Sample cimio_sf_analyze.exe Program output

Setting Up RECOVER
The RECOVER application consists of two programs: the RECOVER client and
the RECOVER server. In order to run RECOVER, you must choose:
 A service name.
 A logical device name
 A TCP port number

To set up the Cim-IO server system:


1 Enter the service name into your operating system’s services file along
with the TCP number.
2 Enter the logical device, node, and service name into your
cimio_logical_devices.def file. The node name must be the name of this
computer.

11 Cim-IO Store and Forward 195


Note: The recover process does not use Store and Forward or the Cim-IO
server the data came from. You do not need to run either of these on the
server system to start recovery. You may leave them running on the server
system if you wish.

To set up the Cim-IO client system:


1 Enter the same service name and TCP port number into your operating
system’s services file
2 Enter the logical device, node, and service name into your
cimio_logical_devices.def file. The node name must be the name of your
server computer.

Note: Recover does not need any InfoPlus.21 Cim-IO clients to be running in
order to recover the data. You may leave them running if you wish.

Setting up InfoPlus.21
The RECOVER application requires that you either recover to an identical or
compatible InfoPlus.21 snapshot (database configuration) that created the
store file. The snapshot must:
 Contain all of the Get and Unsol records that created the store file, with
identical InfoPlus.21 record ID numbers
 Contain all of the InfoPlus.21 points in those transfer records
 Have all of the InfoPlus.21 points in those transfer records point to valid
InfoPlus.21 archives
 Have these point archives able to store data from the period to be
recovered. This means that the start date of the archives must be
previous to the first point timestamp in the store file, and the archives
must contain enough room to accommodate the data to be added.
Although InfoPlus.21 (or SetCim if you are recovering to a SetCim node) and
its database storage tasks must be running while the Recover occurs.

Using RECOVER
To run RECOVER, you must start both the RECOVER server and the RECOVER
client. They can be started in any order. RECOVER supports both the old Cim-
IO store file format (Cim-IO 4.8 through 5.0) and the new Cim-IO store file
format (Cim-IO 5.1 and later).

The RECOVER Server


The RECOVER server command is cimio_sf_recover. The program is found in
the code directory, beneath the Cim-IO installation folder. Run a shell and
change directory to the CIM-IO code directory. The RECOVER server is run as
follows:
cimio_sf_recover Service File Timeout NODE n DUMP
Service is the service name you chose for the Recover application. This
parameter is required.

196 11 Cim-IO Store and Forward


File is the name of the store file you want to recover. You must specify either
a full path name, or a path name relative to the CIM-IO code directory. This
parameter is required.
Timeout is an optional parameter, in seconds, that determines when a
message times out and is re-sent by the RECOVER server.
NODE n (e.g. NODE IP21ST59C) is an optional parameter. If you want to
redirect the recovered data to an InfoPlus.21 node other than the original one
specified when the store file was created, you can use NODE to specify the
node name of the IP21 system that is to receive the data. The destination
InfoPlus.21 database must be using a snapshot containing the tags that were
stored in the Store and Forward file. The points in this database must point to
valid archives capable of storing the dates that are being recovered. If the
tags are undefined, RECOVER will produce errors and the data will not be
inserted into history.
Using the DUMP parameter on the RECOVER server causes the RECOVER
program to try to salvage any possible message data that it can find in the
store file. It is only recommended when all of the following occur:
 Your Store and Forward file has a corrupt header
 The data in the store file is critical

Note: On startup, the RECOVER server will report if a Store file header is
corrupt.
If your header is not corrupt, this parameter will have no effect upon
recovery. If your header is corrupt, this parameter will cause the RECOVER
server to ignore the file header and try to use the raw message data. The
RECOVER server will go from the beginning of the store file to the end of the
store file checking for messages. If any valid messages are found (valid
message header, correct message header CRC, readable valid message
body), they will be sent to the RECOVER client to be stored in InfoPlus.21
Before using the DUMP parameter, ensure that you have backed up your IP21
archives so that any possible erroneous entries placed into it by RECOVER can
be undone if necessary. In addition, you should review the IP21 archives after
running with the DUMP parameter to ensure the correctness of any data
inserted by the application.
The RECOVER server will display its progress after each 1000 Cim-IO
messages recovered.

Note: The RECOVER server will work exactly like Store and Forward,
including adjusting the store file header to point to the message currently
being extracted. If you wish to maintain a copy of your original store file, with
all of its messages, copy it before running the RECOVER utility.
If your store file is corrupt but you have not specified the DUMP parameter,
you will be notified of the corruption and execution will terminate. You can
then re-run the program with the DUMP parameter after taking appropriate
backup steps beforehand.

11 Cim-IO Store and Forward 197


The RECOVER Client
The RECOVER client is cimio_c_recover.exe. It is found in the code directory
beneath your InfoPlus.21 installation folder. To run it, change directory to the
InfoPlus.21 code directory and enter the following at the command prompt:
CIMIO_C_RECOVER Logical SLEEP T UPDATE|ADDNEW
Logical is the logical device name you chose for the CIMIO_SF_RECOVER
program. This parameter is required.
SLEEP T is an optional parameter. If you wish to throttle the recovery rate,
this parameter can be used. The process will sleep for T milliseconds after
flushing each tag to InfoPlus.21 History.
For every tag, up to 100 values will be stored into InfoPlus.21 history before
sleeping. For example, if you have a store message for a Get record with 40
tags, then up to 4000 values (100 per tag) could be inserted into history. If
you specify SLEEP 5000 for example, then after 100 values have been written
for any given tag, the program will sleep for 5 seconds before continuing to
the next tag. This will mean that the total sleep time when writing this
instance of the get record’s values will be 40 tags * 5 seconds = 200 seconds.
If there are 500 messages for this particular Get record in the store file, the
total time sleep time when recovering the data for this record would be 1000
seconds.
The sleep times are in addition to time spent actually writing the data to the
database. If the parameter is zero, then a SLEEP 0 will be issued, allowing
other processes to access the CPU but not pausing for any length of time. If
this parameter is a negative number, there will be no sleep time between
inserts into the database. The default sleep time is –1 (no sleep).
UPDATE and ADDNEW are mutually exclusive options that determine how the
stored data will be inserted into InfoPlus.21 history. Both will add the given
value at the given timestamp. The difference occurs when a previous value is
found in the database at exactly the same timestamp. UPDATE will overwrite
this value with the new value, preserving the original timestamp, while
ADDNEW will increment the timestamp by 1 microsecond until an unused
timestamp is found, and then add the value into history.
The default insert method is UPDATE. If both options are specified, the last
option specified in the command line determines how the values will be
inserted into the database.
InfoPlus.21 needs to be running when this program is used; however, no
InfoPlus.21 data collection tasks (TSK_M_XXX, TSK_A_XXX, TSK_U_XXX) are
needed. When started, the RECOVER client will assign a predefined
InfoPlus.21 data collection task name to itself (TSK_AREC). The client will
then establish communications with the RECOVER server, taking
approximately 1 minute to begin actual data recovery.
The RECOVER client will display its progress by showing lists added and lists
written to InfoPlus.21.

198 11 Cim-IO Store and Forward


Common Errors
“Error reading fixed area for record # …” Or “Invalid
activation code for record # …”
These two errors indicate that your InfoPlus.21 snapshot is incompatible with
the store file. Load an InfoPlus.21 snapshot from the time that the store file
was generated and re-try the RECOVER operation.

“Inserted only 0 of 100 elements into record id # fieldid


#, tag [name], sample error –61”
This error generally occurs when your InfoPlus.21 archive does not have a file
set that can store the data. Check to make sure that the start date of your
archive is before the start date of your store file.

Invalid or nonsensical data


This problem generally occurs if either your store file has been corrupted, or
your InfoPlus.21 snapshot is incompatible with the snapshot used to generate
the store file.

Performance
Tests done on a dual PIII/800 system with 1.25GB of RAM have shown
RECOVER storing approximately 500 values per second. Your performance
may vary due to disk speed, CPU speed, available RAM, and resource usage
by other tasks.

Impact on InfoPlus.21
When RECOVER is storing data into InfoPlus.21, it is possible that the data
may not be able to be inserted into history by InfoPlus.21 archiving task at
the rate at which RECOVER is writing data.

Overflow
In this case, a history overflow file called Event.dat may be created by
InfoPlus.21 to temporarily buffer the excess data until it can be inserted into
the history archives. Under these circumstances, all the data recovered will
not appear in history query requests until the Event.dat file is cleared by the
InfoPlus.21 archiving task.
The event.dat file is found in the archive’s directory (one level above the file
sets’ directories that contain the arc.key and arc.dat files). For example, if a
data set file is:
C:\Histories\History7\History7-29\arc.dat
then event.dat resides in:
C:\Histories\History7\event.dat.

11 Cim-IO Store and Forward 199


Archive Limits
When inserting data into archives that contain data entries that are later than
the data to be recovered, there is a limit on how much data can be inserted.
The limit depends on how much free space is available in the file set that
needs to contain the data from one or more Store files.
Each file set can grow to a maximum size of 1GB in InfoPlus.21, but can
physically accommodate up to 2GB of actual history data. Therefore, each file
set, even if it is fully used, can still theoretically accept up to 1GB of
additional recovered data. If the file set still has some free space, this amount
can be added to 1GB to determine the theoretical maximum of how much
data can be recovered. Use the InfoPlus.21 Administrator to find the amount
of unused space left in a file set.
Based on the amount of free space in the file set, you can use an
approximation ratio of 4:1 to determine if a set of Store files can be safely
recovered.
For example, you have the following scenario:
File Information

Store File 1 Contains data from Jan1/03 – Jan 7/03


Store file size is 500 MB
Store File 2 Contains data from Jan8/03 – Jan 14/03
Store file size is 750 MB
File Set 1 Contains history data from Jan 1/03 – Jan 15/03
Percent used = 95%
File set size = 1GB

In this example, the data in Store files 1 and 2 represent information that
would need to be inserted into File Set 1, based on the date ranges of the
store files and the file set. The total file size of the two store files is 1.25GB.
Using the 4:1 ratio, we estimate that 1.25GB/4 or approximately 312MB of
actual data would be inserted into File Set 1. So there is enough room in the
file set to accommodate the data in this example:

Note: The 4:1 ratio is only an estimate. The actual ratio depends on the
number of unique Get Records in the Store file, and the number and type of
tags in each Get Record. You should test this on your own system before
making assumptions about the ratio. As a general rule, it is better to have
fewer Get records with more tags per record versus more Get records with
fewer tags per record. You should also leave a certain margin for error when
calculating how much data can be inserted into a file set. The behavior of
InfoPlus.21 is undefined if you attempt to insert more than 2GB of data.

200 11 Cim-IO Store and Forward


11 Cim-IO Store and Forward 201
12 Cim-IO Redundancy

Introduction
In versions 2004 and later, Cim-IO supports Cim-IO server redundancy. You
can configure two Cim-IO servers on redundant nodes. If communications
with the first is lost, the Cim-IO client will switch to the second. If
communications with the second is lost, the Cim-IO client will switch to the
first. Cim-IO client-side redundancy is fully compatible with Store and
Forward server nodes; Store and Forward may be used on both primary and
secondary redundant nodes to make sure that no data is lost.
Cim-IO client side redundancy requires the following:
 InfoPlus.21 Version 7.0.0 or higher
 Cim-IO Kernel Client Side version 2004 (7.0.0) or higher
 Two redundant Cim-IO server connections. Both servers must be
connected to the same end device.
 A running redundancy detection task
 A running Cim-IO client task with auto-restart disabled
 Appropriate changes to cimio_logical_devices.def
The Cim-IO redundancy task you run will actively monitor the following to
determine failure:
 IO_LAST_UPDATE time of Cim-IO records
 ICMP (network) Ping to Cim-IO server node
 Success or failure of Cim-IO client calls
 Quality/status of watchdog tag (optional)

12 Cim-IO Redundancy 203


System Architecture
The following diagram outlines the changeover architecture and the tools
used:

InfoPlus.21

Cim-IO
Connection
Manager

TSK_DETECT Configuration Cim-IO Client


changes (TSK_M)

Cim-IO Interface Cim-IO Interface


Manager Primary Secondary Manager
Cim-IO Cim-IO
Server Server

Data Collection Device

Permanent Connection
Primary Connection
Backup Connection

204 12 Cim-IO Redundancy


Under normal operation the Cim-IO client is connected to the Primary Cim-IO
server. TSK_DETECT has permanent connections to both the Primary and
Secondary Cim-IO servers for failure detection. If TSK_DETECT determines
that the Primary Cim-IO server has failed, the Cim-IO client is re-configured
to communicate to the Secondary Cim-IO server.

Configuring Your System for


Redundancy
To configure your system for redundancy, you will need to:
1 Configure each server for redundancy operation using Cim-IO Interface
Manager. See the Cim-IO Interface Manager chapter for details.
2 Confirm that the InfoPlus.21 client side is configured for redundancy by
using Cim-IO Connection Manager to verify the following settings:
CIMIOChangeoverTimeout is the desired value
CIMIORescanLogicalDevices is Redundant: Cim-IO Changeover
used for a Redundant setup.
The meaning of these Cim-IO variables and other redundant-related
variables are explained in Cim-IO Environment Variables in chapter 5.
3 Configure the redundant logical device in InfoPlus.21 using Cim-IO
Connection Manager. Make sure the Enable Cim-IO redundancy check
box on the Configure Connection screen of the Add Cim-IO IP.21
Connection wizard is selected. See the Cim-IO IP.21 Connection
Manager chapter for details.

Sites with more than seven redundant


server pairs
Due to a limitation in Windows, a maximum of 7 redundant server pairs can
be handled and configured by the Cim-IO Connection Manager.
If you need to monitor more than 7 server pairs, then you would need to
manually create a second instance of the Changeover.exe external task, e.g:
TSK_DETECT2, TSK_DETECT3, and so on, and define the additional sets of 7
server pairs or distribute the total number of server pairs among the
processes created.
1 Create an IoExternalFTDef record in InfoPlus.21 for your redundancy task.
Set the following fields up in this record:
Field Description

NAME The name of your task. For example, TSK_DETECT


IO_LOG_MESSAGES If this field contains a record and field pointer,
information messages will be written to the
InfoPlus.21 database. If this field is left blank, all
information messages will be written to the external
devices output file.

12 Cim-IO Redundancy 205


2 Add the redundant server pair to cimio_logical_devices.def. The redundant
pair needs 3 entries: the logical device, the primary device, and the
secondary device, as follows:
Device Node Service

LogicalDevice PrimaryNode PrimaryServiceName


PrimaryDevice PrimaryNode PrimaryServiceName
SecondaryDevice SecondaryNode SecondaryServiceName
The logical device LogicalDevice is used wherever a logical device name is
required. The primary and secondary logical device names can be chosen
to suit your needs. For example:
OPC_M_21B BOILERPRIMARY CIOOPCBOILER
OPC_M_21B_PRI BOILERPRIMARY CIOOPCBOILER
OPC_M_21B_SEC BOILERSECONDARY CIOOPCBOILER
3 Add and configure a redundancy repeat area in the record you defined
based on IoExternalFTDef record.
o Increase the value of IO_#TAGS in the main record by 1. IO_#TAGS is
the number of redundancy entries or server pairs. Increasing this will
add a row to the repeat area. See the note above regarding the
restriction on the number maximum number of server pairs that can
be defined per Changeover.exe process.
o Fill in the fields in the new repeat area as per the table below.
o If you wish to specify a watchdog tag, enter the tag name in the
IO_TAGNAME field. Failover will occur if the watchdog tag goes to bad
status. If you do not specify a watchdog tag, then failover will only
occur if connection with the server is lost.
o If you are connecting to Cim-IO for OPC, you may specify a negative
IO_FREQUENCY to force Cim-IO for OPC to read the tag from the
device rather than from OPC cache. If the device read fails or returns a
bad point, failover will occur. The point’s scan rate is set to the
absolute value of IO_FREQUENCY. Thus, an IO_FREQUENCY of –7.0
seconds means that Cim-IO for OPC will do an OPC Device Read of this
tag every 7 seconds. If the OPC quality of the tag is bad or if the tag
cannot be read, failover will occur.

Field Description

IO_DEVICE_PROCESSING If OFF, the device will not be monitored.


TSK_DETECT must be restarted if set back to
ON.
IO_DEVICE Cim-IO logical device name of the Cim-IO
client
IO_TIMEOUT_VALUE Timeout value used internally for detecting
failure of the Cim-IO server. Recommended
Setting +00:00:05.0
IO_FREQUENCY The frequency used for checking Cim-IO
server. The recommended setting is twice the
value of the IO_TIMEOUT_VAUE.

206 12 Cim-IO Redundancy


Field Description

IO_TAGNAME If this field contains a non-blank tag name,


the quality status of the returned value will be
checked to determine failure. A failure will be
reported for any value other than
CIMIO_STATUS_GOOD.
IO_FAILBACK ‘ON’ allows automatic switching from
Secondary to Primary if the Secondary fails.
‘OFF’ prevents switching back from Secondary
to Primary. Switching from Primary to
Secondary is always enabled. Set
IO_FAILBACK to ON unless you have some
other method of implementing fail back.
IO_STORE_ENABLE? NO/YES. When set to ‘YES’ prevents a switch
over during Store and Forward recovery.
Note: even though you will not lose incoming
data if your forwarding node crashes, you will
lose the ability to control the end device
because failover will still be pointing to the
failed node until it recovers and forwards its
data
IO_PRIMARY_DEVICE Unique Cim-IO logical device name for the
permanent connection between the
redundancy task and the primary Cim-IO
server.
IO_SECONDARY_DEVICE Unique Cim-IO logical device name for the
permanent connection between the
redundancy task and the Secondary Cim-IO
server
4 Restart the redundancy task.
The following table lists values that display the failover state and allow you to
control the failover process manually in real-time:
Field Description

IO_RESET This field is intended to provide a way to


switch between devices when IO_FAILBACK
is OFF. ‘Force Primary’ forces a reset to the
Primary device. ‘Force Secondary’ forces a
reset to the Secondary device. ‘Complete’
Indicates reset is complete or inactive.
Please note that a forced failover takes
precedence over everything else. As a result,
if you are receiving stored data from a node,
and you force a connection to another node,
the forward operation will be interrupted,
even if IO_STORE_ENABLE? = ‘ON’.
IO_ACTIVE_DEVICE Displays the current active device. This field
is only changes when a device switch occurs.
The field is only changed after a successful
switchover.
This field can be monitored for COS
activations for user-specific changeover logic.
IO_LAST_UPDATE Time of last switch over

12 Cim-IO Redundancy 207


Field Description

IO_PRIMARY_STATUS Current status of Primary device.


IO_SECONDARY_STATUS Current status of Secondary device

Sample Failover Times


The following sample times are given based upon tests run on Cim-IO Kernel
2004 (7.0.0). All times are listed in seconds. Detection times in the table
were measured to an accuracy of 1 second.
Timeout Frequency Detect Down Detect Up

0.1 0.1 9-11 1-3


0.5 1 9-12 1-3
2 5 10-14 2-4
5 10 11-14 2-4
15 30 16-35 10-16

If your network is lightly to moderately loaded and very reliable, and you are
more concerned about the timeliness of failover than network bandwidth, use
(Timeout=0.5, Frequency=1.0). The default value of (Timeout=5.0,
Frequency=10.0) allows for a reasonable detection rate with low bandwidth
usage.

Limitations of Redundancy
Cim-IO redundancy has the following limitations:
 Due to a limitation in Windows, the Changeover external task process,
TSK_DETECT, can only monitor up to 7 server pairs. If you need to
monitor more than 7 server pairs, you need to create a second instance of
the Changeover.exe external task (for example, TSK_DETECT2,
TSK_DETECT3, and so on), and then define the additional sets of 7 server
pairs or distribute the total number of server pairs among the processes
created.
 Cim-IO Store and Forward maintains its client status and configuration on
files stored on the Cim-IO server. The client will only maintain one set of
files, which means that configuration changes made to the active device
will not be replicated on the secondary device. When recovering data,
make sure you recover data from the currently active redundant system’s
store file. Do not recover data from the non-active redundant system’s
store file.
 If the cause of failure is a break in network communications, it is possible
for the active data collection device to be collecting data and the device
that has the broken network connection to be buffering redundant data
using Store and Forward. This may cause excessive loading on the data
collection system. On fail back, the redundant buffered data will be sent
back to the InfoPlus.21 Cim-IO client. Processing the redundant buffered

208 12 Cim-IO Redundancy


data will cause additional network traffic with an increased changeover
period.
 If the cause of failure is a loss of network connection, we also recommend
that the Cim-IO server and its Store and Forward components be shut
down and the appropriate Store and Forward files be deleted to prevent
duplication of data and scanning of unwanted points. The files that need to
be deleted are located in Aspentech\CIM-IO\io and include the
following:CIMIO_SCAN_LIST.<logical device>CIMIO_UNSOL_LIST.<logical
device>CIMIO_STORE_LIST.<logical device>CIMIO_STORE_<InfoPlus.21
node>.<logical device>

Note: If you wish for any outdated Store and Forward data to be ignored
automatically, set the environment variable SFRejectOldData to ON. This will
cause the Cim-IO clients to reject any data from older store files.

Manual vs. Automatic Fail Back


When the field IO_FAILBACK is set to ON, switching between the primary and
redundant server is automatic. If it is OFF, then the failover process will stay
with the secondary after a failover. For this reason, we recommend that when
using IO_FAILBACK=OFF, another fail back task be implemented to detect
whether the primary or the secondary server should be used.

Note: If you use IO_RESET to Force a Primary or Secondary, and the unit is
down, the Failover program will failover to the dead device, and then, if the
other device is alive, will switch back to it. There is currently no way to keep
the client pointed at the Primary unit when it fails. Setting IO_FAILBACK to
OFF will keep the client pointed at the Secondary unit even if it fails.

Cleaning Up Old Data


In the case of a network failure, your client may fail over to another node
while the node you were on goes into Store mode. The result is a large
quantity of unnecessarily stored data. If you turn on the feature “Enable
changeover standby cleanup ” (see the section “Cim-IO Environment
Variables” for instructions), the node in Store mode will have those items
removed from its scan and store lists, and the store file will be cleared. This
also ensures that your nodes are performing the minimum amount of
scanning that is necessary to maintain zero data loss – if both primary and
secondary nodes are active, only one will be collecting data.

Reactivation
The Reactivation of read transfer records in a redundant configuration allows
the wake-up of transfer records that appear to be dormant. Every time the
redundant configuration is monitored, the feature computes the time
difference between now and the last update time posted on each valid read
transfer record for the active node. If this time difference is greater than

12 Cim-IO Redundancy 209


twice the timeout value, the record in question is re-activated. Transfer
records of devices with record processing off, S&F disabled, or
IO_FREQUENCY=0 are not processed. Also if the timeout value is less than 15
seconds, this value is replaced for calculation purposes.

Enabling Diagnostic Messages


TSK_DETECT diagnostic messages can be enabled following these steps:
 Turn ON the Category Filter Application specific TSK_DETECT in the
Diagnostic Logging tab using Cim-IO Interface Manager or Cim-IO
Connection Manager.

 Turn ON Diagnostic Logging.


 Click the Save Configuration button.
 Restart the external task TSK_DETECT.
The TSK_DETECT diagnostic messages will be sent to the default log file or to
the file specified when the Application specific filter was configured.

210 12 Cim-IO Redundancy


An example of the output to the default log file CIMIO_DIAG.log looks like
this:

Alternate Diagnostic Logging Devices


If the parameter -DEBUG is entered in the textbox Command line
parameters definition of the definition of the IP.21 external task
TSK_DETECT, the next time the task is restarted, the parameter will also
enable the output of diagnostic messages

12 Cim-IO Redundancy 211


If nothing else is done, the messages will be sent to file specified in the
Output file textbox in the same definition of TSK_DETECT. An example of
the output look like this:

212 12 Cim-IO Redundancy


Alternatively, along with the parameter -DEBUG, the field
IO_LOG_MESSAGES in record TSK_DETECT can be configured so the
diagnostic messages are sent instead to a log record in IP.21. You would
enter a field pointer in that field, consisting of an IP.21 record name defined
by the definition record LogDef, or a similar record, followed by the field
name in the record which will push messages into the record’s normal repeat
area, LOGS_IN_MEMORY, if the record is defined with LogDef. This repeat
area contains one character field of 112 characters and one extended
timestamp field. For example, if record IP_LOG_RECORD, which is defined
by LogDef, is to be used, the string IP_LOG_RECORD LAST_LOG_ENTRY
must be then entered in field IP_LOG_MESSAGES.

An example of the output looks like this:

The LogDef definition record keeps the logs in memory by default. If you
want instead to persist the messages on disk, the field LOGS_ON_DISK
must be set to YES, the diagnostic messages will be then sent to the
repository specified in the definition header of LogDef, which by default is
TSK_DHIS.

12 Cim-IO Redundancy 213


Known Issues
The following issues have been noted in the Redundancy program:
 The redundancy task often connects to and disconnects from Cim-IO
server tasks. This causes the server tasks to log the connection and
disconnection, resulting in more informational messages in
CIMIO_MSG.LOG.
 Some Cim-IO servers require specific formats for some tags. Using an
IO_TAGNAME field to monitor a specific tag is not recommended for the
following servers:
o CIO_FIX_MTK : CimIO for iFix
o CIO_MOD_SAP : Cim-IO for Modbus

214 12 Cim-IO Redundancy


13 Cim-IO History Recovery

Warning: History Recovery should not be used if Store and Forward is being
used. This may result in duplicate data being stored in InfoPlus.21 history.

Overview
Note: History Recovery is only available with InfoPlus.21. If you are using
Cim-IO without InfoPlus.21, you can skip this chapter.
Under some circumstances, Cim-IO server software may be unable to collect
data from the device, even though the device is still operating. This situation
can result in a gap in history. Some examples of these situations are:
 The Cim-IO server was not working
 The Cim-IO server was unable to access the device
Some devices have the capability of storing data in their own historical
archives. If the server is capable of using this feature, Cim-IO History
Recovery can be used to recover lost data from such a device's history
system.
Unlike Cim-IO Store and Forward, the history recovery feature is available
only if the Cim-IO server supports historical data GET requests from
InfoPlus.21.

Note: History recovery is activated only when the Cim-IO history recovery
task is started either manually from the command line or when the database
is started. No recovery is attempted from a logical device if the server goes
down. Recovery is started the next time the history recovery task is started.

History Recovery Architecture


An example of the architecture of the history recovery system is diagrammed
in the “General Overview” chapter, along with the rest of the structure of the
Cim-IO interface. Depending on the particular Cim-IO server, if History
Recovery is supported, it may be accomplished through the server's DLGP and
DIOPs, or by means of a History Recovery DLGP and DIOP which run parallel

13 Cim-IO History Recovery 215


to the server DLGP and DIOPs. The History Recovery system consists of 2
modules on the Cim-IO client side:

cimio_c_histrec_init
The cimio_c_histrec_init.exe program initializes tags for history recovery
before the cimio_c_histrec.exe starts the actual history recovery.

cimio_c_histrec
The cimio_c_histrec.exe program performs the actual history recovery at
database startup after the initialization phase is performed by the
cimio_c_histrec_init.exe program.

History Recovery Configuration


This section describes how to configure the Cim-IO software to obtain
historical values from a logical device and update the database history. The
following elements of the configuration process are discussed below:
 Logical device definition file
 History Recovery external tasks
 Cim-IO device record
 Historical read transfer records

Logical Device Definition File


To use the History Recovery feature, the name of the history recovery service
must be included in the definition of the logical device in the
cimio_logical_devices.def file. This procedure is covered in the “Cim-IO
Installation and Setup” chapter.

Note: To determine the proper service name, refer to the user's guide for the
appropriate Cim-IO server.

History Recovery External Tasks


Only the cimio_c_histrec.exe program is defined as an external task in the
database whereas the cimio_c_histrec_init.exe program is not. The
cimio_c_histrec_init.exe program is configured to execute when the
database starts, before cimio_c_histrec.exe executes.
The procedure used to create the external task records is discussed in the
section titled “Cim-IO Task Definition Record” in the “Cim-IO Client for
InfoPlus.21” chapter.
To configure the cimio_c_histrec_init.exe program to run during database
startup, see the “Starting History Recovery” section.

216 13 Cim-IO History Recovery


Cim-IO Device Record
The “Cim-IO Device Record” in the “Cim-IO Records” chapter describes the
procedure used to configure the Cim-IO device records based on the definition
record IoDeviceRecDef.
Each device record contains fields of information related to history data
recovery. These fields are prefixed with IO_HIST* and they are:
 IO_HIST_GAP_REAL_VAL
 IO_HIST_GAP_INT_VAL
 IO_HIST_GAP_ASC_VAL
 IO_HIST_GAP_ASC_LEN
 IO_HIST_GAP_DISPLAY
The contents of these fields provide default floating-point, integer and ASCII
string values to the History Recovery task.
The values in these fields are inserted into data record historical occurrences
if there is no actual historical data in the logical device for the time period the
database was down. Certain fields can display statistical data about a History
Recovery as it runs. Review the definitions for these fields and enter default
historical values in these fields.

Historical Read Transfer Records


Historical read transfer records are used instead of read transfer records
when both current real-time values and historical values are to be obtained
from a logical device.
Use the IoGetHistDef definition record to create one or more historical read
transfer records for those points for which historical data is to be obtained.

Note: Information entered in the fields of historical read transfer records is


not accessed until the Cim-IO client and History Recovery tasks are restarted.

Recording Requirements for History Recovery


For History Recovery to occur, the following fields in the historical read
transfer records must be initialized as shown below:
 The IO_VALUE_RECORD&FLD field in the transfer record contains valid
Setcim data record and field names.
 The IO_DATA_HIST_REC&FLD field in the transfer record contains a valid
name and historical occurrence field name. The field name used to store
real-time values is always different from the name of the historical
occurrence value field. You must not leave this transfer record field blank
or use the normal data record real-time value field name.

13 Cim-IO History Recovery 217


Note: Data is always recovered into a history repeat area using Cim-IO
History Recovery mechanism. This bypasses all data processing, such as
averaging, filtering, data compression and other processing that could be
performed on tag values, if the values were being obtained in real-time,
instead of through History Recovery. Tag values that are recovered
through History Recovery are marked with a special status of Recovered
to indicate that the values were recovered through History Recovery and
no processing took place.
 Set the IO_DATA_HIST_RECOV fields in the transfer record to ON. The
default value is OFF; change this to ON if history data recovery is to occur.
 Set the IO_DATA_PROCESSING fields in the transfer record to ON if
historical values are to be obtained.
 For history recovery to occur, shut down the database longer than the
time period specified in IO_HIST_GAP_INTERVAL of the IoGetHistDef
record for the logical device. If the down time is less than the user-defined
historical gap time, no History Recovery occurs. See the sections entitled
Cim-IO Device Record and Cim-IO Historical Read Transfer Record for
more information.
Note: Some, but not all, AspenTech Cim-IO servers support historical
data read requests. Refer to the Cim-IO device-specific server user's guide
to see if the server component supports this feature. If the Cim-IO server
does not support History Recovery, do not start the Cim-IO History
Recovery tasks.

You can prevent the Cim-IO client tasks from getting real-time data when
the historical tasks take a long time attempting to get historical data from
a device that has none. The main Cim-IO client tasks do not start
processing real-time data until the History Recovery is complete.
Cim-IO History Recovery is supported only for aggregate data types:
 Single-precision floating-point numbers with quality (status) and
timestamp fields
 Double-precision floating-point number with quality (status) and
timestamp fields
 16-bit integers with quality (status) and timestamp fields
 32-bit integers with quality (status) and timestamp fields
Data value fields with no quality (status) and timestamp field are not
supported. ASCII data types are also not supported.

Starting History Recovery


Starting External Tasks
The order of startup is important and must be respected. The history
initialization recovery task, cimio_c_histrec_init, is executed first. After the
initialization, the cimio_c_histrec performs the history recovery. Other Cim-IO
tasks, such as cimio_c_client, cimio_c_async and cimio_c_unsol, are started
after cimio_c_histrec has been executed. This ensures that real-time data

218 13 Cim-IO History Recovery


collection does not start until history recovery is completed. Under normal
conditions, the History Recovery system is started automatically when the
database is started.
The following two examples show how to define the two History Recovery
programs in the InfoPlus.21 Manager. In the Defined Tasks panel in the
InfoPlus.21 Manager, the task name for cimio_c_histrec_init.exe is listed
before the task name for cimio_c_histrec.exe program. Even though the
cimio_c_histrec_init.exe has a task name, it is not defined as an external
task. Use the move up and move down buttons in the Defined Tasks box
to move the task names up or down in the list.

The cimio_c_histrec_init.exe Program Configured to Execute Upon


InfoPlus.21 Startup

13 Cim-IO History Recovery 219


The cimio_c_histrec.exe Program Configured as an External Task

Synchronizing Cim-IO Tasks


The cimio_c_histrec_init executable program stores the History Recovery
status value "IN PROGRESS" into the IO_DATA_RECOV_STATUS fields in
historical read records. This status is provided to the main Cim-IO client
tasks. The IN PROGRESS status indicates that the real-time values for the
points are not ready to be obtained. In this case, the main Cim-IO client task
start trying to get real-time values only after the main History Recovery task
has stored a different status in the transfer record IO_DATA_RECOV_STATUS
fields.

Activating History Recovery Task


Currently, the History Recovery task created from the cimio_c_histrec
executable file does not get activated by any record activation. This task:
 Runs after the cimio_c_histrec_init program runs.
 Finds the historical read transfer records in the database that meet the
criteria listed in the section on Historical Read Transfer Records.
 Collects historical data values for those points defined in the transfer
records.
 Changes the read historical record IO_DATA_RECOV_STATUS field values
 Goes to sleep.

220 13 Cim-IO History Recovery


At this point the next time the historical read transfer records are activated,
the main Cim-IO client task finds that the value in the
IO_DATA_RECOV_STATUS field is no longer set to "IN PROGRESS". The main
Cim-IO client tasks then begin to obtain the current real-time values from the
device.

Note: If Cim-IO Store and Forward is enabled, Cim-IO client tasks


automatically synchronize data from Store and Forward with data from history
recovery. At database startup, the server start-up time is obtained from the
server. History is recovered for the time period during which the server was
not running.

13 Cim-IO History Recovery 221


222 13 Cim-IO History Recovery
14 Troubleshooting

Frequently Encountered Errors


Some of the errors that are frequently encountered by Cim-IO users are
typically logged to the Cim-IO message log file. This following information
describes the common Cim-IO error messages you may receive and indicates
the appropriate action to take to respond to the error. See the “Error
Processing” chapter for more information.

Note: The error messages listed in this chapter are not specific to any
database or Cim-IO client or server.

Logical Device Not Found


Error Message
CIMIO_USR_GET_VIEW, Logical device is not defined
CIMIO_USR_VUEDEV_NOREC, Logical device not found

Description
These errors indicate the logical device that is specified by the user does not
exist in the logical device file. The logical device file is a list of mappings from
user-defined logical device names to actual TCP/IP node names and service
names. This file is called one of the following:
Program Files\AspenTech\CIM-IO\etc\cimio_logical_devices.def (Windows
Intel systems)

Response
Check this file to see if the logical device being accessed exists in the file.
Logical device names are not case-sensitive. This error applies to Cim-IO
client processes only.

14 Troubleshooting 223
Time-Out
Error Message
CIMIO_USR_GET_RECEIVE, Error receiving a GET reply from device
CIMIO_MSG_RECV_TIMEOUT, Time-out trying to receive a message

CIMIO_USR_PUT_RECEIVE, Error receiving a PUT reply from device


CIMIO_MSG_RECV_TIMEOUT, Time-out trying to receive a message

Description
These errors indicate the Cim-IO client process successfully connected to the
Cim-IO server process and sent a request. The reply did not come back from
the Cim-IO server process within the specified time-out period. One cause is
the time-out value is too low.

Response
Make sure the time-out value is at least 5 seconds and try again.
If this does not solve the problem, check to see if the Cim-IO server process
handling that type of request is running. For example, if this is a read
operation (GET request) and if the Cim-IO Simulation server is being used,
cimio_x_diop_read is the process that handles the GET requests. Make sure
this process is running.

Broken Connection
Error Message
CIMIO_DAL_RECEIVE_FAIL, Error receiving incoming message
CIMIO_MSG_RECV_NOPIPE, Connection was somehow broken (Broken
PIPE)
CIMIO_SOCK_CHK_BROKEN_PIPE, Connection was somehow terminated
System Error, errno=54 connection reset by peer

Description
These errors indicate the connection between two Cim-IO processes was
broken. Most likely, the reason is that one of the Cim-IO processes was
terminated or aborted.

Response
Verify that the Cim-IO clients and servers are running.

224 14 Troubleshooting
Socket Write Time-Out
Error Message
CIMIO_DAL_SEND_FAIL, Error sending message
CIMIO_MSG_SEND_WRITE, Error writing to socket
CIMIO_SOCK_WR_TIMEOUT, Write timeout expired

Description
This occurs if a Cim-IO server process could not send a Cim-IO message to its
destination within the specified time-out period.
Most likely, the source computer, destination computer or the network is
extremely loaded. For this reason, the Cim-IO process could not complete
sending the message within the time-out period.
This error could also happen if:
 There was a network problem (either momentary or permanent)
 The destination computer was abruptly turned off
 The network cable was pulled or broken

Response
Check which, if any, of these problems apply.
You may contact AspenTech and ask about the possibility of increasing
message send time-out.

No Connection
Error Message
CIMIO_DAL_SEND_FAIL, Error sending message
CIMIO_MSG_SEND_NOCONNECT, No connection is available for this
SEND

Description
These errors are typically logged by Cim-IO servers when there is no
connection path from the Cim-IO client process to the Cim-IO server process.
For example, when a Cim-IO server tries to send unsolicited tag values to a
Cim-IO client and does not find a connection to the Cim-IO client.
If the Cim-IO client is InfoPlus.21, this error indicates:
 The Cim-IO unsolicited client task (cimio_c_unsol) was not running on the
client computer.
 The Cim-IO unsolicited client task could be running, but could not connect
to the server for some reason.

14 Troubleshooting 225
Response
Check the Cim-IO message log file on the client computer for any errors
logged by the Cim-IO unsolicited client task.

Address In Use
Error Message
CIMIO_DAL_ACCEPT_FAIL, Error in accepting connection
CIMIO_MSG_ACCEPT_SOCK_CREATE, Error creating an inbound socket
CIMIO_SOCK_IN_BIND_FAIL, Error binding the service name to a
physical port
System Error, errno=67 Address already in use

Description
These errors occur if more than one instance of a Cim-IO server process is
started. Each Cim-IO server process uses a unique TCP/IP service name and
port number. When a second instance is started, the Cim-IO server process
cannot allocate the service name for its use. The service name is already in
use by the first instance of the process and this error is logged.

Response
Verify that the Cim-IO clients and servers are running.

Incorrect or Missing Service Name


Error Message
CIMIO_DAL_SEND_FAIL, Error sending message
CIMIO_MSG_CONN_SOCK_CREATE, Error creating an outbound socket
CIMIO_SOCK_OUT_GETSERV_FAIL, Error looking up service name
System Error, errno=9 Bad file number

Description
These errors occur if Cim-IO could not look up the service name for the Cim-
IO server process being started. Most likely, the service name is not in the
system services file.
The system services file is as follows:
 %windir%\system32\drivers\etc\services

Response
If the TCP/IP service name being used by the Cim-IO server process is the
last entry in the system services file, manually add a carriage return after the
service name and save the file. For example, using Notepad, click the cursor
at the end of the last line, press the Enter key and save the file.

226 14 Troubleshooting
Store File Will Not Unbuffer
Description
This problem could be due to the fact that the Cim-IO server system has two
network cards or is in a clustered environment and the system’s primary node
name is not the one used by the Cim-IO Async client for communicating to
the Store and Forward processes.

Response
The cimio_nodename.txt file is used to specify another node name when a
Cim-IO server system has two network cards and the system’s primary node
name is not the one used by the Cim-IO client.

To solve this problem:


1 Create the cimio_nodename.txt file on the Cim-IO server system in the
CIMIOETC directory.
2 Put all of the server’s secondary node names in this file, one per line.
3 Make sure the cimio_logical_devices.def file on the client contains the
appropriate secondary server.
Example:
Server Cimio_Bailey is running on node CIM5 (primary). This node is referred
to as CIM51 when referred to by the client and CIM52 when referred to by
another node.
The cimio_nodename.txt file on the server should contain the secondary node
names CIM51 and CIM52, and the cimio_logical_devices.def file on the client
should list:
CimBailey CIM51 Cimio_Bailey
That is, logical device CimBailey is defined to be the Cimio_Bailey service on
node CIM51, which is the node name for the server node, as seen by the
client.

Frequently Asked Questions


(FAQs)
I have a problem. What information will help Support
solve my problem more quickly and easily?
You should have the following information ready when contacting Aspen Tech Support
regarding Cim-IO related issues:
 The version number of Cim-IO on your client side (for example,
InfoPlus.21 system)
 The version number of Cim-IO on your server side (for example, CIMIO
server for X).

14 Troubleshooting 227
 The name and version number of your Cim-IO server program (for
example, “Cim-IO for Bailey version 6.9.0”).
 Any parameters you are specifying when running the Cim-IO server.
 Your services and logical devices configuration files on both your client
and server nodes.
 If you are encountering a runtime problem (for example, corrupt data,
servers crashing, and so on), the following additional information will be
helpful:
 A summary of what you are seeing on your computer and what actions or
situations trigger the problem (for example, “server crashes when trying
to write a NULL value”).
 Your CIMIO_MSG.LOG file in the LOG folder under CIMIOROOT on both
your nodes.
 If you were using Cim-IO 5.4 or later, a CIMIO_DIAG.LOG file showing the
incoming and outgoing messages would be helpful. You will need to turn
Cim-IO diagnostics ON and restart any process you would like to log.
 Your InfoPlus.21 snapshot may be requested, particularly if custom record
definitions are used. Historical archives are not needed.

I have decided to install a new version of Cim-IO. Is it


compatible with other versions?
Upgrading Cim-IO on a node will generally not affect its communication with
other nodes. All kernels 4.8 and higher are both backwards and forwards
compatible, however you may be unable to take advantage of certain features
unless both your client and server side have at least the version of the kernel
in which that feature was implemented. When upgrading the kernel on a node
containing Store files, you should stop Cim-IO after your store files have
forwarded, or stop Store and Forward and save a copy of your current store
files under a different name. Because of upgrades to Store and Forward,
some versions of Store and Forward store files are not compatible with newer
Store and Forward programs. To recover the data in these files, use the
Recover program.
Store File Type 0 1 2
Compatible Kernels Up to 5.2-5.5, 6 and up 6 and up
5.1 (non-Windows) (Windows)

I received and installed a newer version of Cim-IO. Do I


need to re-link all my existing Cim-IO interfaces?
The Cim-IO Library is a dynamic link library (DLL) that is loaded at runtime.
In this case re-linking your existing interfaces is not necessary.

Although I have upgraded my InfoPlus.21 system to the


most recent version of CIMIO, I choose to use an earlier
version of Cim-IO on my Cim-IO server system. Can I still
use Redundancy?
Yes.

228 14 Troubleshooting
We have been performing maintenance on one of our
devices, and I switched over to another Cim-IO server to
collect data. I switched back, but have a store file on the
second system. I’d like to recover the data in the second
system’s store file while still collecting data from the first
node. What is the best way to do this?
Use the Recover utilities to recover the data. See the “General Data Recovery
with the RECOVER Utility” section of this guide.

When using failover, a failed server connection is detected


and the Active device field changes to the appropriate
device but no data is being collected from the Active
device. Why isn’t Failover working?
Check the directory Aspentech\CIM-IO\io for files ending in '.LDV'. If these
files do not exist, you need to enable the re-scanning of Logical Devices.
Simply run Cim-IO Properties (found under CIMIOROOT\Code) and set
CIMIORescanLogicalDevices to “Redundant: Cim-IO Changeover used for a
Redundant setup”.

My TSK_DETECT record in InfoPlus.21 is not updating, or


changeover may not be working. Why?
In InfoPlus.21 Manager, make sure that your TSK_DETECT task is running
and is using the executable
Aspentech\InfoPlus.21\db21\code\cimio_c_changeover.exe. Make sure that
your CIMIOProperties property “CIMIORescanLogicalDevices” is set to
“Redundant: Cim-IO Changeover used for a Redundant setup”.

I’m using redundancy, but I don’t want to collect data


from multiple sources if at all possible (if I’m collecting
data from the Primary, the Secondary should not be
collecting data from the data source). When my active
node suffers a network failure and Changeover switches
to the other node, the previous node goes into Store and
Forward mode and tends to collect data even when the
other node is the currently active node. How can I fix
this?
Use CimIOProperties to set CimioChangeoverStandbyCleanup to “Use
Changeover Cleanup”. It will notify the non-active node to clean up its scan
lists and empty its store file once that node comes back up onto the network.

I ran CimIOProperties and it tells me that a number of my


settings are not in the registry. Why?
When running Cim-IO Properties for the first time you will be notified that
certain entries do not yet exist in the registry. Acknowledge these messages
by clicking OK to ensure that all required options are created. Note that they

14 Troubleshooting 229
will be created with the default values. Once the main Cim-IO Properties
window appears you can change any settings you wish.

I am encountering the message “Connection actively


refused by remote host”. Does this have anything to do
with socket security?
The “Connection actively refused” message indicates that no program is
currently attached to the socket number that you are requesting to connect
to. Either the program is not running, or your client and server sides have
mismatched “services” entries. If you are having a problem with socket
security, you should see the message “Connection terminated”, not
“Connection actively refused”, since the connection is accepted, and then
terminated.

I am encountering the message “Connection terminated


by remote host” when connecting my Cim-IO client to a
Cim-IO server, and the socket is connection is broken. Is
something wrong with my network or with the programs
themselves?
No, what is likely wrong is that the server node has Cim-IO Socket Security
enabled on it and is currently not letting your client node communicate with
it. Check the server node’s cimio_msg.log file to see if the connection was
terminated because of socket security. Check the server node’s socket
security configuration using CimioProperties to see if an incorrect node name
was specified, or if the node is incorrectly set to accept or reject nodes on the
list.

My Process Explorer plots show large, shallow grades


between points instead of the sharp spikes they should
be. I am using Unsolicited records to minimize the amount
of data sent back from these infrequently updating points.
How can I make my graph more accurate?
InfoPlus.21 uses a Boxcar Deadbanding approach to store points, and uses
linear interpolation between points. Cim-IO servers do not usually use Boxcar
Deadbanding to send back points to InfoPlus.21. In version 7.0.1, the setting
CIMIOBoxcarDeadbanding was introduced to add the boxcar deadband points
that are missed when using Unsolicited data records. Use CIMIOProperties to
set CIMIOBoxcarDeadbanding to ON to add these points.

Do I need to restart Cim-IO client tasks when I make


changes to the cimio_logical_devices.def file?
No. Use the CIMIORescanLogicalDevices parameter to force Cim-IO to rescan
your cimio_logical_devices.def file periodically.

230 14 Troubleshooting
If the Cim-IO server process goes down, do I need to
restart the Cim-IO clients after I restart the server
process?
No. A client will periodically attempt to reconnect to the server.

What version of Cim-IO do I need to have Store and


Forward capability?
Store and Forward was added in Cim-IO version 4.7.1. Both server and client
computers should have Cim-IO version 4.7.1 or later.
Do I need to place CIMIO-OPC on the same node as my OPC server?

No, however you need to make sure that the ID under which AsyncDLGP is
running has DCOM Launch and Access rights to both your OPC server and the
OPCEnum service. You also need to make sure that the Default DCOM
settings on your CimIO-OPC computer allow Access rights to the ID under
which the OPC server is running. DCOM permissions are most easily granted
to domain accounts, so running Cim-IO OPC’s AsyncDLGP program under a
domain account userid is recommended.

What is the order of installation when installing Cim-IO


interfaces?
Always install the Cim-IO core first and then the interface (Cim-IO server).

Does Cim-IO support protocols other than TCP/IP?


No.

Does Cim-IO support languages other than C?


No.

14 Troubleshooting 231
232 14 Troubleshooting
15 Error Processing

Message Log Files


Cim-IO Log File
When Cim-IO detects errors processing data, it writes messages to a log file,
named cimio_msg.log. This log file is located in the following directory:
Program Files\AspenTech\CIM-IO\log directory
When the cimio_msg.log file reaches a size of 1MB, the log file is copied to
CIMIO_MSG_BACKUP.LOG and deleted. A new cimio_msg.log file will then be
created to log the latest error.

Error Reporting
Cim-IO errors are reported in structures known as error blocks. An error block
consists of one or more errors reported by different parts of the Cim-IO
software for a single operation. Each possible error has an internal code and
facility number, an identifier and a description associated with it. They are
written to the log file in the following format:
<date - time>, Logged by <task name> on node <node name>:
<error id #1>, <error description #1>
<error id #2>, <error description #2>
. . .
<error id #n>, <error description #n>

Cim-IO Diagnostics Logging


In order to improve the troubleshooting capabilities of Cim-IO, a set of
configurable diagnostics have been added to Cim-IO. The diagnostics output
information about the actions of Cim-IO to one or more user-defined log files.
The diagnostics are configurable in that they use several filter types that allow
the user to control the diagnostics that will be output and the files to which
the diagnostics are written.
The following section describes how to configure the diagnostics and
illustrates some typical output.

15 Error Processing 233


Configuration Utilities
Two utilities are available to configure Cim-IO diagnostic logging: Cim-IO
Interface Manager and Cim-IO Connection Manager.
The figure below shows the Cim-IO Interface manager main screen when
started. Note the Diagnostics Logging tab is the 3rd tab from the left.

234 15 Error Processing


The figure below shows the Cim-IO Connection Manager screen when started.
Note the same Diagnostics Logging tab, now the 2nd tab from the left in
this form.

Cim-IO Diagnostics Logging can be configured separately in InfoPlus.21 Client


or Cim-IO Server computers. See the section “Cim-IO Diagnostics
Logging” The Cim-IO Interface Manager and the Cim-IO Connections
Manager provide the same diagnostics configuration tool. Diagnostics can be
easily turned on and off by using the third tab, Cim-IO Diagnostics
Logging. On the left hand side, enter the values you wish for your logging
session. Click on any of the fields on the right hand side and click
Add/Update to log by application name, log category, CIMIO logical device,
log message ID number, or task name.
Extended Print Option for ASCII Data in Diagnostic Files By default
diagnostic files showing ASCII values in transfer records display a single line
containing the first 256 characters associated with each ASCII value. If the
key value HKLM\Software\Aspentech\CIM-IO\ExtendAsciiValuePrintOption of
type DWORD is defined in the Windows registry with a value of 1, two
additional lines will be printed for each ASCII value: the 1st additional line
containing the ASCII value characters in hexadecimal format and the 2nd
additional line containing a ruler showing the byte count for the characters
printed. This option aids to identify control characters being transmitted as
part of an ASCII value.

Diagnostic file extract example showing standard ASCII values

15 Error Processing 235


Example using extended print option for
ASCII values Diagnostic Filter Types
Diagnostic filters allow messages to be identified based on a number of
factors. These filters provide the primary mechanism to control the diagnostic
system. This control includes the following:
 Choosing the diagnostics that are output. Normally only a subset of all
possible diagnostics is required.
 Choosing the file to which the diagnostics are written. In many cases, it
may be desirable to write diagnostics to multiple files to improve
readability of the output.
The current value of some filters will be defined by the state of the program
that is writing the diagnostic. An example of this would be which Cim-IO
logical device the message is related to, where device is a filter type. Other
filter types used to identify a message are defined with the message and are
independent of the current state of the program. There are five basic filter
types that can be used to control diagnostic output:
 Device— Defined by current state of program
 Application — Defined by current state of program
 Task — Defined by current state of program
 Category — Defined with message
 ID — Defined with message
The following sections describe these filter types and how their values are
determined.

Logical Device
In Cim-IO, a logical device represents an external data source with which a
Cim-IO client application communicates. Since multiple devices may be active
at a site, filtering based on device allows the user to limit additional
diagnostics to a selected logical device. In the case of diagnostics generated
by programs such as Cim-IO clients, messages are generic and not associated
with a specific device. In this situation, a diagnostic may become associated
with a device if the client application has been programmed to set the device
filter type through the diagnostics API (Application Programming Interface).
In other cases, such as diagnostics generated by a Cim-IO server, all
diagnostics generated will be specific to the device to which the server has
been assigned.
The following section lists different types of Cim-IO programs and describes
how the device filter will be applied in each case.

236 15 Error Processing


Cim-IO Program
Description

Cim-IO Server A Cim-IO server instance is associated with one device. A


server will only log diagnostics if any device filtering that is
applied includes its device. However, even if no device filtering
is applied, Cim-IO servers may log diagnostics based on other
filter settings.
InfoPlus.21 Clients InfoPlus.21 client tasks are configured through InfoPlus.21
and are always associated with a specific device. In the case
where multiple devices are accessed by the InfoPlus.21
system, a separate set of client tasks will be configured for
each device. Therefore, any set of InfoPlus.21 client tasks is
only associated with a single device. That is, if device filtering
is active, then only InfoPlus.21 clients’ tasks configured for
these devices will log diagnostics.
InfoPlus.21 Store These are like the InfoPlus.21 client tasks in that a set of
and Forward Store and Forward tasks are assigned to a single logical
device. Therefore, device filtering has the same effect on
these as it does on InfoPlus.21 client tasks. Any one set of
Store and Forward tasks is associated with a single device.
Cim-IO Clients Cim-IO client tasks such as DMCplus are different from the
previous program types in that they may actively
communicate with multiple logical devices. The current device
for a client will normally be undefined unless the client has
been programmed to specify a device through the diagnostics
API.

Application
An application represents a set of related programs. By selecting a specific
application to filter messages, the user will be able to eliminate messages
generated by programs that are not of interest. Current applications include:
Program Description

InfoPlus.21 Clients The three InfoPlus.21 client tasks have been assigned the
application name IP21CLIENT.
InfoPlus.21 Store The three InfoPlus.21 Store and Forward applications have
and Forward been assigned the application name IP21SF.

Other applications can be assigned to a specific application filter name


through the diagnostic API. This could include Cim-IO clients such as DMCplus
and Cim-IO servers. Unless the application has been modified to specifically
set its diagnostic application filter, this will be undefined.

Task
A task is a single active program that can be uniquely identified. For
messages to be filtered for only a single task, the task must be able to
identify itself. A typical example of this would be the DLGP program for a Cim-
IO server. By default, each task is identified by the Cim-IO service name it
uses. In the case of Cim-IO servers, this represents the actual TCP/IP service
to which they have been assigned. In the case of Cim-IO clients, the service
name is a name by which the program is identified. For example, in the case

15 Error Processing 237


of InfoPlus.21, the Cim-IO client tasks are normally assigned meaningful
names such as TSK_MSIM which is probably acceptable when specifying a
task name for diagnostics configuration. Other clients, such as DMCplus, use
a less meaningful Cim-IO service name to identify themselves. However, this
default task name can be overridden through the diagnostic API.

Category
Diagnostic messages will be grouped into categories that represent the
different types of information to be logged. This will allow the user to focus on
a specific type of information such as tag lists in messages. The current
categories that supported are:
Category Description

Socket This refers to information about the low-level sockets being used by
Cim-IO clients and servers to communicate. This includes changes in
connections between Cim-IO servers and clients, data transfer
between applications, and errors encountered at the socket level.
Logic This refers to diagnostics that describe what actions a Cim-IO client
or server task is taking. By default, only the InfoPlus.21 client and
Store and Forward tasks will log messages of these types. However,
custom clients and servers may also be coded to log this type of
message through the diagnostic API.
Message This refers to the actual content of Cim-IO messages being passed
between client and server. Because there are many different types of
messages and the amount of information contained in a message can
be quite large, additional filtering can be applied to control what
messages and how much of the message content is to be logged. The
following section describes how message category filters are defined.

Applications may define their own categories and use these to filter messages
of a certain type. This is easily done through the diagnostics API.

Message Category
When specifying the message category filter, there are three parts that must
be specified:
 Detail
 Message Type
 Transaction Type

Detail
This defines how much detail is to be logged about a message. The following
can be specified.
 Header — Log only the standard Cim-IO message header which is
common to all Cim-IO messages.
 Content_Header — Log the Header and any content specific header
information. Messages such as Get requests will normally include a
content header.

238 15 Error Processing


 Content — Log the Header, Content_Header and the actual Information in
the messages. For messages such as Get requests, this would include the
list of tags and information related to the tags such as data types.

Message Type
This defines the type of Cim-IO message that should be logged. These
include:
 Req — This is a request from a Cim-IO client to a Cim-IO server to
perform some action. The specific action is specified by the Transaction
type.
 Reply — This is the response to a request that a Cim-IO server will send
to a client.
 Notif — This is a notification, such as a disconnect, which a client will send
to a Cim-IO server. The difference between this and a request is that the
server will not send a reply.

Transaction Type
This defines an action a client may request a server to perform. The following
does not include all possible transaction types as some are specific to the
Cim-IO Manager service and are not normally of interest when monitoring a
typical server or client application.
 Get — Get current values for list of tags.
 Stopget — Client is no longer getting values for a list of tags previously
defined in a Get request.
 Gethist Get history data for list of tags.
 Put – Put values for list of tags.
 Stopput — Client is no longer putting values for a list of tags previously
defined in a Put message.
 Decl — Declare a list of tags for unsolicited processing.
 Uns — An unsolicited reply with values for one or more tags that were
previously declared in a Decl message.
 Canc — Cancel unsolicited processing on a list of tags.
 Shut — Shut down server.
 Connect — Initial connection to a server.
 Disconnect — Client is disconnecting from server.
 Ack — Used only by Store and Forward. It is an acknowledgement
message from one of the InfoPlus.21 client tasks telling the Forward task
that it has received a forwarded message. This is used for flow control.
 Ping — A message that can be sent by a client to check the health of a
Cim-IO server.
The actual format for specifying a message category is shown next.
Message – Detail - Message Type - Transaction Type
The three parts are separated by the ‘-‘ character. For example, if you want
to specify message content for all Get requests, the message category would
be specified as:

15 Error Processing 239


Message - Content - Req-Get
Wildcards can be used for any one or all of the three parts. For example, the
following would specify message content for all requests:
Message - Content - Req - *

ID
The syntax of this filter provides granularity that allows narrowing down the
scope of the data to be logged using IDs specific to certain entities in Cim-IO.
The 4 interpretations of this filter are condensed on the following table
Syntax Description

unique integer number Each diagnostic is identified by a unique integer


number, which will be logged with the diagnostic.
The primary use of the ID filter is to disable
diagnostic messages that are of no interest. More
than one diagnostic id can be specified in the line
, separated by commas
Lx-y=ON|OFF The ID filter L narrows the scope of the Message
Category messages explained above. Each
message is associated with a specific list ID. The
ID filter L allows the user to specify a range of
messages based on a lists range. More than one
ID filter L can be specified. A range of lists can
consist of 1 or more lists. The lists are defined
from list ID x up to list ID y and can be are either
ON or OFF. In this context, x and y are integer
numbers (y > x) which are assigned by the Cim-
IO client. If the lists correspond to IP.21 transfer
records, x and y would be the actual RECID of
the transfer records
Lx=ON|OFF List ID x is either ON or OFF. This syntax allows
to specify a single list.
Lx-=ON|OFF This range syntax specifies all messages of all list
IDs that start with list ID x. The lists (and
therefore their messages) can be either ON or
OFF
L-y=ON|OFF This range syntax specifies all messages of all list
IDs preceding and including list ID y. The lists in
the range can be either ON or OFF
Ox-y=ON|OFF The ID filter O narrows the scope of the
occurrences to be printed or omitted for every
message that it is output. A message can contain
any number of occurrences, one per tag in the
list, for DMCplus for example this could mean
15K+ occurrence. The ID filter O allows the user
to specify one range of occurrences that will be
applied to all messages specified in the Message
Category. More than one ID filter O can be
specified. A range of occurrences in this syntax
consist of occurrence number x (1 or higher) up
to occurrence y, where y >x. The range could be
either ON or OFF.

240 15 Error Processing


Syntax Description

Ox=ON|OFF This range syntax represents a single ID x which


is either ON or OFF
Ox-=ON|OFF This range syntax represents all occurrences in
message starting with occurrence ID x, which are
either ON or OFF
O-y=ON|OFF This range syntax represents all occurrences
preceding and up to occurrence ID y, which are
either ON or OFF
Tz=ON|OFF Each occurrence in a message is associated to a
given tag name. The ID filter T allows the user to
narrow the scope of occurrences in all messages
specified in the Message Category whose tag
name contain the string z. The message line can
be either ON or OFF

Diagnostic Configuration

Configuration File Format


Configuration of the Cim-IO diagnostics is through a simple keyword driven
text file named cimio_diag.cfg. The file is stored in the ETC directory within
the standard CIM-IO directory structure.
The configuration file contains the following three primary types of keywords:
 Diagnostic filter enable/disable switch. For each filter type, the user will be
able to identify a list of filter values whose diagnostics are to be enabled
or disabled.
 Diagnostic filter output file. For each filter type, the user will be able to
identify a list of filter values and define an output file for these
diagnostics.
 Diagnostic system configuration. These control the overall behavior of the
diagnostics.

Specifying Filters
The following examples illustrate the format for keywords of type 1 and 2.
Keyword Format Description

Device, IOCM50S = ON This line causes all diagnostics


associated with the device IOCM50S
to be output.
Device_Log, IOCM50S = cm50s.log This line causes call diagnostics
associated with the device IOCM50S
to be logged to a file named
cm50s.log.
Category, Message-Content-Req-Get = ON This line causes content for all Get
requests to be logged.
Category,Socket,Logic = ON This line illustrates that multiple

15 Error Processing 241


Keyword Format Description
filter values for a specific filter type
may be specified on a single line.
This applies to log file definitions as
well.
Category, Socket = ON These two lines have the same
Category, Logic = ON effect as the previous line but
illustrate that a filter type (in this
case Category) may be defined
multiple times with different filter
values. This applies to log file
definitions as well.

The following lists the complete set of filter definition keywords available in
the configuration file.
Device, xxx[,,,,] = ON/OFF
Application, xxx[,,,,] = ON/OFF
Task, xxx[,,,,]= ON/OFF
Category, xxx[,,,,] = ON/OFF
ID, xxx[,,,,]= ON/OFF
ID, Lx-y= ON/OFF
ID, Ox-y= ON/OFF
ID, Tx= ON/OFF
Device_log, xxx[,,,,] = xxx.log
Application_log, xxx[,,,,]= xxx.log
Task_log, xxx[,,,,] = xxx.log
Category_log, xxx[,,,,]= xxx.log
ID_log, xxx[,,,,] = xxx.log
Where xxx= A valid filter value[,,,,]= Additional optional filter valuesxxx.lo
= A user-defined output file

Specifying Diagnostic System Configuration


The following keywords are available to control the behavior of the
diagnostics system:
Keyword Description

File_Revision This is the revision of cimio_diag.def.


Diagnostic_Logging This can be used to control whether any diagnostics
are output. The possible values are:
ON — Log all configured diagnostics.
OFF — Do not log any diagnostics.
DISABLE — Permanently turn off diagnostics and do
not rescan cimio_diag.cfg for changes.
When this is set to OFF or DISABLE, it overrides how
the filters are configured.

242 15 Error Processing


Keyword Description

Maximum_Log_Size The maximum size that any diagnostic output file


can grow to in megabytes (MB). If the file exceeds
this size, it is copied to a _bck file and a new one is
started.
Reload_Interval This specifies in seconds how often the
cimio_diag.cfg will be checked for changes and it
will be reloaded if the file has been changed.
Thread_Lock_Timeout In multithreaded applications, this controls how long
one thread will wait for another to update the
diagnostics control structures before timing out. If a
timeout occurs, an error will be logged to
cimio_msg.log and the diagnostics will be disabled
to prevent program crashes.
Logfile_Lock_Timeout This is the time in seconds a program will wait to
obtain a lock on a diagnostic output file before
timing out. If the program cannot get a lock, it will
still log the diagnostic.
Default_Log All diagnostics that have not been configured to go
to a specific file will go to this file. The default is
cimio_diag.log.

Configuration File Interpretation

Diagnostic Enabling and Disabling


The logging of any one diagnostic is controlled by all filter types. That is,
when a message is to be logged, the diagnostic software will check to see
which of the filter values associated with the specific message are ON or OFF.
The following logic will determine if the message will be logged:
 If any of the filter values are set to OFF for the diagnostic, it will not be
logged even if some other filter values are set to ON.
 If no filter values are set to OFF and at least one filter value is set to ON,
the diagnostic will be logged.
 If no filter values have been set to ON or OFF, the diagnostic will not be
logged.
The following example should help clarify this:
Device, IOIP21 = ON
Device, IOCM50S = OFF
Category,Socket = ON
In this example a diagnostic of the Category type Socket would only be
logged if the Device associated with the message were IOIP21. This allows
the user to focus on Socket type diagnostics for only one device.

Diagnostic Output
As with diagnostic enabling, there will likely be conflicts when configuring
where messages are to be logged. Because each diagnostic is associated with
filter values for multiple filter types, it is possible that a diagnostic may be

15 Error Processing 243


configured to go to two or more output files. The following example illustrates
this:
Device_log, IOCM50S = cm50.log
Category_log, Socket = socket.log
In this case, a diagnostic with Category filter type of Socket and Device type
IOCM50S would be logged to both files.
In the case where no output file has been defined for a diagnostic, it will be
written to the file defined by the Default_Log keyword in the cimio_diag.cfg
file.

Configuration File Loading


The configuration file will be loaded by all applications that use the Cim-IO
kernel, including both server and client applications. The file will be loaded
initially when the application starts and reloaded at the frequency defined by
the keyword Reload_Interval, if the file has changed since the last time the
file was loaded. If the file has not changed, it will not be reloaded.

Performance Considerations
Having diagnostics enabled may considerably slow down an application
primarily due to the amount of data that may be written to the output files.
Even if the keyword Diagnostic_logging is set to OFF, there will be overhead
due to periodic checking of the cimio_diag.cfg file. When setting up
diagnostics consider the following:
 If you have no interest in diagnostics, set the keyword
Diagnostic_Logging to Disable. This eliminates all overhead due to
diagnostics.
 Do not make the Reload_Interval too short.
 If you know all applications are single threaded, set the
Thread_Lock_Timeout to zero (0). This will turn off thread locking.
 If possible, direct diagnostics for each task to its own file using the logging
filter Task_Log. By doing this, no two tasks will be writing to the same
output file, which means no file locking will be required. You can then set
the keyword Logfile_Lock_Timeout to zero (0), which will turn off
output file locking.

Sample Configuration File


The following lists a sample cimio_diag.cfg.
File_Revision = 1 ! Should always be the first line in file.
!
! On = Log diagnostics that are enabled.
! Off = Turn off diagnostics but continue to scan file
cimio_diag.cfg for changes.
! Disable = Disable diagnostic logging for the life of process.
Do not rescan cimio_diag.cfg.
! This mode minimizes overhead.
!
Diagnostic_Logging = On ! On/Off/Disable
!

244 15 Error Processing


! The maximum size in MB that diagnostic output files can grow
to.
! Once they reach this size, they are copied to a "_bck" file and
a new
! one is started.
!
Maximum_Log_Size = 2 ! Size in MB
!
! Frequency in seconds between rescans of cimio_diag.cfg file.
! File will only be reloaded if it has been modified since the
last
! time it was read.
!
Reload_Interval = 10 ! Seconds
!
! Timeout for thread locking. If only single threaded
applications are running,
! set to 0 to disable thread locking and improve performance.
! This cannot be changed from zero to non-zero while program is
active.
!
Thread_Lock_Timeout = 10 ! Seconds
!
! Timeout for diagnostic output file locking. If each task has
been assigned its own
! diagnostic log, file set to 0 to disable file locking and
improve performance.
! This cannot be changed from zero to non-zero while program is
active.
!
Logfile_Lock_Timeout = 10 ! Seconds
!
! Default log file. All diagnostics not directed to a specific
file will go to this file.
!
Default_Log = CIMIO_DIAG.LOG
!
! This describes the format for defining CIM-IO messages that are
to be logged.
! Wild cards are allowed.
!
!!Category, Message-DETAIL-MSGTYPE-TRANTYPE
!!Category, Message - HEADER/CONTENT_HEADER/CONTENT -
REQ/REPLY/NOTIF -
!! GET/GETHIST/PUT/DECL/CANC ...
!
!!Category, Message-Header-*-Get = On ! This would log the
message headers for all get requests and replies.
!
! This will redirect all diagnostic messages from the Task
program to a file named proga.log
!
!!Task_log,PROGA = proga.log
!
! The following will log all current diagnostics
!
Category, Socket = ON

15 Error Processing 245


Category, Message-Content-*-* = ON
Category, Logic = ON

Using Diagnostics Logging Tab


Both Graphical User Interface programs Cim-IO Interface manager and CimIO
Connection Manager allow to define strategies for CIM-IO Diagnostics
Logging. They provide the same capabilities and keywords used in the
Configuration File Format.

The window showing the Cim-IO Diagnostics Logging.Tab

The keywords, used for controlling the behavior of the diagnostics system,
are listed on the left-hand column. The possible values for Diagnostics logging
can be selected from the drop-down menu and the values, for the remaining
keywords, can be entered in their respective text fields.
The right-hand pane shows the various filter types: Application,
Category, Device, ID and Task.

Adding a Filter type


The procedure for adding filter types Application, Device, ID and Task are
similar. There are two ways to open the filter window, either right-click on it
and select ‘Add/Update <FILTER TYPE>’ or select it and click on the
Add/Update button. The screen below shows and example of adding a
device. A device in this context represents a logical device or connection with
which a Cim-IO client communicates. Since multiple devices may be active at
a site, filtering based on device allows limiting diagnostics to the selected
devices.

246 15 Error Processing


The drop-down menu contains a list of the logical devices Cim-IO clients can
communicate with. Radio buttons are used to turn the filter On or Off. After
the filter type is selected, the Separate Log File? check box becomes
available and if selected, a log file name (for example, <LOGICAL
DEVICE>.log) will be entered in to the Log File text field. Clicking the
Add/Update button completes the process and the entries are placed in the
list. The window below shows the entries in the list:

Clicking OK completes the process.

15 Error Processing 247


The procedure for adding Category is a little different. It consists of three
tabs:
Logic/Socket: Diagnostics for actions being taken by the Cim-IO tasks and
information about sockets being used for communication can be set to
ON/Off. Log files can also be defined.

248 15 Error Processing


Message: The required message detail, type and transaction type can be
defined and added by clicking the New button or by clicking on the Message
filter in the list displayed by default on the window.

15 Error Processing 249


We are going the reuse the Message on the list by clicking on it and then
redefine it as shown in the window below. After clicking the Update button,
the Message filter on the list is modified to show the new set of selections:

Application Specific: The application category can be selected or manually


entered for the drop-down menu and a separate log file may be defined.
The following is a list of Application specific filters and the description of the
area where they are used:

Application Specific Filter Description

CIMIOMANAGER Cimio Manager service diagnostics


CimioOpcSendThread OPC DA Watchdog Monitoring diagnostics
CIMPDI CIMIO for Process Data diagnostics
KERNEL_DEBUG Kernel level debug diagnostics
LOGIC Kernel logic diagnostics
OPCLOG OPC DA diagnostics
PERFORMANCE Performance diagnostics
SOCKET Other Socket specific diagnostics
TSK_DETECT Redundancy Monitor diagnostics
WATCHDOGREADDATATYPE OPC DA Watchdog Monitor diagnostics

250 15 Error Processing


15 Error Processing 251
ID Specific Filters: The ID filter must be manually entered in the box
provided, then the filter can be set ON or OFF and a separate log file may be
defined.

Updating Filter Types


The procedure for performing updates is similar. You click and select one of
the filters on the list to proceed to modify it. The Remove Selected button is
used to perform required changes to the list. Also, the various settings for the
filter types such as on/off can be performed. Clicking the Add/Update button
and OK completes the procedure.

Saving Configuration
After all the required diagnostics settings are made, the Save Configuration
button saves all the settings and ensures that the configuration is activated.

252 15 Error Processing


The window showing Cim-IO Diagnostics Logging Configuration.

Diagnostic Output Format


The output format of the diagnostics is like the format of messages logged by
the normal Cim-IO messaging. This includes a header line with a Date/Time
stamp, the diagnostic category, the diagnostic ID, the name of the Task
logging the message, and the node on which it is running. One or more lines
containing the actual diagnostic information follow this.
The following socket category diagnostic shows what a typical diagnostic
would look like:
<** Fri Feb 22 15:08:56 2002, SOCKET Diagnostic 1017 by
CIMIOSIMUL on node COMPXXX: **>
Socket write completed successfully
Number of bytes written = 412

Socket number = 688


Message category diagnostics may contain up to 3 sections. These include the
message header, which is common to all message types and transaction
types, a content header that is specific to the transaction type, and the actual
message data. The following shows an example of a Get request requesting
data for a single tag.

15 Error Processing 253


<** Fri Feb 22 15:09:46 2002, MESSAGE Diagnostic 2187 by
CIMIOSIMUL on node JBC550: **>

+------------------- Message Header ----------------------+


Message Type = REQ Transaction type = GET Priority = 1 Trans no =
799904461
Message Size = 580 Header Size = 292 Template Size = 168 Data
Size = 120
Message Source Service = CIMIO_T_API-226016165367 Node =
COMPXXX
Message Destination Service = CIMIOSIMUL Node = COMPXXX
Request Source Service = CIMIO_T_API-226016165367 Node =
COMPXXX
Reply Destination Service = CIMIO_T_API-226016165367 Node =
COMPXXX

+------------------- Content Header ----------------------+


Listid = -1, Num Tags = 1, Device= IOSIMUL, Unit= 1, Acc Type =
SYNC, Intid Flag = 0, Freq = 100

+------------------- Message Content ---------------------+


Tag IntID1 IntID2 Type DType Size
---- --------------------------------------- ------- ------- ---
-- ----- ----
1 TEST.PV - - REAL REAL 4
---- --------------------------------------- ------- ------- ---
-- ----- ----

Error Definitions
Error Definition Files
The error definitions, consisting of codes and their related identifiers and
descriptions, are listed in files named cimio_*.def in the Program
Files\AspenTech\CIM-IO\etc directory. There is a separate file for each
facility, as shown below:

254 15 Error Processing


Error Definition File Name Description

Cimio_c_client.def Main client error definitions


Cimio_c_histrec.def History recovery client error definitions
Cimio_c_unsol.def Unsolicited client error definitions
Cimio_dal.def Device access layer error definitions
Cimio_k_dconv.def Data conversion error definitions
Cimio_k_err.def Error facility error definitions
Cimio_k_mgmt.def Cim-IO manager management Windows
Service error definitions
Cimio_k_msg.def Message transmission error definitions
Cimio_k_socket.def Socket error definitions
Cimio_k_thread.def Thread handling error definitions
Cimio_k_usr.def User functionality error definitions
Cimio_sf.def Store and forward error definitions
Cimio_t_api.def Test utility error definitions

The errors contained in these files are listed in the following sections.

Cim-IO Errors Sorted by Error


Identifier
Cim-IO Error Identifier Code Description

CIMIO_CLIENT_HISTREC_GET_STORE_I 43001 Error obtaining Store and


NFO _SEND_MSG Forward information from
scanner
CIMIO_CLIENT_MAIN_READ_CFG_ 41013 Error reading Store and
CIRCULAR Forward configuration circular
CIMIO_CLIENT_MAIN_READ_CFG_ENAB 41010 Error reading Store and
LE Forward configuration enable
CIMIO_CLIENT_MAIN_READ_CFG_ 41011 Error reading Store and
MAXPERIOD Forward configuration
maximum period
CIMIO_CLIENT_MAIN_READ_CFG_MAXS 41012 Error reading Store and
IZE Forward configuration
maximum size
CIMIO_CLIENT_MAIN_READ_DEVICE_ 41001 Error reading device processing
PROCESSING field in device record
CIMIO_CLIENT_MAIN 41014 Error sending or receiving
_SEND_CFG_SEND Store and Forward
configuration message
CIMIO_CLIENT_UNSOL_FIND_GET_NO_ 42010 Error finding IoGetDef record
DEF definition in the database
CIMIO_CLIENT_UNSOL_FIND_GETHIST_ 42011 Error finding IoGetHistDef
NO_ DEF record definition in the
database

15 Error Processing 255


Cim-IO Error Identifier Code Description

CIMIO_CLIENT_UNSOL_FIND_LONGTAG 42012 Error finding IoLongTagGetDef


_ GETHIST_NO_DEF record; database upgrade may
be needed
CIMIO_CLIENT_UNSOL_FIND_LONGTAG 42014 Error finding IoLongTagPutDef
_ PUT_NO_DEF record; database upgrade may
be needed
CIMIO_CLIENT_UNSOL_FIND_LONGTAG 42016 Error finding IoLongTagUnsDef
_ UNS_NO_DEF record; database upgrade may
be needed
CIMIO_CLIENT_UNSOL_FIND_PUT_NO_ 42013 Error finding IoPutDef record
DEF definition in the database
CIMIO_CLIENT_UNSOL_FIND_UNS_NO_ 42015 Error finding IoUnsolDef record
DEF definition in the database
CIMIO_CLIENT_UNSOL_UPDATE_READ_ 42004 Error finding the data record in
DATA_RECORD the database
CIMIO_CLIENT_UNSOL_UPDATE_READ_ 42003 Error reading the type of the
TYPE data record from the database
CIMIO_CLIENT_UNSOL_UPDATE_READ_ 42002 Error reading values from the
VAL database
CIMIO_CLIENT_UNSOL_UPDATE_WRITE 42001 Error writing values to the
_ VAL database
CIMIO_DAL_ACCEPT_FAIL 8024 Error in accepting connection
CIMIO_DAL_ADJUST_TPL 8045 Error adjusting historical data
template
CIMIO_DAL_ADJUST_TPL_GETTPL 8046 Error getting template
information while adjusting
CIMIO_DAL_BLD_GETHISTREP_SZ 8044 Error obtaining historical data
template size
CIMIO_DAL_BLD_GETREP_SZ 8003 Error obtaining data template
size
CIMIO_DAL_BLD_MSG_BAD_ARG 8057 Invalid argument in
CIMIO_SERVER_BLD_MSG call
CIMIO_DAL_BLD_MSG_INVSEQ 8058 CIMIO_SERVER_INIT needs to
be called first
CIMIO_DAL_BLD_MSG_NOMEMORY 8059 malloc failed in
CIMIO_SERVER_BLD_MSG
CIMIO_DAL_BLDREPLY_FAIL 8019 Error building a reply message
CIMIO_DAL_BLDREPLY_NOMEMORY 8020 Out of memory building a reply
message
CIMIO_DAL_CANCEL_THREAD 8073 Error canceling thread
CIMIO_DAL_CONNECT_CONNECT 8083 Error connecting to service
CIMIO_DAL_CONNECT_NODE 8080 Error in node name
CIMIO_DAL_CONNECT_SEND 8082 Error sending CONNECT
notification to service
CIMIO_DAL_CONNECT_SERVICE 8081 Error in service name
CIMIO_DAL_DATATYPE_FAIL 8014 Error obtaining size of the
template

256 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_DAL_DATATYPE_INVDT 8029 Invalid Data Type specified in


Data Template
CIMIO_DAL_DATATYPE_NOFIELD 8010 Template does not have any
elements
CIMIO_DAL_DATATYPE_NOTAGS 8011 Invalid tag number
CIMIO_DAL_DATATYPE_NOTFOUND 8009 Requested item was not found
in the given template
CIMIO_DAL_DATATYPE_TAGSZ 8012 Invalid tag size location
CIMIO_DAL_DATATYPE_TPL 8013 Invalid template
CIMIO_DAL_DATATYPES_DSIZE 8066 Error obtaining Size of the
Template
CIMIO_DAL_DATATYPES_NOFIELD 8065 Template does not have any
element
CIMIO_DAL_DATATYPES_TAGSZ 8062 Invalid tag size location
CIMIO_DAL_DATATYPES_TPL 8063 Invalid Template Argument
CIMIO_DAL_DATATYPES_TYPES 8064 Invalid DataTypes Argument
CIMIO_DAL_DEVICE_DATATYPES_DSIZ 8070 Error obtaining Size of the
E Template
CIMIO_DAL_DEVICE_DATATYPES_NOFI 8069 Template does not have any
ELD element
CIMIO_DAL_DEVICE_DATATYPES_TPL 8067 Invalid Template Argument
CIMIO_DAL_DEVICE_DATATYPES_TYPE 8068 Invalid DeviceDataType
S argument
CIMIO_DAL_DSIZE_FAIL 8021 Error obtaining size of the
template
CIMIO_DAL_EXIT_THREAD 8072 Error exiting thread
CIMIO_DAL_GETHOST 8008 Error getting node name
CIMIO_DAL_GETITEM_EXCPARAM 8027 Parameters 1 and 2 can not be
non-NULL at the same time
CIMIO_DAL_GETITEM_FAIL 8022 Error obtaining information
about an item
CIMIO_DAL_GETITEM_INVITEM 8023 Invalid transaction or message
type
CIMIO_DAL_GETITEM_NOPARAM 8028 Either parameter 1 or
parameter 2 has to be non-
NULL
CIMIO_DAL_INIT 8007 Error initializing Cim-IO
CIMIO_DAL_INIT_THREAD 8071 Error initializing thread
CIMIO_DAL_MALLOC_TLS 8030 Error allocating thread local
storage
CIMIO_DAL_MSGSZ_DCONVSZ 8005 Error obtaining message size
CIMIO_DAL_NOMEM 8006 Not enough memory
CIMIO_DAL_PARSE_MSG_BAD_ARG 8060 Invalid argument in
CIMIO_SERVER_PARSE_MSG
call
CIMIO_DAL_PARSE_MSG_INVSEQ 8061 CIMIO_SERVER_INIT needs to
be called first

15 Error Processing 257


Cim-IO Error Identifier Code Description

CIMIO_DAL_PARSE_SIZE 8002 Error obtaining data template


size
CIMIO_DAL_PARSEREP_FAIL 8017 Error obtaining size of the
template in parsing a reply
CIMIO_DAL_PARSEREP_INVMSG 8018 Invalid message or transaction
type
CIMIO_DAL_PARSEREQ_FAIL 8015 Error obtaining size of the
template in parsing a request
CIMIO_DAL_PARSEREQ_INVMSG 8016 Invalid message or transaction
type
CIMIO_DAL_QUEUE_INIT_FAIL 8120 Error initializing server
message queue
CIMIO_DAL_QUEUE_KILL_FAIL 8121 Error destroying server
message queue
CIMIO_DAL_RECEIVE_FAIL 8026 Error receiving incoming
message
CIMIO_DAL_SEND_FAIL 8025 Error sending message
CIMIO_DAL_SHUTDOWN_CONNECT 8042 Error connecting to the process
to be shutdown
CIMIO_DAL_SHUTDOWN_NODE 8040 Invalid node name
CIMIO_DAL_SHUTDOWN_SEND 8043 Error sending to the process to
be shutdown
CIMIO_DAL_SHUTDOWN_SERV 8041 Invalid service name
CIMIO_DCONV_ASCII_DSIZE 7102 Invalid conversion type for
Cim-IO ASCII conversion
CIMIO_DCONV_ASCII_INBUF 7100 Invalid source for Cim-IO ASCII
conversion
CIMIO_DCONV_ASCII_OUTBUF 7101 Invalid destination for Cim-IO
ASCII conversion
CIMIO_DCONV_BUF_ASCII 7127 Error converting Cim-IO ASCII
value
CIMIO_DCONV_BUF_BADTYPE 7131 Invalid data type
CIMIO_DCONV_BUF_CVTYPE 7123 Invalid conversion type
CIMIO_DCONV_BUF_DATA 7120 Invalid storage for data
conversion
CIMIO_DCONV_BUF_DOUBLE 7129 Error converting Cim-IO Long
value
CIMIO_DCONV_BUF_LONG 7125 Error converting Cim-IO Long
value
CIMIO_DCONV_BUF_MSG 7122 Invalid data to be converted
CIMIO_DCONV_BUF_NOSTRUCT 7124 Template does not start with a
Cim-IO structure
CIMIO_DCONV_BUF_REAL 7128 Error converting Cim-IO Real
value
CIMIO_DCONV_BUF_SHORT 7126 Error converting Cim-IO Short
value
CIMIO_DCONV_BUF_TIME 7130 Error converting Cim-IO Time
value

258 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_DCONV_BUF_TPL 7121 Invalid template


CIMIO_DCONV_DBL_INBUF 7060 Invalid source for Cim-IO
Double conversion
CIMIO_DCONV_DBL_OUTBUF 7061 Invalid destination for Cim-IO
Double conversion
CIMIO_DCONV_DBL_TYPE 7062 Invalid conversion type for
Cim-IO Double conversion
CIMIO_DCONV_LONG_INBUF 7020 Invalid source for Cim-IO Long
conversion
CIMIO_DCONV_LONG_OUTBUF 7021 Invalid destination for Cim-IO
Long conversion
CIMIO_DCONV_LONG_TYPE 7022 Invalid conversion type for
Cim-IO Long conversion
CIMIO_DCONV_MAXSIZE_BADTYPE 7202 Invalid data type
CIMIO_DCONV_MAXSIZE_NOSTRUCT 7201 Template does not start with a
Cim-IO structure
CIMIO_DCONV_MAXSIZE_TPL 7200 Invalid template
CIMIO_DCONV_REAL_INBUF 7040 Invalid source for Cim-IO Real
conversion
CIMIO_DCONV_REAL_OUTBUF 7041 Invalid destination for Cim-IO
Real conversion
CIMIO_DCONV_REAL_TYPE 7042 Invalid conversion type for
Cim-IO Real conversion
CIMIO_DCONV_SHORT_INBUF 7001 Invalid source for Cim-IO Short
conversion
CIMIO_DCONV_SHORT_OUTBUF 7002 Invalid destination for Cim-IO
Short conversion
CIMIO_DCONV_SHORT_TYPE 7003 Invalid conversion type for
Cim-IO Short conversion
CIMIO_DCONV_SIZE_BADTYPE 7182 Invalid data type
CIMIO_DCONV_SIZE_NOSTRUCT 7181 Template does not start with a
Cim-IO structure
CIMIO_DCONV_SIZE_TPL 7180 Invalid template
CIMIO_DCONV_TIME_INBUF 7080 Invalid source for Cim-IO Time
conversion
CIMIO_DCONV_TIME_OUTBUF 7081 Invalid destination for Cim-IO
Time conversion
CIMIO_DCONV_TIME_TYPE 7082 Invalid conversion type for
Cim-IO Time conversion
CIMIO_ERR_ERRBLK_FULL 5001 Error block is full
CIMIO_ERR_EXIT_THREAD 5003 Error exiting thread
CIMIO_ERR_FMTBLK_APPID 5300 Invalid application name
CIMIO_ERR_FMTBLK_BADSIG 5308 Invalid reply header
CIMIO_ERR_FMTBLK_BADTRNUM 5309 Transaction number of the
reply did not match the request
CIMIO_ERR_FMTBLK_CONN 5310 Error establishing connection to
Cim-IO logger

15 Error Processing 259


Cim-IO Error Identifier Code Description

CIMIO_ERR_FMTBLK_ERRBLK 5304 Invalid error block


CIMIO_ERR_FMTBLK_ERRMSG 5305 Invalid storage for error
message
CIMIO_ERR_FMTBLK_NAME 5301 Error obtaining local node
name
CIMIO_ERR_FMTBLK_NOMEMORY 5302 Not enough memory
CIMIO_ERR_FMTBLK_RECV 5306 Error receiving FMTBLK reply
from Cim-IO logger
CIMIO_ERR_FMTBLK_SEND 5303 Error sending message to Cim-
IO logger
CIMIO_ERR_FMTSTS_RECV 5406 Error formatting statuses
CIMIO_ERR_INIT_THREAD 5002 Error initializing thread
CIMIO_ERR_LOGBLK_APPID 5200 Invalid application name
CIMIO_ERR_LOGBLK_CONN 5205 Error establishing connection to
Cim-IO logger
CIMIO_ERR_LOGBLK_ERRBLK 5204 Invalid error block
CIMIO_ERR_LOGBLK_NAME 5201 Error obtaining local node
name
CIMIO_ERR_LOGBLK_NOMEMORY 5202 Not enough memory
CIMIO_ERR_LOGBLK_SEND 5203 Error sending message to Cim-
IO logger
CIMIO_ERR_LOGMSG_APPID 5100 Invalid application name
CIMIO_ERR_LOGMSG_CONN 5104 Error establishing connection to
Cim-IO logger
CIMIO_ERR_LOGMSG_LOGFILE 5105 Could not Open Log File (open
function returned NULL pointer)
CIMIO_ERR_LOGMSG_NAME 5101 Error obtaining local node
name
CIMIO_ERR_LOGMSG_NOMEMORY 5102 Not enough memory
CIMIO_ERR_LOGMSG_SEND 5103 Error sending message to Cim-
IO logger
CIMIO_ERR_MALLOC_TLS 5004 Error allocating Thread local
storage
CIMIO_LOG_FACILNAME 6012 Error file does not have facility
name
CIMIO_LOG_FACILNUM 6013 Error file does not have facility
number
CIMIO_LOG_FMT_CVT 6034 Error converting local time to a
time string
CIMIO_LOG_FMT_FACIL 6032 Invalid facility name
CIMIO_LOG_FMT_IDENT 6030 Invalid error identifier
CIMIO_LOG_FMT_TEXT 6031 Invalid error text
CIMIO_LOG_FMT_TIME 6033 Error obtaining local time
CIMIO_LOG_LOOK_DICT 6020 Invalid error dictionary
CIMIO_LOG_LOOK_ENOTFOUND 6025 Error code not found in error
dictionary

260 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_LOG_LOOK_FACIL 6023 Invalid storage for error facility


name
CIMIO_LOG_LOOK_FNOTFOUND 6024 Facility not found in error
dictionary
CIMIO_LOG_LOOK_IDENT 6021 Invalid storage for error
identifier
CIMIO_LOG_LOOK_TEXT 6022 Invalid storage for error text
CIMIO_LOG_NAME 6016 Error getting local node name
CIMIO_LOG_NOCREATE 6015 Error creating Cim-IO log file
CIMIO_LOG_NOFILE 6010 Could not open error definition
file
CIMIO_LOG_NONUMBER 6014 Error entry has identifier but no
error code
CIMIO_LOG_NOTERRFILE 6011 File is not error file (there is no
keyword FACILITY)
CIMIO_LOG_REPLY_DEST 6002 Invalid destination for error
reply
CIMIO_LOG_REPLY_ERRMSG 6001 Invalid error message in error
reply
CIMIO_LOG_REPLY_NOMEMORY 6004 Not enough memory
CIMIO_LOG_REPLY_SEND 6005 Error sending the error reply
CIMIO_LOG_REPLY_SRC 6003 Invalid source for error reply
CIMIO_MGMT_COMPONENT_ALLOC_FAI 15012 Not enough memory
LED
CIMIO_MGMT_COMPONENT_ARGS 15010 Error reading component
arguments from server's file
CIMIO_MGMT_COMPONENT_CREATE_PR 15015 Error creating component
OC process
CIMIO_MGMT_COMPONENT_EXECUTABL 15009 Error reading component
E executable from server's file
CIMIO_MGMT_COMPONENT_GETENV 15016 Error getting environment
variable
CIMIO_MGMT_COMPONENT_NAME 15007 Error reading component name
from server's file
CIMIO_MGMT_COMPONENT_SERVICE 15008 Error reading component
service from server's file
CIMIO_MGMT_DLGP_SERVICE_DIFFERE 15032 DLGP service port different on
NT client and server
CIMIO_MGMT_DLGP_SERVICE_INEXIST 15027 DLGP service does not exist
ANT
CIMIO_MGMT_FILE_OPEN_FAILED 15001 Error opening server's
definition file
CIMIO_MGMT_FORWARD_SERVICE_ 15040 Forward service port different
DIFFERENT on client and server
CIMIO_MGMT_FORWARD_SERVICE_ 15039 Forward service does not exist
INEXISTANT
CIMIO_MGMT_HIS_DLGP_SERVICE_ 15033 History DLGP service port
DIFFERENT different on client and server

15 Error Processing 261


Cim-IO Error Identifier Code Description

CIMIO_MGMT_HIST_DLGP_SERVICE_ 15028 Historical DLGP service does


INEXISTANT not exist
CIMIO_MGMT_INVALID_USERNAME 15031 The server will not start.
Correct username and/or
password
CIMIO_MGMT_PROCESS_EXECUTABLE_ 15030 Process executable does not
INEXISTANT exist
CIMIO_MGMT_PROCESS_SERVICE_ 15034 Process service port different
DIFFERENT on client and server
CIMIO_MGMT_PROCESS_SERVICE_ 15029 Process TCP/IP service does
INEXISTANT not exist
CIMIO_MGMT_SCANNER_SERVICE_ 15036 Scanner service port different
DIFFERENT on client and server
CIMIO_MGMT_SCANNER_SERVICE_ 15035 Scanner service does not exist
INEXISTANT
CIMIO_MGMT_SERVER_ALLOC_FAILED 15002 Not enough memory
CIMIO_MGMT_SERVER_ALREADY_EXIST 15026 Server already exist in
management database
CIMIO_MGMT_SERVER_CHECK_PERIOD 15021 Error reading server's check
period from server's file
CIMIO_MGMT_SERVER_CHECK_STATUS 15013 Error reading server's check
status from server's file
CIMIO_MGMT_SERVER_DLGP_SERVICE 15004 Error reading DLGP service
from server's file
CIMIO_MGMT_SERVER_GET_CONFIG_ 15025 Not enough memory for server
NOMEM config reply
CIMIO_MGMT_SERVER_GET_CONFIG_ 15024 Error in server config reply
REPLY
CIMIO_MGMT_SERVER_GET_STATUS 15022 Error getting status of server
CIMIO_MGMT_SERVER_GET_STATUS 15023 Error getting server number of
components
CIMIO_MGMT_SERVER_LOGON 15014 Error logging on as another
user
CIMIO_MGMT_SERVER_NAME 15005 Error reading server's name
from server's file
CIMIO_MGMT_SERVER_NOT_FOUND 15017 Server not found in
management database
CIMIO_MGMT_SERVER_READ_LINE 15003 Error reading server's file line
CIMIO_MGMT_SERVER_START 15018 Error starting server
CIMIO_MGMT_SERVER_STATUS 15006 Error reading server's startup
status from server's file
CIMIO_MGMT_SERVER_STOP 15019 Error stopping server
CIMIO_MGMT_SERVER_STORE_FORWA 15020 Error reading Store and
RD Forward usage from server's
file
CIMIO_MGMT_SERVER_USERNAME 15011 Error reading server user name
from server's file

262 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_MGMT_STORE_SERVICE_DIFFER 15038 Store service port different on


ENT client and server
CIMIO_MGMT_STORE_SERVICE_ 15037 Store service does not exist
INEXISTANT
CIMIO_MSG_ACCEPT_BAD_SERV 3020 Invalid service name
CIMIO_MSG_ACCEPT_FULL 3022 Maximum number of
connections is reached
CIMIO_MSG_ACCEPT_NOT_RDY 3024 No connection requests have
come in yet (not an error)
CIMIO_MSG_ACCEPT_SOCK_ACCEPT 3023 Error accepting connection on
the inbound socket
CIMIO_MSG_ACCEPT_SOCK_CREATE 3021 Error creating an inbound
socket
CIMIO_MSG_CONN_BAD_NODE 3002 Invalid node name
CIMIO_MSG_CONN_BAD_SERV 3001 Invalid service name
CIMIO_MSG_CONN_FULL 3004 Maximum number of
connections is reached
CIMIO_MSG_CONN_SOCK_CREATE 3005 Error creating an outbound
socket
CIMIO_MSG_CREATE_CONNSEND_MUT 3007 Error creating connection send
EX mutex
CIMIO_MSG_CREATE_CONNTAB_MUTEX 3073 Error creating connection table
mutex
CIMIO_MSG_DELETE_CONNSEND_MUTE 3008 Error deleting connection send
X mutex
CIMIO_MSG_DELETE_CONNTAB_MUTEX 3074 Error deleting connection table
mutex
CIMIO_MSG_DISCONN_BAD_NODE 3041 Invalid node name
CIMIO_MSG_DISCONN_BAD_SERV 3040 Invalid service name
CIMIO_MSG_DISCONN_FIRSTTIME 3042 Cim-IO has not yet been
initialized
CIMIO_MSG_DISCONN_NOCONNECT 3043 No connection to disconnect
CIMIO_MSG_DISCONN_SOCK_CLOSE 3044 Error closing the socket
CIMIO_MSG_GET_CONNSEND_MUTEX 3009 Error getting connection send
mutex
CIMIO_MSG_GET_CONNTAB_MUTEX 3075 Error getting connection table
mutex
CIMIO_MSG_MALLOC_TLS 3006 Error allocating thread local
storage
CIMIO_MSG_POLL_CHECK 3111 Error checking connections for
incoming messages or
connection request
CIMIO_MSG_POLL_FIRSTTIME 3110 Error accepting connection
CIMIO_MSG_RECEIVE_ACCESS_DENIED 3113 Access Denied to Client for
Security Reason
CIMIO_MSG_RECV_BADCHECKSUM 3093 Checksum in message header
doesn't match calculated value

15 Error Processing 263


Cim-IO Error Identifier Code Description

CIMIO_MSG_RECV_BADMSG 3089 Received message doesn't have


a valid node or service name
CIMIO_MSG_RECV_BADMSGSZ 3091 Received message is too small
to be valid
CIMIO_MSG_RECV_BADSIG 3094 Bad signature in message
header
CIMIO_MSG_RECV_CHK 3083 Error checking connections
CIMIO_MSG_RECV_CONVBUF 3087 Error converting received
message header
CIMIO_MSG_RECV_DCONV_MSZ 3088 Error getting the maximum
buffer size for the message
CIMIO_MSG_RECV_FIRSTTIME 3084 Cim-IO has not yet been
initialized
CIMIO_MSG_RECV_MSGSIZE 3080 Invalid message size
CIMIO_MSG_RECV_NOCONNECT 3081 There is no connection for the
given node/service
CIMIO_MSG_RECV_NOMEMORY 3086 Not enough memory
CIMIO_MSG_RECV_NOPIPE 3092 Connection was somehow
broken (Broken PIPE)
CIMIO_MSG_RECV_NOT_RDY 3082 Connection has not yet been
established for this RECEIVE
CIMIO_MSG_RECV_READ 3085 Error reading from inbound
socket
CIMIO_MSG_RECV_TIMEOUT 3090 Time-out trying to receive a
message
CIMIO_MSG_RELEASE_CONNSEND_MUT 3010 Error releasing connection send
EX mutex
CIMIO_MSG_RELEASE_CONNTAB_MUTE 3076 Error releasing connection table
X mutex
CIMIO_MSG_SEND_AUTHENTICATION_F 3112 Error sending Authentication
AIL information
CIMIO_MSG_SEND_BAD_MSG 3062 Invalid message to send
CIMIO_MSG_SEND_BAD_NODE 3061 Invalid node name
CIMIO_MSG_SEND_BAD_SERV 3060 Invalid service name
CIMIO_MSG_SEND_DCONV_DATA 3067 Error converting message data
CIMIO_MSG_SEND_DCONV_TPL 3068 Error converting message
template
CIMIO_MSG_SEND_FIRSTTIME 3063 Cim-IO has not yet been
initialized
CIMIO_MSG_SEND_FULL 3071 Connection table is full for this
send
CIMIO_MSG_SEND_NOCONNECT 3064 No connection is available for
this SEND
CIMIO_MSG_SEND_NOMEMORY 3065 Not enough memory
CIMIO_MSG_SEND_NOPIPE 3070 Connection was somehow
broken
CIMIO_MSG_SEND_SOCK_CREATE 3072 Error creating socket

264 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_MSG_SEND_WRITE 3066 Error writing to socket


CIMIO_MSG_TERMINATE_SOCKET 3100 Error terminating use of socket
library
CIMIO_SF_CFG_DLGPINFO_PROCID 13117 Invalid DLGP service or node
name
CIMIO_SF_CFG_KEYWORD_BAD 13114 Bad keyword in scanner
configuration file
CIMIO_SF_CFG_LOADCFG_CLOSE 13111 Error closing scanner
configuration file when loading
CIMIO_SF_CFG_LOADCFG_DLGPINFO 13113 Error obtaining DLGP
information
CIMIO_SF_CFG_LOADCFG_OPEN 13112 Error opening scanner
configuration file for load
CIMIO_SF_CFG_PARSETIME_HOURS 13115 Error parsing hours component
of maximum period
CIMIO_SF_CFG_PARSETIME_MINS 13116 Error parsing minutes
component of maximum period
CIMIO_SF_CFG_SAVECFG_CLOSE 13110 Error closing scanner
configuration file when saving
CIMIO_SF_CFG_SAVECFG_DLGPINFO 13105 Error obtaining DLGP
information
CIMIO_SF_CFG_SAVECFG_OPEN 13104 Error opening scanner
configuration file for save
CIMIO_SF_CFG_SAVECFG_WRITE_ 13106 Error writing DLGP name to
DLGPNAME scanner configuration file
CIMIO_SF_CFG_SAVECFG_WRITE_ 13107 Error writing maximum period
MAXPERIOD to scanner configuration file
CIMIO_SF_CFG_SAVECFG_WRITE_MAX 13108 Error writing maximum size to
SIZE scanner configuration file
CIMIO_SF_CFG_UPDATECFG_LOAD 13100 Error loading scanner
configuration
CIMIO_SF_CFG_UPDATECFG_MODIFY 13102 Error modifying scanner
configuration
CIMIO_SF_CFG_UPDATECFG_SAVE 13103 Error saving scanner
configuration
CIMIO_SF_CREATE_NOTAGINFO_INVALI 13070 Invalid message
D_MSG
CIMIO_SF_CREATE_NOTAGINFO_ 13071 Out of memory when creating
NOMEMORY message with no tag info
CIMIO_SF_FILE_CLOSE 13210 Error closing file
CIMIO_SF_FILE_LOCK 13151 Error locking file
CIMIO_SF_FILE_LSEEK_LSEEK 13159 Error in file seek
CIMIO_SF_FILE_LSEEK_SET 13150 Error in file seek to the
beginning of the file
CIMIO_SF_FILE_OPEN_FLAGS 13160 Invalid flags for file open
CIMIO_SF_FILE_OPEN_NOTFOUND 13161 File not found when opening
CIMIO_SF_FILE_OPEN_OPEN 13153 Error opening file
CIMIO_SF_FILE_READ_BUFFER 13181 Invalid buffer in read

15 Error Processing 265


Cim-IO Error Identifier Code Description

CIMIO_SF_FILE_READ_HANDLE 13180 Invalid file handle in read


CIMIO_SF_FILE_READ_READ 13182 File read error
CIMIO_SF_FILE_REMOVE_CLOSE 13158 Error closing file for removing
CIMIO_SF_FILE_REMOVE_OPEN 13155 Error opening file for removing
CIMIO_SF_FILE_REMOVE_SIZE 13156 Error obtaining file size for
removing
CIMIO_SF_FILE_REMOVE_UNLINK 13157 Error unlinking file
CIMIO_SF_FILE_SIZE_LSEEK_END 13154 Error seeking to end of file to
obtain its size
CIMIO_SF_FILE_UNLOCK 13152 Error unlocking file
CIMIO_SF_FILE_WRITE_BUFFER 13201 Invalid buffer in write
CIMIO_SF_FILE_WRITE_HANDLE 13200 Invalid file handle in write
CIMIO_SF_FILE_WRITE_WRITE 13202 File write error
CIMIO_SF_FWD_FORWARD_CORRUPTIO 13473 Corrupted store file
N
CIMIO_SF_FWD_FORWARD_FREQ 13470 Error getting frequency from
message
CIMIO_SF_FWD_FORWARD_READ_NEX 13471 Error reading next message
T_ MSG from store file
CIMIO_SF_FWD_NOTIF_BLDMSG 13480 Error building notification to
remove store file
CIMIO_SF_FWD_NOTIF_SEND 13481 Error sending notification to
remove store file
CIMIO_SF_FWD_READNEXTMSG_CLOSE 13409 Error closing store file when
trying to read next message
CIMIO_SF_FWD_READNEXTMSG_CORR 13412 Corrupt store file detected
UPT_FILE when reading next message
CIMIO_SF_FWD_READNEXTMSG_FILESI 13410 Error obtaining store file size
ZE when trying to read next
message
CIMIO_SF_FWD_READNEXTMSG_LOCKI 13403 Error locking file when trying to
NG_ LOCK read next message
CIMIO_SF_FWD_READNEXTMSG_LOCKI 13407 Error unlocking file when trying
NG_ UNLOCK to read next message
CIMIO_SF_FWD_READNEXTMSG_LSEEK 13401 Error seeking to the end of the
_ END file when trying to read next
message
CIMIO_SF_FWD_READNEXTMSG_LSEEK 13402 Error seeking to start of file
_ SET when trying to read next
message
CIMIO_SF_FWD_READNEXTMSG_MSGSI 13404 Message size too small when
ZE trying to read next message
CIMIO_SF_FWD_READNEXTMSG_NOME 13405 Out of memory when trying to
MORY read next message
CIMIO_SF_FWD_READNEXTMSG_NOTIF 13413 Error sending notification to
delete store file
CIMIO_SF_FWD_READNEXTMSG_OPEN 13408 Error opening store file when
trying to read next message

266 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_SF_FWD_READNEXTMSG_READ_ 13411 Error reading store file header


HDR when trying to read next
message
CIMIO_SF_FWD_READNEXTMSG_READ_ 13406 Error reading from file when
MSG trying to read next message
CIMIO_SF_FWD_READNEXTMSG_WRITE 13414 Error writing store file header
_ HDR
CIMIO_SF_FWD_REMOVE_CLOSE 13456 Error closing file
CIMIO_SF_FWD_REMOVE_LSEEK_END 13454 Error seeking to the end of
store file
CIMIO_SF_FWD_REMOVE_LSEEK_SET 13450 Error seeking to start of store
file
CIMIO_SF_FWD_REMOVE_NOMSG 13452 There is no message to remove
CIMIO_SF_FWD_REMOVE_NOTIF 13459 Error sending notification to
remove store file
CIMIO_SF_FWD_REMOVE_OPEN 13458 Error opening store file to
remove last message
CIMIO_SF_FWD_REMOVE_READ_HDR 13451 Error reading header of store
file
CIMIO_SF_FWD_REMOVE_REMOVE 13457 Error removing file
CIMIO_SF_FWD_REMOVE_UNLOCK 13455 Error unlocking file
CIMIO_SF_FWD_REMOVE_WRITE_HDR 13453 Error writing header to store
file
CIMIO_SF_GET2UNSOL_BADGET 13550 Bad Get reply message for
conversion to Unsol
CIMIO_SF_GET2UNSOL_BADNTAGS 13553 Number of tags in get reply
inconsistent with count
CIMIO_SF_GET2UNSOL_BADTYPE 13555 Bad data type in data template
CIMIO_SF_GET2UNSOL_INVARG 13557 Invalid arguments - no
deadband checking performed
CIMIO_SF_GET2UNSOL_NOMEMORY 13551 No memory available
CIMIO_SF_GET2UNSOL_NOSTRUCT 13552 Template does not start with a
Cim-IO structure
CIMIO_SF_GET2UNSOL_NOTAGS 13558 No tags to send in converted
reply
CIMIO_SF_GET2UNSOL_TPLSIZE 13554 Unable to determine data
template size
CIMIO_SF_GET2UNSOL_UNSREPLY 13556 Error creating unsolicited reply
CIMIO_SF_HDR_CHK_BACKUP_BLOCK 13501 Corrupted backup block in
store file header
CIMIO_SF_HDR_CHK_CRC_FAIL 13500 Cyclic redundancy check fail in
store file read
CIMIO_SF_HDR_CHK_PRIMARY_BLOCK 13502 Corrupted primary block in
store file header
CIMIO_SF_HDR_READ 13512 Error reading store file header
CIMIO_SF_HDR_READ_CORRUPT 13510 Corrupted store file header
CIMIO_SF_HDR_READ_LSEEK_SET 13511 Error rewinding store file when
reading header

15 Error Processing 267


Cim-IO Error Identifier Code Description

CIMIO_SF_HDR_READ_MSG_CORRUPT 13530 Corrupted store file message


CIMIO_SF_HDR_READ_MSGHDR 13532 Error reading store file
message header
CIMIO_SF_HDR_READ_MSGHDR_CORR 13531 Corrupted store file message
UPT header
CIMIO_SF_HDR_WRITE 13521 Error writing store file header
CIMIO_SF_HDR_WRITE_LSEEK_SET 13520 Error rewinding store file when
writing header
CIMIO_SF_LIST_ADDLIST_CREATE_NOT 13018 Error creating message with no
AGINFO tag info
CIMIO_SF_LIST_ADDLIST_DCONV_SIZE 13534 Error calculating data template
size
CIMIO_SF_LIST_ADDLIST_NOMEMORY 13001 Out of memory when adding
request to scan list
CIMIO_SF_LIST_ADDLIST_PARSE_GETR 13533 Error parsing get request
EQ
CIMIO_SF_LIST_LOAD_SCANLIST_ 13020 Invalid filename when loading
BADFILENAME scan list
CIMIO_SF_LIST_LOAD_SCANLIST_BAD 13607 Inconsistent number of tags
NTAGS
CIMIO_SF_LIST_LOAD_SCANLIST_CLOS 13027 Error closing scan list file
E
CIMIO_SF_LIST_LOAD_SCANLIST_CREA 13030 Error creating message with no
TE_ NOTAGINFO tag info
CIMIO_SF_LIST_LOAD_SCANLIST_DCO 13608 Error determining get request
NV_ SIZE data size
CIMIO_SF_LIST_LOAD_SCANLIST_GETR 13606 Error parsing scan list get
EQ request
CIMIO_SF_LIST_LOAD_SCANLIST_ 13609 No memory available for
NODBMEM deadband list
CIMIO_SF_LIST_LOAD_SCANLIST_ 13019 Invalid filename when loading
NOFILENAME scan list
CIMIO_SF_LIST_LOAD_SCANLIST_ 13024 Out of memory loading from
NOMEMORY scan list file
CIMIO_SF_LIST_LOAD_SCANLIST_ 13026 Scan list file not found
NOTFOUND
CIMIO_SF_LIST_LOAD_SCANLIST_OPEN 13021 Error opening scan list file
CIMIO_SF_LIST_LOAD_SCANLIST_READ 13605 Error reading deadband scan
_ DBENTRY list entry
CIMIO_SF_LIST_LOAD_SCANLIST_READ 13610 Error reading deadband list
_ DBLIST from scan list file
CIMIO_SF_LIST_LOAD_SCANLIST_READ 13023 Error reading scan list entry
_ ENTRY from scan list file
CIMIO_SF_LIST_LOAD_SCANLIST_READ 13022 Error reading scan list file
_ HDR header
CIMIO_SF_LIST_LOAD_SCANLIST_READ 13025 Error reading message from
_ MSG scan list file

268 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_SF_LIST_LOAD_SCANLIST_ 13029 Old version of scan list file


REVISION
CIMIO_SF_LIST_LOAD_SCANLIST_ 13028 Invalid scan list file
SIGNATURE
CIMIO_SF_LIST_LOAD_STORELIST_ 13052 Invalid filename when loading
BADFILENAME store list file
CIMIO_SF_LIST_LOAD_STORELIST_CLO 13056 Error closing store list file
SE
CIMIO_SF_LIST_LOAD_STORELIST_ 13051 Invalid filename when loading
NOFILENAME store list file
CIMIO_SF_LIST_LOAD_STORELIST_ 13050 Store list file not found
NOTFOUND
CIMIO_SF_LIST_LOAD_STORELIST_OPE 13053 Error opening store list file
N
CIMIO_SF_LIST_LOAD_STORELIST_REA 13055 Error reading from store list file
D
CIMIO_SF_LIST_LOAD_STORELIST_REA 13054 Error reading store list file
D_ HDR header
CIMIO_SF_LIST_LOAD_UNSOLLIST_ 13041 Invalid filename when loading
BADFILENAME unsolicited list
CIMIO_SF_LIST_LOAD_UNSOLLIST_CLO 13047 Error closing unsolicited list file
SE
CIMIO_SF_LIST_LOAD_UNSOLLIST_ 13040 Invalid filename when loading
NOFILENAME unsolicited list
CIMIO_SF_LIST_LOAD_UNSOLLIST_ 13045 Out of memory loading from
NOMEMORY unsolicited list file
CIMIO_SF_LIST_LOAD_UNSOLLIST_ 13046 Unsolicited list file not found
NOTFOUND
CIMIO_SF_LIST_LOAD_UNSOLLIST_OPE 13042 Error opening unsolicited list
N file
CIMIO_SF_LIST_LOAD_UNSOLLIST_REA 13044 Error reading unsolicited list
D_ ENTRY entry from unsolicited list file
CIMIO_SF_LIST_LOAD_UNSOLLIST_REA 13043 Error reading unsolicited list file
D_ HDR header
CIMIO_SF_LIST_LOAD_UNSOLLIST_REA 13048 Error reading message from
D_MSG unsolicited list file
CIMIO_SF_LIST_REMOVELIST_NOTFOU 13005 Request not found in scan list
ND
CIMIO_SF_LIST_SAVE_STORELIST_ 13061 Invalid filename when saving
BADFILENAME store list file
CIMIO_SF_LIST_SAVE_STORELIST_CLO 13065 Error closing store list file
SE
CIMIO_SF_LIST_SAVE_STORELIST_ 13060 Invalid filename when saving
NOFILENAME store list file
CIMIO_SF_LIST_SAVE_STORELIST_OPE 13062 Error opening store list file
N
CIMIO_SF_LIST_SAVE_STORELIST_REM 13066 Error removing store list file
OVE

15 Error Processing 269


Cim-IO Error Identifier Code Description

CIMIO_SF_LIST_SAVELIST_WRITE_ 13603 Error writing deadband scan list


DBENTRY entry
CIMIO_SF_LIST_SAVELIST_WRITE_DBL 13604 Error writing deadband list to
IST scan list file
CIMIO_SF_LIST_SAVE_STORELIST_WRI 13064 Error writing a store list entry
TE_ ENTRY to store list file
CIMIO_SF_LIST_SAVE_STORELIST_WRI 13063 Error writing store list file
TE_HDR header
CIMIO_SF_LIST_SAVELIST_BADFILENA 13011 Invalid filename for scan list
ME file
CIMIO_SF_LIST_SAVELIST_CLOSE 13016 Error closing scan list file
CIMIO_SF_LIST_SAVELIST_NOFILENAM 13010 Invalid filename: Internal error
E
CIMIO_SF_LIST_SAVELIST_OPEN 13012 Error opening scan list file
CIMIO_SF_LIST_SAVELIST_REMOVE 13017 Error removing scan list file
CIMIO_SF_LIST_SAVELIST_WRITE_ENT 13014 Error writing scan list entry
RY
CIMIO_SF_LIST_SAVELIST_WRITE_HDR 13013 Error writing scan list file
header
CIMIO_SF_LIST_SAVELIST_WRITE_MSG 13015 Error writing message to scan
list file
CIMIO_SF_MERGE_GETCAN_NOMEMOR 13590 No Memory available
Y
CIMIO_SF_MERGE_GETCAN_TPLSIZE 13591 Error getting template data size
CIMIO_SF_MERGE_GETDECL_DECTPLSI 13601 Error getting Declare template
ZE data size
CIMIO_SF_MERGE_GETDECL_GETTPLSI 13600 Error getting Get template data
ZE size
CIMIO_SF_MERGE_GETDECL_NOMEMOR 13602 No Memory available
Y
CIMIO_SF_SCAN_REPLY_CANC_BLDREP 13370 Error building Cancel reply
L
CIMIO_SF_SCAN_REPLY_CANC_SNDREP 13371 Error sending Cancel reply
L
CIMIO_SF_SCAN_REPLY_DECL_BLDREP 13368 Error building Declare reply
L
CIMIO_SF_SCAN_REPLY_DECL_ 13367 No Memory available
NOMEMORY
CIMIO_SF_SCAN_REPLY_DECL_SNDREP 13369 Error sending Declare reply
L
CIMIO_SF_SCAN_REPLY_DLGP_ACCESS 13366 Error accessing DLGP
CIMIO_SF_SCAN_REPLY_STORE_BAD_T 13360 Unexpected transaction
T number when sending reply to
store process
CIMIO_SF_SCAN_REPLY_STORE_BLD_ 13364 Error building GET reply when
REPLY sending reply to store process
CIMIO_SF_SCAN_REPLY_STORE_DSIZE 13362 Invalid data size detected when
sending reply to store process

270 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_SF_SCAN_REPLY_STORE_ 13363 Out of memory when sending


NOMEMORY reply to store process
CIMIO_SF_SCAN_REPLY_STORE_PARSE 13361 Error parsing GET request
_ GETREQ when sending reply to store
process
CIMIO_SF_SCAN_REPLY_STORE_SEND 13365 Error sending GET reply to
store process
CIMIO_SF_SCAN_STORE_INFO_SEND 13350 Error sending Store and
Forward information
CIMIO_SF_STORE_NOTIF_FWD_BLDMS 13270 Error building message for
G forward process notification
CIMIO_SF_STORE_NOTIF_FWD_SEND 13271 Error sending notification to
forward process
CIMIO_SF_STORE_READ_HDR_LSEEK_S 13330 Error seeking to start of file
ET when reading header
CIMIO_SF_STORE_READ_HDR_READ 13331 Error reading file header
CIMIO_SF_STORE_SEND_REPLY_CLOSE 13319 Error closing store file
CIMIO_SF_STORE_SEND_REPLY_CREAT 13315 Error creating store file
E
CIMIO_SF_STORE_SEND_REPLY_CREAT 13327 Error creating message with no
E_ NOTAGINFO tag info
CIMIO_SF_STORE_SEND_REPLY_CVTRE 13328 Error converting Get reply to
P Unsol reply
CIMIO_SF_STORE_SEND_REPLY_FILE_ 13321 Absolute maximum file size
LIMIT limit is reached
CIMIO_SF_STORE_SEND_REPLY_FILE_L 13317 Error locking store file
OCK
CIMIO_SF_STORE_SEND_REPLY_FILE_U 13318 Error unlocking store file
NLOCK
CIMIO_SF_STORE_SEND_REPLY_FILESI 13316 Error getting store file size
ZE
CIMIO_SF_STORE_SEND_REPLY_FULL 13320 Message is too big to be put in
the store file
CIMIO_SF_STORE_SEND_REPLY_LOCKI 13308 Error locking store file
NG_ LOCK
CIMIO_SF_STORE_SEND_REPLY_LOCKI 13309 Error unlocking store file
NG_ UNLOCK
CIMIO_SF_STORE_SEND_REPLY_LSEEK 13303 Error seeking to start of store
_ SET file
CIMIO_SF_STORE_SEND_REPLY_ 13312 Out of memory sending reply
NOMEMORY
CIMIO_SF_STORE_SEND_REPLY_ 13300 Reply message not found in
NOTFOUND scan list
CIMIO_SF_STORE_SEND_REPLY_NOTIF 13326 Error sending notification to
_ SCANNER scanner
CIMIO_SF_STORE_SEND_REPLY_NOTIF 13302 Error notifying forward process
Y
CIMIO_SF_STORE_SEND_REPLY_OPEN 13313 Error opening store file

15 Error Processing 271


Cim-IO Error Identifier Code Description

CIMIO_SF_STORE_SEND_REPLY_PARSE 13322 Error parsing GET reply


_ GETREP
CIMIO_SF_STORE_SEND_REPLY_PARSE 13323 Error parsing unsolicited reply
_ UNSREP
CIMIO_SF_STORE_SEND_REPLY_READ_ 13307 Error reading store file header
HDR
CIMIO_SF_STORE_SEND_REPLY_REMO 13314 Error removing store file
VE_ FILE
CIMIO_SF_STORE_SEND_REPLY_SAVE_ 13301 Error saving store list
STORELIST
CIMIO_SF_STORE_SEND_REPLY_SET_ 13325 Error setting list id for the reply
LISTID message
CIMIO_SF_STORE_SEND_REPLY_TO_ 13324 Error sending GET reply to
SCANNER scanner process
CIMIO_SF_STORE_SEND_REPLY_WRITE 13305 Error writing store file header
_ HDR
CIMIO_SF_STORE_SEND_REPLY_WRITE 13306 Error writing reply to store file
_ MSG
CIMIO_SF_STORE_WRITE_HDR_LSEEK_ 13332 Error seeking to start of file
SET when writing header
CIMIO_SF_STORE_WRITE_HDR_WRITE 13333 Error writing file header
CIMIO_SF_STORE_WRITE_MSG 13342 Error writing message
CIMIO_SF_STORE_WRITE_MSG_LSEEK_ 13340 Error seeking to current offset
SET in the file when writing
message
CIMIO_SF_STORE_WRITE_NOMEMORY 13341 Out of memory when trying to
write message
CIMIO_SF_UPDATELIST_ADDLIST 13580 Error adding Get request to
scan list
CIMIO_SF_UPDATELIST_BADCANC 13571 Bad Cancel request
CIMIO_SF_UPDATELIST_BADDECL 13570 Bad Declare request
CIMIO_SF_UPDATELIST_BADGET 13574 Error parsing active get request
CIMIO_SF_UPDATELIST_BADREQ 13572 Request type unknown or
unsupported
CIMIO_SF_UPDATELIST_LOCFAIL 13573 Error locating current get list
CIMIO_SF_UPDATELIST_MERGECANC 13575 Error merging new Cancel
request with Get request
CIMIO_SF_UPDATELIST_MERGEDECL 13577 Error merging new Declare
request with Get request
CIMIO_SF_UPDATELIST_NOMEMORY 13579 No memory available
CIMIO_SF_UPDATELIST_POSFREQ 13581 A positive frequency detected
on DECL to GET conv
CIMIO_SF_UPDATELIST_REMLIST 13576 Error removing get request
from scan list
CIMIO_SF_UPDATELIST_TPLSIZE 13578 Error getting template data size
CIMIO_SOCK_ACCEPT_ACCEPT_FAIL 2042 Error accepting connection on
the inbound socket
CIMIO_SOCK_ACCEPT_BAD_SOCK 2040 Invalid socket number

272 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_SOCK_ACCEPT_NOCONNECT 2043 Failure to establish connection


on the inbound socket
CIMIO_SOCK_ACCEPT_OPT_NBIO 2044 Error setting non-blocking I/O
option on inbound socket
CIMIO_SOCK_ACCEPT_SEL_FAIL 2041 Error performing select on the
inbound socket
CIMIO_SOCK_BAD_WINSOCK 2009 Incorrect version of
WINSOCK.DLL
CIMIO_SOCK_CHK_BAD_HDR_ARRAY 2122 Invalid message headers array
CIMIO_SOCK_CHK_BAD_SOCK_ARRAY 2121 Invalid socket number array
CIMIO_SOCK_CHK_BAD_SOCKMASK 2120 Invalid socket mask
CIMIO_SOCK_CHK_BROKEN_PIPE 2125 Connection was somehow
terminated
CIMIO_SOCK_CHK_RECV_FAIL 2124 Error peeking at socket
CIMIO_SOCK_CHK_SEL_FAIL 2123 Error selecting socket
CIMIO_SOCK_CLOSE_FAIL 2060 Error closing the socket
CIMIO_SOCK_GETHOST_FAIL 2026 Error translating host name to
network address
CIMIO_SOCK_GETSERV_FAIL 2005 Error looking up service name
CIMIO_SOCK_IN_BAD_SERV 2001 Invalid service name
CIMIO_SOCK_IN_BIND_FAIL 2006 Error binding the service name
to a physical port
CIMIO_SOCK_IN_CREATE 2010 Error creating inbound socket
CIMIO_SOCK_IN_LISTEN_FAIL 2007 Error listening for messages on
the inbound socket
CIMIO_SOCK_OPT_KEEPALIVE 2003 Error setting keep-alive option
for the socket
CIMIO_SOCK_OPT_RCVBUF 2008 Error setting buffer size for
socket
CIMIO_SOCK_OPT_REUSEADDR 2004 Error setting reuse address
option for the socket
CIMIO_SOCK_OPT_SNDBUF 2029 Error setting buffer size for
socket
CIMIO_SOCK_OUT_BAD_NODE 2021 Invalid node name
CIMIO_SOCK_OUT_BAD_SERV 2020 Invalid service name
CIMIO_SOCK_OUT_CONN_FAIL 2027 Error connecting to the server
CIMIO_SOCK_OUT_CREATE 2022 Error creating outbound socket
CIMIO_SOCK_OUT_OPT_NBIO 2028 Error setting non-blocking I/O
option on the outbound socket
CIMIO_SOCK_POLL_BAD_SOCKMASK 2140 Error in socket mask array
CIMIO_SOCK_POLL_BROKEN_PIPE 2142 Connection was somehow
terminated
CIMIO_SOCK_POLL_SEL_FAIL 2141 Error when polling sockets for
incoming data
CIMIO_SOCK_RD_BAD_BUFF 2081 Invalid message buffer for
READ

15 Error Processing 273


Cim-IO Error Identifier Code Description

CIMIO_SOCK_RD_BAD_SOCK 2080 Invalid socket number for


reading
CIMIO_SOCK_RD_BROKEN_PIPE 2085 Connection was terminated by
peer
CIMIO_SOCK_RD_FAIL 2082 Error reading from socket
CIMIO_SOCK_RD_MAX_RETRY 2083 Maximum number of retries
reached trying to read
CIMIO_SOCK_RD_TIMEOUT 2084 Read timeout expired
CIMIO_SOCK_SOCKET_CREATE 2002 Error creating socket
CIMIO_SOCK_TERMINATE_CLEANUP 2126 Error terminating use of socket
library
CIMIO_SOCK_WR_BAD_BUFF 2101 Invalid message
CIMIO_SOCK_WR_BAD_SOCK 2100 Invalid socket number for
writing
CIMIO_SOCK_WR_FAIL 2102 Error writing to socket
CIMIO_SOCK_WR_MAX_RETRY 2103 Maximum number of retries
reached trying to write
CIMIO_SOCK_WR_PIPE 2106 Connection on this socket is
broken
CIMIO_SOCK_WR_TIMEOUT 2105 Write timeout expired
CIMIO_TEST_API _NOMEMORY 10020 Out of memory error
CIMIO_TEST_API 10005 Negative or zero data size
_READTAGS_DATASIZE
CIMIO_TEST_API 10006 Invalid data type
_READTAGS_DATATYPE
CIMIO_TEST_API 10002 Unknown deadband type for
_READTAGS_DEADBAND the tag
CIMIO_TEST_API _READTAGS_NTAGS 10007 User asked for more tags than
there are in tag list file
CIMIO_TEST_API 10001 Error opening tag list file
_READTAGS_OPEN_TAGLIST
CIMIO_TEST_API _READTAGS_OPTYPE 10004 No output type has been
specified or invalid output type
CIMIO_TEST_API _READTAGS_VALUE 10003 No value has been specified or
invalid value
CIMIO_THR_CANCEL_THREAD_FAIL 14004 Error canceling thread
CIMIO_THR_CREATE_MUTEX_FAIL 14010 Failed to create mutex
CIMIO_THR_CREATE_THREAD_FAIL 14002 Error creating thread
CIMIO_THR_DESTROY_MUTEX_FAIL 14012 Failed to destroy mutex
CIMIO_THR_EXIT_THREAD_FAIL 14006 Unable to exit thread
CIMIO_THR_INIT_NOMEMORY 14008 Unable to allocate memory
CIMIO_THR_LOCK_MUTEX_FAIL 14014 Failed to lock mutex
CIMIO_THR_UNLOCK_MUTEX_FAIL 14016 Failed to unlock mutex
CIMIO_USR_ACKMSG_SEND 4990 Error sending
acknowledgement
CIMIO_USR_ADDDEV_ADD 4604 Error adding a new entry to
logical device definition file

274 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_USR_ADDDEV_DEV 4601 Invalid storage for physical


device name
CIMIO_USR_ADDDEV_DUP 4605 Attempt to add a device that
already exists
CIMIO_USR_ADDDEV_LOGDEV 4600 Invalid logical device
CIMIO_USR_ADDDEV_NODE 4602 Invalid storage for node name
CIMIO_USR_ADDDEV_NOFILE 4603 Device definition file does not
exist
CIMIO_USR_BLD_MSG_BAD_ARG 4993 Error in arguments
CIMIO_USR_BLD_MSG_INIT 4994 Cim-IO has yet not been
initialized
CIMIO_USR_BLD_MSG_NOMEMORY 4995 Not enough memory
CIMIO_USR_CANC_ACCTYPE 4303 Invalid access type
CIMIO_USR_CANC_BADSIG 4319 CANCEL reply has a bad
signature (invalid reply)
CIMIO_USR_CANC_BADTRNUM 4322 Transaction number of the
reply didn't match the request
CIMIO_USR_CANC_CONNECT 4312 Error connecting to device
CIMIO_USR_CANC_DCONVSZ 4315 Error getting size of request
message template or data tpl
CIMIO_USR_CANC_DEVICE 4300 Invalid device name
CIMIO_USR_CANC_DEVTABLE_FULL 4323 Internal table of devices is full
CIMIO_USR_CANC_ID 4306 Invalid tag name array
CIMIO_USR_CANC_INTID 4307 Invalid internal id array
CIMIO_USR_CANC_NOMEMORY 4314 Not enough memory
CIMIO_USR_CANC_NOT_INIT 4311 Cim-IO has not yet been
initialized
CIMIO_USR_CANC_NTAGS 4301 Negative number of tags
CIMIO_USR_CANC_PRIORITY 4302 Invalid priority
CIMIO_USR_CANC_RCVR 4305 Invalid receiver
CIMIO_USR_CANC_RECEIVE 4317 Error receiving a CANCEL reply
from device
CIMIO_USR_CANC_REPLY 4321 Error in reply to CANCEL
CIMIO_USR_CANC_SEND 4316 Error sending a CANCEL
request to device
CIMIO_USR_CANC_SF_ENABLED_ 4324 Store and Forward is enabled
UNREACHABLE but Store and Forward
processes are unreachable
CIMIO_USR_CANC_STS 4310 Invalid status array
CIMIO_USR_CANC_TIMEOUT 4318 No time is left for receiving the
reply
CIMIO_USR_CANC_TPL 4308 Invalid template
CIMIO_USR_CANC_UNIT 4320 Invalid unit number
CIMIO_USR_CANC_VIEW 4313 Logical device is not defined
CIMIO_USR_CONN_CONNECT 4953 Error connecting to device
CIMIO_USR_CONN_DEVICE 4950 Error in device name

15 Error Processing 275


Cim-IO Error Identifier Code Description

CIMIO_USR_CONN_DEVTABLE_FULL 4951 Internal table of devices is full


CIMIO_USR_CONN_NOT_INIT 4954 Cim-IO has yet not been
initialized
CIMIO_USR_CONN_SEND 4944 Error sending connect
notification
CIMIO_USR_CONN_VIEW 4952 Logical device is not defined
CIMIO_USR_CREATE_DEVICE_MUTEX 4008 Error creating device mutex
CIMIO_USR_CREATE_DEVTAB_MUTEX 4004 Error creating devices table
mutex
CIMIO_USR_DECL_ACCTYPE 4203 Invalid access type
CIMIO_USR_DECL_BADSIG 4219 DECLARE reply has a bad
signature (invalid reply)
CIMIO_USR_DECL_BADTIMEOUT 4204 Invalid timeout value
CIMIO_USR_DECL_BADTRNUM 4222 Transaction number of the
reply didn't match the request
CIMIO_USR_DECL_CONNECT 4212 Error connecting to device
CIMIO_USR_DECL_DATARCVR 4223 Invalid data receiver
CIMIO_USR_DECL_DBAND 4209 Invalid deadband array
CIMIO_USR_DECL_DCONVSZ 4215 Error getting size of request
message template or data tpl
CIMIO_USR_DECL_DEVICE 4200 Invalid device name
CIMIO_USR_DECL_DEVTABLE_FULL 4224 Internal table of devices is full
CIMIO_USR_DECL_ID 4206 Invalid tag name array
CIMIO_USR_DECL_INTID 4207 Invalid internal id array
CIMIO_USR_DECL_NOMEMORY 4214 Not enough memory
CIMIO_USR_DECL_NOT_INIT 4211 Cim-IO has not yet been
initialized
CIMIO_USR_DECL_NTAGS 4201 Negative number of tags
CIMIO_USR_DECL_PRIORITY 4202 Invalid priority
CIMIO_USR_DECL_RCVR 4205 Invalid receiver
CIMIO_USR_DECL_RECEIVE 4217 Error receiving a DECLARE
reply from device
CIMIO_USR_DECL_REPLY 4221 Error in reply to DECLARE
CIMIO_USR_DECL_SEND 4216 Error sending a DECLARE
request to device
CIMIO_USR_DECL_SF_ENABLED_ 4225 Store and Forward is enabled
UNREACHABLE but Store and Forward
processes are unreachable
CIMIO_USR_DECL_STS 4210 Invalid status array
CIMIO_USR_DECL_TIMEOUT 4218 No time is left for receiving the
reply
CIMIO_USR_DECL_TPL 4208 Invalid template
CIMIO_USR_DECL_UNIT 4220 Invalid unit number
CIMIO_USR_DECL_VIEW 4213 Logical device is not defined
CIMIO_USR_DELDEV_FILECOPY 4809 Error making a backup of
logical device definitions

276 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_USR_DELDEV_LOGDEV 4800 Invalid logical device name


CIMIO_USR_DELDEV_NOBAKFILE 4808 Error opening logical device
definition backup
CIMIO_USR_DELDEV_NOFILE 4803 Error creating logical device
definition file
CIMIO_USR_DELDEV_NOREC 4807 Logical device not found
CIMIO_USR_DELDEV_PARSE 4805 Error reading logical device
definition entry
CIMIO_USR_DELDEV_PUT 4806 Error writing a logical device
definition entry
CIMIO_USR_DELETE_DEVICE_MUTEX 4009 Error deleting device mutex
CIMIO_USR_DELETE_DEVTAB_MUTEX 4005 Error deleting devices table
mutex
CIMIO_USR_DISCONN_DEVICE 4960 Error in device name
CIMIO_USR_DISCONN_DISCON 4963 Error disconnecting from device
CIMIO_USR_DISCONN_NOCONN 4962 There is no connection for this
device
CIMIO_USR_DISCONN_NOT_INIT 4961 Cim-IO has yet not been
initialized
CIMIO_USR_EXIT_DISCONN 4020 Error terminating a connection
CIMIO_USR_EXIT_TERMINATE 4021 Error terminating all Cim-IO
connections
CIMIO_USR_EXIT_THREAD 4023 Error exiting thread
CIMIO_USR_FILECP_NOCREATE 4851 Error opening destination file
for copying
CIMIO_USR_FILECP_NOINFILE 4850 Error opening source file for
copying
CIMIO_USR_GET_ACCTYPE 4043 Invalid access type
CIMIO_USR_GET_BADSIG 4062 GET reply has a bad signature
(invalid reply)
CIMIO_USR_GET_BADTIMEOUT 4044 Invalid timeout
CIMIO_USR_GET_BADTRNUM 4063 Transaction number of the
reply didn't match the request
CIMIO_USR_GET_CONNECT 4053 Error connecting to device
CIMIO_USR_GET_DCONVSZ 4056 Error getting size of request
message template or data tpl
CIMIO_USR_GET_DEV_STAT_BADSIG 4088 GETDEVSTAT reply has a bad
signature (invalid reply )
CIMIO_USR_GET_DEV_STAT_CONNECT 4082 Error connecting to device
CIMIO_USR_GET_DEV_STAT_DCONVSZ 4084 Error getting size of request
message template or data tpl.
CIMIO_USR_GET_DEV_STAT_DEVICE 4078 Invalid device name
CIMIO_USR_GET_DEV_STAT_DEVTABLE 4080 Internal table of devices is full
_ FULL
CIMIO_USR_GET_DEV_STAT_NOMEMOR 4083 Not enough memory
Y

15 Error Processing 277


Cim-IO Error Identifier Code Description

CIMIO_USR_GET_DEV_STAT_NOT_INIT 4079 Cim-IO has not yet been


initialized
CIMIO_USR_GET_DEV_STAT_RECEIVE 4087 Error receiving a GETDEVSTAT
reply from device
CIMIO_USR_GET_DEV_STAT_REPLY 4089 Error came from GETDEVSTAT
reply packet
CIMIO_USR_GET_DEV_STAT_SEND 4085 Error sending a GETDEVSTAT
request to device
CIMIO_USR_GET_DEV_STAT_TIMEOUT 4086 No time is left for receiving the
reply
CIMIO_USR_GET_DEV_STAT_VIEW 4081 Logical device is not defined
CIMIO_USR_GET_DEVICE 4040 Invalid device name
CIMIO_USR_GET_DEVICE_MUTEX 4010 Error getting device mutex
CIMIO_USR_GET_DEVTAB_MUTEX 4006 Error getting devices table
mutex
CIMIO_USR_GET_DEVTABLE_FULL 4064 Internal table of devices is full
CIMIO_USR_GET_ID 4046 Invalid tag name array
CIMIO_USR_GET_INTID 4047 Invalid internal id array
CIMIO_USR_GET_NOMEMORY 4055 Not enough memory
CIMIO_USR_GET_NOT_INIT 4052 Cim-IO has not yet been
initialized
CIMIO_USR_GET_NTAGS 4041 Negative number of tags
CIMIO_USR_GET_PRIORITY 4042 Invalid priority
CIMIO_USR_GET_RCVR 4045 Invalid receiver (for
asynchronous GET requests)
CIMIO_USR_GET_RECEIVE 4058 Error receiving a GET reply
from device
CIMIO_USR_GET_REPLY 4060 Error came from GET reply
packet
CIMIO_USR_GET_SEND 4057 Error sending a GET request to
device
CIMIO_USR_GET_STS 4050 Invalid status array
CIMIO_USR_GET_TIMEOUT 4065 No time is left for receiving the
reply
CIMIO_USR_GET_TPL 4048 Invalid template
CIMIO_USR_GET_TSTAMP 4051 Invalid timestamp array
CIMIO_USR_GET_UNIT 4061 Negative unit number
CIMIO_USR_GET_VAL 4049 Invalid value block
CIMIO_USR_GET_VIEW 4054 Logical device is not defined
CIMIO_USR_GETHIST_ACCTYPE 4343 Invalid access type
CIMIO_USR_GETHIST_ADJUST 4369 Error adjusting historical data
template
CIMIO_USR_GETHIST_BADSIG 4362 Historical GET reply has a bad
signature (invalid reply)
CIMIO_USR_GETHIST_BADTIMEOUT 4344 Invalid timeout

278 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_USR_GETHIST_BADTRNUM 4363 Transaction number of the


reply didn't match the request
CIMIO_USR_GETHIST_CONNECT 4353 Error connecting to device
CIMIO_USR_GETHIST_DCONVSZ 4356 Error getting size of req.
message template or data tpl
CIMIO_USR_GETHIST_DEVICE 4340 Invalid device name
CIMIO_USR_GETHIST_DEVTABLE_FULL 4364 Internal table of devices is full
CIMIO_USR_GETHIST_ENDTIME 4368 Invalid historical end times
array
CIMIO_USR_GETHIST_ID 4346 Invalid tag name array
CIMIO_USR_GETHIST_INTID 4347 Invalid internal id array
CIMIO_USR_GETHIST_NOMEMORY 4355 Not enough memory
CIMIO_USR_GETHIST_NOT_INIT 4352 Cim-IO has not yet been
initialized
CIMIO_USR_GETHIST_NTAGS 4341 Negative number of tags
CIMIO_USR_GETHIST_NVALS 4366 Invalid number of historical
values array
CIMIO_USR_GETHIST_PRIORITY 4342 Invalid priority
CIMIO_USR_GETHIST_RCVR 4345 Invalid receiver (for
asynchronous GET requests)
CIMIO_USR_GETHIST_RECEIVE 4358 Error receiving a Historical GET
reply from device
CIMIO_USR_GETHIST_REPLY 4360 Error came from Historical GET
reply packet
CIMIO_USR_GETHIST_SEND 4357 Error sending a Historical GET
request to device
CIMIO_USR_GETHIST_STARTTIME 4367 Invalid historical start times
array
CIMIO_USR_GETHIST_STS 4350 Invalid status array
CIMIO_USR_GETHIST_TIMEOUT 4365 No time is left for receiving the
reply
CIMIO_USR_GETHIST_TPL 4348 Invalid template
CIMIO_USR_GETHIST_TSTAMP 4351 Invalid timestamp array
CIMIO_USR_GETHIST_UNIT 4361 Negative unit number
CIMIO_USR_GETHIST_VAL 4349 Invalid value block
CIMIO_USR_GETHIST_VIEW 4354 Logical device is not defined
CIMIO_USR_INIT_APPID 4001 Invalid application identification
CIMIO_USR_INIT_CONN 4002 Error connecting to logger
CIMIO_USR_INIT_NAME 4003 Error obtaining the node name
CIMIO_USR_INIT_THREAD 4022 Error initializing thread
CIMIO_USR_MALLOC_TLS 4024 Error allocating Thread local
storage
CIMIO_USR_MODDEV_DEV 4701 Invalid storage for physical
device name
CIMIO_USR_MODDEV_FILECOPY 4707 Error backing-up logical device
definition file

15 Error Processing 279


Cim-IO Error Identifier Code Description

CIMIO_USR_MODDEV_LOGDEV 4700 Invalid logical device


CIMIO_USR_MODDEV_NOBAKFILE 4708 Error opening logical device
definition backup file
CIMIO_USR_MODDEV_NODE 4702 Invalid storage for node name
CIMIO_USR_MODDEV_NOFILE 4703 Device logical definition file
does not exist
CIMIO_USR_MODDEV_NOREC 4706 Logical device not found
CIMIO_USR_MODDEV_PARSE 4705 Error reading device definition
file
CIMIO_USR_MODDEV_PUT 4709 Error writing an entry to logical
device definition file
CIMIO_USR_PING_DCONVSZ 4935 Error getting size of request
message tpl or data tpl
CIMIO_USR_PING_DEVICE 4930 Invalid device name
CIMIO_USR_PING_DEVTABLE_FULL 4932 Internal table of devices is full
CIMIO_USR_PING_FAIL_ALL 4938 Neither DLGP nor Store and
Forward processes could be
pinged
CIMIO_USR_PING_FAIL_DLGP 4939 DLGP could not be pinged,
Store and Forward is OK or
disabled.
CIMIO_USR_PING_FAIL_SF 4940 Store and Forward processes
could not be pinged, DLGP is
OK.
CIMIO_USR_PING_NOMEMORY 4934 Not enough memory
CIMIO_USR_PING_NOT_INIT 4931 Cim-IO has not yet been
initialized
CIMIO_USR_PING_NOT_PING_TIME 4937 It is not yet time to ping
(Informational message)
CIMIO_USR_PING_NOT_PING_TIME_AL 4941 It is neither ping time for DLGP
L nor for Store and Forward
processes (Informational
message)
CIMIO_USR_PING_NOT_PING_TIME_DL 4942 It is not ping time yet for DLGP
GP (Informational message)
CIMIO_USR_PING_NOT_PING_TIME_SF 4943 It is not ping time yet for Store
and Forward processes
(Informational message)
CIMIO_USR_PING_SEND 4936 Error sending PING message
CIMIO_USR_PING_VIEW 4933 Logical device is not defined
CIMIO_USR_PUT_ACCTYPE 4103 Invalid access type
CIMIO_USR_PUT_BADSIG 4120 PUT reply has a bad signature
(invalid reply)
CIMIO_USR_PUT_BADTRNUM 4122 Transaction number of the
reply didn't match the request
CIMIO_USR_PUT_CONNECT 4113 Error connecting to device
CIMIO_USR_PUT_DCONVSZ 4116 Error getting size of request
message template or data tpl

280 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_USR_PUT_DEVICE 4100 Invalid device name


CIMIO_USR_PUT_DEVTABLE_FULL 4104 Internal table of devices is full
CIMIO_USR_PUT_ID 4106 Invalid tag name array
CIMIO_USR_PUT_INTID 4107 Invalid internal id array
CIMIO_USR_PUT_NOMEMORY 4115 Not enough memory
CIMIO_USR_PUT_NOT_INIT 4112 Cim-IO has not yet been
initialized
CIMIO_USR_PUT_NTAGS 4101 Negative number of tags
CIMIO_USR_PUT_OPTYPE 4111 Invalid output type array
CIMIO_USR_PUT_PRIORITY 4102 Invalid priority
CIMIO_USR_PUT_RCVR 4105 Invalid receiver (for
asynchronous PUT requests)
CIMIO_USR_PUT_RECEIVE 4118 Error receiving a PUT reply
from device
CIMIO_USR_PUT_REPLY 4121 Error came from PUT reply
packet
CIMIO_USR_PUT_SEND 4117 Error sending a PUT request to
device
CIMIO_USR_PUT_STS 4110 Invalid status array
CIMIO_USR_PUT_TIMEOUT 4123 No time is left for receiving the
reply
CIMIO_USR_PUT_TPL 4108 Invalid template
CIMIO_USR_PUT_TSTAMP 4124 Invalid timestamp array
CIMIO_USR_PUT_VAL 4109 Invalid value block
CIMIO_USR_PUT_VIEW 4114 Logical device is not defined
CIMIO_USR_READ_ACCTYPE 4403 Invalid access type
CIMIO_USR_READ_BADMSG 4430 Invalid message holder
CIMIO_USR_READ_BADSIG 4419 Incoming message has a bad
signature (invalid reply)
CIMIO_USR_READ_BADTRANSTYPE 4426 Invalid transaction type
CIMIO_USR_READ_CONNECT 4412 Error connecting to device
CIMIO_USR_READ_DCONVSZ 4415 Error getting size of request
message template or data tpl
CIMIO_USR_READ_DEADBAND 4425 Invalid storage for Deadband
information
CIMIO_USR_READ_DEVICE 4400 Invalid device name
CIMIO_USR_READ_DEVTABLE_FULL 4427 Internal table of devices is full
CIMIO_USR_READ_ID 4406 Invalid tag name array
CIMIO_USR_READ_INTID 4407 Invalid internal id array
CIMIO_USR_READ_NODE 4429 Invalid node name
CIMIO_USR_READ_NODEV 4431 No logical devices have been
registered yet
CIMIO_USR_READ_NOMEMORY 4414 Not enough memory
CIMIO_USR_READ_NOT_INIT 4411 Cim-IO has not yet been
initialized

15 Error Processing 281


Cim-IO Error Identifier Code Description

CIMIO_USR_READ_NTAGS 4401 Negative number of tags


CIMIO_USR_READ_OPTYPE 4424 Invalid storage for Output Type
information
CIMIO_USR_READ_PRIORITY 4402 Invalid priority
CIMIO_USR_READ_RCVR 4405 Invalid receiver
CIMIO_USR_READ_RECEIVE 4417 Error receiving from device
CIMIO_USR_READ_RECEIVE_TIMEOUT 4418 Timeout due to no messages
CIMIO_USR_READ_REPLY 4421 Error in incoming message
CIMIO_USR_READ_REPLYTYPE 4428 Invalid storage for reply type
CIMIO_USR_READ_STS 4410 Invalid status array
CIMIO_USR_READ_TIMESTAMP 4423 Invalid storage for timestamps
CIMIO_USR_READ_TPL 4408 Invalid template
CIMIO_USR_READ_UNIT 4420 Invalid storage for unit number
CIMIO_USR_READ_VAL 4422 Invalid storage for values
CIMIO_USR_READ_VIEW 4413 Logical device is not defined
CIMIO_USR_RECEIVE_ACCTYPE 4453 Invalid access type
CIMIO_USR_RECEIVE_BADSIG 4469 Incoming message has a bad
signature (invalid reply)
CIMIO_USR_RECEIVE_BADTRANSTYPE 4476 Invalid transaction type
CIMIO_USR_RECEIVE_CONNECT 4462 Error connecting to device
CIMIO_USR_RECEIVE_DCONVSZ 4465 Error getting size of request
message tpl or data tpl
CIMIO_USR_RECEIVE_DEADBAND 4475 Invalid storage for Deadband
information
CIMIO_USR_RECEIVE_DEVICE 4450 Invalid device name
CIMIO_USR_RECEIVE_DEVTABLE_FULL 4477 Internal table of devices is full
CIMIO_USR_RECEIVE_ENDTIMES 4481 Invalid storage for end times of
historical values
CIMIO_USR_RECEIVE_ID 4456 Invalid tag name array
CIMIO_USR_RECEIVE_INTID 4457 Invalid internal id array
CIMIO_USR_RECEIVE_NOMEMORY 4464 Not enough memory
CIMIO_USR_RECEIVE_NOT_INIT 4461 Cim-IO has not yet been
initialized
CIMIO_USR_RECEIVE_NTAGS 4451 Negative number of tags
CIMIO_USR_RECEIVE_NVALS 4479 Invalid storage for number of
historical values
CIMIO_USR_RECEIVE_OPTYPE 4474 Invalid storage for Output Type
information
CIMIO_USR_RECEIVE_PRIORITY 4452 Invalid priority
CIMIO_USR_RECEIVE_RCVR 4455 Invalid receiver
CIMIO_USR_RECEIVE_RECEIVE 4467 Error receiving from device
CIMIO_USR_RECEIVE_REPLY 4471 Error in incoming message
CIMIO_USR_RECEIVE_REPLYTYPE 4478 Invalid storage for reply type
CIMIO_USR_RECEIVE_STARTTIMES 4480 Invalid storage for start times
of historical values

282 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_USR_RECEIVE_STS 4460 Invalid status array


CIMIO_USR_RECEIVE_TIMESTAMP 4473 Invalid storage for timestamps
CIMIO_USR_RECEIVE_TPL 4458 Invalid template
CIMIO_USR_RECEIVE_UNIT 4470 Invalid storage for unit number
CIMIO_USR_RECEIVE_VAL 4472 Invalid storage for values
CIMIO_USR_RECEIVE_VIEW 4463 Logical device is not defined
CIMIO_USR_RELEASE_DEVICE_MUTEX 4007 Error releasing device mutex
CIMIO_USR_RELEASE_DEVICE_MUTEX 4011 Error releasing device mutex
CIMIO_USR_REMOVE_SERVER_BADSIG 4095 REMOVESRV reply has a bad
signature (invalid reply )
CIMIO_USR_REMOVE_SERVER_DCONVS 4091 Error getting size of request
Z message template or data tpl.
CIMIO_USR_REMOVE_SERVER_ 4090 Not enough memory
NOMEMORY
CIMIO_USR_REMOVE_SERVER_RECEIVE 4094 Error receiving a REMOVESRV
reply from device
CIMIO_USR_REMOVE_SERVER_REPLY 4096 Error came from REMOVESRV
reply packet
CIMIO_USR_REMOVE_SERVER_SEND 4092 Error sending a REMOVESRV
request to device
CIMIO_USR_REMOVE_SERVER_TIMEOU 4093 No time is left for receiving the
T reply
CIMIO_USR_SCAN_DISABLE_DEVICE 4980 Invalid device name
CIMIO_USR_SCAN_DISABLE_DEVICE_N 4981 Invalid device name
OT_ FOUND
CIMIO_USR_SCAN_DISABLE_TABLE_FU 4982 Device table is full
LL
CIMIO_USR_SCAN_DISABLE_VIEW_DEV 4983 Logical device is not defined
ICE
CIMIO_USR_SCAN_ENABLE_DEVICE 4970 Invalid device name
CIMIO_USR_SCAN_ENABLE_DEVICE_NO 4971 Invalid device name
T_ FOUND
CIMIO_USR_SCAN_ENABLE_TABLE_FUL 4972 Device table is full
L
CIMIO_USR_SCAN_ENABLE_VIEW_DEVI 4973 Logical device is not defined
CE
CIMIO_USR_SEND_MSG_ACCTYPE 4862 Invalid access type
CIMIO_USR_SEND_MSG_BADSIG 4876 Reply has a bad signature
(invalid reply)
CIMIO_USR_SEND_MSG_CONNECT 4869 Error connecting to device
CIMIO_USR_SEND_MSG_DEVICE 4860 Invalid device name
CIMIO_USR_SEND_MSG_DEVTABLE_FU 4867 Internal table of devices is full
LL
CIMIO_USR_SEND_MSG_MSGSIZE 4872 Error calculating message size
CIMIO_USR_SEND_MSG_NOMEM 4871 Not enough memory
CIMIO_USR_SEND_MSG_NOT_INIT 4866 Cim-IO has not yet been
initialized

15 Error Processing 283


Cim-IO Error Identifier Code Description

CIMIO_USR_SEND_MSG_PRIORITY 4861 Invalid priority


CIMIO_USR_SEND_MSG_RCVR 4863 Invalid receiver (for
asynchronous SEND_MSG
requests)
CIMIO_USR_SEND_MSG_RECEIVE 4875 Error receiving the reply from
device
CIMIO_USR_SEND_MSG_SEND 4873 Error sending a message to
device
CIMIO_USR_SEND_MSG_TIMEOUT 4874 No time is left for receiving the
reply
CIMIO_USR_SEND_MSG_TPL 4864 Invalid template
CIMIO_USR_SEND_MSG_TPL_SIZE 4870 Error calculating template size
CIMIO_USR_SEND_MSG_VAL 4865 Invalid value block
CIMIO_USR_SEND_MSG_VIEW 4868 Logical device is not defined
CIMIO_USR_SHUTDOWN_CONNECT 4925 Error connecting to device
CIMIO_USR_SHUTDOWN_DEVTABLE_FU 4923 Internal table of devices is full
LL
CIMIO_USR_SHUTDOWN_LOGDEV 4920 Error looking up logical device
name
CIMIO_USR_SHUTDOWN_NOT_INIT 4922 Cim-IO has yet not been
initialized
CIMIO_USR_SHUTDOWN_SEND 4921 Error sending a shutdown
request to a device or logger
CIMIO_USR_SHUTDOWN_VIEW 4924 Logical device is not defined
CIMIO_USR_START_DEV_BADSIG 4035 STARTDEVICE reply has a bad
signature (invalid reply )
CIMIO_USR_START_DEV_CONNECT 4029 Error connecting to device
CIMIO_USR_START_DEV_DCONVSZ 4031 Error getting size of request
message template or data tpl.
CIMIO_USR_START_DEV_DEVICE 4025 Invalid device name
CIMIO_USR_START_DEV_DEVTABLE_FU 4027 Internal table of devices is full
LL
CIMIO_USR_START_DEV_NOMEMORY 4030 Not enough memory
CIMIO_USR_START_DEV_NOT_INIT 4026 Cim-IO has not yet been
initialized
CIMIO_USR_START_DEV_RECEIVE 4034 Error receiving a STARTDEVICE
reply from device
CIMIO_USR_START_DEV_REPLY 4036 Error came from STARTDEVICE
reply packet
CIMIO_USR_START_DEV_SEND 4032 Error sending a STARTDEVICE
request to device
CIMIO_USR_START_DEV_TIMEOUT 4033 No time is left for receiving the
reply
CIMIO_USR_START_DEV_VIEW 4028 Logical device is not defined
CIMIO_USR_STOP_DEV_BADSIG 4076 STOPDEVICE reply has a bad
signature (invalid reply )
CIMIO_USR_STOP_DEV_CONNECT 4070 Error connecting to device

284 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_USR_STOP_DEV_DCONVSZ 4072 Error getting size of request


message template or data tpl.
CIMIO_USR_STOP_DEV_DEVICE 4066 Invalid device name
CIMIO_USR_STOP_DEV_DEVTABLE_FUL 4068 Internal table of devices is full
L
CIMIO_USR_STOP_DEV_NOMEMORY 4071 Not enough memory
CIMIO_USR_STOP_DEV_NOT_INIT 4067 Cim-IO has not yet been
initialized
CIMIO_USR_STOP_DEV_RECEIVE 4075 Error receiving a STOPDEVICE
reply from device
CIMIO_USR_STOP_DEV_REPLY 4077 Error came from STOPDEVICE
reply packet
CIMIO_USR_STOP_DEV_SEND 4073 Error sending a STOPDEVICE
request to device
CIMIO_USR_STOP_DEV_TIMEOUT 4074 No time is left for receiving the
reply
CIMIO_USR_STOP_DEV_VIEW 4069 Logical device is not defined
CIMIO_USR_STOPGET_CONNECT 4333 Error connecting to device
CIMIO_USR_STOPGET_DCONVSZ 4336 Error getting size of request
message template or data tpl
CIMIO_USR_STOPGET_DEVICE 4330 Invalid device name
CIMIO_USR_STOPGET_DEVTABLE_FULL 4339 Internal table of devices is full
CIMIO_USR_STOPGET_NOMEMORY 4335 Not enough memory
CIMIO_USR_STOPGET_NOT_INIT 4332 Cim-IO has not yet been
initialized
CIMIO_USR_STOPGET_PRIORITY 4331 Invalid priority
CIMIO_USR_STOPGET_SEND 4337 Error sending a STOPGET
request to device
CIMIO_USR_STOPGET_UNIT 4338 Invalid unit number
CIMIO_USR_STOPGET_VIEW 4334 Logical device is not defined
CIMIO_USR_STOPPUT_CONNECT 4383 Error connecting to device
CIMIO_USR_STOPPUT_DCONVSZ 4386 Error getting size of request
message template or data tpl
CIMIO_USR_STOPPUT_DEVICE 4380 Invalid device name
CIMIO_USR_STOPPUT_DEVTABLE_FULL 4389 Internal table of devices is full
CIMIO_USR_STOPPUT_NOMEMORY 4385 Not enough memory
CIMIO_USR_STOPPUT_NOT_INIT 4382 Cim-IO has not yet been
initialized
CIMIO_USR_STOPPUT_PRIORITY 4381 Invalid priority
CIMIO_USR_STOPPUT_SEND 4387 Error sending a STOPPUT
request to device
CIMIO_USR_STOPPUT_UNIT 4388 Invalid unit number
CIMIO_USR_STOPPUT_VIEW 4384 Logical device is not defined
CIMIO_USR_VUEDEV_DEV 4501 Invalid storage for physical
device name
CIMIO_USR_VUEDEV_LOGDEV 4500 Invalid logical device

15 Error Processing 285


Cim-IO Error Identifier Code Description

CIMIO_USR_VUEDEV_NODE 4502 Invalid storage for node name


CIMIO_USR_VUEDEV_NOFILE 4503 Device definition file does not
exist
CIMIO_USR_VUEDEV_NOREC 4505 Logical device not found
CIMIO_USR_VUEDEV_PARSE 4504 Error reading device definition
file
CIMIO_X_ADD_UNSOL_FAILED 11013 Failed to add point to
unsolicited list
CIMIO_X_COULD_NOT_CONTINUE 11009 Could Not Continue Processing
List
CIMIO_X_DATASIZE 11019 Error obtaining data size based
on data template
CIMIO_X_DCONV_OVERFLOW 11006 Data Overflow
CIMIO_X_DCONV_UNKNOWN_TYPE 11005 Unknown Data Type
CIMIO_X_DCONV_UNSUPPORTED_TYPE 11004 Driver does not support this
Data Type
CIMIO_X_DCONV_W_ASCII_FAILED 11018 Conversion from ASCII failed
CIMIO_X_DEVICE_ERROR 11001 Device Error
CIMIO_X_DO_NOT_OUTPUT 11017 Point was requested not to be
Output
CIMIO_X_INVALID_TAG 11008 Invalid Tag Name
CIMIO_X_LOADFILE_FAILED 11103 File Loading Failure
CIMIO_X_MEMALLOC_FAILURE 11010 Memory Allocation Failure
CIMIO_X_OPERATION_FAILED 11102 Operation Failed
CIMIO_X_OPERATION_SUCCESS 11101 Operation was Successful
CIMIO_X_PS_STATUS_ALREADY_ 11203 Point Already Declared
DECLARED
CIMIO_X_PS_STATUS_BAD 11207 Bad Point Status
CIMIO_X_PS_STATUS_CANCEL_FAILED 11209 Point Cancellation Failed:
Unknown Point
CIMIO_X_PS_STATUS_CANCELED 11202 Point Was Successfully
Canceled
CIMIO_X_PS_STATUS_DECLARED 11204 Point Was Successfully
Declared
CIMIO_X_PS_STATUS_ENTRY_ 11208 Device Hash Table Entry
UNAVAILABLE Already Used
CIMIO_X_PS_STATUS_GOOD 11201 Good Point Status
CIMIO_X_PS_STATUS_NEWTAG 11205 New Point
CIMIO_X_PS_STATUS_UNKNOWN 11210 Point Status Unknown
CIMIO_X_PS_STATUS_WASNOT_DECLA 11206 Point Not Canceled: Point Was
RED Not Declared
CIMIO_X_REM_UNSOL_FAILED 11014 Failed to remove point from
unsolicited list
CIMIO_X_STATUS_BAD 11002 Bad Status
CIMIO_X_UNKNOWN 11105 Unknown Error
CIMIO_X_UNKNOWN_DEADBAND 11011 Unknown Deadband

286 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_X_UNSOL_TABLE_FULL 11015 Could not find an available


unsolicited list
CIMIO_X_UNSUPPORTED_DEADBAND_ 11012 Unsupported Deadband Type
TYPE
CIMIO_X_UNSUPPORTED_OUTPUT_TYPE 11016 Specified output type is not
supported
CIMIO_X_WRITEFILE_FAILED 11104 File Saving Failure
SUCCESS 0 Normal successful completion

Cim-IO Errors Sorted by Error


Code
Cim-IO Error Identifier Code Description

SUCCESS 0 Normal successful completion


CIMIO_SOCK_IN_BAD_SERV 2001 Invalid service name
CIMIO_SOCK_SOCKET_CREATE 2002 Error creating socket
CIMIO_SOCK_OPT_KEEPALIVE 2003 Error setting keep-alive option
for the socket
CIMIO_SOCK_OPT_REUSEADDR 2004 Error setting reuse address
option for the socket
CIMIO_SOCK_GETSERV_FAIL 2005 Error looking up service name
CIMIO_SOCK_IN_BIND_FAIL 2006 Error binding the service name
to a physical port
CIMIO_SOCK_IN_LISTEN_FAIL 2007 Error listening for messages on
the inbound socket
CIMIO_SOCK_OPT_RCVBUF 2008 Error setting buffer size for
socket
CIMIO_SOCK_BAD_WINSOCK 2009 Incorrect version of
WINSOCK.DLL
CIMIO_SOCK_IN_CREATE 2010 Error creating inbound socket
CIMIO_SOCK_OUT_BAD_SERV 2020 Invalid service name
CIMIO_SOCK_OUT_BAD_NODE 2021 Invalid node name
CIMIO_SOCK_OUT_CREATE 2022 Error creating outbound socket
CIMIO_SOCK_GETHOST_FAIL 2026 Error translating host name to
network address
CIMIO_SOCK_OUT_CONN_FAIL 2027 Error connecting to the server
CIMIO_SOCK_OUT_OPT_NBIO 2028 Error setting non-blocking I/O
option on the outbound socket
CIMIO_SOCK_OPT_SNDBUF 2029 Error setting buffer size for
socket
CIMIO_SOCK_ACCEPT_BAD_SOCK 2040 Invalid socket number
CIMIO_SOCK_ACCEPT_SEL_FAIL 2041 Error performing select on the
inbound socket

15 Error Processing 287


Cim-IO Error Identifier Code Description

CIMIO_SOCK_ACCEPT_ACCEPT_FAIL 2042 Error accepting connection on


the inbound socket
CIMIO_SOCK_ACCEPT_NOCONNECT 2043 Failure to establish connection
on the inbound socket
CIMIO_SOCK_ACCEPT_OPT_NBIO 2044 Error setting non-blocking I/O
option on inbound socket
CIMIO_SOCK_CLOSE_FAIL 2060 Error closing the socket
CIMIO_SOCK_RD_BAD_SOCK 2080 Invalid socket number for
reading
CIMIO_SOCK_RD_BAD_BUFF 2081 Invalid message buffer for
READ
CIMIO_SOCK_RD_FAIL 2082 Error reading from socket
CIMIO_SOCK_RD_MAX_RETRY 2083 Maximum number of retries
reached trying to read
CIMIO_SOCK_RD_TIMEOUT 2084 Read timeout expired
CIMIO_SOCK_RD_BROKEN_PIPE 2085 Connection was terminated by
peer
CIMIO_SOCK_WR_BAD_SOCK 2100 Invalid socket number for
writing
CIMIO_SOCK_WR_BAD_BUFF 2101 Invalid message
CIMIO_SOCK_WR_FAIL 2102 Error writing to socket
CIMIO_SOCK_WR_MAX_RETRY 2103 Maximum number of retries
reached trying to write
CIMIO_SOCK_WR_TIMEOUT 2105 Write timeout expired
CIMIO_SOCK_WR_PIPE 2106 Connection on this socket is
broken
CIMIO_SOCK_CHK_BAD_SOCKMASK 2120 Invalid socket mask
CIMIO_SOCK_CHK_BAD_SOCK_ARRAY 2121 Invalid socket number array
CIMIO_SOCK_CHK_BAD_HDR_ARRAY 2122 Invalid message headers array
CIMIO_SOCK_CHK_SEL_FAIL 2123 Error selecting socket
CIMIO_SOCK_CHK_RECV_FAIL 2124 Error peeking at socket
CIMIO_SOCK_CHK_BROKEN_PIPE 2125 Connection was somehow
terminated
CIMIO_SOCK_TERMINATE_CLEANUP 2126 Error terminating use of socket
library
CIMIO_SOCK_POLL_BAD_SOCKMASK 2140 Error in socket mask array
CIMIO_SOCK_POLL_SEL_FAIL 2141 Error when polling sockets for
incoming data
CIMIO_SOCK_POLL_BROKEN_PIPE 2142 Connection was somehow
terminated
CIMIO_MSG_CONN_BAD_SERV 3001 Invalid service name
CIMIO_MSG_CONN_BAD_NODE 3002 Invalid node name
CIMIO_MSG_CONN_FULL 3004 Maximum number of
connections is reached
CIMIO_MSG_CONN_SOCK_CREATE 3005 Error creating an outbound
socket

288 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_MSG_MALLOC_TLS 3006 Error allocating thread local


storage
CIMIO_MSG_CREATE_CONNSEND_MUT 3007 Error creating connection send
EX mutex
CIMIO_MSG_DELETE_CONNSEND_MUTE 3008 Error deleting connection send
X mutex
CIMIO_MSG_GET_CONNSEND_MUTEX 3009 Error getting connection send
mutex
CIMIO_MSG_RELEASE_CONNSEND_MUT 3010 Error releasing connection send
EX mutex
CIMIO_MSG_ACCEPT_BAD_SERV 3020 Invalid service name
CIMIO_MSG_ACCEPT_SOCK_CREATE 3021 Error creating an inbound
socket
CIMIO_MSG_ACCEPT_FULL 3022 Maximum number of
connections is reached
CIMIO_MSG_ACCEPT_SOCK_ACCEPT 3023 Error accepting connection on
the inbound socket
CIMIO_MSG_ACCEPT_NOT_RDY 3024 No connection requests have
come in yet (not an error)
CIMIO_MSG_DISCONN_BAD_SERV 3040 Invalid service name
CIMIO_MSG_DISCONN_BAD_NODE 3041 Invalid node name
CIMIO_MSG_DISCONN_FIRSTTIME 3042 Cim-IO has not yet been
initialized
CIMIO_MSG_DISCONN_NOCONNECT 3043 No connection to disconnect
CIMIO_MSG_DISCONN_SOCK_CLOSE 3044 Error closing the socket
CIMIO_MSG_SEND_BAD_SERV 3060 Invalid service name
CIMIO_MSG_SEND_BAD_NODE 3061 Invalid node name
CIMIO_MSG_SEND_BAD_MSG 3062 Invalid message to send
CIMIO_MSG_SEND_FIRSTTIME 3063 Cim-IO has not yet been
initialized
CIMIO_MSG_SEND_NOCONNECT 3064 No connection is available for
this SEND
CIMIO_MSG_SEND_NOMEMORY 3065 Not enough memory
CIMIO_MSG_SEND_WRITE 3066 Error writing to socket
CIMIO_MSG_SEND_DCONV_DATA 3067 Error converting message data
CIMIO_MSG_SEND_DCONV_TPL 3068 Error converting message
template
CIMIO_MSG_SEND_NOPIPE 3070 Connection was somehow
broken
CIMIO_MSG_SEND_FULL 3071 Connection table is full for this
send
CIMIO_MSG_SEND_SOCK_CREATE 3072 Error creating socket
CIMIO_MSG_CREATE_CONNTAB_MUTEX 3073 Error creating connection table
mutex
CIMIO_MSG_DELETE_CONNTAB_MUTEX 3074 Error deleting connection table
mutex

15 Error Processing 289


Cim-IO Error Identifier Code Description

CIMIO_MSG_GET_CONNTAB_MUTEX 3075 Error getting connection table


mutex
CIMIO_MSG_RELEASE_CONNTAB_MUTE 3076 Error releasing connection table
X mutex
CIMIO_MSG_RECV_MSGSIZE 3080 Invalid message size
CIMIO_MSG_RECV_NOCONNECT 3081 There is no connection for the
given node/service
CIMIO_MSG_RECV_NOT_RDY 3082 Connection has not yet been
established for this RECEIVE
CIMIO_MSG_RECV_CHK 3083 Error checking connections
CIMIO_MSG_RECV_FIRSTTIME 3084 Cim-IO has not yet been
initialized
CIMIO_MSG_RECV_READ 3085 Error reading from inbound
socket
CIMIO_MSG_RECV_NOMEMORY 3086 Not enough memory
CIMIO_MSG_RECV_CONVBUF 3087 Error converting received
message header
CIMIO_MSG_RECV_DCONV_MSZ 3088 Error getting the maximum
buffer size for the message
CIMIO_MSG_RECV_BADMSG 3089 Received message doesn't have
a valid node or service name
CIMIO_MSG_RECV_TIMEOUT 3090 Time-out trying to receive a
message
CIMIO_MSG_RECV_BADMSGSZ 3091 Received message is too small
to be valid
CIMIO_MSG_RECV_NOPIPE 3092 Connection was somehow
broken (Broken PIPE)
CIMIO_MSG_RECV_BADCHECKSUM 3093 Checksum in message header
doesn't match calculated value
CIMIO_MSG_RECV_BADSIG 3094 Bad signature in message
header
CIMIO_MSG_TERMINATE_SOCKET 3100 Error terminating use of socket
library
CIMIO_MSG_POLL_FIRSTTIME 3110 Error accepting connection
CIMIO_MSG_POLL_CHECK 3111 Error checking connections for
incoming messages or
connection request
CIMIO_MSG_SEND_AUTHENTICATION_F 3112 Error sending Authentication
AIL information
CIMIO_MSG_RECEIVE_ACCESS_DENIED 3113 Access Denied to Client for
Security Reason
CIMIO_USR_INIT_APPID 4001 Invalid application identification
CIMIO_USR_INIT_CONN 4002 Error connecting to logger
CIMIO_USR_INIT_NAME 4003 Error obtaining the node name
CIMIO_USR_CREATE_DEVTAB_MUTEX 4004 Error creating devices table
mutex
CIMIO_USR_DELETE_DEVTAB_MUTEX 4005 Error deleting devices table
mutex

290 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_USR_GET_DEVTAB_MUTEX 4006 Error getting devices table


mutex
CIMIO_USR_RELEASE_DEVICE_MUTEX 4007 Error releasing device mutex
CIMIO_USR_CREATE_DEVICE_MUTEX 4008 Error creating device mutex
CIMIO_USR_DELETE_DEVICE_MUTEX 4009 Error deleting device mutex
CIMIO_USR_GET_DEVICE_MUTEX 4010 Error getting device mutex
CIMIO_USR_RELEASE_DEVICE_MUTEX 4011 Error releasing device mutex
CIMIO_USR_EXIT_DISCONN 4020 Error terminating a connection
CIMIO_USR_EXIT_TERMINATE 4021 Error terminating all Cim-IO
connections
CIMIO_USR_INIT_THREAD 4022 Error initializing thread
CIMIO_USR_EXIT_THREAD 4023 Error exiting thread
CIMIO_USR_MALLOC_TLS 4024 Error allocating Thread local
storage
CIMIO_USR_START_DEV_DEVICE 4025 Invalid device name
CIMIO_USR_START_DEV_NOT_INIT 4026 Cim-IO has not yet been
initialized
CIMIO_USR_START_DEV_DEVTABLE_FU 4027 Internal table of devices is full
LL
CIMIO_USR_START_DEV_VIEW 4028 Logical device is not defined
CIMIO_USR_START_DEV_CONNECT 4029 Error connecting to device
CIMIO_USR_START_DEV_NOMEMORY 4030 Not enough memory
CIMIO_USR_START_DEV_DCONVSZ 4031 Error getting size of request
message template or data tpl.
CIMIO_USR_START_DEV_SEND 4032 Error sending a STARTDEVICE
request to device
CIMIO_USR_START_DEV_TIMEOUT 4033 No time is left for receiving the
reply
CIMIO_USR_START_DEV_RECEIVE 4034 Error receiving a STARTDEVICE
reply from device
CIMIO_USR_START_DEV_BADSIG 4035 STARTDEVICE reply has a bad
signature (invalid reply )
CIMIO_USR_START_DEV_REPLY 4036 Error came from STARTDEVICE
reply packet
CIMIO_USR_GET_DEVICE 4040 Invalid device name
CIMIO_USR_GET_NTAGS 4041 Negative number of tags
CIMIO_USR_GET_PRIORITY 4042 Invalid priority
CIMIO_USR_GET_ACCTYPE 4043 Invalid access type
CIMIO_USR_GET_BADTIMEOUT 4044 Invalid timeout
CIMIO_USR_GET_RCVR 4045 Invalid receiver (for
asynchronous GET requests)
CIMIO_USR_GET_ID 4046 Invalid tag name array
CIMIO_USR_GET_INTID 4047 Invalid internal id array
CIMIO_USR_GET_TPL 4048 Invalid template
CIMIO_USR_GET_VAL 4049 Invalid value block
CIMIO_USR_GET_STS 4050 Invalid status array

15 Error Processing 291


Cim-IO Error Identifier Code Description

CIMIO_USR_GET_TSTAMP 4051 Invalid timestamp array


CIMIO_USR_GET_NOT_INIT 4052 Cim-IO has not yet been
initialized
CIMIO_USR_GET_CONNECT 4053 Error connecting to device
CIMIO_USR_GET_VIEW 4054 Logical device is not defined
CIMIO_USR_GET_NOMEMORY 4055 Not enough memory
CIMIO_USR_GET_DCONVSZ 4056 Error getting size of request
message template or data tpl
CIMIO_USR_GET_SEND 4057 Error sending a GET request to
device
CIMIO_USR_GET_RECEIVE 4058 Error receiving a GET reply
from device
CIMIO_USR_GET_REPLY 4060 Error came from GET reply
packet
CIMIO_USR_GET_UNIT 4061 Negative unit number
CIMIO_USR_GET_BADSIG 4062 GET reply has a bad signature
(invalid reply)
CIMIO_USR_GET_BADTRNUM 4063 Transaction number of the
reply didn't match the request
CIMIO_USR_GET_DEVTABLE_FULL 4064 Internal table of devices is full
CIMIO_USR_GET_TIMEOUT 4065 No time is left for receiving the
reply
CIMIO_USR_STOP_DEV_DEVICE 4066 Invalid device name
CIMIO_USR_STOP_DEV_NOT_INIT 4067 Cim-IO has not yet been
initialized
CIMIO_USR_STOP_DEV_DEVTABLE_FUL 4068 Internal table of devices is full
L
CIMIO_USR_STOP_DEV_VIEW 4069 Logical device is not defined
CIMIO_USR_STOP_DEV_CONNECT 4070 Error connecting to device
CIMIO_USR_STOP_DEV_NOMEMORY 4071 Not enough memory
CIMIO_USR_STOP_DEV_DCONVSZ 4072 Error getting size of request
message template or data tpl.
CIMIO_USR_STOP_DEV_SEND 4073 Error sending a STOPDEVICE
request to device
CIMIO_USR_STOP_DEV_TIMEOUT 4074 No time is left for receiving the
reply
CIMIO_USR_STOP_DEV_RECEIVE 4075 Error receiving a STOPDEVICE
reply from device
CIMIO_USR_STOP_DEV_BADSIG 4076 STOPDEVICE reply has a bad
signature (invalid reply )
CIMIO_USR_STOP_DEV_REPLY 4077 Error came from STOPDEVICE
reply packet
CIMIO_USR_GET_DEV_STAT_DEVICE 4078 Invalid device name
CIMIO_USR_GET_DEV_STAT_NOT_INIT 4079 Cim-IO has not yet been
initialized
CIMIO_USR_GET_DEV_STAT_DEVTABLE 4080 Internal table of devices is full
_ FULL

292 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_USR_GET_DEV_STAT_VIEW 4081 Logical device is not defined


CIMIO_USR_GET_DEV_STAT_CONNECT 4082 Error connecting to device
CIMIO_USR_GET_DEV_STAT_NOMEMOR 4083 Not enough memory
Y
CIMIO_USR_GET_DEV_STAT_DCONVSZ 4084 Error getting size of request
message template or data tpl.
CIMIO_USR_GET_DEV_STAT_SEND 4085 Error sending a GETDEVSTAT
request to device
CIMIO_USR_GET_DEV_STAT_TIMEOUT 4086 No time is left for receiving the
reply
CIMIO_USR_GET_DEV_STAT_RECEIVE 4087 Error receiving a GETDEVSTAT
reply from device
CIMIO_USR_GET_DEV_STAT_BADSIG 4088 GETDEVSTAT reply has a bad
signature (invalid reply )
CIMIO_USR_GET_DEV_STAT_REPLY 4089 Error came from GETDEVSTAT
reply packet
CIMIO_USR_REMOVE_SERVER_NOMEM 4090 Not enough memory
ORY
CIMIO_USR_REMOVE_SERVER_DCONVS 4091 Error getting size of request
Z message template or data tpl.
CIMIO_USR_REMOVE_SERVER_SEND 4092 Error sending a REMOVESRV
request to device
CIMIO_USR_REMOVE_SERVER_TIMEOU 4093 No time is left for receiving the
T reply
CIMIO_USR_REMOVE_SERVER_RECEIVE 4094 Error receiving a REMOVESRV
reply from device
CIMIO_USR_REMOVE_SERVER_BADSIG 4095 REMOVESRV reply has a bad
signature (invalid reply )
CIMIO_USR_REMOVE_SERVER_REPLY 4096 Error came from REMOVESRV
reply packet
CIMIO_USR_PUT_DEVICE 4100 Invalid device name
CIMIO_USR_PUT_NTAGS 4101 Negative number of tags
CIMIO_USR_PUT_PRIORITY 4102 Invalid priority
CIMIO_USR_PUT_ACCTYPE 4103 Invalid access type
CIMIO_USR_PUT_DEVTABLE_FULL 4104 Internal table of devices is full
CIMIO_USR_PUT_RCVR 4105 Invalid receiver (for
asynchronous PUT requests)
CIMIO_USR_PUT_ID 4106 Invalid tag name array
CIMIO_USR_PUT_INTID 4107 Invalid internal id array
CIMIO_USR_PUT_TPL 4108 Invalid template
CIMIO_USR_PUT_VAL 4109 Invalid value block
CIMIO_USR_PUT_STS 4110 Invalid status array
CIMIO_USR_PUT_OPTYPE 4111 Invalid output type array
CIMIO_USR_PUT_NOT_INIT 4112 Cim-IO has not yet been
initialized
CIMIO_USR_PUT_CONNECT 4113 Error connecting to device
CIMIO_USR_PUT_VIEW 4114 Logical device is not defined

15 Error Processing 293


Cim-IO Error Identifier Code Description

CIMIO_USR_PUT_NOMEMORY 4115 Not enough memory


CIMIO_USR_PUT_DCONVSZ 4116 Error getting size of request
message template or data tpl
CIMIO_USR_PUT_SEND 4117 Error sending a PUT request to
device
CIMIO_USR_PUT_RECEIVE 4118 Error receiving a PUT reply
from device
CIMIO_USR_PUT_BADSIG 4120 PUT reply has a bad signature
(invalid reply)
CIMIO_USR_PUT_REPLY 4121 Error came from PUT reply
packet
CIMIO_USR_PUT_BADTRNUM 4122 Transaction number of the
reply didn't match the request
CIMIO_USR_PUT_TIMEOUT 4123 No time is left for receiving the
reply
CIMIO_USR_PUT_TSTAMP 4124 Invalid timestamp array
CIMIO_USR_DECL_DEVICE 4200 Invalid device name
CIMIO_USR_DECL_NTAGS 4201 Negative number of tags
CIMIO_USR_DECL_PRIORITY 4202 Invalid priority
CIMIO_USR_DECL_ACCTYPE 4203 Invalid access type
CIMIO_USR_DECL_BADTIMEOUT 4204 Invalid timeout value
CIMIO_USR_DECL_RCVR 4205 Invalid receiver
CIMIO_USR_DECL_ID 4206 Invalid tag name array
CIMIO_USR_DECL_INTID 4207 Invalid internal id array
CIMIO_USR_DECL_TPL 4208 Invalid template
CIMIO_USR_DECL_DBAND 4209 Invalid deadband array
CIMIO_USR_DECL_STS 4210 Invalid status array
CIMIO_USR_DECL_NOT_INIT 4211 Cim-IO has not yet been
initialized
CIMIO_USR_DECL_CONNECT 4212 Error connecting to device
CIMIO_USR_DECL_VIEW 4213 Logical device is not defined
CIMIO_USR_DECL_NOMEMORY 4214 Not enough memory
CIMIO_USR_DECL_DCONVSZ 4215 Error getting size of request
message template or data tpl
CIMIO_USR_DECL_SEND 4216 Error sending a DECLARE
request to device
CIMIO_USR_DECL_RECEIVE 4217 Error receiving a DECLARE
reply from device
CIMIO_USR_DECL_TIMEOUT 4218 No time is left for receiving the
reply
CIMIO_USR_DECL_BADSIG 4219 DECLARE reply has a bad
signature (invalid reply)
CIMIO_USR_DECL_UNIT 4220 Invalid unit number
CIMIO_USR_DECL_REPLY 4221 Error in reply to DECLARE
CIMIO_USR_DECL_BADTRNUM 4222 Transaction number of the
reply didn't match the request

294 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_USR_DECL_DATARCVR 4223 Invalid data receiver


CIMIO_USR_DECL_DEVTABLE_FULL 4224 Internal table of devices is full
CIMIO_USR_DECL_SF_ENABLED_ 4225 Store and Forward is enabled
UNREACHABLE but Store and Forward
processes are unreachable
CIMIO_USR_CANC_DEVICE 4300 Invalid device name
CIMIO_USR_CANC_NTAGS 4301 Negative number of tags
CIMIO_USR_CANC_PRIORITY 4302 Invalid priority
CIMIO_USR_CANC_ACCTYPE 4303 Invalid access type
CIMIO_USR_CANC_RCVR 4305 Invalid receiver
CIMIO_USR_CANC_ID 4306 Invalid tag name array
CIMIO_USR_CANC_INTID 4307 Invalid internal id array
CIMIO_USR_CANC_TPL 4308 Invalid template
CIMIO_USR_CANC_STS 4310 Invalid status array
CIMIO_USR_CANC_NOT_INIT 4311 Cim-IO has not yet been
initialized
CIMIO_USR_CANC_CONNECT 4312 Error connecting to device
CIMIO_USR_CANC_VIEW 4313 Logical device is not defined
CIMIO_USR_CANC_NOMEMORY 4314 Not enough memory
CIMIO_USR_CANC_DCONVSZ 4315 Error getting size of request
message template or data tpl
CIMIO_USR_CANC_SEND 4316 Error sending a CANCEL
request to device
CIMIO_USR_CANC_RECEIVE 4317 Error receiving a CANCEL reply
from device
CIMIO_USR_CANC_TIMEOUT 4318 No time is left for receiving the
reply
CIMIO_USR_CANC_BADSIG 4319 CANCEL reply has a bad
signature (invalid reply)
CIMIO_USR_CANC_UNIT 4320 Invalid unit number
CIMIO_USR_CANC_REPLY 4321 Error in reply to CANCEL
CIMIO_USR_CANC_BADTRNUM 4322 Transaction number of the
reply didn't match the request
CIMIO_USR_CANC_DEVTABLE_FULL 4323 Internal table of devices is full
CIMIO_USR_CANC_SF_ENABLED_ 4324 Store and Forward is enabled
UNREACHABLE but Store and Forward
processes are unreachable
CIMIO_USR_STOPGET_DEVICE 4330 Invalid device name
CIMIO_USR_STOPGET_PRIORITY 4331 Invalid priority
CIMIO_USR_STOPGET_NOT_INIT 4332 Cim-IO has not yet been
initialized
CIMIO_USR_STOPGET_CONNECT 4333 Error connecting to device
CIMIO_USR_STOPGET_VIEW 4334 Logical device is not defined
CIMIO_USR_STOPGET_NOMEMORY 4335 Not enough memory
CIMIO_USR_STOPGET_DCONVSZ 4336 Error getting size of request
message template or data tpl

15 Error Processing 295


Cim-IO Error Identifier Code Description

CIMIO_USR_STOPGET_SEND 4337 Error sending a STOPGET


request to device
CIMIO_USR_STOPGET_UNIT 4338 Invalid unit number
CIMIO_USR_STOPGET_DEVTABLE_FULL 4339 Internal table of devices is full
CIMIO_USR_GETHIST_DEVICE 4340 Invalid device name
CIMIO_USR_GETHIST_NTAGS 4341 Negative number of tags
CIMIO_USR_GETHIST_PRIORITY 4342 Invalid priority
CIMIO_USR_GETHIST_ACCTYPE 4343 Invalid access type
CIMIO_USR_GETHIST_BADTIMEOUT 4344 Invalid timeout
CIMIO_USR_GETHIST_RCVR 4345 Invalid receiver (for
asynchronous GET requests)
CIMIO_USR_GETHIST_ID 4346 Invalid tag name array
CIMIO_USR_GETHIST_INTID 4347 Invalid internal id array
CIMIO_USR_GETHIST_TPL 4348 Invalid template
CIMIO_USR_GETHIST_VAL 4349 Invalid value block
CIMIO_USR_GETHIST_STS 4350 Invalid status array
CIMIO_USR_GETHIST_TSTAMP 4351 Invalid timestamp array
CIMIO_USR_GETHIST_NOT_INIT 4352 Cim-IO has not yet been
initialized
CIMIO_USR_GETHIST_CONNECT 4353 Error connecting to device
CIMIO_USR_GETHIST_VIEW 4354 Logical device is not defined
CIMIO_USR_GETHIST_NOMEMORY 4355 Not enough memory
CIMIO_USR_GETHIST_DCONVSZ 4356 Error getting size of req.
message template or data tpl
CIMIO_USR_GETHIST_SEND 4357 Error sending a Historical GET
request to device
CIMIO_USR_GETHIST_RECEIVE 4358 Error receiving a Historical GET
reply from device
CIMIO_USR_GETHIST_REPLY 4360 Error came from Historical GET
reply packet
CIMIO_USR_GETHIST_UNIT 4361 Negative unit number
CIMIO_USR_GETHIST_BADSIG 4362 Historical GET reply has a bad
signature (invalid reply)
CIMIO_USR_GETHIST_BADTRNUM 4363 Transaction number of the
reply didn't match the request
CIMIO_USR_GETHIST_DEVTABLE_FULL 4364 Internal table of devices is full
CIMIO_USR_GETHIST_TIMEOUT 4365 No time is left for receiving the
reply
CIMIO_USR_GETHIST_NVALS 4366 Invalid number of historical
values array
CIMIO_USR_GETHIST_STARTTIME 4367 Invalid historical start times
array
CIMIO_USR_GETHIST_ENDTIME 4368 Invalid historical end times
array
CIMIO_USR_GETHIST_ADJUST 4369 Error adjusting historical data
template

296 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_USR_STOPPUT_DEVICE 4380 Invalid device name


CIMIO_USR_STOPPUT_PRIORITY 4381 Invalid priority
CIMIO_USR_STOPPUT_NOT_INIT 4382 Cim-IO has not yet been
initialized
CIMIO_USR_STOPPUT_CONNECT 4383 Error connecting to device
CIMIO_USR_STOPPUT_VIEW 4384 Logical device is not defined
CIMIO_USR_STOPPUT_NOMEMORY 4385 Not enough memory
CIMIO_USR_STOPPUT_DCONVSZ 4386 Error getting size of request
message template or data tpl
CIMIO_USR_STOPPUT_SEND 4387 Error sending a STOPPUT
request to device
CIMIO_USR_STOPPUT_UNIT 4388 Invalid unit number
CIMIO_USR_STOPPUT_DEVTABLE_FULL 4389 Internal table of devices is full
CIMIO_USR_READ_DEVICE 4400 Invalid device name
CIMIO_USR_READ_NTAGS 4401 Negative number of tags
CIMIO_USR_READ_PRIORITY 4402 Invalid priority
CIMIO_USR_READ_ACCTYPE 4403 Invalid access type
CIMIO_USR_READ_RCVR 4405 Invalid receiver
CIMIO_USR_READ_ID 4406 Invalid tag name array
CIMIO_USR_READ_INTID 4407 Invalid internal id array
CIMIO_USR_READ_TPL 4408 Invalid template
CIMIO_USR_READ_STS 4410 Invalid status array
CIMIO_USR_READ_NOT_INIT 4411 Cim-IO has not yet been
initialized
CIMIO_USR_READ_CONNECT 4412 Error connecting to device
CIMIO_USR_READ_VIEW 4413 Logical device is not defined
CIMIO_USR_READ_NOMEMORY 4414 Not enough memory
CIMIO_USR_READ_DCONVSZ 4415 Error getting size of request
message template or data tpl
CIMIO_USR_READ_RECEIVE 4417 Error receiving from device
CIMIO_USR_READ_RECEIVE_TIMEOUT 4418 Timeout due to no messages
CIMIO_USR_READ_BADSIG 4419 Incoming message has a bad
signature (invalid reply)
CIMIO_USR_READ_UNIT 4420 Invalid storage for unit number
CIMIO_USR_READ_REPLY 4421 Error in incoming message
CIMIO_USR_READ_VAL 4422 Invalid storage for values
CIMIO_USR_READ_TIMESTAMP 4423 Invalid storage for timestamps
CIMIO_USR_READ_OPTYPE 4424 Invalid storage for Output Type
information
CIMIO_USR_READ_DEADBAND 4425 Invalid storage for Deadband
information
CIMIO_USR_READ_BADTRANSTYPE 4426 Invalid transaction type
CIMIO_USR_READ_DEVTABLE_FULL 4427 Internal table of devices is full
CIMIO_USR_READ_REPLYTYPE 4428 Invalid storage for reply type
CIMIO_USR_READ_NODE 4429 Invalid node name

15 Error Processing 297


Cim-IO Error Identifier Code Description

CIMIO_USR_READ_BADMSG 4430 Invalid message holder


CIMIO_USR_READ_NODEV 4431 No logical devices have been
registered yet
CIMIO_USR_RECEIVE_DEVICE 4450 Invalid device name
CIMIO_USR_RECEIVE_NTAGS 4451 Negative number of tags
CIMIO_USR_RECEIVE_PRIORITY 4452 Invalid priority
CIMIO_USR_RECEIVE_ACCTYPE 4453 Invalid access type
CIMIO_USR_RECEIVE_RCVR 4455 Invalid receiver
CIMIO_USR_RECEIVE_ID 4456 Invalid tag name array
CIMIO_USR_RECEIVE_INTID 4457 Invalid internal id array
CIMIO_USR_RECEIVE_TPL 4458 Invalid template
CIMIO_USR_RECEIVE_STS 4460 Invalid status array
CIMIO_USR_RECEIVE_NOT_INIT 4461 Cim-IO has not yet been
initialized
CIMIO_USR_RECEIVE_CONNECT 4462 Error connecting to device
CIMIO_USR_RECEIVE_VIEW 4463 Logical device is not defined
CIMIO_USR_RECEIVE_NOMEMORY 4464 Not enough memory
CIMIO_USR_RECEIVE_DCONVSZ 4465 Error getting size of request
message tpl or data tpl
CIMIO_USR_RECEIVE_RECEIVE 4467 Error receiving from device
CIMIO_USR_RECEIVE_BADSIG 4469 Incoming message has a bad
signature (invalid reply)
CIMIO_USR_RECEIVE_UNIT 4470 Invalid storage for unit number
CIMIO_USR_RECEIVE_REPLY 4471 Error in incoming message
CIMIO_USR_RECEIVE_VAL 4472 Invalid storage for values
CIMIO_USR_RECEIVE_TIMESTAMP 4473 Invalid storage for timestamps
CIMIO_USR_RECEIVE_OPTYPE 4474 Invalid storage for Output Type
information
CIMIO_USR_RECEIVE_DEADBAND 4475 Invalid storage for Deadband
information
CIMIO_USR_RECEIVE_BADTRANSTYPE 4476 Invalid transaction type
CIMIO_USR_RECEIVE_DEVTABLE_FULL 4477 Internal table of devices is full
CIMIO_USR_RECEIVE_REPLYTYPE 4478 Invalid storage for reply type
CIMIO_USR_RECEIVE_NVALS 4479 Invalid storage for number of
historical values
CIMIO_USR_RECEIVE_STARTTIMES 4480 Invalid storage for start times
of historical values
CIMIO_USR_RECEIVE_ENDTIMES 4481 Invalid storage for end times of
historical values
CIMIO_USR_VUEDEV_LOGDEV 4500 Invalid logical device
CIMIO_USR_VUEDEV_DEV 4501 Invalid storage for physical
device name
CIMIO_USR_VUEDEV_NODE 4502 Invalid storage for node name
CIMIO_USR_VUEDEV_NOFILE 4503 Device definition file does not
exist

298 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_USR_VUEDEV_PARSE 4504 Error reading device definition


file
CIMIO_USR_VUEDEV_NOREC 4505 Logical device not found
CIMIO_USR_ADDDEV_LOGDEV 4600 Invalid logical device
CIMIO_USR_ADDDEV_DEV 4601 Invalid storage for physical
device name
CIMIO_USR_ADDDEV_NODE 4602 Invalid storage for node name
CIMIO_USR_ADDDEV_NOFILE 4603 Device definition file does not
exist
CIMIO_USR_ADDDEV_ADD 4604 Error adding a new entry to
logical device definition file
CIMIO_USR_ADDDEV_DUP 4605 Attempt to add a device that
already exists
CIMIO_USR_MODDEV_LOGDEV 4700 Invalid logical device
CIMIO_USR_MODDEV_DEV 4701 Invalid storage for physical
device name
CIMIO_USR_MODDEV_NODE 4702 Invalid storage for node name
CIMIO_USR_MODDEV_NOFILE 4703 Device logical definition file
does not exist
CIMIO_USR_MODDEV_PARSE 4705 Error reading device definition
file
CIMIO_USR_MODDEV_NOREC 4706 Logical device not found
CIMIO_USR_MODDEV_FILECOPY 4707 Error backing-up logical device
definition file
CIMIO_USR_MODDEV_NOBAKFILE 4708 Error opening logical device
definition backup file
CIMIO_USR_MODDEV_PUT 4709 Error writing an entry to logical
device definition file
CIMIO_USR_DELDEV_LOGDEV 4800 Invalid logical device name
CIMIO_USR_DELDEV_NOFILE 4803 Error creating logical device
definition file
CIMIO_USR_DELDEV_PARSE 4805 Error reading logical device
definition entry
CIMIO_USR_DELDEV_PUT 4806 Error writing a logical device
definition entry
CIMIO_USR_DELDEV_NOREC 4807 Logical device not found
CIMIO_USR_DELDEV_NOBAKFILE 4808 Error opening logical device
definition backup
CIMIO_USR_DELDEV_FILECOPY 4809 Error making a backup of
logical device definitions
CIMIO_USR_FILECP_NOINFILE 4850 Error opening source file for
copying
CIMIO_USR_FILECP_NOCREATE 4851 Error opening destination file
for copying
CIMIO_USR_SEND_MSG_DEVICE 4860 Invalid device name
CIMIO_USR_SEND_MSG_PRIORITY 4861 Invalid priority
CIMIO_USR_SEND_MSG_ACCTYPE 4862 Invalid access type

15 Error Processing 299


Cim-IO Error Identifier Code Description

CIMIO_USR_SEND_MSG_RCVR 4863 Invalid receiver (for


asynchronous SEND_MSG
requests)
CIMIO_USR_SEND_MSG_TPL 4864 Invalid template
CIMIO_USR_SEND_MSG_VAL 4865 Invalid value block
CIMIO_USR_SEND_MSG_NOT_INIT 4866 Cim-IO has not yet been
initialized
CIMIO_USR_SEND_MSG_DEVTABLE_FU 4867 Internal table of devices is full
LL
CIMIO_USR_SEND_MSG_VIEW 4868 Logical device is not defined
CIMIO_USR_SEND_MSG_CONNECT 4869 Error connecting to device
CIMIO_USR_SEND_MSG_TPL_SIZE 4870 Error calculating template size
CIMIO_USR_SEND_MSG_NOMEM 4871 Not enough memory
CIMIO_USR_SEND_MSG_MSGSIZE 4872 Error calculating message size
CIMIO_USR_SEND_MSG_SEND 4873 Error sending a message to
device
CIMIO_USR_SEND_MSG_TIMEOUT 4874 No time is left for receiving the
reply
CIMIO_USR_SEND_MSG_RECEIVE 4875 Error receiving the reply from
device
CIMIO_USR_SEND_MSG_BADSIG 4876 Reply has a bad signature
(invalid reply)
CIMIO_USR_SHUTDOWN_LOGDEV 4920 Error looking up logical device
name
CIMIO_USR_SHUTDOWN_SEND 4921 Error sending a shutdown
request to a device or logger
CIMIO_USR_SHUTDOWN_NOT_INIT 4922 Cim-IO has yet not been
initialized
CIMIO_USR_SHUTDOWN_DEVTABLE_FU 4923 Internal table of devices is full
LL
CIMIO_USR_SHUTDOWN_VIEW 4924 Logical device is not defined
CIMIO_USR_SHUTDOWN_CONNECT 4925 Error connecting to device
CIMIO_USR_PING_DEVICE 4930 Invalid device name
CIMIO_USR_PING_NOT_INIT 4931 Cim-IO has not yet been
initialized
CIMIO_USR_PING_DEVTABLE_FULL 4932 Internal table of devices is full
CIMIO_USR_PING_VIEW 4933 Logical device is not defined
CIMIO_USR_PING_NOMEMORY 4934 Not enough memory
CIMIO_USR_PING_DCONVSZ 4935 Error getting size of request
message tpl or data tpl
CIMIO_USR_PING_SEND 4936 Error sending PING message
CIMIO_USR_PING_NOT_PING_TIME 4937 It is not yet time to ping
(Informational message)
CIMIO_USR_PING_FAIL_ALL 4938 Neither DLGP nor Store and
Forward processes could be
pinged
CIMIO_USR_PING_FAIL_DLGP 4939 DLGP could not be pinged

300 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_USR_PING_FAIL_SF 4940 Store and Forward processes


could not be pinged
CIMIO_USR_PING_NOT_PING_TIME_AL 4941 It is neither ping time for DLGP
L nor for Store and Forward
processes (Informational
message)
CIMIO_USR_PING_NOT_PING_TIME_DL 4942 It is not ping time yet for DLGP
GP (Informational message)
CIMIO_USR_PING_NOT_PING_TIME_SF 4943 It is not ping time yet for Store
and Forward processes
(Informational message)
CIMIO_USR_CONN_SEND 4944 Error sending connect
notification
CIMIO_USR_CONN_DEVICE 4950 Error in device name
CIMIO_USR_CONN_DEVTABLE_FULL 4951 Internal table of devices is full
CIMIO_USR_CONN_VIEW 4952 Logical device is not defined
CIMIO_USR_CONN_CONNECT 4953 Error connecting to device
CIMIO_USR_CONN_NOT_INIT 4954 Cim-IO has yet not been
initialized
CIMIO_USR_DISCONN_DEVICE 4960 Error in device name
CIMIO_USR_DISCONN_NOT_INIT 4961 Cim-IO has yet not been
initialized
CIMIO_USR_DISCONN_NOCONN 4962 There is no connection for this
device
CIMIO_USR_DISCONN_DISCON 4963 Error disconnecting from device
CIMIO_USR_SCAN_ENABLE_DEVICE 4970 Invalid device name
CIMIO_USR_SCAN_ENABLE_DEVICE_NO 4971 Invalid device name
T_ FOUND
CIMIO_USR_SCAN_ENABLE_TABLE_FUL 4972 Device table is full
L
CIMIO_USR_SCAN_ENABLE_VIEW_DEVI 4973 Logical device is not defined
CE
CIMIO_USR_SCAN_DISABLE_DEVICE 4980 Invalid device name
CIMIO_USR_SCAN_DISABLE_DEVICE_N 4981 Invalid device name
OT_ FOUND
CIMIO_USR_SCAN_DISABLE_TABLE_FU 4982 Device table is full
LL
CIMIO_USR_SCAN_DISABLE_VIEW_DEV 4983 Logical device is not defined
ICE
CIMIO_USR_ACKMSG_SEND 4990 Error sending
acknowledgement
CIMIO_USR_BLD_MSG_BAD_ARG 4993 Error in arguments
CIMIO_USR_BLD_MSG_INIT 4994 Cim-IO has yet not been
initialized
CIMIO_USR_BLD_MSG_NOMEMORY 4995 Not enough memory
CIMIO_ERR_ERRBLK_FULL 5001 Error block is full
CIMIO_ERR_INIT_THREAD 5002 Error initializing thread

15 Error Processing 301


Cim-IO Error Identifier Code Description

CIMIO_ERR_EXIT_THREAD 5003 Error exiting thread


CIMIO_ERR_MALLOC_TLS 5004 Error allocating Thread local
storage
CIMIO_ERR_LOGMSG_APPID 5100 Invalid application name
CIMIO_ERR_LOGMSG_NAME 5101 Error obtaining local node
name
CIMIO_ERR_LOGMSG_NOMEMORY 5102 Not enough memory
CIMIO_ERR_LOGMSG_SEND 5103 Error sending message to Cim-
IO logger
CIMIO_ERR_LOGMSG_CONN 5104 Error establishing connection to
Cim-IO logger
CIMIO_ERR_LOGMSG_LOGFILE 5105 Could not Open Log File (open
function returned NULL pointer)
CIMIO_ERR_LOGBLK_APPID 5200 Invalid application name
CIMIO_ERR_LOGBLK_NAME 5201 Error obtaining local node
name
CIMIO_ERR_LOGBLK_NOMEMORY 5202 Not enough memory
CIMIO_ERR_LOGBLK_SEND 5203 Error sending message to Cim-
IO logger
CIMIO_ERR_LOGBLK_ERRBLK 5204 Invalid error block
CIMIO_ERR_LOGBLK_CONN 5205 Error establishing connection to
Cim-IO logger
CIMIO_ERR_FMTBLK_APPID 5300 Invalid application name
CIMIO_ERR_FMTBLK_NAME 5301 Error obtaining local node
name
CIMIO_ERR_FMTBLK_NOMEMORY 5302 Not enough memory
CIMIO_ERR_FMTBLK_SEND 5303 Error sending message to Cim-
IO logger
CIMIO_ERR_FMTBLK_ERRBLK 5304 Invalid error block
CIMIO_ERR_FMTBLK_ERRMSG 5305 Invalid storage for error
message
CIMIO_ERR_FMTBLK_RECV 5306 Error receiving FMTBLK reply
from Cim-IO logger
CIMIO_ERR_FMTBLK_BADSIG 5308 Invalid reply header
CIMIO_ERR_FMTBLK_BADTRNUM 5309 Transaction number of the
reply did not match the request
CIMIO_ERR_FMTBLK_CONN 5310 Error establishing connection to
Cim-IO logger
CIMIO_ERR_FMTSTS_RECV 5406 Error formatting statuses
CIMIO_LOG_REPLY_ERRMSG 6001 Invalid error message in error
reply
CIMIO_LOG_REPLY_DEST 6002 Invalid destination for error
reply
CIMIO_LOG_REPLY_SRC 6003 Invalid source for error reply
CIMIO_LOG_REPLY_NOMEMORY 6004 Not enough memory
CIMIO_LOG_REPLY_SEND 6005 Error sending the error reply

302 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_LOG_NOFILE 6010 Could not open error definition


file
CIMIO_LOG_NOTERRFILE 6011 File is not error file (there is no
keyword FACILITY)
CIMIO_LOG_FACILNAME 6012 Error file does not have facility
name
CIMIO_LOG_FACILNUM 6013 Error file does not have facility
number
CIMIO_LOG_NONUMBER 6014 Error entry has identifier but no
error code
CIMIO_LOG_NOCREATE 6015 Error creating Cim-IO log file
CIMIO_LOG_NAME 6016 Error getting local node name
CIMIO_LOG_LOOK_DICT 6020 Invalid error dictionary
CIMIO_LOG_LOOK_IDENT 6021 Invalid storage for error
identifier
CIMIO_LOG_LOOK_TEXT 6022 Invalid storage for error text
CIMIO_LOG_LOOK_FACIL 6023 Invalid storage for error facility
name
CIMIO_LOG_LOOK_FNOTFOUND 6024 Facility not found in error
dictionary
CIMIO_LOG_LOOK_ENOTFOUND 6025 Error code not found in error
dictionary
CIMIO_LOG_FMT_IDENT 6030 Invalid error identifier
CIMIO_LOG_FMT_TEXT 6031 Invalid error text
CIMIO_LOG_FMT_FACIL 6032 Invalid facility name
CIMIO_LOG_FMT_TIME 6033 Error obtaining local time
CIMIO_LOG_FMT_CVT 6034 Error converting local time to a
time string
CIMIO_DCONV_SHORT_INBUF 7001 Invalid source for Cim-IO Short
conversion
CIMIO_DCONV_SHORT_OUTBUF 7002 Invalid destination for Cim-IO
Short conversion
CIMIO_DCONV_SHORT_TYPE 7003 Invalid conversion type for
Cim-IO Short conversion
CIMIO_DCONV_LONG_INBUF 7020 Invalid source for Cim-IO Long
conversion
CIMIO_DCONV_LONG_OUTBUF 7021 Invalid destination for Cim-IO
Long conversion
CIMIO_DCONV_LONG_TYPE 7022 Invalid conversion type for
Cim-IO Long conversion
CIMIO_DCONV_REAL_INBUF 7040 Invalid source for Cim-IO Real
conversion
CIMIO_DCONV_REAL_OUTBUF 7041 Invalid destination for Cim-IO
Real conversion
CIMIO_DCONV_REAL_TYPE 7042 Invalid conversion type for
Cim-IO Real conversion
CIMIO_DCONV_DBL_INBUF 7060 Invalid source for Cim-IO
Double conversion

15 Error Processing 303


Cim-IO Error Identifier Code Description

CIMIO_DCONV_DBL_OUTBUF 7061 Invalid destination for Cim-IO


Double conversion
CIMIO_DCONV_DBL_TYPE 7062 Invalid conversion type for
Cim-IO Double conversion
CIMIO_DCONV_TIME_INBUF 7080 Invalid source for Cim-IO Time
conversion
CIMIO_DCONV_TIME_OUTBUF 7081 Invalid destination for Cim-IO
Time conversion
CIMIO_DCONV_TIME_TYPE 7082 Invalid conversion type for
Cim-IO Time conversion
CIMIO_DCONV_ASCII_INBUF 7100 Invalid source for Cim-IO ASCII
conversion
CIMIO_DCONV_ASCII_OUTBUF 7101 Invalid destination for Cim-IO
ASCII conversion
CIMIO_DCONV_ASCII_DSIZE 7102 Invalid conversion type for
Cim-IO ASCII conversion
CIMIO_DCONV_BUF_DATA 7120 Invalid storage for data
conversion
CIMIO_DCONV_BUF_TPL 7121 Invalid template
CIMIO_DCONV_BUF_MSG 7122 Invalid data to be converted
CIMIO_DCONV_BUF_CVTYPE 7123 Invalid conversion type
CIMIO_DCONV_BUF_NOSTRUCT 7124 Template does not start with a
Cim-IO structure
CIMIO_DCONV_BUF_LONG 7125 Error converting Cim-IO Long
value
CIMIO_DCONV_BUF_SHORT 7126 Error converting Cim-IO Short
value
CIMIO_DCONV_BUF_ASCII 7127 Error converting Cim-IO ASCII
value
CIMIO_DCONV_BUF_REAL 7128 Error converting Cim-IO Real
value
CIMIO_DCONV_BUF_DOUBLE 7129 Error converting Cim-IO Long
value
CIMIO_DCONV_BUF_TIME 7130 Error converting Cim-IO Time
value
CIMIO_DCONV_BUF_BADTYPE 7131 Invalid data type
CIMIO_DCONV_SIZE_TPL 7180 Invalid template
CIMIO_DCONV_SIZE_NOSTRUCT 7181 Template does not start with a
Cim-IO structure
CIMIO_DCONV_SIZE_BADTYPE 7182 Invalid data type
CIMIO_DCONV_MAXSIZE_TPL 7200 Invalid template
CIMIO_DCONV_MAXSIZE_NOSTRUCT 7201 Template does not start with a
Cim-IO structure
CIMIO_DCONV_MAXSIZE_BADTYPE 7202 Invalid data type
CIMIO_DAL_PARSE_SIZE 8002 Error obtaining data template
size
CIMIO_DAL_BLD_GETREP_SZ 8003 Error obtaining data template
size

304 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_DAL_MSGSZ_DCONVSZ 8005 Error obtaining message size


CIMIO_DAL_NOMEM 8006 Not enough memory
CIMIO_DAL_INIT 8007 Error initializing CIMIO
CIMIO_DAL_GETHOST 8008 Error getting node name
CIMIO_DAL_DATATYPE_NOTFOUND 8009 Requested item was not found
in the given template
CIMIO_DAL_DATATYPE_NOFIELD 8010 Template does not have any
elements
CIMIO_DAL_DATATYPE_NOTAGS 8011 Invalid tag number
CIMIO_DAL_DATATYPE_TAGSZ 8012 Invalid tag size location
CIMIO_DAL_DATATYPE_TPL 8013 Invalid template
CIMIO_DAL_DATATYPE_FAIL 8014 Error obtaining size of the
template
CIMIO_DAL_PARSEREQ_FAIL 8015 Error obtaining size of the
template in parsing a request
CIMIO_DAL_PARSEREQ_INVMSG 8016 Invalid message or transaction
type
CIMIO_DAL_PARSEREP_FAIL 8017 Error obtaining size of the
template in parsing a reply
CIMIO_DAL_PARSEREP_INVMSG 8018 Invalid message or transaction
type
CIMIO_DAL_BLDREPLY_FAIL 8019 Error building a reply message
CIMIO_DAL_BLDREPLY_NOMEMORY 8020 Out of memory building a reply
message
CIMIO_DAL_DSIZE_FAIL 8021 Error obtaining size of the
template
CIMIO_DAL_GETITEM_FAIL 8022 Error obtaining information
about an item
CIMIO_DAL_GETITEM_INVITEM 8023 Invalid transaction or message
type
CIMIO_DAL_ACCEPT_FAIL 8024 Error in accepting connection
CIMIO_DAL_SEND_FAIL 8025 Error sending message
CIMIO_DAL_RECEIVE_FAIL 8026 Error receiving incoming
message
CIMIO_DAL_GETITEM_EXCPARAM 8027 Parameters 1 and 2 can not be
non-NULL at the same time
CIMIO_DAL_GETITEM_NOPARAM 8028 Either parameter 1 or
parameter 2 has to be non-
NULL
CIMIO_DAL_DATATYPE_INVDT 8029 Invalid Data Type specified in
Data Template
CIMIO_DAL_MALLOC_TLS 8030 Error allocating thread local
storage
CIMIO_DAL_SHUTDOWN_NODE 8040 Invalid node name
CIMIO_DAL_SHUTDOWN_SERV 8041 Invalid service name
CIMIO_DAL_SHUTDOWN_CONNECT 8042 Error connecting to the process
to be shutdown

15 Error Processing 305


Cim-IO Error Identifier Code Description

CIMIO_DAL_SHUTDOWN_SEND 8043 Error sending to the process to


be shutdown
CIMIO_DAL_BLD_GETHISTREP_SZ 8044 Error obtaining historical data
template size
CIMIO_DAL_ADJUST_TPL 8045 Error adjusting historical data
template
CIMIO_DAL_ADJUST_TPL_GETTPL 8046 Error getting template
information while adjusting
CIMIO_DAL_BLD_MSG_BAD_ARG 8057 Invalid argument in
CIMIO_SERVER_BLD_MSG call
CIMIO_DAL_BLD_MSG_INVSEQ 8058 CIMIO_SERVER_INIT needs to
be called first
CIMIO_DAL_BLD_MSG_NOMEMORY 8059 malloc failed in
CIMIO_SERVER_BLD_MSG
CIMIO_DAL_PARSE_MSG_BAD_ARG 8060 Invalid argument in
CIMIO_SERVER_PARSE_MSG
call
CIMIO_DAL_PARSE_MSG_INVSEQ 8061 CIMIO_SERVER_INIT needs to
be called first
CIMIO_DAL_DATATYPES_TAGSZ 8062 Invalid tag size location
CIMIO_DAL_DATATYPES_TPL 8063 Invalid Template Argument
CIMIO_DAL_DATATYPES_TYPES 8064 Invalid DataTypes Argument
CIMIO_DAL_DATATYPES_NOFIELD 8065 Template does not have any
element
CIMIO_DAL_DATATYPES_DSIZE 8066 Error obtaining Size of the
Template
CIMIO_DAL_DEVICE_DATATYPES_TPL 8067 Invalid Template Argument
CIMIO_DAL_DEVICE_DATATYPES_TYPE 8068 Invalid DeviceDataType
S argument
CIMIO_DAL_DEVICE_DATATYPES_NOFI 8069 Template does not have any
ELD element
CIMIO_DAL_DEVICE_DATATYPES_DSIZ 8070 Error obtaining Size of the
E Template
CIMIO_DAL_INIT_THREAD 8071 Error initializing thread
CIMIO_DAL_EXIT_THREAD 8072 Error exiting thread
CIMIO_DAL_CANCEL_THREAD 8073 Error canceling thread
CIMIO_DAL_CONNECT_NODE 8080 Error in node name
CIMIO_DAL_CONNECT_SERVICE 8081 Error in service name
CIMIO_DAL_CONNECT_SEND 8082 Error sending CONNECT
notification to service
CIMIO_DAL_CONNECT_CONNECT 8083 Error connecting to service
CIMIO_DAL_QUEUE_INIT_FAIL 8120 Error initializing server
message queue
CIMIO_DAL_QUEUE_KILL_FAIL 8121 Error destroying server
message queue
CIMIO_QUE_EMPTY 9002 Server message queue empty

306 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_QUE_INIT_NOMEMORY 9004 Memory allocate error


initializing queue
CIMIO_QUE_ADD_NOMEMORY 9006 Memory allocate error adding
to queue
CIMIO_QUE_READ_NOMEMORY 9008 Memory allocate error reading
from queue
CIMIO_QUE_CREATE_MUTEX_FAIL 9010 Unable to create mutex
CIMIO_QUE_LOCK_MUTEX_FAIL 9012 Unable to lock mutex
CIMIO_QUE_UNLOCK_MUTEX_FAIL 9014 Unable to unlock mutex
CIMIO_QUE_DESTROY_MUTEX_FAIL 9016 Unable to destroy mutex
CIMIO_TEST_API 10001 Error opening tag list file
_READTAGS_OPEN_TAGLIST
CIMIO_TEST_API 10002 Unknown deadband type for
_READTAGS_DEADBAND the tag
CIMIO_TEST_API _READTAGS_VALUE 10003 No value has been specified or
invalid value
CIMIO_TEST_API _READTAGS_OPTYPE 10004 No output type has been
specified or invalid output type
CIMIO_TEST_API 10005 Negative or zero data size
_READTAGS_DATASIZE
CIMIO_TEST_API 10006 Invalid data type
_READTAGS_DATATYPE
CIMIO_TEST_API _READTAGS_NTAGS 10007 User asked for more tags than
there are in tag list file
CIMIO_TEST_API _NOMEMORY 10020 Out of memory error
CIMIO_X_DEVICE_ERROR 11001 Device Error
CIMIO_X_STATUS_BAD 11002 Bad Status
CIMIO_X_DCONV_UNSUPPORTED_TYPE 11004 Driver does not support this
Data Type
CIMIO_X_DCONV_UNKNOWN_TYPE 11005 Unknown Data Type
CIMIO_X_DCONV_OVERFLOW 11006 Data Overflow
CIMIO_X_INVALID_TAG 11008 Invalid Tag Name
CIMIO_X_COULD_NOT_CONTINUE 11009 Could Not Continue Processing
List
CIMIO_X_MEMALLOC_FAILURE 11010 Memory Allocation Failure
CIMIO_X_UNKNOWN_DEADBAND 11011 Unknown Deadband
CIMIO_X_UNSUPPORTED_DEADBAND_ 11012 Unsupported Deadband Type
TYPE
CIMIO_X_ADD_UNSOL_FAILED 11013 Failed to add point to
unsolicited list
CIMIO_X_REM_UNSOL_FAILED 11014 Failed to remove point from
unsolicited list
CIMIO_X_UNSOL_TABLE_FULL 11015 Could not find an available
unsolicited list
CIMIO_X_UNSUPPORTED_OUTPUT_TYPE 11016 Specified output type is not
supported

15 Error Processing 307


Cim-IO Error Identifier Code Description

CIMIO_X_DO_NOT_OUTPUT 11017 Point was requested not to be


Output
CIMIO_X_DCONV_W_ASCII_FAILED 11018 Conversion from ASCII failed
CIMIO_X_DATASIZE 11019 Error obtaining data size based
on data template
CIMIO_X_OPERATION_SUCCESS 11101 Operation was Successful
CIMIO_X_OPERATION_FAILED 11102 Operation Failed
CIMIO_X_LOADFILE_FAILED 11103 File Loading Failure
CIMIO_X_WRITEFILE_FAILED 11104 File Saving Failure
CIMIO_X_UNKNOWN 11105 Unknown Error
CIMIO_X_PS_STATUS_GOOD 11201 Good Point Status
CIMIO_X_PS_STATUS_CANCELED 11202 Point Was Successfully
Canceled
CIMIO_X_PS_STATUS_ALREADY_ 11203 Point Already Declared
DECLARED
CIMIO_X_PS_STATUS_DECLARED 11204 Point Was Successfully
Declared
CIMIO_X_PS_STATUS_NEWTAG 11205 New Point
CIMIO_X_PS_STATUS_WASNOT_DECLA 11206 Point Not Canceled: Point Was
RED Not Declared
CIMIO_X_PS_STATUS_BAD 11207 Bad Point Status
CIMIO_X_PS_STATUS_ENTRY_ 11208 Device Hash Table Entry
UNAVAILABLE Already Used
CIMIO_X_PS_STATUS_CANCEL_FAILED 11209 Point Cancellation Failed:
Unknown Point
CIMIO_X_PS_STATUS_UNKNOWN 11210 Point Status Unknown
CIMIO_SF_LIST_ADDLIST_NOMEMORY 13001 Out of memory when adding
request to scan list
CIMIO_SF_LIST_REMOVELIST_NOTFOU 13005 Request not found in scan list
ND
CIMIO_SF_LIST_SAVELIST_NOFILENAM 13010 Invalid filename: Internal error
E
CIMIO_SF_LIST_SAVELIST_BADFILENA 13011 Invalid filename for scan list
ME file
CIMIO_SF_LIST_SAVELIST_OPEN 13012 Error opening scan list file
CIMIO_SF_LIST_SAVELIST_WRITE_HDR 13013 Error writing scan list file
header
CIMIO_SF_LIST_SAVELIST_WRITE_ENT 13014 Error writing scan list entry
RY
CIMIO_SF_LIST_SAVELIST_WRITE_MSG 13015 Error writing message to scan
list file
CIMIO_SF_LIST_SAVELIST_CLOSE 13016 Error closing scan list file
CIMIO_SF_LIST_SAVELIST_REMOVE 13017 Error removing scan list file
CIMIO_SF_LIST_ADDLIST_CREATE_NOT 13018 Error creating message with no
AGINFO tag info
CIMIO_SF_LIST_LOAD_SCANLIST_NOFI 13019 Invalid filename when loading
LENAME scan list

308 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_SF_LIST_LOAD_SCANLIST_ 13020 Invalid filename when loading


BADFILENAME scan list
CIMIO_SF_LIST_LOAD_SCANLIST_OPEN 13021 Error opening scan list file
CIMIO_SF_LIST_LOAD_SCANLIST_READ 13022 Error reading scan list file
_ HDR header
CIMIO_SF_LIST_LOAD_SCANLIST_READ 13023 Error reading scan list entry
_ ENTRY from scan list file
CIMIO_SF_LIST_LOAD_SCANLIST_ 13024 Out of memory loading from
NOMEMORY scan list file
CIMIO_SF_LIST_LOAD_SCANLIST_READ 13025 Error reading message from
_ MSG scan list file
CIMIO_SF_LIST_LOAD_SCANLIST_ 13026 Scan list file not found
NOTFOUND
CIMIO_SF_LIST_LOAD_SCANLIST_CLOS 13027 Error closing scan list file
E
CIMIO_SF_LIST_LOAD_SCANLIST_ 13028 Invalid scan list file
SIGNATURE
CIMIO_SF_LIST_LOAD_SCANLIST_ 13029 Old version of scan list file
REVISION
CIMIO_SF_LIST_LOAD_SCANLIST_CREA 13030 Error creating message with no
TE_ NOTAGINFO tag info
CIMIO_SF_LIST_LOAD_UNSOLLIST_ 13040 Invalid filename when loading
NOFILENAME unsolicited list
CIMIO_SF_LIST_LOAD_UNSOLLIST_ 13041 Invalid filename when loading
BADFILENAME unsolicited list
CIMIO_SF_LIST_LOAD_UNSOLLIST_OPE 13042 Error opening unsolicited list
N file
CIMIO_SF_LIST_LOAD_UNSOLLIST_REA 13043 Error reading unsolicited list file
D_ HDR header
CIMIO_SF_LIST_LOAD_UNSOLLIST_REA 13044 Error reading unsolicited list
D_ ENTRY entry from unsolicited list file
CIMIO_SF_LIST_LOAD_UNSOLLIST_ 13045 Out of memory loading from
NOMEMORY unsolicited list file
CIMIO_SF_LIST_LOAD_UNSOLLIST_ 13046 Unsolicited list file not found
NOTFOUND
CIMIO_SF_LIST_LOAD_UNSOLLIST_CLO 13047 Error closing unsolicited list file
SE
CIMIO_SF_LIST_LOAD_UNSOLLIST_REA 13048 Error reading message from
D_ MSG unsolicited list file
CIMIO_SF_LIST_LOAD_STORELIST_ 13050 Store list file not found
NOTFOUND
CIMIO_SF_LIST_LOAD_STORELIST_ 13051 Invalid filename when loading
NOFILENAME store list file
CIMIO_SF_LIST_LOAD_STORELIST_ 13052 Invalid filename when loading
BADFILENAME store list file
CIMIO_SF_LIST_LOAD_STORELIST_OPE 13053 Error opening store list file
N
CIMIO_SF_LIST_LOAD_STORELIST_REA 13054 Error reading store list file
D_ HDR header

15 Error Processing 309


Cim-IO Error Identifier Code Description

CIMIO_SF_LIST_LOAD_STORELIST_REA 13055 Error reading from store list file


D
CIMIO_SF_LIST_LOAD_STORELIST_CLO 13056 Error closing store list file
SE
CIMIO_SF_LIST_SAVE_STORELIST_ 13060 Invalid filename when saving
NOFILENAME store list file
CIMIO_SF_LIST_SAVE_STORELIST_ 13061 Invalid filename when saving
BADFILENAME store list file
CIMIO_SF_LIST_SAVE_STORELIST_OPE 13062 Error opening store list file
N
CIMIO_SF_LIST_SAVE_STORELIST_WRI 13063 Error writing store list file
TE_HDR header
CIMIO_SF_LIST_SAVE_STORELIST_WRI 13064 Error writing a store list entry
TE_ ENTRY to store list file
CIMIO_SF_LIST_SAVE_STORELIST_CLO 13065 Error closing store list file
SE
CIMIO_SF_LIST_SAVE_STORELIST_REM 13066 Error removing store list file
OVE
CIMIO_SF_CREATE_NOTAGINFO_INVALI 13070 Invalid message
D_ MSG
CIMIO_SF_CREATE_NOTAGINFO_ 13071 Out of memory when creating
NOMEMORY message with no tag info
CIMIO_SF_CFG_UPDATECFG_LOAD 13100 Error loading scanner
configuration
CIMIO_SF_CFG_UPDATECFG_MODIFY 13102 Error modifying scanner
configuration
CIMIO_SF_CFG_UPDATECFG_SAVE 13103 Error saving scanner
configuration
CIMIO_SF_CFG_SAVECFG_OPEN 13104 Error opening scanner
configuration file for save
CIMIO_SF_CFG_SAVECFG_DLGPINFO 13105 Error obtaining DLGP
information
CIMIO_SF_CFG_SAVECFG_WRITE_ 13106 Error writing DLGP name to
DLGPNAME scanner configuration file
CIMIO_SF_CFG_SAVECFG_WRITE_ 13107 Error writing maximum period
MAXPERIOD to scanner configuration file
CIMIO_SF_CFG_SAVECFG_WRITE_MAX 13108 Error writing maximum size to
SIZE scanner configuration file
CIMIO_SF_CFG_SAVECFG_CLOSE 13110 Error closing scanner
configuration file when saving
CIMIO_SF_CFG_LOADCFG_CLOSE 13111 Error closing scanner
configuration file when loading
CIMIO_SF_CFG_LOADCFG_OPEN 13112 Error opening scanner
configuration file for load
CIMIO_SF_CFG_LOADCFG_DLGPINFO 13113 Error obtaining DLGP
information
CIMIO_SF_CFG_KEYWORD_BAD 13114 Bad keyword in scanner
configuration file

310 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_SF_CFG_PARSETIME_HOURS 13115 Error parsing hours component


of maximum period
CIMIO_SF_CFG_PARSETIME_MINS 13116 Error parsing minutes
component of maximum period
CIMIO_SF_CFG_DLGPINFO_PROCID 13117 Invalid DLGP service or node
name
CIMIO_SF_FILE_LSEEK_SET 13150 Error in file seek to the
beginning of the file
CIMIO_SF_FILE_LOCK 13151 Error locking file
CIMIO_SF_FILE_UNLOCK 13152 Error unlocking file
CIMIO_SF_FILE_OPEN_OPEN 13153 Error opening file
CIMIO_SF_FILE_SIZE_LSEEK_END 13154 Error seeking to end of file to
obtain its size
CIMIO_SF_FILE_REMOVE_OPEN 13155 Error opening file for removing
CIMIO_SF_FILE_REMOVE_SIZE 13156 Error obtaining file size for
removing
CIMIO_SF_FILE_REMOVE_UNLINK 13157 Error unlinking file
CIMIO_SF_FILE_REMOVE_CLOSE 13158 Error closing file for removing
CIMIO_SF_FILE_LSEEK_LSEEK 13159 Error in file seek
CIMIO_SF_FILE_OPEN_FLAGS 13160 Invalid flags for file open
CIMIO_SF_FILE_OPEN_NOTFOUND 13161 File not found when opening
CIMIO_SF_FILE_READ_HANDLE 13180 Invalid file handle in read
CIMIO_SF_FILE_READ_BUFFER 13181 Invalid buffer in read
CIMIO_SF_FILE_READ_READ 13182 File read error
CIMIO_SF_FILE_WRITE_HANDLE 13200 Invalid file handle in write
CIMIO_SF_FILE_WRITE_BUFFER 13201 Invalid buffer in write
CIMIO_SF_FILE_WRITE_WRITE 13202 File write error
CIMIO_SF_FILE_CLOSE 13210 Error closing file
CIMIO_SF_STORE_NOTIF_FWD_BLDMS 13270 Error building message for
G forward process notification
CIMIO_SF_STORE_NOTIF_FWD_SEND 13271 Error sending notification to
forward process
CIMIO_SF_STORE_SEND_REPLY_ 13300 Reply message not found in
NOTFOUND scan list
CIMIO_SF_STORE_SEND_REPLY_SAVE_ 13301 Error saving store list
STORELIST
CIMIO_SF_STORE_SEND_REPLY_NOTIF 13302 Error notifying forward process
Y
CIMIO_SF_STORE_SEND_REPLY_LSEEK 13303 Error seeking to start of store
_ SET file
CIMIO_SF_STORE_SEND_REPLY_WRITE 13305 Error writing store file header
_ HDR
CIMIO_SF_STORE_SEND_REPLY_WRITE 13306 Error writing reply to store file
_ MSG
CIMIO_SF_STORE_SEND_REPLY_READ_ 13307 Error reading store file header
HDR

15 Error Processing 311


Cim-IO Error Identifier Code Description

CIMIO_SF_STORE_SEND_REPLY_LOCKI 13308 Error locking store file


NG_ LOCK
CIMIO_SF_STORE_SEND_REPLY_LOCKI 13309 Error unlocking store file
NG_ UNLOCK
CIMIO_SF_STORE_SEND_REPLY_ 13312 Out of memory sending reply
NOMEMORY
CIMIO_SF_STORE_SEND_REPLY_OPEN 13313 Error opening store file
CIMIO_SF_STORE_SEND_REPLY_REMO 13314 Error removing store file
VE_ FILE
CIMIO_SF_STORE_SEND_REPLY_CREAT 13315 Error creating store file
E
CIMIO_SF_STORE_SEND_REPLY_FILESI 13316 Error getting store file size
ZE
CIMIO_SF_STORE_SEND_REPLY_FILE_L 13317 Error locking store file
OCK
CIMIO_SF_STORE_SEND_REPLY_FILE_ 13318 Error unlocking store file
UNLOCK
CIMIO_SF_STORE_SEND_REPLY_CLOSE 13319 Error closing store file
CIMIO_SF_STORE_SEND_REPLY_FULL 13320 Message is too big to be put in
the store file
CIMIO_SF_STORE_SEND_REPLY_FILE_ 13321 Absolute maximum file size
LIMIT limit is reached
CIMIO_SF_STORE_SEND_REPLY_PARSE 13322 Error parsing GET reply
_ GETREP
CIMIO_SF_STORE_SEND_REPLY_PARSE 13323 Error parsing unsolicited reply
_ UNSREP
CIMIO_SF_STORE_SEND_REPLY_TO_ 13324 Error sending GET reply to
SCANNER scanner process
CIMIO_SF_STORE_SEND_REPLY_SET_ 13325 Error setting list id for the reply
LISTID message
CIMIO_SF_STORE_SEND_REPLY_NOTIF 13326 Error sending notification to
_ SCANNER scanner
CIMIO_SF_STORE_SEND_REPLY_CREAT 13327 Error creating message with no
E_ NOTAGINFO tag info
CIMIO_SF_STORE_SEND_REPLY_CVTRE 13328 Error converting Get reply to
P Unsol reply
CIMIO_SF_STORE_READ_HDR_LSEEK_S 13330 Error seeking to start of file
ET when reading header
CIMIO_SF_STORE_READ_HDR_READ 13331 Error reading file header
CIMIO_SF_STORE_WRITE_HDR_LSEEK_ 13332 Error seeking to start of file
SET when writing header
CIMIO_SF_STORE_WRITE_HDR_WRITE 13333 Error writing file header
CIMIO_SF_STORE_WRITE_MSG_LSEEK_ 13340 Error seeking to current offset
SET in the file when writing
message
CIMIO_SF_STORE_WRITE_NOMEMORY 13341 Out of memory when trying to
write message
CIMIO_SF_STORE_WRITE_MSG 13342 Error writing message

312 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_SF_SCAN_STORE_INFO_SEND 13350 Error sending Store and


Forward information
CIMIO_SF_SCAN_REPLY_STORE_BAD_T 13360 Unexpected transaction
T number when sending reply to
store process
CIMIO_SF_SCAN_REPLY_STORE_PARSE 13361 Error parsing GET request
_ GETREQ when sending reply to store
process
CIMIO_SF_SCAN_REPLY_STORE_DSIZE 13362 Invalid data size detected when
sending reply to store process
CIMIO_SF_SCAN_REPLY_STORE_ 13363 Out of memory when sending
NOMEMORY reply to store process
CIMIO_SF_SCAN_REPLY_STORE_BLD_ 13364 Error building GET reply when
REPLY sending reply to store process
CIMIO_SF_SCAN_REPLY_STORE_SEND 13365 Error sending GET reply to
store process
CIMIO_SF_SCAN_REPLY_DLGP_ACCESS 13366 Error accessing DLGP
CIMIO_SF_SCAN_REPLY_DECL_ 13367 No Memory available
NOMEMORY
CIMIO_SF_SCAN_REPLY_DECL_BLDREP 13368 Error building Declare reply
L
CIMIO_SF_SCAN_REPLY_DECL_SNDREP 13369 Error sending Declare reply
L
CIMIO_SF_SCAN_REPLY_CANC_BLDREP 13370 Error building Cancel reply
L
CIMIO_SF_SCAN_REPLY_CANC_SNDREP 13371 Error sending Cancel reply
L
CIMIO_SF_FWD_READNEXTMSG_LSEEK 13401 Error seeking to the end of the
_ END file when trying to read next
message
CIMIO_SF_FWD_READNEXTMSG_LSEEK 13402 Error seeking to start of file
_ SET when trying to read next
message
CIMIO_SF_FWD_READNEXTMSG_LOCKI 13403 Error locking file when trying to
NG_ LOCK read next message
CIMIO_SF_FWD_READNEXTMSG_MSGSI 13404 Message size too small when
ZE trying to read next message
CIMIO_SF_FWD_READNEXTMSG_NOME 13405 Out of memory when trying to
MORY read next message
CIMIO_SF_FWD_READNEXTMSG_READ_ 13406 Error reading from file when
MSG trying to read next message
CIMIO_SF_FWD_READNEXTMSG_LOCKI 13407 Error unlocking file when trying
NG_ UNLOCK to read next message
CIMIO_SF_FWD_READNEXTMSG_OPEN 13408 Error opening store file when
trying to read next message
CIMIO_SF_FWD_READNEXTMSG_CLOSE 13409 Error closing store file when
trying to read next message

15 Error Processing 313


Cim-IO Error Identifier Code Description

CIMIO_SF_FWD_READNEXTMSG_FILESI 13410 Error obtaining store file size


ZE when trying to read next
message
CIMIO_SF_FWD_READNEXTMSG_READ_ 13411 Error reading store file header
HDR when trying to read next
message
CIMIO_SF_FWD_READNEXTMSG_CORR 13412 Corrupt store file detected
UPT _FILE when reading next message
CIMIO_SF_FWD_READNEXTMSG_NOTIF 13413 Error sending notification to
delete store file
CIMIO_SF_FWD_READNEXTMSG_WRITE 13414 Error writing store file header
_ HDR
CIMIO_SF_FWD_REMOVE_LSEEK_SET 13450 Error seeking to start of store
file
CIMIO_SF_FWD_REMOVE_READ_HDR 13451 Error reading header of store
file
CIMIO_SF_FWD_REMOVE_NOMSG 13452 There is no message to remove
CIMIO_SF_FWD_REMOVE_WRITE_HDR 13453 Error writing header to store
file
CIMIO_SF_FWD_REMOVE_LSEEK_END 13454 Error seeking to the end of
store file
CIMIO_SF_FWD_REMOVE_UNLOCK 13455 Error unlocking file
CIMIO_SF_FWD_REMOVE_CLOSE 13456 Error closing file
CIMIO_SF_FWD_REMOVE_REMOVE 13457 Error removing file
CIMIO_SF_FWD_REMOVE_OPEN 13458 Error opening store file to
remove last message
CIMIO_SF_FWD_REMOVE_NOTIF 13459 Error sending notification to
remove store file
CIMIO_SF_FWD_FORWARD_FREQ 13470 Error getting frequency from
message
CIMIO_SF_FWD_FORWARD_READ_NEX 13471 Error reading next message
T_ MSG from store file
CIMIO_SF_FWD_FORWARD_CORRUPTIO 13473 Corrupted store file
N
CIMIO_SF_FWD_NOTIF_BLDMSG 13480 Error building notification to
remove store file
CIMIO_SF_FWD_NOTIF_SEND 13481 Error sending notification to
remove store file
CIMIO_SF_HDR_CHK_CRC_FAIL 13500 Cyclic redundancy check fail in
store file read
CIMIO_SF_HDR_CHK_BACKUP_BLOCK 13501 Corrupted backup block in
store file header
CIMIO_SF_HDR_CHK_PRIMARY_BLOCK 13502 Corrupted primary block in
store file header
CIMIO_SF_HDR_READ_CORRUPT 13510 Corrupted store file header
CIMIO_SF_HDR_READ_LSEEK_SET 13511 Error rewinding store file when
reading header
CIMIO_SF_HDR_READ 13512 Error reading store file header

314 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_SF_HDR_WRITE_LSEEK_SET 13520 Error rewinding store file when


writing header
CIMIO_SF_HDR_WRITE 13521 Error writing store file header
CIMIO_SF_HDR_READ_MSG_CORRUPT 13530 Corrupted store file message
CIMIO_SF_HDR_READ_MSGHDR_CORR 13531 Corrupted store file message
UPT header
CIMIO_SF_HDR_READ_MSGHDR 13532 Error reading store file
message header
CIMIO_SF_LIST_ADDLIST_PARSE_GETR 13533 Error parsing get request
EQ
CIMIO_SF_LIST_ADDLIST_DCONV_SIZE 13534 Error calculating data template
size
CIMIO_SF_GET2UNSOL_BADGET 13550 Bad Get reply message for
conversion to Unsol
CIMIO_SF_GET2UNSOL_NOMEMORY 13551 No memory available
CIMIO_SF_GET2UNSOL_NOSTRUCT 13552 Template does not start with a
Cim-IO structure
CIMIO_SF_GET2UNSOL_BADNTAGS 13553 Number of tags in get reply
inconsistent with count
CIMIO_SF_GET2UNSOL_TPLSIZE 13554 Unable to determine data
template size
CIMIO_SF_GET2UNSOL_BADTYPE 13555 Bad data type in data template
CIMIO_SF_GET2UNSOL_UNSREPLY 13556 Error creating unsolicited reply
CIMIO_SF_GET2UNSOL_INVARG 13557 Invalid arguments - no
deadband checking performed
CIMIO_SF_GET2UNSOL_NOTAGS 13558 No tags to send in converted
reply
CIMIO_SF_UPDATELIST_BADDECL 13570 Bad Declare request
CIMIO_SF_UPDATELIST_BADCANC 13571 Bad Cancel request
CIMIO_SF_UPDATELIST_BADREQ 13572 Request type unknown or
unsupported
CIMIO_SF_UPDATELIST_LOCFAIL 13573 Error locating current get list
CIMIO_SF_UPDATELIST_BADGET 13574 Error parsing active get request
CIMIO_SF_UPDATELIST_MERGECANC 13575 Error merging new Cancel
request with Get request
CIMIO_SF_UPDATELIST_REMLIST 13576 Error removing get request
from scan list
CIMIO_SF_UPDATELIST_MERGEDECL 13577 Error merging new Declare
request with Get request
CIMIO_SF_UPDATELIST_TPLSIZE 13578 Error getting template data size
CIMIO_SF_UPDATELIST_NOMEMORY 13579 No memory available
CIMIO_SF_UPDATELIST_ADDLIST 13580 Error adding Get request to
scan list
CIMIO_SF_UPDATELIST_POSFREQ 13581 A positive frequency detected
on DECL to GET conv
CIMIO_SF_MERGE_GETCAN_NOMEMOR 13590 No Memory available
Y

15 Error Processing 315


Cim-IO Error Identifier Code Description

CIMIO_SF_MERGE_GETCAN_TPLSIZE 13591 Error getting template data size


CIMIO_SF_MERGE_GETDECL_GETTPLSI 13600 Error getting Get template data
ZE size
CIMIO_SF_MERGE_GETDECL_DECTPLSI 13601 Error getting Declare template
ZE data size
CIMIO_SF_MERGE_GETDECL_NOMEMOR 13602 No Memory available
Y
CIMIO_SF_LIST_SAVELIST_WRITE_ 13603 Error writing deadband scan list
DBENTRY entry
CIMIO_SF_LIST_SAVELIST_WRITE_DBL 13604 Error writing deadband list to
IST scan list file
CIMIO_SF_LIST_LOAD_SCANLIST_READ 13605 Error reading deadband scan
_ DBENTRY list entry
CIMIO_SF_LIST_LOAD_SCANLIST_GETR 13606 Error parsing scan list get
EQ request
CIMIO_SF_LIST_LOAD_SCANLIST_ 13607 Inconsistent number of tags
BADNTAGS
CIMIO_SF_LIST_LOAD_SCANLIST_DCO 13608 Error determining get request
NV_ SIZE data size
CIMIO_SF_LIST_LOAD_SCANLIST_ 13609 No memory available for
NODBMEM deadband list
CIMIO_SF_LIST_LOAD_SCANLIST_READ 13610 Error reading deadband list
_ DBLIST from scan list file
CIMIO_THR_CREATE_THREAD_FAIL 14002 Error creating thread
CIMIO_THR_CANCEL_THREAD_FAIL 14004 Error canceling thread
CIMIO_THR_EXIT_THREAD_FAIL 14006 Unable to exit thread
CIMIO_THR_INIT_NOMEMORY 14008 Unable to allocate memory
CIMIO_THR_CREATE_MUTEX_FAIL 14010 Failed to create mutex
CIMIO_THR_DESTROY_MUTEX_FAIL 14012 Failed to destroy mutex
CIMIO_THR_LOCK_MUTEX_FAIL 14014 Failed to lock mutex
CIMIO_THR_UNLOCK_MUTEX_FAIL 14016 Failed to unlock mutex
CIMIO_MGMT_FILE_OPEN_FAILED 15001 Error opening server's
definition file
CIMIO_MGMT_SERVER_ALLOC_FAILED 15002 Not enough memory
CIMIO_MGMT_SERVER_READ_LINE 15003 Error reading server's file line
CIMIO_MGMT_SERVER_DLGP_SERVICE 15004 Error reading DLGP service
from server's file
CIMIO_MGMT_SERVER_NAME 15005 Error reading server's name
from server's file
CIMIO_MGMT_SERVER_STATUS 15006 Error reading server's startup
status from server's file
CIMIO_MGMT_COMPONENT_NAME 15007 Error reading component name
from server's file
CIMIO_MGMT_COMPONENT_SERVICE 15008 Error reading component
service from server's file
CIMIO_MGMT_COMPONENT_EXECUTABL 15009 Error reading component
E executable from server's file

316 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_MGMT_COMPONENT_ARGS 15010 Error reading component


arguments from server's file
CIMIO_MGMT_SERVER_USERNAME 15011 Error reading server user name
from server's file
CIMIO_MGMT_COMPONENT_ALLOC_ 15012 Not enough memory
FAILED
CIMIO_MGMT_SERVER_CHECK_STATUS 15013 Error reading server's check
status from server's file
CIMIO_MGMT_SERVER_LOGON 15014 Error logging on as another
user
CIMIO_MGMT_COMPONENT_CREATE_PR 15015 Error creating component
OC process
CIMIO_MGMT_COMPONENT_GETENV 15016 Error getting environment
variable
CIMIO_MGMT_SERVER_NOT_FOUND 15017 Server not found in
management database
CIMIO_MGMT_SERVER_START 15018 Error starting server
CIMIO_MGMT_SERVER_STOP 15019 Error stopping server
CIMIO_MGMT_SERVER_STORE_FORWA 15020 Error reading Store and
RD Forward usage from server's
file
CIMIO_MGMT_SERVER_CHECK_PERIOD 15021 Error reading server's check
period from server's file
CIMIO_MGMT_SERVER_GET_STATUS 15022 Error getting status of server
CIMIO_MGMT_SERVER_GET_STATUS 15023 Error getting server number of
components
CIMIO_MGMT_SERVER_GET_CONFIG_ 15024 Error in server config reply
REPLY
CIMIO_MGMT_SERVER_GET_CONFIG_ 15025 Not enough memory for server
NOMEM config reply
CIMIO_MGMT_SERVER_ALREADY_EXIST 15026 Server already exist in
management database
CIMIO_MGMT_DLGP_SERVICE_INEXIST 15027 DLGP service does not exist
ANT
CIMIO_MGMT_HIST_DLGP_SERVICE_ 15028 Historical DLGP service does
INEXISTANT not exist
CIMIO_MGMT_PROCESS_SERVICE_ 15029 Process TCP/IP service does
INEXISTANT not exist
CIMIO_MGMT_PROCESS_EXECUTABLE_ 15030 Process executable does not
INEXISTANT exist
CIMIO_MGMT_INVALID_USERNAME 15031 The server will not start.
Correct username and/or
password
CIMIO_MGMT_DLGP_SERVICE_DIFFERE 15032 DLGP service port different on
NT client and server
CIMIO_MGMT_HIS_DLGP_SERVICE_ 15033 History DLGP service port
DIFFERENT different on client and server
CIMIO_MGMT_PROCESS_SERVICE_ 15034 Process service port different
DIFFERENT on client and server

15 Error Processing 317


Cim-IO Error Identifier Code Description

CIMIO_MGMT_SCANNER_SERVICE_ 15035 Scanner service does not exist


INEXISTANT
CIMIO_MGMT_SCANNER_SERVICE_ 15036 Scanner service port different
DIFFERENT on client and server
CIMIO_MGMT_STORE_SERVICE_ 15037 Store service does not exist
INEXISTANT
CIMIO_MGMT_STORE_SERVICE_DIFFER 15038 Store service port different on
ENT client and server
CIMIO_MGMT_FORWARD_SERVICE_ 15039 Forward service does not exist
INEXISTANT
CIMIO_MGMT_FORWARD_SERVICE_ 15040 Forward service port different
DIFFERENT on client and server
CIMIO_CLIENT_MAIN_READ_DEVICE_ 41001 Error reading device processing
PROCESSING field in device record
CIMIO_CLIENT_MAIN 41010 Error reading Store and
_READ_CFG_ENABLE Forward configuration enable
CIMIO_CLIENT_MAIN_READ_CFG_ 41011 Error reading Store and
MAXPERIOD Forward configuration
maximum period
CIMIO_CLIENT_MAIN_READ_CFG_MAXS 41012 Error reading Store and
IZE Forward configuration
maximum size
CIMIO_CLIENT_MAIN_READ_CFG_ 41013 Error reading Store and
CIRCULAR Forward configuration circular
CIMIO_CLIENT_MAIN 41014 Error sending or receiving
_SEND_CFG_SEND Store and Forward
configuration message
CIMIO_CLIENT_UNSOL_UPDATE_WRITE 42001 Error writing values to the
_ VAL database
CIMIO_CLIENT_UNSOL_UPDATE_READ_ 42002 Error reading values from the
VAL database
CIMIO_CLIENT_UNSOL_UPDATE_READ_ 42003 Error reading the type of the
TYPE data record from the database
CIMIO_CLIENT_UNSOL_UPDATE_READ_ 42004 Error finding the data record in
DATA_ RECORD the database
CIMIO_CLIENT_UNSOL_FIND_GET_NO_ 42010 Error finding IoGetDef record
DEF definition in the database
CIMIO_CLIENT_UNSOL_FIND_GETHIST_ 42011 Error finding IoGetHistDef
NO_ DEF record definition in the
database
CIMIO_CLIENT_UNSOL_FIND_LONGTAG 42012 Error finding IoLongTagGetDef
_ GETHIST_NO_DEF record; database upgrade may
be needed
CIMIO_CLIENT_UNSOL_FIND_PUT_NO_ 42013 Error finding IoPutDef record
DEF definition in the database
CIMIO_CLIENT_UNSOL_FIND_LONGTAG 42014 Error finding IoLongTagPutDef
_ PUT_ NO_DEF record; database upgrade may
be needed
CIMIO_CLIENT_UNSOL_FIND_UNS_NO_ 42015 Error finding IoUnsolDef record
DEF definition in the database

318 15 Error Processing


Cim-IO Error Identifier Code Description

CIMIO_CLIENT_UNSOL_FIND_LONGTAG 42016 Error finding IoLongTagUnsDef


_ UNS_NO_DEF record; database upgrade may
be needed
CIMIO_CLIENT_HISTREC_GET_STORE_ 43001 Error obtaining Store and
INFO_SEND_MSG Forward information from
scanner

15 Error Processing 319


320 15 Error Processing
Appendix A – Deprecated
Procedures

This appendix contains information for procedures that have been replaced by
the Cim-IO Interface Manager and the Cim-IO IP.21 Connection Manager.
From the InfoPlus.21 Administrator, I/O allows the user to add a Cim-IO
Logical Device. This includes the configuration of the Logical Device and its
associated Cim-IO server as well as the creation and configuration of the Cim-
IO client tasks in the InfoPlus.21 database. Some features of I/O:
 Simple configuration of a Logical Device and the associated Cim-IO server.
This includes configuration for both single and redundant logical devices.
 Drag and Drop capabilities for creating and configuring the Cim-IO clients
in the InfoPlus.21 database.
 Auto detection and configuration of a redundant logical device in the
InfoPlus.21 database.
 Health check of a Cim-IO server’s processes.
 Ability to start and stop a Logical Device or specific servers in a redundant
configuration.

Note: Aspen InfoPlus.21 V8.4 and later includes the Cim-IO IP.21
Connection Manager. This standalone desktop application helps you
configure and administer Cim-IO connections by automating the processes
discussed in this chapter (except for creating records).

The Cim-IO IP.21 Connection Manager is launched from the Start menu or
Start page. Help is included and accessed through the application.

I/O Functions Using the


Administrator
Finding a Device
After a Logical Device has been added, it is listed under the I/O icon in the
Administrator’s scope pane.

Appendix A – Deprecated Procedures 321


1 Click the expansion button or double click on the I/O icon to show the
Logical Devices that have been added.
2 Select the Logical Device that you want to examine.

Examining a Device
There are several ways to examine a Logical Device. The first way:

First Option to Examine a Device


1 Click a Logical Device listed under the I/O icon in the Administrator’s
scope pane.
2 Listed in the content pane are the Cim-IO server processes and each
process’s status. Redundant configurations will show the status of each
process on each Cim-IO server.
3 Right-click on a process and select the Properties command. The
Process Properties dialog box displays information about the process
(where Process is the name of the server’s process).

o Name – The name of a Cim-IO server process.


o TCP/IP service – The service name assigned to the process.
o Executable - The path and file name of the Cim-IO server executable
running on the primary node for redundant configurations, or the only
node for single configurations.
o Executable (Secondary) – The path and file name of the Cim-IO server
executable running on the secondary node. This text box is grayed out
for Single logical devices.
o Arguments – The command line arguments used to start the Cim-IO
server process. Command line arguments are optional.

322 Appendix A – Deprecated Procedures


To change a process’s properties from the Process
Properties dialog box:
1 Make sure that the Cim-IO server is stopped. The “Stopping a device”
section describes how to stop a Logical Device’s associated Cim-IO server.
2 Select the property to change and enter the new value.
3 Click OK. The changes are set.

Second Option to Examine a Device


The second way to examine a device:
1 Right-click a Logical Device and select the Properties command from the
context menu.
2 The Device Properties dialog box will be displayed (where Device is the
name of the selected Logical Device).

Logical Device Tab


On the Device Properties dialog box, click the Logical Device tab. The
Logical Device tab displays information used by a Cim-IO client to
communicate to the Logical Device’s Cim-IO server.

 Name – The name of the Logical Device. A Logical Device is a name that
references a Cim-IO server. A Cim-IO client specifies a Logical Device in
order to establish communication with a Cim-IO server. As of CIM-IO
2004, a logical device can be either a Redundant Logical Device or a
Single Logical Device.
 Node – The computer name where the Cim-IO server is installed. For a
redundant configuration, this is the computer name of the Primary Cim-IO
server.

Appendix A – Deprecated Procedures 323


 DLGP service – The TCP/IP service assigned to the Cim-IO server’s DLGP
process.
 Historical DLGP service – The TCP/IP service assigned to the Cim-IO
server’s History DLGP process. This is optional because not all Cim-IO
servers support the historical recovery feature.
 Use as part of a Redundant configuration – Check this box to enable
redundancy using Cim-IO changeover. When the box is checked, the
Secondary Node box becomes editable.
 Secondary Node – The computer name where the secondary Cim-IO
server is installed. Used only in a redundant configuration.
None of these fields are editable.

Server tab
On the Device Properties dialog box, click the Server tab. The Server tab
displays several server configurations.

 Name – The name of the Cim-IO server.


The Startup group box shows if the Cim-IO server is configured to startup at
boot. A user name and password are required for boot startup because the
Cim-IO manager starts the server as a service.
 Start at boot – If this is checked, the Cim-IO server will be started at
boot.
 User name – The user name needed to start the Cim-IO server.
 Password – The user name’s password needed to start the Cim-IO
server.
The Health Check group box displays if the Cim-IO server is configured to
have its processes monitored. The Cim-IO manager will periodically check if a
server’s process exists and if not, will restart the process.

324 Appendix A – Deprecated Procedures


 Check server processes – If this is checked, the existence of all the
server’s processes will be periodically checked.
 All of these fields are editable.

Important: Because Cim-IO servers in a redundant logical device may be


periodically taken down for maintenance; the Check server processes
option is not available in a redundant configuration.

Processes tab
On the Device Properties dialog box, click the Processes tab. The
Processes tab displays information needed to configure a Cim-IO server.
This information is also used by the Cim-IO Manager to monitor a server’s
processes.

 Use Store and Forward – Check this to enable Store and Forward for a
Cim-IO server.
 Store File Path – Gives you the option of specifying a Default or custom
path to the store file. For redundant configurations this is the primary
Cim-IO server.
 Store File Path (Secondary) – Allows you to specify a Default or custom
path to the store file for the secondary node in a redundant configuration.
This option is grayed out on single configurations. It is recommended you
use the same path to your store file as on the primary Cim-IO server.
 Name – This column lists the names of the processes configured for a
Cim-IO server.
 TCP/IP service – This column lists the service names assigned to each
process.

Appendix A – Deprecated Procedures 325


 Primary Executable – This column lists the path and executable name for
each process. For single configurations, this refers to the path on the Cim-
IO server.
 Secondary Executable – The path and executable name for each process.
This path is visible in redundant configurations only. It is recommended
that each Cim-IO secondary server use the same path as its primary.
 Arguments – This column lists any command line arguments used during
the startup of a process.
 These fields are only editable if the logical device is stopped.

Viewing Redundant Logical Devices vs.


Single Logical Devices
The Administrator will detect and show additional information related to the
logical devices redundant setup. A redundant logical device is easily detected
as it has two status icons as opposed to one for a single logical device. Please
make note of this when referring to the sections Starting a Device and
Stopping a Device.

The following table outlines how the InfoPlus.21 wizard auto-populates the
fields differently for a single logical device versus a redundant logical device:
Field Description

Name The name of the logical device being viewed


Node Name For redundant logical devices, this is the node name of the
Primary Cim-IO server. For single logical devices, this is the
node name of the Cim-IO server.
Secondary Node For redundant logical devices, this is the node name of the
Secondary Cim-IO server. For single logical devices, this
field is blank.
Server Name The unique name assigned to this logical device
Server Status The status of the Cim-IO server. For redundant logical
devices, this field shows the status of both primary and
secondary server separated by a comma.

Starting a Device
To start a Logical Device:
1 Right-click on a Logical Device and select the Start logical device
command from the context menu.
2 An icon will appear to the left side of the Logical Device’s name to indicate
the status of the startup.
o Green dot: If the startup was successful, a green dot will appear on
the left side of the Logical Device’s name in the scope pane. Also green

326 Appendix A – Deprecated Procedures


dots will appear on the left side of the Logical Device’s processes in the
content pane.
o Red dot: If the startup was not successful, a red dot will appear on the
left side of the Logical Device’s name in the scope pane. Also red dots
will appear on the left side of the Logical Device’s processes in the
content pane.
o Red X: The startup was not able to start all of the Logical Device’s
processes. A green dot indicates which processes were started. The
red dot indicates which processes were not started. The Server status
will show Not healthy in the content pane when the I/O icon is double
clicked.
o Yellow Question Mark: The executables are not known for this Cim-IO
server.

Redundant Configurations Only


For redundant configurations, you can also start the Primary server and
Secondary server individually by right-clicking on the logical device and
selecting Start Primary Device and Start Secondary Device respectively.

Stopping a Device
To stop a Logical Device:
1 Right-click on a Logical Device and select the Stop logical device
command from the context menu.
2 A dialog box will appear to confirm that the Logical Device should be
shutdown. Double-click Yes to continue the shutdown.
3 An icon will appear to the left side of the Logical Device’s name to indicate
the status of the shutdown.
o Red dot: If the shutdown was successful, a red dot will appear on the
left side of the Logical Device’s name in the scope pane. Also red dots
will appear on the left side of the Logical Device’s processes in the
content pane.
o Green dot: If the shutdown was not successful, a green dot will appear
on the left side of the Logical Device’s name in the scope pane. Also
green dots will appear on the left side of the Logical Device’s processes
in the content pane.

Redundant Configurations Only


You can optionally stop the primary and secondary Cim-IO server individually
by right clicking on the logical device and selecting Stop Primary Device and
Stop Secondary Device respectively.

Creating a Cim-IO Server Configuration File


A Logical Device’s configuration can be saved to a Cim-IO Server
Configuration (CSC) file.

Appendix A – Deprecated Procedures 327


1 Right-click on a Logical Device and select the Export logical device to
file command from the context menu.
2 The Save As dialog box is displayed. Select a folder to contain the CSC
file.
3 Enter a file name for the CSC file.
4 Click Save to save a CSC file of the Logical Device’s configuration.

Note: As of Cim-IO v2004, there are extra fields in the CSC file to support
saving redundant configurations. Old CSC files are supported, but will not
support redundancy unless imported, converted to a redundant pair, and
then exported. For this reason, it is recommended you export your
redundant configuration when it is complete.

Remove a Device
This command will delete the Logical Device’s entry from the I/O folder.
1 Right-click on a Logical Device and select the Remove logical device
command from the context menu.
2 The Logical device removal confirmation dialog box will appear to
confirm that the Logical Device should be removed. The Remove
associated server check box should NOT be selected if another Logical
Device is associated with the same Cim-IO server. Otherwise, leave the
Remove associated server selected.
3 Click OK to remove the device.

328 Appendix A – Deprecated Procedures


Change Cim-IO Manager Properties
The Cim-IO Manager will periodically check the status of a Cim-IO server by
pinging the Cim-IO server’s processes. The timeout value and the check
period can be changed for the ping function.
1 Right-click on a Logical Device and select the Manager Parameters
command from the context menu.
2 The Manager properties dialog box will appear. Two parameters can be
changed:
o Timeout – The timeout value is in seconds. It is the amount of time
that the Cim-IO Manager will wait on a response from a Cim-IO server
process.
o Servers processes check period – The check period value is in seconds
and is used for the Health Check of a Cim-IO server’s processes. It is
the frequency in which the Cim-IO Manager will check for the
existence of a Cim-IO server’s processes.
3 Click OK. The Timeout and Server processes check period are set.

Appendix A – Deprecated Procedures 329


330 Appendix A – Deprecated Procedures
Glossary

Client
A client is a program that sends requests and receives replies in a
master/slave relationship with a server. Common Cim-IO Clients are the
InfoPlus.21 Cim-IO client and DMCPlus.

Communications Protocol
A communications protocol is a common format for sending messages over a
computer network. Currently, Cim-IO only supports the TCP protocol.

DIOP
A DIOP (Device Input/Output Process) is a Cim-IO interface task that
performs low-level communications with external hardware devices or other
databases.

DLGP
A DLGP (Device Logical Gateway Process) is a Cim-IO interface task that
communicates with client tasks, forwards messages to DIOPs in the interface,
and returns messages to the client tasks that initiated the requests.

Environment Variable
An Environment Variable is a name used to refer to a value (on that particular
computer). Since programs can access this value, Environment Variables are
used to store program options. An Environment Variable can be used to
define an abstract name for a directory, so that the exact path does not need
to be known. It can also be a numeric value, such as a logging level.

Logical Device
A Logical Device is a representation of an interface supported by the Cim-IO
interface platform. Cim-IO can support several different interfaces at the
same time.

Glossary 331
Logical Device Name
A Logical Device Name represents a Cim-IO logical device. Each interface
must be identified by a unique logical device name.

Node
A Node is a computer, or the name for that computer.

Port
A Port is a logical address on a computer, associated with a particular network
card and communications protocol, capable of receiving and transmitting
messages.

Port Number
Each Port has a Number associated with it. By specifying the computer name
and port number, you can associate an application with a particular port.

Redundancy
Redundancy is running two or more identical copies of a program in parallel
on separate nodes, so that if one fails or needs to go down for maintenance,
the other can be used.

Server
A Server is a program that receives requests and sends replies in a
master/slave relationship with a Client. Each type of end device requires its
own type of Cim-IO server.

Smart Data Types


A “Smart” data type is one that will be recognized and specially treated by a
Cim-IO Server. A server that supports Smart Data Types automatically
modifies a provided tag name based on what data type is being requested.
Check your interface-specific Cim-IO server’s user’s guide for the Smart Data
Types it supports.

Store and Forward


The Store and Forward system is a set of programs that sit between a Cim-IO
client and a Cim-IO server, on the same node as the Cim-IO Server, store
Cim-IO reply messages to disk when the communication between the Cim-IO
client and Cim-IO server is lost, and transmit this data once communications
has been restored. Additional Store and Forward programs can help you
recover the data from old or corrupt Store files.

Tag
A Tag is an ASCII string that references a particular data point on an end
device.

332 Glossary
TCP
TCP is a network communications protocol, and is the only one supported by
Cim-IO.

Glossary 333
Index
Adding a Logical Device, 62
Administrator, 321
Alarm Summary, 159
AlarmLog, 160
AlarmLogCntrl, 158
Application Data Type, 16
Asynchronous I/O
Testing, 72
Automatic Scan-Off, 128
AutoStarting Store & Forward, 182
Autostopping Store & Forward, 184
Bad Tags, 128
Buffering, 17
Cancel
Testing, 57, 58
Changing the Alarm Summary, 159
Changing the number of pings retries, 38
CIM-IO
Changing the number of ping retries, 38
Changing the Ping Frequency, 38
Cim-IO Connection Manager, 9
Cim-IO Interface Manager, 9
cimio_logical_devices.def, 9
Client, 5
Compatibility, 17
Configuration, 79
Configuring, 31
Configuring Clients, 31
Configuring Servers, 31
Core, 6
csd file type, 9
Directories, 32
Disabling Boxcar deadbanding, 36
Disabling Changeover StandBy Cleanup, 35
Disabling Changeover Timeout, 35
Disabling Put record activation when Turning the Record On, 37
Errors, 254
Failover, 39
Installation, 77
Installing, 31
Installing Clients, 31
Installing Servers, 31
Interface, 5, 7
Manager, 9
Records, 103
Recovering the primary node’s store file, 38
Redundancy. See Redundancy, See Redundancy
Security, 17, 44
Server, 7, 324
Server Aliveness Test Rate, 38

334 Glossary
Server Configuration File, 327
Setting the Timestamp of Unavailable Points, 38
Simulation Server, 75
Startup and shutdown, 9
Testing Server Aliveness, 38
Transfer Records, 79
Unavailable Point Timestamp, 38
Unsolicited Records, 96
Versions, 17
CIM-IO Interfaces
Data Input/Output Process (DIOP), 13
Data Logical Gateway Process (DLGP), 13
Historical DLGP Process, 14
cimio_c_async, 77
cimio_c_client, 77
cimio_c_histrec, 78
cimio_c_histrec.exe, 216
cimio_c_histrec_init.exe, 216
cimio_c_unsol, 78
cimio_diag.cfg, 241
cimio_logical_devices.def, 49, 82, 195, 196, 216
cimio_msg.log, 63, 64
cimio_nodename.txt, 227
CIMIO_SF_ANALYZE, 195
cimio_sf_start, 182
cimio_sf_stop, 184
cimio_t_api, 49
CIMIOChangeover Timeout, 35
CIMIOChangeoverStandByCleanup, 35
CIMIOClientBoxcarDeadbanding, 36
CIMIOClientDisablePutOnProcessingOn, 37
CIMIODeviceScanOff, 128
CIMIODualFailureDelay, 38
CIMIOMaxPingFailures, 38
CIMIOOnUnavailFlag, 38
CIMIOPingFrequency, 38
CimIOProperties.exe, 193
CIMIORescanLogicalDevices, 39
CIMIOSendCleanupCancels, 39
CIMIOSFRejectOldData, 40
Client
Redundancy, 203
Client, 5, 6
Configuration, 78, 79
Pinging, 78
Compatibility
CIM-IO Versions, 17
Compressing Data Using IoUnsolDef and Store & Forward, 191
Configuring CIM-IO, 31
Configuring CIM-IO Clients, 31
Configuring CIM-IO Servers, 31
Configuring Redundancy, 205
Configuring Store and Forward, 175

Glossary 335
Controlling Logging, 158
Converting Data To and From EUs, 114
Creating a CIM-IO Server Configuration File, 327
Creating Transfer Record, 79
CSC File
Creating, 327
Current Time
Testing, 61
Customizing Enhanced Diagnostics, 241
Data Types, 16, 86, 89, 93, 96, 99, 101
Application, 16
Conversion, 88, 95, 100, 114
Device, 16
Smart, 17
Structure - Historical Read Support, 164
Structure - Read Support, 166
Structure - Write Support, 166
Structures, 163
Deadband, 89, 101, 117
Definition Record, 117
Device, 101
Testing, 58
Types, 57, 117
Values, 117
Declare
Testing, 57
Deleting a Logical Device, 63
Device Data Type, 16
Device Properties dialog box, 324
Disabling Boxcar deadbanding, 36
Disabling Changeover StandBy Cleanup, 35
Disabling Changeover Timeout, 35
Disabling Put record activation when turning the record on, 37
Displaying Error Messages, 65
Displaying Status Messages, 65
Engineering Units, 114
Engineering Units Conversion Record, 114
Enhanced Diagnostics, 233
cimio_diag.cfg, 241
Error Definitions, 254
Filters and Filter Types, 236
Enhanced Diagnostics XE "Enhanced Diagnostics:cimio_diag.cfg" XE
"cimio_diag.cfg"
Configuration, 241
Error Blocks
Testing Error Printouts, 63
Error Code, 65
Errors, 223
Enhanced Diagnostics, 233
Error Definitions, 254
Log Files, 233
Logging, 233
Logical Device, 236

336 Glossary
Messages, 223
Processing, 233
EU, 114
Event.dat, 199
Examining Logical Devices, 322
Excluding Error Messages From the IoLog Record, 159
Export Logical Device To File, 327
Facility, 65
FAQ, 223, 228
Finding a Logical Device, 321
Forward, 174
Frequency, 85, 98
Gap Interval, 87
GET, 80, 83, 114, 120
Automatic Scan-Off, 128
Configuring, 83
Creating, 83
Long Tags, 83
LongLong Tags, 83
Structures, 163, 166
Testing, 52, 69, 71
GETHIST, 139, 217
Structures, 164, 166
Testing, 59, 69, 72
Group Name, 93, 99
Group Record, 112
History Overflow File, 199
History Recovery, 215
Activating the Task, 220
Architecture, 215
CIM-IO Server Support, 218
cimio_c_histrec, 215
cimio_c_histrec_init, 215
Configuration, 216
Requirements, 217
Starting, 218
I/O Records
Naming, 103
I/O transfer record types, 119
Ignoring Old Store & Forward Data
Ignoring Old Data, 193
Installation, 31
IO_ACTIVATE, 130
IO_DATA_CONVERSION, 115
IO_DATA_PROCESSING, 130
IO_DECLARE_STATUS, 130
IO_RECORD_PROCESSING, 130
IoDeadbandDef, 117
Io-Deadbands, 117
IoDeviceRecDef, 105
IO-EU-CONV, 114
IOExternalFTDef, 206
IoExternalTskDef, 104

Glossary 337
IoGetAlarmLine, 161
IoGetDef, 80, 83, 114, 120, 121, 131
Configuring, 83
Structures, 163, 166
IoGetHistDef, 139, 217
Structures, 164, 166
Io-Groups, 112
IoLLTagPutDef, 90, 150
IOLLTagPutOnCOSDef, 90
IoLLTagUnsolDef, 96
IoLog, 158, 160
IoLogCntrl, 158
IoLongTagGetDef, 121
IoLongTagPutDef, 90, 150
IOLongTagPutOnCOSDef, 90
IoLongTagUnsolDef, 96
IoMessageSwCondition, 159
IoMessageSwCondition Record, 159
IoPutAlarmLine, 162
IoPutDef, 81, 90, 114, 150
Structures, 163, 166
IoPutOnCosDef, 158
IoPutOnCOSDef, 90
IOPutOnCOSDef, 90
IoSummary, 159
IoUnsolDef, 81, 96, 114, 129
Activation, 130
Structures, 163, 169
IP-21 Record for Storing CIM-IO Log Messages, 160
log file, 233
Log Files, 233
Logical Device, 85, 92, 98
Adding, 62
Deleting, 63
Removing, 328
Starting, 326
Stopping, 327
Testing, 62
Logical Devices
Examining, 322
Finding, 321
Maximum number of redundant server pairs, 205, 208
Maximum Store File Size, 189
Naming Conventions
Data Records, 103
Definition Records, 103
Field Names, 103
Records, 103
Selector Format Records, 103
Output Type, 95
Performance
Testing, 54
Pinging, 46, 78, 329

338 Glossary
Point Counts, 89, 95, 101
Priority, 86, 93, 99
Pulsed Writes, 93
PUT, 81, 90, 114, 150, 158
Creating, 90
Long Tags, 90
LongLong Tags, 90
Structures, 163, 166
Testing, 51, 53, 69, 71
Put Records
Creating, 92
Range, 89, 95, 101
Record & Field, 89
Recovering Historical Data, 218
Recovering the primary node’s store file, 38
Redundancy, 203
Cancelling unsolicited tag requests, 39
Configuration, 205
Effect of Timeout and Frequency, 208
Enabling TSK_DETECT diagnostics messages, 210
Failback, 207
Frequency, 206
Indicator Fields in InfoPlus.21, 207
IO_FREQUENCY, 206
IOExternalFTDef, 206
Issues, 214
Known Issues, 214
Limitations, 208
Manual Control, 209
Manual vs. Automatic Control, 209
Maximum number of redundant server pairs, 205, 208
RescanLogicalDevices, 39
Sample Failover Times, 208
Store & Forward and Redundancy, 208
Watchdog Tag, 206
Rejecting Old S&F Data, 40
Removing a Logical Device, 328
Scan Off, 128
Scanner, 174
Server, 7
Configuration, 79
Pinging, 78
Server Aliveness, 38
Setting the Timestamp of Unavailable Points, 38
SFMonitor, 184
Shutdown
Testing, 66
Simulation Server. See CIM-IO, Simulation Server
Smart Data Types, 17
Starting a Logical Device, 326
STOPGET
Testing, 60
Stopping a Logical Device, 327

Glossary 339
Store, 174
Store & Forward, 86, 99, 173, 193, 325
Analyze, 195
And Windows Compressed Drives, 193
Architecture, 173
Autostarting, 182
AutoStarting, 182
Autostopping, 184
CIMIO_SF_ANALYZE, 195
cimio_sf_start, 182
cimio_sf_stop, 184
Components, 173
Conditions under which Store & Forward Occurs, 173
Configuration, 175
Controlling the Speed of Recover, 198
Device Records, 177
DUMP Recover Parameter, 196
File Space Needed, Get Records, 189
File Space Needed, Unsolicited Records, 192
Forward, 174, 180
Forward Process Memory Usage, 190
Forward Rate, 186
Ignoring Old Data, 193
IO_ASYNC, 178
IO_STORE_MAX_SIZE, 179
Manual Start, 182
Maximum Store File Size, 189
Monitoring Files, 184
NODE Recover Parameter, 196
Parameters, 175
Performance, 184
Problem
Store File Keeps Growing, 191
Problems Storing Data, 191
Recover, 194
Recover - Setting Up Recover, 195
Recover and ADDNEW, 198
Recover and InfoPlus.21 Archive Limits, 200
Recover and UPDATE, 198
Recover Client, 195
Recover Performance, 199
Recover Server, 195, 196
Recovering Corrupt Store Files, 196
Recovering Data, 194
Recover's Impact on InfoPlus.21, 199
Redundancy and Store & Forward, 208
Rejecting Old Data, 193
Scan List File, 187
Scanner, 173, 180
Scheduling and Scheduling Records, 178
Setting Recover to Always Add Data, 198
Setting Recover to Replace Data, 198
Setting up InfoPlus.21 to Recover Old Data, 196

340 Glossary
Store, 174, 180
Store File Compatability, 228
Store File Location, 188
Store File Size, 189, 192
Store Files, 188
Store List File, 188
Store Rate, 186
Store/Forward Ratio, 186
TCP Service Names, 181
TCP Services, 180, 181
Transfer Records, 177
Unsolicited Data Compression, 191
Unsolicited List File, 188
Using with Windows File Compression, 193
Version Compatability, 228
Store and Forward
Forwarding, 184
Rejecting Old Files, 40
Store File Size, 189, 192
Maximum Size, 189
Store IO_STORE_MAX_SIZE, 179
Store Recovering Old Store Files, 194
Tag Name, 89, 96
Tasks
Asynchronous client task, 14
External, 104
History recovery client task, 15
History Recovery Task, 14
Main client task, 14
Starting Manually, 79
Unsolicited client task, 15
TCP Services
Store & Forward, 180
Testing
Asynchronous I/O, 72
Automating Parameter Input, 69
Cancel, 57
CIM-IO Clients, 75
Declare, 57
Error Printouts, 63
GET, 57
GETHIST, 59
Logical Devices, 62
PUT, 57
Shutdown, 66
STOPGET, 60
UNSOL, 57
Testing CIM-IO Servers, 49
Testing Server Aliveness, 38
Timeout, 86, 93, 99
Transfer Records, 79
IoGetDef, 79
IoGetHistDef, 79

Glossary 341
IoPutDef, 79
IoPutOnCosDef, 79
IoUnsolDef, 79
Maximum Number of Tags, 120
Put On Change of State, 158
Put On COS, 158
Read, 150
Read History, 150
Unsolicited, 150
Write, 150
Troubleshooting, 223
Turning Enhanced Diagnostics On/Off, 241
Unavailable Point Timestamp, 38
Unit Number, 85, 92, 98
UNSOL, 81, 96, 129
Activation, 130
Creating, 96
Structures, 163, 169
Testing, 57, 69, 71

342 Glossary

You might also like