PLC论坛-全力打造可编程控制器专业技术论坛

 找回密码
 注册哦

QQ登录

只需一步,快速开始

微信扫码登录

查看: 84210|回复: 0

[西门子] AB PLC | Studio 5000编程之FOR循环指令

[复制链接]
发表于 2024-1-7 21:12:52 | 显示全部楼层 |阅读模式


前言:程序开发到一定程序,主要体现在程序架构,是否具备先进性、完整性、兼容性、扩展性、标准化等等,而功能性往往是用代码来实现的,所以,只有掌握了更多指令的使用方法,在编程时,才有更多的选择,才会游刃有余。那么,今天,我们来看看Studio 5000一个重要的指令--FOR,是如何使用的呢。

01

测试环境

1. 操作系统:Windows 7 SP1 旗舰版  64位

2. 编程软件:Studio 5000 V32.00.00中文版

3. 仿真软件:Studio 5000 Logix Emulate V32

02

准备工作

1. 编程软件Studio 5000的循环指令FOR,不仅适用于结构化文本编程语言(ST),同样适用于梯形图语言(LD).


2. 本文通过一个小案例来讲解FOR指令的具体使用,例如计算三角形的面积,给三角形底、高赋值,计算其面积,并可以将所有数据清零.


3. 新建一个项目,在控制器标签里创建以下标签


    a:数据类型REAL[2000],三角形底

    h:数据类型REAL[2000],三角形高

    s:数据类型REAL[2000],三角形面积

    start:数据类型BOOL,开始计算

    rst:数据类型BOOL,全部清零

    i:数据类型DINT,索引值



03

FOR

梯形图指令

1. 新建一个程序,命名为LD_FOR,新建一个主例程Main,两个子例程,其中子例程ld_Calculate,功能是给三角形底、高赋值,并计算面积,为了更好的举例说明FOR指令的使用,三角形底、高的赋值与索引值i关联,a=i*0.5,h=i*0.5+i,代码详见下图,如果看不清楚,建议将图片放大查看,下同.


2. 子例程ld_Zero,功能是将三角形底、高、面积这三个数组的值全部清零,详见下图.


3. 在主例程Main中使用FOR指令,以计算三角形面积为例,说明如何使用FOR指令.


    Routine名:ld_Calculate(调用循环的子例程)

    索引:i(循环子例程的索引值)

    初始值:0(索引值的初始值)

    终止值:1999(索引值的终止值,注意,不能超过数组的维度的上限,由于本文三角形底、高、面积的数组维度为2000,其上限值为1999)

    步长大小:1(索引值从初始值到终止值增加的幅度,本文为1,根据实际情况填写,可以为其他数据,比如2,以2为幅度增加。另外,步长值可以是正数,也可以是负数。如果是负数,则当索引值为终止值时,循环结束。如果是正数,则当索引值大于终止值时,循环结束.)

    注意:在单次扫描中不要循环过多次。重复次数过多可导致控制器的看门狗超时,进而引发严重故障,导致控制器停机。故本文使用了单次脉冲指令ONS,并将使能位start自复位,从而保证循环只执行一个扫描周期.



4. 测试效果如何:下载程序,将控制器运行起来,在线将标签start切换为1


5. 切换到控制器标签,监控a、h、s数组数据,可以看到各个元素均有数据,且按照子例程ld_Calculate里面的算法执行的,说明FOR执行成功.


6. 若要将a、h、s数组数据全部清零,只要将标签rst切换为1即可.


7. 监控a、h、s数组数据,可以看到各个元素均为0,说明FOR指令成功调用了子例程ld_Zero里,并按其算法执行.


8. 梯形图FOR指令,若要中断、退出循环,则需要使用“BRK”指令,比如本文,在ld_Calculate子例程中,当i>=1000时,不再计算,退出循环.


9. 在Main主例程中,再次将标签start切换为1,从控制器标签看出,a、h、s数组,从1001开始,的确全部为0,没有数据,说明BRK中断FOR循环.


04

FOR

结构化文本指令

1. 新建一个程序,命名为ST_FOR,新建一个主例程Main,一个子例程st_Calculate,并在主例程Main中调用子例程st_Calculate.


2. 在子例程st_Calculate中,使用IF...THEN和FOR指令,给三角形底、高赋值,并计算面积,代码详见下图.


3. 在子例程st_Calculate中,使用IF...THEN和FOR指令,将a、h、s数组全部清零,代码详见下图.


4. 结构化文本编程中,若要退出FOR循环,则需使用IF...THEN和EXIT指令,代码详见下图.


5. 功能测试结果和使用梯形图指令FOR效果一样,不再累述。

结语:综上所述,本文使用梯形图和结构化文本两种编程语言,配合一个小案例,比较详细地讲解了FOR循环指令的使用,其中还涉及到了间接寻址的知识,希望能帮助到有需要的朋友,更多的实际应用,请大家自行测试,本文抛砖引玉。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册哦

本版积分规则

QQ|小黑屋|手机版|Archiver|PLC技术网-PLC论坛 ( 粤ICP备17165530号 )|网站地图

GMT+8, 2024-10-1 15:49 , Processed in 0.049398 second(s), 27 queries .

快速回复 返回顶部 返回列表