首页| 论坛| 消息

标题:Qt编写物联网管理平台36-通信协议
作者:liudianwu
日期:2022-06-22 08:36
内容:

## 一、前言
本系统默认采用modbus协议,支持串口和网络rtu模式,后期还会引入其他通信协议比如mqtt等,可以在端口管理中下拉选择通信协议即可。
### 1.1 通信流程
1. 整体的结构是:控制器挂在通信端口,一个控制器下有多个探测器节点,相当于主设备、子设备。
2. 因为是需要遍历轮询,所以一个通信端口上的控制器地址不能重复。
3. 不同通信端口,控制器地址可以重复,所以如果控制器数量较多可以分在不同的通信端口。
4. 一个控制器可以挂多个探测器,控制器平时也在不断轮询探测器的数据并记录,等待上位机程序的轮询命令后,将探测器数据一起打包发回。
5. 本软件只和控制器通信,不和探测器通信,控制器负责和探测器通信。为何这样设计?因为这种架构最通用,可接的设备数量也是最大的。
6. 本系统默认按照标准modbus协议进行通信,modbus是标准的通信框架协议,支持串口和网络等通信方式,至于具体是通过串口还是网络通信根据设备厂家选择。
7. modbus是通信协议框架,至于具体数据位的每个字节对应的数据含义,每个厂家不一样,都是厂家自定义,一般2个字节表示一个数据。
8. 端口可以是串口和网络,在添加端口时候可选择不同通信解析协议。
### 1.2 协议解释
1. 主机发送是软件发送数据给设备,主动发送。
2. 从机应答是设备根据收到的数据后作出应答数据,被动回复。
3. 一条发送命令会对应一条应答命令。
4. 寄存器地址2字节,高位在前低位在后。
5. 读取长度2字节,高位在前低位在后。
6. 数据位2字节,高位在前低位在后。
7. CRC校验2字节,低位在前高位在后。
8. 功能码有 03(读只读寄存器)、04(读可读可写寄存器)、06(写读写寄存器)。
9. 主机发送的功能码和从机应答的功能码相同。
#### 1.2.1 主机发送
| 地址 | 功能码 | 寄存器地址 | 寄存器个数 | CRC校验 |
| :--- | :----- | :--------- | :--------- | :------ |
| 01 | 03 | 00 00| 00 04| 44 09 |
#### 1.2.2 从机应答
| 地址| 功能码| 长度| 数据位1 | 数据位2 | 数据位3 | 数据位4 | CRC校验 |
| :------ | :------ | :------ | :------ | :------ | :------ | :------ | :------ |
| 01| 03&nbsp ..

回复 发表
主题 版块