西門子電機(jī)報(bào)編碼器故障現(xiàn)場維修
置位( SET)和復(fù)位(RESET)指令同輸出和輸出非指令非常相似,但它們只能改變以“ON”為執(zhí)行條件的位操作數(shù)位的狀態(tài)。當(dāng)執(zhí)行條件為“OFF”時(shí),指令不影響它的操作位的狀態(tài)。
當(dāng)執(zhí)行條件為“ON”時(shí),置位指令(SET)將操作位置“ON”,與輸出指令(OUT PUT)不同的是,當(dāng)執(zhí)行條件變?yōu)?ldquo;OFF”時(shí),置位指令(SET)不會將操作位置“OFF”;類似地,當(dāng)執(zhí)行條件為“ON”時(shí),復(fù)位指令(RESET)將操作位置“OFF”,與輸出非指令( OUTPUT NOT)不同的是,當(dāng)執(zhí)行條件變?yōu)?ldquo;OFF”時(shí),復(fù)位指令(RESET)不會將操作位置“ON”。
因此,如圖6-30a所示,不管IR 00100的狀態(tài)如何,當(dāng)IR 00100置“ON”時(shí)IR 20000將置“ON”,并且能保持“ON”直至IR 00101置“ON”。當(dāng)IR 00101置“ON”時(shí),復(fù)位將使IR 20000置“OFF”,其對應(yīng)指令助記符程序如圖6-30b所示。
圖6-30 置位和復(fù)位指令
在編程時(shí)經(jīng)常會遇到需要跳過某一程序段的情況,即跳轉(zhuǎn)。盡管將互鎖指令的執(zhí)行條件置“OFF”時(shí)也可實(shí)現(xiàn)類似功能,但跳轉(zhuǎn)指令不但可以跳過某一段的程序,還可以維持所有指令的操作數(shù)的狀態(tài)。因此,跳轉(zhuǎn)指令常被用于控制需要保持連續(xù)輸出的器件,比如氣動裝置、液壓傳動裝置,而互鎖指令常用于控制不需要連續(xù)輸出的器件,例如電子儀器。
實(shí)現(xiàn)跳轉(zhuǎn)可以使用跳轉(zhuǎn)JMP (04)和跳轉(zhuǎn)結(jié)束JME (05)指令。如果一個(gè)跳轉(zhuǎn)指令的執(zhí)行條件為“ON”,那么程序和沒有跳轉(zhuǎn)指令時(shí)一樣運(yù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),每個(gè)跳轉(zhuǎn)號只能使用一次(跳轉(zhuǎn)、跳轉(zhuǎn)結(jié)束指令各一次);使用跳轉(zhuǎn)編號00,可以產(chǎn)生需要次數(shù)的多次跳轉(zhuǎn),并且允許多條跳轉(zhuǎn)指令連續(xù)使用00作為跳轉(zhuǎn)號,它們之間沒有以00為跳轉(zhuǎn)號的跳轉(zhuǎn)結(jié)束指令。
當(dāng)執(zhí)行一次性跳轉(zhuǎn)指令時(shí),程序會立即轉(zhuǎn)移到具有相同編號的跳轉(zhuǎn)結(jié)束指令后,就像在它們兩條指令之間所有的指令都不存在一樣。描述TR位和互鎖例子的圖6-23a和6-26a可以使用一個(gè)跳轉(zhuǎn)指令重新編寫梯形圖,如圖6-28a所示。盡管其跳轉(zhuǎn)編號用的是01,只要它沒有在程序其他地方使用過,那么01~ 99之間的任何一個(gè)數(shù)字都是可以使用的。
使用00跳轉(zhuǎn)編號產(chǎn)生所需要的多次跳轉(zhuǎn)時(shí),它允許所有JUMP 00指令把程序執(zhí)行跳轉(zhuǎn)到同一條JUMP END 00指令處,即在程序中所有的JUMP 00指令共用一條JUMP END 00指令。當(dāng)一個(gè)跳轉(zhuǎn)指令使用00作為跳轉(zhuǎn)編號時(shí),程序執(zhí)行將跳轉(zhuǎn)到緊跟著的以00為跳轉(zhuǎn)號的跳轉(zhuǎn)結(jié)束指令后的指令。盡管同其他跳轉(zhuǎn)指令一樣,程序會跳過JUMP 00至JUMP END 00指令間的所有指令,且不改變狀態(tài),但因?yàn)槌绦蛞靡欢ǖ臅r(shí)間尋找下一個(gè)JUMP END 00指令,所以它的執(zhí)行時(shí)間比其他跳轉(zhuǎn)指令稍長些。

