Modbus TCP の概要
例 - 03 機能コードによるレジスタの読み取り (レジスタ 00 から開始し、2 つの値を読み取り、01 レジスタまで読み取り、終了)
クライアントは 01 02 00 00 00 06 01 03 00 00 00 02 を送信します
01 02 00 00 00 06 (固定ヘッダー)
- 01 02: クライアントから送信された検査情報に対して、サーバーはこの 2 バイトの内容を応答メッセージの 1 桁目と 2 桁目にコピーします。通常、1 桁目と 2 桁目は継続的に増加し、その後、サーバーから返されたサーバー応答情報の適時性を検証するための対応するコンテンツ
- 00 00: tcp/ipプロトコルのmodbusプロトコルを示します。
- 00 06: クライアントによって送信されたバイト数を示します。
01 03 00 00 00 02 (ユーザーデータ)
- 01: デバイスアドレスを示します
- 03: 読み出し保持レジスタのファンクションコードを示します。
- 00 00: クライアントによって読み取られるレジスタの開始アドレスを示します
- 00 02:読み出したレジスタ値の数を示します(02なのでレジスタ00hと01hの値が読み出されます)
戻り値は次の図に示されています。
サーバーの戻り値 01 02 00 00 00 07 01 03 04 04 7B 00 FF
- 01 02: サーバー応答の検証情報
- 00 00: tcp/ipプロトコルのmodbusプロトコルを示します。
- 00 07: サーバーによって送信されたバイト数を示します。
- 01: デバイスアドレスを示します
- 03:ファンクションコードを示します
- 04:後から送信するレジスタ00のバイト長を示します。
- 04 7B: レジスタ00の値を示します。
- 00 FF: レジスタ01の値を示します。
例-06 単一レジスタを書き込む関数コード (レジスタ 03 アドレスに値を書き込む)
クライアントは 01 02 00 00 00 06 01 06 00 03 00 FF を送信します
01 02 00 00 00 06 (固定ヘッダー)
- 01 02: クライアントから送信された検査情報
- 00 00: tcp/ipプロトコルのmodbusプロトコルを示します。
- 00 06: クライアントによって送信されたバイト数を示します。
01 06 00 03 00 FF (ユーザーデータ)
- 01: デバイスアドレスを示します
- 06: 単一の保持レジスタ機能コードの書き込みを示します
- 00 FF: レジスタ 03h に書き込まれる値が 0xFF であることを示します
戻り値は次の図に示されています。
サーバーは 01 02 00 00 00 06 01 06 00 03 00 FF を返します
次の 06 00 03 00 FF: は、クライアントが 06 機能コードを使用して 0xFF 値をレジスタ 03h に正常に書き込んだことを示します。
例-10 複数のレジスタを書き込むファンクションコード(レジスタ03~06のアドレスに異なる値を書き込む)
クライアントは 01 02 00 00 00 10 01 10 00 03 00 04 08 FF FF 00 0A 00 0F 00 06 を送信します
01 02 00 00 00 10 (固定ヘッダー)
- 01 02: クライアントから送信された検査情報
- 00 00: tcp/ipプロトコルのmodbusプロトコルを示します。
- 00 10: クライアントによって送信されたバイト数を示します。
01 10 00 03 00 04 08 FF FF 00 0A 00 0F 00 06 (ユーザーデータ)
- 01: デバイスアドレスを示します
- 10: 複数の保持レジスタ機能コードの書き込みを示します
- 00 03: クライアントによって書き込まれるレジスタの開始アドレスを示します。
- 00 04:書き込まれたレジスタ値の数を示します(04なのでレジスタ03h~06hの値が書き込まれます)
- 08: 後で書き込まれたバイト数を示します
- FF FF: レジスタ03hに書き込まれた値を示します。
- 00 0A: レジスタ04hに書き込まれた値を示します。
- 00 0F: レジスタ05hに書き込まれた値を示します。
- 00 06: レジスタ06hに書き込まれた値を示します。
戻り値は次の図に示されています。
サーバーは 01 02 00 00 00 06 01 10 00 03 00 04 を返します
次の 10 00 03 00 04: クライアントがファンクション コード 10 を使用してレジスタ 03h ~ 06h に値を正常に書き込んだことを示します。