System integration via Modbus protocol Micropilot FMR20 Modbus RS485
30 Endress+Hauser
8.1.2 Modbus function codes
Function code Action Register type Command type
03 (0x03) Single / multiple read Holding Register Standard
06 (0x06) Single write Holding Register Standard
16 (0x10) Multiple write Holding Register Standard
8.1.3 Modbus exceptions
Exception Number Description
MB_EX_ILLEGAL_FUNCTION 01 (0x01) Function code is not supported
MB_EX_ILLEGAL_DATA_ADDRESS 02 (0x02) Register address is not available
MB_EX_ILLEGAL_DATA_VALUE 03 (0x03) Data value is not permitted (e.g. writing of a float32 to a char8
register).
Also valid for writing to read-only registers.
8.1.4 Modbus special data types
Data type Registers
per
parameter
Description
float32
(IEEE754)
2 As a float32 consists of four bytes, a parameter with float32 as the data type must be
divided into two 16-bit words that are transmitted via Modbus. To read a float32-type
parameter, two consecutive Modbus registers therefore must be read.
Modbus register [n] Modbus register [n+1]
Byte A Byte B Byte C Byte D
float32 value
uint32 /
int32
2 The same conditions that apply for float32 data types also apply for uint32 / int32 data
types.
Modbus register [n] Modbus register [n+1]
Byte A Byte B Byte C Byte D
uint32 / Int32 value
string (char8
array)
0.5 As a single character of a character string only needs one byte, two characters are
always packed into a Modbus register. Furthermore, the length of a parameter with
string as the data type is limited to 60 characters.
Modbus register [n] Modbus register [n+1]
char8 [n] char8 [n+1] char8 [n+2] char8 [n+3]