如果刚接触西门子故障安全系统,很容易把‘F-CPU、F-I/O、PROFIsafe、STEP 7 Safety、安全程序’看成几个彼此独立的概念。实际上,它们共同组成一条完整的安全链路:现场的安全信号由 F-I/O 获取,经 PROFIsafe 与 F-CPU 交换,F-CPU 在 Safety 程序中完成安全逻辑判断,再通过 F-I/O 或安全通信让设备进入规定的安全状态。
本文是‘西门子 SIMATIC Safety’系列的第一篇。这一篇先不深入急停、安全门、1oo2 或 ACK_REI,而是把整个系统的骨架讲清楚。后续再分别进入安全模块参数和安全程序。
一、SIMATIC Safety 到底是什么
SIMATIC Safety 可以理解为西门子基于 SIMATIC 自动化平台构建的一套故障安全系统。它不是单独的一块‘安全模块’,而是由故障安全 CPU、故障安全 I/O、安全通信协议、Safety 工程软件以及安全程序共同组成。西门子在 SIMATIC Safety V21 文档中明确列出了 F-CPU、F-I/O 和 STEP 7 Safety 等软硬件组件,并允许标准 I/O 与故障安全 I/O 在同一自动化系统中共存。

对工程师来说,可以把它先拆成四层:F-CPU 负责安全运算,F-I/O 负责安全信号的采集和输出,PROFIsafe 负责安全数据的通信保护,STEP 7 Safety 负责在 TIA Portal 中完成组态、编程、比较和验收辅助。
二、F-CPU:安全系统的大脑,但并不意味着所有程序都是安全程序
F-CPU 中的‘F’来自 Fail-safe。典型产品包括 S7-1200F/FC、S7-1500F,以及部分 SIMATIC Drive Controller 和安全控制器。F-CPU 仍然可以运行普通的标准用户程序,同时另外运行经过 Safety 机制处理的安全程序。
这点非常重要:使用 F-CPU 并不等于整个 PLC 项目自动变成安全程序。普通逻辑仍属于 Standard Program;急停、安全门、接触器反馈等需要承担安全功能的逻辑,应在安全程序及其允许的数据接口范围内实现。
西门子 V21 文档指出,如果要让 F-I/O 以安全模式工作,或者进行安全相关通信,需要启用 F-CPU 的 F-capability。启用后,TIA Portal 可以自动生成默认的安全运行组和相关系统块。
三、F-I/O:不是‘质量更好的普通 DI/DQ’,而是安全链路的一部分
F-I/O 是 Fail-safe I/O,也就是故障安全输入/输出。常见的 ET 200SP F-DI、F-DQ,以及 ET 200MP、ET 200eco PN 等安全模块,都属于这一层。
F-DI 通常用于接入急停按钮、安全门开关、光幕等安全传感器;F-DQ 则用于控制接触器、安全阀,或与驱动安全功能形成执行链。它们的价值不仅是‘读一个 0/1’或‘输出一个 0/1’,而是还承担通道诊断、短路/断线检测、差异监控、测试脉冲以及故障后的安全反应等功能。
在西门子 Safety 的基本安全概念中,故障安全输入/输出在需要钝化时会使用故障安全值代替过程值;对于 F-I/O,安全状态通常对应值 0。例如 F-System 启动、PROFIsafe 通信错误、模块故障或通道故障时,都可能触发这种处理。
四、PROFIsafe:它不是另一根网线,而是安全通信协议
PROFINET 和 PROFIsafe 经常被混在一起理解。可以简单区分:PROFINET/PROFIBUS 提供基础通信通道,而 PROFIsafe 在这个通信基础上增加安全相关的数据保护与监控机制。因此,安全系统通常不需要再单独铺设一套‘安全以太网’。
F-CPU 与分布式 F-I/O 之间更新安全过程数据时,会使用符合 PROFIsafe 的安全协议。除了普通通信是否连通之外,系统还会关注 PROFIsafe 地址以及 F-monitoring time 等安全参数。
例如 PROFIsafe 地址类型 2 中,F-source address 与 F-destination address 的组合用于保证地址唯一性;F-source address 需要在网络范围内唯一,而 F-destination address 需要在 CPU 范围内唯一。地址配置错误并不是普通‘IP 地址问题’,它会直接影响安全通信的有效性。
五、Safety 程序是怎样运行的:F-runtime group → F-OB → Main Safety
到了软件层,西门子的安全程序并不是简单地在 OB1 中再写几段黄色网络。对于 S7-1200/1500 F-CPU,Safety 程序按 F-runtime group(F 运行组)组织,一个项目可以有一个或两个 F-runtime group。

