很多用戶在使用億維UN200 CPU的高速計(jì)數(shù)功能時(shí),或多或少都有一些不清楚的地方,下面我就將自己在這方面的一些心得分享給大家, 希望能幫助大家提高對億維UN200 CPU高速計(jì)數(shù)功能的理解和應(yīng)用。
首先,提醒大家注意下:億維UN200 CPU高速脈沖計(jì)數(shù)器輸入端接受電平為24V的編碼器,NPN和PNP的輸出都可以接入。
普通計(jì)數(shù)器受CPU掃描速度的影響,是按照順序掃描的方式進(jìn)行工作。在每個(gè)掃描周期中,對計(jì)數(shù)脈沖只能進(jìn)行一次累加;對于脈沖信號的頻率比CPU的掃描頻率高時(shí),如果仍采用普通計(jì)數(shù)器進(jìn)行累加,必然會(huì)丟失很多對輸入脈沖信號。在CPU中,對比掃描頻率高的輸入信號的計(jì)數(shù)可也使用高速計(jì)數(shù)器指令來實(shí)現(xiàn)。
1.高速計(jì)數(shù)器指令
高速計(jì)數(shù)器的指令包括:定義高數(shù)計(jì)數(shù)器指令HDEF和執(zhí)行高速計(jì)數(shù)指令HSC,如下表
(1) 定義高速計(jì)數(shù)器指令HDEF
HDEF指令功能是為某個(gè)要使用的高速計(jì)數(shù)器選定一種工作模式。每個(gè)高速計(jì)數(shù)器在使用前,都要用HDEF指令來定義工作模式,并且只能用一次。它有兩個(gè)輸入端:HSC為要使用的高速計(jì)數(shù)器編號,數(shù)據(jù)類型為字節(jié)型,數(shù)據(jù)范圍為0~5的常數(shù),分別對應(yīng)HC0~ HC5;MODE為高速計(jì)數(shù)的工作模式,數(shù)據(jù)類型為字節(jié)型,數(shù)據(jù)范圍為0~11的常數(shù),分別對應(yīng)12種工作模式。當(dāng)準(zhǔn)許輸入使能EN有效時(shí),為指定的高速計(jì)數(shù)器HSC定義工作模式MODE。
(2)執(zhí)行高速計(jì)數(shù)指令HSC
HSC指令功能功能是根據(jù)與高速計(jì)數(shù)器相關(guān)的特殊繼電器確定在控制方式和工作狀態(tài),使高速計(jì)數(shù)器的設(shè)置生效,按照指令的工作模式的工作模式執(zhí)行計(jì)數(shù)操作。它有一個(gè)數(shù)據(jù)輸入端N:N為高速計(jì)數(shù)器的編號,數(shù)據(jù)類型的字型,數(shù)據(jù)范圍為0~5的常數(shù),分別對應(yīng)高速計(jì)數(shù)器HC0~HC5.當(dāng)準(zhǔn)許輸入EN使能有效時(shí),啟動(dòng)N號高速計(jì)數(shù)器工作。
2.高速計(jì)數(shù)器的輸入端
高速計(jì)數(shù)器的輸入端不像普通輸入端那樣有用戶定義,而是由系統(tǒng)指定的輸入點(diǎn)輸入信號,每個(gè)高速計(jì)數(shù)器對它所支持的脈沖輸入端,方向控制,復(fù)位和啟動(dòng)都有專用的輸入點(diǎn),通過比較或中斷完成預(yù)定的操作。每個(gè)高速計(jì)數(shù)器專用的輸入點(diǎn)如下表:
3.高速計(jì)數(shù)器的狀態(tài)字節(jié)
系統(tǒng)為每個(gè)高速計(jì)數(shù)器都在特殊寄存器區(qū)SMB提供了一個(gè)狀態(tài)字節(jié),為了監(jiān)視高速計(jì)數(shù)器的工作狀態(tài),執(zhí)行由高速計(jì)數(shù)器引用的中斷事件,其格式如下表:
只有執(zhí)行高速計(jì)數(shù)器的中斷程序時(shí),狀態(tài)字節(jié)的狀態(tài)位才有效。
4.高速計(jì)數(shù)器的工作模式
高速計(jì)數(shù)器有12種不同的工作模式(0`~11),分為4類。每個(gè)高速計(jì)數(shù)器都有多種工作模式,可以通過編程的方法,使用定義高速計(jì)數(shù)器指令HDEF來選定工作模式。
(1)各個(gè)高數(shù)計(jì)數(shù)器的工作模式
a、高速計(jì)數(shù)器HC0是一個(gè)通用的增減計(jì)數(shù)器,共有8種模式,可以通過編程來選擇不同的工作模式,HC0的工作模式如下表:
b.高速計(jì)數(shù)器HC1共有12種模式,如下表:
c.高速計(jì)數(shù)器HC2共有12種模式,如下表:
d.高速計(jì)數(shù)器HC3共有1種模式,如下表:
e.高速計(jì)數(shù)器HC4共有8種模式,如下表:
f.高速計(jì)數(shù)器HC5共有1種模式,如下表:
5.高速計(jì)數(shù)器的控制字節(jié)
系統(tǒng)為每個(gè)高速計(jì)數(shù)器都安排了一個(gè)特殊寄存器SMB作為控制字,可也通過對控制字節(jié)指定為的設(shè)置,確定高速計(jì)數(shù)器的工作模式。UN200 CPU在執(zhí)行HSC指令前,首先要檢查與每個(gè)高速計(jì)數(shù)器相關(guān)的控制字節(jié),在控制字節(jié)中設(shè)置了啟動(dòng)輸入信號和復(fù)位輸入信號的有效電平,正交計(jì)數(shù)器的計(jì)數(shù)倍率,計(jì)數(shù)方向采用內(nèi)部控制的有效電平,是否允許改變計(jì)數(shù)方向,是否允許更新設(shè)定值,是否允許更新當(dāng)前值,以及是否允許執(zhí)行高速計(jì)數(shù)指令。
說明:
(1) 在高速計(jì)數(shù)器的12種工作模式中,模式0、模式3、模式6和模式9,是既無
啟動(dòng)輸入,又無復(fù)位輸入的計(jì)數(shù)器,在模式1、模式4、模式7和模式10中,是只有復(fù)位輸入,而沒有啟動(dòng)輸入的計(jì)數(shù)器;在模式2、模式5、模式8和模式11中,是既有啟動(dòng)輸入,又有復(fù)位輸入的計(jì)數(shù)器。
(2) 當(dāng)啟動(dòng)輸入有效時(shí),允許計(jì)數(shù)器計(jì)數(shù);當(dāng)啟動(dòng)輸入無效時(shí),計(jì)數(shù)器的當(dāng)前值保
持不變;當(dāng)復(fù)位輸入有效時(shí),將計(jì)數(shù)器的當(dāng)前值寄存器清零;當(dāng)啟動(dòng)輸入無效,而復(fù)位輸入有效時(shí),則忽略復(fù)位的影響,計(jì)數(shù)器的當(dāng)前值保持不變;當(dāng)復(fù)位輸入保持有效,啟動(dòng)輸入變?yōu)橛行r(shí),則將計(jì)數(shù)器的當(dāng)前值寄存器清零。
(3) 在UN200 CPU中,系統(tǒng)默認(rèn)的復(fù)位輸入和啟動(dòng)輸入均為高電平有效,正交計(jì)數(shù)器為4倍頻,如果想改變系統(tǒng)的默認(rèn)設(shè)置,需要設(shè)置如上表中的特殊繼電器的第0,1,2位。
各個(gè)高速計(jì)數(shù)器的計(jì)數(shù)方向的控制,設(shè)定值和當(dāng)前值的控制和執(zhí)行高速計(jì)數(shù)的控制,是由表4-22中各個(gè)相關(guān)控制字節(jié)的第3位至第7位決定的。
6.高速計(jì)數(shù)器的當(dāng)前值寄存器和設(shè)定值寄存器
每個(gè)高速計(jì)數(shù)器都有1個(gè)32位的經(jīng)過值寄存器HC0-HC5,同時(shí)每個(gè)高速計(jì)數(shù)器還有1個(gè)32位的當(dāng)前值寄存器和1個(gè)32位的設(shè)定值寄存器,當(dāng)前值和設(shè)定值都是有符號的整數(shù)。為了向高速計(jì)數(shù)器裝入新的當(dāng)前值和設(shè)定值,必須先將當(dāng)前值和設(shè)定值以雙字的數(shù)據(jù)類型裝入如表所列的特殊寄存器中。然后執(zhí)行HSC指令,才能將新的值傳送給高速計(jì)數(shù)器。
7.高速計(jì)數(shù)器的初始化
由于高速計(jì)數(shù)器的HDEF指令在進(jìn)入RUN模式后只能執(zhí)行1次,為了減少程序運(yùn)行時(shí)間優(yōu)化程序結(jié)構(gòu),一般以子程序的形式進(jìn)行初始化。下面以HC2為例,介紹高速計(jì)數(shù)器的各個(gè)工作模式的初始化步驟。
(1)利用SM0.1來調(diào)用一個(gè)初始化子程序。
(2)在初始化子程序中,根據(jù)需要向SMB47裝入控制字。例如,SMB47=16#F8,其意義是:準(zhǔn)許寫入新的當(dāng)前值,準(zhǔn)許寫入新的設(shè)定值,計(jì)數(shù)方向?yàn)樵?jì)數(shù),啟動(dòng)和復(fù)位信號為高電平有效。
(3)執(zhí)行HDEF指令,其輸入?yún)?shù)為:HSC端為2(選擇2號高速計(jì)數(shù)器),MODE端為0/1/2(對應(yīng)工作模式0,模式1,模式2)。
(4)將希望的當(dāng)前技術(shù)值裝入SMD58(裝入0可進(jìn)行計(jì)數(shù)器的清零操作) 5. 將希望的設(shè)定值裝入SMD62。
(5)如果希望捕獲當(dāng)前值等于設(shè)定值的中斷事件,編寫與中斷事件號16相關(guān)聯(lián)的中斷服務(wù)程序。
(6)如果希望捕獲外部復(fù)位中斷事件,編寫與中斷事件號18相關(guān)聯(lián)的中斷服務(wù)程
序。
(7)執(zhí)行ENI指令
(8)執(zhí)行HSC指令
(9)退出初始化子程序
8.高速計(jì)數(shù)器應(yīng)用舉例
某產(chǎn)品包裝生產(chǎn)線用高速計(jì)數(shù)器對產(chǎn)品進(jìn)行累計(jì)和包裝,每檢測1000個(gè)產(chǎn)品時(shí),自動(dòng)啟動(dòng)包裝機(jī)進(jìn)行包裝,計(jì)數(shù)方向可由外部信號控制。 設(shè)計(jì)步驟:
(1)選擇高速計(jì)數(shù)器,確定工作模式
在本例中,選擇的高速計(jì)數(shù)器為HC0,由于要求技術(shù)方向可由外部信號控制,而其不要復(fù)位信號輸入,確定工作模式為模式3,采用當(dāng)前值等于設(shè)定值得中斷事件,中斷事件號為12,啟動(dòng)包裝機(jī)工作子程序,高速計(jì)數(shù)器的初始化采用子程序。
(2)用SM0.1調(diào)用高速計(jì)數(shù)器初始化子程序,子程序號為SBR_0。
(3)向SMB37寫入控制字SMB37=16#F8。
(4)執(zhí)行HDEF指令,輸入?yún)?shù):HSC為0,MODE為3。
(5)向SMD38寫入當(dāng)前值,SMD38=0。
(6)向SMD42寫入設(shè)定值。SMD42=1000。
(7)執(zhí)行建立中斷連接指令A(yù)TCH,輸入?yún)?shù):INT為INT-0,EVNT為12。
(8)編寫中斷服務(wù)程序INT0,在本例中為調(diào)用包裝機(jī)控制子程序,子程序號為SBR -1。
(9)執(zhí)行全局開中斷指令ENI。
(10)執(zhí)行HSC指令,對高速計(jì)數(shù)器編程并投入運(yùn)行。
下面是程序示例:
MAIN:
子程序和中斷程序沒有寫。
以上就是億維UN200 CPU的高速計(jì)數(shù)功能的詳解。希望此篇文章對大家在高速計(jì)數(shù)的理解和應(yīng)用方面有所幫助。