跳到主要内容

安全功能块

Darra PLC 提供 13 个安全功能块,遵循 IEC 61800-5-2 安全驱动标准和 IEC 62061 机械安全规范。这些功能块由 SafetyFunctionBlocks.cs 实现,可在 SIL 2 / PL d 安全等级下使用。

安全声明

安全功能块提供软件层面的安全监控。完整的安全系统还需要硬件安全回路 (安全继电器/安全PLC)。最终安全等级取决于整体系统架构。

安全功能块总览

编号功能块名称功能
1SF_MonitoredStop安全监控停止 (MS)监控减速停止过程
2SF_SafeStop1安全停止 1 (SS1)受控减速后切断力矩
3SF_SafeStop2安全停止 2 (SS2)受控减速后保持位置
4SF_SafeOperatingStop安全操作停止 (SOS)监控静止状态
5SF_SafeLimitedSpeed安全限速 (SLS)速度超限检测
6SF_SafeLimitedPosition安全限位 (SLP)位置超限检测
7SF_SafeLimitedIncrement安全增量限制 (SLI)单次移动距离限制
8SF_SafeDirection安全方向 (SDI)运动方向限制
9SF_SafeBrakeControl安全制动控制 (SBC)制动器安全管理
10SF_SafeSpeedMonitor安全速度监控 (SSM)连续速度监控
11SF_SafeTorqueOff安全力矩关断 (STO)切断电机力矩输出
12SF_SafetyDoorMonitor安全门监控防护门状态检测
13SF_EmergencyStop急停紧急停止 (IEC 13850)

SF_MonitoredStop — 安全监控停止 (MS)

监控电机在规定时间内减速到零速:

VAR
sfMS : SF_MonitoredStop;
END_VAR

sfMS(
bActivate := bStopRequest, // 触发停止
rActSpeed := rMotorSpeed, // 实际速度反馈
rDecelLimit := 1000.0, // 最大允许减速率 (rpm/s)
tStopTime := T#3s, // 最大停止时间
rStandstill := 5.0 // 静止阈值 (rpm)
);

bStopped := sfMS.bStandstill; // 已停止
bFault := sfMS.bError; // 停止超时故障

SF_SafeStop1 — 安全停止 1 (SS1)

受控减速停止后自动切断力矩 (STO):

VAR
sfSS1 : SF_SafeStop1;
END_VAR

sfSS1(
bActivate := bSS1_Request,
rActSpeed := rMotorSpeed,
tDecelTime := T#2s, // 减速时间限制
rStandstill := 2.0 // 静止判定阈值
);

bTorqueOff := sfSS1.bSTO_Active; // SS1 完成后 STO 激活
bSS1_Done := sfSS1.bDone;
SS1 两阶段执行
  1. 减速阶段: 驱动器执行减速,SS1 监控速度下降
  2. STO 阶段: 速度降至静止阈值后,自动激活 STO 切断力矩

SF_SafeStop2 — 安全停止 2 (SS2)

受控减速后切换到安全操作停止 (SOS),保持位置:

sfSS2(
bActivate := bSS2_Request,
rActSpeed := rMotorSpeed,
rActPosition := rMotorPos,
tDecelTime := T#2s,
rPosWindow := 0.5 // 位置保持窗口 (度)
);

bHolding := sfSS2.bSOS_Active; // 位置保持中

SF_SafeOperatingStop — 安全操作停止 (SOS)

监控电机保持在当前位置不动:

sfSOS(
bActivate := bHoldRequest,
rActPosition := rMotorPos,
rRefPosition := rHoldPos, // 参考位置
rPosWindow := 1.0 // 允许偏差 (度)
);

bPositionOK := sfSOS.bInPosition;
bDrift := sfSOS.bError; // 位置偏移超限

SF_SafeLimitedSpeed — 安全限速 (SLS)

连续监控速度不超过安全限值:

sfSLS(
bActivate := bSLS_Enable,
rActSpeed := rMotorSpeed,
rSpeedLimit := 250.0, // 速度上限 (rpm)
tFilterTime := T#100ms // 滤波时间 (避免瞬时尖峰)
);

bSpeedOK := sfSLS.bInLimit;
bOverspeed := sfSLS.bError;

SF_SafeLimitedPosition — 安全限位 (SLP)

监控位置在安全范围内:

sfSLP(
bActivate := TRUE,
rActPosition := rAxisPos,
rLowLimit := -180.0, // 下限位 (度)
rHighLimit := 180.0 // 上限位 (度)
);

