PLC在执行程序的过程中,是按照程序步从头到尾一步一步扫描的。但PLC也有特异功能,它的程序执行可以瞬移!从当前程序步瞬间转移到其他程序步执行,如下图就是PLC的条件转移,执行CJ转移指令后,直接跳过第8~12步程序,从第14步程序开始往下执行。
PLC在程序执行过程中发生转移的现象,称为程序流程转移,即跳过一段程序去执行指定程序。造成这种程序转移的有条件转移、子程序调用、中断服务和循环程序。
如果把PLC的程序执行看作爬山,程序的执行过程就是从山头爬到山顶的过程。此时,PLC的几种程序流程转移就好比以下几种情况:
1、它全程不停的一步一步往上走,这就是PLC程序步的顺序执行;
2、它在爬山过程中,坐了缆车,直接跨过了一段山路,这就是PLC的条件转移;
3、它在爬山过程中,因为沿途的风景过于漂亮,去拍了几张美照,再继续爬,这就是PLC的子程序调用;
4、它在爬山过程中,由于三急去了一趟厕所,这就是PLC的中断服务;
PLC的程序流程转移是靠相对应的指令是实现的。就如我们这次学习的条件转移所用的指令 CJ 。在学习程序流程指令之前,我们得先知道什么是主程序区、什么是副程序区。
▎一、PLC的程序区
PLC的用户程序一般分为主程序区和副程序区,主、副程序区的分界线为主程序结束指令FEND,而副程序在FEND指令和END指令之间编写。主程序显然是必不可少的,且只有一个,它是完成用户控制要求的程序。就像手机,打电话是手机必不可少的功能,如果没有通话功能,这也就不叫手机了。
副程序区是子程序、中断服务程序的所在区域,它们不是必须的,可以根据具体要求而编写。也就说,PLC必须有主程序,副程序可有可无。PLC执行程序就好比打酱油,你妈妈叫你打酱油,这是主程序,然后你妈妈又说如果有苹果的话顺便买点回来,这个买苹果就是子程序,酱油是一定要打的,但苹果却不一定要买。
▎二、主程序结束指令FEND
FEND指令没有驱动条件,也就说这个指令的前面不能有触点控制,如下图所示。执行FEND指令和执行END指令功能是一样的,执行输入和输出刷新。
在主程序区,FEND指令可以多次使用,但每次只能有一个有效。PLC在程序扫描时,只要扫到任一个FEND指令,就会向0步程序返回,重新开始。如下图所示,程序中有两个FEND指令,它两种情况,若转移指令CJ没被驱动,程序扫描到第一个FEND之后,就会返回到程序的第0步再次开始;若CJ的驱动条件成立,此时程序会发生转移,跳过第一个FEND,从指针P5处往下执行,直到扫到第二个FEND再返回到程序的第0步再次开始。
另外,如上文所言,副程序是在FEND指令和END指令之间编写的,更确切地说,应该是副程序是在最后一个FEND指令和END指令之间编写的。FEND指令是主程序区和副程序区的分界,所以,显然FEND指令也是不能出现在子程序中的。
当然,如果用户程序本身就比较简单,没必要编写中断程序和子程序,那么FEND指令也就没必要了,直接以END指令作为结束指令。知道了什么是主程序、副程序后,我们接着学习这次的主要内容:程序的条件转移。
▎三、程序的条件转移
程序的条件转移是应用条件转移指令CJ实现的,用于主程序,其可用软元件只有分支指针P。
1、转移指令CJ
转移指令CJ和分支指针P组合使用,从上图可以看到,转移指令CJ有两种执行方式:连续执行型和脉冲执行型。它们的执行形式如下图所示。
连续执行型指令CJ在驱动条件成立期间,每一个扫描周期都会执行一次转移,知道X0断开(OFF);而脉冲型指令CJP只有在X0接通的上升沿才会执行,尽管X0接通时间持续多个扫描周期,CJP也执行一次,直到X0断开再次接通,CJP才会再执行。
2、分支指针P
在FX2N PLC中,指针有分支指针P和中断指针I两种,分支指针P必须和转移指令或子程序调用指令CALL组合使用。可用的分支指针有P0~P127共128个,但P63是向结束指令END步转移的特殊指针,不能用于标记。
在程序中,指针的使用很简单,在对应程序行左母线的左侧编写即可。指针标号具有唯一性,不能重复使用。也就说,每个标号的指针在左母线左侧只能出现一次。但同一标号指针,可以和多个CJ指令组合,作为多个CJ指令的程序转移入口地址,如下图所示。
另外,标号可以变址寻址使用,变址寻址我在上一篇文章已经讲过,如下图所示,变址寄存器内容为K10,此时指针标号就变成了P15。
3、转移方式
利用CJ转移时,可以向CJ指令的后面程序转移,也可以向CJ指令的前面程序转移。但一般都是用于向后面程序转移,因为像前面程序转移,一不注意吗,就会造成死循环,如下图所示。若驱动条件X1一直接通,程序就会在转移地址入口P5处和CJ指令之间不断运行,造成死循环。
4、CJ指令的应用
PLC程序对CJ转移指令的应用比较多,因为CJ指令简单有方便。例如教材中就提到,在工业控制中,常常有自动和手动两种工作方式供以切换。如下图所示,X0是手动模式的切换开关,当X0断开时,程序默认执行自动模式,若接通X0,程序会条转到手动模式执行。
CJ指令的实例应用还有很多,这些都是要靠我们在实际的工作中去发现和摸索。但只要我们知道的CJ指令的含义和用法,能在梯形图中读懂它是功能和作用,就已经可以了。
关于PLC的条件转移,就分享到这里,大家有什么见解的,欢迎留言评论。
标签:CJ,FEND,三菱,程序,指令,FXPLC,PLC,Mitsubishi,转移 From: https://www.cnblogs.com/ybqjymy/p/17610775.html