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
Have questions or feedback about this documentation? Please submit your feedback here.
Normal