0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

支持處理Variant類型的變量的指令說明

機器人及PLC自動化應用 ? 來源:機器人及PLC自動化應用 ? 2023-01-03 16:56 ? 次閱讀

TIA V13SP1 開始,S7-1200 V4.0開始,支持以下處理Variant類型的變量的指令,如圖1所示。

ed634fb8-88d4-11ed-bfe3-dac502259ad0.png

圖1 指令位置

VariantGet、VariantPut

ed799ad4-88d4-11ed-bfe3-dac502259ad0.jpg

圖2 VariantGet指令詳情

ed8ad114-88d4-11ed-bfe3-dac502259ad0.jpg

圖3 VariantPut指令詳情

VariantGet

表1 VariantGet指令說明

參數(shù) 聲明 數(shù)據(jù)類型 說明
SRC Input Variant 待讀取的變量
DST Output 基本數(shù)據(jù)類型、復雜數(shù)據(jù)類型 讀取的結果

注意:DST不能是復雜數(shù)據(jù)類型的數(shù)組。

說明:

1. VariantGet的SRC是FC/FB的Input/Output/InOut/Temp以及OB的Temp中定義為Variant類型的參數(shù)。

2. VariantGet將Variant參數(shù)指向的變量讀取到DST中,要求Variant參數(shù)指向的變量一定要和DST的變量類型相同。

3. 建議讀取之前使用IS_NULL判斷Variant是否指向NULL。通過Variant判斷指令確定指向的變量類型,或者數(shù)組類型。

4. 如果雙方是相同元素的數(shù)組類型,其長度可以不同,讀取時只按照雙方中元素少的數(shù)量讀取。

5. 如果雙方類型不相同,則不會發(fā)生讀取。如果激活指令的ENO功能,則ENO=False。

VariantPut

表2 VariantPut指令說明

參數(shù) 聲明 數(shù)據(jù)類型 說明
SRC Input 基本數(shù)據(jù)類型、復雜數(shù)據(jù)類型 待讀取的變量
DST Input Variant 讀取的結果

注意:SRC不能是復雜數(shù)據(jù)類型的數(shù)組。

1. VariantPut的DST是FC/FB的Input/Output/InOut/Temp以及OB的Temp中定義為Variant類型的參數(shù)。

2. VariantPut將SRC的變量寫入到Variant參數(shù)指向的變量中,要求Variant參數(shù)指向的變量一定要和SRC的變量類型相同。

3. VariantPut無法初始化一個Variant類型變量。所以建議寫入之前使用IS_NULL判斷Variant是否指向NULL。通過Variant判斷指令確定指向的變量類型,或者數(shù)組類型。

4. 如果雙方是相同元素的數(shù)組類型,其長度可以不同,讀取時只按照雙方中元素少的數(shù)量讀取。

5. 如果雙方類型不相同,則不會發(fā)生讀取。如果激活指令的ENO功能,則ENO=False。

使用場合:

通常,VariantGet、VariantPut用在不定長度數(shù)組,但數(shù)組長度有固定上限時,或者有多種數(shù)據(jù)類型的數(shù)組時,都會非常高效。

此外,這兩個指令還可以配合DB_ANY_TO_VARIANT與VARIANT_TO_DB_ANY實現(xiàn)更多功能。

使用舉例:

編寫FC16,根據(jù)不同的輸入類型,調用不同F(xiàn)C17和FC18,F(xiàn)C17的InOut為“VGP1”,F(xiàn)C18的InOut為“VGP2”,如圖4圖5所示。

ed9415e4-88d4-11ed-bfe3-dac502259ad0.jpg

圖4 參數(shù)設置

edaf9b3e-88d4-11ed-bfe3-dac502259ad0.jpg

圖5 例子程序

CountOfElements

