龙空技术网

从零开始学PLC之For——Next循环指令

工控老司机 1861

前言:

现时咱们对“for循环的执行过程是什么”大约比较关切,我们都想要分析一些“for循环的执行过程是什么”的相关内容。那么小编也在网络上网罗了一些关于“for循环的执行过程是什么””的相关资讯,希望同学们能喜欢,看官们快快来学习一下吧!

大家好,我是达达老师,今天继续讲解PLC的指令,关注达达老师,每天进步一点

首先介绍一下For--Next循环指令

FOR和NEXT指令可以描述需重复进行一定次数的循环体。每条FOR指令必须对应一条NEXT指令。For--Next循环嵌套(一个For--Next循环在另一个For--Next循环之内)深度可达8层。FOR--NEXT指令执行FOR指令和NEXT指令之间的指令。必须指定计数值或者当前循环次数INDX、初始值(INIT)和终止值(FINAL)。NEXT指令标志着FOR循环的结束。

如果允许FOR/NEXT循环,除非在循环内部修改了终值,循环体就一直循环执行直到循环结束。当FOR/NEXT循环执行的过程中可以修改这些值。当循环再次允许时,它把初始值拷贝到INDX中(当前循环次数)。当下一次允许时,FOR/NEXT指令复位它自己。

例如,给定初值(INIT)为1,终值(FINAL)为10,那么随着当前计数值(INDX)从1增加到10,

FOR与NEXT之间的指令被执行10次。1,2,3,...10.

如果初值大于终值,那么循环体不被执行。每执行一次循环体,当前计数值增加1,并且将其结果同终值作比较,如果大于终值,那么终止循环。如果程序进入FOR--NEXT循环时,栈顶值为1,则当程序退出FOR--NEXT循环时,栈顶值也将为1。

For--Next循环指令

当I2.0接通时,外循环(标识1)执行100次。当I2.1接通时,外循环每执行一次,内循环执行两次。

跳转指令

跳转到标号指令(JMP)执行程序内标号N指定的程序分支。标号指令标记跳转目的地的位置N。您可以在主程序、子程序或者中断服务程序中,使用跳转指令。跳转和与之相应的标号指令必须位于同一段程序代码(无论是主程序、子程序还是中断服务程序)。不能从主程序跳到子程序或中断程序,同样不能从子程序或中断程序跳出。可以在SCR程序段中使用跳转指令,但相应的标号指令必须也在同一个SCR段中。

如果掉电保持的数据没有丢失,跳转到LBL4。

顺控继电器(SCR)指令

SCR指令使您能够按照自然工艺段在LAD、FBD或STL中编制状态控制程序。无论如何,由一系列操作组成的应用程序都会反复执行,而SCR可以使程序更加结构化,以至于直接针对应用。这样可以使得编程和调试更加快速和简单。装载SCR指令(LSCR)将S位的值装载到SCR和逻辑堆栈中。SCR堆栈的结果值决定是否执行SCR程序段。SCR堆栈的值会被复制到逻辑堆栈中,因此可以直接将盒或者输出线圈连接到左侧的能流线上而不经过中间触点。限定当使用SCR时,请注意下面的限定:

- 不能把同一个S位用于不同程序中。例如:如果在主程序中用了S0.1,在子程序中就不能再使用它。

- 在SCR段之间不能使用JMP和LBL指令,就是说不允许跳入、跳出。可以在SCR段附近使用跳转和标号指令或者在段内跳转。

- 在SCR段中不能使用END指令。

在首次扫描使能状态1,状态1控制开始。控制第一条街的信号:1.置位:接通红灯。2.复位:关断黄灯和绿灯。3.启动2秒定时器,延时2秒后,切换到状态2。状态1的SCR区结束,状态2的控制区开始。控制第二条街的信号:1. 置位: 接通绿灯。2. 启动25秒定时器。延时25秒后,切换到状态3,状态2的SCR区结束。

移位和循环指令

右移和左移指令,移位指令将输入值IN右移或左移N位,并将结果装载到输出OUT中。移位指令对移出的位自动补零。如果位数N大于或等于最大允许值(对于字节操作为8,对于字操作为16,对于双字操作为32),那么移位操作的次数为最大允许值。如果移位次数大于0,溢出标志位(SM1.1)上就是最近移出的位值。如果移位操作的结果为0,零存储器位(SM1.0)置位。字节操作是无符号的。对于字和双字操作,当使用有符号数据类型时,符号位也被移动。

循环右移和循环左移指令

循环移位指令将输入值IN循环右移或者循环左移N位,并将输出结果装载到OUT中。循环移位是圆形的。如果位数N大于或者等于最大允许值(对于字节操作为8,对于字操作为16,对于双字操作为32),S7--200在执行循环移位之前,会执行取模操作,得到一个有效的移位次数。移位位数的取模操作的结果,对于字节操作是0到7,对于字操作是0到15,而对于双字操作是0到31。

如果移位次数为0,循环移位指令不执行。如果循环移位指令执行,最后一位的值会复制到溢出标志位(SM1.1)。如果移位次数不是8(对于字节操作)、16(对于字操作)和32(对于双字操作)的整数倍,最后被移出的位会被复制到溢出标志位(SM1.1)。当要被循环移位的值是零时,零标志位(SM1.0)被置位。字节操作是无符号的。对于字和双字操作,当使用有符号数据类型时,符号位也被移位。

今天你学会了吗?关注达达老师,每天进步一点点。

标签: #for循环的执行过程是什么 #for循环指令支持to和____两个方向的循环次数计算 #退出for循环的命令是