电工学习网

 找回密码
 立即注册
查看: 1817|回复: 0
打印 上一主题 下一主题

西门子PLC通信之Socket发送漏发消息的原因分析

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-28 11:32:02 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
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助手;         
                     西门子PLC通信之Socket发送漏发消息的原因分析
3.实践联系理论
       TSEND指令为异步指令,执行过程可能会延续到夸多个周期的调用。这要求,在发送指令为完成前(未收到Done=1),发送缓存要求保持不变,而时间中断里的写入操作,可能对这部分产生了影响。
4.经验总结
4.1遗留的问题(故障排查后,是否对故障或者解决问题的方式仍然有些疑问或者不理解的地方)
     时间中断对异步执行指令的影响,有疑问,因为时间中断中写入的数据并非直接写入TSEND指令对应的buff。
4.2改进方法(解决问题后,根据原因结果,针对故障现象可以采取的预防措施,技术要点等。可以提出更好的解决方式或建议)
     遇到异步执行的发送指令时,写入和发送操作放置主循环OB1中执行。
来源:西门子工业技术论坛

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

电工学习网 ( )

GMT+8, 2024-4-24 17:09

Powered by © 2011-2022 www.diangon.com 版权所有 免责声明 不良信息举报

技术驱动未来! 电工学习网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

快速回复 返回顶部 返回列表