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

このトピックでは、ファームウェアバージョン 5.3.0 以降が実行されている In-Sight ビジョンシステム/センサを使用する場合の Modbus TCP 通信プロトコルについて説明します。モデル一覧およびサポートされているファームウェアバージョンについては、ファームウェアのバージョンをご参照ください。

Medbus TCP データブロック

定義済みデータブロックを使用すると、ビジョンシステムが PLC/MC との間でデータの読み取りと書き込みを行う場所を制御できます。アプリケーションの設定をするために、コマンド機能に必要なさまざまなコントロールおよびステータスビットは連続したブロックにグループ化され、これらを同時に処理することができます。

ブロック バイト ビット 7 ビット 6 ビット 5 ビット 4 ビット 3 ビット 2 ビット 1 ビット 0

ビジョン

コントロール

0

Set

Offline

Reserved

Execute

Command

Inspection

Results

Ack

Buffer

Results

Enable

Trigger

Trigger

Enable

1 Reserved
2 Reserved

Clear

Exposure

Complete

Clear

Error

Initiate

String

Command

Set

User

Data

3

Soft

Event

7

Soft

Event

6

Soft

Event

5

Soft

Event

4

Soft

Event

3

Soft

Event

2

Soft

Event

1

Soft

Event

0

 

ビジョン

ステータス

0 Online Offline Reason

Missed

Acq

Reserved

Trigger

Ack

Trigger

Ready

1 Error

Command

Failed

Command

Completed

Command

Executing

Results

Valid

Results

Buffer

Overrun

Inspection

Completed

System

Busy

2 Reserved

Job

Pass

Exposure

Complete

String

Command

Error

String

Command

Ack

Set

User

Data

Ack

3

Soft

Event

Ack 7

Soft

Event

Ack 6

Soft

Event

Ack 5

Soft

Event

Ack 4

Soft

Event

Ack 3

Soft

Event

Ack 2

Soft

Event

Ack 1

Soft

Event

Ack 0

ブロック ワード  

入力

 

0 Command
1 ~ 2000 User Data
 

出力

 

0 Current Job ID
1 エラーコード
2 Acquisition ID
3 Inspection ID
4 Inspection Result Code
5 ~ 2004 Inspection Results
 

文字列

コマンド

0 String Command Length
1 ~ 960 String Command
 

文字列

コマンド

結果

0 Result Code
1

String Command Result Length

2 ~ 961 String Command Result

ビジョンコントロールブロック

バイト 0

ビット 名前 説明
7 Set Offline

このビットがセットされると、このビットが再びクリアされるまで、In-Sight ビジョンシステムはオフラインになります。

6 ~ 5 Reserved 未使用。
4 Execute Command 設定した場合、ビジョンシステムは、[コマンド] フィールドで指定されたジョブ ID をロードするか、[名前を基準にしたジョブのロード] コマンドを実行して、ユーザデータバッファで指定されたジョブ名をロードします。[コマンド完了] シグナルに切り替わるまで、シグナルは [High] のまま維持する必要があります。このシグナルの立ち下がりエッジ ([コマンド完了] の前の場合) は、停止リクエストとして解釈されます。
3 Inspection Results Ack Buffer Results Enable ビットがセットされると、Inspection Results Ack ビットは、PLC が Inspection Count、Inspection Result Code、および Inspection Results データを受信したことを確認応答するように、PLC によってセットされます。その後、次の検査結果のセットが PLC に送信されます。Inspection Results Ack ビットがクリアされると、ビジョンシステムは Results Valid ビットをセットします (バッファが空でなかった場合)。
2 Buffer Results Enable このビットがセットされると、Inspection Count、Inspection Result Code、および Inspection Results フィールドは、Inspection Results Ack ビットがセットされて確認応答されるまで変化しません。最大 8 つの検査が In-Sight ビジョンシステムのバッファに保持されます。ビジョンシステムは、Results Valid ビットをクリアすることによって、確認応答に応答します。Inspection Results Ack ビットがクリアされて、PLC に送信される新しい結果セットがあるときには、Results Valid ビットはクリアされません。Inspection Results Ack ビットがクリアされて、PLC に送信される結果がビジョンシステムのバッファにそれ以上ない場合には、Results Valid ビットはクリアされたままです。
1 Trigger

