(58)【調査した分野】(Int.Cl.,DB名)
前記分離手段により分離された非同期命令のうちの前記周辺装置に関する命令について、前記第2制御手段により当該周辺装置の動作が制御されている間に取得した当該命令を取得した順番に格納する格納手段をさらに備え、
前記第2制御手段は、前記格納手段が格納した命令を前記順番で実行することを特徴とする請求項1に記載の制御システム。
前記周辺装置に加えて1または複数の他の装置からなる周辺装置群が存在し、当該周辺装置群の動作が前記ロボットの動作と同期して制御され、当該周辺装置の動作が当該ロボットの動作と同期せずに制御される前記非同期区間が設けられている場合に、当該非同期区間において、
前記第1制御手段は、前記分離手段により分離された非同期命令のうちの前記ロボットに関する命令および前記周辺装置群に関する命令に基づいて、当該ロボットおよび当該周辺装置群の動作を同期させて制御し、
前記第2制御手段は、前記分離手段により分離された非同期命令のうちの前記周辺装置に関する命令に基づいて、前記ロボットおよび前記周辺装置群の動作と同期させずに当該周辺装置の動作を制御する
ことを特徴とする請求項1または2に記載の制御システム。
前記周辺装置に加えて、前記ロボットの動作と同期せずに制御される非同期区間が設けられている1または複数の周辺装置が存在し、各周辺装置の当該非同期区間の少なくとも一部が重複する場合に、当該非同期区間が重複する区間において、前記第2制御手段は、当該重複する区間で当該非同期区間が設けられた各周辺装置の動作を当該ロボットおよび他の周辺装置の動作と同期させずに制御することを特徴とする請求項1乃至3のいずれか1項に記載の制御システム。
前記移動関連命令は、前記教示プログラムのうちのメイン教示プログラムに呼び出されるサブ教示プログラムに記述されることを特徴とする請求項1乃至4のいずれか1項に記載の制御システム。
予め定められた記憶部に記憶され、ロボットおよび周辺装置に実行させる動作が記述された教示プログラムにおいて、前記周辺装置の動作が前記ロボットの動作と同期しない非同期区間と当該非同期区間ではない同期区間とを識別し、当該教示プログラムの命令のうち、当該ロボットおよび当該周辺装置の少なくともいずれか一方の移動に関する命令である移動関連命令について、当該非同期区間の命令か当該同期区間の命令かを判定するステップと、
前記非同期区間の命令と判定された非同期命令について、前記ロボットおよび前記周辺装置の装置ごとの命令に分離するステップと、
前記同期区間の命令と判定された同期命令に基づいて、前記ロボットおよび前記周辺装置の動作を同期させて制御し、また、分離された非同期命令のうちの当該ロボットに関する命令に基づいて、当該ロボットの動作を制御するステップと、
分離された非同期命令のうちの前記周辺装置に関する命令に基づいて、前記ロボットの動作と同期させずに当該周辺装置の動作を制御するステップと
を含む、方法。
【発明を実施するための形態】
【0015】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。まず、本実施の形態の概要について説明する。
近年、溶接ロボットシステムでは、溶接ロボットとともに制御装置(ロボットコントローラ)で制御される周辺装置が大型化している。周辺装置としては、例えば、溶接対象となるワークの位置を決める装置であるポジショナや、溶接ロボットを移動させる装置であるスライダなどが該当する。このような周辺装置の大型化に伴い、ワーク着脱時などのポジショナによるワークの位置決めや、ポジショナの動作を干渉しない位置へ溶接ロボットを退避させるためのスライダによる動作など、溶接開始前に周辺装置を動作させる時間が長くなっている。そのため、1つのワークを溶接するのに必要な合計時間であるサイクルタイムの増加を招いている。また、溶接ロボットによるワイヤカットやノズル交換など、溶接周辺作業もサイクルタイムが増加する要因である。
【0016】
ここで、溶接ロボットおよび周辺装置に実行させる動作は教示プログラムに定義されており、教示プログラムは、各装置の移動を指示する移動命令や、移動命令に付随して移動速度等の移動条件を指定する命令、溶接ロボットにワイヤカットを実行させる命令等を含んでいる。また、移動命令には、溶接ロボットや周辺装置の目標位置が含まれており、移動命令の実行により各装置の動作が同期するように制御される場合がある。例えば、1つの移動命令により、各装置が装置ごとに定められた目標位置に向けて同時に動き出し同時に到達するように制御される場合がある。このような場合には、目標位置までの移動時間が最長となる装置に合わせて、他の装置の移動速度が調節される。
【0017】
このような状況下でサイクルタイムを短縮するためには、例えば、溶接ロボットの移動と周辺装置の移動とをそれぞれ独立して行うことや、周辺装置の移動中に並行して溶接ロボットにワイヤカットなどの他の動作を実行させること等が考えられる。しかし、各装置にこのような動作をさせるためには、操作者は、各装置の動作の関係を考慮して各装置の動作を混合した教示プログラムを作業ごとに個別に作成する必要がある。例えば、ポジショナのワーク位置決め中に並行して溶接ロボットにワイヤカットを実行させる場合には、ポジショナに対する移動命令のそれぞれに合わせて溶接ロボットの動作も規定してワイヤカットを実行させるプログラムを作業ごとに個別に作成する必要がある。また、溶接ロボットによるワイヤカットをポジショナの位置決めと並行して行う場合と並行して行わない場合とでは、それぞれのプログラムを個別に作成する必要がある。
【0018】
そのため、教示プログラムの作成時間が増加することが考えられる。また、作成した教示プログラムの内容の確認がより困難になることや、教示プログラム作成者のスキルによってはサイクルタイムの短縮につながらないことも考えられる。さらに、教示プログラムの命令は記述された順番に実行されることが求められるが、教示プログラムにおいて各装置が非同期制御される区間を設定しただけでは、命令が記述された順番に実行されない場合がある。
そのため以下にて、サイクルタイムの短縮を、プログラムの修正作業を軽減して実現する手順について説明する。
【0019】
〔システム構成〕
図1は、本実施の形態に係る溶接ロボットシステムの概略構成を示す図である。
図1に示すように、溶接ロボットシステムは、溶接に関する各種の作業を行う溶接ロボット10と、ワークWの位置を決める周辺装置の一例としてのポジショナ20と、溶接ロボットシステムの各装置を制御する制御装置30と、ワイヤをカットするワイヤカッタ40と、溶接作業のための設定や教示プログラムの作成に使用される教示ペンダント50とを備える。また、
図1に示す例では記載していないが、本実施の形態に係る溶接ロボットシステムは、例えば、溶接ロボット10を移動させるために溶接ロボット10の下に配置されるスライダ(不図示)等の他の周辺装置を備えることとしても良い。
【0020】
溶接ロボット10は、複数の関節を有する腕(アーム)を備え、教示プログラムに基づく溶接に関する各種作業を行う。また、溶接ロボット10の腕の先端には、ワークWに対する溶接作業を行うための溶接トーチ11が設けられる。
ポジショナ20は、教示プログラムに基づいて、ワークWの位置を調節する。
制御装置30は、詳細については後述するが、予め教示された教示プログラムを記憶する記憶装置(メモリ)と、教示プログラムを読み込んで溶接ロボット10、ポジショナ20、ワイヤカッタ40の動作を制御する処理装置(CPU)とを備える。教示プログラムは、教示ペンダント50から送信される場合や、教示プログラム作成装置(不図示)により作成され、データ通信により送信される場合がある。また、教示プログラムは、例えばメモリカード等のリムーバブルな記憶媒体を介して制御装置30に渡される場合もある。
【0021】
ワイヤカッタ40は、溶接ロボット10に取り付けられたワイヤをカットする。
教示ペンダント50は、溶接ロボット10による溶接作業を行うために、操作者が溶接経路や溶接作業条件等を設定したり、教示プログラムを作成したりするために使用される。教示ペンダント50は、液晶ディスプレイなどにより構成された表示画面51と、入力ボタン52とを備えている。
【0022】
〔制御装置のハードウェア構成〕
図2は、本実施の形態に係る制御装置のハードウェア構成例を示す図である。
図2に示すように、制御装置30は、演算手段であるCPU(Central Processing Unit)61と主記憶手段であるメモリ62とを備える。また、制御装置30は、外部デバイスとして、磁気ディスク装置(HDD:Hard Disk Drive)63とキーボードやマウス等の入力デバイス64とを備える。さらに、制御装置30は、外部装置とデータの送受信を行うインタフェース65と記憶媒体に対してデータの読み書きを行うためのドライバ66とを備える。なお、
図2は、制御装置30をコンピュータシステムにて実現した場合のハードウェア構成を例示するに過ぎず、制御装置30は図示の構成に限定されない。
【0023】
〔制御装置の機能構成〕
図3は、本実施の形態に係る制御装置30の機能構成例を示すブロック図である。
図3に示すように、制御装置30は、教示プログラムを格納する教示プログラム記憶部31と、移動関連の命令を後述する移動関連命令分離部33に送り、移動関連ではない命令を実行する命令解釈部32と、同期区間の命令か非同期区間の命令かを判定し、判定した結果に応じて移動関連命令を装置ごとの命令に分離する移動関連命令分離部33とを備える。また、制御装置30は、装置の移動状態に基づいて移動関連命令を後述するサブ軌跡計算部36に送るか内部に蓄積するかを選択する移動関連命令バッファ部34と、移動関連命令に基づいて同期制御する装置について移動に関する情報を計算するメイン軌跡計算部35と、移動関連命令に基づいて同期制御対象ではない装置について移動に関する情報を計算するサブ軌跡計算部36と、各装置の動作を実行するモータ駆動部37とを備える。
【0024】
命令解釈部32、移動関連命令分離部33、移動関連命令バッファ部34、メイン軌跡計算部35、サブ軌跡計算部36、モータ駆動部37は、例えば、
図2に示したハードウェア構成におけるCPU61により実現される。より具体的には、コンピュータにて本実施の形態による制御装置30の機能を実現するプログラムがドライバ66やインタフェース65を介して磁気ディスク装置63に格納され、このプログラムをメモリ62に展開し、CPU61が実行することにより、上記の命令解釈部32、移動関連命令分離部33、移動関連命令バッファ部34、メイン軌跡計算部35、サブ軌跡計算部36、モータ駆動部37の各機能が実現される。移動関連命令バッファ部34は、さらに、例えば、
図2に示したハードウェア構成におけるメモリ62や磁気ディスク装置63等の記憶部により実現される。また、教示プログラム記憶部31も、メモリ62や磁気ディスク装置63等の記憶部により実現される。
【0025】
記憶手段の一例としての教示プログラム記憶部31は、予め教示された教示プログラムを記憶する。そして、命令解釈部32からの要求に応じて、教示プログラムを命令解釈部32に送信する。
【0026】
命令解釈部32は、外部からの入力を受け付け、受け付けた入力内容に応じた教示プログラムを教示プログラム記憶部31から取得する。外部からの入力は、例えば、教示ペンダント50(
図1参照)から
図2に示したインタフェース65を介して行われる場合や、操作者が
図2に示した入力デバイス64を操作して行われる場合等がある。そして、命令解釈部32は、取得した教示プログラムの命令について、移動関連命令か移動関連ではない命令かを判定する。
【0027】
取得した命令が移動関連命令の場合、命令解釈部32はその移動関連命令を移動関連命令分離部33に送信する。また、取得した命令が移動関連ではない命令の場合、命令解釈部32はその移動関連ではない命令を実行する。ここで、移動関連命令には、上述したように、各装置の移動を指示する移動命令や移動命令に付随して装置の移動速度等の移動条件を指定する命令等が含まれる。また、移動関連ではない命令には、溶接ロボット10にワイヤカットやノズル交換を実行させるためのIO入出力命令等が含まれる。
【0028】
また、命令解釈部32は、後述する非同期対象装置の非同期区間を終了する命令を実行する場合、移動関連命令の要求をメイン軌跡計算部35から待ち受けるとともに、非同期対象装置の移動が完了した旨の通知を移動関連命令バッファ部34から待ち受ける。そして、命令解釈部32が命令要求および移動完了通知の両方を受信すると、非同期対象装置の非同期区間が終了し、命令解釈部32は次の命令の処理を行う。
【0029】
判定手段および分離手段の一例としての移動関連命令分離部33は、教示プログラムにおいて非同期区間と同期区間とを識別し、命令解釈部32から取得した移動関連命令が非同期区間の命令か同期区間の命令かを判定する。ここで、同期区間とは、溶接ロボット10の動作と、溶接ロボット10の周辺装置であるポジショナ20等の装置のうち同期制御対象とされた装置(以下、同期制御対象とされた装置を同期対象装置と称する)の動作とが同期制御される区間である。同期制御とは、複数の装置について、目標位置までの移動時間が最長となる装置に合わせてその他の装置の移動速度を決定することにより、複数の装置が現在位置を同時に出発して各装置の目標位置に同時に到達するように制御されることをいう。
【0030】
また、非同期区間とは、周辺装置であるポジショナ20等の装置のうち同期制御対象ではない装置として設定された装置(以下、同期制御対象ではない装置として設定された装置を非同期対象装置と称する)について、溶接ロボット10および同期対象装置の動作と非同期対象装置の動作とが同期制御されない区間である。非同期区間において、非同期対象装置は他装置の動作とは独立して制御され、教示プログラムで指定された移動速度により目標位置に到達するように制御される。
【0031】
また、移動関連命令について、移動関連命令分離部33が同期区間の移動関連命令と判定した場合、移動関連命令分離部33は移動関連命令をメイン軌跡計算部35に送る。一方、移動関連命令分離部33が非同期区間の移動関連命令と判定した場合、移動関連命令分離部33は移動関連命令を装置ごとの命令に分離し、溶接ロボット10および同期対象装置に関する移動関連命令をメイン軌跡計算部35に送り、非同期対象装置に関する移動関連命令を移動関連命令バッファ部34に送る。
【0032】
格納手段の一例としての移動関連命令バッファ部34は、非同期対象装置の移動状態に基づいて、移動関連命令分離部33から取得した移動関連命令をサブ軌跡計算部36に送るか、または、取得した移動関連命令を蓄積するかを選択する。ここで、移動関連命令バッファ部34は、取得した移動関連命令に対応する非同期対象装置について、サブ軌跡計算部36から移動状態を取得する。取得した非同期対象装置の移動状態が「移動中」である場合、移動関連命令バッファ部34は、その非同期対象装置の移動関連命令を内部に蓄積する。移動関連命令バッファ部34は移動関連命令を蓄積する場合、移動関連命令分離部33から移動関連命令を取得した順番に蓄積していく。一方、取得した非同期対象装置の移動状態が「移動中」ではない場合、移動関連命令バッファ部34は、移動関連命令をサブ軌跡計算部36に送信する。
【0033】
また、移動関連命令バッファ部34は、サブ軌跡計算部36から移動関連命令の要求を受信した場合に、蓄積している非同期対象装置の移動関連命令を、蓄積した順番でサブ軌跡計算部36に送信する。ここで、非同期対象装置の移動関連命令が蓄積されていなければ、移動関連命令バッファ部34は、その非同期対象装置の移動が完了した旨の移動完了通知を命令解釈部32に送信する。
【0034】
第1制御手段の一例としてのメイン軌跡計算部35は、移動関連命令分離部33に同期区間の命令と判定された移動関連命令、または、移動関連命令分離部33により分離された非同期区間の移動関連命令のうち溶接ロボット10および同期対象装置に関する移動関連命令に基づいて、溶接ロボット10および同期対象装置の移動に関する情報(以下、移動に関する情報を移動情報と称する)を計算する。移動情報は、各装置の指定された目標位置までの移動時間や移動速度等の情報であり、メイン軌跡計算部35は、計算した各装置の移動情報をモータ駆動部37に送る。また、溶接ロボット10および同期対象装置が目標位置に到達した場合、メイン軌跡計算部35は、命令解釈部32に次の移動関連命令を要求する。
【0035】
第2制御手段の一例としてのサブ軌跡計算部36は、移動関連命令分離部33により分離された非同期区間の移動関連命令のうち、非同期対象装置に関する移動関連命令に基づいて、非同期対象装置の移動情報を計算する。そして、サブ軌跡計算部36は、計算した各装置の移動情報をモータ駆動部37に送る。また、サブ軌跡計算部36は、モータ駆動部37に移動情報を送信した非同期装置について、その装置の移動状態を「移動中」とする。非同期装置が目標位置に到達すると、サブ軌跡計算部36は、その装置の移動状態を「移動中」から解除し、移動関連命令バッファ部34に次の移動関連命令を要求する。
【0036】
第1制御手段および第2制御手段の一例としてのモータ駆動部37は、メイン軌跡計算部35およびサブ軌跡計算部36から取得した各装置の移動情報に基づいて、例えば、
図2に示したインタフェース65を介して溶接ロボット10および周辺装置の動作を制御し、各装置を各装置それぞれの目標位置まで移動させる。
【0037】
〔教示プログラムでの非同期区間の説明〕
図4は、本実施の形態に係るメイン教示プログラムの一例を示す図である。
図4に示す教示プログラム(以下、教示プログラムAと称する)は、サブ教示プログラムを呼び出すメイン教示プログラムの一例である。
図4に示す例では、同期対象装置または非同期対象装置として、ポジショナ20の動作が制御されるものとする。教示プログラムAでは、1行目の命令でサブ教示プログラムである教示プログラムBが呼び出されて溶接ロボット10の退避が行われる。教示プログラムBの呼び出しについては非同期区間外であり、溶接ロボット10の退避が完了すると、次の命令が実行される。
【0038】
次に、2行目の命令でポジショナ20の非同期区間が開始され、ポジショナ20が非同期対象装置となる。そのため、3行目の命令で呼び出される教示プログラムC、4行目の命令で呼び出される教示プログラムDでは、移動関連命令が溶接ロボット10の移動関連命令とポジショナ20の移動関連命令とに分離されて実行される。そして、溶接ロボット10の動作とポジショナ20の動作とが同期制御されず、溶接ロボット10およびポジショナ20はそれぞれの移動速度で目標位置に移動する。
【0039】
そして、教示プログラムAの5行目の命令で、溶接ロボット10とポジショナ20との待ち合わせが行われる。例えば、溶接ロボット10とポジショナ20とで先に溶接ロボット10が目標位置に到達した場合、溶接ロボット10は、ポジショナ20がポジショナ20の目標位置に到達するのを待つこととなる。ポジショナ20が目標位置に到達すると、ポジショナ20の非同期区間が終了し、次の命令からは、溶接ロボット10とポジショナ20との同期制御が行われる。
【0040】
ここで、
図4に示す例では、溶接ロボット10およびポジショナ20の動作が制御される場合を説明したが、さらに1または複数の他の装置からなる周辺装置群を制御することとしても良い。ここで、非同期区間としてポジショナ20の非同期区間が設定されている場合、非同期区間の移動関連命令は溶接ロボット10、ポジショナ20、周辺装置群の装置ごとの命令に分離される。そして、分離された溶接ロボット10および周辺装置群の移動関連命令に基づいて、溶接ロボット10および周辺装置群の各装置の動作が同期して制御される。また、分離されたポジショナ20の移動関連命令に基づいて、ポジショナ20の動作が溶接ロボット10および周辺装置群の動作と同期せずに制御される。
【0041】
また、
図4に示す教示プログラムにおいて、非同期区間内の命令を「教示プログラムC呼び出し」や「教示プログラムD呼び出し」と記載したが、例えば、「非同期教示プログラムC呼び出し」や「非同期教示プログラムD呼び出し」のように、非同期区間内の命令であることを明示する記載にすることとしても良い。そして、例えば、非同期区間内の命令で先頭に「非同期」と記載していない場合はその命令の実行時にエラーが発生するようにしても良い。このような構成にすることで、操作者が誤って非同期区間内に同期制御の命令を記載しようとして教示プログラムを作成することを抑制することができる。
【0042】
〔教示プログラム実行処理手順〕
図5(
図5−1〜
図5−4)は、本実施の形態に係る教示プログラム実行処理の流れの一例を示すフローチャートである。
図5−1は、命令解釈部32および移動関連命令分離部33の処理の流れの一例を示すフローチャートである。
【0043】
まず、命令解釈部32は外部からの入力を受け付け、受け付けた入力内容に応じた教示プログラムの命令を教示プログラム記憶部31から取得する(ステップ101)。ここで、命令解釈部32は、移動命令を取得する場合には、合わせてその移動命令に続く速度設定命令等の他の移動関連命令も取得する。また、命令解釈部32は、ワイヤカッタ40等を駆動させる移動関連ではない命令を取得する場合には、合わせてその命令に続く移動関連ではない命令も取得する。
【0044】
次に、命令解釈部32は、取得した教示プログラムの命令について、移動関連命令か否かを判断する(ステップ102)。移動関連命令ではない場合(ステップ102でNo)、命令解釈部32は取得した命令を教示プログラムに記述された順に順次実行する。ここで、取得した命令に非同期区間終了の命令が含まれなければ(ステップ103でNo)、命令解釈部32は取得した命令を全て実行する(ステップ104)。そして、命令解釈部32は処理対象の教示プログラムの命令を全て実行したか否かを判断する(ステップ105)。教示プログラムの命令が全て実行されていれば(ステップ105でYes)、教示プログラム実行処理は終了する。一方、教示プログラムで実行されていない命令が存在すれば(ステップ105でNo)、ステップ101に移行する。
【0045】
一方、取得した命令に非同期区間終了の命令が含まれる場合(ステップ103でYes)、命令解釈部32は、取得した命令を教示プログラムに記述された順に順次実行し、非同期区間終了の命令を実行した後、メイン軌跡計算部35から送信される移動関連命令の要求と、移動関連命令バッファ部34から送信される非同期対象装置の移動完了通知とを待ち受ける(ステップ106)。命令解釈部32が移動関連命令の要求と移動完了通知との両方を受信すると、非同期対象装置の非同期区間は終了する。ここで、命令解釈部32は、移動関連命令分離部33に対して、非同期区間が終了したため以降の移動関連命令については装置ごとに分離しなくても良いことを通知しても良い。また、非同期区間終了後、ステップ101で取得した命令で実行されていない命令があれば、命令解釈部32はまだ実行されていない命令を実行した後、ステップ105に移行する。
【0046】
また、ステップ102で肯定の判断(Yes)がされた場合、即ち、教示プログラムの命令が移動関連命令である場合、命令解釈部32は移動関連命令を移動関連命令分離部33に送信する。ここで、命令解釈部32は、移動命令と合わせて取得した速度設定命令等の他の移動関連命令も移動関連命令分離部33に送信する。そして、移動関連命令分離部33は、取得した移動関連命令について同期区間の命令であるか否かを判断する(ステップ107)。
【0047】
移動関連命令分離部33が取得した移動関連命令が同期区間の命令ではない場合(ステップ107でNo)、即ち、非同期区間の命令であれば、移動関連命令分離部33は移動関連命令を装置ごとの命令に分離する(ステップ108)。そして、移動関連命令分離部33は分離した命令のうち、溶接ロボット10および同期対象装置に関する命令をメイン軌跡計算部35に送信し、非同期対象装置に関する命令を移動関連命令バッファ部34に送信する(ステップ109)。また、ステップ107で肯定の判断(Yes)がされた場合、即ち、移動関連命令分離部33が取得した移動関連命令が同期区間の命令である場合、ステップ109に移行し、移動関連命令分離部33は移動関連命令をメイン軌跡計算部35に送信する。
【0048】
次に、命令解釈部32は、メイン軌跡計算部35から命令要求を待ち受ける(ステップ110)。溶接ロボット10および同期対象装置の移動が完了すると、命令解釈部32はメイン軌跡計算部35から命令要求を受信し、ステップ105に移行する。
以上のように、教示プログラムの命令に対して、命令解釈部32および移動関連命令分離部33の処理が行われる。
【0049】
図5−2は、メイン軌跡計算部35およびモータ駆動部37が溶接ロボット10および同期対象装置を移動させる処理の流れの一例を示すフローチャートである。
メイン軌跡計算部35は、
図5−1のステップ109で移動関連命令分離部33から移動関連命令を取得する(ステップ201)。次に、メイン軌跡計算部35は、取得した移動関連命令に基づいて、溶接ロボット10および同期対象装置について移動情報を計算する(ステップ202)。そして、メイン軌跡計算部35は、計算した移動情報をモータ駆動部37に送信する。
【0050】
次に、モータ駆動部37は、メイン軌跡計算部35から取得した移動情報に基づいて、溶接ロボット10および同期対象装置を、各装置それぞれの目標位置まで移動させる(ステップ203)。ここで用いられる移動情報は、同期制御の命令をもとに計算された移動情報であるため、各装置はそれぞれの目標位置に同時に到達するように制御される。各装置の移動が完了すると(ステップ204)、メイン軌跡計算部35は、命令解釈部32に次に実行する移動関連命令を要求する(ステップ205)。この移動関連命令の要求は、ステップ106または110で命令解釈部32が待ち受ける要求である。
以上のように、同期制御における移動関連命令に対して、メイン軌跡計算部35およびモータ駆動部37の処理が行われる。
【0051】
図5−3は、移動関連命令バッファ部34が移動関連命令を蓄積する処理の流れの一例を示すフローチャートである。
移動関連命令バッファ部34は、
図5−1のステップ109で移動関連命令分離部33から移動関連命令を取得する(ステップ301)。次に、移動関連命令バッファ部34は、取得した移動関連命令に対応する非同期対象装置について、サブ軌跡計算部36から移動状態を取得し、非同期対象装置が「移動中」であるか否かを判断する(ステップ302)。非同期対象装置の移動状態が「移動中」である場合(ステップ302でYes)、移動関連命令バッファ部34は移動関連命令を取得した順番に内部に蓄積する(ステップ303)。一方、非同期対象装置の移動状態が「移動中」ではない場合(ステップ302でNo)、移動関連命令バッファ部34は移動関連命令をサブ軌跡計算部36に送信する(ステップ304)。
以上のように、移動関連命令バッファ部34により移動関連命令を蓄積する処理が行われる。
【0052】
図5−4は、移動関連命令バッファ部34、サブ軌跡計算部36、モータ駆動部37が非同期対象装置を移動させる処理の流れの一例を示すフローチャートである。
サブ軌跡計算部36は、
図5−3のステップ304で移動関連命令バッファ部34から移動関連命令を取得する(ステップ401)。次に、サブ軌跡計算部36は、取得した移動関連命令に基づいて、非同期対象装置について移動情報を計算する(ステップ402)。そして、サブ軌跡計算部36は、計算した移動情報をモータ駆動部37に送信し、非同期対象装置の移動状態を「移動中」とする。
【0053】
次に、モータ駆動部37はサブ軌跡計算部36から取得した移動情報に基づいて、非同期対象装置を目標位置まで移動させる(ステップ403)。非同期対象装置の移動が完了すると(ステップ404)、サブ軌跡計算部36は、非同期対象装置の移動状態を「移動中」から解除し、移動関連命令バッファ部34に次に実行する移動関連命令を要求する(ステップ405)。
【0054】
次に、移動関連命令バッファ部34は、非同期対象装置の移動関連命令を蓄積しているか否かを判断する(ステップ406)。移動関連命令が蓄積されている場合(ステップ406でYes)、ステップ401に移行し、移動関連命令バッファ部34は、蓄積している移動関連命令を蓄積した順番で、即ち最初に蓄積された移動関連命令から順番にサブ軌跡計算部36に送信する。ここで、移動関連命令バッファ部34は、移動命令に付随する速度設定命令等の他の移動関連命令があれば、移動命令と合わせて付随する移動関連命令もサブ軌跡計算部36に送信する。このように、移動命令および速度設定命令等、移動関連命令は装置ごとに分離され、分離された非同期対象装置の移動関連命令は蓄積されて順番に実行されるため、各装置では教示プログラムに記述された順番に命令が実行されることが保証される。一方、移動関連命令が蓄積されていない場合(ステップ406でNo)、移動関連命令バッファ部34は非同期対象装置の移動完了通知を命令解釈部32に送信する(ステップ407)。
以上のように、非同期対象装置の移動関連命令に対して、移動関連命令バッファ部34、サブ軌跡計算部36、モータ駆動部37の処理が行われる。
【0055】
〔教示プログラムの実行処理の一例〕
図6(a)、(b)、(c)は、本実施の形態に係るサブ教示プログラムの一例を示す図である。
図6(a)〜(c)に示す各教示プログラムは、
図4に示す教示プログラムAから呼び出されるサブ教示プログラムの一例である。
図6(a)〜(c)の各教示プログラムをそれぞれ、教示プログラムB、教示プログラムC、教示プログラムDとする。教示プログラムBは、ポジショナ20が回転してもポジショナ20の動作を干渉しない位置へ溶接ロボット10を退避させるプログラムである。教示プログラムCは、ポジショナ20がワーク位置を決めるプログラムである。また、教示プログラムDは、溶接ロボット10がワイヤカッタ40によりワイヤカットを行うプログラムである。
以下、
図4に示す教示プログラムAおよび
図6に示す教示プログラムB〜Dを実行した場合の処理について説明する。
図4に示す例と同様に、
図6に示す例では、同期対象装置または非同期対象装置として、ポジショナ20の動作が制御されるものとする。また、以下に示すステップは、
図5の各ステップに対応するものとする。
【0056】
まず、命令解釈部32は外部からの入力を受け付け、受け付けた入力内容に応じた教示プログラムAの命令を教示プログラム記憶部31から取得する(ステップ101)。ここで取得される命令は「教示プログラムB呼び出し」であるため、命令解釈部32はさらに教示プログラムBの命令「移動命令 ロボット位置A」を取得する。そして、「移動命令 ロボット位置A」は移動命令であるため、命令解釈部32は「移動命令 ロボット位置A」を移動関連命令分離部33に送信する(ステップ102)。
【0057】
次に、「移動命令 ロボット位置A」は同期区間の命令であるため(ステップ107)、移動関連命令分離部33はこの移動命令をメイン軌跡計算部35に送信する(ステップ109)。そして、メイン軌跡計算部35により移動情報の計算が行われる(ステップ201、202)。「移動命令 ロボット位置A」は溶接ロボット10を位置Aに移動させる移動命令であるが、周辺装置であるポジショナ20の移動内容も含まれている。そのため、メイン軌跡計算部35は溶接ロボット10およびポジショナ20の移動情報を計算し、計算した移動情報をモータ駆動部37に送信する。そして、モータ駆動部37は溶接ロボット10およびポジショナ20を同期制御し、溶接ロボット10を位置Aに移動させるとともに、ポジショナ20もポジショナ20の目標位置へ移動させる(ステップ203)。
【0058】
溶接ロボット10およびポジショナ20の移動が完了すると(ステップ204)、メイン軌跡計算部35は次の移動関連命令を要求する(ステップ205)。命令解釈部32はメイン軌跡計算部35からの命令要求を受信すると(ステップ110)、次の命令「移動命令 ロボット位置B」を取得する(ステップ105、101)。そして、位置Aへの移動と同様に、溶接ロボット10およびポジショナ20は同期制御され、溶接ロボット10は位置Bに移動する。溶接ロボット10およびポジショナ20の移動が完了すると、教示プログラムBの実行が終了する。
【0059】
次に、命令解釈部32は、教示プログラムAの2行目の命令「非同期区間 ポジショナ開始」を取得する(ステップ101)。「非同期区間 ポジショナ開始」はポジショナの非同期区間が開始される命令であり、移動関連命令ではなく、非同期区間終了の命令でもないため、命令解釈部32が「非同期区間 ポジショナ開始」を実行してポジショナの非同期区間が開始される(ステップ102〜104)。そのため、教示プログラムAの3行目の命令「教示プログラムC呼び出し」からは、移動関連命令分離部33は移動関連命令を溶接ロボット10の移動関連命令とポジショナ20の移動関連命令とに分離して、溶接ロボット10の移動関連命令をメイン軌跡計算部35に送信し、ポジショナ20の移動関連命令を移動関連命令バッファ部34に送信することとなる。
【0060】
命令解釈部32が次に取得する命令は、教示プログラムAの「教示プログラムC呼び出し」であるため、命令解釈部32はさらに教示プログラムCの「移動命令 ポジショナ位置a」を取得する(ステップ101)。「移動命令 ポジショナ位置a」は移動命令であり、非同期区間の命令であるため、移動関連命令分離部33は溶接ロボット10の移動命令とポジショナ20の移動命令とに分離する(ステップ108)。そして、移動関連命令分離部33は分離した命令のうち、溶接ロボット10に関する命令をメイン軌跡計算部35に送信し、ポジショナ20に関する命令を移動関連命令バッファ部34に送信する(ステップ109)。
【0061】
移動関連命令バッファ部34はポジショナ20の移動命令を取得し、ポジショナ20の移動状態が「移動中」ではないため、移動命令をサブ軌跡計算部36に送信する(ステップ301、302、304)。そして、サブ軌跡計算部36は移動命令を取得し、ポジショナ20の位置aへの移動を開始する(ステップ401〜403)。ここで、
図4の例において、教示プログラムCの3つの移動命令(1行目、2行目、4行目)における溶接ロボット10の目標位置を固定することとする。そのため、分離された溶接ロボット10の移動命令に基づく移動は即座に完了し、メイン軌跡計算部35は次の移動関連命令を要求する(ステップ201〜205)。
【0062】
次に、命令解釈部32は次の命令「移動命令 ポジショナ位置b」と、ポジショナ20の移動速度を設定する命令である「移動速度設定 ポジショナ10%」とを取得する。これらの命令も非同期区間の移動関連命令であるため、移動関連命令分離部33は溶接ロボット10の移動関連命令とポジショナ20の移動関連命令とに分離する(ステップ108)。ただし、溶接ロボット10の目標位置は固定されているため即座に移動が完了し、メイン軌跡計算部35は次の移動関連命令を要求する(ステップ201〜205)。
【0063】
一方、ポジショナ20が位置aへ移動中であれば、ポジショナ20の移動状態は「移動中」であるため、「移動命令 ポジショナ位置b」におけるポジショナ20分の移動命令、およびポジショナ20の速度設定命令である「移動速度設定 ポジショナ10%」が、移動関連命令バッファ部34に蓄積される(ステップ301〜303)。このようにして、移動関連命令バッファ部34は、ポジショナ20が位置aに移動する間に取得するポジショナ20の移動関連命令を蓄積することとなる。
【0064】
命令解釈部32は、メイン軌跡計算部35からの命令要求を受信すると、ポジショナ20の移動と並行して、次の命令を取得する(ステップ110、105、101)。命令解釈部32が次に取得する命令は教示プログラムCの「移動命令 ポジショナ位置c」「移動速度設定 ポジショナ100%」であり、移動関連命令分離部33は移動関連命令を装置ごとの命令に分離する。そして、ポジショナ20が位置aへ移動中であれば、ポジショナ20の移動関連命令が移動関連命令バッファ部34に蓄積される。一方、溶接ロボット10の目標位置は固定されているため即座に移動が完了し、メイン軌跡計算部35は次の移動命令を要求する(ステップ201〜205)。
【0065】
図7は、移動関連命令バッファ部34が移動関連命令を蓄積する状態の一例を示す図である。ポジショナ20が位置aに移動する間に、教示プログラムCのポジショナ20の移動関連命令(2〜5行目の命令)が移動関連命令バッファ部34に送信され、蓄積された状態を表している。まず、教示プログラムCの2行目の移動命令が蓄積され、その後、順に3行目の速度設定命令、4行目の移動命令、5行目の速度設定命令が蓄積される。また、移動命令については、溶接ロボット10の移動命令とポジショナ20の移動命令とに分離されるため、移動関連命令バッファ部34に蓄積されるのはポジショナ20分の移動命令のみである。
【0066】
次に、命令解釈部32は、メイン軌跡計算部35からの命令要求を受信すると、教示プログラムAの次の命令を取得する(ステップ110、105、101)。命令解釈部32が次に取得する命令は「教示プログラムD呼び出し」であり、さらに教示プログラムDの「位置決め不要 ポジショナ」を取得する。「位置決め不要 ポジショナ」は、教示プログラムDでポジショナ20を移動させず、移動命令にポジショナ分を含めないように設定する命令である。「位置決め不要 ポジショナ」は移動関連命令ではなく、非同期区間終了の命令でもないため、命令解釈部が実行し(ステップ102〜104)、次に命令解釈部32は「移動命令 ロボット位置C」を取得する。
【0067】
次の「移動命令 ロボット位置C」は移動命令であり、非同期区間の命令であるため、移動関連命令分離部33に送信される(ステップ107)。ただし、教示プログラムDにおいてポジショナ20は移動しないため、ポジショナ20の移動命令は移動関連命令バッファ部34に送信されない。そして、溶接ロボット10の移動命令がメイン軌跡計算部35に送信され(ステップ109)、溶接ロボット10が位置Cに移動し、移動完了後、メイン軌跡計算部35は次の移動関連命令を要求する(ステップ201〜205)。次の教示プログラムDの命令は「移動命令 ロボット位置D」であるため、位置Cへの移動と同様に、溶接ロボット10は位置Dに移動する。
【0068】
次に、教示プログラムDの4〜6行目は移動関連の命令ではなく、非同期区間終了の命令でもないため、命令解釈部32が順に実行し、ワイヤカットが行われる(ステップ102〜104)。4行目の「出力命令 ワイヤカット信号ON」の実行により、溶接ロボット10とワイヤカッタ40とによりワイヤカットが開始され、5行目の「時間待ち命令 1秒」の実行により、1秒間ワイヤカットが実行される。また、6行目の「入力待ち命令 ワイヤカット完了ON」の実行により、命令解釈部32はワイヤカッタ40からワイヤカット完了の信号を受信するのを待つ。そして、ワイヤカットが完了すると、命令解釈部32は次の命令を取得する(ステップ105、101)。
【0069】
次に、命令解釈部32は、教示プログラムDの次の命令「移動命令 ロボット位置E」を取得する。そして、溶接ロボット10が位置Eへ移動し、移動完了後、メイン軌跡計算部35は次の移動関連命令を要求する。次に命令解釈部32が取得する教示プログラムAの命令は「非同期区間 ポジショナ待ち合わせ」であり、移動関連命令ではないが、非同期区間終了の命令である(ステップ102、103)。そのため、命令解釈部32は、メイン軌跡計算部35からの移動関連命令の要求と移動関連命令バッファ部34からの移動完了通知とを待ち受ける(ステップ106)。
【0070】
命令解釈部32やメイン軌跡計算部35により教示プログラムDの処理が進められる間、ポジショナ20の移動も進められており、ポジショナ20が位置aに到達すると、サブ軌跡計算部36は移動関連命令バッファ部34に次の命令を要求する(ステップ405)。次の命令は「移動命令 ポジショナ位置b」であり、移動関連命令バッファ部34は、移動命令と速度設定命令「移動速度設定 ポジショナ10%」とを合わせてサブ軌跡計算部36に送信する。サブ軌跡計算部36は取得した命令を実行して、ポジショナ20は変更された移動速度で位置bへ移動する(ステップ401〜404)。ポジショナ20が位置bへ到達すると、サブ軌跡計算部36は移動関連命令バッファ部34に次の命令を要求し(ステップ405)、移動関連命令バッファ部34は、移動命令「移動命令 ポジショナ位置c」と速度設定命令「移動速度設定 ポジショナ100%」とを合わせてサブ軌跡計算部36に送信する。そして、位置bへの移動と同様に、ポジショナ20は変更された移動速度で位置cへ移動する(ステップ401〜404)。このように、移動関連命令バッファ部34が取得した順番で非同期対象装置の移動関連命令が実行されるため、教示プログラムに記述された順番に命令が実行されることが保証される。
【0071】
図4に示す例では、ポジショナ20の移動が遅いため、教示プログラムDの7行目の移動命令で溶接ロボット10は位置Eへ到達した後、ポジショナ20が位置cに到達するのを待つこととなる。溶接ロボット10が位置Eへ到達後、命令解釈部32はメイン軌跡計算部35から命令要求を受信する。また、ポジショナ20が位置cへ到達後、サブ軌跡計算部36は移動関連命令バッファ部34に次の命令を要求するが(ステップ405)、移動関連命令バッファ部34には命令が蓄積されていない(ステップ406)。そのため、移動関連命令バッファ部34は命令解釈部32に移動完了通知を送信する(ステップ407)。命令解釈部32が移動関連命令バッファ部34から移動完了通知を受信すると、溶接ロボット10とポジショナ20の待ち合わせが完了し、ポジショナ20の非同期区間が終了する。そして、教示プログラムAの命令が全て実行されたため、
図4に示す教示プログラムAおよび
図6に示す教示プログラムB〜Dの処理が終了する(ステップ105)。
【0072】
以上のように、非同期区間を設け、非同期区間の移動命令を装置ごとに分離することで、溶接ロボット10および同期対象装置の動作と非同期対象装置の動作とが独立に実行される。このような構成により、操作者は、各装置の動作の関係を考慮して各装置の動作を混合した教示プログラムの作成を新たに行うことなく、教示プログラムの修正作業を軽減してサイクルタイムの短縮を実現することができる。また、移動関連命令が装置ごとの命令に分離され順次実行されるため、速度設定命令などの移動命令以外の移動関連命令を含む教示プログラムの命令が、教示プログラムに記述された順番に実行されることが保証される。
【0073】
〔非同期区間の重複〕
図4〜
図6に示す例では、非同期区間を設定する周辺装置が1台である場合について説明したが、複数の周辺装置について非同期区間を設定することとしても良い。そして、複数の周辺装置の非同期区間が重複することとしても良い。
図8は、非同期区間が重複する場合のメイン教示プログラムの一例を示す図である。
図8に示す教示プログラムでは、周辺装置としてポジショナ20のほかにスライダが制御される。
【0074】
まず、1行目の命令「教示プログラム呼び出しE」の実行により、教示プログラムEが呼び出されて実行される。次に、2行目の命令「非同期区間 スライダ開始」の実行により、スライダの非同期区間が開始される。そして、3行目の命令「教示プログラム呼び出しF」の実行により、教示プログラムFが呼び出されて実行される。教示プログラムFでは、溶接ロボット10と同期対象装置であるポジショナ20は同期制御されるが、非同期対象装置であるスライダは同期制御されずに動作することとなる。次に、4行目の命令「非同期区間 ポジショナ開始」の実行により、ポジショナ20の非同期区間が開始される。そして、5行目の命令「教示プログラム呼び出しG」、6行目の命令「教示プログラム呼び出しH」では、スライダの動作は溶接ロボット10およびポジショナ20の動作と同期せずに制御され、ポジショナ20の動作は溶接ロボット10およびスライダの動作と同期せずに制御されることとなる。
【0075】
そして、7行目の命令「非同期区間 スライダ待ち合わせ」および8行目の命令「非同期区間 ポジショナ待ち合わせ」の実行により、溶接ロボット10、スライダ、ポジショナ20が待ち合わせを行うこととなる。溶接ロボット10、スライダ、ポジショナ20の3つの装置の移動が全て完了すると、スライダおよびポジショナ20の非同期区間が終了する。
【0076】
以上のように、非同期区間が重複する場合において、各非同期対象装置は同期制御されずに動作し、非同期区間の終了時には溶接ロボット10と非同期対象装置との待ち合わせが行われる。また、非同期区間が重複する場合、移動関連命令バッファ部34は、移動関連命令分離部33から取得する移動関連命令について、非同期対象装置ごとに分けて蓄積していく。
【0077】
また、本実施の形態において、メイン教示プログラムの非同期区間内に移動命令を直接記述して実行するとエラーが発生するような構成にしても良い。このように、移動命令をメイン教示プログラムの非同期区間内に直接記述できず、サブ教示プログラムに記述するような構成にすれば、操作者が非同期区間として指定できる範囲が限定される。そのため、例えば、同期制御のために記述された移動命令が、非同期区間の終了の記述漏れにより非同期区間内の移動命令として扱われる等の操作者による非同期区間の指定誤りが削減され、溶接ロボット10や周辺装置が操作者の意図しない動作を行うことを抑制することができる。
【0078】
さらに、本実施の形態において、非同期区間に溶接ロボット10の溶接作業に関する命令を記述して実行するとエラーが発生するような構成にしても良い。溶接作業中には、溶接ロボット10および周辺装置の動作は同期制御されるため、非同期対象装置が独立して動作することはない。そのため、非同期区間に溶接作業に関する命令を実行するとエラーが発生するように構成することで、溶接作業実施中に周辺装置が操作者の意図しない動作を行うことを抑制することができる。
【0079】
また、本実施の形態において、非同期区間の開始命令および終了命令を異なる教示プログラムで実行するとエラーが発生するような構成にしても良い。例えば、非同期区間が複数の教示プログラムにまたがって記述されるような場合、操作者が意図していたタイミングで非同期区間が終了せず、同期制御のための移動命令が非同期区間の命令として実行されることが考えられる。そのため、非同期区間の開始命令および終了命令を同一の教示プログラム内に記述することで、各装置が操作者の意図しない動作を行うことを抑制することができる。