西電電院電磁兼容原理大作業(yè)_第1頁
西電電院電磁兼容原理大作業(yè)_第2頁
西電電院電磁兼容原理大作業(yè)_第3頁
西電電院電磁兼容原理大作業(yè)_第4頁
西電電院電磁兼容原理大作業(yè)_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、西電電院電磁兼容原理大作業(yè) 電磁兼容原理與技術(shù)大作業(yè) 班級(jí):021215 學(xué)號(hào):0212 軟件抗干擾技術(shù)之單片機(jī)軟件抗干擾技術(shù) 隨著單片機(jī)應(yīng)用的普及,采用單片機(jī)控制的產(chǎn)品與設(shè)備日益增多,而某些設(shè)備所在的工作環(huán) 境往往比較惡劣,干擾嚴(yán)重,這些干擾會(huì)嚴(yán)重影響設(shè)備的正常工作,使其不能正常運(yùn)行。因此,為了保證設(shè)備能在實(shí)際應(yīng)用中可靠地工作,必須要周密考慮和解決抗干擾的問題。本文對(duì)單片機(jī)應(yīng)用中的軟件抗干擾技術(shù)作詳細(xì)介紹,文中所用單片機(jī)為MCS51。 一、數(shù)字量輸入輸出中的軟件抗干擾 數(shù)字量輸入過程中的干擾,其作用時(shí)間較短,因此在采集數(shù)字信號(hào)時(shí),可多次重復(fù)采集,直到若干次采樣結(jié)果一致時(shí)才認(rèn)為其有效。例如通過

2、A 價(jià)轉(zhuǎn)換器測量各種模擬量時(shí),如果有干擾作用于模擬信號(hào)上,就會(huì)使A/D 轉(zhuǎn)換結(jié)果偏離真實(shí)值。這時(shí)如果只采樣一次A/D 轉(zhuǎn)換結(jié)果,就無法知道其是否真實(shí)可靠,而必須進(jìn)行多次采樣,得到一個(gè)A/D 轉(zhuǎn)換結(jié)果的數(shù)據(jù)系列,對(duì)這一系列數(shù)據(jù)再作各種數(shù)字濾波處理,最后才能得到一個(gè)可信度較高的結(jié)果值。本書第八章將給出各種具體的數(shù)字濾波算法及程序。如果對(duì)于同一個(gè)數(shù)據(jù)點(diǎn)經(jīng)多次采樣后得到的信號(hào)值變化不定,說明此時(shí)的干擾特別嚴(yán)重,已經(jīng)超出允許的范圍,應(yīng)該立即停止采樣并給出報(bào)警信號(hào)。如果數(shù)字信號(hào)屬于開關(guān)量信號(hào),如限位開關(guān)、操作按扭等,則不能用多次采樣取平均值的方法,而必須每次采樣結(jié)果絕對(duì)一致才行。這時(shí)可編寫一個(gè)采樣子程序,

3、程序中設(shè)置有采樣成功和采樣失敗標(biāo)志,如果對(duì)同一開關(guān)量信號(hào)進(jìn)行若干次采樣,其采樣結(jié)果完全一致,則成功標(biāo)志置位;否則失敗標(biāo)志置位。后續(xù)程序可通過判別這些標(biāo)志來決定程序的流向。 單片機(jī)控制的設(shè)備對(duì)外輸出的控制信號(hào)很多是以數(shù)字量的形式出現(xiàn)的,如各種顯示器、步進(jìn)電機(jī)或電磁閥的驅(qū)動(dòng)信號(hào)等。即使是以模擬量輸出,也是經(jīng)過D/A 轉(zhuǎn)換而獲得的。單片機(jī)給出一個(gè)正確的數(shù)據(jù)后,由于外部干擾的作用有可能使輸出裝置得到一個(gè)被改變了的錯(cuò)誤數(shù)據(jù),從而使輸出裝置發(fā)生誤動(dòng)作。對(duì)于數(shù)字量輸出軟件抗干擾最有效的方法是重復(fù)輸出同一個(gè)數(shù)據(jù),重復(fù)周期應(yīng)盡量短。這樣輸出裝置在得到一個(gè)被干擾的錯(cuò)誤信號(hào)后,還來不及反應(yīng),一個(gè)正確的信號(hào)又來到了,

