西電電院電磁兼容原理大作業_第1頁
西電電院電磁兼容原理大作業_第2頁
西電電院電磁兼容原理大作業_第3頁
西電電院電磁兼容原理大作業_第4頁
西電電院電磁兼容原理大作業_第5頁
已閱讀5頁,還剩8頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

4、從而可以防止誤動作的產生。在程序結構上,可將輸出過程安排在監控循環中循環周期取得盡可能短,就能有效地防止輸出設備的錯誤動作。需要注意的是經過這種安排后輸出功能是作為一個完整的模塊來執行的,與這種重復輸出措施相對應軟件設計中還 必須為各個外部輸出設備建立一個輸出暫存單元,每次將應輸出的結果存入暫存單元中,然后再調用輸出功能模塊將各暫存單元的數據一一輸出,不管該數據是剛送來的,還是以前就有的。這樣可以讓每個外部設備不斷得到控制數據,從而使干擾造成的錯誤狀態不能得以維持。在執行輸出功能模塊時,應將有關輸出接口芯片的初始狀態也一并重新設置。因為由于干擾的作用可能使這些芯片的工作方式控制字發生變化,而不

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論