项目背景描述:
一台1511与汇川AM400通讯,AM400作为服务器,1511通过modbus tcp client指令连接汇川。一共读、写两条指令做轮询,调试期间通讯正常。
现将两侧或单边设备断电重启,modbus tcp就无法建立连接了,client背景块里的connected状态一直为OFF,第一个client指令的error状态一直为ON,出错代码16#80A1。error状态强制复位不掉,会一直保持为1。
尝试解决方法:
1、检测通讯超时,把req断开,disconnect置1,断开连接,2秒后重新连接。无效。
2、取connected状态为1时启动modbus轮询,若其为0则不触发req。无效。
3、多次断电重启。无效。
4、不断电,将PLC停止后再次运行。无效。
目前如何恢复通讯:
将client指令connect(TCON_IP_v4类型)、error标志位所在的数据块改一下内部名称下载,下载时会提示初始化,初始化之后通讯可以恢复。
问题是这个数据块是非保持的,按说下载数据块跟断电重启应该没什么不同。
请各位指导一下哪个步骤可能存在问题??相同的程序用在多个项目中,其他与机器人、仪表等通讯都没出现过这种现象,真不知道如何解决了。