网站首页 > 基础教程 正文
TOF:生成关断延时 |
说明
使用“关断延时”指令,可以将 Q 输出的复位延时 PT 中指定的一段时间。当 IN 输入的逻辑运算结果 (RLO) 从“1”变为“0”(信号下降沿)时,将置位输出 Q。当输入 IN 处的信号状态变回“1”时,预设的时间 PT 开始计时。只要 PT 持续时间仍在计时,输出 Q 就保持置位。持续时间 PT 计时结束后,将复位输出 Q。如果输入 IN 的信号状态在持续时间 PT 计时结束之前变为“1”,则复位定时器。输出 Q 的信号状态仍将为“1”。
可以在 ET 输出查询当前的时间值。该定时器值从 T#0s 开始,在达到持续时间 PT 后结束。当持续时间 PT 计时结束后,在输入 IN 变回“1”之前,输出 ET 会保持被设置为当前值的状态。在持续时间 PT 计时结束之前,如果输入 IN 的信号状态切换为“1”,则将 ET 输出复位为值 T#0s。如果在程序中未调用该指令(如,由于跳过该指令),则 ET 输出会在超出时间后立即返回一个常数值。
“关断延时”指令可以放置在程序段的中间或者末尾。它需要一个前导逻辑运算。
每次调用“关断延时”指令,必须将其分配给存储实例数据的 IEC 定时器。
对于 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)
更新实例数据中的实际值
“关断延时”中的实例数据根据以下规则更新:
- IN 输入
- “关断延时”指令将当前 RLO 与保存在实例数据 IN 参数中上次查询的 RLO 进行比较。如果指令检测到 RLO 从“1”变为“0”,则说明出现了一个信号下降沿并开始进行时间测量。在“关断延时”指令处理完毕后,IN 参数的值在实例数据中更新,并作为存储器位用于下次查询。
- 请注意,边沿检测将在其他功能写入或初始化 IN 参数的实际值时中断。
- PT 输入
- 当边沿在 IN 输入处改变时,PT 输入处的值将写入实例数据中的 PT 参数。
- Q 和 ET 输出
- Q 和 ET 输出的实际值在以下情况下更新:
- 当输出 ET 或 Q 互连时,调用该指令。
- 或
- 访问 Q 或 ET。
- 如果输出未互连并且还未被查询,则不更新 Q 和 ET 输出的当前时间值。即使在程序中跳过该指令,也不会对输出进行更新。
- “关断延时”指令的内部参数用以计算 Q 和 ET 的时间值。请注意,时间测量将在其他功能写入或初始化指令的实际值时中断。
危险 | |
重新初始化实际值的危险 在时间测量时,重新初始化 IEC 定时器的实际值会破坏 IEC 定时器的功能。更改实际值可能会导致程序和实际过程之间不一致。这会对财产和人身造成造成严重损害。 以下功能可导致实际值重新初始化:
在执行这些功能前,请采取以下预防措施:
|
参数
下表列出了“关断延时”指令的参数:
参数 | 声明 | 数据类型 | 存储区 | 说明 | ||
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”操作数中。
---( TOF )---:启动关断延时定时器 |
说明
使用“启动关断延时定时器”指令启动将指定周期作为接通延时的 IEC 定时器。如果指令输入逻辑运算结果 (RLO) 的信号状态为“1”,则定时器的查询状态将返回信号状态“1”。当 RLO 从“1”变为“0”时(信号下降沿),启动 IEC 定时器一段指定的时间。只要 IEC 定时器正在计时,则定时器状态的信号状态将保持为“1”。定时器计时结束且指令输入 RLO 的信号状态为“0”时,定时器状态的信号状态将设置为“0”。如果 RLO 在计时结束之前变为“1”,则将复位 IEC 定时器同时定时器状态保持为信号状态“1”。
当前定时器状态将保存在 IEC 定时器的结构组件 Q 中。可以通过常开触点查询定时器状态“1”,或通过常闭触点查询定时器状态“0”。
在指令下方的 <操作数 1>(持续时间)中指定关断延时的持续时间,在指令上方的 <操作数 2>(IEC 时间)中指定将要开始的 IEC 时间。
“启动关断延时定时器”指令可以放置在程序段的中间或者末尾。它需要一个前导逻辑运算。
说明 可以启动和查询不同执行等级的 IEC 定时器,每次查询输出 Q 或 ET 时,都会更新 IEC_TIMER 的结构。 |
对于 S7-1200 CPU
“启动关断延时定时器”指令以数据类型为 IEC_TIMER 或 TOF_TIME 的结构存储其数据。可以如下声明此结构:
- 声明为一个系统数据类型为 IEC_TIMER 的数据块(例如,“MyIEC_TIMER”)
- 声明为块中“Static”部分的 TOF_TIME 或 IEC_TIMER 类型的局部变量(例如,#MyIEC_TIMER)
对于 S7-1500 CPU
“启动关断延时定时器”指令以数据类型为 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)
更新实例数据中的实际值
“启动关断延时定时器”中的实例数据根据以下规则更新:
- IN 输入
- “启动关断延时定时器”指令将当前 RLO 与保存在实例数据“IN”参数中上次查询的 RLO 进行比较。如果指令检测到 RLO 从“1”变为“0”,则说明出现了一个信号下降沿并开始进行时间测量。在“启动关断延时定时器”指令处理完毕后,IN 参数的值在实例数据中更新,并作为存储器位用于下次查询。
- 请注意,边沿检测将在其他功能写入或初始化“IN”参数的实际值时中断。
- PT 输入
- 当边沿在 IN 输入处改变时,PT 输入处的值将写入实例数据中的 PT 参数。
- Q 和 ET 输出
- Q 和 ET 输出的实际值在以下情况下更新:
- 当输出 ET 或 Q 互连时,调用该指令。
- 或
- 访问 Q 或 ET。
- 如果输出未互连并且还未被查询,则不更新 Q 和 ET 输出的当前时间值。即使在程序中跳过该指令,也不会对输出进行更新。
- “启动关断延时定时器”指令的内部参数用以计算 Q 和 ET 的时间值。请注意,时间测量将在其他功能写入或初始化指令的实际值时中断。
危险 | |
重新初始化实际值的危险 在时间测量时,重新初始化 IEC 定时器的实际值会破坏 IEC 定时器的功能。更改实际值可能会导致程序和实际过程之间不一致。这会对财产和人身造成造成严重损害。 以下功能可导致实际值重新初始化:
在执行这些功能前,请采取以下预防措施:
|
参数
下表列出了指令“启动关断延时定时器”的参数:
参数 | 声明 | 数据类型 | 存储区 | 说明 | |
S7-1200 | S7-1500 | ||||
<持续时间> | Input | TIME | TIME、LTIME | I、Q、M、D、L 或常量 | IEC 定时器运行的持续时间。 |
<IEC 定时器> | InOut | IEC_TIMER、TOF_TIME | IEC_TIMER、IEC_LTIMER、TOF_TIME、TOF_LTIME | D、L | 启动的 IEC 定时器。 |
有关有效数据类型的更多信息,请参见“另请参见”。
脉冲时序图
下图为此指令的脉冲时序图:
示例
只要定时器 #MyIEC_TIMER 仍在运行,定时器状态的查询 (#MyIEC_TIMER.Q) 就会返回信号状态“1”,同时置位操作数“Tag_Output”。如果定时器超时,且操作数“Tag_Input”的信号状态为“0”,则定时器状态查询将返回信号状态“0”。在定时器 #MyIEC_TIMER 计时结束之前,如果操作数 Tag_Input 的信号状态变为“1”,则复位定时器。操作数“Tag_Input”的信号状态为“1”时,定时器状态查询将返回信号状态“1”。
以下示例说明了该指令的工作原理:
当操作数“Tag_Input”的信号状态从“1”变为“0”时,执行“启动关断延时定时器”指令。#MyIEC_TIMER 定时器将持续运行操作数“TagTime”中存储的一段时间。
- 上一篇: 操作系统 : 按优先数调度算法实现处理器调度(C++)
- 下一篇: C++做的一个简单小程序,还很实用
猜你喜欢
- 2024-10-19 Python3 datetime模块指南:日期时间操作、时区管理与实战案例
- 2024-10-19 C++及数据结构复习笔记,类和对象很简单?为啥好多程序员还不会
- 2024-10-19 Linux时间和日期 linux 时间 表示方法
- 2024-10-19 C/C++的8种时间度量方式以及代码片段
- 2024-10-19 Python实战:使用 datetime模块处理时间日期的全方位指南
- 2024-10-19 C++编程的 42 条建议(四) c++编程100例
- 2024-10-19 mount with noatime - 合理关闭atime提高服务器性能
- 2024-10-19 linux下连续三次fork()——深度理解进程创建函数
- 2024-10-19 C函数time和clock的计时区别 c计时器函数
- 2024-10-19 win进程弹出Microsoft Visual C++ Runtime Library的解决办法
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)