引言
在實際的系統(tǒng)應(yīng)用中,我們經(jīng)常會遇到對系統(tǒng)可靠性要求極高的場合,通常采用的解決辦法就是雙機熱備份。
原理:
在一個應(yīng)用中,我們需要對多路電源進行切換控制,因為系統(tǒng)不允許掉電,所以對該切換控制的要求非常高。為了解決該問題,我們采取了雙 MCU 熱備份的方案。圖 1 是這個小系統(tǒng)的部分原理圖。
圖 1:雙 MCU 熱備份原理圖
原理說明:
1、圖 1 中,我們使用了兩顆 32 腳的 HR8P506FHLK 芯片??紤]到應(yīng)用中還需處理一些較復雜的信號,故選用這顆 32 位的 CORTEX M0 內(nèi)核的 MCU。
2、使用比較器對多路電源進行檢測,比較器的輸出端連接到 MCU 的外中斷口上,通過外部中斷檢測比較器輸出端的電平變化,這個原理比較簡單,容易理解。
在實際應(yīng)用中,多路檢測部分有一個需注意的關(guān)鍵點:比較器產(chǎn)生的信號,分離成兩路,分別送到兩個 MCU, 這四路信號必須分別經(jīng)過電阻隔離才能接入 MCU 輸入端口,即圖 1 中的隔離電阻 R1、R7、R16、R17。
3、兩顆 MCU 的切換檢測控制是通過一組 UART 口和一個普通 IO 口實現(xiàn)的,如圖 1 中的 TXD1、RXD1和 PA23。
雙機切換檢測控制方法:
該如何裁定兩片 MCU 中的哪一片當前應(yīng)該工作?秘訣在于使用了一組 UART 口和一個普通 IO 口。兩個 MCU 一個工作于主模式,一個工作于輔助模式。
當系統(tǒng)正常時,工作于主模式的 MCU 承擔檢測和控制工作。但此時工作于輔助模式的 MCU 也同時在檢測輸入信號,并且做好了輸出控制的準備,只是最后的輸出并沒有執(zhí)行。
運行時,主模式的 MCU 會與輔助模式的 MCU 進行數(shù)據(jù)交換,交換內(nèi)容至少包括:對輸入信號的檢測結(jié)果、輸出控制變量值、相關(guān)的運算結(jié)果等等。
這樣,兩個 MCU 的信息會始終保持一致。
正常運行時,除了有 UART 口的信息交換外,還有一個單獨的 IO 口互連,這個 IO 口的作用是輸出心跳信號,主模式的 MCU 運行時,會定時輸出心跳信號,副模式的 MCU 會檢測這個信號。
心跳信號的輸出程序和檢測程序分別如下:
圖 3:心跳信號產(chǎn)生的程序
圖 4:心跳信號檢測的程序
當 UART 口通訊中斷時,這個心跳信號的輸出也會有相應(yīng)的變化,此時輔助模式 MCU 會檢測這個口的信號狀態(tài)變化,以確定主模式 MCU 是否正常工作,這個檢測過程 20ms 時間內(nèi)完成。
如果輔助模式 MCU 確定主 MCU 有異常,則接管檢測和控制工作,并且會告知用戶。
問題:
1)這樣的方式在實際應(yīng)用中,會不會出現(xiàn)誤判?
當然會,即使我們采取再多的方法,誤判也無法避免。
2)如果出現(xiàn)誤判是不是會導致控制邏輯混亂呢?
當然不會,因為輸出控制電路還有一套邏輯來保證系統(tǒng)工作的可靠性。
后記:
在實際應(yīng)用中,輸出控制電路的邏輯是如何處理的呢,這個問題留待下一次詳細解釋。為了提高系統(tǒng)可靠性和安全性,會有其他更好的方法和思路,歡迎交流探討。