0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

西门子博途:ARRAY变量的结构

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 2023-06-12 09:59 次阅读

在非优化块中,ARRAY 变量不得在字限值处开始。即,在偶数地址的字节处开始。ARRAY 变量将使用该存储空间,直到下一个字限值处。

在优化块中,ARRAY 所需的空间与结构中最宽元素所需的空间相同。例如,ARRAY of BYTE 位于一个字节的限值处,而 ARRAY of LREAL 则位于一个 8 字节的限值处。

一维数组中 ARRAY 变量的结构:

39937e62-0855-11ee-962d-dac502259ad0.png

数据类型为 BOOL 的元素从最低有效位处开始。数据类型为 BYTE 和 CHAR 的元素从右侧字节处开始。各元素按顺序排列。

多维数组中 ARRAY 变量的结构:

39e1d166-0855-11ee-962d-dac502259ad0.png

在多维数组中,各元素从第一个维度开始,逐行(逐维)存储。在位和字节元素中,新维度通常从下一个字节处开始。在其它数据类型的元素中,新维度通常从在非优化块中的下一个字(下一个偶数字节)开始。

在优化块中,每个维度所需的空间大小与第一维度的相同。

寻址 ARRAY 元素

ARRAY 元素是使用固定可变下标进行寻址。ARRAY 变量的元素的处理方式与相同数据类型的变量相同。

元素的下标在方括号中指定。该下标包含 ARRAY 各维度的一个整数值(固定下标)或一个变量(可变下标)。

使用固定下标寻址 ARRAY 元素

使用固定下标寻址 ARRAY 元素的具体方式如下所示:

3a1ffc20-0855-11ee-962d-dac502259ad0.png

使用可变下标寻址 ARRAY 元素 也通过一个变量对 ARRAY 元素进行寻址,变量的值仅在运行过程计算。该变量可以是采用绝对地址或符号地址寻址的整型数据类型的全局或局部变量。这种寻址方式也支持多维 ARRAY 和子数组寻址方式。(<数组名>[i, j, k...]) 被调用块中的变量发生更改时,不会影响 in/out 参数处作为实参创建并使用可变下标寻址的 ARRAY 元素。该值将写回与读取时相同的 ARRAY 元素中,并在调用过程中进行传递。 使用下标变量寻址 ARRAY 元素,如下所示: 3add203e-0855-11ee-962d-dac502259ad0.png   传递 ARRAY 数据类型的变量 如果 ARRAY 中各元素的数据类型与形参的数据类型相同,则可将其作为实参进行传递 ARRAY 数据类型的变量可作为参数进行传递。如果块中的输入参数为 ARRAY 数据类型,则传递 ARRAY 时的结构必须与实参的相同。即,数据类型、维数和域元素的个数都必须相同。 如果 ARRAY 的结构完全相同,则可相互分配。即,数据类型、维数和数组元素的个数都必须相同。ARRAY 的名称不必相同。

传递 ARRAY [*] 数据类型的变量

ARRAY[*] 可用于声明函数或函数块参数中限值可变的 ARRAY。创建块时,可定义 ARRAY 的限值。之后,在运行过程中调用该数组后之后将对该限值进行传递。

下图显示了使用 ARRAY[*] 数据类型输入参数的两次块调用。在这两次调用中,传递的 ARRAY 长度不同。

3b269dae-0855-11ee-962d-dac502259ad0.png

传递灵活限值 ARRAY 时的应用规则 在本示例中,将创建函数“BlockWithArrayStarIn_FC”,从而可在后期进行调用: 3b74a3e6-0855-11ee-962d-dac502259ad0.png 如果维数与数据类型都匹配,则可将 ARRAY[*] 指定给 ARRAY[*]。但在此过程中,不能传递单个 ARRAY 元素:

声明函数块“BlockCaller_FB”,并调用函数“BlockWithArrayStarIn_FC”:

3b74a3e6-0855-11ee-962d-dac502259ad0.png 如果维数与数据类型匹配,则可将已知限值的 ARRAY 指定给 ARRAY[*]。在此过程中,也可指定单个的 ARRAY 元素。

声明函数块“BlockCallerFixLimits_FB”,并调用函数“BlockWithArrayStarIn_FC”两次:

3c134ae6-0855-11ee-962d-dac502259ad0.png 可将 ARRAY[*] 指定给 VARIANT。在此过程中,也可指定单个的 ARRAY 元素。   3c96178c-0855-11ee-962d-dac502259ad0.png 多维数组的寻址示例:

