蒲 永
(茂縣天龍湖電力有限公司,四川成都 610091)
軟件抗干擾技術(shù)就是利用軟件運行過程中對自己進(jìn)行自診斷以及和工控網(wǎng)絡(luò)中各機器間的相互監(jiān)視來監(jiān)督和判斷工控機是否出錯或失效的一個方法。其為工控系統(tǒng)抗干擾的最后一道屏障。
硬件抗干擾抑制和消除了大部分的干擾,但完全依靠硬件電路來消除所有的干擾是不可能的。軟件抗干擾發(fā)展較晚,目前還沒有形成較完善的理論。但是,利用微機的記憶、快速計算和邏輯判斷功能,從軟件方面進(jìn)行干擾抑制和消除的研究已逐漸受到人們的重視。所謂軟件抗干擾,就是利用微機的高速運算和處理功能,采取程序的手段來檢測、進(jìn)而排除電磁干擾等對微機控制系統(tǒng)的影響。軟件抗干擾的本質(zhì):在有干擾存在的情況下,利用編程技術(shù)抵消其影響。即當(dāng)干擾使微機控制系統(tǒng)出現(xiàn)一定的運行性故障時,能夠依靠系統(tǒng)內(nèi)駐的能力(程序)保持系統(tǒng)連續(xù)正確地執(zhí)行其程序和輸入輸出的功能。因此,軟件抗干擾過程實質(zhì)上是一個干擾容錯過程,是容錯技術(shù)在軟件設(shè)計中的具體體現(xiàn)。應(yīng)用軟件抗干擾的前提是干擾尚未引起硬件的破壞,RAM中程序和數(shù)據(jù)尚未丟失,否則軟件抗干擾無從談起。
軟件抗干擾具有許多優(yōu)點,它可以根據(jù)信號和環(huán)境的不同,選用不同的抗干擾方法,而無須改變硬件結(jié)構(gòu),因而靈活多變,功能強大,可以解決硬件所不能解決的一些問題,同時有利于節(jié)省硬件開銷。但軟件抗干擾是被動的,本質(zhì)在于“抗”,而不在于“拒”;此外,其抗持續(xù)強干擾的效果并不理想。硬件抗干擾在于“拒”,即把干擾“拒”于系統(tǒng)之外,使系統(tǒng)免受干擾的影響,以達(dá)到穩(wěn)定運行的目的。但是,硬件抗干擾措施無論如何完善,徹底消除干擾是不可能的,只有采用硬件和軟件相結(jié)合的辦法,取長補短,才能取得最佳的抗干擾效果。
大壩閘門自動化系統(tǒng)的干擾來源比較復(fù)雜,有來自設(shè)備內(nèi)部的,也有來自設(shè)備外部的。主要有下面幾類:
(1)供電系統(tǒng)干擾,其中電源噪聲是大壩閘門自動化系統(tǒng)中最重要的干擾來源,并且危害最嚴(yán)重。
(2)靜電感應(yīng)和電磁感應(yīng)干擾,通過電磁波輻射竄入系統(tǒng)。
(3)信號通道干擾,通過與主機相連的輸入輸出通道進(jìn)入系統(tǒng)。
干擾進(jìn)入大壩閘門自動化系統(tǒng),使得大壩閘門自動化系統(tǒng)不能正常工作,導(dǎo)致控制失靈,可能造成重大的事故。其對系統(tǒng)軟件的影響主要表現(xiàn)在:
(1)降低數(shù)據(jù)采集的可靠性。干擾侵入大壩閘門自動化系統(tǒng)的輸入通道并疊加在信號上,致使數(shù)據(jù)采集誤差加大。
(2)降低控制的靈敏性。輸出接口受到干擾,使得輸出信號混亂,導(dǎo)致控制輸出誤差加大,甚至失靈。
(3)數(shù)據(jù)出錯。大壩閘門自動化系統(tǒng)中,RAM是可讀寫的。但在干擾的侵害下,RAM中的數(shù)據(jù)可能被修改,從而造成數(shù)據(jù)出錯。
(4)程序運行失常。大壩閘門自動化系統(tǒng)受強干擾后,程序計數(shù)器PC值可能被改變,將會破壞程序的正常運行。
針對干擾對系統(tǒng)軟件的影響,筆者從抑制和消除數(shù)據(jù)采集誤差、控制失靈、數(shù)據(jù)出錯、程序跑飛等四個方面給出常用的軟件抗干擾措施。
數(shù)據(jù)采集誤差的軟件抗干擾措施主要是數(shù)字濾波。數(shù)字濾波實質(zhì)上是一種程序濾波,即通過一定的計算程序,對采樣信號進(jìn)行平滑加工,以減少干擾在有用信號中的比重。數(shù)字濾波是模擬量采集中抗干擾的重要手段。數(shù)字濾波的方法很多,對于不同場合、不同性質(zhì)的采集量,選用合適的濾波方法可以得到理想的抗干擾效果。對于變化較快的信號,如電流、電壓等,為適應(yīng)快速自動保護(hù)的要求,選用算術(shù)平均值濾波或加權(quán)平均濾波以減少程序運行時間;對于壓力、轉(zhuǎn)速、振動、位移等變化較慢的參數(shù),采用程序判斷濾波或慣性濾波;對于變化緩慢的溫度量則采用中值濾波;對于電能的計算,為提高精度而采用復(fù)合濾波。
(1)程序判斷濾波。
在對具體控制對象的實際情況進(jìn)行分析的基礎(chǔ)上,確定兩次采樣輸入信號之間可能出現(xiàn)的最大偏差量,若采樣偏差超過最大偏差,則表明該輸入信號是干擾信號,應(yīng)去掉,反之,該信號可用作本次采樣值送入存貯,以備調(diào)用。其過程用式(1)表示:
式中 yi為第i次采樣值;xi為第i次實際采樣值;xi-1為第 i-1次實際采樣值;△x為最大偏差。
當(dāng)∣xi-xi-1∣>△x時,也可用下一次的采樣值xi+1再作判斷,其算法為:
(2)平均值濾波。
取n個采樣值,然后取其平均值,即:
(3)中值濾波。
中值濾波的算法為:
即對某一被測參數(shù)連續(xù)采樣n次(n為奇數(shù),一般n=3),從中選擇中間的采樣值作為濾波器的輸出。該方法對去掉脈動性質(zhì)的干擾比較有效且計算簡單,占內(nèi)存少;但對快速變化的參數(shù)則不宜采用,因此可用于溫度、壓力等參數(shù)的測量。
控制失靈的軟件抗干擾措施主要是為了克服干擾對開關(guān)量讀入和動作信號輸出的影響。常用的方法為:
(1)指令復(fù)執(zhí)。
指令復(fù)執(zhí)系指對于重要的指令,特別是輸入與輸出指令要重復(fù)執(zhí)行,以確保其正確。開關(guān)量的讀入必須兩次以上讀入一致才有效;若是按鍵類開關(guān),還應(yīng)加軟件除抖保護(hù),即加軟件延時,延時值一般為20ms左右。動作信號輸出時,需將輸出回讀,以保證輸出信號的正確性。對于微機保護(hù)裝置,應(yīng)不斷重復(fù)該輸出命令,確保動作無誤。只要有可能,重復(fù)周期應(yīng)盡可能短。這樣,當(dāng)外部設(shè)備接收到一個被干擾的錯誤信息后還來不及做出有效的反應(yīng),一個正確的輸出又來到,即可及時防止錯誤動作的產(chǎn)生。
(2)多重動作指令。
保護(hù)出口驅(qū)動電路的控制不要由單條指令實現(xiàn),而要分成兩條或多條指令的組合來執(zhí)行,否則對該控制指令的任何干擾都有可能引起誤動作。
(3)設(shè)置當(dāng)前輸出狀態(tài)寄存單元。
當(dāng)干擾侵入輸出通道造成輸出狀態(tài)破壞時,系統(tǒng)可以及時查詢當(dāng)前輸出狀態(tài)寄存單元的輸出狀態(tài)信息,及時糾正錯誤的輸出狀態(tài)。
數(shù)據(jù)出錯的軟件抗干擾措施主要是針對RAM中的數(shù)據(jù)進(jìn)行保護(hù)。通常采用數(shù)據(jù)冗余技術(shù),將同樣的數(shù)據(jù)在不同的地方保存1~2個備份。當(dāng)使用RAM中的數(shù)據(jù)時,把原數(shù)據(jù)與備份數(shù)據(jù)進(jìn)行比較,相同則認(rèn)為數(shù)據(jù)未被破壞,否則啟動備份數(shù)據(jù)。值得注意的是:備份數(shù)據(jù)的存放地址應(yīng)與原數(shù)據(jù)保持一定的距離,以防止兩者同時被破壞。同時,應(yīng)注意數(shù)據(jù)區(qū)不要靠近堆棧,以防止堆棧溢出破壞數(shù)據(jù)或讀寫數(shù)據(jù)破壞堆棧。
可見,RAM中數(shù)據(jù)的保護(hù)是以犧牲存儲空間和執(zhí)行速度為代價的。在實際應(yīng)用中,一般只對RAM中極少數(shù)重要的、不允許丟失的數(shù)據(jù)進(jìn)行保護(hù),而絕大部分臨時存放、隨時更新的數(shù)據(jù)既使遭到破壞,最多也只是造成系統(tǒng)短時間的波動。
程序跑飛的軟件抗干擾措施主要有“軟件狗”、“指令冗余”和“軟件陷阱”,筆者逐一介紹如下。
(1)軟件狗。
軟件狗實際上是一個軟件監(jiān)視系統(tǒng),通常利用軟件定時器或硬件定時器的中斷,在中斷程序中查詢某個設(shè)定的標(biāo)志,若標(biāo)志不為零,則清零或減1后退出;若標(biāo)志為零,則執(zhí)行復(fù)位指令或轉(zhuǎn)向出錯處理程序,在出錯處理程序中完成各種善后工作,再使系統(tǒng)復(fù)位。在系統(tǒng)程序中根據(jù)要求的監(jiān)視時間的長短設(shè)置標(biāo)志,一旦程序未能在給定的時間內(nèi)重置標(biāo)志,就會導(dǎo)致系統(tǒng)復(fù)位。軟件狗對不帶硬件狗電路而有定時器中斷的微機系統(tǒng)特別有用,其缺點是額外占用了一個定時器。
(2)指令冗余。
指令冗余指在一些對程序流向起著決定作用的指令(如跳轉(zhuǎn)指令)及對系統(tǒng)工作狀態(tài)至關(guān)重要的指令(如中斷指令)前面,人為地插入幾條空操作指令,以保證跑飛的程序能重返正常軌道。指令冗余得以實現(xiàn)的前提是程序跑飛到程序區(qū)并執(zhí)行了空操作,否則指令冗余不起作用。應(yīng)當(dāng)注意的是:在一個程序中“指令冗余”不要使用過多,以免降低程序的執(zhí)行效率。
(3)軟件陷阱。
軟件陷阱是指在非用戶程序區(qū)(如未使用的E-PROM區(qū)、未使用的中斷向量區(qū)、數(shù)據(jù)表格區(qū)的周圍)填充空操作指令并周期性寫入一條指引指令,當(dāng)程序跑飛到這些區(qū)域時,強行將程序引向一個指定的地址,在那里有一段專門對程序出錯進(jìn)行處理的程序,以便引導(dǎo)程序進(jìn)入正常的運行狀態(tài)。
[1]王樹勇.閘站自動化典型問題的研究[M].南京:河海大學(xué)出版社,2011.
[2]區(qū)健昌.電子設(shè)備的電磁兼容性設(shè)計[M].北京:電子工業(yè)出版社,2008.