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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

西門子博途:有關(guān)VARIANT的基本信息

機(jī)器人及PLC自動化應(yīng)用 ? 來源:機(jī)器人及PLC自動化應(yīng)用 ? 2023-06-12 10:03 ? 次閱讀

說明

VARIANT 數(shù)據(jù)類型的參數(shù)是一個指針或引用,可指向各種不同數(shù)據(jù)類型的變量。VARIANT 指針無法指向?qū)嵗虼瞬荒苤赶蚨嘀貙?shí)例或多重實(shí)例的 ARRAY。VARIANT 指針可以是基本數(shù)據(jù)類型(例如,INT 或 REAL)的對象。還可以是 STRING、DTL、STRUCT 類型的 ARRAY、UDT、UDT 類型的 ARRAY。VARIANT 指針可以識別結(jié)構(gòu),并指向各個結(jié)構(gòu)元素。VARIANT 數(shù)據(jù)類型的操作數(shù)不占用背景數(shù)據(jù)塊或工作存儲器中的空間。但是,將占用 CPU 上的存儲空間。

VARIANT 類型的變量不是一個對象,而是對另一個對象的引用。在函數(shù)的塊接口中的 VAR_IN、VAR_IN_OUT 和 VAR_TEMP 部分中,VARIANT 類型的單個元素只能聲明為形參。因此,不能在數(shù)據(jù)塊或函數(shù)塊的塊接口靜態(tài)部分中聲明,例如,因?yàn)楦髟氐拇笮∥粗?。所引用對象的大小可以更改?/p>

使用 VARIANT 數(shù)據(jù)類型時,可為各種數(shù)據(jù)類型創(chuàng)建通用的標(biāo)準(zhǔn)函數(shù)塊 (FB) 或函數(shù) (FC)。為此,可使用所有編程語言中的各種指令。在程序創(chuàng)建過程中,可指定該塊可處理數(shù)據(jù)類型。在此,可使用 VARIANT 數(shù)據(jù)類型對各種變量進(jìn)行互連。之后,再根據(jù)這些變量在塊中的數(shù)據(jù)類型進(jìn)行響應(yīng)。調(diào)用某個塊時,可以將該塊的參數(shù)連接到任何數(shù)據(jù)類型的變量。調(diào)用某個塊時,除了傳遞變量的指針外,還會傳遞變量的類型信息。塊代碼隨后可以根據(jù)運(yùn)行期間傳遞的變量類型來執(zhí)行。

例如,如果函數(shù)的塊參數(shù)為 VARIANT 數(shù)據(jù)類型,那么整數(shù)數(shù)據(jù)類型的變量可以在程序中的一個點(diǎn)處傳遞,而 PLC 數(shù)據(jù)類型的變量可以在程序中的另一個點(diǎn)處傳遞。借助 VARIANT 指令,函數(shù)隨后可以正確響應(yīng)這種情況,而不會出錯。

說明
如果一個數(shù)據(jù)塊最初的數(shù)據(jù)類型為用戶自定義的數(shù)據(jù)類型 (UDT),那么只能指向完整的數(shù)據(jù)塊。
說明
訪問 I/O
只有 S7-1500 模塊的 CPU 才能直接讀寫 I/O 輸出或輸出中的信號。(<操作數(shù)>:P)

下表列出了 VARIANT 指針的屬性:

長度(字節(jié)) 表示法 格式 輸入值示例
0 符號 操作數(shù) "TagResult"
數(shù)據(jù)塊名稱.操作數(shù)名稱.元素 "Data_TIA_Portal".StructVariable.FirstComponent
絕對 操作數(shù) %MW10
數(shù)據(jù)塊編號.操作數(shù) 類型長度
(僅對可標(biāo)準(zhǔn)訪問的塊有效)
P#DB10.DBX10.0 INT 12 1)
NULL 指針 NULL
1) 如果使用前綴 P#,則只能指向“標(biāo)準(zhǔn)”訪問模式的存儲區(qū)。

數(shù)據(jù)類型的編碼

