(57)【要約】【課題】ロストモーション量が異常に大きくなっても長期に亘って停止させる必要がなく、かつ、従来よりも正確なロストモーション量を推定することができる工作機械および工作機械の制御方法を提供する。【解決手段】工作機械は、制御対象を移動させる駆動機構と、駆動機構を動作させるモータと、制御対象の位置を検出する第１のエンコーダと、モータの位置を検出する第２のエンコーダと、モータを制御するサーボ制御部と、第１のエンコーダの検出結果から得た制御対象の位置と第２のエンコーダの検出結果から得た制御対象の位置との誤差を前記サーボ制御部から受け取りあるいは算出し、制御対象の移動方向の反転前後における誤差の変化量に基づいて駆動機構の伝達誤差を推定する数値制御部とを備えている。【選択図】図２
2014235587.tif 000002
【特許請求の範囲】
【請求項１】
制御対象を移動させる駆動機構と、
前記駆動機構を動作させるモータと、
前記制御対象の位置を検出する第１のエンコーダと、
前記モータの位置を検出する第２のエンコーダと、
前記モータを制御するサーボ制御部と、
前記第１のエンコーダの検出結果から得た前記制御対象の位置と前記第２のエンコーダの検出結果から得た前記制御対象の位置との誤差を前記サーボ制御部から受け取りあるいは算出し、前記制御対象の移動方向の反転前後における前記誤差の変化量に基づいて前記駆動機構の伝達誤差を推定する数値制御部とを備えた工作機械。
【請求項２】
前記数値制御部は、
前記制御対象の移動方向を反転させる前における前記第１のエンコーダの検出結果から得た前記制御対象の位置と前記第２のエンコーダの検出結果から得た前記制御対象の位置とに基づいて前記駆動機構の第１の誤差を前記サーボ制御部から受け取りあるいは算出し、
前記制御対象の移動方向を反転させた後における前記第１のエンコーダの検出結果から得た前記制御対象の位置と前記第２のエンコーダの検出結果から得た前記制御対象の位置とに基づいて前記駆動機構の第２の誤差を前記サーボ制御部から受け取りあるいは算出し、
前記第１の誤差と前記第２の誤差との差を前記駆動機構の伝達誤差と推定することを特徴とする請求項１に記載の工作機械。
【請求項３】
前記数値制御部は、
前記制御対象の移動方向を反転させる前における前記第１のエンコーダの検出結果から得た前記制御対象の位置と前記第２のエンコーダの検出結果から得た前記制御対象の位置とに基づいて前記駆動機構の第１の誤差を前記サーボ制御部から受け取りあるいは算出し、
前記制御対象の移動方向を反転させた後における前記第１のエンコーダの検出結果から得た前記駆動機構の位置と前記第２のエンコーダの検出結果から得た前記駆動機構の位置とに基づいて前記駆動機構の第２の誤差を前記サーボ制御部から受け取りあるいは算出し、
前記第１の誤差と前記第２の誤差との差を複数算出し、該複数の差の平均を前記駆動機構の伝達誤差と推定することを特徴とする請求項１に記載の工作機械。
【請求項４】
前記数値制御部から前記サーボ制御部へ出力される位置指令が前記制御対象の移動方向の反転を示しているときに立ち上がるフラグを格納する記憶部をさらに備えていることを特徴とする請求項１から請求項３のいずれか一項に記載の工作機械。
【請求項５】
前記第１の誤差と前記第２の誤差との差を算出するために、前記数値制御部は、前記フラグが下がっている場合に前記第１の誤差をセットし、前記フラグが立ち上がった後に前記第２の誤差をセットすることを特徴とする請求項４に記載の工作機械。
【請求項６】
前記フラグは、前記位置指令が前記制御対象の移動方向の反転を示してから前記制御対象の移動方向が実際に反転したときに立ち下がることを特徴とする請求項４または請求項５に記載の工作機械。
【請求項７】
前記駆動機構の伝達誤差の推定値を表示する表示部をさらに備えたことを特徴とする請求項１から請求項６のいずれか一項に記載の工作機械。
【請求項８】
前記駆動機構の伝達誤差の推定値が所定値を超えた場合に警報を発する警報部をさらに備えたことを特徴とする請求項１から請求項７のいずれか一項に記載の工作機械。
【請求項９】
前記記憶部は、前記駆動機構の伝達誤差の複数の推定値を格納し、
前記表示部あるいは前記警報部は、前記複数の推定値に基づいて前記駆動機構の保全時期をユーザへ知らせることを特徴とする請求項７または請求項８に記載の工作機械。
【請求項１０】
制御対象を移動させる駆動機構と、前記駆動機構を動作させるモータと、前記制御対象の位置を検出する第１のエンコーダと、前記モータの位置を検出する第２のエンコーダと、前記モータを制御するサーボ制御部と、前記サーボ制御部へ位置指令を出力する数値制御部とを備えた工作機械の制御方法であって、
前記第１のエンコーダの検出結果から得た前記制御対象の位置と前記第２のエンコーダの検出結果から得た前記制御対象の位置との誤差を受け取りあるいは算出し、
前記制御対象の移動方向の反転前後における前記誤差の変化量を算出し、
前記誤差の変化量に基づいて前記駆動機構の伝達誤差を推定することを具備する制御方法。
【請求項１１】
前記誤差の受け取りあるいは算出は、
前記制御対象の移動方向を反転させる前における前記第１のエンコーダの検出結果から得た前記制御対象の位置と前記第２のエンコーダの検出結果から得た前記制御対象の位置とに基づいて前記駆動機構の第１の誤差を受け取りあるいは算出し、
前記制御対象の移動方向を反転させた後における前記第１のエンコーダの検出結果から得た前記制御対象の位置と前記第２のエンコーダの検出結果から得た前記制御対象の位置とに基づいて前記駆動機構の第２の誤差を受け取りあるいは算出することを含み、
前記第１の誤差と前記第２の誤差との差を前記駆動機構の伝達誤差と推定することを特徴とする請求項１０に記載の制御方法。
【請求項１２】
前記誤差の受け取りあるいは算出は、
前記制御対象の移動方向を反転させる前における前記第１のエンコーダの検出結果から得た前記制御対象の位置と前記第２のエンコーダの検出結果から得た前記制御対象の位置とに基づいて前記駆動機構の第１の誤差を受け取りあるいは算出し、
前記制御対象の移動方向を反転させた後における前記第１のエンコーダの検出結果から得た前記制御対象の位置と前記第２のエンコーダの検出結果から得た前記制御対象の位置とに基づいて前記駆動機構の第２の誤差を受け取りあるいは算出することを含み、
前記誤差の受け取りあるいは算出を繰り返して、前記第１の誤差と前記第２の誤差との差を複数算出し、該複数の差の平均を前記駆動機構の伝達誤差と推定することを特徴とする請求項１０に記載の制御方法。
【請求項１３】
前記第１の誤差と前記第２の誤差との差を算出するために、前記数値制御部から前記サーボ制御部へ出力される位置指令が前記制御対象の移動方向の反転を示しているときに立ち上がるフラグが下がっている場合に前記第１の誤差をセットし、前記フラグが立ち上がった後に前記第２の誤差をセットすることを特徴とする請求項１０から請求項１２のいずれか一項に記載の制御方法。
【請求項１４】
前記フラグは、前記位置指令が前記制御対象の移動方向の反転を示してから前記制御対象の移動方向が実際に反転したときに立ち下がることを特徴とする請求項１３に記載の制御方法。
【請求項１５】
前記工作機械は、前記駆動機構の伝達誤差の推定値が所定値を超えた場合に警報を発することを特徴とする請求項１０から請求項１４のいずれか一項に記載の制御方法。
【請求項１６】
前記工作機械は、前記駆動機構の伝達誤差の複数の推定値に基づいて前記駆動機構の保全時期をユーザへ知らせることを特徴とする請求項１０から請求項１５のいずれか一項に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明による実施形態は、工作機械およびその制御方法に関する。
【背景技術】
【０００２】
一般に、工作機械において、ワークを搭載するテーブルまたはワークを切削する工具を搭載する主軸頭等の制御対象は、数値制御装置およびサーボ部を用いて制御される。数値制御装置はサーボ部へ位置指令を出力する。サーボ部は、例えば、ラックおよびピニオン、ボールねじおよびナット等からなる伝達機構を介して制御対象の位置を位置指令に従って制御する。
【０００３】
このような伝達機構にバックラッシまたは摩擦等が存在する場合、数値制御装置およびサーボ部がモータの回転位置を正確に制御しても、モータが制御対象の位置を正確に制御できない場合が生じる。例えば、伝達機構にバックラッシがある場合、サーボ部がモータを介して制御対象の移動方向を反転させようとしたときに、モータが回転（反転）しても、制御対象はバックラッシの分だけ停止している。即ち、位置指令に対して制御対象が即座に追従しないことがある。この追従誤差をロストモーションと呼ぶ。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−２９７２４１号公報
【特許文献２】特開２０１２−１６８９２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ロストモーション量が大きくなると、軸移動に伴う振動が大きくなり、加工対象の加工面に振動模様が転写される。これは、加工対象の品質の劣化に繋がる。通常、ユーザは、加工面の劣化に気が付いた後に工作機械の修理または調整をメーカまたは修理業者に依頼していた。メーカまたは修理業者は、数値制御装置およびサーボ部をセミクローズドループ制御状態にして、ＤＢＢ（Double Ball Bar）測定器を用いてロストモーション量の確認を行い、その後、修理に必要な部品の入手を行ってから工作機械の修理を行っていた。この場合、ユーザは、修理に必要な部品が入手できるまで長期間に亘って工作機械を使用できなかった。
【０００６】
そこで、本発明は、上記問題点を解決するためになされたもので、ロストモーション量が異常に大きくなっても長期に亘って停止させる必要がなく、かつ、従来よりも正確なロストモーション量を推定することができる工作機械および工作機械の制御方法を提供することである。
【課題を解決するための手段】
【０００７】
本実施形態による工作機械は、制御対象を移動させる駆動機構と、前記駆動機構を動作させるモータと、前記制御対象の位置を検出する第１のエンコーダと、前記モータの位置を検出する第２のエンコーダと、前記モータを制御するサーボ制御部と、前記第１のエンコーダの検出結果から得た前記制御対象の位置と前記第２のエンコーダの検出結果から得た前記制御対象の位置との誤差を前記サーボ制御部から受け取りあるいは算出し、前記制御対象の移動方向の反転前後における前記誤差の変化量に基づいて前記駆動機構の伝達誤差を推定する数値制御部とを備えている。
【０００８】
前記数値制御部は、
前記制御対象の移動方向を反転させる前における前記第１のエンコーダの検出結果から得た前記制御対象の位置と前記第２のエンコーダの検出結果から得た前記制御対象の位置とに基づいて前記駆動機構の第１の誤差を前記サーボ制御部から受け取りあるいは算出し、
前記制御対象の移動方向を反転させた後における前記第１のエンコーダの検出結果から得た前記制御対象の位置と前記第２のエンコーダの検出結果から得た前記制御対象の位置とに基づいて前記駆動機構の第２の誤差を前記サーボ制御部から受け取りあるいは算出し、
前記第１の誤差と前記第２の誤差との差を前記駆動機構の伝達誤差と推定してもよい。
【０００９】
前記数値制御部は、
前記制御対象の移動方向を反転させる前における前記第１のエンコーダの検出結果から得た前記制御対象の位置と前記第２のエンコーダの検出結果から得た前記制御対象の位置とに基づいて前記駆動機構の第１の誤差を前記サーボ制御部から受け取りあるいは算出し、
前記制御対象の移動方向を反転させた後における前記第１のエンコーダの検出結果から得た前記駆動機構の位置と前記第２のエンコーダの検出結果から得た前記駆動機構の位置とに基づいて前記駆動機構の第２の誤差を前記サーボ制御部から受け取りあるいは算出し、
前記第１の誤差と前記第２の誤差との差を複数算出し、該複数の差の平均を前記駆動機構の伝達誤差と推定してもよい。
【００１０】
当該工作機械は、前記数値制御部から前記サーボ制御部へ出力される位置指令が前記制御対象の移動方向の反転を示しているときに立ち上がるフラグを格納する記憶部をさらに備えていてもよい。
【００１１】
前記第１の誤差と前記第２の誤差との差を算出するために、前記数値制御部は、前記フラグが下がっている場合に前記第１の誤差をセットし、前記フラグが立ち上がった後に前記第２の誤差をセットしてもよい。
【００１２】
前記フラグは、前記位置指令が前記制御対象の移動方向の反転を示してから前記制御対象の移動方向が実際に反転したときに立ち下がってもよい。
【００１３】
当該工作機械は、前記駆動機構の伝達誤差の推定値を表示する表示部をさらに備えていてもよい。
【００１４】
当該工作機械は、前記駆動機構の伝達誤差の推定値が所定値を超えた場合に警報を発する警報部をさらに備えていてもよい。
【００１５】
前記記憶部は、前記駆動機構の伝達誤差の複数の推定値を格納し、
前記表示部あるいは前記警報部は、前記複数の推定値に基づいて前記駆動機構の保全時期をユーザへ知らせてもよい。
【００１６】
本実施形態による工作機械の制御方法は、制御対象を移動させる駆動機構と、前記駆動機構を動作させるモータと、前記制御対象の位置を検出する第１のエンコーダと、前記モータの位置を検出する第２のエンコーダと、前記モータを制御するサーボ制御部と、前記サーボ制御部へ位置指令を出力する数値制御部とを備えた工作機械の制御方法であって、
前記第１のエンコーダの検出結果から得た前記制御対象の位置と前記第２のエンコーダの検出結果から得た前記制御対象の位置との誤差を受け取りあるいは算出し、
前記制御対象の移動方向の反転前後における前記誤差の変化量を算出し、
前記誤差の変化量に基づいて前記駆動機構の伝達誤差を推定することを具備する。
【００１７】
前記誤差の算出は、
前記制御対象の移動方向を反転させる前における前記第１のエンコーダの検出結果から得た前記制御対象の位置と前記第２のエンコーダの検出結果から得た前記制御対象の位置とに基づいて前記駆動機構の第１の誤差を算出し、
前記制御対象の移動方向を反転させた後における前記第１のエンコーダの検出結果から得た前記制御対象の位置と前記第２のエンコーダの検出結果から得た前記制御対象の位置とに基づいて前記駆動機構の第２の誤差を算出することを含み、
当該方法は、前記第１の誤差と前記第２の誤差との差を前記駆動機構の伝達誤差と推定してもよい。
【００１８】
前記誤差の受け取りあるいは算出は、
前記制御対象の移動方向を反転させる前における前記第１のエンコーダの検出結果から得た前記制御対象の位置と前記第２のエンコーダの検出結果から得た前記制御対象の位置とに基づいて前記駆動機構の第１の誤差を受け取りあるいは算出し、
前記制御対象の移動方向を反転させた後における前記第１のエンコーダの検出結果から得た前記制御対象の位置と前記第２のエンコーダの検出結果から得た前記制御対象の位置とに基づいて前記駆動機構の第２の誤差を受け取りあるいは算出することを含み、
当該方法は、前記誤差の算出を繰り返して、前記第１の誤差と前記第２の誤差との差を複数算出し、該複数の差の平均を前記駆動機構の伝達誤差と推定してもよい。
【００１９】
前記第１の誤差と前記第２の誤差との差を算出するために、前記数値制御部から前記サーボ制御部へ出力される位置指令が前記制御対象の移動方向の反転を示しているときに立ち上がるフラグが下がっている場合に前記第１の誤差をセットし、前記フラグが立ち上がった後に前記第２の誤差をセットしてもよい。
【００２０】
前記フラグは、前記位置指令が前記制御対象の移動方向の反転を示してから前記制御対象の移動方向が実際に反転したときに立ち下がってもよい。
【００２１】
前記工作機械は、前記駆動機構の伝達誤差の推定値が所定値を超えた場合に警報を発してもよい。
【００２２】
前記工作機械は、前記駆動機構の伝達誤差の複数の推定値に基づいて前記駆動機構の保全時期をユーザへ知らせてもよい。
【図面の簡単な説明】
【００２３】
【図１】本実施形態に従った工作機械のサーボ部１および駆動機構２の構成の一例を示す図。
【図２】本実施形態によるサーボ部１、駆動機構２および数値制御装置４の構成の一例を示すブロック図。
【図３】本実施形態における位置指令値の一例を示すグラフ、リニアエンコーダ５０およびロータリエンコーダ６０のそれぞれからフィードバックされたテーブル２８の位置測定値の一例を示すグラフ、並びに、ロストモーション量を示すグラフ。
【図４】ロストモーション量の推定方法を示すフロー図。
【発明を実施するための形態】
【００２４】
以下、図面を参照して本発明に係る実施形態を説明する。本実施形態は、本発明を限定するものではない。
【００２５】
図１は、本実施形態に従った工作機械のサーボモータ１４および駆動機構２の構成の一例を示す図である。サーボモータ１４は、カップリング３を介して駆動機構２と連結されている。駆動機構２は、ベッド２０と、支持ブラケット２２と、ナット２３と、ボールねじ２５と、ベアリング２６と、リニアガイド２７と、テーブル２８とを備えている。
【００２６】
ベッド２０は、工作機械の本体に固定され、駆動機構２の他の構成要素を搭載する。支持ブラケット２２は、ベッド２０上に固定配置されており、ベアリング２６を介してボールねじ２５の両端を支持するように構成されている。ボールねじ２５は、カップリング３によってサーボモータ１４と連結されており、サーボモータ１４の軸の回転に従って回転するように構成されている。ナット２３は、ボールねじ２５のねじ部と螺合するようにねじ孔が形成されており、ボールねじ２５の回転に従ってボールねじ２５の軸方向に移動することができる。制御対象としてのテーブル２８は、ナット２３に固定されており、かつ、リニアガイド２７によって支持されている。テーブル２８は、ナット２３の移動に伴って、ボールねじ２５およびリニアガイド２７の軸方向（矢印Ａの方向）に移動する。テーブル２８は、ワークを搭載し、ワークを工具で切削するために、ワークをベッド２０に対して相対的に動作させる。尚、制御対象は、主軸頭等であってもよい。
【００２７】
このように、工作機械は、サーボモータ１４の回転運動をテーブル２８の線形運動に変換することができる。
【００２８】
図２は、本実施形態によるサーボ部１、駆動機構２および数値制御装置４の構成の一例を示すブロック図である。数値制御装置４は、入力表示部４０と、メモリ４１と、プログラム解析部４２と、軌道生成部４４と、ロストモーション量算出部４６と、警報部４８とを備えている。
【００２９】
入力表示部４０は、操作者と数値制御装置４との間のインタフェースであり、例えば、タッチパネル式ディスプレイ等である。操作者は、入力表示部４０において加工プログラムを入力または選択する。
【００３０】
メモリ４１は、例えば、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、ＨＤＤ（Hard Disc Drive）および／またはＳＳＤ（Solid State Drive）である。メモリ４１は、工作機械全体を制御するシステムプログラム、加工プログラム、工作機械のパラメータ、各種データを格納する。メモリ４１のＲＡＭ領域は、ＣＰＵ１０がシステムプログラム等を実行する際に、ロード領域あるいは作業領域としても用いられる。
【００３１】
プログラム解析部４２は、メモリ４１から得た加工プログラムを解析し、軌道生成用データを作成する。加工プログラムの解析は、加工プログラムの各ブロックについて、工作機械の駆動部を移動させる目標位置の座標、および、駆動部の目標移動速度等を得る。ブロックとは、加工プログラムの基本単位であり、例えば、１行分の指令を示す。１ブロックは、例えば、直線移動、円弧移動、主軸の回転開始／停止等の基本的な動作の指令を示す。これにより、軌道生成用データがブロックごとに作成される。軌道生成用データは、軌道生成部４４へ転送され、軌道生成部４４は、サンプリング周期ごとの位置指令を作成する。
【００３２】
サーボ部１のサーボ制御部１２は、数値制御装置４からの位置指令に従ってモータ１４を制御する。モータ１４には、ロータリエンコーダ６０が設けられている。ロータリエンコーダ６０は、モータ１４の軸の回転を検出し、その位置の変移を測定する。ロータリエンコーダ６０は、モータ１４の軸の位置変移をサーボ制御部１２へフィードバックする。
【００３３】
モータ１４は、図１を参照して説明したように、駆動機構２を駆動する。これにより、テーブル２８がリニアガイド２７に沿って移動する。駆動機構２には、テーブル２８に接続されたリニアエンコーダ５０が設けられている。リニアエンコーダ５０は、テーブル２８の位置の変移を測定する。リニアエンコーダ５０は、テーブル２８の位置変移をサーボ制御部１２へフィードバックする。
【００３４】
サーボ制御部１２は、リニアエンコーダ５０およびロータリエンコーダ６０からのフィードバックを受けて、テーブル２８の位置またはモータ１４の位置を補正するために位置の測定値を補正する。サーボ制御部１２は、補正後の位置測定値と位置指令値との差を用いて速度指令を生成する。
【００３５】
さらに、サーボ制御部１２は、リニアエンコーダ５０およびロータリエンコーダ６０からのフィードバックされたテーブル２８の位置の測定値またはモータ１４の位置の測定値をロストモーション算出部４６へ転送する。
【００３６】
ロストモーション算出部４６は、リニアエンコーダ５０の検出結果から得たテーブル２８の位置の測定値（以下、リニアエンコーダ５０からの位置測定値ともいう）とロータリエンコーダ６０の検出結果から得たテーブル２８の位置の測定値（以下、ロータリエンコーダ６０からの位置測定値ともいう）との誤差を算出する。尚、ロータリエンコーダ６０は、モータ１４の軸の位置（角位置）を検出するので、ロータリエンコーダ６０自身、サーボ制御部１２あるいはロストモーション算出部４６がモータ１４の角位置からテーブル２８の位置（換算位置）を算出する。また、サーボ制御部１２がリニアエンコーダ５０からの位置測定値とロータリエンコーダ６０からの位置測定値との誤差を算出してもよい。この場合、ロストモーション算出部４６は、サーボ制御部１２からリニアエンコーダ５０からの位置測定値とロータリエンコーダ６０からの位置測定値との誤差を受け取る。さらに、ロストモーション算出部４６は、テーブル２８の移動方向の反転前および反転後における誤差の変化量を算出し、その変化量に基づいて駆動機構２の伝達誤差（ロストモーション量）を推定する。警報部４８は、ロストモーション量の推定値が所定値を超えた場合に警報を発する。
【００３７】
尚、メモリ４１、プログラム解析部４２、軌道生成部４４およびロストモーション算出部４６は、１つのＣＰＵ（Central Processing Unit）で実現されてもよく、それぞれ個別のメモリまたはＣＰＵで実現されていてもよい。
【００３８】
ボールねじ２５とナット２３との間には、バックラッシ等の機械的誤差、または、摩擦あるいは弾性変形等の非線形誤差が存在する。このような誤差は、モータ１４とテーブル２８との間に機械的な伝達誤差を生じさせる。例えば、図１のモータ１４がボールねじ２５を一方向に回転させてテーブル２８を矢印Ａの一方向に移動させ、その後、モータ１４がボールねじ２５の回転方向を反転させてテーブル２８を矢印Ａの他の方向（逆方向）に移動させる。このとき、ボールねじ２５とナット２３との間にバックラッシ等があると、モータ１４が反転しているにもかかわらず、テーブル２８は移動せずに停止したままの状態となる期間がある。このように、モータ１４が反転しているにもかかわらず、テーブル２８が移動しない状態をロストモーションと呼ぶ。
【００３９】
図３（Ａ）は、本実施形態における位置指令値の一例を示すグラフ、図３（Ｂ）は、リニアエンコーダ５０およびロータリエンコーダ６０のそれぞれからフィードバックされたテーブル２８の位置測定値の一例を示すグラフ、並びに、図３（Ｃ）は、ロストモーション量（長さ）を示すグラフである。図３（Ａ）〜図３（Ｃ）において、横軸は時間である。
【００４０】
図３（Ａ）に示すように、数値制御装置４は、サーボ制御部１２へ位置指令値を出力する。例えば、数値制御装置４は、時点ｔ０までテーブル２８を第１の方向へ移動させるように位置指令値を出力する。数値制御装置４は、時点ｔ０においてテーブル２８の移動方向を第２の方向へ反転させるように位置指令値を変更している。その後、数値制御装置４は、時点ｔ１０までテーブル２８を第２の方向へ移動させるように位置指令値を出力する。数値制御装置４は、時点ｔ１０においてテーブル２８の移動方向を第１の方向へ再度反転させるように位置指令値を変更している。即ち、時点ｔ０およびｔ１０において、数値制御装置４は、位置指令値の変化率の符号（速度指令の符号）を変更している。これにより、位置指令値は、時点ｔ０およびｔ１０において変曲点を有し、テーブル２８の移動方向を逆方向に反転させようとしている。
【００４１】
図３（Ｂ）に示すように、モータ１４は、時点ｔ１までテーブル２８を第１の方向へ移動させている。時点ｔ０における位置指令に従って、モータ１４は、テーブル２８の移動方向を第１の方向から第２の方向へ反転させる。このとき、数値制御装置４が位置指令を出力した時点ｔ０からモータ１４がその位置指令に従って実際にテーブル２８を動作させる時点ｔ１までタイムラグ（ｔ１−ｔ０）が発生している。尚、図３（Ｂ）に示すように、時点ｔ１まで、リニアエンコーダ５０およびロータリエンコーダ６０からのそれぞれの位置測定値は完全には一致せず、両者間には若干の差がある。時点ｔ１２以降についても同様に、リニアエンコーダ５０およびロータリエンコーダ６０からのそれぞれの位置測定値には若干差がある。
【００４２】
ナット２３とボールねじ２５との間にバックラッシがある場合、テーブル２８の移動方向を第１の方向から第２の方向へ反転させようとしたときに、モータ１４が動作しても、テーブル２８はそのバックラッシの分だけ停止している。従って、図３（Ｂ）の時点ｔ１〜ｔ２の期間において、ロータリエンコーダ６０から得られたテーブル２８の位置測定値Ｌ６０は低下しているものの、リニアエンコーダ５０から得られたテーブル２８の位置測定値Ｌ５０はほぼ一定である。
【００４３】
従って、時点ｔ１〜ｔ２において、位置指令値とリニアエンコーダ５０から得られたテーブル２８の位置測定値Ｌ５０との間の位置誤差が急激に増加するため、位置誤差に比例する速度指令が急激に変化する。これにより、モータ１４の回転が速くなり、位置測定値Ｌ６０の傾きは図３（Ａ）に示す位置指令値の傾きよりも急峻になっている。
【００４４】
モータ１４がバックラッシの分だけ回転した後、時点ｔ２〜ｔ１１において、テーブル２８はモータ１４の動作に従って第２の方向へ移動する。このとき、図３（Ｂ）および図３（Ｃ）に示すように、バックラッシの分だけ、位置測定値Ｌ６０と位置測定値Ｌ５０との間に誤差が生じている。
【００４５】
次に、モータ１４は、時点ｔ１１までテーブル２８を第２の方向へ移動させる。時点ｔ２〜ｔ１１において、位置測定値Ｌ６０と位置測定値Ｌ５０との間に誤差はそのまま維持されている。
【００４６】
時点ｔ１０における位置指令に従って、モータ１４は、テーブル２８の移動方向を第２の方向から第１の方向へ再度反転させる。このとき、数値制御装置４が位置指令を出力した時点ｔ１０からモータ１４がその位置指令に従って実際にテーブル２８を動作させる時点ｔ１１までタイムラグ（ｔ１１−ｔ１０）が発生している。
【００４７】
上述の通り、バックラッシがある場合、テーブル２８の移動方向を第２の方向から第１の方向へ反転させようとしたときに、モータ１４が動作しても、テーブル２８はそのバックラッシの分だけ停止している。従って、図３（Ｂ）の時点ｔ１１〜ｔ１２の期間において、ロータリエンコーダ６０から得られたテーブル２８の位置測定値Ｌ６０は上昇しているものの、リニアエンコーダ５０から得られたテーブル２８の位置測定値Ｌ５０はほぼ一定である。即ち、時点ｔ２〜ｔ１１における位置測定値Ｌ５０と位置測定値Ｌ６０との誤差は、低下し、ゼロへ向かって戻っている。
【００４８】
尚、時点ｔ１１〜ｔ１２において、位置指令値とリニアエンコーダ５０から得られたテーブル２８の位置測定値Ｌ５０との間の位置誤差が急激に増加するため、位置誤差に比例する速度指令が急激に変化する。これにより、モータ１４の回転が速くなり、位置測定値Ｌ６０の傾きは図３（Ａ）に示す位置指令値の傾きよりも急峻になっている。
【００４９】
モータ１４はほぼバックラッシの分だけ再度反転した後、時点ｔ１２以降において、テーブル２８はモータ１４の動作に従って第１の方向へ移動する。このとき、図３（Ｂ）および図３（Ｃ）に示すように、位置測定値Ｌ５０と位置測定値Ｌ６０との誤差は戻って低下しているものの、ゼロにならない場合がある。即ち、時点ｔ１２以降においても位置測定値Ｌ６０と位置測定値Ｌ５０との間に誤差が生じている場合がある。
【００５０】
時点１２以降、モータ１４は、同様に位置指令に従って動作し、駆動機構２を駆動させる。このとき、バックラッシがある場合、リニアエンコーダ５０およびロータリエンコーダ６０からのそれぞれの測定値に誤差が生じる。
【００５１】
図３（Ｃ）に示すように、リニアエンコーダ５０からの位置測定値Ｌ５０とロータリエンコーダ６０からの位置測定値Ｌ６０との差に基づいてロストモーション量が推定される。
【００５２】
図４は、ロストモーション量の推定方法を示すフロー図である。図４を参照して、ロストモーション量の推定方法をさらに詳細に説明する。尚、ロストモーション量の推定は、ロストモーション算出部４６において実行すればよい。
【００５３】
ロストモーション算出部４６は、テーブル２８の移動方向の反転前および反転後における誤差の変化量の算出を定時的な割込み処理によって繰り返し実行する。例えば、ロストモーション算出部４６は、数値制御装置４のサンプリング周期ごとにテーブル２８の移動方向の反転前および反転後における誤差の変化量の算出を実行してもよい。
【００５４】
まず、初期状態において、ロストモーション算出部４６は、連続する複数のサンプリング周期において出力した複数の位置指令値と、該複数の位置指令に対応するリニアエンコーダ５０の検出結果から得た位置測定値と、該複数の位置指令に対応するロータリエンコーダ６０の検出結果から得た位置測定値とをサーボ制御部１２から受け取っているものとする。尚、ロストモーション算出部４６は、位置指令値を軌道生成部４４から直接受け取ってもよい。
【００５５】
ロストモーション算出部４６は、さらに次のサンプリング周期において出力した位置指令値と、該位置指令に対応するリニアエンコーダ５０からの位置測定値と、ロータリエンコーダ６０からの位置測定値とをサーボ制御部１２から受け取る（Ｓ２０）。
【００５６】
次に、ロストモーション算出部４６は、連続するサンプリング周期において得られた複数の位置指令値に基づいて、位置指令値がテーブル２８の移動方向の反転を示しているか否かを判定する（Ｓ３０）。例えば、図３（Ａ）を参照して説明したように、ロストモーション算出部４６は、位置指令値の変化率の符号（速度指令の符号）の変化によって位置指令値がテーブル２８の移動方向を反転しているか否かを判定してよい。尚、位置指令値が変化していない場合（位置指令値の変化率がゼロの場合）、ロストモーション算出部４６は、その時点の移動方向をそのまま維持する。
【００５７】
また、ロストモーション算出部４６は、連続するサンプリング周期におけるリニアエンコーダ５０からの複数の位置測定値に基づいて、テーブル２８の移動方向が実際に反転しているか否かを判定する（Ｓ３０）。例えば、ロストモーション算出部４６は、リニアエンコーダ５０からの位置測定値における変化率の符号（速度の符号）の変化によってテーブル２８の移動方向を判定してよい。尚、この位置測定値の変化率が変化していない場合（位置測定値の変化率がゼロの場合）、ロストモーション算出部４６は、その時点の移動方向をそのまま維持する。また、この場合、リニアエンコーダ５０のカウントのふらつきにより移動方向を誤検出しないように適切な不感帯を設けてもよい。このように、ステップＳ３０において、ロストモーション算出部４６は、位置指令値におけるテーブル２８の移動方向の反転（以下、位置指令値の反転ともいう）およびリニアエンコーダ５０からの位置測定値におけるテーブル２８の移動方向の反転（以下、位置測定値の反転ともいう）を判定する。
【００５８】
次に、ロストモーション算出部４６は、フラグＦを参照する（Ｓ４０）。フラグＦは、位置指令値の反転を示しているときに立ち上がる。初期状態の場合、あるいは、位置指令値の反転を検出していない場合、フラグＦは、例えば、論理ロウ（０）に立ち下がっている。一方、後述するステップＳ６０において位置指令値の反転を検出した場合、フラグＦは、例えば、論理ハイ（１）に立ち上がる。尚、位置指令の反転を示すことができる限りにおいて、フラグＦの論理状態は入れ替えても構わない。フラグＦは、メモリ４１またはロストモーション算出部４６内のレジスタに格納すればよい。
【００５９】
フラグＦが下がっている場合（Ｓ４０のＮＯ）、ロストモーション算出部４６は、ステップＳ３０において判定された位置指令値の反転の状態を参照する（Ｓ５０）。
【００６０】
さらに、位置指令値の反転が検出されていない場合（Ｓ５０のＮＯ）、ロストモーション算出部４６は、リニアエンコーダ５０からの位置測定値とロータリエンコーダ６０からの位置測定値との差の絶対値を第１の誤差Ａとしてセットする（Ｓ６０）。即ち、ロストモーション算出部４６は、テーブル２８の移動方向を反転させる前（例えば、図３（Ａ）のｔ０以前）におけるリニアエンコーダ５０からの位置測定値とロータリエンコーダ６０からの位置測定値との差を駆動機構２の第１の誤差Ａとして算出する。第１の誤差Ａは、メモリ４１またはロストモーション算出部４６内のレジスタに格納（セット）すればよい。尚、第１の誤差Ａは、サーボ制御部１２において算出され、サーボ制御部１２からロストモーション算出部４６へ送信されてもよい。この場合、ロストモーション算出部４６は、第１の誤差Ａを受け取るだけ足り、算出する必要が無い。
【００６１】
位置指令値の反転が検出されない期間（例えば、図３（Ａ）のｔ０以前）において、数値制御装置４は、定期的な割込み処理ごとに、上記ステップＳ２０〜Ｓ６０を繰り返し実行する。この場合、ステップＳ２０〜Ｓ６０の実行ごとに、第１の誤差Ａは、メモリ４１またはロストモーション算出部４６内のレジスタに記憶される。あるいは、ステップＳ２０〜Ｓ６０の実行ごとに得られた第１の誤差Ａは平均化されてもよい。
【００６２】
或る割込み処理のステップＳ５０において、位置指令値の反転が検出された場合（Ｓ５０のＹＥＳ）、ロストモーション算出部４６は、フラグＦを、例えば、論理ハイ（１）に立ち上げる（Ｓ７０）。
【００６３】
次に、ロストモーション算出部４６は、ステップＳ３０において判定された位置測定値の反転の状態を参照する（Ｓ８０）。位置測定値の反転が検出されていない場合（Ｓ８０のＮＯ）、数値制御装置４は、定期的な割込み処理ごとに、上記ステップＳ２０〜Ｓ８０を繰り返し実行する。このとき、位置指令値の反転が検出され、かつ、位置測定値の反転が検出されていない状態である。このように位置指令値の反転が検出され、かつ、位置測定値の反転が検出されない期間は、例えば、図３（Ｂ）のｔ０〜ｔ２の期間（バックラッシの影響が現れているタイムラグ）である。
【００６４】
或る割込み処理のステップＳ８０において、位置測定値の反転が検出された場合（Ｓ８０のＹＥＳ）、ロストモーション算出部４６は、フラグＦを論理ロウに立ち下げ、リセットする（Ｓ９０）。このように、フラグＦは、位置指令がテーブル２８の移動方向の反転を示してからテーブル２８の移動方向が実際に反転するまでの期間（タイムラグ）を検出するために設けられている。
【００６５】
次に、ロストモーション算出部４６は、リニアエンコーダ５０からの位置測定値とロータリエンコーダ６０からの位置測定値との差の絶対値を第２の誤差Ｂとしてセットする（Ｓ１００）。即ち、ロストモーション算出部４６は、テーブル２８の移動方向を反転させた後（例えば、図３（Ａ）〜図３（Ｃ）のｔ２〜ｔ１０）におけるリニアエンコーダ５０からの位置測定値とロータリエンコーダ６０からの位置測定値との差を駆動機構２の第２の誤差Ｂとして算出する。第２の誤差Ｂは、メモリ４１またはロストモーション算出部４６内のレジスタに格納（セット）すればよい。尚、第２の誤差Ｂは、サーボ制御部１２において算出され、サーボ制御部１２からロストモーション算出部４６へ送信されてもよい。この場合、ロストモーション算出部４６は、第２の誤差Ｂを受け取るだけ足り、算出する必要が無い。
【００６６】
次に、ロストモーション算出部４６は、第１の誤差Ａと第２の誤差Ｂとの差の絶対値を誤差Ｃとして算出する（Ｓ１１０）。誤差Ｃは、ステップＳ２０〜Ｓ６０の実行ごとにメモリ４１またはロストモーション算出部４６内のレジスタに記憶される。図４の破線で示すように、ロストモーション算出部４６は、誤差Ｃを駆動機構２の伝達誤差（ロストモーション量）と推定してもよい（Ｓ１３０）。あるいは、ロストモーション算出部４６は、今回算出された誤差Ｃおよび過去に算出された複数の誤差Ｃの平均値を算出し（Ｓ１２０）、その平均値を駆動機構２の伝達誤差（ロストモーション量）と推定してもよい（Ｓ１３０）。
【００６７】
ロストモーション算出部４６は、ロストモーション量の推定値を入力表示部４０へ出力する（Ｓ１４０）。入力表示部４０は、ロストモーション量の推定値を表示する。これにより、ユーザがロストモーション量の変化を把握することができる。従って、加工対象の品質が劣化する前に、修理に必要な部品の手配等を行い、それにより、早期に工作機械の保全を行うことができる。したがって、修理のために工作機械を長期に亘って停止させる必要がない。
【００６８】
ロストモーション量の推定値が所定値を超えた場合に警報部４８は、警報を発する。これにより、ロストモーション量が大きくなった場合に、工作機械がユーザに保全ために注意喚起をすることができる。所定値は、メモリ４１またはロストモーション算出部４６のレジスタに格納すればよい。
【００６９】
さらに、入力表示部４０あるいは警報部４８は、ロストモーション量の複数の推定値に基づいて駆動機構２の保全時期をユーザへ知らせてもよい。この場合、メモリ４１が複数の推定値を記憶しておけばよい。例えば、単一の推定値だけでなく、複数の推定値が所定値を超えた場合に、入力表示部４０あるいは警報部４８は警報を発する。これにより、誤った推定値が特異的に所定値を超えたとしても、入力表示部４０あるいは警報部４８は警報を発しない。これにより、工作機械は正確に工作機械の保全時期をユーザへ知らせることができる。尚、入力表示部４０あるいは警報部４８は、連続的に算出された複数の推定値が所定値を超えたときに、警報を発してもよい。代替的に、入力表示部４０あるいは警報部４８は、離散的に算出された複数の推定値が所定値を超えたときに、警報を発してもよい。
【００７０】
さらに、過去の複数の推定値を工作機械の内部または外部のデータベースに格納しておき、グラフとしてユーザに提示することにより、ユーザが工作機械の保全時期を予測および管理してもよい。
【００７１】
さらに、本実施形態による工作機械は、単に、リニアエンコーダ５０からの位置測定値とロータリエンコーダ６０からの位置測定値との差（例えば、第１の誤差Ａまたは第２の誤差Ｂのいずれか）をロストモーション量としているのではない。本実施形態による工作機械は、テーブル２８の移動方向の反転前後における誤差の変化量（例えば、誤差Ｃ）に基づいてロストモーション量を推定している。従って、例えば、図３（Ｂ）および図３（Ｃ）に示すように、テーブル２８の移動方向の反転前後の両方に誤差があったとしても、本実施形態による工作機械は、正確なロストモーション量を推定することができる。
【符号の説明】
【００７２】
１…サーボ部
２…駆動機構
３…カップリング
４…数値制御装置
２０…ベッド
２２…支持ブラケット
２３…ナット
２５…ボールねじ
２６…ベアリング
２７…リニアガイド
２８…テーブル
４０…入力表示部
４１…メモリ
４２…プログラム解析部
４４…軌道生成部
４６…ロストモーション量算出部
４８…警報部
【図１】
2014235587.tif 000003
【図２】
2014235587.tif 000004
【図３】
2014235587.tif 000005
【図４】
2014235587.tif 000006