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


返回頂部
刷新頁(yè)面
下到頁(yè)底