以下に、本発明の実施の形態にかかる数値制御装置および数値制御方法を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
実施の形態1.
図1は、本発明の実施の形態1にかかる数値制御装置の構成例を示す図である。図2は、実施の形態1にかかる工作機械の構成を示す図である。図2では、紙面の横方向がZ軸方向であり、紙面の縦方向がX軸方向である。そして、X1軸およびX2軸は、X軸に平行な軸であり、Z1軸およびZ2軸は、Z軸に平行な軸である。
数値制御(NC:Numerical Control)装置1は、工作機械110に対して、工具を振動させながらの加工である低周波振動切削の制御と重畳制御とを同時に実行するコンピュータである。以下の説明では低周波振動を単に振動という場合がある。
数値制御装置1は、第1の駆動軸を含む1軸以上の駆動軸によって、第1の工具と加工対象である加工ワーク70との相対的な移動を実行させ、第2の駆動軸を含む1軸以上の駆動軸によって、第2の工具と加工ワーク70との相対的な移動とを実行させながら、加工ワーク70の加工を制御する。すなわち、数値制御装置1は、第1の加工を行う工具66Aまたは加工ワーク70の移動を行う基準軸61Aと、第2の加工を行う工具66Bまたは加工ワーク70の移動を行う重畳軸61Bとを有している。そして、数値制御装置1は、基準軸61Aの移動量を重畳軸61Bの移動量に重畳し、第1の加工と相対的に第2の加工を実行できるように基準軸61Aおよび重畳軸61Bを制御する。また、このとき、数値制御装置1は、第1の工具および第2の工具を振動させることによって、加工ワーク70への振動切削を行なわせる。実施の形態1では、数値制御装置1が、2軸の駆動軸に対して、振動切削および重畳制御を行うので、振動切削および重畳制御を実現するための制約条件に従うよう、各駆動軸の振動または加工ワーク70の回転を制御する。
加工ワーク70は、工作機械110によって加工される被加工物である。本実施の形態の工作機械110は、重畳制御を実行時、第1の駆動軸となる図2の基準軸61AがZ1軸であり、第2の駆動軸となる図2の重畳軸61BがZ2軸である場合について説明する。
数値制御装置1は、制御演算部2と、入力操作部3と、表示部4と、PLC(Programmable Logic Controller:プログラマブルロジックコントローラ)36を操作するための機械操作盤等のPLC操作部5とを有する。図1には、工作機械110の構成要素である駆動部90が示されている。数値制御装置1は、旋盤加工に適用されてもよいし、マシニング加工に適用されてもよい。以下では、数値制御装置1が、旋盤加工に適用される場合について説明する。
駆動部90は、工作機械110が備える刃物台65A,65Bなどを駆動させる。駆動部90は、加工ワーク70を回転させながら、2つの工具66A,66Bを駆動する駆動機構である。本実施の形態の駆動部90は、工具66AをX1軸方向、および基準軸61Aの軸方向であるZ1軸方向に沿って移動させ、工具66BをX2軸方向、および重畳軸61Bの軸方向であるZ2軸方向に沿って移動させる。
重畳制御の場合、数値制御装置1は、基準軸61Aへ指令された移動量と、重畳軸61Bへ指令された移動量を重畳させて、重畳軸61Bの実移動を制御する。したがって、重畳制御中に、重畳軸61Bへの指令が無い場合、従来の方式では、重畳軸61Bは、基準軸61Aと同期した動作となるため、工具66A,66Bは、同じ振動波形に従って動作する。なお、何れの軸が基準軸となるかは、工作機械の種類によって異なる。本実施の形態では、工具66Aの振動方向が基準軸61Aの軸方向であり、工具66Bの振動方向が重畳軸61Bの軸方向およびX2軸方向が合成された方向である場合について説明する。したがって、以下の説明において、重畳軸61Bの振動という場合には、Z2軸方向およびX2軸方向が合成された方向の振動を意味する。
駆動部90は、数値制御装置1上で規定された各軸方向に工具66A,66Bを移動させるサーボモータ901〜904と、サーボモータ901〜904の位置および速度を検出する検出器97〜100とを備えている。また、駆動部90は、数値制御装置1からの指令に基づいて、サーボモータ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軸方向の動作を制御する。
また、駆動部90は、加工ワーク70を回転させるための主軸60を回転させる主軸モータ911と、主軸モータ911の位置および回転数を検出する検出器211とを備えている。検出器211が検出する回転数は、主軸モータ911の回転速度である。なお、工作機械110のように旋盤加工を行う機械の場合、主軸は、加工ワーク70の回転軸であるが、マシニング加工を行う工作機械の場合、主軸は、刃物台の回転軸である。
また、駆動部90は、数値制御装置1からの指令に基づいて、主軸モータ911を制御する主軸サーボ制御部200を備えている。主軸サーボ制御部200は、検出器211からの位置および速度に基づいて、主軸モータ911へのフィードバック制御を行う。本実施の形態では、単位時間あたりの主軸60の回転数を主軸回転数という。主軸回転数は、例えば、1分間あたりの主軸60の回転数である。
なお、工作機械110が2つの加工ワーク70を同時に加工する場合には、駆動部90は、主軸モータ911と、検出器211と、主軸サーボ制御部200とを2組備える。
入力操作部3は、制御演算部2に情報を入力する手段である。入力操作部3は、キーボード、ボタンまたはマウスなどの入力手段によって構成され、ユーザによる数値制御装置1に対するコマンドなどの入力、または加工プログラムもしくはパラメータなどを受付けて制御演算部2に入力する。表示部4は、液晶表示装置などの表示手段によって構成され、制御演算部2によって処理された情報を表示画面に表示する。PLC操作部5は、ユーザによる機械操作盤等の操作を受付けて、操作に対応する指示をPLC36に送る。
制御部である制御演算部2は、入力制御部32と、データ設定部33と、記憶部34と、画面処理部31と、解析処理部37と、制御信号処理部35と、PLC36と、補間処理部38と、加減速処理部39と、軸データ出力部40と、を有する。なお、PLC36は、制御演算部2の外部に配置されてもよい。
記憶部34は、パラメータ記憶エリア341、加工プログラム記憶エリア343、表示データ記憶エリア344、および共有エリア345を有している。パラメータ記憶エリア341内には、制御演算部2の処理で使用されるパラメータ等が格納される。具体的には、パラメータ記憶エリア341内には、数値制御装置1を動作させるための制御パラメータ、サーボパラメータおよび工具データが格納される。加工プログラム記憶エリア343内には、加工ワーク70の加工に用いられる加工プログラムが格納される。本実施の形態の加工プログラムは、工具66A,66Bを振動させる指令である振動指令と、工具66A,66Bを移動させる指令である移動指令とを含んでいる。
表示データ記憶エリア344内には、表示部4で表示される画面表示データが格納される。画面表示データは、表示部4に情報を表示するためのデータである。また、記憶部34には、一時的に使用されるデータを記憶する共有エリア345が設けられている。
画面処理部31は、表示データ記憶エリア344に格納された画面表示データを表示部4に表示させる制御を行う。入力制御部32は、入力操作部3から入力される情報を受付ける。データ設定部33は、入力制御部32で受付けられた情報を記憶部34に記憶させる。
制御信号処理部35は、PLC36に接続されており、PLC36から、工作機械110の機械を制御させるリレーなどの信号情報又は機械操作盤の信号情報を受付ける。制御信号処理部35は、受付けた信号情報を、記憶部34の共有エリア345に書き込む。これらの信号情報は機械運転時に補間処理部38が参照する。また、制御信号処理部35は、解析処理部37によって共有エリア345に補助指令が出力されると、この補助指令を共有エリア345から読み出してPLC36に送る。補助指令は、数値制御軸である駆動軸を動作させる指令以外の指令である。補助指令の例は、後述するMコードまたはTコードである。
PLC36は、機械操作盤などのPLC操作部5に対して操作が行われると、この操作に応じた動作を実行する。PLC36は、機械動作が記述されたラダープログラムを格納している。PLC36は、補助指令であるTコードまたはMコードを受付けると、ラダープログラムに従って補助指令に対応する処理を工作機械110に実行する。PLC36は、補助指令に対応する処理を実行した後、加工プログラムの次のブロックを実行させるために、機械制御が完了したことを示す完了信号を制御信号処理部35に送る。
制御演算部2では、制御信号処理部35と、解析処理部37と、補間処理部38とは、記憶部34を介して接続されており、記憶部34を介して情報の書き込み、および読み出しを行う。以下の説明では、制御信号処理部35と、解析処理部37と、補間処理部38との間の情報の書き込み、および読み出しを説明する際に記憶部34が介されていることを省略する場合がある。
加工プログラム選択はユーザが入力操作部3で加工プログラム番号を入力する。入力情報は入力制御部32、データ設定部33を介して記憶部34に書き込まれる。解析処理部37は、共有エリア345から選択された加工プログラムを加工プログラム記憶エリア343内から読み出して、加工プログラムの各ブロック(各行)に対して解析処理を行う。解析処理部37は、例えば、Gコード(軸移動等に関する指令)、Tコード(工具交換指令など)、Sコード(主軸モータ回転数指令)、およびMコード(機械動作指令)を解析する。
解析処理部37は、解析した行に特定のMコードまたは特定のTコードが含まれている場合には、解析結果を共有エリア345および制御信号処理部35を介してPLC36に送る。また、解析処理部37は、解析した行にMコードまたはGコードが含まれている場合には、解析結果を共有エリア345を介して補間処理部38に送る。Mコードは制御信号処理部35を介してPLC36に送られ、PLC36はMコードに対応する機械制御を実行する。実行が完了した場合、制御信号処理部35を介してMコードの完了を示す結果が記憶部34に書き込まれる。補間処理部38は記憶部34に書き込まれた実行結果を参照する。具体的には、解析処理部37は、Mコードで指定された主軸回転数を補間処理部38に送る。
解析処理部37は、振動指令解析部11A,11Bと、移動指令解析部12A,12Bと、重畳指令解析部13と、を有している。振動指令解析部11Aは、基準軸61Aへの振動指令を解析する手段であり、振動指令解析部11Bは、重畳軸61Bへの振動指令を解析する手段である。
振動指令解析部11Aは、基準軸61A用の加工プログラム(後述の加工プログラム810Aなど)に含まれる振動指令を解析して基準軸61Aの振動条件を生成し、生成した振動条件を共有エリア345を介して補間処理部38に送る。
振動指令解析部11Bは、重畳軸61B用の加工プログラム(後述の加工プログラム810Bなど)に含まれる振動指令を解析して重畳軸61Bの振動条件を生成し、生成した振動条件を共有エリア345を介して補間処理部38に送る。
基準軸61Aへの振動指令は、基準軸61Aを基準軸61Aの軸方向であるZ1軸方向に振動させる指令である。重畳軸61Bへの振動指令は、重畳軸61BをX2軸方向、および重畳軸61Bの軸方向であるZ2軸方向が合成された方向に振動させる指令である。振動条件は、振動切削を実行する際の振動の条件である。振動条件の例は、振動切削の際の、振動の振幅および振動回数である。基準軸61Aの振動回数は、主軸60が1回転する間の基準軸61Aの振動回数であり、重畳軸61Bの振動回数は、主軸60が1回転する間の重畳軸61Bの振動回数である。換言すると、基準軸61Aの振動回数および重畳軸61Bの振動回数は、それぞれ、主軸60が1回転する時間を基準とした振動の周波数に対応している。したがって、振動条件の例は、振動切削の際の振動の振幅および周波数であるともいえる。本実施の形態では、基準軸61Aが振動するので、基準軸61Aの振動回数は基準軸61A側の工具66Aの振動回数に対応する。また、重畳軸61Bが振動するので、重畳軸61Bの振動回数は重畳軸61B側の工具66Bの振動回数に対応する。本実施の形態の工作機械110は、基準軸61Aが第1の駆動軸であり重畳軸61Bが第2の駆動軸である場合には、基準軸61Aの振動回数が第1の振動回数であり、重畳軸61Bの振動回数が第2の振動回数である。また、本実施の形態の工作機械110は、基準軸61Aが第2の駆動軸であり重畳軸61Bが第1の駆動軸である場合には、基準軸61Aの振動回数が第2の振動回数であり、重畳軸61Bの振動回数が第1の振動回数である。
移動指令解析部12Aは、Gコードに対応する工具66Aへの移動条件を生成して補間処理部38に送る。移動指令解析部12Bは、Gコードに対応する工具66Bへの移動条件を生成して補間処理部38に送る。移動条件は、工具66A,66Bが加工位置を移動させていくための工具送りの条件であり、刃物台65A,65Bを移動させる速度、刃物台65A,65Bを移動させる位置などで示される。工具66Aの工具送りは、工具66Aを基準軸61Aの軸方向に進ませる処理であり、工具66Bの工具送りは、工具66Bを重畳軸61Bの軸方向に進ませる処理である。
重畳指令解析部13は、加工プログラムに重畳制御指令が含まれているか否かを解析する。重畳指令解析部13は、加工プログラム内に後述するG126の指令が含まれている場合に、重畳制御指令が含まれていると判定する。重畳制御指令は、基準軸61Aの移動量を、重畳軸61Bに重畳させるための制御指令である。重畳指令解析部13は、重畳制御指令の解析結果を補間処理部38に送る。
補間処理部38は、基準軸補間部21Aと、重畳軸補間部21Bと、移動量発生部26Aと、移動量発生部26Bと、重畳合成部28と、合成部27とを備えている。補間処理部38は、主軸回転数に、基準軸61Aの振動および重畳軸61Bの振動を同期させるため、主軸回転数、基準軸61Aの振動回数、および重畳軸61Bの振動回数の少なくとも1つを変更する。
例えば、補間処理部38は、基準軸61Aの振動回数および重畳軸61Bの振動回数が異なる場合に、重畳軸61Bの振動回数を、基準軸61Aの振動回数に応じた振動回数に変更する。この場合、補間処理部38は、主軸回転数を基準軸61Aの振動に同期するよう変更し、重畳軸61Bの振動が、変更した主軸回転数に同期するよう重畳軸61Bの振動回数を変更する。
また、補間処理部38は、基準軸61Aの振動回数および重畳軸61Bの振動回数が異なる場合に、基準軸61Aの振動回数を、重畳軸61Bの振動回数に応じた振動回数に変更してもよい。この場合、補間処理部38は、主軸回転数を重畳軸61Bの振動に同期するよう変更し、基準軸61Aの振動が、変更した主軸回転数に同期するよう基準軸61Aの振動回数を変更する。
基準軸61Aの振動と主軸回転数とを同期させる処理は、主軸60が1回転する間の基準軸61Aの振動回数が一定の振動回数になるよう、基準軸61Aの振動回数または主軸回転数を調整する処理である。また、重畳軸61Bの振動と主軸回転数とを同期させる処理は、主軸60が1回転する間の重畳軸61Bの振動回数が一定の振動回数になるよう、重畳軸61Bの振動回数または主軸回転数を調整する処理である。換言すると、基準軸61Aの振動と主軸回転数とを同期させる処理は、基準軸61Aの振動周波数(振動数)と主軸回転数とを同期させる処理であり、重畳軸61Bの振動と主軸回転数とを同期させる処理は、重畳軸61Bの振動周波数と主軸回転数とを同期させる処理である。実施の形態1では、基準軸61Aの振動を振動回数で定義するので、基準軸61Aの振動と主軸回転数との同期を、基準軸61Aの振動回数と主軸回転数との同期という場合がある。また、実施の形態1では、重畳軸61Bの振動を振動回数で定義するので、重畳軸61Bの振動と主軸回転数との同期を、重畳軸61Bの振動回数と主軸回転数との同期という場合がある。
なお、基準軸61Aにおける一定の振動回数は、可変であり、重畳制御に応じた振動回数を選択することができる。また、重畳軸61Bにおける一定の振動回数は、可変であり、重畳制御に応じた振動回数を選択することができる。
また、数値制御装置1は、重畳制御を行う場合、重畳合成部28は、基準軸61Aの移動量を重畳軸61Bの移動量に合成し、重畳軸61Bの移動が、基準軸61Aの移動に重畳するように制御する。よって、刃物台65Aの振動と同じ振動が、刃物台65Bにも与えられる。このため、補間処理部38は、刃物台65Bを振動させる振動指令の振幅から、刃物台65Aを振動させる振動指令の振幅を差し引いたうえで、刃物台65Bを振動させる。これにより、差し引かれた振幅は重畳制御によって補われるので、刃物台65Bを、当初の振動指令の振幅で振動させることができる。
移動量発生部26Aは、解析処理部37から基準軸61Aの解析結果である移動条件および振動条件を受け取り、基準軸61Aの移動条件および振動条件に対する補間処理を行い、補間処理の結果に対応する単位時間当たりの移動量を重畳合成部28および合成部27に送る。具体的には、移動量発生部26Aは、解析処理部37が解析した基準軸61Aの移動条件に基づいて、工具66Aを単位時間で移動させるための工具送りの移動量を算出する機能と、解析処理部37が解析した基準軸61Aの振動条件に基づいて、工具66Aを単位時間で振動させるための振動の移動量を算出する機能とを有している。移動量発生部26Aは、工具送りの移動量を算出する際には、直線補間、円弧補間などを用いる。また、移動量発生部26Aは、工具送りの移動量と振動の移動量とを合成する機能を有している。移動量発生部26Aは、合成した移動量を重畳合成部28および合成部27に送る。
移動量発生部26Bは、解析処理部37から重畳軸61Bの解析結果である移動条件および振動条件を受け取り、重畳軸61Bの移動条件および振動条件に対する補間処理を行い、補間処理の結果に対応する単位時間当たりの移動量を重畳合成部28に送る。具体的には、移動量発生部26Bは、解析処理部37が解析した重畳軸61Bの移動条件に基づいて、工具66Bを単位時間で移動させる工具送りの移動量を算出する機能と、解析処理部37が解析した重畳軸61Bの振動条件に基づいて、工具66Bを単位時間で振動させるための振動の移動量を算出する機能とを有している。また、移動量発生部26Bは、工具送りの移動量と振動の移動量とを合成する機能を有している。移動量発生部26Bは、合成した移動量を重畳合成部28に送る。
重畳合成部28は、移動量発生部26Aが合成した移動量を、移動量発生部26Bが合成した移動量に重畳し、重畳した移動量を合成部27に送る。
基準軸補間部21Aは、振動計算部22Aと、振動発生部24Aと、振動チェック部25Aとを有している。重畳軸補間部21Bは、振動計算部22Bと、振幅計算部である差分計算部23Bと、振動発生部24Bと、振動チェック部25Bとを有している。
振動計算部22Aは、主軸回転数、基準軸61Aの振動回数、重畳軸61Bの振動回数、および基準軸61Aの振幅を共有エリア345から読み出し、主軸回転数を、基準軸61Aの振動回数に同期する主軸回転数に変更する。換言すると、振動計算部22Aは、加工プログラムで規定された主軸回転数である当初の主軸回転数(主軸60への指令回転数)を、基準軸61Aの振動回数に同期する主軸回転数に変更する。さらに、振動計算部22Aは、基準軸61Aの振動回数と重畳軸61Bの振動回数とが異なる場合には、指令された主軸回転数および振動回数から、基準軸61Aおよび重畳軸61Bの振動条件に合う主軸回転数を算出して変更する。振動計算部22Aは、変更した主軸回転数を振動計算部22Bおよび合成部27に送る。
また、振動計算部22Aは、重畳軸61Bの振動回数に同期する主軸回転数を振動計算部22Bから受けると、この主軸回転数に同期するよう、基準軸61Aの振動回数を変更する。振動計算部22Bから振動計算部22Aへ送られてくる主軸回転数は、振動計算部22Bで変更されたものである。振動計算部22Aは、基準軸61Aの振幅と、変更した基準軸61Aの振動回数とを振動発生部24Aに送る。
振動発生部24Aは、振動計算部22Aから送られてきた基準軸61Aの振動回数および振幅に基づいて、基準軸61A用の振動波形(以下、基準振動波形という)を生成する。基準振動波形は、時間に対する各軸方向の位置を示すものである。基準振動波形としては、正弦波などの任意のものを用いることができるが、以下では振動波形が三角波である場合について説明する。振動発生部24Aは、生成した基準振動波形を合成部27に送る。
振動チェック部25Aは、重畳軸61Bへの振動指令があるか否かを判定する。振動チェック部25Aは、重畳軸61Bへの振動指令が無い場合には、重畳軸61Bへの振動指令が無いことを振動計算部22A,22Bおよび差分計算部23Bに送る。また、振動チェック部25Aは、重畳軸61Bへの振動指令が無い場合には、重畳軸61Bへの振動指令が無いことを合成部27に通知してもよい。
振動計算部22Bは、主軸回転数、基準軸61Aの振動回数、および重畳軸61Bの振動回数を共有エリア345から読み出し、主軸回転数を、重畳軸61Bの振動回数に同期する主軸回転数に変更する。換言すると、振動計算部22Bは、加工プログラムで規定された主軸回転数である当初の主軸回転数を、重畳軸61Bの振動回数に同期する主軸回転数に変更する。さらに、振動計算部22Bは、基準軸61Aの振動回数と重畳軸61Bの振動回数とが異なる場合には、指令された主軸回転数および振動回数から、基準軸61Aおよび重畳軸61Bの振動条件に合う主軸回転数を算出し変更する。振動計算部22Bは、変更した主軸回転数を振動計算部22Aおよび合成部27に送る。
また、振動計算部22Bは、基準軸61Aの振動回数に同期する主軸回転数を振動計算部22Aから受けると、この主軸回転数に同期するよう、重畳軸61Bの振動回数を変更する。振動計算部22Aから振動計算部22Bへ送られてくる主軸回転数は、振動計算部22Aで変更されたものである。振動計算部22Bは、変更した重畳軸61Bの振動回数を振動発生部24Bに送る。
差分計算部23Bは、基準軸61A(刃物台65A)の振幅および重畳軸61B(刃物台65B)の振幅を共有エリア345から読み出す。差分計算部23Bは、重畳軸61Bの振幅から基準軸61Aの振幅を引いた振幅の差分を振幅差分として計算する。差分計算部23Bは、重畳軸61Bの振幅から、計算済みの振幅差分を減算し、減算後の重畳軸61Bの振幅を振動発生部24Bに送る。なお、実際に振動させる重畳軸61Bの振幅の計算方法は、一例を記載しただけであり、実際に振動させる重畳軸61Bの振幅を当初の振動指令の振幅で振動させることができればこの計算方法に限定されない。
振動発生部24Bは、振動計算部22Bから送られてきた重畳軸61Bの振動回数および差分計算部23Bから送られてきた重畳軸61Bの振幅に基づいて、重畳軸61B用の振動波形(以下、重畳振動波形という)を生成する。重畳振動波形は、Z2軸方向およびX2軸方向を合成した合成方向における工具66Bの時間毎の位置を示すものである。重畳振動波形としては、正弦波などの任意のものを用いることができるが、以下では振動波形が三角波である場合について説明する。振動発生部24Bは、生成した重畳振動波形を合成部27に送る。
振動チェック部25Bは、基準軸61Aへの振動指令があるか否かを判定する。振動チェック部25Bは、基準軸61Aへの振動指令が無い場合には、基準軸61Aへの振動指令が無いことを振動計算部22A,22Bおよび差分計算部23Bに送る。また、振動チェック部25Bは、基準軸61Aへの振動指令が無い場合には、基準軸61Aへの振動指令が無いことを合成部27に通知してもよい。
本実施の形態では、基準軸61Aが第1の駆動軸であり重畳軸61Bが第2の駆動軸である場合には、振動チェック部25Aが第1の振動チェック部であり、振動チェック部25Bが第2の振動チェック部である。また、基準軸61Aが第2の駆動軸であり重畳軸61Bが第1の駆動軸である場合には、振動チェック部25Aが第2の振動チェック部であり、振動チェック部25Bが第1の振動チェック部である。
工具66A,66Bの移動は、振動切削のための移動と、加工ワーク70に対して加工を進める方向(送り方向)への移動と、を足し合わせたものである。したがって、合成部27は、振動切削のための移動量と、加工ワーク70に対して加工を進めるための移動量とを足し合わせる。振動切削のための工具66Aの移動量は、振動発生部24Aから送られてくる基準振動波形で示され、振動切削のための工具66Bの移動量は、振動発生部24Bから送られてくる重畳振動波形で示される。
合成部27は、振動発生部24Aから送られてくる基準振動波形と、移動量発生部26Aから送られてくる基準軸61Aへの移動量とを合成することによって、基準軸61A用の単位時間あたりの合成移動量を計算する。
また、合成部27は、振動発生部24Bから送られてくる重畳振動波形と、重畳合成部28から送られてくる重畳軸61Bへの移動量とを合成することによって、重畳軸61B用の単位時間あたりの合成移動量を計算する。
合成部27は、補間処理の結果(計算結果)を加減速処理部39に送る。具体的には、合成部27は、基準軸61A用の合成移動量、および重畳軸61B用の合成移動量を加減速処理部39に送る。また、合成部27は、主軸回転数を加減速処理部39に送る。
加減速処理部39は、補間処理部38から供給された補間処理の結果に対して、加速度をなめらかに変化させるための加減速処理を行う。例えば、加減速処理部39は、移動の開始および停止の際の加減速処理を行う。具体的には、加減速処理部39は、基準軸61A用の合成移動量に基づいて、基準軸61Aへの速度指令を生成し、重畳軸61B用の合成移動量に基づいて、重畳軸61Bへの速度指令を生成する。加減速処理部39が生成する速度指令は、単位時間あたりの速度を指定した指令である。加減速処理部39は、X1軸、X2軸、Z1軸およびZ2軸に対して速度指令を生成する。
本実施の形態の加減速処理部39は、振動発生部24Aから基準振動波形を受信した場合には、X1軸およびZ1軸への速度指令を生成し、振動発生部24Bから重畳振動波形を受信した場合には、X2軸およびZ2軸への速度指令を生成する。加減速処理部39は、加減速処理の処理結果である速度指令を軸データ出力部40に送る。加減速処理部39は、主軸回転数に対応する回転数指令を軸データ出力部40に送る。
軸データ出力部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の回転動作とを制御する。
ここで、数値制御装置1による加工制御の動作手順の概略について説明する。工作機械110による加工が開始される際には、PLC36が制御信号処理部35へサイクルスタート信号を出力し、制御信号処理部35が、サイクルスタート信号を補間処理部38に出力する。これにより、補間処理部38が解析処理部37を起動する。
この後、解析処理部37が加工プログラムを1ブロック毎に読み込んで解析し、解析結果である振動条件、移動条件および主軸回転数を共有エリア345に格納する。そして、補間処理部38が、解析処理部37の解析結果に基づいて、基準軸61A用の単位時間あたりの合成移動量および重畳軸61B用の単位時間あたりの合成移動量を算出して加減速処理部39に送る。
これにより、加減速処理部39は、補間処理部38からの基準振動波形および重畳振動波形に基づいて、各軸への速度指令を生成する。この速度指令は、軸データ出力部40から駆動部90に出力され、駆動部90が速度指令に従って各軸の動作を制御する。
なお、数値制御装置1が制御する工作機械110は、加工ワーク70を振動させてもよい。すなわち、工具66A,66Bまたは加工ワーク70を振動させながら加工を行うためには、加工を行う際に、加工ワーク70と工具66A,66Bとを相対的に移動させればよい。この場合の処理については、後述する実施の形態2で説明する。本実施の形態では、加工ワーク70を固定し、工具66Aおよび工具66Bを振動させる場合について説明する。
実施の形態1にかかる工作機械110は、刃物台65Aに基準軸61Aがある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に基準軸61Aが設けられ、刃物台65Bに重畳軸61Bが設けられている。刃物台65Aは、X1軸方向およびZ1軸方向に移動可能となっており、刃物台65Bは、X2軸方向およびZ2軸方向に移動可能となっている。図2に示す工作機械110は、Z1軸が基準軸61Aであり、Z2軸が重畳軸61Bである場合の一例である。数値制御装置1は、Z軸方向に限らずX軸方向に対して重畳制御を行ってもよい。例えば、工作機械110は、X1軸が基準軸であり、X2軸が重畳軸である場合もある。また、工作機械110は、基準軸と重畳軸の組合せを複数有効にしてもよい。すなわち、工作機械110は、Z1軸の基準軸に対してZ2軸が重畳軸であり、かつX1軸の基準軸に対してX2軸が重畳軸であってもよい。数値制御装置1は、Z軸方向およびX軸方向で重畳制御を行う場合、Z1軸方向およびX1軸方向を合成した第1の方向を基準軸とし、Z2軸方向およびX2軸方向を合成した第2の方向を重畳軸とする。第1の方向は、第2の方向に平行である。
刃物台65Aは、基準軸61A側の刃物台であり、刃物台65Bは、重畳軸61B側の刃物台である。刃物台65A,65Bは、旋回式の刃物台である。刃物台65Aは、複数の工具66Aを取り付け可能となっており、工具66Aを旋回させることで使用する工具66Aを切り替える。同様に、刃物台65Bは、複数の工具66Bを取り付け可能となっており、工具66Bを旋回させることで使用する工具66Bを切り替える。
刃物台65Aは、Z1軸方向に振動させられることによって工具66Aで加工ワーク70の振動切削加工を行う。刃物台65Bは、Z2軸方向とX2軸方向とを合成した方向に振動させられることによって工具66Bで加工ワーク70の振動切削加工を行う。刃物台65BのZ2軸方向の振動成分には、重畳制御によるZ1軸方向の振動成分が含まれている。なお、以下の説明では、説明の便宜上、刃物台65Aの振動を工具66Aの振動として説明する場合がある。また、刃物台65Bの振動を工具66Bの振動として説明する場合がある。
工作機械110における振動の制約条件は、以下の(L1−1)から(L1−3)である。
(L1−1)振動切削中の主軸回転数は、基準軸61A側と重畳軸61B側とで同じでなければならない。
(L1−2)主軸60が1回転する間の工具66A,66Bの振動回数は、基準軸61A側と重畳軸61B側とで異なっていてもよい。ただし、基準軸61A側と重畳軸61B側とは、ともに振動切削中の主軸回転数に同期した振動回数で動作しなければならない。
(L1−3)振動の振幅は、基準軸61A側と重畳軸61B側とで異なっていてもよい。
(L1−2)および(L1−3)のように、振動回数および振幅が、基準軸61A側と重畳軸61B側とで異なっていてもよいのは、工作機械110では、基準軸61Aの振動が重畳軸61Bに伝わらないからである。
図3は、実施の形態1にかかる数値制御装置が用いる加工プログラムの一例を示す図である。加工プログラム81は、数値制御装置1が工作機械110を制御する際に用いられる。このため、加工プログラム81は、基準軸61A用の加工プログラム810Aと、重畳軸61B用の加工プログラム810Bとを含んでいる。
加工プログラム81内の主軸回転数指令であるM3 S1は、主軸60への主軸回転数の指令である。M3 S1=1200は、主軸60を1分間あたり1200回転させる指令である。また、G0は位置決め指令であり、G126は、重畳制御指令であり、G165は低周波振動指令であり、G1は移動指令である。G165で規定される「A」は振動の振幅であり、「D」は主軸60が1回転する間の振動回数である。
加工プログラム81では、加工プログラム810AにおけるG0によって工具66Aの位置決めが行われ、加工プログラム810BにおけるG0によって工具66Bの位置決めが行われる。
G126が用いられる場合、G126で指定された軸の移動が重畳制御される。加工プログラム810AにおけるG126は、Z1軸をZ2軸に重畳制御させる指令である。具体的には、G126は、重畳軸61Bの移動を、基準軸61Aの移動に重畳させる指令である。基準軸61Aの移動量が重畳軸61Bの移動量に合成されることにより、重畳軸61BであるZ2軸の動作が、基準軸61AであるZ1軸の動作の上に重畳される。
また、基準軸61A用の加工プログラム810Aにおいて、G165が用いられる場合、G165で指定された振幅および振動回数で工具66AがZ1軸方向に振動させられる。ここでは、工具66Aに対し、振幅を0.2mm、主軸60が1回転する間の振動回数を0.5回で振動させる場合を示している。
また、重畳軸61B用の加工プログラム810Bにおいて、G165が用いられる場合、G165で指定された振幅および振動回数で工具66Bが振動させられる。ここでは、工具66Bに対し、振幅を0.3mm、主軸60が1回転する間の振動回数を4.5回で振動させる場合を示している。
基準軸61Aが第1の駆動軸の場合、基準軸61AでのG165が第1の振動指令であり、重畳軸61Bが第2の駆動軸の場合、重畳軸61BでのG165が第2の振動指令である。また、基準軸61Aが第2の駆動軸の場合、基準軸61AでのG165が第2の振動指令であり、重畳軸61Bが第1の駆動軸の場合、重畳軸61BでのG165が第1の振動指令である。
加工プログラム81が用いられる場合、振動計算部22A,22Bは、以下の(M1−1)から(M1−3)の何れかの方法で重畳制御用の新たな振動回数および重畳制御用の新たな主軸回転数を計算し変更する。これにより、変更後の振動回数および主軸回転数で各軸が制御される。
(M1−1)重畳軸61Bの振動回数を基準軸61Aの振動回数に応じて変更する方法
この場合、振動計算部22Aは、基準軸61Aの振動回数であるD=0.5と、主軸60への主軸回転数指令であるS1=1200から、基準軸61Aの振動回数に同期することができる主軸回転数を計算する。振動計算部22Aは、数値制御装置1内の情報を用いて主軸回転数を計算する。振動計算部22Aが計算した主軸回転数が、振動切削の際の実際の主軸回転数となる。振動計算部22Aは、主軸回転数に複数の候補がある場合には、当初の主軸回転数である1200(回/min)に近いものを採用する。
振動計算部22Aが計算した主軸回転数が、1205(回/min)であるとする。振動計算部22Aは、計算した主軸回転数を振動計算部22Bに送る。振動計算部22Bは、計算の結果である1205(回/min)に同期するように、重畳軸61Bの振動回数を計算し変更する。振動計算部22Bは、数値制御装置1内の情報を用いて重畳軸61Bの振動回数を計算する。振動計算部22Bは、重畳軸61Bの振動回数に複数の候補がある場合には、当初の重畳軸61Bの振動回数である4.5回に近いものを採用する。ここでは、振動計算部22Bが計算した重畳軸61Bの振動回数が3.5回であるとする。
(M1−2)基準軸61Aの振動回数を重畳軸61Bの振動回数に応じて変更する方法
この場合、振動計算部22Bは、重畳軸61Bの振動回数であるD=4.5と、主軸60への主軸回転数指令であるS1=1200から、重畳軸61Bの振動回数に同期することができる主軸回転数を計算する。振動計算部22Bは、数値制御装置1内の情報を用いて主軸回転数を計算する。振動計算部22Bが計算した主軸回転数が、振動切削の際の実際の主軸回転数となる。振動計算部22Bは、主軸回転数に複数の候補がある場合には、当初の主軸回転数である1200(回/min)に近いものを採用する。
振動計算部22Bが計算した主軸回転数が、1250(回/min)であるとする。振動計算部22Bは、計算した主軸回転数を振動計算部22Aに送る。振動計算部22Aは、計算の結果である1250(回/min)に同期するように、基準軸61Aの振動回数を計算し変更する。振動計算部22Aは、数値制御装置1内の情報を用いて基準軸61Aの振動回数を計算する。振動計算部22Aは、基準軸61Aの振動回数に複数の候補がある場合には、当初の基準軸61Aの振動回数である0.5回に近いものを採用する。ここでは、振動計算部22Aが計算した重畳軸61Bの振動回数が1.5回であるとする。
(M1−3)基準軸61Aの振動回数と重畳軸61Bの振動回数の平均をとる方法
基準軸61Aの振動回数と重畳軸61Bの振動回数の平均は、振動計算部22Aが計算してもよいし振動計算部22Bが計算してもよい。ここでは、振動計算部22Aが基準軸61Aの振動回数と重畳軸61Bの振動回数の平均を計算する場合について説明する。
振動計算部22Aは、基準軸61Aの振動回数であるD=0.5と、重畳軸61Bの振動回数であるD=4.5との平均である平均回数を計算する。ここでの平均回数は、2.5回である。振動計算部22Aは、計算結果を基準軸61Aの振動回数および重畳軸61Bの振動回数に設定する。
また、振動計算部22Aは、計算した平均回数の2.5回に同期することができる主軸回転数を計算する。振動計算部22Aは、数値制御装置1内の情報を用いて主軸回転数を計算する。振動計算部22Aは、主軸回転数に複数の候補がある場合には、当初の主軸回転数である1200(回/min)に近いものを採用する。ここでは、振動計算部22Aが計算した主軸回転数が、1227(回/min)であるとする。
つぎに、工作機械110を制御する際の処理手順について説明する。図4は、実施の形態1にかかる数値制御装置の第1の制御処理の処理手順を示すフローチャートである。図4は、数値制御装置1による工作機械110への制御処理手順を示している。ここでの第1の制御処理は、重畳軸61Bの振動回数を基準軸61Aの振動回数に応じた振動回数に変更する場合の制御処理である。
振動指令解析部11Aは、基準軸61A用の加工プログラム810Aに含まれる振動指令を解析して(ステップS110)、基準軸61Aの振動条件を生成する。また、振動指令解析部11Bは、重畳軸61B用の加工プログラム810Bに含まれる振動指令を解析して(ステップS120)、重畳軸61Bの振動条件を生成する。本実施の形態では、加工プログラム810Aの振動指令に基準軸61Aの振幅である第1の振幅が含まれており、加工プログラム810Bの振動指令に重畳軸61Bの振幅である第2の振幅が含まれている。
振動指令解析部11Aは、基準軸61Aの振動条件を共有エリア345に格納し、振動指令解析部11Bは、重畳軸61Bの振動条件を共有エリア345に格納する。振動計算部22A,22Bは、基準軸61Aの振動回数と、重畳軸61Bの振動回数と、主軸回転数とを共有エリア345から読み出す。
振動計算部22Aは、基準軸61Aの振動回数と、重畳軸61Bの振動回数とが異なるか否かを判定する(ステップS130)。基準軸61Aの振動回数と、重畳軸61Bの振動回数とが異なる場合(ステップS130、Yes)、振動計算部22A,22Bは、前述の(M1−1)の処理を実行する。具体的には、振動計算部22Aが、基準軸61Aの振動回数に同期する主軸回転数を計算し、振動計算部22Bが、この主軸回転数に同期するよう重畳軸61Bの振動回数を変更する。このように、振動計算部22A,22Bは、重畳軸61Bの振動回数を基準軸61Aの振動回数に応じて変更する(ステップS140)。
なお、ステップS140では、振動計算部22A,22Bが、前述の(M1−2)の処理によって、基準軸61Aの振動回数を重畳軸61Bの振動回数に応じて変更してもよい。また、ステップS140では、振動計算部22Aまたは振動計算部22Bが、前述の(M1−3)の処理によって、基準軸61Aの振動回数と重畳軸61Bの振動回数との平均回数を計算し、平均回数を基準軸61Aの振動回数および重畳軸61Bの振動回数に設定してもよい。
振動計算部22A,22Bは、上述の(M1−1)から(M1−3)の何れかの処理を実行することによって、基準軸61Aの振動回数と、重畳軸61Bの振動回数と、主軸回転数とを求める。振動計算部22Aは、基準軸61Aの振動回数を振動発生部24Aに送り、振動計算部22Bは、重畳軸61Bの振動回数を、振動発生部24Bに送る。また、振動計算部22Aまたは振動計算部22Bが、主軸回転数を合成部27に送る。
差分計算部23Bは、基準軸61Aの振幅、および重畳軸61Bの振幅を共有エリア345から読み出す。差分計算部23Bは、重畳軸61Bの振幅と基準軸61Aの振幅との差分である振幅差分を計算する(ステップS150)。さらに、差分計算部23Bは、重畳軸61Bの振幅から振幅差分を減算する(ステップS160)。差分計算部23Bは、計算結果である、重畳軸61Bの振幅を振動発生部24Bに送る。
重畳軸61Bの振幅が、基準軸61Aの振幅よりも大きい場合、差分は正の値となるので、重畳軸61Bの振幅から正の値の振幅が差し引かれることとなる。これにより、重畳軸61Bの振幅は当初のものよりも小さくなる。
一方、重畳軸61Bの振幅が、基準軸61Aの振幅よりも小さい場合、差分は負の値となるので、重畳軸61Bの振幅から負の値の振幅が差し引かれることとなる。これにより、重畳軸61Bの振幅は当初のものよりも大きくなる。
このように、差分計算部23Bは、重畳軸61Bの振幅である第2の振幅から、基準軸61Aの振幅である第1の振幅を差し引いた振幅差分に基づいて、刃物台65Bを振動させる際の振幅である第3の振幅を計算する。
振動発生部24Bは、振動計算部22Bから送られてきた重畳軸61Bの振動回数、および差分計算部23Bから送られてきた重畳軸61Bの振幅に基づいて、重畳振動波形を生成する。
また、振動発生部24Aは、振動計算部22Bから送られてきた基準軸61Aの振動回数および基準軸61Aの振幅に基づいて、基準振動波形を生成する。
振動発生部24Aは、生成した基準振動波形を合成部27に送り、振動発生部24Bは、生成した重畳振動波形を合成部27に送る。合成部27は、基準振動波形と、基準軸61Aへの移動条件の補間処理の結果である移動量とを合成した、基準軸61A用の合成移動量を計算する。また、合成部27は、重畳振動波形と、重畳軸61Bへの移動条件の補間処理の結果である移動量とを合成した、重畳軸61B用の合成移動量を計算する。
加減速処理部39は、基準軸61A用の合成移動量に基づいて、基準軸61Aへの速度指令を生成し、重畳軸61B用の合成移動量に基づいて、重畳軸61Bへの速度指令を生成する。また、加減速処理部39は、主軸回転数に対応する回転数指令を生成する。加減速処理部39は、主軸60への回転数指令、基準軸61Aへの速度指令、および重畳軸61Bへの速度指令を軸データ出力部40に送る。これにより、軸データ出力部40は、回転数指令、および速度指令といった指令を駆動部90に出力する(ステップS170)。
この結果、(M1−1)の方法が用いられた場合には、振動計算部22Bが計算して変更した重畳軸61Bの振動回数に従って、Z2軸の振動動作が制御されることとなる。また、振動計算部22Aが計算して変更した主軸回転数に従って主軸60の回転が制御されることとなる。
具体的には、工作機械110は、振動計算部22Aが計算した主軸回転数で第1スピンドル75が加工ワーク70を回転させ、振動計算部22Bが計算した振動回数で刃物台65Bが工具66Bを振動させる。この場合において、刃物台65Aは、振動回数を変更することなく工具66Aを振動させる。
また、(M1−2)の方法が用いられた場合には、振動計算部22Aが計算して変更した基準軸61Aの振動回数に従って、Z1軸の振動動作が制御されることとなる。また、振動計算部22Bが計算して変更した主軸回転数に従って主軸60の回転が制御されることとなる。
具体的には、工作機械110は、振動計算部22Bが計算した主軸回転数で第1スピンドル75が加工ワーク70を回転させ、振動計算部22Aが計算した振動回数で刃物台65Aが工具66Aを振動させる。この場合において、刃物台65Bは、振動回数を変更することなく工具66Bを振動させる。
また、(M1−3)の方法が用いられた場合には、振動計算部22Aが設定した基準軸61Aの振動回数に従って、Z1軸の動作が制御され、振動計算部22Bが設定した重畳軸61Bの振動回数に従って、Z2軸の振動動作が制御されることとなる。また、振動計算部22Aまたは振動計算部22Bが計算した主軸回転数に従って主軸60の回転が制御されることとなる。
具体的には、工作機械110は、振動計算部22Aまたは振動計算部22Bが計算した主軸回転数で第1スピンドル75が加工ワーク70を回転させる。また、振動計算部22Aが計算した振動回数で刃物台65Aが工具66Aを振動させ、振動計算部22Bが計算した振動回数で刃物台65Bが工具66Bを振動させる。
なお、振動計算部22A,22Bは、ステップS140において、(M1−1)から(M1−3)の全ての処理を実行してもよい。この場合、振動計算部22A,22Bは、(M1−1)から(M1−3)による計算結果のうち、当初の主軸回転数との差が少ない主軸回転数を選択する。
また、数値制御装置1へは、予め(M1−1)から(M1−3)の何れを採用するかを設定しておいてもよいし、ユーザが(M1−1)から(M1−3)の何れを採用するかを選択してもよい。また、振動計算部22A,22Bは、先にG165の指令を実行する側に合わせて、(M1−1)または(M1−2)を選択してもよい。すなわち、基準軸61Aで先にG165の指令を実行する場合、振動計算部22A,22Bは、(M1−1)を適用し、重畳軸61Bで先にG165の指令を実行する場合、振動計算部22A,22Bは、(M1−2)を適用する。
このように、制御演算部2は、基準軸61Aの振動回数、重畳軸61Bの振動回数および主軸回転数の少なくとも1つを変更して、基準軸61A、重畳軸61Bおよび主軸60を制御する。
ところで、加工プログラム81の中には、基準軸61Aへの振動指令しかなく重畳軸61Bへの振動指令が無い場合がある。この場合の処理手順について説明する。図5は、実施の形態1にかかる数値制御装置の第2の制御処理の処理手順を示すフローチャートである。ここでの第2の制御処理は、重畳軸61Bへの振動指令が無い場合に重畳軸61Bに振動回数を設定する場合の制御処理である。
ここでは、加工プログラム81内に重畳軸61Bへの振動指令が無い場合に、数値制御装置1が、重畳軸61Bに基準軸61Aと同じ振動指令を出力する場合の処理について説明する。
図5におけるステップS210,220の処理は、ステップS110,S120の処理と同じであるので、その説明を省略する。
振動チェック部25Aは、振動指令解析部11Bによって重畳軸61Bへの振動条件が生成されたか否かに基づいて、重畳軸61Bへの振動指令があるか否かを判定する(ステップS230)。また、振動チェック部25Bは、振動指令解析部11Aによって基準軸61Aへの振動条件が生成されたか否かに基づいて、基準軸61Aへの振動指令があるか否かを判定する。
ここでは、基準軸61Aへの振動指令があるので、振動チェック部25Bは、基準軸61Aへの振動指令があることを振動計算部22A,22Bに通知する。これにより、振動計算部22A,22Bは、共有エリア345から基準軸61Aの振動条件を読み出す。
重畳軸61Bへの振動指令がある場合(ステップS230、Yes)、振動チェック部25Aは、重畳軸61Bへの振動指令があることを振動計算部22A,22Bに通知する。これにより、振動計算部22A,22Bは、共有エリア345から重畳軸61Bの振動条件を読み出す。この後、数値制御装置1は、図4で説明したステップS130以降の処理を実行する。
一方、重畳軸61Bへの振動指令がない場合(ステップS230、No)、振動チェック部25Aは、重畳軸61Bへの振動指令がないことを振動計算部22A,22Bおよび差分計算部23Bに通知する。これにより、振動計算部22A,22Bは、ともに基準軸61Aの振動の情報を読み出す。振動の情報には、振動回数と振幅が含まれている。そして、振動計算部22Aは、基準軸61Aの振動の情報に基づいて、基準軸61Aの新たな振動の情報および新たな主軸回転数を計算し、振動計算部22Bは、基準軸61Aの振動の情報に基づいて、重畳軸61Bの新たな振動の情報を計算する。このように、重畳軸61Bへの振動指令がない場合には、振動計算部22Bは、基準軸61Aの振動に基づいて、重畳軸61Bの振動を計算する(ステップS240)。なお、差分計算部23Bは、振幅差分を計算しない。
この後、図4のフローチャートで説明した処理と同様の処理によって、駆動部90への指令が生成されて駆動部90へ出力される(ステップS250)。
なお、振動チェック部25Aは、重畳軸61Bへの振動指令がないことを合成部27に通知してもよい。この場合、合成部27は、振動発生部24Aから送られてくる基準振動波形と同じ波形を重畳振動波形に設定したうえで、重畳振動波形と、重畳軸61Bへの移動量とを合成する。
また、加工プログラム81の中には、重畳軸61Bへの振動指令しかなく基準軸61Aへの振動指令が無い場合がある。この場合も、数値制御装置1は、上述した図5のフローチャートと同様の処理手順によって、基準軸61Aの振動条件に重畳軸61Bの振動条件を適用する。なお、数値制御装置1は、図5のステップS230において、重畳軸61Bへの振動指令と、基準軸61Aへの振動指令との両方があるか否かを判定してもよい。
また、加工プログラム81の中に重畳軸61Bへの振動指令が無い場合には、数値制御装置1は、基準軸61Aにのみ振動指令を出力してもよい。この場合の処理手順について説明する。
図6は、実施の形態1にかかる数値制御装置の第3の制御処理の処理手順を示すフローチャートである。ここでは、加工プログラム81内に重畳軸61Bへの振動指令が無い場合に、数値制御装置1が、基準軸61Aにのみ振動指令を出力する場合の処理について説明する。ここでの第3の制御処理は、重畳軸61Bへの振動指令が無い場合に基準軸61A側のみを振動させる場合の制御処理である。
図6におけるステップS310からS330の処理は、図5におけるステップS210からS230の処理と同様の処理であるので、その説明は省略する。ステップS330において、重畳軸61Bへの振動指令がない場合(ステップS330、No)、振動チェック部25Aは、重畳軸61Bへの振動指令がないことを振動計算部22A,22Bおよび差分計算部23Bに通知する。この場合の振動計算部22Bは、基準軸61Aの振動条件を読み出さず、重畳軸61Bの振動条件を計算しない。振動計算部22Aは、基準軸61Aの振動条件に基づいて、新たな主軸回転数および重畳制御用の新たな基準軸61Aの振動回数を計算する。
この後、図4のフローチャートで説明した場合と同様の処理によって、駆動部90への指令が生成されて駆動部90へ出力される。この場合において、軸データ出力部40は、基準軸61Aにのみ、振動条件に対応する速度指令を出力し(ステップS340)、重畳軸61Bへは振動条件に対応する速度指令を出力しない。換言すると、軸データ出力部40は、基準軸61Aにのみ、移動条件および振動条件に対応する速度指令を出力し、重畳軸61Bへは移動条件に対応する速度指令を出力する。
また、加工プログラム81の中には、重畳軸61Bへの振動指令しかなく基準軸61Aへの振動指令が無い場合がある。この場合も、数値制御装置1は、上述した図6のフローチャートと同様の処理手順によって、基準軸61Aの振動条件に重畳軸61Bの振動条件を適用する。
図5で説明した処理が実行されることにより、基準軸61Aと重畳軸61Bとは、振動動作および移動動作が同じになる。一方、図6で説明した処理が実行されることにより、重畳軸61Bは、振動しないので、基準軸61Aと重畳軸61Bとは、移動動作が同じになる。
数値制御装置1へは、予め図5で説明した処理と図6で説明した処理との何れを実行するかを設定しておいてもよいし、ユーザが何れを採用するかを選択してもよい。図5で説明した処理と図6で説明した処理の何れを実行させるかは、何れの方法で決定してもよい。図5で説明した処理と図6で説明した処理は、例えば、パラメータを用いて指定されてもよいし、加工プログラム81内で指定されてもよい。
なお、刃物台65Aも刃物台65Bと同様に、2軸方向を合成した方向に移動および振動させてもよい。この場合、刃物台65Aは、X1軸方向とZ1軸方向を合成した方向、すなわちX1軸方向およびZ1軸方向を用いた補間方向に移動および振動する。
このように、実施の形態1では、重畳軸61Bへの振動を基準軸61Aへの振動に応じて変更するか、または基準軸61Aへの振動を重畳軸61Bへの振動に応じて変更している。これにより、基準軸61Aと重畳軸61Bとで異なる振動条件が設定されている場合であっても、基準軸61Aおよび重畳軸61Bの両方で同時に所望の振動を行わせることができる。したがって、数値制御装置1は、重畳制御を行う場合にも基準軸61Aおよび重畳軸61Bで所望の低周波振動切削を実行させることが可能となる。また、加工ワーク70の異なる箇所を同時加工するので、加工時間を短縮することが出来る効果を有する。
実施の形態2.
つぎに、図7から図20を用いてこの発明の実施の形態2について説明する。実施の形態2では、主軸台に基準軸がある1スピンドル2刃物台の旋盤に対して、重畳制御および低周波振動切削の制御を行う。
図7は、実施の形態2にかかる工作機械の構成を示す図である。図7では、図2と同様に、紙面の横方向がZ軸方向であり、紙面の縦方向がX軸方向である。図7の各構成要素のうち図2に示す実施の形態1の工作機械110と同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
実施の形態2にかかる工作機械120は、1スピンドル2刃物台の旋盤である。工作機械120の一例は、自動旋盤である。工作機械120では、第1スピンドル75による加工ワーク70の回転軸が、主軸60であり、この主軸60をZ軸方向に移動させるZ1軸が基準軸62Aである。
工作機械120は、第1の刃物台である刃物台65A´と第2の刃物台である刃物台65Bとを備えており、刃物台65Bに重畳軸61Bが設けられている。刃物台65A´は、X1軸方向に移動可能となっており、刃物台65Bは、X2軸方向およびZ2軸方向に移動可能となっている。また、加工ワーク70は、Z1軸方向に移動可能となっている。なお、ここでのZ1軸方向は、図2で説明したZ1軸方向と正方向が逆向きとなっているが、Z1軸方向は、回転軸と同じ方向であれば何れが正方向であってもよい。このように、工作機械120では、Z1軸が基準軸62Aであり、Z2軸が重畳軸61Bである。なお、工作機械120は、刃物台65A´に重畳軸61Bが設けられてもよい。
刃物台65A´は、刃物台65Aと同様に旋回式の刃物台である。刃物台65A´は、刃物台65Aと比較して、移動方向がX1軸方向だけであり、Z1軸方向に移動しない点が異なる。
工作機械120では、第1スピンドル75が加工ワーク70をZ1軸方向に振動させ、刃物台65Bが工具66BをZ2軸方向に振動させることによって、工具66A,66Bで加工ワーク70の振動切削加工を行う。
工作機械120における振動の制約条件は、以下の(L2−1)から(L2−3)である。
(L2−1)振動切削中の主軸回転数は、基準軸62A側と重畳軸61B側とで同じでなければならない。
(L2−2)主軸60が1回転する間の工具66A,66Bの振動回数は、基準軸62A側と重畳軸61B側とで同じでなければならない。
(L2−3)振動の振幅は、基準軸62A側と重畳軸61B側とで異なっていてもよい。ただし、基準軸62A側の振動を考量して、重畳軸61B側を振動させなければならない。
(L2−2)のように、振動回数が、基準軸62A側と重畳軸61B側とで同じでなければならないのは、工作機械120では、加工ワーク70が振動するので、基準軸62Aの振動が重畳軸61Bに伝わるからである。工作機械120では、振動回数が、基準軸62A側と重畳軸61B側とで同じでなければ、重畳軸61B側の振動が正弦波または三角波といった一定形状の波でなくなる。
また、(L2−3)のように、基準軸62A側の振動を考量して重畳軸61B側を振動させなければならないのは、工作機械120では、加工ワーク70が振動するので、基準軸62Aの振動が重畳軸61Bに伝わるからである。
図8は、実施の形態2にかかる数値制御装置が用いる加工プログラムの一例を示す図である。なお、加工プログラム82Pのうち、実施の形態1の図3で説明した加工プログラム81と同様の指令については、その説明を省略する。
加工プログラム82Pは、数値制御装置1が工作機械120を制御する際に用いられる。このため、加工プログラム82Pは、基準軸62A用の加工プログラム820Aと、重畳軸61B用の加工プログラム820Bとを含んでいる。
加工プログラム820AでのG165は、加工ワーク70への基準軸62Aの方向の低周波振動指令である。したがって、基準軸62A用の加工プログラム820Aにおいて、G165が用いられる場合、G165で指定された振幅および振動回数で加工ワーク70が基準軸62Aの方向に振動させられる。ここでは、工具66Aに対し、振幅を0.2mm、主軸60が1回転する間の振動回数を2.5回で振動させる場合を示している。また、重畳軸61B用の加工プログラム820Bでは、工具66Bに対し、振幅を0.3mm、主軸60が1回転する間の振動回数を4.5回で振動させる場合を示している。また、加工プログラム820Aでは、M3 S1=1200となっているので、主軸60への主軸回転数指令は1200回転である。
加工プログラム82Pが用いられる場合、振動計算部22Aは、以下の(M2−1)から(M2−3)の何れかの方法で振動回数および主軸回転数を計算し変更する。これにより、変更後の振動回数および主軸回転数で各軸が制御される。
(M2−1)重畳軸61Bの振動回数を基準軸62Aの振動回数に合わせる方法
この場合、振動計算部22Bは、重畳軸61Bの振動回数であるD=4.5を、基準軸62Aの振動回数であるD=2.5に変更する。さらに、振動計算部22Bは、重畳軸61Bの振動回数であるD=2.5と、主軸60への主軸回転数指令であるS1=1200から、基準軸62A側および重畳軸61Bの振動回数に同期することができる主軸回転数を計算する。振動計算部22Bは、数値制御装置1内の情報を用いて主軸回転数を計算する。振動計算部22Bが計算する主軸回転数が、振動切削の際の実際の主軸回転数となる。振動計算部22Bは、主軸回転数に複数の候補がある場合には、当初の主軸回転数である1200(回/min)に近いものを採用する。ここでは、振動計算部22Bが計算した主軸回転数が、1227(回/min)であるとする。
(M2−2)基準軸62Aの振動回数を重畳軸61Bの振動回数に合わせる方法
この場合、振動計算部22Aは、基準軸62Aの振動回数であるD=2.5を、重畳軸61Bの振動回数であるD=4.5に変更する。さらに、振動計算部22Aは、基準軸62Aの振動回数であるD=4.5と、主軸60への主軸回転数指令であるS1=1200から、基準軸62A側および重畳軸61Bの振動回数に同期することができる主軸回転数を計算する。振動計算部22Aは、数値制御装置1内の情報を用いて主軸回転数を計算する。振動計算部22Aが計算する主軸回転数が、振動切削の際の実際の主軸回転数となる。振動計算部22Aは、主軸回転数に複数の候補がある場合には、当初の主軸回転数である1200(回/min)に近いものを採用する。ここでは、振動計算部22Aが計算した主軸回転数が、1250(回/min)であるとする。なお、振動計算部22Bが、主軸回転数を計算してもよい。
(M2−3)基準軸62Aの振動回数と重畳軸61Bの振動回数の平均をとる方法
基準軸62Aの振動回数と重畳軸61Bの振動回数の平均は、振動計算部22Aが計算してもよいし振動計算部22Bが計算してもよい。ここでは、振動計算部22Aが基準軸62Aの振動回数と重畳軸61Bの振動回数の平均を計算する場合について説明する。
振動計算部22Aは、基準軸62Aの振動回数であるD=2.5と、重畳軸61Bの振動回数であるD=4.5との平均である平均回数を計算する。ここでの平均回数は、3.5回である。振動計算部22Aは、計算結果を基準軸62Aの振動回数および重畳軸61Bの振動回数に設定する。振動計算部22Aは、重畳軸61Bの振動回数を振動計算部22Bに送る。
また、振動計算部22Aは、計算した平均回数の3.5回に同期することができる主軸回転数を計算する。振動計算部22Aは、数値制御装置1内の情報を用いて主軸回転数を計算する。振動計算部22Aは、主軸回転数に複数の候補がある場合には、当初の主軸回転数である1200(回/min)に近いものを採用する。ここでは、振動計算部22Aが計算した主軸回転数が、1205(回/min)であるとする。
つぎに、工作機械120を制御する際の処理手順について説明する。図9は、実施の形態2にかかる数値制御装置の第1の制御処理の処理手順を示すフローチャートである。図9は、数値制御装置1による工作機械120への制御処理手順を示している。ここでの第1の制御処理は、重畳軸61Bの振動回数を基準軸62Aの振動回数に合わせる場合の制御処理である。
図9におけるステップS410からS420の処理は、図4におけるステップS110からS120の処理と同様の処理であるので、その説明は省略する。解析処理部37は、振動条件などの解析結果を補間処理部38に送る。
振動計算部22Bは、前述の(M2−1)の方法によって、ステップS430,S440の処理を実行する。すなわち、振動計算部22Bは、重畳軸61Bの振動回数を基準軸62Aの振動回数に合わせる(ステップS430)。そして、振動計算部22Bは、ステップS430で求めた振動回数と、当初の主軸回転数とに基づいて、基準軸62A側および重畳軸61Bの振動回数に同期することができる主軸回転数を計算する(ステップS440)。なお、振動計算部22Bは、前述の(M2−2)の処理によって、基準軸62Aの振動回数および重畳軸61Bの振動回数を計算してもよい。
この後、図4のフローチャートで説明した場合と同様の処理によって、振動発生部24Aが基準振動波形を生成し、振動発生部24Bが重畳振動波形を生成する。そして、図4のステップS170と同様の処理によって、軸データ出力部40が、主軸回転数の回転数指令および速度指令を駆動部90に出力する(ステップS450)。
この結果、(M2−1)の方法が用いられた場合、振動計算部22Bが計算して変更した重畳軸61Bの振動回数に従って、Z2軸の振動動作が制御されることとなる。また、振動計算部22Bが計算した主軸回転数に従って主軸60の回転が制御されることとなる。
また、(M2−2)の方法が用いられた場合には、振動計算部22Aが計算して変更した基準軸62Aの振動回数に従って、Z1軸の振動動作が制御されることとなる。また、振動計算部22Aが計算した主軸回転数に従って主軸60の回転が制御されることとなる。
なお、ステップS430では、振動計算部22Bが、前述の(M2−3)の処理によって、基準軸62Aの振動回数と重畳軸61Bの振動回数の平均をとってもよい。この場合の処理手順について説明する。
図10は、実施の形態2にかかる数値制御装置の第2の制御処理の処理手順を示すフローチャートである。ここでの第2の制御処理は、重畳軸61Bおよび基準軸62Aに、重畳軸61Bの振動回数と基準軸62Aの振動回数との平均を設定する場合の制御処理である。図10におけるステップS510からS520の処理は、図4におけるステップS110からS120の処理と同様の処理であるので、その説明は省略する。
振動指令解析部11Aは、基準軸62Aの振動条件を共有エリア345に格納し、振動指令解析部11Bは、重畳軸61Bの振動条件を共有エリア345に格納する。
振動計算部22Bは、前述の(M2−3)の処理によって、ステップS530,S540の処理を実行する。すなわち、振動計算部22Bは、基準軸62Aの振動回数と重畳軸61Bの振動回数の平均である平均振動回数を計算する(ステップS530)。そして、振動計算部22Bは、ステップS530で求めた振動回数と、当初の主軸回転数とに基づいて、平均振動回数に同期することができる主軸回転数を計算する(ステップS540)。なお、ステップS530,S540の処理は、振動計算部22Aが計算してもよい。
この後、図4のフローチャートで説明した場合と同様の処理によって、振動発生部24Aが基準振動波形を生成し、振動発生部24Bが重畳振動波形を生成する。そして、図4のステップS170と同様の処理によって、軸データ出力部40が、主軸回転数の回転数指令および速度指令を駆動部90に出力する(ステップS550)。
(M2−3)の方法が用いられた場合には、平均振動回数に従って、Z1軸およびZ2軸の振動動作が制御されることとなる。また、振動計算部22Aまたは振動計算部22Bが計算した主軸回転数に従って主軸60の回転が制御されることとなる。
なお、振動計算部22A,22Bは、ステップS430,530において、(M2−1)から(M2−3)の全ての処理を実行してもよい。この場合、振動計算部22A,22Bは、(M2−1)から(M2−3)による計算結果のうち、当初の主軸回転数との差が少ない主軸回転数を選択する。
また、数値制御装置1へは、予め(M2−1)から(M2−3)の何れを採用するかを設定しておいてもよいし、ユーザが(M2−1)から(M2−3)の何れを採用するかを選択してもよい。また、振動計算部22A,22Bは、先にG165の指令を実行する側に合わせて、(M2−1)または(M2−2)を選択してもよい。すなわち、基準軸62Aで先にG165の指令を実行する場合、振動計算部22A,22Bは、(M2−1)を適用し、重畳軸61Bで先にG165の指令を実行する場合、振動計算部22A,22Bは、(M2−2)を適用する。
ところで、加工プログラム82Pの中には、基準軸62Aへの振動指令しかなく重畳軸61Bへの振動指令が無い場合がある。また、加工プログラム82Pの中には、重畳軸61Bへの振動指令しかなく基準軸62Aへの振動指令が無い場合がある。これらの場合、数値制御装置1は、実施の形態1の図5で説明した処理と同様の処理を行う。
ここで、基準軸62Aへの振幅および重畳軸61Bへの振幅に基づいた、振幅差分の算出方法について説明する。振幅差分は、重畳軸61Bへの振動条件で規定された振幅(後述の指令振幅P1bなど)と、基準軸62Aへの振動条件で規定された振幅(後述の指令振幅P1aなど)との差分である。ここでは、基準軸62Aの振幅が重畳軸61Bの振幅よりも小さな場合と、重畳軸61Bの振幅が基準軸62Aの振幅以下の場合と、に分けて説明する。
(基準軸62Aの指令振幅P1a<重畳軸61Bの指令振幅P1bの場合)
図11は、実施の形態2にかかる工作機械の重畳軸への振動指令の第1例を示す図であり、図12は、実施の形態2にかかる工作機械の基準軸への振動指令の第1例を示す図である。図11および図12に示すグラフの横軸は、主軸60の回転角度であり、時間T1は、主軸60が1回転するのに要する時間である。また、図11に示すグラフの縦軸は、重畳軸61BのZ2軸方向の位置であり、図12に示すグラフの縦軸は、基準軸62AのZ1軸方向の位置である。なお、図11では、縦軸の正方向が、Z2軸の正方向に対応し、図12では、縦軸の正方向が、Z1軸の正方向に対応している。
図11に示す波形41Tb,42Tbは、重畳軸61Bへの振動指令に対応する振動波形であり、図12に示す波形41Ta,42Taは、基準軸62Aへの振動指令に対応する振動波形である。ここでは、説明の便宜上、波形41Tb,42Tbを工具66Bの振動波形とし、波形41Ta,42Taを工具66Aの振動波形として説明する。
図11および図12に示すように、工作機械120では、主軸60が1回転する間の工具66A,66Bの振動回数は、基準軸62A側と重畳軸61B側とで同じでなければならない。ここでは、工具66A,66Bの振動回数が2.5回である場合を示している。
図11では、主軸60が1回転する間の、工具66BへのZ2軸方向への送り量を送り量F1で示している。この送り量F1は、工具66Bによる加工ワーク70へのZ2軸方向の加工速度に対応している。
図12では、主軸60が1回転する間の、工具66AへのZ1軸方向への送り量を送り量F2で示している。この送り量F2は、工具66Aによる加工ワーク70へのZ1軸方向の加工速度に対応している。
図11に示すように、工具66Bは、主軸60の1回目の回転の際に波形41Tbで移動し、主軸60の2回目の回転の際に波形42Tbで移動する。この場合において、波形41Tbと波形42Tbとで重なる時間帯t10,t11がある。これらの時間帯t10,t11は、主軸60の2回目の回転の時間帯である。これらの時間帯t10,t11では、主軸60の1回目の回転で既に加工された位置が、主軸60の2回目の回転で加工されない。主軸60の1回目の回転で既に加工された位置は、加工ワーク70が既に切屑となって加工されている部分であり、この位置が主軸60の2回目の回転で加工されない。すなわち、切屑が分断されることを示している。このように、主軸60の1回目の回転で加工した位置が、主軸60の2回目の回転による時間帯t10,t11において、空振り加工(エアカット)されることによって、時間帯t10,t11のそれぞれで、加工ワーク70の切屑が分断されることとなる。この結果、加工ワーク70の切屑を細かく排出することができる。
図12に示す波形41Ta,42Taでも、波形41Taと波形42Taとで重なる時間帯t12,t13がある。この時間帯t12,t13も時間帯t10,t11と同様に工具66Aが加工ワーク70に接触しないので、加工ワーク70の切屑を細かく排出することができる。
工具66Bへの送り量F1は、工具66Aへの送り量F2よりも大きいので、重畳軸61Bの指令振幅P1bは、基準軸62Aの指令振幅P1aよりも大きい。この場合に、重畳軸61Bの指令振幅P1bから、基準軸62Aの指令振幅P1aを差し引くと、重畳軸61Bと基準軸62Aとの振幅差分(正の値)を算出することができる。
図13は、図11および図12の振動指令から算出される振動波形を示す図である。図13に示す波形41Tc,42Tcは、重畳軸61Bの波形41Tb,42Tbから基準軸62Aの波形41Ta,42Taを引いた差分に対応する振動波形である。したがって、図13に示す差分振幅P1cは、指令振幅P1bから指令振幅P1aを引いたものに対応している。図13に示す送り量F3は、波形41Tc,42Tcで工具66Bを振動させた場合の送り量であり、差分振幅P1cに基づいて設定される。このように、基準軸62Aの指令振幅P1a<重畳軸61Bの指令振幅P1bの場合には、重畳軸61Bと基準軸62Aとの振幅差分は、正の値になる。
なお、指令振幅P1bを固定値とした場合、送り量F1が速くなり過ぎると、波形41Tbと波形42Tbとが重ならなくなるので時間帯t10,t11がなくなる。この場合、加工ワーク70と工具66Bとが離れなくなるので、切屑の分断が出来なくなる。したがって、送り量F1を増加させる際には送り量F1に応じて指令振幅P1bを増加させる。これにより、送り量F1が速くなった場合であっても切屑の分断が可能となる。
(基準軸62Aの指令振幅P1a≧重畳軸61Bの指令振幅P1bの場合)
図14は、実施の形態2にかかる工作機械の重畳軸への振動指令の第2例を示す図であり、図15は、実施の形態2にかかる工作機械の基準軸への振動指令の第2例を示す図である。図14に示すグラフは、図11に示すグラフと同様のグラフであり、図15に示すグラフは、図12に示すグラフと同様のグラフである。
図14に示す波形43Tb,44Tbは、重畳軸61Bへの振動指令に対応する振動波形であり、図15に示す波形43Ta,44Taは、基準軸62Aへの振動指令に対応する振動波形である。
図14では、主軸60が1回転する間の、工具66BへのZ2軸方向への送り量を送り量F4で示している。また、図15では、主軸60が1回転する間の、工具66AへのZ1軸方向への送り量を送り量F5で示している。
ここでは、工具66Bへの送り量F4は、工具66Aへの送り量F5よりも小さいので、重畳軸61Bの指令振幅P2bは、基準軸62Aの指令振幅P2aよりも小さい。この場合に、重畳軸61Bの指令振幅P2bから、基準軸62Aの指令振幅P2aを差し引くと、重畳軸61Bと基準軸62Aとの振幅差分(負の値)を算出することができる。
図16は、図14および図15の振動指令から算出される振動波形を示す図である。図16に示す波形43Tc,44Tcは、重畳軸61Bの波形43Tb,44Tbから基準軸62Aの波形43Ta,44Taを引いた差分に対応する振動波形である。したがって、図16に示す差分振幅P2cは、指令振幅P2bから指令振幅P2aを引いたものに対応している。図16に示す送り量F6は、波形43Tc,44Tcで工具66Bを振動させた場合の送り量であり、差分振幅P2cに基づいて設定される。このように、基準軸62Aの指令振幅P2a≧重畳軸61Bの指令振幅P2bの場合には、重畳軸61Bと基準軸62Aとの差分は、負の値になる。
重畳制御の場合、実際の重畳軸61Bの振動動作は、重畳軸61B側への振動指令および基準軸62A側への振動指令に対応する。このため、重畳軸61B側を実際にどのように振動させるかは、基準軸62Aへの振動条件で規定された振幅(以下、指令振幅Qaという)および重畳軸61Bへの振動条件で規定された振幅(以下、指令振幅Qbという)によって決まる。指令振幅Qa,Qbは、加工プログラム82Pの振動指令(G165)で規定された振幅に対応するものである。ここで、図17から図24を用いて、指令振幅Qa,Qbに応じた重畳軸61Bの振動のさせ方について説明する。
以下の図17から図24では、指令振幅Qbと指令振幅Qaとが同じである場合と、指令振幅Qbが0の場合と、指令振幅Qbが指令振幅Qaよりも大きい場合と、指令振幅Qbが指令振幅Qaよりも小さい場合と、に分けて説明する。なお、図17から図24では、工具66Bの振動方向が重畳軸61Bの軸方向である場合について説明する。図18、図20、図22、図24に示すグラフの横軸は、主軸60の回転角度であり、時間T2は、主軸60が1回転するのに要する時間である。また、図18、図20、図22、図24に示すグラフの縦軸は、工具66BのZ2軸方向の位置を示しており、縦軸の正方向が加工ワーク70の送り方向に対応している。なお、加工ワーク70の送り方向が、Z2軸の正方向(Z1軸の正方向)である。したがって、工具66A,66Bは、Z2軸の負方向(Z1軸の負方向)に加工を進めていく。
図17は、実施の形態2にかかる工作機械の第1の振動動作を説明するための図である。図18は、実施の形態2にかかる工作機械が有する基準軸に対する重畳軸の相対的な第1の振動動作を示す図である。図17および図18では、重畳軸61Bへの指令振幅Qbが、基準軸62Aへの指令振幅Qaと同じ(Qb=Qa)である場合の、重畳軸61Bの振動動作を示している。
重畳軸61Bに移動指令がなく、かつ指令振幅Qb=指令振幅Qaで重畳制御を行うためには、重畳軸61B側の刃物台65Bを固定し、基準軸62A方向に主軸60を備えた主軸台を振動させればよい。これにより、刃物台65Bの移動経路51a〜51cは、基準軸62Aの振動動作に対応するものとなるので、重畳軸61B側でも基準軸62A側と同じ振幅で振動切削を行うことができる。
図18では、主軸60が1周する間に刃物台65Bが移動する距離を移動距離V1で示し、刃物台65Bの実際の振幅を振幅Qb´で示している。移動距離V1は、刃物台65Bの実際の移動速度に対応している。刃物台65Bの実際の移動速度は、工具送りのための移動速度であり、振動による移動を含まない。すなわち、刃物台65Bの移動距離V1は、移動条件で規定されている移動速度に対応している。したがって、移動条件で規定されている移動速度が速いほど、移動距離V1は大きくなる。また、実際の振幅Qb´は、振動条件で規定された指令振幅Qbに対応している。
図19は、実施の形態2にかかる工作機械の第2の振動動作を説明するための図である。図20は、実施の形態2にかかる工作機械が有する基準軸に対する重畳軸の相対的な第2の振動動作を示す図である。図19および図20では、重畳軸61Bへの指令振幅Qbが0である場合の、重畳軸61Bの動作を示している。
指令振幅Qb=0で重畳制御を行うためには、基準軸62A側の主軸台の振動と同期するよう、重畳軸61Bの刃物台65Bを振動させればよい。これにより、刃物台65Bでは振動のない切削を行なうことができる。換言すると、重畳制御をしつつ、重畳軸61Bの刃物台65Bに対して、基準軸62A側の主軸台と同じ振動をさせると、刃物台65Bと加工ワーク70とは同じ振動動作となるので、刃物台65Bの工具66Bは振動のない切削を行なうことができる。したがって、刃物台65Bの移動経路52a〜52gは、振動することなく加工ワーク70の送り方向へ移動する切削経路となる。図20では、主軸60が1周する間に刃物台65Bが移動する距離を移動距離V0で示している。移動距離V0は、刃物台65Bの実際の移動速度に対応している。
図21は、実施の形態2にかかる工作機械の第3の振動動作を説明するための図である。図22は、実施の形態2にかかる工作機械が有する基準軸に対する重畳軸の相対的な第3の振動動作を示す図である。図21および図22では、重畳軸61Bへの指令振幅Qbが、基準軸62Aへの指令振幅Qaよりも大きい場合の、重畳軸61Bの振動動作を示している。
指令振幅Qb>指令振幅Qaで重畳制御を行うためには、重畳軸61B側の刃物台65Bを、基準軸62A側の主軸台の振動と逆の位相で振動させればよい。これにより、刃物台65Bの移動経路53a,53bは、基準軸62Aおよび重畳軸61Bの振動動作に対応するものとなるので、重畳軸61B側を基準軸62A側よりも大きな振幅で振動切削を行うことができる。なお、刃物台65Bの実際の振幅は、指令振幅Qbに対応する振幅Qb´から指令振幅Qaに対応する振幅Qa´を引いたものとなる。
図22では、主軸60が1周する間に刃物台65Bが移動する距離を移動距離V2で示し、刃物台65Bの実際の振幅を振幅Qb´で示している。移動距離V2は、刃物台65Bの実際の移動速度に対応している。すなわち、刃物台65Bの移動距離V2は、移動条件で規定されている移動速度に対応している。また、実際の振幅Qb´は、振動条件で規定された指令振幅Qa,Qbに対応している。
図23は、実施の形態2にかかる工作機械の第4の振動動作を説明するための図である。図24は、実施の形態2にかかる工作機械が有する基準軸に対する重畳軸の相対的な第4の振動動作を示す図である。図24では、重畳軸61Bへの指令振幅Qbが、基準軸62Aへの指令振幅Qaよりも小さい場合の、重畳軸61Bの振動動作を示している。
指令振幅Qb<指令振幅Qaで重畳制御を行うためには、重畳軸61B側の刃物台65Bを、基準軸62A側の主軸台の振動と同じ位相で振動させればよい。これにより、刃物台65Bの移動経路54a〜54cは、基準軸62Aおよび重畳軸61Bの振動動作に対応するものとなるので、重畳軸61B側を基準軸62A側よりも小さな振幅で振動切削を行うことができる。刃物台65Bの実際の振幅は、指令振幅Qaに対応する振幅Qa´から指令振幅Qbに対応する振幅Qb´を引いたものとなる。
図24では、主軸60が1周する間に刃物台65Bが移動する距離を移動距離V3で示し、刃物台65Bの実際の振幅を振幅Qb´で示している。移動距離V3は、刃物台65Bの実際の移動速度に対応している。すなわち、刃物台65Bの移動距離V3は、移動条件で規定されている移動速度に対応している。また、実際の振幅Qb´は、振動条件で規定された指令振幅Qa,Qbに対応している。
本実施の形態では、数値制御装置1が、重畳制御を行うための重畳軸61Bへの振動指令を指令振幅Qa,Qbの関係に基づいて計算する。これにより、刃物台65Bは、図17から図20で示したような指令動作を実行する。
本実施の形態では、振動波形が三角波である場合について説明したが、振動波形は、三角波に限らず、正弦波、矩形波、台形波、のこぎり波といった、三角波とは異なるものであってもよい。
図25は、実施の形態2にかかる、正弦波の振動指令を示す図である。ここでは、工作機械120の重畳軸61Bへの振動指令の例を示している。正弦波41T´,42T´のような正弦波は、理想的な振動形状をそのまま指令することができる振動波形である。このため、指令に対してフィードバックが十分に追従する場合には、正弦波は、理想的な振動形状を作り出すことができる。なお、実施の形態1および後述する実施の形態3でも、振動波形は、三角波、正弦波、矩形波、台形波、のこぎり波の何れでもよい。
なお、本実施の形態では、(M2−1)から(M2−3)の何れかの方法で振動回数および主軸回転数を計算し変更する場合について説明したが、基準軸62Aの振動指令から重畳軸61Bの振動指令を差し引いたものを重畳軸61Bに出力してもよい。
図26は、実施の形態2にかかる数値制御装置が用いる加工プログラムの他の例を示す図である。なお、加工プログラム82Qのうち、加工プログラム82P、または実施の形態1の図3で説明した加工プログラム81と同様の指令については、その説明を省略する。
加工プログラム82Qは、加工プログラム82Pと同様に、数値制御装置1が工作機械120を制御する際に用いられる。このため、加工プログラム82Qは、基準軸62A用の加工プログラム821Aと、重畳軸61B用の加工プログラム821Bとを含んでいる。
加工プログラム821Aでは、M3 S1=1000となっているので、主軸60への主軸回転数指令は1000回転である。加工プログラム82Qが用いられる場合、数値制御装置1の振動計算部22Bは、基準軸62Aへの振動指令の波形から重畳軸61Bへの振動指令の波形を差し引いたものを重畳軸61Bに対する振動指令に適用する。また、数値制御装置1は、基準軸62Aおよび重畳軸61Bの振動回数に同期する主軸回転数を計算する。
つぎに、重畳振動波形から基準振動波形を差し引いた指令で重畳軸61Bを動作させる場合の処理手順について説明する。図27は、実施の形態2にかかる数値制御装置の第3の制御処理の処理手順を示すフローチャートである。図27は、数値制御装置1による工作機械120への制御処理手順を示している。ここでの第3の制御処理は、基準軸62Aへの振動指令の波形から重畳軸61Bへの振動指令の波形を差し引いた指令で重畳軸61Bを動作させる場合の制御処理である。
図27におけるステップS561からS562の処理は、図4におけるステップS110からS120の処理と同様の処理であるので、その説明は省略する。解析処理部37は、解析結果である、基準軸62Aへの振動指令の波形および重畳軸61Bへの振動指令の波形を補間処理部38に送る。
振動計算部22Bは、基準軸62Aへの振動指令の波形から、重畳軸61Bへの振動指令の波形を差し引いた指令を計算する。すなわち、振動計算部22Bは、(基準軸62の振動指令)−(重畳軸61Bの振動指令)を計算する(ステップS563)。そして、振動計算部22Bは、ステップS563で求めた振動波形の指令と、主軸回転数とに基づいて、基準軸62Aおよび重畳軸61Bの振動回数に同期することができる主軸回転数を計算する(ステップS564)。
この後、図4のフローチャートで説明した場合と同様の処理によって、振動発生部24Aが基準振動波形を生成し、振動発生部24Bが重畳振動波形を生成する。そして、図4のステップS170と同様の処理によって、軸データ出力部40が、主軸回転数の回転数指令および速度指令を駆動部90に出力する(ステップS565)。
図28は、図26の加工プログラムに対応する基準軸への振動指令の波形を示す図である。図29は、図26の加工プログラムに対応する重畳軸への振動指令の波形を示す図である。図30は、図28および図29の波形から計算された重畳軸への振動指令の波形を示す図である。図28から図29に示すグラフの横軸は、主軸60の回転角度であり、時間T3は、主軸60が1回転するのに要する時間である。また、図28に示すグラフの縦軸は、基準軸62AのZ1軸方向の位置であり、図29および図30に示すグラフの縦軸は、重畳軸61BのZ2軸方向の位置である。
加工プログラム821Aでは、基準軸62Aの振動回数が2.5回となっており、振幅が0.2mmである。したがって、基準軸62Aへの振動指令の波形は、図28に示すように、振動回数が2.5回で振幅が0.2mmの波形となっている。
また、加工プログラム821Bでは、重畳軸61Bの振動回数が4.5回となっており、振幅が0.3mmである。したがって、重畳軸61Bへの振動指令の波形は、図29に示すように、振動回数が4.5回で振幅が0.3mmの波形となっている。
図30に示す波形は、(基準軸62の振動指令)−(重畳軸61Bの振動指令)の波形である。すなわち、図30に示す波形は、振動回数が2.5回で振幅が0.2mmの波形から、振動回数が4.5回で振幅が0.3mmの波形を差し引いた波形である。
このように、実施の形態2によれば、1スピンドル2刃物台の旋盤に対しても、実施の形態1と同様の効果を得ることができる。すなわち、数値制御装置1が、重畳制御を行う場合にも基準軸62Aおよび重畳軸61Bで所望の低周波振動切削を実行させることが可能となる。
実施の形態3.
つぎに、図31から図34を用いてこの発明の実施の形態3について説明する。実施の形態3では、2スピンドル1刃物台の旋盤に対して、重畳制御および低周波振動切削の制御を行う。
図31は、実施の形態3にかかる工作機械の構成を示す図である。図31では、図2と同様に、紙面の横方向がZ軸方向であり、紙面の縦方向がX軸方向である。図31の各構成要素のうち図2に示す実施の形態1の工作機械110と同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。本実施の形態の加工対象は、加工ワーク71,72である。
実施の形態3にかかる工作機械130は、2スピンドル1刃物台の旋盤である。2スピンドル1刃物台の旋盤は、2つの主軸と1つの刃物台を具備した旋盤である。工作機械130の一例は、タレット旋盤である。工作機械130では、第1スピンドル76による加工ワーク71の回転軸が、第1の主軸68であり、第2スピンドル77による加工ワーク72の回転軸が、第2の主軸69である。
工作機械130は、刃物台65Cを備えており、刃物台65Cに基準軸63Cが設けられている。刃物台65Cは、X1軸方向およびZ1軸方向に移動可能となっている。
また、加工ワーク72は、X2軸方向およびZ2軸方向に移動可能となっている。なお、ここでのZ2軸方向は、図2で説明したZ2軸方向と正方向が逆向きとなっているが、Z2軸方向は、回転軸と同じ方向であれば何れが正方向であってもよい。工作機械130では、Z1軸が基準軸63Cであり、Z2軸が重畳軸63Dである。なお、工作機械130では、第1の主軸68が、Z2軸である重畳軸63Dであってもよい。
刃物台65Cは、刃物台65Aと同様に旋回式の刃物台である。刃物台65Cは、刃物台65Aと比較して、2つの工具66C,66Dを同時に用いることができる点が異なる。工具66Cは、加工ワーク71を切削し、工具66Dは、加工ワーク72を切削する。
工作機械130では、第1スピンドル76が加工ワーク71を第1の主軸68で軸回転させ、第2スピンドル77が加工ワーク72を第2の主軸69で軸回転させる。そして、工作機械130は、刃物台65Cが工具66C,66DをZ1軸方向に振動させ、加工ワーク72をZ2軸方向に振動させる。これにより、工具66Cが、加工ワーク71に振動切削を行ない、工具66Dが、加工ワーク72に振動切削を行なう。
工作機械130における振動の制約条件は、以下の(L3−1)から(L3−3)である。
(L3−1)振動切削中の主軸回転数は、基準軸63C側と重畳軸63D側とで異なっていてもよい。ただし、基準軸63Cおよび重畳軸63Dは、共に、振動回数に同期した主軸回転数で動作しなければならない。
(L3−2)第1の主軸68が1回転する間の工具66C,66Dの振動回数は、基準軸63C側と重畳軸63D側とで同じでなければならない。
(L3−3)振動の振幅は、基準軸63C側と重畳軸63D側とで異なっていてもよい。ただし、基準軸63C側の振動を考量して、重畳軸63D側の振動を指令しなければならない。
(L3−2)のように、振動回数が、基準軸63C側と重畳軸63D側とで同じでなければならないのは、工作機械130では、刃物台65Cが2つの工具66C,66Dを有しているので、基準軸63Cの振動が重畳軸63Dに伝わるからである。工作機械130では、振動回数が、基準軸63C側と重畳軸63D側とで同じでなければ、重畳軸63D側の振動が正弦波または三角波といった一定形状の波でなくなる。
また、(L3−3)のように、基準軸63C側の振動を考量して重畳軸63D側の振動を指令しなければならないのは、刃物台65Cが2つの工具66C,66Dを有しているので、工作機械130では、基準軸63Cの振動が重畳軸63Dに伝わるからである。
図32は、実施の形態3にかかる数値制御装置が用いる加工プログラムの一例を示す図である。なお、加工プログラム83のうち、実施の形態1の図3で説明した加工プログラム81と同様の指令については、その説明を省略する。
加工プログラム83は、数値制御装置1が工作機械130を制御する際に用いられる。このため、加工プログラム83は、基準軸63C用の加工プログラム830Cと、重畳軸63D用の加工プログラム830Dとを含んでいる。
加工プログラム830CでのG165は、刃物台65CをZ1軸方向に振動させる指令であり、加工プログラム830DでのG165は、加工ワーク72をZ2軸方向に振動させる指令である。加工プログラム830Cにおいて、G165が用いられる場合、G165で指定された振幅および振動回数で工具66C,66DがZ1軸方向に振動させられる。ここでは、工具66C,66Dに対し、振幅を0.2mm、振動回数を2.5回で振動させる場合を示している。また、加工プログラム830Dにおいて、G165が用いられる場合、G165で指定された振幅および振動回数で加工ワーク72がZ2軸方向に振動させられる。ここでは、加工ワーク72に対し、振幅を0.3mm、振動回数を4.5回で振動させる場合を示している。
また、加工プログラム830Cでは、M3 S1=2000となっているので、第1の主軸68への第1の主軸回転数指令が2000回転である。また、加工プログラム830Dでは、M3 S2=1200となっているので、第2の主軸69への第2の主軸回転数指令が1200回転である。なお、以下の説明では、第1の主軸68の主軸回転数を第1の主軸回転数といい、第2の主軸69の主軸回転数を第2の主軸回転数という。
加工プログラム83が用いられる場合、振動計算部22Aは、以下の(M3−1)から(M3−3)の何れかの方法で振動回数および主軸回転数を計算し変更する。これにより、変更後の振動回数および主軸回転数で各軸が制御される。
(M3−1)重畳軸63Dの振動回数を基準軸63Cの振動回数に合わせる
この場合、振動計算部22Bは、重畳軸63Dの振動回数であるD=4.5を、基準軸63Cの振動回数であるD=2.5に変更する。また、振動計算部22Aは、基準軸63Cの振動回数であるD=2.5と、第1の主軸68への回転数指令であるS1=2000から、基準軸63C側および重畳軸63Dの振動回数に同期することができる第1の主軸回転数を計算する。振動計算部22Aは、数値制御装置1内の情報を用いて第1の主軸回転数を計算する。振動計算部22Aが計算する第1の主軸回転数が、実際の第1の主軸68の第1の主軸回転数となる。振動計算部22Aは、第1の主軸回転数に複数の候補がある場合には、当初の主軸回転数である2000(回/min)に近いものを採用する。ここでは、振動計算部22Aが計算した第1の主軸回転数が、1929(回/min)であるとする。
さらに、振動計算部22Bは、重畳軸63Dの振動回数に設定されたD=2.5と、第2の主軸69への回転数指令であるS2=1200から、重畳軸63Dの振動回数に同期することができる第2の主軸回転数を計算する。振動計算部22Bは、数値制御装置1内の情報を用いて第2の主軸回転数を計算する。振動計算部22Bが計算する第2の主軸回転数が、実際に振動切削した場合の第2の主軸69の第2の主軸回転数となる。振動計算部22Bは、第2の主軸回転数に複数の候補がある場合には、当初の主軸回転数である1200(回/min)に近いものを採用する。ここでは、振動計算部22Bが計算した第2の主軸回転数が、1227(回/min)であるとする。
(M3−2)基準軸63Cの振動回数を重畳軸63Dの振動回数に合わせる
この場合、振動計算部22Aは、基準軸63Cの振動回数であるD=2.5を、重畳軸63Dの振動回数であるD=4.5に変更する。この後、振動計算部22Aは、(M2−2)と同様の方法によって、第1の主軸回転数を計算する。ここでは、振動計算部22Aが計算した第1の主軸回転数が、1875(回/min)であるとする。
また、振動計算部22Bは、重畳軸63Dの振動回数に設定されたD=2.5と、第2の主軸69への回転数指令であるS2=1200から、重畳軸63Dの振動回数に同期することができる第2の主軸回転数を計算する。振動計算部22Bは、(M2−3)と同様の方法によって、第2の主軸回転数を計算する。ここでは、振動計算部22Bが計算した第2の主軸回転数が、1250(回/min)であるとする。
(M3−3)基準軸63Cの振動回数と重畳軸63Dの振動回数の平均をとる
基準軸63Cの振動回数と重畳軸63Dの振動回数の平均は、振動計算部22Aが計算してもよいし振動計算部22Bが計算してもよい。ここでは、振動計算部22Aが基準軸63Cの振動回数と重畳軸63Dの振動回数の平均を計算する場合について説明する。
振動計算部22Aは、基準軸63Cの振動回数であるD=2.5と、重畳軸63Dの振動回数であるD=4.5との平均である平均回数を計算する。ここでの平均回数は、3.5回である。振動計算部22Aは、計算結果を基準軸63Cの振動回数および重畳軸63Dの振動回数に設定する。
また、振動計算部22Aは、計算した平均回数の3.5回に同期することができる第1の主軸回転数を計算する。振動計算部22Aは、数値制御装置1内の情報を用いて第1の主軸回転数を計算する。振動計算部22Aは、第1の主軸回転数に複数の候補がある場合には、当初の第1の主軸回転数である2000(回/min)に近いものを採用する。ここでは、振動計算部22Aが計算した主軸回転数が、1929(回/min)であるとする。
また、振動計算部22Bは、計算した平均回数の3.5回に同期することができる第2の主軸回転数を計算する。振動計算部22Bは、数値制御装置1内の情報を用いて第2の主軸回転数を計算する。振動計算部22Bは、第2の主軸回転数に複数の候補がある場合には、当初の第2の主軸回転数である1200(回/min)に近いものを採用する。ここでは、振動計算部22Bが計算した主軸回転数が、1205(回/min)であるとする。
つぎに、工作機械130を制御する際の処理手順について説明する。図33は、実施の形態3にかかる数値制御装置の第1の制御処理の処理手順を示すフローチャートである。図33は、数値制御装置1による工作機械130への制御処理手順を示している。ここでの第1の制御処理は、重畳軸63Dの振動回数を基準軸63Cの振動回数に合わせる場合の制御処理である。
図33におけるステップS610からS620の処理は、図4におけるステップS110からS120の処理と同様の処理であるので、その説明は省略する。解析処理部37は、振動条件などの解析結果を補間処理部38に送る。
振動計算部22A,22Bは、前述の(M3−1)の方法によって、ステップS630からS640の処理を実行する。すなわち、振動計算部22Bは、重畳軸63Dの振動回数を基準軸63Cの振動回数に合わせる(ステップS630)。そして、振動計算部22Aは、ステップS630で求めた振動回数と、当初の第1の主軸回転数とに基づいて、基準軸63C側および重畳軸63Dの振動回数に同期することができる第1の主軸回転数を計算する(ステップS640)。
また、振動計算部22Bは、ステップS630で求めた振動回数と、当初の第2の主軸回転数とに基づいて、重畳軸63Dの振動回数に同期することができる第2の主軸回転数を計算する(ステップS650)。なお、振動計算部22A,22Bが、前述の(M3−2)の処理によって、基準軸63Cの振動回数および重畳軸63Dの振動回数を計算してもよい。
この後、図4のフローチャートで説明した場合と同様の処理によって、振動発生部24Aが基準振動波形を生成し、振動発生部24Bが重畳振動波形を生成する。そして、図4のステップS170と同様の処理によって、軸データ出力部40が、主軸回転数および速度指令を駆動部90に出力する(ステップS660)。
この結果、(M3−1)の方法または(M3−2)の方法が用いられた場合には、振動計算部22Aが計算して変更した基準軸63Cの振動回数に従って、Z1軸の振動動作が制御されることとなる。また、振動計算部22Aが計算した第1の主軸回転数に従って第1の主軸68の回転が制御されることとなる。また、振動計算部22Bが計算して変更した重畳軸63Dの振動回数に従って、Z2軸の振動動作が制御されることとなる。また、振動計算部22Bが計算した第2の主軸回転数に従って第2の主軸69の回転が制御されることとなる。
具体的には、振動計算部22Aが計算した第1の主軸回転数で第1スピンドル76が加工ワーク71を回転させるとともに、振動計算部22Aが計算した振動回数で刃物台65Cが工具66C,66Dを振動させる。また、振動計算部22Bが計算した第2の主軸回転数で第2スピンドル77が加工ワーク72を回転させるとともに、振動計算部22Bが計算した振動回数で加工ワーク72を振動させる。
なお、ステップS630では、振動計算部22A,22Bが、前述の(M3−3)の処理によって、基準軸63Cの振動回数と重畳軸63Dの振動回数の平均をとってもよい。この場合の処理手順について説明する。
図34は、実施の形態3にかかる数値制御装置の第2の制御処理の処理手順を示すフローチャートである。ここでの第2の制御処理は、重畳軸63Dおよび基準軸63Cに、重畳軸63Dの振動回数と基準軸63Cの振動回数との平均を設定する場合の制御処理である。図34におけるステップS710からS720の処理は、図4におけるステップS110からS120の処理と同様の処理であるので、その説明は省略する。解析処理部37は、振動条件などの解析結果を補間処理部38に送る。
振動計算部22A,22Bは、前述の(M3−3)の処理によって、ステップS730からS740の処理を実行する。すなわち、振動計算部22Bは、基準軸63Cの振動回数と重畳軸63Dの振動回数の平均である平均振動回数を計算する(ステップS730)。この後、振動計算部22A,22BがステップS740,S750の処理を実行する。
振動計算部22Aが実行するステップS740の処理は、図33におけるステップS640と同様の処理である。振動計算部22Aは、ステップS640の処理では、ステップS630で求めた振動回数を用いて第1の主軸回転数を計算したのに対して、ステップS740の処理では、ステップS730で求めた平均振動回数を用いて第1の主軸回転数を計算する。
また、振動計算部22Bが実行するステップS750の処理は、図33におけるステップS650と同様の処理である。振動計算部22Aは、ステップS650の処理では、ステップS630で求めた振動回数を用いて第2の主軸回転数を計算したのに対して、ステップS750の処理では、ステップS730で求めた平均振動回数を用いて第2の主軸回転数を計算する。
この後、図4のフローチャートで説明した場合と同様の処理によって、振動発生部24Aが基準振動波形を生成し、振動発生部24Bが重畳振動波形を生成する。そして、図4のステップS170と同様の処理によって、軸データ出力部40が、主軸回転数および速度指令を駆動部90に出力する(ステップS760)。
この結果、(M3−3)の方法が用いられた場合も、(M3−1)の方法または(M3−2)の方法が用いられた場合と同様にZ1軸、Z2軸、第1の主軸68、第2の主軸69が制御されることとなる。
ところで、加工プログラム83の中には、基準軸63Cへの振動指令しかなく重畳軸63Dへの振動指令が無い場合がある。また、加工プログラム83の中には、重畳軸63Dへの振動指令しかなく基準軸63Cへの振動指令が無い場合がある。これらの場合、数値制御装置1は、実施の形態1の図5または図6で説明した処理と同様の処理を行う。
なお、振動計算部22A,22Bは、ステップS630,S730において、(M3−1)から(M3−3)の全ての処理を実行してもよい。この場合、振動計算部22A,22Bは、(M3−1)から(M3−3)による計算結果のうち、当初の主軸回転数との差が少ない主軸回転数を選択する。
また、数値制御装置1へは、予め(M3−1)から(M3−3)の何れを採用するかを設定しておいてもよいし、ユーザが(M3−1)から(M3−3)の何れを採用するかを選択してもよい。また、振動計算部22A,22Bは、先にG165の指令を実行する側に合わせて、(M3−1)または(M3−2)を選択してもよい。すなわち、基準軸63Cで先にG165の指令を実行する場合、振動計算部22A,22Bは、(M3−1)を適用し、重畳軸63Dで先にG165の指令を実行する場合、振動計算部22A,22Bは、(M3−2)を適用する。
このように、実施の形態3によれば、2スピンドル1刃物台の旋盤に対しても、実施の形態1と同様の効果を得ることができる。すなわち、数値制御装置1が、重畳制御を行う場合にも基準軸63Cおよび重畳軸63Dで所望の低周波振動切削を実行させることが可能となる。
ここで、数値制御装置1が備える制御演算部2のハードウェア構成について説明する。図35は、実施の形態1から3にかかる制御演算部のハードウェア構成例を示す図である。
制御演算部2は、図35に示した制御回路300、すなわちプロセッサ301、メモリ302により実現することができる。プロセッサ301の例は、CPU(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサ、DSPともいう)またはシステムLSI(Large Scale Integration)である。メモリ302の例は、RAM(Random Access Memory)またはROM(Read Only Memory)である。
制御演算部2は、プロセッサ301が、メモリ302で記憶されている、制御演算部2の動作を実行するためのプログラムを読み出して実行することにより実現される。また、このプログラムは、制御演算部2の手順または方法をコンピュータに実行させるものであるともいえる。メモリ302は、プロセッサ301が各種処理を実行する際の一時メモリにも使用される。
プロセッサ301が実行するプログラムは、コンピュータで実行可能な、データ処理を行うための複数の命令を含むコンピュータ読取り可能かつ非遷移的な(non-transitory)記録媒体を有するコンピュータプログラムプロダクトであってもよい。プロセッサ301が実行するプログラムは、複数の命令がデータ処理を行うことをコンピュータに実行させる。
また、制御演算部2を専用のハードウェアで実現してもよい。また、制御演算部2の機能について、一部を専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。
また、実施の形態2の図26〜図30で説明した実施内容を、実施の形態1または実施の形態3に適用してもよい。
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。