摘要:控制系統因具有實時性,決定了其對抗干擾要求的特殊性,既要求當干擾發生時能及時將系統恢復到指定的狀態。文章中用51單片機與可編程芯片8253組成的實時控制系統的Watchdog電路,以及用8155中的RAM保存系統的重要信息.兩種方法的結合,大幅度的提高了實時控制系統的可靠性。
關鍵詞:抗干擾設計;單片機;Watchdog;8253;8155
中圖分類號:TP368文獻標識碼:B文章編號:1009-3044(2008)15-20000-00
Anti-Interference Design of Real Time Control System
ZHANG Jin-jian1,LU Kui1,JIANG Xue2,WANG Jun3
(1.School of Computer Science and Engineering, Anhui University of Science Technology, Huainan 232001, China;2.School of Computer Science and Technology, Anhui University, Hefei 230039, China;3. School of Electrical Engineering Information Technology, Anhui University of Science Technology, Huainan 232001, China)
Abstract: For a real-time control system, the special performance of the anti-interference request the system will be able to resume promptly to the designated state when the interference occurred. The article uses 51 microcontroller and 8253 programmable chip composed of the real-time control system Watchdog circuit, as well as saving important information in the 8155 RAM. The combination of the two methods improved the real-time control system significantly.
Key words: anti-interference design; microcontroller; Watchdog; 8253; 8155
1 引言
單片機由于其優異的性能價格,被廣泛的應用于工業控制,醫療器械,通訊等領域。隨著單片機種類越來越多,其功能也越來越強大,對片機可靠性的要求也越來越高。所以在實驗室條件下設計的控制系統,在安裝、調試后雖然完全符合設計要求,但將系統置如入現場后,系統常常不能夠正常穩定的工作。產生這種情況的主要原因是現場環境復雜和各種各樣的電磁干擾造成了系統指令“亂飛”,嚴重影響系統性能。所以單片機應用系統的可靠性和抗干擾設計變得越來越重要了。
單片機控制系統受到干擾后,經常出現的問題是程序進入一種“飛跑”或者“死機”狀態,使系統不能正常工作,有時甚至引起事故。要使單片機控制系統能在各種干擾下能穩定的工作,方法無外乎有兩種:一種是切斷外界干擾源,使其不能饋入單片機控制系統(方法有屏蔽,隔離,采用高穩定電源等);第二種是在設計系統時候,對硬件電路和軟件系統采用必要的措施,使當受到干擾時能夠盡可能自動的納入正規運行,而不需要人為的操控單片機系統。本人將在以下介紹一種在礦用單片機控制系統設計時采用的看門狗抗干擾電路技術,并談一談抗干擾設計的問題。
2 Watchdog電路設計與思想重要信息保存
控制系統受到干擾后,將進入到不可遇見的狀態,程序有可能“跑飛”到未用的ROM區域,也有可能陷入死循環。對次系統首先要能夠及時地診斷出是否受到干擾,如果受到干擾必須要有相應的軟件和硬件措施使系統盡快恢復正常;其次應該建立系統正常運行信息的副本,以便在有干擾引起系統復位后能夠依靠這些信息使系統恢復運行。
2.1 Watchdog電路設計

