北岛夜话
原创工业智能控制领域(PLC、单片机/嵌入式、机器人、通信、机器视觉)的技术及经验分享。
文章545 浏览8639980

答疑:关于定时器TON指令(附视频)

后台收到一位网友的来信,他提出了一个关于TON指令的疑问,内容如下:

我看了您写的西门子系列PLC定时器部分的专栏,有一个问题想请教一下:对于TON指令而言,在保持IN为高电平的前提下,如果修改PT的值,定时器的会响应这个变化么?比如说一开始设定的时间是500ms,在定时器到期之前又改成计时200ms了,这时候定时器会按照新的时间去计时么?

实践是检验真理的唯一标准,我们一起来写程序验证一下吧。

cover.png/

本例程使用西门子S7-200 SMART CPUST20,程序设计的思路如下:
地址VW0用来存放定时器T33的预设值。在CPU的第一个扫描周期,将其赋值为15s(原题中的500ms和200ms时间太短,不便于观察);
当V10.0的值为1时启动定时器(使用TON指令)开始定时,程序代码如下:

code_1.png

在V10.1的上升沿将定时器T33的预设值设置为35s;
将定时器的标志位赋值给扩展模块EM DR08的通道0(地址Q12.0);
相关代码如下图:

code_2.png

接下来做第一个实验:
使用状态图表将V10.0的值设置为1,启动定时器。然后在定时器到达预设值之前,将V10.1的值设置为1,这样T33的预设值就变为35s。
程序的执行请看下面的视频:

从视频中可以看出,如果在定时过程中预设值发生了改变,则定时器的当前值会与新的预设值相比较。若当前值大于预设值,则定时器标志位被置位。

接下来我们做第二个实验:

首先使用状态图表将V10.0的值设置为1,启动定时器。

等待定时器到达预设值15s,此时定时器标志位被置位。此时我们将V10.1的值设置为1,这样定时器的预设值就变为35s。会发生什么呢?

请看下面的视频:

[视频暂时无法播放]

从视频中可以看出,在定时器到达预设值并置位标志位后,如果增大预设值使其大于定时器的当前值,则定时器的标志位会被复位,直到下一次大于新的预设值后被重新置位。

总结:在TON指令中,定时器激活后,定时器的标志位取决于当前值与预设值的大小比较。若当前值大于等于预设值,则标志位被置位;若当前值小于预设值,则标志位被复位。当预设值被动态修改时,以最后一次修改的值为准!

好了,关于定时器TON指令的疑问就先解释到这里。欢迎扫描下方的二维码关注我们的微信公众号。

founderchip.png

取消

感谢您的支持,欢迎常来看看!

扫码支持
一点动力,多少随意

打开支付宝扫一扫,即可进行扫码打赏哦

发表评论