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

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

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

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

機(jī)器人及PLC自動(dòng)化應(yīng)用 ? 來(lái)源:機(jī)器人及PLC自動(dòng)化應(yīng)用 ? 作者:機(jī)器人及PLC自動(dòng)化 ? 2022-04-27 16:16 ? 次閱讀

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

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

TIA V13SP1,S7-1200 V4.0開(kāi)始支持這兩個(gè)指令。

7fdb7346-c582-11ec-bce3-dac502259ad0.jpg

圖1 指令實(shí)現(xiàn)的功能

7feeebe2-c582-11ec-bce3-dac502259ad0.jpg

圖2 指令位置

8007fb14-c582-11ec-bce3-dac502259ad0.jpg

圖3 指令詳情

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

1. TIA 博途 V13SP1開(kāi)始,S7-1200 V4.0、V4.1支持V1版本,以下為V1版本說(shuō)明:

Deserialize:參數(shù)參見(jiàn)表1

表1 Deserialize參數(shù)

參數(shù) 聲明 數(shù)據(jù)類型 說(shuō)明
SRC_ARRAY Input Variant或Array of Byte 標(biāo)準(zhǔn)Byte數(shù)組
POS InOut DInt 見(jiàn)下面注意4
Ret_Val Return Int 錯(cuò)誤代碼
DEST_VARIABLE Output Variant或Struct、UDT、Array等 反序列化后的輸出變量

Serialize:參數(shù)參見(jiàn)表2

表2 Serialize參數(shù)

參數(shù) 聲明 數(shù)據(jù)類型 說(shuō)明
SRC_VARIABLE Input Variant或Struct、UDT、Array等 待序列化的輸入變量
POS InOut DInt 見(jiàn)下面注意4
Ret_Val Return Int 錯(cuò)誤代碼
DEST_ARRAY Output Variant或Array of Byte 標(biāo)準(zhǔn)Byte數(shù)組

注意:

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

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

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

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

  • 位變量位于另一位變量后則地址連續(xù)排布,如果位于其他變量類型的后面,則需要從整字節(jié)地址開(kāi)始;

  • 字節(jié)大小的變量從整字節(jié)地址開(kāi)始;

  • 字、雙字、四字的變量從偶數(shù)字節(jié)地址開(kāi)始;

例子:如圖4所示,雖然總數(shù)上是5個(gè)字節(jié),但是因?yàn)檎巫兞繌呐紨?shù)字節(jié)地址開(kāi)始所以空出了一個(gè)字節(jié),因此這種排布需要占6個(gè)字節(jié)。

80218d4a-c582-11ec-bce3-dac502259ad0.jpg

圖4 6個(gè)字節(jié)的排布

(4)POS變量

POS變量聲明是InOut,用在Byte數(shù)組的下標(biāo)變量,有輸入有輸出。

Deserialize:POS的初始輸入作為待轉(zhuǎn)化的Byte數(shù)組的起始元素,指令結(jié)束后,POS的輸出=初始輸入+DEST_VARIABLE占據(jù)的字節(jié)數(shù)

也可以看做指針,初始指針指向Byte數(shù)組所在的POS位置,轉(zhuǎn)化后,指針移動(dòng)了DEST_VARIABLE占據(jù)的字節(jié)數(shù)。

注意:POS>=0,當(dāng)POS=0時(shí),為Byte數(shù)組的第一個(gè)元素,所以建議Byte數(shù)組使用Array[0..x] of Byte,這樣Byte數(shù)組下標(biāo)可以和POS對(duì)應(yīng)上。

例子:POS實(shí)例,如圖5所示。

803a4ea2-c582-11ec-bce3-dac502259ad0.jpg

圖5 POS示例

①:初始POS=0,指針指向數(shù)組第0個(gè)元素

②:執(zhí)行Deserialize,轉(zhuǎn)化了12個(gè)字節(jié),POS的輸出=0+12=12,指針指向數(shù)組第12個(gè)元素

