解決工控系統(tǒng)高可靠性的有效技術(shù)
發(fā)布時間:2007/8/20 0:00:00 訪問次數(shù):433
魯維德
目前,在許多情況下設計人員會用軟件實現(xiàn)以往由硬件完成的電路功能,其原因是低成本的微處理器(up)為大家提供了廣泛的選擇。軟件常常是解決問題的成本最低、靈活性最高的方案,但它也帶來一些麻煩 那就是設計人員為了確保系統(tǒng)的可靠性,要進行一些額外的軟件測試。如果軟件程序中沒有代碼錯誤,要求在10000條指令中出錯率不要超過10處,即其準確率能夠保證千分之一左右,則系統(tǒng)的可靠性就有了保證,然而這實際上并非易事,從而系統(tǒng)可靠性就不能得到確保。
在臺式機系統(tǒng)中出現(xiàn)導致系統(tǒng)癱瘓的軟件錯誤并不可怕,因為用戶只需重新啟動系統(tǒng)即可,它只會造成少量數(shù)據(jù)的丟失。然而,對于運行在工控系統(tǒng)的軟件,系統(tǒng)必須能夠在沒有人為干預的條件下恢復故障。這一特性在兩種情況下是非常關(guān)鍵的,即一種是高有效性系統(tǒng),如服務器、電話系統(tǒng)以及生產(chǎn)線等,另一種是高可靠性系統(tǒng),一旦出現(xiàn)錯誤將造成傷害,如汽車、醫(yī)療設備、工業(yè)控制、機器人、自動門等。即使不考慮上述設備應用上的嚴格要求,系統(tǒng)也應在無需用戶干預(按下復位鍵或重新上電)的條件下能自動從故障狀態(tài)進行恢復,這是非常重要和有益的,因為只有這樣才能使用戶覺察不到設備內(nèi)部出現(xiàn)了問題。為改善并解決這類系統(tǒng)可靠性,人們迫切要尋求出一種簡單、有效的技術(shù)措施來以確保此要求的實現(xiàn),而應用“看門狗”技術(shù)和電路,是一種最佳方案。
看門狗(Watchdog)技術(shù)
看門狗是一個計數(shù)器,它需要在一定的看門狗延時周期內(nèi)被清零,如果沒有清零動作,看門狗電路將產(chǎn)生一個復位信號使系統(tǒng)重新啟動或建立—個非屏蔽中斷(NMl)、執(zhí)行故障恢復子程序。大多數(shù)看門狗電路是沿觸發(fā),這樣,無論是上升沿還是下降沿觸發(fā)看門狗的輸入端(WDl)都能夠清計數(shù)器。WDI引腳連接在處理器的一個I/O口,這條口線由軟件觸發(fā)(圖1)。清看門狗計數(shù)器的命令必須在主程序內(nèi)(圖2)。如果看門狗沒有被清零,復位后軟件將從地址0000(啟動程序)開始運行。計算主程序的運行時間往往很困難,因為在此期間可能需要多次調(diào)用子程序,調(diào)用次數(shù)的多少與系統(tǒng)輸入有關(guān)。因此,設計人員常常選擇看門狗延時周期遠遠高于所測試到的循環(huán)時間或計算出的循環(huán)時間。圖3表示正常工作情況下(看門狗在延時周期內(nèi)被請零)的看門狗信號和復位信號。圖4中,在看門狗計數(shù)器溢出時發(fā)生了一次復位,工業(yè)標準的看門狗電路延時周期在lOOms至2s范圍內(nèi),當然也有些可調(diào)節(jié)或定制的看門狗電路能夠覆蓋更寬的延時范圍 (30ms至幾分鐘)。如果主程序的執(zhí)行時間過長(指相對于看門狗電路而言),設計人員可以在主程序的不同部位多次執(zhí)行看門狗觸發(fā)命令,也可以選用看門狗延時周期更長的器件。
一種防止系統(tǒng)滯留在死循環(huán)的技術(shù)是在主程序的開始部分將相應的I/O引腳置為高電平,而在主程序的另一部分將其置為低電平。如果軟件在主程序的起始部分進入了死循環(huán), 由于WDI始終保持高電平(圖5),看門狗將產(chǎn)生延時輸出、系統(tǒng)被復位。如果采用一個低—高—低的脈沖(圖2所示),看門狗將被請零,但系統(tǒng)仍處于阻塞狀態(tài)。為解決這個問題,一種更老練的方法是對程序中的多項任務進行監(jiān)視,每項任務設置一個標志,只有當全部標志置位后看門狗電路才被觸發(fā)。執(zhí)行全部任務的時間要比看門狗延時周期短。雖然圖2和圖5對實際程序只作了一個最簡單的對比,但它表達了與此相應的基本概念。在更復雜的系統(tǒng)中還存在一些潛在問題,如存儲器泄漏、堆棧溢出等,系統(tǒng)同樣需要對這些情況進行監(jiān)視,只需通過合理的程序設計,認真審核代碼或采用專門的軟件工具也可以解決上述問題(在此對這些超出了本文的范圍問題不作討論)。
看門狗電路的應用與選擇
內(nèi)部看門狗與外部看門狗
許多μP(微處理器)集成了可編程看門狗功能,軟件控制可禁止其工作。內(nèi)置看門狗易受代碼錯誤的影響,它無法提供外部獨立看門狗電路所具有的保護能力。
在對安全性能要求較高的應用中(如自動門、醫(yī)療設備、機器人等),內(nèi)置看門狗是無法接受的,管理層要求采用獨立的外部看門狗電路。使用外部看門狗電路降低關(guān)鍵系統(tǒng)的風險是一個很好的習慣。
簡單的看門狗+復位
通?撮T狗延時將重新復位系統(tǒng),大多數(shù)看門狗電路與μP復位集成在一起,它同時可以監(jiān)視處理器的供電電壓(工廠預設監(jiān)視電壓為2.5V、3.0V、3.3V或5V)。在出現(xiàn)看門狗延時或電源電壓跌落的情況下均可產(chǎn)生復位動作(見圖6的 輸出)。 圖6所示的MAX823-MAX825系列產(chǎn)品就包含了這兩種功能,即看門
魯維德
目前,在許多情況下設計人員會用軟件實現(xiàn)以往由硬件完成的電路功能,其原因是低成本的微處理器(up)為大家提供了廣泛的選擇。軟件常常是解決問題的成本最低、靈活性最高的方案,但它也帶來一些麻煩 那就是設計人員為了確保系統(tǒng)的可靠性,要進行一些額外的軟件測試。如果軟件程序中沒有代碼錯誤,要求在10000條指令中出錯率不要超過10處,即其準確率能夠保證千分之一左右,則系統(tǒng)的可靠性就有了保證,然而這實際上并非易事,從而系統(tǒng)可靠性就不能得到確保。
在臺式機系統(tǒng)中出現(xiàn)導致系統(tǒng)癱瘓的軟件錯誤并不可怕,因為用戶只需重新啟動系統(tǒng)即可,它只會造成少量數(shù)據(jù)的丟失。然而,對于運行在工控系統(tǒng)的軟件,系統(tǒng)必須能夠在沒有人為干預的條件下恢復故障。這一特性在兩種情況下是非常關(guān)鍵的,即一種是高有效性系統(tǒng),如服務器、電話系統(tǒng)以及生產(chǎn)線等,另一種是高可靠性系統(tǒng),一旦出現(xiàn)錯誤將造成傷害,如汽車、醫(yī)療設備、工業(yè)控制、機器人、自動門等。即使不考慮上述設備應用上的嚴格要求,系統(tǒng)也應在無需用戶干預(按下復位鍵或重新上電)的條件下能自動從故障狀態(tài)進行恢復,這是非常重要和有益的,因為只有這樣才能使用戶覺察不到設備內(nèi)部出現(xiàn)了問題。為改善并解決這類系統(tǒng)可靠性,人們迫切要尋求出一種簡單、有效的技術(shù)措施來以確保此要求的實現(xiàn),而應用“看門狗”技術(shù)和電路,是一種最佳方案。
看門狗(Watchdog)技術(shù)
看門狗是一個計數(shù)器,它需要在一定的看門狗延時周期內(nèi)被清零,如果沒有清零動作,看門狗電路將產(chǎn)生一個復位信號使系統(tǒng)重新啟動或建立—個非屏蔽中斷(NMl)、執(zhí)行故障恢復子程序。大多數(shù)看門狗電路是沿觸發(fā),這樣,無論是上升沿還是下降沿觸發(fā)看門狗的輸入端(WDl)都能夠清計數(shù)器。WDI引腳連接在處理器的一個I/O口,這條口線由軟件觸發(fā)(圖1)。清看門狗計數(shù)器的命令必須在主程序內(nèi)(圖2)。如果看門狗沒有被清零,復位后軟件將從地址0000(啟動程序)開始運行。計算主程序的運行時間往往很困難,因為在此期間可能需要多次調(diào)用子程序,調(diào)用次數(shù)的多少與系統(tǒng)輸入有關(guān)。因此,設計人員常常選擇看門狗延時周期遠遠高于所測試到的循環(huán)時間或計算出的循環(huán)時間。圖3表示正常工作情況下(看門狗在延時周期內(nèi)被請零)的看門狗信號和復位信號。圖4中,在看門狗計數(shù)器溢出時發(fā)生了一次復位,工業(yè)標準的看門狗電路延時周期在lOOms至2s范圍內(nèi),當然也有些可調(diào)節(jié)或定制的看門狗電路能夠覆蓋更寬的延時范圍 (30ms至幾分鐘)。如果主程序的執(zhí)行時間過長(指相對于看門狗電路而言),設計人員可以在主程序的不同部位多次執(zhí)行看門狗觸發(fā)命令,也可以選用看門狗延時周期更長的器件。
一種防止系統(tǒng)滯留在死循環(huán)的技術(shù)是在主程序的開始部分將相應的I/O引腳置為高電平,而在主程序的另一部分將其置為低電平。如果軟件在主程序的起始部分進入了死循環(huán), 由于WDI始終保持高電平(圖5),看門狗將產(chǎn)生延時輸出、系統(tǒng)被復位。如果采用一個低—高—低的脈沖(圖2所示),看門狗將被請零,但系統(tǒng)仍處于阻塞狀態(tài)。為解決這個問題,一種更老練的方法是對程序中的多項任務進行監(jiān)視,每項任務設置一個標志,只有當全部標志置位后看門狗電路才被觸發(fā)。執(zhí)行全部任務的時間要比看門狗延時周期短。雖然圖2和圖5對實際程序只作了一個最簡單的對比,但它表達了與此相應的基本概念。在更復雜的系統(tǒng)中還存在一些潛在問題,如存儲器泄漏、堆棧溢出等,系統(tǒng)同樣需要對這些情況進行監(jiān)視,只需通過合理的程序設計,認真審核代碼或采用專門的軟件工具也可以解決上述問題(在此對這些超出了本文的范圍問題不作討論)。
看門狗電路的應用與選擇
內(nèi)部看門狗與外部看門狗
許多μP(微處理器)集成了可編程看門狗功能,軟件控制可禁止其工作。內(nèi)置看門狗易受代碼錯誤的影響,它無法提供外部獨立看門狗電路所具有的保護能力。
在對安全性能要求較高的應用中(如自動門、醫(yī)療設備、機器人等),內(nèi)置看門狗是無法接受的,管理層要求采用獨立的外部看門狗電路。使用外部看門狗電路降低關(guān)鍵系統(tǒng)的風險是一個很好的習慣。
簡單的看門狗+復位
通?撮T狗延時將重新復位系統(tǒng),大多數(shù)看門狗電路與μP復位集成在一起,它同時可以監(jiān)視處理器的供電電壓(工廠預設監(jiān)視電壓為2.5V、3.0V、3.3V或5V)。在出現(xiàn)看門狗延時或電源電壓跌落的情況下均可產(chǎn)生復位動作(見圖6的 輸出)。 圖6所示的MAX823-MAX825系列產(chǎn)品就包含了這兩種功能,即看門