技术论坛

 说说200 smart高速计数器的计数7

返回主题列表
作者 主题
WWCWWC
至圣

经验值:71501
发帖数:7980
精华帖:145
楼主    2017-06-21 09:15:46
主题:说说200 smart高速计数器的计数7 精华帖 

说说200 smart高速计数器的计数7

   昨天下午在“找答案”版区,看到一则网友的提问,主要提问是“为什么需要进行高速计数器的2次启用HSC指令”,网友的图示程序提供的还是比较清楚、明了的,图示:


   根据上图程序的描述,我大致回复了2次启用HSC1的原理就匆匆下班回家了。晚上特想起那个回复感觉没有把原理描述清楚,只是笼统地讲了程序的思路过程。

   编写200或者200smart PLC的高速计数器,我之前有几篇文章发表过,有兴趣的网友可以按标号索引阅读基本的使用方法,均是以200 smart PLC为案例的。

实际上这个问题关键之一在于如何理解高速计数器的控制字节SMB47,打开帮助,看高速计数器SMB47的控制字节解释,该控制字节是专对于高速计数器HSC1而设置的,(200或者200 smart PLC)的高速计数器控制字节是单独唯一的索引,即每一个高速计数器都有具体的控制字节应对。为说明控制字节的含义,我截图如下:

网友高速计数器程序的初始化高速计数器控制字节,把16# F8写入SMB47,理解控制字节SMB47的含义只需要把16# F8转换为二进制数是2# 11111000,并按位“对号入座”。

SMB47控制字节其含义:

1)  启用高速计数器HSC1

2)  更新当前值

3)  更新预设值

4)  更新计数方向

5)  加(增)计数方式

上述5点模式选择,高速计数器的控制字节的含义已经非常清楚了的。

   程序所选择的高速计数器工作模式为11,表示外部连接的是:带外部复位输入的正交A/B高速模式。当前值定义为0,预设值(目标值)定义为50,启用当前值等于预设值中断并连接中断子程序INT_0,开中断,启用高速计数器HSC1。

   网友的疑问是当前值等于预设值时,系统进入中断子程序后,重新定义当前值SMD48为0(重新初始化),为什么仍然还需要再启用高速计数器HSC1呢?实际上真正的原因(关键原因之二)是网友在中断子程序中“重新”定义了高速计数器的工作模式,即当前值清0的操作,重新定义了的高速计数器初始化参数后必须重新启用高速计数器,才能使定义的初始化数据生效。当然,如果不重新定义高速计数器工作模式,可以不调用高速计数器的。按网友的程序理解:当高速计数器计数到达50个高速脉冲后,进入中断子程序重新将当前值重新定义为0后,这时的高速计数器当前值由50变为0,准备好了下一次的高速计数操作。如果在中断子程序没有操作当前值的清0,则高速计数器的当前值会在以50个高速脉冲上一直累加,除非改变的高速计数器的方向。所以,无论你采用何种方式改变了高速计数器的工作模式,必须重新启用高速计数器一次。另外,在中断子程序中重新定义高速计数器的工作模式,可以不需要采用特殊标志位SM0.1或者沿触发的原因是中断仅仅只执行一个周期的工作特性,如果那位网友看到此贴,希望能够帮助到他进一步认识200的高速计数器定义特点及使用方法。


您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。