单片机应用系统中的软件抗干扰技术
2010-12-26赵佩华
赵佩华
(常州信息职业技术学院 江苏常州 213164)
单片机应用系统中的软件抗干扰技术
赵佩华
(常州信息职业技术学院 江苏常州 213164)
单片机应用系统的可靠性是由多种因素决定的,其中系统的抗干扰性能的好坏是影响系统可靠性的重要因素。因此,提高应用系统的可靠性与安全性成为人们日益关心的问题。单片机抗干扰技术的研究,就是在这种需求下产生,并从软件角度探讨几种抗干扰的方法。
单片机;应用系统;抗干扰;软件技术
TP 368.1
B
1672-2434(2010)01-0050-04
0 引言
近年来,单片机应用系统体积小、价格低、功能灵活、使用方便,在工业自动化、生产过程控制、智能化仪表等领域的应用越来越深入和广泛,能有效提高生产效率,改善工作条件,大大提高控制质量与经济效益。然而,由于系统在工业现场使用时,周围众多的干扰源不仅对其输入、输出产生巨大的影响,而且时常破坏内部程序计数器PC的状态,使程序不能正常运行,导致控制失灵。在单片机应用系统中,噪声干扰会使测量指示产生误差或误操作。因此,为使应用系统正常工作,必须研究抗干扰技术。而软件抗干扰是指在单片机构成的系统中建立抗干扰软件子系统,当外界的干扰引起整个系统瘫痪或不能正常运行时,系统中抗干扰软件子系统就会引导系统程序,使其重新进入正常的运行状态。研究抗干扰技术,对保证单片机应用系统稳定及可靠的工作是非常必要的。
1 干扰的形成
噪声是指电路或系统中出现的非期望的电信号,噪声对电路或系统产生的不良影响称之为干扰。电路或系统中出现的噪声干扰,有的来源于系统内部,有的来源于系统外部。形成噪声干扰必须具备3个要素,即噪声源、对噪声敏感的接收电路及接收电路间的耦合通道。
1.1 内部噪声源
一是电路元器件产生的固有噪声。电路或系统内部一般都包含有电阻、晶体管、运算放大器等元器件,这些元器件都会产生噪声。例如电阻的热噪声、晶体管闪烁噪声、散粒噪声等;二是感性负载切换时产生的噪声干扰。在控制系统中通常包含许多感性负载,如交直流继电器、接触器、电磁铁和电机等。它们都具有较大的自感。当切换这些设备时,由于电磁感应的作用,线圈两端会出现很高的瞬态电压,由此会带来一系列的干扰问题;第三是接触噪声。接触噪声是由于两种材料之间的不完全接触而引起导电率起伏所产生的噪声。例如,晶体管焊接处接触不良、继电器触点之间、插头与插座之间、电位器滑臂与电阻丝之间的不良接触都会产生接触噪声。
1.2 外部噪声源
第一是天体和天电干扰。天体干扰是由太阳和其他恒星辐射电磁波所产生的干扰。天电干扰是由雷电、大气的电离作用、火山爆发及地震等自然现象所产生的电磁波和空间电位变化所引起的干扰;第二是放电干扰。电动机的电刷和整流子间的周期性瞬间放电,电焊、电火花加工机床、电气开关设备中的开关通断,电气机车和电车导线与电刷间的放电等;第三是射频干扰。电视广播、雷达及无线电收发机等,对邻近电子设备的干扰。第四是工频干扰。大功率输、配电线与邻近的系统的传输线通过耦合产生的干扰。
2 软件抗干扰的特点
软件抗干扰是属于单片机系统的自身防御行为,采用软件抗干扰最根本的前提条件是:系统中抗干扰软件不会因干扰而损坏。在单片机应用系统中,由于程序及一些重要常数都放置在ROM中,这就为软件抗干扰创造了良好的前提条件。
2.1 软件抗干扰的主要途径
采取软件的办法抑制叠加在模拟输入信号上噪声对数据采集结果的影响,如数字滤波技术;由于干扰而使运行程序发生混乱,导致程序乱飞或陷入死循环时,采取使程序纳入正轨的措施,如软件冗余、软件陷阱、“看门狗”技术。这些方法可以用软件的实现,也可以采用软件硬件相结合的方法实现。
2.2 软件抗干扰的主要特点
首先,程序区不会受干扰侵害。系统的程序及重要常数不会因干扰侵入而变化;其次,RAM区中的重要数据不被破坏,或虽然被破坏但可以重新建立。通过重新建立的数据,系统的重新运行不会出现不可允许的状态;第三,在干扰作用下,微机系统硬件部分不会受到任何损坏,或易损坏部分设置有监测状态可供查询。
3 软件抗干扰技术
3.1 软件冗余技术
1)指令冗余命令。MCS-51所有指令长度均不超过3个字节,且多数为单字节指令。指令由操作码和操作数两部分组成,操作码指明CPU完成什么样的操作(如传送、算术计算、转移等),操作数是操作码的操作对象(如立即数、寄存器、存储器等)。单字节指令仅有操作码,隐含操作数,双字节指令的第1个字节是操作码,第2个字节是操作数,三字节指令的第1个字节是操作码,后2个字节为操作数。一旦PC因干扰而出现错误,程序便脱离正常轨道,出现“乱飞”,出现操作数数值改变以及将操作数当作操作码的错误。当程序“乱飞”到某个单字节指令上时,便自己纳入正轨;当“乱飞”到某个双字节指令上时,若恰恰在取指令时刻落到其操作数上,从而将操作数当作操作码,程序仍将出错;当程序“乱飞”到某个三字节指令上时,因为它们有两个操作数,误将其操作数当操作码的出错几率更大。
解决程序“乱飞”的方法是:第一,在关键地方人为地插入一些单字节指令NOP,或将有效字节指令重写,使“乱飞”程序在程序区迅速纳入正轨;第二,对程序流向起决定作用的指令(如RET、RETI、ACALL、LCALL、LJMP,JZ,JNZ,JC、JNC、DJNZ等)和某些对系统工作状态起重要作用的指令(如SETB,EA等)之前,和某些对系统工作状态起重要作用的指令(如SETB、EA等)的后面,插入2条NOP指令,从而可保证“乱飞”程序迅速纳入轨道,确保这些指令正确执行。
2)时间冗余技术。时间冗余方法也是解决软件运行故障的方法。时间冗余方法是通过消耗时间资源达到纠错的目的。解决的方法有:第一,可采用重复检测。输入信号的干扰是叠加在有效电平信号上的一系列离散尖脉冲,作用时间很短。当应用系统存在输入干扰,又不能用硬件加以有效控制时,可以采用软件重复检测的方法,达到“去伪存真”的目的。第二,重复输出。开关量输出软件抗干扰设计,主要是采取重复输出的办法,这是一种提高输出接口抗干扰性能的有效措施。对于那些用锁存器输出的控制信号,这些措施很必要。在允许的情况下,输出重复周期尽可能短些。当输出端口受到某种干扰而输出错误信号后,外部执行设备还不及做出有效反应,正确的信息又输出了,这就可以及时地防止错误动作的发生。在执行重复输出功能时,对于可编程接口芯片,工作方式控制字与输出状态字一并重复设置,使输出模块可靠地工作。第三,采用指令复执。这种技术是重复执行已发生错误的指令,如故障是瞬时的,在指令复执期间,有可能不再出现,程序可继续执行。第四,程序卷回技术。程序卷回不是某一条指令的重复执行,而是一小段程序的重复执行,为了实现卷回,也要保留现场,这种卷回方法可卷回若干次,直到故障排除或显示故障为止。第五,实行延时避开。在工业中,实际应用的单片机系统,有很多强干扰主要来自系统本身。例如,大型感性负载的通断,特别容易引起电源过电压、欠电压、下陷以及产生尖峰干扰等。虽然这些干扰危害严重,但往往是可预知的,在软件设计时,可采取适当的措施避开,当系统要接通或断开大功率负载时,使CPU暂停工作,待干扰过去以后再恢复工作,这比单纯在硬件上采取抗干扰措施要方便许多。
3.2 软件陷阱技术
当“乱飞”程序进入非程序区(如EPROM未使用的空间)或表格区时,采用冗余指令时程序入轨的条件便不能满足,此时可以通过设定软件陷阱,拦截“乱飞”程序,强行将其引向复位入口地址,利用专门的程序对出错程序进行处理。
软件陷阱,就是用引导指令强行将捕获到的乱飞程序引向复位入口地址。0000H,在此处将程序转向专门对程序出错进行处理的程序,使程序纳入正轨。软件陷阱可采用两种形式,如表1所列。
表1 软件陷阱形式表
形式1的机器码为0000020000,形式2的机器码为020202020000。根据“乱飞”程序落入陷阱区的位置不同,可选择执行空操作、转到0000H和直转到0202H单元形式之一,使程序纳入正轨,指定运行到预定位置。
软件陷阱的安排有以下几种方式:
1)未使用的中断区。当未使用的中断因干扰而开放,并激活这些中断时,会产生混乱。在对应的中断服务程序中设置软件陷阱,便能及时捕捉到错误的中断。在中断服务程序中要注意:返回指令用RETI,也可用LJMP。
在中断程序中,directl、direct2为主程序中非使用单元。
2)未使用的 EPROM空间。现在使用的EPROM一般为2764、27128等芯片,很少将其全部用完。这些非程序用区可用 0000020000或020202020000数据填满。注意,最后一条填入的数据应为020000。当“乱飞”程序进入此区后,便会迅速自动入轨。
3)中断服务程序区。设用户主程序运行区间为ADD1~ADD2,并设定时器To产生10 ms定时中断。当程序“乱飞”落入ADD1~ADD2区间外,若在此用户程序区外发生了定时中断,可在中断服务程序中判定中断断点地址 ADDx。若 ADDx< ADD1或ADDx>ADD2,说明发生了程序“乱飞”,则应使程序返回到复位入口地址0000H,使乱飞程序纳入正轨。
4)RAM数据保护条件陷阱。单片机外RAM保存大量数据,这些数据写入时使用“MOVX@DPTR,A”指令来完成的。当CPU受到干扰而非法执行该指令时,就会改写RAM中的数据,导致RAM中的数据丢失。为了减小RAM中数据丢失的可能性,可在RAM写操作之前加入条件陷阱,不满足条件时不允许写操作,并进入陷阱,形成死循环。具体形式如下:
4 结束语
目前,单片机在各个领域中的应用越来越广泛,而且多在各种恶劣环境中应用,对其可靠性要求也越来越高,因此必须采取抗干扰措施,否则难以稳定、可靠运行。合理地使用软件和硬件抗干扰技术,可使系统最大限度的避免干扰的产生和受干扰后能使系统恢复正常运行,保证系统长期稳定可靠地工作。由于软件设计灵活,节省硬件资源,当外界的干扰引起整个应用系统瘫痪或不能正常运行时,系统中的抗干扰软件子系统就会引导系统程序,使其重新进入正常的运行状态,从而保证单片机应用系统稳定、可靠的工作。因此,软件抗干扰技术的研究与应用越来越引起人们的重视。
[1] 刘守义,杨宏丽,王静霞.单片机应用技术[M].西安:西安电子科技大学出版社,2002.
[2] 田裕康.单片机抗干扰设计技术[J].仪器仪表用户,2003(3).
[3] 王晶兆,等.单片机原理及应用[M].济南:山东大学出版社,2006.
[4] 赵佩华,眭碧霞.单片机原理及接口技术[M].北京:机械工业出版社,2008.
Software Anti-interference Technology in Applied System of Single Chip Micro-computer
ZHAO Pei-hua
(Changzhou College of Information Technology,Changzhou 213164,China)
The reliability of the application system of single chip micro-computer rests on a variety of factors,among which the anti-interference performance of the system is a crucial one.Thus,to enhance the safety and reliability of the system has become a concerned issue and the demand to study the technology of anti-interference is generated.The paper proposes a few software anti-interference techniques and analyzes their characteristic.
single chip micro-computer;application system;anti-interference;software technology
2010-01-11
赵佩华(1957-),男,高级工程师,从事研究方向:计算机应用与管理、高职教育管理