摘要:微機(jī)系統(tǒng)在作業(yè)現(xiàn)場(chǎng)可能遇到各種干擾和自身的隨機(jī)性故障,現(xiàn)場(chǎng)惡劣的環(huán)境也有可能使計(jì)算機(jī)系統(tǒng)發(fā)生異常,甚至釀成嚴(yán)重事故。為此,在提高硬件系統(tǒng)抗干擾能力的同時(shí),必須利用軟件抗干擾方法保證計(jì)算機(jī)系統(tǒng)在錯(cuò)綜復(fù)雜的環(huán)境里穩(wěn)定運(yùn)行,以提高微機(jī)測(cè)控系統(tǒng)的可靠性。
關(guān)鍵詞:微型計(jì)算機(jī);軟件系統(tǒng);抗干擾方法;可靠性
0引言
抗干擾技術(shù)貫穿于微機(jī)測(cè)控系統(tǒng)的設(shè)計(jì)、制造、安裝以及運(yùn)行各個(gè)階段。由于系統(tǒng)作業(yè)環(huán)境復(fù)雜,在設(shè)計(jì)和開發(fā)微機(jī)系統(tǒng)時(shí),一般難以周全地預(yù)計(jì)系統(tǒng)在實(shí)際工業(yè)現(xiàn)場(chǎng)中可能遇到的干擾和自身的隨機(jī)性故障。因此,在提高硬件系統(tǒng)抗干擾能力的同時(shí),利用軟件設(shè)計(jì)靈活、節(jié)省硬件資源的特點(diǎn),來(lái)提高微機(jī)測(cè)控系統(tǒng)的可靠性顯得非常重要。
1軟件抗干擾方法的研究
可靠性設(shè)計(jì)是一項(xiàng)系統(tǒng)工程,必須從硬件、軟件以及結(jié)構(gòu)設(shè)計(jì)等方面全面考慮。硬件系統(tǒng)的可靠性是微機(jī)系統(tǒng)可靠性的根本,而軟件系統(tǒng)的可靠性設(shè)計(jì)可以起到抑制外來(lái)干擾,增強(qiáng)系統(tǒng)自身抗干擾能力的作用。通過(guò)軟件系統(tǒng)的可靠性設(shè)計(jì),能夠最大限度地降低干擾對(duì)系統(tǒng)工作的影響,確保測(cè)控系統(tǒng)及時(shí)發(fā)現(xiàn)因干擾導(dǎo)致程序出現(xiàn)的錯(cuò)誤,并使系統(tǒng)恢復(fù)到正常工作狀態(tài)或者及時(shí)報(bào)警。實(shí)踐中,軟件抗干擾的主要手段是:消除模擬輸入信號(hào)的噪聲;程序運(yùn)行混亂時(shí)使程序重入正軌。
1.1數(shù)字濾波
抑制疊加在模擬輸入信號(hào)上的噪聲,要多采取數(shù)字濾波技術(shù)。數(shù)字濾波是通過(guò)一定的方法計(jì)算或判斷程序減少疊加在有用信號(hào)中的噪聲干擾比重,從而提高系統(tǒng)采集信號(hào)的質(zhì)量。數(shù)字濾波通常采用的方法有:中值濾波法、算術(shù)平均值法、防脈沖干擾平均值法、一階遞推數(shù)字濾波法。利用程序?qū)崿F(xiàn)RC低通濾波,對(duì)周期性干擾和頻率較高的隨機(jī)干擾的濾波效果較好。當(dāng)然,在程序中采用多重濾波算法,效果更佳,此時(shí)軟件開發(fā)者應(yīng)在算法復(fù)雜性、數(shù)值處理精度、采樣實(shí)時(shí)性等幾方面綜合考慮。工程實(shí)踐中,考慮到多數(shù)輸入干擾信號(hào)呈毛刺狀,作用時(shí)間短,可采用輸入多次采樣確認(rèn)的方法進(jìn)行濾波,即對(duì)輸入信號(hào)進(jìn)行采樣,必須連續(xù)多次輸入相同才有效。
1.2軟件攔截技術(shù)
所謂攔截,是指將亂飛的程序引向指定位置,再進(jìn)行出錯(cuò)處理。CPU復(fù)位后,首先取指令的操作碼,之后順序取出操作數(shù),當(dāng)一條完整指令執(zhí)行完成后,緊接著取下一條指令的操作碼、操作數(shù)。這些操作時(shí)序完全由程序計(jì)數(shù)器PC控制。一旦PC因干擾而出現(xiàn)錯(cuò)誤,程序便脫離正常運(yùn)行軌道,出現(xiàn)“亂飛”,當(dāng)飛出到某一個(gè)雙字節(jié)指令時(shí),若取指令時(shí)落在操作數(shù)上,誤將操作數(shù)當(dāng)作操作碼,程序?qū)⒊鲥e(cuò)。若飛出到了三字節(jié)指令時(shí),出錯(cuò)的機(jī)率更大。為了使“亂飛”程序迅速納入正軌,要多采用指令冗余技術(shù),同時(shí)要合理設(shè)計(jì)陷阱,并將陷阱安排在適當(dāng)?shù)奈恢谩?/p>
1.2.1指令冗余
指令冗余是指程序設(shè)計(jì)時(shí)應(yīng)多用單字節(jié)指令,并在對(duì)程序流向起決定作用的關(guān)鍵地方人為地插入一些單字節(jié)指令NOP,或者將有效單字節(jié)指令重寫,來(lái)保證“亂飛”的程序迅速納入正軌。
NOP的使用在雙字節(jié)指令和3字節(jié)指令之后插入2個(gè)單字節(jié)NOP指令,可保證其后的指令不會(huì)因前面的指令“亂飛”而繼續(xù)。因?yàn)椤皝y飛”的程序即使落到操作數(shù)上,由于2個(gè)空操作指令NOP的存在,避免了后面的指令被當(dāng)作操作數(shù)執(zhí)行,從而使程序再次回到正軌。對(duì)程序流向起決定作用的指令和某些對(duì)系統(tǒng)工作狀態(tài)起重要作用的指令前插入2條NOP指令,可保證程序迅速納入軌道,確保這些指令正確執(zhí)行。
重要指令冗余 對(duì)于那些對(duì)程序流向起決定作用的指令(如:RET,RRETI,ACALL等)和某些對(duì)系統(tǒng)工作狀態(tài)有重要作用的指令(如:SERB,EA)的后面,可以重復(fù)寫上這些指令,以確保這些指令的正確執(zhí)行。
1.2.2軟件陷阱
當(dāng)“亂飛”程序進(jìn)入非程序區(qū)或表格區(qū)時(shí),不能采用冗余技術(shù),此時(shí)可設(shè)定軟件陷阱,來(lái)截?cái)鄟y飛程序。所謂軟件陷阱就是引導(dǎo)指令,強(qiáng)行將捕獲的程序引向一個(gè)指定地址,在那里有一段專門處理程序出錯(cuò)的程序(用來(lái)診斷系統(tǒng)被干擾前的工作狀態(tài),并使程序運(yùn)行恢復(fù)正常)。通常在EPROM中的非程序區(qū)填入以下指令作為軟件陷阱:
DSP:……:顯示子程序
RET
RET
NOP
:軟件陷阱
NOP
NOP
:軟件陷阱
NOP
LJMP FLY
LIMP FLY
FLY:……:“亂飛”處理子程序
RET
考慮到程序存貯器的容量,一般IK空間有2—3個(gè)軟件陷阱就可以進(jìn)行有效攔截。
軟件陷阱安排在以下幾種場(chǎng)合:
(1)未使用的中斷向量區(qū);
(2)未使用的大片EPROM空間;
(3)控制字表,時(shí)間常數(shù)表的最后的未使用空間;
(4)程序區(qū)中的一些斷裂點(diǎn),如LJMP,AJMP,RET,RETI指令之后,正常執(zhí)行的程序到此不會(huì)繼續(xù)往下執(zhí)行了,在這種地方安排陷阱,就能有效地捕捉程序,而又不影響正常的程序執(zhí)行流程。
1.2.3程序運(yùn)行監(jiān)視系統(tǒng)
若失控的程序在遇到冗余指令前就已自動(dòng)形成死循環(huán),則冗余指令和軟件陷阱也無(wú)能為力了,這時(shí)系統(tǒng)會(huì)陷入完全癱瘓。為了避免此種情況,采取的措施是建立程序運(yùn)行監(jiān)視系統(tǒng),不斷檢測(cè)程序循環(huán)運(yùn)行時(shí)間,若發(fā)現(xiàn)程序循環(huán)時(shí)間超過(guò)最大循環(huán)運(yùn)行時(shí)間,則認(rèn)為系統(tǒng)陷入死循環(huán),運(yùn)行出錯(cuò)處理程序。例如,當(dāng)硬件電路設(shè)計(jì)時(shí)未考慮到采用watchdog,為了簡(jiǎn)化硬件電路,可以建立—個(gè)純軟件的watchdog監(jiān)視系統(tǒng)。這個(gè)watchdog系統(tǒng)只有采用比這個(gè)死循環(huán)更高級(jí)的中斷子程序才能奪走對(duì)CPU的控制權(quán)??梢杂靡粋€(gè)定時(shí)器來(lái)作watchdog,將它的溢出中斷設(shè)定為高級(jí)中斷,系統(tǒng)中的其他中斷均設(shè)為低級(jí)中斷。當(dāng)程序掉入死循環(huán)后,在設(shè)定的間隔時(shí)間內(nèi)得不到主程序“目前正?!毙盘?hào)后,watchdog系統(tǒng)有一次溢出,產(chǎn)生高級(jí)中斷,從而退出死循環(huán)。在中斷向量區(qū)安放一條LJMP ERR指令,即可直接轉(zhuǎn)向出錯(cuò)處理程序,由出錯(cuò)處理程序來(lái)完成各種善后工作,并用軟件方法使系統(tǒng)復(fù)位。
1.3設(shè)置功能模塊入口標(biāo)志
一般情況下,在自動(dòng)化生產(chǎn)線的控制系統(tǒng)中,當(dāng)程序失去控制后,不允許從控制程序的入口處重新開始執(zhí)行,而應(yīng)當(dāng)從失去控制的程序模塊恢復(fù)執(zhí)行。為此,控制程序應(yīng)模塊化,可以在每個(gè)功能模塊的入口處設(shè)置一個(gè)標(biāo)志。系統(tǒng)故障復(fù)位后,可根據(jù)這些標(biāo)志選擇進(jìn)入相應(yīng)的功能模塊。
1.4信息冗余
信息冗余是為了檢測(cè)或糾正信息在運(yùn)算或傳輸中的錯(cuò)誤而外加的一部分信息。在傳送數(shù)據(jù)序列中,按一定的規(guī)律加入一些信息碼,使原來(lái)不相關(guān)的數(shù)據(jù)變?yōu)橄嚓P(guān),在接受端按發(fā)送端的編碼進(jìn)行譯碼,附加的信息碼元就能自動(dòng)檢測(cè)傳輸中產(chǎn)生的差錯(cuò)并采取糾錯(cuò)措施。在通信和危機(jī)系統(tǒng)中,信息經(jīng)常是以編碼形式出現(xiàn)的,奇偶碼、漢明碼、法爾碼、循環(huán)碼及各種算術(shù)誤差碼都有很強(qiáng)的檢錯(cuò)和糾錯(cuò)能力。一般冗余的信息碼越多,其檢錯(cuò)和糾錯(cuò)能力越強(qiáng)。
1.5自診斷
系統(tǒng)自診斷是提高微機(jī)系統(tǒng)可靠度和檢測(cè)干擾的有效方法之一。自診斷一般分為:開機(jī)自診斷、周期性自診斷和鍵控自診斷。
開機(jī)自診斷又稱為靜態(tài)自檢,主要是系統(tǒng)對(duì)RAM區(qū)數(shù)據(jù)、系統(tǒng)定時(shí)器功能、相互通道的讀寫、接口通信等部件的測(cè)試。檢查RAM是否讀寫正確或運(yùn)行過(guò)程中RAM區(qū)數(shù)據(jù)是否安全,診斷系統(tǒng)定時(shí)器、系統(tǒng)相互通道、系統(tǒng)接口等的完整性和可靠性,若不正常則給出信息提示或報(bào)警提示。
周期性自診斷又稱為動(dòng)態(tài)檢測(cè),是在程序運(yùn)行過(guò)程中進(jìn)行的,包括系統(tǒng)零漂自檢、系統(tǒng)自動(dòng)校正、系統(tǒng)自動(dòng)補(bǔ)償?shù)???刂葡到y(tǒng)在運(yùn)行過(guò)程中有關(guān)器件性能參數(shù)將受到各種干擾的影響,造成系統(tǒng)零點(diǎn)的偏移或漂移,影響系統(tǒng)工作的準(zhǔn)確性和可靠性,因此系統(tǒng)在自檢的過(guò)程時(shí)進(jìn)行自動(dòng)補(bǔ)償,以提高系統(tǒng)運(yùn)行的準(zhǔn)確性和可靠性。
鍵控自診斷是通過(guò)人機(jī)對(duì)話設(shè)定特殊的系統(tǒng)自診斷功能。
2結(jié)束語(yǔ)
目前,采用抗干擾技術(shù)方法較多,提高硬件系統(tǒng)抗干擾能力是關(guān)鍵,同時(shí)利用軟件抗干擾也越來(lái)越受到重視。在工程實(shí)踐中通常都是幾種抗干擾方法并用,互相補(bǔ)充完善,才能取得較好的抗干擾效果。實(shí)踐證明,通過(guò)細(xì)致周到地分析干擾源、硬件與軟件抗干擾相結(jié)合、完善系統(tǒng)監(jiān)控程序等辦法,設(shè)計(jì)一個(gè)穩(wěn)定可靠的微機(jī)系統(tǒng)是完全可行的。
(注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文。)