WEO啦

第九章 单片机应用系统中的软件抗干扰设计
收录时间:2023-01-26 03:30:42  浏览:1

1、1/第九章 单片机应用系统中的软件抗干扰设计 9/1干扰的分类及来源 工业现场的干扰按作用方式不同,可将其分为差模干扰和共模干扰两类 。 9/1/1差模干扰(串模干扰、常模干扰) 这是一种直接作用在有用信号输入端,与它呈串联形式的一种干扰。这种 干扰可能是信号源的内阻造成的,也可能是由输入端引线感应进来的,其 频率和波形视现场情况而异,但一般说来,其主要成分是50Hz的工频和它 的高次谐波,通过电磁偶合或由于漏电等原因迭加在有用信号上形成干 扰。通常以常模干扰抑制比(NMRR)来表征信号系统对这种干扰的抑制 能力: NMRR =20lg/2/式中:NMRR常模抑制比; VI1系统输入端干扰电压

2、; VI0系统输入端由VI1引起的最大电压。 显然,NMRR越大,信号系统对串模干扰的抑制能力越强。 9/1/2共模干扰(共式干扰、共态干扰) 这种干扰表现为同时出现在输入信号的两端,对有用信号的两端都造成干扰的一种共式干扰。共模干扰主要是由于地(不论信号地还是大地)电位的不一致造成的。系统中任意的两个接地都可能引起共模干扰。而电磁感应等原因所产生的干扰有时也呈共模形式。共模干扰通过电容耦合或电路耦合等途径转换成串模干扰形式进行干扰。 通常用共模干扰抑制比(CMRR)来表征信号系统对这种干扰的抑制能力: CMRR=20lg/3/在现代工业生产过程中,被测试和控制的参量可能很多,并且是 分散在生

3、产现场的各个地方,要把计算机发出的控制信号传送到 现场中的某个控制对象,或者把传感器所产生的被测信号送到A/D 转换器中,必须通过很长导线,因此被测信号Vx的参考接地点和 计算机端输入信号的参考接地点之间往往存在一定的电位差 Vcm。对于A/D转换器的两个输入端而言,就存在着Vcm的信号 差,形成输入端上共有的干扰电压即共模干扰。/4/9/2常用的抗***件 抗干扰措施比较多,此处先介绍一些常用的抗***件及其抗干扰功能。 9/2/1隔离变压器 一般变压器的绕组之间存在干扰信号的电容性耦合,而隔离变压器能有效地 抑制这种耦合。因此,隔离变压器常用于电源及两个或多个设备之间的电路 性去耦。 1、

4、一般隔离变压器 隔离变压器是一种变比为1:1,在原边与副边绕组之间加有***层的变压 器。如图12-1所示,在原、副边绕组之间加一层不闭口的紫铜皮***层,并 将***层与大地良好地接地。一部分高频干扰电流将由变压器原边通过*** 层形成闭合回路,从而大大减少了干扰的侵入。但这种办法并不能使高频干 扰电流完全旁路,仍有部分干扰信号通过寄生电容C1、C2、C3串入。/5/6/2/超级隔离变压器 为了进一步减少高频噪声,可采用有三层***的超级隔离变压器,如图12-2所 示。这种超级隔离变压器的漏电阻保持在一个高水平(约1000M)上,而且 绕组之间的电容维持在0/001pF、0/005pF、0/0005p

5、F三个等级。 超级隔离变压器的***连接方法是把初级***连至电源地、把次级***连至设 备地(如计算机地)、中间静电***连接大地或系统地。这样连接的效果是, 共模抑制比大于140分贝,寄生耦合抑制比大于150分贝。隔离变压器的输出线 也应采用***线。隔离变压器的次级一般应接计算机系统或其他电子设备的电 源变压器。电源变压器的初、次级绕组之间也要一层不封口的紫铜皮***层与 前面的隔离变压器的***层起到双重***的作用,使绝大部分的高频干扰电流 流入大地,效果会更好。/7/模拟电路中也经常使用隔离变压器作为电信号的电位隔离,使隔离 变压器两侧的回路相对隔离,又能实现相关信号的传递,而高频干 扰电流却被旁

