前言
大家在使用Modbus的时候会遇到一些问题但是不知道怎么解决,本文就结合工业现场作业遇到的常见问题来提供一些解决方案。
通讯问题
RS-485的A+和B-容易接反,这是最常见且最容易遇到的低级错误之一。
第一种情况:接线极性反了
RS-485通讯要求A+和B-严格对应,新手最常见的问题就是把两条线接反。
解决方案:用万用表测量一下A+和B-之间的电压,正常应该在1.5V-6V之间波动。如果电压接近0V,,说明极性可能反了。另外,现在很多设备都用颜色区分,可以根据现场需求将A+和B-进行颜色区分,方便现场的快速连接使用。
第二种情况:终端电阻没装
长距离通讯时,信号反射是导致通讯失败的主要原因。
解决方法:在总线两端各装一个120欧姆的终端电阻(价格便宜且能解决问题),有些设备本身自带终端电阻拨码开关,需要根据实际情况决定是打开还是关闭。如果设备数量少于3台且距离不超过100米,可以考虑不加终端电阻。
第三种情况:波特率或参数不匹配
主站和从站的通讯参数必须完全一致,包括波特率、数据位、校验位和停止位。
解决方法:建议大家配置之前先实际测试一下,用Modbus测试软件逐个参数调试。
数据跳变
如果两个从站的地址设置重复,就会导致总线上的数据冲突,此问题隐蔽性强,需要系统性排查。
从站地址冲突的排查方法
可以准备一个Modbus地址扫描工具,逐一读取各个从站的信息。如果发现某个地址响应了两次,或者读到两个不同的设备ID,那基本就能确定是地址冲突了。此外有些设备的地址默认是1,调试完没有上电,也会导致地址冲突,这一点新手需要注意。建议在设备通电前分配好地址,做好相应记录。
信号干扰的处理技巧
工业现场电磁环境复杂,特别是附近有大功率变频器的时候。通常会从三个方面入手:第一,选用屏蔽双绞线,屏蔽层单端接地;第二,通讯线远离动力电缆,至少保持30厘米的间距;第三,在总线中部加装信号隔离器,对于压制共模干扰很有效。
超时问题
通讯延迟严重的时候,有时候会超时报错。这种长距离通讯问题,和短距离的处理方式有很大区别。
距离太远,可以考虑采用分段网络的方案。把整个网络分成若干段,每段加一个Modbus网关或中继器。这样既可以延长总线的有效距离,又能减少单段网络的负载,提高整体通讯的稳定性。
功能码和寄存器出现问题
寄存器地址的问题也是现场高频出现的问题之一。有时候明明通讯正常了,但读出来的数据和预期完全不一样,这时候很可能是寄存器地址的偏移出了问题。
地址偏移的认知误区
Modbus协议有三种寄存器地址模式:一种是直接从0开始编址,一种是1开始编址,还有一种是直接使用40001这样的功能码地址。不同厂家的设备可能采用不同的编址方式,所以当你用软件能通讯但数据不对的时候,首先要确认地址模式是否匹配。