前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >“Array[*] of *”灵活的可变数组:满足可变需求的完美选择

“Array[*] of *”灵活的可变数组:满足可变需求的完美选择

作者头像
剑指工控
发布2023-08-31 12:43:10
6640
发布2023-08-31 12:43:10
举报
文章被收录于专栏:剑指工控

JZGKCHINA

工控技术分享平台

1

介绍

西门子 TIA(Totally Integrated Automation)平台是一种面向工业自动化的软件平台,可以实现工业控制系统的设计、开发、测试和调试等一系列工作。其中,Array[*]of *是 TIA 平台中的一种数据类型,表示一个可变长度的数组。其中,[*]表示数组的长度可以是任意值,固定表达方式为[1..20]。而*表示数组中的元素类型的可以是任何类型。例如,可以定义一个 Array[*] of INT 类型的数组,表示一个可变长度的整数数组。在程序中,可以通过索引来访问数组中的元素,例如 Array[0]表示数组中的第一个元素,Array[1]表示数组中的第二个元素,以此类推。当然也可以通过索引来给数组中的元素赋值,例如:Array[2]:=1;Array[3]:=33。

也可以使用循环来遍历整个数组:

代码语言:javascript
复制
FOR i:=0 TO 9 DO
    IF Array[i]=33 THEN
    //执行某些操作 END_IF;END_FOR;
    END_IF;
END_FOR;

2

优点

可变数组是一个非常强大的数据类型,使用它可以让程序更加灵活。

1.结构清晰:使用 Array[*] of 数据类型可以使程序结构简洁清晰,例如我们要定义一百个工位的编号,我们就可以将数组写成Array[1..100] of int。

2.提高效率:使用 Array[*] of 可以提高程序的效率,因为它允许我们使用for循环进行遍历操作。

3.易于使用:Array[*] of 使用的方法很简单,因此即使是初学者也可以很容易地使用。

3

案例

下面我们将使用一个案例来讲解可变数组的具体使用方法,案例中会有几个知识点,拿起小本本,大家做好笔记。

3.1

问题描述

我们来设计一个跑马灯的程序,灯的数量可根据不同的情况变化。当启动时,灯按顺序以一定的时间间隔启动,同一时间只能有一盏灯亮。有一个最简单的方式是使用PLC内置的位移指令SHL,但是缺点是不够灵活,数量不能够随意定义。

3.2

程序设计

首先我们要有启停按钮,启动按钮用于程序启动,灯开始依次亮起来;停止按钮用于程序停止,灯全部熄灭。

我们要有时间脉冲信号,以这个时间当作灯切换的时间暂定为1秒。这里我们先使用PLC内部时钟寄存器 (Clock_1Hz)。

我们还要有一个可变数组用于存放灯的输出定义为:Array[*] of Bool。

3.3

程序编写

我们来使用西门子 TIA 平台的 SCL 语言来编写,SCL(Structured Control Language)是一种基于 Pascal 的结构化编程语言。

首先我们先创建一个功能块如下图,名字为 跑马灯,语言选择 SCL,FB 函数,然后确定,如下图:

输入输出定义,如下图:

首先我们要获取数组的上下限(知识点 1:获取可变数组上下限的方法),方便我们后续的操作,如下图:

然后我们编写启动停止的程序,我们使用一个标志位 enable 来判断程序启停的状态,如下图:

当程序启动时 enable 为 1;当程序停止时,enable 为 0。 在程序停止的时候,我们需要将数组中的数据清零,在此我们使用 for 循环(知识点2:通过for循环来遍历整个数组)来实现。

接下来我们来编写程序控制逻辑部分(知识点3:上升沿获取,使用SCL编写方式)(知识点4:BoolArray[#i]:=False,给数组中特定的位赋值),如下图:

3.4

程序运行

我们将编写好的功能块 ‘跑马灯’ 在主程序 OB1 当中调用,如下图:

3.5

问题拓展

1.在我们测试后发现,当我们停止后再启动,数组的输出并不是从第一位开始,而是从上一次输出的位置开始,如果不想这样,我们可以在停止时将#n清零,清零后程序在停止后就可以从第一位开始输出了。

2.如果我们想改变灯切换的间隔要怎么做呢,最简单的方式是使用TIA平台内置的时钟,在我们激活启用时钟储存字节后就可以使用了,如下图:

如果这里面没有我们想要的时间间隔,我们也可以自己写一个脉冲发生器来实现。将两个功能块结合起来就变成了可变切换时间的跑马灯程序了。

4

总结

Array[*] of的数组长度和类型是可变的,可以根据实际需求来定义数组的大小。这使得数组可以适应多种应用场景。

Array[*] of使得对数组的元素进行遍历和访问更加方便。您可以使用循环结构来处理数组中的每个元素,无需手动进行索引管理。

总之,数组Array[*] of在西门子博图TIA平台中的使用提供了更好的灵活性和效率。它可以使您的控制系统更加强大和简洁。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 剑指工控 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档