6、路掉。数字系统中可采用脉冲变压器进行隔离,但效 果不如光电耦合器。 9/2/2光电耦合器 光电耦合器是利用光传递信息的,它是由输入端的发光元件和输出 端的受光元件组成的,如图9-3所示。它的发光元件可以是:场致发 光器件、发光二极管(红色光或红外光)、氖灯或钨丝灯。受光元 件可以有:光敏二极管、光敏三极管、光敏可控硅、光敏集成电 路。近年来,许多厂家已生产出多种类型的光电耦合器。由于它的 输入与输出在电气上是完全隔离的,具有很高的抗干扰性能,因而 近年来在微型计算机控制系统中获得广泛应用。/8/9/1、光电耦合器的特点 光电耦合器与常规隔离器件(如脉冲变压器、继电器)相比,具有以下优点: (1

7、)传送方向是单方向的,寄生反馈很小,具有极宽的传送频带。 (2)抗干扰能力强,对周围电磁场的干扰不敏感。 (3)应用范围广,可适用于电位不同的电路间耦合。 (4)体积小,重量轻,耐振,耐冲击。 (5)共模抑制比大。 (6)特别适用于信号源与放大器均需接地的情况,因为在这种情况下,噪声与地环路对磁场的灵敏度有关,利用光电耦合器可拆除地环路,大大抑制了噪声。 光电耦合器的缺点是过载能力有限,以及存在非线性和稳定性与时间和温度有关的***,使用时应注意这些问题。/10/2、光电耦合器应用举例 光电耦合器用于消除干扰噪声是从两方面体现的:一方面是 使输入端的噪声不传递给输出端,只是把有用信号传递到输出

8、端;另一方面,由于输入端到输出端的信号传递是用光实现 的,极间电容很小,绝缘电阻很大,因而输出端信号与噪声也 不会反馈到输入端。 图9-4是在实时控制系统中广泛采用的,微型计算机与外围设备 之间通过光电耦合互连的线路。在大多数情况下,微型计算机 与过程外围设备相距较远,如果用常规的线路传输方式,容易 形成地环路,导致干扰。而采用光电耦合之后,由于两边不共 地,共模抑制比高,因而抗干扰能力大大提高。/11/12/图9-5是用光电耦合器驱动的带感性负载的可控硅电路,由 于感性负载会导致尖峰干扰电压,用光电耦合器驱动可控 硅,负载所产生的尖峰噪声就不会反馈到前级的逻辑电路 中去了。/13/9/2/3

9、隔离放大器 隔离放大器又称缓冲放大器,它的功能不仅是放大, 更主要的是要消除或抑制本级放大器对前级和后级的干 扰。因此,光电耦合、变压器耦合、差动陶瓷电容势垒 耦合等隔离技术被广泛用于隔离放大器,市售隔离放大 器采用光电耦合技术的较多,此处介绍光电耦合集成电 路隔离放大器。 光电耦合集成隔离放大器是光电耦合与运算放大器的 巧妙结合,消除了单纯的光电耦合器过载能力差、非线 性及稳定性受时间、温度的影响的缺点。/14/1/功能描述 图9-6是常用光电耦合集成电路放大器的简化等效电路。 图中CR1为发光二极管。CR2、CR3为光敏二极管,CR2 用于输出级,CR3用于输入级,它们在工作时接收CR1发

10、 出的相同的光,即波长1等于波长2 ,因此I1=I2;用 于输入级的CR3构成运算放大器A1的负反馈电路,使 I1=Vin/RG=Iin,RG为增益调节电阻。运算放大器A2接成 电流电压转换器,其中Vout=I2RK,RK是内部换算电 阻,其值为1M。因此,总的传递函数为/15/16/Vout=Vin 由式(9-3)可以看出,只要两个光敏二极管的光学特性及光学环境一致,传递函数几乎与发光二极管输出的变化无关,提高了时间温度稳定性;而输入级的负反馈则改善了放大器的线性。 这种隔离放大器具有下列特点及功能指标:一般为平衡式输入; 共模电压高, 连续;共模抑制比140dB;漏电流小,最大为0/35A

11、;漏电容1/8pF;增益精度极高;线性度0/05%;稳定性0/05%/1000小时;频带宽15kHz3dB;转换速率1/2V/s。/17/2/应用 由于这种放大器性能优异,已广泛用于工业过程控制、数据采 集、接口元件、生物医学测量、病人监护、测试设备、电流分流 测量、消除地回路的等方面。为了保持它的优异的隔离特性,应 用时应注意下列几点: 输入级应使用有***的双绞线电缆;应注意尽量减少外部电容。 为了得到从输入端到输出端公共回路的平衡电容,外部元件的布 局要对称,这样可保持高的CMRR;外部元件和印刷线路板导线 之间的距离应大于或等于该放大器集成电路输入端与输出端之间 的距离,以免被高压击穿。

12、/18/9/2/4滤波器 滤波器是抑制干扰最有效的手段之一。特别是抑制受 电源感应的导线干扰及抑制模拟电路中的串模干扰。 1、电源滤波器 电源滤波器用于抑制有电源感应的导线干扰,是一种低 通滤波器,它对50赫兹的低通电压阻抗很小,可以直接 通过,而对高频干扰信号则将其旁路入地。图9-7 (a)、(b)、(c)为几种简单的电源滤波器电路原理 图。/19/20/电源滤波器对工频干扰信号,不管是以共模还是串模的形态出现 均有很高的衰减作用。共模形态的干扰将沿地线被滤除,串模干 扰将被旁路掉,因此在滤波器的公共端往往流过相当大的浪涌噪 声电流,故公共端应与外壳相连后接入大地。 2、模拟线路中的信号滤波