如果通過 P# 使用絕對尋址,則允許使用以下數(shù)據(jù)類型:

十六進(jìn)制代碼 數(shù)據(jù)類型 說明
B#16#00 NIL Null 指針
B#16#01 BOOL
B#16#02 BYTE 字節(jié),8 位
B#16#03 CHAR 8 位字符
B#16#04 WORD 16 位字
B#16#05 INT 16 位整數(shù)
B#16#06 DWORD 32 位字
B#16#07 DINT 32 位整數(shù)
B#16#08 REAL 32 位浮點(diǎn)數(shù)
B#16#0B TIME 持續(xù)時間
B#16#0C S5TIME 持續(xù)時間
B#16#09 DATE 日期
B#16#0A TOD 日期和時間
B#16#0E DT 日期和時間
B#16#13 STRING 字符串
B#16#17 BLOCK_FB 函數(shù)塊
B#16#18 BLOCK_FC 函數(shù)
B#16#19 BLOCK_DB 數(shù)據(jù)塊
B#16#1A BLOCK_SDB 系統(tǒng)數(shù)據(jù)塊
B#16#1C COUNTER 計(jì)數(shù)器
B#16#1D TIMER 定時器

示例

以下示例說明了 VARIANT 使用 STL 指令“MOVE:移動值”的工作原理

STL 說明
CALL MOVE // 調(diào)用指令。
value_type := VARIANT // 參數(shù) IN 和 OUT 的數(shù)據(jù)類型
IN := "Data_TIA_Portal".StructVariable.FirstComponent // 從“Data_TIA_Portal”數(shù)據(jù)塊移動操作數(shù)“FirstComponent”中的數(shù)據(jù)。
OUT := "MotorDB".StructResult.TagResult // 從“MotorDB”數(shù)據(jù)塊傳送到“TagResult”操作數(shù)中。

編程示例

在此編程示例中,將移動在生產(chǎn)班次期間為示例收集的數(shù)據(jù)值以作進(jìn)一步處理。收集的數(shù)據(jù)放在 ARRAY 中。通過“MOVE_BLK_VARIANT:移動塊”(Move block) 指令,可以動態(tài)或以類型安全方式移動整個 ARRAY 或個別 ARRAY 元素??梢詾樵春湍繕?biāo) ARRAY 自由選擇 ARRAY 限值,這些限值不必匹配。但是,要移動的數(shù)據(jù)值的數(shù)據(jù)類型必須匹配。該指令在所有編程語言中都可用。

通過 VARIANT 數(shù)據(jù)類型,也可以使用已創(chuàng)建的程序代碼并通過在塊調(diào)用中指定不同的源和目標(biāo)區(qū)域來移動另一個生產(chǎn)班次的數(shù)據(jù)。

使用 SCL 編程語言創(chuàng)建函數(shù)并將其命名為“FC_PartialArrayCopy”。
按如下方式聲明塊接口:
436d75be-0855-11ee-962d-dac502259ad0.png
436d75be-0855-11ee-962d-dac502259ad0.png
按如下方式創(chuàng)建 SCL 程序代碼:
可以找到以下程序代碼作為模板。
43b8c708-0855-11ee-962d-dac502259ad0.png
43b8c708-0855-11ee-962d-dac502259ad0.png
創(chuàng)建 PLC 數(shù)據(jù)類型“UDT_MyStruct”:
43fc73ae-0855-11ee-962d-dac502259ad0.png
43fc73ae-0855-11ee-962d-dac502259ad0.png
創(chuàng)建全局?jǐn)?shù)據(jù)塊“DB_WithArrays”:
443bc658-0855-11ee-962d-dac502259ad0.png
443bc658-0855-11ee-962d-dac502259ad0.png
在組織塊(例如 OB1)中調(diào)用“FC_PartialArrayCopy”函數(shù),并使用 DB_WithArrays 數(shù)據(jù)塊初始化參數(shù)。輸入指定的常量:
447254c0-0855-11ee-962d-dac502259ad0.png
447254c0-0855-11ee-962d-dac502259ad0.png
也可以使用第三個和第四個 ARRAY(數(shù)據(jù)類型為 REAL)來代替使用前兩個 ARRAY (數(shù)據(jù)類型為 UDT_MyStruct)。
44b7ee54-0855-11ee-962d-dac502259ad0.png
44b7ee54-0855-11ee-962d-dac502259ad0.png

