蒲 永
(茂縣天龍湖電力有限公司,四川成都 610091)
軟件抗干擾技術就是利用軟件運行過程中對自己進行自診斷以及和工控網絡中各機器間的相互監視來監督和判斷工控機是否出錯或失效的一個方法。其為工控系統抗干擾的最后一道屏障。
硬件抗干擾抑制和消除了大部分的干擾,但完全依靠硬件電路來消除所有的干擾是不可能的。軟件抗干擾發展較晚,目前還沒有形成較完善的理論。但是,利用微機的記憶、快速計算和邏輯判斷功能,從軟件方面進行干擾抑制和消除的研究已逐漸受到人們的重視。所謂軟件抗干擾,就是利用微機的高速運算和處理功能,采取程序的手段來檢測、進而排除電磁干擾等對微機控制系統的影響。軟件抗干擾的本質:在有干擾存在的情況下,利用編程技術抵消其影響。即當干擾使微機控制系統出現一定的運行性故障時,能夠依靠系統內駐的能力(程序)保持系統連續正確地執行其程序和輸入輸出的功能。因此,軟件抗干擾過程實質上是一個干擾容錯過程,是容錯技術在軟件設計中的具體體現。應用軟件抗干擾的前提是干擾尚未引起硬件的破壞,RAM中程序和數據尚未丟失,否則軟件抗干擾無從談起。
軟件抗干擾具有許多優點,它可以根據信號和環境的不同,選用不同的抗干擾方法,而無須改變硬件結構,因而靈活多變,功能強大,可以解決硬件所不能解決的一些問題,同時有利于節省硬件開銷。但軟件抗干擾是被動的,本質在于“抗”,而不在于“拒”;此外,其抗持續強干擾的效果并不理想。硬件抗干擾在于“拒”,即把干擾“拒”于系統之外,使系統免受干擾的影響,以達到穩定運行的目的。但是,硬件抗干擾措施無論如何完善,徹底消除干擾是不可能的,只有采用硬件和軟件相結合的辦法,取長補短,才能取得最佳的抗干擾效果。
大壩閘門自動化系統的干擾來源比較復雜,有來自設備內部的,也有來自設備外部的。主要有下面幾類:
(1)供電系統干擾,其中電源噪聲是大壩閘門自動化系統中最重要的干擾來源,并且危害最嚴重。
(2)靜電感應和電磁感應干擾,通過電磁波輻射竄入系統。
(3)信號通道干擾,通過與主機相連的輸入輸出通道進入系統。
干擾進入大壩閘門自動化系統,使得大壩閘門自動化系統不能正常工作,導致控制失靈,可能造成重大的事故。其對系統軟件的影響主要表現在:
(1)降低數據采集的可靠性。干擾侵入大壩閘門自動化系統的輸入通道并疊加在信號上,致使數據采集誤差加大。
(2)降低控制的靈敏性。輸出接口受到干擾,使得輸出信號混亂,導致控制輸出誤差加大,甚至失靈。
(3)數據出錯。大壩閘門自動化系統中,RAM是可讀寫的。但在干擾的侵害下,RAM中的數據可能被修改,從而造成數據出錯。
(4)程序運行失常。大壩閘門自動化系統受強干擾后,程序計數器PC值可能被改變,將會破壞程序的正常運行。
針對干擾對系統軟件的影響,筆者從抑制和消除數據采集誤差、控制失靈、數據出錯、程序跑飛等四個方面給出常用的軟件抗干擾措施。
數據采集誤差的軟件抗干擾措施主要是數字濾波。數字濾波實質上是一種程序濾波,即通過一定的計算程序,對采樣信號進行平滑加工,以減少干擾在有用信號中的比重。數字濾波是模擬量采集中抗干擾的重要手段。數字濾波的方法很多,對于不同場合、不同性質的采集量,選用合適的濾波方法可以得到理想的抗干擾效果。對于變化較快的信號,如電流、電壓等,為適應快速自動保護的要求,選用算術平均值濾波或加權平均濾波以減少程序運行時間;對于壓力、轉速、振動、位移等變化較慢的參數,采用程序判斷濾波或慣性濾波;對于變化緩慢的溫度量則采用中值濾波;對于電能的計算,為提高精度而采用復合濾波。
(1)程序判斷濾波。
在對具體控制對象的實際情況進行分析的基礎上,確定兩次采樣輸入信號之間可能出現的最大偏差量,若采樣偏差超過最大偏差,則表明該輸入信號是干擾信號,應去掉,反之,該信號可用作本次采樣值送入存貯,以備調用。其過程用式(1)表示:

