工业自动化中的 AI

文章指南

如何排查保持型 PLC 安全锁存器:识别错误 #2

了解为何保持型 OTL/OTU 逻辑会在断电后保留许可信号,这如何导致重启风险,以及如何在 OLLA Lab 中验证更安全的非保持型自锁设计。

直接回答

在断电重启后仍保持为 TRUE 的 PLC 安全锁存器通常属于保持型内存设计错误。当在需要非保持型许可信号的地方使用置位/锁存(Set/Latch)逻辑时,机器可能会在运动授权仍有效的情况下重新进入 RUN 模式,这可能与 NFPA 79 和 IEC 60204-1 的重启意图相冲突。

本文回答的问题

文章摘要

在断电重启后仍保持为 TRUE 的 PLC 安全锁存器通常属于保持型内存设计错误。当在需要非保持型许可信号的地方使用置位/锁存(Set/Latch)逻辑时,机器可能会在运动授权仍有效的情况下重新进入 RUN 模式,这可能与 NFPA 79 和 IEC 60204-1 的重启意图相冲突。

一个常见的误区是:任何“断电前能正常工作”的梯形图逻辑都是好的控制逻辑。事实并非如此。在与安全相关的许可逻辑中,重启后依然存续可能正是缺陷所在。

考虑这种失效模式:电源掉电,CPU 重启,电机或序列在没有操作员重新操作的情况下恢复运行。这就是重启风险。

Ampergon Vallis 指标: 在 OLLA Lab 的电机控制场景中进行的 50 次模拟断电测试中,保持型锁存位在所有 50 次试验中均在 CPU 重启状态下保持为 TRUE,而等效的非保持型自锁输出在重启时均在 12 毫秒内变为 FALSE。方法论: 在一个内部电机控制任务上进行 n=50 次受控的 RUN→PROG→RUN 转换测试;基准比较器 = 非保持型 OTE 自锁梯级;时间窗口 = 2026 年 3 月 24 日的一次 QA 会话。这支持了该模拟器能够在重启测试期间重现保持型与非保持型逻辑之间行为差异的狭义结论。它不支持任何更广泛的现场故障率声明。

在本文中,任务是进行取证分析:识别该位为何能存续,为何这在机器安全预期下很重要,以及如何用一种在调试期间经得起推敲的非保持型设计来替换该模式。

为什么锁存(OTL)指令在 PLC 断电重启后依然存在?

锁存行为在重启后依然存在,是因为保持型指令和非保持型输出指令在 CPU 初始化期间的处理方式不同。

在实际的 PLC 执行中,区别很简单:OTE 为当前扫描周期写入状态;OTL 存储状态,直到有指令明确将其清除。 语法在屏幕上看起来可能相似,但重启行为是争论的终点。

预扫描清除例程

当 PLC 从 PROGRAM 模式切换到 RUN 模式,或从断电中恢复时,CPU 通常会执行初始化或预扫描例程。具体的实现因平台而异,但工程上的区别是一致的:

  1. CPU 在恢复正常循环执行前评估启动条件。
  2. 标准的非保持型输出指令(如 OTE)在预扫描行为期间会被清除为 FALSE。
  3. 保持型指令(如 OTL)不会仅仅因为控制器重启而被清除。
  4. 它们关联的内存会保持在最后存储的状态,直到执行了明确的 OTU 或等效的复位条件。

这就是为什么保持型许可信号在重启后即使没有操作员发出新的启动命令,也可能保持有效的原因。

这在梯形图术语中意味着什么

保持型锁存器回答的问题与自锁电路不同。

  • 自锁逻辑: “当当前的许可路径保持有效时,该输出是否应保持为真?”
  • 保持型锁存逻辑: “该位是否应跨越扫描丢失、模式更改或电源中断保持为真,直到另一条指令将其清除?”

这些不是可互换的设计选择。一个是状态连续性,另一个是实时许可连续性。混淆它们就是重启风险逐级产生的原因。

PLC 锁存器与自锁电路有什么区别?

锁存器在中断期间存储状态。自锁电路仅在梯级条件保持有效时才重新建立状态。

这是核心的诊断区别。

| 设计模式 | 内存行为 | 重启行为 | 典型用途 | 安全许可适用性 | |---|---|---|---|---| | OTL/OTU 置位-复位 | 保持型 | 状态可能在重启后持续存在,直到明确复位 | 报警首出、批处理步骤内存、维护计数器 | 不适合用于运动许可或对重启敏感的使能信号 | | OTE 自锁电路 | 非保持型 | 输出在重启时掉电,必须由有效的梯级条件重新建立 | 电机启停保持、操作员指令运行许可 | 首选方案,适用于必须要求人工重新启动的场景 |

一个有用的简记法是:锁存是内存;自锁是连续性。 工厂通常很在意你指的是哪一个。

NFPA 79 对意外机器启动有什么要求?

