福建西門子S7-1200PLC模塊代理經(jīng)銷商
西門子PLC編程梯形圖中的自保持位(自鎖)

盡管保持功能可用來產(chǎn)生自保持位,有時必須用另外的方式產(chǎn)生一個自保持位,在一個程序的互鎖部分里,它們就能變?yōu)?ldquo;OFF”。
為了產(chǎn)生一個自保持位,一個輸出指令的操作數(shù)位用作同一輸出指令的一個或運算條件,這樣輸出指令的操作數(shù)位將繼續(xù)為“ON”或“OFF”,直到其他位發(fā)生變化。至少一個其他條件用在輸出指令之前起到復位功能。如果沒有這個復位,則無法控制輸出指令的操作數(shù)位。
如圖1-33所示的保持指令的梯形圖可以寫成如圖1-34所示的樣子。當互鎖指令的執(zhí)行條件為“ON”的時,這兩個梯形圖的不同之處在于它們的互鎖程序部分的操作數(shù)。圖1-33與圖1-34一樣,使用了兩個復位,也就是說,當IR00004和IR00005中任何一個為“ON”時,HR0000將被置“OFF”。
圖1-33 保持指令應用

圖1-34 梯形圖
①置位和復位。當執(zhí)行條件變?yōu)?ldquo;ON”時,置位將在操作位上置“ON”,但不像輸出指令( OUT),當執(zhí)行條件變?yōu)?ldquo;OFF”時,置位將不會在操作位上置“OFF”。當執(zhí)行條件變?yōu)?ldquo;ON”時,復位在操作位上置“OFF”,但不像輸出非指令(OUT NOT),當執(zhí)行條件變?yōu)?ldquo;OFF”時,復位將不在操作位上置“ON”。在接下來的例子里,不管IR00100的狀態(tài)如何,當IR00100置“ON”時IR20000將置“ON”,并且能保持“ON”直至IR00101置“ON”。當IR00101置“ON”時,復位將使IR20000置“OFF”。置位和復位如圖1-31所示。

圖1-31 置位和復位
置位和復位沒有功能碼。從手持式編程器輸入它們時按FUN和SET鍵或FUN和RSET鍵,后面輸入位地址。
②上升沿微分和下降沿微分。所謂上升沿微分和下降沿微分是指輸入信號脈沖的前沿和后沿的操作。上升沿微分和下降沿微分指令用來讓操作位在一個周期時間內(nèi)置“ON”。在執(zhí)行條件“OFF”變?yōu)?ldquo;ON”之后,上升沿微分指令使一個周期的操作位置“ON”;在執(zhí)行條件“ON”變?yōu)?ldquo;OFF”之后,下降沿微分指令使一個周期的操作位置“ON”。這兩種指令都只需要有一行助記符。上升沿微分和下降沿微分如圖1-32所示。
這里,在IR00000變?yōu)?ldquo;ON”后,IR20001在一個周期內(nèi)將置“ON”。接下來再執(zhí)行DIFU (13) 20001,不管IR00000的狀態(tài)如何,IR20001將為“OFF”。用下降沿微分指令,在IR00001變?yōu)?ldquo;OFF”后(IR20002保持“OFF”直至此時),IR20002將在一個周期內(nèi)置“ON”,并且將在下一次執(zhí)行DIFD (14) 20002后置“OFF”。

圖1-32 上升沿微分和下降沿微分

③保持。使用保持指令來保持基于兩個執(zhí)行條件的操作位的狀態(tài)。這樣做,將保持指令連接到兩條指令線上。當*個指令行末端的執(zhí)行條件為“ON”時,保持指令的操作位置“ON”。當?shù)诙€指令行末端的執(zhí)行條件為“ON”時,保持指令的操作位置“OFF”。即使位于在程序的內(nèi)部聯(lián)鎖部分,保持指令的操作位將保存它的“ON”或“OFF”狀態(tài)。
在如圖1-33所示的例子中,當IR00002為“ON”且IR00003為“OFF”時,HR0000將會置“ON”。HR0000一直保持“ON”直到另外的IR00004或者IR00005置“ON”為止。保持指令和其他一樣,也需要不止一條指令行,這些指令行在它們控制的指令之前要先編碼。

