西門子: | 西門子工業(yè)交換機代理商 |
西門子工業(yè)交換機: | 西門子工業(yè)交換機一級代理 |
德國: | 西門子工業(yè)交換機授權(quán)代理 |
單價: | 面議 |
發(fā)貨期限: | 自買家付款之日起 天內(nèi)發(fā)貨 |
所在地: | 直轄市 上海 上海寶山 |
有效期至: | 長期有效 |
發(fā)布時間: | 2023-12-13 19:41 |
最后更新: | 2023-12-13 19:41 |
瀏覽次數(shù): | 82 |
采購咨詢: |
請賣家聯(lián)系我
|
西門子兩個控制例子的程序設(shè)計和編程思路。
一、高速計數(shù)器的模擬控制
高速計數(shù)器的模擬控制是用S7-200 PLC的高速計數(shù)器來累計來自模擬量/頻率轉(zhuǎn)換器(A/F)的脈沖來模擬電壓值的。假設(shè)頻率轉(zhuǎn)換器將輸入電壓(0-10V)轉(zhuǎn)換為矩形脈沖信號(0-2000Hz),再將此信號送入CPU 高速記數(shù)器的輸入端并累計脈沖數(shù)。當(dāng)預(yù)置的間隔時間到后,通過累計脈沖數(shù),計算出被測模擬電壓值。
主程序:
主程序中在***個掃描周期調(diào)用初始化程序SBR0,僅在***個掃描周期標(biāo)志位SM0.1=ON時由子程序?qū)崿F(xiàn)初始化。
子程序:
在子程序中,首先把高速計數(shù)器HSC1的控制字節(jié)SMB47置為16#FC,其含義是:加計數(shù),可更新預(yù)置值(PV),可更新當(dāng)前值(CV),用指令HDEF把高速計數(shù)器HSC1置成工作模式0,即沒有復(fù)位或起始輸入,也沒有外部的方向選擇。當(dāng)前值SMD48復(fù)位為0,預(yù)置值SMD52置為FFFF(十六進制),定時中斷0間隔時間SMB34置為100ms,用ATCH指令將中斷程序0分配給中斷事件10,即定時中斷0,并用ENI指令允許中斷,用指令HSC啟動高速計數(shù)器HSC1。
中斷程序:
因為定時中斷0間隔時間SMB34置為100ms,所以每100ms調(diào)用一次中斷程序0,讀出高速計數(shù)器的數(shù)值存到VD100,后將其置零。案例是通過頻率轉(zhuǎn)換器將輸入電壓(0-10V)轉(zhuǎn)換為矩形脈沖信號(0-2000Hz),通過HSC1的計數(shù)值及變換關(guān)系(0-2000kHz對應(yīng)于0-10V)來求被測的模擬電壓值。SHR-DW為右移指令,將VD100的二進制位右移一位,相當(dāng)于是除于2,也就是將VD100的脈沖數(shù)除以2,然后將低位的VB103輸出到QB0,以便通過Q0.0~Q0.7的LED來顯示被測的電壓值,顯示值與10倍真實電壓值相對應(yīng)。
關(guān)于計算部分,我們舉例計算一下,假如計數(shù)值為200,200除以2是100,那么被測的模擬電壓值就是10.0V。因為計數(shù)器100ms內(nèi)共有200個計數(shù)脈沖,這正好與2000Hz-10V相對應(yīng), 假設(shè)計數(shù)值為104,則實際電壓值應(yīng)為5.2V。注意:定時中斷間隔時間可在5-255ms的范圍內(nèi)變化,我們可以通過設(shè)立一個標(biāo)志,可根據(jù)需要來延長高速計數(shù)器的求值和復(fù)位時間,這樣就有更長的掃描間隔,以便提高***度,同時也會帶來更長的更新時間。
二、高速計數(shù)器的測速控制
高速計數(shù)器的測速控制是利用高速計數(shù)器來實現(xiàn)測量轉(zhuǎn)速,比如說測電機的轉(zhuǎn)速。其中會利用到脈沖數(shù)和電機轉(zhuǎn)速的計算。設(shè)計思路是主程序中調(diào)用子程序進行初始化,子程序中做高速計數(shù)器及中斷的定義,中斷程序中做轉(zhuǎn)化計算部分,下面我們詳細(xì)看一下程序。
主程序:
在PLC上電運行的***個掃描周期執(zhí)行一次子程序,用于程序運行的初始化設(shè)置。
子程序:
在子程序中,首先對VB0和VD0進行清零,VB0用于記錄累加數(shù)據(jù)的次數(shù),VD0累加數(shù)據(jù)的中間變量。接著設(shè)置高速計數(shù)器HSC0的控制字節(jié)為16#F8,即更新當(dāng)前值,加計數(shù),用指令HDEF把高速計數(shù)器HSC0置成工作模式0,為單相計數(shù)輸入,沒有外部控制功能。當(dāng)前值SMD38復(fù)位為0,定時中斷0間隔時間SMB34置為50ms,用ATCH指令將中斷程序0分配給中斷事件10,即定時中斷0,并用ENI指令允許中斷,用指令HSC啟動高速計數(shù)器HSC0。
中斷程序:
中斷程序是每隔50ms掃描刷新一次,采用加法指令將高速計數(shù)器HC0的當(dāng)前計數(shù)值和累加數(shù)據(jù)變量VD0相加一次,用于數(shù)據(jù)的累加,同時用遞增指令對VB9進行加1,即記錄累加的次數(shù),這里再執(zhí)行一次HSC指令是為了將初始值寄存器SMD38再次寫入高速計數(shù)器HC0,使當(dāng)前值為0,以便于下一次的定時采樣。
當(dāng)累加數(shù)據(jù)的次數(shù)等于32次時,執(zhí)行運算指令,除法指令除以32是計算出累計脈沖數(shù)的平均值,乘以100是將平均值轉(zhuǎn)化成以轉(zhuǎn)/分單位的數(shù)據(jù),并存到VD4中,用DI_I指令是將雙整數(shù)轉(zhuǎn)換成整數(shù),存儲到VW10中,VW10就是電機的轉(zhuǎn)速,后面的傳送指令是對VB0和VD0進行清零,用于下一次重新開始累加。