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