第3章:预期功能安全基础:ISO 21448标准概述、触发事件、功能不足与性能局限

3.1 为什么我们需要ISO 21448?

聊到预期功能安全,我得先说说自己的一个经历。几年前我参与一个L3级自动驾驶项目,测试时发现车辆在暴雨天突然急刹车——明明前方没有任何障碍物。传统功能安全(ISO 26262)查了个遍,硬件没坏,软件没bug。后来才发现,是毫米波雷达在强降雨下把雨滴反射误判成了障碍物。

你看,这不是“系统坏了”,而是“系统在特定场景下能力不够”。这就是预期功能安全要解决的问题。

ISO 21448标准,全称是“道路车辆—预期功能安全”。它专门处理那些因系统功能不足或性能局限导致的安全问题。说白了,就是当系统本身设计没问题、硬件也没坏,但在某些场景下就是“搞不定”的时候,我们该怎么办。

核心区别一句话:

  • 功能安全(ISO 26262):处理系统故障(硬件随机失效、软件系统失效)
  • 预期功能安全(ISO 21448):处理系统在无故障情况下的功能不足

3.2 ISO 21448的核心框架

我个人习惯把ISO 21448的流程分成三大块:

  1. 识别:找出所有可能的触发事件
  2. 评估:分析这些事件是否会导致危害
  3. 改进:通过设计或验证手段降低风险

嗯,这里要注意,ISO 21448不是要替代ISO 26262,而是互补。我见过不少团队把两者割裂开,结果项目后期发现大量遗漏场景,返工成本极高。

ISO 21448 预期功能安全核心流程 1. 识别触发事件 场景分析 功能不足识别 性能局限分析 2. 危害评估 危害分析(HAZOP) 风险评估 可接受性判断 3. 风险降低 功能改进 验证与确认 残余风险接受 迭代改进循环 关键原则:触发事件识别是起点,也是最重要的步骤 遗漏一个触发事件,可能导致整个安全分析失效

3.3 触发事件(Triggering Events)—— 一切问题的起点

触发事件,说白了就是“什么情况下系统会出问题”。我把它分为三类:

触发事件类型 举例 典型场景
环境因素 强光、暴雨、大雾、夜间 摄像头在逆光下无法识别交通标志
场景因素 复杂路口、施工区域、行人突然横穿 激光雷达在密集车流中无法区分相邻车辆
系统交互因素 多传感器融合冲突、通信延迟 摄像头和雷达对同一目标检测结果不一致

避坑指南:

我曾经在项目中犯过一个错误——只考虑了“典型”触发事件,忽略了“边界”情况。比如自动泊车系统,我们测试了标准车位,但没测试斜列式车位。结果量产前才发现,系统在斜列式车位前完全“懵了”。从那以后,我要求团队必须列出至少50个边界触发事件。

3.4 功能不足与性能局限

这两个概念容易混淆。我用自己的理解来解释:

  • 功能不足:系统设计时就没考虑这个功能。比如你的ACC(自适应巡航)不支持识别静止车辆,这就是功能不足。
  • 性能局限:系统有这个功能,但能力有限。比如摄像头能识别行人,但在夜间识别距离只有50米,白天能到100米。

你想想看,这两者处理方式完全不同。功能不足可能需要增加新的传感器或算法,而性能局限往往可以通过优化现有方案来改善。

3.5 如何系统性地识别触发事件?

我推荐一个方法,叫“场景-能力矩阵”。

// 场景-能力矩阵示例(伪代码)
struct Scenario {
    string weather;      // 晴天/雨天/雪天/雾天
    string lighting;     // 白天/黄昏/夜晚
    string roadType;     // 高速/城市/乡村
    string trafficDensity; // 稀疏/中等/密集
};

struct Capability {
    string sensor;       // 摄像头/雷达/激光雷达
    float range;         // 有效检测距离
    float accuracy;      // 检测精度
    string limitation;   // 已知局限
};

// 遍历所有场景组合
for each scenario in allScenarios:
    for each capability in systemCapabilities:
        if capability.limitation conflicts with scenario:
            addTriggeringEvent(scenario, capability);

嗯,这里要注意,组合数量可能爆炸。我建议先聚焦在“高风险场景”上,比如:

  1. 恶劣天气(雨、雪、雾)
  2. 低光照条件(黄昏、夜晚、隧道出入口)
  3. 复杂交通参与者(行人、自行车、动物)
  4. 特殊道路结构(急弯、坡道、施工区)

重要提醒:

触发事件识别不是一次性的工作。随着系统迭代、软件更新、甚至OTA升级,都可能引入新的触发事件。我建议每个开发迭代都重新审视一次触发事件清单。

3.6 从触发事件到安全目标

识别出触发事件后,下一步就是分析它是否会导致危害。举个例子:

触发事件:摄像头在隧道出口处因光线突变导致短暂“失明”

潜在危害:未能识别前方静止车辆,导致追尾

安全目标:在光线突变场景下,系统必须在200ms内恢复目标检测能力

这个安全目标,就是后续功能安全设计和验证的输入。你看,预期功能安全和功能安全在这里就衔接上了。

3.7 我的经验总结

做了这么多年预期功能安全,我总结了几条铁律:

  • 别指望一次分析完所有触发事件。我见过最成功的项目,都是把触发事件识别做成持续迭代的过程。
  • 重视实车测试数据。很多触发事件在仿真里根本发现不了,只有上路跑才能暴露。
  • 团队里要有“悲观主义者”。做安全分析时,需要有人专门负责“找茬”,想象最坏的情况。

最后说一句,ISO 21448不是束缚,而是工具。它帮我们系统性地思考“系统在什么情况下会不够好”,而不是等到出事了才后悔。


公众号:蓝海资料掘金营,微信deep3321