S7-1200的计数器包含3种计数器的介绍

发布时间:2023-01-31  

S7-1200 计数器

S7-1200的计数器为IEC计数器,用户程序中可以使用的计数器数量仅受CPU的存储器容量限制。


这里所说的是软件计数器,最大计数速率受所在OB的执行速率限制。指令所在OB的执行频率必须足够高,以检测输入脉冲的所有变化,如果需要更快的计数操作,请参考高速计数器(HSC)。


注:S7-1200的IEC计数没有计数器号(即没有C0、C1这种带计数器号的计数器)。

S7-1200的计数器包含3种计数器,指令位置参见图1:

1.计数器(CTU)

2.减计数器(CTD)

3.加减计数器(CTUD)

72d105c8-9f73-11ed-bfe3-dac502259ad0.png

图1 指令位置

对于每种计数器,计数值可以是任何整数数据类型,并且需要使用每种整数对应的数据类型的DB结构(见表1)或背景数据块来存储计数器数据。计数器引脚参考表2,计数器使用及时序图参考表3(本文均以INT计数器为例)。

表1 计数器类型及范围

整数类型 计数器类型 计数器类型(TIA博途V14开始) 计数范围
SINT IEC_SCOUNTER CTU_SINT CTD_SINT CTUD_SINT -128~127
INT IEC_COUNTER CTU_INT CTD_INT CTUD_INT -32768~32767
DINT IEC_DCOUNTER CTU_DINT CTD_DINT CTUD_DINT -2147483648~2147483647
USINT IEC_USCOUNTER CTU_USINT CTD_USINT CTUD_USINT 0~255
UINT IEC_UCOUNTER CTU_UINT CTD_UINT CTUD_UINT 0~65535
UDINT IEC_UDCOUNTER CTU_UDINT CTD_UDINT CTUD_UDINT 0~4294967295

表2 计数器引脚汇总

输入的变量
名称 说明 数据类型 备注
CU 加计数输入脉冲 BOOL 仅出现在CTU、CTUD
CD 减计数输入脉冲 BOOL 仅出现在CTD、CTUD
R CV清0 BOOL 仅出现在CTU、CTUD
LD CV设置为PV BOOL 仅出现在CTD、CTUD
PV 预设值 整数 仅出现在CTU、CTUD
输出的变量
名称 说明 数据类型 备注
Q 输出位 BOOL 仅出现在CTU、CTD
QD 输出位 BOOL 仅出现在CTUD
QU 输出位 BOOL 仅出现在CTUD
CV 计数值 整数

表3计数器使用及时序图

指令 说明 时序图
加计数
LAD:
72e55726-9f73-11ed-bfe3-dac502259ad0.png
SCL:CTU
当CU从“0”变为“1”,CV增加1;
当CV=PV时,Q输出“1”,此后当CU从“0”变为“1”,Q保持输出“1”,CV继续增加1直到达到计数器指定的整数类型的最大值。;
在任意时刻,只要R为“1”时,Q输出“0”,CV立即停止计数并回到0;

72fa668e-9f73-11ed-bfe3-dac502259ad0.png




减计数
LAD:
7313ef46-9f73-11ed-bfe3-dac502259ad0.png
SCL:CTD
当CD从“0”变为“1”,CV减少1;
当CV=0时,Q输出“1”,此后当CU从“0”变为“1”,Q保持输出“1”,CV继续减少1直到达到计数器指定的整数类型的最小值;
只要LD为“1”时,Q输出“0”,CV立即停止计数并回到PV值;

732aa5d8-9f73-11ed-bfe3-dac502259ad0.png




加减计数
LAD:
733fffa0-9f73-11ed-bfe3-dac502259ad0.png
SCL:CTUD
当CU从“0”变为“1”,CV增加1;
当CD从“0”变为“1”,CV减少1;
当CV>=PV时,QU输出“1”;当CV 当CV<=0时,QD输出“1”;当CV>0时,QD输出“0”;
CV的上下限取决于计数器指定的整数类型的最大值与最小值;
只要R为“1”时,QD输出“1”,CV立即停止计数并回到0;
只要LD为“1”时,QU输出“1”,CV立即停止计数并回到PV值。

735701c8-9f73-11ed-bfe3-dac502259ad0.png


S7-1200 计数器创建

S7-1200计数器创建有以下几种方法:

1. 指令直接拖入块中,自动生成计数器的背景数据块,该块位于“系统块>程序资源”中,参见图2。需要在指令中修改计数值类型。

