結(jié)構(gòu)數(shù)據(jù)類型Struct與PLC數(shù)據(jù)類型UDT
Struct類型和UDT類型都是一種由多個(gè)不同數(shù)據(jù)類型元素組成的數(shù)據(jù)結(jié)構(gòu),其元素可以是基本數(shù)據(jù)類型,也可以是Struct、數(shù)組等復(fù)雜數(shù)據(jù)類型以及PLC數(shù)據(jù)類型UDT等。Struct 類型可以在DB、OB/FC/FB接口區(qū)、PLC數(shù)據(jù)類型UDT 處定義使用。UDT類型可以在DB、OB/FC/FB接口區(qū)處使用。
從TIA 博途 V13SP1 開(kāi)始,S7-1200 V4.0開(kāi)始,PLC變量表中的I和Q也可以使用UDT類型。
UDT類型作為整體使用時(shí),可以與Variant、DB_ANY類型及相關(guān)指令默契配合。Struct數(shù)據(jù)類型使用非常靈活,隨時(shí)可以使用,但是相對(duì)于PLC數(shù)據(jù)類型 UDT有一些缺點(diǎn),所以建議需要使用Struct類型時(shí),可以使用PLC數(shù)據(jù)類型UDT代替。理論上來(lái)說(shuō),UDT是Struct類型的升級(jí)替代,功能基本完全兼容Struct類型。
數(shù)組Array
數(shù)組表示的是由固定數(shù)目的同一數(shù)據(jù)類型的元素組成的一個(gè)域,格式為:域名:ARRAY[下索引值..大索引值]of數(shù)據(jù)類型,比如DATA:ARRAY[0..7] of INT。

數(shù)組可以使用單個(gè)數(shù)組元素例如"DB1".Static_1[1],也可以使用整個(gè)數(shù)組例如"DB1".Static_1。

多維數(shù)組可以降維使用,例如三維數(shù)組:3D[0..2,0..3,0..4]of Int是一個(gè)3×4×5大小的Int數(shù)組,3D[0]是一個(gè)4×5大小的二維Int數(shù)組,3D[0,1]是一個(gè)5個(gè)元素的一維Int數(shù)組,當(dāng)然多維數(shù)組下標(biāo)也可以換成變量,例如3D[Tag_1,1]這種。
系統(tǒng)數(shù)據(jù)類型SDT
系統(tǒng)數(shù)據(jù)類型SDT是由系統(tǒng)提供,并且具有預(yù)定義的結(jié)構(gòu),它的結(jié)構(gòu)由固定數(shù)目的具有各種數(shù)據(jù)類型的元素構(gòu)成,不能更改系統(tǒng)數(shù)據(jù)類型的結(jié)構(gòu)。系統(tǒng)數(shù)據(jù)類型只能用于特定指令,比如定時(shí)器使用的IEC_TIMER 16數(shù)據(jù)類型,可用于“TP”、“TOF”、“TON”、“TONR”、“RT”和“PT”指令。系統(tǒng)數(shù)據(jù)類型還有很多個(gè),具體可以參考手冊(cè)哦,這里不做詳細(xì)介紹。

硬件數(shù)據(jù)類型
硬件數(shù)據(jù)類型是由 CPU 提供的,可用硬件數(shù)據(jù)類型的數(shù)目取決于 CPU。根據(jù)硬件配置中設(shè)置的模塊存儲(chǔ)特定硬件數(shù)據(jù)類型的常量。在用戶程序中插入用于控制或激活已組態(tài)模塊的指令時(shí),可將這些可用常量用作參數(shù)。
比如說(shuō)REMOTE數(shù)據(jù)類型,用于S7通信PUT/GET指令中指定遠(yuǎn)程CPU的數(shù)據(jù)地址,必須以P#指針的形式作為實(shí)參,例如P#DB1.DBX0.0 BYTE 10。硬件數(shù)據(jù)類型還有很多,具體可以參考手冊(cè)哦,同樣這里不做詳細(xì)介紹。
參數(shù)數(shù)據(jù)類型Variant
參數(shù)數(shù)據(jù)Variant類型只能出現(xiàn)在除FB的靜態(tài)變量以外的OB/FC/FB接口區(qū)。Variant類型的實(shí)參是一個(gè)可以指向不同數(shù)據(jù)類型變量的指針。它可以指向基本數(shù)據(jù)類型,也可以指向復(fù)雜數(shù)據(jù)類型、UDT等。調(diào)用某個(gè)塊時(shí),可以將該塊的Variant參數(shù)連接任何數(shù)據(jù)類型的變量。除了傳遞變量的指針外,還會(huì)傳遞變量的類型信息。該塊中可以利用Variant的相關(guān)指令,將其識(shí)別出并進(jìn)行處理。
Variant指向的實(shí)參,可以是符號(hào)尋址,也可以是絕對(duì)地址尋址,還可以是比如P#DB1.DBX0.0 BYTE 10這種指針形式的尋址。P#DB1.DBX0.0 BYTE 10這種結(jié)構(gòu)起源于S7-300/S7-400的Any指針,S7-1200無(wú)法像S7-300/S7-400一樣定義以及拆解Any指針,但是在參數(shù)類型為Variant時(shí),可以輸入這種指針,并且S7-1200將識(shí)別其為數(shù)組。P#DB1.DBX0.0 BYTE 10的解釋:指向從DB1.DBX0.0開(kāi)始的10個(gè)字節(jié),并且DB1必須包含有10字節(jié)長(zhǎng)度的變量。
時(shí)間數(shù)據(jù)類型DTL
日期和時(shí)間的數(shù)據(jù)類型 DTL 用于存儲(chǔ)日期和時(shí)間信息。它主要由幾個(gè)部分組成,每一部分都包含不同的數(shù)據(jù)類型和取值范圍。指定值的數(shù)據(jù)類型必須與相應(yīng)元素的數(shù)據(jù)類型相匹配。下圖給出了數(shù)據(jù)類型 DTL 的格式、結(jié)構(gòu)組成及其屬性:


時(shí)間數(shù)據(jù)類型什么時(shí)候會(huì)用到呢,比如我們要讀取S7-1200CPU的系統(tǒng)/本地時(shí)鐘,就需要在DB塊中創(chuàng)建數(shù)據(jù)類型為DTL的變量。

以上就是S7-1200 PLC的復(fù)雜數(shù)據(jù)類型啦,一對(duì)比,就會(huì)發(fā)現(xiàn)這明顯比S7-200/200SMART PLC復(fù)雜多了,是吧?沒(méi)關(guān)系,我們可以先掌握一些比較常用的,比如說(shuō)數(shù)組ARRAY數(shù)據(jù)類型等,