- 歐姆龍CP1系列PLC原理與應用
- 王冬青主編
- 2173字
- 2018-12-27 13:52:39
3.4 時序控制指令
3.4.1 結束指令END和空指令NOP
1.結束指令END(001)
程序的結尾處一定要安排END指令,因為CPU掃描到END指令時即認為程序到此結束,END后面的程序一概不執(zhí)行,并馬上返回到程序的起始處再次掃描程序。若程序結束時沒寫END指令,將出現(xiàn)程序錯誤。在調試程序時可以將END指令插在各段程序之后,對程序進行分段調試,調試結束時再刪除插在中間各段程序之后的END指令。
圖3.24中使用了END指令,請注意END指令的梯形圖畫法和語句的寫法。圖中,常閉觸點0.03與上一行并聯(lián)后再與常開觸點0.02串聯(lián)而形成一個觸點組,0.04與上面的觸點組再并聯(lián)。0.04與上面的觸點組兩者中有一個為ON,100.02即為ON。

圖3.24 使用END指令的例子
本書在以后的梯形圖程序中通常省略END指令,不再另行說明。
2.空指令NOP(000)
不具備任何功能(不進行程序處理)的指令。在梯形圖中無表示。NOP指令常用來修改程序。當修改程序刪去一條指令時,后面語句的地址發(fā)生變化。而用NOP指令代替所刪指令的位置,后面語句的地址保持不變。
例如,用NOP代替AND N語句,可把AND語句中的觸點N短接,用NOP代替OR N語句,可把OR語句中的觸點N斷掉等,而其他語句的地址保持不變。
圖3.25是使用NOP指令的例子。欲將圖3.25(a)變成圖3.25(b)的梯形圖,將圖3.25(a)語句表中的AND 0.01改寫成NOP(000)即可。若欲去掉LD 0.00,不僅把第一條語句處改寫成NOP(000),還有要將下一條語句AND 0.01改寫成LD 0.01,否則會出現(xiàn)語法錯誤。

圖3.25 使用NOP指令的例子
3.4.2 互鎖 IL/互鎖解除ILC指令
IL/ILC指令常用于控制程序的流向。表3.10是指令的格式/名稱、梯形圖符號、操作數(shù)的范圍及含義、指令功能及執(zhí)行指令對標志位的影響。
表3.10 IL/ILC指令
使用IL/ILC指令時應注意:
①不論IL的輸入條件是ON還是OFF,CPU都要對IL/ILC之間的程序段進行掃描。
②如果IL的執(zhí)行條件為OFF,則位于IL和ILC之間的程序段不執(zhí)行,此時IL和ILC之間各內部器件的狀態(tài)如下。
所有OUT和OUT NOT指令的輸出位為OFF,所有定時器都復位,KEEP指令的操作位、計數(shù)器、移位寄存器及SET和RSET指令的操作位都保持IL為OFF以前的狀態(tài)。
③IL和ILC指令可以成對使用,也可以多個IL指令配一個ILC指令,但不準嵌套使用,如IL—IL—ILC—ILC。
圖3.26(a)中A為分支點,A右側有2個分支,且每個分支都有觸點控制。這時要使用互鎖指令編程。圖3.26(a)也可以畫成圖3.26(b)的結構,兩圖的功能一樣。

圖3.26 使用IL/ILC指令的例子
圖3.26中,當0.00為OFF時,IL和ILC之間的程序不執(zhí)行,100.00、100.01都處于OFF狀態(tài)。當0.00為ON時,IL和ILC之間的程序執(zhí)行,100.00、100.01的狀態(tài)取決于各自分支上的控制觸點的狀態(tài)。
在圖3.26中,若A右側的第一分支中沒有控制觸點0.01,就不必用互鎖指令編程了。但如果把沒有觸點控制的分支放在下面,那也必須用互鎖指令編程。
圖3.27(a)的程序有兩次分支,圖3.27(a)也可以畫成圖3.27(b)的結構,兩圖的功能是一樣的。圖3.27(c)是它們的語句表。

