安全门关上了,两路输入都是 1,SFDOOR.Q 却没有恢复。问题未必在门的位置:这个块还要辨认开关门过程、输入有效性和确认条件。反过来,某些启动配置下,即使要求人工确认,Q 也可能在没有新确认沿时恢复。读懂 SFDOOR,需要把这两种看似相反的现象放到各自的条件中。 [1]

这是「SIMATIC Safety 工程笔记」的安全门应用篇,面向已经理解 F-I/O 和基本安全程序调用的读者。本文用同一扇门、两只位置开关和一个 SFDOOR 实例,说明门状态怎样进入程序、为何允许或阻止恢复,以及出现异常时先查哪一层。

资料基线为 Siemens《STEP 7 Safety V21 Instructions》及《SIMATIC Safety – Configuring and Programming》V21(11/2025)。两张图均取自 V21 的 SFDOOR 章节,其中程序图明确适用于 S7-1200/1500;它不是某一套指定 CPU、固件和 I/O 型号的现场工程。本文为官方资料解读,状态表和排查顺序是整理建议,未进行仿真或实机复现。 [1]

安全边界:SFDOOR 的允许信号不等于机械已经停止、门已锁定或危险区域内无人。这里不设计完整防护装置,也不给出可直接投运的接线。改线、下载、开门测试及恢复输出前,应由具备相应能力和权限的人员完成风险评估、备份和维护安排;不能为了测试这个块而解除现有防护。 [5] [8]

一、先看门的位置怎样变成两个输入

官方互连采用两只位置开关:开关 1 使用常闭触点,在门打开时受到强制操作;开关 2 使用常开触点,在门关闭时受到操作。“常开、常闭”描述触点的原始形式,“开门、关门”描述机构的位置,两者不能直接画等号。 [1]

看图 1 时,分别沿上半部的开门状态和下半部的关门状态追踪机械动作。开门时,第一只开关的常闭触点被打开,第二只开关的常开触点未动作;关门时,前者释放后闭合,后者受操作后闭合。因此,这个安装示例在完全开门和关门时,向程序提供的逻辑分别是两路为 0、两路为 1。 [1]

SFDOOR 官方互连图:开门和关门时,两只位置开关的触点形式与机械触发位置
图 1:一常闭、一常开不代表送入 SFDOOR 的两路信号必然相反;还要结合机械触发位置(图片来源:Siemens《STEP 7 Safety V21 Instructions》,11/2025,SFDOOR / Interconnection example,资料 [1])。

这张图能解释逻辑关系,但没有替某一块 ET 200SP 模块指定完整端子分配、测试参数和现场电缆。选用其他位置开关、电子式传感器或不同接法时,应重新对照装置和模块资料,不能只把图里的触点换一个名字,就认为原有条件全部保留。

阅读已有工程时,建议先做一份“机械位置—实际输入—程序符号”对应记录。门完全打开、只移动一部分和完全关闭,分别会让哪一路变化?这些变化最终进入哪个 SFDOOR 实例?在这层关系没有确认之前,反转某个输入或调换通道,可能只是让画面与预想一致,却没有解释真实接线。

同样,看到两个信号不等于应把模块一律设成某一种 1oo2 模式。输入评估由具体传感器和安全功能决定;本篇的调用图也没有给出通用评估参数。尤其不能把同一个已评估结果复制到 IN1、IN2,然后把两个相同变量当成两只独立位置开关的证据。

二、沿官方调用,把位置、质量和确认分别接起来

图 2 不是空白引脚图,而是 Siemens 给出的 S7-1200/1500 实际连接示例。先找实例 SFDOOR_DB,再看两路位置输入、两路带反相触点的值状态,以及分别接出的 Q 和 ACK_REQ。图中的符号是示例名称,不是必须照用的现场地址。 [1]

S7-1200/1500 的 SFDOOR_DB 官方调用:两路位置输入、反相值状态、两个 true 参数以及确认和输出
图 2:位置值与对应通道的值状态沿两条不同路径进入同一实例;本图 OPEN_NEC、ACK_NEC 都为 true(图片来源:Siemens《STEP 7 Safety V21 Instructions》,11/2025,SFDOOR / Example for S7-1200/1500 F-CPUs,资料 [1])。