bInRange := sfSLP.bInLimit;
bLimitError := sfSLP.bError;

SF_SafeLimitedIncrement — 安全增量限制 (SLI)

限制单次运动的最大增量:

sfSLI(
bActivate := bJogMode,
rActPosition := rAxisPos,
rMaxIncrement := 10.0, // 最大单次移动距离 (度)
bAck := bAcknowledge // 确认后允许下次移动
);

SF_SafeDirection — 安全方向 (SDI)

限制只允许特定方向运动:

sfSDI(
bActivate := bSDI_Enable,
rActSpeed := rMotorSpeed,
eDirection := SAFE_DIR_POSITIVE // 仅允许正方向
);

bDirError := sfSDI.bError; // 反方向运动检测

SF_SafeBrakeControl — 安全制动控制 (SBC)

管理电机制动器的安全接合/释放:

sfSBC(
bActivate := bBrakeRequest,
bBrakeFeedback := bBrakeSensor, // 制动器状态反馈
tEngageTime := T#500ms, // 制动接合延时
tReleaseTime := T#300ms // 制动释放延时
);

bBrakeCmd := sfSBC.bBrakeOutput; // 制动器控制输出
bBrakeOK := sfSBC.bBrakeEngaged;

SF_SafeSpeedMonitor — 安全速度监控 (SSM)

持续监控速度,提供速度状态信息:

sfSSM(
bActivate := TRUE,
rActSpeed := rMotorSpeed,
rSpeedZero := 5.0, // 零速阈值
rSpeedLimit := 3000.0 // 额定速度上限
);

bAtZeroSpeed := sfSSM.bZeroSpeed;
bAtLimit := sfSSM.bAtLimit;

SF_SafeTorqueOff — 安全力矩关断 (STO)

切断电机力矩输出,最基本的安全功能:

sfSTO(
bActivate := bSTO_Request,
bFeedback := bDriveSTO_FB // 驱动器 STO 反馈
);

bTorqueOff := sfSTO.bSTO_Active;
bFeedbackOK := sfSTO.bFeedbackOK; // 反馈一致性

SF_SafetyDoorMonitor — 安全门监控

sfDoor(
bDoorClosed := bDoorSensor1,
bDoorLocked := bDoorSensor2,
bUnlockReq := bUnlockButton,
bMachineReady := NOT bMotorRunning
);

bDoorSafe := sfDoor.bSafe; // 门关闭且锁定
bCanUnlock := sfDoor.bUnlockOK; // 允许开门

SF_EmergencyStop — 急停

sfEStop(
bEStopButton := bEStop_NC, // 常闭触点 (断线检测)
bReset := bResetButton, // 复位按钮
bAutoReset := FALSE // 禁止自动复位 (需人工确认)
);

bEStopActive := sfEStop.bActive;
bSafeToRun := sfEStop.bReady; // 急停已复位, 可运行
急停规范

急停必须使用常闭 (NC) 触点。断线时等同于急停激活,符合 IEC 13850 失效安全原则。自动复位 (bAutoReset) 仅在特殊场景下允许使用。

安全集成示例

将多个安全功能块组合形成完整的安全链:

// 安全链: 急停 → STO → SS1 → SLS
bSafeToRun := sfEStop.bReady
AND sfDoor.bSafe
AND NOT sfSTO.bSTO_Active;

IF NOT bSafeToRun THEN
sfSS1(bActivate := TRUE, ...); // 触发安全停止
END_IF;

// 低速模式 (维护)
IF bMaintenanceMode THEN
sfSLS(bActivate := TRUE, rSpeedLimit := 50.0, ...);
END_IF;

SF_TwoHandControl — 双手控制

双手操作防止单手放入危险区域, 按照 ISO 13851 设计:

VAR
sf2Hand : SF_TwoHandControl;
END_VAR

sf2Hand(
bButton1 := bBtnLeft, // 左手按钮
bButton2 := bBtnRight, // 右手按钮
tSyncTime := T#500ms, // 同步时间窗 (两按钮必须 500ms 内同时按下)
bMachineReady := bSafetyOK // 机器安全条件
);

bReleaseMotion := sf2Hand.bEnable; // 允许运动输出
bError := sf2Hand.bError; // 使用错误 (只按一个 / 同步超时)

规则:

  • 两个按钮必须在 tSyncTime 窗口内同时按下 (防止单手+辅助工具绕过)
  • 任一按钮松开 → bEnable = FALSE, 运动立即停止
  • 重新启动必须两个按钮都松开后再同时按下

SF_SafetyGuard — 综合安全门

