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

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

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

介紹幾個(gè)常用MOVE系列指令

機(jī)器人及PLC自動(dòng)化應(yīng)用 ? 來源:機(jī)器人及PLC自動(dòng)化應(yīng)用 ? 作者:機(jī)器人及PLC自動(dòng)化 ? 2022-07-07 10:48 ? 次閱讀

MOVE 系列指令

本文檔將介紹幾個(gè)常用 MOVE 系列指令,鏈接如下:

MOVE

(U)MOVE_BLK

MOVE_BLK_VARIANT

MOVE

LAD為MOVE指令,SCL使用":="表達(dá)式可以完成MOVE的功能(“:=”還可以有其他功能)。

MOVE指令是當(dāng)EN條件滿足時(shí),實(shí)現(xiàn)相同數(shù)據(jù)類型(不包括位、字符串、Variant類型)的變量間的傳送。

459a7102-fd34-11ec-ba43-dac502259ad0.jpg

圖1 指令位置

注意:

(1)LAD傳送字符串需要使用S_MOVE指令(SCL使用“:=”),但是傳送字符串中的字符需要使用MOVE指令。

(2)支持通過一個(gè)MOVE指令將一個(gè)變量傳送到多個(gè)變量,但是該功能不支持傳送復(fù)雜數(shù)據(jù)類型(DTL、結(jié)構(gòu)、數(shù)組等)或字符串中的字符。

(3)傳送數(shù)組時(shí),要求元素?cái)?shù)據(jù)類型以及元素個(gè)數(shù)必須完全一樣,數(shù)組限值可以不同,例如Array[0..1] of Byte可以MOVE到Array[1..2] of Byte。

(4)如果MOVE兩邊是基本數(shù)據(jù)類型,則可以在滿足以下兼容條件時(shí)傳送,參見表1。

表1 MOVE的傳送條件

傳送源 (IN) 傳送目標(biāo) (OUT1)
進(jìn)行 IEC 檢查 不進(jìn)行 IEC 檢查
BYTE BYTE、WORD、DWORD BYTE、WORD、DWORD、SINT、USINT、INT、UINT、DINT、UDINT、TIME、DATE、TOD、CHAR
WORD WORD、DWORD BYTE、WORD、DWORD、SINT、USINT、INT、UINT、DINT、UDINT、TIME、DATE、TOD、CHAR
DWORD DWORD BYTE、WORD、DWORD、SINT、USINT、INT、UINT、DINT、UDINT、REAL、TIME、DATE、TOD、CHAR
SINT SINT BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, TIME, DATE, TOD
USINT USINT, UINT, UDINT BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, TIME, DATE, TOD
INT INT BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, TIME, DATE, TOD
UINT USINT, UINT BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, TIME, DATE, TOD
DINT DINT BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, TIME, DATE, TOD
UDINT UDINT BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, TIME, DATE, TOD
REAL REAL DWORD, REAL
LREAL LREAL LREAL
TIME TIME BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, TIME
DATE DATE BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, DATE
TOD TOD BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, TOD
CHAR CHAR, String中的字符 BYTE, WORD, DWORD,CHAR,String中的字符
WCHAR WCHAR, WString中的字符 BYTE,WORD,DWORD,CHAR,WCHAR,WString中的字符
String中的字符 CHAR, String中的字符 CHAR, String中的字符
WString中的字符 WCHAR, WString中的字符 WCHAR, WString中的字符

注意:
1.如果輸入 IN 數(shù)據(jù)類型的位長度超出輸出 OUT 數(shù)據(jù)類型的位長度,則源值的高位會(huì)丟失。如果輸入 IN 數(shù)據(jù)類型的位長度低于輸出 OUT 數(shù)據(jù)類型的位長度,則目標(biāo)值的高位會(huì)被改寫為 0。
2.REAL傳送至DWORD時(shí)是按位傳送,不是取整。如果需要取整,可以使用ROUND、CONVERT_REAL_TO_DINT等指令。
3.(不)進(jìn)行IEC檢查是指,在MOVE指令所在的OB/FC/FB屬性中的"IEC檢查"選項(xiàng),僅在此塊中生效。默認(rèn)的"IEC檢查"不激活。設(shè)置如圖2所示。

45afcdea-fd34-11ec-ba43-dac502259ad0.jpg

圖2 IEC檢查的設(shè)置

MOVE的使用

45ce7100-fd34-11ec-ba43-dac502259ad0.jpg

圖3 DB25

1. 單個(gè)基本類型變量的傳送

45f7caaa-fd34-11ec-ba43-dac502259ad0.jpg

圖4 單個(gè)基本類型變量的傳送

2. 數(shù)組的傳送

