干了十几年工控,每次有人问我:‘Modbus协议到底该不该继续用?’我就想笑。这问题就像在问:扳手是不是过时了?的确,有电动工具了,但扳手永远在工具箱里占个位置。Modbus也一样——简单到令人发指,但又可靠得让人没脾气。不过,用不好它,你真的会崩溃。
Modbus的前世今生:从串口到以太网
1979年,莫迪康公司搞出Modbus协议的时候,估计没想过它能活40多年。那个年代,可编程逻辑控制器(PLC)刚兴起,设备间通信基本靠吼——哦不,靠硬接线。Modbus一出来,一条双绞线就能挂247个设备,简直是革命。说实话,那时候的工程师真是天才,协议帧简单到一张餐巾纸就能画清楚:设备地址、功能码、数据、校验。没了。

后来以太网普及,Modbus TCP登场,把RTU帧往TCP包里一塞,端口号502。你猜怎么着?照样跑得欢。但这里有个坑——很多人以为Modbus TCP就是RTU加个网口,其实TCP模式去掉了校验和,因为TCP层已经做了。大意了,连错线都不知道,一查,原来是CRC没算,可TCP不需要啊……
问:Modbus RTU和Modbus TCP到底怎么选?感觉差不多啊?
答:差远了!如果你在车间里,几米到几十米的距离,电磁干扰不大,RTU最省钱。记住,RTU走的是RS-485,那个接线端子密密麻麻,一旦接错——完了,整个总线瘫痪。TCP就爽了,直接走网线或光纤,距离不再是问题。但别高兴太早,TCP的实时性其实不如RTU,因为以太网的延迟不稳定。我做过测试,100Mbps局域网下,Modbus TCP读写100个寄存器,平均15ms,但偶尔会飙到50ms。RTU在9600波特率下,虽然慢,但延迟偏差极小。所以,如果是高速运动控制,千万别用Modbus TCP——你会后悔的。
Modbus RTU vs TCP:选错就是坑
我碰到过一个事。某厂上了套新产线,主控是西门子S7-1200,下面挂了三十几台变频器,全走Modbus TCP。调试的时候一切正常,一投产,不定时报警——通信超时。查了三天,最后发现交换机是管理型,开启了STP,每次拓扑变化就断流几秒。换成非管理型交换机,立刻消停。所以啊,用Modbus TCP,网络规划不搞好,就是给自己埋雷。

还有一次,用Modbus RTU采集电表数据。协议文档写得稀烂,寄存器地址给的是十进制,可组态软件里是十六进制——结果读数全错。差点以为电表坏了。所以,搞Modbus,一定要搞清楚寄存器地址的格式:是PLC地址(从1开始)还是协议地址(从0开始)。这个坑,掉进去的人能绕地球一圈。
问:Modbus协议的安全性是不是很差?感觉随便就能攻击?
答:差?那简直是裸奔。Modbus天生没有加密,没有认证,谁都能读、谁能写。早几年,某水厂的PLC就因为Modbus TCP暴露在公网,被人写了个停机指令——损失惨重。所以现在搞工业互联网,很多方案都在Modbus外面套一层加密隧道,比如VPN或者OPC UA with Pub/Sub。但话说回来,如果只是在隔离的工控网里,Modbus的简单反而是优势,因为你不用担心协议栈漏洞,各种防火墙也能轻松解析。
现场总线的战国时代:Modbus还能活多久?
现在工厂里,总线种类太多了:PROFINET、EtherCAT、EtherNet/IP、CC-Link……个个牛气哄哄。EtherCAT号称微秒级同步,PROFINET是西门子的亲儿子。那Modbus算什么?算老黄牛——干苦力。你去看看那些非关键性的设备,比如温湿度传感器、电表、简单的变频器、IO模块,十个有八个还带着Modbus接口。为啥?开发成本低啊!一个STM32就能轻松实现Modbus从站,EtherCAT呢?得买专用芯片。
不过,也不是没威胁。OPC UA over TSN这两年很火,打着统一所有总线的旗号。可我一看到OPC UA那复杂的模型,就头疼。Modbus呢?半个小时能上手,半小时出数据。这种快速集成的能力,在产线改造时就是真金白银。所以,我觉得Modbus至少还能再蹦跶二十年。但如果你是新项目,核心设备还是建议上实时总线;边缘设备,Modbus TCP/RTU依旧是最经济的选项。
最后说个笑话:有一次我去现场,工程师抱怨Modbus慢,我一看,波特率设的1200!问为啥,说是以前老设备就这么设的,一直没改。调成115200后,他惊呆了——原来Modbus可以这么快!哎,很多时候不是协议不行,是用的人太随意。
免责声明:文章内容来自互联网,本站仅作为分享,不对其真实性负责,如有侵权等情况,请与本站联系删除。
转载请注明出处:Modbus协议在工业现场那些事儿:老而弥坚,还是该被淘汰了? https://www.dachanpin.com/a/tg/65807.html