(57)【特許請求の範囲】
【請求項１】
加工対象物の回転軸である主軸と、前記加工対象物を振動切削加工するための第１の工具を駆動する第１の駆動軸と、前記加工対象物を振動切削加工するための第２の工具を駆動する第２の駆動軸と、を制御するための制御演算部を備える数値制御装置であって、
前記制御演算部は、
前記加工対象物を振動切削加工するための加工プログラムを記憶する記憶部と、
前記加工プログラムで指定された前記主軸の回転数である第１の主軸回転数に、前記第１の駆動軸及び前記第２の駆動軸の振動回数が追従するか、を判定する判定部と、
前記判定部が、前記第１の駆動軸の振動回数が前記第１の主軸回転数に追従し、前記第２の駆動軸の振動回数が前記第１の主軸回転数に追従しないと判定した場合に、前記主軸の回転数を、前記第１の主軸回転数から第３の主軸回転数に変更する振動回数算出部と、を有し、
前記第３の主軸回転数は、前記第１の主軸回転数と第２の主軸回転数との間の値であり、
前記第２の主軸回転数は、前記第１の主軸回転数及び前記第１の駆動軸の振動回数に基づき算出される第１の振動周波数と、前記第２の駆動軸の振動回数と、に基づき算出される、
ことを特徴とする数値制御装置。
【請求項２】
前記第３の主軸回転数は、
前記第１の駆動軸及び前記第２の駆動軸の振動回数が追従する値である、
ことを特徴とする請求項１に記載の数値制御装置。
【請求項３】
前記第３の主軸回転数は、
前記第１の主軸回転数と前記第２の主軸回転数の中間値と、前記第２の主軸回転数との間の値である、
ことを特徴とする請求項１に記載の数値制御装置。
【請求項４】
前記第３の主軸回転数は、
前記第１の主軸回転数と前記第２の主軸回転数の中間値である、
ことを特徴とする請求項１に記載の数値制御装置。
【請求項５】
前記制御演算部は、
前記第１の工具および前記第２の工具の何れもが振動切削を行っていないタイミングで前記第１の駆動軸の振動回数、前記第２の駆動軸の振動回数および前記主軸の回転数の少なくとも１つを変更する、
ことを特徴とする請求項１から４のいずれか１項に記載の数値制御装置。
【請求項６】
前記制御演算部は、
前記第１の駆動軸および前記第２の駆動軸の少なくとも一方に対し、前記主軸とは並行でない切削方向に振動切削を行わせる、
ことを特徴とする請求項１から５のいずれか１項に記載の数値制御装置。
【請求項７】
加工対象物の回転軸である主軸と、前記加工対象物を振動切削加工するための第１の工具を駆動する第１の駆動軸と、前記加工対象物を振動切削加工するための第２の工具を駆動する第２の駆動軸と、を制御するための数値制御方法であって、
前記加工対象物を振動切削加工するための加工プログラムで指定された前記主軸の回転数である第１の主軸回転数に、前記第１の駆動軸及び前記第２の駆動軸の振動回数が追従するか、を判定する判定ステップと、
前記判定ステップにおいて、前記第１の駆動軸の振動回数が前記第１の主軸回転数に追従し、前記第２の駆動軸の振動回数が前記第１の主軸回転数に追従しないと判定された場合に、前記主軸の回転数を、前記第１の主軸回転数から第３の主軸回転数に変更する変更ステップと、
を含み、
前記第３の主軸回転数は、前記第１の主軸回転数と第２の主軸回転数との間の値であり、
前記第２の主軸回転数は、前記第１の主軸回転数及び前記第１の駆動軸の振動回数に基づき算出される第１の振動周波数と、前記第２の駆動軸の振動回数と、に基づき算出される、
ことを特徴とする数値制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、工具を振動させながらの振動切削を制御する数値制御装置、機械学習装置、および数値制御方法に関する。
【背景技術】
【０００２】
旋削加工の分野では、数値制御装置が、被加工物を加工するための加工プログラムに従って工具の動作を制御し、これにより工具に被加工物を加工させている。この数値制御装置の中には、工具経路に沿って特定の周波数で工具を振動させながら被加工物を振動切削させるものがある。【０００３】
特許文献１に記載の数値制御装置は、工具への移動指令から単位時間あたりの指令移動量を算出し、振動条件から単位時間あたりの振動移動量を算出し、指令移動量と振動移動量とを合成して合成移動量を算出し、合成移動量に基づいて振動切削を制御している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５５９９５２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１の技術では、工具を駆動する駆動軸が１つである工作機械を制御対象にしているので、複数の工具をそれぞれ駆動する複数の駆動軸で、回転している１つの被加工物への加工を行う工作機械に対しては、振動切削を実行することができなかった。【０００６】
本発明は、上記に鑑みてなされたものであって、複数の工具をそれぞれ駆動する複数の駆動軸で、回転している１つの被加工物への加工を行う工作機械に対して、振動切削を実行することができる数値制御装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、加工対象物の回転軸である主軸と、加工対象物を振動切削加工するための第１の工具を駆動する第１の駆動軸と、加工対象物を振動切削加工するための第２の工具を駆動する第２の駆動軸と、を制御するための制御演算部を備える数値制御装置であって、制御演算部は、加工対象物を振動切削加工するための加工プログラムを記憶する記憶部を有する。本発明の数値制御装置は、加工プログラムで指定された主軸の回転数である第１の主軸回転数に、第１の駆動軸及び第２の駆動軸の振動回数が追従するか、を判定する判定部と、判定部が、第１の駆動軸の振動回数が第１の主軸回転数に追従し、第２の駆動軸の振動回数が第１の主軸回転数に追従しないと判定した場合に、主軸の回転数を、第１の主軸回転数から第３の主軸回転数に変更する振動回数算出部と、を有する。第３の主軸回転数は、第１の主軸回転数と第２の主軸回転数との間の値であり、第２の主軸回転数は、第１の主軸回転数及び第１の駆動軸の振動回数に基づき算出される第１の振動周波数と、第２の駆動軸の振動回数と、に基づき算出される。
【発明の効果】
【０００８】
本発明にかかる数値制御装置は、複数の工具をそれぞれ駆動する複数の駆動軸で、回転している１つの被加工物への加工を行う工作機械に対して、振動切削を実行することができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１にかかる数値制御装置の構成例を示す図
【図２】実施の形態１にかかる工作機械の構成を示す図
【図３】実施の形態１にかかる数値制御装置が用いる加工プログラムの第１例を示す図
【図４】実施の形態１にかかる数値制御装置の処理手順を示すフローチャート
【図５】実施の形態１にかかる数値制御装置が用いる加工プログラムの第２例を示す図
【図６】実施の形態２にかかる数値制御装置の構成例を示す図
【図７】実施の形態２にかかる数値制御装置が用いる加工プログラムの例を示す図
【図８】実施の形態２にかかる数値制御装置の処理手順を示すフローチャート
【図９】実施の形態３にかかる数値制御装置の構成例を示す図
【図１０】実施の形態３にかかる数値制御装置が用いる加工プログラムの第１例を示す図
【図１１】実施の形態３にかかる数値制御装置の処理手順を示すフローチャート
【図１２】実施の形態３にかかる工作機械の別構成例を示す図
【図１３】実施の形態３にかかる数値制御装置が用いる加工プログラムの第２例を示す図
【図１４】実施の形態１から３にかかる制御演算部のハードウェア構成例を示す図
【図１５】実施の形態４にかかる数値制御装置の構成例を示す図
【図１６】実施の形態４にかかる機械学習装置の処理手順を示すフローチャート
【発明を実施するための形態】
【００１０】
以下に、本発明の実施の形態にかかる数値制御装置、機械学習装置、および数値制御方法を図面に基づいて詳細に説明する。なお、これらの実施の形態によりこの発明が限定されるものではない。
【００１１】
実施の形態１．
図１は、実施の形態１にかかる数値制御装置の構成例を示す図である。図２は、実施の形態１にかかる工作機械の構成を示す図である。図２では、紙面の横方向がＺ軸方向であり、紙面の縦方向がＸ軸方向である。そして、Ｘ１軸およびＸ２軸は、Ｘ軸に平行な軸であり、Ｙ１軸およびＹ２軸は、Ｙ軸に平行な軸であり、Ｚ１軸およびＺ２軸は、Ｚ軸に平行な軸である。
【００１２】
数値制御（ＮＣ：Numerical  Control）装置１Ｘは、旋盤加工を行う工作機械１１０に対して、工具６６Ａ，６６Ｂを振動させながらの加工である低周波振動切削の制御を実行するコンピュータである。以下の説明では低周波振動を単に振動という場合がある。
【００１３】
数値制御装置１Ｘは、第１の駆動軸を含む１軸以上の駆動軸によって、第１の工具と加工対象物である加工ワーク７０とを相対的に移動させ、さらに第２の駆動軸を含む１軸以上の駆動軸によって、第２の工具と加工ワーク７０とを相対的に移動させながら、加工ワーク７０の加工を制御する。すなわち、数値制御装置１Ｘは、第１の工具または加工ワーク７０を移動させる第１の駆動軸と、第２の工具または加工ワーク７０を移動させる第２の駆動軸とを有しており、第１の工具および第２の工具によって同時に加工ワーク７０を振動切削する。実施の形態１では、数値制御装置１Ｘが、２軸の駆動軸に対して振動切削を行うので、振動切削を実現するための制約条件に従うよう、各駆動軸の振動または加工ワーク７０の回転を制御する。
【００１４】
数値制御装置１Ｘは、加工ワーク７０の回転軸である１つの主軸６０と、第１の工具である工具６６Ａを移動させる第１の駆動軸と、第２の工具である工具６６Ｂを移動させる第２の駆動軸と、を備えた工作機械１１０を制御する。加工対象物である加工ワーク７０は、工作機械１１０によって加工される被加工物である。以下では、第１の駆動軸が第１軸６１Ａであり、第２の駆動軸が第２軸６１Ｂである場合について説明する。なお、図２では、主軸６０として主軸６０の中心線を図示している。
【００１５】
数値制御装置１Ｘは、制御演算部２Ｘと、入力操作部３と、表示部４と、ＰＬＣ（Programmable  Logic  Controller：プログラマブルロジックコントローラ）３６を操作するための機械操作盤などのＰＬＣ操作部５とを有する。図１には、工作機械１１０の構成要素である駆動部９０が示されている。
【００１６】
駆動部９０は、工作機械１１０が備える第１系統の刃物台６５Ａ、第２系統の刃物台６５Ｂなどを駆動させる。駆動部９０は、加工ワーク７０を回転させながら、２つの工具６６Ａ，６６Ｂを駆動する駆動機構である。駆動部９０は、工具６６ＡをＸ１軸方向、および第１軸６１Ａの軸方向であるＺ１軸方向に沿って移動させ、工具６６ＢをＸ２軸方向、および第２軸６１Ｂの軸方向であるＺ２軸方向に沿って移動させる。実施の形態１では、工具６６Ａの振動方向が第１軸６１Ａの軸方向であり、工具６６Ｂの振動方向が第２軸６１Ｂの軸方向である場合について説明する。なお、軸方向は装置構成によるので、軸方向は、上記方向に限定されない。
【００１７】
駆動部９０は、数値制御装置１Ｘ上で規定された各軸方向に工具６６Ａ，６６Ｂを移動させるサーボモータ９０１〜９０４と、サーボモータ９０１〜９０４の位置および速度を検出する検出器９７〜１００とを備えている。また、駆動部９０は、数値制御装置１Ｘからの指令に基づいて、サーボモータ９０１〜９０４を制御する各軸方向のサーボ制御部を備えている。各軸方向のサーボ制御部は、検出器９７〜１００からの位置および速度に基づいて、サーボモータ９０１〜９０４へのフィードバック制御を行う。
【００１８】
サーボ制御部のうちの、Ｘ１軸サーボ制御部９１は、サーボモータ９０１を制御することによって工具６６ＡのＸ１軸方向の動作を制御する。Ｚ１軸サーボ制御部９２は、サーボモータ９０２を制御することによって工具６６ＡのＺ１軸方向の動作を制御する。Ｘ２軸サーボ制御部９３は、サーボモータ９０３を制御することによって工具６６ＢのＸ２軸方向の動作を制御する。Ｚ２軸サーボ制御部９４は、サーボモータ９０４を制御することによって工具６６ＢのＺ２軸方向の動作を制御する。なお、工作機械１１０が３つの刃物台を備える場合、駆動部９０は、さらにＸ軸方向に平行なＸ３軸方向の動作を制御するＸ３軸サーボ制御部、およびＺ軸方向に平行なＺ３軸方向の動作を制御するＺ３軸サーボ制御部を備える。この場合、Ｘ３軸サーボ制御部は、検出器を備えた１つのサーボモータを制御し、Ｚ３軸サーボ制御部は、検出器を備えた１つのサーボモータを制御する。
【００１９】
また、駆動部９０は、加工ワーク７０を回転させるための主軸６０を回転させる主軸モータ９１１と、主軸モータ９１１の位置および回転数を検出する検出器２１１とを備えている。検出器２１１が検出する回転数は、主軸モータ９１１の回転数に対応している。
【００２０】
また、駆動部９０は、数値制御装置１Ｘからの指令に基づいて、主軸モータ９１１を制御する主軸サーボ制御部２００を備えている。主軸サーボ制御部２００は、検出器２１１からの位置および速度に基づいて、主軸モータ９１１へのフィードバック制御を行う。実施の形態１では、単位時間あたりの主軸６０の回転の回数を主軸回転数という。主軸回転数は、例えば、１分間あたりの主軸６０の回転数である。すなわち、主軸回転数は主軸回転速度に対応している。
【００２１】
なお、工作機械１１０が２つの加工ワーク７０を同時に加工する場合には、駆動部９０は、主軸モータ９１１と、検出器２１１と、主軸サーボ制御部２００とを２組備える。
【００２２】
入力操作部３は、制御演算部２Ｘに情報を入力する手段である。入力操作部３は、キーボード、ボタンまたはマウスなどの入力手段によって構成され、ユーザによる数値制御装置１Ｘに対するコマンドなどの入力、または加工プログラムもしくはパラメータなどを受付けて制御演算部２Ｘに入力する。表示部４は、液晶表示装置などの表示手段によって構成され、制御演算部２Ｘによって処理された情報を表示画面に表示する。ＰＬＣ操作部５は、ユーザによる操作を受付けて、操作に対応する指示をＰＬＣ３６に送る。
【００２３】
制御部である制御演算部２Ｘは、入力制御部３２と、データ設定部３３と、記憶部３４と、画面処理部３１と、解析処理部３７と、制御信号処理部３５と、ＰＬＣ３６と、補間処理部３８Ｘと、加減速処理部３９と、軸データ出力部４０と、を有する。なお、ＰＬＣ３６は、制御演算部２Ｘの外部に配置されてもよい。
【００２４】
記憶部３４は、パラメータ記憶エリア３４１、加工プログラム記憶エリア３４３、表示データ記憶エリア３４４、および共有エリア３４５を有している。パラメータ記憶エリア３４１内には、制御演算部２Ｘの処理で使用されるパラメータ等が格納される。具体的には、パラメータ記憶エリア３４１内には、数値制御装置１Ｘを動作させるための制御パラメータ、サーボパラメータおよび工具データが格納される。加工プログラム記憶エリア３４３内には、加工ワーク７０の加工に用いられる加工プログラムが格納される。実施の形態１の加工プログラムは、工具６６Ａ，６６Ｂを振動させる指令である振動指令と、工具６６Ａ，６６Ｂを移動させる指令である移動指令とを含んでいる。
【００２５】
表示データ記憶エリア３４４内には、表示部４で表示される画面表示データが格納される。画面表示データは、表示部４に情報を表示するためのデータである。また、記憶部３４には、一時的に使用されるデータを記憶する共有エリア３４５が設けられている。
【００２６】
画面処理部３１は、表示データ記憶エリア３４４に格納された画面表示データを表示部４に表示させる制御を行う。入力制御部３２は、入力操作部３から入力される情報を受付ける。データ設定部３３は、入力制御部３２で受付けられた情報を記憶部３４に記憶させる。すなわち、入力操作部３が受付けた入力情報は、入力制御部３２およびデータ設定部３３を介して記憶部３４に書き込まれる。
【００２７】
制御信号処理部３５は、ＰＬＣ３６に接続されており、ＰＬＣ３６から、工作機械１１０の機械を動作させるリレーなどの信号情報を受付ける。制御信号処理部３５は、受付けた信号情報を、記憶部３４の共有エリア３４５に書き込む。これらの信号情報は、加工運転時に補間処理部３８Ｘが参照する。また、制御信号処理部３５は、解析処理部３７によって共有エリア３４５に補助指令が出力されると、この補助指令を共有エリア３４５から読み出してＰＬＣ３６に送る。補助指令は、数値制御軸である駆動軸を動作させる指令以外の指令である。補助指令の例は、後述するＭコードまたはＴコードである。
【００２８】
ＰＬＣ３６は、ＰＬＣ操作部５に対して操作が行われると、この操作に応じた動作を実行する。ＰＬＣ３６は、機械動作が記述されたラダープログラムを格納している。ＰＬＣ３６は、補助指令であるＴコードまたはＭコードを受付けると、ラダープログラムに従って補助指令に対応する処理を工作機械１１０に実行する。ＰＬＣ３６は、補助指令に対応する処理を実行した後、加工プログラムの次のブロックを実行させるために、機械制御が完了したことを示す完了信号を制御信号処理部３５に送る。
【００２９】
制御演算部２Ｘでは、制御信号処理部３５と、解析処理部３７と、補間処理部３８Ｘとは、記憶部３４を介して接続されており、記憶部３４を介して情報の書き込み、および読み出しを行う。以下の説明では、制御信号処理部３５と、解析処理部３７と、補間処理部３８Ｘとの間の情報の書き込み、および読み出しを説明する際に記憶部３４が介されていることを省略する場合がある。
【００３０】
加工プログラムの選択は、ユーザが入力操作部３で加工プログラム番号を入力することによって行われる。この加工プログラム番号は、入力制御部３２およびデータ設定部３３を介して共有エリア３４５に書き込まれる。機械操作盤等のサイクルスタートをトリガとして解析処理部３７は、共有エリア３４５内の選択された加工プログラム番号に対応する加工ワーク７０を指定したワーク指定情報を共有エリア３４５から受付けると、ワーク指定情報に対応する加工プログラムを加工プログラム記憶エリア３４３内から読み出して、加工プログラムの各ブロック（各行）に対して解析処理を行う。解析処理部３７は、例えば、Ｇコード（軸移動等に関する指令）、Ｔコード（工具交換指令など）、Ｓコード（主軸モータ回転数指令）、およびＭコード（機械動作指令）を解析する。
【００３１】
解析処理部３７は、解析した行にＭコードまたはＴコードが含まれている場合には、解析結果を共有エリア３４５および制御信号処理部３５を介してＰＬＣ３６に送る。また、解析処理部３７は、解析した行にＭコードが含まれている場合には、Ｍコードを、制御信号処理部３５を介してＰＬＣ３６に送る。ＰＬＣ３６はＭコードに対応する機械制御を実行する。実行が完了した場合、制御信号処理部３５を介してＭコードの完了を示す結果が記憶部３４に書き込まれる。補間処理部３８Ｘは記憶部３４に書き込まれた実行結果を参照する。
【００３２】
また、解析処理部３７は、Ｇコードが含まれている場合には、共有エリア３４５を介して解析結果を補間処理部３８Ｘに送る。具体的には、解析処理部３７は、Ｇコードに対応する移動条件を生成して補間処理部３８Ｘに送る。また、解析処理部３７は、Ｓコードで指定された主軸回転数を補間処理部３８Ｘに送る。移動条件は、工具６６Ａ，６６Ｂが加工位置を移動させていくための工具送りの条件であり、刃物台６５Ａ，６５Ｂを移動させる速度、刃物台６５Ａ，６５Ｂを移動させる位置などで示される。例えば、工具６６Ａの工具送りは、工具６６Ａを第１軸６１Ａの軸方向に進ませ、工具６６Ｂの工具送りは、工具６６Ｂを第２軸６１Ｂの軸方向に進ませる。
【００３３】
また、解析処理部３７は、振動指令解析部１１Ａ，１１Ｂと、移動指令解析部１２Ａ，１２Ｂとを有している。振動指令解析部１１Ａは、第１軸６１Ａへの振動指令を解析する手段であり、振動指令解析部１１Ｂは、第２軸６１Ｂへの振動指令を解析する手段である。
【００３４】
振動指令解析部１１Ａは、第１軸６１Ａ用の加工プログラム（後述の加工プログラム８１０Ａなど）に含まれる振動指令を解析して第１軸６１Ａの振動条件を生成し、共有エリア３４５を介して生成した振動条件を補間処理部３８Ｘに送る。
【００３５】
振動指令解析部１１Ｂは、第２軸６１Ｂ用の加工プログラム（後述の加工プログラム８１０Ｂなど）に含まれる振動指令を解析して第２軸６１Ｂの振動条件を生成し、共有エリア３４５を介して生成した振動条件を補間処理部３８Ｘに送る。
【００３６】
移動指令解析部１２Ａは、第１軸６１Ａ用の加工プログラムに含まれる移動指令を解析して第１軸６１Ａの移動条件を生成し、共有エリア３４５を介して生成した移動条件を補間処理部３８Ｘに送る。
【００３７】
移動指令解析部１２Ｂは、第２軸６１Ｂ用の加工プログラムに含まれる移動指令を解析して第２軸６１Ｂの移動条件を生成し、共有エリア３４５を介して生成した移動条件を補間処理部３８Ｘに送る。
【００３８】
すなわち、移動指令解析部１２Ａ，１２Ｂは、Ｇコードに対応する移動条件を生成して補間処理部３８Ｘに送る。移動条件の例は、刃物台の移動速度、刃物台を移動させる位置などである。
【００３９】
第１軸６１Ａへの振動指令は、第１軸６１Ａを第１軸６１Ａの軸方向であるＺ１軸方向に振動させる指令であり、第２軸６１Ｂへの振動指令は、第２軸６１ＢをＸ２軸方向、および第２軸６１Ｂの軸方向であるＺ２軸方向に振動させる指令である。振動条件は、振動切削を実行する際の振動の条件である。実施の形態１での振動条件は、振動切削の際の振動回数である。第１軸６１Ａの振動回数は、主軸６０が１回転する間の第１軸６１Ａの振動回数であり、第２軸６１Ｂの振動回数は、主軸６０が１回転する間の第２軸６１Ｂの振動回数である。換言すると、第１軸６１Ａの振動回数および第２軸６１Ｂの振動回数は、それぞれ、主軸６０が１回転する時間を基準とした振動の周波数に対応している。したがって、実施の形態１での振動条件は、振動切削の際の振動の周波数であるともいえる。
【００４０】
工作機械１１０では、第１軸６１Ａが振動するので、第１軸６１Ａの振動回数は第１軸６１Ａ側の工具６６Ａの振動回数に対応する。また、工作機械１１０では、第２軸６１Ｂが振動するので、第２軸６１Ｂの振動回数は第２軸６１Ｂ側の工具６６Ｂの振動回数に対応する。工作機械１１０では、第１軸６１Ａの振動回数が第１の振動回数であり、第２軸６１Ｂの振動回数が第２の振動回数である。
【００４１】
補間処理部３８Ｘは、指令移動量算出部２１Ａ，２１Ｂと、振動移動量算出部２２Ａ，２２Ｂと、判定部２３と、振動回数算出部２４と、合成部２７とを備えている。補間処理部３８Ｘの振動回数算出部２４は、主軸回転数に、第１軸６１Ａの振動および第２軸６１Ｂの振動を同期および追従させるため、主軸回転数、第１軸６１Ａの振動回数、および第２軸６１Ｂの振動回数の少なくとも１つを変更する。
【００４２】
例えば、補間処理部３８Ｘは、第１軸６１Ａの振動回数および第２軸６１Ｂの振動回数を変更するべきかを判定し、変更すると判定した軸の振動回数を主軸回転数に応じた振動回数に変更する。この場合において、補間処理部３８Ｘは、各軸の振動が主軸回転数に、同期および追従できるよう振動回数を変更する。
【００４３】
第１軸６１Ａの振動と主軸回転数とを同期させる処理は、主軸６０が１回転する間の第１軸６１Ａの振動回数が一定の振動回数になるよう、第１軸６１Ａの振動回数を調整する処理である。また、第２軸６１Ｂの振動と主軸回転数とを同期させる処理は、主軸６０が１回転する間の第２軸６１Ｂの振動回数が一定の振動回数になるよう、第２軸６１Ｂの振動回数を調整する処理である。換言すると、第１軸６１Ａの振動と主軸回転数とを同期させる処理は、第１軸６１Ａの振動周波数（振動数）と主軸回転数とを同期させる処理であり、第２軸６１Ｂの振動と主軸回転数とを同期させる処理は、第２軸６１Ｂの振動周波数と主軸回転数とを同期させる処理である。
【００４４】
なお、実施の形態１では、第１軸６１Ａの振動を振動回数で定義するので、第１軸６１Ａの振動と主軸回転数との同期を、第１軸６１Ａの振動回数と主軸回転数との同期という場合がある。また、実施の形態１では、第２軸６１Ｂの振動を振動回数で定義するので、第２軸６１Ｂの振動と主軸回転数との同期を、第２軸６１Ｂの振動回数と主軸回転数との同期という場合がある。
【００４５】
なお、第１軸６１Ａにおける一定の振動回数は、可変であり、第１軸６１Ａおよび第２軸６１Ｂによる振動切削に応じた回数を選択することができる。また、第２軸６１Ｂにおける一定の振動回数は、可変であり、第１軸６１Ａおよび第２軸６１Ｂによる振動切削に応じた回数を選択することができる。
【００４６】
補間処理部３８Ｘは、主軸回転数、第１軸６１Ａの振動回数、および第２軸６１Ｂの振動回数を共有エリア３４５から読み出す。
【００４７】
指令移動量算出部２１Ａ，２１Ｂは、解析処理部３７から解析結果である移動条件を受け取り、移動条件に対する補間処理を行い、補間処理の結果に対応する単位時間当たりの指令移動量を合成部２７に送る。具体的には、指令移動量算出部２１Ａは、解析処理部３７が解析した第１軸６１Ａの移動条件に基づいて、刃物台６５Ａを単位時間で移動させる指令移動量を算出して合成部２７に送る。また、指令移動量算出部２１Ｂは、解析処理部３７が解析した第２軸６１Ｂの移動条件に基づいて、刃物台６５Ｂを単位時間で移動させる指令移動量を算出して合成部２７に送る。
【００４８】
判定部２３は、主軸回転数、第１軸６１Ａの振動回数、および第２軸６１Ｂの振動回数に基づいて、第１軸６１Ａの振動回数と第２軸６１Ｂの振動回数との何れを調整するかを判定する。なお、判定部２３は、振動回数の代わりに周波数を取得した場合には、周波数に基づいて振動回数を算出しておく。振動切削において切屑を効率良く分断するには、主軸６０が１回転する間の工具６６Ａ，６６Ｂの振動回数は、自然数回でないことが必要であり、（０．５＋Ｎ）回（Ｎは０または自然数）近辺が望ましい。ここで、切屑を効率よく分断するとは、切屑の長さにばらつきのある分断ではなく、切屑を平均的に短く分断することを言う。
【００４９】
すなわち、切屑をできるだけ平均的に短く分断するためには、工具６６Ａ，６６Ｂの振動回数は、０．５と、０または自然数と、を足し合わせた数の近辺であることが望ましい。以下、主軸６０が１回転する間の工具６６Ａ，６６Ｂの振動回数が（０．５＋Ｎ）回となる振動回数を、特定振動回数という。主軸回転数に同期する振動回数の例が、特定振動回数である。主軸６０が１回転する間の工具６６Ａ，６６Ｂの振動回数が（０．５＋Ｎ）回となる振動回数である場合を、工具の振動回数と主軸が同期しているという。
【００５０】
ただし、特定振動回数近辺においても、切屑を分断しながらの振動切削は可能である。特定振動回数は（０．５＋Ｎ）回近辺であればよく、多少のずれが合っても構わない。（０．５＋Ｎ）回からずれていた場合、切屑の長さに多少のばらつきが生じるが、たとえば、切屑が分断できなかったり、切屑の長さに±５０％等のばらつきが生じたりするといった実質的な影響がなければよい。つまり、第１軸６１Ａと第２軸６１Ｂの振動回数を、特定振動回数に基づいて決定すればよい。
【００５１】
判定部２３は、主軸回転数に追従できていない、または特定振動回数となっていない駆動軸の振動回数を調整対象に選択する。判定部２３は、主軸回転数に追従できる振動回数から大きく離れている方の駆動軸を選択してもよいし、特定振動回数から大きく離れている方の駆動軸を選択してもよい。
【００５２】
例えば、第１軸６１Ａの振動回数が１．５回である場合、１．５＝（０．５＋１）であるので、第１軸６１Ａの振動回数は、特定振動回数である。また、第２軸６１Ｂの振動回数が６．５回である場合、６．５＝（０．５＋６）であるので、第２軸６１Ｂの振動回数も、特定振動回数である。また、第１軸６１Ａの周波数が、主軸回転数に追従可能な周波数（例えば、２５Ｈｚ）であり、第２軸６１Ｂの周波数が、主軸回転数に追従可能な周波数（例えば、１００Ｈｚ）を超えているとする。この場合、判定部２３は、第２軸６１Ｂの振動回数を調整対象に選択する。判定部２３は、判定結果を振動回数算出部２４に送る。また、判定部２３は、主軸回転数を加減速処理部３９に送る。
【００５３】
振動回数算出部２４は、振動の周波数および主軸回転数に基づいて、振動回数が特定振動回数となり、且つ主軸回転数に追従できるよう、駆動軸の振動回数を調整する。
【００５４】
主軸回転数に追従できる特定振動回数が、０．５回または１．５回であるとする。すなわち、主軸回転数に追従できる振動の周波数が、特定振動回数の０．５回または１．５回に対応する周波数であるとする。
【００５５】
判定部２３で第２軸６１Ｂが選択された場合、振動回数算出部２４は、０．５回または１．５回を第２軸６１Ｂの振動回数に設定する。振動回数算出部２４は、例えば、振動回数の複数の候補のうち、当初の振動回数に最も近いものを第２軸６１Ｂの振動回数に設定する。すなわち、振動回数算出部２４は、振動回数の変更前後の差が最小となる候補を選択して振動回数を変更する。
【００５６】
また、振動回数算出部２４は、調整後の振動回数と、調整をしなかった振動回数とを、それぞれ第１軸６１Ａまたは第２軸６１Ｂに対応付けして、振動移動量算出部２２Ｂに送る。ここでは、第２軸６１Ｂの振動回数が調整される場合について説明する。
【００５７】
振動移動量算出部２２Ａは、振動回数算出部２４から送られてきた第１軸６１Ａの振動回数または、共有エリア３４５内の第１軸６１Ａの振動条件に基づいて、第１軸６１Ａの振動移動量を算出する。第１軸６１Ａの振動移動量は、工具６６Ａを振動させるための単位時間での移動量である。振動移動量算出部２２Ａは、算出した第１軸６１Ａの振動移動量を合成部２７に送る。
【００５８】
振動移動量算出部２２Ｂは、振動回数算出部２４から送られてきた第２軸６１Ｂの振動回数または、共有エリア３４５内の第２軸６１Ｂの振動条件に基づいて、第２軸６１Ｂの振動移動量を算出する。第２軸６１Ｂの振動移動量は、工具６６Ｂを振動させるための単位時間での移動量である。振動移動量算出部２２Ｂは、算出した第２軸６１Ｂの振動移動量を合成部２７に送る。
【００５９】
工具６６Ａ，６６Ｂの移動は、振動切削のための移動と、加工ワーク７０に対して加工を進める方向（切削方向）への移動と、を足し合わせたものである。実施の形態１では、切削方向は図２におけるＺ軸方向である。したがって、合成部２７は、振動切削のための振動移動量と、加工ワーク７０に対して加工を進めるための切削方向への移動量とを足し合わせる。
【００６０】
具体的には、合成部２７は、指令移動量算出部２１Ａから送られてきた指令移動量と、振動移動量算出部２２Ａから送られてきた振動移動量とを合成することによって合成移動量を生成する。なお、振動移動量は、波形で示されてもよい。この場合、合成移動量も波形で示されてもよい。合成部２７は、補間処理の結果である合成移動量を加減速処理部３９に送る。具体的には、合成部２７は、第１軸６１Ａ用の合成移動量、および第２軸６１Ｂ用の合成移動量を加減速処理部３９に送る。
【００６１】
加減速処理部３９は、補間処理部３８Ｘから供給された補間処理の結果に対して、加速度をなめらかに変化させるための加減速処理を行う。加減速処理部３９は、移動の開始および停止の際の加減速処理を行う。具体的には、加減速処理部３９は、第１軸６１Ａ用の合成移動量に基づいて、第１軸６１Ａへの移動指令を生成し、第２軸６１Ｂ用の合成移動量に基づいて、第２軸６１Ｂへの移動指令を生成する。加減速処理部３９が処理する位置指令は、単位時間あたりの速度指令である。加減速処理部３９は、Ｘ１軸、Ｘ２軸、Ｚ１軸およびＺ２軸に対して加減速指令を生成する。
【００６２】
加減速処理部３９は、加減速処理の処理結果である速度指令を軸データ出力部４０に送る。なお、加減速処理部３９は、主軸回転数に対しては加減速処理を行わない。加減速処理部３９は、主軸回転数に対応する回転数指令を軸データ出力部４０に送る。加減速処理部３９が生成する回転数指令は、ステップ指令である。
【００６３】
軸データ出力部４０は、速度指令を駆動部９０に出力する。具体的には、軸データ出力部４０は、Ｘ１軸への速度指令をＸ１軸サーボ制御部９１に出力し、Ｚ１軸への速度指令をＺ１軸サーボ制御部９２に出力する。また、軸データ出力部４０は、Ｘ２軸への速度指令をＸ２軸サーボ制御部９３に出力し、Ｚ２軸への速度指令をＺ２軸サーボ制御部９４に出力する。また、軸データ出力部４０は、主軸６０への回転数指令を主軸サーボ制御部２００に出力する。これにより、Ｘ１軸サーボ制御部９１、Ｚ１軸サーボ制御部９２、Ｘ２軸サーボ制御部９３、Ｚ２軸サーボ制御部９４、主軸サーボ制御部２００は、工具６６ＡのＸ１軸方向およびＺ１軸方向の動作と、工具６６ＢのＸ２軸方向およびＺ２軸方向の動作と、主軸６０の回転動作とを制御する。
【００６４】
ここで、数値制御装置１Ｘによる加工制御の動作手順の概略について説明する。工作機械１１０による加工が開始される際には、ＰＬＣ３６が制御信号処理部３５へサイクルスタート信号を出力し、制御信号処理部３５が、サイクルスタート信号を補間処理部３８Ｘに出力する。これにより、補間処理部３８Ｘが、解析処理部３７を起動する。
【００６５】
この後、解析処理部３７が加工プログラムを１ブロック毎に読み込んで解析し、解析結果である振動条件、移動条件および主軸回転数を共有エリア３４５に格納する。そして、補間処理部３８Ｘが、解析処理部３７の解析結果に基づいて、第１軸６１Ａ用の単位時間あたりの合成移動量および第２軸６１Ｂ用の単位時間あたりの合成移動量を算出して加減速処理部３９に送る。
【００６６】
これにより、加減速処理部３９は、補間処理部３８Ｘからの合成移動量に基づいて、各軸への加減速移動指令を生成する。この移動指令は、軸データ出力部４０から駆動部９０に出力され、駆動部９０が移動指令に従って各軸の動作を制御する。
【００６７】
図２に示すように、実施の形態１にかかる工作機械１１０は、刃物台６５Ａに第１軸６１Ａがあり、刃物台６５Ｂに第２軸６１Ｂがある１スピンドル２刃物台の旋盤である。１スピンドル２刃物台の旋盤は、１つの主軸と２つの刃物台を具備した旋盤である。刃物台６５Ａ，６５Ｂは、タレットともよばれる。工作機械１１０の一例は、タレット旋盤である。
【００６８】
工作機械１１０は、第１スピンドル７５を備えた主軸台を有している。第１スピンドル７５は、加工ワーク７０が取り付けられた状態で回転し、これにより加工ワーク７０を回転させる。第１スピンドル７５による加工ワーク７０の回転軸が、主軸台に設けられた主軸６０である。
【００６９】
工作機械１１０は、第１の刃物台である刃物台６５Ａと第２の刃物台である刃物台６５Ｂとを備えており、刃物台６５Ａに第１軸６１Ａが設けられ、刃物台６５Ｂに第２軸６１Ｂが設けられている。刃物台６５Ａは、Ｘ１軸方向およびＺ１軸方向に移動可能となっており、刃物台６５Ｂは、Ｘ２軸方向およびＺ２軸方向に移動可能となっている。工作機械１１０では、Ｚ１軸が第１軸６１Ａであり、Ｚ２軸が第２軸６１Ｂである。
【００７０】
刃物台６５Ａは、第１軸６１Ａ側の刃物台であり、刃物台６５Ｂは、第２軸６１Ｂ側の刃物台である。刃物台６５Ａ，６５Ｂは、旋回式の刃物台である。刃物台６５Ａは、複数の工具６６Ａを取り付け可能となっており、工具６６Ａを旋回させることで使用する工具６６Ａを切り替える。同様に、刃物台６５Ｂは、複数の工具６６Ｂを取り付け可能となっており、工具６６Ｂを旋回させることで使用する工具６６Ｂを切り替える。
【００７１】
刃物台６５ＡがＺ１軸方向に振動することによって、工具６６Ａが加工ワーク７０の振動切削加工を行う。刃物台６５ＢがＺ２軸方向に振動することによって、工具６６Ｂが加工ワーク７０の振動切削加工を行う。なお、実施の形態１では、説明の便宜上、刃物台６５Ａの振動を工具６６Ａの振動として説明する場合がある。また、刃物台６５Ｂの振動を工具６６Ｂの振動として説明する場合がある。
【００７２】
実施の形態１における工作機械１１０の振動条件は、以下の（Ｌ１−１）から（Ｌ１−２）とする。尚、この振動条件は、加工対象物の加工仕上がり精度がよく、さらに切屑を細かく分断するための条件の一例である。
（Ｌ１−１）主軸６０が１回転する間の工具６６Ａ，６６Ｂの振動回数は、第１軸６１Ａ側と第２軸６１Ｂ側とで同じとする。尚、第１軸６１Ａ側と第２軸６１Ｂ側とは、ともに振動切削中の主軸回転数に同期した振動回数で動作する。
（Ｌ１−２）振動の振幅は、第１軸６１Ａ側と第２軸６１Ｂ側とで同じとする。
【００７３】
（Ｌ１−１）および（Ｌ１−２）では、振動回数および振幅が、第１軸６１Ａ側と第２軸６１Ｂ側とで同じとしたが、異なっていてもよい。これは、工作機械１１０では、第１軸６１Ａの振動が第２軸６１Ｂに伝わらないからである。
【００７４】
図３は、実施の形態１にかかる数値制御装置が用いる加工プログラムの第１例を示す図である。加工プログラム８１Ｐは、数値制御装置１Ｘが工作機械１１０を制御する際に用いられる。このため、加工プログラム８１Ｐは、第１軸６１Ａ用の加工プログラム８１０Ａと、第２軸６１Ｂ用の加工プログラム８１０Ｂとを含んでいる。
【００７５】
加工プログラム８１Ｐ内の主軸回転数指令であるＭ３  Ｓ１は、主軸６０への主軸回転数の指令である。Ｍ３  Ｓ１＝３０００は、主軸６０を１分間あたり３０００回転させる指令である。また、Ｇ０は位置決め指令であり、Ｇ１６５は低周波振動指令であり、Ｇ１は移動指令である。Ｇ１６５で規定される「Ａ」は振動の振幅であり、「Ｄ」は主軸６０が１回転する間の振動回数である。
【００７６】
加工プログラム８１Ｐでは、加工プログラム８１０ＡにおけるＧ０によって工具６６Ａの位置決めが行われ、加工プログラム８１０ＢにおけるＧ０によって工具６６Ｂの位置決めが行われる。
【００７７】
また、第１軸６１Ａ用の加工プログラム８１０Ａにおいて、Ｇ１６５が用いられる場合、Ｇ１６５で指定された振幅および振動回数で工具６６ＡがＺ１軸方向に振動する。ここでは、工具６６Ａに対し、振幅を０．２ｍｍ、主軸６０が１回転する間の振動回数を０．５回で振動させる場合を示している。
【００７８】
また、第２軸６１Ｂ用の加工プログラム８１０Ｂにおいて、Ｇ１６５が用いられる場合、Ｇ１６５で指定された振幅および振動回数で工具６６Ｂが振動する。ここでは、工具６６Ｂに対し、振幅を０．３ｍｍ、主軸６０が１回転する間の振動回数を６．５回で振動させる場合を示している。
【００７９】
加工プログラム８１０Ａでは、振動回数が０．５回であり、加工プログラム８１０Ｂでは、振動回数が６．５回である。前述したように、振動回数が６．５回の場合の振動の周波数は、主軸回転数に追従可能な、例えば１００Ｈｚよりも大きいので、判定部２３は、第２軸６１Ｂの振動回数を調整対象に選択する。振動回数算出部２４は、主軸回転数に追従できる特定振動回数の中から、当初の加工プログラム８１０Ｂで指定された振動回数に最も近い１．５回を第２軸６１Ｂの振動回数に設定する。
【００８０】
数値制御装置１Ｘは、第２軸６１Ｂの振動回数を１．５回に変更した加工プログラムを実行した場合と同様の処理を実行する。加工プログラム８１Ｐの第２軸６１Ｂの振動回数を１．５回に変更した加工プログラムが加工プログラム８１Ｑである。加工プログラム８１Ｑは、加工プログラム８１０Ａと、加工プログラム８１１Ｂとを含んでいる。加工プログラム８１１Ｂは、加工プログラム８１０Ｂに対して、第２軸６１Ｂの振動回数が変更されたものである。なお、数値制御装置１Ｘは、実際に加工プログラム８１Ｐを加工プログラム８１Ｑに書き換えて、加工プログラム８１Ｑを実行してもよい。
【００８１】
つぎに、工作機械１１０を制御する際の処理手順について説明する。図４は、実施の形態１にかかる数値制御装置の処理手順を示すフローチャートである。図４は、数値制御装置１Ｘによる工作機械１１０への制御処理手順を示している。
【００８２】
解析処理部３７は、加工プログラム内の振動指令が、１つの主軸に対する２軸以上の振動指令であるか否かを判定する（ステップＳ１０）。すなわち、解析処理部３７は、加工プログラム内の振動指令が、１つの主軸と２軸以上の駆動軸とを有した工作機械への振動指令であるか否かを判定する。
【００８３】
振動指令が、１つの主軸に対する２軸以上の振動指令でない場合（ステップＳ１０、Ｎｏ）、数値制御装置１Ｘは、振動回数を変更することなく、加工プログラムに従った加工制御を実行する。
【００８４】
振動指令が、１つの主軸に対する２軸以上の振動指令である場合（ステップＳ１０、Ｙｅｓ）、判定部２３は、主軸回転数を共有エリア３４５から読み出して取得する（ステップＳ２０）。また、判定部２３は、振動条件である振動回数を、共有エリア３４５から読み出して取得する（ステップＳ３０）。具体的には、判定部２３は、第１軸６１Ａの振動回数および第２軸６１Ｂの振動回数を取得する。
【００８５】
判定部２３は、主軸回転数および振動回数に基づいて、第１軸６１Ａおよび第２軸６１Ｂの何れの振動回数を変更するかを判定する（ステップＳ４０）。このとき、判定部２３は、主軸回転数および振動回数に基づいて、振動の周波数が主軸回転数に追従するか否かを判定するとともに、振動回数が主軸回転数に同期するか否かを判定する。
【００８６】
判定部２３は、判定結果を振動回数算出部２４に送る。振動回数算出部２４は、振動回数を変更すると判定された駆動軸の振動回数を主軸回転数に追従かつ同期できる特定振動回数に変更する（ステップＳ５０）。
【００８７】
振動移動量算出部２２Ａは、主軸回転数と第１軸６１Ａの振動回数とに基づいて、第１軸６１Ａの振動移動量を算出し、振動移動量算出部２２Ｂは、主軸回転数と第２軸６１Ｂの振動回数とに基づいて、第２軸６１Ｂの振動移動量を算出する。
【００８８】
また、指令移動量算出部２１Ａは、解析処理部３７からの移動条件に基づいて、第１軸６１Ａの指令移動量を算出し、指令移動量算出部２１Ｂは、解析処理部３７からの移動条件に基づいて、第２軸６１Ｂの指令移動量を算出する。
【００８９】
合成部２７は、指令移動量と振動移動量とを合成する（ステップＳ６０）。具体的には、合成部２７は、第１軸６１Ａの指令移動量と、第１軸６１Ａの振動移動量とを合成することによって第１軸６１Ａの合成移動量を生成し、第２軸６１Ｂの指令移動量と、第２軸６１Ｂの振動移動量とを合成することによって、第２軸６１Ｂの合成移動量を生成する。この後、制御演算部２Ｘは、第１軸６１Ａの合成移動量を用いて第１軸６１Ａを制御し、第２軸６１Ｂの合成移動量を用いて、第２軸６１Ｂを制御する。
【００９０】
なお、数値制御装置１Ｘは、第１軸６１Ａの振動回数および第２軸６１Ｂの振動回数の両方を変更してもよい。第１軸６１Ａの振動回数および第２軸６１Ｂの振動回数の両方が変更される場合の加工プログラムについて説明する。
【００９１】
図５は、実施の形態１にかかる数値制御装置が用いる加工プログラムの第２例を示す図である。加工プログラム８２Ｐは、数値制御装置１Ｘが工作機械１１０を制御する際に用いられる。加工プログラム８２Ｐは、第１軸６１Ａ用の加工プログラム８１２Ａと、第２軸６１Ｂ用の加工プログラム８１２Ｂとを含んでいる。
【００９２】
加工プログラム８１２Ｂは、図３で説明した加工プログラム８１０Ｂと同様の加工プログラムである。加工プログラム８１２Ａは、図３で説明した加工プログラム８１０Ａと比較して、Ｇ１６５の振動回数が異なっている。加工プログラム８１２ＡにおけるＧ１６５の振動回数は５．５回である。
【００９３】
第１軸６１Ａの振動の周波数および第２軸６１Ｂの振動の周波数が、ともに主軸回転数に追従できていないとする。この場合、振動回数算出部２４は、第１軸６１Ａおよび第２軸６１Ｂの両方の振動回数を変更する。振動回数算出部２４は、図３で説明した方法により、第２軸６１Ｂの振動回数を１．５回に変更する。また、第１軸６１Ａに対し、主軸回転数に追従できる特定振動回数は、０．５回または１．５回である。第１軸６１Ａの当初の振動回数は、第２軸６１Ｂの当初の振動回数よりも小さい。このため、振動回数算出部２４は、振動回数の複数の候補のうち、第２軸６１Ｂに設定した振動回数よりも小さいものを選択する。なお、振動回数算出部２４は、振動回数の複数の候補のうち、当初の振動回数に最も近いものを選択してもよい。
【００９４】
数値制御装置１Ｘは、第１軸６１Ａの振動回数を０．５回に変更し第２軸６１Ｂの振動回数を１．５回に変更した加工プログラムを実行した場合と同様の処理を実行する。加工プログラム８２Ｐの第１軸６１Ａの振動回数を０．５回に変更し、第２軸６１Ｂの振動回数を１．５回に変更した加工プログラムが加工プログラム８２Ｑである。加工プログラム８２Ｑは、加工プログラム８１３Ａと加工プログラム８１３Ｂとを含んでいる。加工プログラム８１３Ａは、加工プログラム８１２Ａに対して、第１軸６１Ａの振動回数が変更されたものであり、加工プログラム８１３Ｂは、加工プログラム８１２Ｂに対して、第２軸６１Ｂの振動回数が変更されたものである。なお、数値制御装置１Ｘは、実際に加工プログラム８２Ｐを加工プログラム８２Ｑに書き換えて、加工プログラム８２Ｑを実行してもよい。
【００９５】
なお、実施の形態１では、工作機械１１０が備える工具の駆動軸が２軸である場合について説明したが、工具の駆動軸は３軸以上であってもよい。この場合、振動回数が変更される駆動軸は、１軸であってもよいし、２軸以上であってもよい。
【００９６】
このように、実施の形態１によれば、第１軸６１Ａの振動回数および第２軸６１Ｂの振動回数が、主軸回転数に同期および追従できるよう、第１軸６１Ａの振動回数または第２軸６１Ｂの振動回数が変更されるので、工作機械１１０に対して、複数の駆動軸で振動切削を実行することが可能となる。
【００９７】
実施の形態２．
つぎに、図６から図８を用いてこの発明の実施の形態２について説明する。実施の形態２では、１つの主軸と、複数の駆動軸と、を有した工作機械１１０に対して、各駆動軸の振動回数が主軸回転数に同期できるよう、主軸回転数を変更する。すなわち、実施の形態１では主軸の回転数を維持し、駆動軸の振動回数を変更したが、実施の形態２では、駆動軸の振動回数を維持し、主軸の回転数を変更する。
【００９８】
図６は、実施の形態２にかかる数値制御装置の構成例を示す図である。図６の各構成要素のうち図１に示す実施の形態１の数値制御装置１Ｘと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
【００９９】
数値制御装置１Ｙは、数値制御装置１Ｘと同様の構成を有したコンピュータであり、工作機械１１０に対して振動切削を実行させる。数値制御装置１Ｙは、数値制御装置１Ｘと比較して、制御演算部２Ｘの代わりに、制御演算部２Ｙを備えている。制御演算部２Ｙは、制御演算部２Ｘと比較して、補間処理部３８Ｘの代わりに、補間処理部３８Ｙを備えている。
【０１００】
補間処理部３８Ｙは、補間処理部３８Ｘと比較して、振動回数算出部２４の代わりに、主軸回転数算出部２５を備えている。実施の形態２の判定部２３は、第１軸６１Ａの振動回数および主軸回転数に基づいて、第１軸６１Ａの振動回数が主軸回転数に同期しているか否かを判定する。判定部２３は、第１軸６１Ａの振動回数に対応する周波数が特定の範囲内である場合に、第１軸６１Ａの振動回数が主軸回転数に同期していると判定する。また、判定部２３は、第２軸６１Ｂの振動回数および主軸回転数に基づいて、第２軸６１Ｂの振動回数が主軸回転数に同期しているか否かを判定する。判定部２３は、第２軸６１Ｂの振動回数に対応する周波数が特定の範囲内である場合に、第２軸６１Ｂの振動回数が主軸回転数に同期していると判定する。
【０１０１】
主軸回転数算出部２５は、第１軸６１Ａの振動回数および第２軸６１Ｂの振動回数の何れか一方が、主軸回転数に同期していない場合または主軸回転数に追従できない場合に、第１軸６１Ａの振動回数および第２軸６１Ｂの振動回数が主軸回転数に同期および追従するよう主軸回転数を変更する。主軸回転数算出部２５は、第１軸６１Ａおよび第２軸６１Ｂの振動回数に基づいて、主軸回転数を変更する。
【０１０２】
主軸回転数算出部２５は、主軸回転数に複数の候補がある場合には、当初の主軸回転数に最も近いものを採用する。主軸回転数算出部２５は、主軸回転数を変更した場合には、変更後の主軸回転数を振動移動量算出部２２Ａ，２２Ｂおよび加減速処理部３９に送る。主軸回転数算出部２５は、主軸回転数を変更しなかった場合には、主軸回転数をそのまま振動移動量算出部２２Ａ，２２Ｂおよび加減速処理部３９に送る。
【０１０３】
振動移動量算出部２２Ａは、主軸回転数と、主軸回転数算出部２５から送られてきた第１軸６１Ａの振動回数とに基づいて、第１軸６１Ａの振動移動量を算出する。振動移動量算出部２２Ｂは、主軸回転数と、主軸回転数算出部２５から送られてきた第２軸６１Ｂの振動回数とに基づいて、第２軸６１Ｂの振動移動量を算出する。補間処理部３８Ｙによるその他の処理は、補間処理部３８Ｘによる処理と同様である。
【０１０４】
図７は、実施の形態２にかかる数値制御装置が用いる加工プログラムの例を示す図である。加工プログラム８３Ｐは、数値制御装置１Ｙが工作機械１１０を制御する際に用いられる。加工プログラム８３Ｐは、第１軸６１Ａ用の加工プログラム８１４Ａと、第２軸６１Ｂ用の加工プログラム８１４Ｂとを含んでいる。
【０１０５】
加工プログラム８１４Ａは、図３で説明した加工プログラム８１０Ａと同様の加工プログラムである。加工プログラム８１４Ｂは、図３で説明した加工プログラム８１０Ｂと比較して、Ｇ１６５の振動回数が異なっている。加工プログラム８１４ＢにおけるＧ１６５の振動回数は２．５回である。
【０１０６】
判定部２３は、第１軸６１Ａの振動回数である１．５回および主軸回転数である３０００回転に基づいて、第１軸６１Ａの振動回数が主軸回転数に同期し且つ追従可能か否かを判定する。ここでは、第１軸６１Ａの振動回数が主軸回転数に同期し且つ追従可能である。
【０１０７】
また、判定部２３は、第２軸６１Ｂの振動回数である２．５回および主軸回転数である３０００回転に基づいて、第２軸６１Ｂの振動回数が主軸回転数に同期し且つ追従可能か否かを判定する。ここでは、第２軸６１Ｂの振動回数が主軸回転数に同期しているが、主軸回転数に追従できない。すなわち、1分間に主軸３０００回転で主軸１回転あたり２．５回の振動切削は、工作機械１１０の機械的構造要因（例えば、イナーシャ等の特性）で、機械装置が振動加工に追従できず切屑が分断できなくなる。換言すると、工具６６Ｂの振動周波数が高くなり過ぎると、工作機械１１０の構造的な要因によって、工具６６Ｂの振動波形がなまるので、すなわち振動指令に従った理想的な振動波形が実現できなくなるので、工具６６ＢによるＭ（Ｍは自然数）回転目の振動波形と（Ｍ＋１）回転目の振動波形とが重ならなくなる。したがって、主軸回転数を大きくし過ぎると、第２軸６１Ｂの振動回数が主軸回転数に追従できず加工ワーク７０の切屑を分断できなくなる。そのため、振動回数が追従可能な主軸回転数を設定する方法を以下説明する。
【０１０８】
上述したように、第２軸６１Ｂの振動回数２．５回は、主軸回転数（Ｓ１）３０００回転に追従できないとする。この場合、第１軸６１Ａの振動回数および第２軸６１Ｂの振動回数が主軸回転数に追従できるよう主軸回転数を変更する。すなわち、主軸回転数算出部２５は、切屑の分断効果を同程度に維持しつつ第２軸６１Ｂの振動回数を主軸回転数に追従させるために、主軸回転数を変更する。まず、主軸回転数算出部２５は、第１軸６１Ａの振動回数に対応する第１の振動周波数ｆ１を算出する。次に、この第１の振動周波数ｆ１を第２軸６１Ｂの第２の振動周波数ｆ２として仮適用する。さらに、主軸回転数算出部２５は、第２軸６１Ｂの振動回数２．５回、および第２軸６１Ｂに仮適用した第２の振動周波数ｆ２に基づいて、第２軸６１Ｂの理想的な主軸回転数Ｓ２を仮算出する。
【０１０９】
この時点で、第１軸６１Ａに関する主軸回転数Ｓ１、振動回数１．５回、第１の振動周波数ｆ１と、第２軸６１Ｂに関する主軸回転数Ｓ２、振動回数２．５回、第２の振動周波数ｆ２（＝ｆ１）が仮算出される。ここで、第１軸６１Ａ及び第２軸６１Ｂに対する主軸６０は１軸しか存在しないため、これらの値を用いて主軸回転数を調整していく必要がある。ここで、主軸回転数はＳ１とＳ２の間の範囲から選択することによって調整していく。
【０１１０】
例えば、主軸回転数算出部２５は、第１軸６１Ａの主軸回転数と、算出した第２軸６１Ｂの主軸回転数と、の平均値（中間値）を算出し、平均値（中間値）を第１軸６１Ａおよび第２軸６１Ｂの共通の主軸回転数Ｓｃとして仮に設定する。主軸回転数Ｓｃと第１軸６１Ａの振動回数１．５回から、第１の振動周波数ｆ１ｃを再計算し、第１の振動周波数ｆ１ｃが主軸回転数Ｓｃに追従できるかどうかを確認する。また、主軸回転数Ｓｃと第２軸６２Ｂの振動回数２．５回から、第２の振動周波数ｆ２ｃを再計算し、第２の振動周波数ｆ２ｃが主軸回転数Ｓｃに追従できるかどうかを確認する。
【０１１１】
第１の振動周波数ｆ１ｃと第２の振動周波数ｆ２ｃが主軸回転数Ｓｃに追従し、かつ同期している場合には、仮設定していた主軸回転数Ｓｃを変更後の主軸回転数として採用する。
【０１１２】
図７の例では、第２軸６１Ｂの振動回数２．５回から算出される理想的な主軸回転数Ｓ２が１８００回転であるとする。この場合、主軸回転数算出部２５は、当初の主軸回転数Ｓ１である３０００回転と、Ｓ２である１８００回転との平均値（中間値）である２４００回転を、まずは共通の主軸回転数Ｓｃに仮設定する。主軸回転数Ｓｃが２４００回である場合に、第１軸６１Ａ及び第２軸６１Ｂは追従かつ同期できるので、主軸回転数Ｓｃは２４００回と決定する。そして、主軸回転数算出部２５は、主軸回転数である３０００回転を２４００回転に変更する。
【０１１３】
なお、主軸回転数算出部２５は、第１軸６１Ａの当初の主軸回転数である３０００回転で、第２軸６１Ｂが追従可能な場合、当初の主軸回転数を共通の主軸回転数に設定してもよい。
【０１１４】
また、主軸回転数Ｓ１とＳ２の間から仮設定した主軸回転数Ｓｃに第１軸６１Ａまたは第２軸６１Ｂの少なくともいずれか一方が追従あるいは同期できない場合には、主軸回転数Ｓ１とＳ２の間から主軸回転数Ｓｃを再度仮設定し直し、同様のステップを繰り返す。尚、例えば、第２軸６１Ｂが主軸回転数Ｓｃに追従しない場合、主軸回転数ＳｃとＳ２の間から再度主軸回転数を設定すればよい。また、第１軸６１Ａが主軸回転数Ｓｃに追従しない場合、ＳｃとＳ１の間から再度主軸回転数を設定すればよい。
【０１１５】
例えば主軸回転数Ｓｃを２４００回転に決定したとすると、数値制御装置１Ｙは、主軸回転数を２４００回転に変更した加工プログラムを実行した場合と同様の処理を実行する。加工プログラム８２Ｐの主軸回転数を２４００回転に変更した加工プログラムが加工プログラム８３Ｑである。加工プログラム８３Ｑは、加工プログラム８１５Ａと加工プログラム８１４Ｂとを含んでいる。加工プログラム８１５Ａは、加工プログラム８１４Ａに対して、主軸回転数が変更されたものである。なお、数値制御装置１Ｙは、実際に加工プログラム８３Ｐを加工プログラム８３Ｑに書き換えて、加工プログラム８３Ｑを実行してもよい。
【０１１６】
つぎに、数値制御装置１Ｙが工作機械１１０を制御する際の処理手順について説明する。図８は、実施の形態２にかかる数値制御装置の処理手順を示すフローチャートである。図８は、数値制御装置１Ｙによる工作機械１１０への制御処理手順を示している。なお、図８の処理のうち、図４で説明した処理と同様の処理については、その説明を省略する。
【０１１７】
図８におけるステップＳ１１０からＳ１３０の処理は、図４におけるステップＳ１０からＳ３０の処理と同様である。
【０１１８】
判定部２３は、主軸回転数および振動回数に基づいて、主軸回転数を変更するかを判定する（ステップＳ１４０）。ここでの振動条件は、振動回数である。したがって、ここでの判定部２３は、第１軸６１Ａの振動回数に対応する振動の周波数が、主軸回転数に対して追従可能か否かと、第２軸６１Ｂの振動回数に対応する振動の周波数が、主軸回転数に対して追従可能か否かを判定する。第１軸６１Ａの周波数または第２軸６１Ｂの周波数が主軸回転数に対して追従可能でない場合、たとえば加工ワーク７０の切屑を分断できなくなる場合、判定部２３は、主軸回転数を変更すると判定する。
【０１１９】
さらに、判定部２３は、主軸回転数に対して、第１軸６１Ａおよび第２軸６１Ｂの振動回数が同期しているか否かを判定する。第１軸６１Ａの振動回数または第２軸６１Ｂの振動回数が主軸回転数に対して同期していない場合、判定部２３は、主軸回転数を変更すると判定する。ここで、同期とは、主軸１回転に対して工具が（０．５＋Ｎ）回振動することをいう。完全に同期していることが好ましいが、主軸１回転に対する工具の振動回数が（０．５＋Ｎ）回程度であれば、構わない。
【０１２０】
一方、第１軸６１Ａおよび第２軸６１Ｂが主軸回転数に対して同期し追従可能である場合、判定部２３は、主軸回転数を変更しないと判定する。尚、第１軸６１Ａおよび第２軸６１Ｂが主軸回転数に対して追従不可能である場合のみ、判定部２３は、主軸回転数を変更すると判定してもよい。
【０１２１】
判定部２３は、判定結果を振動回数算出部２４に送る。ここでは、判定部２３が、主軸回転数を変更すると判定した場合について説明する。主軸回転数算出部２５は、主軸回転数および振動回数に基づいて、第１軸６１Ａおよび第２軸６１Ｂの振動回数に合う主軸回転数を算出する（ステップＳ１５０）。具体的には、主軸回転数算出部２５は、主軸回転数に対して追従可能でないと判定された駆動軸に対して、追従可能な周波数を設定したうえで、第１軸６１Ａおよび第２軸６１Ｂの振動回数で同期し且つ追従可能な主軸回転数を算出する。そして、主軸回転数算出部２５は、当初の主軸回転数を、算出した主軸回転数に変更する（ステップＳ１６０）。なお、主軸回転数を変更しないと判定された場合、数値制御装置１Ｙは、主軸回転数を変更することなく、加工プログラムに従った通常の動作を実行する。
【０１２２】
振動移動量算出部２２Ｂは、主軸回転数と第１軸６１Ａの振動回数とに基づいて、第１軸６１Ａの振動移動量を算出し、主軸回転数と第２軸６１Ｂの振動回数とに基づいて、第２軸６１Ｂの振動移動量を算出する。合成部２７は、指令移動量と振動移動量とを合成することによって、合成移動量を生成する（ステップＳ１７０）。
【０１２３】
なお、数値制御装置１Ｙは、主軸回転数の変更と、第１軸６１Ａまたは第２軸６１Ｂの変更との両方を実行してもよい。換言すると、数値制御装置１Ｙは、主軸回転数、第１軸６１Ａ、および第２軸６１Ｂの少なくとも１つを変更する。
【０１２４】
このように、実施の形態２によれば、第１軸６１Ａの振動回数および第２軸６１Ｂの振動回数が、主軸回転数に同期および追従できるよう、主軸回転数を変更するので、工作機械１１０に対して、複数の駆動軸で振動切削を実行することが可能となる。
【０１２５】
実施の形態３．
つぎに、図９から図１４を用いてこの発明の実施の形態３について説明する。実施の形態３では、主軸回転数を変更する際に一方の駆動軸が先に振動切削を開始した場合、他方の駆動軸による振動切削を開始せず、両方の駆動軸において振動切削が行われていないタイミングになってから、両方の駆動軸が、変更後の主軸回転数で振動切削を実行する。
【０１２６】
図９は、実施の形態３にかかる数値制御装置の構成例を示す図である。図９の各構成要素のうち図１に示す実施の形態１の数値制御装置１Ｘと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
【０１２７】
数値制御装置１Ｚは、数値制御装置１Ｘと同様の構成を有したコンピュータであり、工作機械１１０に対して振動切削を実行させる。数値制御装置１Ｚは、数値制御装置１Ｘと比較して、制御演算部２Ｘの代わりに、制御演算部２Ｚを備えている。制御演算部２Ｚは、制御演算部２Ｘと比較して、補間処理部３８Ｘの代わりに、補間処理部３８Ｚを備えている。
【０１２８】
補間処理部３８Ｚは、補間処理部３８Ｘと比較して、待機制御部２６をさらに備えている。待機制御部２６は、主軸回転数を変更できるタイミングであるか否かを判定する。数値制御装置１Ｚは、主軸回転数が変更されるまでは、一方の駆動軸の振動切削を許可するが、両方の駆動軸の振動切削は許可しない。また、待機制御部２６は、主軸回転数を変更できるタイミングでなければ、主軸回転数を変更できるタイミングとなるまで、主軸回転数の変更処理を待機させる。
【０１２９】
主軸回転数を変更できるタイミングは、第１軸６１Ａおよび第２軸６１Ｂの両方において振動切削が行われていないタイミングである。主軸回転数を変更する前に、第１軸６１Ａおよび第２軸６１Ｂのうちの一方の駆動軸が加工ワーク７０に対して振動切削を開始した場合、待機制御部２６は、振動切削を実行していない他方の駆動軸に対して振動切削を開始させない。待機制御部２６は、一方の駆動軸において振動切削を実行しないタイミングになると、主軸回転数を変更させる。すなわち、待機制御部２６は、第１軸６１Ａおよび第２軸６１Ｂの両方において振動切削が行われないタイミングになると、両軸の振動切削を禁止したまま主軸回転数を変更させる。振動切削が行われない期間は、Ｇ０の位置決め指令の実行中、第１軸６１Ａの動作と第２軸６１Ｂの動作との待ち合わせ中などである。主軸回転数が変更された後、数値制御装置１Ｚは、第１軸６１Ａおよび第２軸６１Ｂの両方に対して振動切削を実行させる。
【０１３０】
図１０は、実施の形態３にかかる数値制御装置が用いる加工プログラムの第１例を示す図である。加工プログラム８４は、数値制御装置１Ｚが工作機械１１０を制御する際に用いられる。加工プログラム８４は、第１軸６１Ａ用の加工プログラム８１６Ａと、第２軸６１Ｂ用の加工プログラム８１６Ｂとを含んでいる。
【０１３１】
主軸回転数が変更される前に、加工プログラム８１６Ａの実行が先に進み、加工プログラム８１６Ｂの処理が加工プログラム８１６Ａの処理から遅れる場合がある。すなわち、数値制御装置１Ｚが、加工プログラム８１６Ａのａ１，ａ２ブロックの振動指令を先に開始し、第１軸６１Ａの振動切削中に、加工プログラム８１６Ｂのｂ１ブロックの振動指令を実行しようとする場合がある。この場合、待機制御部２６は、加工プログラム８１６Ｂのｂ１ブロックの振動指令を開始させず、振動指令をスルーして、ｂ２ブロック、ｂ３ブロックを実行し、ｂ３ブロックとａ３ブロックの待ち合わせ状態になった場合、はじめてｂ１ブロックの振動切削条件（モード）を有効にする。
【０１３２】
この後、第１軸６１Ａにおいて振動切削が行われないタイミングになると、数値制御装置１Ｚは、主軸回転数を変更したうえで、第１軸６１Ａおよび第２軸６１Ｂを用いた振動切削を実行する。
【０１３３】
つぎに、数値制御装置１Ｚが工作機械１１０を制御する際の処理手順について説明する。図１１は、実施の形態３にかかる数値制御装置の処理手順を示すフローチャートである。図１１は、数値制御装置１Ｚによる工作機械１１０への制御処理手順を示している。なお、図１１の処理のうち、図４で説明した処理と同様の処理については、その説明を省略する。ここでは、第１軸６１Ａの振動切削が先に開始され、第２軸６１Ｂの振動切削が後から開始される場合について説明する。
【０１３４】
図１１におけるステップＳ２１０からＳ２３０の処理は、図４におけるステップＳ１０からＳ３０の処理と同様である。数値制御装置１Ｚは、主軸回転数が変更されるまでは、第１軸６１Ａの駆動軸の振動切削を、当初の主軸回転数のまま実行する。
【０１３５】
待機制御部２６は、第１軸６１Ａで振動切削が開始された後、第２軸６１Ｂの振動切削が開始されるタイミングになると、主軸回転数を変更できるタイミングであるか否かを判定する。すなわち、待機制御部２６は、第１軸６１Ａおよび第２軸６１Ｂへの振動指令があった場合に、第２軸６１Ｂから見た他軸である第１軸６１Ａで次ブロックの振動切削が始まっているか否かを判定する（ステップＳ２４０）。例えば、加工プログラム８１６Ａのａ１ブロックの振動指令が実行されている場合は、第１軸６１Ａで次ブロックの振動切削が始まっている。
【０１３６】
第１軸６１Ａで振動切削が開始されている場合（ステップＳ２４０、Ｙｅｓ）、待機制御部２６は、第２軸６１Ｂによる振動切削を開始させない。そして、待機制御部２６は、第１軸６１Ａおよび第２軸６１Ｂの両軸の動作を監視し、第１軸６１Ａおよび第２軸６１Ｂの両軸何れもが振動切削中以外の状態であるか否かを判定する（ステップＳ２５０）。
【０１３７】
第１軸６１Ａおよび第２軸６１Ｂの何れか一方が振動切削中である場合（ステップＳ２５０、Ｎｏ）、待機制御部２６は、第１軸６１Ａおよび第２軸６１Ｂの両軸の動作を監視し、第１軸６１Ａおよび第２軸６１Ｂの両軸何れもが振動切削中以外の状態であるか否かを判定する（ステップＳ２５０）。
【０１３８】
第１軸６１Ａおよび第２軸６１Ｂの両軸何れもが振動切削中以外の状態になると（ステップＳ２５０、Ｙｅｓ）、待機制御部２６は、両軸の何れも振動切削中でないことを、主軸回転数算出部２５に通知する。数値制御装置１Ｚは、図８で説明した処理と同様の処理によって、主軸回転数を変更するか否かの判定と、主軸回転数の算出と、主軸回転数の変更と、合成移動量の生成とを実行する（ステップＳ２６０からＳ２９０）。ステップＳ２６０からＳ２９０の処理は、図８におけるステップＳ１４０からＳ１７０の処理と同様である。この後、数値制御装置１Ｚは、両軸、すなわち第１軸６１Ａおよび第２軸６１Ｂで振動切削を開始する（ステップＳ３００）。
【０１３９】
工具６６Ａ，６６Ｂの一方が振動切削を行っているタイミングで他方の振動切削を開始すると、振動切削で加工された箇所に加工不良が発生してしまう場合がある。また、工具６６Ａ，６６Ｂの一方が振動切削を行っているタイミングで主軸回転数が変更されると、振動切削で加工された箇所に加工不良が発生してしまう場合がある。実施の形態３では、工具６６Ａ，６６Ｂの両方が振動切削を行っていないタイミングで主軸回転数が変更されるので、加工不良の発生を防止することができる。
【０１４０】
なお、数値制御装置１Ｚは、主軸回転数の代わりに第１軸６１Ａまたは第２軸６１Ｂの振動回数を変更してもよい。この場合、数値制御装置１Ｚは、第１軸６１Ａおよび第２軸６１Ｂの両軸何れもが振動切削中でない時に、第１軸６１Ａまたは第２軸６１Ｂの振動回数を変更する。数値制御装置１Ｚは、図４で説明した処理と同様の処理によって、第１軸６１Ａまたは第２軸６１Ｂの振動回数を変更する。
【０１４１】
このように、数値制御装置１Ｚは、第１軸６１Ａの振動回数、第１軸６１Ａの振動回数および主軸回転数の少なくとも１つを変更する前に、工具６６Ａ，６６Ｂの一方が振動切削を開始すると、他方の振動切削は開始しない。そして、数値制御装置１Ｚは、工具６６Ａ，６６Ｂの両方が振動切削を行っていないタイミングで第１軸６１Ａの振動回数、第１軸６１Ａの振動回数および主軸回転数の少なくとも１つを変更する。
【０１４２】
ところで、振動切削は、Ｚ軸方向のみならず、Ｘ軸方向およびＺ軸方向といった２軸以上の補間加工に適用されてもよい。すなわち、数値制御装置１Ｚは、第１軸６１Ａおよび第２軸６１Ｂを合成した方向に振動切削を行わせてもよい。この場合、主軸６０の中心軸とは異なる軸方向の振動切削が行われる。
【０１４３】
図１２は、実施の形態３にかかる工作機械の別構成例を示す図である。図１２の各構成要素のうち図２に示す実施の形態１の工作機械１１０と同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
【０１４４】
工作機械１１１は、工作機械１１０と比較して、刃物台６５Ｂの代わりに刃物台６５Ｃを備えている。刃物台６５Ｃは、刃物台６５Ｂと同様に、工具６６Ｂを取り付け可能となっている。また、刃物台６５Ｃは、刃物台６５Ｂと同様に、Ｘ２軸方向およびＺ２軸方向に移動可能となっている。工作機械１１１では、工作機械１１０と同様に、Ｚ２軸が第２軸６１Ｂである。
【０１４５】
刃物台６５Ｃは、Ｘ２方向およびＺ２軸方向に振動させられることによって工具６６Ｂで加工ワーク７０の振動切削加工を行う。刃物台６５Ｃは、Ｘ２方向およびＺ２軸方向に振動可能なので、工具６６Ｂは、加工ワーク７０に対してテーパー形状の加工を行うことができる。このように、数値制御装置１Ｚは、テーパー形状の加工を行う工作機械１１１に対しても、振動切削を実行することができる。
【０１４６】
図１３は、実施の形態３にかかる数値制御装置が用いる加工プログラムの第２例を示す図である。加工プログラム８５は、数値制御装置１Ｚが工作機械１１１を制御する際に用いられる。加工プログラム８５は、第１軸６１Ａ用の加工プログラム８１７Ａと、第２軸６１Ｂ用の加工プログラム８１７Ｂとを含んでいる。加工プログラム８１７Ｂは、刃物台６５ＢをＺ軸方向に振動させる加工プログラム８１０Ｂなどとは異なり、刃物台６５ＣをＸ軸方向およびＺ軸方向に振動させる加工プログラムである。このため、加工プログラム８１７Ｂは、移動指令であるＧ１において、Ｘ方向の指令とＺ方向の指令とを含んでいる。なお、数値制御装置１Ｘまたは数値制御装置１Ｙが工作機械１１１を制御してもよい。
【０１４７】
なお、刃物台６５Ａも刃物台６５Ｃと同様に、２軸方向を合成した方向に移動および振動させてもよい。この場合、刃物台６５Ａは、Ｘ１軸方向とＺ１軸方向を合成した方向、すなわちＸ１軸方向およびＺ１軸方向を用いた補間方向に移動および振動する。
【０１４８】
ここで、数値制御装置１Ｘ〜１Ｚが備える制御演算部２Ｘ〜２Ｚのハードウェア構成について説明する。図１４は、実施の形態１から３にかかる制御演算部のハードウェア構成例を示す図である。なお、制御演算部２Ｘ〜２Ｚは、同様のハードウェア構成を有しているので、ここでは制御演算部２Ｚのハードウェア構成について説明する。
【０１４９】
制御演算部２Ｚは、図１４に示した制御回路３００、すなわちプロセッサ３０１、メモリ３０２により実現することができる。プロセッサ３０１の例は、ＣＰＵ（Central  Processing  Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサ、ＤＳＰ（Digital  Signal  Processor）ともいう）またはシステムＬＳＩ（Large  Scale  Integration）である。メモリ３０２の例は、ＲＡＭ（Random  Access  Memory）またはＲＯＭ（Read  Only  Memory）である。
【０１５０】
制御演算部２Ｚは、プロセッサ３０１が、メモリ３０２で記憶されている、制御演算部２Ｚの動作を実行するためのプログラムを読み出して実行することにより実現される。また、このプログラムは、制御演算部２Ｚの手順または方法をコンピュータに実行させるものであるともいえる。メモリ３０２は、プロセッサ３０１が各種処理を実行する際の一時メモリにも使用される。
【０１５１】
プロセッサ３０１が実行するプログラムは、コンピュータで実行可能な、データ処理を行うための複数の命令を含むコンピュータ読取り可能かつ非遷移的な（non-transitory）記録媒体を有するコンピュータプログラムプロダクトであってもよい。プロセッサ３０１が実行するプログラムは、複数の命令がデータ処理を行うことをコンピュータに実行させる。
【０１５２】
また、制御演算部２Ｚを専用のハードウェアで実現してもよい。また、制御演算部２Ｚの機能について、一部を専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。
【０１５３】
このように、実施の形態３では、数値制御装置１Ｚが、第１軸６１Ａの振動回数、第２軸６１Ｂの振動回数および主軸回転数の少なくとも１つを変更する前に、第１軸６１Ａの工具６６Ａおよび第２軸６１Ｂの工具６６Ｂの一方が先に振動切削を開始すると、他方の振動切削を開始しない。数値制御装置１Ｚは、工具６６Ａおよび第２軸６１Ｂの両方が振動切削を行っていないタイミングで第１軸６１Ａの振動回数、第２軸６１Ｂの振動回数および主軸回転数の少なくとも１つを変更して、第１軸６１Ａおよび第２軸６１Ｂによる振動切削を行う。したがって、第１軸６１Ａおよび第２軸６１Ｂの一方が先に振動切削を開始した場合であっても、工作機械１１０に対して、複数の駆動軸で振動切削を実行することが可能となる。
【０１５４】
実施の形態４．
つぎに、図１５および図１６を用いてこの発明の実施の形態４について説明する。実施の形態４では、振動回数と、振動振幅と、主軸回転数との組み合わせが、振動切削に適切な組み合わせであるか否かを機械学習装置が学習する。
【０１５５】
図１５は、実施の形態４にかかる数値制御装置の構成例を示す図である。図１５の各構成要素のうち図１に示す実施の形態１の数値制御装置１Ｘと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
【０１５６】
数値制御装置１Ｐは、数値制御装置１Ｘと同様の構成を有したコンピュータであり、工作機械１１０に対して振動切削を実行させる。数値制御装置１Ｐは、数値制御装置１Ｘと比較して、制御演算部２Ｘの代わりに、制御演算部２Ｐを備えている。制御演算部２Ｐは、制御演算部２Ｘと比較して、補間処理部３８Ｘの代わりに、補間処理部３８Ｐを備えている。また、制御演算部２Ｐは、機械学習装置５０を備えている。制御演算部２Ｐは、制御演算部２Ｘ〜２Ｚと同様のハードウェア構成を有している。
【０１５７】
機械学習装置５０は、記憶部３４および補間処理部３８Ｐに接続されている。機械学習装置５０は、観測部５１、データ取得部５２、および学習部５３を有している。なお、以下の説明では、機械学習装置５０による入力対象を（ｒ）とし、機械学習装置５０による出力対象を（ｎ）とし、機械学習装置５０が用いる関連情報を（ｉ）として説明する。
【０１５８】
本実施の形態では、入力対象が状態変数（後述する振動切削条件）および教師データ（後述する合否情報）であり、関連情報が状態変数と教師データとの組み合わせ（後述するデータセット）であり、出力対象が振動切削条件の合否判定結果である。また、以下の説明では、機械学習装置５０と解析処理部３７との間の情報の書き込み、および読み出しを説明する際に記憶部３４が介されていることを省略する場合がある。
【０１５９】
解析処理部３７は、ユーザ入力された振動切削条件（ｒ）を解析する。観測部５１は、解析処理部３７から、状態変数として、解析された振動切削条件（ｒ）を読み出す。観測部５１が状態変数として読み出す振動切削条件（ｒ）は、加工ワーク７０への実際の加工に用いられた振動切削条件である。振動切削条件（ｒ）は、主軸６０、および工具６６Ａ，６６Ｂを駆動する各駆動軸に対する振動切削の条件である。具体的には、加工ワーク７０への加工の際に実際に用いられた振動切削条件（ｒ）は、加工の際に実際に用いられた、振動回数情報（ｒ）と、振動振幅情報（ｒ）と、主軸回転数情報（ｒ）との組み合わせである。なお、観測部５１は、加工プログラム記憶エリア３４３内の加工プログラムから振動回数情報（ｒ）、振動振幅情報（ｒ）、および主軸回転数情報（ｒ）を読み出してもよい。また、観測部５１は、補間処理部３８Ｐから振動回数情報（ｒ）、振動振幅情報（ｒ）、および主軸回転数情報（ｒ）を読み出してもよい。
【０１６０】
振動回数情報（ｒ）は、振動切削の際の第１軸６１Ａの振動回数および第２軸６１Ｂの振動回数を示す情報である。振動振幅情報（ｒ）は、振動切削の際の第１軸６１Ａの振動振幅および第２軸６１Ｂの振動振幅を示す情報である。主軸回転数情報（ｒ）は、振動切削の際の主軸回転数を示す情報である。
【０１６１】
観測部５１は、系統毎に振動切削条件（ｒ）のデータ観測を行う。すなわち、観測部５１は、刃物台６５Ａ，６５Ｂ毎に、振動回数指令、振動振幅指令、および主軸回転数指令のデータ観測を行う。観測部５１は、取得した振動切削条件（ｒ）を学習部５３に出力する。
【０１６２】
データ取得部５２は、共有エリア３４５内から、教師データである合否情報（ｒ）を読み出す。データ取得部５２が読み出す合否情報（ｒ）は、振動切削の合否を示す情報である。換言すると、合否情報（ｒ）は、加工プログラムの振動切削が正常に完了したか否かを示す情報である。
【０１６３】
合否情報（ｒ）は、加工ワーク７０への加工が完了した後に、ユーザ入力に基づいて、共有エリア３４５内に格納される。すなわち、合否情報（ｒ）は、ユーザによって数値制御装置１Ｐに入力され、共有エリア３４５に格納される。データ取得部５２は、取得した合否情報（ｒ）を学習部５３に出力する。
【０１６４】
学習部５３は、状態変数である振動切削条件（ｒ）と、合否情報（ｒ）との組合せに基づいて作成されるデータセット（ｉ）に従って、振動切削条件に対応する合否予測（ｎ）を学習し、合否を推測する。
【０１６５】
振動切削条件（ｒ）のうち、振動回数情報（ｒ）および振動振幅情報（ｒ）は、ユーザによって入力される振動切削指令に含まれている。主軸回転数情報（ｒ）は、加工プログラムで規定されている。
【０１６６】
振動切削条件（ｒ）は、機械学習装置５０によって合格（適切）であると判定された振動切削条件、または機械学習装置５０によって不合格（不適切）であると判定された振動切削条件に対してユーザが修正を加えた振動切削条件である。
【０１６７】
補間処理部３８Ｐは、補間処理部３８Ｘと比較して、判定部２３および振動回数算出部２４の代わりに、設定部２８を備えている。設定部２８は、機械学習装置５０から送られてくる振動切削条件（ｒ）を振動切削に用いる条件に設定するか、またはユーザ入力される振動切削条件を振動切削に用いる条件に設定する。これにより、設定部２８は、振動回数と、振動振幅と、主軸回転数との組み合わせを、振動切削に用いる条件に設定する。機械学習装置５０から送られてくる振動切削条件（ｒ）は、機械学習装置５０が合格であると判定した振動切削条件である。ユーザ入力される振動切削条件は、機械学習装置５０によって不合格であると判定された振動切削条件に対してユーザが修正を加えた振動切削条件である。
【０１６８】
補間処理部３８Ｐは、設定部２８によって設定された振動回数と、振動振幅と、主軸回転数との組み合わせに基づいて、実施の形態１から３で説明した補間処理を実行する。すなわち、補間処理部３８Ｐは、機械学習装置５０によって合格であると判定された振動切削条件（ｒ）、または機械学習装置５０によって不合格であると判定された振動切削条件に対してユーザが修正を加えた振動切削条件に基づいて、補間処理を実行する。
【０１６９】
なお、機械学習装置５０は、例えば、ネットワークを介して数値制御装置１Ｐに接続される、数値制御装置１Ｐとは別個の装置であってもよい。また、機械学習装置５０は、図１５に図示したように数値制御装置１Ｐに内蔵されていてもよい。さらに、機械学習装置５０は、クラウドサーバ上に存在していてもよい。
【０１７０】
ここで、学習部５３の詳細な学習処理について説明する。学習部５３は、例えば、ニューラルネットワークモデルに従って、いわゆる教師あり学習により、系統毎の合否予測（ｎ）を学習する。学習部５３は、振動切削条件（ｒ）および合否情報（ｒ）を互いに関連付けたデータセットから、合否予測（ｎ）を学習する。ここで、教師あり学習とは、ある入力と結果(ラベル)のデータの組を大量に学習装置に与えることで、それらのデータセットにある特徴を学習し、入力から結果を推定するモデルをいう。
【０１７１】
ニューラルネットワークは、複数のニューロンからなる入力層、複数のニューロンからなる中間層(隠れ層)、及び複数のニューロンからなる出力層で構成される。中間層は、１層、又は２層以上でもよい。
【０１７２】
例えば、３層のニューラルネットワークであれば、複数の入力が入力層に入力されると、その値に第１の重みを掛けて中間層に入力され、その結果にさらに第２の重みを掛けて出力層から出力される。この出力結果は、第１の重みの値および第２の重みの値によって変わる。
【０１７３】
本願において、ニューラルネットワークは、観測部５１によって観測される振動切削条件（ｒ）、並びに、データ取得部５２によって取得される合否情報（ｒ）の組合せに基づいて作成されるデータセットに従って、いわゆる教師あり学習により、合否予測（ｎ）を学習する。この場合のニューラルネットワークは、入力層に振動切削条件（ｒ）を入力して出力層から出力された結果が、合否情報（ｒ）に近づくように第１の重みおよび第２の重みを調整することで学習する。ニューラルネットワークは、ユーザから新たな振動切削条件（ｒ）を受付けた場合には、調整済みの第１の重みおよび第２の重みを用いて、合否を予測する。
【０１７４】
また、ニューラルネットワークは、いわゆる教師なし学習によって、合否予測（ｎ）を学習することもできる。教師なし学習とは、入力データのみを大量に機械学習装置５０に与えることで、入力データがどのような分布をしているか学習し、対応する教師データを与えなくても、入力データに対して圧縮、分類、整形等を行う装置を学習する手法である。それらのデータセットにある特徴を似た者どうしにクラスタリングすること等ができる。この結果を使って、何らかの基準を設けてそれを最適にするような出力の割り当てを行うことで、出力の予測を実現することができる。また、教師なし学習と教師あり学習の中間的な問題設定として、半教師あり学習と呼ばれるものもあり、これは一部のみ入力と出力のデータの組が存在し、それ以外は入力のみのデータである場合がこれに当たる。
【０１７５】
また、学習部５３は、複数の数値制御装置に対して作成されるデータセットに従って、合否予測（ｎ）を学習するようにしてもよい。また、学習部５３は、同一の現場で使用される複数の数値制御装置からデータセットを取得してもよいし、或いは、異なる現場で独立して稼働する複数の数値制御装置から収集されるデータセットを利用して合否予測（ｎ）を学習するようにしてもよい。
【０１７６】
さらに、データセットを収集する数値制御装置を途中で対象に追加し、或いは、逆に対象から除去することも可能である。また、ある数値制御装置に関して合否予測（ｎ）を学習した機械学習装置を、これとは別の数値制御装置に取り付け、当該別の数値制御装置に関して合否予測（ｎ）を再学習して更新するようにしてもよい。
【０１７７】
また、学習部５３に用いられる学習アルゴリズムとしては、特徴量そのものの抽出を学習する、深層学習（Deep  Learning）を用いることもでき、他の公知の方法、例えば強化学習、遺伝的プログラミング、機能論理プログラミング、サポートベクターマシンなどに従って機械学習を実行してもよい。また、機械学習装置５０は、旋削、ドリル、ねじ切りなど、加工の種類毎に合否予測（ｎ）を学習してもよい。
【０１７８】
ここで、機械学習装置５０による学習処理手順および予測処理手順について説明する。図１６は、実施の形態４にかかる機械学習装置の処理手順を示すフローチャートである。
【０１７９】
観測部５１は、解析処理部３７から、状態変数である振動切削条件（ｒ）を取得する（ステップＳ３１０）。具体的には、観測部５１は、刃物台６５Ａ，６５Ｂ毎に、振動回数指令、振動振幅指令、および主軸回転数指令のデータ観測を行う。観測部５１は、取得した振動切削条件（ｒ）を学習部５３に出力する。
【０１８０】
データ取得部５２は、共有エリア３４５内から、教師データである合否情報（ｒ）を取得する（ステップＳ３２０）。なお、ステップＳ３１０の処理とステップＳ３２０の処理とは、何れが先に実行されてもよい。
【０１８１】
学習部５３は、振動切削条件（ｒ）と合否情報（ｒ）との組合せに基づいて作成されるデータセット（ｉ）に従って、振動切削条件（ｒ）に対応する合否予測（ｎ）を学習する（ステップＳ３３０）。学習部５３は、上述したニューラルネットワークを用いて、合否予測（ｎ）を学習する。
【０１８２】
この後、ユーザが新たな振動切削条件を数値制御装置１Ｐに入力すると、解析処理部３７が、新たな振動切削条件を解析する。機械学習装置５０は、解析処理部３７から、解析された新たな振動切削条件を取得する（ステップＳ３４０）。
【０１８３】
機械学習装置５０は、学習で得たニューラルネットワークに、取得した新たな振動切削条件を入力し、新たな振動切削条件に対応する合否予測を得る。すなわち、機械学習装置５０は、学習内容と新たな振動切削条件とに基づいて、新たな振動切削条件の合否判定を行う（ステップＳ３５０）。
【０１８４】
機械学習装置５０は、新たな振動切削条件が不合格であった場合（ステップＳ３５０、不合格）、振動切削条件が不合格であることをユーザに通知する（ステップＳ３６０）。機械学習装置５０は、例えば、振動切削条件が不合格であることを示すメッセージを表示部４に表示させる。ユーザは、振動切削条件が不合格であった場合、振動切削条件を修正する。数値制御装置１Ｐは、修正された振動切削条件を受け付けて、解析処理部３７が、修正された振動切削条件を解析する。機械学習装置５０は、解析処理部３７から、修正された振動切削条件を取得する（ステップＳ３４０）。機械学習装置５０は、振動切削条件が合格となるまで、ステップＳ３４０からＳ３６０の処理を繰り返す。
【０１８５】
機械学習装置５０は、新たな振動切削条件が合格であった場合（ステップＳ３５０、合格）、新たな振動切削条件を補間処理部３８Ｐの設定部２８に送る。これにより、設定部２８は、新たな振動切削条件を、振動切削の際に用いる条件に設定する。数値制御装置１Ｐは、設定された新たな振動切削条件を用いて、振動切削を制御する。
【０１８６】
振動切削が完了すると、ユーザが、振動切削が適切に実行されたか否かを判定する。ユーザは、振動切削によって切屑を平均的に短く分断できた場合に、振動切削が合格であると判定し、振動切削による切屑が長い場合または切屑の長さに大きなばらつきがある場合に振動切削が不合格であると判定する。
【０１８７】
ユーザは、振動切削の合否を示す合否情報（ｒ）を、数値制御装置１Ｐに入力する。この合否情報（ｒ）は、共有エリア３４５に格納される。この後、機械学習装置５０は、新たな振動切削条件（ｒ）と、新たな振動切削条件に対応する合否情報（ｒ）との組み合わせに対して、合否予測（ｎ）を学習する。すなわち、機械学習装置５０は、上述したステップＳ３１０からＳ３３０の処理によって、新たな振動切削条件に対する合否予測（ｎ）を学習する。具体的には、観測部５１は、解析処理部３７から、振動切削に用いた新たな振動切削条件（ｒ）を状態変数として取得する。また、データ取得部５２は、共有エリア３４５内から、新たな振動切削条件（ｒ）に対応する合否情報（ｒ）を教師データとして取得する（ステップＳ３２０）。学習部５３は、新たな振動切削条件（ｒ）と、新たな合否情報（ｒ）との組合せに基づいて作成されるデータセット（ｉ）に従って、新たな振動切削条件（ｒ）に対応する合否予測（ｎ）を学習する（ステップＳ３３０）。
【０１８８】
また、ユーザが次の振動切削条件を数値制御装置１Ｐに入力すると、機械学習装置５０は、上述したステップＳ３４０からＳ３６０の処理によって、次の振動切削条件に対して合否を予測する。数値制御装置１Ｐでは、機械学習装置５０による合否予測（ｎ）の学習と、新たな振動切削条件（ｒ）に対する合否の予測とが繰り返される。
【０１８９】
なお、ユーザが振動切削の結果に対して点数を付け、機械学習装置５０が、振動切削条件に対する点数を学習してもよい。点数は、振動切削に対する切屑の長さが短いほど高く、切屑の長さのばらつきが小さいほど高くなるよう付けられるものとする。ユーザは、振動切削条件（ｒ）と、点数（ｒ）とを対応付けして数値制御装置１Ｐに入力する。観測部５１は、解析処理部３７から、状態変数である振動切削条件（ｒ）を取得し、データ取得部５２は、共有エリア３４５内から、教師データである点数（ｒ）を取得する。
【０１９０】
学習部５３は、振動切削条件（ｒ）と点数（ｒ）との組合せに基づいて作成されるデータセット（ｉ）に従って、振動切削条件（ｒ）に対応する点数（ｎ）を学習する。学習部５３は、上述したニューラルネットワークを用いて、点数（ｎ）を学習する。機械学習装置５０は、ユーザから新たな振動切削条件を受け付けると、学習で得たニューラルネットワークに、取得した新たな振動切削条件を入力し、新たな振動切削条件に対応する点数を得る。機械学習装置５０は、算出した点数を表示部４に表示させる。
【０１９１】
なお、機械学習装置５０は、切屑を撮像した画像などに基づいて、点数（ｒ）を算出してもよい。この場合も機械学習装置５０は、振動切削に対する切屑の長さが短いほど点数（ｒ）が高く、切屑の長さのばらつきが小さいほど点数（ｒ）が高くなるよう点数（ｒ）を付ける。また、機械学習装置５０は、実施の形態２の数値制御装置１Ｙまたは実施の形態３の数値制御装置１Ｚに適用されてもよい。
【０１９２】
このように実施の形態４では、機械学習装置５０が、振動回数と、振動振幅と、主軸回転数との組み合わせが、振動切削に適切な組み合わせであるか否かを学習している。これにより、ユーザは、これから用いる予定の、振動回数と、振動振幅と、主軸回転数との組み合わせが、振動切削に適切であるか否かを容易に判断することができる。
【０１９３】
以上の実施の形態では刃物台を２つ持つ工作機械の例で説明したが、刃物台が１つの工作機械にも、刃物台を３つ以上持つ工作機械にも、本発明は適用することが出来る。
【０１９４】
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
【符号の説明】
【０１９５】
１Ｐ，１Ｘ〜１Ｚ  数値制御装置、２Ｐ，２Ｘ〜２Ｚ  制御演算部、３  入力操作部、４  表示部、５  ＰＬＣ操作部、１１Ａ，１１Ｂ  振動指令解析部、１２Ａ，１２Ｂ  移動指令解析部、２１Ａ，２１Ｂ  指令移動量算出部、２２Ａ，２２Ｂ  振動移動量算出部、２３  判定部、２４  振動回数算出部、２５  主軸回転数算出部、２６  待機制御部、２７  合成部、２８  設定部、３４  記憶部、３７  解析処理部、３８Ｐ，３８Ｘ〜３８Ｚ  補間処理部、５０  機械学習装置、５１  観測部、５２  データ取得部、５３  学習部、６０  主軸、６１Ａ  第１軸、６１Ｂ  第２軸、６５Ａ，６５Ｂ，６５Ｃ  刃物台、６６Ａ，６６Ｂ  工具、７０  加工ワーク、８１Ｐ，８１Ｑ，８２Ｐ，８２Ｑ，８３Ｐ，８３Ｑ，８４，８５  加工プログラム、９０  駆動部、１１０，１１１  工作機械。
【図１】
0006898530.tif 000002
【図２】
0006898530.tif 000003
【図３】
0006898530.tif 000004
【図４】
0006898530.tif 000005
【図５】
0006898530.tif 000006
【図６】
0006898530.tif 000007
【図７】
0006898530.tif 000008
【図８】
0006898530.tif 000009
【図９】
0006898530.tif 000010
【図１０】
0006898530.tif 000011
【図１１】
0006898530.tif 000012
【図１２】
0006898530.tif 000013
【図１３】
0006898530.tif 000014
【図１４】
0006898530.tif 000015
【図１５】
0006898530.tif 000016
【図１６】
0006898530.tif 000017