Modbus 为什么”活”过了几乎所有更先进的协议?

2019 年,Modbus 协议诞生 40 年。2024 年,半导体公司的官网上还能看到新款 Modbus 转 RS485 芯片发布。2025 年,主流 PLC 厂商西门子、施耐德、台达、汇川,依然把 Modbus RTU/TCP 列为”标配接口”。

这在科技行业几乎不可想象——1979 年的技术,放到软件领域,大概相当于 Windows 3.1 的地位。但它不仅活着,还在工业现场大量存在。

设备厂商自己也知道 Modbus”不安全””落后”,很多设备手册里白纸黑字写着”由于 Modbus 协议无加密防护,建议在网络层使用 VPN 或防火墙隔离”——但设备本体,还是给你留一个 Modbus 接口。这是一个值得深究的行业现象。

它凭什么”不死”

简单到硬件工程师都能写驱动

Modbus 协议的核心,只有三条指令:读保持寄存器(03)、写单个寄存器(06)、写多个寄存器(10)。读懂它,不需要协议栈,不需要库,一本手册,半小时。电气工程师自己用单片机裸写一个 Modbus 从站,跑通只需要 200 行 C 代码。

相比之下,OPC UA 的规范文档有 1300 多页。要完整实现,光学规范就要花三个月。

这种简单性带来的结果是:几乎所有工业设备都天然支持 Modbus。PLC、变频器、仪表、传感器、HMI、远程 IO——只要是工业用的,稍微上点规模的厂商,都会把 Modbus 列进通信接口清单。

寄存器抽象是工程师友好的设计

Modbus 把所有数据都抽象成”寄存器”——16 位的地址空间,可以放一个整数,可以放一个浮点数的低字节,可以放一段字符串,可以放一个开关状态。这种抽象简洁到极致:地址即数据,不需要类型声明,不需要数据模型,地址表就是文档。这对设备厂商是较低的实现门槛,对系统集成商是较低的理解成本。

成本:最低的那条线

一套 Modbus TCP 系统的硬件成本:

  • 一台支持 Modbus 的 PLC:自带
  • 一台工业交换机:约 200 元
  • 一块 Modbus TCP 转 RTU 网关:约 300 元
  • 接线 + 施工:RS485 线缆每米不到 5 元

换成 OPC UA 系统:同样规模的 PLC 需要加配 OPC UA 模块(约 2000–5000 元),加配 OPC UA 网关(约 1000–3000 元),开发和维护成本翻 2–3 倍。

对于预算敏感、规模不大、只需要传几十个数据的工厂,Modbus 是性价比更优的解法。这不是技术问题,是经济学问题。

一个 Modbus 能对接 200 种设备

做过工厂自动化的工程师大概有这个体会:去设备厂商那边谈接口,对方的技术支持张嘴就是”我们支持 Modbus RTU/RS485,寄存器表见附录”。这句话的潜台词是:你不用付任何对接费用,不用买授权,不用做协议适配,直接接。这种”免费通用”的生态,让 Modbus 成为了工业现场的”普通话”。

大厂一边”嫌弃”,一边塞进手册

“建议使用自有安全协议”,但设备本体还是 Modbus

某头部光伏逆变器厂商,2024 版设备通信手册里有这么一段:

“设备支持 Modbus TCP 协议,但由于 Modbus 协议缺乏加密和认证机制,在公网环境下存在安全风险。建议通过防火墙隔离,或使用设备自有加密通信协议。”

有意思的是:设备本体给用户留的接口,Modbus TCP 是标配,自有加密协议是选配,且需要额外付费购买授权。这几乎是行业惯例:Modbus 是”免费送的”,自有安全协议是”要钱的”。

光储充行业的现状:怎么还是 Modbus

走进光储充现场,你会发现:

  • 光伏逆变器:标配 Modbus TCP(几乎没有第二选择)
  • BMS(电池管理系统):Modbus RTU/RS485 是主流,部分高端型号支持 CAN
  • 消防系统:火灾报警控制器与主机之间,Modbus RTU 是标准接口
  • 智能电表:Modbus RTU 每 5 分钟轮询一次,是能耗采集的事实标准
  • 充电桩:早期大量使用 Modbus RTU,新标准逐步向 OCPP 过渡

这些场景有一个共同点:数据量不大、实时性要求不高、成本敏感、需要对接多种不同品牌设备。 在这样的现场,Modbus 是成本最低、兼容性最广的接入方式。在工厂数据采集与 SCADA 监控 的语境里,Modbus 几乎是绕不开的一环。

