梯形图编程中,置位(S)与复位(R)指令成对使用是保障设备状态逻辑可靠性的底层铁律。一旦遗漏配对,轻则导致单次动作异常,重则引发设备状态“卡死”——即输出持续保持、无法响应后续控制、手动干预失效、安全联锁失灵。这种故障不报错、不跳闸、不触发诊断报警,却让产线停机数小时仍找不到根源。以下为零基础可执行的排查与修复指南。
一、先确认:你遇到的是否真是 S/R 遗漏卡死?
观察三个典型现象,三者满足其二即可判定:
- 输出端子持续得电:用万用表直流电压档测量 PLC 输出端子(如
Q0.0),显示始终为 24 V(或对应电源电压),且按下操作面板“停止”按钮、断开启动信号、切换手动模式均无效; - 监控软件中该位地址值恒为
1:在 TIA Portal、GX Works2 或 RSLogix5000 中在线监控该布尔地址(如M100.0),值长期锁定为1,强制写入0后松手立即跳回1; - 同一地址在多个网络中被独立置位但无统一复位:在程序搜索栏输入该地址(如
M100.0),发现它出现在 3 个以上不同网络中,其中至少 2 处使用S指令(如S M100.0, 1),但全局搜索R M100.0或R 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),生成完整调用列表。重点筛选两类行:
- 类型为
Set或S的行(置位操作); - 类型为
Reset或R的行(复位操作)。
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 网络,检查其使能条件是否具备“单次脉冲”特性。以下条件属于高危设计(极易导致误置位):
- 使用常开触点直接串联(如
—| |— —| |— —| |—),无边沿检测; - 输入信号来自机械式限位开关(抖动大)、光电开关(环境光干扰)、未加滤波的模拟量比较结果;
- 条件中包含定时器
TON的Q输出,但定时器未复位,导致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(位号错)将复位失败。
四、三种根治方案:选一种立即生效
方案一:补全复位(推荐用于简单逻辑)
适用场景:卡死地址仅用于单一功能(如“主轴运行标志”),且复位条件明确(如“停止按钮按下”或“急停触发”)。
操作步骤:
- 在主循环组织块(如
OB1)末尾新增一个网络; - 输入:连接停止类信号(如
I0.3停止按钮常闭触点,或I0.4急停输入); - 指令:拖入
R指令,参数设置为R M100.0, 1; - 验证:下载程序,按下停止按钮,确认
M100.0值变为0,Q0.0失电。
✅ 优势:修改最小,风险最低。
❌ 注意:若该地址被多处置位,必须确保此复位条件覆盖所有场景(如同时接入“暂停”、“故障复位”、“模式切换”等信号)。
方案二:改用置复位双稳态(SR 触发器)
适用场景:需严格“先置后复”顺序,或复位条件与置位条件完全独立(如“启动按钮”置位,“停止按钮”复位)。
操作步骤:
- 删除所有
S和R指令; - 插入 SR 触发器指令(TIA Portal:
SR;GX Works2:SET-RST;RSLogix5000:ONS+OTU组合); - 连接:
S1端接启动条件(如I0.1),R1端接停止条件(如I0.2); - 输出端
Q即为原M100.0。
SR 触发器规则:
S1=1且R1=0→Q=1;S1=0且R1=1→Q=0;S1=0且R1=0→Q保持原值;S1=1且R1=1→Q=0(优先复位,防竞争)。
✅ 优势:天然抗干扰,避免 S/R 时序冲突。
❌ 注意:不可用于需要“多源置位、单源复位”的场景(如 A/B/C 三台电机任意一台启动都置位“运行中”,但仅总停按钮复位)。
方案三:重构为“条件驱动”逻辑(推荐用于复杂系统)
适用场景:地址参与多工况判断(如 M100.0 表示“安全门关闭且液压压力达标且温度正常”),原 S/R 设计已丧失可维护性。
核心思想:放弃锁存,改为每周期实时计算。
操作步骤:
- 新建一个布尔型全局数据块(如
DB10),添加变量SafetyOK : BOOL; - 在
OB1中插入网络,写入:DB10.SafetyOK := (I0.5 = 1) AND (DB2.DBW20 >= 80) AND (DB3.DBW30 <= 120); - 所有原使用
M100.0的地方,全部替换为DB10.SafetyOK; - 删除所有对
M100.0的S/R操作。
✅ 优势:逻辑透明,无状态残留,扩展性强(增删条件只需改一行代码)。
❌ 注意:需评估扫描周期影响(避免大量计算拖慢周期);对高速响应场景(<10 ms)慎用。
五、预防清单:今后绝不踩坑的 7 条硬约束
将以下规则写入团队《PLC 编程规范》并强制执行:
- S/R 必须同块声明:同一地址的
S与R指令必须位于同一个组织块(OB)、功能块(FB)或函数(FC)内,禁止跨块分散; - 新建 S 指令必同步写 R 指令:在编辑器中输入
S Mx.x, 1后,立刻在同一网络下方或右侧插入R Mx.x, 1,即使复位条件暂为空白; - 所有 S/R 地址必须登记至《锁存地址台账》:表格含列:地址、用途、置位条件、复位条件、负责人、审核日期;
- 禁止对输出点(Q)直接 S/R:必须通过中间继电器(M)过渡,输出线圈
= Qx.x仅由M驱动; - S/R 网络必须加注释:格式为
// S: 启动请求;R: 急停触发,中文注释不可省略; - 代码审查必查项:Pull Request 中,自动化脚本扫描所有
S和R指令,校验同一地址的 S/R 数量比是否为1:1; - 仿真测试强制项:下载前,在 PLCSIM Advanced 中注入 3 种扰动:
- 输入信号毛刺(10 ms 宽脉冲);
- 通信中断 5 秒后恢复;
- 手动将置位信号置
1后立即断开,观察目标地址是否归零。
六、真实故障案例还原:汽车焊装线夹具卡死
现象:某焊装线侧围夹具气缸伸出后不缩回,HMI 显示“夹紧完成”,但“松开”指令无响应,手动排气阀释放后气缸复位,5 分钟后再次卡死。
排查过程:
- 监控
M200.0(夹具到位标志):值恒为1; - 交叉引用发现:
S M200.0在FB100(夹具控制)中,条件为I10.2(磁性开关信号);R M200.0在FB101(安全监控)中,条件为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 指令(地址+位号完全一致) |
|||
S 与 R 指令位于同一程序块(OB/FB/FC) |
|||
R 指令使能条件在当前运行模式下可满足 |
|||
无 S 指令作用于物理输出点 Qx.x(仅作用于 M 或 DB) |
|||
| 每个锁存地址在《台账》中有登记且复位条件可验证 | |||
| 仿真中注入毛刺后,锁存地址能正确归零 |
最后一步:重启 PLC,重新上电,执行完整启停循环三次,全程监控目标地址波形。若三次均无卡滞,则修复成功。

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