工控人难题三:modbus延迟(2)
工控人难题系列
往期回顾
1 前言
书接上文,在多子系统多从站的系统modbus排查中,我们锁定了问题发生在VSD,所以我们就要对VSD进一步排查。找到VSD子系统的普遍性和特殊性。
2 VSD一侧的MOXA交换机设置
发现问题在VSD后我先来到VSD一侧看看和其他从站有何异常。
VSD一侧交换机
UCS一侧交换机
VSD交换机拨码
2.1 型号兼容问题
交换机是同一品牌,近似型号,理论上兼容性应该没有问题。
2.2 通讯带宽问题
VSD交换机一侧是100M拨码,UCS一侧交换机是10M/100M自适应。所以不存在带宽兼容问题。
科普一下,100M和10M网卡对Modbus通讯的具体影响:
1、传输速率:100M网卡的传输速率是100Mbps,而10M网卡的传输速率是10Mbps。在Modbus通讯中,较高的传输速率可以减少数据传输的时间,提高通讯效率。因此,使用100M网卡可以显著提升Modbus通讯的速度。
2、通讯距离:Modbus通讯的距离受信号衰减和干扰的影响。虽然Modbus通讯的理论距离可以达到1200米,但在实际应用中,距离越长,信号衰减越厉害,尤其是使用质量较差的电缆时,衰减更为明显。因此,较高的传输速率(如100M)在长距离通讯中可能更有优势,但实际效果还需考虑电缆质量和干扰情况。
2.3 全双工和半双工问题
重大发现,VSD一侧拨码是半双工,UCS一侧是全双工。这是一个重大发现并且有理论支持,半双工会造成modbus通讯延迟。
查到这里似乎问题得到发现并且能通过拨码解决。回头查看通讯波形通讯延迟现象依然没有得到解决。
3 二次排查过程
无奈之下,我们又回到了上文排查过程接5.3一条通讯总线挂接不同的通讯设备。
3.1 一条通讯总线挂接不同的通讯设备
3.1.1减少NET2网口modbus通讯参与设备
将CCC网线1路、Bently网线2路,应用同一网口的设备通讯摘除,仅剩VSD参与通讯。
3.1.2减少NET2网口modbus通讯参与设备,同时减少COM串口设备通讯
除上述操作外摘除MCC的串口通讯,虽然占用网口是否可能对通讯的负荷产生影响。
经过验证试验图如下:未见明显改观。
3.2 通讯节点太多
3.2.1 排除冗余通讯中1路的所有去往VSD的节点
CM左卡正常连接SICO交换机,CM右卡直接连接VSD。
3.2.2 排除冗余通讯中1路的所有去往VSD的节点
CM左卡正常连接SICO交换机,拆除左卡的CCC和BN通讯,CM右卡直接连接VSD。
通讯负荷也降低了,通讯的节点数量也减少了,延迟没有任何优化迹象,矛头瞬间指向了交换机(是否内部存在隔离影响了通讯)。
4 Cisco交换机排查
交换机品牌Cisco Network switch 型号IE-2000-16TC-G-E 是网管型交换机偏IT类型,工控人一般不了解。
4.1 直接跳过Cisco交换机
直接跳过交换机CM左口直连电脑,CM右口直连VSD,通讯延迟瞬间好转。
4.2 用普通华为8口交换机替换Cisco
跳过CISCO交换机,通讯质量变好并不能证明问题在CISCO交换机,因为跳过CISCO交换机的同时,通讯的节点也变少了,没有实现单一变量。于是我用普通的华为8口交换机替换掉CISCO进行测试。
这两个试验将矛头指向了CISCO,同时用普通华为8口交换机用以佐证,似乎问题就在CISCO。
但是有两个问题点醒了我。
1、同样过CISCO为什么CCC和Bently心跳数值不延迟。
2、试验过程CM右卡直连了VSD,减少了大量的modbus通讯负荷,是否同样对心跳闪烁产生了优化。
5 VSD一侧的二次排查
5.1 软件通讯数据类型排查
拿到VSD和UCS两边的数据列表,进行逐一对比,看看是否存在同一数值两边设置的数据类型不一样。BOOL、INT、REAL等等,只有保持数据类型一致,才能保证通讯正产。
VSD一侧数据列表
UCS一侧数据列表
5.2 VSD其他问题可能性排查
经过一系列排查之后,没有进展。反复回忆,之前通讯好时和通讯出问题前做过什么操作。发现VSD一侧,VSD的西门子PLC,内部有主从站M和S,期间S站出现过,VSD内部的主从通讯故障。
让VSD一侧拔除S站,进行监视测试。通讯状态改善,没有出现通讯延迟。
5.3 重启VSD的S站
重新连接VSD一侧的S站并重启,进行监视测试。
通讯watchdog闪烁点完全修复,通讯延迟恢复到了PLC相应通讯负载的理论值以内,单次跳变小于5.4S。
6 分析总结
通讯延迟造成原因如下:
PLC本身的modbus通讯负荷较大,同时VSD一侧,S站掉线。引发modbus轮循时间变长,多次轮循数据没有接收到。Watchdog闪烁点就出现了断线不稳定症状。
优化方式:
1、 删除没有通讯点的通讯块,减少PLC理论负荷通讯时间。
2、 删除通讯块中UCS并不需要的测点,以减少数据量。
3、 Watchdog闪烁点不闪烁的报警时间从10S提高到15S,这样真的出现两次丢包也能保持在15S以内闪烁跳变。
这次排查感觉走了很多弯路,并一度错误的将故障点锁定在CISCO交换机。排查的是人没有上帝视角,但每一份付出都会有收获。在排查过程中细心且多思考前后变化,总能收到一个满意的答案。
最后,还是提示大家,出问题,先重启,如果第一时间去重启VSD就不会有后边这么多波折。“科学的尽头是玄学,玄学的尽头是重启”。愿意跟大家多分享,工控人在调试的道路上少走弯路。
2025年06月