從TIA V13SP1 開始,S7-1200 V4.0開始,支持以下處理Variant類型的變量的指令,如圖1所示。
圖1 指令位置
VariantGet、VariantPut
圖2 VariantGet指令詳情
圖3 VariantPut指令詳情
VariantGet
表1 VariantGet指令說明
參數 | 聲明 | 數據類型 | 說明 |
---|---|---|---|
SRC | Input | Variant | 待讀取的變量 |
DST | Output | 基本數據類型、復雜數據類型 | 讀取的結果 |
注意:DST不能是復雜數據類型的數組。
說明:
1. VariantGet的SRC是FC/FB的Input/Output/InOut/Temp以及OB的Temp中定義為Variant類型的參數。
2. VariantGet將Variant參數指向的變量讀取到DST中,要求Variant參數指向的變量一定要和DST的變量類型相同。
3. 建議讀取之前使用IS_NULL判斷Variant是否指向NULL。通過Variant判斷指令確定指向的變量類型,或者數組類型。
4. 如果雙方是相同元素的數組類型,其長度可以不同,讀取時只按照雙方中元素少的數量讀取。
5. 如果雙方類型不相同,則不會發生讀取。如果激活指令的ENO功能,則ENO=False。
VariantPut
表2 VariantPut指令說明
參數 | 聲明 | 數據類型 | 說明 |
---|---|---|---|
SRC | Input | 基本數據類型、復雜數據類型 | 待讀取的變量 |
DST | Input | Variant | 讀取的結果 |
注意:SRC不能是復雜數據類型的數組。
1. VariantPut的DST是FC/FB的Input/Output/InOut/Temp以及OB的Temp中定義為Variant類型的參數。
2. VariantPut將SRC的變量寫入到Variant參數指向的變量中,要求Variant參數指向的變量一定要和SRC的變量類型相同。
3. VariantPut無法初始化一個Variant類型變量。所以建議寫入之前使用IS_NULL判斷Variant是否指向NULL。通過Variant判斷指令確定指向的變量類型,或者數組類型。
4. 如果雙方是相同元素的數組類型,其長度可以不同,讀取時只按照雙方中元素少的數量讀取。
5. 如果雙方類型不相同,則不會發生讀取。如果激活指令的ENO功能,則ENO=False。
使用場合:
通常,VariantGet、VariantPut用在不定長度數組,但數組長度有固定上限時,或者有多種數據類型的數組時,都會非常高效。
此外,這兩個指令還可以配合DB_ANY_TO_VARIANT與VARIANT_TO_DB_ANY實現更多功能。
使用舉例:
編寫FC16,根據不同的輸入類型,調用不同FC17和FC18,FC17的InOut為“VGP1”,FC18的InOut為“VGP2”,如圖4圖5所示。
圖4 參數設置
圖5 例子程序
CountOfElements
LAD | 操作數 | 說明 |
---|---|---|
Variant | 如果操作數對應的實參為數組或者P#指針格式,該指令返回元素總個數,否則返回0。返回值RET_VAL為UDInt類型。操作數是FC/FB的Input/Output/InOut/Temp以及OB的Temp中定義為Variant類型的參數。 |
CountOfElements(操作數),操作數是FC/FB的Input/Output/InOut/Temp中定義為Variant類型的參數,如果操作數對應的實參為數組或者P#指針格式,CountOfElements(操作數)為元素總個數。
注意:
1. 如果Variant指向單個變量,則返回0。
2. 如果Variant 指向 Array of Bool,則填充元素包含在計數中。(例如,Array[0..1] of Bool 將返回 8)。
使用方法:
元素個數(UDInt) := CountOfElements(操作數);
使用舉例:
編寫FC,檢查輸入的3個Variant變量類型,分別判斷實參是否是數組形式,如果是則輸出True,不是則輸出False,此外如果是數組則輸出數組元素個數,不是則輸出0,如圖6-9所示。
圖6 參數設置
圖7 例子程序1
圖8 例子程序2
圖9 FC10的調用
由圖9中可知,Array[0..1] of "UDT_1"是數組,元素個數是2,Array[0..1, 0..2] of Byte是數組,該二維數組元素總個數是2×3=6,P#M100.0 BYTE 2視作數組,元素個數是2。
審核編輯:劉清
-
ENOB
+關注
關注
2文章
14瀏覽量
13542 -
DST
+關注
關注
0文章
9瀏覽量
9717 -
SRC
+關注
關注
0文章
60瀏覽量
17961
原文標題:移動操作 - 變量 指令說明
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論