2.3 HARA——从场景到ASIL
你站在白板前,手里握着黑色马克笔。
白板的左边,是一张电动助力转向(EPS)的ECU框图:扭矩传感器→MCU→CAN收发器→动力电机→转向齿条。每条线上标着数据流。每个方框里标着硬件型号。
白板的中间,你开始列操作场景:“高速公路,120km/h,雨天”、“城市地库,5km/h,干燥平整”、“山路下坡,60km/h,弯道半径150m”、“车辆静止,维修模式,举升机上”。
白板的右边,你画了三列:S(严重度)、E(暴露度)、C(可控性)。
桌上摊着你的分析材料:上一代产品的现场失效数据、第三方道路使用统计数据、几份学术论文中的驾驶员反应时间研究、两份同行业的安全召回报告。
你要回答一个问题:只用精确的参数和数据,不能用直觉:“如果EPS的转向角度计算出了错,在某些场景下让车轮产生了驾驶员没有预期的运动,这件事究竟有多严重?应该如何定级?”
这就是HARA(Hazard Analysis and Risk Assessment,危害分析与风险评估)。它是ISO 26262安全生命周期中最核心的技术活动。它决定了你的系统是QM(按质量管理对待即可)还是ASIL D(最高安全完整性等级要求),决定了整个开发团队未来2-3年的工作量和成本,决定了几百万开发预算的分配方式。
这个决定,你必须今天在这块白板上做出来。
HARA的第一步:Item Definition(相关项定义)
在你评估任何风险之前,你必须先回答一个看似简单但极其重要的问题:分析的边界在哪里?到底什么是“这个item“?
Item的定义必须包含:
功能边界:这个item实现什么车辆级功能?对于我们的EPS来说,是“根据驾驶员施加在方向盘上的扭矩和车辆状态,通过电机提供辅助转向力,帮助驾驶员转向“。
物理边界:这个item包含哪些硬件和软件?扭矩传感器(输入端)→ EPS ECU(处理端)→ 电机驱动 → 动力电机 → 转向齿条(输出端)。CAN总线与整车其他ECU的接口也在边界之内。
外部接口:这个item和外界的交互是什么?方向盘(驾驶员输入)、车轮(输出到路面)、车身稳定系统(ESC,通过CAN交互)、车速传感器(输入信号)。
操作模式:这个item有哪些运行模式?我们至少可以列出:正常辅助模式、故障降级模式、停车辅助模式、维修/诊断模式、初始化/自检模式。
Item定义的精度直接影响HARA的质量。如果你把边界画得太窄:比如只定义了“EPS MCU上的软件“:你会遗漏传感器故障、通信故障和机械故障带来的危害。如果你把边界画得太宽:“整车转向功能”。你会把悬架、轮胎磨损等不属于EPS设计范围的失效也引入HARA,导致分析发散。
Item定义还有另一个作用:它明确了你承担安全责任的边界。Item内部发生的故障导致的危害,你的设计必须覆盖。Item外部接口上的异常行为(比如车速传感器传过来一个疯狂的值),你需要定义安全机制来应对。但不是你去保证车速传感器不失效,那是提供车速传感器的那个item的安全责任。
操作场景:HARA的“场景库“
有了item定义,下一步是识别操作场景(Operational Situations)。操作场景是判断E(暴露度)和C(可控性)的基础:没有场景,你就无法判断某个危害在什么情况下发生、有多大概率、驾驶员能不能控制。
操作场景至少要考虑:
道路类型:高速公路、城市道路、乡村道路、山区道路、隧道、桥梁。
路面条件:干燥、积水、积雪、结冰、碎石、坑洼。
天气条件:晴天、雨天、雪天、雾天、夜间、强逆光。
驾驶操作:直行、转弯、变道、超车、制动、加速、倒车、坡道起步。
交通条件:拥堵、通畅、有/无对向车、有/无行人自行车、施工区。
车辆状态:满载、空载、拖挂、低油量、低胎压、故障灯亮。
驾驶员状态:正常、疲劳、分心、新手、老年驾驶员。
你不需要为组合出天文数字的场景而头疼。这是很多HARA新手的误区。你需要做的是:识别那些对S/E/C参数产生质变的场景。
举个例子:“高速公路120km/h直行“和“地库5km/h转弯“是本质不同的场景:暴露度和可控性天差地别。“晴天干燥高速“和“雨天湿滑高速“也有差异:可控性在雨天显著降低。但“干燥高速22°C“和“干燥高速23°C“没有实质差异。你不必纠结这种微小的变化。
危害识别:把故障行为翻译成“这辆车怎么了“
有了场景库,现在你要系统地识别危害。这是HARA最需要想象力的环节。你需要从“某个系统功能出了什么故障“推导到“这可能对这辆车及其周边的人造成什么伤害“。
工程实践中常用一组引导词(来自HAZOP分析方法)来帮助你梳理 malfunctioning behaviour(故障行为)。ISO 26262要求系统性地分析故障行为,但没有规定必须使用哪组引导词:以下这组是行业中最常用的:
| 引导词 | 含义 | EPS示例 |
|---|---|---|
| 功能丧失(Loss of Function) | 该有的功能完全没有了 | 转向辅助完全消失,方向盘极重 |
| 非预期激活(Unintended Activation) | 不该有的功能自己启动了 | 驾驶员手放在方向盘上,EPS自己向左施加扭矩 |
| 功能输出过大(Incorrect — too high) | 输出值大于预期值 | 驾驶员轻微转方向盘,EPS却直接施加最大助力 |
| 功能输出过小(Incorrect — too low) | 输出值小于预期值 | 驾驶员大力转方向,EPS只给了很少的助力 |
| 方向错误(Incorrect — opposite direction) | 输出方向与预期相反 | 驾驶员想向左转,EPS却向右施加扭矩 |
| 功能卡滞(Function Stuck) | 输出冻结在某个值 | EPS维持在某个固定的辅助力,无法响应驾驶员输入变化 |
| 功能延迟响应(Incorrect — delayed) | 输出时序不对 | 驾驶员转动方向盘,200ms后EPS才做出响应 |
用这些引导词,你可以系统性地检查每个item功能在每个操作模式下的潜在故障行为。
S参数(Severity):这个危害有多致命?
S参数评估的是:如果这个hazardous event发生,对驾驶员、乘客、其他交通参与者可能造成的伤害有多严重?
ISO 26262 Part 3给出了精确的分级:
| S等级 | 描述 | 标准原文核心表述 | 免疫类比 |
|---|---|---|---|
| S0 | 无伤害 | No injuries | 接触到非病原性细菌——完全没事 |
| S1 | 轻中度伤害 | Light and moderate injuries | 普通感冒——不适但不威胁生命 |
| S2 | 严重伤害(危及生命,生存预期大概率) | Severe and life-threatening injuries (survival probable) | 重症肺炎——需要ICU但治愈希望大 |
| S3 | 致命伤害(危及生命,生存不确定)或致命 | Life-threatening injuries (survival uncertain), fatal injuries | 埃博拉出血热或狂犬病——高死亡率,生存不确定 |
S参数是根据hazard本身的物理伤害潜力来确定的,不考虑安全机制。也就是说,你要假设“hazardous event已经发生了“这个前提下来评估严重度。你不能说“因为我们的系统有XX安全机制,所以严重度降为S1“:S参数评估的是潜在的伤害潜力,不是你的安全机制降低了多少风险。安全机制能不能降低风险,是后面安全概念设计要考虑的事。
举例:回到我们的EPS:
- 低速直线行驶时EPS失去辅助力(方向盘变重):S0 — 驾驶员仍可在低速下费力转向,最多肌肉酸痛。
- 非预期激活,产生轻微转向脉冲:S1 — 可能导致轻度肌肉拉伤或车辆轻微偏离但不会发生碰撞。
- 非预期激活,在高速下产生中等横向偏移:S2 — 偏离车道与对向车辆或护栏碰撞,可能造成危及生命的伤害但系安全带的乘员大概率存活。
- 非预期激活,雨天高速急弯下产生大幅度反向力矩:S3 — 车辆失控、翻滚或高速碰撞,乘员生存不确定。
S3经常被称为“the S3 bar“:一旦你的危害评估达到S3,它不因为你系了安全带就变成S2。S3的判断标准是:即使使用了合理的被动安全(如安全带、气囊),伤害仍然可能危及生命且生存不确定。
E参数(Exposure):这个危险场景有多少出现机会?
E参数评估的是:操作场景暴露时间占平均驾驶时间的比例,或者发生的频率。
ISO 26262 Part 3给出的精确定义:
| E等级 | 描述(基于频率,详见Annex B) | 章节原文 |
|---|---|---|
| E0 | Incredible — 不可信 | 极其罕见,几乎从未发生 |
| E1 | Very low probability — 极低概率 | 每年发生少于一次(对该车型的每位驾驶员而言) |
| E2 | Low probability — 低概率 | 每年发生几次 |
| E3 | Medium probability — 中等概率 | 每月发生一次或多次 |
| E4 | High probability — 高概率 | 几乎每次驾驶都会发生 |
标准规范性Table 2仅给出E0-E4的文字描述(Incredible/Very low/Low/Medium/High),上述频率参考来自Annex B(informative)。E2/E3/E4的时间比例参考(<1%/1-10%/>10%)适用于特定车辆分类,这里使用更通用的频率描述。
E参数评估的是操作场景的出现频率,不是危害的发生概率。比如“高速公路行驶“是一个操作场景,你的E参数评估的是“高速公路行驶占平均驾驶时间的比例“,而不是“在高速公路上EPS失效的概率“。
典型参考:
- 高速公路行驶(>100km/h):通常占驾驶时间的10%-30% → E4
- 山路行驶:取决于地区,可能1%-5% → E2或E3
- 夜间+雨天的山路:<1% → E2
- 在举升机上维修:每次保养几十分钟,远<1% → E1(但如果你是维修工,维修时的暴露不能忽略)
C参数(Controllability):驾驶员能不能避免伤害?
C参数评估的是:当hazardous event发生时,驾驶员或其他处于风险中的人员在多大程度上能够控制车辆并避免特定伤害。
这是三个参数中最难评估的一个。你需要考虑:
- 驾驶员识别出异常的时间
- 驾驶员正确判断的时间
- 驾驶员采取纠正动作的时间
- 车辆对纠正动作的响应时间
- 在给定的TTF(Time to Fault)内完成上述所有步骤的可行性
ISO 26262 Part 3的C参数分级:
| C等级 | 描述 | 准确含义 |
|---|---|---|
| C0 | Controllable in general | 普通驾驶员通常都能控制——这甚至不是一个显著的异常 |
| C1 | Simply controllable | 超过99%的驾驶员能够避免伤害 |
| C2 | Normally controllable | 超过85%的普通驾驶员通常能控制损伤 |
| C3 | Difficult to control or uncontrollable | 普通驾驶员通常无法或几乎无法控制损伤 |
可控性评估中最常见的两个陷阱:
陷阱1:高估驾驶员能力。 大部分驾驶员不是试车员。他们的反应时间在0.6-1.5秒范围内(这是大量实验研究的数据,不是你的直觉判断)。在一个典型的“非预期横向偏移“事件中,驾驶员需要:察觉车辆在偏(0.3-0.8秒)→ 理解发生了什么(0.2-0.5秒)→ 决定如何纠正(0.2-0.5秒)→ 执行纠正动作(0.3-1.0秒)→ 车辆响应(0.1-0.3秒)。即使在最好的情况下,从故障发生到驾驶员纠正的总时间也接近1秒。以120km/h的速度,1秒行驶33米。它意味着车辆可能已经偏离了半个车道宽。
陷阱2:忽略“故障行为可能干扰驾驶员“这一事实。 如果EPS非预期地向左施加扭矩,驾驶员首先感受到的是“方向盘在自己动“。这本身就是一种干扰和惊吓。驾驶员可能先与方向盘的异常力量搏斗(增加了反应延迟),然后才意识到需要踩刹车或纠正方向。这种惊吓效应在可控性评估中必须考虑。
回到EPS转向角度偏移的例子:
- 低速5km/h地库:时间充裕+速度低+环境封闭 → C1
- 高速120km/h直行:需要快速识别+纠正窗口窄+速度快后果严重 → C2
- 雨天120km/h弯道:识别时间被路面反馈干扰+纠正窗口极短+湿滑降低车辆响应 → C3
ASIL Determination:S+E+C → 安全等级
有了S、E、C三个参数,你就可以使用ISO 26262 Part 3中的ASIL确定表来查找结果。
最具代表性的几个组合(基于你的参考数据):
| S | E | C | ASIL | 一句话解释 |
|---|---|---|---|---|
| S1 | E4 | C3 | ASIL B | 轻伤但高频高难控——需要相当的安全措施 |
| S2 | E4 | C3 | ASIL C | 重伤+高频+高难控——非常严格的开发要求 |
| S3 | E4 | C3 | ASIL D | 致命+高频+高难控——最高安全完整性等级 |
| S3 | E1 | C1 | QM | 虽致命但极罕见且容易控制——质量过程足够 |
| S1 | E1 | C1 | QM | 轻伤、罕见、易控——无需ASIL,按质量管理即可 |
注意:S3+E4+C3 = ASIL D 是“天花板组合“:最严重的伤害潜力在最常见的场景中极难控制。一旦你的HARA走到了这个组合,你就进入了功能安全的“地狱模式“:所有开发活动必须满足最严格的ASIL D要求。
完整案例演示:EPS转向角度偏移的HARA
让我们完整地走一遍这个HARA,让它嵌在你的记忆中。
Item:电动助力转向系统(EPS),包括扭矩传感器、EPS ECU、驱动电机、转向齿条。
功能:根据驾驶员在方向盘上施加的扭矩,提供辅助转向力。
故障行为(malfunctioning behaviour):EPS非预期地持续施加超过100N的转向力矩,导致车轮在驾驶员未输入的情况下向左偏转。
这条故障行为如何从引导词推演出来?
- 使用引导词“非预期激活“:EPS的辅助功能在没有驾驶员扭矩输入的情况下自己激活了
- 结合“功能输出过大“:即使只是自激活,如果扭矩值异常大(比如CAN通信中扭矩数据被α粒子翻转),危害远大于轻微自激活
Hazard:车辆产生非驾驶员预期的横向偏移,可能导致偏离车道或与其他车辆/路侧障碍物碰撞。
注意:这是车辆层面的危害定义:没有提及“CAN通信“、“扭矩传感器”、“MCU“等系统实现细节。
Operational Situation:高速公路,120km/h,雨天,弯道(半径500m),车道宽3.5m,左侧有对向来车。
S参数评估:
在高速公路上以120km/h处突然非预期地大幅横向偏移:车辆可能偏离车道并与对向车辆发生正面碰撞,或与路侧护栏高速碰撞。即使乘员系安全带、气囊正常展开,碰撞能量水平和可能的翻滚决定了伤害可能威胁生命且生存不确定。根据ISO 26262 S参数分级标准,评定为S3(Life-threatening injuries, survival uncertain)。
E参数评估:
高速公路驾驶是中国车主日常驾驶的重要组成部分。根据交通运输行业统计数据,高速公路行驶占总行驶时间比例通常超过10%,尤其对于频繁城际通勤的用户。此外,“雨天“降低部分占比,但“高速+弯道“依然是显著的时间段。按E参数分级,占驾驶时间>10% → E4(High probability)。
C参数评估:
这是一个极具挑战的可控性判断。考虑以下因素:
- 非预期的横向偏移本身会惊吓驾驶员:初始反应时间可能高于正常值
- 驾驶员需要识别“方向盘在自转“与“车辆正在偏离“之间的关系:认知负荷高
- 雨天路面摩擦系数低(μ≈0.4-0.7对比干燥路面的μ≈0.9),纠正动作效率降低
- 120km/h速度下,每100ms行驶3.3m:纠正窗口极窄
- 弯道中视野受限,如果对向有来车,纠正风险(避让动作本身可能导致甩尾)增加不确定性
- 研究显示在类似“突然横向偏移“的场景中,仅约50%-70%的普通驾驶员能在安全时间窗口内做出足够有效的纠正
基于上述驾驶行为数据推理,评定为C3(Difficult to control or uncontrollable,普通驾驶员通常无法或几乎无法控制损伤。工程上通常以少于90%的驾驶员能够避免伤害作为量化参考线)。
ASIL Determination:S3 + E4 + C3 → ASIL D。
Safety Goal:防止EPS系统非预期激活转向辅助导致的非驾驶员预期车辆横向偏移。
注意,安全目标仍然是功能层面的:没有提到冗余扭矩传感、CAN保护、电机驱动监控等技术方案。技术方案是下一步“功能安全概念“(Part 3, Clause 7)要推导的内容。
更多的HARA场景(帮助你对S/E/C的判断形成直觉)
场景2:同一item,但场景变为“城市地库,5km/h,干燥地面,停车入位时EPS辅助力突然消失(功能丧失)“
- S = S0:低速,驾驶员仍可操作方向盘,最多需要较大力气,不产生伤害
- E = E2:停车入位场景约占驾驶时间<1%
- C = C1:低速下方向盘变重,绝大多数驾驶员能直接用更大的力气完成操作
- 结果:QM。这就是为什么低速下的转向助力丧失通常不被视为安全相关
场景3:同一item,高速公路服务区停车状态,驾驶员下车检查时,EPS误启动转向电机导致方向盘快速自转,驾驶员手臂被夹
- S = S1或S2(取决于夹伤力度和位置,但一般不像行驶中碰撞那样威胁生命)
- E = E1:这种情况的发生频率极低
- C = C2或C3:方向盘自转难以预料,驾驶员可能无法及时躲开
- 结果:ASIL A或B
注意场景2和场景3给出了截然不同的ASIL:同一个item的同一功能失效,在不同场景中的ASIL完全不同。这也就是为什么HARA必须逐场景地分析,而不能“按功能模块“来分配ASIL。
免疫系统全景映射:HARA = 流行病学调查
让我们把HARA与本书的免疫系统隐喻对应起来。
Item定义 = 宿主特征描述。流行病学家在调查疫情时,首先要明确“宿主是谁“:是儿童还是成人?有什么基础疾病?免疫状态如何?对应到HARA,你要明确item是什么,边界在哪,操作模式有哪些。
危害识别 = 病原体鉴定。这个病原体是什么?它通过什么途径进入人体?它能引起什么症状?对应到HARA,你用引导词系统地梳理每个功能可能的失效行为,识别这些失效行为可能对车辆和人造成什么危害。
操作场景 = 传播环境。病毒在拥挤的室内环境传播性强,在户外通风好的地方传播性弱。对应到HARA,同一个危害在高速弯道上和在静止地库里的后果完全不同。
S参数 = 病原体毒力。埃博拉的毒力(S3)远大于普通感冒(S1)。对应到HARA,非预期高速横向偏移的伤害潜力(S3)远大于低速失去助力(S0)。
E参数 = 暴露频率。你一生中每年都面对流感病毒(E4),但可能永远不会面对马尔堡病毒(E1)。对应到HARA,你几乎每次驾驶都在高速上(E4),但很少有人天天在山路上开夜车(E1)。
C参数 = 人群免疫力和干预可及性。如果你感染了某种病毒,你的免疫系统能否控制?有没有特效药?如果能轻松控制(C1),风险低。如果几乎无法控制(C3),风险高。对应到HARA,驾驶员能不能在FTTI内纠正非预期的车辆行为?
Safety Goal = 免疫策略目标。免疫策略不是你用什么疫苗、什么药物。那是“免疫方案“(对应“功能安全概念“)。免疫策略是顶层的:“防止病毒感染导致致死性疾病”。对应到HARA,Safety Goal是“防止EPS非预期激活导致的非预期横向偏移“:顶层目标,方法不限。
常见HARA误区
误区1:把系统故障写成hazard。 “CAN通信丢失“不是hazard。“扭矩传感器输出信号漂移“不是hazard。这些都是malfunctioning behaviour。Hazard必须是“车辆产生了什么危险行为”:“车辆制动失效”、“车辆非预期加速”、“车辆横向偏移”。
误区2:降级评估S参数。 “因为我们加了多冗余的安全机制,所以S参数可以降低”。错了。S参数评估的是“假设危害已经发生“的严重度。你的安全机制不能改变碰撞的物理后果。它只能降低危害发生的概率。降低概率反映在“随机硬件失效概率度量(PMHF)“里,不反映在S参数里。
误区3:用系统设计的意图来替代场景分析。 “这个功能是驾驶辅助不是自动驾驶,所以我们假设驾驶员永远会监控”。但HARA中,你不能用“设计意图“来替代“实际失效后的场景“。如果LKA(车道保持辅助)非预期输出强横向力矩时驾驶员正好手没握稳方向盘。你的HARA必须考虑这个场景,无论设计意图如何。
误区4:在C评估时说“我们的测试工程师能控制“。 C参数针对的是“普通驾驶员“,不是工程试车员、不是职业赛车手。你必须采用典型的驾驶员行为数据,包括其反应时间、认知负荷、体力极限。
误区5:混淆E参数和失效率(FIT)。 E是场景暴露概率,不是硬件失效概率。即使你的MCU的FIT是0.001(极其可靠),你在高速上的暴露仍然是E4。因为高速是你的操作场景,不是你的失效模式。
HARA工作产品
ISO 26262 Part 3要求HARA产生正式的工作产品:HARA报告。这份报告至少应包含:
- Item定义文档(功能、边界、接口、操作模式)
- 操作场景列表(描述和选择理由)
- 对每个识别到的功能的malfunctioning behaviour分析
- 对每个hazardous event的S/E/C评估及其理由
- ASIL确定表
- 安全目标清单
- 全部评估依据的参考(数据来源、研究引用、既往事故数据)
这份报告是后续所有安全活动的基础。如果HARA中遗漏了某个危害场景,那么后续的整个安全概念、技术安全需求、硬件度量和软件架构中都不会针对该场景做任何安全保障。这是功能安全中最严重的系统性失效。
本篇小结
- Item定义决定HARA的边界:太窄漏危害,太宽发散
- 操作场景是E和C参数的基础
- 7个malfunctioning behaviour引导词帮你系统识别危害
- 危害必须定义在车辆层面
- S参数(S0-S3):伤害严重度,不因安全机制降级
- E参数(E0-E4):场景出现频率,不是失效概率
- C参数(C0-C3):驾驶员能否避免,必须基于行为数据
- S+E+C → ASIL(QM到ASIL D)
- 完整EPS案例:S3+E4+C3 = ASIL D
【下集预告】: 你刚亲手完成了一整份HARA,在S3+E4+C3的组合下标出了ASIL D。但S、E、C到ASIL的映射不是一道乘法题,它是一张查表。为什么S1+E4+C3只到ASIL B,而S3+E4+C1也到不了D?下一节的ASIL判定表会告诉你:同一个危害事件,C参数差一档,你的开发预算是翻倍还是省一半。