46194a2c-fd34-11ec-ba43-dac502259ad0.jpg

圖5 數(shù)組的傳送

3. UDT的傳送

46363092-fd34-11ec-ba43-dac502259ad0.jpg

圖6 UDT的傳送

4. String中的字符的傳送

465498c0-fd34-11ec-ba43-dac502259ad0.jpg

圖7 String中的字符的傳送

5. DTL中的變量的傳送

46650d86-fd34-11ec-ba43-dac502259ad0.jpg

圖8 DTL中的變量的傳送

6. DB整體之間的傳送

條件:DB塊為非優(yōu)化塊,或者將優(yōu)化DB塊的存儲(chǔ)器預(yù)留區(qū)域與預(yù)留可保持性存儲(chǔ)器設(shè)置為0字節(jié)(如圖9所示),并且兩個(gè)DB塊結(jié)構(gòu)完全相同。

467e1e98-fd34-11ec-ba43-dac502259ad0.jpg

1. IN和OUT的DB必須同時(shí)為優(yōu)化DB或者非優(yōu)化DB。

2. 不允許同時(shí)輸出到多個(gè)DB,即圖4的形式。

46962510-fd34-11ec-ba43-dac502259ad0.jpg

圖9 存儲(chǔ)器預(yù)留區(qū)域設(shè)置

46af5a80-fd34-11ec-ba43-dac502259ad0.jpg

圖10 DB整體傳送

46dc4252-fd34-11ec-ba43-dac502259ad0.jpg

圖11 DB整體傳送程序

(U)MOVE_BLK

LAD和SCL均為(U)MOVE_BLK指令。

(U)MOVE_BLK指令是當(dāng)EN條件滿足時(shí),實(shí)現(xiàn)相同數(shù)組之間部分元素的傳送。MOVE_BLK和UMOVE_BLK的區(qū)別是UMOVE_BLK不會(huì)被中斷打斷,并且最多16kB的數(shù)據(jù)量。

46f3f834-fd34-11ec-ba43-dac502259ad0.jpg

圖12 程序位置

47272196-fd34-11ec-ba43-dac502259ad0.jpg

圖13 指令詳情

注意:

1. IN和OUT必須是數(shù)組的一個(gè)元素,例如"DB26".Static_1[0],不能是常數(shù)、常量、普通變量,也不能是數(shù)組名。

2. IN和OUT類型必須完全相同,并且必須是基本數(shù)據(jù)類型,不能是UDT、Struct等的數(shù)組。

3. IN是源數(shù)組中傳送的起始元素,OUT是目的數(shù)組中接收的起始元素。

4. COUNT是傳輸個(gè)數(shù),可以是正整數(shù)的常數(shù),如果是變量,數(shù)據(jù)類型支持USINT、UINT、UDINT。

5. 如果目的數(shù)組接收區(qū)域小于源數(shù)組的傳送區(qū)域,則只傳送目的數(shù)組可接收的區(qū)域的數(shù)據(jù)。如果激活指令的ENO功能,則ENO=False。

(U)MOVE_BLK的使用

實(shí)現(xiàn)功能:將"DB26".Static_1[0]開始的4個(gè)元素傳送至"DB26".Static_2[4]開始的數(shù)組中。

47390136-fd34-11ec-ba43-dac502259ad0.jpg

圖14 程序使用

47568ea4-fd34-11ec-ba43-dac502259ad0.jpg

圖15 運(yùn)行結(jié)果

MOVE_BLK_VARIANT

LAD和SCL均為MOVE_BLK_VARIANT指令。

MOVE_BLK_VARIANT的基本功能是數(shù)組之間部分元素的傳送,并且是可以處理Variant類型的變量的指令之一,適合處理Variant指向的變長數(shù)組。

從TIA V13SP1,S7-1200 V4.0開始支持該指令。

4770e006-fd34-11ec-ba43-dac502259ad0.jpg

圖16 指令位置

477d9814-fd34-11ec-ba43-dac502259ad0.jpg

圖17 指令詳情

表2 參數(shù)說明

參數(shù) 聲明 數(shù)據(jù)類型
SRC Input Variant、Array、其他(不包括Bool,Array of Bool)
COUNT Input UDINT
SRC_INDEX Input DINT
DEST_INDEX Input DINT
DEST Output Variant、Array、其他(不包括Bool,Array of Bool)
RET_VAL Return INT

MOVE_BLK_VARIANT指令通常用于將源數(shù)組SRC的部分元素傳送至目的數(shù)組DEST的部分元素中,SRC與DEST數(shù)組元素必須完全相同。COUNT是傳送的元素個(gè)數(shù),SRC_INDEX是待傳送的源數(shù)組的起始編號(hào),DEST_INDEX是目的數(shù)組接收的起始編號(hào),此處用編號(hào)不是下標(biāo)的意思是,SRC_INDEX和DEST_INDEX都從0開始,對應(yīng)SRC和DEST的第一個(gè)元素。

