首页 理论教育 编程技巧:有效的程序流控制指令

编程技巧:有效的程序流控制指令

时间:2023-06-27 理论教育 版权反馈
【摘要】:程序流控制指令共10条,这一类指令提供了程序的条件执行、优先处理等与顺序控制程序控制流程相关的指令。FEND为主程序结束指令。标号Pn的子程序应放在主程序结束指令FEND的后面。在跳转程序中涉及PLC的软元件的动作情况,不同的软元件会因跳转指令的执行而产生不同的结果。6)若有多个FEND指令,则子程序必须在最后一个FEND指令与END指令之间,即程序最后必须有一个END指令。

编程技巧:有效的程序流控制指令

程序流控制指令(FNC00~FNC09)共10条,这一类指令提供了程序的条件执行、优先处理等与顺序控制程序控制流程相关的指令。这里主要讲述条件跳转指令和子程序调用指令。

1.条件跳转

条件跳转指令CJ(FNC00)和主程序结束指令FEND(FNC06)的使用说明如下:

(1)指令概述

条件跳转指令(CJ)用于跳过顺序程序中的某一部分,这样可以减少扫描时间,并使“双线圈操作”成为可能。跳转时,被跳过的那部分指令不执行。指令的执行形式有连续执行和脉冲执行两种。

FEND为主程序结束指令。执行到FEND指令时机器进行输出处理、输入处理、警戒时钟刷新,完成后返回到第0步。

CJ和FEND指令使用时的编程结构及动作执行情况如图3-37所示。

978-7-111-59091-0-Chapter03-49.jpg

图3-37 CJ指令动作执行情况

(2)指令使用要点

1)CJ和FEND指令成对使用。标号Pn的子程序应放在主程序结束指令FEND的后面。

2)图3-37中P20指的是跳转的指针编号,编号范围为P1~P4095,但是P63为END步指针,不能使用。对标记P63进行编程时,PLC会显示出错代码6057并停止运行,如图3-38所示。

3)标记输入位置。编写梯形图程序时,将光标移动到梯形图的母线左侧,在回路块起始处输入标记P20即可,如图3-39所示。

978-7-111-59091-0-Chapter03-50.jpg

图3-38 P63编程

978-7-111-59091-0-Chapter03-51.jpg

图3-39 标号的输入

4)标记P的重复使用。多个跳转程序可以向同一个标号Pn的子程序跳转,但不可以有两个相同标号Pn的子程序跳转,如图3-40所示。

CJ指令也不能和CALL指令(子程序调用)共用相同的标号,如图3-41所示。

978-7-111-59091-0-Chapter03-52.jpg

图3-40 标记P的重复使用

978-7-111-59091-0-Chapter03-53.jpg

图3-41 CJ和CALL共用标号

5)无条件跳转的问题。如图3-42所示,M8000为运行监控,程序无条件执行到标号为P5所指向的程序。

6)有多个子程序时,则需多次使用FEND指令,在最后的END和FEND指令之间编写子程序和中断子程序,如图3-43所示。

978-7-111-59091-0-Chapter03-54.jpg

图3-42 无条件跳转(www.xing528.com)

978-7-111-59091-0-Chapter03-55.jpg

图3-43 多次使用FEND

7)跳转程序中触点线圈动作情况。在跳转程序中涉及PLC的软元件的动作情况,不同的软元件会因跳转指令的执行而产生不同的结果。如图3-44所示,跳转前后触点、线圈状态见表3-12。

978-7-111-59091-0-Chapter03-56.jpg

图3-44 跳转程序中触点线圈动作情况

3-123-44跳转前后触点线圈状态表

978-7-111-59091-0-Chapter03-57.jpg

2.子程序

调用子程序指令CALL(FNCO1)和子程序返回指令SRET(FNCO2)的使用说明如下:

(1)指令概述

CALL指令是在顺控程序中,对想要共同处理的子程序进行调用的指令。使用该指令可以减少程序的步数,更加方便有效地设计程序。

当输入指令为ON时,执行CALL指令,向标号为Pn的子程序跳转(调用标号为Pn的子程序),使用SRET指令则返回到主程序。

编写子程序时,必须使用子程序返回指令(SRET),二者配套使用。

子程序应写在FEND之后,即CALL、CALL(P)指令对应的标号应写在FEND指令之后。CALL、CALL(P)指令调用的子程序必须以SRET指令作为结束。程序结构如图3-45所示。

(2)指令使用要点

1)指针标号Pn可以使用的范围为P0~P4095,其中P63为END步指针,不能使用。

2)调用子程序可以使用多重CALL指令进行嵌套,其嵌套子程序可达5级(CALL指令可用4次)。程序结构如图3-46所示。

978-7-111-59091-0-Chapter03-58.jpg

图3-45 调用子程序结构

978-7-111-59091-0-Chapter03-59.jpg

图3-46 嵌套子程序结构

3)在调用子程序和中断子程序中,可采用T192~T199或T246~T249作为定时器

4)CALL指令调用子程序时,对应的两个或两个以上子程序之间用SRET隔开。

5)若FEND指令在CALL或CALL(P)指令执行之后、SRET指令执行之前出现,则程序被认为是错误的。另一个类似的错误是使FEND指令处于FORNEXT循环中。

6)若有多个FEND指令,则子程序必须在最后一个FEND指令与END指令之间,即程序最后必须有一个END指令。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