PLC_博图系列☞基本指令“TON:生成接通延时“
文章目录
- PLC_博图系列☞基本指令“TON:生成接通延时“
- 背景介绍
- TON: 生成接通延时
- 说明
- 参数
- 脉冲时序图
- 示例
关键字:
PLC
、
西门子
、
博图
、
Siemens
、
TON
背景介绍
这是一篇关于
PLC
编程的文章,特别是关于西门子的博图软件。我并不是专业的PLC
编程人员,也不懂电路,所以如果你希望从这里学习PLC
编程技术,可能会有些失望。然而,因为工作需要,我开始了解PLC
编程,特别是西门子的博图软件,并记录了这些经验。随着我国工业4.0
的推进,相信会有更多的人从事类似的工作。如果这篇文章能对你有所帮助,欢迎点赞
和关注
我❥(^_-)。
TON: 生成接通延时
说明
可以使用“接通延时”指令,将输出 Q 的设置延迟由 PT 组态的时间。当输入 IN 的逻辑运算结果 (RLO) 从“0”变为“1”(信号上升沿)时,启动该指令。指令启动时,预设的时间 PT 即开始计时。超出时间 PT 之后,输出 Q 的信号状态将变为“1”。只要启动输入仍为“1”,输出 Q 就保持置位。启动输入的信号状态从“1”变为“0”时,将复位输出 Q。在启动输入检测到新的信号上升沿时,该定时器功能将再次启动。
可以在输出 ET 处查询到当前时间值。该定时器值从 T#0s 开始,在达到持续时间 PT 后结束。只要输入 IN 的信号状态变为“0”,输出 ET 就复位。如果在程序中未调用该指令(如,由于跳过该指令),则 ET 输出会在超出时间 PT 后立即返回一个常数值。
“接通延时”指令可以放置在程序段的中间或者末尾。它需要一个前导逻辑运算。
每次调用“接通延时”指令,必须将其分配给存储实例数据的 IEC 定时器。
对于 S7-1200 CPU
IEC 定时器是一个 IEC_TIMER 或 TON_TIME 数据类型的结构,可如下声明:
- 声明为一个系统数据类型为 IEC_TIMER 的数据块(例如,“MyIEC_TIMER”)
- 声明为块中“Static”部分的 TON_TIME 或 IEC_TIMER 类型的局部变量(例如,#MyIEC_TIMER)
对于 S7-1500 CPU
IEC 定时器是一个 IEC_TIMER、IEC_LTIMER、TON_TIME 或 TON_LTIME 数据类型的结构,可如下声明:
- 声明为一个系统数据类型为 IEC_TIMER 或 IEC_LTIMER 的数据块(例如,“MyIEC_TIMER”)
- 声明为块中“Static”部分的 TON_TIME、TON_LTIME、IEC_TIMER 或 IEC_LTIMER 类型的局部变量(例如,#MyIEC_TIMER)
在以下应用中,将更新该指令数据:
- 当输出 ET 或 Q 互连时,调用该指令。如果输出未互连,则不更新输出 ET 中的当前时间值。
- 访问 Q 或 ET 输出时。
更新实例数据中的实际值
“接通延时”中的实例数据根据以下规则更新:
- IN 输入
“接通延时”指令将当前 RLO 与保存在实例数据 IN 参数中上次查询的 RLO 进行比较。如果指令检测到 RLO 从“0”变为“1”,则说明出现了一个信号上升沿并开始进行时间测量。在“接通延时”指令处理完毕后,IN 参数的值在实例数据中更新,并作为存储器位用于下次查询。
请注意,边沿检测将在其他功能写入或初始化 IN 参数的实际值时中断。 - PT 输入
当边沿在 IN 输入处改变时,PT 输入处的值将写入实例数据中的 PT 参数。 - Q 和 ET 输出
Q 和 ET 输出的实际值在以下情况下更新:
- 当输出 ET 或 Q 互连时,调用该指令。
或 - 访问 Q 或 ET。
如果输出未互连并且还未被查询,则不更新 Q 和 ET 输出的当前时间值。即使在程序中跳过该指令,也不会对输出进行更新。
“接通延时”指令的内部参数用以计算 Q 和 ET 的时间值。请注意,时间测量将在其他功能写入或初始化指令的实际值时中断。
危险
**重新初始化实际值的危险 **
在时间测量时,重新初始化 IEC 定时器的实际值会破坏 IEC 定时器的功能。更改实际值可能会导致程序和实际过程之间不一致。这会对财产和人身造成造成严重损害。 以下功能可导致实际值重新初始化:
- 通过重新初始化加载块
- 将快照加载为实际值
- 控制或强制执行实际值
- “WRIT_DBL”指令
在执行这些功能前,请采取以下预防措施:
- 在覆盖实际值之前,应确保设备始终处于安全状态。
- 在初始化 IEC 定时器的实际值前,请确保定时器已计时结束。
- 如果使用快照覆盖实际值,请确保是在系统处于安全状态时拍摄的快照。
- 确保程序在传输期间不读写受影响的数据。
参数
下表列出了“接通延时”指令的参数:
参数 | 声明 | 数据类型 | 数据类型 | 存储区 | 存储区 | 说明 |
S7-1200 | S7-1500 | S7-1200 | S7-1500 | |||
IN | Input | BOOL | BOOL | I、Q、M、D、L 或常量 | I、Q、M、D、L、T、C、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” |
PT | Tag_PresetTime | T#10s |
Q | Tag_Status | FALSE;10 秒后变为 TRUE |
ET | Tag_ElapsedTime | T#0s => T#10s |
当“Tag_Start”操作数的信号状态从“0”变为“1”时,PT 参数预设的时间开始计时。超过该时间周期后,操作数“Tag_Status”的信号状态置位为“1”。只要操作数 Tag_Start 的信号状态为“1”,操作数 Tag_Status 就会保持置位为“1”。当前时间值存储在“Tag_ElapsedTime”操作数中。当操作数 Tag_Start 的信号状态从“1”变为“0”时,将复位操作数 Tag_Status。
**注:**以上部分内容来之博图V16帮助文档。