在实际应用中,干扰信号可能影响到智能仪表的CPU、程序计数器(PC)或RAM等,导致程序运行失常。因此,在设计智能仪表时除了在硬件方面采取抗干扰措施外,必须考虑软件的抗干扰措施。
干扰对软件的影响有两个方面,即程序运行失常和数据受干扰而发生变化。单片机系统受到干扰后,会使RAM、程序计数器或总线上的数字信号错乱,从而引发一系列不良后果。CPU得到错误的数据,就会使运行操作出错,导致错误结果,并将错误一直传递下去,形成一系列错误。如果CPU获得错误地址信息,会使程序失控,即便此后程序恢复到正常状态,但是已经造成不良后果,埋下隐患,最终导致后续程序出错。同时,如果干扰改变RAM以及特殊功能寄存器的状态,可能导致数值误差,改变程序状态,引起误动作。
软件抗干扰的任务在于CPU抗干扰技术和输入输出的抗干扰技术两方面。前者主要是防止因干扰造成的程序“跑飞”,后者主要是消除信号中的干扰以便提高系统准确度。
1.数字滤波技术
随机干扰会使仪表产生随机误差。随机误差是指在相同条件下测量某一量时,其大小符号作无规律变化的误差,但随机误差在多次测量中服从统计规律。在硬件设计中可以模拟滤波器来削弱随机误差,但是它在低频、甚低频时实现较困难。数字滤波可以完成模拟滤波的功能,而且与模拟滤波相比,它具有如下优势:数字滤波是用程序实现的,无须添加硬件,可靠性高,稳定性好,不存在阻抗匹配的问题,而且多个输入通道可以共用,从而降低系统硬件成本;可以根据需要选择不同的滤波方法或改变滤波器的参数,使用灵活方便;数字滤波器可以对频率很低的信号进行滤波,而模拟滤波由于受电容容量的限制,频率不能太低。
常用的数字滤波算法有程序判断滤波、中值滤波、算术平均值滤波、滑动平均值滤波、加权滑动平均滤波、一阶惯性滤波等。
(1)程序判断滤波
经验说明,许多物理量的变化都需要一定时间,相邻两次采样值之间的变化有一定的限度。程序判断滤波的方法,便是根据生产经验,确定出相邻两次采样信号之间可能出现的偏差ΔY。若超过此偏差值,表明该输入信号是干扰信号,应该去掉;若小于此偏差值,则信号作为本次采样值。当采样信号由于随机干扰,如大功率用电设备的起动或停止,造成电源的尖锋干扰或误测,以及变送器不稳定而引起的严重失真等,可分为限幅滤波和限速滤波两种。
1)限幅滤波。限幅滤波就是将两次相邻的采样值相减,求出其增量(以绝对值表示),然后与两次采样允许的最大差值ΔY进行比较,若小于或等于最大差值ΔY,则取本次采样值;若大于最大差值ΔY,则取上次采样值作为本次采样值,即当Y(k)-Y(k-1)≤ΔY,则Y(k)=Y(k),取本次采样值;当Y(k)-Y(k-1)>ΔY,则Y(k)=Y(k-1),取上次采样值,其中Y(k)为第k次采样值;Y(k-1)为第k-1次采样值。
这种程序滤波方法,主要用于变化比较缓慢的参数,如温度、物理位置等测量系统。
2)限速滤波。限幅滤波是用两次采样值来决定采样结果,而限速滤波则最多可用三次采样值来决定采样结果。设顺序采样时刻t1、t2、t3所采集的参数分别为Y(1)、Y(2)、Y(3),则
当Y(2)-Y(1)≤ΔY时,Y(2)输入计算机;
当Y(2)-Y(1)>ΔY时,Y(2)不能采用,但保留,继续采样得到Y(3);
当Y(3)-Y(2)≤ΔY时,Y(3)输入计算机;
当Y(3)-Y(2)>ΔY时,则取[Y(2)+Y(3)]/2输入计算机。
限速滤波程序流程如图2-3-15所示。限速滤波是一种折中的方法,既照顾了采样的实时性,又顾及
图2-3-15 限速滤波程序流程
了采样值变化的连续性。
在实际使用中,可用[Y(2)-Y(1)+Y(3)-Y(2)]/2取代ΔY,这样也可基本保持限速滤波的特性,虽然增加了运算量,但灵活性大为提高。
(2)中值滤波
中值滤波是对某一参数连续采样N次(取N为奇数),然后把N次的采样值从小到大,或从大到小排队,再取其中间值作为本次采样值。对于变化缓慢的变量,采用中值滤波效果比较好,但对快速变化的参数则不宜采用。
中值滤波程序设计的实质是,首先把N个采样值从小到大或从大到小进行排队,然后再取中间值。其中采样值的排序可以采用冒泡法、沉底法等。程序流程如图2-3-16所示,连续采样次数N=3,且M为所获得的中间值,Y1、Y2、Y3为依次连续采样三次的数据。
图2-3-16 中值滤波流程
(3)算术平均值滤波
算术平均值滤波公式为
由此可见,算术平均值滤波是把一个采样周期内N次采样值Xi相加,然后再除以采样次数N,得到该周期内的采样值Y。算术平均值滤波的平滑度和灵敏度取决于N的大小。当N较大时,平滑度高,但灵敏度低;当N较小时,平滑度低,但灵敏度高。应根据具体情况选取N,一般为2的整数幂。对于一般流量测量,取N=8或16;对于压力等测量,取N=4。
算术平均值滤波特别适用于信号本身在某一数值附近上下波动的情况,但不能用于脉冲干扰严重的场合。
(4)滑动平均值滤波
算术平均值滤波需要连续采样N个数据,然后求算术平均值。由于必须采样N个数据,需要的时间较长,因而检测的速度较慢。为了克服这个缺点,可以采用滑动平均值滤波法。所谓滑动平均值滤波,就是在RAM区建立一个数据缓冲区,依次存放N次的采样数据,每采进一个新的数据,就将最早采集的那个数据丢掉,然后求包括新数据在内的N个数据的算术平均值。这样,每采进一个新的数据,就可以计算出一个新的平均值,大大加快了数据的处理速度。这种滤波程序设计的关键是,每采样一次,移动数据块一次,然后求出新一组数据的和,再求平均值。(www.xing528.com)
(5)加权滑动平均滤波
在算术平均值滤波和滑动平均滤波算法中,N次采样值在输出结果中的权重是均等的。对于时变信号采用这种滤波算法,会引入滞后,N越大,滞后越严重。为了增加新的采样数据在滑动平均中的比重,以提高系统对当前采样值的灵敏度,可采用加权滑动平均滤波法。它是对滑动平均滤波的一种改进,即对不同时刻的数据加以不同的权。通常越接近现时刻的数据,权系数越大。这种滤波算法为
式中 Yn——第n次采样值经滤波后的输出;
Xn-i——经过滤波的第n-i次采样值;
Ci——常数,且满足以下关系式:
C0+C1+…+CN-1=1,C0>C1>…>CN-1>0
(6)一阶惯性滤波
将其离散化处理后得到差分方程
Y(k)=(1-α)·Y(k-1)+α·X(k-1)
式中 α=TS/τ,TS为采样周期;
τ——RC滤波器的时间常数;
X(k)——第k-1次采样值;Y(k-1)、Y(k)——分别为第k-1、k次滤波输出值。
一阶惯性滤波算法对周期性干扰具有良好的抑制作用,其不足之处是带来相位滞后,灵敏度低,滞后的程度取决于α值的大小。
2.设置软件陷阱
在仪表工作过程中,干扰信号会使程序脱离正常运行轨道。为了使“跑飞”的程序安定下来,可在程序中设置软件陷阱。所谓软件陷阱,就是一条引导指令,强行将捕获的程序引向一个指定的地址,在那里有一段专门对出错程序处理的程序,使程序纳入正轨。当程序因受干扰而发生混乱时,错误的PC指针可能落在多字节指令中间,进而执行更加不可知的指令。而单字节指令可使混乱的PC指针理顺,使程序按正确的顺序执行。尽管此时不该执行到这里,但是混乱的情况得到抑制。软件陷阱就是根据这个原理设计的。以单片机8051为例,设出错处理程序入口标号为ERROR,软件陷阱就是一条长跳转指令LJMP ERROR。为了加强捕捉效果,一般还在它前面加两条NOP指令,即
NOP
NOP
LJMP ERROR
一般地,软件陷阱可以安排在下列四种地方:
1)程序中未使用的中断向量区;
2)未使用的大片程序存储器空间;
3)在程序存储器的数据表格的头尾处;
4)程序区的“断裂处”。所谓断裂处,是指程序中的跳转指令,如无条件转移指令SJMP、子程序返回指令RET等。
3.“看门狗”技术
智能仪表受到干扰而失控,也可能使程序进入“死循环”。指令冗余技术、软件陷阱技术不能使失控的程序摆脱“死循环”的困境,通常采用程序监视技术,又称“看门狗”技术(Watch Dog),也称为程序运行监视系统。它是一种软硬件结合的防止程序“跑飞”措施。微机测控系统的应用程序通常以循环方式运行,循环时间基本不变。“看门狗”技术就是不断监视程序循环时间。如果发现时间超过“看门狗”的定时时间,则认为系统进入了死循环,于是“看门狗”强迫程序返回主程序入口,使系统重新运行。“看门狗”技术可以用硬件实现,也可以用软件实现。
硬件“看门狗”技术实际上是一种软件与片外专用电路相结合的技术。专用硬件“看门狗”是指一些集成化的专用“看门狗”电路,它实际上是一个特殊的定时器。在硬件电路连接好以后,在程序中适当插入“看门狗”复位的指令(俗称“喂狗”指令),保证在程序正常运行时“看门狗”不会溢出,而在程序陷入死循环时,“看门狗”发出溢出脉冲,使单片机复位。目前常用的集成“看门狗”电路有MAX705~MAX708、MAX791、X5043~X5045等。
软件“看门狗”是利用单片机内部闲置的定时器作为“看门狗”,在单片机程序中插入“喂狗”指令,在程序运行出现异常或进入死循环时,利用软件将程序计数器PC赋予初始值,强制性地使程序重新开始运行。软件“看门狗”技术的最大特点是无须外加硬件电路,比较经济。在实际应用中,通常会将软件“看门狗”技术和硬件“看门狗”技术结合起来使用,以获得更好的抗干扰效果。
在设计“看门狗”时可设计两个定时器,一个为短定时器,一个为长定时器,并各自独立。短定时器像典型“看门狗”一样工作,它保证一般情况下“看门狗”有快的反应速度,长定时器的定时大于CPU执行一个主循环程序的时间,用来防止“看门狗”失效。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。