(57)【要約】【課題】工作機械側の先行時間とロボットの先行時間の同期性を確保した干渉チェック機能を備えた数値制御装置を提供すること。【解決手段】本発明の干渉チェックシステムは、数値制御装置とロボットコントローラとの間で、ロボットの補間周期毎の位置情報をインデックスと関連付けて記録した補間レベル移動データを共有し、数値制御装置が、ＮＣプログラムから先読みブロック指令データを読み出す先読み手段と、次に干渉チェックを行う先行時間を算出する先行時間算出部と、干渉チェックの基準となる時間から前記先行時間後における機械が備える軸の先行位置である機械先行位置を算出する機械先行位置算出部と、補間レベル移動データに基づいて、干渉チェックの基準となる時間から前記先行時間後における前記ロボットの先行位置であるロボット先行位置を算出するロボット先行位置算出部とを備えることを特徴とする。【選択図】図２
2017016228.tif 000002
【特許請求の範囲】
【請求項１】
ＮＣプログラムからの指令に基づいて機械が備える軸を駆動制御する数値制御装置と、教示プログラムからの指令に基づいてロボットを制御するロボットコントローラと、前記機械と前記ロボットとの干渉をチェックする干渉チェック装置と、を備えたシステムにおいて、
前記数値制御装置と前記ロボットコントローラとは、前記ロボットの補間周期毎の位置情報をインデックスと関連付けて記録した補間レベル移動データを共有しており、
前記数値制御装置は、
前記ＮＣプログラムから先読みブロック指令データを読み出す先読み手段と、
次の先行位置を算出するための先行時間を算出する先行時間算出部と、
前記干渉チェックの基準となる時間から前記先行時間後における前記機械が備える軸の先行位置である機械先行位置を算出する機械先行位置算出部と、
前記補間レベル移動データに基づいて、前記干渉チェックの基準となる時間から前記先行時間後における前記ロボットの先行位置であるロボット先行位置を算出するロボット先行位置算出部と、
を備え、
前記干渉チェック装置は、前記機械先行位置と前記ロボット先行位置とに基づいて前記機械と前記ロボットとの干渉チェックを行う、
ことを特徴とする干渉チェックシステム。
【請求項２】
前記数値制御装置は、前記ＮＣプログラムに含まれるロボット移動指令に基づいて、前記ロボットに対して移動開始を指令するロボット移動指令手段を備え、
前記ロボット先行位置算出部は、前記ロボット移動指令手段による前記ロボットへの移動開始指令時刻と、前記補間レベル移動データと、前記先行時間とに基づいて前記ロボット先行位置を算出する、
ことを特徴する請求項１に記載の干渉チェックシステム。
【請求項３】
前記数値制御装置は、前記ロボットコントローラから取得または通知された、前記ロボットの現在位置を示すインデックスと、前記ロボットの移動状態を含む前記ロボットの状態情報を記憶し、
前記ロボット先行位置算出部は、前記状態情報と、前記補間レベル移動データと、前記先行時間とに基づいて前記ロボット先行位置を算出する、
ことを特徴する請求項１または２に記載の干渉チェックシステム。
【請求項４】
ＮＣプログラムからの指令に基づいて機械が備える軸を駆動制御する数値制御装置と、教示プログラムからの指令に基づいてロボットを制御するロボットコントローラと、前記機械と前記ロボットとの干渉をチェックする干渉チェック装置と、を備えたシステムにおいて、
前記数値制御装置と前記ロボットコントローラとは、前記機械の補間周期毎の位置情報をインデックスと関連付けて記録した補間レベル移動データを共有しており、
前記ロボットコントローラは、
前記教示プログラムから先読みブロック指令データを読み出す先読み手段と、
次の先行位置を算出するための先行時間を算出する先行時間算出部と、
前記干渉チェックの基準となる時間から前記先行時間後における前記ロボットが備える軸の先行位置であるロボット先行位置を算出するロボット先行位置算出部と、
前記補間レベル移動データに基づいて、前記干渉チェックの基準となる時間から前記先行時間後における前記機械の先行位置である機械先行位置を算出する機械先行位置算出部と、
を備え、
前記干渉チェック装置は、前記ロボット先行位置と前記機械先行位置とに基づいて前記ロボットと前記機械との干渉チェックを行う、
ことを特徴とする干渉チェックシステム。
【請求項５】
前記ロボットコントローラは、前記数値制御装置から取得または通知された、前記機械の現在位置を示すインデックスを含む前記機械の状態情報を記憶し、
前記機械先行位置算出部は、前記状態情報と、前記補間レベル移動データと、前記先行時間とに基づいて前記機械先行位置を算出する、
ことを特徴する請求項４に記載の干渉チェックシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、工作機械とロボット間の干渉チェックシステムに関する。
【背景技術】
【０００２】
工作機械とロボットを融合させ、加工物の着脱などにロボットを使用する機械が増加している。ロボットは、加工物の着脱時に工作機械内部に侵入するため、工作機械とロボット間の干渉チェックを行いたいという要望がある。
【０００３】
工作機械では、特許文献１および２に記載された技術を用いて数値制御装置が先行位置を出力し、その情報を元に干渉チェックを行うことで、干渉前に機械を停止させることが可能である。またロボット同士では、特許文献３に記載された技術によりロボットの教示プログラムを先読みすることで、干渉チェックを行う技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第４２２１０１６号公報
【特許文献２】特許第５３３９９９９号公報
【特許文献３】特許第３９０７６４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
これら従来技術を用いて工作機械とロボットの干渉チェックを行うためには、工作機械を制御する数値制御装置で先行位置を出力するための特許文献１および２の技術を使用すると同時に、ロボット側で先行位置を出力し、数値制御装置とロボットコントローラそれぞれから出力された先行位置に基づいて干渉チェックを行う必要がある。
【０００６】
しかしながら、工作機械を１台のロボットと仮定して特許文献３の技術を適用した場合、ロボット側では工作機械を制御する数値制御装置から教示プログラム相当の情報としてＮＣプログラムを取得できるものの、工作機械を制御するＮＣプログラムは、数値制御装置上で行われる補間の種類、先読みバッファ内の先読み状態や先読みを抑制する指令など、により先行位置を算出するための先行時間が動的に変動するため、工作機械の先行時間に合わせたロボットの先行位置を算出することが困難であるという問題が発生し、干渉チェックを行うことができない。
また、逆に工作機械を制御する数値制御装置側で、ロボットの教示プログラムを取得したとしても、やはり補間の種類、先読みバッファ内の先読み状態や先読みを抑制する指令など、により先行位置を算出するための先行時間が動的に変動するため、ロボットの先行時間に合わせた工作機械の先行位置を算出することは困難である。
【０００７】
そこで本発明の目的は、工作機械側の先行時間とロボットの先行時間の同期性を確保した干渉チェック機能を備えた数値制御装置を提供することである。
【課題を解決するための手段】
【０００８】
本発明では、オフラインプログラミング装置などを使用してあらかじめロボット側、または工作機械側のプログラムを解析し、その移動情報をインデックス付きの補間レベル移動データとして作成した上で、当該補間レベル移動データを数値制御装置とロボットコントローラとの間で共有して、ロボットコントローラの移動開始指令を数値制御装置側で、または数値制御装置側の移動開始指令をロボットコントローラ側で行うようにすることにより上記問題を解決する。
【０００９】
そして、本願の請求項１に係る発明は、ＮＣプログラムからの指令に基づいて機械が備える軸を駆動制御する数値制御装置と、教示プログラムからの指令に基づいてロボットを制御するロボットコントローラと、前記機械と前記ロボットとの干渉をチェックする干渉チェック装置と、を備えたシステムにおいて、前記数値制御装置と前記ロボットコントローラとは、前記ロボットの補間周期毎の位置情報をインデックスと関連付けて記録した補間レベル移動データを共有しており、前記数値制御装置は、前記ＮＣプログラムから先読みブロック指令データを読み出す先読み手段と、次の先行位置を算出するための先行時間を算出する先行時間算出部と、前記干渉チェックの基準となる時間から前記先行時間後における前記機械が備える軸の先行位置である機械先行位置を算出する機械先行位置算出部と、前記補間レベル移動データに基づいて、前記干渉チェックの基準となる時間から前記先行時間後における前記ロボットの先行位置であるロボット先行位置を算出するロボット先行位置算出部と、を備え、前記干渉チェック装置は、前記機械先行位置と前記ロボット先行位置とに基づいて前記機械と前記ロボットとの干渉チェックを行う、ことを特徴とする干渉チェックシステムである。
【００１０】
本願の請求項２に係る発明は、前記数値制御装置は、前記ＮＣプログラムに含まれるロボット移動指令に基づいて、前記ロボットに対して移動開始を指令するロボット移動指令手段を備え、前記ロボット先行位置算出部は、前記ロボット移動指令手段による前記ロボットへの移動開始指令時刻と、前記補間レベル移動データと、前記先行時間とに基づいて前記ロボット先行位置を算出する、ことを特徴する請求項１に記載の干渉チェックシステムである。
【００１１】
本願の請求項３に係る発明は、前記数値制御装置は、前記ロボットコントローラから取得または通知された、前記ロボットの現在位置を示すインデックスと、前記ロボットの移動状態を含む前記ロボットの状態情報を記憶し、前記ロボット先行位置算出部は、前記状態情報と、前記補間レベル移動データと、前記先行時間とに基づいて前記ロボット先行位置を算出する、ことを特徴する請求項１または２に記載の干渉チェックシステムである。
【００１２】
本願の請求項４に係る発明は、ＮＣプログラムからの指令に基づいて機械が備える軸を駆動制御する数値制御装置と、教示プログラムからの指令に基づいてロボットを制御するロボットコントローラと、前記機械と前記ロボットとの干渉をチェックする干渉チェック装置と、を備えたシステムにおいて、前記数値制御装置と前記ロボットコントローラとは、前記機械の補間周期毎の位置情報をインデックスと関連付けて記録した補間レベル移動データを共有しており、前記ロボットコントローラは、前記教示プログラムから先読みブロック指令データを読み出す先読み手段と、次の先行位置を算出するための先行時間を算出する先行時間算出部と、前記干渉チェックの基準となる時間から前記先行時間後における前記ロボットが備える軸の先行位置であるロボット先行位置を算出するロボット先行位置算出部と、前記補間レベル移動データに基づいて、前記干渉チェックの基準となる時間から前記先行時間後における前記機械の先行位置である機械先行位置を算出する機械先行位置算出部と、を備え、前記干渉チェック装置は、前記ロボット先行位置と前記機械先行位置とに基づいて前記ロボットと前記機械との干渉チェックを行う、ことを特徴とする干渉チェックシステムである。
【００１３】
本願の請求項５に係る発明は、前記ロボットコントローラは、前記数値制御装置から取得または通知された、前記機械の現在位置を示すインデックスを含む前記機械の状態情報を記憶し、前記機械先行位置算出部は、前記状態情報と、前記補間レベル移動データと、前記先行時間とに基づいて前記機械先行位置を算出する、ことを特徴する請求項４に記載の干渉チェックシステムである。
【発明の効果】
【００１４】
本発明によれば、数値制御装置またはロボットコントローラにおいて、補間の種類、先読みバッファ内の先読み状態や先読みを抑制する指令ごとに先行位置を算出するための先行時間が動的に変動するような状況であっても、変動した先行時間で相手側の先行位置を算出することが可能になるため、工作機械とロボットとの同期した先行位置を算出することが可能になる。
【図面の簡単な説明】
【００１５】
【図１】本発明の干渉チェックシステムの概要を説明する図である。
【図２】本発明の実施形態における干渉チェックシステムの概略ブロック図である。
【図３】本発明の実施形態における数値制御装置上で実行される処理の概略フローチャートである。
【図４】本発明の他の実施形態における数値制御装置上で実行される処理の概略フローチャートである。
【図５】本発明の他の実施形態における干渉チェックシステムの概略ブロック図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照して本発明の実施形態を説明する。図１は、本発明の一実施形態における干渉チェックシステムの概略図である。
図１に示す干渉チェックシステムでは、工作機械４００とロボット３６０による加工制御を開始する前に、事前にオフラインプログラミング装置６００などを使用してロボットコントローラ３００上で実行されるプログラムを解析し、該プログラムによるロボット３６０の移動情報をインデックス付きの補間レベル移動データとして作成しておく。そして、作成した当該補間レベル移動データを数値制御装置１００とロボットコントローラ３００で共有し、ロボット３６０の移動開始指令を数値制御装置１００側で行うようにする。
【００１７】
加工プログラムに基づく加工制御の際には、数値制御装置１００は先行位置の算出中に加工プログラム内にロボット３６０への移動開始指令があることを検出すると、ロボットコントローラ３００との間で共有しているロボット３６０の補間レベル移動データに基づき、工作機械４００の先行位置と合わせてロボット３６０の先行位置を算出する。
【００１８】
一方で、ロボットコントローラ３００は数値制御装置１００からの移動開始指令を受けたら、数値制御装置１００と共有しているロボット３６０の補間レベル移動データに基づき、アームのたわみを考慮した補正や、重力補正などを加味してロボット３６０の動作を該補間レベル移動データが示す位置となるよう制御を行う。そのため、数値制御装置１００との間で共有しているロボット３６０の補間レベルの位置と実際のロボット３６０の位置を一致させることが可能となる。
【００１９】
ここで、数値制御装置１００とロボットコントローラ３００とは非同期で動作するため、徐々に数値制御装置１００で算出したロボット３６０の先行位置との間に誤差が生じてくる。この誤差を補正するため、ロボットコントローラ３００は、ロボット３６０の現在位置を示す補間レベル移動データに付加されているインデックスと、ロボット３６０が停止中か動作中かを示す移動状態の情報とを含む状態情報を、数値制御装置１００へフィードバックする。ロボットコントローラ３００からフィードバックされてきたロボット３６０の状態情報を受けた数値制御装置１００は、状態情報に含まれるロボット３６０の現在位置を示すインデックスと移動状態の情報に基づいて、現在算出中の先行位置と実際のロボット３６０の現在位置から誤差を補正する。なお、ロボット３６０の状態情報は、数値制御装置１００がロボットコントローラ３００から取得するようにしても良い。
【００２０】
また、上記の説明では、ロボット３６０の移動開始指令を数値制御装置１００側で行うように説明したが、ロボットの移動開始指令を数値制御装置１００側で行わず、ロボットコントローラ３００側で独立して動作を開始しても良い。
【００２１】
以下では、本発明の一実施形態における干渉チェックシステムの動作を、ブロック図とフローチャートにしたがって説明する。
図２は、本実施形態における干渉チェックシステムの概略的な機能ブロック図である。本実施形態の干渉チェックシステムは、数値制御装置１００、ロボットコントローラ３００、ロボット３６０、工作機械４００、干渉チェック装置５００を備える。
【００２２】
数値制御装置１００は、ＮＣプログラム１１０に基づいて工作機械を制御すると共に、ＮＣプログラム１１０を先読みして得られる先読みブロック指令データ１２０、事前にオフラインプログラミング装置６００等を用いて作成し、ロボットコントローラ３００との間で共有したロボット３６０の補間レベル移動データ１３０、およびロボットコントローラ３００から通知または取得されたロボット３６０の状態情報１４０に基づいて工作機械４００の各軸の先行位置とロボット３６０の先行位置とをそれぞれ算出し、干渉チェック装置５００へ出力する処理を実行する。
【００２３】
数値制御装置１００は、前処理部と実行部とに分けられ、前処理部において制御に実行に必要となる各種データを生成し、該データに基づいて実行部において工作機械などの制御が実行される。
【００２４】
前処理部では、ＮＣプログラム１１０を先読みして、先読みブロック指令データ１２０をメモリ（図示せず）に記憶する。また、事前にオフラインプログラミング装置６００等を用いて作成し、ロボットコントローラ３００との間で共有したロボット３６０の補間レベル移動データ１３０をメモリ（図示せず）に記憶するとともに、ロボットコントローラ３００から逐次通知または取得されるロボット３６０の状態情報１４０を管理する。
【００２５】
実行部が備える分配処理部２１０は、先読みブロック指令データ１２０を１ブロック毎読み出し、該ブロックで指令された各軸移動量、各軸速度に基づいて、分配周期毎の各軸可動部（工作機械４００が備える各軸のサーボモータ）へ指令する補間レベルの分配データを作成する補間移動指令の分配処理を実行する。
そして作成された補間レベルの分配データは移動指令出力部２５０に出力され、該移動指令出力部２５０を介して加減速処理部２６０に出力される。加減速処理部２６０は、移動指令出力部２５０からの移動指令を受けて加減速処理を行い、工作機械が備える各軸のサーボモータを制御するサーボ制御部２７０に、この加減速処理部により加減速処理された移動量の移動指令を出力する。
【００２６】
先行時間算出部２２０では、先読みブロック指令データ１２０と分配処理部２１０で作成した補間レベルの分配データ、およびあらかじめ定められた基準先行時間Ｔに基づいて、先行時間ｔ１を算出する。先行時間算出部２２０は、分配処理部２１０が分配処理を行った指令データの移動距離、速度を用いて、バッファ内に基準先行時間Ｔまでの指令データが蓄積されていれば基準先行時間Ｔを先行時間ｔ１とし、蓄積されていない場合にはバッファ内の指令データから求められる最大の時間を先行時間ｔ１として算出する。なお、基準先行時間Ｔは、干渉チェック装置５００が干渉チェック処理に要する時間、数値制御装置１００と干渉チェック装置５００との間の通信に係る時間、および工作機械４００の軸やロボット３６０が停止指令を受けてから減速停止に係る時間等に基づいてあらかじめ定められる時間であり、詳細は特許文献１などに説明されているので本明細書では省略する。
【００２７】
また、先行時間算出部２２０は、先行時間ｔ１を算出する際に、先読みブロック指令データ１２０内に、ロボット３６０の移動開始指令があった場合には、更に現時刻からロボット３６０の移動開始指令までの時間ｔ２を算出する。算出されたロボット移動開始時間ｔ２は、先行時間算出部２２０で、ロボット３６０の移動開始指令時にｔ２＝０となるように、ＮＣプログラムの処理ブロックが（先行時間を算出するための基準位置が）ロボット３６０の移動開始指令のブロックになるまで処理周期毎に減算され、その時点でロボット３６０の状態は移動中状態となる。先読みブロック指令データ１２０内に、ロボット３６０の移動開始指令がなく、ロボット３６０が移動中の場合は、ｔ２＝０に設定され、ロボット３６０が停止中の場合は、ｔ２＝ｔ１が設定される。したがって、ロボット移動開始時間ｔ２は、０≦ｔ２≦ｔ１の範囲になる。
【００２８】
更に、先行時間算出部２２０で、先行時間を算出するための基準位置が、ロボット３６０の移動開始指令の位置になった時点で、数値制御装置１００からロボットコントローラ３００に対してロボット３６０の移動開始が指令される。
【００２９】
工作機械先行位置算出部２３０は、先行時間算出部２２０で算出した先行時間ｔ１に基づいて、工作機械４００が備える各軸の先行位置を算出する。工作機械４００の先行位置の算出方法については、特許文献１等に開示されているため本明細書では詳細は省略する。
【００３０】
ロボット先行位置算出部２４０は、補間レベル移動データ１３０と、ロボットコントローラ３００から逐次通知または取得されるロボット３６０の状態情報１４０とに基づいてロボット３６０の現在位置を求めた上で、該ロボット３６０の現在位置と、補間レベル移動データ１３０とに基づいて先行時間ｔ１後のロボット３６０の先行位置を算出する。ロボット３６０の先行位置の算出方法は、たとえば、補間レベル移動データ１３０の各インデックス（ロボットコントローラ３００における１補間周期）を１単位とした場合、数値制御装置１００とロボットコントローラ３００の補間周期ｃｙｃｌｅ、先行時間ｔ１、ロボット３６０の移動開始指令までの時間ｔ２、現在位置のインデックスｃｐｏｓから、以下に示す数１式を用いて先行位置を示すインデックスｆｐｏｓを算出し、算出されたｆｐｏｓと補間レベル移動データ１３０とにより求めることができる。
【００３１】
【数１】
2017016228.tif 000003
【００３２】
なお、数値制御装置１００とロボットコントローラ３００のそれぞれの補間周期が異なる場合に、先行時間に対応する補間レベル移動データ１３０の適当なインデックスが存在しない場合がある。そのような場合には、補間レベル移動データ１３０における、先行時間に対応するところの前のインデックスが指し示す位置情報をロボット３６０の先行位置としてもよいし、後ろのインデックスが指し示す位置情報をロボット３６０の先行位置としてもよい。また、前のインデックスが指し示す位置情報と後ろのインデックスが指し示す位置情報との中間の位置や、前のインデックスが指し示す位置情報と後ろのインデックスが指し示す位置情報とを先行時間に基づいて線形補間した位置情報をロボット３６０の先行位置としてもよい。
【００３３】
この時、ロボットコントローラ３００から状態情報１４０が取得される周期（ｆｂｃｙｃｌｅ）が、数値制御装置１００とロボットコントローラ３００の補間周期と一致する場合、工作機械４００とロボット３６０の先行位置は、常に同期性が保たれる。
ｆｂｃｙｃｌｅ＞ｃｙｃｌｅの場合、先行位置の同期性に誤差が発生するが、ロボット３６０の現在位置を示すインデックスと移動状態を含む状態情報１４０が取得された時点で誤差が補正される。
【００３４】
なお、ｆｐｏｓが補間レベル移動データ１３０の最大インデックス値を超えた場合にロボット３６０はロボット停止中であると見なす。ロボット停止中は、ｔ２＝ｔ１とすることで、先行時間後のロボット３６０の先行位置を現在位置と一致させることができる。
【００３５】
図３は、図２に示した機能ブロックを備えた数値制御装置１００上で実行される処理の概略フローチャートである。
●［ステップＳＡ０１］ＮＣプログラム１１０を先読みし、先読みブロック指令データ１２０として読み込む。
●［ステップＳＡ０２］分配処理部２１０は、先読みブロック指令データ１２０に基づいて補間レベルの分配データを作成する。
●［ステップＳＡ０３］先行時間算出部２２０は、先読みブロック指令データ１２０と分配処理部２１０で作成した補間レベルの分配データを基に先行時間ｔ１を算出する。
【００３６】
●［ステップＳＡ０４］先読みブロック指令データ１２０内に、ロボット３６０の移動開始指令があるか否かを判定する。ロボットの移動開始指令があった場合にはステップＳＡ０５へ進み、無かった合にはステップＳＡ０６へ進む。
●［ステップＳＡ０５］現時刻からロボット３６０の移動開始指令までの時間ｔ２を算出する。
【００３７】
●［ステップＳＡ０６］状態情報１４０を参照するなどして、現在ロボット３６０が移動中か否かを判定する。ロボット３６０が移動中である場合にはステップＳＡ０７へ進み、停止中の場合にはステップＳＡ０８へ進む。
●［ステップＳＡ０７］ロボット３６０の移動開始指令までの時間ｔ２を０に設定する。
●［ステップＳＡ０８］ロボット３６０の移動開始指令までの時間ｔ２をｔ１に設定する。
【００３８】
●［ステップＳＡ０９］先行時間を算出するための基準位置が、ロボット３６０の移動開始指令の位置になった否かを判定する。移動開始指令の位置になった場合にはステップＳＡ１０へ進みそうでない場合にはステップＳＡ０７へ進む。
●［ステップＳＡ１０］ロボットコントローラ３００に対して、ロボット３６０の移動開始指令を実行する。
【００３９】
●［ステップＳＡ１１］工作機械４００が備える各軸の先行位置を算出する。
●［ステップＳＡ１２］ロボット３６０の先行位置をロボット３６０の状態情報１４０に基づいて算出し、ステップＳＡ０１へ戻る。
【００４０】
なお、ロボット３６０の移動開始指令を数値制御装置１００側で行わず、数値制御装置１００とロボットコントローラ３００とのそれぞれが独立して動作する構成に対しても本発明を適用することができる。
図４は、ロボット３６０の移動開始指令を数値制御装置１００側で行わず、数値制御装置１００とロボットコントローラ３００とのそれぞれが独立して動作する場合における、数値制御装置１００上で実行される処理の概略フローチャートである。
【００４１】
●［ステップＳＢ０１］ＮＣプログラム１１０を先読みし、先読みブロック指令データ１２０として読み込む。
●［ステップＳＢ０２］分配処理部２１０は、先読みブロック指令データ１２０に基づいて補間レベルの分配データを作成する。
●［ステップＳＢ０３］先行時間算出部２２０は、先読みブロック指令データ１２０と分配処理部２１０で作成した補間レベルの分配データを基に先行時間ｔ１を算出する。
●［ステップＳＢ０４］工作機械４００が備える各軸の先行位置を算出する。
【００４２】
●［ステップＳＢ０５］状態情報１４０を参照するなどして、ロボット３６０が停止中か否かを判定する。ロボット３６０が停止中ではない場合にはステップＳＢ０６へ進み、ロボット３６０が停止中である場合にはステップＳＢ０７へ進む。
●［ステップＳＢ０６］補間レベル移動データ１３０と、ロボットコントローラ３００から取得した、または通知されたロボット３６０の状態情報１４０に基づいて、移動中のロボット３６０の先行位置を算出して、ステップＳＢ０１へ戻る。たとえば、ロボット３６０の補間レベル移動データ１３０のインデックスを１単位とした場合、数値制御装置１００とロボットコントローラ３００の補間周期ｃｙｃｌｅ、先行時間ｔ１、現在位置のインデックスｃｐｏｓから、ロボット３６０の先行位置を示すインデックスｆｐｏｓは、ｆｐｏｓ＝ｃｐｏｓ＋ｔ１／ｃｙｃｌｅとして算出することができる。
●［ステップＳＢ０７］補間レベル移動データ１３０と、ロボットコントローラ３００から取得した、または通知されたロボット３６０の状態情報１４０に基づいて、停止中のロボット３６０の先行位置を算出して、ステップＳＢ０１へ戻る。たとえば、ロボット３６０の補間レベル移動データ１３０のインデックスを１単位とした場合、数値制御装置１００とロボットコントローラ３００の補間周期ｃｙｃｌｅ、先行時間ｔ１、現在位置のインデックスｃｐｏｓから、ロボット３６０の先行位置を示すインデックスｆｐｏｓは、ｆｐｏｓ＝ｃｐｏｓとして算出することができる。
【００４３】
上記した構成に依れば、ロボットコントローラは、ロボットの現在位置を示すインデックスと移動状態を示す情報を数値制御装置へ通知または数値制御装置が取得できる機能だけを実装すれば、工作機械とロボットの干渉チェック機能が実現できる。
【００４４】
また、数値制御装置は補間の種類、先読みバッファ内の先読み状態や先読みを抑制する指令ごとに先行位置を算出するための先行時間が動的に変動しても、変動した先行時間でロボットの先行位置を算出することが可能になるため、工作機械とロボットとの同期した先行位置を算出することが可能になる。
【００４５】
更に、ロボットコントローラから、ロボットの現在位置を示すインデックス情報および移動状態を示す情報を取得することで、工作機械とロボットの先行位置の誤差を最小限に補正することが可能になる。
【００４６】
以上、本発明の実施の形態について説明したが、本発明は上述した実施の形態の例のみに限定されることなく、適宜の変更を加えることにより様々な態様で実施することができる。
【００４７】
例えば、上記した実施形態では、ロボットコントローラ３００上で実行される教示プログラムを、事前にオフラインプログラミング装置６００などを使用して解析してロボット３６０の移動情報をインデックス付きの補間レベル移動データとして作成し、数値制御装置１００とロボットコントローラ３００との間で共有する例を示したが、逆に、数値制御装置１００上で実行されるＮＣプログラムを、事前にオフラインプログラミング装置６００などを使用して解析して工作機械４００の移動情報をインデックス付きの補間レベル移動データとして作成し、数値制御装置１００とロボットコントローラ３００との間でそれぞれ補間レベル移動データ１３０、補間レベル移動データ３１０として共有するように構成してもよい。
【００４８】
その場合、図５に示すように、上記実施形態において数値制御装置１００上に実装した先行時間算出部２２０、工作機械先行位置算出部２３０、ロボット先行位置算出部２４０に対応する構成である、先行時間算出部３７０、ロボット先行位置算出部３８０、工作機械先行位置算出部３９０などをそれぞれロボットコントローラ３００上に実装し、これら機能手段で工作機械４００とロボット３６０の先行位置をそれぞれ算出し、干渉チェック装置５００に対して通知するような構成となる。
この時、数値制御装置１００は、工作機械の現在位置を示す補間レベル移動データ１３０に付加されているインデックスを含む状態情報をロボットコントローラ３００へフィードバックし、ロボットコントローラ３００がフィードバックされてきた状態情報に基づいて、現在算出中の先行位置と実際のロボット３６０の現在位置から誤差を補正するようにすればよい。
【符号の説明】
【００４９】
１００  数値制御装置
１１０  ＮＣプログラム
１２０  先読みブロック指令データ
１３０  補間レベル移動データ
１４０  状態情報
２１０  分配処理部
２２０  先行時間算出部
２３０  工作機械先行位置算出部
２４０  ロボット先行位置算出部
２５０  移動指令出力部
２６０  加減速処理部
２７０  サーボ制御部
３００  ロボットコントローラ
３１０  補間レベル移動データ
３２０  補間移動指令分配処理部
３３０  移動指令出力部
３４０  加減速処理部
３５０  サーボ制御部
３６０  ロボット
４００  工作機械
５００  干渉チェック装置
６００  オフラインプログラミング装置
【図３】
2017016228.tif 000004
【図４】
2017016228.tif 000005
【図１】
2017016228.tif 000006
【図２】
2017016228.tif 000007
【図５】
2017016228.tif 000008