前段时间遇到了wincc用户归档重复这个问题,不过我的程序是在ob35里面间隔100ms执行的,我1500PLC侧自己加了个逐条自加的ID,wincc选择了该ID唯一发现重复的两条大都是相邻的ID,证明wincc没问题,问题出在PLC侧。怀疑wincc与plc的数据交换是不是立马进行的,而不是在程序循环的开头或结尾交互,于是将wincc与plc的job交互增加了一个副本job,放在程序的开头更新副本job,后面再使用副本job,确保wincc对plc 变量job的修改能执行完整的周期,但重复现象仍旧存在。于是将代码给豆包和deepseek分析,但都没有给出合理的bug原因,就这样苦想了几日,突然想到如果plc给job写6触发作业,但在下一轮程序执行之前wincc就将job写为0了,那下一轮程序就无法检测到job由6到0的跳变,plc程序不会移栈该条记录,反而因为堆栈里面还有记录会再次触发该条记录,于是我将ob35的循环间隔时间设置为10秒,模拟触发一条记录,结果故障复现了,该条记录不停的重复。但只要在plc程序给job写6的语句后面增加一条给job上周期变量写6即可完美解决该故障