ID : 3410
予備知識 (マスタとスレーブの概念)
ここでは、予備知識について、下記項目に分けて説明しています。
コンベアの情報の共有について
複数台のロボットで1台のコンベアに流れて来るワークをピックアップする場合、コンベアの情報を各ロボットで共有する必要があります。
例えば、2台のロボットで1台のコンベアに流れてくるワークをピックアップする場合を考えます。
デュアルアーム制御機能を使用しない場合
デュアルアーム制御機能を使用しない場合、ロボットコントローラは2台必要になります。
この時、コンベアのエンコーダとトリガを管理するロボットコントローラを決める必要があります。このロボットコントローラを"マスタコントローラ"と呼びます。もう片方のロボットコントローラは、マスタコントローラのコンベアの情報を共有させてもらう立場なので、"スレーブコントローラ"と呼びます。
マスタコントローラは、コンベアのエンコーダとトリガを管理するため、下記内容の実施が必要です。
エンコーダの設定 | エンコーダが接続されている軸番号の設定など。 |
---|---|
トリガの設定 | トリガが接続されているI/Oのポート番号など。 |
トラッキングバッファへのデータ登録 | トリガ信号が入力されたタイミングで、エンコーダのデータなどを、マスタコントローラ内のトラッキングバッファへ登録する。 |
トラッキングバッファのデータを、マスタコントローラとスレーブコントローラで共有し、2台のロボットによるコンベアトラッキングを実現します。
デュアルアーム制御機能を使用する場合
デュアルアーム制御機能を使用する場合、ロボットコントローラは1台なので、マスタとスレーブの役割は、ロボットに割り振ります。
デュアルアーム制御機能では各ロボットに対し、Robot0およびRobot1というロボット名が割り当てられます。したがって、Robot0またはRobot1のどちらかをマスタにします。
例えば、Robot0をマスタに設定したとします。マスタが実施しなくてはならない3つの内容はRobot0に対して⾏います。
エンコーダの設定とトリガの設定は、ティーチングペンダントで行います。デュアルアーム制御機能を使用する場合、ティーチングペンダントは1台なので、Robot0とRobot1のどちらの設定を行うかの切替えが必要です。
Robot0とRobot1の切替えは、[ロボット選択]ボタンで行います。Robot0に切替えると[ロボット選択]ボタンの左にあるアイコンの"R0"がオレンジ色にマーキングされます。この状態で、エンコーダの設定とトリガの設定を行います。
Robot0をマスタにした場合、Robot1はスレーブにします。スレーブも設定する項目があります。スレーブ(Robot1)の設定を行う場合は、[ロボット選択]ボタンでRobot1に切替えてから行います。
トラッキングバッファへのデータ登録
トラッキングバッファへのデータ登録については、プログラムで行います。デュアルアーム制御機能を使用する場合、Robot0とRobot1のどちらに対するコマンドであるかの指定が必要です。
Robot0をマスタにした場合、トラッキングバッファへの登録コマンド"TrackSetSensor"の先頭に、"Robot0."を付けます(下図を参照)。ここで、"Robot1."を"TrackSetSensor"の先頭に付けて実行すると、Robot1はマスタではないためエラーとなってしまいます。
"TrackSetSensor"はセンサトラッキング用のコマンドです。ビジョントラッキングには"TrackSetVision"を使用します。
なお、ロボット名("Robot0."や"Robot1.")を付けなくてはならないコマンドは、"TrackSetSensor"以外にもあり、それぞれに付けていると作業効率が悪い場合があります。その場合は、プリプロセッサ"#Pragma Optimize ("DefaultRobot", N)"を使用します。
ロボット名を付けなくてはならないコマンドの種類については、協調機能の仕様とほぼ同じです。"協調機能ガイド"の"コマンド"内にある"ロボットを指定して使用するコマンド"を参照してください。
プリプロセッサ"#Pragma Optimize ("DefaultRobot", N)"の"N"にはロボット名の番号を指定します。ロボット名がRobot0なら"0"を、Robot1なら"1"を指定します。
例えばプログラムの初めに下記のように記述しておくとします。
#Pragma Optimize ("DefaultRobot", 0)
この場合、ロボット名を付けることが必須であるコマンドに対し、特にロボット名を付けなかったコマンドについては、"Robot0."を付けたものとして処理されます。
例えば下記のように記述したとします。
#Pragma Optimize ("DefaultRobot", 0)
TrackSetSensor 1, 1
上記プログラムを実行した場合、下記プログラムを実行した場合と同じことになります。
Robot0.TrackSetSensor 1, 1
コンベアトラッキングのプログラミングでは、トラッキングバッファへの登録処理とは別に、トラッキング動作の作成も必要です。それらのプログラムをプリプロセッサ"#Pragma Optimize ("DefaultRobot", N)"を使用して作成すると下図のようになります。
2台のロボットがそれぞれ別のコンベアに対しコンベアトラッキングを行う場合
デュアルアーム制御機能を使用する場合で、2台のロボットがそれぞれ別のコンベアに対しコンベアトラッキングを行うとき、エンコーダとトリガは共有する必要がありません。したがって、Robot0とRobot1は両方ともマスタにします(スレーブはそれぞれ0台です)。エンコーダの設定およびトリガの設定や、トラッキングバッファへのデータ登録は、Robot0とRobot1でそれぞれ行います。
ここで注意しなくてはならないことは、エンコーダが接続されている軸番号の設定です。エンコーダの設定はマスタの役割です。Robot0とRobot1はそれぞれマスタなので、エンコーダの設定もそれぞれ行います。
例えば、7軸にRobot0で使用するエンコーダが、8軸にRobot1で使用するエンコーダを接続したとします。
モータ設定では上図のように、7軸の設定はRobot0に対して、8軸の設定はRobot1に対して行います。
7軸と8軸をRobot0に対して設定してしまうと、正しく動作しません。7軸と8軸をRobot1に対して設定しても正しく動作しません。
また、同じ軸に対し、Robot0とRobot1の"軸有効無効設定"が両方とも"有効"("エンコーダのみ有効"も含む)の設定にならないようにしてください。上図の場合、7軸の"軸有効無効設定"はRobot0の設定で"エンコーダのみ有効"にしているので、Robot1の7軸の設定は"無効"としてください。
モータ設定以外に、コンベアに対するエンコーダの軸番号、トリガの設定、トラッキングバッファへのデータ登録に関しても、設定の対象がRobot0なのか、Robot1なのかを正しく区別する必要があります。
スレーブの追加について
上記のように、Robot0、Robot1ともマスタにしてコンベアトラッキングを行う場合、両方のマスタに、別のロボットコントローラを、スレーブとして1台づつ追加することはできません。どちらか片方のマスタにのみ、ロボットコントローラをスレーブとして追加できます。
ロボット3台以上でコンベアを共有する場合
ロボット3台以上でコンベアを共有する場合は、マスタはデュアルアーム制御機能を使用するロボットコントローラで制御するロボットにのみ割り振ることができます。デュアルアーム制御機能を使用しないロボットコントローラを、マスタコントローラにすることはできません。
ID : 3410