Professional Documents
Culture Documents
AspenCimIOV12 Usr
AspenCimIOV12 Usr
AspenCimIOV12 Usr
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.
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
Contents iii
Manager Parameters....................................................................................... 46
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
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
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
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
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.
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.”
2 Overview 7
Cim-IO Architecture
8 2 Overview
Cim-IO Interactive Programs
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
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.
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.
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.
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
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
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.
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.
Clicking Finish dismisses the Add Cim-IO Interface Wizard. You will see the
new interface instance has been configured and is running.
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.
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.
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.
Clicking Next invokes the Progress screen which displays progress as the
connection is established. A Cim-IO device record is created in the local
Clicking Finish dismisses the wizard. You will see the new Cim-IO connection
appear in the Cim-IO IP.21 Connection Manager.
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
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 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.
1 tenth of a second
½ a second
1 second
10 seconds
30 seconds
1 minute
5 minutes
10 minutes
30 minutes
1 hour
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:
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):
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,
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.
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.
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.
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
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
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
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.
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
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.
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.
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
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.
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
Example
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.
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.
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.
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)
Example
TEST1 REAL REAL
TEST2 ASCII ENUM
TEST3 SHORT
TEST4 LONG ORDINAL
TEST5 LONG
TEST6 DOUBLE REAL
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
Example
TEST1
TEST2
TEST3
TEST4
Example
TEST1 10 REAL
TEST2 100 ASCII
TEST3 2 SHORT
TEST4 1000 LONG
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)
Installation
The Cim-IO client is installed with InfoPlus.21.
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
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.
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:
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.
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.
Client Node
TSK_M_CIMIO_1 GET1_00001
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
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.
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
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.
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.
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.
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.
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.
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
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
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.
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.
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.
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.
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
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
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.
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
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.
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.
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
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.
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.
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.
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
Io-EU-Conv Fields
NAME
Standard record name field. This record name must be Io-Eu-Conv.
#_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.
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
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.
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.
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.
FURNACE01W NAME
FURNACE 1 WEST POINTS DESCRIPTION
ON IO_MESSAGE_SW
NO IO_ACTIVATE-
NAME
Standard record name. Create a Cim-IO transfer record for each set of values
being read or written.
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.
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.
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.
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.
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
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.
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.
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
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.
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.
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.
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.
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.
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
n IO_DECLARE_STATUS_DESC
Specifies a character string field indicating the success of the
declaration/cancellation status for this point.
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.
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
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.
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.
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.
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.
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.
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: 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,
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-
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.
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.
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
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.
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
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.
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.
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.
IoLogCntrl NAME
1 # CONDITION FIELDS
IoMessageSwCondition 1 CONDITION RECORD
D-IoGet IO_MESSAGE_SW 1 CONDITION FIELD
1 # LOG RECORDS
IoLog 1 LOG RECORD
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
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
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
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
6 ALTERNATE_FORMAT
-1 6 SUMMARY_DESC_POS
1 # SUMMARIES
IoSummary 1 SUMMARY_RECORD
IoMessageSwCondition 1 SUM CONDITION RECORD
0 # CONDITION FIELDS
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
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
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.
This tag is associated with the value record Analog2. The starting point of the
structure is the VALUE field in record Analog2.
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
O 1 IO_DATA_PROCESSING
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
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.
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.
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.
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.
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.
On the contrary, a setting of other than 0 could potentially cause data loss if a
wraparound occurs.
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.
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
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?
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 STORE
SERVER1 FILE 1 SERVER2 FILE 2
(DLGP1) (DLGP2)
service=CIMIODLGP1 service=CIMIODLGP2
Server
Computer
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.
For more information or for examples on configuring the Store and Forward
processes please go to https://support.aspentech.com
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.
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.
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.
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.
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.
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.
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: 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.
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
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.
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
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).
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.
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.
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.
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)
InfoPlus.21
Cim-IO
Connection
Manager
Permanent Connection
Primary Connection
Backup Connection
Field Description
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
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.
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.
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
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.
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.
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.
Note: To determine the proper service name, refer to the user's guide for the
appropriate Cim-IO server.
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.
Note: The error messages listed in this chapter are not specific to any
database or Cim-IO client or server.
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
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.
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.
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.
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.
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.
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.
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.
14 Troubleshooting 231
232 14 Troubleshooting
15 Error Processing
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>
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.
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.
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
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.
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:
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
Diagnostic Configuration
Specifying Filters
The following examples illustrate the format for keywords of type 1 and 2.
Keyword Format Description
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
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
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.
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.
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.
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:
The errors contained in these files are listed in the following sections.
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.
Examining a Device
There are several ways to examine a Logical Device. The first way:
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.
Server tab
On the Device Properties dialog box, click the Server tab. The Server tab
displays several server configurations.
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.
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
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
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.
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.
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.
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