技術(shù)頻道

      工控軟件的抗干擾設(shè)計(jì)

      軟件抗干擾問(wèn)題的研究愈來(lái)愈引起人們的重視。
      一、工控軟件的結(jié)構(gòu)特點(diǎn)及干擾途徑
      在不同的工業(yè)控制系統(tǒng)中,工控軟件雖然完成的功能不同,但就其結(jié)構(gòu)來(lái)說(shuō),一般具有如下特點(diǎn):
      * 實(shí)時(shí)性:工業(yè)控制系統(tǒng)中有些事件的發(fā)生具有隨機(jī)性,要求工控軟件能夠及時(shí)地處理隨機(jī)事件。
      * 周期性:工控軟件在完成系統(tǒng)的初始化工作后,隨之進(jìn)入主程序循環(huán)。在執(zhí)行主程序過(guò)程中,如有中斷申請(qǐng),則在執(zhí)行完相應(yīng)的中斷服務(wù)程序后,繼續(xù)主程序循環(huán)。
      * 相關(guān)性:工控軟件由多個(gè)任務(wù)模塊組成,各模塊配合工作,相互關(guān)聯(lián),相互依存。
      * 人為性:工控軟件允許操作人員干預(yù)系統(tǒng)的運(yùn)行,調(diào)整系統(tǒng)的工作參數(shù)。
      在理想情況下,工控軟件可以正常執(zhí)行。但在工業(yè)現(xiàn)場(chǎng)環(huán)境的干擾下,工控軟件的周期性、相關(guān)性及實(shí)時(shí)性受到破壞,程序無(wú)法正常執(zhí)行,導(dǎo)致工業(yè)控制系統(tǒng)的失控,其表現(xiàn)是:
      * 程序計(jì)數(shù)器PC值發(fā)生變化,破壞了程序的正常運(yùn)行。PC值被干擾后的數(shù)據(jù)是隨機(jī)的,因此引起程序執(zhí)行混亂,在PC值的錯(cuò)誤引導(dǎo)下,程序執(zhí)行一系列毫無(wú)意義的指令,最后常常進(jìn)入一個(gè)毫無(wú)意義的“死循環(huán)”中,使系統(tǒng)失去控制。
      * 輸入/輸出接口狀態(tài)受到干擾,破壞了工控軟件的相關(guān)性和周期性,造成系統(tǒng)資源被某個(gè)任務(wù)模塊獨(dú)占,使系統(tǒng)發(fā)生“死鎖”。
      * 數(shù)據(jù)采集誤差加大。干擾侵入系統(tǒng)的前向通道,疊加在信號(hào)上,導(dǎo)致數(shù)據(jù)采集誤差加大。特別是當(dāng)前向通道的傳感器接口是小電壓信號(hào)輸入時(shí),此現(xiàn)象更加嚴(yán)重。
      * RAM數(shù)據(jù)區(qū)受到干擾發(fā)生變化。根據(jù)干擾竄入渠道、受干擾數(shù)據(jù)性質(zhì)的不同,系統(tǒng)受損壞的狀況不同,有的造成數(shù)值誤差,有的使控制失靈,有的改變程序狀態(tài),有的改變某些部件(如定時(shí)器/計(jì)數(shù)器、串行口等)的工作狀態(tài)等。筆者在研制電力遠(yuǎn)程抄表系統(tǒng)時(shí)就曾遇到因現(xiàn)場(chǎng)強(qiáng)電磁干擾而造成RAM數(shù)據(jù)經(jīng)常性被破壞的情況。
      * 控制狀態(tài)失靈。在工業(yè)控制系統(tǒng)中,控制狀態(tài)的輸出常常是依據(jù)某些條件狀態(tài)的輸入和條件狀態(tài)的邏輯處理結(jié)果而定。在這些環(huán)節(jié)中,由于干擾的侵入,會(huì)造成條件狀態(tài)錯(cuò)誤,致使輸出控制誤差加大,甚至控制失常。
      二、程序運(yùn)行失常的軟件對(duì)策
      系統(tǒng)受到干擾侵害致使PC值改變,造成程序運(yùn)行失常。對(duì)于程序運(yùn)行失常的軟件對(duì)策主要是發(fā)現(xiàn)失常狀態(tài)后及時(shí)引導(dǎo)系統(tǒng)恢復(fù)原始狀態(tài)。
      1.設(shè)置監(jiān)視跟蹤定時(shí)器
      使用定時(shí)中斷來(lái)監(jiān)視程序運(yùn)行狀態(tài)。定時(shí)器的定時(shí)時(shí)間稍大于主程序正常運(yùn)行一個(gè)循環(huán)的時(shí)間,在主程序運(yùn)行過(guò)程中執(zhí)行一次定時(shí)器時(shí)間常數(shù)刷新操作。這樣,只要程序正常運(yùn)行,定時(shí)器不會(huì)出現(xiàn)定時(shí)中斷。而當(dāng)程序運(yùn)行失常,不能及時(shí)刷新定時(shí)器時(shí)間常數(shù)而導(dǎo)致定時(shí)中斷,利用定時(shí)中斷服務(wù)程序?qū)⑾到y(tǒng)復(fù)位。在8031應(yīng)用系統(tǒng)中作為軟件抗干擾的一個(gè)事例,具體做法是:
      * 使用8155的定時(shí)器所產(chǎn)生的“溢出”信號(hào)作為8031的外部中斷源INT1。用555定時(shí)器作為8155中定時(shí)器的外部時(shí)鐘輸入;
      * 8155定時(shí)器的定時(shí)值稍大于主程序的正常循環(huán)時(shí)間;
      * 在主程序中,每循環(huán)一次,對(duì)8155定時(shí)器的定時(shí)常數(shù)進(jìn)行刷新;
      * 在主控程序開(kāi)始處,對(duì)硬件復(fù)位還是定時(shí)中斷產(chǎn)生的自動(dòng)恢復(fù)進(jìn)行分類(lèi)判斷處理。
      2.設(shè)置軟件陷井
      當(dāng)PC失控,造成程序“亂飛”而不斷進(jìn)入非程序區(qū),只要在非程序區(qū)設(shè)置攔截措施,使程序進(jìn)入陷井,然后強(qiáng)迫使程序進(jìn)入初始狀態(tài)。例如Z80指令系統(tǒng)中數(shù)據(jù)FFH正好對(duì)應(yīng)為重新起動(dòng)指令RST 56,該指令使程序自動(dòng)轉(zhuǎn)入0038H入口地址。因此,在Z80 CPU構(gòu)成的應(yīng)用系統(tǒng)中,只要將所有非程序區(qū)全部置成FFH用以攔截失控程序。并在0038H處設(shè)置轉(zhuǎn)移指令,使程序轉(zhuǎn)至抗干擾處理程序。
      三、系統(tǒng)“死鎖”的軟件對(duì)策
      在工業(yè)控制系統(tǒng)中,A/D、D/A,顯示等輸入/輸出接口電路是必不可少的。這些接口與CPU之間采用查詢(xún)或中斷方式工作,而這些設(shè)備或接口對(duì)干擾很敏感,干擾信號(hào)一旦破壞了某一接口的狀態(tài)字后,就會(huì)導(dǎo)致CPU誤認(rèn)為該接口有輸入/輸出請(qǐng)求而停止現(xiàn)行工作,轉(zhuǎn)去執(zhí)行相應(yīng)的輸入/輸出服務(wù)程序。但由于該接口本身并沒(méi)有輸入/輸出數(shù)據(jù),從而使CPU資源被該服務(wù)程序長(zhǎng)期占用,而不釋放,其它任務(wù)程序無(wú)法執(zhí)行,使整個(gè)系統(tǒng)出現(xiàn)“死鎖”。對(duì)這種干擾造成的“死鎖”問(wèn)題,在軟件編程中,可采用“時(shí)間片”的方法來(lái)解決。其具體步驟為:
      * 根據(jù)不同的輸入/輸出外設(shè)對(duì)時(shí)間的要求,分配相應(yīng)的最大正常的輸入/輸出時(shí)間。
      * 在每一輸入/輸出的任務(wù)模塊中,加入相應(yīng)的超時(shí)判斷程序。這樣當(dāng)干擾破壞了接口的狀態(tài)造成CPU誤操作后,由于該外設(shè)準(zhǔn)備好信息長(zhǎng)期無(wú)效,經(jīng)一定時(shí)間后,系統(tǒng)會(huì)從該外設(shè)的服務(wù)程序中自動(dòng)返回,保證整個(gè)軟件的周期性不受影響,從而避免“死鎖”情況的發(fā)生。
      四、數(shù)據(jù)采集誤差的軟件對(duì)策
      根據(jù)數(shù)據(jù)受干擾性質(zhì)及干擾后果的不同,采取的軟件對(duì)策各不相同,沒(méi)有固定的模式。對(duì)于實(shí)時(shí)數(shù)據(jù)采集系統(tǒng),為了消除傳感器通道中的干擾信號(hào),在硬件措施上常采取有源或無(wú)源RLC網(wǎng)絡(luò),構(gòu)成模擬濾波器對(duì)信號(hào)實(shí)現(xiàn)頻率濾波。同樣,運(yùn)用CPU的運(yùn)算、控制功能也可以實(shí)現(xiàn)頻率濾波,完成模擬濾波器類(lèi)似的功能,這就是數(shù)字濾波。在許多數(shù)字信號(hào)處理專(zhuān)著中都有專(zhuān)門(mén)論述,可以參考。隨著計(jì)算機(jī)運(yùn)算速度的提高,數(shù)字濾波在實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)中的應(yīng)用將愈來(lái)愈廣。
      在一般數(shù)據(jù)采集系統(tǒng)中,可以采用一些簡(jiǎn)單的數(shù)值、邏輯運(yùn)算處理來(lái)達(dá)到濾波的效果。下面介紹幾種常用的方法。
      1.算術(shù)平均值法
      對(duì)于一點(diǎn)數(shù)據(jù)連續(xù)采樣多次,計(jì)算其算術(shù)平均值,以其平均值作為該點(diǎn)采樣結(jié)果。
      這種方法可以減少系統(tǒng)的隨機(jī)干擾對(duì)采集結(jié)果的影響。一般3~5次平均即可。
      2.比較取舍法
      當(dāng)控制系統(tǒng)測(cè)量結(jié)果的個(gè)別數(shù)據(jù)存在偏差時(shí),為了剔除個(gè)別錯(cuò)誤數(shù)據(jù),可采用比較取舍法,即對(duì)每個(gè)采樣點(diǎn)連續(xù)采樣幾次,根據(jù)所采數(shù)據(jù)的變化規(guī)律,確定取舍,從而剔除偏差數(shù)據(jù)。例如,“采三取二”即對(duì)每個(gè)采樣點(diǎn)連續(xù)采樣三次,取兩次相同的數(shù)據(jù)為采樣結(jié)果。
      3.中值法
      根據(jù)干擾造成采樣數(shù)據(jù)偏大或偏小的情況,對(duì)一個(gè)采樣點(diǎn)連續(xù)采集多個(gè)信號(hào),并對(duì)這些采樣值進(jìn)行比較,取中值作為該點(diǎn)的采樣結(jié)果。
      4.一階遞推數(shù)字濾波法
      這種方法是利用軟件完成RC低通濾波器的算法,實(shí)現(xiàn)用軟件方法代替硬件RC濾波器。一階遞推數(shù)字濾波公式為Yn=QXn+(1-Q)Yn-1
      式中Q -數(shù)字濾波器時(shí)間常數(shù);
      Xn-第n次采樣時(shí)的濾波器輸入;
      Yn-第n次采樣時(shí)的濾波器輸出。
      采用軟件濾波器對(duì)消除數(shù)據(jù)采集中的誤差可以獲得滿(mǎn)意的效果。但應(yīng)注意,選取何種方法應(yīng)根據(jù)信號(hào)的變化規(guī)律選擇。
      五、RAM數(shù)據(jù)出錯(cuò)的軟件對(duì)策
      在實(shí)時(shí)控制過(guò)程中,干擾造成比較嚴(yán)重的危害之一就是沖毀RAM中的數(shù)據(jù),由于RAM中保存的是各種原始數(shù)據(jù)、標(biāo)志、變量等,如果被破壞,會(huì)造成系統(tǒng)出錯(cuò)或無(wú)法運(yùn)行,根據(jù)數(shù)據(jù)被沖毀的程度,一般可分為三類(lèi):
      * 整個(gè)RAM數(shù)據(jù)被沖毀;
      * RAM中某片數(shù)據(jù)被沖毀;
      * 個(gè)別數(shù)據(jù)被沖毀。
      在工業(yè)控制系統(tǒng)中,RAM的大部分內(nèi)容是為了進(jìn)行分析、比較而臨時(shí)存放的,不允許丟失的數(shù)據(jù)只占極少部分。在這種情況下,除了這些不允許丟失的數(shù)據(jù)外,其余大部分內(nèi)容允許短時(shí)間被破壞,最多只引起系統(tǒng)的一個(gè)很短時(shí)間的波動(dòng),很快能自動(dòng)恢復(fù)正常。因此,在工控軟件中,只要注意對(duì)少數(shù)不允許丟失的數(shù)據(jù)保護(hù),一般常用的方法有“校驗(yàn)法” 和“設(shè)標(biāo)法”。這兩種方法各有千秋,校驗(yàn)法比較繁鎖,但查錯(cuò)的可信度高。設(shè)標(biāo)法簡(jiǎn)單,但對(duì)數(shù)據(jù)表中個(gè)別數(shù)據(jù)沖毀的情況,查錯(cuò)則無(wú)難為力。在編程中一般應(yīng)綜合使用,其具體做法為:
      * 將RAM工作區(qū)重要區(qū)域的始端和尾端各設(shè)置一個(gè)標(biāo)志碼“0” 或“1”;
      * 對(duì)RAM中固定不變的數(shù)據(jù)表格設(shè)置校驗(yàn)字。
      在程序的執(zhí)行過(guò)程中,每隔一定的時(shí)間通過(guò)事先設(shè)計(jì)的查錯(cuò)程序來(lái)檢查其各標(biāo)志碼是否正常,如果不正常,則利用數(shù)據(jù)冗余技術(shù)通過(guò)抗干擾處理程序來(lái)進(jìn)行修正;冗余數(shù)據(jù)表的一般設(shè)計(jì)原則是:
      * 各數(shù)據(jù)表應(yīng)相互遠(yuǎn)離分散設(shè)置,減少冗余數(shù)據(jù)同時(shí)被沖毀的概率。
      * 數(shù)據(jù)表應(yīng)盡可能遠(yuǎn)離棧區(qū),減少由于操作錯(cuò)誤造堆棧被成數(shù)據(jù)沖的可能 。
      上述對(duì)RAM區(qū)域的恢復(fù)處理方法,在不同的應(yīng)用系統(tǒng)中應(yīng)根據(jù)的具體情況進(jìn)行取舍。
      六、控制狀態(tài)失常的軟件對(duì)策
      在條件控制系統(tǒng)中,人們關(guān)注的問(wèn)題是能否確保正常的控制狀態(tài)。如果干擾進(jìn)入系統(tǒng),會(huì)影響各種控制條件、造成控制輸出失誤。為了確保系統(tǒng)安全可以采取下述軟件抗干擾措施:
      1.軟件冗余
      對(duì)于條件控制系統(tǒng),將控制條件的一次采樣、處理控制輸出,改為循環(huán)采樣、處理控制輸出。這種方法具有良好的抗偶然因素干擾作用。
      2.設(shè)置當(dāng)前輸出狀態(tài)寄存單元
      當(dāng)干擾侵入輸出通道造成輸出狀態(tài)破壞時(shí),系統(tǒng)可以及時(shí)查詢(xún)當(dāng)前輸出狀態(tài)寄存單元的輸出狀態(tài)信息,及時(shí)糾正錯(cuò)誤的輸出狀態(tài)。
      3.設(shè)置自檢程序
      在計(jì)算機(jī)系統(tǒng)內(nèi)的特定部位或某些內(nèi)存單元設(shè)狀態(tài)標(biāo)志,在運(yùn)行中不斷循環(huán)測(cè)試,以保證系統(tǒng)中信息存儲(chǔ)、傳輸、運(yùn)算的高可*性。
      上述介紹的幾種有關(guān)工控軟件的抗干擾編程方法是筆者在工作實(shí)踐中的體會(huì)。在設(shè)計(jì)工控軟件的過(guò)程中只要采取相應(yīng)的抗干擾措施,就可獲得較好的抗干擾效果。

      文章版權(quán)歸西部工控xbgk所有,未經(jīng)許可不得轉(zhuǎn)載。

      主站蜘蛛池模板: 97se色综合一区二区二区| 在线成人一区二区| 99久久精品国产高清一区二区| 国产在线观看一区二区三区四区 | 老鸭窝毛片一区二区三区| 无码人妻一区二区三区av| 日韩久久精品一区二区三区| 国产麻豆剧果冻传媒一区| 国产精品男男视频一区二区三区| 中文字幕精品亚洲无线码一区应用| 国产精品丝袜一区二区三区 | 蜜桃视频一区二区| 国精产品一区一区三区| 免费无码一区二区三区| 在线观看国产一区亚洲bd| 中文字幕一区二区三区在线不卡| 亚洲综合无码一区二区三区| 国产一区二区在线视频播放| 伊人精品视频一区二区三区| 精品人无码一区二区三区| 国产一区二区好的精华液| 韩日午夜在线资源一区二区| 亚洲日韩AV一区二区三区中文| 爆乳熟妇一区二区三区| 国产成人精品日本亚洲专一区| 精品一区二区三区影院在线午夜| 国产av一区二区三区日韩| 国产在线一区二区杨幂| 久久久久99人妻一区二区三区| 日本免费电影一区| 亚洲一区二区三区在线| 本免费AV无码专区一区| 亚洲综合激情五月色一区| 日本精品高清一区二区| 精品人妻无码一区二区色欲产成人| 精品人妻一区二区三区毛片| bt7086福利一区国产| 国产精品视频一区二区噜噜 | 中文字幕精品一区二区三区视频| 亚洲一区二区三区成人网站| 日本一区二区在线|