梯形图中TON定时器的复位信号若在计时过程中未彻底断开,会导致定时器状态异常:已达到设定值却不触发输出,或反复置位/复位造成抖动,甚至完全停止计时。这种问题不依赖硬件故障,纯属逻辑设计疏漏,但极易被忽略——因为PLC扫描周期短、响应快,表面看程序“能运行”,实则定时精度崩塌,可能引发设备误动作、工艺超时报警、批次数据错乱等严重后果。
以下为完整修复路径,覆盖现象识别、根本原因分析、三种典型错误逻辑结构、修正方案及验证方法,所有操作均可在任意支持IEC 61131-3标准的PLC平台(如西门子S7-1200/1500、三菱Q系列、欧姆龙NJ/NX系列、倍福TwinCAT)中直接实施,无需修改硬件接线。
一、快速定位问题:三步现象诊断法
-
监控TON指令核心位状态
在编程软件在线调试模式下,打开变量监控表,添加以下四个地址(以通用符号名示意,实际需替换为项目中TON实例名,如TON_HeatUp):TON_x.IN:使能输入状态(布尔)TON_x.Q:定时完成输出(布尔)TON_x.ET:当前经过时间(TIME,单位ms)TON_x.R:复位输入(布尔)
-
执行最小复现工况
触发使能信号TON_x.IN = TRUE,保持该信号稳定;在定时器接近设定值PT前1~2秒时,手动将TON_x.R短暂置为TRUE(持续约100ms),再立即恢复FALSE;观察后续行为。 -
比对标准响应与异常响应
正常TON行为应满足:R为TRUE期间,Q = FALSE且ET清零;R变回FALSE后,ET从0重新开始累加;ET >= PT时,Q严格变为TRUE并保持,直至下一次R = TRUE。
若出现以下任一现象,即确认存在复位逻辑缺陷:
R变FALSE后,ET未归零,而是维持在断开前的某个值(如PT=5000ms,R断开前ET=4200ms,断开后ET继续从4200ms跳变至4300ms);ET达到PT后,Q闪烁(单个扫描周期内TRUE/FALSE交替);Q始终为FALSE,即使ET远超PT(如ET=8000ms,PT=5000ms)。
二、根本原因:TON复位信号的“电平保持”陷阱
TON指令的本质是边沿敏感型功能块:其复位动作仅在R信号的上升沿(FALSE → TRUE)有效。IEC 61131-3标准明确规定:
“当
R为TRUE时,定时器被禁用且ET保持为0;当R从TRUE变为FALSE时,若此时IN为TRUE,则ET从0开始重新计时。”
关键矛盾在于:R信号若在IN为TRUE期间被“软锁定”为TRUE(如由自锁电路、置位指令或条件误判导致),则R永远不会产生FALSE → TRUE的上升沿,复位动作永不触发。 更隐蔽的是,许多工程师误认为只要R在ET到达PT前“出现过”,就能清零,却忽略了TON对复位信号的边沿依赖性。
典型错误根源有三类:
| 错误类型 | 逻辑特征 | 实际危害 |
|---|---|---|
| 自锁型复位 | R由TON_x.Q自身通过SET指令置位,且无独立解锁条件 |
Q一旦为TRUE,R永久为TRUE,ET被锁死在PT,无法重启计时 |
| 条件粘连型复位 | R取自某工艺条件(如Motor_Running = FALSE),但该条件在停机后仍长期为FALSE(如传感器故障、信号延迟) |
复位信号持续有效,TON无法启动,设备卡在“等待复位”状态 |
| 扫描周期竞争型复位 | R由同一网络中其他逻辑动态生成,因PLC扫描顺序导致R在IN置位后一个周期才变为TRUE,错过首个扫描周期的复位窗口 |
ET在首周期已开始累加,R延迟生效,造成初始计时偏移 |
三、修复方案:四套可直接部署的梯形图逻辑
所有方案均遵循同一设计原则:复位信号R必须是干净、瞬时、可控的脉冲,且其生成逻辑与TON使能IN完全解耦。
方案1:下降沿触发复位(推荐用于手动干预场景)
此方案将物理按钮或HMI软按钮的释放动作转化为精确复位脉冲。
-
定义中间变量
在变量表中声明:Reset_Pulse : BOOL;(全局布尔变量,非保持型) -
构建下降沿检测网络
// 梯形图对应逻辑(文字描述) // 左母线 --[ ]-- Reset_Button --[N]-- Reset_Button_Previous --( )-- Reset_Pulse // │ // └──────────────(S)── Reset_Button_Previous解释:
Reset_Button_Previous存储上一扫描周期的按钮状态;当Reset_Button从TRUE变为FALSE(松开按钮),Reset_Button_Previous仍为TRUE,Reset_Pulse在一个扫描周期内为TRUE,之后自动归零。 -
连接TON复位端
将Reset_Pulse直接连接至TON_x.R输入端。确保Reset_Button与TON_x.IN无逻辑关联。
方案2:定时器级联复位(推荐用于自动工艺循环)
适用于需要“前序工序完成→复位本工序定时器→启动本工序”的流水线逻辑。
-
增设前置TON
命名为TON_PreStep,PT设为前序工序预期最大耗时(如T#30S)。 -
生成复位脉冲
当TON_PreStep.Q = TRUE时,驱动一个TP(脉冲定时器),PT = T#100MS,将其Q输出作为TON_x.R。
原理:TP输出仅为100ms高电平,彻底规避长信号粘连。 -
切断反馈环路
确保TON_x.Q不参与任何影响TON_PreStep.IN的逻辑,防止循环依赖。
方案3:置位-复位双控逻辑(推荐用于多条件复位)
当复位需满足多个独立条件(如“急停触发”OR“温度超限”OR“通讯中断”)时使用。
-
汇总复位条件
构建布尔表达式:Reset_Condition := Emergency_Stop OR Temp_High OR Comm_Fail; -
添加消抖与脉冲化
使用R_TRIG(上升沿触发器)功能块:- 输入
CLK接Reset_Condition - 输出
Q即为精准复位脉冲 - 将
R_TRIG.Q连接至TON_x.R
- 输入
-
强制复位隔离
在R_TRIG之前插入SR(置位优先锁存器)的复位端,由TON_x.Q驱动:
SR.R := TON_x.Q;
效果:一旦TON_x计时完成,立即封锁后续复位信号,确保单次循环只触发一次复位。
方案4:绝对时序控制(推荐用于高精度同步场景)
当系统存在多个TON需严格同步启停时,用主时钟统一调度。
-
创建主时钟脉冲
配置一个TP定时器,PT = T#10MS,其Q作为系统心跳,命名为Sys_Clock_10ms。 -
设计复位使能寄存器
定义Reset_Enable : BOOL;,仅在允许复位的时间窗口内为TRUE(如工艺阶段标志Phase_Idle = TRUE)。 -
组合生成复位信号
TON_x.R := Sys_Clock_10ms AND Reset_Enable AND Reset_Request;
其中Reset_Request为原始复位请求信号(如按钮或故障标志)。
本质:将任意长度的请求信号,裁剪为严格匹配系统心跳的窄脉冲。
四、验证与固化:三重校验法
修复后必须执行以下验证,缺一不可:
-
离线仿真测试
在编程软件中启用强制模式:- 强制
TON_x.IN = TRUE; - 强制
TON_x.R按如下序列变化:FALSE → TRUE(持续200ms)→ FALSE; - 监控
ET波形:必须观测到0 → 0 → 0 → 1 → 2 → ...的严格归零重启过程,无任何残留值。
- 强制
-
在线实时监控
下载程序后,使用PLC的“趋势图”功能,采样率设为10ms,记录至少3个完整计时周期的TON_x.ET和TON_x.R曲线。
合格标准:每次R上升沿后,ET曲线必须垂直跌落至0,且后续斜率(计时速度)恒定,无阶梯状跳跃。 -
硬件闭环测试
接入真实执行机构(如接触器、指示灯):- 将
TON_x.Q驱动输出点; - 用示波器测量该输出点电压跳变时刻与
ET达到PT时刻的偏差; - 允许误差 ≤ 2个PLC扫描周期(如扫描周期2ms,则误差≤4ms)。超过此值,需检查
TON所在网络是否被其他高耗时指令(如复杂数学运算)拖慢。
- 将
五、预防机制:代码审查清单
将以下条目纳入团队PLC程序评审流程,杜绝同类问题复发:
- [ ] 所有TON指令的
R输入端,是否直接连接至R_TRIG.Q、TP.Q或下降沿电路? - [ ] 是否存在
TON_x.Q→TON_x.R的直接或间接反馈路径?(搜索所有TON_x.R的赋值源) - [ ] 复位信号生成逻辑,是否包含任何自锁(
SET/RESET)、置位(S)或保持(KEEP)指令? - [ ] 同一工艺段内,是否存在多个TON共享同一复位源?若存在,是否已通过
TP进行脉冲隔离? - [ ] 变量命名是否明确标识复位性质?(如
Reset_Pulse_OK优于Reset_Flag)
TON定时器不是黑箱,其行为完全由输入信号的时序精度决定。复位信号的“干净度”直接定义了整个控制回路的可信边界。每一次对R端的审慎设计,都是在为自动化系统的确定性奠基。

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