包明磊,姚艷松
(國電南京自動化股份有限公司,南京 210061)
電力系統(tǒng)微機(jī)繼電保護(hù)裝置作為保證電力系統(tǒng)設(shè)備安全運(yùn)行的自動裝置,對于嵌入式系統(tǒng)自身的可靠性有著很高的要求。多年來,圍繞著保護(hù)裝置嵌入式系統(tǒng)的抗干擾技術(shù),以及其受干擾后的自我恢復(fù),在硬件和軟件等方面積累了多種方法。這些方法相互結(jié)合,配合使用,有效地提高了系統(tǒng)的可靠性與抗干擾能力[1-2]。
看門狗技術(shù)是最常見的抗干擾技術(shù)。看門狗分為硬看門狗和軟看門狗;硬看門狗采用“看門狗”電路,即通過定時器對任務(wù)在運(yùn)行時間上加以約束;軟看門狗采用處理器內(nèi)部定時器,把任務(wù)的最大理論運(yùn)行時間作為時間約束[2-4]。
以往,在多任務(wù)系統(tǒng)中一般設(shè)置一個優(yōu)先級最高的任務(wù)作為監(jiān)視器,對系統(tǒng)中運(yùn)行的所有任務(wù)進(jìn)行監(jiān)控,只要有一個任務(wù)出現(xiàn)故障,該監(jiān)視任務(wù)就延遲喂狗,使硬看門狗溢出,重啟系統(tǒng)。使用這種方法需要額外消耗嵌入式系統(tǒng)的信號量資源和任務(wù)運(yùn)行時間,減少保護(hù)算法的運(yùn)行時間,且對監(jiān)視任務(wù)要求較高。當(dāng)中斷運(yùn)行時間過長時,無法及時恢復(fù)[3]。
本文介紹一種多任務(wù)硬看門狗容錯技術(shù),通過這種技術(shù),保護(hù)裝置嵌入式軟件的所有任務(wù)(包括中斷)都可以互相無干擾地對硬看門狗喂狗,可以在確保嵌入式系統(tǒng)運(yùn)行效率的基礎(chǔ)上,保證系統(tǒng)的安全可靠。
多任務(wù)硬看門狗容錯技術(shù)是以硬看門狗芯片為基礎(chǔ),以FPGA為核心,以外圍電路為輔助,充分考慮保護(hù)裝置的需求,共同構(gòu)成一個可實(shí)現(xiàn)監(jiān)視、告警、自恢復(fù)等功能的抗干擾系統(tǒng),具體原理如圖1所示。保護(hù)裝置一般需要運(yùn)行7~10個任務(wù)和2~3個定時中斷,每個任務(wù)和中斷均需要確保硬看門狗喂狗可靠,F(xiàn)PGA中的“多任務(wù)喂狗監(jiān)視系統(tǒng)”監(jiān)視這些任務(wù)的喂狗信號,實(shí)時統(tǒng)計(jì)每個喂狗信號的狀態(tài),只有當(dāng)所有喂狗信號均有效時,該系統(tǒng)才對硬看門狗發(fā)出實(shí)際的喂狗信號。若某個任務(wù)或者中斷出現(xiàn)故障,該系統(tǒng)會自動停止對硬看門狗的喂狗;如果硬看門狗在設(shè)定時間內(nèi)沒有被喂狗,則發(fā)出RESET信號重啟嵌入式系統(tǒng)。此外,本技術(shù)包含一個計(jì)數(shù)器系統(tǒng),負(fù)責(zé)統(tǒng)計(jì)復(fù)位信號的次數(shù),當(dāng)連續(xù)多次出現(xiàn)復(fù)位信號,則說明嵌入式軟件發(fā)生嚴(yán)重故障,該系統(tǒng)發(fā)出告警信號通知維修和更換,確保保護(hù)裝置的可靠性。

