1.应用的基本信息
1.1基本应用信息描述(您所经历过的现场或案例,描述设备运行的异常情况,语言简要、故障要点突出,现象表达清楚,涉及具体设备的版本信息,网络规模,主要产品列表等)
我在项目中应用的Siemens 1516 PLC V2.6 , 通过socket通信的方式,向上位机发送消息,在100ms时间中断OB30里,向发送缓冲区写入数据,在OB1里检测发送缓冲区是否有数据,如果有数据,将数据加载至TSEND的发送缓冲区,并执行发送命令。遇到的问题:通过上位机的接收记录分析发现,存在漏发消息的情况,并且可以重现;
2.故障的检测和解决
2.1 故障或问题分析(根据故障或问题,进行分析,从而提出潜在的一些解决方案用于解决该问题)
漏消息的原因可能有:
1:写入缓冲的数据过大,消息缓存区被覆盖重写;
2:PLC程序周期过大,执行发送的速度小于写入的速度;
3:PLC设定通信循环负荷的影响;
4:上位机处理延迟;
5:时间中断OB30执行时对主流程OB1中发送指令造成了影响;
2.2故障或问题处理(根据分析各种导致故障的可能性,逐步排查,描述您解决此问题的操作步骤,最终确认原因,排查过程有条理,思路清晰)
根据2.1中分析,逐一分析排查。
测试工具:socket助手;
3.实践联系理论
TSEND指令为异步指令,执行过程可能会延续到夸多个周期的调用。这要求,在发送指令为完成前(未收到Done=1),发送缓存要求保持不变,而时间中断里的写入操作,可能对这部分产生了影响。
4.经验总结
4.1遗留的问题(故障排查后,是否对故障或者解决问题的方式仍然有些疑问或者不理解的地方)
时间中断对异步执行指令的影响,有疑问,因为时间中断中写入的数据并非直接写入TSEND指令对应的buff。
4.2改进方法(解决问题后,根据原因结果,针对故障现象可以采取的预防措施,技术要点等。可以提出更好的解决方式或建议)
遇到异步执行的发送指令时,写入和发送操作放置主循环OB1中执行。