實際上該電路可以由各種專門芯片構成(如MAX813/815等),但是其定時時間不能設定,對于實時性很強的系統來說這是不允許的。所以筆者用8253組成了Watchdog電路,其優點就是定時時間可以根絕系統的需要進行設定。圖1是本設計的Watchdog電路。
在圖1中,用8253的一個計數器構成Watchdog電路,工作在方式1,即硬件可重觸發單穩態方式。觸發信號由P1.0形成,CLK端接0.5MHz計數脈沖。OUT端的輸出和P1.3的反向信號經7408相與后接至7432的一端(這是因為8253初始化后OUT端輸出為高電平,直至GATE端有上升沿后才將計數初值寫入到計數器進行計數,同時使OUT端輸出為低電平。為防止該高電平脈沖使系統復位,用P1.3作為OUT的限門開關,在放松GATE的觸發脈沖之前使P1.3為高電平,從而使7408的輸出為低電平),7432的另一端接系統的上電復位信號,兩信號相或后形成8051的復位脈沖。其意義是無論OUT端有正的上升沿還是系統上電復位的上升沿都將使系統復位但兩者的含義是不同的。方式1的特點是OUT端輸出負脈沖的寬度為寫入8253的計數初值,在8253計數期間,若GATE端有重觸發信號,則重新裝入計數初值計數,即輸出保持為低電平。因此可設定8253的計數初值,使其輸出負脈沖的寬度稍微大于成訊正常運行的時間,然后在程序運行的適當位置上設置指令,使P1.0口向8254發來觸發脈沖,這樣當程序正常運行時,OUT端一直輸出低電平,若系統受到干擾,程序“飛跑”后P1.0口不能正常送來觸發信號,則計時時間到后,OUT端變為高電平,形成復位脈沖,使系統復位。
在實時控制系統中,由于被控對象運行的邏輯順序性,當程序失控后,一般不允許直接從整個控制系統的入口處從頭執行程序,而是要從一特定的地方恢復運行(比如中斷入口),這就要求系統能夠區分復位信號是系統上電產生的(冷啟動)還是Watchdog引起的(熱啟動),并根據不同的復位信號引導系統從不同的入口運行。對此,筆者用D觸發器來記錄系統是上電復位還是受到干擾后自動恢復的。如圖1:將上電復位信號接D觸發器7474的CLK端,7474的置位端接P1.1,Q端接P1.2,D接低電平。系統上電復位后,復位信號使D觸發器也復位(P1.2為低電平),在上電復位初始化中通過P1.1口置位D觸發器(置P1.2為高電平)記錄上電復位狀態,這樣根據D觸發器的狀態就可以判別系統是冷啟動還是干擾引起的熱啟動了。若是冷啟動,則執行完全初始化,若是干擾引起的復位,則從指定的入口進入系統。系統的初始化流程圖見圖2。
這里我要討論一個問題:那就是為什么Watchdog信號接至單片機的復位端,而非中斷端口,如果接到中斷端,就能更輕松的處理系統在受到干擾后的一系列數據的恢復,而不需要重新啟動。原因是:8051單片機沒有可以屏蔽的中斷,若程序在中斷執行時受到干擾,并開始“飛跑”,那因為還沒來得及執行IRET指令,則8051的中斷激活標志不能復位,這將阻止同級中斷請求,這就會致使系統恢復后不能響應同級的中斷請求,使程序徹底“死掉”,這樣是不允許的。所以將Watchdog信號接到復位端,單片機復位后會自動清楚激活標志,從而避免了這一問題的出現。
2.2 重要信息保存
當系統受到干擾后,程序“飛跑”,而要使系統能盡快恢復正常運行,除了要使系統能及時啟動,而且還有一個重要的前提是建立重要數據的副本,使程序重新啟動后,重要數據不能丟失。

重要數據副本的建立在硬件上是利用I/O口芯片的8155中的RAM來實現的,并且實行保護式寫入。D觸發器7474用來形成對8155寫信號打開或者關閉信號。如圖2當工作過程產生一個重要數據時,就存放在指定的寄存器中,然后將其寫如由R0指定的8155內部的RAM中,程序片段如下:
MOVP2,#0F7H;選中8155
MOVX @R1 , A;寫信號上升沿使D觸發器Q為),允許8155RAM寫入
MOVP2,#0E7H
MOVX @R1, A;保存信息寫入到8155RAM
JMPDELAY ; 延時
MOVP2,0FFH
MOVX @R1 ,A;寫信號上升沿使D觸發器Q置1,禁止8155EAM寫入
DELAY:
......
利用以上程序片避免了失控程序“涂改”重要信息的可能,從而可確保復位程序能正確的引導系統納入正軌運行。
3 結束語
實踐證明,采用上述方法以后,控制系統的抗干擾能力大大加強了,加上其他一些抗干擾措施(例如在多指令前加兩條NOP指令等基本方法),系統的抗干擾能力大大加強,保證了系統的可靠運行。
參考文獻:
[1]李華.MCS-51系列單片機實用接口技術[M].北京:北京航空航天大學出版社,1993.
[2]周明德.微型計算機原理及應用[M].成都:電子科技大學出版社,1995.
[3]周航慈.單片機應用程序設計技術[M].北京:北京航空航天大學出版社,1991.
[4]孫涵芳.Intel16 位單片機[M ].北京: 北京航空航天大學出版社, 1995.
[5]李勛,等單片微型計算機[M].北京: 北京航空航天大學出版社.
[6]武慶生,仇梅.單片機及接口實用教程[M] . 成都:電子科技大學出版社,1995.
收稿日期:2008-04-01