Fail-Safe 故障安全

真正的 Fail-Safe(失效安全/故障安全)是一套完整的系统设计思想,目标只有一个:系统发生故障时,不以危险的方式失效。

一、 Fail-Safe

1.1 传统控制逻辑的安全盲区

我们先看一个常见的简单控制链路:

复制代码
上位机 → 控制器 → 继电器 → 电磁阀/电机/激光器

软件执行 turn_on(),数字输出置1,继电器吸合,设备运行。

如果此时软件进入死循环、线程卡死、进程崩溃、甚至CPU死机,会发生什么?

数字输出会保持最后一次的状态,继电器持续吸合,危险设备持续运行------控制系统已经失效,但危险输出仍然有效。

这就是最典型的安全盲区:Failure → Hazardous State(故障导向危险状态)。

而 Fail-Safe 的目标是把这条链路反转:

Failure → Fault Detection → Safety Function → Safe State

即:故障发生后,先被检测到,再触发安全功能,最终进入安全状态。

举个典型的链路:

text 复制代码
软件卡死 → 100ms 无心跳信号 → 独立安全控制器检测超时 → 撤销使能信号 → 安全继电器释放 → 触发STO → 电机转矩切断

最终结果:Failure → Safe State

1.2 标准定义:NIST 与 IEC

  • NIST 定义:当系统发生或检测到故障时,以一种能够防止对人员、财产或系统资源造成损害的方式终止系统功能。
  • IEC 61508 定义:针对电气、电子和可编程电子(E/E/PE)安全相关系统,从风险分析、安全功能、安全完整性到验证、运行和维护,建立完整的生命周期安全管理体系,即 Functional Safety(功能安全)。

功能安全不评价"设备本身安不安全",而是评价某个安全功能在需要时能否可靠执行。

1.3 锚点:Safe State(安全状态)

Fail-Safe 的重点是 Safe State------针对特定危险,系统发生故障时应进入的状态。

不同设备的安全状态完全不同,必须基于风险评估定义:

设备类型 常见误区 真正的 Safe State
水平输送电机 断电即安全 转矩 OFF(自由停车)
垂直升降机构 断电即安全 电机停转 + 机械制动器抱闸 + 转矩移除
加热器 断电即安全 加热输出 OFF
激光器 断电即安全 激光发射禁用
气动夹具 泄压即安全 保持夹持压力(防止工件坠落伤人)
真空吸盘搬运 泄压即安全 维持真空吸附
压力容器 保压即安全 打开泄压阀

所以 Fail-Safe 的第一步绝不是 if(error) all_output = 0;,而是先完成:

Hazard 识别 → Safe State 定义 → Safety Function 设计

二、安全概念辨析

很多人会把可靠性、容错、故障安全等概念混为一谈,它们的目标和实现方式完全不同。

2.1 概念对比

概念 目标 典型场景
Reliability(可靠性) 尽量让系统不要坏 提升器件寿命、降低故障率
Fault Tolerance(容错) 坏一个部件,系统还能正常工作 双机热备、冗余服务器
Fail-Safe(失效安全) 坏了之后,系统进入安全状态 安全继电器、STO、看门狗跳闸
Fail-Operational(故障可运行) 坏了之后,关键功能仍能继续执行 飞机飞控、冗余动力系统
Fail-Secure(故障保全) 坏了之后,仍维持安全/访问控制状态 门禁锁断电保持锁闭
Failover(故障切换) 主系统坏了自动切备用 双机主备切换、冗余电源

2.2 关键区分:容错 ≠ 故障安全

  • 双机热备,A机故障切B机继续运行 → Fault Tolerance / Failover
  • 控制器故障,接触器断开,电机停止 → Fail-Safe

NIST 也明确区分:fail-safe 侧重故障后避免损害,fail-secure 侧重故障后维持安全属性(如访问控制)。

三、功能安全的设计与机制

3.1 De-Energize to Trip(失电跳闸原则)

维持运行需要持续提供能量;能量消失时,自动进入安全状态。

错误的设计思路:

复制代码
DO = 0 → Stop
DO = 1 → Run

这种设计下,如果输出晶体管击穿、PC卡死最后输出为1,设备会永久运行。

正确的安全设计 :

运行需要持续的"使能证明",一旦使能信号消失,硬件自动回到安全状态。

典型实现:Enable 信号 + Watchdog + 输出诊断 + 反馈触点 + 安全继电器 / STO

转变:从"需要发一个 Stop 命令" 变成"需要持续证明系统仍然具备 Run 的条件"

