(57)【要約】【課題】移動軸に回転軸を含む場合でも正しいコーナ判別を行い、また制御する軸が直線軸のみの場合、回転軸が含まれる場合、それぞれの場合に応じて、適切なコーナ加減速を行うこと。【解決手段】移動制御軸に回転軸を含む数値制御装置において、回転軸の移動を含むコーナ加減速を行う際に、隣接するブロックにおける回転軸の移動ベクトルを直交３軸における移動ベクトルに換算する手段と、この換算されたベクトルを角度算出演算に当てはめてコーナ角度を求める手段とを含むコーナ加減速処理機能を有する。回転軸の移動を含むコーナ加減速を行う際に、回転軸での移動量に倍率を乗じた値を、角度算出演算に当てはめてコーナ角度を求める手段を含むコーナ加減速処理機能を有する【選択図】　　　図１
2004094372.tif 000002
【特許請求の範囲】
【請求項１】
移動制御軸に回転軸を含む数値制御装置において、回転軸の移動を含むコーナ加減速を行う際に、隣接するブロックにおける回転軸の移動ベクトルを直交３軸における移動ベクトルに換算する手段と、この換算されたベクトルを角度算出演算に当てはめてコーナ角度を求める手段とを含むコーナ加減速処理機能を有することを特徴とする数値制御装置。
【請求項２】
移動制御軸に回転軸を含む数値制御装置において、回転軸の移動を含むコーナ加減速を行う際に、回転軸での移動量に倍率を乗じた値を、コーナ加減速の計算式に用いる手段を含むコーナ加減速処理機能を有することを特徴とする数値制御装置。
【請求項３】
回転軸の移動量の倍率を自動計算する手段と、パラメータまたはプログラムによって切替える手段を有することを特徴とする請求項２に記載の数値制御装置。
【請求項４】
移動制御軸に回転軸を含む数値制御装置において、コーナ付近での加工速度算出を行う際に、制御対象軸の軸構成に応じて使用する加減速処理を変更する手段を有することを特徴とする数値制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、回転軸を含む加工制御を行う数値制御装置に関し、進行方向の変化角度が大きな指令ブロックの継目における加工時に発生する切削工具の振動や指令値と実際の移動軌跡の差異を抑制した数値制御装置に関するものである。
【０００２】
【従来の技術】
数値制御装置（ＮＣ装置）によって、例えばワークの切削加工を行う場合、指令に基づいてワークと工具とが相対移動されワークを加工するのであるが、例えば工具の進行方向が変化する場合（換言すればコーナ形状の加工の場合）、工具の移動につき進行方向の変化の程度を判定し（換言すればコーナ判別を行い）、変化の程度によっては指令された速度よりも減速した移動処理（減速処理）を行い、指令どおりの加工を行う必要がある。すなわち、指令どおりのコーナ形状となるように高精度加工を保証するためには、コーナ部において減速処理を行う必要がある場合が存在し、この減速処理で使われる技術にコーナ判別がある。例えば、ＮＣ指令をＧ９１（ワークと工具の相対移動指令）、Ｇ０１（切削直線移動）とした場合、
Ｇ９１　Ｇ０１　Ｘ１０．０　Ｆ１００００．０　　・・・増分値でＸ方向に１０ｍｍを１０ｍ／分で直線補間
Ｇ０１　Ｘ１０．０　Ｙ０．１　　　　　　　　　　・・・Ｘ方向に１０ｍｍ、Ｙ方向に０．１ｍｍを直線補間
Ｇ０１　Ｘ−１０．０　　　　　　　　・・・Ｘ方向に−１０ｍｍを直線補間
という加工プログラムは、図９に示すような軌跡を描く。この図９において、第１ブロックと第２ブロックの変化する角度θ１は小さい（コーナが緩い）ので、減速することなくＦ１００００．０にて指定された送り速度を維持して加工しても、加工面を滑らかに保つことができるが、第２ブロックと第３ブロックのなす角度θ２は大きい（コーナがきつい）ので、Ｆ１００００．０より小さな速度に減速してコーナに近づき、加速しながらコーナを出て行くという処理を行わないと、加工されたコーナの形状がだれてしまう。このため第１ブロックと第２ブロックとの角度変化及び第２ブロックと第３ブロックとの角度変化についてコーナ判別という判断を行う処理が必要となる。
【０００３】
図１０は、このコーナ判別処理を搭載する数値制御装置の概略構成を示すブロック図である。図１０において、１は加工プログラムを格納している記憶装置、２は記憶装置１内に格納されている加工プログラムを読み込んで各ブロックの移動開始点と移動終了点の算出およびコーナ判別などを行うプログラム解析部、３はプログラム解析部２により解析された移動開始点と移動終了点に基づいて補間処理を実行し、各軸方向の移動量に分配する補間部、４は各軸方向の移動量とコーナ判別部が付加した加減速情報から移動サンプリング周期当たりの移動量を計算し、移動指令パルスを出力する移動指令パルス分配部、５は移動指令パルス分配部４からの指令を入力して、移動指令に移動があった場合に指令パルスに対して加減速処理を実行する加減速部、６は加減速部５からの信号を入力して、指令パルスを出力する指令パルス出力部、７は指令パルス出力部６からの指令パルスを入力して制御対象であるモータ８を制御する駆動部である。
【０００４】
ここにおいて、プログラム解析部２は以下の３つの部分から構成されている。すなわち、２１は加工プログラムを取り込み、数値制御装置が計算しやすい情報へと変換するプログラム読込部、２２は各ブロックの移動開始点と移動終了点を算出するパス生成部、２３はブロック間における移動ベクトルの変化量からコーナの角度変化を評価し、コーナが閾値より大きな角度変化を有する場合、コーナ付近での速度を十分小さな値にクランプするという情報を付加するコーナ判別部である。
【０００５】
ここで従来のコーナ判別部２３でのコーナ判別処理を、図１１及び図１２を参照して述べる。図１１は、第１ブロックから第２ブロックへの移動に際し、移動ベクトルｒｎ−１から移動ベクトルｒｎへ変化した場合の様子を示しており、加工プログラムの指令としては、Ｇ９１　Ｇ０１　Ｘ２０　Ｙ１０　Ｚ１０からＧ０１　Ｘ１０　Ｙ２０　Ｚ３０への変更を示している。そして、従来のコーナ判別処理は、ｃｏｓθ＝ｒｎ・ｒｎ−１／（｜ｒｎ｜＊｜ｒｎ−１｜）という余弦定理（ここではベクトルの内積を表す公式）に当てはめて、コーナ角度θを算出する。なお、図１１において、ｃｏｓθの式中、上式はいわゆる第２余弦定理、下式は内積の公式であるが、角度θを求める式であることは、代わりがない。また、式において｜ｒｎ｜は移動ベクトルｒｎの大きさ、”・”はベクトルの内積、ｒｎの添え字”ｎ”はｎ番目のブロックであることを意味する。
【０００６】
具体的には、「Ｇ９１；　　Ｇ０１　Ｘ２０　Ｙ１０　Ｚ１０；　　Ｇ０１　Ｘ１０　Ｙ２０　Ｚ３０；」というプログラム指令にあって、移動ベクトルｒｎ−１、ｒｎを成分で表すと、ｒｎ−１＝（２０，１０，１０）、ｒｎ＝（１０，２０，３０）となり、コーナ角度は成分表示の公式からｃｏｓθ＝ｒｎ・ｒｎ−１／（｜ｒｎ｜＊｜ｒｎ−１）＝（２０＊１０＋１０＊２０＋１０＊３０）／（ｓｑｒｔ（２０２＋１０２＋１０２）＊ｓｑｒｔ（１０２＋２０２＋３０２））＝０．７６３７・・・として求めることができる。ここで、ｓｑｒｔ（Ｘ）はＸの平方根を表す。
【０００７】
この結果、コーナ判別処理としては、図１２に示すようにブロック継目直前の移動ベクトルｒｎ−１の取得を行い（ステップＳ３０１）、ついでブロック継目直後の移動ベクトルｒｎ　の取得を行う（ステップＳ３０２）。この後、余弦定理によってコーナの角θを算出する（ステップＳ３０３）。
【０００８】
【発明が解決しようとする課題】
以上の説明は、直線移動のみの加工を前提にして説明したものである。すなわち、ある軸の直線移動プログラム指令が急激に変化するブロックでは、その軸のモータ出力が指令についていけないので、減速しなければいけないという判断を、コーナ角度の大小を使って判断している。しかし、加工にあたっては、移動軸として回転軸を有する場合がある。この場合、従来の数値制御装置では、直線軸のみでコーナ判別を行う場合と回転軸を含む直線軸の場合とで、コーナ判別の方法を分けることなく、同一のコーナ判別処理を行っている。
【０００９】
しかし、ワークと工具の刃先のなす相対軌跡という面から考えた場合、従来の判別処理にて算出されるコーナ角度は、移動軸に回転軸が含まれる場合には、以下の様な問題のある角度計算を行ってしまう。
【００１０】
すなわち、例えばＣ軸を回転軸としＺ軸を直線軸である移動軸とした場合、「Ｇ９１；　　Ｇ０１　Ｚ１００　Ｃ９０；　　Ｇ０１　Ｚ１００　Ｃ−９０；」というプログラム指令では、計算されるコーナ角度はｃｏｓθ＝ｒｎ・ｒｎ−１／（｜ｒｎ｜＊｜ｒｎ−１）＝（１００＊１００＋９０＊−９０）／（ｓｑｒｔ（１００２＋９０２）＊ｓｑｒｔ（１００２＋９０２））＝０．１０４９７・・・と計算される。従って、従来のコーナ判別処理によって算出されるコーナ角度は、工具やワークの形状に拘らず、軸の移動量が同じ場合には、常に同じコーナ判別を行ってしまうことになる。
【００１１】
ところが、図１３のように、半径の大きさが極端に異なる２種類のワークＡ、Ｂを想定してみれば明らかであるが、ワークＡもワークＢも「Ｇ９１；　　Ｇ０１　Ｚ１００　Ｃ９０；　　Ｇ０１　Ｚ１００　Ｃ−９０；」というブロックを実行しており、刃先とワークの相対軌跡、つまり切削が行われていく軌跡は、“Ｇ０１　Ｚ１００　Ｃ９０；”のブロックが矢印▲１▼、“Ｇ０１　Ｚ１００　Ｃ−９０；”のブロックが矢印▲２▼で表されているにも拘らず、矢印▲１▼と矢印▲２▼のなす角度θは、軸回転にかかわる周速度の違いから半径が小さいワークＢよりも半径の大きいワークＡの方が鋭くなっている。このように、従来のコーナ判別では、回転軸が含まれる場合に正しいコーナ判別を行うことができない。
【００１２】
なお、回転軸制御の従来例として特開平４−３４０６０４号公報記載の技術があるが、この技術（特開平４−３４０６０４）は速度制御の判断を行うのが目的であり、ブロック間のコーナ角度を算出するものでなく、更には、回転軸が直交３軸上で任意の方向にある場合（例えば、本発明にて後述する（ｘ，ｙ，ｚ）＝（１，２，３）という斜めの方向ベクトルをもつ軸の回りに旋回する場合）などを含めた、一般的なベクトル変換を扱うものでもない。
【００１３】
さらに、上述のコーナ判別処理が正しくできたと仮定して、隣接するブロックの移動ベクトルのなす角度に基づいて加減速処理を行う場合、従来では軸構成と軸動作に応じた加減速処理を適切に切替える機能を持っていないという点も問題である。つまり、どの回転軸がどの直線軸の周りを回転するかという軸構成の把握と、現在どの軸を動かしているかという動作状態の把握とに基づく切替え作業が、回転軸の影響を加減速処理に効率よく反映させるために必要不可欠となる。
【００１４】
例えば、Ｘ，Ｙ，Ｚ，Ｂ，Ｃの５軸（図４参照）を有するＮＣ工作機械において、ＸとＢの２軸を同時に動かしている状態ではＢ軸が旋回することにより、Ｘ，Ｚ平面での移動が行われるので、Ｂ軸旋回によるＸの移動と、最初から存在するＸ軸の指令による移動とが干渉してしまい、３次元のベクトル演算による換算が必要である。他方、ＺとＣの２軸を動かしている状態では、このような干渉はおこらず、Ｃ軸旋回によるＸ，Ｙ平面上の移動と、Ｚ軸の指令による移動は独立した平面で行われることになり、１次元のスカラー演算による換算で十分である。ここで、干渉とは、例えばＣ軸が移動する場合、Ｃ軸はＺ軸を旋回中心として回転するので、Ｚ軸の座標値はＣ軸回転による影響を受けないが、Ｘ軸とＹ軸の座標値はＣ軸が回転することで変化してしまうことをいい、このようにある軸の回転が他の軸の座標値に影響を及ぼしてしまう場合、“干渉する”と判断される。
【００１５】
こうして、上述のように直線軸と回転軸が同時に動いていると言っても、回転軸移動の換算を３次元ベクトルで演算しなければいけない場合と、１次元の演算で済ませることが可能な場合の２種類が存在する。そして、スカラー演算を行うだけで回転軸の影響を正しく換算することができるという１次元の演算で済ませることが可能な場合には、ベクトル演算を用いたコーナ判別処理を行うことは計算ステップ数の無駄をもたらし、また実際上、３次元のベクトル演算でも、１次元のスカラー演算でも、求まるコーナ角度としては同一となっている。
【００１６】
更に、回転軸を搭載している機械でも、直線軸だけで加工を行っている状態の時は、回転軸移動量の換算自体が全く不必要となる。
【００１７】
こうして、計算の無駄を防ぐという目的からすれば、軸構成と軸動作に応じた加減速処理にあって、１次元のスカラー演算で回転軸移動量の換算を行う処理機構、及び、どの加減速処理を選択するのが適切かを判断する処理機構（ベクトル演算が必要かスカラー演算で十分か、或いは換算自体が必要ないかといったことを判断する処理機構）が必要である。
【００１８】
この発明は上記に鑑みてなされたもので、移動軸に回転軸を含む場合でも正しいコーナ判別を行い、また制御する軸が直線軸のみの場合、回転軸が含まれる場合、それぞれの場合に応じて、適切なコーナ加減速を行う数値制御装置を提供することを目的とする。
【００１９】
【課題を解決するための手段】
上記目的を達成するため、この発明にかかる数値制御装置は、移動制御軸に回転軸を含む数値制御装置において、回転軸の移動を含むコーナ加減速を行う際に、隣接するブロックにおける回転軸の移動ベクトルを直交３軸における移動ベクトルに換算する手段と、この換算されたベクトルを角度算出演算に当てはめてコーナ角度を求める手段とを含むコーナ加減速処理機能を有することを特徴とする。
【００２０】
この発明によれば、移動軸に回転軸を含む場合でもワークと刃物の相対軌跡、つまり加工点が実際に描くコーナ角度を計算することができ正しいコーナ判別を行うことができる。
【００２１】
つぎの発明にかかる数値制御装置は、移動制御軸に回転軸を含む数値制御装置において、回転軸の移動を含むコーナ加減速を行う際に、回転軸での移動量に倍率を乗じた値を、コーナ加減速の計算式に用いる手段を含むコーナ加減速処理機能を有することを特徴とする。
【００２２】
この発明によれば、移動量に倍率を乗じた値を用いることで少ない計算量で、回転軸の及ぼす影響を考慮した角度計算ができる。
【００２３】
つぎの発明にかかる数値制御装置は、上記の発明において、回転軸の移動量の倍率を自動計算する手段と、パラメータまたはプログラムによって切替える手段を有することを特徴とする。
【００２４】
この発明によれば、倍率をパラメータとプログラムで自在に変更することができる。
【００２５】
つぎの発明にかかる数値制御装置は、移動制御軸に回転軸を含む数値制御装置において、コーナ付近での加工速度算出を行う際に、制御対象軸の軸構成に応じて使用する加減速処理を変更する手段を有することを特徴とする。
【００２６】
この発明によれば、軸構成の異なる様々な機械に対して、各機械に適したコーナ加減速処理を同一の数値制御装置で実現することができ、コーナ付近で高速・高精度な加工を行うことができる。
【００２７】
【発明の実施の形態】
以下に添付図面を参照して、この発明にかかる好適な実施の形態を詳細に説明する。まず、正しいコーナの判別処理を行うにあたって、図１３に示すようなワークＡとＢにおける角度θの大きさが違う処理をＮＣ装置に行わせるに当たっては、発明者は次のように着眼した。ワークＡとＢの切削軌跡を見た人が測定する角度θは、切削軌跡を直行３軸空間上での移動として観測した角度である。この場合の測定作業では、直線軸と回転軸がどのように動いたかを考えるのではなく、このそれぞれの軸が動いた結果として、切削軌跡は直行３軸空間上でどう変化していったのかということを測定している。従来のコーナ判別処理は、回転軸と直線軸が動いたときに、「結果として直行３軸空間上でどう動いたか」という置き換えをする手段を持たないので、図１３の説明にて述べたようにワークＡとＢにおけるワークと刃物の相対軌跡が描く角度を正しく算出することができない。つまり、コーナ角度θを正しく求めるためには、回転軸の回転による移動量を直交３軸上での移動量に変換するという前処理をすればよい。従って、回転軸の回転による移動の影響を直交３軸上の移動に換算してしまえば、その換算された移動ベクトルを従来のコーナ判別処理（移動ベクトルを余弦定理に代入しコーナ角度を求める処理）に当てはめることができる。このために発明者は、ブロックの継目での加工点の位置ベクトルである刃先点位置ベクトルｒｔと角移動ベクトルΔθｉとの外積という概念を導入し回転軸の回転による移動の影響を直交３軸上の移動に換算した。
【００２８】
実施の形態１．
図１は、この発明の実施の形態１である数値制御装置におけるフローチャートである。このフローチャートの実行に当たり、具体例として、半径１００［ｍｍ］、長さ３００［ｍｍ］の円柱状ワークに対して、プログラム指令「Ｇ９１；　　Ｇ０１　Ｚ１００．　Ｃ９０．；　　Ｇ０１　Ｚ１００．　Ｃ−９０．；」を実行した場合を図２を用いて説明する。図２において、まずコーナ加減速の要否を判定するために求める角度θとは、プログラムの第２ブロックと第３ブロックの継目のなす角度のことで、接線ｔｎ−１とｔｎのなす角度のことである。
【００２９】
この場合、ブロックの継目での加工点の位置ベクトルである刃先点位置ベクトルｒｔは、図２における原点からブロック継目の点Ｐｔに向かうベクトルに対応する。ここでは、このブロックを動かす前に刃先が（Ｘ，　Ｙ，　Ｚ，　Ｃ）＝（０，　１００，　０，　０）にあったと仮定して、ブロック継目での刃先点の位置はｒｔ＝（０，　１００，　１００，　９０）となる。
【００３０】
他方、回転軸（今回のプログラム例ではＣ軸）に対応する旋回中心軸（プログラム例ではＣ軸の旋回中心軸、つまりＺ軸）の方向をベクトルの方向に持ち、回転速度の大きさ（プログラム例では９０［ｄｅｇ／ｍｉｎ］　＝　π／２［ｒａｄ／ｍｉｎ］）をスカラー量に持つベクトルを角移動ベクトルΔθｉとした。ここで、Δθｉ　についてインデックス番号ｉをＡ軸について１、Ｂ軸について２、Ｃ軸について３とすると、今回のプログラムの第２ブロック（Ｇ０１　Ｚ１００．　Ｃ９０．）ではΔθ３は（０，　０，　π／２）となり、Ａ軸とＢ軸は指令していないので、Δθ１とΔθ２は（０，　０，　０）となる。同様に、第３ブロック（Ｇ０１　Ｚ１００．　Ｃ−９０．）では、Δθ１とΔθ２は（０，　０，　０）となり、Δθ３は（０，　０，　−π／２）となる。
【００３１】
図１において、ステップＳ１０１にて刃先点位置ベクトルｒｔをまず取得する。ついで、ステップＳ１０２にて角移動ベクトルΔθｉを求める。そして、ステップＳ１０３にて外積ｒｄ＝Δθｉ×ｒｔｉを求める。ここで、ｒｔｉは図２での回転軸の旋回中心軸上（Ｚ軸上）の１点Ｐｉ０からｒｔで示す刃先点へと向かうベクトルである。ここでＰｉ０は旋回中心軸上であれば、どの点でも構わず、今回の例ではＰ３０を（０，　０，　０）にとる。この場合、ｒｔ３＝（０，　１００，　１００）となる。
【００３２】
Δθｉ、ｒｔｉの外積（Δθｉ×ｒｔｉ）によって、回転軸ｉの回転による移動量を（Ｘ，Ｙ，　Ｚ）の直交３軸空間での移動量に換算することができる。今回の例では第２ブロックでのΔθ３＝（０，　０，　π／２）、ｒｔ３＝（０，　１００，　１００）なので、外積による成分計算式から、Δθ３×ｒｔ３＝（−１００π／２，　０，　０）となる。
【００３３】
そして、Ａ軸、Ｂ軸、Ｃ軸については、換算した移動量をｉ＝１〜３に関して足し合わせれば、つまりｒｄ＝Σ（Δθｉ×ｒｔｉ）を計算すれば、回転軸全体の移動量を直交３軸空間上のベクトルに換算できることとなる。今回の図２の例ではΔθ１＝Δθ２＝（０，　０，　０）なので、ｒｄ＝Δθ３×ｒｔ３となる。
【００３４】
そして、ステップＳ１０４に示すように換算ベクトルｒｄとプログラムの軸アドレスから直接求められる（Ｘ，　Ｙ，　Ｚ）の移動ベクトルｒｌの和ｒｎ＝ｒｌ＋ｒｄを得ることで、移動に回転軸が含まれる場合でも、刃先点とワークの相対軌跡が、（Ｘ，　Ｙ，　Ｚ）の直交３軸空間において、どう変化するかを正確に求めることができる。図３はこのベクトル合成の様子を表しており、図２のＰｔ近傍で第２ブロックの描くベクトルｒｎは直線軸移動によるｒｌと回転軸移動による換算ベクトルｒｄの和で表されることになる。
【００３５】
このプログラムの第２ブロックではｒｌ＝（０，　０，　１００）であるので、第２ブロックと第３ブロックの継目において第２ブロックの移動が作る刃先点とワークの相対軌跡はｒｎ＝（−１００π／２，　０，　１００）となる。同様に第３ブロック側の相対軌跡はｒｎ＝（１００π／２，　０，　１００）となる。なお、識別を分かりやすくするため、以後は第２ブロックの相対軌跡をｒｎ−１、第３ブロックの相対軌跡をｒｎとする。
【００３６】
この結果、ステップＳ１０５では、コーナ角度の式ｃｏｓθ＝ｒｎ・ｒｎ−１／（｜ｒｎ｜＊｜ｒｎ−１）からコーナ角度を算出する。このプログラム例では、ｃｏｓθ＝−０．３３５５・・・となり、所望のコーナ角度が算出される。
【００３７】
図１のフローチャートによるコーナ角度算出の例として、上述の如くＺ軸とＣ軸のみが動くという最も簡単な場合を用いて説明したが、このフローチャートは回転軸２軸以上を含む５軸以上を同時に動かす場合にも適用することができる。例えば図４に示す座標軸構成のように５軸Ｘ，Ｙ，　Ｚ，Ｂ，Ｃの移動についてプログラム指令「Ｇ９０　Ｇ０１　Ｘ０．　Ｙ０．　Ｚ０．　Ｂ０．　Ｃ０．；　　Ｇ０１　Ｘ１００．　Ｙ１００．　Ｚ１００．　Ｂ−４５．　Ｃ９０．；　　Ｇ０１Ｘ−１００．　Ｙ２００．　Ｚ２００．　Ｂ３０．　Ｃ−９０．；」という場合も、図１のフローチャートを用いれば、（Ｘ，　Ｙ，　Ｚ）の直交３軸空間での移動ベクトルに換算できる。
【００３８】
以下にこのプログラム指令に基づき第２ブロックと第３ブロックの継目におけるコーナ角度の算出方法を説明する。この図４の座標系の特徴として、Ｂ軸とＣ軸がそれぞれＹ軸、Ｚ軸を旋回中心にしていることがあげられる。つまり、回転軸の旋回中心が、原点を通る軸であるということが特徴である。
【００３９】
まず、ステップＳ１０１の刃先点位置ベクトルｒｔは、（Ｘ，　Ｙ，　Ｚ）＝（１００，　１００，　１００）となる。また、ステップＳ１０２において、第２ブロック側の角移動ベクトルΔθｉはΔθ１＝（０，　０，　０）、Δθ２＝（０，　−π／４，　０）、Δθ３＝（０，　０，　π／２）となる。同様に第３ブロック側のΔθｉはΔθ１＝（０，　０，　０）、Δθ２＝（０，　π／６，　０）、Δθ３＝（０，　０，　−π／２）となる。更に、ステップＳ１０３において、旋回中心軸から刃先点に向かうベクトルｒｔｉはＰ２０を（０，　１００，　０）にとってｒｔ２＝（１００，　０，　１００）、Ｐ３０を（０，　０，　１００）にとってｒｔ３＝（１００，　１００，　０）となる。ｒｔ１については第２ブロックも第３ブロックもΔθ１＝０なので考え得る必要はない。このとき第２ブロック側の外積ｒｄは外積による成分計算式からｒｄ＝Σ（Δθｉ×ｒｔｉ）＝（Δθ２×ｒｔ２　＋　Δθ３×ｒｔ３）＝（−３００π／４，　１００π／２，　１００π／４）となる。同様に第３ブロック側の外積ｒｄはｒｄ＝（５００π／６，　−１００π／２，　１００π／６）となる。ステップＳ１０４にて、第２ブロックのベクトルｒｌ　は、ｒｌ＝（１００，　１００，　１００）、第３ブロックでは（−１００，　２００，　２００）である。これ以後の処理は加工プログラムによらず同じであり、和ｒｎ＝ｒｌ＋ｒｄを求め、ステップＳ１０５にてコーナ角度を求める。こうして、５軸同時制御の場合にも適用可能である。
【００４０】
更に、一般的な場合として、回転するワークの旋回中心軸（ｘ，ｙ，ｚ）＝（１０，２０，３０）を通り、（ｘ，ｙ，ｚ）＝（１，２，３）の方向にある任意の回転軸を考える。この回転軸をＷ軸と呼ぶとして、プログラム指令「Ｇ９０　Ｇ０１　Ｘ０．　Ｙ０．　Ｚ５０．　Ｗ０．；　　Ｇ０１　Ｘ１００．　Ｙ１００．Ｚ１５０．　Ｗ−１８０．；　　Ｇ０１　Ｘ−１００．　Ｙ２００．　Ｚ２５０．　Ｗ１８０．；」を実行した時の第２ブロックと第３ブロックのなす角度を計算する。ここで、使用している工具がＺ方向に５０の長さを持つとすると、刃先点位置ベクトルｒｔ＝（ｒｔｘ，　ｒｔｙ，　ｒｔｚ）＝（０，　１００，　１００）となる。
【００４１】
この場合、図１のステップＳ１０２における角移動ベクトルΔθｉは、Ｗ軸に対するインデックス番号ｉを１とすると、Ｗ軸方向にて第２ブロックではΔθ１＝（−π／ｓｑｒｔ（１４），　−２π／ｓｑｒｔ（１４），　−３π／ｓｑｒｔ（１４））、Δθ２＝Δθ３＝Δθ４＝Δθ…＝（０，　０，　０）となる。同様に第３ブロックではΔθ１＝（π／ｓｑｒｔ（１４），　２π／ｓｑｒｔ（１４），　３π／ｓｑｒｔ（１４））、Δθ２＝Δθ３＝Δθ４＝Δθ…＝（０，　０，　０）となる。
【００４２】
また、Ｐ１０を（１０，　２０，　３０）にとると、旋回中心軸から刃先点に向かうベクトルは、ｒｔ１＝（９０，　８０，　７０）となる。このとき第２ブロック側の外積ｒｄはｒｄ＝Σ（Δθｉ×ｒｔｉ）＝（Δθ１×ｒｔ１）＝（１００π／ｓｑｒｔ（１４），　−２００π／ｓｑｒｔ（１４），　３００π／ｓｑｒｔ（１４））となる。同様に第３ブロック側の外積ｒｄはｒｄ＝（−１００π／ｓｑｒｔ（１４），　２００π／ｓｑｒｔ（１４），　−３００π／ｓｑｒｔ（１４））となる。
【００４３】
ステップＳ１０４において、第２ブロックのｒｌ＝（１００，　１００，　１００）、第３ブロックはｒｌ＝　（−２００，　１００，　１００）であり、和ｒｎ＝ｒｌ＋ｒｄを求める。そして、ステップＳ１０５にてコーナ角度を求める。こうして、任意の軸構成に対応可能なコーナ角度算出手段を提供することができる。
【００４４】
実施の形態２．
次に、実施の形態２にて回転軸の移動量に倍率を乗ずるコーナ加減速処理を有する数値制御装置について説明する。実施の形態１（ベクトル換算を用いたコーナ加減速処理を行う数値制御装置）では、ワークと刃物の相対軌跡の変化に対して、回転軸が及ぼす影響を３次元のベクトルで計算し、この結果どんな軸構成のＮＣ装置に対しても、一般的に相対軌跡を算出することができる。しかし例えば、回転軸１軸（Ｃ軸）と直線軸２軸（Ｘ，Ｚ軸）からなるようなＮＣにおいて、ＺとＣのみで動かすときに、ワークの大きさ（半径）が既知の場合では、１次元の掛算を回転軸の移動量に対して行うだけで、回転軸の及ぼす影響を適切に計算することができる場合もある。この場合、回転軸（Ｃ軸）を移動させることによって生じるワークと刃物の相対軌跡の変化と、Ｚ軸を移動させることによって生じる相対軌跡の変化は、それぞれＸＹ平面での変化と、Ｚ軸上での変化に分離されている。従って、回転軸の移動量にワークの半径を乗じた移動量は、ＸＹ平面での実際の相対軌跡の変化量と一致する。つまり、回転軸の移動量に倍率をかけるというスカラー演算を行うだけで回転軸の影響を正しく換算することができるために、この半径を乗じた移動量とＺ軸の移動量を従来の余弦定理の計算式に代入することにより、実施の形態１（ベクトル換算を用いたコーナ加減速処理を行う数値制御装置）を用いた場合の結果と同一の角度を算出することができる。
【００４５】
図５はこの実施の形態２（回転軸の移動量に倍率を乗ずるコーナ加減速処理を有する数値制御装置）を実現するフローチャートである。プログラム指令「Ｇ９１；Ｇ０１　Ｚ１００．　Ｃ９０．；　　Ｇ０１　Ｚ１００．　Ｃ−９０．；」を例に説明する。図５において、Ｓ１００１に従い、回転軸（このプログラムではＣ軸）の移動量にある倍率をかける。この倍率は通常、ワークの半径に比例した値を用いるのが適切であり、ここでは予めワークを計測した結果、倍率が３に設定されているとする。このとき第２ブロックの移動ベクトルはｒｎ−１＝（Ｚ，　Ｃ）＝（１００，　２７０）、第３ブロックはｒｎ＝　（Ｚ，　Ｃ）＝（１００，　−２７０）となる。
【００４６】
次いでステップＳ１００２では、ｃｏｓθ＝ｒｎ・ｒｎ−１／（｜ｒｎ｜＊｜ｒｎ−１）からコーナ角度を算出する。この例では、ｃｏｓθ＝−０．７５８７となる。
【００４７】
実施の形態３．
つぎに、この発明の実施の形態３（回転軸移動量の倍率を切替える数値制御装置）について説明する。実施の形態２においては、回転軸の移動に乗ずる倍率の選び方として、ワークの半径に比例させたのであるが、モータ出力の遅れや、ワークの方向による硬度の違いが及ぼす影響などを経験的に把握している場合、ある特定の倍率を使用したほうが高精度の加工ができる。このため、パラメータまたはプログラムによって、倍率を任意に設定することも必要となる。図６は実施の形態３の倍率算出部分を搭載した場合のコーナ加減速処理、図７はその倍率算出部分のフローチャートである。以下に図７を説明する。
【００４８】
ステップＳ１２０１では、倍率の計算をＮＣ装置に自動で行わせるモード（倍率自動計算モードと呼ぶことにする）にあるか否かを判断し、その後の処理を分ける。このモードのＯＮ／ＯＦＦは、ＮＣの内部変数にフラグとして持たせればよく、例えば増分値／絶対値切替のような機能をつければ実現できる。ここではプログラムによってＯＮ／ＯＦＦを制御することとする。
【００４９】
ステップＳ１２０１で倍率自動計算モードＯＮの場合は、ステップＳ１２０２で示す倍率計算を行う。ここでは、刃先点と各回転軸の距離を計算し、（距離×π／１８０）を倍率とする。例えば、Ｘ、Ｙ、Ｚ、Ｂ、Ｃの５軸を有し、Ｂ軸回りに工具が回転するＮＣ工作機を例に挙げると、Ｂ軸に対応する距離は工具長、Ｃ軸に対応する距離はｓｑｒｔ（Ｘ２＋Ｙ２）となる（但し、Ｘ、Ｙ、Ｚはそれぞれ刃先のＸ、Ｙ、Ｚ座標である）。このＮＣ工作機において、プログラム指令「Ｇ９１；　　Ｇ０１　Ｚ１００．　Ｃ９０．；　　Ｇ０１　Ｚ１００．　Ｃ−９０．；」を実行した場合について述べれば、ここで、プログラム開始時に刃先が（Ｘ，　Ｙ，　Ｚ，　Ｂ，　Ｃ）＝（３０，　４０，　０，　９０，　０）にあるものとする。プログラムの第２ブロックと第３ブロックの継目において、移動する回転軸はＣ軸のみであり、Ｃ軸と刃先点との距離はｓｑｒｔ（３０２＋４０２）＝５０となる。従って、Ｃ軸に対応する倍率は（距離×π／１８０）＝（５０×π／１８０）となる。
【００５０】
ステップＳ１２０１にて、倍率自動計算モードＯＦＦの場合は、ステップＳ１２０３で示す条件判断を行う。例えば倍率の指定をするコードが「Ｍ２００１　Ｐ＿　Ｑ＿　Ｒ＿；」であるとし、Ｐ、Ｑ、ＲはそれぞれＡ、Ｂ、Ｃ軸に対応する倍率であるとするとき、ステップＳ１２０３においてＭ２００１のモード中はステップＳ１２０４に示す倍率設定を行う。そして、ステップＳ１２０４はＰ、Ｑ、Ｒのアドレスで指定した数値を各回転軸の倍率としてセットする。
【００５１】
ステップＳ１２０３でプログラム指定でない場合は、ステップＳ１２０５で示す倍率設定を行う。この処理は予めパラメータとしてＮＣに登録しておいた倍率を各回転軸の倍率にセットする。
【００５２】
以上に説明したステップＳ１２０１〜Ｓ１２０５の処理によって、回転軸の移動量に対する倍率を求めることができる。
【００５３】
実施の形態４．
次に実施の形態４である制御対象軸の軸構成に応じて使用する加減速処理を変更できる数値制御装置について説明する。図８は実施の形態４を実現するフローチャートの一つである。図８において、まずステップＳ１３０１で制御軸に関する情報を取得する。ここでの情報とはどの軸が回転軸で、回転軸に対応する旋回中心軸はどれか（例えばＣ軸に対応する軸はＺ軸）といった情報である。
【００５４】
ステップＳ１３０２ではステップＳ１３０１で得た制御軸の情報と、読み込んだ加工プログラムの移動軸に関する情報を照合し、加工プログラムのブロック継目の前後で回転軸が移動するか否かを判断し、以後の処理を振り分ける。このステップＳ１３０２にて、移動軸に回転軸が無い場合は、回転軸の影響を計算するという無駄な処理を省き、ステップＳ１３０６のコーナ加減速処理▲３▼を呼び出す。この加減速処理▲３▼は軸の種類を考慮しない従来型のコーナ加減速処理であり、例えば従来の技術で紹介した余弦定理を用いる方法が該当する。他方、回転軸が移動する場合はステップＳ１３０３の判断処理ルーチンを呼び出す。
【００５５】
ステップＳ１３０３では回転軸の移動指令と直線軸の移動指令が干渉するか否かを判断する。干渉する軸の組み合わせとしては、１：Ａ軸とＹ、Ｚ軸　２：Ｂ軸とＺ、Ｘ軸　３：Ｃ軸とＸ、Ｙ軸　といった組み合わせがある。従って、「Ｇ０１　Ｘ１００．Ｃ２００．」のように同一ブロック中に干渉する軸が指令されている場合は、移動指令が“干渉する”と判断される。
【００５６】
ステップＳ１３０３にて軸移動の干渉が起こる場合は、回転軸移動の影響を直行３軸上の移動ベクトルに換算してからでなければ、正しいコーナ加減速を行うことが出来ないので、ステップＳ１３０４に示すコーナ加減速処理▲１▼を呼び出す。このコーナ加減速処理▲１▼はベクトル換算を用いたコーナ加減速処理である。干渉が起こらない場合は、回転軸の移動は独立した直線軸と見なした扱いが可能で、ステップＳ１３０５に示すコーナ加減速処理▲２▼を呼び出す。このコーナ加減速処理▲２▼は回転軸の移動量に倍率を乗ずるコーナ加減速処理である。
【００５７】
こうして、ステップＳ１３０４〜Ｓ１３０６に示すコーナ加減速処理を経て、コーナ付近で減速が必要か否かが判断される。その判断結果を元にステップＳ１３０７でモータに指令する移動速度を決定する。
【００５８】
【発明の効果】
以上説明したように、この発明によれば、移動制御軸に回転軸を含む数値制御装置において、回転軸の移動を含むコーナ加減速を行う際に、隣接するブロックにおける回転軸の移動ベクトルを直交３軸における移動ベクトルに換算する手段と、この換算されたベクトルを角度算出演算に当てはめてコーナ角度を求める手段とを含むコーナ加減速処理機能を有することにより、移動軸に回転軸を含む場合でもワークと刃物の相対軌跡、つまり加工点が実際に描くコーナ角度を計算することができ正しいコーナ判別を行うことができる。
【００５９】
つぎの発明によれば、移動制御軸に回転軸を含む数値制御装置において、回転軸の移動を含むコーナ加減速を行う際に、回転軸での移動量に倍率を乗じた値を、コーナ加減速の計算式に用いる手段を含むコーナ加減速処理機能を有することにより、移動量に倍率を乗じた値を用いることで少ない計算量で、回転軸の及ぼす影響を考慮した角度計算ができる。
【００６０】
つぎの発明によれば、回転軸の移動量の倍率を自動計算する手段と、パラメータまたはプログラムによって切替える手段を有することにより、倍率をパラメータとプログラムで自在に変更することができる。
【００６１】
つぎの発明によれば、移動制御軸に回転軸を含む数値制御装置において、コーナ付近での加工速度算出を行う際に、制御対象軸の軸構成に応じて使用する加減速処理を変更する手段を有することにより、軸構成の異なる様々な機械に対して、各機械に適したコーナ加減速処理を同一の数値制御装置で実現することができ、コーナ付近で高速・高精度な加工を行うことができる。
【図面の簡単な説明】
【図１】この発明の実施の形態１の処理手順を表すフローチャートである。
【図２】回転軸の移動ベクトルを直交３軸における移動ベクトルに換算する際の変数の取扱いを説明する図である。
【図３】ベクトルの合成の様子を説明する図である。
【図４】具体例における座標軸のとり方を説明する図である。
【図５】この発明の実施の形態２の処理手順を表すフローチャートである。
【図６】図５のフローチャートに実施の形態３を搭載した場合の処理手順を表すフローチャートである。
【図７】実施の形態３の処理手順を表すフローチャートである。
【図８】実施の形態４を実現する処理手順を表すフローチャートである。
【図９】コーナ角度の説明をする図である。
【図１０】コーナ加減速機能を搭載する数値制御装置（ＣＮＣ）の概略構成を示すブロック図である。
【図１１】従来のコーナ加減速方式における余弦定理の使用の仕方を補足する図である。
【図１２】従来の余弦定理を使ったコーナ加減速方式のフローチャートである。
【図１３】従来のコーナ加減速方式が抱える問題を説明する図である。
【符号の説明】
２　プログラム解析部、２１　プログラム読み込み部、２２　パス生成部、２３　コーナ判別部、ｒｎ、ｒｎ−１　移動ベクトル、ｒｔ　刃先点位置ベクトル、Δθｉ　角移動ベクトル、ｒｄ　外積。
【図１】
2004094372.tif 000003
【図２】
2004094372.tif 000004
【図３】
2004094372.tif 000005
【図４】
2004094372.tif 000006
【図５】
2004094372.tif 000007
【図６】
2004094372.tif 000008
【図７】
2004094372.tif 000009
【図８】
2004094372.tif 000010
【図９】
2004094372.tif 000011
【図１０】
2004094372.tif 000012
【図１１】
2004094372.tif 000013
【図１２】
2004094372.tif 000014
【図１３】
2004094372.tif 000015