Modbus TCP による通信

Modbus は、産業用オートメーションシステム用に Modicon によって開発されたシリアルクライアント/サーバプロトコルです。最も古い産業用標準手法の 1 つで、産業用プロトコルとモニタリングデバイスの間でディスクリートおよびアナログ I/O 情報とレジスタデータを送信する場合に使用します。

In-Sight には、複数層の Modbus TCP (Ethernet 上で動作する TCP インタフェースを含む Modbus プロトコル) が実装されており、使用可能な実装は、In-Sight ビジョンシステム/センサで実行されているファームウェアのバージョンに応じてさまざまです。各実装の詳細な情報については、以下の表を参照してください。

サポートされるファームウェアバージョン

:   モデル一覧およびサポートされているファームウェアバージョンについては、ファームウェアのバージョンをご参照ください。
Modbus TCP の実装 ファームウェアバージョン
4.x.x 以前
ファームウェアバージョン
5.1.0 ~ 5.2.x
ファームウェアバージョン5.3.0 以降

Modbus TCP サーバ (5.3.0 以降)- スプレッドシートおよび EasyBuilder1

関連項目

- [ネットワークの設定] および [Modbus TCP サーバの設定] ダイアログ

- Modbus TCP ファクトリインタフェース (5.3.0 以降)

- Modbus 通信で使用するための In-Sight ビジョンシステムの設定 (5.3.0 以降)

 

サポートされていません サポートされていません サポート

TCPDevice (クライアントおよびサーバ) - スプレッドシートのみ

関連項目

- TCPDevice 関数

- Anybus X-gateway の関連項目 (PROFIBUS ネットワーク上の Siemens PLC との通信)

サポート サポート サポート

ダイレクトセルアクセス

関連項目

- Modbus Reference Number の例

サポート サポートされていません サポートされていません

入力バッファと出力バッファを使用する ReadModbusBuffer 関数と WriteModbusBuffer 関数 (サーバのみ) - スプレッドシートおよび EasyBuilder1

関連項目

[ネットワークの設定] ダイアログ

- ReadModbusBuffer 関数と WriteModbusBuffer 関数

サポート サポートされていません ReadUserDataBuffer 関数と WriteResultsBuffer 関数で置き換え
1 詳細については、「EasyBuilder のヘルプ」を参照してください。

Modbus TCP のコマンド (5.3.0 以降)

:  この Modbus TCP 実装の詳細については、「Modbus TCP - In-Sight ファームウェアバージョン 5.3.0 以降」のトピックを参照してください。
コード 説明 アドレス領域
0x01

Read Coils

この関数コードは、リモートデバイスで 1 ~ 2000 の連続したコイルの状態を読み取るために使用されます。このコマンドは、ビジョンシステム/センサからデータを読み取るために PLC によって使用されます。

コイル
0x05

Write Single Coil

この関数コードは、リモートデバイスで単一出力コイルを ON または OFF のいずれかに書き込むために使用されます。このコマンドは、ビジョンシステム/センサにデータを書き込むために PLC によって使用されます。

コイル
0x0F

Write Multiple Coils

この関数コードは、リモートデバイスで 1 ~ 1968 の一連のコイル ON または OFF のいずれかに書き込むために使用されます。このコマンドは、ビジョンシステム/センサにデータを書き込むために PLC によって使用されます。

コイル
0x02

Read Discrete Inputs

この関数は、リモートデバイスで 1 ~ 2000 の連続したディスクリート入力の状態を読み取るために使用されます。このコマンドは、ビジョンシステム/カメラからデータを読み取るために PLC によって使用されます。

ディスクリート入力
0x03

Read Holding Registers

この関数は、リモートデバイスで 1 ~ 125 の保持レジスタの連続したブロックの内容を読み取るために使用されます。このコマンドは、ビジョンシステム/センサからデータを読み取るために PLC によって使用されます。

保持レジスタ
0x10

Write Multiple Registers

この関数コードは、リモートデバイスで 1 ~ 123 の連続したレジスタを書き込むために使用されます。このコマンドは、ビジョンシステム/センサにデータを書き込むために PLC によって使用されます。

保持レジスタ
0x04

Read Input Registers

この関数コードは、リモートデバイスで 1 ~ 125 の連続した入力レジスタを読み取るために使用されます。このコマンドは、ビジョンシステム/センサからデータを読み取るために PLC によって使用されます。

入力レジスタ

TCP/IP Modbus のコマンド (4.x.x)

以下の Modbus コマンドがサポートされています。

Read Multiple Registers (Modbus 関数コード 03)

In-Sight スプレッドシートの複数のセルから値を読み取ります。値は、16 ビット整数として返されます。セルのいずれかに整数以外の値が格納されていると、エラーコード 02 (ILLEGAL DATA ADDRESS) が返されます。

:  WriteModbusBuffer 関数を使用する場合、In-Sight ビジョンシステムから読み取りを行うリモートクライアントは、レジスタ 30010 ~ 30137 を使用する必要があります。

Reference Number

 

