lad
tp:生成脉冲
使用“ 生成脉冲 ”(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
当前时间值
脉冲时序图
下图显示了“ 生成脉冲 ”指令的脉冲图:
实例
以下示例说明了该指令的工作原理:
下表将通过具体的操作数值对该指令的工作原理进行说明:
参数
操作数
值
in
tag_start
信号跃迁“0”=>“1”
pt
tag_presettime
t#10s
q
tag_status
true
et
tag_elapsedtime
t#0s => t#10s
当“ tag_start ”操作数的信号状态从“0”变为“1”时, pt 参数预设的时间开始计时,且“ tag_status ”操作数将设置为“1”。当前时间值存储在“ tag_elapsedtime ”操作数中。定时器计时结束时,操作数“ tag_status ”的信号状态复位为“0”。
ton:生成接通延时
可以使用“ 生成接通延时 ”(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
当前时间值
脉冲时序图
实例
以下示例说明了该指令的工作原理:
下表将通过具体的操作数值对该指令的工作原理进行说明:
参数
操作数
值
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 。
tof:生成关断延时
可以使用“ 生成关断延时 ”(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 输出时。
执行“ 关断延时 ”指令之前,需要事先预设一个逻辑运算。该运算可以放置在程序段的中间或者末尾。
参数
下表列出了“ 关断延时 ”指令的参数:
参数
声明
数据类型
存储区
说明
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 ”操作数中。
tonr:时间累加器
可以使用“ 时间累加器 ”指令来累加由参数 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 输出时。
执行“ 时间累加器 ”指令之前,需要事先预设一个逻辑运算。该运算可以放置在程序段的中间或者末尾。
参数
下表列出了“ 时间累加器 ”指令的参数:
参数
声明
数据类型
存储区
说明
s7-1200
s7-1500
s7-1200
s7-1500
in
input
bool
bool
i、q、m、d、l
i、q、m、d、l、p
启动输入
r
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”
pt
tag_presettime
t#10s
q
tag_status
false;10 秒后变为 true
et
tag_elapsedtime
信号跃迁“0”=>“1”
时间 t#10s 超出。
5 秒后发生信号跃迁“1”=>“0”:
操作数“ tag_elapsedtime ”中的时间仍在 t#5s 中计时。
大约 2 秒后重新发生信号跃迁“1”=>“0”:
操作数“ tag_elapsedtime ”中的时间继续在 t#5s 中计时。
当“ 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 ”操作数中。
( tp )---:启动脉冲定时器
使用“ 启动脉冲定时器 ”指令启动将指定周期作为脉冲的 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”。
执行“ 启动脉冲定时器 ”指令,需要有一个前导逻辑运算。它只能放置在程序段的末端。
参数
下表列出了“ 启动脉冲定时器 ”指令的参数:
参数
声明
数据类型
存储区
说明
s7-1200
s7-1500
<持续时间>
input
time
time 、 ltime
i、q、m、d、l 或常数
iec 定时器运行的持续时间。
<iec 定时器>
inout
iec_timer 、 tp_time
iec_timer 、 iec_ltimer 、 tp_time 、tp_ltime
d、l
启动的 iec 定时器。
有关有效数据类型的更多信息,请参见“另请参见”。
示例
以下示例说明了该指令的工作原理:
( ton )---:启动接通延时定时器
使用“ 启动接通延时定时器 ”指令启动将指定周期作为接通延时的 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”。
执行“ 启动接通延时定时器 ”指令,需要有一个前导逻辑运算。它只能放置在程序段的末端。
参数
下表列出了指令“ 启动接通延时定时器 ”的参数:
参数
声明
数据类型
存储区
说明
s7-1200
s7-1500
<持续时间>
input
time
time 、 ltime
i、q、m、d、l 或常数
iec 定时器运行的持续时间。
<iec 定时器>
inout
iec_timer 、 ton_time
iec_timer 、 iec_ltimer 、 ton_time 、ton_ltime
d、l
启动的 iec 定时器。
有关有效数据类型的更多信息,请参见“另请参见”。
( tof )---:启动关断延时定时器
( tonr )---:时间累加器
( rt )---:复位定时器
( pt )---:加载持续时间
传统