Read Coil Status (Function Code 01)
Query
This function allows you to obtain the ON/OFF status of logic coils (Modbus 0x
range) used to control discrete outputs from the addressed slave only. Broadcast
mode is not supported with this function code. In addition to the slave address and
function fields, the message must include the starting coil address to be read
(Starting Address) and the number of locations to be interrogated to obtain the
status data.
The addressing allows up to 2,000 coils to be retrieved in each request. However,
specific slave devices may impose restrictions that reduce the maximum quantity.
Coils are numbered starting from zero (that is, coil number 1 = zero, coil number 2
= one, coil number 3 = two, and so on). The following table provides a sample
request to read the output status of coils 0020 to 0056 (a total of 37 coils) from
slave device 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
| Number of Points High
| Number of Points Low
| Error Check Field (2 bytes)
|
0B | 01 | 00 | 13 | 00 | 25 | CRC |
Response
An example response to the Read Coil Status function is shown in the following table.
The data is packed with one bit for each coil (1 = ON, 0 = OFF). The response
includes the slave address, function code, quantity of data characters, data
characters, and error checking field. The low-order bit of the first character
contains the addressed coil, and the remainder follows. For coil quantities that are
not even multiples of eight, the last characters are completed with zeros at
high-order end. The quantity of data characters is always specified as quantity of
RTU characters, that is, the number is the same whether RTU or ASCII is used.
Because the slave interface device is serviced at the end of a controller's scan,
data reflects coil status at the end of the scan. Some slaves limit the quantity of
coils provided each scan; thus, for large coil quantities, multiple PC transactions
must be made using coil status from sequential scans.
Node Address
| Function Code
| Byte Count
| Data Coil Status 20…27
| Data Coil Status 28…35
| Data Coil Status 36…43
| Data Coil Status 44…51
| Data Coil Status 52…56
| Error Check Field (2 bytes)
|
0B | 01 | 05 | CD | 6B | B2 | 0E | 1B | CRC |
The status of coils 20…27 is shown as CD (HEX) = 1100 1101 (Binary). Reading from
left to right, this status shows that coils 27, 26, 23, 22, and 20 are all On. The
other Data Coil Status bytes are decoded similarly. Due to the quantity of coil
statuses that are requested, the last data field, which is shown 1B (HEX) = 0001
1011 (Binary), contains the status of only five coils (52…56) instead of eight
coils. The 3 leftmost bits are provided as zeros to fill the 8-bit format.
Provide Feedback