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

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

3天内不再提示

结构数据类型Struct介绍

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 2023-01-30 10:15 次阅读

结构数据类型(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所示。

6c2f31f0-9fc2-11ed-bfe3-dac502259ad0.jpg

图1 Struct的定义

6c3abaa2-9fc2-11ed-bfe3-dac502259ad0.jpg

图2 Struct的使用

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

6c468030-9fc2-11ed-bfe3-dac502259ad0.jpg

图3 原始结构

6c53a576-9fc2-11ed-bfe3-dac502259ad0.jpg

图4 增加了Struct类型的结构

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

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

6c602580-9fc2-11ed-bfe3-dac502259ad0.jpg

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

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

6c6caa26-9fc2-11ed-bfe3-dac502259ad0.jpg

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

6c790e1a-9fc2-11ed-bfe3-dac502259ad0.jpg

图7 Struct的传送






审核编辑:刘清

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

    关注

    5008

    文章

    13150

    浏览量

    462025
  • move
    +关注

    关注

    0

    文章

    12

    浏览量

    7461
  • Struct
    +关注

    关注

    0

    文章

    31

    浏览量

    10857

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

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

收藏 人收藏

    评论

    相关推荐

    GaussDB 数据类型介绍

    进行数据类型转换,以满足不同的需求。本文将以示例的形式罗列并介绍一些常见的数据类型转换方法等。  数据类型概念及特点 数据类型是一组值的集合
    的头像 发表于 06-05 16:40 1616次阅读
    GaussDB <b class='flag-5'>数据类型</b><b class='flag-5'>介绍</b>

    Redis数据类型介绍

    支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(有序集合)。 string(字符串) 字符串类型是Redis的最基本数据结构。 字符串
    的头像 发表于 10-09 10:53 761次阅读
    Redis<b class='flag-5'>数据类型</b><b class='flag-5'>介绍</b>

    C语言中数据类型介绍(基本类型、构造类型、指针类型、空类型

    C语言数据类型包括:基本类型、构造类型、指针类型、空类型; ==》空类型就一个:void; =
    发表于 07-19 09:09

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

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

    Struct结构数据类型

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

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

    Struct数据类型使用非常灵活,随时可以使用,但是相对于PLC数据类型 (UDT) 有以下缺点,所以建议需要使用Struct类型时,可以使
    的头像 发表于 07-27 16:10 1744次阅读

    用户定义数据类型结构

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

    SpinalHDL中Bundle数据类型的转换

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

    SystemVerilog中的struct

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

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

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

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

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

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

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

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

    PLC 数据类型 (UDT) 是可自行定义且在程序中可以多次使用的数据结构。 此结构可包含不同数据类型的多个元素。 声明 PLC 数据类型
    的头像 发表于 07-12 17:36 7808次阅读
    西门子博途:使用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 941次阅读