去年在现场调试一个老旧PLC,串口线插上去,数据乱跳——我差点砸了屏幕。后来发现,波特率设错了。Modbus,就这玩意儿。四十多年了,它还在那儿。说实话,很多人瞧不上它,太简单,甚至简陋。但就是死不了。为什么?咱们聊聊。
Modbus的前世:一个串口通信的“意外”诞生
1979年,Modicon公司搞出了Modbus,为了自家PLC通信。那时候哪有那么多协议?RS-232一接,主从模式,一问一答。简单粗暴。后来成了事实标准。现在你随便走进一个工厂,Modbus设备可能比Wi-Fi路由器还多。真的不夸张。

最早是Modbus RTU,二进制传输,紧凑高效。然后ASCII模式出现了,可读性好但效率低,基本被淘汰。再后来,以太网来了,Modbus TCP/IP诞生,把串行帧封进TCP包,一下子活过来了。90年代到现在,它依然是连接OT和IT的桥梁,特别是那些老旧系统改造,离不了它。
Modbus协议细节:寄存器、功能码,还有那些让人头大的坑
搞Modbus,必须理解寄存器模型。线圈(Coil)、离散输入(Discrete Input)、保持寄存器(Holding Register)、输入寄存器(Input Register)。每个都有不同的功能码读写。01读线圈,02读离散输入,03读保持寄存器,04读输入寄存器,05写单线圈,06写单寄存器,15写多线圈,16写多寄存器——记不住?正常,查手册吧。😂
不过话说回来,功能码03和16用得最多,因为大多数参数都放在保持寄存器里。16位一个寄存器,遇到32位浮点数就得用两个连续寄存器。字节顺序!大端小端的问题,坑死无数人。有一次,读出的温度值完全不对,折腾一上午,发现是两个字顺序反了——厂家没说明字节序。靠!这种破事你遇到过没?
问:Modbus TCP和RTU到底有什么区别?我该用哪个?答:简单说,RTU走串口,帧格式有严格时间间隔;TCP走网口,没有时间间隔,包含MBAP报文头。RTU适合本地短距离,抗干扰差。TCP适合联网,可以远程。现在新项目基本上用TCP,但RTU存量巨大。我的建议:能用TCP就用TCP,布线简单,数据也快。但如果对接老设备,只能RTU,那就认命吧,调试时带上串口工具。

答:90%是接线问题。屏蔽层接地了没?终端电阻加了没?有时候485芯片坏了,换个就好。软件层面,检查波特率、数据位、停止位、校验位是否匹配。超时设置也很关键,RTU的帧间隔必须<3.5字符时间。另外,从站地址千万别设错!我就犯过这错,浪费半天。
实战:Modbus在智慧工厂里的“第二春”
你别以为Modbus过时了。恰恰相反,工业物联网(IIoT)时代,它成了连接老设备和云平台的廉价方案。买个几十块钱的Modbus转MQTT网关,数据直接上云。有些智能电表、温控器,还是Modbus接口。华为、西门子推的工业总线协议,牛吧?但底层很多时候还是Modbus。这叫“新瓶装旧酒”,挺好。
最近参与一个新能源项目,光伏逆变器通信,用的就是Modbus TCP。读取发电量、电压电流,写入控制参数。稳定得一批!说实话,比那些花里胡哨的EtherCAT、PROFINET简单多了——当然,带宽和实时性不能比。但对于非运动控制场合,足够了。
还有,Modbus安全?几乎为零。没有加密,没有认证。可怕吧?所以在内部网络搞搞就行了,千万别直接暴露到互联网。要远程,必须走VPN。
最后说点个人感想:Modbus就像工业界的螺丝刀,基础,但必不可少。你可以不喜欢它,但你离不开它。每次我看到那些年轻的工程师嫌弃Modbus老土,就想笑——等他们被现场教育一次就懂了。😂
Modbus的未来:会被OPC UA取代吗?

OPC UA很强大,信息模型、安全机制、跨平台。但它太重了。一个小小的温湿度传感器,跑个OPC UA服务器?成本受不了。Modbus轻量,实现简单,一个单片机就搞定。所以,在传感器层,Modbus还会长期存在。未来可能是Modbus + OPC UA网关的形式,Modbus管数据采集,OPC UA管信息集成。这样各取所长。
还有,最新的Modbus Security规范(Modbus/TCP Security)也出来了,加了TLS,终于有点安全意识了。但普及还要时间。现在大多数设备还没跟上。
总之,Modbus的生存密码就是:简单、开放、低成本。工业世界,可靠性第一,新旧混用是常态。Modbus,就像那个永远不会退休的老工程师,经验老道,随叫随到。
免责声明:文章内容来自互联网,本站仅作为分享,不对其真实性负责,如有侵权等情况,请与本站联系删除。
转载请注明出处:Modbus协议不死:从1979年到未来工厂的生存密码 https://www.dachanpin.com/a/tg/66460.html