NFPA 79 和 IEC 60204-1 要求,在重启会导致危险时,电源的恢复不得自动重启机器。

这是编码问题背后的标准问题。梯形图缺陷之所以重要,是因为机器的重启行为很重要。

标准原则

相关的要求用实际工程术语表述为:

  • 电源的丢失和恢复本身不得导致危险运动恢复。
  • 当自动恢复会危及人员安全时,重启必须要求采取刻意的行动。
  • 紧急停止、防护装置中断或电源恢复不得被陈旧的保持状态所绕过。

NFPA 79 和 IEC 60204-1 在这一点上是一致的。措辞因版本和应用环境而异,但设计意图是稳定的:禁止危险的意外重启

为什么保持型的“就绪”位会成为标准问题

保持型的 `System_Ready`(系统就绪)、`Run_Enable`(运行使能)或防护门许可信号可能会在重启后绕过预期的手动复位路径。

这意味着逻辑可能满足内部语法,却违反了机器的重启原则。标准不在乎梯级是否优雅。它们在乎的是机器是否在应该等待时移动了。

本文并非正式的合规性意见,合规性始终取决于完整的机器风险评估、安全架构和适用司法管辖区。但作为控制设计规则,将保持型内存用于运动许可信号是很难辩护的。

如何在 OLLA Lab 模拟模式下识别“置位位”错误?

识别此错误的方法是观察状态转换,而不是孤立地查看梯级。

静态代码审查有帮助,但重启缺陷往往隐藏在显眼处。一个梯级看起来可能很整洁,但一旦 CPU 闪断,行为就会变得很糟糕。

“模拟就绪”的操作定义: 当工程师能够在逻辑进入实际生产流程之前,证明、观察、诊断并加固控制逻辑以应对真实的工艺行为时,他们就是“模拟就绪”的。在这种情况下,这意味着重现重启条件、观察标签持久性,并验证修改后的逻辑在 CPU 状态改变期间是否能安全失效。

故障重现步骤

使用 OLLA Lab 作为有界验证环境,进行高风险的调试测试,这些测试在实际设备上可能是不安全的或具有破坏性的。

  1. OLLA Lab 中打开电机控制场景。
  2. 变量面板(Variables Panel) 中,监控标签 `System_Ready` 以及任何相关的输出或许可标签。
  3. 梯形图编辑器(Ladder Logic Editor) 中,触发启动条件,使保持型锁存器通电。
  4. 确认 `System_Ready = TRUE`。
  5. 使用 模拟模式(Simulation Mode) 将虚拟 CPU 从 RUN 切换到 PROG,代表断电或控制器模式转换。
  6. 将 CPU 从 PROG 返回到 RUN
  7. 观察在任何新的操作员动作发生之前,`System_Ready` 是否保持为 TRUE。

如果该位在重启后保持有效,你就重现了故障模式。

为什么这个测试首先要在模拟中进行

这就是 OLLA Lab 变得具有操作价值的地方。

该平台在此处的价值不在于它抽象地“教授 PLC”。它提供了一个场所来演练重启状态测试,这在已调试的机器上通常是昂贵、尴尬或危险的。你可以同时监控梯形图状态、I/O 状态和模拟设备行为,这正是重启诊断所需要的。

这就是语法练习与验证练习的区别。这种区别并非仅仅是表面上的。

如何用非保持型自锁梯级替换置位/锁存指令?

对于对重启敏感的运行许可信号,正确的替换方案通常是围绕 OTE 构建的非保持型自锁电路。

经典的“三线控制”模式至今仍在使用,因为它能干净利落地解决实际问题。当物理规律支持它们时,旧模式就会持续存在。

错误与正确的梯形图模式

错误:保持型锁存(断电后存续)

|---[ Start_PB ]-------------------------------------( L )---| System_Ready

正确:非保持型自锁(断电后掉电)

|---[ Start_PB ]-------[/ Stop_PB ]------------------( )---| | System_Ready |---[ System_Ready ]---------------------------------|

为什么自锁梯级在此用例中更安全

非保持型自锁设计之所以有效,是因为:

  • 输出仅在梯级逻辑保持有效时才维持,
  • OTE 在重启行为时被清除,
  • 操作员必须在电源恢复后重新发出启动命令,
  • 控制路径反映的是当前的机器状况,而不是历史内存。

这符合许多机器运行命令和运动许可信号的预期重启原则。

修改后需要验证的内容

用自锁梯级替换锁存器后,重复重启测试并验证:

  • `System_Ready` 在重启转换期间变为 FALSE,
  • 没有输出在没有新命令的情况下恢复运动,
  • 停止和联锁条件仍能正确断开保持路径,
  • 异常条件不会意外地重新创建许可信号。

修复工作并不是因为梯级看起来更体面就完成了。只有当重启行为正确时,它才算完成。

调试重启故障时应记录哪些工程证据?

你应该记录一份精炼的工程证据,而不是截图库。

