コマンドの原則
EtherCATモジュールの全てのコマンドは同じ原理に従っています。これらのコマンドは、末尾が Trigger
である名前で識別できます。コマンドを送信するには、下の方法で行ってください。
トリガーを True に設定する前に、必要なパラメータを設定してください。
コマンドトリガーを True に設定してください。
<command> Done
フラグが True になるのを待ってください。コマンドトリガーを False にリセットしてください。
<command> 完了
フラグが False にリセットされるのを待ってください。Is Error
レジスターにエラーがないかを確認し、エラーがある場合は、必要に応じて処理してください。エラーがなければ、対応する出力(複数)を使用できます。
これを図で表すと次のようになります。
注釈
同時に2つのコマンドトリガーを True に設定することはできません。そのような場合、 EYE+ XTD はエラーを返します。詳しくは 追加のエラーコード(Additional error codes) をご覧ください。
基本的な機能
基本入力
- 状態停止 [UDINT](Stop States)
停止 では、定義しているすべての状態を停止してください。その状態はビットセットとしてエンコードされていて、各状態は次のように符号化されています。
自動運転
0b0000_0001
レシピの作成
0b0000_0010
カメラの設定
0b0000_0100
ハンドアイキャリブレーション
0b0000_1000
レシピ評価
0b0001_0000
また、
System State
レジスタには、次の状態があります。エラー
0b0100_0000
準備完了
0b1000_0000
システム更新
0b0001_0000_0000
移行設定
0b010_0000_0000
レシピ移行
0b100_0000_0000
システムバックアップ
0b000_1000_0000_0000
システム復元
0b0001_0000_0000_0000
初期化
0b0010_0000_0000_0000
移行エラー
0b0100_0000_0000_0000
レシピ移行
0b1000_0000_0000_0000
EYE+ XTD は、
Stop States
が変わったとき(例えば、数値が0から1になったとき)にこのコマンドを認識します。下の図に示すように、システムがコマンド処理を終了すると、PDO エントリのStop State Done
が True になります。エラーは、Is Error
やError ID
といった特別なレジスタで処理されます。 エラーハンドリング を参照してください。Done BOOLは、数値が0に戻ると消去されます。
注釈
この数値を 0xFF
に設定すると、すべての状態を停止して準備完了状態にすることができます。
- クリアエラートリガー(Clear Error Trigger)
EYE+ XTD は エラーコード に定義している任意のエラーコードを返すことができます。クリアエラートリガーは、
Error ID
レジスタに表示される全てのエラーをクリアすることができます。標準的なエラーコードに加えて、EtherCAT に特有のエラーを確認することができ、これらは 追加のエラーコード(Additional error codes) に定義されています。有効なエラーを消去する方法は簡単で、次のようになります。
基本出力(Basic Outputs)
- システム状態(System State)
現在の EYE+ XTD の状態を確認するためには、 状態停止 には、すべての状態が記載されているので、参照してください。
- エラークリア完了(Clear Error Done)
EYE+ XTD が エラークリアトリガー コマンドの処理を終了したときに True となります。 エラークリアトリガー トリガーを0に設定すると、 False にリセットします。
- エラー(Is Error)
出力された Error ID にエラーが含まれている場合は True、含まれていない場合は False となります。エラーをクリアすると、このレジスタは False にリセットします。
- エラー ID(Error ID)
エラー ID を含む場合は、 エラークリアトリガー を参照してください。エラーをクリアすると、このレジスタの数値が0にリセットします。
自動運転の機能
自動運転インプット(Production Inputs)
- 自動運転開始トリガー(Start Production Trigger)
自動運転中にレシピを開始するためには、
レシピ ID
レジスタに固有のレシピ ID を設定しなければなりません。自動生産が開始されると、自動運転開始完了
やシステム状態
レジスタに反映されます。エラーは、Is Error
やError ID
の特別なレジスタで処理されます。 エラーハンドリング を参照してください。レシピ
42
が自動運転を開始する時の例は、下の通りです。
- 部品ピックトリガー(Get Part Trigger)
1つまたは複数のパーツをリクエストしてください。
部品数
、モデル N 数
(N = 1、2、3、4、5または6)のパラメータのいずれかの値を変更することで、返される部品数を変更することができます。初期設定では,部品数
の値は1に設定しています。このコマンドの詳しい説明は、 get_part(multi-model) を参照してください。下図は、1つの部品をリクエストする例です(初期設定値)。
注釈
簡単なシナリオは 部品(ワーク)をピックする(Get part) で説明しています。
- 部品準備トリガー(Prepare Part Trigger)
EYE+ XTD から1個または、複数個の部品を準備し、準備された部品は後で、部品ピックトリガー を使って取得します。このコマンドは、部品座標を送信しないことと、 タイムアウトパラメータを考慮しないことを除けば、部品ピックトリガー と同じ動作をします。 タイムアウトをコマンドする を参照してください。初期設定では、
部品数
のパラメータは1に設定されています。このコマンドの詳細については、 prepare_part を参照してください。リクエストした部品の準備ができると、
準備
フラグが1になります。下図は、部品の準備の例です。
- 強制的に画像取得トリガー(Force Take Image Trigger)
強制的に画像取得トリガー
コマンドは、できるだけ早く画像を取得するように EYE+ XTD に強制します。特に prepare_part や get_part と組み合わせて使用します。
強制的に画像取得トリガー
が0から1に変わるたびに、 EYE+ XTD は新しい画像を取得し、解析を行います。このコマンドの詳細については、 force_take_image を参照してください。下図は、このフラグを設定する例です。
注釈
簡単なシナリオは、 強制的に画像を取得(Force take image) に説明しています。
- ポーズをクリア(Clear Poses)
Clear Poses
レジスタは、 ポーズ 出力(ポーズ <n>
)をクリアするので、その結果リストが空になります。これは、 Get Part Triggers を2回連続する時に役立ちます。
自動運転パラメータ(Production Parameters)
自動運転中は、要求に応じて、特定のパラメータを微調整することができます。以下のリストは、どのパラメータが利用可能かを示しています。
- パラメータ保存トリガー(Save Parameters Trigger)
自動運転パラメータ(Production Parameters) リスト上のパラメータは、この特定のコマンドを使って必ず保存してください。 EYE+ XTD は、
パラメータ保存完了
レジスタを使用して、コマンドの完了を報告します。このコマンドは、 自動運転パラメータ(Production Parameters) リスト上のすべてのパラメータを保存します。すべてのパラメータを適切な初期値で設定することが重要です!エラーは、Is Error
やError ID
の特別なレジスタで処理されます。 エラーハンドリング を参照してください。以下は、コマンド送信時のパラメータの動作を示す1例です。
重要
このコマンドは、すべてのパラメータを保存します。すべてのパラメータを正確な値に初期化することが重要です。
- 画像取得可能(Can Take Image)
画像取得は初期設定では有効です。必要に応じて、このパラメータを False に設定して、画像取得を無効にすることができます。このコマンドがどのような場合に有効かについては、 画像取得可能(Can take image) を参照してください。
- 送信後の画像(Image After Send)
部品(ワーク)をピックした後に、強制的に画像を取得します。 部品ピックトリガー や 部品準備トリガー コマンドを呼び出すたびに、システムは、自動的に画像を取得します。もし何らかの外的トラブルよって部品が動いているかもしれないと思った場合、既存の(メモリに保存済みの)良い候補の座標値を修正するために、この画像を使用します。
詳しくは、 送信後の画像(Image After Send) をご覧ください。
- コマンドタイムアウト(Command Timeout)
これは 部品ピックトリガー コマンドを呼び出す際のタイムアウト(秒)です。このタイムアウト時間内に部品が見つからなかった場合は、エラーが返されます。
注釈
デフォルトで、タイムアウトパラメータは 0.0 に設定されています。この値がシステムの動作にどのように影響するかは、 タイムアウト(timeout) を参照してください。
- 部品数(Part Quantity)
このパラメータは、 EYE+ XTD に複数の部品を同時に探すように指示するために使用します。 EYE+ XTD が写真を撮るたびに、画像上に少なくとも <n> 個の部品を探します。もしそれらの部品が見つからなければ、座標は送信されません。
自動運転のアウトプット(Production Outputs)
- 自動運転開始完了(Start Production Done)
EYE+ XTD が 自動生産開始トリガー コマンドの処理を終了すると True になります。 自動生産開始トリガー を0に設定すると、False にリセットします。
- 有効レシピ(Active Recipe)
自動運転用に読み込まれている直近のレシピが含まれています。
- 準備(Is Prepared)
EYE+ XTD が画像処理を終了し、 部品ピックトリガー を使用してポジションを与える準備ができたときに True を返します。
- 画像解析中(Is Analysis Running)
解析中(is_analysis_running) にあるように、 EYE+ XTD がまだ画像を処理している場合には、True を返します。
- 強制的に画像取得完了(Force Take Image Done)
EYE+ XTD が 強制的に画像取得トリガー コマンドの処理を終了したときに True となります。 F強制的に画像取得トリガー を0に設定すると、 False にリセットします。
- 部品を準備(Parts Prepared)
部品ピックトリガー を使用して取得可能な一般部品数です。
- N が1、2、3、4、5、または6の場合のモデル N が準備完了。
部品ピックトリガー を使用して取得可能なモデルの特定の部品数です。
- ボーズ(Poses)
EYE+ XTD は一度に最大10個のポーズを出力できます。各ポーズは、部品の位置を示す常に存在する3つのパラメータと、 マルチモデルレシピ を使用する場合の2つのオプションパラメータで構成されています。
ポーズ <n> X は、この部品の X 座標
ポーズ <n> Y は、この部品の Y 座標
ポーズ <n> RZ は、この部品の RZ 角度
ポーズ <n> モデルは、部品のモデル( マルチモデルレシピ で使用)
さらに、有効なエントリーの数は、常に
有効なエントリー数
レジスタに設定しています。注釈
ポーズ <n> モデルは、PDO の別のグループにあります。 TxPDO を参照してください。
- パラメータ保存完了(Save Parameters Done)
EYE+ XTD が パラメータ保存トリガー コマンドの処理を終えたときに True となります。 パラメータ保存トリガー を0に設定すると、False にリセットします。
- 画像取得可能(Can Take Image)
画像取得可能 のパラメータをリードバックしてください。
- 送信後の画像(Image After Send)
送信後の画像 のパラメータをリードバックします。
- コマンドタイムアウト(Command Timeout)
タイムアウトコマンド のパラメータをリードバックします。
- 部品数(Part Quantity)
パーツ数 のパラメータをリードバックします。
- モデル N の数量リードバック、ここで N は1、2、3、4、5、または6です。
モデル数 パラメータのリードバックします。
ハンドアイ機能
4つのキャリブレーションポイントを使用して、ハンドアイキャリブレーションを実行するコマンドフローは、こちらの シナリオ に記述しています。
ハンドアイ入力
- ハンドアイキャリブレーションの開始トリガー
レシピとその関連部品を使用して hand-eye calibration を開始します。ユニークなレシピ識別子はレジスタ
Recipe ID
に設定する必要があります。一度 hand-eye calibration プロセスが開始されると、レジスタStart Hand-eye Calibration Done
と同様にSystem State
に反映されます。エラーは、特別なレジスタIs Error
とError ID
を用いて処理されます。 エラーのハンドリング を参照してください。レシピ 42 を使って、 hand-eye calibration を開始する例は、次の通りです。
![]()
- キャリプレーションポイントの設定トリガー
現在の hand-eye calibration のための新しいロボット位置を
キャリブレーションポイントインデックス
に記録してください。合計4つのキャリブレーションポイント(インデックス1から4)を記録してからキャリブレーショントリガー
コマンドを実行してください。 ロボットのX 座標
とY 座標
は、ロボットの単位で表示することができます。このキャリブレーションポイントインデックス
にすでに他の点が登録されていた場合、新しく定義された点で上書きされます。このコマンドを使用するには、システムを hand-eye calibration モードにしてください。 ハンドアイキャリブレーションの開始トリガー を参照してください。
![]()
- キャリブレーションポイント取得トリガー
キャリブレーションポイントインデックス
に記録されたロボット座標を返します。返された座標は、 Pose 1 - X と Pose 1 - Y で読み取ることができます。このコマンドを使用するには、システムを hand-eye calibration モードにしてください。 ハンドアイキャリブレーションの開始トリガー を参照してください。
![]()
- キャリブレーション画像の取得トリガー
検出されたオブジェクトの現在のビジョン座標を得るために画像を撮影してください。検出された座標は、
キャリブレーションポイントインデックス
で記録されたロボットの位置とペアリングされます。複数のパーツが検出された場合、最初のパーツがマッチポイントとして使用されます。このコマンドを使用するには、システムを hand-eye calibration モードにしてください。 ハンドアイキャリブレーションの開始トリガー を参照してください。
![]()
- キャリブレーションポイントインデックス
キャリブレーションポイントのインデックス。完全なキャリブレーションポイントは、ロボット位置と対応するパーツ位置で構成されています。ハンドアイの
キャリブレーショントリガー
コマンドを実行する前に、合計4つのキャリブレーションポイント(インデックス1から4)を記録する必要がある。
- X 座標
キャリブレーションポイントの設置トリガー
を使用して記録されているロボットの位置の X 座標。
- Y 座標
キャリブレーションポイントの設定トリガー
を使用して記録されているロボットの位置の Y 座標。
- キャリブレーショントリガー
登録されているキャリブレーションポイントから hand-eye calibration マトリックスを算出してください。
キャリブレーショントリガー
コマンドを呼び出す前に、キャリプレーションポイントの設定トリガー
やキャリブレーション画像の取得トリガー
コマンドで、4つの完全なキャリブレーションポイントを登録しておく必要があります。キャリブレーションの精度は、 キャリブレーションの精度 に返されます。![]()
- キャリブレーションのテストトリガー
このコマンドは、現在算出した hand-eye calibration をテストするために使用されます。
有効なエントリー数
で検出された部品数と、 ポーズ アウトプット中のロボット座標を返します。検出されたロボット座標と実際のロボット座標とが一致するかどうかを確認することができます。
- キャリブレーションの保存トリガー
現在の hand-eye calibration を保存してください。このコマンドは、
キャリブレーショントリガー
の後に呼び出され、結果が十分であると判断された場合に、データをシステムに保存します。一旦保存されたキャリブレーションは、自動的に自動運転で使用されます。もし、以前に他のキャリブレーションを保存していた場合は、新しいキャリブレーションで上書きされます。注釈
このコマンドの呼び出しを忘れて、 hand-eye calibration 状態を停止してしまうと、保留中のデータがすべて失われてしまいます。
ハンドアイのアウトプット
- ハンドアイキャリブレーションの開始完了(Start Hand-eye Calibration Done)
EYE+ XTD が 、 ハンドアイキャリブレーションの開始トリガー コマンドの処理を終了すると True になります。 ハンドアイキャリブレーションの開始トリガー を0に設定すると、 False にリセットします。
- キャリブレーションポイントの設定完了
EYE+ XTD が、 キャリブレーションポイントの設定トリガー のコマンドの処理を終了したとき、True になります。 キャリブレーションポイントの設定トリガー を0に設定すると、 False にリセットします。
- キャリブレーションポイントの取得完了
EYE+ XTD が、 キャリブレーションポイントの取得トリガー コマンドの処理を終了したときに True となります。 キャリブレーションポイントの取得トリガー を0に設定すると、 False にリセットします。
- キャリブレーション画像の取得完了
EYE+ XTD が、 キャリブレーション画像の取得トリガー コマンドの処理を終了したときに True となります。 キャリブレーション画像の取得トリガー を0に設定すると、 False にリセットします。
- キャリブレーション完了
EYE+ XTD が パラメータ保存トリガー コマンドの処理を終えたときに True となります。 パラメータ保存トリガー を0に設定すると、False にリセットします。
- キャリブレーションのテスト完了
EYE+ XTD が、 キャリブレーションのテストトリガー コマンドの処理を終了したときに True となります。 キャリブレーションのテストトリガー を0に設定すると、 False にリセットします。
- キャリブレーションの保存完了
EYE+ XTD が、 キャリブレーションの保存トリガー コマンドの処理を終了したときに True となります。 キャリブレーションの保存トリガー を0に設定すると、False にリセットします。
- キャリブレーションの精度
キャリブレーションの精度は、 キャリブレーショントリガー コマンドの結果のです。これは、 EYE+ XTD で設定されている単位で表示されます。この単位は、 の ロボット の、 EYE+ XTD Studio で確認することができます。
注釈
hand-eye calibration の前にカメラの設定を行っていない場合、キャリブレーション精度はピクセルで表示されます。
追加のエラーコード(Additional error codes)
EYE+ XTD は、必要に応じて特定のエラーコードを EtherCAT に返します。これらのエラーコードのリストとその説明を以下に示します。
- 701
同時進行のコマンドがPDOで有効