(57)【特許請求の範囲】
【請求項１】
工具を用いて工作機械が被加工物への加工を実行する際に前記工具を駆動する駆動部への位置指令を出力するとともに、前記被加工物の加工以外の処理を実行する補助機能の指令があると、前記補助機能に対応する処理を制御するとともに、前記補助機能が実行された場合に発生する前記工作機械の第１の振動を抑制する位置指令である抑制位置指令を前記駆動部に出力する制御部を備え、
前記抑制位置指令は、前記第１の振動と逆位相で前記第１の振動の振幅以下の大きさの振幅を有した第２の振動を前記駆動部に発生させる位置指令である、
ことを特徴とする数値制御装置。
【請求項２】
前記抑制位置指令は、前記補助機能の種類毎に予め登録されており、
前記制御部は、前記補助機能に対応する抑制位置指令を前記駆動部に出力する、
ことを特徴とする請求項１に記載の数値制御装置。
【請求項３】
前記補助機能の種類を識別する第１の識別情報、前記位置指令、および前記位置指令に対応するフィードバック位置を状態変数として観測する状態観測部と、
前記状態変数に基づいて作成されるデータセットに従って、前記抑制位置指令を出力するタイミングと、前記抑制位置指令の前記振幅とを学習する学習部と、
を有した機械学習装置をさらに備え、
前記制御部は、前記学習部が学習した前記抑制位置指令を出力するタイミングで前記抑制位置指令を出力する、
ことを特徴とする請求項１に記載の数値制御装置。
【請求項４】
前記状態変数には、前記工具の種類を識別する第２の識別情報、および前記駆動部の温度が含まれている、
ことを特徴とする請求項３に記載の数値制御装置。
【請求項５】
前記学習部は、
前記位置指令と前記フィードバック位置との差分に基づいて報酬を計算する報酬計算部と、
前記報酬に基づいて、前記タイミングおよび前記振幅を決定するための関数を更新する関数更新部と、
を具備する、
ことを特徴とする請求項３または４に記載の数値制御装置。
【請求項６】
前記関数は、行動価値関数である、
ことを特徴とする請求項５に記載の数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、工作機械の動作を制御する数値制御装置に関する。
【背景技術】
【０００２】
工作機械の動作を制御する数値制御装置は、加工プログラムの指令に従って、工作機械が備えるサーボモータなどを動作させることで、工作機械に被加工物を加工させる。【０００３】
数値制御装置は、工作機械を動作させる際に工作機械を振動させてしまう場合がある。工作機械が振動する場合において、工具を移動させるサーボモータが振動すると、工具の位置決め精度が悪化するので加工精度が下がる。このため、工作機械の振動を減らすことが望まれている。【０００４】
特許文献１に記載の補正装置は、工作物に対する工具の目標量からの変位を決定する外乱（振動）を検出し、外乱から形成した数学的なプロセスモデルをベースにして外乱の将来的特性を評価し、将来的特性に応じて変位を補正している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２０００−５０５５７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記特許文献１の技術では、周期的に発生する振動を抑制することはできるが、過去の信号から将来の信号を予測する自己回帰モデルを用いているので、指令により発生する非周期的な振動を抑制することはできない。【０００７】
本開示は、上記に鑑みてなされたものであって、指令により発生する非周期的な振動を抑制することができる数値制御装置を得ることを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本開示の数値制御装置は、工具を用いて工作機械が被加工物への加工を実行する際に工具を駆動する駆動部への位置指令を出力するとともに、被加工物の加工以外の処理を実行する補助機能の指令があると、補助機能に対応する処理を制御するとともに、補助機能が実行された場合に発生する工作機械の第１の振動を抑制する位置指令である抑制位置指令を駆動部に出力する制御部を備えている。抑制位置指令は、第１の振動と逆位相で第１の振動の振幅以下の大きさの振幅を有した第２の振動を駆動部に発生させる位置指令である。
【発明の効果】
【０００９】
本開示にかかる数値制御装置は、指令により発生する非周期的な振動を抑制することができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】実施の形態にかかる数値制御装置の構成を示す図
【図２】実施の形態にかかる数値制御装置の動作手順を示すフローチャート
【図３】実施の形態にかかる数値制御装置によって抑制される振動を説明するための図
【図４】実施の形態にかかる数値制御装置が備える機械学習装置を実現するハードウェア構成例を示す図
【発明を実施するための形態】
【００１１】
以下に、本開示の実施の形態にかかる数値制御装置を図面に基づいて詳細に説明する。
【００１２】
実施の形態．
図１は、実施の形態にかかる数値制御装置の構成を示す図である。数値制御（ＮＣ：Numerical  Control）装置１は、加工プログラムに従って、工作機械を制御するコンピュータである。数値制御装置１が工作機械の制御に用いる加工プログラムは、Ｇコードと呼ばれる準備機能、Ｆコードと呼ばれる送り機能、Ｍコードと呼ばれる補助機能などによって記述されている。
【００１３】
補助機能は、直接的に加工に関与しない動作を工作機械に実行させる機能である。補助機能の例は、加工での摩擦によって発生した熱を抑えるための冷却水の射出を有効または無効にさせる機能、工具交換の動作、工作機械が備えるドアの自動開閉を実行させる機能、テーブルなどを回転させる回転軸に対しクランプまたはアンクランプを実行させる機能などである。クランプは、機械的に回転軸のロックを行う処理であり、アンクランプは、機械的に回転軸のロックを解除する処理である。
【００１４】
回転軸によって回転させられるテーブルは、被加工物を載置した状態で被加工物を固定する。このテーブルは、回転軸の回転によって３６０度回転可能となっている。被加工物は、テーブルに載せられた状態で特定の位置に回転させられる。この状態で加工軸がクランプされることで、被加工物が固定され、被加工物への工具による加工が開始される。数値制御装置１は、数値制御装置１内の加工プログラムを用いて補助機能を実行するので、工作機械メーカ独自の様々な動作を実現できる。加工プログラムでは、補助機能は、補助機能の番号である補助機能番号Ｊ３で示される。
【００１５】
工作機械は、工具を用いて被加工物への加工を実行する装置である。工作機械は、工具を駆動する駆動部を備えている。なお、工作機械の構成要素には、工具が含められてもよいし、含められなくてもよい。
【００１６】
数値制御装置１は、工作機械が被加工物への加工を実行する際には、駆動部を駆動するための位置指令Ｊ１を出力する。また、数値制御装置１は、被加工物の加工以外の処理を実行する補助機能の指令があると、補助機能に対応する処理を制御する。また、数値制御装置１は、補助機能が実行された場合に発生する工作機械の振動を抑制する位置指令である抑制位置指令５１を駆動部に出力する。
【００１７】
数値制御装置１は、ドライブユニット３１およびリモートＩＯ（Input／Output）３３に接続されている。ドライブユニット３１は、サーボモータ３２に接続されている。サーボモータ３２は、工具を駆動する駆動部の一例である。サーボモータ３２は、被加工物を加工する工具が取り付けられる刃物台などに接続されており、刃物台などを動作させることで工具を動作させる。
【００１８】
数値制御装置１は、解析部２１と、制御部２２と、ＰＬＣ（Programmable  Logic  Controller：プログラマブルロジックコントローラ）２３と、機械学習装置１０と、加工プログラム記憶部４０とを備えている。
【００１９】
加工プログラム記憶部４０は、工作機械が制御される際に用いられる加工プログラムを記憶する。解析部２１は、シーケンスプログラムである加工プログラムを解析する。解析部２１は、解析結果を制御部２２に送る。
【００２０】
制御部２２は、解析部２１から送られてくる解析結果に基づいて、位置指令Ｊ１、選択工具番号Ｊ２、および補助機能番号Ｊ３を生成して出力する。位置指令Ｊ１は、工具による加工位置を指定した指令である。位置指令Ｊ１は、例えば、Ｘ座標、Ｙ座標、およびＺ座標によって示される。選択工具番号Ｊ２は、被加工物の加工用に選択された工具を識別する番号である。
【００２１】
補助機能番号Ｊ３は、補助機能の種類を識別する番号である。補助機能の中には工具などに振動を発生させてしまう機能があるので、本実施の形態では、振動を発生させる補助機能に対して、数値制御装置１が振動を抑制する。振動抑制を行う補助機能の補助機能番号Ｊ３は、予め数値制御装置１に設定されているものとする。なお、補助機能番号Ｊ３の設定は、例えばパラメータで設定されるが、設定方法はパラメータによる設定に限らず何れの方法で設定されてもよい。補助機能番号Ｊ３が、補助機能の種類を識別する第１の識別情報であり、選択工具番号Ｊ２が、工具の種類を識別する第２の識別情報である。
【００２２】
また、制御部２２は、機械学習装置１０が抑制位置指令５１を学習するまでは、補助機能番号Ｊ３に対応する抑制位置指令５１を出力する。ここでの抑制位置指令５１は、補助機能の種類毎に予め数値制御装置１に登録されている、抑制位置指令５１の初期値である。すなわち、制御部２２は、最初に補助機能を実行する前は、補助機能番号Ｊ３に対応する抑制位置指令５１の初期値を出力する。このように、制御部２２は、機械学習装置１０が抑制位置指令５１を学習するまでは、予め登録されている抑制位置指令５１を出力する。
【００２３】
抑制位置指令５１は、実行する補助機能が原因で発生する振動を抑制するための位置指令である。抑制位置指令５１は、例えば、Ｘ座標、Ｙ座標、およびＺ座標によって示される、加工位置を指定した指令である。
【００２４】
抑制位置指令５１は、工作機械の振動（第１の振動）と逆位相で同じ大きさの振幅を有した振動（第２の振動）を工作機械の駆動部に発生させる位置指令である。例えば、補助機能がクランプである場合、クランプが回転軸を固定する際にクランプが振動することによって、工具が振動する。この場合、抑制位置指令５１は、工具の振動を抑制することができる位置指令である。
【００２５】
制御部２２は、機械学習装置１０が抑制位置指令５１を生成するための情報（後述する抑制情報）を学習した後は、機械学習装置１０から送られてくる抑制情報に対応する抑制位置指令５１を出力する。制御部２２は、抑制位置指令５１を学習する前も後も、振動を抑制できるタイミングで抑制位置指令５１を出力する。
【００２６】
制御部２２は、位置指令Ｊ１および抑制位置指令５１をドライブユニット３１に出力し、補助機能番号Ｊ３をＰＬＣ２３に出力する。また、制御部２２は、位置指令Ｊ１、選択工具番号Ｊ２、および補助機能番号Ｊ３を機械学習装置１０に出力する。
【００２７】
ＰＬＣ２３は、制御部２２から送られてくる補助機能番号Ｊ３に対応する補助機能を実行させる指示（補助機能指令）をリモートＩＯ３３に送る。ＰＬＣ２３は、機械動作が記述されたラダープログラムを格納している。ＰＬＣ２３は、Ｍコードなどの補助機能指令を示す補助機能番号Ｊ３を受け付けると、ラダープログラムに従って補助機能指令をリモートＩＯ３３に送る。
【００２８】
リモートＩＯ３３は、工作機械内で補助機能を実行する装置（以下、補助処理実行装置という）との間で入出力信号を送受信する機器である。リモートＩＯ３３は、数値制御装置１から、補助機能を示す補助機能指令を受け付ける。リモートＩＯ３３は、補助機能指令を補助処理実行装置に送信し、補助処理実行装置から補助処理実行装置の状態を示す情報などを受信する。補助処理実行装置の例は、冷却水を射出する装置、工具交換を実行する装置、工作機械が備えるドアを開閉させる装置、回転軸をクランプおよびアンクランプする装置である。上記のように、補助機能は、補助機能指令によって実行される機能であり、補助機能による制御によって被加工物または工作機械に振動（衝撃）が発生する。補助機能による制御で発生した振動（衝撃）は、非周期的であり従来技術では抑制できない。
【００２９】
ドライブユニット３１は、サーボモータ３２に接続されており、数値制御装置１から送られてくる指令に従ってサーボモータ３２を制御する。ドライブユニット３１は、数値制御装置１から工具の位置が指定された位置指令Ｊ１、振動を抑制するための工具の位置が指定された抑制位置指令５１を受信する。ドライブユニット３１は、位置指令Ｊ１を受け付けると、位置指令Ｊ１に基づいて工具の位置を制御する。ドライブユニット３１は、抑制位置指令５１を受け付けると、抑制位置指令５１に基づいて工具の位置を制御する。
【００３０】
ドライブユニット３１は、数値制御装置１からの位置指令Ｊ１および抑制位置指令５１に基づいて、サーボモータ３２に送る電流値を算出する。ドライブユニット３１は、位置指令Ｊ１に対応する電流、および抑制位置指令５１に対応する電流をサーボモータ３２に送ることによってサーボモータ３２を駆動する。
【００３１】
サーボモータ３２は、刃物台に接続されており、ドライブユニット３１からの電流に従って刃物台に取り付けられた工具を回転させる。
【００３２】
また、ドライブユニット３１は、サーボモータ３２から工具の実際の位置を示す位置情報を受信する。また、ドライブユニット３１は、サーボモータ３２からサーボモータ３２の温度を示すサーボモータ温度Ｊ５を受信する。
【００３３】
ドライブユニット３１は、工具の実際の位置を示す位置情報を、ＦＢ（Feed  Back：フィードバック）位置Ｊ４として機械学習装置１０に送信する。また、ドライブユニット３１は、サーボモータ３２の温度を、サーボモータ温度Ｊ５として機械学習装置１０に送信する。ＦＢ位置Ｊ４は、工具の位置を検出する検出器によって検出されてもよいし、サーボモータ３２への位置指令Ｊ１に基づいて算出されてもよい。
【００３４】
機械学習装置１０は、状態観測部１１と、学習部１２とを備えている。状態観測部１１は、制御部２２から、位置指令Ｊ１、選択工具番号Ｊ２、および補助機能番号Ｊ３を取得する。また、状態観測部１１は、ドライブユニット３１からＦＢ位置Ｊ４およびサーボモータ温度Ｊ５を取得する。
【００３５】
数値制御装置１では、機械学習装置１０が、補助機能に対応する抑制位置指令５１の情報（抑制情報）を学習する際には、状態観測部１１が、位置指令Ｊ１、選択工具番号Ｊ２、補助機能番号Ｊ３、ＦＢ位置Ｊ４、およびサーボモータ温度Ｊ５を状態変数として取得する。抑制情報は、補助機能に起因する振動を抑制するための抑制位置指令５１を生成するための情報である。抑制情報には、抑制位置指令５１の振幅および出力タイミングが含まれている。学習部１２は、状態観測部１１から得た状態変数に基づいて、補助機能に対応する抑制情報を学習する。
【００３６】
刃物台に取り付けられている工具の種類によって、振動の具合が異なる場合があるので、本実施の形態では、機械学習装置１０が、選択工具番号Ｊ２に対応する工具の種類を、補助機能に対応する抑制情報の学習に用いる。また、サーボモータ３２の温度によって、振動の具合が異なる場合があるので、本実施の形態では、機械学習装置１０が、サーボモータ温度Ｊ５を、補助機能に対応する抑制情報の学習に用いる。なお、数値制御装置１は、選択工具番号Ｊ２、およびサーボモータ温度Ｊ５を抑制情報の学習に用いなくてもよい。
【００３７】
図２は、実施の形態にかかる数値制御装置の動作手順を示すフローチャートである。数値制御装置１は、加工プログラムの実行を開始すると、解析部２１が加工プログラムを解析する（ステップＳ１０）。このとき、解析部２１は、加工プログラムに含まれる指令のうち、次に実行する指令が、振動抑制対象の補助機能指令であるか否かを判定する（ステップＳ２０）。
【００３８】
次に実行する指令が、振動抑制対象の補助機能指令である場合（ステップＳ２０、Ｙｅｓ）、制御部２２は、振動抑制対象の補助機能番号Ｊ３をＰＬＣ２３に送る。これにより、ＰＬＣ２３が、リモートＩＯ３３を介して、補助機能番号Ｊ３に対応する補助機能指令を補助処理実行装置に送信する。補助処理実行装置は、補助機能指令に対応する補助機能を実行する。このように、数値制御装置１は、補助機能の実行を制御する（ステップＳ３０）。このとき、制御部２２は、補助機能番号Ｊ３に対応する抑制位置指令５１を出力する。補助処理実行装置が実行した補助機能が初めて用いられる場合、制御部２２は、補助機能に対応する抑制位置指令５１として予め登録されている抑制位置指令５１をドライブユニット３１に出力する。
【００３９】
これにより、数値制御装置１は、補助機能に対応する抑制位置指令５１を用いて、補助機能に起因する振動を抑制する。工作機械が補助機能を実行すると、工具、刃物台、サーボモータ３２などが振動する。本実施の形態では、数値制御装置１が抑制位置指令５１を用いて工具、刃物台、サーボモータ３２などの振動を抑制する（ステップＳ４０）。このように、数値制御装置１は、補助機能に起因する振動を抑制する。
【００４０】
また、補助機能指令が、振動抑制対象の指令である場合、制御部２２は、位置指令Ｊ１、選択工具番号Ｊ２、および補助機能番号Ｊ３を、状態観測部１１に通知する。これにより、状態観測部１１は、位置指令Ｊ１、選択工具番号Ｊ２、および補助機能番号Ｊ３を取得する。また、状態観測部１１は、ドライブユニット３１から、サーボモータ３２のＦＢ位置Ｊ４およびサーボモータ温度Ｊ５を取得する。状態観測部１１は、位置指令Ｊ１、選択工具番号Ｊ２、補助機能番号Ｊ３、ＦＢ位置Ｊ４、およびサーボモータ温度Ｊ５を、状態変数として学習部１２に送る。
【００４１】
学習部１２は、状態観測部１１から送られてきた状態変数に基づいて、補助機能に対応する抑制位置指令５１の情報である抑制情報を学習し（ステップＳ５０）、学習した抑制情報を制御部２２に送る。具体的には、学習部１２は、補助機能に対応する抑制位置指令５１の振幅およびタイミングを学習し、抑制位置指令５１の振幅およびタイミングを示す抑制情報を制御部２２に送る。
【００４２】
この後、数値制御装置１は、ステップＳ２０の処理に戻る。すなわち、解析部２１は、次に実行する指令が、振動抑制対象の補助機能指令であるか否かを判定する（ステップＳ２０）。
【００４３】
次に実行する指令が、振動抑制対象の補助機能指令でない場合（ステップＳ２０、Ｎｏ）、数値制御装置１は、加工プログラムに含まれる指令に基づいて、被加工物の加工処理を制御する（ステップＳ６０）。加工プログラムに含まれる指令のうち振動抑制対象以外の指令の例は、加工に関与する指令、すなわち工具を用いて被加工物への加工を実行するための指令である。以下の説明では、加工プログラムに含まれる指令のうち、振動抑制対象以外の指令が加工指令である場合について説明する。
【００４４】
数値制御装置１が被加工物の加工処理を制御する場合、制御部２２が、加工プログラムに含まれる加工指令に対応する位置指令Ｊ１を生成し、ドライブユニット３１に送る。これにより、ドライブユニット３１が、位置指令Ｊ１に従ってサーボモータ３２を制御する。この後、数値制御装置１は、ステップＳ２０の処理に戻る。すなわち、解析部２１は、次に実行する指令が、振動抑制対象の補助機能指令であるか否かを判定する（ステップＳ２０）。
【００４５】
数値制御装置１は、補助機能を実行させた後、工作機械の振動の有無にかかわらず、被加工物の加工処理を直ぐに開始する。数値制御装置１が、抑制位置指令を実行しない場合、工作機械は、補助機能の実行によって振動が発生している状況で加工処理を実行することとなる。一方、本実施の形態では、数値制御装置１が、抑制位置指令５１を出力しつつ、加工指令に対応する位置指令Ｊ１を出力するので、工作機械は、補助機能の実行によって発生した振動を抑制しながら加工処理を実行することとなる。なお、数値制御装置１は、振動による工具の位置ずれが特定値よりも小さくなった時点で被加工物の加工処理を開始してもよい。数値制御装置１は、補助機能の実行によって振動が発生する場合であっても、振動を抑制することができるので、振動が収まるまでの時間を短くすることができる。
【００４６】
ステップＳ２０において、加工プログラムに含まれる指令が、振動抑制対象の補助機能指令となるまで、数値制御装置１は、ステップＳ６０およびステップＳ２０の処理を繰り返す。
【００４７】
ステップＳ２０において、加工プログラムに含まれる指令が、振動抑制対象の補助機能指令である場合（ステップＳ２０、Ｙｅｓ）、数値制御装置１は、補助機能の実行を制御する（ステップＳ３０）。
【００４８】
また、数値制御装置１は、抑制位置指令５１を用いて工具、刃物台、サーボモータ３２などの振動を抑制する（ステップＳ４０）。そして、学習部１２が、状態観測部１１から送られてきた状態変数に基づいて、補助機能に対応する抑制情報を学習し（ステップＳ５０）、数値制御装置１は、ステップＳ２０の処理に戻る。
【００４９】
数値制御装置１は、加工プログラム内の全ての指令を実行するまで、ステップＳ２０からＳ５０の処理を繰り返す。
【００５０】
ここで、抑制情報を用いた抑制位置指令５１の作成処理について説明する。図３は、実施の形態にかかる数値制御装置によって抑制される振動を説明するための図である。図３の上段に示すグラフの波形Ｆ１は、ＦＢ位置Ｊ４の変化を示し、図３の下段に示すグラフは、抑制位置指令５１を示している。図３の上段に示すグラフの横軸は時間であり、縦軸はＦＢ位置の座標である。図３の下段に示すグラフの横軸は時間であり、縦軸は抑制位置指令５１（指令される位置の座標）である。ＦＢ位置Ｊ４は、例えば、Ｘ座標、Ｙ座標、およびＺ座標によって示される。図３の例では、Ｘ方向のＦＢ位置Ｊ４とＸ方向の抑制位置指令５１を示している。
【００５１】
波形Ｆ１は、加工指令が実行される前に補助機能が実行された場合の波形である。すなわち、波形Ｆ１は、位置指令Ｊ１に対する工具の移動が開始される前の波形である。波形Ｆ１に示すように、補助機能が実行されることによってＦＢ位置Ｊ４が変化する。すなわち、補助機能が実行されることによって振動が発生している。この振動を抑制するため、数値制御装置１は、補助機能が実行されることによって発生する振動を抑制できるタイミングＴ１で、振動を抑制するための抑制位置指令５１を出力する。
【００５２】
抑制位置指令５１は、ＦＢ位置Ｊ４を抑制するための指令である。すなわち、抑制位置指令５１は、ＦＢ位置Ｊ４（工具の位置）を０にするための指令である。具体的には、抑制位置指令５１は、工具の位置であるＦＢ位置Ｊ４とは逆方向の位置に移動させるための指令である。例えば、ＦＢ位置Ｊ４がプラスの座標である場合、抑制位置指令５１は、工具をマイナスの座標に移動させる指令である。
【００５３】
また、抑制位置指令５１は、ＦＢ位置Ｊ４を抑制することができる振幅Ａ１を有している。すなわち、抑制位置指令５１に対応する工具の位置は、ＦＢ位置Ｊ４とは絶対値が同じであり符号が逆である。ＦＢ位置Ｊ４が図３に示す波形Ｆ１の場合、抑制位置指令５１は、第１波を抑制することができる波形Ｘ１に対応する位置指令となる。波形Ｘ１は、波形Ｆ１の第１波とは逆位相である。波形Ｘ１の振幅は、波形Ｆ１の第１波と同じ大きさであることが望ましいが、波形Ｆ１の第１波の大きさと略同じであればよい。波形Ｘ１の振幅は、波形Ｆ１の第１波の振幅以下の大きさであれば、振動を抑制することができる。
【００５４】
また、抑制位置指令５１は、第２波以降を抑制することができる位置指令を含んでいてもよい。本実施の形態の抑制位置指令５１は、振動による工具の位置ずれが特定値よりも小さくなるように、第Ｎ（Ｎは自然数）波までの位置指令を含んでいるものとする。数値制御装置１は、振動による工具の位置ずれが特定値よりも小さくなった時点で、位置指令Ｊ１を用いて被加工物の加工処理を開始する。これにより、ＦＢ位置Ｊ４も位置指令Ｊ１に対応する位置となる。
【００５５】
このように、抑制位置指令５１は、抑制情報に含まれる、指令を発生させるタイミングＴ１と指令の振幅Ａ１と、に基づいて生成される。そして、補助機能による振動は、生成された抑制位置指令５１によって抑制される。ここで抑制位置指令５１を発生させるタイミングＴ１の起点の例は、解析部２１から制御部２２に対象補助機能が通知された時点である。なお、抑制位置指令５１を発生させるタイミングＴ１の起点は、振動を抑制できるタイミングであれば、何れのタイミングであってもよい。
【００５６】
ここで、機械学習装置１０による学習処理について説明する。状態観測部１１は、位置指令Ｊ１、選択工具番号Ｊ２、補助機能番号Ｊ３、ＦＢ位置Ｊ４、サーボモータ温度Ｊ５を状態変数として観測する。学習部１２は、状態変数に基づいて作成されるデータセットに従って、抑制情報である、抑制位置指令５１の振幅およびタイミングを学習する。
【００５７】
数値制御装置１は、学習部１２に用いる学習アルゴリズムとして、どのようなものを用いてもよい。ここでは、学習アルゴリズムの一例として、強化学習（Reinforcement  Learning）が適用された場合について説明する。数値制御装置１は、強化学習を実行する際に、ある環境内におけるエージェント（行動主体）が、現在の状態（環境のパラメータ）を観測し、取るべき行動を決定する。
【００５８】
強化学習では、エージェントの行動により環境が動的に変化し、エージェントには環境の変化に応じて報酬が与えられる。エージェントはこれを繰り返し、一連の行動を通じて報酬が最も多く得られる行動方針を学習する。換言すると、エージェントは、行動を選択することで環境から報酬を得て、一連の行動を通じて報酬が最も多く得られるような方策を学習する。強化学習の代表的な手法として、Ｑ学習（Q−learning）およびＴＤ学習（TD−learning）が知られている。例えば、Ｑ学習の場合、行動価値関数Ｑ（ｓ，ａ）の一般的な更新式（学習済モデル）は、以下の式（１）で表される。
【００５９】
【数１】
0006775720.tif 000002
【００６０】
式（１）において、ｓtは時刻ｔにおける環境を表し、ａtは時刻ｔにおける行動を表す。行動ａtにより、状態（環境）はｓt+1に変わる。ｒt+1はその状態の変化によってもらえる報酬を表し、γは割引率を表し、αは学習係数を表す。なお、γは０＜γ≦１、αは０＜α≦１の範囲とする。Ｑ学習が適用される場合、抑制情報（抑制位置指令５１の振幅およびタイミング）が行動ａtとなり、位置指令Ｊ１、選択工具番号Ｊ２、補助機能番号Ｊ３、ＦＢ位置Ｊ４、およびサーボモータ温度Ｊ５が状態ｓtとなり、学習部１２は、時刻ｔの状態ｓtにおける最良の行動ａtを学習する。
【００６１】
式（１）で表される更新式は、時刻ｔ＋１における最もＱ値の高い行動ａの行動価値Ｑが、時刻ｔにおいて実行された行動ａの行動価値Ｑよりも大きければ、行動価値Ｑを大きくし、逆の場合は、行動価値Ｑを小さくする。換言すれば、学習部１２は、時刻ｔにおける行動ａの行動価値Ｑを、時刻ｔ＋１における最良の行動価値Ｑに近づけるように、行動価値関数Ｑ（ｓ，ａ）を更新する。それにより、ある環境における最良の行動価値Ｑが、それ以前の環境における行動価値Ｑに順次伝播していくようになる。
【００６２】
学習部１２は、報酬計算部１５と、関数更新部１６とを備えている。報酬計算部１５は、状態変数に基づいて報酬ｒを計算する。報酬計算部１５は、位置指令Ｊ１とＦＢ位置Ｊ４との差分、すなわち、振動による誤差に基づいて、報酬ｒを計算する。例えば、報酬計算部１５は、位置指令Ｊ１とＦＢ位置Ｊ４との差分が小さい場合には報酬ｒを増大させる（例えば「１」の報酬を与える）。一方、報酬計算部１５は、位置指令Ｊ１とＦＢ位置Ｊ４との差分が大きい場合には、報酬ｒを低減する（例えば「−１」の報酬を与える）。
【００６３】
学習部１２は、位置指令Ｊ１とＦＢ位置Ｊ４との差分を、補助機能指令の後から次の指令までの時間における差分の合計とする。なお、学習部１２は、パラメータ等で差分の取得時間を定めておき、補助機能指令の後から、定めておいた取得時間までの合計を差分としてもよい。
【００６４】
関数更新部１６は、報酬計算部１５によって計算される報酬ｒに従って、抑制情報を決定するための関数を更新する。例えばＱ学習の場合、関数更新部１６は、式（１）で表される行動価値関数Ｑ（ｓt，ａt）を、抑制情報を算出するための関数として用いる。学習部１２は、以上のような学習を繰り返し実行する。
【００６５】
なお、本実施の形態では、学習部１２が用いる学習アルゴリズムに強化学習を適用した場合について説明したが、学習アルゴリズムは、強化学習に限られるものではない。学習アルゴリズムについては、強化学習以外にも、教師あり学習、教師なし学習、または半教師あり学習等を適用することも可能である。
【００６６】
また、学習部１２は、上述した学習アルゴリズムとしては、特徴量そのものの抽出を学習する、深層学習（Deep  Learning）を用いることもでき、他の公知の方法、例えばニューラルネットワーク、遺伝的プログラミング、機能論理プログラミング、サポートベクターマシンなどに従って機械学習を実行してもよい。
【００６７】
なお、機械学習装置１０は、数値制御装置１の抑制情報を学習するために使用されるが、機械学習装置１０は、例えば、ネットワークを介して数値制御装置１に接続された、この数値制御装置１とは別個の装置であってもよい。また、機械学習装置１０は、数値制御装置１に内蔵されていてもよい。さらに、機械学習装置１０は、クラウドサーバ上に存在していてもよい。
【００６８】
また、学習部１２は、複数の数値制御装置１に対して作成されるデータセットに従って、抑制情報を学習するようにしてもよい。なお、学習部１２は、同一の現場で使用される複数の数値制御装置１および複数のドライブユニット３１からデータセットを取得してもよいし、或いは、異なる現場で独立して稼働する複数の工作機械および複数のドライブユニット３１から収集されるデータセットを利用して抑制情報を学習してもよい。さらに、学習部１２は、データセットを収集する数値制御装置１を途中で対象に追加し、或いは、逆に対象から除去することも可能である。さらに、学習部１２は、ある数値制御装置１に関して抑制情報を学習した機械学習装置１０を、これとは別の数値制御装置１に取り付け、当該別の数値制御装置１に対して抑制情報を再学習して更新するようにしてもよい。
【００６９】
制御部２２は、解析部２１から補助機能指令を受け付けると、機械学習装置１０が学習済みの補助機能であるか否かを判定する。制御部２２は、補助機能が機械学習装置１０で学習済みであれば、補助機能に対応する抑制情報に基づいて、抑制位置指令５１を生成する。数値制御装置１は、補助機能を実行する際に、生成した抑制位置指令５１を用いて、工作機械の振動を抑制する。
【００７０】
なお、数値制御装置１は、抑制情報を学習することなく事前に抑制情報を設定可能であれば、抑制情報をパラメータ等に設定しておき、パラメータに基づいて抑制位置指令５１を作成し、振動を抑制してもよい。
【００７１】
ここで、機械学習装置１０のハードウェア構成について説明する。図４は、実施の形態にかかる数値制御装置が備える機械学習装置を実現するハードウェア構成例を示す図である。
【００７２】
機械学習装置１０は、入力装置３００、プロセッサ１００、メモリ２００、および出力装置４００により実現することができる。プロセッサ１００の例は、ＣＰＵ（Central  Processing  Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、ＤＳＰ（Digital  Signal  Processor）ともいう）またはシステムＬＳＩ（Large  Scale  Integration）である。メモリ２００の例は、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）である。
【００７３】
機械学習装置１０は、プロセッサ１００が、メモリ２００で記憶されている機械学習装置１０の動作を実行するための、コンピュータで実行可能な、学習プログラムを読み出して実行することにより実現される。機械学習装置１０の動作を実行するためのプログラムである学習プログラムは、機械学習装置１０の手順または方法をコンピュータに実行させるものであるともいえる。
【００７４】
機械学習装置１０で実行される学習プログラムは、状態観測部１１と、学習部１２とを含むモジュール構成となっており、これらが主記憶装置上にロードされ、これらが主記憶装置上に生成される。
【００７５】
入力装置３００は、位置指令Ｊ１、選択工具番号Ｊ２、補助機能番号Ｊ３、ＦＢ位置Ｊ４、およびサーボモータ温度Ｊ５を受け付けてプロセッサ１００に送る。メモリ２００は、プロセッサ１００が各種処理を実行する際の一時メモリに使用される。メモリ２００は、状態変数、報酬、行動価値関数などを記憶する。出力装置４００は、補助機能に対応する抑制情報を制御部２２に出力する。
【００７６】
学習プログラムは、インストール可能な形式または実行可能な形式のファイルで、コンピュータが読み取り可能な記憶媒体に記憶されてコンピュータプログラムプロダクトとして提供されてもよい。また、学習プログラムは、インターネットなどのネットワーク経由で機械学習装置１０に提供されてもよい。なお、機械学習装置１０の機能について、一部を専用回路などの専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。また、数値制御装置１についても、機械学習装置１０と同様のハードウェア構成によって実現できる。
【００７７】
ところで、補助機能が原因で工作機械に振動を発生させてしまう場合、この振動は、サーボモータに大きな影響を与える。サーボモータが振動することによって、加工位置の位置決め精度が悪化するため加工精度が下がる。この場合、状況によっては、加工位置の誤差が過大になること、工具位置の過走が検出されることなどによって、サーボアラームを発生させてしまうこともある。本実施の形態の数値制御装置１は、工作機械の振動を抑制しているので、加工精度が低下することを防止できるとともに、サーボアラームの発生を防止できる。
【００７８】
また、回転軸のクランプまたはアンクランプにて、大きな振動が発生する場合がある。加工時間短縮のために、クランプの圧力が強められると、大きな振動が発生する場合がある。また、振動を発生させないために、圧力が弱められると、クランプまたはアンクランプに対する動作時間が長くなり、加工時間が長くなる。本実施の形態の数値制御装置１は、クランプの圧力を強くしてクランプまたはアンクランプに対する動作時間を短くしても、工作機械の振動を抑制することができる。
【００７９】
このように実施の形態の数値制御装置１は、補助機能指令があると、補助機能に対応する処理を制御するとともに、補助機能が実行された場合に発生する振動を抑制するための抑制位置指令５１を、振動を抑制するタイミングでサーボモータ３２に出力する。抑制位置指令５１は、工作機械の振動と逆位相で同じ大きさの振幅を有した振動をサーボモータ３２に発生させる位置指令である。これにより、数値制御装置１は、補助機能が実行されることによって指令により発生する非周期的な振動を抑制することができる。
【００８０】
また、数値制御装置１は、サーボモータ３２の振動を抑えることができるので、工作機械による加工の加工精度が向上する。また、数値制御装置１は、振動を抑制できるので、サーボアラームの発生を防ぐことができる。また、数値制御装置１は、補助機能の動作による振動を抑制できるので、補助機能動作の動作を高速化することが可能となり、加工時間を短縮することができる。
【００８１】
以上の実施の形態に示した構成は、一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
【符号の説明】
【００８２】
１  数値制御装置、１０  機械学習装置、１１  状態観測部、１２  学習部、１５  報酬計算部、１６  関数更新部、２１  解析部、２２  制御部、２３  ＰＬＣ、３１  ドライブユニット、３２  サーボモータ、３３  リモートＩＯ、４０  加工プログラム記憶部、５１  抑制位置指令、１００  プロセッサ、２００  メモリ、３００  入力装置、４００  出力装置、Ｊ１  位置指令、Ｊ２  選択工具番号、Ｊ３  補助機能番号、Ｊ４  ＦＢ位置、Ｊ５  サーボモータ温度。
【要約】
数値制御装置（１）が、工具を用いて工作機械が被加工物への加工を実行する際に工具を駆動する駆動部への位置指令（Ｊ１）を出力するとともに、被加工物の加工以外の処理を実行する補助機能の指令があると、補助機能に対応する処理を制御するとともに、補助機能が実行された場合に発生する工作機械の第１の振動を抑制する位置指令である抑制位置指令（５１）を駆動部に出力する制御部（２２）を備え、抑制位置指令（５１）は、第１の振動と逆位相で第１の振動の振幅以下の大きさの振幅を有した第２の振動を駆動部に発生させる位置指令である。【図１】
0006775720.tif 000003
【図２】
0006775720.tif 000004
【図３】
0006775720.tif 000005
【図４】
0006775720.tif 000006