圖1 多任務(wù)硬看門狗容錯技術(shù)原理框圖
在實(shí)際應(yīng)用中,主CPU和FPGA之間可以通過總線相連,各任務(wù)和中斷的喂狗信號可以以命令的形式對“多任務(wù)喂狗監(jiān)視系統(tǒng)”進(jìn)行喂狗。在整個系統(tǒng)的硬件設(shè)計(jì)中,計(jì)數(shù)器告警電路是個難點(diǎn),本文給出了具體的硬件原理圖,如圖2所示。

圖2 計(jì)數(shù)器告警電路原理圖
硬看門狗MAX823S是Maxim公司推出的小體積、低功耗的看門狗芯片。該芯片若在1.6s內(nèi)沒有被觸發(fā)WDI,則引 腳 發(fā) 出 200ms的 低 電 平 信 號[4]。SN74HC393DT為計(jì)數(shù)器,SN74HC32D為或門。MAX823S的WDI引腳接收“多任務(wù)喂狗監(jiān)視系統(tǒng)”的喂狗信號引腳產(chǎn)生的復(fù)位信號不僅重啟系統(tǒng),同時接入SN74HC32D的輸入端。SN74HC32D的輸出接計(jì)數(shù)器SN74HC393DT的CLK引腳,SN74HC393DT的Q2引腳可以發(fā)出告警信號,同時接入SN74HC32D的輸入端作為閉鎖信號。SN74HC393DT的MR引腳可以接入CPU的PIO引腳,由CPU對其定時初始化。
當(dāng)嵌入式系統(tǒng)正常工作的時候,CPU可以不停地發(fā)送計(jì)數(shù)器清零信號、復(fù)位告警信號;當(dāng)嵌入式系統(tǒng)發(fā)生故障時,硬看門狗在設(shè)定時間內(nèi)沒有收到“多任務(wù)喂狗監(jiān)視系統(tǒng)”的喂狗信號 WDI,發(fā)出的復(fù)位信號產(chǎn)生脈沖,計(jì)數(shù)器對這個脈沖進(jìn)行計(jì)數(shù);當(dāng)嵌入式系統(tǒng)連續(xù)發(fā)生故障無法恢復(fù)時,一方面無法發(fā)出清零信號對計(jì)數(shù)器清零,另一方面硬看門狗持續(xù)發(fā)出復(fù)位信號,當(dāng)復(fù)位信號的次數(shù)超過4次時計(jì)數(shù)器SN74HC393DT的Q2引腳有效,發(fā)出告警信號,同時該信號將閉鎖CLK的輸入信號,防止計(jì)數(shù)器溢出。
多任務(wù)喂狗監(jiān)視系統(tǒng)是整個容錯技術(shù)的核心,考慮到保護(hù)裝置的需求,要求該系統(tǒng)運(yùn)算速度快、延時小、支持多任務(wù)并行處理。由于FPGA兼容了PLD和通用門陣列的優(yōu)點(diǎn),除了具有體系結(jié)構(gòu)和邏輯單元靈活、集成度高,以及電壓適用范圍寬等特點(diǎn)外,還具有設(shè)計(jì)開發(fā)周期短、設(shè)計(jì)制造成本低、移植方便等優(yōu)點(diǎn)。為了保證監(jiān)視系統(tǒng)的實(shí)時性和可移植性,本設(shè)計(jì)選用FPGA實(shí)現(xiàn)該系統(tǒng)[5]。
在對FPGA芯片進(jìn)行開發(fā)編程時,由于Verilog HDL語言且具有設(shè)計(jì)技術(shù)齊全、方法靈活、支持廣泛、硬件描述能力強(qiáng)、易于共享和復(fù)用等優(yōu)點(diǎn),因此多任務(wù)喂狗監(jiān)視系統(tǒng)使用Verilog HDL語言進(jìn)行開發(fā)[6]。
根據(jù)容錯技術(shù)的設(shè)計(jì)思路,考慮到實(shí)用性、可靠性和拓展性,監(jiān)視系統(tǒng)的設(shè)計(jì)重點(diǎn)解決以下問題:
① 該系統(tǒng)可以靈活設(shè)置需要監(jiān)視的喂狗命令接點(diǎn)(一個命令接點(diǎn)受一個任務(wù)或者中斷控制),并確保禁止的喂狗命令接點(diǎn)不會影響WDI信號的輸出;
② 該系統(tǒng)要具有自喂狗功能,即在配置不需要監(jiān)視任何喂狗命令接點(diǎn)時,還能夠自行喂狗,防止系統(tǒng)崩潰;
③ 該系統(tǒng)應(yīng)能夠方便可靠地增減可配置的喂狗命令接點(diǎn)的數(shù)量。
針對上述問題,本設(shè)計(jì)采用模塊化設(shè)計(jì)的思路,將系統(tǒng)設(shè)計(jì)分成兩個部分:命令接點(diǎn)監(jiān)視模塊和WDI產(chǎn)生模塊。
命令接點(diǎn)監(jiān)視模塊可以使能和監(jiān)視指定的喂狗命令接點(diǎn)。它是一個公共模塊,輸入量為初始化信號rst、清零信號clr、喂狗命令接點(diǎn)地址等等,輸出量是使能狀態(tài)enable和喂狗狀態(tài)status。
當(dāng)嵌入式軟件需要使能或者禁止某個喂狗命令接點(diǎn)時,該模塊可以通過命令解析改變使能狀態(tài)enable;當(dāng)嵌入式軟件通過命令對某個喂狗命令接點(diǎn)喂狗時,該模塊改變喂狗狀態(tài)status;此外該模塊還可以接收clr信號對喂狗狀態(tài)進(jìn)行復(fù)位。其核心代碼如下所示:

