单片机应用中的软件抗干扰技术
- 格式:docx
- 大小:23.09 KB
- 文档页数:6
单片机系统抗干扰技术措施徐本升(七煤(集团)公司社保局,黑龙江七台河154600)廛屉科夔[}商要]单片机系统主要由信号检测部分、信号处理及控制部分、控制信号驱动部分、拳统零毒部分、显示部分组成。
干扰的种类主要来自系统内部元器件在系统中的状态和系统外部其它电气设备产生的干抚。
硬件抗干扰措施是电潺的抗干扰设计,屏蔽抗干技技术,双绞线及光纤的使用,去耦电路。
软件抗干就措-旌旋出错处理程序,建立软件陷阱,使用空操作指令。
‘‘、联蠢建i司]单片机;系统;抗干扰技术‘,单片机应用系统的硬件电路构成比较复杂、所用元件品种繁多,有的工作场所环境比较差,由于这些原因,为了保证单片机应用系统能够在各种环境下能正常运行,系统的抗干扰性就是一个非常重要的指标。
抗干扰就是针对干扰产生的性质、传播途径、侵入的位置和侵入的形式,采取相应的方法消除干扰源,抑制干扰传播途径,减弱电路或元件对噪声干扰的敏感性,使单片机系统能在线正常、稳定地运行。
1单片机系统的组成一个单片机应用系统的硬件电路是由如下几个部分构成的:1)信号检测部分:2)信号处理及控制部分:3)控制信号驱动部分;4)系统交互部分;5)显示部分。
由此可见一个单片机应用系统的成分是相当复杂的,从各种类型的传感器到名目繁多的各种继电器接触器、电磁阀,从类型繁多的集成电路到各种各样的耦合器件、执行部件、显示器件等。
2干扰的种类干扰就是叠加在有用信号上的不需要的信号。
是影响路正常工作的另一种噪声。
干扰以某种电信号的形式,通过一的渠道。
混入有用信号中侵人单片机系统,造成系统工作不稳定在各种实际环境中,干扰总是存在的,这些干扰能降低电子系统准确性甚至破坏其可靠性。
干扰有两种:一是来自系统内部元器件在工作时产生的干扰通过地址、电源线、信号线,分布电容和电感等传输,影响系统工状态。
二是来自系统外部其它电气设备产生的干扰。
通过传导辐射等途径影Ⅱ向单片机系统的正常工作。
干扰对单片机应用系统的作用有3个部位:1)输入系统。
PIC单片机抗干扰设计摘要:单片机已经普遍应用到各个领域,对其可靠性也提出了更高的要求。
影响单片机可靠性的因素很多,但是抗干扰性能是最重要的一个因素之一。
本文对PIC单片机抗干扰设计主要从硬件干扰抑制技术和软件干扰抑制技术两个大方面来进行分析。
关键词:PIC单片机抗干扰硬件软件1 硬件干扰抑制技术1.1 采用合理的隔离技术采用合理的隔离技术对单片机抗干扰起着非常重要的作用。
隔离不仅能够将外来干扰信号的通道阻断,而且还可以通过控制系统与现场隔离实现抗干扰目的,使得彼此之间的串扰最大限度地降低。
常用的隔离技术主要包括变压器隔离方式、布线隔离方式、光电隔离方式和继电器隔离方式等。
1.2 合理选择系统时钟PIC单片机系统时钟频率为0~20MHz,时基震荡方式主要有四种,每一种时基震荡方式由不同的时基频率相对应:外接电阻电容元件的阻容振荡方式RC,频率为0.03MHz~5MHz;低频晶体振荡器/陶瓷谐振器振荡方式LP,频率为32.768kHz或200kHz;标准晶体振荡器/陶瓷谐振器振荡方式XT,频率为0.2MHz~4MHz;高频晶体振荡器/陶瓷谐振器振荡方式HS,频率为4MHz~20MHz。
外接方式主要有三种:外接晶体振荡器/陶瓷谐振器、外接时钟电路、外接RC。
用户在选择基振荡方式和外接方式时可根据PIC单片机应用系统的性能、应用场合、价格等因素来进行。
外接时钟属于高频噪声源,从可靠性方面来讲,不仅会干扰本应用系统,而且还能够干扰外界。
频率越高越容易成为噪声源,因此应采用低频率的系统时钟,但是必须把与系统性能要求相符作为前提条件。
1.3 合理设计电路板在电路板设计时,不要只是采用单一的PCB板进行,而应尽可能多的采用多层PCB板来进行,其中一层用作接地,而另外一层用作电源布线,这样就使得退耦电路形成,同时,这样的电路其屏蔽效果也比较好。
如果对空间没有任何的硬性规定,同时要成本因素进行考虑,此时在设计电路板时就可以采用单层或者双层的PCB板进行布线,这样需要从电源单独引电源线进行布线,并将其逐个分配到每个功能电路中,另外,还要将所有的地线汇集到靠近电源地的一个点上。
244 •电子技术与软件工程 Electronic Technology & Software Engineering单片机技术• SCM Technology【关键词】单片机 抗干扰技术 数字滤波技术1 引言如图1所示,单片机测控系统是在程序化管理下形成的测控系统,它可以在工业生产过程中提高机械控制的效率。
但是,工业现场环境复杂,具有电磁功能的大量设备频繁启动、停止,产生的干扰影响了单片机系统的正常运行。
本文针对单片机测控系统中的抗干扰问题,单片机测控系统中的软件抗干扰技术文/陈欣从软件抗干扰技术方面进行了分析和研究,并提出了解决方案。
工业单片机测控系统的常见影响如下:1.1 干扰加大数据采集的误差测试系统通道的输入部分受到干扰信号的入侵,有用信号和外来干扰信号相互叠加,加剧了该通道数据采集的误差。
尤其在当前系统输入的是小电压信号时,数据干扰的现象更加严重。
1.2 干扰使数据发送变化单片机系统中的程序是存放在存储器EPROM 中,这些程序不易发生变化。
但是单片机系统的RAM 数据区是可以读写的,它可能会受到读入信息的干扰从而发生变化。
因为干扰渠道的区别,以及数据性质的区别,单片机系统受损害的情况也各不相同,可能造成控制失灵,也可能造成数值误差,更严重的会改变单片机系统某些部件(如串行口、定时器/计数器等)的运行状态等。
1.3 干扰使控制状态失灵在单片机系统中,控制状态依赖于特定条件的输入状况和处理结果,干扰的侵入会造成条件状态错误,引起虚假的信号,从而加大输出控制的误差,甚至控制失常。
1.4 干扰使程序运行失常单片机系统正常运行的前提是CPU 正常工作,如果干扰信号影响到了CPU ,则程序计数器不能正常运行,从而引起系统混乱、控制失灵,即通常说的程序“跑飞”。
现在使用的单片机抗干扰技术主要分为硬件与软件两类。
硬件抗干扰技术固然可以降低系统受干扰的程度,但是成本较高,灵活性不足,而且容易受电磁干扰。
单片机应用中的软件抗干扰技术随着单片机应用的普及,采用单片机控制的产品与设备日益增多,而某些设备所在的工作环境往往比较恶劣,干扰严重,这些干扰会严重影响设备的正常工作,使其不能正常运行。
因此,为了保证设备能在实际应用中可靠地工作,必须要周密考虑和解决抗干扰的问题。
本文对单片机应用中的软件抗干扰技术作详细介绍,文中所用单片机为MCS51。
一、数字量输入输出中的软件抗于数字量输入过程中的干扰,其作用时间较短,因此在采集数字信号时,可多次重复采集,直到若干次采样结果一致时才认为其有效。
例如通过A 价转换器测量各种模拟量时,如果有干扰作用于模拟信号上,就会使A/D 转换结果偏离真实值。
这时如果只采样一次A/D 转换结果,就无法知道其是否真实可靠,而必须进行多次采样,得到一个A/D 转换结果的数据系列,对这一系列数据再作各种数字滤波处理,最后才能得到一个可信度较高的结果值。
本书第八章将给出各种具体的数字滤波算法及程序。
如果对于同一个数据点经多次采样后得到的信号值变化不定,说明此时的干扰特别严重,已经超出允许的范围,应该立即停止采样并给出报警信号。
如果数字信号属于开关量信号,如限位开关、操作按扭等,则不能用多次采样取平均值的方法,而必须每次采样结果绝对一致才行。
这时可编写一个采样子程序,程序中设置有采样成功和采样失败标志,如果对同一开关量信号进行若干次采样,其采样结果完全一致,则成功标志置位;否则失败标志置位。
后续程序可通过判别这些标志来决定程序的流向。
单片机控制的设备对外输出的控制信号很多是以数字量的形式出现的,如各种显示器、步进电机或电磁阀的驱动信号等。
即使是以模拟量输出,也是经过D/A 转换而获得的。
单片机给出一个正确的数据后,由于外部干扰的作用有可能使输出装置得到一个被改变了的错误数据,从而使输出装置发生误动作。
对于数字量输出软件抗干扰最有效的方法是重复输出同一个数据,重复周期应尽量短。
这样输出装置在得到一个被干扰的错误信号后,还来不及反应,一个正确的信号又来到了,从而可以防止误动作的产生。
在程序结构上,可将输出过程安排在监控循环中.循环周期取得尽可能短,就能有效地防止输出设备的错误动作。
需要注意的是.经过这种安排后输出功能是作为一个完整的模块来执行的,与这种重复输出措施相对应.软件设计中还必须为各个外部输出设备建立一个输出暂存单元,每次将应输出的结果存入暂存单元中,然后再调用输出功能模块将各暂存单元的数据一一输出,不管该数据是刚送来的,还是以前就有的。
这样可以让每个外部设备不断得到控制数据,从而使干扰造成的错误状态不能得以维持。
在执行输出功能模块时,应将有关输出接口芯片的初始状态也一并重新设置。
因为由于干扰的作用可能使这些芯片的工作方式控制字发生变化,而不能实现正确的输出功能,重新设置控制字就能避免这种错误.确保输出功能的正确实现。
二、程序执行过程中的软件抗于扰前面述及的是针对输入输出通道而言的,干扰信号还未作用到CPU 本身,CPU 还能正确地执行各种抗干扰程序。
如果干扰信号已经通过某种途径作用到了CPU 上,则CPU 就不能按正常状态执行程序,从而引起混乱,这就是通常所说的程序“跑飞”。
程序“跑飞”后使其恢复正常的一个最简单的方法是使CPU 复位,让程序从头开始重新运行。
很多单片机控制的设备中都有设置人工复位电路。
人工复位一般是在整个系统已经完全瘫痪,无计可施的情况下才不得已而为之的。
因此在进行软件设计时就要考虑到万一程序“跑飞”,应让其能够自动恢复到正常状态下运行。
程序“跑飞”后往往将一些操作数当作指令码来执行,从而引起整个程序的混乱。
采用“指令冗余”是使“跑飞”的程序恢复正常的一种措施。
所谓“指令冗余”,就是在一些关键的地方人为地插入一些单字节的空操作指令NOP。
当程序“跑飞”到某条单字节指令上时,就不会发生将操作数当成指令来执行的错误。
对于MCS51 单片机来说,所有的指令都不会超过3 个字节,因此在某条指令前面插入两条NOP 指令,则该条指令就不会被前面冲下来的失控程序拆散,而会得到完整的执行,从而使程序重新纳入正常轨道。
通常是在一些对程序的流向起关键作用的指令前面插入两条NOP 指令。
应该注意的是在一个程序中“指令冗余”不能使用过多,否则会降低程序的执行效率。
采用“指令冗余”使“跑飞”的程序恢复正常是有条件的,首先“跑飞”的程序必须落到程序区,其次必须执行到所设置的冗余指令。
如果“跑飞”的程序落到非程序区(如EPROM 中未用完的空间或某些数据表格等),或在执行到冗余指令之前已经形成了一个死循环,则“指令冗余”措施就不能使“跑飞”的程序恢复正常了。
这时可以采用另一种软件抗干扰措施,即肠胃“软件陷阱”。
“软件陷阱”是一条引导指令,强行将捕获的程序引向一个指定的地址,在那里有一段专门处理错误的程序。
假设这段处理错误的程序入口地址为ERR,则下面三条指令即组成一个“软件陷阱”:NOPNOPLJMP ERR“软件陷阱”一般安排在下列四种地方。
(l)未使用的中断向量区。
MCS -51 单片机的中断向量区为0003H~002FH,如果所设计的智能化测量控制仪表未使用完全部中断向量区,则可在剩余的中断向量区安排“软件陷阱”,以便能捕捉到错误的中断。
例如某设备使用了两个外部中断INT0、INT1 和一个定时器中断T0,它们的中断服务子程序入口地址分别为FUINTO、fUINT1 和FUT0,则可按下面的方式来设置中断向量区。
ORG 0000H0000H START:LJMP MAIN ;引向主程序入口0003H LJMP FUINT0 ;INT0 中断服务程序入口0006H NOP ;冗余指令0007H NOP0008H LJMP ERR ;陷阱000BH LJMP FUT0 ;T0 中断服务程序入口000EH NOP ;冗余指令000FH NOP0010H LJMP ERR ;陷阱0013H LJMP FUINT1 ;INT1 中断服务程序入口0016H NOP ;冗余指令0017H NOP0018H LJMP ERR ;陷阱00lBH LJMP ERR ;未使用T1 中断,设陷饼00lEH NOP ;冗余指令00lFH NOP0020H LJMP ERR ;陷阱0023H LJMP ERR ;未使用串行口中断,设陷阱0026H NOP ;冗余指令0027H NOP0028H LJMP ERR ;陷阱002BH LJMP ERR ;未使用T2 中断,设陷阱002EH NOP ;冗余指令002FH NOP0030H MAIN:? ;;主程序(2)未使用的大片EPROM 空间。
智能化测量控制仪表中使用的EPROM 芯片一般都不会使用完其全部空间,对于剩余未编程的EPROM 空间,一般都维持其原状,即其内容为OFFH。
OFFH对于MCS51 单片机的指令系统来说是一条单字节的指令:MOV R7,A,如果程序“跑飞”到这一区域,则将顺序向后执行,不再跳跃(除非又受到新的干扰)。
因此在这段区域内每隔一段地址设一个陷阱,就一定能捕捉到“跑飞”的程序。
(3)表格。
有两种表格,即数据表格和散转表格。
由于表格的内容与检索值有一一对应的关系,在表格中间安排陷阱会破坏其连续性和对应关系,因此只能在表格的最后安排陷阱。
如果表格区较长,则安排在最后的陷阱不能保证一定能捕捉到飞来的程序的流向,有可能在中途再次“跑飞”。
(4)程序区。
程序区是由一系列的指令所构成的,不能在这些指令中间任意安排陷阱,否则会破坏正常的程序流程。
但是在这些指令中间常常有一些断点,正常的程序执行到断点处就不再往下执行了,如果在这些地方设置陷价就有能有效地捕获“跑飞”的程序。
例如在一个根据累加器A 中内容的正、负和零的情况进行三分支的程序,软件陷阱安排如下。
JNY XYZ? ;零处理? ?AJMP ABC ;断裂点NOPNOPLJMP ERR ;陷阱XYZ:JB ACC.7,UVW? ;零处理?AJMP ABC ;断裂点NOPNOPLJMP ERR ;陷阱UVW:??ABC:MOV A ,R2 ;取结果RET ;断裂点NOPNOPLJMP ERR由于软件陷阱都安排在正常程序执行不到的地方,故不会影响程序的执行效率。
在EPROM 容量允许的条件下,这种软件陷阱多一些为好。
如果“跑飞”的程序落到一个临时构成的死循环中时,冗余指令和软件陷阱都将无能为力。
这时可以采用人工复位的方法使系统恢复正常,实际上可以设计一种模仿人工监测的“程序运行监视器”,俗称“看门狗”(WATCHDOG )。
WATCHDOG 有如下特征:(1)本身能独立工作,基本上不依赖于CPU。
CPU 只在一个固定的时间间隔内与之打一次交道,表明整个系统“目前尚属正常”。
(2)当CPU 落入死循环之后,能及时发现并使整个系统复位。
目前有很多单片机在内部已经集成了片内的硬件WATCHDOG 电路,使用起来更为方便。
也可以用软件程序来形成WATCHDOG。
例如可以采用8031 的定时器T0 来形成WATCHDOG:将T0的溢出中断设为高级中断,其它中断均设置为低级中断,若采用6M 的时钟,则可用以下程序使T0 定时约10ms 来形成软件WATCHDOG:MOV TMOD,#01H;置TO 为16 位定时器SETB ET0;允许T0 中断SETB PT0;设置T0 为高级中断MOV TH0,#0E0H;定时约10msSETB TR0;启动T0SETB EA;开中断软件WATCHDOG启动后,系统工作程序必须每隔小于10ms的时间执行一次MOV TH0,#0E0H 指令,重新设置T0 的计数初值。
如果程序“跑飞”后执行不到这条指令,则在10ms 之内即会产生一次T0 溢出中断,在T0 的中断向量区安放一条转移到出错处理程序的指令:LJMP ERR,由出错处理程序来处理各种善后工作。
采用软件WATCHDOG 有一个弱点,就是如果“跑飞”的程序使某些操作数变形成为了修改T0 功能的指令,则执行这种指令后软件WATCHDOG 就会失效。
因此软件WATCHDOG 的可靠性不如硬件高。
三、系统的恢复前面列举的各项措施只解决了如何发现系统受到干扰和如何捕捉“跑飞”程序,但仅此还不够,还要能够让单片机根据被破坏的残留信息自动恢复到正常工作状态。
硬件复位是使单片机重新恢复正常工作状态的一个简单有效的方法。
前面介绍的上电复位、人工复位及硬件WATCHDOG 复位,都属于硬件复位。
硬件复位后CPU 被重新初始化,所有被激活的中断标志都被清除,程序从0000H 地址重新开始执行。
硬件复位又称为“冷启动”,是将系统当时的状态全部作废,重新进行彻底的初始化来使系统的状态得到恢复。