程序中多條JUMP 00指令共用一條JUMP END 00指令,其執(zhí)行與使用互鎖(IL)指令的程序相似。圖6-29a是將圖6-27a采用互鎖指令的例子用跳轉(zhuǎn)JUMP指令方法改寫。該圖的執(zhí)行與前面采用互鎖指令的梯形圖不同,互鎖會使互鎖的某些部分狀態(tài)復(fù)位,而跳轉(zhuǎn)則對JUMP至JUMP END指令間的狀態(tài)不產(chǎn)生任何影響。
如果一個(gè)梯形圖可以劃分為若干個(gè)邏輯塊,那么就需要串聯(lián)邏輯塊指令實(shí)現(xiàn)對梯形圖的編程。每塊采用一條“LOAD”或“LOAD NOT”指令編寫*個(gè)條件,然后使用“AND LOAD”或“OR LOAD”指令對這些邏輯塊進(jìn)行邏輯組合。用“AND LOAD”或“OR LOAD”指令時(shí),有兩種方法實(shí)現(xiàn)上述目的。一種是在前面兩個(gè)邏輯運(yùn)算后用邏輯塊指令編寫,然后在每增加一個(gè)邏輯塊的后面用邏輯塊指令編寫;另一種方法是對所有要結(jié)合的邏輯塊一起編寫,即先用“LOAD”或“LOAD NOT”指令開始每個(gè)邏輯塊編寫,然后用邏輯塊指令把它們組合起來,這時(shí),用于后一對邏輯塊的指令將首先被結(jié)合,然后前面的每一邏輯塊被結(jié)合,逐次遞推回*個(gè)邏輯塊。盡管上述兩種方法產(chǎn)生*相同的結(jié)果,但第二種對所有邏輯塊指令一起編寫的方法,只適用于有8個(gè)(或少于8個(gè))邏輯塊組合的情況,即要用7條(或7條以下)邏輯塊指令的情況。
以圖6-12所示梯形圖為例,其中圖6-12a為梯形圖,圖6-12b為對應(yīng)的指令助記符。要實(shí)現(xiàn)的執(zhí)行條件是:當(dāng)IR 00000為“ON”和IR 00001為“OFF”時(shí),或當(dāng)IR 00002和IR 00003都為“ON”的時(shí)候,右側(cè)的指令產(chǎn)生一個(gè)“ON”執(zhí)行條件。為了表達(dá)上、下邏輯塊之間的這種關(guān)系,就需要一條“OR LOAD”指令,這時(shí)當(dāng)前執(zhí)行條件和前一個(gè)“沒使用”的執(zhí)行條件之間進(jìn)行的是“OR”操作。“OR LOAD”指令的助記符的操作同“AND LOAD”指令一樣,本身不需要操作數(shù)。

圖6-12 OR LOAD指令
為了達(dá)到上述目的,可以在每個(gè)邏輯塊的一個(gè)指令行中使用“LOAD”或“LOAD NOT”指令。這時(shí),當(dāng)前的執(zhí)行條件被保存在一個(gè)特定緩沖區(qū)里,而邏輯過程重新開始,然后用一個(gè)“AND LOAD”指令將當(dāng)前執(zhí)行條件與先前“沒使用”的執(zhí)行條件結(jié)合起來,這里的“LOAD”是指使后一個(gè)未用的執(zhí)行條件被取出。
分析上述梯形圖可以看到,IR 00000的條件是一條“LOAD”指令,其下面的條件IR 00000和IR 00001狀態(tài)之間的一條“OR”指令。IR 00002的條件是另一條“LOAD”指令,其下面的條件是一條“OR NOT”指令,即在IR 00002的狀態(tài)和IR 00003狀態(tài)的“非”之間的一條“OR”指令。為了達(dá)到右側(cè)指令的執(zhí)行條件,必須對兩個(gè)邏輯塊執(zhí)行邏輯與(AND)操作,“AND LOAD”就實(shí)現(xiàn)了這個(gè)功能。
梯形圖對應(yīng)的助記符如圖6-11b所示。“AND LOAD”指令本身不需要操作數(shù),因?yàn)樗聪惹按_定的執(zhí)行條件操作,圖中劃線表示無操作數(shù)被或輸入。
圖6-11 AND LOAD指令
程序的后一條指令也就是END(結(jié)束)指令。當(dāng)CPU單元掃描程序時(shí),它執(zhí)行所有指令的指令,直到*條END指令為止,然后返回到程序開始處再次執(zhí)行。END指令可以放在程序中的任意位置上,特別在調(diào)試程序時(shí),在*條END指令后的指令不會執(zhí)行(除非把它刪掉)。END指令后面的數(shù)是指令功能代碼,結(jié)束指令不需要操作數(shù),且END指令的指令行上不能設(shè)置條件。如果在程序中沒有END指令,則程序不會執(zhí)行。如圖6-10所示,其中圖6-10a為梯形圖,圖6-10b為對應(yīng)的指令助記符。

圖6-10 結(jié)束指令
西門子電機(jī)報(bào)編碼器故障現(xiàn)場維修