高速计数器
![高速计数器](https://img.360docs.net/imga2/04vzmqir05nqe49pxb64-21.webp)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.3 高速计数器
前面讲的计数器指令的计数速度受扫描周期的影响,对比CPU扫描频率高的脉冲输入,就不能满足控制要求了。高速计数器HSC用来累计比PLC扫描频率高得多的脉冲输入,利用产生的中断事件完成预定的操作。
一、高速计数器介绍
S7-200系列PLC设计了高速计数功能(HSC),其计数自动进行不受扫描周期的影响,最高计数频率取决于CPU的类型,CPU22x系列最高计数频率为30KHz。高速计数器在程序中使用时的地址编号用HC n来表示(在非正式程序中有时用HSC n),HC (HSC)表示编程元件名称为高速计数器,n为编号。
表5-3 高速计数器的数量与编号表
1.高速计数器输入端的连接
每个高速计数器对它所支持的时钟、方向控制、复位和启动都有专用的输入点,通过中断控制完成预定的操作。每个高速计数器专用输入点如表5-4所示。
注意:同一个输入端不能用于两种不同的功能。但是高速计数器当前模式未使用的输入端均可用于其他用途,如作为中断输入端或作为数字量输入端。每个高速计数器的3种中断的优先级由高到低,各个高速计数器引起的中断事件如表5-5所示。
S7-200系列PLC高速计数器HSC0~HSC5可以分别定义为四种工作类型:带有内部方向控制的单相计数器;带有外部方向控制的单相计数器;带有增/减计数脉冲输入的双相计数器;A/B相正交计数器。
根据有无复位输入和启动输入,每种高速计数器类型可以设定为三种工作状态:无复位且无启动输入;有复位但无启动输入;有复位且有启动输入。
HSC0~HSC5可以根据外部输入端的不同配置12种模式(模式0~模式11),高速计数器的工作模式见表6-4。
表6-5 高速计数器的控制字节(位)
号计数,当计数值等于大于50时输出端Q0.0通电,当外部复位时Q0.0断电。
接线图如图6-3所示,系统自动分配I0.0为HSC0的计数脉冲信号输入端,I0.2为HSC0的外部复位端。
82
2. 高速计数器的工作模式
高速计数器有12种工作模式,模式0~模式2采用单路脉冲输入的内部方向控制加/减计数;模式3~模式5采用单路脉冲输入的外部方向控制加/减计数;模式6~模式8采用两路脉冲输入的加/减计数;模式9~模式11采用两路脉冲输入的双相正交计数。
每个高速计数器有多种不同的工作模式。HSC0和HSC4有模式0、1、3、4、6、7、8、9、10;HSC1和HSC2有模式0、1、2、3、4、5、6、7、8、9、10、11;HSC3和HSC5只有模式0。高速计数器的工作模式和输入端子数有关,如表5-6所示。
说明:表中×表示没有
3.高速计数器的控制字和状态字
定义了计数器和工作模式之后,还要设置高速计数器的有关控制字节。每个高速计数器均有一个控制字节,它决定了计数器的计数允许或禁用,方向控制(仅限模式
83
0、1和2)或对所有其他模式的初始化计数方向,装入当前值和预置值。控制字节每个控制位的说明如表5-7所示。
每个高速计数器都有一个状态字节,状态位表示当前计数方向以及当前值是否大于或等于预置值。每个高速计数器状态字节的状态位如表5-8所示。
二、高速计数器指令及应用
1.高速计数器指令
84
高速计数器指令有两条:高速计数器定义指令HDEF和高速计数器指令HSC 。其格式如表5-9所示。
(1)高速计数器定义指令HDEF。指令指定高速计数器(HSC x)的工作模式。工作模式的选择即选择了高速计数器的输入脉冲、计数方向、复位和起动功能。每个高速计数器只能用一条“高速计数器定义”指令。
(2)高速计数器使用指令HSC。根据高速计数器控制位的状态和按照HDEF指令指定的工作模式,控制高速计数器。参数N指定高速计数器的编号。
2. 高速计数器指令的使用
(1)每个高速计数器都有一个32位当前值和一个32位预置值,当前值和预设值均为带符号的整数值。要设置高速计数器的新当前值和新预置值,必须设置控制字节(表5-7),令其第五位和第六位为1,允许更新预置值和当前值,新当前值和新预置值写入特殊内部标志位存储区。然后执行HSC指令,将新数值传输到高速计数器。
(2)执行HDEF指令之前,必须将高速计数器控制字节的位设置成需要的状态,否则将采用默认设置。默认设置为:复位和起动输入高电平有效,正交计数速率选择4×模式。执行HDEF指令后,就不能再改变计数器的设置,除非CPU进入停止模式。
(3)执行HSC指令时,CPU检查控制字节和有关的当前值和预置值。
3. 高速计数器指令的初始化
85
高速计数器指令的初始化的步骤如下:
(1)用首次扫描时接通一个扫描周期的特殊内部存储器SM0.1去调用一个子程序,完成初始化操作。因为采用了子程序,在随后的扫描中,不必再调用这个子程序,以减少扫描时间,使程序结构更好。
(2)在初始化的子程序中,根据希望的控制设置控制字(SMB37、SMB47、SMB57、SMB137、SMB147、SMB157),如设置SMB47=16#F8,则为:允许计数,写入新当前值,写入新预置值,更新计数方向为加计数,若为正交计数设为4×,复位和起动设置为高电平有效。
(3)执行HDEF指令,设置HSC的编号(0-5),设置工作模式(0-11)。如HSC的编号设置为1,工作模式输入设置为11,则为既有复位又有起动的正交计数工作模式。
(4)用新的当前值写入32位当前值寄存器(SMD38,SMD48,SMD58 ,SMD138,SMD148, SMD158)。如写入0,则清除当前值,用指令MOVD 0,SMD48实现。
(5)用新的预置值写入32位预置值寄存器(SMD42 ,SMD52, SMD62, SMD142 ,SMD152, SMD162)。如执行指令MOVD 1000,SMD52,则设置预置值为1000。若写入预置值为16#00,则高速计数器处于不工作状态。
(6)为了捕捉当前值等于预置值的事件,将条件CV=PV中断事件(事件13)与一个中断程序相联系。
(7)为了捕捉计数方向的改变,将方向改变的中断事件(事件14)与一个中断程序相联系。
(8)为了捕捉外部复位,将外部复位中断事件(事件15)与一个中断程序相联系。
(9)执行全局中断允许指令(ENI)允许HSC中断。
(10)执行HSC指令使S7-200对高速计数器进行编程。
(11)结束子程序。
【例5-4】高速计数器的应用举例。
(1)主程序
如图5-14所示,用首次扫描时接通一个扫描周期的特殊内部存储器SM0.1去调用一个子程序,完成初始化操作。