式中 yi為第i次采樣值;xi為第i次實際采樣值;xi-1為第 i-1次實際采樣值;△x為最大偏差。
當∣xi-xi-1∣>△x時,也可用下一次的采樣值xi+1再作判斷,其算法為:

(2)平均值濾波。
取n個采樣值,然后取其平均值,即:

(3)中值濾波。
中值濾波的算法為:

即對某一被測參數連續采樣n次(n為奇數,一般n=3),從中選擇中間的采樣值作為濾波器的輸出。該方法對去掉脈動性質的干擾比較有效且計算簡單,占內存少;但對快速變化的參數則不宜采用,因此可用于溫度、壓力等參數的測量。
控制失靈的軟件抗干擾措施主要是為了克服干擾對開關量讀入和動作信號輸出的影響。常用的方法為:
(1)指令復執。
指令復執系指對于重要的指令,特別是輸入與輸出指令要重復執行,以確保其正確。開關量的讀入必須兩次以上讀入一致才有效;若是按鍵類開關,還應加軟件除抖保護,即加軟件延時,延時值一般為20ms左右。動作信號輸出時,需將輸出回讀,以保證輸出信號的正確性。對于微機保護裝置,應不斷重復該輸出命令,確保動作無誤。只要有可能,重復周期應盡可能短。這樣,當外部設備接收到一個被干擾的錯誤信息后還來不及做出有效的反應,一個正確的輸出又來到,即可及時防止錯誤動作的產生。
(2)多重動作指令。
保護出口驅動電路的控制不要由單條指令實現,而要分成兩條或多條指令的組合來執行,否則對該控制指令的任何干擾都有可能引起誤動作。
(3)設置當前輸出狀態寄存單元。
當干擾侵入輸出通道造成輸出狀態破壞時,系統可以及時查詢當前輸出狀態寄存單元的輸出狀態信息,及時糾正錯誤的輸出狀態。
數據出錯的軟件抗干擾措施主要是針對RAM中的數據進行保護。通常采用數據冗余技術,將同樣的數據在不同的地方保存1~2個備份。當使用RAM中的數據時,把原數據與備份數據進行比較,相同則認為數據未被破壞,否則啟動備份數據。值得注意的是:備份數據的存放地址應與原數據保持一定的距離,以防止兩者同時被破壞。同時,應注意數據區不要靠近堆棧,以防止堆棧溢出破壞數據或讀寫數據破壞堆棧。
可見,RAM中數據的保護是以犧牲存儲空間和執行速度為代價的。在實際應用中,一般只對RAM中極少數重要的、不允許丟失的數據進行保護,而絕大部分臨時存放、隨時更新的數據既使遭到破壞,最多也只是造成系統短時間的波動。
程序跑飛的軟件抗干擾措施主要有“軟件狗”、“指令冗余”和“軟件陷阱”,筆者逐一介紹如下。
(1)軟件狗。
軟件狗實際上是一個軟件監視系統,通常利用軟件定時器或硬件定時器的中斷,在中斷程序中查詢某個設定的標志,若標志不為零,則清零或減1后退出;若標志為零,則執行復位指令或轉向出錯處理程序,在出錯處理程序中完成各種善后工作,再使系統復位。在系統程序中根據要求的監視時間的長短設置標志,一旦程序未能在給定的時間內重置標志,就會導致系統復位。軟件狗對不帶硬件狗電路而有定時器中斷的微機系統特別有用,其缺點是額外占用了一個定時器。
(2)指令冗余。
指令冗余指在一些對程序流向起著決定作用的指令(如跳轉指令)及對系統工作狀態至關重要的指令(如中斷指令)前面,人為地插入幾條空操作指令,以保證跑飛的程序能重返正常軌道。指令冗余得以實現的前提是程序跑飛到程序區并執行了空操作,否則指令冗余不起作用。應當注意的是:在一個程序中“指令冗余”不要使用過多,以免降低程序的執行效率。
(3)軟件陷阱。
軟件陷阱是指在非用戶程序區(如未使用的E-PROM區、未使用的中斷向量區、數據表格區的周圍)填充空操作指令并周期性寫入一條指引指令,當程序跑飛到這些區域時,強行將程序引向一個指定的地址,在那里有一段專門對程序出錯進行處理的程序,以便引導程序進入正常的運行狀態。
[1]王樹勇.閘站自動化典型問題的研究[M].南京:河海大學出版社,2011.
[2]區健昌.電子設備的電磁兼容性設計[M].北京:電子工業出版社,2008.