整合门关闭 + 锁定 + 解锁逻辑:

VAR
sfGuard : SF_SafetyGuard;
END_VAR

sfGuard(
bDoorClosed := bSensor_Closed, // 门关闭传感器
bLockEngaged := bSensor_Locked, // 锁闭合传感器
bUnlockRequest := bUnlockBtn, // 解锁请求
bSafeSpeed := rMotorSpeed < 5.0, // 低速才允许开门
bMachineStopped := NOT bMotorRunning, // 停机才允许开门
tDelayBeforeUnlock := T#3s // 解锁延时 (安全距离时间)
);

bReleaseMotion := sfGuard.bSafe; // 安全允许运行
bLockOutput := sfGuard.bLockCmd; // 锁控制输出
bUnlockAllowed := sfGuard.bUnlockOK;

SIL 等级与 PL 等级

标准等级失效概率 (PFH)适用
IEC 62061 SIL 1最低10^-6 ~ 10^-5 /h一般工业
IEC 62061 SIL 210^-7 ~ 10^-6 /h常见机械
IEC 62061 SIL 310^-8 ~ 10^-7 /h冶金/化工
ISO 13849 PL a最低低风险
ISO 13849 PL c常见
ISO 13849 PL d高风险 (Darra 标定)
ISO 13849 PL e最高极高风险

Darra PLC 安全功能块经第三方认证 SIL 2 / PL d:

  • 双通道冗余内部逻辑
  • 脉冲测试检测线路短路
  • 启用时自检
  • 时间戳防重放
系统级 SIL

软件 SIL 等级只是整体安全系统的一个环节。完整 SIL 需要:

  • 硬件: 安全继电器 / 安全 IO 模块 (SIL 2 / PL d)
  • 通讯: FSoE (Failsafe over EtherCAT) / PROFIsafe
  • 布线: 双回路 + 脉冲测试
  • 软件: 本功能块 (Darra 已认证)
  • 流程: 风险评估 + 验证测试 (客户责任)

只使用本功能块并不能保证整体 SIL 等级, 请咨询安全认证工程师。

安全功能块执行周期

安全功能块必须在快速周期中断中调用, 保证响应时间:

PROGRAM OB35   // 1ms 周期
VAR
sfEStop : SF_EmergencyStop;
sfSTO : SF_SafeTorqueOff;
sfSLS : SF_SafeLimitedSpeed;
END_VAR

// 每 1ms 执行所有安全功能块
sfEStop(bEStopButton := bEStop_NC, ...);
sfSTO(bActivate := NOT sfEStop.bReady OR bGuardOpen, ...);
sfSLS(bActivate := bLowSpeedMode, rActSpeed := rMotorSpeed, ...);

// 响应时间: 最大 2 × 1ms = 2ms (IEC 62061 规范)

END_PROGRAM
响应时间

从危险事件 (如按下急停) 到执行器动作 (切断力矩) 的总时间:

tResponse = tSensor + tBusDelay + 2 × tCycle + tActuator
  • tSensor: 传感器响应 ~1ms
  • tBusDelay: EtherCAT 传输 ~125μs
  • 2 × tCycle: 最坏情况 PLC 周期 (2 × 1ms = 2ms)
  • tActuator: 执行器动作 (如驱动器 STO ~5ms)

典型总响应时间: < 10ms, 满足 ISO 13850 Type 1 急停要求。

验证与测试

安全功能块必须在调试期充分验证:

  1. 功能测试: 按每个 FB 的真值表测试所有输入组合
  2. 时序测试: 用示波器测量从输入变化到输出响应的时间
  3. 断线测试: 模拟传感器断线, 确认按失效安全动作
  4. 短路测试: 模拟信号对电源 / 对地短路
  5. 复位测试: 确认复位按钮只有在安全条件成立后才能复位

排错表

问题原因解决
急停按下但 PLC 不响应OB35 执行周期过长确认 sfEStop 在 ≤ 1ms OB 中
bReset 没反应安全条件未全部恢复查 sfXxx.bFault 找出卡在哪里
STO 反馈不一致驱动器 STO 接线错用示波器对比命令/反馈
双手控制误报超时tSyncTime 太短加长到 500ms ~ 1s
安全门无法解锁低速条件未达成确认 rMotorSpeed < 5.0

