首页 历史故事STEP 7中三种计数器详解及使用要点

STEP 7中三种计数器详解及使用要点

【摘要】:STEP 7中的计数器有三类:加计数器CTU、减计数器CTD和加减计数器CTUD。图5-23a中,“%DB5”表示计数器的背景数据块,CTU表示为加计数器,图中,计数值数据类型是无符号整数,预设值PV=3。如果参数LOAD的值从0变为1,则参数PV(预设值)的值将作为新的CV装载到计数器。需要注意的是,S7-1200 PLC的计数器指令使用的是软件计数器,软件计数器的最大计数速率受其所在的OB的执行速率限制。

STEP 7中的计数器有三类:加计数器CTU、减计数器CTD和加减计数器CTUD。与定时器类似,使用S7-1200的计数器需要注意的是,每个定时器都使用一个存储在数据块中的结构来保存计数器数据,即3.3.5节所述系统数据类型。在程序编辑器中放置计数器指令时即可分配该数据块,可以采用默认设置,也可以手动自行设置。

使用计时器需要设置计数器的计数数据类型,计数值的数值范围取决于所选的数据类型。如果计数值是无符号整型数,则可以减计数到零或加计数到范围限值。如果计数值是有符号整数,则可以减计数到负整数限值或加计数到正整数限值。支持的数据类型包括SInt、Int、DInt、USInt、UInt、UDInt等。

1.加计数器

加计数器如图5-23a所示,图5-23b为其时序图。图5-23a中,“%DB5”表示计数器的背景数据块,CTU表示为加计数器,图中,计数值数据类型是无符号整数,预设值PV=3。由图5-23b可得到其工作原理如下。

输入参数CU(Count Up)的值从0变为1(上升沿)时,加计数器的当前计数值CV加1。如果参数CV(当前计数值)的值大于或等于参数PV(预设计数值)的值,则计数器输出参数Q=1。如果复位参数R的值从0变为1,则当前计数值复位为0,输出Q也为0。

978-7-111-34922-8-Chapter05-25.jpg

图5-23 加计数器及其时序图

a)加计数器 b)时序图

打开计数器的背景数据块,可以看到其结构含义如图5-24所示,其他计数器的背景数据块也是类似,不再赘述。

978-7-111-34922-8-Chapter05-26.jpg

图5-24 计数器的背景数据块结构

2.减计数器

减计数器如图5-25a所示,图5-25b为其时序图。图5-25a中,“%DB6”表示计数器的背景数据块,CTD表示为减计数器,图中,计数值数据类型是无符号整数,预设值PV=3。由图5-25b可得到其工作原理如下。

输入参数CD(Count Down)的值从0变为1(上升沿)时,减计数器的当前计数值CV减1。如果参数CV(当前计数值)的值等于或小于0,则计数器输出参数Q=1。如果参数LOAD的值从0变为1(上升沿),则参数PV(预设值)的值将作为新的CV(当前计数值)装载到计数器。

978-7-111-34922-8-Chapter05-27.jpg

图5-25 减计数器及其时序图

a)减计数器 b)时序图

3.加减计数器

加减计数器如图5-26a所示,图5-26b为其时序图。图5-26a中,“%DB7”表示计数器的背景数据块,CTUD表示为加减计数器,图中,计数值数据类型是无符号整数,预设值PV=4。由图5-26b可得到其工作原理如下。

加计数或减计数输入的值从0跳变为1时,CTUD会使当前计数值加1或减1。如果参数CV(当前计数值)的值大于或等于参数PV(预设值)的值,则计数器输出参数QU=1。如果参数CV的值小于或等于零,则计数器输出参数QD=1。如果参数LOAD的值从0变为1,则参数PV(预设值)的值将作为新的CV(当前计数值)装载到计数器。如果复位参数R的值从0变为1,则当前计数值复位为0。

需要注意的是,S7-1200 PLC的计数器指令使用的是软件计数器,软件计数器的最大计数速率受其所在的OB的执行速率限制。计数器指令所在的OB的执行频率必须足够高,才能检测CU或CD输入端的所有信号,若需要更高频率的计数操作,需要使用高速计数CTRL_HSC指令,将在9.2节予以介绍。

978-7-111-34922-8-Chapter05-28.jpg

图5-26 加减计数器及其时序图

a)加减计数器 b)时序图