一份可靠的故障排查记录应展示推理、测试方法、故障重现和修改结果。这才是审查员、讲师和雇主真正能够检查的内容。

使用此结构:

  1. 系统描述 定义机器单元、控制目标以及受影响的许可或输出。
  2. “正确”的操作定义 用可观察的术语陈述预期的重启行为。例如:“电源恢复后,电机输出应保持断电,直到操作员按下启动键。”
  3. 梯形图逻辑和模拟设备状态 捕获原始梯级、相关标签以及重启前后模拟的机器状况。
  4. 注入的故障案例 描述确切的测试:RUN→PROG→RUN 转换,观察到的保持位,输出后果。
  5. 所做的修改 展示替换后的逻辑,并解释它为何改变了重启行为。
  6. 经验教训 记录设计原则:保持型内存适用于存储状态,不适用于对重启敏感的运动授权。

这种结构在培训中很有用,因为它反映了实际的调试逻辑审查。它在现场也很有用,因为在进度压力下记忆是不可靠的,而书面证据则不仅仅是“不时髦”那么简单。

置位(Set)和复位(Reset)指令有哪些有效的工业用例?

当工艺确实需要在中断期间保留状态时,OTL 和 OTU 是有效的。

问题不在于指令本身。问题在于假装所有的状态都值得在重启后存续。

适当的保持型内存应用

| 应用 | 为什么保持型行为是适当的 | |---|---| | 报警首出捕获 | 即使在审查前电源中断,初始故障源也应被记录下来。 | | 配方或批处理步骤跟踪 | 工艺可能需要根据最后确认的步骤恢复。 | | 维护计数器 | 循环计数和磨损指标应在重启后存续,以保证维护完整性。 | | 带有受控复位逻辑的操作员确认 | 某些确认可能需要持续存在,直到执行了正式的复位路径。 | | 非安全生产状态标记 | 某些序列状态被有意保留,以在受控恢复后保持工艺连续性。 |

何时保持型内存应触发额外审查

当保持位与以下内容绑定时,请进行额外审查:

  • 运动使能,
  • 防护许可,
  • 重启授权,
  • 急停恢复路径,
  • 安全相关联锁,
  • 任何其意外恢复可能造成人员风险的输出。

这并不自动意味着设计不合规,但确实意味着辩护的责任变得更加沉重。

数字孪生验证如何帮助解决重启和调试故障?

数字孪生验证通过使重启行为在逻辑层和设备行为层同时可观察,从而提供帮助。

这就是操作价值所在。你不仅是在问一个位是否保持为高电平,你是在问因为该位保持为高电平,机器会做什么。

在 OLLA Lab 中,梯形图编辑器、变量可见性和模拟设备状态可以结合使用来测试:

  • 保持位是否持续存在,
  • 输出路径是否重新断言,
  • 设备模型是否反映了未经指令的启动条件,
  • 修改后的逻辑是否消除了该行为。

这就是模拟对于调试实践至关重要的原因。许多危险故障都是转换故障:启动、恢复、模式切换、许可丢失、传感器不一致、反馈延迟。它们在稳态运行中并不总是显而易见的。出于相当充分的理由,真实的工厂并不喜欢被当作调试沙箱。

关于数字孪生、虚拟调试和基于模拟的工业培训的最新文献普遍支持使用高保真模拟环境进行更早的故障发现、操作员准备和控制系统验证,同时也明确指出模拟不能取代正式的安全验证或现场验收测试。这种界限很重要。

结论

当保持型 PLC 安全锁存器允许机器许可信号在电源恢复后存续时,这通常是一个设计错误。

纠正原则很简单:

  • 对必须在中断后存续的状态使用保持型内存
  • 对重启敏感的运行授权使用非保持型自锁逻辑
  • 通过 CPU 状态转换来测试行为,而不是假设梯级意图是显而易见的,
  • 记录故障、修改内容以及观察到的重启结果。

这就是模拟就绪工作在实践中的样子:不仅仅是编写梯形图逻辑,而是证明当工艺流程出现不便情况时它会如何表现。而在工业界,这种情况几乎每天都在发生。

继续探索

Interlinking

References

编辑透明度

本博客文章由人类作者撰写,核心结构、内容和原创观点均由作者本人创建。但本文部分文本在 ChatGPT 和 Gemini 的协助下进行了润色。AI 仅用于语法与句法修正,以及将英文原文翻译为西班牙语、法语、爱沙尼亚语、中文、俄语、葡萄牙语、德语和意大利语。最终内容已由作者进行严格审阅、编辑与验证,作者对其准确性承担全部责任。

作者简介:PhD. Jose NERI, Lead Engineer at Ampergon Vallis

事实核验: 技术有效性已于 2026-03-23 由 Ampergon Vallis 实验室 QA 团队确认。

可直接实施

使用仿真支撑的工作流,将这些洞见转化为可衡量的工厂成果。

© 2026 Ampergon Vallis. All rights reserved.
|