Arduino失效保障机制

时间:2012-10-15 10:48:49

标签: arduino embedded microcontroller pic

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

两种可能的机制如下。

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

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

方法2 - 心跳机制

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

你们有没有更好的机制来实现这个?

1 个答案:

答案 0 :(得分:13)

通常在商业嵌入式系统中,如果处理器未能通过定期“踢狗”而无法响应,则可以使用watchdog timer 来重置处理器。所有AVR微控制器(以及许多其他大多数品牌)都有一个内部看门狗定时器。虽然采用独立外部看门狗定时器的设计通常更加坚固可靠。像this

external watchdog setup

对于需要更高程度的容错能力的系统,例如航空航天应用,使用三重冗余或triple modular redundant架构。

在三重冗余系统中,三个相同的处理组件同时执行相同的任务。然后将结果发送到投票电路或John von Neumann称之为“majority organ”(第4.2.2节)。投票电路的输出是三个处理组件的主要意见。

triple redundancy

这允许其中一个处理组件发生故障而不影响系统的运行。但是,如果表决电路失败,那么整个系统也会失败。三模块冗余系统通过实现三个投票电路来消除这一单点故障。

triple modular redundant

最终,三个输出需要再次组合成一个结果,导致单点故障。即使那个故障点是人类正在观察三个仪表,每个仪表监测相同的温度。

您需要确定的是您需要系统的fault-tolerant以及您的系统可以处理的mean time between failures (MTBF)类型。然后围绕它设计你的冗余系统。