吴忠躺衫网络科技有限公司

  1. <tbody id="t9tnf"></tbody>
    1. 0
      • 聊天消息
      • 系統消息
      • 評論與回復
      登錄后你可以
      • 下載海量資料
      • 學習在線課程
      • 觀看技術視頻
      • 寫文章/發帖/加入社區
      會員中心
      創作中心

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

      3天內不再提示

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

      jf_61nrsJTz ? 來源:方正智芯 ? 2024-03-04 10:51 ? 次閱讀

      塊移動指令包括兩個:MOVE_BLK和MOVE_BLK_VARIANT,實際項目中都經常被用到。比如設備作業結果的存儲及顯示功能就需要用到塊移動指令。通常采用這種邏輯:首先創建一個數據塊,在其中創建一個定長數組(比如可存放100條記錄)。每次設備作業流程結束后,將流程結果的數據作為一條記錄存放到數組中。

      當需要查看某次作業結果的數據時,從數組中讀取相關的數據拷貝到臨時變量或某個特定變量中即可。這類存儲功能一般使用MOVE_BLK_VARIANT指令,因為它可以拷貝結構體數據類型(設備流程結果一般內容比較多,比如包括壓力、溫度、時間等等,多數采用結構體變量存儲),而MOVE_BLK指令只能拷貝基礎數據類型(整數、實數等)。數據的寫入及讀取要設定相應的指針變量,實際應用中經常因為指針錯誤導致讀寫錯誤。今天這篇文章我們介紹一下MOVE_BLK_VARIANT指令在使用中應注意的問題。

      b55c8a18-d823-11ee-a297-92fbcf53809c.png

      MOVE_BLK_VARIANT指令位于【指令】任務卡的【基本指令】→【移動操作】中,使用梯形圖或功能塊圖編程時可以在這個位置將其拖放到函數或函數塊中。使用SCL語言編程時,可以直接輸入"MOVE"編輯器會自動提示,如下圖所示:

      b56f1ad4-d823-11ee-a297-92fbcf53809c.png

      指令添加后的初始狀態如下圖所示:

      b576b172-d823-11ee-a297-92fbcf53809c.png

      指令參數含義如下:

      SRC:可變(Variant)數據類型。源數據,可以是數組或結構體復雜數據類型;

      COUNT:無符號雙整數(UDINT),要拷貝的記錄條數;

      SRC_INDEX:雙整數(DINT),源數據的索引

      DEST_INDEX:雙整數(DINT),目標數據的索引;

      DEST:可變(Variant)數據類型。目標數據,即源數據要拷貝到的目標區域;

      說明:

      無論數組的上、下限是如何定義,源數據和目標數據的索引都是從0開始計算的;

      如果源數據或目標參數不是數組,則其相應的索引值應為0;

      舉個例子:

      假設存儲數組data的定義如下:

      data[1..100] of typeResult
      //typeResult是用戶自定義數據類型

      假設過程結果存放在變量tmpResult中。第一次將過程結果存放到存儲區數組中的代碼如下:

      #return_value:=MOVE_BLK_VARIANT(SRC := #tmpResult,
                       COUNT := 1,
                       SRC_INDEX := 0,
                       DEST_INDEX := 0,
                       DEST => "db_storage".data);

      注意這里“DEST_INDEX”的值為0,而數據則存放在數組的第一個元素中。由于該數組的下限為1,所以存放在data[1]中。假設定義的存放數據為data[10..110],則存放第一條記錄的“DEST_INDEX”的值仍然為0,由于該數組的下限為10,因此數據存放在data[10]中。

      實際應用中需要定義寫指針變量,隨著存入次數的變化修改寫指針的值,從而存放到數組的不同位置中。為了防止數據重復寫入,存儲應在沿信號時進行。

      基于上述描述我寫了一個簡單的數據寫入代碼,變量定義如下圖所示:

      b5815dca-d823-11ee-a297-92fbcf53809c.png

      代碼如下圖所示:

      b58cef3c-d823-11ee-a297-92fbcf53809c.png

      這段代碼我已經測試過了,包括數據寫滿后的情況,如下圖所示:

      b59d58ea-d823-11ee-a297-92fbcf53809c.png

      b5a8fbe6-d823-11ee-a297-92fbcf53809c.png

      這篇文章最核心的內容就是大家在使用MOVE_BLK_VARIANT指令時要記住其SRC_INDEX和DEST_INDEX的計算是從0開始的。感興趣的小伙伴可以把上述的代碼進行完善,然后完成數據讀取的代碼。

      好吧,就先聊到這里。


      審核編輯:劉清
      聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
      • SRC
        SRC
        +關注

        關注

        0

        文章

        61

        瀏覽量

        18052
      • SCL
        SCL
        +關注

        關注

        1

        文章

        239

        瀏覽量

        17178

      原文標題:西門子SCL編程入門教程連載(22)——塊移動指令

      文章出處:【微信號:方正智芯,微信公眾號:方正智芯】歡迎添加關注!文章轉載請注明出處。

      收藏 人收藏

        評論

        相關推薦

        變頻器的基礎知識及使用注意的問題

        變頻器是利用電力半導體器件的通斷作用將工頻電源變換為另頻率的電能控制裝置。本文主要介紹了變頻器的基本知識,包括它的分類、組成、應用范圍、使用
        發表于 05-13 09:10

        音樂集成電路使用注意事項

        音樂集成電路使用注意事項音樂集成電路使用
        發表于 09-19 16:28 ?716次閱讀

        ATmega128開發應用注意的問題

        ATmega128開發應用注意的問題 ATmega128是AVR系列功能最強的單片機,具有如下主要特點:   (1)先進的RI
        發表于 10-26 09:06 ?3091次閱讀

        大型矩陣工程使用注意的問題

        大型矩陣工程使用注意的問題   大型矩陣均采用統的模塊化設計,其好處包括:更換與維修方便;輸入/輸出組合靈活
        發表于 02-09 11:47 ?339次閱讀

        大型矩陣工程使用注意的問題

        大型矩陣工程使用注意的問題 大型矩陣均采用統的模塊化設計,其好處包括:更換與維修方便;輸入/輸出組合靈活;輸入/
        發表于 02-21 13:36 ?635次閱讀

        Variant類型的變量指令說明

        SCL指令:TypeOf(操作數),操作數是FC/FB的Input/Output/InOut/Temp定義為Variant類型的參數,該語句輸出是數據類型,程序
        的頭像 發表于 03-30 15:13 ?2940次閱讀

        介紹幾個常用MOVE系列指令

        支持通過MOVE指令個變量傳送到多個變量,但是該功能不支持傳送復雜數據類型(DTL、結構、數組等)或字符串的字符。
        的頭像 發表于 07-07 10:48 ?1.2w次閱讀

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

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

        S7-1200填充塊指令(U)FILL_BLK使用說明

        (U)FILL_BLK指令是當EN條件滿足時,實現用輸入變量批量填充輸出區域的功能。
        的頭像 發表于 01-13 10:33 ?3448次閱讀

        西門子S7-1200PLC塊移動指令MOVE_BLK操作

        S7-1200PLC,l利用MOVE_BLK指令可以將個存儲區(源范圍)的數據移動到另
        的頭像 發表于 04-06 10:29 ?6780次閱讀

        SIMATIC S7-1500 PLC存儲區移動指令與交換指令簡述

        個存儲區(源區域)的數據移動到另個存儲區(目標區域)。使用輸入COUNT可以指定將移動到目標區域中的元素個數。可通過輸入IN中元素的寬度來定義元素待移動的寬度。存儲區移動指令(
        的頭像 發表于 05-08 11:14 ?4581次閱讀
        SIMATIC S7-1500 PLC存儲區移動<b class='flag-5'>指令</b>與交換<b class='flag-5'>指令</b>簡述

        博途使用STLMOVE指令

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

        移動數據的編程示例

        編程示例 在此編程示例,將移動在生產班次期間為示例收集的數據值以作進步處理。收集的數據放在 ARRAY 。通過“MOVE_BLK_VARIANT:移動塊”(
        的頭像 發表于 08-23 10:10 ?1499次閱讀
        移動數據的編程示例

        PLCMove指令可以實現什么功能?

         Move指令是PLC編程的基本指令,常用于程序
        發表于 01-10 15:13 ?1.2w次閱讀

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

        對于優化的DB塊,可使用FILL_BLK指令或創建相同的UDT結構類型的DB塊,使用MOVE指令清零DB塊數據。
        發表于 04-15 09:34 ?1343次閱讀
        部分TIA集成<b class='flag-5'>指令</b>處理的方法<b class='flag-5'>介紹</b>
        德州扑克网站| 波胆| 同花順国际娱乐城| 百家乐官网注册平台排名| V博百家乐官网的玩法技巧和规则| 加多宝百家乐官网的玩法技巧和规则| 百家乐官网真人游戏娱乐网| 百家乐高手看百家乐| 大发888官方下载网址| 凯旋门娱乐| 打百家乐官网纯打庄的方法| 百家乐mediacorp| 捕鱼棋牌游戏| 破解百家乐官网公式| 澳门档百家乐官网的玩法技巧和规则| 三公百家乐在线哪里可以玩| 大发888娱乐真钱游戏下载| 百家乐官网试玩全讯网2| 网上百家乐解码器| 大发888娱乐场下载 注册| 百家乐官网顶| 百家乐鞋业| 钻石娱乐城| 缅甸百家乐官网赌| 百家乐看大路| 贵溪市| 太阳城百家乐优惠| 电子百家乐官网技巧| 玩百家乐上高尔夫娱乐场| 宝马会百家乐官网现金网| 娱乐场百家乐大都| 百家乐娱乐平台代理佣金| 百家乐官网投注打三断| 24山安葬择日| 大发888 官方| 赌场百家乐官网是如何| 二八杠开户| 网上玩百家乐官网会出签吗| 威尼斯人娱乐备用网址| 百家乐官网技巧论坛| 百家乐保单机解码|