Serialize:POS的初始輸入作為轉(zhuǎn)化后的Byte數(shù)組的起始元素,指令結(jié)束后,POS的輸出=初始輸入+SRC_VARIABLE占據(jù)的字節(jié)數(shù)

也可以看做指針,初始指針指向Byte數(shù)組所在的POS位置,轉(zhuǎn)化后,指針移動(dòng)了SRC_VARIABLE占據(jù)的字節(jié)數(shù)。

注意:POS>=0,當(dāng)POS=0時(shí),為Byte數(shù)組的第一個(gè)元素,所以建議Byte數(shù)組使用Array[0..x] of Byte,這樣Byte數(shù)組下標(biāo)可以和POS對(duì)應(yīng)上。

例子參考圖5:

①:初始POS=0,指針指向數(shù)組第0個(gè)元素

②:執(zhí)行Serialize,轉(zhuǎn)化了12個(gè)字節(jié),POS的輸出=0+12=12,指針指向數(shù)組第12個(gè)元素

2. TIA 博途 V14開(kāi)始,S7-1200 V4.2支持V2版本

功能與V1版本不同的是

(1)標(biāo)準(zhǔn)Byte數(shù)組可以是優(yōu)化數(shù)據(jù)塊的數(shù)組

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

使用舉例:

編寫(xiě)FC,實(shí)現(xiàn)清零各種DB塊的變量

思路:

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

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

3. 有多個(gè)不同的結(jié)構(gòu)的DB,都可以先后清空。

編寫(xiě)的FC、DB及調(diào)用,如圖6-8所示。

804fa464-c582-11ec-bce3-dac502259ad0.jpg

圖6 FC編寫(xiě)

806f878e-c582-11ec-bce3-dac502259ad0.jpg

圖7 使用的DB24

80865306-c582-11ec-bce3-dac502259ad0.jpg

圖8 FC調(diào)用

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

審核編輯 :李倩