一个典型 F-runtime group 中会包含 F-OB、Main Safety、用户创建的 F-FB/F-FC、F-DB、F-I/O DB,以及 Safety 系统自动生成的 F-system blocks。S7-1200/1500 中由 F-OB 周期性调用 Main Safety,再由 Main Safety 组织后续安全功能。
西门子对默认 F-runtime group 推荐使用 Cyclic interrupt(循环中断)事件类别,使安全程序以固定时间间隔执行。固定的执行周期非常重要,因为安全功能不仅关心‘逻辑结果对不对’,还关心从输入变化到安全输出动作需要多长时间。

六、用一个急停回路把整条链路串起来
假设设备上有一个双通道急停按钮。两个触点先接入 ET 200SP F-DI。F-DI 对输入通道进行安全诊断,并把安全过程数据通过 PROFIsafe 送给 F-CPU。F-CPU 的 Safety 程序在 F-runtime group 中执行急停逻辑;当条件不满足时,安全程序撤销安全输出。随后 F-DQ 切断接触器,或者 F-CPU 通过安全通信触发驱动的 STO/SS1 等安全功能。
因此,一条安全功能真正工作时,并不是单靠某一个模块,而是传感器 → F-I/O → PROFIsafe → F-CPU Safety Program → F-I/O/安全驱动 → 执行机构共同完成。
七、故障发生后为什么系统会‘钝化’
安全系统和普通 PLC 最大的思维差异之一,是不能在数据不可信时继续‘猜测’设备状态。如果 F-CPU 与 F-I/O 的安全通信发生错误,或者 F-I/O 检测到断线、短路、差异错误等故障,系统会用规定的故障安全值替代真实过程值,这就是后续经常会遇到的 passivation(钝化)。
这也是为什么后面学习 F-I/O DB 时会看到 PASS_ON、ACK_REQ、ACK_REI、QBAD 等变量:它们不是额外的‘辅助功能’,而是 Safety 系统对故障、安全状态以及重新集成过程进行管理的接口。
八、刚开始学 Safety 最容易混淆的几个概念
F-CPU ≠ 所有 PLC 程序都是安全程序。标准程序和 Safety 程序可以同时存在,Safety 部分有独立的规则、编译和验收机制。
普通 DI/DQ ≠ F-DI/F-DQ。普通模块可以参与标准控制,但不能因为‘我在程序里做了两次判断’就自动获得故障安全模块的诊断能力和安全完整性。
PROFINET 正常 ≠ PROFIsafe 一定正常。即使普通通信和 Ping 都正常,PROFIsafe 地址、监控时间或 F-I/O 状态仍可能导致安全通信故障。
Safety 程序编译通过 ≠ 安全功能已经完成。安全相关项目还需要对硬件组态、安全程序、通信参数以及在线/离线一致性进行检查和验收。西门子提供 Collective F-Signature 和 Safety Summary 等工具辅助确认安全相关项目数据。
九、这一篇先记住这张‘关系图’
如果只记住一件事,可以记住下面这条关系:
F-CPU = 做安全决策;F-I/O = 安全地获取和输出现场信号;PROFIsafe = 安全地传递这些数据;STEP 7 Safety = 组态、编程与验证它们;F-runtime group = Safety 程序的执行框架。
后面再学习 1oo2、差异时间、F-DI、F-DQ、F-I/O DB、ESTOP1、SFDOOR 或 ACK_REI 时,就可以把每一个概念放回这条链路中理解,而不是把它们当成孤立参数去记。
资料来源
本文主要依据 Siemens 官方资料整理:
1. SIMATIC Safety – Configuring and Programming V21:Hardware and Software Components
2. SIMATIC Safety V21:Program structure of the safety program (S7-1200, S7-1500)
3. SIMATIC Safety V21:PROFIsafe addresses for F-I/O
4. SIMATIC S7-1200/1500 安全编程指南 07/2024(文档编号 109750255)
说明:本文用于理解 SIMATIC Safety 的系统结构和工程概念,不替代设备风险评估、安全功能设计、PL/SIL 计算以及最终安全验收。实际项目应结合具体 F-CPU、F-I/O 和设备手册进行设计与验证。