Read Holding Registers (Function Code 03)

Query

This function allows you to retrieve the contents of holding registers 4xxxx (Modbus 4x range) in the addressed slave. The registers can store the numerical values of associated timers and counters that can be driven to external devices. The addressing allows retrieval of up to 125 registers per request. However, the specific slave device can have restrictions that lower this maximum quantity. The registers are numbered form zero (40001 = zero, 40002 = one, and so on). The broadcast mode is not allowed.
The following example reads registers 40108…40110 (three registers) from slave number 11.
TIP: This is the structure of the message being sent out to the Modbus network. The following byte values are displayed in hexadecimal format.
Node Address
Function Code
Data Start Registers High
Data Start Registers Low
Number of Registers High
Number of Registers Low
Error Check Field (2 bytes)
0B
03
00
6B
00
03
CRC

Response

The addressed slave responds with its address and the function code, followed by the information field. The information field contains 1 byte describing the quantity of data bytes to be returned. The contents of the registers requested (DATA) are two bytes each, with the binary content right justified within each pair of characters. The first byte includes the high-order bits and the second, the low-order bits.
Because the slave interface device is normally serviced at the end of the controller's scan, the data reflects the register content at the end of the scan. Some slaves limit the quantity of register content provided each scan; thus for large register quantities, multiple transmissions are made using register content from sequential scans.
In the example below, the registers 40108…40110 have the decimal contents 555, 0, and 100 respectively.
Node Address
Function Code
Byte Count
High Data
Low Data
High Data
Low Data
High Data
Low Data
Error Check Field (2 bytes)
0B
03
06
02
2B
00
00
00
64
CRC
Provide Feedback
Have questions or feedback about this documentation? Please submit your feedback here.
Normal