Arduino失效保障机制

Cha*_*ara 10 embedded microcontroller arduino pic

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

两种可能的机制如下.

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

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

方法2 - 心跳机制

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

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

emb*_*yle 14

通常在商业嵌入式系统中,在通过周期性地"踢狗"而无法响应的情况下,将利用看门狗定时器来重置处理器.所有AVR微控制器(以及许多其他大多数品牌)都有一个内部看门狗定时器.虽然采用独立外部看门狗定时器的设计通常更加坚固可靠.像这样:

外部看门狗设置

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

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

三重冗余

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

三重模块冗余

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

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