4、從而可以防止誤動(dòng)作的產(chǎn)生。在程序結(jié)構(gòu)上,可將輸出過程安排在監(jiān)控循環(huán)中循環(huán)周期取得盡可能短,就能有效地防止輸出設(shè)備的錯(cuò)誤動(dòng)作。需要注意的是經(jīng)過這種安排后輸出功能是作為一個(gè)完整的模塊來執(zhí)行的,與這種重復(fù)輸出措施相對(duì)應(yīng)軟件設(shè)計(jì)中還 必須為各個(gè)外部輸出設(shè)備建立一個(gè)輸出暫存單元,每次將應(yīng)輸出的結(jié)果存入暫存單元中,然后再調(diào)用輸出功能模塊將各暫存單元的數(shù)據(jù)一一輸出,不管該數(shù)據(jù)是剛送來的,還是以前就有的。這樣可以讓每個(gè)外部設(shè)備不斷得到控制數(shù)據(jù),從而使干擾造成的錯(cuò)誤狀態(tài)不能得以維持。在執(zhí)行輸出功能模塊時(shí),應(yīng)將有關(guān)輸出接口芯片的初始狀態(tài)也一并重新設(shè)置。因?yàn)橛捎诟蓴_的作用可能使這些芯片的工作方式控制字發(fā)生變化,而不

5、能實(shí)現(xiàn)正確的輸出功能,重新設(shè)置控制字就能避免這種錯(cuò)誤確保輸出功能的正確實(shí)現(xiàn)。 二、程序執(zhí)行過程中的軟件抗于擾 前面述及的是針對(duì)輸入輸出通道而言的,干擾信號(hào)還未作用到CPU 本身,CPU 還能正確地執(zhí)行各種抗干擾程序。如果干擾信號(hào)已經(jīng)通過某種途徑作用到了CPU 上,則CPU 就不能按正常狀態(tài)執(zhí)行程序,從而引起混亂,這就是通常所說的程序“跑飛”。程序“跑飛”后使其恢復(fù)正常的一個(gè)最簡單的方法是使CPU 復(fù)位,讓程序從頭開始重新運(yùn)行。很多單片機(jī)控制的設(shè)備中都有設(shè)置人工復(fù)位電路。人工復(fù)位一般是在整個(gè)系統(tǒng)已經(jīng)完全癱瘓,無計(jì)可施的情況下才不得已而為之的。因此在進(jìn)行軟件設(shè)計(jì)時(shí)就要考慮到萬一程序“跑飛”,應(yīng)讓其

6、能夠自動(dòng)恢復(fù)到正常狀態(tài)下運(yùn)行。 程序“跑飛”后往往將一些操作數(shù)當(dāng)作指令碼來執(zhí)行,從而引起整個(gè)程序的混亂。采用“指令冗余”是使“跑飛”的程序恢復(fù)正常的一種措施。所謂“指令冗余”,就是在一些關(guān)鍵的地方人為地插入一些單字節(jié)的空操作指令NOP。當(dāng)程序“跑飛”到某條單字節(jié)指令上時(shí),就不會(huì)發(fā)生將操作數(shù)當(dāng)成指令來執(zhí)行的錯(cuò)誤。對(duì)于MCS51 單片機(jī)來說,所有的指令都不會(huì)超過3 個(gè)字節(jié),因此在某條指令前面插入兩條NOP 指令,則該條指令就不會(huì)被前面沖下來的失控程序拆散,而會(huì)得到完整的執(zhí)行,從而使程序重新納入正常軌道。通常是在一些對(duì)程序的流向起關(guān)鍵作用的指令前面插入兩條NOP 指令。應(yīng)該注意的是在一個(gè)程序中“指令

