关注、星标嵌入式客栈,加群请添加作者微信

[导读] EMC( Electromagnetic Compatibility) 电磁兼容性对于一个产品而言是一个非常重要的性能指标,一个产品遇到EMC的坑,很多测试很难通过,很多软件同学可能会觉得EMC更多的是硬件攻城师要去应对的难题,与软件没毛关系。

个人认为这是一个不正确的认知,应该说EMC是一个系统性的综合性能指标。它与硬件设计、软件设计、机械结构设计都息息相关。本文就从软件编程的角度来分享一下个人的一些看法。

EMC是什么鬼?

电磁兼容性(EMC)是通过限制无意间产生传播接收电磁能量的电气设备和系统在其电磁环境中正常工作的能力。这些电磁能量可能会导致不必要的影响,例如电磁干扰(EMI:Electromagnetic Interference)甚至物理损坏、 设备功能异常、功能安全、人身财产安全等。

有这么严重吗?举个极端的例子,比如一个病人身上植入了心脏起搏器,他走到一个强干扰的环境中,外界的电磁干扰通过空间电磁波方式耦合进了心脏起搏器,心脏起搏器没扛住,然后就悲剧了。那么这样一个案例,就可以一体两面的来分析,干扰源从何而来?起搏器为啥没扛住?干扰咋进去的呢?.....

EMC研究三类主要问题:

  • 能量来源:通过某种来源产生的电磁能,无论是有意还是无意的,都会释放到环境中。EMC研究了无用发射以及为减少无用发射而可能采取的对策。

  • 抗干扰能力,它是指在遭受有害辐射(称为射频干扰(RFI))的情况下,受干扰的电气设备应对干扰避免或降低发生故障或损坏的能力。

  • 耦合路径:干扰如何进入被干扰设备的机制/途径。

常见的EMC测试有哪些呢?

  • 抗扰度测试:将干扰注入设备,检测设备表现是否正常,比如常规的静电抗扰度测试、脉冲群抗扰度、雷击浪涌,辐射抗扰度等等

  • 传导辐射测试:测试设备对外部释放干扰的水平,设备应控制在一定的水准,否则测试将不通过。比如电源线传导测试、电磁波辐射测试等等,具体测试标准,这里就不一一列举了,有兴趣可以自行搜索查询。

有哪些电磁失效可能?

由于EMC干扰的注入,对于一个电子系统而言,可能会引起哪些功能失效呢?

  • 系统死机无响应:怎么会呢?比如因为干扰原因,软件采集的一个错误的输入值,导致进入了死锁。

  • PC指针失控,软件跑飞。

  • 执行意外指令

  • 错误的地址指向,数据损坏或丢失

  • 子例程执行错误

  • 设备重启和/或外部异常中断

  • I/O表现异常,比如显示屏花屏,按键功能失效,继电器乱动,模数采样噪声增加,数模输出异常

  • .......

哪些软件对策可考虑?来看一看我的一些体会,供大家参考。

看门狗技术

对于系统死机、PC指针失控、软件跑飞等等,可采用看门狗技术进行预防,即使出现了四级,由于看门狗技术,系统仍然能恢复正常,很多EMC测试等级,设备在干扰情况下,只要能恢复正常,都是可以接受的。为什么可以接受,因为这是具有现实应用价值的。具体可以采用什么样的喂狗策略呢?有兴趣的可以阅读之前的推文(点击即可阅读):

  • 单片机编程:如何喂狗的灵魂拷问...

这里特别说下,为什么有序列检测(sequence check)技术的出现了。这也是需求驱动的,需求驱动技术发展

数据冗余技术

数据在EMC场景下遭受磨坏,如果内部没有恢复机制,设备可能出现意想不到的表现。尤其在功能安全性要求很高行业,比如航空、医疗、汽车、工业等环境下。电子设备编程都会采用数据备份策略,对于关键安全功能链的内存数据都会强制要求采用备份数据机制。英文叫duplicate ,比如在IEC61508中就有强制要求。具体怎么实现呢?

将关键功能对应的运行时参数(在内存中的全局变量),都做一个备份。并利用链接绑定技术,将这些参数存储在两片连续的内存区中。在写某个参数时,同时也写备份参数。然后在一个后台中去检查两块区域是否相等,如果不相等则可能发生了致命的错误,可以采集故障报警或者设备重启的策略。

管理未使用的中断

对于单片机/DSP系统而言,如果很多中断异常并未使用,一方面应将中断控制寄存器对应的使能开关关闭,另一方面也应将中断处理接口显式给出,这样相对就比较安全。一个可以考虑的策略如下:

void exception_isr(void)
{/*将异常中断记录或者如有可能显示*/record_exception_isr();/*让程序一直在这里死循环,通过看门狗让系统自动重启*/while(1);
}

