高速计数器HSC一般和编码器配合使用,在现代自动控制中实现精确定位和测量长度。它可用来累计比可编程序控制器的扫描频率高得多的脉冲输入,利用其产生的中断事件完成预定的操作。
(一)中断源及种类
高速计数器在程序中使用时的地址编号用HCn来表示(在非程序中有时用HSCn),n为编号。
HCn除了表示高速计数器的编号之外,还代表两方面的含义:高速计数器位和高速计数器当前值。编程时,从所用的指令可以看出是位还是当前值。
(一)高速计数器指令
高速计数器指令有两条:HDEF和HSC。
1、HDEF,定义高速计数器指令
使能输入有效时,为指定的高速计数器分配一种工作模式,即用来建立高速计数器与工作模式之间的联系。
梯形图指令盒中有两个数据输入端:HSC,高速计数器编号,为0~5的常数,字节型;MODE,工作模式,为0~11的常数,字节型。
图1 HDEF
2、HSC,高速计数器指令
使能输入有效时,根据高速计数器特殊存储器位的状态,并按照HDEF指令指定的工作模式,设置高速计数器并控制其工作。
梯形图指令盒数据输入端N:高速计数器编号,为0~5的常数,字型。
图2 HSC
高速计数器的时钟、方向控制、复位和启动所使用输入如下图所示。
图3 高速计数器的指定输入
(二)高速计数器的使用方法
每个高速计数器都有固定的特殊功能存储器与之相配合,完成高速计数功能。具体对应关系如下图所示。
图4 HSC的特殊寄存器
每个高速计数器都有一个状态字节,程序运行时根据运行状况自动使某些位置位,可以通过程序来读相关位的状态,用以作为判断条件实现相应的操作。状态字节中各状态位的功能如下图所示。
图5 状态字节
使用高速计数器时,要按以下步骤进行:
◆ 选择计数器及工作模式
◆ 设置控制字节
◆ 执行HDEF指令
◆ 设定当前值和预设值
◆ 设置中断事件并全局开中断
◆ 执行HSC指令
图6 控制位含义
(三)应用实例
要对一高速事件精确控制,通过对脉冲信号进行增计数,计数当前值达到24产生中断,重新从0计数,对中断次数进行累计。计数方向用一个外部信号控制,并能实现外部复位。所用的主机型号为CPU221。
设计步骤:
①选择高速计数器HSC0,并确定工作方式4
②令SM37=16#F8
③执行HDEF指令,输入端HSC为0,MODE为4
④装入当前值,令SMD38=0
⑤装入设定值,令SMD42=24
⑥执行中断连接ATCH指令,输入端INT为INT0,EVNT为10。
主程序、初始化子程序和中断程序分别如图所示。
图7 主程序
图8 初始化程序
图9 中断程序