说明
可以使用“时间累加器”指令来累加由参数 PT 设定的时间段内的时间值。参数 IN 的信号状态变为“1”时,执行该指令并且从 PT 设置的时间开始计时。时间 PT 计时过程中,如果 IN 参数信号状态为“1”,则记录的时间值将进行累加。累加后的时间将在参数 ET 中输出以供查询。达到时间 PT 时,参数 Q 的信号状态变为“1”。即使 IN 参数的信号状态变为“0”,Q 参数仍将保持置位为“1”。
不论参数 IN 的信号状态如何,参数 R 都将复位参数 ET 和 Q。
每次调用“时间累加器”指令,必须为其分配一个用于存储指令数据的 IEC 定时器。
在以下情况下将更新指令数据:
当输出 ET 或 Q 互连时,调用该指令。如果输出未互连,则不会更新输出 ET 中的当前时间值。
访问输出 Q 或 ET 时。
S7-1200 系列 CPU
IEC 定时器是一个 IEC_TIMER 或 TONR_TIME 数据类型的结构,可如下声明:
声明为一个系统数据类型为 IEC_TIMER 的背景数据块(例如,“MyIEC_TIMER_DB”)
声明为程序块的“Static”中数据类型为 TONR_TIME 的局部变量(例如,#MyIEC_TIMER_Instance)
S7-1500 系列 CPU:
IEC 定时器是一个 IEC_TIMER、IEC_LTIMER、TONR_TIME 或 TONR_LTIME 数据类型的结构,可如下声明:
声明为一个系统数据类型为 IEC_TIMER 或 IEC_LTIMER 的背景数据块(例如,“MyIEC_TIMER_DB”)
声明为程序块的“Static”中数据类型为 TONR_TIME 或 TONR_LTIME 的局部变量(例如,#MyIEC_TIMER_Instance)
IEC 定时器作为系统数据类型为 IEC_<定时器> 的背景数据块(共享 DB)
您可以按如下所示将 IEC 定时器声明为数据块:
IEC 定时器作为块接口的局部变量(多重实例)
您可以按如下所示将 IEC 定时器声明为局部变量:
#myLocal_Timer();
参数
下表列出了该指令的参数:
参数 | 声明 | 数据类型 | 存储区 | 说明 | |
---|---|---|---|---|---|
S7-1200 | S7-1500 | ||||
IN | Input | BOOL | BOOL | I、Q、M、D、L、P | 启动输入 |
R | Input | BOOL | BOOL | I、Q、M、D、L、P | 复位参数 ET 和 Q |
PT | Input | TIME | TIME、LTIME | I、Q、M、D、L、P |
时间记录的最长持续时间。 PT 参数的值必须为正数。 |
Q | Output | BOOL | BOOL | I、Q、M、D、L、P | 定时器 PT 内时间用完时,仍保持置位状态的操作数。 |
ET | Output | TIME | TIME、LTIME | I、Q、M、D、L、P | 累计的时间 |
脉冲时序图
下图为“时间累加器”指令的脉冲时序图:
示例
以下示例说明了该指令的工作原理:
SCL |
---|
"TONR_DB".TONR(IN := "Tag_Start", R := "Tag_Reset", PT := "Tag_PresetTime", Q => "Tag_Status", ET => "Tag_Time"); |
当“Tag_Start”操作数的信号状态从“0”变为“1”时,则 PT 参数指定的时间开始计时。当该时间值正在计时时,累加在 Tag_Start 操作数的信号状态为“1”时记录的时间值。累加得到的时间值将存储在“Tag_Time”操作数中。达到 PT 参数中指定的时间值时,“Tag_Status”操作数的信号状态将置位为“1”。当前时间值存储在“Tag_Time”操作数中。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !