前面我們學(xué)習(xí)了子程序和中斷,那么今天我們就轉(zhuǎn)而學(xué)習(xí)高速計(jì)數(shù)器的內(nèi)容,高速計(jì)數(shù)器經(jīng)常被用于距離檢測(cè),用于電機(jī)轉(zhuǎn)數(shù)檢測(cè),高速計(jì)數(shù)器也是一個(gè)比較重要的內(nèi)容,也是比較常會(huì)用到的,我們要掌握一下的,那么今天就先對(duì)高速計(jì)數(shù)器的基本內(nèi)容做個(gè)了解。
高速計(jì)數(shù)器可以對(duì)CPU掃描速度無(wú)法控制的高速事件進(jìn)行計(jì)數(shù),簡(jiǎn)單的說(shuō)就是對(duì)高速輸入輸出信號(hào)進(jìn)行計(jì)數(shù)。S7-200 CPU內(nèi)置最多只有6個(gè)高速計(jì)數(shù)器HSC0~HSC5,其中PLC221及PLC222不支持HSC1及HSC2,這里我們要注意一下。高速計(jì)數(shù)器是有專(zhuān)用輸入的,具體的可以參考下表。我們要注意的是同一個(gè)輸入是不能用于不同的功能的,比如說(shuō)I0.0,它既可以是普通輸入,也可以是中斷輸入,也可以是高速輸入,這三個(gè)功能只能選擇其中一個(gè),也就是說(shuō)要是I0.0作為了高速輸入用,就不能作為普通輸入或中斷輸入用。
高速計(jì)數(shù)器大體可以分為四種,第一種是帶內(nèi)部方向控制的單相計(jì)數(shù)器,這種計(jì)數(shù)器只有一個(gè)計(jì)數(shù)輸入端,其控制計(jì)數(shù)方向由內(nèi)部繼電器控制,工作模式為模式0、1、2。第二種是帶外部方向控制的單相計(jì)數(shù)器,這種計(jì)數(shù)器也是只有一個(gè)計(jì)數(shù)輸入端,但是是由外部輸入控制其計(jì)數(shù)方向的,工作模式為模式3、4、5。第三種計(jì)數(shù)器是具有兩個(gè)時(shí)鐘輸入的雙向計(jì)數(shù)器,這種計(jì)數(shù)器有兩個(gè)計(jì)數(shù)輸入端,一個(gè)增計(jì)數(shù)輸入端,一個(gè)減計(jì)數(shù)輸入端,工作模式為模式6、7、8。第四種計(jì)數(shù)器是A/B相正交計(jì)數(shù)器。這種計(jì)數(shù)器有兩個(gè)時(shí)鐘脈沖輸入端,一個(gè)輸入端叫A相,一個(gè)輸端叫B相。當(dāng)A相時(shí)鐘脈沖超前B相時(shí)鐘脈沖時(shí),計(jì)數(shù)器進(jìn)行增計(jì)數(shù)。當(dāng)A相時(shí)鐘脈沖滯后B相時(shí)鐘脈沖時(shí),計(jì)數(shù)器進(jìn)行減計(jì)數(shù)。這種計(jì)數(shù)器的工作模式為模式9、10、11。我們可以看到下表,里面的的HSC模式有0,-12,其中模式0-11是用于接收外部輸入信號(hào)的,模式12是用于Q0.0、Q0.1輸出計(jì)數(shù)的。
下面我們?cè)倏匆贿@個(gè)表格應(yīng)該怎么去看,這里的HSC0的專(zhuān)用輸入為I0.0、 I0.1、I0.2,假如我們就用HSC0,并且選擇的是模式3,那么I0.0就是脈沖輸入端,I0.1就是方向控制端。這里的HSC1的專(zhuān)用輸入為I0.6、I0.7、I1.0、I1.1,假如我們就用HSC1,并且選擇的是模式11,那么I0.6就是A相脈沖輸入端,I0.7就是B相脈沖輸入斷,I1.0是復(fù)位端,I01.1是啟動(dòng)端。
2014-10-17 17:11 上傳
下載附件 (19.88 KB)
2014-10-17 17:11 上傳
下載附件 (11.32 KB)
下面我們?cè)倏匆幌赂咚儆?jì)數(shù)器的控制字節(jié),每一個(gè)高速計(jì)數(shù)器都有一個(gè)控制字節(jié),該字節(jié)的每一位都反映了這個(gè)計(jì)數(shù)器的工作狀態(tài),下表就是對(duì)應(yīng)的控制位表。HSC0、HSC1、HSC2、HSC4 這四個(gè)計(jì)數(shù)器的三個(gè)控制位bit0、bit1、bit2,是分別用來(lái)復(fù)原和啟動(dòng)的控制和選擇1x或4x速率計(jì)數(shù)模式,我們要注意的是這三個(gè)位只在執(zhí)行HEDF指令中時(shí)才使用。
對(duì)于其他位,bit7位為使能,我們一般默認(rèn)是啟用HSC,為1的,bit6位為是否更新當(dāng)前值,這里可以為1可以為0,bit5位為是否更新設(shè)定值,我們一般默認(rèn)是更新設(shè)定值,為1的,bit4位為是否更新方向,我們一般也默認(rèn)為更新方向,為1的,bit3位為計(jì)數(shù)方向控制,1是加計(jì)數(shù),0是減計(jì)數(shù),所以是可以為1可以為0的。
因?yàn)橐话銇?lái)說(shuō)bit6和bit3是可以為1可以為0,其他位一般默認(rèn)為1,那么這8個(gè)位就有四種組合,分別為11111000,11110000,10111000,10110000,那么把二進(jìn)制數(shù)轉(zhuǎn)換成16進(jìn)制數(shù)為16#F8、16#F0、16#B8、16#B0,16#F8為更新當(dāng)前值加計(jì)數(shù),16#F0為更新當(dāng)前值減計(jì)數(shù),16#B8為不更新當(dāng)前值加計(jì)數(shù),16#B0為不更新當(dāng)前值減計(jì)數(shù)。這樣我們?cè)诙x控制字節(jié)時(shí)可以直接利用16#F8、16#F0、16#B8、16#B0這四個(gè)值。
2014-10-17 17:11 上傳
下載附件 (21.13 KB)
除了定義控制字節(jié),我們還要設(shè)置初始值和預(yù)設(shè)值。每個(gè)高速計(jì)數(shù)器都有一個(gè)32位初始值和一個(gè)32位預(yù)設(shè)值,如果我們要向高速計(jì)數(shù)器載入新初始值和預(yù)設(shè)值,我們必須設(shè)置初始值和預(yù)設(shè)值的特殊內(nèi)存字節(jié),然后執(zhí)行HSC指令,才能將新數(shù)值寫(xiě)入到高速計(jì)數(shù)器中,這是我們要注意的。
2014-10-17 17:12 上傳
下載附件 (7.12 KB)
那么我們使用高速計(jì)數(shù)器是有個(gè)流程的,第一,定義控制字節(jié);第二,是否有初始值,有要設(shè)置初始值的特殊內(nèi)存字節(jié);第三,是否有預(yù)設(shè)值,有要設(shè)置預(yù)設(shè)值的特殊內(nèi)存字節(jié);第四,定義高速計(jì)數(shù)模式和選擇高速計(jì)數(shù)器;第五,激活高速計(jì)數(shù)器。我們要注意的是我們?cè)谑褂酶咚儆?jì)數(shù)器時(shí),只需要接通一個(gè)掃描周期就可以了。
那么以上就是高速計(jì)數(shù)器的一下基本內(nèi)容,關(guān)于高速計(jì)數(shù)器的應(yīng)用就在后面繼續(xù)學(xué)習(xí)。
聯(lián)系客服