说明

ARRAY 数据类型的变量最多支持 6 维。该规则与一维数组的规则相同。数组维数将写入声明中的方括号内,并使用逗号进行分隔。在多维数组中,各元素从第一维度开始存储。

下表列出了二维 ARRAY 数据类型的变量声明:

名称 数据类型 注释
Betr_Temp ARRAY[1..2, 1..3] of INT 1,1,4(0) 数据类型为 ARRAY 的二维变量包含有 6 个元素。前两个元素的值为“1”,其余四个元素的值为“0”。

下图显示了声明为 ARRAY 数据类型的变量结构: 3cc7ab08-0855-11ee-962d-dac502259ad0.png

访问元素

通过下标,可访问各元素的值。可使用常量或变量作为下标。例如,第一个元素的下标为 [1,1],第四个数组元素的下标为 [2,1]。例如,访问第四个元素的值时,需要在程序中声明“Station[2,1]”。

通过 ARRAY[*] 计算两个矢量标积的示例 明 标积是为两个矢量进行赋值的一种数学运算(标量)。 两个矢量的标积将得到一个标量变量,且定义如下: 3ceb337a-0855-11ee-962d-dac502259ad0.png 这里,∝ 是矢量 和 之间的角度。

标积的计算示例:

3ceb337a-0855-11ee-962d-dac502259ad0.png

在本示例中,结果为数字 22。

在以下编程示例中,可确定如何使用 ARRAY[*] 以及 ARRAY 的灵活边界值计算两个矢量的标积。此处,函数“ScalarProduct_FC”将用作具体标积的计算模板。

在该编程示例中,需要具有以下对象:

两个数据块和和一个 PLC 数据类型 (UDT),用于管理矢量数据。

函数,包含计算标积的程序代码

指令“LOWER_BOUND”和“UPPER_BOUND”,用于读取 ARRAY 的边界。

组织块,用于计算标积

操作步骤

在本示例中,使用了多个矢量(即,1 维数组)。当然,其它计算(如,矩阵乘法)可使用多维数组。

要计算标积,请执行以下操作步骤:

创建 PLC 数据类型 (UDT)“VectorArrays_UDT”:
3d6b0d7a-0855-11ee-962d-dac502259ad0.png
3d6b0d7a-0855-11ee-962d-dac502259ad0.png
两个数组“VectorD5Coordinates”和“VectorE13Coordinates”提供计算标积所需的数据。
基于PLC 数据类型“VectorArrays_UDT”PLC 数据类型创建数据块“VectorArrays1_DB”:
3db6e952-0855-11ee-962d-dac502259ad0.png
3db6e952-0855-11ee-962d-dac502259ad0.png
创建第二个“VectorArrays2_DB”数据块。除“VectorArrays_UDT”PLC 数据类型的矢量外,该数据块中还包含两个其它矢量:
3defc934-0855-11ee-962d-dac502259ad0.png
3defc934-0855-11ee-962d-dac502259ad0.png
现已创建了计算标积所需的数据。
创建函数“ScalarProduct_FC”,作为创建计算标积时计算操作步骤的模板:
接口
3e34a8ba-0855-11ee-962d-dac502259ad0.png
3e34a8ba-0855-11ee-962d-dac502259ad0.png
程序代码:
3e6d6e16-0855-11ee-962d-dac502259ad0.png
3e6d6e16-0855-11ee-962d-dac502259ad0.png
在第 1 到 4 行中,查询矢量 1 和矢量 2 的 ARRAY 上/下边界。之后,即可确定两个矢量 ARRAY 的关联数。由于仅当待相乘的两个矢量关联数相等时,才能建立标积,因此需使用第 6 行到第 9 行。
如果 ARRAY 的上/下边界不同,则函数“ScalarProduct_FC”将生成函数值“-1”并退出程序块 (RETURN)。
如果 ARRAY 的上/下边界相同,则变量 #Sum 将初始化为值“0”(第 10 行),并执行标积计算操作(第 11 到 13 行)。
使用事件类“Program cycle”,创建“Main_OB”组织块。在第 4 步中创建的函数“ScalarProduct_FC”将作为标积计算“Main_OB”中的模板:
块接口:
3ea43cf2-0855-11ee-962d-dac502259ad0.png
3ea43cf2-0855-11ee-962d-dac502259ad0.png
程序代码:
3ee6eb4c-0855-11ee-962d-dac502259ad0.png
3ee6eb4c-0855-11ee-962d-dac502259ad0.png

