前面的 F-I/O DB、ESTOP1、SFDOOR、FDBACK 都会遇到同一个底层问题:为什么现场故障已经消失,Safety 程序却仍然使用 0,或者模块还在等待确认?
答案在 F-I/O 的 passivation(钝化)与 reintegration(重新集成)机制里。这也是排查时最容易搞错方向的地方——把“还没恢复”当成“还有故障”,回头去查现场。
诊断时把两件事分开:故障是否还存在,以及是否已经重新集成。顺序是固定的:
| 顺序 | 看什么 | 判断 |
|---|---|---|
| 1 | 故障源 | 通信、模块、通道、供电是否已恢复 |
| 2 | QBAD / Value Status |
当前还在不在钝化状态 |
| 3 | ACK_REQ |
是否已置 1,也就是“可以确认了” |
| 4 | 确认方式 | 单模块 ACK_REI 还是运行组级 ACK_GL |
完整链路:钝化 → 故障消失 → ACK_REQ=1 → 确认正沿 → 重新使用过程值。
一、什么时候会钝化
Siemens V21 规定,在 F-System 启动、PROFIsafe 通信错误、F-I/O 故障、通道故障、程序设置 PASS_ON=1 或 F-I/O 被停用时,系统可能使用故障安全值代替过程值。
| 触发条件 | 典型结果 | 诊断关注点 |
|---|---|---|
| F-System 启动 | 先输出故障安全值 | QBAD、PASS_OUT、Value Status |
| PROFIsafe 通信错误 | 整个 F-I/O 所有通道钝化 | ACK_REQ、通信诊断 |
| 模块/通道故障 | 按模块级或通道级配置钝化 | Value Status / 模块诊断 |
PASS_ON=1 |
程序主动钝化 | 确认是否由 Safety 逻辑主动触发 |
最后一行值得留意:如果是程序自己把 PASS_ON 置 1,现场怎么查都查不出毛病。
二、通信错误后的行为
如果 F-CPU 与 F-I/O 之间检测到安全通信错误,整个 F-I/O 的所有通道都会被钝化。对于 S7-1200/1500 的相关 F-I/O,QBAD 和 PASS_OUT 会反映整块模块进入故障安全状态,通道值使用 0。
通信恢复并不等于立即恢复过程值。所有通信错误必须先消除,F-System 将 ACK_REQ 置 1,然后通过当前 F-I/O 的 ACK_REI 或全局 ACK_GL 完成人工重新集成。
三、F-I/O 或通道故障后的行为
对于模块故障或通道故障,重新集成方式取决于 ACK_NEC 或模块参数“Channel failure acknowledge”。如果设置为 automatic,F-System 检测到故障已经排除后可以自动重新集成。
如果设置为 manual,则必须等故障消除且 ACK_REQ=1 后,再给 ACK_REI 或 ACK_GL 一个上升沿。对于某些 F-I/O 输出,故障排除后还可能需要等待模块内部必要的测试信号完成,人工确认不一定能立即执行。
四、ACK_REQ 与 ACK_REI
这两个很容易混。ACK_REQ 是“可以确认了”的状态信号,由 F-System 在确认相关故障已经排除后置 1,不是用户自己写入的命令。
ACK_REI 才是针对单个 F-I/O 的重新集成命令,并且依赖上升沿。确认完成以后,ACK_REQ 会复位。
一个读、一个写,方向相反。把 ACK_REQ 当成命令去写是无效的。
五、ACK_GL 全局确认
ACK_GL 用一个全局确认信号同时重新集成当前 F-runtime group 内所有满足条件的 F-I/O 或通道。它的输入 ACK_GLOB 需要上升沿。
Siemens V21 规定,ACK_GL 每个 F-runtime group 只能调用一次。使用全局确认时,对应 F-I/O DB 的 ACK_REI 必须保持 0;反过来,使用单个 ACK_REI 时,ACK_GLOB 必须为 0。两种方式不能混用。
全局确认不是“忽略所有故障”,只有已经满足重新集成条件的 F-I/O 才会响应。它省的是逐个确认的力气,不是排障的力气。
六、供电短暂中断的特殊情况
Siemens 对 F-I/O 供电中断给出了一个容易被忽略的特殊情况:如果供电中断持续时间短于该 F-I/O 的 F-monitoring time,可能发生自动重新集成,并且不受 ACK_NEC 或 Channel failure acknowledge 设置限制。
这一条的分量很重:你可能把确认策略全部设成了人工,但一次短暂的电源波动仍然可能让模块自己恢复。如果相关过程不允许这种自动恢复,需要通过 QBAD、Value Status、PASS_OUT 等状态自己编写 startup protection,避免设备在短暂供电恢复后直接重新进入运行条件。
七、常见误解
| 常见说法 | 实际情况 |
|---|---|
| 故障消失就会立即恢复真实过程值 | 是否自动恢复取决于故障类型、确认策略和 F-I/O 特性 |
ACK_GL 可以把所有故障强制清掉 |
它只对已经满足重新集成条件的 F-I/O 进行确认 |
ACK_REI 长期为 1 更可靠 |
重新集成依赖正沿,应使用明确的确认脉冲 |
| 短暂掉电一定会等待人工确认 | 短于 F-monitoring time 的供电故障可能自动重新集成 |
八、总结
把“故障是否存在”和“是否已经重新集成”分成两件事,按开头那四步看,这类“现场明明好了但程序不动”的问题基本都能定位。
本系列上一篇:FDBACK 反馈监控;下一篇:Safety 程序验收。
Comments NOTHING