由最后一條代碼可見,由于喂狗狀態(tài)受使能狀態(tài)的控制,因此當(dāng)禁止某個喂狗命令接點(diǎn)時,該命令接點(diǎn)的喂狗狀態(tài)可以保持有效,從而確保禁止的喂狗命令接點(diǎn)不會影響到WDI信號的輸出。
WDI產(chǎn)生模塊負(fù)責(zé)調(diào)用命令接點(diǎn)監(jiān)視模塊,監(jiān)視每一個喂狗命令接點(diǎn),統(tǒng)計(jì)所有喂狗命令接點(diǎn)的喂狗狀態(tài),并決定是否發(fā)出WDI信號,軟件流程如圖3所示。

圖3 WDI產(chǎn)生模塊的軟件流程
其中,如何識別喂狗狀態(tài)并發(fā)出WDI信號是個技術(shù)關(guān)鍵點(diǎn),本系統(tǒng)定義一個喂狗信號總狀態(tài)TotalStatus,它是由各個喂狗命令接點(diǎn)的喂狗狀態(tài)“與”門組合而成。當(dāng)判斷該狀態(tài)有效時,則發(fā)出一段時間的WDI信號,并清除所有喂狗命令接點(diǎn)的喂狗狀態(tài),啟動下一輪的監(jiān)視;當(dāng)禁止監(jiān)視所有的喂狗命令接點(diǎn)時,該狀態(tài)恒定有效,一直發(fā)出WDI信號。
為了實(shí)現(xiàn)上述功能,本系統(tǒng)事先產(chǎn)生一個固定周期的脈沖波形WDIPulse,并設(shè)計(jì)一個由TotalStatus觸發(fā)的單穩(wěn)信號 WDIGate,由 WDIGate閉鎖和使能 WDIPulse的輸出達(dá)到控制WDI信號的目的。具體的核心代碼如下所示:

可見,TotalStatus的上升沿可以觸發(fā)至少8個clock的單穩(wěn)信號。在這段時間內(nèi)系統(tǒng)可以輸出WDI信號對硬看門狗喂狗,在TotalStatus有效后的第7個clock時,模塊清除各個喂狗命令接點(diǎn)的喂狗狀態(tài),確保可以監(jiān)視下一輪喂狗信號。當(dāng)禁止了所有的喂狗命令接點(diǎn)時,由于TotalStatus不受clr信號控制,使得 WDIGate一直有效,系統(tǒng)自行喂狗,防止系統(tǒng)崩潰。當(dāng)要增加或者刪減喂狗命令接點(diǎn)數(shù)量(目前為20個)的時候,只需要修改程序,增加或者刪減相應(yīng)的寄存器和調(diào)用代碼即可,方便且安全可靠。由于FPGA的并行處理能力,增加監(jiān)視的接點(diǎn)數(shù)量,系統(tǒng)延時不變。
為了驗(yàn)證算法中監(jiān)視和喂狗的效果,我們使用仿真工具對多任務(wù)喂狗監(jiān)視系統(tǒng)進(jìn)行了驗(yàn)證仿真,其仿真結(jié)果如圖4所示。

