TOF:生成关断延迟/TOF 生成关断延时

描述

状态机

可以使用“ 生成关断延时”(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”操作数中。





审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分