Modbus Registers Tables
Table Format
Address |
Register |
RW |
Unit |
Type |
Range |
Factory |
Saved |
Bit |
Description |
---|---|---|---|---|---|---|---|---|---|
-
Address: a 16-bit register address in hexadecimal. The address is the data used in the Modbus frame.
-
Register: a 16-bit register number in decimal (register = address + 1).
-
RW: register read-write status
-
R: read-only access
-
RW: read access and write access using Modbus functions
-
-
Unit: the unit the information is expressed in.
-
Type: the encoding data type (refer to Data Types).
-
Range: the permitted values for this register, usually a subset of what the format allows.
-
Factory: value of the variable in a new device, and after a reset to factory setting command.
-
Saved:
-
YES: the value is saved in case of power loss.
-
NO: the value is not saved in case of power loss.
-
-
Bit: bit number for BITMAP description.
-
Description: provides information about the register and restrictions that apply.
Data Types
Data Types |
Description |
Range |
---|---|---|
INT16U |
16-bit unsigned integer |
0 to 65535 |
INT16 |
16-bit signed integer |
-32768 to +32767 |
INT32U |
32-bit unsigned integer |
0 to 4 294 967 295 |
INT32 |
32-bit signed integer |
-2 147 483 648 to +2 147 483 647 |
STRING |
Text string |
1 byte per character |
BITMAP |
16-bit register |
– |
Data Type: BITMAP
A BITMAP register is a 16-bit register that can be read:
-
as a 16-bit unsigned integer, using the Read multiple register function (function code 0x03)
-
as a collection of bits, using the Read bits functions (function code 0x01 or 0x02)
Notes
-
The type column tells how many registers to read to get the variable. For instance INT16U requires reading one register, whereas INT32 requires reading 2 registers.
-
Some variables must be read as a block of multiple registers. Reading the block partially results in an error.
-
Reading from an undocumented register results in a Modbus exception. Refer to Modbus Exception Codes.
-
Numerical values are given in decimal. When it is useful to have the corresponding value in hexadecimal, it is shown as a C language type constant: 0xdddd. For example, the decimal value 123 is represented in hexadecimal as: 0x007B.
-
INT32U or INT32 variables are stored in big-endian format: the most significant register is transmitted first, the least significant second.
-
Out of order and not applicable values depend on the data type.
Data Type |
Out of Order and Not Applicable Values |
---|---|
INT16U |
65535 (0xFFFF) |
INT16 |
-32768 (0x8000) |
INT32U |
4294967295 (0xFFFFFFFF) |
INT32 |
0x80000000 |