原创 【博客大赛】汽车电子的容错处理

2014-10-19 10:55 1499 30 31 分类: MCU/ 嵌入式

汽车电子的容错处理

随着新能源汽车的逐步上路,车上EMC状况将是一个巨大挑战。软硬件方面都应采取一定的措施提高系统容错性能。下面是笔者的一些经验整理,希望能起到抛砖引玉之作用。

 在实验室验证原型的时候,通常地我们只关注功能。当从原型转向产品时,我们需要更多地考虑稳定性——在极端情况下,我们可以允许车不动,但是绝不允许车乱动。


容错的定义

如果一个系统在存在故障的情况下仍然能够正确运行,那么这个系统就是容错的。

这里“正确运行”,最低要求就是系统仍然可控。当然,在某些情况下可能会导致系统性能下降——有时候这并不算是错误,而是事前控制的一种策略。

 

故障基本类型与检测

1)           永久性故障:

比如MOS管被击穿、继电器烧结等物理损坏。这一类故障通常可以在系统启动过程中被检测出来,而一旦在常规过程中发生就往往会造成系统严重错误甚至事故。检测方法常见为增加硬件回检功能,便于处理器尽早地做出动作抑制错误。

2)           间歇性故障:

常见的线束接触不良导致在振动过程中信号频繁跳变。这一类故障可以说是最为令人烦恼的。大多数情况下系统不应该随着间歇性故障频繁地切换状态,那么这就要求检测机制具有“消抖”特性。

3)           瞬时故障:

比如ADC在继电器动作期间采样,电源的波动导致采样偏移。这一类故障通常可以通过添加“限幅”环节进行检测。并且在大多数系统中,由于系统固有的时间常数较大,这些瞬时故障造成的瞬时错误尚未充分体现出来就已经被抑制。

 

容错的基本思想

1)         容错技术的实现,最基本的就是“冗余思想”,包括:

2)         硬件冗余,例如卫星上的双机备份系统。

3)         时间冗余,“消抖”处理也可以认为是一种时间冗余措施。

4)         信息冗余,例如将系统状态变量保存到多个不同的RAM地址,并在使用前先进行数据对比、筛选。

5)         程序冗余,例如在ROM中放置一套备用程序。当引导模块检测到主程序异常时就尝试切换至备用程序。

 

容错技术

1)         数据校验:

如同RAM存储器中常见的奇偶检验、ECC校验技术一样,我们也可以在软件中对关键变量生成相应的校验码(甚至是纠错码)。每次对关键变量的访问都需要处理校验码,虽然增加了CPU负担,但是可以获得很好的系统稳定性。

2)         多样本比较:通过不同的通道(途径)采集同一数据,并比较这些数据的一致性。

3)         多版本仲裁:通过不同的算法或者模块去计算同一输出,并比较这些输出的一致性。

4)         过程监控:适用于那些具有相对固定控制流的系统。该方法类似于“令牌”法则,前一个控制节点向后传递“令牌”,后一个控制节点收到正确的“令牌”后才能执行动作。

5)         周期自检:也就是系统周期性的停机挂起,然后检查错误,并恢复运行。

6)         错误捕获:通过硬件或者软件,在那些看似不可能出现错误的地方(逻辑不可达到)放置监控模块。以便当这些错误发生时可以向上报告异常,并尝试恢复正常的时序。

 

=========================== NO MORE =================================

 

文章评论1条评论)

登录后参与讨论

用户593939 2014-10-24 18:48

写的好,学习和参考了
相关推荐阅读
用户1528688 2014-09-08 00:14
背景任务的几种常见调度方式
背景任务的几种常见调度方式   我们喜欢RTOS,因为它足够简单;我们讨厌RTOS,因为它足够复杂。从“裸奔”到RTOS,首先意味着工程师们要去适应这些“新”东西,更要命的是要去给BOSS...
用户1528688 2014-08-18 21:20
工程师应要会讲故事
    是的,我回来了,EDN博客(...好吧,其实没人记得我)     5年之前我还在念书,自认为是那种无师自通的材料,于是乎——大一白天疯玩,晚上熬夜做作业;大二开始沉迷code,以至于去...
用户1528688 2009-12-03 07:33
KeilC 里面慎重对全局变量初始化
首先,这里的全局变量指的是 在main() 之前定义的变量(包括在 .h文件 或者  其他.c文件里面定义的变量)。<?xml:namespace prefix = o ns = "urn:sc...
用户1528688 2009-11-28 23:03
C51外部RAM扩展
//存储模式的选择(small,compect,large),并不直接影响XDATA的使用 -- //使用XDATA,PDATA时,主要注意的是 //参数传递,堆栈的位置--因为这些直接影响到程序的效...
用户1528688 2009-11-28 21:53
特定序列检测
从数据流<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  010_01101_0_...
我要评论
1
30
关闭 站长推荐上一条 /2 下一条