3.2 Watchdog 与 Heartbeat

3.2.1 Watchdog

Watchdog 的逻辑是:将"证据缺失"判定为"故障"。

Linux 内核硬件看门狗的典型模式:用户态周期性喂狗 → 内核驱动 → 硬件看门狗。一旦软件故障停止喂狗,超时触发系统复位。

3.2.2 系统看门狗 ≠ 安全看门狗
  • PC 硬件看门狗 → PC 重启,属于可用性恢复手段
  • 危险执行器的安全看门狗 → 直接切断危险输出,位于靠近执行器的位置

⚠️ 典型误区:PC 卡死之后,看门狗5秒后重启,期间电机已经运行35秒,完全达不到安全要求。

3.2.3 Heartbeat

基础错误示范:

c 复制代码
bool heartbeat = true; // 固定电平

如果线路短接到24V,心跳永久为1,控制器会误认为系统一直健康。

工业级正确设计:

  • 方波跳变:0 → 1 → 0 → 1 周期性翻转
  • 递增计数器:101 → 102 → 103 → ...
  • 完整帧:序列号 + CRC + 超时校验 + 源/目的ID

可以检测:信号冻结、重复包、丢包、乱序、数据破坏、错误节点、通信中断。

工业安全总线 PROFIsafe 正是基于此原理,在普通以太网之上增加安全通信层,用于连接安全PLC与安全驱动。

3.3 双通道冗余与共因故障(CCF)

3.3.1 为什么需要双通道

单继电器触点焊死后,即使控制器发OFF,电机仍然通电。

双通道设计的目标:单一故障 ≠ 安全功能丧失

3.3.2 共因失效(Common Cause Failure, CCF)

很多人以为"双通道=安全",但如果两个通道:

共用电源、共用连接器、共用线缆、共用CPU、同一个软件bug、同一个时钟源

那么一个共同原因会导致两个通道同时失效,这就是共因故障。

⚠️ 典型伪冗余:两个停止函数运行在同一个卡死的进程里,完全无法抵抗共因故障。

3.4 反馈闭环:Command ≠ Result

命令发送成功 ≠ 执行器已经进入安全状态

典型实现:EDM(External Device Monitoring,外部设备监控)

安全控制器发OFF命令 → 检测接触器辅助触点反馈 → 确认触点断开才判定安全;如果反馈不匹配,立即报故障。

不能因为 digitalWrite(enable, LOW); 执行成功,就认为执行器已经安全。必须做到 Command + Observation 形成闭环。

3.5 禁止意外重启原则

场景:设备运行中断电停机,恢复供电后自动启动,可能直接伤人。

Fail-Safe 要求:

  • 失电 → 进入安全状态
  • 复电 → 仍保持安全状态
  • 必须经过操作人员确认/复位 → 进入就绪态 → 重新接收运行命令

对于断电后重启可能伤人的设备,必须防止电源恢复后机器自动重启。

3.6 Default-to-Safe 状态机设计

软件层面不要只有 ON/OFF 两态,至少应设计完整的安全状态机:

复制代码
POWER_OFF → INIT → SAFE → READY → RUNNING

所有异常分支(超时、通信丢失、传感器无效、反馈不匹配、内部故障)全部默认指向 SAFE 状态,而不是保持上一次状态。

3.7 Permission-based 控制逻辑

错误写法(故障导向运行):

c 复制代码
if (error1) stop();
if (error2) stop();
if (error3) stop();

只有想到的错误才会停止,想不到的错误就会继续运行。

正确写法(权限导向运行):

c 复制代码
bool allow_run = 
    communication_ok
    && controller_ok
    && safety_chain_ok
    && actuator_ok
    && heartbeat_ok
    && !emergency_stop
    && command_valid;

if (!allow_run) {
    enter_safe_state();
}

只有所有条件明确成立,才允许运行;任何条件不满足,立即进入安全状态。

这是 Fail-Safe 最核心的软件设计原则。

四、工业驱动系统的安全功能

针对电机、伺服、机器人等运动系统,IEC 61800-5-2 定义了标准的安全功能,最核心的是 STO、SS1、SS2。

4.1 STO(Safe Torque Off,安全转矩关断)

  • 定义:驱动的转矩产生输出被禁用,电机不再产生转矩
  • 对应 IEC 60204-1 Stop Category 0
  • 效果:电机自由减速停车(coast to stop)

⚠️ 注意:STO ≠ 立即静止。高速大惯量设备执行STO后会继续滑行,因此不能直接用于垂直轴等有坠落风险的场景。

