4. 数据采集软件架构:OPC DA/UA架构、MQTT协议在工业中的应用、边缘计算节点设计
各位同学,大家好。这一章我们聊聊数据采集的软件架构。说实话,这是整个PLC联网方案里最核心的部分。你硬件接得再好,软件架构搭得不对,数据上不来,一切都是白搭。
我个人习惯把数据采集架构分成三个层次来看:现场层、传输层、平台层。现场层就是PLC、传感器这些设备;传输层解决数据怎么出来、怎么走的问题;平台层就是你的SCADA或者云平台。今天咱们重点讲传输层里的三个关键技术:OPC DA/UA、MQTT,还有边缘计算节点。
4.1 OPC DA与OPC UA:老将与新王
先说说OPC。很多老工程师一听到OPC,第一反应就是OPC DA。没错,OPC DA(Data Access)是工业界的老将,从90年代就开始用了。它的核心思想很简单:让不同厂商的设备和软件能互相读写数据。
OPC DA的特点:
- 基于COM/DCOM技术,只能在Windows上跑
- 实时性好,延迟低,适合车间级的数据采集
- 配置起来有点麻烦,尤其是跨网络、跨域的时候
我在项目中遇到过最头疼的事,就是OPC DA的DCOM配置。两台Windows机器,防火墙一开,权限一设,折腾半天连不上。说白了,DCOM这玩意儿就不是为互联网设计的。
那OPC UA(Unified Architecture)呢?它是OPC基金会推出的新一代标准。跟DA相比,UA有几个革命性的变化:
- 跨平台: Linux、Windows、嵌入式系统都能跑
- 安全性: 内置加密、认证、签名,不怕数据被篡改
- 信息模型: 不只是传数值,还能传设备描述、报警、历史数据
- 通信方式: 支持Client/Server,也支持Pub/Sub(发布/订阅)
你想想看,OPC UA相当于把OPC DA的功能全部重写了一遍,还加上了现代工业互联网需要的所有特性。我个人建议,新项目直接上OPC UA,别犹豫。
4.2 MQTT协议在工业中的应用
说完OPC,咱们聊聊MQTT。MQTT(Message Queuing Telemetry Transport)最早是IBM为石油管道监控设计的。它的特点是轻量、低带宽、支持QoS(服务质量等级)。
为什么MQTT在工业物联网里这么火?原因有三:
- 发布/订阅模式: 设备只管发数据,不用管谁在收。SCADA系统、手机App、云平台都可以订阅同一个主题。
- QoS机制: 从最多一次(QoS 0)到至少一次(QoS 1),再到正好一次(QoS 2),你可以根据数据重要性选择。
- 心跳保活: 设备断线了,Broker能感知到,不会一直等数据。
我记得有一次在水泥厂做项目,现场网络环境很差,经常断线。用OPC DA根本不行,一断就全挂了。后来换成MQTT,设备本地缓存数据,网络恢复后自动补传,问题就解决了。
MQTT在PLC数据采集中的典型架构:
PLC → OPC UA Server → MQTT Gateway → MQTT Broker → SCADA/云平台
或者更直接一点:
PLC(支持MQTT) → MQTT Broker → 多个订阅者(SCADA、MES、手机App)
现在很多新型PLC已经原生支持MQTT了,比如西门子的S7-1200/1500,通过固件更新就能直接发MQTT数据。嗯,这里要注意,老款PLC还是得靠网关转换。
4.3 边缘计算节点设计
最后说说边缘计算节点。这是近几年最火的概念。说白了,边缘计算就是在靠近设备的地方做数据处理,而不是把所有数据都扔到云端。
为什么要做边缘计算?
- 实时性: 有些控制逻辑必须在毫秒级完成,上云根本来不及
- 带宽: 一台PLC每秒产生几千个数据点,全上传带宽扛不住
- 可靠性: 网络断了,边缘节点还能继续工作
- 安全性: 敏感数据不出车间,只在本地处理
我在设计边缘计算节点时,一般会考虑以下几个组件:
| 组件 | 功能 | 推荐方案 |
|---|---|---|
| 数据采集引擎 | 从PLC、传感器读取数据 | Kepware、Ignition Edge、自研OPC UA Client |
| 协议转换模块 | 将不同协议转为统一格式 | Modbus TCP、Profinet、EtherNet/IP转MQTT |
| 本地存储 | 缓存数据,防止断网丢失 | SQLite、InfluxDB、TimescaleDB |
| 边缘计算引擎 | 执行本地逻辑,如报警、滤波、聚合 | Node-RED、Python脚本、C++程序 |
| 上行通信 | 将处理后的数据发送到云端或SCADA | MQTT、OPC UA、HTTP |
一个典型的边缘计算节点硬件配置:
CPU: Intel Celeron J4125 或 ARM Cortex-A72
内存: 4GB ~ 8GB
存储: 64GB SSD(工业级)
网络: 双网口(一个接PLC网络,一个接办公网络)
系统: Ubuntu 20.04 LTS 或 Windows 10 IoT Enterprise
我个人习惯用树莓派4B做原型验证,成本低、社区资源多。但真正上产线,我会用研华、西门子或者贝加莱的工业边缘盒子。为什么?树莓派的SD卡容易坏,工业环境里扛不住震动和温度。
最后总结一下:
- OPC UA 是工业数据采集的基石,跨平台、安全、信息模型丰富
- MQTT 是物联网数据传输的利器,轻量、可靠、适合弱网环境
- 边缘计算节点 是连接现场和云端的桥梁,负责协议转换、本地处理和缓存
这三者结合起来,基本就能覆盖90%的PLC数据采集与远程监控场景了。下一章我们会讲具体的硬件选型和网络规划,到时候再结合实例深入聊聊。
好,这一章就到这里。有什么问题,咱们课后交流。