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

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

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

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

機(jī)器人及PLC自動(dòng)化應(yīng)用 ? 來(lái)源:機(jī)器人及PLC自動(dòng)化應(yīng)用 ? 2023-06-07 10:49 ? 次閱讀

說(shuō)明

VARIANT 數(shù)據(jù)類(lèi)型的參數(shù)是一個(gè)指針或引用,可指向各種不同數(shù)據(jù)類(lèi)型的變量。VARIANT 指針無(wú)法指向?qū)嵗?,因此不能指向多重?shí)例或多重實(shí)例的 ARRAY。VARIANT 指針可以是基本數(shù)據(jù)類(lèi)型(例如,INT 或 REAL)的對(duì)象。還可以是 STRING、DTL、STRUCT 類(lèi)型的 ARRAY、UDT、UDT 類(lèi)型的 ARRAY。VARIANT 指針可以識(shí)別結(jié)構(gòu),并指向各個(gè)結(jié)構(gòu)元素。VARIANT 數(shù)據(jù)類(lèi)型的操作數(shù)不占用背景數(shù)據(jù)塊或工作存儲(chǔ)器中的空間。但是,將占用 CPU 上的存儲(chǔ)空間。

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

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

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

說(shuō)明
如果一個(gè)數(shù)據(jù)塊最初的數(shù)據(jù)類(lèi)型為用戶自定義的數(shù)據(jù)類(lèi)型 (UDT),那么只能指向完整的數(shù)據(jù)塊。
說(shuō)明
訪問(wèn) I/O
只有 S7-1500 模塊的 CPU 才能直接讀寫(xiě) I/O 輸出或輸出中的信號(hào)。(<操作數(shù)>:P)
長(zhǎng)度(字節(jié)) 表示法 格式 輸入值示例
0 符號(hào) 操作數(shù) "TagResult"
數(shù)據(jù)塊名稱(chēng).操作數(shù)名稱(chēng).元素 "Data_TIA_Portal".StructVariable.FirstComponent
絕對(duì) 操作數(shù) %MW10
數(shù)據(jù)塊編號(hào).操作數(shù) 類(lèi)型長(zhǎng)度 P#DB10.DBX10.0 INT 12 1)
NULL 指針 NULL

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

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

BOOL

BYTE

CHAR

WORD

INT

DWORD

DINT

REAL

TIME

S5TIME

DATE

TOD

DT

示例

以下示例說(shuō)明了 VARIANT 使用 STL 指令“MOVE:移動(dòng)值”的工作原理

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

VARIANT 指令的應(yīng)用方式

簡(jiǎn)介

在下一章中,您將了解可用于 VARIANT 指令的應(yīng)用選項(xiàng)。

對(duì) VARIANT 指向的變量的數(shù)據(jù)類(lèi)型求值

在下表中,您將看到可使用哪些指令來(lái)對(duì) VARIANT 指向的變量的數(shù)據(jù)類(lèi)型求值:

函數(shù) 指令 說(shuō)明
確定數(shù)據(jù)類(lèi)型 TypeOf():檢查 VARIANT 變量的數(shù)據(jù)類(lèi)型
(該指令僅適用于 SCL,且只能與 IF 或 CASE 指令一起使用。)
可使用該指令將 VARIANT 變量指向的數(shù)據(jù)類(lèi)型與任何其它變量的數(shù)據(jù)類(lèi)型進(jìn)行比較。也可以與 PLC 數(shù)據(jù)類(lèi)型作比較。
TypeOfElements():掃描 VARIANT 變量 ARRAY 元素的數(shù)據(jù)類(lèi)型
(該指令僅適用于 SCL,且只能與 IF 或 CASE 指令一起使用。)
可使用該指令將 VARIANT 變量指向的數(shù)據(jù)類(lèi)型與任何其它變量的數(shù)據(jù)類(lèi)型進(jìn)行比較。也可以與 PLC 數(shù)據(jù)類(lèi)型作比較。如果 VARIANT 變量的數(shù)據(jù)類(lèi)型為 ARRAY,則將比較 ARRAY 元素的數(shù)據(jù)類(lèi)型。
EQ_Type:比較數(shù)據(jù)類(lèi)型與變量數(shù)據(jù)類(lèi)型是否“相等”
NE_Type:比較數(shù)據(jù)類(lèi)型與變量數(shù)據(jù)類(lèi)型是否“不相等”
可使用該指令將 VARIANT 變量指向的數(shù)據(jù)類(lèi)型與任何其它變量的數(shù)據(jù)類(lèi)型進(jìn)行比較。也可以與 PLC 數(shù)據(jù)類(lèi)型作比較。
EQ_ElemType:比較 ARRAY 元素?cái)?shù)據(jù)類(lèi)型與變量數(shù)據(jù)類(lèi)型是否“相等”
NE_ElemType:比較 ARRAY 元素?cái)?shù)據(jù)類(lèi)型與變量數(shù)據(jù)類(lèi)型是否“不相等”
可使用該指令將 VARIANT 變量指向的數(shù)據(jù)類(lèi)型與任何其它變量的數(shù)據(jù)類(lèi)型進(jìn)行比較。也可以與 PLC 數(shù)據(jù)類(lèi)型作比較。如果 VARIANT 變量的數(shù)據(jù)類(lèi)型為 ARRAY,則將比較 ARRAY 元素的數(shù)據(jù)類(lèi)型。
對(duì) ARRAY 元素求值 IS_ARRAY:檢查 ARRAY 可使用該指令檢查 VARIANT 變量指向的數(shù)據(jù)類(lèi)型是否為 ARRAY。
CountOfElements:獲取 ARRAY 元素個(gè)數(shù) 可使用該指令讀出該變量中 VARIANT 變量指向了多少個(gè) ARRAY 元素。

