电子说
最近课程进度正好讲到高速计数,有些学员反馈说高速计数很难,没有讲之前很多地方看不懂,我分析了每期学员的学习情况总结了几个问题及一些见解,希望对大家学习有所帮助:
一、 不知到什么场合需要用到高速计数。
高速计数与普通计数器最大的区别在于计数频率高,根本原因是因为其原理有着本质上的区别。普通计数器是通过扫描计数输入条件是否发生变化来进行计数,其计数频率受扫描周期的影响,所以频率不会太高。而高速计数器则是通过外部高速输入I点直接采集外部高速事件到CPU中来实现计数,其计数频率不再受扫描周期限制,所以计数频率可以高达200KHZ。由此可知,高速计数主要是应用于计数频率较高的场合,应用时常与编码器配合使用,典型的应用有两个:
1) 用于速度检测。
2) 用于位置检测。
二、 不知道高速计数程序该从何写起。
高速计数程序虽然步骤较多,但是还是有迹可循,编程步骤较为固定,总结了一下编程步骤不外乎一下几步:
1) 选择合适的高速计数器以及定义符合要求的工作模式,该步采用HDEF指令
如图1-1所示。HSC为高速计数编号1-5,MODE为工作模式可选0、1、3、4、6、7、9、10。该指令定义了计数输入,方向及复位输入端子,如图1-2所示。
图1-1
图1-2
2) 写高速计数器的控制字节。该步应用MOV_B将控制字节写入对于地址中,如图1-3所示,控制字节表如图1-4所示。
图1-3
图1-4
3)设定新的预设值MOV_DW(可选)
当需要达到某个计数值时触发动作,则需要提前设置一个预设值,高速计数预设值为一个32位双整数,所以用MOV_DW指令,如图1-5所示。
图1-5
4)设定高速计数器的当前值MOV_DW(可选)
需要计数从一个特定的值开始,如从0开始,则需要将当前值更新成0,当前值也是一个双整数,所以用MOV_DW操作,如图1-6所示。
图1-6
高速计数常需要中断配合使用,需编写中断程序。高速计数器当前值等于预设值(CV=PV)时会产生中断;除0,1号模式外其他模式方向改变也会产生中断;有外部复位输入的模式下,当外部复位输入时也会产生中断。中断事件号如表1-7所示。
表1-7
注意:高速计数触发动作一定要CV=PV中断来触发,不能用比较指令。
5)允许中断ENI。
6)连接中断程序和事件号ATCH,如图1-8所示。
图1-8
7)编写中断程序。
8)执行高速计数器HSC,如图1-9所示。
图1-9
不同的高速计数器,程序编写方法类似,只是控制字节及预设值地址等不相同,如表1-10所示。
表1-10
以上就是编写高速计数程序的基本步骤,只要理解了以上八步,高速计数程序再也难不倒你们了。
附上一个小案例供大家学习:利用高速计数器HSC0计旋转编码器的数值,当计到1000个数点亮Q0.0,当计到2000时熄灭并清零当前值,如此循环不断,程序如图1-11至1-13所示。
图1-11
图1-12
图1-13
全部0条评论
快来发表一下你的评论吧 !