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