第三部分:数组与for循环
上一篇文章当中我们简单介绍了宏指令的选择语句:if…else的应用。
可以看出,宏指令当中的选择语句同C语言或者VB语言当中的选择语句是类似的用法。本节我们将介绍另外一种重要的语句结构:for循环,并结合数组和索引来完成触摸屏存储配方功能的操作。
首先,我们先来了解数组的概念。数组用来表示一组相同数据类型的变量,同单个变量一样,使用数组也是要从定义数组变量开始的。数组变量的定义格式如下:
数据类型 数组名称[数组个数],
例如:
int A[10]:定义了一个数组变量A[10],包含10个int数据。
char BFH[88]:定义了一个数组变量BFH[88],包含88个char数据。
一个数组当中所有数据的类型都是一致的,例如int A[10],A[10]当中的10个元素全部都是int的数据类型。
如何来表示数组当中的每个元素呢?以A[10]为例,A[0]-A[9]就是数组当中10个元素。中括号里的[0]和[9]起到索引的作用,既可以是常数,也可以是变量。当使用变量的时候,我们就可以实现数组元素的变址。例如:
元素A[b],当b=0时表示A[0],b=1时表示A[1],以此类推。
如何对数组及数组当中的元素进行赋值呢?有两种方法:
第一种是对数组当中全体元素赋常数初值,例如:
第二种是把每个元素看作一个单独的变量,分别传值。
以A[8]、abc[4]为例:
如何将变量批量传送到数组的每个元素当中呢?例如:将数组BFH[88]批量传送到ABC[88]当中,根据上面所讲,我们要写88行赋值:
这样的做法是不是有些太麻烦了,有没有什么做法可以一次性的将88组数据批量传送呢,类似三菱PLC的BMOV指令一样?
答案是有的,做法就是我们下面要介绍的:for循环语句。
for循环的意义就是执行固定次数的重复操作,格式如下所示:
◆计数递增的for循环:
◆计数递减的for循环:
使用for循环,我们就可以一次性完成数组的批量传送,如下所示:
下面我们来演示,如何结合数组和for循环来实现触摸屏的配方功能。
配方功能要求:
1.配方组数:共10组,编号1-10;
2.每组配方6个数据,均为16位单字整数;
3.按下保存配方,示教区数据存入配方存储区;
4.输入配方号改变的时候,示教区数据自动刷新为当前配方号的配方数据。
5.如果输入配方组数超出范围,提示“不在范围中!”
程序分析:
配方组数为10组,每组6个数据,我们就需要60个字的存储区域存放配方数据。这里我们定义一个数组:short C[60],用来作为配方的存储区域。
当前输入的示教数据和当前组配方显示数据,我们分别定义一个数组:short A[6]和short B[6] 。
按下保存的时候,将输入示教数组B[6] 批量传送给配方存储区域C[60]对应配方号的存储位置,如图所示:
触摸屏控件建立界面如下所示:
宏指令程序如下所示:
设置周期执行
定义变量:
实际HMI地址Getdata到变量:
配方存储操作:
配方读取操作&不在范围提示:
好了,关于使用宏指令当中的数组和for循环来实现简单配方存储的功能就演示到这里了。原理还是比较简单的,大家可以自行离线模拟测试。有需要参考程序的同学欢迎添加下方老师。
后面的文章我们将介绍While循环、Delay函数的概念,以及开机进度条功能的实现方法。
想学习PLC编程了解更多自动化行业资讯的可以加我微信:huiyi_1105709461