一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Struct應(yīng)用案例

機(jī)器人及PLC自動(dòng)化應(yīng)用 ? 來(lái)源:機(jī)器人及PLC自動(dòng)化應(yīng)用 ? 作者:機(jī)器人及PLC自動(dòng)化 ? 2022-07-25 10:17 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

結(jié)構(gòu)數(shù)據(jù)類型(Struct)

Struct類型是一種由多個(gè)不同數(shù)據(jù)類型元素組成的數(shù)據(jù)結(jié)構(gòu),其元素可以是基本數(shù)據(jù)類型,也可以是Struct、數(shù)組等復(fù)雜數(shù)據(jù)類型以及PLC數(shù)據(jù)類型(UDT)等。Struct類型嵌套Struct類型的深度限制為 8 級(jí)。Struct類型的變量在程序中可作為一個(gè)變量整體,也可單獨(dú)使用組成該Struct的元素。Struct 類型可以在DB、OB/FC/FB接口區(qū)、PLC數(shù)據(jù)類型(UDT) 處定義使用。

Struct數(shù)據(jù)類型使用非常靈活,隨時(shí)可以使用,但是相對(duì)于PLC數(shù)據(jù)類型 (UDT) 有以下缺點(diǎn),所以建議需要使用Struct類型時(shí),可以使用PLC數(shù)據(jù)類型(UDT)代替。

維護(hù)成本增加:如果對(duì)一個(gè)Struct進(jìn)行了多次復(fù)制,則在更改過(guò)程中該Struct也必需進(jìn)行相應(yīng)的多次更改。

Struct與 PLC 數(shù)據(jù)類型(UDT)的相同結(jié)構(gòu)不兼容。

由于系統(tǒng)會(huì)檢查所有結(jié)構(gòu)元素的類型是否匹配,因而會(huì)導(dǎo)致性能下降。

存儲(chǔ)空間要求增加:每個(gè)Struct都是一個(gè)單獨(dú)的對(duì)象,其描述信息將加載到PLC中。

Struct應(yīng)用案例

1. 單獨(dú)使用組成該Struct的元素時(shí),和普通的變量沒(méi)有區(qū)別,只是每出現(xiàn)一個(gè)Struct的嵌套層級(jí),變量名增加一個(gè)前綴,如圖1-2所示。

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

圖1 Struct的定義

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

圖2 Struct的使用

2. Struct可以將一種類型變量放在一起,利于區(qū)分,如圖3-4所示。

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

圖3 原始結(jié)構(gòu)

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

圖4 增加了Struct類型的結(jié)構(gòu)

圖4和圖3功能明顯相同,但圖4相對(duì)圖3,分類更加清晰。

3. 通訊程序中,通??梢园研枰l(fā)送的數(shù)據(jù)放在一個(gè)Struct中,即看做一個(gè)整體,這樣在發(fā)送區(qū)只需填寫一個(gè)變量即可,如圖5所示。

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

圖5 使用了圖4定義的Struct類型

4. MOVE指令支持相同Struct類型的直接傳送,如果傳送雙方是大量數(shù)據(jù),并且結(jié)構(gòu)相同,可以先分別將雙方數(shù)據(jù)建立在一個(gè)結(jié)構(gòu),然后用一個(gè)MOVE指令一次傳送即可,如圖6所示。

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

程序中直接MOVE,即可傳送整個(gè)Struct,而不需要若干MOVE。并且,即使兩邊Struct中的對(duì)應(yīng)元素名稱不同也可以傳送成功,如圖7所示。

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

圖7 Struct的傳送

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • plc
    plc
    +關(guān)注

    關(guān)注

    5036

    文章

    13909

    瀏覽量

    474449
  • 數(shù)據(jù)類型
    +關(guān)注

    關(guān)注

    0

    文章

    237

    瀏覽量

    13895

原文標(biāo)題:結(jié)構(gòu)數(shù)據(jù)類型(Struct)