圖1-33 保持指令應用
根據(jù)一個的執(zhí)行條件,可以跳過程序中某一段。在將IL指令的執(zhí)行條件置“OFF”時也可實現(xiàn)類似功能,而使用跳轉(zhuǎn)可以維持所有指令的操作數(shù)的狀態(tài)。因此,跳轉(zhuǎn)常被用于控制需要保持連續(xù)輸出的器件,比如氣動裝置、液壓傳動裝置;而IL指令常用于控制不需要連續(xù)輸出的器件中,例如電子儀器。
使用跳轉(zhuǎn)JMP (04)和跳轉(zhuǎn)結(jié)束JME (05)指令可以實現(xiàn)跳轉(zhuǎn)。如果一個跳轉(zhuǎn)指令的執(zhí)行條件為“ON”,那么程序沒有跳轉(zhuǎn)指令一樣運行;如果跳轉(zhuǎn)指令的執(zhí)行條件為“OFF”,則程序會立即跳轉(zhuǎn)到跳轉(zhuǎn)結(jié)束指令后繼續(xù)執(zhí)行,而不改變跳轉(zhuǎn)和跳轉(zhuǎn)結(jié)束指令之間的任何狀態(tài)。
所有跳轉(zhuǎn)和跳轉(zhuǎn)結(jié)束指令都有定義的跳轉(zhuǎn)編號,范圍為00~99。跳轉(zhuǎn)有兩種類型,其類型取決于使用的跳轉(zhuǎn)編號。
可以在01~99的范圍內(nèi)取一編號定義跳轉(zhuǎn)(但只能定義一次),即每個跳轉(zhuǎn)編號只能使用一次(跳轉(zhuǎn)、跳轉(zhuǎn)結(jié)束指令各一次)。當執(zhí)行一條具有某跳轉(zhuǎn)編號的跳轉(zhuǎn)指令時,程序會立即跳轉(zhuǎn)移到具有相同編號的跳轉(zhuǎn)結(jié)束指令后,就像在這兩條指令之間所有的指令都不存在一樣。描述TR位和互鎖例子可以使用一個跳轉(zhuǎn)指令重畫為如圖1-30所示的梯形圖。盡管本例中跳轉(zhuǎn)編號用的是01,只要它沒有在程序其他地方使用過,那么01~99之間的任何一個數(shù)字都是可以使用的。

圖1-30 使用跳轉(zhuǎn)指令修改
當IR00000為“OFF”時,梯形圖B程序的執(zhí)行時間具有比其他任何方式編程的程序形式都要短。

