热度 31
2014-10-19 10:55
1499 次阅读|
1 个评论
汽车电子的容错处理 随着新能源汽车的逐步上路,车上EMC状况将是一个巨大挑战。软硬件方面都应采取一定的措施提高系统容错性能。下面是笔者的一些经验整理,希望能起到抛砖引玉之作用。 在实验室验证原型的时候,通常地我们只关注功能。当从原型转向产品时,我们需要更多地考虑稳定性——在极端情况下,我们可以允许车不动,但是绝不允许车乱动。 容错的定义 如果一个系统在存在故障的情况下仍然能够正确运行,那么这个系统就是容错的。 这里“正确运行”,最低要求就是系统仍然可控。当然,在某些情况下可能会导致系统性能下降——有时候这并不算是错误,而是事前控制的一种策略。 故障基本类型与检测 1) 永久性故障: 比如 MOS 管被击穿、继电器烧结等物理损坏。这一类故障通常可以在系统启动过程中被检测出来,而一旦在常规过程中发生就往往会造成系统严重错误甚至事故。检测方法常见为增加硬件回检功能,便于处理器尽早地做出动作抑制错误。 2) 间歇性故障: 常见的线束接触不良导致在振动过程中信号频繁跳变。这一类故障可以说是最为令人烦恼的。大多数情况下系统不应该随着间歇性故障频繁地切换状态,那么这就要求检测机制具有“消抖”特性。 3) 瞬时故障: 比如 ADC 在继电器动作期间采样,电源的波动导致采样偏移。这一类故障通常可以通过添加“限幅”环节进行检测。并且在大多数系统中,由于系统固有的时间常数较大,这些瞬时故障造成的瞬时错误尚未充分体现出来就已经被抑制。 容错的基本思想 1) 容错技术的实现,最基本的就是“冗余思想”,包括: 2) 硬件冗余,例如卫星上的双机备份系统。 3) 时间冗余,“消抖”处理也可以认为是一种时间冗余措施。 4) 信息冗余,例如将系统状态变量保存到多个不同的 RAM 地址,并在使用前先进行数据对比、筛选。 5) 程序冗余,例如在 ROM 中放置一套备用程序。当引导模块检测到主程序异常时就尝试切换至备用程序。 容错技术 1) 数据校验: 如同 RAM 存储器中常见的奇偶检验、 ECC 校验技术一样,我们也可以在软件中对关键变量生成相应的校验码(甚至是纠错码)。每次对关键变量的访问都需要处理校验码,虽然增加了 CPU 负担,但是可以获得很好的系统稳定性。 2) 多样本比较:通过不同的通道(途径)采集同一数据,并比较这些数据的一致性。 3) 多版本仲裁:通过不同的算法或者模块去计算同一输出,并比较这些输出的一致性。 4) 过程监控:适用于那些具有相对固定控制流的系统。该方法类似于“令牌”法则,前一个控制节点向后传递“令牌”,后一个控制节点收到正确的“令牌”后才能执行动作。 5) 周期自检:也就是系统周期性的停机挂起,然后检查错误,并恢复运行。 6) 错误捕获:通过硬件或者软件,在那些看似不可能出现错误的地方(逻辑不可达到)放置监控模块。以便当这些错误发生时可以向上报告异常,并尝试恢复正常的时序。 =========================== NO MORE =================================