圖3.27 IL/ILC指令使用方法舉例
到此為止已經(jīng)介紹了多種輸出方式,歸納起來可以分為并聯(lián)輸出、連續(xù)輸出和復合輸出三種結構。三種輸出方式的梯形圖結構和語句表如圖3.28所示,請注意各種輸出方式語句表的寫法。

圖3.28 并聯(lián)輸出、連續(xù)輸出和復合輸出的程序結構
3.4.3 暫存繼電器TR
暫存繼電器(TR)是繼電器,而不是指令。暫存繼電器可用來暫時存儲當前指令執(zhí)行的結果,所以處理梯形圖的分支還有另外一種方法,即使用暫存繼電器。
CP1H系列PLC有編號為TR0~TR15的16個暫存繼電器。如果某個TR位被設置在一個分支點處,則分支前面的執(zhí)行結果就會存儲在這個TR位中。對暫存繼電器做如下說明:
①在同一指令塊中,同一TR位不能重復使用;
②TR不是編程指令,而是繼電器,只能配合LD或OUT指令一起使用。
圖3.29為使用暫存繼電器(TR)處理分支的例子。從語句表可以看出兩種處理分支方法的區(qū)別:用TR時,是用AND指令連接下一個分支的觸點;用IL/ILC時,是用LD指令連接下一個分支的觸點。在分支多時,用TR處理分支程序比使用IL/ILC指令時語句表要煩瑣一些。

圖3.29 用TR與用IL/ILC處理分支程序的區(qū)別
圖3.27程序有兩次分支,用TR指令改寫,如圖3.30(a)所示,圖3.30(b)為語句表程序。

圖3.30 IL/ILC指令使用方法舉例
注意:采用計算機編程時,可直接用CX-P軟件將梯形圖轉換為語句表,梯形圖中的分支自動采用TR處理。
3.4.4 跳轉JMP/跳轉結束JME指令
JMP/JME是跳轉和跳轉結束指令,常用于控制程序的流向。表3.11是這對指令的格式/名稱、梯形圖符號、操作數(shù)的范圍及含義、指令功能及執(zhí)行指令對標志位的影響。
表3.11 JMP和JME指令
使用JMP N和JME N指令時注意:
①發(fā)生轉移時,JMP N和JME N之間的程序不執(zhí)行,且不占用掃描時間;
②發(fā)生跳轉時,所有繼電器、定時器、計數(shù)器均保持跳轉前的狀態(tài)不變,定時器定時繼續(xù);
③不允許出現(xiàn)相同編號的兩個以上的JMP指令或JME指令;
④跳轉指令可以嵌套使用,但必須是不同跳轉號的嵌套,如JMP & 0—JMP & 1—JME & 1—JME& 0等。
圖3.31為使用JMP/JME的例子,0.00是JMP & 0的執(zhí)行條件,當0.00為OFF 時,JMP & 0到JME& 0之間的程序不執(zhí)行,而轉去執(zhí)行JME & 0之后的程序,這時100.00和101.00保持轉移前的狀態(tài)。例如,若轉移前100.00為OFF,則轉移期間也為OFF,即使0.01為ON;當0.00變?yōu)镺N時,JMP & 0到JME & 0之間的程序才被執(zhí)行。
在兩段程序切換時,常用到轉移指令。如圖3.32所示,當輸入0.00為ON時,執(zhí)行手動程序而不執(zhí)行自動程序;當0.00為OFF時,跳過手動程序轉去執(zhí)行自動程序,請注意JMP/JME的這種用法。

圖3.31 使用JMP/JME的例子

圖3.32 轉移指令的用法
3.4.5 其他順序控制指令
表3.12是其他順序控制類指令的格式/名稱、梯形圖符號、操作數(shù)的范圍及含義、指令功能及執(zhí)行指令對標志位的影響。
表3.12 其他順序控制類指令