軟件抗干擾技術(shù)及其在單片機上的應用
1引言
本文引用地址:http://dyxdggzs.com/article/148973.htm微機測控系統中,對軟件有以下幾個(gè)方面的基本要求:
(1)可維護性:要求盡可能地采用模塊化設計,程序流程清晰明了,最大限度地控制使用和調用嵌套次數;
(2)可理解性:軟件源代碼應注意加注提示內容,一般應不少于整個(gè)代碼行數的60%,使其易于理解和閱讀,便于修改和補充;
(3)實(shí)時(shí)性:隨著(zhù)集合度和運算速度的提高,實(shí)時(shí)性已經(jīng)成為測試系統對軟件的普遍要求,在工程應用軟件設計中,采用匯編語(yǔ)言要比采用高級語(yǔ)言更具有實(shí)時(shí)性;
(4)準確性:系統要求在進(jìn)行大量運算時(shí),要選取合適的算法,以便控制最后結果的精度;
(5)可靠性:可靠性是測控軟件最重要的指標之一,他要求兩方面的內容:一方面是運行參數環(huán)境發(fā)生變化時(shí)(如電壓在規定范圍內出現較大波動(dòng)),軟件都能可靠運行并得出正確的結果,也就是軟件的自適應性;另一方面是在工作環(huán)境惡劣,干擾環(huán)境復雜嚴重的情況下,軟件必須保證可靠運行,這對測控軟件尤為重要。為了保證以上兩方面的要求,就必須使用多種抗干擾技術(shù)。
2.1簡(jiǎn)介
軟件抗干擾技術(shù)是當系統受干擾后,使系統恢復正常運行或輸入信號受干擾后去偽存真的一種輔助方法。此技術(shù)屬于一種被動(dòng)抗干擾措施,但是由于軟件抗干擾設計靈活,節省硬件資源,操作起來(lái)方便易行,所以軟件抗干擾技術(shù)越來(lái)越受到人們的重視。
軟件抗干擾技術(shù)主要研究的方面:
(1)采取軟件的方法對疊加在模擬輸入信號上的噪聲進(jìn)行抑制,以讀取真正有用的信息,如數字濾波器;
(2)在程序受到干擾跑飛的情況下,采取措施使程序回到正常的軌道上來(lái),常見(jiàn)的抗干擾技術(shù)有:軟件攔截技術(shù)(軟件陷阱等);輸人口信號重復檢測方法;輸出口數據刷新;數字濾波;
(3)程序具有自檢功能。
2.2軟件攔截技術(shù)
2.2.1NOP指令使用
單片機中最容易受到干擾的是內部程序計數器--PC的值,當受到干擾時(shí),PC值被改變,CPU誤將程序從正確位置跳轉到無(wú)意義區域,導致程序運行出錯。
目前常用的方法是在對程序走向有重要作用的指令(RET,LCALL,SJMP,JC,LJMP,ACALL等)之前加人2~3個(gè)單字節的NOP指令,當失控的程序遇到該指令后得到調整,使接下來(lái)的程序得以正常執行。從實(shí)際使用過(guò)程中總結可知,應盡量多的使用NOP指令,而且發(fā)現NOP指令成對使用時(shí),能起到比較滿(mǎn)意的抗干擾效果。
2.2.2軟件陷阱
(1)未使用的中斷區
對于未使用的中斷源因干擾而開(kāi)放,從而直接影響軟件的正常工作的中斷源,采用的方法一般是在對應的中斷服務(wù)地址入口處設置軟件陷阱,使其跳轉到程序入口,通常的軟件陷阱設置如下面的程序:0RG0003H
LJMP0000H;主程序入口
而在實(shí)際使用中,此種處理方法并不合適,特別是在系統聯(lián)試中,突然重新執行程序的情況應盡量避免。實(shí)際處理應該是讓其進(jìn)入一個(gè)信息處理程序,并顯示相關(guān)信息。這樣做既可以使程序捕捉到錯誤的中斷后,及時(shí)離開(kāi),又可以根據相關(guān)信息快速定位便于試驗順利進(jìn)行。

如程序所示,只有定時(shí)器T0中斷開(kāi)放,對于可能影響程序的中斷,如外部中斷、定時(shí)器T1中斷,在其中斷地址人口,均加上了軟件陷阱,使其跳轉到ER38這個(gè)故障處理程序,從而避免程序的跑飛,也便于判斷程序的走向。
(2)未使用的EPROM空間
當裝載軟件程序的存儲芯片為27C64,其地址空間為0000H~1FFFFH,一般程序很少能夠用完,可填充FF。而FFH是MOVR7,A的機器碼,當程序亂入非程序區后,不僅無(wú)法轉入正軌,而且還會(huì )破壞R7的內容,因此在實(shí)際使用過(guò)程對未使用的EPROM空間應全部填充為0,因為程序復位入口地址為0000H,當跑飛的程序指針跳至無(wú)程序處,可以讓其重新指向主程序入口,可以起到防跑飛的功能。
(3)程序區
為了保證可靠的運行,以及一旦發(fā)生跑飛,不但使其有出口而且便于判斷,實(shí)際應用中在整個(gè)程序中設置了若干軟件陷阱,當程序進(jìn)入陷阱后,讓其強制進(jìn)入一個(gè)指定地址執行一段專(zhuān)門(mén)對程序出錯進(jìn)行處理的程序。通過(guò)試驗驗證和使用中的經(jīng)驗總結,在外場(chǎng)軟件編寫(xiě)中,軟件陷阱的設置,主要是在正常的程序流程中,在認為較為重要的程序段中,隨機設置若干個(gè)故障信息顯示程序區,一方面是完成正常的故障信息的顯示,另一方面就是在程序跑飛的情況下,通過(guò)故障信息的顯示,可以快速判斷跑飛',的程序段,從而使程序步入正軌。程序流程如圖1所示。

