#申请原创#
@21小跑堂
前段时间,有一款OC08模块(继电器输出控制模块,一般外接电磁阀)在客户现场使用期间出现了异常问题,由于客户现场使用该模块较多,加上公司正在积极推进“优先解决客户现场问题”的企业文化,于是在AE(现场应用工程师)同事通过远程初步分析问题得出结论后,就安排时间与相关同事坐高铁去客户现场“参观”了几天。 下面作者就通过一份类似异常分析报告的文章向朋友们娓娓道来为什么题目要命名为“现场干扰真的来了:220V电磁阀导致模块工作异常”,不过看到这里,有人应该已经大概猜出来是什么原因导致模块工作异常了,那我们很有可能就曾经经历过同样的现场!
1、问题描述 总线拓扑上面总共连接了六个OC08模块,模块下面连接220V电磁阀,第一次是plc后面的两个模块报警,第二次是耦合器最后两个模块报警,第三次是耦合器最后三个模块报警,报警情况偶发,报错模块不固定,断电重启后可以恢复。
2、问题分析 AE初步分析 通过查看现场的日志,没有发现干扰帧和丢包等异常,模块突然间就连接不上了。从日志上看和原来模块受干扰的日志不一致,和研发讨论过后,此芯片是第一次使用risc-V方案,怀疑是否是该方案运行不稳定导致。 现场分析 现场总线拓扑如下图所示:
OC08现场全部接的是220V电磁阀。 现场引出OC08模块内部控制部分电源和信号,发现还是存在干扰,波形如下: 备注:3V3波形,干扰电压-4.56~15.8V
现场运行2小时左右后出现死机,查看模块并没有接地,现场拆开6台模块后手动加上PE(ProtectiveEarthing,一种保护性地线)并继续运行,单独运行21号模块,仍然会出现死机。21号和22号同时丢link的现象和之前一致。将运行模块由21号改为22号后,继续观察,同时检测21号模块的301寄存器(无效帧),发现301会增加一些值后,22号模块就容易死机。 仍然怀疑是干扰问题,技术支持跑去外面市场上购买了一些磁环后,加上继续运行: (是不是有不少朋友都玩过这种加磁环降干扰的操作,也是一种优化干扰的措施之一)
同时观察电源波形,干扰波形相对之前是有减少的,波形如下: 备注:黄色波形3V3电源,干扰-2.44V-9.76V
但是运行一段时间后仍然会出现死机,分析到该干扰波形和我们平常打EFT(Electrical Fast Transient,电快速瞬变脉冲群,一种抗干扰测试的技术和方法)时受到的干扰波形差不多,只能以结果为导向。 由于起初怀疑是否是第一次使用的risc-V方案运行不稳定导致,后面更新模块的固件程序,去掉risc-V协议栈,改为纯IO模式,但测试后仍然会出现死机,故排除程序稳定性问题。 同时厂里做同步验证分析,发现耦合器电源和OC08电源使用同一个电源时,测试EFT时模块出现的死机和现场情形一致,将耦合器和OC08电源分开测试,则有比较好的抗干扰能力,所以现场说服客户增加一组独立电源供电进行测试,客户接受。但是运行一段时间后22号模块仍然出现死机,至此现场增加的抗干扰措施都无法解决问题,只能说,太难了。 后面去掉磁环后继续测试,发现死机更频繁,而且21号的301的寄存器(无效帧)会一直累加(现场一直运行的是22号模块),怀疑21号模块也受到了干扰。拔掉21号模块接线端子,21号301寄存器(无效帧)的值会减少很多,但是22号模块仍然会死机。经反复验证发现21号端子只要接上220V电磁阀,即使不动作也会存在干扰。至此可以判断OC08对220V交流电的抗干扰能力较弱。 由于继电器模块全部接的是220V交流火线,建议客户更改零线。 客户更改后出现打火,可能现场临时更改有些线路不对。然后建议客户更换DC24V电磁阀,客户全部更换后,22号模块连续运行8小时未出现任何异常。 当然,咱们解决问题还是得从根本上去解决,现场方案只是临时对策,毕竟优先解决客户现场问题;长期方案肯定是从硬件电路上优化抗干扰设计(目前硬件上应该是已经做优化设计了)。
3、问题总结 主攻嵌入式软件开发的我,“有幸”参与这次的现场问题排查和分析,也真真切切见到了现场环境干扰导致的产品工作异常问题。 这就是demo产品或者预研产品与实际产品的内在区别所在; 这就是实际产品为什么既要功能也要性能的原因; 这就是实际产品为什么要做那么多的硬件测试的理由; 这就是软件代码要加各种滤波,缓存和延时等待等处理的缘故。
给大家分享一小段题外话: 遇到问题不要慌,先拍照记录,后面写报告写总结写经验写分享等等,你肯定用得上!
你有亲身经历现场干扰或者使用环境造成的产品工作异常问题以及成功解决干扰的方案吗?欢迎来贴分享。
|