摘要:微機系統在作業現場可能遇到各種干擾和自身的隨機性故障,現場惡劣的環境也有可能使計算機系統發生異常,甚至釀成嚴重事故。為此,在提高硬件系統抗干擾能力的同時,必須利用軟件抗干擾方法保證計算機系統在錯綜復雜的環境里穩定運行,以提高微機測控系統的可靠性。
關鍵詞:微型計算機;軟件系統;抗干擾方法;可靠性
0引言
抗干擾技術貫穿于微機測控系統的設計、制造、安裝以及運行各個階段。由于系統作業環境復雜,在設計和開發微機系統時,一般難以周全地預計系統在實際工業現場中可能遇到的干擾和自身的隨機性故障。因此,在提高硬件系統抗干擾能力的同時,利用軟件設計靈活、節省硬件資源的特點,來提高微機測控系統的可靠性顯得非常重要。
1軟件抗干擾方法的研究
可靠性設計是一項系統工程,必須從硬件、軟件以及結構設計等方面全面考慮。硬件系統的可靠性是微機系統可靠性的根本,而軟件系統的可靠性設計可以起到抑制外來干擾,增強系統自身抗干擾能力的作用。通過軟件系統的可靠性設計,能夠最大限度地降低干擾對系統工作的影響,確保測控系統及時發現因干擾導致程序出現的錯誤,并使系統恢復到正常工作狀態或者及時報警。實踐中,軟件抗干擾的主要手段是:消除模擬輸入信號的噪聲;程序運行混亂時使程序重入正軌。
1.1數字濾波
抑制疊加在模擬輸入信號上的噪聲,要多采取數字濾波技術。數字濾波是通過一定的方法計算或判斷程序減少疊加在有用信號中的噪聲干擾比重,從而提高系統采集信號的質量。數字濾波通常采用的方法有:中值濾波法、算術平均值法、防脈沖干擾平均值法、一階遞推數字濾波法。利用程序實現RC低通濾波,對周期性干擾和頻率較高的隨機干擾的濾波效果較好。當然,在程序中采用多重濾波算法,效果更佳,此時軟件開發者應在算法復雜性、數值處理精度、采樣實時性等幾方面綜合考慮。工程實踐中,考慮到多數輸入干擾信號呈毛刺狀,作用時間短,可采用輸入多次采樣確認的方法進行濾波,即對輸入信號進行采樣,必須連續多次輸入相同才有效。
1.2軟件攔截技術
所謂攔截,是指將亂飛的程序引向指定位置,再進行出錯處理。CPU復位后,首先取指令的操作碼,之后順序取出操作數,當一條完整指令執行完成后,緊接著取下一條指令的操作碼、操作數。這些操作時序完全由程序計數器PC控制。一旦PC因干擾而出現錯誤,程序便脫離正常運行軌道,出現“亂飛”,當飛出到某一個雙字節指令時,若取指令時落在操作數上,誤將操作數當作操作碼,程序將出錯。若飛出到了三字節指令時,出錯的機率更大。為了使“亂飛”程序迅速納入正軌,要多采用指令冗余技術,同時要合理設計陷阱,并將陷阱安排在適當的位置。
1.2.1指令冗余
指令冗余是指程序設計時應多用單字節指令,并在對程序流向起決定作用的關鍵地方人為地插入一些單字節指令NOP,或者將有效單字節指令重寫,來保證“亂飛”的程序迅速納入正軌。
NOP的使用在雙字節指令和3字節指令之后插入2個單字節NOP指令,可保證其后的指令不會因前面的指令“亂飛”而繼續。因為“亂飛”的程序即使落到操作數上,由于2個空操作指令NOP的存在,避免了后面的指令被當作操作數執行,從而使程序再次回到正軌。對程序流向起決定作用的指令和某些對系統工作狀態起重要作用的指令前插入2條NOP指令,可保證程序迅速納入軌道,確保這些指令正確執行。
重要指令冗余 對于那些對程序流向起決定作用的指令(如:RET,RRETI,ACALL等)和某些對系統工作狀態有重要作用的指令(如:SERB,EA)的后面,可以重復寫上這些指令,以確保這些指令的正確執行。
1.2.2軟件陷阱
當“亂飛”程序進入非程序區或表格區時,不能采用冗余技術,此時可設定軟件陷阱,來截斷亂飛程序。所謂軟件陷阱就是引導指令,強行將捕獲的程序引向一個指定地址,在那里有一段專門處理程序出錯的程序(用來診斷系統被干擾前的工作狀態,并使程序運行恢復正常)。通常在EPROM中的非程序區填入以下指令作為軟件陷阱:
DSP:……:顯示子程序
RET
RET
NOP
:軟件陷阱
NOP
NOP
:軟件陷阱
NOP
LJMP FLY
LIMP FLY
FLY:……:“亂飛”處理子程序
RET
考慮到程序存貯器的容量,一般IK空間有2—3個軟件陷阱就可以進行有效攔截。
軟件陷阱安排在以下幾種場合:
(1)未使用的中斷向量區;
(2)未使用的大片EPROM空間;
(3)控制字表,時間常數表的最后的未使用空間;
(4)程序區中的一些斷裂點,如LJMP,AJMP,RET,RETI指令之后,正常執行的程序到此不會繼續往下執行了,在這種地方安排陷阱,就能有效地捕捉程序,而又不影響正常的程序執行流程。
1.2.3程序運行監視系統
若失控的程序在遇到冗余指令前就已自動形成死循環,則冗余指令和軟件陷阱也無能為力了,這時系統會陷入完全癱瘓。為了避免此種情況,采取的措施是建立程序運行監視系統,不斷檢測程序循環運行時間,若發現程序循環時間超過最大循環運行時間,則認為系統陷入死循環,運行出錯處理程序。例如,當硬件電路設計時未考慮到采用watchdog,為了簡化硬件電路,可以建立—個純軟件的watchdog監視系統。這個watchdog系統只有采用比這個死循環更高級的中斷子程序才能奪走對CPU的控制權。可以用一個定時器來作watchdog,將它的溢出中斷設定為高級中斷,系統中的其他中斷均設為低級中斷。當程序掉入死循環后,在設定的間隔時間內得不到主程序“目前正常”信號后,watchdog系統有一次溢出,產生高級中斷,從而退出死循環。在中斷向量區安放一條LJMP ERR指令,即可直接轉向出錯處理程序,由出錯處理程序來完成各種善后工作,并用軟件方法使系統復位。
1.3設置功能模塊入口標志
一般情況下,在自動化生產線的控制系統中,當程序失去控制后,不允許從控制程序的入口處重新開始執行,而應當從失去控制的程序模塊恢復執行。為此,控制程序應模塊化,可以在每個功能模塊的入口處設置一個標志。系統故障復位后,可根據這些標志選擇進入相應的功能模塊。
1.4信息冗余
信息冗余是為了檢測或糾正信息在運算或傳輸中的錯誤而外加的一部分信息。在傳送數據序列中,按一定的規律加入一些信息碼,使原來不相關的數據變為相關,在接受端按發送端的編碼進行譯碼,附加的信息碼元就能自動檢測傳輸中產生的差錯并采取糾錯措施。在通信和危機系統中,信息經常是以編碼形式出現的,奇偶碼、漢明碼、法爾碼、循環碼及各種算術誤差碼都有很強的檢錯和糾錯能力。一般冗余的信息碼越多,其檢錯和糾錯能力越強。
1.5自診斷
系統自診斷是提高微機系統可靠度和檢測干擾的有效方法之一。自診斷一般分為:開機自診斷、周期性自診斷和鍵控自診斷。
開機自診斷又稱為靜態自檢,主要是系統對RAM區數據、系統定時器功能、相互通道的讀寫、接口通信等部件的測試。檢查RAM是否讀寫正確或運行過程中RAM區數據是否安全,診斷系統定時器、系統相互通道、系統接口等的完整性和可靠性,若不正常則給出信息提示或報警提示。
周期性自診斷又稱為動態檢測,是在程序運行過程中進行的,包括系統零漂自檢、系統自動校正、系統自動補償等。控制系統在運行過程中有關器件性能參數將受到各種干擾的影響,造成系統零點的偏移或漂移,影響系統工作的準確性和可靠性,因此系統在自檢的過程時進行自動補償,以提高系統運行的準確性和可靠性。
鍵控自診斷是通過人機對話設定特殊的系統自診斷功能。
2結束語
目前,采用抗干擾技術方法較多,提高硬件系統抗干擾能力是關鍵,同時利用軟件抗干擾也越來越受到重視。在工程實踐中通常都是幾種抗干擾方法并用,互相補充完善,才能取得較好的抗干擾效果。實踐證明,通過細致周到地分析干擾源、硬件與軟件抗干擾相結合、完善系統監控程序等辦法,設計一個穩定可靠的微機系統是完全可行的。
(注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。)