1. Modbus协议基础与Node-RED集成
Modbus协议作为工业自动化领域的"普通话",已经有40多年的历史。我第一次接触Modbus是在一个老旧工厂的PLC改造项目中,当时就被它简洁高效的设计所折服。简单来说,Modbus就像工厂设备之间的短信系统 - 主设备发送请求,从设备回复响应,就这么简单直接。
协议核心要素:
- 寄存器类型:线圈(Coil)、离散输入(Discrete Input)、输入寄存器(Input Register)、保持寄存器(Holding Register)。这就像工厂里的四种不同记事本,有的只能读,有的可读写。
- 功能码:最常用的有01(读线圈)、03(读保持寄存器)、05(写单线圈)、06(写单寄存器)。这些就像是不同的短信指令模板。
在Node-RED中使用Modbus时,我们需要先安装node-red-contrib-modbus节点。这里有个小技巧:如果安装失败,可以尝试先安装serialport基础驱动:
npm install -g node-gyp
npm install serialport --build-from-source
2. Modbus TCP实战配置
TCP模式就像给Modbus穿上了互联网的外套。我在一个智能农业项目中就用它连接了分布在三个大棚的传感器。配置时最容易踩的坑就是防火墙设置 - 记得开放502端口!
详细配置步骤:
-
添加Modbus Server节点:
- 类型选择TCP
- 输入从站设备的IP和端口(默认502)
- 单位ID(Unit ID)通常填1,这个相当于设备的分机号
-
数据读取配置:
// 典型读取配置示例
{
"functioncode": 3, // 读保持寄存器
"address": 0, // 起始地址
"quantity": 10 // 读取数量
}
- 写入数据示例:
// 写入单个寄存器
msg.payload = {
"value": 25.5,
"fc": 6, // 写单寄存器
"unitid": 1,
"address": 40001
};
return msg;
常见问题排查表:
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 连接超时 | 网络不通/防火墙 | ping测试/telnet端口 |
| 错误响应 | 地址越界 |


4120

被折叠的 条评论
为什么被折叠?