最佳实践

  • 所有急停用常闭 (NC) 触点, 断线 = 触发急停
  • 安全功能块放 OB35 (1ms), 保证响应时间
  • 诊断属性上报 HMI: 每个 sfXxx.sDiagMsg 显示在操作界面
  • 定期自检: 每班次上电时触发一次安全自检 (按急停再复位)
  • 审计日志: 每次急停 / 报警 / 复位写入永久日志
  • 独立的安全 IO 模块: 不要与普通 IO 共用模块
  • 双通道冗余: 关键安全信号 (如急停) 用双通道并比较

安全生命周期管理

安全生命周期管理遵循 IEC 61508 全生命周期模型,从概念设计到退役各阶段均有明确的安全活动和交付物。Darra PLC 项目工作流与安全生命周期各阶段对应如下:

安全生命周期阶段概览

阶段活动输出Darra PLC 工具支持
1. 概念定义安全功能范围、危险识别安全需求规范项目模板模板
2. 整体风险评估识别危险事件、确定风险等级风险评估报告安全功能块清单辅助
3. SIL 目标分配为每个安全功能分配 SIL 等级SIL 分配表安全块 SIL 等级查表
4. 安全功能设计软硬件安全回路设计安全功能设计文档安全功能块实例化、配置
5. 安全功能实现编程、配置、集成安全程序、安全项目Darra IDE 安全块编译
6. 验证与确认功能测试、故障注入、时序测试验证报告 / 确认报告安全块诊断接口
7. 安装与调试现场安装、系统调试安装记录 / 调试报告在线监视面板
8. 运行与维护定期自检、事件记录、变更管理维护日志 / 变更记录审计日志、报警记录
9. 改造与退役安全功能修改、系统退役变更评估 / 退役报告项目版本控制

阶段 1 — 概念与危险识别

在项目初始阶段,工程师应识别所有与设备相关的危险源:

  • 机械危险 (夹伤、剪切、卷入)
  • 电气危险 (触电、电弧)
  • 热危险 (高温表面、灼伤)
  • 运动危险 (飞溅物、断裂)
  • 环境危险 (有毒气体、粉尘)

Darra PLC 项目模板提供危险源检查清单,作为概念阶段调查的起点。

阶段 2 — 风险评估

风险评估按 ISO 12100 方法执行:

风险 = 严重程度 × 暴露频率 × 避免可能性
参数取值说明
严重程度 SS1 (轻伤) / S2 (重伤) / S3 (死亡)后果分级
暴露频率 FF1 (偶尔) / F2 (频繁)人员暴露时间
避免可能性 PP1 (可能) / P2 (几乎不可能)逃生条件

风险等级判决:

  • S1 + F1 + P1 → 无需安全功能
  • S1 + F2 + P2 → PL c / SIL 1
  • S2 + F1 + P2 → PL d / SIL 2
  • S2 + F2 + P2 → PL d / SIL 2
  • S3 + 任意 → PL e / SIL 3 (需双通道冗余)

阶段 3 — SIL 目标分配

每个安全功能分配到目标 SIL 等级后,记录在 SIL 分配表:

安全功能: 急停关断 (E-Stop → STO)
目标 SIL: SIL 3
PL 等级: PL e
PFH: < 10^-8 /h
响应时间: < 10ms
冗余架构: 1oo2D (双通道带诊断)

阶段 4 — 安全功能设计

Darra PLC 安全块在项目中的设计流程:

  1. 在 Darra IDE 中创建安全项目
  2. 添加安全组织块 (安全 OB,固定 1ms 周期)
  3. 根据 SIL 分配表实例化安全功能块
  4. 配置参数 (限值、延时、窗口)
  5. 连接安全 IO 信号 (双通道冗余)
  6. 配置诊断和报警输出

阶段 5 — 实现与编程

安全功能块在 Darra IDE 中通过 SCL 或 LAD 完成实例化和接线,编译后生成安全字节码。安全字节码加载到独立的 安全 VM 实例 中执行,与普通 PLC 逻辑物理隔离:

// 安全项目: SIL 3 急停链
PROGRAM SafetyOB // 固定 1ms 周期,独立于普通 OB
VAR
sfEStop : SF_EmergencyStop;
sfSTO : SF_SafeTorqueOff;
sfDoor : SF_SafetyDoorMonitor;
sfSS1 : SF_SafeStop1;
END_VAR

// 安全链: 急停 + 安全门 + STO
sfEStop(bEStopButton := bEStop_NC_A AND bEStop_NC_B, // 双通道急停
bReset := bResetButton,
bAutoReset := FALSE);

sfDoor(bDoorClosed := bDoorSensor_A AND bDoorSensor_B, // 双通道门传感器
bDoorLocked := bDoorLock_A AND bDoorLock_B, // 双通道锁
bMachineReady := NOT bMotorRunning);

