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

數組可以使用單個數組元素例如"DB1".Static_1[1],也可以使用整個數組例如"DB1".Static_1。

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

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


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

以上就是S7-1200 PLC的復雜數據類型啦,一對比,就會發(fā)現這明顯比S7-200/200SMART PLC復雜多了,是吧?沒關系,我們可以先掌握一些比較常用的,比如說數組ARRAY數據類型等,