软件抗干扰技术

源自:转载 公众号传感器技术时间:2017-10-19次数:1

在计算机控制系统中,由于干扰的频谱较广,干扰的来源多,影响复杂,仅采用硬件抗干扰措施,仍可能会有一些干扰进入系统,为此,在硬件抗干扰的基础上,应采用软件抗干扰措施,使两者相互配合,以保障控制系统的可靠性。
      数字信号的软件抗干扰措施
     1)数字滤波。数字滤波是一种软件算法,它实现从采样信号中提取出有效信号数值,滤除干扰信号的功能,是数字滤波的软件实现形式。数字滤波与模拟滤波器相比,具有很多优点。首先,由于采用了程序实现滤波,无需硬件器件,不受外界的影响,也无参数变化等问题,所以可靠性高,稳定性好;数字滤波可以实现对频率很低信号的滤波,克服了模拟滤波器的不足;数字滤波还可以根据信号和干扰的不同,采用不同的滤波方法和滤波参数,具有灵活、方便、功能强等优点。虽然数字滤波速度比硬件滤波慢,但鉴于数字滤波器具有上述优点,因此在计算机控制系统中仍得到了广泛的应用。
      2)输入数字信号的抗干扰。数字信号是用高低电平表示的两态信号,即0和1。在数字信号的输入中,由于操作或外界等干扰,会引起状态变化,造成误判。例如,操作按钮、电气触点在闭合或断开时都存在抖动现象,若无相应措施,就可能产生错误。对于数字信号来说,干扰信号呈毛刺状,作用时间短。利用这一特点,在采集某一数字信号时,可多次重复采集,直到连续两次或两次以上采集结果完全一致方为有效。若多次采集后信号总是变化不定,可停止采集,给出报警信号。对于数字信号的采集不能采用多次平均方法,而是比较两次或多次采集结果是否相同。在满足实时性要求的前提下,应根据信号特点,适当地设置各次采集数字信号之间的延时,以适应不同宽度的干扰信号。对于每次采集的最高次数限额和连续相同次数均可按实际情况适当调整。如果数字信号超过8个,可按8个一组进行分组处理。
    3)输出数字信号的干扰。由于干扰,计算机输出的正确数字信号,在输出设备中可能会得到错误信号。输出设备有电位控制型和同步锁相型两种。前者有良好的抗毛刺干扰能力;后者不耐干扰,当锁存线上出现干扰时,会盲目锁存当前的数据。输出设备的惯性与干扰的耐受能力也有很大关系。惯性大的输出设备对毛刺干扰有一定的耐受能力;惯性小的输出设备耐受能力就小一点。在软件方面可以采取以下方法提高抗干扰能力:
      1,重复输出同一数据。在满足实时控制要求的前提下,重复周期尽可能短些。外部设备接收到一个被干扰的错误信号后,还来不及做出有效的回应,一个正确的输出信息又到来,就可及时防止错误动作的产生。
      2、对于不能重复输出同一信号的输出装置,可在软硬件上采取一定措施。
      3、计算机在进行数字信号输出时,应将有关可编程输出芯片的状态也一并重复设置。因为在干扰作用下,这些芯片的编程状态有可能发生变化。为了确保输出功能正确实现,输出功能模块在执行具体的数据输出之前,应该先执行芯片的编程指令,在输出有关数据。
      4、采用抗干扰编码。按一定规约,将需传输的数据进行编码,在智能接收端,再按规约进行编码,并完成检错或纠错功能。
