摘要:軟件抗干擾措施是硬件抗干擾措施的一個(gè)補(bǔ)充和延伸,運(yùn)用得法可以顯著提高工控系統(tǒng)的可靠性和智能,并且在一定程度上避免和減輕意外事故的發(fā)生。本文提出了實(shí)時(shí)控制軟件的自監(jiān)視法、互監(jiān)視法和常用方法等等一系列軟件抗干擾技術(shù)。
0引言
工業(yè)現(xiàn)場(chǎng)各種動(dòng)力設(shè)備在不斷地啟停運(yùn)行冒掌。使得現(xiàn)場(chǎng)環(huán)境惡劣,電磁干擾嚴(yán)重。工業(yè)控制計(jì)算機(jī)在這樣的環(huán)境里面臨著巨大的考驗(yàn)蹲盘」珊粒可以說(shuō)我們研制的工業(yè)控制系統(tǒng)能否正常運(yùn)行,并且產(chǎn)生出應(yīng)有的經(jīng)濟(jì)效益,其抗干擾能力是一個(gè)關(guān)鍵的因素。因此,除了整個(gè)系統(tǒng)的結(jié)構(gòu)和每個(gè)具體的工控機(jī)都需要仔細(xì)設(shè)計(jì)硬件抗干擾措施之外,還需要注重軟件抗干擾措施的應(yīng)用辜限。我們?cè)诙嗄甑墓I(yè)控制研究中,深感工業(yè)現(xiàn)場(chǎng)意外因素太多并且危害很大皇拣。有時(shí)一個(gè)偶然的人為或非人為干擾,例如并不很強(qiáng)烈的雷擊,就使得我們自認(rèn)為無(wú)懈可擊的硬件抗干擾措施無(wú)能為力,工控機(jī)死機(jī)了(即程序跑飛了)或者控制出錯(cuò)了(此時(shí)CPU內(nèi)部寄存器內(nèi)容被修改或者RAM和I/O口數(shù)據(jù)被修改)。這在某些重要的工業(yè)環(huán)節(jié)上將造成巨大的事故薄嫡。使用軟件抗干擾措施就可以在一定程度上避免和減輕這些意外事故的后果氧急。軟件抗干擾技術(shù)就是利用軟件運(yùn)行過(guò)程中對(duì)自己進(jìn)行自監(jiān)視,和工控網(wǎng)絡(luò)中各機(jī)器間的互監(jiān)視,來(lái)監(jiān)督和判斷工控機(jī)是否出錯(cuò)或失效的一個(gè)方法。這是工控系統(tǒng)抗干擾的最后一道屏障毫深。
1工控計(jì)算機(jī)實(shí)時(shí)控制軟件運(yùn)行過(guò)程中的自監(jiān)視法
自監(jiān)視法是工業(yè)控制計(jì)算機(jī)自己對(duì)自己的運(yùn)行狀態(tài)的監(jiān)視吩坝。
某些類型的工控機(jī)CPU內(nèi)部具有WatchdogTimer,例如INTEL8098、80198系列,就可以方便的通過(guò)設(shè)定Watchdog工作方式以及采用合適的軟件編程的配合來(lái)達(dá)到自監(jiān)視目的径以。而沒(méi)有WatchdogTimer的CPU,例如Z80姐硬、8051系列等,當(dāng)然也可以通過(guò)外加Watchdog電路,再配以軟件完成自監(jiān)視目的。這種軟硬結(jié)合的自監(jiān)視法通常是很有效的,可以大幅度提高工控機(jī)的抗干擾能力夺疹。如果Watchdog電路設(shè)計(jì)得好,并且軟件也編制得好的話,不但可以及時(shí)發(fā)現(xiàn)程序跑飛,而且還可以實(shí)現(xiàn)“跑飛”程序修復(fù)柄豹。這是最好的自監(jiān)視手段。
然而,這并不等于萬(wàn)無(wú)一失。例如,①Watchdog電路本身失效橱狗;②設(shè)置Watchdog的指令正好在取指令時(shí)被干擾而讀錯(cuò)齐梆;③Watchdog“發(fā)現(xiàn)”程序跑飛之后,其產(chǎn)生的復(fù)位脈沖或者NMI申請(qǐng)信號(hào)正好被干擾而沒(méi)奏效等等。雖然以上的導(dǎo)致Watchdog失效的因素的幾率很小,但總是存在的夭私。另一個(gè)方面,還有相當(dāng)數(shù)量的工業(yè)控制計(jì)算機(jī)沒(méi)有Watchdog電路舷咆。因此,以下重點(diǎn)討論的軟件自監(jiān)視法就勢(shì)在必行了。
1.1隨時(shí)監(jiān)督檢查程序計(jì)數(shù)器PC的值是否超出程序區(qū)
計(jì)算機(jī)正常運(yùn)行,其PC值一定在程序區(qū)內(nèi)添镜。如果PC值跑出程序區(qū),計(jì)算機(jī)肯定已發(fā)生了程序跑飛唐唉。檢查程序計(jì)數(shù)器PC值是否在程序區(qū)內(nèi)的方法,是在一個(gè)經(jīng)常要產(chǎn)生外部中斷的某個(gè)中斷服務(wù)程序中,讀取轉(zhuǎn)入該中斷時(shí)壓入堆棧的斷點(diǎn)地址。如果該地址在程序區(qū)內(nèi),則認(rèn)為PC值正常,否則一定是程序跑飛了窿锉。此時(shí),程序跳轉(zhuǎn)到機(jī)器的重啟動(dòng)入口或者復(fù)位入口,機(jī)器重新啟動(dòng)酌摇。于是機(jī)器又自救活了。如果沒(méi)有一個(gè)這樣合適的中斷源,可以專門設(shè)置一個(gè)定時(shí)中斷或者幾個(gè)定時(shí)中斷,在中斷服務(wù)程序中檢查PC值是否合法,一旦發(fā)現(xiàn)不對(duì)就立即轉(zhuǎn)入機(jī)器的重啟動(dòng)入口嗡载。定時(shí)器中斷的時(shí)間常數(shù),可視機(jī)器的繁忙程度和重要性設(shè)定,一般從幾個(gè)毫秒到幾十毫秒都可以妙痹。
這個(gè)方法的局限性是不能查出PC值在程序區(qū)內(nèi)的亂跳,即此時(shí)PC值雖受干擾卻并沒(méi)有超出程序區(qū),而是錯(cuò)位亂拼指令而構(gòu)成一些莫名其妙的操作,或者死循環(huán)。
1.2主循環(huán)程序和中斷服務(wù)程序相互監(jiān)視
每個(gè)工控機(jī)的主循環(huán)程序和中斷服務(wù)程序都有一定的運(yùn)行規(guī)律可循鼻疮。因此可以設(shè)計(jì)出主循環(huán)程序與各中斷服務(wù)程序、各中斷服務(wù)程序之間的相互監(jiān)視琳轿。每個(gè)監(jiān)視對(duì)要定義一個(gè)RAM單元,依靠對(duì)其計(jì)數(shù)/清零的方法表達(dá)相互監(jiān)視信息判沟。例如,某工控機(jī)的主循環(huán)程序循環(huán)一次最長(zhǎng)時(shí)間為80ms,它的一個(gè)定時(shí)中斷時(shí)間常數(shù)為10ms,當(dāng)我們安排該定時(shí)中斷監(jiān)視主循環(huán)程序運(yùn)行時(shí),可以每次10ms中斷對(duì)該RAM單元加1計(jì)數(shù),而主循環(huán)程序每循環(huán)一次對(duì)該RAM單元清零。因此,正常運(yùn)行時(shí),這個(gè)監(jiān)視計(jì)數(shù)RAM單元的計(jì)數(shù)值不可能≥9,如果10ms定時(shí)中斷服務(wù)程序發(fā)現(xiàn)其計(jì)數(shù)值≥9,就知道主循環(huán)程序已經(jīng)被干擾跑飛或出現(xiàn)死循環(huán),于是就跳轉(zhuǎn)到機(jī)器的重啟動(dòng)入口,重新恢復(fù)運(yùn)行崭篡。使用這個(gè)方法,如果設(shè)計(jì)得當(dāng)?shù)脑?是非常有效的挪哄。我們多年的經(jīng)驗(yàn)是:主循環(huán)程序被干擾跑飛可能性最大,中斷服務(wù)程序越短小越不易跑飛。主循環(huán)程序和中斷服務(wù)程序以及中斷服務(wù)程序之間的相互監(jiān)視,應(yīng)當(dāng)多設(shè)計(jì)幾個(gè)監(jiān)視對(duì)會(huì)更好琉闪。
1.3隨時(shí)校驗(yàn)程序代碼的正確性
工業(yè)控制計(jì)算機(jī)的實(shí)時(shí)控制程序代碼通常都采用EPROM固化運(yùn)行,一般不易發(fā)生被改寫的情況迹炼。但成年累月運(yùn)行,我們有時(shí)也會(huì)發(fā)現(xiàn)極個(gè)別的單元出錯(cuò)。其原因可能是芯片質(zhì)量問(wèn)題或者因靜電颠毙、雷擊干擾等造成的改寫斯入。程序出錯(cuò)了,將直接造成運(yùn)行錯(cuò)誤或者無(wú)法運(yùn)行。校驗(yàn)的方式可以采用累加和校驗(yàn)或者BCH校驗(yàn)(一種CRC校驗(yàn)方法)芳窟。當(dāng)采用BCH校驗(yàn)時(shí),其分組附加的冗余字節(jié)可以集中在程序區(qū)之外的某個(gè)EPROM區(qū)域里万僚。校驗(yàn)方法是在某個(gè)短小而且經(jīng)常發(fā)生的中斷服務(wù)程序內(nèi)安排一個(gè)校驗(yàn)?zāi)K,可以設(shè)計(jì)成每次循環(huán)校驗(yàn)一部分程序代碼,分若干次校驗(yàn)完成;或者當(dāng)代碼少,任務(wù)輕松時(shí)也可以一次校驗(yàn)完抬爷。如果發(fā)現(xiàn)校驗(yàn)錯(cuò),應(yīng)當(dāng)立即向工控網(wǎng)絡(luò)主站報(bào)告或者以自身報(bào)警的辦法告知操作人員,以便及時(shí)處理或祖。這個(gè)方法的局限性是被損壞的程序代碼不是校驗(yàn)程序塊,而且以該中斷還可以正常響應(yīng)為前提。由于該中斷服務(wù)程序短小,通常還是有很大的概率自監(jiān)視程序代碼的正確性留嫩。
1.4隨時(shí)校驗(yàn)RAM的正確性
RAM成年累月運(yùn)行,其質(zhì)量因素和接插件接觸因素都將導(dǎo)致其故障凰彼。這也將使控制系統(tǒng)發(fā)生錯(cuò)誤。因此需要經(jīng)常監(jiān)視RAM的正確性。監(jiān)視的辦法可以安排在主循環(huán)程序,也可以安排在某個(gè)經(jīng)常要發(fā)生的中斷服務(wù)程序里葛昏。分幾次或者全部一次對(duì)RAM進(jìn)行檢查蜈藏。檢查的方法是先把被檢查的RAM單元的內(nèi)容讀出,存放在某個(gè)通用寄存器里,然后對(duì)該單元寫入一個(gè)特定碼,再讀出比較,如果不正確就說(shuō)明該單元可能損壞,此時(shí)要及時(shí)報(bào)告工控網(wǎng)絡(luò)主站或者自身報(bào)警,提醒操作人員處理。這個(gè)寫入的特定碼常用的是55H-AAH法,即寫入55H,再讀出比較,如果正確,再寫入AAH,再讀出比較,該組碼對(duì)每bit都有“0”明青、“1”寫入讀出檢驗(yàn),如果不正確時(shí),最好再驗(yàn)證兩次才肯定校驗(yàn)結(jié)果蓝垢。不管該單元是否有錯(cuò),校驗(yàn)之后都應(yīng)還回它的原始數(shù)據(jù),再報(bào)警或往下操作。使用這個(gè)方法要注意處理好各個(gè)中斷源的級(jí)別關(guān)系!
2實(shí)時(shí)控制系統(tǒng)的互監(jiān)視法一個(gè)分布式工控網(wǎng)絡(luò)或者重要環(huán)節(jié)的雙機(jī)熱備份運(yùn)行,都可以構(gòu)成軟件抗干擾的互監(jiān)視法女责。
主從式的工控網(wǎng),主站和從站可以相互監(jiān)視運(yùn)行狀況,環(huán)形網(wǎng)的相鄰站或者全部站也都可以相互監(jiān)視運(yùn)行狀況,雙機(jī)熱備份運(yùn)行的兩工控機(jī),更應(yīng)該相互監(jiān)視漆枚。對(duì)于網(wǎng)絡(luò)型的各站間的相互監(jiān)視,主要是定時(shí)互相詢問(wèn)和按要求回答,如果沒(méi)有按要求回答,則表示該站可能出問(wèn)題(當(dāng)然也可能是網(wǎng)絡(luò)通信出問(wèn)題),操作人員應(yīng)及時(shí)前往處理。最簡(jiǎn)單的詢問(wèn)和回答碼的設(shè)計(jì)是詢問(wèn)方發(fā)出一組數(shù)字,回答方經(jīng)過(guò)某種簡(jiǎn)單運(yùn)算,例如求反,再發(fā)回詢問(wèn)方抵知。這種相互監(jiān)視法可檢驗(yàn)被詢站是否死機(jī)以及校驗(yàn)通信網(wǎng)絡(luò)完好與否墙基。而重要環(huán)節(jié)的雙機(jī)熱備份運(yùn)行的相互監(jiān)視則可做得很深入,除了這種詢問(wèn)回答方式之外,還應(yīng)做到控制量是否正常的相互監(jiān)視,發(fā)現(xiàn)問(wèn)題應(yīng)當(dāng)及時(shí)報(bào)警,通知值班人員處理。
3其它常采用的軟件抗干擾方法
3.1廣布陷井法
以上論述的自監(jiān)視法和互監(jiān)視法都是建立在工控機(jī)能正確運(yùn)行全部或部分程序的基礎(chǔ)上的刷喜。有時(shí)一個(gè)意想不到的干擾,破壞了中斷和所有程序的正常運(yùn)行残制。此時(shí)PC值可能在程序區(qū)內(nèi),也可能在程序區(qū)之外,要使其能夠自恢復(fù)正常運(yùn)行,只有依賴于廣布“陷井”的絕招了。
這里所謂的“陷井”,是指某些類型的CPU提供給用戶使用的軟中斷指令或者復(fù)位指令掖疮。例如,Z80指令RST38H,其機(jī)器碼為FFH初茶。CPU執(zhí)行該指令時(shí),則將當(dāng)前程序計(jì)數(shù)器PC的值壓入堆棧,然后轉(zhuǎn)到0038H地址執(zhí)行程序。如果把0038H作為一個(gè)重啟動(dòng)入口,則機(jī)器就可以恢復(fù)新的工作了浊闪。再例如,INTEL8098恼布、80198系列的復(fù)位指令RST,機(jī)器碼也為FFH。CPU執(zhí)行該指令時(shí),其內(nèi)部進(jìn)行復(fù)位操作,然后從2080H開(kāi)始執(zhí)行程序搁宾。當(dāng)然,80198系列還有更多的非法操作碼可作為陷井指令使用,這時(shí)只需要在2012H的一個(gè)字的中斷矢量單元里安排中斷入口,并且編制一個(gè)處理非法操作碼的中斷服務(wù)程序,一遇非法操作碼就能進(jìn)行故障處理折汞。作者多年的經(jīng)驗(yàn)表明,陷井不但需要在ROM的全部非內(nèi)容區(qū)、RAM的全部非數(shù)據(jù)區(qū)設(shè)置,而且在程序區(qū)內(nèi)的模塊之間廣泛布置使谋。一旦機(jī)器程序跑飛,總會(huì)碰上陷井,立即就可以振救活機(jī)器了整诈。
3.2重復(fù)功能設(shè)定法
工控機(jī)的很多功能的設(shè)定,通常都是在主程序開(kāi)始時(shí)的初始化程序里設(shè)定的,以后再也不去設(shè)定了。這在正常情況下本無(wú)問(wèn)題度攘。但偶然的干擾會(huì)改變CPU內(nèi)部的這些寄存器或者接口芯片的功能寄存器,例如,把中斷的類型恒晋、中斷的優(yōu)先級(jí)別、串行口嘱杆、并行口的設(shè)定修改了,機(jī)器的運(yùn)行肯定會(huì)出錯(cuò),因此,只要重復(fù)設(shè)定功能操作不影響其當(dāng)前連續(xù)工作的性能,都應(yīng)當(dāng)納入主程序的循環(huán)圈里铅夷。每個(gè)循環(huán)就可以刷新一次設(shè)定,避免了偶然不測(cè)發(fā)生。對(duì)于那些重復(fù)設(shè)定功能操作會(huì)影響當(dāng)前連續(xù)工作性能的,要盡量想法找機(jī)會(huì)重新設(shè)定寂疏。例如串行口,如果接收完某幀信息或者發(fā)送完某幀信息之后,串口會(huì)有一個(gè)短暫的空閑時(shí),就應(yīng)作出判斷并且安排重新設(shè)定一次的操作场暮。
3.3重要數(shù)據(jù)備份法
工控機(jī)中的一些關(guān)鍵數(shù)據(jù),應(yīng)當(dāng)有至少有兩個(gè)以上的備份副本,當(dāng)操作這些數(shù)據(jù)時(shí),可以把主、副本進(jìn)行比較,如其改變,就要分析原因,采取預(yù)先設(shè)計(jì)好的方法處理忱徙。還可以把重要數(shù)據(jù)采用校驗(yàn)和或者分組BCH校驗(yàn)的方法進(jìn)行校驗(yàn)迁枪。這兩種方法一并使用則更可靠难圣。
4結(jié)束語(yǔ)
軟件抗干擾的內(nèi)容還有很多,例如,檢測(cè)量的數(shù)字濾波、壞值剔除冲肖;人工控制指令的合法性和輸入設(shè)定值的合法性判別等等,這些都是一個(gè)完善的工業(yè)控制系統(tǒng)必不可少的们豌。
工業(yè)控制是計(jì)算機(jī)的最重要的應(yīng)用領(lǐng)域,也是計(jì)算機(jī)的最艱難的應(yīng)用環(huán)境。我從多年來(lái)的研究經(jīng)驗(yàn)認(rèn)為:工業(yè)控制計(jì)算機(jī)的抗干擾性能根本在硬件結(jié)構(gòu),軟件抗干擾只是一個(gè)補(bǔ)充浅妆。硬件的設(shè)計(jì)應(yīng)當(dāng)盡可能的完善,不能輕易降低標(biāo)準(zhǔn),讓軟件去補(bǔ)救!而軟件的編制則要處處考慮到硬件可能的失效,可能受到的干擾等種種問(wèn)題,在保證實(shí)時(shí)性望迎、控制精度和控制功能的前提下,盡力提高系統(tǒng)的抗干擾性能。要考慮得很細(xì)致,努力賦予軟件高度的智能凌外。這樣,軟件才是完美的辩尊。把硬件和軟件有機(jī)的結(jié)合起來(lái),一個(gè)經(jīng)得起長(zhǎng)期現(xiàn)場(chǎng)考驗(yàn)的盡可能完善的工業(yè)控制系統(tǒng)才能實(shí)現(xiàn)。
聲明:本網(wǎng)站所收集的部分公開(kāi)資料來(lái)源于互聯(lián)網(wǎng)康辑,轉(zhuǎn)載的目的在于傳遞更多信息及用于網(wǎng)絡(luò)分享摄欲,并不代表本站贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé),也不構(gòu)成任何其他建議疮薇。本站部分作品是由網(wǎng)友自主投稿和發(fā)布胸墙、編輯整理上傳,對(duì)此類作品本站僅提供交流平臺(tái)按咒,不為其版權(quán)負(fù)責(zé)迟隅。如果您發(fā)現(xiàn)網(wǎng)站上所用視頻、圖片励七、文字如涉及作品版權(quán)問(wèn)題玻淑,請(qǐng)第一時(shí)間告知,我們將根據(jù)您提供的證明材料確認(rèn)版權(quán)并按國(guó)家標(biāo)準(zhǔn)支付稿酬或立即刪除內(nèi)容茎冒,以保證您的權(quán)益!聯(lián)系電話:010-58612588 或 Email:editor@mmsonline.com.cn吆律。
- 暫無(wú)反饋
編輯推薦
- 2025新年特刊:打造新質(zhì)生產(chǎn)力饿这,智啟未來(lái)新篇章
- 定義制造業(yè)未來(lái)的數(shù)控加工中心技術(shù)專題
- 航空航天及交通領(lǐng)域先進(jìn)制造技術(shù)應(yīng)用專題
- 解碼消費(fèi)電子產(chǎn)品生產(chǎn)的數(shù)字化之路技術(shù)專題
- 精密智能機(jī)床撞秋,助力制造升級(jí)技術(shù)專題
- 汽車輕量化驅(qū)動(dòng)下的零部件加工應(yīng)用專題
- 高性能銑刀實(shí)現(xiàn)高精加工生產(chǎn)技術(shù)專題
- 航空航天發(fā)動(dòng)機(jī)解決方案專題
- 高效齒輪加工生產(chǎn)技術(shù)方案專題
- 金屬加工液的性能不止?jié)櫥夹g(shù)應(yīng)用專題