版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
“单片机与控制技术”
多媒体课程课件
武汉工程大学电气信息学院自动化研究所杨宁教授主
编第10章微机控制系统的抗干扰技术微机控制系统大多用于工业现场,条件复杂恶劣,干扰频繁。干扰严重影响控制系统的可靠性和稳定性。环境的特殊,要求微机控制系统必须有极高的抗干扰能力。所谓干扰,就是有用信号以外的噪声或造成微机系统的设备不能正常工作的破坏因素。干扰的产生往往是多种因素决定,干扰的抑制是一个复杂的理论和技术问题,实践性较强。为此,必须分析干扰的来源,研究对于不同的干扰源采用不同的有效抑制或消除干扰的措施,重视接地布线和供电方面的抗干扰技术,重视CPU可靠运行的抗干扰技术和应用软件中对数字信号的数据处理技术。本章要介绍这些方面的一些问题。10.1干扰的来源及分类
10.1.1干扰的来源微机控制系统运行环境的各种干扰主要表现在以下几个方面:
1.恶劣的供电条
2.严重的噪声环境此外,还有来自空间的干扰,如太阳及其它天体辐射的电磁波,广播电台或通讯发射台发出的电磁波,周围电气设备如电机、变压器、中频炉、可控硅逆变电源等发出的电干扰和磁干扰,气象条件、空中雷电、甚至地磁场的变化也会引起干扰。这些空间辐射干扰有时会使微机不能正常工作。图10.1.1形象地表示了微机控制系统的噪声环境。3.其它工业环境的温度、湿度、灰尘、腐蚀性气体及其它损害,均会影响微机控制系统的可靠性。图10.1.1微机控制系统的干扰来源
10.1.2干扰的分类按干扰的作用形式分类,干扰一般有串模干扰和共模干扰两种。1.串模干扰串模干扰又称差模干扰,它是串联于信号回路之中的干扰,如图10.1.2所示。图中Us为信号电压,Un为串模干扰电压。Un即可来自干扰源,也可由信号源本身产生。在图10.1.3中,如果邻近的导线(干扰线)中有交变电流Ia流过,由不得产生的电磁干扰信号就会通过分布电容C1和C2的耦合,引入放大器的输入端。产生串模干扰的原因有分布电容的静电耦合、长线传输的互感、空间电磁场引起的磁场耦合以及50Hz的工频干扰等。2.共模干扰共模干扰是指放大器或模数转换电路的两个输入端上共有的干扰电压。图10.1.2串模干扰示意图
图10.1.3通过分布电容引入串模干扰图10.1.4是模干扰引入的示意图。在微机控制系统中,被测信号有单端对地输入和双端不对地输入两种方式。对于存在共模式干扰的场合,尽量不采用单端对地输入方式,因为此时的共模干扰电压将串联叠加,全部变为串模干扰电压。10.2硬件方面对几种主要干扰的抑制方法10.2.1电源噪声的抑制实践说明,电源的干扰是微机控制系统的主要干扰,抑制这种干扰的主要措施有以下几个方面。1.电源变压器的屏蔽对电源变压器设置合理的屏蔽(静电屏蔽和电磁屏蔽)是一种十分有效而简单的抗干扰措施。在微机控制和数据采集系统中,常将电源变压器的原副边分别加以屏蔽,如图10.2.1所示。屏蔽通常与铁芯同时接地。在要求更高的场合,可采用层间也加屏蔽的结构,如图10.2.2所示。图10.2.1电源变压器的屏蔽
图10.2.2电源变压器的多层屏蔽
2.交流稳压器交流稳压器主要用于克服电网电压波动对系统的影响;同时,由于交流稳压器中有电磁线圈,对干扰也有一定的抑制作用。传统的交流稳压器只能对付电源的慢慢变化,目前已有很多种能对付电源瞬间变化的净化技术产品,较好地解决了问题。
3.隔离变压器高频噪声通过变压器主要不是靠初次、级线圈的互感耦合,而是靠初、次级间寄生电容耦合的,因此,应采用隔离变压器或超隔离变压器,以提高抗共模干扰的能力。4.低通滤波器采用低通滤波器(如图10.2.3所示)能抑制电网侵入的外部高频干扰。低通滤波器可让50Hz的工频信号无衰减地通过,而滤去高于50Hz的高次谐波。直流侧可采用图10.2.4所示双T滤波器,以消除50Hz工频干扰。其优点是结构简单,对固定频率的干扰滤波效果好。可将电容C固定,调节电阻,在输入50Hz信号的条件下,使Uo=0来确定电路参数。图10.2.350Hz低通滤波器图10.2.4直流侧用双T滤波器
5.采用分散独立功能块供电在每个系统功能模块上用三端稳压集成块(如7805、7905抗干扰微机电源的供电配置如图10.2.5所示的结构。、7812、7912等)组成稳压电源。每个功能块单独对电压过载进行保护,不会因某块稳压电源故障而使整个系统破坏,而且也减少了公共阻抗的相互耦合,大大提高供电的可靠性,也有利于电源散热。图10.2.5微机系统的抗干扰供电配置
6.选用成型设备可根据需要直接采用目前市场已大量上市的高抗干扰的开关稳压电源、干扰抑制器和超大型隔离变压器稳压电源、各类型不间断电源UPS等。这类产品价格不高,即省事、又可靠。UPS要注意后备式和在线式的选用。对供电质量要求较高的系统,采用在线式UPS。在线式UPS在电网正常电压时,将交流输入经变压、整流、滤波后,变成所需要的直流电压送逆变器,经逆变器变换和交流滤波,变成所需频率和电压的交流电压供给负载。逆变器具有稳压和稳频双重功能,提高了供电质量。当交流输入停电时,由蓄电池组向逆变器供电,保证交流电不中断。10.2.2过程通道干扰的抑制过程通道是输入接口、输出接口与主机或主机相互之间进行信息传输的路径,在过程通道中长线传输的干扰是主要因素。随着系统主振频率越来越高,微机系统过程通道的长线传输越来越不可避免,防止干扰的问题也就显得越来越重要。干扰的来源是多方面的,对于共模、串模和长线传输三类干扰,有不同的抑制方法。共模干扰的抑制方法主要有三种:变压器隔离、光电隔离和浮地屏蔽;串模干扰的抑制方法主要也有三种:用双绞线作信号引线、滤波、信号的差动式收发;长线传输干扰的抑制主要是消除线路中的波发射;采用阻抗匹配的方法。
1.变压器隔离利用变压器把模拟电路与数字电路隔离开来,也就是把模拟地与数字地断开,以使共模干扰电压不能成回路,从而抑制了共模干扰。另外,隔离前和隔离后分别采用两组相互独立的电源,切断两部分的地线联系。如图10.2.6所示,被测信号Ui经放大后,首先通过调制器变换成交流信号,经隔离变压器B传输到副边,然后利用解调器再将它变换成直流信号U2,再对U2进行A/D变换。图10.2.6变压器隔离
2.光电隔离光电耦合器件已在3.1节介绍,由其构成的电路可有效地抑制干扰信号。此外,光电耦合器提供了较好的带宽,较低的输入失调漂移和增益温度系数,因此能较好地满足工业过程控制信号传输的要求。光电隔离电器如图10.2.7所示。模式拟信号Us经放大后,再利用光电耦合器的线性区,直接对模拟信号进行光电耦合传送。由于光电耦合器的线性区一般只在某一范围内,因此,应保证被传信号的变化范围始终在线性区内。为了保证线性耦合,即要严格挑选光电耦合器件,又要采取相应的非线性校正措施,否则将产生较大误差。另外,光电隔离前后两部分电路应分别采用两组独立的电源。与变压器隔离装置相比,光电隔离器的成本低,体积小,电路容易实现。图10.2.7光电隔离电路
3.浮地屏蔽在强干扰环境下,为了保证微机系统有较高的可靠性,要采用光电耦合器将微机部分与其它所有外接通道实行浮地屏蔽的处理方法,图10.2.8不仅是隔离电路,也是一个浮地屏蔽的实例。A/D转换后的并行输出口、D/A的并行数据输入口以及地址与控制线均采用光电隔离,而光电耦合器的输入、输出回路的电源分别供电。这样,完全切断了系统主机部分与外界的一切电的传输联系。在传输线较长,现场干扰十分强烈时,为了提高整个系统的可靠边性,可用光电耦合器将长线完全“浮置”起来,如图10.2.9所示。长线的“浮置”去掉了长线两端的公共地线,不但有效地消除各逻辑电路的电流流经公共地线时所产生的噪声电压相互干扰,而且也有效地解决了长线驱动和阻抗匹配等问题,同时也可以防止受控设备短路时保护系统不受损坏。图10.2.8光电耦合基本配置图10.2.9传输长线的光耦浮置处理
4.双绞线传输串模干扰与信号串联,多来于空间电磁干扰,可从干扰信号性质和来源入手,区分不同情况采取措施。采用双绞线传输的目的是减少电磁感应,并且使各个小环路的感应电势互相反向抵消。为清除产生串模式干扰来源,测量仪表应有良好电磁屏蔽和接地,选用带有屏蔽层双绞线或同轴电缆传输。与同轴电缆相比,双绞线虽然频带较差,但波阻抗高,抗共模噪声能力强。
5.滤波采用滤波抑制串模干扰是一种常用的方法。根据串模干扰频率与被测信号频率的分布情况,决定选用低通、高通、带通等传递特性的滤波器。如图10.2.10所示,或采用有源低通滤波器,如图10.2.11所示。
6.信号的差动式发收由于长距离信号传输中存在共模干扰,干扰可以是直流电压,也可以是交流电压,其幅值可达几伏甚至更高,这取决于现场环境条件和微机等设备接地情况。图10.2.10无源阻容低通滤波器
图10.2.11有源低通滤波器
10.2.3空间干扰和电感性干扰的抑制
1.空间干扰空间干扰主要指磁场在线路、导线、壳体上的辐射、吸收和调制。在现场解决空间干扰时,首先要正确判断是否是空间干扰,可以用图10.2.12所示的方法进行实验,即在系统供电电源入口处接入WRY型微机干扰抑制器或大型磁饱和稳压器,观察干扰现象是否继续存在,如干扰现象继续存在则可认为是空间干扰。2.电感性负载干扰实践表明,在上节介绍的干扰源中,电感性负载切投所产生的干扰是微机控制系统最常见、最严重、最难克服的干扰之一。抑制电感性负载切投干扰的措施有如下两种:一是采用阻容(RC)网络。对电感性负载切投所产生干扰的抑制,可采用在负载两端并联RC网络的方法,其目的是降低干扰幅值,减小干扰频率,较好抑制干扰。如图10.2.13。所示,虽然在负载L1、L2两侧并接电容C0可降低干扰的频率和幅值,但当S闭合时,由于电容C0两端电压不能突变,因而致使开关触点上瞬间流过一很大电流,加速了触点烧蚀。可行的方法是在负载侧并接一个RC串联网络,这样不但可以减小干扰的幅值和频率,而且可以限制触点上的电流。图10.2.13抑制干扰的RC网络其次是采用压敏电阻。压敏电阻是一种对电压敏感的非线性电阻器件,其特性跟双向稳压管一样,是一种无极性的非线性对称的抑制电感性负载反电势干扰和保护触头的器件,既适用于直流电路,也适用于于交流电路;既可接在触点上,又可接在线圈(包括变压器线圈)上。与RC网络相比,其参数选择较容易,且不会由于电容的充放电而损伤触点。压敏电阻还具有温度系数小、体积小、重量轻、价格便宜、使用方便等优点。压敏电阻的选取使用方法可参阅产品说明书或有关资料。10.2.4接地技术
广义的接地包含两方面的意思,即接实地和接虚地。接实地指的是与大地连接;接虚地指的是电位基准点连接;如果地电位的基准点自行浮置或浮空(即与大地电气绝缘),则称为浮地连接。在微机控制系统中,大致有以下几种地线:模拟地、数字地、信号地、系统地、交流地和保护地。模拟地作为传感器、变送器、放大器、A/D和D/A转换器中模拟电路的零电位。模拟信号有精度要求,有时信号比较小,而且与生产现场连接。有时为区别远距离传感器的弱信号地与主机的模拟地关系,把传感器的地叫信号地。数字地作为微机各种数字电路的零电位,应该与模拟地分开,避免模拟信号受数字脉冲的干扰。系统地是上述几种地的最终回流点,直接与大地相连作为基准零电位。保护地也叫安全地,目的是使设备机壳与大地等电位,以避免机壳带电影响人身及设备安全。
1.一点接地与多点接地的应用原则一般情况,低频(1MHz以下)电路应一点接地,高频(10MHz以上)电路应多点就近接地。低频电路布线和元件间电感较小,而接地电路若形成环路,对干扰的影响却很大,所以应一点接地。对于高频电路,地线上有电感,增加了地线阻抗,同时各地线之间又产生了电感耦合。当频率甚高时,特别是当地线长度等于1/4波长的奇数倍时,地线阻抗就会变得很高,这时地线变成了天线,可以向外辐射噪声信号。微机控制系统的工作频率较低,对它起作用的干扰频率也大都在1MHz以下,故宜采用多点接地。在1~10MHz之间,如用一点接地,其地线长度不得超过波长的1/20,否则应采用多点接地。一点接地方式有串联一点接地和并联一点接地。(1)串联一点接地串联一点接地法如图10.2.14所示。图中X、Y、Z三个电路和电源的接地点用某种型号的导线(设导线电阻为3.2mΩ)依次等长连接在一个公共地端,这种接法引线少,简单易行。但由于三个支路“共享”了地线压降,所以每个支路与地之间存在着不同的电位差。为了改善这种情况,各支路地线应尽可能缩短,线径加粗,电压较低的支路应安排在距电源最近处。图10.2.14串联一点接地法及电位情况并联一点接地法如图10.2.15所示。从每一部分电路到供电电源的低端分开走线,导线电阻与线长成正比。这样,X电路地电位可忽略不计,Z电路地电位减少了90%,Y电路的对地电位变化不大。各支路电流在导线上所产生的压降互不影响,不会形成干扰,这是并联一点接地的突出优点,缺点是实现比较麻烦。为改善图10.2.15中Z电路对地的电位差,信号返回线可用更粗导线。如条件允许,可用分开的电源,如图10.2.16所示。由上述可知,串联一点接地法并不是真正的一点接地,并联一点接地抗干扰性能好,实践中应尽量采用并联一点接地。图10.2.15并联一点接地法及电位情况
图10.2.16电路Z分开供电示意图
(3)数字地和模拟地数字地有较大噪声而且电平的跳跃会造成很大的电流尖峰,所有的模拟公共地线应该与数字公共地线分开走线,然后只是在一点汇在一起。特别是在ADC和DAC电路中,尤其要注意地线的正确连接,否则转换将不准确,且干扰严重。因此ADC、DAC和采样保持芯片都提供了独立的模拟地和数字地,它们分别有相应的管脚,必须将所有器件的模拟地和数字地分别相连,模拟地与数字地仅在一点上相连接,除此连接点外,在芯片和其它电路中切不可再有公共点,如图10.2.17所示。
图10.2.17正确的地线连接
2.输入部分的接地(1)输入屏蔽线接地由一点接地信号为1MHz以下与多点接地的应用原则来确定输入信号屏蔽线是一点接地还是两点接地,具体电路如图10.2.18所示。(a)屏蔽线终端一点接地(b)屏蔽线始端一点接地(c)屏蔽线双端接地图10.2.18屏蔽线接地
(2)屏蔽罩接地
微机控制系统中的放大器通常采用屏蔽罩,而信号的传送往往要用屏蔽线。对于屏蔽线的两种单端接地情况要注意:信号源浮地屏蔽线在接收端接地应与屏蔽罩互联;屏蔽线在信号源端接地,接收端的放大器应浮地。这样分别情况接地是为了避免流过屏蔽线的电流,通过屏蔽线与信号线间的电容产生对信号的干扰。一般输入信号较小,而模拟信号又容易受干扰。因此,要格外重视屏蔽罩的接地。3.主机部分的接地工业现场主机部分接地有时是出于人身或设备安全方面的考虑,但更主要的是为了防止干扰,提高可靠性。下面介绍几种主机接地方式。
(1)主机外壳接地、机芯浮空为提高微机的抗干扰能力,将主机外壳作为屏蔽罩接地,而把机内器件架与外壳绝缘,绝缘电阻大于50MΩ,即机内信号地浮空,如图10.2.19a)所示。这种方法抗干扰能力强,而且安全可靠,但要注意一旦绝缘电阻降低将会引入干扰。
(2)全机一点接地主机机芯与外部设备地相联后,采用一点接地,如图10.2.19b)所示。为避免多点接地,各机座用绝缘板垫起来。这种接地也具有较好的抗干扰能力。但要注意接地电阻越小越好。(3)多机系统的接地在微机网络系统中,多台机器之间相互通讯,资源共享。如果接地不合理,将使整个网络系统无法正常工作。远距离的几台微机安装在同一机房内,可采用图10.2.3b)那样的多机一点接地方法。对远距离的网络,多台微机之间的数据通讯,通过隔离的办法把地分开。6.2.5布线的抗干扰技术在微机系统中,正确的布线方法也是重要抗干扰措施,一般布线原则如下:1从交流供电电源到微机系统电源(1)微机控制系统电源与交流供电电源之间距离宜远,引线尽量短、粗、直。(2)从微机控制系统电源到交流供电电源端线路上开关触点应尽量减小,触点接触力求可靠。
2微机系统电源的输入输出走线尽量选用电流一去一回的两根扭绞线供电,扭绞螺距最好小于3cm。如果导线粗无法扭绞时,应将线距缩到最短。从交流供电电源到微机系统电源的布线原则也适用于这一段。外部输入信号的缓冲器和隔离器的配线,灯泡、继电器等感性负载的驱动线等必须使用双绞线。下述部分应分开配线,线间尽量拉开一定距离。(1)交流线:从噪声滤波器输出到供电电源的交流线已经过滤波处理,故这一段交流线不允许与其它交流线一起布线。(2)直流稳压电源线:如果直流稳压电源线使用带屏蔽的电缆时,供数字电路及模拟电路用的电源线可以看作与下面(3)相同的部分进行布线。(3)数字信号线和模拟信号线。(4)灯泡、继电器等到感性负载的驱动线和非稳压的直流线。3从微机电源到箱架电路板的布线为尽量减少阻抗,应该用粗导线或汇流排配线,汇流排之前配以短距离的双绞线。如遇到远距离输出时,应从箱架最近处,如在汇流排处输出,如图10.2.20所示。过渡线的接入方法当两个负载之间传送信号时,要接入过渡线,过渡线原则上应避免从模拟电路过渡,由过渡线实现电路的共地。数字电路的过渡如图10.2.21所示。图中(a)、(b)都是正确的过渡线连接方法,但当负载(A)、(B)之间有信号传送时,大多以(b)方式为好。前两节主要介绍硬件的抗干扰技术,在后两节中介绍软件抗干扰技术。
图10.2.20微机电源到箱架电路板的配线图10.2.21过渡线的正确法
6.3CPU抗干扰技术当干扰可能通过三总线作用进入CPU本身时,CPU将不能按正常状态执行程序,从而引起混乱。为尽可能无扰动地恢复系统正常状态,常采取以下措施。6.3.1人工复位对于失控的CPU,最简单的方法是使其复位,程序从0000H地址开始执行。为此只要在8051系列单片机的REST端加上一个高电平信号,并持续两个机器周期以上即可。RESET端接有一个上电复位电路,它由一个小电解电容和一个接地电阻组成,人工复位电路另外采用一个按钮来给RESET端加上高电平信号。图10.3.1为放电型人工复位电路,上电时C通过R充电,维持一段足够的高电平时间就完成了上电复位功能。C充电结束后,RESET端为低电平,CPU正常工作。需要人工复位时,按下按钮K,C通过K和R1放电,RESET端电位上升到高电平,实现人工复位。K松开后,C重新充电,充电结束后,CPU重新工作。R1是限流电阻,阻值不要过大,否则不能实现人工复位。一般R1=1K,R2=10K,C=10μF。图10.3.1放电型人工复位
人工复位虽然可以强迫CPU走上正轨,而且电路简单,但最大的缺点是不及时,往往系统已经瘫痪,人们在无可奈何的情况下才按下复位按钮。如果软件上上没有特别的措施,人工复位和上电复位具有同等到作用,系统一切从头开始,已经完成的工作量全部作废,这在控制系统中是不允许的。因此,人工复位主要用于非控制系统,如各类智能测试仪器。如果CPU在受到干扰后能自动采取补救措施,再自动复位,这才能为各类控制系统所接受。10.3.2掉电保护电网瞬间断电或电压突然下降,将使微机系统陷入混乱状态;当电网电压恢复正常后,微机系统难以恢复正常状态,对这一类事故的有效方法就是采用掉电表保护,掉电保护由硬件电路检测到,加到单片机的外部中断输入端。软件中将掉电中断规定为高级中断,使系统能够及时对掉电作出反应。在掉电中断子程序中,首先进行现场保护,把当时的重要状态参数,中间结果一一从片外RAM中调入单片机的RAM中,某些片内专用寄存器的内容也转移到片内通用RAM中。其次是对有关设备作出妥善处理,如关闭各输入输出口,使外设处于某一个非工作状态等。最后必须在片内RAM的某一个或两个单元作上特定标记,例如存入0AAH或55H之类的代码,作为掉电标记。这些应急措施全部实施完毕后,即可进入掉电保护工作状态。为保证掉电子程序能顺利执行,掉电检测电路必须在电压下降到CPU最低工作电压之前就提出中断申请,提前时间为几百微秒到数毫秒。掉电后,外围电路失电,但CPU不能失电,以保持RAM中内容不变,故CPU应有一套备用电源。另外,CPU应采用CMOS型80C31芯片,执行一条ORLP
CON,#2的指令后即可进入掉电工作状态。当电源恢复正常时,CPU重新复位,复位后应首先检查是否有掉电标记,如果没有,按一般开机程序执行(系统初始化等)。如果有掉电标记,则说明本次复位为掉电保护之后的复位,不应将系统初始化,而应按掉电中断子程序相反的方式恢复现场,以一种合理的安全方式使系统继续工作。为实现以上功能,必须有一套功能完备的硬件掉电检测电路和CPU电源切换电路,如图10.3.2所示。利用R3和Dw在运放的负输入端建立一个参考电压信号(约2.5~3.5V),再由R1和R2的分压,在运放的正输入端建立电源检测信号,调整R1和R2的比值,使Vcc高于4.8V时运放输出为高电平,当Vcc低于4.8V时,运放输出低电平信号,触发80C31的外部中断。CPU进入掉电保护后耗电极微,Vcc继续下降后,CPU通过D2从备用电池E中得到工作电压(2.3~2.5V),维持片内RAM中数据不丢失。如果电容C选用自身漏电极微的大容量电解电容(1000μF以上),二极管D1选用硅二极管,在不要备用电源E(当然也不要二极管D2)的情况下,RAM中的信息可以保持24小时以上,这对于天天都开机的系统来说是完全足够的。图10.3.2掉电检测和备用电源10.3.3睡眠抗干扰CMOS型80C31通过执行ORLPCON,#1还可以进入睡眠状态,只有定时/计数系统和中断系统处于工作状态。这时CPU对系统三总线上出现的干扰不会作出什么反应,从而大大降低了系统对干扰的敏感程度。仔细分析系统软件后可以发现,CPU并不是一直忙于工作,有很多情况下是在执行一些踏步等待指令和循环检查程序,由于这时CPU虽未干什么主要工作,但却是很容易受干扰。我们让CPU在没有工作时就睡觉,有工作时再由中断系统来唤醒它,干完后又接着睡觉。采用这种安排之后,大多数CPU可以有50%~95%的时间用于睡觉,从而使CPU受到随机干扰的威胁就大大降低,对于低功耗系统,CPU的功耗也有所下降。在一些大功率微机控制系统中,大电流和高电压设备的投入和切除都是由软件指令来完成的.这些指令执行之后,必然引起强烈的干扰,这些干扰不能算随机干扰,它们与软件完全相关.如果CPU在作好各种准备工作之后,进行可能引起强烈干扰的I/O操作之后,立即进入睡眠状态,也就不会受到干扰了。等到下一次醒来时,干扰的高峰也基本消失了。按这种思想设计的软件有如下特点:主程序在完成各种自检、初始化工作后,用下述两条指令取代踏步指令:LOOP:ORLPCON,#1LJMPLOOP10.3.4指令冗余当CPU受到干扰后,往往将一些操作数当作指令码来执行,引起程序混乱,这时首先要尽快将程序纳入正轨(执行有用程序)。MCS-51指令系统中所有的指令都不超过3个字节,而且有很多单字节指令。在双字节指令和三字节指令之后插入两条NOP后,可保护其后的指令不被拆散。或者说,某指令前如果插入两条NOP指令,则这条指令就不会被前面冲下来的失控程序拆散,并将被完整执行,从而使程序走上正轨。但不能在程序中加入太多的冗余指令,以免明显降低程序正常运行的效率。因此,常在一些对程序流向起决定作用的指令之前插入两条NOP指令,以保证弹飞的程序迅速纳入正轨。此类指令有:RET、RETI、ACALL、LCALL、SJMP、AJMP、LJMP、JZ、JNZ、JC、JNC、JB、JNB、JBC、CJNE、DJNZ等。10.3.5软件陷阱指令冗余使弹飞的程序安定下来是有条件的,首先弹飞的程序必须落到程序区,其次必须执行到冗余指令。当弹飞的程序落到非程序区(如EPROM中未使用的空间、程序中的数据表格区)时,前一个条件即不满足。当弹飞的程序在没有碰到冗余指令之前,已经自动形成一个死循环,这时第二个条件也不满足,对付前一种情况采取的措施就是设置软件陷阱,对于后一种情况采取的措施就是建立程序运行监视系统(WATCHDOG)。所谓软件陷阱,就是一条引导指令,强行将捕获的程序引向一个指定的地址,在那里有一段专门对程序出错进行处理的程序。如果把该程序的入口标号称为ERR的话,软件陷阱即为一条LJMPERR指令,为加强其捕捉效果,一般还在它前面加两条NOP指令,因此,真正的软件陷阱由三条指令构成:
NOPNOPLJMPERR软件陷阱安排在下列四种地方:(1)未使用的中断向量区。有的编程人员将未使用的中断向量区(0003H~002FH)用于编程,以节约ROM空间,这是不可取的。现在EPROM的容量越来越大,价格也不贵,节约几十个字节的ROM空间已毫无意义。当干扰使未使用的中断开放,并激活这些中断时,就会进一步引起混乱。如果在这些地方布上陷阱,就能及时捕捉到错误中断。例如:系统共使用了三个中断:INT0、T0、T1,它们的中断子程序分别为PGINT0、PGT0、PGT1,可按如下方式来设置中断向量区:ORG0000HLJMPMAIN;引向主程序入口LJMPPGINT0;INT0中断正常入口NOP;冗余指令NOP;LJMPERR;陷阱LJMPPGT0;T0中断正常入口NOP;冗余指令NOP;LJMP
ERR;陷阱
`
LJMPPGT1;未使用INT1,设陷阱NOP;冗余指令NOPLJMPERR:陷阱LJMPPGT1;T1中断正常入口NOP;冗余指令NOP;LJMPERR;陷阱LJMPERR;未使用串行口中断,设陷阱NOP;冗余指令NOPLJMPERR;陷阱LJMPERR;未使用T2中断(8052)NOP;冗余指令NOP从0030H开始再编写正式程序,先编主程序还是先编中断服务程序都是可以的。(2)未使用的大片未编程的ROM空间,一般都是2764或27128,很少有将其全部用完的。对于剩余的大片未编程的ROM空间,一般均维持原状0FFH,这对于8051指令系统来讲,是一条单字节指令(MOVR7,A),程序弹飞到这一区域后将顺流而下,不再跳跃(除非受到新的干扰)。只要每隔一段设置一个陷阱,就一定能捕捉到弹飞的程序。有的编程者用力020000(即LJMPSTART)来填充ROM的未使用空间,以为两个00H既是地址,可设置陷阱,又是NOP指令,起到双重作用,实际上是不妥的。程序出错后直接从头开始执行将有可能发生一系列的麻烦事情。软件陷阱一定要指向出错处理过程ERR。可以将ERR安排在0030H开始的地方,程序不管怎样修改,编译后ERR的地址总是固定的(因为它前面的中断向量区是固定的)。这样就可以用0000020030五个字节作为陷阱来填充ROM中的未使用空间,或者每隔一段设置一个陷阱(020030),其它单元保持0FFH不变。(3)表格。有两类表格,一类是数表格,供MOVCA,@A+PC指令或MOVCA,@A+DPTR指令使用,其内容完全不是指令。另一类是散转表格,供JMP@A+DPTR指令使用,其内容为一系列的三字节指令LJMP或两字节指令AJMP。由于表格内容和检索值有一一对应关系,在表格中间安排陷阱将会破坏其连续性和对应关系,只能在表格的最后安排五字节陷阱:NOPNOPLJMP
ERR。由于表格区一般较长,安排在最后的陷阱不能保证一定接到飞来的程序,只有别处陷阱或冗余指令来收服了。(4)程序区。程序区是一连串执行指令构成的,不能在这些指令串中间任意安排陷阱,否则正常执行的程序也被抓走。但是,在这些指令串之间常有一些断裂点,正常执行的程序到此便不会继续往下执行了,这类指令有LJMP、SJMP、AJMP、RET、RETI。这时PC的值应发生正常跳变。如果还要顺次往下执行,必然就出错了。当然,弹飞的程序刚好落到断裂点的操作数上或落到前面指令的操作数上(又没有在这条指令之前使用冗余指令),则程序就会正常执行的程序流程。例如:在一个根据累加器A中内容的正、负、零情况进行三分支的程序中,软件陷阱的安置方式如下:JNZXYZ·;零处理··
AJMPABC;断裂点NOP;陷阱NOPLJMPERRXYZ:JB
ACC7,UVW··;正处理·AJMP
ABC;断裂点NOP;陷阱NOPLJMPERRUVW:·;负处理··ABC:MOVA,R2;取结果RET;断裂点NOP;陷阱NOP;LJMPERR6.程序运行监视系统(WATCHDOG)前已述及,当程序弹飞到一个临时构成的死循环时,冗余指令和软件陷阱也无能为力了,这时系统完全瘫痪。如果操作者在场,可以按下人工复位按钮,强制系统复位,摆脱死循环。但操作者不能一直监视着系统,即使在监视着系统,也往往是在引起不良后果之后才能进行人工复位。为让微机自己来监视系统运行情况,特为系统装加“程序运行监视系统”。国外把“程序运行监视系统”称为WATCHDOG(看门狗),它有如下特性:(1)本身能独立工作,基本上不依赖CPU。(2)CPU在一个固定的时间间隔中和监视系统打一次交道,以表明系统“目前尚正常”。(3)当CPU掉入死循环后,能及时发觉并使系统复位。在8096系列单片机和增强型8051系列单片中,已将该系统做入芯片里,使用起来很方便。而在普通型8051系列单片机系统中,必须由用户自己建立。如果要达到WATCHDOG的真正目标,该系统必须包括一定的硬件部分,它完全独立于CPU之外。如果为了简化硬件电路,也可以采用纯软件的WATCHDOG系统。当硬件电路设计时未考虑到采用WATCHDOG,则软件WATCHDOG是一个比较好的补救措施,只是其可靠性稍差一些。WATCHDOG的硬件部分为一独立于CPU之外的部件,可用单稳电路构成,也可用自带脉冲源的计数器构成。CPU正常工作时,每隔一段时间就输出一个脉冲,将单稳系统触发到暂稳态,暂稳态的持续时间设计得比CPU的触发周期长,因而单稳态系统就不能回到稳态。当CPU陷入死循环后,再也不能触发单稳系统了,单稳系统便可以顺利返回稳态,利用它返回稳态时输出的信号作为复位信号,便可使CPU退出死循环。图10.3.3为用计数器构成的WATCHDOG电路。图10.3.3计数器WATCHIDOG电路将555接成一个多谐振荡器,周期为T0,将74LS93接成十六进制计数器,当数到第八个脉冲时QD端变为高电平。单片机用一条输出端口(例如P17)输出清零脉冲,只要每次清零脉冲的时间间隔短于8个脉冲周期,计数器就总是计不到8,QD端保持低电平。当CPU受干扰而掉入死循环时,就不能送出复位脉冲了,计数器很快数到8,QD端立即变为高电平,经过微分电路C2、R3输出一个正脉冲,使CPU复位。在这里,CPU的复位信号有三个:上电复位(C1、R1),人工复位(Ka、R2、R1)和WATCHDOG复位(C2、R3),通过或门综合后加到RESET端。C2、R3的时间常数不必太大,有数百微秒便可,因为这时CPU的振荡器已经在工作。74KLS93的清零信号为高电平,为防止CPU掉入死循环前将P17变为高电平而使WATCHDOG失效,在P17和计数器的清零端之间加一个微分隔离电路。CPU在平时保持P17为低电平,每间隔一段时间(不超过8个T0),从P17输出一个正脉冲,经微分后使计数器清零。这个微分电路的时间常数可选数秒级。脉冲源555的振荡周期T0大小可由系统软件的循环周期来决定。如果系统有一自始至终都工作的软件时钟系统,可将复零操作放在时钟中断里完成,这时555的振荡周期T0必须大于1/8系统时钟中断周期,通常取1/4~1/2时钟中断周期。如果系统没有固定的定时中断,可将复零操作放在监控循环中执行。如果程序中有查询等待指令(在某些用握手方式跟外设打交道的程序中常出现)时特别注意,如用P11查询:WAIT:JBP11,WAIT这时,有可能外设要持续一段较长时间才能准备好,这段时间如果大于WATCHDOG允许时间,系统将被复位。为此,改成如下结构便可:WAIT:SETBP17;复位WATCHDOGNOPNOPCLRP17;允许WATCHDOG开始工作NOPNOPJBP17WAIT;查询等待上面介绍的WATCHDOG电路是计数器型的,如果要用单稳态电路构成,电路必须仔细推敲,有很多单稳电路是不能靠连续触发来长期维持稳态的,使用中应注意。有时为了简化硬件电路,也可以建立一个软件的WATCHDOG系统。当系统掉进死循环后,只有比这个死循环更高级的中断子程序才能有对CPU的控制权。为此可用一个定时器来做WATCHDOG,将它的溢出中断设定为高级中断(掉电中断选用INT0时,也可设为高级中断,并享有比定时中断优先的地位)。系统中的其它中断均设为低级中断。例如用T0作WATCHDOG,定时约为16ms,可以在初始化时这样建立WATCHDOG:MOVTMOD,#01H;设置T0为16位定时器SETBET0;允许T0中断SETBPT0;设置T0为高级中断MOVTL0,#0C0HMOVTH0,#0E0H;定时约16ms(6MHz晶振)SETBTR0;启动T0SETBEA;开中断以上初始化过程可和其它资源初始化一并进行。如T1也作为16位定时器,则可以用MOVTMOD,#11H来代替MOVTMOD,#01H。WATCHDOG启动以后,系统工作程序必须经常对它发信号,每两次之间的间隔不得大于16ms(例如每10ms发一次)。执行一条MOVTH0,#0E0H指令即可。如果用MOVTH0,#0来工作,它将保持131ms(而不是要求的16ms)。这条指令的安放原则和硬件WATCHDOG相同。当程序掉入死循环后,16ms之内即可引起一次T0溢出,产生高级中断,从而退出死循环。T0中断可直接转向出错处理程序,在中断向量区安放一条LJMPERR即可。由出错处理程序来完成各种善后工作,并用软件方使系统复位。软件WATCGDOG需要系统让出一个定时器资源,这在某些系统中是很难办到的,如果还想采取软件WATCHDOG,可以让T0作兼职WATCHDOG,由于T0中断子程序分担部分工作程序。如果在执行这段工作程序中掉进死循环,WATCHDOG系统当然也同时瘫痪了,因此,这部分兼职工作程序的执行时间应尽可能短些。专职WATCHDOG在正常情况下是不发生溢出中断的,而兼职WATCHDOG在正常情况下必定发生溢出中断,因为它还有兼职的工作要完成。这时可以另外用一个单元作为计数器,统计T0中断的次数。当T0中断次数达到某个规定值时(例如5次),即作出错处理,这时在主程序和其它低级中断子程序中均插入若干条使计数器清零的指令,系统正常运行时,该计数器的值不断被清零,是增加不到满值的,故不会引起出错处理。当系统掉进死循环后,T0中断使程序退出死循环,将计数器加一,然后返回到死循环中继续死循环,然后中断,如此下去,直到计数器加到指定值便作出错处理。兼职WATCHDOG中断子程序结构如图10.3.4所示。设计单元为39H,时钟6MHz,T0定时为5ms。工作方式1,最大允许死循环时间为25ms(5次),中断子程序如下:WATCHDOG:PUSHACC;保护现场
PUSHPSWMOVTL0,#3CH;置初值
MOVTH0,#0F6HINC39H;计数器加一
MOVA,39HADDA,#0FBH;是否达到5次
JNCWATCHLJMP
ERR;出错处理WATCH:…;执行兼职程序POPPSW;恢复现场POPACCRETI;中断返回如果失控程序执行了修改T0功能的指令(这些指令由操作数变形后形成),如CLRTR0、CLRET0、CLRPT0、CLREA,软件WATCHDOG便失效了。这就是软件WATCHDOG的弱点,虽然这种情况发生的概率极小,但在要求较高的系统中,人们还是愿意采用硬件WATCHDOG系统,或采用带有硬件WATCHDOG的单片机。10.4数字信号的软件抗干扰措施上节所述抗干扰措施是针对CPU本身的,还未涉及到输入、输出通道。如果干扰只作用在系统的I/O通道上,CPU工作正常,可用如下方法来使干扰对数字信号的输入、输出影响减小或消失。
10.4.1数字信号的输入方法干扰信号多呈毛刺状,作用时间短,利用这一特点,在采集某一数字信号时,可多次重复采集,直到连续两次或两次以上采集结果完全一致方为有效。若多次采集后,信号总是变化不定,可停止采集,给出报警信号。若数字信号为开关量,如限位开关和操作按钮等,对这些信号的采集不能用多次平均方法,必须绝对一致才行。典型的程序流程如图10.4.1所示。图10.4.1数字信号采集流程图程序清单如下:DIGIN:MOVR2,#0H;初始化空信号
MOVR7,#0AH;最多采集10次
MOVR6,#0H;相同次数初始化
DIGIN0:ACALLINPUT;采集一次数字信号
XCHA,R2;保存本次采集结果
XRLA,R2;与上次比较JNZDIGIN1;相同否?INCR6;相同次数加一CJNER6,#3,DIGIN2;连续三次相同否?MOVA,R2;采集有效,取结果SETBF0;设定成功标志RET;返回DIGIN1:MOVR6,#0;与上次不同,计数器清零DIGIN2:DJNZR7,DIGIN0;限定总次数到否?
CLRF0;次数已到,宣告失败
RET;返回程序中ACALLINPUT是调用一个采集数字信号的过程,采集的结果为8位数字信号,并保存在累加器A中,如果这个采集过程很简单,应该直接将过程替代ACALLINPUT,例如各数字信号直接连在P1口上,便可用一条指令MOVA,P1来取代ACALLINPUT。如果采集过程较复杂,可另编一个INPUT子程序。但要注意,该子程序中不要再使用R2、R6、R7,或换工作寄存器区再使用这三个寄存器,否则出错。如果数字超过8位,可按8位一组进行分组处理,也可定义多字节信息暂存区,按类似方法处理。在满足实时性要求的前提下,如果在各次采集数字信号之间延时处理一下,效果就会好一些,就能对抗较宽的干扰。延时时间在10~100μS左右。对于每次采集的最高次数限额和连续相同次数均可按实际情况适当调整。10.4.2数字信号的输出方法单片机的输出中,有很多是数字信号,例如显示装置、打印装置、通讯、各种报警装置、步进电机的控制信号、各种电磁装置(电磁铁、电磁离合器、中间继电器等)的驱动信号。即使是模拟输出信号,也是以数字信号形式给出,再经D/A转换后才形成的。单片机给出正确的数据输出后,外部干扰有可能使输出装置得到错误的数据。这种错误的输出结果有时会造成重大恶果,但措施得力,也是可以补救的。输出装置与CPU的距离越远(例如超过10米),联线就越长,受干扰的机会就越多。输出设备是电位控制型还是同步锁存型,对干扰的敏感性相差较大。前者有良好的抗“毛刺”能力,后者不耐干扰,当锁存线上出现干扰时,它就会盲目锁存当前的数据,而不管这时数据是否有效。输出设备的惯性(响应速度)与干扰的承受能力也有很大关系。惯性小的输出设备(如通讯口、显示设备等)耐受干扰能力就差一些。不同的输出装置对干扰的耐受能力不同,抗干扰措施也就不同,其措施如下:(1)各类输出数据锁存器尽可能和CPU安装在同一电路板上,使传输线上传送的都是已锁存好的电位控制信号。(2)对于重要的输出设备,最好建立检测通道,CPU可以通过检测通道来检查输出的结果是否正确。(3)软件上重复输出同一数据。只要有可能,其重复周期应尽可能短些。有关输出芯片的状态在执行输出功能时也一并重复设置。例如8155芯片和8255芯片常用来扩展输入输出功能,很多外设均通过它们来获得单片机的控制信息。这类芯片均应编程,以明确各端口的职能。由于干扰的作用,有可能在无形中将芯片的编程方式改变。为了确保输出功能正确实现,输出功能模块在执行具体的数据输出之前,应该先执行芯片的编程指令,再输出有关数据。这样做也将对芯片端口重新定义,使输入模块得以正确执行。对于以D/A转换方式实现的模拟输出,因本质上仍为数字量,同样可以通过重复输出的方式来提高模拟输出通道的抗干扰性能。在不影响反应速度的前提下,在模拟输出端接一适当的RC滤波电路(起到增加惯性的效果),配合重复输出措施便能基本上消除模拟输出通道上的干扰毛刺。
10.4.3数字滤波模拟信号都必须经过A/D转换后才能为单片机接收。若干扰作用于模拟信号,使A/D转换结果偏离真实值。仅采样一次,是无法确定该结果是否可信,必须多次采样,得到一个A/D转换的系列数据,通过某种处理后,才能得到一个可信度较高的结果。这种从系列数据中求取真值的软件算法,通常称为数字滤波算法。它的不足之处是占用CPU机时。干扰信号分周期性和随机性两种,采用积分时间为20ms整数倍的双积分型A/D变换方式能有效地抑制50Hz工频干扰。对于非周期性的随机干扰,常采用数字滤波算法来抑制。它与模拟滤波器相比具有以下优点:(1)数字滤波是用程序实现的,不需要增加任何硬设备,也不存在阻抗匹配问题,可以多个通道共用。不但可以节约投资,还可以提高可靠性、稳定性。(2)可以对频率很低的信号实现滤波,而模拟滤波电路由于受电容容量影响,频率不能太低。(3)灵活性好。可以用不同的滤波程序实现不同的滤波方法。
1程序判断滤波采样的信号,如因常受到随机干扰的传感器不稳定而引起严重失真时,可以采用程序判断滤波。方法是:根据经验确定两次采样允许的最大偏差ΔY,若两次采样信号的差值大于ΔY,表明输入的是干扰信号,应该去掉,用上次采样值作为本次采样值。若小于、等于ΔY,表明没有受到干扰,本次采样值
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《高等数学2》课程教学大纲
- 2024年出售竹荪菌种合同范本
- 2024年出售垃圾车合同范本
- 2024年代还款三方协议书模板范本
- u007f关爱艾滋病病人
- 出科护理技术操作流程
- 人体解剖学培训课件
- 2024-2025学年第一学期期中考试八年级地理学科试卷
- 北京市大兴区2024~2025学年上学期七年级期中数学试卷(含答案)
- 广东省广州市外国语学校附属学校2023-2024学年七年级上学期期中考试语文试卷(含答案)
- 小学美术-点彩游戏-苏少版
- 人工智能在环境保护与资源管理中的应用与创新
- 冬奥会饮食健康知识讲座
- 热塑性树脂课件
- 血常规报告单
- JJG 443-2023燃油加油机(试行)
- 房产赠与协议书电子可打印范本
- 《初中语文教材解析》
- 提升公众演讲与演示能力的技巧
- 教学查房-胃癌
- 关节痛的护理查房
评论
0/150
提交评论