バイナリ関数
バイナリ関数は、TCPDevice 関数で使用するためにバイナリデータパケットをフォーマットします。これらの関数を使用して、Modbus TCP パケットを Modbus TCP サーバデバイスに送信できます。これらの関数を使用して Modbus パケットを送信している場合は、TCPDevice 関数の [パケットタイプ] パラメータを Modbus に設定する必要があります。
関数 | 説明 | ||||||||||||||||||||||||
BGetDouble(Binary, Offset, [Byte/Word Order]) |
バイナリ 構造体中の倍精度浮動小数点の値を単精度の結果として返します。
|
||||||||||||||||||||||||
BGetFloat(Binary, Offset, [Byte/Word Order]) |
バイナリ構造体中の浮動小数点の値を返します。
|
||||||||||||||||||||||||
BGetInt(Binary, Offset, Bytes, [Sign], [Byte/Word Order]) |
バイナリ構造体中の整数値を返します。
|
||||||||||||||||||||||||
BGetString(Binary, Offset, Bytes, [Byte Swap]) |
バイナリ構造体中の文字列を返します。
|
||||||||||||||||||||||||
|
バイナリ構造体の長さを返します。バイナリは、TCPDevice 関数または QueryDevice 関数によって (それぞれ) 返される、デバイス構造体または Query 構造体を参照する必要があります。 | ||||||||||||||||||||||||
BStringf(Byte/Word Order, Format-String, Value1, [Value2, ...]) |
指定したフォーマットを使用して作成されたバイナリ文字列を含むバイナリ構造体を返します。
|
バイナリ関数例
この例では、SYSTEM0、SYSTEM1 と命名された 2 つの In-Sight システムを使用します。SYSTEM0 は Modbus クライアントで、SYSTEM1 は Modbus サーバです。
SYSTEM0 のスプレッドシートには次の関数が含まれています。
A2=TCPDevice("SYSTEM1",502,0,4,1000)
B2=QueryDevice($A$0,A2,0,0,0,0,0,6,0,3,20,4,0,1)
A3=BLen(B2)
A4=BGetInt(B2,9,2)
A5=BGetString(B2,10,1)
SYSTEM1 には次の値が含まれています。
F4=65
SYSTEM0 のスプレッドシートが実行されるときに、セル A2 の TCPDevice 関数は、SYSTEM1 と TCP/IP Modbus 接続を確立します。セル B2 の QueryDevice 関数は、SYSTEM1 に Modbus Read Multiple Registers コマンドを送り、セル F4 に含まれているデータが SYSTEM0 によって (バイナリフォーマットで) インポートされることを指定します。SYSTEM0 のスプレッドシートに返す結果は、次のようになります。
A3=11 (SYSTEM1 の Modbus サーバからインポートされたバイナリデータのパケット長)。
A4=65 (SYSTEM1 のセル F4 に含まれた整数値)。
A5="A" (文字列として変換されたセル F4 の整数値)。
前述の例で、SYSTEM0 によって送受信された実際のデータパケットは次のようになります。
コマンドパケット |
|
応答パケット |
||
---|---|---|---|---|
00 |
|
|
00 |
|
00 |
|
|
00 |
|
00 |
|
|
00 |
|
00 |
|
|
00 |
|
00 |
|
|
00 |
|
06 |
長さ (6 バイト) |
|
05 |
長さ (5 バイト) |
00 |
|
|
00 |
|
03 |
|
03 |
||
20 04 |
Ref# (セルアドレス = F4) |
|
02 |
バイト数 (2 バイト) |
00 01 |
ワード数 (0001) |
|
00 65 |
結果値 (00 65 十進法。Modbus にはビッグエンディアンを使用) |