CPU及程序的抗干扰技术
CPU是计算机的核心,是整个计算机控制系统的指挥中心。它与外围设备和器件的连接通过三总线实现,即数据总线、地址总线和控制总线,同时还有电源和地。当CPU受到干扰不能按正常状态至执行程序时,就会引起计算机控制的混乱,所以需要采取措施,使CPU在受到干扰的情况下,尽可能勿扰地恢复系统正常工作。尤其在单片机系统中,应当充分考虑系统的抗干扰性能。下面是几种常见的针对CPU的抗干扰措施。

     1)复位。对于失控的CPU,最简单的方法是使其复位,程序自动从头开始执行,复位方式有上电复位、人工复位和自动复位三种。上电复位是指计算机在开机上电时自动复位,此时所以硬件都从初始状态开始,程序从第一条指令开始执行;人工复位是指操作员按照复位按钮时的复位;自动复位是指系统在需要复位的状态时,由特定的电路自动将CPU复位的一种方式。为完成复位功能,在硬件电路上应设置复位电路。人工复位电路简单,但不能及时使系统恢复正常,往往实在系统已经瘫痪的情况下使用。如果软件上没有特别的措施,人工复位和上电复位具有同等作用,系统一切从头开始,这在控制系统中是不允许的。因此,人工复位主要用于各类智能测试仪器、数据采集与操作指导控制系统等,一般不用于直接控制系统。
     2)掉电保护。在软件中,应设置掉电保护中断服务程序,该中断为最高优先级的非屏蔽中断,使系统能对掉电做出及时的回应。在掉电中断服务程序中,首先进行现场保护,把当时的重要状态参数、中间结果,甚至某些片内寄存器的内容一一存入具有后备电池的RAM中。其次是对有关外设做出妥善处理,如关闭个输入输出口,使外设处于某一非工作状态。最后必须在片内RAM的某一个或两个单元存入特定标记的数字,作为掉电标记,然后进入掉电保护工作状态。当电源恢复正常时,CPU重新复位,复位后应首先检查是否有掉电标记,如果有,则说明本次复位为掉电保护之后的复位,应按掉电中断服务程序相反的方式恢复现场,以一种合理的安全方式使系统继续完成未完成的工作。
     3)指令冗余。当CPU受到干扰,程序跑飞后,往往将一些操作数当作指令代码来执行,从而引起整个程序的混乱。采用指令冗余技术是使程序从跑飞状态,恢复正常的一种有效措施。所谓软件冗余,就是人为的在程序的关键地方加入一些单字节指令NOP,或将有效单字节指令重写,当程序跑飞到某条单字节指令时,就不会发生将操作数当作指令来执行的错误。指令冗余技术除了NOP等单字节指令外,还可以采用指令重复技术。指令重复也是指令用于技术的一种。指令重复是指在对于程序流向起决定作用或对系统工作有重要作用的指令后面,可重复写上这些指令,以确保这些指令的正确执行。指令冗余会降低系统的效率,但可以确保系统程序很快纳入程序轨道,避免程序混乱,况且适当的指令冗余并不会对系统的实时性和功能产生明显的影响,故在程序设计中还是被广泛使用。指令冗余虽然将跑飞的程序很快纳入程序轨道,但不能保证系统正常工作。为解决这个问题,必须采用软件容错技术,使系统的误动作减少,并消灭重大误动作。
     4)软件陷阱。当程序跑飞到非程序区时,指令冗余不起作用,这时可采用软件陷阱和看门狗技术。软件陷阱是在非程序区的特定地方设置一条引导指令,程序正常运行时不会落入该指导指令的陷阱。当CPU受到干扰,程序跑飞时如果落入指令陷阱,将由引导指令将跑飞的程序强制跳转到出错处理程序,由该程序进行出错处理和程序恢复。软件陷阱一般用于下列地方:未使用的程序区,由于程序指令不可能占满整个程序存储区,总有一些地方是正常程序不会到达的区域,可在该区域设置软件陷阱,对跑飞的程序进行捕捉,或在大片的ROM空间,每隔一段设置一个陷阱;没使用的中断向量区,在编程中,最好不要为节约ROM空间,将未使用的中断向量区用于存放正常工作程序指令。因为,当干扰使未使用的中断开放,并激活这些中断时,会进一步引起混乱。如果在这些地方设置陷阱,就能及时捕捉到错误中断。
     5)看门狗技术。当程序跑飞到一个临时构成的死循环中时,冗余指令和软件陷阱均不起作用,造成系统完全瘫痪。看门狗技术可以有效的解决这一问题。看门狗也称为程序监视定时器,在硬件上,可把它看成是一个相对独立于CPU的可复位定时系统,在软件程序的各主要运行点处,设有向看门狗发出的复位信号指令。当系统运行时,看门狗和CPU同时运行工作。程序正常运行时,会在规定的时间内由程序向看门狗发送复位信号,使看门狗定时系统重新开始定时计数,没有输出信号发出;当程序跑飞并且其他的措施没有发挥作用时,看门狗便不能再规定的时间内得到复位信号,其输出端会发出信号使CPU系统复位。为实现看门狗的目标,需要解决两个方面的问题:一是硬件电路问题,而是软件编程问题。