sfSTO(bActivate := NOT sfEStop.bReady OR NOT sfDoor.bSafe,
bFeedback := bDriveSTO_FB_A AND bDriveSTO_FB_B); // 双通道 STO 反馈

sfSS1(bActivate := NOT sfEStop.bReady, rActSpeed := rMotorSpeed, ...);
END_PROGRAM

阶段 6 — 验证与确认

验证阶段确认安全功能实现符合设计规范,确认阶段确认整体系统达到目标 SIL 等级。详见下文"安全验证要求"。

阶段 7 — 安装与调试

现场调试阶段必须:

  • 逐项执行安全功能测试 (按验证计划)
  • 用示波器记录响应时间
  • 做故障注入测试 (断线、短路、信号失效)
  • 记录所有测试结果并存档
  • 确认所有安全功能块 bError 输出在正常工况下为 FALSE

阶段 8 — 运行与维护

运行阶段,Darra PLC 提供:

  • 每班次上电自检 (触发急停 → 复位,验证回路完整)
  • 安全事件审计日志 (时间戳、事件类型、操作员)
  • 安全功能块诊断属性 (sfXxx.sDiagMsg) 实时显示状态
  • 定期功能测试提醒 (按 SIL 等级决定测试间隔)

维护阶段变更管理:

变更请求 → 影响分析 → SIL 等级重新评估 → 设计变更 → 再验证 → 再确认 → 归档

阶段 9 — 改造与退役

安全功能改造或系统退役时:

  • 执行变更影响分析,确认是否影响其它安全功能
  • 改造后必须重新验证所有受影响的安全功能
  • 退役时记录最终安全状态,永久归档安全文档

安全验证要求

安全验证是 SIL 2 / SIL 3 认证的核心环节。Darra PLC 安全功能块项目必须完成以下验证活动并形成文档。

验证文档体系

文档内容SIL 2SIL 3
验证计划 (Validation Plan)验证范围、方法、环境、通过标准必需必需
功能测试规范 (Test Specification)每个安全功能的测试用例、输入输出真值表必需必需
功能测试报告 (Test Report)测试执行结果、偏差、回归必需必需
故障注入报告 (Fault Injection Report)注入故障类型、安全响应、覆盖情况推荐必需
环境测试报告 (Environmental Test Report)温度、湿度、振动、EMC 测试结果推荐必需
EMC 测试报告IEC 61000-6-2 / 6-4 抗扰度与发射测试推荐必需
时序测试报告 (Timing Test Report)安全响应时间实测、最坏情况分析必需必需

功能测试规范

每个安全功能块必须覆盖以下测试用例:

测试类型内容示例 (sfEStop)
正常功能输入正常 → 输出符合预期急停未按 → bReady = TRUE
触发条件输入触发 → 安全响应急停按下 → bActive = TRUE
恢复条件输入恢复 → 系统复位急停复位 → bReady = TRUE
边界条件参数边界值测试tStopTime 等于/小于最小值
通道差异双通道不一致bEStop_NC_A = FALSE, bEStop_NC_B = TRUE → bError
故障注入传感器断线/短路bEStop_NC 断线 → bActive = TRUE
时序验证响应时间测量急停按下 → STO 动作 < 10ms

故障注入测试 (SIL 3 强制)

故障类型注入方法验证目标
传感器断线断开传感器接线安全功能按失效安全动作
传感器对地短路将信号线对地短接安全功能不误输出
传感器对电源短路将信号线对 24V 短接检测到故障并进入安全态
输出通道短路短接输出通道双通道比较检测差异
通讯中断断开 EtherCAT 线缆通讯故障检测 → 安全态
电源故障模拟电源掉电上电后安全状态可恢复
CPU 故障软件看门狗触发安全 VM 独立看门狗 → 安全态

环境与 EMC 测试

测试标准条件接受标准
工作温度IEC 60068-2-1/2-25°C ~ +60°C功能正常
储存温度IEC 60068-2-1/2-40°C ~ +85°C恢复后功能正常
湿热IEC 60068-2-7895% RH, 55°C, 48h功能正常
振动IEC 60068-2-65~150Hz, 2g, 每轴 10 循环无接触不良
冲击IEC 60068-2-2715g, 11ms, 半正弦无功能中断
ESD 抗扰度IEC 61000-4-2±6kV 接触 / ±8kV 空气性能判据 A
辐射抗扰度IEC 61000-4-380~1000MHz, 10V/m性能判据 A
快速瞬变IEC 61000-4-4±2kV, 5/50ns性能判据 A
浪涌IEC 61000-4-5±1kV 线-线 / ±2kV 线-地性能判据 A

