(57)【特許請求の範囲】
【請求項１】
第１の加工を行う第１の工具または加工対象の移動を行う第１の駆動軸と、第２の加工を行う第２の工具または加工対象の移動を行う第２の駆動軸と、を有する工作機械に対し、前記第２の駆動軸の移動を前記第１の駆動軸の移動に重畳し、前記第１の加工と相対的に前記第２の加工を実行できるように前記第１の駆動軸および前記第２の駆動軸を制御する数値制御装置であって、
前記第２の駆動軸の移動を前記第１の駆動軸の移動に重畳させる重畳制御指令があった場合に、
前記第１の駆動軸を振動させる第１の振動指令と、
前記第２の駆動軸を振動させる第２の振動指令と、
前記加工対象の回転軸である主軸への単位時間当たりの主軸回転数の指令である主軸回転数指令と、
に基づいて、
前記主軸が１回転する間の前記第１の駆動軸の振動回数である第１の振動回数が一定の振動回数になるとともに、前記主軸が１回転する間の前記第２の駆動軸の振動回数である第２の振動回数が一定の振動回数になるよう、
前記第１の振動回数、前記第２の振動回数および前記主軸回転数の少なくとも１つを変更し、
且つ
前記第２の振動指令に含まれる前記第２の駆動軸を振動させる際の第２の振幅から前記第１の振動指令に含まれる前記第１の駆動軸を振動させる際の第１の振幅を差し引いた差分に基づく第３の振幅で前記第２の駆動軸を振動させるように、前記第２の振幅を変更して、
前記第１の駆動軸、前記第２の駆動軸および前記主軸を制御する制御演算部を備える、
ことを特徴とする数値制御装置。
【請求項２】
前記第１の駆動軸および前記第２の駆動軸を備えた工作機械が、１つの主軸と２つの刃物台とを具備した旋盤であり、前記２つの刃物台の一方に前記第１の駆動軸があり、且つ前記２つの刃物台の他方に前記第２の駆動軸がある場合、
前記制御演算部は、前記第１の振動回数および前記第２の振動回数のうちの一方が一定の振動回数となるよう、前記主軸回転数を変更し、変更後の前記主軸回転数に対して、前記第１の振動回数および前記第２の振動回数のうちの他方が一定の振動回数となるよう、前記他方を変更する、
ことを特徴とする請求項１に記載の数値制御装置。
【請求項３】
前記第１の駆動軸および前記第２の駆動軸を備えた工作機械が、１つの主軸と２つの刃物台とを具備した旋盤であり、前記２つの刃物台の一方に前記第１の駆動軸があり、且つ前記２つの刃物台の他方に前記第２の駆動軸がある場合、
前記制御演算部は、前記第１の振動回数および前記第２の振動回数を、前記第１の振動回数および前記第２の振動回数の平均回数に変更し、前記主軸が１回転する間の前記平均回数が一定の振動回数となるよう、前記主軸回転数を変更する、
ことを特徴とする請求項１に記載の数値制御装置。
【請求項４】
前記第１の駆動軸および前記第２の駆動軸を備えた工作機械が、１つの主軸と２つの刃物台とを具備した旋盤であり、前記主軸に前記第１の駆動軸があり、且つ前記２つの刃物台のうちの一方に前記第２の駆動軸がある場合、
前記制御演算部は、前記第１の振動回数を前記第２の振動回数に変更するか、前記第２の振動回数を前記第１の振動回数に変更するか、または前記第１の振動回数および前記第２の振動回数を、前記第１の振動回数および前記第２の振動回数の平均回数に変更し、変更によって前記第１の振動回数と前記第２の振動回数とで同じになった振動回数が、前記主軸が１回転する間で一定の振動回数となるよう前記主軸回転数を変更する、
ことを特徴とする請求項１に記載の数値制御装置。
【請求項５】
前記第１の駆動軸および前記第２の駆動軸を備えた工作機械が、第１の主軸と第２の主軸と１つの刃物台とを具備した旋盤であり、前記刃物台に前記第１の駆動軸があり、且つ前記第２の主軸に前記第２の駆動軸がある場合、
前記制御演算部は、前記第１の振動回数を前記第２の振動回数に変更するか、前記第２の振動回数を前記第１の振動回数に変更するか、または前記第１の振動回数および前記第２の振動回数を、前記第１の振動回数および前記第２の振動回数の平均回数に変更し、変更によって前記第１の振動回数と前記第２の振動回数とで同じになった振動回数が、前記第１の主軸が１回転する間で一定の振動回数となるよう前記第１の主軸の主軸回転数を変更し、前記同じになった振動回数が、前記第２の主軸が１回転する間で一定の振動回数となるよう前記第２の主軸の主軸回転数を変更する、
ことを特徴とする請求項１に記載の数値制御装置。
【請求項６】
前記制御演算部は、
前記第１の振動指令が無ければ、前記第２の振動指令を用いて前記第１の駆動軸を制御し、前記第２の振動指令が無ければ、前記第１の振動指令を用いて前記第２の駆動軸を制御する、
ことを特徴とする請求項１から５のいずれか１つに記載の数値制御装置。
【請求項７】
前記制御演算部は、
加工プログラム内に前記第２の振動指令があるか否かをチェックする第１の振動チェック部と、
前記加工プログラム内に前記第１の振動指令があるか否かをチェックする第２の振動チェック部と
を有し、
前記第１の振動チェック部が前記第２の振動指令が無いと判断した場合、前記第１の振動指令を用いて前記第２の駆動軸を制御し、
前記第２の振動チェック部が前記第１の振動指令が無いと判断した場合、前記第２の振動指令を用いて前記第１の駆動軸を制御する、
ことを特徴とする請求項６に記載の数値制御装置。
【請求項８】
前記制御演算部は、前記第１の駆動軸および前記第２の駆動軸を用いた振動切削と、前記第１の駆動軸および前記第２の駆動軸を用いた重畳制御と、を実現するための制約条件に従うよう、前記第１の振動回数、前記第２の振動回数および前記主軸回転数の少なくとも１つを変更する、
ことを特徴とする請求項１から７のいずれか１つに記載の数値制御装置。
【請求項９】
第１の加工を行う第１の工具または加工対象の移動を行う第１の駆動軸と、第２の加工を行う第２の工具または加工対象の移動を行う第２の駆動軸と、を有する工作機械に対し、前記第２の駆動軸の移動を前記第１の駆動軸の移動に重畳し、前記第１の加工と相対的に前記第２の加工を実行できるように前記第１の駆動軸および前記第２の駆動軸を制御する数値制御方法であって、
前記第２の駆動軸の移動を前記第１の駆動軸の移動に重畳させる重畳制御指令があった場合に、
前記第１の駆動軸を振動させる第１の振動指令と、前記第２の駆動軸を振動させる第２の振動指令と、
前記加工対象の回転軸である主軸への単位時間当たりの主軸回転数の指令である主軸回転数指令と、
に基づいて、
前記主軸が１回転する間の前記第１の駆動軸の振動回数である第１の振動回数が一定の振動回数になるとともに、前記主軸が１回転する間の前記第２の駆動軸の振動回数である第２の振動回数が一定の振動回数になるよう、
前記第１の振動回数、前記第２の振動回数および前記主軸回転数の少なくとも１つを変更し、
且つ
前記第２の振動指令に含まれる前記第２の駆動軸を振動させる際の第２の振幅から前記第１の振動指令に含まれる前記第１の駆動軸を振動させる際の第１の振幅を差し引いた差分に基づく第３の振幅で前記第２の駆動軸を振動させるように、前記第２の振幅を変更して、
前記第１の駆動軸、前記第２の駆動軸および前記主軸を制御する制御演算ステップを含む、
ことを特徴とする数値制御方法。
【請求項１０】
前記制御演算ステップでは、前記第１の駆動軸および前記第２の駆動軸を用いた振動切削と、前記第１の駆動軸および前記第２の駆動軸を用いた重畳制御と、を実現するための制約条件に従うよう、前記第１の振動回数、前記第２の振動回数および前記主軸回転数の少なくとも１つを変更する、
ことを特徴とする請求項９に記載の数値制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、工具を振動させながらの振動切削を制御する数値制御装置および数値制御方法に関する。
【背景技術】
【０００２】
旋削加工の分野では、数値制御装置が、被加工物を加工するための加工プログラムに従って工具の動作を制御し、これにより工具に被加工物を加工させている。この数値制御装置の中には、工具経路に沿って特定の周波数で工具を振動させながら被加工物を振動切削させるものがある。【０００３】
特許文献１に記載の数値制御装置は、工具への移動指令から単位時間あたりの指令移動量を算出し、振動条件から単位時間あたりの振動移動量を算出し、指令移動量と振動移動量とを合成して合成移動量を算出し、合成移動量に基づいて振動切削を制御している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５５９９５２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１に記載の技術では、重畳制御と呼ばれる基準軸および重畳軸を用いた制御には対応できなかった。すなわち、特許文献１では、一方の駆動軸である基準軸の移動量を、他方の駆動軸である重畳軸に重畳させて制御する重畳制御が行われる場合には、振動と重畳の整合が取れないので、振動切削を行うことができないという問題があった。【０００６】
本発明は、上記に鑑みてなされたものであって、重畳制御が行われる場合にも振動切削を実行させることができる数値制御装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明の数値制御装置は、第１の加工を行う第１の工具または加工対象の移動を行う第１の駆動軸と、第２の加工を行う第２の工具または加工対象の移動を行う第２の駆動軸と、を有する工作機械に対し、第２の駆動軸の移動を第１の駆動軸の移動に重畳し、第１の加工と相対的に第２の加工を実行できるように第１の駆動軸および第２の駆動軸を制御する。また、本発明の数値制御装置は、第２の駆動軸の移動を第１の駆動軸の移動に重畳させる重畳制御指令があった場合に、第１の駆動軸を振動させる第１の振動指令と、第２の駆動軸を振動させる第２の振動指令と、加工対象の回転軸である主軸への単位時間当たりの主軸回転数の指令である主軸回転数指令とに基づいて、主軸が１回転する間の第１の駆動軸の振動回数である第１の振動回数が一定の振動回数になるとともに、主軸が１回転する間の第２の駆動軸の振動回数である第２の振動回数が一定の振動回数になるよう、第１の振動回数、第２の振動回数および主軸回転数の少なくとも１つを変更し、且つ第２の振動指令に含まれる第２の駆動軸を振動させる際の第２の振幅から第１の振動指令に含まれる第１の駆動軸を振動させる際の第１の振幅を差し引いた差分に基づく第３の振幅で第２の駆動軸を振動させるように、第２の振幅を変更して、第１の駆動軸、第２の駆動軸および主軸を制御する制御演算部を備える。
【発明の効果】
【０００８】
本発明にかかる数値制御装置は、重畳制御が行われる場合にも振動切削を実行させることができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態１にかかる数値制御装置の構成例を示す図
【図２】実施の形態１にかかる工作機械の構成を示す図
【図３】実施の形態１にかかる数値制御装置が用いる加工プログラムの一例を示す図
【図４】実施の形態１にかかる数値制御装置の第１の制御処理の処理手順を示すフローチャート
【図５】実施の形態１にかかる数値制御装置の第２の制御処理の処理手順を示すフローチャート
【図６】実施の形態１にかかる数値制御装置の第３の制御処理の処理手順を示すフローチャート
【図７】実施の形態２にかかる工作機械の構成を示す図
【図８】実施の形態２にかかる数値制御装置が用いる加工プログラムの一例を示す図
【図９】実施の形態２にかかる数値制御装置の第１の制御処理の処理手順を示すフローチャート
【図１０】実施の形態２にかかる数値制御装置の第２の制御処理の処理手順を示すフローチャート
【図１１】実施の形態２にかかる工作機械の重畳軸への振動指令の第１例を示す図
【図１２】実施の形態２にかかる工作機械の基準軸への振動指令の第１例を示す図
【図１３】図１１および図１２の振動指令から算出される振動波形を示す図
【図１４】実施の形態２にかかる工作機械の重畳軸への振動指令の第２例を示す図
【図１５】実施の形態２にかかる工作機械の基準軸への振動指令の第２例を示す図
【図１６】図１４および図１５の振動指令から算出される振動波形を示す図
【図１７】実施の形態２にかかる工作機械の第１の振動動作を説明するための図
【図１８】実施の形態２にかかる工作機械が有する基準軸に対する重畳軸の相対的な第１の振動動作を示す図
【図１９】実施の形態２にかかる工作機械の第２の振動動作を説明するための図
【図２０】実施の形態２にかかる工作機械が有する基準軸に対する重畳軸の相対的な第２の振動動作を示す図
【図２１】図２１は、実施の形態２にかかる工作機械の第３の振動動作を説明するための図
【図２２】実施の形態２にかかる工作機械が有する基準軸に対する重畳軸の相対的な第３の振動動作を示す図
【図２３】実施の形態２にかかる工作機械の第４の振動動作を説明するための図
【図２４】実施の形態２にかかる工作機械が有する基準軸に対する重畳軸の相対的なの第４の振動動作を示す図
【図２５】実施の形態２にかかる、正弦波の振動指令を示す図
【図２６】実施の形態２にかかる数値制御装置が用いる加工プログラムの他の例を示す図
【図２７】実施の形態２にかかる数値制御装置の第３の制御処理の処理手順を示すフローチャート
【図２８】図２２の加工プログラムに対応する基準軸への振動指令の波形を示す図
【図２９】図２２の加工プログラムに対応する重畳軸への振動指令の波形を示す図
【図３０】図２４および図２５の波形から計算された重畳軸への振動指令の波形を示す図
【図３１】実施の形態３にかかる工作機械の構成を示す図
【図３２】実施の形態３にかかる数値制御装置が用いる加工プログラムの一例を示す図
【図３３】実施の形態３にかかる数値制御装置の第１の制御処理の処理手順を示すフローチャート
【図３４】実施の形態３にかかる数値制御装置の第２の制御処理の処理手順を示すフローチャート
【図３５】実施の形態１から３にかかる制御演算部のハードウェア構成例を示す図
【発明を実施するための形態】
【００１０】
以下に、本発明の実施の形態にかかる数値制御装置および数値制御方法を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１１】
実施の形態１．
図１は、本発明の実施の形態１にかかる数値制御装置の構成例を示す図である。図２は、実施の形態１にかかる工作機械の構成を示す図である。図２では、紙面の横方向がＺ軸方向であり、紙面の縦方向がＸ軸方向である。そして、Ｘ１軸およびＸ２軸は、Ｘ軸に平行な軸であり、Ｚ１軸およびＺ２軸は、Ｚ軸に平行な軸である。
【００１２】
数値制御（ＮＣ：Numerical  Control）装置１は、工作機械１１０に対して、工具を振動させながらの加工である低周波振動切削の制御と重畳制御とを同時に実行するコンピュータである。以下の説明では低周波振動を単に振動という場合がある。
【００１３】
数値制御装置１は、第１の駆動軸を含む１軸以上の駆動軸によって、第１の工具と加工対象である加工ワーク７０との相対的な移動を実行させ、第２の駆動軸を含む１軸以上の駆動軸によって、第２の工具と加工ワーク７０との相対的な移動とを実行させながら、加工ワーク７０の加工を制御する。すなわち、数値制御装置１は、第１の加工を行う工具６６Ａまたは加工ワーク７０の移動を行う基準軸６１Ａと、第２の加工を行う工具６６Ｂまたは加工ワーク７０の移動を行う重畳軸６１Ｂとを有している。そして、数値制御装置１は、基準軸６１Ａの移動量を重畳軸６１Ｂの移動量に重畳し、第１の加工と相対的に第２の加工を実行できるように基準軸６１Ａおよび重畳軸６１Ｂを制御する。また、このとき、数値制御装置１は、第１の工具および第２の工具を振動させることによって、加工ワーク７０への振動切削を行なわせる。実施の形態１では、数値制御装置１が、２軸の駆動軸に対して、振動切削および重畳制御を行うので、振動切削および重畳制御を実現するための制約条件に従うよう、各駆動軸の振動または加工ワーク７０の回転を制御する。
【００１４】
加工ワーク７０は、工作機械１１０によって加工される被加工物である。本実施の形態の工作機械１１０は、重畳制御を実行時、第１の駆動軸となる図２の基準軸６１ＡがＺ１軸であり、第２の駆動軸となる図２の重畳軸６１ＢがＺ２軸である場合について説明する。
【００１５】
数値制御装置１は、制御演算部２と、入力操作部３と、表示部４と、ＰＬＣ（Programmable  Logic  Controller：プログラマブルロジックコントローラ）３６を操作するための機械操作盤等のＰＬＣ操作部５とを有する。図１には、工作機械１１０の構成要素である駆動部９０が示されている。数値制御装置１は、旋盤加工に適用されてもよいし、マシニング加工に適用されてもよい。以下では、数値制御装置１が、旋盤加工に適用される場合について説明する。
【００１６】
駆動部９０は、工作機械１１０が備える刃物台６５Ａ，６５Ｂなどを駆動させる。駆動部９０は、加工ワーク７０を回転させながら、２つの工具６６Ａ，６６Ｂを駆動する駆動機構である。本実施の形態の駆動部９０は、工具６６ＡをＸ１軸方向、および基準軸６１Ａの軸方向であるＺ１軸方向に沿って移動させ、工具６６ＢをＸ２軸方向、および重畳軸６１Ｂの軸方向であるＺ２軸方向に沿って移動させる。
【００１７】
重畳制御の場合、数値制御装置１は、基準軸６１Ａへ指令された移動量と、重畳軸６１Ｂへ指令された移動量を重畳させて、重畳軸６１Ｂの実移動を制御する。したがって、重畳制御中に、重畳軸６１Ｂへの指令が無い場合、従来の方式では、重畳軸６１Ｂは、基準軸６１Ａと同期した動作となるため、工具６６Ａ，６６Ｂは、同じ振動波形に従って動作する。なお、何れの軸が基準軸となるかは、工作機械の種類によって異なる。本実施の形態では、工具６６Ａの振動方向が基準軸６１Ａの軸方向であり、工具６６Ｂの振動方向が重畳軸６１Ｂの軸方向およびＸ２軸方向が合成された方向である場合について説明する。したがって、以下の説明において、重畳軸６１Ｂの振動という場合には、Ｚ２軸方向およびＸ２軸方向が合成された方向の振動を意味する。
【００１８】
駆動部９０は、数値制御装置１上で規定された各軸方向に工具６６Ａ，６６Ｂを移動させるサーボモータ９０１〜９０４と、サーボモータ９０１〜９０４の位置および速度を検出する検出器９７〜１００とを備えている。また、駆動部９０は、数値制御装置１からの指令に基づいて、サーボモータ９０１〜９０４を制御する各軸方向のサーボ制御部を備えている。各軸方向のサーボ制御部は、検出器９７〜１００からの位置および速度に基づいて、サーボモータ９０１〜９０４へのフィードバック制御を行う。
【００１９】
サーボ制御部のうちの、Ｘ１軸サーボ制御部９１は、サーボモータ９０１を制御することによって工具６６ＡのＸ１軸方向の動作を制御する。Ｚ１軸サーボ制御部９２は、サーボモータ９０２を制御することによって工具６６ＡのＺ１軸方向の動作を制御する。Ｘ２軸サーボ制御部９３は、サーボモータ９０３を制御することによって工具６６ＢのＸ２軸方向の動作を制御する。Ｚ２軸サーボ制御部９４は、サーボモータ９０４を制御することによって工具６６ＢのＺ２軸方向の動作を制御する。
【００２０】
また、駆動部９０は、加工ワーク７０を回転させるための主軸６０を回転させる主軸モータ９１１と、主軸モータ９１１の位置および回転数を検出する検出器２１１とを備えている。検出器２１１が検出する回転数は、主軸モータ９１１の回転速度である。なお、工作機械１１０のように旋盤加工を行う機械の場合、主軸は、加工ワーク７０の回転軸であるが、マシニング加工を行う工作機械の場合、主軸は、刃物台の回転軸である。
【００２１】
また、駆動部９０は、数値制御装置１からの指令に基づいて、主軸モータ９１１を制御する主軸サーボ制御部２００を備えている。主軸サーボ制御部２００は、検出器２１１からの位置および速度に基づいて、主軸モータ９１１へのフィードバック制御を行う。本実施の形態では、単位時間あたりの主軸６０の回転数を主軸回転数という。主軸回転数は、例えば、１分間あたりの主軸６０の回転数である。
【００２２】
なお、工作機械１１０が２つの加工ワーク７０を同時に加工する場合には、駆動部９０は、主軸モータ９１１と、検出器２１１と、主軸サーボ制御部２００とを２組備える。
【００２３】
入力操作部３は、制御演算部２に情報を入力する手段である。入力操作部３は、キーボード、ボタンまたはマウスなどの入力手段によって構成され、ユーザによる数値制御装置１に対するコマンドなどの入力、または加工プログラムもしくはパラメータなどを受付けて制御演算部２に入力する。表示部４は、液晶表示装置などの表示手段によって構成され、制御演算部２によって処理された情報を表示画面に表示する。ＰＬＣ操作部５は、ユーザによる機械操作盤等の操作を受付けて、操作に対応する指示をＰＬＣ３６に送る。
【００２４】
制御部である制御演算部２は、入力制御部３２と、データ設定部３３と、記憶部３４と、画面処理部３１と、解析処理部３７と、制御信号処理部３５と、ＰＬＣ３６と、補間処理部３８と、加減速処理部３９と、軸データ出力部４０と、を有する。なお、ＰＬＣ３６は、制御演算部２の外部に配置されてもよい。
【００２５】
記憶部３４は、パラメータ記憶エリア３４１、加工プログラム記憶エリア３４３、表示データ記憶エリア３４４、および共有エリア３４５を有している。パラメータ記憶エリア３４１内には、制御演算部２の処理で使用されるパラメータ等が格納される。具体的には、パラメータ記憶エリア３４１内には、数値制御装置１を動作させるための制御パラメータ、サーボパラメータおよび工具データが格納される。加工プログラム記憶エリア３４３内には、加工ワーク７０の加工に用いられる加工プログラムが格納される。本実施の形態の加工プログラムは、工具６６Ａ，６６Ｂを振動させる指令である振動指令と、工具６６Ａ，６６Ｂを移動させる指令である移動指令とを含んでいる。
【００２６】
表示データ記憶エリア３４４内には、表示部４で表示される画面表示データが格納される。画面表示データは、表示部４に情報を表示するためのデータである。また、記憶部３４には、一時的に使用されるデータを記憶する共有エリア３４５が設けられている。
【００２７】
画面処理部３１は、表示データ記憶エリア３４４に格納された画面表示データを表示部４に表示させる制御を行う。入力制御部３２は、入力操作部３から入力される情報を受付ける。データ設定部３３は、入力制御部３２で受付けられた情報を記憶部３４に記憶させる。
【００２８】
制御信号処理部３５は、ＰＬＣ３６に接続されており、ＰＬＣ３６から、工作機械１１０の機械を制御させるリレーなどの信号情報又は機械操作盤の信号情報を受付ける。制御信号処理部３５は、受付けた信号情報を、記憶部３４の共有エリア３４５に書き込む。これらの信号情報は機械運転時に補間処理部３８が参照する。また、制御信号処理部３５は、解析処理部３７によって共有エリア３４５に補助指令が出力されると、この補助指令を共有エリア３４５から読み出してＰＬＣ３６に送る。補助指令は、数値制御軸である駆動軸を動作させる指令以外の指令である。補助指令の例は、後述するＭコードまたはＴコードである。
【００２９】
ＰＬＣ３６は、機械操作盤などのＰＬＣ操作部５に対して操作が行われると、この操作に応じた動作を実行する。ＰＬＣ３６は、機械動作が記述されたラダープログラムを格納している。ＰＬＣ３６は、補助指令であるＴコードまたはＭコードを受付けると、ラダープログラムに従って補助指令に対応する処理を工作機械１１０に実行する。ＰＬＣ３６は、補助指令に対応する処理を実行した後、加工プログラムの次のブロックを実行させるために、機械制御が完了したことを示す完了信号を制御信号処理部３５に送る。
【００３０】
制御演算部２では、制御信号処理部３５と、解析処理部３７と、補間処理部３８とは、記憶部３４を介して接続されており、記憶部３４を介して情報の書き込み、および読み出しを行う。以下の説明では、制御信号処理部３５と、解析処理部３７と、補間処理部３８との間の情報の書き込み、および読み出しを説明する際に記憶部３４が介されていることを省略する場合がある。
【００３１】
加工プログラム選択はユーザが入力操作部３で加工プログラム番号を入力する。入力情報は入力制御部３２、データ設定部３３を介して記憶部３４に書き込まれる。解析処理部３７は、共有エリア３４５から選択された加工プログラムを加工プログラム記憶エリア３４３内から読み出して、加工プログラムの各ブロック（各行）に対して解析処理を行う。解析処理部３７は、例えば、Ｇコード（軸移動等に関する指令）、Ｔコード（工具交換指令など）、Ｓコード（主軸モータ回転数指令）、およびＭコード（機械動作指令）を解析する。
【００３２】
解析処理部３７は、解析した行に特定のＭコードまたは特定のＴコードが含まれている場合には、解析結果を共有エリア３４５および制御信号処理部３５を介してＰＬＣ３６に送る。また、解析処理部３７は、解析した行にＭコードまたはＧコードが含まれている場合には、解析結果を共有エリア３４５を介して補間処理部３８に送る。Ｍコードは制御信号処理部３５を介してＰＬＣ３６に送られ、ＰＬＣ３６はＭコードに対応する機械制御を実行する。実行が完了した場合、制御信号処理部３５を介してＭコードの完了を示す結果が記憶部３４に書き込まれる。補間処理部３８は記憶部３４に書き込まれた実行結果を参照する。具体的には、解析処理部３７は、Ｍコードで指定された主軸回転数を補間処理部３８に送る。
【００３３】
解析処理部３７は、振動指令解析部１１Ａ，１１Ｂと、移動指令解析部１２Ａ，１２Ｂと、重畳指令解析部１３と、を有している。振動指令解析部１１Ａは、基準軸６１Ａへの振動指令を解析する手段であり、振動指令解析部１１Ｂは、重畳軸６１Ｂへの振動指令を解析する手段である。
【００３４】
振動指令解析部１１Ａは、基準軸６１Ａ用の加工プログラム（後述の加工プログラム８１０Ａなど）に含まれる振動指令を解析して基準軸６１Ａの振動条件を生成し、生成した振動条件を共有エリア３４５を介して補間処理部３８に送る。
【００３５】
振動指令解析部１１Ｂは、重畳軸６１Ｂ用の加工プログラム（後述の加工プログラム８１０Ｂなど）に含まれる振動指令を解析して重畳軸６１Ｂの振動条件を生成し、生成した振動条件を共有エリア３４５を介して補間処理部３８に送る。
【００３６】
基準軸６１Ａへの振動指令は、基準軸６１Ａを基準軸６１Ａの軸方向であるＺ１軸方向に振動させる指令である。重畳軸６１Ｂへの振動指令は、重畳軸６１ＢをＸ２軸方向、および重畳軸６１Ｂの軸方向であるＺ２軸方向が合成された方向に振動させる指令である。振動条件は、振動切削を実行する際の振動の条件である。振動条件の例は、振動切削の際の、振動の振幅および振動回数である。基準軸６１Ａの振動回数は、主軸６０が１回転する間の基準軸６１Ａの振動回数であり、重畳軸６１Ｂの振動回数は、主軸６０が１回転する間の重畳軸６１Ｂの振動回数である。換言すると、基準軸６１Ａの振動回数および重畳軸６１Ｂの振動回数は、それぞれ、主軸６０が１回転する時間を基準とした振動の周波数に対応している。したがって、振動条件の例は、振動切削の際の振動の振幅および周波数であるともいえる。本実施の形態では、基準軸６１Ａが振動するので、基準軸６１Ａの振動回数は基準軸６１Ａ側の工具６６Ａの振動回数に対応する。また、重畳軸６１Ｂが振動するので、重畳軸６１Ｂの振動回数は重畳軸６１Ｂ側の工具６６Ｂの振動回数に対応する。本実施の形態の工作機械１１０は、基準軸６１Ａが第１の駆動軸であり重畳軸６１Ｂが第２の駆動軸である場合には、基準軸６１Ａの振動回数が第１の振動回数であり、重畳軸６１Ｂの振動回数が第２の振動回数である。また、本実施の形態の工作機械１１０は、基準軸６１Ａが第２の駆動軸であり重畳軸６１Ｂが第１の駆動軸である場合には、基準軸６１Ａの振動回数が第２の振動回数であり、重畳軸６１Ｂの振動回数が第１の振動回数である。
【００３７】
移動指令解析部１２Ａは、Ｇコードに対応する工具６６Ａへの移動条件を生成して補間処理部３８に送る。移動指令解析部１２Ｂは、Ｇコードに対応する工具６６Ｂへの移動条件を生成して補間処理部３８に送る。移動条件は、工具６６Ａ，６６Ｂが加工位置を移動させていくための工具送りの条件であり、刃物台６５Ａ，６５Ｂを移動させる速度、刃物台６５Ａ，６５Ｂを移動させる位置などで示される。工具６６Ａの工具送りは、工具６６Ａを基準軸６１Ａの軸方向に進ませる処理であり、工具６６Ｂの工具送りは、工具６６Ｂを重畳軸６１Ｂの軸方向に進ませる処理である。
【００３８】
重畳指令解析部１３は、加工プログラムに重畳制御指令が含まれているか否かを解析する。重畳指令解析部１３は、加工プログラム内に後述するＧ１２６の指令が含まれている場合に、重畳制御指令が含まれていると判定する。重畳制御指令は、基準軸６１Ａの移動量を、重畳軸６１Ｂに重畳させるための制御指令である。重畳指令解析部１３は、重畳制御指令の解析結果を補間処理部３８に送る。
【００３９】
補間処理部３８は、基準軸補間部２１Ａと、重畳軸補間部２１Ｂと、移動量発生部２６Ａと、移動量発生部２６Ｂと、重畳合成部２８と、合成部２７とを備えている。補間処理部３８は、主軸回転数に、基準軸６１Ａの振動および重畳軸６１Ｂの振動を同期させるため、主軸回転数、基準軸６１Ａの振動回数、および重畳軸６１Ｂの振動回数の少なくとも１つを変更する。
【００４０】
例えば、補間処理部３８は、基準軸６１Ａの振動回数および重畳軸６１Ｂの振動回数が異なる場合に、重畳軸６１Ｂの振動回数を、基準軸６１Ａの振動回数に応じた振動回数に変更する。この場合、補間処理部３８は、主軸回転数を基準軸６１Ａの振動に同期するよう変更し、重畳軸６１Ｂの振動が、変更した主軸回転数に同期するよう重畳軸６１Ｂの振動回数を変更する。
【００４１】
また、補間処理部３８は、基準軸６１Ａの振動回数および重畳軸６１Ｂの振動回数が異なる場合に、基準軸６１Ａの振動回数を、重畳軸６１Ｂの振動回数に応じた振動回数に変更してもよい。この場合、補間処理部３８は、主軸回転数を重畳軸６１Ｂの振動に同期するよう変更し、基準軸６１Ａの振動が、変更した主軸回転数に同期するよう基準軸６１Ａの振動回数を変更する。
【００４２】
基準軸６１Ａの振動と主軸回転数とを同期させる処理は、主軸６０が１回転する間の基準軸６１Ａの振動回数が一定の振動回数になるよう、基準軸６１Ａの振動回数または主軸回転数を調整する処理である。また、重畳軸６１Ｂの振動と主軸回転数とを同期させる処理は、主軸６０が１回転する間の重畳軸６１Ｂの振動回数が一定の振動回数になるよう、重畳軸６１Ｂの振動回数または主軸回転数を調整する処理である。換言すると、基準軸６１Ａの振動と主軸回転数とを同期させる処理は、基準軸６１Ａの振動周波数（振動数）と主軸回転数とを同期させる処理であり、重畳軸６１Ｂの振動と主軸回転数とを同期させる処理は、重畳軸６１Ｂの振動周波数と主軸回転数とを同期させる処理である。実施の形態１では、基準軸６１Ａの振動を振動回数で定義するので、基準軸６１Ａの振動と主軸回転数との同期を、基準軸６１Ａの振動回数と主軸回転数との同期という場合がある。また、実施の形態１では、重畳軸６１Ｂの振動を振動回数で定義するので、重畳軸６１Ｂの振動と主軸回転数との同期を、重畳軸６１Ｂの振動回数と主軸回転数との同期という場合がある。
【００４３】
なお、基準軸６１Ａにおける一定の振動回数は、可変であり、重畳制御に応じた振動回数を選択することができる。また、重畳軸６１Ｂにおける一定の振動回数は、可変であり、重畳制御に応じた振動回数を選択することができる。
【００４４】
また、数値制御装置１は、重畳制御を行う場合、重畳合成部２８は、基準軸６１Ａの移動量を重畳軸６１Ｂの移動量に合成し、重畳軸６１Ｂの移動が、基準軸６１Ａの移動に重畳するように制御する。よって、刃物台６５Ａの振動と同じ振動が、刃物台６５Ｂにも与えられる。このため、補間処理部３８は、刃物台６５Ｂを振動させる振動指令の振幅から、刃物台６５Ａを振動させる振動指令の振幅を差し引いたうえで、刃物台６５Ｂを振動させる。これにより、差し引かれた振幅は重畳制御によって補われるので、刃物台６５Ｂを、当初の振動指令の振幅で振動させることができる。
【００４５】
移動量発生部２６Ａは、解析処理部３７から基準軸６１Ａの解析結果である移動条件および振動条件を受け取り、基準軸６１Ａの移動条件および振動条件に対する補間処理を行い、補間処理の結果に対応する単位時間当たりの移動量を重畳合成部２８および合成部２７に送る。具体的には、移動量発生部２６Ａは、解析処理部３７が解析した基準軸６１Ａの移動条件に基づいて、工具６６Ａを単位時間で移動させるための工具送りの移動量を算出する機能と、解析処理部３７が解析した基準軸６１Ａの振動条件に基づいて、工具６６Ａを単位時間で振動させるための振動の移動量を算出する機能とを有している。移動量発生部２６Ａは、工具送りの移動量を算出する際には、直線補間、円弧補間などを用いる。また、移動量発生部２６Ａは、工具送りの移動量と振動の移動量とを合成する機能を有している。移動量発生部２６Ａは、合成した移動量を重畳合成部２８および合成部２７に送る。
【００４６】
移動量発生部２６Ｂは、解析処理部３７から重畳軸６１Ｂの解析結果である移動条件および振動条件を受け取り、重畳軸６１Ｂの移動条件および振動条件に対する補間処理を行い、補間処理の結果に対応する単位時間当たりの移動量を重畳合成部２８に送る。具体的には、移動量発生部２６Ｂは、解析処理部３７が解析した重畳軸６１Ｂの移動条件に基づいて、工具６６Ｂを単位時間で移動させる工具送りの移動量を算出する機能と、解析処理部３７が解析した重畳軸６１Ｂの振動条件に基づいて、工具６６Ｂを単位時間で振動させるための振動の移動量を算出する機能とを有している。また、移動量発生部２６Ｂは、工具送りの移動量と振動の移動量とを合成する機能を有している。移動量発生部２６Ｂは、合成した移動量を重畳合成部２８に送る。
【００４７】
重畳合成部２８は、移動量発生部２６Ａが合成した移動量を、移動量発生部２６Ｂが合成した移動量に重畳し、重畳した移動量を合成部２７に送る。
【００４８】
基準軸補間部２１Ａは、振動計算部２２Ａと、振動発生部２４Ａと、振動チェック部２５Ａとを有している。重畳軸補間部２１Ｂは、振動計算部２２Ｂと、振幅計算部である差分計算部２３Ｂと、振動発生部２４Ｂと、振動チェック部２５Ｂとを有している。
【００４９】
振動計算部２２Ａは、主軸回転数、基準軸６１Ａの振動回数、重畳軸６１Ｂの振動回数、および基準軸６１Ａの振幅を共有エリア３４５から読み出し、主軸回転数を、基準軸６１Ａの振動回数に同期する主軸回転数に変更する。換言すると、振動計算部２２Ａは、加工プログラムで規定された主軸回転数である当初の主軸回転数（主軸６０への指令回転数）を、基準軸６１Ａの振動回数に同期する主軸回転数に変更する。さらに、振動計算部２２Ａは、基準軸６１Ａの振動回数と重畳軸６１Ｂの振動回数とが異なる場合には、指令された主軸回転数および振動回数から、基準軸６１Ａおよび重畳軸６１Ｂの振動条件に合う主軸回転数を算出して変更する。振動計算部２２Ａは、変更した主軸回転数を振動計算部２２Ｂおよび合成部２７に送る。
【００５０】
また、振動計算部２２Ａは、重畳軸６１Ｂの振動回数に同期する主軸回転数を振動計算部２２Ｂから受けると、この主軸回転数に同期するよう、基準軸６１Ａの振動回数を変更する。振動計算部２２Ｂから振動計算部２２Ａへ送られてくる主軸回転数は、振動計算部２２Ｂで変更されたものである。振動計算部２２Ａは、基準軸６１Ａの振幅と、変更した基準軸６１Ａの振動回数とを振動発生部２４Ａに送る。
【００５１】
振動発生部２４Ａは、振動計算部２２Ａから送られてきた基準軸６１Ａの振動回数および振幅に基づいて、基準軸６１Ａ用の振動波形（以下、基準振動波形という）を生成する。基準振動波形は、時間に対する各軸方向の位置を示すものである。基準振動波形としては、正弦波などの任意のものを用いることができるが、以下では振動波形が三角波である場合について説明する。振動発生部２４Ａは、生成した基準振動波形を合成部２７に送る。
【００５２】
振動チェック部２５Ａは、重畳軸６１Ｂへの振動指令があるか否かを判定する。振動チェック部２５Ａは、重畳軸６１Ｂへの振動指令が無い場合には、重畳軸６１Ｂへの振動指令が無いことを振動計算部２２Ａ，２２Ｂおよび差分計算部２３Ｂに送る。また、振動チェック部２５Ａは、重畳軸６１Ｂへの振動指令が無い場合には、重畳軸６１Ｂへの振動指令が無いことを合成部２７に通知してもよい。
【００５３】
振動計算部２２Ｂは、主軸回転数、基準軸６１Ａの振動回数、および重畳軸６１Ｂの振動回数を共有エリア３４５から読み出し、主軸回転数を、重畳軸６１Ｂの振動回数に同期する主軸回転数に変更する。換言すると、振動計算部２２Ｂは、加工プログラムで規定された主軸回転数である当初の主軸回転数を、重畳軸６１Ｂの振動回数に同期する主軸回転数に変更する。さらに、振動計算部２２Ｂは、基準軸６１Ａの振動回数と重畳軸６１Ｂの振動回数とが異なる場合には、指令された主軸回転数および振動回数から、基準軸６１Ａおよび重畳軸６１Ｂの振動条件に合う主軸回転数を算出し変更する。振動計算部２２Ｂは、変更した主軸回転数を振動計算部２２Ａおよび合成部２７に送る。
【００５４】
また、振動計算部２２Ｂは、基準軸６１Ａの振動回数に同期する主軸回転数を振動計算部２２Ａから受けると、この主軸回転数に同期するよう、重畳軸６１Ｂの振動回数を変更する。振動計算部２２Ａから振動計算部２２Ｂへ送られてくる主軸回転数は、振動計算部２２Ａで変更されたものである。振動計算部２２Ｂは、変更した重畳軸６１Ｂの振動回数を振動発生部２４Ｂに送る。
【００５５】
差分計算部２３Ｂは、基準軸６１Ａ（刃物台６５Ａ）の振幅および重畳軸６１Ｂ（刃物台６５Ｂ）の振幅を共有エリア３４５から読み出す。差分計算部２３Ｂは、重畳軸６１Ｂの振幅から基準軸６１Ａの振幅を引いた振幅の差分を振幅差分として計算する。差分計算部２３Ｂは、重畳軸６１Ｂの振幅から、計算済みの振幅差分を減算し、減算後の重畳軸６１Ｂの振幅を振動発生部２４Ｂに送る。なお、実際に振動させる重畳軸６１Ｂの振幅の計算方法は、一例を記載しただけであり、実際に振動させる重畳軸６１Ｂの振幅を当初の振動指令の振幅で振動させることができればこの計算方法に限定されない。
【００５６】
振動発生部２４Ｂは、振動計算部２２Ｂから送られてきた重畳軸６１Ｂの振動回数および差分計算部２３Ｂから送られてきた重畳軸６１Ｂの振幅に基づいて、重畳軸６１Ｂ用の振動波形（以下、重畳振動波形という）を生成する。重畳振動波形は、Ｚ２軸方向およびＸ２軸方向を合成した合成方向における工具６６Ｂの時間毎の位置を示すものである。重畳振動波形としては、正弦波などの任意のものを用いることができるが、以下では振動波形が三角波である場合について説明する。振動発生部２４Ｂは、生成した重畳振動波形を合成部２７に送る。
【００５７】
振動チェック部２５Ｂは、基準軸６１Ａへの振動指令があるか否かを判定する。振動チェック部２５Ｂは、基準軸６１Ａへの振動指令が無い場合には、基準軸６１Ａへの振動指令が無いことを振動計算部２２Ａ，２２Ｂおよび差分計算部２３Ｂに送る。また、振動チェック部２５Ｂは、基準軸６１Ａへの振動指令が無い場合には、基準軸６１Ａへの振動指令が無いことを合成部２７に通知してもよい。
【００５８】
本実施の形態では、基準軸６１Ａが第１の駆動軸であり重畳軸６１Ｂが第２の駆動軸である場合には、振動チェック部２５Ａが第１の振動チェック部であり、振動チェック部２５Ｂが第２の振動チェック部である。また、基準軸６１Ａが第２の駆動軸であり重畳軸６１Ｂが第１の駆動軸である場合には、振動チェック部２５Ａが第２の振動チェック部であり、振動チェック部２５Ｂが第１の振動チェック部である。
【００５９】
工具６６Ａ，６６Ｂの移動は、振動切削のための移動と、加工ワーク７０に対して加工を進める方向（送り方向）への移動と、を足し合わせたものである。したがって、合成部２７は、振動切削のための移動量と、加工ワーク７０に対して加工を進めるための移動量とを足し合わせる。振動切削のための工具６６Ａの移動量は、振動発生部２４Ａから送られてくる基準振動波形で示され、振動切削のための工具６６Ｂの移動量は、振動発生部２４Ｂから送られてくる重畳振動波形で示される。
【００６０】
合成部２７は、振動発生部２４Ａから送られてくる基準振動波形と、移動量発生部２６Ａから送られてくる基準軸６１Ａへの移動量とを合成することによって、基準軸６１Ａ用の単位時間あたりの合成移動量を計算する。
【００６１】
また、合成部２７は、振動発生部２４Ｂから送られてくる重畳振動波形と、重畳合成部２８から送られてくる重畳軸６１Ｂへの移動量とを合成することによって、重畳軸６１Ｂ用の単位時間あたりの合成移動量を計算する。
【００６２】
合成部２７は、補間処理の結果（計算結果）を加減速処理部３９に送る。具体的には、合成部２７は、基準軸６１Ａ用の合成移動量、および重畳軸６１Ｂ用の合成移動量を加減速処理部３９に送る。また、合成部２７は、主軸回転数を加減速処理部３９に送る。
【００６３】
加減速処理部３９は、補間処理部３８から供給された補間処理の結果に対して、加速度をなめらかに変化させるための加減速処理を行う。例えば、加減速処理部３９は、移動の開始および停止の際の加減速処理を行う。具体的には、加減速処理部３９は、基準軸６１Ａ用の合成移動量に基づいて、基準軸６１Ａへの速度指令を生成し、重畳軸６１Ｂ用の合成移動量に基づいて、重畳軸６１Ｂへの速度指令を生成する。加減速処理部３９が生成する速度指令は、単位時間あたりの速度を指定した指令である。加減速処理部３９は、Ｘ１軸、Ｘ２軸、Ｚ１軸およびＺ２軸に対して速度指令を生成する。
【００６４】
本実施の形態の加減速処理部３９は、振動発生部２４Ａから基準振動波形を受信した場合には、Ｘ１軸およびＺ１軸への速度指令を生成し、振動発生部２４Ｂから重畳振動波形を受信した場合には、Ｘ２軸およびＺ２軸への速度指令を生成する。加減速処理部３９は、加減速処理の処理結果である速度指令を軸データ出力部４０に送る。加減速処理部３９は、主軸回転数に対応する回転数指令を軸データ出力部４０に送る。
【００６５】
軸データ出力部４０は、速度指令を駆動部９０に出力する。具体的には、軸データ出力部４０は、Ｘ１軸への速度指令をＸ１軸サーボ制御部９１に出力し、Ｚ１軸への速度指令をＺ１軸サーボ制御部９２に出力する。また、軸データ出力部４０は、Ｘ２軸への速度指令をＸ２軸サーボ制御部９３に出力し、Ｚ２軸への速度指令をＺ２軸サーボ制御部９４に出力する。また、軸データ出力部４０は、主軸６０への回転数指令を主軸サーボ制御部２００に出力する。これにより、Ｘ１軸サーボ制御部９１、Ｚ１軸サーボ制御部９２、Ｘ２軸サーボ制御部９３、Ｚ２軸サーボ制御部９４、主軸サーボ制御部２００は、工具６６ＡのＸ１軸方向およびＺ１軸方向の動作と、工具６６ＢのＸ２軸方向およびＺ２軸方向の動作と、主軸６０の回転動作とを制御する。
【００６６】
ここで、数値制御装置１による加工制御の動作手順の概略について説明する。工作機械１１０による加工が開始される際には、ＰＬＣ３６が制御信号処理部３５へサイクルスタート信号を出力し、制御信号処理部３５が、サイクルスタート信号を補間処理部３８に出力する。これにより、補間処理部３８が解析処理部３７を起動する。
【００６７】
この後、解析処理部３７が加工プログラムを１ブロック毎に読み込んで解析し、解析結果である振動条件、移動条件および主軸回転数を共有エリア３４５に格納する。そして、補間処理部３８が、解析処理部３７の解析結果に基づいて、基準軸６１Ａ用の単位時間あたりの合成移動量および重畳軸６１Ｂ用の単位時間あたりの合成移動量を算出して加減速処理部３９に送る。
【００６８】
これにより、加減速処理部３９は、補間処理部３８からの基準振動波形および重畳振動波形に基づいて、各軸への速度指令を生成する。この速度指令は、軸データ出力部４０から駆動部９０に出力され、駆動部９０が速度指令に従って各軸の動作を制御する。
【００６９】
なお、数値制御装置１が制御する工作機械１１０は、加工ワーク７０を振動させてもよい。すなわち、工具６６Ａ，６６Ｂまたは加工ワーク７０を振動させながら加工を行うためには、加工を行う際に、加工ワーク７０と工具６６Ａ，６６Ｂとを相対的に移動させればよい。この場合の処理については、後述する実施の形態２で説明する。本実施の形態では、加工ワーク７０を固定し、工具６６Ａおよび工具６６Ｂを振動させる場合について説明する。
【００７０】
実施の形態１にかかる工作機械１１０は、刃物台６５Ａに基準軸６１Ａがある１スピンドル２刃物台の旋盤である。１スピンドル２刃物台の旋盤は、１つの主軸と２つの刃物台を具備した旋盤である。刃物台６５Ａ，６５Ｂは、タレットともよばれる。工作機械１１０の一例は、タレット旋盤である。
【００７１】
工作機械１１０は、第１スピンドル７５を備えた主軸台を有している。第１スピンドル７５は、加工ワーク７０が取付けられた状態で回転し、これにより加工ワーク７０を回転させる。第１スピンドル７５による加工ワーク７０の回転軸が、主軸台に設けられた主軸６０である。
【００７２】
工作機械１１０は、第１の刃物台である刃物台６５Ａと第２の刃物台である刃物台６５Ｂとを備えており、刃物台６５Ａに基準軸６１Ａが設けられ、刃物台６５Ｂに重畳軸６１Ｂが設けられている。刃物台６５Ａは、Ｘ１軸方向およびＺ１軸方向に移動可能となっており、刃物台６５Ｂは、Ｘ２軸方向およびＺ２軸方向に移動可能となっている。図２に示す工作機械１１０は、Ｚ１軸が基準軸６１Ａであり、Ｚ２軸が重畳軸６１Ｂである場合の一例である。数値制御装置１は、Ｚ軸方向に限らずＸ軸方向に対して重畳制御を行ってもよい。例えば、工作機械１１０は、Ｘ１軸が基準軸であり、Ｘ２軸が重畳軸である場合もある。また、工作機械１１０は、基準軸と重畳軸の組合せを複数有効にしてもよい。すなわち、工作機械１１０は、Ｚ１軸の基準軸に対してＺ２軸が重畳軸であり、かつＸ１軸の基準軸に対してＸ２軸が重畳軸であってもよい。数値制御装置１は、Ｚ軸方向およびＸ軸方向で重畳制御を行う場合、Ｚ１軸方向およびＸ１軸方向を合成した第１の方向を基準軸とし、Ｚ２軸方向およびＸ２軸方向を合成した第２の方向を重畳軸とする。第１の方向は、第２の方向に平行である。
【００７３】
刃物台６５Ａは、基準軸６１Ａ側の刃物台であり、刃物台６５Ｂは、重畳軸６１Ｂ側の刃物台である。刃物台６５Ａ，６５Ｂは、旋回式の刃物台である。刃物台６５Ａは、複数の工具６６Ａを取り付け可能となっており、工具６６Ａを旋回させることで使用する工具６６Ａを切り替える。同様に、刃物台６５Ｂは、複数の工具６６Ｂを取り付け可能となっており、工具６６Ｂを旋回させることで使用する工具６６Ｂを切り替える。
【００７４】
刃物台６５Ａは、Ｚ１軸方向に振動させられることによって工具６６Ａで加工ワーク７０の振動切削加工を行う。刃物台６５Ｂは、Ｚ２軸方向とＸ２軸方向とを合成した方向に振動させられることによって工具６６Ｂで加工ワーク７０の振動切削加工を行う。刃物台６５ＢのＺ２軸方向の振動成分には、重畳制御によるＺ１軸方向の振動成分が含まれている。なお、以下の説明では、説明の便宜上、刃物台６５Ａの振動を工具６６Ａの振動として説明する場合がある。また、刃物台６５Ｂの振動を工具６６Ｂの振動として説明する場合がある。
【００７５】
工作機械１１０における振動の制約条件は、以下の（Ｌ１−１）から（Ｌ１−３）である。
（Ｌ１−１）振動切削中の主軸回転数は、基準軸６１Ａ側と重畳軸６１Ｂ側とで同じでなければならない。
（Ｌ１−２）主軸６０が１回転する間の工具６６Ａ，６６Ｂの振動回数は、基準軸６１Ａ側と重畳軸６１Ｂ側とで異なっていてもよい。ただし、基準軸６１Ａ側と重畳軸６１Ｂ側とは、ともに振動切削中の主軸回転数に同期した振動回数で動作しなければならない。
（Ｌ１−３）振動の振幅は、基準軸６１Ａ側と重畳軸６１Ｂ側とで異なっていてもよい。
【００７６】
（Ｌ１−２）および（Ｌ１−３）のように、振動回数および振幅が、基準軸６１Ａ側と重畳軸６１Ｂ側とで異なっていてもよいのは、工作機械１１０では、基準軸６１Ａの振動が重畳軸６１Ｂに伝わらないからである。
【００７７】
図３は、実施の形態１にかかる数値制御装置が用いる加工プログラムの一例を示す図である。加工プログラム８１は、数値制御装置１が工作機械１１０を制御する際に用いられる。このため、加工プログラム８１は、基準軸６１Ａ用の加工プログラム８１０Ａと、重畳軸６１Ｂ用の加工プログラム８１０Ｂとを含んでいる。
【００７８】
加工プログラム８１内の主軸回転数指令であるＭ３  Ｓ１は、主軸６０への主軸回転数の指令である。Ｍ３  Ｓ１＝１２００は、主軸６０を１分間あたり１２００回転させる指令である。また、Ｇ０は位置決め指令であり、Ｇ１２６は、重畳制御指令であり、Ｇ１６５は低周波振動指令であり、Ｇ１は移動指令である。Ｇ１６５で規定される「Ａ」は振動の振幅であり、「Ｄ」は主軸６０が１回転する間の振動回数である。
【００７９】
加工プログラム８１では、加工プログラム８１０ＡにおけるＧ０によって工具６６Ａの位置決めが行われ、加工プログラム８１０ＢにおけるＧ０によって工具６６Ｂの位置決めが行われる。
【００８０】
Ｇ１２６が用いられる場合、Ｇ１２６で指定された軸の移動が重畳制御される。加工プログラム８１０ＡにおけるＧ１２６は、Ｚ１軸をＺ２軸に重畳制御させる指令である。具体的には、Ｇ１２６は、重畳軸６１Ｂの移動を、基準軸６１Ａの移動に重畳させる指令である。基準軸６１Ａの移動量が重畳軸６１Ｂの移動量に合成されることにより、重畳軸６１ＢであるＺ２軸の動作が、基準軸６１ＡであるＺ１軸の動作の上に重畳される。
【００８１】
また、基準軸６１Ａ用の加工プログラム８１０Ａにおいて、Ｇ１６５が用いられる場合、Ｇ１６５で指定された振幅および振動回数で工具６６ＡがＺ１軸方向に振動させられる。ここでは、工具６６Ａに対し、振幅を０．２ｍｍ、主軸６０が１回転する間の振動回数を０．５回で振動させる場合を示している。
【００８２】
また、重畳軸６１Ｂ用の加工プログラム８１０Ｂにおいて、Ｇ１６５が用いられる場合、Ｇ１６５で指定された振幅および振動回数で工具６６Ｂが振動させられる。ここでは、工具６６Ｂに対し、振幅を０．３ｍｍ、主軸６０が１回転する間の振動回数を４．５回で振動させる場合を示している。
【００８３】
基準軸６１Ａが第１の駆動軸の場合、基準軸６１ＡでのＧ１６５が第１の振動指令であり、重畳軸６１Ｂが第２の駆動軸の場合、重畳軸６１ＢでのＧ１６５が第２の振動指令である。また、基準軸６１Ａが第２の駆動軸の場合、基準軸６１ＡでのＧ１６５が第２の振動指令であり、重畳軸６１Ｂが第１の駆動軸の場合、重畳軸６１ＢでのＧ１６５が第１の振動指令である。
【００８４】
加工プログラム８１が用いられる場合、振動計算部２２Ａ，２２Ｂは、以下の（Ｍ１−１）から（Ｍ１−３）の何れかの方法で重畳制御用の新たな振動回数および重畳制御用の新たな主軸回転数を計算し変更する。これにより、変更後の振動回数および主軸回転数で各軸が制御される。
【００８５】
（Ｍ１−１）重畳軸６１Ｂの振動回数を基準軸６１Ａの振動回数に応じて変更する方法
この場合、振動計算部２２Ａは、基準軸６１Ａの振動回数であるＤ＝０．５と、主軸６０への主軸回転数指令であるＳ１＝１２００から、基準軸６１Ａの振動回数に同期することができる主軸回転数を計算する。振動計算部２２Ａは、数値制御装置１内の情報を用いて主軸回転数を計算する。振動計算部２２Ａが計算した主軸回転数が、振動切削の際の実際の主軸回転数となる。振動計算部２２Ａは、主軸回転数に複数の候補がある場合には、当初の主軸回転数である１２００（回／ｍｉｎ）に近いものを採用する。
【００８６】
振動計算部２２Ａが計算した主軸回転数が、１２０５（回／ｍｉｎ）であるとする。振動計算部２２Ａは、計算した主軸回転数を振動計算部２２Ｂに送る。振動計算部２２Ｂは、計算の結果である１２０５（回／ｍｉｎ）に同期するように、重畳軸６１Ｂの振動回数を計算し変更する。振動計算部２２Ｂは、数値制御装置１内の情報を用いて重畳軸６１Ｂの振動回数を計算する。振動計算部２２Ｂは、重畳軸６１Ｂの振動回数に複数の候補がある場合には、当初の重畳軸６１Ｂの振動回数である４．５回に近いものを採用する。ここでは、振動計算部２２Ｂが計算した重畳軸６１Ｂの振動回数が３．５回であるとする。
【００８７】
（Ｍ１−２）基準軸６１Ａの振動回数を重畳軸６１Ｂの振動回数に応じて変更する方法
この場合、振動計算部２２Ｂは、重畳軸６１Ｂの振動回数であるＤ＝４．５と、主軸６０への主軸回転数指令であるＳ１＝１２００から、重畳軸６１Ｂの振動回数に同期することができる主軸回転数を計算する。振動計算部２２Ｂは、数値制御装置１内の情報を用いて主軸回転数を計算する。振動計算部２２Ｂが計算した主軸回転数が、振動切削の際の実際の主軸回転数となる。振動計算部２２Ｂは、主軸回転数に複数の候補がある場合には、当初の主軸回転数である１２００（回／ｍｉｎ）に近いものを採用する。
【００８８】
振動計算部２２Ｂが計算した主軸回転数が、１２５０（回／ｍｉｎ）であるとする。振動計算部２２Ｂは、計算した主軸回転数を振動計算部２２Ａに送る。振動計算部２２Ａは、計算の結果である１２５０（回／ｍｉｎ）に同期するように、基準軸６１Ａの振動回数を計算し変更する。振動計算部２２Ａは、数値制御装置１内の情報を用いて基準軸６１Ａの振動回数を計算する。振動計算部２２Ａは、基準軸６１Ａの振動回数に複数の候補がある場合には、当初の基準軸６１Ａの振動回数である０．５回に近いものを採用する。ここでは、振動計算部２２Ａが計算した重畳軸６１Ｂの振動回数が１．５回であるとする。
【００８９】
（Ｍ１−３）基準軸６１Ａの振動回数と重畳軸６１Ｂの振動回数の平均をとる方法
基準軸６１Ａの振動回数と重畳軸６１Ｂの振動回数の平均は、振動計算部２２Ａが計算してもよいし振動計算部２２Ｂが計算してもよい。ここでは、振動計算部２２Ａが基準軸６１Ａの振動回数と重畳軸６１Ｂの振動回数の平均を計算する場合について説明する。
【００９０】
振動計算部２２Ａは、基準軸６１Ａの振動回数であるＤ＝０．５と、重畳軸６１Ｂの振動回数であるＤ＝４．５との平均である平均回数を計算する。ここでの平均回数は、２．５回である。振動計算部２２Ａは、計算結果を基準軸６１Ａの振動回数および重畳軸６１Ｂの振動回数に設定する。
【００９１】
また、振動計算部２２Ａは、計算した平均回数の２．５回に同期することができる主軸回転数を計算する。振動計算部２２Ａは、数値制御装置１内の情報を用いて主軸回転数を計算する。振動計算部２２Ａは、主軸回転数に複数の候補がある場合には、当初の主軸回転数である１２００（回／ｍｉｎ）に近いものを採用する。ここでは、振動計算部２２Ａが計算した主軸回転数が、１２２７（回／ｍｉｎ）であるとする。
【００９２】
つぎに、工作機械１１０を制御する際の処理手順について説明する。図４は、実施の形態１にかかる数値制御装置の第１の制御処理の処理手順を示すフローチャートである。図４は、数値制御装置１による工作機械１１０への制御処理手順を示している。ここでの第１の制御処理は、重畳軸６１Ｂの振動回数を基準軸６１Ａの振動回数に応じた振動回数に変更する場合の制御処理である。
【００９３】
振動指令解析部１１Ａは、基準軸６１Ａ用の加工プログラム８１０Ａに含まれる振動指令を解析して（ステップＳ１１０）、基準軸６１Ａの振動条件を生成する。また、振動指令解析部１１Ｂは、重畳軸６１Ｂ用の加工プログラム８１０Ｂに含まれる振動指令を解析して（ステップＳ１２０）、重畳軸６１Ｂの振動条件を生成する。本実施の形態では、加工プログラム８１０Ａの振動指令に基準軸６１Ａの振幅である第１の振幅が含まれており、加工プログラム８１０Ｂの振動指令に重畳軸６１Ｂの振幅である第２の振幅が含まれている。
【００９４】
振動指令解析部１１Ａは、基準軸６１Ａの振動条件を共有エリア３４５に格納し、振動指令解析部１１Ｂは、重畳軸６１Ｂの振動条件を共有エリア３４５に格納する。振動計算部２２Ａ，２２Ｂは、基準軸６１Ａの振動回数と、重畳軸６１Ｂの振動回数と、主軸回転数とを共有エリア３４５から読み出す。
【００９５】
振動計算部２２Ａは、基準軸６１Ａの振動回数と、重畳軸６１Ｂの振動回数とが異なるか否かを判定する（ステップＳ１３０）。基準軸６１Ａの振動回数と、重畳軸６１Ｂの振動回数とが異なる場合（ステップＳ１３０、Ｙｅｓ）、振動計算部２２Ａ，２２Ｂは、前述の（Ｍ１−１）の処理を実行する。具体的には、振動計算部２２Ａが、基準軸６１Ａの振動回数に同期する主軸回転数を計算し、振動計算部２２Ｂが、この主軸回転数に同期するよう重畳軸６１Ｂの振動回数を変更する。このように、振動計算部２２Ａ，２２Ｂは、重畳軸６１Ｂの振動回数を基準軸６１Ａの振動回数に応じて変更する（ステップＳ１４０）。
【００９６】
なお、ステップＳ１４０では、振動計算部２２Ａ，２２Ｂが、前述の（Ｍ１−２）の処理によって、基準軸６１Ａの振動回数を重畳軸６１Ｂの振動回数に応じて変更してもよい。また、ステップＳ１４０では、振動計算部２２Ａまたは振動計算部２２Ｂが、前述の（Ｍ１−３）の処理によって、基準軸６１Ａの振動回数と重畳軸６１Ｂの振動回数との平均回数を計算し、平均回数を基準軸６１Ａの振動回数および重畳軸６１Ｂの振動回数に設定してもよい。
【００９７】
振動計算部２２Ａ，２２Ｂは、上述の（Ｍ１−１）から（Ｍ１−３）の何れかの処理を実行することによって、基準軸６１Ａの振動回数と、重畳軸６１Ｂの振動回数と、主軸回転数とを求める。振動計算部２２Ａは、基準軸６１Ａの振動回数を振動発生部２４Ａに送り、振動計算部２２Ｂは、重畳軸６１Ｂの振動回数を、振動発生部２４Ｂに送る。また、振動計算部２２Ａまたは振動計算部２２Ｂが、主軸回転数を合成部２７に送る。
【００９８】
差分計算部２３Ｂは、基準軸６１Ａの振幅、および重畳軸６１Ｂの振幅を共有エリア３４５から読み出す。差分計算部２３Ｂは、重畳軸６１Ｂの振幅と基準軸６１Ａの振幅との差分である振幅差分を計算する（ステップＳ１５０）。さらに、差分計算部２３Ｂは、重畳軸６１Ｂの振幅から振幅差分を減算する（ステップＳ１６０）。差分計算部２３Ｂは、計算結果である、重畳軸６１Ｂの振幅を振動発生部２４Ｂに送る。
【００９９】
重畳軸６１Ｂの振幅が、基準軸６１Ａの振幅よりも大きい場合、差分は正の値となるので、重畳軸６１Ｂの振幅から正の値の振幅が差し引かれることとなる。これにより、重畳軸６１Ｂの振幅は当初のものよりも小さくなる。
【０１００】
一方、重畳軸６１Ｂの振幅が、基準軸６１Ａの振幅よりも小さい場合、差分は負の値となるので、重畳軸６１Ｂの振幅から負の値の振幅が差し引かれることとなる。これにより、重畳軸６１Ｂの振幅は当初のものよりも大きくなる。
【０１０１】
このように、差分計算部２３Ｂは、重畳軸６１Ｂの振幅である第２の振幅から、基準軸６１Ａの振幅である第１の振幅を差し引いた振幅差分に基づいて、刃物台６５Ｂを振動させる際の振幅である第３の振幅を計算する。
【０１０２】
振動発生部２４Ｂは、振動計算部２２Ｂから送られてきた重畳軸６１Ｂの振動回数、および差分計算部２３Ｂから送られてきた重畳軸６１Ｂの振幅に基づいて、重畳振動波形を生成する。
【０１０３】
また、振動発生部２４Ａは、振動計算部２２Ｂから送られてきた基準軸６１Ａの振動回数および基準軸６１Ａの振幅に基づいて、基準振動波形を生成する。
【０１０４】
振動発生部２４Ａは、生成した基準振動波形を合成部２７に送り、振動発生部２４Ｂは、生成した重畳振動波形を合成部２７に送る。合成部２７は、基準振動波形と、基準軸６１Ａへの移動条件の補間処理の結果である移動量とを合成した、基準軸６１Ａ用の合成移動量を計算する。また、合成部２７は、重畳振動波形と、重畳軸６１Ｂへの移動条件の補間処理の結果である移動量とを合成した、重畳軸６１Ｂ用の合成移動量を計算する。
【０１０５】
加減速処理部３９は、基準軸６１Ａ用の合成移動量に基づいて、基準軸６１Ａへの速度指令を生成し、重畳軸６１Ｂ用の合成移動量に基づいて、重畳軸６１Ｂへの速度指令を生成する。また、加減速処理部３９は、主軸回転数に対応する回転数指令を生成する。加減速処理部３９は、主軸６０への回転数指令、基準軸６１Ａへの速度指令、および重畳軸６１Ｂへの速度指令を軸データ出力部４０に送る。これにより、軸データ出力部４０は、回転数指令、および速度指令といった指令を駆動部９０に出力する（ステップＳ１７０）。
【０１０６】
この結果、（Ｍ１−１）の方法が用いられた場合には、振動計算部２２Ｂが計算して変更した重畳軸６１Ｂの振動回数に従って、Ｚ２軸の振動動作が制御されることとなる。また、振動計算部２２Ａが計算して変更した主軸回転数に従って主軸６０の回転が制御されることとなる。
【０１０７】
具体的には、工作機械１１０は、振動計算部２２Ａが計算した主軸回転数で第１スピンドル７５が加工ワーク７０を回転させ、振動計算部２２Ｂが計算した振動回数で刃物台６５Ｂが工具６６Ｂを振動させる。この場合において、刃物台６５Ａは、振動回数を変更することなく工具６６Ａを振動させる。
【０１０８】
また、（Ｍ１−２）の方法が用いられた場合には、振動計算部２２Ａが計算して変更した基準軸６１Ａの振動回数に従って、Ｚ１軸の振動動作が制御されることとなる。また、振動計算部２２Ｂが計算して変更した主軸回転数に従って主軸６０の回転が制御されることとなる。
【０１０９】
具体的には、工作機械１１０は、振動計算部２２Ｂが計算した主軸回転数で第１スピンドル７５が加工ワーク７０を回転させ、振動計算部２２Ａが計算した振動回数で刃物台６５Ａが工具６６Ａを振動させる。この場合において、刃物台６５Ｂは、振動回数を変更することなく工具６６Ｂを振動させる。
【０１１０】
また、（Ｍ１−３）の方法が用いられた場合には、振動計算部２２Ａが設定した基準軸６１Ａの振動回数に従って、Ｚ１軸の動作が制御され、振動計算部２２Ｂが設定した重畳軸６１Ｂの振動回数に従って、Ｚ２軸の振動動作が制御されることとなる。また、振動計算部２２Ａまたは振動計算部２２Ｂが計算した主軸回転数に従って主軸６０の回転が制御されることとなる。
【０１１１】
具体的には、工作機械１１０は、振動計算部２２Ａまたは振動計算部２２Ｂが計算した主軸回転数で第１スピンドル７５が加工ワーク７０を回転させる。また、振動計算部２２Ａが計算した振動回数で刃物台６５Ａが工具６６Ａを振動させ、振動計算部２２Ｂが計算した振動回数で刃物台６５Ｂが工具６６Ｂを振動させる。
【０１１２】
なお、振動計算部２２Ａ，２２Ｂは、ステップＳ１４０において、（Ｍ１−１）から（Ｍ１−３）の全ての処理を実行してもよい。この場合、振動計算部２２Ａ，２２Ｂは、（Ｍ１−１）から（Ｍ１−３）による計算結果のうち、当初の主軸回転数との差が少ない主軸回転数を選択する。
【０１１３】
また、数値制御装置１へは、予め（Ｍ１−１）から（Ｍ１−３）の何れを採用するかを設定しておいてもよいし、ユーザが（Ｍ１−１）から（Ｍ１−３）の何れを採用するかを選択してもよい。また、振動計算部２２Ａ，２２Ｂは、先にＧ１６５の指令を実行する側に合わせて、（Ｍ１−１）または（Ｍ１−２）を選択してもよい。すなわち、基準軸６１Ａで先にＧ１６５の指令を実行する場合、振動計算部２２Ａ，２２Ｂは、（Ｍ１−１）を適用し、重畳軸６１Ｂで先にＧ１６５の指令を実行する場合、振動計算部２２Ａ，２２Ｂは、（Ｍ１−２）を適用する。
【０１１４】
このように、制御演算部２は、基準軸６１Ａの振動回数、重畳軸６１Ｂの振動回数および主軸回転数の少なくとも１つを変更して、基準軸６１Ａ、重畳軸６１Ｂおよび主軸６０を制御する。
【０１１５】
ところで、加工プログラム８１の中には、基準軸６１Ａへの振動指令しかなく重畳軸６１Ｂへの振動指令が無い場合がある。この場合の処理手順について説明する。図５は、実施の形態１にかかる数値制御装置の第２の制御処理の処理手順を示すフローチャートである。ここでの第２の制御処理は、重畳軸６１Ｂへの振動指令が無い場合に重畳軸６１Ｂに振動回数を設定する場合の制御処理である。
【０１１６】
ここでは、加工プログラム８１内に重畳軸６１Ｂへの振動指令が無い場合に、数値制御装置１が、重畳軸６１Ｂに基準軸６１Ａと同じ振動指令を出力する場合の処理について説明する。
【０１１７】
図５におけるステップＳ２１０，２２０の処理は、ステップＳ１１０，Ｓ１２０の処理と同じであるので、その説明を省略する。
【０１１８】
振動チェック部２５Ａは、振動指令解析部１１Ｂによって重畳軸６１Ｂへの振動条件が生成されたか否かに基づいて、重畳軸６１Ｂへの振動指令があるか否かを判定する（ステップＳ２３０）。また、振動チェック部２５Ｂは、振動指令解析部１１Ａによって基準軸６１Ａへの振動条件が生成されたか否かに基づいて、基準軸６１Ａへの振動指令があるか否かを判定する。
【０１１９】
ここでは、基準軸６１Ａへの振動指令があるので、振動チェック部２５Ｂは、基準軸６１Ａへの振動指令があることを振動計算部２２Ａ，２２Ｂに通知する。これにより、振動計算部２２Ａ，２２Ｂは、共有エリア３４５から基準軸６１Ａの振動条件を読み出す。
【０１２０】
重畳軸６１Ｂへの振動指令がある場合（ステップＳ２３０、Ｙｅｓ）、振動チェック部２５Ａは、重畳軸６１Ｂへの振動指令があることを振動計算部２２Ａ，２２Ｂに通知する。これにより、振動計算部２２Ａ，２２Ｂは、共有エリア３４５から重畳軸６１Ｂの振動条件を読み出す。この後、数値制御装置１は、図４で説明したステップＳ１３０以降の処理を実行する。
【０１２１】
一方、重畳軸６１Ｂへの振動指令がない場合（ステップＳ２３０、Ｎｏ）、振動チェック部２５Ａは、重畳軸６１Ｂへの振動指令がないことを振動計算部２２Ａ，２２Ｂおよび差分計算部２３Ｂに通知する。これにより、振動計算部２２Ａ，２２Ｂは、ともに基準軸６１Ａの振動の情報を読み出す。振動の情報には、振動回数と振幅が含まれている。そして、振動計算部２２Ａは、基準軸６１Ａの振動の情報に基づいて、基準軸６１Ａの新たな振動の情報および新たな主軸回転数を計算し、振動計算部２２Ｂは、基準軸６１Ａの振動の情報に基づいて、重畳軸６１Ｂの新たな振動の情報を計算する。このように、重畳軸６１Ｂへの振動指令がない場合には、振動計算部２２Ｂは、基準軸６１Ａの振動に基づいて、重畳軸６１Ｂの振動を計算する（ステップＳ２４０）。なお、差分計算部２３Ｂは、振幅差分を計算しない。
【０１２２】
この後、図４のフローチャートで説明した処理と同様の処理によって、駆動部９０への指令が生成されて駆動部９０へ出力される（ステップＳ２５０）。
【０１２３】
なお、振動チェック部２５Ａは、重畳軸６１Ｂへの振動指令がないことを合成部２７に通知してもよい。この場合、合成部２７は、振動発生部２４Ａから送られてくる基準振動波形と同じ波形を重畳振動波形に設定したうえで、重畳振動波形と、重畳軸６１Ｂへの移動量とを合成する。
【０１２４】
また、加工プログラム８１の中には、重畳軸６１Ｂへの振動指令しかなく基準軸６１Ａへの振動指令が無い場合がある。この場合も、数値制御装置１は、上述した図５のフローチャートと同様の処理手順によって、基準軸６１Ａの振動条件に重畳軸６１Ｂの振動条件を適用する。なお、数値制御装置１は、図５のステップＳ２３０において、重畳軸６１Ｂへの振動指令と、基準軸６１Ａへの振動指令との両方があるか否かを判定してもよい。
【０１２５】
また、加工プログラム８１の中に重畳軸６１Ｂへの振動指令が無い場合には、数値制御装置１は、基準軸６１Ａにのみ振動指令を出力してもよい。この場合の処理手順について説明する。
【０１２６】
図６は、実施の形態１にかかる数値制御装置の第３の制御処理の処理手順を示すフローチャートである。ここでは、加工プログラム８１内に重畳軸６１Ｂへの振動指令が無い場合に、数値制御装置１が、基準軸６１Ａにのみ振動指令を出力する場合の処理について説明する。ここでの第３の制御処理は、重畳軸６１Ｂへの振動指令が無い場合に基準軸６１Ａ側のみを振動させる場合の制御処理である。
【０１２７】
図６におけるステップＳ３１０からＳ３３０の処理は、図５におけるステップＳ２１０からＳ２３０の処理と同様の処理であるので、その説明は省略する。ステップＳ３３０において、重畳軸６１Ｂへの振動指令がない場合（ステップＳ３３０、Ｎｏ）、振動チェック部２５Ａは、重畳軸６１Ｂへの振動指令がないことを振動計算部２２Ａ，２２Ｂおよび差分計算部２３Ｂに通知する。この場合の振動計算部２２Ｂは、基準軸６１Ａの振動条件を読み出さず、重畳軸６１Ｂの振動条件を計算しない。振動計算部２２Ａは、基準軸６１Ａの振動条件に基づいて、新たな主軸回転数および重畳制御用の新たな基準軸６１Ａの振動回数を計算する。
【０１２８】
この後、図４のフローチャートで説明した場合と同様の処理によって、駆動部９０への指令が生成されて駆動部９０へ出力される。この場合において、軸データ出力部４０は、基準軸６１Ａにのみ、振動条件に対応する速度指令を出力し（ステップＳ３４０）、重畳軸６１Ｂへは振動条件に対応する速度指令を出力しない。換言すると、軸データ出力部４０は、基準軸６１Ａにのみ、移動条件および振動条件に対応する速度指令を出力し、重畳軸６１Ｂへは移動条件に対応する速度指令を出力する。
【０１２９】
また、加工プログラム８１の中には、重畳軸６１Ｂへの振動指令しかなく基準軸６１Ａへの振動指令が無い場合がある。この場合も、数値制御装置１は、上述した図６のフローチャートと同様の処理手順によって、基準軸６１Ａの振動条件に重畳軸６１Ｂの振動条件を適用する。
【０１３０】
図５で説明した処理が実行されることにより、基準軸６１Ａと重畳軸６１Ｂとは、振動動作および移動動作が同じになる。一方、図６で説明した処理が実行されることにより、重畳軸６１Ｂは、振動しないので、基準軸６１Ａと重畳軸６１Ｂとは、移動動作が同じになる。
【０１３１】
数値制御装置１へは、予め図５で説明した処理と図６で説明した処理との何れを実行するかを設定しておいてもよいし、ユーザが何れを採用するかを選択してもよい。図５で説明した処理と図６で説明した処理の何れを実行させるかは、何れの方法で決定してもよい。図５で説明した処理と図６で説明した処理は、例えば、パラメータを用いて指定されてもよいし、加工プログラム８１内で指定されてもよい。
【０１３２】
なお、刃物台６５Ａも刃物台６５Ｂと同様に、２軸方向を合成した方向に移動および振動させてもよい。この場合、刃物台６５Ａは、Ｘ１軸方向とＺ１軸方向を合成した方向、すなわちＸ１軸方向およびＺ１軸方向を用いた補間方向に移動および振動する。
【０１３３】
このように、実施の形態１では、重畳軸６１Ｂへの振動を基準軸６１Ａへの振動に応じて変更するか、または基準軸６１Ａへの振動を重畳軸６１Ｂへの振動に応じて変更している。これにより、基準軸６１Ａと重畳軸６１Ｂとで異なる振動条件が設定されている場合であっても、基準軸６１Ａおよび重畳軸６１Ｂの両方で同時に所望の振動を行わせることができる。したがって、数値制御装置１は、重畳制御を行う場合にも基準軸６１Ａおよび重畳軸６１Ｂで所望の低周波振動切削を実行させることが可能となる。また、加工ワーク７０の異なる箇所を同時加工するので、加工時間を短縮することが出来る効果を有する。
【０１３４】
実施の形態２．
つぎに、図７から図２０を用いてこの発明の実施の形態２について説明する。実施の形態２では、主軸台に基準軸がある１スピンドル２刃物台の旋盤に対して、重畳制御および低周波振動切削の制御を行う。
【０１３５】
図７は、実施の形態２にかかる工作機械の構成を示す図である。図７では、図２と同様に、紙面の横方向がＺ軸方向であり、紙面の縦方向がＸ軸方向である。図７の各構成要素のうち図２に示す実施の形態１の工作機械１１０と同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
【０１３６】
実施の形態２にかかる工作機械１２０は、１スピンドル２刃物台の旋盤である。工作機械１２０の一例は、自動旋盤である。工作機械１２０では、第１スピンドル７５による加工ワーク７０の回転軸が、主軸６０であり、この主軸６０をＺ軸方向に移動させるＺ１軸が基準軸６２Ａである。
【０１３７】
工作機械１２０は、第１の刃物台である刃物台６５Ａ´と第２の刃物台である刃物台６５Ｂとを備えており、刃物台６５Ｂに重畳軸６１Ｂが設けられている。刃物台６５Ａ´は、Ｘ１軸方向に移動可能となっており、刃物台６５Ｂは、Ｘ２軸方向およびＺ２軸方向に移動可能となっている。また、加工ワーク７０は、Ｚ１軸方向に移動可能となっている。なお、ここでのＺ１軸方向は、図２で説明したＺ１軸方向と正方向が逆向きとなっているが、Ｚ１軸方向は、回転軸と同じ方向であれば何れが正方向であってもよい。このように、工作機械１２０では、Ｚ１軸が基準軸６２Ａであり、Ｚ２軸が重畳軸６１Ｂである。なお、工作機械１２０は、刃物台６５Ａ´に重畳軸６１Ｂが設けられてもよい。
【０１３８】
刃物台６５Ａ´は、刃物台６５Ａと同様に旋回式の刃物台である。刃物台６５Ａ´は、刃物台６５Ａと比較して、移動方向がＸ１軸方向だけであり、Ｚ１軸方向に移動しない点が異なる。
【０１３９】
工作機械１２０では、第１スピンドル７５が加工ワーク７０をＺ１軸方向に振動させ、刃物台６５Ｂが工具６６ＢをＺ２軸方向に振動させることによって、工具６６Ａ，６６Ｂで加工ワーク７０の振動切削加工を行う。
【０１４０】
工作機械１２０における振動の制約条件は、以下の（Ｌ２−１）から（Ｌ２−３）である。
（Ｌ２−１）振動切削中の主軸回転数は、基準軸６２Ａ側と重畳軸６１Ｂ側とで同じでなければならない。
（Ｌ２−２）主軸６０が１回転する間の工具６６Ａ，６６Ｂの振動回数は、基準軸６２Ａ側と重畳軸６１Ｂ側とで同じでなければならない。
（Ｌ２−３）振動の振幅は、基準軸６２Ａ側と重畳軸６１Ｂ側とで異なっていてもよい。ただし、基準軸６２Ａ側の振動を考量して、重畳軸６１Ｂ側を振動させなければならない。
【０１４１】
（Ｌ２−２）のように、振動回数が、基準軸６２Ａ側と重畳軸６１Ｂ側とで同じでなければならないのは、工作機械１２０では、加工ワーク７０が振動するので、基準軸６２Ａの振動が重畳軸６１Ｂに伝わるからである。工作機械１２０では、振動回数が、基準軸６２Ａ側と重畳軸６１Ｂ側とで同じでなければ、重畳軸６１Ｂ側の振動が正弦波または三角波といった一定形状の波でなくなる。
【０１４２】
また、（Ｌ２−３）のように、基準軸６２Ａ側の振動を考量して重畳軸６１Ｂ側を振動させなければならないのは、工作機械１２０では、加工ワーク７０が振動するので、基準軸６２Ａの振動が重畳軸６１Ｂに伝わるからである。
【０１４３】
図８は、実施の形態２にかかる数値制御装置が用いる加工プログラムの一例を示す図である。なお、加工プログラム８２Ｐのうち、実施の形態１の図３で説明した加工プログラム８１と同様の指令については、その説明を省略する。
【０１４４】
加工プログラム８２Ｐは、数値制御装置１が工作機械１２０を制御する際に用いられる。このため、加工プログラム８２Ｐは、基準軸６２Ａ用の加工プログラム８２０Ａと、重畳軸６１Ｂ用の加工プログラム８２０Ｂとを含んでいる。
【０１４５】
加工プログラム８２０ＡでのＧ１６５は、加工ワーク７０への基準軸６２Ａの方向の低周波振動指令である。したがって、基準軸６２Ａ用の加工プログラム８２０Ａにおいて、Ｇ１６５が用いられる場合、Ｇ１６５で指定された振幅および振動回数で加工ワーク７０が基準軸６２Ａの方向に振動させられる。ここでは、工具６６Ａに対し、振幅を０．２ｍｍ、主軸６０が１回転する間の振動回数を２．５回で振動させる場合を示している。また、重畳軸６１Ｂ用の加工プログラム８２０Ｂでは、工具６６Ｂに対し、振幅を０．３ｍｍ、主軸６０が１回転する間の振動回数を４．５回で振動させる場合を示している。また、加工プログラム８２０Ａでは、Ｍ３  Ｓ１＝１２００となっているので、主軸６０への主軸回転数指令は１２００回転である。
【０１４６】
加工プログラム８２Ｐが用いられる場合、振動計算部２２Ａは、以下の（Ｍ２−１）から（Ｍ２−３）の何れかの方法で振動回数および主軸回転数を計算し変更する。これにより、変更後の振動回数および主軸回転数で各軸が制御される。
【０１４７】
（Ｍ２−１）重畳軸６１Ｂの振動回数を基準軸６２Ａの振動回数に合わせる方法
この場合、振動計算部２２Ｂは、重畳軸６１Ｂの振動回数であるＤ＝４．５を、基準軸６２Ａの振動回数であるＤ＝２．５に変更する。さらに、振動計算部２２Ｂは、重畳軸６１Ｂの振動回数であるＤ＝２．５と、主軸６０への主軸回転数指令であるＳ１＝１２００から、基準軸６２Ａ側および重畳軸６１Ｂの振動回数に同期することができる主軸回転数を計算する。振動計算部２２Ｂは、数値制御装置１内の情報を用いて主軸回転数を計算する。振動計算部２２Ｂが計算する主軸回転数が、振動切削の際の実際の主軸回転数となる。振動計算部２２Ｂは、主軸回転数に複数の候補がある場合には、当初の主軸回転数である１２００（回／ｍｉｎ）に近いものを採用する。ここでは、振動計算部２２Ｂが計算した主軸回転数が、１２２７（回／ｍｉｎ）であるとする。
【０１４８】
（Ｍ２−２）基準軸６２Ａの振動回数を重畳軸６１Ｂの振動回数に合わせる方法
この場合、振動計算部２２Ａは、基準軸６２Ａの振動回数であるＤ＝２．５を、重畳軸６１Ｂの振動回数であるＤ＝４．５に変更する。さらに、振動計算部２２Ａは、基準軸６２Ａの振動回数であるＤ＝４．５と、主軸６０への主軸回転数指令であるＳ１＝１２００から、基準軸６２Ａ側および重畳軸６１Ｂの振動回数に同期することができる主軸回転数を計算する。振動計算部２２Ａは、数値制御装置１内の情報を用いて主軸回転数を計算する。振動計算部２２Ａが計算する主軸回転数が、振動切削の際の実際の主軸回転数となる。振動計算部２２Ａは、主軸回転数に複数の候補がある場合には、当初の主軸回転数である１２００（回／ｍｉｎ）に近いものを採用する。ここでは、振動計算部２２Ａが計算した主軸回転数が、１２５０（回／ｍｉｎ）であるとする。なお、振動計算部２２Ｂが、主軸回転数を計算してもよい。
【０１４９】
（Ｍ２−３）基準軸６２Ａの振動回数と重畳軸６１Ｂの振動回数の平均をとる方法
基準軸６２Ａの振動回数と重畳軸６１Ｂの振動回数の平均は、振動計算部２２Ａが計算してもよいし振動計算部２２Ｂが計算してもよい。ここでは、振動計算部２２Ａが基準軸６２Ａの振動回数と重畳軸６１Ｂの振動回数の平均を計算する場合について説明する。
【０１５０】
振動計算部２２Ａは、基準軸６２Ａの振動回数であるＤ＝２．５と、重畳軸６１Ｂの振動回数であるＤ＝４．５との平均である平均回数を計算する。ここでの平均回数は、３．５回である。振動計算部２２Ａは、計算結果を基準軸６２Ａの振動回数および重畳軸６１Ｂの振動回数に設定する。振動計算部２２Ａは、重畳軸６１Ｂの振動回数を振動計算部２２Ｂに送る。
【０１５１】
また、振動計算部２２Ａは、計算した平均回数の３．５回に同期することができる主軸回転数を計算する。振動計算部２２Ａは、数値制御装置１内の情報を用いて主軸回転数を計算する。振動計算部２２Ａは、主軸回転数に複数の候補がある場合には、当初の主軸回転数である１２００（回／ｍｉｎ）に近いものを採用する。ここでは、振動計算部２２Ａが計算した主軸回転数が、１２０５（回／ｍｉｎ）であるとする。
【０１５２】
つぎに、工作機械１２０を制御する際の処理手順について説明する。図９は、実施の形態２にかかる数値制御装置の第１の制御処理の処理手順を示すフローチャートである。図９は、数値制御装置１による工作機械１２０への制御処理手順を示している。ここでの第１の制御処理は、重畳軸６１Ｂの振動回数を基準軸６２Ａの振動回数に合わせる場合の制御処理である。
【０１５３】
図９におけるステップＳ４１０からＳ４２０の処理は、図４におけるステップＳ１１０からＳ１２０の処理と同様の処理であるので、その説明は省略する。解析処理部３７は、振動条件などの解析結果を補間処理部３８に送る。
【０１５４】
振動計算部２２Ｂは、前述の（Ｍ２−１）の方法によって、ステップＳ４３０，Ｓ４４０の処理を実行する。すなわち、振動計算部２２Ｂは、重畳軸６１Ｂの振動回数を基準軸６２Ａの振動回数に合わせる（ステップＳ４３０）。そして、振動計算部２２Ｂは、ステップＳ４３０で求めた振動回数と、当初の主軸回転数とに基づいて、基準軸６２Ａ側および重畳軸６１Ｂの振動回数に同期することができる主軸回転数を計算する（ステップＳ４４０）。なお、振動計算部２２Ｂは、前述の（Ｍ２−２）の処理によって、基準軸６２Ａの振動回数および重畳軸６１Ｂの振動回数を計算してもよい。
【０１５５】
この後、図４のフローチャートで説明した場合と同様の処理によって、振動発生部２４Ａが基準振動波形を生成し、振動発生部２４Ｂが重畳振動波形を生成する。そして、図４のステップＳ１７０と同様の処理によって、軸データ出力部４０が、主軸回転数の回転数指令および速度指令を駆動部９０に出力する（ステップＳ４５０）。
【０１５６】
この結果、（Ｍ２−１）の方法が用いられた場合、振動計算部２２Ｂが計算して変更した重畳軸６１Ｂの振動回数に従って、Ｚ２軸の振動動作が制御されることとなる。また、振動計算部２２Ｂが計算した主軸回転数に従って主軸６０の回転が制御されることとなる。
【０１５７】
また、（Ｍ２−２）の方法が用いられた場合には、振動計算部２２Ａが計算して変更した基準軸６２Ａの振動回数に従って、Ｚ１軸の振動動作が制御されることとなる。また、振動計算部２２Ａが計算した主軸回転数に従って主軸６０の回転が制御されることとなる。
【０１５８】
なお、ステップＳ４３０では、振動計算部２２Ｂが、前述の（Ｍ２−３）の処理によって、基準軸６２Ａの振動回数と重畳軸６１Ｂの振動回数の平均をとってもよい。この場合の処理手順について説明する。
【０１５９】
図１０は、実施の形態２にかかる数値制御装置の第２の制御処理の処理手順を示すフローチャートである。ここでの第２の制御処理は、重畳軸６１Ｂおよび基準軸６２Ａに、重畳軸６１Ｂの振動回数と基準軸６２Ａの振動回数との平均を設定する場合の制御処理である。図１０におけるステップＳ５１０からＳ５２０の処理は、図４におけるステップＳ１１０からＳ１２０の処理と同様の処理であるので、その説明は省略する。
【０１６０】
振動指令解析部１１Ａは、基準軸６２Ａの振動条件を共有エリア３４５に格納し、振動指令解析部１１Ｂは、重畳軸６１Ｂの振動条件を共有エリア３４５に格納する。
【０１６１】
振動計算部２２Ｂは、前述の（Ｍ２−３）の処理によって、ステップＳ５３０，Ｓ５４０の処理を実行する。すなわち、振動計算部２２Ｂは、基準軸６２Ａの振動回数と重畳軸６１Ｂの振動回数の平均である平均振動回数を計算する（ステップＳ５３０）。そして、振動計算部２２Ｂは、ステップＳ５３０で求めた振動回数と、当初の主軸回転数とに基づいて、平均振動回数に同期することができる主軸回転数を計算する（ステップＳ５４０）。なお、ステップＳ５３０，Ｓ５４０の処理は、振動計算部２２Ａが計算してもよい。
【０１６２】
この後、図４のフローチャートで説明した場合と同様の処理によって、振動発生部２４Ａが基準振動波形を生成し、振動発生部２４Ｂが重畳振動波形を生成する。そして、図４のステップＳ１７０と同様の処理によって、軸データ出力部４０が、主軸回転数の回転数指令および速度指令を駆動部９０に出力する（ステップＳ５５０）。
【０１６３】
（Ｍ２−３）の方法が用いられた場合には、平均振動回数に従って、Ｚ１軸およびＺ２軸の振動動作が制御されることとなる。また、振動計算部２２Ａまたは振動計算部２２Ｂが計算した主軸回転数に従って主軸６０の回転が制御されることとなる。
【０１６４】
なお、振動計算部２２Ａ，２２Ｂは、ステップＳ４３０，５３０において、（Ｍ２−１）から（Ｍ２−３）の全ての処理を実行してもよい。この場合、振動計算部２２Ａ，２２Ｂは、（Ｍ２−１）から（Ｍ２−３）による計算結果のうち、当初の主軸回転数との差が少ない主軸回転数を選択する。
【０１６５】
また、数値制御装置１へは、予め（Ｍ２−１）から（Ｍ２−３）の何れを採用するかを設定しておいてもよいし、ユーザが（Ｍ２−１）から（Ｍ２−３）の何れを採用するかを選択してもよい。また、振動計算部２２Ａ，２２Ｂは、先にＧ１６５の指令を実行する側に合わせて、（Ｍ２−１）または（Ｍ２−２）を選択してもよい。すなわち、基準軸６２Ａで先にＧ１６５の指令を実行する場合、振動計算部２２Ａ，２２Ｂは、（Ｍ２−１）を適用し、重畳軸６１Ｂで先にＧ１６５の指令を実行する場合、振動計算部２２Ａ，２２Ｂは、（Ｍ２−２）を適用する。
【０１６６】
ところで、加工プログラム８２Ｐの中には、基準軸６２Ａへの振動指令しかなく重畳軸６１Ｂへの振動指令が無い場合がある。また、加工プログラム８２Ｐの中には、重畳軸６１Ｂへの振動指令しかなく基準軸６２Ａへの振動指令が無い場合がある。これらの場合、数値制御装置１は、実施の形態１の図５で説明した処理と同様の処理を行う。
【０１６７】
ここで、基準軸６２Ａへの振幅および重畳軸６１Ｂへの振幅に基づいた、振幅差分の算出方法について説明する。振幅差分は、重畳軸６１Ｂへの振動条件で規定された振幅（後述の指令振幅Ｐ１ｂなど）と、基準軸６２Ａへの振動条件で規定された振幅（後述の指令振幅Ｐ１ａなど）との差分である。ここでは、基準軸６２Ａの振幅が重畳軸６１Ｂの振幅よりも小さな場合と、重畳軸６１Ｂの振幅が基準軸６２Ａの振幅以下の場合と、に分けて説明する。
【０１６８】
（基準軸６２Ａの指令振幅Ｐ１ａ＜重畳軸６１Ｂの指令振幅Ｐ１ｂの場合）
図１１は、実施の形態２にかかる工作機械の重畳軸への振動指令の第１例を示す図であり、図１２は、実施の形態２にかかる工作機械の基準軸への振動指令の第１例を示す図である。図１１および図１２に示すグラフの横軸は、主軸６０の回転角度であり、時間Ｔ１は、主軸６０が１回転するのに要する時間である。また、図１１に示すグラフの縦軸は、重畳軸６１ＢのＺ２軸方向の位置であり、図１２に示すグラフの縦軸は、基準軸６２ＡのＺ１軸方向の位置である。なお、図１１では、縦軸の正方向が、Ｚ２軸の正方向に対応し、図１２では、縦軸の正方向が、Ｚ１軸の正方向に対応している。
【０１６９】
図１１に示す波形４１Ｔｂ，４２Ｔｂは、重畳軸６１Ｂへの振動指令に対応する振動波形であり、図１２に示す波形４１Ｔａ，４２Ｔａは、基準軸６２Ａへの振動指令に対応する振動波形である。ここでは、説明の便宜上、波形４１Ｔｂ，４２Ｔｂを工具６６Ｂの振動波形とし、波形４１Ｔａ，４２Ｔａを工具６６Ａの振動波形として説明する。
【０１７０】
図１１および図１２に示すように、工作機械１２０では、主軸６０が１回転する間の工具６６Ａ，６６Ｂの振動回数は、基準軸６２Ａ側と重畳軸６１Ｂ側とで同じでなければならない。ここでは、工具６６Ａ，６６Ｂの振動回数が２．５回である場合を示している。
【０１７１】
図１１では、主軸６０が１回転する間の、工具６６ＢへのＺ２軸方向への送り量を送り量Ｆ１で示している。この送り量Ｆ１は、工具６６Ｂによる加工ワーク７０へのＺ２軸方向の加工速度に対応している。
【０１７２】
図１２では、主軸６０が１回転する間の、工具６６ＡへのＺ１軸方向への送り量を送り量Ｆ２で示している。この送り量Ｆ２は、工具６６Ａによる加工ワーク７０へのＺ１軸方向の加工速度に対応している。
【０１７３】
図１１に示すように、工具６６Ｂは、主軸６０の１回目の回転の際に波形４１Ｔｂで移動し、主軸６０の２回目の回転の際に波形４２Ｔｂで移動する。この場合において、波形４１Ｔｂと波形４２Ｔｂとで重なる時間帯ｔ１０，ｔ１１がある。これらの時間帯ｔ１０，ｔ１１は、主軸６０の２回目の回転の時間帯である。これらの時間帯ｔ１０，ｔ１１では、主軸６０の１回目の回転で既に加工された位置が、主軸６０の２回目の回転で加工されない。主軸６０の１回目の回転で既に加工された位置は、加工ワーク７０が既に切屑となって加工されている部分であり、この位置が主軸６０の２回目の回転で加工されない。すなわち、切屑が分断されることを示している。このように、主軸６０の１回目の回転で加工した位置が、主軸６０の２回目の回転による時間帯ｔ１０，ｔ１１において、空振り加工（エアカット）されることによって、時間帯ｔ１０，ｔ１１のそれぞれで、加工ワーク７０の切屑が分断されることとなる。この結果、加工ワーク７０の切屑を細かく排出することができる。
【０１７４】
図１２に示す波形４１Ｔａ，４２Ｔａでも、波形４１Ｔａと波形４２Ｔａとで重なる時間帯ｔ１２，ｔ１３がある。この時間帯ｔ１２，ｔ１３も時間帯ｔ１０，ｔ１１と同様に工具６６Ａが加工ワーク７０に接触しないので、加工ワーク７０の切屑を細かく排出することができる。
【０１７５】
工具６６Ｂへの送り量Ｆ１は、工具６６Ａへの送り量Ｆ２よりも大きいので、重畳軸６１Ｂの指令振幅Ｐ１ｂは、基準軸６２Ａの指令振幅Ｐ１ａよりも大きい。この場合に、重畳軸６１Ｂの指令振幅Ｐ１ｂから、基準軸６２Ａの指令振幅Ｐ１ａを差し引くと、重畳軸６１Ｂと基準軸６２Ａとの振幅差分（正の値）を算出することができる。
【０１７６】
図１３は、図１１および図１２の振動指令から算出される振動波形を示す図である。図１３に示す波形４１Ｔｃ，４２Ｔｃは、重畳軸６１Ｂの波形４１Ｔｂ，４２Ｔｂから基準軸６２Ａの波形４１Ｔａ，４２Ｔａを引いた差分に対応する振動波形である。したがって、図１３に示す差分振幅Ｐ１ｃは、指令振幅Ｐ１ｂから指令振幅Ｐ１ａを引いたものに対応している。図１３に示す送り量Ｆ３は、波形４１Ｔｃ，４２Ｔｃで工具６６Ｂを振動させた場合の送り量であり、差分振幅Ｐ１ｃに基づいて設定される。このように、基準軸６２Ａの指令振幅Ｐ１ａ＜重畳軸６１Ｂの指令振幅Ｐ１ｂの場合には、重畳軸６１Ｂと基準軸６２Ａとの振幅差分は、正の値になる。
【０１７７】
なお、指令振幅Ｐ１ｂを固定値とした場合、送り量Ｆ１が速くなり過ぎると、波形４１Ｔｂと波形４２Ｔｂとが重ならなくなるので時間帯ｔ１０，ｔ１１がなくなる。この場合、加工ワーク７０と工具６６Ｂとが離れなくなるので、切屑の分断が出来なくなる。したがって、送り量Ｆ１を増加させる際には送り量Ｆ１に応じて指令振幅Ｐ１ｂを増加させる。これにより、送り量Ｆ１が速くなった場合であっても切屑の分断が可能となる。
【０１７８】
（基準軸６２Ａの指令振幅Ｐ１ａ≧重畳軸６１Ｂの指令振幅Ｐ１ｂの場合）
図１４は、実施の形態２にかかる工作機械の重畳軸への振動指令の第２例を示す図であり、図１５は、実施の形態２にかかる工作機械の基準軸への振動指令の第２例を示す図である。図１４に示すグラフは、図１１に示すグラフと同様のグラフであり、図１５に示すグラフは、図１２に示すグラフと同様のグラフである。
【０１７９】
図１４に示す波形４３Ｔｂ，４４Ｔｂは、重畳軸６１Ｂへの振動指令に対応する振動波形であり、図１５に示す波形４３Ｔａ，４４Ｔａは、基準軸６２Ａへの振動指令に対応する振動波形である。
【０１８０】
図１４では、主軸６０が１回転する間の、工具６６ＢへのＺ２軸方向への送り量を送り量Ｆ４で示している。また、図１５では、主軸６０が１回転する間の、工具６６ＡへのＺ１軸方向への送り量を送り量Ｆ５で示している。
【０１８１】
ここでは、工具６６Ｂへの送り量Ｆ４は、工具６６Ａへの送り量Ｆ５よりも小さいので、重畳軸６１Ｂの指令振幅Ｐ２ｂは、基準軸６２Ａの指令振幅Ｐ２ａよりも小さい。この場合に、重畳軸６１Ｂの指令振幅Ｐ２ｂから、基準軸６２Ａの指令振幅Ｐ２ａを差し引くと、重畳軸６１Ｂと基準軸６２Ａとの振幅差分（負の値）を算出することができる。
【０１８２】
図１６は、図１４および図１５の振動指令から算出される振動波形を示す図である。図１６に示す波形４３Ｔｃ，４４Ｔｃは、重畳軸６１Ｂの波形４３Ｔｂ，４４Ｔｂから基準軸６２Ａの波形４３Ｔａ，４４Ｔａを引いた差分に対応する振動波形である。したがって、図１６に示す差分振幅Ｐ２ｃは、指令振幅Ｐ２ｂから指令振幅Ｐ２ａを引いたものに対応している。図１６に示す送り量Ｆ６は、波形４３Ｔｃ，４４Ｔｃで工具６６Ｂを振動させた場合の送り量であり、差分振幅Ｐ２ｃに基づいて設定される。このように、基準軸６２Ａの指令振幅Ｐ２ａ≧重畳軸６１Ｂの指令振幅Ｐ２ｂの場合には、重畳軸６１Ｂと基準軸６２Ａとの差分は、負の値になる。
【０１８３】
重畳制御の場合、実際の重畳軸６１Ｂの振動動作は、重畳軸６１Ｂ側への振動指令および基準軸６２Ａ側への振動指令に対応する。このため、重畳軸６１Ｂ側を実際にどのように振動させるかは、基準軸６２Ａへの振動条件で規定された振幅（以下、指令振幅Ｑａという）および重畳軸６１Ｂへの振動条件で規定された振幅（以下、指令振幅Ｑｂという）によって決まる。指令振幅Ｑａ，Ｑｂは、加工プログラム８２Ｐの振動指令（Ｇ１６５）で規定された振幅に対応するものである。ここで、図１７から図２４を用いて、指令振幅Ｑａ，Ｑｂに応じた重畳軸６１Ｂの振動のさせ方について説明する。
【０１８４】
以下の図１７から図２４では、指令振幅Ｑｂと指令振幅Ｑａとが同じである場合と、指令振幅Ｑｂが０の場合と、指令振幅Ｑｂが指令振幅Ｑａよりも大きい場合と、指令振幅Ｑｂが指令振幅Ｑａよりも小さい場合と、に分けて説明する。なお、図１７から図２４では、工具６６Ｂの振動方向が重畳軸６１Ｂの軸方向である場合について説明する。図１８、図２０、図２２、図２４に示すグラフの横軸は、主軸６０の回転角度であり、時間Ｔ２は、主軸６０が１回転するのに要する時間である。また、図１８、図２０、図２２、図２４に示すグラフの縦軸は、工具６６ＢのＺ２軸方向の位置を示しており、縦軸の正方向が加工ワーク７０の送り方向に対応している。なお、加工ワーク７０の送り方向が、Ｚ２軸の正方向（Ｚ１軸の正方向）である。したがって、工具６６Ａ，６６Ｂは、Ｚ２軸の負方向（Ｚ１軸の負方向）に加工を進めていく。
【０１８５】
図１７は、実施の形態２にかかる工作機械の第１の振動動作を説明するための図である。図１８は、実施の形態２にかかる工作機械が有する基準軸に対する重畳軸の相対的な第１の振動動作を示す図である。図１７および図１８では、重畳軸６１Ｂへの指令振幅Ｑｂが、基準軸６２Ａへの指令振幅Ｑａと同じ（Ｑｂ＝Ｑａ）である場合の、重畳軸６１Ｂの振動動作を示している。
【０１８６】
重畳軸６１Ｂに移動指令がなく、かつ指令振幅Ｑｂ＝指令振幅Ｑａで重畳制御を行うためには、重畳軸６１Ｂ側の刃物台６５Ｂを固定し、基準軸６２Ａ方向に主軸６０を備えた主軸台を振動させればよい。これにより、刃物台６５Ｂの移動経路５１ａ〜５１ｃは、基準軸６２Ａの振動動作に対応するものとなるので、重畳軸６１Ｂ側でも基準軸６２Ａ側と同じ振幅で振動切削を行うことができる。
【０１８７】
図１８では、主軸６０が１周する間に刃物台６５Ｂが移動する距離を移動距離Ｖ１で示し、刃物台６５Ｂの実際の振幅を振幅Ｑｂ´で示している。移動距離Ｖ１は、刃物台６５Ｂの実際の移動速度に対応している。刃物台６５Ｂの実際の移動速度は、工具送りのための移動速度であり、振動による移動を含まない。すなわち、刃物台６５Ｂの移動距離Ｖ１は、移動条件で規定されている移動速度に対応している。したがって、移動条件で規定されている移動速度が速いほど、移動距離Ｖ１は大きくなる。また、実際の振幅Ｑｂ´は、振動条件で規定された指令振幅Ｑｂに対応している。
【０１８８】
図１９は、実施の形態２にかかる工作機械の第２の振動動作を説明するための図である。図２０は、実施の形態２にかかる工作機械が有する基準軸に対する重畳軸の相対的な第２の振動動作を示す図である。図１９および図２０では、重畳軸６１Ｂへの指令振幅Ｑｂが０である場合の、重畳軸６１Ｂの動作を示している。
【０１８９】
指令振幅Ｑｂ＝０で重畳制御を行うためには、基準軸６２Ａ側の主軸台の振動と同期するよう、重畳軸６１Ｂの刃物台６５Ｂを振動させればよい。これにより、刃物台６５Ｂでは振動のない切削を行なうことができる。換言すると、重畳制御をしつつ、重畳軸６１Ｂの刃物台６５Ｂに対して、基準軸６２Ａ側の主軸台と同じ振動をさせると、刃物台６５Ｂと加工ワーク７０とは同じ振動動作となるので、刃物台６５Ｂの工具６６Ｂは振動のない切削を行なうことができる。したがって、刃物台６５Ｂの移動経路５２ａ〜５２ｇは、振動することなく加工ワーク７０の送り方向へ移動する切削経路となる。図２０では、主軸６０が１周する間に刃物台６５Ｂが移動する距離を移動距離Ｖ０で示している。移動距離Ｖ０は、刃物台６５Ｂの実際の移動速度に対応している。
【０１９０】
図２１は、実施の形態２にかかる工作機械の第３の振動動作を説明するための図である。図２２は、実施の形態２にかかる工作機械が有する基準軸に対する重畳軸の相対的な第３の振動動作を示す図である。図２１および図２２では、重畳軸６１Ｂへの指令振幅Ｑｂが、基準軸６２Ａへの指令振幅Ｑａよりも大きい場合の、重畳軸６１Ｂの振動動作を示している。
【０１９１】
指令振幅Ｑｂ＞指令振幅Ｑａで重畳制御を行うためには、重畳軸６１Ｂ側の刃物台６５Ｂを、基準軸６２Ａ側の主軸台の振動と逆の位相で振動させればよい。これにより、刃物台６５Ｂの移動経路５３ａ，５３ｂは、基準軸６２Ａおよび重畳軸６１Ｂの振動動作に対応するものとなるので、重畳軸６１Ｂ側を基準軸６２Ａ側よりも大きな振幅で振動切削を行うことができる。なお、刃物台６５Ｂの実際の振幅は、指令振幅Ｑｂに対応する振幅Ｑｂ´から指令振幅Ｑａに対応する振幅Ｑａ´を引いたものとなる。
【０１９２】
図２２では、主軸６０が１周する間に刃物台６５Ｂが移動する距離を移動距離Ｖ２で示し、刃物台６５Ｂの実際の振幅を振幅Ｑｂ´で示している。移動距離Ｖ２は、刃物台６５Ｂの実際の移動速度に対応している。すなわち、刃物台６５Ｂの移動距離Ｖ２は、移動条件で規定されている移動速度に対応している。また、実際の振幅Ｑｂ´は、振動条件で規定された指令振幅Ｑａ，Ｑｂに対応している。
【０１９３】
図２３は、実施の形態２にかかる工作機械の第４の振動動作を説明するための図である。図２４は、実施の形態２にかかる工作機械が有する基準軸に対する重畳軸の相対的な第４の振動動作を示す図である。図２４では、重畳軸６１Ｂへの指令振幅Ｑｂが、基準軸６２Ａへの指令振幅Ｑａよりも小さい場合の、重畳軸６１Ｂの振動動作を示している。
【０１９４】
指令振幅Ｑｂ＜指令振幅Ｑａで重畳制御を行うためには、重畳軸６１Ｂ側の刃物台６５Ｂを、基準軸６２Ａ側の主軸台の振動と同じ位相で振動させればよい。これにより、刃物台６５Ｂの移動経路５４ａ〜５４ｃは、基準軸６２Ａおよび重畳軸６１Ｂの振動動作に対応するものとなるので、重畳軸６１Ｂ側を基準軸６２Ａ側よりも小さな振幅で振動切削を行うことができる。刃物台６５Ｂの実際の振幅は、指令振幅Ｑａに対応する振幅Ｑａ´から指令振幅Ｑｂに対応する振幅Ｑｂ´を引いたものとなる。
【０１９５】
図２４では、主軸６０が１周する間に刃物台６５Ｂが移動する距離を移動距離Ｖ３で示し、刃物台６５Ｂの実際の振幅を振幅Ｑｂ´で示している。移動距離Ｖ３は、刃物台６５Ｂの実際の移動速度に対応している。すなわち、刃物台６５Ｂの移動距離Ｖ３は、移動条件で規定されている移動速度に対応している。また、実際の振幅Ｑｂ´は、振動条件で規定された指令振幅Ｑａ，Ｑｂに対応している。
【０１９６】
本実施の形態では、数値制御装置１が、重畳制御を行うための重畳軸６１Ｂへの振動指令を指令振幅Ｑａ，Ｑｂの関係に基づいて計算する。これにより、刃物台６５Ｂは、図１７から図２０で示したような指令動作を実行する。
【０１９７】
本実施の形態では、振動波形が三角波である場合について説明したが、振動波形は、三角波に限らず、正弦波、矩形波、台形波、のこぎり波といった、三角波とは異なるものであってもよい。
【０１９８】
図２５は、実施の形態２にかかる、正弦波の振動指令を示す図である。ここでは、工作機械１２０の重畳軸６１Ｂへの振動指令の例を示している。正弦波４１Ｔ´，４２Ｔ´のような正弦波は、理想的な振動形状をそのまま指令することができる振動波形である。このため、指令に対してフィードバックが十分に追従する場合には、正弦波は、理想的な振動形状を作り出すことができる。なお、実施の形態１および後述する実施の形態３でも、振動波形は、三角波、正弦波、矩形波、台形波、のこぎり波の何れでもよい。
【０１９９】
なお、本実施の形態では、（Ｍ２−１）から（Ｍ２−３）の何れかの方法で振動回数および主軸回転数を計算し変更する場合について説明したが、基準軸６２Ａの振動指令から重畳軸６１Ｂの振動指令を差し引いたものを重畳軸６１Ｂに出力してもよい。
【０２００】
図２６は、実施の形態２にかかる数値制御装置が用いる加工プログラムの他の例を示す図である。なお、加工プログラム８２Ｑのうち、加工プログラム８２Ｐ、または実施の形態１の図３で説明した加工プログラム８１と同様の指令については、その説明を省略する。
【０２０１】
加工プログラム８２Ｑは、加工プログラム８２Ｐと同様に、数値制御装置１が工作機械１２０を制御する際に用いられる。このため、加工プログラム８２Ｑは、基準軸６２Ａ用の加工プログラム８２１Ａと、重畳軸６１Ｂ用の加工プログラム８２１Ｂとを含んでいる。
【０２０２】
加工プログラム８２１Ａでは、Ｍ３  Ｓ１＝１０００となっているので、主軸６０への主軸回転数指令は１０００回転である。加工プログラム８２Ｑが用いられる場合、数値制御装置１の振動計算部２２Ｂは、基準軸６２Ａへの振動指令の波形から重畳軸６１Ｂへの振動指令の波形を差し引いたものを重畳軸６１Ｂに対する振動指令に適用する。また、数値制御装置１は、基準軸６２Ａおよび重畳軸６１Ｂの振動回数に同期する主軸回転数を計算する。
【０２０３】
つぎに、重畳振動波形から基準振動波形を差し引いた指令で重畳軸６１Ｂを動作させる場合の処理手順について説明する。図２７は、実施の形態２にかかる数値制御装置の第３の制御処理の処理手順を示すフローチャートである。図２７は、数値制御装置１による工作機械１２０への制御処理手順を示している。ここでの第３の制御処理は、基準軸６２Ａへの振動指令の波形から重畳軸６１Ｂへの振動指令の波形を差し引いた指令で重畳軸６１Ｂを動作させる場合の制御処理である。
【０２０４】
図２７におけるステップＳ５６１からＳ５６２の処理は、図４におけるステップＳ１１０からＳ１２０の処理と同様の処理であるので、その説明は省略する。解析処理部３７は、解析結果である、基準軸６２Ａへの振動指令の波形および重畳軸６１Ｂへの振動指令の波形を補間処理部３８に送る。
【０２０５】
振動計算部２２Ｂは、基準軸６２Ａへの振動指令の波形から、重畳軸６１Ｂへの振動指令の波形を差し引いた指令を計算する。すなわち、振動計算部２２Ｂは、（基準軸６２の振動指令）−（重畳軸６１Ｂの振動指令）を計算する（ステップＳ５６３）。そして、振動計算部２２Ｂは、ステップＳ５６３で求めた振動波形の指令と、主軸回転数とに基づいて、基準軸６２Ａおよび重畳軸６１Ｂの振動回数に同期することができる主軸回転数を計算する（ステップＳ５６４）。
【０２０６】
この後、図４のフローチャートで説明した場合と同様の処理によって、振動発生部２４Ａが基準振動波形を生成し、振動発生部２４Ｂが重畳振動波形を生成する。そして、図４のステップＳ１７０と同様の処理によって、軸データ出力部４０が、主軸回転数の回転数指令および速度指令を駆動部９０に出力する（ステップＳ５６５）。
【０２０７】
図２８は、図２６の加工プログラムに対応する基準軸への振動指令の波形を示す図である。図２９は、図２６の加工プログラムに対応する重畳軸への振動指令の波形を示す図である。図３０は、図２８および図２９の波形から計算された重畳軸への振動指令の波形を示す図である。図２８から図２９に示すグラフの横軸は、主軸６０の回転角度であり、時間Ｔ３は、主軸６０が１回転するのに要する時間である。また、図２８に示すグラフの縦軸は、基準軸６２ＡのＺ１軸方向の位置であり、図２９および図３０に示すグラフの縦軸は、重畳軸６１ＢのＺ２軸方向の位置である。
【０２０８】
加工プログラム８２１Ａでは、基準軸６２Ａの振動回数が２．５回となっており、振幅が０．２ｍｍである。したがって、基準軸６２Ａへの振動指令の波形は、図２８に示すように、振動回数が２．５回で振幅が０．２ｍｍの波形となっている。
【０２０９】
また、加工プログラム８２１Ｂでは、重畳軸６１Ｂの振動回数が４．５回となっており、振幅が０．３ｍｍである。したがって、重畳軸６１Ｂへの振動指令の波形は、図２９に示すように、振動回数が４．５回で振幅が０．３ｍｍの波形となっている。
【０２１０】
図３０に示す波形は、（基準軸６２の振動指令）−（重畳軸６１Ｂの振動指令）の波形である。すなわち、図３０に示す波形は、振動回数が２．５回で振幅が０．２ｍｍの波形から、振動回数が４．５回で振幅が０．３ｍｍの波形を差し引いた波形である。
【０２１１】
このように、実施の形態２によれば、１スピンドル２刃物台の旋盤に対しても、実施の形態１と同様の効果を得ることができる。すなわち、数値制御装置１が、重畳制御を行う場合にも基準軸６２Ａおよび重畳軸６１Ｂで所望の低周波振動切削を実行させることが可能となる。
【０２１２】
実施の形態３．
つぎに、図３１から図３４を用いてこの発明の実施の形態３について説明する。実施の形態３では、２スピンドル１刃物台の旋盤に対して、重畳制御および低周波振動切削の制御を行う。
【０２１３】
図３１は、実施の形態３にかかる工作機械の構成を示す図である。図３１では、図２と同様に、紙面の横方向がＺ軸方向であり、紙面の縦方向がＸ軸方向である。図３１の各構成要素のうち図２に示す実施の形態１の工作機械１１０と同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。本実施の形態の加工対象は、加工ワーク７１，７２である。
【０２１４】
実施の形態３にかかる工作機械１３０は、２スピンドル１刃物台の旋盤である。２スピンドル１刃物台の旋盤は、２つの主軸と１つの刃物台を具備した旋盤である。工作機械１３０の一例は、タレット旋盤である。工作機械１３０では、第１スピンドル７６による加工ワーク７１の回転軸が、第１の主軸６８であり、第２スピンドル７７による加工ワーク７２の回転軸が、第２の主軸６９である。
【０２１５】
工作機械１３０は、刃物台６５Ｃを備えており、刃物台６５Ｃに基準軸６３Ｃが設けられている。刃物台６５Ｃは、Ｘ１軸方向およびＺ１軸方向に移動可能となっている。
【０２１６】
また、加工ワーク７２は、Ｘ２軸方向およびＺ２軸方向に移動可能となっている。なお、ここでのＺ２軸方向は、図２で説明したＺ２軸方向と正方向が逆向きとなっているが、Ｚ２軸方向は、回転軸と同じ方向であれば何れが正方向であってもよい。工作機械１３０では、Ｚ１軸が基準軸６３Ｃであり、Ｚ２軸が重畳軸６３Ｄである。なお、工作機械１３０では、第１の主軸６８が、Ｚ２軸である重畳軸６３Ｄであってもよい。
【０２１７】
刃物台６５Ｃは、刃物台６５Ａと同様に旋回式の刃物台である。刃物台６５Ｃは、刃物台６５Ａと比較して、２つの工具６６Ｃ，６６Ｄを同時に用いることができる点が異なる。工具６６Ｃは、加工ワーク７１を切削し、工具６６Ｄは、加工ワーク７２を切削する。
【０２１８】
工作機械１３０では、第１スピンドル７６が加工ワーク７１を第１の主軸６８で軸回転させ、第２スピンドル７７が加工ワーク７２を第２の主軸６９で軸回転させる。そして、工作機械１３０は、刃物台６５Ｃが工具６６Ｃ，６６ＤをＺ１軸方向に振動させ、加工ワーク７２をＺ２軸方向に振動させる。これにより、工具６６Ｃが、加工ワーク７１に振動切削を行ない、工具６６Ｄが、加工ワーク７２に振動切削を行なう。
【０２１９】
工作機械１３０における振動の制約条件は、以下の（Ｌ３−１）から（Ｌ３−３）である。
（Ｌ３−１）振動切削中の主軸回転数は、基準軸６３Ｃ側と重畳軸６３Ｄ側とで異なっていてもよい。ただし、基準軸６３Ｃおよび重畳軸６３Ｄは、共に、振動回数に同期した主軸回転数で動作しなければならない。
（Ｌ３−２）第１の主軸６８が１回転する間の工具６６Ｃ，６６Ｄの振動回数は、基準軸６３Ｃ側と重畳軸６３Ｄ側とで同じでなければならない。
（Ｌ３−３）振動の振幅は、基準軸６３Ｃ側と重畳軸６３Ｄ側とで異なっていてもよい。ただし、基準軸６３Ｃ側の振動を考量して、重畳軸６３Ｄ側の振動を指令しなければならない。
【０２２０】
（Ｌ３−２）のように、振動回数が、基準軸６３Ｃ側と重畳軸６３Ｄ側とで同じでなければならないのは、工作機械１３０では、刃物台６５Ｃが２つの工具６６Ｃ，６６Ｄを有しているので、基準軸６３Ｃの振動が重畳軸６３Ｄに伝わるからである。工作機械１３０では、振動回数が、基準軸６３Ｃ側と重畳軸６３Ｄ側とで同じでなければ、重畳軸６３Ｄ側の振動が正弦波または三角波といった一定形状の波でなくなる。
【０２２１】
また、（Ｌ３−３）のように、基準軸６３Ｃ側の振動を考量して重畳軸６３Ｄ側の振動を指令しなければならないのは、刃物台６５Ｃが２つの工具６６Ｃ，６６Ｄを有しているので、工作機械１３０では、基準軸６３Ｃの振動が重畳軸６３Ｄに伝わるからである。
【０２２２】
図３２は、実施の形態３にかかる数値制御装置が用いる加工プログラムの一例を示す図である。なお、加工プログラム８３のうち、実施の形態１の図３で説明した加工プログラム８１と同様の指令については、その説明を省略する。
【０２２３】
加工プログラム８３は、数値制御装置１が工作機械１３０を制御する際に用いられる。このため、加工プログラム８３は、基準軸６３Ｃ用の加工プログラム８３０Ｃと、重畳軸６３Ｄ用の加工プログラム８３０Ｄとを含んでいる。
【０２２４】
加工プログラム８３０ＣでのＧ１６５は、刃物台６５ＣをＺ１軸方向に振動させる指令であり、加工プログラム８３０ＤでのＧ１６５は、加工ワーク７２をＺ２軸方向に振動させる指令である。加工プログラム８３０Ｃにおいて、Ｇ１６５が用いられる場合、Ｇ１６５で指定された振幅および振動回数で工具６６Ｃ，６６ＤがＺ１軸方向に振動させられる。ここでは、工具６６Ｃ，６６Ｄに対し、振幅を０．２ｍｍ、振動回数を２．５回で振動させる場合を示している。また、加工プログラム８３０Ｄにおいて、Ｇ１６５が用いられる場合、Ｇ１６５で指定された振幅および振動回数で加工ワーク７２がＺ２軸方向に振動させられる。ここでは、加工ワーク７２に対し、振幅を０．３ｍｍ、振動回数を４．５回で振動させる場合を示している。
【０２２５】
また、加工プログラム８３０Ｃでは、Ｍ３  Ｓ１＝２０００となっているので、第１の主軸６８への第１の主軸回転数指令が２０００回転である。また、加工プログラム８３０Ｄでは、Ｍ３  Ｓ２＝１２００となっているので、第２の主軸６９への第２の主軸回転数指令が１２００回転である。なお、以下の説明では、第１の主軸６８の主軸回転数を第１の主軸回転数といい、第２の主軸６９の主軸回転数を第２の主軸回転数という。
【０２２６】
加工プログラム８３が用いられる場合、振動計算部２２Ａは、以下の（Ｍ３−１）から（Ｍ３−３）の何れかの方法で振動回数および主軸回転数を計算し変更する。これにより、変更後の振動回数および主軸回転数で各軸が制御される。
【０２２７】
（Ｍ３−１）重畳軸６３Ｄの振動回数を基準軸６３Ｃの振動回数に合わせる
この場合、振動計算部２２Ｂは、重畳軸６３Ｄの振動回数であるＤ＝４．５を、基準軸６３Ｃの振動回数であるＤ＝２．５に変更する。また、振動計算部２２Ａは、基準軸６３Ｃの振動回数であるＤ＝２．５と、第１の主軸６８への回転数指令であるＳ１＝２０００から、基準軸６３Ｃ側および重畳軸６３Ｄの振動回数に同期することができる第１の主軸回転数を計算する。振動計算部２２Ａは、数値制御装置１内の情報を用いて第１の主軸回転数を計算する。振動計算部２２Ａが計算する第１の主軸回転数が、実際の第１の主軸６８の第１の主軸回転数となる。振動計算部２２Ａは、第１の主軸回転数に複数の候補がある場合には、当初の主軸回転数である２０００（回／ｍｉｎ）に近いものを採用する。ここでは、振動計算部２２Ａが計算した第１の主軸回転数が、１９２９（回／ｍｉｎ）であるとする。
【０２２８】
さらに、振動計算部２２Ｂは、重畳軸６３Ｄの振動回数に設定されたＤ＝２．５と、第２の主軸６９への回転数指令であるＳ２＝１２００から、重畳軸６３Ｄの振動回数に同期することができる第２の主軸回転数を計算する。振動計算部２２Ｂは、数値制御装置１内の情報を用いて第２の主軸回転数を計算する。振動計算部２２Ｂが計算する第２の主軸回転数が、実際に振動切削した場合の第２の主軸６９の第２の主軸回転数となる。振動計算部２２Ｂは、第２の主軸回転数に複数の候補がある場合には、当初の主軸回転数である１２００（回／ｍｉｎ）に近いものを採用する。ここでは、振動計算部２２Ｂが計算した第２の主軸回転数が、１２２７（回／ｍｉｎ）であるとする。
【０２２９】
（Ｍ３−２）基準軸６３Ｃの振動回数を重畳軸６３Ｄの振動回数に合わせる
この場合、振動計算部２２Ａは、基準軸６３Ｃの振動回数であるＤ＝２．５を、重畳軸６３Ｄの振動回数であるＤ＝４．５に変更する。この後、振動計算部２２Ａは、（Ｍ２−２）と同様の方法によって、第１の主軸回転数を計算する。ここでは、振動計算部２２Ａが計算した第１の主軸回転数が、１８７５（回／ｍｉｎ）であるとする。
【０２３０】
また、振動計算部２２Ｂは、重畳軸６３Ｄの振動回数に設定されたＤ＝２．５と、第２の主軸６９への回転数指令であるＳ２＝１２００から、重畳軸６３Ｄの振動回数に同期することができる第２の主軸回転数を計算する。振動計算部２２Ｂは、（Ｍ２−３）と同様の方法によって、第２の主軸回転数を計算する。ここでは、振動計算部２２Ｂが計算した第２の主軸回転数が、１２５０（回／ｍｉｎ）であるとする。
【０２３１】
（Ｍ３−３）基準軸６３Ｃの振動回数と重畳軸６３Ｄの振動回数の平均をとる
基準軸６３Ｃの振動回数と重畳軸６３Ｄの振動回数の平均は、振動計算部２２Ａが計算してもよいし振動計算部２２Ｂが計算してもよい。ここでは、振動計算部２２Ａが基準軸６３Ｃの振動回数と重畳軸６３Ｄの振動回数の平均を計算する場合について説明する。
【０２３２】
振動計算部２２Ａは、基準軸６３Ｃの振動回数であるＤ＝２．５と、重畳軸６３Ｄの振動回数であるＤ＝４．５との平均である平均回数を計算する。ここでの平均回数は、３．５回である。振動計算部２２Ａは、計算結果を基準軸６３Ｃの振動回数および重畳軸６３Ｄの振動回数に設定する。
【０２３３】
また、振動計算部２２Ａは、計算した平均回数の３．５回に同期することができる第１の主軸回転数を計算する。振動計算部２２Ａは、数値制御装置１内の情報を用いて第１の主軸回転数を計算する。振動計算部２２Ａは、第１の主軸回転数に複数の候補がある場合には、当初の第１の主軸回転数である２０００（回／ｍｉｎ）に近いものを採用する。ここでは、振動計算部２２Ａが計算した主軸回転数が、１９２９（回／ｍｉｎ）であるとする。
【０２３４】
また、振動計算部２２Ｂは、計算した平均回数の３．５回に同期することができる第２の主軸回転数を計算する。振動計算部２２Ｂは、数値制御装置１内の情報を用いて第２の主軸回転数を計算する。振動計算部２２Ｂは、第２の主軸回転数に複数の候補がある場合には、当初の第２の主軸回転数である１２００（回／ｍｉｎ）に近いものを採用する。ここでは、振動計算部２２Ｂが計算した主軸回転数が、１２０５（回／ｍｉｎ）であるとする。
【０２３５】
つぎに、工作機械１３０を制御する際の処理手順について説明する。図３３は、実施の形態３にかかる数値制御装置の第１の制御処理の処理手順を示すフローチャートである。図３３は、数値制御装置１による工作機械１３０への制御処理手順を示している。ここでの第１の制御処理は、重畳軸６３Ｄの振動回数を基準軸６３Ｃの振動回数に合わせる場合の制御処理である。
【０２３６】
図３３におけるステップＳ６１０からＳ６２０の処理は、図４におけるステップＳ１１０からＳ１２０の処理と同様の処理であるので、その説明は省略する。解析処理部３７は、振動条件などの解析結果を補間処理部３８に送る。
【０２３７】
振動計算部２２Ａ，２２Ｂは、前述の（Ｍ３−１）の方法によって、ステップＳ６３０からＳ６４０の処理を実行する。すなわち、振動計算部２２Ｂは、重畳軸６３Ｄの振動回数を基準軸６３Ｃの振動回数に合わせる（ステップＳ６３０）。そして、振動計算部２２Ａは、ステップＳ６３０で求めた振動回数と、当初の第１の主軸回転数とに基づいて、基準軸６３Ｃ側および重畳軸６３Ｄの振動回数に同期することができる第１の主軸回転数を計算する（ステップＳ６４０）。
【０２３８】
また、振動計算部２２Ｂは、ステップＳ６３０で求めた振動回数と、当初の第２の主軸回転数とに基づいて、重畳軸６３Ｄの振動回数に同期することができる第２の主軸回転数を計算する（ステップＳ６５０）。なお、振動計算部２２Ａ，２２Ｂが、前述の（Ｍ３−２）の処理によって、基準軸６３Ｃの振動回数および重畳軸６３Ｄの振動回数を計算してもよい。
【０２３９】
この後、図４のフローチャートで説明した場合と同様の処理によって、振動発生部２４Ａが基準振動波形を生成し、振動発生部２４Ｂが重畳振動波形を生成する。そして、図４のステップＳ１７０と同様の処理によって、軸データ出力部４０が、主軸回転数および速度指令を駆動部９０に出力する（ステップＳ６６０）。
【０２４０】
この結果、（Ｍ３−１）の方法または（Ｍ３−２）の方法が用いられた場合には、振動計算部２２Ａが計算して変更した基準軸６３Ｃの振動回数に従って、Ｚ１軸の振動動作が制御されることとなる。また、振動計算部２２Ａが計算した第１の主軸回転数に従って第１の主軸６８の回転が制御されることとなる。また、振動計算部２２Ｂが計算して変更した重畳軸６３Ｄの振動回数に従って、Ｚ２軸の振動動作が制御されることとなる。また、振動計算部２２Ｂが計算した第２の主軸回転数に従って第２の主軸６９の回転が制御されることとなる。
【０２４１】
具体的には、振動計算部２２Ａが計算した第１の主軸回転数で第１スピンドル７６が加工ワーク７１を回転させるとともに、振動計算部２２Ａが計算した振動回数で刃物台６５Ｃが工具６６Ｃ，６６Ｄを振動させる。また、振動計算部２２Ｂが計算した第２の主軸回転数で第２スピンドル７７が加工ワーク７２を回転させるとともに、振動計算部２２Ｂが計算した振動回数で加工ワーク７２を振動させる。
【０２４２】
なお、ステップＳ６３０では、振動計算部２２Ａ，２２Ｂが、前述の（Ｍ３−３）の処理によって、基準軸６３Ｃの振動回数と重畳軸６３Ｄの振動回数の平均をとってもよい。この場合の処理手順について説明する。
【０２４３】
図３４は、実施の形態３にかかる数値制御装置の第２の制御処理の処理手順を示すフローチャートである。ここでの第２の制御処理は、重畳軸６３Ｄおよび基準軸６３Ｃに、重畳軸６３Ｄの振動回数と基準軸６３Ｃの振動回数との平均を設定する場合の制御処理である。図３４におけるステップＳ７１０からＳ７２０の処理は、図４におけるステップＳ１１０からＳ１２０の処理と同様の処理であるので、その説明は省略する。解析処理部３７は、振動条件などの解析結果を補間処理部３８に送る。
【０２４４】
振動計算部２２Ａ，２２Ｂは、前述の（Ｍ３−３）の処理によって、ステップＳ７３０からＳ７４０の処理を実行する。すなわち、振動計算部２２Ｂは、基準軸６３Ｃの振動回数と重畳軸６３Ｄの振動回数の平均である平均振動回数を計算する（ステップＳ７３０）。この後、振動計算部２２Ａ，２２ＢがステップＳ７４０，Ｓ７５０の処理を実行する。
【０２４５】
振動計算部２２Ａが実行するステップＳ７４０の処理は、図３３におけるステップＳ６４０と同様の処理である。振動計算部２２Ａは、ステップＳ６４０の処理では、ステップＳ６３０で求めた振動回数を用いて第１の主軸回転数を計算したのに対して、ステップＳ７４０の処理では、ステップＳ７３０で求めた平均振動回数を用いて第１の主軸回転数を計算する。
【０２４６】
また、振動計算部２２Ｂが実行するステップＳ７５０の処理は、図３３におけるステップＳ６５０と同様の処理である。振動計算部２２Ａは、ステップＳ６５０の処理では、ステップＳ６３０で求めた振動回数を用いて第２の主軸回転数を計算したのに対して、ステップＳ７５０の処理では、ステップＳ７３０で求めた平均振動回数を用いて第２の主軸回転数を計算する。
【０２４７】
この後、図４のフローチャートで説明した場合と同様の処理によって、振動発生部２４Ａが基準振動波形を生成し、振動発生部２４Ｂが重畳振動波形を生成する。そして、図４のステップＳ１７０と同様の処理によって、軸データ出力部４０が、主軸回転数および速度指令を駆動部９０に出力する（ステップＳ７６０）。
【０２４８】
この結果、（Ｍ３−３）の方法が用いられた場合も、（Ｍ３−１）の方法または（Ｍ３−２）の方法が用いられた場合と同様にＺ１軸、Ｚ２軸、第１の主軸６８、第２の主軸６９が制御されることとなる。
【０２４９】
ところで、加工プログラム８３の中には、基準軸６３Ｃへの振動指令しかなく重畳軸６３Ｄへの振動指令が無い場合がある。また、加工プログラム８３の中には、重畳軸６３Ｄへの振動指令しかなく基準軸６３Ｃへの振動指令が無い場合がある。これらの場合、数値制御装置１は、実施の形態１の図５または図６で説明した処理と同様の処理を行う。
【０２５０】
なお、振動計算部２２Ａ，２２Ｂは、ステップＳ６３０，Ｓ７３０において、（Ｍ３−１）から（Ｍ３−３）の全ての処理を実行してもよい。この場合、振動計算部２２Ａ，２２Ｂは、（Ｍ３−１）から（Ｍ３−３）による計算結果のうち、当初の主軸回転数との差が少ない主軸回転数を選択する。
【０２５１】
また、数値制御装置１へは、予め（Ｍ３−１）から（Ｍ３−３）の何れを採用するかを設定しておいてもよいし、ユーザが（Ｍ３−１）から（Ｍ３−３）の何れを採用するかを選択してもよい。また、振動計算部２２Ａ，２２Ｂは、先にＧ１６５の指令を実行する側に合わせて、（Ｍ３−１）または（Ｍ３−２）を選択してもよい。すなわち、基準軸６３Ｃで先にＧ１６５の指令を実行する場合、振動計算部２２Ａ，２２Ｂは、（Ｍ３−１）を適用し、重畳軸６３Ｄで先にＧ１６５の指令を実行する場合、振動計算部２２Ａ，２２Ｂは、（Ｍ３−２）を適用する。
【０２５２】
このように、実施の形態３によれば、２スピンドル１刃物台の旋盤に対しても、実施の形態１と同様の効果を得ることができる。すなわち、数値制御装置１が、重畳制御を行う場合にも基準軸６３Ｃおよび重畳軸６３Ｄで所望の低周波振動切削を実行させることが可能となる。
【０２５３】
ここで、数値制御装置１が備える制御演算部２のハードウェア構成について説明する。図３５は、実施の形態１から３にかかる制御演算部のハードウェア構成例を示す図である。
【０２５４】
制御演算部２は、図３５に示した制御回路３００、すなわちプロセッサ３０１、メモリ３０２により実現することができる。プロセッサ３０１の例は、ＣＰＵ（Central  Processing  Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサ、ＤＳＰともいう）またはシステムＬＳＩ（Large  Scale  Integration）である。メモリ３０２の例は、ＲＡＭ（Random  Access  Memory）またはＲＯＭ（Read  Only  Memory）である。
【０２５５】
制御演算部２は、プロセッサ３０１が、メモリ３０２で記憶されている、制御演算部２の動作を実行するためのプログラムを読み出して実行することにより実現される。また、このプログラムは、制御演算部２の手順または方法をコンピュータに実行させるものであるともいえる。メモリ３０２は、プロセッサ３０１が各種処理を実行する際の一時メモリにも使用される。
【０２５６】
プロセッサ３０１が実行するプログラムは、コンピュータで実行可能な、データ処理を行うための複数の命令を含むコンピュータ読取り可能かつ非遷移的な（non-transitory）記録媒体を有するコンピュータプログラムプロダクトであってもよい。プロセッサ３０１が実行するプログラムは、複数の命令がデータ処理を行うことをコンピュータに実行させる。
【０２５７】
また、制御演算部２を専用のハードウェアで実現してもよい。また、制御演算部２の機能について、一部を専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。
【０２５８】
また、実施の形態２の図２６〜図３０で説明した実施内容を、実施の形態１または実施の形態３に適用してもよい。
【０２５９】
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
【符号の説明】
【０２６０】
１  数値制御装置、２  制御演算部、３  入力操作部、４  表示部、５  ＰＬＣ操作部、１１Ａ，１１Ｂ  振動指令解析部、２１Ａ  基準軸補間部、２１Ｂ  重畳軸補間部、２２Ａ，２２Ｂ  振動計算部、２３Ｂ  差分計算部、２４Ａ，２４Ｂ  振動発生部、２５Ａ，２５Ｂ  振動チェック部、２６Ａ，２６Ｂ  移動量発生部、２７  合成部、２８  重畳合成部、３４  記憶部、３７  解析処理部、３８  補間処理部、５１ａ〜５１ｃ，５２ａ〜５２ｇ，５３ａ，５３ｂ，５４ａ〜５４ｃ  移動経路、６０  主軸、６１Ａ，６２Ａ，６３Ｃ  基準軸、６１Ｂ，６３Ｄ  重畳軸、６５Ａ，６５Ｂ，６５Ｃ  刃物台、６６Ａ，６６Ｂ，６６Ｃ，６６Ｄ  工具、６８  第１の主軸、６９  第２の主軸、７０〜７２  加工ワーク、７５，７６  第１スピンドル、７７  第２スピンドル、８１，８２Ｐ，８２Ｑ，８３  加工プログラム、９０  駆動部、１１０，１２０，１３０  工作機械、Ｐ１ａ，Ｐ１ｂ，Ｐ２ａ，Ｐ２ｂ  指令振幅、Ｐ１ｃ，Ｐ２ｃ  差分振幅。
【要約】
工具（６６Ａ）または加工ワーク（７０）の移動を行う基準軸（６１Ａ）と、工具（６６Ｂ）または加工ワーク（７０）の移動を行う重畳軸（６１Ｂ）と、を有する工作機械（１１０）に対し、基準軸（６１Ａ）の移動量を重畳軸（６１Ｂ）の移動量に重畳する数値制御装置（１）であって、重畳制御指令があった場合に、基準軸（６１Ａ）を振動させる第１の振動指令と、重畳軸（６１Ｂ）を振動させる第２の振動指令と、主軸（６０）への単位時間当たりの主軸回転数の指令である主軸回転数指令とに基づいて、主軸（６０）が１回転する間の基準軸（６１Ａ）の振動回数である第１の振動回数が一定の振動回数になるとともに、主軸（６０）が１回転する間の重畳軸（６１Ｂ）の振動回数である第２の振動回数が一定の振動回数になるよう、第１の振動回数、第２の振動回数および主軸回転数の少なくとも１つを変更する制御演算部（２）を備える。【図１】
0006667724.tif 000002
【図２】
0006667724.tif 000003
【図３】
0006667724.tif 000004
【図４】
0006667724.tif 000005
【図５】
0006667724.tif 000006
【図６】
0006667724.tif 000007
【図７】
0006667724.tif 000008
【図８】
0006667724.tif 000009
【図９】
0006667724.tif 000010
【図１０】
0006667724.tif 000011
【図１１】
0006667724.tif 000012
【図１２】
0006667724.tif 000013
【図１３】
0006667724.tif 000014
【図１４】
0006667724.tif 000015
【図１５】
0006667724.tif 000016
【図１６】
0006667724.tif 000017
【図１７】
0006667724.tif 000018
【図１８】
0006667724.tif 000019
【図１９】
0006667724.tif 000020
【図２０】
0006667724.tif 000021
【図２１】
0006667724.tif 000022
【図２２】
0006667724.tif 000023
【図２３】
0006667724.tif 000024
【図２４】
0006667724.tif 000025
【図２５】
0006667724.tif 000026
【図２６】
0006667724.tif 000027
【図２７】
0006667724.tif 000028
【図２８】
0006667724.tif 000029
【図２９】
0006667724.tif 000030
【図３０】
0006667724.tif 000031
【図３１】
0006667724.tif 000032
【図３２】
0006667724.tif 000033
【図３３】
0006667724.tif 000034
【図３４】
0006667724.tif 000035
【図３５】
0006667724.tif 000036