(57)【要約】【課題】作業にかかる合計時間の短縮を、プログラムの修正作業を軽減して実現する。【解決手段】制御装置３０は、教示プログラムを格納する教示プログラム記憶部３１と、移動関連の命令を移動関連命令分離部３３に送り、移動関連ではない命令を実行する命令解釈部３２と、同期区間の命令か非同期区間の命令かを判定し、判定した結果に応じて移動関連命令を装置ごとに分離する移動関連命令分離部３３と、装置の移動状態に基づいて移動関連命令をサブ軌跡計算部３６に送るか内部に蓄積するかを選択する移動関連命令バッファ部３４と、移動関連命令に基づいて同期制御する装置について移動に関する情報を計算するメイン軌跡計算部３５と、移動関連命令に基づいて同期制御対象ではない装置について移動に関する情報を計算するサブ軌跡計算部３６と、各装置の動作を実行するモータ駆動部３７とを備える。【選択図】図３
2014223693.tif 000002
【特許請求の範囲】
【請求項１】
ロボットおよび周辺装置に実行させる動作が記述された教示プログラムを記憶する記憶手段と、
前記記憶手段により記憶された前記教示プログラムにおいて、前記周辺装置の動作が前記ロボットの動作と同期しない非同期区間と当該非同期区間ではない同期区間とを識別し、当該教示プログラムの命令のうち、当該ロボットおよび当該周辺装置の少なくともいずれか一方の移動に関する命令である移動関連命令について、当該非同期区間の命令か当該同期区間の命令かを判定する判定手段と、
前記判定手段により前記非同期区間の命令と判定された非同期命令について、前記ロボットおよび前記周辺装置の装置ごとの命令に分離する分離手段と、
前記判定手段により前記同期区間の命令と判定された同期命令に基づいて、前記ロボットおよび前記周辺装置の動作を同期させて制御し、また、前記分離手段により分離された非同期命令のうちの当該ロボットに関する命令に基づいて、当該ロボットの動作を制御する第１制御手段と、
前記分離手段により分離された非同期命令のうちの前記周辺装置に関する命令に基づいて、前記ロボットの動作と同期させずに当該周辺装置の動作を制御する第２制御手段と
を備えた制御システム。
【請求項２】
前記分離手段により分離された非同期命令のうちの前記周辺装置に関する命令について、前記第２制御手段により当該周辺装置の動作が制御されている間に取得した当該命令を取得した順番に格納する格納手段をさらに備え、
前記第２制御手段は、前記格納手段が格納した命令を前記順番で実行することを特徴とする請求項１に記載の制御システム。
【請求項３】
前記周辺装置に加えて１または複数の他の装置からなる周辺装置群が存在し、当該周辺装置群の動作が前記ロボットの動作と同期して制御され、当該周辺装置の動作が当該ロボットの動作と同期せずに制御される前記非同期区間が設けられている場合に、当該非同期区間において、
前記第１制御手段は、前記分離手段により分離された非同期命令のうちの前記ロボットに関する命令および前記周辺装置群に関する命令に基づいて、当該ロボットおよび当該周辺装置群の動作を同期させて制御し、
前記第２制御手段は、前記分離手段により分離された非同期命令のうちの前記周辺装置に関する命令に基づいて、前記ロボットおよび前記周辺装置群の動作と同期させずに当該周辺装置の動作を制御する
ことを特徴とする請求項１または２に記載の制御システム。
【請求項４】
前記周辺装置に加えて、前記ロボットの動作と同期せずに制御される非同期区間が設けられている１または複数の周辺装置が存在し、各周辺装置の当該非同期区間の少なくとも一部が重複する場合に、当該非同期区間が重複する区間において、前記第２制御手段は、当該重複する区間で当該非同期区間が設けられた各周辺装置の動作を当該ロボットおよび他の周辺装置の動作と同期させずに制御することを特徴とする請求項１乃至３のいずれか１項に記載の制御システム。
【請求項５】
前記移動関連命令は、前記教示プログラムのうちのメイン教示プログラムに呼び出されるサブ教示プログラムに記述されることを特徴とする請求項１乃至４のいずれか１項に記載の制御システム。
【請求項６】
予め定められた記憶部に記憶され、ロボットおよび周辺装置に実行させる動作が記述された教示プログラムにおいて、前記周辺装置の動作が前記ロボットの動作と同期しない非同期区間と当該非同期区間ではない同期区間とを識別し、当該教示プログラムの命令のうち、当該ロボットおよび当該周辺装置の少なくともいずれか一方の移動に関する命令である移動関連命令について、当該非同期区間の命令か当該同期区間の命令かを判定するステップと、
前記非同期区間の命令と判定された非同期命令について、前記ロボットおよび前記周辺装置の装置ごとの命令に分離するステップと、
前記同期区間の命令と判定された同期命令に基づいて、前記ロボットおよび前記周辺装置の動作を同期させて制御し、また、分離された非同期命令のうちの当該ロボットに関する命令に基づいて、当該ロボットの動作を制御するステップと、
分離された非同期命令のうちの前記周辺装置に関する命令に基づいて、前記ロボットの動作と同期させずに当該周辺装置の動作を制御するステップと
を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、産業用ロボットおよび周辺装置の動作を制御する制御システムおよび制御方法に関する。
【背景技術】
【０００２】
溶接を行う溶接ロボット等の産業用ロボットやその周辺装置は、教示データを与えることにより、その教示データで設定される作業を実行するように動作する。教示データは、例えば、ロボットや周辺装置に実行させる動作を記述したプログラムの集合で構成される。
【０００３】
例えば、特許文献１には、２軸以上で構成される複数の制御対象を制御する作業機械の制御装置において、各制御対象の各軸を駆動するモータなどのアクチュエータを制御する際にアクチュエータと制御対象とを関係付けることで、制御対象への動作指令を所定のアクチュエータに分配して出力することが記載されている。作業プログラムには選択された制御対象のみの教示位置が登録されており、相互に独立して作業プログラムが実行される。
【０００４】
また、特許文献２には、複数の制御対象を移動させるロボット制御装置において、１つの作業プログラムで制御対象であるマニピュレータ及びポジショナが非同期制御される区間である非同期制御区間を設定し、各制御対象が同時に同期して制御されるのではなく、移動目標に各々到達するように制御されることが記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−３４６７４０号公報
【特許文献２】特開２００９−２６１７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
産業用ロボットやその周辺装置に実行させる動作を記述したプログラムでは、各装置の動作が同期するように制御される場合がある。このような場合に作業にかかる合計時間を短縮するためには、産業用ロボットや周辺装置の動作の関係を考慮してプログラムを作成することになるが、このようなプログラムの作成にかかる時間をも短縮することが望まれる。また、各装置が同期制御されない区間を設定するとプログラムの命令が記述された順番に実行されない場合がある。
本発明の目的は、作業にかかる合計時間の短縮を、プログラムの修正作業を軽減して実現することにある。
【課題を解決するための手段】
【０００７】
かかる目的のもと、本発明は、ロボットおよび周辺装置に実行させる動作が記述された教示プログラムを記憶する記憶手段と、記憶手段により記憶された教示プログラムにおいて、周辺装置の動作がロボットの動作と同期しない非同期区間と非同期区間ではない同期区間とを識別し、教示プログラムの命令のうち、ロボットおよび周辺装置の少なくともいずれか一方の移動に関する命令である移動関連命令について、非同期区間の命令か同期区間の命令かを判定する判定手段と、判定手段により非同期区間の命令と判定された非同期命令について、ロボットおよび周辺装置の装置ごとの命令に分離する分離手段と、判定手段により同期区間の命令と判定された同期命令に基づいて、ロボットおよび周辺装置の動作を同期させて制御し、また、分離手段により分離された非同期命令のうちのロボットに関する命令に基づいて、ロボットの動作を制御する第１制御手段と、分離手段により分離された非同期命令のうちの周辺装置に関する命令に基づいて、ロボットの動作と同期させずに周辺装置の動作を制御する第２制御手段とを備えた制御システムである。
【０００８】
また、この制御システムは、分離手段により分離された非同期命令のうちの周辺装置に関する命令について、第２制御手段により周辺装置の動作が制御されている間に取得した命令を取得した順番に格納する格納手段をさらに備え、第２制御手段は、格納手段が格納した命令を順番で実行することを特徴とする。
【０００９】
さらに、この制御システムは、周辺装置に加えて１または複数の他の装置からなる周辺装置群が存在し、周辺装置群の動作がロボットの動作と同期して制御され、周辺装置の動作がロボットの動作と同期せずに制御される非同期区間が設けられている場合に、非同期区間において、第１制御手段は、分離手段により分離された非同期命令のうちのロボットに関する命令および周辺装置群に関する命令に基づいて、ロボットおよび周辺装置群の動作を同期させて制御し、第２制御手段は、分離手段により分離された非同期命令のうちの周辺装置に関する命令に基づいて、ロボットおよび周辺装置群の動作と同期させずに周辺装置の動作を制御することを特徴とする。
【００１０】
また、この制御システムは、周辺装置に加えて、ロボットの動作と同期せずに制御される非同期区間が設けられている１または複数の周辺装置が存在し、各周辺装置の非同期区間の少なくとも一部が重複する場合に、非同期区間が重複する区間において、第２制御手段は、この重複する区間で非同期区間が設けられた各周辺装置の動作をロボットおよび他の周辺装置の動作と同期させずに制御することを特徴とする。
【００１１】
さらに、この制御システムは、移動関連命令が、教示プログラムのうちのメイン教示プログラムに呼び出されるサブ教示プログラムに記述されることを特徴とする。
【００１２】
また、他の観点から捉えると、本発明は、予め定められた記憶部に記憶され、ロボットおよび周辺装置に実行させる動作が記述された教示プログラムにおいて、周辺装置の動作がロボットの動作と同期しない非同期区間と非同期区間ではない同期区間とを識別し、教示プログラムの命令のうち、ロボットおよび周辺装置の少なくともいずれか一方の移動に関する命令である移動関連命令について、非同期区間の命令か同期区間の命令かを判定するステップと、非同期区間の命令と判定された非同期命令について、ロボットおよび周辺装置の装置ごとの命令に分離するステップと、同期区間の命令と判定された同期命令に基づいて、ロボットおよび周辺装置の動作を同期させて制御し、また、分離された非同期命令のうちのロボットに関する命令に基づいて、ロボットの動作を制御するステップと、分離された非同期命令のうちの周辺装置に関する命令に基づいて、ロボットの動作と同期させずに周辺装置の動作を制御するステップとを含む、方法である。
【発明の効果】
【００１３】
本発明によれば、作業にかかる合計時間の短縮を、プログラムの修正作業を軽減して実現することができる。
【図面の簡単な説明】
【００１４】
【図１】本実施の形態に係る溶接ロボットシステムの概略構成を示す図である。
【図２】本実施の形態に係る制御装置のハードウェア構成例を示す図である。
【図３】本実施の形態に係る制御装置の機能構成例を示すブロック図である。
【図４】本実施の形態に係るメイン教示プログラムの一例を示す図である。
【図５−１】本実施の形態に係る教示プログラム実行処理の流れの一例を示すフローチャートである。
【図５−２】本実施の形態に係る教示プログラム実行処理の流れの一例を示すフローチャートである。
【図５−３】本実施の形態に係る教示プログラム実行処理の流れの一例を示すフローチャートである。
【図５−４】本実施の形態に係る教示プログラム実行処理の流れの一例を示すフローチャートである。
【図６】（ａ）、（ｂ）、（ｃ）は、本実施の形態に係るサブ教示プログラムの一例を示す図である。
【図７】本実施の形態に係る移動関連命令バッファ部が移動関連命令を蓄積する状態の一例を示す図である。
【図８】本実施の形態に係る非同期区間が重複する場合のメイン教示プログラムの一例を示す図である。
【発明を実施するための形態】
【００１５】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。まず、本実施の形態の概要について説明する。
近年、溶接ロボットシステムでは、溶接ロボットとともに制御装置（ロボットコントローラ）で制御される周辺装置が大型化している。周辺装置としては、例えば、溶接対象となるワークの位置を決める装置であるポジショナや、溶接ロボットを移動させる装置であるスライダなどが該当する。このような周辺装置の大型化に伴い、ワーク着脱時などのポジショナによるワークの位置決めや、ポジショナの動作を干渉しない位置へ溶接ロボットを退避させるためのスライダによる動作など、溶接開始前に周辺装置を動作させる時間が長くなっている。そのため、１つのワークを溶接するのに必要な合計時間であるサイクルタイムの増加を招いている。また、溶接ロボットによるワイヤカットやノズル交換など、溶接周辺作業もサイクルタイムが増加する要因である。
【００１６】
ここで、溶接ロボットおよび周辺装置に実行させる動作は教示プログラムに定義されており、教示プログラムは、各装置の移動を指示する移動命令や、移動命令に付随して移動速度等の移動条件を指定する命令、溶接ロボットにワイヤカットを実行させる命令等を含んでいる。また、移動命令には、溶接ロボットや周辺装置の目標位置が含まれており、移動命令の実行により各装置の動作が同期するように制御される場合がある。例えば、１つの移動命令により、各装置が装置ごとに定められた目標位置に向けて同時に動き出し同時に到達するように制御される場合がある。このような場合には、目標位置までの移動時間が最長となる装置に合わせて、他の装置の移動速度が調節される。
【００１７】
このような状況下でサイクルタイムを短縮するためには、例えば、溶接ロボットの移動と周辺装置の移動とをそれぞれ独立して行うことや、周辺装置の移動中に並行して溶接ロボットにワイヤカットなどの他の動作を実行させること等が考えられる。しかし、各装置にこのような動作をさせるためには、操作者は、各装置の動作の関係を考慮して各装置の動作を混合した教示プログラムを作業ごとに個別に作成する必要がある。例えば、ポジショナのワーク位置決め中に並行して溶接ロボットにワイヤカットを実行させる場合には、ポジショナに対する移動命令のそれぞれに合わせて溶接ロボットの動作も規定してワイヤカットを実行させるプログラムを作業ごとに個別に作成する必要がある。また、溶接ロボットによるワイヤカットをポジショナの位置決めと並行して行う場合と並行して行わない場合とでは、それぞれのプログラムを個別に作成する必要がある。
【００１８】
そのため、教示プログラムの作成時間が増加することが考えられる。また、作成した教示プログラムの内容の確認がより困難になることや、教示プログラム作成者のスキルによってはサイクルタイムの短縮につながらないことも考えられる。さらに、教示プログラムの命令は記述された順番に実行されることが求められるが、教示プログラムにおいて各装置が非同期制御される区間を設定しただけでは、命令が記述された順番に実行されない場合がある。
そのため以下にて、サイクルタイムの短縮を、プログラムの修正作業を軽減して実現する手順について説明する。
【００１９】
〔システム構成〕
図１は、本実施の形態に係る溶接ロボットシステムの概略構成を示す図である。
図１に示すように、溶接ロボットシステムは、溶接に関する各種の作業を行う溶接ロボット１０と、ワークＷの位置を決める周辺装置の一例としてのポジショナ２０と、溶接ロボットシステムの各装置を制御する制御装置３０と、ワイヤをカットするワイヤカッタ４０と、溶接作業のための設定や教示プログラムの作成に使用される教示ペンダント５０とを備える。また、図１に示す例では記載していないが、本実施の形態に係る溶接ロボットシステムは、例えば、溶接ロボット１０を移動させるために溶接ロボット１０の下に配置されるスライダ（不図示）等の他の周辺装置を備えることとしても良い。
【００２０】
溶接ロボット１０は、複数の関節を有する腕（アーム）を備え、教示プログラムに基づく溶接に関する各種作業を行う。また、溶接ロボット１０の腕の先端には、ワークＷに対する溶接作業を行うための溶接トーチ１１が設けられる。
ポジショナ２０は、教示プログラムに基づいて、ワークＷの位置を調節する。
制御装置３０は、詳細については後述するが、予め教示された教示プログラムを記憶する記憶装置（メモリ）と、教示プログラムを読み込んで溶接ロボット１０、ポジショナ２０、ワイヤカッタ４０の動作を制御する処理装置（ＣＰＵ）とを備える。教示プログラムは、教示ペンダント５０から送信される場合や、教示プログラム作成装置（不図示）により作成され、データ通信により送信される場合がある。また、教示プログラムは、例えばメモリカード等のリムーバブルな記憶媒体を介して制御装置３０に渡される場合もある。
【００２１】
ワイヤカッタ４０は、溶接ロボット１０に取り付けられたワイヤをカットする。
教示ペンダント５０は、溶接ロボット１０による溶接作業を行うために、操作者が溶接経路や溶接作業条件等を設定したり、教示プログラムを作成したりするために使用される。教示ペンダント５０は、液晶ディスプレイなどにより構成された表示画面５１と、入力ボタン５２とを備えている。
【００２２】
〔制御装置のハードウェア構成〕
図２は、本実施の形態に係る制御装置のハードウェア構成例を示す図である。
図２に示すように、制御装置３０は、演算手段であるＣＰＵ（Central Processing Unit）６１と主記憶手段であるメモリ６２とを備える。また、制御装置３０は、外部デバイスとして、磁気ディスク装置（ＨＤＤ：Hard Disk Drive）６３とキーボードやマウス等の入力デバイス６４とを備える。さらに、制御装置３０は、外部装置とデータの送受信を行うインタフェース６５と記憶媒体に対してデータの読み書きを行うためのドライバ６６とを備える。なお、図２は、制御装置３０をコンピュータシステムにて実現した場合のハードウェア構成を例示するに過ぎず、制御装置３０は図示の構成に限定されない。
【００２３】
〔制御装置の機能構成〕
図３は、本実施の形態に係る制御装置３０の機能構成例を示すブロック図である。
図３に示すように、制御装置３０は、教示プログラムを格納する教示プログラム記憶部３１と、移動関連の命令を後述する移動関連命令分離部３３に送り、移動関連ではない命令を実行する命令解釈部３２と、同期区間の命令か非同期区間の命令かを判定し、判定した結果に応じて移動関連命令を装置ごとの命令に分離する移動関連命令分離部３３とを備える。また、制御装置３０は、装置の移動状態に基づいて移動関連命令を後述するサブ軌跡計算部３６に送るか内部に蓄積するかを選択する移動関連命令バッファ部３４と、移動関連命令に基づいて同期制御する装置について移動に関する情報を計算するメイン軌跡計算部３５と、移動関連命令に基づいて同期制御対象ではない装置について移動に関する情報を計算するサブ軌跡計算部３６と、各装置の動作を実行するモータ駆動部３７とを備える。
【００２４】
命令解釈部３２、移動関連命令分離部３３、移動関連命令バッファ部３４、メイン軌跡計算部３５、サブ軌跡計算部３６、モータ駆動部３７は、例えば、図２に示したハードウェア構成におけるＣＰＵ６１により実現される。より具体的には、コンピュータにて本実施の形態による制御装置３０の機能を実現するプログラムがドライバ６６やインタフェース６５を介して磁気ディスク装置６３に格納され、このプログラムをメモリ６２に展開し、ＣＰＵ６１が実行することにより、上記の命令解釈部３２、移動関連命令分離部３３、移動関連命令バッファ部３４、メイン軌跡計算部３５、サブ軌跡計算部３６、モータ駆動部３７の各機能が実現される。移動関連命令バッファ部３４は、さらに、例えば、図２に示したハードウェア構成におけるメモリ６２や磁気ディスク装置６３等の記憶部により実現される。また、教示プログラム記憶部３１も、メモリ６２や磁気ディスク装置６３等の記憶部により実現される。
【００２５】
記憶手段の一例としての教示プログラム記憶部３１は、予め教示された教示プログラムを記憶する。そして、命令解釈部３２からの要求に応じて、教示プログラムを命令解釈部３２に送信する。
【００２６】
命令解釈部３２は、外部からの入力を受け付け、受け付けた入力内容に応じた教示プログラムを教示プログラム記憶部３１から取得する。外部からの入力は、例えば、教示ペンダント５０（図１参照）から図２に示したインタフェース６５を介して行われる場合や、操作者が図２に示した入力デバイス６４を操作して行われる場合等がある。そして、命令解釈部３２は、取得した教示プログラムの命令について、移動関連命令か移動関連ではない命令かを判定する。
【００２７】
取得した命令が移動関連命令の場合、命令解釈部３２はその移動関連命令を移動関連命令分離部３３に送信する。また、取得した命令が移動関連ではない命令の場合、命令解釈部３２はその移動関連ではない命令を実行する。ここで、移動関連命令には、上述したように、各装置の移動を指示する移動命令や移動命令に付随して装置の移動速度等の移動条件を指定する命令等が含まれる。また、移動関連ではない命令には、溶接ロボット１０にワイヤカットやノズル交換を実行させるためのＩＯ入出力命令等が含まれる。
【００２８】
また、命令解釈部３２は、後述する非同期対象装置の非同期区間を終了する命令を実行する場合、移動関連命令の要求をメイン軌跡計算部３５から待ち受けるとともに、非同期対象装置の移動が完了した旨の通知を移動関連命令バッファ部３４から待ち受ける。そして、命令解釈部３２が命令要求および移動完了通知の両方を受信すると、非同期対象装置の非同期区間が終了し、命令解釈部３２は次の命令の処理を行う。
【００２９】
判定手段および分離手段の一例としての移動関連命令分離部３３は、教示プログラムにおいて非同期区間と同期区間とを識別し、命令解釈部３２から取得した移動関連命令が非同期区間の命令か同期区間の命令かを判定する。ここで、同期区間とは、溶接ロボット１０の動作と、溶接ロボット１０の周辺装置であるポジショナ２０等の装置のうち同期制御対象とされた装置（以下、同期制御対象とされた装置を同期対象装置と称する）の動作とが同期制御される区間である。同期制御とは、複数の装置について、目標位置までの移動時間が最長となる装置に合わせてその他の装置の移動速度を決定することにより、複数の装置が現在位置を同時に出発して各装置の目標位置に同時に到達するように制御されることをいう。
【００３０】
また、非同期区間とは、周辺装置であるポジショナ２０等の装置のうち同期制御対象ではない装置として設定された装置（以下、同期制御対象ではない装置として設定された装置を非同期対象装置と称する）について、溶接ロボット１０および同期対象装置の動作と非同期対象装置の動作とが同期制御されない区間である。非同期区間において、非同期対象装置は他装置の動作とは独立して制御され、教示プログラムで指定された移動速度により目標位置に到達するように制御される。
【００３１】
また、移動関連命令について、移動関連命令分離部３３が同期区間の移動関連命令と判定した場合、移動関連命令分離部３３は移動関連命令をメイン軌跡計算部３５に送る。一方、移動関連命令分離部３３が非同期区間の移動関連命令と判定した場合、移動関連命令分離部３３は移動関連命令を装置ごとの命令に分離し、溶接ロボット１０および同期対象装置に関する移動関連命令をメイン軌跡計算部３５に送り、非同期対象装置に関する移動関連命令を移動関連命令バッファ部３４に送る。
【００３２】
格納手段の一例としての移動関連命令バッファ部３４は、非同期対象装置の移動状態に基づいて、移動関連命令分離部３３から取得した移動関連命令をサブ軌跡計算部３６に送るか、または、取得した移動関連命令を蓄積するかを選択する。ここで、移動関連命令バッファ部３４は、取得した移動関連命令に対応する非同期対象装置について、サブ軌跡計算部３６から移動状態を取得する。取得した非同期対象装置の移動状態が「移動中」である場合、移動関連命令バッファ部３４は、その非同期対象装置の移動関連命令を内部に蓄積する。移動関連命令バッファ部３４は移動関連命令を蓄積する場合、移動関連命令分離部３３から移動関連命令を取得した順番に蓄積していく。一方、取得した非同期対象装置の移動状態が「移動中」ではない場合、移動関連命令バッファ部３４は、移動関連命令をサブ軌跡計算部３６に送信する。
【００３３】
また、移動関連命令バッファ部３４は、サブ軌跡計算部３６から移動関連命令の要求を受信した場合に、蓄積している非同期対象装置の移動関連命令を、蓄積した順番でサブ軌跡計算部３６に送信する。ここで、非同期対象装置の移動関連命令が蓄積されていなければ、移動関連命令バッファ部３４は、その非同期対象装置の移動が完了した旨の移動完了通知を命令解釈部３２に送信する。
【００３４】
第１制御手段の一例としてのメイン軌跡計算部３５は、移動関連命令分離部３３に同期区間の命令と判定された移動関連命令、または、移動関連命令分離部３３により分離された非同期区間の移動関連命令のうち溶接ロボット１０および同期対象装置に関する移動関連命令に基づいて、溶接ロボット１０および同期対象装置の移動に関する情報（以下、移動に関する情報を移動情報と称する）を計算する。移動情報は、各装置の指定された目標位置までの移動時間や移動速度等の情報であり、メイン軌跡計算部３５は、計算した各装置の移動情報をモータ駆動部３７に送る。また、溶接ロボット１０および同期対象装置が目標位置に到達した場合、メイン軌跡計算部３５は、命令解釈部３２に次の移動関連命令を要求する。
【００３５】
第２制御手段の一例としてのサブ軌跡計算部３６は、移動関連命令分離部３３により分離された非同期区間の移動関連命令のうち、非同期対象装置に関する移動関連命令に基づいて、非同期対象装置の移動情報を計算する。そして、サブ軌跡計算部３６は、計算した各装置の移動情報をモータ駆動部３７に送る。また、サブ軌跡計算部３６は、モータ駆動部３７に移動情報を送信した非同期装置について、その装置の移動状態を「移動中」とする。非同期装置が目標位置に到達すると、サブ軌跡計算部３６は、その装置の移動状態を「移動中」から解除し、移動関連命令バッファ部３４に次の移動関連命令を要求する。
【００３６】
第１制御手段および第２制御手段の一例としてのモータ駆動部３７は、メイン軌跡計算部３５およびサブ軌跡計算部３６から取得した各装置の移動情報に基づいて、例えば、図２に示したインタフェース６５を介して溶接ロボット１０および周辺装置の動作を制御し、各装置を各装置それぞれの目標位置まで移動させる。
【００３７】
〔教示プログラムでの非同期区間の説明〕
図４は、本実施の形態に係るメイン教示プログラムの一例を示す図である。
図４に示す教示プログラム（以下、教示プログラムＡと称する）は、サブ教示プログラムを呼び出すメイン教示プログラムの一例である。図４に示す例では、同期対象装置または非同期対象装置として、ポジショナ２０の動作が制御されるものとする。教示プログラムＡでは、１行目の命令でサブ教示プログラムである教示プログラムＢが呼び出されて溶接ロボット１０の退避が行われる。教示プログラムＢの呼び出しについては非同期区間外であり、溶接ロボット１０の退避が完了すると、次の命令が実行される。
【００３８】
次に、２行目の命令でポジショナ２０の非同期区間が開始され、ポジショナ２０が非同期対象装置となる。そのため、３行目の命令で呼び出される教示プログラムＣ、４行目の命令で呼び出される教示プログラムＤでは、移動関連命令が溶接ロボット１０の移動関連命令とポジショナ２０の移動関連命令とに分離されて実行される。そして、溶接ロボット１０の動作とポジショナ２０の動作とが同期制御されず、溶接ロボット１０およびポジショナ２０はそれぞれの移動速度で目標位置に移動する。
【００３９】
そして、教示プログラムＡの５行目の命令で、溶接ロボット１０とポジショナ２０との待ち合わせが行われる。例えば、溶接ロボット１０とポジショナ２０とで先に溶接ロボット１０が目標位置に到達した場合、溶接ロボット１０は、ポジショナ２０がポジショナ２０の目標位置に到達するのを待つこととなる。ポジショナ２０が目標位置に到達すると、ポジショナ２０の非同期区間が終了し、次の命令からは、溶接ロボット１０とポジショナ２０との同期制御が行われる。
【００４０】
ここで、図４に示す例では、溶接ロボット１０およびポジショナ２０の動作が制御される場合を説明したが、さらに１または複数の他の装置からなる周辺装置群を制御することとしても良い。ここで、非同期区間としてポジショナ２０の非同期区間が設定されている場合、非同期区間の移動関連命令は溶接ロボット１０、ポジショナ２０、周辺装置群の装置ごとの命令に分離される。そして、分離された溶接ロボット１０および周辺装置群の移動関連命令に基づいて、溶接ロボット１０および周辺装置群の各装置の動作が同期して制御される。また、分離されたポジショナ２０の移動関連命令に基づいて、ポジショナ２０の動作が溶接ロボット１０および周辺装置群の動作と同期せずに制御される。
【００４１】
また、図４に示す教示プログラムにおいて、非同期区間内の命令を「教示プログラムＣ呼び出し」や「教示プログラムＤ呼び出し」と記載したが、例えば、「非同期教示プログラムＣ呼び出し」や「非同期教示プログラムＤ呼び出し」のように、非同期区間内の命令であることを明示する記載にすることとしても良い。そして、例えば、非同期区間内の命令で先頭に「非同期」と記載していない場合はその命令の実行時にエラーが発生するようにしても良い。このような構成にすることで、操作者が誤って非同期区間内に同期制御の命令を記載しようとして教示プログラムを作成することを抑制することができる。
【００４２】
〔教示プログラム実行処理手順〕
図５（図５−１〜図５−４）は、本実施の形態に係る教示プログラム実行処理の流れの一例を示すフローチャートである。
図５−１は、命令解釈部３２および移動関連命令分離部３３の処理の流れの一例を示すフローチャートである。
【００４３】
まず、命令解釈部３２は外部からの入力を受け付け、受け付けた入力内容に応じた教示プログラムの命令を教示プログラム記憶部３１から取得する（ステップ１０１）。ここで、命令解釈部３２は、移動命令を取得する場合には、合わせてその移動命令に続く速度設定命令等の他の移動関連命令も取得する。また、命令解釈部３２は、ワイヤカッタ４０等を駆動させる移動関連ではない命令を取得する場合には、合わせてその命令に続く移動関連ではない命令も取得する。
【００４４】
次に、命令解釈部３２は、取得した教示プログラムの命令について、移動関連命令か否かを判断する（ステップ１０２）。移動関連命令ではない場合（ステップ１０２でＮｏ）、命令解釈部３２は取得した命令を教示プログラムに記述された順に順次実行する。ここで、取得した命令に非同期区間終了の命令が含まれなければ（ステップ１０３でＮｏ）、命令解釈部３２は取得した命令を全て実行する（ステップ１０４）。そして、命令解釈部３２は処理対象の教示プログラムの命令を全て実行したか否かを判断する（ステップ１０５）。教示プログラムの命令が全て実行されていれば（ステップ１０５でＹｅｓ）、教示プログラム実行処理は終了する。一方、教示プログラムで実行されていない命令が存在すれば（ステップ１０５でＮｏ）、ステップ１０１に移行する。
【００４５】
一方、取得した命令に非同期区間終了の命令が含まれる場合（ステップ１０３でＹｅｓ）、命令解釈部３２は、取得した命令を教示プログラムに記述された順に順次実行し、非同期区間終了の命令を実行した後、メイン軌跡計算部３５から送信される移動関連命令の要求と、移動関連命令バッファ部３４から送信される非同期対象装置の移動完了通知とを待ち受ける（ステップ１０６）。命令解釈部３２が移動関連命令の要求と移動完了通知との両方を受信すると、非同期対象装置の非同期区間は終了する。ここで、命令解釈部３２は、移動関連命令分離部３３に対して、非同期区間が終了したため以降の移動関連命令については装置ごとに分離しなくても良いことを通知しても良い。また、非同期区間終了後、ステップ１０１で取得した命令で実行されていない命令があれば、命令解釈部３２はまだ実行されていない命令を実行した後、ステップ１０５に移行する。
【００４６】
また、ステップ１０２で肯定の判断（Ｙｅｓ）がされた場合、即ち、教示プログラムの命令が移動関連命令である場合、命令解釈部３２は移動関連命令を移動関連命令分離部３３に送信する。ここで、命令解釈部３２は、移動命令と合わせて取得した速度設定命令等の他の移動関連命令も移動関連命令分離部３３に送信する。そして、移動関連命令分離部３３は、取得した移動関連命令について同期区間の命令であるか否かを判断する（ステップ１０７）。
【００４７】
移動関連命令分離部３３が取得した移動関連命令が同期区間の命令ではない場合（ステップ１０７でＮｏ）、即ち、非同期区間の命令であれば、移動関連命令分離部３３は移動関連命令を装置ごとの命令に分離する（ステップ１０８）。そして、移動関連命令分離部３３は分離した命令のうち、溶接ロボット１０および同期対象装置に関する命令をメイン軌跡計算部３５に送信し、非同期対象装置に関する命令を移動関連命令バッファ部３４に送信する（ステップ１０９）。また、ステップ１０７で肯定の判断（Ｙｅｓ）がされた場合、即ち、移動関連命令分離部３３が取得した移動関連命令が同期区間の命令である場合、ステップ１０９に移行し、移動関連命令分離部３３は移動関連命令をメイン軌跡計算部３５に送信する。
【００４８】
次に、命令解釈部３２は、メイン軌跡計算部３５から命令要求を待ち受ける（ステップ１１０）。溶接ロボット１０および同期対象装置の移動が完了すると、命令解釈部３２はメイン軌跡計算部３５から命令要求を受信し、ステップ１０５に移行する。
以上のように、教示プログラムの命令に対して、命令解釈部３２および移動関連命令分離部３３の処理が行われる。
【００４９】
図５−２は、メイン軌跡計算部３５およびモータ駆動部３７が溶接ロボット１０および同期対象装置を移動させる処理の流れの一例を示すフローチャートである。
メイン軌跡計算部３５は、図５−１のステップ１０９で移動関連命令分離部３３から移動関連命令を取得する（ステップ２０１）。次に、メイン軌跡計算部３５は、取得した移動関連命令に基づいて、溶接ロボット１０および同期対象装置について移動情報を計算する（ステップ２０２）。そして、メイン軌跡計算部３５は、計算した移動情報をモータ駆動部３７に送信する。
【００５０】
次に、モータ駆動部３７は、メイン軌跡計算部３５から取得した移動情報に基づいて、溶接ロボット１０および同期対象装置を、各装置それぞれの目標位置まで移動させる（ステップ２０３）。ここで用いられる移動情報は、同期制御の命令をもとに計算された移動情報であるため、各装置はそれぞれの目標位置に同時に到達するように制御される。各装置の移動が完了すると（ステップ２０４）、メイン軌跡計算部３５は、命令解釈部３２に次に実行する移動関連命令を要求する（ステップ２０５）。この移動関連命令の要求は、ステップ１０６または１１０で命令解釈部３２が待ち受ける要求である。
以上のように、同期制御における移動関連命令に対して、メイン軌跡計算部３５およびモータ駆動部３７の処理が行われる。
【００５１】
図５−３は、移動関連命令バッファ部３４が移動関連命令を蓄積する処理の流れの一例を示すフローチャートである。
移動関連命令バッファ部３４は、図５−１のステップ１０９で移動関連命令分離部３３から移動関連命令を取得する（ステップ３０１）。次に、移動関連命令バッファ部３４は、取得した移動関連命令に対応する非同期対象装置について、サブ軌跡計算部３６から移動状態を取得し、非同期対象装置が「移動中」であるか否かを判断する（ステップ３０２）。非同期対象装置の移動状態が「移動中」である場合（ステップ３０２でＹｅｓ）、移動関連命令バッファ部３４は移動関連命令を取得した順番に内部に蓄積する（ステップ３０３）。一方、非同期対象装置の移動状態が「移動中」ではない場合（ステップ３０２でＮｏ）、移動関連命令バッファ部３４は移動関連命令をサブ軌跡計算部３６に送信する（ステップ３０４）。
以上のように、移動関連命令バッファ部３４により移動関連命令を蓄積する処理が行われる。
【００５２】
図５−４は、移動関連命令バッファ部３４、サブ軌跡計算部３６、モータ駆動部３７が非同期対象装置を移動させる処理の流れの一例を示すフローチャートである。
サブ軌跡計算部３６は、図５−３のステップ３０４で移動関連命令バッファ部３４から移動関連命令を取得する（ステップ４０１）。次に、サブ軌跡計算部３６は、取得した移動関連命令に基づいて、非同期対象装置について移動情報を計算する（ステップ４０２）。そして、サブ軌跡計算部３６は、計算した移動情報をモータ駆動部３７に送信し、非同期対象装置の移動状態を「移動中」とする。
【００５３】
次に、モータ駆動部３７はサブ軌跡計算部３６から取得した移動情報に基づいて、非同期対象装置を目標位置まで移動させる（ステップ４０３）。非同期対象装置の移動が完了すると（ステップ４０４）、サブ軌跡計算部３６は、非同期対象装置の移動状態を「移動中」から解除し、移動関連命令バッファ部３４に次に実行する移動関連命令を要求する（ステップ４０５）。
【００５４】
次に、移動関連命令バッファ部３４は、非同期対象装置の移動関連命令を蓄積しているか否かを判断する（ステップ４０６）。移動関連命令が蓄積されている場合（ステップ４０６でＹｅｓ）、ステップ４０１に移行し、移動関連命令バッファ部３４は、蓄積している移動関連命令を蓄積した順番で、即ち最初に蓄積された移動関連命令から順番にサブ軌跡計算部３６に送信する。ここで、移動関連命令バッファ部３４は、移動命令に付随する速度設定命令等の他の移動関連命令があれば、移動命令と合わせて付随する移動関連命令もサブ軌跡計算部３６に送信する。このように、移動命令および速度設定命令等、移動関連命令は装置ごとに分離され、分離された非同期対象装置の移動関連命令は蓄積されて順番に実行されるため、各装置では教示プログラムに記述された順番に命令が実行されることが保証される。一方、移動関連命令が蓄積されていない場合（ステップ４０６でＮｏ）、移動関連命令バッファ部３４は非同期対象装置の移動完了通知を命令解釈部３２に送信する（ステップ４０７）。
以上のように、非同期対象装置の移動関連命令に対して、移動関連命令バッファ部３４、サブ軌跡計算部３６、モータ駆動部３７の処理が行われる。
【００５５】
〔教示プログラムの実行処理の一例〕
図６（ａ）、（ｂ）、（ｃ）は、本実施の形態に係るサブ教示プログラムの一例を示す図である。
図６（ａ）〜（ｃ）に示す各教示プログラムは、図４に示す教示プログラムＡから呼び出されるサブ教示プログラムの一例である。図６（ａ）〜（ｃ）の各教示プログラムをそれぞれ、教示プログラムＢ、教示プログラムＣ、教示プログラムＤとする。教示プログラムＢは、ポジショナ２０が回転してもポジショナ２０の動作を干渉しない位置へ溶接ロボット１０を退避させるプログラムである。教示プログラムＣは、ポジショナ２０がワーク位置を決めるプログラムである。また、教示プログラムＤは、溶接ロボット１０がワイヤカッタ４０によりワイヤカットを行うプログラムである。
以下、図４に示す教示プログラムＡおよび図６に示す教示プログラムＢ〜Ｄを実行した場合の処理について説明する。図４に示す例と同様に、図６に示す例では、同期対象装置または非同期対象装置として、ポジショナ２０の動作が制御されるものとする。また、以下に示すステップは、図５の各ステップに対応するものとする。
【００５６】
まず、命令解釈部３２は外部からの入力を受け付け、受け付けた入力内容に応じた教示プログラムＡの命令を教示プログラム記憶部３１から取得する（ステップ１０１）。ここで取得される命令は「教示プログラムＢ呼び出し」であるため、命令解釈部３２はさらに教示プログラムＢの命令「移動命令  ロボット位置Ａ」を取得する。そして、「移動命令  ロボット位置Ａ」は移動命令であるため、命令解釈部３２は「移動命令  ロボット位置Ａ」を移動関連命令分離部３３に送信する（ステップ１０２）。
【００５７】
次に、「移動命令  ロボット位置Ａ」は同期区間の命令であるため（ステップ１０７）、移動関連命令分離部３３はこの移動命令をメイン軌跡計算部３５に送信する（ステップ１０９）。そして、メイン軌跡計算部３５により移動情報の計算が行われる（ステップ２０１、２０２）。「移動命令  ロボット位置Ａ」は溶接ロボット１０を位置Ａに移動させる移動命令であるが、周辺装置であるポジショナ２０の移動内容も含まれている。そのため、メイン軌跡計算部３５は溶接ロボット１０およびポジショナ２０の移動情報を計算し、計算した移動情報をモータ駆動部３７に送信する。そして、モータ駆動部３７は溶接ロボット１０およびポジショナ２０を同期制御し、溶接ロボット１０を位置Ａに移動させるとともに、ポジショナ２０もポジショナ２０の目標位置へ移動させる（ステップ２０３）。
【００５８】
溶接ロボット１０およびポジショナ２０の移動が完了すると（ステップ２０４）、メイン軌跡計算部３５は次の移動関連命令を要求する（ステップ２０５）。命令解釈部３２はメイン軌跡計算部３５からの命令要求を受信すると（ステップ１１０）、次の命令「移動命令  ロボット位置Ｂ」を取得する（ステップ１０５、１０１）。そして、位置Ａへの移動と同様に、溶接ロボット１０およびポジショナ２０は同期制御され、溶接ロボット１０は位置Ｂに移動する。溶接ロボット１０およびポジショナ２０の移動が完了すると、教示プログラムＢの実行が終了する。
【００５９】
次に、命令解釈部３２は、教示プログラムＡの２行目の命令「非同期区間  ポジショナ開始」を取得する（ステップ１０１）。「非同期区間  ポジショナ開始」はポジショナの非同期区間が開始される命令であり、移動関連命令ではなく、非同期区間終了の命令でもないため、命令解釈部３２が「非同期区間  ポジショナ開始」を実行してポジショナの非同期区間が開始される（ステップ１０２〜１０４）。そのため、教示プログラムＡの３行目の命令「教示プログラムＣ呼び出し」からは、移動関連命令分離部３３は移動関連命令を溶接ロボット１０の移動関連命令とポジショナ２０の移動関連命令とに分離して、溶接ロボット１０の移動関連命令をメイン軌跡計算部３５に送信し、ポジショナ２０の移動関連命令を移動関連命令バッファ部３４に送信することとなる。
【００６０】
命令解釈部３２が次に取得する命令は、教示プログラムＡの「教示プログラムＣ呼び出し」であるため、命令解釈部３２はさらに教示プログラムＣの「移動命令  ポジショナ位置ａ」を取得する（ステップ１０１）。「移動命令  ポジショナ位置ａ」は移動命令であり、非同期区間の命令であるため、移動関連命令分離部３３は溶接ロボット１０の移動命令とポジショナ２０の移動命令とに分離する（ステップ１０８）。そして、移動関連命令分離部３３は分離した命令のうち、溶接ロボット１０に関する命令をメイン軌跡計算部３５に送信し、ポジショナ２０に関する命令を移動関連命令バッファ部３４に送信する（ステップ１０９）。
【００６１】
移動関連命令バッファ部３４はポジショナ２０の移動命令を取得し、ポジショナ２０の移動状態が「移動中」ではないため、移動命令をサブ軌跡計算部３６に送信する（ステップ３０１、３０２、３０４）。そして、サブ軌跡計算部３６は移動命令を取得し、ポジショナ２０の位置ａへの移動を開始する（ステップ４０１〜４０３）。ここで、図４の例において、教示プログラムＣの３つの移動命令（１行目、２行目、４行目）における溶接ロボット１０の目標位置を固定することとする。そのため、分離された溶接ロボット１０の移動命令に基づく移動は即座に完了し、メイン軌跡計算部３５は次の移動関連命令を要求する（ステップ２０１〜２０５）。
【００６２】
次に、命令解釈部３２は次の命令「移動命令  ポジショナ位置ｂ」と、ポジショナ２０の移動速度を設定する命令である「移動速度設定  ポジショナ１０％」とを取得する。これらの命令も非同期区間の移動関連命令であるため、移動関連命令分離部３３は溶接ロボット１０の移動関連命令とポジショナ２０の移動関連命令とに分離する（ステップ１０８）。ただし、溶接ロボット１０の目標位置は固定されているため即座に移動が完了し、メイン軌跡計算部３５は次の移動関連命令を要求する（ステップ２０１〜２０５）。
【００６３】
一方、ポジショナ２０が位置ａへ移動中であれば、ポジショナ２０の移動状態は「移動中」であるため、「移動命令  ポジショナ位置ｂ」におけるポジショナ２０分の移動命令、およびポジショナ２０の速度設定命令である「移動速度設定  ポジショナ１０％」が、移動関連命令バッファ部３４に蓄積される（ステップ３０１〜３０３）。このようにして、移動関連命令バッファ部３４は、ポジショナ２０が位置ａに移動する間に取得するポジショナ２０の移動関連命令を蓄積することとなる。
【００６４】
命令解釈部３２は、メイン軌跡計算部３５からの命令要求を受信すると、ポジショナ２０の移動と並行して、次の命令を取得する（ステップ１１０、１０５、１０１）。命令解釈部３２が次に取得する命令は教示プログラムＣの「移動命令  ポジショナ位置ｃ」「移動速度設定  ポジショナ１００％」であり、移動関連命令分離部３３は移動関連命令を装置ごとの命令に分離する。そして、ポジショナ２０が位置ａへ移動中であれば、ポジショナ２０の移動関連命令が移動関連命令バッファ部３４に蓄積される。一方、溶接ロボット１０の目標位置は固定されているため即座に移動が完了し、メイン軌跡計算部３５は次の移動命令を要求する（ステップ２０１〜２０５）。
【００６５】
図７は、移動関連命令バッファ部３４が移動関連命令を蓄積する状態の一例を示す図である。ポジショナ２０が位置ａに移動する間に、教示プログラムＣのポジショナ２０の移動関連命令（２〜５行目の命令）が移動関連命令バッファ部３４に送信され、蓄積された状態を表している。まず、教示プログラムＣの２行目の移動命令が蓄積され、その後、順に３行目の速度設定命令、４行目の移動命令、５行目の速度設定命令が蓄積される。また、移動命令については、溶接ロボット１０の移動命令とポジショナ２０の移動命令とに分離されるため、移動関連命令バッファ部３４に蓄積されるのはポジショナ２０分の移動命令のみである。
【００６６】
次に、命令解釈部３２は、メイン軌跡計算部３５からの命令要求を受信すると、教示プログラムＡの次の命令を取得する（ステップ１１０、１０５、１０１）。命令解釈部３２が次に取得する命令は「教示プログラムＤ呼び出し」であり、さらに教示プログラムＤの「位置決め不要  ポジショナ」を取得する。「位置決め不要  ポジショナ」は、教示プログラムＤでポジショナ２０を移動させず、移動命令にポジショナ分を含めないように設定する命令である。「位置決め不要  ポジショナ」は移動関連命令ではなく、非同期区間終了の命令でもないため、命令解釈部が実行し（ステップ１０２〜１０４）、次に命令解釈部３２は「移動命令  ロボット位置Ｃ」を取得する。
【００６７】
次の「移動命令  ロボット位置Ｃ」は移動命令であり、非同期区間の命令であるため、移動関連命令分離部３３に送信される（ステップ１０７）。ただし、教示プログラムＤにおいてポジショナ２０は移動しないため、ポジショナ２０の移動命令は移動関連命令バッファ部３４に送信されない。そして、溶接ロボット１０の移動命令がメイン軌跡計算部３５に送信され（ステップ１０９）、溶接ロボット１０が位置Ｃに移動し、移動完了後、メイン軌跡計算部３５は次の移動関連命令を要求する（ステップ２０１〜２０５）。次の教示プログラムＤの命令は「移動命令  ロボット位置Ｄ」であるため、位置Ｃへの移動と同様に、溶接ロボット１０は位置Ｄに移動する。
【００６８】
次に、教示プログラムＤの４〜６行目は移動関連の命令ではなく、非同期区間終了の命令でもないため、命令解釈部３２が順に実行し、ワイヤカットが行われる（ステップ１０２〜１０４）。４行目の「出力命令  ワイヤカット信号ＯＮ」の実行により、溶接ロボット１０とワイヤカッタ４０とによりワイヤカットが開始され、５行目の「時間待ち命令  １秒」の実行により、１秒間ワイヤカットが実行される。また、６行目の「入力待ち命令  ワイヤカット完了ＯＮ」の実行により、命令解釈部３２はワイヤカッタ４０からワイヤカット完了の信号を受信するのを待つ。そして、ワイヤカットが完了すると、命令解釈部３２は次の命令を取得する（ステップ１０５、１０１）。
【００６９】
次に、命令解釈部３２は、教示プログラムＤの次の命令「移動命令  ロボット位置Ｅ」を取得する。そして、溶接ロボット１０が位置Ｅへ移動し、移動完了後、メイン軌跡計算部３５は次の移動関連命令を要求する。次に命令解釈部３２が取得する教示プログラムＡの命令は「非同期区間  ポジショナ待ち合わせ」であり、移動関連命令ではないが、非同期区間終了の命令である（ステップ１０２、１０３）。そのため、命令解釈部３２は、メイン軌跡計算部３５からの移動関連命令の要求と移動関連命令バッファ部３４からの移動完了通知とを待ち受ける（ステップ１０６）。
【００７０】
命令解釈部３２やメイン軌跡計算部３５により教示プログラムＤの処理が進められる間、ポジショナ２０の移動も進められており、ポジショナ２０が位置ａに到達すると、サブ軌跡計算部３６は移動関連命令バッファ部３４に次の命令を要求する（ステップ４０５）。次の命令は「移動命令  ポジショナ位置ｂ」であり、移動関連命令バッファ部３４は、移動命令と速度設定命令「移動速度設定  ポジショナ１０％」とを合わせてサブ軌跡計算部３６に送信する。サブ軌跡計算部３６は取得した命令を実行して、ポジショナ２０は変更された移動速度で位置ｂへ移動する（ステップ４０１〜４０４）。ポジショナ２０が位置ｂへ到達すると、サブ軌跡計算部３６は移動関連命令バッファ部３４に次の命令を要求し（ステップ４０５）、移動関連命令バッファ部３４は、移動命令「移動命令  ポジショナ位置ｃ」と速度設定命令「移動速度設定  ポジショナ１００％」とを合わせてサブ軌跡計算部３６に送信する。そして、位置ｂへの移動と同様に、ポジショナ２０は変更された移動速度で位置ｃへ移動する（ステップ４０１〜４０４）。このように、移動関連命令バッファ部３４が取得した順番で非同期対象装置の移動関連命令が実行されるため、教示プログラムに記述された順番に命令が実行されることが保証される。
【００７１】
図４に示す例では、ポジショナ２０の移動が遅いため、教示プログラムＤの７行目の移動命令で溶接ロボット１０は位置Ｅへ到達した後、ポジショナ２０が位置ｃに到達するのを待つこととなる。溶接ロボット１０が位置Ｅへ到達後、命令解釈部３２はメイン軌跡計算部３５から命令要求を受信する。また、ポジショナ２０が位置ｃへ到達後、サブ軌跡計算部３６は移動関連命令バッファ部３４に次の命令を要求するが（ステップ４０５）、移動関連命令バッファ部３４には命令が蓄積されていない（ステップ４０６）。そのため、移動関連命令バッファ部３４は命令解釈部３２に移動完了通知を送信する（ステップ４０７）。命令解釈部３２が移動関連命令バッファ部３４から移動完了通知を受信すると、溶接ロボット１０とポジショナ２０の待ち合わせが完了し、ポジショナ２０の非同期区間が終了する。そして、教示プログラムＡの命令が全て実行されたため、図４に示す教示プログラムＡおよび図６に示す教示プログラムＢ〜Ｄの処理が終了する（ステップ１０５）。
【００７２】
以上のように、非同期区間を設け、非同期区間の移動命令を装置ごとに分離することで、溶接ロボット１０および同期対象装置の動作と非同期対象装置の動作とが独立に実行される。このような構成により、操作者は、各装置の動作の関係を考慮して各装置の動作を混合した教示プログラムの作成を新たに行うことなく、教示プログラムの修正作業を軽減してサイクルタイムの短縮を実現することができる。また、移動関連命令が装置ごとの命令に分離され順次実行されるため、速度設定命令などの移動命令以外の移動関連命令を含む教示プログラムの命令が、教示プログラムに記述された順番に実行されることが保証される。
【００７３】
〔非同期区間の重複〕
図４〜図６に示す例では、非同期区間を設定する周辺装置が１台である場合について説明したが、複数の周辺装置について非同期区間を設定することとしても良い。そして、複数の周辺装置の非同期区間が重複することとしても良い。図８は、非同期区間が重複する場合のメイン教示プログラムの一例を示す図である。図８に示す教示プログラムでは、周辺装置としてポジショナ２０のほかにスライダが制御される。
【００７４】
まず、１行目の命令「教示プログラム呼び出しＥ」の実行により、教示プログラムＥが呼び出されて実行される。次に、２行目の命令「非同期区間  スライダ開始」の実行により、スライダの非同期区間が開始される。そして、３行目の命令「教示プログラム呼び出しＦ」の実行により、教示プログラムＦが呼び出されて実行される。教示プログラムＦでは、溶接ロボット１０と同期対象装置であるポジショナ２０は同期制御されるが、非同期対象装置であるスライダは同期制御されずに動作することとなる。次に、４行目の命令「非同期区間  ポジショナ開始」の実行により、ポジショナ２０の非同期区間が開始される。そして、５行目の命令「教示プログラム呼び出しＧ」、６行目の命令「教示プログラム呼び出しＨ」では、スライダの動作は溶接ロボット１０およびポジショナ２０の動作と同期せずに制御され、ポジショナ２０の動作は溶接ロボット１０およびスライダの動作と同期せずに制御されることとなる。
【００７５】
そして、７行目の命令「非同期区間  スライダ待ち合わせ」および８行目の命令「非同期区間  ポジショナ待ち合わせ」の実行により、溶接ロボット１０、スライダ、ポジショナ２０が待ち合わせを行うこととなる。溶接ロボット１０、スライダ、ポジショナ２０の３つの装置の移動が全て完了すると、スライダおよびポジショナ２０の非同期区間が終了する。
【００７６】
以上のように、非同期区間が重複する場合において、各非同期対象装置は同期制御されずに動作し、非同期区間の終了時には溶接ロボット１０と非同期対象装置との待ち合わせが行われる。また、非同期区間が重複する場合、移動関連命令バッファ部３４は、移動関連命令分離部３３から取得する移動関連命令について、非同期対象装置ごとに分けて蓄積していく。
【００７７】
また、本実施の形態において、メイン教示プログラムの非同期区間内に移動命令を直接記述して実行するとエラーが発生するような構成にしても良い。このように、移動命令をメイン教示プログラムの非同期区間内に直接記述できず、サブ教示プログラムに記述するような構成にすれば、操作者が非同期区間として指定できる範囲が限定される。そのため、例えば、同期制御のために記述された移動命令が、非同期区間の終了の記述漏れにより非同期区間内の移動命令として扱われる等の操作者による非同期区間の指定誤りが削減され、溶接ロボット１０や周辺装置が操作者の意図しない動作を行うことを抑制することができる。
【００７８】
さらに、本実施の形態において、非同期区間に溶接ロボット１０の溶接作業に関する命令を記述して実行するとエラーが発生するような構成にしても良い。溶接作業中には、溶接ロボット１０および周辺装置の動作は同期制御されるため、非同期対象装置が独立して動作することはない。そのため、非同期区間に溶接作業に関する命令を実行するとエラーが発生するように構成することで、溶接作業実施中に周辺装置が操作者の意図しない動作を行うことを抑制することができる。
【００７９】
また、本実施の形態において、非同期区間の開始命令および終了命令を異なる教示プログラムで実行するとエラーが発生するような構成にしても良い。例えば、非同期区間が複数の教示プログラムにまたがって記述されるような場合、操作者が意図していたタイミングで非同期区間が終了せず、同期制御のための移動命令が非同期区間の命令として実行されることが考えられる。そのため、非同期区間の開始命令および終了命令を同一の教示プログラム内に記述することで、各装置が操作者の意図しない動作を行うことを抑制することができる。
【符号の説明】
【００８０】
１０…溶接ロボット、２０…ポジショナ、３０…制御装置、３１…教示プログラム記憶部、３２…命令解釈部、３３…移動関連命令分離部、３４…移動関連命令バッファ部、３５…メイン軌跡計算部、３６…サブ軌跡計算部、３７…モータ駆動部、４０…ワイヤカッタ、５０…教示ペンダント
【図１】
2014223693.tif 000003
【図２】
2014223693.tif 000004
【図３】
2014223693.tif 000005
【図４】
2014223693.tif 000006
【図５−１】
2014223693.tif 000007
【図５−２】
2014223693.tif 000008
【図５−３】
2014223693.tif 000009
【図５−４】
2014223693.tif 000010
【図６】
2014223693.tif 000011
【図７】
2014223693.tif 000012
【図８】
2014223693.tif 000013