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