ABB AO2000 Advance Optima Continuous gas analyzers
DescriptionApplication Information from the AO2000 gas analyzer can be transferred to a PC or DCS via
the Modbus. Measurement values, status signals and also signals of analog and
digital inputs and outputs are thus available for further usage.
Using the AO-MDDE server the signals can be integrated into standard software
(e.g. Excel, Visual Basic or LabVIEW). For further information, see Chapter 4
“AO-MDDE server and demo programs”, page 3535. AO-MDDE can be
downloaded from the DVD-ROM which is delivered together with each gas
analyzer. AO-MDDE does not support Modbus over TCP/IP.
Basic documents Modbus Application Protocol Specification V1.1b, December 28, 2006
Modbus over Serial Line Specification and Implementation Guide V1.02,
December 20, 2006
Modbus Messaging on TCP/IP Implementation Guide V1.0b, October 24, 2006
These documents are available at http://www.modbus.org/specs.php.
Interfaces and
connection versions
The RS232 and the RS485 interface located on the RS232/RS485 module in
AO2000 are supported, where only one can be operated at a time. Connection
versions are described in Chapter 3 “Modbus connection”, page 30.
As an alternative, the Ethernet 10/100BASE-T interface can be used for data
transmission via Modbus TCP/IP protocol (from software version 5.1, see page 7).
Transferred data Read Write Example
Measurement values x – CO, NO, H2, etc.
Analog inputs x – Indication of mA-values of external analyzers
Analog outputs x – Indication of mA-values of measurement values or calculated
values (function block application)
Digital inputs x – Indication of external status signals
Digital outputs x – Measurement range feedback, indication of solenoid or pump
controls
Bus analog inputs x x Entering analog values into the function block application
Bus analog outputs x – Outputting analog values from the function block application
Bus digital inputs x x Control of functions such as auto calibration, measuring range
control, etc. after function block configuration
Bus digital outputs x – Indication of all functions integrated by function block configuration such as alarm signaling etc.
Modbus configuration x – Indication how many components, AOs, DOs, etc. have been
configured or are in the gas analyzer
Status signals x – Indication of failure, maintenance mode, maintenance request
Measurement range
feedback
x – Index of the active measurement range
Measurement range
configuration
x – Measurement range limits (start and end value)
Measurement range
drift values
x – Offset drift, amplification drift, delta offset drift, delta amplification
drift
QAL3 calibration data x – Setpoints and actual values, measuring range and date of last
calibration (not available in analyzer modules Limas11, Uras14,
Magnos16, Magnos106, Caldos15, Caldos17, and MultiFID14)

Data transfer For data transfer a combination of frames is used, that consists of 1/0 information,
united to one or more telegrams.
Frame The transfer values are decomposed in bytes (= 8 bit). Each of these bytes is
completed by one start-bit, possibly one parity-bit (even number of “1”) and one
stop-bit. In the following description the term “byte” will be used, even if ten or
eleven bits will be transferred including the start-, stop- and parity-bits.
Telegrams The Modbus telegrams consist of the following frames:
address (1 byte), function (1 byte), data (n bytes) and check sum (2 bytes).
The telegrams also take on the “shake-hands-function”: each telegram from
master to slave must be responded, before a new telegram is allowed to be
transmitted. The computer has to have in a adequate supervision, for excluding
non answering bus participants (time-out-supervision).
Admissible addresses As addresses for the participants of the bus the numbers 1 to 255 are admitted.
The address 0 is the global address (broadcast-address). When this address will
be used in a telegram, all participants accept this telegram without an acknowledg ment to the master.
Functions Code Term Function
01 Read coil status Reading of binary values of type coil
02 Read input status Reading of binary values of type status
03 Read holding registers Reading of 16 bit holding-registers
04 Read input registers Reading of 16 bit input-registers
05 Force single coil Setting of a single binary value
06 Preset single register Set of a single 16 bit-register; for DINT or
REAL two telegrams are necessary
08 Loopback diagnostic test Testing telegram for diagnostics of the
communication capability of slave
15 Force multiple coils Set of several successive binary values
16 Preset multiple registers Set of several successive 16 bit-registers
Check sum The check sum is calculated over all bytes of one telegram without the start-,
stop- and parity-bits.
Transfer rules The neutral position of the data line corresponds with the logical “1”.
A distance of more than 3.5 bytes, however at least 10 ms is defined as separation
between two telegrams. For the beginning of the data transfer the neutral position
of the data line must be observed.
Integration The AO2000 Modbus/TCP server expects requests from the current IP addresses
via the communication port. A maximum of 4 clients can be connected to the
Modbus/TCP server of an AO2000 at the same time. If the connection to a client
breaks down, the connection status in the Modbus/TCP server is enabled again
after a max. 60 seconds.
Reading out data
from the AO2000
Modbus/TCP server
The following procedure must be executed on the Modbus client, in order to
receive data from the AO2000 Modbus/TCP server:
1. Establish a TCP connection to port 502 on the server.
2. Create a Modbus request.
3. Send the Modbus request incl. the Modbus/TCP MBAP Header.
4. Wait for a response to the same TCP connection.
5. Read the first 6 bytes of the response; these state the length of the response.
6. Read the remaining bytes of the response.
Functions, addresses
and registers
The supported functions and the addresses and registers of Modbus over TCP/IP
are equivalent to those of Modbus over RS232/RS485.

