單片機(jī)系統(tǒng)的故障重現(xiàn)設(shè)計(jì)及實(shí)現(xiàn)
電磁脈沖輻照效應(yīng)實(shí)驗(yàn)方法
電磁脈沖對(duì)電予系統(tǒng)的輻照效應(yīng)實(shí)驗(yàn)方法,簡(jiǎn)單地說(shuō)就是將被測(cè)電子系統(tǒng)置于電磁脈沖輻射場(chǎng)中,接受電磁脈沖的照射,研究被測(cè)系統(tǒng)在電磁脈沖照射下受干擾、損傷的情況。
實(shí)驗(yàn)配置如圖1所示。主要由吉赫橫電磁波傳輸室(GTEM Cell)、Marx發(fā)生器、控制臺(tái)和被試系統(tǒng)等組成。Marx發(fā)生器用于產(chǎn)生高電壓,與GTEM室配合,在GTEM室內(nèi)產(chǎn)生均勻電磁場(chǎng)??刂婆_(tái)主要由示波器、光接收機(jī)和Marx控制面板組成。光接收機(jī)和電場(chǎng)傳感器組成模擬量光纖場(chǎng)測(cè)量系統(tǒng),主要用于將輻射電磁場(chǎng)轉(zhuǎn)換成電壓信號(hào);示波器用來(lái)顯示電場(chǎng)波形;Marx控制面板用來(lái)控制Marx發(fā)生器的充放電操作和陡化間隙的調(diào)整。
故障重現(xiàn)原理
故障重現(xiàn)的概念
計(jì)算機(jī)系統(tǒng)在電磁脈沖作用下可產(chǎn)生硬件損壞、數(shù)據(jù)采集誤差增大、內(nèi)存數(shù)據(jù)改變、程序跳轉(zhuǎn)、重啟動(dòng)和死機(jī)等故障。這些故障現(xiàn)象是大量的、不同的計(jì)算機(jī)在不同環(huán)境、不同時(shí)間受干擾后產(chǎn)生的故障現(xiàn)象的集總。如果拿出任意一臺(tái)計(jì)算機(jī)做實(shí)驗(yàn),只能產(chǎn)生很少的幾個(gè)故障現(xiàn)象,由于這些計(jì)算機(jī)沒(méi)有自動(dòng)檢測(cè)功能,有的故障即使是發(fā)生了,也觀察不到。如
果連故障現(xiàn)象都觀察不全,就無(wú)法找出故障出現(xiàn)的規(guī)律和原因,更談不上進(jìn)行防護(hù)技術(shù)研究。因此,很有必要設(shè)計(jì)一套專門用于電磁脈沖效應(yīng)實(shí)驗(yàn)的計(jì)算機(jī)系統(tǒng),該系統(tǒng)具有以下功能:
·自動(dòng)檢測(cè)并顯示系統(tǒng)本身出現(xiàn)的故障;
·干擾時(shí)故障最容易出現(xiàn);
·使出現(xiàn)故障的種類最多;
·具有故障重現(xiàn)功能。
故障重現(xiàn)是指主動(dòng)地采取一定的技術(shù)手段,使故障反復(fù)出現(xiàn)。想看哪種故障就能出現(xiàn)哪種故障,想讓它出現(xiàn)兒次就出現(xiàn)幾次。這與一般電路中采取有效措施抗干擾的設(shè)計(jì)思想截然不同。
故障重現(xiàn)的條件
故障重現(xiàn)并不是用計(jì)算機(jī)軟件進(jìn)行故障仿真,而是故障的真實(shí)再現(xiàn)。要使故障重現(xiàn),除了輻射場(chǎng)的幅度要足夠強(qiáng)外,被測(cè)系統(tǒng)還要具備必需的硬件電路和軟件環(huán)境。軟件環(huán)境是指干擾出現(xiàn)時(shí)控制功能電路工作的程序正在運(yùn)行,即時(shí)間對(duì)準(zhǔn)。例如,如果要考查電磁脈沖對(duì)A/D轉(zhuǎn)換電路轉(zhuǎn)換精度的影響,首先要有ADC,其次要保證照射時(shí)ADC正在工作。
實(shí)現(xiàn)故障重現(xiàn)的技術(shù)手段
對(duì)輻射場(chǎng)強(qiáng)度和硬件電路的要求比較容易實(shí)現(xiàn),難點(diǎn)是保證時(shí)間對(duì)準(zhǔn)。當(dāng)然,有些故障的重現(xiàn)對(duì)時(shí)間對(duì)準(zhǔn)要求很寬松,如死機(jī)和重啟動(dòng),計(jì)算機(jī)幾乎在運(yùn)行任何程序時(shí)都有可能出現(xiàn)這兩種故障現(xiàn)象。
解決這一難點(diǎn)的方法是采取程序模塊化和循環(huán)等待技術(shù)。程序模塊化使每一種故障(效應(yīng))對(duì)應(yīng)一個(gè)程序模塊,想看哪種故障,就運(yùn)行相應(yīng)的程序模塊;想讓故障多次出現(xiàn),就反復(fù)進(jìn)行效應(yīng)實(shí)驗(yàn)。循環(huán)等待技術(shù)是讓計(jì)算機(jī)始終運(yùn)行某一段或某一句程序,可大大提高干擾成功的概率,使故障最容易出現(xiàn)。
系統(tǒng)組成及工作原理
硬件組成
本系統(tǒng)采用51系列單片機(jī)。為便于研究程序存儲(chǔ)器的效應(yīng)情況,選用內(nèi)部不含EPROM的8031作為中央處理器,程序固化在外部程序存儲(chǔ)器中,這里采用的是擦、寫方便的E2PROM(2864或28C64)。由于8031內(nèi)含CTC和SIO,不再另設(shè)外CTC和SIO。為使系統(tǒng)能夠重現(xiàn)盡可能多的故障現(xiàn)象,采用的外設(shè)芯片還有:外部數(shù)據(jù)存儲(chǔ)器(6264)和ADC(AD0809)。另外,增加4位數(shù)碼管用于信息顯示,顯示數(shù)據(jù)由4個(gè)鎖存器(74LS373)保存。上述硬件電路既完成一定的功能又是被試驗(yàn)對(duì)象。系統(tǒng)組成如圖2所示。
程序執(zhí)行流程
該系統(tǒng)軟件共由8個(gè)程序模塊組成:指示單片機(jī)重啟動(dòng)的程序模塊;檢查CTC運(yùn)行情況的程序模塊;串口通訊功能檢查程序模塊;判斷外RAM內(nèi)容是否改變及讀寫是否出錯(cuò)的程序模塊;判斷內(nèi)RAM內(nèi)容是否改變程序模塊;檢查A/D轉(zhuǎn)換電路轉(zhuǎn)換誤差是否增大程序模塊;判斷外中斷足否被誤觸發(fā)程序模塊;顯示E2PROM內(nèi)容是否被改寫的程序模塊。
系統(tǒng)的工作過(guò)程也就是上述8個(gè)程序模塊的運(yùn)行過(guò)程,它們是在執(zhí)行開關(guān)K的控制下順序執(zhí)行的。圖3給出了流程圖。幾乎每一種效應(yīng)實(shí)驗(yàn)對(duì)應(yīng)一個(gè)程序模塊。由于硬件損壞故障與軟件運(yùn)行關(guān)系不大,而且故障現(xiàn)象明顯,無(wú)需專門設(shè)置程序模塊。重肩動(dòng)效應(yīng)實(shí)驗(yàn)可以工作在除指示單片機(jī)重啟動(dòng)的程序模塊的任一程序模塊。死機(jī)效應(yīng)實(shí)驗(yàn)可以工作在任一程序模塊,由于故障現(xiàn)象明顯,無(wú)需檢測(cè)程序。 故障重現(xiàn)及檢測(cè)的具體實(shí)現(xiàn)不同的故障現(xiàn)象有不同的重現(xiàn)和檢測(cè)方法。由于篇幅有限,只給出三種故障重現(xiàn)及檢測(cè)的實(shí)現(xiàn)方法。
外RAM效應(yīng)
這部分實(shí)驗(yàn)包括三部分:一是不進(jìn)行讀寫操作時(shí),檢查外RAM內(nèi)容是否被改寫;二是檢查讀操作是否出錯(cuò);三是檢查寫操作是否出錯(cuò)。
第一部分實(shí)驗(yàn)中,RAM內(nèi)容被改寫是由于RAM芯片被干擾所致,只需編制檢測(cè)程序。先在RAM的0000H~1FFFH單元寫入同一數(shù)據(jù)("AA"),然后等待執(zhí)行開關(guān)K的按下,等待期間進(jìn)行沖擊實(shí)驗(yàn)。沖擊完畢,讀出RAM內(nèi)容并判斷是否改變。
第二、三部分實(shí)驗(yàn),檢查RAM的讀寫操作是否因干擾而出錯(cuò)。讓持續(xù)時(shí)間只有微秒量級(jí)的干擾脈沖去干擾執(zhí)行時(shí)間只有幾個(gè)微秒的讀寫指令,這種事件發(fā)生的概率幾乎為0。對(duì)于干擾源可以工作在重復(fù)工作方式的情況,可以使其在重復(fù)工作方式下工作,這無(wú)疑是一種不錯(cuò)的想法。但是,由于重復(fù)工作方式的重復(fù)頻率并不能做得很高,最高只能達(dá)到1kHz左右,所以其效果并不明顯。最有效的方法是使程序重復(fù)執(zhí)行一條讀或?qū)懼噶?,雖然兩次讀或?qū)懼g還有幾條判斷讀或?qū)懭氲臄?shù)據(jù)是否正確的指令,但兩次讀或?qū)懼g的時(shí)間間隔也只有數(shù)十微秒量級(jí),這就相當(dāng)于讓讀寫指令等著電磁脈沖來(lái)干擾,從而大大提高了被干擾的概率。
第二、三部分程序編制開始時(shí),為了使其更具代表性,對(duì)RAM的所有單元進(jìn)行讀或?qū)懀聪葘AM的0000H~1FFFH單元清0,然后使程序循環(huán)讀這些單元,或向這些單元循環(huán)寫入數(shù)據(jù)"AA",并實(shí)時(shí)檢查讀出或?qū)懭氲臄?shù)據(jù)是否正確。在實(shí)驗(yàn)中發(fā)現(xiàn),第二、三部分實(shí)驗(yàn)出錯(cuò)的次數(shù),比第一部分實(shí)驗(yàn)出現(xiàn)的次數(shù)還多。盡管采取了上述循環(huán)等待技術(shù),但某條指令被干擾的可能性還是很小。多次實(shí)驗(yàn)不得其解,后來(lái)在讀實(shí)驗(yàn)顯示出錯(cuò)信息時(shí)檢查RAM各單元的內(nèi)容,發(fā)現(xiàn)每次都有一部分RAM單元的內(nèi)容出錯(cuò),而讀操作出錯(cuò)不可能導(dǎo)致RAM內(nèi)容改變,因此,并不是或不全是讀寫操作出錯(cuò),而是由于RAM內(nèi)容被改寫后,誤判為讀或?qū)懗鲥e(cuò)。解決這一問(wèn)題的方法是,使讀寫操作只對(duì)某一一固定的RAM單元進(jìn)行,由于一個(gè)單元被改寫的概率是所有單元被改寫概率的l/2,這就大大降低了誤警概率。[!--empirenews.page--]
串口SIO效應(yīng)
串口SIO效應(yīng)實(shí)驗(yàn)主要是看串口通訊是否出錯(cuò)。要觀察到這種故障現(xiàn)象,就必須讓單片機(jī)運(yùn)行串口通訊程序。由于51型單片機(jī)只有一個(gè)串口,而要使其進(jìn)行通訊,最少需要兩個(gè)串口,這就至少需要有兩套單片機(jī)系統(tǒng),這將使設(shè)備和實(shí)驗(yàn)復(fù)雜化。在認(rèn)真研究串口工作原理后,終于找到了只用一個(gè)單片機(jī)模擬串口通訊的方案:把CPU的TXD和RXD短接,將TXD端發(fā)出的數(shù)據(jù)直接送入RXD進(jìn)行接收,使單片機(jī)工作于自發(fā)自收狀態(tài),通過(guò)檢查接收與發(fā)送的數(shù)據(jù)是否相等判斷通訊是否正常。當(dāng)然,仍需采用循環(huán)等待技術(shù),使通訊循環(huán)進(jìn)行,當(dāng)運(yùn)行正常時(shí),在P1.1口產(chǎn)生脈沖信號(hào),使紅色LED亮。如果通汛出現(xiàn)異常,數(shù)碼管將顯示出錯(cuò)信息,并將LED熄滅。
定時(shí)器CTC效應(yīng)
為使CTC工作失誤故障重現(xiàn),可在主程序中加入允許CTC中斷的指令,使程序運(yùn)行時(shí),CTC一直在工作,等待電磁脈沖來(lái)干擾。 定時(shí)器采用CPU內(nèi)部定時(shí)器0,工作方式為方式1。編寫CTC0的中斷子程序,與軟件計(jì)數(shù)器R0配合,在P1.1口產(chǎn)生一個(gè)方波信號(hào),驅(qū)動(dòng)LED閃亮。主程序等待K按下指令,等待期間進(jìn)行干擾實(shí)驗(yàn)。如果LED閃亮異常,表明CTC工作不正常。以下為定時(shí)器0的中斷子程序:
實(shí)驗(yàn)結(jié)果
在設(shè)計(jì)該單片機(jī)系統(tǒng)以前,曾用一單片機(jī)最小應(yīng)用系統(tǒng)做效應(yīng)實(shí)驗(yàn),結(jié)果只能觀察到死機(jī)現(xiàn)象。而將該系統(tǒng)用于效應(yīng)實(shí)驗(yàn)后,觀察到了硬件損壞、A/D轉(zhuǎn)換誤差增大、內(nèi)存數(shù)據(jù)改變、程序跳轉(zhuǎn)、死機(jī)、CTC工作失誤、串口通訊出錯(cuò)和程序存儲(chǔ)器E2PROM內(nèi)容被改寫等多種故障現(xiàn)象。通過(guò)大量、反復(fù)地實(shí)驗(yàn),測(cè)出了各種故障出現(xiàn)的閾值,分析了故障出現(xiàn)的原因。
圖4是示波器記錄下的串口RXD引腳上的正常信號(hào)和通訊出錯(cuò)時(shí)的干擾波形。圖4表明,RXD上有很強(qiáng)的干擾信號(hào),而且低電平被展寬了3~4倍。根據(jù)實(shí)驗(yàn)數(shù)據(jù)及串口工作原理,得出申行通訊出錯(cuò)的原因有兩個(gè):1.干擾使SIO電路工作失誤,如串口控制寄存器SCON內(nèi)容改變,發(fā)送或接收SBUF內(nèi)容改變等,這些都可能引起接收數(shù)據(jù)和發(fā)送數(shù)據(jù)不符,從而使通訊出錯(cuò);2.RXD線上的干擾信號(hào)使串行數(shù)據(jù)發(fā)生混亂,從而使接收數(shù)據(jù)出錯(cuò)。