(57)【特許請求の範囲】
【請求項１】
加工対象物を加工するための工具を駆動する複数の駆動軸を制御する数値制御装置であって、
加工プログラムを解析する解析処理部と、
前記解析処理部による前記加工プログラムの解析結果に基づいて前記加工対象物を切削加工する際の前記工具の移動経路である加工経路を算出する加工経路算出部と、
前記工具が前記加工経路に沿って移動し、前記加工対象物を加工している途中に繰り返し実行する動作であり、前記工具を前記加工経路から一時的にリフトアップさせるインタラプト動作における前記工具の移動経路を前記解析結果に基づいて算出するインタラプト経路算出部と、
を備え、
前記インタラプト経路算出部は、前記インタラプト動作において前記工具を前記加工経路に対してリフトアップさせるリフトアップ角度を０°より大きく、９０°以下の角度で算出する、
ことを特徴とする数値制御装置。
【請求項２】
前記解析処理部は、
前記加工プログラムに含まれる指令のうち、前記インタラプト動作の実施条件を指令する指令値を含んだインタラプト加工指令を解析するインタラプト加工指令解析部、
を備え、
前記インタラプト経路算出部は、前記インタラプト加工指令に含まれる指令値に従い前記インタラプト動作における前記工具の移動経路を算出する、
ことを特徴とする請求項１に記載の数値制御装置。
【請求項３】
前記インタラプト加工指令は、前記工具を前記加工経路からリフトアップさせる際の前記工具の移動量を指令する指令値と、前記工具を前記加工経路からリフトアップさせる際の前記工具の移動方向と前記加工経路との角度を指令する指令値と、を含むことを特徴とする請求項２に記載の数値制御装置。
【請求項４】
前記インタラプト加工指令は、前記工具を前記加工経路からリフトアップさせた後に前記工具が前記加工対象物と接触する状態に戻す際に前記工具をどこに戻すかを指令する指令値、を更に含むことを特徴とする請求項３に記載の数値制御装置。
【請求項５】
前記インタラプト加工指令は、前記工具を前記加工経路からリフトアップさせた後に前記工具が前記加工対象物と接触する状態に戻す際の前記工具の経路を直線形状と円弧形状のどちらにするかを指令する指令値、を更に含むことを特徴とする請求項３または４に記載の数値制御装置。
【請求項６】
前記インタラプト加工指令は、前記工具を前記加工経路からリフトアップさせた後に前記工具が移動を停止した状態を維持する時間の長さを指令する指令値、を更に含むことを特徴とする請求項３から５のいずれか一つに記載の数値制御装置。
【請求項７】
前記インタラプト動作において前記工具と前記加工対象物の干渉が発生した場合の前記実施条件の変更方法を学習する動作条件変更部、
を備えることを特徴とする請求項２から６のいずれか一つに記載の数値制御装置。
【請求項８】
前記動作条件変更部は、
前記インタラプト動作を実施中に前記工具を移動させるサーボモータに流れる電流値と、前記インタラプト加工指令に含まれる指令値のうち、前記工具を前記加工経路からリフトアップさせる際の前記工具の移動量を指令する指令値と、を使用して前記学習を行う機械学習装置で実現される、
ことを特徴とする請求項７に記載の数値制御装置。
【請求項９】
請求項２から６のいずれか一つに記載の数値制御装置が実施する前記インタラプト動作において前記工具と前記加工対象物の干渉が発生した場合に、前記インタラプト動作の実施条件の変更方法を学習する機械学習装置であって、
前記インタラプト動作を実施中に前記工具を移動させるサーボモータに流れる電流値と、前記インタラプト加工指令に含まれる指令値のうち、前記工具を前記加工経路からリフトアップさせる際の前記工具の移動量を指令する指令値と、を使用して前記学習を行うことを特徴とする機械学習装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、旋削加工を行う工作機械を制御する数値制御装置および機械学習装置に関する。
【背景技術】
【０００２】
旋削加工を行う工作機械を制御する従来の数値制御装置として、切削工具を加工経路に沿って低周波振動させながらワークを加工する制御を行う数値制御装置が提案されている（例えば、特許文献１）。【０００３】
特許文献１に記載の数値制御装置は、工具への移動指令から単位時間あたりの指令移動量を算出し、振動条件から単位時間あたりの振動移動量を算出し、指令移動量と振動移動量とを合成して合成移動量を算出し、合成移動量に基づいて振動切削を制御する。特許文献１に記載の数値制御装置は、工具の振動周波数が一定の値を超えないように制御することで、ワークを切削するときに発生する切りくずを細かく分断する。これにより、切りくずが工具に絡み付くのを防ぎ、切りくずが絡み付くことによって工具の寿命が短くなるといった問題などが発生するのを防止できる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５５９９５２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載されたような、切削工具を加工経路に沿って低周波振動させながらワークを加工する旋削加工では、切削工具を低周波振動させるときの周波数は主軸の回転数に依存する。そのため、主軸の回転数を自由に指定することができないという問題がある。例えば、主軸の回転数を上げて加工速度を上げようとした場合、切削工具の振動周波数も上昇するため、切りくずを分断することができなくなる可能性がある。【０００６】
本発明は、上記に鑑みてなされたものであって、旋削加工を行う際に発生する切りくずを主軸の回転数の設定値の影響を受けることなく安定して分断することが可能な数値制御装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、加工対象物を加工するための工具を駆動する複数の駆動軸を制御する数値制御装置であって、加工プログラムを解析する解析処理部と、解析処理部による加工プログラムの解析結果に基づいて加工対象物を切削加工する際の工具の移動経路である加工経路を算出する加工経路算出部と、を備える。また、数値制御装置は、工具が加工経路に沿って移動し、加工対象物を加工している途中に繰り返し実行する動作であり、工具を加工経路から一時的にリフトアップさせるインタラプト動作における工具の移動経路を解析結果に基づいて算出するインタラプト経路算出部を備える。インタラプト経路算出部は、インタラプト動作において工具を加工経路に対してリフトアップさせるリフトアップ角度を０°より大きく、９０°以下の角度で算出する。
【発明の効果】
【０００８】
本発明にかかる数値制御装置は、旋削加工で発生する切りくずを、主軸の回転数の設定値の影響を受けることなく安定して加工対象物から分断することができる、という効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１にかかる数値制御装置の構成例を示す図
【図２】実施の形態１にかかる数値制御装置で実行される加工プログラムに含ませることが可能なインタラプト加工指令の構成例を示す図
【図３】実施の形態１にかかる数値制御装置が工作機械を制御して行う加工動作の第１の例を示す図
【図４】図３に示した加工動作を実現する加工プログラムの一例を示す図
【図５】実施の形態１にかかる数値制御装置が工作機械を制御して行う加工動作の第２の例を示す図
【図６】図５に示した加工動作を実現する加工プログラムの一例を示す図
【図７】実施の形態１にかかる数値制御装置が工作機械を制御して行う加工動作の第３の例を示す図
【図８】実施の形態１にかかる数値制御装置が備える解析処理部の動作の一例を示すフローチャート
【図９】実施の形態１にかかる数値制御装置が備える補間処理部の動作の一例を示すフローチャート
【図１０】実施の形態１にかかる数値制御装置を適用して行うインタラプト動作の第１の例を示す図
【図１１】実施の形態１にかかる数値制御装置を適用して行うインタラプト動作の第２の例を示す図
【図１２】実施の形態１にかかる数値制御装置を適用して行うインタラプト動作の第３の例を示す図
【図１３】実施の形態１にかかる数値制御装置を適用して行うインタラプト動作の第４の例を示す図
【図１４】実施の形態１にかかる数値制御装置が備える制御演算部のハードウェア構成例を示す図
【図１５】中ぐり加工の一例を示す図
【図１６】中ぐり加工において発生する問題を説明するための図
【図１７】工具とワークの干渉が発生する加工動作の一例を示す図
【図１８】実施の形態２にかかる数値制御装置の構成例を示す図
【図１９】実施の形態２にかかる数値制御装置が備える動作条件変更部の動作の一例を示すフローチャート
【発明を実施するための形態】
【００１０】
以下に、本発明の実施の形態にかかる数値制御装置および機械学習装置を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。各実施の形態において、工作機械が備える切削工具を「工具」と記載し、工作機械が行う旋削加工を「加工」と記載する。
【００１１】
実施の形態１．
図１は、実施の形態１にかかる数値制御装置の構成例を示す図である。数値制御装置１は、入力操作部２０と、表示部３０と、制御演算部４０と、を備える。図１では、数値制御装置１により制御される工作機械に設けられた駆動部１０も併せて記載している。工作機械の駆動部１０以外の構成要素については記載を省略している。
【００１２】
工作機械に設けられた駆動部１０は、加工対象物であるワークおよび工具のいずれか一方または両方を少なくとも２軸方向に駆動する機構である。ここでは、数値制御装置１上で規定された各軸方向にワークおよび工具の一方または両方を移動させる複数のサーボモータ１１と、各サーボモータ１１の回転子の位置および速度を検出する複数の検出器１２と、を備える。また、駆動部１０は、検出器１２が検出した位置および速度に基づいてサーボモータ１１の制御を行うＸ軸サーボ制御部１３Ｘ，Ｚ軸サーボ制御部１３Ｚ，…を備える。なお、以下では、駆動軸の方向を区別する必要がない場合、各軸に対応するサーボ制御部（Ｘ軸サーボ制御部１３Ｘ，Ｚ軸サーボ制御部１３Ｚ，…）を単にサーボ制御部１３と表記する。また、駆動部１０は、ワークを回転させるための主軸を回転させる主軸モータ１４と、主軸モータ１４の回転子の位置および回転数を検出する検出器１５と、検出器１５が検出した位置および回転数に基づいて主軸モータ１４を制御する主軸サーボ制御部１６と、を備える。
【００１３】
数値制御装置１の説明に戻り、入力操作部２０は、数値制御装置１に情報を入力する手段である。入力操作部２０は、キーボード、ボタン、マウスなどによって構成され、ユーザによる数値制御装置１に対するコマンド、加工プログラム、パラメータなどの入力を受け付け、制御演算部４０に受け渡す。
【００１４】
表示部３０は、液晶表示装置などによって構成され、制御演算部４０によって処理された情報の表示などを行う。
【００１５】
制御演算部４０は、入力制御部４１と、データ設定部４２と、記憶部４３と、画面処理部４４と、解析処理部４５と、機械制御信号処理部４６と、ＰＬＣ（Programmable  Logic  Controller）４７と、補間処理部４８と、加減速処理部４９と、軸データ出力部５０と、を備える。なお、ＰＬＣ４７は制御演算部４０の外部に配置されていてもよい。
【００１６】
入力制御部４１は、入力操作部２０から入力される情報を受け付ける。データ設定部４２は、入力制御部４１が受け付けた情報を記憶部４３に格納する。たとえば入力された内容が加工プログラム４３２の編集の場合には、記憶部４３が保持している加工プログラム４３２に編集された内容を反映させ、パラメータが入力された場合には記憶部４３が保持しているパラメータ４３１を更新する。
【００１７】
記憶部４３は、制御演算部４０の処理で使用されるパラメータ４３１、実行される加工プログラム４３２、表示部３０に表示させる画面表示データ４３３などを記憶する。ここで、本実施の形態にかかる数値制御装置１は、一般的な数値制御のための指令に加えて、新たに定義されるインタラプト加工指令に従って工作機械を制御することが可能である。そのため、加工プログラム４３２には、インタラプト加工指令が記述されている場合がある。インタラプト加工指令は、工作機械がワークを加工している途中で一時的に加工を中断して工具をワークから引き離した状態とし、その後、工具とワークが接触した状態に戻して加工を再開する動作の実行を指示する指令である。この一連の動作を本明細書では「インタラプト動作」と称する場合がある。ここで、リフトアップとは、工具を加工経路に沿って動かしながら加工している際に、加工経路上から工具を持ち上げることを言う。また、インタラプト動作において工具をワークから引き離した状態とする動作を「工具のリフトアップ」または単に「リフトアップ」と称する場合がある。また、インタラプト動作において工具がワークから離れた状態から工具とワークが接触した状態に戻す動作を「工具のリフトダウン」または単に「リフトダウン」と称する場合がある。インタラプト加工指令の詳細およびインタラプト動作の詳細については別途説明する。
【００１８】
また、記憶部４３には、パラメータ４３１、加工プログラム４３２および画面表示データ４３３以外のデータを記憶する共有エリア４３４が設けられている。この共有エリア４３４には、制御演算部４０が駆動部１０を制御する処理で生成されるデータが一時的に格納される。画面処理部４４は、記憶部４３が保持する画面表示データ４３３を表示部３０に表示させる制御を行う。
【００１９】
解析処理部４５は、インタラプト加工指令解析部４５１および一般指令解析部４５２を備える。解析処理部４５は、１以上のブロックを含む加工プログラム４３２を記憶部４３から読み込み、読み込んだ加工プログラム４３２をインタラプト加工指令解析部４５１または一般指令解析部４５２で解析する。インタラプト加工指令解析部４５１は、加工プログラム４３２に含まれるインタラプト加工指令を解析し、解析結果を記憶部４３の共有エリア４３４に書き込む。一般指令解析部４５２は、加工プログラム４３２に含まれるインタラプト加工指令以外の指令を解析し、解析結果を記憶部４３の共有エリア４３４に書き込む。以下、加工プログラム４３２に含まれるインタラプト加工指令以外の指令を一般指令と称する場合がある。
【００２０】
機械制御信号処理部４６は、解析処理部４５によって、数値制御軸である駆動軸を動作させる指令以外の機械を動作させる指令としての補助指令を読み込んだ場合に、補助指令が指令されたことをＰＬＣ４７に通知する。補助指令の例は、ＭコードまたはＴコードである。
【００２１】
ＰＬＣ４７は、機械制御信号処理部４６から補助指令が指令されたことの通知を受けると、その補助指令に対応する処理を実行する。ＰＬＣ４７は、機械動作が記述されたラダープログラムを保持している。ＰＬＣ４７は、補助指令であるＴコードまたはＭコードを受付けると、ラダープログラムに従って補助指令に対応する処理を実行する。ＰＬＣ４７は、補助指令に対応する処理を実行した後、加工プログラム４３２の次のブロックを実行させるために、補助指令に対応する処理が完了したことを示す完了信号を機械制御信号処理部４６に送る。
【００２２】
制御演算部４０では、解析処理部４５と、機械制御信号処理部４６と、補間処理部４８とは、記憶部４３を介して接続されている。解析処理部４５、機械制御信号処理部４６および補間処理部４８は、記憶部４３の共有エリア４３４を介して、各種情報の受け渡しを行う。以下では、解析処理部４５、機械制御信号処理部４６および補間処理部４８の間で情報の受け渡しを説明する際に、記憶部４３が介されていることの記載を省略する場合がある。
【００２３】
補間処理部４８は、工具の移動経路に関連する引数を含む指令を解析処理部４５が解析した場合、解析した指令に含まれる引数を使用し、補間処理により工具の移動経路を算出する。工具の移動経路に関連する引数を含む指令とは、工具の位置を示す引数、工具の移動速度を示す引数、補間処理で使用する補間方法を示す引数、などを１つ以上含む指令である。後述するインタラプト加工指令も工具の移動経路に関連する引数を含む指令に該当する。
【００２４】
補間処理部４８は、インタラプトタイミング判定部４８１、インタラプト経路算出部４８２、加工経路算出部４８３および移動量算出部４８４を備える。
【００２５】
インタラプトタイミング判定部４８１は、加工プログラム４３２に含まれるインタラプト加工指令を解析処理部４５のインタラプト加工指令解析部４５１が解析して得られる解析結果に基づいて、インタラプト動作を実行するタイミングを判定する。
【００２６】
インタラプト経路算出部４８２は、インタラプト加工指令を解析処理部４５のインタラプト加工指令解析部４５１が解析して得られる解析結果に基づいて、インタラプト動作中の工具の移動経路を算出する。
【００２７】
加工経路算出部４８３は、加工プログラム４３２に含まれる一般指令を解析処理部４５の一般指令解析部４５２が解析して得られる解析結果に基づいて、インタラプト動作を行っていない時の工具の移動経路を算出する。加工経路算出部４８３が算出する工具の移動経路は、ワークを加工する際の工具の移動経路、すなわち、工具がワークを実際に切削するときの工具の移動経路であり、加工経路に相当する。
【００２８】
移動量算出部４８４は、インタラプト経路算出部４８２が算出した工具の移動経路および加工経路算出部４８３が算出した工具の移動経路と、引数によって指令される工具の移動速度とに基づいて、予め定められた長さの単位時間あたりに工具が移動する距離を示す移動量を、駆動軸ごとに算出する。すなわち、移動量算出部４８４は、駆動軸ごとに、単位時間あたりに工具を移動させる距離を算出する。例えば、駆動軸がＸ軸およびＺ軸の２つである場合、移動量算出部４８４は、Ｘ軸に沿って単位時間あたりに工具が移動する距離を示すＸ軸の移動量と、Ｚ軸に沿って単位時間あたりに工具が移動する距離を示すＺ軸の移動量とを算出する。移動量算出部４８４は、算出した各駆動軸の移動量を加減速処理部４９に出力する。
【００２９】
加減速処理部４９は、補間処理部４８の移動量算出部４８４から受け取った各駆動軸の移動量を、予め指定された加減速パターンに従って加減速を考慮した単位時間あたりの移動指令に変換する。
【００３０】
軸データ出力部５０は、加減速処理部４９から出力される単位時間あたりの移動指令を、各駆動軸を制御するサーボ制御部１３（Ｘ軸サーボ制御部１３Ｘ，Ｚ軸サーボ制御部１３Ｚ，…）に出力する。なお、各サーボ制御部１３は、加減速処理部４９から移動指令を受け取ると、受け取った移動指令に従い、サーボモータ１１を制御する。
【００３１】
つづいて、インタラプト加工指令について説明する。図２は、実施の形態１にかかる数値制御装置１で実行される加工プログラムに含ませることが可能なインタラプト加工指令の構成例を示す図である。
【００３２】
図２に示したように、本実施の形態では、Ｇ１５０コード９１がインタラプト加工指令を示すものとする。また、Ｇ１５０コード９１は、引数を示すアドレスとして、Ｘ，Ｚ，Ｉ，Ｄ，Ｒ，Ａ，Ｑ，Ｍ，Ｅ，Ｐを含ませることが可能な構成である。図２に示したＧ１５０コード９１の各アドレスのうち、右側にアンダースコア‘＿’が付されているものには、アンダースコアの部分に数値が配置される。
【００３３】
数値制御装置１は、インタラプト加工指令を実行してインタラプト動作の実施条件を設定すると、インタラプト加工指令を新たに実行してインタラプト動作の実施条件の設定を変更するか、設定をキャンセルする指令を実行するまで、同じ実施条件でインタラプト動作を繰り返すよう、駆動部１０を制御する。設定をキャンセルするための指令の一例は、引数を全て省略したＧ１５０コード（Ｇ１５０の単独指令）とすることができる。以下、インタラプト加工指令（Ｇ１５０コード）に含ませることが可能な各アドレスについて説明する。
【００３４】
アドレスＸおよびＺは、インタラプト動作の対象の軸を指定するために用いられる。ＸはＸ軸を示し、ＺはＺ軸を示す。例えば、Ｇ１５０コードがＸを含み、Ｚを含まない場合、数値制御装置１は、Ｘ軸のみを対象としたインタラプト動作を行うよう、駆動部１０を制御する。すなわち、数値制御装置１は、工具がＸ軸方向にのみ移動してワークから離れるよう、駆動部１０を制御する。また、Ｇ１５０コードがＸおよびＺを含む場合、数値制御装置１は、Ｘ軸およびＺ軸を対象としたインタラプト動作を行うよう、駆動部１０を制御する。インタラプト動作で工具が移動する距離は、後述するアドレスＲで指定される。設定をキャンセルするための指令として用いる場合を除いて、Ｇ１５０コードは、ＸおよびＺの少なくとも一方を含む必要がある。なお、Ｇ１５０コードがＸまたはＺのいずれか一方のみを含む場合、後述する各アドレスを用いて指令される指令値に従った動作が不可能となる場合がある。そのため、Ｇ１５０コードにはＸおよびＺの双方を含ませるのが望ましい。
【００３５】
アドレスＩは、インタラプト動作を繰り返すタイミングを指定するために用いられる。具体的には、インタラプト動作を行ってから次にインタラプト動作を行うまでの間の工具の移動量を指定するためにアドレスＩが用いられる。Ｉに添えられる数値が工具の移動量を示す。工具の移動量は、工具が移動する距離または時間で指定可能とする。例えば、移動量を距離で指定された場合、数値制御装置１は、指定された距離だけ工具が移動するごとにインタラプト動作を行うよう、駆動部１０を制御する。アドレスＩが工具の移動量として距離と時間のどちらを示すかは、アドレスＤで指定される。
【００３６】
アドレスＤは、移動モード、すなわち、アドレスＩが示す移動量が距離と時間のどちらであるかを指定するために用いられる。一例として、本実施の形態では、Ｄ０の場合は距離を指定し、Ｄ１の場合に時間を指定することとする。
【００３７】
アドレスＲは、工具のリフトアップ量、すなわち、工具をワークから引き離す際に工具をどれだけ移動させるかを指定するために用いられる。Ｒに添えられる数値が工具のリフトアップ量を示す。リフトアップ動作では、指定されたリフトアップ量が示す距離だけ、工具を移動させる。よって、リフトアップ量は、工具をワークから引き離す際の工具の移動量である。リフトアップ量は、通常、加工時の工具の切り込み量よりも大きな値を指定する。これにより、リフトアップ動作時に工具がワークから離れることになり、工具がワークから離れる際に切り屑が分断される。
【００３８】
アドレスＡは、工具のリフトアップ角度、すなわち、工具をリフトアップする時の角度を指定するために用いられる。Ａに添えられる数値が工具のリフトアップ角度を示す。角度は、加工中の工具の移動方向に対する角度とする。例えば、工具がＸ軸と平行に移動しながら加工を行っている場合、アドレスＡで指定する角度は、Ｘ軸に対する角度となる。
【００３９】
アドレスＱは、リフトアップ後のドウェル時間、すなわち、上記のアドレスＲで指定されたリフトアップ量だけ工具をリフトアップした後、工具が移動を停止した状態を維持する時間の長さを指定するために用いられる。Ｑに添えられる数値がリフトアップ後のドウェル時間を示す。ドウェル時間の指定は主軸の回転数で行う。例えば、「Ｑ１」の場合のドウェル時間は、主軸が１回転するのに要する時間となる。数値制御装置１は、工具のリフトアップが終了した後、リフトアップ後のドウェル時間として指定された時間が経過すると（指定された数だけ主軸が回転すると）、工具のリフトダウンを開始するよう、駆動部１０を制御する。
【００４０】
アドレスＭは、リフトダウン戻り位置、すなわち、リフトダウン動作で工具をどの位置に戻すかを指定するために用いられる。Ｍに添えられる数値がリフトダウン戻り位置を示す。リフトダウン戻り位置は、リフトアップを開始した時点の工具の位置から、リフトダウンで工具が戻る位置までの距離（戻り量）を示す。アドレスＭを省略した場合、数値制御装置１は、リフトアップを開始した位置と同じ位置に工具が戻るよう、駆動部１０を制御する。
【００４１】
アドレスＥは、工具のリフトアップ速度、すなわち、リフトアップする時の工具の移動速度を指定するために用いられる。Ｅに添えられる数値が工具のリフトアップ速度を示す。なお、リフトダウンする時の工具の移動速度はリフトアップする時の工具の移動速度と同じとする。
【００４２】
アドレスＰは、工具をリフトダウンさせる時の工具の経路を直線形状と円弧形状のどちらとするかを指定するために用いられる。インタラプト加工指令にアドレスＰが含まれる場合、数値制御装置１は、リフトダウン時の工具経路の形状が円弧となるよう、駆動部１０を制御する。一方、インタラプト加工指令にアドレスＰが含まれない場合、数値制御装置１は、リフトダウン時の工具経路の形状が直線となるよう、駆動部１０を制御する。
【００４３】
つづいて、本実施の形態にかかる数値制御装置１が実現する加工動作の具体例について、図３および図４を用いて説明する。図３は、実施の形態１にかかる数値制御装置１が工作機械を制御して行う加工動作の第１の例を示す図である。図４は、図３に示した加工動作を実現する加工プログラムの一例を示す図である。
【００４４】
図３において、「ｉ」はリフトアップ間隔を示し、「ａ」はリフトアップ角度を示し、「ｒ」はリフトアップ量を示す。また、図３に示した<1>〜<6>は、図４に示した<1>〜<6>に対応する。図３に示すように、リフトアップ角度は、工具が移動してきた加工経路とリフトアップするときの工具の移動経路との間の角度を言う。本実施の形態では、リフトアップ角度は０°より大きく、９０°以下である。
【００４５】
図４に示した加工プログラム９２において、「Ｇ０」は位置決め指令を示す。「Ｇ０」に続く「Ｘ４００」、「Ｚ１０」などが各駆動軸の位置を示す。アドレスＸがＸ軸に対応し、アドレスＺがＺ軸に対応する。「Ｔ０１０１」は工具指令を示す。Ｔに続く最初の２桁が工具番号を示し、残りの２桁が工具の位置を補正するためのオフセット量を示す。
【００４６】
シーケンス番号Ｎ０１の「Ｇ１５０」は上述したインタラプト加工指令である。図４に示した例では、引数として、「Ｘ」，「Ｚ」，「Ｉ４０．」，「Ｄ０」，「Ｒ２０．」，「Ａ４５．」，「Ｑ１」，「Ｅ１０．」が含まれる。このインタラプト加工指令では、インタラプト動作の対称軸としてＸ軸およびＺ軸が指定され、工具が４０ｍｍ移動するごとにインタラプト動作を実行するよう指定されている。すなわち、インタラプト動作を実施する間隔の指定が４０ｍｍとされている。また、工具のリフトアップ量が２０ｍｍに指定され、工具のリフトアップ角度が４５°に指定され、工具のリフトアップ速度が１０ｍｍ／ｒｅｖに指定されている。また、リフトアップ後のドウェル時間が主軸１回転相当の時間に指定され、リフトダウンでは、リフトアップ開始位置に戻る経路が直線経路に指定されている。数値制御装置１は、インタラプト加工指令を実行すると、指令に含まれる引数で指定された条件に従ってインタラプト動作を行うよう動作設定を行い、駆動部１０の制御を開始する。
【００４７】
シーケンス番号Ｎ０２〜Ｎ０６に対応する指令は、直線補間の指令である。シーケンス番号Ｎ０２の「Ｇ０１  Ｚ−１００．  Ｆ２．」において、「Ｚ−１００．」は、工具のＺ軸上の座標を示す指令値、「Ｆ２．」は主軸１回転あたりの工具の送り速度を示す指令値である。具体的には、「Ｇ０１  Ｚ−１００．  Ｆ２．」は、Ｚ軸上の座標が−１００となるまで、送り速度２ｍｍ／ｒｅｖで工具を移動させることを示す直線補間の指令である。なお、工具のＸ軸上の座標は変化しないため、シーケンス番号Ｎ０２の指令では、工具のＸ軸上の座標を示す指令値が省略されている。数値制御装置１がシーケンス番号Ｎ０２の指令を実行することによって、図３に示した<2>の区間を工具が移動する。ここで、数値制御装置１は、シーケンス番号Ｎ０２の指令を実行する前に、インタラプト加工指令を実行している。そのため、数値制御装置１は、図３に示した<2>の区間を工具が移動している間にインタラプト動作の実施条件が満たされると、すなわち、工具の移動量がインタラプト間隔で指定された移動量に達すると、インタラプト動作を実施して工具をリフトアップさせる。図３および図４に示した例では、数値制御装置１は、工具を４０ｍｍ移動させるごとに、リフトアップ角度４５°で工具をリフトアップさせる。リフトアップ角度は、工具の移動方向の逆方向に対する角度である。このときの工具のリフトアップ速度は１０ｍｍ／ｒｅｖ、リフトアップ量は２０ｍｍである。また、数値制御装置１は、工具を２０ｍｍリフトアップさせた後、主軸が１回転するまで工具を停止させ、工具を元の位置、すなわち、リフトアップの開始位置に戻す。このとき、数値制御装置１は、移動距離が最短となる直線経路で工具が元の位置に戻るよう、駆動部１０を制御する。<2>の区間で工具が移動する距離は１１０ｍｍであるため、この区間ではインタラプト動作を２回行うことになる。
【００４８】
また、シーケンス番号Ｎ０３の「Ｘ２００．  Ｚ−１５０．」は、Ｘ軸上の座標が２００となり、Ｚ軸上の座標が−１５０となるまで、送り速度２ｍｍ／ｒｅｖで工具を移動させることを示す直線補間の指令である。なお、「Ｘ２００．  Ｚ−１５０．」は、直前のシーケンス番号Ｎ０２と同じ直線補間の指令であるため、直線補間の指令を示す「Ｇ０１」を省略している。また、送り速度の変更が無いため、送り速度の指令値「Ｆ２．」も省略している。数値制御装置１がシーケンス番号Ｎ０３の指令を実行することによって、図３に示した<3>の区間を工具が移動する。このとき、<2>の区間を工具が移動する場合と同様に、数値制御装置１は、インタラプト動作の実施条件が満たされると、工具をリフトアップさせる。数値制御装置１は、上述した<2>の区間と同様の方法で、工具をリフトアップさせる。<3>の区間ではインタラプト動作を１回行う。
【００４９】
シーケンス番号Ｎ０４の「Ｘ１５０．  Ｚ−２００．」は、Ｘ軸上の座標が１５０となり、かつＺ軸上の座標が−２００となるまで、送り速度２ｍｍ／ｒｅｖで工具を移動させることを示す直線補間の指令である。シーケンス番号Ｎ０３の指令と同様に、「Ｇ０１」および「Ｆ２．」が省略されている。数値制御装置１がシーケンス番号Ｎ０４の指令を実行することによって、図３に示した<4>の区間を工具が移動する。このとき、<2>および<3>の区間を工具が移動する場合と同様に、数値制御装置１は、インタラプト動作の実施条件が満たされると、工具をリフトアップさせる。数値制御装置１は、上述した<2>および<3>の区間と同様の方法で、工具をリフトアップさせる。<4>の区間ではインタラプト動作を１回行う。
【００５０】
シーケンス番号Ｎ０５の「Ｚ−３００．」は、Ｚ軸上の座標が−３００となるまで、送り速度２ｍｍ／ｒｅｖで工具を移動させることを示す直線補間の指令である。シーケンス番号Ｎ０３の指令と同様に、「Ｇ０１」および「Ｆ２．」が省略されている。数値制御装置１がシーケンス番号Ｎ０５の指令を実行することによって、図３に示した<5>の区間を工具が移動する。このとき、<2>〜<4>の区間を工具が移動する場合と同様に、数値制御装置１は、インタラプト動作の実施条件が満たされると、工具をリフトアップさせる。数値制御装置１は、上述した<2>〜<4>の区間と同様の方法で、工具をリフトアップさせる。<5>の区間ではインタラプト動作を２回行う。
【００５１】
シーケンス番号Ｎ０６の「Ｘ３００．」は、Ｘ軸上の座標が３００となるまで、送り速度２ｍｍ／ｒｅｖで工具を移動させることを示す直線補間の指令である。シーケンス番号Ｎ０３の指令と同様に、「Ｇ０１」および「Ｆ２．」が省略されている。数値制御装置１がシーケンス番号Ｎ０６の指令を実行することによって、図３に示した<6>の区間を工具が移動する。このとき、<2>〜<5>の区間を工具が移動する場合と同様に、数値制御装置１は、インタラプト動作の実施条件が満たされると、工具をリフトアップさせる。数値制御装置１は、上述した<2>〜<5>の区間と同様の方法で、工具をリフトアップさせる。<6>の区間ではインタラプト動作を２回行う。
【００５２】
シーケンス番号Ｎ０７の「Ｇ１５０」は、引数が全て省略されているため、インタラプト加工の終了、すなわち、インタラプト動作をキャンセルするためのキャンセル指令である。数値制御装置１は、シーケンス番号Ｎ０７のキャンセル指令を実行すると、インタラプト動作の実施条件の設定をキャンセルする。
【００５３】
つづいて、本実施の形態にかかる数値制御装置１が実現する加工動作の第２の例について、図５および図６を用いて説明する。図５は、実施の形態１にかかる数値制御装置１が工作機械を制御して行う加工動作の第２の例を示す図である。図６は、図５に示した加工動作を実現する加工プログラムの一例を示す図である。
【００５４】
図５において、「ｉ」はインタラプト動作を実施する間隔であるリフトアップ間隔を示し、「ａ」はリフトアップ角度を示し、「ｒ」はリフトアップ量を示す。また、図５に示した<1>〜<6>は、図６に示した<1>〜<6>に対応する。
【００５５】
図６に示した加工プログラム９３のシーケンス番号Ｎ０１の指令よりも前の指令は図４に示した加工プログラム９２と同様であるため、説明を省略する。
【００５６】
シーケンス番号Ｎ０１の「Ｇ１５０」は上述したインタラプト加工指令である。図６に示した例では、引数として、「Ｘ」，「Ｚ」，「Ｉ４０．」，「Ｄ０」，「Ｒ２０．」，「Ａ４５．」，「Ｅ１０．」，「Ｐ」が含まれる。このインタラプト加工指令では、インタラプト動作の対称軸としてＸ軸およびＺ軸が指定され、工具が４０ｍｍ移動するごとにインタラプト動作を実行するよう指定されている。すなわち、インタラプト動作を実施する間隔の指定が４０ｍｍとされている。また、工具のリフトアップ量が２０ｍｍに指定され、工具のリフトアップ角度が４５°に指定され、工具のリフトアップ速度が１０ｍｍ／ｒｅｖに指定されている。以上の条件は、図３に示した第１の例におけるインタラプト動作と同様である。一方、リフトアップ後のドウェル時間は指定されていない。また、リフトダウンでは、リフトアップの開始位置に戻る経路が円弧に指定されている。数値制御装置１は、インタラプト加工指令を実行すると、指令に含まれる引数で指定された条件に従ってインタラプト動作を行うよう動作設定を行い、駆動部１０の制御を開始する。
【００５７】
図６に示したシーケンス番号Ｎ０２〜Ｎ０４の指令は、図４に示した同じシーケンス番号の指令と同一である。そのため、図５に示した<2>〜<4>の区間において工具がワークを加工する時の経路は、図３に示した<2>〜<4>の区間において工具がワークを加工する時の経路と同一である。ただし、インタラプト動作の条件が一部異なるため、インタラプト動作時の工具の経路、具体的には、リフトダウンする時の工具の経路が、図３に示した第１の例とは異なる。
【００５８】
図５および図６に示した例の場合、数値制御装置１は、工具を４０ｍｍ移動させるごとに、リフトアップ角度４５°で、かつリフトアップ速度１０ｍｍ／ｒｅｖで、リフトアップ量２０ｍｍだけ工具をリフトアップさせる。ここまでの動作は図３および図４に示した例と同様である。数値制御装置１は、リフトアップ量２０ｍｍだけ工具をリフトアップさせた後、すぐに、工具を元の位置、すなわち、リフトアップの開始位置に戻す。数値制御装置１は、このときの工具の経路が円弧となるよう、駆動部１０を制御する。数値制御装置１は、リフトダウンを開始する時点の工具の座標と、工具の元の位置の座標（リフトダウン終了時点の工具の座標）とを用いて、円弧補間により工具の経路を求める。リフトアップした工具が元の位置に戻る経路を円弧とする場合、工具とワークが再度接触する際にワークの表面に筋目がつきにくくすることができ、加工精度の向上を実現できる。
【００５９】
図６に示したシーケンス番号Ｎ０５の「Ｚ−２３０．」は、Ｚ軸上の座標が−２３０となるまで、送り速度２ｍｍ／ｒｅｖで工具を移動させることを示す直線補間の指令である。数値制御装置１が図６に示したシーケンス番号Ｎ０５の指令を実行することによって、図５に示した<5>の区間を工具が移動する。ここで、図５の<5>の区間で工具が移動する距離は３０ｍｍであり、インタラプト加工指令で指定されたインタラプト動作の実施間隔４０ｍｍよりも短い。そのため、図５の<5>の区間ではリフトアップを行わない。
【００６０】
図６に示したシーケンス番号Ｎ０６の「Ｇ０２  Ｘ３００．  Ｚ−３００．  Ｉ７０．  Ｆ２．」は、Ｘ軸上の座標が３００となり、かつＺ軸上の座標が−３００となるまで、送り速度２ｍｍ／ｒｅｖで工具を移動させることを示す、時計回りの円弧補間の指令である。数値制御装置１が図６に示したシーケンス番号Ｎ０６の指令を実行することによって、図５に示した<6>の区間を工具が移動する。この場合も、数値制御装置１は、インタラプト動作の実施間隔に設定された４０ｍｍだけ工具が移動するごとに、インタラプト動作を実施する。この時のリフトアップ角度は、リフトアップを開始する時点の工具の位置における円弧の接線に対する角度とする。図５に示した<6>の区間では、リフトアップを２回行うことになる。
【００６１】
図６に示したシーケンス番号Ｎ０７の「Ｇ１５０」は、図４に示したシーケンス番号Ｎ０７の「Ｇ１５０」と同様の指令（キャンセル指令）である。
【００６２】
つづいて、本実施の形態にかかる数値制御装置１が実現する加工動作の第３の例について、図７を用いて説明する。図７は、実施の形態１にかかる数値制御装置１が工作機械を制御して行う加工動作の第３の例を示す図である。
【００６３】
図７に示した第３の例は、図３に示した第１の例と比較して、リフトアップを行った後の工具の戻り位置が異なる。すなわち、図７に示した例の場合、数値制御装置１は、リフトアップを開始した位置から、インタラプト加工指令のリフトダウン戻り位置（アドレスＭ）で指定された距離ｍだけ後退した位置に工具を戻す。例えば、図７に示したｍ＝５（リフトアップ戻り位置が５ｍｍ）の場合、第３の例の加工を行うためには、第１の例の加工を行うための加工プログラム（図４に示した加工プログラム９２）のシーケンス番号Ｎ０１の「Ｇ１５０  Ｘ  Ｚ  Ｉ４０．  Ｄ０  Ｒ２０．  Ａ４５．  Ｑ１  Ｅ１０．」を「Ｇ１５０  Ｘ  Ｚ  Ｉ４０．  Ｄ０  Ｒ２０．  Ａ４５．  Ｑ１  Ｍ５  Ｅ１０．」とすればよい。図７に示したような、リフトアップした工具を元の位置（リフトアップを開始した位置）よりも後退した位置に戻して加工を再開する場合、リフトアップを行っても切りくずが切り落とされずにワーク上に残っていたとしても、加工を再開する際に、残っていた切りくずを切り落とすことができる。
【００６４】
つづいて、本実施の形態にかかる数値制御装置１の構成要素のうち、上述したインタラプト加工指令に従って工作機械を制御する動作を実現するための構成要素、具体的には、解析処理部４５および補間処理部４８について、詳しく説明する。
【００６５】
図８は、実施の形態１にかかる数値制御装置１が備える解析処理部４５の動作の一例を示すフローチャートである。解析処理部４５は、例えば、加工プログラム４３２に従って工作機械を制御する動作の開始を指示する操作を入力操作部２０がユーザから受け付けると、図８に示した動作を開始する。
【００６６】
解析処理部４５は、動作を開始すると、まず、加工プログラム４３２を記憶部４３から読み出して解析する（ステップＳ１１）。具体的には、解析処理部４５は、加工プログラム４３２を解析して１つの指令である１ブロックを読み出す。
【００６７】
解析処理部４５は、次に、読み出した指令がインタラプト加工指令であるか否かを確認し（ステップＳ１２）、インタラプト加工指令の場合、すなわち、Ｇ１５０コードである場合（ステップＳ１２：Ｙｅｓ）、インタラプト加工のキャンセル指令に該当するか否かを確認する（ステップＳ１３）。このステップＳ１３および後述するステップＳ１４〜Ｓ１６の処理は、インタラプト加工指令解析部４５１が行う。インタラプト加工指令解析部４５１は、Ｇ１５０コードがアドレスＸなどの引数を一切含まない単独指令の場合、キャンセル指令に該当すると判断する。
【００６８】
インタラプト加工指令解析部４５１は、キャンセル指令に該当しない場合（ステップＳ１３：Ｎｏ）、インタラプト加工指令から指令値を抽出する（ステップＳ１４）。ここでの指令値とは、インタラプト加工指令に含まれる引数で与えられる情報であり、例えば、アドレスＸおよびＺで示されるインタラプト動作の対象の軸を示す情報、アドレスＩで示されるインタラプト動作を繰り返すタイミングの情報、などが該当する。
【００６９】
インタラプト加工指令解析部４５１は、次に、ステップＳ１４で抽出した指令値を用いて、インタラプト動作の実施条件を設定する（ステップＳ１５）。具体的には、インタラプト加工指令解析部４５１は、抽出した指令値を、記憶部４３の共有エリア４３４に書き込むことで、インタラプト動作の実施条件を設定する。このとき、インタラプト加工指令解析部４５１は、各指令値を、共有エリア４３４内の予め定められた領域に書き込む。なお、インタラプト動作の実施条件が既に設定されている状態でインタラプト加工指令解析部４５１がステップＳ１５を実行すると、インタラプト動作の実施条件が更新される。
【００７０】
また、インタラプト加工指令解析部４５１は、読み出した指令がインタラプト加工のキャンセル指令に該当する場合（ステップＳ１３：Ｙｅｓ）、インタラプト動作の実施条件の設定を解除する（ステップＳ１６）。具体的には、インタラプト加工指令解析部４５１は、記憶部４３の共有エリア４３４に書き込まれている、インタラプト動作の実施条件を消去する。なお、インタラプト動作の実施条件の設定が有効であることを示すフラグを共有エリア４３４内に設けておき、このフラグをインタラプト加工指令解析部４５１がクリアすることで、インタラプト動作の実施条件の設定を解除するようにしてもよい。この場合、インタラプト加工指令解析部４５１は、上記のステップＳ１５において、インタラプト加工指令から抽出した指令値を共有エリア４３４へ書き込む処理と、インタラプト動作の実施条件の設定が有効であることを示すフラグを設定する処理とを行う。
【００７１】
また、解析処理部４５は、加工プログラム４３２を解析して読み出した指令がインタラプト加工指令ではない場合（ステップＳ１２：Ｎｏ）、読み出した指令から指令値を抽出し（ステップＳ１７）、抽出した指令値に従い、ワークを加工する動作の動作条件を設定する（ステップＳ１８）。これらのステップＳ１７およびＳ１８は、一般指令解析部４５２が行う。例えば、読み出した指令が直線補間の指令であるＧ０１コードの場合、一般指令解析部４５２は、ステップＳ１７において、工具の座標を示す指令値および工具の送り速度を示す指令値を抽出する。また、一般指令解析部４５２は、ステップＳ１８において、抽出した指令値を、共有エリア４３４内の予め定められた領域に書き込むことで、動作条件を設定する。このとき、一般指令解析部４５２は、読み出した指令を示す情報、すなわち、直線補間の指令を示す情報も共有エリア４３４に書き込む。一般指令解析部４５２は、読み出した指令がＧ０１コードで示される直線補間の指令とは異なる場合も同様に、読み出した指令から指令値を抽出し、抽出した指令値と、読み出した指令の種類を示す情報とを共有エリア４３４内の予め定められた領域に書き込むことにより、動作条件を設定する。なお、ワークを加工する動作の動作条件は、一般指令解析部４５２がステップＳ１８を実行するごとに更新される。以下の説明では、「指令の種類を示す情報」を単に「指令の種類」と記載する場合がある。
【００７２】
解析処理部４５は、ステップＳ１５、Ｓ１６およびＳ１８を実行した後は、ステップＳ１１に戻り、次の指令を読み出して動作を継続する。
【００７３】
図９は、実施の形態１にかかる数値制御装置１が備える補間処理部４８の動作の一例を示すフローチャートである。図９のフローチャートは、数値制御装置１が工作機械の駆動部１０を制御してワークを加工する場合の補間処理部４８の動作を示す。
【００７４】
補間処理部４８は、例えば、記憶部４３の共有エリア４３４に書き込まれている情報を定期的に確認し、工具の座標を示す指令値が更新されたことを検出すると、図９に示した動作を開始する。
【００７５】
補間処理部４８は、動作を開始すると、共有エリア４３４に書き込まれている指令値が示す位置へ工具を移動させる制御を開始する（ステップＳ２１）。ステップＳ２１において、補間処理部４８は、共有エリア４３４に書き込まれている情報のうち、指令の種類、工具の各駆動軸の座標を示す指令値および工具の送り速度を示す指令値といった情報に基づいて、駆動部１０に対する制御情報を生成する。具体的には、まず、加工経路算出部４８３が、指令の種類と、工具の各駆動軸の座標を示す指令値と、工具の現在位置とに基づいて、指令値が示す位置である指令位置までの工具の移動経路を算出する。次に、移動量算出部４８４が、加工経路算出部４８３で算出された移動経路と、工具の送り速度とに基づいて、単位時間あたりの工具の移動量を、駆動軸ごとに算出する。移動量算出部４８４は、駆動軸ごとに算出した単位時間あたりの工具の移動量を加減速処理部４９に出力する。
【００７６】
補間処理部４８は、次に、インタラプト動作の実施条件が設定されているか否かを確認し（ステップＳ２２）、実施条件が設定されていない場合（ステップＳ２２：Ｎｏ）、指令位置まで工具を移動させ（ステップＳ２６）、動作を終了する。
【００７７】
一方、インタラプト動作の実施条件が設定されている場合（ステップＳ２２：Ｙｅｓ）、補間処理部４８は、インタラプト動作の実施タイミングか否かを確認する（ステップＳ２３）。インタラプト動作の実施タイミングか否かの確認は、インタラプトタイミング判定部４８１が行う。ステップＳ２３において、インタラプトタイミング判定部４８１は、工具が移動を開始してからの工具の移動量、または、インタラプト動作を前回実施してからの工具の移動量が、共有エリア４３４に書き込まれているインタラプト動作の実施条件に設定されているインタラプト間隔が示す移動量に達したか否かを確認する。インタラプトタイミング判定部４８１は、工具の移動量が、インタラプト間隔が示す移動量に達した場合、インタラプト動作の実施タイミングと判断する。
【００７８】
補間処理部４８は、インタラプト動作の実施タイミングである場合（ステップＳ２３：Ｙｅｓ）、インタラプト動作を実施させる（ステップＳ２４）。すなわち、補間処理部４８は、工作機械にインタラプト動作を実施させるための制御情報を生成する。具体的には、まず、インタラプト経路算出部４８２が、インタラプト動作の実施条件に含まれる各指令値に従い、インタラプト動作中の工具の経路を算出する。例えば、解析処理部４５が図４に示した加工プログラム９２のシーケンス番号Ｎ０１のインタラプト指令を読み出してインタラプト動作の実施条件を設定した状態の場合、インタラプト経路算出部４８２は、図３に示したインタラプト動作となるような工具の経路を算出する。次に、移動量算出部４８４が、インタラプト経路算出部４８２で算出された工具の経路と、インタラプト動作の実施条件が示すリフトアップ速度とに基づいて、単位時間あたりの工具の移動量を、駆動軸ごとに算出する。移動量算出部４８４は、駆動軸ごとに算出した単位時間あたりの工具の移動量を加減速処理部４９に出力する。ステップＳ２４において、移動量算出部４８４は、インタラプト動作が終了するまで、すなわち、インタラプト動作の実施条件が示す位置に工具が戻るまで、単位時間あたりの工具の移動量を算出して加減速処理部４９に出力する処理を繰り返す。
【００７９】
補間処理部４８は、ステップＳ２４でのインタラプト動作が終了すると、ステップＳ２３に戻る。また、補間処理部４８は、インタラプト動作の実施タイミングではない場合（ステップＳ２３：Ｎｏ）、指令位置に工具が到着したか否かを確認する（ステップＳ２５）。補間処理部４８は、指令位置に工具が到着していない場合（ステップＳ２５：Ｎｏ）、ステップＳ２３に戻る。補間処理部４８は、指令位置に工具が到着した場合（ステップＳ２５：Ｙｅｓ）、動作を終了する。
【００８０】
つづいて、本実施の形態にかかる数値制御装置１が実現するインタラプト動作のバリエーションについて説明する。
【００８１】
図１０は、実施の形態１にかかる数値制御装置１を適用して行うインタラプト動作の第１の例を示す図である。
【００８２】
図１０に示したインタラプト動作は、インタラプト加工指令が、リフトダウン時の戻り量（ｍ）を指定する引数と、リフトダウン時の工具経路の形状として円弧を指定する引数とを含む場合に対応する。図２を用いて説明したように、リフトダウン時の戻り量はアドレスＭを用いて指定し、リフトダウン時の工具経路の形状（円弧軌跡）はアドレスＰを用いて指定する。リフトダウン時の円弧軌跡は、リフトアップを完了した時点の工具の位置とリフトダウンを完了する時点の工具の位置を通り、かつ、リフトダウンを完了する時点の工具位置での接線が、直線補間指令に対応する直線と同じになる軌跡である。
【００８３】
図１０に示したインタラプト動作を実施すると、リフトアップ時に切りくずの残りがワークに残っていた場合に、切りくずの残りを旋削で切り落とすことができる。また、工具がリフトダウンしてワークと再接触する際にワークに筋がつきにくくなる。
【００８４】
図１１は、実施の形態１にかかる数値制御装置１を適用して行うインタラプト動作の第２の例を示す図である。
【００８５】
図１１に示したインタラプト動作は、インタラプト加工指令が、リフトダウン時の戻り量（ｍ）を指定する引数と、リフトダウン時の工具経路の形状として円弧を指定する引数とを含まない場合であって、かつ円弧補間指令（Ｇ０２コード）に従い加工を行う場合に対応する。図１１に示した例では、工具が円弧に沿って、指定されたリフトアップ間隔だけ移動するごとにリフトアップを行う。リフトアップ角度は、工具がリフトアップを開始する位置での接線に対する角度となる。
【００８６】
図１１に示したインタラプト動作を実施すると、加工の所要時間であるサイクルタイムがインタラプト動作の実行に伴い伸びるのを最小限に抑えることができる。
【００８７】
図１２は、実施の形態１にかかる数値制御装置１を適用して行うインタラプト動作の第３の例を示す図である。
【００８８】
図１２に示したインタラプト動作は、インタラプト加工指令が、リフトダウン時の戻り量（ｍ）を指定する引数を含み、かつ円弧補間指令（Ｇ０２コード）に従い加工を行う場合に対応する。図１１に示したインタラプト動作との違いは、リフトダウンで工具が戻る位置である。図１２に示した例では、リフトアップを開始した位置から指定された戻り量ｍだけ後退した位置に工具を戻す。
【００８９】
図１２に示したインタラプト動作を実施すると、リフトアップ時に切りくずの残りがワークに残っていた場合に、切りくずの残りを旋削で切り落とすことができる。
【００９０】
図１３は、実施の形態１にかかる数値制御装置１を適用して行うインタラプト動作の第４の例を示す図である。
【００９１】
図１３に示したインタラプト動作は、インタラプト加工指令が、リフトダウン時の戻り量（ｍ）を指定する引数と、リフトダウン時の工具経路の形状として円弧を指定する引数とを含み、かつ円弧補間指令（Ｇ０２コード）に従い加工を行う場合に対応する。図１２に示したインタラプト動作との違いは、リフトダウン時の工具経路の形状である。図１３に示した例では、リフトダウン時の工具経路の形状が円弧軌跡となる点である。リフトダウン時の円弧軌跡は、リフトアップを完了した時点の工具の位置とリフトダウンを完了する時点の工具の位置を通り、かつ、リフトダウンを完了する時点の工具位置での接線が、円弧補間指令に対応する円弧の接線となる軌跡である。
【００９２】
図１３に示したインタラプト動作を実施すると、図１０に示したインタラプト動作を実施する場合と同様に、リフトアップ時に切りくずの残りがワークに残っていた場合に、切りくずの残りを旋削で切り落とすことができる。また、工具がリフトダウンしてワークと再接触する際にワークに筋がつきにくくなる。
【００９３】
ここで、数値制御装置１が備える制御演算部４０のハードウェア構成について説明する。図１４は、実施の形態１にかかる数値制御装置１が備える制御演算部４０のハードウェア構成例を示す図である。
【００９４】
制御演算部４０は、図１４に示したプロセッサ１０１およびメモリ１０２により実現することができる。プロセッサ１０１の例は、ＣＰＵ（Central  Processing  Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、ＤＳＰ（Digital  Signal  Processor）ともいう）またはシステムＬＳＩ（Large  Scale  Integration）である。メモリ１０２の例は、ＲＡＭ（Random  Access  Memory）またはＲＯＭ（Read  Only  Memory）である。
【００９５】
制御演算部４０は、プロセッサ１０１が、メモリ１０２で記憶されている、制御演算部４０の動作を実行するためのプログラムを読み出して実行することにより実現される。また、このプログラムは、制御演算部４０の手順または方法をコンピュータに実行させるものであるともいえる。メモリ１０２は、プロセッサ１０１が各種処理を実行する際の一時メモリにも使用される。
【００９６】
プロセッサ１０１が実行するプログラムは、コンピュータで実行可能な、データ処理を行うための複数の命令を含むコンピュータ読取り可能かつ非遷移的な（non-transitory）記録媒体を有するコンピュータプログラムプロダクトであってもよい。プロセッサ１０１が実行するプログラムは、複数の命令がデータ処理を行うことをコンピュータに実行させる。
【００９７】
また、制御演算部４０を専用のハードウェアで実現してもよい。また、制御演算部４０の機能について、一部を専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。
【００９８】
以上のように、本実施の形態にかかる数値制御装置１は、新たに定義されるインタラプト加工指令を読み込み、この指令に含まれる各種指令値で指令される動作、具体的には、ワークの加工を一時的に中断し、工具をワークから引き離した後、工具をワークに再度接触させて加工を再開するインタラプト動作を行うよう、工作機械に設けられた駆動部１０を制御する。これにより、インタラプト動作で工具がワークから離れる際に、切りくずをワークから分断することができる。また、インタラプト動作の実施条件はインタラプト加工指令を用いて指定されるため、主軸の回転数を変更しても、インタラプト動作は影響を受けない。すなわち、数値制御装置１は、主軸の回転数の設定値が変更された場合も、同じ実施条件でインタラプト動作を継続させることができ、加工によって発生する切りくずを、主軸の回転数の設定値の影響を受けることなく安定して分断する動作を実現できる。
【００９９】
実施の形態２．
実施の形態１では、ワークの外側を加工する場合のインタラプト動作を説明したが、旋削加工によって、図１５に示すような、ワークに孔などを設ける場合がある。このような加工は中ぐり加工と呼ばれる。ここで、中ぐり加工においてインタラプト動作を実施して切りくずをワークから分断する場合、図１６に示したような問題が発生する可能性がある。すなわち、中ぐり加工を行っている最中に、実施の形態１で説明したインタラプト動作を実施すると、工具である中ぐりバイトをリフトアップした際に、図１６に示すように工具と加工対象物であるワークが干渉する可能性がある。干渉が発生すると、加工精度が劣化する、工具が破損する、などの弊害が起こり得る。
【０１００】
そのため、本実施の形態では、上記のような問題が発生した場合に、インタラプト動作の実施条件を自ら変更して問題を解決することが可能な数値制御装置について説明する。なお、工具とワークが干渉する問題は、中ぐり加工を行う場合に限らない。例えば、図１７に示したような加工を行う場合にも発生する。図１７においては、矢印がインタラプト動作時の工具の経路を示している。図１７に示した例の場合、インタラプト動作の実施条件に含まれるリフトアップ間隔、リフトアップ角度およびリフトアップ量の設定値の関係から、破線の矢印に対応するインタラプト動作で工具をリフトアップした際に干渉が発生する。
【０１０１】
図１８は、実施の形態２にかかる数値制御装置１ａの構成例を示す図である。数値制御装置１ａは、実施の形態１にかかる数値制御装置１に動作条件変更部５１を追加した構成である。
【０１０２】
動作条件変更部５１は、インタラプト動作において工具とワークの干渉が発生したときに行う、インタラプト動作の実施条件の変更方法を学習する。具体的には、動作条件変更部５１は、インタラプト動作中に工具とワークの干渉が発生する状態を学習し、学習結果を使用してインタラプト動作の実施条件を変更する。動作条件変更部５１は、例えば機械学習装置で実現される。インタラプト動作の実施条件の例は、工具のリフトアップ量である。以下、工具のリフトアップ量がインタラプト動作の実施条件である場合を例として、動作条件変更部５１の説明を行う。動作条件変更部５１は、状態観測部５１１および学習部５１２を備える。
【０１０３】
状態観測部５１１は、軸データ出力部５０が出力する電流値（ｊ）と、補間処理部４８が出力するインタラプト中情報（ｉｎｔ）と、解析処理部４５が出力するリフトアップ量（ｒ）とを状態変数として観測する。電流値（ｊ）は、駆動部１０のサーボモータ１１および主軸モータ１４に流れる電流の値を示す。インタラプト中情報（ｉｎｔ）は、インタラプト動作を実施中か否かを示す。リフトアップ量（ｒ）は、インタラプト動作を行うときの工具のリフトアップ量を示す。軸データ出力部５０が出力する電流値（ｊ）は、工具とワークの干渉が発生すると急激に大きくなる。そのため、状態観測部５１１は、インタラプト中情報（ｉｎｔ）がインタラプト動作の実施中を示しているときに電流値（ｊ）が急激に大きくなった場合、工具とワークの干渉が発生したと判断する。
【０１０４】
学習部５１２は、インタラプト中情報（ｉｎｔ）、リフトアップ量（ｒ）および電流値（ｊ）の状態変数に基づいて作成される訓練データセットに従って、リフトアップ量の変更方法を学習する。すなわち、学習部５１２は、状態観測部５１１によるインタラプト中情報（ｉｎｔ）、リフトアップ量（ｒ）および電流値（ｊ）の観測結果がどのような内容となった場合にリフトアップ量をどのように変更すべきかを学習する。
【０１０５】
学習部５１２が上記の学習を行う際に用いる学習アルゴリズムはどのようなものであってもよい。一例として、強化学習（Ｒｅｉｎｆｏｒｃｅｍｅｎｔ  Ｌｅａｒｎｉｎｇ）を適用した場合について説明する。強化学習は、ある環境内におけるエージェント（行動主体）が、現在の状態を観測し、取るべき行動を決定する、というものである。エージェントは行動を選択することで環境から報酬を得て、一連の行動を通じて報酬が最も多く得られるような方策を学習する。強化学習の代表的な手法として、Ｑ学習（Ｑ−ｌｅａｒｎｉｎｇ）やＴＤ学習（ＴＤ−ｌｅａｒｎｉｎｇ）が知られている。例えば、Ｑ学習の場合、行動価値関数Ｑ（ｓ，ａ）の一般的な更新式（行動価値テーブル）は式（１）で表される。
【０１０６】
【数１】
0006661062.tif 000002
【０１０７】
式（１）において、ｓtは時刻ｔにおける環境を表し、ａtは時刻ｔにおける行動を表す。行動ａtにより、環境はｓt+1に変わる。ｒt+1はその環境の変化によってもらえる報酬を表し、γは割引率を表し、αは学習係数を表す。Ｑ学習を適用した場合、インタラプト動作の実施条件の変更（リフトアップ量の変更）が行動ａtとなる。
【０１０８】
式（１）で表される更新式は、時刻ｔ＋１における最良の行動ａの行動価値Ｑが、時刻ｔにおいて実行された行動ａの行動価値Ｑよりも大きければ、行動価値Ｑを大きくし、逆の場合は、行動価値Ｑを小さくする。換言すれば、時刻ｔにおける行動ａの行動価値Ｑを、時刻ｔ＋１における最良の行動価値に近づけるように、行動価値関数Ｑ（ｓ，ａ）を更新する。それにより、或る環境における最良の行動価値が、それ以前の環境における行動価値に順次伝播していくようになる。
【０１０９】
学習部５１２は、報酬計算部５１３と、関数更新部５１４と、をさらに備えている。
【０１１０】
報酬計算部５１３は、インタラプト中情報（ｉｎｔ）、リフトアップ量（ｒ）および電流値（ｊ）に基づいて、報酬（ｋ）を計算する。例えば、インタラプト動作を実施中に電流値（ｊ）が急激に大きくなった場合には報酬（ｋ）を低減させる。報酬計算部５１３は、例えば、「−１」の報酬を与えることで、報酬（ｋ）を低減させる。他方、インタラプト動作を実施中に電流値（ｊ）が大きく変化しない場合には、「１」の報酬を与えることで、報酬（ｋ）を増加させる。なお、学習に用いるリフトアップ中情報、リフトアップ量（r）および電流値（ｊ）は、公知の方法に従って抽出される。「−１」の報酬のときは、ワークと工具が干渉したと判定して最低報酬になる。
【０１１１】
関数更新部５１４は、報酬計算部５１３によって計算される報酬に従って、行動（ｎ）すなわち、インタラプト動作の実施条件の変更内容（リフトアップ量（ｒ）の変更内容）を決定するための関数を更新する。例えばＱ学習の場合、式（１）で表される行動価値関数Ｑ（ｓt，ａt）を行動（リフトアップ量（ｒ）の変更内容）を決定するための関数として用いる。例えば、学習部５１２は、報酬が最大となるリフトアップ量（ｒ）の変更量を決定する。決定した変更量を用いて更新されたリフトアップ量（ｒ）は、学習部５１２から補間処理部４８のインタラプト経路算出部４８２に行動（ｎ）として伝えられる。インタラプト経路算出部４８２は、学習部５１２から与えられた更新後のリフトアップ量（ｒ）を使用して、インタラプト動作中の工具の移動経路を算出する。
【０１１２】
以上の手順により、数値制御装置１ａの動作条件変更部５１は、リフトアップ量（ｒ）の変更量を決定し、報酬（ｋ）が最大となるよう、リフトアップ量（ｒ）を変更する。数値制御装置１ａの動作条件変更部５１以外の構成要素は、実施の形態１にかかる数値制御装置１が備える、同じ符号が付された構成要素と同様の処理を実行する。そのため、動作条件変更部５１以外の構成要素については説明を省略する。
【０１１３】
図１９は、実施の形態２にかかる数値制御装置１ａが備える動作条件変更部５１の動作の一例を示すフローチャートである。
【０１１４】
図１９に示したように、動作条件変更部５１は、インタラプト動作を実施中か否かを監視し（ステップＳ３１）、実施中ではない場合（ステップＳ３１：Ｎｏ）、監視を継続する。動作条件変更部５１は、インタラプト中情報（ｉｎｔ）を確認することにより、インタラプト動作を実施中か否かを判定する。動作条件変更部５１は、インタラプト動作を実施中の場合（ステップＳ３１：Ｙｅｓ）、工具とワークの干渉が発生したか否かを確認する（ステップＳ３２）。動作条件変更部５１は、電流値（ｊ）が急激に大きくなった場合、干渉が発生したと判断する。動作条件変更部５１は、干渉が発生していない場合（ステップＳ３２：Ｎｏ）、ステップＳ３１に戻って動作を継続する。
【０１１５】
これに対して、工具とワークの干渉が発生した場合（ステップＳ３２：Ｙｅｓ）、動作条件変更部５１は、干渉の発生条件を学習する（ステップＳ３３）。動作条件変更部５１は、例えば、干渉の発生条件をリフトアップ量（ｒ）および電流値（ｊ）を用いて学習する。
【０１１６】
動作条件変更部５１は、次に、ステップＳ３３での学習結果に基づいて、インタラプト動作の実施条件を変更する（ステップＳ３４）。ステップＳ３４で変更する対象が工具のリフトアップ量である場合、動作条件変更部５１は、補間処理部４８のインタラプト経路算出部４８２がインタラプト動作中の工具の経路を次回以降に算出する際に使用する工具のリフトアップ量を、現在の値よりも小さい値に変更する。動作条件変更部５１は、工具のリフトアップ量の変更量を、電流値（ｊ）に基づいて決定してもよい。動作条件変更部５１は、例えば、電流値（ｊ）が急激に大きくなってから小さくなるまでの所要時間が長いほど変更量が大きくなるようにする。動作条件変更部５１は、ステップＳ３４を実行した後はステップＳ３１に戻って動作を継続する。
【０１１７】
なお、本実施の形態において、動作条件変更部５１は、インタラプト動作において工具とワークの干渉が発生したことを検出すると、干渉が発生しないように、工具のリフトアップ量を変更することとしたが、これに限定されない。動作条件変更部５１は、工具とワークの干渉発生を検出した場合に工具のリフトアップ角度を変更するようにしてもよい。また、工具のリフトアップ量および工具のリフトアップ角度の双方を変更するようにしてもよい。すなわち、動作条件変更部５１は、工具とワークの干渉が発生した場合、工具のリフトアップ量および工具のリフトアップ角度の少なくとも一方を変更する。
【０１１８】
また、本実施の形態において、動作条件変更部５１は、インタラプト動作において工具とワークの干渉が発生したことを検出すると、工具のリフトアップ量を一律に変更する、すなわち、全てのインタラプト動作における工具のリフトアップ量を変更することにしたがこれに限定されない。動作条件変更部５１は、繰り返し実行するインタラプト動作のうち、どのインタラプト動作において工具とワークの干渉が発生するかについても学習し、干渉が発生するインタラプト動作においてのみ、工具のリフトアップ量を変更するようにしてもよい。この場合、動作条件変更部５１の状態観測部５１１は、上記のインタラプト中情報（ｉｎｔ）、リフトアップ量（ｒ）および電流値（ｊ）に加えて、例えば、数値制御装置１ａが実行中の命令のシーケンス番号を観測する。学習部５１２は、インタラプト中情報（ｉｎｔ）、リフトアップ量（ｒ）、電流値（ｊ）および実行中の命令のシーケンス番号を用いて、リフトアップ量の変更方法を学習する。
【０１１９】
工具とワークの干渉が発生した場合に動作条件変更部５１が全てのインタラプト動作における工具のリフトアップ量を変更する場合、１つのワークの加工が完了するまでの所要時間であるサイクルタイムの短縮化につながる。
【０１２０】
実施の形態２にかかる数値制御装置１ａが備える制御演算部４０ａは、実施の形態１にかかる数値制御装置１が備える制御演算部４０を実現するハードウェア（図１４参照）と同様のハードウェアで実現することができる。
【０１２１】
以上のように、本実施の形態にかかる数値制御装置１ａは、インタラプト動作を実施したときに工具とワークの干渉が発生する条件を学習し、学習結果を使用してインタラプト動作の実施条件を変更する。これにより、工具とワークが干渉する状態を自動的に解消させることが可能となり、加工精度の劣化、工具の破損などの問題が発生するのを抑制できる。
【０１２２】
本実施の形態では、動作条件変更部５１が数値制御装置１ａの内部に存在する場合について説明したが、動作条件変更部５１は数値制御装置１ａの外部に存在する構成であってもよい。例えば、外部の機械学習装置が、実施の形態１にかかる数値制御装置１から上記のインタラプト中情報（ｉｎｔ）、リフトアップ量（ｒ）および電流値（ｊ）といった学習用データを取得し、インタラプト動作の実施条件の変更方法を学習することで動作条件変更部５１を実現してもよい。
【０１２３】
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
【符号の説明】
【０１２４】
１，１ａ  数値制御装置、１０  駆動部、１１  サーボモータ、１２，１５  検出器、１３Ｘ  Ｘ軸サーボ制御部、１３Ｚ  Ｚ軸サーボ制御部、１４  主軸モータ、１６  主軸サーボ制御部、２０  入力操作部、３０  表示部、４０，４０ａ  制御演算部、４１  入力制御部、４２  データ設定部、４３  記憶部、４４  画面処理部、４５  解析処理部、４６  機械制御信号処理部、４７  ＰＬＣ、４８  補間処理部、４９  加減速処理部、５０  軸データ出力部、５１  動作条件変更部、４３１  パラメータ、４３２  加工プログラム、４３３  画面表示データ、４３４  共有エリア、４５１  インタラプト加工指令解析部、４５２  一般指令解析部、４８１  インタラプトタイミング判定部、４８２  インタラプト経路算出部、４８３  加工経路算出部、４８４  移動量算出部、５１１  状態観測部、５１２  学習部、５１３  報酬計算部、５１４  関数更新部。
【要約】
加工対象物を加工するための工具を駆動する複数の駆動軸を制御する数値制御装置（１）であって、加工プログラム（４３２）を解析する解析処理部（４５）と、解析処理部（４５）による加工プログラム（４３２）の解析結果に基づいて加工対象物を切削加工する際の工具の移動経路である加工経路を算出する加工経路算出部（４８３）と、工具が加工経路に沿って移動し、加工対象物を加工している途中に繰り返し実行する動作であり、工具を加工経路から一時的にリフトアップさせるインタラプト動作における工具の移動経路を解析結果に基づいて算出するインタラプト経路算出部（４８２）と、を備える。【図１】
0006661062.tif 000003
【図２】
0006661062.tif 000004
【図３】
0006661062.tif 000005
【図４】
0006661062.tif 000006
【図５】
0006661062.tif 000007
【図６】
0006661062.tif 000008
【図７】
0006661062.tif 000009
【図８】
0006661062.tif 000010
【図９】
0006661062.tif 000011
【図１０】
0006661062.tif 000012
【図１１】
0006661062.tif 000013
【図１２】
0006661062.tif 000014
【図１３】
0006661062.tif 000015
【図１４】
0006661062.tif 000016
【図１５】
0006661062.tif 000017
【図１６】
0006661062.tif 000018
【図１７】
0006661062.tif 000019
【図１８】
0006661062.tif 000020
【図１９】
0006661062.tif 000021