(57)【要約】【課題】機械の運転中に干渉の発生を予知して確実にこの干渉を防止できる数値制御装置を提供する。【解決手段】先行時間分の先行位置算出部１９は、干渉チェック装置２０での干渉チェックに要した時間、通信に要する時間、可動部の減速停止にかかる時間、及び所定余裕時間加算した時間と干渉チェックの終了時点に基づいて、次の干渉チェックを行う先行時間を求める。又、先読みしたプログラムのデータより先行時間での可動部の先行位置を算出し、干渉チェック装置２０に出力する。干渉チェック装置は先行位置で干渉チェックを行い、干渉すると判断された場合は、軸停止信号を移動指令出力部１６に送り、移動指令を停止し可動部を減速停止させる。干渉チェックに要する時間に合わせて干渉チェックタイミングを決めるから、このタイミングが遅くもなく速くもなく確実に干渉発生を防止できる。【選択図】図１
2008027376.tif 000002
【特許請求の範囲】
【請求項１】
プログラムからの指令に基づいて機械の可動部を駆動制御する数値制御装置であって、可動部と他の物との干渉をチェックする干渉チェック装置を備え、該干渉チェック装置で干渉が予測されたとき可動部の移動を減速停止させるようにした数値制御装置において、
プログラムを先読みし実行データに変換する先読み手段と、
前記干渉チェック装置で干渉チェック処理に要した時間と該干渉チェック装置により干渉チェックの終了時点に基づいて、次の干渉チェックを行う先行時間を求める手段と、
前記干渉チェック終了時点での可動部へ指令された位置と先読みしたプログラムのデータより前記先行時間での前記可動部の先行位置を算出する先行位置算出手段と、
該先行位置算出手段で算出された先行位置を前記干渉チェック装置に出力する手段とを備え、
前記干渉チェック装置により前記先行位置に基づいて干渉チェックを行うようにしたことを特徴とする数値制御装置。
【請求項２】
前記先行時間を求める手段は、該手段と干渉チェック装置との通信に要する時間、移動中の可動部を減速停止にかかる時間及び所定余裕時間を前記干渉チェック処理に要した時間に加算して得られた時間を、干渉チェックの終了時点からの先行時間として求める請求項１に記載の数値制御装置。
【請求項３】
前記先行位置算出手段は、プログラムで指令された速度及び速度オーバライド値に基づいて前記先行位置を算出する請求項１又は請求項２に記載の数値制御装置。
【請求項４】
複数の系統を有する機械を制御する数値制御装置であり、前記先読み手段は各系統のプログラムを先読みし実行データに変換し、先行位置算出手段は、前記先行時間を求める手段で求められた先行時間での各系統の可動部の先行位置を算出し、前記先行位置を前記干渉チェック装置に出力する手段は、算出された各系統の可動部の先行位置を前記干渉チェック装置に出力する請求項１乃至３の内いずれか１項に記載の数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、工具やワーク等の機械可動部の輪郭及び機械の固定部の輪郭を記憶しておきこの記憶した輪郭モデルに基づいて干渉チェック機能を備えた数値制御装置に関する。
【背景技術】
【０００２】
数値制御装置で制御される工作機械等においては、予め作成されたＮＣプログラムに基づいて、数値制御装置が機械の可動部（制御軸）を駆動制御し、被加工物のワーク等に加工を行うものである。ＮＣプログラムにミスがあるような場合や、機械へのワークの取り付けミスがあるような場合、機械運転中に工具がワークやワークを取り付ける治具等に衝突する等の、機械可動部と他のものとの干渉が発生する場合がある。
【０００３】
この干渉を予測し、アラームを発生するようにした装置は既に公知である。  
例えば、ワーク形状、工具形状、機械の干渉チェック点等の機械形状を予め設定しておき、プログラムより移動指令を読み込み、該移動指令と設定したワーク形状、工具形状、機械形状に基づいてワークと工具又は機械が干渉していないかをチェックするようにした発明が知られている（特許文献１参照）。
又、干渉監視準備装置と干渉監視装置を備え、該干渉監視準備装置及び干渉監視装置に設けられた輪郭間干渉判定手段は、作成された加工対象製品の製品輪郭と使用工具輪郭に基づいて、製品輪郭の範囲を区分毎に分割して各区分毎に使用工具及び工作機械の形状との間で干渉の有無を検証するようにした発明も知られている（特許文献２参照）。
【０００４】
【特許文献１】特許第２８９５３１６号
【特許文献２】特開２００５−９２６５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
工作機械を運転中に工具等の可動部（制御軸）とワーク等の他の物との干渉が発生する前に機械の動作を停止させるには、干渉を発生させる位置へ可動部を移動させる前に干渉が発生するか否か判別する必要がある。この判断は、干渉が発生する時間より十分な時間先行して判断する必要がある。
【０００６】
ＮＣプログラムの移動ブロックの指令による移動量を可動部を駆動するモータに出力する前に、この移動ブロックの指令を解析し実行データを作成する段階で、該移動指令による可動部位置に基づいて、干渉が発生するか否かを判断し、干渉が発生すると判断された場合、この移動指令を可動部を駆動するサーボモータには出力せず、アラームを発生させるかインタロック状態として、機械の動作を停止させることによって、干渉発生を回避させている。
【０００７】
この干渉チェックには、その干渉チェックに時間を要する。又、可動部と他の物体との干渉をチェックするものであることから、非常に大きな計算量を必要とするので、数値制御装置に干渉チェック専用の装置を付加する場合がある。このような場合は、数値制御装置本体と干渉チェック装置間の通信時間を要する。そのため、干渉チェック装置が干渉するか否かをチェックして、そのチェック結果を数値制御装置本体に送り、数値制御装置が干渉発生が予測されるときは機械の運転を停止させる場合、少なくとも、この干渉チェックに要する時間と数値制御装置本体と干渉チェック装置間の通信時間を合計した時間分で可動部が移動する位置を予測する必要がある。例えば、干渉チェックに要する時間と前記通信時間の合計がＴ時間であったとすれば、現時点よりＴ時間経過後の可動部の位置を求め干渉するか否か判別し、干渉が発生するような場合、運転を停止させるようにするには、現時点よりＴ時間分後の指令位置を先読みして、この位置によって、干渉チェックを行えばよい。ただし、停止するためには、減速時間を要することから、さらにこの減速時間分前の移動指令位置で干渉チェックする必要がある。
【０００８】
この干渉チェックの周期は、できるだけ短い間隔で行った方がよい。この干渉チェックの時間間隔が長くなると、干渉が発生して、その後、干渉チェックを行うタイミング位置では、干渉が解消したような状態が発生することがあることから、干渉チェックの周期は短いほどよい。しかし、干渉チェックの際使用する位置に達するまでの時間が干渉チェック処理に要する時間よりも短いと、干渉が発生するような場合、干渉チェック処理で干渉が発生すると予知したときには、すでに干渉が発生しているという事態が発生することから、干渉チェックの際使用する位置に達するまでの時間は、干渉チェック処理に要する時間と比較して短すぎても長すぎても良くない。  
特に異なる系統や機械に属する可動部が作業空間上で作業を行うようなシステムを数値制御装置で制御する場合、可動部が複数あり、その可動部間の干渉をチェックするには、干渉チェック周期は短いほどよい。
【０００９】
しかし、可動部は移動するものであることから、この可動部と他の物との干渉対象物間の状況に変化が生じ、この干渉チェック時間が変動する。特に前述したように、異なる系統や機械に属する可動部が作業空間上で作業を行うようなシステムの場合、干渉チェックに要する時間の変動が大きい（例えば、一方の系統の可動部が停止しているときと、両方の系統の可動部が移動しているときでは、干渉チェックに要する時間は大きく異なる）。この干渉チェックに要する最大時間により、干渉チェックの実行周期を固定すると、前述したように、干渉が発生しても、それを検出できないという問題が発生する。  
そこで、本発明の目的は、機械の運転中に干渉の発生を予知して確実にこの干渉を防止できる数値制御装置を提供することにある。
【課題を解決するための手段】
【００１０】
本発明は、プログラムからの指令に基づいて機械の可動部を駆動制御する数値制御装置であって、可動部と他の物との干渉をチェックする干渉チェック装置を備え、該干渉チェック装置で干渉が予測されたとき可動部の移動を減速停止させるようにした数値制御装置において、プログラムを先読みし実行データに変換する先読み手段と、前記干渉チェック装置で干渉チェック処理に要した時間と該干渉チェック装置により干渉チェックの終了時点に基づいて、次の干渉チェックを行う先行時間を求める手段と、前記干渉チェック終了時点での可動部へ指令された位置と先読みしたプログラムのデータより前記先行時間での前記可動部の先行位置を算出する先行位置算出手段と、該先行位置算出手段で算出された先行位置を前記干渉チェック装置に出力する手段とを備え、前記干渉チェック装置により前記先行位置に基づいて干渉チェックを行うようにしたものである。
【００１１】
そして、前記先行時間を求める手段は、該手段と干渉チェック装置との通信に要する時間、移動中の可動部を減速停止にかかる時間及び所定余裕時間を前記干渉チェック処理に要した時間に加算して得られた時間を、干渉チェックの終了時点からの先行時間としている。さらに、前記先行位置算出手段は、プログラムで指令された速度及び速度オーバライド値に基づいて前記先行位置を算出するものとした。又、数値制御装置を複数の系統を有する機械を制御するものとし、前記先読み手段は各系統のプログラムを先読みし実行データに変換し、先行位置算出手段は、前記先行時間を求める手段で求められた先行時間での各系統の可動部の先行位置を算出し、前記先行位置を前記干渉チェック装置に出力する手段は、算出された各系統の可動部の先行位置を前記干渉チェック装置に出力するものとした。
【発明の効果】
【００１２】
干渉チェック処理に要する時間に合わせて干渉チェックタイミング及び、該干渉チェックタイミングの可動部の位置を求めて干渉チェックするから、このタイミングが遅くもなく速くもなく確実に干渉発生を防止できる。
【発明を実施するための最良の形態】
【００１３】
以下本発明の一実施形態について図面と共に説明する。  
図１は、本発明の一実施形態の数値制御装置の機能ブロック図である。  
数値制御装置１０は、前処理と実行に分けられ、前処理では、前処理を行う前処理部１２が、加工プログラム１１より１ブロック毎その指令を読み出し、実行形式のデータに変換し、先読みブロック指令データ１３を作成しレジスタ等に格納する。  
実行処理を行う補間、移動指令の分配処理部１４では、この先読みブロック指令データ１３を１ブロック毎読み出し、該ブロックで指令された各軸移動量、速度、及び送り速度オーバライド指令部２２からのオーバライド値（％）に基づいて、分配周期毎の各軸可動部（各軸のサーボモータ）へ指令する分配移動量を求め、該分配移動量を現在位置レジスタ１５に加算して現在座標位置（以下現在位置という）を更新する。又、移動指令出力部１６を介して加減速処理部１７に出力する。移動指令出力部１６は、後述するように、干渉チェック装置２０から、軸停止指令が入力されたとき、移動指令の分配処理部１４から出力された移動指令の分配移動量を加減速処理部１７に出力することを停止させるものであり、干渉チェック装置２０から、軸停止指令が入力されない限り、移動指令を加減速処理部１７に出力するものである。
【００１４】
加減速処理部１７では、移動指令を受けて加減速処理を行い、サーボモータ２１を制御するサーボ制御部１８にこの加減速処理された移動量の移動指令を出力する。サーボ制御部１８では、この移動指令とサーボモータ２１（又は該サーボモータで駆動される可動部）に取り付けられた位置・速度検出器からの位置、速度のフィードバックに基づいて、位置、速度のフィードバック制御及び駆動電流を検出する電流検出器からの電流フィードバックに基づいた電流のフィードバック制御を行い、アンプを介してサーボモータ２１を駆動制御する。なお、図１では、１つのサーボモータ２１のみ表しているが、工作機械が有する各軸（各可動部）のサーボモータに対して同様の制御がなされ、各可動部は位置、速度の制御がなされるものである。
【００１５】
上述した数値制御装置１０の構成は、従来から公知の構成である。本実施形態では、さらに、数値制御装置１０の内部に先行時間分の先行位置算出部１９が設けられ、さらに干渉チェック装置２０が付加されている点において従来の数値制御装置と相違するものである。  
先行時間分の先行位置算出部１９は、工具等の機械可動部と他の物等が干渉することを検出し、その時点で軸停止信号を移動指令出力部１６に出力して、加減速処理部１７への移動指令を停止させることによって、干渉を回避できる時間（先行時間）分の先行位置（この時間分の未来の位置）を、先読みブロック指令データ１３と送り速度オーバライド指令部２２からのオーバライド値（％）に基づいて求めるものである。  
又、干渉チェック装置２０は、パーソナルコンピュータ等の情報処理装置で構成されている。なお、この干渉チェック装置２０を通信回線を介して接続してもよいものである。該干渉チェック装置２０は、工具やワークの輪郭形状、機械の輪郭形状等を記憶し、先行時間分の先行位置算出部１９から送られてくる、可動部の位置に基づいて工具と他の物との干渉が発生するか否かをチェックするものである。この干渉チェック装置２０の干渉チェック方法、処理は従来から行われている方法、処理と同じであり、説明は省略する。ただし、この実施形態では、干渉チェック装置２０は、干渉チェック処理に要した時間を先行時間分の先行位置算出部１９に送り返している点と、干渉が発生すると判断されたとき軸停止信号を移動指令出力部１６に出力する点が従来と相違するものである。
【００１６】
先行時間分の先行位置算出部１９における先行位置を求める先行時間分は、干渉チェック装置２０が干渉チェック処理に要する時間Ｔ１、この先行時間分の先行位置算出部１９と干渉チェック装置２０との通信に要する時間Ｔ２、移動中の可動部を減速停止にかかる時間Ｔ３を加算した値（Ｔ１＋Ｔ２＋Ｔ３）に所定の余裕時間αを加算した値としている。先行時間分の先行位置算出部１９と干渉チェック装置２０との通信時間Ｔ２は、このシステムの構成が決まると変動はほとんどなく一定な値で、測定して求められる値である。又、減速停止にかかる時間Ｔ３は加減速処理部１７の構成が決まれば、決まる一定の値である。一方、干渉チェック装置２０が干渉チェック処理に要する時間Ｔ１は、可動部の位置によって干渉チェックに要する時間Ｔ１が変わる。特に前述したように異なる系統や機械に属する軸を制御し共通の作業空間で作業させるような場合、可動部が複数存在することから、干渉チェックに要する時間は、この複数の可動部の動作位置によって干渉チェックに要する時間Ｔ１は異なってくる。
【００１７】
そこで、本実施形態では、干渉チェック装置２０で直前に実行した干渉チェックに要した時間を先行時間分の先行位置算出部１９にフィードバックと、この時間を干渉チェックに要する時間Ｔ１としている。直前に実行した干渉チェックした可動部の位置と、次に干渉チェックする可動部の位置は、近い位置関係にあり、次に干渉チェックする場合に要する時間も、同等な時間を要するものと推定されることから、この直前に実行した干渉チェックに要した時間を、今回の干渉チェックに要する時間Ｔ１とするものである。なお、干渉チェックに要する時間Ｔ１として、直前の過去数回分の平均（１回前、２回前、３回前…等の過去数回分の平均）を、干渉チェック装置２０又は先行時間分の先行位置算出部１９で求めて、これを用いてもよい。
【００１８】
図２は、本実施形態における数値制御装置が実施する処理のアルゴリズムを示すフローチャートである。  
この図２に示す例では、２つの系統を制御する数値制御装置の例を示している。  
動作を開始すると、それぞれの系統の加工プログラム１，２を読み出し、各加工プログラム毎ステップ１００以下の処理を行う。まず、前処理（ステップ１００）を行って、実行データをそれぞれ作成し、先読みブロック指令データとして記憶する（ステップ１０１）。
【００１９】
この先読みブロック指令データに基づいて、各軸への移動指令の分配を行う実行処理を行う。まず、先頭より１ブロックの先読みブロック指令データを読み取り（ステップ１０２）、読み取った指令がプログラム終了指令でなければ（ステップ１０３）、ステップ１０４の移動指令の分配処理を実行する。なお、指令が移動指令でない場合は、その指令を実行するものであるが、この点は本発明と直接関係しないことから、図２ではその処理については省略し、移動指令であるときの処理のみを記載している。
【００２０】
ステップ１０４の移動指令の分配処理は、読み出したブロックで指令された位置（移動量）と送り速度オーバライド指令部２２で指令されている速度オーバライド値に基づいて、各軸への分配周期毎の分配移動量を求める。こうして求めた分配移動量を現在位置レジスタに加算して現在位置を更新する（ステップ１０５）。  
次に、先読みブロック指令データより、干渉チェック装置２０に干渉チェックをさせるための先行時間後の位置（指令位置）を算出し出力する処理を行う（図１の先行時間分の先行位置算出部１９の処理）。この処理は、各軸への移動指令の分配処理とは直接関係はないものであるが、この移動指令の分配周期毎に、この先行時間後の位置を算出し、干渉チェック装置２０に出力するものであるから、移動指令の分配のための処理と共に記載しているものである。なお、このステップ１０６の処理の詳細は後述する。
【００２１】
次に、干渉チェック装置２０から軸停止指令が入力されているか判別し（ステップ１０７）、入力されていなければ、ステップ１０４で求めた分配移動量を出力し加減速処理をした後（ステップ１０８、１０９）、この加減速処理した後の移動量をサーボ制御部１８に出力する（ステップ１１０）。そして、読み出したブロックの指令の移動指令の分配を完了したか判断し、完了してなければ、ステップ１０４に戻り、この分配周期毎、ステップ１０４〜１１１の処理を繰り返し実行する。又、移動指令の分配が完了したと判断されたときは、ステップ１１１からステップ１０２に戻り、前述したステップ１０２以下の処理を分配周期毎実行する。
【００２２】
一方、ステップ１０７で、干渉チェック装置２０より軸停止指令が入力されていると、移動指令の出力を断ち、アラームを出力、あるいはインタロック状態とし（ステップ１１２）、加減速処理（ステップ１０９）を行い、その結果をサーボ制御部１８へ出力する。加減速処理では、移動指令の入力が「０」となることから、この時点で加減速処理部に残っていた移動量に基づいて移動指令が「０」となるように減速停止処理がなされることになる。
【００２３】
図３、図４は、ステップ１０６の干渉チェック装置２０に干渉チェックをさせる先行時間後の位置（先行位置）を算出し、干渉チェック装置に出力する処理のアルゴリズムを示すフローチャートである。又、図５は干渉チェック装置２０へ出力する先行位置の出力タイミングの説明図である。この図５の説明図を参照しながら、この先行位置を出力する処理を説明する。  
図５において、「実行ブロックＢ」のＢ１、Ｂ２、Ｂ３、…は、実行するブロックの順番を示し、「ブロック実行時間Ｂｔ」のＢt1、Ｂt2、Ｂt3、…は、各ブロックＢ１、Ｂ２、Ｂ３、…の移動指令による移動の実行時間を意味し、「残時間Ｒｔの設定」におけるＴs0、Ｔs1、Ｔs2、…は、干渉チェックする先行時間を意味する。「先行位置Ｆｐの出力」のＦp0、Ｆp1、Ｆp2、…は、先行位置Ｆｐの各出力を意味しており、「チェック時間Ｔ１の受信」のＴ11、Ｔ12、Ｔ13、…は、干渉チェック装置２０から受信した該干渉チェック装置が直前に実行した干渉チェックに要した時間を示すものである。
【００２４】
なお、数値制御装置１０は、加工プログラムの実行開始指令が入力されたとき、初期設定で干渉チェックの先行位置Ｆｐを記憶するレジスタに現在位置をセットし、先行時間Ｆｔを記憶するレジスタに「０」をセットし、残時間Ｒｔとしてレジスタに初期値をセットする。後述するように、残時間Ｒｔとしてレジスタにセットする時間は、干渉チェック装置２０が干渉チェック処理に要する時間Ｔ１と、この先行時間分の先行位置算出部１９と干渉チェック装置２０との通信に要する時間Ｔ２、減速停止にかかる時間Ｔ３及び所定の余裕時間αを加算した値（Ｔ１＋Ｔ２＋Ｔ３＋α）であり、「Ｔ２＋Ｔ３＋α」は、システム構成が決まれば決まる変化のない固定値であり、これをＴ０とすると、残時間ＲｔとしてＴｓ＝Ｔ１＋Ｔ０が設定されるものである。しかし、最初は干渉チェック処理に要する時間Ｔ１が不明であることから、余裕を持ったチェック時間の初期値Ｔ１’を用いたＴs0（＝Ｔ１’＋Ｔ０）の値が初期値として設定する。
【００２５】
そこで、先読みブロック指令データを読み出し（ステップＳ１）、ブロックで指令された移動量を先行位置の計算に残移動量ＲＤとして利用されるレジスタに格納する（ステップＳ２）。  
次に、当該ブロックの移動指令に対して指令されている速度Ｓとオーバライド指令部から指令されたオーバライド値に基づいて速度Ｓを求める（ステップＳ３）。インタロック信号又はフィードホールド信号が入力されているか判断し（ステップＳ４）、入力されていなければ、先行位置計算用のレジスタに記憶する残移動量ＲＤを速度Ｓで割り、ブロック実行時間Ｂｔを算出する（ステップＳ５）。  
ブロック実行時間Ｂｔとレジスタに記憶する残時間Ｒｔ（最初は初期値のＴs0）を比較し（ステップＳ６）、残時間Ｒｔが小さければ、実行時間Ｍｔを残時間Ｒｔとする（ステップＳ７）。又、ブロック実行時間Ｂｔが残時間Ｒｔ以下であれば、実行時間Ｍｔをブロック実行時間Ｂｔとする（ステップＳ８）。
【００２６】
次に、この実行時間Ｍｔに速度Ｓを乗じて移動量Ｄを求め（ステップＳ１２）、残移動量ＲＤを記憶するレジスタからこの移動量Ｄを減じて残移動量ＲＤを更新し（ステップＳ１３）、さらに先行位置Ｆｐ（最初は初期設定で現在位置）を記憶するレジスタにこの移動量Ｄを加算し先行位置Ｆｐを更新する（ステップＳ１４）。又、残時間Ｒｔ（最初は初期設定でＴs0）を記憶するレジスタから実行時間Ｍｔを減じて、残時間Ｒｔを更新する（ステップＳ１５）。
【００２７】
この更新された残時間が「０」より大きいか判断する（ステップＳ１６）。ステップＳ７でＭｔ＝Ｒｔと設定されているときは、ステップＳ１５の処理で残時間Ｒｔは「０」となっており、ステップＳ１６からステップＳ１７に進む。一方、ステップＳ８で、ブロック実行時間Ｂｔが残時間Ｒｔより小さく、Ｍｔ＝Ｂｔと設定されている場合は、ステップＳ１６での判断は０より大きいと判断される。この場合はステップＳ１６からステップＳ１に戻る。
【００２８】
図５に示す例の、最初のブロックＢ１のブロック実行時間Ｂt1は、残時間Ｒｔとして設定された初期値はＴs0より短いので、ステップＳ８でＭｔ＝Ｂｔとされ、ステップＳ１５でこの残時間Ｒｔ（＝Ｔs0）から実行時間Ｍｔが減じられても正の値であることから、ステップＳ１６からステップＳ１に進み、次のブロックＢ２の指令が読み出され、次のブロックの実行時間Ｂｔ（＝Ｂt2）がステップＳ５の処理で求められる。この図５に示す例では、残時間Ｒｔがこのブロック実行時間Ｂｔ（＝Ｂt2）より短いので、ステップＳ７で、実行時間Ｍｔとしてこの残時間Ｒｔがセットされる。そして、ステップＳ１２〜Ｓ１６の処理がなされて、残時間Ｒｔが「０」となることから、ステップＳ１６からステップＳ１７に移行し、ステップＳ１４で求めた先行位置Ｆｐ（＝Ｆp0）が出力される。
【００２９】
残時間Ｒｔには先行時間Ｔｓ（＝Ｔ１＋Ｔ０）がセットされているものであるから、各ブロックの指令による移動に要する時間を減じて、該残時間Ｒｔが「０」なったときの先行位置Ｆｐは、先行時間での可動部の位置を示すものであり、ステップＳ５〜ステップＳ１６の処理は先行位置算出手段を構成するものである。
【００３０】
そして、干渉チェック装置２０から干渉チェック処理時間Ｔ１が送り返されてくるのを待つ（ステップＳ１８）。この干渉チェック処理時間Ｔ１が送り返されて来る信号は干渉チェック終了信号をも意味する。図５の例で、チェック処理時間Ｔ１がＴ11のタイミングで送り返されて来ると、この送り返されてきたチェック処理時間Ｔ１に固定値Ｔ０を加算した値Ｔs1（＝Ｔ１＋Ｔ０）を残時間Ｒｔとしてレジスタに格納する（ステップＳ１９）。この残時間Ｒｔは先行時間を意味し、ステップＳ１９の処理が先行時間算出手段に対応する。
【００３１】
又、現在位置レジスタ１５に記憶する現在位置を先行位置Ｆｐを記憶するレジスタに格納し（ステップＳ２０）、補間移動指令の分配処理部１４で記憶している当該ブロックの出力残移動量を読み込み（ステップＳ２１）、該出力残移動量が「０」か判断し（ステップＳ２２）、「０」であれば、ステップＳ１に移行し、図５に示す例のように、第１ブロックＢ１の移動処理が終了する前にチェック処理時間Ｔ１（＝Ｔ11）が、返送されてきた場合には、出力残移動量は「０」ではないので、この出力残移動量を残移動量ＲＤを記憶するレジスタにセットし（ステップＳ２３）、この残移動量ＲＤを速度Ｓで割って、この残移動量ＲＤを移動するに必要な予測時間を、ブロック（Ｂ１）の実行時間Ｂｔとして求め（ステップＳ２４）、ステップＳ６に移行する。以下前述したように、残時間Ｒｔが「０」になり、現時点よりステップＳ１でセットした残時間（Ｔ１＋Ｔ０）だけ経過したときの位置である先行位置Ｆｐを求め、残時間Ｒｔが「０」となると、この先行位置Ｆｐを干渉チェック装置２０に出力し（ステップＳ１７）、干渉チェック装置２０に干渉チェックを行わせる。
【００３２】
図５に示す例では、Ｔ11のタイミングでチェック処理時間Ｔ１を受信し、残時間Ｒｔに（Ｔ１＋Ｔ０＝Ｔs1）がセットされ、ステップＳ２０移行の処理がなされて残時間Ｒｔが０となるときの位置（ステップＳ１９で設定した時間が経過したとしたときの位置）、すなわち先行位置Ｆp1を求めステップＳ１７で出力し、干渉チェック装置２０よりチェック処理時間が送り返されるまで待つことになる。
【００３３】
以下、上述した処理を繰り返し実行することになる。すなわち、干渉チェック装置２０よりチェック処理時間Ｔ１が返送されて来ると、該チェック処理時間Ｔ１に基づいて、次に干渉チェックさせる時間（Ｔ１＋Ｔ０）が経過したときの予想位置である先行位置Ｆｐを干渉チェック装置２０に出力し、干渉チェック装置２０よりチェック処理時間Ｔ１が返送されて来るのを待つ、という処理を繰り返し実行することになる。その結果、干渉チェック装置２０の干渉チェック処理に要する時間に合わせて、干渉チェック予定の時間（現時点よりも未来の時間）が決められ、この時間での先行位置（予想位置）求められて、干渉チェック装置に送られ、この先行位置（予想位置）が他のものと干渉するか否かの干渉チェックが干渉チェック装置で行われることになるので、干渉チェックの周期（タイミング）が干渉チェック装置の干渉チェック処理時間より短くなることはなく、又、干渉チェック処理時間より多大に長くなることはなく、干渉チェック処理時間に合わせて最適な干渉チェックができるものである。
【００３４】
前述したように、干渉チェック装置２０での干渉チェック処理に要する時間より短い時間後の位置を干渉チェック装置２０に送出して干渉チェックをしても、干渉チェック処理して干渉が発生すると判断したときは、すでに干渉が発生している状態となり、前もって干渉チェックする意味がなくなってしまう。又、干渉チェックに要する時間よりも多大に長い時間後の位置を干渉チェック装置２０に送出して干渉チェックをしても、一旦干渉が発生し、その干渉が解消したときの位置で干渉チェックが行われる場合が生じるので、干渉チェックの信頼性が薄くなる。しかし、本実施形態では、上述したように、干渉チェックに要する時間が変動しても、前後の干渉チェック処理の時間が大きく変わることがないことから、前回の干渉チェック処理に要した時間に基づいて、当該回の干渉チェックする時間を決め、この時間での予想位置で干渉が発生するか否かのチェックを行うことによって、より効率良くかつ確実に干渉チェックを実行できるようにしたものである。
【００３５】
なお、インタロック信号やフィードホールド信号が入力された場合（ステップＳ４）、機械の動作は停止するが、複数の系統を有する機械を制御しているときや、異なる機械が共通の作業空間で作業しているときなどは、他の系統、又は機械の移動があり、干渉が発生する虞があることから、インタロック信号やフィードホールド信号が入力された場合においては、ステップＳ９〜ステップＳ１１の処理を行う。すなわち、チェック処理時間Ｔ１が干渉チェック装置２０より送り返されてきたか判断し（ステップＳ９）、送り返されてきたならば、現在位置を干渉チェックのための先行位置Ｆｐとして干渉チェック装置２０に出力し、残時間Ｒｔとして受信した干渉チェック処理時間Ｔ１に固定値Ｔ０を加算した値をセットし、ステップＳ４に戻る。以下、インタロック信号やフィードホールド信号が入力されている場合、この処理を繰り返し実行する。
【００３６】
なお、本実施形態では、主に工作機械を制御する数値制御装置について説明したが、工作機械以外のロボットや他の産業機械にも本発明は適用できるものである。
【図面の簡単な説明】
【００３７】
【図１】本発明の一実施形態の数値制御装置の機能ブロック図である。
【図２】同実施形態における数値制御装置が実施する処理のアルゴリズムを示すフローチャートである。
【図３】同実施形態における干渉チェックをさせる先行時間後の位置を算出し、干渉チェック装置に出力する処理のアルゴリズムを示すフローチャートである。
【図４】図３のブロックチャートの続きである。
【図５】同実施形態において先行位置を干渉チェック装置へ出力する出力タイミングの説明図である。
【符号の説明】
【００３８】
１０  数値制御装置
２０  干渉チェック装置
【図１】
2008027376.tif 000003
【図２】
2008027376.tif 000004
【図３】
2008027376.tif 000005
【図４】
2008027376.tif 000006
【図５】
2008027376.tif 000007