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

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

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

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

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

地址读多了或者读到无效地址就会导致掉线,你可以减少单个指令读取的字数,一个指令读不完就分两个指令来读,且尽量是说明书上的有效地址范围。
[ 此帖被fczxjh在2025-04-15 11:23重新编辑 ]
本帖最近评分记录:
  • 下载积分:+5(13821917697) 热心助人!
  • 下载积分:+5(cccccy) 热心助人!
    哈喽123
    级别: 略有小成
    精华主题: 0
    发帖数量: 137 个
    工控威望: 316 点
    下载积分: 925 分
    在线时间: 24(小时)
    注册时间: 2023-03-02
    最后登录: 2025-05-02
    查看哈喽123的 主题 / 回贴
    2楼  发表于: 16天前
    二楼说的比较恳切,多站的情况能轮询尽量轮询,一个结束再读下一站,这样做的好处避免出现拥堵造成掉站或者通讯异常,还有就是利用国产的网关,可以不需要轮询,直接干他就完了,网关提前把你需要读的数在PLC端以GSD映射出IW/QW/DI/DO出来,像用点位一样怼起来
    li19930121
    级别: 工控侠客
    精华主题: 0
    发帖数量: 892 个
    工控威望: 2255 点
    下载积分: 2035 分
    在线时间: 417(小时)
    注册时间: 2019-02-12
    最后登录: 2025-04-30
    查看li19930121的 主题 / 回贴
    3楼  发表于: 16天前
    这肯定不是程序问题,设备跑了4年没问题,轮询数据出错早就报错而不是4年以后,怀疑是交换机的问题