LAD 操作數(shù) 說明
edc8b024-88d4-11ed-bfe3-dac502259ad0.jpg Variant 如果操作數(shù)對應的實參為數(shù)組或者P#指針格式,該指令返回元素總個數(shù),否則返回0。返回值RET_VAL為UDInt類型。操作數(shù)是FC/FB的Input/Output/InOut/Temp以及OB的Temp中定義為Variant類型的參數(shù)。

CountOfElements(操作數(shù)),操作數(shù)是FC/FB的Input/Output/InOut/Temp中定義為Variant類型的參數(shù),如果操作數(shù)對應的實參為數(shù)組或者P#指針格式,CountOfElements(操作數(shù))為元素總個數(shù)。

注意:

1. 如果Variant指向單個變量,則返回0。

2. 如果Variant 指向 Array of Bool,則填充元素包含在計數(shù)中。(例如,Array[0..1] of Bool 將返回 8)。

使用方法:

元素個數(shù)(UDInt) := CountOfElements(操作數(shù));

使用舉例:

編寫FC,檢查輸入的3個Variant變量類型,分別判斷實參是否是數(shù)組形式,如果是則輸出True,不是則輸出False,此外如果是數(shù)組則輸出數(shù)組元素個數(shù),不是則輸出0,如圖6-9所示。

edd71f92-88d4-11ed-bfe3-dac502259ad0.jpg

圖6 參數(shù)設置

edf18418-88d4-11ed-bfe3-dac502259ad0.jpg

圖7 例子程序1

ee182bc2-88d4-11ed-bfe3-dac502259ad0.jpg

圖8 例子程序2

ee2fef78-88d4-11ed-bfe3-dac502259ad0.jpg

圖9 FC10的調用

由圖9中可知,Array[0..1] of "UDT_1"是數(shù)組,元素個數(shù)是2,Array[0..1, 0..2] of Byte是數(shù)組,該二維數(shù)組元素總個數(shù)是2×3=6,P#M100.0 BYTE 2視作數(shù)組,元素個數(shù)是2。






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • ENOB
    +關注

    關注

    2

    文章

    14

    瀏覽量

    13525
  • DST
    DST
    +關注

    關注

    0

    文章

    9

    瀏覽量

    9703
  • SRC
    SRC
    +關注

    關注

    0

    文章

    60

    瀏覽量

    17901

原文標題:移動操作 - 變量 指令說明

