3、危害分类与分级:S、E、C 等级
好,咱们接着聊。上一章我们把危害都识别出来了,列了一长串清单。但问题来了——这么多危害,哪个该优先处理?哪个可以放一放?
这就需要一个统一的尺子去量。ISO 26262 给了我们三把尺子:S(Severity,严重度)、E(Exposure,暴露度)、C(Controllability,可控度)。说白了,就是看这个危害有多疼、多常见、能不能躲开。
我个人习惯,拿到一个危害后,先问自己三个问题:
- 真出事了,人会受多重的伤?——这是 S
- 这种情况发生的概率高不高?——这是 E
- 驾驶员或者系统能不能及时补救?——这是 C
三个维度一组合,ASIL 等级就出来了。嗯,咱们一个一个拆开讲。
3.1 S 等级:严重度
S 等级衡量的是:危害一旦发生,对人员造成的伤害程度。注意,这里不考虑概率,只考虑后果。
ISO 26262 把 S 分成了 4 级:
| S 等级 | 描述 | 典型场景 |
|---|---|---|
| S0 | 无伤害 | 轻微刮擦,没人受伤 |
| S1 | 轻伤(可治疗) | 急刹车导致乘客轻微磕碰 |
| S2 | 重伤(需住院) | 碰撞导致骨折、内出血 |
| S3 | 致命伤 | 高速碰撞,有生命危险 |
关键点:S 等级只看最坏情况。哪怕概率只有万分之一,只要后果是 S3,那就按 S3 算。
我在项目中遇到过一件事。有个同事评估一个转向系统的危害,他觉得「驾驶员反应快,应该不会出大事」,就给评了个 S1。我让他重新想:如果驾驶员刚好在打瞌睡呢?如果车速 120 呢?最坏情况是什么?最后改成了 S3。你想想看,这个差别有多大。
3.2 E 等级:暴露度
E 等级衡量的是:车辆在运行过程中,处于可能触发危害的场景中的概率。说白了,就是「这个坑,你有多大概率踩上去」。
E 也分 4 级:
| E 等级 | 描述 | 典型场景 |
|---|---|---|
| E0 | 几乎不可能 | 车辆在火星上行驶 |
| E1 | 很少发生 | 每年几次,比如极端天气 |
| E2 | 偶尔发生 | 每月几次,比如夜间行车 |
| E3 | 频繁发生 | 每次驾驶都会遇到,比如市区拥堵 |
我的经验:E 等级最容易低估。我曾经评估一个「高速爆胎」场景,觉得概率低给了 E1。后来查了统计数据,发现高速爆胎事故率其实不低,尤其是老旧轮胎。最后改成了 E2。所以,我建议你多查真实数据,别光凭感觉。
为什么会这样?因为「你觉得不常见」和「实际不常见」是两码事。尤其是嵌入式工程师,天天对着代码,容易忽略真实世界的使用场景。
3.3 C 等级:可控度
C 等级衡量的是:危害发生后,驾驶员或其他人员能否通过合理反应来避免伤害。说白了,就是「出事了,人能反应过来吗」。
C 同样分 4 级:
| C 等级 | 描述 | 典型场景 |
|---|---|---|
| C0 | 完全可控 | 仪表盘指示灯异常,不影响驾驶 |
| C1 | 简单可控 | 油门响应延迟,多数人能应对 |
| C2 | 一般可控 | 刹车变软,有经验的司机能处理 |
| C3 | 难以控制 | 转向突然失效,几乎无法避免事故 |
注意:C 等级评估时,要假设驾驶员是「普通驾驶员」,不是赛车手。我曾经见过有人把 C 评得很低,理由是「我反应快,肯定能控制住」。这不对。你得按平均水平来,甚至按最差情况来。
嗯,这里要注意。C 等级和 S 等级有时候会让人混淆。我教你一个区分方法:
- S 等级:问「撞上了会怎样?」
- C 等级:问「能不能不撞上?」
举个例子。刹车失灵,S 等级可能是 S3(致命),但 C 等级呢?如果驾驶员可以通过手刹、降档、甚至蹭护栏来减速,那 C 可能只有 C2。但如果连手刹也失效了,那 C 就是 C3。
3.4 三个等级的组合:ASIL 的由来
有了 S、E、C 三个值,我们就可以查表得到 ASIL 等级了。ISO 26262 给了一张标准矩阵:
| S | E | C | ASIL |
|---|---|---|---|
| S1 | E1 | C1 | QM |
| S1 | E2 | C2 | ASIL A |
| S2 | E2 | C2 | ASIL B |
| S3 | E2 | C2 | ASIL C |
| S3 | E3 | C3 | ASIL D |
这张表不用死记。你只要记住一个原则:三个维度中,只要有一个是 0,结果就是 QM(无需安全等级)。比如 S0、E3、C3,结果还是 QM。因为不会伤人嘛。
反过来,三个维度都高,那就是 ASIL D,最严格的要求。我做过一个线控制动项目,S3、E3、C3,妥妥的 ASIL D。那开发过程,真是每一步都要反复验证,代码审查恨不得逐行过。
避坑指南:我曾经犯过一个错——把 S、E、C 分开评估,然后直接取最大值。比如 S3、E1、C2,我直接给了 ASIL D。后来发现不对,得查表。S3+E1+C2 其实只到 ASIL B。所以,一定要用标准矩阵,别自己发明公式。
3.5 实战小技巧
最后,分享几个我常用的方法:
- 先评 S,再评 E,最后评 C。 因为 S 最直观,E 需要数据支撑,C 最需要经验。
- 多找几个人一起评。 一个人容易有偏见。我一般会拉上系统工程师、测试工程师、甚至产品经理一起讨论。
- 记录评估理由。 别光写个 S3 就完了。要写清楚为什么是 S3,依据是什么。这样以后审查时,别人能看懂你的思路。
好了,S、E、C 这三个等级,说白了就是给危害「打分」。分打完了,下一步就是根据 ASIL 等级去制定安全措施。下一章咱们就聊这个。