梯形圖的編程方式是指根據(jù)功能表圖設(shè)計出梯形圖的方法。為了適應(yīng)各廠家的plc在編程元件、指令功能和表示方法上的差異,下面主要介紹使用通用指令的編程方式、以轉(zhuǎn)換為中心的編程方式、使用stl指令的編程方式和仿stl指令的編程方式。
為了便于分析,我們假設(shè)剛開始執(zhí)行用戶程序時,系統(tǒng)已處于初始步(用初始化脈沖m8002將初始步置位),代表其余各步的編程元件均為off,為轉(zhuǎn)換的實現(xiàn)做好了準備。
1.使用通用指令的編程方式
編程時用輔助繼電器來代表步。某一步為活動步時,對應(yīng)的輔助繼電器為“1”狀態(tài),轉(zhuǎn)換實現(xiàn)時,該轉(zhuǎn)換的后續(xù)步變?yōu)榛顒硬健S捎谵D(zhuǎn)換條件大都是短信號,即它存在的時間比它激活的后續(xù)步為活動步的時間短,因此應(yīng)使用有記憶(保持)功能的電路來控制代表步的輔助繼電器。屬于這類的電路有“起保停電路”和具有相同功能的使用set、rst指令的電路。
如圖1a所示mi-1、mi和mi+l是功能表圖中順序相連的3步,xi是步mi之前的轉(zhuǎn)換條件。
圖1 使用通用指令的編程方式示意圖
編程的關(guān)鍵是找出它的起動條件和停止條件。根據(jù)轉(zhuǎn)換實現(xiàn)的基本規(guī)則,轉(zhuǎn)換實現(xiàn)的條件是它的前級步為活動步,并且滿足相應(yīng)的轉(zhuǎn)換條件,所以步mi變?yōu)榛顒硬降臈l件是mi-1為活動步,并且轉(zhuǎn)換條件xi=1,在梯形圖中則應(yīng)將mi-1和xi的常開觸點串聯(lián)后作為控制mi的起動電路,如圖1b所示。當(dāng)mi和xi+1均為“l(fā)”狀態(tài)時,步mi+1變?yōu)榛顒硬?,這時步mi應(yīng)變?yōu)椴换顒硬?,因此可以將mi+1=1作為使mi變?yōu)椤?”狀態(tài)的條件,即將mi+1的常閉觸點與mi的線圈串聯(lián)。也可用set、rst指令來代替“起保停電路”,如圖1c所示。
這種編程方式僅僅使用與觸點和線圈有關(guān)的指令,任何一種plc的指令系統(tǒng)都有這一類指令,所以稱為使用通用指令的編程方式,可以適用于任意型號的plc。
如圖2所示是根據(jù)液壓滑臺系統(tǒng)的功能表圖使用通用指令編寫的梯形圖。開始運行時應(yīng)將m300置為“1”狀態(tài),否則系統(tǒng)無法工作,故將m8002的常開觸點作為m300置為“1”條件。m300的前級步為m303,后續(xù)步為m301。由于步是根據(jù)輸出狀態(tài)的變化來劃分的,所以梯形圖中輸出部分的編程極為簡單,可以分為兩種情況來處理:
1)某一輸出繼電器僅在某一步中為“1”狀態(tài),如y1和y2就屬于這種情況,可以將y1線圈與m303線圈并聯(lián),y2線圈與m302線圈并聯(lián)??雌饋碛眠@些輸出繼電器來代表該步(如用y1代替m303),可以節(jié)省一些編程元件,但plc的輔助繼電器數(shù)量是充足、夠用的,且多用編程元件并不增加硬件費用,所以一般情況下全部用輔助繼電器來代表各步,具有概念清楚、編程規(guī)范、梯形圖易于閱讀和容易查錯的優(yōu)點。
2)某一輸出繼電器在幾步中都為“1”狀態(tài),應(yīng)將代表各有關(guān)步的輔助繼電器的常開觸點并聯(lián)后,驅(qū)動該輸出繼電器的線圈。如y0在快進、工進步均為“1”狀態(tài),所以將m301和m302的常開觸點并聯(lián)后控制y0的線圈。注意,為了避免出現(xiàn)雙線圈現(xiàn)象,不能將y0線圈分別與m301和m302的線圈并聯(lián)。
圖2 使用通用指令編程的液壓滑臺系統(tǒng)梯形圖。
2.以轉(zhuǎn)換為中心的編程方式
如圖3所示為以轉(zhuǎn)換為中心的編程方式設(shè)計的梯形圖與功能表圖的對應(yīng)關(guān)系。圖中要實現(xiàn)xi對應(yīng)的轉(zhuǎn)換必須同時滿足兩個條件:前級步為活動步(mi-1=1)和轉(zhuǎn)換條件滿足(xi=1),所以用mi-1和xi的常開觸點串聯(lián)組成的電路來表示上述條件。兩個條件同時滿足時,該電路接通時,此時應(yīng)完成兩個操作:將后續(xù)步變?yōu)榛顒硬剑ㄓ胹et mi指令將mi置位)和將前級步變?yōu)椴换顒硬?用rst mi-1 指令將mi-1復(fù)位)。這種編程方式與轉(zhuǎn)換實現(xiàn)的基本規(guī)則之間有著嚴格的對應(yīng)關(guān)系,用它編制復(fù)雜的功能表圖的梯形圖時,更能顯示出它的優(yōu)越性。
圖3 以轉(zhuǎn)換為中心的編程方式
如圖4所示為某信號燈控制系統(tǒng)的時序圖、功能表圖和梯形圖。初始步時僅紅燈亮,按下起動按鈕x0,4s后紅燈滅、綠燈亮,6s后綠燈和黃燈亮,再過5s后綠燈和黃燈滅、紅燈亮。按時間的先后順序,將一個工作循環(huán)劃分為4步,并用定時器t0~t3來為3段時間定時。開始執(zhí)行用戶程序時,用m8002的常開觸點將初始步m300置位。按下起動按鈕x0后,梯形圖第2行中m300和x0的常開觸點均接通,轉(zhuǎn)換條件x0的后續(xù)步對應(yīng)的m301被置位,前級步對應(yīng)的輔助繼電器m300被復(fù)位。m301變?yōu)椤?”狀態(tài)后,控制y0(紅燈)仍然為“l(fā)”狀態(tài),定時器t0的線圈通電,4s后t0的常開觸點接通,系統(tǒng)將由第2步轉(zhuǎn)換到第3步,依此類推。
圖4 某信號燈控制系統(tǒng)
a)時序圖 b)功能表圖 c)以轉(zhuǎn)換為中心編程的梯形圖
使用這種編程方式時,不能將輸出繼電器的線圈與set、rst指令并聯(lián),這是因為圖4中前級步和轉(zhuǎn)換條件對應(yīng)的串聯(lián)電路接通的時間是相當(dāng)短的,轉(zhuǎn)換條件滿足后前級步馬上被復(fù)位,該串聯(lián)電路被斷開,而輸出繼電器線圈至少應(yīng)該在某一步活動的全部時間內(nèi)接通。
3.使用stl指令的編程方式
許多plc廠家都設(shè)計了專門用于編制順序控制程序的指令和編程元件,如美國ge公司和gould公司的鼓形控制器、日本東芝公司的步進順序指令、三菱公司的步進梯形指令等。
步進梯形指令(step ladder instruction)簡稱為stl指令。fx系列就有stl指令及ret復(fù)位指令。利用這兩條指令,可以很方便地編制順序控制梯形圖程序。
fx2n系列plc的狀態(tài)器s0~s9用于初始步,s10~s19用于返回原點,s20~s499為通用狀態(tài),s500~s899有斷電保持功能,s900~s999用于報警。用它們編制順序控制程序時,應(yīng)與步進梯形指令一起使用。fx系列還有許多用于步進順控編程的特殊輔助繼電器以及使?fàn)顟B(tài)初始化的功能指令ist,使stl指令用于設(shè)計順序控制程序更加方便。
使用stl指令的狀態(tài)器的常開觸點稱為stl觸點,它們在梯形圖中的元件符號如圖5所示。圖中可以看出功能表圖與梯形圖之間的對應(yīng)關(guān)系,stl觸點驅(qū)動的電路塊具有三個功能:對負載的驅(qū)動處理、指定轉(zhuǎn)換條件和指定轉(zhuǎn)換目標。
圖5stl指令與功能表圖
除了后面要介紹的并行序列的合并對應(yīng)的梯形圖外,stl觸點是與左側(cè)母線相連的常開觸點,當(dāng)某一步為活動步時,對應(yīng)的stl觸點接通,該步的負載被驅(qū)動。當(dāng)該步后面的轉(zhuǎn)換條件滿足時,轉(zhuǎn)換實現(xiàn),即后續(xù)步對應(yīng)的狀態(tài)器被set指令置位,后續(xù)步變?yōu)榛顒硬?,同時與前級步對應(yīng)的狀態(tài)器被系統(tǒng)程序自動復(fù)位,前級步對應(yīng)的stl觸點斷開。
使用stl指令時應(yīng)該注意以下一些問題:
1)與stl觸點相連的觸點應(yīng)使用ld或ldi指令,即ld點移到stl觸點的右側(cè),直到出現(xiàn)下一條stl指令或出現(xiàn)ret指令,ret指令使ld點返回左側(cè)母線。各個stl觸點驅(qū)動的電路一般放在一起,最后一個電路結(jié)束時—定要使用ret指令。
2)stl觸點可以直接驅(qū)動或通過別的觸點驅(qū)動y、m、s、t等元件的線圈,stl觸點也可以使y、m、s等元件置位或復(fù)位。
3)stl觸點斷開時,cpu不執(zhí)行它驅(qū)動的電路塊,即cpu只執(zhí)行活動步對應(yīng)的程序。在沒有并行序列時,任何時候只有一個活動步,因此大大縮短了掃描周期。
4)由于cpu只執(zhí)行活動步對應(yīng)的電路塊,使用stl指令時允許雙線圈輸出,即同一元件的幾個線圈可以分別被不同的stl觸點驅(qū)動。實際上在一個掃描周期內(nèi),同一元件的幾條out指令中只有一條被執(zhí)行。
5)stl指令只能用于狀態(tài)寄存器,在沒有并行序列時,一個狀態(tài)寄存器的stl觸點在梯形圖中只能出現(xiàn)一次。
6)stl觸點驅(qū)動的電路塊中不能使用mc和mcr指令,但是可以使用cjp和ejp指令。當(dāng)執(zhí)行cjp指令跳人某一stl觸點驅(qū)動的電路塊時,不管該stl觸點是否為“1”狀態(tài),均執(zhí)行對應(yīng)的ejp指令之后的電路。
7)與普通的輔助繼電器一樣,可以對狀態(tài)寄存器使用ld、ldi、and、ani、or、ori、set、rst、out等指令,這時狀態(tài)器觸點的畫法與普通觸點的畫法相同。
8)使?fàn)顟B(tài)器置位的指令如果不在stl觸點驅(qū)動的電路塊內(nèi),執(zhí)行置位指令時系統(tǒng)程序不會自動將前級步對應(yīng)的狀態(tài)器復(fù)位。
如圖6所示小車一個周期內(nèi)的運動路線由4段組成,它們分別對應(yīng)于s31~s34所代表的4步,s0代表初始步。
圖6 小車控制系統(tǒng)功能表圖與梯形圖
假設(shè)小車位于原點(最左端),系統(tǒng)處于初始步,s0為“1”狀態(tài)。按下起動按鈕x4,系統(tǒng)由初始步s0轉(zhuǎn)換到步s31。s31的stl觸點接通,y0的線圈“通電”,小車右行,行至最右端時,限位開關(guān)x3接通,使s32置位,s31被系統(tǒng)程序自動置為“0”狀態(tài),小車變?yōu)樽笮?,小車將這樣一步一步地順序工作下去,最后返回起始點,并停留在初始步。圖6中的梯形圖對應(yīng)的指令表程序如表所示.。
表 小車控制系統(tǒng)指令表
ld
set
stl
ld
set
stl
m8002
s0
s0
x4
s31
s31
out
ld
set
stl
out
ld
y0
x3
s32
s32
y1
x1
set
stl
out
ld
set
stl
s33
s33
y0
x2
s34
s34
out
ld
set
ret
y1
x0
s0
4.仿stl指令的編程方式
對于沒有stl指令的plc,也可以仿照stl指令的設(shè)計思路來設(shè)計順序控制梯形圖,這就是下面要介紹的仿stl指令的編程方式。
如圖7所示為某加熱爐送料系統(tǒng)的功能表圖與梯形圖。除初始步外,各步的動作分別為開爐門、推料、推料機返回和關(guān)爐門,分別用y0、y1、y2、y3驅(qū)動動作。x0是起動按鈕,x1~x4分別是各動作結(jié)束的限位開關(guān)。與左側(cè)母線相連的m300~m304的觸點,其作用與stl觸點相似,它右邊的電路塊的作用為驅(qū)動負載、指定轉(zhuǎn)換條件和轉(zhuǎn)換目標,以及使前級步的輔助繼電器復(fù)位。
圖7 加熱爐送料系統(tǒng)的功能表圖與梯形圖
由于這種編程方式用輔助繼電器代替狀態(tài)器,用普通的常開觸點代替stl觸點,因此,與使用stl指令的編程方式相比,有以下的不同之處:
1)與代替stl觸點的常開觸點(如圖5-33中m300~m304的常開觸點)相連的觸點,應(yīng)使用and或ani指令,而不是ld或ldi指令。
2)在梯形圖中用rst指令來完成代表前級步的輔助繼電器的復(fù)位,而不是由系統(tǒng)程序自動完成。
3)不允許出現(xiàn)雙線圈現(xiàn)象,當(dāng)某一輸出繼電器在幾步中均為“1”狀態(tài)時,應(yīng)將代表這幾步的輔助繼電器常開觸點并聯(lián)來控制該輸出繼電器的線圈。