戚陽(yáng)楊捷
(云南民族大學(xué),云南昆明650500)
隨著微型處理器、信息技術(shù)和工業(yè)自動(dòng)化技術(shù)的迅猛發(fā)展,使用計(jì)算機(jī)進(jìn)行工業(yè)自動(dòng)化控制已經(jīng)覆蓋了幾乎所有的工業(yè)領(lǐng)域?,F(xiàn)代社會(huì),工業(yè)制造對(duì)市場(chǎng)的快速反應(yīng)提出了更高的要求??删幊踢壿嬁刂破鳎≒LC)作為一種專門(mén)針對(duì)工業(yè)環(huán)境應(yīng)運(yùn)而生的數(shù)字運(yùn)算操作系統(tǒng),其具有的高穩(wěn)定性、高可靠性、價(jià)格便宜、應(yīng)用靈活方便、功能多樣、操作維護(hù)容易等優(yōu)點(diǎn)使其得到了飛速發(fā)展。在現(xiàn)場(chǎng)總線技術(shù)和以太網(wǎng)技術(shù)也同步發(fā)展的背景下,PLC應(yīng)用的范圍變得愈加廣泛。
本文結(jié)合梯形圖語(yǔ)言和西門(mén)子公司推出的GRAPH編程方法,為PLC編程設(shè)計(jì)者介紹兩種方便、快捷、有效的程序設(shè)計(jì)方法。
順序控制是指預(yù)先設(shè)定工藝生產(chǎn)流程順序,按照不同的時(shí)間順序、邏輯順序或條件控制順序使各個(gè)機(jī)構(gòu)有序地按照預(yù)先設(shè)定的順序依次進(jìn)行工作。不同品牌和類(lèi)型的PLC所使用的編程語(yǔ)言也有細(xì)微的差異,梯形圖(LAD)是一種在各類(lèi)型PLC上使用最多的編程語(yǔ)言,是最易上手、使用最廣泛的PLC語(yǔ)言之一?;谔菪螆D的順序控制設(shè)計(jì)方法有以轉(zhuǎn)換為中心、起保停和置位復(fù)位等分類(lèi)。順序控制設(shè)計(jì)必須保證其連貫性,不同的設(shè)計(jì)方法所適用的編程設(shè)計(jì)環(huán)境不同,在不同的工業(yè)環(huán)境下,不同的設(shè)計(jì)方法所展現(xiàn)出的設(shè)計(jì)功能、難易度、直觀性和程序量都有所不同。在特定的狀況下選擇適合的順序控制設(shè)計(jì)思路和方法是PLC程序設(shè)計(jì)者需要注意的重要問(wèn)題。
LAD是一種圖形編程語(yǔ)言,它采用基于電路圖的表示法,程序以一個(gè)或多個(gè)程序段表示。程序段在梯級(jí)源位置的左側(cè)包含一個(gè)電源線,二進(jìn)制信號(hào)以觸點(diǎn)的形式排列在梯級(jí)上。在梯級(jí)上元素的順序排列構(gòu)成串聯(lián),在并行分支上的排列構(gòu)成并聯(lián)。復(fù)雜函數(shù)用函數(shù)塊表示。
圖1顯示了一個(gè)具有兩個(gè)常開(kāi)觸點(diǎn)、一個(gè)常閉觸點(diǎn)和一個(gè)線圈的LAD程序段(程序段1)。
圖1 LAD編程示例
LAD程序是由在程序段電源線上串聯(lián)或并聯(lián)的各個(gè)元素組成的,必須給多數(shù)程序元素提供變量,至少有一個(gè)梯級(jí)是從電源線引出的。程序段編程從梯級(jí)左邊緣位置開(kāi)始,可以通過(guò)使用多個(gè)梯級(jí)和分支去延伸電源線。
起保停電路是在典型圖中使用比較廣泛的一種梯形圖順序控制設(shè)計(jì)方法。它的設(shè)計(jì)思路如下:如程序段1所示,在給入輸入信號(hào)時(shí)常開(kāi)觸點(diǎn)I0.1動(dòng)作,隨之輸出線圈Q0.1得電,同時(shí)使輸出線圈“自鎖”或“自保持”,輸入線圈I0.1常開(kāi)觸點(diǎn)失去作用。當(dāng)“停止”信號(hào)來(lái)到時(shí),輸入線圈I0.2動(dòng)作,則輸出線圈Q0.1失電停止動(dòng)作。
此次以洗衣機(jī)為例的順序控制設(shè)計(jì)的思路是使用PLC的輸出信號(hào)去控制繼電器組,從而達(dá)到控制電器的目的。通過(guò)對(duì)電機(jī)“正反轉(zhuǎn)”“注水”和“排水”進(jìn)行控制,使電機(jī)的繼電器線圈分別受PLC的輸出信號(hào)控制。洗衣機(jī)順序控制流程如圖2所示。
圖2 順序控制流程圖
針對(duì)上面的流程圖使用博途V15軟件對(duì)PLC進(jìn)行正確的配置組態(tài)后,在主程序塊中按照順序控制流程設(shè)計(jì)了以起保停為邏輯思想的LAD程序。
如圖3所示,使用I0.1為啟動(dòng)按鈕;I0.2為洗滌注水后的高水位監(jiān)測(cè)點(diǎn),監(jiān)測(cè)洗衣機(jī)是否注滿水;使用I0.3作為洗滌后排水是否排凈的低水位監(jiān)測(cè)點(diǎn);使用I0.5為漂洗過(guò)程的高水位監(jiān)測(cè)點(diǎn);使用I0.4作為漂洗后排水的低水位監(jiān)測(cè)點(diǎn)。
圖3 起保停順序控制設(shè)計(jì)
GRAPH是一種可創(chuàng)建順序控制設(shè)計(jì)系統(tǒng)的圖形式編程語(yǔ)言。合理使用順序控制程序,編程者可以更加快捷和清晰直觀地對(duì)順序控制邏輯進(jìn)行編程。可以使用GARPH將順序控制過(guò)程分解為多個(gè)步,設(shè)計(jì)者在每一個(gè)步都設(shè)計(jì)好所需執(zhí)行的程序功能,再將設(shè)計(jì)好的每一個(gè)步合理組織分配到順序控制程序當(dāng)中;在每一個(gè)步中定義好要執(zhí)行的動(dòng)作,并設(shè)計(jì)好當(dāng)前步與下一步之間的轉(zhuǎn)換條件。
基于GARPH的順控系統(tǒng)可以對(duì)整個(gè)過(guò)程進(jìn)行合理的控制,并附加條件對(duì)其進(jìn)行限制。順序控制系統(tǒng)的整體復(fù)雜性由自動(dòng)化任務(wù)決定。GARPH順序控制系統(tǒng)至少包含3個(gè)塊:
(1)GRAPH函數(shù)塊:可以在GRAPH函數(shù)塊中,定義一個(gè)或多個(gè)順控程序的單步和順序控制的步轉(zhuǎn)換條件。
(2)背景數(shù)據(jù)塊:順序控制系統(tǒng)的數(shù)據(jù)和參數(shù)都包含在背景數(shù)據(jù)塊內(nèi)??梢苑峙浔尘皵?shù)據(jù)塊給GARPH函數(shù)塊,并且可以由系統(tǒng)自動(dòng)去生成。
(3)調(diào)用代碼塊:要在一個(gè)循環(huán)中去執(zhí)行GARPH函數(shù)塊,就必須在較高級(jí)代碼塊中去調(diào)用這個(gè)函數(shù)塊,這個(gè)函數(shù)塊可以是一個(gè)函數(shù)(FC)、組織塊(OB)或者其他函數(shù)塊(FB)。一般將GRAPH函數(shù)塊作為一個(gè)單背景調(diào)用。
GRAPH函數(shù)塊中,可以按照順序控制程序的格式去編寫(xiě)程序。順序控制程序不僅可以處理很多個(gè)獨(dú)立的任務(wù),還可以把一個(gè)復(fù)雜的任務(wù)分解成兩個(gè)或者多個(gè)順序控制程序。如果順序控制程序要完成多個(gè)獨(dú)立任務(wù),那么這些順序控制程序在程序流程中需并行處理。如果要使用多個(gè)順序控制程序把一個(gè)復(fù)雜的任務(wù)分解成許多更小的部分,就必須把相關(guān)的順序控制程序和程序跳轉(zhuǎn)相聯(lián)結(jié)。
可以把程序劃分為順序控制程序的各個(gè)步。在比較簡(jiǎn)單的情況下,每個(gè)步可以以線性的方式按順序逐個(gè)處理,但也可以用選擇型分支或者并行分支去創(chuàng)建一些結(jié)構(gòu)更為復(fù)雜的順序控制程序。程序會(huì)始終從我們定義為初始步的那一步開(kāi)始進(jìn)行,一個(gè)順序控制程序可以含有一個(gè)或者多個(gè)初始步。初始步可以在順序控制程序中的任意位置。
激活某一步時(shí),將執(zhí)行當(dāng)前步中的動(dòng)作;若有需要也可同時(shí)去激活多個(gè)步,比如在一些并行分支中。同時(shí)會(huì)相應(yīng)地去檢查下一步的轉(zhuǎn)換條件:若滿足所有需要的轉(zhuǎn)換條件且沒(méi)有未處理的監(jiān)控錯(cuò)誤,轉(zhuǎn)換條件將立刻轉(zhuǎn)換到下一步,這個(gè)步將轉(zhuǎn)換成活動(dòng)步。結(jié)束順序控制程序時(shí),我們使用跳轉(zhuǎn)或按順序結(jié)尾。跳轉(zhuǎn)到的目標(biāo)可以是同一順序控制程序中的任意一步,也可以是其他順序控制程序中的任意一步,這樣有利于順序控制程序的循環(huán)執(zhí)行。
可以使用跳轉(zhuǎn),從GRAPH函數(shù)塊里的任何一步開(kāi)始繼續(xù)程序的執(zhí)行。跳轉(zhuǎn)能夠插入到分支、并行分支或選擇分支的結(jié)尾,從而去激活順序控制程序中的循環(huán)處理。在順序控制程序中,跳轉(zhuǎn)和跳轉(zhuǎn)的目標(biāo)應(yīng)使用箭頭來(lái)表示。在這里,需要去指定跳轉(zhuǎn)目標(biāo)返回跳轉(zhuǎn)的條件和返回的目標(biāo)步,應(yīng)該避免從轉(zhuǎn)換條件去跳轉(zhuǎn)到直接的前導(dǎo)步。若需要執(zhí)行這類(lèi)跳轉(zhuǎn),可以去插入一個(gè)沒(méi)有任何轉(zhuǎn)換條件的空步。
可以運(yùn)用步將冗雜的自動(dòng)化任務(wù)分解成各個(gè)明確的子任務(wù),并通過(guò)步中的動(dòng)作去完成,然后讓各個(gè)步加入到順序控制程序中,如此一來(lái)每步都能在程序流中去按指定的順序執(zhí)行。每步都應(yīng)該分配一個(gè)獨(dú)有的編號(hào)和名稱,每當(dāng)激活一個(gè)步時(shí)就執(zhí)行這一步中的動(dòng)作。因此,當(dāng)前步應(yīng)該是初始步,或者必須達(dá)到該步前面應(yīng)有的轉(zhuǎn)換條件。還可以運(yùn)用事件型的動(dòng)作去調(diào)用一個(gè)步。在此之外,還可以通過(guò)對(duì)步中的監(jiān)控條件和互鎖條件進(jìn)行合理編程,任意選擇一個(gè)開(kāi)始執(zhí)行順序控制程序的步。因此,初始步可以由任意一步指定。
如圖4所示,使用GARPH順序控制設(shè)計(jì)方法將圖2中的順序控制流程分為7步——啟動(dòng)洗滌注水、洗滌轉(zhuǎn)動(dòng)、洗滌排水、漂洗注水、漂洗轉(zhuǎn)動(dòng)、漂洗排水、脫水。將每一步的動(dòng)作寫(xiě)入每一步的對(duì)應(yīng)動(dòng)作程序,同時(shí)將轉(zhuǎn)換條件也寫(xiě)入每一步對(duì)應(yīng)的Trans中,具體的輸入/輸出線圈可與起保停的輸入/輸出線圈對(duì)應(yīng)。
針對(duì)基于LAD的起保停順序控制設(shè)計(jì)方法和GARPH順序控制設(shè)計(jì)方法進(jìn)行比較,我們清晰地了解到,這兩種順序控制設(shè)計(jì)方法分別具有以下特點(diǎn):
(1)基于LAD的起保停順序控制設(shè)計(jì)方法在PLC的設(shè)計(jì)方法中屬于較為基礎(chǔ)的設(shè)計(jì)方法,大部分順序控制系統(tǒng)的設(shè)計(jì)都可以采用此類(lèi)方法,其適合初學(xué)者學(xué)習(xí),學(xué)習(xí)難度較低,相對(duì)較容易理解;但設(shè)計(jì)時(shí)語(yǔ)句較多、程序較長(zhǎng),在大型冗雜的項(xiàng)目中設(shè)計(jì)較為困難。
圖4 GARPH順序控制設(shè)計(jì)
(2)基于GARPH的設(shè)計(jì)方法是一種有針對(duì)性的順序控制設(shè)計(jì)方法,其按照步與步之間的轉(zhuǎn)換,每一步所要執(zhí)行的動(dòng)作進(jìn)行順序控制設(shè)計(jì),邏輯性較強(qiáng),響應(yīng)速度更快,語(yǔ)句使用得較少,同樣的邏輯功能下所需要的程序長(zhǎng)度較短。在對(duì)大型項(xiàng)目進(jìn)行順序控制設(shè)計(jì)時(shí)可以將較為復(fù)雜的任務(wù)分解成多個(gè)小型且較為簡(jiǎn)單的任務(wù)去完成,更加適用于冗雜型的項(xiàng)目任務(wù)。該方法在合理規(guī)劃程序流程圖后更容易進(jìn)行設(shè)計(jì),但目前在不同PLC之間還不能精準(zhǔn)地實(shí)現(xiàn)功能轉(zhuǎn)換。
綜上,我們?cè)陧?xiàng)目實(shí)際進(jìn)行時(shí),至少要掌握兩種及以上的順序控制設(shè)計(jì)方法,才能根據(jù)不同的項(xiàng)目類(lèi)別、復(fù)雜程度和不同的響應(yīng)速度要求進(jìn)行合理的程序設(shè)計(jì)。選擇合理的順序控制程序設(shè)計(jì)方法會(huì)使項(xiàng)目的完成得到更好的助力。