7、冗余”不能使用過多,否則會(huì)降低程序的執(zhí)行效率。 采用“指令冗余”使“跑飛”的程序恢復(fù)正常是有條件的,首先“跑飛”的程序必須落到程序區(qū),其次必須執(zhí)行到所設(shè)置的冗余指令。如果“跑飛”的程序落到非程序區(qū)(如EPROM中 未用完的空間或某些數(shù)據(jù)表格等),或在執(zhí)行到冗余指令之前已經(jīng)形成了一個(gè)死循環(huán),則“指令冗余”措施就不能使“跑飛”的程序恢復(fù)正常了。這時(shí)可以采用另一種軟件抗干擾措施,即腸胃“軟件陷阱”。“軟件陷阱”是一條引導(dǎo)指令,強(qiáng)行將捕獲的程序引向一個(gè)指定的地址,在那里有一段專門處理錯(cuò)誤的程序。假設(shè)這段處理錯(cuò)誤的程序入口地址為ERR,則下面三條指令 即組成一個(gè)“軟件陷阱”: NOP NOP LJMP

8、ERR “軟件陷阱”一般安排在下列四種地方。 (l)未使用的中斷向量區(qū)。MCS 51 單片機(jī)的中斷向量區(qū)為0003H002FH,如果所設(shè)計(jì)的智能化測量控制儀表未使用完全部中斷向量區(qū),則可在剩余的中斷向量區(qū)安排“軟件陷阱”,以便能捕捉到錯(cuò)誤的中斷。例如某設(shè)備使用了兩個(gè)外部中斷INT0、INT1 和一個(gè)定時(shí)器中斷T0,它們的中斷服務(wù)子程序入口地址分別為FUINTO、fUINT1 和FUT0,則可按下面的方式來設(shè)置中 斷向量區(qū)。 ORG 0000H 0000H START: LJMP MAIN ;引向主程序入口 0003H LJMP FUINT0 ;INT0 中斷服務(wù)程序入口 0006H NOP ;

9、冗余指令 0007H NOP 0008H LJMP ERR ; 陷阱 000BH LJMP FUT0 ;T0 中斷服務(wù)程序入口 000EH NOP ;冗余指令 000FH NOP 0010H LJMP ERR ; 陷阱 0013H LJMP FUINT1 ;INT1 中斷服務(wù)程序入口 0016H NOP ;冗余指令 0017H NOP 0018H LJMP ERR ; 陷阱 00lBH LJMP ERR ;未使用T1 中斷,設(shè)陷餅 00lEH NOP ;冗余指令 00lFH NOP 0020H LJMP ERR ; 陷阱 0023H LJMP ERR ;未使用串行口中斷,設(shè)陷阱 0026H N

10、OP ;冗余指令 0027H NOP 0028H LJMP ERR ; 陷阱 002BH LJMP ERR ;未使用T2 中斷,設(shè)陷阱 002EH NOP ;冗余指令 002FH NOP 0030H MAIN: ? ; ; 主程序 (2)未使用的大片EPROM 空間。智能化測量控制儀表中使用的EPROM 芯片一般都不會(huì)使用 完其全部空間,對(duì)于剩余未編程的EPROM 空間,一般都維持其原狀,即其內(nèi)容為OFFH。OFFH對(duì)于MCS51 單片機(jī)的指令系統(tǒng)來說是一條單字節(jié)的指令:MOV R7,A,如果程序“跑飛”到這一區(qū)域,則將順序向后執(zhí)行,不再跳躍(除非又受到新的干擾)。因此在這段區(qū)域內(nèi)每隔一 段地

