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