13、 用于模拟电路中的信号滤波器是一个选频网络。它的功能是让指定 频段的信号通过,将其余频段的信号衰减,滤波器所传输的频率范 围称通频带(或频带);滤波器不能传输的频率范围称为阻带。按 通频带部位的不同,滤波器可分为低通、高通、带通、带阻等。最 为常用的是简单的RC低通滤波器。因为被测信号一般为直流信号或 变化缓慢的交流信号,而干扰信号大多有较高的频带。因此利用RC 滤波器的“低通”滤波功能,能较好地除去高频干扰。/21/9/2/5 DC-DC转换器 DC-DC转换器是一种模块电源,它可以将一种直流电压(如5V、12V、24V、48V、等)转换成控制系统中需要的一种多种直流电压输出,并且具有灵活的

14、、高效率的功率分配能力。DC-DC变换器的开关速度一般在100kHz以上,远大于系统的带宽,有效地减少了体积,扩大了应用范围。 DC-DC变换器分为两种类型:带电压隔离和不带电压隔离的。隔离型DC-DC变换器中需利用变压器;无隔离型变换器中利用升压或补偿电路,这取决于其输出电压是大于还是小于输输入电压。/22/1。组成及工作原理 DC-DC变换器一般由滤波器、调制器、变压器、解调器 组成。其基本工作原理是:输入的直流信号经滤波后调制成交流信号,经变压器或有关电路获取需要交流信号幅值,然后通过解调器分离出需要的直流电压。DC-DC变换器中输入级的滤波器通常采用型,主要用途是减少来自系统电源的噪声

15、和滤除由调制器的开关电路产生反射回来的脉冲信号。其输出级的滤波器可以是一个电容器或型滤波器,目的是消除输出信号中的脉动分量。调制器通常使用脉宽调制(PWM)技术,而最常用的解调器是整流器。为减少射频干扰,多采用六面金属***。/23/2主要性能指标 DC-DC变换器的主要性能指标是: 输入电压:可为5V、12V、24V等; 最大输入电流; 输出电压;一组或两组; 输出电流; 隔离电压:一般在1000V(峰峰)以上; 全***; 工作环境温度070或2585; 转换效率(一般在6070%之间)。 常用抗干扰措施比较多,但总的来说可分为两大类,一是硬件抗干 扰,二是软件抗干扰。/24/9/3硬件抗干扰

16、 9/3/1差模干扰的抑制方法 针对差模干扰信号的特性和来源,可采用如下抑制措施: (1)若差模干扰频率比被测信号频率高,则采用输入低通滤波器来抑制高频 差模干扰。如果差模干扰频率比被测频率低,则采用输入高通滤波器来抑制 低频差模干扰。如果干扰频率处于被测信号频谱的两侧,则应该使用带通滤 波器较为适宜。一般差模干扰要比被测信号变化快,故常用两级阻容低通滤 波网络作为模/数转换器的输入滤波器。 (2)当尖峰型差模干扰成为主要干扰源时,用双斜率积分模/数转换器可以 削弱差模干扰的影响。因为此类变换器是对输入信号的平均值,而不是对瞬 间值进行转换,所以对尖峰干扰具有抑制能力。若取积分周期等于主要差模

17、 干扰的周期或为其整数倍,则通过积分比较变换器后,对差模干扰会有更好 的效果。/25/(3)在电磁感应作为差模干扰的主要发生源的情况下,对被测信号 应尽可能早地进行前置放大,从而达到提高回路中的信号噪声比的 目的;或者尽可能早地完成模/数变化,也可以采用隔离和***等措 施。 (4)如果差模干扰的变化速度与被测信号相当,则上述措施的效果 不佳,这时可以采用以下方法: 从根本上消除产生差模干扰的原因。对测量仪表(如热电偶、压力变送器、差压变送器等)进行良好的电磁***;测量仪表到计算机的信号线应选用带有***层的双绞线或同轴电缆线,并应有良好的接地措施; 利用数字滤波技术对进入计算机的带有差模干扰的数

18、据进行处理。从而可较理想地滤除难以抑制的差模干扰。/26/9/3/2共模干扰的抑制方法 共模干扰是常见的干扰源,因此如何抑制共模干扰对工业控制技术 的应用关系很大。常用的共模抑制方法有: (1)利用变压器或光电耦合器把各种模拟负载与数字信息源隔离开 来,也就是把“模拟地”与“数字地”断开。被测信号通过变压器耦合 或光电耦合获得通路,使共模干扰由于不成回路而得到有效的抑 制。 也可利用光电耦合器的开关特性组成的具有串行接口功能的共模抑 制线路。在这种线路中,由于光电耦合器有很高的输入/输出绝缘电 阻和较高的输出阻抗,因此能抑制较大的共模干扰电压。/27/当共模干扰电压很高或要求共模漏电流非常小时

