OXY5500 Gas Analyzer Operating Instructions
Endress+Hauser 55
6 Modbus communication
Modbus is a serial communications protocol published by Modicon in 1979 for use with its programmable logic
controllers (PLCs). It has become a de facto standard communications protocol in industry and is now the most
commonly available means of connecting industrial electronic devices. Modbus is used extensively in lieu of other
communications protocols because it is openly published and royalty-free, relatively easy to deploy, and capable of
moving raw bits or words without placing many restrictions on vendors.
This chapter covers the protocols, formats, and register data used to communicate with the OXY5500.
6.1 Protocol definition
6.1.1 General specification
The following general specifications apply to the Modbus protocol:
• The protocol is Modbus RTU conform.
• The protocol is a client-server arrangement with the host controller acting as the server and each individual
module as a client.
• Each module on the bus needs to have a unique device ID (see register 4095).
• The device has no command buffer, so the host must always wait until the command is processed.
o Read commands need 10ms processing time over RS-232 and RS-485 and 300ms over LAN.
o After a write process, certain time consuming tasks are started. After a write process, a fixed timeslot of
150ms over RS-232 and RS-485 and 300ms over LAN after the transmitted response should be kept.
• RX Input Buffer is 256 bytes.
• A CRC16 error checking method is implemented. Starting value is 0xFFFF and polynomial type is 0xA001.
• Some registers are read only. When writing to those, a Modbus error 2 occurs (illegal data address). This also
happens when 4 registers should be written, but the last 2 are read-only. No register will be changed afterward.
• All registers between 1023 and 5708 can be read, as there is no read-protection.
6.1.2 Function codes
Available public functions are
• 3: Read Holding Registers
• 4: Read Input Registers
• 16: Write Multiple Registers
Please note that function codes 3 and 4 are fully interchangeable as they behave in the same way.
Function code 16 may be used with broadcast (device ID = 0). Codes 3 and 4 may not be used with broadcast.
6.1.3 Data formats
6.1.3.1 Float
The Float refers to the floating point according to IEEE 754 (Single Precision). This format requires two registers
obtaining 32 bit where each register contains the high byte in its first bit.
For example, if the float value is 20.56 (int32), represented as 0x41A47AE1 (hexaint32), it is written in two
consecutive registers, where the first register is 3499. Therefore, the value must be transmitted in the following way:
Register Value
Table 13. Float values