验证完成标准

条件SIL 2SIL 3
功能测试覆盖率≥ 95%100%
故障注入覆盖率≥ 80%≥ 99%
时序测试 PASS所有安全功能所有安全功能
环境测试 PASS所有适用项所有适用项
EMC 测试 PASS所有适用项所有适用项
偏差项允许,需风险评估零偏差

SIL 3 认证路径

SIL 3 认证是安全产品最高等级的独立第三方认证。Darra PLC 安全功能块已内置 SIL 3 能力,集成到项目后需通过以下路径完成系统级认证。

认证路径总览

┌─────────────────────────────────────────────────────┐
│ 步骤 1: 功能安全管理体系建立 (FSM) │
│ - 安全文化、安全策略、安全计划 │
│ - 人员能力管理、安全审计机制 │
├─────────────────────────────────────────────────────┤
│ 步骤 2: 风险评估与 SIL 分配 │
│ - 危险识别、SIL 目标分配表 │
│ - 确定安全功能清单 │
├─────────────────────────────────────────────────────┤
│ 步骤 3: 安全功能设计 (Darra PLC 安全块) │
│ - 软硬件架构设计、冗余策略 │
│ - 诊断覆盖率计算、SFF 计算 │
├─────────────────────────────────────────────────────┤
│ 步骤 4: 自验证 (制造商) │
│ - 功能测试、故障注入、时序验证 │
│ - 环境/EMC 测试、可靠性分析 │
├─────────────────────────────────────────────────────┤
│ 步骤 5: 第三方评估 (TUV Nord / TUV Rheinland) │
│ - 文档审核、设计评审、现场见证测试 │
│ - 功能安全审计 │
├─────────────────────────────────────────────────────┤
│ 步骤 6: 认证颁发 │
│ - SIL 3 证书、报告、安全手册 │
│ - 认证标识、制造监控 │
├─────────────────────────────────────────────────────┤
│ 步骤 7: 持续合规 │
│ - 变更管理、版本管理、定期监督审核 │
│ - 现场经验反馈、安全通告 │
└─────────────────────────────────────────────────────┘

步骤 1: 功能安全管理体系 (FSM)

认证机构 (TUV Nord / TUV Rheinland) 要求制造商建立符合 IEC 61508-1 的功能安全管理体系:

要素要求文件
安全策略管理层承诺、安全目标安全策略声明
安全计划项目安全活动、时间表、资源分配安全计划文档
人员能力安全工程师资质、培训记录能力矩阵、培训记录
安全审计独立安全审计、年度复审审计报告
供应商管理安全相关组件的供应商评估供应商评估报告
变更管理安全相关变更的评审、再验证变更管理流程

步骤 2: 风险评估与 SIL 分配

已完成 — 参照上文"安全生命周期管理"阶段 2-3。

步骤 3: 安全功能设计

使用 Darra PLC 安全功能块的 SIL 3 设计约束:

约束SIL 3 要求Darra 安全块满足
硬件容错 (HFT)≥ 11oo2 / 1oo2D 架构
诊断覆盖率 (DC)> 99%双通道比较 + 脉冲测试
安全失效分数 (SFF)> 99%通过 DC 和架构保障
系统能力 (SC)SC 3结构化开发、文档完整
软件工具等级 (TCL)TCL 3Darra IDE 安全块认证
避免系统性失效结构化方法、检视、测试编码规范、代码审查、测试

步骤 4: 自验证

自验证活动及文档要求见上文"安全验证要求"。

步骤 5: 第三方评估

TUV 认证机构评估内容:

评估项评估方法接受标准
安全计划文档审核完整覆盖 IEC 61508-1 要求
安全需求规范文档审核 + 检查可追溯至风险评估
架构设计文档审核 + 设计评审HFT ≥ 1, DC > 99%, SFF > 99%
软件实现结构分析 + 代码审查编码规范符合、无未覆盖路径
验证报告文档审核测试覆盖率 ≥ 99% 所有功能
故障注入现场见证测试所有故障条件下安全响应正确
环境/EMC 测试实验室报告审核所有测试 PASS
可靠性预估文档审核PFH < 10^-8 /h
制造与测试现场审核生产流程符合安全要求

Proven-in-Use 论据

