基于 HR8P506 的双 MCU 热备份电源切换检测要点
扫描二维码
随时随地手机看文章
引言
在实际的系统应用中,我们经常会遇到对系统可靠性要求极高的场合,通常采用的解决办法就是双机热备份。
原理:
在一个应用中,我们需要对多路电源进行切换控制,因为系统不允许掉电,所以对该切换控制的要求非常高。为了解决该问题,我们采取了双 MCU 热备份的方案。图 1 是这个小系统的部分原理图。
图 1:双 MCU 热备份原理图
原理说明:
1、图 1 中,我们使用了两颗 32 脚的 HR8P506FHLK 芯片。考虑到应用中还需处理一些较复杂的信号,故选用这颗 32 位的 CORTEX M0 内核的 MCU。
2、使用比较器对多路电源进行检测,比较器的输出端连接到 MCU 的外中断口上,通过外部中断检测比较器输出端的电平变化,这个原理比较简单,容易理解。
在实际应用中,多路检测部分有一个需注意的关键点:比较器产生的信号,分离成两路,分别送到两个 MCU, 这四路信号必须分别经过电阻隔离才能接入 MCU 输入端口,即图 1 中的隔离电阻 R1、R7、R16、R17。
3、两颗 MCU 的切换检测控制是通过一组 UART 口和一个普通 IO 口实现的,如图 1 中的 TXD1、RXD1和 PA23。
双机切换检测控制方法:
该如何裁定两片 MCU 中的哪一片当前应该工作?秘诀在于使用了一组 UART 口和一个普通 IO 口。两个 MCU 一个工作于主模式,一个工作于辅助模式。
当系统正常时,工作于主模式的 MCU 承担检测和控制工作。但此时工作于辅助模式的 MCU 也同时在检测输入信号,并且做好了输出控制的准备,只是最后的输出并没有执行。
运行时,主模式的 MCU 会与辅助模式的 MCU 进行数据交换,交换内容至少包括:对输入信号的检测结果、输出控制变量值、相关的运算结果等等。
这样,两个 MCU 的信息会始终保持一致。
正常运行时,除了有 UART 口的信息交换外,还有一个单独的 IO 口互连,这个 IO 口的作用是输出心跳信号,主模式的 MCU 运行时,会定时输出心跳信号,副模式的 MCU 会检测这个信号。
心跳信号的输出程序和检测程序分别如下:
图 3:心跳信号产生的程序
图 4:心跳信号检测的程序
当 UART 口通讯中断时,这个心跳信号的输出也会有相应的变化,此时辅助模式 MCU 会检测这个口的信号状态变化,以确定主模式 MCU 是否正常工作,这个检测过程 20ms 时间内完成。
如果辅助模式 MCU 确定主 MCU 有异常,则接管检测和控制工作,并且会告知用户。
问题:
1)这样的方式在实际应用中,会不会出现误判?
当然会,即使我们采取再多的方法,误判也无法避免。
2)如果出现误判是不是会导致控制逻辑混乱呢?
当然不会,因为输出控制电路还有一套逻辑来保证系统工作的可靠性。
后记:
在实际应用中,输出控制电路的逻辑是如何处理的呢,这个问题留待下一次详细解释。为了提高系统可靠性和安全性,会有其他更好的方法和思路,欢迎交流探讨。