谈一谈自动驾驶中的功能安全
附赠自动驾驶学习资料和量产经验:链接
一 概述
汽车涉及到人的生命财产安全,谈汽车首先要谈的就是安全。目前自动驾驶的安全主要分为三大块:功能安全,网络(信息)安全,和预期功能安全。
功能安全作为老大哥,起源最早,应用最广,也最为成熟;网络安全和预期功能安全分析方法在一定程度沿用了功能安全,所以今天简单看一下功能安全,主要是general的介绍。
二 谈一谈
目的?
随着汽车电子件的增加,电子电气失效复杂度和频率增大,需要一种方法去减少因为汽车电子电气非预期的失效导致的安全事故。
来源?
ISO 26262,它总共由10个部分组成,其中9个是规范性的,还有一个,也就是第10部分,是一个额外的指南,提供了如何分解ASIL(Automotive Safety Integrity Levels),如何结合FMEA和FTA的所谓的“已被论证的”示例。
第1部分定义了ISO 26262中使用的词汇,第2部分一般功能安全管理,第8部分是支持过程(例如配置或变更管理,包括对软件工具或软件或硬件组件的资格),第9部分说明了ASIL分解的过程。
剩下的3到7部分具体介绍了整个产品开发生命周期的各个步骤(概念阶段,系统阶段,硬件阶段,软件阶段,生产阶段),并要求它们对所需的输入、活动本身的解释和结果输出(所谓的工作产品)进行解释。
范围?
功能安全只针对电子电气件,例如掉电了,信号发错了等;机械等失效不在考虑范围内,例如转向杆断了是不管的。
失效?
功能安全主要解决的是2种失效:
-
**系统性失效,**由于系统设计不合理导致的系统性问题;例如刹车减速度应该小于1个G,但是由于设计不合理,导致最大减速度限值的逻辑忘了加或者加错了,实际车辆搞出个2G加速度,刹车如撞车…
-
**随机失效,**例如电路板某些部分坏了,某个电平应该发高电平,却发成了低电平。这种失效是随机的,而且符合统计学规律,故称为随机失效。
玄学?
功能安全是一套方法论,规范了开发的流程和设计的要求,但没有给出具体的实现机制。
归纳演绎的方法,加上依赖经验和统计学的判断,以及场景考虑是否全面,导致很难有确定的结果。所以遵从同一个法规做出的东西,不同的厂家做出来的可能完全不一样。
科学?
好在,ISO 26262也给出了功能安全需要工作产出(work product),让我们能review其分析的过程和结果是否合理。例如Item Defination,即分析对象;HARA(hazard analysis and risk assessment), 即危害分析和风险评估; FSR(Functional Safety Requirements), 功能安全需求;Safety Goal , 功能安全目标等等。
流程这东西,烦是挺烦的;但从企业和行业角度,流程是前车之鉴;流程可以让无数个人快速统一成一种想法,从而提高效率,也降低了风险,在一定程度上减少产品安全事故。
HARA(Hazard Analysis and Risk Assessment)?
主要通过三个维度对失效的等级进行评估:
-
严重度(Severity)
主要是失效发生后,人和车辆的损害程度。 -
暴露度 (Exposure)
主要是失效可能发生的概率。 -
可控度 (Controbility)
主要是失效发生后,通过驾驶员操作可以挽回损失较少危害的可能性。
根据每个维度的评级,最终通过查表确定某个失效的ASIL等级和功能安全目标,ASIL等级有QM, A, B,C, D五种,从左到右功能安全的要求越来越高。
功能安全分解?
有时候功能安全目标太高, 一个Item由于各种原因无法实现,可以进行功能安全分解。例如ASIL D的功能可以分解成如下的形式:
ASIL D = ASIL C(D) + ASIL A(D)
ASIL D = ASIL B(D) + ASIL B(D)
ASIL D = QM(D)+ ASIL D(D)
功能安全分解的前提是,要保持分解各个模块的独立性。也就是说两个模块之间,没有级联失效,也没有共因失效,例如功能安全目标分解到A和B两个模块,那么:
级联失效指的是,A模块坏掉,会导致B模块也坏掉。
共因失效指的是,如果C模块坏掉,会导致A模块和B模块都坏掉。
ASIL对硬件的要求?
单点故障标准,
ASIL B ≥ 90%
ASIL C ≥ 97%
ASIL D ≥ 99%
潜伏故障标准,
ASIL B ≥ 60%
ASIL C ≥ 80%
ASIL D ≥ 90%
随机硬件失效率,单位FIT(Failure in Time), 1 FIT表示1*10^9小时内只发生1次故障。
ASIL B <10-7 h-1
ASIL C <10-7 h-1
ASIL D <10-8 h-1
其中,
单点故障失效率:λ _SPF
残余故障失效率:λ _RF
多点故障失效率:λ _MPF
安全故障失效率:λ _S
安全相关故障失效率:λ
可探测的多点故障失效率:λ _MP_D
可感知的多点故障失效率:λ _MPF_P
潜伏故障失效率:λ _MPF_L
λ = λ _SPF + λ _RF + λ _MPF + λ _S
λ _MPF = λ _MPF_D + λ _ MPF_P + λ _MPF_L
故障种类?
- 单点故障(Single-point fault)
没有安全机制保护的,且会违背安全目标的故障。
- 残余故障(Residual fault)
有安全机制保护的(没保护全面),且会违背安全目标的故障。
- 可探测的双点故障(Detected dual-point fault)
可被安全机制探测到,且与另外一个故障一起才会违反安全目标的故障。
- 可感知的双点故障(Perceived dual-point fault)
可被驾驶员感知到的,且与另外一个故障一起才会违反安全目标的故障
- 潜伏的双点故障(Latent dual-point fault)
不可被安全机制探测到,且不可被驾驶员感知到,且与另外一个故障一起才会违反安全目标的故障。
- 安全故障(safe fault)
即使发生了也不违背安全目标的故障。
分析方法?
- FMEA,
自下而上,从失效原因(某个器件坏掉)找到失效对系统的影响,进而制定措施。
例如ESC坏掉了,可能会导致不能刹车,发生碰撞。
- FTA,
自上而下,从系统的影响出发,倒推可能导致的原因有哪些。
例如不能刹车发生了碰撞,可能是ESC坏掉了。
三 回到浅入浅出的主题
功能安全是个很大的topic,想用短文简单介绍,着实是大意了。只好挑着大概介绍下什么是功能安全,ASIL等级是怎样来的,如何分解,硬件怎样才算满足,和主要的分析方法。