(57)【特許請求の範囲】
【請求項１】
少なくとも直線２軸を含む複数の駆動軸を有する工作機械に対して加工プログラムから得られる指令点列にもとづいて加工用の曲線である加工曲線を作成し該加工曲線を補間し補間した位置に前記駆動軸を駆動することによって加工を行う数値制御装置において、
前記指令点列を複数の区分に分割し、該区分ごとの区分指令点列に対応する曲線である区分曲線の作成において、前記区分指令点列と前記区分曲線との距離が予め設定された許容値内である範囲内で、かつ前記区分指令点列の始点である区分始点と前記区分指令点列の終点である区分終点との間にできるだけ多くの指令点を含むように前記区分曲線を作成する区分曲線作成部と、
前記区分曲線作成部の処理を前記指令点列の始点から終点まで繰り返し実行して前記加工曲線を作成する加工曲線作成部を有し、
前記加工曲線を補間し補間した位置に移動するよう前記駆動軸を駆動することを特徴とする加工曲線作成機能を有する数値制御装置。
【請求項２】
前記区分曲線作成部は、前記指令点列の始点から始まる区分内における前記指令点列である区分指令点列に対して、該区分指令点列の終点を区分終点とし、前記始点、前記始点に対する条件である始点条件、前記区分終点および前記区分終点後の所定点数だけの指令点列にもとづいて前記始点および前記区分終点での前記加工曲線の１次微分ベクトルとして区分始点ベクトルおよび区分終点ベクトルを求め、前記始点、前記区分始点ベクトル、前記区分終点および前記区分終点ベクトルから前記区分曲線を作成するとともに、前記区分指令点列からの距離が予め設定された許容値内でありかつ前記始点と前記区分終点との間にできるだけ多くの指令点列を含むように第１区分曲線を作成し、
該第１区分曲線作成後、前記指令点列のうち前記区分終点以降の区分内における区分指令点列に対して、当該区分の前の区分終点を新たな区分始点、当該区分の前の区分終点ベクトルを新たな区分始点ベクトル、該区分指令点列の終点を新たな区分終点とし、前記新たな区分始点、前記新たな区分始点ベクトル、前記新たな区分終点および前記新たな区分終点後の所定点数だけの指令点列にもとづいて前記区分終点での前記加工曲線の１次微分ベクトルとして新たな区分終点ベクトルを求め、前記新たな区分始点、前記新たな区分始点ベクトル、前記新たな区分終点、前記新たな区分終点ベクトルから前記区分曲線を作成するとともに、前記区分指令点列からの距離が予め設定された許容値内でありかつ前記区分始点と前記区分終点との間にできるだけ多くの指令点を含むように前記区分曲線を作成することを特徴とする請求項１に記載の加工曲線作成機能を有する数値制御装置。
【請求項３】
前記始点条件は、前記指令点列のうち始点、第２点および第３点を円弧で接続した時の始点での接線方向を前記加工曲線の１次微分ベクトルとする、前記指令点列のうち始点、第２点および第３点を２次曲線で接続した時の始点での接線方向を前記加工曲線の１次微分ベクトルとする、または前記指令点列のうち始点および第２点を直線で接続した時の始点での接線方向を前記加工曲線の１次微分ベクトルとすることを特徴とする請求項１乃至請求項２の何れか一つに記載の加工曲線作成機能を有する数値制御装置。
【請求項４】
前記始点条件は、前記指令点列のうち始点での前記加工曲線の２次微分ベクトルを０とすることを特徴とする請求項１乃至請求項２の何れか一つに記載の加工曲線作成機能を有する数値制御装置。
【請求項５】
前記区分始点と前記区分終点との間にできるだけ多くの指令点を含むとは、スキップ数ｎｓを増加または減少しながら
【数１３】
0005326015.tif 000029
が全て成立する最も大きなｎｓを特定することを特徴とする請求項１乃至請求項４の何れか１つに記載の加工曲線作成機能を有する数値制御装置。
【請求項６】
前記指令点列は加工プログラムにおいて指令される指令点の点列である、または前記指令点列は加工プログラムにおいて指令される指令点の点列に対して平滑化を行った点列であることを特徴とする請求項１乃至請求項５の何れか１つに記載の加工曲線作成機能を有する数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、少なくとも直線２軸を含む複数の駆動軸を有する工作機械に対して加工プログラムから得られる指令点列にもとづいて加工用の曲線である加工曲線を作成し該加工曲線を補間し補間した位置に前記駆動軸を駆動することによって加工を行う数値制御装置に関する。
【背景技術】
【０００２】
従来から、工作機械を制御する数値制御装置において、与えられた点列から曲線や直線を作成し補間する方法が知られている。  
＜１＞曲線作成  
１−１．指令点列の始点における始点条件、終点における終点条件が指定される場合のスプライン曲線  
一般に、図１のように点列Ｐ0、Ｐ1、Ｐ2、、、Ｐnとそれらの点列の始点における始点条件として１次微分ベクトルＰ0’ 、終点における終点条件としてＰn’が与えられた時、各点での１次微分ベクトルと２次微分ベクトルが連続となるような各点間の３次曲線を表す３次関数は次のようにして求められる。
【０００３】
各点における１次微分ベクトル（Ｐ0’，Ｐ1’，Ｐ2’，，，Ｐn’）Tに対して数１式が成り立つ。「T」は転置を表すが、以降自明の場合省略する。ここで、ｔ1、ｔ2、、、ｔnは、作成される３次関数におけるパラメータ（３次関数の媒介変数ｔ）について各Ｐ0、Ｐ1、Ｐ2、、、Ｐn間でのパラメータ値の差である。一般には作成される３次関数における各Ｐ0、Ｐ1、Ｐ2、、、Ｐn間の距離（曲線長さ）で表される。ただし、Ｐ0’、Ｐ1’、Ｐ2’、、、Ｐn’が求まらないと３次関数は求まらず、３次関数が求まらなければ３次関数の曲線における各Ｐ0、Ｐ1、Ｐ2、、、Ｐn間の距離（曲線長さ）も求まらない。そのため、各Ｐ0、Ｐ1、Ｐ2、、、Ｐn間の距離（曲線長さ）は各Ｐ0、Ｐ1、Ｐ2、、、Ｐn間の直線距離で近似することが多い。例えば、Ｐ0Ｐ1間の直線距離をｔ1とし、Ｐ1Ｐ2間の直線距離をｔ2とし、、、Ｐn-1Ｐn間の直線距離をｔnとする。なお、１次微分ベクトル、２次微分ベクトルとは、後述の説明も含めて、３次関数のパラメータｔによる１階微分、２階微分の各点（各点でのパラメータｔの値）での値である。
【０００４】
ここで、Ｐ0、Ｐ1、Ｐ2、、、ＰnやＰ0’、Ｐ1’、Ｐ2’、、、Ｐn’は、少なくとも直線軸２軸の軸数分の要素を持ったベクトルである。機械構成に応じて、直線軸２軸以外にも３軸目、４軸目、、、の直線軸の要素や回転軸の要素を持っていてもよい。
【０００５】
【数１】
0005326015.tif 000002
【０００６】
したがって、数１式においてＰ0’、Ｐn’、Ｐ0、Ｐ1、Ｐ2、、、Ｐnは与えられ、ｔ1、ｔ2、、、ｔnはＰ0、Ｐ1、Ｐ2、、、Ｐnから求まるので、Ｐ’＝（Ｐ0’，Ｐ1’，Ｐ2’，，，Ｐn’）Tを求めることができる。つまり、数１式を数２式のように表すと、Ｐ’は数３式のように求められる。
【０００７】
【数２】
0005326015.tif 000003
【０００８】
【数３】
0005326015.tif 000004
【０００９】
Ｐ’が求められれば、Ｐ0、Ｐ1、Ｐ2、、、Ｐnとから、各点間の３次曲線の関数を求めることができる。つまり、Ｐi、Ｐi+1、Ｐi’、Ｐi+1’から、数４式のように表されるＰi、Ｐi+1間の３次曲線の関数ｆi（ｔ）（ｉ＝０，１，２，，，ｎ−１；０≦ｔ≦ｔi+1）を求めることができる。したがって、指令点列位置（Ｐ0、Ｐ1、Ｐ2、、、Ｐn）、始点条件（ここではＰ0’）、終点条件（ここではＰn’）から、各点において１次微分、２次微分が連続である各点間の３次曲線の関数を求めることができる。ここで、Ａｆi，Ｂｆi，Ｃｆi，Ｄｆiは関数ｆi（ｔ）の係数であり、それらの係数および関数ｆi（ｔ）は、Ｐ0、Ｐ1、Ｐ2、、、Ｐnと同様、軸数分の要素を持ったベクトルである。
【００１０】
【数４】
0005326015.tif 000005
【００１１】
ｆi（ｔ）の求め方は次のようになる。ｆi（ｔ）を数４式のように表した場合、ｆi’（ｔ）は数５式のようになるので、数６式が成り立ち、数６式を解くことによってＡｆi，Ｂｆi，Ｃｆi，Ｄｆiを求めれば関数ｆi（ｔ）を求めることができる。
【００１２】
【数５】
0005326015.tif 000006
【００１３】
【数６】
0005326015.tif 000007
【００１４】
このようにして求められる３次曲線群をスプライン曲線と言う。スプライン曲線は各点での１次微分ベクトルと２次微分ベクトルが連続なので、滑らかな加工形状と各駆動軸の加速度が連続である滑らかな動作が得られる。  
しかし、この方法は、指令点列位置（Ｐ0、Ｐ1、Ｐ2、、、Ｐn）を全て読み込み計算を行う必要があり、その指令点列を構成する点の数が多くなると、マトリックス計算が膨大になり多くのメモリ領域と計算時間を必要とする。
【００１５】
なお、ここではＰ0’、Ｐn’が指定されることを条件としたが、次のような条件としても数１式とほぼ同様の式が導かれることが知られている。このような、Ｐ0における条件を始点条件、Ｐnにおける条件を終点条件と言う。  
Ｐ0、Ｐnでの２次微分ベクトルが０、つまりＰ0’’＝０、Ｐn’’＝０である。  
Ｐ0’が指定され、Ｐn’’＝０である。  
Ｐ0’’＝０としＰn’が指定される。  
したがって、そのような条件の場合でもほぼ同様に、Ｐi、Ｐi+1間の３次曲線の関数ｆi（ｔ）（ｉ＝０，１，２，，，ｎ−１；０≦ｔ≦ｔi+1）を求めることができる。
【００１６】
１−２．指令点列を構成する点間を順次結ぶ３次関数の曲線を作成
特許文献１に開示される方式は、「始点を含む所定数の点から、一次微分ベクトルを求め、前記始点を含む所定の点の座標値、始点の端点条件及び前記一次微分ベクトルから前記始点と次の点間の３次式を求めて、前記始点と前記始点に続く点間のスプライン曲線を求め、前記始点の代わりに新しい次の点を加えて、順次点間の３次式を求めて」（請求項１）行く方式である。この方式により、指令点列を構成するすべての点を読み込むことなく３次スプライン曲線を作成する。この方式は、指令点列を構成する点を順次読み込みながら１−１．で述べた理論的なスプライン曲線との誤差が拡大することなく実用上問題のないスプライン曲線を得る点で優れているが、次の問題点もある。  
（ａ）指令点列を構成する点を読み込みながら順次点間に３次スプライン曲線を作成するため、点間の間隔が微小であると、数値制御装置の３次スプライン曲線を作成し補間する能力が不足し、減速してしまうことがある。
（ｂ）指令点列の位置に目標曲線に対する誤差によるばらつきがあると作成される曲線もばらついてしまう。（図２参照）
【００１７】
＜２＞間引き  
特許文献２には、指令点列に対して直線近似し、近似したところに対応する点は間引く方法が開示されている。この方法は、直線で近似するため、滑らかな形状にならない問題がある。  
＜３＞指令点位置の修正
特許文献３には、指令点がスムーズに並ぶように許容値の範囲内で指令点位置を修正する方法が開示されている。この方法は、指令点間の間隔が微小である点列が指令されると、処理能力が不足し、減速することがある。指令点位置を修正する方法は、前後数点（例えば５点）から近似用曲線を作成しその曲線に向かって指令点位置を修正するので、図３のようにその近似曲線作成対象の指令点列の位置が目標曲線に対して同じような誤差を持っていると誤差の影響を受けて目標曲線に近づく修正がなされない。図３では、作成される各曲線の矢印先端が指令点列に対して修正した位置である。
【先行技術文献】
【特許文献】
【００１８】
【特許文献１】特開平２−１１３３０５号公報
【特許文献２】特許第３４５９１５５号公報
【特許文献３】特許第３６４０７５４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１９】
そこで、本発明は、できるだけ多くの指令点に対応した１個の３次曲線（区分曲線）を作成し、それらの３次曲線（区分曲線）を複数個接続して加工用の曲線である加工曲線を作成し、その加工曲線を補間し補間した位置に前記駆動軸を駆動することによって加工を行なうことが可能な加工曲線作成機能を有する数値制御装置を提供することを課題とする。  
【課題を解決するための手段】
【００２０】
本発明は、できるだけ多くの指令点に対応した１個の３次曲線（区分曲線）を作成し、複数のそれらの３次曲線（区分曲線）を接続して加工用の曲線である加工曲線を作成し、その加工曲線を補間し補間した位置に前記駆動軸を駆動することによって加工を行なうことが可能な加工曲線作成機能を有する数値制御装置であり、該数値制御装置において、各３次曲線（区分曲線）間は、各３次曲線（区分曲線）を表す３次関数の２次微分ベクトルが連続するように接続され、そのようにして作成した３次曲線群（スプライン曲線）として加工曲線が作成され、そのような加工曲線の作成が指令点列を構成する点を全て読み込むことなく行われる。（図４参照）なお、ここの連続性は理論上の連続性ではなく実用上の連続性である。
【００２１】
そして、本願の請求項１に係る発明は、少なくとも直線２軸を含む複数の駆動軸を有する工作機械に対して加工プログラムから得られる指令点列にもとづいて加工用の曲線である加工曲線を作成し該加工曲線を補間し補間した位置に前記駆動軸を駆動することによって加工を行う数値制御装置において、前記指令点列を複数の区分に分割し、該区分ごとの区分指令点列に対応する曲線である区分曲線の作成において、前記区分指令点列と前記区分曲線との距離が予め設定された許容値内である範囲内で、かつ前記区分指令点列の始点である区分始点と前記区分指令点列の終点である区分終点との間にできるだけ多くの指令点を含むように前記区分曲線を作成する区分曲線作成部と、前記区分曲線作成部の処理を前記指令点列の始点から終点まで繰り返し実行して前記加工曲線を作成する加工曲線作成部を有し、前記加工曲線を補間し補間した位置に移動するよう前記駆動軸を駆動することを特徴とする加工曲線作成機能を有する数値制御装置である。
請求項２に係る発明は、前記区分曲線作成部は、前記指令点列の始点から始まる区分内における前記指令点列である区分指令点列に対して、該区分指令点列の終点を区分終点とし、前記始点、前記始点に対する条件である始点条件、前記区分終点および前記区分終点後の所定点数だけの指令点列にもとづいて前記始点および前記区分終点での前記加工曲線の１次微分ベクトルとして区分始点ベクトルおよび区分終点ベクトルを求め、前記始点、前記区分始点ベクトル、前記区分終点および前記区分終点ベクトルから前記区分曲線を作成するとともに、前記区分指令点列からの距離が予め設定された許容値内でありかつ前記始点と前記区分終点との間にできるだけ多くの指令点を含むように第１区分曲線を作成し、該第１区分曲線作成後、前記指令点列のうち前記区分終点以降の区分内における区分指令点列に対して、当該区分の前の区分終点を新たな区分始点、当該区分の前の区分終点ベクトルを新たな区分始点ベクトル、該区分指令点列の終点を新たな区分終点とし、前記新たな区分始点、前記新たな区分始点ベクトル、前記新たな区分終点および前記新たな区分終点後の所定点数だけの指令点列にもとづいて前記区分終点での前記加工曲線の１次微分ベクトルとして新たな区分終点ベクトルを求め、前記新たな区分始点、前記新たな区分始点ベクトル、前記新たな区分終点、前記新たな区分終点ベクトルから前記区分曲線を作成するとともに、前記区分指令点列からの距離が予め設定された許容値内でありかつ前記区分始点と前記区分終点との間にできるだけ多くの指令点を含むように前記区分曲線を作成することを特徴とする請求項１に記載の加工曲線作成機能を有する数値制御装置である。
【００２２】
請求項３に係る発明は、前記始点条件は、前記指令点列のうち始点、第２点および第３点を円弧で接続した時の始点での接線方向を前記加工曲線の１次微分ベクトルとする、前記指令点列のうち始点、第２点および第３点を２次曲線で接続した時の始点での接線方向を前記加工曲線の１次微分ベクトルとする、または前記指令点列のうち始点および第２点を直線で接続した時の始点での接線方向を前記加工曲線の１次微分ベクトルとすることを特徴とする請求項１乃至請求項２の何れか一つに記載の加工曲線作成機能を有する数値制御装置である。  
請求項４に係る発明は、前記始点条件は、前記指令点列のうち始点での前記加工曲線の２次微分ベクトルを０とすることを特徴とする請求項１乃至請求項２の何れか一つに記載の加工曲線作成機能を有する数値制御装置である。  
請求項５に係る発明は、前記区分始点と前記区分終点との間にできるだけ多くの指令点を含むとは、スキップ数ｎｓを増加または減少しながら後述する数１３式が全て成立する最も大きなｎｓを特定することを特徴とする請求項１乃至請求項４の何れか１つに記載の加工曲線作成機能を有する数値制御装置である。  
請求項６に係る発明は、前記指令点列は加工プログラムにおいて指令される指令点の点列である、または前記指令点列は加工プログラムにおいて指令される指令点の点列に対して平滑化を行った点列であることを特徴とする請求項１乃至請求項５の何れか１つに記載の加工曲線作成機能を有する数値制御装置である。
【発明の効果】
【００２３】
本発明により、できるだけ多くの指令点に対応した１個の３次曲線（区分曲線）を作成し、それらの３次曲線（区分曲線）を複数個接続して加工用の曲線である加工曲線を作成し、その加工曲線を補間し補間した位置に前記駆動軸を駆動することによって加工を行なうことが可能な加工曲線作成機能を有する数値制御装置を提供できる。
【図面の簡単な説明】
【００２４】
【図１】従来技術における、指令点列と曲線作成の一例を説明する図である。
【図２】従来技術において、指令点列の位置に目標曲線に対する誤差によるばらつきがあると作成される曲線もばらついてしまうことを説明する図である。
【図３】従来技術において、指令点列の位置が目標曲線に対する誤差を持っていると目標曲線に近づく修正がされないことを説明する図である。
【図４】本発明に係る加工曲線の作成方法を説明する図である。
【図５】３次曲線である区分曲線用の３次関数を作成する方法を説明する図である。
【図６】３次曲線である区分曲線用の３次関数を作成する方法を説明する図である。
【図７】３次曲線である区分曲線用の３次関数を作成する方法を説明する図である。
【図８】加工プログラムの指令例を説明する図である。
【図９】加工曲線作成部の処理を説明するフローチャートである。
【図１０】区分曲線作成部の処理を説明するフローチャートである。
【図１１】関数ｇk（ｔ）を作成する処理を説明するフローチャートである。
【図１２】終了判別の処理を説明するフローチャートである。
【図１３】Ｐs(k)+ns+1が終点Ｐnでありそれを越えて指令点列は用意されていない場合を説明する図である。
【図１４】Ｐs(k)+ns+2が終点Ｐnでありそれを越えて指令点列は用意されていない場合を説明する図である。
【図１５】終点Ｐn直前における関数ｇk（ｔ）を作成する処理を説明する図である。
【図１６】平滑化の方法を説明する図である。
【図１７】本発明に係る加工曲線作成機能を有する数値制御装置のブロック図である。
【発明を実施するための形態】
【００２５】
以下、本発明の実施形態を図面と共に説明する。  
本発明においては、できるだけ多くの指令点を含む点列に対応した１個の３次曲線（区分曲線）を作成する。複数のそれらの３次曲線を接続して加工用の曲線である加工曲線を作成しその加工曲線を補間し補間した位置に前記駆動軸を駆動することによって加工を行なう。各３次曲線間は、各３次曲線を表す３次関数の２次微分ベクトルが連続するように接続させる。なお、ここの連続性は理論上の連続性ではなく実用上の連続性である。そのようにして作成した３次曲線群（スプライン曲線）として加工曲線を作成する。そのような加工曲線の作成を、指令点列を構成する点を全て読み込むことなく順次行っていく。（図４）
【００２６】
そのことによって、次の詳細課題を達成することができる。  
（１）できるだけ多くの指令点に対応した３次曲線（区分曲線）を作成することによって、指令点間の間隔が微小であっても、数値制御装置の加工曲線を作成し補間する能力が不足することによって減速してしまうことがないようにする。  
（２）指令点列が目標曲線に対して誤差によるばらつきを持っていてもより目標曲線に近い加工曲線を作成する。  
（３）この加工曲線は、指令点列を構成する各点において１次微分ベクトルは連続でありかつ２次微分ベクトルも実用上連続とする。また、この加工曲線は、指令点列からの誤差は許容値内とする。そのことによって、指令点列からの誤差が許容値内でありかつ滑らかな加工形状、および各駆動軸の加速度が連続である滑らかな加工動作を得る。  
（４）指令点列を構成する点の全て読み込むことなく指令点列を作成していくことによって、加工曲線の作成を多くのメモリや計算時間を必要とすることなく実現する。
【００２７】
なお、図４において、破線の目標曲線に対して誤差を持った黒丸の指令点の列が指令されており、本願技術によってその指令点列のある区分における３次曲線である区分曲線（矢付実線）が作成されていくことを示す。３次曲線（区分曲線）を表す関数が３次関数であり、区分曲線を接続した曲線が加工用の曲線である加工曲線である。また、指令点列と加工曲線との間の距離が許容値内であることを示す。
【００２８】
以下、本発明の第１の実施形態を説明する。
＜概要＞
本発明の重要部である区分曲線作成部の処理の概要について説明する。つまり、Ｐ0が始点、Ｐnが終点である指令点列Ｐ0，Ｐ1，Ｐ2，，，Ｐnの中のある点Ｐs(k)とその点における１次微分ベクトルＰs(k)’がすでに求められている場合、Ｐs(k)を始点とする３次曲線である区分曲線用の３次関数を作成する方法の概要について説明する。指令点列Ｐ0，Ｐ1，Ｐ2，，，Ｐnの添え字は指令点の番号である。
【００２９】
ｋは作成する区分曲線の番号を示す。Ｐ0から始まる第１区分曲線ではｋ＝０、その次の区分曲線はｋ＝１というように区分曲線ごとに１ずつ増加する。ｓ（ｋ）は第（ｋ＋１）区分曲線の開始点である区分始点の指令点の番号である。ｅ（ｋ）は第（ｋ＋１）区分曲線の終了点である区分終点の指令点の番号である。つまり、第（ｋ＋１）区分曲線は、指令点Ｐs(k)が区分始点であり指令点Ｐe(k)が区分終点である３次曲線である。
【００３０】
［１］（Ｐs(k)以降スキップする指令点の数＋１）をｎｓ（スキップ数）とする。その初期値ｎｓｉ（初期スキップ数）は与えられているとする。ここで、指令点をスキップするとは、区分曲線作成においてその指令点を使用しないということである。  
［２］Ｐs(k)+ns以降の点列で３次曲線作成に使用する点数を指定する所定点数をｎｃとする。Ｐs(k)、Ｐs(k)+ns〜Ｐs(k)+ns+ncの点列とＰs(k)’から、Ｐs(k)+nsにおいて前後の３次関数の２次微分ベクトルが実用上連続するようなＰs(k)+nsでの１次微分ベクトルＰs(k)+ns’を求める。ただし、ここでは簡単のためｎｃ＝３とする。一般にｎｃを大きくするほど区分終点と区分始点での前後の３次曲線の２次微分ベクトルの連続性は良くなる。
【００３１】
Ｐs(k)は区分始点の位置、Ｐs(k)+nsは区分終点の位置、Ｐs(k)’は区分始点ベクトル（区分始点での区分曲線の１次微分ベクトル）、Ｐs(k)+ns’は区分終点ベクトル（区分終点での区分曲線の１次微分ベクトル）である。以降、Ｐx（ｘ＝０，１，，，ｎ；ｓ（ｋ），ｓ（ｋ）＋ｎｓなど）は点を指すとともにその位置も表す。
【００３２】
［３］図５のようにＰs(k)、Ｐs(k)+ns〜Ｐs(k)+ns+3の点列とＰs(k)’を表す。図５（後出の、図６、図７でも同様）では、Ｐs(k)、Ｐs(k)+ns〜Ｐs(k)+ns+3を大きい黒丸で、スキップする（Ｐs(k)+ns’を求めるにあたり使用しない）Ｐs(k)+1〜Ｐs(k)+ns-1を白抜き丸で表している。Ｐs(k)+ns+3での１次微分ベクトルＰs(k)+ns+3’を求める。例えば、Ｐs(k)+ns+1、Ｐs(k)+ns+2、Ｐs(k)+ns+3の３点を通る円弧あるいは２次曲線（放物線）を作成しそのＰs(k)+ns+3における接線方向をＰs(k)+ns+3’とする、あるいはＰs(k)+ns+2、Ｐs(k)+ns+3の２点を通る直線の接線方向をＰs(k)+ns+3’とする。
【００３３】
なお、ここではＰs(k)+ns+3での１次微分ベクトルＰs(k)+ns+3’を使用するが、従来技術１−１．で記載したように、他の条件（２次微分ベクトルＰs(k)+ns+3’’＝０）とすることもできる。（第２実施形態の中で述べる。）  
［４］Ｐs(k)、Ｐs(k)+ns、Ｐs(k)+ns+1、Ｐs(k)+ns+2、Ｐs(k)+ns+3、Ｐs(k)’、Ｐs(k)+ns’、Ｐs(k)+ns+1’、Ｐs(k)+ns+2’、Ｐs(k)+ns+3’に対して数１式を適用することにより数７式を作成し、それに対して数３式に対応する数８−１式によりＰs(k)+ns’を求めることができる。
【００３４】
【数７】
0005326015.tif 000008
【００３５】
【数８−１】
0005326015.tif 000009
【００３６】
ここで、ｔ1〜ｔ4は数８−２式のとおりである。
【００３７】
【数８−２】
0005326015.tif 000010
【００３８】
なお、数８−１式右辺の逆マトリックス全体を求める必要はない。数８−１式右辺の逆マトリックスの第２行を求めれば数８−１式によってＰs(k)+ns’を求めることができる。
【００３９】
［５］数４式、数５式、数６式と同様に、Ｐs(k)、Ｐs(k)+ns、Ｐs(k)’ 、Ｐs(k)+ns’から数９式のようにＰs(k)、Ｐs(k)+ns間の３次曲線を表す関数ｇk（ｔ）（０≦ｔ≦ｔk）を求める。Ａｇk、Ｂｇk、Ｃｇk、Ｄｇkは駆動軸分のベクトルであり関数の係数である。ｔkはＰs(k) Ｐs(k)+ns間長さであり、数８−２式のｔ1に相当する。
【００４０】
【数９】
0005326015.tif 000011
【００４１】
４個の係数Ａｇk、Ｂｇk、Ｃｇk、Ｄｇkは、数５式，数６式での説明と同様に４個の条件Ｐs(k)、Ｐs(k)+ns、Ｐs(k)’ 、Ｐs(k)+ns’から求めることができる。つまり、ｇk（ｔ）を数９式のように表した場合、ｇk’（ｔ）は数１０式のようになるので、数１１式が成り立ち、数１１式を解くことによってＡｇk，Ｂｇk，Ｃｇk，Ｄｇkを求めれば関数ｇk（ｔ）を求めることができる。
【００４２】
【数１０】
0005326015.tif 000012
【００４３】
【数１１】
0005326015.tif 000013
【００４４】
［６］ｇk（ｔ）における、Ｐs(k)+1、Ｐs(k)+2、、、Ｐs(k)+ns-1に対応する点としてＱ1、Ｑ2、、、Ｑns-1を数１２式のように求める。つまり、Ｐs(k)+1、Ｐs(k)+2、、、Ｐs(k)+ns-1に対応するｔとしてそれらの点間の距離を加算し、ｇk（ｔ）のｔに代入して求める。
【００４５】
【数１２】
0005326015.tif 000014
【００４６】
［７］それらの点と対応するＰs(k)+1、Ｐs(k)+2、、、Ｐs(k)+ns-1との間の距離を求め、数１３式のようにそれらの距離全てに対して予め設定されている許容値Ｔｏｌ以下かどうか比較する。なお、ここではＰs(k)+1、Ｐs(k)+2、、、Ｐs(k)+ns-1に対応する点Ｑ1、Ｑ2、、、Ｑns-1を数１２式で求め、求めた点とＰs(k)+1、Ｐs(k)+2、、、Ｐs(k)+ns-1との間の距離を求め許容値Ｔｏｌ以下かどうか比較しているが、さらにＰs(k)、Ｐs(k)+1、Ｐs(k)+2、、、Ｐs(k)+ns-1、Ｐs(k)+nsの間の中途点（例えば中点）に対応する点を数１２式と同様に求め、それらの点とＰs(k)、Ｐs(k)+1、Ｐs(k)+2、、、Ｐs(k)+ns-1、Ｐs(k)+ns間の中途点（中点）との間の距離を求め許容値Ｔｏｌ以下かどうか比較してもよい。
【００４７】
【数１３】
0005326015.tif 000015
【００４８】
［８］数１３式の全てが成立すれば（許容値内）、ｎｓ＝ｎｓ＋１とし、つまりＰs(k)+nsを１個後の点とし、［３］〜［７］を繰り返す。（図６参照）  数１３式のうちの１つでも成立しなくなれば、数１３式の全てが成立していた最後のｇk（ｔ）が求めるＰs(k)〜Ｐe(k)間の区分曲線用の３次関数ｆk（ｔ）である。つまり、ｆk（ｔ）＝ｇk（ｔ）とする。この時（通常は）ｅ（ｋ）＝ｓ（ｋ）＋ｎｓ−１である。ｆk（ｔ）＝ｇk（ｔ）とするとは、数１４式のようにｆk（ｔ）の関数形を求めることである。Ａｆk、Ｂｆk、Ｃｆk、Ｄｆkは駆動軸分のベクトルであり関数の係数である。この時ｆk（ｔ）のｔの範囲（０≦ｔ≦ｔk）も確定する。（後述においても同様）
なお、このｆk（ｔ）は従来技術１−１．で記載したｆi（ｔ）とは相違する。
【００４９】
【数１４】
0005326015.tif 000016
【００５０】
［９］数１３式のうち１つでも成立しなければ（許容値外）、ｎｓ＝ｎｓ−１とし、つまりＰs(k)+nsを１個前の点とし、［３］〜［７］を繰り返す。（図７参照）  数１３式の全てが成立するようになればその時のｇk（ｔ）が求めるＰs(k)〜Ｐe(k)間の区分曲線用の３次関数ｆk（ｔ）である。つまり、ｆk（ｔ）＝ｇk（ｔ）とする。この時ｅ（ｋ）＝ｓ（ｋ）＋ｎｓである。ただし、ｎｓ＝ｎｓ−１とした時ｎｓ＝１となれば、それより前のｎｓは存在しないのでＰs(k)、Ｐs(k)+1、Ｐs(k)’ 、Ｐs(k)+1’から数９式、数１０式および数１１式で求めるｇk（ｔ）が求めるＰs(k)〜Ｐs(k)+1間（つまりＰs(k)〜Ｐe(k)間）の区分曲線用の３次関数ｆk（ｔ）である。この時ｅ（ｋ）＝ｓ（ｋ）＋１である。
【００５１】
ここで、［８］または［９］のように、初期スキップ数ｎｓｉを最初のｎｓとし、ｎｓ＝ｎｓ＋１またはｎｓ＝ｎｓ−１と変更しながら、つまりｎｓを増加または減少しながら数１３式が全て成立する最も大きなｎｓを特定して３次関数ｆk（ｔ）を求めることが、区分指令点列からの距離が予め設定された許容値内であり、かつ区分指令点列の始点である区分始点と区分指令点列の終点である区分終点との間にできるだけ多くの指令点を含むように区分曲線を作成することである。  
なお、ここではｎｓｉを最初のｎｓとし、ｎｓ＝ｎｓ＋１またはｎｓ＝ｎｓ−１と変更しながら適切なｎｓを求めているが、ｎｓ＝ｎｓ＋１またはｎｓ＝ｎｓ−１の代わりに２分法で大きくｎｓを変更しながら適切なｎｓを求めて区分曲線を求めることも可能である。例えば、ｎｓ＝ｎｓ＋１の代わりにｎｓ＝２＊ｎｓ、ｎｓ＝ｎｓ−１の代わりにｎｓ＝ＩＮＴ（ｎｓ／２）とする。ここでＩＮＴは整数化の意味である。あるいは、ｎｓｉ＝１としｎｓ＝ｎｓ＋１としながら１から順にｎｓを変更しながら適切なｎｓを求めてもよい。その他にも適切なｎｓを求める様々な方法がある。それらの方法は従来技術であるので詳述しない。  
なお、ここでは区分曲線を数９式、数１４式で示したような３次多項式による３次曲線としたが、より低次の２次曲線として本願技術を適用することもできるし、４次以上の曲線に対して本願技術を適用することも可能である。また、ＮＵＲＢＳ曲線やベジェ曲線などの他の曲線に対して本願技術を適用することも可能である。
【００５２】
＜加工プログラム＞
加工プログラムの指令例は図８のようになる。「Ｇ０５．１  Ｑ１」が本発明の開始指令であり、その時のＸ，Ｙ，Ｚ軸位置が始点Ｐ0である。他の軸（Ｕ，Ｖ，Ｗ，Ａ，Ｂ，Ｃなど）も駆動軸であればＰ0はそれらの位置も含めた位置であり、Ｘ、Ｙ軸のみが駆動軸であればその時のＸ，Ｙ軸位置がＰ0である。ここでは駆動軸はＸ、Ｙ、Ｚ軸とする。
したがって、以降の点列や曲線は（Ｘ，Ｙ，Ｚ）座標系上で表される。加工プログラムのＮ００２以降のブロックで点列Ｐ1、Ｐ2、、、の位置が指令される。「Ｇ０５．１  Ｑ０」が本発明の終了指令であり、その時のＸ，Ｙ，Ｚ軸指令位置が終点Ｐnである。Ｆは指令速度である。ここでは、加工プログラムにおいて指令される指令点の点列Ｐ0、Ｐ1、Ｐ2、、、Ｐnそのものを本発明における指令点列とする。  
フローチャート（図９〜図１２）にもとづき、指令点列Ｐ0、Ｐ1、Ｐ2、、、Ｐnに対する処理の詳細を説明する。前述の＜概要＞［２］と同様ｎｃ＝３としている。指令点列としては十分多数の点（５点以上）が指令されているとする。
【００５３】
＜加工曲線作成＞
加工曲線作成部の処理（図９）について、詳細に説明する。  
［ＳＡ０１］第１区分曲線を作成するための、始点条件の作成、および初期値設定を行う。始点条件は、ここでは第１区分曲線を表す３次関数の１次微分ベクトルＰ0’とする。
例えば、Ｐ0、Ｐ1、Ｐ2を円弧で接続した時のＰ0での接線方向をＰ0’とする、Ｐ0、Ｐ1、Ｐ2を２次曲線（放物線）で接続した時のＰ0での接線方向をＰ0’とする、またはＰ0、Ｐ1を直線で接続した時のＰ0での接線方向をＰ0’とするなどによって、Ｐ0’を作成する。ここで、Ｐ0は始点、Ｐ1は第２点、Ｐ2は第３点である。ｋ＝０、ｓ（０）＝０、ｎｓｉ＝１とする。ｋ＝０は第１区分曲線を作成する、ｓ（０）＝０は第１区分曲線の始点である区分始点をＰ0とする、ｎｓｉ＝１は初期スキップ数を１とすることである。  
なお、始点条件としては、従来技術１―１．で述べたようにＰ0’’＝０とすることもできる。（第２実施形態で述べる。）
［ＳＡ０２］終了判別（後述）を呼び出し起動し、ＦＥ（終了フラグ）を得る。  
［ＳＡ０３］ＦＥをチェックする。第１区分曲線作成においてはＦＥ＝０となるので、ＳＡ０４の区分曲線作成に進む。ただし、第１区分曲線より後の区分曲線作成後で終了すべき場合はＦＥ＝１となり、終了する。  
［ＳＡ０４］区分曲線作成（後述）によって区分曲線（１回目は第１区分曲線）を作成する。  
［ＳＡ０５］作成した区分曲線を補間用データにセットする。つまり、作成した関数ｆk（ｔ）を補間するためのデータ（Ａｆk、Ｂｆk、Ｃｆk、Ｄｆk、Ｐs(k)、Ｐe(k)、ｔk）を後述する補間用データにセットする。  
［ＳＡ０６］ｉｔｅｍｐ＝ｅ（ｋ）、ｄｔｅｍｐ＝Ｐe(k)’とし、ｋ＝ｋ＋１、ｓ（ｋ）＝ｉｔｅｍｐ、Ｐs(k)’＝ｄｔｅｍｐとする。このことにより、ｋを１増やし、作成した区分曲線（１回目は第１区分曲線）の終点である区分終点の指令点の番号ｅ（ｋ）を次の区分曲線の区分始点の指令点の番号ｓ（ｋ）とし、つまりＰs(k)を新たな区分始点とし、区分終点での１次微分ベクトルを次の区分曲線の区分始点での１次微分ベクトル、つまり新たな区分始点ベクトルとする。そして、ステップＳＡ０２の終了判別に戻る。
【００５４】
＜区分曲線作成＞
区分曲線作成部の処理（図１０、図５、図６、図７）について、詳細に説明する。  
［ＳＢ０１］ｎｓ＝ｎｓｉとする。つまり、スキップ数ｎｓは初期スキップ数ｎｓｉとする。第１区分曲線作成においては、ｎｓｉ＝１として与えられている。第１区分曲線作成後の区分曲線作成においては、前回の区分曲線作成時にｎｓｉは求められている。Ｐs(k)、Ｐs(k)’、Ｐs(k)+ns〜Ｐs(k)+ns+3  を用意する。区分始点の指令点の番号ｓ（ｋ）について、第１区分曲線作成においてはｓ（ｋ）＝０としており、第１区分曲線作成後の区分曲線作成においては、前回の区分曲線作成時に今回のｓ（ｋ）は求められている。したがって、指令点列Ｐs(k)、Ｐs(k)+ns〜Ｐs(k)+ns+3  は用意できる。ただし、終点Ｐnを越えては用意しない。Ｐs(k)’について、第１区分曲線作成においてはＰs(k)’はすでに求められており（＜加工曲線作成＞［ＳＡ０１］参照。）、第１区分曲線後の区分曲線作成においては前回の区分曲線作成時の区分終点ベクトルを今回の区分始点ベクトルＰs(k)’としている。（＜加工曲線作成＞［５］参照。）
［ＳＢ０２］関数ｇk（ｔ）作成（後述）を呼び出し起動する。作成した関数ｇk（ｔ）がＰs(k)+1〜Ｐs(k)+ns-1において予め設定された許容値内かどうかのフラグ（ＦＴ）も作成される。  
［ＳＢ０３］ＦＴをチェックし、許容値内かどうか判断する。ＹＥＳ（許容値内）であればＳＢ０４へ、ＮＯ（許容値外）であればＳＢ０８へ行く。  
［ＳＢ０４］ｆk（ｔ）＝ｇk（ｔ）とすることにより、作成した関数ｇk（ｔ）を今回の区分曲線の関数ｆk（ｔ）として仮に受付ける。ｆk（ｔ）＝ｇk（ｔ）とするとは、既述したように数１４式のようにｆk（ｔ）の関数形を求めることである。ｅ（ｋ）＝ｓ（ｋ）＋ｎｓにより、区分終点の指令点の番号ｅ（ｋ）を仮にセットし、Ｐe(k)＝Ｐs(k)+ns、  Ｐe(k)’＝Ｐs(k)+ns’とする。ｎｓｉ＝ｎｓとして次の区分曲線作成における初期スキップ数を仮にセットする。Ｐe(k)が仮の区分終点、Ｐe(k)’が仮の区分終点ベクトルである。
［ＳＢ０５］ｎｓ＝ｎｓ＋１とし、Ｐs(k)、Ｐs(k)’、Ｐs(k)+ns〜Ｐs(k)+ns+3を用意する。ただし、終点Ｐnを越えては用意しない。  
［ＳＢ０６］関数ｇk（ｔ）作成（後述）を呼び出し起動する。  
［ＳＢ０７］ＦＴをチェックし、許容値内かどうか判断する。許容値内であればＳＢ０４へ、許容値外であれば最後にＳＢ０４で行った結果を持って終了する。つまり、最後にＳＢ０４で得た、関数ｆk（ｔ）が今回の区分曲線の関数、ｅ（ｋ）が区分終点の指令点の番号、Ｐe(k)が新たな区分終点、Ｐe(k)’が新たな区分終点ベクトルであり、ｎｓｉが次の区分曲線作成における初期スキップ数である。
［ＳＢ０８］ｎｓ＝ｎｓ−１とし、Ｐs(k)、Ｐs(k)’、Ｐs(k)+ns〜Ｐs(k)+ns+3を用意する。ただし、終点Ｐnを越えては用意しない。  
［ＳＢ０９］関数ｇk（ｔ）作成（後述）を呼び出し起動する。  
［ＳＢ１０］ＦＴをチェックし、許容値内かどうか判断する。ＹＥＳ（許容値内）であれば関数ｇk（ｔ）が得られたのでＳＢ１１へ、ＮＯ（許容値外）であればＳＢ０８へ行く。  
［ＳＢ１１］ｆk（ｔ）＝ｇk（ｔ）とすることにより、作成した関数ｇk（ｔ）を今回の区分曲線の関数ｆk（ｔ）とする。ｅ（ｋ）＝ｓ（ｋ）＋ｎｓにより、区分終点の指令点の番号ｅ（ｋ）をセットし、Ｐe(k)＝Ｐs(k)+ns、Ｐe(k)’＝Ｐs(k)+ns’とする。ｎｓｉ＝ｎｓとして次の区分曲線作成における初期スキップ数をセットし、終了する。Ｐe(k)が新たな区分終点、Ｐe(k)’が新たな区分終点ベクトルである。
【００５５】
＜関数ｇk（ｔ）作成＞  
区分曲線作成部の処理から呼び出され起動される関数ｇk（ｔ）作成の処理（図１１）について、詳細に説明する。  
［ＳＣ０１］ｓ（ｋ）＋ｎｓ≧ｎなら、つまりスキップ数によって指令点をスキップすると終点以降になる場合は、［ＳＣ０２］以降の方法で関数ｇk（ｔ）を作成することはできないので、ＳＣ１０ヘ行く。最後の関数ｇk（ｔ）は、終了判別（後述）内で作成する。  
［ＳＣ０２］用意されたＰs(k)、Ｐs(k)’、Ｐs(k)+ns〜Ｐs(k)+ns+3  から、＜概要＞［３］、［４］で述べたように数８−１式，数８−２式によってＰs(k)+ns’を計算する。
ただし、特殊なケースなので図１１には記載していないが、Ｐs(k)+ns〜Ｐs(k)+ns+3について終点Ｐnを越えて用意されていない場合、つまりｓ（ｋ）＋ｎｓ＋３＞ｎのためＰs(k)+ns〜Ｐs(k)+ns+3の全ての指令点が用意されていない場合、数８−１式，数８−２式の代わりに数１５−１式，数１５−２式または数１６−１式，数１６−２式のように計算する。ここで、Ｐn’は、＜概要＞［３］で述べたと同様の方法による。  
なお、ここではｎｃ＝３としているので、Ｐs(k)+ns〜Ｐs(k)+ns+3  について終点を越えて用意されていないのは数１５式−１式，数１５−２式または数１６−１式，数１６−２式の２つの場合であるが、ｎｃ＞３であっても同様に、Ｐs(k)+ns〜Ｐs(k)+ns+nc  について終点を越えて用意されていない時の計算を行うことができる。
【００５６】
＜ｓ（ｋ）＋ｎｓ＋１＝ｎの場合（Ｐs(k)+ns+1が終点Ｐnでありそれを越えて指令点列は用意されていない場合）＞（図１３）  
【００５７】
【数１５−１】
0005326015.tif 000017
【００５８】
ここで、ｔ1、ｔ2は、数１５−２式のとおりである。
【００５９】
【数１５−２】
0005326015.tif 000018
【００６０】
＜ｓ（ｋ）＋ｎｓ＋２＝ｎの場合（Ｐs(k)+ns+2が終点Ｐnでありそれを越えて指令点列は用意されていない場合）＞（図１４）  
【００６１】
【数１６−１】
0005326015.tif 000019
【００６２】
ここで、ｔ1、ｔ2、ｔ3は数１６−２式のとおりである。
【００６３】
【数１６−２】
0005326015.tif 000020
【００６４】
［ＳＣ０３］Ｐs(k)、Ｐs(k)+ns、Ｐs(k)’および［ＳＣ０２］で求めたＰs(k)+ns’から数１１式により、Ｐs(k)、Ｐs(k)+ns 間の数９式の３次関数ｇk（ｔ）の係数，Ａｇk，Ｂｇk，Ｃｇk，Ｄｇkを求め、ｇk（ｔ）を作成する。  
［ＳＣ０４］関数ｇk（ｔ）について数１３式のように許容値Ｔｏｌ内かどうかチェックするために、初期インデックスｊ＝１とする。  
［ＳＣ０５］ｊとｎｓを比較する。ｊ≧ｎｓならＳＣ０９へ、ｊ＜ｎｓならＳＣ０６へ行く。なお、ｎｓ＝１の場合、必ずｊ≧ｎｓである。  
［ＳＣ０６］数１２式によりＱjを作成する。  
［ＳＣ０７］｜Ｑj−Ｐs(k)+j｜と許容値Ｔｏｌを比較する。｜Ｑj−Ｐs(k)+j｜≦ＴｏｌならＳＣ０８へ、｜Ｑj−Ｐs(k)+j｜＞ＴｏｌならＳＣ１０へ行く。  
［ＳＣ０８］ｊ＝ｊ＋１としてＳＣ０５へ行く。  
［ＳＣ０９］許容値内フラグＦＴ＝１とし、関数ｇk（ｔ）は許容値内であることを示し、終了する。  
［ＳＣ１０］許容値内フラグＦＴ＝０とし、関数ｇk（ｔ）は許容値外であることを示し、終了する。
【００６５】
＜終了判別＞  
加工曲線作成部の処理から呼び出され起動される終了判別の処理（図１２）について、詳細に説明する。  
［ＳＤ０１］ｓ（ｋ）とｎ−１を比較する。ｓ（ｋ）≧ｎ−１の場合、ｓ（ｋ）は終点直前でありＳＤ０２に行く。ｓ（ｋ）＜ｎ−１の場合、ｓ（ｋ）は終点直前ではなくＳＤ０５に行く。  
［ＳＤ０２］Ｐs(k)、Ｐn、Ｐs(k)’、Ｐn’から、Ｐn-1、Ｐn間の数９式の３次関数ｇk（ｔ）の係数、Ａｇk、Ｂｇk、Ｃｇk、Ｄｇkを求め、ｇk（ｔ）を作成する。ここで、Ｐn’は、＜概要＞［３］で述べたと同様の方法による。（図１５参照）  
［ＳＤ０３］ｆk（ｔ）＝ｇk（ｔ）とする。  
［ＳＤ０４］ＦＥ（終了フラグ）＝１とし、最後の区分曲線であることを示す。そして、終了する。  
［ＳＤ０５］ｓ（ｋ）＋ｎｓｉとｎ−１を比較する。ｓ（ｋ）＋ｎｓｉ≦ｎ−１なら、つまり、区分始点の指令点の番号に初期スキップ数を加算しても終点の指令点番号には届かない場合（通常の場合）、ＳＤ０７に行く。ｓ（ｋ）＋ｎｓｉ＞ｎ−１なら、つまり区分始点の指令点の番号に初期スキップ数を加算すると終点の指令点番号以降の番号になってしまう場合ＳＤ０６に行く。  
［ＳＤ０６］ｎｓｉ＝（ｎ−１）−ｓ（ｋ）とし、区分始点の指令点の番号に初期スキップ数を加算するとｎ−１となるようにする。  
［ＳＤ０７］ＦＥ（終了フラグ）＝０とする。そして、終了する。
【００６６】
これらの処理によって、指令点列の区分ごとの区分指令点列に対応する曲線である区分曲線を作成する区分曲線作成部において、区分指令点列からの距離が予め設定された許容値内であり、かつ前記区分指令点列の始点である区分始点と前記区分指令点列の終点である区分終点との間にできるだけ多くの指令点列を含むように区分曲線を作成し、加工曲線作成部においてその区分曲線作成部の処理を指令点列の始点から終点まで繰り返し実行して加工曲線を作成することができる。
【００６７】
ここでは、駆動軸はＸ、Ｙ、Ｚ軸として加工曲線、区分曲線を作成したが、回転軸によって工具方向を制御できる多軸加工機において、回転軸も含めた駆動軸に対して加工曲線、区分曲線を作成することもできる。さらに、（Ｉ，Ｊ，Ｋ）などのベクトルで指令される工具方向を含めて駆動軸に準じて扱うことにより工具方向も含めて加工曲線、区分曲線を作成することもできる。つまり、（Ｘ，Ｙ，Ｚ）座標系上で点列や曲線を表したと同様に、（Ｉ，Ｊ，Ｋ）座標系上で工具方向を表して本実施例と同様の処理を行い、作成された（Ｉ，Ｊ，Ｋ）座標系上の加工曲線を補間して補間位置を（Ｉ，Ｊ，Ｋ）座標系上の工具方向とし、その補間された工具方向から工具方向を制御する回転軸位置に変換して回転軸を駆動すればよい。
【００６８】
次に、本発明の第２の実施形態を説明する。  
第１の実施形態の＜加工曲線作成＞［１］で述べたように、始点条件として従来技術１−１．で述べたような始点での２次微分ベクトルＰ0’’＝０とする例を第２の実施形態として説明する。なお、第２の実施形態では、第１の実施形態＜概要＞［３］で述べたように、Ｐs(k)+ns+3での条件として１次微分ベクトルＰs(k)+ns+3’でなく従来技術１−１．で記載したような他の条件（２次微分ベクトルＰs(k)+ns+3’’＝０）とする。第１の実施形態で述べたような１次微分ベクトルＰs(k)+ns+3’を使用しても良いが、従来技術１−１．で述べたように様々な始点条件、終点条件を組合わせることができることを示すため、第２の実施形態ではＰs(k)+ns+3での条件として２次微分ベクトルＰs(k)+ns+3’’＝０とする。
【００６９】
この時、第１区分曲線作成における、第１の実施形態の数７式、数８−１式，数８−２式は次の数１７式、数１８−１，数１８−２式のようになる。数１７式は左辺マトリックスの第１行と最終行、および右辺ベクトルの第１要素と最終要素が数７式と相違する。数１８−１式もそれらに対応して数８−１式と相違する。ｋ＝０であり、ｓ（０）＝０である。数１８−１式，数１８−２式からＰs(0)’、Ｐs(0)+ns’を求め、Ｐs(0)’、Ｐs(0)+ns’およびＰs(0)、Ｐs(0)+nsから数９式、数１０式、数１１式により関数ｇ0（ｔ）を求めることができる。これが、第１区分曲線を表す関数である。
【００７０】
【数１７】
0005326015.tif 000021
【００７１】
【数１８−１】
0005326015.tif 000022
【００７２】
ここで、ｔ1〜ｔ4は数１８−２式のとおりである。
【００７３】
【数１８−２】
0005326015.tif 000023
【００７４】
第１区分曲線作成後の区分曲線作成における、第１の実施形態の数７式、数８−１，数８−２式は次の数１９式、数２０−１，数２０−２式のようになる。数１９式は左辺マトリックスの最終行、および右辺ベクトルの最終要素が数７式と相違する。数２０−１式もそれらに対応して数８−１式と相違する。数２０−１，数２０−２式からＰs(k)+ns’を求め、すでに前回区分曲線作成で求まっているＰs(k)’およびＰs(k)、Ｐs(k)+nsから数９式、数１０式、数１１式により関数ｇk（ｔ）を求めることができる。これが第１区分曲線作成後の区分曲線を表す関数である。
【００７５】
【数１９】
0005326015.tif 000024
【００７６】
【数２０−１】
0005326015.tif 000025
【００７７】
ここで、ｔ1〜ｔ4は数２０−２式のとおりである。
【００７８】
【数２０−２】
0005326015.tif 000026
【００７９】
その他は第１の実施形態と同様の処理なので説明を省略する。
【００８０】
次に、本発明の第３の実施形態を説明する。  
第１の実施形態および第２の実施形態では、指令点列として加工プログラムにおいて指令される指令点の点列としたが、第３の実施形態では、前記指令点列は加工プログラムにおいて指令される指令点の点列に対して平滑化を行った点列とする。従来技術として様々な平滑化の技術があり、それらの平滑化の技術を組合わせるものである。  
例えば、簡単な平滑化の方法は次のような方法である。加工プログラムにおいて指令される指令点列の始点Ｐ0および終点Ｐnを除く元の点列Ｐ1、、、Ｐn-1に対して数２１式のようにＰiおよび前後２点（Ｐi-1、Ｐi+1）を平均する平滑化を行い、新たに指令点列Ｐ0、Ｐ1、、、Ｐn-1、Ｐnとする。
【００８１】
【数２１】
0005326015.tif 000027
【００８２】
あるいは、次のような他の簡単な平滑化の方法もある。加工プログラムにおいて指令される元の点列Ｐ0、Ｐ1、、、Ｐm-1、Ｐmに対して数２２式のように始点Ｐ0および終点Ｐmを除いて中点を作成する平滑化を行い、新たに指令点列Ｐ0、Ｐ1、、、Ｐn-1、Ｐnとする。ここでは元の点列Ｐ0、Ｐ1、、、Ｐm-1、Ｐmに対して１点多くなるため、ｎ＝ｍ＋１としている。図１６下図では、元の指令点列Ｐ1、、、Ｐm-1を白抜き丸で表し、新たな指令点列Ｐ0、Ｐ1、、、Ｐn-1、Ｐnを黒丸としている。
【００８３】
【数２２】
0005326015.tif 000028
【００８４】
これらの簡単な平滑化の方法以外にも、従来技術として知られている様々な平滑化の方法と組合わせることができる。
【００８５】
＜ブロック図＞
次に図１７を用いて本発明の第１の実施形態での数値制御装置を説明する。少なくとも直線２軸を含む複数の駆動軸を有する工作機械に対して加工プログラムから得られる指令点列にもとづいて加工用の曲線である加工曲線を作成し該加工曲線を補間し補間した位置に前記駆動軸を駆動することによって加工を行う数値制御装置は、指令読取り解析部２で加工プログラムの指令を読取るとともに解析して補間用データを作成し、補間部８で補間用データにもとづいて指令速度に従って補間を行い各軸の移動すべき位置を求め、その位置へ各軸のサーボを駆動する。
【００８６】
本発明では、指令読取り解析部２が加工プログラムの指令を読取り、加工曲線作成部４を起動する。加工曲線作成部４は区分曲線作成部６を起動し、加工曲線として１つの区分曲線を作成し補間用データにセットする。補間用データにセットされた区分曲線（加工曲線の一部）を補間部８で補間し補間した位置に各駆動軸（Ｘ，Ｙ，Ｚ軸サーボ１０，１２，１４）を駆動する。これらの区分曲線を作成し補間データにセットすることとその補間は繰り返し連続して実行される。補間部８で加工曲線を補間する技術は従来技術なので特に説明しない。
【００８７】
次に、本発明の詳細効果について説明する。本発明によって、次のように効果を得る。
（１）数値制御装置は、前述のブロック図においても述べたように指令読取り解析部で補間用データを作成し補間部で補間用データにもとづいて補間を行う。間隔の微小な指令点が指令されると、補間用データ作成とその補間を頻繁に繰り返す必要が生じ、その結果、加工曲線を作成し補間する能力が不足することによって減速してしまうことが発生する。本発明によって、できるだけ多くの指令点に対応した３次曲線（区分曲線）を作成することができる、つまり多くの指令点を含む点列に対応した補間用データを作成できるため、補間用データ作成とその補間を頻繁に繰り返す必要が生じる可能性が小さくなる。そのことにより、指令点間の間隔が微小であっても、数値制御装置の加工曲線を作成し補間する能力が不足することによって減速してしまうことを少なくできる。
（２）本発明によって、できるだけ多くの指令点を含む点列に対応した３次曲線（区分曲線）を作成することができるため、指令点列が目標曲線に達して誤差によるばらつきを持っていてもそれらの誤差の影響を小さくし、より目標極点に近い加工曲線を作成することができる。
【００８８】
（３）本発明によって作成される加工曲線は、各区分曲線の終点と次の区分曲線の始点において１次微分ベクトルは連続でありかつ２次微分ベクトルも実用上連続である。本文中でも述べたように所定点数ｎｃを大きくすれば２次微分ベクトルの連続性は良くなる。また、この加工曲線は、指令点列からの誤差は許容値内である。したがって、本発明によって、指令点列からの誤差が許容値内でありかつ滑らかな加工形状、および各駆動軸の加速度が連続である滑らかな加工動作を得ることができる。  
【００８９】
（４）本発明により、指令点列を全て読み込むことなく順次加工曲線を作成していくことができるため、加工曲線の作成を多くのメモリや計算時間を必要とすることなく実現することができる。
【符号の説明】
【００９０】
２  指令読取り解析部
４  加工曲線作成部
６  区分曲線作成部
８  補間部
１０  Ｘ軸サーボ
１２  Ｙ軸サーボ
１４  Ｚ軸サーボ
【図１】
0005326015.tif 000030
【図２】
0005326015.tif 000031
【図３】
0005326015.tif 000032
【図４】
0005326015.tif 000033
【図５】
0005326015.tif 000034
【図６】
0005326015.tif 000035
【図７】
0005326015.tif 000036
【図８】
0005326015.tif 000037
【図９】
0005326015.tif 000038
【図１０】
0005326015.tif 000039
【図１１】
0005326015.tif 000040
【図１２】
0005326015.tif 000041
【図１３】
0005326015.tif 000042
【図１４】
0005326015.tif 000043
【図１５】
0005326015.tif 000044
【図１６】
0005326015.tif 000045
【図１７】
0005326015.tif 000046