Function code 43 with MEI 14 (MEI = Modbus Encapsulated Interface) is used to
read the device parameters to
read measured values,
transfer simulation data,
apply reference material.
Address assignment
of the device
parameters for the
function code 43
There is read access to the device parameters.
Measurement components are mapped with the following structure:
Name
Measurement range start
Measurement range end
Unit
The number of the first measured values register is listed under BasisM in the
device parameters list.
The measured value status is implemented as NAMUR status:
Bit Assignmant
0 Error
1 Maintenance
2 Maintenance request
3 Beyond specification
4 Test operation, simulation measured value transmitted
5…15 Reserved for extensions
16…31 Vendor-specific
The number of the first simulation data register is listed under BasisS in the device
parameters list.
The number of the register to apply reference material is listed under BasisR in the
device parameters list. Maximum 32 Bus DIs are reserved for transferring
reference material.
The register "status of application" is used for feedback of the DIs for which a
hardware digital output is connected. When reference material is applied, the
status "maintenance" is set and a message is displayed on the gas analyzer's
screen.
Name Object ID Encoding Table Attribute Description
VendorName 0x00 String System_control Fabrication_number Manufacturer name
ProductCode 0x01 String System_control Product_Code Manufacturerspecific device
identifier
MajorMinorRevision 0x02 String System_control Version Software version of
measuring system
ProductName 0x04 String System_control Product_Name Device name
SerialNumber 0x80 String System_control SerialNumber Serial number of
measuring system
ComponentNumber 0x81 Word Detector_para Classification = 0 Number of
measurands
BasisM 0x82 Word Modbus_conf Registernumber First register of the
measurands block
BasisS 0x83 Word Modbus_conf Registernumber First register of the
simulation data
BasisR 0x84 Word Modbus_conf Registernumber First register of the
reference material
data
Component1_Name 0x85 String Component_para Name Name of measured
component 1
Component1_
Range_Start
0x86 Float Meas_range_para Lower_meas_range Lower limit of output
range of measured
component 1
Component1_
Range_End
0x87 Float Meas_range_para Upper_meas_range Upper limit of output
range of measured
component 1
Component1_Unit 0x88 String Component_para Unit_name Unit of measured
component 1
Component2_Name 0x89 String Component_para Name Name of measured
component 2
Component2_
Range_Start
0x8A Float Meas_range_para Lower_meas_range Lower limit of output
range of measured
component 2
Component2_
Range_End
0x8B Float Meas_range_para Upper_meas_range Upper limit of output
range of measured
component 2
Component2_Unit 0x8C String Component_para Unit_name Unit of measured
component 2