工控軟件的抗幹擾設計
牛洪濤
中國人民解放軍 陸軍參謀學院基礎部
摘 要:本文闡述了工業現場環境中幹擾的特點,並詳細介紹了工控軟件抗幹擾設計的方法。
關鍵詞:工控軟件、抗幹擾、可靠性
The Anti-interference Design of Industrial Control Software
People''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''s Liberation Army Institute of Grand Force,Foundation
Department,Niu HongTao
Abstract: The characteristic of interference in industrial enviroment has been introduced in this paper.The method of industrial control software anti-interence design has also been discussed in detail.
Keyword:industrial control software,anti-interference,reliability
jisuanjixitongzaigongyexianchangshiyongshi,daliangdeganraoyuansuibunengzaochengyingjianxitongdesunhuai,danchangchangshijisuanjixitongbunengzhengchangyunxing,zhishikongzhishiling,zaochengzhongdashigu。jisuanjixitongdekangganraobukenengwanquanyikaoyingjianjiejue,yinci,ruanjiankangganraowentideyanjiuyulaiyuyinqirenmendezhongshi。
一、工控軟件的結構特點及幹擾途徑
在不同的工業控製係統中,工控軟件雖然完成的功能不同,但就其結構來說,一般具有如下特點:
實時性:工業控製係統中有些事件的發生具有隨機性,要求工控軟件能夠及時地處理隨機事件。
周期性:工(gong)控(kong)軟(ruan)件(jian)在(zai)完(wan)成(cheng)係(xi)統(tong)的(de)初(chu)始(shi)化(hua)工(gong)作(zuo)後(hou),隨(sui)之(zhi)進(jin)入(ru)主(zhu)程(cheng)序(xu)循(xun)環(huan)。在(zai)執(zhi)行(xing)主(zhu)程(cheng)序(xu)過(guo)程(cheng)中(zhong),如(ru)有(you)中(zhong)斷(duan)申(shen)請(qing),則(ze)在(zai)執(zhi)行(xing)完(wan)相(xiang)應(ying)的(de)中(zhong)斷(duan)服(fu)務(wu)程(cheng)序(xu)後(hou),繼(ji)續(xu)主(zhu)程(cheng)序(xu)循(xun)環(huan)。
相關性:工控軟件由多個任務模塊組成,各模塊配合工作,相互關聯,相互依存。
人為性:工(gong)控(kong)軟(ruan)件(jian)允(yun)許(xu)操(cao)作(zuo)人(ren)員(yuan)幹(gan)預(yu)係(xi)統(tong)的(de)運(yun)行(xing),調(tiao)整(zheng)係(xi)統(tong)的(de)工(gong)作(zuo)參(can)數(shu)。在(zai)理(li)想(xiang)情(qing)況(kuang)下(xia),工(gong)控(kong)軟(ruan)件(jian)可(ke)以(yi)正(zheng)常(chang)執(zhi)行(xing)。但(dan)在(zai)工(gong)業(ye)現(xian)場(chang)環(huan)境(jing)的(de)幹(gan)擾(rao)下(xia),工(gong)控(kong)軟(ruan)件(jian)的(de)周(zhou)期(qi)性(xing)、相關性及實時性受到破壞,程序無法正常執行,導致工業控製係統的失控,其表現是:
程序計數器PC值發生變化,破壞了程序的正常運行。PC值被幹擾後的數據是隨機的,因此引起程序執行混亂,在PC值的錯誤引導下,程序執行一係列毫無意義的指令,最後常常進入一個毫無意義的“死循環”中,使係統失去控製。
輸入/輸出接口狀態受到幹擾,破壞了工控軟件的相關性和周期性,造成係統資源被某個任務模塊獨占,使係統發生“死鎖”。
數shu據ju采cai集ji誤wu差cha加jia大da。幹gan擾rao侵qin入ru係xi統tong的de前qian向xiang通tong道dao,疊die加jia在zai信xin號hao上shang,導dao致zhi數shu據ju采cai集ji誤wu差cha加jia大da。特te別bie是shi當dang前qian向xiang通tong道dao的de傳chuan感gan器qi接jie口kou是shi小xiao電dian壓ya信xin號hao輸shu入ru時shi,此ci現xian象xiang更geng加jia嚴yan重zhong。
RAM數據區受到幹擾發生變化。根據幹擾竄入渠道、受幹擾數據性質的不同,係統受損壞的狀況不同,有的造成數值誤差,有的使控製失靈,有的改變程序狀態,有的改變某些部件(如定時器/計數器、串行口等)的工作狀態等。筆者在研製電力遠程抄表係統時就曾遇到因現場強電磁幹擾而造成RAM數據經常性被破壞的情況。
控(kong)製(zhi)狀(zhuang)態(tai)失(shi)靈(ling)。在(zai)工(gong)業(ye)控(kong)製(zhi)係(xi)統(tong)中(zhong),控(kong)製(zhi)狀(zhuang)態(tai)的(de)輸(shu)出(chu)常(chang)常(chang)是(shi)依(yi)據(ju)某(mou)些(xie)條(tiao)件(jian)狀(zhuang)態(tai)的(de)輸(shu)入(ru)和(he)條(tiao)件(jian)狀(zhuang)態(tai)的(de)邏(luo)輯(ji)處(chu)理(li)結(jie)果(guo)而(er)定(ding)。在(zai)這(zhe)些(xie)環(huan)節(jie)中(zhong),由(you)於(yu)幹(gan)擾(rao)的(de)侵(qin)入(ru),會(hui)造(zao)成(cheng)條(tiao)件(jian)狀(zhuang)態(tai)錯(cuo)誤(wu),致(zhi)使(shi)輸(shu)出(chu)控(kong)製(zhi)誤(wu)差(cha)加(jia)大(da),甚(shen)至(zhi)控(kong)製(zhi)失(shi)常(chang)。
二、程序運行失常的軟件對策
係統受到幹擾侵害致使PC值改變,造成程序運行失常。對於程序運行失常的軟件對策主要是發現失常狀態後及時引導係統恢複原始狀態。
1.設置監視跟蹤定時器
使(shi)用(yong)定(ding)時(shi)中(zhong)斷(duan)來(lai)監(jian)視(shi)程(cheng)序(xu)運(yun)行(xing)狀(zhuang)態(tai)。定(ding)時(shi)器(qi)的(de)定(ding)時(shi)時(shi)間(jian)稍(shao)大(da)於(yu)主(zhu)程(cheng)序(xu)正(zheng)常(chang)運(yun)行(xing)一(yi)個(ge)循(xun)環(huan)的(de)時(shi)間(jian),在(zai)主(zhu)程(cheng)序(xu)運(yun)行(xing)過(guo)程(cheng)中(zhong)執(zhi)行(xing)一(yi)次(ci)定(ding)時(shi)器(qi)時(shi)間(jian)常(chang)數(shu)刷(shua)新(xin)操(cao)作(zuo)。這(zhe)樣(yang),隻(zhi)要(yao)程(cheng)序(xu)正(zheng)常(chang)運(yun)行(xing),定(ding)時(shi)器(qi)不(bu)會(hui)出(chu)現(xian)定(ding)時(shi)中(zhong)斷(duan)。而(er)當(dang)程(cheng)序(xu)運(yun)行(xing)失(shi)常(chang),不(bu)能(neng)及(ji)時(shi)刷(shua)新(xin)定(ding)時(shi)器(qi)時(shi)間(jian)常(chang)數(shu)而(er)導(dao)致(zhi)定(ding)時(shi)中(zhong)斷(duan),利(li)用(yong)定(ding)時(shi)中(zhong)斷(duan)服(fu)務(wu)程(cheng)序(xu)將(jiang)係(xi)統(tong)複(fu)位(wei)。在(zai)8031應用係統中作為軟件抗幹擾的一個事例,具體做法是:
使用8155的定時器所產生的“溢出”信號作為8031的外部中斷源INT1。用555定時器作為8155中定時器的外部時鍾輸入;
8155定時器的定時值稍大於主程序的正常循環時間;
在主程序中,每循環一次,對8155定時器的定時常數進行刷新;
在主控程序開始處,對硬件複位還是定時中斷產生的自動恢複進行分類判斷處理。
2.設置軟件陷井
當PC失控,造成程序“亂飛”而不斷進入非程序區,隻要在非程序區設置攔截措施,使程序進入陷井,然後強迫使程序進入初始狀態。例如Z80指令係統中數據FFH正好對應為重新起動指令RST 56,該指令使程序自動轉入0038H入口地址。因此,在Z80 CPU構成的應用係統中,隻要將所有非程序區全部置成FFH用以攔截失控程序。並在0038H處設置轉移指令,使程序轉至抗幹擾處理程序。
三、係統“死鎖”的軟件對策
在工業控製係統中,A/D、D/A,顯示等輸入/輸出接口電路是必不可少的。這些接口與CPU之間采用查詢或中斷方式工作,而這些設備或接口對幹擾很敏感,幹擾信號一旦破壞了某一接口的狀態字後,就會導致CPU誤認為該接口有輸入/輸出請求而停止現行工作,轉去執行相應的輸入/輸出服務程序。但由於該接口本身並沒有輸入/輸出數據,從而使CPU資源被該服務程序長期占用,而不釋放,其它任務程序無法執行,使整個係統出現“死鎖”。對這種幹擾造成的“死鎖”問題,在軟件編程中,可采用“時間片”的方法來解決。其具體步驟為:
根據不同的輸入/輸出外設對時間的要求,分配相應的最大正常的輸入/輸出時間。
在每一輸入/輸出的任務模塊中,加入相應的超時判斷程序。這樣當幹擾破壞了接口的狀態造成CPUwucaozuohou,youyugaiwaishezhunbeihaoxinxichangqiwuxiao,jingyidingshijianhou,xitonghuiconggaiwaishedefuwuchengxuzhongzidongfanhui,baozhengzhenggeruanjiandezhouqixingbushouyingxiang,congerbimian“死鎖”情況的發生。
四、數據采集誤差的軟件對策
genjushujushouganraoxingzhijiganraohouguodebutong,caiquderuanjianduicegebuxiangtong,meiyougudingdemoshi。duiyushishishujucaijixitong,weilexiaochuchuanganqitongdaozhongdeganraoxinhao,zaiyingjiancuoshishangchangcaiquyouyuanhuowuyuanRLC網絡,構成模擬濾波器對信號實現頻率濾波。同樣,運用CPU的運算、控(kong)製(zhi)功(gong)能(neng)也(ye)可(ke)以(yi)實(shi)現(xian)頻(pin)率(lv)濾(lv)波(bo),完(wan)成(cheng)模(mo)擬(ni)濾(lv)波(bo)器(qi)類(lei)似(si)的(de)功(gong)能(neng),這(zhe)就(jiu)是(shi)數(shu)字(zi)濾(lv)波(bo)。在(zai)許(xu)多(duo)數(shu)字(zi)信(xin)號(hao)處(chu)理(li)專(zhuan)著(zhu)中(zhong)都(dou)有(you)專(zhuan)門(men)論(lun)述(shu),可(ke)以(yi)參(can)考(kao)。隨(sui)著(zhe)計(ji)算(suan)機(ji)運(yun)算(suan)速(su)度(du)的(de)提(ti)高(gao),數(shu)字(zi)濾(lv)波(bo)在(zai)實(shi)時(shi)數(shu)據(ju)采(cai)集(ji)係(xi)統(tong)中(zhong)的(de)應(ying)用(yong)將(jiang)愈(yu)來(lai)愈(yu)廣(guang)。在(zai)一(yi)般(ban)數(shu)據(ju)采(cai)集(ji)係(xi)統(tong)中(zhong),可(ke)以(yi)采(cai)用(yong)一(yi)些(xie)簡(jian)單(dan)的(de)數(shu)值(zhi)、邏輯運算處理來達到濾波的效果。下麵介紹幾種常用的方法。
1.算術平均值法
duiyuyidianshujulianxucaiyangduoci,jisuanqisuanshupingjunzhi,yiqipingjunzhizuoweigaidiancaiyangjieguo。zhezhongfangfakeyijianshaoxitongdesuijiganraoduicaijijieguodeyingxiang。yiban3~5次平均即可。
2.比較取舍法
dangkongzhixitongceliangjieguodegebieshujucunzaipianchashi,weiletichugebiecuowushuju,kecaiyongbijiaoqushefa,jiduimeigecaiyangdianlianxucaiyangjici,genjusuocaishujudebianhuaguilv,quedingqushe,congertichupianchashuju。liru,“采三取二”即對每個采樣點連續采樣三次,取兩次相同的數據為采樣結果。
3.中值法
根據幹擾造成采樣數據偏大或偏小的情況,對一個采樣點連續采集多個信號,並對這些采樣值進行比較,取中值作為該點的采樣結果。
4.一階遞推數字濾波法
這種方法是利用軟件完成RC低通濾波器的算法,實現用軟件方法代替硬件RC濾波器。一階遞推數字濾波公式為Yn=QXn+(1-Q)Yn-1式中Q -數字濾波器時間常數;Xn-第n次采樣時的濾波器輸入;Yn-第n次ci采cai樣yang時shi的de濾lv波bo器qi輸shu出chu。采cai用yong軟ruan件jian濾lv波bo器qi對dui消xiao除chu數shu據ju采cai集ji中zhong的de誤wu差cha可ke以yi獲huo得de滿man意yi的de效xiao果guo。但dan應ying注zhu意yi,選xuan取qu何he種zhong方fang法fa應ying根gen據ju信xin號hao的de變bian化hua規gui律lv選xuan擇ze。
五、RAM數據出錯的軟件對策
在實時控製過程中,幹擾造成比較嚴重的危害之一就是衝毀RAM中的數據,由於RAM中保存的是各種原始數據、標誌、變量等,如果被破壞,會造成係統出錯或無法運行,根據數據被衝毀的程度,一般可分為三類:
* 整個RAM數據被衝毀;
* RAM中某片數據被衝毀;
* 個別數據被衝毀。
在工業控製係統中,RAM的大部分內容是為了進行分析、bijiaoerlinshicunfangde,buyunxudiushideshujuzhizhanjishaobufen。zaizhezhongqingkuangxia,chulezhexiebuyunxudiushideshujuwai,qiyudabufenneirongyunxuduanshijianbeipohuai,zuiduozhiyinqixitongdeyigehenduanshijiandebodong,henkuainengzidonghuifuzhengchang。yinci,zaigongkongruanjianzhong,zhiyaozhuyiduishaoshubuyunxudiushideshujubaohu,yibanchangyongdefangfayou“校驗法”和“設標法”。這(zhe)兩(liang)種(zhong)方(fang)法(fa)各(ge)有(you)千(qian)秋(qiu),校(xiao)驗(yan)法(fa)比(bi)較(jiao)繁(fan)鎖(suo),但(dan)查(zha)錯(cuo)的(de)可(ke)信(xin)度(du)高(gao)。設(she)標(biao)法(fa)簡(jian)單(dan),但(dan)對(dui)數(shu)據(ju)表(biao)中(zhong)個(ge)別(bie)數(shu)據(ju)衝(chong)毀(hui)的(de)情(qing)況(kuang),查(zha)錯(cuo)則(ze)無(wu)難(nan)為(wei)力(li)。在(zai)編(bian)程(cheng)中(zhong)一(yi)般(ban)應(ying)綜(zong)合(he)使(shi)用(yong),其(qi)具(ju)體(ti)做(zuo)法(fa)為(wei):
* 將RAM工作區重要區域的始端和尾端各設置一個標誌碼“0” 或“1”;
* 對RAM中固定不變的數據表格設置校驗字。
在(zai)程(cheng)序(xu)的(de)執(zhi)行(xing)過(guo)程(cheng)中(zhong),每(mei)隔(ge)一(yi)定(ding)的(de)時(shi)間(jian)通(tong)過(guo)事(shi)先(xian)設(she)計(ji)的(de)查(zha)錯(cuo)程(cheng)序(xu)來(lai)檢(jian)查(zha)其(qi)各(ge)標(biao)誌(zhi)碼(ma)是(shi)否(fou)正(zheng)常(chang),如(ru)果(guo)不(bu)正(zheng)常(chang),則(ze)利(li)用(yong)數(shu)據(ju)冗(rong)餘(yu)技(ji)術(shu)通(tong)過(guo)抗(kang)幹(gan)擾(rao)處(chu)理(li)程(cheng)序(xu)來(lai)進(jin)行(xing)修(xiu)正(zheng);冗餘數據表的一般設計原則是:
* 各數據表應相互遠離分散設置,減少冗餘數據同時被衝毀的概率。
* 數據表應盡可能遠離棧區,減少由於操作錯誤造堆棧被成數據衝的可能 。
上述對RAM區域的恢複處理方法,在不同的應用係統中應根據的具體情況進行取舍。
六、控製狀態失常的軟件對策
在條件控製係統中,人們關注的問題是能否確保正常的控製狀態。如果幹擾進入係統,會影響各種控製條件、造成控製輸出失誤。為了確保係統安全可以采取下述軟件抗幹擾措施:
1.軟件冗餘
對於條件控製係統,將控製條件的一次采樣、處理控製輸出,改為循環采樣、處理控製輸出。這種方法具有良好的抗偶然因素幹擾作用。
2.設置當前輸出狀態寄存單元
當幹擾侵入輸出通道造成輸出狀態破壞時,係統可以及時查詢當前輸出狀態寄存單元的輸出狀態信息,及時糾正錯誤的輸出狀態。
3.設置自檢程序
在計算機係統內的特定部位或某些內存單元設狀態標誌,在運行中不斷循環測試,以保證係統中信息存儲、傳輸、運算的高可靠性。
上shang述shu介jie紹shao的de幾ji種zhong有you關guan工gong控kong軟ruan件jian的de抗kang幹gan擾rao編bian程cheng方fang法fa是shi筆bi者zhe在zai工gong作zuo實shi踐jian中zhong的de體ti會hui。在zai設she計ji工gong控kong軟ruan件jian的de過guo程cheng中zhong隻zhi要yao采cai取qu相xiang應ying的de抗kang幹gan擾rao措cuo施shi,就jiu可ke獲huo得de較jiao好hao的de抗kang幹gan擾rao效xiao果guo。如ru果guo結jie合he各ge種zhong硬ying件jian抗kang幹gan擾rao措cuo施shi一yi起qi使shi用yong,將jiang會hui大da大da提ti高gao係xi統tong的de可ke靠kao性xing。
參考文獻
1.豬獺博(日),計算機係統的高可靠性技術,國防工業出版社,1995年
2.周明德,微型計算機硬件軟件及其應用,清華大學出版社,1988年
通信地址:石家莊市陸軍參謀學院基礎部 牛洪濤 (050084)
作者簡介:牛洪濤,男,1966年出生,1990年海軍工程學院自動控製專業碩士研究生畢業。現為陸軍參謀學院基礎部計算機科學講師,專業技術少校軍銜。參加工作以來,一直專職從事對外技術開發工作,先後有多項科研成果在軍隊和地方獲獎。本文是筆者在主持研製《電力遠程抄表係統》過程中的一些體會。
******************************************
轉自GK的文章。
******************************************
實在是一篇好文,精練了很多經典書籍的精華!
特別是初學者,先背下來可以快速進階。
注意:文中理論非常正確;但你在實用中需按不同產品不同處理,千萬別形而上學地照搬,從而得到錯誤結果。
本應貼在單片機論壇,但礙於私心,放在這裏。對單片機完全適用;PLC適用部分(因為有部分廠家做了),仍然有重大意義!
歡迎大家發表不同意見。
[mp=0,0]http://www.myfrfr.com/chanson/helene.mp3[/mp]
[此貼子已經被jint於2026-04-26 06:02:43編輯過]
.