今回はSerializeとDeserializeの機能について紹介します。Siemensがかなり構造体と配列でプログラミングをするには勧めてる?らしくて、この2つの命令を使ってたら構造体の変数を配列に一括転送(Serialize)と配列を一括に構造体に転送する(Deserialize)を実現することができます。使え道が色々がありまして、例えば他のFieldBusと通信するとき、ですね。
準備
まずFBを作ります。そして転送用の構造体データstatData1を作ります。(PLC user data typeもできますが、ちょっとめんとくさいのでStructにしました。)
そしてもうひとつを複製します。
最後は転送用の配列を作ります。ここは長さをきにせずに多めに定義します。
Serialize
Serializeは、データを配列に転送するためのFunctionです。
- SRC_VARIABLE
- すべてのデータタイプの変数
- 転送元
- POS:
- DINTです。
- 転送先の配列がデータ最初に格納するElementのIndexです。
- RET_VAL
- INT
- Functionの実行結果です。
- DEST_ARRAY
- 転送先の配列
実装
ここに、statData1のデータをbarrayの配列に転送します。posは0なのでbarrayの0からデータを格納することになります。
結果
w1は1234なのでbarrayの0,1が12と34になります。
b16は0番と2番がOnになると1+4=5、なのでByte6は5になります。
Deserialize
Deserializeは、配列データを他のTypeの変数に転送するためのFunctionです。
- SRC_VARIABLE
- 配列
- 転送元
- POS:
- DINTです。
- 転送先の配列がデータ最初に格納するElementのIndexです。
- RET_VAL
- INT
- Functionの実行結果です。
- DEST_ARRAY
- 転送先の変数
実装
ここに、データをbarrayの配列をstatData2へ転送します。posは0なのでbarrayの0からデータを転送することになります。
結果
みんなさんもおわかりのように、statData2の各変数を配列から綺麗に転送されています。
はーい、お疲れ様です。