736b1816-9f73-11ed-bfe3-dac502259ad0.png

图2 自动生成计数器的背景数据块

2. 指令直接拖入FB块中,生成多重背景,参见图3。多重背景的数据类型在TIA博途V14之前是IEC_COUNTER类型,从TIA博途V14开始是CTU_INT、CTD_INT、CTUD_INT等类型(取决于指令)。

738f4a38-9f73-11ed-bfe3-dac502259ad0.png

图3 多重背景

3. 指令直接拖入FB、FC块中,生成参数实例,从TIA博途V14开始,参见图4。

73a5038c-9f73-11ed-bfe3-dac502259ad0.png

图4 参数实例

4. 在DB块、FB的静态变量、FC和FB的INOUT变量中新建IEC_COUNTER、CTU_INT、CTD_INT、CTUD_INT类型变量,在程序中将计数器指令拖入块中时,在弹出的“调用选项”页面点击“取消”按钮,之后将该建好的变量填入指定位置。

(1) DB块中新建IEC_COUNTER等类型变量(LAD/FBD),如果是IEC_COUNTER等类型变量的数组,S7-1200从V2.0版本开始支持,参见图5、6。

73c7eef6-9f73-11ed-bfe3-dac502259ad0.png

图5 DB块中的定义

73edb852-9f73-11ed-bfe3-dac502259ad0.png

图6 计数器使用

(2) FB的静态变量中新建IEC_COUNTER等类型变量(LAD/FBD),如果是IEC_COUNTER等类型变量的数组,S7-1200从V2.0版本开始支持,参见图7。

7402a8ac-9f73-11ed-bfe3-dac502259ad0.png

图7 静态变量中定义

(3) FC和FB的INOUT变量中新建IEC_COUNTER等类型变量(LAD/FBD),如果是IEC_COUNTER等类型变量的数组,S7-1200从V2.0版本开始支持,从TIA博途V14开始支持IEC_COUNTER等类型变量的变长数组(ARRAY[#]),参见图8。

742494d0-9f73-11ed-bfe3-dac502259ad0.png

图8 INOUT中定义

(4) 以上三种方法的SCL版本,从TIA博途V14开始支持,参见图9。

7442b8f2-9f73-11ed-bfe3-dac502259ad0.png

图9 SCL中使用

从以上四个示例可以看出,IEC_COUNTER、CTU_INT、CTD_INT、CTUD_INT四种数据类型没有本质的区别,可以互换使用,为使得程序明确,建议只使用计数器对应名字的数据类型。

5. 在插入DB时,选择IEC_COUNTER类型的数据块,将该数据块填在指令上方。此种方法生成的数据块等同于第一种的背景数据块,位于“系统块>程序资源”中,从TIA博途V11开始,参见图10.

745ea0ee-9f73-11ed-bfe3-dac502259ad0.png

图10 新建IEC_COUNTER类型DB

S7-1200 计数器常见问题

1. 为什么计数器不计数?

答:可能原因如下:

(1)计数器的输入位(CU、CD)需要有电平信号的跳变,计数器才会计数。如果保持不变的信号作为输入位是不会开始计数的。

(2)计数器的背景数据块重复使用。

2. 如何编程自复位计数器并产生脉冲?

答:正确答案见图11,错误答案见图12、13。

7480b63e-9f73-11ed-bfe3-dac502259ad0.png

图11 正确程序

749df96a-9f73-11ed-bfe3-dac502259ad0.png

图12 错误程序1

74b67f26-9f73-11ed-bfe3-dac502259ad0.png

图13 错误程序2

正确原因:当计数值达到10,"DB77".Static_15(False)作为计数器R的输入,并没有复位,Q输出"DB77".Static_15为True,在下一周期时执行复位指令,使得计数值清零,之后Q输出"DB77".Static_15为False,实现自复位计数器并产生脉冲。

错误1原因:当计数值达到10,首先置位"数据块_2".QU,紧接着"数据块_2".QU作为计数器R的输入,使得计数值清零,同时复位"数据块_2".QU,在下一网络段"DB77".Static_15依然是False,无法实现脉冲。

错误2原因:当计数值达到10,"数据块_2".CV=10,紧接着"数据块_2".CV与"数据块_2".PV的比较结果(True)作为计数器R的输入,使得计数值清零,同时复位"数据块_2".QU,在下一网络段"DB77".Static_15依然是False,无法实现脉冲。

从例子可知,计数器的执行是先处理输入,再处理输出,在指令块执行过程中,内部变量(例如QU、CV)可能出现多次变化。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>