10

假设我正在为 Arduino(或任何其他微控制器)开发故障安全机制。换句话说,当主控制器发生故障时,辅助微控制器或单独的板应该承担责任。

两种可能的机制如下。

方法 1 - 客户端服务器机制

  • 有 2 个相同的系统单独供电。
  • 辅助系统定期发送请求,主系统回复。
  • 如果主系统未能回复(多次),则辅助系统将负责。

方法 2 - 心跳机制

  • 有 2 个相同的系统单独供电。
  • 主系统定期发送心跳消息。
  • 如果有心跳,则辅助节点知道主节点已启动。
  • 当没有心跳时,主节点被认为是死的。辅助节点获得控制权。

你们知道有什么更好的机制来实现这个吗?

4

1 回答 1

14

通常在商业嵌入式系统中,看门狗定时器将用于在处理器无法通过周期性“踢狗”响应的情况下重置处理器。所有 AVR 微控制器(以及许多其他品牌,如果不是大多数)都有一个内部看门狗定时器。尽管具有独立外部看门狗定时器的设计通常更加稳健和可靠。像这样

外部看门狗设置

对于需要更高程度容错的系统,例如航空航天应用,使用三重冗余或三重模块化冗余架构。

在三重冗余系统中,三个相同的处理组件同时执行相同的任务。然后将结果发送到投票电路或 John von Neumann 所谓的“多数机关”(第 4.2.2 节)。投票电路的输出是三个处理组件的多数意见。

三重冗余

这允许处理组件之一发生故障而不影响系统的操作。但是,如果投票电路发生故障,那么整个系统也会发生故障。三重模块化冗余系统还通过实施三个表决电路消除了这种单点故障。

三重模块化冗余

但最终,这三个输出将需要再次组合成一个结果,从而导致单点故障。即使那个故障点是人类看着三个仪表,每个仪表都监控相同的温度。

您需要确定的是您需要系统的容错能力以及系统可以处理的平均故障间隔时间 (MTBF) 。然后围绕它设计你的冗余系统。

于 2012-10-15T12:48:59.873 回答