西门子plc定时器指令操作

2018年9月14日15:53:41 发表评论 9,236 阅读

LAD

使用“ 生成脉冲 ”(Generate pulse) 指令,可以将输出 Q 置位为预设的一段时间。当输入 IN 的逻辑运算结果 ( RLO ) 从“0”变为“1”(信号上升沿)时,启动该指令。指令启动时,预设的时间 PT 即开始计时。无论后续输入信号的状态如何变化,都将输出 Q 置位由 PT 指定的一段时间。 PT 持续时间正在计时时,即使检测到新的信号上升沿,输出 Q 的信号状态也不会受到影响。

可以扫描 ET 输出处的当前时间值。该定时器值从 T#0s 开始,在达到持续时间值 PT 后结束。如果 PT 时间用完且输入 IN 的信号状态为“0”,则复位 ET 输出。每次调用“ 生成脉冲 ”指令,都会为其分配一个 IEC 定时器用于存储指令数据。

说明

如果程序中未调用定时器(例如,由于跳过定时器而导致),则输出 ET 会在定时器计时结束后立即返回一个常数值。

对于S7-1200CPU

IEC 定时器是一个 IEC_TIMER 或 TP_TIME 数据类型的结构,可如下声明:声明为一个系统数据类型为 IEC_TIMER 的数据块(例如,“ MyIEC_TIMER ”)声明为块中“ Static ”部分的 TP_TIME 、 TP_LTIME 或 IEC_TIMER 类型的局部变量(例如, #MyIEC_TIMER )

对于S7-1200CPU

IEC 定时器是一个 IEC_TIMER 、 IEC_LTIMER 、 TP_TIME 或 TP_LTIME 数据类型的结构,可如下声明:声明为一个系统数据类型为 IEC_TIMER 或 IEC_LTIMER 的数据块(例如,“ MyIEC_TIMER ”)
声明为块中“ Static ”部分的 TP_TIME 、 TP_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
脉冲输出
​ET
​Output
​TIME
TIME 、 LTIME
I、Q、M、D、L
I、Q、M、D、L、P
当前时间值

脉冲时序图

下图显示了“ 生成脉冲 ”指令的脉冲图:

实例

以下示例说明了该指令的工作原理:

下表将通过具体的操作数值对该指令的工作原理进行说明:
当“ Tag_Start ”操作数的信号状态从“0”变为“1”时, PT 参数预设的时间开始计时,且“ Tag_Status ”操作数将设置为“1”。当前时间值存储在“ Tag_ElapsedTime ”操作数中。定时器计时结束时,操作数“ Tag_Status ”的信号状态复位为“0”。

可以使用“ 生成接通延时 ”(Generate on-delay) 指令将 Q 输出的设置延时设定的时间 PT 。当输入 IN 的逻辑运算结果 ( RLO ) 从“0”变为“1”(信号上升沿)时,启动该指令。指令启动时,预设的时间 PT 即开始计时。超出时间 PT 之后,输出 Q 的信号状态将变为“1”。只要启动输入仍为“1”,输出 Q 就保持置位。启动输入的信号状态从“1”变为“0”时,将复位输出 Q 。在启动输入检测到新的信号上升沿时,该定时器功能将再次启动。

可以在 ET 输出查询当前的时间值。该定时器值从 T#0s 开始,在达到持续时间值 PT 后结束。只要输入 IN 的信号状态变为“0”,输出 ET 就复位。
每次调用“ 接通延时 ”指令,必须将其分配给存储指令数据的 IEC 定时器。

说明

如果程序中未调用定时器(例如,由于跳过定时器而导致),则输出 ET 会在定时器计时结束后立即返回一个常数值。

对于S7-1200CPU

IEC 定时器是一个 IEC_TIMER 或 TON_TIME 数据类型的结构,可如下声明:

  • 声明为一个系统数据类型为 IEC_TIMER 的数据块(例如,“ MyIEC_TIMER ”)
  • 声明为块中“ Static ”部分的 TON_TIME 或 IEC_TIMER 类型的局部变量(例如#MyIEC_TIMER )
对于S7-1500CPU
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 输出时。
执行“ 接通延时 ”指令之前,需要事先预设一个逻辑运算。该运算可以放置在程序段的中间或者末尾。
参数
下表列出了“ 接通延时 ”指令的参数:
参数
声明
数据类型
存储区
说明
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
当前时间值

脉冲时序图

实例

以下示例说明了该指令的工作原理:

下表将通过具体的操作数值对该指令的工作原理进行说明:
当“ Tag_Start ”操作数的信号状态从“0”变为“1”时, PT 参数预设的时间开始计时。超过该时间周期后,操作数“ Tag_Status ”的信号状态将置“1”。只要操作数 Tag_Start 的信号状态为“1”,操作数 Tag_Status 就会保持置位为“1”。当前时间值存储在“ Tag_ElapsedTime ”操作数中。当操作数 Tag_Start 的信号状态从“1”变为“0”时,将复位操作数 Tag_Status 。

可以使用“ 生成关断延时 ”(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 。
对于“ 生成关断延时 ”(Generate off-delay) 指令的每次调用,必须将其分配给用于存储指令数据的 IEC 定时器。
说明

如果程序中未调用定时器(例如,由于跳过定时器而导致),则输出 ET 会在定时器计时结束后立即返回一个常数值。

对于S7-1200CPU

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 输出时。

执行“ 关断延时 ”指令之前,需要事先预设一个逻辑运算。该运算可以放置在程序段的中间或者末尾。

参数

下表列出了“ 关断延时 ”指令的参数:

脉冲时序图
下表将通过具体的操作数值对该指令的工作原理进行说明:
当操作数“ Tag_Start ”的信号状态从“0”变为“1”时,操作数“ Tag_Status ”的信号状态将置位为“1”。当“ Tag_Start ”操作数的信号状态从“1”变为“0”时, PT 参数预设的时间将开始计时。只要该时间仍在计时,“ Tag_Status ”操作数就会保持置位为 TRUE 。该时间计时完毕后,“ Tag_Status ”操作数将复位为 FALSE 。当前时间值存储在“ Tag_ElapsedTime ”操作数中。

可以使用“ 时间累加器 ”指令来累加由参数 PT 设定的时间段内的时间值。输入 IN 的信号状态从“0”变为“1”(信号上升沿)时,将执行该指令,同时时间值 PT 开始计时。当 PT 正在计时时,加上在 IN 输入的信号状态为“1”时记录的时间值。累加得到的时间值将写入到输出 ET 中,并可以在此进行查询。持续时间 PT 计时结束后,输出 Q 的信号状态为“1”。即使 IN 参数的信号状态从“1”变为“0”(信号下降沿), Q 参数仍将保持置位为“1”。
无论启动输入的信号状态如何,输入 R 都将复位输出 ET 和 Q 。
每次调用“ 时间累加器 ”指令,必须为其分配一个用于存储指令数据的 IEC 定时器。

对于 S7-1200 CPU

IEC 定时器是一个 IEC_TIMER 或 TONR_TIME 数据类型的结构,可如下声明:
声明为一个系统数据类型为 IEC_TIMER 的数据块(例如,“ MyIEC_TIMER ”)
声明为块中“ Static ”部分的 TONR_TIME 或 IEC_TIMER 类型的局部变量(例如, #MyIEC_TIMER )

对于 S7-1500 CPU

IEC 定时器是一个 IEC_TIMER 、 IEC_LTIMER 、 TONR_TIME 或 TONR_LTIME 数据类型的结构,可如下声明:

声明为一个系统数据类型为 IEC_TIMER 或 IEC_LTIMER 的数据块(例如,“ MyIEC_TIMER ”)
声明为块中“ Static ”部分的 TONR_TIME 、 TONR_LTIME 、 IEC_TIMER 或 IEC_LTIMER 类型的局部变量(例如, #MyIEC_TIMER )

在以下应用中,将更新该指令数据:
当输出 ET 或 Q 互连时,调用该指令。如果输出未互连,则不更新输出 ET 中的当前时间值。
访问 Q 或 ET 输出时。
执行“ 时间累加器 ”指令之前,需要事先预设一个逻辑运算。该运算可以放置在程序段的中间或者末尾。

参数

下表列出了“ 时间累加器 ”指令的参数:

脉冲时序图
下表将通过具体的操作数值对该指令的工作原理进行说明:
当“ Tag_Start ”操作数的信号状态从“0”变为“1”时, PT 参数预设的时间开始计时。只要操作数“ Tag_Start ”的信号状态为“1”,该时间就继续计时。当操作数“ Tag_Start ”的信号状态从“1”变为“0”时,计时将停止,并记录操作数 Tag_ElapsedTime 中的当前时间值。当操作数“ Tag_Start ”的信号状态从“0”变为“1”时,将继续从发生信号跃迁“1”到“0”时记录的时间值开始计时。达到 PT 参数中指定的时间值时,“ Tag_Status ”操作数的信号状态将置位为“1”。当前时间值存储在“ Tag_ElapsedTime ”操作数中。

使用“ 启动脉冲定时器 ”指令启动将指定周期作为脉冲的 IEC 定时器。逻辑运算结果 ( RLO ) 从“0”变为“1”(信号上升沿)时,将启动 IEC 定时器。无论 RLO 之后会发生如何变化,IEC 定时器都将运行指定的一段时间。检测到新的信号上升沿也不会影响该 IEC 定时器的运行。只要 IEC 定时器正在计时,对定时器状态是否为“1”的查询就会返回信号状态“1”。当 IEC 定时器计时结束之后,定时器的状态将返回信号状态“0”。

说明

可以启动和查询不同执行等级的 IEC 定时器,每次查询输出 Q 或 ET 时,都会更新 IEC_TIMER 的结构。

对于 S7-1200 CPU

“ 启动脉冲定时器 ”指令以数据类型为 IEC_TIMER 或 TP_TIME 的结构存储其数据。可以如下声明此结构:

声明为一个系统数据类型为 IEC_TIMER 的数据块(例如,“ MyIEC_TIMER ”)声明为块中“ Static ”部分的 TP_LTIME 或 IEC_TIMER 类型的局部变量(例如, #MyIEC_TIMER )

对于 S7-1500 CPU

“ 启动脉冲定时器 ”指令以数据类型为 IEC_TIMER 、 IEC_LTIMER 、 TP_TIME 或 TP_LTIME 的结构存储其数据。可以如下声明此结构:

声明为一个系统数据类型为 IEC_TIMER 或 IEC_LTIMER 的数据块(例如,“ MyIEC_TIMER ”)
声明为块中“ Static ”部分的 TP_TIME 、 TP_LTIME 、 IEC_TIMER 或 IEC_LTIMER 类型的局部变量(例如, #MyIEC_TIMER )在以下应用中,将更新该指令数据:调用该指令时,更新 IEC_Timer 结构。只有对 ET 或 Q 输出(例如," MyTimer ". Q 或 " MyTimer ". ET )进行了扫描,才会更新 ET 输出中的时间值。

访问所指定的定时器时。

当前定时器状态将保存在 IEC 定时器的结构组件 Q 中。可以通过常开触点查询定时器状态“1”,或通过常闭触点查询定时器状态“0”。

执行“ 启动脉冲定时器 ”指令,需要有一个前导逻辑运算。它只能放置在程序段的末端。

参数
下表列出了“ 启动脉冲定时器 ”指令的参数:

有关有效数据类型的更多信息,请参见“另请参见”。
示例
以下示例说明了该指令的工作原理:

使用“ 启动接通延时定时器 ”指令启动将指定周期作为接通延时的 IEC 定时器。逻辑运算结果 ( RLO ) 从“0”变为“1”(信号上升沿)时,将启动 IEC 定时器。IEC 定时器运行一段指定的时间。如果该指令输入处 RLO 的信号状态为“1”,则输出的信号状态将为“1”。如果 RLO 在定时器计时结束之前变为“0”,则复位 IEC 定时器。此时,查询状态为“1”的定时器将返回信号状态“0”。在该指令的输入处检测到下个信号上升沿时,将重新启动 IEC 定时器。

说明

可以启动和查询不同执行等级的 IEC 定时器,每次查询输出 Q 或 ET 时,都会更新 IEC_TIMER 的结构。

对于 S7-1200 CPU

“ 启动接通延时定时器 ”指令以数据类型为 IEC_TIMER 或 TON_TIME 的结构存储其数据。可以如下声明此结构:

声明为一个系统数据类型为 IEC_TIMER 的数据块(例如,“ MyIEC_TIMER ”)

声明为块中“ Static ”部分的 TON_TIME 或 IEC_TIMER 类型的局部变量(例如, #MyIEC_TIMER )

对于 S7-1500 CPU

“ 启动接通延时定时器 ”指令以数据类型为 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 )在以下应用中,将更新该指令数据:
调用该指令时,更新 IEC_Timer 结构。只有对 ET 或 Q 输出(例如," MyTimer ". Q 或 " MyTimer ". ET )进行了扫描,才会更新 ET 输出中的时间值。

访问所指定的定时器时。

当前定时器状态将保存在 IEC 定时器的结构组件 ET 中。可以通过常开触点查询定时器状态“1”,或通过常闭触点查询定时器状态“0”。

执行“ 启动接通延时定时器 ”指令,需要有一个前导逻辑运算。它只能放置在程序段的末端。

参数

下表列出了指令“ 启动接通延时定时器 ”的参数:

有关有效数据类型的更多信息,请参见“另请参见”。
weinxin
plc入门知识问答
所有PLC工程师都会关注的微信公众账号,只需输入您的问题,就会有答案

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: