梯形图置位复位指令(S/R)成对使用遗漏导致的设备状态卡死

发布于 2026-03-17 14:26:57 · 浏览 7 次 · 评论 0 条

梯形图编程中,置位(S)与复位(R)指令成对使用是保障设备状态逻辑可靠性的底层铁律。一旦遗漏配对,轻则导致单次动作异常,重则引发设备状态“卡死”——即输出持续保持、无法响应后续控制、手动干预失效、安全联锁失灵。这种故障不报错、不跳闸、不触发诊断报警,却让产线停机数小时仍找不到根源。以下为零基础可执行的排查与修复指南。


一、先确认:你遇到的是否真是 S/R 遗漏卡死?

观察三个典型现象,三者满足其二即可判定

  1. 输出端子持续得电:用万用表直流电压档测量 PLC 输出端子(如 Q0.0),显示始终为 24 V(或对应电源电压),且按下操作面板“停止”按钮、断开启动信号、切换手动模式均无效
  2. 监控软件中该位地址值恒为 1:在 TIA Portal、GX Works2 或 RSLogix5000 中在线监控该布尔地址(如 M100.0),值长期锁定为 1强制写入 0 后松手立即跳回 1
  3. 同一地址在多个网络中被独立置位但无统一复位:在程序搜索栏输入该地址(如 M100.0),发现它出现在 3 个以上不同网络中,其中至少 2 处使用 S 指令(如 S M100.0, 1),但全局搜索 R M100.0R M100.0, 1 结果为 0 条

若符合上述任一组合,即可排除硬件损坏、电源干扰、IO 模块故障等常见原因,直指梯形图逻辑缺陷。


二、为什么 S/R 遗漏会导致卡死?——用最简电路讲清本质

PLC 扫描周期分三步:输入采样 → 程序执行 → 输出刷新。S 指令与 R 指令不是“瞬时开关”,而是对内存位的“电平锁存”操作

  • S M100.0, 1:当使能条件(EN)为 1 时,M100.0 置为 1 并永久保持,直到被 R 指令清除
  • R M100.0, 1:当使能条件(EN)为 1 时,M100.0 强制清为 0,且此状态持续到下次 S 触发

关键点在于:S 指令一旦触发,其效果不依赖于 EN 信号后续是否消失。这与普通常开触点 —| |— 有本质区别。

用继电器电路类比:

  • S M100.0, 1 相当于一个“自锁启动按钮”:按下后,接触器吸合,常开辅助触点闭合形成自保持回路,松开按钮仍通电;
  • R M100.0, 1 相当于“停止按钮”:切断自保持回路,接触器释放;
  • 若只接了启动按钮,没接停止按钮,设备就永远无法停止——这就是卡死的物理原型。

PLC 内部并无真实“按钮”,但逻辑等效。当某网络中 S M100.0 因传感器误信号、瞬时干扰或调试误操作触发一次后,M100.0 即进入“已置位”状态;若全程序再无任何 R M100.0 被执行,该位将永远为 1,驱动的输出线圈(如 = Q0.0)便持续导通。


三、四步定位法:10 分钟内找到遗漏点

1. 锁定目标地址

在编程软件中打开“交叉引用”功能(TIA Portal:右键地址 → “Go to Cross Reference”;GX Works2:菜单“工具” → “交叉引用”;RSLogix5000:“Edit” → “Cross Reference”)。
输入疑似卡死的地址(如 Q0.0 或中间继电器 M100.0),生成完整调用列表。重点筛选两类行:

  • 类型为 SetS 的行(置位操作);
  • 类型为 ResetR 的行(复位操作)。

2. 统计 S/R 数量并标记位置

新建文本文件,按以下格式记录:

地址:M100.0
置位网络:OB1 / Network 12(条件:I0.1 AND I0.2)
置位网络:FB20 / Network 3(条件:DB1.DBX10.0)
置位网络:FC5 / Network 7(条件:Timer T37.Q)
复位网络:0 条 ← 【警戒!】

注:网络编号必须精确到组织块(OB)、功能块(FB)、函数(FC)层级,因跨块调用时复位可能在其他块中。

3. 逐条验证置位条件是否可能“误触发”

对每个 S 网络,检查其使能条件是否具备“单次脉冲”特性。以下条件属于高危设计(极易导致误置位):

  • 使用常开触点直接串联(如 —| |— —| |— —| |—),无边沿检测;
  • 输入信号来自机械式限位开关(抖动大)、光电开关(环境光干扰)、未加滤波的模拟量比较结果;
  • 条件中包含定时器 TONQ 输出,但定时器未复位,导致 Q 长期为 1
  • 使用 MOVE 指令向位地址写入 1(等效于隐式置位),却无对应清零操作。

实操验证:在监控界面强制将该网络所有输入条件置为 0,观察 S 指令上方的能流(power rail)是否消失。若能流仍存在,说明存在隐含置位路径(如其他网络通过 OR 逻辑间接激活)。

4. 检查“伪复位”陷阱

即使搜索到 R 指令,也需验证其有效性。常见失效情形:

  • R 指令使能条件永为 0(如 —|/|— I0.5,但 I0.5 物理未接线);
  • R 指令位于未调用的功能块中(FB 被禁用或调用条件永不满足);
  • R 指令与 S 指令不在同一扫描周期生效(如 R 在 OB1 末尾,S 在 OB35 高速中断中,而 S 触发后 R 尚未执行);
  • 地址书写错误:R M100.0 正确,R M100(少 .0)或 R M100.1(位号错)将复位失败。

四、三种根治方案:选一种立即生效

方案一:补全复位(推荐用于简单逻辑)

适用场景:卡死地址仅用于单一功能(如“主轴运行标志”),且复位条件明确(如“停止按钮按下”或“急停触发”)。

操作步骤

  1. 在主循环组织块(如 OB1)末尾新增一个网络;
  2. 输入:连接停止类信号(如 I0.3 停止按钮常闭触点,或 I0.4 急停输入);
  3. 指令:拖入 R 指令,参数设置为 R M100.0, 1
  4. 验证:下载程序,按下停止按钮,确认 M100.0 值变为 0Q0.0 失电。

✅ 优势:修改最小,风险最低。
❌ 注意:若该地址被多处置位,必须确保此复位条件覆盖所有场景(如同时接入“暂停”、“故障复位”、“模式切换”等信号)。

方案二:改用置复位双稳态(SR 触发器)

适用场景:需严格“先置后复”顺序,或复位条件与置位条件完全独立(如“启动按钮”置位,“停止按钮”复位)。

操作步骤

  1. 删除所有 SR 指令;
  2. 插入 SR 触发器指令(TIA Portal:SR;GX Works2:SET-RST;RSLogix5000:ONS + OTU 组合);
  3. 连接:S1 端接启动条件(如 I0.1),R1 端接停止条件(如 I0.2);
  4. 输出端 Q 即为原 M100.0

SR 触发器规则:

  • S1=1R1=0Q=1
  • S1=0R1=1Q=0
  • S1=0R1=0Q 保持原值;
  • S1=1R1=1Q=0(优先复位,防竞争)。

✅ 优势:天然抗干扰,避免 S/R 时序冲突。
❌ 注意:不可用于需要“多源置位、单源复位”的场景(如 A/B/C 三台电机任意一台启动都置位“运行中”,但仅总停按钮复位)。

方案三:重构为“条件驱动”逻辑(推荐用于复杂系统)

适用场景:地址参与多工况判断(如 M100.0 表示“安全门关闭且液压压力达标且温度正常”),原 S/R 设计已丧失可维护性。

核心思想:放弃锁存,改为每周期实时计算。

操作步骤

  1. 新建一个布尔型全局数据块(如 DB10),添加变量 SafetyOK : BOOL
  2. OB1 中插入网络,写入:
    DB10.SafetyOK := (I0.5 = 1) AND (DB2.DBW20 >= 80) AND (DB3.DBW30 <= 120);
  3. 所有原使用 M100.0 的地方,全部替换为 DB10.SafetyOK
  4. 删除所有对 M100.0S/R 操作。

✅ 优势:逻辑透明,无状态残留,扩展性强(增删条件只需改一行代码)。
❌ 注意:需评估扫描周期影响(避免大量计算拖慢周期);对高速响应场景(<10 ms)慎用。


五、预防清单:今后绝不踩坑的 7 条硬约束

将以下规则写入团队《PLC 编程规范》并强制执行:

  1. S/R 必须同块声明:同一地址的 SR 指令必须位于同一个组织块(OB)、功能块(FB)或函数(FC)内,禁止跨块分散;
  2. 新建 S 指令必同步写 R 指令:在编辑器中输入 S Mx.x, 1 后,立刻在同一网络下方或右侧插入 R Mx.x, 1,即使复位条件暂为空白;
  3. 所有 S/R 地址必须登记至《锁存地址台账》:表格含列:地址、用途、置位条件、复位条件、负责人、审核日期;
  4. 禁止对输出点(Q)直接 S/R:必须通过中间继电器(M)过渡,输出线圈 = Qx.x 仅由 M 驱动;
  5. S/R 网络必须加注释:格式为 // S: 启动请求;R: 急停触发,中文注释不可省略;
  6. 代码审查必查项:Pull Request 中,自动化脚本扫描所有 SR 指令,校验同一地址的 S/R 数量比是否为 1:1
  7. 仿真测试强制项:下载前,在 PLCSIM Advanced 中注入 3 种扰动:
    • 输入信号毛刺(10 ms 宽脉冲);
    • 通信中断 5 秒后恢复;
    • 手动将置位信号置 1 后立即断开,观察目标地址是否归零。

六、真实故障案例还原:汽车焊装线夹具卡死

现象:某焊装线侧围夹具气缸伸出后不缩回,HMI 显示“夹紧完成”,但“松开”指令无响应,手动排气阀释放后气缸复位,5 分钟后再次卡死。

排查过程

  • 监控 M200.0(夹具到位标志):值恒为 1
  • 交叉引用发现:
    • S M200.0FB100(夹具控制)中,条件为 I10.2(磁性开关信号);
    • R M200.0FB101(安全监控)中,条件为 I10.3(松开按钮);
  • FB101 调用条件为 DB1.Status = 3(仅在“维修模式”下启用),而产线运行于“自动模式”(DB1.Status = 1);
  • 根本原因:复位功能被模式选择逻辑屏蔽。

修复

  • R M200.0 移至 FB100 内部,复位条件改为 I10.3 OR DB1.AutoModeActive
  • 增加互锁:R M200.0 使能前,强制检测气缸缩回到位信号 I10.4,防误复位。

结果:卡死彻底消除,连续运行 30 天零故障。


七、终极检查表(打印贴在工程师工位)

检查项 备注
所有 S 指令均有对应 R 指令(地址+位号完全一致)
SR 指令位于同一程序块(OB/FB/FC)
R 指令使能条件在当前运行模式下可满足
S 指令作用于物理输出点 Qx.x(仅作用于 MDB
每个锁存地址在《台账》中有登记且复位条件可验证
仿真中注入毛刺后,锁存地址能正确归零

最后一步:重启 PLC,重新上电,执行完整启停循环三次,全程监控目标地址波形。若三次均无卡滞,则修复成功。

评论 (0)

暂无评论,快来抢沙发吧!

扫一扫,手机查看

扫描上方二维码,在手机上查看本文