以下に、本発明の実施の形態にかかる数値制御装置を図面に基づいて詳細に説明する。なお、これらの実施の形態によりこの発明が限定されるものではない。
実施の形態1.
図1は、実施の形態1にかかる数値制御装置の構成例を示す図である。図2は、実施の形態1にかかる工作機械の構成を示す図である。図2では、紙面の横方向がZ軸方向であり、紙面の縦方向がX軸方向である。そして、X1軸およびX2軸は、X軸に平行な軸であり、Y1軸およびY2軸は、Y軸に平行な軸であり、Z1軸およびZ2軸は、Z軸に平行な軸である。
数値制御(NC:Numerical Control)装置1Xは、旋盤加工を行う工作機械110に対して、工具66A,66Bを振動させながらの加工である低周波振動切削の制御を実行するコンピュータである。以下の説明では低周波振動を単に振動という場合がある。
数値制御装置1Xは、第1の駆動軸を含む1軸以上の駆動軸によって、第1の工具と加工対象物である加工ワーク70とを相対的に移動させ、さらに第2の駆動軸を含む1軸以上の駆動軸によって、第2の工具と加工ワーク70とを相対的に移動させながら、加工ワーク70の加工を制御する。すなわち、数値制御装置1Xは、第1の工具または加工ワーク70を移動させる第1の駆動軸と、第2の工具または加工ワーク70を移動させる第2の駆動軸とを有しており、第1の工具および第2の工具によって同時に加工ワーク70を振動切削する。実施の形態1では、数値制御装置1Xが、2軸の駆動軸に対して振動切削を行うので、振動切削を実現するための制約条件に従うよう、各駆動軸の振動または加工ワーク70の回転を制御する。
数値制御装置1Xは、加工ワーク70の回転軸である1つの主軸60と、第1の工具である工具66Aを移動させる第1の駆動軸と、第2の工具である工具66Bを移動させる第2の駆動軸と、を備えた工作機械110を制御する。加工対象物である加工ワーク70は、工作機械110によって加工される被加工物である。以下では、第1の駆動軸が第1軸61Aであり、第2の駆動軸が第2軸61Bである場合について説明する。なお、図2では、主軸60として主軸60の中心線を図示している。
数値制御装置1Xは、制御演算部2Xと、入力操作部3と、表示部4と、PLC(Programmable Logic Controller:プログラマブルロジックコントローラ)36を操作するための機械操作盤などのPLC操作部5とを有する。図1には、工作機械110の構成要素である駆動部90が示されている。
駆動部90は、工作機械110が備える第1系統の刃物台65A、第2系統の刃物台65Bなどを駆動させる。駆動部90は、加工ワーク70を回転させながら、2つの工具66A,66Bを駆動する駆動機構である。駆動部90は、工具66AをX1軸方向、および第1軸61Aの軸方向であるZ1軸方向に沿って移動させ、工具66BをX2軸方向、および第2軸61Bの軸方向であるZ2軸方向に沿って移動させる。実施の形態1では、工具66Aの振動方向が第1軸61Aの軸方向であり、工具66Bの振動方向が第2軸61Bの軸方向である場合について説明する。なお、軸方向は装置構成によるので、軸方向は、上記方向に限定されない。
駆動部90は、数値制御装置1X上で規定された各軸方向に工具66A,66Bを移動させるサーボモータ901〜904と、サーボモータ901〜904の位置および速度を検出する検出器97〜100とを備えている。また、駆動部90は、数値制御装置1Xからの指令に基づいて、サーボモータ901〜904を制御する各軸方向のサーボ制御部を備えている。各軸方向のサーボ制御部は、検出器97〜100からの位置および速度に基づいて、サーボモータ901〜904へのフィードバック制御を行う。
サーボ制御部のうちの、X1軸サーボ制御部91は、サーボモータ901を制御することによって工具66AのX1軸方向の動作を制御する。Z1軸サーボ制御部92は、サーボモータ902を制御することによって工具66AのZ1軸方向の動作を制御する。X2軸サーボ制御部93は、サーボモータ903を制御することによって工具66BのX2軸方向の動作を制御する。Z2軸サーボ制御部94は、サーボモータ904を制御することによって工具66BのZ2軸方向の動作を制御する。なお、工作機械110が3つの刃物台を備える場合、駆動部90は、さらにX軸方向に平行なX3軸方向の動作を制御するX3軸サーボ制御部、およびZ軸方向に平行なZ3軸方向の動作を制御するZ3軸サーボ制御部を備える。この場合、X3軸サーボ制御部は、検出器を備えた1つのサーボモータを制御し、Z3軸サーボ制御部は、検出器を備えた1つのサーボモータを制御する。
また、駆動部90は、加工ワーク70を回転させるための主軸60を回転させる主軸モータ911と、主軸モータ911の位置および回転数を検出する検出器211とを備えている。検出器211が検出する回転数は、主軸モータ911の回転数に対応している。
また、駆動部90は、数値制御装置1Xからの指令に基づいて、主軸モータ911を制御する主軸サーボ制御部200を備えている。主軸サーボ制御部200は、検出器211からの位置および速度に基づいて、主軸モータ911へのフィードバック制御を行う。実施の形態1では、単位時間あたりの主軸60の回転の回数を主軸回転数という。主軸回転数は、例えば、1分間あたりの主軸60の回転数である。すなわち、主軸回転数は主軸回転速度に対応している。
なお、工作機械110が2つの加工ワーク70を同時に加工する場合には、駆動部90は、主軸モータ911と、検出器211と、主軸サーボ制御部200とを2組備える。
入力操作部3は、制御演算部2Xに情報を入力する手段である。入力操作部3は、キーボード、ボタンまたはマウスなどの入力手段によって構成され、ユーザによる数値制御装置1Xに対するコマンドなどの入力、または加工プログラムもしくはパラメータなどを受付けて制御演算部2Xに入力する。表示部4は、液晶表示装置などの表示手段によって構成され、制御演算部2Xによって処理された情報を表示画面に表示する。PLC操作部5は、ユーザによる操作を受付けて、操作に対応する指示をPLC36に送る。
制御部である制御演算部2Xは、入力制御部32と、データ設定部33と、記憶部34と、画面処理部31と、解析処理部37と、制御信号処理部35と、PLC36と、補間処理部38Xと、加減速処理部39と、軸データ出力部40と、を有する。なお、PLC36は、制御演算部2Xの外部に配置されてもよい。
記憶部34は、パラメータ記憶エリア341、加工プログラム記憶エリア343、表示データ記憶エリア344、および共有エリア345を有している。パラメータ記憶エリア341内には、制御演算部2Xの処理で使用されるパラメータ等が格納される。具体的には、パラメータ記憶エリア341内には、数値制御装置1Xを動作させるための制御パラメータ、サーボパラメータおよび工具データが格納される。加工プログラム記憶エリア343内には、加工ワーク70の加工に用いられる加工プログラムが格納される。実施の形態1の加工プログラムは、工具66A,66Bを振動させる指令である振動指令と、工具66A,66Bを移動させる指令である移動指令とを含んでいる。
表示データ記憶エリア344内には、表示部4で表示される画面表示データが格納される。画面表示データは、表示部4に情報を表示するためのデータである。また、記憶部34には、一時的に使用されるデータを記憶する共有エリア345が設けられている。
画面処理部31は、表示データ記憶エリア344に格納された画面表示データを表示部4に表示させる制御を行う。入力制御部32は、入力操作部3から入力される情報を受付ける。データ設定部33は、入力制御部32で受付けられた情報を記憶部34に記憶させる。すなわち、入力操作部3が受付けた入力情報は、入力制御部32およびデータ設定部33を介して記憶部34に書き込まれる。
制御信号処理部35は、PLC36に接続されており、PLC36から、工作機械110の機械を動作させるリレーなどの信号情報を受付ける。制御信号処理部35は、受付けた信号情報を、記憶部34の共有エリア345に書き込む。これらの信号情報は、加工運転時に補間処理部38Xが参照する。また、制御信号処理部35は、解析処理部37によって共有エリア345に補助指令が出力されると、この補助指令を共有エリア345から読み出してPLC36に送る。補助指令は、数値制御軸である駆動軸を動作させる指令以外の指令である。補助指令の例は、後述するMコードまたはTコードである。
PLC36は、PLC操作部5に対して操作が行われると、この操作に応じた動作を実行する。PLC36は、機械動作が記述されたラダープログラムを格納している。PLC36は、補助指令であるTコードまたはMコードを受付けると、ラダープログラムに従って補助指令に対応する処理を工作機械110に実行する。PLC36は、補助指令に対応する処理を実行した後、加工プログラムの次のブロックを実行させるために、機械制御が完了したことを示す完了信号を制御信号処理部35に送る。
制御演算部2Xでは、制御信号処理部35と、解析処理部37と、補間処理部38Xとは、記憶部34を介して接続されており、記憶部34を介して情報の書き込み、および読み出しを行う。以下の説明では、制御信号処理部35と、解析処理部37と、補間処理部38Xとの間の情報の書き込み、および読み出しを説明する際に記憶部34が介されていることを省略する場合がある。
加工プログラムの選択は、ユーザが入力操作部3で加工プログラム番号を入力することによって行われる。この加工プログラム番号は、入力制御部32およびデータ設定部33を介して共有エリア345に書き込まれる。機械操作盤等のサイクルスタートをトリガとして解析処理部37は、共有エリア345内の選択された加工プログラム番号に対応する加工ワーク70を指定したワーク指定情報を共有エリア345から受付けると、ワーク指定情報に対応する加工プログラムを加工プログラム記憶エリア343内から読み出して、加工プログラムの各ブロック(各行)に対して解析処理を行う。解析処理部37は、例えば、Gコード(軸移動等に関する指令)、Tコード(工具交換指令など)、Sコード(主軸モータ回転数指令)、およびMコード(機械動作指令)を解析する。
解析処理部37は、解析した行にMコードまたはTコードが含まれている場合には、解析結果を共有エリア345および制御信号処理部35を介してPLC36に送る。また、解析処理部37は、解析した行にMコードが含まれている場合には、Mコードを、制御信号処理部35を介してPLC36に送る。PLC36はMコードに対応する機械制御を実行する。実行が完了した場合、制御信号処理部35を介してMコードの完了を示す結果が記憶部34に書き込まれる。補間処理部38Xは記憶部34に書き込まれた実行結果を参照する。
また、解析処理部37は、Gコードが含まれている場合には、共有エリア345を介して解析結果を補間処理部38Xに送る。具体的には、解析処理部37は、Gコードに対応する移動条件を生成して補間処理部38Xに送る。また、解析処理部37は、Sコードで指定された主軸回転数を補間処理部38Xに送る。移動条件は、工具66A,66Bが加工位置を移動させていくための工具送りの条件であり、刃物台65A,65Bを移動させる速度、刃物台65A,65Bを移動させる位置などで示される。例えば、工具66Aの工具送りは、工具66Aを第1軸61Aの軸方向に進ませ、工具66Bの工具送りは、工具66Bを第2軸61Bの軸方向に進ませる。
また、解析処理部37は、振動指令解析部11A,11Bと、移動指令解析部12A,12Bとを有している。振動指令解析部11Aは、第1軸61Aへの振動指令を解析する手段であり、振動指令解析部11Bは、第2軸61Bへの振動指令を解析する手段である。
振動指令解析部11Aは、第1軸61A用の加工プログラム(後述の加工プログラム810Aなど)に含まれる振動指令を解析して第1軸61Aの振動条件を生成し、共有エリア345を介して生成した振動条件を補間処理部38Xに送る。
振動指令解析部11Bは、第2軸61B用の加工プログラム(後述の加工プログラム810Bなど)に含まれる振動指令を解析して第2軸61Bの振動条件を生成し、共有エリア345を介して生成した振動条件を補間処理部38Xに送る。
移動指令解析部12Aは、第1軸61A用の加工プログラムに含まれる移動指令を解析して第1軸61Aの移動条件を生成し、共有エリア345を介して生成した移動条件を補間処理部38Xに送る。
移動指令解析部12Bは、第2軸61B用の加工プログラムに含まれる移動指令を解析して第2軸61Bの移動条件を生成し、共有エリア345を介して生成した移動条件を補間処理部38Xに送る。
すなわち、移動指令解析部12A,12Bは、Gコードに対応する移動条件を生成して補間処理部38Xに送る。移動条件の例は、刃物台の移動速度、刃物台を移動させる位置などである。
第1軸61Aへの振動指令は、第1軸61Aを第1軸61Aの軸方向であるZ1軸方向に振動させる指令であり、第2軸61Bへの振動指令は、第2軸61BをX2軸方向、および第2軸61Bの軸方向であるZ2軸方向に振動させる指令である。振動条件は、振動切削を実行する際の振動の条件である。実施の形態1での振動条件は、振動切削の際の振動回数である。第1軸61Aの振動回数は、主軸60が1回転する間の第1軸61Aの振動回数であり、第2軸61Bの振動回数は、主軸60が1回転する間の第2軸61Bの振動回数である。換言すると、第1軸61Aの振動回数および第2軸61Bの振動回数は、それぞれ、主軸60が1回転する時間を基準とした振動の周波数に対応している。したがって、実施の形態1での振動条件は、振動切削の際の振動の周波数であるともいえる。
工作機械110では、第1軸61Aが振動するので、第1軸61Aの振動回数は第1軸61A側の工具66Aの振動回数に対応する。また、工作機械110では、第2軸61Bが振動するので、第2軸61Bの振動回数は第2軸61B側の工具66Bの振動回数に対応する。工作機械110では、第1軸61Aの振動回数が第1の振動回数であり、第2軸61Bの振動回数が第2の振動回数である。
補間処理部38Xは、指令移動量算出部21A,21Bと、振動移動量算出部22A,22Bと、判定部23と、振動回数算出部24と、合成部27とを備えている。補間処理部38Xの振動回数算出部24は、主軸回転数に、第1軸61Aの振動および第2軸61Bの振動を同期および追従させるため、主軸回転数、第1軸61Aの振動回数、および第2軸61Bの振動回数の少なくとも1つを変更する。
例えば、補間処理部38Xは、第1軸61Aの振動回数および第2軸61Bの振動回数を変更するべきかを判定し、変更すると判定した軸の振動回数を主軸回転数に応じた振動回数に変更する。この場合において、補間処理部38Xは、各軸の振動が主軸回転数に、同期および追従できるよう振動回数を変更する。
第1軸61Aの振動と主軸回転数とを同期させる処理は、主軸60が1回転する間の第1軸61Aの振動回数が一定の振動回数になるよう、第1軸61Aの振動回数を調整する処理である。また、第2軸61Bの振動と主軸回転数とを同期させる処理は、主軸60が1回転する間の第2軸61Bの振動回数が一定の振動回数になるよう、第2軸61Bの振動回数を調整する処理である。換言すると、第1軸61Aの振動と主軸回転数とを同期させる処理は、第1軸61Aの振動周波数(振動数)と主軸回転数とを同期させる処理であり、第2軸61Bの振動と主軸回転数とを同期させる処理は、第2軸61Bの振動周波数と主軸回転数とを同期させる処理である。
なお、実施の形態1では、第1軸61Aの振動を振動回数で定義するので、第1軸61Aの振動と主軸回転数との同期を、第1軸61Aの振動回数と主軸回転数との同期という場合がある。また、実施の形態1では、第2軸61Bの振動を振動回数で定義するので、第2軸61Bの振動と主軸回転数との同期を、第2軸61Bの振動回数と主軸回転数との同期という場合がある。
なお、第1軸61Aにおける一定の振動回数は、可変であり、第1軸61Aおよび第2軸61Bによる振動切削に応じた回数を選択することができる。また、第2軸61Bにおける一定の振動回数は、可変であり、第1軸61Aおよび第2軸61Bによる振動切削に応じた回数を選択することができる。
補間処理部38Xは、主軸回転数、第1軸61Aの振動回数、および第2軸61Bの振動回数を共有エリア345から読み出す。
指令移動量算出部21A,21Bは、解析処理部37から解析結果である移動条件を受け取り、移動条件に対する補間処理を行い、補間処理の結果に対応する単位時間当たりの指令移動量を合成部27に送る。具体的には、指令移動量算出部21Aは、解析処理部37が解析した第1軸61Aの移動条件に基づいて、刃物台65Aを単位時間で移動させる指令移動量を算出して合成部27に送る。また、指令移動量算出部21Bは、解析処理部37が解析した第2軸61Bの移動条件に基づいて、刃物台65Bを単位時間で移動させる指令移動量を算出して合成部27に送る。
判定部23は、主軸回転数、第1軸61Aの振動回数、および第2軸61Bの振動回数に基づいて、第1軸61Aの振動回数と第2軸61Bの振動回数との何れを調整するかを判定する。なお、判定部23は、振動回数の代わりに周波数を取得した場合には、周波数に基づいて振動回数を算出しておく。振動切削において切屑を効率良く分断するには、主軸60が1回転する間の工具66A,66Bの振動回数は、自然数回でないことが必要であり、(0.5+N)回(Nは0または自然数)近辺が望ましい。ここで、切屑を効率よく分断するとは、切屑の長さにばらつきのある分断ではなく、切屑を平均的に短く分断することを言う。
すなわち、切屑をできるだけ平均的に短く分断するためには、工具66A,66Bの振動回数は、0.5と、0または自然数と、を足し合わせた数の近辺であることが望ましい。以下、主軸60が1回転する間の工具66A,66Bの振動回数が(0.5+N)回となる振動回数を、特定振動回数という。主軸回転数に同期する振動回数の例が、特定振動回数である。主軸60が1回転する間の工具66A,66Bの振動回数が(0.5+N)回となる振動回数である場合を、工具の振動回数と主軸が同期しているという。
ただし、特定振動回数近辺においても、切屑を分断しながらの振動切削は可能である。特定振動回数は(0.5+N)回近辺であればよく、多少のずれが合っても構わない。(0.5+N)回からずれていた場合、切屑の長さに多少のばらつきが生じるが、たとえば、切屑が分断できなかったり、切屑の長さに±50%等のばらつきが生じたりするといった実質的な影響がなければよい。つまり、第1軸61Aと第2軸61Bの振動回数を、特定振動回数に基づいて決定すればよい。
判定部23は、主軸回転数に追従できていない、または特定振動回数となっていない駆動軸の振動回数を調整対象に選択する。判定部23は、主軸回転数に追従できる振動回数から大きく離れている方の駆動軸を選択してもよいし、特定振動回数から大きく離れている方の駆動軸を選択してもよい。
例えば、第1軸61Aの振動回数が1.5回である場合、1.5=(0.5+1)であるので、第1軸61Aの振動回数は、特定振動回数である。また、第2軸61Bの振動回数が6.5回である場合、6.5=(0.5+6)であるので、第2軸61Bの振動回数も、特定振動回数である。また、第1軸61Aの周波数が、主軸回転数に追従可能な周波数(例えば、25Hz)であり、第2軸61Bの周波数が、主軸回転数に追従可能な周波数(例えば、100Hz)を超えているとする。この場合、判定部23は、第2軸61Bの振動回数を調整対象に選択する。判定部23は、判定結果を振動回数算出部24に送る。また、判定部23は、主軸回転数を加減速処理部39に送る。
振動回数算出部24は、振動の周波数および主軸回転数に基づいて、振動回数が特定振動回数となり、且つ主軸回転数に追従できるよう、駆動軸の振動回数を調整する。
主軸回転数に追従できる特定振動回数が、0.5回または1.5回であるとする。すなわち、主軸回転数に追従できる振動の周波数が、特定振動回数の0.5回または1.5回に対応する周波数であるとする。
判定部23で第2軸61Bが選択された場合、振動回数算出部24は、0.5回または1.5回を第2軸61Bの振動回数に設定する。振動回数算出部24は、例えば、振動回数の複数の候補のうち、当初の振動回数に最も近いものを第2軸61Bの振動回数に設定する。すなわち、振動回数算出部24は、振動回数の変更前後の差が最小となる候補を選択して振動回数を変更する。
また、振動回数算出部24は、調整後の振動回数と、調整をしなかった振動回数とを、それぞれ第1軸61Aまたは第2軸61Bに対応付けして、振動移動量算出部22Bに送る。ここでは、第2軸61Bの振動回数が調整される場合について説明する。
振動移動量算出部22Aは、振動回数算出部24から送られてきた第1軸61Aの振動回数または、共有エリア345内の第1軸61Aの振動条件に基づいて、第1軸61Aの振動移動量を算出する。第1軸61Aの振動移動量は、工具66Aを振動させるための単位時間での移動量である。振動移動量算出部22Aは、算出した第1軸61Aの振動移動量を合成部27に送る。
振動移動量算出部22Bは、振動回数算出部24から送られてきた第2軸61Bの振動回数または、共有エリア345内の第2軸61Bの振動条件に基づいて、第2軸61Bの振動移動量を算出する。第2軸61Bの振動移動量は、工具66Bを振動させるための単位時間での移動量である。振動移動量算出部22Bは、算出した第2軸61Bの振動移動量を合成部27に送る。
工具66A,66Bの移動は、振動切削のための移動と、加工ワーク70に対して加工を進める方向(切削方向)への移動と、を足し合わせたものである。実施の形態1では、切削方向は図2におけるZ軸方向である。したがって、合成部27は、振動切削のための振動移動量と、加工ワーク70に対して加工を進めるための切削方向への移動量とを足し合わせる。
具体的には、合成部27は、指令移動量算出部21Aから送られてきた指令移動量と、振動移動量算出部22Aから送られてきた振動移動量とを合成することによって合成移動量を生成する。なお、振動移動量は、波形で示されてもよい。この場合、合成移動量も波形で示されてもよい。合成部27は、補間処理の結果である合成移動量を加減速処理部39に送る。具体的には、合成部27は、第1軸61A用の合成移動量、および第2軸61B用の合成移動量を加減速処理部39に送る。
加減速処理部39は、補間処理部38Xから供給された補間処理の結果に対して、加速度をなめらかに変化させるための加減速処理を行う。加減速処理部39は、移動の開始および停止の際の加減速処理を行う。具体的には、加減速処理部39は、第1軸61A用の合成移動量に基づいて、第1軸61Aへの移動指令を生成し、第2軸61B用の合成移動量に基づいて、第2軸61Bへの移動指令を生成する。加減速処理部39が処理する移動指令は、単位時間あたりの速度指令である。加減速処理部39は、X1軸、X2軸、Z1軸およびZ2軸に対して加減速指令を生成する。
加減速処理部39は、加減速処理の処理結果である速度指令を軸データ出力部40に送る。なお、加減速処理部39は、主軸回転数に対しては加減速処理を行わない。加減速処理部39は、主軸回転数に対応する回転数指令を軸データ出力部40に送る。加減速処理部39が生成する回転数指令は、ステップ指令である。
軸データ出力部40は、速度指令を駆動部90に出力する。具体的には、軸データ出力部40は、X1軸への速度指令をX1軸サーボ制御部91に出力し、Z1軸への速度指令をZ1軸サーボ制御部92に出力する。また、軸データ出力部40は、X2軸への速度指令をX2軸サーボ制御部93に出力し、Z2軸への速度指令をZ2軸サーボ制御部94に出力する。また、軸データ出力部40は、主軸60への回転数指令を主軸サーボ制御部200に出力する。これにより、X1軸サーボ制御部91、Z1軸サーボ制御部92、X2軸サーボ制御部93、Z2軸サーボ制御部94、主軸サーボ制御部200は、工具66AのX1軸方向およびZ1軸方向の動作と、工具66BのX2軸方向およびZ2軸方向の動作と、主軸60の回転動作とを制御する。
ここで、数値制御装置1Xによる加工制御の動作手順の概略について説明する。工作機械110による加工が開始される際には、PLC36が制御信号処理部35へサイクルスタート信号を出力し、制御信号処理部35が、サイクルスタート信号を補間処理部38Xに出力する。これにより、補間処理部38Xが、解析処理部37を起動する。
この後、解析処理部37が加工プログラムを1ブロック毎に読み込んで解析し、解析結果である振動条件、移動条件および主軸回転数を共有エリア345に格納する。そして、補間処理部38Xが、解析処理部37の解析結果に基づいて、第1軸61A用の単位時間あたりの合成移動量および第2軸61B用の単位時間あたりの合成移動量を算出して加減速処理部39に送る。
これにより、加減速処理部39は、補間処理部38Xからの合成移動量に基づいて、各軸への加減速移動指令を生成する。この移動指令は、軸データ出力部40から駆動部90に出力され、駆動部90が移動指令に従って各軸の動作を制御する。
図2に示すように、実施の形態1にかかる工作機械110は、刃物台65Aに第1軸61Aがあり、刃物台65Bに第2軸61Bがある1スピンドル2刃物台の旋盤である。1スピンドル2刃物台の旋盤は、1つの主軸と2つの刃物台を具備した旋盤である。刃物台65A,65Bは、タレットともよばれる。工作機械110の一例は、タレット旋盤である。
工作機械110は、第1スピンドル75を備えた主軸台を有している。第1スピンドル75は、加工ワーク70が取り付けられた状態で回転し、これにより加工ワーク70を回転させる。第1スピンドル75による加工ワーク70の回転軸が、主軸台に設けられた主軸60である。
工作機械110は、第1の刃物台である刃物台65Aと第2の刃物台である刃物台65Bとを備えており、刃物台65Aに第1軸61Aが設けられ、刃物台65Bに第2軸61Bが設けられている。刃物台65Aは、X1軸方向およびZ1軸方向に移動可能となっており、刃物台65Bは、X2軸方向およびZ2軸方向に移動可能となっている。工作機械110では、Z1軸が第1軸61Aであり、Z2軸が第2軸61Bである。
刃物台65Aは、第1軸61A側の刃物台であり、刃物台65Bは、第2軸61B側の刃物台である。刃物台65A,65Bは、旋回式の刃物台である。刃物台65Aは、複数の工具66Aを取り付け可能となっており、工具66Aを旋回させることで使用する工具66Aを切り替える。同様に、刃物台65Bは、複数の工具66Bを取り付け可能となっており、工具66Bを旋回させることで使用する工具66Bを切り替える。
刃物台65AがZ1軸方向に振動することによって、工具66Aが加工ワーク70の振動切削加工を行う。刃物台65BがZ2軸方向に振動することによって、工具66Bが加工ワーク70の振動切削加工を行う。なお、実施の形態1では、説明の便宜上、刃物台65Aの振動を工具66Aの振動として説明する場合がある。また、刃物台65Bの振動を工具66Bの振動として説明する場合がある。
実施の形態1における工作機械110の振動条件は、以下の(L1−1)から(L1−2)とする。尚、この振動条件は、加工対象物の加工仕上がり精度がよく、さらに切屑を細かく分断するための条件の一例である。
(L1−1)主軸60が1回転する間の工具66A,66Bの振動回数は、第1軸61A側と第2軸61B側とで同じとする。尚、第1軸61A側と第2軸61B側とは、ともに振動切削中の主軸回転数に同期した振動回数で動作する。
(L1−2)振動の振幅は、第1軸61A側と第2軸61B側とで同じとする。
(L1−1)および(L1−2)では、振動回数および振幅が、第1軸61A側と第2軸61B側とで同じとしたが、異なっていてもよい。これは、工作機械110では、第1軸61Aの振動が第2軸61Bに伝わらないからである。
図3は、実施の形態1にかかる数値制御装置が用いる加工プログラムの第1例を示す図である。加工プログラム81Pは、数値制御装置1Xが工作機械110を制御する際に用いられる。このため、加工プログラム81Pは、第1軸61A用の加工プログラム810Aと、第2軸61B用の加工プログラム810Bとを含んでいる。
加工プログラム81P内の主軸回転数指令であるM3 S1は、主軸60への主軸回転数の指令である。M3 S1=3000は、主軸60を1分間あたり3000回転させる指令である。また、G0は位置決め指令であり、G165は低周波振動指令であり、G1は移動指令である。G165で規定される「A」は振動の振幅であり、「D」は主軸60が1回転する間の振動回数である。
加工プログラム81Pでは、加工プログラム810AにおけるG0によって工具66Aの位置決めが行われ、加工プログラム810BにおけるG0によって工具66Bの位置決めが行われる。
また、第1軸61A用の加工プログラム810Aにおいて、G165が用いられる場合、G165で指定された振幅および振動回数で工具66AがZ1軸方向に振動する。ここでは、工具66Aに対し、振幅を0.2mm、主軸60が1回転する間の振動回数を0.5回で振動させる場合を示している。
また、第2軸61B用の加工プログラム810Bにおいて、G165が用いられる場合、G165で指定された振幅および振動回数で工具66Bが振動する。ここでは、工具66Bに対し、振幅を0.3mm、主軸60が1回転する間の振動回数を6.5回で振動させる場合を示している。
加工プログラム810Aでは、振動回数が0.5回であり、加工プログラム810Bでは、振動回数が6.5回である。前述したように、振動回数が6.5回の場合の振動の周波数は、主軸回転数に追従可能な、例えば100Hzよりも大きいので、判定部23は、第2軸61Bの振動回数を調整対象に選択する。振動回数算出部24は、主軸回転数に追従できる特定振動回数の中から、当初の加工プログラム810Bで指定された振動回数に最も近い1.5回を第2軸61Bの振動回数に設定する。
数値制御装置1Xは、第2軸61Bの振動回数を1.5回に変更した加工プログラムを実行した場合と同様の処理を実行する。加工プログラム81Pの第2軸61Bの振動回数を1.5回に変更した加工プログラムが加工プログラム81Qである。加工プログラム81Qは、加工プログラム810Aと、加工プログラム811Bとを含んでいる。加工プログラム811Bは、加工プログラム810Bに対して、第2軸61Bの振動回数が変更されたものである。なお、数値制御装置1Xは、実際に加工プログラム81Pを加工プログラム81Qに書き換えて、加工プログラム81Qを実行してもよい。
つぎに、工作機械110を制御する際の処理手順について説明する。図4は、実施の形態1にかかる数値制御装置の処理手順を示すフローチャートである。図4は、数値制御装置1Xによる工作機械110への制御処理手順を示している。
解析処理部37は、加工プログラム内の振動指令が、1つの主軸に対する2軸以上の振動指令であるか否かを判定する(ステップS10)。すなわち、解析処理部37は、加工プログラム内の振動指令が、1つの主軸と2軸以上の駆動軸とを有した工作機械への振動指令であるか否かを判定する。
振動指令が、1つの主軸に対する2軸以上の振動指令でない場合(ステップS10、No)、数値制御装置1Xは、振動回数を変更することなく、加工プログラムに従った加工制御を実行する。
振動指令が、1つの主軸に対する2軸以上の振動指令である場合(ステップS10、Yes)、判定部23は、主軸回転数を共有エリア345から読み出して取得する(ステップS20)。また、判定部23は、振動条件である振動回数を、共有エリア345から読み出して取得する(ステップS30)。具体的には、判定部23は、第1軸61Aの振動回数および第2軸61Bの振動回数を取得する。
判定部23は、主軸回転数および振動回数に基づいて、第1軸61Aおよび第2軸61Bの何れの振動回数を変更するかを判定する(ステップS40)。このとき、判定部23は、主軸回転数および振動回数に基づいて、振動の周波数が主軸回転数に追従するか否かを判定するとともに、振動回数が主軸回転数に同期するか否かを判定する。
判定部23は、判定結果を振動回数算出部24に送る。振動回数算出部24は、振動回数を変更すると判定された駆動軸の振動回数を主軸回転数に追従かつ同期できる特定振動回数に変更する(ステップS50)。
振動移動量算出部22Aは、主軸回転数と第1軸61Aの振動回数とに基づいて、第1軸61Aの振動移動量を算出し、振動移動量算出部22Bは、主軸回転数と第2軸61Bの振動回数とに基づいて、第2軸61Bの振動移動量を算出する。
また、指令移動量算出部21Aは、解析処理部37からの移動条件に基づいて、第1軸61Aの指令移動量を算出し、指令移動量算出部21Bは、解析処理部37からの移動条件に基づいて、第2軸61Bの指令移動量を算出する。
合成部27は、指令移動量と振動移動量とを合成する(ステップS60)。具体的には、合成部27は、第1軸61Aの指令移動量と、第1軸61Aの振動移動量とを合成することによって第1軸61Aの合成移動量を生成し、第2軸61Bの指令移動量と、第2軸61Bの振動移動量とを合成することによって、第2軸61Bの合成移動量を生成する。この後、制御演算部2Xは、第1軸61Aの合成移動量を用いて第1軸61Aを制御し、第2軸61Bの合成移動量を用いて、第2軸61Bを制御する。
なお、数値制御装置1Xは、第1軸61Aの振動回数および第2軸61Bの振動回数の両方を変更してもよい。第1軸61Aの振動回数および第2軸61Bの振動回数の両方が変更される場合の加工プログラムについて説明する。
図5は、実施の形態1にかかる数値制御装置が用いる加工プログラムの第2例を示す図である。加工プログラム82Pは、数値制御装置1Xが工作機械110を制御する際に用いられる。加工プログラム82Pは、第1軸61A用の加工プログラム812Aと、第2軸61B用の加工プログラム812Bとを含んでいる。
加工プログラム812Bは、図3で説明した加工プログラム810Bと同様の加工プログラムである。加工プログラム812Aは、図3で説明した加工プログラム810Aと比較して、G165の振動回数が異なっている。加工プログラム812AにおけるG165の振動回数は5.5回である。
第1軸61Aの振動の周波数および第2軸61Bの振動の周波数が、ともに主軸回転数に追従できていないとする。この場合、振動回数算出部24は、第1軸61Aおよび第2軸61Bの両方の振動回数を変更する。振動回数算出部24は、図3で説明した方法により、第2軸61Bの振動回数を1.5回に変更する。また、第1軸61Aに対し、主軸回転数に追従できる特定振動回数は、0.5回または1.5回である。第1軸61Aの当初の振動回数は、第2軸61Bの当初の振動回数よりも小さい。このため、振動回数算出部24は、振動回数の複数の候補のうち、第2軸61Bに設定した振動回数よりも小さいものを選択する。なお、振動回数算出部24は、振動回数の複数の候補のうち、当初の振動回数に最も近いものを選択してもよい。
数値制御装置1Xは、第1軸61Aの振動回数を0.5回に変更し第2軸61Bの振動回数を1.5回に変更した加工プログラムを実行した場合と同様の処理を実行する。加工プログラム82Pの第1軸61Aの振動回数を0.5回に変更し、第2軸61Bの振動回数を1.5回に変更した加工プログラムが加工プログラム82Qである。加工プログラム82Qは、加工プログラム813Aと加工プログラム813Bとを含んでいる。加工プログラム813Aは、加工プログラム812Aに対して、第1軸61Aの振動回数が変更されたものであり、加工プログラム813Bは、加工プログラム812Bに対して、第2軸61Bの振動回数が変更されたものである。なお、数値制御装置1Xは、実際に加工プログラム82Pを加工プログラム82Qに書き換えて、加工プログラム82Qを実行してもよい。
なお、実施の形態1では、工作機械110が備える工具の駆動軸が2軸である場合について説明したが、工具の駆動軸は3軸以上であってもよい。この場合、振動回数が変更される駆動軸は、1軸であってもよいし、2軸以上であってもよい。
このように、実施の形態1によれば、第1軸61Aの振動回数および第2軸61Bの振動回数が、主軸回転数に同期および追従できるよう、第1軸61Aの振動回数または第2軸61Bの振動回数が変更されるので、工作機械110に対して、複数の駆動軸で振動切削を実行することが可能となる。
実施の形態2.
つぎに、図6から図8を用いてこの発明の実施の形態2について説明する。実施の形態2では、1つの主軸と、複数の駆動軸と、を有した工作機械110に対して、各駆動軸の振動回数が主軸回転数に同期できるよう、主軸回転数を変更する。すなわち、実施の形態1では主軸の回転数を維持し、駆動軸の振動回数を変更したが、実施の形態2では、駆動軸の振動回数を維持し、主軸の回転数を変更する。
図6は、実施の形態2にかかる数値制御装置の構成例を示す図である。図6の各構成要素のうち図1に示す実施の形態1の数値制御装置1Xと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
数値制御装置1Yは、数値制御装置1Xと同様の構成を有したコンピュータであり、工作機械110に対して振動切削を実行させる。数値制御装置1Yは、数値制御装置1Xと比較して、制御演算部2Xの代わりに、制御演算部2Yを備えている。制御演算部2Yは、制御演算部2Xと比較して、補間処理部38Xの代わりに、補間処理部38Yを備えている。
補間処理部38Yは、補間処理部38Xと比較して、振動回数算出部24の代わりに、主軸回転数算出部25を備えている。実施の形態2の判定部23は、第1軸61Aの振動回数および主軸回転数に基づいて、第1軸61Aの振動回数が主軸回転数に同期しているか否かを判定する。判定部23は、第1軸61Aの振動回数に対応する周波数が特定の範囲内である場合に、第1軸61Aの振動回数が主軸回転数に同期していると判定する。また、判定部23は、第2軸61Bの振動回数および主軸回転数に基づいて、第2軸61Bの振動回数が主軸回転数に同期しているか否かを判定する。判定部23は、第2軸61Bの振動回数に対応する周波数が特定の範囲内である場合に、第2軸61Bの振動回数が主軸回転数に同期していると判定する。
主軸回転数算出部25は、第1軸61Aの振動回数および第2軸61Bの振動回数の何れか一方が、主軸回転数に同期していない場合または主軸回転数に追従できない場合に、第1軸61Aの振動回数および第2軸61Bの振動回数が主軸回転数に同期および追従するよう主軸回転数を変更する。主軸回転数算出部25は、第1軸61Aおよび第2軸61Bの振動回数に基づいて、主軸回転数を変更する。
主軸回転数算出部25は、主軸回転数に複数の候補がある場合には、当初の主軸回転数に最も近いものを採用する。主軸回転数算出部25は、主軸回転数を変更した場合には、変更後の主軸回転数を振動移動量算出部22A,22Bおよび加減速処理部39に送る。主軸回転数算出部25は、主軸回転数を変更しなかった場合には、主軸回転数をそのまま振動移動量算出部22A,22Bおよび加減速処理部39に送る。
振動移動量算出部22Aは、主軸回転数と、主軸回転数算出部25から送られてきた第1軸61Aの振動回数とに基づいて、第1軸61Aの振動移動量を算出する。振動移動量算出部22Bは、主軸回転数と、主軸回転数算出部25から送られてきた第2軸61Bの振動回数とに基づいて、第2軸61Bの振動移動量を算出する。補間処理部38Yによるその他の処理は、補間処理部38Xによる処理と同様である。
図7は、実施の形態2にかかる数値制御装置が用いる加工プログラムの例を示す図である。加工プログラム83Pは、数値制御装置1Yが工作機械110を制御する際に用いられる。加工プログラム83Pは、第1軸61A用の加工プログラム814Aと、第2軸61B用の加工プログラム814Bとを含んでいる。
加工プログラム814Aは、図3で説明した加工プログラム810Aと同様の加工プログラムである。加工プログラム814Bは、図3で説明した加工プログラム810Bと比較して、G165の振動回数が異なっている。加工プログラム814BにおけるG165の振動回数は2.5回である。
判定部23は、第1軸61Aの振動回数である1.5回および主軸回転数である3000回転に基づいて、第1軸61Aの振動回数が主軸回転数に同期し且つ追従可能か否かを判定する。ここでは、第1軸61Aの振動回数が主軸回転数に同期し且つ追従可能である。
また、判定部23は、第2軸61Bの振動回数である2.5回および主軸回転数である3000回転に基づいて、第2軸61Bの振動回数が主軸回転数に同期し且つ追従可能か否かを判定する。ここでは、第2軸61Bの振動回数が主軸回転数に同期しているが、主軸回転数に追従できない。すなわち、1分間に主軸3000回転で主軸1回転あたり2.5回の振動回数の振動切削は、工作機械110の機械的構造要因(例えば、イナーシャ等の特性)で、機械装置が振動加工に追従できず切屑が分断できなくなる。換言すると、工具66Bの振動周波数が高くなり過ぎると、工作機械110の構造的な要因によって、工具66Bの振動波形がなまるので、すなわち振動指令に従った理想的な振動波形が実現できなくなるので、工具66BによるM(Mは自然数)回転目の振動波形と(M+1)回転目の振動波形とが重ならなくなる。したがって、主軸回転数を大きくし過ぎると、第2軸61Bの振動回数が主軸回転数に追従できず加工ワーク70の切屑を分断できなくなる。そのため、振動回数が追従可能な主軸回転数を設定する方法を以下説明する。
上述したように、第2軸61Bの振動回数2.5回は、主軸回転数(S1)3000回転に追従できないとする。この場合、第1軸61Aの振動回数および第2軸61Bの振動回数が主軸回転数に追従できるよう主軸回転数を変更する。すなわち、主軸回転数算出部25は、切屑の分断効果を同程度に維持しつつ第2軸61Bの振動回数を主軸回転数に追従させるために、主軸回転数を変更する。まず、主軸回転数算出部25は、第1軸61Aの振動回数に対応する第1の振動周波数f1を算出する。次に、この第1の振動周波数f1を第2軸61Bの第2の振動周波数f2として仮適用する。さらに、主軸回転数算出部25は、第2軸61Bの振動回数2.5回、および第2軸61Bに仮適用した第2の振動周波数f2に基づいて、第2軸61Bの理想的な主軸回転数S2を仮算出する。
この時点で、第1軸61Aに関する主軸回転数S1、振動回数1.5回、第1の振動周波数f1と、第2軸61Bに関する主軸回転数S2、振動回数2.5回、第2の振動周波数f2(=f1)が仮算出される。ここで、第1軸61A及び第2軸61Bに対する主軸60は1軸しか存在しないため、これらの値を用いて主軸回転数を調整していく必要がある。ここで、主軸回転数はS1とS2の間の範囲から選択することによって調整していく。
例えば、主軸回転数算出部25は、第1軸61Aの主軸回転数と、算出した第2軸61Bの主軸回転数と、の平均値(中間値)を算出し、平均値(中間値)を第1軸61Aおよび第2軸61Bの共通の主軸回転数Scとして仮に設定する。主軸回転数Scと第1軸61Aの振動回数1.5回から、第1の振動周波数f1cを再計算し、第1の振動周波数f1cが主軸回転数Scに追従できるかどうかを確認する。また、主軸回転数Scと第2軸62Bの振動回数2.5回から、第2の振動周波数f2cを再計算し、第2の振動周波数f2cが主軸回転数Scに追従できるかどうかを確認する。
第1の振動周波数f1cと第2の振動周波数f2cが主軸回転数Scに追従し、かつ同期している場合には、仮設定していた主軸回転数Scを変更後の主軸回転数として採用する。
図7の例では、第2軸61Bの振動回数2.5回から算出される理想的な主軸回転数S2が1800回転であるとする。この場合、主軸回転数算出部25は、当初の主軸回転数S1である3000回転と、S2である1800回転との平均値(中間値)である2400回転を、まずは共通の主軸回転数Scに仮設定する。主軸回転数Scが2400回である場合に、第1軸61A及び第2軸61Bは当該主軸回転数に追従かつ同期できるので、主軸回転数Scは2400回と決定する。そして、主軸回転数算出部25は、主軸回転数を3000回転から2400回転に変更する。
なお、主軸回転数算出部25は、第1軸61Aの当初の主軸回転数である3000回転で、第2軸61Bが追従可能な場合、当初の主軸回転数を共通の主軸回転数に設定してもよい。
また、主軸回転数S1とS2の間から仮設定した主軸回転数Scに第1軸61Aまたは第2軸61Bの少なくともいずれか一方が追従あるいは同期できない場合には、主軸回転数S1とS2の間から主軸回転数Scを再度仮設定し直し、同様のステップを繰り返す。尚、例えば、第2軸61Bが主軸回転数Scに追従しない場合、主軸回転数ScとS2の間から再度主軸回転数を設定すればよい。また、第1軸61Aが主軸回転数Scに追従しない場合、ScとS1の間から再度主軸回転数を設定すればよい。
例えば主軸回転数Scを2400回転に決定したとすると、数値制御装置1Yは、主軸回転数を2400回転に変更した加工プログラムを実行した場合と同様の処理を実行する。加工プログラム82Pの主軸回転数を2400回転に変更した加工プログラムが加工プログラム83Qである。加工プログラム83Qは、加工プログラム815Aと加工プログラム814Bとを含んでいる。加工プログラム815Aは、加工プログラム814Aに対して、主軸回転数が変更されたものである。なお、数値制御装置1Yは、実際に加工プログラム83Pを加工プログラム83Qに書き換えて、加工プログラム83Qを実行してもよい。
つぎに、数値制御装置1Yが工作機械110を制御する際の処理手順について説明する。図8は、実施の形態2にかかる数値制御装置の処理手順を示すフローチャートである。図8は、数値制御装置1Yによる工作機械110への制御処理手順を示している。なお、図8の処理のうち、図4で説明した処理と同様の処理については、その説明を省略する。
図8におけるステップS110からS130の処理は、図4におけるステップS10からS30の処理と同様である。
判定部23は、主軸回転数および振動回数に基づいて、主軸回転数を変更するかを判定する(ステップS140)。ここでの振動条件は、振動回数である。したがって、ここでの判定部23は、第1軸61Aの振動回数に対応する振動の周波数が、主軸回転数に対して追従可能か否かと、第2軸61Bの振動回数に対応する振動の周波数が、主軸回転数に対して追従可能か否かを判定する。第1軸61Aの周波数または第2軸61Bの周波数が主軸回転数に対して追従可能でない場合、たとえば加工ワーク70の切屑を分断できなくなる場合、判定部23は、主軸回転数を変更すると判定する。
さらに、判定部23は、主軸回転数に対して、第1軸61Aおよび第2軸61Bの振動回数が同期しているか否かを判定する。第1軸61Aの振動回数または第2軸61Bの振動回数が主軸回転数に対して同期していない場合、判定部23は、主軸回転数を変更すると判定する。ここで、同期とは、主軸1回転に対して工具が(0.5+N)回振動することをいう。完全に同期していることが好ましいが、主軸1回転に対する工具の振動回数が(0.5+N)回程度であれば、構わない。
一方、第1軸61Aおよび第2軸61Bが主軸回転数に対して同期し追従可能である場合、判定部23は、主軸回転数を変更しないと判定する。尚、第1軸61Aおよび第2軸61Bが主軸回転数に対して追従不可能である場合のみ、判定部23は、主軸回転数を変更すると判定してもよい。
判定部23は、判定結果を振動回数算出部24に送る。ここでは、判定部23が、主軸回転数を変更すると判定した場合について説明する。主軸回転数算出部25は、主軸回転数および振動回数に基づいて、第1軸61Aおよび第2軸61Bの振動回数に合う主軸回転数を算出する(ステップS150)。具体的には、主軸回転数算出部25は、主軸回転数に対して追従可能でないと判定された駆動軸に対して、追従可能な周波数を設定したうえで、第1軸61Aおよび第2軸61Bの振動回数で同期し且つ追従可能な主軸回転数を算出する。そして、主軸回転数算出部25は、当初の主軸回転数を、算出した主軸回転数に変更する(ステップS160)。なお、主軸回転数を変更しないと判定された場合、数値制御装置1Yは、主軸回転数を変更することなく、加工プログラムに従った通常の動作を実行する。
振動移動量算出部22Bは、主軸回転数と第1軸61Aの振動回数とに基づいて、第1軸61Aの振動移動量を算出し、主軸回転数と第2軸61Bの振動回数とに基づいて、第2軸61Bの振動移動量を算出する。合成部27は、指令移動量と振動移動量とを合成することによって、合成移動量を生成する(ステップS170)。
なお、数値制御装置1Yは、主軸回転数の変更と、第1軸61Aまたは第2軸61Bの変更との両方を実行してもよい。換言すると、数値制御装置1Yは、主軸回転数、第1軸61A、および第2軸61Bの少なくとも1つを変更する。
このように、実施の形態2によれば、第1軸61Aの振動回数および第2軸61Bの振動回数が、主軸回転数に同期および追従できるよう、主軸回転数を変更するので、工作機械110に対して、複数の駆動軸で振動切削を実行することが可能となる。
実施の形態3.
つぎに、図9から図14を用いてこの発明の実施の形態3について説明する。実施の形態3では、主軸回転数を変更する際に一方の駆動軸が先に振動切削を開始した場合、他方の駆動軸による振動切削を開始せず、両方の駆動軸において振動切削が行われていないタイミングになってから、両方の駆動軸が、変更後の主軸回転数で振動切削を実行する。
図9は、実施の形態3にかかる数値制御装置の構成例を示す図である。図9の各構成要素のうち図1に示す実施の形態1の数値制御装置1Xと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
数値制御装置1Zは、数値制御装置1Xと同様の構成を有したコンピュータであり、工作機械110に対して振動切削を実行させる。数値制御装置1Zは、数値制御装置1Xと比較して、制御演算部2Xの代わりに、制御演算部2Zを備えている。制御演算部2Zは、制御演算部2Xと比較して、補間処理部38Xの代わりに、補間処理部38Zを備えている。
補間処理部38Zは、補間処理部38Xと比較して、待機制御部26をさらに備えている。待機制御部26は、主軸回転数を変更できるタイミングであるか否かを判定する。数値制御装置1Zは、主軸回転数が変更されるまでは、一方の駆動軸の振動切削を許可するが、両方の駆動軸の振動切削は許可しない。また、待機制御部26は、主軸回転数を変更できるタイミングでなければ、主軸回転数を変更できるタイミングとなるまで、主軸回転数の変更処理を待機させる。
主軸回転数を変更できるタイミングは、第1軸61Aおよび第2軸61Bの両方において振動切削が行われていないタイミングである。主軸回転数を変更する前に、第1軸61Aおよび第2軸61Bのうちの一方の駆動軸が加工ワーク70に対して振動切削を開始した場合、待機制御部26は、振動切削を実行していない他方の駆動軸に対して振動切削を開始させない。待機制御部26は、一方の駆動軸において振動切削を実行しないタイミングになると、主軸回転数を変更させる。すなわち、待機制御部26は、第1軸61Aおよび第2軸61Bの両方において振動切削が行われないタイミングになると、両軸の振動切削を禁止したまま主軸回転数を変更させる。振動切削が行われない期間は、G0の位置決め指令の実行中、第1軸61Aの動作と第2軸61Bの動作との待ち合わせ中などである。主軸回転数が変更された後、数値制御装置1Zは、第1軸61Aおよび第2軸61Bの両方に対して振動切削を実行させる。
図10は、実施の形態3にかかる数値制御装置が用いる加工プログラムの第1例を示す図である。加工プログラム84は、数値制御装置1Zが工作機械110を制御する際に用いられる。加工プログラム84は、第1軸61A用の加工プログラム816Aと、第2軸61B用の加工プログラム816Bとを含んでいる。
主軸回転数が変更される前に、加工プログラム816Aの実行が先に進み、加工プログラム816Bの処理が加工プログラム816Aの処理から遅れる場合がある。すなわち、数値制御装置1Zが、加工プログラム816Aのa1,a2ブロックの振動指令を先に開始し、第1軸61Aの振動切削中に、加工プログラム816Bのb1ブロックの振動指令を実行しようとする場合がある。この場合、待機制御部26は、加工プログラム816Bのb1ブロックの振動指令を開始させず、振動指令をスルーして、b2ブロック、b3ブロックを実行し、b3ブロックとa3ブロックの待ち合わせ状態になった場合、はじめてb1ブロックの振動切削条件(モード)を有効にする。
この後、第1軸61Aにおいて振動切削が行われないタイミングになると、数値制御装置1Zは、主軸回転数を変更したうえで、第1軸61Aおよび第2軸61Bを用いた振動切削を実行する。
つぎに、数値制御装置1Zが工作機械110を制御する際の処理手順について説明する。図11は、実施の形態3にかかる数値制御装置の処理手順を示すフローチャートである。図11は、数値制御装置1Zによる工作機械110への制御処理手順を示している。なお、図11の処理のうち、図4で説明した処理と同様の処理については、その説明を省略する。ここでは、第1軸61Aの振動切削が先に開始され、第2軸61Bの振動切削が後から開始される場合について説明する。
図11におけるステップS210からS230の処理は、図4におけるステップS10からS30の処理と同様である。数値制御装置1Zは、主軸回転数が変更されるまでは、第1軸61Aの駆動軸の振動切削を、当初の主軸回転数のまま実行する。
待機制御部26は、第1軸61Aで振動切削が開始された後、第2軸61Bの振動切削が開始されるタイミングになると、主軸回転数を変更できるタイミングであるか否かを判定する。すなわち、待機制御部26は、第1軸61Aおよび第2軸61Bへの振動指令があった場合に、第2軸61Bから見た他軸である第1軸61Aで次ブロックの振動切削が始まっているか否かを判定する(ステップS240)。例えば、加工プログラム816Aのa1ブロックの振動指令が実行されている場合は、第1軸61Aで次ブロックの振動切削が始まっている。
第1軸61Aで振動切削が開始されている場合(ステップS240、Yes)、待機制御部26は、第2軸61Bによる振動切削を開始させない。そして、待機制御部26は、第1軸61Aおよび第2軸61Bの両軸の動作を監視し、第1軸61Aおよび第2軸61Bの両軸何れもが振動切削中以外の状態であるか否かを判定する(ステップS250)。
第1軸61Aおよび第2軸61Bの何れか一方が振動切削中である場合(ステップS250、No)、待機制御部26は、第1軸61Aおよび第2軸61Bの両軸の動作を監視し、第1軸61Aおよび第2軸61Bの両軸何れもが振動切削中以外の状態であるか否かを判定する(ステップS250)。
第1軸61Aおよび第2軸61Bの両軸何れもが振動切削中以外の状態になると(ステップS250、Yes)、待機制御部26は、両軸の何れも振動切削中でないことを、主軸回転数算出部25に通知する。数値制御装置1Zは、図8で説明した処理と同様の処理によって、主軸回転数を変更するか否かの判定と、主軸回転数の算出と、主軸回転数の変更と、合成移動量の生成とを実行する(ステップS260からS290)。ステップS260からS290の処理は、図8におけるステップS140からS170の処理と同様である。この後、数値制御装置1Zは、両軸、すなわち第1軸61Aおよび第2軸61Bで振動切削を開始する(ステップS300)。
工具66A,66Bの一方が振動切削を行っているタイミングで他方の振動切削を開始すると、振動切削で加工された箇所に加工不良が発生してしまう場合がある。また、工具66A,66Bの一方が振動切削を行っているタイミングで主軸回転数が変更されると、振動切削で加工された箇所に加工不良が発生してしまう場合がある。実施の形態3では、工具66A,66Bの両方が振動切削を行っていないタイミングで主軸回転数が変更されるので、加工不良の発生を防止することができる。
なお、数値制御装置1Zは、主軸回転数の代わりに第1軸61Aまたは第2軸61Bの振動回数を変更してもよい。この場合、数値制御装置1Zは、第1軸61Aおよび第2軸61Bの両軸何れもが振動切削中でない時に、第1軸61Aまたは第2軸61Bの振動回数を変更する。数値制御装置1Zは、図4で説明した処理と同様の処理によって、第1軸61Aまたは第2軸61Bの振動回数を変更する。
このように、数値制御装置1Zは、第1軸61Aの振動回数、第2軸61Bの振動回数および主軸回転数の少なくとも1つを変更する前に、工具66A,66Bの一方が振動切削を開始すると、他方の振動切削は開始しない。そして、数値制御装置1Zは、工具66A,66Bの両方が振動切削を行っていないタイミングで第1軸61Aの振動回数、第2軸61Bの振動回数および主軸回転数の少なくとも1つを変更する。
ところで、振動切削は、Z軸方向のみならず、X軸方向およびZ軸方向といった2軸以上の補間加工に適用されてもよい。すなわち、数値制御装置1Zは、第1軸61Aおよび第2軸61Bを合成した方向に振動切削を行わせてもよい。この場合、主軸60の中心軸とは異なる軸方向の振動切削が行われる。
図12は、実施の形態3にかかる工作機械の別構成例を示す図である。図12の各構成要素のうち図2に示す実施の形態1の工作機械110と同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
工作機械111は、工作機械110と比較して、刃物台65Bの代わりに刃物台65Cを備えている。刃物台65Cは、刃物台65Bと同様に、工具66Bを取り付け可能となっている。また、刃物台65Cは、刃物台65Bと同様に、X2軸方向およびZ2軸方向に移動可能となっている。工作機械111では、工作機械110と同様に、Z2軸が第2軸61Bである。
刃物台65Cは、X2方向およびZ2軸方向に振動させられることによって工具66Bで加工ワーク70の振動切削加工を行う。刃物台65Cは、X2方向およびZ2軸方向に振動可能なので、工具66Bは、加工ワーク70に対してテーパー形状の加工を行うことができる。このように、数値制御装置1Zは、テーパー形状の加工を行う工作機械111に対しても、振動切削を実行することができる。
図13は、実施の形態3にかかる数値制御装置が用いる加工プログラムの第2例を示す図である。加工プログラム85は、数値制御装置1Zが工作機械111を制御する際に用いられる。加工プログラム85は、第1軸61A用の加工プログラム817Aと、第2軸61B用の加工プログラム817Bとを含んでいる。加工プログラム817Bは、刃物台65BをZ軸方向に振動させる加工プログラム810Bなどとは異なり、刃物台65CをX軸方向およびZ軸方向に振動させる加工プログラムである。このため、加工プログラム817Bは、移動指令であるG1において、X方向の指令とZ方向の指令とを含んでいる。なお、数値制御装置1Xまたは数値制御装置1Yが工作機械111を制御してもよい。
なお、刃物台65Aも刃物台65Cと同様に、2軸方向を合成した方向に移動および振動させてもよい。この場合、刃物台65Aは、X1軸方向とZ1軸方向を合成した方向、すなわちX1軸方向およびZ1軸方向を用いた補間方向に移動および振動する。
ここで、数値制御装置1X〜1Zが備える制御演算部2X〜2Zのハードウェア構成について説明する。図14は、実施の形態1から3にかかる制御演算部のハードウェア構成例を示す図である。なお、制御演算部2X〜2Zは、同様のハードウェア構成を有しているので、ここでは制御演算部2Zのハードウェア構成について説明する。
制御演算部2Zは、図14に示した制御回路300、すなわちプロセッサ301、メモリ302により実現することができる。プロセッサ301の例は、CPU(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサ、DSP(Digital Signal Processor)ともいう)またはシステムLSI(Large Scale Integration)である。メモリ302の例は、RAM(Random Access Memory)またはROM(Read Only Memory)である。
制御演算部2Zは、プロセッサ301が、メモリ302で記憶されている、制御演算部2Zの動作を実行するためのプログラムを読み出して実行することにより実現される。また、このプログラムは、制御演算部2Zの手順または方法をコンピュータに実行させるものであるともいえる。メモリ302は、プロセッサ301が各種処理を実行する際の一時メモリにも使用される。
プロセッサ301が実行するプログラムは、コンピュータで実行可能な、データ処理を行うための複数の命令を含むコンピュータ読取り可能かつ非遷移的な(non-transitory)記録媒体を有するコンピュータプログラムプロダクトであってもよい。プロセッサ301が実行するプログラムは、複数の命令がデータ処理を行うことをコンピュータに実行させる。
また、制御演算部2Zを専用のハードウェアで実現してもよい。また、制御演算部2Zの機能について、一部を専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。
このように、実施の形態3では、数値制御装置1Zが、第1軸61Aの振動回数、第2軸61Bの振動回数および主軸回転数の少なくとも1つを変更する前に、第1軸61Aの工具66Aおよび第2軸61Bの工具66Bの一方が先に振動切削を開始すると、他方の振動切削を開始しない。数値制御装置1Zは、工具66Aおよび第2軸61Bの両方が振動切削を行っていないタイミングで第1軸61Aの振動回数、第2軸61Bの振動回数および主軸回転数の少なくとも1つを変更して、第1軸61Aおよび第2軸61Bによる振動切削を行う。したがって、第1軸61Aおよび第2軸61Bの一方が先に振動切削を開始した場合であっても、工作機械110に対して、複数の駆動軸で振動切削を実行することが可能となる。
実施の形態4.
つぎに、図15および図16を用いてこの発明の実施の形態4について説明する。実施の形態4では、振動回数と、振動振幅と、主軸回転数との組み合わせが、振動切削に適切な組み合わせであるか否かを機械学習装置が学習する。
図15は、実施の形態4にかかる数値制御装置の構成例を示す図である。図15の各構成要素のうち図1に示す実施の形態1の数値制御装置1Xと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
数値制御装置1Pは、数値制御装置1Xと同様の構成を有したコンピュータであり、工作機械110に対して振動切削を実行させる。数値制御装置1Pは、数値制御装置1Xと比較して、制御演算部2Xの代わりに、制御演算部2Pを備えている。制御演算部2Pは、制御演算部2Xと比較して、補間処理部38Xの代わりに、補間処理部38Pを備えている。また、制御演算部2Pは、機械学習装置50を備えている。制御演算部2Pは、制御演算部2X〜2Zと同様のハードウェア構成を有している。
機械学習装置50は、記憶部34および補間処理部38Pに接続されている。機械学習装置50は、観測部51、データ取得部52、および学習部53を有している。なお、以下の説明では、機械学習装置50による入力対象を(r)とし、機械学習装置50による出力対象を(n)とし、機械学習装置50が用いる関連情報を(i)として説明する。
本実施の形態では、入力対象が状態変数(後述する振動切削条件)および教師データ(後述する合否情報)であり、関連情報が状態変数と教師データとの組み合わせ(後述するデータセット)であり、出力対象が振動切削条件の合否判定結果である。また、以下の説明では、機械学習装置50と解析処理部37との間の情報の書き込み、および読み出しを説明する際に記憶部34が介されていることを省略する場合がある。
解析処理部37は、ユーザ入力された振動切削条件(r)を解析する。観測部51は、解析処理部37から、状態変数として、解析された振動切削条件(r)を読み出す。観測部51が状態変数として読み出す振動切削条件(r)は、加工ワーク70への実際の加工に用いられた振動切削条件である。振動切削条件(r)は、主軸60、および工具66A,66Bを駆動する各駆動軸に対する振動切削の条件である。具体的には、加工ワーク70への加工の際に実際に用いられた振動切削条件(r)は、加工の際に実際に用いられた、振動回数情報(r)と、振動振幅情報(r)と、主軸回転数情報(r)との組み合わせである。なお、観測部51は、加工プログラム記憶エリア343内の加工プログラムから振動回数情報(r)、振動振幅情報(r)、および主軸回転数情報(r)を読み出してもよい。また、観測部51は、補間処理部38Pから振動回数情報(r)、振動振幅情報(r)、および主軸回転数情報(r)を読み出してもよい。
振動回数情報(r)は、振動切削の際の第1軸61Aの振動回数および第2軸61Bの振動回数を示す情報である。振動振幅情報(r)は、振動切削の際の第1軸61Aの振動振幅および第2軸61Bの振動振幅を示す情報である。主軸回転数情報(r)は、振動切削の際の主軸回転数を示す情報である。
観測部51は、系統毎に振動切削条件(r)のデータ観測を行う。すなわち、観測部51は、刃物台65A,65B毎に、振動回数指令、振動振幅指令、および主軸回転数指令のデータ観測を行う。観測部51は、取得した振動切削条件(r)を学習部53に出力する。
データ取得部52は、共有エリア345内から、教師データである合否情報(r)を読み出す。データ取得部52が読み出す合否情報(r)は、振動切削の合否を示す情報である。換言すると、合否情報(r)は、加工プログラムの振動切削が正常に完了したか否かを示す情報である。
合否情報(r)は、加工ワーク70への加工が完了した後に、ユーザ入力に基づいて、共有エリア345内に格納される。すなわち、合否情報(r)は、ユーザによって数値制御装置1Pに入力され、共有エリア345に格納される。データ取得部52は、取得した合否情報(r)を学習部53に出力する。
学習部53は、状態変数である振動切削条件(r)と、合否情報(r)との組合せに基づいて作成されるデータセット(i)に従って、振動切削条件に対応する合否予測(n)を学習し、合否を推測する。
振動切削条件(r)のうち、振動回数情報(r)および振動振幅情報(r)は、ユーザによって入力される振動切削指令に含まれている。主軸回転数情報(r)は、加工プログラムで規定されている。
振動切削条件(r)は、機械学習装置50によって合格(適切)であると判定された振動切削条件、または機械学習装置50によって不合格(不適切)であると判定された振動切削条件に対してユーザが修正を加えた振動切削条件である。
補間処理部38Pは、補間処理部38Xと比較して、判定部23および振動回数算出部24の代わりに、設定部28を備えている。設定部28は、機械学習装置50から送られてくる振動切削条件(r)を振動切削に用いる条件に設定するか、またはユーザ入力される振動切削条件を振動切削に用いる条件に設定する。これにより、設定部28は、振動回数と、振動振幅と、主軸回転数との組み合わせを、振動切削に用いる条件に設定する。機械学習装置50から送られてくる振動切削条件(r)は、機械学習装置50が合格であると判定した振動切削条件である。ユーザ入力される振動切削条件は、機械学習装置50によって不合格であると判定された振動切削条件に対してユーザが修正を加えた振動切削条件である。
補間処理部38Pは、設定部28によって設定された振動回数と、振動振幅と、主軸回転数との組み合わせに基づいて、実施の形態1から3で説明した補間処理を実行する。すなわち、補間処理部38Pは、機械学習装置50によって合格であると判定された振動切削条件(r)、または機械学習装置50によって不合格であると判定された振動切削条件に対してユーザが修正を加えた振動切削条件に基づいて、補間処理を実行する。
なお、機械学習装置50は、例えば、ネットワークを介して数値制御装置1Pに接続される、数値制御装置1Pとは別個の装置であってもよい。また、機械学習装置50は、図15に図示したように数値制御装置1Pに内蔵されていてもよい。さらに、機械学習装置50は、クラウドサーバ上に存在していてもよい。
ここで、学習部53の詳細な学習処理について説明する。学習部53は、例えば、ニューラルネットワークモデルに従って、いわゆる教師あり学習により、系統毎の合否予測(n)を学習する。学習部53は、振動切削条件(r)および合否情報(r)を互いに関連付けたデータセットから、合否予測(n)を学習する。ここで、教師あり学習とは、ある入力と結果(ラベル)のデータの組を大量に学習装置に与えることで、それらのデータセットにある特徴を学習し、入力から結果を推定するモデルをいう。
ニューラルネットワークは、複数のニューロンからなる入力層、複数のニューロンからなる中間層(隠れ層)、及び複数のニューロンからなる出力層で構成される。中間層は、1層、又は2層以上でもよい。
例えば、3層のニューラルネットワークであれば、複数の入力が入力層に入力されると、その値に第1の重みを掛けて中間層に入力され、その結果にさらに第2の重みを掛けて出力層から出力される。この出力結果は、第1の重みの値および第2の重みの値によって変わる。
本願において、ニューラルネットワークは、観測部51によって観測される振動切削条件(r)、並びに、データ取得部52によって取得される合否情報(r)の組合せに基づいて作成されるデータセットに従って、いわゆる教師あり学習により、合否予測(n)を学習する。この場合のニューラルネットワークは、入力層に振動切削条件(r)を入力して出力層から出力された結果が、合否情報(r)に近づくように第1の重みおよび第2の重みを調整することで学習する。ニューラルネットワークは、ユーザから新たな振動切削条件(r)を受付けた場合には、調整済みの第1の重みおよび第2の重みを用いて、合否を予測する。
また、ニューラルネットワークは、いわゆる教師なし学習によって、合否予測(n)を学習することもできる。教師なし学習とは、入力データのみを大量に機械学習装置50に与えることで、入力データがどのような分布をしているか学習し、対応する教師データを与えなくても、入力データに対して圧縮、分類、整形等を行う装置を学習する手法である。それらのデータセットにある特徴を似た者どうしにクラスタリングすること等ができる。この結果を使って、何らかの基準を設けてそれを最適にするような出力の割り当てを行うことで、出力の予測を実現することができる。また、教師なし学習と教師あり学習の中間的な問題設定として、半教師あり学習と呼ばれるものもあり、これは一部のみ入力と出力のデータの組が存在し、それ以外は入力のみのデータである場合がこれに当たる。
また、学習部53は、複数の数値制御装置に対して作成されるデータセットに従って、合否予測(n)を学習するようにしてもよい。また、学習部53は、同一の現場で使用される複数の数値制御装置からデータセットを取得してもよいし、或いは、異なる現場で独立して稼働する複数の数値制御装置から収集されるデータセットを利用して合否予測(n)を学習するようにしてもよい。
さらに、データセットを収集する数値制御装置を途中で対象に追加し、或いは、逆に対象から除去することも可能である。また、ある数値制御装置に関して合否予測(n)を学習した機械学習装置を、これとは別の数値制御装置に取り付け、当該別の数値制御装置に関して合否予測(n)を再学習して更新するようにしてもよい。
また、学習部53に用いられる学習アルゴリズムとしては、特徴量そのものの抽出を学習する、深層学習(Deep Learning)を用いることもでき、他の公知の方法、例えば強化学習、遺伝的プログラミング、機能論理プログラミング、サポートベクターマシンなどに従って機械学習を実行してもよい。また、機械学習装置50は、旋削、ドリル、ねじ切りなど、加工の種類毎に合否予測(n)を学習してもよい。
ここで、機械学習装置50による学習処理手順および予測処理手順について説明する。図16は、実施の形態4にかかる機械学習装置の処理手順を示すフローチャートである。
観測部51は、解析処理部37から、状態変数である振動切削条件(r)を取得する(ステップS310)。具体的には、観測部51は、刃物台65A,65B毎に、振動回数指令、振動振幅指令、および主軸回転数指令のデータ観測を行う。観測部51は、取得した振動切削条件(r)を学習部53に出力する。
データ取得部52は、共有エリア345内から、教師データである合否情報(r)を取得する(ステップS320)。なお、ステップS310の処理とステップS320の処理とは、何れが先に実行されてもよい。
学習部53は、振動切削条件(r)と合否情報(r)との組合せに基づいて作成されるデータセット(i)に従って、振動切削条件(r)に対応する合否予測(n)を学習する(ステップS330)。学習部53は、上述したニューラルネットワークを用いて、合否予測(n)を学習する。
この後、ユーザが新たな振動切削条件を数値制御装置1Pに入力すると、解析処理部37が、新たな振動切削条件を解析する。機械学習装置50は、解析処理部37から、解析された新たな振動切削条件を取得する(ステップS340)。
機械学習装置50は、学習で得たニューラルネットワークに、取得した新たな振動切削条件を入力し、新たな振動切削条件に対応する合否予測を得る。すなわち、機械学習装置50は、学習内容と新たな振動切削条件とに基づいて、新たな振動切削条件の合否判定を行う(ステップS350)。
機械学習装置50は、新たな振動切削条件が不合格であった場合(ステップS350、不合格)、振動切削条件が不合格であることをユーザに通知する(ステップS360)。機械学習装置50は、例えば、振動切削条件が不合格であることを示すメッセージを表示部4に表示させる。ユーザは、振動切削条件が不合格であった場合、振動切削条件を修正する。数値制御装置1Pは、修正された振動切削条件を受け付けて、解析処理部37が、修正された振動切削条件を解析する。機械学習装置50は、解析処理部37から、修正された振動切削条件を取得する(ステップS340)。機械学習装置50は、振動切削条件が合格となるまで、ステップS340からS360の処理を繰り返す。
機械学習装置50は、新たな振動切削条件が合格であった場合(ステップS350、合格)、新たな振動切削条件を補間処理部38Pの設定部28に送る。これにより、設定部28は、新たな振動切削条件を、振動切削の際に用いる条件に設定する。数値制御装置1Pは、設定された新たな振動切削条件を用いて、振動切削を制御する。
振動切削が完了すると、ユーザが、振動切削が適切に実行されたか否かを判定する。ユーザは、振動切削によって切屑を平均的に短く分断できた場合に、振動切削が合格であると判定し、振動切削による切屑が長い場合または切屑の長さに大きなばらつきがある場合に振動切削が不合格であると判定する。
ユーザは、振動切削の合否を示す合否情報(r)を、数値制御装置1Pに入力する。この合否情報(r)は、共有エリア345に格納される。この後、機械学習装置50は、新たな振動切削条件(r)と、新たな振動切削条件に対応する合否情報(r)との組み合わせに対して、合否予測(n)を学習する。すなわち、機械学習装置50は、上述したステップS310からS330の処理によって、新たな振動切削条件に対する合否予測(n)を学習する。具体的には、観測部51は、解析処理部37から、振動切削に用いた新たな振動切削条件(r)を状態変数として取得する。また、データ取得部52は、共有エリア345内から、新たな振動切削条件(r)に対応する合否情報(r)を教師データとして取得する(ステップS320)。学習部53は、新たな振動切削条件(r)と、新たな合否情報(r)との組合せに基づいて作成されるデータセット(i)に従って、新たな振動切削条件(r)に対応する合否予測(n)を学習する(ステップS330)。
また、ユーザが次の振動切削条件を数値制御装置1Pに入力すると、機械学習装置50は、上述したステップS340からS360の処理によって、次の振動切削条件に対して合否を予測する。数値制御装置1Pでは、機械学習装置50による合否予測(n)の学習と、新たな振動切削条件(r)に対する合否の予測とが繰り返される。
なお、ユーザが振動切削の結果に対して点数を付け、機械学習装置50が、振動切削条件に対する点数を学習してもよい。点数は、振動切削に対する切屑の長さが短いほど高く、切屑の長さのばらつきが小さいほど高くなるよう付けられるものとする。ユーザは、振動切削条件(r)と、点数(r)とを対応付けして数値制御装置1Pに入力する。観測部51は、解析処理部37から、状態変数である振動切削条件(r)を取得し、データ取得部52は、共有エリア345内から、教師データである点数(r)を取得する。
学習部53は、振動切削条件(r)と点数(r)との組合せに基づいて作成されるデータセット(i)に従って、振動切削条件(r)に対応する点数(n)を学習する。学習部53は、上述したニューラルネットワークを用いて、点数(n)を学習する。機械学習装置50は、ユーザから新たな振動切削条件を受け付けると、学習で得たニューラルネットワークに、取得した新たな振動切削条件を入力し、新たな振動切削条件に対応する点数を得る。機械学習装置50は、算出した点数を表示部4に表示させる。
なお、機械学習装置50は、切屑を撮像した画像などに基づいて、点数(r)を算出してもよい。この場合も機械学習装置50は、振動切削に対する切屑の長さが短いほど点数(r)が高く、切屑の長さのばらつきが小さいほど点数(r)が高くなるよう点数(r)を付ける。また、機械学習装置50は、実施の形態2の数値制御装置1Yまたは実施の形態3の数値制御装置1Zに適用されてもよい。
このように実施の形態4では、機械学習装置50が、振動回数と、振動振幅と、主軸回転数との組み合わせが、振動切削に適切な組み合わせであるか否かを学習している。これにより、ユーザは、これから用いる予定の、振動回数と、振動振幅と、主軸回転数との組み合わせが、振動切削に適切であるか否かを容易に判断することができる。
以上の実施の形態では刃物台を2つ持つ工作機械の例で説明したが、刃物台が1つの工作機械にも、刃物台を3つ以上持つ工作機械にも、本発明は適用することが出来る。
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。