按图中真实连线,可将调用读成下面几组关系。表内的“反相”用于说明梯形图触点,不是一份另写的、可以直接下载的程序。 [1]

接口 官方图中的来源或去向 阅读重点
IN1 / IN2 TagIn_1 / TagIn_2 分别追到实际门输入,不仅检查变量名。
QBAD_IN1 / QBAD_IN2 #TagIn_1_VS / #TagIn_2_VS 经反相触点 质量方向与值状态相反;必须对应同一路输入。
OPEN_NEC / ACK_NEC 两者均为 true 本图采用启动开门要求和人工确认,不代表所有项目默认值。
ACK TagIn_ACK 确认事件进入当前实例。
Q / ACK_REQ TagOut_1 / TagOut_2 前者是允许,后者是请求确认;不能交换用途。
DIAG 未连接 官方图未显示诊断变量,不代表指令没有诊断。

Value Status(值状态)为 1,表示对应通道提供有效过程值;为 0,表示提供故障安全值。QBAD_IN 的含义方向相反,所以官方示例使用反相:VS = 1 → QBAD_IN = 0,VS = 0 → QBAD_IN = 1。这里反相的是质量信息,不是把门的位置输入反相。 [2]

这项区别可以用一个正常开门状态检查:位置输入为 0,但它可以仍是有效过程值,因此值状态仍可为 1。若把位置位直接拿来充当质量位,程序就无法区分“门确实打开”和“数据被替代”;若把健康时为 1 的值状态不经反相接入 QBAD_IN,则质量含义又倒了过来。以上是对信号语义的推导,不是现场测试结论。 [1] [2]

质量位的位置应查实际模块的地址空间说明,不能凭图中的后缀 _VS 猜一个偏移。S7-1200/1500 的通道值和值状态还必须在同一个 F 运行组内访问;相关 F-I/O DB 的访问也应与该组对应。复制这段调用时,应把模块、通道、质量来源、运行组作为一组关系复核。 [2] [6]

每个 SFDOOR 调用需要相应的实例数据,可采用单实例或多重实例。EN/ENO 不允许接线;不要在 EN 前串“暂时不检查门”的条件。实例是否真的执行,还要从主安全块及运行组的调用路径确认,而不是认为图中有一个块就会自行运行。 [1]

三、正常恢复看的是开关门过程,不只是最终电平

先限定本节条件:F-I/O 输入有效,采用人工确认,讨论已经进入正常门监控后的动作;启动例外和钝化恢复分别留到后面。IN1 或 IN2 任一路为 0 时,SFDOOR 撤销 Q。恢复则需要识别完整打开的两路 0,随后识别关闭的两路 1,再完成相应确认。 [1]

这里有一个容易忽略的先后关系:开门使允许撤销,不必等两路都变为 0;但随后恢复允许,需要满足规定的完整开关过程。所以“刚挪动一点门就停止”和“门关回去仍不能确认”,可能同时符合这套规则。

过程阶段 输入及事件 本节条件下的预期
已允许,开始开门 任一路首先变为 0 Q 撤销,不能等待另一只开关也变化才处理。
门完整打开 识别到 IN1 = 0 且 IN2 = 0 满足本次完整打开状态;Q 仍为 0。
门重新关闭 随后两路均为 1,尚无有效确认沿 Q 仍为 0,完整过程满足后等待确认。
在允许条件下确认 ACK 从 0 变为 1,被当前调用识别 Q 恢复允许,ACK_REQ 清除;这不是机器启动请求。

用一个逻辑对照说明区别:从已允许状态出发,只出现 (1,1) → (0,1) → (1,1),不能证明两路曾到达完整打开状态;而 (1,1) → (0,1) → (0,0) → (1,0) → (1,1) 才包含本节要求的完整开关过程。括号按 IN1、IN2 排列,只是依据规则整理的状态示例,不要求两只开关严格按这个先后动作,也不表示毫秒级波形。 [1]

这一对照并不是建议操作人员反复拉门来“碰出”允许。如果机械上已经完整打开,而程序从未识别两路 0,应先核对两只开关的安装、接线、输入质量和观察记录。继续改确认策略,并不能说明缺失的状态去了哪里。

