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

2022-10-28 17:39:04 钡铼技术

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

功能码0x04(读输入寄存器)

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

工业物联网关


1. 请求

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

字段名称

字节数

示例

说明

事务标识符

2 Byte

0x00 01

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

协议标识符

2 Byte

0x00 00

0x00 00 Modbus协议

报文长度

2 Byte

0x00 06

后面数据的字节数

设备地址

1 Byte

0x01

从站的地址识别

功能码

1 Byte

0x04

读输入寄存器,用功能码0x04

起始地址

2 Byte

0x0B B8

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

寄存器数量

2 Byte

0x00 08



2. 响应


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

字段名称

字节(Byte

示例

说明

事务标识符

2 Byte

0x00 00

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

协议标识符

2 Byte

0x00 00

0x00 00 Modbus协议

报文长度

2 Byte

0x00 13

后面数据的字节数

设备地址

1 Byte

0x01

从站的地址识别

功能码

1 Byte

0x04

读输入寄存器,用功能码0x04

字节数

1 Byte

0x10


数据

16 Byte

0x

3F 8E 38 86 40 0E 38 86 40 55 54 CA 40 8E 35 3F



3. 异常


表 3:功能码0x04-异常

字段名称

字节(Byte

示例

说明




功能码

1 Byte

0x84

Modbus功能码 + 0x80

异常编码

1 Byte

0x01

0x01 0x02


4. 示例

从地址3000开始,读4个模拟输入的值。由于BL200耦合器节点寄存器映射数据类型是32Bit Float,即1个模拟输入数据 = 2个寄存器 = 4个字节 ,因此需要读8个输入寄存器。


请求

0x00 01 00 00 00 06 01 04 0B B8 00 08


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

Byte

1

2

3

4

5

6

7

8

9

10

11

12

Data

00 01

00 00

00 06

01

04

0B B8

00 08

说明

事务标识符

协议标识符

报文长度

设备地址

功能码

起始地址

寄存器数量


响应


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


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


Byte

1

2

3

4

5

6

7

8

9

1025

Data

00 01

00 00

00 13

01

04

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 modbus
微信公众号

首页
产品
案例
联系钡铼