軟件抗干擾問題的研究愈來愈引起人們的重視。
一、工控軟件的結構特點及干擾途徑
在不同的工業(yè)控制系統(tǒng)中,工控軟件雖然完成的功能不同,但就其結構來說,一般
具有如下特點:
* 實時性:工業(yè)控制系統(tǒng)中有些事件的發(fā)生具有隨機性,要求工控軟件能夠及時地
處理隨機事件。
* 周期性:工控軟件在完成系統(tǒng)的初始化工作后,隨之進入主程序循環(huán)。在執(zhí)行主
程序過程中,如有中斷申請,則在執(zhí)行完相應的中斷服務程序后,繼續(xù)主程序循
環(huán)。
* 相關性:工控軟件由多個任務模塊組成,各模塊配合工作,相互關聯(lián),相互依
存。
* 人為性:工控軟件允許操作人員干預系統(tǒng)的運行,調(diào)整系統(tǒng)的工作參數(shù)。
在理想情況下,工控軟件可以正常執(zhí)行。但在工業(yè)現(xiàn)場環(huán)境的干擾下,工控軟件的
周期性、相關性及實時性受到破壞,程序無法正常執(zhí)行,導致工業(yè)控制系統(tǒng)的失
控,其表現(xiàn)是:
* 程序計數(shù)器PC值發(fā)生變化,破壞了程序的正常運行。PC值被干擾后的數(shù)據(jù)是隨機
的,因此引起程序執(zhí)行混亂,在PC值的錯誤引導下,程序執(zhí)行一系列毫無意義的指
令,最后常常進入一個毫無意義的“死循環(huán)”中,使系統(tǒng)失去控制。
* 輸入/輸出接口狀態(tài)受到干擾,破壞了工控軟件的相關性和周期性,造成系統(tǒng)資源
被某個任務模塊獨占,使系統(tǒng)發(fā)生“死鎖”。
* 數(shù)據(jù)采集誤差加大。干擾侵入系統(tǒng)的前向通道,疊加在信號上,導致數(shù)據(jù)采集誤
差加大。特別是當前向通道的傳感器接口是小電壓信號輸入時,此現(xiàn)象更加嚴重。
* RAM數(shù)據(jù)區(qū)受到干擾發(fā)生變化。根據(jù)干擾竄入渠道、受干擾數(shù)據(jù)性質(zhì)的不同,系統(tǒng)
受損壞的狀況不同,有的造成數(shù)值誤差,有的使控制失靈,有的改變程序狀態(tài),有
的改變某些部件(如定時器/計數(shù)器、串行口等)的工作狀態(tài)等。筆者在研制電力遠
程抄表系統(tǒng)時就曾遇到因現(xiàn)場強電磁干擾而造成RAM數(shù)據(jù)經(jīng)常性被破壞的情況。
* 控制狀態(tài)失靈。在工業(yè)控制系統(tǒng)中,控制狀態(tài)的輸出常常是依據(jù)某些條件狀態(tài)的
輸入和條件狀態(tài)的邏輯處理結果而定。在這些環(huán)節(jié)中,由于干擾的侵入,會造成條
件狀態(tài)錯誤,致使輸出控制誤差加大,甚至控制失常。
二、程序運行失常的軟件對策
系統(tǒng)受到干擾侵害致使PC值改變,造成程序運行失常。對于程序運行失常的軟件對
策主要是發(fā)現(xiàn)失常狀態(tài)后及時引導系統(tǒng)恢復原始狀態(tài)。
1.設置監(jiān)視跟蹤定時器
使用定時中斷來監(jiān)視程序運行狀態(tài)。定時器的定時時間稍大于主程序正常運行一個
循環(huán)的時間,在主程序運行過程中執(zhí)行一次定時器時間常數(shù)刷新操作。這樣,只要
程序正常運行,定時器不會出現(xiàn)定時中斷。而當程序運行失常,不能及時刷新定時
器時間常數(shù)而導致定時中斷,利用定時中斷服務程序?qū)⑾到y(tǒng)復位。在8031應用系統(tǒng)
中作為軟件抗干擾的一個事例,具體做法是:
* 使用8155的定時器所產(chǎn)生的“溢出”信號作為8031的外部中斷源INT1。用555定時
器作為8155中定時器的外部時鐘輸入;
* 8155定時器的定時值稍大于主程序的正常循環(huán)時間;
* 在主程序中,每循環(huán)一次,對8155定時器的定時常數(shù)進行刷新;
* 在主控程序開始處,對硬件復位還是定時中斷產(chǎn)生的自動恢復進行分類判斷處
理。
2.設置軟件陷井
當PC失控,造成程序“亂飛”而不斷進入非程序區(qū),只要在非程序區(qū)設置攔截措
施,使程序進入陷井,然后強迫使程序進入初始狀態(tài)。例如Z80指令系統(tǒng)中數(shù)據(jù)FFH
正好對應為重新起動指令RST 56,該指令使程序自動轉(zhuǎn)入0038H入口地址。因此,在
Z80 CPU構成的應用系統(tǒng)中,只要將所有非程序區(qū)全部置成FFH用以攔截失控程序。
并在0038H處設置轉(zhuǎn)移指令,使程序轉(zhuǎn)至抗干擾處理程序。
三、系統(tǒng)“死鎖”的軟件對策
在工業(yè)控制系統(tǒng)中,A/D、D/A,顯示等輸入/輸出接口電路是必不可少的。這些接口
與CPU之間采用查詢或中斷方式工作,而這些設備或接口對干擾很敏感,干擾信號一
旦破壞了某一接口的狀態(tài)字后,就會導致CPU誤認為該接口有輸入/輸出請求而停止
現(xiàn)行工作,轉(zhuǎn)去執(zhí)行相應的輸入/輸出服務程序。但由于該接口本身并沒有輸入/輸
出數(shù)據(jù),從而使CPU資源被該服務程序長期占用,而不釋放,其它任務程序無法執(zhí)
行,使整個系統(tǒng)出現(xiàn)“死鎖”。對這種干擾造成的“死鎖”問題,在軟件編程中,
可采用“時間片”的方法來解決。其具體步驟為:
* 根據(jù)不同的輸入/輸出外設對時間的要求,分配相應的最大正常的輸入/輸出時
間。
* 在每一輸入/輸出的任務模塊中,加入相應的超時判斷程序。這樣當干擾破壞了接
口的狀態(tài)造成CPU誤操作后,由于該外設準備好信息長期無效,經(jīng)一定時間后,系統(tǒng)
會從該外設的服務程序中自動返回,保證整個軟件的周期性不受影響,從而避免
“死鎖”情況的發(fā)生。
四、數(shù)據(jù)采集誤差的軟件對策
根據(jù)數(shù)據(jù)受干擾性質(zhì)及干擾后果的不同,采取的軟件對策各不相同,沒有固定的模
式。對于實時數(shù)據(jù)采集系統(tǒng),為了消除傳感器通道中的干擾信號,在硬件措施上常
采取有源或無源RLC網(wǎng)絡,構成模擬濾波器對信號實現(xiàn)頻率濾波。同樣,運用CPU的
運算、控制功能也可以實現(xiàn)頻率濾波,完成模擬濾波器類似的功能,這就是數(shù)字濾
波。在許多數(shù)字信號處理專著中都有專門論述,可以參考。隨著計算機運算速度的
提高,數(shù)字濾波在實時數(shù)據(jù)采集系統(tǒng)中的應用將愈來愈廣。
在一般數(shù)據(jù)采集系統(tǒng)中,可以采用一些簡單的數(shù)值、邏輯運算處理來達到濾波的效
果。下面介紹幾種常用的方法。
1.算術平均值法
對于一點數(shù)據(jù)連續(xù)采樣多次,計算其算術平均值,以其平均值作為該點采樣結果。
這種方法可以減少系統(tǒng)的隨機干擾對采集結果的影響。一般3~5次平均即可。
2.比較取舍法
當控制系統(tǒng)測量結果的個別數(shù)據(jù)存在偏差時,為了剔除個別錯誤數(shù)據(jù),可采用比較
取舍法,即對每個采樣點連續(xù)采樣幾次,根據(jù)所采數(shù)據(jù)的變化規(guī)律,確定取舍,從
而剔除偏差數(shù)據(jù)。例如,“采三取二”即對每個采樣點連續(xù)采樣三次,取兩次相同的
數(shù)據(jù)為采樣結果。
3.中值法
根據(jù)干擾造成采樣數(shù)據(jù)偏大或偏小的情況,對一個采樣點連續(xù)采集多個信號,并對
這些采樣值進行比較,取中值作為該點的采樣結果。
4.一階遞推數(shù)字濾波法
這種方法是利用軟件完成RC低通濾波器的算法,實現(xiàn)用軟件方法代替硬件RC濾波
器。一階遞推數(shù)字濾波公式為Yn=QXn+(1-Q)Yn-1
式中Q -數(shù)字濾波器時間常數(shù);
Xn-第n次采樣時的濾波器輸入;
Yn-第n次采樣時的濾波器輸出。
采用軟件濾波器對消除數(shù)據(jù)采集中的誤差可以獲得滿意的效果。但應注意,選取何
種方法應根據(jù)信號的變化規(guī)律選擇。
五、RAM數(shù)據(jù)出錯的軟件對策
在實時控制過程中,干擾造成比較嚴重的危害之一就是沖毀RAM中的數(shù)據(jù),由于RAM
中保存的是各種原始數(shù)據(jù)、標志、變量等,如果被破壞,會造成系統(tǒng)出錯或無法運
行,根據(jù)數(shù)據(jù)被沖毀的程度,一般可分為三類:
* 整個RAM數(shù)據(jù)被沖毀;
* RAM中某片數(shù)據(jù)被沖毀;
* 個別數(shù)據(jù)被沖毀。
在工業(yè)控制系統(tǒng)中,RAM的大部分內(nèi)容是為了進行分析、比較而臨時存放的,不允許
丟失的數(shù)據(jù)只占極少部分。在這種情況下,除了這些不允許丟失的數(shù)據(jù)外,其余大
部分內(nèi)容允許短時間被破壞,最多只引起系統(tǒng)的一個很短時間的波動,很快能自動
恢復正常。因此,在工控軟件中,只要注意對少數(shù)不允許丟失的數(shù)據(jù)保護,一般常
用的方法有“校驗法” 和“設標法”。這兩種方法各有千秋,校驗法比較繁鎖,但
查錯的可信度高。設標法簡單,但對數(shù)據(jù)表中個別數(shù)據(jù)沖毀的情況,查錯則無難為
力。在編程中一般應綜合使用,其具體做法為:
* 將RAM工作區(qū)重要區(qū)域的始端和尾端各設置一個標志碼“0” 或“1”;
* 對RAM中固定不變的數(shù)據(jù)表格設置校驗字。
在程序的執(zhí)行過程中,每隔一定的時間通過事先設計的查錯程序來檢查其各標志碼
是否正常,如果不正常,則利用數(shù)據(jù)冗余技術通過抗干擾處理程序來進行修正;冗
余數(shù)據(jù)表的一般設計原則是:
* 各數(shù)據(jù)表應相互遠離分散設置,減少冗余數(shù)據(jù)同時被沖毀的概率。
* 數(shù)據(jù)表應盡可能遠離棧區(qū),減少由于操作錯誤造堆棧被成數(shù)據(jù)沖的可能 。
上述對RAM區(qū)域的恢復處理方法,在不同的應用系統(tǒng)中應根據(jù)的具體情況進行取舍。
六、控制狀態(tài)失常的軟件對策
在條件控制系統(tǒng)中,人們關注的問題是能否確保正常的控制狀態(tài)。如果干擾進入系
統(tǒng),會影響各種控制條件、造成控制輸出失誤。為了確保系統(tǒng)安全可以采取下述軟
件抗干擾措施:
1.軟件冗余
對于條件控制系統(tǒng),將控制條件的一次采樣、處理控制輸出,改為循環(huán)采樣、處理
控制輸出。這種方法具有良好的抗偶然因<