可以在信息系統(tǒng)的“基本指令 > 對(duì)應(yīng)編程語(yǔ)言”(Basic instructions > Respective programming language) 下找到有關(guān)各種指令的其它信息。

讀取 VARIANT 指向的數(shù)據(jù)

為了能夠使用數(shù)據(jù),您必須在一個(gè)中間步驟中將該數(shù)據(jù)移到變量中,因?yàn)闊o(wú)法直接處理該數(shù)據(jù)。

指令 說(shuō)明 示例 結(jié)果
VARIANT 指向 目標(biāo)數(shù)據(jù)類(lèi)型
VariantGet:讀取 VARIANT 變量值 可使用該指令將單個(gè)變量的值移到另一個(gè)變量中。這兩個(gè)變量的數(shù)據(jù)類(lèi)型必須匹配。 UDT_1 UDT_1 已執(zhí)行該指令。
REAL REAL
DINT DWORD 該指令未執(zhí)行。

將數(shù)據(jù)分配給 VARIANT 變量

無(wú)法使用該指令來(lái)初始化 VARIANT 變量。因此,在將數(shù)據(jù)返回到變量時(shí)必須已經(jīng)初始化 VARIANT 變量。請(qǐng)勿使用未初始化的臨時(shí) VARIANT 變量。

指令 說(shuō)明 示例 結(jié)果
源數(shù)據(jù)類(lèi)型 VARIANT 指向:
VariantPut:寫(xiě)入 VARIANT 變量值 可使用該指令將單個(gè)變量的值移到另一個(gè)變量中。這兩個(gè)變量的數(shù)據(jù)類(lèi)型必須匹配。 UDT_1 UDT_1 已執(zhí)行該指令。
REAL REAL
DINT DWORD 將不執(zhí)行該指令,因?yàn)閿?shù)據(jù)類(lèi)型不同。

處理動(dòng)態(tài) ARRAY 結(jié)構(gòu)

對(duì) ARRAY 元素求值 TypeOfElements():掃描 VARIANT 變量 ARRAY 元素的數(shù)據(jù)類(lèi)型
(該指令僅適用于 SCL,且只能與 IF 或 CASE 指令一起使用。)
可使用該指令將 VARIANT 變量指向的數(shù)據(jù)類(lèi)型與任何其它變量的數(shù)據(jù)類(lèi)型進(jìn)行比較。也可以與 PLC 數(shù)據(jù)類(lèi)型作比較。如果 VARIANT 變量的數(shù)據(jù)類(lèi)型為 ARRAY,則將比較 ARRAY 元素的數(shù)據(jù)類(lèi)型。
IS_ARRAY:檢查 ARRAY 可使用該指令檢查 VARIANT 變量指向的數(shù)據(jù)類(lèi)型是否為 ARRAY。
CountOfElements:獲取 ARRAY 元素個(gè)數(shù) 可使用該指令讀出該變量中 VARIANT 變量指向了多少個(gè) ARRAY 元素。
MOVE_BLK_VARIANT:塊移動(dòng) 可使用該指令移動(dòng)動(dòng)態(tài)和類(lèi)型安全(集成類(lèi)型測(cè)試)ARRAY。可以為源和目標(biāo) ARRAY 自由選擇限值。ARRAY 元素的數(shù)據(jù)類(lèi)型必須匹配。
說(shuō)明
MOVE、MOVE_BLK 和 MOVE_BLK_VARIANT 之間的區(qū)別
可使用“MOVE”指令來(lái)復(fù)制完整的結(jié)構(gòu)。
可使用“MOVE_BLK”指令來(lái)移動(dòng)具有已知數(shù)據(jù)類(lèi)型的 ARRAY 的部分。
僅在您想要移動(dòng)其數(shù)據(jù)類(lèi)型僅在程序運(yùn)行時(shí)期間已知的 ARRAY 的部分時(shí),才需要使用 MOVE_BLK_VARIANT 指令。

審核編輯:湯梓紅

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

    關(guān)注

    5012

    文章

    13304

    瀏覽量

    463592
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10870

    瀏覽量

    211899
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    613

    瀏覽量

    28388
  • 數(shù)據(jù)類(lèi)型

    關(guān)注

    0

    文章

    236

    瀏覽量

    13624
  • S7-1500
    +關(guān)注

    關(guān)注

    3

    文章

    300

    瀏覽量

    6419

