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

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

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

西門子博途:ARRAY變量的結(jié)構(gòu)

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

在非優(yōu)化塊中,ARRAY 變量不得在字限值處開始。即,在偶數(shù)地址的字節(jié)處開始。ARRAY 變量將使用該存儲(chǔ)空間,直到下一個(gè)字限值處。

在優(yōu)化塊中,ARRAY 所需的空間與結(jié)構(gòu)中最寬元素所需的空間相同。例如,ARRAY of BYTE 位于一個(gè)字節(jié)的限值處,而 ARRAY of LREAL 則位于一個(gè) 8 字節(jié)的限值處。

一維數(shù)組中 ARRAY 變量的結(jié)構(gòu):

39937e62-0855-11ee-962d-dac502259ad0.png

數(shù)據(jù)類型為 BOOL 的元素從最低有效位處開始。數(shù)據(jù)類型為 BYTE 和 CHAR 的元素從右側(cè)字節(jié)處開始。各元素按順序排列。

多維數(shù)組中 ARRAY 變量的結(jié)構(gòu):

39e1d166-0855-11ee-962d-dac502259ad0.png

在多維數(shù)組中,各元素從第一個(gè)維度開始,逐行(逐維)存儲(chǔ)。在位和字節(jié)元素中,新維度通常從下一個(gè)字節(jié)處開始。在其它數(shù)據(jù)類型的元素中,新維度通常從在非優(yōu)化塊中的下一個(gè)字(下一個(gè)偶數(shù)字節(jié))開始。

在優(yōu)化塊中,每個(gè)維度所需的空間大小與第一維度的相同。

尋址 ARRAY 元素

ARRAY 元素是使用固定可變下標(biāo)進(jìn)行尋址。ARRAY 變量的元素的處理方式與相同數(shù)據(jù)類型的變量相同。

元素的下標(biāo)在方括號(hào)中指定。該下標(biāo)包含 ARRAY 各維度的一個(gè)整數(shù)值(固定下標(biāo))或一個(gè)變量(可變下標(biāo))。

使用固定下標(biāo)尋址 ARRAY 元素

使用固定下標(biāo)尋址 ARRAY 元素的具體方式如下所示:

3a1ffc20-0855-11ee-962d-dac502259ad0.png

使用可變下標(biāo)尋址 ARRAY 元素 也通過(guò)一個(gè)變量對(duì) ARRAY 元素進(jìn)行尋址,變量的值僅在運(yùn)行過(guò)程計(jì)算。該變量可以是采用絕對(duì)地址或符號(hào)地址尋址的整型數(shù)據(jù)類型的全局或局部變量。這種尋址方式也支持多維 ARRAY 和子數(shù)組尋址方式。(<數(shù)組名>[i, j, k...]) 被調(diào)用塊中的變量發(fā)生更改時(shí),不會(huì)影響 in/out 參數(shù)處作為實(shí)參創(chuàng)建并使用可變下標(biāo)尋址的 ARRAY 元素。該值將寫回與讀取時(shí)相同的 ARRAY 元素中,并在調(diào)用過(guò)程中進(jìn)行傳遞。 使用下標(biāo)變量尋址 ARRAY 元素,如下所示: 3add203e-0855-11ee-962d-dac502259ad0.png ? 傳遞 ARRAY 數(shù)據(jù)類型的變量 如果 ARRAY 中各元素的數(shù)據(jù)類型與形參的數(shù)據(jù)類型相同,則可將其作為實(shí)參進(jìn)行傳遞 ARRAY 數(shù)據(jù)類型的變量可作為參數(shù)進(jìn)行傳遞。如果塊中的輸入?yún)?shù)為 ARRAY 數(shù)據(jù)類型,則傳遞 ARRAY 時(shí)的結(jié)構(gòu)必須與實(shí)參的相同。即,數(shù)據(jù)類型、維數(shù)和域元素的個(gè)數(shù)都必須相同。 如果 ARRAY 的結(jié)構(gòu)完全相同,則可相互分配。即,數(shù)據(jù)類型、維數(shù)和數(shù)組元素的個(gè)數(shù)都必須相同。ARRAY 的名稱不必相同。

傳遞 ARRAY [*] 數(shù)據(jù)類型的變量

ARRAY[*] 可用于聲明函數(shù)或函數(shù)塊參數(shù)中限值可變的 ARRAY。創(chuàng)建塊時(shí),可定義 ARRAY 的限值。之后,在運(yùn)行過(guò)程中調(diào)用該數(shù)組后之后將對(duì)該限值進(jìn)行傳遞。

下圖顯示了使用 ARRAY[*] 數(shù)據(jù)類型輸入?yún)?shù)的兩次塊調(diào)用。在這兩次調(diào)用中,傳遞的 ARRAY 長(zhǎng)度不同。

