單片機(jī)系統(tǒng)軟件如何抗干擾的方法
2.1.2 開機(jī)復(fù)位與看門狗故障復(fù)位的識(shí)別
開機(jī)復(fù)位與看門狗故障復(fù)位因同屬硬件復(fù)位, 所以要想予以正確識(shí)別,一般要借助非易失性RAM或者EEROM。當(dāng)系統(tǒng)正常運(yùn)行時(shí),設(shè)置一可掉電保護(hù)的觀測單元。當(dāng)系統(tǒng)正常運(yùn)行時(shí),在定時(shí)喂狗的中斷服務(wù)程序中使該觀測單元保持正常值(設(shè)為 AAH),而在主程中將該單元清零,因觀測單元掉電可保護(hù),則開機(jī)時(shí)通過檢測該單元是否為正常值可判斷是否看門狗復(fù)位。
2.1.3 正常開機(jī)復(fù)位與非正常開機(jī)復(fù)位的識(shí)別
識(shí)別測控系統(tǒng)中因意外情況如系統(tǒng)掉電等情況引起的開機(jī)復(fù)位與正常開機(jī)復(fù)位,對于過程控制系統(tǒng)尤為重要。如某以時(shí)間為控制標(biāo)準(zhǔn)的測控系統(tǒng),完成一次測控任務(wù)需1小時(shí)。在已執(zhí)行測控50分鐘的情況下,系統(tǒng)電壓異常引起復(fù)位,此時(shí)若系統(tǒng)復(fù)位后又從頭開始進(jìn)行測控則會(huì)造成不必要的時(shí)間消耗。因此可通過一監(jiān)測單元對當(dāng)前系統(tǒng)的運(yùn)行狀態(tài)、系統(tǒng)時(shí)間予以監(jiān)控,將控制過程分解為若干步或若干時(shí)間段,每執(zhí)行完一步或每運(yùn)行一個(gè)時(shí)間段則對監(jiān)測單元置為關(guān)機(jī)允許值,不同的任務(wù)或任務(wù)的不同階段有不同的值,若系統(tǒng)正在進(jìn)行測控任務(wù)或正在執(zhí)某時(shí)間段,則將監(jiān)測單元置為非正常關(guān)機(jī)值。那么系統(tǒng)復(fù)位后可據(jù)此單元判系統(tǒng)原來的運(yùn)行狀態(tài),并跳到出錯(cuò)處理程序中恢復(fù)系統(tǒng)原運(yùn)行狀態(tài)。
2.2 非正常復(fù)位后系統(tǒng)自恢復(fù)運(yùn)行的程序設(shè)計(jì)
對順序要求嚴(yán)格的一些過程控制系統(tǒng),系統(tǒng)非正常復(fù)位否,一般都要求從失控的那一個(gè)模塊或任務(wù)恢復(fù)運(yùn)行。所以測控系統(tǒng)要作好重要數(shù)據(jù)單元、參數(shù)的備份,如系統(tǒng)運(yùn)行狀態(tài)、系統(tǒng)的進(jìn)程值、當(dāng)前輸入、輸出的值,當(dāng)前時(shí)鐘值、觀測單元值等,這些數(shù)據(jù)既要定時(shí)備份,同時(shí)若有修改也應(yīng)立即予以備份。
當(dāng)在已判別出系統(tǒng)非正常復(fù)位的情況下,先要恢復(fù)一些必要的系統(tǒng)數(shù)據(jù),如顯示模塊的初始化、片外擴(kuò)展芯片的初始化等。其次再對測控系統(tǒng)的系統(tǒng)狀態(tài)、運(yùn)行參數(shù)等予以恢復(fù),包括顯示界面等的恢復(fù)。之后再把復(fù)位前的任務(wù)、參數(shù)、運(yùn)行時(shí)間等恢復(fù), 再進(jìn)入系統(tǒng)運(yùn)行狀態(tài)。
應(yīng)當(dāng)說明的是,真實(shí)地恢復(fù)系統(tǒng)的運(yùn)行狀態(tài)需 要極為細(xì)致地對系統(tǒng)的重要數(shù)據(jù)予以備份,并加以數(shù)據(jù)可靠性檢查,以保證恢復(fù)的數(shù)據(jù)的可靠性。
其次,對多任務(wù)、多進(jìn)程測控系統(tǒng),數(shù)據(jù)的恢復(fù)需考慮恢復(fù)的次序問題,筆者實(shí)際應(yīng)用的數(shù)據(jù)恢復(fù)過程流程圖如圖2所示。
圖2 系統(tǒng)自恢復(fù)程序流程圖
圖中恢復(fù)系統(tǒng)基本數(shù)據(jù)是指取出備份的數(shù)據(jù)覆蓋當(dāng)前的系統(tǒng)數(shù)據(jù)。系統(tǒng)基本初始化是指對芯片、顯示、輸入輸出方式等進(jìn)行初始化,要注意輸入輸出的初始化不應(yīng)造成誤動(dòng)作。而復(fù)位前任務(wù)的初始化是指任務(wù)的執(zhí)行狀態(tài)、運(yùn)行時(shí)間等。
3 結(jié)束語
對于軟件抗干擾的一些其它常用方法如數(shù)字濾波、RAM數(shù)據(jù)保護(hù)與糾錯(cuò)等,限于篇幅,本文未作討論。在工程實(shí)踐中通常都是幾種抗干擾方法并用,互相補(bǔ)充 完善,才能取得較好的抗干擾效果。從根本上來說,硬件抗干擾是主動(dòng)的,而軟件是抗干擾是被動(dòng)的。細(xì)致周到地分析干擾源,硬件與軟件抗干擾相結(jié)合,完善系統(tǒng)監(jiān)控程序,設(shè)計(jì)一穩(wěn)定可靠的單片機(jī)系統(tǒng)是完全可行的。
評論