目前,,在許多情況下設(shè)計(jì)人員會(huì)用軟件實(shí)現(xiàn)以往由硬件完成的電路功能,,其原因是低成本的微處理器(up)為大家提供了廣泛的選擇。軟件常常是解決問題的成本最低,、靈活性最高的方案,,但它也帶來一些麻煩那就是設(shè)計(jì)人員為了確保系統(tǒng)的可靠性,,要進(jìn)行一些額外的軟件測試。如果軟件程序中沒有代碼錯(cuò)誤,,要求在10000條指令中出錯(cuò)率不要超過10處,,即其準(zhǔn)確率能夠保證千分之一左右,則系統(tǒng)的可靠性就有了保證,,然而這實(shí)際上并非易事,,從而系統(tǒng)可靠性就不能得到確保。
在臺(tái)式機(jī)系統(tǒng)中出現(xiàn)導(dǎo)致系統(tǒng)癱瘓的軟件錯(cuò)誤并不可怕,,因?yàn)橛脩糁恍柚匦聠?dòng)系統(tǒng)即可,它只會(huì)造成少量數(shù)據(jù)的丟失,。然而,,對(duì)于運(yùn)行在工控系統(tǒng)的軟件,系統(tǒng)必須能夠在沒有人為干預(yù)的條件下恢復(fù)故障,。這一特性在兩種情況下是非常關(guān)鍵的,,即一種是高有效性系統(tǒng),如服務(wù)器,、電話系統(tǒng)以及生產(chǎn)線等,,另一種是高可靠性系統(tǒng),一旦出現(xiàn)錯(cuò)誤將造成傷害,,如汽車,、醫(yī)療設(shè)備、工業(yè)控制,、機(jī)器人,、自動(dòng)門等。即使不考慮上述設(shè)備應(yīng)用上的嚴(yán)格要求,,系統(tǒng)也應(yīng)在無需用戶干預(yù)(按下復(fù)位鍵或重新上電)的條件下能自動(dòng)從故障狀態(tài)進(jìn)行恢復(fù),,這是非常重要和有益的,因?yàn)橹挥羞@樣才能使用戶覺察不到設(shè)備內(nèi)部出現(xiàn)了問題。為改善并解決這類系統(tǒng)可靠性,,人們迫切要尋求出一種簡單,、有效的技術(shù)措施來以確保此要求的實(shí)現(xiàn),而應(yīng)用“看門狗”技術(shù)和電路,,是一種最佳方案,。
看門狗(Watchdog)技術(shù)
看門狗是一個(gè)計(jì)數(shù)器,它需要在一定的看門狗延時(shí)周期內(nèi)被清零,,如果沒有清零動(dòng)作,,看門狗電路將產(chǎn)生一個(gè)復(fù)位信號(hào)使系統(tǒng)重新啟動(dòng)或建立—個(gè)非屏蔽中斷(NMl)、執(zhí)行故障恢復(fù)子程序,。大多數(shù)看門狗電路是沿觸發(fā),,這樣,無論是上升沿還是下降沿觸發(fā)看門狗的輸入端(WDl)都能夠清計(jì)數(shù)器,。WDI引腳連接在處理器的一個(gè)I/O口,,這條口線由軟件觸發(fā)(圖1)。清看門狗計(jì)數(shù)器的命令必須在主程序內(nèi)(圖2),。如果看門狗沒有被清零,,復(fù)位后軟件將從地址0000(啟動(dòng)程序)開始運(yùn)行。計(jì)算主程序的運(yùn)行時(shí)間往往很困難,,因?yàn)樵诖似陂g可能需要多次調(diào)用子程序,,調(diào)用次數(shù)的多少與系統(tǒng)輸入有關(guān)。因此,,設(shè)計(jì)人員常常選擇看門狗延時(shí)周期遠(yuǎn)遠(yuǎn)高于所測試到的循環(huán)時(shí)間或計(jì)算出的循環(huán)時(shí)間,。圖3表示正常工作情況下(看門狗在延時(shí)周期內(nèi)被請(qǐng)零)的看門狗信號(hào)和復(fù)位信號(hào)。圖4中,,在看門狗計(jì)數(shù)器溢出時(shí)發(fā)生了一次復(fù)位,,工業(yè)標(biāo)準(zhǔn)的看門狗電路延時(shí)周期在lOOms至2s范圍內(nèi),當(dāng)然也有些可調(diào)節(jié)或定制的看門狗電路能夠覆蓋更寬的延時(shí)范圍(30ms至幾分鐘),。如果主程序的執(zhí)行時(shí)間過長(指相對(duì)于看門狗電路而言),,設(shè)計(jì)人員可以在主程序的不同部位多次執(zhí)行看門狗觸發(fā)命令,也可以選用看門狗延時(shí)周期更長的器件,。
一種防止系統(tǒng)滯留在死循環(huán)的技術(shù)是在主程序的開始部分將相應(yīng)的I/O引腳置為高電平,,而在主程序的另一部分將其置為低電平。如果軟件在主程序的起始部分進(jìn)入了死循環(huán),,由于WDI始終保持高電平(圖5),,看門狗將產(chǎn)生延時(shí)輸出、系統(tǒng)被復(fù)位,。如果采用一個(gè)低—高—低的脈沖(圖2所示),,看門狗將被請(qǐng)零,,但系統(tǒng)仍處于阻塞狀態(tài)。為解決這個(gè)問題,,一種更老練的方法是對(duì)程序中的多項(xiàng)任務(wù)進(jìn)行監(jiān)視,,每項(xiàng)任務(wù)設(shè)置一個(gè)標(biāo)志,只有當(dāng)全部標(biāo)志置位后看門狗電路才被觸發(fā),。執(zhí)行全部任務(wù)的時(shí)間要比看門狗延時(shí)周期短,。雖然圖2和圖5對(duì)實(shí)際程序只作了一個(gè)最簡單的對(duì)比,但它表達(dá)了與此相應(yīng)的基本概念,。在更復(fù)雜的系統(tǒng)中還存在一些潛在問題,,如存儲(chǔ)器泄漏、堆棧溢出等,,系統(tǒng)同樣需要對(duì)這些情況進(jìn)行監(jiān)視,,只需通過合理的程序設(shè)計(jì),認(rèn)真審核代碼或采用專門的軟件工具也可以解決上述問題(在此對(duì)這些超出了本文的范圍問題不作討論),。
看門狗電路的應(yīng)用與選擇
內(nèi)部看門狗與外部看門狗
許多μP(微處理器)集成了可編程看門狗功能,,軟件控制可禁止其工作。內(nèi)置看門狗易受代碼錯(cuò)誤的影響,,它無法提供外部獨(dú)立看門狗電路所具有的保護(hù)能力,。
在對(duì)安全性能要求較高的應(yīng)用中(如自動(dòng)門、醫(yī)療設(shè)備,、機(jī)器人等),,內(nèi)置看門狗是無法接受的,管理層要求采用獨(dú)立的外部看門狗電路,。使用外部看門狗電路降低關(guān)鍵系統(tǒng)的風(fēng)險(xiǎn)是一個(gè)很好的習(xí)慣,。
簡單的看門狗+復(fù)位
通常看門狗延時(shí)將重新復(fù)位系統(tǒng),,大多數(shù)看門狗電路與μP復(fù)位集成在一起,它同時(shí)可以監(jiān)視處理器的供電電壓(工廠預(yù)設(shè)監(jiān)視電壓為2.5V,、3.0V,、3.3V或5V)。在出現(xiàn)看門狗延時(shí)或電源電壓跌落的情況下均可產(chǎn)生復(fù)位動(dòng)作(見圖6的輸出),。圖6所示的MAX823-MAX825系列產(chǎn)品就包含了這兩種功能,,即看門狗和復(fù)位。它們可提供標(biāo)準(zhǔn)的復(fù)位電壓門限,、標(biāo)準(zhǔn)的看門狗延時(shí)周期(最小為1.12s)和復(fù)位延遲(最小為140ms),,僅消耗6uA電流。這些器件具有超小型SC70封裝,。
工廠預(yù)置看門狗系列
MAX6316-MAX6322系列提供了26種工廠預(yù)置的復(fù)位電壓門限,、4種看門狗延時(shí)周期(分別為4.3ms、71ms、1.12s,、17.9s),、4種復(fù)位延遲(分別為1ms、20ms,、140ms,、1.12s)以及4種輸出配置(推挽、開漏或雙向輸出),。
可用電容調(diào)節(jié)的看門狗
如果應(yīng)用中要求靈活的看門狗延時(shí)周期,,設(shè)計(jì)人員可以選用可調(diào)節(jié)電路,MAX6746-MAX6753系列產(chǎn)品既提供了工廠預(yù)置的復(fù)位電壓門限,,也提供了分壓編程的復(fù)位電壓門限(工廠預(yù)設(shè),,或可用分壓器R1/R2在1.575V至5V間調(diào)節(jié)),另外,,它們還可以利用外部電容調(diào)節(jié)看門狗延時(shí)周期(當(dāng)電容Cswt為100Pf至100Nf數(shù)值時(shí),,在700ms至70s范圍內(nèi)分兩段調(diào)節(jié))和復(fù)位延遲(預(yù)設(shè)或用電容Csrt在0.5ms至5s調(diào)節(jié))。
其中:復(fù)位電壓由分壓器R1/R2決定,,復(fù)位延遲時(shí)間由電容Csrt設(shè)置,,看門狗延時(shí)周期由電容Cswt設(shè)置。
設(shè)計(jì)人員利用如此寬范圍的看門狗延時(shí)周期可以為任何應(yīng)用提供解決方案,。MAX6301-MAX6304系列基本與MAX6746-MAX6753系列相同,,但可提供SO或DIP封裝。
較長啟動(dòng)/延時(shí)周期,、引腳可選的看門狗
對(duì)于啟動(dòng)過程較長的應(yīng)用,,希望提供兩個(gè)不同的延時(shí)周期:一個(gè)較長的初始化延時(shí)周期和一個(gè)較短的正常工作延時(shí)周期。MAX6369—MAX6374系列具有WDI引腳可編程的啟動(dòng)延遲,,可選范圍:200ms至60s,,以及可在30ms至60s范圍內(nèi)編程的看門狗延時(shí)周期。一些版本還提供看門狗的首次邊沿激活功能,,以滿足啟動(dòng)過程更長的應(yīng)用,。在這些芯片中,看門狗電路在啟動(dòng)過程中被禁止,,來自μP相關(guān)I/O引腳的第一個(gè)邊沿可激活看門狗電路,。
多電壓監(jiān)控看門狗
對(duì)于雙電源供電系統(tǒng),MAX6358-MAX6360系列可以監(jiān)視兩路標(biāo)準(zhǔn)電壓,,并提供長啟動(dòng)周期和標(biāo)準(zhǔn)延時(shí)周期的看門狗,;對(duì)于三組電源供電或需要高有效和低有效復(fù)位輸出的系統(tǒng),設(shè)計(jì)人員可以選用MAX6721-MAX6729系列產(chǎn)品,,這些器件提供長啟動(dòng)周期和標(biāo)準(zhǔn)延時(shí)周期的雙模式看門狗功能,。它們可監(jiān)視兩路標(biāo)準(zhǔn)的電源電壓(MAX6721-MAX6722)或兩路標(biāo)準(zhǔn)電壓“+”一路可調(diào)電壓(MAX6723-MAX6724),。這些器件帶有手動(dòng)復(fù)位輸入,電源失效比較器,,雙復(fù)位輸出和輸出,。
窗式看門狗提供超高可靠性
為獲得超高的可靠性,設(shè)計(jì)人員可以利用MAX6323/MAX6324窗式看門狗電路,,使用這些器件時(shí)必須在規(guī)定的窗口定時(shí)周期內(nèi)為看門狗提供清零脈沖,,有效脈沖可以在上次觸發(fā)脈沖1.5ms后送達(dá),也可以在上次觸發(fā)脈沖10ms后到達(dá),,利用MAX6323/MAX6324系統(tǒng)可以脫離離散循環(huán),,如果清看門狗指令在循環(huán)內(nèi)執(zhí)行,它將發(fā)出一串高速脈沖,,這些脈沖可以將常規(guī)的看門狗清零,,而且不產(chǎn)生復(fù)位。如果利用窗式看門狗電路則避免了上述問題,,因?yàn)檫@種器件在兩次看門狗觸發(fā)脈沖之間要求一定的時(shí)間間隔,。這些器件的典型應(yīng)用包括防抱死(ABS)系統(tǒng)或其它汽車電路,工業(yè)控制,、醫(yī)療產(chǎn)品等要求高安全性的應(yīng)用或?qū)ο到y(tǒng)有效性要求苛刻的應(yīng)用,。
結(jié)論
各種軟件程序都會(huì)出現(xiàn)代碼錯(cuò)誤,設(shè)計(jì)人員必須保證系統(tǒng)不出現(xiàn)死鎖,。噪聲和EMI也會(huì)影響系統(tǒng)中的數(shù)據(jù),,導(dǎo)致不可預(yù)測的系統(tǒng)動(dòng)作,看門狗電路是提高系統(tǒng)可靠性的一種簡單,、廉價(jià)方案,。利用外部看門狗電路可以防止系統(tǒng)死鎖,如果WDI信號(hào)在規(guī)定的看門狗延時(shí)周期內(nèi)沒有被觸發(fā)將對(duì)μP進(jìn)行復(fù)位,。在目前種類繁多的看門狗器件中,,設(shè)計(jì)人員一定能夠找到一款與其需求相吻合的技術(shù)與器件。
“看門狗”抗干擾新技術(shù)經(jīng)在發(fā)電廠400噸工業(yè)鍋爐爐堂安全控制系統(tǒng)中得到了較好的應(yīng)用,,在現(xiàn)場環(huán)境與電網(wǎng)干擾嚴(yán)重的情況下,,計(jì)算機(jī)系統(tǒng)能對(duì)各種燃油噴嘴“關(guān)”與“開”進(jìn)行實(shí)時(shí)控制,從而保證燃油進(jìn)量的準(zhǔn)確性,,極大的提高了工業(yè)鍋爐爐堂安全控制系統(tǒng)的可靠性和鍋爐燃燒效率。其最大的成功在于,,一改以往一受干擾,,計(jì)算機(jī)系統(tǒng)要人工復(fù)位(Reset)并重新啟動(dòng)而突然造成燃油噴嘴“關(guān)”與“開”的失控。如今那種嚴(yán)重影響工業(yè)鍋爐正常運(yùn)轉(zhuǎn)的現(xiàn)象己經(jīng)一去不復(fù)返了,。實(shí)踐證明該“看門狗”技術(shù)不失為各類工控系統(tǒng)高可靠性有效新技術(shù),。