在可能的情况下将出现这种异常中断记录并显示,同时进入死循环,利用前面说的看门狗技术让系统重启,或者进入设备安全状态。

谨慎IO策略

为啥干扰会注入,下图就是一个直观的例子,干扰最终会在数字系统中引起输入脉冲,这是异常行为:

输入通道:包括开关量输入,模数采样输入,可以采用滤波策略。比如开关量输入在既有的硬件输入滤波措施的基础上,可以采用诸如多次检测去抖动策略。如

/*描述一下思路*/
#define FILTER_TIMES  6
#define SAMPLE_TIMES  10
#define GET_IO_BIT(X)  PA##X /*硬件体系不同,具体实现修改*/
bool read_io()
{uint8 counter = 0;for(int i=0;i<SAMPLE_TIMES;i++)counter += GET_IO_BIT(0);/*大于门限占比则认为是高电平状态*/if(counter>=FILTER_TIMES)return true;elsereturn false;
}

这里仅仅描述一个思路,具体实现时,还需要考虑多次采样,中间是否需要加延时,你可以看成对开关量调整其采样率,进而做出合理判断。如果只读一次,则在干扰注入时,非常容易读取错误的信息。

对于一个模数采样而言,可以利用数字滤波器技术滤除噪声,消除噪声对系统的影响,在一些资源相对有限的系统,推荐使用一阶数字滤波器或者移动均值滤波器去处理。当然使用时需要合理选择截至频率,防止将真实有用信号频率干掉,导致正常功能也无法使用。

具体可以参考下面的文章,点击即可阅读:

  • 手把手教系列之一阶数字滤波器设计实现(附代码)

  • 手把手教系列之移动平均滤波器C实现

输出通道:比如显示输出,比如LCD显示屏,可以增加刷新率,这样即使在某个瞬态设备被干扰了,由于刷新及时,那么外在显示就不会出现。人眼就可能无法识别,当然这是一个健壮措施。如果遇到这样的问题,还是建议从硬件上尽量将干扰切断或者降低注入的程度。对于电压模数输出,在可能的情况下,可以尝试采用工业4-20mA的标准,去传递信息。4-20mA标准在抗干扰方面性能优异。

掉电检测存储技术

一个电子系统的供电最容易被干扰,因此可以结合硬件设计一个掉电检测及短时板级UPS电路,检测出系统单片机/DSP供电被干扰到可能将要重启时,电路将备用供电切上,同时将关键运行时参数马上存储在非易失介质中(比如EEPROM/FRAM),如果系统真的无法抵抗干扰导致设备重启,在系统上电时,检测重启原因以及数据,如果识别出是由于短时掉电重启的,将介质中数据导入,恢复现场,系统继续执行。

健壮的通信协议设计

电子系统或多或少都需要与其他设备进行通信,那么设计一个健壮的通信协议也是提高抗干扰措施的一个重要手段,比如增加CRC报文完整性检查,增加错误重传机制,通信故障检测机制等等。

总结一下

电磁兼容是系统健壮性的一个重要方面,电磁兼容是一个系统性衡量指标,它绝不是硬件攻城狮一个人的锅,作为软件攻城狮(PCB布局布板、器件选择、电路参数设计、抗干扰器件等等)、机械工程师(比如加强屏蔽、设计吸波材料、结构尺寸、布局布线等等)都应该从各自的角度提出技术应对策略,来提升电子电气系统的工作稳定性,电磁兼容性水平。大家都被这个大锅妥妥的罩着,谁也别想独善其身~~~~

本文就这几个比较常用的技术应对措施,描述了一些方法措施,实际上这方面的对策远不止这些,有兴趣的可以深入研究,只是想表达一个观点:做研发,不要只做一个能用的产品,还要争取做一个稳定可靠的产品。编程也是如此,不要仅仅实现系统功能,还要努力实现一个鲁棒健壮的系统!大家共勉!!

写本文的过程中,找到一份个人觉得比较好的EMC基础PPT《emc design fundamentals》,如有兴趣,关注后台回复EMC可领取。

本文原创分享,如真心喜欢请留言、再看、转发三连支持走一波~~~  哈哈哈,如需学习资料,可关注公众号,后台发送"领取“,即可免费获取海量学习资料。

END

往期精彩推荐,点击即可阅读

▲Linux内核中I2C总线及设备长啥样? 

手把手教系列之梳状滤波器设计实现

手把手教系列之IIR数字滤波器设计实现

