湖南常德西門子代理商|授權代理
均在Step7Template.mwp中編寫,CPU類型選西門子S7—200系列226CN。
先說程序,測低速(每分鐘1000轉以下):LDI0.0
LDM20.1
CTUC0,+5000//設定增計數(shù)器上限
LDSM0.0
AM20.0
TONT37,+30//立即接通,延時三秒斷開
LDSM0.0
OM20.0#p#分頁標題#e#
ANT37
=M20.0//設定T37定時器復位信號
LDM20.0
LDM20.1
CTUC1,+20//設定增計數(shù)器C1上限
LDC1
MOVWC0,VW200
=M20.2
LDM20.2=M20.1//設定增計數(shù)器C1的復位信號
外圍電路下面介紹,先講程序。由I0.0作輸入口,T37延時三秒后給C1一個信號,C1計1,然后T37被復位,再延時,3秒后C1計2,…
直到C1計到20。20個三秒就是一分鐘,期間I0.0口的脈沖信號由C0計數(shù)器計數(shù),計滿一分鐘就把結果移到VW200中。脈沖信號由外圍電路得到。
以上程序能測一千以下的轉速,實驗時上限是一千四百多吧。由于該程序用的是低速計數(shù)器,轉速較高時,受PLC時鐘周期影響,在一分鐘時轉速還未記好,C0就被清零,所以會有上限。接下來我們用PLC內(nèi)部不受時鐘周期影響的高速計數(shù)器來測高速(一千轉以上):
LDSM0.1
CALLSBR_0//調(diào)用高速計數(shù)器初始化子程序
LDSM0.0
AM20.0
TONT37,+100//設定計時器值,延時10秒
LDSM0.0
OM20.0ANT37
=M20.0//立即接通延時十秒斷開
LDT37
MOVDHC0,VD100//I0.0為高速計數(shù)器HC0輸入口,計數(shù)結果移入VD100
MOVDVD100,VD200
MUL+6,VD200//計數(shù)結果乘以6,放入VD200
LDT37
CALLSBR_0//T37計時到,調(diào)用高速計數(shù)器初始化子程序
SBR_0//高速計數(shù)器初始化子程序#p#分頁標題#e#
LDSM0.0
MOVB16#F8,SMB37//設置控制位:增計數(shù);已使能;
MOVD+0,SMD38//裝載CV
MOVD+0,SMD42//裝載PV
HDEF0,0
HSC0
以上程序測速范圍為1000轉以上,實驗時測得zui高為2500+,因實驗條件有限,上限未知。有人會有疑問:你怎么采用的是測10秒,然后將計數(shù)結果乘以6當做一分鐘的轉速,而不直接測一分鐘的轉速呢?因為轉速結果zui后要用數(shù)碼管顯示出來,對觀察者來說,10秒以后顯示與一分鐘后顯示相比,前者更好一些。zui后我們采用的是6乘以10的策略。
zui后來說說外圍電路吧。外圍電路把轉速轉換成脈沖信號輸入PLC,上面兩段程序用的都是I0.0口。信號的轉換和采集用霍爾傳感器,
接法如圖:VCC接24V,GND接電源負極,A接信號輸入端I0.0,A端和24V間接電阻。接好后將霍爾元件平的一面朝被測物體固定好,如一個輪子,在輪子面上霍爾對應位置安裝霍爾磁體。測速原理:輪子每轉一圈,磁體和霍爾元件接觸一次(其實是接近),它們接觸時帶來A端電壓的降低,由此給PLC一個脈沖信號。磁體和霍爾之間間距3至5mm。安裝時注意磁體的正反面。
好了,測轉速就先說這么多。經(jīng)過以上這些,測得的數(shù)據(jù)只是放在PLC的內(nèi)存里,我們可以在軟件里監(jiān)測PLC運行情況,看到這些數(shù)據(jù)。是不是有點麻煩,有沒有更好的方法能看到這些數(shù)據(jù)?當然,可以用LED數(shù)碼管來把數(shù)據(jù)顯示出來
3.在TIA 博途中添加庫文件,并將庫中的Easy_SINA_Pos功能塊拖拽到左側"程序塊"中
4.在OB1中調(diào)用Easy_SINA_Pos功能塊,為功能塊各參數(shù)添加變量:
注意:對功能塊參數(shù)HWI DSTW及HWI DSZW的賦值可以通過點擊參數(shù),在下拉菜單中選擇對應的西門子報文111選項。
也可以參看下圖,在設備視圖的報文屬性中查詢硬件標識符的數(shù)值: