技術總結:單片機軟件抗幹擾的幾種辦法
發布時間:2015-02-01 責任編輯:sherryyu
【導讀】在zai工gong程cheng實shi踐jian中zhong通tong常chang都dou是shi幾ji種zhong抗kang幹gan擾rao方fang法fa並bing用yong,互hu相xiang補bu充chong完wan善shan,才cai能neng取qu得de較jiao好hao的de抗kang幹gan擾rao效xiao果guo。從cong根gen本ben上shang來lai說shuo,硬ying件jian抗kang幹gan擾rao是shi主zhu動dong的de,而er軟ruan件jian是shi抗kang幹gan擾rao是shi被bei動dong的de。本ben文wen將jiang以yiMCS-51單片機係統為例,對微機係統軟件抗幹擾方法進行研究。
在提高硬件係統抗幹擾能力的同時,軟件抗幹擾以其設計靈活、節省硬件資源、可靠性好越來越受到重視。下麵以MCS-51單片機係統為例,對微機係統軟件抗幹擾方法進行研究。
1、軟件抗幹擾方法的研究
在工程實踐中,軟件抗幹擾研究的內容主要是:一、消除模擬輸入信號的噪聲(如數字濾波技術);二、程序運行混亂時使程序重入正軌的方法。本文針對後者提出了幾種有效的軟件抗幹擾方法。
1.1 指令冗餘
CPU取指令過程是先取操作碼,再取操作數。當PC受幹擾出現錯誤,程序便脫離正常軌道“亂飛”,當亂飛到某雙字節指令,若取指令時刻落在操作數上,誤將操作數當作操作碼,程序將出錯。若“飛”到了三字節指令,出錯機率更大。
zaiguanjiandifangrenweicharuyixiedanzijiezhiling,huojiangyouxiaodanzijiezhilingzhongxiechengweizhilingrongyu。tongchangshizaishuangzijiezhilinghesanzijiezhilinghoucharulianggezijieyishangdeNOP。這樣即使亂飛程序飛到操作數上,由於空操作指令NOP的存在,避免了後麵的指令被當作操作數執行,程序自動納入正軌。
此外,對係統流向起重要作用的指令如RET、RETI、LCALL、LJMP、JC等指令之前插入兩條NOP,也可將亂飛程序納入正軌,確保這些重要指令的執行。
1.2 攔截技術
所(suo)謂(wei)攔(lan)截(jie),是(shi)指(zhi)將(jiang)亂(luan)飛(fei)的(de)程(cheng)序(xu)引(yin)向(xiang)指(zhi)定(ding)位(wei)置(zhi),再(zai)進(jin)行(xing)出(chu)錯(cuo)處(chu)理(li)。通(tong)常(chang)用(yong)軟(ruan)件(jian)陷(xian)阱(jing)來(lai)攔(lan)截(jie)亂(luan)飛(fei)的(de)程(cheng)序(xu)。因(yin)此(ci)先(xian)要(yao)合(he)理(li)設(she)計(ji)陷(xian)阱(jing),其(qi)次(ci)要(yao)將(jiang)陷(xian)阱(jing)安(an)排(pai)在(zai)適(shi)當(dang)的(de)位(wei)置(zhi)。
(1)軟件陷阱的設計
當(dang)亂(luan)飛(fei)程(cheng)序(xu)進(jin)入(ru)非(fei)程(cheng)序(xu)區(qu),冗(rong)餘(yu)指(zhi)令(ling)便(bian)無(wu)法(fa)起(qi)作(zuo)用(yong)。通(tong)過(guo)軟(ruan)件(jian)陷(xian)阱(jing),攔(lan)截(jie)亂(luan)飛(fei)程(cheng)序(xu),將(jiang)其(qi)引(yin)向(xiang)指(zhi)定(ding)位(wei)置(zhi),再(zai)進(jin)行(xing)出(chu)錯(cuo)處(chu)理(li)。軟(ruan)件(jian)陷(xian)阱(jing)是(shi)指(zhi)用(yong)來(lai)將(jiang)捕(bu)獲(huo)的(de)亂(luan)飛(fei)程(cheng)序(xu)引(yin)向(xiang)複(fu)位(wei)入(ru)口(kou)地(di)址(zhi)0000H的指令。通常在EPROM中非程序區填入以下指令作為軟件陷阱:
NOPNOPLJMP 0000H其機器碼為0000020000。
(2)陷阱的安排
通常在程序中未使用的EPROM空間填0000020000。最後一條應填入020000,dangluanfeichengxuluodaociqu,jikezidongrugui。zaiyonghuchengxuqugemokuaizhijiandekongyudanyuanyeketianruxianjingzhiling。dangshiyongdezhongduanyinganraoerkaifangshi,zaiduiyingdezhongduanfuwuchengxuzhongshezhiruanjianxianjing,nengjishibuhuocuowudezhongduan。rumouyingyongxitongsuiweiyongdaowaibuzhongduan1,外部中斷1的中斷服務程序可為如下形式:
NOPNOPRETI返回指令可用“RETI”,也可用“LJMP0000H”。如果故障診斷程序與係統自恢複程序的設計可靠、完善,用“LJMP0000H”作返回指令可直接進入故障診斷程序,盡早地處理故障並恢複程序的運行。
考慮到程序存貯器的容量,軟件陷阱一般1K空間有2-3個就可以進行有效攔截。
1.3 軟件“看門狗”技術
若失控的程序進入“死循環”,通常采用“看門狗”技術使程序脫離“死循環”。通過不斷檢測程序循環運行時間,若發現程序循環時間超過最大循環運行時間,則認為係統陷入“死循環”,需進行出錯處理。
“看門狗”技術可由硬件實現,也可由軟件實現。在工業應用中,嚴重的幹擾有時會破壞中斷方式控製字,關閉中斷。則係統無法定時“喂狗”,硬件看門狗電路失效。而軟件看門狗可有效地解決這類問題。
筆者在實際應用中,采用環形中斷監視係統。用定時器T0監視定時器T1,用定時器T1監視主程序,主程序監視定時器T0。采用這種環形結構的軟件“看門狗”具有良好的抗幹擾性能,大大提高了係統可靠性。對於需經常使用T1定時器進行串口通訊的測控係統,則定時器T1不能進行中斷,可改由串口中斷進行監控(如果用的是MCS-52係列單片機,也可用T2代替T1進行監視)。這種軟件“看門狗”監視原理是:在主程序、T0中斷服務程序、T1中斷服務程序中各設一運行觀測變量,假設為MWatch、T0Watch、T1Watch,主程序每循環一次,MWatch加1,同樣T0、T1中斷服務程序執行一次,T0Watch、T1Watch加1。在T0中斷服務程序中通過檢測T1Watch的變化情況判定T1運行是否正常,在T1中斷服務程序中檢測MWatch的變化情況判定主程序是否正常運行,在主程序中通過檢測T0Watch的變化情況判別T0是否正常工作。若檢測到某觀測變量變化不正常,比如應當加1而未加1,則轉到出錯處理程序作排除故障處理。當然,對主程序最大循環周期、定時器T0和T1定時周期應予以全盤合理考慮。限於篇幅不贅述。
2、係統故障處理、自恢複程序的設計
單片機係統因幹擾複位或掉電後複位均屬非正常複位,應進行故障診斷並能自動恢複非正常複位前的狀態。
2.1 非正常複位的識別
程序的執行總是從0000H開始,導致程序從0000H開始執行有四種可能:一、係統開機上電複位;二、軟件故障複位;三、看門狗超時未喂狗硬件複位;四、任務正在執行中掉電後來電複位。四種情況中除第一種情況外均屬非正常複位,需加以識別。
(1)硬件複位與軟件複位的識別
此處硬件複位指開機複位與看門狗複位,硬件複位對寄存器有影響,如複位後PC=0000H,SP=07H,PSW=00H等。而軟件複位則對SP、SPW無影響。故對於微機測控係統,當程序正常運行時,將SP設置地址大於07H,或者將PSW的第5位用戶標誌位在係統正常運行時設為1,那麼係統複位時隻需檢測PSW.5標誌位或SP值便可判此是否硬件複位。
由於硬件複位時片內RAM狀態是隨機的,而軟件複位片內RAM則可保持複位前狀態,因此可選取片內某一個或兩個單元作為上電標誌。設40H用來做上電標誌,上電標誌字為78H,若係統複位後40H單元內容不等於78H,則認為是硬件複位,否則認為是軟件複位,轉向出錯處理。若用兩個單元作上電標誌,則這種判別方法的可靠性更高。
(2)開機複位與看門狗故障複位的識別
開機複位與看門狗故障複位因同屬硬件複位,所以要想予以正確識別,一般要借助非易失性RAM或者EEROM。當係統正常運行時,設置一可掉電保護的觀測單元。當係統正常運行時,在定時喂狗的中斷服務程序中使該觀測單元保持正常值(設為AAH),而在主程中將該單元清零,因觀測單元掉電可保護,則開機時通過檢測該單元是否為正常值可判斷是否看門狗複位。
(3)正常開機複位與非正常開機複位的識別
識(shi)別(bie)測(ce)控(kong)係(xi)統(tong)中(zhong)因(yin)意(yi)外(wai)情(qing)況(kuang)如(ru)係(xi)統(tong)掉(diao)電(dian)等(deng)情(qing)況(kuang)引(yin)起(qi)的(de)開(kai)機(ji)複(fu)位(wei)與(yu)正(zheng)常(chang)開(kai)機(ji)複(fu)位(wei),對(dui)於(yu)過(guo)程(cheng)控(kong)製(zhi)係(xi)統(tong)尤(you)為(wei)重(zhong)要(yao)。如(ru)某(mou)以(yi)時(shi)間(jian)為(wei)控(kong)製(zhi)標(biao)準(zhun)的(de)測(ce)控(kong)係(xi)統(tong),完(wan)成(cheng)一(yi)次(ci)測(ce)控(kong)任(ren)務(wu)需(xu)1小時。在已執行測控50分fen鍾zhong的de情qing況kuang下xia,係xi統tong電dian壓ya異yi常chang引yin起qi複fu位wei,此ci時shi若ruo係xi統tong複fu位wei後hou又you從cong頭tou開kai始shi進jin行xing測ce控kong則ze會hui造zao成cheng不bu必bi要yao的de時shi間jian消xiao耗hao。因yin此ci可ke通tong過guo一yi監jian測ce單dan元yuan對dui當dang前qian係xi統tong的de運yun行xing狀zhuang態tai、係xi統tong時shi間jian予yu以yi監jian控kong,將jiang控kong製zhi過guo程cheng分fen解jie為wei若ruo幹gan步bu或huo若ruo幹gan時shi間jian段duan,每mei執zhi行xing完wan一yi步bu或huo每mei運yun行xing一yi個ge時shi間jian段duan則ze對dui監jian測ce單dan元yuan置zhi為wei關guan機ji允yun許xu值zhi,不bu同tong的de任ren務wu或huo任ren務wu的de不bu同tong階jie段duan有you不bu同tong的de值zhi,若ruo係xi統tong正zheng在zai進jin行xing測ce控kong任ren務wu或huo正zheng在zai執zhi某mou時shi間jian段duan,則ze將jiang監jian測ce單dan元yuan置zhi為wei非fei正zheng常chang關guan機ji值zhi。那na麼me係xi統tong複fu位wei後hou可ke據ju此ci單dan元yuan判pan係xi統tong原yuan來lai的de運yun行xing狀zhuang態tai,並bing跳tiao到dao出chu錯cuo處chu理li程cheng序xu中zhong恢hui複fu係xi統tong原yuan運yun行xing狀zhuang態tai。
2.2 非正常複位後係統自恢複運行的程序設計
對dui順shun序xu要yao求qiu嚴yan格ge的de一yi些xie過guo程cheng控kong製zhi係xi統tong,係xi統tong非fei正zheng常chang複fu位wei否fou,一yi般ban都dou要yao求qiu從cong失shi控kong的de那na一yi個ge模mo塊kuai或huo任ren務wu恢hui複fu運yun行xing。所suo以yi測ce控kong係xi統tong要yao作zuo好hao重zhong要yao數shu據ju單dan元yuan、參數的備份,如係統運行狀態、係統的進程值、當前輸入、輸出的值,當前時鍾值、觀測單元值等,這些數據既要定時備份,同時若有修改也應立即予以備份。
當在已判別出係統非正常複位的情況下,先要恢複一些必要的係統數據,如顯示模塊的初始化、片外擴展芯片的初始化等。其次再對測控係統的係統狀態、運行參數等予以恢複,包括顯示界麵等的恢複。之後再把複位前的任務、參數、運行時間等恢複,再進入係統運行狀態。
yingdangshuomingdeshi,zhenshidihuifuxitongdeyunxingzhuangtaixuyaojiweixizhididuixitongdezhongyaoshujuyuyibeifen,bingjiayishujukekaoxingjianzha,yibaozhenghuifudeshujudekekaoxing。
其次,對多任務、多進程測控係統,數據的恢複需考慮恢複的次序問題。
係統基本初始化是指對芯片、顯示、輸入輸出方式等進行初始化,要注意輸入輸出的初始化不應造成誤動作。而複位前任務的初始化是指任務的執行狀態、運行時間等。
對於軟件抗幹擾的一些其它常用方法如數字濾波、RAM數(shu)據(ju)保(bao)護(hu)與(yu)糾(jiu)錯(cuo)等(deng),限(xian)於(yu)篇(pian)幅(fu),本(ben)文(wen)未(wei)作(zuo)討(tao)論(lun)。在(zai)工(gong)程(cheng)實(shi)踐(jian)中(zhong)通(tong)常(chang)都(dou)是(shi)幾(ji)種(zhong)抗(kang)幹(gan)擾(rao)方(fang)法(fa)並(bing)用(yong),互(hu)相(xiang)補(bu)充(chong)完(wan)善(shan),才(cai)能(neng)取(qu)得(de)較(jiao)好(hao)的(de)抗(kang)幹(gan)擾(rao)效(xiao)果(guo)。從(cong)根(gen)本(ben)上(shang)來(lai)說(shuo),硬(ying)件(jian)抗(kang)幹(gan)擾(rao)是(shi)主(zhu)動(dong)的(de),而(er)軟(ruan)件(jian)是(shi)抗(kang)幹(gan)擾(rao)是(shi)被(bei)動(dong)的(de)。細(xi)致(zhi)周(zhou)到(dao)地(di)分(fen)析(xi)幹(gan)擾(rao)源(yuan),硬(ying)件(jian)與(yu)軟(ruan)件(jian)抗(kang)幹(gan)擾(rao)相(xiang)結(jie)合(he),完(wan)善(shan)係(xi)統(tong)監(jian)控(kong)程(cheng)序(xu),設(she)計(ji)一(yi)穩(wen)定(ding)可(ke)靠(kao)的(de)單(dan)片(pian)機(ji)係(xi)統(tong)是(shi)完(wan)全(quan)可(ke)行(xing)的(de)。
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 築基AI4S:摩爾線程全功能GPU加速中國生命科學自主生態
- 一秒檢測,成本降至萬分之一,光引科技把幾十萬的台式光譜儀“搬”到了手腕上
- AI服務器電源機櫃Power Rack HVDC MW級測試方案
- 突破工藝邊界,奎芯科技LPDDR5X IP矽驗證通過,速率達9600Mbps
- 通過直接、準確、自動測量超低範圍的氯殘留來推動反滲透膜保護
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索






