可能出现通信挤兑的情况,就是同时有通信指令在进行,时间长或者次数多了可能会宕机。
建议你优化下轮询程序,比如每条指令做好充足的时间间隔,如果有站掉线,时间会延长。把S7、TCP等同一网口的通信指令进行轮询,避开同时触发。
我看你DONE\ERROR并没有使用。实际官方的例程是有使用的。
当REQ触发,DONE或者ERROR触发后,REQ复位,下一个站REQ触发,DONE或者ERROR触发后,下一个站REQ触发......
其次,单条指令的最大字数好像是128个,而你100个字也算多了,modscan测试少有读100个地址稳定不掉线的情况。一般二三十个是可以稳定的。
地址读多了或者读到无效地址就会导致掉线,你可以减少单个指令读取的字数,一个指令读不完就分两个指令来读,且尽量是说明书上的有效地址范围。
[ 此帖被fczxjh在2025-04-15 11:23重新编辑 ]