|
|
工控計算機軟件抗干擾技術(shù)*</P><P> 孟傳良</P><P> (貴州工業(yè)大學(xué)計算機科學(xué)與工程系,貴陽 550003)</P><P> 摘要:軟件抗干擾措施是硬件抗干擾措施的一個補充和延伸,運用得法可以顯著提高工控系統(tǒng)的可靠性和智能,并且在一定程度上避免和減輕意外事故的發(fā)生。本文提出了實時控制軟件的自監(jiān)視法、互監(jiān)視法和常用方法等等一系列軟件抗干擾技術(shù)。</P><P> 關(guān)鍵詞:計算機;控制; 抗干擾;可靠性; 軟件</P><P> 中圖分類號:TP 391.8; TP 311.5; TP 302.7 文獻標(biāo)識碼:A</P><P> 0 引言</P><P> 工業(yè)現(xiàn)場各種動力設(shè)備在不斷地啟停運行。使得現(xiàn)場環(huán)境惡劣,電磁干擾嚴(yán)重。工業(yè)控制計算機在這樣的環(huán)境里面臨著巨大的考驗。可以說我們研制的工業(yè)控制系統(tǒng)能否正常運行,并且產(chǎn)生出應(yīng)有的經(jīng)濟效益,其抗干擾能力是一個關(guān)鍵的因素。因此,除了整個系統(tǒng)的結(jié)構(gòu)和每個具體的工控機都需要仔細設(shè)計硬件抗干擾措施之外,還需要注重軟件抗干擾措施的應(yīng)用。我們在多年的工業(yè)控制研究中,深感工業(yè)現(xiàn)場意外因素太多并且危害很大。有時一個偶然的人為或非人為干擾,例如并不很強烈的雷擊,就使得我們自認(rèn)為無懈可擊的硬件抗干擾措施無能為力,工控機死機了(即程序跑飛了)或者控制出錯了(此時CPU內(nèi)部寄存器內(nèi)容被修改或者RAM和I/O口數(shù)據(jù)被修改)。這在某些重要的工業(yè)環(huán)節(jié)上將造成巨大的事故。使用軟件抗干擾措施就可以在一定程度上避免和減輕這些意外事故的后果。軟件抗干擾技術(shù)就是利用軟件運行過程中對自己進行自監(jiān)視,和工控網(wǎng)絡(luò)中各機器間的互監(jiān)視,來監(jiān)督和判斷工控機是否出錯或失效的一個方法。這是工控系統(tǒng)抗干擾的最后一道屏障。</P><P> 1 工控計算機實時控制軟件運行過程中的自監(jiān)視法</P><P> 自監(jiān)視法是工業(yè)控制計算機自己對自己的運行狀態(tài)的監(jiān)視。</P><P> 某些類型的工控機CPU內(nèi)部具有Watchdog Timer,例如INTEL8098、80198系列,就可以方便的通過設(shè)定Watchdog工作方式以及采用合適的軟件編程的配合來達到自監(jiān)視目的。而沒有Watchdog Timer的CPU,例如Z80、8051系列等,當(dāng)然也可以通過外加Watchdog電路,再配以軟件完成自監(jiān)視目的。這種軟硬結(jié)合的自監(jiān)視法通常是很有效的,可以大幅度提高工控機的抗干擾能力。如果Watchdog電路設(shè)計得好,并且軟件也編制得好的話,不但可以及時發(fā)現(xiàn)程序跑飛,而且還可以實現(xiàn)“跑飛”程序修復(fù)。這是最好的自監(jiān)視手段。</P><P> 然而,這并不等于萬無一失。例如,① Watchdog電路本身失效;②設(shè)置Watchdog的指令正好在取指令時被干擾而讀錯;③ Watchdog“發(fā)現(xiàn)”程序跑飛之后,其產(chǎn)生的復(fù)位脈沖或者NMI申請信號正好被干擾而沒奏效等等。雖然以上的導(dǎo)致Watchdog失效的因素的幾率很小,但總是存在的。另一個方面,還有相當(dāng)數(shù)量的工業(yè)控制計算機沒有Watchdog電路。因此,以下重點討論的軟件自監(jiān)視法就勢在必行了。</P><P> 1.1 隨時監(jiān)督檢查程序計數(shù)器PC的值是否超出程序區(qū)</P><P> 計算機正常運行,其PC值一定在程序區(qū)內(nèi)。如果PC值跑出程序區(qū),計算機肯定已發(fā)生了程序跑飛。檢查程序計數(shù)器PC值是否在程序區(qū)內(nèi)的方法,是在一個經(jīng)常要產(chǎn)生外部中斷的某個中斷服務(wù)程序中,讀取轉(zhuǎn)入該中斷時壓入堆棧的斷點地址。如果該地址在程序區(qū)內(nèi),則認(rèn)為PC值正常,否則一定是程序跑飛了。此時,程序跳轉(zhuǎn)到機器的重啟動入口或者復(fù)位入口,機器重新啟動。于是機器又自救活了。如果沒有一個這樣合適的中斷源,可以專門設(shè)置一個定時中斷或者幾個定時中斷,在中斷服務(wù)程序中檢查PC值是否合法,一旦發(fā)現(xiàn)不對就立即轉(zhuǎn)入機器的重啟動入口。定時器中斷的時間常數(shù),可視機器的繁忙程度和重要性設(shè)定,一般從幾個毫秒到幾十毫秒都可以。</P><P> 這個方法的局限性是不能查出PC值在程序區(qū)內(nèi)的亂跳,即此時PC值雖受干擾卻并沒有超出程序區(qū),而是錯位亂拼指令而構(gòu)成一些莫名其妙的操作,或者死循環(huán)。</P><P> 1.2 主循環(huán)程序和中斷服務(wù)程序相互監(jiān)視</P><P> 每個工控機的主循環(huán)程序和中斷服務(wù)程序都有一定的運行規(guī)律可循。因此可以設(shè)計出主循環(huán)程序與各中斷服務(wù)程序、各中斷服務(wù)程序之間的相互監(jiān)視。每個監(jiān)視對要定義一個RAM單元,依靠對其計數(shù)/清零的方法表達相互監(jiān)視信息。例如,某工控機的主循環(huán)程序循環(huán)一次最長時間為80 ms,它的一個定時中斷時間常數(shù)為10 ms,當(dāng)我們安排該定時中斷監(jiān)視主循環(huán)程序運行時,可以每次10 ms中斷對該RAM單元加1計數(shù),而主循環(huán)程序每循環(huán)一次對該RAM單元清零。因此,正常運行時,這個監(jiān)視計數(shù)RAM單元的計數(shù)值不可能≥9,如果10 ms定時中斷服務(wù)程序發(fā)現(xiàn)其計數(shù)值≥9,就知道主循環(huán)程序已經(jīng)被干擾跑飛或出現(xiàn)死循環(huán),于是就跳轉(zhuǎn)到機器的重啟動入口,重新恢復(fù)運行。使用這個方法,如果設(shè)計得當(dāng)?shù)脑挘欠浅S行У。我們多年的?jīng)驗是:主循環(huán)程序被干擾跑飛可能性最大,中斷服務(wù)程序越短小越不易跑飛。主循環(huán)程序和中斷服務(wù)程序以及中斷服務(wù)程序之間的相互監(jiān)視,應(yīng)當(dāng)多設(shè)計幾個監(jiān)視對會更好。</P><P> 1.3 隨時校驗程序代碼的正確性</P><P> 工業(yè)控制計算機的實時控制程序代碼通常都采用EPROM固化運行,一般不易發(fā)生被改寫的情況。但成年累月運行,我們有時也會發(fā)現(xiàn)極個別的單元出錯。其原因可能是芯片質(zhì)量問題或者因靜電、雷擊干擾等造成的改寫。程序出錯了,將直接造成運行錯誤或者無法運行。校驗的方式可以采用累加和校驗或者BCH校驗(一種CRC校驗方法)。當(dāng)采用BCH校驗時,其分組附加的冗余字節(jié)可以集中在程序區(qū)之外的某個EPROM區(qū)域里。校驗方法是在某個短小而且經(jīng)常發(fā)生的中斷服務(wù)程序內(nèi)安排一個校驗?zāi)K,可以設(shè)計成每次循環(huán)校驗一部分程序代碼,分若干次校驗完成;或者當(dāng)代碼少,任務(wù)輕松時也可以一次校驗完。如果發(fā)現(xiàn)校驗錯,應(yīng)當(dāng)立即向工控網(wǎng)絡(luò)主站報告或者以自身報警的辦法告知操作人員,以便及時處理。這個方法的局限性是被損壞的程序代碼不是校驗程序塊,而且以該中斷還可以正常響應(yīng)為前提。由于該中斷服務(wù)程序短小,通常還是有很大的概率自監(jiān)視程序代碼的正確性。</P><P> 1.4 隨時校驗RAM的正確性</P><P> RAM成年累月運行,其質(zhì)量因素和接插件接觸因素都將導(dǎo)致其故障。這也將使控制系統(tǒng)發(fā)生錯誤。因此需要經(jīng)常監(jiān)視RAM的正確性。監(jiān)視的辦法可以安排在主循環(huán)程序,也可以安排在某個經(jīng)常要發(fā)生的中斷服務(wù)程序里。分幾次或者全部一次對RAM進行檢查。檢查的方法是先把被檢查的RAM單元的內(nèi)容讀出,存放在某個通用寄存器里,然后對該單元寫入一個特定碼,再讀出比較,如果不正確就說明該單元可能損壞,此時要及時報告工控網(wǎng)絡(luò)主站或者自身報警,提醒操作人員處理。這個寫入的特定碼常用的是55H-AAH法,即寫入55H,再讀出比較,如果正確,再寫入AAH,再讀出比較,該組碼對每bit都有“0”、“1”寫入讀出檢驗,如果不正確時,最好再驗證兩次才肯定校驗結(jié)果。不管該單元是否有錯,校驗之后都應(yīng)還回它的原始數(shù)據(jù),再報警或往下操作。使用這個方法要注意處理好各個中斷源的級別關(guān)系!</P><P> 2 實時控制系統(tǒng)的互監(jiān)視法</P><P> 一個分布式工控網(wǎng)絡(luò)或者重要環(huán)節(jié)的雙機熱備份運行,都可以構(gòu)成軟件抗干擾的互監(jiān)視法。主從式的工控網(wǎng),主站和從站可以相互監(jiān)視運行狀況,環(huán)形網(wǎng)的相鄰站或者全部站也都可以相互監(jiān)視運行狀況,雙機熱備份運行的兩工控機,更應(yīng)該相互監(jiān)視。對于網(wǎng)絡(luò)型的各站間的相互監(jiān)視,主要是定時互相詢問和按要求回答,如果沒有按要求回答,則表示該站可能出問題(當(dāng)然也可能是網(wǎng)絡(luò)通信出問題),操作人員應(yīng)及時前往處理。最簡單的詢問和回答碼的設(shè)計是詢問方發(fā)出一組數(shù)字,回答方經(jīng)過某種簡單運算,例如求反,再發(fā)回詢問方。這種相互監(jiān)視法可檢驗被詢站是否死機以及校驗通信網(wǎng)絡(luò)完好與否。而重要環(huán)節(jié)的雙機熱備份運行的相互監(jiān)視則可做得很深入,除了這種詢問回答方式之外,還應(yīng)做到控制量是否正常的相互監(jiān)視,發(fā)現(xiàn)問題應(yīng)當(dāng)及時報警,通知值班人員處理。</P><P> 3 其它常采用的軟件抗干擾方法</P><P> 3.1 廣布陷井法</P><P> 以上論述的自監(jiān)視法和互監(jiān)視法都是建立在工控機能正確運行全部或部分程序的基礎(chǔ)上的。有時一個意想不到的干擾,破壞了中斷和所有程序的正常運行。此時PC值可能在程序區(qū)內(nèi),也可能在程序區(qū)之外,要使其能夠自恢復(fù)正常運行,只有依賴于廣布“陷井”的絕招了。</P><P> 這里所謂的“陷井”,是指某些類型的CPU提供給用戶使用的軟中斷指令或者復(fù)位指令。例如,Z80指令RST 38H,其機器碼為FFH。CPU執(zhí)行該指令時,則將當(dāng)前程序計數(shù)器PC的值壓入堆棧,然后轉(zhuǎn)到0038H地址執(zhí)行程序。如果把0038H作為一個重啟動入口,則機器就可以恢復(fù)新的工作了。再例如,INTEL8098、80198系列的復(fù)位指令RST,機器碼也為FFH。CPU執(zhí)行該指令時,其內(nèi)部進行復(fù)位操作,然后從2080H開始執(zhí)行程序。當(dāng)然,80198系列還有更多的非法操作碼可作為陷井指令使用,這時只需要在2012H的一個字的中斷矢量單元里安排中斷入口,并且編制一個處理非法操作碼的中斷服務(wù)程序,一遇非法操作碼就能進行故障處理。作者多年的經(jīng)驗表明,陷井不但需要在ROM的全部非內(nèi)容區(qū)、RAM的全部非數(shù)據(jù)區(qū)設(shè)置,而且在程序區(qū)內(nèi)的模塊之間廣泛布置。一旦機器程序跑飛,總會碰上陷井,立即就可以振救活機器了。</P><P> 3.2 重復(fù)功能設(shè)定法</P><P> 工控機的很多功能的設(shè)定,通常都是在主程序開始時的初始化程序里設(shè)定的,以后再也不去設(shè)定了。這在正常情況下本無問題。但偶然的干擾會改變CPU內(nèi)部的這些寄存器或者接口芯片的功能寄存器,例如,把中斷的類型、中斷的優(yōu)先級別、串行口、并行口的設(shè)定修改了,機器的運行肯定會出錯,因此,只要重復(fù)設(shè)定功能操作不影響其當(dāng)前連續(xù)工作的性能,都應(yīng)當(dāng)納入主程序的循環(huán)圈里。每個循環(huán)就可以刷新一次設(shè)定,避免了偶然不測發(fā)生。對于那些重復(fù)設(shè)定功能操作會影響當(dāng)前連續(xù)工作性能的,要盡量想法找機會重新設(shè)定。例如串行口,如果接收完某幀信息或者發(fā)送完某幀信息之后,串口會有一個短暫的空閑時,就應(yīng)作出判斷并且安排重新設(shè)定一次的操作。</P><P> 3.3 重要數(shù)據(jù)備份法</P><P> 工控機中的一些關(guān)鍵數(shù)據(jù),應(yīng)當(dāng)有至少有兩個以上的備份副本,當(dāng)操作這些數(shù)據(jù)時,可以把主、副本進行比較,如其改變,就要分析原因,采取預(yù)先設(shè)計好的方法處理。還可以把重要數(shù)據(jù)采用校驗和或者分組BCH校驗的方法進行校驗。這兩種方法一并使用則更可靠。</P><P> 4 結(jié)束語</P><P> 軟件抗干擾的內(nèi)容還有很多,例如,檢測量的數(shù)字濾波、壞值剔除;人工控制指令的合法性和輸入設(shè)定值的合法性判別等等,這些都是一個完善的工業(yè)控制系統(tǒng)必不可少的。</P><P> 工業(yè)控制是計算機的最重要的應(yīng)用領(lǐng)域,也是計算機的最艱難的應(yīng)用環(huán)境。我從多年來的研究經(jīng)驗認(rèn)為:工業(yè)控制計算機的抗干擾性能根本在硬件結(jié)構(gòu),軟件抗干擾只是一個補充。硬件的設(shè)計應(yīng)當(dāng)盡可能的完善,不能輕易降低標(biāo)準(zhǔn),讓軟件去補救!而軟件的編制則要處處考慮到硬件可能的失效,可能受到的干擾等種種問題,在保證實時性、控制精度和控制功能的前提下,盡力提高系統(tǒng)的抗干擾性能。要考慮得很細致,努力賦予軟件高度的智能。這樣,軟件才是完美的。把硬件和軟件有機的結(jié)合起來,一個經(jīng)得起長期現(xiàn)場考驗的盡可能完善的工業(yè)控制系統(tǒng)才能實現(xiàn)。</P><P> 參考文獻</P><P> [1]孟傳良. 電力地調(diào)SCADA通信樞紐級硬件結(jié)構(gòu)研制與微機選型[J].貴州工學(xué)院學(xué)報,1995,24(6):11-16.</P><P> SOFTWARE ANTIJAMMING TECHNIQUES APPLIED</P><P> TO INDUSTRIAL CONTROL COMPUTERS</P><P> MENG Chuan-liang</P><P> (Dept.of Computer Science and Engineering,GUT,Guiyang 550003)</P><P> Abstract:Software antijamming techniques is a supplement and extention of hardward antijamming techniques.It can considerably increase the reliability and intelligence of the industrial control computer system.And its application contributes to reduction of accidents too.This paper introduces the self-watch method,the mutual watch method and a couple of other methods in the real-time control software.</P><P> Keywords:computer; control; antijamming; reliability; software</P><P> 收稿日期:1998-10-05</P><P> 基金項目:貴州省自然科學(xué)基金(黔基金計字1988.3017號)資助</P><P>
|
|
狀 態(tài):
離線
公司簡介
產(chǎn)品目錄
|
|
公司名稱:
|
中華工控網(wǎng)
|
聯(lián) 系 人: |
客服中心
|
電 話: |
0755-26546361
|
傳 真: |
0755-26585268 |
地 址: |
深圳市南山區(qū)創(chuàng)業(yè)路現(xiàn)代城華庭1棟6A |
郵 編: |
518054 |
主 頁: |
|
|
|
|
|