struct类型重定义 不同的基类型_汇总贴:STEP7的复杂数据类型有哪些?
復雜數據類型是由基本數據類型通過一定的規則,有機結合在一起,形成的新的、復雜數據類型,STEP7中定義了以下幾種復合數據類型:
一、數組ARRAY
ARRAY表示由一個相同數據類型的數據組合在一起,形成的一個單元。ARRAY是復雜數據類型,它的元素可以是基本數據類型,也可以是復雜數據類型,但所有的元素必須都是相同類型的。
ARRAY的定義規則:1、用關鍵字ARRAY聲明數組
2、給數組指定名字
3、使用下標指定數組的大小。一個數組最多有6個維度,每個維度之間用逗號隔開,維數的第一個數字和最后一個數字之間用兩個點隔開。
4、指定數組中元素的數據類型
5、數組可在DB塊、或邏輯塊的變量聲明中定義。
如圖1.1所示,為在DB塊中定義數組的過程。在邏輯塊的變量聲明中,定義數組的方法類似。
多維數組的定義方法類似,如圖1.2所示為1-6維數組的表示方法。
數組的存儲和訪問數組在存儲介質中占據連續的存儲空間,圖1.1所示的數組,存儲的格式如圖1.3所示。
數組Ins_ARRAY中元素的數據類型為"Word",因此,每一個元素占用一個"字"的空間,整個數組共4個元素,共占用4個字的空間。
訪問數組中的數據,可采用下標訪問法。如我們要訪問Ins_ARRAY數組中的第二個元素,可采用如下格式:
二、結構 STRUCT
STRUCT表示由一個不同數據類型的數據組合在一起,形成的一個單元。一個結構數據必須至少包含兩個元素,可以是基本數據類型,也可以是復雜數據類型,甚至一個結構數據可以是另一個結構的元素(即結構的嵌套)。結構最多可以嵌套八層。
當我們在DB中定義數據時,實際上就聲明了一個"結構"。結構可以在邏輯塊的變量聲明表或在用戶自定義的數據類型UDT中聲明。
創建結構創建"結構"的步驟:
1、"結構"體由關鍵字"STRUCT"和"END_STRUCT"標識;
2、給結構指定名字;
3、定義結構中的"元素",并根據需求,為每個元素指定數據類型:可以是基本數據類型,也可以是復雜數據類型,甚至是一個"結構"。
如圖2.1所示,在DB3中定義了一個名為"motor_info"的結構,包含下列元素:
通過定義結構"motor_info",可以將與電機相關的數據集中起來,方便管理和維護。
如圖2.1所示,定義在共享DB塊中數據,由"STRUCT"開始,"END_STRUCT"結束,因此其本質上也是一個結構體。
"結構"的存儲和訪問與"數組"相同,結構在存儲介質中占據連續的存儲空間,圖2.1所示的結構"motor_info",存儲的格式如圖2.2所示。
有兩種方法可以訪問到結構的各個"元素"。
(1)使用符號地址。
格式為:
如我們要訪問圖2.1中,"speed"元素,完整的訪問方式是:DB3.motor_info.speed。
(2)使用絕對地址。
"speed"元素在DB3中占據10.0開始的4個字節的空間,因此,可用絕對地址來訪問它:DB3.DBD10
三、字符串STRING
字符串用來定義具有最多254個字符(char)的一維數組。其中,字符(char)即ASCII字符,占一個字節的空間。
字符串的格式為:
STRING變量的最大占空為256個字符,其中254個字節為有效字節。即一個長度為n的字符串,占據的空間為n+2個字節。2個附加的字節用來存放字符串的最大定義長度和當前長度。示例見圖3.2。
四、日期和時間:DATE_AND_TIME
DATE_AND_TIME表示由日期和時間組成的時間,可以使用縮寫DT來代替DATE_AND_TIME。
DATE_AND_TIME變量由8個字節構成,分別代表年、月、日、時、分、秒、毫秒,最后一個字節0-3位代表星期,4-7位表示毫秒,數據以BCD碼表示。如圖4所示,為DATE_AND_TIME的數據格式。
DATE_AND_TIME數據類型的取值范圍為:
最小:DT#1900-01-01-0:00:00.000
最大:DT#2089-12-31-23:59:59.999
五、用戶自定義的數據類型:UDT
STEP7支持用戶將基本數據類型、復雜數據類型、甚至是已經定義好的其他UDT類型等組合起來,形成新的數據類型,稱之為"用戶自定義數據類型 UDT"。
UDT具有自己的名稱,可以多次使用。
定義UDT這里,仍然以表(二)的"結構實例:motor_info"為例,進行討論。
1、 新建一個UDT,如圖5.1所示。
2、 根據設計要求(電機工程數據),定義UDT1的元素,如圖5.2所示。
使用UDT1定義好UDT1后,就可以像使用基本數據類型一樣,使用用戶自定義數據類型UDT1了。可以在程序體中用它定義變量,也可以在DB塊中、邏輯塊的接口及臨時變量中使用它們,如圖5.3所示,在DB塊和FC的接口聲明中,使用UDT1。
UDT1的長度及存儲用戶自定義數據類型的"長度"由其內部定義的元素所占空間決定。以UDT1為例,它由一個bool、三個real及一個int構成,其存儲結構如圖5.4所示。
UDT的優點通過創建一個UDT,并將其分配給多個DB塊,可以生成具有相同數據結構的大量數據塊。然后就可以使用這些數據塊為特定的任務管理不同的實際值。如圖5.5所示,利用UDT1,可以快捷、方便的創建數據結構相同的DB塊,以滿足工業現場大量不同用途、但功能類似的設備的數據管理及工藝控制,避免繁瑣、重復的勞動。
<
總結
以上是生活随笔為你收集整理的struct类型重定义 不同的基类型_汇总贴:STEP7的复杂数据类型有哪些?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python3.7如何使用enum_Py
- 下一篇: informix clob转oracle