第二章:通信协议基础——Modbus TCP/RTU、OPC UA与MQTT
各位同学,大家好。今天我们来聊聊自控系统里最绕不开的话题——通信协议。
说实话,我刚开始做自动化那会儿,也被各种协议搞得头大。Modbus、OPC、MQTT……每个都号称自己是“工业标准”,但实际用起来坑一个比一个深。今天我就把这几兄弟掰开了揉碎了讲清楚,顺便分享一些我当年踩过的坑。
2.1 Modbus TCP/RTU:老当益壮的工业老兵
Modbus 这玩意儿,1979年就诞生了。你想想看,比我都大。但它至今还在大量使用,为什么?简单、稳定、便宜。
Modbus 有两种主要形态:RTU 和 TCP。
2.1.1 Modbus RTU
RTU 跑在串口上(RS-232/RS-485)。它的数据是二进制格式,紧凑高效。一个报文帧大概长这样:
地址 | 功能码 | 数据 | CRC校验
1字节 | 1字节 | N字节 | 2字节
举个例子,读取从站地址为1的设备的保持寄存器,起始地址0,读取2个寄存器:
请求:01 03 00 00 00 02 C4 0B
响应:01 03 04 00 0A 00 14 7A 6B
这里 0x000A 是10,0x0014 是20。嗯,就是这么直白。
2.1.2 Modbus TCP
TCP 就是把 RTU 的报文直接塞进 TCP 包里,去掉了 CRC(因为 TCP 自己会校验),加了个 MBAP 头。结构如下:
MBAP头(7字节) | 功能码(1字节) | 数据(N字节)
MBAP 头包含事务标识符、协议标识符、长度和单元标识符。说白了,就是告诉接收方“这是哪个请求的回复”。
TCP 默认端口是502。我建议你记住这个端口号,因为很多防火墙默认会拦它。
2.2 OPC UA:工业4.0的通信基石
OPC UA 和 Modbus 不是一个时代的产物。Modbus 是“发个数字过去”,OPC UA 是“我给你一个对象,里面有温度、压力、状态,还有历史数据”。
OPC UA 的核心优势:
- 面向对象的信息模型:不只是传数值,还能传元数据
- 安全机制:支持证书、加密、签名
- 跨平台:Windows、Linux、嵌入式都能跑
- 历史数据访问:可以查询过去的数据
一个典型的 OPC UA 地址空间结构:
Root
└── Objects
└── DeviceSet
├── PLC_1
│ ├── Temperature (变量)
│ ├── Pressure (变量)
│ └── Status (变量)
└── PLC_2
├── Speed (变量)
└── Alarm (事件)
你看,这比 Modbus 的“寄存器地址0x0000”要直观得多。
我的建议:如果你在做新项目,尤其是需要和 MES、ERP 对接的,直接上 OPC UA。别再用 OPC DA(基于 COM/DCOM)了,那玩意儿在跨网络时简直是噩梦。我当年配 DCOM 权限配到想砸电脑。
2.3 MQTT:物联网时代的轻量级选手
MQTT 最初是 IBM 为石油管道监控设计的。它的特点是:轻量、发布/订阅模式、支持 QoS。
为什么 MQTT 适合物联网?
- 报文头最小只有2字节
- 支持断线重连和遗嘱消息
- 一对多通信,天然适合传感器数据采集
一个典型的 MQTT 主题结构:
factory/area1/line2/temperature
factory/area1/line2/pressure
factory/area1/line3/temperature
客户端可以订阅 factory/area1/# 来获取所有数据。
QoS 有三个级别:
| QoS | 含义 | 适用场景 |
|---|---|---|
| 0 | 最多发一次,不确认 | 温度等非关键数据 |
| 1 | 至少发一次,可能重复 | 状态变化通知 |
| 2 | 恰好发一次,保证不重复 | 报警、控制指令 |
2.4 协议选型对比:到底该用哪个?
这个问题没有标准答案。但我可以给你一个决策框架:
| 场景 | 推荐协议 | 理由 |
|---|---|---|
| PLC 与现场设备通信 | Modbus RTU/TCP | 简单、兼容性好、成本低 |
| 上位机与 PLC 通信 | OPC UA | 信息模型丰富、安全、跨平台 |
| 传感器数据上云 | MQTT | 轻量、支持断线重连、适合弱网 |
| 设备与设备直接通信 | Modbus TCP | 实时性好、延迟低 |
| 需要历史数据查询 | OPC UA | 原生支持历史数据访问 |
我个人习惯是:现场总线用 Modbus,车间级用 OPC UA,云端用 MQTT。这三者各司其职,互不冲突。
核心原则:没有最好的协议,只有最合适的协议。选型时考虑三个因素:设备兼容性、网络环境、维护成本。别为了追求“先进”而选一个没人会用的协议。
2.5 知识体系总览
下面这张图,是我自己梳理的通信协议知识体系。你可以把它当作一个“地图”,随时回来对照。
这张图把三大协议的核心特征和选型方向都标出来了。你可以把它截图保存,以后做方案时拿出来对照一下。
公众号:蓝海资料掘金营,微信deep3321