4. 安全目标定义:ASIL等级确定、安全状态定义、安全机制设计
好,我们进入正题。前面做了那么多危害分析和风险评估,说白了,就是为了得到一张清晰的「安全目标清单」。这张清单,就是我们后续所有安全工作的总纲。
我个人习惯把这一步叫做「从危害到目标的翻译」。你想想看,一个危害事件,比如「飞机在起飞阶段突然掉高」,它只是一个现象。而安全目标,则是要明确地说:「系统必须保证在起飞阶段,垂直速度不低于某个阈值」。这中间,需要我们把ASIL等级、安全状态、安全机制这三件事,一次性定清楚。
4.1 ASIL等级确定:不是拍脑袋,是算出来的
ASIL,全称是Automotive Safety Integrity Level。在飞控领域,我们其实更习惯用DAL(Design Assurance Level),但ASIL的思维框架完全适用。它由三个参数决定:严重度(S)、暴露概率(E)、可控性(C)。
公式很简单:ASIL = f(S, E, C)。但实际赋值的时候,坑特别多。
具体怎么查表?我一般用这个矩阵:
| 严重度 (S) | 暴露概率 (E) | 可控性 (C) | ASIL等级 |
|---|---|---|---|
| S3 (致命) | E4 (频繁) | C3 (难控制) | ASIL D |
| S2 (重伤) | E3 (中等) | C2 (可控制) | ASIL B |
| S1 (轻伤) | E2 (偶尔) | C1 (易控制) | ASIL A |
| S0 (无伤害) | E1 (极低) | C0 (完全可控) | QM |
嗯,这里要注意:ASIL D是最严格的,要求你从需求到代码,每一步都要有完整的追溯和验证。而QM(Quality Management)级别,基本就是常规开发流程。
我建议你在做ASIL分解的时候,多用冗余架构来降级。比如一个ASIL D的功能,拆成两个ASIL C的通道,互相监控。这样既能满足安全要求,又不会把开发成本推到天上去。
4.2 安全状态定义:系统「出事」后该干嘛
安全状态,就是系统在检测到故障后,应该进入的「保命模式」。它不是随便一个状态,而是经过分析后,确认风险可接受的那个状态。
常见的飞控安全状态有几种:
- 降级模式:比如从全自主飞行,降级到遥控模式。我做过一个项目,GPS失效后,系统自动切到视觉导航,虽然精度差了点,但至少不会撞山。
- 保持模式:悬停或平飞,等待指令。这个模式适合通信中断的场景。
- 紧急着陆:这是最后的手段。系统会找一个安全区域,自动降落。
- 安全停机:直接切断动力,但只适用于地面或极低空。
我曾经犯过一个错:把「悬停」定义为安全状态,但没考虑电池电量。结果系统在低电量时进入悬停,没撑到救援来就坠毁了。所以,定义安全状态时,一定要把资源约束(电量、算力、通信)考虑进去。
4.3 安全机制设计:给系统上「保险」
安全机制,就是用来检测故障、并引导系统进入安全状态的那些「机关」。它可以是硬件、软件,也可以是两者的组合。
我一般把安全机制分成三类:
- 检测机制:比如看门狗、心跳信号、CRC校验。它们负责「发现」问题。
- 响应机制:比如故障切换、数据冻结、状态锁定。它们负责「处理」问题。
- 保护机制:比如硬件冗余、软件多样性、表决器。它们负责「防止」问题发生。
举个例子,一个飞控系统的IMU(惯性测量单元)故障,安全机制可以这样设计:
// 伪代码:IMU故障检测与响应
if (IMU数据异常) {
// 检测机制:一致性检查
if (IMU1 vs IMU2 偏差 > 阈值) {
// 响应机制:切换通道
switchToBackupIMU();
// 保护机制:记录故障日志
logFault("IMU mismatch");
// 进入安全状态
enterSafeState(DEGRADED_MODE);
}
}
嗯,这里要注意:安全机制本身也可能失效。所以,我们通常会给关键安全机制加一层「监控」。比如看门狗本身,也要有独立的超时检测。
4.4 知识体系总览
为了让你更直观地理解这三者的关系,我画了一张图:
你看,整个流程是串起来的。危害分析输出安全目标,安全目标又拆成三个具体的工作项。任何一个环节没做好,后面的安全验证都会出问题。
4.5 避坑指南
最后,分享几个我踩过的坑:
- ASIL等级不要「就高不就低」。我见过有人把所有功能都定成ASIL D,结果开发成本爆炸,项目延期。合理的做法是,根据实际危害场景,该高就高,该低就低。
- 安全状态要可测试。你定义了一个「紧急着陆」状态,但怎么验证它?我建议在系统设计阶段,就为每个安全状态写一个测试用例。
- 安全机制要防「共因失效」。比如两个冗余的IMU,如果用的是同一款芯片、同一版固件,那一个bug就能让两个通道同时失效。这就是共因失效。解决办法是多样性——不同型号、不同算法、不同供应商。
好了,这一章的内容就到这里。记住,安全目标定义是整个功能安全工程的「宪法」。后面所有的设计、实现、测试,都要围绕它来展开。
公众号:蓝海资料掘金营,微信deep3321