4.2 SS1(Safe Stop 1,安全停止1)

  • 逻辑:安全请求 → 受控减速 → 速度到0 → 触发STO
  • 对应 IEC 60204-1 Stop Category 1
  • 适用:需要快速停车、避免自由滑行的场景

4.3 SS2(Safe Stop 2,安全停止2)

  • 逻辑:安全请求 → 受控减速 → 速度到0 → 进入SOS(安全操作停止,保持转矩)
  • 对应 IEC 60204-1 Stop Category 2
  • 适用:停机后仍需保持定位,或后续需要快速恢复的场景

4.4 其他常见驱动安全功能

SLS(安全限速)、SLT(安全限矩)、SLP(安全限位置)、SDI(安全方向)、SBC(安全制动控制)等。

五、PL 与 SIL 的对应

功能安全用量化的等级来描述安全功能的可靠程度,机械领域常用 PL,电气电子领域常用 SIL。

5.1 ISO 13849 与 PL 等级(机械控制领域)

ISO 13849-1 是机械安全控制系统的标准

它将安全性能划分为 5 个 Performance Level(PL),用每小时危险失效概率 PFH_D 衡量:

性能等级 PL 每小时危险失效概率 PFH_D
PL a ≥ 10⁻⁵ ~ < 10⁻⁴ /h
PL b ≥ 3×10⁻⁶ ~ < 10⁻⁵ /h
PL c ≥ 10⁻⁶ ~ < 3×10⁻⁶ /h
PL d ≥ 10⁻⁷ ~ < 10⁻⁶ /h
PL e ≥ 10⁻⁸ ~ < 10⁻⁷ /h

PL e 是机械领域最高的常规安全等级。

5.2 IEC 61508 与 SIL 等级(电气电子领域)

IEC 61508 是功能安全的基础通用标准,定义了 4 个 Safety Integrity Level(SIL):

安全完整性等级 SIL 高需求/连续模式 PFH
SIL 1 ≥ 10⁻⁶ ~ < 10⁻⁵ /h
SIL 2 ≥ 10⁻⁷ ~ < 10⁻⁶ /h
SIL 3 ≥ 10⁻⁸ ~ < 10⁻⁷ /h
SIL 4 ≥ 10⁻⁹ ~ < 10⁻⁸ /h

机械行业的 IEC 62061 通常只用到 SIL 1 ~ SIL 3,SIL 4 主要用于过程工业等高风险领域。

5.3 PL 与 SIL 的数值对应关系

等级 PL 对应 PFH_D SIL 对应 PFH 大致对应
低 PL c:10⁻⁶ SIL 1:10⁻⁶ PL c ≈ SIL 1
中 PL d:10⁻⁷ SIL 2:10⁻⁷ PL d ≈ SIL 2
高 PL e:10⁻⁸ SIL 3:10⁻⁸ PL e ≈ SIL 3

注意:这只是数值上的近似对应,两者的标准体系、适用范围、计算方法不同,不能直接等同替换。

5.4 影响性能等级的要素

  1. Category(架构类别)
类别 特征
B 基本安全原则,单通道
1 采用经过验证的高可靠器件
2 单通道 + 周期测试诊断
3 冗余架构,单一故障不丢失安全功能
4 冗余 + 高诊断覆盖 + 故障累积耐受
  1. MTTF_D(平均危险失效时间):每个通道的危险故障平均间隔时间,分为低、中、高三档。
  2. DC_avg(平均诊断覆盖率):系统能检测到的危险故障占比,分为无、低、中、高四档。
  3. CCF(共因失效抑制):抵抗共因故障的能力,通过8项措施评分,≥65分合格。
  4. 软件与系统性故障:软件开发流程、系统性失效防护措施。

最终通过马尔可夫模型计算出整体 PFH_D,对应到相应的 PL 等级。

六、工业上位机系统的合理安全架构

对于 C++/C#/ROS2 等上位机软件,运行在通用 Windows/Linux 平台上,绝对不能把人员安全只依赖在应用层代码上。

6.1 分层安全架构

复制代码
┌──────────────────────────────────────────────────┐
│  Normal Control Domain(正常控制域)         │
│  PC / Windows / Linux                          │
│  C++ / C# / ROS2 / UI / 视觉 / AI              │
└───────────────────────┬──────────────────────┘
                        │
                command + heartbeat
                        │
═══════════════════════════════════════════════════╕
  Safety Boundary(安全边界)