19、,常在信号源与计算机的 共模传送途径中插入隔离放大器,利用光电耦合器的光隔离技术或者变压 器耦合的载波隔离技术,把“数字地”和“模拟地”隔离开来,从而消除共模 干扰的产生途径,达到将输入数据和系统电平隔离开来的目的。 (2)采用浮地输入双层***放大器来抑制共模干扰。这是利用***方法 使输入信号的“模拟地”浮空,从而达到抑制共模干扰的目的。 (3)利用双端输入的运算放大器作为模/数转换器的前置放大器。 (4)用仪表放大器来提高共模抑制比。它是一种用于分离共模干扰与有用信号的器件。/28/9/4 软件抗干扰技术 9/4/1数字滤波 所谓数字滤波,就是通过特定的计算程序处理,降低干扰信号在有 用信号

20、中的比例,故实质上是一种程序滤波。数字滤波可以对各种 干扰信号,甚至极低频率的信号滤波。数字滤波由于稳定性高,滤 波器参数修改方便,因此得到广泛应用。 与模拟滤波器相比,数字滤波器有以下优点:不需要增加任何 硬设备,只要程序在进入数据处理和控制算法之前,附加一段数字 滤波程序即可;不存在阻抗匹配问题;可以对频率很低,如 0/01Hz的信号滤波,而模拟RC滤波器由于受电容容量的影响,频率 不能太低;对于多路信号输入通道,可以共用一个滤波器,从而 降低仪表的硬件成本;只要适当改变滤波器程序或参数,就可以 方便地改变滤波特性,这对于低频脉冲干扰和随机噪声的克服特别有效。/29/(1)限幅滤波 当采样

21、信号由于随机干扰而引起严重失真时,可以采用限幅滤波。 根据经验,确定出两次采样信号可能出现的最大偏差y。所谓限幅 滤波,就是把两次相邻的采样值相减,求出其增量(以绝对值表 示),然后与两次采样允许的最大差值y进行比较。如果小于或等 于y,则取本次采样值;如果大于y,则仍取上次采样值作为采 样值。 这种滤波方法主要用于变化缓慢的参数测量,如温度、液位等。也 可以在大电流、大电感负载切断时,即干扰的特点为时间短,但幅 值却很大的情况下使用。 当前采样值存30H,上次采样值存31H,结果存32H。y根据经验 确定,程序流程图如9-8所示:/30/31/程序清单如下: XF-FILTERING:PUS

22、H ACC ;保护现场 PUSH PSW MOV A,30H ;YnA CLR C SUBB A,31H ;Yn-Yn-1 JNC LPO ;Yn-Yn-1o0? CPL A ;YnY?/32/LPl:MOV 32H,30H ;等于Y本次采样值有效 AJMP LP3 LP2:JC LPl MOV 32H,31H ;小于y本次采样值有效 LP3:POP PSW ;大于Y Yn=Yn-1 POP ACC ;恢复现场 RET 只有当本次采样值小于上次采样值才进行求补,保证本次采样值 有效。/33/(2)中位值滤波 中位值滤波是对某一被测量连续采样N次(一般N取为奇数),然后把N次采样值按大小排列,取

23、中间值为本次采样值。中位值滤波能有效地克服偶然因素引起的波动。对于温度、液位等缓慢变化的被测量,采用此法能收到良好的滤波效果,但对于流量、压力等变化较快的被测量,一般不宜采用中位值滤波。 中值滤波就是连续输入3个检测信号,从中选则个中间值作为有效信号。本例第次采集的数据存R1,第二次采集的数据存R2,第三次采集的数据存R3。中值存R0。程序清单下:/34/MV:PUSH PSW ;保护PSW、A PUSH A MOV A,R1 ;第次采集的数据送A CLR C SUBB A,R2 JNC LOB01 ;第1次采集的数据大于第二次采集的数据 转LOB01 MOV A,R1;第1次和第2次采集的数

24、据互换 XCH A,R2 MOV R1,A LOB0l: MOV A,R3 CLR C SUBB A,R1 JNC LOB03 ;第3次采集的数据大于第1次采/35/集的数据转LOB03 MOV A,R3 CLR C SUBB A,R2 JNC LOB04 ;第3次采集的数据大于第2次采集的数据, 转LOB02 MOV A,R2 MOV R0,A LOB02:POP ACC ;恢复PSW、A POPPSW RET/36/LOB03:MOV A,R1 MOV R0,A AJMP LOB02 LOB04:MOV A,R3 MOV R0,A AJMP LOB02/37/(3)平滑滤波 叠加在有用数据

