为什么服役半个世纪,Modbus协议还没被淘汰
说实话,刚入行的时候我也纳闷。Profinet速度快,EtherCAT延迟低,一堆新的工业以太网协议各有绝活,怎么偏偏这个1979年就发布的老协议,至今还是工业现场的标配? 答案说出来很简单:够简单,够便宜,够开放。 Modbus的报文结构简单到离谱,一共就那么几种功能码,读线圈写寄存器,翻来覆去就那些规则。哪怕是刚毕业的学生,对着手册看一下午就能写个简单的通讯程序。而且它从出生就是开放协议,没有任何授权费,不管是小作坊做的小众设备,还是头部大厂的产品线,加个Modbus支持不需要掏一分钱给版权方。 对硬件要求也低。哪怕是几十年前设计的8位单片机,都能跑的动Modbus,现在很多低功耗的野外采集传感器,依然靠它撑着,不需要额外的高性能处理器。
Modbus协议最容易踩的几个隐形坑
❗别看着Modbus简单,真做项目,十个新手有八个掉过它的坑,我早年做水厂改造还熬了两个通宵找问题。 说出来好笑,当年的问题就是地址错了一位。Modbus的寻址方式,不同厂家有不同的规则,有的厂家从0开始编地址,有的从1开始算,你要读的保持寄存器,你填了40001,人家设备里实际对应的偏移是0,差一位,所有数据全错,你查遍了接线查遍了程序,根本想不到问题出在这。 还有很多人搞不清RTU和TCP的区别。不少新手以为Modbus TCP就是RTU套个TCP网口壳子,直接把RTU报文往TCP里塞,结果发出去半天收不到回应,差点把网关砸了。实际上Modbus TCP有专门的MBAP报文头,和RTU的帧结构完全不一样,这个错了根本通不了。
2024年Modbus协议的新玩法
