最近在项目上遇到一个让我一直搞不明白的事。项目规模不大,出问题的点是用1200的485模块与3块电表进行通信,此项目不是我做的,项目正常运行了也有一年多了。
最近发现modbus的数据不能刷新了,现场操作人员将PLC重启后数据又可以刷新了,但维持不了多久又不刷新了,最多一两个小时就出现。
我被要求去解决问题,首先我看了程序发现这个modbus程序并没有使用轮询,而且使用时间作为条件的,我把数据块中MODBUS数据全部删除发现数据确实上不了,于是我就重启PLC,发现3块电表中的1号电表掉线了,于是我就使用串口调试工具去测试。
在PLC侧测试发现1号站确实掉线了,于是我就去电表侧测试。发现如果是单块电表测试都正常,但3块电表同时测试发现1号站又掉线了,我把3号电表的线拆除1,2号电表数据就可以正常了,只要3号电表的线接上1号就掉线。
后来我把1号电表的站号改成了5号,发现数据就可以正常运行了,接到PLC中,把PLC程序修改了一下发现也可以正常运行了。
虽然说故障是解决了,但我又多了两个疑惑的地方:
1。为什么使用定时轮询的方式又一个站掉线了会导致全部数据上不来??
2.为啥会出现我测试的那种情况,总共就3个设备,站号分别是1,2,3,为啥我3个站同时访问的时候1号会掉线,又为啥我把1号的站号改成了5就可以正常运行了??
不知道有没有大师可以给我解释一下。