ANY數據類型
在編程語言 SCL 和 STL 中,如果在塊參數中設定了一個 ANY 指針,則任意類型的存儲器都可以在塊調用時傳遞。
但是,ANY 指針不能存儲有關存儲器結構的任何信息。例如,ANY 指針不能保存指向 PLC數據類型變量的信息。ANY 指針將其作為 BYTE 類型的 ARRAY。
ANY 數據類型的參數可以被傳遞到系統函數塊 (SFB) 或系統函數 (SFC)。
下圖給出了 ANY 指針的結構:
在SCL中,能夠聲明ANY數據類型的變量如下:
作為塊的形式參數;當塊被調用時,這些參數能用任意數據類型的實際參數提供。
作為臨時變量;能夠指定任意數據類型的值給這些變量。
能夠用下列數據作為實際參數或作為賦值語句的右邊部分:
本地和共享變量
在DB中的變量(絕對地址或稱號地址)
在本地實例中的變量(絕對地址或稱號地址)
NIL常量
指定一個空指針。
ANY數據類型
定時器、計數器和塊
指定標識符(如:T1, C20或FB6)。
限制(Restrictions)
ANY數據類型允許用作FB和FC的形式輸入參數、輸入/輸出參數,及FC的輸出參數。常量不允許用作其實際參數或用在其賦值語句的右邊,除NIL常量外。
當調用FB或FC時,如果將臨時變量用作ANY類型的形式參數,不能傳遞參數到遠程塊,傳遞他們時臨時變量將失效。
這種類型變量不能用作結構類型的組件類型或作為數組的元素類型。
當調用FC或FB時,如果形式參數作為輸入參數聲明,只能指定過程輸入(%PEW)給ANY類型的形式參數。
當調用FB時,如果形式參數作為輸出參數聲明,只能指定過程輸出(%PAW)給ANY類型的形式參數。
B#16#80 P I/O
B#16#81 I 輸入存儲區
B#16#82 Q 輸出存儲區
B#16#83 M 位存儲的存儲區
B#16#84 DBX 數據塊
B#16#85 DIX 背景數據塊
B#16#86 L 本地數據
B#16#87 V 先前的本地數據
ANY數據類型舉例
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變量獲得機器的發出給PLC的輸出地址
pRob_A AT AnyRob_A: STRUCT 擴展分解建立結構體
SyntaxId :BYTE; // Byte 0
DataType :BYTE; // Byte 1 數據/參數類型
DataCount:WORD; // Byte 2+3 變量長度
DBNR :WORD; // Byte 4+5 數據庫編號
BZ :DWORD; // Byte 6 bis 10 區域指針
END_STRUCT;
審核編輯:湯梓紅
-
plc
+關注
關注
5016文章
13376瀏覽量
464690 -
存儲器
+關注
關注
38文章
7525瀏覽量
164154 -
編程語言
+關注
關注
10文章
1949瀏覽量
34891 -
數據類型
+關注
關注
0文章
236瀏覽量
13645 -
SCL
+關注
關注
1文章
239瀏覽量
17121
原文標題:西門子SCL -ANY數據類型
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論