同樣是傳送部分?jǐn)?shù)組元素的指令,MOVE_BLK_VARIANT相對MOVE_BLK有以下優(yōu)點(diǎn):

1. SRC和DEST不可以是Bool數(shù)組,但可以是Struct、UDT等復(fù)雜數(shù)據(jù)類型數(shù)組

2. SRC和DEST都可以是普通的單個(gè)變量,例如SRC為一個(gè)INT變量,DEST作為一個(gè)INT數(shù)組,此時(shí)需要設(shè)置COUNT=1,SRC_INDEX=0,然后根據(jù)DEST_INDEX的值,傳入DEST的指定位置。

3. SRC和DEST填寫的通常是數(shù)組名,也可以是普通的單個(gè)變量,或者數(shù)組的一個(gè)元素,后兩種情況都需要像(2)一樣處理。

4. SRC和DEST可以是參數(shù)類型Variant的變量,也就是可以直接填寫P#指針的格式,指令將會(huì)把P#指針看做數(shù)組處理(原因)。即使是SRC和DEST都指向Variant類型,其指向的形參的數(shù)組元素?cái)?shù)據(jù)類型也需要相同,所以通常需要在使用指令之前用EQ_ElemType檢查其中元素的數(shù)據(jù)類型。

使用MOVE_BLK_VARIANT指令的注意:

(1)COUNT>=1,否則報(bào)錯(cuò)并且不傳送任何數(shù)據(jù)。

(2) COUNT+SRC_INDEX與COUNT+DEST_INDEX決定了SRC與DEST數(shù)組元素編號(hào)上限,超出范圍將報(bào)錯(cuò)并且不傳送任何數(shù)據(jù)。

使用舉例:

1. 實(shí)現(xiàn)功能將結(jié)構(gòu)完全一樣的M區(qū)數(shù)據(jù)送入DB區(qū)

47918dc4-fd34-11ec-ba43-dac502259ad0.jpg

圖18 運(yùn)行結(jié)果

需要注意的是將DB塊改為非優(yōu)化,M區(qū)和DB區(qū)均是16Byte,SRC和DEST可以是P#BYTE 16,P#WORD 8,P#DWORD 4等都可以,但是要注意COUNT和元素?cái)?shù)相同(P#BYTE 16,COUNT=16;P#WORD 8,COUNT=8;P#DWORD 4,COUNT=4),SRC和DEST結(jié)構(gòu)一致即可。

47af11a0-fd34-11ec-ba43-dac502259ad0.jpg

圖19 程序詳情

2. 實(shí)現(xiàn)變長數(shù)組的處理

功能:FC15處理MBV類型變量,該變量作為InOut,F(xiàn)C14中輸入MBV類型變量的變長數(shù)組,在其內(nèi)部判斷數(shù)組大小,然后數(shù)組元素逐個(gè)執(zhí)行FC15指令,最后送回變長數(shù)組。

47c4bfe6-fd34-11ec-ba43-dac502259ad0.jpg

圖20 指令詳情

------------------------END-----------------------

審核編輯 :李倩

聲明:本文內(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)注

    0

    文章

    609

    瀏覽量

    28289
  • move
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

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

    關(guān)注

    1

    文章

    239

    瀏覽量

    17011

原文標(biāo)題:博途: MOVE 系列指令

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

收藏 人收藏

    評論

    相關(guān)推薦

    VR的常用comand指令介紹

    VR 中的常用指令設(shè)置及介紹
    發(fā)表于 02-13 10:08

    常用ARM指令的功能介紹

    就做個(gè)筆記寫下自己復(fù)習(xí)的東西,當(dāng)然里面很多資料都是網(wǎng)上參考的,不過自己動(dòng)手輸入的,主要是加深印象,雖然這種方法不一定管用呵呵常用ARM指令的功能介紹1.匯編偽指令(1)ENTRYENT
    發(fā)表于 05-13 07:45

    幾個(gè)常用電路

    本文將介紹幾個(gè)常用電路,詳情請看下文。
    的頭像 發(fā)表于 03-04 15:02 ?1.6w次閱讀
    <b class='flag-5'>幾個(gè)</b><b class='flag-5'>常用</b>電路

    GSM模塊常用AT指令詳解

    本文首先介紹了AT指令的概念和AT指令的用法,其次闡述了AT的命令格式,最后對GSM模塊常用AT指令進(jìn)行了匯總。
    的頭像 發(fā)表于 05-15 11:16 ?2.6w次閱讀
    GSM模塊<b class='flag-5'>常用</b>AT<b class='flag-5'>指令</b>詳解

    西門子S7-1200PLC移動(dòng)操作移動(dòng)值指令MOVE

    在S7-1200PLC中,常用MOVE指令進(jìn)行對存儲(chǔ)器進(jìn)行賦值或是把一個(gè)存儲(chǔ)器的數(shù)據(jù)復(fù)制到另外一個(gè)存儲(chǔ)器中。
    的頭像 發(fā)表于 04-06 09:25 ?5836次閱讀

    三菱FX系列PLC常用指令大全來了

    想學(xué)好三菱FX 系列的plc,需要掌握哪些常用指令呢?作為一名PLC發(fā)燒友,這些指令你都掌握了嗎?
    的頭像 發(fā)表于 04-10 11:38 ?7798次閱讀

    西門子PLC程序中常用幾個(gè)指令介紹

    兩個(gè)或兩個(gè)以上的接點(diǎn)串聯(lián)連接的電路叫串聯(lián)電路塊。串聯(lián)電路塊并聯(lián)連接時(shí),分支開始用LD、LDN指令,分支結(jié)束用OLD指令。OLD指令與后述的ALD指令均為無目標(biāo)元件
    的頭像 發(fā)表于 04-13 16:52 ?5603次閱讀

    SIMATIC S7-1500 PLC移動(dòng)值指令(MOVE)簡述

    當(dāng)允許輸入端的狀態(tài)為“1”時(shí),啟動(dòng)此指令,將IN端的數(shù)值輸送到OUT端的目的地地址中,IN和OUTx(x為1、2、3)有相同的信號(hào)狀態(tài),移動(dòng)值的指令MOVE)及參數(shù)見下圖1。
    的頭像 發(fā)表于 05-08 09:33 ?1.4w次閱讀
    SIMATIC S7-1500 PLC移動(dòng)值<b class='flag-5'>指令</b>(<b class='flag-5'>MOVE</b>)簡述

    博途使用STL中的MOVE指令

    現(xiàn)在,在 S7-1500 CPU 上可使用 STL 中的 MOVE 指令進(jìn)行編程。
    的頭像 發(fā)表于 06-06 11:10 ?6008次閱讀
    博途使用STL中的<b class='flag-5'>MOVE</b><b class='flag-5'>指令</b>

    工業(yè)機(jī)器人ABB編程常用指令

    在之前的文章中,相信你已經(jīng)對ABB機(jī)器人的MOVE指令以及常用專屬名詞有一定的了解了,而從這篇文章開始,繼續(xù)學(xué)習(xí)新的 編程常用指令 。
    的頭像 發(fā)表于 10-19 10:40 ?1952次閱讀
    工業(yè)機(jī)器人ABB編程<b class='flag-5'>常用</b><b class='flag-5'>指令</b>

    PLC中Move指令可以實(shí)現(xiàn)什么功能?

     Move指令是PLC編程中的基本指令之一,常用于在程序中對數(shù)據(jù)進(jìn)行移動(dòng)和傳輸。在使用Move指令
    發(fā)表于 01-10 15:13 ?9525次閱讀

    介紹一下MOVE_BLK_VARIANT指令在使用中應(yīng)注意的問題

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

    部分TIA集成指令處理的方法介紹

    對于優(yōu)化的DB塊,可使用FILL_BLK指令或創(chuàng)建相同的UDT結(jié)構(gòu)類型的DB塊,使用MOVE指令清零DB塊數(shù)據(jù)。
    發(fā)表于 04-15 09:34 ?953次閱讀
    部分TIA集成<b class='flag-5'>指令</b>處理的方法<b class='flag-5'>介紹</b>

    PLC的常用指令及其應(yīng)用

    在工業(yè)自動(dòng)化領(lǐng)域中,可編程邏輯控制器(PLC)憑借其高度的可靠性和靈活性,成為控制各種機(jī)械設(shè)備和工業(yè)過程的核心設(shè)備。PLC通過執(zhí)行一系列的控制指令,實(shí)現(xiàn)對生產(chǎn)線的自動(dòng)化控制和優(yōu)化。本文將詳細(xì)介紹PLC
    的頭像 發(fā)表于 06-15 17:36 ?1854次閱讀

    abb機(jī)器人常用指令大全

    ABB機(jī)器人是一種廣泛應(yīng)用于工業(yè)自動(dòng)化領(lǐng)域的智能設(shè)備,其指令系統(tǒng)豐富多樣,能夠滿足各種復(fù)雜場景的需求。 基本指令 1.1 Move指令 Move
    的頭像 發(fā)表于 06-17 09:35 ?5155次閱讀