╘══════════════════════════════════════════════════╛
                        │
                        ▼
         ┌──────────────────────┐
         │ PLC / 安全PLC / MCU  │
         │  安全逻辑与监控       │
         └───────────┬──────────┘
                     │
                Safety Relay / STO
                     │
                     ▼
                执行器 / 电机

同时急停按钮直接接入安全回路,不经过上位机。

6.2 设计原则

  • 上位机负责业务逻辑、轨迹规划、人机交互
  • PLC/MCU 负责实时安全监控、心跳检测、安全逻辑
  • 安全继电器/STO 负责最终危险能量切断
  • 形成独立的 Safety Path,所有安全逻辑不依赖上位机操作系统

这样,AI 算法卡死、UI 无响应、ROS 崩溃、Windows 蓝屏、网络断开,都不会导致危险输出无限维持。

6.3 误区检查表

常见认知 正误 说明
try/catch 能处理所有故障 ❌ 死锁、死机、掉电、断网都执行不到异常处理
看门狗重启电脑就安全 ❌ PC看门狗是可用性手段,危险执行器需要独立安全看门狗
保持最后状态是正常逻辑 ❌ 对危险输出,通信丢失保持最后状态往往最危险
安全逻辑都在同一个CPU/线程 ❌ 无法抵抗共因故障
发STOP命令=进入安全状态 ❌ 命令不等于结果,需要反馈闭环
STO=电机立即停 ❌ STO是撤转矩,大惯量会滑行
断电安全,复电自动运行 ❌ 必须防止意外重启
双通道=PL e / SIL3 ❌ 还需可靠性、诊断、CCF、软件、验证全部达标
有急停就是功能安全 ❌ 急停只是安全功能之一
不用先定义Safe State ❌ 没有目标,所有安全机制都没有意义

七、系统安全的方法论

7.1 功能安全生命周期

功能安全是完整的生命周期过程,不是一段代码:

复制代码
危害分析 → 风险评估 → 安全需求 → 安全功能定义 → 目标PL/SIL
    ↓
架构设计 → 硬件设计 → 软件设计 → 验证 → 确认
    ↓
调试 → 运行 → 维护 → 变更 → 再验证

7.2 四个核心问题(建立安全思维的抓手)

做工业安全设计,先把这四个问题想明白:

  1. 危险是什么?(Hazard Identification)
  2. 安全状态是什么?(Safe State Definition)
  3. 上位机彻底失效时,谁还能把设备拉到安全状态?(Independent Safety Path)
  4. 那个安全机制自己坏了,还能不能检测出来?(Diagnostic Coverage)

想清楚这四个问题,watchdog、心跳、安全继电器、STO、双通道、反馈、PL/SIL 这些概念就会全部串联起来。


写在最后

Fail-Safe 是一整套从危害分析到落地验证的系统工程思想。它的底层逻辑非常朴素:永远不要假设系统正常工作,要为所有可能的故障预设安全退路。

对于工业上位机开发者而言,最重要是先建立"故障导向安全"的设计思维,在控制链路中埋下独立的安全防线。

相关推荐
空堂与归2 小时前
Gemini 4 Argon 发布:物理推理模型控机器人?
人工智能·gpt·ui·ai·机器人
品牌常新14 小时前
景区巡逻机器人怎么选?派宝S5全地形守护解析
运维·人工智能·机器人
kyle~18 小时前
实时系统通信抖动(Jitter)
计算机视觉·机器人·接口隔离原则·传感器
猫先生Mr.Mao18 小时前
具身智能之京东 WLA³详解:用世界状态转换统一人类视频和机器人动作
机器人·论文解读·具身智能·vla·京东·wla3
明志数科19 小时前
机器人训练数据获取困境:互联网数据为何无法直接复用
人工智能·深度学习·microsoft·机器学习·机器人
飞思实验室19 小时前
卓翼智能飞思实验室赋能职业院校,助力斩获中国机器人及人工智能大赛一等奖
人工智能·机器人
鲁邦通物联网20 小时前
原厂协议与非侵入式机器人梯控怎么选?TCO成本模型解析
机器人·巡检机器人·机器人梯控·agv梯控·非侵入式采集·机器人乘梯·机器人自主乘梯
疯狂的维修20 小时前
协作机器人对比工业机器人在加减速时容易抖动的原因
机器人
国科安芯21 小时前
在轨服务与空间机器人任务中跨飞行器CANFD互连的共模与单粒子问题综述
嵌入式硬件·机器人·canfd·低轨卫星·商业航天·抗辐射