吳興純,趙金燕,楊秀蓮,楊燕云
(1.云南農(nóng)業(yè)大學(xué)基礎(chǔ)與信息工程學(xué)院,云南昆明650201;2.云南農(nóng)業(yè)大學(xué)國資處,云南昆明650201)
抗干擾措施與可靠性設(shè)計是單片機應(yīng)用系統(tǒng)開發(fā)與研究的一項重要內(nèi)容。許多在實驗室運行良好的單片機系統(tǒng)安裝到工業(yè)現(xiàn)場,常常由于干擾的原因,系統(tǒng)變得嚴重不可靠,甚至出這樣或那樣的問題。干擾源產(chǎn)生的干擾通過耦合通道對單片機系統(tǒng)發(fā)生電磁干擾[1]。干擾作用于單片機系統(tǒng)的輸入通道時,它能使模擬信號失真,數(shù)字信號出錯;作用于單片機系統(tǒng)的輸出通道時,它能使輸出信號混亂,不能正常反應(yīng)系統(tǒng)工作的真實輸出。如果是檢測系統(tǒng),則其輸出信號不可靠;如果是控制系統(tǒng),則會使一些執(zhí)行機構(gòu)誤動作;如果干擾作用于單片機應(yīng)用系統(tǒng)的核心,它能使計算機的CPU得到錯誤的地址信息,引起程序計數(shù)器PC出錯,使程序運行離開正常軌道,導(dǎo)致程序失控。
常用的抗干擾技術(shù)主要有硬件抗干擾和軟件抗干擾。硬件抗干擾是系統(tǒng)設(shè)計時首選的抗干擾措施,它能有效抑制干擾源,阻斷干擾傳輸通道。目前,硬件抗干擾技術(shù)和手段都有了很大的進步,各種抗干擾器件以及干擾抑制器已有許多現(xiàn)成產(chǎn)品可供選購,只要合理地布置與選擇有關(guān)參數(shù),硬件抗干擾措施就能抑制系統(tǒng)的絕大部分干擾[1-2]。但是,微機系統(tǒng)的抗干擾不可能完全依靠硬件來解決,在許多復(fù)雜的控制環(huán)境下,軟件抗干擾往往能取得事半功倍的效果,因此軟件抗干擾技術(shù)越來越得到程序設(shè)計人員的重視。
干擾按其產(chǎn)生的原因來分類,可分為放電干擾、高頻振蕩干擾和浪涌干擾;按其傳導(dǎo)模式分類,可分為共模干擾和串模干擾;按其波形分類,可分為持續(xù)的正弦波、偶發(fā)性脈沖電壓以及脈沖序列干擾。干擾源產(chǎn)生的干擾通過耦合通道對單片機系統(tǒng)發(fā)生電磁干擾。干擾的耦合方式有直接耦合、公共阻抗耦合、電容耦合、電磁感應(yīng)耦合、輻射耦合和漏電耦合等6種耦合方式。干擾傳入單片機應(yīng)用系統(tǒng),大大影響了系統(tǒng)的可靠性、安全性[1]。另外,影響單片機系統(tǒng)可靠、安全運行的因素還與系統(tǒng)的結(jié)構(gòu)設(shè)計、元器件選擇、安裝、制造工藝和外部環(huán)境條件等有關(guān)。
干擾對單片機應(yīng)用系統(tǒng)的影響主要表現(xiàn)在:
1)使數(shù)據(jù)采集誤差加大干擾侵入測量單元模擬信號的輸入通道,干擾信號疊加在有用信號上,使數(shù)據(jù)采集誤差加大,特別是當傳感器輸出微弱信號時,干擾會更加嚴重。
2)控制狀態(tài)失靈一般測控系統(tǒng)輸出的控制信號較大時,不易受到外界干擾。但輸出的控制信號通常是依據(jù)某些條件的狀態(tài)輸入信號和這些信號的邏輯處理結(jié)果。若這些輸入的狀態(tài)信號受到干擾,引入虛假的狀態(tài)信號,會導(dǎo)致輸出控制誤差加大,甚至控制失常。
3)數(shù)據(jù)受干擾發(fā)生變化單片機應(yīng)用系統(tǒng)中,RAM存儲器的數(shù)據(jù)是可以讀寫的。在干擾的侵害下,RAM中的數(shù)據(jù)有可能被篡改。程序及表格存于程序存儲器EPROM中,這些數(shù)據(jù)雖然不容易受到破壞,但是對于內(nèi)部RAM和外擴RAM中的數(shù)據(jù)都有可能受到外界干擾而變化。根據(jù)干擾竄入的途徑、受干擾數(shù)據(jù)的性質(zhì)不同,系統(tǒng)受損壞的情況也不一樣,有的造成數(shù)據(jù)誤差,有的使控制失控,有的改變程序狀態(tài),有的改變某些部件(如定時器,計數(shù)器,串行口等)的工作狀態(tài)等。
4)程序運行失常CPU程序計數(shù)器的正常工作,是單片機應(yīng)用系統(tǒng)維持程序正常運行的關(guān)鍵[2]。若外界干擾導(dǎo)致程序計數(shù)器的值改變,那就破壞了程序的正常運行。由于系統(tǒng)受干擾后,程序計數(shù)器的值是隨機的,因而會導(dǎo)致程序運行混亂,通常情況是程序執(zhí)行一系列毫無意義的指令,最后使系統(tǒng)陷入死循環(huán),這將使輸出嚴重混亂,系統(tǒng)失靈。
計算機軟件是一系列計算機指令的邏輯序列[3]。軟件可靠性的主要標志是軟件能否真實而準確地實現(xiàn)設(shè)計者賦予系統(tǒng)的各種功能和要求。計算機軟件也是系統(tǒng)實行的各項功能的信息組織形式。一個軟件的各程序段之間有著密切的聯(lián)系,軟件的運行過程是各程序段間的邏輯組合過程,不同的邏輯組合決定了軟件不同的程序路徑。程序路徑的選擇是由軟件自身確定的,如果軟件在某些程序路徑上有缺陷,那么當程序運行到這里時就會發(fā)生錯誤。因此,程序設(shè)計人員對工業(yè)現(xiàn)場、生產(chǎn)工藝的了解與熟悉程度將直接關(guān)系到軟件的編寫質(zhì)量。從根本上說,提高軟件可靠性的前提條件是設(shè)計人員對生產(chǎn)工藝過程的深入了解,并且在編寫軟件時做到軟件易讀、易測和易修改。為了提高軟件的可靠性,應(yīng)盡量將軟件編寫工作規(guī)范化、標準化和模塊化,盡量把復(fù)雜的問題劃分成若干較為簡單明確的小問題,把一個大程序分成若干個子程序,這有助于即時發(fā)現(xiàn)設(shè)計中的不合理因素,同時還要盡量減少循環(huán)嵌套、調(diào)用嵌套以及中斷嵌套的次數(shù)。
此外,軟件的可靠性是通過軟件的可測試性來反映的,軟件設(shè)計要易于測試。軟件的可測試性指針對系統(tǒng)是否能比較容易地制定出測試準則,并根據(jù)這些準則對軟件的運行狀態(tài)進行測定。通常,在設(shè)計完軟件或部分程序時,應(yīng)先讓其在模擬環(huán)境下進行靜態(tài)和動態(tài)仿真運行,以檢驗其正確性和可靠性。在軟件測試中,檢查和測試幾個小模塊要比檢查和測試大程序方便得多。檢驗軟件可靠性的應(yīng)用軟件是解決軟件可靠性的有力工具。
單片機應(yīng)用系統(tǒng)的抗干擾措施一般以硬件為主,軟件為輔。硬件抗干擾措施的基本出發(fā)點是減小、隔離、衰減干擾信號,使易被干擾的元器件在比較好的環(huán)境中工作。這類措施只起到“防”的作用,并沒有從根本上解決自身抵抗干擾的能力。軟件抗干擾措施的出發(fā)點是:計算機不僅在正常工作時能充分發(fā)揮其智能作用,而且在系統(tǒng)因受到干擾而破壞其正常工作時也應(yīng)發(fā)揮其智能作用。也就是說當系統(tǒng)受到干擾時,系統(tǒng)應(yīng)立即感知并開始自檢工作,檢查自身系統(tǒng)被破壞的程度和性能等,并進一步進行處理,然后重新啟動,恢復(fù)正常工作。如果采用硬件與軟件相結(jié)合的方法,充分發(fā)揮軟件智能作用,系統(tǒng)本身的抗干擾能力就可以大大增強,可以有效地提高系統(tǒng)的穩(wěn)定性和可靠性。軟件抗于擾的基本條件是抗干擾軟件不會因干擾而損壞。在單片機測控系統(tǒng)中,程序及其—些重要常數(shù)都放在ROM中,這使得抗干擾軟件擁有—個較為穩(wěn)定的工作環(huán)境,為軟件抗干擾創(chuàng)造了良好的前提條件,對于一些在RAM中運行用戶應(yīng)用程序的微機系統(tǒng),應(yīng)用軟件本身的抗干擾能力局限性很大,更主要依賴于操作平臺的穩(wěn)定性和微機系統(tǒng)的抗干擾性能。
軟件抗干擾的前提條件可以概括為以下幾個方面:
1)在干擾作用下,微機系統(tǒng)的便件部分不會受到任何損壞。
2)程序區(qū)不會受干擾侵害。對于單片機控制系統(tǒng),程序、常數(shù)以及表格都應(yīng)固化在ROM中。但對于上面提到的需要在RAM中運行應(yīng)用程序的微機系統(tǒng),則無法滿足這—條件,這種系統(tǒng)一旦因干擾造成運行失常時,只能在干擾過后重新向RAM區(qū)中調(diào)入應(yīng)用程序。
3)RAM中的重要數(shù)據(jù)不能被破壞,或雖被破壞但可以重新建立。在控制系統(tǒng)中,這些數(shù)據(jù)被干擾破壞后,在實時采樣控制系統(tǒng)中一般都能馬上糾正,因其而引起的系統(tǒng)短期波動往往還來不及表現(xiàn)出來就已經(jīng)恢復(fù)正常。當然,如果在RAM區(qū)中有一些不允許丟失的重要數(shù)據(jù),那么系統(tǒng)的正常工作就會受到影響。在單片機控制系統(tǒng)中,我們應(yīng)該盡量避免這樣的軟件編制。
4)軟件抗干擾技術(shù)是一種輔助手段,在相當大的程度上硬件抗干擾性能決定著整個微機控制系統(tǒng)的抗干擾性能[4]。控制系統(tǒng)的抗干擾設(shè)計從方案階段就應(yīng)展開,在原理設(shè)計、印制板設(shè)計、電源設(shè)計、傳輸方式等諸多方面加以全盤考慮。例如對于一個雙機遠程串行通訊電路,往往用雙絞帶屏蔽的傳輸線路進行連接,以保證其電磁兼容性和雙機通訊的誤碼串要求。如果將傳輸線換成一般導(dǎo)線并將它們與其他信號線在系統(tǒng)接線時混扎在一起、勢必造成誤碼率的增大。那么在軟件方面是無法從根本上解決問題的。因此軟件抗干擾不是萬能的、它對硬件基礎(chǔ)的依賴性很大。
當傳感器的位置與采集或顯示的單片機應(yīng)用系統(tǒng)相距較遠時,外來干擾就會顯得特別嚴重。在高精度A/D轉(zhuǎn)換器的電壓測量電路中,常見的干擾有電源電壓窄脈沖竄擾、工頻電網(wǎng)的串模干擾等。這些干擾輕則影響被測信號精度或大幅度扭曲被測信號,嚴重時甚至可能出現(xiàn)可控硅閘鎖現(xiàn)象。所謂可控硅閘鎖現(xiàn)象就是在系統(tǒng)正常使用過程中,A/D轉(zhuǎn)換器芯片電源電壓驟增,芯片突然發(fā)熱,時間一旦過長,芯片被燒壞。出現(xiàn)可控硅閘鎖現(xiàn)象時,只要馬上切斷電源,重新上電后系統(tǒng)又能恢復(fù)正常。這種情況發(fā)生原因是由于芯片襯底存在著寄生的橫向PNP管和縱向NPN管所形成的可控硅結(jié)構(gòu),如果輸入的脈沖信號超過了額定值,產(chǎn)生較大的輸入電流時,就會使寄生可控硅導(dǎo)通,使VDD與VSS或與地之間形成直接通路,產(chǎn)生較大的短路電流。要消除這些干擾,首先是從硬件上考慮,例如加強各級的抗干擾措施,避免較大的電流干擾竊入電路,或加強電源穩(wěn)壓和濾波措施,在A/D芯片電源入口處加退耦濾波電路等。但在實際中不少干擾源是不可能消除的,它們影直接響著輸出信號的線性度或精度,所以利用數(shù)字濾波技術(shù)以實現(xiàn)模擬濾波器類似的功能被越來越廣泛地采用。比較常用也比較簡單有效的方法有:
1)算術(shù)平均值法對一點數(shù)字連續(xù)采樣多次、計算其平均值,以平均值作為該點采樣結(jié)果。這種方法對抑制隨機干擾有一定的效果。如果CPU工作頻率足夠高且能滿足采樣間隔要求,—般取10次左右平均為宜[4]。
2)比較取舍法當測量結(jié)果的個別數(shù)據(jù)存在幅度差時,為了剔除個別錯誤數(shù)據(jù),可采用比較取舍法,即對每個采樣值是連續(xù)采樣幾次。根據(jù)所采樣數(shù)據(jù)的變化規(guī)律,確定相應(yīng)的取舍辦法來剔除數(shù)據(jù)。例如對每個采樣點連續(xù)采樣3次,取2次相同數(shù)據(jù)為采樣結(jié)果;或?qū)Α獋€采樣點連續(xù)采樣多次,并對這些采樣值進行比較,取中值作為該點的采樣結(jié)果[5]。
3)一階遞推數(shù)字濾波法這種方法利用軟件完成RC低通濾波器的算法,實現(xiàn)用軟件方法代替硬件RC濾波器。一階遞推數(shù)字濾波公式為:
其中Q—數(shù)字濾波器時間常數(shù);Xn——第n次采樣時的濾波輸入;Yn——第n次采樣時的濾波輸出。
采用軟件濾波對消除數(shù)據(jù)采集中的誤差可以獲得較好的效果??梢钥闯?,效果越好的數(shù)字濾波方法對CPU工作速度的要求越高、在實際應(yīng)用中采用何種方法,還要根據(jù)信號的變化規(guī)律和控制方式特性來選擇。
在單片機應(yīng)用系統(tǒng)中,控制狀態(tài)的輸出一般由后向通道完成。對輸出控制狀態(tài)的干擾一般通過以下兩種方式侵入:一是干擾改變了單片機系統(tǒng)輸入條件狀態(tài)或邏輯判斷數(shù)據(jù),從而使依據(jù)某一算法或邏輯處理得出的輸出狀態(tài)結(jié)果出現(xiàn)誤差,二是控制信號輸出正常。但干擾侵入了后向通道上的主要輸出器件、改變了正常輸出狀態(tài)。例如,在—個電磁閥開關(guān)量單片機控制系統(tǒng)中,由于電磁閥開閉存在較大的空間干擾,造成輸出狀態(tài)鎖存器的自動復(fù)位,從而使整個單片機系統(tǒng)經(jīng)常出現(xiàn)控制失靈或者誤動作。
在實際工作中,首先應(yīng)從硬件角度考慮如何盡量減少控制對象或輸出方式所帶來的干擾,例如對上面的例子可以增加電源濾波器,在后向通道上增加地線或者隔離光電耦合器,對電磁閥采用屏蔽網(wǎng)屏蔽其空間干擾等措施。正如上面提到過的,硬件措施是不可能完全解決問題的,所以上面的例子最終是通過硬件、軟件兩方面的配合使系統(tǒng)達到高可靠性的目的。
對狀態(tài)控制失靈常用的軟件對策主要有:
1)軟件冗余設(shè)計[5]對于條件控制系統(tǒng),將控制條件的一次采樣、處理、控制輸出改為循環(huán)采樣,實時刷新控制輸出。這種方法對于單片機開關(guān)量控制系統(tǒng)特別有效,它將瞬間偶然誤差在執(zhí)行器件尚未響應(yīng)之前及時更正,但對于慣性較小或響應(yīng)較快的系統(tǒng)則抗干擾作用相對較小一些。
2)設(shè)置閉環(huán)輸出控制系統(tǒng)對于單片機控制系統(tǒng),在硬件上設(shè)計輸出狀態(tài)采集電路,在軟件上設(shè)置輸出狀態(tài)寄存單元,當干擾侵入后向通道造成輸出狀態(tài)破壞時,系統(tǒng)能及時查詢比較實際輸出狀態(tài)與寄存單元輸出狀態(tài)信息是否一致,并及時糾正輸出狀態(tài)。
3)設(shè)計軟件看門狗[4]在單片機系統(tǒng)硬件的特定部位或某些內(nèi)存單元上設(shè)狀態(tài)標志,在開機運行時不斷查詢測試,系統(tǒng)一旦發(fā)現(xiàn)問題,就能自動糾錯復(fù)位,以保證系統(tǒng)中信息存儲、運算和傳輸?shù)母呖煽啃浴?/p>
在干擾侵害下,由于RAM的可讀/寫性,RAM中的數(shù)據(jù)就有可能發(fā)生竄改,使系統(tǒng)不能正常工作。在單片機系統(tǒng)中,片內(nèi)RAM、外部擴展RAM以及片內(nèi)各種特殊功能寄存器等狀態(tài)都有可能受外來干擾而變化。干擾竄改RAM數(shù)據(jù)的渠道不盡相同,對于MCS51單片機運用系統(tǒng),干擾主要通過電源或復(fù)位端進入系統(tǒng)引起RAM區(qū)數(shù)據(jù)改變。干擾竄入復(fù)位端,在大多數(shù)情況下不會造成系統(tǒng)錯誤復(fù)位,但會引起內(nèi)部某些寄存器的錯誤復(fù)位。防止RAM區(qū)數(shù)據(jù)被竄改可從硬件、軟件兩方面下手。
硬件方面,由于單片機的復(fù)位、直流工作電源都是由硬件電路實現(xiàn)的,所以首先應(yīng)在硬件上采取相應(yīng)的措施,如增加電源濾波器等。對于RESET端干擾,為了保證復(fù)位電路可靠地工作,除了在RESET復(fù)位引腳上接一個去耦電容,常將RC復(fù)位電路接斯密特電路(如74HCl4)后再接入單片機復(fù)位端和外圍電路復(fù)位端。斯密持電路的滯后特性對脈沖整形、濾除干擾有較好的效果,所以特別適合應(yīng)用于現(xiàn)場干擾大、電壓波動大的工作環(huán)境,并且當系統(tǒng)有多個復(fù)位端時,能保證可靠地同步復(fù)位。
軟件方面,因為復(fù)位端竄擾改變的往往是單片機內(nèi)特殊功能寄存器(SFR)的狀態(tài),所以在軟件編制上應(yīng)盡量做到實時刷新,另外對于一些特別重要的RAM區(qū)數(shù)據(jù)??梢栽黾覧EPROM等可讀寫ROM加以保存,實時查詢對比RAM數(shù)據(jù),—旦發(fā)現(xiàn)錯誤立即從EEPROM中讀出正確數(shù)據(jù)予以糾正。在實際應(yīng)用系統(tǒng)中,還要針對控制對象和控制方式考慮EEPROM的讀寫周期是否滿足系統(tǒng)工作頻率的要求。
程序跑飛是因為系統(tǒng)在干擾侵害下改變了程序計數(shù)器PC指針值,破壞了程序正常運行。如果PC值超出應(yīng)用程序區(qū),將非程序區(qū)中的隨機數(shù)作為指令代碼運行,這種程序的盲目運行叫做程序“跑飛”。程序“跑飛”往往會破壞數(shù)據(jù)區(qū)及工作寄存器中的數(shù)據(jù),造成系統(tǒng)工作紊亂,直至程序進入死循環(huán),導(dǎo)致系統(tǒng)死機。解決程序跑飛的基本思想是及時發(fā)現(xiàn)、及時復(fù)位。通常采用的方法有:
1)軟硬件看門狗[4-5]這是微機控制系統(tǒng)常用的一種方法,電路設(shè)計形式也多種多樣,主要思想是在程序正常運行時不斷對看門狗電路進行刷新,使其計時重新開始,刷新頻率視具體情況而定,一旦程序失常不能正常刷新看門狗時,則該電路立即給RESET復(fù)位端一個復(fù)位電平,強制系統(tǒng)硬件復(fù)位。
自監(jiān)視法是單片機系統(tǒng)自己對自己的運行狀態(tài)進行監(jiān)視。某些類型的單片機CPU內(nèi)部具有Watchdog(程序運行監(jiān)視系統(tǒng)),俗稱為“看門狗”。例如Inter8098,80198系列,就可以方便地通過設(shè)定Watchdog工作方式以及采用合適的軟件編程相配合來達到自監(jiān)視目的。而沒有Watchdog的CPU,例如Z80,8051系列等,當然也可以通過外加Watchdog電路,再配以軟件完成自監(jiān)視目的。這種軟硬結(jié)合的自監(jiān)視法可以大幅度提高工控機的抗干擾能力。
Watchdog具備以下功能:①該系統(tǒng)能獨立工作,基本不依賴CPU;②CPU在一個固定時間間隔內(nèi)與該系統(tǒng)打一次交道,表示目前尚工作正常;③當CPU掉入死循環(huán)時,該系統(tǒng)及時發(fā)覺并使系統(tǒng)復(fù)位。如果Watchdog電路設(shè)計得好,并且軟件也編制得好的話,不但可以及時發(fā)現(xiàn)程序“跑飛”,而且還可以實現(xiàn)跑飛程序修復(fù)。這是最好的自監(jiān)視手段。然而,這并不等于萬無一失。例如:①Watchdog電路本身失效;②設(shè)置Watchdog的指令正好在取指令時被干擾而讀錯;③Watchdog發(fā)現(xiàn)程序跑飛之后,其產(chǎn)生的復(fù)位脈沖或者INM申請信號正好被干擾而未奏效等。
雖然以上導(dǎo)致Watchdog失效的因素發(fā)生幾率很小,但總是存在的;另一方面,還有相當數(shù)量的工業(yè)控制計算機沒有Watchdog電路。這兩種情況可用設(shè)置軟件陷阱或監(jiān)視定時器法來解決程序跑飛問題。
2)設(shè)置監(jiān)視定時器檢查程序計數(shù)器的PC值是否在程序區(qū),通常采用的方法就是定時中斷法。所謂定時中斷法,就是利用定時中斷監(jiān)視程序運行狀態(tài),即在一個經(jīng)常產(chǎn)生外部中斷的某個定時中斷服務(wù)程序中讀取轉(zhuǎn)入該中斷時壓入堆棧的斷點地址。如果該地址在程序區(qū)內(nèi),則認為PC值正常,否則認為程序一定“跑飛”。定時器的定時時間一般稍大于主程序正常運行一個循環(huán)的時間,可視機器的繁忙程度和重要性設(shè)定,通常為幾個毫秒到幾十毫秒。定時器在主程序運行過程中執(zhí)行—次定時時間常數(shù)的刷新操作,程序正常運行時,定時器不出現(xiàn)中斷;當程序失常不能刷新定時器時間常數(shù)則產(chǎn)生定時中斷,執(zhí)行中斷程序,并在中斷程序中判斷系統(tǒng)是硬件復(fù)位還是定時中斷產(chǎn)生自動復(fù)位,然后得出相應(yīng)的處理方法,使系統(tǒng)恢復(fù)正常。該方法的局限性是不能查出PC值是否在程序區(qū)內(nèi)(即此時PC值雖受干擾卻并沒有超出程序區(qū))的亂跳,而是錯位執(zhí)行指令而構(gòu)成一些莫名其妙的操作或者陷入死循環(huán)。
以上討論的兩種方法都是建立在工控機能正確運行全部或部分程序基礎(chǔ)上,有時一個意想不到的干擾,中斷或破壞了所有程序的正常運行,此時PC值可能在程序區(qū)內(nèi),也可能在程序區(qū)外,要使其能夠自己恢復(fù)正常運行,只有依賴于廣布“陷阱”的方法了。
3)設(shè)置軟件陷阱[6]這里所謂的軟件“陷阱”,是指某些類型的CPU提供給用戶使用的軟件中斷指令或者復(fù)位指令,它能強行地將捕獲到的程序引向另一個新的指定地址,在那里有一段對程序出錯時進行處理的專用程序。如果把這段程序的地址稱為ERROM地址,軟件陷阱即為一條LJMP ERROM指令,為加強其捕獲能力,可在其前面加兩條NOP指令作為冗余指令。軟件陷阱一般安放在非程序區(qū),包括未使用的中斷向量區(qū)、未使用的大片程序存儲器空間及各種表格的最后位置。程序區(qū)是由一系列執(zhí)行指令構(gòu)成的,一般不能在此指令串中任意安排陷阱,否則正常執(zhí)行的指令也會被抓走。但是在跳轉(zhuǎn)指令、調(diào)用指令、返回指令等之后,程序會有一些斷裂點,正常程序到此便不會繼續(xù)執(zhí)行,這時CPU的PC的值應(yīng)正常跳變,從而使其轉(zhuǎn)向其他入口位置。如果跑飛來的程序落到斷裂點或其前面的指令操作數(shù)上,程序就會超過斷裂點繼續(xù)執(zhí)行,就必定出錯了。如能在該處設(shè)置陷阱,則可有效地捕捉到它,不會影響正常執(zhí)行的程序。由于軟件陷阱均安排在正常程序執(zhí)行不到的地方,故不會影響程序的執(zhí)行效率。陷阱不但需要在ROM的全部非內(nèi)容區(qū)、RAM的全部非數(shù)據(jù)區(qū)設(shè)置,而且要在程序區(qū)的模塊之間廣泛布置。一旦機器程序“跑飛”,總會碰上“陷阱”,立即就可以“救活”系統(tǒng)。
在單片機應(yīng)用系統(tǒng)中,系統(tǒng)的可靠性問題越來越受到人們的普遍重視。實踐表明,硬件技術(shù)和軟件技術(shù)是提高單片機應(yīng)用系統(tǒng)抗干擾能力的有力措施。軟件抗干擾技術(shù)作為硬件抗干擾措施的輔助手段,具有簡單、靈活方便、耗費硬件資源少等特點,在設(shè)計單片機應(yīng)用系統(tǒng)中獲得了廣泛的應(yīng)用。目前人們對軟件可靠性的研究還處于起步階段,為了適應(yīng)和解決工程應(yīng)用中的實際問題,現(xiàn)在采用的對策是將其看成一個系統(tǒng)的抗干擾問題來解決。在實際應(yīng)用中,應(yīng)針對各類單片機測控系統(tǒng)的特點、被控對象的性質(zhì)以及工業(yè)現(xiàn)場環(huán)境,充分考慮各種因素的影響,并在設(shè)計中采取一定的軟硬件抗干擾措施,使系統(tǒng)滿足既定的測控要求,又能保證其長期穩(wěn)定可靠地工作。
[1]李正軍.計算機測控系統(tǒng)的設(shè)計與應(yīng)用[M].1版.北京:機械工業(yè)出版社,2004.
[2]胡漢才.單片機原理及其接設(shè)計[M].2版.北京:清華大學(xué)出版社,2004.
[3]Simon P,Baumann A,Roscoe T,et al.30 seconds is not enough:a study of operating system timer usage[C]//Proceedings of the 3rd ACMsigops/Eurosys.European conference on computer systems 2008.Glasgow,Scotland UK,New York,NY,USA:ACM,2008:205-218.
[4]翟曉華.單片機軟件抗干擾技術(shù)分析與設(shè)計[J].山西科技,2008,11(6):70-72.
ZHAI Xiao-hua.Technical analysis and design of the software interference of MCU[J].Shanxi Science and Technology:2008,11(6):70-72.
[5]王偉.軟件抗干擾在單片機控制系統(tǒng)中的應(yīng)用研究[J].機械管理開發(fā),2010,25(3):203-204.
WANG Wei.Study on software anti-Jamming problem of single chip microcomputer control system[J].Mechanical Management and Develo,2010,25(3):203-204.
[6]曲輝.提高嵌入式系統(tǒng)可靠性軟件抗干擾措施[J].內(nèi)蒙古農(nóng)業(yè)大學(xué)學(xué)報,2009,30(1):229-231.
QU Hui.Software anti-interference measurement of enhancing the reliability of embedded system[J].Journal of Inner Mongoa A cultural Universit,2009,30(1):229-231.