ACK_REQ 是当前实例请求确认的状态,ACK 的上升沿才是确认事件。需要人工确认时,按钮早已按过、线路持续保持为 1,或上升沿发生在条件尚未满足时,都不能简单记成“已经确认”。建议同时记录 IN1、IN2、质量输入、ACK_REQ 和 ACK 的先后,而不是只保存最终全部为高的画面。 [1]

确认按钮释放也不等于撤销已经接受的确认。把确认按钮当成必须一直按住的运行按钮,会混淆其职责。后续设备是否动作,要另看允许信号的去向和启动逻辑;不应把 ACK_REQ 自动反馈到 ACK,替代原设计要求的人工判断。 [1] [5]

四、OPEN_NEC 的启动规则,要连同输入初始状态一起看

F 系统启动时,SFDOOR 的 Q 先被复位。OPEN_NEC 决定启动时是否要求先开门,ACK_NEC 决定相应恢复过程是否要求人工确认,但两者并非在所有启动分支中简单叠加。 [1]

关键例外:采用 OPEN_NEC = 0,且关联 F-I/O 重新集成后进入手册所述的两路首次都为 1 的启动分支时,SFDOOR 可以自动确认,不受 ACK_NEC 的设置限制。不能只看到 ACK_NEC = 1,就断言启动时必然等待确认按钮。 [1]

还要保留原文紧接着的另一项条件:如果重新集成后至少一路仍为 0,或者 OPEN_NEC = 1,则按完整打开、关闭以及 ACK_NEC 的规则处理。因此,不能把 OPEN_NEC 为 0 概括成“以后任何时候门关上都会自动使能”。 [1]

启动时的条件 要核对的开关过程 确认规则
OPEN_NEC = 1 先识别两路 0,再识别两路 1 按 ACK_NEC:自动或要求 ACK 上升沿。
OPEN_NEC = 0,符合两路首次为 1 的启动分支 不要求先完成一次开门 启动自动确认,与 ACK_NEC 无关。
OPEN_NEC = 0,重新集成后至少一路仍为 0 仍需完整打开再关闭 回到按 ACK_NEC 处理的分支。

表格用于提示应记录哪些初始条件,不建议在在线运行中切换 OPEN_NEC 来试分支。对于一个“昨天要确认,今天上电却自行允许”的问题,先比较 F 系统是否重启、输入何时重新集成、当时门的位置和实际参数,才能判断两次是否真的处在相同条件。

改变参数前:官方 S039、S033 分别要求,只有通过其他措施排除了受影响过程的自动重启,才可把 OPEN_NEC、ACK_NEC 设为 0。前者不是无风险的“省掉开门检查”,后者也不是“调试时少按按钮”。启动保护必须按设备风险单独设计。 [1] [5]

系统手册进一步指出,安全程序启动时 F-DB 通常按初值初始化,已保存的故障信息可能丢失,F-I/O 会自动重新集成。需要防止意外启动时,应在安全程序中设置相应保护,并在能安全输出过程值后接受确认。重启设备并不是绕过当前恢复条件的维修方法。 [5]

五、输入变成 0,也可能是钝化而不是门被打开

F-I/O 钝化(passivation)时,数字输入过程映像可能由系统提供安全替代值 0。门此时可能还关着;只读 IN1、IN2 的当前值,无法知道这个 0 是机械动作还是数据被替代。SFDOOR 的两路 QBAD_IN 正是用于区分这类来源。 [1] [4]

这里需要比“质量位是故障报警”再多理解一步。SFDOOR 说明明确提到:正确提供质量信息,可避免关联 F-I/O 钝化后,为了确认又被要求把门完整打开。因此,不能把普通开关门状态表机械地套到每次 I/O 故障恢复上,也不能声称每次钝化后都必须重新开关门。 [1]

这不意味着质量位可以让程序忽略当前安全输入。手册 S009 要求 BOOL 类型安全输入始终处理系统提供的过程映像值;正确的质量说明,与用旧值 1 替换当前安全值 0,是两回事。把 QBAD_IN 固定接 0 来隐藏故障,会丢掉需要识别的数据来源,不是修复。 [4]

质量来源还必须符合诊断粒度。对支持 RIOforFA-Safety 且采用通道级钝化的相应配置,单通道故障时模块级 QBAD、PASS_OUT 可能不变,故障通道的 Value Status 却已变为 0。若门输入跨了两个通道甚至两个模块,应分别找到对应状态,不能用一个无关总报警覆盖两路。 [3]

