(57)【要約】【課題】干渉チェックの周期が長くても、確実に干渉発生を予測できる干渉チェック機能を有する数値制御装置を得る。【解決手段】ＮＣプログラムを実行し可動部を駆動する各軸への移動指令量を出力する所定周期毎の補間、分配処理を行う。この補間、分配処理よりも所定時間だけ早く、補間、分配処理して先行位置予測と干渉チェック周期間の各軸の最大／最小位置（座標値）を求める処理を行う。前回の干渉チェック時の可動部１の位置Ａと今回の干渉チェック時の可動部１の位置Ｂへ移動する間の各軸の最大／最小値及び可動部１の立体形状より、干渉チェック用の立体領域４を求め、この立体領域４と干渉対象物２が干渉しているか否かを判別する。干渉チェック間の移動における各軸の最大位置、最小位置によって、干渉チェック用の立体領域４が求められ干渉チェックがされるから、確実に干渉発生を予測できる。【選択図】図３
2008071015.tif 000002
【特許請求の範囲】
【請求項１】
自動運転中に干渉チェックを行なう機能を有する数値制御装置において、前回の干渉チェック時の可動部の位置から、今回の干渉チェック時の可動部の位置までの移動における各軸の最大位置、最小位置を取得する手段と、予め定義されている可動部の立体形状が、前記取得した各軸の最小位置から最大位置まで移動する立体領域を作成する手段と、該立体領域が予め定義されている干渉対象物の形状に対して干渉するかをチェックする手段を備えることを特徴とする数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、数値制御装置で駆動される機械の可動部と他の干渉対象物との干渉をチェックする干渉チェック機能を有する数値制御装置に関する。
【背景技術】
【０００２】
数値制御装置で制御される工作機械等においては、工具やワーク等の可動部が他のものと衝突又は干渉し、破損することを防止するために、可動部と他の干渉対象物が干渉するか否かを動作開始前にチェックすることが一般に行われている。特に、数値制御装置の自動運転中に干渉チェックを行なうために、一定時間先行した機械位置を出力する機能を有する数値制御装置から可動部の位置を取得し、干渉チェックを行なう方式がすでに公知である。
【０００３】
例えば、工具等の干渉物を複数の立体の組み合わせの立体で定義しておき、加工プログラムを実行して補間処理を行い、各軸への移動量出力後の干渉物の移動位置を計算し、現在の位置からこの計算して得られた位置まで直線移動する干渉物を構成する立体の干渉し得る領域を表す干渉判定立体を計算して求め、この干渉判定立体に基づいて干渉の有無を判断するようにした、数値制御装置による干渉チェック方法が公知である（特許文献１参照）。
【０００４】
【特許文献１】特開平９−２３０９１８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
図１、図２は、前記特許文献１に記載された発明などにより従来から実施されている干渉チェック方法である。図１において符号１は工具等の数値制御装置で制御される機械の可動部であり、図では予め定義されている可動部１の立体形状として表している。又、符号２は予め定義されている干渉対象物であり、この干渉対象物２を定義した立体形状で示しており、これらを概念的に表している。又、図１（ａ）は干渉対象物２と可動部１を上方から見た上面図であり、図１（ｂ）は、斜視図である。前回の干渉チェック時の可動部１の位置がＡであり、今回の干渉チェック時の可動部１の位置がＢであったとき、可動部１に対して定義されている立体形状が位置Ａから位置Ｂに直線移動して得られる可動部１の立体形状が通過する領域を干渉判定領域３（図１において、位置Ａと位置Ｂの可動部１の立体が破線で結ばれる）として、該干渉判定領域３と予め定義されている干渉対象物２の形状が干渉しているか否かによって、干渉をチェックしている。図１の例では、可動部１が、干渉対象物２の領域まで侵入していることから、干渉が発生すると判断する。
【０００６】
一方、図２に示す例は、この従来の干渉チェック方法において、干渉発生を見落とす例を示している。前回の干渉チェック時の可動部１の位置がＡで今回の干渉チェック時の可動部の位置がＢであったとする。しかし、可動部１は、前回と今回の干渉チェック間隔の間に、位置Ａより通過点位置Ｃを経由して位置Ｂに移動するものである。この場合、位置Ａから位置Ｂへの移動の間で通過点位置Ｃで干渉対象物２の領域に侵入し干渉が発生する。しかし、干渉チェック処理においては、位置Ａから位置Ｂに直線移動して得られる可動部１の立体形状が通過する領域を干渉判定領域３とすることから、この通過点位置Ｃを含まないので干渉は発生しないと判断し、干渉発生を見落としてしまう。
【０００７】
以上のように、実際の機械動作は干渉チェック処理に比べて十分に早い（干渉チェック処理の処理時間が機械動作に比べて遅い）ことから、干渉発生の見落としが発生し、干渉発生を予測できない場合がある。この問題はプログラムでの指令が直線補間でも発生しするが（例えば、直線的に移動し、次に逆方向に移動するような場合）、３次元円弧やスプライン補間のような、非直線的な移動の場合に顕著に発生する。
【０００８】
例えば、干渉チェック処理に１００msec必要な場合、干渉チェックに使用する位置情報は、１００msec毎の座標値で行われる。図２を例にとると、前回位置Ａから今回位置Ｂまでの機械動作時間を１００msecとすると、干渉チェックは位置Ａと位置Ｂまでの破線の領域３でのみ行われることになり、実際に通過した通過点位置Ｃでの干渉チェックは行なわれない。  
干渉チェック処理が機械の動作にリアルタイムに追従できればこのような問題はないが、干渉チェックは、干渉対象物として機械を構成する全ての要素（ワーク、テーブル、コラムなど）に対して行われるため処理時間がかかり、実際の機械動作に追従できず、通過点位置Ｃのような干渉を検出、予測できない不検出部が発生する。
【０００９】
このような問題を解決するためには、干渉チェック処理時間を高速化（たとえば５０msec）して、通過点位置Ｃの情報を取得するようにすることが想定されるが、処理の高速化にはソフトロジックの変更やＣＰＵ能力の向上が必要となり対応が困難である。
【００１０】
そこで、本発明の目的は、干渉チェックの周期が従来と同じように長くても、確実に干渉発生を予測できる干渉チェック機能を有する数値制御装置を提供することにある。
【課題を解決するための手段】
【００１１】
本発明は、自動運転中に干渉チェックを行なう機能を有する数値制御装置において、前回の干渉チェック時の可動部の位置から、今回の干渉チェック時の可動部の位置までの移動における各軸の最大位置、最小位置を取得する手段と、予め定義されている可動部の立体形状が、前記取得した各軸の最小位置から最大位置まで移動する立体領域を作成する手段と、該立体領域が予め定義されている干渉対象物の形状に対して干渉するかをチェックする手段を備えることによって、可動部と他の干渉対象物との干渉発生を確実に予測できるようにした。
【発明の効果】
【００１２】
干渉チェックの間隔が長くても、干渉チェックの間隔内に各軸が移動する最大位置と最小位置を求めて干渉チェックのための立体領域を作成し、該立体領域が干渉対象物と干渉するか判断するため、干渉発生の見落としがなくなり、確実に干渉発生を予測できる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の一実施形態を図面と共に説明する。  
図３は、本発明の干渉チェック方法の原理説明図である。図１，図２と同様に、符号１は、工作機械の工具等の数値制御装置で駆動制御される機械の可動部であり、符号２は、干渉対象物である。この図３においても、可動部１及び干渉対象物２は、予め定義され、数値制御装置に設定されているその立体形状で表示している。図３（ａ）は上面図で、図３（ｂ）は斜視図である。ＮＣプログラム運転中に、前回の干渉チェック時に取得した可動部１の位置がＡであり、今回の干渉チェック時に取得した可動部１の位置がＢであったとき、前回の干渉チェックに取得する位置Ａから今回取得した位置Ｂまでに移動した間における各軸の最大位置／最小位置の範囲情報を取得するようにする。可動部１に対して定義されている立体形状が位置Ａから位置Ｂに移動する際の可動部１の通過する領域として、この最大位置、最小位置で囲まれた移動範囲の干渉チェック用の立体領域４を作成し、その立体領域４と素材や機械構造物などの干渉対象物２との干渉チェックを行う。
【００１４】
例えば、図３において可動部１がＸ−Ｙ平面を移動するものとすると、Ｘ座標の最大値、最小値と、Ｙ座標の最大値と最小値を求め、このＸ、Ｙ座標の最大値、最小値によって囲まれる図３で破線で示すような干渉チェック用の立体領域４が干渉対象物２の立体形状と干渉していないか判別して干渉チェックを行う。  
これによって、図２に示したような従来の干渉チェック周期毎に取得した位置間を直線移動させて得られる干渉判定領域３と干渉対象物２との干渉チェックでは干渉を予測できない、位置Ａと位置Ｂ間の通過点Ｃによる干渉発生を予測することができるようにしたものである。
【００１５】
図４は、本発明の一実施形態の数値制御装置１０の機能ブロック図である。  
ＮＣプログラムのブロック解析処理１２では、ＮＣメモリ１１に格納されているＮＣプログラムの各ブロックを順次読込、実行データに変換するブロック解析処理を行う。移動指令量の分配処理１６では、ＮＣプログラムのブロック解析処理１２で求められた各ブロックの実行データに基づいて、補間及び各軸への移動指令の分配処理を分配処理周期毎行い、各軸を駆動するサーボモータＭ１〜Ｍｎに、それそれの移動指令量を出力し、各サーボ制御回路を介して各サーボモータＭ１〜Ｍｎを駆動制御する。以上までの動作処理は従来の数値制御装置と同一である。
【００１６】
本実施形態は、さらに、干渉が発生する機械の工具、ワーク、テーブル、コラムなどの干渉対象物の立体形状を定義し記憶する干渉対象物定義手段１３を備える。又、可動部の先行位置予測と可動部１を駆動する各軸の最大／最小値保存処理１５を行う。この処理は、移動指令量の分配処理１６と同様に、ＮＣプログラムのブロック解析処理１２で求められた各ブロックの実行データより、補間及び各軸への移動指令の分配処理を分配処理周期毎行い、可動部の位置（可動部を駆動する各軸の位置）を求め記憶すると共に、後述する干渉チェック処理からの干渉チェックのための位置読み出し間における各軸の最大値及び最小値を求め記憶する処理であり、移動指令量の分配処理１６よりも所定時間（分配処理周期×Ｎ）だけ先行して行う。
【００１７】
干渉チェック処理１４は、干渉チェック処理周期毎に、先行位置予測と各軸の最大／最小値保存処理１５で求められている、前回の干渉チェック時の読み出し時から、当該読み出し時までの干渉チェック読み出し間の各軸の最大位置及び最小位置を記憶するレジスタから、この最大位置、最小位置を読み出し、その後このレジスタに予測した先行位置を格納する（図４における各軸最大／最小座標値の取得処理２１）。
【００１８】
前回の干渉チェック時の読み出し時に読み出した位置（可動部を駆動する各軸の位置）Ａと今回の干渉チェック時に読み出した可動部の位置Ｂへ移動の間における各軸の最大位置、最小位置と干渉対象物定義手段１３で定義されている可動部１の立体形状に基づいて、干渉チェック用の立体領域４を作成する（図４におけるチェック用の立体領域作成処理２２）。さらに、チェック用の立体領域作成処理２２で求められた立体領域４と干渉対象物定義手段１３に記憶する他の干渉対象物２との干渉が発生しているか判別する干渉チェック処理を行う（図４における干渉対象物と立体領域の干渉チェック処理２３）。
【００１９】
この干渉チェック処理により、干渉が発生すると判断された時には、分配停止処理１７を行い移動指令量の分配処理１６を停止させ、各軸のサーボモータの移動を停止させる。この結果、先行位置予測と各軸の最大／最小値保存処理１５は、移動指令量の分配処理１６での実行よりも所定時間（分配処理周期×Ｎ）だけ早くＮＣプログラムのブロックの指令を実行する（同じブロックの指令を移動指令量の分配処理１６は、先行位置予測と各軸の最大／最小値保存処理１５よりも所定時間遅れて補間分配処理を行う）ことから、実際に可動部１が干渉位置に移動する前に、干渉することが予測され、移動が停止することから、干渉を回避することができる。
【００２０】
しかも、図３で説明したように、干渉チェックのための位置読み出し間隔内における可動部１を駆動する各軸の最大／最小座標値に基づいて、可動部の立体の移動による干渉チェック用の立体領域４を作成して、この立体領域４と干渉対象物２との干渉発生かを判断することから、干渉発生の見落としがなく確実に干渉発生を予測することができる。
【００２１】
図５は、数値制御装置のプロセッサ（ＣＰＵ）が先行位置予測と各軸の最大／最小値保存処理１５として実施する処理のアルゴリズムを示すフローチャートである。この処理は、前述したように、数値制御装置が通常行う移動指令量の分配処理１６と同じ周期で、該分配処理より所定時間早く（分配周期×Ｎの時間だけ早い時間）処理を開始するものである。そのため、通常の移動指令量の分配処理１６は、この先行位置予測と各軸の最大／最小値保存処理１５より所定時間遅れて実行されることになる。
【００２２】
まず、プロセッサはＮＣプログラムのブロック解析処理によって求められているブロックの実行データを最初より読み出し（ステップａ１）、該実行データに基づいて、補間、分配処理を行い、分配周期毎の各軸への移動指令量を求める（ステップａ２）。  
この各軸への移動指令量より各軸の予測位置（座標値）を求める（ステップａ３）。  
次に、干渉チェック周期間の各軸の最大位置（座標値）を記憶するレジスタＲmaxの値とステップａ３で求めた各軸のそれぞれの値を比較し、ステップａ３で求めた位置（座標値）の方が大きければ、該レジスタＲmaxにこの値を格納する。同様に、干渉チェック周期間の各軸の最小位置（座標値）を記憶するレジスタＲminの値とステップａ３で求めた各軸のそれぞれの値を比較し、ステップａ３で求めた値の方が小さければ、該レジスタＲminにこの値を格納する（ステップａ４）。こうして各軸毎に最大位置、最小位置をレジスタＲmax、Ｒminに更新記憶する。なお、最初は、運転開始時の各軸位置（座標値）が、このレジスタＲmax、Ｒminに初期設定されている。
【００２３】
次に、干渉チェック処理からの位置読み出し入力があるか判断し（ステップａ５）、読み出し入力がなければ、ステップａ７に移行する。又、読み出し入力があるときは、レジスタＲmax、Ｒminに記憶する最大位置及び最小位置を干渉チェック処理に引き渡し、各軸の最大位置、最小位置を記憶するレジスタをＲmax、Ｒminにステップａ３で求めた各軸の予測位置をそれぞれ格納する（ステップａ６）。
【００２４】
そして、機械停止指令が発生したか判断し（ステップａ７）、機械停止指令が発生していなければ、当該ブロックの補間分配処理が終了したか判断し、終了してなければ、ステップａ２に戻り、又、終了していればステップａ１に戻り、前述した処理を補間分配周期毎実施する。  
以上のように、先行位置予測と各軸の最大／最小値保存処理では、実際に各軸のサーボモータへの移動指令量の補間分配を行う時より所定時間（所定周期）前に、可動部１を駆動する各軸の予測位置（座標値）と、前回の干渉チェック時と今回の干渉チェック時間における各軸の最大位置、最小位置が求め、干渉チェック時にこの各軸の最大位置、最小位置が読み出されることになる。
【００２５】
図６は、干渉チェック処理１４として、数値制御装置のプロセッサが干渉チェック処理周期毎に実施する処理のアルゴリズムを示すフローチャートである。  
まず、レジスタＲmax、Ｒminに記憶する最大位置、最小位置を読み出す（ステップｂ１）。  
この読み出した最大位置と最小位置、さらに、各軸で駆動される可動部１の定義されている立体形状に基づいて、干渉チェック用の立体領域４を作成する（ステップｂ２）。
【００２６】
求めた立体領域４と定義されている干渉対象物の間で干渉が発生するかの干渉チェックを行い（ステップｂ３）、干渉が発生するか否か判断し（ステップｂ４）、干渉が発生しなければ、ステップｂ１に戻る。以下、干渉チェック周期毎にステップｂ１からステップｂ４の処理を繰り返し実行して、干渉チェックを行う。ステップｂ４で干渉が発生すると判断されたときには、機械停止指令を出力し（ステップｂ５）、各軸のサーボモータへの移動指令量の分配処理（図４の１６の処理）を停止させ、機械の動作を停止させる。
【図面の簡単な説明】
【００２７】
【図１】従来の干渉チェックの説明図である。
【図２】従来の干渉チェックの説明図である。
【図３】本発明の干渉チェックの原理説明図である。
【図４】本発明の一実施形態の数値制御装置の機能ブロック図である。
【図５】同実施形態における先行位置予測と各軸の最大／最小位置保存処理のアルゴリズムを示すフローチャートである。
【図６】同実施形態における干渉チェック処理のアルゴリズムを示すフローチャートである。
【符号の説明】
【００２８】
１  可動部
２  干渉対象物
１０  数値制御装置
Ｍ１〜Ｍｎ  サーボモータ
Ａ  前回の干渉チェック時の可動部の位置
Ｂ  今回の干渉チェック時の可動部の位置
Ｃ  通過点位置
【図１】
2008071015.tif 000003
【図２】
2008071015.tif 000004
【図３】
2008071015.tif 000005
【図４】
2008071015.tif 000006
【図５】
2008071015.tif 000007
【図６】
2008071015.tif 000008