3b269dae-0855-11ee-962d-dac502259ad0.png

傳遞靈活限值 ARRAY 時(shí)的應(yīng)用規(guī)則 在本示例中,將創(chuàng)建函數(shù)“BlockWithArrayStarIn_FC”,從而可在后期進(jìn)行調(diào)用: 3b74a3e6-0855-11ee-962d-dac502259ad0.png 如果維數(shù)與數(shù)據(jù)類型都匹配,則可將 ARRAY[*] 指定給 ARRAY[*]。但在此過(guò)程中,不能傳遞單個(gè) ARRAY 元素:

聲明函數(shù)塊“BlockCaller_FB”,并調(diào)用函數(shù)“BlockWithArrayStarIn_FC”:

3b74a3e6-0855-11ee-962d-dac502259ad0.png 如果維數(shù)與數(shù)據(jù)類型匹配,則可將已知限值的 ARRAY 指定給 ARRAY[*]。在此過(guò)程中,也可指定單個(gè)的 ARRAY 元素。

聲明函數(shù)塊“BlockCallerFixLimits_FB”,并調(diào)用函數(shù)“BlockWithArrayStarIn_FC”兩次:

3c134ae6-0855-11ee-962d-dac502259ad0.png 可將 ARRAY[*] 指定給 VARIANT。在此過(guò)程中,也可指定單個(gè)的 ARRAY 元素。 ? 3c96178c-0855-11ee-962d-dac502259ad0.png 多維數(shù)組的尋址示例:

說(shuō)明

ARRAY 數(shù)據(jù)類型的變量最多支持 6 維。該規(guī)則與一維數(shù)組的規(guī)則相同。數(shù)組維數(shù)將寫入聲明中的方括號(hào)內(nèi),并使用逗號(hào)進(jìn)行分隔。在多維數(shù)組中,各元素從第一維度開始存儲(chǔ)。

下表列出了二維 ARRAY 數(shù)據(jù)類型的變量聲明:

名稱 數(shù)據(jù)類型 注釋
Betr_Temp ARRAY[1..2, 1..3] of INT 1,1,4(0) 數(shù)據(jù)類型為 ARRAY 的二維變量包含有 6 個(gè)元素。前兩個(gè)元素的值為“1”,其余四個(gè)元素的值為“0”。

下圖顯示了聲明為 ARRAY 數(shù)據(jù)類型的變量結(jié)構(gòu): 3cc7ab08-0855-11ee-962d-dac502259ad0.png

訪問(wèn)元素

通過(guò)下標(biāo),可訪問(wèn)各元素的值。可使用常量或變量作為下標(biāo)。例如,第一個(gè)元素的下標(biāo)為 [1,1],第四個(gè)數(shù)組元素的下標(biāo)為 [2,1]。例如,訪問(wèn)第四個(gè)元素的值時(shí),需要在程序中聲明“Station[2,1]”。

通過(guò) ARRAY[*] 計(jì)算兩個(gè)矢量標(biāo)積的示例 明 標(biāo)積是為兩個(gè)矢量進(jìn)行賦值的一種數(shù)學(xué)運(yùn)算(標(biāo)量)。 兩個(gè)矢量的標(biāo)積將得到一個(gè)標(biāo)量變量,且定義如下: 3ceb337a-0855-11ee-962d-dac502259ad0.png 這里,∝ 是矢量 和 之間的角度。

標(biāo)積的計(jì)算示例:

3ceb337a-0855-11ee-962d-dac502259ad0.png

在本示例中,結(jié)果為數(shù)字 22。

在以下編程示例中,可確定如何使用 ARRAY[*] 以及 ARRAY 的靈活邊界值計(jì)算兩個(gè)矢量的標(biāo)積。此處,函數(shù)“ScalarProduct_FC”將用作具體標(biāo)積的計(jì)算模板。

在該編程示例中,需要具有以下對(duì)象:

兩個(gè)數(shù)據(jù)塊和和一個(gè) PLC 數(shù)據(jù)類型 (UDT),用于管理矢量數(shù)據(jù)。

函數(shù),包含計(jì)算標(biāo)積的程序代碼

指令“LOWER_BOUND”和“UPPER_BOUND”,用于讀取 ARRAY 的邊界。

組織塊,用于計(jì)算標(biāo)積

操作步驟

在本示例中,使用了多個(gè)矢量(即,1 維數(shù)組)。當(dāng)然,其它計(jì)算(如,矩陣乘法)可使用多維數(shù)組。

要計(jì)算標(biāo)積,請(qǐng)執(zhí)行以下操作步驟:

