(57)【特許請求の範囲】
【請求項１】
加工対象物の回転軸である主軸と、前記加工対象物を振動切削加工するための工具を駆動する駆動軸と、を制御する数値制御装置であって、
前記加工対象物を振動切削加工するための加工プログラムを記憶する記憶部と、
前記加工対象物を第１の方向から第２の方向へコーナ加工する時の許容誤差であるトレランス値に基づいて、前記振動切削加工の際に前記工具が通過する特定点を算出し、前記特定点を通過する前記工具の移動経路を示す前記工具の振動波形を生成する制御演算部と、
を有し、
前記制御演算部は、前記振動波形として、前記第１の方向への第１の振動波形と、前記第２の方向への第２の振動波形と、を生成し、前記トレランス値が０よりも大きい場合に前記第１の振動波形および前記第２の振動波形が同じタイミングで前記特定点を通過するよう、前記第２の振動波形の開始タイミングを前記特定点の算出で設定された前記トレランス値に基づいて補正し、前記加工プログラムおよび前記振動波形に従って、前記工具の移動および振動を制御し、
前記第１の振動波形が前記特定点を複数回通過する場合、前記第１の振動波形および前記第２の振動波形が前記特定点を通過する前記タイミングは、前記第１の振動波形が前記特定点を複数回通過するタイミングの中から設定され、前記第２の振動波形の開始タイミングは、設定された前記タイミングで前記第２の振動波形が前記特定点を通過するよう前記トレランス値に基づいて補正される、
ことを特徴とする数値制御装置。
【請求項２】
前記制御演算部は、前記移動経路に振動の振幅を加算した振動前進位置と、前記移動経路から振動の振幅を減算した振動後進位置と、の中間位置が前記特定点を通過するよう、前記振動波形を補正する、
ことを特徴とする請求項１に記載の数値制御装置。
【請求項３】
前記トレランス値は、前記加工対象物のコーナ加工部において加工方向が前記第１の方向から前記第２の方向に変わる位置と、前記移動経路と、の間の最短距離で示される、
ことを特徴とする請求項１または２に記載の数値制御装置。
【請求項４】
前記トレランス値は、前記加工プログラム、プログラマブルロジックコントローラが実行する機械動作が記述されたラダープログラム、または前記制御演算部の処理で使用されるパラメータで指定されている、
ことを特徴とする請求項１から３の何れか１つに記載の数値制御装置。
【請求項５】
前記制御演算部は、前記トレランス値が０の場合、前記第２の振動波形の開始タイミングを前記第１の振動波形による前記第１の方向への駆動が完了した後とする、
ことを特徴とする請求項１から４の何れか１つに記載の数値制御装置。
【請求項６】
前記制御演算部は、コーナ加工時の前記移動経路が特定角度以下の経路であれば、前記トレランス値を０に設定する、
ことを特徴とする請求項５に記載の数値制御装置。
【請求項７】
前記制御演算部は、前記振動波形として、第３の方向への第３の振動波形を生成する、
ことを特徴とする請求項１に記載の数値制御装置。
【請求項８】
前記制御演算部は、前記トレランス値が０よりも大きい場合に前記振動波形が前記特定点を通過するよう、前記第３の振動波形の開始タイミングを補正する、
ことを特徴とする請求項７に記載の数値制御装置。
【請求項９】
前記制御演算部は、前記第１の振動波形が終了する前に、前記第３の振動波形が開始し、前記第３の振動波形が終了する前に、前記第２の振動波形が開始するよう、前記第３の振動波形および前記第２の振動波形の開始タイミングを補正する、
ことを特徴とする請求項７または８に記載の数値制御装置。
【請求項１０】
前記制御演算部は、
前記振動波形で示される位置が目標位置に到達する際に前記振動波形が前記目標位置を超えて振動しないよう、前記振動波形の振幅を補正し、
前記振動波形が開始する際に前記振動波形が前記振動波形の開始位置を超えて振動しないよう、前記振動波形の振幅を補正する、
ことを特徴とする請求項１から９の何れか１つに記載の数値制御装置。
【請求項１１】
前記制御演算部は、
前記振動波形で示される位置が目標位置に到達する際に前記振動波形で示される位置が前記加工対象物に干渉するか否かを判定し、干渉しない場合には、前記目標位置に到達する際の前記振動波形を補正しない、
ことを特徴とする請求項１から１０の何れか１つに記載の数値制御装置。
【請求項１２】
前記記憶部は、加工精度に応じたトレランス値が段階的に設定された段階情報を記憶し、
前記制御演算部は、ユーザから指定された前記加工精度の段階と、前記段階情報とに基づいて、前記トレランス値を設定する、
ことを特徴とする請求項１から１１の何れか１つに記載の数値制御装置。
【請求項１３】
前記駆動軸を制御する際の前記トレランス値を学習する機械学習装置をさらに備え、
前記機械学習装置は、
前記トレランス値と、前記トレランス値を用いて制御した場合に前記工具が通過する特定点の位置と、を状態変数として観測する状態観測部と、
前記状態変数に基づいて作成されるデータセットに従って、前記トレランス値に対応する特定点と、実際の特定点と、の差が小さくなるトレランス値を学習する学習部と、
を備える、
ことを特徴とする請求項１から１２の何れか１つに記載の数値制御装置。
【請求項１４】
加工対象物の回転軸である主軸と、前記加工対象物を振動切削加工するための工具を駆動する駆動軸と、を制御する数値制御方法であって、
前記加工対象物を振動切削加工するための加工プログラムを記憶する記憶ステップと、
前記加工対象物を第１の方向から第２の方向へコーナ加工する時の許容誤差であるトレランス値に基づいて、前記振動切削加工の際に前記工具が通過する特定点を算出する算出ステップと、
前記特定点を通過する前記工具の移動経路を示す前記工具の振動波形を生成する生成ステップと、
前記加工プログラムおよび前記振動波形に従って、前記工具の移動および振動を制御する制御ステップと、
を含み、
前記生成ステップでは、前記振動波形として、前記第１の方向への第１の振動波形と、前記第２の方向への第２の振動波形と、を生成し、前記トレランス値が０よりも大きい場合に前記第１の振動波形および前記第２の振動波形が同じタイミングで前記特定点を通過するよう、前記第２の振動波形の開始タイミングを前記特定点の算出で設定された前記トレランス値に基づいて補正し、
前記第１の振動波形が前記特定点を複数回通過する場合、前記第１の振動波形および前記第２の振動波形が前記特定点を通過する前記タイミングは、前記第１の振動波形が前記特定点を複数回通過するタイミングの中から設定され、前記第２の振動波形の開始タイミングは、設定された前記タイミングで前記第２の振動波形が前記特定点を通過するよう前記トレランス値に基づいて補正される、
ことを特徴とする数値制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、工具を振動させながらの振動切削を制御する数値制御装置、数値制御方法、および機械学習装置に関する。
【背景技術】
【０００２】
旋削加工の分野では、数値制御装置が、加工対象物を加工するための加工プログラムに従って工具の動作を制御し、これにより工具に加工対象物を加工させている。この数値制御装置の中には、工具の移動経路に沿って特定の周波数で工具を振動させながら加工対象物を振動切削させるものがある。【０００３】
特許文献１に記載の数値制御装置は、工具への移動指令から単位時間あたりの指令移動量を算出し、振動条件から単位時間あたりの振動移動量を算出し、指令移動量と振動移動量とを合成して合成移動量を算出し、合成移動量に基づいて振動切削を制御している。特許文献１に記載の数値制御装置は、加工対象物のコーナ部をＸ軸方向およびＺ軸方向に加工する際に、工具がＸ軸方向の目標位置に到達するまで次の指令を待つのではなく、工具の振動前進位置が目標位置に到達した時点で、Ｚ軸方向の指令を実行することによって、コーナ部を滑らかに加工している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５５９９５２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１の技術では、特定形状のコーナ加工を行うことはできるが、所望の加工精度でコーナ加工を行うことはできなかった。【０００６】
本発明は、上記に鑑みてなされたものであって、所望の加工精度でコーナ加工を行うことができる数値制御装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、加工対象物の回転軸である主軸と、加工対象物を振動切削加工するための工具を駆動する駆動軸と、を制御する数値制御装置であって、加工対象物を振動切削加工するための加工プログラムを記憶する記憶部を有する。本発明の数値制御装置は、加工対象物を第１の方向から第２の方向へコーナ加工する時の許容誤差であるトレランス値に基づいて、振動切削加工の際に工具が通過する特定点を算出し、特定点を通過する工具の移動経路を示す工具の振動波形を生成する制御演算部を有する。制御演算部は、振動波形として、第１の方向への第１の振動波形と、第２の方向への第２の振動波形と、を生成し、トレランス値が０よりも大きい場合に第１の振動波形および第２の振動波形が同じタイミングで特定点を通過するよう、第２の振動波形の開始タイミングを特定点の算出で設定されたトレランス値に基づいて補正し、加工プログラムおよび振動波形に従って、工具の移動および振動を制御する。第１の振動波形が特定点を複数回通過する場合、第１の振動波形および第２の振動波形が特定点を通過するタイミングは、第１の振動波形が特定点を複数回通過するタイミングの中から設定され、第２の振動波形の開始タイミングは、設定されたタイミングで第２の振動波形が特定点を通過するようトレランス値に基づいて補正される。
【発明の効果】
【０００８】
本発明にかかる数値制御装置は、所望の加工精度でコーナ加工を行うことができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１にかかる数値制御装置の構成例を示す図
【図２】実施の形態１にかかる工作機械の構成例を示す図
【図３】実施の形態１にかかる数値制御装置が用いる加工プログラムを示す図
【図４】実施の形態１にかかる数値制御装置が生成する移動経路を示す図
【図５】実施の形態１にかかる数値制御装置による移動経路設定の処理手順を示すフローチャート
【図６】実施の形態１にかかる数値制御装置が設定する特定通過点を説明するための図
【図７】実施の形態１にかかる数値制御装置が生成する振動波形を説明するための図
【図８】実施の形態２にかかる数値制御装置が用いる加工プログラムを示す図
【図９】実施の形態２にかかる数値制御装置が生成する移動経路を示す図
【図１０】実施の形態２にかかる数値制御装置による移動経路設定の処理手順を示すフローチャート
【図１１】加工ワークのコーナ角度が６０°であり、移動経路の角度が１２０°である場合の加工ワークの形状を示す図
【図１２】加工ワークのコーナ角度が３００°であり、移動経路の角度が６０°である場合の加工ワークの形状を示す図
【図１３】実施の形態２にかかる数値制御装置が生成する振動波形を説明するための図
【図１４】実施の形態３にかかる数値制御装置が生成する移動経路を示す図
【図１５】実施の形態３にかかる数値制御装置による移動経路設定の処理手順を示すフローチャート
【図１６】実施の形態３にかかる数値制御装置が移動振動の開始時間を補正する前の振動波形を説明するための図
【図１７】実施の形態３にかかる数値制御装置が移動振動の開始時間を補正した後の振動波形を説明するための図
【図１８】実施の形態４にかかる数値制御装置が生成する移動経路を示す図
【図１９】実施の形態４にかかる数値制御装置による移動経路設定の処理手順を示すフローチャート
【図２０】実施の形態４にかかる数値制御装置が生成する振動波形を説明するための図
【図２１】実施の形態４にかかる数値制御装置で用いられるトレランス段階情報を説明するための図
【図２２】実施の形態５にかかる数値制御装置の構成例を示す図
【図２３】実施の形態１から５にかかる制御演算部のハードウェア構成例を示す図
【発明を実施するための形態】
【００１０】
以下に、本発明の実施の形態にかかる数値制御装置、数値制御方法、および機械学習装置を図面に基づいて詳細に説明する。なお、これらの実施の形態によりこの発明が限定されるものではない。
【００１１】
実施の形態１．
図１は、実施の形態１にかかる数値制御装置の構成例を示す図である。図２は、実施の形態１にかかる工作機械の構成例を示す図である。図２では、紙面の横方向がＺ軸方向であり、紙面の縦方向がＸ軸方向である。
【００１２】
数値制御（ＮＣ：Numerical  Control）装置１Ｘは、旋盤加工を行う工作機械１１０に対して、工具６６Ａを振動させながらの加工である低周波振動切削（ＬＦＶ:Low  Frequency  Vibration-cutting）の制御を実行するコンピュータである。以下の説明では低周波振動を単に振動という場合がある。
【００１３】
数値制御装置１Ｘは、加工ワーク７０へのコーナ加工時の許容誤差であるトレランス値に基づいて、工具６６Ａがトレランス値に対応する特定点（後述の特定通過点）を通過するよう移動経路を生成する。
【００１４】
数値制御装置１Ｘは、２軸以上の駆動軸によって、工具６６Ａと加工対象物である加工ワーク７０とを相対的に移動させながら、加工ワーク７０の加工を制御する。すなわち、数値制御装置１Ｘは、工具６６Ａまたは加工ワーク７０を移動させるＺ軸方向の駆動軸と、工具６６Ａを移動させるＸ軸方向の駆動軸とを有した工作機械１１０に対し、工具６６Ａによって加工ワーク７０を振動切削させる。
【００１５】
実施の形態１では、数値制御装置１Ｘが、加工ワーク７０の回転軸である１つの主軸６０と、工具６６Ａを移動させる２つの駆動軸を備えた工作機械１１０を制御する場合について説明する。加工ワーク７０は、工作機械１１０によって加工される被加工物である。なお、図２では、主軸６０として主軸６０の中心線を図示している。
【００１６】
数値制御装置１Ｘは、制御演算部２Ｘと、入力操作部３と、表示部４と、ＰＬＣ（Programmable  Logic  Controller：プログラマブルロジックコントローラ）３６を操作するための機械操作盤などのＰＬＣ操作部５とを有する。図１には、工作機械１１０の構成要素である駆動部９０が示されている。
【００１７】
駆動部９０は、工作機械１１０が備える刃物台６５Ａなどを駆動させる。駆動部９０は、加工ワーク７０を回転させながら、工具６６Ａを駆動する駆動機構である。実施の形態１では、工具６６Ａの駆動方向が、Ｘ軸方向に平行な方向とＺ軸方向に平行な方向との２方向である。駆動部９０は、Ｘ軸方向およびＺ軸方向に沿って、工具６６Ａを移動および振動させる。すなわち、駆動部９０が、Ｘ軸方向およびＺ軸方向の駆動を制御することによって、Ｘ−Ｚ平面内を刃物台６５Ａが移動する。なお、軸方向は装置構成によるので、軸方向は、上記方向に限定されない。図２における右向きの矢印が、実施の形態１で工具６６Ａが加工ワーク７０を加工する加工方向を示す。
【００１８】
駆動部９０は、数値制御装置１Ｘ上で規定された各軸方向に工具６６Ａを移動させるサーボモータ９０１，９０２と、サーボモータ９０１，９０２の位置および速度を検出する検出器９７，９８とを備えている。また、駆動部９０は、数値制御装置１Ｘからの指令に基づいて、サーボモータ９０１，９０２を制御する各軸方向のサーボ制御部を備えている。各軸方向のサーボ制御部は、検出器９７，９８からの位置および速度に基づいて、サーボモータ９０１，９０２へのフィードバック制御を行う。
【００１９】
サーボ制御部のうちの、Ｘ軸サーボ制御部９１は、サーボモータ９０１を制御することによって工具６６ＡのＸ軸方向の動作を制御し、Ｚ軸サーボ制御部９２は、サーボモータ９０２を制御することによって工具６６ＡのＺ軸方向の動作を制御する。なお、工作機械１１０が２つ以上の刃物台を備えていてもよい。この場合、駆動部９０は、１つの刃物台毎に、１組のＸ軸サーボ制御部９１と、Ｚ軸サーボ制御部９２と、サーボモータ９０１，９０２と、検出器９７，９８とを備える。
【００２０】
また、駆動部９０は、加工ワーク７０を回転させるための主軸６０を回転させる主軸モータ９１１と、主軸モータ９１１の位置および回転数を検出する検出器２１１とを備えている。検出器２１１が検出する回転数は、主軸モータ９１１の回転数に対応している。
【００２１】
また、駆動部９０は、数値制御装置１Ｘからの指令に基づいて、主軸モータ９１１を制御する主軸サーボ制御部２００を備えている。主軸サーボ制御部２００は、検出器２１１からの位置および速度に基づいて、主軸モータ９１１へのフィードバック制御を行う。
【００２２】
なお、工作機械１１０が２つの加工ワーク７０を同時に加工する場合には、駆動部９０は、主軸モータ９１１と、検出器２１１と、主軸サーボ制御部２００とを２組備える。この場合、工作機械１１０は、２つ以上の刃物台を備えている。
【００２３】
入力操作部３は、制御演算部２Ｘに情報を入力する手段である。入力操作部３は、キーボード、ボタンまたはマウスなどの入力手段によって構成され、ユーザによる数値制御装置１Ｘに対するコマンドなどの入力、または加工プログラムもしくはパラメータなどを受付けて制御演算部２Ｘに入力する。表示部４は、液晶表示装置などの表示手段によって構成され、制御演算部２Ｘによって処理された情報を表示画面に表示する。ＰＬＣ操作部５は、ユーザによる操作を受付けて、操作に対応する指示をＰＬＣ３６に送る。
【００２４】
制御部である制御演算部２Ｘは、入力制御部３２と、データ設定部３３と、記憶部３４と、画面処理部３１と、解析処理部３７と、制御信号処理部３５と、ＰＬＣ３６と、補間処理部３８Ｘと、加減速処理部３９と、軸データ出力部４０と、を有する。なお、ＰＬＣ３６は、制御演算部２Ｘの外部に配置されてもよい。
【００２５】
記憶部３４は、パラメータ記憶エリア３４１、加工プログラム記憶エリア３４３、表示データ記憶エリア３４４、および共有エリア３４５を有している。パラメータ記憶エリア３４１内には、制御演算部２Ｘの処理で使用されるパラメータ等が格納される。具体的には、パラメータ記憶エリア３４１内には、数値制御装置１Ｘを動作させるための制御パラメータ、サーボパラメータおよび工具データが格納される。加工プログラム記憶エリア３４３内には、加工ワーク７０の加工に用いられる加工プログラム（後述する加工プログラム１０１等）が格納される。実施の形態１の加工プログラムは、工具６６Ａを振動させる指令である振動指令と、工具６６Ａを移動させる指令である移動指令とを含んでいる。
【００２６】
表示データ記憶エリア３４４内には、表示部４で表示される画面表示データが格納される。画面表示データは、表示部４に情報を表示するためのデータである。また、記憶部３４には、一時的に使用されるデータを記憶する共有エリア３４５が設けられている。
【００２７】
画面処理部３１は、表示データ記憶エリア３４４に格納された画面表示データを表示部４に表示させる制御を行う。入力制御部３２は、入力操作部３から入力される情報を受付ける。データ設定部３３は、入力制御部３２で受付けられた情報を記憶部３４に記憶させる。すなわち、入力操作部３が受付けた入力情報は、入力制御部３２およびデータ設定部３３を介して記憶部３４に書き込まれる。
【００２８】
制御信号処理部３５は、ＰＬＣ３６に接続されており、ＰＬＣ３６から、工作機械１１０を動作させるリレーなどの信号情報を受付ける。制御信号処理部３５は、受付けた信号情報を、記憶部３４の共有エリア３４５に書き込む。これらの信号情報は、加工運転時に補間処理部３８Ｘが参照する。また、制御信号処理部３５は、解析処理部３７によって共有エリア３４５に補助指令が出力されると、この補助指令を共有エリア３４５から読み出してＰＬＣ３６に送る。補助指令は、数値制御軸である駆動軸を動作させる指令以外の指令である。補助指令の例は、ＭコードまたはＴコードである。
【００２９】
ＰＬＣ３６は、ＰＬＣ操作部５に対して操作が行われると、この操作に応じた動作を実行する。ＰＬＣ３６は、ＰＬＣ３６が実行する機械動作が記述されたラダープログラムを格納している。ＰＬＣ３６は、補助指令であるＴコードまたはＭコードを受付けると、ラダープログラムに従って補助指令に対応する処理を工作機械１１０に実行する。ＰＬＣ３６は、補助指令に対応する処理を実行した後、加工プログラムの次のブロックを実行させるために、機械制御が完了したことを示す完了信号を制御信号処理部３５に送る。
【００３０】
制御演算部２Ｘでは、制御信号処理部３５と、解析処理部３７と、補間処理部３８Ｘとが、記憶部３４を介して接続されており、記憶部３４を介して情報の書き込み、および読み出しを行う。以下の説明では、制御信号処理部３５と、解析処理部３７と、補間処理部３８Ｘとの間の情報の書き込み、および読み出しを説明する際に記憶部３４が介されていることを省略する場合がある。
【００３１】
加工プログラムの選択は、ユーザが入力操作部３で加工プログラム番号を入力することによって行われる。この加工プログラム番号は、入力制御部３２およびデータ設定部３３を介して共有エリア３４５に書き込まれる。機械操作盤等のサイクルスタートをトリガとして、解析処理部３７は、共有エリア３４５内の選択された加工プログラム番号に対応する加工ワーク７０を指定したワーク指定情報を共有エリア３４５から受付けると、ワーク指定情報に対応する加工プログラムを加工プログラム記憶エリア３４３内から読み出して、加工プログラムの各ブロック（各行）に対して解析処理を行う。解析処理部３７は、例えば、Ｇコード（軸移動等に関する指令）、Ｔコード（工具交換指令など）、Ｓコード（主軸モータ回転数指令）、およびＭコード（機械動作指令）を解析する。
【００３２】
解析処理部３７は、解析した行にＭコードまたはＴコードが含まれている場合には、解析結果を共有エリア３４５および制御信号処理部３５を介してＰＬＣ３６に送る。また、解析処理部３７は、解析した行にＭコードが含まれている場合には、Ｍコードを、制御信号処理部３５を介してＰＬＣ３６に送る。ＰＬＣ３６はＭコードに対応する機械制御を実行する。実行が完了した場合、制御信号処理部３５を介してＭコードの完了を示す結果が記憶部３４に書き込まれる。補間処理部３８Ｘは記憶部３４に書き込まれた実行結果を参照する。
【００３３】
また、解析処理部３７は、Ｇコードが含まれている場合には、共有エリア３４５を介して解析結果を補間処理部３８Ｘに送る。具体的には、解析処理部３７は、Ｇコードに対応する移動条件を生成して補間処理部３８Ｘに送る。また、解析処理部３７は、Ｓコードで指定された主軸回転数を補間処理部３８Ｘに送る。主軸回転数は、単位時間あたりの主軸６０の回転の回数である。移動条件は、工具６６Ａが加工位置を移動させていくための工具送りの条件であり、刃物台６５Ａを移動させる速度、刃物台６５Ａを移動させる位置などで示される。例えば、工具６６Ａの工具送りは、工具６６ＡをＸ軸方向（＋Ｘ方向）およびＺ軸方向（＋Ｚ方向）に進ませる。
【００３４】
また、解析処理部３７は、振動指令解析部１１と、移動指令解析部１２とを有している。振動指令解析部１１は、Ｘ軸方向およびＺ軸方向への振動指令を解析する手段である。振動指令解析部１１は、加工プログラム（後述の加工プログラム１０１など）に含まれる振動指令を解析してＸ軸方向およびＺ軸方向への振動条件を生成し、生成した振動条件を、共有エリア３４５を介して補間処理部３８Ｘに送る。
【００３５】
振動条件は、振動切削を実行する際の振動の条件である。振動条件の例は、振動切削の際の振動回数である。Ｘ軸方向の振動回数は、主軸６０が１回転する間の刃物台６５ＡのＸ軸方向の振動回数であり、Ｚ軸方向の振動回数は、主軸６０が１回転する間の刃物台６５ＡのＺ軸方向の振動回数である。刃物台６５Ａの振動回数は、主軸６０が１回転する時間を基準とした振動の周波数に対応している。
【００３６】
移動指令解析部１２は、加工プログラムに含まれる移動指令を解析してＸ軸方向およびＺ軸方向の移動条件を生成し、生成した移動条件を、共有エリア３４５を介して補間処理部３８Ｘに送る。加工プログラムでは、切屑を細かく分断することができるよう、主軸回転数、振動指令および移動指令が設定されている。移動指令解析部１２は、Ｇコードに対応する移動条件を生成して補間処理部３８Ｘに送る。移動条件の例は、刃物台６５Ａの移動速度、刃物台６５Ａを移動させる位置などである。
【００３７】
Ｘ軸方向の振動指令は、刃物台６５ＡをＸ軸方向に振動させる指令であり、Ｚ軸方向の振動指令は、刃物台６５ＡをＺ軸方向に振動させる指令である。Ｘ軸方向の移動指令は、刃物台６５ＡをＸ軸方向に移動させる指令であり、Ｚ軸方向の移動指令は、刃物台６５ＡをＺ軸方向に移動させる指令である。
【００３８】
補間処理部３８Ｘは、指令移動量算出部２１と、振動移動量算出部２２と、トレランス値設定部２３と、波形生成部２４と、振動補正部２５とを備えている。補間処理部３８Ｘは、主軸回転数、刃物台６５ＡのＸ軸方向およびＺ軸方向の振動回数を、共有エリア３４５から読み出す。
【００３９】
指令移動量算出部２１は、解析処理部３７から解析結果である移動条件を受け取り、移動条件に対する補間処理を行い、補間処理の結果に対応する単位時間当たりの指令移動量を算出する。具体的には、指令移動量算出部２１は、解析処理部３７が解析したＸ軸方向の移動条件に基づいて、刃物台６５Ａを単位時間でＸ軸方向に移動させる指令移動量を算出して波形生成部２４に送る。また、指令移動量算出部２１は、解析処理部３７が解析したＺ軸方向の移動条件に基づいて、刃物台６５Ａを単位時間でＺ軸方向に移動させる指令移動量を算出して波形生成部２４に送る。
【００４０】
トレランス値設定部２３は、コーナ加工時のトレランス値を設定する。具体的には、トレランス値設定部２３は、加工プログラム、ラダープログラム、またはパラメータによってトレランス値が指定されているか否かをチェックし、何れの場所で規定されているトレランス値を優先させるかを規定した優先情報に基づいて、トレランス値を設定する。トレランス値設定部２３は、設定したトレランス値を波形生成部２４に送る。優先情報は、記憶部３４内に格納されている。
【００４１】
実施の形態１では、切削方向は図２におけるＸ軸方向およびＺ軸方向である。工具６６Ａの移動は、振動切削のための移動と、加工ワーク７０に対して加工を進める方向（切削方向）への移動と、を足し合わせたものである。したがって、波形生成部２４は、振動切削のための振動移動量と、加工ワーク７０に対して加工を進めるための切削方向への移動量とを足し合わせる。振動移動量は、例えば、波形で示される。
【００４２】
具体的には、波形生成部２４は、指令移動量算出部２１から送られてきたＸ軸方向の指令移動量と、振動移動量算出部２２から送られてきたＸ軸方向の振動移動量とを合成することによってＸ軸方向の合成移動量を生成する。また、波形生成部２４は、指令移動量算出部２１から送られてきたＺ軸方向の指令移動量と、振動移動量算出部２２から送られてきたＺ軸方向の振動移動量とを合成することによってＺ軸方向の合成移動量を生成する。
【００４３】
Ｘ軸方向の合成移動量は、横軸を時間、縦軸をＸ軸方向の位置としたグラフ上での波形で示され、Ｚ軸方向の合成移動量は、横軸を時間、縦軸をＺ軸方向の位置としたグラフ上での波形で示される。波形生成部２４は、補間処理の結果であるＸ軸方向およびＺ軸方向の合成移動量を示す移動経路の波形を振動補正部２５に送る。以下、振動切削の際の工具６６Ａの移動経路を示す波形を、振動波形という。
【００４４】
振動補正部２５は、Ｘ軸方向の振動波形および加工の目標位置（Ｘ座標）に基づいて、Ｘ軸方向の振動波形が終了する際のＸ軸方向の振動波形を補正する。また、振動補正部２５は、Ｚ軸方向の振動波形および加工の目標位置（Ｚ座標）に基づいて、Ｚ軸方向の振動波形が開始する際および終了する際のＺ軸方向の振動波形を補正する。
【００４５】
また、振動補正部２５は、トレランス値に基づいて、移動経路が通過する座標を算出し、算出した座標を移動経路が通過するよう、Ｚ軸方向の移動を開始するタイミングを調整する。このとき、振動補正部２５は、算出した座標と、Ｘ軸方向の振動波形と、Ｚ軸方向の振動波形と、に基づいて、Ｚ軸方向の振動波形（移動および振動）を開始するタイミングを調整する。振動補正部２５は、補正したＸ軸方向の振動波形および補正したＺ軸方向の振動波形を加減速処理部３９に送る。
【００４６】
加減速処理部３９は、補間処理部３８Ｘから供給された補間処理の結果に対して、加速度をなめらかに変化させるための加減速処理を行う。加減速処理部３９は、移動の開始および停止の際の加減速処理を行う。具体的には、加減速処理部３９は、Ｘ軸方向の合成移動量に基づいて、Ｘ軸方向への移動指令を生成し、Ｚ軸方向の合成移動量に基づいて、Ｚ軸方向への移動指令を生成する。加減速処理部３９が処理する位置指令は、単位時間あたりの速度指令である。
【００４７】
加減速処理部３９は、加減速処理の処理結果である速度指令を軸データ出力部４０に送る。なお、加減速処理部３９は、主軸回転数に対しては加減速処理を行わない。加減速処理部３９は、主軸回転数に対応する回転数指令を軸データ出力部４０に送る。加減速処理部３９が生成する回転数指令は、ステップ指令である。
【００４８】
軸データ出力部４０は、速度指令を駆動部９０に出力する。具体的には、軸データ出力部４０は、Ｘ軸への速度指令をＸ軸サーボ制御部９１に出力し、Ｚ軸への速度指令をＺ軸サーボ制御部９２に出力する。また、軸データ出力部４０は、主軸６０への回転数指令を主軸サーボ制御部２００に出力する。これにより、Ｘ軸サーボ制御部９１、Ｚ軸サーボ制御部９２、主軸サーボ制御部２００は、工具６６ＡのＸ軸方向およびＺ軸方向の動作と、主軸６０の回転動作とを制御する。
【００４９】
ここで、数値制御装置１Ｘによる加工制御の動作手順の概略について説明する。工作機械１１０による加工が開始される際には、ＰＬＣ３６が制御信号処理部３５へサイクルスタート信号を出力し、制御信号処理部３５が、サイクルスタート信号を補間処理部３８Ｘに出力する。これにより、補間処理部３８Ｘが、解析処理部３７を起動する。
【００５０】
この後、解析処理部３７が加工プログラムを１ブロック毎に読み込んで解析し、解析結果である振動条件、移動条件および主軸回転数を共有エリア３４５に格納する。そして、補間処理部３８Ｘが、解析処理部３７の解析結果に基づいて、Ｘ軸方向の単位時間あたりの合成移動量およびＺ軸方向の単位時間あたりの合成移動量を算出して加減速処理部３９に送る。
【００５１】
これにより、加減速処理部３９は、Ｘ軸方向の合成移動量に基づいて、加減速処理されたＸ軸方向への移動指令を生成し、Ｚ軸方向の合成移動量に基づいて、加減速処理されたＺ軸方向への移動指令を生成する。これらの移動指令は、軸データ出力部４０から駆動部９０に出力され、駆動部９０が移動指令に従ってＸ軸およびＺ軸の動作を制御する。
【００５２】
実施の形態１にかかる工作機械１１０は、刃物台６５Ａに駆動軸がある１スピンドル１刃物台の旋盤である。１スピンドル１刃物台の旋盤は、１つの主軸と１つの刃物台を具備した旋盤である。刃物台６５Ａは、タレットともよばれる。工作機械１１０の一例は、タレット旋盤である。なお、工作機械１１０では、刃物台６５ＡがＺ軸方向に移動および振動する代わりに加工ワーク７０がＺ軸方向に移動および振動してもよい。
【００５３】
工作機械１１０は、第１スピンドル７５を備えた主軸台を有している。第１スピンドル７５は、加工ワーク７０が取り付けられた状態で回転し、これにより加工ワーク７０を回転させる。第１スピンドル７５による加工ワーク７０の回転軸が、主軸台に設けられた主軸６０である。
【００５４】
工作機械１１０は、刃物台６５Ａを備えており、刃物台６５ＡにＸ軸方向の駆動軸６１ＸおよびＺ軸方向の駆動軸６１Ｚが設けられている。刃物台６５Ａは、Ｘ軸方向およびＺ軸方向に移動可能となっている。工作機械１１０では、Ｘ軸方向が第１の方向であり、Ｘ軸方向の駆動軸６１Ｘが第１の駆動軸である。また、工作機械１１０では、Ｚ軸方向が第２の方向であり、Ｚ軸方向の駆動軸６１Ｚが第２の駆動軸である。図２では、駆動軸６１Ｘとして駆動軸６１Ｘの中心線を図示し、駆動軸６１Ｚとして駆動軸６１Ｚの中心線を図示している。数値制御装置１Ｘは、主軸６０と、駆動軸６１Ｘと、駆動軸６１Ｚとを制御することによって、工具６６Ａと加工ワーク７０の動作を制御する。
【００５５】
刃物台６５Ａは、旋回式の刃物台である。刃物台６５Ａは、複数の工具６６Ａを取り付け可能となっており、工具６６Ａを旋回させることで使用する工具６６Ａを切り替える。      
【００５６】
刃物台６５Ａは、Ｘ軸方向およびＺ軸方向に振動することによって、工具６６Ａが加工ワーク７０の振動切削加工を行う。すなわち、刃物台６５Ａは、Ｘ軸方向およびＺ軸方向を足し合わせた方向に振動する。つまり、刃物台６５Ａは、刃物台６５Ａの加工方向に平行な方向に振動する。なお、実施の形態１では、説明の便宜上、刃物台６５Ａの振動を工具６６Ａの振動として説明する場合がある。
【００５７】
図３は、実施の形態１にかかる数値制御装置が用いる加工プログラムを示す図である。図４は、実施の形態１にかかる数値制御装置が生成する移動経路を示す図である。実施の形態１では、数値制御装置１Ｘが、図３の加工プログラムから図４の移動経路を生成する。ここでの移動経路は、Ｘ軸方向の移動経路と、Ｚ軸方向の移動経路とを含んでいる。
【００５８】
加工プログラム１０１は、数値制御装置１Ｘが工作機械１１０を制御する際に用いられる。加工プログラム１０１は、加工時間を短縮するために、トレランス値＝ｍとした場合の加工プログラム例である。図４に示す移動経路の図では、横軸がＺ軸方向の位置であるＺ軸位置を示し、縦軸がＸ軸方向の位置であるＸ軸位置を示している。図４の移動経路では、Ｘ＝０．０、Ｚ＝０．０が移動の開始位置であり、Ｘ＝１０．０、Ｚ＝１０．０が移動の終了位置（目標位置）である。
【００５９】
工具６６Ａが図２に示した工作機械１１０のように加工ワーク７０の上側に載置されている場合、図４の移動経路の左側に工具６６Ａがあり、右側が加工ワーク７０である。
【００６０】
工具６６Ａが穴あけドリルであり、Ｚ軸方向に沿って加工ワーク７０の右側から左側に向かって穴あけ加工を行う場合、図４の移動経路の右側に工具６６Ａがあり、左側が加工ワーク７０である。この場合、Ｚ軸が主軸６０と同じ軸となる。また、Ｘ軸方向が、穴の径方向となり、Ｚ軸方向が穴の深さ方向となる。以下の説明では、工具６６Ａが図２に示した工作機械１１０のように加工ワーク７０の上側に載置されている場合について説明する。
【００６１】
トレランス値は、加工ワーク７０へのコーナ加工時の許容誤差を示す値であり、Ｋアドレスで指定される。トレランス値は、値が大きいほど許容誤差が大きくなる。トレランス値は、値が小さいほど加工精度が良くなり、値が大きいほど加工時間が短くなる。トレランス値が０の場合、工具６６Ａは、Ｚ＝０．０、Ｘ＝１０．０を通過する。すなわち、トレランス値が０の場合、加工ワーク７０は、Ｚ＝０．０、Ｘ＝１０．０の箇所で直角に加工される。以下の説明では、トレランス値が０の場合のＺ＝０．０、Ｘ＝１０．０の座標（コーナ部分）を直角位置という場合がある。
【００６２】
トレランス値がｍの場合、工具６６Ａの移動経路と、直角位置との最短距離が距離ｍとなるよう、工具６６Ａは、直角位置から距離ｍだけ離れた位置を通過する。以下の説明では、Ｚ＝０．０かつＸ＝０．０の位置を開始点といい、Ｚ＝１０．０かつＸ＝１０．０の位置を終了点という場合がある。また、工具６６Ａの移動経路と直角位置との最短距離が距離ｍとなる座標を特定通過点という場合がある。
【００６３】
第１ブロックであるＮ０１のＧ０は位置決め指令であり、第２ブロックであるＮ０２のＧ１６５は低周波振動指令であり、第３ブロックであるＮ０３のＧ９５は毎回点送り（同期送り）の指令である。
【００６４】
位置決め指令は、特定の位置へ移動させる指令である。ここでの位置決め指令では、Ｘ座標が０．０であり、Ｚ座標が０．０である。低周波振動指令は、低周波振動を実行させる指令である。低周波振動指令では、トレランス値が指定される。ここでのトレランス値は、ｍである。毎回点送りの指令は、主軸６０の１回転当たりの送り速度Ｆを指定する指令である。
【００６５】
Ｇ０、Ｇ１６５、Ｇ９５は、特定のＧコードが指令されるまで有効な指令（モーダル指令）である。Ｇ９５である毎回点送りが指令されると、この指令のブロックから主軸６０の１回転当たりの送り速度Ｆで工具６６Ａが工具送りされる。ここでの送り速度Ｆは、０．０５である。
【００６６】
また、ここでの毎回点送りの指令では、工具６６Ａを移動させるＸ座標（Ｘ＝１０．０）が指定されている。このため、指定されたＸ座標まで送り速度Ｆで工具６６Ａが工具送りされる。また、第４ブロックであるＮ０４では、工具６６Ａを移動させるＺ座標（Ｚ＝１０．０）が指定されている。このため、指定されたＺ座標まで送り速度Ｆで工具６６Ａが工具送りされる。
【００６７】
実施の形態１では、工具６６Ａが指定されたＸ座標（Ｘ＝１０．０）まで移動する途中で、指定されたＺ座標（Ｚ＝１０．０）への工具６６Ａの移動を開始する。すなわち、数値制御装置１Ｘは、工具６６Ａが、開始点である原点から第１の特定位置までは、Ｘ軸方向へ移動し、第１の特定位置から第２の特定位置まではＸ軸方向とＺ軸方向との両方向に移動し、第２の特定位置から終了点まではＺ軸方向へ移動するよう、Ｚ軸方向の移動を開始するタイミングを調整する。この場合において、数値制御装置１Ｘは、第１の特定位置から第２の特定位置までの移動経路において、Ｘ軸方向の振動波形とＺ軸方向の振動波形とが同時に特定通過点を通過するよう、Ｚ軸方向の移動を開始するタイミングを調整する。すなわち、数値制御装置１Ｘは、Ｘ軸方向の移動とＺ軸方向の移動との重ね合わせ量である移動位置が、特定通過点を通過するようＺ軸方向の振動波形の開始タイミングを補正する。第５ブロックであるＮ０５では、Ｇ１６５の指令が終了される。
【００６８】
以上のように、加工プログラム１０１が実行されると、工具６６Ａは、Ｘ座標＝０．０、Ｚ座標＝０．０まで移動する。さらに、工具６６Ａは、主軸６０の１回転当たりの送り速度Ｆ＝０．０５でトレランス値＝ｍを満たすよう振動しながらＸ＝１０．０かつＺ＝１０．０まで移動する。
【００６９】
工具６６Ａが穴あけドリルであり、Ｚ軸方向に沿って加工ワーク７０の右側から左側に向かって穴あけ加工を行う場合、工具６６Ａは、Ｘ座標＝１０．０、Ｚ座標＝１０．０まで移動する。さらに、工具６６Ａは、主軸６０の１回転当たりの送り速度Ｆ＝０．０５でトレランス値＝ｍを満たすよう振動しながらＺ＝０．０まで移動し、主軸６０の１回転当たりの送り速度Ｆ＝０．０５でトレランス値＝ｍを満たすよう振動しながらＸ＝０．０まで移動する。
【００７０】
なお、加工プログラム１０１には、図３に示した指令の他に、主軸回転数指令などが含まれている。主軸回転数指令は、主軸６０を１分間あたりに特定の回転数だけ回転させる指令である。また、Ｇ１６５には、工具６６の振動の振幅、主軸６０が１回転する間の振動回数などが含まれている。
【００７１】
図５は、実施の形態１にかかる数値制御装置による移動経路設定の処理手順を示すフローチャートである。図５では、移動経路が特定通過点を通過する場合の移動経路の設定処理について説明する。
【００７２】
数値制御装置１Ｘの解析処理部３７では、移動指令解析部１２が、加工プログラム１０１に含まれる移動指令を解析してＸ軸方向およびＺ軸方向の移動条件を生成し、生成した移動条件を、共有エリア３４５を介して補間処理部３８Ｘに送る。
【００７３】
また、振動指令解析部１１は、加工プログラム１０１に含まれる振動指令を解析してＸ軸方向およびＺ軸方向への振動条件を生成し、生成した振動条件を、共有エリア３４５を介して補間処理部３８Ｘに送る。振動指令解析部１１が生成する振動条件には、振動の周波数、振幅、およびトレランス値などが含まれている。
【００７４】
トレランス値設定部２３は、０よりも大きいトレランス値が設定されているか否か（トレランス値＞０が設定されているか否か）を判定する（ステップＳ１０）。トレランス値は、ラダープログラム、加工プログラム、パラメータ等に設定されている。トレランス値設定部２３は、上記ラダープログラム、加工プログラム、パラメータ等の何れに設定されているトレランス値を優先させるかを規定した優先情報に基づいて、トレランス制御に用いるトレランス値を設定し、設定したトレランス値が０よりも大きいか否かを判定する。
【００７５】
例えば、優先順位の高い順番がラダープログラム、加工プログラム、パラメータの順であるとする。この場合、トレランス値設定部２３は、ラダープログラムにてトレランス値が指定されている場合には、ラダープログラムのトレランス値をトレランス制御に用いるトレランス値に設定する。また、トレランス値設定部２３は、ラダープログラムにてトレランス値が指定されていない場合には、加工プログラムのトレランス値をトレランス制御に用いるトレランス値に設定する。また、トレランス値設定部２３は、ラダープログラムおよび加工プログラムの両方にてトレランス値が指定されていない場合には、パラメータのトレランス値をトレランス制御に用いるトレランス値に設定する。なお、トレランス値の優先情報は、ユーザによる操作によって切替え可能である。
【００７６】
０よりも大きいトレランス値が設定されていない場合（ステップＳ１０、Ｎｏ）、数値制御装置１Ｘは、実施の形態１で説明する移動経路の設定処理は実行しない。
【００７７】
０よりも大きいトレランス値が設定されている場合（ステップＳ１０、Ｙｅｓ）、トレランス値設定部２３は、トレランス値に基づいて、工具６６Ａが通過する位置である特定通過点（Ｘ座標およびＺ座標）を算出する（ステップＳ２０）。
【００７８】
図６は、実施の形態１にかかる数値制御装置が設定する特定通過点を説明するための図である。図６では、図４に示した移動経路に対し、トレランス値を満たすために設定された特定通過点Ｐ０を示している。特定通過点Ｐ０は、Ｘ座標＝Ｘ１、Ｚ座標＝Ｚ１で示されている。特定通過点Ｐ０は、Ｚ＝０．０、Ｘ＝１０．０の位置から距離ｍだけ離れた位置である。特定通過点Ｐ０は、工具６６Ａの移動経路上の位置のうちＺ＝０．０、Ｘ＝１０．０の位置との距離が最短となる位置である。
【００７９】
波形生成部２４は、指令移動量算出部２１から送られてきたＸ軸方向の指令移動量と、振動移動量算出部２２から送られてきたＸ軸方向の振動移動量とを合成することによってＸ軸方向の合成移動量を示す移動経路の振動波形を生成する。
【００８０】
また、波形生成部２４は、指令移動量算出部２１から送られてきたＺ軸方向の指令移動量と、振動移動量算出部２２から送られてきたＺ軸方向の振動移動量とを合成することによってＺ軸方向の合成移動量を示す振動波形を生成する。
【００８１】
波形生成部２４は、移動経路の振動波形を生成する際には、移動経路に振動条件の振幅を加算した振動前進位置と、振幅を減算した振動後進位置とを求める。振動前進位置は、移動経路の振動波形の極大点であり、振動後進位置は、移動経路の振動波形の極小点である。波形生成部２４は、振動前進位置および振動後進位置に基づいて、Ｘ軸方向およびＺ軸方向の移動経路の振動波形を生成する。
【００８２】
振動補正部２５は、移動経路を示す振動波形に基づいて、移動経路のうちの第１移動経路および第２移動経路の振動波形を補正する。補正前の第１移動経路は、Ｘ軸方向の移動経路であり、振幅が一定値であり、Ｘ座標がＸ＝０．０からＸ＝１０．０までの移動経路である。補正前の第２移動経路は、Ｚ軸方向の移動経路であり、振幅が一定値であり、Ｚ座標がＺ＝０．０からＺ＝１０．０までの移動経路である。
【００８３】
振動補正部２５は、指定されたトレランス値＝ｍに合わせて、第１移動経路が終わる際の振動波形と、第２移動経路が始まる際の振動波形を補正する。
【００８４】
図７は、実施の形態１にかかる数値制御装置が生成する振動波形を説明するための図である。ここでの振動波形は、Ｘ軸方向の振動波形と、Ｚ軸方向の振動波形とを含んでいる。図７では、Ｘ軸方向の移動経路に対応する振動波形５１Ｘと、Ｚ軸方向の移動経路に対応する振動波形５１Ｚとを示している。図７の横軸は時間であり、振動波形５１Ｘの縦軸はＸ軸方向の位置（軸位置）であり、振動波形５１Ｚの縦軸はＺ軸方向の位置（軸位置）である。実施の形態１では、振動波形５１Ｘが第１の振動波形であり、振動波形５１Ｚが第２の振動波形である。
【００８５】
波形生成部２４が生成する振動波形は、Ｘ軸方向の振動波形（移動経路）およびＺ軸方向の振動波形（移動経路）である。波形生成部２４は、Ｘ軸方向の加工が完了した後のタイミングでＺ軸方向の加工を開始することを示す振動波形を生成する。この生成した振動波形に対し、振動補正部２５は、移動経路の切り替え前後で振動を補正する（ステップＳ３０）。すなわち、振動補正部２５は、Ｘ軸方向の振動波形が開始する際の振動波形と、Ｘ軸方向の振動波形が終了する際の振動波形と、Ｚ軸方向の振動波形が開始する際の振動波形と、Ｚ軸方向の振動波形が終了する際の振動波形と、を補正する。
【００８６】
具体的には、振動補正部２５は、波形生成部２４が生成したＸ軸方向の振動波形に対し、Ｘ軸方向の移動を開始する際の工具６６Ａの位置座標がＸ＝０．０よりも小さくならないよう振幅を制限し、振幅を少しずつ増加させる。すなわち、振動補正部２５は、Ｘ軸方向の移動が開始する位置での振幅を０としつつ、Ｘ軸方向の振幅を少しずつ増やしていく。振動補正部２５は、振幅が振動条件で規定された振幅となるまで振幅を増やす。
【００８７】
また、振動補正部２５は、波形生成部２４が生成したＸ軸方向の振動波形に対し、Ｘ軸方向の移動が終了する際の工具６６Ａの位置座標がＸ＝１０．０より大きくならないよう振幅を０に収束させて停止させる。すなわち、振動補正部２５は、Ｘ軸方向の振動波形で示される位置が目標位置に到達する際に目標位置を超えて振動せず、Ｘ軸方向の移動が終了する目標位置での振幅が０になるよう、Ｘ軸方向の振幅を少しずつ減らして停止させる。Ｘ軸方向の振動波形に対して、開始および終了の際の振幅を補正したものが、振動波形５１Ｘである。
【００８８】
また、振動補正部２５は、波形生成部２４が生成したＺ軸方向の振動波形に対し、Ｚ軸方向の移動を開始する際の工具６６Ａの位置座標がＺ＝０．０よりも小さくならないよう振幅を制限し、振幅を少しずつ増加させる。すなわち、振動補正部２５は、Ｚ軸方向の移動の開始位置での振幅を０としつつ、Ｚ軸方向の振動波形で示される位置が振動波形の開始位置を超えてＺ軸の−方向へ振動しないよう、Ｚ軸方向の振幅を少しずつ増やしていく。振動補正部２５は、振幅が振動条件で規定された振幅となるまで振幅を増やす。
【００８９】
また、振動補正部２５は、波形生成部２４が生成したＺ軸方向の振動波形に対し、Ｘ軸方向の収束と同様に、Ｚ軸方向の移動が終了する際の工具６６Ａの位置座標がＺ＝１０．０より大きくならないよう振幅を０に収束させて停止させる。Ｚ軸方向の振動波形に対して、開始および終了の際の振幅を補正したものが、振動波形５１Ｚである。
【００９０】
続いて、振動補正部２５は、工具６６Ａが特定通過点Ｐ０を通過するよう、振動波形５１Ｚを開始するタイミング（時間Ｔ１）を調整する。換言すると、振動補正部２５は、Ｚ軸方向の移動振動の開始時間を補正する（ステップＳ４０）。移動振動は、振動を伴う工具６６Ａの移動である。図７では、Ｚ軸方向の移動振動の開始時間を早めた振動波形５１Ｚを図示している。
【００９１】
振動補正部２５は、振動波形５１Ｘが、Ｘ＝Ｘ１の位置を通過する時間Ｔ２で、振動波形５１ＺがＺ＝Ｚ１の位置を通過するよう時間Ｔ１を調整する。すなわち、振動補正部２５は、振動波形５１Ｘおよび振動波形５１Ｚが、時間Ｔ２で、特定通過点Ｐ０であるＸ＝Ｘ１、Ｚ＝Ｚ１の位置を通過するよう時間Ｔ１を調整する。このように、振動補正部２５は、振動波形５１Ｘ，５１Ｚの振動波形に特定通過点Ｐ０を通過させるため、振動波形５１ＸがＸ＝Ｘ１に到達した時点で振動波形５１ＺがＺ＝Ｚ１に到達するよう、振動波形５１Ｚによる移動振動の開始時間を早める。
【００９２】
制御演算部２Ｘは、加工プログラム１０１および振動波形５１Ｘ，５１Ｚに従って、工具６６Ａの移動および振動を制御する。すなわち、工具６６Ａが、図７に示す振動波形５１Ｘ，５１Ｚの移動振動を実行することにより、図６に示した移動経路の加工が実現される。
【００９３】
なお、振動補正部２５は、振動波形５１Ｘによる移動振動の開始時間を補正してもよい。例えば、振動補正部２５は、振動前進位置と振動後進位置との中間位置が特定通過点Ｐ０を通過するよう振動波形５１Ｘを補正する。さらに、振動補正部２５は、振動波形５１Ｘの移動振動の開始時間の補正と合わせて、振動前進位置と振動後進位置との中間位置が特定通過点Ｐ０を通過するよう振動波形５１Ｚの開始時間を補正してもよい。すなわち、振動波形５１Ｘの振動開始時間と振動波形５１Ｚの振動開始時間とを相対的に調整することにより、図６に示される移動経路の加工が実現されればよい。
【００９４】
また、振動波形５１Ｘが、特定通過点Ｐ０を複数回通過する場合、振動補正部２５は、何れの通過タイミングを時間Ｔ２に設定してもよい。また、振動波形５１Ｚが、特定通過点Ｐ０を複数回通過可能な場合、振動補正部２５は、何れの通過タイミングを時間Ｔ２に設定してもよい。振動補正部２５は、例えば、時間Ｔ２が最も短くなるタイミング、すなわち最も早く特定通過点Ｐ０を通過するタイミングを時間Ｔ２に設定し、時間Ｔ１が最も短くなるタイミングを時間Ｔ１に設定することもできる。これにより、振動波形５１Ｘおよび振動波形５１Ｚによって工具６６Ａが加工を実行する時間を短くすることができる。あるいは、振動補正部２５は、振動波形５１Ｘと振動波形５１Ｚの両波形において、振動前進位置と振動後進位置との中間位置に最も近い点が特定通過点Ｐ０を通過するタイミングを時間Ｔ２に設定してもよい。
【００９５】
このように数値制御装置１Ｘは、トレランス値に基づいて、特定通過点Ｐ０を通過するよう振動波形５１Ｚによる移動振動の開始時間である時間Ｔ１を調整するので、トレランス値に対応する振動切削を実現することができる。トレランス値を大きくした場合は加工時間を短縮でき、トレランス値を小さくした場合はコーナ部分における加工精度を向上させることができるので、低周波振動切削におけるコーナ加工時の加工時間および加工精度をコントロールすることができる。
【００９６】
また、トレランス値は、加工プログラムで指定できるので、ユーザは、ユーザの判断で低周波振動切削時におけるコーナ加工時の精度を指定することができる。また、トレランス値は、ラダープログラムで指定できるので、ユーザは、ユーザの判断で低周波振動切削時におけるコーナ加工時の精度を指定することができる。また、トレランス値は、パラメータで指定できるので、トレランス値を加工プログラムまたはラダープログラムから指定しなくても、予めコーナ加工時の精度をパラメータで指定することができる。
【００９７】
このように実施の形態１では、トレランス値が０よりも大きい場合に、数値制御装置１Ｘが、トレランス値に対応する特定通過点Ｐ０を算出し、特定通過点Ｐ０を通過する移動経路（Ｘ軸およびＺ軸の振動波形）を生成する。したがって、所望の加工精度でコーナ加工を行うことが可能となる。また、所望の加工時間でコーナ加工を行うことが可能となる。
【００９８】
実施の形態２．
つぎに、図８から図１３を用いてこの発明の実施の形態２について説明する。実施の形態２では、数値制御装置１Ｘが、加工形状の特定角度が所定角度以下であればトレランス値＝０である場合の移動経路を設定する。
【００９９】
図８は、実施の形態２にかかる数値制御装置が用いる加工プログラムを示す図である。図９は、実施の形態２にかかる数値制御装置が生成する移動経路を示す図である。実施の形態２では、数値制御装置１Ｘが、図８の加工プログラムから図９の移動経路を生成する。ここでの移動経路は、Ｘ軸方向の移動経路と、Ｚ軸方向の移動経路とを含んでいる。
【０１００】
加工プログラム１０２は、数値制御装置１Ｘが工作機械１１０を制御する際に用いられる。加工プログラム１０２は、加工精度を向上させるために、トレランス値＝０（図８では、トレランス値を「０．０」と記載）とした場合の加工プログラム例である。図９の移動経路を示す図では、横軸がＺ軸方向の位置を示し、縦軸がＸ軸方向の位置を示している。
【０１０１】
トレランス値が０の場合、工具６６Ａの移動経路が直角位置を通過する。換言すると、トレランス値＝０では、直角位置が特定通過点Ｐ０である。
【０１０２】
実施の形態２では、工具６６Ａが指定されたＸ座標（Ｘ＝１０．０）まで移動した後、指定されたＺ座標（Ｚ＝１０．０）への移動を開始する。すなわち、数値制御装置１Ｘは、工具６６Ａを、開始点から直角位置までＸ軸方向へ移動させ、直角位置から終了点までＺ軸方向へ移動させる。
【０１０３】
なお、加工プログラム１０２には、図８に示した指令の他に、主軸回転数指令などが含まれている。また、加工プログラム１０２のＧ１６５には、加工プログラム１０１と同様に、工具６６Ａの振動の振幅、主軸６０が１回転する間の振動回数などが含まれている。
【０１０４】
図１０は、実施の形態２にかかる数値制御装置による移動経路設定の処理手順を示すフローチャートである。図１０では、移動経路が直角位置を通過する場合の移動経路の設定処理について説明する。なお、実施の形態１の図５で説明した処理と同様の処理については重複する説明を省略する。
【０１０５】
移動指令解析部１２は、加工プログラム１０２に含まれる移動指令を解析してＸ軸方向およびＺ軸方向の移動条件を生成し、生成した移動条件を補間処理部３８Ｘに送る。また、振動指令解析部１１は、加工プログラム１０２に含まれる振動指令を解析してＸ軸方向およびＺ軸方向への振動条件を生成し、生成した振動条件を補間処理部３８Ｘに送る。
【０１０６】
トレランス値設定部２３は、加工プログラムまたはラダープログラム等の何れに設定されているトレランス値を優先させるかを規定した優先情報に基づいて、トレランス制御に用いるトレランス値を設定する。トレランス値設定部２３は、トレランス制御に用いるトレランス値が０に設定（トレランス値＝０が設定）されているか否かを判定する（ステップＳ１１０）。
【０１０７】
トレランス値が０に設定されていない場合（ステップＳ１１０、Ｎｏ）、トレランス値設定部２３は、加工ワーク７０の加工形状が特定角度（例えば、６０°）以下であればトレランス値を０にすることが設定されているか否かを判定する（ステップＳ１２０）。
【０１０８】
加工形状が特定角度以下であればトレランス値を０にすることが設定されている場合（ステップＳ１２０、Ｙｅｓ）、トレランス値設定部２３は、加工ワーク７０の加工形状が特定角度以下であるか否かを判定する（ステップＳ１３０）。ここでは、特定角度が６０°である場合について説明するが、特定角度は９０°未満であれば何れの角度であってもよい。加工ワーク７０が６０°に加工される場合、工具６６Ａの移動経路は１２０°であり、加工ワーク７０が３００°に加工される場合、工具６６Ａの移動経路は６０°である。
【０１０９】
図１１は、加工ワークのコーナ角度が６０°であり、移動経路の角度が１２０°である場合の加工ワークの形状を示す図であり、図１２は、加工ワークのコーナ角度が３００°であり、移動経路の角度が６０°である場合の加工ワークの形状を示す図であり、いずれの加工ワークも特定角度は６０°である。すなわち、特定角度は、工具６６Ａの移動経路の角度の１８０°未満の角度を示す。
【０１１０】
トレランス値設定部２３は、加工プログラムに基づいて、加工ワーク７０が指定された特定角度以下に加工されるか否かを判定する。例えば、加工プログラムによって、第１の座標（ａ，ｂ）から第２の座標（ｃ，ｄ）への移動経路が設定されている場合、座標の情報のみでは、移動経路が６０°のコーナであるか３００°のコーナであるかを判定できない。そこで、トレランス値設定部２３は、加工プログラムに含まれるノーズＲの指令に基づいて、移動経路のコーナが６０°であるか３００°であるかを判定する。ノーズＲは、工具６６Ａの右側で加工ワーク７０を加工するか、工具６６Ａの左側で加工ワーク７０を加工するかの情報を含んでいる。例えば、図１１に示すように、工具６６Ａの右側で加工ワーク７０を加工する場合、加工プログラムではＧ４２のＧコードが用いられる。また、図１２に示すように、工具６６Ａの左側で加工ワーク７０を加工する場合、加工プログラムではＧ４１のＧコードが用いられる。
【０１１１】
トレランス値設定部２３は、第１および第２の座標の情報と上述のＧコードとから移動経路のコーナの角度を判定する。すなわち、図１１、図１２においては、加工プログラムにＧ４２が含まれている場合には、加工ワーク７０が６０°に加工されると判断し、加工プログラムにＧ４１が含まれている場合には、加工ワーク７０が１２０°に加工されると判断する。
【０１１２】
加工ワーク７０の加工形状が特定角度以下である場合（ステップＳ１３０、Ｙｅｓ）、加工精度が重要となるので、トレランス値設定部２３は、トレランス値を０に設定する（ステップＳ１４０）。
【０１１３】
このように、ラダープログラム等でトレランス値が０に設定されていない場合であっても、移動経路が特定角度以下（例えば、６０°以下）となるような場合には、トレランス値が自動で０となるようにパラメータ設定しておくことも可能である。
【０１１４】
加工形状が特定角度以下であればトレランス値を０にすることが設定されていない場合（ステップＳ１２０、Ｎｏ）、数値制御装置１Ｘは、実施の形態２で説明する移動経路の設定処理は実行しない。
【０１１５】
また、加工ワーク７０の加工形状が特定角度よりも大きい場合（ステップＳ１３０、Ｎｏ）、数値制御装置１Ｘは、実施の形態２で説明する移動経路の設定処理は実行しない。
【０１１６】
ラダープログラム等でトレランス値＝０に設定されている場合（ステップＳ１１０、Ｙｅｓ）、またはトレランス値設定部２３がトレランス値＝０に設定した場合（ステップＳ１４０）、トレランス値設定部２３は、トレランス値＝０を波形生成部２４に送る。波形生成部２４は、Ｘ軸方向の移動経路およびＺ軸方向の移動経路を生成する。
【０１１７】
振動補正部２５は、移動経路を示す振動波形に基づいて、Ｘ軸方向の移動経路である第１移動経路の振動波形、およびＺ軸方向の移動経路である第２移動経路の振動波形を補正する。
【０１１８】
振動補正部２５は、指定されたトレランス値＝０に合わせて、第１移動経路が終わる際の振動波形と、第２移動経路が始まる際の振動波形を補正する。
【０１１９】
図１３は、実施の形態２にかかる数値制御装置が生成する振動波形を説明するための図である。ここでの振動波形は、Ｘ軸方向の振動波形およびＺ軸方向の振動波形を含んでいる。図１３では、Ｘ軸方向の振動波形５２Ｘと、Ｚ軸方向の振動波形５２Ｚとを示している。図１３の横軸は時間であり、振動波形５２Ｘの縦軸はＸ軸方向の位置（軸位置）であり、振動波形５２Ｚの縦軸はＺ軸方向の位置（軸位置）である。実施の形態２では、振動波形５２Ｘが第１の振動波形であり、振動波形５２Ｚが第２の振動波形である。
【０１２０】
波形生成部２４が生成する振動波形は、Ｘ軸方向の振動波形およびＺ軸方向の振動波形である。波形生成部２４は、Ｘ軸方向の加工が完了した後のタイミングで、Ｚ軸方向の加工を開始する振動波形を生成する。これにより、トレランス値０でのコーナ加工が可能となる。
【０１２１】
波形生成部２４は、Ｘ軸方向の振動波形が、Ｘ＝１０．０の位置に到達する時間Ｔ３にＺ軸方向の加工が開始される振動波形を生成する。Ｚ軸方向の振動波形が、Ｚ＝１０．０の位置に到達する時間は時間Ｔ４である。なお、振動波形の到達時間は、図１３で示されるように、振動波形の振動後進位置を結ぶ直線が終点位置に到達する時点とする。
【０１２２】
振動補正部２５は、指定されたトレランス値＝０に合わせて、移動経路の切り替え前後で振動を補正する。このとき、振動補正部２５は、実施の形態１で説明した処理と同様の処理によって、第１移動経路（Ｘ軸方向の移動経路）から第２移動経路（Ｚ軸方向の移動経路）への切り替え前後で振動を補正する（ステップＳ１５０）。
【０１２３】
具体的には、振動補正部２５は、波形生成部２４が生成したＸ軸方向の振動波形に対し、Ｘ軸方向の振動を開始する際の工具６６Ａの位置座標がＸ＝０．０よりも小さなＸ軸方向の位置に移動しないよう振幅を少しずつ増加させる。すなわち、振動補正部２５は、Ｘ軸方向の移動が開始する位置での振幅を０としつつ、Ｘ軸方向の振幅を少しずつ増やしていく。振動補正部２５は、振幅が振動条件で規定された振幅となるまで振幅を増やす。
【０１２４】
また、振動補正部２５は、波形生成部２４が生成したＸ軸方向の振動波形に対し、Ｘ軸方向の移動が終了する際の工具６６Ａの位置座標がＸ＝１０．０より大きくならないよう振幅を収束させる。Ｘ軸方向の振動波形に対して、開始および終了の際の振幅を補正したものが、振動波形５２Ｘである。
【０１２５】
また、振動補正部２５は、波形生成部２４が生成したＺ軸方向の振動波形に対し、Ｚ軸方向の振動を開始する際の工具６６Ａの位置座標がＺ＝０．０よりも小さなＺ軸方向の位置に移動しないよう振幅を少しずつ増加させる。すなわち、振動補正部２５は、Ｚ軸方向の移動が開始する位置での振幅を０としつつ、Ｚ軸方向の振幅を少しずつ増やしていく。振動補正部２５は、振幅が振動条件で規定された振幅となるまで振幅を増やす。
【０１２６】
また、振動補正部２５は、波形生成部２４が生成したＺ軸方向の振動波形に対し、Ｘ軸方向の収束と同様に、Ｚ軸方向の移動が終了する際の工具６６Ａの位置座標がＺ＝１０．０より大きくならないよう振幅を０に収束させる。Ｚ軸方向の振動波形に対して、開始および終了の際の振幅を補正したものが、振動波形５２Ｚである。
【０１２７】
本実施の形態では、図１３に示すように、振動補正部２５が、各振動波形の振動前進位置を結ぶ線が直線となるように、また振動後進位置を結ぶ線が直線となるように、各振動波形の振幅を補正する。これにより、コーナ部において加工ワークを削りすぎず、さらにコーナ角度の精度が良い加工が実現できる。
【０１２８】
制御演算部２Ｘは、加工プログラム１０２および振動波形５２Ｘ，５２Ｚに従って、工具６６Ａの移動および振動を制御する。すなわち、工具６６Ａが、図１３に示す振動波形５２Ｘ，５２Ｚの移動振動を実行することにより、図９に示した移動経路の加工が実現される。
【０１２９】
このように実施の形態２によれば、トレランス値が０の場合には、数値制御装置１Ｘが、Ｘ軸方向の移動が終了した後にＺ軸方向の移動を開始させるので、移動経路の切り替え前後で第１移動経路の振動波形と第２移動経路の振動波形とが合成されることはない。したがって、加工精度の良い振動切削を実現することができる。
【０１３０】
また、振動波形の振幅が各軸の終点に向かって収束していくため、Ｘ軸方向の移動が終了した時点でＸ軸方向の移動を停止させることを加工プログラム内で規定する必要がないので、加工プログラムを容易に作成することが可能となる。
【０１３１】
実施の形態３．
つぎに、図１４から図１７を用いてこの発明の実施の形態３について説明する。実施の形態３では、実施の形態１とは異なる方法でトレランス制御を実現する方法について説明する。実施の形態３では、トレランス値＝ｍの場合に、Ｘ軸方向およびＺ軸方向と異なる第３の方向の移動経路を用いた移動経路を設定する。実施の形態３では、Ｘ−Ｚ平面内でＸ軸、Ｚ軸とは異なる方向を第３の方向とし、第３の方向をＸ軸の基準ベクトルとＺ軸の基準ベクトルを合成した方向とする。実施の形態３でも、実施の形態１と同様に加工プログラム１０１が用いられる。
【０１３２】
図１４は、実施の形態３にかかる数値制御装置が生成する移動経路を示す図である。実施の形態３では、数値制御装置１Ｘが、図３の加工プログラムから図１４の移動経路を生成する。ここでの移動経路は、Ｘ軸方向の移動経路と、Ｚ軸方向の移動経路Ｒ１１，Ｒ１，Ｒ１２とを含んでいる。
【０１３３】
図１４に示す移動経路の図では、横軸がＺ軸方向の位置（Ｚ軸位置）を示し、縦軸がＸ軸方向の位置（Ｘ軸位置）を示している。図１４では、図４に示した移動経路に対し、トレランス値を満たすために設定された特定通過点Ｐ０を示している。また、図１４では、工具６６Ａが通過するＸ軸上の位置を位置Ｐ１で示し、工具６６Ａが通過するＺ軸上の位置を位置Ｐ２で示している。
【０１３４】
位置Ｐ１と位置Ｐ２とを結ぶ経路は、工具６６Ａの移動経路Ｒ１である。位置Ｐ１，Ｐ２は、特定通過点Ｐ０が位置Ｐ１と位置Ｐ２とを結ぶ移動経路Ｒ１上となるよう設定される。図１４では、位置Ｐ１のＸ座標はＸ２で示され、位置Ｐ２のＺ座標はＺ２で示されている。数値制御装置１Ｘは、開始点からスタートして、位置Ｐ１、特定通過点Ｐ０、位置Ｐ２を順番に通過して終了点まで到達するよう移動経路を設定する。具体的には、数値制御装置１Ｘは、開始点から位置Ｐ１までの移動経路Ｒ１１と、位置Ｐ１から位置Ｐ２までの移動経路Ｒ１と、位置Ｐ２から終了点までの移動経路Ｒ１２とを設定する。
【０１３５】
ここで、移動経路Ｒ１１，Ｒ１，Ｒ１２の設定処理について説明する。図１５は、実施の形態３にかかる数値制御装置による移動経路設定の処理手順を示すフローチャートである。図１５では、第３の方向の移動経路を用いた移動経路を設定する処理について説明する。なお、実施の形態１の図５で説明した処理または実施の形態２の図１０で説明した処理と同様の処理については重複する説明を省略する。
【０１３６】
トレランス値設定部２３は、０よりも大きいトレランス値が設定されているか否か（指定されたトレランス値＞０であるか否か）を判定する（ステップＳ２１０）。０よりも大きいトレランス値が設定されていない場合（ステップＳ２１０、Ｎｏ）、数値制御装置１Ｘは、実施の形態３で説明する移動経路の設定処理は実行しない。
【０１３７】
０よりも大きいトレランス値が設定されている場合（ステップＳ２１０、Ｙｅｓ）、トレランス値設定部２３は、トレランス値を波形生成部２４に送る。波形生成部２４は、Ｘ軸方向の移動経路である第１移動経路、およびＺ軸方向の移動経路である第２移動経路を生成する。波形生成部２４が生成する第１移動経路は、Ｘ＝０．０からＸ＝１０．０までを結ぶ移動経路である。波形生成部２４が生成する第２移動経路は、Ｚ＝０．０からＺ＝１０．０までを結ぶ移動経路である。
【０１３８】
波形生成部２４は、トレランス値に基づいて、第１移動経路上の位置Ｐ１および第２移動経路上の位置Ｐ２を算出する。波形生成部２４は、第１移動経路上の位置Ｐ１と第２移動経路上の位置Ｐ２とを結ぶ第３の方向の移動経路Ｒ１を生成する（ステップＳ２２０）。第３の方向の移動経路Ｒ１は、位置Ｐ１から位置Ｐ２までを結ぶ経路であり、Ｘ軸方向の移動経路とＺ軸方向の移動経路とが合成されることによって生成される。波形生成部２４は、位置Ｐ１、特定通過点Ｐ０、位置Ｐ２を通過するよう、移動経路Ｒ１を生成する。なお、移動経路Ｒ１は、直線でもよいし曲線でもよい。
【０１３９】
さらに、波形生成部２４は、第１移動経路から工具６６Ａが通過しない移動経路Ｒ２を削除し、第２移動経路から工具６６Ａが通過しない移動経路Ｒ３を削除する。すなわち、波形生成部２４は、第３の方向の移動経路Ｒ１と各軸との交点に基づいて、第１移動経路および第２移動経路から不要な移動経路を削除する（ステップＳ２３０）。第３の方向の移動経路Ｒ１とＸ軸との交点が位置Ｐ１であり、第３の方向の移動経路Ｒ１とＺ軸との交点が位置Ｐ２である。波形生成部２４は、第１移動経路から移動経路Ｒ２を削除した移動経路Ｒ１１を生成し、第２移動経路から移動経路Ｒ３を削除した移動経路Ｒ１２を生成する。移動経路Ｒ１１は、Ｘ軸上のＸ＝０．０からＸ＝Ｘ２までを結ぶ移動経路であり、移動経路Ｒ１２は、Ｚ軸上のＺ＝Ｚ２からＺ＝１０．０までを結ぶ移動経路である。
【０１４０】
波形生成部２４は、移動経路Ｒ１，Ｒ１１，Ｒ１２に振動条件の振幅を加算した振動前進位置と、振幅を減算した振動後進位置とを求める。波形生成部２４は、振動前進位置および振動後進位置に基づいて移動経路Ｒ１，Ｒ１１，Ｒ１２の振動波形を生成する。移動経路Ｒ１１の振動波形は、Ｘ軸方向の移動経路の波振動形であり、移動経路Ｒ１２の振動波形は、Ｚ軸方向の移動経路の振動波形である。移動経路Ｒ１の振動波形は、Ｘ軸方向の移動経路とＺ軸方向の移動経路とが合成された移動経路の振動波形である。
【０１４１】
振動補正部２５は、移動経路Ｒ１，Ｒ１１，Ｒ１２を示す振動波形に基づいて、移動経路Ｒ１，Ｒ１１，Ｒ１２の振動波形を補正する。
【０１４２】
図１６は、実施の形態３にかかる数値制御装置が移動振動の開始時間を補正する前の振動波形を説明するための図である。図１６および後述の図１７に示す振動波形は、Ｘ軸方向の振動波形と、Ｚ軸方向の振動波形と、Ｘ軸方向およびＺ軸方向を合成した第３の方向の振動波形と、を含んでいる。図１６では、移動経路の切り替え前後で振動が補正された場合の振動波形を示している。
【０１４３】
振動補正部２５は、実施の形態１で説明した処理と同様の処理によって、移動経路の切り替え前後で振動を補正する（ステップＳ２４０）。具体的には、振動補正部２５は、波形生成部２４が生成したＸ軸方向の移動経路Ｒ１１に対し、Ｘ軸方向の移動が開始する際の工具６６ＡのＸ座標がＸ＝０．０より小さくならないよう少しずつ振幅を増加させる。
【０１４４】
また、振動補正部２５は、波形生成部２４が生成したＸ軸方向の移動経路Ｒ１１に対し、Ｘ軸方向の移動が終了する際の工具６６ＡのＸ座標がＸ＝Ｘ２より大きくならないよう振幅を０に収束させる。Ｘ軸方向の振動波形に対して、開始および終了の際の振幅を補正したものが、振動波形５３Ｘである。
【０１４５】
また、振動補正部２５は、波形生成部２４が生成した第３の方向の移動経路Ｒ１に対し、第３の方向の移動が開始する際の工具６６ＡのＺ座標がＺ＝０．０よりも小さくならず、且つ工具６６ＡのＸ座標がＸ＝Ｘ２よりも小さくならないよう少しずつ振幅を増加させる。
【０１４６】
また、振動補正部２５は、波形生成部２４が生成した第３の方向の移動経路Ｒ１に対し、第３の方向の移動が終了する際の工具６６ＡのＸ座標がＸ＝１０．０より大きくならず、且つ工具６６ＡのＺ座標がＺ＝Ｚ２よりも大きくならないよう振幅を０に収束させる。第３の方向の振動波形に対して、開始および終了の際の振幅を補正したものが、振動波形５３ＸＺである。
【０１４７】
また、振動補正部２５は、波形生成部２４が生成したＺ軸方向の移動経路Ｒ１２に対し、Ｚ軸方向の移動が開始する際の工具６６ＡのＺ座標がＺ＝Ｚ２よりも小さくならないよう少しずつ振幅を増加させる。
【０１４８】
また、振動補正部２５は、波形生成部２４が生成したＺ軸方向の移動経路Ｒ１２に対し、Ｚ軸方向の移動が終了する際の工具６６ＡのＺ座標がＺ＝１０．０よりも大きくならないよう振幅を０に収束させる。Ｚ軸方向の振動波形に対して、開始および終了の際の振幅を補正したものが、振動波形５３Ｚである。
【０１４９】
図１６では、振動波形５３Ｘによる加工が完了し、振動波形５３ＸＺによる加工が開始する時間を時間Ｔ５で示し、振動波形５３ＸＺによる加工が完了し、振動波形５３Ｚによる加工が開始する時間を時間Ｔ６で示している。
【０１５０】
振動補正部２５は、移動振動の開始時間である時間Ｔ５，Ｔ６を補正する（ステップＳ２５０）。図１７は、実施の形態３にかかる数値制御装置が移動振動の開始時間を補正した後の振動波形を説明するための図である。
【０１５１】
図１７では、Ｘ軸方向の振動波形５４Ｘと、第３の方向の移動振動の開始時間を補正した振動波形５４ＸＺと、Ｚ軸方向の移動振動の開始時間を補正した振動波形５４Ｚとを図示している。実施の形態３では、振動波形５４Ｘが第１の振動波形であり、振動波形５４Ｚが第２の振動波形であり、振動波形５４ＸＺが第３の振動波形である。
【０１５２】
振動波形５４Ｘは、図１６に示した振動波形５３Ｘと同様の振動波形である。振動波形５４ＸＺは、図１６に示した振動波形５３ＸＺの開始時間を補正した振動波形であり、振動波形５４Ｚは、図１６に示した振動波形５３Ｚの開始時間を補正した振動波形である。
【０１５３】
振動補正部２５は、振動波形５４ＸＺが特定通過点Ｐ０を通過し、且つＸ＝Ｘ２の位置に最初に到達する時間Ｔ７で第３の方向の加工が開始されるよう振動波形５４ＸＺの開始時間を調整する。すなわち、振動補正部２５は、振動波形５４ＸＺの開始時間を時間Ｔ７に変更する。このように、振動補正部２５は、振動波形５４Ｘが、Ｘ＝Ｘ２の位置に到達するタイミングと、振動波形５４ＸＺを開始するタイミングが同じになるよう、振動波形５４ＸＺの開始時間を早める。これにより、工具６６Ａの振動を停止させることなく移動方向の切り替えを行うことができるので、滑らかな振動波形を実現することができる。
【０１５４】
また、振動補正部２５は、振動波形５４ＸＺが、Ｚ＝Ｚ２、Ｘ＝１０．０の位置に最初に到達する時間Ｔ８で、振動波形５４Ｚによる加工が開始されるよう振動波形５４Ｚの開始時間を調整する。ここで、振動波形が所定の位置に最初に到達する時間とは、当該振動波形の極大点を結ぶ直線が所定の位置に到達する時間を言う。すなわち、振動補正部２５は、振動波形５４Ｚの開始時間を時間Ｔ８に変更する。このように、振動補正部２５は、振動波形５４ＸＺが、Ｚ＝Ｚ２、Ｘ＝１０．０の位置に最初に到達するタイミングと、振動波形５４Ｚを開始するタイミングが同じになるよう、振動波形５４Ｚの開始時間を早める。これにより、工具６６Ａの振動を停止させることなく移動方向の切り替えを行うことができるので、滑らかな振動波形を実現することができる。
【０１５５】
制御演算部２Ｘは、加工プログラム１０１および振動波形５４Ｘ，５４ＸＺ，５４Ｚに従って、工具６６Ａの移動および振動を制御する。すなわち、工具６６Ａが、図１７に示す振動波形５４Ｘ，５４ＸＺ，５４Ｚの移動振動を実行することにより、図１４に示した移動経路の加工が実現される。
【０１５６】
なお、振動波形５４ＸＺを開始させるタイミングは、振動波形５４Ｘが、Ｘ＝Ｘ２に最初に到達したタイミングから振動波形５４Ｘの振幅が０となるまでの間であれば、何れのタイミングであってもよい。また、振動波形５４Ｚを開始させるタイミングは、振動波形５４ＸＺが、Ｚ＝Ｚ２に最初に到達したタイミングから振動波形５４ＸＺの振幅が０となるまでの間であれば、何れのタイミングであってもよい。
【０１５７】
このように実施の形態３では、実施の形態１と同様に、トレランス値が０よりも大きい場合に、数値制御装置１Ｘが、トレランス値に基づいて、トレランス値に対応する特定通過点Ｐ０を工具６６Ａが通過する移動経路を生成する。したがって、トレランス値に対応する移動経路を設定することが可能となる。
【０１５８】
実施の形態４．
つぎに、図１８から図２１を用いてこの発明の実施の形態４について説明する。実施の形態１から３では、移動経路の切り替え前後で振動を補正する処理を行ったが、実施の形態４では、工具６６Ａの刃先が加工ワーク７０に干渉（接触）しない場合には、移動経路の切り替え前後で振動を補正する処理を行わない。
【０１５９】
実施の形態４の処理を実施の形態１から３の何れかに適用する場合、何れに適用する場合も同様の処理が行われるので、実施の形態４では、実施の形態１で説明した移動経路の設定処理の際に移動経路の切り替え前後で振動を補正する処理を行わない場合について説明する。
【０１６０】
図１８は、実施の形態４にかかる数値制御装置が生成する移動経路を示す図である。実施の形態４では、数値制御装置１Ｘが、図３の加工プログラムから図１８の移動経路を生成する。ここでの移動経路は、Ｘ軸方向の移動経路と、Ｚ軸方向の移動経路とを含んでいる。
【０１６１】
図１８に示す移動経路の図では、横軸がＺ軸方向の位置（Ｚ軸位置）を示し、縦軸がＸ軸方向の位置（Ｘ軸位置）を示している。図１８では、図４に示した移動経路に対し、トレランス値を満たすために設定された特定通過点Ｐ０を示している。図１８では、特定通過点Ｐ０のＸ座標をＸ３で示し、Ｚ座標をＺ３で示している。また、図１８では、工具６６Ａが通過するＸ軸上の位置を位置Ｐ３で示し、工具６６Ａが通過するＺ軸上の位置を位置Ｐ４で示している。
【０１６２】
位置Ｐ３と位置Ｐ４とを結ぶ経路は、工具６６Ａの移動経路である。位置Ｐ３，Ｐ４は、特定通過点Ｐ０が位置Ｐ３と位置Ｐ４とを結ぶ移動経路上となるよう設定される。数値制御装置１Ｘは、開始点からスタートして、位置Ｐ３、特定通過点Ｐ０、位置Ｐ４を順番に通過して終了点まで到達するよう移動経路を設定する。
【０１６３】
図１９は、実施の形態４にかかる数値制御装置による移動経路設定の処理手順を示すフローチャートである。ステップＳ３１０，Ｓ３２０の処理は、実施の形態１の図５で説明したステップＳ１０，Ｓ２０の処理と同様であるので、その説明を省略する。
【０１６４】
波形生成部２４は、実施の形態１で説明した処理と同様の処理によって、振動波形を生成する。すなわち、波形生成部２４は、Ｘ軸方向の指令移動量および振動移動量を合成することによってＸ軸方向の移動経路に対応する振動波形を生成する。また、波形生成部２４は、Ｚ軸方向の指令移動量および振動移動量を合成することによってＺ軸方向の移動経路に対応する振動波形を生成する。
【０１６５】
振動補正部２５は、加工ワーク７０と工具６６Ａの位置関係を取得する（ステップＳ３３０）。具体的には、振動補正部２５は、解析処理部３７が解析することによって得られたノーズＲの指令に基づいて、加工ワーク７０が、工具６６Ａの移動経路が形成するコーナの内側にあるのか外側にあるのかの情報を得る。尚、コーナの内側とは１８０°未満の角度である側を言い、コーナの外側とは１８０°を超える角度である側を言う。
【０１６６】
図１１に示したように、加工ワーク７０のコーナ形状における角度が、１８０°未満である場合、すなわち、加工ワーク７０が、移動経路が形成するコーナの内側にある場合、移動方向の切り替え時に工具６６Ａの移動経路を補正しなくても、工具６６Ａと加工ワーク７０とが干渉しない。この場合、振動補正部２５は、直角位置の外側に工具６６Ａがはみ出しても良いと判断する。換言すると、図１８に示した移動経路のコーナの内側に加工ワーク７０がある場合、工具６６Ａが開始位置座標から終点位置座標までの範囲を超えても、加工後の加工ワーク７０の形状に影響を与えない。そのため、振動補正部２５は、移動方向の切り替え時に工具６６Ａの移動経路を補正しなくても、工具６６Ａと加工ワーク７０とが干渉しないと判断する。
【０１６７】
一方、図１２に示したように、加工ワーク７０が、工具６６Ａの移動経路のコーナの外側にある場合、移動方向の切り替え時に工具６６Ａの移動経路を補正しなければ、工具６６Ａと加工ワーク７０とが干渉する。この場合、振動補正部２５は、直角位置の外側に工具６６Ａがはみ出してはいけないと判断する。
【０１６８】
図２０は、実施の形態４にかかる数値制御装置が生成する振動波形を説明するための図である。ここでの振動波形は、Ｘ軸方向の振動波形と、Ｚ軸方向の振動波形とを含んでいる。図２０では、Ｘ軸方向の移動経路に対応する振動波形５５Ｘと、Ｚ軸方向の移動経路に対応する振動波形５５Ｚとを示している。図２０の横軸は時間であり、振動波形５５Ｘの縦軸はＸ軸方向の位置（軸位置）であり、振動波形５５Ｚの縦軸はＺ軸方向の位置（軸位置）である。
【０１６９】
波形生成部２４が生成する移動経路は、Ｘ軸方向の移動経路およびＺ軸方向の移動経路である。波形生成部２４は、Ｘ軸方向の加工が完了したタイミングで、Ｚ軸方向の加工を開始する移動経路を生成する。
【０１７０】
振動補正部２５は、加工ワーク７０と工具６６Ａの位置関係に基づいて、第１移動経路の振動前進位置または第２移動経路の振動後進位置が加工ワーク７０に干渉するか否かを判定する（ステップＳ３４０）。すなわち、振動補正部２５は、振動波形で示される位置が目標位置に到達する際に振動波形で示される位置が加工ワーク７０に干渉するか否かを判定する。
【０１７１】
第１移動経路の振動前進位置または第２移動経路の振動後進位置が加工ワーク７０に干渉する場合（ステップＳ３４０、Ｙｅｓ）、振動補正部２５は、実施の形態１と同様に、移動経路の切り替え前後で振動を補正する（ステップＳ３５０）。すなわち、第１移動経路の振動前進位置が加工ワーク７０に干渉する場合には、振動補正部２５は、Ｘ軸方向の振動波形に対し、振動前進位置が加工ワーク７０に干渉しないよう、開始および終了の際の振幅を補正する。また、第２移動経路の振動後進位置が加工ワーク７０に干渉する場合には、振動補正部２５は、Ｚ軸方向の振動波形に対し、振動後進位置が加工ワーク７０に干渉しないよう開始および終了の際の振幅を補正する。
【０１７２】
第１移動経路の振動前進位置および第２移動経路の振動後進位置が加工ワーク７０に干渉しない場合（ステップＳ３４０、Ｎｏ）、振動補正部２５は、移動経路の切り替え前後で振動を補正しない。
【０１７３】
すなわち、振動補正部２５は、第１移動経路の移動振動が終わる際に工具６６Ａが加工ワーク７０に干渉しない場合には、第１移動経路の移動振動が終わる際のＸ軸方向の振動波形の振幅を収束させる補正を行わない。また、振動補正部２５は、第２移動経路の移動振動が始まる際に工具６６Ａが加工ワーク７０に干渉しない場合には、第２移動経路が始まる際のＺ軸方向の振動波形の振幅を少しずつ増加させる補正を行わない。
【０１７４】
ステップＳ３４０でＮｏの場合、またはステップＳ３５０の処理の後、振動補正部２５は、実施の形態１と同様に、工具６６Ａが特定通過点Ｐ０を通過するよう、振動波形５５Ｚを開始するタイミング（時間Ｔ９）を調整する。換言すると、振動補正部２５は、Ｚ軸方向の移動振動の開始時間を補正する（ステップＳ３６０）。
【０１７５】
制御演算部２Ｘは、加工プログラム１０１および振動波形５５Ｘ，５５Ｚに従って、工具６６Ａの移動および振動を制御する。すなわち、工具６６Ａが、図２０に示す振動波形５５Ｘ，５５Ｚの移動振動を実行することにより、図１８に示した移動経路の加工が実現される。
【０１７６】
このように、工具６６Ａが加工ワーク７０に干渉しない場合、工具６６Ａが位置Ｐ３，Ｐ４からはみ出すデメリットは無い。工具６６Ａが加工ワーク７０に干渉しない場合には、振動波形の振幅を補正しないことにより、工具６６Ａの振動を継続させることができるので、加工時間を短縮することができる。
【０１７７】
なお、トレランス値は、ユーザ（オペレータ）によって指定されてもよい。この場合、ユーザが、加工プログラムまたはラダープログラムにトレランス値を格納することによってトレランス値が指定される。また、ユーザによって指定されるトレランス値は、トレランス値が直接指定される場合に限らず、段階指定されてもよい。段階設定されたトレランス値は、トレランス段階情報として、数値制御装置１Ｘの記憶部３４に格納される。
【０１７８】
図２１は、実施の形態４にかかる数値制御装置で用いられるトレランス段階情報を説明するための図である。トレランス段階情報７１は、加工精度に応じたトレランス値が段階的に設定された情報である。トレランス段階情報７１では、トレランス値と、加工精度（加工時間）の段階とが対応付けされた情報である。例えば、トレランス段階情報７１では、第１段階が０μｍのトレランス値であり、第２段階が１０μｍのトレランス値である。また、トレランス段階情報７１では、第４段階が３０μｍのトレランス値であり、第５段階が４０μｍのトレランス値である。
【０１７９】
トレランス段階情報７１では、段階が低いほど加工精度が優先されており、段階が高いほど加工時間が優先されている。すなわち、第１段階のトレランス値で加工した場合に最も加工精度が良くなり、第５段階のトレランス値で加工した場合に最も加工時間が短くなる。数値制御装置１Ｘのトレランス値設定部２３は、ユーザに指定された段階と、トレランス段階情報７１とに基づいて、トレランス値を設定する。
【０１８０】
なお、トレランス段階情報７１の段階の代わりにトレランス値の識別情報が用いられてもよい。すなわち、トレランス段階情報７１は、トレランス値と、識別情報とが対応付けされた情報であってもよい。
【０１８１】
また、トレランス段階情報７１は、ユーザからの操作によってカスタマイズが可能となっている。また、トレランス段階情報７１内の段階が加工プログラムなどで指定されてもよい。この場合、数値制御装置１Ｘのトレランス値設定部２３は、加工プログラムなどで指定されている段階と、トレランス段階情報７１とに基づいて、トレランス値を設定する。実施の形態１から３でもトレランス値設定部２３は、トレランス段階情報７１に基づいて、トレランス値を設定してもよい。
【０１８２】
このように実施の形態４によれば、数値制御装置１Ｘは、工具６６Ａの刃先が加工ワーク７０に干渉しない場合には、移動経路の切り替え前後で振動を補正しないので、振動波形の振幅を保ったままコーナ加工を行うことができる。これにより、振動波形の振幅の増加または減少に伴う加工時間の遅延を発生させることがないので、加工時間が長くなることを防止できる。
【０１８３】
実施の形態５．
つぎに、図２２を用いてこの発明の実施の形態５について説明する。実施の形態５では、所望の移動経路で加工を行うためのトレランス値を機械学習によって学習する。
【０１８４】
図２２は、実施の形態５にかかる数値制御装置の構成例を示す図である。数値制御装置１Ｙは、実施の形態１から４で説明した数値制御装置１Ｘと同様に、工作機械１１０に対して低周波振動切削の制御を実行する。数値制御装置１Ｙは、機械学習装置４００を備えており、機械学習装置４００が、トレランス制御の精度を上げるため、トレランス制御で用いられるトレランス値を学習し、トレランス制御の行動を決定する。
【０１８５】
数値制御装置１Ｙは、数値制御装置１Ｘと比較して、制御演算部２Ｘの代わりに制御演算部２Ｙを備えている。制御演算部２Ｙは、制御演算部２Ｘと比較して、補間処理部３８Ｘの代わりに補間処理部３８Ｙを備え、軸データ出力部４０の代わりに、軸データ入出力部４６を備えている。また、制御演算部２Ｙは、機械学習装置４００を備えている。
【０１８６】
補間処理部３８Ｙは、補間処理部３８Ｘが有する構成要素に加えて、トレランス検出部２６を備えている。トレランス検出部２６は、トレランス値設定部２３が決定したトレランス値（ｍ）を取得して機械学習装置４００に送る。
【０１８７】
軸データ入出力部４６は、実施の形態１で説明した軸データ出力部４０の機能に加え、Ｘ軸サーボ制御部９１およびＺ軸サーボ制御部９２から送られてくるフィードバック（ＦＢ：Feed-Back）位置（ｊ）を受け付けて機械学習装置４００に入力する機能を備えている。ＦＢ位置（ｊ）は、トレランス値（ｍ）を用いてトレランス制御した場合の実際の特定通過点の位置（座標）である。軸データ入出力部４６は、Ｘ軸サーボ制御部９１からはＦＢ位置（ｊ）のうちのＸ軸方向の位置を受け付け、Ｚ軸サーボ制御部９２からはＦＢ位置（ｊ）のうちＺ軸方向の位置を受け付ける。
【０１８８】
機械学習装置４００は、学習部４５と、状態観測部４１とを備えている。状態観測部４１は、ＦＢ位置（ｊ）およびトレランス値（ｍ）を状態変数（ｉ）として観測する。学習部４５は、ＦＢ位置（ｊ）およびトレランス値（ｍ）の状態変数（ｉ）に基づいて作成される訓練データセットに従って、行動（ｎ）、すなわち次回に決定するトレランス値（ｍ）を学習する。
【０１８９】
学習部４５が用いる学習アルゴリズムはどのようなものを用いてもよい。一例として、強化学習（Reinforcement  Learning）を適用した場合について説明する。強化学習は、ある環境内におけるエージェント（行動主体）が、現在の状態を観測し、取るべき行動（ｎ）を決定する、というものである。エージェントは行動（ｎ）を選択することで環境から報酬を得て、一連の行動を通じて報酬が最も多く得られるような方策を学習する。強化学習の代表的な手法として、Ｑ学習（Ｑ−learning）やＴＤ学習（ＴＤ−learning）が知られている。例えば、Ｑ学習の場合、行動価値関数Ｑ（ｓ，ａ）の一般的な更新式（行動価値テーブル）は式（１）で表される。
【０１９０】
【数１】
0006740483.tif 000002
【０１９１】
式（１）において、ｓtは時刻ｔにおける環境を表し、ａtは時刻ｔにおける行動を表す。行動ａtにより、環境はｓt+1に変わる。ｒt+1はその環境の変化によってもらえる報酬を表し、γは割引率を表し、αは学習係数を表す。Ｑ学習を適用した場合、次回のトレランス値が行動ａtとなる。
【０１９２】
式（１）で表される更新式は、時刻ｔ＋１における最良の行動ａの行動価値が、時刻ｔにおいて実行された行動ａの行動価値Ｑよりも大きければ、行動価値Ｑを大きくし、逆の場合は、行動価値Ｑを小さくする。換言すれば、時刻ｔにおける行動ａの行動価値Ｑを、時刻ｔ＋１における最良の行動価値に近づけるように、行動価値関数Ｑ（ｓ，ａ）を更新する。それにより、或る環境における最良の行動価値が、それ以前の環境における行動価値に順次伝播していくようになる。
【０１９３】
学習部４５は、報酬計算部４２と、関数更新部４３とを備えている。報酬計算部４２は、状態変数（ｉ）である、トレランス値（ｍ）およびＦＢ位置（ｊ）に基づいて、報酬（ｋ）を計算する。報酬計算部４２は、例えば、トレランス値（ｍ）に対応する特定通過点Ｐ０の位置と、実際の特定通過点Ｐ０であるＦＢ位置（ｊ）との差が小さい場合には報酬（ｋ）を増大させる（例えば「１」の報酬を与える）。他方、報酬計算部４２は、トレランス値（ｍ）とＦＢ位置（ｊ）との差が大きい場合には報酬（ｋ）を低減する（例えば「−１」の報酬を与える）。報酬計算部４２は、トレランス値（ｍ）とＦＢ位置（ｊ）との差が小さいほど大きな報酬を与え、差が大きいほど小さな報酬を与えてもよい。トレランス値（ｍ）およびＦＢ位置（ｊ）は、公知の方法に従って抽出される。トレランス値（ｍ）とＦＢ位置（ｊ）との差が「０」のときは、最大報酬とする。
【０１９４】
関数更新部４３は、報酬計算部４２によって計算される報酬に従って、行動（ｎ）（次回のトレランス値）を決定するための関数を更新する。例えばＱ学習の場合、関数更新部４３は、式（１）で表される行動価値関数Ｑ（ｓt，ａt）を、次回のトレランス値（ｍ）を決定するための関数として用いる。例えば、学習部４５は、報酬が最大となる、トレランス値（ｍ）とＦＢ位置（ｊ）との差が「０」となる次回のトレランス値（ｍ）を決定する。
【０１９５】
以上から次回のトレランス値（ｍ）が決定され、報酬が最大となる次回のトレランス値（ｍ）となるよう判定条件を変更するのみで、他の制御方法は実施の形態１から４と同じでよい。
【０１９６】
なお、機械学習装置４００は、制御演算部２Ｙの外部に配置されてもよい。また、実施の形態５では、強化学習を利用して機械学習する場合について説明したが、他の公知の方法、例えばニューラルネットワーク、遺伝的プログラミング、機能論理プログラミング、サポートベクターマシンなどに従って機械学習を実行してもよい。
【０１９７】
このように実施の形態５によれば、機械学習装置４００が、現状のトレランス値（ｍ）およびＦＢ位置（ｊ）に基づいて、適切なトレランス値（ｍ）を学習するので、低周波振動切削のトレランス加工時の加工精度を向上させることができる。
【０１９８】
ここで、数値制御装置１Ｘ，１Ｙが備える制御演算部２Ｘ，２Ｙのハードウェア構成について説明する。図２３は、実施の形態１から５にかかる制御演算部のハードウェア構成例を示す図である。なお、制御演算部２Ｘ，２Ｙは、同様のハードウェア構成を有しているので、ここでは制御演算部２Ｙのハードウェア構成について説明する。
【０１９９】
制御演算部２Ｙは、図２３に示したすなわちプロセッサ３０１およびメモリ３０２により実現することができる。プロセッサ３０１の例は、ＣＰＵ（Central  Processing  Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサ、ＤＳＰ（Digital  Signal  Processor）ともいう）またはシステムＬＳＩ（Large  Scale  Integration）である。メモリ３０２の例は、ＲＡＭ（Random  Access  Memory）またはＲＯＭ（Read  Only  Memory）などである。
【０２００】
制御演算部２Ｙは、プロセッサ３０１が、メモリ３０２で記憶されている、制御演算部２Ｙの動作を実行するためのプログラムを読み出して実行することにより実現される。また、このプログラムは、制御演算部２Ｙの手順または方法をコンピュータに実行させるものであるともいえる。メモリ３０２は、プロセッサ３０１が各種処理を実行する際の一時メモリにも使用される。
【０２０１】
プロセッサ３０１が実行するプログラムは、コンピュータで実行可能な、データ処理を行うための複数の命令を含むコンピュータ読取り可能かつ非遷移的な（non-transitory）記録媒体を有するコンピュータプログラムプロダクトであってもよい。プロセッサ３０１が実行するプログラムは、複数の命令がデータ処理を行うことをコンピュータに実行させる。
【０２０２】
また、制御演算部２Ｙを専用のハードウェアで実現してもよい。また、制御演算部２Ｙの機能について、一部を専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。
【０２０３】
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
【符号の説明】
【０２０４】
１Ｘ，１Ｙ  数値制御装置、２Ｘ，２Ｙ  制御演算部、３  入力操作部、４  表示部、１１  振動指令解析部、１２  移動指令解析部、２１  指令移動量算出部、２２  振動移動量算出部、２３  トレランス値設定部、２４  波形生成部、２５  振動補正部、２６  トレランス検出部、３４  記憶部、３６  ＰＬＣ、３７  解析処理部、３８Ｘ，３８Ｙ  補間処理部、３９  加減速処理部、４０  軸データ出力部、４１  状態観測部、４２  報酬計算部、４３  関数更新部、４５  学習部、４６  軸データ入出力部、５１Ｘ，５１Ｚ，５２Ｘ，５２Ｚ，５３Ｘ，５３ＸＺ，５３Ｚ，５４Ｘ，５４ＸＺ，５４Ｚ，５５Ｘ，５５Ｚ  振動波形、６０  主軸、６１Ｘ，６１Ｚ  駆動軸、６５Ａ  刃物台、６６Ａ  工具、７０  加工ワーク、７１  トレランス段階情報、９０  駆動部、９１  Ｘ軸サーボ制御部、９２  Ｚ軸サーボ制御部、１０１，１０２  加工プログラム、１１０  工作機械、３４１  パラメータ記憶エリア、３４３  加工プログラム記憶エリア、３４４  表示データ記憶エリア、３４５  共有エリア、４００  機械学習装置、Ｐ０  特定通過点、Ｐ１〜Ｐ４  位置、Ｒ１〜Ｒ３，Ｒ１１，Ｒ１２  移動経路。
【要約】
加工ワーク（７０）の回転軸である主軸（６０）と、加工ワーク（７０）を振動切削加工するための工具（６６Ａ）をＸ軸方向に駆動する駆動軸（６１Ｘ）と、工具（６６Ａ）または加工ワーク（７０）をＺ軸方向に駆動する駆動軸（６１Ｚ）と、を制御する数値制御装置（１Ｘ）であって、加工ワーク（７０）を振動切削加工するための加工プログラムを記憶する記憶部（３４）と、加工ワーク（７０）へのコーナ加工時の許容誤差であるトレランス値に基づいて、振動切削加工の際に工具（６６Ａ）が通過する特定点を算出し、特定点を通過する工具（６６Ａ）の移動経路を示す工具（６６Ａ）の振動波形を生成する制御演算部（２Ｘ）と、を有し、制御演算部（２Ｘ）は、加工プログラムおよび振動波形に従って、工具（６６Ａ）の移動および振動を制御する。【図１】
0006740483.tif 000003
【図２】
0006740483.tif 000004
【図３】
0006740483.tif 000005
【図４】
0006740483.tif 000006
【図５】
0006740483.tif 000007
【図６】
0006740483.tif 000008
【図７】
0006740483.tif 000009
【図８】
0006740483.tif 000010
【図９】
0006740483.tif 000011
【図１０】
0006740483.tif 000012
【図１１】
0006740483.tif 000013
【図１２】
0006740483.tif 000014
【図１３】
0006740483.tif 000015
【図１４】
0006740483.tif 000016
【図１５】
0006740483.tif 000017
【図１６】
0006740483.tif 000018
【図１７】
0006740483.tif 000019
【図１８】
0006740483.tif 000020
【図１９】
0006740483.tif 000021
【図２０】
0006740483.tif 000022
【図２１】
0006740483.tif 000023
【図２２】
0006740483.tif 000024
【図２３】
0006740483.tif 000025