ModBus TCP 分布式远程IO数据采集模块系统耦合器BL200 Modbus 功能码0x03 读保持寄存器

2022-11-02 10:06:06 钡铼技术

ModBus TCP 分布式远程IO数据采集模块系统耦合器BL200 Modbus

功能码0x03 读保持寄存器

此功能码用于读取多个远程设备中的连续保持寄存器。请求PDU指定起始寄存器的地址和寄存器的数量。响应消息中的寄存器数据被打包为每个寄存器两个字节,每个字节内的二进制内容靠右对齐。

1. 请求


表 1:功能码0x03-请求报文

字段名称

字节数

示例

说明

事务标识符

2 Byte

0x00 01

Modbus请求/响应事务处理的识别

协议标识符

2 Byte

0x00 00

0x00 00 Modbus协议

报文长度

2 Byte

0x00 06

后面数据的字节数

设备地址

1 Byte

0x01

从站的地址识别

功能码

1 Byte

0x03

读保持寄存器,用功能码0x03

起始地址

2 Byte

0x0F A0

地址详见Modbus 寄存器映射”章节

寄存器数量

2 Byte

0x00 08

需要读取的保持寄存器数量

工业物联网关

2. 响应

表 2:功能码0x03-响应报文

字段名称

字节(Byte

示例

说明

事务标识符

2 Byte

0x00 00

Modbus请求/响应事务处理的识别

协议标识符

2 Byte

0x00 00

0x00 00 Modbus协议

报文长度

2 Byte

0x00 13

后面数据的字节数

设备地址

1 Byte

0x01

从站的地址识别

功能码

1 Byte

0x03

读保持寄存器,用功能码0x03

字节数

1 Byte

0x10

数据字节数

数据

16 Byte

0x

3F 9D 70 A4 40 15 C2 8F 40 5C CC CD 40 91 EB 85

响应的数据


3. 异常

表 3:功能码0x03-异常

字段名称

字节(Byte

示例

说明




功能码

1 Byte

0x83

Modbus功能码 + 0x80

异常编码

1 Byte

0x01

0x01 0x02


4. 示例

从地址4000开始,读4个模拟输出(属于保持寄存器)的值。由于模拟输出I/O模块寄存器映射数据类型是32Bit Float,即1个模拟输出数据 = 2个寄存器 = 4个字节 ,所以需要读取8个保持寄存器。

请求

0x00 01 00 00 00 06 01 03 0F A0 00 08


表 4:功能码0x03-请求报文-示例

Byte

1

2

3

4

5

6

7

8

9

10

11

12

Data

00 01

00 00

00 06

01

03

0F A0

00 08

说明

事务标识符

协议标识符

报文长度

设备地址

功能码

起始地址

寄存器数量


响应

0x00 01 00 00 00 13 01 03 10 3F 9D 70 A4 40 15 C2 8F 40 5C CC CD 40 91 EB 85

表 5:功能码0x03-响应报文-示例

Byte

1

2

3

4

5

6

7

8

9

1025

Data

00 01

00 00

00 13

01

03

10

xxx

说明

事务标识符

协议标识符

报文长度

设备地址

功能码

字节数

数据

其中数据部分共16个字节,转换成十进制如下:

表 6:读取保持寄存器 -转换数据十进制

Byte

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

Data

3F 9D 70 A4

40 15 C2 8F

40 5C CC CD

40 91 EB 85

十进制

1.23

2.34

3.45

4.56

说明

第一个数据

第二个数据

第三个数据

第四个数据


标签: 远程IO
微信公众号

首页
产品
案例
联系钡铼