The ATMI ACM driver allows the FieldServer to transfer data to and from devices over
either RS-232 or RS-485 using ATMI ACM protocol. There are eight RS-232 and two
RS-485 ports standard on the FieldServer. The FieldServer can emulate a passive
client. ( A passive client is one that that consumes messages produced by an remote
device.)
2. Driver Scope of Supply
2.1 Supplied by FieldServer for this driver
FieldServer
Technologies
PART #
FS-8915-10 UTP cable (7 foot) for RS-232 use
FS-8915-10 UTP cable (7 foot) for Ethernet connection
FS-8917-02 RJ45 to DB9F Connector adapter
FS-8917-01 RJ45 to DB25M connection adapter
SPA59132 RS-485 connection adapter
Driver Manual.
DESCRIPTION
2.2 Provided by user
FieldServer Technologies 1991 Tarob Court Milpitas, California 95035 USA Web:www.fieldserver.com
4. Configuring the FieldServer as a ATMI ACM Client
The ATMI ACM driver is a passive client driver. This means that it processes unsolicited
incoming data. It cannot poll for data.
For a detailed discussion on FieldServer configuration, please refer to the instruction manual for
the FieldServer. The information that follows describes how to expand upon the factory defaults
provided in the configuration files included with the FieldServer (See “.csv” files on the driver
diskette).
This section documents and describes the parameters necessary for configuring the FieldServer
to communicate with a ATMI ACM Server.
The configuration file tells the FieldServer about its interfaces, and the routing of data required.
In order to enable the FieldServer for ATMI ACM communications, the driver independent
FieldServer buffers need to be declared in the “Data Arrays” section, the destination device
addresses need to be declared in the “Client Side Nodes” section, and the data required from
the servers needs to be mapped in the “Client Side Map Descriptors” section. Details on how to
do this can be found below.
Note that in the tables, * indicates an optional parameter, with the bold legal value being the
default.
4.1 Data Arrays
Section Title
Data_Arrays
Column Title Function Legal Values
Data_Array_Name Provide name for Data Array Up to 15 alphanumeric
characters
Data_Format Provide data format. Each data
array can only take on one format.
Data_Array_Length Number of Data Objects. Must be
larger than the data storage area
required for the data being placed
in this array.
Data from one ACM can be stored
in multiple data arrays. Position in
the array is dependent on gas
number area number. Further
details are provided in section 6.1
Baud* Specify baud rate 110 – 115200, standard baud
Parity* Specify parity Even, Odd, None, Mark, Space
Data_Bits* Specify data bits 7, 8
Stop_Bits* Specify stop bits
Protocol Specify protocol used ATMI
Handshaking* Specify hardware handshaking RTS, RTS/CTS, None
Poll Delay* Time between internal polls 0-32000 seconds
Timeout Specifies the amount of time that
may pass between complete
data screens. If this time expires
a timeout error is produced but
the processing of data is not
affected. The port is not cleared
and gas data is not reset.
IC_Timeout This parameter is used in a way
that is different to most
FieldServer driver applications.
In this case of this driver it
specifies the maximum amount
of time that may pass between
the driver receiving an incoming
character. If the time is
exceeded then an error is
produced but note that the error
has no other effect on the driver.
The port is not cleared and gas
data is not reset.
P1-P8, R1-R2
rates only
1
default 1 second
This value should provide a
margin over the time configured
between samples in the
CONFIG.DAT profile of the
ACM unit.
This value (specified in
seconds) should be set allow a
margin between time stamp
messages from the ACM unit.
FieldServer Technologies 1991 Tarob Court Milpitas, California 95035 USA Web:www.fieldserver.com
4.4.4 Map Descriptor Example 1- Gas Values, Alarms & Warnings for all slots/ports.
This example illustrates the map descriptors required to complete store ACM data for 80 areas. Each map descriptor tells the ATMI ACM driver
where to store each component of ACM data. The gas number & area number determine the position in the array. Read section 6.1 for more
information
4.4.5 Map Descriptor Example2 – Gas values for the current (most recent) port sample.
This example illustrates a map descriptors used to store the data from the most recent port sample. The map descriptor stores the following
information :-
1. Port Number
2. Up to 16 gas values (The gas name is not provided) The position in the array is based on the Gas Number.
For example. A port may sample two gasses. The first is Gas #4 and the second may be Gas #2, The driver stores the value of Gas#4 in
array location 4 and stores the value of Gas#2 at array location 2.
The following additional information may also be stored if the DA_Bit_Name & DA_Byte_Name parameters are specified.
The current port
number and up to 16
gas values are stored
in this data array.
st
The 1
element
stored is the port
number. The next
16 values stored are
the gas values
(multiplied by 100).
The location is
based on the Gas
umber and not the
row number.
This keyword tells
the driver to use this
map descriptor to
store the current
port’s sample data..
If x is the number of the current
port (port most recently
sampled) then the data array
position corresponding to x is
set to 1 and all other elements
are set to zero.
E.g. If Port 1 is the current port
then the 2
nd
element of the
array (index=1) is set non-zero.
The array can be any data
format.
If the DA_Bit_Name parameter
is omitted then this data is not
Alarm / Warning Status for each gas is
indicated in this array.
If gas x is in alarm then x is used as the
index into the array. E.g. If Gas #1 is in
alarm then the 2
(index=1) is set non-zero.
The value of each element indicates
alarm/warning. If the Value is 1 then the
gas in alarm. If the value is two then the
gas is at a warning level.
The array format should be capable of
storing a value. If a Bit/Packed_Bit format
is used then you will not be able to
distinguish between an alarm/warning.
If the DA_Byte_Name parameter is
omitted then this data is not stored.
FieldServer Technologies 1991 Tarob Court Milpitas, California 95035 USA Web:www.fieldserver.com
4.4.6 Map Descriptor Example3 – Storing Malfunction Data
This example illustrates a map descriptor used to store malfunction data reported by the ACM unit. When a malfunction is cleared then 100
elements of the array are set to zero. When a Malfunction is present the 1
contains the minor type and element x (x=major*10+minor) is set to a value of 1. Additional information is provided in section 6.7
4.4.7 Map Descriptor Example4 – Gas values for the current (most recent) slot sample.
This example illustrates a map descriptors used to store the data from the most recent slot sample. The map descriptor stores the following
information :-
5. Slot Number
6. Up to 16 gas values (The gas name is not provided) The position in the array is based on the Gas Number.
For example. A slot may sample two gasses. The first is Gas #4 and the second may be Gas #2, The driver stores the value of Gas#4 in
array location 4 and stores the value of Gas#2 at array location 2.
The following additional information may also be stored if the DA_Bit_Name & DA_Byte_Name parameters are specified.
This keyword tells
the driver to use this
map descriptor to
store the current
slot’s sample data..
If x is the number of the current
slot (slot most recently
sampled) then the data array
position corresponding to x is
set to 1 and all other elements
are set to zero.
E.g. If Slot 1 is the current slot
then the 2
nd
element of the
array (index=1) is set non-zero.
The array can be any data
format.
If the DA_Bit_Name parameter
is omitted then this data is not
Alarm / Warning Status for each gas is
indicated in this array.
If gas x is in alarm then x is used as the
index into the array. E.g. If Gas #1 is in
alarm then the 2
nd
element of the array
(index=1) is set non-zero.
The value of each element indicates
alarm/warning. If the Value is 1 then the
gas in alarm. If the value is two then the
gas is at a warning level.
The array format should be capable of
storing a value. If a Bit/Packed_Bit format
is used then you will not be able to
distinguish between an alarm/warning.
If the DA_Byte_Name parameter is
omitted then this data is not stored.
FS-8700-64 ATMI ACM Page 12 of 22
5. Configuring the FieldServer as a ATMI ACM Server
The ATMI ACM driver cannot be used as a server.
6. Driver Notes
6.1 Data position in the Data Arrays
To understand how the driver stores data for the current port, read the notes provided with mapdescriptor example 2 as the following notes do not apply.
To understand how the driver stores data for malfunctions, read the notes provided with mapdescriptor example 3 as the following notes do not apply.
For each component stored the values are stored as a one-dimensional array. Data storage is
zero referenced. This means that the first area or first gas is stored in the first location, which
has an index of zero. To find the element of interest use the following formula.
Port Alarm / Warnings / Gas Values Data Array locations
The ATMI ACM Driver counts all incoming bytes as the ‘PLC Byte Received’ statistic. This can
be viewed on the connection detail and overview screen. Typically this count will increase by
approx 2500 bytes per full screen of area data.
IN addition the driver reports one count of ‘PLC READ MSG RECD’ statistic for each map
descriptor used to store information from a complete message. Typically this count will increase
by 5 if you are storing l slot & port alarms & warnings and the gas value.
If a complete message is received but no map descriptor is found to store any of the data the
data then the MSG IGNORED statistic will be incremented by one.
6.3 Exposing Driver Stats
IN addition to the normal FieldServer statistics this driver can expose some statistics and
diagnotic information in a data rray so that it may be read or reset by a remote device.
A special map descriptor is required. The driver recognizes the map descriptor by its name
which must be "ATMI-stats" .
The following example shows how this special map descriptor can be configured.
When the driver sees this map descriptor it uses the data array STAT_DATA (in this example)
to store driver specific statistics. Only one of these map descriptors may be specified per
FieldServer.
The array position is dependent on the port number. The offset is calculated by multiply the port
number by 30. Thus port 2 data will start at element 60.
FieldServer Technologies 1991 Tarob Court Milpitas, California 95035 USA Web:www.fieldserver.com
0 Not Used
1 ATMI_STAT_SCAN1 FieldServer Tech Support diagnostic.
2
FieldServer Tech Support diagnostic.
Screen decoding abandoned because
the area number was unintelligible (>
ATMI_STAT_DECODE1
3
ATMI_STAT_FINIS
4
80)
Driver has found an end-of-screen
identifier.
FieldServer Tech Support diagnostic.
The line number was unintelligible ( >
ATMI_STAT_COLLECT1
5
25 ).
FieldServer Tech Support diagnostic.
The collection function returned an
ATMI_STAT_COLLECT2
6
error. Row or Column were inconsistent.
FieldServer Tech Support diagnostic. A
start-of-screen identifier was found
ATMI_STAT_COLLECT3
7
ATMI_STAT_ERRORLIGHT
8
ATMI_STAT_START
9
ATMI_STAT_LF
10
before whilst processing screen data.
Equivalent to the error light on the ATMI
ZD80 processor.
A start of screen identifier has been
found.
A new line of screen data has been
identified.
FieldServer Tech Support diagnostic.
The collection function returned an
ATMI_STAT_ERRORLIGHT1
11
error. Row was inconsistent.
FieldServer Tech Support diagnostic.
The collection function returned an
ATMI_STAT_ERRORLIGHT2
12
error. Column was inconsistent.
A time greater than the port timeout has
elapsed since the last complete screen
ATMI_STAT_TIMEOUT
13
full of data.
A time greater than the port’s inter
character timeout (ic_timeout) has
passed since the driver last received a
ATMI_STAT_ICTIMEOUT
14
ATMI_STAT_BYTECOUNT
15
ATMI_STAT_STREAMING
16
new character from the ACM unit.
The number of ACM data byte
processed
The number of streaming (buffer
overflow) errors.
When processing the most recent
message, at least one map descriptor
ATMI_STAT_STORE_LASTMAPDESCP
was found with which to store data.
FieldServer Technologies 1991 Tarob Court Milpitas, California 95035 USA Web:www.fieldserver.com
When processing the most recent
message, no map descriptors were
found to tell the driver how to store the
incoming data.
Increment’s once for each time data is
stored. Ie will increase by 5 for one
screen full of data stored using 5 map
descriptors.
Will increase by one for each screen full
of data processed in which at least one
gas value was non-zero.
Count of the number of times that a
malfunction’s major type could not be
recognized.
Count of the number of times that a
malfunction’s minor type could not be
recognized.
Count of the number of times that the
buffer overflowed when analyzing
malfunction data. Each time this
happens the malfunction is not stored.
The following error messages should be reported to FieldServer Technologies.
ATMI:#4 Error. atmi_chan_init() Init with null chan.
The following errors indicate a driver, connection or remote device problem if they occur
frequently.
ATMI:#8 Error. Discard because area=%d max=%d
Incoming data has been discarded because the driver could not resolve a valid area number.
The following error messages or warning arise from problems that can normally be
resolved by users without support from FieldServer Technologies.
ATMI:#7 Error. No read/writes permitted. Mapdesc=<%s>
Edit the CSV file. Change the map descriptor function to passive. Reset the FieldServer.
ATMI:#1 FYI. Some data is being abandoned. Mapdesc too short. <%s>
Edit the CSV file. Increase the map descriptor’s length to allow the driver to process the
maximum data area. Not each data area requires 16 storage elements. Reset the FieldServer.
This message is only printed once even if the error occurs more than once.
ATMI:#2 FYI. Some data is being abandoned. Array too short. <%s>
Edit the CSV file. Increase the Map Descriptor’s data array length. Reset the FieldServer. This
message is only printed once even if the error occurs more than once.
FieldServer Technologies 1991 Tarob Court Milpitas, California 95035 USA Web:www.fieldserver.com
ATMI:#3 Error. Incoming data on port=%d is being abandoned. MapDesc rqd.
No map descriptors were found on the indicated port with which the driver could store the
incoming data. Change the CSV file and reset the FieldServer. This message is only printed
once even if the error occurs more than once.
ATMI:#6 FYI. The mapDesc called <%s> is too short.
Edit the CSV file. Increase the length of the map desc and reset the FieldServer.
ATMI:#5 FYI. You could have used a mapDesc called <%s> to expose diagnostic info.
No action I s required. Read section 6.3 for more information..
*ATMI:#9 Err. Mapdesc=<%s> data array=<%s> too short
The data array associated with the map descriptor being used to store ‘current port‘ data is too
short. Increase the length of the data array (not the length of the map descriptor) to at least 17.
For malfunction map descriptors set the length to at least 100. Edit the CSV file, make the
change and then reset the bridge.
*ATMI:#10 Err. Mapdesc=<%s> data array=<%s> too short
The data array defined by the DA_Bit_Name parameter associated with the map descriptor
being used to store ‘current port‘ data is too short. Increase the length of the data array (not the
length of the map descriptor) to at least 90. Edit the CSV file, make the change and then reset
the bridge.
*ATMI:#11 Err. Mapdesc=<%s> data array=<%s> too short
The data array defined by the DA_Byte_Name parameter associated with the map descriptor
being used to store ‘current port‘ data is too short. Increase the length of the data array (not the
length of the map descriptor) to at least 90. Edit the CSV file, make the change and then reset
the bridge.
2Mapdesc=<%s> Gas#=%d. Too big.The driver is trying to store the the current port’s gas data.
A Gas number larger than 16 has been found. It cannot be stored and has been discarded.
Your ACM may need re-configuring. Changing the driver configuration will not correct this
problem. Report this error to ATMI.*These messages are produce once only and then
suppressed so that they do not fill the error log every by being re-printed every time a new
message is processed. A consequence of this, is that, if the error occurs more than once in a
configuration, the second and subsequent occurrences will not be revealed until the first has
been corrected.
*ATMI:#13 Error. Illegal Map Descriptor length - defaulting to 1
FieldServer Technologies 1991 Tarob Court Milpitas, California 95035 USA Web:www.fieldserver.com
See section 4.2 for information on how timeouts should be specified.
Occasional timeouts may be expected when there are noisy messages or if the ACM device has
been locked. Timeouts do not stop the driver processing the next valid screen of data.
6.6 Demand & Lock Scan
The driver can process data from demand and locked scans. Incoming data is processed in the
same way as normal scans and stored using the same map descriptors.
6.7 Malfunctions
The driver can process malfunctions reported by the ACM unit.
When a malfunction is cleared then the driver sets all (1
elements to zero A malfunction is considered cleared when a normal scan is processed.
When a malfunction is recognized the driver stores data in the following locations.
1
2
st
Element : Major type of the malfunction ( as a number )
nd
Element : Minor type of the malfunction. (as a number )
And
Element x : Value set to 1.
X = major * 10 + minor
This additional data element is provided so that relays / indicating lamps in a downstream
device can be set without additional logic.
The driver uses the keyword ‘MALFUNCTION’ to recognize ACM malfunctions. If the ACM
firmware is changed and this keyword is no longer produced then the driver will no longer
recognize malfunctions.
If the driver recognizes that there is a malfunction but cannot interpret the malfunction type then
the major and/or minor types are set to a value of 99 and element x is not set at all.
The table below shows malfunction’s major and minor types.
st
100) of the malfunction data array
FieldServer Technologies 1991 Tarob Court Milpitas, California 95035 USA Web:www.fieldserver.com
The driver stores all gas values after multiplying them by 100. This allows the driver to store
values in arrays with formats other than floats without losing the precision provided by the ACM
unit. This is done because some downstream devices’ and protocols cannot handle floating
point numbers. This may not suite you in which case you will need to use scaling.
These parameter keywords should be added to each CSV Map Descriptor definition.
When you use a “…-alarm” keyword then the driver stores a 1 when the gas is in an alarm
condition and a zero when it is not in alarm condition. This means a zero is stored even if the
gas in a warning condition.
When you use a “…-warning” keyword then the driver stores a 1 when the gas is in a warning
condition and a zero when it is not in warning condition. This means a zero is stored even if the
gas in an alarm condition as well as when the gas is in a normal condition.
When you use a “….-combo” keyword then the driver stores a 1 whether the gas is in an alarm
OR warning condition and the driver stores a zero when the gas is in neither an an alarm or
warning state.
6.10 Current Slot
Current slot information is the same as current port information. On a Normal Scan, a single
slot is referenced. The gas values/warnings/alarms will be stored to the current slot data arrays
every time slot information is stored. Note, this only occurs once during any Normal Slot Scan
image.
6.11 Composite Validation Scan vs Normal Slot Scan
On a Normal Slot Scan Image, gas data is stored to the "slot" value/warning/alarm data arrays
and the "port" value/warning/alarm data arrays. If more than one port (area) is referenced in the
image, then the same value/warning/alarm gas data is copied to each section of the area "data
array". For example, if Areas 2 and 39 were referenced, then the gas data values and
warning/alarm status would be copied twice to the data array offset for Area 2 and the offset for
Area 39.
On a Composite Validation Image, only one area (port) should be referenced. The gas
values/warnings/alarms for the particular area referenced will be updated. As well the current
port data values will also be updated. Note, on Composite Validation Images, slot information is
not updated.
FieldServer Technologies 1991 Tarob Court Milpitas, California 95035 USA Web:www.fieldserver.com