首页 > 全部分类 > 技术问答 > 帖子内容

离奇问题,怀疑遇到 Smart 的底层 Bug 了。 程序里用了一个 TON(接通延时定时器)T37,设定值 PT 是 30000(30秒)。 监控的时候发现:它的使能端 IN 信号一直是稳定的绿色(

联系人:15621144901603

电话/手机:联系客服

发布时间:2026-06-03 18:55

浏览:183次

离奇问题,怀疑遇到 Smart 的底层 Bug 了。 程序里用了一个 TON(接通延时定时器)T37,设定值 PT 是 30000(30秒)。 监控的时候发现:它的使能端 IN 信号一直是稳定的绿色(ON 状态),当前值 ET 也在正常往上涨。 但是涨到差不多 18 秒(18000 左右)的时候,ET 值突然自己蹦回了 0,然后重新开始往上涨! 导致这个定时器永远没办法到达 30 秒,后面的输出点一直不动作。

  1. 全程序搜索,绝对没有对 T37 做任何复位(R)或者清零指令。

  2. 定时器号没有重复使用。 IN 信号没断,定时器自己‘流产’重启,这物理上说得通吗?

明扬工控技术客服2026-06-03 18:56:34
答复内容:亲,这个物理上说得通,但我第一反应不是 Smart 底层 Bug,而是:TON 的 IN 在某一瞬间掉了一个扫描周期,或者 T37 被“间接重复执行/自复位”了。

尤其你说“监控里 IN 一直是绿色”,这个不能完全证明它从未断过。PLC 在线监控刷新速度远低于 PLC 扫描周期,一个扫描周期的 OFF,监控画面很可能根本抓不到。而 TON 只要 IN 变成 OFF,当前值就会清零。西门子 S7-200 手册里也明确写到:TON 的 IN 为 ON 时计时,IN 为 OFF 时定时器位关断、当前值清零;IEC TON 也是 IN 变 OFF 后输出复位,达到预置后停止计时。

还有一个非常关键的点:**T37 是 100ms 时间基准的定时器。**在 S7-200 体系里,T37 到 T63、T101 到 T255 是 100ms 分辨率,最大值 3276.7 秒;手册例子里也写了 T37 的 PT=10 才是 1 秒。

所以如果你用的是 SMART 的 S7-200 风格定时器,T37 的 PT=30000 不是 30 秒,而是 30000 × 100ms = 3000 秒,也就是 50 分钟。
30 秒应该写:

T37,PT = 300

这个地方亲一定先核对一下:你的定时器块下面是不是显示 100ms。如果是,那 PT=30000 本身就不是你想要的 30 秒。

至于“ET 到 18000 左右突然归零”,最常见有这几种原因:

1. IN 实际瞬断了一扫,但监控没看到

比如 IN 前面串了某个条件:

急停复位中间位
通讯正常位
运行允许位
手自动状态位
上位机心跳位
某个报警取反位
某个工艺步骤位
某个比较结果

这些位在程序里可能只掉一拍,在线监控仍然看着是绿的,但 TON 已经被清零了。

建议你不要只看绿色,直接加一个“掉电捕捉位”:

如果 定时器IN条件 = 0
置位 M10.0

或者更准确一点:

定时器IN条件 的下降沿
计数器 C 加 1

如果 C 增加了,说明 IN 确实断过,只是监控没抓到。

2. T37 被同一个程序路径重复执行了

你说“定时器号没有重复使用”,但还要查一种情况:

同一个子程序被调用了两次;
同一个网络复制后 T37 藏在另一个程序段;
中断程序里也用了 T37;
同一个 T37 一个地方 IN=1,另一个地方 IN=0;
T37 同时被 TON、TOF、TP 混用。

西门子手册明确提示,同一个定时器号不能在 TON、TOF、TP 之间共享;另外,100ms 定时器要保持正确计时,定时器指令应保证每扫描周期只执行一次。

所以不是只搜索 R T37,而是要搜索:

T37
TON T37
TOF T37
TP T37
LD T37
= T37
R T37

还要看子程序和中断。

3. 定时器 IN 前面有“自复位逻辑”

有些程序不是直接 R T37,但会通过逻辑让 IN 断掉。

比如:

启动条件 AND NOT 某完成位 -> TON T37

而某完成位可能被 T37 的当前值、比较值、输出点、步骤状态间接触发。

这种不是“复位 T37”,但效果等同于让 TON 的 IN 断一下,ET 立刻清零。

4. 程序段没有每一扫描都执行

如果 T37 放在:

子程序里
跳转 JMP 后面
SCR 顺控段里
某个条件调用的程序块里

就要确认这个程序段是不是每一扫描都被执行。100ms 定时器本身的更新和指令执行有关,手册也特别提醒 100ms 定时器要确保执行规则,否则计时会不可靠。

5. PT 参数本身被变量改写

如果 PT 不是常数,而是 VW、MW、变量地址,就要看这个字有没有被别处写入。

有时候表面上看到 PT 是 30000,但实际运行中某个 MOV、通讯写入、触摸屏参数、配方下载,把 PT 或相关变量改掉,也可能造成异常表现。

亲,我建议你现场这样改,最容易定位:

第一,把 T37 的 PT 从 30000 改成 300,确认是不是 30 秒需求。

第二,不要直接用复杂条件进 TON,先做一个中间位:

M100.0 = 原来的全部启动条件
TON T37, PT=300

第三,加掉线捕捉:

如果 M100.0 = 0
置位 M100.1

第四,再加一个下降沿计数:

M100.0 下降沿 -> C10 + 1

如果 M100.1 被置位,或者 C10 增加,就说明不是定时器自己清零,而是 IN 断过。

第五,全程序查 T37,重点查子程序、中断、SCR、TOF/TP、重复调用。

我的判断是:99% 不是 Smart 底层 Bug。
最可疑的是两个点:T37 的时间基准用错了;或者 IN 有一拍瞬断,监控没抓到。
对不起,请登录后再发表评论!

触屏端
扫一扫手机也能发信息
明扬工控商城-工控网-工控自动化真品,一站式专业服务!