結(jié)構(gòu)數(shù)據(jù)類(lèi)型(Struct)
Struct類(lèi)型是一種由多個(gè)不同數(shù)據(jù)類(lèi)型元素組成的數(shù)據(jù)結(jié)構(gòu),其元素可以是基本數(shù)據(jù)類(lèi)型,也可以是Struct、數(shù)組等復(fù)雜數(shù)據(jù)類(lèi)型以及PLC數(shù)據(jù)類(lèi)型(UDT)等。Struct類(lèi)型嵌套Struct類(lèi)型的深度限制為 8 級(jí)。Struct類(lèi)型的變量在程序中可作為一個(gè)變量整體,也可單獨(dú)使用組成該Struct的元素。Struct 類(lèi)型可以在DB、OB/FC/FB接口區(qū)、PLC數(shù)據(jù)類(lèi)型(UDT) 處定義使用。
Struct數(shù)據(jù)類(lèi)型使用非常靈活,隨時(shí)可以使用,但是相對(duì)于PLC數(shù)據(jù)類(lèi)型 (UDT) 有以下缺點(diǎn),所以建議需要使用Struct類(lèi)型時(shí),可以使用PLC數(shù)據(jù)類(lèi)型(UDT)代替。
維護(hù)成本增加:如果對(duì)一個(gè)Struct進(jìn)行了多次復(fù)制,則在更改過(guò)程中該Struct也必需進(jìn)行相應(yīng)的多次更改。
Struct與 PLC 數(shù)據(jù)類(lèi)型(UDT)的相同結(jié)構(gòu)不兼容。
由于系統(tǒng)會(huì)檢查所有結(jié)構(gòu)元素的類(lèi)型是否匹配,因而會(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所示。
圖1 Struct的定義
圖2 Struct的使用
2. Struct可以將一種類(lèi)型變量放在一起,利于區(qū)分,如圖3-4所示。
圖3 原始結(jié)構(gòu)
圖4 增加了Struct類(lèi)型的結(jié)構(gòu)
圖4和圖3功能明顯相同,但圖4相對(duì)圖3,分類(lèi)更加清晰。
3. 通訊程序中,通??梢园研枰l(fā)送的數(shù)據(jù)放在一個(gè)Struct中,即看做一個(gè)整體,這樣在發(fā)送區(qū)只需填寫(xiě)一個(gè)變量即可,如圖5所示。
圖5 使用了圖4定義的Struct類(lèi)型
4. MOVE指令支持相同Struct類(lèi)型的直接傳送,如果傳送雙方是大量數(shù)據(jù),并且結(jié)構(gòu)相同,可以先分別將雙方數(shù)據(jù)建立在一個(gè)結(jié)構(gòu),然后用一個(gè)MOVE指令一次傳送即可,如圖6所示。
程序中直接MOVE,即可傳送整個(gè)Struct,而不需要若干MOVE。并且,即使兩邊Struct中的對(duì)應(yīng)元素名稱(chēng)不同也可以傳送成功,如圖7所示。
圖7 Struct的傳送
-
plc
+關(guān)注
關(guān)注
5016文章
13389瀏覽量
465579 -
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7157瀏覽量
89664 -
Struct
+關(guān)注
關(guān)注
0文章
31瀏覽量
10902
原文標(biāo)題:結(jié)構(gòu)數(shù)據(jù)類(lèi)型(Struct)
文章出處:【微信號(hào):gh_a8b121171b08,微信公眾號(hào):機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
請(qǐng)問(wèn)ADS1299使用Test Signals ,獲取到的數(shù)據(jù)類(lèi)型是什么?
西門(mén)子博途新數(shù)據(jù)類(lèi)型之:SINT(8位整數(shù))
![西門(mén)子博途新<b class='flag-5'>數(shù)據(jù)類(lèi)型</b>之:SINT(8位整數(shù))](https://file1.elecfans.com/web1/M00/F4/A4/wKgaoWcuwKSAVv28AABkgk4XsXY477.png)
AIC23采集到的數(shù)據(jù)是應(yīng)該用什么數(shù)據(jù)類(lèi)型來(lái)接收?int還是unsigned int?
labview數(shù)據(jù)類(lèi)型的取值范圍是多少
常見(jiàn)的遙感數(shù)據(jù)類(lèi)型有哪些
typedef和struct有啥區(qū)別
typedef struct和直接struct的區(qū)別
人體紅外傳感器的數(shù)據(jù)類(lèi)型及工作原理
技術(shù)干貨驛站 ▏深入理解C語(yǔ)言:基本數(shù)據(jù)類(lèi)型和變量
![技術(shù)干貨驛站 ▏深入理解C語(yǔ)言:基本<b class='flag-5'>數(shù)據(jù)類(lèi)型</b>和變量](https://file1.elecfans.com/web2/M00/FC/CD/wKgZomaWI5uASgBaAABuQHdMO4I302.png)
ESP32-S3是否支持修改控制端點(diǎn)數(shù)據(jù)類(lèi)型?
嵌入式中C語(yǔ)言結(jié)構(gòu)體基本實(shí)現(xiàn)
![嵌入式中C語(yǔ)言<b class='flag-5'>結(jié)構(gòu)</b>體基本實(shí)現(xiàn)](https://file1.elecfans.com//web2/M00/E4/42/wKgZomY_FOKAdlRXAADOabNodfI522.jpg)
C語(yǔ)言結(jié)構(gòu)體史上最詳細(xì)的講解【軟件干貨】
C語(yǔ)言數(shù)據(jù)類(lèi)型有哪些
![C語(yǔ)言<b class='flag-5'>數(shù)據(jù)類(lèi)型</b>有哪些](https://file1.elecfans.com/web2/M00/C5/16/wKgZomX6UKqAb6q4AABHS7gAoYk070.png)
嵌入式系統(tǒng)中C語(yǔ)言結(jié)構(gòu)體的基礎(chǔ)實(shí)現(xiàn)與應(yīng)用
![嵌入式系統(tǒng)中C語(yǔ)言<b class='flag-5'>結(jié)構(gòu)</b>體的基礎(chǔ)實(shí)現(xiàn)與應(yīng)用](https://file1.elecfans.com/web2/M00/C4/E6/wKgaomXv9r6Aaj6DAAAYJ3PfWAU110.jpg)
評(píng)論