PLC在執行程序的過程中,是按照程序步從(cong) 頭到尾一步一步掃描的。但PLC也有特異功能,它的程序執行可以瞬移!從(cong) 當前程序步瞬間轉移到其他程序步執行,如下圖就是PLC的條件轉移,執行CJ轉移指令後,直接跳過第8~12步程序,從(cong) 第14步程序開始往下執行。
PLC在程序執行過程中發生轉移的現象,稱為(wei) 程序流程轉移,即跳過一段程序去執行指定程序。造成這種程序轉移的有條件轉移、子程序調用、中斷服務和循環程序。
如果把PLC的程序執行看作爬山,程序的執行過程就是從(cong) 山頭爬到山頂的過程。此時,PLC的幾種程序流程轉移就好比以下幾種情況:
1、它全程不停的一步一步往上走,這就是PLC程序步的順序執行;
2、它在爬山過程中,坐了纜車,直接跨過了一段山路,這就是PLC的條件轉移;
3、它在爬山過程中,因為(wei) 沿途的風景過於(yu) 漂亮,去拍了幾張美照,再繼續爬,這就是PLC的子程序調用;
4、它在爬山過程中,由於(yu) 三急去了一趟廁所,這就是PLC的中斷服務;
PLC的程序流程轉移是靠相對應的指令是實現的。就如我們(men) 這次學習(xi) 的條件轉移所用的指令 CJ 。在學習(xi) 程序流程指令之前,我們(men) 得先知道什麽(me) 是主程序區、什麽(me) 是副程序區。
▎一、PLC的程序區
PLC的用戶程序一般分為(wei) 主程序區和副程序區,主、副程序區的分界線為(wei) 主程序結束指令FEND,而副程序在FEND指令和END指令之間編寫(xie) 。主程序顯然是必不可少的,且隻有一個(ge) ,它是完成用戶控製要求的程序。就像手機,打電話是手機必不可少的功能,如果沒有通話功能,這也就不叫手機了。
副程序區是子程序、中斷服務程序的所在區域,它們(men) 不是必須的,可以根據具體(ti) 要求而編寫(xie) 。也就說,PLC必須有主程序,副程序可有可無。PLC執行程序就好比打醬油,你媽媽叫你打醬油,這是主程序,然後你媽媽又說如果有蘋果的話順便買(mai) 點回來,這個(ge) 買(mai) 蘋果就是子程序,醬油是一定要打的,但蘋果卻不一定要買(mai) 。
▎二、主程序結束指令FEND
FEND指令沒有驅動條件,也就說這個(ge) 指令的前麵不能有觸點控製,如下圖所示。執行FEND指令和執行END指令功能是一樣的,執行輸入和輸出刷新。
在主程序區,FEND指令可以多次使用,但每次隻能有一個(ge) 有效。PLC在程序掃描時,隻要掃到任一個(ge) FEND指令,就會(hui) 向0步程序返回,重新開始。如下圖所示,程序中有兩(liang) 個(ge) FEND指令,它兩(liang) 種情況,若轉移指令CJ沒被驅動,程序掃描到第一個(ge) FEND之後,就會(hui) 返回到程序的第0步再次開始;若CJ的驅動條件成立,此時程序會(hui) 發生轉移,跳過第一個(ge) FEND,從(cong) 指針P5處往下執行,直到掃到第二個(ge) FEND再返回到程序的第0步再次開始。
另外,如上文所言,副程序是在FEND指令和END指令之間編寫(xie) 的,更確切地說,應該是副程序是在最後一個(ge) FEND指令和END指令之間編寫(xie) 的。FEND指令是主程序區和副程序區的分界,所以,顯然FEND指令也是不能出現在子程序中的。
當然,如果用戶程序本身就比較簡單,沒必要編寫(xie) 中斷程序和子程序,那麽(me) FEND指令也就沒必要了,直接以END指令作為(wei) 結束指令。知道了什麽(me) 是主程序、副程序後,我們(men) 接著學習(xi) 這次的主要內(nei) 容:程序的條件轉移。
▎三、程序的條件轉移
程序的條件轉移是應用條件轉移指令CJ實現的,用於(yu) 主程序,其可用軟元件隻有分支指針P。
1、轉移指令CJ
轉移指令CJ和分支指針P組合使用,從(cong) 上圖可以看到,轉移指令CJ有兩(liang) 種執行方式:連續執行型和脈衝(chong) 執行型。它們(men) 的執行形式如下圖所示。
連續執行型指令CJ在驅動條件成立期間,每一個(ge) 掃描周期都會(hui) 執行一次轉移,知道X0斷開(OFF);而脈衝(chong) 型指令CJP隻有在X0接通的上升沿才會(hui) 執行,盡管X0接通時間持續多個(ge) 掃描周期,CJP也執行一次,直到X0斷開再次接通,CJP才會(hui) 再執行。
2、分支指針P
在FX2N PLC中,指針有分支指針P和中斷指針I兩(liang) 種,分支指針P必須和轉移指令或子程序調用指令CALL組合使用。可用的分支指針有P0~P127共128個(ge) ,但P63是向結束指令END步轉移的特殊指針,不能用於(yu) 標記。
在程序中,指針的使用很簡單,在對應程序行左母線的左側(ce) 編寫(xie) 即可。指針標號具有唯一性,不能重複使用。也就說,每個(ge) 標號的指針在左母線左側(ce) 隻能出現一次。但同一標號指針,可以和多個(ge) CJ指令組合,作為(wei) 多個(ge) CJ指令的程序轉移入口地址,如下圖所示。
另外,標號可以變址尋址使用,變址尋址我在上一篇文章已經講過,如下圖所示,變址寄存器內(nei) 容為(wei) K10,此時指針標號就變成了P15。
3、轉移方式
利用CJ轉移時,可以向CJ指令的後麵程序轉移,也可以向CJ指令的前麵程序轉移。但一般都是用於(yu) 向後麵程序轉移,因為(wei) 像前麵程序轉移,一不注意嗎,就會(hui) 造成死循環,如下圖所示。若驅動條件X1一直接通,程序就會(hui) 在轉移地址入口P5處和CJ指令之間不斷運行,造成死循環。
4、CJ指令的應用
PLC程序對CJ轉移指令的應用比較多,因為(wei) CJ指令簡單有方便。例如教材中就提到,在工業(ye) 控製中,常常有自動和手動兩(liang) 種工作方式供以切換。如下圖所示,X0是手動模式的切換開關(guan) ,當X0斷開時,程序默認執行自動模式,若接通X0,程序會(hui) 條轉到手動模式執行。
CJ指令的實例應用還有很多,這些都是要靠我們(men) 在實際的工作中去發現和摸索。但隻要我們(men) 知道的CJ指令的含義(yi) 和用法,能在梯形圖中讀懂它是功能和作用,就已經可以了。
關(guan) 於(yu) PLC的條件轉移,就分享到這裏,大家有什麽(me) 見解的,歡迎留言評論。
注:本文章內容都是基於三菱FX PLC所寫