OPC UA vs MQTT vs Modbus:2026年工厂该选哪种工业协议?
更新于 2026年6月 · 阅读约12分钟
协议选择的困惑
如果你研究工业物联网超过一小时,你一定见过这三个缩写:OPC UA、MQTT和Modbus。每个供应商都说自己的协议是"标准",每篇博客文章给出不同的建议。而你的车间里有来自三个不同时代的设备,它们都不原生支持这些协议。
事实是:没有单一的最佳协议。正确的选择取决于你要连接什么设备、需要什么数据、数据要去哪里。本文用通俗语言为你拆解——不需要自动化工程博士学位。
Modbus:可靠的老兵(1979年至今)
Modbus是世界上部署最广泛的工业协议。如果你有任何2010年之前制造的工业设备,90%的概率它会说Modbus。
Modbus的工作原理
Modbus是一个简单的主从(现称客户端-服务器)协议。主站发送请求:"给我寄存器40001的值。"从站返回数据。就这样。没有复杂的握手,没有认证,没有加密。
Modbus的三种变体
- Modbus RTU — 通过RS-485串口线运行。二进制格式,速度很快。每条总线最多247个设备。
- Modbus ASCII — 与RTU相同但使用人类可读的十六进制编码。更慢,更容易调试。
- Modbus TCP — Modbus通过以太网/TCP/IP运行。不需要串口线。支持多个同时连接的客户端。
什么时候用Modbus
- 连接传感器、变频器、电表和简单I/O模块
- 短距离、低延迟通信(单台机器或生产线内)
- 预算敏感的项目,简单性很重要
- 你需要"开箱即用"、最少配置的方案
Modbus的局限
- 没有内置数据建模——你需要寄存器地址表来理解每个地址的含义
- 没有安全性(无认证或加密)
- 数据类型有限(主要是16位寄存器)
- 不是为云连接或跨网络通信设计的
MQTT:云端信使
MQTT最初是为通过卫星监控石油管道而设计的。如今它是物联网云连接最流行的协议,被AWS IoT、Azure IoT Hub、Google Cloud IoT和几乎所有物联网平台使用。
MQTT的工作原理
MQTT使用发布/订阅模型。设备(发布者)将消息发送到中央代理上的"主题"。其他系统(订阅者)接收他们订阅的主题的消息。就像一个工业级群聊。
什么时候用MQTT
- 将工厂数据发送到云平台(AWS、Azure、Google Cloud)
- 不可靠的网络环境(MQTT有内置的重连和消息队列)
- 一对多数据分发(一个传感器,多个仪表板)
- 带宽有限的轻量设备(MQTT头最小只有2字节)
MQTT的局限
- 不是实时协议——消息传递取决于代理和网络
- 需要代理服务器(多了一样要维护的东西)
- 没有标准数据模型——每个供应商定义自己的主题结构和载荷格式
- 安全性取决于代理配置(TLS、认证)
OPC UA:企业级标准
OPC UA是工业协议中的重量级冠军。由OPC基金会开发,Siemens、Microsoft、Rockwell等数百家公司参与,旨在成为工业自动化的通用语言。
OPC UA的工作原理
OPC UA使用客户端-服务器模型和丰富的信息模型。OPC UA不是原始寄存器号,而是将数据组织成带有名称、类型、单位和关系的"节点"树。温度传感器不仅仅是"寄存器40012"——它是"工厂/一楼/3号线/电机1/温度",带有数据类型、工程单位和报警限值。
什么时候用OPC UA
- 有数百或数千个数据点的复杂系统
- 多供应商环境(一个工厂里有Siemens + Rockwell + Mitsubishi)
- 需要数据建模、历史记录和报警的应用
- MES/ERP集成,数据上下文很重要
- 需要安全和审计跟踪的受监管行业
选型决策框架
| 应用场景 | 最佳协议 | 原因 |
|---|---|---|
| 旧PLC联网 | Modbus TCP | 简单、快速、广泛支持 |
| 传感器数据上云 | MQTT | 云平台原生支持、轻量 |
| 多厂商工厂集成 | OPC UA | 统一数据模型、互操作性 |
| 实时机器控制 | Modbus RTU/TCP | 确定性、低延迟 |
| 边缘到云数据管道 | MQTT + OPC UA | 边缘用OPC UA,云端用MQTT |
| MES/ERP双向集成 | OPC UA | 丰富的数据模型、方法支持 |
现实答案:你可能需要两个
在实践中,大多数工厂最终使用两种协议:
- 边缘端用Modbus或OPC UA — 从车间的机器收集数据
- 云端用MQTT — 将数据推送到仪表板、分析和告警系统
这正是工业物联网网关的作用。它一边说Modbus/OPC UA(与PLC、传感器和CNC机床通信),另一边说MQTT(与云平台通信)。网关自动处理协议转换、缓冲和数据标准化。
常见错误
- 不要用MQTT做实时控制。MQTT是为遥测设计的,不是闭环控制。时间关键的应用请用Modbus或EtherCAT。
- 不要为简单的传感器监控用OPC UA。如果你只有5个温度传感器上云,OPC UA是杀鸡用牛刀。用Modbus + MQTT就够了。
- 不要认为"云原生"就等于"更好"。很多工厂应用用本地Modbus通信就完全够了。不是所有数据都需要上云。
- 不要忽视安全性。Modbus零安全性。如果你的Modbus网络能从互联网访问,你有严重的安全漏洞。
Related Articles
常见问题
- Q:可以同时使用OPC UA和MQTT吗?
- 可以。大多数现代边缘网关同时支持两者。OPC UA用于本地MES/SCADA集成,MQTT用于云端仪表板。它们是互补的。
- Q:我的PLC只支持Modbus RTU,还能上云吗?
- 完全可以。协议转换器或边缘网关将Modbus RTU翻译成MQTT。PLC不需要知道MQTT的存在——网关处理一切。
- Q:OPC UA是免费的吗?
- OPC UA核心规范现在是免版税的。但某些供应商特定的实现和SDK可能有许可费用。大多数工业网关免费包含OPC UA服务器功能。
- Q:Azure IoT Hub支持哪种协议?
- Azure IoT Hub原生支持MQTT、AMQP和HTTP。对于工厂数据,典型方式是:PLC → Modbus/OPC UA → 边缘网关 → MQTT → Azure IoT Hub。
- Q:需要更换现有的Modbus设备吗?
- 不需要。Modbus不会消失。添加一个将Modbus桥接到MQTT/OPC UA的网关比更换正常工作的设备便宜得多、安全得多。