PLC的控制方式屬于存儲程序控制,其控制功能是通過存放在存儲器內(nèi)的程序來實現(xiàn)的,若要對控制功能作必要修改,只需改變控制程序即可,這就實現(xiàn)了控制的軟件化??删幊炭刂破鞯膬?yōu)點在于"可"字,從軟件來講,其控制程序可編輯、可修改;從硬件上講,其外部設(shè)備配置可變。構(gòu)建一個PLC控制系統(tǒng)的重心就在于控制程序的編制,但外部設(shè)備的選用也將對程序的編制產(chǎn)生影響。因此在進(jìn)行程序設(shè)計時應(yīng)結(jié)合實際需要,硬、軟件綜合考慮。本文就硬、軟兩方面,選取梯形圖為編程語言,以松下電工FPO-C32型PLC為例,對PLC使用過程中易出現(xiàn)的幾個問題及解決方法進(jìn)行了分析。
一、外部輸入設(shè)備的選用與PLC輸入繼電器的使用
1. 外部輸入信號的采集
PLC的外部設(shè)備主要是指控制系統(tǒng)中的輸入輸出設(shè)備,其中輸人設(shè)備是對系統(tǒng)發(fā)出各種控制信號的主令電器,在編寫控制程序時必須注意外部輸入設(shè)備使用的是常開還是常閉觸點,并以此為基礎(chǔ)進(jìn)行程序編制。否則易出現(xiàn)控制錯誤。
在PLC內(nèi)部存儲器中有專用于輸入狀態(tài)存儲的輸入繼電器區(qū),各輸入設(shè)備(開關(guān)、按鈕、行程開關(guān)或傳感器信號)的狀態(tài)經(jīng)由輸入接口電路存儲在該區(qū)域內(nèi),每個輸入繼電器可存儲一個輸入設(shè)備狀態(tài)。PLC中使用的"繼電器"并非實體繼電器,而是"軟繼電器",可提供無數(shù)個常開、常閉觸點用于編程。每個"軟繼電器"僅對應(yīng)PLC存儲單元中的一位(bit),該位狀態(tài)為"1",表示該"軟繼電器線圈"通電,則程序中所有該繼電器的觸點都動作。輸入繼電器作為PLC接收外部主令信號的器件,通過接線與外部輸入設(shè)備相聯(lián)系,其"線圈"狀態(tài)只能由外部輸入信號驅(qū)動。輸入信號的采集工作示意圖如圖1。
輸入繼電器線圈其狀態(tài)取決于外部設(shè)備狀態(tài)
圖1 PLC輸入信號采集示意圖
圖1中,輸入設(shè)備選用的是按鈕SB0的常閉觸點,輸入繼電器X0的線圈狀態(tài)取決于SB0的狀態(tài)。該按鈕未按下時,輸入繼電器X0線圈狀態(tài)為"1"通電狀態(tài),程序中所有X0觸點均動作,即常開觸點接通,常閉觸點斷開;若按下該按鈕,則輸入繼電器X0線圈狀態(tài)為"0"斷電狀態(tài),程序中所有X0觸點均恢復(fù)常態(tài)。如果輸入繼電器連接的輸入設(shè)備是按鈕SB0的常開觸點,則情況恰好相反:在該按鈕未按下時,輸入繼電器X0線圈狀態(tài)為"0"斷電狀態(tài),程序中所有X0觸點均不動作;若按下該按鈕,輸入繼電器X0線圈狀態(tài)為"1"通電狀態(tài),程序中所有X0觸點均動作。
2. 停車按鈕使用常閉型
由于PLC在運(yùn)行程序判別觸點通斷狀態(tài)時,只取決于其內(nèi)存中輸入繼電器線圈的狀態(tài),并不直接識別外部設(shè)備,因此編程時,外部設(shè)備的選用與程序中的觸點類型密切相關(guān)。這是一個在對照電氣控制原理圖進(jìn)行PLC編程時易出現(xiàn)的問題。最典型的例子是基本控制--"起保??刂?quot;中的停車控制。
圖2 "起保??刂?quot;電氣原理圖
圖2為"起保??刂?quot;電氣原理圖,在該系統(tǒng)中,按鈕SB0用于停車控制,因此使用其常閉觸點串聯(lián)于控制線路。SBl為起動按鈕,使用其常開觸點。若使用相同的設(shè)備(即停車SB0用常閉觸點,起動SBl用常開觸點),利用PLC進(jìn)行該控制,則需編程梯形圖程序(圖3):
圖3 "起保??刂?quot;梯形圖程序(停車按鈕使用常閉觸點)
I/O分配:SB0--X0,SBl--Xl,輸出Y0
該梯形圖中停車信號X0使用的是常開觸點串聯(lián)在控制線路中,這是因為外部停車設(shè)備選取按鈕常閉觸點所致,不操作該按鈕,則輸出Y0正常接通,若按下該按鈕,輸出Y0斷電。
3. 停車按鈕使用常開型
若希望編制出符合我們平時閱讀習(xí)慣的梯形圖程序(圖4),則在選用外部停車設(shè)備時需使用按鈕SB0的常開觸點與X0相連。
圖4 "起保停控制"梯形圖程序(停車按鈕使用常開觸點)
I/O分配:SB0--X0,SBl--Xl,輸出Y0
圖3、4梯形圖完成相同的控制功能,程序中停車信號X0使用的觸點類型卻不相同,其原因就是連接在輸入繼電器X0上的外部停車按鈕觸點類型選用不同。圖4所示梯形圖程序更加符合我們的閱讀習(xí)慣,也更易分析其邏輯控制功能,因此在PLC構(gòu)成控制系統(tǒng)中,外部開關(guān)、按鈕無論用于起動還是停車,一般都選用常開型,這是一個在使用PLC時需要格外注意的問題。
二、PLC的"串行"運(yùn)行方式與控制程序的編制
PLC與繼電接觸器控制的重要區(qū)別之一就是工作方式不同。繼電接觸器控制系統(tǒng)是按"并行"方式工作的,也就是說是按同時執(zhí)行的方式工作的,只要形成電流通路,就可能有幾個電器同時動作。而PLC是以"串行"方式工作的,PLC在循環(huán)執(zhí)行程序時,是按照語句的書寫順序自上而下進(jìn)行邏輯運(yùn)算,而前面邏輯運(yùn)算的結(jié)果會影響后面語句的邏輯運(yùn)算結(jié)果。因此梯形圖編程時,各語句的位置也會對控制功能產(chǎn)生關(guān)鍵影響。例如:
圖5 程序1
程序1調(diào)試結(jié)果:X0接通3次,Y3接通,X0再接通1次,Y3斷開。
圖6 程序2
程序2程序調(diào)試結(jié)果.X0接通3次,Y3接通瞬間即斷開。
上面兩個程序中,輸出Y3、計數(shù)器CTl02及內(nèi)部通用繼電器R0前面的邏輯條件均相同,僅僅是計數(shù)器CTl02所在語句位置發(fā)生了變化,而兩段程序的運(yùn)行結(jié)果就截然不同。這是因為CTl02對輸出Y3的影響方式發(fā)生了變化。執(zhí)行第一段程序時,將首先判斷輸出Y3的狀態(tài),再判斷CTl02的狀態(tài),CTl02的狀態(tài)變化只能在下一個掃描周期對Y3產(chǎn)生影響;而執(zhí)行第二段程序時,將首先判斷CTl02的狀態(tài),再判斷輸出Y3的狀態(tài),CTl02的狀態(tài)變化將在該掃描周期直接影響Y3的狀態(tài)。
從以上討論可以得出,由于PLC采用"串行"工作方式,所以即使是同一元件,在梯形圖中所處的位置不同,其工作狀態(tài)也會有所不同,因此在利用梯形圖進(jìn)行控制程序編制時,應(yīng)對控制任務(wù)進(jìn)行充分分析,合理安排各編程元件的位置,才能夠更為準(zhǔn)確地實現(xiàn)控制。
三、PLC的編程元件
PLC的各種功能主要是通過運(yùn)行控制程序來實現(xiàn)。編制程序時,需要合理使用PLC提供的編程元件(即軟元件)。FPO型PLC中常用的編程元件有兩種:位元件(bit)和字元件(word)。位元件實際上是PLC內(nèi)存區(qū)域所提供的一個二進(jìn)制位單元,又被稱為軟繼電器,主要用作基本順序指令的編程元件,如輸入繼電器Xn、輸出繼電器Yn、內(nèi)部通用繼電器Rn、定時(計數(shù))器等,其參與控制的方式主要是通過對應(yīng)觸點的通斷狀態(tài)改變影響邏輯運(yùn)算結(jié)果即輸出。
字元件則為PLC內(nèi)存區(qū)域內(nèi)的一個字單元(16bit),主要用作功能指令和高級指令的編程元件,通常用以存放數(shù)據(jù),如數(shù)據(jù)寄存器DTn,定時(計數(shù))器的設(shè)定值SVn、經(jīng)過值EVn等。字元件沒有觸點,通常以整體內(nèi)容參與控制。
值得注意的是內(nèi)存中的輸入(X)區(qū)、輸出(Y)區(qū)和內(nèi)部通用(R)區(qū),該區(qū)中的每個bit均可用作位元件,而且每16bit可構(gòu)成一個字元件,如WRIO即是由16個位元件R100~R10F構(gòu)成的字元件,該字元件中的內(nèi)容一旦發(fā)生變化,這16個位的狀態(tài)也隨之發(fā)生改變。如:
圖7 編程元件示例程序
圖7所示程序中,WR0即為字元件,是左移位指令SR的編程元件,而Y0為輸出軟繼電器的線圈,X0、X1、X2、X3則為輸人軟繼電器的觸點,其中第4步的R4觸點為位元件R4的常開觸點,而位元件R4又是字元件WR0中的一位,因此其狀態(tài)受限于WR0的移位結(jié)果。
四、順序控制多步同輸出的編程方法
順序控制是生產(chǎn)現(xiàn)場常見的一類控制任務(wù),步進(jìn)指令是PLC指令庫中專用于順序控制的。步進(jìn)指令編程時,根據(jù)工藝流程將程序劃分為一個個獨(dú)立的程序段,執(zhí)行時,CPU嚴(yán)格按梯形圖編程順序,只有執(zhí)行完前一段程序后才能激活下一段程序,并在下一段程序執(zhí)行之前,將前面程序段復(fù)位。并且在語法上要求各程序段所使用的輸出不允許重復(fù)。這在解決順序控制任務(wù)中有多步同輸出的情況時,就帶來了一定的困難。借助于內(nèi)部通用繼電器可方便解決這一難題。如某一順序控制任務(wù)如以下流程圖(圖8)所示。
圖8 某機(jī)械手動作流程圖
從機(jī)械手動作流程圖可以看出,這個控制任務(wù)每個循環(huán)的工作可以劃分為八步,其中第1步與第5步動作相同,均為上升;第3步和第7步動作相同,均為下降。在利用步進(jìn)指令進(jìn)行編程時,這兩個工步所對應(yīng)的程序段的輸出不能直接設(shè)置為Y3、Y4,同一個輸出使用兩次則會出現(xiàn)語法錯誤。這時應(yīng)考慮使用用于存儲中間狀態(tài)的內(nèi)部通用繼電器Rn來解決這個問題。如圖7所示梯形圖程序,其中R1、R5分別被定義為第1步與第5步的輸出,R3、R7分別被定義為第3步與第7步的輸出,在步進(jìn)結(jié)束后再將R1、R5的狀態(tài)輸出到上升Y3,將R3、R7的狀態(tài)輸出到下降Y4,通過這樣的方法可方便解決順序控制任務(wù)中若干工步輸出相同的問題。
圖9 機(jī)械手控制梯形圖
五、結(jié)束語
初學(xué)者對于PLC的基本應(yīng)用易于掌握,但要做到靈活使用仍需對一些技術(shù)難點和使用技巧深刻理解。在編程之前,要對控制任務(wù)進(jìn)行認(rèn)真分析,合理選擇外部設(shè)備和編程元件,并以此為基礎(chǔ)進(jìn)行編程;在編程過程中,如能靈話巧妙地使用編程元件,合理地進(jìn)行程序編排,可使程序邏輯清楚,可讀性增強(qiáng)。