首页 理论教育 单片机应用技术:软件抗干扰设计

单片机应用技术:软件抗干扰设计

时间:2023-10-17 理论教育 版权反馈
【摘要】:软件抗干扰设计是单片机应用系统的一个重要组成部分。尽管在硬件方面采取种种抗干扰措施,但仍不能完全消除这些干扰,必须同时从软件方面采取适当的措施,才能取得良好的抗干扰效果。如能正确地采用软件抗干扰措施,与硬件抗干扰措施构成双重抑制,将大大地提高系统的可靠性。而且采用软件抗干扰设计,通常成本低、见效快,能起到事半功倍的效果。

单片机应用技术:软件抗干扰设计

软件抗干扰设计是单片机应用系统的一个重要组成部分。干扰对单片机系统可能造成下列后果:数据采集误差增大,程序“跑飞”失控或陷入死循环。尽管在硬件方面采取种种抗干扰措施,但仍不能完全消除这些干扰,必须同时从软件方面采取适当的措施,才能取得良好的抗干扰效果。如能正确地采用软件抗干扰措施,与硬件抗干扰措施构成双重抑制,将大大地提高系统的可靠性。而且采用软件抗干扰设计,通常成本低、见效快,能起到事半功倍的效果。软件方面抗干扰措施通常有以下几种方法:

1.数据采集误差

对于实时数据采集系统来说,为了消除传感器通道中的干扰信号,在早期常采用硬件电路措施,如有源或无源滤波网络、过程模拟滤波器对信号实现滤波。同样,随着计算机运算速度的提高,可以利用软件技术对信号实现数字滤波。下面介绍几种常用的方法。

(1)算术平均值法 对一点数据连续多次采样,取其算术平均值。还可以扩展成采样值的加权平均值法,即对于每一个采样数据乘以各自的权值后,加以平均,以其作为该点的采样结果。这种方法可以减小系统的随机干扰对数据采集的影响。

(2)比较舍取法 当控制系统测量结果的个别数据存在偏差时,为了剔除个别错误数据,可采用比较舍取法,即对一点数据连续采样多次,根据所采样的变化情况确定舍取办法,剔除较大偏差数据。

(3)中位值法 对一点数据连续采样多次,依次排序,取其中间值作为采样结果。这种方法比较适合于消除脉冲性噪声。

上述三种方法均要求对一点数据连续采样多次。然后根据数据特点和干扰特点采用其中一种方法采样。

(4)一阶递推数字滤波法 这是利用软件完成RC低通滤波器算法,具体的算法为:

Yn=QXn+(1-Q)Yn-1

式中 Q为数字滤波系数;Xn为第n次采样时的滤波器输入;Yn为第n次采样时的滤波器输出;Yn-1为第(n-1)次采样时的滤波器输出。

滤波系数Q=ΔT/Tf<1,其中ΔT为采样周期、Tf为数字滤波器的时间系数。具体的参数应通过实际运行选取适当数值,使周期性噪声减至最弱或全部消除。(www.xing528.com)

2.开关量的抗干扰措施

在—个应用系统工作的过程中,经常需要读入一些状态信息,而且还要不断地发出各种开关控制命令到执行部件上,如继电器电磁阀等。为了提高开关量输入输出的可靠性,在软件设计上可以采取下列措施:

(1)对于开关量输入,为了确保信息的正确性,可以采取多次读入进行比较,取多数情况的状态。

(2)对于开关量输出,通常是用来控制电感性的执行机构,如控制电磁阀。为了防止电磁阀因干扰产生误动作,可以在应用程序中每隔一段时间(比如几个毫秒)发出一次命令,不断地关闭阀门或打开阀门。这样就可以较好地消除由于扰动而引起的误动作。

(3)对于输入开关量的机械抖动干扰,软件程序可以通过延时来进行消除。

3.程序“跑飞”失控或进入死循环

系统受到干扰导致PC值改变后,PC值不是指向指令的首字节地址而可能指向指令中的中间字节单元操作数,将操作数作为指令码执行;或PC值超出程序区,将非程序区的随机数作为指令码运行,从而使程序失控“跑飞”,或由于偶然巧合进入死循环。这里所说的死循环并非程序编制中出现的死循环错误,而是指正常运行时程序正确,只是因为干扰而产生的死循环。解决方法有:

(1)设置软件陷阱 即在非程序区安排指令强迫复位。如用LJMP 0000H的机器码填满非程序区。这样不论PC失控后飞到非程序区的哪个字节,都能复位。也可在程序区每隔一段(如几十条指令)连续安排三条NOP指令。因为8051指令字节最长为三字节。当程序失控时,只要不跳转,指令连续执行,就会运行NOP指令,就能使程序恢复正常。

(2)设置“看门狗” 设置软件陷阱能解决一部分程序失控问题,但当程序失控“跑飞”进入某种死循环时,软件陷阱可能不起作用。使程序从死循环中恢复到正常状态的有效方法是设置时间监视器,时间监视器又称“看门狗”。时间监视器有两种:一种是硬时钟,一种是软时钟。硬时钟是在CPU芯片外用硬件构成一个定时器,软时钟是利用片内定时/计数器,定时时间比正常执行一次程序循环所需时间要大。正常运行未受干扰时,CPU每隔一段时间“喂狗”一次,即对硬时钟输出复位脉冲使其复位;对软时钟重置时间常数复位。“喂狗”时间应比设定的定时时间要短,即在狗“未饿未叫”时“喂狗”(复位),使其始终不“叫”(不中断、不溢出)。当受到干扰,程序不能正常运行,陷入死循环时,因不能及时“喂狗”,硬时钟或软时钟运行至既定的定时时间,硬时钟输出一个复位脉冲至CPU的RESET端使单片机复位。软时钟可产生中断,在中断服务子程序中修正或复位。上述硬、软时钟只需设置其中一种,各有利弊。软时钟不需增加硬件电路但要占用一个宝贵的定时/计数器资源;硬时钟不占资源,但要增加硬件电路和材料成本。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