このビットをセットすると、次の条件が満たされた場合に取り込みがトリガされます。

  • In-Sight ビジョンシステムがオンラインである。
  • Trigger Enable ビットがセットされている。
  • AcquireImage 関数の Trigger パラメータが、外部、ネットワーク、または産業用イーサネットに設定されます。

    :  トリガが PLC から送られてきたら、[産業用イーサネット] トリガタイプを使用する必要があります。
0 Trigger Enable このフィールドは、Trigger ビット経由でトリガできるようにするために設定されます。このビットをクリアすると、ネットワークトリガメカニズムが無効になります。

バイト 1

ビット 名前 説明
7 ~ 1 Reserved 未使用。

バイト 2

ビット 名前 説明
7 ~ 4 Reserved 未使用。
3 Clear Exposure Complete

この信号が High のときは、Exposure Complete ステータスはリセットのままです。この信号が Low に設定されると、次の露光完了時に Exposure Complete ステータスが High に設定されます。

2 Clear Error

このビットをセットすると、エラーシグナルとエラーコードシグナルがクリアされます。Clear Error ビットは、Error ビットがクリアされるまで [High] に維持する必要があります。エラーがキューに入れられた場合、このビットがクリアされると、エラーシグナルとエラーコードシグナルは、キューに入れられた次のエラーコードに対してセットされます。

1 Initiate String Command このビットがセットされると、String Command フィールドからデータが読み取られ、文字列コマンドが実行されます。コマンドの読み取り時には、String Cmd Ack ビットがセットされます。このビットは、ビジョンシステムがコマンドを確実に受信するために、String Cmd Ack ビットをセットするまで High のまま保持する必要があります。
0 Set User Data このコマンドは、ビジョンシステムにて消費される User Data フィールドを保持バッファに転送する必要がある場合に、PLC から In-Sight ビジョンシステムへ通知します。

バイト 3

ビット 名前 説明
7 Soft Event 7 スプレッドシートのソフトイベントのトリガを可能にします。これらのビットをセットすると、スプレッドシート内の関連するソフトイベントがトリガされます。
6 Soft Event 6
5 Soft Event 5
4 Soft Event 4
3 Soft Event 3
2 Soft Event 2
1 Soft Event 1
0 Soft Event 0

ビジョンステータスブロック

バイト 0

ビット 名前 説明
7 Online このビットは、In-Sight ビジョンシステムがオンラインのときにセットされ、ビジョンシステムがオフラインのときにクリアされます。ビジョンシステムがオフラインのときには、Offline Reason フィールドを調べて、原因を判断してください。
6 ~ 4 Offline Reason このフィールドは、In-Sight ビジョンシステムがオフラインである原因を示すために使用される 3 ビットのフィールドです。
Offline Reason名前説明

0

Online

ビジョンシステムはオンラインです。

1

Programming

ビジョンシステムのジョブが変更されています。

2

Discrete Offline

ディスクリート信号によって、ビジョンシステムがオフラインになっています。

3

Comm.Offline

通信プロトコルによって、ビジョンシステムがオフラインになっています。

:  複数のデバイスから In-Sight ビジョンシステムはオフラインにできます。このフィールドでは最小限のチャネルステータスを返します。
3 Missed Acq 画像取り込み方法に関係なく、In-Sight ビジョンシステムが画像取り込みに失敗したときにセットされます。画像取り込みが正常にトリガされるとクリアされます。
:  Trigger ビットがセットされたが、ビジョンシステムがオフラインになっている場合、Missed Acq ビットと Trigger Ack ビットの両方がセットされます。
2 Reserved 未使用。
1 Trigger Ack In-Sight ビジョンシステムが Trigger ビットのセットによってトリガされたことを示します。このビットは、Trigger ビットがクリアされるまでセットされたままです。また、Acquisition ID は、このビットの立ち上がりエッジにラッチできます。
:  Trigger ビットがセットされたが、ビジョンシステムがオフラインになっている場合、Missed Acq ビットと Trigger Ack ビットの両方がセットされます。
0 Trigger Ready

