請教ANY與VARIANT數(shù)據(jù)類型的聯(lián)系和區(qū)別?
劉玉蓉
發(fā)布于2014-11-21 17:14
617
0
標(biāo)簽:
1、對ANY與VARIANT兩個數(shù)據(jù)類型有點(diǎn)混淆,手冊中ANY的示例:P#M20.0 BYTE 10,VARIANT的示例:P#DB10.DBX10.0 INT12,這兩個示例從形式上是一樣的。那么ANY與VARIANT數(shù)據(jù)類型有哪些異同呢?
2、手冊中 VARIANT符號示例如截圖所示MY.DB.STRUCT1.PRESSURE1,這種表示方式是不是只指明了起始地址而沒有指明地址的長度?那么我應(yīng)該何時用絕對表示方式?何時用符號表示方式?
問題補(bǔ)充:
我有個疑問,比如自由口發(fā)送指令SEND_PTP的BUFFER管腳是VARIANT數(shù)據(jù)類型,如果用符號尋址的話就指定了發(fā)送緩存區(qū)的首地址,那么發(fā)送長度從哪里指令呢?
圖片說明: 1,ANY數(shù)據(jù)類型 2,VARIANT數(shù)據(jù)類型
佳答案
1、ANY和VARIANT都是指針型數(shù)據(jù)類型,西門子300/400/1500支持ANY類型,1200/1500支持VARIANT類型,見圖示
2、 ANY 類型的參數(shù)指向數(shù)據(jù)區(qū)的起始位置,并指定其長度。 ANY 指針使用存儲器中的 10 個字節(jié)。
3、VARIANT 類型的參數(shù)是一個可以指向不同數(shù)據(jù)類型變量(而不是實例)的指針。 VARIANT 指針可以是一個元素數(shù)據(jù)類型的對象,例如 INT 或 REAL。 也可以是一個 STRING、DTL、STRUCT 數(shù)組、UDT 或 UDT 數(shù)組。 VARIANT 指針可以識別結(jié)構(gòu),并指向各個結(jié)構(gòu)元素。 VARIANT 數(shù)據(jù)類型的操作數(shù)在背景 DB 或 L 堆棧中不占用任何空間。 但是,將占用 CPU 上的存儲空間。
VARIANT 類型的變量不是一個對象,而是對另一個對象的引用。 VARIANT 類型的各元素只能在函數(shù)的塊接口中聲明。 因此,不能在數(shù)據(jù)塊或函數(shù)塊的塊接口靜態(tài)部分中聲明,例如,因為各元素的大小未知。 所引用對象的大小可以更改。
若有收獲,就點(diǎn)個贊吧!
文章來源于網(wǎng)絡(luò)及文獻(xiàn)如有侵權(quán)請聯(lián)系站長
分享到:
微信掃一掃分享
閱讀與本文標(biāo)簽相同的文章