1.条件跳转指令
条件跳转指令CJ(P)的编号为FNC00,操作数为指针标号P0~P127,其中P63为END所在步序,不需标记。指针标号允许用变址寄存器修改。CJ和CJP都占3个程序步,指针标号占1步。
如图1所示,当X20接通时,则由CJ P9指令跳到标号为P9的指令处开始执行,跳过了程序的一部分,减少了扫描周期。如果X20断开,跳转不会执行,则程序按原顺序执行。
图1 跳转指令的使用
使用跳转指令时应注意:
1)CJP指令表示为脉冲执行方式;
2)在一个程序中一个标号只能出现一次,否则将出错;www.ippipp.com
3)在跳转执行期间,即使被跳过程序的驱动条件改变,但其线圈(或结果)仍保持跳转前的状态,因为跳转期间根本没有执行这段程序。
4)如果在跳转开始时定时器和计数器已在工作,则在跳转执行期间它们将停止工作,到跳转条件不满足后又继续工作。但对于正在工作的定时器T192~T199和高速计数器C235~C255不管有无跳转仍连续工作。
5)若积算定时器和计数器的复位(RST)指令在跳转区外,即使它们的线圈被跳转,但对它们的复位仍然有效。
2.子程序调用与子程序返回指令
子程序调用指令CALL的编号为FNC01。操作数为P0~P127,此指令占用3个程序步。
子程序返回指令SRET的编号为FNC02。无操作数,占用1个程序步。
如图2所示,如果X0接通,则转到标号P10处去执行子程序。当执行SRET指令时,返回到CALL指令的下一步执行。
图2 子程序调用与返回指令的使用
使用子程序调用与返回指令时应注意:
1)转移标号不能重复,也不可与跳转指令的标号重复;
2)子程序可以嵌套调用,最多可5级嵌套。
3.与中断有关的指令
与中断有关的三条功能指令是:中断返回指令IRET,编号为FNCO3;中断允许指令EI,编号为FNCO4;中断禁止DI,编号为FNC05。它们均无操作数,占用1个程序步。
plc通常处于禁止中断状态,由EI和DI指令组成允许中断范围。在执行到该区间,如有中断源产生中断,CPU将暂停主程序执行转而执行中断服务程序。当遇到IRET时返回断点继续执行主程序。如图3所示,允许中断范围中若中断源X0有一个下降沿,则转入I000为标号的中断服务程序,但X0可否引起中断还受M8050控制,当X20有效时则M8050控制X0无法中断。
图3 中断指令的使用
使用中断相关指令时应注意:
1)中断的优先级排队如下,如果多个中断依次发生,则以发生先后为序,即发生越早级别越高,如果多个中断源同时发出信号,则中断指针号越小优先级越高;
2)当M8050~M8058为ON时,禁止执行相应I0□□~I8□□的中断,M8059为ON时则禁止所有计数器中断;
3)无需中断禁止时,可只用EI指令,不必用DI指令;
4)执行一个中断服务程序时,如果在中断服务程序中有EI和DI,可实现二级中断嵌套,否则禁止其它中断。
4.主程序结束指令
主程序结束指令FEND的编号为FNC06,无操作数,占用1个程序步。FEND表示主程序结束,当执行到FEND时,PLC进行输入/输出处理,监视定时器刷新,完成后返回启始步。
使用FEND指令时应注意:
1)子程序和中断服务程序应放在FEND之后;
2)子程序和中断服务程序必须写在FEND和END之间,否则出错。
5.监视定时器指令
监视定时器指令WDT(P)编号为FNC07,没有操作数,占有1个程序步。WDT指令的功能是对PLC的监视定时器进行刷新。
FX系列PLC的监视定时器缺省值为200ms(可用D8000来设定),正常情况下PLC扫描周期小于此定时时间。如果由于有外界干扰或程序本身的原因使扫描周期大于监视定时器的设定值,使PLC的CPU出错灯亮并停止工作,可通过在适当位置加WDT指令复位监视定时器,以使程序能继续执行到END。
如图4所示,利用一个WDT指令将一个240ms的程序一分为二,使它们都小于200ms,则不再会出现报警停机。
图4 监控定时器指令的使用
使用WDT指令时应注意:
1)如果在后续的FOR-NEXT循环中,执行时间可能超过监控定时器的定时时间,可将WDT插入循环程序中。
2)当与条件跳转指令CJ对应的指针标号在CJ指令之前时(即程序往回跳)就有可能连续反复跳步使它们之间的程序反复执行,使执行时间超过监控时间,可在CJ指令与对应标号之间插入WDT指令。
6.循环指令
循环指令共有两条:循环区起点指令FOR,编号为FNC08,占3个程序步;循环结束指令NEXT,编号为FNC09,占用1个程序步,无操作数。
在程序运行时,位于FOR~NEXT间的程序反复执行n次(由操作数决定)后再继续执行后续程序。循环的次数n=1~32767。如果N=-32767~0之间,则当作n=1处理。
如图5所示为一个二重嵌套循环,外层执行5次。如果D0Z中的数为6,则外层A每执行一次则内层B将执行6次。
图5 循环指令的使用
使用循环指令时应注意:
1) FOR和NEXT必须成对使用;
2)FX2N系列PLC可循环嵌套5层;
3)在循环中可利用CJ指令在循环没结束时跳出循环体;
4)FOR应放在NEXT之前,NEXT应在FEND和END之前,否则均会出错。