読み取るセルを定義します。Modbus Reference Number の上位 6 ビット (ビット 15 ~ 10) によってセルの列 (A ~ Z) が定義され、下位 10 ビット (ビット 9 ~ 0) によってセルの行 (0 ~ 399) が定義されます。

Modbus Reference Number の例

Word Count 読み取られるセルの数を定義します。セルが複数ある場合、返される値は Reference Number によって定義されるセルから始まり、列ごとに増分されます。メッセージにより、現在行にある残りの列よりも多くの値が要求されると、サーバは開始行の下の最初のセルから値の読み取りを続けます。

閉じたRead Multiple Registers の例

: Read Multiple Registers - In-Sight スプレッドシートの 3 つのセル (G273 ~ G275) からデータを読み取ります。

Modbus 要求を受け取ると、In-Sight はセル G273 ~ G275 に格納されているデータを返します。

バイト 値 (10 進数) 説明
0 0 Modbus ヘッダ
1 0
2 0
3 0
4 0
5 6 後続バイト
6 0 ユニット ID
7 3 Modbus 関数コード (Read Multiple Registers の場合は 03)
8 25 Modbus Reference Number
(In-Sight スプレッドシートのセル参照)
9 17
10 0 セル数 (開始セルを含む)
11 3

Write Multiple Registers (Modbus 関数コード 16)

EditInt 関数が格納されている In-Sight スプレッドシートのセルにデータを書き込みます。セルのいずれかに EditInt 関数が格納されていないと、エラーコード 02 (ILLEGAL DATA ADDRESS) が返されます。

:  ReadModbusBuffer 関数を使用する場合、In-Sight ビジョンシステムへの書き込みを行うリモートクライアントは、レジスタ 50000 ~ 50127 を使用する必要があります。

Reference Number

 

書き込むセルを定義します。Modbus Reference Number の最初の 6 ビット (ビット 15 ~ 10) によってセルの列 (A ~ Z) が定義され、最後の 10 ビット (ビット 9 ~ 0) によってセルの行 (0 ~ 399) が定義されます。

Modbus Reference Number の例

Word Count スプレッドシートに書き込まれるセルの数を定義します。セルが複数ある場合、書き込まれる値は Reference Number によって定義されるセルから始まり、列ごとに増分されます。メッセージにより、現在行にある残りの列よりも多くの値が書き込まれると、サーバは開始行の下の最初のセルへの値の書き込みを続けます。

閉じたWrite Multiple Registers の例

: Write Multiple Registers - In-Sight スプレッドシートのセル E9 への書き込み。

スプレッドシートで、データを受け入れるセル E9 に EditInt 関数を作成します。Modbus コマンドが送信されると、セル E9 には値 65 が格納されます。

バイト 値 (10 進数) 説明
0 0 Modbus ヘッダ
1 0
2 0
3 0
4 0
5 9 後続バイト
6 0 ユニット ID
7 16 Modbus 関数コード (Write Multiple Registers の場合は 16)
8 16 Modbus Reference Number
(In-Sight スプレッドシートのセル参照)
9 9
10 0 セル数 (開始セルを含む)
11 1
12 2 バイト数
13 00 データ
14 65

Write Coil (Modbus 関数コード 05)

In-Sight スプレッドシートでイベントを開始します。Coil 0 ~ 7 に 0 以外の値を書き込むと、スプレッドシートで Soft Event 0 ~ 7 がトリガされます。Coil 8 に 0 以外の値を書き込むと、画像取り込みがトリガされます。Coil 番号が有効範囲 (0 ~ 8) 内に入っていないと、エラーコード 02 (ILLEGAL DATA ADDRESS) が返されます。

閉じたWrite Coil の例

: Write Coil - In-Sight での画像取り込みのトリガ。

バイト 値 (10 進数) 説明
0 0 Modbus ヘッダ
1 0
2 0
3 0
4 0
5 6 後続バイト
6 0 ユニット ID
7 5 Modbus 関数コード (Write Coil の場合は 05)
8 0 Coil 番号*
9 8
10 255 ON。リモートデバイス出力は ON (255) と OFF (0) のいずれかです。
11 0 常時 0

* Coil はバイト 8 および 9 を使用して示されます。

Coil 番号 バイト 8 の値
(10 進数)
バイト 9 の値
(10 進数)
説明
0 0 0 ソフトトリガ 0 を指定
1 0 1 ソフトトリガ 1 を指定
2 0 2 ソフトトリガ 2 を指定
3 0 3 ソフトトリガ 3 を指定
4 0 4 ソフトトリガ 4 を指定
5 0 5 ソフトトリガ 5 を指定
6   6 ソフトトリガ 6 を指定
7 0 7 ソフトトリガ 7 を指定
8 0 8 In-Sight カメラで新しい画像を撮影します。新しい画像が取り込まれると、In-Sight は毎回、スプレッドシートを評価して値を更新します。画像を取り込み、スプレッドシートを更新します。このオプションでは、AcquireImage 関数の [トリガ] 引数を、[外部] または [手動] に設定する必要があります。