2012-10-15 35 views
9

假設我正在爲Arduino(或任何其他微控制器)開發失效保護機制。換句話說,當主控制器發生故障時,輔助微控制器或獨立電路板應該負責。Arduino失效保護機制

兩種可能的機制如下。

方法1 - 客戶端服務器機制

  • 有被單獨供電的2個相同的系統。
  • 輔助系統定期發送請求,主系統回覆。
  • 如果主系統無法回覆(多次),則系統將變爲主系統。

方法2 - 心跳機制

  • 有被單獨供電的2個相同的系統。
  • 主系統發送週期性心跳消息。
  • 如果有心臟跳動,則輔助節點知道主節點已啓動。
  • 當沒有心跳時,主節點被認爲已經死亡。輔助節點獲得控制權。

你們知道有更好的機制來實現嗎?

回答

12

通常在商業嵌入式系統中,watchdog timer將被用來重置處理器的情況下,它不能通過週期性地「踢狗」來響應。所有AVR微控制器(以及許多如果不是大多數其他品牌)都有內部看門狗定時器。雖然具有獨立的外部看門狗定時器的設計通常更健壯可靠。像this

external watchdog setup

對於需要更高程度的容錯系統,例如航空航天應用,三重冗餘或triple modular redundant架構使用。

在三重冗餘系統中,三個相同的處理組件同時執行相同的任務。然後將結果發送到投票電路或John von Neumann所稱的「majority organ」(第4.2.2節)。表決電路的輸出是三個處理組件的主要意見。

triple redundancy

這允許對處理組件中的一個,而不會影響系統的操作失敗。但是,如果投票電路失敗,那麼整個系統也會失敗。三重模塊化冗餘系統也通過實現三個表決電路來消除單點故障。

triple modular redundant

最終雖然,三個輸出將需要重新組合成一個結果,導致單一故障點。即使這個失敗點是人們看着三個儀表,每個儀表都監測相同的溫度。

您需要確定的是您需要系統的fault-tolerant以及您的系統可以處理什麼樣的mean time between failures (MTBF)。然後圍繞這個設計你的冗餘系統。

+0

+1爲指針:) –

+0

偉大的答案:) –

+0

該死的美麗圖!你用了什麼? – drozzy