衡阳派盒市场营销有限公司

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

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

3天內不再提示

S7-1200:Deserialize(反序列化)、Serialize(序列化)

機器人及PLC自動化應用 ? 來源:機器人及PLC自動化應用 ? 作者:機器人及PLC自動化 ? 2022-04-19 11:23 ? 次閱讀

Deserialize(反序列化)、Serialize(序列化)

S7-1200將Byte數組(即Byte流)看做是序列,也就是標準數組。與之相反,其他所有格式都是非序列的,通常程序使用的都是非序列的,例如Struct,UDT,或其他格式。序列化和反序列化指令的作用就是在實現標準數組和其他格式的轉換。對于某些標準功能塊,最方便處理的是Byte數組,但處理對象往往是多樣的例如Struct、UDT或者其他格式,這時最好的方法就是先將各類對象統一序列化成Byte數組,然后執行相關功能塊,最后在執行反序列化返回初始對象。如圖1所示,為這兩個指令實現的結果。

TIA V13SP1,S7-1200 V4.0開始支持這兩個指令。

2effcaca-bf89-11ec-9e50-dac502259ad0.jpg

圖1 指令實現的功能

2f1ccd46-bf89-11ec-9e50-dac502259ad0.jpg

圖2 指令位置

2f2fb104-bf89-11ec-9e50-dac502259ad0.jpg

圖3 指令詳情

對于Deserialize(反序列化)、Serialize(序列化),目前出了2個版本的指令:

1. TIA 博途 V13SP1開始,S7-1200 V4.0、V4.1支持V1版本,以下為V1版本說明:

Deserialize:參數參見表1

表1 Deserialize參數

參數 聲明 數據類型 說明
SRC_ARRAY Input Variant或Array of Byte 標準Byte數組
POS InOut DInt 見下面注意4
Ret_Val Return Int 錯誤代碼
DEST_VARIABLE Output Variant或Struct、UDT、Array等 反序列化后的輸出變量

Serialize:參數參見表2

表2 Serialize參數

參數 聲明 數據類型 說明
SRC_VARIABLE Input Variant或Struct、UDT、Array等 待序列化的輸入變量
POS InOut DInt 見下面注意4
Ret_Val Return Int 錯誤代碼
DEST_ARRAY Output Variant或Array of Byte 標準Byte數組

注意:

(1) V1版本中標準Byte數組不能是優化數據塊的數組,可以是諸如P#M100.0 Byte 10這種看做是數組的(原因)。所以Deserialize的SRC_ARRAY與Serialize的DEST_ARRAY支持的Variant類型其實指向的就是P#指針這種,指向其他類型都不可以。

(2)同樣是Variant類型,Deserialize的DEST_VARIABLE與Serialize的SRC_VARIABLE是真正的支持Variant類型,并且是可以處理Variant類型的變量的指令之二。

(3) SRC_ARRAY/DEST_ARRAY的數組大小要大于DEST_VARIABLE/SRC_VARIABLE的空間占用

(4)DEST_VARIABLE/SRC_VARIABLE空間占用的計算規則:

  • 位變量位于另一位變量后則地址連續排布,如果位于其他變量類型的后面,則需要從整字節地址開始;

  • 字節大小的變量從整字節地址開始;

  • 字、雙字、四字的變量從偶數字節地址開始;

例子:如圖4所示,雖然總數上是5個字節,但是因為整形變量從偶數字節地址開始所以空出了一個字節,因此這種排布需要占6個字節。

2f538520-bf89-11ec-9e50-dac502259ad0.jpg

圖4 6個字節的排布

(4)POS變量

POS變量聲明是InOut,用在Byte數組的下標變量,有輸入有輸出。

Deserialize:POS的初始輸入作為待轉化的Byte數組的起始元素,指令結束后,POS的輸出=初始輸入+DEST_VARIABLE占據的字節數

也可以看做指針,初始指針指向Byte數組所在的POS位置,轉化后,指針移動了DEST_VARIABLE占據的字節數。

注意:POS>=0,當POS=0時,為Byte數組的第一個元素,所以建議Byte數組使用Array[0..x] of Byte,這樣Byte數組下標可以和POS對應上。

例子:POS實例,如圖5所示。

2f6d8c36-bf89-11ec-9e50-dac502259ad0.jpg

圖5 POS示例

①:初始POS=0,指針指向數組第0個元素

②:執行Deserialize,轉化了12個字節,POS的輸出=0+12=12,指針指向數組第12個元素

Serialize:POS的初始輸入作為轉化后的Byte數組的起始元素,指令結束后,POS的輸出=初始輸入+SRC_VARIABLE占據的字節數

也可以看做指針,初始指針指向Byte數組所在的POS位置,轉化后,指針移動了SRC_VARIABLE占據的字節數。

