微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 电源设计 > 单片机系统软件抗干扰策略在通信电源中的应用

单片机系统软件抗干扰策略在通信电源中的应用

时间:02-14 来源:互联网 点击:
1 引言

  单片机构成的监控系统广泛应用在工业自动化装置、生产过程控制和仪器仪表等各个领域。单片机应用于工业环境时,工作场所不仅有弱电设备,而且有更多的强电设备;不仅有数字电路,而且有许多模拟电路,形成一个强电与弱电、数字与模拟共存的局面。高速变化的数字信号有可能形成对模拟信号的干扰。此外,在一些强电设备,如:通信电源中往往还有电感、电容等储能元件,当电压、电流发生剧烈变化时就会形成瞬变噪声干扰。瞬变噪声频谱宽、能量大,对电子器件的危害很大,也是导致设备故障停机的主要原因。
由于单片机应用环境往往比较恶劣,干扰严重,这就要求单片机应用系统既有较强的抗干扰能力。尽管我们采取了硬件抗干扰措施,但由于干扰信号产生的原因很复杂,且具有很大的随机性,难免保证系统完全不受干扰。因此,通常在硬件抗干扰措施的基础上,采用软件抗干扰技术加以补充,作为硬件措施的辅助手段。


2 干扰信号对单片机各部分的影响

  单片机属于数字系统,各逻辑部分都有相应的阈电平和噪声容限,外来噪声只要不超过逻辑元件的容限值,系统就能正常运行。然而一旦侵入系统的噪声超过了容限,干扰就会被逻辑器件放大、整型,于是产生误动作。假如干扰改变了触发器或存储器的信息,即便干扰消除了,系统也无法恢复正常运行。

  (1)运算部件和控制器

  CPU属高速数字器件,其中容易受到干扰的有运算部件和控制器。运算部件实现数据的各种运算、处理和传送操作,而控制器时单片机的神经中枢。噪声的存在有可能导致CPU错误地执行指令、控制寄存器中的数据被改写,从而产生误动作或得到错误的结果,甚至引起系统瘫痪。

  (2)程序计数器PC

  单片机系统受干扰后最典型的故障是程序计数器PC的状态被破坏,导致程序无法按正常的顺序执行,在地址空间内“乱飞”,结果往往时陷入“死循环”。因此,程序计数器PC属于重点防范对象,它出错时必须尽可能早地发现并采取补救措施。

  (3)特殊功能寄存器SFR

  SFR对CPU非常重要,它实质上是一些具有特殊功能的RAM单元,包括各种I/O寄存器、片内部件工作方式寄存器,以及堆栈指针、数据指针等。SFR传递数据的速率非常高,能够与CPU的运行密切配合。若某个SFR被干扰信号改写,则意味着程序运行结果异常,轻则改变单片机内各部件的操作控制,重则导致整个系统的输出紊乱,引发故障甚至安全事故。因此,对于与程序有关的SFR内容必须提供及时有效的保护。

(4)各类存储器MEMORY
单片机的存储器包括片内存储器和片外扩展存储器。其中,程序存储器(EEPROM或EPROM或FLASH)的抗干扰性能最好,CPU内部的数据存储器(片内RAM)抗干扰性能也较好,而片外扩展数据存储器(片外RAM)的抗干扰性能就相对较差。因此,在干扰信号较强的环境中运行的单片机,其较持久和重要的数据应当保存在片内RAM中,在扩展RAM中只宜保存临时数据,否则应当采用软件措施在应用程序中进行数据恢复。


3 软件抗干扰技术

  软件抗干扰技术是当系统受干扰后时系统恢复正常运行或输入信号受干扰后去伪求真的一种辅助方法,因此软件抗干扰是被动措施,而硬件抗干扰是主动措施。软件抗干扰技术所研究的主要内容,其一是采取软件的方法抑制叠加在模拟输入信号上噪声的影响,如数字滤波技术;其二是在因干扰而使运行程序发生混乱,导致程序乱飞和陷入死循环时,采取使程序纳入正轨的措施,这些措施可以由软件单独实现,也可以采用软硬件相结合的方法来实现。

  对于已进入单片机的噪声,必须采取对应措施,尽量维持系统功能,避免导致严重后果。如果CPU已产生误动作或和存储器内容已被误修改,则应通过在应用程序中加入必要的代码进行自恢复。通常的软件抗干扰措施有:数字滤波方法、输入口信号重复检测方法、输出端口数据刷新方法、软件拦截技术(指令冗余、软件陷阱)、“看门狗”技术、发生故障时的自恢复等。以下是几种常用的方法:

  (1)主动初始化
 
  首先要保证上电或复位后软件能够正确地对单片机及其外围器件的各种功能、端口或方式、状态等实现初始化设置,其次在程序每次使用某功能单元前,都要尽可能地对相应的控制寄存器进行必要的设置。事实证明,这一措施能够大大提高系统对入侵干扰的自恢复性能。

  (2)指令冗余化
  
  程序指令在执行当中或锁存后,都有被噪声修改的可能,这会导致控制失效甚至引发事故,因此对重要指令应多次反复执行,这样就能纠正干扰造成的错误。对于频率不高的采集数据,应在一定时间内多次采集后进行滤波处理;对于向外输出的控制指令,应多次重复执行以确保输出控制信号的可靠性。通常,可以把重要指令设计成定时执行的模块,这样在整个程序的循环运行过程中可以反复得到执行,即便干扰信号改变了指令内容,也能及时自动恢复正常,尽量减少因故障造成的损失。

  (3)数据冗余化
  
  在干扰较大的环境中,将数据冗余备份,可以大大增加系统的纠错能力。对于重要数据应采用多备份,并增加专用于数据检查和恢复的代码。从可靠性角度出发,应尽量采用片内SRAM保存重要数据,当片内SRAM容量不够时,也可以考虑扩展外部非易失性SRAM作为数据存储器,这种芯片抗干扰性能很好,但价格较高。

  (4)软件“看门狗”技术
  
  又称程序监视技术,就是不断监视程序循环运行时间,若发现超过已知的循环设定时间,就强迫程序返回到入口处,使系统运行重新纳入正轨。其基本思路是:在主程序中对T0中断服务程序进行监视;在T1中断服务程序中对主程序进行监视;T0中断监视T1中断。从概率观点,这种相互依存、相互制约的抗干扰措施将使系统运行的可靠性大大提高。


