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