コマンド説明¶
本節では、三菱QシリーズPLC(EtherNet内蔵)とMech-Mindソフトウェアシステムとの間でModbus TCP通信を行うためのコマンドについて説明します。レジスタマッピング・テーブルは こちら をご参照ください。
コマンド説明¶
Mech-Visionプロジェクトを実行¶
このコマンドは、Mech-Vizを使用せずMech-Visionを使用する場合に使用します。このコマンドを実行すると、Mech-Visionプロジェクトが起動され、カメラ撮影とビジョン処理による認識が行われます。
パラメータ説明
入力パラメータ:
Vision_Proj_Num:Mech-Visionプロジェクト番号で、Mech-Visionプロジェクトリストで確認できます。プロジェクト前の数字はプロジェクト番号を表します。
Req_Pose_Num: Mech-Visionから出力されたビジョン結果の数を設定します。設定可能な範囲は[1-20]であり、値を0に設定すると、すべての結果が返されます。
Robot_Pose_Type:ロボットの位置姿勢形式で、ロボット実機の位置姿勢をMech-Visionに送信する形式を指定します。範囲は0~3です。
Camera_User.Robot_Pose_JPS:ロボットの現在の関節角度です。データ型は1次元の配列Array[0..5] of Realとなります。
Camera_User.Robot_Pose_Flange:ロボットの現在のフランジ位置姿勢です。データ型は1次元の配列Array[0..5] of Realとなります。
Robot_Pose_Type、Camera_User.Robot_Pose_JPSおよびCamera_User.Robot_Pose_Flangeのパラメータ値と説明は以下の通りです。
Robot_Pose_Type
Camera_User. Robot_Pose_JPS
Camera_User. Robot_Pose_Flange
説明
適用シーン
0
0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0
Mech-Visionにロボットの位置姿勢を送信する必要がありません。
プロジェクトは、Eye To Handモードです。Mech-Visionプロジェクトで「経路計画」ステップを使用する場合、経路計画の開始位置は、経路計画ツールで設定した原点です。
1
ロボットの現在の関節角度
ロボットの現在のフランジ位置姿勢
Mech-Visionにロボットの現在の関節角度とフランジ位置姿勢を送信する必要があります。
プロジェクトは、Eye In Handモードです。この設定は、直行ロボット以外のほとんどのロボットで利用可能です。
2
0, 0, 0, 0, 0, 0
ロボットの現在のフランジ位置姿勢
Mech-Visionにロボットの現在のフランジ位置姿勢を送信する必要があります。
プロジェクトは、Eye In Handモードです。ロボットは関節角度のデータを持たず、フランジい位置姿勢データのみを持ちます(直行ロボットの場合など)。
3
ロボット経路計画の開始位置の関節角度
0, 0, 0, 0, 0, 0
Mech-Visionにロボット経路計画の開始位置の関節角度を送信する必要があります。
プロジェクトは、Eye To Handモードです。また、Mech-Visionプロジェクトに「経路計画」ステップがあり、ロボット側から「経路計画」ステップの開始位置を設定する必要があります。
Start_Vision:Mech-Visionプロジェクトを実行し、立ち上がりエッジが持つと有効になります。
グローバルラベルの返されたデータ:
Status_Code:エラーがなければ、1102(実行成功)のステータスコードを返し、エラーがあれば、エラーコードを返します。
サンプルプログラム
説明
このサンプルでは、ラベル Camera_User.Start_Vis が立ち上がりエッジを持つと、Mech-Visionプロジェクト1が実行されます。また、Mech-Visionプロジェクト1からビジョン結果が返され、PLCはMech-Visionが起動した時の関節角度データをMech-Centerに送信します。
ビジョン結果を取得¶
このコマンドは、Mech-Vizを使用せずMech-Visionを使用する場合に使用します。Mech-Visionプロジェクト起動後、ビジョン処理による認識結果を取得するために、このコマンドが使われています。
パラメータ説明
入力パラメータ:
Vision_Proj_Num:Mech-Visionプロジェクト番号で、Mech-Visionプロジェクトリストで確認できます。プロジェクト前の数字はプロジェクト番号を表します。
Get_VisData:Mech-Visionプロジェクトのビジョン処理による認識結果を取得します。立ち上がりエッジを持つと有効になります。
グローバルラベルの返されたデータ:
Status_Code:エラーがなければ、ステータスコード1100(ビジョンポイントの取得に成功)を返します。エラーがあれば、エラーコードが返されます。
Status_of_Pose_Sent:1は、書き込まれた位置姿勢データが新しいことを意味します。PLCが位置姿勢データを読み込んだ後にMM_Empty_Targetを再起動し、このレジスタを0に設定してください。
Number_of_Pose_Sent:Mech-Visionから返されたビジョン結果の数で、範囲は[1-20]です。
Target_Pose:Mech-Visionから返されたロボットの位置姿勢データで、形式がTCPとなります。
Target_Label:ラベル、Mech-Visionによって認識された対象物のラベル情報です。返されたラベル値が整数です。
サンプルプログラム
説明
このサンプルでは、ラベル Camera_User.Get_VisData が立ち上がりエッジを持つと、Mech-Visionプロジェクト1のビジョン結果が取得されます。
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のパラメータレシピの切り替えを行います。立ち上がりエッジを持つと有効になります。
グローバルラベルの返されたデータ:
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)の形式で返されます。注意
ここでRequest_Pose_Typeと関数MM_Start_Vis、MM_Start_VizのRobot_Pose_Typeが、MM Modbus TCP Interfaceデータブロックの「Pose Type」変数に対応していますが、設定する値が異なると同時に有効ではありません。
Get_VisData:Mech-Visionの「経路計画」ステップの結果を取得します。立ち上がりエッジを持つと有効になります。
グローバルラベルの返されたデータ:
Status_Code:コマンドが正常に実行された場合、 1103 のステータスコードが返されます。エラーが発生した場合、エラーを表すエラーコードが返されます。
Status_of_Pose_Sent:1は、書き込まれた位置姿勢データが新しいことを意味します。PLCが位置姿勢データを読み込んだ後にMM_Empty_Targetを再起動し、このレジスタを0に設定してください。
Number_of_Pose_Sent:Mech-Visionが計画した経路における経路点の数で、範囲は[1-20]です。
Index_of_Vision_Picking_Point:ビジョン処理による移動の経路点が経路全体における位置です。
Target_Pose:データ形式が関節角度またはXYZオイラー角で、入力パラメータRequest_Pose_Typeによって異なります。
Target_Label:Mech-Visionによって認識された対象物のラベル情報です。返されたラベル値が整数です。
Speed_Percentage:経路計画設定ツールでこの移動ステップに設定されたゼロでない速度パラメータです。
サンプルプログラム
説明
このサンプルでは、 Camera_User.Get_VisData が立ち上がりエッジを持つと、Mech-Visionプロジェクト1から返されたロボット動作経路が取得されます。経路点の形式がJPsとなります。
Mech-Vizプロジェクトを実行¶
このコマンドは、Mech-VisionとMech-Vizの両方を使用する場合に使われます。Mech-Vizプロジェクトを実行し、対応するMech-Visionプロジェクトを呼び出し、Mech-VizがMech-Visionのビジョン結果に基づいて経路を計画する時に使用されます。
パラメータ説明
入力パラメータ:
Robot_Pose_Type:ロボットの位置姿勢形式で、ロボット実機の位置姿勢をMech-Vizに送信する形式を指定します。範囲は0~2です。
Camera_User.Robot_Pose_JPS:ロボットの現在の関節角度です。データ型は1次元の配列Array[0..5] of Realとなります。
Camera_User.Robot_Pose_Flange:ロボットの現在のフランジ位置姿勢です。データ型は1次元の配列Array[0..5] of Realとなります。
Robot_Pose_Type、Camera_User.Robot_Pose_JPSおよびCamera_User.Robot_Pose_Flangeのパラメータ値と説明は以下の通りです。
Robot_Pose_Type
Camera_User. Robot_Pose_JPS
Camera_User. Robot_Pose_Flange
説明
適用シーン
0
0, 0, 0, 0, 0, 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
ロボット側でカスタマイズされた関節角度
0, 0, 0, 0, 0, 0
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に設定する必要があります。
Start_Viz:Mech-Vizプロジェクトを実行します。
グローバルラベルの返されたデータ:
Status_Code:エラーがなければ、 2103(Mech-Vizの起動に成功)のステータスコードが返されます。エラーが発生した場合、エラーを表すエラーコードが返されます。
サンプルプログラム
説明
このサンプルでは、ラベル Camera_User.Start_Viz が立ち上がりエッジを持つと、Mech-Vizプロジェクトが実行され、ロボットの現在の関節角度がMech-Centerに送信されます。
Mech-Vizプロジェクトを停止¶
Mech-Vizプロジェクトの実行を停止します。Mech-Vizプロジェクトがデッドループになっていない場合や、正常に停止できる場合は、このコマンドを使用する必要はありません。
パラメータ説明
入力パラメータ:
Stop_Viz:実行しているMech-Vizを停止します。立ち上がりエッジを持つと有効になります。
グローバルラベルの返されたデータ:
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:「メッセージによって異なる分岐を実行」のステップIDで、正の整数である必要があります。
Branch_Exit_Port:「メッセージによって異なる分岐を実行」ステップの出口番号を指定すると、Mech-Vizプロジェクトはこの出口に沿って実行を続けます。パラメータ範囲は[1-99]です。
注意
出口番号はMech-Vizで表されるポート番号+1になります。例えば、ポート番号が0の場合、出口番号は1です。
Set_Branch:ステップ「メッセージによって異なる分岐を実行」がある出口に沿って実行することを設定します。立ち上がりエッジを持つと有効になります。
グローバルラベルの返されたデータ:
Status_Code:エラーがなければ、2105(分岐の設定に成功)のステータスコードが返されます。エラーが発生した場合、エラーを表すエラーコードが返されます。
サンプルプログラム
説明
このサンプルでは、ラベル Camera_User.Set_Branch が立ち上がりエッジを持つと、Mech-Vizプロジェクトが名前1の「メッセージによって異なる分岐を実行」ステップに実行したときに出口1から実行を続けることを指定します。
移動インデックスを設定¶
リストによる移動、グリッドによる移動、事前計画パレットパターン、カスタマイズのパレットパターンなど、インデック機能を持つ移動ステップは、このコマンドを実行することでインデックス値を設定することができます。このコマンドを呼び出す前に、MM_Start_Vizを実行する必要があります。
パラメータ説明
入力パラメータ:
Index_Name:インデックス付きの移動ステップのステップIDで、正の整数である必要があります。
Index_Counter:
次にこのステップが実行されたときに設定されるべきインデックス値です。
このコマンドを送信すると、Mech-Vizの現在のインデックス値がこのパラメータの値から1を引いた値に変更されます。
このコマンドで指定したステップにMech-Vizプロジェクトが実行されると、Mech-Vizの現在のインデックス値が、このパラメータの値まで1つずつ増加します。
Set_Index:トリガー信号、インデックスの設定に使用されます。立ち上がりエッジを持つと有効になります。
グローバルラベルの返されたデータ:
Status_Code:エラーがなければ、2106(インデックス設定に成功)のステータスコードが返されます。エラーが発生した場合、エラーを表すエラーコードが返されます。
サンプルプログラム
説明
このサンプルでは、ラベル Camera_User.Set_Index が立ち上がりエッジを持つと、Mech-Vizプロジェクトに5という名前を持つステップの現在のインデックスが3に設定されます。
計画経路を取得¶
このコマンドは、Mech-Vizプロジェクトに計画した把持経路を取得するために使用されます。
パラメータ説明
入力パラメータ:
Request_Pose_Type: 取得する経路上の点の位置姿勢の種類を指定します。
1:Mech-Vizから返された位置姿勢形式がロボットの関節角度です。
2:Mech-Vizから返された位置姿勢形式がロボットTCPです。
注意
ここでRequest_Pose_Typeと関数MM_Start_Vis、MM_Start_VizのRobot_Pose_Typeが、グローバルラベル「MM_Camera」の「Pose Type」ラベルに対応していますが、設定する値が異なると同時に有効ではありません。
Get_VizData:Mech-Vizプロジェクトで計画した把持経路を取得します。立ち上がりエッジを持つと有効になります。
グローバルラベルの返されたデータ:
Status_Code:エラーがなければ、 2100(取得成功)のステータスコードが返されます。エラーが発生した場合、エラーを表すエラーコードが返されます。
Status_of_Pose_Sent:1は、書き込まれた位置姿勢データが新しいことを意味します。PLCが位置姿勢データを読み込んだ後にMM_Empty_Targetを再起動し、このレジスタを0に設定してください。
Number_of_Pose_Sent:Mech-Vizが計画した経路における目標点の数で、範囲は[1-20]です。
Index_of_Vision_Picking_Point:ビジョンポイント(つまり、プロジェクトにある「ビジョン処理による移動」ステップ)が経路における位置です。
Target_Pose:データ形式が関節角度またはオイラー角であり、送信した205コマンドで設定された位置姿勢タイプによって異なります。
Target_Label:Mech-Visionによって認識された対象物のラベル情報です。返されたラベル値が整数です。
Speed_Percentage:Mech-Vizでこのステップに設定されたゼロでない速度パラメータです。
サンプルプログラム
説明
このサンプルでは、ラベル Camera_User.Get_VizData が立ち上がりエッジを持つと、Mech-Vizから返されたロボット動作経路が取得され、経路点がTCP形式で表示されます。
DOリストを取得¶
Mech-Vizにある吸盤パテーション/複数把持を使用する際に、このコマンドで計画したパテーションのDO信号リストを取得することができます。このコマンドを呼び出す前に、MM_Get_VizDataを実行する必要があります。
ヒント
XXXX/Mech-Center-xxx/tool/viz_project/suction_zone
にある suction_zone.vizサンプルプロジェクトを参照してください。実行する前に、プロジェクトに対応する吸盤のコンフィグファイルを設定してください。
パラメータ説明
入力パラメータ:
Get_DoList:Mech-Vizプロジェクトで計画したパテーションのDO信号リストを取得することができます。立ち上がりエッジを持つと有効になります。
グローバルラベルの返されたデータ:
Status_Code:エラーがなければ、2102(DOリストの取得に成功)のステータスコードが返されます。エラーが発生した場合、エラーを表すエラーコードが返されます。
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プロジェクトリストで確認できます。プロジェクト前の数字はプロジェクト番号を表します。
Camera_User.External_Input_Box_Dimension(ラベル):箱の寸法(長さ、幅、高さなど)、ミリメートル単位。
Set_Box_Dimention:動的にMech-Visionプロジェクトに送信した対象物の寸法で、立ち上がりエッジを持つと有効になります。
グローバルラベルの返されたデータ:
Status_Code:エラーがなければ、 1108(対象物寸法の設定に成功)のステータスコードが返されます。エラーが発生した場合、エラーを表すエラーコードが返されます。
サンプルプログラム
説明
このサンプルでは、ラベル Camera_User.Set_Box_Dimension が立ち上がりエッジを持つと、Mech-Visionプロジェクトの「対象物の寸法を読み込む」ステップで対象物の寸法がExternal_Input_Box_Dimension[0-2]ラベル値に設定されます。
Mech-VizへTCPを入力¶
このコマンドは位置姿勢のデータを動的に入力する際に使われています。Mech-Vizにある外部移動ステップと合わせて使用し、MM_Start_Vizを呼び出す前に実行する必要があります。
ヒント
XXXX/Mech-Center-xxx/tool/viz_project/outer_move
にあるouter_move.vizサンプルプロジェクトを参照してください。実行する前に、その中にあるouter_moveを適切な場所に配置してください。
パラメータ説明
入力パラメータ:
Camera_User.External_Input_Pose(ラベル):ロボットのTCPデータ、ミリメートル単位。
Set_Input_Pose:動的に入力した位置姿勢データ、立ち上がりエッジを持つと有効になります。
グローバルラベルの返されたデータ:
Status_Code:エラーがなければ、2107(外部からの位置姿勢の設定に成功)のステータスコードが返されます。エラーが発生した場合、エラーを表すエラーコードが返されます。
サンプルプログラム
説明
このサンプルでは、ラベル Camera_User.Set_Pose が立ち上がりエッジを持つと、位置姿勢ラベルExternal_Input_Pose[0-5]が表す位置姿勢データはMech-Vizの「外部移動」ステップに送信されます。
ソフトウェアのステータスを取得¶
このコマンドは、Mech-Vision、Mech-Viz、Mech-Centerの実行ステータスを取得するために使用されます(現在、Mech-Visionのみが取得可能です)。
パラメータ説明
入力パラメータ:
Get_Status:Mech-Visionは登録できたかどうかを確認します。立ち上がりエッジを持つと有効になります。
グローバルラベルの返されたデータ:
Status_Code:システムのセルフチェックステータスです。
サンプルプログラム
説明
このサンプルでは、ラベル Camera_User.Get_Status が立ち上がりエッジを持つと、システムステータスのステータスコードがチェックされ、ラベルStatus_Codeに保存されます。
目標データをクリア¶
このコマンドは、取得されたTarget_Pose、Target_Label、Speed_Percentageデータをクリアするために使用されます。
パラメータ説明
入力パラメータ:
Start_Empty:取得された全てのTarget_Pose、Target_LabelとSpeed_Percentageデータが削除されます。設定されている場合、有効になります。
グローバルラベルの返されたデータ:
Status_Code:エラーがなければ、3103(Modbus TCPデータのクリアに成功)のステータスコードが返されます。エラーが発生した場合、エラーを表すエラーコードが返されます。
Target_Pose:取得された目標位置姿勢データ。
Target_Label:取得された目標ラベル。
Speed_Percentage:取得されたゼロでない速度パラメータ。
サンプルプログラム
説明
このサンプルでは、ラベル Camera_User.Start_Empty が設定されると、取得された全てのTarget_Pose、Target_Label、Speed_Percentageデータがクリアされます。
付録¶
ステータスコード(エラーコードを含む)の意味¶
詳細については、 Mech-Mind-標準インターフェースのステータスコード一覧とトラブルシューティング をご参照ください。