王安邦++徐從躍++何升慶
摘 要本文主要講述了在如何在編程中使用壓棧堆棧的方法對(duì)延時(shí)進(jìn)行處理,分別使用了數(shù)據(jù)傳送的方式以及指針的方式進(jìn)行編程,對(duì)兩種編程方法進(jìn)行了比較,并對(duì)兩種編程方法的適用性以及靈活性進(jìn)行了分析。
【關(guān)鍵詞】自動(dòng)控制系統(tǒng) PLC 壓棧堆棧
目前,在自動(dòng)控制系統(tǒng)中,我們經(jīng)常遇到需要處理延時(shí)加水或加料的問(wèn)題,一般常使用壓棧堆棧處理來(lái)實(shí)現(xiàn)延時(shí)。現(xiàn)在我們以設(shè)備自動(dòng)加水系統(tǒng)為例,通過(guò)在PLC控制系統(tǒng)中使用這種控制方法。
在設(shè)備自動(dòng)加水系統(tǒng)中,一般根據(jù)電子秤的物料流量乘以加水系數(shù)來(lái)計(jì)算加水的流量,由于電子秤上物料到加水位置有一段距離,為了保證把水準(zhǔn)確的施加到物料的表面,我們需要對(duì)物料流量進(jìn)行延時(shí)處理。 下面我們使用壓棧堆棧方法來(lái)處理,實(shí)現(xiàn)延時(shí)加水。
1 使用數(shù)據(jù)傳送進(jìn)行程序編制
電子稱(chēng)上物料距離加水點(diǎn)需要5秒時(shí)間,我們通過(guò)對(duì)西門(mén)子PLC程序進(jìn)行改進(jìn),來(lái)實(shí)現(xiàn)延時(shí)加水。我們把電子稱(chēng)流量數(shù)據(jù)變量名定為DB10.DBD100,延時(shí)后的電子稱(chēng)流量為DB10.DBD200。然后這個(gè)數(shù)字乘以加水系數(shù)即為當(dāng)前加水位置的水流量。程序如圖1所示。
在圖1中,使用時(shí)間繼電器來(lái)實(shí)現(xiàn)0.5秒的震蕩脈沖,即M432.0每隔0.5秒接通一次, 然后在圖2中, 在第一秒時(shí)M432.0接通,程序跳轉(zhuǎn)執(zhí)行M003,此時(shí)把電子稱(chēng)流量DB10.DBD100傳送給DB20.DBD0,其余的DB20.DBD4 、DB20.DBD12等數(shù)據(jù)為空,在第1.5秒時(shí),程序開(kāi)始執(zhí)行M004,把第一秒的電子稱(chēng)流量傳送給DB20.DBD4,此時(shí)在DB20.DBD0和DB20.DBD4中存儲(chǔ)的數(shù)據(jù)都為第一秒的電子稱(chēng)流量。在第2秒時(shí),程序執(zhí)行M003,把第2秒的電子稱(chēng)流量傳送給DB20.DBD0,同時(shí)把DB20DBD4傳送給DB20.DBD8,此時(shí)DB20.DBD4和DB20.DBD8中儲(chǔ)存的數(shù)據(jù)為第一秒的電子稱(chēng)流量。當(dāng)程序連續(xù)執(zhí)行時(shí),DB20.DBD40儲(chǔ)存的數(shù)據(jù)是5秒前的數(shù)據(jù),即DB20.DBD40的數(shù)據(jù)是電子稱(chēng)數(shù)據(jù)經(jīng)過(guò)5秒后輸出的數(shù)據(jù),也就是經(jīng)過(guò)了5秒的延時(shí)。然后把DB20.DBD40傳送給DB10.DBD200,這樣DB10.DBD200就是電子稱(chēng)流量DB10.DBD100延時(shí)5秒的數(shù)據(jù)。這樣
把DB10.DBD200乘以加水系數(shù),算出當(dāng)前加水量,即可實(shí)現(xiàn)當(dāng)前延時(shí)加水。
上面的這種方法直接使用脈沖,通過(guò)PLC程序的跳轉(zhuǎn)來(lái)在數(shù)據(jù)塊中傳送數(shù)據(jù),實(shí)現(xiàn)了數(shù)據(jù)的延時(shí)輸出,但是這種方法編程所使用的程序字節(jié)較多,當(dāng)需要延時(shí)50秒時(shí),程序占用的字節(jié)就會(huì)很多,需要一直傳送到DB20.DBD400,編程起來(lái)比較繁瑣如果需要延時(shí)100秒、200秒呢!這是我們使用另一種帶指針的編程方法來(lái)實(shí)現(xiàn)。使用指針來(lái)進(jìn)行編程。
2 使用指針進(jìn)行程序編制
我們以50秒數(shù)據(jù)延時(shí)為例,來(lái)進(jìn)行指針編程。見(jiàn)圖3。
圖3的程序被塊OB32(每隔1秒掃描一次)調(diào)用,其中主要使用FB11功能塊來(lái)實(shí)現(xiàn)電子稱(chēng)數(shù)據(jù)延時(shí),而FB11功能塊的內(nèi)部程序見(jiàn)圖4。我們來(lái)分析一下圖4中的程序如何實(shí)現(xiàn)50秒延時(shí)。首先,#in1為輸入數(shù)據(jù)50,代表50秒延時(shí),把#in1裝入臨時(shí)變量#tm3來(lái)同進(jìn)行比較,如果小于700,程序跳轉(zhuǎn)至m001,在把 #tm3同1進(jìn)行比較,如果大于1,程序跳轉(zhuǎn)至m002,裝載靜態(tài)變量#st2(初始值為0),程序FB11每掃描一次#st2的數(shù)值加1,然后同#tm3進(jìn)行比較,如果小于#tm3,在程序跳轉(zhuǎn)至m003,如果#st2大于數(shù)值大于50,則程序會(huì)先把#st2重新置零,然后在跳轉(zhuǎn)至m003。在m003中,首先對(duì)#st2左移5位,也就是把數(shù)字#st2乘以32,這樣就等于是把數(shù)字“位”變化成了雙字,即在數(shù)據(jù)塊中只會(huì)出現(xiàn)DBD0、DBD4、DBD8等之類(lèi)的數(shù)據(jù),地址指針指向#st1(初始值為0),把它同#st2相加,然后把對(duì)應(yīng)的地址裝載如地址寄存器AR1。程序每隔一秒掃描一次,這樣在第一秒時(shí)把DBD0傳送給#out(延時(shí)后的電子稱(chēng)流量),然后把#in0(電子稱(chēng)流量)傳送給DBD0,以后每隔一秒均是如此,大家可以看到到第50秒時(shí)把DBD196傳送給#out,然后把當(dāng)前的電子稱(chēng)流量#in0傳送給DBD196。這種使用指針的編程方法實(shí)現(xiàn)了數(shù)據(jù)的延時(shí)處理,而且比較靈活,只要在圖3中#in1的引腳輸入不同的數(shù)字,即可實(shí)現(xiàn)不同時(shí)間的延時(shí)。
數(shù)據(jù)延時(shí)在自動(dòng)控制系統(tǒng)中使用的較為廣泛,使用第一種數(shù)據(jù)傳送的方法編程較為簡(jiǎn)單也容易理解,使用第二中指針編程的方法,在程序內(nèi)部使用地址寄存器來(lái)實(shí)現(xiàn)數(shù)據(jù)傳送,結(jié)構(gòu)要復(fù)雜一些,但是這種功能塊比較靈活,可以實(shí)現(xiàn)不同的延時(shí),而且可以反復(fù)調(diào)用。
參考文獻(xiàn)
[1]程昊.PLC變頻器用于大中型企業(yè)電氣自動(dòng)化控制的可行性[J].科技展望,2017,27(17):145.
[2]王穎麗.可編程邏輯控制器技術(shù)的發(fā)展[J/OL].河南科技,2016(03):24.
作者單位
安徽中煙工業(yè)有限責(zé)任公司合肥卷煙廠(chǎng) 安徽省合肥市 230601endprint