Function 3: READ HOLDING REGISTERS
The READ HOLDING REGISTERS function can be used to read the input and output words and the registers. The inputs have offsets 0 - 0xFF while the outputs have offsets 0x800 - 0x8FF.
The first two analog outputs are read in this example. The analog outputs begin at offset 0x800 (hex). The length indicates the number of channels to be read.
Query
Byte Name | Example |
| ||
---|---|---|---|---|
Start - frame | - | - | ":" | 0x3A |
Address | 11 | 0x0B | "0B" | 0x30, 0x42 |
Function code | 3 | 0x03 | "03" | 0x30, 0x33 |
Start address high | 8 | 0x08 | "08" | 0x30, 0x38 |
Start address low | 0 | 0x00 | "00" | 0x30, 0x30 |
Count high | 0 | 0x00 | "00" | 0x30, 0x30 |
Count low | 2 | 0x02 | "02" | 0x30, 0x32 |
Error check, LRC/CRC |
| 0xC6, 0xC1 | "E8" | 0x45, 0x38 |
End - frame |
| t1-t2-t3 | CRLF | 0x0D, 0x0A |
The Fieldbus Box Coupler Box responds with byte count 4, i.e. 4 bytes of data are returned. The query was for 2 analog channels, and these are now distributed over 2 words. In the analog output process image, the first channel has the value 0x3FFF, while the second channel has the value 0x0.
Response
Byte Name | Example |
| ||
---|---|---|---|---|
Start - frame | - | - | ":" | 0x3A |
Address | 11 | 0x0B | "0B" | 0x30, 0x42 |
Function code | 3 | 0x03 | "03" | 0x30, 0x33 |
Byte Count | 4 | 0x04 | "04" | 0x30, 0x34 |
Data 1 high byte | 63 | 0x3F | "3F" | 0x33, 0x46 |
Data 1 low byte | 255 | 0xFF | "FF" | 0x46, 0x46 |
Data 2 high byte | 0 | 0x00 | "00" | 0x30, 0x30 |
Data 2 low byte | 0 | 0x00 | "00" | 0x30, 0x30 |
Error check, LRC/CRC |
| 0xC6, 0xC1 | "B0" | 0x42, 0x30 |
End - frame |
| t1-t2-t3 | CRLF | 0x0D, 0x0A |