西门子PLC梯形图编程时,当一个或者多个指令(程序)需要重复执行多次(次数可知)时,可使用FOR循环指令,从而提高编程效率。
FOR指令表示循环的开始。
EN为循环控制输入端;
INDX为设置指针或当前循环次数的计数器;
INIT为计数初始值;
FINAL为循环计数终值。
NEXT指令表示循环的结束。FOR和NEXT必须成对出现。
在循环控制输入端有效且逻辑条件INIT小于FINAL时,系统反复执行FOR和NEXT之间的循环体程序,每执行一次循环体,INDX自增1,直至当前循环计数值大于终值时,退出循环。
如下图所示程序为将VW0~VW18按照从大到小的顺序排列。
按下I0.0循环开始,循环体中的程序将执行9次。
这里用的是间接寻址,建立两个指针,分别指向vw0和vw2的地址。
嵌套内循环开始。
相邻的两个数比较,如果前面的数比后面的数小则两个数交换。在第一轮比较的是VW0和VW2中的数值。
指针偏移,下一轮比较的就是VW2和VW4中的数值。
内循环结束。
外循环第一轮结束,比较出了最小的数,并且存放在VW18中,所以外循环第二轮只需比较八次就可以了。同理下一轮比较都要比前一轮少比较一次。
在项目中我们需打开数据块给VW1006赋初始值9。
外循环结束。