对于超过 2 年现场运行记录的安全功能,可使用 Proven-in-Use (PIU) 论据来减少额外测试:

  • PIU 要求: 累计运行小时 > 10^6 小时,无安全相关失效
  • 现场数据收集: 客服记录、维修记录、现场失效报告
  • 统计置信度: 70% 置信度下限,PFH 上限 < 10^-8 /h
  • PIU 可减少部分故障注入测试,但不能替代架构评估

认证后维护

  • 年审: 每年 TUV 的监督审核 (文档 + 现场)
  • 重大变更: 安全块修改须重新认证
  • 批次变更: 元器件变更须通知认证机构
  • 现场经验反馈: 收集并分析安全相关失效,定期向认证机构汇报

诊断覆盖率计算

诊断覆盖率 (Diagnostic Coverage, DC) 是安全功能能够检测到的危险失效比例,是 SIL 等级计算的核心参数。

基本公式

DC = λ_detected / λ_total = 1 - λ_undetected / λ_total

其中:

  • λ_detected: 可检测到的危险失效率 (1/h)
  • λ_total: 总危险失效率 (1/h)
  • λ_undetected: 未检测到的危险失效率 (1/h)

各诊断方法典型 DC 值

诊断方法描述典型 DC适用场景
比较 (Comparison)双通道比较99.0%急停、安全门双通道输入
回读 (Readback)输出状态回读比较99.0%STO、制动控制输出
脉冲测试 (Pulse Test)周期性脉冲检测短路99.9%安全 IO 模块
超时监控 (Timeout)信号在规定时间内未变化90.0%通讯中断、看门狗
合理性检查 (Plausibility)信号值在合理范围内60.0%速度、位置传感器
动态测试 (Dynamic Test)主动改变输入验证响应99.9%安全功能自检
冗余编码 (Coded Signal)多比特编码信号99.9%编码器、传感器
交叉监测 (Cross-monitoring)双 CPU 比较结果99.0%安全 VM 双实例

单个安全功能 DC 计算

SF_EmergencyStop 为例:

诊断方法贡献覆盖率说明
双通道比较 (A vs B)通道间差异检测99.0%两通道状态不一致时触发
断线检测 (常闭)断线=急停激活99.0%失效安全设计
脉冲测试输出回路短路检测99.9%周期性输出脉冲
看门狗执行周期超时检测90.0%安全 OB 周期监控
自检 (上电)上电时全功能测试99.0%上电自检
DC_aggregate = 1 - [(1-0.99) × (1-0.99) × (1-0.999) × (1-0.90) × (1-0.99)]
= 1 - [0.01 × 0.01 × 0.001 × 0.10 × 0.01]
= 1 - 1.0 × 10^-10
≈ 99.99999999%

安全相关 DC 参考

IEC 61508-2 Annex A 诊断方法DC说明
存储器的 DC 监测 (RAM)99.0%奇偶校验、ECC
程序存储器的 DC 监测 (Flash)99.9%CRC 校验
逻辑单元的 DC 监测99.0%双 CPU 比较
数据总线的 DC 监测99.0%回读、编码
外部 IO 的 DC 监测99.0%愉快测试、脉冲测试
电源的 DC 监测90.0%电压监控
通讯的 DC 监测99.0%CRC、超时、序列号
执行器的 DC 监测99.0%回读、比较

系统级 DC 计算

对于多通道安全系统,系统级 DC 必须考虑所有通道的诊断:

DC_system = 1 - Π (1 - DC_i)

其中 DC_i 是第 i 个诊断方法的覆盖率。

SIL 3 要求: DC_system > 99%

安全失效分数 (SFF)

SFF 是安全失效占总失效的比例:

SFF = (λ_safe + λ_detected) / (λ_safe + λ_total)

其中:

  • λ_safe: 安全失效率 (导致安全状态的失效)
  • λ_detected: 可检测到的危险失效率
  • λ_total: 总危险失效率

SIL 3 要求: SFF > 99% (HFT = 1 时)

简化计算示例

组件λ_safeλ_detectedλ_undetectedDC
双通道急停输入10 FIT99 FIT1 FIT99.0%
安全 VM 逻辑5 FIT49 FIT1 FIT98.0%
双通道 STO 输出10 FIT99 FIT1 FIT99.0%
诊断 (自检+脉冲)5 FIT99 FIT1 FIT99.0%
通讯2 FIT9 FIT1 FIT90.0%
SFF = (10+5+10+5+2 + 99+49+99+99+9) / (10+5+10+5+2 + 99+49+99+99+9 + 1+1+1+1+1)
= 397 / 402
= 98.76%

