TONR:时间累加器 (S7-1200, S7-1500) 说明 可以使用“时间累加器”指令来累加由参数 PT 设定的时间段内的时间值。参数 IN 的信号状 态变为“1”时,将执行时间测量,同时时间 PT 开始计时。时间 PT 计时过程中,如果 IN 参数 信号状态为“1”,则记录的时间值将进行累加。如果“IN”输入处的信号状态变为“0”,时间测量 将中断。如果“IN”输入处的信号状态重新变为“1”,时间测量将重新开始。累加后的时间将在 参数 ET 中输出以供查询。达到时间 PT 时,参数 Q 的信号状态变为“1”。即使 IN 参数的信号 状态变为“0”,Q 参数仍将保持置位为“1”。 不论参数 IN 的信号状态如何,参数 R 都将复位参数 ET 和 Q。 每次调用“时间累加器”指令,必须为其分配一个用于存储实例数据的 IEC 定时器。 有关在结构(多重实例)中调用 IEC 定时器的信息,请参见“调用 IEC 定时器 (页 2017)”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 定时器声明为数据块:.TONR(); IEC 定时器作为块接口的局部变量(多重实例) 您可以按如下所示将 IEC 定时器声明为局部变量: #myLocal_Timer(); 更新实例数据中的实际值 “时间累加器”中的实例数据根据以下规则更新: • IN 输入 “时间累加器”指令将当前 RLO 与保存在实例数据 IN 参数中上次查询的 RLO 进行比较。如 果指令检测到 RLO 从“0”变为“1”,则说明出现了一个信号上升沿并继续进行时间测量。如 果 RLO 中的指令检测到从“1”到“0”的变化,则说明出现了一个信号下降沿并且会中断时间 测量。在“时间累加器”指令处理完毕后,IN 参数的值在实例数据中更新,并作为存储 器位用于下次查询。 请注意,边沿检测将在其他功能写入或初始化 IN 参数的实际值时中断。 • PT 输入 当边沿在 IN 输入处改变时,PT 输入处的值将写入实例数据中的 PT 参数。 • R 输入 输入 R 处的信号“1”将复位并阻断时间测量。IN 输入处的边沿会被忽略。输入 R 处的信号“0” 将再次启用时间测量。
• Q 和 ET 输出 Q 和 ET 输出的实际值在以下情况下更新: – 当输出 ET 或 Q 互连时,调用该指令。 或 – 访问 Q 或 ET。 如果输出未互连并且还未被查询,则不更新 Q 和 ET 输出的当前时间值。即使在程序中跳 过该指令,也不会对输出进行更新。 “时间累加器”指令的内部参数用以计算 Q 和 ET 的时间值。请注意,时间测量将在其他 功能写入或初始化指令的实际值时中断。重新初始化实际值的危险 在时间测量时,重新初始化 IEC 定时器的实际值会破坏 IEC 定时器的功能。更改实际值可 能会导致程序和实际过程之间不一致。这会对财产和人身造成造成严重损害。 以下功能可导致实际值重新初始化: • 通过重新初始化加载块 • 将快照加载为实际值 • 控制或强制执行实际值 • “WRIT_DBL”指令 在执行这些功能前,请采取以下预防措施: • 在覆盖实际值之前,应确保设备始终处于安全状态。 • 在初始化 IEC 定时器的实际值前,请确保定时器已计时结束。 • 如果使用快照覆盖实际值,请确保是在系统处于安全状态时拍摄的快照。 • 确保程序在传输期间不读写受影响的数据。当“Tag_Start”操作数的信号状态从“0”变为“1”时,PT 参数预设的时间开始计时。当该时间值 正在计时时,累加在 Tag_Start 操作数的信号状态为“1”时记录的时间值。累加得到的时间值 将存储在“Tag_Time”操作数中。达到 PT 参数中指定的时间值时,“Tag_Status”操作数的信号 状态将置位为“1”。当前时间值存储在“Tag_Time”操作数中。RESET_TIMER:复位定时器 (S7-1200, S7-1500) 说明 使用“复位定时器”指令,可将 IEC 定时器复位为“0”。将指定数据块中定时器的结构组件复 位为“0”。 实际值的更新 该指令不会影响 RLO。在 TIMER 参数中,将“复位定时器”指令分配给程序中所声明的 IEC 定时器。该指令必须在 IF 指令中编程。只有在调用指令时才更新指令数据,而不是每次都 访问分配的 IEC 定时器。只有在指令的当前调用到下一次调用期间,数据查询的结果才相同。 危险 重新初始化实际值的危险 在定时器运行时,重新初始化 IEC 定时器的实际值会破坏 IEC 定时器的功能。更改实际值 可能会导致程序和实际过程之间不一致。这会对财产和人身造成造成严重损害。 以下功能可导致实际值重新初始化: • 通过重新初始化加载块 • 将快照加载为实际值 • 控制或强制执行实际值 • “WRIT_DBL”指令 在执行这些功能前,请采取以下预防措施: • 在覆盖实际值之前,应确保设备始终处于安全状态。 • 在初始化 IEC 定时器的实际值前,请确保定时器已计时结束。 • 如果使用快照覆盖实际值,请确保是在系统处于安全状态时拍摄的快照。 • 确保程序在传输期间不读写受影响的数据。当变量 #started 的信号状态为“0”时,则在操作数“Tag_Start”上出现信号上升沿时执行“接 通延时”指令。存储在背景数据块“TON_DB”中的 IEC 定时器启动,持续操作数 “Tag_PresetTime”中已指定的一段时间。// 如果超出“Tag_PresetTime”操作数中指定的持续时 间,则置位操作数 Tag_Status。// 只要操作数“Tag_Start”的信号状态为“1”,则参数 Q 将保持 置位。启动输入的信号状态从“1”变为“0”时,复位参数 Q 的操作数。 如果 IEC 定时器“TON_DB”的超出时间小于 25s,则执行“复位定时器”指令,并复位存储在 “TON_DB”背景数据块中的定时器。PRESET_TIMER:加载持续时间 (S7-1200, S7-1500) 说明 可以使用“加载持续时间”指令为 IEC 定时器设置时间。如果该指令输入逻辑运算结果 (RLO) 的信号状态为“1”,则每个周期都执行该指令。 可以将在程序中声明的 IEC 定时器赋给“加载持续时间”指令。该指令将指定时间写入指定 IEC 定时器的结构中。 该指令不会影响 RLO。 说明 如果在指令执行时指定 IEC 定时器正在计时,指令将覆盖该指定 IEC 定时器的当前值。这将 更改 IEC 定时器的定时器状态。实际值的更新 只有在调用指令时才更新指令数据,而且每次都访问分配的 IEC 定时器。查询 Q 或 ET 时(例 如“MyTimer”.Q 或“MyTimer”.ET),将更新 IEC_TIMER 的结构。 危险 重新初始化实际值的危险 在定时器运行时,重新初始化 IEC 定时器的实际值会破坏 IEC 定时器的功能。更改实际值 可能会导致程序和实际过程之间不一致。这会对财产和人身造成造成严重损害。 以下功能可导致实际值重新初始化: • 通过重新初始化加载块 • 将快照加载为实际值 • 控制或强制执行实际值 • “WRIT_DBL”指令 在执行这些功能前,请采取以下预防措施: • 在覆盖实际值之前,应确保设备始终处于安全状态。 • 在初始化 IEC 定时器的实际值前,请确保定时器已计时结束。 • 如果使用快照覆盖实际值,请确保是在系统处于安全状态时拍摄的快照。 • 确保程序在传输期间不读写受影响的数据。当变量 #started 的信号状态为“0”时,则在操作数“Tag_Start”上出现信号上升沿时执行“接 通延时”指令。存储在背景数据块“TON_DB”中的 IEC 定时器启动,持续操作数 “Tag_PresetTime”中已指定的一段时间。// 如果超出“Tag_PresetTime”操作数中指定的持续时 间 PT,则置位操作数 Tag_Status。// 只要操作数“Tag_Start”的信号状态为“1”,则参数 Q 将 保持置位。启动输入的信号状态从“1”变为“0”时,复位参数 Q 的操作数。 当 IEC 定时器“TON_DB”的超出时间小于 10s,且变量 #preset 的信号状态为“1”时,执行“加 载持续时间”指令。该指令将参数 PT 处指定的持续时间写入背景数据块“TON_DB”中,因此 将覆盖背景数据块中操作数“Tag_PresetTime”的时间值。因此,在下一次查询或访问 “TON_DB”.Q 或“TON_DB”.ET 时,定时器状态的信号状态可能会发生变化。
传统 (S7-1500) S_PULSE:分配脉冲定时器参数并启动 (S7-1500) 说明 当检测到参数 S 的逻辑运算结果 (RLO) 从“0”到“1”的变化(信号上升沿)时,“分配脉冲定 时器参数并启动”指令开始计时参数 T_NO 中预设的一段时间。只要 S 参数的信号状态为“1”, 定时器便将运行一段预设的时间 (TV)。 当参数 S 的信号状态在超出预设的时间之前变为“0”时,定时器停止计时,同时“Q”参数复位为 “0”。 在内部此时间包括一个时间值和一个时间基准,并在参数 TV 中进行设定。指令启动时,编 程的时间值减计数到 0。时间基准指定时间值更改时的时间增量。通过参数 BI 提供当前时间 值。如果定时器正在计时且输入端 R 的信号状态变为 “1”,则当前时间值和时间基准也将设置为 0。 如果定时器未在计时,则输入 R 的信号状态为“1”不会有任何作用。 只要定时器正在计时且参数 S 的信号状态为“1”,参数 Q 就将返回信号状态“1”。当参数 S 的 信号状态在超出预设的时间之前变为“0”时,则“Q”参数将返回信号状态“0”。如果定时器通过 参数 R 复位或超时,则参数 Q 也将返回信号状态“0”。 每次访问都更新指令数据。因此,周期开始时与周期结束时的数据查询可能会返回不同的值。 说明 在时间单元,操作系统通过时基指定的间隔,以一个时间单位缩短时间值,直到该值为“0”。 递减操作与用户程序不同步执行。因此,定时器中的值比预期的时基Zui多短一个时间间隔值。 以下给出了如何构造时间单元的一个示例:另请参见“L:加载定时器值”。操作数“Tag_1”的信号状态从“0”变为“1”时,“Timer_1”启动。定时器使用操作数“Tag_Number” 的时间值进行减计数,直到操作数 Tag_1 返回信号状态”1“。 如果 S 参数的信号状态在超出预设的时间之前变为“0”,则操作数 Tag_Status 将复位为“0”。 如果定时器由 R 参数复位或定时器已超时,则操作数 Tag_Status 也将返回信号状态“0”。