很多用戶在使用億維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的高速計數功能的詳解。希望此篇文章對大家在高速計數的理解和應用方面有所幫助。