結(jié)果

在程序周期中調(diào)用“FC_PartialArrayCopy”塊后,會將從第四個元素開始的兩個數(shù)據(jù)值立即從“DB_WithArrays”全局?jǐn)?shù)據(jù)塊的第一個 ARRAY 復(fù)制到該數(shù)據(jù)塊的第二個 ARRAY 中。復(fù)制的數(shù)據(jù)值將插入到第二個 ARRAY 中(從第四個元素開始)。

用于復(fù)制的 SCL 程序代碼:

SCL
IF IS_ARRAY(#SourceArray) AND TypeOfElements(#SourceArray) = TypeOfElements(#DestinationArray) THEN
#Error := MOVE_BLK_VARIANT(COUNT := #Count, SRC := #SourceArray, SRC_INDEX := #SourceIndex,
DEST => #DestinationArray, DEST_INDEX := #DestinationIndex);
END_IF;
#FC_PartialArrayCopy := #Error;

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 存儲器
    +關(guān)注

    關(guān)注

    38

    文章

    7521

    瀏覽量

    164095
  • 西門子
    +關(guān)注

    關(guān)注

    94

    文章

    3056

    瀏覽量

    116153
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4344

    瀏覽量

    62813
  • SCL
    SCL
    +關(guān)注

    關(guān)注

    1

    文章

    239

    瀏覽量

    17116

原文標(biāo)題:西門子博途:有關(guān) VARIANT 的基本信息

文章出處:【微信號:gh_a8b121171b08,微信公眾號:機(jī)器人及PLC自動化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    北京回收西門子組態(tài)軟件

    回收西門子變頻器SINAMICS V10系列變頻器回收西門子觸摸屏回收西門子組態(tài)軟件回收西門子
    發(fā)表于 05-27 12:16

    西門子1200碼垛機(jī)程序應(yīng)用

    西門子1200碼垛機(jī)、立體倉庫程序(帶注釋),程序應(yīng)用到變頻器、觸摸屏、步進(jìn)電機(jī)、工業(yè)機(jī)器人、視覺相機(jī)。
    發(fā)表于 09-03 07:42

    暢銷西門子助聽器價格表_西門子助聽器價格大全

    暢銷西門子助聽器價格表_西門子助聽器價格大全 1、西門子盒式助聽器 AMIGA 176AO Pocket AMIGA 176AO 西門子助聽器價格:441元
    發(fā)表于 08-23 12:19 ?1.5w次閱讀
    暢銷<b class='flag-5'>西門子</b>助聽器價格表_<b class='flag-5'>西門子</b>助聽器價格大全

    西門子大賽1200電梯參考程序

    西門子大賽1200電梯參考程序,V13文件.有需要的加油!
    發(fā)表于 06-22 15:56 ?183次下載

    博世和西門子哪個好_博世和西門子的關(guān)系

    本文開始闡述了博世和西門子的關(guān)系以及分析了西門子和博世哪個更好,其次分析了西門子和博世的冰箱哪個更好,最后介紹了博世和西門子家電集團(tuán)在中國的發(fā)展。
    的頭像 發(fā)表于 04-04 09:30 ?15.9w次閱讀

    解析ABB機(jī)器人與西門子S7-1200 profinet通訊

    西門子軟件中做PLC硬件組態(tài),設(shè)置以太網(wǎng)連接。
    的頭像 發(fā)表于 01-18 16:55 ?4.9w次閱讀
    解析ABB機(jī)器人與<b class='flag-5'>西門子</b>S7-1200 profinet通訊

    詳解編程實(shí)現(xiàn)S7300與西門子觸摸屏通訊

    目前國內(nèi)流行用昆侖通泰或者威綸通觸摸屏做項(xiàng)目,一方面價格便宜,另一方面編程簡單。但西門子屏也經(jīng)常會被用到,所以不得不學(xué)。簡單寫一下會用圖建立西門子觸摸屏和S7300PLC的通訊。
    的頭像 發(fā)表于 05-05 11:37 ?1.7w次閱讀

    西門子PLC編程軟件下載

    西門子PLC編程軟件TIA V13 SP1 SIMATIC_WinCC_Runtime_Professional_SP1_for_V13---江西工控論壇有下載密碼www.jx-gongkong.com
    發(fā)表于 03-01 11:04 ?68次下載

    Unity3D與西門子PLC通訊

    本文是做實(shí)體PLC和Unity的通訊,如果沒有實(shí)體PLC可以參考我之前的文上位機(jī)與西門子TIA的PROFINET通訊仿真(虛擬通訊),這篇
    發(fā)表于 04-19 11:43 ?6次下載
    Unity3D與<b class='flag-5'>西門子</b>PLC通訊

    如何在平臺調(diào)試西門子G120變頻器

      隨著工業(yè)自動化邁向智能化越來越近,科技工作者不斷的突破,近年在傳動領(lǐng)域,采用工業(yè)以太網(wǎng)(Profinet)和變頻器通訊非常廣泛,今天我們簡單的介紹下在平臺調(diào)試西門子G120變頻器。
    的頭像 發(fā)表于 04-25 10:17 ?2.9w次閱讀
    如何在<b class='flag-5'>博</b><b class='flag-5'>途</b>平臺調(diào)試<b class='flag-5'>西門子</b>G120變頻器

    新變量:有關(guān)VARIANT基本信息

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

    西門子有關(guān)STRUCT的基本信息

    STRUCT 數(shù)據(jù)類型是指一種元素?cái)?shù)量固定但數(shù)據(jù)類型不同的數(shù)據(jù)結(jié)構(gòu)。在結(jié)構(gòu)中,也可嵌套 STRUCT 或 ARRAY 數(shù)據(jù)類型的元素。結(jié)構(gòu)可用于根據(jù)過程控制系統(tǒng)分組數(shù)據(jù)以及作為一個數(shù)據(jù)單元來傳送參數(shù)。
    的頭像 發(fā)表于 07-12 10:03 ?6171次閱讀
    <b class='flag-5'>西門子</b><b class='flag-5'>博</b><b class='flag-5'>途</b><b class='flag-5'>有關(guān)</b>STRUCT的<b class='flag-5'>基本信息</b>

    西門子1200/1500PLC單按鈕啟??刂?0種設(shè)計(jì)方法

    西門子1200/1500PLC單按鈕啟??刂?0種設(shè)計(jì)方法
    的頭像 發(fā)表于 08-31 09:14 ?8234次閱讀
    <b class='flag-5'>西門子</b><b class='flag-5'>博</b><b class='flag-5'>途</b>1200/1500PLC單按鈕啟??刂?0種設(shè)計(jì)方法

    西門子plc單按鈕啟停的十種方法(1200/1500PLC)

    西門子1200/1500PLC單按鈕啟??刂?0種設(shè)計(jì)方法
    發(fā)表于 08-31 09:15 ?6844次閱讀
    <b class='flag-5'>西門子</b>plc單按鈕啟停的十種方法(<b class='flag-5'>博</b><b class='flag-5'>途</b>1200/1500PLC)

    如何在平臺調(diào)試西門子G120變頻器

    隨著工業(yè)自動化邁向智能化越來越近,科技工作者不斷的突破,近年在傳動領(lǐng)域,采用工業(yè)以太網(wǎng)(Profinet)和變頻器通訊非常廣泛,今天我們簡單的介紹下在平臺調(diào)試西門子G120變頻器。
    發(fā)表于 09-07 12:50 ?5128次閱讀
    如何在<b class='flag-5'>博</b><b class='flag-5'>途</b>平臺調(diào)試<b class='flag-5'>西門子</b>G120變頻器