創(chuàng)建 PLC 數(shù)據(jù)類型 (UDT)“VectorArrays_UDT”:
3d6b0d7a-0855-11ee-962d-dac502259ad0.png
3d6b0d7a-0855-11ee-962d-dac502259ad0.png
兩個(gè)數(shù)組“VectorD5Coordinates”和“VectorE13Coordinates”提供計(jì)算標(biāo)積所需的數(shù)據(jù)。
基于PLC 數(shù)據(jù)類型“VectorArrays_UDT”PLC 數(shù)據(jù)類型創(chuàng)建數(shù)據(jù)塊“VectorArrays1_DB”:
3db6e952-0855-11ee-962d-dac502259ad0.png
3db6e952-0855-11ee-962d-dac502259ad0.png
創(chuàng)建第二個(gè)“VectorArrays2_DB”數(shù)據(jù)塊。除“VectorArrays_UDT”PLC 數(shù)據(jù)類型的矢量外,該數(shù)據(jù)塊中還包含兩個(gè)其它矢量:
3defc934-0855-11ee-962d-dac502259ad0.png
3defc934-0855-11ee-962d-dac502259ad0.png
現(xiàn)已創(chuàng)建了計(jì)算標(biāo)積所需的數(shù)據(jù)。
創(chuàng)建函數(shù)“ScalarProduct_FC”,作為創(chuàng)建計(jì)算標(biāo)積時(shí)計(jì)算操作步驟的模板:
接口
3e34a8ba-0855-11ee-962d-dac502259ad0.png
3e34a8ba-0855-11ee-962d-dac502259ad0.png
程序代碼:
3e6d6e16-0855-11ee-962d-dac502259ad0.png
3e6d6e16-0855-11ee-962d-dac502259ad0.png
在第 1 到 4 行中,查詢矢量 1 和矢量 2 的 ARRAY 上/下邊界。之后,即可確定兩個(gè)矢量 ARRAY 的關(guān)聯(lián)數(shù)。由于僅當(dāng)待相乘的兩個(gè)矢量關(guān)聯(lián)數(shù)相等時(shí),才能建立標(biāo)積,因此需使用第 6 行到第 9 行。
如果 ARRAY 的上/下邊界不同,則函數(shù)“ScalarProduct_FC”將生成函數(shù)值“-1”并退出程序塊 (RETURN)。
如果 ARRAY 的上/下邊界相同,則變量 #Sum 將初始化為值“0”(第 10 行),并執(zhí)行標(biāo)積計(jì)算操作(第 11 到 13 行)。
使用事件類“Program cycle”,創(chuàng)建“Main_OB”組織塊。在第 4 步中創(chuàng)建的函數(shù)“ScalarProduct_FC”將作為標(biāo)積計(jì)算“Main_OB”中的模板:
塊接口:
3ea43cf2-0855-11ee-962d-dac502259ad0.png
3ea43cf2-0855-11ee-962d-dac502259ad0.png
程序代碼:
3ee6eb4c-0855-11ee-962d-dac502259ad0.png
3ee6eb4c-0855-11ee-962d-dac502259ad0.png

3f305b1a-0855-11ee-962d-dac502259ad0.jpg ? ? ?

創(chuàng)建函數(shù)“BlockWithVariantIn_FC”,從而可在后期調(diào)用:

3c533d9a-0855-11ee-962d-dac502259ad0.png

聲明函數(shù)“BlockWithArrayStarInVariant_FC”,并調(diào)用函數(shù)“BlockWithVariantIn_FC”:

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • 西門子
    +關(guān)注

    關(guān)注

    93

    文章

    2976

    瀏覽量

    115306
  • 存儲(chǔ)
    +關(guān)注

    關(guān)注

    13

    文章

    4172

    瀏覽量

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

    關(guān)注

    0

    文章

    609

    瀏覽量

    28288

原文標(biāo)題:西門子博途 :ARRAY 變量的結(jié)構(gòu)

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

    暢銷西門子助聽(tīng)器價(jià)格表_西門子助聽(tīng)器價(jià)格大全

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

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

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

    解析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與西門子觸摸屏通訊

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

    西門子變頻器的基本結(jié)構(gòu)

    西門子變頻器的基本結(jié)構(gòu)說(shuō)明。
    發(fā)表于 04-22 14:52 ?44次下載

    西門子PLC編程軟件下載

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

    Unity3D與西門子PLC通訊

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

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

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

    西門子: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 ?8310次閱讀
    <b class='flag-5'>西門子</b><b class='flag-5'>博</b><b class='flag-5'>途</b>:PLC<b class='flag-5'>變量</b>

    大型西門子PLC程序結(jié)構(gòu)示例

    大型的西門子PLC程序結(jié)構(gòu)示例。
    的頭像 發(fā)表于 07-06 10:34 ?1223次閱讀

    西門子1200/1500PLC單按鈕啟停控制10種設(shè)計(jì)方法

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

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

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