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

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

3天内不再提示

Struct应用案例

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 作者:机器人及PLC自动化 2022-07-25 10:17 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

fbe28154-0b5b-11ed-ba43-dac502259ad0.jpg

图1 Struct的定义

fbfc7d16-0b5b-11ed-ba43-dac502259ad0.jpg

图2 Struct的使用

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

fc0935ba-0b5b-11ed-ba43-dac502259ad0.jpg

图3 原始结构

fc21131a-0b5b-11ed-ba43-dac502259ad0.jpg

图4 增加了Struct类型的结构

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

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

fc354664-0b5b-11ed-ba43-dac502259ad0.jpg

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

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

fc485786-0b5b-11ed-ba43-dac502259ad0.jpg

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

fc5fb354-0b5b-11ed-ba43-dac502259ad0.jpg

图7 Struct的传送

审核编辑 :李倩

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

    关注

    5045

    文章

    14441

    浏览量

    483547
  • 数据类型
    +关注

    关注

    0

    文章

    237

    浏览量

    14108

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    为什么不建议用匿名结构体

    说起匿名结构体,想必大家第一感觉就是看着好高大上的名字,但实际上也就那样。 typedef struct { union { struct { uint8_t bit_0:1
    发表于 12-04 07:39

    使用typede的f优势介绍

    可以让代码更加清晰简洁使用typedef,我们可以在定义一个结构体、联合、枚举变量时,省去关键字struct,让代码更加简洁。 typedef struct student { char
    发表于 11-26 08:15

    C语言结构体使用

    型的数据组合。 结构体的声明与定义 结构体的声明一般形式为: c struct 结构体名{ 成员1; 成员2; ... }; //注意分号 例如: c struct student
    发表于 11-12 08:30

    使用18b20软件包报错怎么解决?

    :Users13307Desktoprt-threadwqpackagesds18b20-latestinc/dallas_ds18b20_sensor_v1.h:49:49: warning: \'struct
    发表于 10-14 06:49

    rtthread 5.20 安装 systemview 2.52a 出错的原因?

    /SystemView-v2.52a/SystemView_Src/Config/SEGGER_SYSVIEW_RTThread.c(73): error: no member named \'name\' in \'struct
    发表于 09-16 08:20

    gd32h737 开启cache程序跑飞是哪里的问题?

    param[out] none retvalnone */ void mpu_config(void) { mpu_region_init_struct mpu_init_struct
    发表于 09-11 08:28

    【嘉楠堪智K230开发板试用体验】编写一个GPIO 的字符驱动

    \', 0x04, int) struct k230_gpio_data { struct gpio_desc *gpiod; unsigned int gpio_num; const char
    发表于 09-07 01:03

    飞凌嵌入式ElfBoard ELF 1板卡-Regmap使用

    :regmap_init_i2c(struct i2c_client *i2c, struct regmap_config *config);regmap_init_spi(struct spi_device
    发表于 05-22 10:40

    嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-I2C设备驱动之I2C驱动之温湿度传感器

    -----------------------------------------------------------*//* aht20设备结构体 */typedef struct {dev_t devid;/* 设备号 */struct cdev
    发表于 04-15 10:41

    嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-I2C设备驱动之I2C驱动构建流程

    i2c_driver结构体原型如下:struct i2c_driver {unsigned int class;int (*attach_adapter)(struct i2c_adapter
    发表于 04-15 10:37

    飞凌嵌入式ElfBoard ELF 1板卡-I2C设备驱动之I2C驱动构建流程

    i2c_driver结构体原型如下:struct i2c_driver {unsigned int class;int (*attach_adapter)(struct i2c_adapter
    发表于 04-15 10:21

    嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-platform总线驱动简单示例

    static int my_platform_probe(struct platform_device *pdev){ printk(KERN_INFO \"my_platform_probe
    发表于 04-02 10:39

    飞凌嵌入式ElfBoard ELF 1板卡-platform总线驱动简单示例

    static int my_platform_probe(struct platform_device *pdev){ printk(KERN_INFO \"my_platform_probe
    发表于 04-01 14:44

    飞凌嵌入式ElfBoard ELF 1板卡-字符驱动测试示例

    ,并返回该设备号的次设备号。(4)调用void cdev_init(struct cdev *cdev, const struct file_operations *fops);函数初始化字符设备结构体
    发表于 03-17 13:34

    【ELF 2学习板试用】04 ASoC中platform class

    。platform driver主要包括audio DMA配置和音频接口驱动。 platform driver中有两个重要的数据结构:struct snd_soc_component_driver和struct
    发表于 02-18 16:27