In-Sight ビジョンシステムが、Trigger ビットを介して新しいトリガを受け入れられることを示します。このフィールドは、ビジョンシステムがオンラインであり、Trigger Enable ビットがセットされ、AcquireImage 関数の [トリガ] パラメータが [ネットワーク]、[外部]、または [産業用イーサネット] に設定されて、ビジョンシステムが現在画像を取り込んでいないときに真になります。

:  トリガが PLC から送られてきたら、[産業用イーサネット] トリガタイプを使用する必要があります。

バイト 1

ビット 名前 説明
7 Error このビットはエラーが発生するとセットされます。これは [エラーコード] フィールドで定義されています。
6 Command Failed このビットは 1 にセットされて、Job Load の実行に失敗して完了できなかったことを示します。新しいジョブが PLC/HMI によってロードされると、ビットがクリアされます。In-Sight Explorer によってジョブが変更されても、このビットは変わりません。このビットは常に、Command Completed ビットがセットされるより前にセットされます。
5 Command Completed コマンドが完了すると、Command Executing ビットが Low になり、Execute Command ビットがまだ High の場合、Command Completed ビットがセットされます。コマンドが完了しなかった場合、Command Failed ビットもセットされます。
4 Command Executing Job Load が開始されると、このビットは 1 にセットされます。Command Completed ビットと Command Failed ビットは、このビットの立ち下がりエッジの前にセットされます。
3 Results Valid

Inspection Count ビット、Inspection Result Code ビット、Inspection Results ビット、または Job Pass ビットがセットされたときにセットします。Inspection Results Ack ビットがセットされるとクリアされます。

:  オーバーラップモード時のジョブの処理を有効にした場合は、Buffer Results Enable ビットを有効/セットするか、Inspection Completed ビットを使って検査結果をラッチします。
2 Results Buffer Overrun

このフィールドは、Buffer Results Enable ビットがセットされていて、Inspection Results Ack ビットをセットすることによって PLC が確認応答しなかったために In-Sight ビジョンシステムが検査結果のセットを破棄したときにセットされます。最大 8 つの検査がビジョンシステムのバッファに保持されるため、このビットは、9 番目の検査がバッファに追加されたときにセットされます。9 番目の検査と後続のすべての検査は、バッファに空きが生じるまで (結果が確認応答されたとき) 破棄されます。有効な検査が発生して、前の検査が上書きされない限り、このビットはクリアされません。

1 Inspection Completed このビットは、検査の完了時にトグルされます。Inspection Count、Inspection Result Code、Inspection Results、または Job Pass の各ビットが PLC に送信された後、確実に切り替えられます。
0 System Busy

ビジョンシステムがジョブを実行しているとき、ジョブをロードしているとき、またはユーザ入力に応答しているときにセットされます。

バイト 2

ビット 名前 説明
7 ~ 5 Reserved 未使用。
4 Job Pass このビットは、最後のジョブが [ジョブの PASS/FAIL セルの設定] ダイアログの設定に合格するとセットされます。このビットはジョブが合格しないとクリアされます。
:  

ジョブの PASS ビッドの動作は結果バッファリングが無効か有効かによって異なります。

バッファリングが無効バッファリングが有効
検査が完了したときに [ジョブの PASS/FAIL] のセルが合格を示すとセットされます。そうでない場合は、クリアされたままです。

Inspection Completed ビットが立つ前のジョブ PASS ビットは有効です。

新しい結果が InspectionResults 属性に挿入され、[ジョブの PASS/FAIL] のセルがその結果に対して合格を示すとセットされます。そうでない場合は、クリアされたままです。InspectionResultsAck 属性を真に設定することによって結果が確認応答され、ビットがクリアされるまで、状態は変化しません。

Results Valid ビットがセットされる前のジョブ PASS ビットは有効です。

