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