2.2.3輸入口信號重復檢測方法
對于重要開(kāi)關(guān)量輸入信號的檢測,實(shí)際應用中一般采用3次或5次重復檢測的方法,即對接口中的輸人數據信息進(jìn)行重復進(jìn)行3次或5次檢測,若結果完全一致則認為是真的輸入信號,若多次測試結果不一致,即可以停止檢測顯示故障信息,又可以重復進(jìn)行再檢測。
對于軟件測量而言,輸入量干擾大多數是疊加到有效信號上的一系列作用時(shí)間短的尖脈沖,但是頻率不一致,因此應在相鄰的檢測之間應有一定的時(shí)間間隔。理論上可以是等時(shí)間段的,而在實(shí)際使用過(guò)程中,由于外部環(huán)境比較復雜,等時(shí)間段只能濾除某個(gè)頻段的干擾,為了濾除盡可能多的干擾,間隔時(shí)間應為不等的時(shí)間段,但是對數據影響較大的尖峰,通過(guò)觀(guān)察其波形可知,其作用的時(shí)間寬度在幾十到幾百μs之間,所以把濾波時(shí)間限定ms級上。在經(jīng)過(guò)使用和驗證,此方法可以有效地保證軟件可靠運行。需要注意的是,對于軟件時(shí)序要求比較嚴格場(chǎng)合,延時(shí)查詢(xún)時(shí)間不宜過(guò)長(cháng),查詢(xún)次數一般以3次為宜。
程序流程如圖2所示。

2.2.4輸出端口數據刷新
開(kāi)關(guān)量輸出軟件抗干擾技術(shù)主要采用的方法是重復輸出,這是提高輸出端口穩定性的有效措施之一。外場(chǎng)設備的微機系統為51單片機系統,采用了8155,8255可編程I/O擴展芯片,理論上只在上電啟動(dòng)時(shí),進(jìn)行初始化一次即可。但是在實(shí)際使用中發(fā)現,由于干擾等原因,可使芯片的工作控制字遭到破壞,從而使系統輸入輸出狀態(tài)混亂的情況時(shí)有發(fā)生,因此,在讀取重要信號之前,先對8155,8255進(jìn)行初始化操作,通過(guò)一段時(shí)間軟件運行,穩定度大大提高,但是狀態(tài)混亂情況仍有發(fā)生,經(jīng)過(guò)分析數據特點(diǎn)和系統要求后,認為8155、8255允許多次設置狀態(tài)字、控制字等,而且對系統并無(wú)不良影響。因此,在實(shí)際應用中,用到8255和8155之前均首先進(jìn)行初始化操作,然后再進(jìn)行狀態(tài)的讀取和寫(xiě)入。通過(guò)長(cháng)時(shí)間試驗和聯(lián)試,不再出現此類(lèi)問(wèn)題,軟件運行穩定可靠。另外應注意,在重復設置8255,8155芯片時(shí),一定要將其工作方式、控制字一起設置,方可確保軟件可靠工作。程序流程如圖3所示。

2.2.5數字濾波
為了克服干擾對A/D轉換結果的影響,可根據情況采取相應的數字濾波技術(shù)。數字濾波的方法很多,如有中值濾波法、平均值濾波法等,經(jīng)過(guò)對不同濾波法的實(shí)際使用和試驗驗證,認為采用防脈沖干擾平均值濾波法,抗干擾效果比較明顯。
普通的平均值濾波,在干擾十分嚴重的場(chǎng)合,所得到的平均值中干擾的成分仍比較大,不易消除由于脈沖干擾而引起的誤差。而防脈沖干擾平均值濾波是在采集的N個(gè)數據中,去掉數據中的最大值和最小值,然后計算N-2個(gè)數據的算術(shù)平均值。在實(shí)際應用中,此法主要是用在A(yíng)D值的檢測上,由于外場(chǎng)設備中AD采集值判定,直接影響此設備能否投入使用,所以對所采AD值的可靠性要求高,采用此濾波法后,通過(guò)仿真可以清楚看出,在某些特定
的情況下,AD采集值波動(dòng)較大,但此法可以有效地避免了CPU對采集值的誤判,使軟件得以可靠運行。
程序流程如圖4所示,此程序完成的主要功能是調用A/D測量輸入子程序ACD,將循環(huán)采集的6個(gè)AD值,放在70H至75H的寄存器中,RO為記錄采集次數,70H和75H分別放置最大值和最小值,去除最大值和最小值后,將其余4個(gè)值求算術(shù)平均數,以得到的值為最終AD采集值放在68H寄存器中。

2.2.6程序自檢
程序自檢是提高測控軟件可靠性的有效方法之一。在實(shí)際應用中,自檢程序主要是對單片機系統的主要器件如8031的I/O口、外部擴展的可編程I/O接VI芯片、A/D器件、ROM器件等進(jìn)行檢測,如出現故障能夠給出故障部位。因此自檢程序不但可以了解與測試相關(guān)外設的工作情況,而且可避免因外設原因而使測控系統不能正常工作的干擾。
3結語(yǔ)
在采取以上所述的多種軟件抗干擾技術(shù),經(jīng)過(guò)外場(chǎng)的沙塵、云雪的考驗和干擾復雜、嚴重的環(huán)境下驗證,完全可以保證軟件可靠運行。但是同時(shí)需要說(shuō)明的是,軟件抗干擾技術(shù)只是被動(dòng)的方式,只有在硬件沒(méi)計合理的情況下,使用適當的抗干擾技術(shù),才能更有效地保證軟件可靠地工作。
評論