ModbusMatser
概述
ModbusMaster 作为主站,主动采集 Modbus 从站协议的设备数据。该插件支持 Modbus TCP 和 Modbus RTU 格式报文,适用于各种工业自动化场景。
主要特性
- 协议支持:支持 Modbus TCP 和 Modbus RTU 格式报文
- 高可用:支持粘包,半包等情况自动解析
- 通信方式:支持 TCP 客户端、TCP 服务(DTU)、串口、UDP 通信
- 功能码:支持 01、02、03、04、05、06、15、16 功能码
- 数据类型:支持所有 Modbus 标准数据类型
- 高性能:基于异步架构,提供高性能的数据访问
- 易用性:提供简洁的配置界面,易于集成和使用
适用场景
- 工业自动化设备数据采集
- PLC 设备通信
- 传感器数据采集
- 智能仪表数据读取
插件属性配置项
基本配置
| 属性 | 说明 | 备注 |
|---|---|---|
| Modbus 协议类型 | Modbus TCP/Modbus RTU 格式报文 | 选择协议类型 |
| 默认站号 | 默认的 Modbus 站号 ID | 变量可单独配置站号 |
| DTU 注册包 | 匹配初始包内容 | 仅适用于 TcpService 链路(DTU 模式) |
| 解析顺序 | 4 个字节以上的数据解析,可设置为 ABCD/BADC/CDBA/DCBA,默认 ABCD,变量可单独配置 | ABCD:Big-Endian BADC:Big-Endian Byte Swap CDAB:Little-Endian Byte Swap DCBA:Little-Endian |
| 读写超时时间 | 读写超时时间(毫秒) | 3000 |
| 发送延时 | 在发送请求前的延时时间(毫秒) | 0 |
| 最大打包长度 | 打包长度,最大限值是 125 | 100 |
| 字符串反转 | 字符串变量按字为单位调换 | false |
| 失败重试次数 | 读取失败时,重试 n 次后判定变量为离线 | 3 |
| 占空比 | N次写入执行一次读取 | 3 |
| 写优先 | 写入时优先写,取消读操作 | false |
协议类型说明
Modbus TCP
Modbus TCP 使用 MBAP 报文头:
+--------+--------+--------+--------+--------+--------+--------+--------+
| 事务标识符 | 协议标识符 | 长度 | 单元标识符 | 功能码 | 数据域 |
+--------+--------+--------+--------+--------+--------+--------+--------+
| 2字节 | 2字节 | 2字节 | 1字节 | 1字节 | N字节
+--------+--------+--------+--------+--------+--------+--------+--------+
Modbus RTU
Modbus RTU 使用CRC 校验:
+--------+--------+--------+--------+--------+--------+--------+--------+
| 从站地址 | 功能码 | 数据域 | CRC 校验 |
+--------+--------+--------+--------+--------+--------+--------+--------+
| 1字节 | 1字节 | N字节 | 2字节 |
+--------+--------+--------+--------+--------+--------+--------+--------+
变量地址配置项
基本地址
Modbus PLC 寄存器地址格式:
| 地址 | 功能码 | 说明 |
|---|---|---|
| 4xxxxx | 03 | 读取保持寄存器 |
| 3xxxxx | 04 | 读取输入寄存器 |
| 1xxxxx | 02 | 读取输入线圈 |
| 0xxxxx | 01 | 读取输出线圈 |