使用00跳轉(zhuǎn)編號可以產(chǎn)生另一種跳轉(zhuǎn)類型。用00作為跳轉(zhuǎn)編號可以產(chǎn)生所需要的許多次跳轉(zhuǎn),它允許多條跳轉(zhuǎn)指令連續(xù)使用。0作為跳轉(zhuǎn)編號,而它們之間沒有以00為跳轉(zhuǎn)編號的跳轉(zhuǎn)結(jié)束指令。它甚至允許所有JUMP 00指令把程序執(zhí)行跳轉(zhuǎn)同一條JUMPE 00指令處,即在程序中所有的JUMP 00指令共用一條JUMPE 00指令。當一個跳轉(zhuǎn)指令使用00作為跳轉(zhuǎn)編號時,程序執(zhí)行將跳轉(zhuǎn)到緊跟著的以00為跳轉(zhuǎn)編號的跳轉(zhuǎn)結(jié)束指令后的指令。盡管同其他跳轉(zhuǎn)指令一樣,程序會跳過JUMP 00至JUMPE 00指令間的所有指令,且不改變狀態(tài),但因為程序要用一定的時間尋找下一個JUMPE 00指令,所以它的執(zhí)行時間比其他跳轉(zhuǎn)指令稍長些。
程序中多條JUMP 00指令共用一條JUMPE 00指令,其執(zhí)行與使用互鎖指令的程序相似。
一般可以使用7條基本指令來控制單個位狀態(tài),它們是輸出( OUT)、輸出非(OUT NOT)、置位(SET)、復位(RSET)、前(上升)沿微分(DIFU)、后(下降)沿微分(DIFD)和保持(KEEP)指令。所有這些指令作為一個指令行中后一條指令出現(xiàn),并且使用一個位地址作為操作數(shù)。這些指令(除了已經(jīng)介紹過的輸出和輸出非)在這里要說明是因為在一些程序中它們很重要。盡管這些指令在IR區(qū)中用來使輸出位置“ON”和“OFF”(即向外部設備送出或停止輸出信號),但也可以用來它們在IR區(qū)或其他數(shù)據(jù)區(qū)域控制其他位的狀態(tài)。
置位和復位指令同輸出和輸出非指令非常相似,它們只能改變“ON”執(zhí)行條件的位操作數(shù)位的狀態(tài)。當執(zhí)行條件為“OFF”時,指令不影響它的操作位的狀態(tài)。
當一個指令行分成兩行或更多行時,它有時必須使用互鎖或TR位來保存分支點上存在的執(zhí)行條件。這是因為指令行在返回分支點執(zhí)行一個分支行上的指令之前執(zhí)行了右側(cè)指令。如果在分支點后的任意指令行上存在一個條件,這時執(zhí)行條件可能發(fā)生改變而不能完成本來的操作。圖1-25所示出的梯形圖說明了這個問題。在兩個梯形圖中,指令1在返回分支點前執(zhí)行,并且沿著分支行轉(zhuǎn)向指令2。
如圖1-25 (a)所示,如果在分支點上存在的執(zhí)行條件在返回分支行前不會改變(即右側(cè)的指令不改變該執(zhí)行條件),那么將正確地執(zhí)行分支行而不需要作任何特殊的編程處理。如圖1-25(b)所示,如果在分支點和上面指令行的后一條指令之間有一個條件,那么分支點上的執(zhí)行條件和完成上面指令行之后的執(zhí)行條件有時可能是不同的,因此,不能確保該分支行正確地執(zhí)行。
有兩種編制分支程序來保存執(zhí)行條件的方法,一種是使用TR位;另一種是使用互鎖指令 IL (02)/IL (03) 。
a.TR位。TR區(qū)域共提供8個位(TR0~TR7),可用于暫時存儲執(zhí)行條件。如果一個TR位被設置在分支點處,則當前的執(zhí)行條件就會存儲在的TR位中。當程序返回到分支點時,TR位釋放出執(zhí)行狀態(tài),而該狀態(tài)正是在程序*次執(zhí)行到該分支點處時將被保存下來的。
圖1-25(b)可寫為如圖1-26所示的形式,以確保程序正確執(zhí)行。在助記符中,把TR位當作OUT PUT指令的操作數(shù),這樣分支點的執(zhí)行條件即可被存入TR位中。在執(zhí)行完右側(cè)指令后,再把TR位當作LOAD指令的操作數(shù)。這樣,這個執(zhí)行條件又被釋放出來。

圖1-26 正確使用暫存繼電器位

圖1-25的實際指令如圖1-27所示:用一條LOAD指令載入IR00000的狀態(tài),從而建立初始執(zhí)行條件。在分支點,用一條OUT指令將該執(zhí)行條件送入TR 0存儲起來。接著執(zhí)行條件與IR00001的狀態(tài)進行AND操作,進而執(zhí)行指令1。接下來存儲在分支點的這個執(zhí)行條件被再次調(diào)用(一個以TR 0為操作數(shù)的LOAD指令),這時它和IR00002的狀態(tài)進行AND操作,相應地再執(zhí)行指令2。

