IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ブラザー工業株式会社の特許一覧

特開2024-122404数値制御装置、制御方法、及びプログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024122404
(43)【公開日】2024-09-09
(54)【発明の名称】数値制御装置、制御方法、及びプログラム
(51)【国際特許分類】
   G05B 19/404 20060101AFI20240902BHJP
   B23Q 5/40 20060101ALI20240902BHJP
   B23Q 17/00 20060101ALI20240902BHJP
【FI】
G05B19/404 G
B23Q5/40 C
B23Q17/00 A
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023029928
(22)【出願日】2023-02-28
(71)【出願人】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】100104178
【弁理士】
【氏名又は名称】山本 尚
(72)【発明者】
【氏名】小林 太樹
【テーマコード(参考)】
3C029
3C269
【Fターム(参考)】
3C029EE02
3C269AB01
3C269BB03
3C269EF12
3C269GG01
3C269MN13
3C269MN16
3C269MN36
3C269MN44
(57)【要約】
【課題】本発明は、ダブルナット予圧方式の送り駆動機構において、ボール螺子の個体ごとの摩擦補償量を短期間で高精度に推定できる数値制御装置、制御方法、及びプログラムを提供する。
【解決手段】数値制御装置の摩擦推定部は、移動方向の反転前の摩擦補償量から移動距離に応じて立ち上がり所定値に収束する基底関数fc1~fc9であって、立ち上がりの遅れと傾きが互いに異なるN個の基底関数fc1~fc9に対して、N個の補償トルク係数を夫々乗じた結果の線形結合により摩擦補償量を推定する補償モデルを備える。
【選択図】図9
【特許請求の範囲】
【請求項1】
ボール螺子軸と該ボール螺子軸に外嵌するボールナットとを有し、該ボールナットに固定した移動体を移動する送り機構と、
前記ボール螺子軸を回転駆動するモータと、
前記モータの位置を検出する位置検出機構と、
前記位置検出機構によって検出した前記モータの位置と、生成された位置指令とが一致するように速度指令を生成する速度生成部と、
前記モータの速度を検出する速度検出部と、
前記速度検出部が検出した速度と前記速度生成部が生成した前記速度指令とが一致するようにトルク指令を生成するトルク生成部と、
前記モータの回転方向の反転に伴い前記移動体の移動方向が反転した位置からの移動距離に応じて発生する摩擦力に基づく摩擦補償量を出力する摩擦推定部と、
前記摩擦推定部が出力した前記摩擦補償量に基づいて前記トルク指令を補正する補正部と
を備えた数値制御装置において、
前記摩擦推定部は、前記移動方向の反転前の前記摩擦補償量から前記移動距離に応じて立ち上がり所定値に収束する基底関数であって、前記立ち上がりの遅れと傾きが互いに異なるN個の基底関数に対して、N個の補償トルク係数を夫々乗じた結果の線形結合により前記摩擦補償量を推定する補償モデルを備えた
ことを特徴とする数値制御装置。
【請求項2】
前記N個の補償トルク係数を変更した場合の偏差の変化の勾配を示すN個の変化勾配を解析する解析部と、
現在の前記N個の補償トルク係数に基づく前記摩擦補償量に基づき前記移動体の移動動作を実行した場合に前記位置検出機構が検出した前記モータの位置と、位置指令信号が示す位置との偏差を取得する第一取得部と、
前記解析部が解析した前記N個の変化勾配と、前記第一取得部が取得した前記偏差とに基づき、前記N個の補償トルク係数を補正する為のN個の要素を含むパラメータ更新ベクトルを演算する第一演算部と、
前記第一演算部が演算した前記パラメータ更新ベクトルに基づき、前記N個の補償トルク係数を更新する第一更新部と
を備えたことを特徴とする請求項1に記載の数値制御装置。
【請求項3】
前記解析部は、
前記N個の補償トルク係数を初期値に設定した際の前記摩擦補償量に基づき前記移動体の移動動作を実行した場合に前記位置検出機構が検出した前記移動体の位置と、前記位置指令信号との偏差を取得する第二取得部と、
前記N個の補償トルク係数のうち、i番目(iは1~Nの整数)の補償トルク係数の前記初期値に所定の値を加算し、他の補償トルク係数を前記初期値に設定する第一設定部と、
前記N個の補償トルク係数のうち前記第一設定部が加算した際の前記摩擦補償量に基づき前記移動体の移動動作を実行した場合に前記位置検出機構が検出した前記移動体の位置と、前記位置指令信号が示す位置とのi番目の偏差を取得する第三取得部と、
前記第二取得部が取得した前記偏差と、前記第三取得部が取得した前記i番目の偏差とに基づき、i番目の変化勾配を演算する変化勾配演算部と
を備え、
前記変化勾配演算部は、前記第一設定部により設定されたN個の補償トルク係数ごとに、前記変化勾配を演算する
ことを特徴とする請求項2に記載の数値制御装置。
【請求項4】
前記第三取得部が実行する移動動作は、前記第二取得部が実行する移動動作と同一の前記位置指令信号に基づく動作である
ことを特徴とする請求項3に記載の数値制御装置。
【請求項5】
前記位置指令信号は、前記移動体が直線状に往復移動する、又は、前記移動体が円弧状に移動する信号である
ことを特徴とする請求項4に記載の数値制御装置。
【請求項6】
前記解析部は、
単位ステップ入力に印加トルクを乗算したステップトルク指令を、前記トルク生成部が出力する前記トルク指令に加算した指令に基づき前記モータが駆動された場合の前記位置検出機構が検出した前記モータの位置と、前記位置指令信号が示す位置との偏差を取得する第四取得部と、
前記第四取得部が取得した前記偏差に基づき、インパルス応答波形を取得する第五取得部と、
前記N個の基底関数と、前記第五取得部が取得した前記インパルス応答波形とに基づき、前記N個の変化勾配を演算する変化勾配演算部と
を備えたことを特徴とする請求項2に記載の数値制御装置。
【請求項7】
前記移動体を移動する指令を含む加工プログラムを実行する実行部を備え、
前記変化勾配演算部は、前記実行部による前記移動体の移動に伴い、所定のサンプリング周期で前記N個の変化勾配を演算し、
前記加工プログラムの実行中に演算した前記N個の変化勾配ごとに、前記パラメータ更新ベクトルを更新する第二更新部を備え、
前記第一更新部は、前記実行部による前記加工プログラムの終了後、前記第二更新部により更新した前記パラメータ更新ベクトルに基づき、前記N個の補償トルク係数を更新する
ことを特徴とする請求項6に記載の数値制御装置。
【請求項8】
前記N個の基底関数は、シグモイド関数、又は、tanh関数で定義する
ことを特徴とする請求項1~7の何れか一つに記載の数値制御装置。
【請求項9】
ボール螺子軸と該ボール螺子軸に外嵌するボールナットとを有し、該ボールナットに固定した移動体を移動する送り機構と、
前記ボール螺子軸を回転駆動するモータと、
前記モータの位置を検出する位置検出機構と
を備えた数値制御装置の制御方法であって
前記位置検出機構によって検出した前記モータの位置と、生成された位置指令とが一致するように速度指令を生成する速度生成ステップと、
前記モータの速度を検出する速度検出ステップと、
前記速度検出ステップが検出した速度と前記速度生成ステップが生成した前記速度指令とが一致するようにトルク指令を生成するトルク生成ステップと、
前記モータの回転方向の反転に伴い前記移動体の移動方向が反転した位置からの移動距離に応じて発生する摩擦力に基づく摩擦補償量を出力する摩擦推定ステップと、
前記摩擦推定ステップが出力した前記摩擦補償量に基づいて前記トルク指令を補正する補正ステップと
を備え、
前記摩擦推定ステップは、前記移動方向の反転前の前記摩擦補償量から前記移動距離に応じて立ち上がり所定値に収束する基底関数であって、前記立ち上がりの遅れと傾きが互いに異なるN個の基底関数に対して、N個の補償トルク係数を夫々乗じた結果の線形結合により前記摩擦補償量を推定する
ことを特徴とする制御方法。
【請求項10】
ボール螺子軸と該ボール螺子軸に外嵌するボールナットとを有し、該ボールナットに固定した移動体を移動する送り機構と、
前記ボール螺子軸を回転駆動するモータと、
前記モータの位置を検出する位置検出機構と
を備えた数値制御装置を制御するコンピュータに、
前記位置検出機構によって検出した前記モータの位置と、生成された位置指令とが一致するように速度指令を生成する速度生成ステップと、
前記モータの速度を検出する速度検出ステップと、
前記速度検出ステップが検出した速度と前記速度生成ステップが生成した前記速度指令とが一致するようにトルク指令を生成するトルク生成ステップと、
前記モータの回転方向の反転に伴い前記移動体の移動方向が反転した位置からの移動距離に応じて発生する摩擦力に基づく摩擦補償量を出力する摩擦推定ステップと、
前記摩擦推定ステップが出力した前記摩擦補償量に基づいて前記トルク指令を補正する補正ステップと
を実行させ、
前記摩擦推定ステップは、前記移動方向の反転前の前記摩擦補償量から前記移動距離に応じて立ち上がり所定値に収束する基底関数であって、前記立ち上がりの遅れと傾きが互いに異なるN個の基底関数に対して、N個の補償トルク係数を夫々乗じた結果の線形結合により前記摩擦補償量を推定する
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、数値制御装置、制御方法、及びプログラムに関する。
【背景技術】
【0002】
特許文献1は、ダブルナット予圧方式の送り駆動機構を制御して、テーブルの移動方向が反転した場合に発生する象限突起を抑制する数値制御装置を開示する。数値制御装置の摩擦補償器は、象限突起を抑制する為、テーブルの移動方向反転時の摩擦力を推定して補償する。摩擦補償器は、第一摩擦特性推定部~第三摩擦特性推定部、加算器、及び応答遅れ補償部等を備える。第一摩擦特性推定部~第三摩擦特性推定部は、補償モデルとして、テーブルの反転位置からの移動距離、反転後の摩擦トルクの立ち上がり係数、及び立ち上がり開始位置までの遅れ量等をパラメータとした近似式を夫々備える。第一摩擦特性推定部は、ナットとボール螺子軸に対してボールが二点接触する場合であって、移動方向反転後から急激に増加する摩擦トルクを求める。この摩擦トルクは、反転直後の摩擦トルクの立ち上がりを近似する近似式から求まる。第二摩擦特性推定部は、ナットとボール螺子軸に対してボールが二点接触する場合であって、反転後からなだらかに増加する摩擦トルクを求める。この摩擦トルクは、二点接触する区間の立ち上がりを近似する近似式から求める。第三摩擦特性推定部は、ボールのナットとボール螺子軸に対する二点接触と三点接触が混在する場合であって、移動方向反転後に所定量移動した後、即ち摩擦トルクのなだらかな増加後に増加する摩擦トルクを求める。この摩擦トルクは、二点接触から三点接触に切り替わる区間の立ち上がりを近似する近似式から求める。加算器は、求めた摩擦トルクを加算する。応答遅れ補償部は、摩擦トルクの加算結果に基づき摩擦補償信号を生成する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2013-131026号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記数値制御装置では、摩擦トルクの立ち上がりの傾き、及び移動方向反転後の二点接触、三点接触に切り替わる位置がボール螺子の個体差によりばらつきが生じる。従って、より高精度に摩擦トルクを補償する為には、ボール螺子の個体ごとに補償モデルのパラメータを同定する必要がある。上記補償モデルでパラメータを同定しようとした場合、立ち上がり係数と遅れ量とのパラメータが非線形性をもつので、ボール螺子の個体ごとのパラメータの学習に時間がかかるという問題点があった。
【0005】
本発明の目的は、ダブルナット予圧方式の送り駆動機構において、ボール螺子の個体ごとの摩擦補償量を短期間で高精度に推定できる数値制御装置、制御方法、及びプログラムを提供することである。
【課題を解決するための手段】
【0006】
請求項1の数値制御装置は、ボール螺子軸と該ボール螺子軸に外嵌するボールナットとを有し、該ボールナットに固定した移動体を移動する送り機構と、前記ボール螺子軸を回転駆動するモータと、前記モータの位置を検出する位置検出機構と、前記位置検出機構によって検出した前記モータの位置と、生成された位置指令とが一致するように速度指令を生成する速度生成部と、前記モータの速度を検出する速度検出部と、前記速度検出部が検出した速度と前記速度生成部が生成した前記速度指令とが一致するようにトルク指令を生成するトルク生成部と、前記モータの回転方向の反転に伴い前記移動体の移動方向が反転した位置からの移動距離に応じて発生する摩擦力に基づく摩擦補償量を出力する摩擦推定部と、前記摩擦推定部が出力した前記摩擦補償量に基づいて前記トルク指令を補正する補正部とを備えた数値制御装置において、前記摩擦推定部は、前記移動方向の反転前の前記摩擦補償量から前記移動距離に応じて立ち上がり所定値に収束する基底関数であって、前記立ち上がりの遅れと傾きが互いに異なるN個の基底関数に対して、N個の補償トルク係数を夫々乗じた結果の線形結合により前記摩擦補償量を推定する補償モデルを備えたことを特徴とする。
【0007】
上記数値制御装置は、補償モデルにより推定された摩擦補償量に基づきモータを駆動する。数値制御装置は、移動体の移動方向が反転した場合に発生する象限突起を抑制できる。補償モデルは、各基底関数に乗算する補償トルク係数を学習対象パラメータとしてボール螺子の個体ごとのばらつきに対して補償トルクを学習可能であり、学習対象パラメータに対して線形性を有する。このため、立ち上がり係数、及び遅れ量を学習対象パラメータとした学習対象パラメータに対して非線形の補償モデルを使用した場合に比して、短期間で補償モデルの補償トルク係数を特定可能である。従って、数値制御装置は、ボール螺子の個体ごとの摩擦補償量の推定に必要なパラメータを短期間で安定して学習できる。故に、数値制御装置は、ボール螺子の個体ごとの摩擦補償量を短期間で高精度に推定できる。
【0008】
請求項2の数値制御装置は、前記N個の補償トルク係数を変更した場合の偏差の変化の勾配を示すN個の変化勾配を解析する解析部と、現在の前記N個の補償トルク係数に基づく前記摩擦補償量に基づき前記移動体の移動動作を実行した場合に前記位置検出機構が検出した前記モータの位置と、位置指令信号が示す位置との偏差を取得する第一取得部と、前記解析部が解析した前記N個の変化勾配と、前記第一取得部が取得した前記偏差とに基づき、前記N個の補償トルク係数を補正する為のN個の要素を含むパラメータ更新ベクトルを演算する第一演算部と、前記第一演算部が演算した前記パラメータ更新ベクトルに基づき、前記N個の補償トルク係数を更新する第一更新部とを備えてもよい。数値制御装置は、移動動作を実行することで、短時間でN個の補償トルク係数を更新できる。また、数値制御装置は、更新した補償トルク係数に基づく摩擦補償量でモータを駆動することで、象限突起を更に抑制できる。
【0009】
請求項3の数値制御装置では、前記解析部は、前記N個の補償トルク係数を初期値に設定した際の前記摩擦補償量に基づき前記移動体の移動動作を実行した場合に前記位置検出機構が検出した前記移動体の位置と、前記位置指令信号との偏差を取得する第二取得部と、前記N個の補償トルク係数のうち、i番目(iは1~Nの整数)の補償トルク係数の前記初期値に所定の値を加算し、他の補償トルク係数を前記初期値に設定する第一設定部と、前記N個の補償トルク係数のうち前記第一設定部が加算した際の前記摩擦補償量に基づき前記移動体の移動動作を実行した場合に前記位置検出機構が検出した前記移動体の位置と、前記位置指令信号が示す位置とのi番目の偏差を取得する第三取得部と、前記第二取得部が取得した前記偏差と、前記第三取得部が取得した前記i番目の偏差とに基づき、i番目の変化勾配を演算する変化勾配演算部とを備え、前記変化勾配演算部は、前記第一設定部により設定されたN個の補償トルク係数ごとに、前記変化勾配を演算してもよい。数値制御装置は、N+1回の移動動作を実行するだけで、N個の補償トルク係数の更新に必要なN個の変化勾配を演算できる。
【0010】
請求項4の数値制御装置では、前記第三取得部が実行する移動動作は、前記第二取得部が実行する移動動作と同一の前記位置指令信号に基づく動作であってもよい。数値制御装置は、同一の位置指令信号に基づき移動動作を実行するので、演算結果の精度が高い。
【0011】
請求項5の数値制御装置では、前記位置指令信号は、前記移動体が直線状に往復移動する、又は、前記移動体が円弧状に移動する信号であってもよい。数値制御装置は、直線状又は円弧状の単純な軌跡で移動体を移動するだけで、N個の変化勾配を解析できる。
【0012】
請求項6の数値制御装置では、前記解析部は、単位ステップ入力に印加トルクを乗算したステップトルク指令を、前記トルク生成部が出力する前記トルク指令に加算した指令に基づき前記モータが駆動された場合の前記位置検出機構が検出した前記モータの位置と、前記位置指令信号が示す位置との偏差を取得する第四取得部と、前記第四取得部が取得した前記偏差に基づき、インパルス応答波形を取得する第五取得部と、前記N個の基底関数と、前記第五取得部が取得した前記インパルス応答波形とに基づき、前記N個の変化勾配を演算する変化勾配演算部とを備えてもよい。数値制御装置は、ステップトルク指令を入力した場合の偏差を一回取得するだけで、N個の変化勾配を解析できる。故に、数値制御装置は、1回の移動動作を実行するだけで、N個の補償トルク係数の更新に必要なN個の変化勾配を演算できる。
【0013】
請求項7の数値制御装置は、前記移動体を移動する指令を含む加工プログラムを実行する実行部を備え、前記変化勾配演算部は、前記実行部による前記移動体の移動に伴い、所定のサンプリング周期で前記N個の変化勾配を演算し、前記加工プログラムの実行中に演算した前記N個の変化勾配ごとに、前記パラメータ更新ベクトルを更新する第二更新部を備え、前記第一更新部は、前記実行部による前記加工プログラムの終了後、前記第二更新部により更新した前記パラメータ更新ベクトルに基づき、前記N個の補償トルク係数を更新してもよい。数値制御装置は、学習のために同一の位置指令信号に基づき移動動作を実行することなく、任意の加工プログラムを実行するだけで、N個の補償トルク係数を更新できる。故に、数値制御装置は、任意の加工プログラムを実行するだけで、加工プログラム実行時の環境温度による摩擦力の変動等に対応した摩擦補償量を推定できる。
【0014】
請求項8の数値制御装置は、前記N個の基底関数は、シグモイド関数、又は、tanh関数で定義してもよい。数値制御装置は、簡易な関数で補償モデルを定義できる。
【0015】
請求項9の制御方法は、ボール螺子軸と該ボール螺子軸に外嵌するボールナットとを有し、該ボールナットに固定した移動体を移動する送り機構と、前記ボール螺子軸を回転駆動するモータと、前記モータの位置を検出する位置検出機構とを備えた数値制御装置の制御方法であって前記位置検出機構によって検出した前記モータの位置と、生成された位置指令とが一致するように速度指令を生成する速度生成ステップと、前記モータの速度を検出する速度検出ステップと、前記速度検出ステップが検出した速度と前記速度生成ステップが生成した前記速度指令とが一致するようにトルク指令を生成するトルク生成ステップと、前記モータの回転方向の反転に伴い前記移動体の移動方向が反転した位置からの移動距離に応じて発生する摩擦力に基づく摩擦補償量を出力する摩擦推定ステップと、前記摩擦推定ステップが出力した前記摩擦補償量に基づいて前記トルク指令を補正する補正ステップとを備え、前記摩擦推定ステップは、前記移動方向の反転前の前記摩擦補償量から前記移動距離に応じて立ち上がり所定値に収束する基底関数であって、前記立ち上がりの遅れと傾きが互いに異なるN個の基底関数に対して、N個の補償トルク係数を夫々乗じた結果の線形結合により前記摩擦補償量を推定することを特徴とする。
【0016】
数値制御装置は上記ステップを実行することにより、請求項1に記載の数値制御装置と同じ効果を得ることができる。
【0017】
請求項10のプログラムは、ボール螺子軸と該ボール螺子軸に外嵌するボールナットとを有し、該ボールナットに固定した移動体を移動する送り機構と、前記ボール螺子軸を回転駆動するモータと、前記モータの位置を検出する位置検出機構とを備えた数値制御装置を制御するコンピュータに、前記位置検出機構によって検出した前記モータの位置と、生成された位置指令とが一致するように速度指令を生成する速度生成ステップと、前記モータの速度を検出する速度検出ステップと、前記速度検出ステップが検出した速度と前記速度生成ステップが生成した前記速度指令とが一致するようにトルク指令を生成するトルク生成ステップと、前記モータの回転方向の反転に伴い前記移動体の移動方向が反転した位置からの移動距離に応じて発生する摩擦力に基づく摩擦補償量を出力する摩擦推定ステップと、前記摩擦推定ステップが出力した前記摩擦補償量に基づいて前記トルク指令を補正する補正ステップとを実行させ、前記摩擦推定ステップは、前記移動方向の反転前の前記摩擦補償量から前記移動距離に応じて立ち上がり所定値に収束する基底関数であって、前記立ち上がりの遅れと傾きが互いに異なるN個の基底関数に対して、N個の補償トルク係数を夫々乗じた結果の線形結合により前記摩擦補償量を推定することを特徴とする。
【0018】
数値制御装置は上記ステップを実行することにより、請求項1に記載の数値制御装置と同じ効果を得ることができる。
【図面の簡単な説明】
【0019】
図1】工作機械20の構造の一部と数値制御装置10の電気的構成を示す図。
図2】数値制御装置10と送り機構の詳細な構成を示すブロック図。
図3】送り駆動機構56の断面図。
図4】送り駆動機構56の球47の接触状態を示す図。
図5】理想的な円弧軌跡と送り駆動機構56の実際の軌跡との誤差を拡大した図。
図6】送り駆動機構56のモータトルクと反転位置からの移動距離の関係を示したグラフ。
図7】送り駆動機構56のテーブル変位量と摩擦トルクの関係を示した図。
図8】摩擦補償器13の構成を示したブロック図。
図9】シグモイド関数型の基底関数fciを示す図。
図10】tanh関数型の基底関数fciを示す図。
図11】更新処理のフローチャート。
図12】第一変化勾配解析処理のフローチャート。
図13】学習動作における円弧指令と直線指令を示す図。
図14】補償トルク係数kを初期値に設定した場合の偏差の取得結果を示す図。
図15】i番目の補償トルク係数kのみ変更した場合の偏差の取得結果を示す図。
図16】偏差の変化勾配∇eを示す図。
図17】第二変化勾配解析処理のフローチャート。
図18】インパルス応答波形を取得する為のブロック図。
図19】ステップ応答の取得結果を示す図。
図20】インパルス応答波形の取得結果を示す図。
図21】偏差の変化勾配∇e~∇eの演算結果を示す図。
図22】学習動作を実行した場合の偏差eを示す図。
図23】学習回数に応じた二乗平均誤差の演算結果を示す図。
図24】更新した補償トルク係数kに基づき複数回学習動作を実行した場合の偏差eを示す図。
図25】リアルタイム処理を実行する為のブロック図。
図26】リアルタイム処理のフローチャート。
【発明を実施するための形態】
【0020】
以下、本発明の第一実施形態について図面を参照して説明する。図1に示す数値制御装置10は加工プログラムが指令する経路に従い工作機械20の軸移動を制御し、テーブル3に固定した加工物を切削する。数値制御装置10は、CPU31、ROM32、RAM33、及び記憶装置34を備える。CPU31は、工作機械20の制御を司る。ROM32は、工作機械20を制御する為の各種プログラムを記憶する。RAM33は、種々のデータを一時的に記憶する。記憶装置34は、例えばフラッシュメモリ等で構成し、種々のデータを記憶する。
【0021】
図1を参照して工作機械20のテーブル機構の一例について説明する。テーブル機構は基台1、中間テーブル50、テーブル3を備える。基台1は矩形状である。中間テーブル50は基台1上を移動する。テーブル3は中間テーブル50上を移動する。
【0022】
基台1は一対のリニアガイド6Aを有する。一対のリニアガイド6Aは中間テーブル50を一軸方向に案内する。ボール螺子軸4Aとナット(図示略)は一対のリニアガイド6Aの間に配置する。中間テーブル50はナットに固定する。中間テーブル50は上部に一対のリニアガイド6Bを有する。リニアガイド6Bはテーブル3を一軸方向と直交する方向に案内する。
【0023】
図2に示すように、テーブル3は下部にブロック51を備える。ブロック51はリニアガイド6Bのレール61を摺動する。一対の軸受7はボール螺子軸4Bを支持する。一対の軸受7は中間テーブル50に固定してある。軸受7は内部にベアリング8を有する。中間テーブル50は下端にブロック(図示略)を備える。ブロックはリニアガイド6Aのレール(図示略)を摺動する。
【0024】
一対の軸受(図示略)はボール螺子軸4Aを支持する。一対の軸受は基台1に固定してある。軸受は内部にベアリング(図示略)を有する。
【0025】
図1に示すように、基台1は上部にモータ2Aを支持する。モータ2Aの軸とボール螺子軸4Aはカップリング(図示外)で接続する。モータ2Aは軸部の周囲にオイルシール(図示外)を有する。
【0026】
図2に示すように、中間テーブル50は端部にモータ2Bを支持する。モータ2Bの軸とボール螺子軸4Bはカップリング9で接続する。モータ2Bは軸部の周囲にオイルシール52を有する。テーブル3は両端に固定カバー53を有する。シール部材55は可動カバー54のテーブル側端部とは反対側の端部に固定する。シール部材55はゴムで形成する。シール部材55は切粉等が固定カバー53と可動カバー54との間から入り込むのを防ぐ。
【0027】
送り駆動機構56はテーブル3を一軸方向に移動する。送り駆動機構56はボール螺子軸4Bとナット5を備える。中間テーブル50を一軸方向に移動する送り駆動機構56はテーブル3の送り駆動機構56と同じ構成である。テーブル3の送り機構は送り駆動機構56、リニアガイド6B、ブロック51、モータ2B、カップリング9、オイルシール52、可動カバー54、シール部材55、軸受7を少なくとも含む。
【0028】
図1に示すように、数値制御装置10はモータ2A、2Bに接続する。テーブル3はモータ2A、2Bの駆動により二軸方向に移動する。
【0029】
各ボール螺子軸4A、4Bと各ナット5はモータ2A、2Bの回転運動を二軸方向におけるテーブル3の直進運動に変換する。数値制御装置10はモータ2A、2Bを制御してテーブル3の位置、速度と加速度を制御する。
【0030】
図2に示すように、ロータリーエンコーダ60はモータ2A、2Bに取り付ける。図2はモータ2A、モータ2A側のロータリーエンコーダ60を図示していない。ロータリーエンコーダ60はモータ2A、2Bの位置を検出して、モータ2A、2Bの位置を位置検出信号として出力する。ロータリーエンコーダ60が出力する位置検出信号は、テーブル3の位置情報を含む。数値制御装置10はテーブル3の位置を、位置検出信号に基づくモータ2A、2Bの位置と、ボール螺子軸4A、4Bのピッチ(螺子山の間隔)とに基づいて算出する。
【0031】
上位コントローラ(例えばCPU31)は位置指令信号を位置制御器11に出力する。ロータリーエンコーダ60はモータ2A、2Bの位置検出信号を位置制御器11に出力する。位置制御器11は位置指令信号と位置検出信号が一致するように速度指令信号を生成して速度制御器12に出力する。微分器16は位置検出信号を速度検出信号に変換し速度制御器12に出力する。
【0032】
速度制御器12は速度指令信号と速度検出信号とが一致するようにトルク指令信号を生成して加算器14に出力する。摩擦補償器13は上位コントローラからの位置指令信号に基づき摩擦補償信号を生成して加算器14に出力する。摩擦補償信号はモータ2A、2Bの回転方向が反転する際に発生する摩擦力を補償する信号である。加算器14は速度制御器12からのトルク指令信号と摩擦補償器13からの摩擦補償信号とを加算する。加算器14は摩擦補償したトルク指令信号を電流制御増幅器15に出力する。電流制御増幅器15はトルク制御器として機能する。電流制御増幅器15は摩擦補償したトルク指令信号にできる限り忠実なトルクを発生するようにモータ2A、2Bの電流を制御する。減算器19は、ロータリーエンコーダ60が検出したモータ2A、2Bの位置と、位置指令信号が示す位置との偏差を演算する。偏差の演算結果は、テーブル3の理想的な位置と実際の位置との誤差に相当する。
【0033】
位置制御器11、速度制御器12、加算器14、電流制御増幅器15、微分器16、減算器19の構成と動作は周知である。故に本願発明に係る摩擦補償器13の構成と動作について原理を中心に説明する。
【0034】
送り駆動機構56は第一の摩擦源と第二の摩擦源とに夫々起因する摩擦力を有する。第一の摩擦源に起因する摩擦力はリニアガイド6A、6Bのブロック51の予圧、ボール螺子軸4A、4Bの各ナット5の予圧、ベアリング8の予圧である。送り駆動機構56としての剛性は予圧が高いほど上がり且つ摩擦力も大きくなる。第二の摩擦源に起因する摩擦力はオイルシール52、可動カバー54のシールの摺動抵抗である。摩擦力はシール性が上がると大きくなる。
【0035】
摩擦力はテーブル3の移動方向が反転する時急激に変化する。テーブル3の移動方向が反転する時はボール螺子軸4A、4Bの回転方向が反転する時である。数値制御装置10は直交する2つの軸を使って円弧補間運動(後述の円弧指令に基づく動作)を実行して円弧切削を行う。このとき、摩擦力の変化に制御系が対応できない場合がある。図1の上部のグラフは理想的な円弧軌跡と実際の軌跡との誤差を示す。楕円で囲んだ部分71~74は象限突起である。摩擦補償器13はテーブル3の移動方向反転時の摩擦力を高精度に推定して補償する。故に数値制御装置10は象限突起を極力小さくできる。
【0036】
象限突起は送り駆動機構56に発生する摩擦力の変化に起因する。象限突起はボール螺子軸4A、4Bの予圧方式により発生の仕方が異なる。ボール螺子軸4A、4Bの予圧方式はオーバーサイズボール予圧方式とダブルナット予圧方式である。以下の説明では、ダブルナット与圧方式について説明する。
【0037】
図3に示すように、ダブルナット予圧方式の送り駆動機構56はナット5として2つのナット45、46を備える。ナット45、46はボールナットである。間座48はナット45、46の間にある。図4(a)~図4(c)に示すように、球47はナット45、46の移動方向に応じて移動する。球47はナット45、46とボール螺子軸4A(4B)に対して二点又は三点接触で随時変化する。図4中の白抜き矢印は球47の回転方向を示す。
【0038】
図4(a)に示すように、ナット46は一方向に移動している。球47はナット46に一点、ボール螺子軸4A(4B)に二点で接触するので三点で接触する。図4(b)に示すように、ナット46は移動が反転する途中である。球47はナット46に一点、ボール螺子軸4A(4B)に一点で接触するので二点で接触する。故に三点接触に比べて摩擦は小さくなる。図4(c)に示すように、ナット46は移動方向が反転して反対方向に移動している。球47はナット46に二点、ボール螺子軸4A(4B)に一点で接触するので三点で接触する。故に摩擦は再び大きくなる。ダブルナット予圧方式の特徴は剛性が高い。故に大型の工作機械等はダブルナット予圧方式を採用する。
【0039】
ボール螺子軸4A、4Bの予圧方式が象限突起に及ぼす影響について説明する。送り駆動機構56を駆動制御する数値制御装置10を用いて円弧補間運動を行った場合の理想軌跡に対する誤差を調べた。図5は理想的な円弧軌跡と実際の軌跡との誤差を拡大した図である。送り速度は3m/min、指令半径は25mmである。一目盛りは5μmである。軌跡誤差は象限突起である。図5において、象限突起は0°、90°、180°、270°付近で生じている。X軸の移動方向は0°と180°で反転している。Y軸の移動方向は90°と270°で反転している。各反転位置付近における象限突起は摩擦力の変化に対するサーボ系の応答が円弧軌跡上に現れたものである。摩擦力は移動方向反転時の摩擦力である。
【0040】
図5に示すように、送り駆動機構56では象限突起は二山である。象限突起の一山目は象限が変わる時の摩擦の影響である。象限突起の二山目はボールがナットとボール螺子軸4A、4Bに対して二点接触から三点接触になる時に増加する摩擦の影響である。
【0041】
図6はボール螺子軸4A(4B)の反転位置からの移動距離とモータトルク〔Nm〕の関係のグラフである。図6に示すように、ダブルナット予圧方式では、モータトルクは反転後に僅かに上昇して一定になり、その後緩やかに上昇して再び一定となる。反転位置から球47が二点で接触している間、モータトルクは僅かに上昇し一定となる。球47は二点接触の状態から三点接触の状態に移り変わる。前述の場合、二点接触の状態と三点接触の状態とが混在する。故にモータトルクは緩やかに上昇する。その後、全ての球47は三点接触になる。故にモータトルクは最大値となり一定となる。
【0042】
図7は工作機械20の微小円弧動作のテーブル変位量と摩擦トルクの関係を示す。送り速度は5mm/min、指令半径は0.1mmである。微小円弧動作では摩擦力が速度と加速度に影響されない。図7に示すようにダブルナット予圧方式では、モータトルクは移動方向が反転した後所定の位置で緩やかな段差状に変化している。段差状の変化は象限突起を二山にする原因である。数値制御装置10はダブルナット予圧方式の摩擦特性に着目する。数値制御装置10は摩擦力又は摩擦トルクを高精度に推定することで二山の象限突起を補償できる。
【0043】
図8を参照して、摩擦補償器13の詳細な構成ついて説明する。摩擦補償器13は実位置推定部21、微分器22、符号反転検出部23、積分器24、摩擦特性推定部25、応答遅れ補償部30を備える。
【0044】
上位コントローラは位置指令信号を実位置推定部21に入力する。実位置推定部21はテーブル3の送り運動を行うサーボ制御系のモデルを用いる。実位置推定部21は位置指令信号に対応するテーブル3の実位置を推定して実位置信号を生成する。実位置推定部21は一次遅れ要素等で構成しても良い。微分器22は実位置推定部21に接続してある。微分器22は実位置信号を微分して速度信号として出力する。符号反転検出部23と積分器24は微分器22に接続してある。
【0045】
符号反転検出部23は速度信号の符号が反転することを検出する。符号反転検出部23はリセット信号を積分器24に出力する。積分器24は速度信号を積分して実位置信号を復元する。積分器24は符号反転検出部23が出力するリセット信号ごとに積分値を零にリセットする。積分器24はテーブル3が移動方向を反転する位置からの変位信号を生成する。
【0046】
摩擦特性推定部25は積分器24の出力端に接続する。摩擦特性推定部25は摩擦トルクに基づく摩擦補償量ft〔N・m〕を推定する。
【0047】
応答遅れ補償部30は摩擦特性推定部25の出力端に接続してある。応答遅れ補償部30は、摩擦特性推定部25が推定した摩擦補償量ftに基づき摩擦補償信号を生成する。応答遅れ補償部30は伝達関数の逆関数で構成する。伝達関数はトルク指令信号からモータ2A、2Bが実際に出力するトルクまでの特性をモデル化したものである。トルク指令信号は電流制御増幅器15(図2参照)に入力する。
【0048】
図9図10を参照して、摩擦補償量ftを推定する為の補償モデルについて説明する。図9は、シグモイド関数型の基底関数fciによる補償モデルを示す。シグモイド関数型の基底関数は、以下に示す式(1)~式(3)で定義する。変位量x'は、移動方向が反転した位置からのx軸方向における移動距離を示す。立ち上がり係数aは、移動方向の反転した後の立ち上がりを示す定数である。遅れ量bは、移動方向の反転後の立ち上がりの遅れを示す定数である。fbmiは、移動方向が反転する直前の基底関数fciの最終出力値を示す。基底関数fciでは、反転前の基底関数最終出力値fbmiを加算することで、移動方向が反転後に基底関数fciの出力値が不連続になることを抑制する。これらの定数をiごとに適宜設定することで、図9に示すシグモイド関数型の基底関数で定義するN個の基底関数fciを得る。iは、1~Nまでの正数であり、本実施形態ではNは9である。N個の基底関数fciは、立ち上がりの遅れと傾きが互いに異なる。N個の基底関数fc1~c9は、移動方向の反転前の基底関数最終出力値fbmiから移動距離に応じて立ち上がり所定値に収束する。
【数1】
【0049】
図10は、tanh関数型の基底関数fciによる補償モデルを示す。tanh型の基底関数fciは、以下に示す式(4)~式(6)により定義する。式(1)~式(3)の場合と同様に、立ち上がり係数a、遅れ量b、基底関数最終出力値fbmi等を設定することで、図10に示すtanh関数で定義するN個の基底関数fc1~fc9を得る。図9図10の基底関数fc1~fc9は夫々、概ね同じになる。作業者は、シグモイド関数型、又はtanh関数型の何れかを選択する。基底関数fc1~fc3をシグモイド関数型、基底関数fc4~fc9をtanh関数型のように組み合わせて用いてもよい。
【数2】
【0050】
摩擦特性推定部25による摩擦補償量ftの推定方法について説明する。摩擦補償器13が推定する摩擦補償量ftは、以下の式(7)の数式で推定する。式(7)によれば、摩擦補償量ftは、式(1)~式(3)又は式(4)~式(6)で示すN個の基底関数fciに対して、N個の補償トルク係数kを夫々乗じた結果の線形結合で求まる。本実施形態ではNは1~9までの正数である。摩擦特性推定部25は、式(7)を用いて、後述の学習動作を繰り返して補償トルク係数kを更新する。故に、推定する摩擦補償量ftの精度が向上する。
【数3】
【0051】
図11図24を参照して、補償トルク係数kを更新する為の更新処理について説明する。作業者は、工作機械20の設定を、補償トルク係数kを更新する為の更新モードに設定する。CPU31は、ROM32からプログラムを読み込んで実行する。プログラムの実行により、CPU31は更新処理を実行する。
【0052】
更新処理を実行した場合、CPU31は、偏差の変化勾配∇e~∇eの解析を行う為に変化勾配解析処理を実行する(S1)。偏差とは、位置指令信号が示す位置と、ロータリーエンコーダ60が示す位置との誤差を示す。変化勾配∇e~∇eとは偏差の変化の勾配を示す。変化勾配∇e~∇eの解析では、以下に説明する第一変化勾配解析処理と第二変化勾配解析処理の2つの手法の何れかを行う。これらの処理を実行することで、CPU31は、N個の補償トルク係数kを変更した場合の偏差の変化の勾配を示すN個の変化勾配∇eを解析可能となる。何れの手法で変化勾配∇eを取得するかは、作業者が適宜設定すればよい。
【0053】
図12を参照して、第一変化勾配解析処理について説明する。第一変化勾配解析処理を実行した場合、CPU31はiを1に設定する(S101)。iは1~Nの正数とする。CPU31は、N個の補償トルク係数k~kを、初期値(以下、補償トルク係数k10~kn0ともいう。)に設定する(S103)。nは、Nと同じ正数を示す。補償トルク係数k10~kn0は全て0に設定する。なお、初期値は0以外の他の値でもよいし、互いに異なる値でもよい。
【0054】
CPU31は学習動作を実行する(S105)。学習動作は、図13(A)に示す円弧指令、又は図13(B)に示す直線指令である。円弧指令は、上記の円弧補間運動であり、テーブル3が円弧状に移動する信号である。直線指令は、短軸反転動作であり、テーブル3が直線状に往復移動する。各指令を実行した場合において、時刻t0はサンプリングの開始時刻である。時刻trは、位置指令信号の移動方向が反転する時刻である。時刻teは、位置指令信号の移動方向の反転後のサンプリングの終了時刻である。なお、後に実行する学習動作でも、CPU31は位置指令信号としてS105で実行した動作と同じ動作を指令する。繰り返し実行する学習動作において、移動方向の時刻t0、時刻tr、時刻teを同じ時期にできる。
【0055】
CPU31は、N個の補償トルク係数kを初期値に設定した際の摩擦補償量ftに基づきテーブル3の学習動作を実行した場合にロータリーエンコーダ60が検出したモータ2A、2Bの位置と、位置指令信号との偏差ek0を取得する。(S107)。CPU31は、図14に示す偏差ek0を取得する。
【0056】
CPU31は、N個の補償トルク係数kのうち、i番目の補償トルク係数kにki0+hを設定する(S109)。所定の値hを加算したi番目の補償トルク係数k以外の補償トルク係数kは初期値となる。iが1の場合、1番目の補償トルク係数k10に、所定の値hを加算する。値hは、作業者が任意に設定してもよい。なお、他の補償トルク係数k20~kn0は、初期値0に設定する。
【0057】
CPU31は学習動作を実行する(S111)。CPU31は、S105で実行した位置指令信号と同じ信号(例えば円弧指令)で、テーブル3を移動する。CPU31は、S109の処理で設定した補償トルク係数kに基づいてテーブル3を移動した場合にロータリーエンコーダ60が検出したモータ2A、2Bの位置と、位置指令信号が示す位置とのi番目の偏差ekihを取得する(S113)。この場合、CPU31は、図15に示す偏差ekihを取得する。
【0058】
CPU31は、式(8)を用いて、取得した偏差ek0と、取得したi番目の偏差ekihとに基づき、i番目の変化勾配∇eを演算する(S115)。変化勾配∇eの演算では、S113の処理で取得した偏差ekihとS107の処理で取得した偏差ek0と所定の値hを使用する。CPU31は、例えば図16に示す変化勾配∇eを取得する。
【数4】
【0059】
CPU31は、補償トルク係数kの値をki0に戻して初期化する(S117)。例えば補償トルク係数k10~kn0は全て0となる。CPU31は、iに1をインクリメントする(S119)。CPU31は、iがnよりも大きいか否か判断する(S121)。iがnよりも小さいと判断した場合(S121:NO)、CPU31は、処理をS109に戻す。
【0060】
iを1から2に設定し、且つS121の処理でS109に戻った場合、CPU31は補償トルク係数k20に対して、所定の値hを加算する。2番目の補償トルク係数k2以外の補償トルク係数kは初期値、即ち0となる。なお、値h~hは同じ値でもよいし、互いに異なる値でもよい。CPU31は、S111~S115を実行して、2番目の変化勾配∇eを演算する。
【0061】
CPU31は、S109~S121の処理を繰り返すことで、N個の変化勾配∇eを取得する。CPU31は、図21に示す偏差の変化勾配∇e1~∇eを得る。iがnよりも大きいと判断した場合(S121:YES)、CPU31は、第一変化勾配解析手段を終了して、処理を更新処理に戻す。
【0062】
図17図21を参照して、第二変化勾配解析処理について説明する。第一変化勾配解析処理ではN回の学習動作を実行したが、第二変化勾配解析処理による手法は、学習動作の実行回数が1回で済む。つまり、第二変化勾配解析処理は、学習動作を1回だけ実行すれば、N個の変化勾配∇eを解析できる。
【0063】
CPU31は、ステップトルク指令Sを出力してステップ応答波形を取得する(S201)。図18に示すように、摩擦補償器13は、ステップトルク指令Sを出力する。ステップトルク指令Sは、単位ステップ入力に印加トルクを乗算した指令である。印加トルクは、例えばモータ2A、2Bの定格トルクである。加算器14は、速度制御器12からのトルク指令にステップトルク指令Sを加算する。電流制御増幅器15は、ステップトルク指令Sをトルク指令信号に加算したトルク指令に基づいてモータ2A、2Bを駆動する。減算器19は、ロータリーエンコーダ60が検出したモータ2A、2Bの位置と、位置指令信号が示す位置との偏差を取得する。CPU31は、ステップトルクを印加した時刻を時刻0として偏差を時系列データとして所定時間記憶し、図19に示すステップ応答波形を取得する。ステップ応答波形は、減算器19が出力した偏差の時系列データを印加トルクで除したものである。時系列データを記憶する時間はステップトルクを印加後偏差が十分0に収束する時間とする。
【0064】
CPU31は、インパルス応答波形を取得する(S203)。インパルス応答波形は、S201で取得した偏差に基づき微分器22が出力する時間微分演算結果である。CPU31は、例えば図20に示すインパルス応答波形を取得し、取得したインパルス応答波形を記憶装置34に記憶する。
【0065】
CPU31は学習動作を実行する(S205)。モータ2A、2Bは、円弧指令又は直線指令の位置指令信号により駆動する。CPU31は、学習動作を実行した場合の位置を示す位置指令の時系列データx[m](m=0、1、・・・M)(M:学習動作終了までの総サンプリングデータ数)を記憶装置34に記憶する(S207)。CPU31は、iに1を設定する(S209)。CPU31は、基底関数fciに、記憶装置34に記憶した位置指令の時系列データx[m]を代入し、fci[m]を演算する(S211)。
【0066】
CPU31は、式(9)を用いて、基底関数fciの出力値fci[m]と、演算したインパルス応答波形とに基づき、i番目の変化勾配∇eを演算する(S213)。g[j](j=0、1、・・・J)(J:インパルス応答の総サンプリングデータ数)は、S203で取得したインパルス応答波形を示す。i=1の場合、CPU31は、式(9)に、基底関数fc1とS203で取得したインパルス応答との畳み込み演算により、変化勾配∇eを演算する。
【数5】
【0067】
CPU31は、iに1をインクリメントする(S215)。CPU31は、iがnよりも大きいか否か判断する(S217)。iがnよりも小さいと判断した場合(S217:NO)、CPU31は、処理をS213に戻して、例えば2番目(i=2)の変化勾配∇e2を演算する。CPU31は、S213~S217を繰り返し実行して、N個の変化勾配∇e1~∇eを演算する。第二変化勾配演算処理では、第一変化勾配解析処理で得た変化勾配∇e~∇eと同様の結果を取得する(図21参照)。
【0068】
CPU31は、iがnよりも大きいと判断した場合(S217:YES)、CPU31は、第二変化勾配解析処理を終了して、処理を更新処理に戻す。
【0069】
更新処理において、CPU31は、補償トルク係数k~kを初期値に設定する(S3)。初期値は、作業者が任意に設定すればよい。補償トルク係数kの初期値は、全て1に設定してもよいし、第一変化勾配演算処理の設定と同様に全て0としてもよいし、最後に更新した補償トルク係数k~kに設定してもよい。CPU31は、現在の補償トルク係数k、即ち初期値の補償トルク係数kに基づく摩擦補償量ftに基づきテーブル3の学習動作を実行する(S5)。CPU31は、ロータリーエンコーダ60が検出したモータ2A、2Bの位置と、位置指令信号が示す位置との偏差eを取得する(S7)。例えば、CPU31は、図22に示す偏差eを取得する。
【0070】
CPU31は、N個の補償トルク係数kを更新する為のパラメータ更新ベクトルkを演算する(S9)。パラメータ更新ベクトルkは、補償トルク係数kの夫々に対応するN個の要素を含む。パラメータ更新ベクトルkの演算では、解析したN個の変化勾配∇eと、S7の処理で取得した偏差eとを使用する。パラメータ更新ベクトルkは、演算方法A、又は演算方法Bで演算可能である。演算方法Aは、式(10)を使用する。演算方法Aは、線形最小二乗法による手法である。演算方法Aは、変化勾配∇eの線形結合と偏差eの反転(-e)の二乗誤差が最小になる重みを求め、パラメータ更新ベクトルkを演算する。CPU31は、パラメータ更新ベクトルkを得る。
【数6】
【0071】
演算方法Bは、式(11)~式(13)を使用してパラメータ更新ベクトルkを演算する。演算方法Bは、逐次最小二乗法の適用により、パラメータ更新ベクトルkを演算する。演算方法Bは、演算方法Aで得た演算結果と同様の結果を得る。演算方法Bは、演算方法Aに比して、逆行列などの演算が不要なため、省メモリで実装が可能となる。
【数7】
【0072】
CPU31は、演算したパラメータ更新ベクトルkに基づき、N個の補償トルク係数k~kを更新する(S11)。CPU31は、式(14)を用いて、各補償トルク係数kを更新する。なお、式(14)では、パラメータ更新ベクトルkdiは、N個の要素として値kd1~kdNを有する。補償トルク係数kは、初期値の補償トルク係数k~kに対して、演算されたn個のパラメータ更新ベクトルkの個々の値kd1~kdNを夫々加算する。係数αは、通常1に設定してあるが、それ以外の値であってもよい。
【数8】
【0073】
CPU31は、学習を終了するか否か判断する(S13)。学習終了の判断条件として、CPU31は、学習をM回繰り返した場合に終了すると判断してもよい。また、CPU31は、式(15)を使用して平均二乗誤差MSEを演算し、前回の学習動作での平均二乗誤差MSEi-1と、今回の学習動作での平均二乗誤差MSEとの平均二乗誤差MSEi-1の差が所定値以下になった場合に終了してよい。所定値は0.01とした場合を想定する。図23に示すように、一回目の学習動作に基づく平均二乗誤差MSE1が0.14であり、二回目の学習動作に基づく平均二乗誤差MSEが0.12である。これらの差は、0.02となる。平均二乗誤差MSEの差が0.01よりも大きくなるので、CPU31は学習を終了しないと判断する。三回目の学習動作に基づく平均二乗誤差MSEは0.11である。従って、二回目と三回目の平均二乗誤差MSEの差は、0.01となる。平均二乗誤差MSEの差が所定値の0.01となるので、CPU31は学習を終了すると判断する。この場合、MSEの絶対値を考慮すればよい。絶対値を考慮しない場合には、平均二乗誤差MSEi-1の差が正から負となった場合に、二乗平均誤差MSEが大きくなったことを示すので、CPU31は、学習を終了すると判断してもよい。
【数9】
【0074】
学習を終了しないと判断した場合(S13:NO)、CPU31は、処理をS5に戻して、学習動作を実行する。S7の処理では、現在の補償トルク係数ki、即ち更新した補償トルク係数kに基づく偏差eが取得される。この偏差eと変化勾配∇eに基づき、CPU31は、パラメータ更新ベクトルkを演算し(S9)、補償トルク係数k~kを更新する(S11)。S5~S13の処理が6回繰り返すことで、CPU31は、図24に示す偏差eを取得する。図24の取得結果によれば、補償トルク係数kを更新して学習動作を繰り返すごとに、偏差eのピーク1st~6thが低くなる。CPU31は、学習動作を繰り返すことで更に象限突起を抑制できることが分かる。
【0075】
学習を終了すると判断した場合(S13:YES)、CPU31は、更新処理を終了する。
【0076】
以上説明したように、第一実施形態において、数値制御装置10の摩擦補償器13は、補償モデルを備える。補償モデルは、N個の基底関数fciに対して、N個の補償トルク係数kを夫々乗じた結果の線形結合により摩擦補償量ftを推定する。
【0077】
上記数値制御装置10は、補償モデルにより推定された摩擦補償量ftに基づきモータ2A、2Bを駆動する。数値制御装置10は、テーブル3の移動方向が反転した場合に発生する象限突起を抑制できる。補償モデルは、各基底関数fciに乗算する補償トルク係数kを学習対象パラメータとしてボール螺子の個体ごとのばらつきに対して補償トルクを学習可能であり、学習対象パラメータに対して線形性を有する。立ち上がり係数a、及び遅れ量bを学習対象パラメータとした学習対象パラメータに対して非線形の補償モデルを使用した場合に比して、短期間で補償モデルの補償トルク係数kを特定可能である。従って、数値制御装置10は、ボール螺子の個体ごとの摩擦補償量ftの推定に必要なパラメータを短期間で安定して学習できる。故に、数値制御装置10は、ボール螺子の個体ごとの摩擦補償量ftを短期間で高精度に推定できる。
【0078】
CPU31は、N個の補償トルク係数kを変更した場合の偏差の変化の勾配を示すN個の変化勾配∇eを解析する。CPU31は、現在のN個の補償トルク係数kに基づく摩擦補償量ftに基づきテーブル3の学習動作を実行した場合にロータリーエンコーダ60が検出したモータ2A、2Bの位置と、位置指令信号が示す位置との偏差eを取得する。CPU31は、解析したN個の変化勾配∇eと、取得した偏差eとに基づき、N個の補償トルク係数kを更新する為のN個の要素を含むパラメータ更新ベクトルkを取得する。CPU31は、演算したパラメータ更新ベクトルkに基づき、N個の補償トルク係数kを更新する。数値制御装置10は、学習動作を実行することで、短時間でN個の補償トルク係数kを更新できる。また、数値制御装置10は、更新した補償トルク係数kに基づく摩擦補償量ftでモータ2A、2Bを駆動することで、象限突起を更に抑制できる。
【0079】
CPU31は、N個の補償トルク係数kを初期値に設定した際の摩擦補償量ftに基づきテーブル3の学習動作を実行した場合にロータリーエンコーダ60が検出したモータ2A、2Bの位置と、位置指令信号との偏差ek0を取得する。CPU31は、N個の補償トルク係数kのうち、i番目(iは1~Nの整数)の補償トルク係数kの初期値に所定の値hを加算し、他の補償トルク係数kを初期値にする。CPU31は、N個の補償トルク係数kのうち加算した際の摩擦補償量ftに基づきテーブル3の学習動作を実行した場合にロータリーエンコーダ60が検出したモータ2A、2Bの位置と、位置指令信号が示す位置とのi番目の偏差ekihを取得する。CPU31は、取得した偏差ek0と、取得したi番目の偏差ekihとに基づき、i番目の変化勾配∇eを演算する。数値制御装置10は、N+1回の学習動作を実行するだけで、N個の補償トルク係数kの更新に必要なN個の変化勾配∇eを演算できる。
【0080】
S111の処理で実行する学習動作は、S105の処理で実行する学習動作と同一の位置指令信号に基づく動作である。数値制御装置10は、同一の位置指令信号に基づき学習動作を実行するので、演算結果の精度が高い。
【0081】
位置指令信号は、テーブル3が直線状に往復移動する、又は、テーブル3が円弧状に移動する信号である。数値制御装置10は、直線状又は円弧状の単純な軌跡でテーブル3を移動するだけで、N個の変化勾配∇eを解析できる。
【0082】
CPU31は、ステップトルク指令Sをトルク指令信号に加算した指令に基づきモータ2A、2Bが駆動された場合のロータリーエンコーダ60が検出したモータ2A、2Bの位置と、位置指令信号が示す位置との偏差を取得する。CPU31は、取得した偏差に基づき、インパルス応答波形を取得する。CPU31は、N個の基底関数fciと、演算したインパルス応答波形とに基づき、N個の変化勾配∇eを演算する。数値制御装置10は、ステップトルク指令Sを入力した場合の偏差を一回取得するだけで、N個の変化勾配∇eを解析できる。故に、数値制御装置10は、一回の移動動作を実行するだけで、N個の補償トルク係数kの更新に必要なN個の変化勾配∇eを演算できる。
【0083】
N個の基底関数fciは、シグモイド関数、又は、tanh関数で定義する。数値制御装置10は、シグモイド関数、又は、tanh関数の簡易な関数で補償モデルを定義できる。
【0084】
図25図26を参照して、第二実施形態のリアルタイム更新について説明する。第二実施形態の数値制御装置10は、加工プログラムの運転中にパラメータ更新ベクトルkを更新して、加工プログラムの終了時に補償トルク係数kを更新する。変化勾配∇eの演算では上記第二変化勾配解析処理を実行し、パラメータ更新ベクトルkの演算では、演算方法Bの式(11)~(13)を用いた逐次最小二乗法を適用する。数値制御装置10は、インパルス応答波形を予め記憶装置34に記憶することが前提となる。
【0085】
図25を参照して、リアルタイム更新を実行する為の数値制御装置10のブロック図を説明する。第一実施形態の数値制御装置10と同一の構成には同一の符号を付し、説明を省略する。第二実施形態の数値制御装置10は、摩擦補償学習器17を備える。摩擦補償学習器17は、摩擦補償器13、減算器19、及び記憶装置34に接続する。
【0086】
図26を参照してリアルタイム処理について説明する。作業者の設定により加工プログラムを指定し、且つ学習モードを指定した場合、CPU31は、ROM32を参照してプログラムを読み出して実行する。プログラムを実行すると、CPU31は、リアルタイム処理を実行する。CPU31は、テーブル3を移動する指令を含む加工プログラムに基づく動作を開始する。
【0087】
CPU31は、学習有効動作を実行中か否か判断する(S301)。CPU31は、加工プログラムの円弧指令又は直線指令を実行する場合、学習有効動作の実行中と判断する。学習有効動作の実行中ではないと判断した場合(S301:NO)、CPU31は、処理を戻して待機する。学習有効動作を実行中であると判断した場合(S301:YES)、CPU31は、所定のサンプリング周期で今周期の偏差eの取得を行う(S303)。今周期とは、現在の位置指令信号が示すテーブル3の現在位置と対応する。なお、サンプリング周期はユーザにより適宜設定すればよい。
【0088】
CPU31は、所定のサンプリング周期で今周期の基底関数fciの出力値を取得する(S305)。CPU31は、今周期の位置指令信号が示す位置x'が代入された基底関数fciの出力値を取得する。
【0089】
CPU31は、取得した基底関数fciの出力値と、記憶装置34に記憶したインパルス応答波形とを、式(9)に代入することで、今周期に対応する変化の変化勾配∇eを解析する(S307)。CPU31は、今周期に対応するN個の変化勾配∇eを得る。CPU31は、S307で解析した偏差の変化勾配∇eを、式(11)~式(13)に代入することで、パラメータ更新ベクトルkを更新する(S309)。
【0090】
CPU31は、加工プログラムが終了したか否か判断する(S311)。加工プログラムが終了していないと判断した場合(S311:NO)、CPU31は、次周期に対応するパラメータ更新ベクトルkを更新する為、処理をS303に戻す。CPU31は、S303~S309の処理を繰り返して、パラメータ更新ベクトルkを更新する。サンプリング周期mまでパラメータ更新ベクトルkの更新を繰り返したとき、加工プログラム開始からサンプリング周期mまでの変化勾配∇e[m]の線形結合と偏差e[m]の反転(-e[m])の二乗誤差(式(16)の演算結果)が最小になるパラメータ更新ベクトルkを演算した結果と同様の結果を得る。
【数10】
【0091】
加工プログラムが終了したと判断した場合(S311:YES)、CPU31は、式(14)を使用して、最後に更新したパラメータ更新ベクトルkに基づき、N個の補償トルク係数kを更新する(S313)。CPU31は、処理を終了する。
【0092】
以上説明したように、CPU31は、テーブル3を移動する指令を含む加工プログラムを実行する。CPU31は、テーブル3の移動に伴い、所定のサンプリング周期でN個の変化勾配∇eを演算する。CPU31は、加工プログラムの実行中に演算したN個の変化勾配∇eごとに、パラメータ更新ベクトルkを更新する。CPU31は、加工プログラムの終了後、更新したパラメータ更新ベクトルkに基づき、N個の補償トルク係数kを更新する。数値制御装置10は、学習のために同一の位置指令信号に基づき移動動作を実行することなく、任意の加工プログラムを実行するだけで、N個の補償トルク係数kを更新できる。数値制御装置10は、任意の加工プログラムを実行するだけで、加工プログラム実行時の環境温度による摩擦力の変動等に対応した摩擦補償量ftを推定できる。
【0093】
なお、本発明は上記実施形態に限らず種々の変更が可能である。上記実施形態はテーブル3を移動体とする。移動体は工具を掴んだ主軸を支持する機構としてもよい。機構は主軸ヘッドとコラムで構成してもよい。主軸ヘッドは主軸を回転可能に支持する。コラムは主軸ヘッドを上下又は前後に移動可能に支持する。補償モデルは、N=9の場合で説明したがこれ以外の値を設定してもよい。これに応じて、立ち上がり係数a、遅れ量b等のパラメータを適宜設定すればよい。
【0094】
ナット45、46は本発明のボールナットの一例である。テーブル3は本発明の移動体の一例である。ロータリーエンコーダ60は本発明の位置検出機構の一例である。位置制御器11は本発明の速度生成部の一例である。微分器16は本発明の速度検出部の一例である。速度制御器12は本発明のトルク生成部の一例である。摩擦補償器13は本発明の摩擦推定部の一例である。加算器14は本発明の補正部の一例である。S1の処理を実行するCPU31は本発明の解析部の一例である。S7の処理を実行するCPU31は本発明の第一取得部の一例である。S9の処理を実行するCPU31は本発明の第一演算部の一例である。S11の処理を実行するCPU31は本発明の第一更新部の一例である。S107の処理を実行するCPU31は本発明の第二取得部の一例である。S109の処理を実行するCPU31は本発明の第一設定部の一例である。S113の処理を実行するCPU31は本発明の第三取得部の一例である。S115の処理を実行するCPU31は本発明の変化勾配演算部の一例である。S201の処理を実行するCPU31は本発明の第四取得部の一例である。S203の処理を実行するCPU31は本発明の第五取得部の一例である。S213の処理を実行するCPU31は本発明の変化勾配演算部の一例である。S301の処理を実行するCPU31は本発明の実行部の一例である。S307の処理を実行するCPU31は本発明の変化勾配演算部の一例である。S309の処理を実行するCPU31は本発明の第二更新部の一例である。S313の処理を実行するCPU31は本発明の第一更新部の一例である。
【符号の説明】
【0095】
10 数値制御装置
12 速度制御器
13 摩擦補償器
25 摩擦特性推定部
ci 基底関数
ft 摩擦補償量
補償トルク係数
パラメータ更新ベクトル
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26