25、上的随机噪声在很多情况下可 以近似地认为是白噪声。白噪声具有一个很重要 的统计特性,即其统计平均值为零。因此,可以 用求平均值的办法来消除随机误差,这就是所谓 平滑滤波。如图9-9所示。平滑滤波有以下几 种。/38/39/(4)算术平均滤波法 算术平均滤波法适用于对一般的具有随机干扰的信号进行滤波。这 种信号的特点是信号本身在某一数值范围附近上下波动,如测量流 量、液位时经常遇到这种情况。 算术平均滤波是要按输入的N个采样数据xi(i1,2,N),寻找 这样一个y,使y与各采样值之间的偏差的平方和最小,即使 由一元函数求极值的原理可得 上式即为算术平均滤波的算式。/40/设第i次测量的测量值包

26、含信号成分Si和噪声成分ni,则进行N次 测量的信号成分之和为 噪声的强度是用均方根来衡量的,当噪声为随机信号时,进行N 次测量的噪声强度之和为 式中,S,n分别为进行N次测量后信号和噪声的平均幅度。这 样,对N次测量进行算术平均后的信噪比为/41/式中,Sn是求算术平均值前的信噪比,因此采用算术平均值后,信噪比提高了倍。 由式(9-5)可知,算术平均值法对信号的平滑滤波 程度完全取决于N。当N较大时,平滑度高,但灵敏度低,即外界信号的变化对测量计算结果 的影响小;当N较小时,平滑度低,但灵敏度 高。应按具体情况选取N。如对一般流量测量, 可取N812;对压力等测量,可取N4。/42/(5)递

27、推平均滤波法 算术平均滤波方法每计算一次数据,需测量N次,对于测量速度 较慢或要求数据计算速率较高的实时系统,则无法使用。如果在存 储器中,开辟一个区域作为暂存队列使用,队列的长度固定为N, 每进行一次新的测量,把测量结果放人队尾,而扔掉原来队首的那 个数据,这样在队列中始终有个“最新”的数据,这就是递推平均滤 波法。即/43/式中,y(k)为第k次滤波后的输出值,x(ki)为依次向前 递推i次的采样值,N为递推平均项数。 递推平均项数的选取是比较重要的环节,N选得过大,平 均效果好,但是,对参数变化的反应不灵敏;N选得过 小,滤波效果不显著。关于N的选择与算术平均滤波法相 同。片外RAM20

28、00H一202FH作为循环队列。每次数据 采集时先扔掉队首一个数据,再把新数据放入队尾,然 后计算平均值。/44/(6)加权移动平均滤波法 递推平均滤波法最大的问题是随着随机误差的消除,有用信号的灵敏度也降低丁。因为我们假设对于N次内的所有采样值,在结果中所占比重是均等的。用这样的滤波算法,对于时变信号会引入滞后。N越大,滞后越严重。为了增加新的采样数据在滑动平均中的比重,以提高系统对当前采样值中所受干扰的灵敏度,可以对不同时刻的采样值加以不同的权,通常越接近现时刻的数据,权取得越大。然后再相加求平均,这种方法就是加权移动平均法。N项加权移动平均滤波算法为/45/式中,y为第N次采样值经滤波后

29、的输出;XN-i为未经滤波的第NI 次采样值;C0,C1,CN-1,为常数,且满足以下条件 C0+C1+CNl1 (9-8) C0C1CN-l0 (9-9) 常系数C0,C1,CN-1的选取有多种方法,其中最常用的是加 权系数法。设为被测对象的纯滞后时间,且/46/因为:越大,备越小,则给予新的采样值的权 系数就越大,而给予先前采样值的权系数就越 小,从而提高了新的采样值在平均过程中的比 重。所以,加权移动平均滤波适用于有较大纯 滞后时间常数f的被测对象和采样周期较短的测 量系统;而对于纯滞后时间常数较小、采样周 期较长、变化缓慢的信号,则不能迅速反映系 统当前所受干扰的严重程度,滤波效果较差

30、。/47/(7)一阶惯性滤波 在检测系统的电路中常常伴随有电源干扰及工业于扰,这些干扰的 特点是频率很低(如频率为0/01Hz)。对这样低频的干扰信号,采用 RC滤波显然是不适宜的,因为C太大,很难做到。 但是,用数字滤波就很容易解决。假设一阶RC滤波器的输入电压为 x(t),输出为y(t),则 设采样时间间隔t足够小,将式(8-11)离散为 式中=RC为时间常数。即/48/整理后,得 式中, 通过实际运行来确定时间常数,不断地计算出f值,当低频周期性 噪声减至最弱时,即为滚滤波器的r值。一阶惯性滤波的缺点是造成 信号的相位滞后,滞后相位的大小与Q值有关。如果相位滞后太 大,还必须采取其他补救

