提到安全分析方法,大家比较熟知的有失效模式与影响分析(FMEA)、故障树分析(FTA)、事件树分析(ETA)、危险和可操作性分析(HAZOP)等。这些方法在分析故障时,往往依据线性事件链模型,认为故障是由一系列的链状失效事件和人为错误导致的。然而,随着技术朝着综合化和智能化方向发展,出现了很多原有的安全分析方法无法解决的问题。
根据STPA的最初提出者、麻省理工大学的 Nancy Leveson 教授在2003年发表的论文,组件之间的相互作用导致的复杂系统崩溃、与软件相关的崩溃、高度复杂的人为决策以及系统适应性或事故随时间的迁移等都会导致危害事件的发生。
在这一背景下,传统的安全分析方法受到挑战,一个能够解决复杂系统安全分析问题的新方法——STPA应运而生。
01 什么是STPA?
STPA(system-theoretic process analysis),中文译为“系统理论过程分析”,是一个基于事故因果关系扩展模型的危害分析模型。该分析模型认为,即使系统里的每个要素都正常工作,但事故仍然可能发生,因为系统要素之间可能存在不安全的交互。
值得一提的是,STPA 并非汽车领域专属的分析方法,目前已经广泛应用于航空航天、铁路等行业。
与传统的安全分析方法相比,STPA的优势在于可以分析非常复杂的系统,且涵盖了软件和人为操作两个传统安全分析方法没有涵盖的内容,确保危害分析包含所有可能导致损失的因素。
02 STPA分析四步法
使用STPA进行安全分析分为4个步骤:
-
明确分析目的
-
控制结构建模
-
识别不安全的控制行为
-
识别损失场景
2.1 明确分析目的
明确损失(Loss)。由于STPA是一个不仅仅适用于汽车制造等工业领域的安全分析方法,因此一切对利益相关者有价值的东西都可能转化为损失。
对于不同的利益相关者来说(用户和生产商),关注的损失不同;对同一个利益相关者来说,关注的损失也可能有很多种(丧失生命、丧失电力供应等)。
在进行STPA分析时,首先要明确本次分析关注的损失是什么。
明确系统边界。安全分析是系统层面的分析,需要事先确定关注的系统边界在哪里。一个系统通常包含输入、输出两条线且往往由多个子系统组成。
明确系统危害(Hazard)。一个危害可能会导致一个或多个损失。危害与损失的一个重要区别在于,危害与系统设计者/操作者具备控制能力的环节有关,损失则与环境中并不能完全控制的因素有关。相比之下,损失更像是一个宏大的目标和概念,危害则与系统的具体功能息息相关。
明确系统限制。通俗来说,系统限制就是把系统危害进行反向表述。
2.2 控制结构建模
通常来说,一个控制结构中至少包含五个要素:
-
控制器
-
控制行为
-
反馈
-
其他来自要素的输入或输出
-
控制过程
在构建控制结构时,可以从一些能够强制执行约束或防止危害发生的子系统出发。
在完成控制结构构建后,我们需要为每一个控制结构赋予“责任”(responsibility),再依据每一个结构的“责任”,去识别出控制行为和反馈的内容。
2.3 识别不安全的控制行为
不安全的控制行为(UCA)是指在某些条件下会导致危害的控制行为。通常,不安全的控制行为可以以4种形式表现,为我们分析提供框架和思路:
-
未提供控制行为导致危害
-
提供控制行为导致危害
-
太早/太晚/错误顺序提供了控制行为
-
控制行为持续时间太长或结束太快
识别控制器约束。控制器约束是指需要被满足以防止危害发生的控制器行为。在不安全的控制行为(UCA)被确定后,要逐一将其转换为控制器约束。
2.4 明确损失场景
损失场景包括:导致不安全控制行为的场景,以及控制行为没有适当执行或没有执行的场景。
通常来说,导致不安全控制行为的场景可能包括:控制器故障、不充分的控制器算法、不安全的控制输入、不安全的过程模型。
与不充分的反馈和信息相关的场景可能包括:反馈或信息没有接收到、接收了不充分的反馈。
03 以自动紧急制动系统(AEB)为例进行STPA分析
自动紧急制动系统(AEB)可以通过传感器等识别前方障碍物,基于速度、距离等数据计算车辆与目标物的碰撞时间,判断是否会发生碰撞,并结合车辆和驾驶员状态判断是否会发生碰撞,如果预测到碰撞会自主操作控制器让车辆紧急制动。
这一过程涉及三个模块:控制模块(ECU)、测距模块和制动模块。
第一步:明确分析目的
在这个案例中,我们分析的系统是自动紧急制动系统,系统的相关功能已在上文阐明。在这个案例中,我们主要明确两方面的损失(Loss):驾驶员受伤或死亡、车辆损坏。
ID | LOSS |
L1 | 驾驶员受伤或死亡 |
L2 | 车辆损坏 |
基于此,我们进一步明确危害,并明确系统限制:车辆在行驶过程中应该与前车保持最小安全距离。
ID | LOSS | Related loss |
H1 | 车辆在行驶过程中没有与前车保持最小安全距离 | L1、L2 |
第二步:构建控制模型
在AEB中,制动器控制车辆刹车,传感器将包括车轮状态在内的一系列车辆信息及环境信息传输给功能平台,功能平台加工后将角度、速度、位置等信息传输给制动器控制车轮运动。基于这一控制逻辑,形成下图的控制系统。
第三步:识别不安全的控制行为
根据前文所述的步骤,不安全的控制行为主要有四方面,下表列出了可能的不安全控制行为,并将其转换为控制器约束。
步骤 | 没有提供导致危害 | 提供导致危害 | 不正确的时间/顺序 | 持续时间太长或结束太快 |
识别不安全的控制行为 | UCA-1:AEB没有在车辆达到最小安全距离时进行刹车 | UCA-2:AEB在车辆正常行驶时进行刹车 | UCA-3:AEB在超出最小安全距离后进行刹车 | 不适用 |
识别控制器约束 | C-1:AEB应该在车辆达到最小安全距离时进行刹车 | C-2:AEB不应该在车辆正常行驶时进行刹车 | C-3:AEB不应该在超出最小安全距离后进行刹车 | 不适用 |
第四步:明确损失场景
在明确了不安全的控制行为后,我们要进一步推导出UCA的因果场景。比如,UCA1可能由以下一些环节因素导致。
ID | LOSS |
UCA1 | UCA1-SE1.不正确地提供了车辆当前的信息 |
UCA1-SE2.不正确地提供了传感器测量值 | |
UCA1-SE3.无法接收到刹车指令 |
以上就是以自动紧急制动系统(AEB)为例进行的STPA 分析。总结来说,STPA比较擅长复杂系统的分析,除了可以识别出传统分析方法无法识别的一些随机场景危害外,在时间和资源成本上也更有优势,目前已逐步应用于汽车特别是自动驾驶领域。