今回はSiemensのCPUでByte,Word,DWordをBoolの配列・構造などに分解する命令を紹介したいと思います。もちろんVariable.%X0などの使え方にもありますが、まぁ、やり方が色々がありますよ~と。
Scatter
Online helpによりますと、
The “Parse the bit sequence into individual bits” instruction parses a tag of the BYTE, WORD, DWORD or LWORD data type into individual bits and saves them in an ARRAY of BOOL, an anonymous STRUCT or a PLC data type exclusively with Boolean elements.
いわゆるBYTE, WORD, DWORD, LWORDの変数をBoolの配列・構造・PLCデータ・タイプに分解することができる、と。
Blocks
SCATTER(IN := #SourceWord,
OUT => #DestinationArray);
Interface
S7-1200 | S7-1500 | ||
IN | Byte,Word,DWord | Byte,Word,DWord,LWord | 展開したいの元データ |
OUT | Array[*] of Bool, PLC構造体*の長さは8,16,32,64しかできません。 | Array[*] of Bool, PLC構造体*の長さは8,16,32,64しかできません。 | 展開先ですね。 |
例1-WordからBool Array
結果
例2-DWordからBool Array
結果
例3-ByteからBool Array
結果
例4-Wordから構造
結果
例5-PLC data typeから構造
PLC data typesにudt1を定義します。
中身は16Bitの構造です。
プログラムはこうです。
結果
はーい、お疲れ様です。
Simple Codeはこっちらです:
https://github.com/chwAmu/Siemens_TIA/blob/master/General/ScatterExample.zap15_1