復(fù)合數(shù)據(jù)類型具體的應(yīng)用
劉玉蓉
發(fā)布于2014-08-28 17:54
1
0
標(biāo)簽:
復(fù)合數(shù)據(jù)類型中的數(shù)組,結(jié)構(gòu),字符,日期和時間 是什么意思 舉例說明下,用地址怎么表示?
佳答案
通過組合基本數(shù)據(jù)類型和復(fù)合數(shù)據(jù)類型可以生成下面的數(shù)據(jù)類型:
一、 數(shù)組(ARRAY)將一組同一類型的數(shù)據(jù)組合在一起,形成一個單元。
S7300 PLC在DB1中定義ARRAY[0..4] B#16#0 BYTE 意思是ARRAY[0..4] ,下標(biāo)從0到4,是5個字節(jié)。對應(yīng)db1.dbb0, db1,dbb1, db1.dbb2 db1.dbb3 db1.dbb4。
二、結(jié)構(gòu)(STRUCT)將一組不同類型的數(shù)據(jù)組合在一起,形成一個單元。
STRUCT結(jié)構(gòu)體是變量總稱,它代表DB塊本身是個結(jié)構(gòu)變量。就好比你自己建立個DB(開頭也有STRUCT),有INT,有BOOL,有REAL等等
在DB中生成一個STRUCT?
1.創(chuàng)建一數(shù)據(jù)塊,例如DB1。
2.打開DB1,在STACK所在行的"Type"列輸入“STRUCT”,在結(jié)構(gòu)后一個元素下面一列輸入“END_STRUCT",以表示STACK的開始與結(jié)束。
3.在"STRUCT”與“END_STRUCT"之間的各行輸入結(jié)構(gòu)的元素,其中的”Arddress"列的地址自動生成的。例如STACK所在行的列中+4.0,即表示結(jié)構(gòu)在DB1的第4個字節(jié)起始。
4.訪問結(jié)構(gòu)中的元素可以是絕對地址與符號地址。例如,絕對地址DB1.DBB4; 符號地址“AA”.STACK.LOD1(AA為數(shù)據(jù)塊名,STACK為結(jié)構(gòu)名,LOD1為結(jié)構(gòu)元素名)。
5.將結(jié)構(gòu)作為參數(shù)傳遞時,作為形參和實參的兩個結(jié)構(gòu)必須有相同的數(shù)據(jù)結(jié)構(gòu)。
三、 字符串(STRING)是多有254 個字符(CHAR)的一維數(shù)組。
字符串STRING 字符串是一組ASCII碼,一個串內(nèi)可定義多254個字符,占用256 B內(nèi)存。串中每個字符占用1 B,內(nèi)存中頭兩個字節(jié)存儲串的長度信息。個字節(jié)存放此串的定義長度(默認(rèn)值為254個字符),第二個字節(jié)存放字符串實際長度。例如,String[7]定義長度為7的字符串,占用內(nèi)存9 B(2+7)。若不定義長度,則默認(rèn)為254個字符.
四、日期和時間(DATE_AND_TIME)用于存儲年、月、日、時、分、秒、毫秒和星期,占用8 個字節(jié),用BCD 格式保存。星期天的代碼為1,星期一~星期六的代碼為2~7。例如DT#2004-07-15-12:30:15.200 為2004 年7 月15 日12 時30分15.2 秒。
五、 用戶定義的數(shù)據(jù)類型UDT (user-defined data types)。在數(shù)據(jù)塊DB 和邏輯塊的變量聲明表中定義復(fù)合數(shù)據(jù)類型。
至于UDT數(shù)據(jù)類型使用方法詳見:https://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_ID=77386&cid=1029