聲明:本文內(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)投訴
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    613

    瀏覽量

    28388
  • 數(shù)組
    +關(guān)注

    關(guān)注

    1

    文章

    417

    瀏覽量

    25960
  • S7-1200
    +關(guān)注

    關(guān)注

    11

    文章

    331

    瀏覽量

    17991

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何選擇適合的西門(mén)子S7-1200系列PLC型號(hào)?

    西門(mén)子S7-1200系列PLC作為中小型自動(dòng)控制器,在研發(fā)過(guò)程中充分考慮了系統(tǒng)、控制器、人機(jī)界面和軟件的無(wú)縫整合和高效協(xié)調(diào),是工業(yè)自動(dòng)領(lǐng)域中的重要組成部分。正確選擇適合的S7-1200
    的頭像 發(fā)表于 12-09 18:24 ?533次閱讀
    如何選擇適合的西門(mén)子<b class='flag-5'>S7-1200</b>系列PLC型號(hào)?

    python訓(xùn)練出的模型怎么調(diào)用

    使用pickle模塊 pickle 是Python的一個(gè)內(nèi)置模塊,用于序列化反序列化Python對(duì)象結(jié)構(gòu)。使用 pickle 可以方便地保存和加載模型。 import pickle # 保存模型
    的頭像 發(fā)表于 07-11 10:15 ?1985次閱讀

    西門(mén)子S7-1200 PLC的指令介紹

    西門(mén)子S7-1200 PLC,作為西門(mén)子自動(dòng)控制產(chǎn)品中的一款緊湊型控制器,憑借其強(qiáng)大的功能和易用性,在工業(yè)控制領(lǐng)域得到了廣泛的應(yīng)用。S7-1200 PLC不僅具備標(biāo)準(zhǔn)的PLC功能,還融入
    的頭像 發(fā)表于 06-18 14:52 ?2827次閱讀

    西門(mén)子S7-1200 PLC如何通過(guò)模擬量控制變頻器

    在現(xiàn)代工業(yè)自動(dòng)領(lǐng)域中,變頻器因其能實(shí)現(xiàn)對(duì)交流電動(dòng)機(jī)的平滑調(diào)速而得到了廣泛應(yīng)用。西門(mén)子S7-1200 PLC(可編程邏輯控制器)作為工業(yè)控制領(lǐng)域的重要設(shè)備,其通過(guò)模擬量控制變頻器的方式,不僅提高了
    的頭像 發(fā)表于 06-18 09:26 ?2594次閱讀

    簡(jiǎn)述S7-1200 PLC的硬件組成

    S7-1200 PLC(Programmable Logic Controller,可編程邏輯控制器)是西門(mén)子公司推出的一款小型、模塊的可編程控制器,廣泛應(yīng)用于工業(yè)自動(dòng)、過(guò)程控制、機(jī)械控制等領(lǐng)域
    的頭像 發(fā)表于 06-14 10:04 ?5335次閱讀

    西門(mén)子S7-1200 PLC的優(yōu)缺點(diǎn)分析

    西門(mén)子S7-1200 PLC作為自動(dòng)控制系統(tǒng)中的核心組件,自推出以來(lái)就受到了廣泛關(guān)注。其緊湊的模塊設(shè)計(jì)、強(qiáng)大的功能以及靈活的擴(kuò)展性,使得它在工業(yè)自動(dòng)領(lǐng)域占據(jù)了重要的地位。然而,任
    的頭像 發(fā)表于 06-13 11:33 ?3405次閱讀

    西門(mén)子S7-1200 PLC的基本功能

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

    在嵌入式系統(tǒng)中集成Rust和Qt的實(shí)踐

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

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

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

    俄勒岡州禁止數(shù)碼設(shè)備使用“序列化”技術(shù)

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

    如何使用S7-1200 CPU的存儲(chǔ)卡呢?

    S7-1200 CPU 使用的存儲(chǔ)卡為 SD 卡,存儲(chǔ)卡中可以存儲(chǔ)用戶項(xiàng)目文件,有如下3種功能
    的頭像 發(fā)表于 02-26 09:53 ?1951次閱讀
    如何使用<b class='flag-5'>S7-1200</b> CPU的存儲(chǔ)卡呢?

    S7-1200如何實(shí)現(xiàn)內(nèi)部數(shù)據(jù)的掉電保持?

    S7-1200 PLC 可以通過(guò)多種方式實(shí)現(xiàn)內(nèi)部數(shù)據(jù)的掉電保持,以確保在斷電或重啟后數(shù)據(jù)不會(huì)丟失。
    的頭像 發(fā)表于 01-29 16:11 ?7310次閱讀

    西門(mén)子S7-1200S7-300PLC之間的區(qū)別有哪些?

    S7-1200作為新推出的緊湊型控制器,其產(chǎn)品定位在原有的SIMATIC S7-200和S7-300之間,它與S7-300的區(qū)別主要體現(xiàn)在硬件、通信、工程、存儲(chǔ)器、功能塊、計(jì)數(shù)器、定時(shí)
    的頭像 發(fā)表于 01-10 10:54 ?1076次閱讀
    西門(mén)子<b class='flag-5'>S7-1200</b>與<b class='flag-5'>S7</b>-300PLC之間的區(qū)別有哪些?

    s71200可用step7S7-1200的硬件結(jié)構(gòu)

    S7-1200主要由CPU模塊、信號(hào)板、信號(hào)模塊、通信模塊和編程軟件組成,各種模塊安裝在標(biāo)準(zhǔn)DIN導(dǎo)軌上。
    發(fā)表于 01-10 10:53 ?2640次閱讀
    <b class='flag-5'>s</b>71200可用step<b class='flag-5'>7</b>嗎 <b class='flag-5'>S7-1200</b>的硬件結(jié)構(gòu)

    西門(mén)子plc如何選型 s7-1500和s7-1200區(qū)別

    S7-1200是一種小型的PLC,適用于小型自動(dòng)應(yīng)用。它具有較小的尺寸、較低的成本和中等級(jí)別的性能。S7-1200系列提供了多種CPU型號(hào)和不同數(shù)量的I/O模塊,可擴(kuò)展性較強(qiáng)。
    發(fā)表于 01-10 10:48 ?6079次閱讀