4 应用实例

  通信电源系统的单片机软件运行在电磁干扰很强的环境中,尤其是整流模块机内监控软件运行在高频大功率整流模块内部,除了要求硬件设计抗干扰能力强以外,软件也要能够具备足够的抗干扰自纠错能力。  

  中兴智能通信电源系统正是在充分的硬件抗干扰设计基础上又恰当运用了软件抗干扰设计措施,抗受住了各种严格的可靠性检验,以优异的性能和质量获得了国际和国内用户的广泛好评,也赢得了荣誉。主要的软件抗干扰措施包括以下方面:

  (1)物理定时器
物理定时器是单片机系统正常工作的前提,为避免干扰导致其工作异常,在主程序循环中检查其工作是否正常,若不是则重新初始化,倘若多次初始化仍无法恢复,则复位整个单片机系统。

  (2)消息缓冲区

  单片机系统通过产生、获取和处理消息来完成所需的各项功能,因此消息缓冲区是否正常直接关系到整个软件的正常运行。程序正常运行时,多数时候消息缓冲区内没有消息,但干扰存在时有可能会改变消息缓冲区中的数据,使得总有处理不完的消息存在。利用这一特点,可以判断消息缓冲区是否正常并决定是否需要重新初始化。

  (3)虚拟定时器

  对于程序中的周期型虚拟定时器,如:扫描键盘定时器、数据采集定时器、处理通讯定时器等,为避免因干扰造成定时时长被改变,就应该经常对其检查,出错时重新设置。

  (4)液晶LCD

  液晶是人机交互界面,也是最容易受到外界干扰的部分。程序中经常检查LCD是否工作正常,若不正常则重新初始化LCD和各菜单。

  (5)A/D转换器和数据滤波
数据采集的正确与否直接影响到告警判断、输出控制等重要功能,程序中经常检查A/D转换器是否正常产生,若不是则需要复位。此外,所有的模拟量和开关量采集都要在多次采集的基础上进行滤波,得到的采集结果才准确可靠。

  (6)串口通讯

  UART中断是正常接收、发送的前提,程序中应对中断服务程序进行检查,防止因干扰导致的中断服务程序异常。

  通常,接收缓冲区采用环形结构,理论上在这段时间内整流器最多收到CSU下发的一个数据包,然而考虑到消息缓冲区中同时有多个消息等待处理的情况,可能通讯处理会存在短暂的延时,这样底层接收缓冲区中的数据包就可能不止一个,但从实验结果来看一般不会超过三个。这样,系统调度程序每次定时调用通讯处理进程时都检查一下底层接收缓冲区中的数据包个数是否大于5个,若是则认为出错,重新设置通讯虚拟定时器并重新初始化UART和通讯缓冲区数据。

   当采用RS485通讯时,由于是半双工方式,总线上的任一设备不能长时间处于发送状态而独占总线。为保证收发控制端不被干扰,程序中必须经常对其进行检查,一旦出现异常就应强制恢复为接收状态并初始化UART和通讯缓冲区数据。

  (7)参数

  参数是软件正常运行的重要保证,如果出错将直接影响到数据采集、告警判断和输出控制等重要功能。通常,它们被保存在EEPROM中,为保证可靠,采用增加校验和多备份保存的方式。每次读取参数时,必须判断校验是否正确。一个备份区中的参数如果无效,就读取其它备份区的参数。
  (8)RAM中的数据
为避免RAM在受到外部干扰时数据出错,定时对RAM中的重要数据进行校验,发现错误时及时予以纠正。

  (9)输出控制

  通信电源单片机系统对外输出的控制信号不仅有开关量,有时还有模拟量。为防止干扰对输出控制信号的改变,所有的输出控制信号都应该周期性地给出,反复刷新。


5 参考文献

《单片机应用系统抗干扰技术》 王幸之等编著 北京航空航天大学出版社

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top