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