11、址設(shè)一個(gè)陷阱,就一定能捕捉到“跑飛”的程序。 (3)表格。有兩種表格,即數(shù)據(jù)表格和散轉(zhuǎn)表格。由于表格的內(nèi)容與檢索值有一一對(duì)應(yīng)的關(guān)系,在表格中間安排陷阱會(huì)破壞其連續(xù)性和對(duì)應(yīng)關(guān)系,因此只能在表格的最后安排陷阱。如果表格區(qū)較長,則安排在最后的陷阱不能保證一定能捕捉到飛來的程序的流向,有可能在中途再次“ 跑飛”。 (4)程序區(qū)。程序區(qū)是由一系列的指令所構(gòu)成的,不能在這些指令中間任意安排陷阱,否則會(huì)破壞正常的程序流程。但是在這些指令中間常常有一些斷點(diǎn),正常的程序執(zhí)行到斷點(diǎn)處就 不再往下執(zhí)行了,如果在這些地方設(shè)置陷價(jià)就有能有效地捕獲“跑飛”的程序。例如在一個(gè)根據(jù)累加器A 中內(nèi)容的正、負(fù)和零的情況進(jìn)行三分支

12、的程序,軟件陷阱安排如下。 JNY XYZ ? ;零處理 ? ? AJMP ABC ;斷裂點(diǎn) NOP NOP LJMP ERR ; 陷阱 XYZ:JB ACC.7,UVW ? ;零處理 ? AJMP ABC ;斷裂點(diǎn) NOP NOP LJMP ERR ; 陷阱 UVW:? ? ABC:MOV A ,R2 ;取結(jié)果 RET ;斷裂點(diǎn) NOP NOP LJMP ERR 由于軟件陷阱都安排在正常程序執(zhí)行不到的地方,故不會(huì)影響程序的執(zhí)行效率。在EPROM 容量允許的條件下,這種軟件陷阱多一些為好。如果“跑飛”的程序落到一個(gè)臨時(shí)構(gòu)成的死循 環(huán)中時(shí),冗余指令和軟件陷阱都將無能為力。這時(shí)可以采用人工復(fù)位的方

13、法使系統(tǒng)恢復(fù)正常,實(shí)際上可以設(shè)計(jì)一種模仿人工監(jiān)測的“程序運(yùn)行監(jiān)視器”,俗稱“看門狗”(WATCHDOG )。 WATCHDOG 有如下特征: (1)本身能獨(dú)立工作,基本上不依賴于CPU。CPU 只在一個(gè)固定的時(shí)間間隔內(nèi)與之打一次交道,表明整個(gè)系統(tǒng)“目前尚屬正?!?。 (2)當(dāng)CPU 落入死循環(huán)之后,能及時(shí)發(fā)現(xiàn)并使整個(gè)系統(tǒng)復(fù)位。目前有很多單片機(jī)在內(nèi)部已經(jīng)集成了片內(nèi)的硬件WATCHDOG 電路,使用起來更為方便。也可以用軟件程序來形成WATCHDOG。例如可以采用8031 的定時(shí)器T0 來形成WATCHDOG:將T0的溢出中斷設(shè)為高級(jí)中斷,其它中斷均設(shè)置為低級(jí)中斷,若采用6M 的時(shí)鐘,則可用以下程序

14、使T0 定時(shí)約10ms 來形成軟件WATCHDOG: MOV TMOD, 01H;置TO 為16 位定時(shí)器 SETB ET0;允許T0 中斷 SETB PT0;設(shè)置T0 為高級(jí)中斷 MOV TH0, 0E0H;定時(shí)約10ms SETB TR0;啟動(dòng)T0 SETB EA;開中斷 軟件WATCHDOG啟動(dòng)后,系統(tǒng)工作程序必須每隔小于10ms的時(shí)間執(zhí)行一次MOV TH0,0E0H 指令,重新設(shè)置T0 的計(jì)數(shù)初值。如果程序“跑飛”后執(zhí)行不到這條指令,則在10ms 之內(nèi)即會(huì) 產(chǎn)生一次T0 溢出中斷,在T0 的中斷向量區(qū)安放一條轉(zhuǎn)移到出錯(cuò)處理程序的指令:LJMP ERR, 由出錯(cuò)處理程序來處理各種善后工作