3 Exposure Complete このビットは、In-Sight ビジョンシステムが露光完了するとセットされ、Clear Exposure Complete ビットでリセットされます。このビットは、Clear Exposure Complete 信号が High に設定されると Low に保持されます。
2 String Command Error このビットは、前の文字列コマンドの結果がエラーコードを返したかどうかを示します。
1 String Command Ack このビットは、ビジョンシステムがコマンドの処理を完了して、コマンドに対する応答を生成したときにセットされます。ビジョンシステムによってこのビットがセットされると、PLC は安全に文字列コマンド応答データを読み取ることができます。PLC が Initiate String Command ビットをクリアした後で、このビットがリセットされます。PLC は、Initiate String Command ビットをクリアして String Command Ack ビットが Low 状態に戻ってから、新しいコマンドを開始します。
0 Set User Data Ack このビットは、Set User Data コマンドの完了に確認応答するためにセットされます。

バイト 3

ビット 名前 説明
7 Soft Event Ack 7 これらのビットは、Soft Event コマンドが受信されたことを示すために使用されます。
6 Soft Event Ack 6
5 Soft Event Ack 5
4 Soft Event Ack 4
3 Soft Event Ack 3
2 Soft Event Ack 2
1 Soft Event Ack 1
0 Soft Event Ack 0

出力ブロック

:  [フォーマット出力バッファ] ダイアログで定義したデータは、出力ブロックの「Inspection Results」フィールド (ワード 5 ~ 2000) に表示されます。

ワード 0

名前 説明
Current Job ID ビジョンシステムで現在実行中のジョブの ID 番号を示す 16 ビット整数。または、現在のジョブに ID 番号がない場合は 65535。このフィールドは、ジョブ変更の方法に関係なく、ビジョンシステムでジョブが変更されたときに更新されます。

ワード 1

名前 説明
エラーコード

発生したエラーの 16 ビットの数値表現:

コード Error 説明
0x0000 No Error エラーは発生しませんでした。
0x0100 Trigger set while disabled Trigger Enable ビットがクリアされている間に Trigger ビットが設定された場合、または AcquireImage 関数の Trigger パラメータが、外部、ネットワークまたは産業用イーサネットに設定された場合に発生します。
0x0101 Trigger set while Offline ビジョンシステムがオフラインの間に Trigger ビットが設定されるときに発生します。
0x0400 Already Executing Error Execute Command ビットがセットされ、Excecuting ビットが High のままになっている場合に発生します。
0x0401 Job load requested while Online ビジョンシステムがオンラインの間に [ジョブを開く] コマンドが発行されるときに発生します。

ワード 2

名前 説明
Acquisition ID この ID は、取り込みの開始時と Trigger Ack ビットがセットされると増分され、取り込みとその検査結果の同期に使用できます。

ワード 3

名前 説明
Inspection ID この結果セットに関連付けられている取り込み ID。

ワード 4

名前 説明
Inspection Result Code 検査結果コードは、WriteResultsBuffer 関数の [結果コード] パラメータによって定義されます。

ワード 5 ~ 2004

名前 説明
Inspection Results WriteResultsBuffer 関数を使用してスプレッドシートから書き出された検査結果データ。

入力ブロック

:  [フォーマット出力バッファ] ダイアログで定義したデータは、入力ブロックの「User Data」フィールド (ワード 1 ~ 2000) に表示されます。

ワード 0

名前 説明
Command

これは、ロードするジョブのジョブ ID 番号 (0 ~ 999) を示すために使用される 16 ビットの整数です。[コマンド実行] ビットが PLC によって設定されると、ジョブロードが実行されます。[コマンド] フィールドは、[コマンド実行] シグナルの立ち上がりエッジと [コマンド完了] シグナルの立ち上がりエッジとの間で一定に保つ必要があります。そうしないと、結果が不確定になります。

ワード 1 ~ 2000

名前 説明
User Data ReadUserDataBuffer または ReadLatchedUserDataBuffer 関数を使用してスプレッドシートに読み取ることができるデータバッファ。

文字列コマンドブロック

ワード 0

名前 説明
String Command Length ネイティブモードコマンドの長さ。

ワード 1 ~ 960

名前 説明
String Command ビジョンシステムによって処理されるネイティブモードコマンド

文字列コマンド結果ブロック

ワード 0

名前 説明
Result Code