注意:POS>=0,當POS=0時,為Byte數組的第一個元素,所以建議Byte數組使用Array[0..x] of Byte,這樣Byte數組下標可以和POS對應上。

例子參考圖5:

①:初始POS=0,指針指向數組第0個元素

②:執行Serialize,轉化了12個字節,POS的輸出=0+12=12,指針指向數組第12個元素

2. TIA 博途 V14開始,S7-1200 V4.2支持V2版本

功能與V1版本不同的是

(1)標準Byte數組可以是優化數據塊的數組

(2)Deserialize的SRC_ARRAY支持Array[*] of Byte

使用舉例:

編寫FC,實現清零各種DB塊的變量

思路:

1. 將需要清空的DB塊內所有變量放入Struct/UDT,或者將需要清空的數據塊建立成UDT類型生成的DB,然后使用Deserialize(反序列化)指令清空。

2. 用于清空的Byte數組可以使用M區。對于S7-1211C與S7-1212C有4kB的M區,對于S7-1214C、S7-1215C、S7-1217C有8kB的M區,通常不會用到很多,這樣可以利用其中靠后不常用的區域,例如2kB來清空最多2kB的DB塊。

3. 有多個不同的結構的DB,都可以先后清空。

編寫的FC、DB及調用,如圖6-8所示。

2f986e38-bf89-11ec-9e50-dac502259ad0.jpg

圖6 FC編寫

2fb7ec5e-bf89-11ec-9e50-dac502259ad0.jpg

圖7 使用的DB24

2fd3f106-bf89-11ec-9e50-dac502259ad0.jpg

圖8 FC調用

圖8中DB37為UDT_1類型生成的DB,可以直接填寫在Variant類型的InOut_1的實參處,并且完整清空DB37。

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

審核編輯 :李倩


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

    關注

    0

    文章

    613

    瀏覽量

    28466
  • 數組
    +關注

    關注

    1

    文章

    417

    瀏覽量

    26028
  • S7-1200
    +關注

    關注

    11

    文章

    331

    瀏覽量

    18073

原文標題:S7-1200:Deserialize(反序列化)、Serialize(序列化)