15、。 采用軟件WATCHDOG 有一個(gè)弱點(diǎn),就是如果“跑飛”的程序使某些操作數(shù)變形成為了修改T0 功能的指令,則執(zhí)行這種指令后軟件WATCHDOG 就會(huì)失效。因此軟件WATCHDOG 的可靠性不 如硬件高。 三、系統(tǒng)的恢復(fù) 前面列舉的各項(xiàng)措施只解決了如何發(fā)現(xiàn)系統(tǒng)受到干擾和如何捕捉“跑飛”程序,但僅此還不 夠,還要能夠讓單片機(jī)根據(jù)被破壞的殘留信息自動(dòng)恢復(fù)到正常工作狀態(tài)。 硬件復(fù)位是使單片機(jī)重新恢復(fù)正常工作狀態(tài)的一個(gè)簡單有效的方法。前面介紹的上電復(fù)位、人 工復(fù)位及硬件WATCHDOG 復(fù)位,都屬于硬件復(fù)位。硬件復(fù)位后CPU 被重新初始化,所有被激 活的中斷標(biāo)志都被清除,程序從0000H 地址重新開始

16、執(zhí)行。硬件復(fù)位又稱為“冷啟動(dòng)”,是將系統(tǒng)當(dāng)時(shí)的狀態(tài)全部作廢,重新進(jìn)行徹底的初始化來使系統(tǒng)的狀態(tài)得到恢復(fù)。用軟件抗干擾措施來使系統(tǒng)恢復(fù)到正常狀態(tài),是對(duì)系統(tǒng)的當(dāng)前狀態(tài)進(jìn)行修復(fù)和有選擇的部分初始化,這種操作又可稱為“熱啟動(dòng)”。熱啟動(dòng)時(shí)首先要對(duì)系統(tǒng)進(jìn)行軟件復(fù)位,也就是執(zhí)行一系列指令來使各專用寄存器達(dá)到與硬件復(fù)位時(shí)同樣的狀態(tài),這里需要注意的是還要清除中斷激活標(biāo)志。如用軟件WATCHDOG 使系統(tǒng)復(fù)位時(shí),程序出錯(cuò)有可能發(fā)生在中斷子程序中,中斷激活標(biāo)志已經(jīng)置位,它將阻止同級(jí)的中斷響應(yīng);而軟件WATCHDOG 是高級(jí)中斷,它將阻止所有的中斷響應(yīng)。由此可見清除中斷激活標(biāo)志的重要性。在所有的指令中,只有RETI

17、指令能清除中斷激活標(biāo)志。前面提到的出錯(cuò)處理程序ERR 主要就是用來完成這一功能。這部分程序如下: ORG 0030H ERR: CLR EA ;關(guān)中斷 MOV DPTR, ERRI ;準(zhǔn)備返回地址 PUSH DPL PUSH DPH RETI ;清除高級(jí)中斷激活標(biāo)志 ERRI: MOV 66H, 0AAH ;重建上電標(biāo)志 MOV 67H, 55H CLR A ;準(zhǔn)備復(fù)位地址 PUSH ACC ;壓入復(fù)位地址 PUSH ACC RETI ;清除低級(jí)中斷激活標(biāo)志 在這段程序中用兩條RETI 指令來代替兩條LJMP 指令,從而清除了全部的中斷激活標(biāo)志。另外在66H、67H 兩個(gè)單元中存放一個(gè)特定的數(shù)