3f305b1a-0855-11ee-962d-dac502259ad0.jpg      

创建函数“BlockWithVariantIn_FC”,从而可在后期调用:

3c533d9a-0855-11ee-962d-dac502259ad0.png

声明函数“BlockWithArrayStarInVariant_FC”,并调用函数“BlockWithVariantIn_FC”:

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 西门子
    +关注

    关注

    92

    文章

    2909

    浏览量

    114224
  • 存储
    +关注

    关注

    13

    文章

    3940

    浏览量

    84948
  • 变量
    +关注

    关注

    0

    文章

    599

    浏览量

    28173

原文标题:西门子博途 :ARRAY 变量的结构

文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    北京回收西门子组态软件

    回收西门子变频器SINAMICS V10系列变频器回收西门子触摸屏回收西门子组态软件回收西门子
    发表于 05-27 12:16

    TIAS7-1200学习笔记

    西门子S7-1200数据类型总结笔记,来源于帮助文档。
    发表于 07-01 11:51

    西门子1200码垛机程序应用

    西门子1200码垛机、立体仓库程序(带注释),程序应用到变频器、触摸屏、步进电机、工业机器人、视觉相机。
    发表于 09-03 07:42

    畅销西门子助听器价格表_西门子助听器价格大全

    畅销西门子助听器价格表_西门子助听器价格大全 1、西门子盒式助听器 AMIGA 176AO Pocket AMIGA 176AO 西门子助听器价格:441元
    发表于 08-23 12:19 1.1w次阅读
    畅销<b class='flag-5'>西门子</b>助听器价格表_<b class='flag-5'>西门子</b>助听器价格大全

    西门子经典天线教程

    西门子经典天线教程
    发表于 09-12 17:40 269次下载
    <b class='flag-5'>西门子</b>经典天线教程

    西门子S7-200使用教程

    西门子S7-200 PLC仿真软件超详细使用教程西门子S7-200使用教程
    发表于 05-06 16:43 0次下载

    西门子是哪个国家的品牌_西门子发明了什么

    本文开始介绍了西门子是哪个国家的品牌以及西门子的发展历史,其次介绍了西门子的发明成果,最后对西门子的家电进行了分析。
    的头像 发表于 04-04 08:45 5.2w次阅读

    博世和西门子哪个好_博世和西门子的关系

    本文开始阐述了博世和西门子的关系以及分析了西门子和博世哪个更好,其次分析了西门子和博世的冰箱哪个更好,最后介绍了博世和西门子家电集团在中国的发展。
    的头像 发表于 04-04 09:30 15.4w次阅读

    西门子PLC的块结构和块编辑的教程详细说明

    本文档的主要内容详细介绍的是西门子PLC的块结构和块编辑的教程详细说明
    发表于 03-19 14:52 20次下载
    <b class='flag-5'>西门子</b>PLC的块<b class='flag-5'>结构</b>和块编辑的教程详细说明

    西门子变频器的基本结构

    西门子变频器的基本结构说明。
    发表于 04-22 14:52 44次下载

    西门子伺服电机的工作原理

    西门子伺服电机和并激式直流西门子伺服电机最为常用。 直流西门子伺服电机分为有刷和无刷电机: 有刷电机成本低,结构简单,启动转矩大,调速范围宽,控制容易,需要维护,但维护方便(换碳刷),
    的头像 发表于 07-19 10:18 6626次阅读

    西门子基础指令大全

    西门子基础指令
    的头像 发表于 09-14 09:59 3970次阅读

    西门子官网

    西门子官网 西门子股份公司是一家专注于工业、基础设施、交通和医疗领域的科技公司。从更高效节能的工厂、更具韧性的供应链、更智能的楼宇和电网,到更清洁、更舒适的交通以及先进的医疗系统,西门子致力于
    发表于 04-28 11:21 1500次阅读

    大型西门子PLC程序结构示例

    大型的西门子PLC程序结构示例。
    的头像 发表于 07-06 10:34 914次阅读

    西门子PLC的工业智能网关如何配置?

    配置采集西门子PLCS数据变量模板表,添加设备信息(定义关联的网关,定义关联的采集西门子PLC数据变量模板,定义通信参数和采集周期等),部署设备和
    的头像 发表于 09-16 14:28 1987次阅读
    <b class='flag-5'>西门子</b>PLC的工业智能网关如何配置?