工控軟件的抗幹擾設計
牛洪濤
中國人民解放軍 陸軍參謀學院基礎部
摘 要:本文闡述了工業現場環境中幹擾的特點,並詳細介紹了工控軟件抗幹擾設計的方法。
關鍵詞:工控軟件、抗幹擾、可靠性
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
計ji算suan機ji係xi統tong在zai工gong業ye現xian場chang使shi用yong時shi,大da量liang的de幹gan擾rao源yuan雖sui不bu能neng造zao成cheng硬ying件jian係xi統tong的de損sun壞huai,但dan常chang常chang使shi計ji算suan機ji係xi統tong不bu能neng正zheng常chang運yun行xing,致zhi使shi控kong製zhi失shi靈ling,造zao成cheng重zhong大da事shi故gu。計ji算suan機ji係xi統tong的de抗kang幹gan擾rao不bu可ke能neng完wan全quan依yi靠kao硬ying件jian解jie決jue,因yin此ci,軟ruan件jian抗kang幹gan擾rao問wen題ti的de研yan究jiu愈yu來lai愈yu引yin起qi人ren們men的de重zhong視shi。
一、工控軟件的結構特點及幹擾途徑
在不同的工業控製係統中,工控軟件雖然完成的功能不同,但就其結構來說,一般具有如下特點:
實時性:工業控製係統中有些事件的發生具有隨機性,要求工控軟件能夠及時地處理隨機事件。
周期性:工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.設置監視跟蹤定時器
shiyongdingshizhongduanlaijianshichengxuyunxingzhuangtai。dingshiqidedingshishijianshaodayuzhuchengxuzhengchangyunxingyigexunhuandeshijian,zaizhuchengxuyunxingguochengzhongzhixingyicidingshiqishijianchangshushuaxincaozuo。zheyang,zhiyaochengxuzhengchangyunxing,dingshiqibuhuichuxiandingshizhongduan。erdangchengxuyunxingshichang,bunengjishishuaxindingshiqishijianchangshuerdaozhidingshizhongduan,liyongdingshizhongduanfuwuchengxujiangxitongfuwei。zai8031應用係統中作為軟件抗幹擾的一個事例,具體做法是:
使用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資源被該服務程序長期占用,而不釋放,其它任務程序無法執行,使整個係統出現“死鎖”。對這種幹擾造成的“死鎖”問題,在軟件編程中,可采用“時間片”的方法來解決。其具體步驟為:
根據不同的輸入/輸出外設對時間的要求,分配相應的最大正常的輸入/輸出時間。
在每一輸入/輸出的任務模塊中,加入相應的超時判斷程序。這樣當幹擾破壞了接口的狀態造成CPU誤wu操cao作zuo後hou,由you於yu該gai外wai設she準zhun備bei好hao信xin息xi長chang期qi無wu效xiao,經jing一yi定ding時shi間jian後hou,係xi統tong會hui從cong該gai外wai設she的de服fu務wu程cheng序xu中zhong自zi動dong返fan回hui,保bao證zheng整zheng個ge軟ruan件jian的de周zhou期qi性xing不bu受shou影ying響xiang,從cong而er避bi免mian“死鎖”情況的發生。
四、數據采集誤差的軟件對策
根gen據ju數shu據ju受shou幹gan擾rao性xing質zhi及ji幹gan擾rao後hou果guo的de不bu同tong,采cai取qu的de軟ruan件jian對dui策ce各ge不bu相xiang同tong,沒mei有you固gu定ding的de模mo式shi。對dui於yu實shi時shi數shu據ju采cai集ji係xi統tong,為wei了le消xiao除chu傳chuan感gan器qi通tong道dao中zhong的de幹gan擾rao信xin號hao,在zai硬ying件jian措cuo施shi上shang常chang采cai取qu有you源yuan或huo無wu源yuanRLC網絡,構成模擬濾波器對信號實現頻率濾波。同樣,運用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.算術平均值法
對(dui)於(yu)一(yi)點(dian)數(shu)據(ju)連(lian)續(xu)采(cai)樣(yang)多(duo)次(ci),計(ji)算(suan)其(qi)算(suan)術(shu)平(ping)均(jun)值(zhi),以(yi)其(qi)平(ping)均(jun)值(zhi)作(zuo)為(wei)該(gai)點(dian)采(cai)樣(yang)結(jie)果(guo)。這(zhe)種(zhong)方(fang)法(fa)可(ke)以(yi)減(jian)少(shao)係(xi)統(tong)的(de)隨(sui)機(ji)幹(gan)擾(rao)對(dui)采(cai)集(ji)結(jie)果(guo)的(de)影(ying)響(xiang)。一(yi)般(ban)3~5次平均即可。
2.比較取舍法
當dang控kong製zhi係xi統tong測ce量liang結jie果guo的de個ge別bie數shu據ju存cun在zai偏pian差cha時shi,為wei了le剔ti除chu個ge別bie錯cuo誤wu數shu據ju,可ke采cai用yong比bi較jiao取qu舍she法fa,即ji對dui每mei個ge采cai樣yang點dian連lian續xu采cai樣yang幾ji次ci,根gen據ju所suo采cai數shu據ju的de變bian化hua規gui律lv,確que定ding取qu舍she,從cong而er剔ti除chu偏pian差cha數shu據ju。例li如ru,“采三取二”即對每個采樣點連續采樣三次,取兩次相同的數據為采樣結果。
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“校驗法”和“設標法”。zheliangzhongfangfageyouqianqiu,xiaoyanfabijiaofansuo,danzhacuodekexindugao。shebiaofajiandan,danduishujubiaozhonggebieshujuchonghuideqingkuang,zhacuozewunanweili。zaibianchengzhongyibanyingzongheshiyong,qijutizuofawei:
* 將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 09:16:31編輯過]
.