原文標(biāo)題:博途新變量: 有關(guān) VARIANT 的基本信息

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    請(qǐng)教軟件安裝順序

    `如圖是V14軟件,大多文件了,不知道裝那個(gè)文件夾的文件先`
    發(fā)表于 07-29 21:37

    VARIANT變量的類(lèi)型VARTYPE

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

    軟件安裝后開(kāi)機(jī)彈出安裝介質(zhì)不可用

    軟件安裝后開(kāi)機(jī)彈出安裝介質(zhì)不可用,請(qǐng)插入DVD或檢查網(wǎng)絡(luò)連接。請(qǐng)問(wèn)有大神遇到過(guò)嗎?
    發(fā)表于 10-18 16:26

    TIAS7-1200學(xué)習(xí)筆記指令集

    本文章對(duì)S7-1200plc在軟件梯形圖方式編程中使用的指令進(jìn)行了總結(jié)和俗語(yǔ)化描述。
    發(fā)表于 07-01 09:20

    TIAS7-1200學(xué)習(xí)筆記

    西門(mén)子S7-1200數(shù)據(jù)類(lèi)型總結(jié)筆記,來(lái)源于幫助文檔。
    發(fā)表于 07-01 11:51

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

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

    Variant類(lèi)型的變量指令說(shuō)明

    SCL指令:TypeOf(操作數(shù)),操作數(shù)是FC/FB的Input/Output/InOut/Temp中定義為Variant類(lèi)型的參數(shù),該語(yǔ)句輸出是數(shù)據(jù)類(lèi)型,在程序中只能用在IF與CASE進(jìn)行比較。
    的頭像 發(fā)表于 03-30 15:13 ?2878次閱讀

    用小電器來(lái)顯示廚房的基本信息

    電子發(fā)燒友網(wǎng)站提供《用小電器來(lái)顯示廚房的基本信息.zip》資料免費(fèi)下載
    發(fā)表于 10-21 14:22 ?0次下載
    用小電器來(lái)顯示廚房的<b class='flag-5'>基本信息</b>

    支持處理Variant類(lèi)型的變量的指令說(shuō)明

    從TIA V13SP1 開(kāi)始,S7-1200 V4.0開(kāi)始,支持以下處理Variant類(lèi)型的變量的指令。
    的頭像 發(fā)表于 01-03 16:56 ?2571次閱讀

    SIMATIC S7-1500 PLC 變量表定義全局符號(hào)和導(dǎo)出和導(dǎo)入變量

    TIA軟件的項(xiàng)目視圖中的項(xiàng)目樹(shù)中,雙擊“添加新變量表”,即可生成績(jī)新的變量
    發(fā)表于 03-27 09:17 ?1.3w次閱讀

    西門(mén)子:有關(guān)VARIANT基本信息

    VARIANT 數(shù)據(jù)類(lèi)型的參數(shù)是一個(gè)指針或引用,可指向各種不同數(shù)據(jù)類(lèi)型的變量VARIANT 指針無(wú)法指向?qū)嵗?,因此不能指向多重?shí)例或多重實(shí)例的 ARRAY。VARIANT 指針可以是
    的頭像 發(fā)表于 06-12 10:03 ?7192次閱讀
    西門(mén)子<b class='flag-5'>博</b><b class='flag-5'>途</b>:<b class='flag-5'>有關(guān)</b><b class='flag-5'>VARIANT</b>的<b class='flag-5'>基本信息</b>

    西門(mén)子:PLC變量

    PLC 變量表包含在整個(gè) CPU 范圍有效的變量和符號(hào)常量的定義。系統(tǒng)會(huì)為項(xiàng)目中使用的每個(gè) CPU 自動(dòng)創(chuàng)建一個(gè) PLC 變量表??梢詣?chuàng)建其它變量表用于對(duì)
    的頭像 發(fā)表于 06-14 10:32 ?8894次閱讀
    西門(mén)子<b class='flag-5'>博</b><b class='flag-5'>途</b>:PLC<b class='flag-5'>變量</b>

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

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

    壓力檢測(cè)器的基本信息是什么

    壓力檢測(cè)器的基本信息是什么
    的頭像 發(fā)表于 08-25 15:59 ?772次閱讀

    西門(mén)子設(shè)計(jì) ProDiag 變量監(jiān)控操作方式

    如果是 FB_Bauteilkontrolle,在檢查容器的情況下允許通過(guò) Config-Bit 取消塊內(nèi)部的消息,并且在輸出端 Stoexx 將用戶定義的變量監(jiān)控參數(shù)化(可從塊幫助得知詳細(xì)信息)。
    發(fā)表于 10-25 10:28 ?3979次閱讀
    西門(mén)子<b class='flag-5'>博</b><b class='flag-5'>途</b>設(shè)計(jì) ProDiag <b class='flag-5'>變量</b>監(jiān)控操作方式