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 |
このビットをセットすると、次の条件が満たされた場合に取り込みがトリガされます。
|
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 ビットのフィールドです。
注 : 複数のデバイスから 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 ビッドの動作は結果バッファリングが無効か有効かによって異なります。
|
||||
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 |
出力ブロック
ワード 0
名前 | 説明 |
---|---|
Current Job ID | ビジョンシステムで現在実行中のジョブの ID 番号を示す 16 ビット整数。または、現在のジョブに ID 番号がない場合は 65535。このフィールドは、ジョブ変更の方法に関係なく、ビジョンシステムでジョブが変更されたときに更新されます。 |
ワード 1
名前 | 説明 | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
エラーコード |
発生したエラーの 16 ビットの数値表現:
|
ワード 2
名前 | 説明 |
---|---|
Acquisition ID | この ID は、取り込みの開始時と Trigger Ack ビットがセットされると増分され、取り込みとその検査結果の同期に使用できます。 |
ワード 3
名前 | 説明 |
---|---|
Inspection ID | この結果セットに関連付けられている取り込み ID。 |
ワード 4
名前 | 説明 |
---|---|
Inspection Result Code | 検査結果コードは、WriteResultsBuffer 関数の [結果コード] パラメータによって定義されます。 |
ワード 5 ~ 2004
名前 | 説明 |
---|---|
Inspection Results | WriteResultsBuffer 関数を使用してスプレッドシートから書き出された検査結果データ。 |
入力ブロック
ワード 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 によって使用されます。 |
入力レジスタ |