高速计数器.docx
- 文档编号:28040289
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:22
- 大小:102.04KB
高速计数器.docx
《高速计数器.docx》由会员分享,可在线阅读,更多相关《高速计数器.docx(22页珍藏版)》请在冰豆网上搜索。
高速计数器
5.3高速计数器
前面讲的计数器指令的计数速度受扫描周期的影响,对比CPU扫描频率高的脉冲输入,就不能满足控制要求了。
高速计数器HSC用来累计比PLC扫描频率高得多的脉冲输入,利用产生的中断事件完成预定的操作。
一、高速计数器介绍
S7-200系列PLC设计了高速计数功能(HSC),其计数自动进行不受扫描周期的影响,最高计数频率取决于CPU的类型,CPU22x系列最高计数频率为30KHz。
高速计数器在程序中使用时的地址编号用HCn来表示(在非正式程序中有时用HSCn),HC(HSC)表示编程元件名称为高速计数器,n为编号。
不同型号的PLC主机,高速计数器的数量对应如表5-3所示。
项目
高速计数器定义指令
高速计数器启动指令
梯形图
指令表
HDEFHSC,MODE
HSCN
操作数的范围
HSC:
0~5;MODE:
0~11;N:
0~5
表5-3高速计数器的数量与编号表
1.高速计数器输入端的连接
每个高速计数器对它所支持的时钟、方向控制、复位和启动都有专用的输入点,通过中断控制完成预定的操作。
每个高速计数器专用输入点如表5-4所示。
注意:
同一个输入端不能用于两种不同的功能。
但是高速计数器当前模式未使用的输入端均可用于其他用途,如作为中断输入端或作为数字量输入端。
每个高速计数器的3种中断的优先级由高到低,各个高速计数器引起的中断事件如表5-5所示。
2.高速计数器工作模式和输入端
计数器标号及各种工作模式对应的输入点
HSC0
I0.0
I0.1
I0.2
HSC1
I0.6
I0.7
I1.0
I1.1
HSC2
I1.2
I1.3
I1.4
I1.5
HSC3
I0.1
HSC4
I0.3
I0.4
I0.5
HSC5
I0.4
带有内部方向控制的单相计数器
模式0
时钟
模式1
时钟
复位
模式2
时钟
复位
启动
带有外部方向控制的单相计数器
模式3
时钟
方向
模式4
时钟
方向
复位
模式5
时钟
方向
复位
启动
带有增减计数时钟的双相计数器
模式6
增时钟
减时钟
模式7
增时钟
减时钟
复位
模式8
增时钟
减时钟
复位
启动
A/B相正交计数器
模式9
时钟A
时钟B
模式10
时钟A
时钟B
复位
模式11
时钟A
时钟B
复位
启动
S7-200系列PLC高速计数器HSC0~HSC5可以分别定义为四种工作类型:
带有内部方向控制的单相计数器;带有外部方向控制的单相计数器;带有增/减计数脉冲输入的双相计数器;A/B相正交计数器。
根据有无复位输入和启动输入,每种高速计数器类型可以设定为三种工作状态:
无复位且无启动输入;有复位但无启动输入;有复位且有启动输入。
HSC0~HSC5可以根据外部输入端的不同配置12种模式(模式0~模式11),高速计数器的工作模式见表6-4。
表6-5高速计数器的控制字节(位)
HSC0
HSC1
HSC2
HSC3
HSC4
HSC5
描述
SM37.0
SM47.0
SM57.0
—
SM147.0
—
复位有效电平控制位:
0=复位高电平有效;1=复位低电平有效
—
SM47.1
SM57.1
—
—
—
启动有效电平控制位:
0=启动高电平有效;1=启动低电平有效
SM37.2
SM47.2
SM57.2
—
SM147.2
—
正交计数器计数速率选择:
0=4×计数率;1=1×计数率
SM37.3
SM47.3
SM57.3
SM137.3
SM147.3
SM157.3
计数方向控制位:
0=减计数;1=增计数
SM37.4
SM47.4
SM57.4
SM137.4
SM147.4
SM157.4
向HSC写入计数方向:
0=不更新;1=更新计数方向
SM37.5
SM47.5
SM57.5
SM137.5
SM147.5
SM157.5
向HSC写入预置值:
0=不更新;1=更新预置值
SM37.6
SM47.6
SM57.6
SM137.6
SM147.6
SM157.6
向HSC写入新的初始值:
0=不更新;1=更新初始值
SM37.7
SM47.7
SM57.7
SM137.7
SM147.7
SM157.7
HSC允许:
0=禁止HSC;1=允许HSC
表6-6高速计数器初始值、预置值及当前值存储单元
计数器号
HSC0
HSC1
HSC2
HSC3
HSC4
HSC5
初始值
SMD38
SMD48
SMD58
SMD138
SMD148
SMD158
预置值
SMD42
SMD52
SMD62
SMD142
SMD152
SMD162
当前值
HC0
HC1
HC2
HC3
HC4
HC5
例如,使用单相高速计数器HSC0(工作模式1)和中断指令对输入端I0.0脉冲信号计数,当计数值等于大于50时输出端Q0.0通电,当外部复位时Q0.0断电。
接线图如图6-3所示,系统自动分配I0.0为HSC0的计数脉冲信号输入端,I0.2为HSC0的外部复位端。
表5-4高速计数器专用的输入点
高速计数器
使用的输入端子
HSC0
I0.0,I0.1,I0.2
HSC1
I0.6,I0.7,I1.0,I1.1
HSC2
I1.2,I1.3,I1.4,I1.5
HSC3
I0.1
HSC4
I0.3,I0.4,I0.5
HSC5
I0.4
表5-5高速计数器中断事件
高速计数器
当前值等于预设值
计数方向改变中断
外部信号复位中断
事件号
优先级
事件号
优先级
事件号
优先级
HSC0
12
10
27
11
28
12
HSC1
13
13
14
14
15
15
HSC2
16
16
17
17
18
18
HSC3
32
19
无
无
无
无
HSC4
29
20
30
21
31
22
HSC5
33
23
无
无
无
无
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所示。
表5-6高速计数器的工作模式和输入端子的关系
HSC编号及其对应的输入端子
HSC模式
功能及说明
占用的输入端子及其功能
HSC0
I0.0
I0.1
I0.2
×
HSC4
I0.3
I0.4
I0.5
×
HSC1
I0.6
I0.7
I1.0
I1.1
HSC2
I1.2
I1.3
I1.4
I1.5
HSC3
I0.1
×
×
×
HSC5
I0.4
×
×
×
0
单路脉冲输入的内部方向控制加/减计数。
控制字SM37.3=0,减计数;
SM37.3=1,加计数。
脉冲输入端
×
×
×
1
×
复位端
×
2
×
复位端
起动
3
单路脉冲输入的外部方向控制加/减计数。
方向控制端=0,减计数;
方向控制端=1,加计数。
脉冲输入端
方向控制端
×
×
4
复位端
5
复位端
6
两路脉冲输入的单相加/减计数。
加计数有脉冲输入,加计数;
减计数端脉冲输入,减计数。
加计数脉冲输入端
减计数脉冲输入端
×
×
7
复位端
8
复位端
9
两路脉冲输入的双相正交计数。
A相脉冲超前B相脉冲,加计数;
A相脉冲滞后B相脉冲,减计数。
A相脉冲输入端
B相脉冲输入端
×
×
10
复位端
11
复位端
说明:
表中×表示没有
3.高速计数器的控制字和状态字
定义了计数器和工作模式之后,还要设置高速计数器的有关控制字节。
每个高速计数器均有一个控制字节,它决定了计数器的计数允许或禁用,方向控制(仅限模式
83
0、1和2)或对所有其他模式的初始化计数方向,装入当前值和预置值。
控制字节每个控制位的说明如表5-7所示。
表5-7高速计数器的控制字节
HSC0
HSC1
HSC2
HSC3
HSC4
HSC5
说明
SM37.0
SM47.0
SM57.0
SM147.0
复位有效电平控制:
0=复位信号高电平有效;1=低电平有效
SM47.1
SM57.1
起动有效电平控制:
0=起动信号高电平有效;1=低电平有效
SM37.2.
SM47.2
SM57.2
SM147.2
正交计数器计数速率选择:
0=4×计数速率;1=1×计数速率
SM37.3
SM47.3
SM57.3
SM137.3
SM147.3
SM157.3
计数方向控制位:
0=减计数1=加计数
SM37.4
SM47.4
SM57.4
SM137.4
SM147.4
SM157.4
向HSC写入计数方向:
0=无更新1=更新计数方向
SM37.5
SM47.5
SM57.5
SM137.5
SM147.5
SM157.5
向HSC写入新预置值:
0=无更新1=更新预置值
SM37.6
SM47.6
SM57.6
SM137.6
SM147.6
SM157.6
向HSC写入新当前值:
0=无更新1=更新当前值
SM37.7
SM47.7
SM57.7
SM137.7
SM147.7
SM157.7
HSC允许:
0=禁用HSC1=启用HSC
每个高速计数器都有一个状态字节,状态位表示当前计数方向以及当前值是否大于或等于预置值。
每个高速计数器状态字节的状态位如表5-8所示。
表5-8高速计数器状态字节的状态位
HSC0
HSC1
HSC2
HSC3
HSC4
HSC5
说明
SM36.5
SM46.5
SM56.5
SM136.5
SM146.5
SM156.5
当前计数方向状态位:
0=减计数;1=加计数
SM36.6
SM46.6
SM56.6
SM136.6
SM146.6
SM156.6
当前值等于预设值状态位:
0=不相等;1=等于
SM36.7
SM46.7
SM56.7
SM136.7
SM146.7
SM156.7
当前值大于预设值状态位:
0=小于或等于;1=大于
二、高速计数器指令及应用
1.高速计数器指令
84
高速计数器指令有两条:
高速计数器定义指令HDEF和高速计数器指令HSC。
其格式如表5-9所示。
(1)高速计数器定义指令HDEF。
指令指定高速计数器(HSCx)的工作模式。
工作模式的选择即选择了高速计数器的输入脉冲、计数方向、复位和起动功能。
每个高速计数器只能用一条“高速计数器定义”指令。
(2)高速计数器使用指令HSC。
根据高速计数器控制位的状态和按照HDEF指令指定的工作模式,控制高速计数器。
参数N指定高速计数器的编号。
表5-9高速计数器指令格式
梯形图
语句表
HDEFHSC,MODE
HSCN
功能说明
高速计数器定义指令HDEF
高速计数器使用指令HSC
操作数
HSC:
高速计数器的编号,为常量(0~5)数据类型:
字节
MODE工作模式,为常量(0~11)
数据类型:
字节
N:
高速计数器的编号,为常量(0~5)数据类型:
字
ENO=0的出错条件
SM4.3(运行时间),0003(输入点冲突),
0004(中断中的非法指令),000A(HSC重复定义)
SM4.3(运行时间),0001(HSC在HDEF之前),0005(HSC/PLS同时操作)
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,则清除当前值,用指令MOVD0,SMD48实现。
(5)用新的预置值写入32位预置值寄存器(SMD42,SMD52,SMD62,SMD142,SMD152,SMD162)。
如执行指令MOVD1000,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去调用一个子程序,完成初始化操作。
86
(2)初始化的子程序
如图5-15所示,定义HSC1的工作模式为模式11(两路脉冲输入的双相正交计
数,具有复位和起动输入功能),设置SMB47=16#F8(允许计数,更新当前值,更新预置值,更新计数方向为加计数,若为正交计数设为4×,复位和起动设置为高电平有效)。
HSC1的当前值SMD48清零,预置值SMD52=50,当前值=预设值,产生中断(中断事件13),中断事件13连接中断程序INT_0。
使用问题说明
S7-200CPU具有集成的、硬件高速计数器。
CPU221和CPU222可以使用4个30kHz单相高速计数器或2个20kHz的两相高速计数器,而CPU224和CPU226可以使用6个30kHz单相高速计数器或4个20kHz的两相高速计数器。
S7-200的新一代产品CPU224XP支持更高的计数速度。
高速计数器可以被配置为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。
• 高速计数器的实际输入要根据用户选择的高速计数器号和模式来确定,如上表。
例:
如果你选择了HSC0的模式1,则你的外部高速计数输入点应接在I0.0,外部复位点应接在I0.2。
• 如果用户使用了多个高速计数器,则被某一高速计数器占用了的输入点,其它高速计数器不能再使用。
如HSC0的模式3已经占用了I0.1作为外部方向控制点,那么HSC3高速计数器就不能再使用了,因为它的计数输入点也是I0.1,与之冲突了。
(2)CPU221/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系统手册》,上面有详细的阐述及例程。
STEP7-Micro/WIN提供了一个方便实用的高速计数器指令编程向导,用户可以简单快速地配置自己的高速计数器功能。
高速计数器模式12
S7-200CPU从23版以上开始支持高速计数器模式12。
只有HSC0和HSC3支持模式12。
HSC0计数高速脉冲输出Q0.0;HSC3计数高速计数脉冲输出Q0.1。
用户既可以自己编程使用模式12,也可以在配置高速脉冲输出功能时,通过简单的设置使能模式12。
常问问题:
CPU224XP的高速计数器模式12,是否可以计数30KHz以上的脉冲?
CPU224XP支持最多100KHz的高速脉冲输出。
S7-200系列CPU只有高速计数器HSC0,HSC3能够被设置为模式12,使用的输入端子为I0.0,I0.1,而不是特高速输入端子:
I0.3、I0.4、I0.5。
非特高速脉冲信号输入端由于硬件电路的限制(如光电耦合等)只能支持最高30KHz的高速脉冲输入。
用户使用高速计数器模式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对不同的高速计数器进行寻址读取当前值,也可以在状态表中输入上述地址直接监视高速计数器的当前
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高速 计数器
![提示](https://static.bdocx.com/images/bang_tan.gif)