资料中的命名差异:本次读取的 V21 SFDOOR 页面,Description 写的是 QBAD_I_xx,参数表相关行却写成 QBAD_O_xx。本文没有把两者静默当成同一变量,而是按该页 S7-1200/1500 实际调用图讲解“对应输入通道的反相值状态”,并用系统手册核对其方向。具体接线仍需以实际模块提供的接口为准。 [1] [2] [3]

再把恢复动作分成两层:F-I/O DB 中的 ACK_REQ、ACK_REI 属于模块重新集成;SFDOOR 中的 ACK_REQ、ACK 属于门监控实例的允许恢复。通信故障消除后,前者要满足官方规定的恢复条件和用户确认;完成它并不能自动证明后者已经满足,更不能代替机器启动条件。 [7]

例如,软件显示需要重新集成时,先查相关故障是否排除;输入过程值恢复后,再观察 SFDOOR 当前要求的是门状态还是确认。这个检查顺序不规定必须安装两只复位按钮,而是要求把两类接口的对象、条件及结果分别记录。详细模块恢复规则留在 F-I/O 钝化、重新集成与启动保护一篇展开。

六、门关着却不使能,用 DIAG 定位缺的是哪一类条件

SFDOOR 的 DIAG 是 BYTE 类型的非故障安全服务信息,可用于 HMI 或标准程序诊断,不作为安全控制许可。不能用“DIAG 非零”等同“有故障”,因为其中还包含 ACK_REQ 和 Q 的状态。下面按 V21 的位定义整理检查入口,掩码是位号的十六进制换算。 [1]

位 / 掩码 提示含义 下一步观察
Bit 1 / 16#02 未识别所需的两路 0 状态 查完整打开过程、位置开关、接线,以及是否属于启动要求。
Bit 2 / 16#04 未识别所需的两路 1 状态 查关闭位置、实际输入与开关调整情况。
Bit 3 / 16#08 至少一路 QBAD_IN 为 1 转查对应 F-I/O、通道、通信及主动钝化条件。
Bit 5 / 16#20 缺少允许时 ACK 持续为 1 查确认按钮、线路和逻辑是否保持高电平。
Bit 6 / 16#40 请求确认,对应 ACK_REQ 确认之前先核对现场允许恢复的条件。
Bit 7 / 16#80 Q 的状态 这是允许状态的一部分,不是一个独立故障码。

表中“缺两路 0”不是断言两个输入当前都坏了,“缺两路 1”也不直接证明门开关损坏;它们提示缺少哪种被要求的状态。应带着这个问题查过程记录和硬件,而不是根据某个位直接换件。Bit 0、Bit 4 在本版表中保留,不借用 ESTOP1 的同位号解释。 [1]

如果多个位同时出现,要按位看,不拿整个字节与某个单独掩码作等值比较。例如,把模块质量问题解决前,门输入和顺序也可能尚未满足;这不是软件必须“每次只报一个原因”。原文 Bit 3 的处理文字存在对诊断章节的笼统交叉引用,本篇不把它补写成某个未核实的专用复位步骤。

建议保留三个相互对应的视角:实际门与开关的位置、输入模块的通道值和质量、同一 SFDOOR 实例的输入输出。实例名字、槽位和观察时间要能对得上。只截一张两路输入为 1 的图片,既没有证明过去完整开过门,也没有证明当前查看的是控制这扇门的那个实例。

若 SFDOOR 的 Q 已为 1,现场仍未获准动作,就沿 Q 的交叉引用继续查后续允许、输出与反馈;不要回头降低门监控条件。反过来,即使 Q 按预期撤销,也还需要另行证明执行机构按要求停止。门位置监控、危险运动停止和人员是否能够安全进入,不是同一个可互换的状态。 [8]

七、验证时覆盖顺序、启动和故障三类情境

测试之前:先写明危险能量控制、允许的刺激动作、人员权限、恢复条件和预期结果。以下是编制受控验证计划的建议,不是在生产设备上开门、拔线或强制输入的操作授权。尤其不要为了得到“完整打开”的软件状态,在尚有危险运动时安排人员进入。