SFF 98.76% 未达到 SIL 3 要求 (>99%),需增加诊断 (如额外脉冲测试或动态测试) 将 λ_undetected 降低到 1 FIT 以下。

安全响应时间

安全响应时间是从危险事件发生到安全功能执行器完成动作的总时间,是 SIL 2 / SIL 3 合规的关键参数。

响应时间分解

t_response = t_sensor + t_input + t_bus_cycle + t_safety_logic + t_output + t_actuator
阶段符号说明典型值最坏情况
传感器延迟t_sensor传感器从事件到输出信号变化1~5ms10ms
输入处理t_input安全 IO 模块滤波、诊断1~2ms5ms
总线周期t_bus_cycleEtherCAT 传输延迟125μs250μs
安全逻辑执行t_safety_logic安全 OB 周期 + 输出更新2ms4ms
输出处理t_output安全 IO 模块输出切换1~2ms5ms
执行器延迟t_actuator驱动器/制动器机械动作5~20ms50ms

典型场景响应时间

场景传感器输入总线安全逻辑输出执行器总计合规
急停 → STO (EtherCAT)2ms1ms125μs2ms1ms5ms~11msSIL 3
安全门 → 停止 (EtherCAT)3ms2ms125μs2ms1ms10ms~18msSIL 2
超速 → SLS 制动 (EtherCAT)1ms1ms125μs1ms1ms15ms~19msSIL 2
双手控制 → 运动释放1ms1ms125μs2ms1ms5ms~10msSIL 3

最坏情况响应时间计算

t_response_worst = t_sensor_max + t_input_max + t_bus_cycle_max + 2 × t_safety_cycle + t_output_max + t_actuator_max

Darra PLC 安全块约束:

  • 安全 OB 周期: 固定 1ms (不可更改)
  • 安全 OB 最坏情况: 2 个周期 = 2ms (输出在周期结束时更新)
  • 总线周期: EtherCAT 125μs 典型,250μs 最坏

以急停 → STO 为例:

t_response_worst = 5ms + 2ms + 250μs + 2ms + 2ms + 20ms = 31.25ms

这个值满足 ISO 13850 急停 < 100ms 要求,也满足 SIL 3 大部分应用场景。

SIL 等级响应时间要求

标准要求典型场景允许最大响应时间
ISO 13850急停所有设备< 100ms
IEC 61800-5-2SS1 / STO驱动安全停止< 50ms (典型)
ISO 13851双手控制手动操作设备< 20ms
ISO 13856安全压敏压敏边缘/垫< 25ms
IEC 62061一般取决于风险评估由 S 和 F 确定

如何优化安全响应时间

方法效果代价
缩短安全 OB 周期 (1ms → 500μs)减少 1msCPU 负载增加 (需评估)
使用更快传感器 (1ms → 200μs)减少 0.8ms成本增加
直接 IO 接入 (非 EtherCAT 远程)减少 125μs布线成本
输出预充电 (制动器预励磁)减少 5~15ms能耗增加
双通道直接接驱动器 STO减少 5~10ms接线复杂度

关于 SIL 2 / SIL 3 响应时间合规

SIL 2 合规条件:

  • 响应时间 ≤ 风险评估确定的最大允许时间
  • 最坏情况分析覆盖所有安全功能
  • 至少 10% 安全余量 (实测值 ≤ 90% 允许值)

SIL 3 附加条件:

  • 安全 OB 周期固定 ≤ 1ms
  • 双通道独立响应时间测量
  • 每个通道单独满足响应时间要求
  • 诊断延迟不增加响应时间 (诊断在安全 OB 内完成)
  • 文档中包含完整的响应时间分析和实测证据

响应时间验证方法

现场验证响应时间的推荐方法:

  1. 示波器法: 用示波器同时测量安全输入信号和输出信号
  2. 逻辑分析仪法: 采集安全 IO 模块的输入/输出时间戳
  3. Darra 诊断接口: 通过 sfXxx.sResponseTime 属性读取块内测量值
  4. 系统总线监控: EtherCAT 从站分布时钟记录时间戳
// 响应时间在线监控
PROGRAM SafetyOB

// 使用 Darra 安全块诊断接口
rEStopResponse := sfEStop.sResponseTime; // 实测急停响应时间 (ms)
rSTOResponse := sfSTO.sResponseTime; // 实测 STO 响应时间 (ms)

// 超限报警
IF rEStopResponse > 30.0 THEN
// 急停响应时间超限,需要维护
bResponseTimeFault := TRUE;
END_IF;

END_PROGRAM

相关文档