第28章:工业物联网应用实战
工厂里的设备(车床、机械臂)通常使用古老的工业协议(Modbus, Profibus),无法直接上网。工业物联网 (IIoT) 的核心任务就是打破“信息孤岛”。
28.1 场景描述
我们要监控一台数控机床的运行状态:
- 采集数据:主轴转速、工作电压、故障代码。
- 数据源:西门子 S7-200 SMART PLC。
- 通信接口:RS485 (Modbus RTU)。
28.2 边缘网关开发
我们需要一个“翻译官”(边缘网关),一边通过 RS485 读 PLC,一边通过以太网发 MQTT。
- 硬件:工业级树莓派 (Revolution Pi) 或带有 RS485 接口的 Linux 盒子。
- 软件:Node-RED。可视化流式编程工具,特别适合协议转换。
28.3 Node-RED 实战
Modbus Read 节点:
- 配置串口
/dev/ttyUSB0,波特率 9600。 - 功能码
FC3 (Read Holding Registers)。 - 地址
40001(假设是转速)。 - 周期
1s。
- 配置串口
Function 节点 (数据解析):
// msg.payload 是一个数组 [0x05, 0xDC] (1500转) var rpm = msg.payload[0] * 256 + msg.payload[1]; // 构造 MQTT 消息 msg.payload = { "machine_id": "CNC_001", "rpm": rpm, "ts": Date.now() }; return msg;MQTT Out 节点:
- 连接到公司内部的 EMQ X Broker。
- Topic:
factory/cnc/001/status.
28.4 数据存储与展示
使用 TimescaleDB (基于 PostgreSQL 的时序库) + Grafana。
- OEE 分析 (Overall Equipment Effectiveness):
- 通过分析转速是否为 0,计算机床的开动率。
- 通过故障代码统计,计算**平均故障间隔时间 (MTBF)**。
28.5 工业级可靠性设计
工厂电磁环境复杂,干扰严重。
- 硬件隔离:RS485 接口必须带光耦隔离。
- 软件看门狗:Node-RED 进程挂掉后自动重启。
- 断点续传:网关断网时,将数据缓存到本地 SQLite,网络恢复后补传。
至此,第七部分“实战项目”已全部完成。我们已经掌握了从家庭到工厂的各类应用开发。最后一部分,我们将讨论项目落地后的运维与优化。