可以用到高速計(jì)數(shù)器hsc,中斷及運(yùn)算,最大脈沖數(shù)為32767。
速度測量方法
用定時(shí)中斷測前一次計(jì)數(shù)和本次計(jì)數(shù)差值,乘以定時(shí)中斷的頻率,再除以編碼器分辨率就是轉(zhuǎn)速了。
假如本次中斷計(jì)數(shù)器計(jì)數(shù)值是vd4,上次計(jì)數(shù)值是vd0,定時(shí)中斷時(shí)間為0.1秒,編碼器分辨率是2000p/r
那么轉(zhuǎn)速就是(vd4-vd0)/10/2000
計(jì)數(shù)方法參見如下資料
1、建一個(gè)初始化程序,用SM0.1控制;
2、在初始化程序中,初始化高速計(jì)數(shù)器
2.1 設(shè)置控制寄存器(HSC0為SMB37),不同的計(jì)數(shù)器對應(yīng)不同的DI點(diǎn),HSC0為I0.0,HSC3為I0.1,HSC4為I0.2,HSC5為I0.3(222不支持HSC1和HSC2)
2.2 執(zhí)行HDEF指令,你可以用模式0
2.3 置計(jì)數(shù)器初始值(HSC0為SMD38),如果從零啟動(dòng)就置零
2.4 置預(yù)置值(HSC0為SMD42),計(jì)數(shù)器計(jì)到這個(gè)值可以產(chǎn)生一個(gè)中斷,一般利用這個(gè)中斷調(diào)用相應(yīng)的中斷程序把當(dāng)前值(SMD38)復(fù)零,否則計(jì)數(shù)器到頭就不再計(jì)數(shù)了,當(dāng)然你也可以置一個(gè)大點(diǎn)的值,在其他程序中清除當(dāng)前值(SMD38),確保永遠(yuǎn)到不了頭就可以了。
2.5 指定中斷程序(ATCH),中斷事件是12,程序號看你程序了
2.6 打開中斷(ENI),這條指令沒有的話,2.5是不起作用的
2.7 啟動(dòng)高速計(jì)數(shù)器(HSC),按前面的初始化,你就要啟動(dòng)HSC0,即N為0
3、程序中讀取高速計(jì)數(shù)器的值,對于HSC0,HC0單元中的內(nèi)容就是當(dāng)前的計(jì)數(shù)值,這個(gè)單元只讀不能寫,你可以通過修改SMD38的內(nèi)容改變當(dāng)前的計(jì)數(shù)值。