亿维UN200 CPU的高速计数功能详解 点击:2936 | 回复:4



三等闲人

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 1回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2014年3月13日
发表于:2014-11-21 10:37:13
楼主

   很多用户在使用亿维UN200 CPU的高速计数功能时,或多或少都有一些不清楚的地方,下面我就将自己在这方面的一些心得分享给大家, 希望能帮助大家提高对亿维UN200 CPU高速计数功能的理解和应用。

首先,提醒大家注意下:亿维UN200 CPU高速脉冲计数器输入端接受电平为24V的编码器,NPN和PNP的输出都可以接入。

   普通计数器受CPU扫描速度的影响,是按照顺序扫描的方式进行工作。在每个扫描周期中,对计数脉冲只能进行一次累加;对于脉冲信号的频率比CPU的扫描频率高时,如果仍采用普通计数器进行累加,必然会丢失很多对输入脉冲信号。在CPU中,对比扫描频率高的输入信号的计数可也使用高速计数器指令来实现。

1.高速计数器指令

   高速计数器的指令包括:定义高数计数器指令HDEF和执行高速计数指令HSC,如下表


(1) 定义高速计数器指令HDEF

   HDEF指令功能是为某个要使用的高速计数器选定一种工作模式。每个高速计数器在使用前,都要用HDEF指令来定义工作模式,并且只能用一次。它有两个输入端:HSC为要使用的高速计数器编号,数据类型为字节型,数据范围为0~5的常数,分别对应HC0~ HC5;MODE为高速计数的工作模式,数据类型为字节型,数据范围为0~11的常数,分别对应12种工作模式。当准许输入使能EN有效时,为指定的高速计数器HSC定义工作模式MODE。

(2)执行高速计数指令HSC

   HSC指令功能功能是根据与高速计数器相关的特殊继电器确定在控制方式和工作状态,使高速计数器的设置生效,按照指令的工作模式的工作模式执行计数操作。它有一个数据输入端N:N为高速计数器的编号,数据类型的字型,数据范围为0~5的常数,分别对应高速计数器HC0~HC5.当准许输入EN使能有效时,启动N号高速计数器工作。

2.高速计数器的输入端

   高速计数器的输入端不像普通输入端那样有用户定义,而是由系统指定的输入点输入信号,每个高速计数器对它所支持的脉冲输入端,方向控制,复位和启动都有专用的输入点,通过比较或中断完成预定的操作。每个高速计数器专用的输入点如下表:

 

3.高速计数器的状态字节

   系统为每个高速计数器都在特殊寄存器区SMB提供了一个状态字节,为了监视高速计数器的工作状态,执行由高速计数器引用的中断事件,其格式如下表:

   只有执行高速计数器的中断程序时,状态字节的状态位才有效。

4.高速计数器的工作模式

