项目24高速计数器的应用Word文档格式.docx
- 文档编号:15375289
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:20
- 大小:627.27KB
项目24高速计数器的应用Word文档格式.docx
《项目24高速计数器的应用Word文档格式.docx》由会员分享,可在线阅读,更多相关《项目24高速计数器的应用Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
图1:
高速计数器指令的有效操作数
高速计数器用于对S7--200扫描速率无法控制的高速事件进行计数。
高速计数器的最高计数频率取决于您的CPU类型。
提示:
CPU221和CPU222支持HSC0、HSC3、HSC4和HSC5。
不支持HSC1和HSC2。
CPU224、CPU224XP和CPU226全部支持六个高速计数器:
HSC0到HSC5。
一般来说,高速计数器被用作驱动鼓式计时器,该设备有一个安装了增量轴式编码器的轴,以恒定的速度转动。
轴式编码器每圈提供一个确定的计数值和一个复位脉冲。
来自轴式编码器的时钟和复位脉冲作为高速计数器的输入。
高速计数器装入一组预置值中的第一个值,当前计数值小于当前预置值时,希望的输出有效。
计数器设置成在当前值等于预置值和有复位时产生中断。
随着每次当前计数值等于预置值的中断事件的出现,一个新的预置值被装入,并重新设置下一个输出状态。
当出现复位中断事件时,设置第一个预置值和第一个输出状态,这个循环又重新开始。
由于中断事件产生的速率远低于高速计数器的计数速率,用高速计数器可实现精确控制,而与PLC整个扫描周期的关系不大。
采用中断的方法允许在简单的状态控制中用独立的中断程序装入一个新的预置值。
(同样的,也可以在一个中断服务程序中,处理所有的中断事件。
)
3.理解不同的高速计数器
对于操作模式相同的计数器,其计数功能是相同的。
计数器共有四种基本类型:
带有内部方向控制的单相计数器,带有外部方向控制的单相计数器,带有两个时钟输入的双相计数器和A/B相正交计数器。
注意,并不是所有计数器都能使用每一种模式。
您可以使用以下类型:
无复位或启动输入,有复位无启动输入或既有启动又有复位输入。
当激活复位输入端时,计数器清除当前值并一直保持到复位端失效。
当激活启动输入端时,它允许计数器计数。
当启动端失效时,计数器的当前值保持为常数,并且忽略时钟事件。
如果在启动输入端无效的同时,复位信号被激活,则忽略复位信号,当前值保持不变。
如果在复位信号被激活的同时,启动输入端被激活,当前值被清除。
在使用高速计数器之前,应该用HDEF(高速计数器定义)指令为计数器选择一种计数模式。
使用初次扫描存储器位SM0.1(该位仅在第一次扫描周期接通,之后断开)来调用一个包含HDEF指令的子程序。
4.高速计数器编程
您可以使用指令向导来配置计数器。
向导程序使用下列信息:
计数器的类型和模式、计数器的预置值、计数器的初始值和计数的初始方向。
要启动HSC指令向导,可以在命令菜单窗口中选择Tools>
InstructionWizard,然后在向导窗口中选择HSC指令。
对高速计数器编程,您必须完成下列基本操作:
定义计数器和模式
设置控制字节
设置初始值
设置预置值
指定并使能中断服务程序
激活高速计数器
定义计数器的模式和输入
使用高速计数器定义指令来定义计数器的模式和输入。
图2中给出了与高速计数器相关的时钟、方向控制、复位和启动输入点。
同一个输入点不能用于两个不同的功能,但是任何一个没有被高速计数器的当前模式使用的输入点,都可以被用作其它用途。
例如,如果HSC0正被用于模式1,它占用I0.0和I0.2,则I0.1可以被边缘中断或者HSC3占用。
注意:
HSC0的所有模式(模式12除外)总是使用I0.0,HSC4的所有模式总是使用I0.3,因此在使用这些计数器时,相应的输入点不能用于其它功能。
模式
中断描述
输入点
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
HSC4
I0.3
I0.4
I0.5
HSC5
带有内部方向控制的单相计数器
时钟
1
复位
2
启动
3
带有外部方向控制的单相计数器
方向
4
5
6
带有增减计数时钟的双相计数器
增时钟
减时钟
7
8
9
A/B相正交计数器
时钟A
时钟B
10
11
12
只有HSC0和HSC3支持模式12。
HSC0计数Q0.0输出的脉冲数。
HSC3计数Q0.1输出的脉冲数。
图2:
高速计数器的输入点
5.HSC模式举例
图22到图26中给出了每种模式下计数器功能的时序图。
模式0、1或2操作实例
图3:
模式3、4或5操作实例
图4
当您使用模式6、7或者8时,如果增时钟输入的上升沿与减时钟输入的上升沿之间的时间间隔小于0.3微秒,高速计数器会把这些事件看作是同时发生的。
如果这种情况发生,当前值不变,计数方向指示不变。
只要增时钟输入的上升沿与减时钟输入的上升沿之间的时间间隔大于0.3微秒,高速计数器分别捕捉每个事件。
在以上两种情况下,都不会有错误产生,计数器保持正确的当前值。
图5:
模式6、7或8操作实例
图6:
模式9、10或者11操作实例(一倍速正交模式)
图7:
模式9、10或者11操作实例(四倍速正交模式)
6.复位和启动操作
如图27中所示的复位和启动操作适用于使用复位和启动输入的所有模式。
在复位和启动输入图中,复位输入和启动输入都被编程为高电平有效。
带有或者不带启动输入的复位操作举例
图8
图9
对于高速计数器,有三个控制位用于配置复位和启动信号的有效状态以及选择一倍速或者四倍速计数模式(仅用于正交计数器)。
这些位位于各个计数器的控制字节中并且只有在HDEF指令执行时使用。
在表6-27中给出了这些位的定义。
在执行HDEF指令前,必须把这些控制位设定到希望的状态。
否则,计数器对计数模式的选择取缺省设置。
一旦HDEF指令被执行,您就不能再更改计数器的设置,除非先进入STOP模式。
1缺省设置为:
复位输入和启动输入高电平有效,正交计数率为四倍速(四倍输入时钟频率)。
图10:
复位和启动输入的有效电平以及1x/4x控制位
图11:
高速计数器定义指令
7.设置控制字节
只有定义了计数器和计数器模式,才能对计数器的动态参数进行编程。
每个高速计数器都有一个控制字节,包括以下内容:
①使能或者禁止计数器
②控制计数方向(只对模式0、1和2有效)或者对所有其它模式定义初始化计数方向。
③装载初始值
④装载预置值
在执行HSC指令时,要检验控制字节和相关的初始值和预置值。
表6-28中对这些控制位逐一做了说明。
图12:
HSC0到HSC5的控制位
8.设置初始值和预置值
每个高速计数器都有一个32位的初始值和一个32位的预置值。
初始值和预置值都是符号整数。
为了向高速计数器装入新的初始值和预置值,必须先设置控制字节,并且把初始值和预置值存入特殊存储器中,然后执行HSC指令,从而将新的值传送到高速计数器。
表6-29中对保存新的初始值和预置值的特殊存储器作了说明。
除去控制字节和新的初始值与预置值保存字节外,每个高速计数器的当前值只能使用数据类型HC(高速计数器当前值)后面跟表6-29中列出的计数器号(0、1、2、3、4或5)的格式进行读取。
可用读操作直接访问的当前值,但是写操作只能用HSC指令来实现。
图13:
HSC0、HSC1、HSC2、HSC3、HSC4和HSC5的新当前值和新预设值
图14:
HSC0、HSC1、HSC2、HSC3、HSC4和HSC5的当前值
9.高速计数器寻址(HC)
如果要指定高速计数器的地址,访问高速计数器的计数值,要使用存储器类型HC和计数器号(例如HC0)
高速计数器的当前值是只读值,只能以双字(32位)分配地址,如图28所示。
图15:
访问高速计数器的当前值
10.指定中断
所有计数器模式都支持在HSC的当前值等于预设值时产生一个中断事件。
使用外部复位端的计数模式支持外部复位中断。
除去模式0、1和2之外,所有计数器模式支持计数方向改变中断。
每种中断条件都可以分别使能或者禁止。
要得到关于使用中断的更多信息,参见通讯和中断指令一节。
当使用外部复位中断时,不要写入初始值,或者是在该中断服务程序中禁止再允许高速计数器,否则会产生一个致命错误。
11.状态字节
每个高速计数器都有一个状态字节,其中的状态存储位指出了当前计数方向,当前值是否大于或者等于预置值。
表6-31给出了每个高速计数器状态位的定义。
只有在执行中断服务程序时,状态位才有效。
监视高速计数器状态的目的是使其它事件能够产生中断以完成更重要的操作。
图16:
HSC0到HSC5的状态位
12.高速计数器的初始化步骤举例
以下以HSC1为例,对初始化和操作的步骤进行描述。
在初始化描述中,假定S7--200已经置成RUN模式。
因此,首次扫描标志位为真。
如果不是这种情况,请记住在进入RUN模式之后,对每一个高速计数器的HDEF指令只能执行一次。
对一个高速计数器第二次执行HDEF指令会引起运行错误,而且不能改变第一次执行HDEF指令时对计数器的设置。
虽然下列步骤描述了如何分别改变计数方向、初始值和预置值,但您完全可以在同一操作步骤中对全部或者任意参数组合进行设置,只要设置正确的SMB47然后执行HSC指令即可。
(1)初始化模式0、1或2
HSC1为内部方向控制的单相增/减计数器(模式0、1或2),初始化步骤如下:
1)用初次扫描存储器位(SM0.1=1)调用执行初始化操作的子程序。
由于采用了这样的子程序调用,后续扫描不会再调用这个子程序,从而减少了扫描时间,也提供了一个结构优化的程序。
2)初始化子程序中,根据所希望的控制操作对SMB47置数。
例如:
SMB47=16#F8产生如下的结果:
允许计数
写入新的初始值
写入新的预置值
置计数方向为增
置启动和复位输入为高电平有效
3)执行HDEF指令时,HSC输入置1,MODE输入置0(无外部复位或启动)或置1(有外部复位和无启动)或置2(有外部复位和启动)。
4)向SMD48(双字)写入所希望的初始值(若写入0,则清除)。
5)向SMD52(双字)写入所希望的预置值。
6)为了捕获当前值(CV)等于预置值(PV)中断事件,编写中断子程序,并指定CV=PV中断事件(事件号13)调用该中断子程序。
参看本章中断一节,以了解中断处理的细节。
7)为了捕获外部复位事件,编写中断子程序,并指定外部复位中断事件(事件号15)调用该中断子程序。
8)执行全局中断允许指令(ENI)来允许HSC1中断。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 项目 24 高速 计数器 应用