循环程序的关键是间接寻址,西门子s7-1200的间接寻址离不开数组。可用fieldread与fieldwrite指令实现对数组元素的间接寻址,也可以用变量做数组元素的下标,实现间接寻址。
西门子s7-1200没有像s7-300的loop那样的循环程序专用的指令,可以模仿loop指令的功能来编写循环程序。下图的程序段1、2是名为“间接索引”的fc,程序段1清累加结果,设置数组下标的初始值。
程序段2用move指令读取可变下标的数组元素值,用add指令累加。然后将下标加1,累加个数减1后如果大于0则返回标号back处,反之结束循环。
图的下面是ob1中调用fc的程序。