第一类是正常顺序:从已允许状态开始,观察任一路先变为 0 时 Q 的反应;再区分只移动部分行程后关闭,与完成整个开关过程后关闭。两者应分别留记录,不能把“门最后都关着”当成相同测试。正常过程通过后,再观察正确阶段的 ACK 上升沿及按钮释放,确认允许恢复不引发未经允许的启动。

第二类是启动分支:把所用 OPEN_NEC、ACK_NEC、F 系统启动状态和 I/O 重新集成后的输入组合写在测试前提中。门原本关闭、门原本打开、只有一路为 0,应分开评价;不要仅在系统已运行时开关门,就声称已经覆盖上电。第四节中的启动例外应作为独立核对项,而不是藏在“复位正常”一句结论里。

第三类是数据无效及恢复:在获准的测试环境中按设计评价单路异常、关联通信故障和相应恢复。同步观察过程值、对应值状态、QBAD_IN、模块诊断及 SFDOOR 状态,区分正常门动作和安全替代值。没有取得模块级或通道级证据时,不把“反复确认后能动了”写成根因已经确认。

这三类情境均应记录实际软件与指令版本、CPU/模块信息、实例、输入映射、参数、动作顺序、预期和实际观察。本文没有实测结果,不替读者把最后一栏填成通过;逻辑观察也不能替代接线和实际防护功能的验证。系统验收还要覆盖硬件、安全通信、在线/离线一致性及相关归档。 [8]

改变开关位置、地址映射、质量来源、确认参数或指令版本,都应进行变更影响分析。受影响部分可能并没有直接修改代码;重新验证的范围不能只限于刚改的一个常量。对可能改变地址与接线对应的变化,还应遵守相应接线测试要求。 [9]

最终应能解释的是:这扇门的两路信号从哪里来,程序识别过什么过程,当前输入是否有效,正在等待哪一层确认,以及 Q 恢复后谁决定设备启动。需要继续分析执行回路,可读 FDBACK 反馈回路与超时诊断;准备交付时,再查 程序验收、签名与归档。

资料来源

第 1 项为《STEP 7 Safety V21 Instructions》,其余为《SIMATIC Safety – Configuring and Programming》V21,均为 11/2025 版本。以下按实际使用章节列出;示例符号、状态对照和排查建议不代表本站测试记录。

1. Siemens:SFDOOR: Safety door monitoring。V21,11/2025;Description、Parameters、Interconnection example、Startup behavior、Structure of DIAG,以及 S7-1200/1500 Example。两张配图来源;参数表与描述中的通道名差异已在正文说明。

2. Siemens:Value status (S7-1200, S7-1500)。V21,11/2025;值状态 1/0 的含义、与通道的对应关系及地址空间定位。

3. Siemens:QBAD/PASS_OUT/DISABLED/QBAD_I_xx/QBAD_O_xx and value status。V21,11/2025;按 F-I/O、CPU、协议特性和钝化粒度区分状态行为。

4. Siemens:Process Data or Fail-Safe Values。V21,11/2025;故障安全替代值、数字输入警告 S009 与重新集成适用条件。

5. Siemens:Programming startup protection。V21,11/2025;Introduction、警告 S008;F-DB 初始化、自动重新集成和启动保护。

6. Siemens:Rules for F-Runtime Groups of the Safety Program。V21,11/2025;通道值、值状态与 F-I/O DB 的运行组访问规则。

7. Siemens:After communication errors。V21,11/2025;Reintegration of F-I/O;通信故障消除、ACK_REQ 和用户确认条件。

8. Siemens:Overview of System Acceptance。V21,11/2025;安全相关工程数据正确性、测试、硬件、安全通信和归档范围。

9. Siemens:Acceptance of Changes。V21,11/2025;变更定位、影响分析、警告 S072 和接线测试警告 S071。

图片说明:两张图均由上述 SFDOOR 官方页面直接引用并存入媒体库,未生成、未改绘。图中的符号与示意对象属于官方示例,不是本站现场记录。第三方图片权利归 Siemens,不纳入本站原创文字的 CC BY-NC-SA 许可。

修订说明:补充机械位置与输入逻辑的对应、官方实际调用、正常开关过程、启动例外和输入质量分支,并按诊断与验证任务重排内容。正文不设目录;本文为资料解读,未进行仿真或实机验证。