前面一章节,我们介绍了沿指令的运用以及如何自写沿指令,这一章节我们来说一说另外一种常用指令---定时器。在SCL中常用的定时器指令有:
- TP 生成脉冲
- TON 接通延时
- TOF 关断延时
- TONR 时间累加器
- RESET_TIMER 复位定时器
- PRESET_TIMER 加载持续时间
下面我们一一介绍这些指令的含义以及它们的用法。
1、TP 生成脉冲
- 指令的功能含义:当参数IN检测到信号上升沿时,指令启动,预设时间PT开始计时,随后不管输入IN如何变化,参数Q都会持续导通PT所预设的时间。
参考下面的时序图可以加深你对该指令的理解:
TP时序图
- 案例:通过一个例子来说明指令的运用,要求:收到触发脉冲信号后,让指示灯亮3S,然后熄灭。
分析下:调用我们上节课学习到的上升沿指令,作为TP定时器IN接口的参数,TP预设时间3S,当DATA.TP_IN上升沿信号触发后,R_TRIG_DB.Q输出一个扫描周期的脉冲信号,TP定时器启动,此时定时器输出Q有输出,即DATA.TP.Q为1,持续时间3S,3S后输出为0。
TP_SCL例子
2、TON 接通延时
- 指令的功能含义:当参数 IN 的逻辑运算结果 (RLO) 从“0”变为“1”(信号上升沿)时,启动该指令。指令启动时,预设的时间 PT 即开始计时。超过持续时间 PT 时,参数 Q 的信号状态变为“1”。只要启动输入仍为“1”,参数 Q 就保持置位。如果 IN 参数的信号状态从“1”变为“0”,则复位参数 Q。当在参数 IN 上检测到一个新的信号上升沿时,将重新启动定时器功能。
参考下面的时序图可以加深你对该指令的理解:
TON时序图
- 案例:通过TON指令实现对某电机的延时启动;TON延迟指令很简单也很好理解,这里主要是看下在SCL编程环境中是如何去运用的。
TON例子
3、TOF 关断延时
- 指令的功能含义:当参数 IN 的逻辑运算结果 (RLO) 从“0”变为“1”(信号上升沿)时,置位参数 Q。当参数 IN 的信号状态更改回“0”时,预设的时间 PT 开始计时。只要时间 PT 正在计时,参数 Q 就保持置位状态。超过时间 PT 时,将复位参数 Q。如果参数 IN 的信号状态在超出时间值 PT 之前变为“1”,则将复位定时器。参数 Q 的信号状态保持置位为“1”。
参考下面的时序图可以加深你对该指令的理解:
TOF时序图
- 案例:通过TOF指令完成对某信号的延迟关断,TOF指令与TON指令使用上面基本相同,只是功能相反,TOF是IN接通后Q立即输出,当IN信号关断后,PT开始计时,待达到设定时间后Q点停止输出,需要注意的是,在PT计时过程中,若IN有变为1,则定时器复位,Q点任为1。
TOF例子
4、TONR 时间累加器(保持时间定时器)
- 指令的功能含义:参数 IN 的信号状态变为“1”时,执行该指令并且从 PT 设置的时间开始计时。时间 PT 计时过程中,如果 IN 参数信号状态为“1”,则记录的时间值将进行累加。累加后的时间将在参数 ET 中输出以供查询。达到时间 PT 时,参数 Q 的信号状态变为“1”。即使 IN 参数的信号状态变为“0”,Q 参数仍将保持置位为“1”。
不论参数 IN 的信号状态如何,参数 R 都将复位参数 ET 和 Q。
参考下面的时序图可以加深你对该指令的理解:
TONR时序图
- 案例:当IN状态为1时,定时器开始计时,时间累加保存在ET中,若中途IN断开,则ET保持当前数值,待IN恢复导通后,继续开始计时,直至到PT预设时间后,Q导通。只有R信号触发才能复位Q与ET。
TONR例子
5、RESET_TIMER 复位定时器
- 指令的功能含义:使用“复位定时器”指令,可将 IEC 定时器复位为“0”。将指定数据块中定时器的结构组件复位为“0”。该指令不会影响 RLO。该指令必须在 IF 指令中编程。
- 案例:运用Reset_timer指令对货物传输超时做报警监控,变量设置如下:
说明:当启动脉冲触发后,Transfer信号置位,累加定时器PT开始计时,当传输完成光电占位且货物占位光电未占位,传输完成Transfer_OUT置位,此时复位累加定时器,若在PT计时时间内,未完成传输则触发TimeOUT超时报警,此时只有Alarm_reset可以复位。
变量 |
类型 |
说明 |
Start |
Bool |
启动信号 |
Transfer |
Bool |
传输运行信号 |
Transfer_OUT |
Bool |
传输完成 |
Transfer_PE |
Bool |
传输完成PE |
NO_PE |
Bool |
占位光电 |
Alarm_reset |
Bool |
报警复位 |
Reset_timer例子
6、PRESET_TIMER 加载持续时间
- 指令的功能含义:可以使用“加载持续时间”指令为 IEC 定时器设置时间。如果该指令输入逻辑运算结果 (RLO) 的信号状态为“1”,则每个周期都执行该指令。该指令将指定时间写入指定 IEC 定时器的结构中。如果在指令执行时指定 IEC 定时器正在计时,指令将覆盖该指定 IEC 定时器的当前值。这将更改 IEC 定时器的定时器状态。
- 案例:
接着上一个案例,我们定时器的PT时间预设可以用这一条指令来给定,下面我们演示一下。
Preset_timer例子
以上就是我们在SCL语言中常用的定时器指令,大家可以多多练习,这一章节就到这里,
感谢阅读!
,