一次新建S7-1214C Modbus rtu通讯故障的排查
问题大概半个月前,我帮公司同事排除了一起因为Modbus rtu通讯从站通讯参数设置错误,引起轮询停止的通讯故障。通过现场排查的步骤,同事基本掌握了该通讯故障的排除方法,并开始增加了工作的兴趣。前几天,同事根据我现场讲解的要点,自己创建了一个通讯测试程序,结果通讯程序存在只能写而无法读取到从站数据的问题,让我来诊断分析故障的所在。一拿到程序,我首先从硬件CB1241的硬件地址能够匹配Modbus_Comm_Load指令各管脚与从站的通讯参数,是否有不一致的情况,硬件标识符合通讯指令,通讯参数均与从站匹配。且能够写也基本说明了外部硬件的连接及通讯初始化Modbus_Comm_Load指令被正确执行。
我重新对Modbus_Comm_Load/Modbus_Master 指令的外部管脚所调用的变量地址,指令的背景数据块进行的检查确认,未发现实质性的问题。也试了试删除重建,结果仍然是只能写而无法读的问题。
到自己的电脑上,重新创建测试项目,读/写均正常,自此,让我想起了portal的版本与实际plc版本的兼容性问题了,前面排障的铺垫就是为了证明这个论点。
同事的电脑安装有portal版本是V15/V16/V17这3个版本,而同事测试环境是V17中创建的,V17创建的plc版本他选择了V4.5,而实际的plc版本是1AG40,V4.2的版本。将版本调整为V4.2重新下载设备试图后,读/写正常。由于整个排障过程在同事的电脑上,我没有截取故障时的图片,无法读取时,Modbus_Master 管脚status = 8281报警。
小结:Modbus rtu通讯只能写,不能读的故障原因。
1)软件编程cpu版本,必须与实际连接的cpu版本一致;
2)当报警出现时,首先需要对报警信息进行解读,从信息中找可能的原因;
3)尽量在调用指令时,用自己熟悉的方式,在排障过程中,我也给同事的编程方式绕了一下排障思路,熟悉就是稳定/可靠的;
4)初始应用,建议先编写一个简单的通讯指令,等通讯正常了再展开编写轮询方式;
5)建议用自定义的变量,按规律和顺序调用变量,对初次使用的用户,可以避免通讯错误。