目前,大量的嵌入式系統均采用了單片機,并且這樣的應用正在更進一步擴展;但是多年以來人們一直為單片機系統的可靠性問題所困惑。在一些要求高可靠性的控制系統中,這往往成為限制其應用的主要原因。
1 單片機系統的失效分析
一個單片機系統的可靠性是其自身軟硬件與其所處工作環境綜合作用的結果,因此系統的可靠性也應從這兩個方面去分析與設計。對于系統自身而言,能不能在保證系統各項功能實現的同時,對系統自身運行過程中出現的各種干擾信號及直接來自于系統外部的干擾信號進行有效的抑制,是決定系統可靠性的關鍵。有缺陷的系統往往只從邏輯上去保證系統功能的實現,而對于系統運行過程中可能出現的潛在的問題考慮欠缺,采取的措施不足,在干擾信號真正襲來的時候,系統就可能會陷入困境。任何系統的可靠性都是相對的,在一種環境下能夠很好工作的系統在另一種環境下卻有可能是很不穩定的。這就充分說明環境對系統可靠運行的重要性。在針對系統運行環境去設計系統的同時,應盡量采取措施改善系統運行的環境,降低環境干擾,但這樣的措施往往比較有限。
2 提高可靠性的措施
提高單片機系統可靠性的方法與措施很多。一般地,應根據系統所面臨的具體的可靠性問題,針對引起或影響系統不可靠的因素采取不同的處理措施。這些措施一般從這樣兩個目的出發:第一,盡量減少引起系統不可靠或影響系統可靠的外界因素;第二,盡量提高系統自身抗干擾能力及降低自身運行的不穩定性。例如,為了抑制電源的噪聲和環境干擾信號而采用的濾波技術、隔離技術、屏蔽技術等都是出于第一個目的;另外,針對系統自身而采用的看門狗電路、軟件抗干擾技術、備份技術等均是出于第二個目的而采取的措施。其中第一類的措施較常使用,其使用簡單而且效果也較好,但其對系統可靠性的提高是有限的,許多情況下不能滿足系統的要求。第二類措施的使用可以更進一步提高系統的可靠性,往往在高可靠性的系統設計中被廣泛使用。下面就第二類技術使用中的一些相關問題作進一步的分析。
2.1 用監視定時器技術提高系統的可靠性
監視定時器(Watchdog)技術現在使用得非常廣泛,技術已較為成熟,這一技術的支持手段也很多。目前,各處理器的生產廠家幾乎都在生產內置有看門狗定時器的單片機產品,市場上還有許多獨立的看門狗定時器芯片可供選擇。要實現這樣的電路已經較為容易,因此這里對于如何實現這一技術的一般細節不作詳細的論述,僅就采用此技術所導致的可重人性問題進行分析。采用監視定時器技術后,一旦程序跑飛,系統立即會被監視定時器復位掉,從頭重新啟動系統,從而退出不正常的運行狀態,但是這樣使用時必須注意系統的可重人性。所謂系統的可重人性可以這樣來定義:當一個微處理器系統在重新復位啟動以后,系統對外的執行操作不因重新啟動而改變,或者說這種改變是能夠容忍的,從而保證整個系統對外操作的連續性和順序性,也就是系統最終的安全性和可靠性。對于一個系統,如果它對外的控制操作只與系統當前的輸入狀態有關,那么這個系統就幾乎具有完全的重入性能;相反,如一個系統對外的輸出操作不僅與系統當前的輸入相關,而且與系統的歷史狀態有關,那么如果系統重入時系統的歷史狀態沒有保留或者歷史狀態被破壞,那么此時系統對外的操作就可能完全是錯誤的,這樣的系統雖然在看門狗定時器的作用下退出了不正常的運行狀態,但重入的狀態也不會正常,那么這樣的系統也只能是病態的系統,不能使用。因此,對于采用了看門狗電路來提高可靠性的系統,必須嚴格保證系統的可重入性。
對于與歷史狀態相關的系統,為保證其重入性能,可以把其歷史狀態保存在系統的RAM中,即在單片機系統的內存或其擴展的外部存儲器中,開辟出專用于保存歷史狀態的緩沖區。在確保系統不掉電的情況下,這些歷史數據在系統重入時可以被重新使用。如果不能保證系統的電源穩定,還必須考慮采用備用電池供電,以保證RAM數據的安全穩定;對于時間不是太敏感的系統,還可以采用E2PROM或Flash ROM來保存歷史數據。
2.2軟件抗干擾技術
一個系統可能由于存在著各種干擾及不穩定因素而出現運行故障。為解決這一問題,可以從程序的設計方面采取一些措施。傳統的為抑制系統的干擾信號而經常采用的軟件濾波技術、軟件冗余設計就是這一類的典型應用。根據設計經驗,通常還可以采用軟件鎖設計、程序陷阱設計。這一類方法主要是針對程序跑飛的情況而采用的。當系統在干擾信號的作用下發生程序跑飛時,程序指針有可能指向兩個區域:一種可能正好轉到程序區的其他地址進行執行,一種可能轉移到程序空間的盲區進行執行。所謂盲區,就是說那里并沒有存放有效的程序指令。對于第一種情況,可以采取軟件鎖加以抑制。例如為保證對外操作的安全,在軟件鎖設計中,對于每一個相對獨立的程序塊在其執行以前或執行中對一個預先設定好的密碼進行校驗,只有當這一密碼相符時執行才真正有效,也只有程序是通過正常的轉移途徑轉移過來時,才會由上一級的程序設定正確的密碼;否則,會根據校驗錯而使程序強制發生轉移,錯誤狀態得到處理,并恢復程序的正常運行狀態??梢钥聪旅娴囊粋€例子:假設有順序執行的三個程序塊,每一個程序塊執行時都對其設定的密碼進行校驗。
當程序順序執行時,每一個程序塊都能夠得到有效正確的執行?,F在假設程序由于干擾而發生跑飛,由SUB—PRO1的塊處理跳到了程序SUB-PR03處開始執行,那么在執行中密碼校驗會出錯,程序將轉移到錯誤處理程序進行處理,避免進行錯誤的操作。
設計程序陷阱的目的,主要是為了防止程序跑飛到程序盲區進行執行。一般情況下,對于程序代碼空間以外的ROM空間的處理是采用空置的方法。固化程序時,這些空置空間被全寫為1或全寫為O,這樣程序跳入這一區域將不可控。為了捕獲跳入此區的程序,可以采用程序陷阱來予以實現。下面通過例子來說明:假設某系統程序空間為32KB,程序編譯后共生成18 KB的代碼,那么,還有14 KB的程序空間未被使用,可以在該區域放置下面的陷阱程序:
用上面程序段重復覆蓋剩余的程序空間陷阱程序里的每一段含有的NOP指令的多少對于捕獲的成功率及捕獲的時間有影響。NOP指令放置的越多捕獲的成功率就越高,但花費的時間就越長,程序失控的時間也越長;否則,情況則相反。因為只有程序跳轉到NOP指令或LJMP指令的首個字節時,才能成功捕獲;當程序跳到LJMP指令的后兩個字節時,可能會出現不可預知的執行結果。被捕獲的程序如果跳到程序的起始處執行時,還必須考慮程序的可重人性。
2.3采用備份系統提高可靠性
備份系統在許多重要控制系統中已被廣泛使用,但多在工控機中或較大型的系統中采用。備份系統可根據具體的情況分為在線備份系統和后備備份系統。對于在線備份系統,系統中的兩個CPU均處于工作狀態,有可能兩個CPU處在對等的位置,也可能一個處在主CPU的位置,而另一個處在從CPU的位置。在對等的情況下,兩個CPU共同決定系統對外的操作,任何一個CPU出錯都將
引起對外操作的禁止。對于一主一從的情況,往往是主CPU負責系統控制邏輯的實現,而從CPU負責對主CPU的工作狀態進行監控。當監控到主CPU工作異常時,從CPU通過強行復位主CPU等操作使主CPU恢復正常,同時,為確保從CPU工作正常,從CPU的工作狀態也被主CPU監控;當從CPU的工作狀態不正常時,主CPU也可采取措施使從CPU恢復正常工作,即實現互相監控的目的。在具體的設計中,主從CPU進行信息交換的途徑非常靈活、多樣。例如,采用公用的存儲器來實現監控信息的交換(如把公用信息存入雙口RAM),采用握手信號的方法實現監控信息的交換等。
3 提高系統可靠性的綜合設計方法
在一個具體的系統設計中,為提高系統的穩定性和可靠性,往往要綜合采用多種措施來達到滿意的效果,這是全面提高系統可靠性的必由之路。系統不同,其具體的控制對象就可能不同,運行環境也會千差萬別,因而其面臨的主要干擾問題就不同,采取的措施也就不同;但僅采取某項措施就希望全面提高系統的可靠性常常是不現實的,而要針對主要問題綜合采取多項措施聯合提高可靠性。
4 設計實例
下面給出一個設計實例,以進一步說明提高系統可靠性設計的一些常用方法。
在某衛星通信系統中,為了降低系統的相噪,要求其前置低噪聲放大器(LNA)的工作溫度保持恒定(40℃);而該放大器在野外工作的環境溫度范圍為一40~+60℃之間,因此必須把該放大器放入特制的恒溫箱中。該恒溫箱應具有既能制熱又能制冷的功能。制熱采用電阻絲加熱器,制冷采用半導體制冷片來實現。為防止恒溫箱因控制器失靈而造成溫度失控甚至損壞低噪聲放大器,破壞整個系統的正常工作,恒溫箱的設計主要采用了主從雙CPU系統來提高系統的可靠性。除此以外,還采用了如電源監控技術、看門狗技術、軟件陷阱技術、光電隔離技術等措施綜合提高系統的可靠性。該系統的結構框圖如圖1所示。
主CPU負責加熱器、制冷片及箱內箱外溫度的檢測,擔負主要的控制任務。主CPU選AT89S52單片機,內含看門狗定時器,在芯片外加MAX707作為電源監控電路;除可以向主CPU提供可靠的復位信號以外,還可以檢測掉電中斷申請信號,當掉電發生時及時保存現場數據。加熱棒使用交流220V供電,制冷片采用15V直流穩壓電源供電。為防止高電壓強電流對弱電部分的干擾,主CPU
產生的控制信號都經過光電隔離送向驅動電路,以提高系統的可靠性。
從CPU選AT89C2051,主要負責對主CPU工作情況的監控及電源供電電壓的監視。當掉電現象發生時,AT89C2051內的電壓比較器會檢測到這種變化,并由后備電池供電,通過485口向監控臺報告。
主從CPU之間的監控是相互的。主從CPU通過它們之間的I/O口線握手,彼此監視對方的工作狀態,并采取相應的處置措施,保證系統對外操作的安全。通過上述措施的實施,系統的可靠性非常出色,自投入運行以來一直穩定可靠,無不明原因的死機或失控現象發生,充分說明了系統設計的成功。而根據以往的經驗,如不采用上述的綜合設計方法,這樣的系統通常在連續運行1~2周后就很可能產生問題。
結 語
本文詳細分析了單片機系統失效的原因,討論了提高系統可靠性的措施,并提出了提高系統可靠性的綜合設計方法。在低噪聲放大器恒溫控制器中的成功應用,表明這種設計方法是行之有效的,系統的可靠性得到了充分的保障。
責任編輯;zl
評論
查看更多