最近課程進度正好講到高速計數,有些學員反饋說高速計數很難,沒有講之前很多地方看不懂,我分析了每期學員的學習情況總結了幾個問題及一些見解,希望對大家學習有所幫助:
一、不知到什么場合需要用到高速計數。
高速計數與普通計數器最大的區別在于計數頻率高,根本原因是因為其原理有著本質上的區別。普通計數器是通過掃描計數輸入條件是否發生變化來進行計數,其計數頻率受掃描周期的影響,所以頻率不會太高。而高速計數器則是通過外部高速輸入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
-
編碼器
+關注
關注
45文章
3643瀏覽量
134525 -
計數器
+關注
關注
32文章
2256瀏覽量
94575
原文標題:S7-200 SMART高速計數原來這么簡單~~
文章出處:【微信號:GKYXT1508,微信公眾號:工控云學堂】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論