在工业生产实际应用中,我们经常会遇到For循环的使用。比如说连续多个寄存器的累加计算,又比如说连续多个寄存器求Zui大Zui小值等的功能。这个时候我们通过For循环来完成,将会非常便捷的完成以上功能。
下面,我们来具体聊聊For循环指令的使用方法。我们以For循环求和为例,来做测试讲解。
For-Next指令介绍
从S7-200SMART的编程软件的帮助中,我们可以找到For-Next指令的介绍。For循环中,For和Next指令必须搭配存在。
从帮助中可知,For指令的循环次数由INIT初始值和FINAL结束值决定。也就是说,如果INIT为1,FINAL为10,即循环次数为10次。依次类推。INDEX为For循环当前实际循环次数。
For循环可以嵌套,就是For循环中也可以使用For循环,但是嵌套深度不能大于8层;
For循环程序实现过程
为方便测试本次For循环累加效果,首先我们把计算值通过数据块,放在VW1000开始的连续寄存器中,如下图所示。为更方便的验证,VW1000开始的连续25个字内,分别存放了1~25的数值。
然后开始编写PLC程序,程序具体代码如下图所示:
1、首先将VB1000对应的地址存入到VD200中,以便后续进行字节偏移;
2、再将计算的结果清零,避免结果值出现累计的问题;
3、调用For循环指令,并将For循环的FINAL引脚用变量VW102来关联,可以通过修 改VW102的值,来修改循环计算次数,验证For循环效果;
4、通过*VD200,将VD200对应的VW1000的寄存器值读取出来,累加到VW500中;
5、将VD200值加2,则后续*VD200中将取出来的是VW1002的值;
6、Next进入下一循环,重复步骤4和步骤5的计算过程,此时的*VD200的地址已经 发生偏移,累加值也发生变化了;
验证运行结果,请观看下面动图演示:
可以观察到,当VW102设置为1时,计算结果VW500是1,因为循环计算的是VW1000=1这一个值;
当VW102设置为5时,计算结果VW500是15,因为循环计算的是VW1000开始的5个地址的值,即1+2+3+4+5的结果;
当VW102设置为10时,计算结果VW500是55,因为循环计算的是VW1000开始的10个地址的值,即1+2+3+4+5+...+10的结果;
同理,用for循环实现求Zui大值,只需要将for循环中的程序按下图修改即可:
相信聪明的读者也可类推出,Zui小值的计算方法了;
以上测试程序源代码,请发送“for循环”获取。