先记结论
三者不在同一层:**Modbus 和 OPC UA 是“设备/现场层”的通讯协议,解决怎么从设备读数据;MQTT 是“上层/网络层”的消息协议,解决数据怎么在系统间转发。**它们经常配合使用,而不是三选一。
Modbus:简单通用的“设备语言”
- 历史久、简单、几乎所有设备都支持
- 主从问答模式,常见 Modbus RTU(串口)和 Modbus TCP(以太网)
- 优点:简单、通用、开销小
- 局限:无统一数据模型、无安全机制、不自带订阅、点位含义要靠人工对照地址表
- 定位:连接底层设备的基础语言
OPC UA:标准化的“工业普通话”
- 跨平台、面向服务,有统一信息模型和地址空间
- 支持订阅推送、证书安全、方法调用
- 优点:标准化、自描述、安全、跨厂商互通
- 代价:相对复杂、资源占用更高,部分设备需授权/较新固件
- 定位:设备到系统、系统到系统的标准化互联,是长期方向
MQTT:轻量的“消息快递”
- 发布/订阅模式,通过 Broker 转发,天然解耦
- 轻量、适合不稳定网络和大规模设备
- 它本身不规定数据点怎么从 PLC 读,只负责把已经采到的数据发出去
- 定位:采集结果向上汇聚、系统间分发的消息总线
一张表对比
| 维度 | Modbus | OPC UA | MQTT |
|---|---|---|---|
| 所在层 | 现场设备层 | 现场/系统互联层 | 网络/消息层 |
| 模式 | 主从问答 | 客户端-服务器/订阅 | 发布-订阅 |
| 数据模型 | 无(靠地址表) | 有(地址空间) | 无(自定义载荷) |
| 安全 | 弱 | 强(证书/加密) | 可加 TLS/账号 |
| 典型用途 | 读写 PLC/仪表 | 跨厂商标准互联 | 数据汇聚转发 |
实际系统里怎么配合
典型链路:
PLC --Modbus/OPC UA--> 采集网关 --MQTT--> 入库/看板/平台
- 设备侧:设备支持什么就用什么,老设备多为 Modbus,新设备优先 OPC UA
- 汇聚侧:统一转成 MQTT 向后台和多个消费端分发
选型决策
- 直连简单设备、资源受限 → Modbus
- 多品牌标准互联、注重安全和长期演进 → OPC UA
- 采集结果要分发、上云、大规模解耦 → MQTT
- 完整系统往往是“Modbus/OPC UA 采 + MQTT 传”的组合
理解了“一个负责读设备、一个负责传消息”,就不会再纠结该用谁替代谁。