圖4 多任務(wù)喂狗監(jiān)視系統(tǒng)的仿真結(jié)果
圖4中,監(jiān)視了4個喂狗命令接點(diǎn)。其中,WDI0為定時中斷的喂狗信號,WDI1~WDI3為普通任務(wù)的喂狗信號。在這輪監(jiān)視中,WDI0的喂狗狀態(tài)在t1時有效,WDI1的喂狗狀態(tài)在t2時有效,則喂狗信號總狀態(tài)TotalStatus在t2時有效,并觸發(fā)單穩(wěn)信號WDIGate。在單穩(wěn)信號有效期間,WDI輸出;同時,TotalStatus信號在t3時清除了各個喂狗命令接點(diǎn)的喂狗狀態(tài),啟動下一輪監(jiān)視。
仿真結(jié)果表明,多任務(wù)喂狗監(jiān)視系統(tǒng)可以有效監(jiān)視各任務(wù)發(fā)出的喂狗信號,并根據(jù)喂狗信號的狀態(tài)發(fā)出正確的WDI信號,能夠滿足嵌入式系統(tǒng)對可靠性的要求。
本文介紹了一種應(yīng)用于電力系統(tǒng)繼電保護(hù)裝置內(nèi)的基于FPGA的多任務(wù)硬看門狗容錯技術(shù),實(shí)現(xiàn)了對嵌入式系統(tǒng)多任務(wù)的硬看門狗監(jiān)視。文章在闡述了該技術(shù)的設(shè)計(jì)原理基礎(chǔ)上,給出了具體的軟硬件實(shí)現(xiàn)方案。該技術(shù)與傳統(tǒng)的硬看門狗和多任務(wù)軟看門狗技術(shù)相比,有以下優(yōu)點(diǎn):
① 可直接監(jiān)視定時中斷和所有任務(wù),監(jiān)視范圍廣;
② 無需消耗嵌入式軟件額外的信號量資源和任務(wù)運(yùn)行時間,且每個任務(wù)的最大喂狗間隔時間相同;
③ 配置靈活,可方便增加監(jiān)視的任務(wù)數(shù)量,理論上無上限,且系統(tǒng)延時不變;
④ 對嚴(yán)重故障的嵌入式軟件,系統(tǒng)可以發(fā)出告警信號,便于維修和更換;
⑤ 可以自監(jiān)視,可靠性高。
多任務(wù)硬看門狗容錯技術(shù)已被應(yīng)用于最新的繼電保護(hù)裝置中,測試結(jié)果表明,該技術(shù)可以大大提高保護(hù)裝置嵌入式系統(tǒng)的可靠性,具有較高的應(yīng)用參考價值。
[1] 何立民.單片機(jī)高級教程[M].北京:北京航空航天大學(xué)出版社,2000.
[2] 易麗華.“看門狗”技術(shù)的實(shí)現(xiàn)[J].儀表技術(shù),2011(7):55-57.
[3] 戴積發(fā),胡玉霞,李緒勇,等.基于uC/OS-II操作系統(tǒng)的多任務(wù)看門狗設(shè)計(jì)[J].衡水學(xué)院學(xué)報,2009,11(4):31-33.
[4] 王璐,王楠.軟硬件結(jié)合實(shí)現(xiàn)的“看門狗”技術(shù)[J].現(xiàn)代電子技術(shù),2002(3):43-45.
[5] 田耕,徐文波.Xilinx FPGA開發(fā)實(shí)用教程[M].北京:清華大學(xué)出版社,2008.
[6] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程[M].北京:北京航空航天大學(xué)出版社,2008.