31、措施。/49/(8)复合滤波 在实际应用中,所受到的随机扰动往往不是单一的,有时既要消除 脉冲扰动的影响,又要进行数据平滑。因此,在实际中往往把前面 介绍的两种或两种以上的滤波方法结合在一起使用,形成所谓的复 合滤波,例如,防脉冲扰动平均值滤波算法就是一种实例。这种算 法的特点是先用中位值滤波算法滤掉采样值中的脉冲干扰,然后把 剩下的各采样值进行滑动平均滤波。其基本算法为: 如果,其中,3N14,X1和XN分别是所有采样值中的最小值和 最大值,则/50/由于这种滤波方法兼容了滑动平均滤波算法和中位值滤波算法的优 点,所以,无论是对缓慢变化的过程变量,还是快速变化的过程变 量,都能起到较好的滤波

32、效果。上面介绍了几种使用较为普遍的克 服随机千扰的软件算法,一个检测系统究竟应选用哪种滤波算法, 取决于使用场合及过程中所含随机干扰的情况。 (9)防脉冲干扰平均值滤波 连续进行4次数据采样,去掉其中最大值和最小值,然后求剩下 的两个数据的平均值。R2R3存放最大值,R4R5存放最小值,R6R7 存放累加和及最后结果。连续采样不仅限4次,可以进行任意次,这 时,只需改变R0中的数值。/51/52/程序清单 CLR A MOV R2,A ;0最大值寄存器R2R3 MOV R3,A MOV R6,A ;0累加和寄存器R6R7 MOV R7,A MOV R4,#3FH ;3FFH最小值寄存器R4R5

33、 MOV R5,#0FFH; MOV R0,#4H DAV1:LCAlL RDXP ;读AD-B/A MOV R1,A ADD A,R7 MOV R7,A MOV A,B ADDC A, RS ;(R6、R7)+(BA) (R6R7)/53/MOV R6,A CLR C MOV A,R3 SUBB A,R1 MOV A,R2 SUBB A,B JNC DAV2 ;输入值(R2R3)? MOV A,R1 MOV R3,A MOV R2,B ;输入值R2R3/54/DAV2:CLR C MOV A,R1 SUBB A,R3 MOV A,B SUBB A,R4 JNC DAV3 ;输入值(R4R5)

34、? MOV A,R1 MOV R5,A ;输入值R4RS MOV R4,B/55/DAV3:DJNZ R0,DA V1 ;N-1=0? CLR C MOV A,R7 SUBB A,R3 XCH A,R6 SUBB A,R2 XCH A,R6 SUBB A,R5 XCH A,R6 SUBB A,R4 ;N个数据减大减小 CLR C RRC A XCH A,R6 ;剩下数据求平均值 RRC A MOV R7,A RET/56/一阶滞后滤波 变化过程比较慢的参数,可 采用+阶滞后滤波。方法是第 n次采样 后滤波结果输出值是(1-)乘 第n次采样值加乘上次滤波 结果输出值。 =滤波环节时间常数滤皮环节

35、时间常数+采样周期 程序框图如9-11所示:/57/为34,1-为14,Xn存放30H(小数),31H(整数),Yn-1存放32H(小 数)、33H(整数)。 程序清单 MOV A,31H MOV B,#04H DIV AB MOV 31H,A MOV A,B MOV B,#04H DIV AB MOV 30H,A MOV A,33H MOV B,#04H DIV AB MOV 33H,A/58/MOV A,B MOV B,#04H DIV AB MOV 32H,A MOV B,#03H MUL AB MOV 32H,A MOV R1,#00H JNB 0D2H,L1 MOV R1,#01H

36、L1:MOV A,33H MOV B,#03H/59/MUL AB ADD A,R1 MOV 33H,A MOV R1,#30H MOV R0,#22H MOV R3,#02H ACALL SCl SC1:MOV A,R0 MOV R4,A MOV A,R3/60/MOV R7,A CLR C A2:MOV A,R0 ADDC A,R1 MOV R0,A INC R0 1NC R1 DJNZ R7,A2 RET/61/9/4/2单片机执行过程中的软件抗干扰措施 (1)采用指令冗余处理程序“跑飞” 所谓程序“跑飞”,就是单片机在正常运行过程中,遇到外界干扰 使CPU发生混乱引起“死机”的现象。程