文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何選擇適合的西門子S7-1200系列PLC型號?

    西門子S7-1200系列PLC作為中小型自動控制器,在研發過程中充分考慮了系統、控制器、人機界面和軟件的無縫整合和高效協調,是工業自動領域中的重要組成部分。正確選擇適合的S7-1200
    的頭像 發表于 12-09 18:24 ?874次閱讀
    如何選擇適合的西門子<b class='flag-5'>S7-1200</b>系列PLC型號?

    python訓練出的模型怎么調用

    使用pickle模塊 pickle 是Python的一個內置模塊,用于序列化反序列化Python對象結構。使用 pickle 可以方便地保存和加載模型。 import pickle # 保存模型
    的頭像 發表于 07-11 10:15 ?2270次閱讀

    西門子S7-1200 PLC的指令介紹

    西門子S7-1200 PLC,作為西門子自動控制產品中的一款緊湊型控制器,憑借其強大的功能和易用性,在工業控制領域得到了廣泛的應用。S7-1200 PLC不僅具備標準的PLC功能,還融入
    的頭像 發表于 06-18 14:52 ?3119次閱讀

    西門子S7-1200 PLC如何通過模擬量控制變頻器

    在現代工業自動領域中,變頻器因其能實現對交流電動機的平滑調速而得到了廣泛應用。西門子S7-1200 PLC(可編程邏輯控制器)作為工業控制領域的重要設備,其通過模擬量控制變頻器的方式,不僅提高了
    的頭像 發表于 06-18 09:26 ?2863次閱讀

    簡述S7-1200 PLC的硬件組成

    S7-1200 PLC(Programmable Logic Controller,可編程邏輯控制器)是西門子公司推出的一款小型、模塊的可編程控制器,廣泛應用于工業自動、過程控制、機械控制等領域
    的頭像 發表于 06-14 10:04 ?5819次閱讀

    西門子S7-1200 PLC的優缺點分析

    西門子S7-1200 PLC作為自動控制系統中的核心組件,自推出以來就受到了廣泛關注。其緊湊的模塊設計、強大的功能以及靈活的擴展性,使得它在工業自動領域占據了重要的地位。然而,任
    的頭像 發表于 06-13 11:33 ?3721次閱讀

    西門子S7-1200 PLC的基本功能

    西門子S7-1200 PLC(Programmable Logic Controller)是一款緊湊型、模塊的可編程邏輯控制器,專為滿足各種自動應用需求而設計。其強大的功能、靈活的配置以及卓越
    的頭像 發表于 06-13 11:29 ?2511次閱讀

    在嵌入式系統中集成Rust和Qt的實踐

    Rust 擁有豐富的庫生態系統,用于序列化反序列化、異步操作、解析不安全輸入、線程、靜態分析等,而 Qt 是一個 C++ 工具包,支持跨各種平臺的豐富的、基于 GUI 的應用程序,從 iOS 到嵌入式Linux。Qt 應用程序包括表示業務邏輯的 C++ 插件
    發表于 05-03 10:26 ?1889次閱讀
    在嵌入式系統中集成Rust和Qt的實踐

    ROS機器人操作系統的實現原理

    面對序列化,很多人心中可能會有很多疑問。 首先,為什么要序列化?或者更具體的說,既然對象的信息本來就是以字節的形式儲存在內存中,那為什么要多此一舉把一些字節數據轉換成另一種形式的、一維的、連續的字節數據呢?
    的頭像 發表于 04-27 02:39 ?3695次閱讀
    ROS機器人操作系統的實現原理

    蘋果將允許維修部分iPhone使用二手原裝配件,但仍禁用第三方配件

    他指出,“零件序列化” 是一個廣為人知且常帶負面含義的詞匯。許多人誤解為蘋果阻止 iPhone 使用第三方零件,然而事實并非如此。蘋果的序列化匹配旨在確認設備中的部件真實性以及實現更精準的配合度。
    的頭像 發表于 04-12 14:22 ?505次閱讀

    鴻蒙原生應用開發-ArkTS語言基礎類庫多線程并發概述

    的一系列復雜偶發的問題,同時并發度也相對較高,因此得到了廣泛的支持和使用,也是當前ArkTS語言選擇的并發模型。 由于Actor模型的內存隔離特性,所以需要進行跨線程的數據序列化傳輸。 一、數據傳輸
    發表于 03-28 14:35

    俄勒岡州禁止數碼設備使用“序列化”技術

    該法案對諸如蘋果iPhone等數字產品產生巨大影響,意即制造商無法利用“零件序列化”技術束縛消費者選擇第三方維修服務或自主修復非原產部件,同時也不能以此減少設備性能或誤導使用者。
    的頭像 發表于 03-28 10:46 ?579次閱讀

    鴻蒙原生應用開發-ArkTS語言基礎類庫多線程并發概述

    的一系列復雜偶發的問題,同時并發度也相對較高,因此得到了廣泛的支持和使用,也是當前ArkTS語言選擇的并發模型。 由于Actor模型的內存隔離特性,所以需要進行跨線程的數據序列化傳輸。 一、數據傳輸
    發表于 03-22 15:40

    S7-1200 CPU 存儲卡的應用分析

    S7-1200 CPU 使用的存儲卡為 SD 卡,存儲卡中可以存儲用戶項目文件,有如下3種功能: 作為 CPU 的裝載存儲區,用戶項目文件可以僅存儲在卡中,CPU 中沒有項目文件,離開存儲卡無法運行。
    發表于 03-15 11:11 ?1176次閱讀
    <b class='flag-5'>S7-1200</b> CPU 存儲卡的應用分析

    如何使用S7-1200 CPU的存儲卡呢?

    S7-1200 CPU 使用的存儲卡為 SD 卡,存儲卡中可以存儲用戶項目文件,有如下3種功能
    的頭像 發表于 02-26 09:53 ?2117次閱讀
    如何使用<b class='flag-5'>S7-1200</b> CPU的存儲卡呢?
    正规百家乐官网平注法口诀| 百家乐官网开户百家乐官网技巧 | 肇庆市| 蒙特卡罗网址| 京城娱乐城| 辰溪县| 探索| 百家乐官网声音不印网| 澳门百家乐官网赢技巧| 永利博百家乐官网游戏| 百家乐官网波音平台有假吗| 百家乐官网双倍派彩的娱乐城| 百家乐官网顺序| 有关百家乐官网玩家论坛| 百家乐官网的桌布| 百家乐官网棋牌游| 百家乐境外赌博| 澳门百家乐先赢后输| 百家乐博弈之赢者理论坛| 威尼斯人娱乐场官网是骗人的吗| 大发888娱乐场存款168| 易胜博开户| 百家乐官网实战技术| 百家乐官网楼梯缆| 三国百家乐官网的玩法技巧和规则| 博狗百家乐真实| 百家乐7scs娱乐平台| 罗盘24方位| 三公百家乐在线哪里可以玩| 大发888游戏加速| 高陵县| 武汉百家乐官网赌具| 百家乐算牌e世博| 太子百家乐的玩法技巧和规则| 北京太阳城二手房| 皇冠平台| 百家乐官网变牌器| 澳门百家乐心得玩博| 威尼斯人娱乐场怎么样| 渭南市| 百家乐官网api|