提升电磁兼容性的软件策略:EMC不只是硬件工程师的锅相关推荐

  1. 硬件比软件难,那为什么硬件工程师待遇还不如软件?

    大家好,我是张巧龙,今天看知乎,有一个很有意思的问题. 硬件明明比软件更难,国内的硬件技术也不如软件,为什么硬件工程师待遇还不如软件? 在这里分享几个回答,有一定的参考价值,欢迎留言讨论! 01  回 ...

  2. 明明硬件比软件难,但为什么硬件工程师待遇还不如软件?

    前言 大家好,最近在知乎上看到一个很有意思的问题: 硬件明明比软件更难,国内的硬件技术也不如软件,为什么硬件工程师待遇还不如软件? 下面分享几位网友的回答,有一定的参考价值,欢迎大家留言讨论! 01  ...

  3. 假如有一次重来的机会,你选择做一位硬件工程师还是软件工程师?

    点击上方"大鱼机器人",选择"置顶/星标公众号" 福利干货,第一时间送达 来源:半导体那些事儿 昨天晚上,在芯方式的一个微信群里,有位朋友抛出了这个话题,如果回 ...

  4. 上位机软件工程师_硬件工程师吐槽起自己来能有多狠?看看,你就知道了

    俗话说,干一行爱一行 现实是,最爱的行业往往伤人最深 无论外人看起来多么高大上的硬件行业 工程师一句话就能让其原形毕露 吐槽起来,那更是一个稳准狠 上次发布的<硬件工程师崩溃图鉴> 就收到 ...

  5. EZEMC测试软件_emc仿真软件下载-emc仿真软件(测试电磁兼容性) 15.0.1 中文免费版[百度网盘资源] - 河东下载站...

    emc仿真软件是款功能比较强大的电磁兼容性的测试仿真工具:这款软件不管是在国内还是在国外都非常的受到大家的欢迎,而且也是目前业内使用率比较高的仿真工具之一,也是最专业的仿真软件之一:软件的功能方面是相 ...

  6. 【EMC】电磁兼容性相关名词解释、基础知识

    一.名词解释 1.EMC EMC(Electro Magnetic Compatibility)直译是"电磁兼容性".意指设备所产生的电磁能量既不对其它设备产生干扰,也不受其他设备 ...

  7. [激光器原理与应用-8]: 激光器电路的电磁兼容性EMC设计

    目录 第1章 什么是电磁兼容性EMC 1.1 什么是EMC 1.2 电磁兼容设计要求 1.3 电磁干扰源 1.4 电磁干扰传播途径 1.5 电磁兼容的主要研究对象 第2章 提高电磁兼容性的措施 2.1 ...

  8. 电磁兼容性(EMC)概述

    一.电磁兼容性(EMC)是指电子.电气设备或系统在预期的电磁环境中,按设计要求正常工作的能力.主要包括三个方面的含义: (1).电磁干扰(EMI):是指设备在正常运行过程中对所在环境产生的电磁干扰不能 ...

  9. EMC (电磁兼容性)

    电磁兼容性EMC(Electro Magnetic Compatibility),是指设备或系统在其电磁环境中符合要求运行并不对其环境中的任何设备产生无法忍受的电磁干扰的能力.因此,EMC包括两个方面 ...

最新文章

  1. 获取汉字的首字母(转)
  2. eclipse中统计代码行数
  3. java:socket通信
  4. 跨链(1) 设计链间的信任
  5. 广东移动节能绿色数据中心掀起“能耗革命”
  6. shiro注销其他用户_Shiro实现互斥登录,并踢出登录用户功能。
  7. 异常检测时间序列_时间序列的无监督异常检测
  8. 解题报告 keke 的房子
  9. MySQL如何安装离线_mysql8.0.2离线安装配置方法图文教程
  10. 4-1 简单输出整数 (10分)
  11. python 第一章 基础语法
  12. 论文笔记_S2D.08-2019-ICRA-使用非对称标注实时联合语义分割和深度估计
  13. 2020年书法落款_书法落款时间查询表整理,太赞了
  14. CRC校验(模型、手算、程序编写)
  15. CPU硅脂需要换吗?
  16. 遇到黑客攻击遭遇勒索保护费怎么办?黑客最常见的攻击手段
  17. 基于图像的三维重建研究
  18. jsvmp-某乎_x-zes-96参数算法还原(手把手教学)
  19. 如何使用iAd在应用程序中展示Banner广告
  20. iptables 端口转发

热门文章

  1. 转载:ELK filebeat原生处理日志时间
  2. java 中有几种类型的流?JDK 为每种类型的流提供了一些抽象类以供继承, 请说出他们分别是哪些类?
  3. Flex Air 实现桌面尺子(Ruler)工具
  4. 酷比魔方i7手写板,Ubuntu 18.04,RTL8723BU wifi驱动安装
  5. MHDD工具使用简写
  6. Android KK(4.4) 以太网和DHCP启动过程介绍
  7. 如何做一个听话的 “输入框”--摘抄
  8. 【高级持续性威胁跟踪】红队视角看Sunburst后门中的TTPs
  9. 关于Vite 客户端代码不支持node内置模块path的处理
  10. 惠普服务器风扇为什么有两种型号,HP DL380 G6风扇满速原因