Node-RED实战:Modbus TCP与RTU通信全解析

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端口!

详细配置步骤

  1. 添加Modbus Server节点

    • 类型选择TCP
    • 输入从站设备的IP和端口(默认502)
    • 单位ID(Unit ID)通常填1,这个相当于设备的分机号
  2. 数据读取配置

// 典型读取配置示例
{
  "functioncode": 3,  // 读保持寄存器
  "address": 0,       // 起始地址
  "quantity": 10      // 读取数量
}
  1. 写入数据示例
// 写入单个寄存器
msg.payload = {
  "value": 25.5,
  "fc": 6,        // 写单寄存器
  "unitid": 1,
  "address": 40001
};
return msg;

常见问题排查表

现象 可能原因 解决方案
连接超时 网络不通/防火墙 ping测试/telnet端口
错误响应 地址越界
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值