37、序“跑飞”后,使其恢复正常 最简单的方法是让CPU复位,让程序从头开始重新运行。这种方法 虽然简单,但需要人的参与,而且复位不及时。人工复位一般是在 整个系统已经瘫痪且无计可施的情况下才不得已而为之的。因此, 在进行软件设计时就要预先考虑到万一程序“跑飞”,应让其能够 自动恢复到正常状态下运行。 程序“跑飞”后往往将一些操作数当作指令码来执行,从而引起整个 程序的混乱。消除程序“跑飞”的方法之一,是采用“指令冗余”使“跑 飞”的程序恢复到正常的状态中。/62/所谓“指令冗余”,就是指在一些关键的地方人为地插入一些单字节 的空操作指令NOP。当程序“跑飞”到某条单字节指令上,就不会发 生将操作数

38、当成指令来执行的错误。对于MCS51单片机来说,所 有的指令都不会超过三个字节,因此在某条指令前面插入两条NOP 指令,则该条指令就不会被前面冲下来的失控程序拆散,而会得到 正确的执行,从而使程序重新纳入轨道。通常是在一些对程序的流 向起关键作用的指令前插入两条NOP指令。这些指令有RET、 RETI、ACALL、LCALL、SJMP、AJMP、JZ、JNZ、JC、 JNC、JB、JNB、JBC、JBNZ、DJNZ等。在某些对系统工作状态 起至关重要的指令(如SETBEA之类)前也可插入两条NOP指令,以保 证这些指令被正确执行。值得注意的是,在一个程序中,“指令冗 余”不能过多,否则会降低程

39、序的执行效率。/63/(2)采用软件陷阱处理程序“跑飞” 采用“指令冗余”,使“跑飞”的程序恢复正常是有条件的。首先, “跑飞”的程序必须落到程序区;其次,必须执行到所设置的冗余指 令。如果“跑飞”的程序落到非程序区(如EPROM中未用完的空间或 某些数据表格区等),或在执行到冗余指令前已经形成一个死 循 环,则“指令冗余”措施就不能使“跑飞”的程序恢复正常。这时可采 用另一种抗干扰措施,即所谓的“软件陷阱”。“软件陷阱”是一条引 导指令,强行将捕获的程序引向一个指定的地址,在那里有一段专 门处理错误的程序。假设这段处理错误的程序入口地址为ERROR, 则下面三条指令即组成一个“软件陷阱”。

40、NOP NOP LJMPERROR ;转到预先设计的入口执行/64/“软件陷阱”一般安排在下列四种地方。 1)未使用的中断向量区 MCS5l单片机的中断向量区为0003H002FH。如果系统程序未 使用完全部中断向量区,则可在剩余的中断向量区安排“软件陷 阱”,以便能捕捉到错误的中断。例如,某系统使用了两个外部中断 INTo、INTl和一个定时器溢出中断T0,它们的中断服务子程序入口 地址分别为TO_INTo、TO_INTl和TO_To,即可按下面的方式来设 置中断向量区: ORG 0000H START: LJMP TO_MAIN ;引向主程序入U ORG 0003H/65/LJMP TO_

41、 INT0 ;INT0中断服务程序入口 NOP ;冗余指令 LJMP ERROR ;陷阱 ORG 000BH LJMP TO_T0 ;To中断服务程序入口 NOP ;冗余指令 NOP LJMP ERROR ;陷阱 ORG 0013H LJMP TO_INT1 ;INTl中断服务程序入门 NOP ;冗余指令 NOP LJMP ERROR ;陷阱 ORG 00lBH/66/LJMP ERROR ;未使用n中断,设陷阱 NOP ;冗余指令 NOP LJMP ERROR ;陷阱 ORG 0023H LJMP ERROR ;未使用申口中断,设陷阱 NOP ;冗余指令 NOP LJMP ERROR ;陷阱

42、 ORG 002BH LJMP ERROR ;未使用T2中断,设陷阱 NOP ;冗余指令 NOP TO_MAIN: ;主程序/67/2)未使用的大片FLASHROM空间 程序一般都不会占用FLASHROM芯片的全部空间。对于剩余未编 程的FLASHROM空间,一般都维持原状,即其内容为0FFH 0FFH对于AT89S51单片机的指令系统来说是一条单字节的指令: MOV R7,A。 如果程序“跑飞到这一区域,则将顺利向后执行,不 再跳跃(除非又受到新的干扰),因此,在这段区域内每隔一段地址设 一个陷阱,就一定能捕捉到“跑飞”的程序。/68/3)表格 有两种表格:一类是数据表格,供MOVC A,A

43、+PC指令或MOVC A,A+DPTR指令使用,其内容完全不是指令;另一类是散转表格,供JMPA+DPTR指令使用,其内容为一系列的三字节指令LJMP或二字节指令AJMP。由于表格的内容与检索值有一一对应的关系,在表格中间安排陷阱会破坏其连续性和对应关系,因此,只能在表格的最后安排陷阱。如果表格区较长,则安排在最后的陷阱不能保证一定能捕捉“跑飞”来的程序,程序有可能在中途再次“跑飞”,这时只好指望别处的陷阱或冗余指令对其进行捕捉。/69/4)程序区 程序区是由一系列的指令构成的。不能在这些指令中间任意安排陷阱,否则会破坏正常的程序流程。但是,在这些指令中间常常有一些断点,正常的程序执行到断点处

