在提高硬件系统抗干扰能力的同时软件抗干扰以其设计灵活节省硬件资源可靠性好越来越受到重视下面以MCS单片机系统为例对微机系统软件抗干扰方法进行研究 软件抗干扰方法的研究 在工程实践中软件抗干扰研究的内容主要是 一消除模拟输入信号的嗓声(如数字滤波技术)二程序运行混乱时使程序重入正轨的方法本文针对后者提出了几种有效的软件抗干扰方法 指令冗余 CPU取指令过程是先取操作码再取操作数当PC受干扰出现错误程序便脱离正常轨道乱飞当乱飞到某双字节指令若取指令时刻落在操作数上误将操作数当作操作码程序将出错若飞 到了三字节指令出错机率更大 在关键地方人为插入一些单字节指令或将有效单字节指令重写称为指令冗余通常是在双字节指令和三字节指令后插入两个字节以上的NOP这样即使乱飞程序飞到操作数上由于空操作指令NOP的存在避免了后面的指令被当作操作数执行程序自动纳入正轨 此外对系统流向起重要作用的指令如RET RETILCALLLJMPJC等指令之前插入两条NOP也可将乱飞程序纳入正轨确保这些重要指令的执行 拦截技术 所谓拦截是指将乱飞的程序引向指定位置再进行出错处理通常用软件陷阱来拦截乱飞的程序因此先要合理设计陷阱其次要将陷阱安排在适当的位置 软件陷阱的设计 当乱飞程序进入非程序区冗余指令便无法起作用通过软件陷阱拦截乱飞程序将其引向指定位置再进行出错处理软件陷阱是指用来将捕获的乱飞程序引向复位入口地址H的指令通常在EPROM中非程序区填入以下指令作为软件陷阱 NOP NOP LJMP H 其机器码为 陷阱的安排 通常在程序中未使用的EPROM空间填最后一条应填入当乱飞程序落到此区即可自动入轨在用户程序区各模块之间的空余单元也可填入陷阱指令当使用的中断因干扰而开放时在对应的中断服务程序中设置软件陷阱能及时捕获错误的中断如某应用系统虽未用到外部中断外部中断的中断服务程序可为如下形式 NOP NOP RETI 返回指令可用RETI也可用LJMP H如果故障诊断程序与系统自恢复程序的设计可靠 完善用LJMP H作返回指令可直接进入故障诊断程序尽早地处理故障并恢复程序的运行 考虑到程序存贮器的容量软件陷阱一般K空间有个就可以进行有效拦截 软件看门狗技术 若失控的程序进入死循环通常采用看门狗技术使程序脱离死循环通过不断检测程序循环运行时间若发现程序循环时间超过最大循环运行时间则认为系统陷入死循环需进行出错处理 看门狗技术可由硬件实现也可由软件实现 在工业应用中严重的干扰有时会破坏中断方式控制字关闭中断则系统无法定时喂狗硬件看门狗电路失效而软件看门狗可有效地解决这类问题 笔者在实际应用中采用环形中断监视系统用定时器T监视定时器T用定时器T监视主程序主程序监视定时器T采用这种环形结构的软件看门狗具有良好的抗干扰性能大大提高了系统可靠性对于需经常使用T定时器进行串口通讯的测控系统则定时器T不能进行中断可改由串口中断进行监控(如果用的是MCS系列单片机也可用T代替T进行监视)这种软件看门狗监视原理是在主程序T中断服务程序T中断服务程序中各设一运行观测变量假设为MWatchTWatch TWatch主程序每循环一次MWatch加1同样TT中断服务程序执行一次TWatch TWatch加1在T中断服务程序中通过检测TWatch的变化情况判定T运行是否正常在T中断服务程序中检测MWatch的变化情况判定主程序是否正常运行在主程序中通过检测TWatch的变化情况判别T是否正常工作若检测到某观测变量变化不正常比如应当加而未加则转到出错处理程序作排除故障处理当然对主程序最大循环周期定时器T和T定时周期应予以全盘合理考虑限于篇幅不赘述 系统故障处理自恢复程序的设计 单片机系统因干扰复位或掉电后复位均属非正常复位应进行故障诊断并能自动恢复非正常复位前的状态 非正常复位的识别 程序的执行总是从H开始导致程序从 H开始执行有四种可能一系统开机上电复位二软件故障复位三看门狗超时未喂狗硬件复位 四任务正在执行中掉电后来电复位四种情况中除第一种情况外均属非正常复位需加以识别 硬件复位与软件复位的识别 此处硬件复位指开机复位与看门狗复位硬件复位对寄存器有影响如复位后PC=H SP=HPSW=H等而软件复位则对SPSPW无影响故对于微机测控系统当程序正常运行时将SP设置地址大于H或者将PSW的第位用户标志位在系统正常运行时设为那么系统复位时只需检测PSW标志位或SP值便可判此是否硬件复位图是采用PSW作上电标志位判别硬软件复位的程序流程图 图 硬软件复位识别流程图 此外由于硬件复位时片内RAM状态是随机的而软件复位片内RAM则可保持复位前状态因此可选取片内某一个或两个单元作为上电标志设 H用来做上电标志上电标志字为H若系统复位后H单元内容不等于H则认为是硬件复位否则认为是软件复位转向出错处理若用两个单元作上电标志则这种判别方法的可靠性更高 开机复位与看门狗故障复位的识别 开机复位与看门狗故障复位因同属硬件复位 所以要想予以正确识别一般要借助非易失性RAM或者EEROM当系统正常运行时设置一可掉电保护的观测单元当系统正常运行时在定时喂狗的中断服务程序中使该观测单元保持正常值(设为 AAH)而在主程中将该单元清零因观测单元掉电可保护则开机时通过检测该单元是否为正常值可判断是否看门狗复位 正常开机复位与非正常开机复位的识别 识别测控系统中因意外情况如系统掉电等情况引起的开机复位与正常开机复位对于过程控制系统尤为重要如某以时间为控制标准的测控系统完成一次测控任务需小时在已执行测控分钟的情况下系统电压异常引起复位此时若系统复位后又从头开始进行测控则会造成不必要的时间消耗因此可通过一监测单元对当前系统的运行状态系统时间予以监控将控制过程分解为若干步或若干时间段每执行完一步或每运行一个时间段则对监测单元置为关机允许值不同的任务或任务的不同阶段有不同的值若系统正在进行测控任务或正在执某时间段则将监测单元置为非正常关机值那么系统复位后可据此单元判系统原来的运行状态并跳到出错处理程序中恢复系统原运行状态 非正常复位后系统自恢复运行的程序设计 对顺序要求严格的一些过程控制系统系统非正常复位否一般都要求从失控的那一个模块或任务恢复运行所以测控系统要作好重要数据单元参数的备份如系统运行状态系统的进程值当前输入输出的值当前时钟值观测单元值等这些数据既要定时备份同时若有修改也应立即予以备份 当在已判别出系统非正常复位的情况下先要恢复一些必要的系统数据如显示模块的初始化片外扩展芯片的初始化等其次再对测控系统的系统状态运行参数等予以恢复包括显示界面等的恢复之后再把复位前的任务参数运行时间等恢复 再进入系统运行状态 应当说明的是真实地恢复系统的运行状态需 要极为细致地对系统的重要数据予以备份并加以数据可靠性检查以保证恢复的数据的可靠性 其次对多任务多进程测控系统数据的恢复需考虑恢复的次序问题笔者实际应用的数据恢复过程流程图如图所示 图 系统自恢复程序流程图 图中恢复系统基本数据是指取出备份的数据覆盖当前的系统数据系统基本初始化是指对芯片显示输入输出方式等进行初始化要注意输入输出的初始化不应造成误动作而复位前任务的初始化是指任务的执行状态运行时间等 结束语 对于软件抗干扰的一些其它常用方法如数字滤波RAM数据保护与纠错等限于篇幅本文未作讨论在工程实践中通常都是几种抗干扰方法并用互相补充 完善才能取得较好的抗干扰效果从根本上来说硬件抗干扰是主动的而软件是抗干扰是被动的细致周到地分析干扰源硬件与软件抗干扰相结合完善系统监控程序设计一稳定可靠的单片机系统是完全可行的 |