(57)【特許請求の範囲】
【請求項１】
直線軸と回転軸の両方を含む工作機械を制御する数値制御装置において、
２つの連続するブロック間のコーナ加減速処理を行う際に、この連続するブロックの回転軸の移動ベクトルを直交３軸座標系における移動ベクトルに換算する手段と、この換算されたベクトルを角度算出演算に当てはめてコーナ角度を求める手段と、を含むコーナ加減速処理機能を有することを特徴とする数値制御装置。
【請求項２】
連続するブロックの回転軸の移動ベクトルを直交３軸座標系における移動ベクトルに換算することなく前記連続するブロックの移動ベクトルを直接前記角度算出演算に当てはめてコーナ角度を求める第２の手段と、
移動ベクトルが回転軸の移動を伴うか否かを判断する判断手段と、
この判断手段にて移動ベクトルが回転軸の移動を伴うと判断されたとき、前記コーナ加減速処理を行う処理に切替え、前記判断手段にて移動ベクトルが回転軸の移動を伴わないと判断されたとき、前記第２の手段で求めたコーナ角度に基づくコーナ加減速処理を行う処理に切り換える切換手段と、
を備えてなる請求項１に記載の数値制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、回転軸を含む加工制御を行う数値制御装置に関し、進行方向の変化角度が大きな指令ブロックの継目における加工時に発生する切削工具の振動や指令値と実際の移動軌跡の差異を抑制した数値制御装置に関するものである。
【０００２】
【従来の技術】
数値制御装置（ＮＣ装置）によって、例えばワークの切削加工を行う場合、指令に基づいてワークと工具とが相対移動されワークを加工するのであるが、例えば工具の進行方向が変化する場合（換言すればコーナ形状の加工の場合）、工具の移動につき進行方向の変化の程度を判定し（換言すればコーナ判別を行い）、変化の程度によっては指令された速度よりも減速した移動処理（減速処理）を行い、指令どおりの加工を行う必要がある。すなわち、指令どおりのコーナ形状となるように高精度加工を保証するためには、コーナ部において減速処理を行う必要がある場合が存在し、この減速処理で使われる技術にコーナ判別がある。例えば、ＮＣ指令をG91（ワークと工具の相対移動指令）、G01（切削直線移動）とした場合、
G91 G01 X10.0 F10000.0  ・・・増分値でX方向に10mmを10m/分で直線補間
G01 X10.0 Y0.1          ・・・X方向に10mm、Y方向に0.1mmを直線補間
G01 X-10.0        ・・・X方向に−10mmを直線補間
という加工プログラムは、図９に示すような軌跡を描く。この図９において、第１ブロックと第２ブロックの変化する角度θ1は小さい（コーナが緩い）ので、減速することなくF10000.0にて指定された送り速度を維持して加工しても、加工面を滑らかに保つことができるが、第２ブロックと第３ブロックのなす角度θ2は大きい（コーナがきつい）ので、F10000.0より小さな速度に減速してコーナに近づき、加速しながらコーナを出て行くという処理を行わないと、加工されたコーナの形状がだれてしまう。このため第1ブロックと第２ブロックとの角度変化及び第２ブロックと第３ブロックとの角度変化についてコーナ判別という判断を行う処理が必要となる。
【０００３】
図１０は、このコーナ判別処理を搭載する数値制御装置の概略構成を示すブロック図である。図１０において、１は加工プログラムを格納している記憶装置、２は記憶装置１内に格納されている加工プログラムを読み込んで各ブロックの移動開始点と移動終了点の算出およびコーナ判別などを行うプログラム解析部、３はプログラム解析部２により解析された移動開始点と移動終了点に基づいて補間処理を実行し、各軸方向の移動量に分配する補間部、４は各軸方向の移動量とコーナ判別部が付加した加減速情報から移動サンプリング周期当たりの移動量を計算し、移動指令パルスを出力する移動指令パルス分配部、５は移動指令パルス分配部４からの指令を入力して、移動指令に移動があった場合に指令パルスに対して加減速処理を実行する加減速部、６は加減速部５からの信号を入力して、指令パルスを出力する指令パルス出力部、７は指令パルス出力部６からの指令パルスを入力して制御対象であるモータ８を制御する駆動部である。
【０００４】
ここにおいて、プログラム解析部２は以下の３つの部分から構成されている。すなわち、２１は加工プログラムを取り込み、数値制御装置が計算しやすい情報へと変換するプログラム読込部、２２は各ブロックの移動開始点と移動終了点を算出するパス生成部、２３はブロック間における移動ベクトルの変化量からコーナの角度変化を評価し、コーナが閾値より大きな角度変化を有する場合、コーナ付近での速度を十分小さな値にクランプするという情報を付加するコーナ判別部である。
【０００５】
ここで従来のコーナ判別部２３でのコーナ判別処理を、図１１及び図１２を参照して述べる。図１１は、第１ブロックから第２ブロックへの移動に際し、移動ベクトルrn-1から移動ベクトルrnへ変化した場合の様子を示しており、加工プログラムの指令としては、G91 G01 X20 Y10 Z10からG01 X10 Y20 Z30への変更を示している。そして、従来のコーナ判別処理は、cosθ＝rn・rn-1／(|rn|＊|rn-1|)という余弦定理（ここではベクトルの内積を表す公式）に当てはめて、コーナ角度θを算出する。なお、図１１において、cosθの式中、上式はいわゆる第２余弦定理、下式は内積の公式であるが、角度θを求める式であることは、代わりがない。また、式において|rn|は移動ベクトルrnの大きさ、"・"はベクトルの内積、rnの添え字"n"はn番目のブロックであることを意味する。
【０００６】
具体的には、「G91;  G01 X20 Y10 Z10;  G01 X10 Y20 Z30;」というプログラム指令にあって、移動ベクトルrn-1、rnを成分で表すと、rn-1＝(20,10,10)、rn＝(10,20,30)となり、コーナ角度は成分表示の公式からcosθ＝rn・rn-1／(|rn|＊|rn-1)＝(20＊10＋10＊20＋10＊30)／(sqrt(202+102+102)＊sqrt(102+202+302))＝0.7637・・・として求めることができる。ここで、sqrt(X)はXの平方根を表す。
【０００７】
この結果、コーナ判別処理としては、図１２に示すようにブロック継目直前の移動ベクトルrn-1の取得を行い（ステップＳ３０１）、ついでブロック継目直後の移動ベクトルrn の取得を行う（ステップＳ３０２）。この後、余弦定理によってコーナの角θを算出する（ステップＳ３０３）。
【０００８】
【発明が解決しようとする課題】
以上の説明は、直線移動のみの加工を前提にして説明したものである。すなわち、ある軸の直線移動プログラム指令が急激に変化するブロックでは、その軸のモータ出力が指令についていけないので、減速しなければいけないという判断を、コーナ角度の大小を使って判断している。しかし、加工にあたっては、移動軸として回転軸を有する場合がある。この場合、従来の数値制御装置では、直線軸のみでコーナ判別を行う場合と回転軸を含む直線軸の場合とで、コーナ判別の方法を分けることなく、同一のコーナ判別処理を行っている。
【０００９】
しかし、ワークと工具の刃先のなす相対軌跡という面から考えた場合、従来の判別処理にて算出されるコーナ角度は、移動軸に回転軸が含まれる場合には、以下の様な問題のある角度計算を行ってしまう。
【００１０】
すなわち、例えばC軸を回転軸としZ軸を直線軸である移動軸とした場合、「G91;  G01 Z100 C90;  G01 Z100 C-90;」というプログラム指令では、計算されるコーナ角度はcosθ＝rn・rn-1／(|rn|＊|rn-1)＝(100＊100+90＊-90)／(sqrt(1002+902)＊sqrt(1002+902))＝0.10497・・・と計算される。従って、従来のコーナ判別処理によって算出されるコーナ角度は、工具やワークの形状に拘らず、軸の移動量が同じ場合には、常に同じコーナ判別を行ってしまうことになる。
【００１１】
ところが、図１３のように、半径の大きさが極端に異なる２種類のワークＡ、Ｂを想定してみれば明らかであるが、ワークＡもワークＢも「G91;  G01 Z100 C90;  G01 Z100 C-90;」というブロックを実行しており、刃先とワークの相対軌跡、つまり切削が行われていく軌跡は、“G01 Z100 C90;”のブロックが矢印▲１▼、“G01 Z100 C-90;”のブロックが矢印▲２▼で表されているにも拘らず、矢印▲１▼と矢印▲２▼のなす角度θは、軸回転にかかわる周速度の違いから半径が小さいワークＢよりも半径の大きいワークＡの方が鋭くなっている。このように、従来のコーナ判別では、回転軸が含まれる場合に正しいコーナ判別を行うことができない。
【００１２】
なお、回転軸制御の従来例として特開平４−３４０６０４号公報記載の技術があるが、この技術（特開平４−３４０６０４）は速度制御の判断を行うのが目的であり、ブロック間のコーナ角度を算出するものでなく、更には、回転軸が直交３軸上で任意の方向にある場合（例えば、本発明にて後述する(x,y,z)＝(1,2,3)という斜めの方向ベクトルをもつ軸の回りに旋回する場合）などを含めた、一般的なベクトル変換を扱うものでもない。
【００１３】
さらに、上述のコーナ判別処理が正しくできたと仮定して、隣接するブロックの移動ベクトルのなす角度に基づいて加減速処理を行う場合、従来では軸構成と軸動作に応じた加減速処理を適切に切替える機能を持っていないという点も問題である。つまり、どの回転軸がどの直線軸の周りを回転するかという軸構成の把握と、現在どの軸を動かしているかという動作状態の把握とに基づく切替え作業が、回転軸の影響を加減速処理に効率よく反映させるために必要不可欠となる。
【００１４】
例えば、X,Y,Z,B,Cの５軸（図4参照）を有するＮＣ工作機械において、XとBの２軸を同時に動かしている状態ではB軸が旋回することにより、X,Z平面での移動が行われるので、B軸旋回によるXの移動と、最初から存在するX軸の指令による移動とが干渉してしまい、３次元のベクトル演算による換算が必要である。他方、ZとCの２軸を動かしている状態では、このような干渉はおこらず、C軸旋回によるX,Y平面上の移動と、Z軸の指令による移動は独立した平面で行われることになり、１次元のスカラー演算による換算で十分である。ここで、干渉とは、例えばC軸が移動する場合、C軸はZ軸を旋回中心として回転するので、Z軸の座標値はC軸回転による影響を受けないが、X軸とY軸の座標値はC軸が回転することで変化してしまうことをいい、このようにある軸の回転が他の軸の座標値に影響を及ぼしてしまう場合、“干渉する”と判断される。
【００１５】
こうして、上述のように直線軸と回転軸が同時に動いていると言っても、回転軸移動の換算を３次元ベクトルで演算しなければいけない場合と、１次元の演算で済ませることが可能な場合の２種類が存在する。そして、スカラー演算を行うだけで回転軸の影響を正しく換算することができるという１次元の演算で済ませることが可能な場合には、ベクトル演算を用いたコーナ判別処理を行うことは計算ステップ数の無駄をもたらし、また実際上、３次元のベクトル演算でも、１次元のスカラー演算でも、求まるコーナ角度としては同一となっている。
【００１６】
更に、回転軸を搭載している機械でも、直線軸だけで加工を行っている状態の時は、回転軸移動量の換算自体が全く不必要となる。
【００１７】
こうして、計算の無駄を防ぐという目的からすれば、軸構成と軸動作に応じた加減速処理にあって、１次元のスカラー演算で回転軸移動量の換算を行う処理機構、及び、どの加減速処理を選択するのが適切かを判断する処理機構（ベクトル演算が必要かスカラー演算で十分か、或いは換算自体が必要ないかといったことを判断する処理機構）が必要である。
【００１８】
この発明は上記に鑑みてなされたもので、移動軸に回転軸を含む場合でも正しいコーナ判別を行い、また制御する軸が直線軸のみの場合、回転軸が含まれる場合、それぞれの場合に応じて、適切なコーナ加減速を行う数値制御装置を提供することを目的とする。
【００１９】
【課題を解決するための手段】
上記目的を達成するため、この発明にかかる数値制御装置は、直線軸と回転軸の両方を含む工作機械を制御する数値制御装置において、２つの連続するブロック間のコーナ加減速処理を行う際に、この連続するブロックの回転軸の移動ベクトルを直交３軸座標系における移動ベクトルに換算する手段と、この換算されたベクトルを角度算出演算に当てはめてコーナ角度を求める手段と、を含むコーナ加減速処理機能を有することを特徴とする。
【００２０】
また、この発明は、上記の発明において、連続するブロックの回転軸の移動ベクトルを直交３軸座標系における移動ベクトルに換算することなく前記連続するブロックの移動ベクトルを直接前記角度算出演算に当てはめてコーナ角度を求める第２の手段と、移動ベクトルが回転軸の移動を伴うか否かを判断する判断手段と、この判断手段にて移動ベクトルが回転軸の移動を伴うと判断されたとき、前記コーナ加減速処理を行う処理に切替え、前記判断手段にて移動ベクトルが回転軸の移動を伴わないと判断されたとき、前記第２の手段で求めたコーナ角度に基づくコーナ加減速処理を行う処理に切替える切換手段とを備えてなることを特徴とする。
【００２７】
【発明の実施の形態】
以下に添付図面を参照して、この発明にかかる好適な実施の形態を詳細に説明する。まず、正しいコーナの判別処理を行うにあたって、図１３に示すようなワークＡとＢにおける角度θの大きさが違う処理をＮＣ装置に行わせるに当たっては、発明者は次のように着眼した。ワークＡとＢの切削軌跡を見た人が測定する角度θは、切削軌跡を直行３軸空間上での移動として観測した角度である。この場合の測定作業では、直線軸と回転軸がどのように動いたかを考えるのではなく、このそれぞれの軸が動いた結果として、切削軌跡は直行３軸空間上でどう変化していったのかということを測定している。従来のコーナ判別処理は、回転軸と直線軸が動いたときに、「結果として直行３軸空間上でどう動いたか」という置き換えをする手段を持たないので、図１３の説明にて述べたようにワークＡとＢにおけるワークと刃物の相対軌跡が描く角度を正しく算出することができない。つまり、コーナ角度θを正しく求めるためには、回転軸の回転による移動量を直交３軸上での移動量に変換するという前処理をすればよい。従って、回転軸の回転による移動の影響を直交３軸上の移動に換算してしまえば、その換算された移動ベクトルを従来のコーナ判別処理（移動ベクトルを余弦定理に代入しコーナ角度を求める処理）に当てはめることができる。このために発明者は、ブロックの継目での加工点の位置ベクトルである刃先点位置ベクトルrtと角移動ベクトルΔθiとの外積という概念を導入し回転軸の回転による移動の影響を直交３軸上の移動に換算した。
【００２８】
実施の形態１．
図１は、この発明の実施の形態１である数値制御装置におけるフローチャートである。このフローチャートの実行に当たり、具体例として、半径100[mm]、長さ300[mm]の円柱状ワークに対して、プログラム指令「G91;  G01 Z100. C90.;  G01 Z100. C-90.;」を実行した場合を図２を用いて説明する。図２において、まずコーナ加減速の要否を判定するために求める角度θとは、プログラムの第２ブロックと第３ブロックの継目のなす角度のことで、接線tn-1とtnのなす角度のことである。
【００２９】
この場合、ブロックの継目での加工点の位置ベクトルである刃先点位置ベクトルrtは、図２における原点からブロック継目の点Ptに向かうベクトルに対応する。ここでは、このブロックを動かす前に刃先が(X, Y, Z, C)=(0, 100, 0, 0)にあったと仮定して、ブロック継目での刃先点の位置はrt=(0, 100, 100, 90)となる。
【００３０】
他方、回転軸（今回のプログラム例ではC軸）に対応する旋回中心軸（プログラム例ではC軸の旋回中心軸、つまりZ軸）の方向をベクトルの方向に持ち、回転速度の大きさ（プログラム例では90[deg/min] = π/2[rad/min]）をスカラー量に持つベクトルを角移動ベクトルΔθiとした。ここで、Δθi についてインデックス番号iをＡ軸について1、B軸について２、C軸について３とすると、今回のプログラムの第２ブロック（G01 Z100. C90.）ではΔθ3は(0, 0, π/2)となり、Ａ軸とB軸は指令していないので、Δθ1とΔθ2は(0, 0, 0)となる。同様に、第３ブロック（G01 Z100. C-90.）では、Δθ1とΔθ2は(0, 0, 0)となり、Δθ3は(0, 0, -π/2)となる。
【００３１】
図１において、ステップS１０１にて刃先点位置ベクトルrtをまず取得する。ついで、ステップＳ１０２にて角移動ベクトルΔθiを求める。そして、ステップＳ１０３にて外積rd＝Δθi×rtiを求める。ここで、rtiは図２での回転軸の旋回中心軸上（Z軸上）の1点Pi0からrtで示す刃先点へと向かうベクトルである。ここでPi0は旋回中心軸上であれば、どの点でも構わず、今回の例ではP30を(0, 0, 0)にとる。この場合、rt3＝(0, 100, 100)となる。
【００３２】
Δθi、rtiの外積（Δθi×rti）によって、回転軸iの回転による移動量を(X, Y, Z)の直交３軸空間での移動量に換算することができる。今回の例では第２ブロックでのΔθ3=(0, 0, π/2)、rt3＝(0, 100, 100)なので、外積による成分計算式から、Δθ3×rt3＝(−100π／2, 0, 0)となる。
【００３３】
そして、Ａ軸、B軸、C軸については、換算した移動量をi=1〜３に関して足し合わせれば、つまりrd＝Σ(Δθi×rti)を計算すれば、回転軸全体の移動量を直交３軸空間上のベクトルに換算できることとなる。今回の図２の例ではΔθ1＝Δθ2＝(0, 0, 0)なので、rd＝Δθ3×rt3となる。
【００３４】
そして、ステップＳ１０４に示すように換算ベクトルrdとプログラムの軸アドレスから直接求められる(X, Y, Z)の移動ベクトルrlの和rn＝rl＋rdを得ることで、移動に回転軸が含まれる場合でも、刃先点とワークの相対軌跡が、(X, Y, Z)の直交３軸空間において、どう変化するかを正確に求めることができる。図３はこのベクトル合成の様子を表しており、図２のPt近傍で第２ブロックの描くベクトルrnは直線軸移動によるrlと回転軸移動による換算ベクトルrdの和で表されることになる。
【００３５】
このプログラムの第２ブロックではrl＝(0, 0, 100)であるので、第２ブロックと第３ブロックの継目において第２ブロックの移動が作る刃先点とワークの相対軌跡はrn=(−100π／2, 0, 100)となる。同様に第３ブロック側の相対軌跡はrn=(100π／2, 0, 100)となる。なお、識別を分かりやすくするため、以後は第２ブロックの相対軌跡をrn-1、第３ブロックの相対軌跡をrnとする。
【００３６】
この結果、ステップＳ１０５では、コーナ角度の式cosθ＝rn・rn-1／(|rn|＊|rn-1)からコーナ角度を算出する。このプログラム例では、cosθ＝−0.3355・・・となり、所望のコーナ角度が算出される。
【００３７】
図１のフローチャートによるコーナ角度算出の例として、上述の如くZ軸とC軸のみが動くという最も簡単な場合を用いて説明したが、このフローチャートは回転軸２軸以上を含む５軸以上を同時に動かす場合にも適用することができる。例えば図４に示す座標軸構成のように５軸X,Y, Z,B,Cの移動についてプログラム指令「G90 G01 X0. Y0. Z0. B0. C0.;  G01 X100. Y100. Z100. B-45. C90.;  G01 X-100. Y200. Z200. B30. C-90.;」という場合も、図１のフローチャートを用いれば、(X, Y, Z)の直交３軸空間での移動ベクトルに換算できる。
【００３８】
以下にこのプログラム指令に基づき第２ブロックと第３ブロックの継目におけるコーナ角度の算出方法を説明する。この図４の座標系の特徴として、B軸とC軸がそれぞれY軸、Z軸を旋回中心にしていることがあげられる。つまり、回転軸の旋回中心が、原点を通る軸であるということが特徴である。
【００３９】
まず、ステップＳ１０１の刃先点位置ベクトルrtは、(X, Y, Z)＝(100, 100, 100)となる。また、ステップＳ１０２において、第２ブロック側の角移動ベクトルΔθiはΔθ1=(0, 0, 0)、Δθ2=(0, −π／4, 0)、Δθ3=(0, 0, π／2)となる。同様に第３ブロック側のΔθiはΔθ1=(0, 0, 0)、Δθ2=(0, π／6, 0)、Δθ3=(0, 0, −π／2)となる。更に、ステップＳ１０３において、旋回中心軸から刃先点に向かうベクトルrtiはP20を(0, 100, 0)にとってrt2=(100, 0, 100)、P30を(0, 0, 100)にとってrt3=(100, 100, 0)となる。rt1については第２ブロックも第３ブロックもΔθ1=0なので考え得る必要はない。このとき第２ブロック側の外積rdは外積による成分計算式からrd=Σ(Δθi×rti)=(Δθ2×rt2 ＋ Δθ3×rt3)=(−300π／4, 100π／2, 100π／4)となる。同様に第３ブロック側の外積rdはrd=(500π／6, −100π／2, 100π／6)となる。ステップＳ１０４にて、第2ブロックのベクトルrl は、rl=(100, 100, 100)、第３ブロックでは(−100, 200, 200)である。これ以後の処理は加工プログラムによらず同じであり、和rn＝rl＋rdを求め、ステップＳ１０５にてコーナ角度を求める。こうして、５軸同時制御の場合にも適用可能である。
【００４０】
更に、一般的な場合として、回転するワークの旋回中心軸(x,y,z)=(10,20,30)を通り、(x,y,z)=(1,2,3)の方向にある任意の回転軸を考える。この回転軸をW軸と呼ぶとして、プログラム指令「G90 G01 X0. Y0. Z50. W0.;  G01 X100. Y100. Z150. W-180.;  G01 X-100. Y200. Z250. W180.;」を実行した時の第２ブロックと第３ブロックのなす角度を計算する。ここで、使用している工具がZ方向に50の長さを持つとすると、刃先点位置ベクトルrt=(rtx, rty, rtz)=(0, 100, 100)となる。
【００４１】
この場合、図１のステップＳ１０２における角移動ベクトルΔθiは、W軸に対するインデックス番号iを1とすると、W軸方向にて第２ブロックではΔθ1=(−π/sqrt(14), −2π/sqrt(14), −3π/sqrt(14))、Δθ2＝Δθ3＝Δθ4＝Δθ…＝(0, 0, 0)となる。同様に第３ブロックではΔθ1=(π/sqrt(14), 2π/sqrt(14), 3π/sqrt(14))、Δθ2＝Δθ3＝Δθ4＝Δθ…＝(0, 0, 0)となる。
【００４２】
また、P10を(10, 20, 30)にとると、旋回中心軸から刃先点に向かうベクトルは、rt1＝(90, 80, 70)となる。このとき第２ブロック側の外積rdはrd=Σ(Δθi×rti)=(Δθ1×rt1)=(100π／sqrt(14), −200π／sqrt(14), 300π／sqrt(14))となる。同様に第３ブロック側の外積rdはrd=(−100π／sqrt(14), 200π／sqrt(14), −300π／sqrt(14))となる。
【００４３】
ステップＳ１０４において、第２ブロックのrl=(100, 100, 100)、第３ブロックはrl= (−200, 100, 100)であり、和rn＝rl＋rdを求める。そして、ステップＳ１０５にてコーナ角度を求める。こうして、任意の軸構成に対応可能なコーナ角度算出手段を提供することができる。
【００４４】
実施の形態２．
次に、実施の形態２にて回転軸の移動量に倍率を乗ずるコーナ加減速処理を有する数値制御装置について説明する。実施の形態１（ベクトル換算を用いたコーナ加減速処理を行う数値制御装置）では、ワークと刃物の相対軌跡の変化に対して、回転軸が及ぼす影響を３次元のベクトルで計算し、この結果どんな軸構成のＮＣ装置に対しても、一般的に相対軌跡を算出することができる。しかし例えば、回転軸1軸（C軸）と直線軸２軸（X,Z軸）からなるようなＮＣにおいて、ZとCのみで動かすときに、ワークの大きさ（半径）が既知の場合では、1次元の掛算を回転軸の移動量に対して行うだけで、回転軸の及ぼす影響を適切に計算することができる場合もある。この場合、回転軸（C軸）を移動させることによって生じるワークと刃物の相対軌跡の変化と、Z軸を移動させることによって生じる相対軌跡の変化は、それぞれXY平面での変化と、Z軸上での変化に分離されている。従って、回転軸の移動量にワークの半径を乗じた移動量は、XY平面での実際の相対軌跡の変化量と一致する。つまり、回転軸の移動量に倍率をかけるというスカラー演算を行うだけで回転軸の影響を正しく換算することができるために、この半径を乗じた移動量とＺ軸の移動量を従来の余弦定理の計算式に代入することにより、実施の形態１（ベクトル換算を用いたコーナ加減速処理を行う数値制御装置）を用いた場合の結果と同一の角度を算出することができる。
【００４５】
図５はこの実施の形態２（回転軸の移動量に倍率を乗ずるコーナ加減速処理を有する数値制御装置）を実現するフローチャートである。プログラム指令「G91;  G01 Z100. C90.;  G01 Z100. C-90.;」を例に説明する。図５において、Ｓ１００１に従い、回転軸（このプログラムではＣ軸）の移動量にある倍率をかける。この倍率は通常、ワークの半径に比例した値を用いるのが適切であり、ここでは予めワークを計測した結果、倍率が３に設定されているとする。このとき第２ブロックの移動ベクトルはrn-1=(Z, C)=(100, 270)、第３ブロックはrn= (Z, C)=(100, -270)となる。
【００４６】
次いでステップＳ１００２では、cosθ＝rn・rn-1／(|rn|＊|rn-1)からコーナ角度を算出する。この例では、cosθ＝−0.7587となる。
【００４７】
実施の形態３．
つぎに、この発明の実施の形態３（回転軸移動量の倍率を切替える数値制御装置）について説明する。実施の形態２においては、回転軸の移動に乗ずる倍率の選び方として、ワークの半径に比例させたのであるが、モータ出力の遅れや、ワークの方向による硬度の違いが及ぼす影響などを経験的に把握している場合、ある特定の倍率を使用したほうが高精度の加工ができる。このため、パラメータまたはプログラムによって、倍率を任意に設定することも必要となる。図６は実施の形態３の倍率算出部分を搭載した場合のコーナ加減速処理、図７はその倍率算出部分のフローチャートである。以下に図７を説明する。
【００４８】
ステップＳ１２０１では、倍率の計算をＮＣ装置に自動で行わせるモード（倍率自動計算モードと呼ぶことにする）にあるか否かを判断し、その後の処理を分ける。このモードのＯＮ／ＯＦＦは、ＮＣの内部変数にフラグとして持たせればよく、例えば増分値／絶対値切替のような機能をつければ実現できる。ここではプログラムによってＯＮ／ＯＦＦを制御することとする。
【００４９】
ステップＳ１２０１で倍率自動計算モードＯＮの場合は、ステップＳ１２０２で示す倍率計算を行う。ここでは、刃先点と各回転軸の距離を計算し、（距離×π／180）を倍率とする。例えば、X、Y、Z、B、Cの５軸を有し、B軸回りに工具が回転するＮＣ工作機を例に挙げると、Ｂ軸に対応する距離は工具長、C軸に対応する距離はsqrt（X2＋Y2）となる（但し、X、Y、Zはそれぞれ刃先のX、Y、Z座標である）。このＮＣ工作機において、プログラム指令「G91;  G01 Z100. C90.;  G01 Z100. C-90.;」を実行した場合について述べれば、ここで、プログラム開始時に刃先が(X, Y, Z, B, C)＝(30, 40, 0, 90, 0)にあるものとする。プログラムの第２ブロックと第３ブロックの継目において、移動する回転軸はC軸のみであり、C軸と刃先点との距離はsqrt(302+402)＝50となる。従って、C軸に対応する倍率は（距離×π／180）＝（50×π／180）となる。
【００５０】
ステップＳ１２０１にて、倍率自動計算モードＯＦＦの場合は、ステップＳ１２０３で示す条件判断を行う。例えば倍率の指定をするコードが「M2001 P_ Q_ R_;」であるとし、P、Q、RはそれぞれＡ、B、C軸に対応する倍率であるとするとき、ステップＳ１２０３においてM2001のモード中はステップＳ１２０４に示す倍率設定を行う。そして、ステップＳ１２０４はP、Q、Rのアドレスで指定した数値を各回転軸の倍率としてセットする。
【００５１】
ステップＳ１２０３でプログラム指定でない場合は、ステップＳ１２０５で示す倍率設定を行う。この処理は予めパラメータとしてＮＣに登録しておいた倍率を各回転軸の倍率にセットする。
【００５２】
以上に説明したステップＳ１２０１〜Ｓ１２０５の処理によって、回転軸の移動量に対する倍率を求めることができる。
【００５３】
実施の形態４．
次に実施の形態４である制御対象軸の軸構成に応じて使用する加減速処理を変更できる数値制御装置について説明する。図８は実施の形態４を実現するフローチャートの一つである。図8において、まずステップＳ１３０１で制御軸に関する情報を取得する。ここでの情報とはどの軸が回転軸で、回転軸に対応する旋回中心軸はどれか（例えばＣ軸に対応する軸はＺ軸）といった情報である。
【００５４】
ステップＳ１３０２ではステップＳ１３０１で得た制御軸の情報と、読み込んだ加工プログラムの移動軸に関する情報を照合し、加工プログラムのブロック継目の前後で回転軸が移動するか否かを判断し、以後の処理を振り分ける。このステップＳ１３０２にて、移動軸に回転軸が無い場合は、回転軸の影響を計算するという無駄な処理を省き、ステップＳ１３０６のコーナ加減速処理▲３▼を呼び出す。この加減速処理▲３▼は軸の種類を考慮しない従来型のコーナ加減速処理であり、例えば従来の技術で紹介した余弦定理を用いる方法が該当する。他方、回転軸が移動する場合はステップＳ１３０３の判断処理ルーチンを呼び出す。
【００５５】
ステップＳ１３０３では回転軸の移動指令と直線軸の移動指令が干渉するか否かを判断する。干渉する軸の組み合わせとしては、１：Ａ軸とY、Z軸  ２：B軸とZ、X軸  ３：C軸とX、Y軸  といった組み合わせがある。従って、「G01 X100. C200.」のように同一ブロック中に干渉する軸が指令されている場合は、移動指令が“干渉する”と判断される。
【００５６】
ステップＳ１３０３にて軸移動の干渉が起こる場合は、回転軸移動の影響を直行３軸上の移動ベクトルに換算してからでなければ、正しいコーナ加減速を行うことが出来ないので、ステップＳ１３０４に示すコーナ加減速処理▲１▼を呼び出す。このコーナ加減速処理▲１▼はベクトル換算を用いたコーナ加減速処理である。干渉が起こらない場合は、回転軸の移動は独立した直線軸と見なした扱いが可能で、ステップＳ１３０５に示すコーナ加減速処理▲２▼を呼び出す。このコーナ加減速処理▲２▼は回転軸の移動量に倍率を乗ずるコーナ加減速処理である。
【００５７】
こうして、ステップＳ１３０４〜Ｓ１３０６に示すコーナ加減速処理を経て、コーナ付近で減速が必要か否かが判断される。その判断結果を元にステップＳ１３０７でモータに指令する移動速度を決定する。
【００５８】
【発明の効果】
以上説明したように、この発明によれば、移動制御軸に回転軸を含む数値制御装置において、回転軸の移動を含むコーナ加減速を行う際に、隣接するブロックにおける回転軸の移動ベクトルを直交３軸における移動ベクトルに換算する手段と、この換算されたベクトルを角度算出演算に当てはめてコーナ角度を求める手段とを含むコーナ加減速処理機能を有することにより、移動軸に回転軸を含む場合でもワークと刃物の相対軌跡、つまり加工点が実際に描くコーナ角度を計算することができ正しいコーナ判別を行うことができる。
【図面の簡単な説明】
【図１】  この発明の実施の形態１の処理手順を表すフローチャートである。
【図２】  回転軸の移動ベクトルを直交３軸における移動ベクトルに換算する際の変数の取扱いを説明する図である。
【図３】  ベクトルの合成の様子を説明する図である。
【図４】  具体例における座標軸のとり方を説明する図である。
【図５】  この発明の実施の形態２の処理手順を表すフローチャートである。
【図６】  図５のフローチャートに実施の形態３を搭載した場合の処理手順を表すフローチャートである。
【図７】  実施の形態３の処理手順を表すフローチャートである。
【図８】  実施の形態４を実現する処理手順を表すフローチャートである。
【図９】  コーナ角度の説明をする図である。
【図１０】  コーナ加減速機能を搭載する数値制御装置（ＣＮＣ）の概略構成を示すブロック図である。
【図１１】  従来のコーナ加減速方式における余弦定理の使用の仕方を補足する図である。
【図１２】  従来の余弦定理を使ったコーナ加減速方式のフローチャートである。
【図１３】  従来のコーナ加減速方式が抱える問題を説明する図である。
【符号の説明】
２  プログラム解析部、２１  プログラム読み込み部、２２  パス生成部、２３  コーナ判別部、rn、rn-1  移動ベクトル、rt  刃先点位置ベクトル、Δθi  角移動ベクトル、rd  外積。
【図１】
0004059734.tif 000002
【図２】
0004059734.tif 000003
【図３】
0004059734.tif 000004
【図４】
0004059734.tif 000005
【図５】
0004059734.tif 000006
【図６】
0004059734.tif 000007
【図７】
0004059734.tif 000008
【図８】
0004059734.tif 000009
【図９】
0004059734.tif 000010
【図１０】
0004059734.tif 000011
【図１１】
0004059734.tif 000012
【図１２】
0004059734.tif 000013
【図１３】
0004059734.tif 000014