一起排查S7-1200 Modbus rtu通讯轮询停止的故障
新年开工第一天,接到公司同事的电话求助,说有一台涂装流水线前处理设备,其中的温度表及液位计关联的Modbus rtu通讯轮询,因未知原因而停止轮询。该设备的通讯程序年前我有去处理排障过一次,情况大概了解,现场安装比较混乱,RS485通讯连接全在桥架里面,连接情况不清晰,控制柜未见20多个从站的通讯连接电缆。
我过去的时候,公司同事连接建立好连接等我过去诊断了。我大概浏览了Modbus rtu通讯轮询程序,轮询停止在从站22#这个站点,那故障基本被锁定了。我与同事过去看22#从站的温度计工作情况,现场温度计供电24V DC正常,数码显示也正常。查阅通讯参数设置,是能够满足通讯轮询的,现场从站未见可疑,只能返回控制柜,监控通讯程序是否有轮询的逻辑漏洞之类的情况,查阅一番轮询程序也未见找到故障根源。
尝试将之前增加的重启通讯的通讯轮询触发位设置为1,图示:

通讯可以从第一个从站到最后一个从站的轮询,也就是说此时的重新启动通讯轮询是可以轮询了的。从站的通讯轮询程序图示:

轮询依据也是利用了Modbus Master指令的done和error标志位,只是我监控时REQ已经有过上升沿的触发,只是因为未知原因造成读取温度数据的指令无法进行,且也未见触发过error这个错误,状态值管脚值16#7000。
重新在Modbus_Comm_load的REQ管脚激活DB2.DBX0.0,通讯轮询可以重新开始,为方便操作,我在控制柜上找了一个报警复位按钮,并在通讯初始化指令Modbus_Comm_load的REQ管脚初再并联这个触发条件,测试重新触发轮询,通讯均可以重新开始轮询过程。我让同事方便的时候,在触摸屏上做一个Modbus rtu通讯轮询的状态显示,如果有发现轮询再次停止,可以通过报警复位按钮,再次触发轮询的功能。
虽然这次未能够找到停止轮询的根本原因,但是,在控制柜复位按钮上新增加了通讯轮询重新启动的功能,可以弥补通讯轮询停止时的故障重新触发,也不失为一种应急的通讯轮询处理方法。