启动关断延时定时器(S7-1500) 说明 当逻辑运算结果 (RLO) 中检测到信号从“1”到“0”的变化(信号下降沿)时,“启动关断延时定时器”指令将启动已设定的定时器。定时器在指定的持续时间后计时结束。只要定时器正在运行,对定时器状态是否为“1”的查询将返回信号状态“1”。如果定时器在计时过程中 RLO 从 “0”变为“1”,则将复位定时器。只要RLO 从“1”变为“0”,定时器即会重新启动。 持续时间在内部由定时器值和时基构成。指令启动时,设定的定时器值将减计数到 0。时基表示定时器值更改的时间段。 如果在执行指令时,逻辑运算结果的信号状态为“1”,则查询定时器状态是否为“1”的查询结果将返回“1”。如果 RLO 为“0”,则查询定时器状态是否为“1”的查询结果将返回“0”。 在操作数占位符 <操作数1>(持续时间)中指定倒计时的时间,在指令上方的 <操作数 2> 中 指定将要开始的时间。“启动关断延时定时器”指令需要前导逻辑运算进行边沿评估,且只能放在程序段的右侧。 说明在时间单元,操作系统通过时基指定的间隔,以一个时间单位缩短时间值,直到该值为“0”。递减操作与用户程序不同步执行。因此,定时器中的值比预期的时基Zui多短一个时间间隔值。有关如何构造一个时间单元的示例,请参见“另请参见“L:加载定时器值”。操作数“TagIn_1”的信号状态从“1”变为“0”时,“Timer_1”启动。定时器在等于操作数“TagIn_Number”的定时器值时结束计时。只要定时器正在运行,操作数“TagOut”就置为“1”。如果操作数“TagIn_1”的信号状态在定时器计时期间从“1”变为“0”,则定时器将重新启动。如果操作数“TagIn_2”的信号状态为“1”,则“Timer_1”将复位,即定时器停止,同时当前时间值 将置“0”。下图为本示例的时序图:
计数器操作(S7-1200, S7-1500) CTU:加计数 (S7-1200, S7-1500) 说明 可以使用“加计数”指令,递增输出CV 的值。如果输入 CU 的信号状态从“0”变为“1”(信号 上升沿),则执行该指令,同时输出 CV 的当前计数器值加1。每检测到一个信号上升沿,计 数器值就会递增,直到达到输出 CV 中所指定数据类型的上限。达到上限时,输入 CU 的信号状态将不再影响该指令。 可以查询 Q 输出中的计数器状态。输出 Q 的信号状态由参数 PV 决定。如果当前计数器值大 于或等于参数PV 的值,则将输出 Q 的信号状态置位为“1”。在其它任何情况下,输出 Q 的 信号状态均为“0”。 输入 R的信号状态变为“1”时,输出 CV 的值被复位为“0”。只要输入 R 的信号状态仍为“1”,输 入 CU 的信号状态就不会影响该指令。说明 只需在程序中的某一位置处使用计数器,即可避免计数错误的风险。 每次调用“加计数”指令,都会为其分配一个 IEC计数器用于存储指令数据。IEC 计数器是 一种具有以下某种数据类型的结构:可以按如下方式声明 IEC 计数器: • 系统数据类型IEC_的数据块声明(例如,“MyIEC_COUNTER”) • 声明为块中“Static”部分的 CTU_或IEC_类型的局部变量(例如 #MyIEC_COUNTER) 如果在单独的数据块中设置 IEC计数器(单背景),则将默认使用“优化的块访 问”(optimized block access)创建背景数据块,并将各个变量定义为具有保持性。有关在背 景数据块中设置保持性的更多信息,请参见“另请参见”。如果在函数块中使用“优化的块访问”(optimized block access) 设置 IEC 计数器作为本地变量(多重背景),则其在块接口中定义为具有保持性。 执行“加计数”指令之前,需要事先预设一个逻辑运算。该运算可以放置在程序段的中间或者末尾。 当“TagIn_1”操作数的信号状态从“0”变为“1”时,将执行“加计数”指令,同时“Tag_CV”操作数的当前计数器值加 1。每检测到一个额外的信号上升沿,计数器值都会递增,直至达到该 数据类型的上限 (INT = 32767)。 PV参数的值作为确定“TagOut”输出的限制。只要当前计数器值大于或等于操作数“Tag_PV”的值,输出“TagOut”的信号状态就为“1”。在其它任何情况下,输出“TagOut”的信号状态均为 “0”。CTD:减计数(S7-1200, S7-1500) 说明 可以使用“减计数”指令,递减输出 CV 的值。如果输入 CD的信号状态从“0”变为“1”(信号 上升沿),则执行该指令,同时输出 CV 的当前计数器值减 1。每检测到一个信号上升沿,计数器值就会递减 1,直到达到指定数据类型的下限为止。达到下限时,输入 CD 的信号状态 将不再影响该指令。 可以查询 Q输出中的计数器状态。如果当前计数器值小于或等于“0”,则 Q 输出的信号状态 将置位为“1”。在其它任何情况下,输出 Q的信号状态均为“0”。 输入 LD 的信号状态变为“1”时,将输出 CV 的值设置为参数 PV 的值。只要输入 LD 的信号状态仍为“1”,输入 CD 的信号状态就不会影响该指令。 说明 只需在程序中的某一位置处使用计数器,即可避免计数错误的风险。每次调用“减计数”指令,都会为其分配一个 IEC 计数器用于存储指令数据。IEC 计数器是一种具有以下某种数据类型的结构。可以按如下方式声明 IEC 计数器: • 系统数据类型IEC_的数据块声明(例如,“MyIEC_COUNTER”) • 声明为块中“Static”部分的 CTD_或IEC_类型的局部变量(例如 #MyIEC_COUNTER) 如果在单独的数据块中设置 IEC计数器(单背景),则将默认使用“优化的块访 问”(optimized block access)创建背景数据块,并将各个变量定义为具有保持性。有关在背 景数据块中设置保持性的更多信息,请参见“另请参见”。如果在函数块中使用“优化的块访问”(optimized block access) 设置 IEC 计数器作为本地变量(多重背景),则其在块接口中定义为具有保持性。 执行“减计数”指令之前,需要事先预设一个逻辑运算。该运算可以放置在程序段的中间或者末尾。 CTUD:加减计数 (S7-1200, S7-1500) 说明 可以使用“加减计数”指令,递增和递减输出 CV的计数器值。如果输入 CU 的信号状态从“0” 变为“1”(信号上升沿),则当前计数器值加 1 并存储在输出 CV 中。如果输入 CD的信号状 态从“0”变为“1”(信号上升沿),则输出 CV 的计数器值减 1。如果在一个程序周期内,输入 CU 和 CD都出现信号上升沿,则输出 CV 的当前计数器值保持不变。 计数器值可以一直递增,直到其达到输出 CV处指定数据类型的上限。达到上限后,即使出 现信号上升沿,计数器值也不再递增。达到指定数据类型的下限后,计数器值便不再递减。 输入 LD的信号状态变为“1”时,将输出 CV 的计数器值置位为参数 PV 的值。只要输入 LD 的 信号状态仍为“1”,输入 CU 和 CD的信号状态就不会影响该指令。 当输入 R 的信号状态变为“1”时,将计数器值置位为“0”。只要输入 R 的信号状态仍为“1”,输 入CU、CD 和 LD 信号状态的改变就不会影响“加减计数”指令。 可以在 QU输出中查询加计数器的状态。如果当前计数器值大于或等于参数 PV 的值,则将 输出 QU 的信号状态置位为“1”。在其它任何情况下,输出QU 的信号状态均为“0”。 可以在 QD 输出中查询减计数器的状态。如果当前计数器值小于或等于“0”,则 QD 输出的信号状态将置位为“1”。在其它任何情况下,输出 QD 的信号状态均为“0”。 说明只需在程序中的某一位置处使用计数器,即可避免计数错误的风险。 每次调用“加减计数”指令,都会为其分配一个 IEC计数器用来存储指令数据。IEC 计数器 是一种具有以下某种数据类型的结构:可以按如下方式声明 IEC 计数器: • 系统数据类型IEC_的数据块声明(例如,“MyIEC_COUNTER”) • 声明为块中“Static”部分的 CTUD_或IEC_类型的局部变量(例如 #MyIEC_COUNTER) 如果在单独的数据块中设置 IEC计数器(单背景),则将默认使用“优化的块访 问”(optimized block access)创建背景数据块,并将各个变量定义为具有保持性。有关在背 景数据块中设置保持性的更多信息,请参见“另请参见”。如果在函数块中使用“优化的块访问”(optimized block access) 设置 IEC 计数器作为本地变量(多重背景),则其在块接口中定义为具有保持性。 执行“加减计数”指令之前,需要事先预设一个逻辑运算。该运算可以放置在程序段的中间或者末尾。 如果输入“TagIn_1”或“TagIn_2”的信号状态从“0”变为“1”(信号上升沿),则执行“加减计数”指令。输入“TagIn_1”出现信号上升沿时,当前计数器值加 1 并存储在输出“Tag_CV”中。输入“TagIn_2”出现信号上升沿时,计数器值减 1 并存储在输出“Tag_CV”中。输入 CU 出现信号上升沿时,计数器值将递增,直至其达到上限值 32767。输入 CD 出现信号上升沿时,计 数器值将递减,直至其达到下限 (INT =-32768)。 只要当前计数器值大于或等于“Tag_PV”输入的值,“TagOut”输出的信号状态就为“1”。在其它任何情况下,输出“TagOut”的信号状态均为“0”。 只要当前计数器值小于或等于0,“TagOut_QD”输出的信号状态就为“1”。在其它任何情况下, 输出“TagOut_QD”的信号状态均为“0”。有关以上示例中编程代码的更多信息,请参见“Sample Library for Instructions