2026-07-06 22:54:50 作者:网编
分类:文章
说实话,每次看到新来的小伙子拿着最新的Profinet、EtherCAT设备,一脸嫌弃地看着那些Modbus设备,我就想笑。然后一个月后,他半夜打电话给我:“哥,这Modbus从站怎么死活读不上来?” 哈哈哈,Modbus就是这样——看起来土得掉渣,但总能让你跪下叫爸爸。
简单到令人发指,但就是死不了
Modbus协议,1979年诞生,比我年纪都大。它的帧格式简单得就像一张便利贴:站号、功能码、数据、校验。没了。对比现在那些动不动几百页的协议栈,Modbus的说明书可能就几页纸。可是,✔️ 就因为这个“简单”,它活到了今天。你随便找个单片机,几十行代码就能跑Modbus从站。那些高大上的协议呢?授权费吓死人,还得上操作系统。很多传感器、仪表,人家就一个8位芯片,跑个Modbus RTU正好。你非让它上OPC UA?那不是要它的命嘛。
老式PLC上的Modbus RTU通讯指示灯闪烁
不过话说回来,简单也意味着功能弱。它没有发现机制,没有元数据,你得拿着点表对寄存器地址。哎,每次调试点表错一个位,都要查半天。但工程师们已经习惯了这种“痛并快乐着”。而且,Modbus组织后来搞了Modbus TCP,把RTU帧塞进TCP包里,这样就能走网线了。本质上还是那些寄存器,只不过传输层换了。所以,Modbus TCP和RTU转换起来非常容易,一个几十块钱的串口服务器就搞定。这又让它续命20年。
RS-485上的爱恨情仇
Modbus最常见的物理层就是RS-485。两根线,A和B,差分信号,抗干扰。听起来美好吧?实际施工一塌糊涂!❗我见过手拉手星星形接线的,见过终端电阻不加或者乱加的,见过用普通网线当485线用的,还见过把A、B接反的。最奇葩的一次,一个设备怎么也通不上,一查,这家伙居然把屏蔽层当地线接到A上了!我当时就崩溃了。
终端电阻,永远是话题中心。理论上120欧姆,首尾各一个。但实际上,很多设备自带偏置电阻,你再并联终端电阻,可能把电压拉偏。所以现场调试的时候,我们经常是:先不加,通了就不加;不通就加一个试试;再不行就两个都加上。经验主义至上。还有接地问题,总共就这么两根信号线,结果因地电位差烧接口芯片的案例数不胜数。所以,做RS-485,隔离是必须的,别省那几块钱。
工业现场RS-485总线接线端子混乱
Modbus TCP:老酒换新瓶
前面说了,Modbus TCP就是把RTU帧去了校验,加了MBAP头,塞进TCP。这样就能直接走以太网,还能多个主站同时访问(虽然从站处理能力有限的话会忙不过来)。但是,它还是那个一问一答的主从模式,效率不高。不过,对于绝大多数工业场景,监控一下温度、压力,足够了。不是所有的应用都需要运动控制级别的实时性。
这里有必要提一下,很多人搞不清Modbus的寄存器类型。线圈(0x)、离散输入(1x)、保持寄存器(4x)、输入寄存器(3x)。新人经常拿着保持寄存器的地址去读输入寄存器,然后抱怨读不到数据——当然读不到了,因为功能码都没搞对!这里给个快速记忆法:想读写都行的,用保持寄存器;只读的,用输入寄存器。线圈就是开关量输出,离散输入就是开关量输入。记住了吗?
问:我们厂里既有Modbus RTU设备又有Modbus TCP设备,怎么让他们互通?
答:最简单的是买个串口服务器,把RTU转成TCP。注意,串口服务器通常是透传模式,把串口数据打包成TCP包。但有些智能网关可以做协议转换,甚至能一边是Modbus主站去读RTU从站,另一边作为Modbus TCP从站供上位机访问。选择时看清楚是透传还是协议转换。还有一点:如果是多个TCP主站同时访问一个RTU从站,要注意串口服务器的并发处理能力,别把从站问死了。
问:Modbus安全吗?现在都讲工业互联网安全,这协议啥认证都没有。
答:你说到痛点了!Modbus本身没有任何安全机制,谁连上都能读能写。所以,千万别直接把Modbus TCP暴露到公网!除非你想上新闻。实际项目中,要么用VPN,要么加防火墙,要么通过OPC UA等安全网关中转。有些行业(比如电力)用的Modbus变种加了安全扩展,但标准Modbus就是裸奔。所以,部署时候长点心吧。
为啥它还不死?
为啥它还不死?
可能有人会问,那么多现代协议,为啥Modbus就是不退休?我的看法是:工业不像消费电子,追求最新最快。工业设备的生命周期动辄10年、20年。你让一个运行了十五年的工厂,把几百个仪表全换掉?老板不会同意的。另外,Modbus的开放性和免授权费,使得无数小设备厂商用它。你买一个温度传感器,老板扔给你一个说明书,上面写着“通讯协议:Modbus RTU”,你就知道怎么接入。换个私有协议?你哭去吧。所以,不是Modbus多优秀,实在是同行衬托得好,加上历史惯性太大。你说对不对?
其实,Modbus也在进化,比如有了Modbus Plus(已淘汰),Modbus X(据说要支持JSON和物联网)。但我看,在相当长的一段时间内,我们还得和那些寄存器地址打交道。习惯了就好,不是吗?毕竟,调试通一个Modbus设备后,那种如释重负的感觉,还挺爽的。
好了,不说了,工头喊我去查一个Modbus从站掉线的问题。希望不是终端电阻的事……
免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:Modbus:这个老掉牙的协议,为什么还在工厂里横行霸道?
文章链接:https://www.zystgy.cn/a/54630