文章出處:【微信號(hào):gh_a8b121171b08,微信公眾號(hào):機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

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

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-I2C設(shè)備驅(qū)動(dòng)之I2C驅(qū)動(dòng)之溫濕度傳感器

    -----------------------------------------------------------*//* aht20設(shè)備結(jié)構(gòu)體 */typedef struct {dev_t devid;/* 設(shè)備號(hào) */struct cdev
    發(fā)表于 04-15 10:41

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-I2C設(shè)備驅(qū)動(dòng)之I2C驅(qū)動(dòng)構(gòu)建流程

    i2c_driver結(jié)構(gòu)體原型如下:struct i2c_driver {unsigned int class;int (*attach_adapter)(struct i2c_adapter
    發(fā)表于 04-15 10:37

    飛凌嵌入式ElfBoard ELF 1板卡-I2C設(shè)備驅(qū)動(dòng)之I2C驅(qū)動(dòng)構(gòu)建流程

    i2c_driver結(jié)構(gòu)體原型如下:struct i2c_driver {unsigned int class;int (*attach_adapter)(struct i2c_adapter
    發(fā)表于 04-15 10:21

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-platform總線驅(qū)動(dòng)簡(jiǎn)單示例

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

    飛凌嵌入式ElfBoard ELF 1板卡-platform驅(qū)動(dòng)控制LED

    SET_LED_ON _IO(LED_IOC_MAGIC, 0)#define SET_LED_OFF _IO(LED_IOC_MAGIC, 1) struct device_node *node
    發(fā)表于 04-02 10:37

    飛凌嵌入式ElfBoard ELF 1板卡-platform總線驅(qū)動(dòng)簡(jiǎn)單示例

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

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-字符驅(qū)動(dòng)測(cè)試示例

    ,并返回該設(shè)備號(hào)的次設(shè)備號(hào)。(4)調(diào)用void cdev_init(struct cdev *cdev, const struct file_operations *fops);函數(shù)初始化字符設(shè)備結(jié)構(gòu)體
    發(fā)表于 03-18 09:55

    飛凌嵌入式ElfBoard ELF 1板卡-字符驅(qū)動(dòng)測(cè)試示例

    ,并返回該設(shè)備號(hào)的次設(shè)備號(hào)。(4)調(diào)用void cdev_init(struct cdev *cdev, const struct file_operations *fops);函數(shù)初始化字符設(shè)備結(jié)構(gòu)體
    發(fā)表于 03-17 13:34

    【ELF 2學(xué)習(xí)板試用】04 ASoC中platform class

    。platform driver主要包括audio DMA配置和音頻接口驅(qū)動(dòng)。 platform driver中有兩個(gè)重要的數(shù)據(jù)結(jié)構(gòu):struct snd_soc_component_driver和struct
    發(fā)表于 02-18 16:27

    使用DMA寫flash后,讀取數(shù)據(jù)出現(xiàn)錯(cuò)位現(xiàn)象,是什么原因?qū)е碌??如何解決?

    配置 void dma_init(uint8_t *data_buffer, uint32_t data_length) { dma_single_data_parameter_struct
    發(fā)表于 11-13 06:24

    零基礎(chǔ)開(kāi)發(fā)小安派-Eyes-S1【外設(shè)篇】——PWM

    。#define PWM_POLARITY_ACTIVE_LOW 0#define PWM_POLARITY_ACTIVE_HIGH 11.struct bflb_pwm_v2_config_s說(shuō)明
    的頭像 發(fā)表于 11-06 16:10 ?495次閱讀
    零基礎(chǔ)開(kāi)發(fā)小安派-Eyes-S1【外設(shè)篇】——PWM

    linux內(nèi)核中通用HID觸摸驅(qū)動(dòng)

    在linux內(nèi)核中,為HID觸摸面板實(shí)現(xiàn)了一個(gè)通用的驅(qū)動(dòng)程序,位于/drivers/hid/hid-multitouch.c文件中。hid觸摸驅(qū)動(dòng)是以struct hid_driver實(shí)現(xiàn),首先定義一個(gè)描述hid觸摸驅(qū)動(dòng)的結(jié)構(gòu)mt_driver。
    的頭像 發(fā)表于 10-29 10:55 ?2302次閱讀
    linux內(nèi)核中通用HID觸摸驅(qū)動(dòng)

    typedef和struct有啥區(qū)別

    在C語(yǔ)言中, typedef 和 struct 是兩個(gè)非常重要的關(guān)鍵字,它們?cè)诙x數(shù)據(jù)結(jié)構(gòu)時(shí)扮演著關(guān)鍵的角色。然而,它們之間有一些明顯的區(qū)別。 1. struct 關(guān)鍵字 struct (結(jié)構(gòu)體
    的頭像 發(fā)表于 08-20 11:00 ?2509次閱讀

    typedef struct和直接struct的區(qū)別

    在C語(yǔ)言中, typedef 和 struct 是兩種不同的關(guān)鍵字,它們?cè)诙x和使用上有著明顯的區(qū)別。 typedef struct 和直接 struct 在 C 語(yǔ)言中用于定義結(jié)構(gòu)體類型,但它們?cè)?/div>
    的頭像 發(fā)表于 08-20 10:58 ?3627次閱讀