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 (クライアントおよびサーバ) - スプレッドシートのみ 関連項目 - Anybus X-gateway の関連項目 (PROFIBUS ネットワーク上の Siemens PLC との通信) |
サポート | サポート | サポート |
ダイレクトセルアクセス 関連項目 |
サポート | サポートされていません | サポートされていません |
入力バッファと出力バッファを使用する ReadModbusBuffer 関数と WriteModbusBuffer 関数 (サーバのみ) - スプレッドシートおよび EasyBuilder1 関連項目 - ReadModbusBuffer 関数と WriteModbusBuffer 関数 |
サポート | サポートされていません | ReadUserDataBuffer 関数と WriteResultsBuffer 関数で置き換え |
1 詳細については、「EasyBuilder のヘルプ」を参照してください。 |
Modbus TCP のコマンド (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) が返されます。
Reference Number
|
読み取るセルを定義します。Modbus Reference Number の上位 6 ビット (ビット 15 ~ 10) によってセルの列 (A ~ Z) が定義され、下位 10 ビット (ビット 9 ~ 0) によってセルの行 (0 ~ 399) が定義されます。 |
Word Count | 読み取られるセルの数を定義します。セルが複数ある場合、返される値は Reference Number によって定義されるセルから始まり、列ごとに増分されます。メッセージにより、現在行にある残りの列よりも多くの値が要求されると、サーバは開始行の下の最初のセルから値の読み取りを続けます。 |
Write Multiple Registers (Modbus 関数コード 16)
EditInt 関数が格納されている In-Sight スプレッドシートのセルにデータを書き込みます。セルのいずれかに EditInt 関数が格納されていないと、エラーコード 02 (ILLEGAL DATA ADDRESS) が返されます。
Reference Number
|
書き込むセルを定義します。Modbus Reference Number の最初の 6 ビット (ビット 15 ~ 10) によってセルの列 (A ~ Z) が定義され、最後の 10 ビット (ビット 9 ~ 0) によってセルの行 (0 ~ 399) が定義されます。 |
Word Count | スプレッドシートに書き込まれるセルの数を定義します。セルが複数ある場合、書き込まれる値は Reference Number によって定義されるセルから始まり、列ごとに増分されます。メッセージにより、現在行にある残りの列よりも多くの値が書き込まれると、サーバは開始行の下の最初のセルへの値の書き込みを続けます。 |
In-Sight スプレッドシートでイベントを開始します。Coil 0 ~ 7 に 0 以外の値を書き込むと、スプレッドシートで Soft Event 0 ~ 7 がトリガされます。Coil 8 に 0 以外の値を書き込むと、画像取り込みがトリガされます。Coil 番号が有効範囲 (0 ~ 8) 内に入っていないと、エラーコード 02 (ILLEGAL DATA ADDRESS) が返されます。