44、就不再往下执行了,这类指令有LJMP、SJMP、AJMP、RET、RETI等。CPU执行到这些指令时,PC的值应发生正常跳变。如果在这些指令处设置陷阱,就有可能捕捉到“跑飞”的程序。例如,对一个A累加器的内容的正、负、和的情况进行三分支的程序,软件陷阱安排如下:/70/JNZ TO_XYZ ;0处理 AJMP ABC_SUB ;断点 NOP NOP LJMP ERROR ;陷阱 TO_XYZ:JB ACC/7,TO_UVW ;正处理 AJMP ABC_SUB ;断点 NOP NOP LJMP ERROR ;陷阱/71/TO_UVW: ;负处理 ABC_SUB:MOV A,R2 ;取结果 RET

45、 ;断点 NOP NOP LJMPERROR ; 陷阱由于软件陷阱都安排在正常程序执行不到的地方, 故不会影响程序的执行效率。在FLASHROM容量允许的 条件下,这种软件陷阱多一些为好。/72/(3)使用“看门狗”处理程序“跑飞” 如果“跑飞”的程序落到个临时构成的死循环中,冗余指令和软件 陷阱都将***为力,这时可采取WATCHDOG(俗称“看门狗”)措 施。 WATCHDOG有如下特性: 本身能***工作,基本上不依赖于CPU。CPU只在一个固定的时间间隔内与其打一次交道,表明整个系统“目前尚属正常”。 当CPU落入死循环后,能及时发现并使整个系统复位。 在AT89S系列单片机中,已将“看门

46、狗”功能集成到芯片中,使用起 来很方便。WDT包含一个14位计数器和看门狗定时器复位寄存器 (WDTRST)。用户只要按先写01EH/紧接着写入0E1H的顺序,将 代码01EH和0E1H写入WDTRST寄存器(地址为0A6H),WDT的 定时器便启动计数。具体操作如下:/73/MOVWDTRST/#1EH MOVWDTRST/#0E1H 在振荡器有效运行情况下,计数器每个机器周期将加1。 在WDT启动之后,每次向WDTRST内重装数据 01EH和 0E1H,WDT定时器便重新停止WDT计数。WDT溢出 时,将在器件的RST引脚上输出一个正脉冲。WDT溢出 时,不仅可使弹片机复位,程序从0000

47、H开始执行,而且 在RST引脚上输出一个高电平脉冲,其宽度是98个振荡 器周期。 WDT一旦溢出,便停止计数。/74/在实际应用中,为防止WDT启动后产生不必要的溢出,应在执行运 行程序过程中,周期性地复位WDTRST。周期应小于16 383个机器 周期。当单片机因干扰而使程序不能正常运行时,也就不可以定期 复位WDTRST,导致WDT溢出。片内没有看门狗的单片机,可选 用专用单片机电源管理芯片,该系统必须包括一定的硬件电路,它 完全***于CPU之外。如果为了简化电路,也可采用纯软件的 WATCHDOG系统。 利用IMP805L集成电路构成的“看门狗”电路。它若在l/6s内末检测到 CPU送来

48、的WDI信号,IMP805L内部定时器将使看门狗输出 WDO处于低电平状态。WDO通过MR引脚使RESET输出高电 乎,并复位单片机。/75/如果将WDI悬空或连接到一个三态电路,看门狗的功能则被禁止, 即被清0且不计 数。如果产生复位信号,看门狗定时器也会被禁 止。当复位信号无效且WDI输入检测到短至50ns的高电子或低电干 跳变时,看门狗定时器将开始1/6s的计数。WDI端的跳变会复位看 门狗定时器并启动一次新的计数周期。除了硬件电路外,也可用软 件程序来形成WATCHDOG。例如,可以采用AT89S51引的定时器 To来形成WATCHDUG。将To的溢出中断设为高优先级中断,其它 中断均设置为低优先级中断。若采用6 MHz的时钟,则可用以下程 序定时约10ms来形成软件WATCHDOG。 MOV TMOD,#01H ;置T0为定时器 SETB ET0 ;允许To中断 SETB PT0 ;设置T0为高优先绁中断/76/MOV TH0

温馨提示:
1. WEO啦仅展示《第九章 单片机应用系统中的软件抗干扰设计》的部分公开内容,版权归原著者或相关公司所有。
2. 文档内容来源于互联网免费公开的渠道,若文档所含内容侵犯了您的版权或隐私,请通知我们立即删除。
3. 当前页面地址:https://www.weo.la/doc/0d571abc2cb31da0.html 复制内容请保留相关链接。