18、據(jù)0AA55H 作為軟件復(fù)位標(biāo)志,系統(tǒng)程序在執(zhí)行復(fù)位操作時(shí)可以根據(jù)這一標(biāo)志來決定是進(jìn)行全面初始化還是進(jìn)行有選擇的部分初始化。如前所述,熱啟動(dòng)時(shí)應(yīng)進(jìn)行部分初始化,但如果干擾過于嚴(yán)重而使系統(tǒng)遭受的破壞太大,熱啟動(dòng)不能使系統(tǒng)得到正確的恢復(fù)時(shí),則只有采取冷啟動(dòng),對(duì)系統(tǒng)進(jìn)行全面初始化來使之恢復(fù)正常。 在進(jìn)行熱啟動(dòng)時(shí),為使啟動(dòng)過程能順利進(jìn)行,首先應(yīng)關(guān)中斷并重新設(shè)置堆棧。因?yàn)闊釂?dòng)過程 是由軟件復(fù)位(如軟件WATCHDOG 等)引起的,這時(shí)中斷系統(tǒng)未被關(guān)閉,有些中斷請求也許正在排隊(duì)等待響應(yīng),因此使系統(tǒng)復(fù)位的第一條指令應(yīng)為關(guān)中斷指令。第二條指令應(yīng)為重新設(shè)置棧底指令,因?yàn)樵趩?dòng)過程中要執(zhí)行各種于程序,而子程序的

19、工作需要堆棧的配合,在系統(tǒng)得到正確恢復(fù)之前堆棧指針的值是無法確定的,所以在進(jìn)行正式恢復(fù)工作之前要先設(shè)置好棧底。然后應(yīng)將所有的I/O 設(shè)備都設(shè)置成安全狀態(tài),封鎖I/O 操作,以免于擾造成的破壞進(jìn)一步擴(kuò)大。接下來即可根據(jù)系統(tǒng)中殘留的信息進(jìn)行恢復(fù)工作。系統(tǒng)遭受干擾后會(huì)使RAM中的信息受到不同程度的破壞,RAM 中的信息有:系統(tǒng)的狀態(tài)信息,如各種軟件標(biāo)志、狀態(tài)變量等;預(yù)先設(shè)置的各種參數(shù);臨時(shí)采集的數(shù)據(jù)或程序運(yùn)行中產(chǎn)生的暫時(shí)數(shù)據(jù)。對(duì)系統(tǒng)進(jìn)行恢復(fù)實(shí)際上就是恢復(fù)各種關(guān)鍵的狀態(tài)信息和重要的數(shù)據(jù)信息,同時(shí)盡可能地糾正由于干擾而造成的錯(cuò)誤信息。對(duì)于那些臨時(shí)數(shù)據(jù)則沒有必要進(jìn)行恢復(fù)。在恢復(fù)了關(guān)鍵的信息之后,還要對(duì)各種外圍芯片重新寫入它們的命令控制字,必要時(shí)還需要補(bǔ)充一些新的信息,才能使系統(tǒng)重新進(jìn)入工作循環(huán)。 對(duì)于系統(tǒng)信息的恢復(fù)工作是至關(guān)重要的。系統(tǒng)中的信息以代碼的形式存放在RAM 中,為了使這些信息在受到破壞后能得到正確的恢復(fù),在存放系統(tǒng)信息時(shí)應(yīng)該采取代碼冗余措施。下面介紹一種三重冗余編碼,它是將每個(gè)重要的系統(tǒng)信息重復(fù)存放在三個(gè)互不相關(guān)的地址單元中,建立雙重?cái)?shù)據(jù)備份。當(dāng)系統(tǒng)受到干擾后,就可以根據(jù)這些備份的數(shù)據(jù)進(jìn)行系統(tǒng)信息的恢復(fù)。這三個(gè)地址 應(yīng)當(dāng)盡可能的獨(dú)立,如果采用了片外RAM,則應(yīng)在片外RAM 中對(duì)重要的系統(tǒng)信息進(jìn)行雙重?cái)?shù)據(jù)備份。片外RAM中的信息只有MOVX指令才能對(duì)它進(jìn)行修改,而

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論