ネイティブモードコマンドの応答コード。コマンドが成功したか失敗したかを、このコードで判別することができます。

:  すべてのネイティブモードコマンドはここで確認できます。各コマンドは正常に実行された場合、1 を返します。失敗した場合、各コマンドに固有のエラーコードがあります。エラーコードの詳細については、各ネイティブモードコマンドのトピックを参照してください。

ワード 1

名前 説明
String Command Result Length ネイティブモードコマンドの応答データの長さ (バイト単位)。

ワード 2 ~ 961

名前 説明
String Command Result ネイティブモードコマンドの結果文字列。コマンドによって返されるデータの ASCII 文字列表記です。

Medbus TCP アドレスマップ

:  
  • ビジョンコントロールブロックビジョンステータスブロック出力ブロックおよび文字列コマンド結果ブロックは、2 つの別々の場所にマップされます。二重マッピングする理由は、PLC によってはアドレス空間の保持レジスタ部にしかアクセスできないからです (つまり、それらの PLC では、関数コードの 3 と 6 のみがサポートされます)。二重マッピングにより、保持レジスタにしかアクセスできない PLC でも、すべての信号とデータに正常にアクセスすることができます。ただし、全関数コードセットをサポートする PLC は、それぞれの最適なアドレスマップの場所にあるこれらのブロックにアクセスできます。最適なブロックの場所と保持レジスタの場所の一方にアクセスする必要があり、両方にアクセスすることはできない点に注意してください。
  • Modbus TCP プロトコルでは、本来、アドレス指定でゼロから始まるオフセットを使用します。以下のアドレスマップ図は、ゼロから始まるオフセットを使用するブロックの場所を示しています。PLC で Schneider フォームのアドレス指定を使用する場合は、マップアドレスに示されているゼロから始まるオフセットをベース Schneider アドレスに単に追加します。例えば、Schneider フォームのアドレス指定を使用して「入力ブロック」にアクセスするには、保持レジスタの Schneider ベースアドレス (400000) に「入力ブロック」のオフセット (2000) を追加する必要があります。したがって、Schneider フォームでは、入力ブロックが 402000 から始まります。

Modbus TCP は 4 つの明確なアドレス空間をサポートしています。空間には、2 つのビットアドレス空間と 2 つのワード (16 ビット) アドレス空間があります。

  • コイル: ビットタイプのアドレス空間。PLC からの出力、ビジョンシステム/センサへの入力
  • ディスクリート入力: ビットタイプのアドレス空間。PLC への入力、ビジョンシステム/センサからの出力
  • 保持レジスタ: ワードタイプのアドレス空間。ビジョンシステム/センサからの入出力両方
  • 入力レジスタ: ワードタイプのアドレス空間。PLC への入力、ビジョンシステム/センサからの出力
ブロック名 アドレス領域 オフセット Schneider フォームアドレス指定 数量
ビジョンコントロール コイル 0 000000 ~ 000031 1 ~ 32
  保持レジスタ 0 400000 ~ 400001 1 ~ 2
ビジョンステータス ディスクリート入力 0 100000 ~ 100031 1 ~ 32
  保持レジスタ 100 400100 ~ 400101 1 ~ 2
入力 保持レジスタ 2000 402000 ~ 404000 1 ~ 2001
出力 保持レジスタ 7000 407000 ~ 409004 1 ~ 2005
  入力レジスタ 2000 302000 ~ 304004 1 ~ 2005
文字列コマンド 保持レジスタ 1000 401000 ~ 401999 1 ~ 1000
文字列コマンド結果 入力レジスタ 1000 301000 ~ 301999 1 ~ 1000
  保持レジスタ 6000 406000 ~ 406999 1 ~ 1000
アドレス (000000)
コイル読み取り/書き込み
(0x01、0x05、0x0F)
アドレス (100000)
ディスクリート入力読み取り
(0x02)
アドレス (400000)
保持読み取り/書き込み
(0x03、0x10)
アドレス (300000)
入力レジスタ読み取り
(0x04)

サポートされる Medbus TCP のコマンド

コード 説明 アドレス領域
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 によって使用されます。

入力レジスタ