Modbus Node
x/modbus组件:v0.29.0+ 用于执行 Modbus 协议的读取或写入操作。支持TCP和RTU两种通信协议。
需要额外引入扩展库: rulego-components-iot (opens new window)
# 配置
| 字段 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| server | string | Modbus服务器地址(格式:<mode>://<host:port> 或 <mode>://<serial device>) | tcp://127.0.0.1:502 |
| cmd | string | Modbus命令名称,支持的命令包括:ReadCoils、ReadDiscreteInputs、ReadRegisters、WriteCoil、WriteRegisters 等 | ReadCoils |
| unitId | uint8 | 单元编号(从机编号),格式:uint8,示例:1 | 1 |
| address | string | 寄存器地址,允许使用 ${} 占位符变量,格式:uint16,示例:50或者0x32 | 无 |
| quantity | string | 寄存器数量,允许使用 ${} 占位符变量,示例:1 | 无 |
| value | string | 寄存器值,允许使用 ${} 占位符变量。读则不需要提供,如果写入多个与逗号隔开,例如:0x01,0x01 true 51,52 | 无 |
| regType | uint | 寄存器类型,可选值:0 - 保持寄存器(HOLDING_REGISTER)功能码:0x031 - 输入寄存器(INPUT_REGISTER)功能码:0x03 | 无 |
| TcpConfig | TCP 配置参数 | ||
| timeout | int64 | 请求超时时间,单位为秒 | 5 |
| certPath | string | 证书路径(TLS/SSL连接时需要提供) | 无 |
| keyPath | string | 私钥路径(TLS/SSL连接时需要提供) | 无 |
| caPath | string | CA证书路径(TLS/SSL连接时需要提供) | 无 |
| RtuConfig | RTU 配置参数 | ||
| speed | uint | 串行波特率(仅RTU模式) | 19200 |
| dataBits | uint | 数据位数(仅RTU模式) | 8 |
| parity | uint | 校验位(仅RTU模式),可选值:0 - 无校验(PARITY_NONE)1 - 偶校验(PARITY_EVEN)2 - 奇校验(PARITY_ODD) | 0 |
| stopBits | uint | 停止位数(仅RTU模式) | 2 |
| EncodingConfig | 编码配置参数 | ||
| endianness | uint | 寄存器的字节序,可选值:1 - 大端(BIG_ENDIAN)2 - 小端(LITTLE_ENDIAN) | 1 |
| wordOrder | uint | 32位寄存器的字序,可选值:1 - 高字在前(HIGH_WORD_FIRST)2 - 低字在前(LOW_WORD_FIRST) | 1 |
# 命令说明
| 命令名 | 命令说明 | 参数描述 |
|---|---|---|
| ReadCoils | 读取线圈状态 | address:线圈起始地址quantity:读取数量 |
| ReadCoil | 读取单个线圈状态 | address:线圈地址 |
| ReadDiscreteInputs | 读取离散输入状态 | address:离散输入起始地址quantity:读取数量 |
| ReadDiscreteInput | 读取单个离散输入状态 | address:离散输入地址 |
| ReadRegisters | 读取寄存器 | address:寄存器起始地址quantity:读取数量regType:寄存器类型(如保持寄存器或输入寄存器) |
| ReadRegister | 读取单个寄存器 | address:寄存器地址regType:寄存器类型 |
| ReadUint32s | 读取无符号32位整数 | address:寄存器起始地址quantity:读取数量regType:寄存器类型 |
| ReadUint32 | 读取单个无符号32位整数 | address:寄存器地址regType:寄存器类型 |
| ReadFloat32s | 读取浮点数32位 | address:寄存器起始地址quantity:读取数量regType:寄存器类型 |
| ReadFloat32 | 读取单个浮点数32位 | address:寄存器地址regType:寄存器类型 |
| ReadUint64s | 读取无符号64位整数 | address:寄存器起始地址quantity:读取数量regType:寄存器类型 |
| ReadUint64 | 读取单个无符号64位整数 | address:寄存器地址regType:寄存器类型 |
| ReadFloat64s | 读取浮点数64位 | address:寄存器起始地址quantity:读取数量regType:寄存器类型 |
| ReadFloat64 | 读取单个浮点数64位 | address:寄存器地址regType:寄存器类型 |
| ReadBytes | 读取字节数据 | address:寄存器起始地址quantity:读取数量regType:寄存器类型 |
| ReadRawBytes | 读取原始字节数据 | address:寄存器起始地址quantity:读取数量regType:寄存器类型 |
| WriteCoil | 写入单个线圈状态 | address:线圈地址value:写入值(布尔值) |
| WriteCoils | 写入多个线圈状态 | address:线圈起始地址value:写入值(布尔数组) |
| WriteRegister | 写入单个寄存器 | address:寄存器地址value:写入值(16位整数) |
| WriteRegisters | 写入多个寄存器 | address:寄存器起始地址value:写入值(16位整数数组) |
| WriteUint32 | 写入单个无符号32位整数 | address:寄存器地址value:写入值(32位整数) |
| WriteUint32s | 写入多个无符号32位整数 | address:寄存器起始地址value:写入值(32位整数数组) |
| WriteFloat32 | 写入单个浮点数32位 | address:寄存器地址value:写入值(浮点数) |
| WriteFloat32s | 写入多个浮点数32位 | address:寄存器起始地址value:写入值(浮点数数组) |
| WriteUint64 | 写入单个无符号64位整数 | address:寄存器地址value:写入值(64位整数) |
| WriteUint64s | 写入多个无符号64位整数 | address:寄存器起始地址value:写入值(64位整数数组) |
| WriteFloat64 | 写入单个浮点数64位 | address:寄存器地址value:写入值(浮点数) |
| WriteFloat64s | 写入多个浮点数64位 | address:寄存器起始地址value:写入值(浮点数数组) |
| WriteBytes | 写入字节数据 | address:寄存器起始地址value:写入值(字节数组) |
| WriteRawBytes | 写入原始字节数据 | address:寄存器起始地址value:写入值(字节数组) |
# Relation Type
- Success: 执行成功,把消息发送到
Success链。 - Failure: 执行失败,把消息发送到
Failure链。
# 执行结果
写:不改变消息负荷值。
读:返回一个数组,数组中的每个元素是一个对象,包含以下字段:
- 字段列表
| 字段名 | 数据类型 | 说明 |
|---|---|---|
| unitId | int | 单元编号(从机编号) |
| type | string | 数据类型,如"uint16" |
| address | int | 地址,标识数据存储位置 |
| value | int/float/bool | 当前值,表示数据内容 |
- 示例数据(读取modbus数据格式):
[
{
"unitId": 1,
"type": "uint16",
"address": 4,
"value": 0
},
{
"unitId": 1,
"type": "uint16",
"address": 5,
"value": 0
},
{
"unitId": 1,
"type": "uint16",
"address": 6,
"value": 0
},
{
"unitId": 1,
"type": "uint16",
"address": 7,
"value": 0
},
{
"unitId": 1,
"type": "uint16",
"address": 8,
"value": 0
},
{
"unitId": 1,
"type": "uint16",
"address": 9,
"value": 0
},
{
"unitId": 1,
"type": "uint16",
"address": 10,
"value": 0
},
{
"unitId": 1,
"type": "uint16",
"address": 11,
"value": 0
},
{
"unitId": 1,
"type": "uint16",
"address": 12,
"value": 0
},
{
"unitId": 1,
"type": "uint16",
"address": 13,
"value": 0
}
]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
在 GitHub 上编辑此页 (opens new window)
上次更新: 2025/09/03, 10:09:04