コマンド説明
以下では、Keyence PLCとMech-MindビジョンシステムとのEtherNet/IP通信に使用するコマンドについて説明します。
コマンド説明
Mech-Visionプロジェクトを実行
このコマンドを実行すると、Mech-Visionプロジェクトが実行され、カメラ撮影とビジョン処理による認識が行われます。Mech-Vizを使用せずMech-Visionを使用する場合に使用します。
パラメータ説明
入力:
-
Vision_Proj_Num:Mech-Visionプロジェクト番号は、Mech-Visionプロジェクトリストで確認できます。プロジェクト前の数字はプロジェクト番号を表します。
-
Req_Pose_Num:Mech-Visionから返されるビジョン結果の数を設定します。設定範囲は[1-20]であり、値を0に設定すると、すべての結果が返されます。
-
Robot_Pose_Type:ロボットの位置姿勢タイプで、ロボット実機の位置姿勢をMech-Visionに送信する形式を指定します。範囲は0~3です。
-
Robot_Pose:ロボットの位置姿勢で、この値はRobot_Pose_Typeのパラメータ値によって異なります。データ型は2次元配列Array[0..1, 0..5] of DIntです。Array[0]はロボットの現在の関節角度、Array[1]はロボットの現在のフランジ位置姿勢となります。
Robot_Pose_TypeとRobot_Poseパラメータ値の関係と説明は以下の通りです。
Robot_Pose_Type パラメータ値 | Robot_Pose パラメータ値 | 説明 | 適用シーン |
---|---|---|---|
0 |
0, 0, 0, 0, 0, 0 |
ロボットの位置姿勢をMech-Visionに送信する必要がありません |
プロジェクトは、Eye To Handモードです。Mech-Visionプロジェクトで「経路計画」ステップを使用する場合、経路計画の開始位置は、経路計画ツールで設定した初期位置です。 |
1 |
ロボットの現在の関節角度とフランジ位置姿勢 |
ロボットの現在の関節角度とフランジ位置姿勢をMech-Visionに送信する必要があります |
カメラがEye in Hand方式で取り付けられている場合、直行ロボット以外のほとんどのロボットで利用可能です。 |
2 |
ロボットの現在のフランジ位置姿勢 |
ロボットの現在のフランジ位置姿勢をMech-Visionに送信する必要があります |
カメラがEye in Hand方式で取り付けられている場合。ロボットは関節角度のデータがなく、フランジ位置姿勢データのみがあります(直行ロボットなど)。 |
3 |
経路計画の開始位置におけるロボットの関節角度 |
経路計画の開始位置におけるロボットの関節角度をMech-Visionに送信する必要があります |
カメラがEye to Hand方式で取り付けられている場合。Mech-Visionプロジェクトで「経路計画」ステップを使用し、ロボット側から経路計画の開始位置を設定する必要があります。 |
JPSとフランジ位置姿勢の浮動小数点数型データを、10000倍して32ビットの符号付整数に変換し、Robot_Pose配列に設定します。 |
-
Start_Vision:Mech-Visionプロジェクトを実行します。正常立ち上がり時は有効になります。
変数「FromCamera」から返したータ:
-
FromCamera.STATUS_CODE:エラーがなければ、1102(実行成功)のステータスコードを返し、エラーがあれば、エラーコードを返します。
サンプル
詳細な説明
このサンプルプログラムで、変数 Camera_User.Start_Vision が立ち上がると、Mech-Visionプロジェクト1が実行され、Mech-Visionプロジェクト1からビジョン結果が返されます。PLCはMech-Visionプロジェクトの実行をトリガーした時の関節角度データをビジョンシステムに送信します。
ビジョン目標点の取得
このコマンドは、Mech-Vizを使用せずMech-Visionを使用する場合に使用します。Mech-Visionプロジェクト起動後、ビジョン処理による認識結果を取得するために、このコマンドが使われています。
パラメータ説明
入力:
-
Vision_Proj_Num:Mech-Visionプロジェクト番号は、Mech-Visionプロジェクトリストで確認できます。プロジェクト前の数字はプロジェクト番号を表します。
-
Get_VisData:Mech-Visionプロジェクトのビジョン認識結果を取得します。正常立ち上がり時は有効になります。
-
Data_Ready:複数グループのロボット位置姿勢の受信専用で、位置姿勢データが読み取れることを表している信号です。
-
Send_Pose_Num:送信された位置姿勢の数であり、すなわちビジョンから返された認識結果の数で、範囲は[0,20] です。
-
Start_Empty:取得した全てのTarget_Poseと Target_Labelデータが削除され、設定が有効になります。
出力:
-
Target_Pose:目標把持点のTCPであり、データ型は Array[0..19, 0..5] of DIntです。この配列データを10000で割って使用する必要があります。
-
Target_Label:Mech-Visionで認識される対象物のラベル情報であり、データ型はArray[0..19] of UDIntです。返されるラベルの値は整数です。
変数「FromCamera」から返したータ:
-
FromCamera.STATUS_CODE:エラーがなければ、ステータスコード1100(ビジョンポイントの取得に成功)を返します。エラーがあるとき、エラーコードが返されます。
-
FromCamera.SEND_POSE_TYPE:Mech-Visionが102コマンドで返される位置姿勢のタイプを2(TCP タイプ)に固定します。
サンプル
詳細な説明
このサンプルでは、変数 Camera_User.Get_VisData が立ち上がると、Mech-Visionプロジェクト1のビジョン結果が取得されます。 変数 Camera_User.Start_Empty が設定すると、取得されたCamera_User.Target Pose、Camera_User.Target Labelのデータがクリアされます。
Mech-Visionのパラメータレシピを切り替える
Mech-Visionのレシピ機能は異なるワークの認識に使用される場合、画像マッチングテンプレート、ROI、信頼性のしきい値など、Mech-Visionプロジェクトの各ステップのパラメータを変更することができます。このコマンドは、MM_Start_Vis前に使用する必要があります。
パラメータ説明
入力:
-
Vision_Proj_Num:Mech-Visionプロジェクト番号は、Mech-Visionプロジェクトリストで確認できます。プロジェクト前の数字はプロジェクト番号を表します。
-
Vision_Recipe_Num:Mech-Visionプロジェクト内のレシピの番号です。番号範囲は1-99です。
-
Switch_Recipe:Mech-Visionのパラメータレシピの切り替えを行います。正常立ち上がり時は有効になります。
変数「FromCamera」から返されたデータ:
-
FromCamera.STATUS_CODE:エラーがなければ 1107(レシピ切り替え成功)を返します。それ以外は該当するエラーコードを返します。
サンプル
詳細な説明
このサンプルプログラムでは、変数 Camera_User.Switch_Recipe が立ち上がると、Mech-Visionプロジェクト1のレシピがレシピ2に切り替えられます。
Mech-Visionの「経路計画」ステップの結果を取得
MM_Start_Visを呼び出した後、このコマンドを使用して、Mech-Visionの「経路計画」ステップから出力される衝突のない把持経路を取得します。
このコマンドを使用する時、Mech-Visionの「出力」ステップの ポートタイプ を「事前定義済み(ロボット経路)」に設定する必要があります。
MM_Start_Visの Req_Pose_Num を必ず0に設定してからこのコマンドを呼び出すと、コマンドの呼び出し回数を減らします。MM_Start_Visの Req_Pose_Num を1に設定すると、このコマンドの呼び出しごとに1つの経路点のみが返され、このコマンドを複数回呼び出した場合にのみすべての経路点が返されます。 |
パラメータ説明
入力:
-
Vision_Proj_Num:Mech-Visionプロジェクト番号は、Mech-Visionプロジェクトリストで確認できます。プロジェクト前の数字はプロジェクト番号を表します。
-
Request_Pose_Type:「経路計画」ステップから返された経路点の位置姿勢タイプを指定するために使用されます。
-
1
:経路点は、ロボットの関節角度(JPs)の形式で返されます。 -
2
:経路点は、ロボットのツール位置姿勢(TCP)の形式で返されます。
-
-
Get_VisData:Mech-Visionの「経路計画」ステップの結果を取得します。
-
Data_Ready:複数グループのロボット位置姿勢の受信専用で、位置姿勢が読み取れることを示す信号です。
-
Send_Pose_Num:送信された位置姿勢の数であり、すなわちビジョンから返された認識結果の数で、範囲は[0,20] です。
-
Start_Empty:取得した全てのCamera_User.Target_Pose、Camera_User.Target_LabelとCamera_User.Speed_Percentageデータが削除され、設定が有効になります。
出力:
-
Target_Pose:経路点のTCPであり、データ型はArray[0..19, 0..5] of DIntです。この配列データを10000で割って使用する必要があります。
-
Target_Label:Mech-Visionで認識される対象物のラベル情報であり、データ型はArray[0..19] of UDIntです。返されるラベルの値は整数です。
-
Target_Speed:経路計画設定ツールでこの移動ステップが設定されている速度パラメータです。範囲は[1-100]です。
変数「FromCamera」から返されたデータ:
-
FromCamera.STATUS_CODE:コマンドが正常に実行された場合、1103のステータスコードが返されます。エラーが発生した場合、エラーを表すエラーコードが返されます。
-
FromCamera.SEND_POSE_TYPE:経路点の位置姿勢のタイプです。INPUTにRequest_Pose_Typeがリクエストしている位置姿勢のタイプと一致しています。1はJPSを表し、2はTCPを表しています。
-
FromCamera.VISUAL_POINT_INDEX:「ビジョン処理による移動」の経路点が経路全体における位置を表します。
サンプル
詳細な説明
このサンプルでは、 Camera_User.Get_VisData が立ち上がると、Mech-Visionプロジェクト1から返されたロボット動作経路が取得されます。経路点の位置姿勢タイプがJPsとなります。 変数 Camera_User.Start_Empty が設定されている場合、取得したCamera_User.Target_Pose、Camera_User.Target_LabelとCamera_User.Target_Speedデータは削除されます。
Mech-Vizプロジェクトを実行
このコマンドは、Mech-VisionとMech-Vizの両方を使用する場合に使われます。Mech-Vizプロジェクトを実行し、対応す Mech-Visionプロジェクトを呼び出し、ビジョン結果に基づいて経路を計画する時に使用されます。
パラメータ説明
入力:
-
Robot_Pose_Type:ロボットの位置姿勢タイプで、ロボット実機の位置姿勢をMech-Vizに送信する形式を指定します。範囲は0~2です。
-
Robot_Pose:ロボットの位置姿勢で、この値はRobot_Pose_Typeのパラメータ値によって異なります。データ型は2次元配列Array[0..1, 0..5] of DIntです。Array[0]はロボットの現在の関節角度、Array[1]はロボットの現在のフランジ位置姿勢となります。
Robot_Pose_TypeとRobot_Poseパラメータ値の関係と説明は以下の通りです。
Robot_Pose_Type パラメータ値 | Robot_Pose パラメータ値 | 説明 | 適用シーン |
---|---|---|---|
0 |
0, 0, 0, 0, 0, 0 |
ロボットの位置姿勢をMech-Vizに送信する必要がありません。Mech-Vizでの仮想ロボットは初期位置姿勢(JPs = [0, 0, 0, 0, 0, 0])から最初の経路点に移動します。 |
カメラがEye to Hand方式で取り付けられている場合、この設定は推奨しません。 |
1 |
ロボットの現在の関節角度とフランジ位置姿勢 |
ロボットの現在の関節角度とフランジ位置姿勢をMech-Vizに送信する必要があります。Mech-Vizでの仮想ロボットは受信された関節角度から最初の経路点に移動します。 |
カメラがEye in Hand方式で取り付けられている場合、この設定は推奨します。 |
2 |
ロボット側でカスタマイズされた関節角度 |
ロボットのティーチポイント(現在の関節角度ではない)をMech-Vizに送信する必要があります。これは、ロボットが画像撮影領域の外にいるとき(下図に示す)、Mech-Vizプロジェクトが次回の経路を事前に計画することをトリガーするために使用されます。Mech-Vizでの仮想ロボットは受信されたティーチポイントから最初の経路点に移動します。 |
カメラがEye to Hand方式で取り付けられている場合、この設定は推奨します。 |
カメラがEye to Hand方式で取り付けられている場合、Robot_Pose_Type を2に設定する理由は次の通りです。
Eye To Handモードでは、カメラはロボットが画像撮影領域と把持領域に戻る前に撮影し、次回の把持経路を計画することができます。これにより、タクトタクトの向上が可能です。 この場合で Robot_Pose_Type を1に設定すると、つまり、ロボットの現在の位置姿勢をMech-Vizの仮想ロボットに送信すると、仮想ロボットとロボット実機の経路が一致しないため予測できない衝突を起こす可能性があります。 仮想ロボットは現在の位置姿勢からMech-Vizで設定された最初の移動ステップの位置姿勢に移動しますが、ロボット実機は上記の位置姿勢に移動する前に別の位置姿勢に移動する可能性があります。 したがって、 Robot_Pose_Type パラメータを2に設定する必要があります。 |
JPSとフランジ位置姿勢の浮動小数点数型データを、10000倍して32ビットの符号付整数に変換し、Robot_Pose配列に設定します。 |
-
Start_Viz:Mech-Vizプロジェクトを実行します。正常立ち上がり時は有効になります。
変数「FromCamera」から返されたデータ:
-
FromCamera.STATUS_CODE:エラーがなければ、2103のステータスコードが返されます(Mech-Vizが起動できた)。エラーが発生した場合、エラーを表すエラーコードが返されます。
サンプル
詳細な説明
このサンプルでは、変数 Camera_User.Start_Viz が立ち上がると、Mech-Vizプロジェクトが実行され、ロボットの現在の関節角度がビジョンシステムに送信されます。
Mech-Vizプロジェクトを停止
Mech-Vizプロジェクトの実行を停止します。Mech-Vizプロジェクトがデッドループになっていない場合や、正常に停止できる場合は、このコマンドを使用する必要はありません。
パラメータ説明
入力:
-
Stop_Viz:実行しているMech-Vizを停止します。正常立ち上がり時は有効になります。
変数「FromCamera」から返されたデータ:
-
FromCamera.STATUS_CODE:エラーがなければ、2104のステータスコードが返されます(Mech-Vizが停止できた)。エラーが発生した場合、エラーを表すエラーコードが返されます。
サンプル
詳細な説明
このサンプルプログラムで、変数 Camera_User.Stop_Viz が立ち上がると、 Mech-Vizプロジェクトが停止されます。
Mech-Viz分岐を選択
Mech-Vizプロジェクトに「メッセージによって異なる分岐を実行」のステップがある場合、このコマンドはMech-Vizにある「メッセージによって異なる分岐を実行」ステップを指定された出口に沿って実行し続けることを制御します。このコマンドを呼び出す前に、MM_Start_Vizを呼び出す必要があります。 Mech-Vizが「メッセージによって異なる分岐を実行」ステップまで実行されていく時、203コマンドからその分岐の出口が送信されることを待ちます。
パラメータ説明
入力:
-
Branch_Name:分岐ステップの番号で、正の整数である必要があります。
-
Branch_Exit_Port:分岐ステップの出口番号を指定すると、Mech-Vizプロジェクトはこの出口に沿って実行を続けます。パラメータ範囲は[1-99]です。
|
-
Set_Branch:メッセージが実行する分岐を設定します。
変数「FromCamera」から返されたデータ:
-
FromCamera.STATUS_CODE:エラーがなければ、2105のステータスコードが返されます(分岐の設定ができた)。エラーが発生した場合、エラーを表すエラーコードが返されます。
サンプル
詳細な説明
このサンプルプログラムで、変数 Camera_User.Set_Branch が立ち上がると、Mech-Vizプロジェクトが分岐1まで実行される際に、出口番号1に沿って実行し続けることを指定します。
移動インデックスを設定
リストによる移動、グリッドによる移動、事前計画パレットパターン、カスタマイズのパレットパターンなど、インデック機能を持つ移動ステップは、このコマンドを実行することでインデックス値を設定することができます。このコマンドを呼び出す前に、MM_Start_Vizを実行する必要があります。
パラメータ説明
入力:
-
Index_Name:インデックス付きの移動ステップのステップIDで、正の整数である必要があります。
-
Index_Counter::このパラメータの値は、Mech-Vizに表示される現在のインデックス値に1を加えた値です。 次にこのステップが実行されたときに設定されるべきインデックス値です。 このコマンドを送信すると、Mech-Vizの現在のインデックス値がこのパラメータの値から1を引いた値に変更されます。 このコマンドで指定したステップに Mech-Viz プロジェクトが実行されると、 Mech-Viz の 現在のインデックス の値が、このパラメータの値まで1つずつ増加します。
Index_Name、Index_CounterとMM_Set_Branch関数にあるBranch_Name、Branch_Exit_Portは、構造体変数 ToCameraにある同じなVIZ_TASK_NAME、VIZ_TASK_VALUE変数に対応しています。設定値が違うと、同時に有効になりません。 -
Set_Index:信号をトリガーしてインデックスの番号を設定します。
変数「FromCamera」から返されたデータ:
-
FromCamera.STATUS_CODE:エラーがなければ、2106のステータスコードが返されます(インデックス設定成功)。エラーが発生した場合、エラーを表すエラーコードが返されます。
サンプル
詳細な説明
このサンプルプログラムで、変数 Camera_User.Set_Index が立ち上がると、Mech-Vizプロジェクト内のステップ名が5のステップの現在インデックス値が4に設定されます。
計画経路を取得
このコマンドは、Mech-Vizプロジェクトに計画した把持経路を取得するために使用されます。
パラメータ説明
入力:
-
Request_Pose_Type: 取得する経路上の点の位置姿勢の種類を指定します。
-
1 :Mech-VizからロボットのJPS (関節角度)が返されます。
-
2 :Mech-VizからロボットのTCPが返されます。
-
-
Get_VizData:Mech-Vizプロジェクトで計画した把持経路を取得します。正常立ち上がり時は有効になります。
-
Data_Ready:複数グループのロボット位置姿勢の受信専用で、位置姿勢データが読み取れることを表している信号です。
-
Send_Pose_Num:Mech-Vizが計画した経路にある目標点の数であり、範囲は[0,20]です。
-
Start_Empty: 取得した全てのTarget_Pose、Target_LabelとSpeed_Percentageデータが削除され、設定が有効になります。
出力:
-
Target_Pose:目標把持点のTCPであり、データ型は Array[0..19, 0..5] of DIntです。この配列データを10000で割って使用する必要があります。
-
Target_Label:Mech-Visionで認識される対象物のラベル情報であり、データ型はArray[0..19] of UDIntです。返されるラベルの値は整数です。
-
Target_Speed:Mech-Vizでこの移動ステップが設定されている速度パラメータです。範囲は[1-100]です。
変数「FromCamera」から返されたデータ:
-
FromCamera.STATUS_CODE:エラーがなければ、2100のステータスコードが返されます(取得できた)。エラーが発生した場合、エラーを表すエラーコードが返されます。
-
FromCamera.SEND_POSE_TYPE:目標把持点の位置姿勢のタイプです。INPUTにRequest_Pose_Typeが請求している位置姿勢のタイプと一致しています。1はJPSを表し、2はTCPを表しています。
-
FromCamera.VISUAL_POINT_INDEX:ビジョンポイント(プロジェクト内の「ビジョン処理による移動」ステップ)が経路における位置です。
サンプル
詳細な説明
このサンプルでは、変数 Camera_User.Get_VizData が立ち上がると、Mech-Vizから返されたロボット動作経路が取得され、経路点がTCP形式で表示されます。 変数Camera_User.Start_Emptyが設定されている場合、取得したCamera_User.Target_Pose、Camera_User.Target_LabelとCamera_User.Speed_Percentageのデータは削除されます。
DO信号リストを取得
Mech-Vizにある吸盤パテーション/複数把持を使用する際に、このコマンドで計画したパテーションのDO信号リストを取得することができます。このコマンドを呼び出す前に、MM_Get_VizDataを実行する必要があります。
XXXX/Mech-Center-xxx/tool/viz_project/suction_zone にあるsuction_zone.vizサンプルプロジェクトを参照してください。実行する前に、プロジェクトに対応する吸盤のコンフィグファイルを設定してください。
|
パラメータ説明
入力:
-
Get_DoList:Mech-Vizプロジェクトで計画したパテーションのDO信号リストを取得することができます。正常立ち上がり時は有効になります。
変数「FromCamera」から返されたデータ:
-
FromCamera.STATUS_CODE:エラーがなければ、2102のステータスコード(DOリストが取得できた)が返されます。エラーが発生した場合、エラーを表すエラーコードが返されます。
-
FromCamera.DO_LIST:このコマンドで、64 個のDOポートの値が返されます。
サンプル
詳細な説明
このサンプルプログラムで、変数 Camera_User.Get_DoList が立ち上がると、Mech-Vizで計算されたDOリストがDO配列に保存されます。
対象物の寸法をMech-Visionに入力
このコマンドはMech-Visionプロジェクトへ対象物の寸法を動的に入力するために使用されます。MM_Start_Visを実行する前に、呼び出す必要があります。
パラメータ説明
入力:
-
Vision_Proj_Num:Mech-Visionプロジェクト番号は、Mech-Visionプロジェクトリストで確認できます。プロジェクト前の数字はプロジェクト番号を表します。
-
External_Input_Box_Dimention:単位はミリメートルであり、例えば、箱の寸法の長さ、幅、高さを10000倍にしてから、External_Input_Box_Dimention[0-2] へ入力します。
External_Input_Box_DimentionとMM_Set_Pose関数にあるExternal_Input_Poseは、構造体変数ToCameraにある同じなEXT_INPUT_DATA変数に対応しています。設定値が違うと、同時に有効になりません。 -
Set_Box_Dimention:Mech-Visionプロジェクトにある対象物の寸法を動的に入力します。正常立ち上がり時は有効になります。
変数「FromCamera」から返されたデータ:
-
FromCamera.STATUS_CODE:エラーがなければ、1108のステータスコードが返されます(対象物の寸法を設定することができた)。エラーが発生した場合、エラーを表すエラーコードが返されます。
サンプル
詳細な説明
このサンプルプログラムで、変数 Camera_User.Set_Box_Dimension が立ち上がると、Mech-Visionプロジェクトにある「対象物の寸法を読み込む」ステップの対象物の寸法が External_Input_Box_Dimention[0-2] 変数の値に設定されます。
ソフトウェアのステータスを取得
このコマンドは、Mech-Vision、Mech-Viz、Mech-Centerの実行ステータスを取得するために使用されます(現在、Mech-Visionのみが取得可能です)。
パラメータ説明
入力:
-
Get_Status:Mech-Visionは登録できたかどうかを確認します。正常立ち上がり時は有効になります。
変数「FromCamera」から返されたデータ:
-
FromCamera.STATUS_CODE:システムのセルフチェックステータスです。
サンプル
詳細な説明
このサンプルプログラムでは、変数 Camera_User.Get_Status が立ち上がると、システムステータスを表しているステータスコードがチェックされ、変数「FromCamera.STATUS_CODE」に保存されます。
「通知」ステップのメッセージを取得
Mech-VisionまたはMech-Vizプロジェクトを実行した後、「通知」ステップで設定されたメッセージ(現在は整数のみがサポートされている)を取得します。
Mech-VisionまたはMech-Vizプロジェクトが「通知」ステップまで実行されると、設定されたメッセージはビジョンシステムに1秒間しかキャッシュされないため、このコマンドを使用する場合、メッセージの内容を取得するために呼び出し時間を適切に設定する必要があります。また、PLCはこのメッセージを使用した後、変数ToCamera.CLEAR_NOTIFYをトリガーする必要があります。これにより、信号相互作用サイクルのパルスが生成され、そのレジスタのデータがクリアされます。 |
パラメータ説明
入力:
-
Get_Notify:「通知」ステップのメッセージを取得します。正常立ち上がり時は有効になります。
変数「FromCamera」から返されたデータ:
-
NOTIFY_MSG:整数の「通知」ステップのメッセージ内容です。
サンプル
例えば、「通知」ステップで設定したメッセージを777とすると,PLCが自動モードでメッセージを取得するサンプルは以下のようになります。
詳細な説明
このサンプルでは、自動モードでCamera_User.Step_Numを3に設定し、このときFromCamera.NOTIFY_MSGが777でない場合にMM_Get_Custom_Notify機能を有効にします。変数Camera_User.Get_Notifyが立ち上がると、、「通知」ステップで事前に設定されたメッセージが取得されます。 メッセージを正常に取得した場合、FromCamera.NOTIFY_MSGは777に等しくなります。それ以外の場合、FromCamera.NOTIFY_MSGは777に等しくないため、PLCは3秒後に対応する警告メッセージを表示します。
付録
ステータスコード(エラーコードを含む)の意味
詳細については、 標準インターフェースのステータスコード一覧とトラブルシューティング をご参照ください。