在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好等越来越受到重视。下面以单片机系统为例,对软件抗干扰方法进行研究。 软件抗干扰方法的研究
在工程实践中,软件抗干扰研究的内容主要是: 消除模拟输入信号的噪声(如数字滤波技术);
程序运行混乱时使程序重入正轨的方法。
本文针对后者提出了几种有效的软件抗干扰方法。 1.指令冗余
cpu取指令过程是先取操作码,再取操作数。当pc受干扰出现错误,程序便脱离正常轨道“乱飞”,当乱飞到某双字节指令,若取指令时刻落在操作数上,误将操作数当作操作码,程序将出错。若“飞”到了三字节指令,出错机率更大。 在关键地方人为插入一些单字节指令,或将有效单字节指令重写称为指令冗余。通常是在双字节指令和三字节指令后插入两个字节以上的nop。这样即使乱飞程序飞到操作数上,由于空操作指令nop的存在,避免了后面的指令被当作操作数执行,程序自动纳入正轨。此外,对系统流向起重要作用的指令如ret、reti、lcall、ljmp、jc等指令之前插入两条nop,也可将乱飞程序纳入正轨,确保这些重要指令的执行。 2.拦截技术
所谓拦截,是指将乱飞的程序引向指定位置,再进行出错处理。通常用软件陷阱来拦截乱飞的程序,因此先要合理设计陷阱,其次要将陷阱安排在适当的位置。 软件陷阱的设计
当乱飞程序进入非程序区,冗余指令便无法起作用。通过软件陷阱,拦截乱飞程序,将其引向指定位置,再进行出错处理。软件陷阱是指用来将捕获的乱飞程序引向复位入口地址0000h的指令。通常在eprom中非程序区填入以下指令作为软件陷阱: nop nop ljmp 0000h其机器码为0000020000。 陷阱的安排
通常在程序中未使用的eprom空间填0000020000。最后一条应填入020000,当乱飞程序落到此区,即可自动入轨。在用户程序区各模块之间的空余单元也可填入陷阱指令。当使用的中断因干扰而开放时,在对应的中断服务程序中设置软件陷阱,能及时捕获错误的中断。如某应用系统虽未用到外部中断 1,外部中断1的中断服务程序可为如下形式: nopnopreti返回指令可用“reti”,也可用“ljmp0000h”。如果故障诊断程序与系统自恢复程序的设计可靠、完善,用“ljmp0000h”作返回指令可直接进入故障诊断程序,尽早地处理故障并恢复程序的运行。考虑到程序存贮器的容量,软件陷阱一般1k空间有2-3个就可以进行有效拦截。 3.软件“看门狗”技术
若失控的程序进入“死循环”,通常采用“看门狗”技术使程序脱离“死循环”。通过不断检测程序循环运行时间,若发现程序循环时间超过最大循环运行时间,则认为系统陷入“死循环”,需进行出错处理。
“看门狗”技术可由硬件实现,也可由软件实现。在工业应用中,严重的干扰有时会破坏中断方式控制字,关闭中断。则系统无法定时“喂狗”,硬件看门狗电路失效。而软件看门狗可有效地解决这类问题。 系统故障处理、自恢复程序的设计
单片机系统因干扰复位或掉电后复位均属非正常复位,应进行故障诊断并能自动恢复非正常复位前的状态。
1.非正常复位的识别
程序的执行总是从0000h开始,导致程序从0000h开始执行有四种可能: 系统开机上电复位;
软件故障复位;
看门狗超时未喂狗硬件复位;
任务正在执行中掉电后来电复位。
四种情况中除第一种情况外均属非正常复位,需加以识别。 硬件复位与软件复位的识别:
此处硬件复位指开机复位与看门狗复位,硬件复位对寄存器有影响,如复位后pc=0000h,sp=07h,psw=00h等。而软件复位则对sp、 spw无影响。故对于微机测控系统,当程序正常运行时,将sp设置地址大于07h,或者将psw的第5位用户标志位在系统正常运行时设为1,那么系统复位时只需检测psw.5标志位或sp值便可判此是否硬件复位。由于硬件复位时片内ram状态是随机的,而软件复位片内ram则可保持复位前状态,因此可选取片内某一个或两个单元作为上电标志。设40h用来做上电标志,上电标志字为78h,若系统复位后40h单元内容不等于78h,则认为是硬件复位,否则认为是软件复位,转向出错处理。若用两个单元作上电标志,则这种判别方法的可靠性更高。 开机复位与看门狗故障复位的识别:
开机复位与看门狗故障复位因同属硬件复位,所以要想予以正确识别,一般要借助非易失性ram或者eerom。当系统正常运行时,设置一可掉电保护的观测单元。当系统正常运行时,在定时喂狗的中断服务程序中使该观测单元保持正常值(设为aah),而在主程中将该单元清零,因观测单元掉电可保护,则开机时通过检测该单元是否为正常值可判断是否看门狗复位。
正常开机复位与非正常开机复位的识别:
识别测控系统中因意外情况如系统掉电等情况引起的开机复位与正常开机复位,对于过程控制系统尤为重要。如某以时间为控制标准的测控系统,完成一次测控任务需1小时。在已执行测控50分钟的情况下,系统电压异常引起复位,此时若系统复位后又从头开始进行测控则会造成不必要的时间消耗。 因此可通过一监测单元对当前系统的运行状态、系统时间予以监控,将控制过程分解为若干步或若干时间段,每执行完一步或每运行一个时间段则对监测单元置为关机允许值,不同的任务或任务的不同阶段有不同的值,若系统正在进行测控任务或正在执某时间段,则将监测单元置为非正常关机值。那么系统复位后可据此单元判系统原来的运行状态,并跳到出错处理程序中恢复系统原运行状态。
2.非正常复位后系统自恢复运行的程序设计
巧用电吹风对电器除尘
天猫超级粉丝日开启 荣耀邀你来当新品屏荐官!
信息化浪潮下,华为云灾备方案如何保护数据安全
最小化去耦电感有哪些技巧
第八届中国移动全球合作伙伴大会:5G与物联网碰撞
单片机系统软件抗干扰方法的研究
有哪一些好的对策可以推动区块链的发展
USB控制器芯片按功能分类的特性比较
全自动装车码垛机器人的应用优势是什么
研究人员发现:更多黑客的网络攻击针对于基于Linux的设备
剖析多节锂电池充电管理方案-TPS54201在扫地机器人的应用
芯片中的CP测试是什么?
可自由编程、用途广泛、配备齐全、简单易用……这两款IIoT控制器也太香了吧!
锂聚合物电池首次充电注意事项
五类网线和超五类网线区别在哪里?
简单电子管收音机阻容元件的选用,Vacuum tube radio component selection
新手设计的电路到底能挑多少毛病?电路纠错+详细分析
安全带使用规范越来越严格 提高使用率安防有责
巧妙设计声控电子门铃
苹果iPhone真的无法摆脱刘海么?