假设我正在为Arduino(或任何其他微控制器)开发故障安全机制。换句话说,当主控制器发生故障时,辅助微控制器或单独的电路板应该负责。
两种可能的机制如下。
方法1 - 客户端服务器机制
方法2 - 心跳机制
你们有没有更好的机制来实现这个?
答案 0 :(得分:13)
通常在商业嵌入式系统中,如果处理器未能通过定期“踢狗”而无法响应,则可以使用watchdog timer 来重置处理器。所有AVR微控制器(以及许多其他大多数品牌)都有一个内部看门狗定时器。虽然采用独立外部看门狗定时器的设计通常更加坚固可靠。像this:
对于需要更高程度的容错能力的系统,例如航空航天应用,使用三重冗余或triple modular redundant架构。
在三重冗余系统中,三个相同的处理组件同时执行相同的任务。然后将结果发送到投票电路或John von Neumann称之为“majority organ”(第4.2.2节)。投票电路的输出是三个处理组件的主要意见。
这允许其中一个处理组件发生故障而不影响系统的运行。但是,如果表决电路失败,那么整个系统也会失败。三模块冗余系统通过实现三个投票电路来消除这一单点故障。
最终,三个输出需要再次组合成一个结果,导致单点故障。即使那个故障点是人类正在观察三个仪表,每个仪表监测相同的温度。
您需要确定的是您需要系统的fault-tolerant以及您的系统可以处理的mean time between failures (MTBF)类型。然后围绕它设计你的冗余系统。