高速计数器有12种不同的工作模式(0`~11),分为4类。每个高速计数器都有多种工作模式,可以通过编程的方法,使用定义高速计数器指令HDEF来选定工作模式。

(1)各个高数计数器的工作模式

   a、高速计数器HC0是一个通用的增减计数器,共有8种模式,可以通过编程来选择不同的工作模式,HC0的工作模式如下表:

b.高速计数器HC1共有12种模式,如下表:

c.高速计数器HC2共有12种模式,如下表:

d.高速计数器HC3共有1种模式,如下表:

e.高速计数器HC4共有8种模式,如下表:

f.高速计数器HC5共有1种模式,如下表:

5.高速计数器的控制字节

系统为每个高速计数器都安排了一个特殊寄存器SMB作为控制字,可也通过对控制字节指定为的设置,确定高速计数器的工作模式。UN200 CPU在执行HSC指令前,首先要检查与每个高速计数器相关的控制字节,在控制字节中设置了启动输入信号和复位输入信号的有效电平,正交计数器的计数倍率,计数方向采用内部控制的有效电平,是否允许改变计数方向,是否允许更新设定值,是否允许更新当前值,以及是否允许执行高速计数指令。

说明:

(1) 在高速计数器的12种工作模式中,模式0、模式3、模式6和模式9,是既无

启动输入,又无复位输入的计数器,在模式1、模式4、模式7和模式10中,是只有复位输入,而没有启动输入的计数器;在模式2、模式5、模式8和模式11中,是既有启动输入,又有复位输入的计数器。

(2) 当启动输入有效时,允许计数器计数;当启动输入无效时,计数器的当前值保

持不变;当复位输入有效时,将计数器的当前值寄存器清零;当启动输入无效,而复位输入有效时,则忽略复位的影响,计数器的当前值保持不变;当复位输入保持有效,启动输入变为有效时,则将计数器的当前值寄存器清零。

(3) 在UN200 CPU中,系统默认的复位输入和启动输入均为高电平有效,正交计数器为4倍频,如果想改变系统的默认设置,需要设置如上表中的特殊继电器的第0,1,2位。

各个高速计数器的计数方向的控制,设定值和当前值的控制和执行高速计数的控制,是由表4-22中各个相关控制字节的第3位至第7位决定的。

6.高速计数器的当前值寄存器和设定值寄存器

每个高速计数器都有1个32位的经过值寄存器HC0-HC5,同时每个高速计数器还有1个32位的当前值寄存器和1个32位的设定值寄存器,当前值和设定值都是有符号的整数。为了向高速计数器装入新的当前值和设定值,必须先将当前值和设定值以双字的数据类型装入如表所列的特殊寄存器中。然后执行HSC指令,才能将新的值传送给高速计数器。

7.高速计数器的初始化

由于高速计数器的HDEF指令在进入RUN模式后只能执行1次,为了减少程序运行时间优化程序结构,一般以子程序的形式进行初始化。下面以HC2为例,介绍高速计数器的各个工作模式的初始化步骤。

(1)利用SM0.1来调用一个初始化子程序。

(2)在初始化子程序中,根据需要向SMB47装入控制字。例如,SMB47=16#F8,其意义是:准许写入新的当前值,准许写入新的设定值,计数方向为曾计数,启动和复位信号为高电平有效。

(3)执行HDEF指令,其输入参数为:HSC端为2(选择2号高速计数器),MODE端为0/1/2(对应工作模式0,模式1,模式2)。

(4)将希望的当前技术值装入SMD58(装入0可进行计数器的清零操作) 5. 将希望的设定值装入SMD62。

(5)如果希望捕获当前值等于设定值的中断事件,编写与中断事件号16相关联的中断服务程序。

(6)如果希望捕获外部复位中断事件,编写与中断事件号18相关联的中断服务程

序。

(7)执行ENI指令

(8)执行HSC指令

(9)退出初始化子程序

8.高速计数器应用举例

某产品包装生产线用高速计数器对产品进行累计和包装,每检测1000个产品时,自动启动包装机进行包装,计数方向可由外部信号控制。 设计步骤:

(1)选择高速计数器,确定工作模式

在本例中,选择的高速计数器为HC0,由于要求技术方向可由外部信号控制,而其不要复位信号输入,确定工作模式为模式3,采用当前值等于设定值得中断事件,中断事件号为12,启动包装机工作子程序,高速计数器的初始化采用子程序。

(2)用SM0.1调用高速计数器初始化子程序,子程序号为SBR_0。

(3)向SMB37写入控制字SMB37=16#F8。

(4)执行HDEF指令,输入参数:HSC为0,MODE为3。

(5)向SMD38写入当前值,SMD38=0。

(6)向SMD42写入设定值。SMD42=1000。

(7)执行建立中断连接指令ATCH,输入参数:INT为INT-0,EVNT为12。

(8)编写中断服务程序INT0,在本例中为调用包装机控制子程序,子程序号为SBR -1。

(9)执行全局开中断指令ENI。

(10)执行HSC指令,对高速计数器编程并投入运行。

   下面是程序示例:

   MAIN:


  子程序和中断程序没有写。

  以上就是亿维UN200 CPU的高速计数功能的详解。希望此篇文章对大家在高速计数的理解和应用方面有所帮助。





笑忘江湖

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 37回
  • 年度积分:0
  • 历史总积分:37
  • 注册:2014年5月05日
发表于:2014-11-21 17:44:00
1楼

拜读一下。。。。。。。

三等闲人

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 1回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2014年3月13日
发表于:2014-11-24 09:18:43
2楼

回复内容:

对: 笑忘江湖 拜读一下。。。。。。。 内容的回复!


多谢

chenyoujin99

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 1111回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2015年9月10日
发表于:2016-12-09 20:35:29
3楼

88888888888888888888888888888

glenxu

  • 精华:0帖
  • 求助:2帖
  • 帖子:28帖 | 592回
  • 年度积分:0
  • 历史总积分:1862
  • 注册:2004年1月13日
发表于:2017-07-31 15:30:53
4楼

够详细!辛苦了楼主!


热门招聘
相关主题

官方公众号

智造工程师