单片机在嵌入式系统应用中,抗干扰性能是系统可靠性的重要指标,抗干扰设计是单片机系统研制中不可忽视的一个重要内容。本文根据笔者在实际工作中的体会,就单片机在嵌入式系统应用中的抗干扰问题进行探讨,并给出了排错设计、容错设计的一些方法和措施。
随着科学技术的迅速发展,单片机在各个领域中的应用越来越广泛。在众多的应用系统中共同面临的一个问题,就是它在应用系统中的可靠性,这就要求我们在设计时应根据现场具体情况,在硬件设计、线路板设计、软件设计等方面来采取相应的抗干扰措施。
一、抗电源干扰的措施
大部分单片机嵌入式系统都采用市电电源供电,在应用系统中一个很重要的干扰就来自电源。市电的各种干扰,如雷电、大容量感性负载的起停等,都会造成电源瞬间欠压、过载,产生浪涌、下陷、尖峰等干扰,但我们可采取如下有效抗干扰措施。
1.用压敏电阻抑制尖峰、浪涌
压敏电阻两端的电压如超过其限定值时,电流会迅速增大,呈短路状态,利用这一特点,可以用它吸收瞬间的尖峰、浪涌电压。压敏电阻并联在电源变压器的初、次级,加入压敏电阻后,电源干扰造成单片机程序失控的可能性减小。压敏电压的计算公式为:VIMA=1.56×32×V~(V~:交流电压有效值)
2.滤波器抑制高频干扰
市电中含有多种高次谐波,它们很容易经电源进入单片机系统,另外一些射频发射、电磁波等也会由电源线感应反馈入单片机系统造成干扰,因此在电源电路中加入低通滤波电路让50 Hz市电基波通过,抑制掉高频信号。此外在电源变压器的初次级之间均用屏蔽层隔离,减少其分布电容,提高抗共模干扰的能力。
图1中列出了几种不同形式的滤波电路。
二、印刷电路板的抗干扰设计
印刷电路板是单片机应用系统中器件、信号、电源线的高密度集合体,印刷电路板设计的好坏对抗干扰能力的影响很大。
1.电源线、地线的设计
在单片机应用系统,接地是抑制干扰的重要方法。线路板上既有逻辑电路,又有模拟电路,两者的地线要分别与电源端地线相连。低频电路的地线尽量采用单点并联接地,高频电路宜采用多点串联接地。接地线如果很细,接地电位则随电流的变化而变化,使系统抗噪声性能变坏,因此应加粗接地线条,使它能通过3倍于印刷电路板上的允许电流。
电源线与地线应尽量靠近走线以减少所包围的环路面积,从而减少外界磁场对环路切割而产生的电场干扰,同时也减少环路对外电磁辐射。电源线、地线的走向与数据传递方向一致也有助于增强抗噪声能力。
2.一些特殊措施
在印刷电路板的各个关键部位配置去耦电容应视为印刷电路板设计的一项常规做法。原则上每个集成电路芯片都应安置一个0.01μF的瓷片电容排除射频耦合干扰,电容引线不能太长,应紧靠芯片的电源线、地线。如印刷电路空隙小装不下时,可每4~10个芯片安置一个1~10μF的限噪声用的电容钽电容。线路板布局时,应使单片机的振荡晶体尽量放在单片机两引脚近端。
三、程序运行失常的对策
前面所介绍的抗干扰措施仅是尽量减少干扰,提高系统运行的可靠性,但在恶劣的工作环境下程序长期运行仍可能失控:PC值指向 *** 作数,将 *** 作数作为指令码执行;PC值超出应用程序区,将非程序区中的随机数作为指令码运行。不管何种情况,都会造成程序的非正常运行或死机。看门狗就是在程序跑飞或死机时,对系统进行重新置位或复位,使系统恢复正常运行的一种专用电路。常用的看门狗有2种:软件狗和硬件狗。
1.硬件看门狗
所谓硬件狗,就是一个能发出“复位”信号的计数器或定时器电路。图2是一个硬件看门狗电路。其工作原理是:P1.0作为看门狗的“喂狗”信号定时给出一脉冲,设其脉冲间隔为△t<tw<2△t,当程序正常运行时,每隔△t输出一脉冲触发CC4098单稳电路,使始终为低电平,若程序一旦出现异常,不能在tw时间内送出一“喂狗”脉冲,产生一正脉冲,使单片机系统复位,使其能重新正常运行。
现在已有许多更先进的集电源监视和“看门狗”于一身的新型芯片,如MAX705、MAX706、MAX813L等,有的还具备掉电检测、备用电池自动切换功能。
2.软件看门狗
软件狗实际上就是通常所说的软件陷井。它是在程序存储器的空余地址中全部填上1条跳转指令,一旦程序跑飞,只要程序指针指向这些地址,便立即被强行跳转至程序开头或其他指定地址处,从而使程序继续正常运行。
四、软件中的抗干扰措施
提高系统可靠性的方法有排错设计和容错设计。前面提到的排错设计并不能将干扰完全解决。而容错就是允许系统发生故障,借助冗余技术使其自动抵消,在故障存在的情况下也能使系统正常运行。下面介绍一下常用的几种软件容错方法。
1.数据采集误差的软件对策
对于实时数据采集系统,为了消除传感通器中的干扰信号,在硬件上常采取模拟滤波器对信号实现频率滤波,也可以用CPU的运算控制功能也可以实现频率滤波,这就是数字滤波(软件滤波)。对一点数据连续采样多次,计算其平均值,以平均值作为点的采样结果,这样可以减少系统的随机干扰对采集结果的影响。根据干扰造成采样数据偏大或偏小的情况,对一个采样点连续采集多个信号,对采样值进行比较,取中值作为该点的采集结果。还可利用软件完成RC低通滤波器的算法,实现用软件方法代替硬件RC滤波器。一阶递推数字滤波公式为
式中:Q为数字滤波器时间常数;Yn为第n次采样时的滤波输出;Xn为第n次采样时的滤波输入。
2.时间冗余
在程序的适当位置设置若干检查点,在每一个检查点保存程序在该检查点之前正确运行而得到的全部信息及标志。如果故障是暂时性的,则程序卷回到上一检查点开始重新执行,这样可以完全消除错误,其框图如图3所示。但它只能检出而不能消除永久性故障,用时间换取可靠性。
3.N版本程序设计
N版本程序设计,是为某一个确定功能而独立编制的几个程序同时运行,其结果是通过这些独立程序的运行结果经多数表决而得到的,其结构框图如图4所示。N版本程序设计中,特别强调N版本,因为如果各程序采用了相同的结构、相同的算法,就有可能产生相同的错误而使多数表决失败。
N版本程序设计中包含了程序设计上的冗余,用效率换取可靠性,能容忍设计错误的能力,还能屏蔽某些类型的暂时性硬件故障。
数据的冗余保护也是N版本程序设计思想的应用。将重要数据同时存入几个不相邻的存储单元,由于不相邻存储单元因干扰而被同时改写的可能性很小,即使有一两个存储单元出错也能得到正确的数据。
4.弃权规则
就是当程序运行或继续运行的某些必要条件未能具备时,放弃对这些条件的要求,不是产生等待、中断、出错或停机,而是采用跳过、转移、N-1、默认等方式保证程序继续运行,这些方法只适用于屏蔽暂时故障,所以要求同时产生报警输出,以便确定是否需要人为干预来消除永久故障。弃权规则首先要不影响程序的正确性和适应用性。
(1)跳过
在不影响控制系统正常运行的前提下,跳过条件不具备而导致故障的模块向下执行,这是软件失效运行的形式之一。所谓软件失效运行就是在故障发生时先把故障模块从系统中断开,再对系统的其余模块进行重构,使系统能继续运行,但功能降低,即降级运行。可靠性的提高是以某些功能的损失为代价的。
(2)N-1方式
N-1方式是基于控制程序的循环执行特性,即采用上一次循环(第N-1次)的数据代替本次循环(第N次)所需的却未出现或未具备的数据。这种方法特别适用于缓变的被控对象。例如某次控制输出被判断为不合理,则利用上次循环的输出来代替它。
(3)默认
默认也是弃权规则形式之一,与跳过不同的是采用预先置入的合理条件代替未具备的条件,即默认条件存在。例如将非法输入的 *** 作指令默认的无输入,继续原 *** 作。
总之,弃权规则的目的是使工作在实时方式的控制系统保证连续运行,以确保被控系统长期稳定工作,虽然系统的功能有可能降低。
控制系统常用的软件容错方法很多,还有非正常性规则、失效保险设计等,在此就不不一一介绍。排错设计和容错设计的方法也很多,要根据现场情况选择适当的方法。以上介绍的抗干扰措施是在长期实践中摸索出的一些经验,在此提出仅供参考。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)