看門狗技術與單片機應用系統(tǒng)抗干擾措施
1 引言
隨著工業(yè)自動化水平的不斷提高,以MCS-51單片機為核心所構成的單片機應用系統(tǒng)得到了廣泛應用,如水泥生料配料系統(tǒng)、電子皮帶秤給料控制、各種現場智能測量儀表等。但其工作現場條件惡劣,干擾多而且幅度大,嚴重影響著應用系統(tǒng)的正常運行與可靠性,甚至使應用系統(tǒng)計算機進入死循環(huán)而癱瘓,通常稱為程序“跑飛”。由此引出的計算機可靠性問題,一直是人們研究的重要課題。
采用屏蔽、濾波、退耦、隔離、接地等措施能有效地提高系統(tǒng)的抗干擾能力,但很難在強干擾發(fā)生時消除因程序“跑飛”而死機情況的發(fā)生。“看門狗”技術能在程序“跑飛”時實現自我診斷并使系統(tǒng)恢復運行,是單片機應用系統(tǒng)抗干擾的有力武器。當然,它是以系統(tǒng)的硬、軟件設計開發(fā)的合理和成熟為條件的,否則將掩蓋系統(tǒng)設計開發(fā)過程中的人為缺陷與不足。
2 “看門狗”技術及其對干擾的抑制
2.1 程序“跑飛”對系統(tǒng)的攻擊
(1)程序計數器PC的值被攻擊,成為一隨機拼合的數據。
(2)系統(tǒng)設置的控制字與標志參數因“跑飛”后可能被訪問而被攻擊。
(3)數據存儲器RAM內容被攻擊等。
2.2 “看門狗”技術
“看門狗”源于“Watch dog、Watch dog timer”,或稱定時監(jiān)視技術,其本質是一可復位的定時器,其原理如圖1、2所示。
圖1 原理框圖
圖2 原理波形圖
在程序正常運行時,計算機通過程序以周期T1向定時器發(fā)送脈沖觸發(fā)定時器(或通過軟件以T1為周期初始化定時器),而由定時脈沖控制的定時器動作時間為T2(T3),在T1<T2(T3)時,定時器不會動作,處于休眠狀態(tài)。當計算機受到強干擾等作用破壞后,程序計數器PC中內容不再是程序的正確代碼,而可能為一隨機拼合的數據,這樣會使取指不正確,必然導致程序運行混亂“跑飛”,進入死循環(huán)而死機。反過來由于程序脫離正常循環(huán),也使定時器觸發(fā)脈沖丟失,在經過T2(T3)時間后,“看門狗”定時器被激活,向CPU發(fā)出Reset信號使其復位,將“跑飛”的程序從PC=0000H開始,納入正常軌道。但有些生產過程是不能從頭開始的,應用程序均是一循環(huán)體,且在開始處均有初始化程序,包含各種寄存器、指針、變量、控制字等。此時狀態(tài)不能反應“跑飛”時的狀態(tài),有時還有人身、設備等方面的安全危險。在這種情況下,程序“跑飛”后應設法找到出錯時的斷點,此時就可以采用二級“看門狗”的方式。由程序設計時優(yōu)先級設置為最高級的定時器一先發(fā)出中斷請求信號,CPU響應中斷轉向中斷處理程序,進而恢復系統(tǒng)。第二級“看門狗”電路只有在第一級未起作用時經過T3才起動Reset信號。
2.3 “看門狗”技術的實施方法
(1)在系統(tǒng)構成時選用芯片內帶有“看門狗”電路的單片機,如ATMEL公司的89C52等。
(2)選配專門的“看門狗”電路,如美國Xicor公司的X25043/45、MAXIM公司的MAX813L等,它們均可構成獨立的“看門狗”電路。
(3)采用計數器、單穩(wěn)態(tài)觸發(fā)器、定時器等器件構成。在圖3中用4060構成了一個二級“看門狗”電路。
因中斷入口0003H處僅有0003H~000AH單元可為中斷服務程序所用,很可能容納不下中斷服務程序,故應在其內安排一條JMP Watch dog指令。由于“跑飛”,PC值在響應中斷前已被破壞,在響應中斷后,該內容自動被壓入堆棧,故一定要用兩條POP A指令將無用內容彈出,以便為中斷返回時由堆棧給PC賦予“跑飛”處的正確值,這一點在設計中斷服務程序時尤其要引起重視。通過對P1.0取反,恢復對4060的觸發(fā)脈沖。在中斷服務中應安排被破壞數據的診斷、修復以及查找“跑飛”處的地址正確入口,并在返回前將其壓棧。當執(zhí)行RETI時,“跑飛”處斷點地址入口自動彈棧到PC,恢復正常運行。P1.0取反指令在何處插入應通過計算指令周期讓兩條CLR P1.0指令間隔小于定時器的定時時間T1<T2,可取T2=(1.5~2)T1。
圖3 二級“看門狗”電路
(4)利用8031片內定時器/計數器 8031片內有兩個十六位的定時器/計數器,可用定時器T0。在應用程序對T0初始化時,將其定時時間T2設置得比應用程序循環(huán)體執(zhí)行時間T1長,可取:T2=(1.5~2)T1。當程序正常時,T0不會溢出,“跑飛”時溢出,定時器/計數器控制寄存器TCON的TF0(TCON.5)由8031內部硬件置位TF0=1,發(fā)出中斷信號。設8031采用12MHz晶振,經定時器內部12分頻后得1MHz的定時時鐘,對應定時時間1μs,最長可定時約65.5ms,如應用程序循環(huán)時間T1=10ms,則可取T2=2T1=20ms,定時器的初值X可由下式確定:
(216-X)×1μs=20ms
X=45536D=B1EOH
定時器的初始化程序:
MOV TLO,#OEOH
MOV THO,#OB1H;定時器/計數器T0寫入初值
MOV TMOD,#O1H;設置定時器/計數器工作方式1
SETB TRO; 起動定時器/計數器T0
在應用程序的系統(tǒng)初始化時用下面指令設定T0優(yōu)先級:
SETB EA; 開放中斷
SETB ETO; 允許T0中斷
SETB PTO; 置T0中斷優(yōu)先級最高
T0中斷服務流程與中斷服務流程(見圖4)相比,其中斷入口為000BH,去掉P1.0取反的指令,其余相同?績(yōu)先級別最高的中斷將控制權重新奪回交給CPU,使系統(tǒng)恢復正常。
圖4 中斷服務流程
2.4 斷點的查找與恢復
斷點的查找與恢復是人們最關注的問題,我們的方法是擴展一外部數據存儲器,用以存儲“跑飛”前斷點(或接近斷點)的PC之值以及一些重要的變量、指針及控制字的值。利用正常工作時P1.0向“看門狗”發(fā)送的觸發(fā)脈沖經反向、延時等作為外部擴展RAM的片選信號以T1為周期定時對外部RAM中內容進行刷新。當“跑飛”后因觸發(fā)脈沖丟失而避免了外部RAM被攻擊,保證其內容的可靠性。隨著T1的減少,被恢復的值就愈趨近斷點值,但要非常準確找到斷點,還值得人們研究。在中斷響應時由于P1.0恢復了輸出觸發(fā)脈沖,故可將斷點值讀出。
3 結束語
“看門狗”是對付“跑飛”的有力手段,在生產過程中由于特定的生產條件使得“看門狗”技術有其相當的作用。我們在對某水泥廠微機配料系統(tǒng)的技術改造過程中采用了二級“看門狗”技術,該系統(tǒng)運行兩年多來經受住了各種強干擾的考驗,取得了令人滿意的效果。
對于“跑飛”后的診斷、恢復,尤其是如何更準確地找到程序“跑飛”斷點,對被損數據加以恢復等方面盡管有許多軟件可以利用,但還是值得人們多加關注的問題。

編輯:admin 最后修改時間:2018-05-08