FOR-NEXT循环指令
循环指令的引入为解决重复执行相同功能的程序段提供了极大的方便,并且优化了程序结构,特别是在进行大量相同功能计算和逻辑处理时,循环指令非常有用。
循环指令由FOR和NEXT两条指令构成,使用时必须成对出现,FOR…NEXT指令中间的程序称为循环体,就是PLC每次扫描到此处时需要循环执行的程序。
INDX:记录循环次数,每执行一次循环,数值会加1,该值在FOR指令重新使能时会自动清零。
INIT、FINAL:循环的起始值和循环的结束值。
FOR NEXT之间的程序,称为循环体,是用来实现循环的。
每循环一次INDX的值会加1,并且用它跟终止进行比较,如果大于终终止值,循环结束。
注:循环次数若是太多可能出现看门狗错误的报警。
FOR NEXT示例应用
循环指令使用注意事项:
1、FOR、NEXT指令使用时必须成对出现。
2、FOR、NEXT指令可以循环嵌套,最多8层,因此使用时若嵌套使用需注意嵌套层数。
3、每次重新使能改指令时,PLC自动复位各参数,因此使用时可以不需要对参数进行清零。
4、初始值大于终止值时,循环指令不执行,设置结束次数时需注意,不要设置的比结束值大。
例程1:计算0+1+2+3+...+100的结果?
例程1
例程2:通过 FOR-NEXT 指令,对 5 个变量:VW100、VW102、VW104、VW106、VW108 进行求和,求和结果放到 VW200 中,计算的平均值存放在 VD210 中 。
例程2
补充说明:
FOR-NEXT指令的循环次数如何计算?
答:FOR-NEXT工作过程:启用FOR-NEXT指令,首先将 INIT( 初始值) 复制到 INDX(当前循环次数);每执行一次,INDX (当前循环次数) 加1; 如 果 INDX 大于 FINAL (终止循环次数),终止循环。
比如: INIT=1 FINAL=10,则循环体被执行10次,然后退出循环, 退出循环后INDX=11;
INIT=0,FINAL=10, 则循环体被执行11次,然后退出循环,退出循环后INDX=11。
FOR-NEXT指令执行时,主程序是否执行,对扫描周期的影响?
答:程序自上而下循环扫描,当FOR-NEXT指令启用后,则循环体被循环执行,直至循环次数到达,循环结束,程序继续向下执行。即在一个扫描周期内执行循环完毕后才会向下执行,循环次数越多,会导致扫描周期时间延长越多。如果循环次数过多或者出现死循环,会导致扫描周期时间超过看门狗时间,报出看门狗超时的致命错误,CPU停机并且SF/DIAG灯红灯常亮。
如何在FOR-NEXT执行循环过程中,退出循环?
答:您可以在FOR/NEXT 指令处于循环过程中时,在循环体中修改FINAL (终止循环次数)数值。