圖1-27 使用兩個TR位的應用
在這個例子中,TRO和TR1是用來存儲兩個分支點的執(zhí)行條件。在執(zhí)行指令1后,TR1內(nèi)的執(zhí)行條件被調(diào)出和IR00003的狀態(tài)進行AND操作。而存在TR0中的執(zhí)行條件會被兩次調(diào)用,*次調(diào)出來和IR00004的狀態(tài)進行AND操作,而第二次是與IR00005的狀態(tài)非進行AND操作。TR位可以根據(jù)需要多次使用,但在同一指令塊中不可重復使用同一TR位。程序每次開始執(zhí)行新的指令塊時都要返回母線,如果在單個指令塊中,必須要有八個以上需要保存執(zhí)行條件的分支點,則必須使用互鎖指令操作(后面說明)。
當畫梯形圖時,除非必須,一般不用TR位。畫梯形圖時不使用TR位可以減少程序的指令數(shù),并使程序更易于理解。在圖1-28所示出的兩對梯形圖中,箭頭所指的梯形圖形式不用TR位又減少指令數(shù)。圖1-28(a)是通過重組指令塊實現(xiàn)的;圖1-28(b)是通過將第二個OUT PUT指令分開的方法,并使用另一個LOAD指令來為它產(chǎn)生適當?shù)膱?zhí)行條件。
雖然簡化程序總是一個令人關(guān)心的問題,但指令的執(zhí)行順序有時也是很重要的,例如,在一個二進制加法指令執(zhí)行之前,需要一條傳送(MOVE)指令把適當?shù)臄?shù)據(jù)放入所需的操作數(shù)字中。在考慮簡化程序之前,必須要確認執(zhí)行順序全部正確。
只有在使用助記符編程時才使用TR位。當直接輸入梯形圖時,不必使用TR位。但仍要注意在分支點所需要TR位的大數(shù)目(8個)的限制,也要注意采用適當?shù)姆椒p少程序所用的指令數(shù)。
b.互鎖。使用互鎖IL(02)和解除互鎖ILC (03)指令,可以解決在分支點上存儲執(zhí)行條件的問題。IL和ILC指令可*消除分支點,它允許一個特殊執(zhí)行條件去控制一組指令。IL和ILC指令總是一起使用。如果在一個梯形圖程序,的某一段前設置了IL指令,那么IL指令的執(zhí)行條件將控制ILC指令前的所有指令執(zhí)行。如果IL指令的執(zhí)行條件為“OFF”,那么在該ILC指令與IL指令前的所有指令都按“OFF”執(zhí)行條件去執(zhí)行,從而對梯形圖的這整個一段復位。這個特殊指令的影響將在互鎖和解除互鎖IL和ILC中說明。
如圖1-29所示,圖1-25(b)也可以用互鎖指令來修改。程序中分支點的執(zhí)行條件被放在IL指令行上,所有原來從分支點分出的行都被重寫成獨立的指令行,并且在后再加入一條解除ILC指令。ILC指令行上不能有條件存在。注意:不管IL指令還是ILC指令,都不需要操作數(shù)。
在圖1-29中,如果IR00000的狀態(tài)為“ON”,那么IR00001和IR00002的狀態(tài)將分別確定指令1和指令2的執(zhí)行條件。因為IR00000為“ON”,那么它各位的狀態(tài)AND操作結(jié)果是一樣的;如果IR00000為“OFF”,那么IL指令將為指令1和指令2產(chǎn)生一個“OFF”執(zhí)行條件,并從ILC指令后面的指令繼續(xù)執(zhí)行下去。

在一個指令塊中可以重復使用IL指令,每個指令的有效范圍都在解除ILC指令之前。如果上圖中IR00000為“OFF”(即*個IL指令的執(zhí)行條件為“OFF”),那么指令1~4都按“OFF”執(zhí)行條件執(zhí)行且程序的執(zhí)行會轉(zhuǎn)到解除ILC指令后面的指令;如果IR00000為“ON”,那么IR00001的狀態(tài)將作為指令1的執(zhí)行條件載入,然后將載入IR00002的狀態(tài)來形成第二個II)指令的執(zhí)行條件。如果IR00002為“OFF”,指令2~4將按“OFF”執(zhí)行條件執(zhí)行;如果IR00002為“ON”,則IR00003、IR00005和IR00006將確定在新指令行中*個執(zhí)行條件。
福建西門子S7-1200PLC模塊代理經(jīng)銷商