關(guān)于plc,我是個(gè)初學(xué)者,今天在此對自己前一段時(shí)間的學(xué)習(xí)做個(gè)總結(jié),以備后用。由于本人水平有限,本文一定還存在不少錯(cuò)誤和不妥之處,敬請大家批評指正。
本文所有程序,均在step7template.mwp中編寫,cpu類型選西門子s7—200系列226 cn。
先說程序,測低速(每分鐘1000轉(zhuǎn)以下): ld i0.0
ld m20.1
ctu c0,+5000 //設(shè)定增計(jì)數(shù)器上限
ld sm0.0
a m20.0
ton t37,+30 //立即接通,延時(shí)三秒斷開
ld sm0.0
o m20.0#p#分頁標(biāo)題#e#
an t37
= m20.0 //設(shè)定t37定時(shí)器復(fù)位信號
ld m20.0
ld m20.1
ctu c1,+20 //設(shè)定增計(jì)數(shù)器c1上限
ld c1
movw c0,vw200
= m20.2
ld m20.2
= m20.1 //設(shè)定增計(jì)數(shù)器c1的復(fù)位信號
外圍電路下面介紹,先講程序。由i0.0作輸入口,t37延時(shí)三秒后給c1一個(gè)信號,c1計(jì)1,然后t37被復(fù)位,再延時(shí),3秒后c1計(jì)2,…
直到c1計(jì)到20。20個(gè)三秒就是一分鐘,期間i0.0口的脈沖信號由c0計(jì)數(shù)器計(jì)數(shù),計(jì)滿一分鐘就把結(jié)果移到vw200中。脈沖信號由外圍電路得到。
以上程序能測一千以下的轉(zhuǎn)速,實(shí)驗(yàn)時(shí)上限是一千四百多吧。由于該程序用的是低速計(jì)數(shù)器,轉(zhuǎn)速較高時(shí),受plc時(shí)鐘周期影響,在一分鐘時(shí)轉(zhuǎn)速還未記好,c0就被清零,所以會(huì)有上限。接下來我們用plc內(nèi)部不受時(shí)鐘周期影響的高速計(jì)數(shù)器來測高速(一千轉(zhuǎn)以上):
ld sm0.1
call sbr_0 //調(diào)用高速計(jì)數(shù)器初始化子程序
ld sm0.0
a m20.0
ton t37,+100 //設(shè)定計(jì)時(shí)器值,延時(shí)10秒
ld sm0.0
o m20.0
an t37
= m20.0 //立即接通延時(shí)十秒斷開
ld t37
movd hc0, vd100 //i0.0為高速計(jì)數(shù)器hc0輸入口,計(jì)數(shù)結(jié)果移入vd100
movd vd100, vd200
mul +6, vd200 //計(jì)數(shù)結(jié)果乘以6,放入vd200
ld t37
call sbr_0 //t37計(jì)時(shí)到,調(diào)用高速計(jì)數(shù)器初始化子程序
sbr_0 //高速計(jì)數(shù)器初始化子程序#p#分頁標(biāo)題#e#
ld sm0.0
movb 16#f8, smb37 //設(shè)置控制位:增計(jì)數(shù);已使能;
movd +0, smd38 //裝載 cv
movd +0, smd42 //裝載 pv
hdef 0, 0
hsc 0
以上程序測速范圍為1000轉(zhuǎn)以上,實(shí)驗(yàn)時(shí)測得最高為2500+,因?qū)嶒?yàn)條件有限,上限未知。有人會(huì)有疑問:你怎么采用的是測10秒,然后將計(jì)數(shù)結(jié)果乘以6當(dāng)做一分鐘的轉(zhuǎn)速,而不直接測一分鐘的轉(zhuǎn)速呢?因?yàn)檗D(zhuǎn)速結(jié)果最后要用數(shù)碼管顯示出來,對觀察者來說,10秒以后顯示與一分鐘后顯示相比,前者更好一些。最后我們采用的是6乘以10的策略。
最后來說說外圍電路吧。外圍電路把轉(zhuǎn)速轉(zhuǎn)換成脈沖信號輸入plc,上面兩段程序用的都是i0.0口。信號的轉(zhuǎn)換和采集用霍爾傳感器,
接法如圖:vcc接24v,gnd接電源負(fù)極,a接信號輸入端i0.0,a端和24v間接電阻。接好后將霍爾元件平的一面朝被測物體固定好,如一個(gè)輪子,在輪子面上霍爾對應(yīng)位置安裝霍爾磁體。測速原理:輪子每轉(zhuǎn)一圈,磁體和霍爾元件接觸一次(其實(shí)是接近),它們接觸時(shí)帶來a端電壓的降低,由此給plc一個(gè)脈沖信號。磁體和霍爾之間間距3至5mm。安裝時(shí)注意磁體的正反面。
好了,測轉(zhuǎn)速就先說這么多。經(jīng)過以上這些,測得的數(shù)據(jù)只是放在plc的內(nèi)存里,我們可以在軟件里監(jiān)測plc運(yùn)行情況,看到這些數(shù)據(jù)。是不是有點(diǎn)麻煩,有沒有更好的方法能看到這些數(shù)據(jù)?當(dāng)然,可以用led數(shù)碼管來把數(shù)據(jù)顯示出來。