西门子工业支持中心,以专业共创价值!
西门子工业支持中心,以专业共创价值!
1.应用的基本信息
1.1 基本应用信息描述(您所经历过的现场或案例,描述设备运行的异常情况,语言简要、故障要点突出,现象表达清楚,涉及具体设备的版本信息,网络规模,主要产品列表等)
我在项目中应用的Siemens 1217 PLC V4.2 , 通过CM1241模块接收电路板发过来的串口消息,电路板负责将所接的光电信号转成串口消息,电路板5ms向外发一次数据,PLC程序周期5-8ms,遇到的问题:使用过程中,PLC接收到串口发过来的光电信号明显延迟。
2.故障的检测和解决
2.1 故障或问题分析(根据故障或问题,进行分析,从而提出潜在的一些解决方案用于解决该问题)
导致信号延迟的原因可能有
(1):电路板输出和光电信号直接的延迟;
(2):PLC程序周期的影响,周期越长,延迟越大;
(3):PLC设定通信循环负荷的影响;
(4):串口模块缓冲区内接收的帧。
2.2 故障或问题处理(根据分析各种导致故障的可能性,逐步排查,描述您解决此问题的操作步骤,最终确认原因,排查过程有条理,思路清晰)
根据2.1中分析,逐一分析排查。
测试工具:逻辑分析仪;
3.实践联系理论
程序周期短时,系统处理串口消息比较快,延时较小。当程序周期较长时,系统优先处理计算部分,通信部分优先级靠后,导致缓冲区内缓存较多,系统空闲时处理的串口消息并非当前接收的帧,导致实际看到的延迟效果。将缓冲区内接收的帧减少,系统空闲时尽量处理当前实时消息,减少延迟。
4.经验总结
4.1遗留的问题(故障排查后,是否对故障或者解决问题的方式仍然有些疑问或者不理解的地方)
串口缓冲区内接收帧的处理逻辑有疑问,由通信引起的负载参数如何影响程序执行。
4.2 改进方法(解决问题后,根据原因结果,针对故障现象可以采取的预防措施,技术要点等。可以提出更好的解决方式或建议)
遇到类似使用情况时,注意缓冲内接收的帧设置。
翻到就回下。异步串行通讯的成熟应用除广播形式外是不推荐用定时发送或接收的,而要对异步处理用相对合理的队列缓冲,对PLC或者楼主用的MCU的串口定时发送或接收虽然看似没问题,实际会使端口冷冷热热,断断续续甚至偶尔出错。因此要用标志位(正常或错误的标志)或中断组织程序来作为是否发起下次接收或发送的条件。
通讯是一个过程不能采用定时的收发;对通讯接收Buffer的数据采集又是另外一个过程可以采用定时采集二级缓存利用!
PLC串行异步通信,如果是定时通信,通信间隔要足够的大,报文长度,波特率,是否双向通信都未知,5ms的报文发送间隔确定的依据是什么?
贴这么多图,还像模像样的分析,可笑!
请填写推广理由: