一、跳步與循環(huán)
復(fù)雜的控制系統(tǒng)不僅i/o點數(shù)多,功能表圖也相當(dāng)復(fù)雜,除包括前面介紹的功能表圖的基本結(jié)構(gòu)外,還包括跳步與循環(huán)控制,而且系統(tǒng)往往還要求設(shè)置多種工作方式,如手動和自動(包括連續(xù)、單周期、單步等)工作方式。手動程序比較簡單,一般用經(jīng)驗法設(shè)計,自動程序的設(shè)計一般用順序控制設(shè)計法。
1.跳步
如圖1所示用狀態(tài)器來代表各步,當(dāng)步s31是活動步,并且x5變?yōu)椤?”時,將跳過步s32,由步s31進(jìn)展到步s33。這種跳步與s31s32s33等組成的“主序列”中有向連線的方向相同,稱為正向跳步。當(dāng)步s34是活動步,并且轉(zhuǎn)換條件時,將從步s34返回到步s33,這種跳步與“主序列”中有向連線的方向相反,稱為逆向跳步。顯然,跳步屬于選擇序列的一種特殊情況。
圖1 含有跳步和循環(huán)的功能表圖
2.循環(huán)
在設(shè)計梯形圖程序時,經(jīng)常遇到一些需要多次重復(fù)的操作,如果一次一次地編程,顯然是非常繁瑣的。我們常常采用循環(huán)的方式來設(shè)計功能表圖和梯形圖,如圖1所示,假設(shè)要求重復(fù)執(zhí)行10次由步s33和步s34組成的工藝過程,用c0控制循環(huán)次數(shù),它的設(shè)定值等于循環(huán)次數(shù)10。每執(zhí)行一次循環(huán),在步s34中使c0的當(dāng)前值減1,這一操作是將s34的常開觸點接在c0的計數(shù)脈沖輸入端來實現(xiàn)的,當(dāng)步s34變?yōu)榛顒硬綍r,s34的常開觸點由斷開變?yōu)榻油?,使c0的當(dāng)前值減1。每次執(zhí)行循環(huán)的最后一步,都根據(jù)c0的當(dāng)前值是否為零來判別是否應(yīng)結(jié)束循環(huán),圖中用步s34之后選擇序列的分支來實現(xiàn)的。假設(shè)x4為“1”,如果循環(huán)未結(jié)束,c0的常閉觸點閉合,轉(zhuǎn)換條件滿足并返回步s33;當(dāng)c0的當(dāng)前值減為0,其常開觸點接通,轉(zhuǎn)換條件滿足,將由步s34進(jìn)展到步s35。
在循環(huán)程序執(zhí)行之前或執(zhí)行完后,應(yīng)將控制循環(huán)的計數(shù)器復(fù)位,才能保證下次循環(huán)時循環(huán)計數(shù)。復(fù)位操作應(yīng)放在循環(huán)之外,圖1中計數(shù)器復(fù)位在步s0和步s25顯然比較方便。
二、選擇序列和并行序列的編程
循環(huán)和跳步都屬于選擇序列的特殊情況。對選擇序列和并行序列編程的關(guān)鍵在于對它們的分支和合并的處理,轉(zhuǎn)換實現(xiàn)的基本規(guī)則是設(shè)計復(fù)雜系統(tǒng)梯形圖的基本準(zhǔn)則。與單序列不同的是,在選擇序列和并行序列的分支、合并處,某一步或某一轉(zhuǎn)換可能有幾個前級步或幾個后續(xù)步,在編程時應(yīng)注意這個問題。
1.選擇序列的編程
(1)使用stl指令的編程
如圖2所示,步s0之后有一個選擇序列的分支,當(dāng)步s0是活動步,且轉(zhuǎn)換條件x0為“1”時,將執(zhí)行左邊的序列,如果轉(zhuǎn)換條件x3為“1”狀態(tài),將執(zhí)行右邊的序列。步s32之前有一個由兩條支路組成的選擇序列的合并,當(dāng)s31為活動步,轉(zhuǎn)換條件x1得到滿足,或者s33為活動步,轉(zhuǎn)換條件x4得到滿足,都將使步s32變?yōu)榛顒硬?,同時系統(tǒng)程序使原來的活動步變?yōu)椴换顒硬健?br>圖2 選擇序列的功能表圖一
如圖3所示為對圖2采用stl指令編寫的梯形圖,對于選擇序列的分支,步s0之后的轉(zhuǎn)換條件為x0和x3,可能分別進(jìn)展到步s31和s33,所以在s0的stl觸點開始的電路塊中,有分別由x0和x3作為置位條件的兩條支路。對于選擇序列的合并,由s31和s33的stl觸點驅(qū)動的電路塊中的轉(zhuǎn)換目標(biāo)均為s32。
圖3 選擇序列的梯形圖一
在設(shè)計梯形圖時,其實沒有必要特別留意選擇序列的如何處理,只要正確地確定每一步的轉(zhuǎn)換條件和轉(zhuǎn)換目標(biāo)即可。
(2)使用通用指令的編程
如圖5所示對圖4功能表圖使用通用指令編寫的梯形圖,對于選擇序列的分支,當(dāng)后續(xù)步m301或m303變?yōu)榛顒硬綍r,都應(yīng)使m300變?yōu)椴换顒硬?,所以?yīng)將m301和m303的常閉觸點與m300線圈串聯(lián)。對于選擇序列的合并,當(dāng)步m301為活動步,并且轉(zhuǎn)換條件x1滿足,或者步m303為活動步,并且轉(zhuǎn)換條件x4滿足,步m302都應(yīng)變?yōu)榛顒硬?,m302的起動條件應(yīng)為:,對應(yīng)的起動電路由兩條并聯(lián)支路組成,每條支路分別由m301、x1和m303、x4的常開觸點串聯(lián)而成。
圖4 選擇序列功能表圖二
圖5 選擇序列的梯形圖二
(3)以轉(zhuǎn)換為中心的編程
如圖6所示是對圖4采用以轉(zhuǎn)換為中心的編程方法設(shè)計的梯形圖。用仿stl指令的編程方式來設(shè)計選擇序列的梯形圖,請讀者自己編寫。
圖6 選擇序列的梯形圖三
2.并行序列的編程
(1)使用stl指令的編程
如圖7所示為包含并行序列的功能表圖,由s31、s32和s34、s35組成的兩個序列是并行工作的,設(shè)計梯形圖時應(yīng)保證這兩個序列同時開始和同時結(jié)束,即兩個序列的第一步s31和s34應(yīng)同時變?yōu)榛顒硬?,兩個序列的最后一步s32和s35應(yīng)同時變?yōu)椴换顒硬健2⑿行蛄械姆种У奶幚硎呛芎唵蔚?,?dāng)步s0是活動步,并且轉(zhuǎn)換條件x0=1,步s31和s34同時變?yōu)榛顒硬?,兩個序列開始同時工作。當(dāng)兩個前級步s32和s35均為活動步且轉(zhuǎn)換條件滿足,將實現(xiàn)并行序列的合并,即轉(zhuǎn)換的后續(xù)步s33變?yōu)榛顒硬?,轉(zhuǎn)換的前級步s32和s35同時變?yōu)椴换顒硬健?br>圖7 并行序列的功能表圖
如圖8所示是對圖7功能表圖采用stl指令編寫的梯形圖。對于并行序列的分支,當(dāng)s0的stl觸點和x0的常開觸點均接通時,s31和s34被同時置位,系統(tǒng)程序?qū)⑶凹壊絪0變?yōu)椴换顒硬?;對于并行序列的合并,用s32、s35的stl觸點和x2的常開觸點組成的串聯(lián)電路使s33置位。在圖8中,s32和s35的stl觸點出現(xiàn)了兩次,如果不涉及并行序列的合并,同一狀態(tài)器的stl觸點只能在梯形圖中使用一次,當(dāng)梯形圖中再次使用該狀態(tài)器時,只能使用該狀態(tài)器的一般的常開觸點和ld指令。另外,fx系列plc規(guī)定串聯(lián)的stl觸點的個數(shù)不能超過8個,換句話說,一個并行序列中的序列數(shù)不能超過8個。
圖8 并行序列的梯形圖
(2)使用通用指令的編程
如圖9所示的功能表圖包含了跳步、循環(huán)、選擇序列和并行序列等基本環(huán)節(jié)。
圖9 復(fù)雜的功能表圖
如圖10所示是對圖9的功能表圖采用通用指令編寫的梯形圖。步m301之前有一個選擇序列的合并,有兩個前級步m300和m313,m301的起動電路由兩條串聯(lián)支路并聯(lián)而成。m313與m301之間的轉(zhuǎn)換條件為,相應(yīng)的起動電路的邏輯表達(dá)式為,該串聯(lián)支路由m313、x13的常開觸點和c0的常閉觸點串聯(lián)而成,另一條起動電路則由m300和x0的常開觸點串聯(lián)而成。步m301之后有一個并行序列的分支,當(dāng)步m301是活動步,并且滿足轉(zhuǎn)換條件x1,步m302與步m306應(yīng)同時變?yōu)榛顒硬剑@是用m301和xl的常開觸點組成的串聯(lián)電路分別作為m302和m306的起動電路來實現(xiàn)的,與此同時,步m301應(yīng)變?yōu)椴换顒硬健2絤302和m306是同時變?yōu)榛顒硬降?,因此只需要將m302的常閉觸點與m301的線圈串聯(lián)就行了。
圖10 使用通用指令編寫的梯形圖
步m313之前有一個并行序列的合并,該轉(zhuǎn)換實現(xiàn)的條件是所有的前級步(即步m305和m311)都是活動步和轉(zhuǎn)換條件x12滿足。由此可知,應(yīng)將m305,m311和x12的常開觸點串聯(lián),作為控制m313的起動電路。m313的后續(xù)步為步m314和m301,m313的停止電路由m314和m301的常閉觸點串聯(lián)而成。
編程時應(yīng)該注意以下幾個問題:
1)不允許出現(xiàn)雙線圈現(xiàn)象。
2)當(dāng)m314變?yōu)椤?”狀態(tài)后,c0被復(fù)位(見圖10),其常閉觸點閉合。下一次掃描開始時m313仍為“1”狀態(tài)(因為在梯形圖中m313的控制電路放在m314的上面),使m301的控制電路中最上面的一條起動電路接通,m301的線圈被錯誤地接通,出現(xiàn)了m314和m301同時為“1”狀態(tài)的異常情況。為了解決這一問題,將m314的常閉觸點與m301的線圈串聯(lián)。
3)如果在功能表圖中僅有由兩步組成的小閉環(huán),如圖11a所示,則相應(yīng)的輔助繼電器的線圈將不能“通電”。例如在m202和x2均為“1”狀態(tài)時,m203的起動電路接通,但是這時與它串聯(lián)的m202的常閉觸點卻是斷開的,因此m203的線圈將不能“通電”。出現(xiàn)上述問題的根本原因是步m202既是步m203的前級步,又是它的后序步。如圖11b所示在小閉環(huán)中增設(shè)一步就可以解決這一問題,這一步只起延時作用,延時時間可以取得很短,對系統(tǒng)的運行不會有什么影響。
圖11 僅有兩步的小閉環(huán)的處理
(3)使用以轉(zhuǎn)換為中心的編程
與選擇序列的編程基本相同,只是要注意并行序列分支與合并處的處理。
(4)使用仿stl指令的編程
如圖12所示是對圖9功能表圖采用仿stl指令編寫的梯形圖。在編程時用接在左側(cè)母線上與各步對應(yīng)的輔助繼電器的常開觸點,分別驅(qū)動一個并聯(lián)電路塊。這個并聯(lián)電路塊的功能如下:驅(qū)動只在該步為“1”狀態(tài)的負(fù)載的線圈;將該步所有的前級步對應(yīng)的輔助繼電器復(fù)位;指明該步之后的一個轉(zhuǎn)換條件和相應(yīng)的轉(zhuǎn)換目標(biāo)。以m301的常開觸點開始的電路塊為例,當(dāng)m301為“1”狀態(tài)時,僅在該步為“1”狀態(tài)的負(fù)載y0被驅(qū)動,前級步對應(yīng)的輔助繼電器m300和m313被復(fù)位。當(dāng)該步之后的轉(zhuǎn)換條件x1為“1”狀態(tài)時,后續(xù)步對應(yīng)的m302和m306被置位。
圖12 采用仿stl指令編寫的梯形圖
如果某步之后有多個轉(zhuǎn)換條件,可將它們分開處理,例如步m302之后有兩個轉(zhuǎn)換,其中轉(zhuǎn)換條件t0對應(yīng)的串聯(lián)電路放在電路塊內(nèi),接在左側(cè)母線上的m302的另一個常開觸點和轉(zhuǎn)換條件x2的常開觸點串聯(lián),作為m305置位的條件。某一負(fù)載如果在不同的步為“1”狀態(tài),它的線圈不能放在各對應(yīng)步的電路塊內(nèi),而應(yīng)該用相應(yīng)輔助繼電器的常開觸點的并聯(lián)電路來驅(qū)動它。