一、引言
干扰问题是微机控制系统中十分普遍、复杂的问题,它是影响系统可靠性的主要因素之一。干扰对微机控制系统的影响主要表现为影响系统程序的正常执行、影响采集数据的精度,使系统可靠性降低、使外设发生错误动作甚至产生严重后果。
二、干扰的来源及影响
影响单片机系统可靠安全运行的主要因素主要来自系统内部和外部的各种电气干扰,并受系统结构设计、元器件选择、安装、制造工艺影响这些都构成单片机系统的干扰因素。
2.1 形成干扰的基本因素
形成干扰的基本要素有三个:
(1)干扰源。指产生干扰的元件、设备或信号,用数学语言描述如下:du/dt,di/dt大的地方就是干扰源。如:雷电、继电器、可控硅、电机、高频时钟等都可能成为干扰源。
(2)传播路径。指干扰从干扰源传播到敏感器件的通路或媒介。典型的干扰传播路径是通过导线的传导和空间的辐射。
(3)敏感器件。指容易被干扰的对象。如:A/D、D/A变换器,单片机,数字IC,弱信号放大器等。
2.2 干扰产生的后果
各种干扰一旦侵入单片机应用系统将使系统无法正常运行甚至造成重大损失。干扰产生的后果归纳起来可概括为如下几个方面:
1.数据采集误差的加大
当干扰侵入单片机系统的前向通道叠加在信号上会使数据采集误差增大特别是前向通道的传感器接口是小电压信号输入时此现象会更加严重。
2.程序运行失常
程序运行失常又可分为如下几种情况:
(1)控制状态失灵:单片机输出的控制信号通常依赖于某些条件的状态输入信号和对这些信号的逻辑处理结果。若这些输入的状态信号受到干扰引入虚假状态信息将导致输出误差加大造成逻辑状态改变最终导致控制失常。
(2)死机:外界的干扰有时导致机器频繁复位而影响程序的正常运行。若外界干扰导致单片机程序计数器PC值的改变破坏程序正常运行。由于受干扰后的PC值是随机的程序将执行一系列毫无意义的指令最后进入“死循环”这将使输出严重混乱或死机。
3.系统被控对象误操作
由于干扰的影响使单片机内部程序指针错乱指向了其它地方运行了错误的程序;RAM中的某些数据被冲乱或者特殊寄存器的值被改变使程序计算结果错误;或中断误触发使系统进行错误的中断处理都有可能使单片机对系统被控对象产生误操作。
4.被控对象状态不稳定
锁存电路与被控对象间的线路(包括驱动电路)受干扰从而造成被控对象状态不稳定。
5.定时不准
当干扰使单片机内部程序指针错乱使中断程序运行超出定时时间以及RAM中计时数据被冲乱使程序计算出错误的结果等都将影响单片机定时的准确性。
6.数据发生变化
在单片机应用系统中由于外部RAM是可读写的在干扰的侵入下RAM中数据有可能发生改变虽然ROM能避免干扰破坏但单片机片内RAM以及片内各种特殊功能寄存器等状态都有可能受干扰而变化甚至EEROM中的数据也可能误读写使程序计算出错误的结果。
单片机抗干扰设计必须从软件、硬件以及结构设计等方面进行全面的考虑。单片机系统抗干扰设计的根本是硬件系统的可靠性设计,而软件系统的可靠性设计起到抑制外来干扰的作用在进行单片机系统设计时应做到在提高硬件系统抗干扰能力的同时,采用适当的软件抗干扰措施。软件抗干扰设计因其设计灵活节省硬件资源、可靠性好越来越受到重视通过软件系统的可靠性设计可达到最大限度地降低干扰对系统工作的影响。确保单片机能及时发现因干扰导致程序出现的错误并使系统恢复到正常工作状态或及时报警的目的。
三、硬件抗干扰
干扰的来源可笼统地概括为:电源干扰、口线干扰和空间干扰。其相应的抗干扰措施分别为:
(1)电源隔离
单片机工作电路的电源要采取独立的供电回路其电源变压器同其他大功率电路的电源变压器要分别使用。单片机电源电路的地线与其他大功率电路的地线不相连接。在两电路的电气连接处可使用光电耦合器、光可控硅等器件加以隔离。
(2)口线隔离
单片机的输入、输出口线特别是参与控制大功率电路的口线在其与外电路的电气连接处都要通过光电耦合器进行隔离。
(3)空间隔离
单片机控制回路与其他大功率回路之间能够分开放置的尽量不要放置在同一空间中如果二者必须在同一空间中的要尽量加大二者的电气距离尽可能减小空间的电磁感应耦合和辐射耦合或者将单片机控制电路放在由金属网或金属盒构成的屏蔽体内。此外还有其他一些辅助性抗干扰措施如:晶振的外壳接地、中央处理器的电源端及各口线附近对地加去耦电容等。
(4)去耦电容
每个集成电路的电源、地之间应配置一个去耦电容它可以滤掉来自电源的高频噪声。作为储能元件它吸收或提供该集成电路内部三极管导通、截止引起的电流变化(di/dt)从而降低系统噪声。要选高频特性好的独石电容或瓷片电容作去耦电容。每块印制电路板电源引入的地方要安放一只大容量的储能电容。由于电解电容的缠绕式结构其分布电感较大对滤除高频干扰信号几乎不起作用。使用时要与去耦电容成对使用。钽电容则比电解电容效果更好。
(5)在继电器接点两端并接火花抑制电路(一般是RC串联电路,电阻一般选几K到几十K,电容选0.01uF),减小电火花影响。
(6)布线时避免90度折线,减少高频噪声发射。
四、软件抗干扰
软件抗干扰是属于单片机系统自身防御行为采用软件抗干扰的前提条件是:系统中抗干扰软件不会因干扰而损坏。在单片机应用系统中由于程序及一些重要常数都放置在ROM中这就为软件抗干扰创造了良好的前提条件。
4.1 指令冗余
在MCS-51系列单片机指令结构中,操作码是从第一字节开始放置的,它用来指定机器完成某种操作,操作码后跟操作数,用来指明操作码所要操作的元素。在受强干扰时,单片机的内部程序计数器—PC值会被改变,使得CPU误将程序从正确位置跳到另一个区域内或使程序中操作数被当作操作码执行,造成混乱,为了解决这一问题,我们在程序中有意在双字节、三字节指令之后插入NOP指令,该指令为一单字节指令,它对CPU的工作状态无任何影响,但可以使失控的程序在遇到该指令后,PC内容得到调整,使接下来的指令能正确执行。对程序流向起决定作用的指令和对系统工作状态起重要作用的指令在其之前插入NOP指令保证这些指令的正确执行。采用了这一方法后,系统可靠性大幅度提高。
4.2 软件陷阱
当程序因为干扰发生乱飞进入非程序区可在非程序区设置拦截程序使程序进入软件陷阱然后使程序返回初始状态。所谓软件陷阱,就是使用引导指令,强行将捕获的程序引向一个指定的地址,在那里安排一段专门对程序出错进行处理的程序,假设这段程序入口标号为ERR,则软件陷阱即为一条LJMP ERR指令,为加强捕捉效果,在其前面加两条NOP指令,即
NOP
NOP
LJMP ERR
软件陷阱安排在程序中的如下位置:
(1)未使用的ROM空间
对于未编程的大片ROM空间,一般均维持原状(0FFH),0FFH对于MCS 51系列指令系统而言, 是一条单字节指令mov R7,A。程序有可能受干扰弹飞到这一区域,因此有必要在这些区域中每隔一段设置一个陷阱,捕捉弹飞的程序。
(2)未使用的中断向量区。
当干扰将未使用的中断开放,并激活这些中断时,就会产生混乱,在这些地方布上陷阱,就能及时捕捉到错误中断(一般最好在程序中将未使用中断定义为低级中断,这便于WATCHDOG拦截)。
(3)中断服务程序区
设用户主程序运行区间为S1-S2并设定时器产生20ms定时中断。当程序乱飞落入S1-S2外并发生了定时中断后可在中断服务程序中判断中断断点地址Sx若Sx<ADD1或Sx>ADD2说明发生了程序乱飞则应使程序返回到复位地址0000H将乱飞程序拉到正确轨道。
(4)运行程序区
将陷阱指令组分散放置在用户程序各模块之间的空余单元里。在正常程序中不执行这些指令。乱飞程序一旦落入此区便迅速拉到正确轨道。
4.3 程序运行监视系统(watchdog)
程序序进行过程中,有时由于某种噪音干扰的影响会出现死循环现象。通常采用“看门狗”技术程序脱离死循环。“看门狗”技术是通过不断检测程序循环运行时间若发现程序循环时间超过最大循环时间,则认为系统陷入死循环需进行出错处理。其具体实现是在单片机中设置一个定时器,定时器发出中断信号,中断信号一经发出就表示程序已经超时运行。在用户程序中及时安排清除定时器的计时数据。故程序正常运行时不可能产生超时中断信号反之若出现死循环则会产生超时中断信号单片机收到这个中断信号后。进人中断处理程序其强迫单片机复位重新执行程序。
4.4 系统复位
当系统收到干扰后须及时使现场中残留信息自动恢复到正常状态即系统复位。硬件复位是使单片机重新恢复正常工作状态的一个简单有效的方法。上电复位、人工复位都属于硬件复位。硬件复位后CPU被重新初始化所有被激 活的中断标志都被清除程序从0000H地址重新开始执行。用软件抗干扰措施来使系统恢复到正常状态是对系统的当前状态进行修复和有选择的部分初始化这种操作又可称为“热启动”。热启动时首先要对系统进行软件复位也就是执行一系列指令来使各专用寄存器达到与硬件复位时同样的状态这里需要注意的是还要清除中断激活标志。
五、总结
目前单片机在各个领域中的应用越来越广泛而且多在各种恶劣环境中应用对其可靠性要求也越来越高因此必须采用抗干扰措施否则难以稳定、可靠运行。软件的抗干扰处理由于不需要改变系统的硬件结构因而操作实现起来简便易行。但是对于单纯的软减抗干扰处理其系统稳定性并不能得到切实有效的保障。在工程实践中通常都是几种抗干扰技术并用互为补充完善来取得较好的抗干扰效果。从根本上来说硬件抗干扰是主动的而软件是抗干扰是被动的。细致周到地分析干扰源硬件与软件抗干扰技术相结合完善系统监控程序才能设计出相对稳定可靠的单片机系统。