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

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

3天内不再提示

结构数据类型(Struct)及应用案例

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 作者:机器人及PLC自动化 2022-07-27 16:10 次阅读

结构数据类型(Struct)

Struct类型是一种由多个不同数据类型元素组成的数据结构,其元素可以是基本数据类型,也可以是Struct、数组等复杂数据类型以及PLC数据类型(UDT)等。Struct类型嵌套Struct类型的深度限制为 8 级。Struct类型的变量在程序中可作为一个变量整体,也可单独使用组成该Struct的元素。Struct 类型可以在DB、OB/FC/FB接口区、PLC数据类型(UDT) 处定义使用。

Struct数据类型使用非常灵活,随时可以使用,但是相对于PLC数据类型 (UDT) 有以下缺点,所以建议需要使用Struct类型时,可以使用PLC数据类型(UDT)代替。

维护成本增加:如果对一个Struct进行了多次复制,则在更改过程中该Struct也必需进行相应的多次更改。

Struct与 PLC 数据类型(UDT)的相同结构不兼容。

由于系统会检查所有结构元素的类型是否匹配,因而会导致性能下降。

存储空间要求增加:每个Struct都是一个单独的对象,其描述信息将加载到PLC中。

Struct应用案例

1. 单独使用组成该Struct的元素时,和普通的变量没有区别,只是每出现一个Struct的嵌套层级,变量名增加一个前缀,如图1-2所示。

67fd0bfe-0ccc-11ed-ba43-dac502259ad0.jpg

图1 Struct的定义

680bba50-0ccc-11ed-ba43-dac502259ad0.jpg

图2 Struct的使用

2. Struct可以将一种类型变量放在一起,利于区分,如图3-4所示。

6814972e-0ccc-11ed-ba43-dac502259ad0.jpg

图3 原始结构

681fd5b2-0ccc-11ed-ba43-dac502259ad0.jpg

图4 增加了Struct类型的结构

图4和图3功能明显相同,但图4相对图3,分类更加清晰。

3. 通讯程序中,通常可以把需要发送的数据放在一个Struct中,即看做一个整体,这样在发送区只需填写一个变量即可,如图5所示。

682f4c40-0ccc-11ed-ba43-dac502259ad0.jpg

图5 使用了图4定义的Struct类型

4. MOVE指令支持相同Struct类型的直接传送,如果传送双方是大量数据,并且结构相同,可以先分别将双方数据建立在一个结构,然后用一个MOVE指令一次传送即可,如图6所示。

6839dc78-0ccc-11ed-ba43-dac502259ad0.jpg

程序中直接MOVE,即可传送整个Struct,而不需要若干MOVE。并且,即使两边Struct中的对应元素名称不同也可以传送成功,如图7所示。

68472d38-0ccc-11ed-ba43-dac502259ad0.jpg

图7 Struct的传送

编辑:黄飞

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

    关注

    0

    文章

    31

    浏览量

    10857

原文标题:结构数据类型(Struct)

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

收藏 人收藏

    评论

    相关推荐

    C语言中的struct结构体与union共用体

    struct结构体,C程序中经常需要用相关的不同类型数据来描述一个数据对象。例如,描述学生的综合信息时,需要使用学生的学号、姓名、性别等
    发表于 10-13 10:44 617次阅读

    Java的基本数据类型与条件结构

    《Java基础入门》第二篇1 基本数据类型,运算符与表达式,条件结构,循环结构...
    发表于 12-23 08:02

    Struct结构数据类型

    Struct类型是一种由多个不同数据类型元素组成的数据结构,其元素可以是基本数据类型,也可以是Struc
    的头像 发表于 07-25 17:02 2953次阅读

    用户定义数据类型结构

    用户定义数据类型(UDTs)是你自己创建的特殊数据结构。因用户数据类型指派了名字,他们可以用很多次。一旦他们被定义,就可在CPU程序的任意点使用;换句话说,他们是共享数据类型,而且他们
    的头像 发表于 08-19 10:06 1424次阅读

    asBits函数如何转换成Bits数据类型

    SpinalHDL中Bundle与SystemVerilog中的packed struct很像,在某些场景下,与普通数据类型之间的连接赋值可以通过asBits,assignFromBits来实现。
    的头像 发表于 10-17 09:53 799次阅读

    SpinalHDL中Bundle数据类型的转换

    SpinalHDL中Bundle与SystemVerilog中的packed struct很像,在某些场景下,与普通数据类型之间的连接赋值可以通过asBits,assignFromBits来实现。
    的头像 发表于 10-17 09:51 1278次阅读

    SystemVerilog中的struct

    SystemVerilog“struct”表示相同或不同数据类型的集合。
    的头像 发表于 11-07 10:18 2391次阅读

    结构数据类型Struct介绍

    Struct类型是一种由多个不同数据类型元素组成的数据结构,其元素可以是基本数据类型,也可以是Struc
    的头像 发表于 01-30 10:15 1887次阅读

    定义数据类型

    在运算之前我们必须首先定义出数据类型,定义出脚本支持的数据类型,这是运算的基础。 这一小节我们将定义出数据类型,在这里我们暂时定义四个数据类型:
    的头像 发表于 03-03 10:10 904次阅读

    Go高性能-两种内存大小为0的数据类型

    Go 中的空结构struct{}{} 的内存大小等于 0,除此之外,还有别的数据类型内存大小也等于 0 吗?
    的头像 发表于 05-22 17:33 673次阅读

    西门子博途中声明STRUCT数据类型的变量

    要声明 STRUCT 数据类型的变量,请按以下步骤操作。
    的头像 发表于 06-21 09:32 3934次阅读

    西门子博途有关STRUCT的基本信息

    STRUCT 数据类型是指一种元素数量固定但数据类型不同的数据结构。在结构中,也可嵌套 STRUCT
    的头像 发表于 07-12 10:03 5774次阅读
    西门子博途有关<b class='flag-5'>STRUCT</b>的基本信息

    西门子博途:使用PLC数据类型 (UDT)

    PLC 数据类型 (UDT) 是可自行定义且在程序中可以多次使用的数据结构。 此结构可包含不同数据类型的多个元素。 声明 PLC 数据类型
    的头像 发表于 07-12 17:36 7806次阅读
    西门子博途:使用PLC<b class='flag-5'>数据类型</b> (UDT)

    PLC 数据类型 (UDT) 的基本知识

    可直接使用关键字 STRUCT 声明为一个结构。因此,嵌套深度限制为 8 级。 PLC 数据类型 (UDT) 可在程序代码中统一更改和重复使用。系统自动更新该数据类型的所用使用位置。
    的头像 发表于 09-10 09:46 4569次阅读
    PLC <b class='flag-5'>数据类型</b> (UDT) 的基本知识

    typedef和struct有啥区别

    struct 结构体名称 { 数据类型 成员 1 ;数据类型 成员 2 ;...}; 例如,我们可以定义一个表示学生
    的头像 发表于 08-20 11:00 939次阅读