可以使用“关断延时”指令将 Q 参数的复位延时 PT 指定的一段时间。当参数 IN 的逻辑运算结果 (RLO) 从“0”变为“1”(信号上升沿)时,置位参数 Q。当参数 IN 的信号状态更改回“0”时,预设的时间 PT 开始计时。只要时间 PT 正在计时,参数 Q 就保持置位状态。超过时间 PT 时,将复位参数 Q。如果参数 IN 的信号状态在超出时间值 PT 之前变为“1”,则将复位定时器。参数 Q 的信号状态保持置位为“1”。
可通过 ET 参数查询当前的时间值。该定时器值从 T#0s 开始,在达到持续时间 PT 后结束。在持续时间 PT 过后,在参数 IN 重新变为“1”之前,参数 ET 会一直保持为当前值。如果参数 IN 在时间 PT 用完之前变为“1”,则参数 ET 将复位为值 T#0s。
说明 如果程序中未调用定时器(这是因为会忽略定时器),则输出 ET 会在定时器计时结束后立即返回一个常数值。 |
每次调用“关断延时”指令,必须将其分配给存储指令数据的 IEC 定时器。
在以下情况下将更新指令数据:
当输出 ET 或 Q 互连时,调用该指令。如果输出未互连,则不会更新输出 ET 中的当前时间值。
访问输出 Q 或 ET 时。
有关在结构(多重实例)中调用 IEC 定时器的信息,请参见“调用 IEC 定时器”
S7-1200 系列 CPU
IEC 定时器是一个 IEC_TIMER 或 TOF_TIME 数据类型的结构,可如下声明:
声明为一个系统数据类型为 IEC_TIMER 的背景数据块(例如,“MyIEC_TIMER_DB”)
声明为程序块的“Static”中数据类型为 TOF_TIME 的局部变量(例如,#MyIEC_TIMER_Instance)
S7-1500 系列 CPU:
IEC 定时器是一个 IEC_TIMER、IEC_LTIMER、TOF_TIME 或 TOF_LTIME 数据类型的结构,可如下声明:
声明为一个系统数据类型为 IEC_TIMER 或 IEC_LTIMER 的背景数据块(例如,“MyIEC_TIMER_DB”)
声明为程序块的“Static”中数据类型为 TOF_TIME 或 TOF_LTIME 的局部变量(例如,#MyIEC_TIMER_Instance)
IEC 定时器作为系统数据类型为 IEC_<定时器> 的背景数据块(共享 DB)
您可以按如下所示将 IEC 定时器声明为数据块:
.TOF();
IEC 定时器作为块接口的局部变量(多重实例)
您可以按如下所示将 IEC 定时器声明为局部变量:
#myLocal_Timer();
参数
下表列出了该指令的参数:
参数 | 声明 | 数据类型 | 存储区 | 说明 | |
---|---|---|---|---|---|
S7-1200 | S7-1500 | ||||
IN | Input | BOOL | BOOL | I、Q、M、D、L、P | 启动输入 |
PT | Input | TIME | TIME、LTIME | I、Q、M、D、L、P | 关断延时的持续时间。 PT 参数的值必须为正数。 |
Q | Output | BOOL | BOOL | I、Q、M、D、L、P | 超出时间 PT 后复位的操作数。 |
ET | Output | TIME | TIME, LTIME | I、Q、M、D、L、P | 当前定时器的值 |
脉冲时序图
下图为“关断延时”指令的脉冲图:
示例
以下示例说明了该指令的工作原理:
SCL |
---|
"TOF_DB".TOF(IN := "Tag_Start", PT := "Tag_PresetTime", Q => "Tag_Status", ET => "Tag_ElapsedTime"); |
“Tag_Start”操作数的信号状态从“0”变为“1”时,将置位“Tag_Status”操作数。当“Tag_Start”操作数的信号状态从“1”变为“0”时,则 PT 参数指定的时间开始计时。只要该时间仍在计时,“Tag_Status”操作数就会保持置位状态。该时间计时完毕后,将复位“Tag_Status”操作数。当前时间值存储在“Tag_ElapsedTime”操作数中。