CPU上的集成高速计数器

S7-200 CPU具有集成的、硬件高速计数器。

CPU221和CPU222可以使用4个30kHz单相高速计数器或2个20kHz的两相高速计数器,而CPU224和CPU226可以使用6个30kHz单相高速计数器或4个20kHz的两相高速计数器。

S7-200的新一代产品CPU224 XP支持更高的计数速度。

高速计数器可以被配置为12种模式中的任意一种,但并不是所有计数器都能使用每一种模式。 在正交模式下,你可以选择一倍速或者四倍速计数速率。对于操作模式相同的计数器,其计数功能是相同的。

计数器共有四种基本类型:带有内部方向控制的单相计数器,带有外部方向控制的单相计数器,带有两个时钟输入的双相计数器和A/B相正交计数器。

表1. 高速计数器的模式及输入点:

模式 描述 输入点 备注
  HSCO I0.0 I0.1 I0.2   (1)
HSC1 I0.6 I0.7 I1.0 I1.1 (2)
HSC2 I1.2 I1.3 I1.4 I1.5 (2)
HSC3 I0.1       (1)
HSC4 I0.3 I0.4 I0.5    
HSC5 I0.4        
0 带有内部方向控制的单相计数器 时钟        
1 时钟   复位    
2 时钟   复位 启动  
3 带有外部方向控制的单相计数器 时钟 方向      
4 时钟 方向 复位    
5 时钟 方向 复位 启动  
6 带有增减计数时钟的双相计数器 增时钟 减时钟      
7 增时钟 减时钟 复位    
8 增时钟 减时钟 复位 启动  
9 A/B相正交计数器 时钟A 时钟B      
10 时钟A 时钟B 复位    
11 时钟A 时钟B 复位 启动  
12

只有 HSC0 和 HSC3 支持模式 12。
HSC0 计数高速脉冲输出 Q0.0;
HSC3 计数高速计数脉冲输出 Q0.1。

         

(1) 支持模式 12。

(2) CPU 221/222 没有 HSC1 和 HSC2。

表2. 高速计数器的寻址

高速计数器号 HSC0 HSC1 HSC2 HSC3 HSC4 HSC5
新当前值(仅装入) SMD38 SMD48 SMD58 SMD138 SMD148 SMD158
新预置值(仅装入) SMD42 SMD52 SMD62 SMD142 SMD152 SMD162
当前计数值(仅读出) HC0 HC1 HC2 HC3 HC4 HC5

 

高速计数器的具体编程及相关的中断和其它参数,请参见《S7-200系统手册》,上面有详细的阐述及例程。

STEP 7-Micro/WIN 提供了一个方便实用的高速计数器指令编程向导,用户可以简单快速地配置自己的高速计数器功能。

 

高速计数器模式 12

S7-200 CPU 从 23 版以上开始支持高速计数器模式 12。

只有 HSC0 和 HSC3 支持模式 12。 HSC0 计数高速脉冲输出 Q0.0;HSC3 计数高速计数脉冲输出 Q0.1。

用户既可以自己编程使用模式 12,也可以在配置高速脉冲输出功能时,通过简单的设置使能模式 12。

 

常问问题:

CPU 224 XP 的高速计数器模式 12,是否可以计数 30 KHz 以上的脉冲?

CPU 224 XP 支持最多 100 KHz 的高速脉冲输出。S7-200 系列 CPU 只有高速计数器 HSC0, HSC3 能够被设置为模式 12,使用的输入端子为I0.0, I0.1,而不是特高速输入端子:I0.3、I0.4、I0.5。非特高速脉冲信号输入端由于硬件电路的限制(如光电耦合等)只能支持最高 30 KHz 的高速脉冲输入。

用户使用高速计数器模式 12 时不需要任何外部连线,Q0.0(Q0.1) 与 I0.0(I0.1) 通过集成电路内部关联,越过了外部信号处理电路,因此 HSC0(HSC1) 可以计 100KHz 或者更高频率的脉冲。用户在使用向导配置 S7-200 内部 PTO/PWM 操作时,勾选“使用高速计数器HSCx(模式12)自动计数线性 PTO 生成的脉冲”即可。

高速计数器怎样占用输入点?

高速计数器根据被定义的工作模式,按需要占用CPU上的数字量输入点。每一个计数器都按其工作模式占用固定的输入点。在某个模式下没有用到的输入点,仍然可以用作普通输入点;被计数器占用的输入点(如外部复位),在用户程序中仍然可以访问到。

为什么高速计数器不能正常工作?

在程序中要使用初次扫描存储器位SM0.1来调用HDEF指令,而且只能调用一次。如果用SM0.0调用或者第二次执行HDEF指令会引起运行错误,而且不能改变第一次执行HDEF指令时对计数器的设定。

对高速计数器如何寻址? 为什么从SMDx中读不出当前的计数值?

可以直接用HC0;HC1;HC2;HC3;HC4;HC5对不同的高速计数器进行寻址读取当前值,也可以在状态表中输入上述地址直接监视高速计数器的当前值。SMDx不存储当前值,参见上述表2。

高速计数器的计数值是一个32位的有符号整数。

高速计数器如何复位到0?

高速计数器的值在复位后是复位到初始值还是“0”值?

外部复位会将当前值复位到0值而不是初始值;内部复位则将当前值复位到初始值。如果你设定了可更新初始值,但在中断中未给初始值特殊寄存器赋新值,则在执行HSC 指令后,它将按初始化时设定的初始值赋值。

为何给高速计数器赋初始值和预置值时后不起作用,或效果出乎意料?

高速计数器可以在初始化或者运行中更改设置,如初始值、预置值。其操作步骤应当是:

  1. 设置控制字节的更新选项。需要更新哪个设置数据,就把控制字节中相应的控制位置位(设置为“1”);不需要改变的设置,相应的控制位就不能设置
  2. 然后将所需 的值送入初始值和预置值控制寄存器
  3. 执行HSC指令