文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    VARIANT變量類型VARTYPE

    VARIANT類型變量的vt值,得以確認: enum VARENUM { VT_EMPTY =0,VT_NULL = 1,VT_I2 = 2,VT_I4 = 3,VT_R4 = 4,VT_R8
    發(fā)表于 07-09 04:47

    用戶自定義結構數(shù)據(jù)怎么存儲成VARIANT類型

    將用戶自定義的C結構數(shù)據(jù)存儲成VARIANT類型,需要時再將VARIANT類型轉為用戶自定義的結構數(shù)據(jù),有十分現(xiàn)實的意義,既然我們不想為這樣的結構數(shù)據(jù)寫一個COM包裝類。雖然有很多方法
    發(fā)表于 08-02 07:08

    高效的C編程之變量類型

    14.8 變量類型 ARM C編譯器支持基本的數(shù)據(jù)類型:char、short、int、long long、float和double。表14.2說明
    發(fā)表于 10-17 16:50 ?3次下載
    高效的C編程之<b class='flag-5'>變量</b><b class='flag-5'>類型</b>

    PHP八種變量類型的詳細資料說明

    本文檔的主要內容詳細介紹的是PHP八種變量類型的詳細資料說明免費下載。
    發(fā)表于 03-01 17:20 ?7次下載
    PHP八種<b class='flag-5'>變量</b><b class='flag-5'>類型</b>的詳細資料<b class='flag-5'>說明</b>

    單片機的常量和變量與數(shù)組的詳細資料說明

    本文檔的主要內容詳細介紹的是單片機的常量和變量與數(shù)組的詳細資料說明包括了:單片機的常量,單片機的變量,構造類型:數(shù)組,構造類型:結構體,構造
    發(fā)表于 12-11 17:36 ?13次下載
    單片機的常量和<b class='flag-5'>變量</b>與數(shù)組的詳細資料<b class='flag-5'>說明</b>

    Python的變量類型詳細資料說明

    Python 中的變量賦值不需要類型聲明。每個變量在內存中創(chuàng)建,都包括變量的標識,名稱和數(shù)據(jù)這些信息。每個變量在使用前都必須賦值,
    發(fā)表于 08-24 16:47 ?3次下載
    Python的<b class='flag-5'>變量</b><b class='flag-5'>類型</b>詳細資料<b class='flag-5'>說明</b>

    Python的變量類型詳細說明

    變量賦值Python 中的變量賦值不需要類型聲明。 每個變量在內存中創(chuàng)建,都包括變量的標識,名稱和數(shù)據(jù)這些信息。每個
    發(fā)表于 01-15 16:29 ?1次下載
    Python的<b class='flag-5'>變量</b><b class='flag-5'>類型</b>詳細<b class='flag-5'>說明</b>

    S7-1200比較操作-變量指令說明

    SCL指令:TypeOf(操作數(shù)),操作數(shù)是FC/FB的Input/Output/InOut/Temp中定義為Variant類型的參數(shù),該語句輸出是數(shù)據(jù)類型,在程序中只能用在IF與CA
    的頭像 發(fā)表于 03-28 11:12 ?4380次閱讀

    Variant類型變量指令說明

    SCL指令:TypeOf(操作數(shù)),操作數(shù)是FC/FB的Input/Output/InOut/Temp中定義為Variant類型的參數(shù),該語句輸出是數(shù)據(jù)類型,在程序中只能用在IF與CA
    的頭像 發(fā)表于 03-30 15:13 ?2551次閱讀

    STRUCT和UDT類型變量是什么意思

    STRUCT和UDT類型變量是表示一個完整結構或一個結構元素的結構化變量。
    的頭像 發(fā)表于 08-29 11:09 ?2018次閱讀

    淺析python的變量類型

    python不需要事先聲明變量。 python的變量類型是在運行過程中自動決定的,不需要代碼聲明類型。
    的頭像 發(fā)表于 03-10 10:11 ?713次閱讀
    淺析python的<b class='flag-5'>變量</b><b class='flag-5'>類型</b>

    博途新變量:有關VARIANT的基本信息

    VARIANT 數(shù)據(jù)類型的參數(shù)是一個指針或引用,可指向各種不同數(shù)據(jù)類型變量。VARIANT 指針無法指向實例,因此不能指向多重實例或多重實
    的頭像 發(fā)表于 06-07 10:49 ?2289次閱讀

    西門子博途:有關VARIANT的基本信息

    VARIANT 數(shù)據(jù)類型的參數(shù)是一個指針或引用,可指向各種不同數(shù)據(jù)類型變量VARIANT 指針無法指向實例,因此不能指向多重實例或多重實
    的頭像 發(fā)表于 06-12 10:03 ?6271次閱讀
    西門子博途:有關<b class='flag-5'>VARIANT</b>的基本信息

    西門子博途中的SCL關系表達式

    以從指令框的下拉列表中選擇該比較指令的數(shù)據(jù)類型 VARIANT支持以下數(shù)據(jù)類型
    的頭像 發(fā)表于 06-21 09:31 ?2856次閱讀

    介紹一下MOVE_BLK_VARIANT指令在使用中應注意的問題

    塊移動指令包括兩個:MOVE_BLK和MOVE_BLK_VARIANT,實際項目中都經(jīng)常被用到。
    的頭像 發(fā)表于 03-04 10:51 ?1702次閱讀
    介紹一下MOVE_BLK_<b class='flag-5'>VARIANT</b><b class='flag-5'>指令</b>在使用中應注意的問題