跳至主要內容

Modbus RTU设备接入

fastbee2024年9月27日大约 5 分钟

一、创建产品

首选需要创建网关与子设备产品,建立子设备与网关的拓扑关系:参考 网关与子设备 文档

至此,网关与子设备绑定的拓扑关系如下:

下面为子设备创建轮训任务:

这里用子设备01距离创建任务:

找到子设备-设备详情-轮训任务

新增轮训任务

支持的功能码:

轮训时间设置:

时间
1分钟
3分钟
5分钟
10分钟
20分钟
30分钟
....

任务列表如下:

至此,modbus子设备的轮训任务创建完成,当网关设备上线后,会自动下发轮询指令。

主动采集与采集所有

主动采集:立即下发读指令读取当前物模型对应寄存器的值

采集所有:下发所有轮训指令,读取所有寄存器点位的值

二、Modbus协议

1. Modbus-RTU协议

个报文就是一帧数据,一个数据帧就一个报文: 指的是一串完整的指令数据,本质就是一串数据。

image
image

2. Modbus功能码

Modbus规定了多个功能,那么为了方便的使用这些功能,我们给每个功能都设定一个功能码,也就是指代码。如下:

标题标签字段名
01H读取输出线圈
02H读取输入线圈
03H读取保持寄存器
04H读取输入寄存器
05H写入单线圈
06H写入单寄存器
0FH写入多线圈
10H写入多寄存器
_

3. 主机对从机读数据操作

image
image
从站地址功能码字节计数字节1字节2校验
0x010x030x020x000x170xF8 0x4A

4. 主机对从机写数据操作

image
image

0106000100179804

0x010600 0100 1798 04
从机地址功能号数据地址数据CRC校验

5.主机对从机读数据操作

0103020017F84A

0x010300 0100 01D5 CA
从机地址功能号数据地址读取数据个数CRC校验

6. 报文实例

读40005、40006两个寄存器,假设从机地址为1

下行报文:01 03 00 04 00 02 85 ca

从机地址功能码寄存器起始地址读取寄存器个数CRC校验
010300 0400 0285 ca

上行报文:01 03 04 00 00 00 00 21 33

从机地址功能码返回字节个数寄存器40005数据寄存器40006数据CRC校验
01030400 0000 0021 33

7. Modbus-Rtu常用功能码

数据类型读功能码写功能码对象类型
离散量输入02单个位
线圈状态0105,15单个位
输入寄存器0416位字
保持寄存器0306,1616位字

8. 寄存器起始地址(起始数据地址)

数据类型参数地址,寄存器编号
离散量输入00001~0FFFF
线圈状态10001~1FFFF
输入寄存器30001~3FFFF
保持寄存器40001~4FFFF