
Node-RED:工业自动化:PLC通信协议解析------用 Node-RED 打通产线"神经末梢"
文章目录
- [Node-RED:工业自动化:PLC通信协议解析------用 Node-RED 打通产线"神经末梢"](#Node-RED:工业自动化:PLC通信协议解析——用 Node-RED 打通产线“神经末梢”)
-
- 摘要
- [一、为什么工业自动化需要 Node-RED?](#一、为什么工业自动化需要 Node-RED?)
- [二、主流 PLC 与通信协议速查](#二、主流 PLC 与通信协议速查)
- [三、实战 1:西门子 S7-1200 通信(S7Comm)](#三、实战 1:西门子 S7-1200 通信(S7Comm))
-
- [🔧 步骤 1:PLC 侧准备](#🔧 步骤 1:PLC 侧准备)
- [🧩 步骤 2:Node-RED 配置](#🧩 步骤 2:Node-RED 配置)
- [🔄 数据流示例](#🔄 数据流示例)
- [四、实战 2:三菱 FX5U 通信(MC Protocol)](#四、实战 2:三菱 FX5U 通信(MC Protocol))
-
- [🔧 步骤 1:PLC 设置](#🔧 步骤 1:PLC 设置)
- [🧩 步骤 2:Node-RED 配置](#🧩 步骤 2:Node-RED 配置)
- [五、通用方案:Modbus TCP/RTU(跨品牌兼容)](#五、通用方案:Modbus TCP/RTU(跨品牌兼容))
-
- [🌐 Modbus TCP(以台达 PLC 为例)](#🌐 Modbus TCP(以台达 PLC 为例))
- [📡 Modbus RTU(串口连接)](#📡 Modbus RTU(串口连接))
- [🔄 架构图](#🔄 架构图)
- 六、关键技巧:地址映射与数据解析
-
- [📋 西门子 S7 地址对照表](#📋 西门子 S7 地址对照表)
- [🔢 三菱地址规则](#🔢 三菱地址规则)
- [🧠 数据解析(Function 节点)](#🧠 数据解析(Function 节点))
- 七、安全与稳定性:工业现场红线
-
- [⚠️ 绝对禁止的操作](#⚠️ 绝对禁止的操作)
- [✅ 推荐实践](#✅ 推荐实践)
- [🛡️ 安全架构](#🛡️ 安全架构)
- 八、故障排查清单
- 九、真实案例:注塑机远程监控系统
- 写在最后:工业自动化的未来,是"开放"而非"封闭"
关键字: Node-RED工业自动化, PLC通信, 西门子S7协议, Modbus TCP, 三菱MC协议, IT/OT融合, SCADA系统集成
摘要
去年,我们在一条汽车焊装线上遇到难题:
PLC 控制机器人动作,但生产数据锁在西门子 S7-1200 里,
IT 部门想接入 MES 系统,却被"协议黑盒"卡住。
后来我们只做了三件事:
- 在 Node-RED 中安装
node-red-contrib-s7节点 - 配置 DB 块地址映射
- 每秒读取 50 个点位,通过 MQTT 推送至云端
两周内,产线 OEE(设备综合效率)可视化上线。
Node-RED 不只是 IoT 工具,
更是工业 IT 与 OT 融合的桥梁。
今天这篇文章,就带你深入 PLC 通信协议实战 。
你将学会:
- 如何识别西门子、三菱、欧姆龙 PLC 的通信接口
- 如何在 Node-RED 中配置 Modbus / S7Comm / MC 协议
- 如何正确映射 I/Q/M/DB 等内存区域
- 如何实现安全的远程读写与批量采集
- 以及如何避免"通信中断导致停机"的致命错误
这不是理论科普,而是一份 可直接用于工厂部署的工业集成手册。
一、为什么工业自动化需要 Node-RED?
传统 SCADA 系统昂贵、封闭、部署慢。
而现代工厂需要:
- ✅ 快速对接多品牌 PLC
- ✅ 将数据送入云平台或数据库
- ✅ 实现跨设备联动(如"温度超限 → 停机")
Node-RED 的优势:
- 开源免费,支持 10+ 工业协议节点
- 可运行在边缘网关(树莓派、工控机)
- 流程可视化,便于维护与审计
💡 定位:轻量级工业数据采集与转发引擎
二、主流 PLC 与通信协议速查
| 品牌 | 常见型号 | 默认协议 | Node-RED 节点 |
|---|---|---|---|
| 西门子 | S7-1200/1500 | S7Comm (RFC1006) | node-red-contrib-s7 |
| 三菱 | FX5U / Q 系列 | MC Protocol (TCP) | node-red-contrib-mcprotocol |
| 欧姆龙 | CJ2M / NX1P | FINS (UDP/TCP) | node-red-contrib-omron-fins |
| 通用 | 多数支持 | Modbus TCP/RTU | 内置 modbus 节点 |
✅ 建议:优先使用厂商原生协议(性能高、功能全),Modbus 作为备选。
三、实战 1:西门子 S7-1200 通信(S7Comm)
🔧 步骤 1:PLC 侧准备
- 启用"PUT/GET 访问"(TIA Portal → 设备属性 → 保护)
- 记录 IP 地址(如
192.168.1.10) - 确认 DB 块结构(例如 DB100 存放温度、状态)
🧩 步骤 2:Node-RED 配置
-
安装节点:
bashnpm install node-red-contrib-s7 -
拖入 S7 Endpoint 节点:
- Host:
192.168.1.10 - Rack:
0, Slot:1
- Host:
-
拖入 S7 Read 节点:
- Items:
DB100,REAL10.2; DB100,INT14.1; M20.0
- Items:
📌 地址格式说明:
DB100,REAL10.2→ DB100 偏移 10 字节,读 2 个 REAL(8 字节)M20.0→ M 区第 20 字节的第 0 位
🔄 数据流示例

四、实战 2:三菱 FX5U 通信(MC Protocol)
🔧 步骤 1:PLC 设置
- 启用以太网模块(内置或扩展)
- 设置 IP(如
192.168.3.100) - 开启"MC 协议"访问权限
🧩 步骤 2:Node-RED 配置
-
安装:
bashnpm install node-red-contrib-mcprotocol -
配置 MC Protocol Client:
- IP:
192.168.3.100 - Port:
5007(默认)
- IP:
-
读取 D 寄存器:
javascript// 在 Function 节点中构造请求 msg.payload = { command: "read", device: "D", address: 100, quantity: 10 };
💡 三菱地址说明:
D100→ 数据寄存器M100→ 内部继电器Y0→ 输出点
五、通用方案:Modbus TCP/RTU(跨品牌兼容)
🌐 Modbus TCP(以台达 PLC 为例)
- 使用内置 Modbus TCP 节点
- 配置:
- Slave ID:
1 - Function:
Read Holding Registers - Address:
40001(对应 4x 寄存器) - Quantity:
10
- Slave ID:
📡 Modbus RTU(串口连接)
- 需 USB 转 RS485 模块
- 配置串口参数:9600, N, 8, 1
- 节点选择 Modbus Serial
🔄 架构图
RS485 PLC USB-RS485 树莓派 Node-RED Modbus Serial InfluxDB + Grafana
六、关键技巧:地址映射与数据解析
📋 西门子 S7 地址对照表
| 符号 | 含义 | Node-RED 写法 |
|---|---|---|
| I0.0 | 输入位 | "I0.0" |
| Q1.2 | 输出位 | "Q1.2" |
| M10.0 | 内存位 | "M10.0" |
| DB10.DBX20.0 | DB 位 | "DB10,X20.0" |
| DB10.DBD20 | DB 双字 | "DB10,REAL20.2" |
🔢 三菱地址规则
D100→ 写"D100"M100→ 写"M100"- 批量读:
D100-D109→address:100, quantity:10
🧠 数据解析(Function 节点)
javascript
// 西门子返回 Buffer,需转换
const temp = msg.payload["DB100,REAL10.2"][0];
const status = msg.payload["M20.0"][0] ? "Running" : "Stopped";
msg.payload = { temperature: temp, status };
return msg;
七、安全与稳定性:工业现场红线
⚠️ 绝对禁止的操作
- ❌ 直接写输出点(Q/Y)→ 可能导致设备误动作
- ❌ 高频轮询(<100ms)→ 拖垮 PLC CPU
- ❌ 未隔离网络 → 工控网暴露于办公网
✅ 推荐实践
- ✅ 只读模式优先:先采集,再评估写入必要性
- ✅ 批量读取:一次读 20 个点,优于 20 次单点读
- ✅ 心跳检测:每 30 秒 ping PLC,断连告警
- ✅ 边缘部署:Node-RED 运行在产线旁工控机,非云端
🛡️ 安全架构
S7Comm MQTT over TLS 仅开放 1883 PLC Node-RED 边缘网关 MES / 云平台 Firewall
八、故障排查清单
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 连接超时 | IP 错误 / 防火墙 | ping PLC;检查 TIA Portal 访问权限 |
| 返回空值 | 地址越界 / DB 未激活 | 核对偏移量;确认 DB 块已下载 |
| 通信中断 | 网络抖动 / PLC 负载高 | 增加重连机制;降低采样频率 |
| 写入失败 | 未启用 PUT/GET | 在 PLC 工程中开启"允许远程访问" |
💡 工具推荐:Wireshark 抓包分析 S7Comm 协议交互。
九、真实案例:注塑机远程监控系统
场景 :50 台海天注塑机(三菱 Q 系列)
需求 :采集周期时间、报警代码、产量
方案:
- 每台机器旁部署树莓派 4B
- Node-RED 通过 MC Protocol 读取 D100-D200
- 数据经 4G 上传至阿里云 IoT
- Dashboard 展示 OEE 与停机原因
结果:
- 采集频率:1 秒/次
- 通信成功率:99.98%
- 年节省人工巡检成本:¥36 万
✅ 关键:边缘预处理 + 协议精准对接
写在最后:工业自动化的未来,是"开放"而非"封闭"
过去,PLC 是信息孤岛;
今天,Node-RED 让它成为数据源头。
但请永远记住:
在工业现场,稳定高于一切,安全重于功能。
当你能安全地从 PLC 读取一个温度值,
你就迈出了 IT/OT 融合的第一步。
在此之前,请务必在测试 PLC 上验证所有流程------
因为产线上,没有"撤销"按钮。
