杜衛(wèi)平 新疆輕工職業(yè)技術(shù)學(xué)院
單片機(jī)軟件控制系統(tǒng)抗干擾設(shè)計(jì)分析
杜衛(wèi)平 新疆輕工職業(yè)技術(shù)學(xué)院
不同的單片機(jī)系統(tǒng)都是完整而獨(dú)立的,有自己的特點(diǎn)和要求。對(duì)于硬件和軟件抗干擾設(shè)計(jì)上,都體現(xiàn)出自己的特色。本論文針對(duì)無(wú)線電射頻干擾展開(kāi)探討,同時(shí)也對(duì)交流電路工頻干擾等主要的干擾源和干擾方式進(jìn)行研究,以硬件抗干擾措施為基礎(chǔ),軟件抗干擾技術(shù)起到補(bǔ)充作用。關(guān)于軟件抗干擾所采取的措施,先要對(duì)測(cè)量對(duì)象有較全面的了解,并對(duì)干擾因素進(jìn)行探討,在此基礎(chǔ)上還要考慮到系統(tǒng)的特殊性,制計(jì)出有效的抗干擾方案。
單片機(jī) 控制系統(tǒng) 干擾設(shè)計(jì)
1.1 測(cè)量數(shù)據(jù)誤差加大
如果干擾因素侵入到單片機(jī)系統(tǒng)之中,并且進(jìn)入到測(cè)量單元模擬信號(hào)輸入通道,與測(cè)量信息發(fā)生疊加,導(dǎo)致數(shù)據(jù)采集的難度加大,出現(xiàn)各種誤差,尤其是在對(duì)微弱信號(hào)進(jìn)行檢測(cè)時(shí),如果干擾信號(hào)過(guò)強(qiáng),而測(cè)量信號(hào)過(guò)弱,則會(huì)導(dǎo)致測(cè)量被淹沒(méi)的情況發(fā)生。
1.2 控制系統(tǒng)失靈
單片機(jī)輸出的控制信號(hào)存在這種現(xiàn)象,通常情況下會(huì)對(duì)處于某些條件的情況下,對(duì)于輸入信號(hào)以及對(duì)信號(hào)的邏輯入理結(jié)果過(guò)于依賴(lài)。如果輸入狀態(tài)信號(hào)被干擾,有虛假狀態(tài)的信息介入其中,則會(huì)出現(xiàn)輸出控制誤差加大的情況,嚴(yán)重時(shí)會(huì)導(dǎo)致控制失靈。
1.3 影響單片機(jī)RAM存儲(chǔ)器和E2PROM的問(wèn)題
從單片機(jī)的具體運(yùn)作情況展開(kāi)研究,在程序存儲(chǔ)器EPROM或FLASH中,程序和表格、數(shù)據(jù)等都存于其中,采取這種模式可以使數(shù)據(jù)的獨(dú)立性得以保障,不受其它因素的干擾。主要問(wèn)題集中片內(nèi)RAM、外擴(kuò)RAM、E2PROM中所需數(shù)據(jù),容易受到外界干擾而發(fā)生變化。
1.4 程序運(yùn)行失常
如果外界的干擾過(guò)強(qiáng),會(huì)導(dǎo)致機(jī)器頻繁復(fù)位,對(duì)程序正常運(yùn)行產(chǎn)生不利影響。如果外界干擾較為嚴(yán)重,導(dǎo)致單片機(jī)程序計(jì)數(shù)器PC值被改變,而且PC數(shù)值改變具有隨機(jī)性,程序會(huì)對(duì)一些無(wú)意義的指令做出反應(yīng),因此進(jìn)入到死循環(huán)狀態(tài),程序進(jìn)入混亂狀態(tài)。
2.1 指令冗余
從CPU取指令的過(guò)程來(lái)看,需要先取操作碼,然后再提取操作數(shù),同時(shí)還要把單字節(jié)指令插入到程序關(guān)鍵之處,對(duì)于有效單字節(jié)指令重寫(xiě),稱(chēng)之為指令冗余。在一般情況下,對(duì)于雙字節(jié)指令和三字節(jié)指令要進(jìn)行插入操作,在指令后插入兩字節(jié)或更多的NOP指令。NOP指令屬于窄操作,由于NOP的存在,可以避免后面指令被錯(cuò)誤執(zhí)行的情況發(fā)生,為程序步入正規(guī)奠定基礎(chǔ)。另外,一些指令對(duì)系統(tǒng)流向產(chǎn)生影響,在具體操作時(shí)在此類(lèi)指令之后可以插入NOP指令,數(shù)量以二條為宜,可以使跑飛程序被納入正軌之中,使此類(lèi)指令得到更好的執(zhí)行。指令冗余的主要功能在于使CPO正確對(duì)待操作數(shù),避免出現(xiàn)把操作數(shù)當(dāng)做操作碼,導(dǎo)致執(zhí)行錯(cuò)誤的情況發(fā)生,但是卻無(wú)法改變錯(cuò)誤,為了使程序錯(cuò)誤執(zhí)行方向的問(wèn)題得到糾正,需要采用下面的技術(shù)。
2.2 設(shè)計(jì)軟件“陷阱”
在通常情況下,程序存儲(chǔ)器存在未使用的EPROM空間,沒(méi)有填入窄操作指令NOP,最后再填入一條跳轉(zhuǎn)指令,可以跳入到跑飛的處理程序之中,或者選擇把LJMP 0000H指令直接填入,如果跑飛的程序出現(xiàn)在此區(qū)域,則會(huì)得到調(diào)整,雖然會(huì)執(zhí)行一段空操作,但這種錯(cuò)誤不會(huì)持續(xù)很久,最后會(huì)轉(zhuǎn)入正軌。如果EPROM具有較大的空間,大部分沒(méi)有使用,在操作時(shí)可以采取均勻填入的形式,把幾條空操作指令置于其中,并納入跳轉(zhuǎn)指令。即形成“軟件陷阱”。
經(jīng)過(guò)研究可以確定軟件陷阱結(jié)構(gòu)如下:
NOP
NOP
LJMP FLY
其中FLY作為跑冰處理的子程序承擔(dān)著重要職責(zé),如果程序處于正常運(yùn)行狀態(tài),則軟件陷阱無(wú)需執(zhí)行,但是如果程序發(fā)生跑飛,同時(shí)還要落入陷阱之內(nèi),軟件陷阱則會(huì)進(jìn)入工作狀態(tài),使跑飛的程序發(fā)生跳轉(zhuǎn),重新進(jìn)入正常軌道。如果程序跑飛后并未落入陷阱之中,程序會(huì)執(zhí)行一段錯(cuò)誤操作,然后遇到軟件陷阱,并被轉(zhuǎn)入到正軌中來(lái)。在程序存儲(chǔ)器的空白區(qū)域設(shè)置軟件陷阱,還要把陷阱設(shè)置在程序結(jié)尾處。如果數(shù)據(jù)表較大,為了保障正常運(yùn)行,在數(shù)據(jù)中間位置也要設(shè)置軟件陷阱,即使程序跑飛到數(shù)據(jù)區(qū),也會(huì)被重新納入正軌。如果程序有較大的存儲(chǔ)空間,在兩個(gè)子程序之間設(shè)置軟件陷阱可以取得較好效果。遇到使用中斷后,受干擾的影響而開(kāi)放的情況,如果所對(duì)應(yīng)的中斷服務(wù)程序中有軟件陷阱的存在,可以及時(shí)處理錯(cuò)誤的中斷。關(guān)于軟件陷阱的數(shù)量問(wèn)題,要根據(jù)干擾的情況而定,還要充分考慮到存儲(chǔ)器的容量,如果軟件陷阱太少,則難以實(shí)現(xiàn)有效的跑飛攔截,但如果陷阱設(shè)置太多,導(dǎo)致大量的程序存儲(chǔ)空間被占用,同樣不利于系統(tǒng)的正常運(yùn)轉(zhuǎn)。
2.3 軟件“看門(mén)狗”技術(shù)
程序發(fā)生跑飛的情況比較普遍,在進(jìn)行錯(cuò)誤操作之后,會(huì)進(jìn)入到“死循環(huán)”狀態(tài),發(fā)生死機(jī)。而解決此問(wèn)題的可以采用“軟件看門(mén)狗”的技術(shù),可以使程序恢復(fù)正常。軟件看門(mén)狗技術(shù)的原理并不復(fù)雜,即對(duì)程序的運(yùn)行時(shí)間進(jìn)行檢測(cè),如果發(fā)現(xiàn)程序循環(huán)時(shí)間過(guò)長(zhǎng),不受最大循環(huán)運(yùn)行時(shí)間的控制,即可做出判斷,即程序進(jìn)入到“死循環(huán)”狀態(tài),需要采取有效的處理措施。從實(shí)際操作來(lái)看,采用定時(shí)中斷服務(wù)程序和定時(shí)檢查主程序的運(yùn)行情況的方式。在工業(yè)實(shí)踐中,如果干擾過(guò)于嚴(yán)重,會(huì)使控制字被中斷,中斷被關(guān)閉,看門(mén)狗也隨之失去功效。在這種情況下采用環(huán)形中斷監(jiān)視系統(tǒng)效果較為理想。
“看門(mén)狗”的抗干擾性能較強(qiáng),結(jié)構(gòu)是環(huán)形的,使系統(tǒng)的可靠性得以提升。軟件“看門(mén)狗”正常運(yùn)行需要有定時(shí)器裝置,在實(shí)際操作中,可以看到在很多控制程序中都需要定時(shí)器,由此可知定時(shí)器屬于緊俏資源,由于這個(gè)原因?qū)е率管浖翱撮T(mén)狗”的使用受限。為了解決此問(wèn)題,軟件可以與其它程序共同使用一個(gè)定時(shí)器,定時(shí)功能與“看門(mén)狗”功能實(shí)現(xiàn)兼顧。
2.4 檢查RAM區(qū)標(biāo)志數(shù)據(jù),發(fā)現(xiàn)并處理嚴(yán)重干擾
這是一種有效的方式,在RAM區(qū)中選擇幾個(gè)固定單元,并設(shè)置其為固定的數(shù)據(jù),即程序處于正常運(yùn)轉(zhuǎn)狀態(tài),單元的內(nèi)容則保持不變。如果程序發(fā)生跑飛,或者受到各種因素的干擾,則會(huì)導(dǎo)致RAM中的數(shù)據(jù)出現(xiàn)變化,說(shuō)明單片機(jī)已處于干擾之下,無(wú)法正常運(yùn)行。在程序運(yùn)行時(shí),我們要對(duì)RAM單元的內(nèi)容進(jìn)行檢查,如果發(fā)現(xiàn)數(shù)據(jù)出現(xiàn)變化,要立即采取措施,執(zhí)行LJMP 0000 H語(yǔ)句,完成單片機(jī)的復(fù)位操作。
2.5 刷新輸出端口
如果單片機(jī)系統(tǒng)處于嚴(yán)重的干擾狀態(tài)之下,甚至對(duì)輸出端口的狀態(tài)產(chǎn)生影響,在程序操作時(shí),以相關(guān)程序模塊運(yùn)算結(jié)果對(duì)輸出端口進(jìn)行刷新操作,可以解決干擾的影響,使輸出端口恢復(fù)正常。
2.6 進(jìn)行多次輸入采樣
如果干擾過(guò)于強(qiáng)烈,會(huì)對(duì)單片機(jī)的輸入信號(hào)造成不利影響,導(dǎo)致輸入信號(hào)瞬間采樣出現(xiàn)誤差,或者出現(xiàn)誤讀的情況,為了把干擾的不利影響降到最低,可以進(jìn)行重新采樣,利用加權(quán)平均的方法解決該問(wèn)題。
電子技術(shù)和微型計(jì)算機(jī)發(fā)展迅速,對(duì)微型計(jì)算機(jī)控制技術(shù)的發(fā)展起到積極的推動(dòng)作用,在更多的領(lǐng)域得到廣泛應(yīng)用。尤其是中小規(guī)模的單片機(jī)控制系統(tǒng)具有較高的實(shí)用價(jià)值,智能機(jī)電一體化產(chǎn)品在工業(yè)生產(chǎn)和日常生活中充分發(fā)揮作用,應(yīng)用更加廣泛。要注意的是在進(jìn)行單片機(jī)控制系統(tǒng)的設(shè)計(jì)和開(kāi)發(fā)時(shí),要提升設(shè)備自動(dòng)化程度,使之更具智能性,但同時(shí)也要把控制系統(tǒng)的穩(wěn)定性放在重要位置,使控制系統(tǒng)的優(yōu)越性得以發(fā)揮。
[1]陳小波,秦付軍.單片機(jī)控制系統(tǒng)抗干擾設(shè)計(jì)研究[J].軍民兩用技術(shù)與產(chǎn)品,2016(10)
[2]王雅雪.單片機(jī)控制系統(tǒng)抗干擾設(shè)計(jì)研究[J].數(shù)字化用戶(hù),2013(15)