順序控制繼電器SCR( Sequence Control Relay)指令對(duì)于一個(gè)復(fù)雜的控制系統(tǒng),尤其是順序控制程序,由于內(nèi)部的連鎖、互動(dòng)關(guān)系極其復(fù)雜,用梯形圖或語句表方式編寫通常要由熟練的電氣工程師才能編制,這樣的程序如果不加注釋,其程序的可讀性會(huì)大大降低,也為調(diào)試、試運(yùn)行帶來困難。
近年來,許多PLC增加了順序控制指令,用于編制復(fù)雜的順序控制程序,利用這種方法,使初學(xué)者也很容易編寫復(fù)雜的順序控制程序。這種方法也為調(diào)試、運(yùn)行帶來許多難以言傳的方便。
西門子plc S7-200 CPU含有256個(gè)順序控制繼電器(S0.0~S31.7)用于順序控制,在順序控制或步進(jìn)控制中,常常將控制過程分成若干個(gè)順序控制繼電器( SCR)段,一個(gè)SCR段有時(shí)也稱為一個(gè)控制功能步,簡稱步。每個(gè)SCR都是一個(gè)相對(duì)穩(wěn)定的狀態(tài),都有段開始,段轉(zhuǎn)移,段結(jié)束。在S7-200中,有3條簡單的SCR指令與之對(duì)應(yīng)。
1)順序控制指令
①段開始指令LSCR( Load Sequence Control Relay)。段開始指令的功能是標(biāo)記一個(gè)SCR段(或一個(gè)步)的開始,其操作數(shù)是狀態(tài)繼電器Sx.y(范圍為:S0.0~S31.7),Sx.y是當(dāng)前SCR段的標(biāo)志位,當(dāng)Sx.y為1時(shí),允許該SCR段工作。
②段轉(zhuǎn)移指令SCRT( Sequence Control Relay Transition)。段轉(zhuǎn)移指令的功能是將當(dāng)前的SCR段切換到下一個(gè)SCR段,其操作數(shù)是下一個(gè)SCR段的標(biāo)志位Sx.y(如S0.1)。當(dāng)允許輸入有效時(shí),進(jìn)行切換,即停止當(dāng)前SCR段工作(復(fù)位),啟動(dòng)下一個(gè)SCR段工作(置位)。
③段結(jié)束指令SCRE( Sequece Control Relay End)。段結(jié)束指令的功能是標(biāo)記一個(gè)SCR段(或一個(gè)步)的結(jié)束。段結(jié)束指令和段開始指令必須成對(duì)出現(xiàn),否則無法下載程序。
順序控制指令的格式如圖4-64所示。
圖4-64 順序控制指令
2) SCR指令的特點(diǎn)
①SCR指令的操作數(shù)(或編程元件)只能是狀態(tài)繼電器Sx.y;反之,狀態(tài)繼電器S可應(yīng)用的指令并不僅限于SCR,它還可以應(yīng)用LD、LNN、A、AN、O、ON、=、S、R等指令。
②1個(gè)狀態(tài)繼電器Sx.y作為SCR段標(biāo)志位,可以用于主程序、子程序或者中斷程序中,但是只能使用1次,不能重復(fù)使用。
③在一個(gè)SCR段中,禁止使用循環(huán)指令FOR/NEXT、跳轉(zhuǎn)指令JMP/LBL和條件結(jié)束指令END。
3)狀態(tài)流程圖。狀態(tài)流程圖是用狀態(tài)繼電器(即S繼電器)代表工程中的工序,一個(gè)工序的任務(wù)就是一個(gè)狀態(tài)的控制過程(即一步),確定每步的啟動(dòng)條件和轉(zhuǎn)換條件。每個(gè)獨(dú)立的步分別用方框表示,根據(jù)動(dòng)作順序用箭頭將各個(gè)方框連接起來,在相鄰的兩步之間用短橫線表示轉(zhuǎn)換條件。在每步的右邊畫上要執(zhí)行的控制程序。一個(gè)工序的完成就意味著一個(gè)狀態(tài)的結(jié)束,另一狀態(tài)的開始。
在大中型PLC中,可直接使用S7-GRAPH語言處理比較復(fù)雜的順序控制或步進(jìn)控制問題。而在小型PLC的程序設(shè)計(jì)中,對(duì)于大量遇到的順序控制或步進(jìn)控制問題,如果能采用狀態(tài)流程圖的設(shè)計(jì)方法,再使用步進(jìn)指令將很容易地轉(zhuǎn)化成梯形圖程序,就可完成比較復(fù)雜的順序控制或步進(jìn)控制任務(wù)。
【例4-28】 圖4-65是一個(gè)單一流程狀態(tài)轉(zhuǎn)移圖轉(zhuǎn)化成梯形圖的例子。系統(tǒng)初始進(jìn)入S0.0,當(dāng)S0.0=1時(shí),系統(tǒng)進(jìn)入S0.0段,在這一程序段中,使Q0.1輸出1,使Q0.2置位。當(dāng)I0.1=1時(shí),狀態(tài)由S0.0轉(zhuǎn)為S0.1(S0.0先復(fù)位,S0.1再置位)。
注意:
①用OUT指令輸出只能在本程序段內(nèi)保持(即只在本工序有輸出),為了能在段外也有輸出,應(yīng)該使用置位指令S,但一定要有復(fù)位指令R配合使用。
圖4-65 單一流程編程方法
②段內(nèi)輸出一般直接用常開點(diǎn)( SM0. 0)控制,不再設(shè)置其他條件,否則即使進(jìn)入該步也不會(huì)有輸出。
③是段轉(zhuǎn)移指令使本步復(fù)位,而不是段結(jié)束指令。所以應(yīng)該注意各語句的先后位置,應(yīng)該是:段開始,段輸出,段轉(zhuǎn)移,段結(jié)束。
④狀態(tài)轉(zhuǎn)移圖可以轉(zhuǎn)化成梯形圖程序,也可以直接寫成語句表程序,梯形圖程序需要畫到6個(gè)網(wǎng)絡(luò)里,而語句表程序都寫到1個(gè)網(wǎng)絡(luò)里也能編輯運(yùn)行。所以建議直接轉(zhuǎn)化成語句表來編輯運(yùn)行,會(huì)減少大量的輸入、調(diào)試時(shí)間。
4)多流程順序控制的步進(jìn)指令編程方法
在順序控制中,任何復(fù)雜的控制流程都可以分解為以下幾種基本組合形式。
①單一流程編程方法。單一流程由一系列相繼執(zhí)行的工步組成。每一工步的后面只能接一個(gè)轉(zhuǎn)移條件;而每一轉(zhuǎn)移條件之后僅有一個(gè)工步,其結(jié)構(gòu)及轉(zhuǎn)化成梯形圖及語句表的方法如圖4-65所示,分析見例4-27。
②選擇分支結(jié)構(gòu)。從多個(gè)分支流程中選擇某一個(gè)分支,稱為選擇分支,同一時(shí)刻只允許選擇一個(gè)分支。如圖4-66a示例,若S1.0動(dòng)作時(shí),一旦I0.1接通,動(dòng)作狀態(tài)就向S1.1轉(zhuǎn)移,則S1.0變?yōu)?狀態(tài);此后即使I0.0閉合,S2.0也不動(dòng)作。分支結(jié)束稱為匯合,任一分支流程結(jié)束時(shí)的轉(zhuǎn)移條件成立(I0.2或I0.4接通),均可轉(zhuǎn)移到匯合狀態(tài)S1.3。
在將選擇分支轉(zhuǎn)化成梯形圖及語句表時(shí)應(yīng)注意以下幾點(diǎn):
·各個(gè)程序段中的操作應(yīng)根據(jù)實(shí)際工程要求去編輯,在梯形圖中應(yīng)處在各段的段開始( LSCR)和段轉(zhuǎn)移(SCRT)之間,用常開點(diǎn)(SM0.0)控制。本圖中省略了這方面的編程內(nèi)容。
·該種結(jié)構(gòu)最需注意的是選擇分支開始的梯形圖轉(zhuǎn)化,當(dāng)S1.0動(dòng)作時(shí),下一步有可能轉(zhuǎn)移到S1.1或S2.0,所以在S1.0段編程時(shí),要有兩個(gè)段轉(zhuǎn)移指令,然后才是段結(jié)束指令。
·多個(gè)選擇分支應(yīng)按著從左到右的順序轉(zhuǎn)化為梯形圖,當(dāng)左邊支路按著順序結(jié)構(gòu)轉(zhuǎn)化方法編輯完成后,才轉(zhuǎn)化右邊支路。
·將每個(gè)支路的結(jié)束段(S1.2和S2.0)的段轉(zhuǎn)移(SCRT)的目標(biāo)段都指向匯合處(S1.3),則完成了選擇結(jié)構(gòu)匯合點(diǎn)的轉(zhuǎn)化。
圖4-66 選擇分支結(jié)構(gòu)編程方法
③并行分支的開始與匯合。滿足某個(gè)條件后導(dǎo)致幾個(gè)分支同時(shí)動(dòng)作,稱為并行分支。如圖4-67a示例中,若S1.0動(dòng)作時(shí),I0.1一接通,S1.1和S1.4就同時(shí)接通,并按各自分支的條件向下轉(zhuǎn)移,待各分支流程的動(dòng)作全部結(jié)束時(shí),若I0.3接通,匯合狀態(tài)S2.0動(dòng)作,同時(shí)將S1.2和S1.6全部復(fù)位。為了強(qiáng)調(diào)轉(zhuǎn)移的同步實(shí)現(xiàn),分支開始和匯合處的水平連線用雙線表示。各個(gè)程序段中的操作應(yīng)根據(jù)實(shí)際工程要求去編輯,本圖中省略了這方面的編程內(nèi)容。
圖4-67 并行結(jié)構(gòu)編程方法
在將并行結(jié)構(gòu)轉(zhuǎn)化成梯形圖及語句表時(shí)應(yīng)注意以下幾點(diǎn):
·首先需要注意的是并行分支的開始的轉(zhuǎn)化,在S1.0程序段當(dāng)I0.1接通時(shí),同時(shí)激活S1.1和S1.4,如圖4-67b的第一個(gè)“*”所示。
·如果系統(tǒng)有n條并行支路,在前n-1條支路的結(jié)束段不要使用段轉(zhuǎn)移指令使該段復(fù)位,但要有段結(jié)束指令(格式需要),如圖4-67b的第二個(gè)“*”所示。
·并行分支結(jié)束要求必須保證全部并行支路均已完成,且并行結(jié)束條件接通(I0.3=1),才能使各并行支路結(jié)束段同時(shí)復(fù)位,同時(shí)置位并行匯集段(采用R、S指令)。如圖4-67b的第三個(gè)“*”所示。
④跳轉(zhuǎn)與循環(huán)。跳轉(zhuǎn)與循環(huán)是選擇分支的一種特殊形式。圖4-68a的示例中,在S1.0動(dòng)作時(shí),若轉(zhuǎn)移條件I0.3接通,將跳過S1.1去執(zhí)行S1.2,這種情況為正向跳轉(zhuǎn);當(dāng)順序執(zhí)行完S1.2和S1.3后,I0.4仍未閉合,將返回去再執(zhí)行S1.2和S1.3,直到I0.4閉合后,才轉(zhuǎn)向下一步S1.4,這時(shí)為逆向跳轉(zhuǎn)。S1.4完成后,若I0.5閉合,將轉(zhuǎn)移到初始步S1.0,開始新一個(gè)工作循環(huán)。
由圖4-68可以看出,將跳轉(zhuǎn)與循環(huán)結(jié)構(gòu)的狀態(tài)轉(zhuǎn)移圖轉(zhuǎn)化為梯形圖是非常簡單的,是單一流程和選擇分支的組合,其中正跳轉(zhuǎn)、逆跳轉(zhuǎn)及循環(huán)的轉(zhuǎn)化方法如圖4-68b的標(biāo)注處。
圖4-68 跳轉(zhuǎn)與循環(huán)的編程方法
【例4-29】 步進(jìn)控制指令應(yīng)用舉例。
控制要求:
控制3臺(tái)電動(dòng)機(jī)M1(Q0. 0)、M2( Q0.1)、M3(Q0. 2)的起動(dòng)/停止,要求依次延時(shí)順序起動(dòng)/逆序停止3臺(tái)電動(dòng)機(jī),即按下起動(dòng)按鈕(I0.0)后,M1立即起動(dòng),延時(shí)3s起動(dòng)M2,再延時(shí)4s起動(dòng)M3;按下停止按鈕(I0.1)后,M3立即停止,延時(shí)4s停止M2,再延時(shí)3s停止M1。
如果在起動(dòng)的過程中,想終止起動(dòng)過程,按下停止按鈕,也要求逆序停車。例如在M1、M2已經(jīng)起動(dòng),M3還沒起動(dòng)時(shí),按下停止按鈕,則終止起動(dòng)過程,并立即停止M2,延時(shí)3s停止M1。
分析:
①系統(tǒng)要求延時(shí)起動(dòng),延時(shí)停車,所以必須在步進(jìn)控制中用到延時(shí),為了節(jié)省系統(tǒng)資源及便于調(diào)試、監(jiān)控,可以將相同設(shè)定值的延時(shí)段采用一個(gè)定時(shí)器來完成,即只用兩個(gè)定時(shí)器(T37為3s定時(shí)器,T38為4s定時(shí)器)。
②PLC運(yùn)行初試(SM0.1 =1),應(yīng)使第一步(初始化步)置位,其他系統(tǒng)工作步復(fù)位。目的是即使中途切斷程序的運(yùn)行(斷電、PLC停止運(yùn)行),下次再運(yùn)行時(shí),仍然能保證系統(tǒng)能從頭開始工作。
③由于允許在起動(dòng)過程中終止起動(dòng)過程,并要求逆序停車,所以系統(tǒng)的狀態(tài)流程圖應(yīng)含有跳轉(zhuǎn)結(jié)構(gòu)。由于系統(tǒng)停車后必須回到初試狀態(tài),準(zhǔn)備下次起動(dòng),所以應(yīng)包含循環(huán)部分。根據(jù)控制要求繪制的步進(jìn)控制狀態(tài)流程圖如圖4-69a所示。
④由于將延時(shí)時(shí)間相同的時(shí)間段采用一個(gè)定時(shí)器來控制,所以在將狀態(tài)轉(zhuǎn)移圖轉(zhuǎn)化成梯形圖或語句表時(shí),必須使定時(shí)器在段外編程(可以放置在程序的結(jié)尾處),將所有啟用該
定時(shí)器的段(狀態(tài)繼電器S)并聯(lián)后來控制定時(shí)器的運(yùn)行。對(duì)應(yīng)的語句表如圖4-69b所示。
圖4-69 步進(jìn)控制應(yīng)用舉例