2. 安全状态机基础
安全状态机是功能安全与高可靠系统设计中的核心建模工具。它把系统在任意时刻所处的“安全姿态”抽象为有限个状态,把引发姿态变化的外部或内部刺激抽象为事件,把状态之间的合法跳转抽象为转移,并在转移上挂载动作与守卫条件。理解这五个要素及其数学表达,是后续进行故障降级设计、可达性分析与安全验证的前提。
一、五个核心要素
一个确定性的安全状态机通常可表示为五元组:
M = (S, E, T, s0, A)
S : 有限状态集合,如 {Init, Normal, Degraded, SafeStop, Fault}
E : 事件集合,如 {start, faultDetected, recover, timeout, reset}
T : 转移关系,T ⊆ S × E × S
s0 : 初始状态,s0 ∈ S
A : 动作集合,绑定在转移或状态上
- 状态(State):系统在某一时刻的稳定运行模式,必须互斥且可枚举。安全状态机中通常至少包含“正常”“降级”“安全停止”“故障锁定”等状态。
- 事件(Event):触发状态评估的信号,可以是传感器越限、看门狗超时、通信丢失、人工复位等。事件是瞬时的,状态是持续的。
- 转移(Transition):形如 (s, e, s'),表示在状态 s 下收到事件 e 且守卫成立时,迁移到 s'。
- 动作(Action):转移发生时执行的操作,如切断输出、拉低使能、记录故障码、启动定时器。
- 守卫条件(Guard):布尔表达式,只有为真时转移才被允许,例如
temp < 80 && commOK。
二、数学表达与语义
带守卫和动作的转移可写成:
s --[e [g] / a]--> s'
含义:当前状态 s,当事件 e 发生且守卫 g 为真时,
执行动作 a,并进入状态 s'。
若守卫为假,则该事件被忽略或进入“未处理”分支,这本身就是一种安全设计:不允许在条件不满足时贸然降级或恢复。状态机的运行语义可描述为:在状态 s 下等待事件,事件到达后对所有以 s 为源的转移逐一求值守卫,选择第一条守卫为真的转移执行。因此转移的优先级顺序在安全设计中必须显式定义,避免歧义。
安全状态机的关键性质:确定性(同一状态同一事件至多一条转移生效)、完备性(每个状态对关键事件都有响应)、可达性(安全状态必须从任意状态可达)。
三、状态转移关系图解
下图给出一个典型的电机驱动安全状态机:正常运行时持续监测,一旦检测到故障则进入降级,若降级无法维持则进入安全停止,严重故障直接锁定并等待人工复位。
四、典型场景:电池管理系统(BMS)降级
以电池管理系统为例,其安全状态机可定义如下状态与转移:
| 当前状态 | 事件 | 守卫条件 | 动作 | 目标状态 |
|---|---|---|---|---|
| Normal | cellOverTemp | temp < 60℃ | 降额充电 | Degraded |
| Normal | cellOverTemp | temp ≥ 60℃ | 断开主继电器 | SafeStop |
| Degraded | tempRecover | temp < 45℃ 持续 30s | 恢复额定功率 | Normal |
| Degraded | timeout | 降级超时 10min | 切断输出 | SafeStop |
| SafeStop | faultPersist | 故障仍存在 | 记录故障码 | Fault |
| Fault | reset | 人工确认且自检通过 | 清除故障 | Init |
可以看到,守卫条件决定了同一事件在不同工况下走向不同状态,这正是安全状态机区别于普通流程控制的关键。动作则承担“让系统进入更安全姿态”的职责,例如降额、切断、锁定。
五、常见误区与复盘
误区一:把事件当状态。“过温”是事件,“降级”才是状态。若把瞬时信号直接当作状态,会导致状态爆炸且无法收敛。
误区二:守卫条件缺失或过宽。没有守卫的转移会在任意条件下触发,可能造成正常工况被误判为故障,引发不必要的停机。
误区三:动作与状态耦合过紧。动作应尽量绑定在转移上,保持状态“纯姿态”,便于形式化验证与测试用例生成。
误区四:忽略转移优先级。当多条转移的守卫同时为真时,必须按显式优先级求值,否则行为不确定。
误区二:守卫条件缺失或过宽。没有守卫的转移会在任意条件下触发,可能造成正常工况被误判为故障,引发不必要的停机。
误区三:动作与状态耦合过紧。动作应尽量绑定在转移上,保持状态“纯姿态”,便于形式化验证与测试用例生成。
误区四:忽略转移优先级。当多条转移的守卫同时为真时,必须按显式优先级求值,否则行为不确定。
复盘建议:对每个安全状态机,至少检查三件事——(1) 从任意状态是否都能到达 SafeStop 或 Fault;(2) 每个状态对“最危险事件”是否都有定义;(3) 守卫条件是否只依赖可观测、可诊断的信号。做到这三点,状态机才具备工程可用性。