新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于MCS-96單片機控制系統(tǒng)的程序失控防范

基于MCS-96單片機控制系統(tǒng)的程序失控防范

作者: 時間:2012-02-15 來源:網(wǎng)絡(luò) 收藏

3.2 使受擾程序快速重入正常運行狀態(tài)的方法

  系統(tǒng)軟件是由完成各種功能的程序組成的,因此可分成若干個功能模塊。為了能使程序快速重入系統(tǒng)的正常運行狀態(tài),首先要將系統(tǒng)軟件編制成模塊化結(jié)構(gòu),并盡可能的將其細(xì)分為若干功能模塊,每個功能模塊在運行中需具有寫入和記錄功能,即設(shè)置RAM區(qū)的有效標(biāo)志;記錄編號和首地址;記錄關(guān)鍵的又不可重新獲得的數(shù)據(jù);模塊還應(yīng)具有給運行監(jiān)視系統(tǒng)發(fā)脈沖的功能等。為判斷程序是否跑飛,要求在每個功能模塊的結(jié)尾處將指定單元中保存的標(biāo)志與本功能模塊預(yù)先設(shè)置的標(biāo)志進行對比。若不同,則程序跑飛,然后將它恢復(fù)到指定單元中保存的標(biāo)志所對應(yīng)的功能模塊去重新執(zhí)行;若相同,則運行正常。對于功能模塊中的程序跑飛,可根據(jù)具體情況對結(jié)果的合理性進行分析和判斷。若不合理,則返回重新執(zhí)行;若合理,則進入下一個功能模塊。具有這種功能的程序流程圖如圖3—2所示。

3.3 利用數(shù)據(jù)冗余技術(shù)實現(xiàn)RAM內(nèi)容自救的方法

  為了保證系統(tǒng)實現(xiàn)無擾動重入正常運行狀態(tài),必須保證重要數(shù)據(jù)的正確性。實現(xiàn)這一目的的方法是采用數(shù)據(jù)冗余技術(shù)。

  在實時控制過程中,干擾會造成RAM中的數(shù)據(jù)被沖毀。數(shù)據(jù)被沖毀的情形,一般有如下3類:1)整個RAM區(qū)數(shù)據(jù)被沖毀;2)RAM中某一片數(shù)據(jù)被沖毀; 3)個別數(shù)據(jù)被沖毀。由于RAM中保存的是各種原始數(shù)據(jù)、標(biāo)志、變量等,如果被破壞,會造成系統(tǒng)出錯或無法運行。不過,對幾乎所有的單片機實時控制系統(tǒng)而言,RAM中的大部分內(nèi)容是為了進行分析、計算、比較而臨時寄存的,不允許丟失的數(shù)據(jù)也只占RAM內(nèi)容的極少部分。在這種情況下,除了那些不允許丟失的數(shù)據(jù)外,其余大部分內(nèi)容允許短時被破壞,最多有過引起系統(tǒng)一個很短時間的波動,但很快就能恢復(fù)正常。因此,在實時軟件中,只要注意對少數(shù)不允許丟失的數(shù)據(jù)進行保護即可。常用方法有“校驗法”和“設(shè)標(biāo)法”。這兩種方法各有千秋,校驗法比較繁瑣,但查錯的置信度高;設(shè)標(biāo)法簡單,但對數(shù)據(jù)表中個別數(shù)據(jù)被沖毀的情況無能為力。在編程中應(yīng)綜合使用。具體做法是:1)將RAM工作區(qū)重要區(qū)域的始端和尾端各設(shè)置一個標(biāo)志碼“0”或“1”;2)對RAM中固定不變的數(shù)據(jù)表格設(shè)置校驗字。

  在程序執(zhí)行過程中,每隔一定時間通過事先設(shè)計的查錯程序來校驗各標(biāo)志碼是否正常,如果不正常,則利用數(shù)據(jù)冗余技術(shù)通過抗干擾處理程序來進行修正。冗余設(shè)計的一般原則是:在RAM區(qū)中相隔盡可能遠(yuǎn)且遠(yuǎn)離堆棧區(qū)的不同區(qū)域?qū)?shù)據(jù)備份3份,當(dāng)讀取數(shù)據(jù)時,把3份數(shù)據(jù)備份相比較,采用3取 2的表決原則,確保數(shù)據(jù)的正確性。

3.4 鎖定輸出口的方法

  為了防止失控程序?qū)敵隹诎l(fā)生非正常操作,引起控制量產(chǎn)生波動和破壞系統(tǒng)的安全性,必須對輸出口的操作進行嚴(yán)格的審查。解決的辦法是硬件上采用鎖定控制器,軟件上采用功能塊標(biāo)志和口令字。

  鎖定控制器由兩個D觸發(fā)器來實現(xiàn),如圖3—3所示。

  平時兩個鎖定控制器的輸出端Q1、Q2均為低電平,而且Q1、Q2只要有一個信號是低電平,輸出通道就處于被封鎖狀態(tài)。只有Q1、Q2同時為高電平時,該通道才被打開。為了防止程序?qū)敵鐾ǖ赖姆欠▽懭耄綍r程序通過端口控制信號和置Q1、 Q2為低電平來關(guān)閉輸出通道。而僅當(dāng)需要輸出時,程序通過端口控制信號和置Q1、Q2為高電平打開輸出通道。程序輸出時,需先給出口令字。輸出模塊程序流程圖如圖3—4所示。

4 結(jié)束語

  采用上述這些措施可以有效地提高系統(tǒng)運行的可靠性,獲得令人滿意的控制效果,并且稍做修改即可用于其它類型的單片機控制系統(tǒng),具有很強的實用性和通用性。

[參考文獻(xiàn)]

[1] 王幸之.單片機應(yīng)用系統(tǒng)抗干擾技術(shù)[M].北京航空航天大學(xué)出版社,2000,2.
[2] 周航慈.單片機應(yīng)用系統(tǒng)程序設(shè)計技術(shù)[M].北京航空航天大學(xué)出版社,1991,7.
[3] 劉大茂.智能儀表[M].機械工業(yè)出版社,1998.5


上一頁 1 2 3 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