威纶通定时循环操作宏_「精品详解」威纶通触摸屏宏指令应用(三)

第三部分:数组与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],以此类推。

如何对数组及数组当中的元素进行赋值呢?有两种方法:

第一种是对数组当中全体元素赋常数初值,例如:

f572609e40eac86642fb956c83877d4c.png

第二种是把每个元素看作一个单独的变量,分别传值。

以A[8]、abc[4]为例:

da99135d29406eb809e652e6fa70d6b2.png

如何将变量批量传送到数组的每个元素当中呢?例如:将数组BFH[88]批量传送到ABC[88]当中,根据上面所讲,我们要写88行赋值:

f00887b5ee40454f700ed592f215172e.png

这样的做法是不是有些太麻烦了,有没有什么做法可以一次性的将88组数据批量传送呢,类似三菱PLC的BMOV指令一样?

答案是有的,做法就是我们下面要介绍的:for循环语句。

for循环的意义就是执行固定次数的重复操作,格式如下所示:

◆计数递增的for循环:

861f10e093d26dcc61257330de8194b6.png

◆计数递减的for循环:

2b92db945613298de084209f2dc812b2.png

使用for循环,我们就可以一次性完成数组的批量传送,如下所示:

d21be525cc8f913bbce096783681371c.png

下面我们来演示,如何结合数组和for循环来实现触摸屏的配方功能。

配方功能要求:

1.配方组数:共10组,编号1-10;

2.每组配方6个数据,均为16位单字整数;

3.按下保存配方,示教区数据存入配方存储区;

4.输入配方号改变的时候,示教区数据自动刷新为当前配方号的配方数据。

5.如果输入配方组数超出范围,提示“不在范围中!”

9418e16b6a612fbdeb423fb979f283da.png
4b893adc3f7d73375633f9629983b963.png
b2c2cc4c3b563aa4b21304194ccc09d5.png
e6e0c29d3623309f3ce2f4f087081725.png

程序分析:

配方组数为10组,每组6个数据,我们就需要60个字的存储区域存放配方数据。这里我们定义一个数组:short C[60],用来作为配方的存储区域。

当前输入的示教数据和当前组配方显示数据,我们分别定义一个数组:short A[6]和short B[6] 。

按下保存的时候,将输入示教数组B[6] 批量传送给配方存储区域C[60]对应配方号的存储位置,如图所示:

4c03fafccf56fd8abef52d59c9fe0cb1.png
d8b35bc390dfb8d0b6f0064034c2226a.png
8b747516e2e41f487e3b2ce3f10c3f50.png

触摸屏控件建立界面如下所示:

7098d9811de86d7be9ad14b1c5f1b4fa.png

宏指令程序如下所示:

设置周期执行

8043ee9f3210bde83785fdc82c85e414.png

定义变量:

7b328e1676be4215a69a72e3f781c51d.png

实际HMI地址Getdata到变量:

93714a42ca5d3e043c6f3b2c04b1a9a4.png

配方存储操作:

918c0f96d354cb339566445029e1e376.png

配方读取操作&不在范围提示:

8e40d0106a770f691681cfd28190c6b0.png

好了,关于使用宏指令当中的数组和for循环来实现简单配方存储的功能就演示到这里了。原理还是比较简单的,大家可以自行离线模拟测试。有需要参考程序的同学欢迎添加下方老师。

后面的文章我们将介绍While循环、Delay函数的概念,以及开机进度条功能的实现方法。

想学习PLC编程了解更多自动化行业资讯的可以加我微信:huiyi_1105709461

96fbccdeccda4ef996beb13a999dd866.png
96a6b238b4d429a8fd338a593c52643e.png
  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值