可以使用“ 生成关断延时”(Generate off-delay) 指令将延时所指定的时间 PT 复位输出 Q。当输入 IN 的逻辑运算结果 (RLO) 从“0”变为“1”(上升沿)时,置位 Q 输出。当输入 IN 处的信号状态变回“0”时,预设的时间段 PT 开始计时。在 PT 计时过程中,输出 Q 期间将保持置位。
超出所指定的时间段 PT 后,复位输出 Q。如果输入 IN 的信号状态在时间段 PT 计时结束之前变为“1”,则复位该时间。而输出 Q 处的信号状态则保持为“1”。
可以在输出 ET 处查询当前时间值。该时间值从 T#0s 开始,达到 PT 时间值时结束。经过时间 PT 后,输出 ET 会保持为当前值,直至输入 IN 切换回“ 1” 。如果在经过时间 PT 前输入 IN切换回“1”,则输出 ET 会复位为值 T#0 。
该指令与标准 TOF 指令的功能上存在以下几点不同:
• 如果在时间 PT = 0 ms 时调用该指令,则输出 Q 和 ET 复位。
• 如果在 PT < 0 ms 时调用该指令,则输出 Q 和 ET 复位。
需要在 PT 大于 0 且输出 IN 出现另一个下降沿时,重新启动关断延时。
① 对于循环 n+1 中的首次调用,相对于 F 运行组开始的时间,该指令的调用时间比在循环 n 中的调用时间早 Δ1 ,这是因为在循环 n+1 中调用该指令之前跳过了 F 运行组部分安全程序。对于时间更新,该指令将考虑时间 T Base_1,而不是循环 n 中从调用开始实际已用完的 T 1 时间。
② 在循环 n+1 中第二次调用该指令。此时,不考虑其它时间更新(增量为 Δ2 )。
③ 在循环 n+2 中调用该指令时,相对于 F 运行组开始的时间,该指令的调用时间比在循环 n 中的调用时间晚 Δ3 ,这是因为在循环 n+2 中调用该指令之前,更高优先级的中断已中断了 F 运行组。该指令将使用时间 T Base_1 + TBase_2,而不是循环 n 中从调用开始算起已实际经过的时间 T 3 。即使在循环 n+1 中没有调用该指令,也将发生以上状况。
例如:
如果操作数“TagIn_1”的信号状态从“0”变为“1”,则将输出 Q 处操作数“TagOut” 的信号状态置位为“1”。
如果操作数“TagIn_1”的信号状态变为“0”,则输入 PT 处所指定的时间 (200 ms) 开始计时。
超出该时间时,将输出 Q 处操作数“TagOut” 重新置位为“0”。而在操作数“"F_DB_1".Tag_ET”中则为当前时间值。
说明
可以使用“生成关断延时”(Generate off-delay) 指令将 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 会保持被设置为当前值的状态。在持续时间 PT 计时结束之前,如果输入 IN 的信号状态切换为“1”,则将 ET 输出复位为值 T#0s。
每次调用“关断延时”指令,必须将其分配给存储指令数据的 IEC 定时器。
说明 如果程序中未调用定时器(例如,由于跳过定时器而导致),则输出 ET 会在定时器计时结束后立即返回一个常数值。 |
对于 S7-1200 CPU
IEC 定时器是一个 IEC_TIMER 或 TOF_TIME 数据类型的结构,可如下声明:
声明为一个系统数据类型为 IEC_TIMER 的数据块(例如,“MyIEC_TIMER”)
声明为块中“Static”部分的 TOF_TIME 或 IEC_TIMER 类型的局部变量(例如,#MyIEC_TIMER)
对于 S7-1500 CPU
IEC 定时器是一个 IEC_TIMER、IEC_LTIMER、TOF_TIME 或 TOF_LTIME 数据类型的结构,可如下声明:
声明为一个系统数据类型为 IEC_TIMER 或 IEC_LTIMER 的数据块(例如,“MyIEC_TIMER”)
声明为块中“Static”部分的 TOF_TIME、TOF_LTIME、IEC_TIMER 或 IEC_LTIMER 类型的局部变量(例如,#MyIEC_TIMER)
在以下应用中,将更新该指令数据:
ET 或 Q 输出未互连时调用该指令。如果输出未互连,则不更新输出 ET 中的当前时间值。
访问 Q 或 ET 输出时。
执行“关断延时”指令之前,需要事先预设一个逻辑运算。该运算可以放置在程序段的中间或者末尾。
参数
下表列出了“关断延时”指令的参数:
参数 | 声明 | 数据类型 | 存储区 | 说明 | ||
---|---|---|---|---|---|---|
S7-1200 | S7-1500 | S7-1200 | S7-1500 | |||
IN | Input | BOOL | BOOL | I、Q、M、D、L 或常量 | I、Q、M、D、L、P 或常量 | 启动输入 |
PT | Input | TIME | TIME、LTIME | I、Q、M、D、L 或常量 | I、Q、M、D、L、P 或常量 | 关断延时的持续时间 PT 参数的值必须为正数。 |
Q | Output | BOOL | BOOL | I、Q、M、D、L | I、Q、M、D、L、P | 超出时间 PT 时复位的输出。 |
ET | Output | TIME | TIME、LTIME | I、Q、M、D、L | I、Q、M、D、L、P | 当前时间值 |
脉冲时序图
下图为“关断延时”指令的时序图:
示例
以下示例说明了该指令的工作原理:
下表将通过具体的操作数值对该指令的工作原理进行说明:
参数 | 操作数 | 值 |
---|---|---|
IN | Tag_Start | 信号跃迁“0”=>“1”;信号跃迁“1”=>“0” |
PT | Tag_PresetTime | T#10s |
Q | Tag_Status | TRUE |
ET | Tag_ElapsedTime | T#10s => T#0s |
当操作数“Tag_Start”的信号状态从“0”变为“1”时,操作数“Tag_Status”的信号状态将置位为“1”。
当“Tag_Start”操作数的信号状态从“1”变为“0”时,PT 参数预设的时间将开始计时。
只要该时间仍在计时,“Tag_Status”操作数就会保持置位为 TRUE。
该时间计时完毕后,“Tag_Status”操作数将复位为 FALSE。当前时间值存储在“Tag_ElapsedTime”操作数中。