(57)【特許請求の範囲】
【請求項１】
複数個の直線移動軸及びテーブルの回転移動軸を少なくとも1軸有する工作機械を制御して、テーブル上に固定されたワークを工具により連続的に加工するための数値制御装置において、
前記直線移動軸の移動経路指令、前記ワークと前記工具との相対移動速度指令および前記テーブルに対する前記工具の方向として工具方向を与えるための前記回転移動軸の移動指令を与える移動指令手段と、
前記テーブル上に座標系を定義する手段と、
前記直線移動軸の前記移動経路指令を前記テーブル上に定義された座標系において前記相対移動速度指令に基づいて補間して前記移動径路の補間位置情報を得る第１補間手段と、
前記回転移動軸の移動指令を前記移動径路指令及び相対移動速度指令に基づいて補間して回転移動軸の補間位置情報を得る第２補間手段と、
該回転移動軸の補間位置情報に基づいて前記第１補間手段からの補間位置情報を補正する手段と、
を備え、前記移動径路の補正された補間位置情報と、前記回転移動軸の補間位置情報に基づいて対応する各軸のサーボモータを駆動することにより、前記工具上に指定される工具先端点が指令された移動経路上を指令された速度で移動するようにしたことを特徴とする数値制御装置。
【請求項２】
前記工作機械は、前記テーブルの回転移動軸に加えて、前記工具を前記テーブルに対して相対的に傾ける回転移動軸をも備える請求項１記載の数値制御装置。
【請求項３】
前記工作機械は、前記テーブルの回転移動軸に加えて、前記テーブルを前記工具に対して相対的に傾ける回転移動軸をも備える請求項１記載の数値制御装置。
【請求項４】
前記第１補間手段からの補間位置情報を補正する手段は、設定された工具長補正量、工具径補正量、またはその両方を加味して補正する請求項１乃至３の内いずれか１項記載の数値制御装置。
【請求項５】
前記工具方向は、回転移動軸の回転移動位置の移動指令として与えられる請求項１乃至４の内いずれか１項記載の数値制御装置。
【請求項６】
前記工具方向は，方向ベクトルとして与えられる請求項１乃至４の内いずれか１項記載の数値制御装置。
【請求項７】
前記移動指令手段は、前記直線移動軸の移動経路指令を前記テーブル上に定義された座標系がテーブルと共に回転するものとして該座標系上に基づいて指令している請求項１乃至６の内いずれか１項記載の数値制御装置。
【請求項８】
前記移動指令手段は、前記直線移動軸の移動経路指令をテーブルと共には回転しない座標系に基づいて指令された前記直線移動軸の移動経路指令をテーブルと共に回転する座標系に変換して前記直線移動軸の移動経路指令とする請求項１乃至６の内いずれか１項記載の数値制御装置。
【請求項９】
工具先端点は工具の頂点である請求項１乃至８の内いずれか１項記載の数値制御装置。
【請求項１０】
工具先端点はボールエンドミル工具の先端における半球の中心、または、ボールエンドミル工具の先端における半球上の切削点である請求項１乃至８の内いずれか１項記載の数値制御装置。
【請求項１１】
工具先端点はフラットエンドミル工具の先端面の中心、または、フラットエンドミル工具の先端面の切削点である請求項１乃至８の内いずれか１項記載の数値制御装置。
【請求項１２】
複数個の直線移動軸及び回転軸を少なくとも1軸有する工作機械を制御して、回転軸によって回転するワーク把持台上に固定されたワークを工具により連続的に加工するための数値制御装置において、
前記直線移動軸の移動経路指令、前記ワークと前記工具との相対移動速度指令および前記回転軸によって回転するワーク把持台に対する前記工具の方向として工具方向を与えるための前記回転軸の移動指令を与える移動指令手段と、
前記回転軸によって回転するワーク把持台上に座標系を定義する手段と、
前記直線移動軸の前記移動経路指令を前記回転軸によって回転するワーク把持台上に定義された座標系において前記相対移動速度指令に基づいて補間して前記移動径路の補間位置情報を得る第１補間手段と、
前記回転軸の移動指令を前記移動径路指令及び相対移動速度指令に基づいて補間して回転軸の補間位置情報を得る第２補間手段と、
該回転軸の補間位置情報に基づいて前記第１補間手段からの補間位置情報を補正する手段と、
を備え、前記移動径路の補正された補間位置情報と、前記回転軸の補間位置情報に基づいて対応する各軸のモータを駆動することにより、前記工具上に指定される工具先端点が指令された移動経路上を指令された速度で移動するようにしたことを特徴とする数値制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ワークを回転させて加工する加工機を制御する数値制御装置に関する。
【０００２】
【従来の技術】
従来、複数個の直線移動軸及びテーブル回転移動軸を少なくとも１軸有し、さらに、工具ヘッド回転用に１軸、または、テーブル回転用に１軸持った工作機械が知られている。例えば、図１のようなテーブル１が直交するＸ，Ｙ軸方向に駆動され、該Ｘ，Ｙ軸と直交するＺ軸方向に工具２が駆動され、さらに、Ｘ軸周りの回転軸Ａにより工具２が回動制御されると同時に、Ｚ軸周りの回転軸Ｃによりテーブル１が制御され、テーブル１に載置固定されたワーク３を加工する５軸加工機が知られている。
【０００３】
また、図２のように、工具２は直交するＸ，Ｙ，Ｚ軸方向に駆動され、テーブル１は、Ｘ軸回りの回転軸Ａ、Ｚ軸回りの回転軸Ｃにより回転制御され、このテーブル１に載置固定されたワーク３を工具２で加工するようにした５軸加工機も公知である。
【０００４】
それらの回転軸Ａ，Ｃが回転しながら工具２の先端点が所期の経路を所期の速度で移動する動作を行うためには、従来はＣＡＭによって微小線分のプログラムを作成し、指令する必要があった。
【０００５】
例えば、図３のようなテーブル１の回転用に１軸（Ｃ軸）、工具２のヘッド回転用に１軸（Ａ軸）を持った工作機械において、図４のようにテーブル１を回転させ、かつ工具２の傾き角度を変化させながらテーブル１上のワーク３に直線Ｌを切削加工する場合、１個の直線指令のブロックとして指令することはできず、次の＜従来のプログラム指令＞の例に示すように、ブロックＮ３０１、Ｎ３０２等，多数のブロックに分割して指令する必要があった。なお、図３において、ＣＯは、Ｃ軸の回転中心であり、ＣＳはＣ軸の基準位置であり、プログラムで指令されるＣ軸回転位置がこの基準位置ＣＳに位置決めされるように制御されるものである。また、Ｐは工具２の制御点であり、かつ、この制御点Ｐが工具２の回転中心である。
＜従来のプログラム指令＞
Ｎ200 Ｇ01 Ｇ90 ＸXc0 ＹYc0 ＺZc0 Ａ60.0 Ｃ30.0 ；
Ｎ301 ＸXc1 ＹYc1 ＺZc1 Ａ45.0 Ｃ90.0 ；
Ｎ302 ＸXc2 ＹYc2 ＺZc2 Ａ30.0 Ｃ150.0 ；
Ｇ０１は、切削送り指令であり、Ｇ９０は、アブソリュート指令を意味する。このプログラムにより、工作機械の各軸は図５のように動作する。図５（ａ）は、第１のブロック「Ｎ２００」によるＸ軸＝Xc0，Ｙ軸＝Yc0，Ｚ軸＝Zc0，Ａ軸＝６０度，Ｃ軸＝３０度の位置への位置決め位置であり、第２のブロック「Ｎ３０１」による加工の開始点である。図５（ｂ）は、第２のブロック「Ｎ３０１」の終点であり、第３のブロック「Ｎ３０１」の始点を表している。第２のブロック「Ｎ３０１」の加工指令によって、実線で示すように直線状に切削加工がなされる。また、図５（ｃ）は第３のブロック「Ｎ３０１」の終点であり、この第２、第３のブロックの指令によって、直線Ｌの切削加工がなされる。
【０００６】
しかし、このように、この直線Ｌの加工を２ブロック程度に分割したのでは精度良く直線Ｌを切削できず、実際は精度良く加工するために、非常に多くのブロックに分割して指令する必要がある。
【０００７】
なお、図４は便宜上Ｃ軸を固定して描いた図にしてある。 実際はＣ軸が回転しながら動作する。また、図４と図５はＺ軸＋方向から見た図である。
上記説明では、テーブル回転用に１軸(Ｃ)と工具ヘッド回転用に１軸(Ａ)持った工作機械で説明しているが、Ａ,Ｃ以外の軸構成やテーブル回転用に２軸持った工作機械においても同様である。
【０００８】
【発明が解決しようとする課題】
上記のように、テーブル回転用に１軸と工具ヘッド回転用に１軸、または、テーブル回転用に２軸持った工作機械等の少なくともテーブル回転軸を備えた工作機械において、それらの回転軸が回転しながら工具先端点が指令された経路を指令された速度で移動する動作を行うためには、ＣＡＭによって微小線分のプログラムを作成し、指令する必要がある。その結果、
▲１▼．ＣＡＭ装置が必要である。
▲２▼．多くの微小線分の指令になるので、プログラム長が長くなる。そのため、大容量の記憶装置が必要になる。
▲３▼．プログラム長が長くなるため、ＤＮＣ運転（外部機器から数値制御装置（ＣＮＣ）にプログラムを転送しながら行なう運転）の場合、外部機器からＣＮＣへ高速に転送する必要がある。
▲４▼．多くの微小線分の指令になるので、ＣＮＣがプログラムを解析することに時間がかかり、スムーズに加工できない場合がある。
▲５▼．工具長を変更した場合、ＣＡＭによってプログラムから作成し直す必要があり、時間がかかる。
といった問題がある。
【０００９】
そこで、本発明は、ワークを保持するテーブル等を駆動する回転軸を備える加工機の数値制御装置であって、上述した問題点を解決し、加工プログラムの作成が容易で、かつその加工プログラム長も短くてすみ、工具長変更にも容易に対処できる数値制御装置を提供することにある。
【００１０】
【課題を解決するための手段】
本発明は、複数個の直線移動軸及びテーブルの回転移動軸を少なくとも1軸有する工作機械、さらには工具をテーブルに対して傾ける回転移動軸を有する工作機械を制御して、テーブル上に固定されたワークを工具により連続的に加工するための数値制御装置であって、前記直線移動軸の移動経路指令、前記ワークと前記工具との相対移動速度指令および前記テーブルに対する前記工具の方向として工具方向を与えるための前記回転移動軸の移動指令を与える移動指令手段と、前記テーブル上に座標系を定義する手段と、前記直線移動軸の前記移動経路指令を前記テーブル上に定義された座標系において前記相対移動速度指令に基づいて補間して前記移動径路の補間位置情報を得る第１補間手段と、前記回転移動軸の移動指令を前記移動径路指令及び相対移動速度指令に基づいて補間して回転移動軸の補間位置情報を得る第２補間手段と、該回転移動軸の補間位置情報に基づいて前記第１補間手段からの補間位置情報を補正する手段とを備え、前記移動径路の補正された補間位置情報と、前記回転移動軸の補間位置情報に基づいて対応する各軸のサーボモータを駆動することにより、前記工具上に指定される工具先端点が指令された移動経路上を指令された速度で移動するように制御する数値制御装置である。
【００１１】
前記第１補間手段からの補間位置情報を補正する手段は、設定された工具長補正量及び工具径補正量を加味して補正するようにした。
また、前記工具方向は、回転移動軸の回転移動位置の移動指令として与えられるか、方向ベクトルとして与えられるか、または、方向ベクトルとシフト角度の組み合わせとして与えられる。
さらに、前記移動指令手段は、前記テーブル上に定義された座標系がテーブルと共に回転するものとして該座標系上に前記直線移動軸の移動経路指令を指令するものでも、また、テーブルと共には回転しない座標系に基づいて指令されたものでもよく、テーブルと共には回転しない座標系に基づいて指令された直線移動軸の移動経路指令の場合には、前記移動指令手段は、前記直線移動軸の移動経路指令を前記直線移動軸の移動経路指令をテーブルと共に回転する座標系に変換する手段をも備える。
また、前記工具先端点は設定されるもので、工具の頂点、ボールエンドミル工具の先端における半球の中心、ボールエンドミル工具の先端における半球上の切削点、フラットエンドミル工具の先端面の中心、フラットエンドミル工具の先端面の切削点を工具先端点として設定するが、これら工具の任意の位置及び他種の工具の任意の位置を工具先端点として設定することも可能である。
さらに、旋盤に対しても本発明は適用されるもので、ワークを把持しＣ軸によって回転制御されるワーク把持台を前記テーブルの代わりとすればよいものである。
【００１２】
【発明の実施の形態】
まず，本発明の原理について、図６に示すような、テーブル回転用にＺ軸周りの回転軸であるＣ軸と工具ヘッド回転用にＸ軸周りの回転軸であるＡ軸の２つの回転移動軸を持った工作機械で説明する。しかし、Ａ，Ｃ軸以外の軸構成やテーブル回転用に２軸持った工作機械においても同様である。また、工具先端点Ｔｐは工具上に指定される位置であり、以降の説明では、工具先端点Ｔｐは工具の頂点であるとして説明する。
【００１３】
工具先端点制御モードにおいては、予め設定されている機械座標系ΣＭ上のワーク座標系ΣＷの原点位置(Xw,Yw,Zw)を記憶することで、ワーク座標系ΣＷを記憶する。また、工具２の回転中心(制御点)Ｐから工具先端点Ｔｐまでの長さである工具長補正量Ｈを記憶する。
【００１４】
加工しようとする直線の加工開始点の位置，すなわち加工開始点の制御点Ｐの機械座標系ΣＭの位置(Xm,Ym,Zm)、工具方向(Ａ，Ｃ軸の機械座標位置(Am,Cm))、工具長補正量Ｈから、次の式(1)〜(3)を演算して、ワーク座標系ΣＷ上の加工開始時の工具先端点Ｔｐの位置(Xs,Ys,Zs)を求める。回転軸については機械座標位置(Am,Cm)を加工開始位置(As,Cs)とする。また、この加工開始点の位置(Xm,Ym,Zm,Am,Cm)を後述する補間処理で用いる前回の補間処理後の位置(Xo,Yo,Zo,Ao,Co)とし、ワーク座標系ΣＷ上の加工開始時の工具先端点位置(Xs,Ys,Zs)を前回の補間処理後の位置(Xj,Yj,Zj)とする。なお、工具方向は、工具２のワークに対する相対方向であるから、工具２の回転、テーブル１（ワーク３）の回転を表すＡ軸，Ｃ軸の回転角Am，Cmで表される。
Xs = Xm−Xw                    …(1)
Ys = Ym−H*cos(Am)−Yw        …(2)
Zs = Zm−H*sin(Am)−Zw        …(3)
この時のＣ軸の位置をCzとして記憶する。
また、(Xr,Yr,Zr)は機械座標系上の回転中心位置として別途パラメータに記憶されておく。
【００１５】
なお、上述した例では、直線軸の加工開始の制御点ＰのＸ，Ｙ，Ｚ軸の機械座標位置(Xm,Ym,Zm)）、工具方向(Ａ，Ｃ軸の機械座標位置(Am,Cm)、工具長補正量Ｈから、ワーク座標系ΣＷ上の開始時の工具先端点Ｔｐの位置(Xs,Ys,Zs)を求めたが、工具方向(Ａ軸，Ｃ軸の機械座標位置(Am,Cm))、工具長補正量Ｈから工具補正ベクトルＶを求め、直線軸の加工開始の制御点Ｐの位置（Ｘ，Ｙ，Ｚ軸の機械座標位置(Xm,Ym,Zm)）がワーク座標系上の加工開始時の工具先端点Ｔｐの位置(Xs,Ys,Zs)となるように動作させて、工具先端点制御を開始することもできる。つまり、次の式(4)〜(6)で示されるベクトルＶを求め、
Vx=0               …(4)
Vy= H*cos(Am)      …(5)
Vz= H*sin(Am)      …(6)
Ｘ，Ｙ，Ｚ軸をこのベクトルＶだけ移動させ、そのときの機械座標系ΣＭ上の制御点Ｐの位置（Xm,Ym,Zm）から式(7)〜(9)で示されるようにワーク座標系ΣＷの原点位置(Xw,Yw,Zw)を減じてワーク座標系ΣＷ上の加工開始時の工具先端点位置(Xs,Ys,Zs)を求める。
Xs = Xm−Xw    …(7)
Ys = Ym−Yw    …(8)
Zs = Zm−Zw    …(9)
こうして、ワーク座標系ΣＷ上の加工開始時の工具先端点Ｔｐの位置(Xs,Ys,Zs)を求めた後は、その後のプログラム指令は記憶されたワーク座標系で指令されたものとみなし(プログラムではそのように指令しておく)、そのワーク座標系ΣＷ上で指令された速度Ｆにもとづいて補間を行う。つまり、次のブロックの指令を(Xe,Ye,Ze,Ae,Ce)とした時、次のように補間周期ΔtごとにＸ，Ｙ，Ｚ，Ａ，Ｃ軸の移動するべき制御点Ｐ(機械座標位置)(Xc,Yc,Zc,Ac,Cc)を求める。
【００１６】
まず、ワーク座標系上の補間点(Xi,Yi,Zi)について、指令速度Ｆにもとづいて補間を行う(第１の補間)。補間周期をΔt、前回のワーク座標系ΣＷ上の補間点を(Xj,Yj,Zj)（加工開始時は前述したように(Xs,Ys,Zs)＝(Xj,Yj,Zj)）とし、
K1 =Δt * F        …(10)
(Δt間に補間すべき長さ)
D = √( (Xe−Xs)2 + (Ye−Ys) 2 + (Ze−Zs) 2)        …(11)
（ブロックの長さ）
とすると、
Xi = K1 * [(Xe−Xs)／D] + Xj      …(12)
Yi = K1 * [(Ye−Ys)／D] + Yj      …(13)
Zi = K1 * [(Ze−Zs)／D] + Zj      …(14)
Ａ軸、Ｃ軸についても開始位置(As, Cs)から指令位置(Ae, Ce)に向かって補間を行ない(第２の補間)、補間点(Ai,Ci)を求める。この時、補間点(Ai,Ci)の位置は、開始時の工具先端点(Xs,Ys,Zs)からＸ，Ｙ，Ｚ軸の指令終点位置(Xe,Ye,Ze)への移動と同じ比例配分とする。
つまり、
K2 = [√((Xi−Xs)2 + (Yi−Ys)2 + (Zi−Zs)2)]／ [√((Xe−Xs)2 + (Ye−Ys)2 + (Ze−Zs)2)]                                          …(15)
とすると、
Ai = K2*(Ae−As) + As      …(16)
Ci = K2*(Ce−Cs) + Cs      …(17)
となる。
【００１７】
上記補間処理毎に、テーブル回転分だけ補正して、上記直線軸の補間点(Xi,Yi,Zi)を変換し、次の式(18)〜(20)の演算により機械座標系ΣＭ上のＸ，Ｙ，Ｚ軸の位置(Xa,Ya,Za)を求める。なお、式(18)〜(20)における(Xr,Yr,Zr)は別途パラメータに設定されている回転中心位置である。
Xa = (Xw + Xi−Xr)*cos(-Ci+Cz)−(Yw + Yi−Yr)*sin(-Ci+Cz) + Xr…(18)
Ya = (Xw + Xi−Xr) *sin(-Ci+Cz) + (Yw + Yi−Yr)*cos(-Ci+Cz) + Yr…(19)
Za = Zw + Zi                                                    …(20)
上記補間処理毎に、補間された工具ヘッド回転軸位置（Ai）と上記工具長補正量Ｈによって、工具長補正ベクトルＶ(Vx,Vy,Vz)を計算する。
Vx = 0            …(21)
Vy = H*cos(Ai)    …(22)
Vz = H*sin(Ai)    …(23)
上記補間処理毎に、機械座標系ΣＭ上の直線軸位置(Xa,Ya,Za)と上記工具長補正ベクトルＶを加算して補正し、直線軸の制御点Ｐの位置(Xc,Yc,Zc)を計算する。 また、(Ai,Ci)を(Ac,Cc)とする。
(Xc,Yc,Zc) = (Xa,Ya,Za) + (Vx,Vy,Vz)      …(24)
以上のようにして、制御点Ｐの機械座標位置(Xc,Yc,Zc,Ac,Cc)が求められる。
【００１８】
上記直線軸の制御点位置(Xc,Yc,Zc)と前回の補間処理での直線軸の制御点位置(Xo,Yo,Zo)との差分を直線軸の移動量としてサーボに出力する。 上記補間された回転軸位置(Ac,Cc)と前回の補間処理における回転軸位置(Ao,Co)との差分を回転軸の移動量としてサーボに出力する。
【００１９】
今回の制御点位置(Xc,Yc,Zc)を(Xo,Yo,Zo)とし、今回の回転軸補間位置(Ac,Cc)を(Ao,Co)として、次回の補間に備える。
次の指令が工具先端点制御終了指令であった場合、Ｘ，Ｙ，Ｚ軸について、次の式(25)〜(27)で求められる指令がプログラム指令(Xp,Yp,Zp)であったとみなみなし、以降のプログラム指令に対応する。
Xp = Xc−Xw      …(25)
Yp = Yc−Yw      …(26)
Zp = Zc−Zw      …(27)
以上のようにして、回転するテーブルに載置されたワークに対して、簡単なＮＣプログラムにより補間しながら正確な加工を行うことができる。
なお、ここでは簡単なためＡ，Ｃ軸についてワーク座標系ΣＷを考慮していないが、Ａ，Ｃ軸に対してＸ，Ｙ，Ｚ軸と同様にワーク座標系ΣＷを考慮して計算することも可能である。
【００２０】
上述した説明では、工具先端点制御開始時にワーク座標系ΣＷが記憶され、記憶されたワーク座標系ΣＷ上でプログラムが指令され、その記憶されたワーク座標系ΣＷはテーブル回転と共に回転する場合の方式である。この方式であると、ワーク座標系ΣＷはテーブル１と共に回転するから、ワーク座標系ΣＷにおいて、加工しようとする形状を工具先端点Ｔｐ位置の経路として指令しておけば、この経路とワーク座標系ΣＷとの関係は固定されたものとなるが、このワーク座標系ΣＷがテーブル１と共に回転するから，テーブル１上のワーク３に対して加工された形状は、ワーク座標系ΣＷにおいて指令した形状となる。
【００２１】
しかしながら，固定されたワーク座標系上でプログラムしても良い。つまり、ワーク座標系ΣＷはテーブル回転とともに回転はせず、そのテーブル回転には影響を受けないワーク座標系ΣＷ上でプログラムが指令されることも可能である。
【００２２】
この場合は、式(10)〜(15)で用いた次のブロックの指令を(Xe,Ye,Ze)の代わりに次の式(28)〜(30)の計算を行って得られた位置(Xe1,Ye1,Ze1)を (Xe,Ye,Ze)とみなして、式(10)以降の処理を行う。つまり、図７に示すように、回転しないワーク座標系ΣＷＲ上の指令位置(Xe,Ye,Ze)から記憶されたワーク座標系(テーブルと共に回転するワーク座標系)ΣＷ上での位置(Xe1,Ye1,Ze1)を求め、その位置を記憶されたワーク座標系(テーブルと共に回転するワーク座標系)ΣＷ上での指令位置とみなして式(10)以降の処理を行う。
Xe1=(Xw+Xe-Xr)*cos(Ce-Cz)-(Yw+Ye-Yr)*sin(Ce-Cz)-(Xw-Xr)    …(28)
Ye1=(Xw+Xe-Xr)*sin(Ce-Cz)+(Yw+Ye-Yr)*cos(Ce-Cz)-(Yw-Yr)    …(29)
Ze1=Ze                                                      …(30)
また、工具方向をI,J,Kのような方向ベクトルで指令してもよい。この方向ベクトルによる指令に基づいて、回転軸がどのような位置に補間されるべきか数値制御装置（ＣＮＣ）側で自動計算する方法を採用してもよい。この場合、次のブロックの指令を(Xe,Ye,Ze,Ae,Ce)としたが、その指令を(Xe,Ye,Ze,Ie,Je,Ke)とし、(Ie,Je,Ke)を記憶されたワーク座標系上の工具方向を示すベクトルとする。そして、方向ベクトル(Ie,Je,Ke)から対応する回転軸位置(Ae,Ce)を計算し、計算された回転軸位置(Ae,Ce)を使用して上記の処理を行うようにすればよい。
【００２３】
また、工具方向をI,J,Kのような方向ベクトルとそれからのシフト量で指定してもよい。工具先端点がボールエンドミル工具の先端における半球上の切削点である場合、図１７のように加工物表面に垂直な方向をI,J,Kの方向ベクトルで指令し、工具方向をI,J,Kの方向からのプログラム進行方向に対する接線方向のシフト角度Qで指令することができる。その場合、指令を(Xe,Ye,Ze,Ie,Je,Ke,Qe)とし、(Ie,Je,Ke)を加工物表面の垂直方向を示すベクトルとし、(Qe)を指令されたプログラム進行方向に対する接線方向のシフト角度とする。そして、(Ie,Je,Ke) 、(Qe)およびプログラム進行方向から対応する回転軸位置(Ae,Ce)を計算するとともに、(Ie,Je,Ke)と工具径補正量Dから工具先端球中心を求める。そして、求めた工具先端球中心を上記の処理における工具先端点とし、計算された回転軸位置(Ae,Ce)を使用して上記の処理を行うようにすればよい。
【００２４】
ここで、シフト角度Qについては、プログラム進行方向に対する接線方向のシフト角度をQ1、プログラム進行方向に対する法線方向のシフト角度をQ2として指令することも可能である。その場合も、上記と同様に、対応する回転軸位置(Ae,Ce)を計算するとともに、(Ie,Je,Ke)と工具径補正量Dから工具先端球中心を求め、求めた工具先端球中心を上記の処理における工具先端点とし、計算された回転軸位置(Ae,Ce)を使用して上記の処理を行うようにすればよい。
【００２５】
また、工具先端点がフラットエンドミル工具の先端面の切削点である場合は、図１８のように、工具方向をI,J,Kの方向ベクトルまたは回転軸位置で指令し、工具先端面の切削点と工具先端面中心の距離を工具径補正量Dで指令する。工具方向をI,J,Kの方向ベクトルで指令する場合、指令を(Xe,Ye,Ze,Ie,Je,Ke)とし、(Ie,Je,Ke)を工具方向を示すベクトルとする。そして、(Ie,Je,Ke)から対応する回転軸位置(Ae,Ce)を計算し、(Ie,Je,Ke) とプログラム指令の進行方向が作る面上で(Ie,Je,Ke)に垂直な方向に工具先端点から工具径補正量Dだけ距離をとった点として工具先端面中心の位置を求める。そして、求めた工具先端面中心を上記の処理における工具先端点とし、計算された回転軸位置(Ae,Ce)を使用して上記の処理を行うようにすればよい。
【００２６】
図８は本発明の工具先端点制御を実施する一実施形態の数値制御装置（ＣＮＣ）１００のブロック図である。ＣＰＵ１１は数値制御装置１００を全体的に制御するプロセッサである。ＣＰＵ１１は、ＲＯＭ１２に格納されたシステムプログラムをバス２０を介して読み出し、該システムプログラムに従って数値制御装置全体を制御する。ＲＡＭ１３には一時的な計算データや表示データ及び表示器／ＭＤＩユニット７０を介してオペレータが入力した各種データが格納される。ＣＭＯＳメモリ１４は図示しないバッテリでバックアップされ、数値制御装置１００の電源がオフされても記憶状態が保持される不揮発性メモリとして構成される。ＣＭＯＳメモリ１４中には、インターフェイス１５を介して読み込まれた加工プログラムや表示器／ＭＤＩユニット７０を介して入力された加工プログラム等が記憶される。また、ＲＯＭ１２には、加工プログラムの作成及び編集のために必要とされる編集モードの処理や自動運転のための処理を実施するための各種システムプログラムがあらかじめ書き込まれている。
【００２７】
本発明を実行する加工プログラム等の各種加工プログラムはインターフェイス１５やＣＲＴ／ＭＤＩユニット７０を介して入力し、ＣＭＯＳメモリ１４に格納することができる。
【００２８】
インターフェイス１５は、数値制御装置１００とアダプタ等の外部機器７２との接続を可能とするものである。外部機器７２側からは加工プログラムや各種パラメータ等が読み込まれる。また、数値制御装置１００内で編集した加工プログラムは、外部機器７２を介して外部記憶手段に記憶させることができる。ＰＭＣ（プログラマブル・マシン・コントローラ）１６は、数値制御装置１００に内蔵されたシーケンスプログラムで工作機械の補助装置（例えば、工具交換用のロボットハンドといったアクチュエータ）にＩ／Ｏユニット１７を介して信号を出力し制御する。また、工作機械の本体に配備された操作盤の各種スイッチ等の信号を受け、必要な信号処理をした後、ＣＰＵ１１に渡す。
【００２９】
表示器／ＭＤＩユニット７０はディスプレイやキーボード等を備えた手動データ入力装置であり、インターフェイス１８は表示器／ＭＤＩユニット７０のキーボードからの指令，データを受けてＣＰＵ１１に渡す。インターフェイス１９は手動パルス発生器等を備えた操作盤７１に接続されている。
【００３０】
各軸の軸制御回路３０〜３４はＣＰＵ１１からの各軸の移動指令量を受けて、各軸の指令をサーボアンプ４０〜４４に出力する。サーボアンプ４０〜４４はこの指令を受けて、各軸のサーボモータ５０〜５４を駆動する。各軸のサーボモータ５０〜５４は位置・速度検出器を内蔵し、この位置・速度検出器からの位置・速度フィードバック信号を軸制御回路３０〜３４にフィードバックし、位置・速度のフィードバック制御を行う。なお、図８では、位置・速度のフィードバックについては省略している。
【００３１】
サーボモータ５０〜５４は、工作機械のＸ，Ｙ，Ｚ，Ａ，Ｃ軸を駆動するもので、図１、図２に示した５軸工作機械を駆動制御するものである。また、スピンドル制御回路６０は主軸回転指令を受け、スピンドルアンプ６１にスピンドル速度信号を出力する。スピンドルアンプ６１はスピンドル速度信号を受けて、主軸モータ６２を指令された回転速度で回転させる。ポジションコーダ６３は、主軸モータ６２の回転に同期して帰還パルスをスピンドル制御回路６０にフィードバックし、速度制御を行う。
【００３２】
以上のような数値制御装置１００の構成は従来の数値制御装置の構成とは変りはなく、この数値制御装置１００によって、図１、図２に示すような５軸加工機を駆動制御して工具先端点制御を実施する。
そこで、この数値制御装置により図１に示すタイプの５軸加工機を制御して工具先端点制御による加工の一例を以下説明する。
【００３３】
＜ワーク座標系ΣＷがテーブルと共に回転する場合＞
まず、図６に示すように、機械座標系ΣＭにおけるワーク座標系ΣＷの原点位置（Ｘｗ，Ｙｗ，Ｚｗ）を設定してワーク座標系ΣＷを設定記憶させておく。さらに、機械座標系ΣＭにおけるテーブル１（ワーク３）の回転中心位置（Ｘｒ，Ｙｒ，Ｚｒ）をパラメータとして設定記憶しておく。以下に説明する例では、Ｘｗ＝Ｘｒ，Ｙｗ＝Ｙｒとしているが、必ずしも等しくなくてもよい。
【００３４】
そして、回転するワーク３に対する加工の工具先端点制御モードによる加工プログラム指令は、上記設定したワーク座標系ΣＷで作成される。そしてこのワーク座標系ΣＷは、工具先端点制御開始時に記憶され、工具先端点制御中はこのワーク座標系ΣＷはテーブルと共に回転する方式、すなわち、ワーク座標系ΣＷはテーブル１に張り付いた形となるものである。
【００３５】
そこで、図９に示すように、回転するワーク３上に直線Ｌを加工するために次のような加工プログラム指令がなされたとする。
＜本発明のプログラムの例１−テーブルと共にワーク座標系ΣＷが回転する＞
Ｎ100 Ｇ54 Ｈ01 Ｃ30.0 ；   ：ワーク座標系選択、工具長補正番号指定
Ｎ101 Ｇ90 Ｇ00 Ｘ0.0 Ｙ150.0 Ｚ86.603 Ａ 60.0 Ｃ 30.0 ； 始点への位置決め
Ｎ200 Ｇ43.4 ；             ：工具先端点制御開始
Ｎ301 Ｇ01 Ｘ- 86.603 Ｙ- 50.0 Ｚ0.0 Ａ 30.0 Ｃ 150.0 Ｆ5000； 直線Ｌの切削加工指令
Ｎ400 Ｇ49 ；               ：工具先端点制御終了
Ｎ１００のブロックにおいて、数値制御装置１００はその時のワーク座標系（Ｇ５４のワーク座標系原点位置:Xw,Yw,Zw）を記憶，設定し、工具補正番号０１に対応する工具長補正量Ｈを記憶する。ここでは、工具長補正量Ｈは100.0で、ワーク座標系ΣＷ、回転中心位置(Xw,Yw,Zw)=(Xr,Yr,Zr)=(200.0, 200.0, 100.0)とする。
【００３６】
Ｎ１０１のブロックにおいて、「Ｇ90」はアブソリュート指令のコードで、「Ｇ00」は位置決め指令のコードであり、制御点Ｐのワーク座標系ΣＷ上の位置が「Ｘ0.0 Ｙ150.0 Ｚ86.603 Ａ 60.0 Ｃ 30.0 」として指令されている。
【００３７】
このワーク座標系ΣＷ上での指令は、機械座標系ΣＭ上に変換され、機械座標位置(Xm,Ym,Zm,Am,Cm)は次のようになる。
Xm = 0.0 + 200.0 = 200.0           …(31)
Ym = 150.0 + 200.0 = 350.0         …(32)
Zm = 86.603 + 100.0 = 186.603      …(33)
Am = 60.0                          …(34)
Cm = 30.0                          …(35)
そして、このＮ１０１のブロックの指令により、工作機械の各軸は上記位置に移動させられる。この状態を図１０（ａ）に示す。
【００３８】
Ｎ２００のブロックの「Ｇ43.4」の指令は、工具先端点制御開始指令であり、以後、この工具先端点制御の終了までは、工具先端点Ｔｐの移動軌跡がプログラムとして指令される。このＮ２００の「Ｇ43.4」の指令により、現在の制御点Ｐ、工具方向(Am,Cm)、工具長補正量Ｈから開始時の工具先端点Ｔｐ＝(Xs,Ys,Zs)を求める。 現在の制御点Ｐ(機械位置)が(Xm,Ym,Zm)=(200.0, 350.0, 186.603)、工具方向が(A60.0, C30.0)、工具長補正量Ｈが100.0の場合、上述した式(１)〜（３）により、下記に示すように、工具先端点位置Ｔｐ＝(Xs,Ys,Zs)は(X0.0,
Ｙ１００．０，  Ｚ０．０）となる。
Xs = Xm−Xw = 200.0−200.0 = 0.0              …(36)
Ys = Ym−H*cos(Am)−Yw = 350.0−100.0*cos(60.0)−200.0 = 100.0…(37)
Zs = Zm−H*sin(Am)−Zw = 186.603−100.0*sin(60.0)−100.0 = 0.0…(38)
上記の値を(Xj,Yj,Zj)にもセットし、上記制御点Ｐの機械座標位置(Xm,Ym,Zm,Am,Cm)を(Xo,Yo,Zo,Ao,Co)とする。また、C軸の位置30.0をCzとする。
【００３９】
このときの状態は図１０（ａ）の状態で、直線Ｌの加工開始位置に工具２は位置決めされた状態である。
Ｎ３０１のブロックにおける「Ｇ01」は切削送り指令であり、工具先端点Ｔｐ＝(Xs,Ys,Zs)が(X-86.603, Y-50.0, Z0.0)、工具方向が(A30.0, C150.0)の目標値まで、送り速度Ｆが5000mm/minで切削加工する指令である。
【００４０】
Ｘ，Ｙ，Ｚ軸について、開始時の工具先端点Ｔｐ(Xs,Ys,Zs)＝(X0.0, Y100.0, Z0.0)から指令位置(Xe,Ye,Ze)＝(X-86.603, Y-50.0, Z0.0)に向かって補間を行ない、補間点(Xi,Yi,Zi)を求める。すなわち、式（１０）〜（１４）の演算を行って補間点(Xi,Yi,Zi)を求める。補間周期Δt=1msecとすると、
K1=1msec*5000mm/min=0.083mm                  …(39)
D=√（(-86.603−0.0)2 + (-50.0−100.0)2 + (0.0−0.0)2) = 173.205…(40)
Xi = 0.083 * (86.603 / 173.205) + Xj = 0.042 + Xj       …(41)
Yi = 0.083* (150.0 / 173.205) + Yj = 0.072 + Xj         …(42)
Zi = 0.0                                                …(43)
Ａ軸、Ｃ軸についても現在位置(A60.0, C30.0)から指令位置(A 30.0, C150.0)に向かって補間を行ない、補間点(Ai,Ci)を求める。 この時、補間点(Ai,Ci)の位置は、工具先端点Ｔｐの加工開始時の位置(Xs,Ys,Zs)＝(X0.0, Y100.0, Z0.0)から指令終点位置(Xe,Ye,Ze) (X-86.603, Y-50.0 Z0.0)への移動と同じ比例配分とする。つまり、式(１５)より、
K2 = [√((Xi−0.0)2 + (Yi−100.0)2 + (Zi−0.0)2)]/[√((-86.603−0.0)2 + (-50.0−100.0)2 + (0.0−0.0)2)]                          …(44)
とすると、式(１６)、(１７)より
Ai = K2*(30.0−60.0)           …(45)
Ci = K2*(150.0−30.0)          …(46)
となる。
【００４１】
例えば、Ｘ，Ｙ，Ｚ軸の補間点(Xi,Yi,Zi)が(-43.302, 25.0, 0.0)の時、Ai=45.0, Ci=90.0,となる（図１０(ｂ)参照）。
【００４２】
Ｘ，Ｙ，Ｚ軸の補間点(Xi,Yi,Zi)、Ｃ軸の補間位置(Ci)から実際に工具先端点Ｔｐが移動する機械座標系ΣＭ上の補間位置(Xa, Ya. Za)を式(１８)〜(２０)を演算して求める。たとえば、図１０(ｂ)に示すように、Ｃ軸の補間位置がCi=90.0の時、Ｘ，Ｙ，Ｚ軸の補間点の位置は(Xi,Yi,Zi)=(-43.302, 25.0, 0.0)であり、下記に示すように、式(１８)〜(２０)を行うことにより、機械座標系ΣＭ上の工具先端点Ｔｐの補間位置(Xa, Ya. Za)=(175.0, 243.302, 100.0)が得られる。
Xa = (-43.302)*cos(-90.0+30.0)−25.0*sin(-90.0+30.0) + 200.0 = 200.0…(47)
Ya = (-43.302)*sin(-90.0+30.0) + 25.0*cos(-90.0+30.0) + 200.0 = 250.0…(48)
Za = 0.0 + 100.0 = 100.0                                          …(49)
また、Ａ軸の補間位置(Ai)から工具長補正ベクトルＶを求める。
Ai=45.0の時、 式(２１)〜(２２)より、工具長補正ベクトルＶは(0.0, 70.711, 70.711)となる。
Vx = 0.0                           …(50)
Vy = 100*cos(45.0) = 70.711        …(51)
Vz = 100*sin(45.0) = 70.711        …(52)
そこで、求めた機械座標系ΣＭ上の工具先端点Ｔｐの補間位置(Xa, Ya. Za)に上記工具長補正ベクトルＶを加算する式(２４)の演算を行って、機械座標系ΣＭ上の制御点Ｐの位置(Xc,Yc,Zc)を求める。
Ｘｃ  ＝  ２００．０  ＋  ０．０  ＝  ２００．０            …(53)
Yc = 250.0 + 70.711 = 320.711      …(54)
Zc = 100.0 + 70.711 = 170.711      …(55)
前回の補間周期におけるＸ，Ｙ，Ｚ軸の制御点Ｔｐ(Xc, Yc, Zc)と前回の制御点Ｔｐ(Xo, Yo, Zo)との差分を今回の補間周期におけるＸ，Ｙ，Ｚ軸の移動量としてＸ，Ｙ，Ｚ軸の軸制御回路３０〜３２へ出力する。また、同時に前回の補間周期におけるＡ，Ｃ軸の補間位置(Ao,Co)と今回の補間周期におけるＡ，Ｃ軸の補間点(Ai,Ci)＝(Ac,Cc)との差分を今回の補間周期におけるＡ，Ｃ軸の移動量としてＡ軸、Ｃ軸の軸制御回路３３、３４へ出力する。さらに、今回の制御点Ｐの位置(Xc,Yc,Zc)を(Xo, Yo, Zo)とし、工具方向(Ac,Cc)を(Ao,Co)とする。
【００４３】
以上のようにして、補間処理をしてＸ，Ｙ，Ｚ，Ａ，Ｃ軸補間位置へ駆動しながら、Ｎ３０１のブロックで指令した位置まで移動させ、ワーク３に切削加工を行う。図１０(ｃ)はこの加工終了位置に達して加工が終了した状態を表す。
【００４４】
そして、Ｎ４００のブロックの「Ｇ49」は、工具先端点制御終了のコードであり、このコードが読み込まれると、制御点Ｐに対する最後の補間点（Xc,Yc,Zc）を式(２５)〜(２７)の演算を行いワーク座標系に変換し、プログラム指令(Xp,Yp,Zp)であったとみなし、以降のプログラム指令に対応する。
Xp = Xc−Xw = 200.0−200.0 = 0.0             …(56)
Yp = Yc−Yw = 386.603−200.0 = 186.603       …(57)
Zp = Zc−Zw = 150.0−100.0 = 50.0            …(58)
これによって、図１０(ｃ)に示すように直線Ｌの切削加工が完了する。図３〜図５で説明した従来の直線Ｌの切削では、前述した＜従来のプログラム例＞では、「N301」、「N302」の２ブロックでこの直線Ｌを切削加工するように記載したが、この２つのブロックでは、精度の高い直線加工ができないことから、実際はさらに多数のブロックの指令が必要となる。しかし、本発明は、上述したように＜本発明のプログラムの例１＞、及び、図９〜図１０で示すように、「N301」の１ブロックの指令でよく、プログラムが簡単となる。
【００４５】
なお、上述した例は工具方向を工具２の回転角を示すＡ軸の位置と、テーブルの回転を示すＣ軸の位置によって、工具方向を示したが、工具方向をI,J,Kのような方向ベクトルで指令し、回転軸がどのような位置に補間されるべきか数値制御装置側で自動計算することもできる。
【００４６】
この場合、上記プログラムにおいて、Ｎ３０１では、Ａ30.0 Ｃ150.0と指令しているが、これは、記憶されたワーク座標系上では、 X:-0.866, Y:-0.5, Z:0.577 の方向である。したがって、Ａ30.0 Ｃ150.0の代わりにＩ-0.866 Ｊ-0.5 Ｋ0.577と指令し、このＩ，Ｊ，Ｋの方向から実際のＡ軸、Ｃ軸の移動方向はＡ30.0
Ｃ150.0であることを数値制御装置で計算させるようにしてもよい。
【００４７】
＜ワーク座標系ΣＷを固定した場合＞
次に、テーブルと共に回転せず、固定されたワーク座標系ΣＷＲ上でプログラムする場合の実施例について述べる。つまり、ワーク座標系ΣＷＲはテーブル回転とともに回転はせず、そのテーブル回転には影響を受けないワーク座標系ΣＷＲ上でプログラムが指令される場合の実施例について述べる。
【００４８】
先に示した＜本発明のプログラム例１＞と同じように直線Ｌを加工するときのプログラム指令は次のようになる。
＜本発明のプログラム例２−ワーク座標系ΣＷを固定＞
Ｎ100 Ｇ54 Ｈ01 Ｃ30.0 ；   ：ワーク座標系選択設定、工具長補正番号指定
Ｎ101 Ｇ90 Ｇ00 Ｘ0.0 Ｙ150.0 Ｚ86.603 Ａ 60.0 Ｃ 30.0 ；
： 始点への位置決め
Ｎ200 Ｇ43.4 ；             ：工具先端点制御開始
Ｎ301 Ｇ01 Ｘ0.0 Ｙ100.0 Ｚ0.0 Ａ 30.0 Ｃ 150.0 Ｆ5000；
：直線Ｌの切削加工指令
Ｎ400 Ｇ49 ；               ：工具先端点制御終了
この「プログラムの例２」が「プログラム例１」と相違する点は「Ｎ301」のブロックにおいて、「プログラム例１」では、
「Ｇ01 Ｘ- 86.603 Ｙ- 50.0 Ｚ0.0 Ａ 30.0 Ｃ 150.0 Ｆ5000」
であったが、「プログラム例２」では、
「Ｇ01 Ｘ0.0 Ｙ100.0 Ｚ0.0 Ａ 30.0 Ｃ 150.0 Ｆ5000」
であり、このブロックの指令のみが相違し他は同じである。
【００４９】
この「プログラム例２」のブロック「Ｎ301」の指令は、固定されたワーク座標系ΣＷＲ上の工具先端位置Ｔｐで指令されているものであるから、この位置をテーブル１の回転と共に回転するワーク座標系上の位置に変換すれば、その後は上述したプログラム例１の処理と同一となる。
【００５０】
すなわち、このブロックで指令された位置(加工終了目標位置)(Xe,Ye,Ze)を式(28)〜(30)で示した次の演算を行うことによって、テーブル１と共に回転するワーク座標系上の位置(Xe1,Ye1,Ze1)を求め、位置(Xe1,Ye1,Ze1)をテーブル１と共に回転するワーク座標系ΣＷＲ上での指令位置とみなして、以降の処理では、(Xe1,Ye1,Ze1)を(Xe,Ye,Ze)の代わりに用いればよい。
Xe1 = (Xw + Xe−Xr)*cos(Ce-Cz)−(Yw + Ye−Yr)*sin(Ce-Cz)−(Xw−Xr)
= 0.0*cos(120.0)−100.0*sin(120.0)
= -86.603                                    …(59)
Ye1 = (Xw + Xe−Xr) *sin(Ce-Cz) + (Yw + Ye−Yr)*cos(Ce-Cz)−(Yw−Yr)
= 0.0*sin(120.0) + 100.0*cos(120.0)
= -50.0                                      …(60)
Ze1 = Ze =0.0                                 …(61)
以上のように、変換した位置(Xe1,Ye1,Ze1)＝(-86.603, -50.0, 0.0)は、「プログラム例１」のブロック「Ｎ301」の指令「Ｘ- 86.603 Ｙ- 50.0 Ｚ0.0」で指令された位置と同じであり、以後の処理動作は、上述したプログラム例１で述べたものと同一となる。
【００５１】
図１１は、数値制御装置１００のプロセッサ１１が実行する工具先端点制御のフローチャートである。
【００５２】
プロセッサ１１は、プログラムより工具先端点制御指令の「Ｇ４３．４」を読み込むとこの図１１に示す処理を開始する。なお、先のプログラム例１、２に示すように、この工具先端点制御指令の「Ｇ４３．４」が読み込まれる前には、ワーク座標系ΣＷ（Xw,Yw,Zw）、工具長補正量Ｈは指定され記憶されている。また、工具先端点制御による加工開始位置へすでに位置決めされているものとする。
【００５３】
工具先端点制御指令の「Ｇ４３．４」が読み込まれると、位置決めされている現在の制御点Ｐの位置(Xm,Ym,Zm)、Ａ軸，Ｃ軸の回転角Am，Cm、及び工具長補正量Ｈより、式(１)〜(３)の演算を行うことにより、ワーク座標系ΣＷ上の加工開始時の工具先端点位置(Xs,Ys,Zs)をもとめる(ステップＳ１)。
【００５４】
位置(Xm,Ym,Zm,Am,Cm)を１つ前の補間時の位置(Xo,Yo,Zo,Ao,Co)として記憶し、工具先端点位置(Xs,Ys,Zs)を１つ前の補間位置(Xj,Yj,Zj)として記憶する。さらに、(Am,Cm)を (As,Cs)、CmをCsとして記憶する(ステップＳ２)。
その後、次のブロックを読み工具先端点制御終了指令(Ｇ４９)か否か判断する(ステップＳ３、Ｓ４)。工具先端点制御指令（Ｇ４３．４）の後には、切削加工指令がプログラムされているから，これが読み込まれ，ステップＳ５に進み、このブロックで読込まれた指令位置(Xe,Ye,Ze)とステップＳ１で求めた現在の工具先端位置(Xs,Ys,Zs)及び指令速度Ｆより，式(１０)、(１１)の演算を行って、補間周期間に移動すべき長さＫ１、及び当該ブロックで指令された加工長Ｄを求める(ステップＳ５)。
【００５５】
求められた、Ｋ１、Ｄ、指令位置(Xe,Ye,Ze)、現在の位置(Xs,Ys,Zs)、位置(Xj,Yj,Zj)を用いて、式(１２)〜(１４)の演算を行って、補間点位置(Xi,Yi,Zi)を求める(ステップＳ６)。また、式(１５)の演算を行って、比例定数Ｋ２を求め(ステップＳ７)、求めた比例定数Ｋ２を使用して、式(１６)，(１７)の演算を行いＡ，Ｃ軸の補間点Ai、Ciを求める(ステップＳ８)。
【００５６】
求められたテーブル1の回転角Ciにより、式(１８)〜(２０)の演算を行い、この回転分、補間点位置(Xi,Yi,Zi)を回転させて機械座標系上の工具先端位置(Xa,Ya,Za)を求める(ステップＳ９)。
さらに、求めれた工具の傾きであるＡ軸の回転角Aiより、式(２１)〜(２３)の演算を行い、工具長補正ベクトルＶ(Vx,Vy,Vz)を求め(ステップＳ１０)、機械座標系上の工具先端点位置(Xa,Ya,Za)に工具長補正ベクトルＶ(Vx,Vy,Vz)を加算して(式(２４))、機械座標系上の制御点Ｐの位置(Xc,Yc,Zc)を求める(ステップＳ１１)。
【００５７】
(Xi,Yi,Zi)を(Xj,Yj,Zj)として格納し、また、(Ai,Ci)を(Ac,Cc)として格納し(ステップＳ１２)、次の補間処理に備える。そして、補間によって得られた制御点Ｐの位置(Xc,Yc,Zc)から現在位置(Xo,Yo,Zo)を減じて、その値をＸ，Ｙ，Ｚ軸のサーボモータ５０、５１、５２への指令として出力する。また、Ａ，Ｃ軸の補間位置Ac、Ccから現在位置Ao、Coを減じてその値をＡ，Ｃ軸のサーボモータ５３、５４への指令として出力する(ステップＳ１３)。
【００５８】
次に、制御点Ｐの位置(Xc,Yc,Zc)、Ａ，Ｃ軸の補間位置Ac、Ccを、現在位置(Xo,Yo,Zo)、現在の位置Ao、Coとして，記憶し(ステップＳ１４)、当該ブロックの終点位置まで達したか判断し(ステップＳ１５)、達してなければ、ステップＳ６に戻り、ステップＳ６以下の処理を行う。
【００５９】
以下、ステップＳ６〜ステップＳ１６の処理を繰り返し実行し、指令位置まで補間して各軸を駆動制御し、ステップＳ１５でこのブロックでの指令位置に達したことが判別されると、この終点位置(Xe,Ye,Ze,Ae,Ce)を次のブロックの開始位置として記憶し(ステップＳ１６)、ステップＳ３に戻り、ステップＳ３以下の処理を実行する。加工のブロックが続き、工具先端点制御終了の指令が読込まれなければ、ステップＳ３以下の処理を繰り返し実行し、工具先端点制御終了コードが読込まれると、ステップＳ４より、ステップＳ１７に移行し、式(２５)〜(２７)の演算を行って、(Xp,Yp,Zp)を求め、これをプログラム指令として、この工具先端点制御処理を終了する。
【００６０】
なお、上述したように、工具先端点制御のプログラムが、テーブルと共に回転しない固定されたワーク座標系ΣＷＲで位置が指令されている場合には、ステップＳ５で読み出された指令位置(Xe,Ye,Ze)を、式(２８)〜(３０)によってワークと共に回転する座標系ΣＷ上の位置(Xe1,Ye1,Ze1)に変換し、この位置(Xe1,Ye1,Ze1)を指令位置(Xe,Ye,Ze)の代わりに使用して、図１１に示す処理を実行すればよい。
【００６１】
また、工具補正ベクトルＶを先に補正する方法を採用する場合には、ステップＳ１の処理が相違するのみである。この場合、Ｘ，Ｙ，Ｚ軸の機械座標系上の制御点Ｐの現在位置(Xm,Ym,Zm)、Ａ，Ｃ軸の現在位置(Am,Cm)を読み取り、このＡ，Ｃ軸の現在位置(Am,Cm)と工具補正量Ｈより、式(４)〜(６)の演算を行って工具補正ベクトルＶを求め、このベクトル分だけＸ，Ｙ，Ｚ軸を移動させる。そしてこの移動後のＸ，Ｙ，Ｚ軸の位置を読み取り、これを制御点Ｐの現在位置(Xm,Ym,Zm)として、式(７)〜(９)の演算を行って、ワーク座標系ΣＷ上の加工開始時の工具先端点位置(Xs,Ys,Zs)を求めるようにすればよい。他は、図１１に示す処理と同一である。
【００６２】
また、上述した実施形態では、テーブル回転用に１軸(Ｃ)、工具ヘッド回転用に１軸(Ａ)を持った工作機械で説明したが、Ａ，Ｃ軸以外の軸構成や、テーブル回転用に２軸を持った工作機械にも同様に適用できるものである。また、図１９に示すようにテーブル回転軸Ｃのみで、工具ヘッド回転用軸Ａを持たない工作機械にも本発明は適用できるものである。この場合、Ａ軸についての指令値、現在値等全て「０」または固定値を入れればよいものである。  
さらに、本発明は、旋盤において５軸加工を実現することも可能である。例えば、図２０に示すように、ワーク３をＣ軸で回転させ、工具２をＢ軸で回転するようにした旋盤においても、本発明は適用できるものである。
図２０に示す旋盤による５軸加工の加工機は、ワーク３をワーク把持台４上に治具によって固定し、工具２を直交する直線移動軸によりＸ，Ｙ，Ｚ軸方向に駆動すると共に、Ｂ軸によりＹ軸周りに回転するように構成している。この図２０に示す旋盤による加工機は、上述した図１に示す５軸加工機における工具ヘッド回転用のＡ軸の代わりに工具２を回転させるＢ軸を用いるだけで、他は実質的に差異はないものであり、Ａ軸の代わりにＢ軸を用いることによって、本発明を適用できるものである。
【００６３】
また、工具先端点Ｔｐは、工具２上に指定される位置であり、上述した説明では、工具先端点Ｔｐは工具の頂点であるとして説明したが、工具先端点Ｔｐは、図１２〜図１６に示すように、工具２上の各種位置を工具先端点Ｔｐとして設定するものである。
【００６４】
図１２は、工具先端点Ｔｐが工具先端にある場合を示す図であり、図１３は工具先端点Ｔｐがボールエンドミル工具の先端における半球の中心にある場合、図１４は工具先端点Ｔｐがボールエンドミル工具の先端における半球上の切削点である場合、図１５は工具先端点Ｔｐがフラットエンドミル工具の先端面の中心である場合、図１６は工具先端点Ｔｐがフラットエンドミル工具の先端面の切削点である場合を示す図である。
【００６５】
【発明の効果】
本発明は、少なくともテーブル回転用に１軸を有し、さらには、テーブル回転用に１軸と工具ヘッド回転用に１軸、または、テーブル回転用に２軸持った工作機械の数値制御装置であり、これらの回転軸が回転しながら工具先端点が所期の経路を所期の速度で移動する加工を行うとき、プログラムを容易に作成でき、プログラム長が短くなり、工具長を変更した場合ＣＡＭからプログラムを作成し直す必要がなく加工サイクルタイムを短縮できるものである。
【図面の簡単な説明】
【図１】テーブル回転用に１軸と工具ヘッド回転用に１軸を有する５軸加工機の説明図である。
【図２】テーブルがＸ軸回りの回転軸Ａ、Ｚ軸回りの回転軸Ｃにより回転制御され５軸加工機の説明図である。
【図３】テーブルの回転用に１軸（Ｃ軸）、工具のヘッド回転用に１軸（Ａ軸）を持った工作機械の要部説明図である。
【図４】テーブルを回転させ工具の傾き角度を変化させながらテーブル上のワークに直線を切削加工する場合の従来例の説明図である。
【図５】従来例による直線加工の動作説明図である。
【図６】テーブル回転用に１軸(Ｃ)と工具ヘッド回転用に１軸(Ａ)持った工作機械を本発明の一実施形態の数値制御装置により制御して加工するときの原理説明図である。
【図７】同実施形態による、別な加工方法の原理説明図である。
【図８】本発明の一実施形態のブロック図である。
【図９】同実施形態による直線切削加工の説明図である。
【図１０】同実施形態による直線加工の動作説明図である。
【図１１】同実施形態の動作フローチャートである。
【図１２】工具先端点が工具先端にある場合を示す図である。
【図１３】工具先端点がボールエンドミル工具の先端における半球の中心にある場合の説明図である。
【図１４】工具先端点がボールエンドミル工具の先端における半球上の切削点である場合の説明図である。
【図１５】工具先端点がフラットエンドミル工具の先端面の中心である場合の説明図である。
【図１６】工具先端点がフラットエンドミル工具の先端面の切削点である場合の説明図である。
【図１７】工具先端点がボールエンドミル工具の先端面の切削点である場合で、方向ベクトルでシフト量を指定するときの説明図である。
【図１８】工具先端点がフラットエンドミル工具の先端面の切削点である場合で、方向ベクトルでシフト量を指定するときの説明図である。
【図１９】本発明が適用可能なテーブル回転軸のみで、工具ヘッド回転用の軸を持たない工作機械の例を示す図である。
【図２０】  本発明が適用される旋盤による５軸加工機の説明図である。
【符号の説明】
１  テーブル
２  工具
３  ワーク
４  ワーク把持台
１００  数値制御装置
Ｐ  制御点
ＣＯ  回転中心
ＣＳ  Ｃ軸基準位置
【図１】
0003643098.tif 000002
【図２】
0003643098.tif 000003
【図３】
0003643098.tif 000004
【図４】
0003643098.tif 000005
【図５】
0003643098.tif 000006
【図６】
0003643098.tif 000007
【図７】
0003643098.tif 000008
【図８】
0003643098.tif 000009
【図９】
0003643098.tif 000010
【図１０】
0003643098.tif 000011
【図１１】
0003643098.tif 000012
【図１２】
0003643098.tif 000013
【図１３】
0003643098.tif 000014
【図１４】
0003643098.tif 000015
【図１５】
0003643098.tif 000016
【図１６】
0003643098.tif 000017
【図１７】
0003643098.tif 000018
【図１８】
0003643098.tif 000019
【図１９】
0003643098.tif 000020
【図２０】
0003643098.tif 000021