ANY數(shù)據(jù)類型
在編程語言 SCL 和 STL 中,如果在塊參數(shù)中設定了一個 ANY 指針,則任意類型的存儲器都可以在塊調(diào)用時傳遞。
但是,ANY 指針不能存儲有關存儲器結構的任何信息。例如,ANY 指針不能保存指向 PLC數(shù)據(jù)類型變量的信息。ANY 指針將其作為 BYTE 類型的 ARRAY。
ANY 數(shù)據(jù)類型的參數(shù)可以被傳遞到系統(tǒng)函數(shù)塊 (SFB) 或系統(tǒng)函數(shù) (SFC)。
下圖給出了 ANY 指針的結構:
在SCL中,能夠聲明ANY數(shù)據(jù)類型的變量如下:
作為塊的形式參數(shù);當塊被調(diào)用時,這些參數(shù)能用任意數(shù)據(jù)類型的實際參數(shù)提供。
作為臨時變量;能夠指定任意數(shù)據(jù)類型的值給這些變量。
能夠用下列數(shù)據(jù)作為實際參數(shù)或作為賦值語句的右邊部分:
本地和共享變量
在DB中的變量(絕對地址或稱號地址)
在本地實例中的變量(絕對地址或稱號地址)
NIL常量
指定一個空指針。
ANY數(shù)據(jù)類型
定時器、計數(shù)器和塊
指定標識符(如:T1, C20或FB6)。
限制(Restrictions)
ANY數(shù)據(jù)類型允許用作FB和FC的形式輸入?yún)?shù)、輸入/輸出參數(shù),及FC的輸出參數(shù)。常量不允許用作其實際參數(shù)或用在其賦值語句的右邊,除NIL常量外。
當調(diào)用FB或FC時,如果將臨時變量用作ANY類型的形式參數(shù),不能傳遞參數(shù)到遠程塊,傳遞他們時臨時變量將失效。
這種類型變量不能用作結構類型的組件類型或作為數(shù)組的元素類型。
當調(diào)用FC或FB時,如果形式參數(shù)作為輸入?yún)?shù)聲明,只能指定過程輸入(%PEW)給ANY類型的形式參數(shù)。
當調(diào)用FB時,如果形式參數(shù)作為輸出參數(shù)聲明,只能指定過程輸出(%PAW)給ANY類型的形式參數(shù)。
B#16#80 P I/O
B#16#81 I 輸入存儲區(qū)
B#16#82 Q 輸出存儲區(qū)
B#16#83 M 位存儲的存儲區(qū)
B#16#84 DBX 數(shù)據(jù)塊
B#16#85 DIX 背景數(shù)據(jù)塊
B#16#86 L 本地數(shù)據(jù)
B#16#87 V 先前的本地數(shù)據(jù)
ANY數(shù)據(jù)類型舉例
Example of the ANY Data Type
VAR_INPUT
iANY : ANY;
END_VAR
VAR_TEMP
pANY : ANY;
END_VAR
CASE ii OF
1:
pANY := MW4; // pANY包含MW4的地址
3..5:
pANY := aINT[ii];// pANY包含aINT中的第ii個元素的地址;
100:
pANY := iANY; // pANY contains the value of the iANY input variable
ELSE
pANY := NIL; // pANY包含NIL指針的值
END_CASE;
SFCxxx(IN := pANY);
在VASS標準中的應用:
AnyRob_A :ANY;// ANY變量獲得機器的發(fā)出給PLC的輸出地址
pRob_A AT AnyRob_A: STRUCT 擴展分解建立結構體
SyntaxId :BYTE; // Byte 0
DataType :BYTE; // Byte 1 數(shù)據(jù)/參數(shù)類型
DataCount:WORD; // Byte 2+3 變量長度
DBNR :WORD; // Byte 4+5 數(shù)據(jù)庫編號
BZ :DWORD; // Byte 6 bis 10 區(qū)域指針
END_STRUCT;
審核編輯:湯梓紅
-
plc
+關注
關注
5006文章
13108瀏覽量
461462 -
存儲器
+關注
關注
38文章
7433瀏覽量
163518 -
編程語言
+關注
關注
10文章
1929瀏覽量
34540 -
數(shù)據(jù)類型
+關注
關注
0文章
236瀏覽量
13596 -
SCL
+關注
關注
1文章
239瀏覽量
17025
原文標題:西門子SCL -ANY數(shù)據(jù)類型
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論