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/03/06, 12:39:26