Read Input Registers (Function Code 04)

Query

This function retrieves the contents of the controller's input registers from the Modbus 3x range. These locations receive their values from devices that are connected to the I/O structure and can only be referenced, not altered from within the controller. The addressing allows retrieving up to 125 registers at each request; however, the specific slave device can have restrictions that lower this maximum quantity. The registers are numbered for zero (30001 = zero, 30002 = one, and so on). Broadcast mode is not allowed.
The following example requests the contents of register 30009 in 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 Point High
Data Start Point Low
Data Number of Points High
Data Number of Points Low
Error Check Field (2 bytes)
0B
04
00
08
00
01
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 2 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 is normally serviced at the end of the controller's scan, the data reflects the register content at the end of the scan. Each PC limits the quantity of register contents provided each scan; thus for large register quantities, multiple PC scans are required, and the data that is provided is from sequential scans.
In the following example, the register 30009 contains the decimal value 0.
Node Address
Function Code
Byte Count
Data Input Register High
Data Input Register Low
Error Check Field (2 bytes)
0B
04
02
00
00
CRC
Provide Feedback
Have questions or feedback about this documentation? Please submit your feedback here.
Normal