ModbusSlave
概述
ModbusSlave 作为从站,响应主站的采集报文。该插件支持 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 | 变量可 单独配置站号 |
| 解析顺序 | 4 个字节以上的数据解析,可设置为 ABCD/BADC/CDBA/DCBA,默认 ABCD,变量可单独配置 | ABCD:Big-Endian BADC:Big-Endian Byte Swap CDAB:Little-Endian Byte Swap DCBA:Little-Endian |
| 字符串反转 | 字符串变量按字为单位调换 | false |
| 最大连接数 | 最大客户端数量限制 | - |
| 多站点 | 是否区分不同的站号的数据 | true |
| 允许写入 | 写入权限使能 | False |
| 立即写入内存 | 外部写入时,是否立即写入内存池 | False |
协议类型说明
Modbus TCP
Modbus TCP 使用 MBAP 报文头:
+--------+--------+--------+--------+--------+--------+--------+--------+
| 事务标识符 | 协议标识符 | 长度 | 单元标识符 | 功能码 | 数据域 |
+--------+--------+--------+--------+--------+--------+--------+--------+
| 2字节 | 2字节 | 2字节 | 1字节 | 1字节 | N字节
+--------+--------+--------+--------+--------+--------+--------+--------+
Modbus RTU
Modbus RTU 使用CRC 校验:
+--------+--------+--------+--------+--------+--------+--------+--------+
| 从站地址 | 功能码 | 数据域 | CRC 校验 |
+--------+--------+--------+--------+--------+--------+--------+--------+
| 1字节 | 1字节 | N字节 | 2字节 |
+--------+--------+--------+--------+--------+--------+--------+--------+
变量业务属性
基本配置
| 属性 | 说明 | 备注 |
|---|---|---|
| 寄存器地址 | 请查看 Modbus 寄存器格式 | - |
| 数据类型 | Modbus 寄存器数据类型 | - |
| 允许写入 | 单独设置变量在该 Modbus 服务器中是否允许被写入 | - |
| Enable | 是否启 用 | true |
寄存器地址格式
Modbus PLC 寄存器地址格式:
| 地址 | 功能码 | 说明 |
|---|---|---|
| 4xxxxx | 03 | 读取保持寄存器 |
| 3xxxxx | 04 | 读取输入寄存器 |
| 1xxxxx | 02 | 读取输入线圈 |
| 0xxxxx | 01 | 读取输出线圈 |
站号配置(可选)
当需要指定站号地址时,可使用以下格式:
| 地址 | 说明 |
|---|---|
| s=2;10001 | 读取 02 功能码,设备地址为 2 |
| s=11;40001 | 读取 03 功能码,设备地址为 11 |
解析顺序配置(可选)
当需要指定解析顺序时,可使用以下格式:
| 地址 | 说明 |
|---|---|
| o=ABCD;40001 | 使用 ABCD 解析顺序 |
| o=BADC;40001 | 使用 BADC 解析顺序 |
| o=CDAB;40001 | 使用 CDAB 解析顺序 |
| o=DCBA;40001 | 使用 DCBA 解析顺序 |
功能码 说明
读取功能码
| 功能码 | 名称 | 说明 | 地址格式 |
|---|---|---|---|
| 01 | 读取线圈 | 读取输出线圈状态 | 0xxxxx |
| 02 | 读取离散输入 | 读取输入线圈状态 | 1xxxxx |
| 03 | 读取保持寄存器 | 读取保持寄存器值 | 4xxxxx |
| 04 | 读取输入寄存器 | 读取输入寄存器值 | 3xxxxx |
写入功能码
| 功能码 | 名称 | 说明 | 地址格式 |
|---|---|---|---|
| 05 | 写入单个线圈 | 写入单个输出线圈 | 0xxxxx |
| 06 | 写入单个寄存器 | 写入单个保持寄存器 | 4xxxxx |
| 15 | 写入多个线圈 | 写入多个输出线圈 | 0xxxxx |
| 16 | 写入多个寄存器 | 写入多个保持寄存器 | 4xxxxx |
数据类型说明
基本数据类型
| 数据类型 | 说明 | 长度 | 范围 |
|---|---|---|---|
| Bool | 布尔型 | 1 bit | True/False |
| Byte | 字节 | 1 byte | 0 ~ 255 |
| Short | 短整数 | 2 bytes | -32768 ~ 32767 |
| UShort | 无符号短整数 | 2 bytes | 0 ~ 65535 |
| Int | 整数 | 4 bytes | -2147483648 ~ 2147483647 |
| UInt | 无符号整数 | 4 bytes | 0 ~ 4294967295 |
| Float | 单精度浮点数 | 4 bytes | ±3.4E38 |
| Double | 双精度浮点数 | 8 bytes | ±1.7E308 |
| String | 字符串 | 可变 | 字符串 |
解析顺序说明
ABCD(Big-Endian)
地址 40001-40002: 0x1234 0x5678
解析结果: 0x12345678
BADC(Big-Endian Byte Swap)
地址 40001-40002: 0x1234 0x5678
解析结果: 0x34127856
CDAB(Little-Endian Byte Swap)
地址 40001-40002: 0x1234 0x5678
解析结果: 0x56781234
DCBA(Little-Endian)
地址 40001-40002: 0x1234 0x5678
解析结果: 0x78563412