單片機在嵌入式系統應用中,抗干擾性能是系統可靠性的重要指標,抗干擾設計是單片機系統研制中不可忽視的一個重要內容。本文根據筆者在實際工作中的體會,就單片機在嵌入式系統應用中的抗干擾問題進行探討,并給出了排錯設計、容錯設計的一些方法和措施。 隨著科學技術的迅速發展,單片機在各個領域中的應用越來越廣泛。在眾多的應用系統中共同面臨的一個問題,就是它在應用系統中的可靠性,這就要求我們在設計時應根據現場具體情況,在硬件設計、線路板設計、軟件設計等方面來采取相應的抗干擾措施。 一、抗電源干擾的措施 大部分單片機嵌入式系統都采用市電電源供電,在應用系統中一個很重要的干擾就來自電源。市電的各種干擾,如雷電、大容量感性負載的起停等,都會造成電源瞬間欠壓、過載,產生浪涌、下陷、尖峰等干擾,但我們可采取如下有效抗干擾措施。 1.用壓敏電阻抑制尖峰、浪涌 壓敏電阻兩端的電壓如超過其限定值時,電流會迅速增大,呈短路狀態,利用這一特點,可以用它吸收瞬間的尖峰、浪涌電壓。壓敏電阻并聯在電源變壓器的初、次級,加入壓敏電阻后,電源干擾造成單片機程序失控的可能性減小。壓敏電壓的計算公式為:VIMA=1.56×32×V~(V~:交流電壓有效值) 2.濾波器抑制高頻干擾 市電中含有多種高次諧波,它們很容易經電源進入單片機系統,另外一些射頻發射、電磁波等也會由電源線感應反饋入單片機系統造成干擾,因此在電源電路中加入低通濾波電路讓50 Hz市電基波通過,抑制掉高頻信號。此外在電源變壓器的初次級之間均用屏蔽層隔離,減少其分布電容,提高抗共模干擾的能力。 圖1中列出了幾種不同形式的濾波電路。 二、印刷電路板的抗干擾設計 印刷電路板是單片機應用系統中器件、信號、電源線的高密度集合體,印刷電路板設計的好壞對抗干擾能力的影響很大。 1.電源線、地線的設計 在單片機應用系統,接地是抑制干擾的重要方法。線路板上既有邏輯電路,又有模擬電路,兩者的地線要分別與電源端地線相連。低頻電路的地線盡量采用單點并聯接地,高頻電路宜采用多點串聯接地。接地線如果很細,接地電位則隨電流的變化而變化,使系統抗噪聲性能變壞,因此應加粗接地線條,使它能通過3倍于印刷電路板上的允許電流。 電源線與地線應盡量靠近走線以減少所包圍的環路面積,從而減少外界磁場對環路切割而產生的電場干擾,同時也減少環路對外電磁輻射。電源線、地線的走向與數據傳遞方向一致也有助于增強抗噪聲能力。 2.一些特殊措施 在印刷電路板的各個關鍵部位配置去耦電容應視為印刷電路板設計的一項常規做法。原則上每個集成電路芯片都應安置一個0.01μF的瓷片電容排除射頻耦合干擾,電容引線不能太長,應緊靠芯片的電源線、地線。如印刷電路空隙小裝不下時,可每4~10個芯片安置一個1~10μF的限噪聲用的電容鉭電容。線路板布局時,應使單片機的振蕩晶體盡量放在單片機兩引腳近端。 三、程序運行失常的對策 前面所介紹的抗干擾措施僅是盡量減少干擾,提高系統運行的可靠性,但在惡劣的工作環境下程序長期運行仍可能失控:PC值指向操作數,將操作數作為指令碼執行;PC值超出應用程序區,將非程序區中的隨機數作為指令碼運行。不管何種情況,都會造成程序的非正常運行或死機。看門狗就是在程序跑飛或死機時,對系統進行重新置位或復位,使系統恢復正常運行的一種專用電路。常用的看門狗有2種:軟件狗和硬件狗。 1.硬件看門狗 所謂硬件狗,就是一個能發出“復位”信號的計數器或定時器電路。圖2是一個硬件看門狗電路。其工作原理是:P1.0作為看門狗的“喂狗”信號定時給出一脈沖,設其脈沖間隔為△t<tw<2△t,當程序正常運行時,每隔△t輸出一脈沖觸發CC4098單穩電路,使始終為低電平,若程序一旦出現異常,不能在tw時間內送出一“喂狗”脈沖,產生一正脈沖,使單片機系統復位,使其能重新正常運行。 現在已有許多更先進的集電源監視和“看門狗”于一身的新型芯片,如MAX705、MAX706、MAX813L等,有的還具備掉電檢測、備用電池自動切換功能。 2.軟件看門狗 軟件狗實際上就是通常所說的軟件陷井。它是在程序存儲器的空余地址中全部填上1條跳轉指令,一旦程序跑飛,只要程序指針指向這些地址,便立即被強行跳轉至程序開頭或其他指定地址處,從而使程序繼續正常運行。 四、軟件中的抗干擾措施 提高系統可靠性的方法有排錯設計和容錯設計。前面提到的排錯設計并不能將干擾完全解決。而容錯就是允許系統發生故障,借助冗余技術使其自動抵消,在故障存在的情況下也能使系統正常運行。下面介紹一下常用的幾種軟件容錯方法。 1.數據采集誤差的軟件對策 對于實時數據采集系統,為了消除傳感通器中的干擾信號,在硬件上常采取模擬濾波器對信號實現頻率濾波,也可以用CPU的運算控制功能也可以實現頻率濾波,這就是數字濾波(軟件濾波)。對一點數據連續采樣多次,計算其平均值,以平均值作為點的采樣結果,這樣可以減少系統的隨機干擾對采集結果的影響。根據干擾造成采樣數據偏大或偏小的情況,對一個采樣點連續采集多個信號,對采樣值進行比較,取中值作為該點的采集結果。還可利用軟件完成RC低通濾波器的算法,實現用軟件方法代替硬件RC濾波器。一階遞推數字濾波公式為 式中:Q為數字濾波器時間常數;Yn為第n次采樣時的濾波輸出;Xn為第n次采樣時的濾波輸入。 2.時間冗余 在程序的適當位置設置若干檢查點,在每一個檢查點保存程序在該檢查點之前正確運行而得到的全部信息及標志。如果故障是暫時性的,則程序卷回到上一檢查點開始重新執行,這樣可以完全消除錯誤,其框圖如圖3所示。但它只能檢出而不能消除永久性故障,用時間換取可靠性。 3.N版本程序設計 N版本程序設計,是為某一個確定功能而獨立編制的幾個程序同時運行,其結果是通過這些獨立程序的運行結果經多數表決而得到的,其結構框圖如圖4所示。N版本程序設計中,特別強調N版本,因為如果各程序采用了相同的結構、相同的算法,就有可能產生相同的錯誤而使多數表決失敗。 N版本程序設計中包含了程序設計上的冗余,用效率換取可靠性,能容忍設計錯誤的能力,還能屏蔽某些類型的暫時性硬件故障。 數據的冗余保護也是N版本程序設計思想的應用。將重要數據同時存入幾個不相鄰的存儲單元,由于不相鄰存儲單元因干擾而被同時改寫的可能性很小,即使有一兩個存儲單元出錯也能得到正確的數據。 4.棄權規則 就是當程序運行或繼續運行的某些必要條件未能具備時,放棄對這些條件的要求,不是產生等待、中斷、出錯或停機,而是采用跳過、轉移、N-1、默認等方式保證程序繼續運行,這些方法只適用于屏蔽暫時故障,所以要求同時產生報警輸出,以便確定是否需要人為干預來消除永久故障。棄權規則首先要不影響程序的正確性和適應用性。 (1)跳過 在不影響控制系統正常運行的前提下,跳過條件不具備而導致故障的模塊向下執行,這是軟件失效運行的形式之一。所謂軟件失效運行就是在故障發生時先把故障模塊從系統中斷開,再對系統的其余模塊進行重構,使系統能繼續運行,但功能降低,即降級運行?煽啃缘奶岣呤且阅承┕δ艿膿p失為代價的。 (2)N-1方式 N-1方式是基于控制程序的循環執行特性,即采用上一次循環(第N-1次)的數據代替本次循環(第N次)所需的卻未出現或未具備的數據。這種方法特別適用于緩變的被控對象。例如某次控制輸出被判斷為不合理,則利用上次循環的輸出來代替它。 (3)默認 默認也是棄權規則形式之一,與跳過不同的是采用預先置入的合理條件代替未具備的條件,即默認條件存在。例如將非法輸入的操作指令默認的無輸入,繼續原操作。 總之,棄權規則的目的是使工作在實時方式的控制系統保證連續運行,以確保被控系統長期穩定工作,雖然系統的功能有可能降低。 控制系統常用的軟件容錯方法很多,還有非正常性規則、失效保險設計等,在此就不不一一介紹。排錯設計和容錯設計的方法也很多,要根據現場情況選擇適當的方法。以上介紹的抗干擾措施是在長期實踐中摸索出的一些經驗,在此提出僅供參考。 |