CAN 不是替代品,是另一个生态位

CAN(Controller Area Network)有其优势:实时性好、抗干扰能力强、在汽车和电动车领域是主流。但 CAN 在工业里的问题是:没有标准数据模型。Modbus 告诉你”地址 40001 是设备状态”,CAN 只告诉你”这条报文是 8 个字节”,这 8 个字节怎么解释,厂商自己定义。

每一个新的 CAN 设备接入系统,都需要单独写解析代码。而 Modbus,拿了寄存器表就能接。CAN 和 Modbus 不是竞争关系,是互补关系:一个在运动控制、车辆总线领域;一个在设备层数据采集领域。

它的缺点,历史欠下的债

无加密、无认证、明文传输

这是 Modbus 最被诟病的点。Modbus TCP 的报文是明文的,任何人抓到网络包就能看到所有数据。没有任何认证机制,任何设备只要能接入网络,就能读写寄存器。在工业网络封闭的年代,这不算大问题;但在工业互联网的今天,这是一个无法忽视的安全隐患。很多工厂的 SCADA 系统和办公网之间有防火墙,但防火墙内 Modbus 流量通常被视为”可信”——这是一个值得重新审视的假设。

无数据模型,靠”约定地址”活着

Modbus 没有”对象”的概念,所有数据都是扁平的 16 位寄存器阵列。这意味着:没有标准数据类型(浮点数用什么格式、字符串怎么编码,厂商自己定)、没有标准单位(温度是摄氏度还是华氏度,压力是 bar 还是 MPa)、没有标准语义(地址 40001 是设备状态还是报警标志,各家不同)。所以 Modbus 设备对接,本质是在”对暗号”——靠一份寄存器表来约定地址含义。这张表的质量,直接决定了集成的质量。

多主站支持弱

Modbus 协议设计上是一个主站轮询多个从站的模型。虽然可以接多个主站,但并发访问时的仲裁机制较为原始。在复杂的 DCS 系统里,多主站并发读写同一个寄存器区域,如果没有上层协调,容易出现数据竞争。

未来:它会死吗?

不会,但会收缩到”设备层”

工业通信的 OSI 七层模型里,Modbus 的最佳位置是”设备层”——传感器、执行器、仪表这一级。在这个层级上,它有不可替代的成本优势:芯片便宜、驱动简单、资料多、培训成本低。往上走到控制层、车间层、企业层,OPC UA 正在逐步替代 Modbus。这是合理的分工,不是替代,而是分层。

OPC UA 和它不是一个维度竞争

OPC UA 和 Modbus 是不同抽象级别的协议:Modbus 是寄存器读写(裸操作),OPC UA 是信息模型 + 安全 + 发现 + 互操作(一套完整体系)。它们解决的是不同问题:一个是”怎么读写数据”,一个是”怎么让机器读懂数据”。OPC UA 的成本和学习曲线,注定了它不会在短时间内普及到所有设备层节点。Modbus 会长期存在于”最后一公里”。

协议网关是事实标准

在工业现场,Modbus 不会消失,但会通过协议网关接入更高级的架构:Modbus TCP 设备 → 通过协议网关转 OPC UA → 进入 SCADA/MES;BMS/逆变器/电表(Modbus) → 通过能源网关转 MQTT → 进入云平台。Modbus 在这个链条里扮演”接入协议”的角色——它不需要被替换,只需要被桥接。

一个类比:Modbus 就是工业现场的 Excel

Excel 在 1985 年就出来了。1990 年代 Lotus 1-2-3 比它更强大。后来 Google Sheets、Notion、数字表格……一波又一波,但 Excel 没有死。因为 Excel 做到了一件事:足够用,且每个人都会用。

Modbus 在工业通信里做到了同样的事:它不够安全,不够快,不够现代,但它足够简单,且每个人都认识它。工厂里换一个人,维护团队换一家集成商,新来一个电气工程师——他们都知道 Modbus。不需要培训,不需要授权,不需要查文档,照着寄存器表就能接起来。这种”活着的通用性”,是任何更先进的协议都需要花十年才能建立的东西。

写在最后

如果你的工厂现场需要把几十台不同品牌的 PLC、变频器、仪表、电表接到一套 SCADA 或 MES 里,Modbus 大概率仍是那个”最便宜、最快上线、维护团队最好找”的选项。把它放在设备层,把安全交给架构(防火墙 + VPN + 协议网关),把数据上行交给 OPC UA 或 MQTT——这是当前工业现场被反复验证过的成熟路径。