3、功能安全概念(FuSa):ASIL等级分解、安全目标定义、安全状态设计
好,我们直接进入正题。功能安全概念,说白了就是回答三个问题:系统要安全到什么程度?哪些危险不能发生?出事了系统该怎么办?
我个人习惯把这一章叫做“安全架构的骨架”。骨架搭歪了,后面肌肉再强壮也白搭。咱们一个一个来拆解。
3.1 ASIL等级分解:别把鸡蛋放在一个篮子里
先聊聊ASIL等级分解。ISO 26262里定义了ASIL A到D四个等级,D是最严格的。但问题来了——如果整个车道保持功能要求ASIL D,你总不能把所有模块都按ASIL D来做吧?成本扛不住,开发周期也受不了。
这时候就需要分解。
分解的核心思想是:把一条高ASIL的安全要求,拆成两条或更多低ASIL的要求,分配给不同的独立要素。 举个例子:
- 原始要求:车道保持功能需满足ASIL D
- 分解后:感知模块(摄像头+算法)承担ASIL B(C),控制模块(转向执行器)承担ASIL B(C)
- 组合起来,通过独立性保证,整体仍满足ASIL D
我在项目中遇到过一种情况:团队把ASIL D分解成两个ASIL B,但没做独立性分析。结果两个模块共用同一个电源芯片,一个短路两个全挂。嗯,这就不叫分解,这叫自欺欺人。
分解的数学逻辑是这样的:
ASIL D = ASIL B(D) + ASIL B(D) // 两个B级,通过独立性证明
ASIL D = ASIL C(D) + ASIL A(D) // 一个C级加一个A级
ASIL D = ASIL D + QM(D) // 一个D级加一个QM(质量级),但QM部分不能影响安全
你想想看,为什么不能直接ASIL D + QM?因为QM部分如果出故障,可能会干扰D级部分。所以QM必须被证明是“无干扰”的。这个坑我踩过,后面讲FFI(自由从干扰)时会细说。
3.2 安全目标定义:把“危险”翻译成“要求”
安全目标,是功能安全概念的起点。它来自HARA(危害分析与风险评估)的输出。HARA告诉你“什么场景下会出什么事故”,安全目标告诉你“怎么避免这个事故”。
举个例子,车道保持功能的一个典型危险:
- 危害事件:车辆在高速行驶时,系统错误地输出大角度转向,导致车辆偏离车道或侧翻。
- 安全目标:防止系统在无驾驶员意图时输出非预期的转向扭矩。
- ASIL等级:ASIL D(因为高速场景下,严重度S3,暴露率E4,可控性C3)
写安全目标时,我建议遵循几个原则:
- 每个安全目标只对应一个危害。别想着一个目标覆盖所有问题,那会乱套。
- 目标要可验证。“系统要足够安全”这种话别写。要写“系统在故障时,转向扭矩不超过1Nm”。
- 明确安全状态。每个安全目标都要对应一个安全状态,或者一个降级模式。
我曾经见过一个团队,安全目标写了“系统应避免碰撞”。这目标太模糊了。什么叫避免碰撞?是100%避免还是95%?是避免所有碰撞还是只避免追尾?后来我们把它拆成了三个具体目标:
| 安全目标编号 | 描述 | ASIL |
|---|---|---|
| SG-01 | 防止系统在无驾驶员意图时输出非预期转向扭矩 | ASIL D |
| SG-02 | 防止系统在车道线清晰时错误丢失目标车道线 | ASIL B |
| SG-03 | 防止系统在驾驶员主动接管时拒绝退出 | ASIL D |
你看,这样每个目标都清晰可测。测试工程师拿到手就知道怎么写测试用例。
3.3 安全状态设计:出事了,系统该干嘛?
安全状态,就是系统发生故障后,要进入的一个“不会造成危害”的状态。对于车道保持功能,常见的安全状态有:
- 安全状态1:退出车道保持,将控制权交还给驾驶员(同时发出声光报警)
- 安全状态2:维持当前转向扭矩,并逐渐降级到零(适用于部分转向故障)
- 安全状态3:紧急制动并停车(适用于完全失控场景,比如传感器全失效)
设计安全状态时,我习惯问一个问题:“这个状态本身会不会引入新的危险?”
举个例子:如果系统检测到摄像头故障,立即退出车道保持并把方向盘猛地回正——这本身可能造成车辆失控。所以安全状态的设计,必须考虑过渡过程。
我记得有一次做评审,一个同事设计的安全状态是“系统故障时,直接切断转向电机电源”。听起来很安全对吧?但问题来了——切断电源后,方向盘会变得非常重,驾驶员在高速上根本打不动。这反而增加了事故风险。后来我们改成了“维持一个较小的助力,同时提示驾驶员接管”。
安全状态的设计,说白了就是权衡。你要在“足够安全”和“不过度惊吓驾驶员”之间找平衡。我个人习惯的做法是:
- 先列出所有可能的故障模式
- 对每个故障模式,定义最坏情况下的危害
- 设计一个能避免该危害的状态
- 检查这个状态本身是否安全
- 如果状态本身不安全,重新设计
最后说一句:安全状态不是一成不变的。随着系统架构演进,安全状态也要跟着更新。别想着一次设计管三年,那不可能。
- ASIL分解:高等级拆成低等级,但必须保证独立性
- 安全目标:每个危害对应一个目标,目标要可测可验证
- 安全状态:故障后的归宿,要考虑过渡过程和FTTI
下一章我们会聊功能安全架构的具体实现,包括冗余设计、监控机制和故障响应策略。到时候我会拿一个实际项目的架构图来拆解,咱们不见不散。