13821917697
承接电气自动化项目、电气接线图设计、IO点表、电气元器件选型
级别: 工控侠客
精华主题: 0
发帖数量: 774 个
工控威望: 3193 点
下载积分: 13747 分
在线时间: 1164(小时)
注册时间: 2019-12-26
最后登录: 2025-04-16
查看13821917697的 主题 / 回贴
楼主  发表于: 前天
图片:
图片:
已经正常运行4年的一个项目,最近出现了问题。1200做客户端,与6个智能网关做modbus tcp通讯,读取数据,每个网关独立IP,ping都正常。
近期运行大概每10天左右,就会出现连接中断的情况,PLC断电重启则能恢复正常。出现故障的时候报错误代码80C8,但是看了帮助没怎么看懂。
有哪位朋友遇到过这种问题吗?或者有什么办法可以 使程序自动重启。
fczxjh
级别: 家园常客
精华主题: 0
发帖数量: 388 个
工控威望: 793 点
下载积分: 2655 分
在线时间: 187(小时)
注册时间: 2019-07-15
最后登录: 2025-04-16
查看fczxjh的 主题 / 回贴
1楼  发表于: 前天
可能出现通信挤兑的情况,就是同时有通信指令在进行,时间长或者次数多了可能会宕机。

建议你优化下轮询程序,比如每条指令做好充足的时间间隔,如果有站掉线,时间会延长。把S7、TCP等同一网口的通信指令进行轮询,避开同时触发。

我看你DONE\ERROR并没有使用。实际官方的例程是有使用的。

当REQ触发,DONE或者ERROR触发后,REQ复位,下一个站REQ触发,DONE或者ERROR触发后,下一个站REQ触发......

其次,单条指令的最大字数好像是128个,而你100个字也算多了,modscan测试少有读100个地址稳定不掉线的情况。一般二三十个是可以稳定的。

地址读多了或者读到无效地址就会导致掉线,你可以减少单个指令读取的字数,一个指令读不完就分两个指令来读,且尽量是说明书上的有效地址范围。
[ 此帖被fczxjh在2025-04-15 11:23重新编辑 ]
本帖最近评分记录:
  • 下载积分:+5(cccccy) 热心助人!