〔実施形態1〕
以下、本発明の実施形態1について、図1から図11に基づいて詳細に説明する。図中同一または相当部分には同一符号を付してその説明は繰返さない。本発明の一態様に係るコントローラ10(モデル予測制御装置)についての理解を容易にするため、先ず、コントローラ10を含む制御システム1の概要を、図2を用いて説明する。
(制御システムの概要)
図2は、コントローラ10を含む制御システム1の概要を示す図である。制御システム1は、周期性を有する外乱による制御量の乱れを迅速に抑制しようとするものである。制御システム1のコントローラ10は、外乱のモデルを用いずに外乱補償を行なうことができるため、幅広い機械および装置に対して、より簡単に外乱補償を適用できるという効果を奏する。コントローラ10は、サイクル(動作周期)のある動作の制御にも、サイクルのない、連続動作の制御にも適用することができる。コントローラ10が実行する外乱補償は、動作サイクルを用いないため、連続的な不規則動作が続くような動作の制御においても適用可能である。
コントローラ10は、例えばモデル予測制御(MPC、Model Predictive Control)などの予測機構を備える制御装置(上位コントローラ)である。コントローラ10は、予測誤差の変動に係る周期性の有無を判定し、周期性があると判定した場合、前記予測誤差の時間変化の周期である予測誤差変動周期について、1周期(1予測誤差変動周期)前の予測誤差データを用いて、制御量の予測を補正する。例えば、加工機械において、ツールおよびテーブルの加減速により励起される振動、周辺の他の機械から受ける震動など、周期性のある外乱が発生した場合に、コントローラ10は制御性能を維持することができる。コントローラ10は、また、制御性能を維持することにより、例えば製造物の品質を維持することができる。
制御システム1は、(1)例えばプログラマブルコントローラ(PLC、Programmable Logic Controller)であるコントローラ10と、(2)上位コントローラであるコントローラ10により制御される下位コントローラとしてのサーボドライバ20と、(3)サーボドライバ20によって制御される制御対象30(例えば、モータおよびメカ)と、を含んでいる。制御システム1において、コントローラ10が、位置/速度制御を実行し、予測制御によりサーボドライバ20へのトルク指令値を出力する。
コントローラ10は、モデル予測制御機構を備えるコントローラであって、サーボドライバ20に対し、操作量としてのトルク指令値を出力する。コントローラ10は、例えば、ユーザ等の外部から目標軌道データ(目標軌道)を受け付け(軌道生成)、受け付けた目標軌道データから制御周期ごとに指令値(指令位置)を生成する。コントローラ10は、また、制御対象30から、「制御対象30の出力である制御量(制御量の実測値)」を、フィードバック情報として取得する。すなわち、コントローラ10は、フィードバック速度およびフィードバック位置(フィードバック速度およびフィードバック位置の少なくとも一方)として、制御対象30が出力した速度および位置(速度および位置の少なくとも一方)を取得する。
コントローラ10は、制御対象30(およびサーボドライバ20)のモデルを内部モデルとして有し、この内部モデルを用いて、生成した指令位置と、「制御対象30の出力である制御量」と、に基づいて、サーボドライバ20に対し、操作量としてのトルク指令値を出力する。ここで、コントローラ10は、制御対象(つまり、制御対象30およびサーボドライバ20)のモデルを用いて制御量を予測するとともに、予測誤差を推定して外乱補償を行う。コントローラ10は、外乱パターンを制御量の次元のままで記憶して利用するため、外乱を推定するための演算を、制御量の算出のための演算とは別途用意する必要がない(ただし、より正確には、コントローラ10が記憶するのは、「外乱パターン」ではなく、外乱の情報を含む予測誤差パターンである)。したがって、コントローラ10は、制御量の算出のための演算に加えて、外乱を推定するための演算を別途行う装置に比べて演算負荷が小さく、高速制御周期が必要となるモーション制御においては、重要なメリットとなる。
サーボドライバ20は、コントローラ10からのトルク指令値に従って、制御対象30についてトルク制御を実行する。
(コントローラの概要)
これまで図2を用いて概要を説明してきた制御システム1に含まれるコントローラ10について、次に、その構成および処理の内容等を、図1等を用いて説明していく。図1を参照して詳細を説明する前に、コントローラ10についての理解を容易にするため、その概要について以下のように整理しておく。
コントローラ10(モデル予測制御装置)は、目標軌道から制御周期ごとに生成された指令値に対応する制御対象30の制御量を、制御対象30のモデルを用いて予測するモデル予測制御装置であって、制御対象30の制御量の実測値と前記モデルを用いて予測した制御量の予測値との誤差であるモデル予測誤差の時間変化について周期性の有無を判定する判定部106と、判定部106により前記モデル予測誤差の時間変化について周期性が有ると判定されると、前記モデル予測誤差の時間変化の周期である予測誤差変動周期について、或る予測誤差変動周期の1つ前の予測誤差変動周期における前記モデル予測誤差を用いて、「前記或る予測誤差変動周期における、前記モデルを用いて予測した制御量の予測値」を補正するための予測補正量(具体的には、後述する予測補正量Cd(n)、CH(n))を算出する補正量算出部107と、を備えている。
前記の構成によれば、補正量算出部107は、モデル予測誤差の時間変化について周期性が有ると判定されると、前記或る予測誤差変動周期の1つ前の予測誤差変動周期における前記モデル予測誤差を用いて、「前記或る予測誤差変動周期における、前記モデルを用いて予測した制御量の予測値」を補正するための予測補正量を算出する。詳細は後述するが、トルク算出部102は、補正量算出部107が算出した予測補正量を用いて、予測値(制御量の予測値)を補正する。
なお、トルク算出部102が、予測補正量Cd(n)、CH(n)を用いて補正する、「前記或る予測誤差変動周期における、前記モデルを用いて予測した制御量の予測値」は、「現在における予測値」と言い換えてもよい。
したがって、コントローラ10は、前記或る予測誤差変動周期における前記制御量の予測値が周期性を有する外乱によって乱れる場合、前記或る予測誤差変動周期の1つ前の予測誤差変動周期における前記モデル予測誤差を用いて、前記或る予測誤差変動周期における前記予測値を補正することができるという効果を奏する。コントローラ10は、外乱のモデルを必要とせずに、幅広い機械および装置に対して、より簡単に外乱補償を適用できるという効果を奏する。
コントローラ10は、連続する複数の前記制御周期の各々について、前記モデル予測誤差を算出する算出部104と、算出部104により各々算出された、連続する複数の前記モデル予測誤差の時間変化から、前記モデル予測誤差の極大値および極小値を検出する極値検出部105と、をさらに備え、判定部106は、極値検出部105により前記極大値および前記極小値の各々が検出された時刻から、前記モデル予測誤差の時間変化について周期性の有無を判定する。
前記の構成によれば、判定部106は、連続する複数の前記制御周期の各々について算出された前記モデル予測誤差の時間変化から検出された前記極大値および前記極小値の各々の検出時刻から、前記モデル予測誤差の時間変化について周期性の有無を判定する。
したがって、コントローラ10は、前記モデル予測誤差の時間変化の前記極大値および前記極小値の各々の検出時刻から、前記モデル予測誤差の時間変化について周期性が有ると判定すると、前記或る予測誤差変動周期の1つ前の予測誤差変動周期における前記モデル予測誤差を用いて、前記或る予測誤差変動周期における前記モデルを用いて予測した制御量の予測値を補正することができるという効果を奏する。
コントローラ10は、補正量算出部107の算出した予測補正量を用いて予測値(制御量の予測値)を補正し、補正後の予測値(補正後予測値)を用いて、制御量が指令値(指令位置)に追従するようにトルクを算出するトルク算出部102と、トルク算出部102により算出されたトルクを、サーボドライバ20(制御対象30にモーション制御を行う制御系)に、制御対象30のトルク制御に係る指令値として出力するトルク指令部103と、をさらに備えている。
前記の構成によれば、トルク算出部102は、補正量算出部107の算出した予測補正量を用いて補正した後の予測値(補正後予測値)を用いて、制御量が指令値(指令位置)に追従するようにトルクを算出し、トルク指令部103は、トルク算出部102により算出されたトルクを、サーボドライバ20に、制御対象30のトルク制御に係る指令値として出力する。
したがって、コントローラ10は、前記外乱による制御量の変化を操作量に変換するための演算処理を実行せずに、前記指令値に制御対象30の制御量が追従するためのトルクを、サーボドライバ20に出力することができるという効果を奏する。
(制御周期と予測誤差変動周期との関係について)
制御システム1における制御周期と予測誤差変動周期との関係(区別)について、以下の点に注意する必要がある。すなわち、制御システム1において、「制御周期」とは、コントローラ10が制御動作を繰り返し実行する周期のことであり、例えば、0.25ms、1msなどの非常に短い時間(周期)である。これに対して、「予測誤差変動周期」とは、コントローラ10(トルク算出部102)の算出した制御量の予測値と、制御対象30からのフィードバック制御量(制御対象30の制御量の実測値)と、の誤差であるモデル予測誤差の時間変化の時間(周期)である。モデル予測誤差の時間変化に周期性がある場合の周期(予測誤差変動周期)は、制御周期に比べて長く、例えば、50msとか、1sといったレンジである。
コントローラ10は、「制御周期」ごとに、制御対象30(およびサーボドライバ20)のモデルを用いて予測した制御量の予測値と、制御対象30からのフィードバック制御量(制御対象30の制御量の実測値)と、の誤差であるモデル予測誤差を算出する。コントローラ10は、連続する複数のモデル予測誤差を時系列に並べて、モデル予測誤差の時間変化について周期性の有無を判定する。コントローラ10は、モデル予測誤差の時間変化に周期性が有ると判定すると、モデル予測誤差の時間変化の周期である「予測誤差変動周期」を算出する。そして、コントローラ10は、前記「予測誤差変動周期」について、或る「予測誤差変動周期」の1つ前の「予測誤差変動周期」における前記モデル予測誤差を用いて、前記或る「予測誤差変動周期」における制御量の予測値を補正する。
なお、前記「或る予測誤差変動周期」は、指定できるものではなく、現時刻で確定しているものでもない。確定しているのは現在より前(過去)の変動周期(つまり、或る「予測誤差変動周期」の1つ前の「予測誤差変動周期」)だけである。コントローラ10は、「現在より前(過去)の変動周期」を用いて、現時刻において予測する、(未来の)制御量の予測値(つまり、或る「予測誤差変動周期」における制御量の予測値)を補正する。
(コントローラの詳細)
前述の通り、コントローラ10は、制御対象30(およびサーボドライバ20)のモデルを用いて予測した制御量の予測値と、制御対象30からのフィードバック制御量(制御対象30の制御量の実測値)と、の誤差であるモデル予測誤差の時間変化から、外乱の周期性の有無を判定する。そして、周期性が有ると判定すると、コントローラ10は、予測誤差変動周期(前記モデル予測誤差の時間変化の周期)について、或る予測誤差変動周期の1つ前の予測誤差変動周期における前記モデル予測誤差を用いて、前記或る予測誤差変動周期における前記モデルを用いて予測した制御量の予測値を補正する。以上に概要を説明したコントローラ10について、次に、その構成の詳細を、図1を用いて説明する。
なお、前述の通り、前記「或る予測誤差変動周期」は、指定できるものではなく、現時刻で確定しているものでもない。確定しているのは現在より前(過去)の変動周期(つまり、或る「予測誤差変動周期」の1つ前の「予測誤差変動周期」)だけである。コントローラ10は、或る「予測誤差変動周期」の1つ前の「予測誤差変動周期」(つまり、「現在より前(過去)の変動周期」)を用いて、或る「予測誤差変動周期」における制御量の予測値(つまり、「現時刻において予測する、(未来の)制御量の予測値」)を補正する。
図1は、本発明の実施形態1に係るコントローラ10の要部構成を示すブロック図である。図1に示すコントローラ10は、指令値生成部101と、トルク算出部102と、トルク指令部103と、算出部104と、極値検出部105と、判定部106と、補正量算出部107と、受付部108と、表示制御部109と、記憶部110と、を備える構成である。なお、記載の簡潔性を担保するため、本実施の形態に直接関係のない構成は、説明およびブロック図から省略している。ただし、実施の実情に則して、コントローラ10は、当該省略された構成を備えてもよい。上述の指令値生成部101、トルク算出部102、トルク指令部103、算出部104、極値検出部105、判定部106、補正量算出部107、受付部108、表示制御部109などの各機能ブロックは、例えば、CPU(central processing unit)などが、ROM(read only memory)、NVRAM(non-Volatile random access memory)等で実現された記憶装置(記憶部110)に記憶されているプログラムを不図示のRAM(random access memory)等に読み出して実行することで実現できる。以下、コントローラ10における各機能ブロックについて説明する。
指令値生成部101は、外部(例えば、ユーザ)から目標軌道データ(目標軌道)を受け付け(軌道生成)、受け付けた目標軌道データから制御周期ごとに指令値(指令位置)を生成する。指令値生成部101は、生成した指令値(指令位置)を、トルク算出部102に送信する。
トルク算出部102は、モデル予測制御(MPC、Model Predictive Control)を実行し、具体的には、制御対象30の内部モデルを用いて未来の状態を予測し、制御対象30の未来の出力(制御量の予測値)ができる限り目標値(指令値、つまり指令位置)に近づくように操作量を決定する。つまり、トルク算出部102は、前記内部モデルに基づいて未来の出力(制御量)の変化を予測し、出力と目標値とができるだけ近づくように入力(操作量)を決定するものである。
トルク算出部102は、制御対象30の挙動をモデル化した前記内部モデルを含み、前記内部モデルを用いて、各制御周期において制御対象30が出力する制御量を予測する。すなわち、トルク算出部102は、前記内部モデルを用いて、各制御周期における予測値(制御量の予測値)を算出する。トルク算出部102は、算出した予測値(予測制御量)を算出部104に通知する。
トルク算出部102が制御対象30の制御量の予測値を算出し、操作量を決定するために用いる前記内部モデルは、制御対象30のモデルだけでなく、サーボドライバ20のモデルを含んでいる。すなわち、トルク算出部102は、制御対象30およびサーボドライバ20の内部モデルを用いて、制御対象30の制御量の予測値を算出し、予測値が指令値(つまり、指令位置)に近づくように操作量を決定する。
ここで、コントローラ10から見た制御対象(すなわち、サーボドライバ20および制御対象30の全体。コントローラ出力からコントローラ入力までの範囲)の特性が、むだ時間を含む場合、コントローラ10による外乱推定の精度が低下し、むだ時間が大きくなると十分な補償効果が得られなくなるという問題がある。コントローラ10から見た制御対象がむだ時間を含む例としては、コントローラ10とサーボドライバ20などの出力機器とが通信で接続されるシステムを挙げることができる。コントローラ10から見れば、サーボドライバ20および制御対象30の全体が制御する対象(制御対象)となるため、前記内部モデルは、サーボドライバ20のモデルを含むのが基本である。ただし、サーボドライバ20によるトルク制御部の特性は、一般に、制御対象30の特性に比べて十分に高速であるため、サーボドライバ20の特性を無視してもよい(つまり、伝達関数を「1」と見なしてもよい)。
トルク算出部102は、また、補正量算出部107から、予測補正量(具体的には、予測補正量Cd(n)、CH(n))を取得する。トルク算出部102は、取得した予測補正量を用いて予測値(制御量の予測値)を補正し、補正後の予測値(補正後予測値)を用いて、制御量が指令値(指令位置)に追従するようにトルクを算出する。トルク算出部102は、算出したトルクを指令トルク(操作量)としてトルク指令部103に通知する。
トルク指令部103は、トルク算出部102から通知された指令トルク(操作量)を、サーボドライバ20(制御対象30にモーション制御を行う制御系)に、制御対象30のトルク制御に係る指令値として出力する。
算出部104は、制御周期毎に、或る制御周期における制御対象30の出力(制御量の実測値)と、前記或る制御周期における制御量の予測値(予測制御量)との誤差であるモデル予測誤差を算出する。すなわち、算出部104は、トルク算出部102から通知された「或る制御周期における制御量の予測値(予測制御量)」と、「前記或る制御周期における制御対象30の出力(制御量の実測値)」との誤差(前記或る制御周期におけるモデル予測誤差)を算出する。
算出部104は、制御周期毎に算出した「前記或る動作周期におけるモデル予測誤差」を、極値検出部105に通知する。算出部104は、記憶部110に誤差データ1101として格納してもよい。算出部104は、また、算出した「前記或る動作周期におけるモデル予測誤差」を、表示制御部109に通知する。
極値検出部105は、制御周期毎に、算出部104により算出されたモデル予測誤差(記憶部110に誤差データ1101として格納されたモデル予測誤差)の時間変化から、前記モデル予測誤差の(前記モデル予測誤差の時間変化の)極大値および極小値を検出する。すなわち、極値検出部105は、例えば、制御周期毎に算出部104から通知されるモデル予測誤差の時間変化を示す予測誤差変動波形を得る。そして、極値検出部105は、予測誤差変動波形において、モデル予測誤差の時間変化についての極値を検出する(確定する)。極値検出部105は、制御周期毎に、検出した極値を、当該極値が発生したタイミング(検出時刻)とともに、判定部106に通知する。極値検出部105は、検出した極値を、当該極値が発生したタイミング(検出時刻)とともに、記憶部110に極値データ1102として格納してもよい。
極値検出部105は、また、受付部108から、受付部108が受け付けたユーザ操作において指定された周期下限値を取得してもよい。極値検出部105は、例えば、予測誤差変動波形からモデル予測誤差の時間変化における極大値および極小値の少なくとも一方を確定する際に、直前に確定した極大値(極小値)との検出時刻の差(間隔)が周期下限値に満たない山(谷)は、極大値(極小値)ではないとみなしてもよい。すなわち、極値検出部105は、極大値(極小値)間の検出時刻差が周期下限値よりも短いときは、その極値を確定しない(つまり、極大値(極小値)とはみなさない)。
極値検出部105は、(1)複数の前記極大値の間の検出時刻の間隔が所定の周期よりも長くなるように、複数の前記極大値の各々を検出し、(2)複数の前記極小値の間の検出時刻の間隔が所定の周期よりも長くなるように、複数の前記極小値の各々を検出する。
判定部106は、制御周期毎に、制御対象30の制御量の実測値と前記モデルを用いて予測した制御量の予測値との誤差であるモデル予測誤差の時間変化について周期性の有無を判定する。判定部106による判定方法について、詳細は図5および図8等を用いて後述するが、判定部106は、例えば、極値検出部105により前記極大値および前記極小値の各々が検出された時刻から、前記モデル予測誤差の時間変化について周期性の有無を判定する。すなわち、判定部106は、記憶部110に格納されている極値データ1102を参照して、複数の極値の各々が発生したタイミング(検出時刻)の差(時間間隔)を算出する。そして、判定部106は、算出した複数の時間間隔が互いに近似しているかを判定することにより、モデル予測誤差の時間変化について周期性の有無を判定してもよい。
判定部106は、また、受付部108から、受付部108が受け付けたユーザ操作において指定された周期下限値を取得する。判定部106は、(1)極値検出部105により複数の極大値が検出されると、前記複数の極大値の間の検出時刻の間隔のうち、前記周期下限値よりも長い間隔を、前記周期性の有無を判定する際に用いる前記極大値が検出された時刻の間隔として用い、(2)極値検出部105により複数の極小値が検出されると、前記複数の極小値の間の検出時刻のうち、前記周期下限値よりも長い間隔を、前記周期性の有無を判定する際に用いる前記極小値が検出された時刻の間隔として用いる。
なお、算出部104、極値検出部105、および判定部106は、各々の処理を制御周期毎に実行する。すなわち、算出部104は制御周期毎に予測誤差を算出し、極値検出部105は制御周期毎に極値(極大値および極小値)を検出する。判定部106は制御周期毎に、算出部104が検出した極大値間(極小値間)の時間間隔(検出時刻の差)を用いて、モデル予測誤差の時間変化について周期性の有無を判定する。ただし、後述する表示制御部109は、前記モデル予測誤差の経時変化を、動作周期毎のバッチ処理によって、ユーザに表示してもよい。制御周期ごとに前記モデル予測誤差の経時変化を表示しようとしても、処理量が大きいため、表示制御部109は、動作周期毎に、前記モデル予測誤差の経時変化を表示してもよい。
補正量算出部107は、判定部106により前記モデル予測誤差の時間変化について周期性が有ると判定されると、前記モデル予測誤差の時間変化の周期である予測誤差変動周期について、或る予測誤差変動周期の1つ前の予測誤差変動周期における前記モデル予測誤差を用いて、予測補正量(具体的には、予測補正量Cd(n)、CH(n))を算出する。詳細は後述するが、補正量算出部107は、むだ時間d区間、および予測ホライズンH区間における、予測誤差PEの変化量を、予測補正量Cd(n)、CH(n)として算出する。そして、補正量算出部107は、算出した予測補正量を、トルク算出部102に通知する。
受付部108は、周期下限値を指定するユーザ操作を受け付ける。受付部108は、ユーザ操作において指定された周期下限値を、判定部106(および極値検出部105)に通知する。
受付部108は、また、判定部がモデル予測誤差の時間変化について周期性の有無を判定するのに用いる基準値(後述するEPS1の値)を指定するユーザ操作を受け付けてもよい。
受付部108は、さらに、極値検出部105が極値を検出する(確定する)のに用いる閾値を指定するユーザ操作を受け付けてもよい。極値検出部105は、例えば、予測誤差変動波形の山と谷とから極値(山である極大値と谷である極小値と)を検出する(確定する)のに際して、山と谷との差が、ユーザによって指定された閾値を超える場合にのみ、当該山(谷)を極大値(極小値)として確定するようにしてもよい。
表示制御部109は、前記モデル予測誤差の経時変化をユーザに表示する。表示制御部109は、例えば、算出部104から、算出部104が算出した前記「或る動作周期」におけるモデル予測誤差を取得して、取得したモデル予測誤差を利用して、前記モデル予測誤差の経時変化をユーザに表示してもよい。表示制御部109は、また、記憶部110に格納されている誤差データ1101を参照して、前記モデル予測誤差の経時変化をユーザに表示してもよい。
記憶部110は、コントローラ10が使用する各種データを格納する記憶装置である。なお、記憶部110は、コントローラ10が実行する(1)制御プログラム、(2)OSプログラム、(3)コントローラ10が有する各種機能を実行するためのアプリケーションプログラム、および、(4)該アプリケーションプログラムを実行するときに読み出す各種データを非一時的に記憶してもよい。上記の(1)〜(4)のデータは、例えば、ROM(read only memory)、フラッシュメモリ、EPROM(Erasable Programmable ROM)、EEPROM(登録商標)(Electrically EPROM)、HDD(Hard Disc Drive)等の不揮発性記憶装置に記憶される。
コントローラ10は、図示しない一時記憶部を備えていてもよい。一時記憶部は、コントローラ10が実行する各種処理の過程で、演算に使用するデータおよび演算結果等を一時的に記憶するいわゆるワーキングメモリであり、RAM(Random Access Memory)などの揮発性記憶装置で構成される。
どのデータをどの記憶装置に記憶するのかについては、コントローラ10の使用目的、利便性、コスト、または、物理的な制約などから適宜決定される。記憶部110はさらに、誤差データ1101と、極値データ1102とを格納している。
誤差データ1101は、算出部104が算出した前記「(或る動作周期における)モデル予測誤差」の情報であり、算出部104によって記憶部110に格納される。
極値データ1102は、極値検出部105によってモデル予測誤差の時間変化から検出されたモデル予測誤差の時間変化における極値についての情報であり、極値検出部105によって記憶部110に格納される。
(モデル予測制御について)
図3は、コントローラ10が実行するモデル予測制御の概要を説明するための図である。モデル予測制御は、制御対象(制御システム1においては、制御対象30(およびサーボドライバ20))のモデルを使って、参照軌道(制御システム1においては、目標軌道)上のターゲットポイントに制御量を一致させるための未来の操作量(制御システム1においては、サーボドライバ20に与えるトルク指令値)を決定し、この処理を毎周期繰り返すものである。
コントローラ10は、図3に示すように、現時刻nにおいて制御量PV(n)を測定し、現時刻の制御量PV(n)を始点として設定値SPに徐々に近づく破線で示す参照軌道を計算する。ここでは、簡単のために、制御ホライズンHuは「1」とする。
コントローラ10は、次に、内部モデル(制御対象30(およびサーボドライバ20)のモデル)を用いて、予測ホライズンH後の制御量PVの予測値PV(n+H)が参照軌道に一致するように、現在の時刻nの操作量MV(n)を決定する。
コントローラ10は、得られた操作量MV(n)を実際にサーボドライバ20に加え、次のサンプリング時刻n+1まではその値を保持する。
時刻n+1において制御量PV(n+1)が測定されると、コントローラ10は、改めて時刻t+1を現時刻とみなし、未来の予測値と参照軌道とが、予測ホライズンH後に一致するように操作量を決定し、次のサンプリング時刻までその操作量をサーボドライバ20に加える。以下、この手順を繰り返す。
次に、制御システム1におけるコントローラ10が実行する予測制御について、詳細に説明する。
コントローラ10は、上述のように内部モデルを用いて予測制御を行なうものであり、制御システム1において、内部モデルは、サンプリング時間で離散化した次式で表されるN次のARXモデルとしている。なお、制御対象(制御システム1においては、制御対象30(およびサーボドライバ20))のモデルは、ARXモデルに限らず、ステップ応答モデルやその他のモデルを用いてもよい。
ここで、
Y(n):時刻nの内部モデル出力値
U(n):時刻nの操作量
a1〜aN,b1〜bM:内部モデルの係数
N,M:内部モデル次数
である。
このARXモデルの決定は、例えば、制御対象(制御システム1においては、制御対象30(およびサーボドライバ20))に対する入出力の時系列データ、すなわち、操作量MVおよび制御量PVの時系列データを予め計測し、最小二乗法等を用いて行われる。
制御システム1においては、図3の破線で示される参照軌道として、現時刻nでの偏差を、時定数Trで指数関数的に0に近づける軌道を用いている。
すなわち、予測ホライズンH後の参照軌道上の目標値R(n+H)は、次式で求めることができる。
R(n+H)=SP(n+H)−λH*{SP(n)−PV(n)},
λ=exp(−Tc/Tr)
ここで、
PV(n):時刻nの制御量
SP(n),SP(n+H):時刻n,n+Hの目標値
R(n+H):予測ホライズンH先の参照軌道上の目標値
Tc:サンプリング時間
である。
したがって、現時刻nにおける制御量PV(n)からの増分、すなわち、予測ホライズンH後に、制御量PVを、参照軌道上の目標値R(n+H)に一致させるために必要な制御量PVの増分(偏差)ΔP(n+H)は、
となる。
次に、操作量MVの計算について説明する。
線形の制御対象の場合、モデル出力の挙動は、次の2つの加算により求めることができる。
(1)自由応答
現在の状態を初期値として、未来の操作量MVとして0が継続する場合の、予測ホライズンH後のモデル出力Yf(n+H)を、上述のARXモデルの式から繰り返し計算により求める。
(2)ステップ応答
初期状態を0として、MV=1(100%)のステップ応答における、時刻Hのモデル出力S(H)を求める。
MV=1(100%)ではなく、一般にMV(n)とすると、時刻Hのステップ応答出力はMV(n)*S(H)となる。
ここで、
MV(n):時刻nの操作量
Yf(n+H):予測ホライズンH後のモデルの自由応答出力
S(H):時刻Hのモデルのステップ応答出力
である。
前項より、時刻n以降、操作量MV(n)を継続した場合、時刻n+H時点のモデル出力(制御量の予測値)は次式となる。
Y(n+H)=Yf(n+H)+MV(n)*S(H)
ここで、Y(n)からの増分、すなわち、予測ホライズンH後に期待されるモデル出力の増分ΔM(n+H)は、
ΔM(n+H)=Yf(n+H)+MV(n)*S(H)−Y(n)
となる。
したがって、予測ホライズンH後に期待されるモデル出力の増分ΔM(n+H)が、制御量PVを予測ホライズンH後に参照軌道上の目標値とするための上述の制御量PVの増分ΔP(n+H)と等しくなるように操作量MVを求めればよい。すなわち、
ΔM(n+H)=ΔP(n+H)
となる操作量MVを求めればよい。
ここで、予測補正量CH(n)を考慮すると、
ΔM(n+H)+CH(n)=ΔP(n+H)
より、
MV(n)について解くと、
むだ時間を内部モデルに含めない場合は、前項のMVの算出式を、むだ時間dを考慮したものに修正する必要がある。
そこで、実際のプロセスデータについて、時刻nの代わりに時刻n+dとする。
ここで、PV(n+d)の予測値が必要となり、合理的な近似として通常は次の計算式で求める。
PV(n+d)=PV(n)+Y(n)−Y(n−d)
ここでも、むだ時間d間の予測補正量Cd(n)を考慮すると、
PV(n+d)=PV(n)+Y(n)−Y(n−d)+Cd(n)
より
なお、時刻nの操作量MV(n)を計算した後に、次回計算のために、次のモデル出力Y(n+1)を求めておく。
ただし、MV(n)は操作量リミット処理後の値を使用する。
(外乱補償処理の一例)
図4は、コントローラ10の実行する外乱補償処理の一例を示すフロー図である。図4に示すように、コントローラ10は、モデル予測誤差を記憶し(S10)、モデル予測誤差を時系列に並べたデータから、モデル予測誤差の極値を検出する(S20)。そして、コントローラ10は、検出した極値を用いてモデル予測誤差の時間変化について周期性の有無を判定する(S30)。コントローラ10は、モデル予測誤差の時間変化に周期性があると判定した場合(S30でYes)、1周期(1予測誤差変動周期)前の予測誤差を利用して予測値の補正を行って、補正した予測値を用いて予測制御を実行する(S40)。コントローラ10は、モデル予測誤差の時間変化に周期性がないと判定した場合(S30でNo)、予測値の補正をせずに、予測制御を実行する(S50)。以下、詳細を説明していく。
なお、以下の説明においては、「PE(n)」は「サイクル内時刻nの予測誤差」を意味し、「PV(n)」は「サイクル内時刻nの制御量(制御対象30が出力する制御量の実測値。例えば、フィードバック位置)」を意味している。また、「Y(n−d)」は「時刻(n−d)におけるモデル予測値(トルク算出部102が、制御対象(つまり、制御対象30およびサーボドライバ20)の挙動をモデル化した内部モデルを用いて算出したサイクル内時刻(n−d)における制御量の予測値)」を意味し、「d」は「むだ時間」を意味している。むだ時間dは、コントローラ10の制御周期の整数倍である。
算出部104は、制御周期毎に、1サイクル分の予測誤差データを算出し、算出したモデル予測誤差を、極値検出部105に通知するとともに、記憶部110に誤差データ1101として格納する(S10)。算出部104は、以下の式によりモデル予測誤差PE(n)を算出し、算出したモデル予測誤差PE(n)を、極値検出部105に通知するとともに、記憶部110に誤差データ1101として格納する。
PE(n)=PV(n)−Y(n−d)
極値検出部105は、制御周期毎に、算出部104により各々算出された、連続する複数の前記モデル予測誤差の時間変化から、前記モデル予測誤差の極大値および極小値を検出する。すなわち、極値検出部105は、例えば、制御周期毎に算出部104から通知されるモデル予測誤差の時間変化を示す曲線(直線)から、モデル予測誤差の極大値および極小値を、制御周期毎に検出する。そして、極値検出部105は、制御周期毎に、検出した極値(極大値および極小値)の値を、検出した時刻(検出時刻)と共に判定部106に通知する。極値検出部105は、検出した極値を、当該極値が発生したタイミング(検出時刻)とともに、記憶部110に極値データ1102として格納してもよい(S20)。
判定部106は、制御周期毎に、極値検出部105によって複数の極値が検出されたら、極値間の検出時刻の差(検出時刻差)を算出して、周期性の有無を判断する(S30)。判定部106がモデル予測誤差の時間変化について周期性があると判断した場合(S30でYes)、補正量算出部107は、現在より前(過去)の変動周期(つまり、或る「予測誤差変動周期」の1つ前の「予測誤差変動周期」)の予測誤差を用いて、予測補正量を算出する。ここで特に、補正量算出部107は、「現時刻において予測する、(未来の)制御量の予測値(つまり、或る『予測誤差変動周期』における制御量の予測値)」を補正するための予測補正量Cd(n)、CH(n)を算出する。
そして、トルク算出部102は、補正量算出部107の算出した予測補正量Cd(n)、CH(n)を用いて予測値(制御量の予測値)を補正し、補正後の予測値(補正後予測値)を用いて、制御量が指令値(指令位置)に追従するようにトルクを算出する。ここで特に、トルク算出部102は、予測補正量Cd(n)、CH(n)を用いて、「或る予測誤差変動周期における制御量の予測値」を、つまり、「現在における予測値」を補正する。トルク算出部102は、補正後の「或る予測誤差変動周期における制御量の予測値」を用いて、制御量が指令値(指令位置)に追従するようにトルクを算出する。トルク算出部102は、制御量が指令値に追従するのに必要なトルクを、内部モデルを用いて算出する。トルク指令部103は、トルク算出部102が算出したトルクを、指令トルク(操作量)として、サーボドライバ20に出力する(S40)。
判定部106がモデル予測誤差の時間変化について周期性がないと判断した場合(S30でNo)、補正量算出部107は予測値を補正するための予測補正量Cd(n)、CH(n)を算出しない。そして、トルク算出部102は、補正していない予測値(制御量の予測値)を用いて、制御量が指令値(指令位置)に追従するように、内部モデルを用いてトルクを算出する。トルク指令部103は、トルク算出部102が算出したトルクを、指令トルク(操作量)として、サーボドライバ20に出力する(S50)。
図4を参照して説明してきたコントローラ10の実行する処理(制御方法)は、以下のように整理することができる。すなわち、コントローラ10の実行する処理(制御方法)は、目標軌道から制御周期ごとに生成された指令値に対応する制御対象30の制御量を、制御対象30(およびサーボドライバ20)のモデルを用いて予測するモデル予測制御装置の制御方法であって、制御対象30の制御量の実測値と前記モデルを用いて予測した制御量の予測値との誤差であるモデル予測誤差の時間変化について周期性の有無を判定する判定ステップ(S30)と、前記判定ステップにて前記モデル予測誤差の時間変化について周期性が有ると判定すると、前記モデル予測誤差の時間変化の周期である予測誤差変動周期について、或る予測誤差変動周期の1つ前の予測誤差変動周期における前記モデル予測誤差を用いて、前記或る予測誤差変動周期における前記モデルを用いて予測した制御量の予測値を補正する予測値補正ステップ(S40)と、を含んでいる。
前記の制御方法によれば、前記予測値補正ステップは、モデル予測誤差の時間変化について周期性が有ると判定されると、前記或る予測誤差変動周期の1つ前の予測誤差変動周期における前記モデル予測誤差を用いて、前記或る予測誤差変動周期における前記モデルを用いて予測した制御量の予測値を補正する。
なお、予測値補正ステップ(40)が、或る予測誤差変動周期の1つ前の予測誤差変動周期における前記モデル予測誤差を用いて補正する、「前記或る予測誤差変動周期における前記モデルを用いて予測した制御量の予測値」は、「現在における予測値」と言い換えてもよい。
したがって、前記制御方法は、前記或る予測誤差変動周期における前記制御量の予測値が周期性を有する外乱によって乱れる場合、前記或る予測誤差変動周期の1つ前の予測誤差変動周期における前記モデル予測誤差を用いて、前記或る予測誤差変動周期における前記予測値を補正することができるという効果を奏する。前記制御方法は、外乱のモデルを必要とせずに、幅広い機械および装置に対して、より簡単に外乱補償を適用できるという効果を奏する。
(周期性の判定方法−予測誤差の極値検出と記憶)
図5は、コントローラ10がモデル予測誤差の時間変化について周期性の有無を判定する方法を説明するための図である。図4を用いて説明したように、算出部104は制御周期毎にモデル予測誤差をチェックし(算出し)、算出したモデル予測誤差を記憶部110に誤差データ1101として格納する。そして、極値検出部105は、算出部104により算出されたモデル予測誤差を時系列に並べ、モデル予測誤差の時間変化から、モデル予測誤差の極大値および極小値を検出する。
ここで、図5の中段に例示している「モデル予測誤差」は、算出部104が算出した(記憶部110に誤差データ1101として格納されている)モデル予測誤差を時系列に並べた曲線(直線)を示している。なお、以下の説明においては、「モデル予測誤差を時系列に並べた曲線(直線)」を、「予測誤差変動波形」とも称する。
極値検出部105は、図5の中段に例示している「モデル予測誤差」の曲線(予測誤差変動波形)から、丸で囲んだ極大値および極小値を順に確定していく。そして、極値検出部105は、確定した極値の情報として、「P(j):j番目の極値」および「Ptime(j):j番目の極値の出現時刻(検出時刻)」を、極値データ1102として記憶部110に格納する。
極値検出部105は、図5の中段に例示している「モデル予測誤差」の曲線(予測誤差変動波形)において、極大値と極小値とを交互に確定して行く。ここで、判定部106は、極値検出部105が、極大値と極小値とを合計4以上確定すれば、次の要領で周期性の有無を判定する。すなわち、極値検出部105が最後に確定した極値がP(k)として、次の条件を満たす場合に、判定部106は、モデル予測誤差の時間変化について、周期性ありと判定する。
ここで、EPS1は、「0」〜「1」の範囲で予め決めておけばよい。例えば、「EPS1=0.2」などに設定しておく。EPS1の値を「1」に近い値に設定しておくほど、判定部106による「モデル予測誤差の時間変化に係る周期性の有無の判定」は甘くなる。なお、EPS1は、ユーザが「0」〜「1」の範囲で設定することができるようにしておいてもよい。
すなわち、コントローラ10において、判定部106は、極値検出部105により複数の前記極大値の各々が検出された時刻の間隔と、極値検出部105により複数の前記極小値の各々が検出された時刻の間隔との差に基づいて、前記モデル予測誤差の時間変化について周期性の有無を判定する。
前記の構成によれば、判定部106は、極値検出部105により複数の前記極大値の各々が検出された時刻の間隔と、極値検出部105により複数の前記極小値の各々が検出された時刻の間隔との差に基づいて、前記モデル予測誤差の時間変化について周期性の有無を判定する。
したがって、コントローラ10は、複数の前記極大値の各々が検出された時刻の間隔と、複数の前記極小値の各々が検出された時刻の間隔との差との差に基づいて、前記モデル予測誤差の時間変化について周期性の有無を判定し、前記周期性が有ると判定すると、前記或る予測誤差変動周期の1つ前の予測誤差変動周期における前記モデル予測誤差を用いて、前記或る予測誤差変動周期における前記モデルを用いて予測した制御量の予測値を補正することができるという効果を奏する。
例えば、判定部106は、極値検出部105により複数の前記極大値の各々が検出された時刻の間隔と、極値検出部105により複数の前記極小値の各々が検出された時刻の間隔との差が所定の値(前述のEPS1)よりも小さいと、前記モデル予測誤差の時間変化について周期性が有ると判定する。
したがって、コントローラ10は、複数の前記極大値の各々が検出された時刻の間隔と、複数の前記極小値の各々が検出された時刻の間隔との差が所定の値よりも小さいと、前記モデル予測誤差の時間変化について周期性が有ると判定し、前記或る予測誤差変動周期の1つ前の予測誤差変動周期における前記モデル予測誤差を用いて、前記或る予測誤差変動周期における前記モデルを用いて予測した制御量の予測値を補正することができるという効果を奏する。
なお、前述の通り、EPS1は、ユーザが「0」〜「1」の範囲で設定できるようにしておいてもよく、EPS1の値を「1」に近い値に設定しておくほど、判定部106による「モデル予測誤差の時間変化に係る周期性の有無の判定」は甘くなる。
また、上述の例では、判定部106が、
を、
で割って、モデル予測誤差の時間変化について、周期性の有無を判定する例を説明した。
しかしながら、判定部106が、モデル予測誤差の時間変化の周期性の有無を判定するのに、
を、
で割ることは必須ではない。
判定部106は、極値検出部105により複数の前記極大値の各々が検出された時刻の間隔と、極値検出部105により複数の前記極小値の各々が検出された時刻の間隔との差に基づいて、前記モデル予測誤差の時間変化について周期性の有無を判定すればよい。すなわち、判定部106は、
がEPS1よりも小さい(つまり、「0」に近い)場合に、モデル予測誤差の時間変化に周期性があると判定してもよい。
さらに、上述の例では、極値検出部105が、予測誤差変動波形(モデル予測誤差を時系列に並べた曲線)から、極大値と極小値とを各々2つずつ検出し、判定部106が、2つの極大値の各々が検出された時刻の間隔と、2つの極小値の各々が検出された時刻の間隔との差に基づいて、モデル予測誤差の時間変化について周期性の有無を判定していた。
しかしながら、極値検出部105が予測誤差変動波形から極値を3つ検出し、判定部106が、隣り合う2つの極値の各々が検出された時刻の間隔を求め、最初の間隔と次の間隔との差に基づいて、モデル予測誤差の時間変化について周期性の有無を判定してもよい。すなわち、1番目の極値(例えば、極大値)が検出された時刻と2番目の極値(例えば、極小値)が検出された時刻との間隔(最初の間隔)と、2番目の極値(例えば、極小値)が検出された時刻と3番目の極値(例えば、極大値)が検出された時刻との間隔(次の間隔)との差に基づいて、判定部106は、モデル予測誤差の時間変化について周期性の有無を判定してもよい。
また、図5における極値の検出において、計測ノイズによる誤検出を防ぎ、また、静止摩擦による停止状態での微小な振動を誤検出することを防ぐために、極値検出部105は、極大値と極小値との差が或る閾値を超える場合にのみ極値を確定するようにしてもよい。すなわち、コントローラ10において、極値検出部105は、前記連続する複数の前記モデル予測誤差の時間変化における前記モデル予測誤差の極大値および極小値のうち、前記極大値と前記極小値との差が所定値よりも大きな前記極大値および前記極小値のみを検出する。
前記の構成によれば、極値検出部105は、前記連続する複数の前記モデル予測誤差の時間変化における前記モデル予測誤差の極大値および極小値のうち、前記極大値と前記極小値との差が所定値よりも大きな前記極大値および前記極小値のみを検出する。
ここで、前記モデル予測誤差は、算出部104により、制御対象30の制御量の実測値と前記モデルを用いて予測した制御量の予測値との誤差として算出されるのであり、前記実測値は計測ノイズを含み得る。また、例えば静止摩擦による停止状態での微小な振動が、前記実測値に影響し得る。つまり、算出部104により算出される前記モデル予測誤差は、前記実測値の含み得る計測ノイズ等に影響を受け得る。
極値検出部105は、前記連続する複数の前記モデル予測誤差の時間変化における前記モデル予測誤差の極大値および極小値のうち、前記極大値と前記極小値との差が所定値よりも大きな前記極大値および前記極小値のみを検出することにより、前記計測ノイズ等に影響された前記モデル予測誤差を誤って極値(極大値または極小値)として検出してしまうことを防ぐことができる。
したがって、コントローラ10は、高精度で検出した極値の検出時刻を用いて、前記モデル予測誤差の時間変化について周期性の有無を判定することができるという効果を奏する。
(予測値の補正方法−1周期前の予測誤差を使用して予測を補正)
図6は、コントローラ10が予測値を補正する方法を説明するための図である。判定部106が、モデル予測誤差の時間変化について周期性ありと判定した場合、補正量算出部107は、以下に示す方法により予測補正量を算出する。
補正量算出部107は、先ず、時刻n時点で、最後に確定した極値時刻から現時刻までの経過時間である経過時間「n−Ptime(k)」を求める。
補正量算出部107は、次に、現時刻から1周期前の時刻を次式で求め、これを予測の起点とする。すなわち、
Ptime(k−2)+n−Ptime(k)
そして、補正量算出部107は、上の式から求めた時刻から、むだ時間d区間、および予測ホライズンH区間における、予測誤差の変化量を、予測補正量Cd(n)、CH(n)として求める。すなわち、
なお、前述の通り、「PE(n)」は「時刻nの予測誤差」を意味しており、算出部104は、以下の式によりモデル予測誤差PE(n)を算出し、算出したモデル予測誤差PE(n)を記憶部110に誤差データ1101として格納している。
PE(n)=PV(n)−Y(n−d)
(外乱補償の効果の実証)
コントローラ10は、制御対象30の制御量の実測値と、制御対象30(およびサーボドライバ20)のモデルを用いて予測した制御量の予測値との誤差であるモデル予測誤差の時間変化について周期性の有無を判定する。そして、モデル予測誤差の時間変化について周期性が有ると判定すると、コントローラ10は、予測誤差変動周期について、或る予測誤差変動周期の1つ前の予測誤差変動周期における前記モデル予測誤差を用いて、前記或る予測誤差変動周期における前記モデルを用いて予測した制御量の予測値を補正する。コントローラ10が実行する上記外乱補償処理の奏する効果について、以下、「単純な(一般的な)外乱」と「複雑な外乱」の各々について、説明していく。
なお、「単純な(一般的な)外乱」とは、例えば、その大きさの時間変化を示す変動波形(予測誤差変動波形)が1つの周期しかもたない外乱をいう。また、「複雑な外乱」とは、例えば、その大きさの時間変化を示す変動波形(予測誤差変動波形)が複数の周期を持つような外乱をいう。
(単純な外乱の補償)
図7は、コントローラ10が外乱補償処理を実行した場合の効果を説明するための図である。すなわち、図7に示す例は、「100msで60mm移動し、その後100ms間停止する」目標軌道データ(目標軌道)の制御に対し、「最大振幅10%、周波数100Hzの正弦波状の外乱」を印加した場合について、コントローラ10が外乱補償処理を実行した場合の効果を説明するための図である。
図7に示すように、時刻40ms辺りで、コントローラ10が周期性外乱補償機能を実行し、時刻40ms以降の位置偏差は小さく抑制できている。すなわち、時刻40ms以降は、前記外乱の制御への影響は抑制されている。例えば、時刻40ms以降における位置偏差は、時刻40msよりも前における位置偏差と異なり、ほとんど「0」で推移している。また、時刻40ms以降におけるトルクは、時刻40msよりも前におけるトルクに比べて変化が穏やかなものとなっており、時刻40msよりも前におけるような乱高下が無くなっている。つまり、コントローラ10は、外乱に周期性があると判定すると、外乱の周期(つまり、予測誤差変動周期)について、現在より前(過去)において算出したモデル予測誤差を用いて、現在(現時刻)の制御量予測値を補正することで、前記外乱の制御への影響を抑制している。
ここで、位置偏差および位置の振動波形の少なくとも一方を用いて外乱の周期性を判断する方法では、外乱補償が働き出すと、周期性の正しい判定ができなくなる。外乱補償によって外乱が補償され、つまり、位置偏差および位置の振動波形が外乱補償によって変形されるため、外乱を(外乱の周期性を)正確に把握することができなくなるからである。
これに対して、コントローラ10においては、コントローラ10が外乱補償によって位置偏差の振動を抑制している間も、予測誤差には外乱の振動波形が残る。したがって、コントローラ10は、継続的に外乱を補償することができる。コントローラ10は、予測誤差を用いて外乱の周期性を判断するので、外乱補償を実行した後であっても、予測誤差において外乱の振動波形を検出することができるので、コントローラ10は、外乱の周期性を正確に判断することができるという効果を奏する。
(複雑な外乱の補償)
図7に示す例において、コントローラ10は、予測誤差変動波形が1つの周期しかもたない「単純な(一般的な)外乱」を補償していた。これに対し、予測誤差変動波形が複数の周期を持つ「複雑な外乱」を補償する際には、コントローラ10は、周期下限(値)を利用することにより、モデル予測誤差の時間変化の周期である予測誤差変動周期を正確に把握することができる。以下、図8および図9を用いて説明していく。
図8は、コントローラ10が周期下限値を用いてモデル予測誤差の周期性の有無を判定する、「複雑な外乱」を説明するための図である。図7に例示した「単純な(一般的な)外乱」の変動波形(予測誤差変動波形)が単一周期であったのに対して、図8に例示する「複雑な外乱」の変動波形(予測誤差変動波形)は、複数の周期を持っている。
図8において、捉えたいのは周期(A)であり、周期(B)は無視しなければならない。そこで、周期(B)よりも長く、周期(A)よりも短い時間を、周期下限値として設定することで、コントローラ10において、判定部106は、周期(B)を無視することができる。例えば、極値検出部105は、予測誤差変動波形からモデル予測誤差の時間変化における極大値および極小値の少なくとも一方を確定する際に、直前に確定した極大値(極小値)との時間差が周期下限値に満たないものは、極小値(極大値)ではないとみなす。すなわち、周期下限値を設定し、極値検出部105は、極大値(極小値)間の検出時刻の差が周期下限値よりも短いときは、その極値を確定しない(つまり、極大値(極小値)とはみなさない)。極値検出部105は、(1)複数の前記極大値の間の検出時刻の間隔が周期下限値よりも長くなるように、複数の前記極大値の各々を検出し、(2)複数の前記極小値の間の検出時刻の間隔が周期下限値よりも長くなるように、複数の前記極小値の各々を検出する。
判定部106は、検出時刻の差が周期下限値以上である複数の前記極大値(極小値)を用いて(より正確には、複数の前記極大値(極小値)の検出時刻の間隔を用いて)、モデル予測誤差の時間変化の周期性の有無を判断する。
また、極値検出部105が周期下限値を用いて検出する(確定する)極値の精度を向上させるのに代えて、判定部106が周期下限値を用いることによって、モデル予測誤差の時間変化についての、周期性の有無の判定精度を向上させてもよい。すなわち、判定部106が、(1)極値検出部105によって検出された複数の極大値の間の検出時刻の間隔のうち、前記周期下限値よりも長い間隔を、前記周期性の有無を判定する際に用いる前記極大値が検出された時刻の間隔として用い、(2)極値検出部105によって検出された複数の極小値の間の検出時刻のうち、前記周期下限値よりも長い間隔を、前記周期性の有無を判定する際に用いる前記極小値が検出された時刻の間隔として用いてもよい。
判定部106および極値検出部105の少なくとも一方が周期下限値を用いることにより、図8に例示する予測誤差変動波形において、判定部106は周期(B)ではなく周期(A)について、モデル予測誤差の時間変化について周期性の有無を判定する。そして、判定部106によりモデル予測誤差の時間変化について周期性が有ると判定されると、補正量算出部107は、モデル予測誤差の時間変化である予測誤差変動周期(つまり、周期(A))について、或る予測誤差変動周期の1つ前の予測誤差変動周期における前記モデル予測誤差を用いて、予測補正量Cd(n)、CH(n)を算出する。特に、補正量算出部107は、「前記或る予測誤差変動周期における、前記モデルを用いて予測した制御量の予測値」を補正するための予測補正量Cd(n)、CH(n)を算出する。
次に、コントローラ10が、以上に説明したように、予測誤差変動波形が複数の周期を持つ「複雑な外乱」を、周期下限値を用いて補償した場合の効果について、図9を用いて説明していく。
図9は、コントローラ10が周期下限値を用いた外乱補償処理を実行した場合の効果を説明するための図である。すなわち、図9に示す例は、「100msで60mm移動し、その後100ms間停止する」目標軌道データ(目標軌道)の制御に対し、複数の周期の予測誤差変動波形で示される「複雑な外乱」を印加した場合について、コントローラ10が外乱補償処理を実行した場合の効果を説明するための図である。
コントローラ10が実行する処理は、図7に例示した場合と比べて、図9に例示する場合は、周期下限値を用いた点のみである。すなわち、図9に例示する場合において、コントローラ10(極値検出部105)は、図7に例示した場合における処理に、「周期下限値に満たない時間では極値を確定しない」という処理を追加しただけの処理を実行する。
図9の差異下段に例示しているモデル予測誤差は、予測誤差変動波形が複数の周期を有している。図8を用いて説明したように、予測誤差変動波形が複数の周期を持つ場合には、最も長い周期だけを検出する必要がある。
コントローラ10において、極値検出部105は、周期下限値を用いて検出する(確定する)極値の精度を向上させる。すなわち、コントローラ10は、周期の下限値(周期下限値)を予め設定しておき、この下限値に満たない周期は無視することによって、最も長い周期の予測誤差変動を検出することができる。
図9の真ん中の列には、予測誤差変動波形が複数の周期を持つ「複雑な外乱」に対し、コントローラ10が、通常の外乱補償(つまり、「周期下限値を用いない」外乱補償処理)を実行した場合の位置偏差およびトルク等の軌跡が示されている。
図8を用いて説明したように、予測誤差変動波形が複数の周期を持つ「複雑な外乱」は、モデル予測誤差の時間変化について周期性を正しく判定することが困難であり、また、モデル予測誤差の時間変化の周期を正しく算定することが困難である。
したがって、「複雑な外乱」に対し、コントローラ10が、「周期下限値を用いない」で外乱補償処理を実行した場合の位置偏差およびトルク等の軌跡は、図9の真ん中の列に示すように、外乱補償処理を実行しない場合の位置偏差およびトルク等の軌跡(図9の左側の列に示す位置偏差およびトルク等の軌跡)に類似している。つまり、コントローラ10は、「周期下限値を用いない」場合、「複雑な外乱」による制御の乱れを抑制することができず、例えば、位置偏差変動を抑制できない。
これに対して、図9の右側の列に示すように、予測誤差変動波形が複数の周期を持つ「複雑な外乱」に対し、コントローラ10は、周期下限値を用いた外乱補償処理を実行することにより、位置偏差変動を良好に抑制できている。また、トルクの変化についても、穏やかなものとすることができている。
すなわち、コントローラ10は、周期下限値を用いることにより、予測誤差変動波形が複数の周期を持つ「複雑な外乱」について、その時間変化に係る周期性の有無を正確に判定し、かつ、前記「複雑な外乱」の時間変化の周期(つまり、モデル予測誤差の時間変化の周期)を正しく算定することができる。そして、コントローラ10は、外乱に周期性があると判定すると、外乱の周期(つまり、予測誤差変動周期)について、現在より前(過去)において算出したモデル予測誤差を用いて、現在(現時刻)の制御量予測値を補正することで、前記外乱の制御への影響を抑制している。
すなわち、コントローラ10において、極値検出部105は、(1)複数の前記極大値の間の検出時刻の間隔が所定の周期よりも長くなるように、複数の前記極大値の各々を検出し、(2)複数の前記極小値の間の検出時刻の間隔が所定の周期よりも長くなるように、複数の前記極小値の各々を検出する。
前記の構成によれば、極値検出部105は、複数の前記極大値(前記極小値)の間の検出時刻の間隔が所定の周期よりも長くなるように、複数の前記極大値(前記極小値)の各々を検出する。つまり、極値検出部105は、極大値(極小値)間の検出時刻の差(間隔)が所定の周期よりも短いときは、その極値を確定しない(つまり、極大値(極小値)とは見做さない)。極値検出部105は、例えば、直前に確定した極大値(極小値)との時間差が周期下限値に満たない山(谷)は、極大値(極小値)ではないとみなしてもよい。
ここで、例えば前記モデル予測誤差の時間変化を示す曲線が、大きな周期曲線中に小さな周期曲線を含むようなものである場合、前記モデル予測誤差の時間変化の周期性を判定する際に用いるべき周期は、前記大きな周期曲線の周期である。
したがって、コントローラ10は、前記複数の前記極値(極大値たは極小値)が検出された時刻の間隔であって、所定の周期(周期下限値)よりも長い間隔を、前記周期性の有無を判定する際に用いるので、前記モデル予測誤差の時間変化について周期性の有無を正しく判定することができるという効果を奏する。
(ユーザの指定する周期下限値を利用した周期性判定精度の向上)
なお、判定部106がモデル予測誤差の時間変化について周期性の有無を判定する際に用いる上記周期下限値は、ユーザが指定するものであってもよい。すなわち、コントローラ10の受付部108は、周期下限値を指定するユーザ操作を受け付ける。そして、判定部106は、(1)極値検出部105により複数の極大値が検出されると、前記複数の極大値の間の検出時刻の間隔のうち、前記周期下限値よりも長い間隔を、前記周期性の有無を判定する際に用いる前記極大値が検出された時刻の間隔として用い、(2)極値検出部105により複数の極小値が検出されると、前記複数の極小値の間の検出時刻のうち、前記周期下限値よりも長い間隔を、前記周期性の有無を判定する際に用いる前記極小値が検出された時刻の間隔として用いる。
前記の構成によれば、判定部106は、(1)極値検出部105により検出された複数の前記極大値の間の検出時刻の間隔のうち、前記前記周期下限値よりも長い間隔を、前記周期性の有無を判定する際に用いる前記極大値が検出された時刻の間隔として用い、(2)極値検出部105により検出された複数の前記極小値の間の検出時刻の間隔のうち、前記周期下限値よりも長い間隔を、前記周期性の有無を判定する際に用いる前記極小値が検出された時刻の間隔として用いる。
ここで、例えば前記モデル予測誤差の時間変化を示す曲線が、大きな周期曲線中に小さな周期曲線を含むようなものである場合、前記モデル予測誤差の時間変化の周期性を判定する際に用いるべき周期は、前記大きな周期曲線の周期である。
したがって、コントローラ10は、前記複数の前記極値(極大値たは極小値)が検出された時刻の間隔であって、前記周期下限値よりも長い間隔を、前記周期性の有無を判定する際に用いるので、前記モデル予測誤差の時間変化について周期性の有無を正しく判定することができるという効果を奏する。
(表示画面の一例)
図10は、コントローラ10が表示する予測誤差のトレンドグラフの一例を示す図である。図10に示すように、コントローラ10の表示制御部109は、モデル予測誤差(算出部104が算出し、記憶部110に格納されている誤差データ1101)の経時変化をユーザに表示する。
前記の構成によれば、表示制御部109は、前記モデル予測誤差の経時変化をユーザに表示する。したがって、コントローラ10は、前記モデル予測誤差の経時変化をユーザに表示するので、ユーザが、コントローラ10によって表示された前記モデル予測誤差の経時変化(いわゆる、トレンドグラフ)に現れる波形から、外乱の様子を近似的に把握することができるという効果を奏する。
表示制御部109が予測誤差(モデル予測誤差)のトレンドグラフを表示することにより、ユーザは、外乱が発生するタイミング、および発生した外乱がどのように変化するかを確認することができる。特に、外乱補償が有効に働いている場合には、ユーザは、制御偏差(例えば、位置偏差)の乱れのみによって、外乱発生の様子を確認することは困難である。表示制御部109が予測誤差のトレンドグラフを表示するので、ユーザは、外乱が発生している時点(タイミング)、および、外乱の経時変化を容易に確認することができる。
図11は、コントローラ10が補償したトルク外乱波形を示す図である。なお、図11の(A)は、図7に示した例においてコントローラ10が外乱補償処理を実行したトルク外乱波形(単一周期の予測誤差変動波形で示される「単純な(一般的な)外乱」)を示している。また、図11の(B)は、図9に示した例においてコントローラ10が外乱補償処理を実行したトルク外乱波形(複数の周期の予測誤差変動波形で示される「複雑な外乱」)を示している。
〔実施形態2〕
本発明の他の実施形態について、図12および図13に基づいて説明すれば、以下のとおりである。なお記載の簡潔性を担保するため、実施形態1とは異なる構成(処理の手順及び処理の内容)のみについて説明する。すなわち、実施形態1で記載された構成等は、本実施形態にもすべて含まれ得る。また、実施形態1で記載した用語の定義も同じである。
(制御システムの概要)
図13は、コントローラ100を含む制御システム2の概要を示す図である。制御システム2は、コントローラ10が、位置/速度制御を実行し、予測制御によりサーボドライバ20へのトルク指令値を出力する制御システム1と異なり、コントローラ100は予測制御によりサーボドライバ120への指令位置を補正し、サーボドライバ120が位置/速度制御を実行する。すなわち、制御システム1においてコントローラ10はサーボドライバ20にトルク指令値を出力していたのに対し、制御システム2においてコントローラ100はサーボドライバ120に指令位置を出力する。
コントローラ100は、モデル予測制御機構を備えるコントローラであって、サーボドライバ120に対し、操作量としての指令位置を出力する。コントローラ100は、例えば、ユーザ等の外部から目標軌道データ(目標軌道)を受け付け(軌道生成)、受け付けた目標軌道データから制御周期ごとに指令値(指令位置)を生成する。コントローラ100は、また、制御対象30から、「制御対象30の出力である制御量(制御量の実測値)」を、フィードバック情報として取得する。すなわち、コントローラ100は、フィードバック位置として、制御対象30が出力した位置を取得する。
ここで、コントローラ100は、制御対象30のモデルを内部モデルとして有し、この内部モデルを用いて、生成した指令位置と、「制御対象30の出力であるフィードバック位置(制御量の実測値)」と、に基づいて、サーボドライバ120に対し、操作量としての指令位置を出力する。コントローラ100が用いる内部モデルは、サーボドライバ120および制御対象30のモデルである。制御システム2では、サーボドライバ120の特性を無視できないため、制御対象30のみのモデルでは不十分であり、コントローラ100は、内部モデルとして、サーボドライバ120および制御対象30のモデルを必要とする。
コントローラ100は、前記内部モデルを用いて制御対象30の出力する制御量(フィードバック位置)を予測するとともに、予測誤差を推定して外乱補償を行い、つまり、予測した制御量(予測値)を、予め記憶しておいたモデル予測誤差(1つ前の予測誤差変動周期におけるモデル予測誤差)を用いて補正する。そして、コントローラ100は、モデル予測誤差を用いて補正した予測値である予測補正値(補正後予測値)を用いて、サーボドライバ120に出力する補正後指令位置(操作量)を算出する。
サーボドライバ120は、制御対象30について位置/速度制御を実行する。すなわち、サーボドライバ120は、コントローラ100から、指令位置(補正後指令位置)を取得する。サーボドライバ120は、また、制御対象30から、「制御対象30の出力である制御量(制御量の実測値)」を、フィードバック情報として取得する。すなわち、サーボドライバ120は、フィードバック速度およびフィードバック位置(フィードバック速度およびフィードバック位置の少なくとも一方)として、制御対象30が出力した速度および位置(速度および位置の少なくとも一方)を取得する。
サーボドライバ120は、コントローラ100から取得した指令位置(補正後指令位置)と、制御対象30から取得したフィードバック速度およびフィードバック位置の少なくとも一方と、を用いて、制御対象30について位置/速度制御を実行する。
(コントローラの概要)
これまで図13を用いて概要を説明してきた制御システム2に含まれるコントローラ100について、次に、その構成および処理の内容等を、図12を用いて説明していく。図12を参照して詳細を説明する前に、コントローラ100についての理解を容易にするため、その概要について以下のように整理しておく。
コントローラ100は、指令値補正部112および位置指令部113を備えている。指令値補正部112は、補正量算出部107から、予測補正量(具体的には、予測補正量Cd(n)、CH(n))を取得する。指令値補正部112は、取得した予測補正量を用いて、「或る予測誤差変動周期における制御量の予測値」を、つまり、「現在における予測値」を補正する。指令値補正部112は、補正後の予測値(補正後予測値)を用いて、制御量が指令値(指令位置)に追従するように位置指令(補正後位置指令)を算出する。指令値補正部112は、算出した補正後指令位置を操作量として位置指令部113に通知する。
位置指令部113は、指令値補正部112により算出された前記指令値である補正後指令値を、サーボドライバ120(制御対象30にモーション制御を行う制御系)に、制御対象30の位置制御に係る指令値として出力する。
前記の構成によれば、指令値補正部112は、補正量算出部107の算出した予測補正量を用いて予測値(制御量の予測値)を補正し、補正後の予測値を用いて、制御量が指令値(指令位置)に追従するように位置指令(補正後位置指令)を算出する。
したがって、コントローラ10は、前記外乱による制御量の変化を操作量に変換するための演算処理を実行せずに、前記指令値に制御対象30の制御量が追従するように補正された前記指令値を、サーボドライバ120に出力することができるという効果を奏する。
(コントローラの詳細)
以上に概要を説明したコントローラ100について、次に、その構成の詳細を、図12を用いて説明する。
図12は、本発明の実施形態2に係るコントローラ100の要部構成を示すブロック図である。図12に示すコントローラ100は、図1に示すコントローラ10のトルク算出部102およびトルク指令部103に代えて、指令値補正部112および位置指令部113を備えている。コントローラ100のトルク算出部102およびトルク指令部103以外の構成については、コントローラ10のトルク算出部102およびトルク指令部103以外の構成と同様なので、詳細は略記する。
指令値補正部112は、モデル予測制御を実行し、具体的には、制御対象(つまり、サーボドライバ120および制御対象30)の内部モデルを用いて未来の状態を予測し、制御対象30の未来の出力(制御量の予測値)ができる限り目標値(指令値、つまり指令位置)に近づくように操作量(指令位置)を決定する。つまり、指令値補正部112は、前記内部モデルに基づいて未来の出力(制御量)の変化を予測し、出力と目標値とができるだけ近づくように入力(操作量、つまり指令位置)を決定するものである。
指令値補正部112は、制御対象(つまり、制御対象30)の挙動をモデル化した前記内部モデルを含み、前記内部モデルを用いて、各制御周期において制御対象30が出力する制御量を予測する。すなわち、指令値補正部112は、前記内部モデルを用いて、各制御周期における予測値(制御量の予測値)を算出する。指令値補正部112は、算出した予測値(予測制御量)を算出部104に通知する。
指令値補正部112は、また、補正量算出部107から、予測補正量(具体的には、予測補正量Cd(n)、CH(n))を取得する。指令値補正部112は、取得した予測補正量を用いて、「或る予測誤差変動周期における制御量の予測値」を補正し、補正後の予測値を用いて、制御量が指令値(指令位置)に追従するように位置指令(補正後位置指令)を算出する。指令値補正部112は、算出した補正後指令位置を操作量として位置指令部113に通知する。
位置指令部113は、指令値補正部112から通知された補正後指令位置(操作量)を、サーボドライバ120(制御対象30にモーション制御を行う制御系)に、制御対象30の位置/速度制御に係る指令値として出力する。
〔実施形態3〕
本発明の実施形態3について、図15〜図24に基づいて説明すれば、以下のとおりである。なお記載の簡潔性を担保するため、実施形態1および実施形態2とは異なる構成(処理の手順及び処理の内容)のみについて説明する。すなわち、実施形態1および実施形態2で記載された構成等は、本実施形態にもすべて含まれ得る。また、実施形態1および実施形態2で記載した用語の定義も、原則として同じである。
これまでに実施形態1および実施形態2において説明してきたコントローラ10およびコントローラ100は、周期性を持つ外乱による制御量の乱れを抑制するものであった。具体的には、コントローラ10およびコントローラ100は、モデル(制御対象30のモデル、または、サーボドライバ120および制御対象30のモデル)を用いて、指令値に対応する制御対象30の制御量を予測し、つまり、制御量の予測値を算出する。ここで、コントローラ10およびコントローラ100は、制御対象30の制御量の実測値と制御量の予測値との誤差である予測誤差(モデル予測誤差)PEの時間変化について周期性の有無を判定する。そして、コントローラ10およびコントローラ100は、予測誤差PEの時間変化について周期性が有ると判定すると、さらに以下の処理を実行する。すなわち、コントローラ10およびコントローラ100は、予測誤差PEの時間変化の周期である予測誤差変動周期について、或る予測誤差変動周期の1つ前の予測誤差変動周期における予測誤差PEを用いて、或る予測誤差変動周期における制御量の予測値を補正する。
ここで、コントローラ10およびコントローラ100は、予測誤差PEの時間変化を示す波形の振幅が時間に対して一定であると想定して、或る予測誤差変動周期における制御量の予測値を、1周期前における予測誤差PEを用いて補正する。そのため、コントローラ10およびコントローラ100による制御量の予測値の補正には、以下の事態が発生し得る。
すなわち、周期的に変化する予測誤差PEを示す波形の振幅が時間(時刻)に対して一定ではない場合、或る予測誤差変動周期の予測誤差PEの大きさは、1周期前(或る予測誤差変動周期の1つ前の予測誤差変動周期)の予測誤差PEの大きさとは一致しない。そのため、コントローラ10およびコントローラ100は、「周期的に変化する予測誤差PE」を示す波形の振幅が時間に対して一定ではない場合、現在における制御量の予測値を、1周期前の予測誤差PEを用いて正確に補正することが困難となる。なお、以下の説明においては、「周期的に大きさが変化する予測誤差PE」の示す波形を「予測誤差変動波形」と称する。
図14は、予測誤差変動波形の振幅が時間(時刻)に対して一定ではない例を示す図である。具体的には、図4の(A)は、振幅が時刻(横軸)に対して減少する予測誤差変動波形の例を示しており、言い換えれば、時刻が進むほど予測誤差変動波形の振幅が小さくなる例(一定の割合で小さくなる例)を示している。図4の(B)は、振幅が時刻に対して増大する予測誤差変動波形の例を示しており、言い換えれば、時刻が進むほど予測誤差変動波形の振幅が大きくなる例(一定の割合で大きくなる例)を示している。図4の(C)は、振幅が時刻に対して振動する予測誤差変動波形の例を示しており、言い換えれば、時刻に対して、予測誤差変動波形の振幅が、大きくなったり小さくなったりする例を示している。図4の(C)の予測誤差変動波形において、「或る周期(=或る予測誤差変動周期)」における振幅の、その「或る周期」の1つ前の周期における振幅に対する変化の大きさ(振幅変化率)は、一定ではない。
図14に示すように、予測誤差変動波形の振幅が時間(時刻)に対して変化する場合、或る予測誤差変動周期の予測誤差PEの大きさは、1周期前(=或る予測誤差変動周期の1つ前の予測誤差変動周期)の予測誤差PEの大きさとは一致しない。そのため、予測誤差変動波形の振幅が時間に対して変動する場合、或る予測誤差変動周期の予測誤差PEの大きさと、1周期前の予測誤差PEの大きさとが一致すると想定するコントローラ10およびコントローラ100の補償効果は、低下する。
§1.適用例
本発明の実施形態3および実施形態4に係るコントローラ200およびコントローラ300は、予測誤差変動波形の振幅が時間(時刻)に対して一定ではない場合にも、現在における制御量の予測値を、1周期前の予測誤差PEを用いて正確に補正することができる。具体的には、コントローラ200およびコントローラ300は、予測誤差変動波形における振幅の時間変化(直近の振幅の、1周期前の振幅からの変化)を示す式を算出し、この式と、1周期前の予測誤差PEと、を用いて、現在における制御量の予測値を補正する。
例えば、コントローラ200およびコントローラ300は、予測誤差変動波形における、直近の振幅と、1つ前の周期の振幅と、の比(つまり、後述する「振幅変化率」)を算出し、記憶しておく。そして、コントローラ200およびコントローラ300は、1周期前の予測誤差PEから、1周期前にとっての未来の予測誤差PE(つまり、現在の予測誤差PE)を予測する際に、振幅変化率を考慮する。コントローラ200およびコントローラ300は、予測誤差変動波形の振幅が時間に対して変化する場合であっても、1周期前の予測誤差PEから、振幅変化率を考慮して、現在の予測誤差PEを正確に予測することによって、補償効果を維持し向上させることができる。
すなわち、コントローラ200およびコントローラ300は、予測機構を持つ制御装置(モデル予測制御装置)であって、予測誤差PEの変動(=時間変化)に周期性があるかを監視する。予測誤差PEの時間変化に周期性を確認した場合、コントローラ200およびコントローラ300は、1周期前の予測誤差PEを使用して、現在の制御量の予測を補償する。ここで特に、コントローラ200およびコントローラ300は、周期的に変化する予測誤差PEを示す波形(=予測誤差変動波形)の「振幅の変化」を考慮して、1周期前の予測誤差PEを用いた「現在の制御量の予測の補償」を実行する。コントローラ200およびコントローラ300が考慮する「振幅の変化」とは、例えば、「予測誤差変動波形の直近の振幅と、1つ前の周期の振幅と、の比」である。
これによって、コントローラ200およびコントローラ300は、周期性を持つ外乱による制御量の乱れを抑制することができ、特に、予測誤差変動波形の振幅が時間に対して変化する場合であっても、「現在の制御量の予測の補償」を正確に実行することができる。例えば、コントローラ200およびコントローラ300は、瞬時外乱をきっかけに発生する低剛性対象の減衰振動を抑制することができ、つまり、機械の制御性能を維持し、それによって製造物の品質を維持することができる。コントローラ200およびコントローラ300は、周辺の他の機械から受ける振動、および、加工機械において、ツールやテーブルの加減速により励起される振動の発生する環境下で好適に利用される。
§2.構成例
(構成の概要)
コントローラ10およびコントローラ100は、「制御量の実測値と予測値との誤差である予測誤差PEの時間変化を示す波形(=予測誤差変動波形)における、振幅の変化」を想定していなかった。例えば、コントローラ10およびコントローラ100は、予測誤差変動波形の振幅が、時間が進むにつれて、大きくなったり小さくなったりすることを想定していなかった。
これに対して、以下に図15等を参照して説明するコントローラ200およびコントローラ300は、「予測誤差変動波形における、振幅の変化」を考慮して、1周期前の予測誤差PEを用いた「現在の制御量の予測の補償」を実行する。コントローラ200およびコントローラ300は、「予測誤差変動波形における、振幅の変化」を考慮することにより、予測誤差変動波形の振幅が時間に対して一定でないときにも、制御量を正確に予測することができる。
以下、図15を参照して、コントローラ200の詳細を説明していく。その前に、コントローラ200についての理解を容易にするため、その概要について以下のように整理しておく。
コントローラ200(モデル予測制御装置)は、目標軌道から制御周期ごとに生成された指令値に対応する制御対象30の制御量を、制御対象30のモデルを用いて予測するモデル予測制御装置である。コントローラ200は、制御対象30の制御量の実測値と前記モデルを用いて予測した制御量の予測値との誤差である予測誤差PEの時間変化について周期性の有無を判定する判定部106と、判定部106により周期性が有ると判定されると、予測誤差PEの時間変化を示す波形(=予測誤差変動波形)における振幅の時間変化を示す式(例えば、後述する「振幅変化率ACR」)を導出する導出部202と、導出部202により導出された式と、予測誤差変動波形における現在の周期の1つ前の周期における予測誤差PEと、を用いて、現在の周期における予測値(制御対象30のモデルを用いて予測した制御量の予測値)を補正するトルク算出部102(予測値補正部)と、を備える。
前記の構成によれば、コントローラ200は、制御量の実測値と予測値との誤差である予測誤差PEの時間変化について周期性が有ると判定すると、予測誤差PEの時間変化を示す波形である「予測誤差変動波形」における振幅の時間変化を示す式を導出する。そして、コントローラ200は、導出した式と、予測誤差変動波形における現在の周期の1つ前の周期における予測誤差PEと、を用いて、現在の周期における前記予測値を補正する。
したがって、コントローラ200は、外乱のモデルを必要とせずに、幅広い機械および装置に対して、より簡単に外乱補償を適用できるとの効果を奏する。特に、コントローラ200は、予測誤差PEが周期的に変化する場合に、予測誤差PEの時間変化を示す波形の振幅が時間に対して一定でないときにも、制御対象30の制御量を正確に予測することができるとの効果を奏する。
コントローラ200は、予測誤差変動波形における、現在の周期の1つ前の周期までの、周期ごとの振幅変動率(後述する「振幅変化率ACR(k−j)」)を算出する割合算出部201をさらに備えている。そして、コントローラ200において、導出部202は、割合算出部201により算出された、現在の周期の1つ前の周期までの周期ごとの振幅変動率に、周期ごとの係数(後述する「c0,c1,・・・,cj」)を乗じた値の和として、予測誤差変動波形における振幅の時間変化を示す式を導出してもよい。
前記の構成によれば、コントローラ200は、予測誤差変動波形における、現在の周期の1つ前の周期までの「周期ごとの振幅変動率」を算出する。そして、コントローラ200は、算出した、現在の周期の1つ前の周期までの「周期ごとの振幅変動率」に、「周期ごとの係数」を乗じた値の和として、予測誤差変動波形における振幅の時間変化を示す式を導出する。
したがって、コントローラ200は、前記振幅変動率が時間に対して一定でない場合であっても、現在の周期の1つ前の周期までの「周期ごとの振幅変動率」を用いて、「予測誤差変動波形における振幅の時間変化を示す式」を導出することができるとの効果を奏する。例えば、コントローラ200は、前記振幅変動率が、時間が進むにつれて、大きくなったり小さくなったりする場合であっても、現在の周期の1つ前の周期までの「周期ごとの振幅変動率」に、「周期ごとの係数」を乗じた値の和として、前記式を導出する。なお、前記「周期ごとの係数」は、例えば最小二乗法等を用いて算出してもよい。
コントローラ200において、割合算出部201は、(1)予測誤差変動波形における、或る周期における極値である第1極値と、予測誤差変動波形における前記第1極値の半周期前の極値である第2極値と、の差の絶対値と、(2)予測誤差変動波形における前記第1極値の1周期前の極値である第3極値と、予測誤差変動波形における前記第3極値の半周期前の極値である第4極値と、の差の絶対値、または、前記第2極値と前記第3極値との差の絶対値と、の比率を用いて、前記或る周期における振幅変動率を算出してもよい。
前記の構成によれば、コントローラ200は、予測誤差変動波形における「或る周期における振幅変動率」を、(1)前記或る周期における極値である第1極値と、予測誤差変動波形における前記第1極値の半周期前の極値である第2極値と、の差の絶対値と、(2)予測誤差変動波形における前記第1極値の1周期前の極値である第3極値と、予測誤差変動波形における前記第3極値の半周期前の極値である第4極値と、の差の絶対値、または、前記第2極値と前記第3極値との差の絶対値と、の比率を用いて算出する。
例えば、コントローラ200は、予測誤差変動波形における「或る周期における振幅変動率」を、(1)前記或る周期における極値である第1極値と、予測誤差変動波形における前記第1極値の半周期前の極値である第2極値と、の差の絶対値と、(2)予測誤差変動波形における前記第1極値の1周期前の極値である第3極値と、予測誤差変動波形における前記第3極値の半周期前の極値である第4極値と、の差の絶対値の比率として算出する。
また、例えば、コントローラ200は、予測誤差変動波形における「或る周期における振幅変動率」を、(1)前記或る周期における極値である第1極値と、予測誤差変動波形における前記第1極値の半周期前の極値である第2極値と、の差の絶対値と、(2−2)前記第2極値と前記第3極値との差の絶対値と、の比率の2乗として算出する。
したがって、コントローラ200は、予測誤差変動波形の周期ごとの振幅変動率を、予測誤差変動波形の極値を用いて容易に算出することができるとの効果を奏する。
コントローラ200において、割合算出部201は、最新の振幅変動率を、(1)現在までに確定している予測誤差変動波形における最新の極値と、予測誤差変動波形における前記最新の極値の半周期前の極値と、の差の絶対値と、(2)予測誤差変動波形における前記最新の極値の1周期前の極値と、予測誤差変動波形における前記最新の極値の1.5周期前の極値と、の差の絶対値、または、予測誤差変動波形における前記最新の極値の半周期前の極値と、予測誤差変動波形における前記最新の極値の1周期前の極値と、の差の絶対値と、の比率として算出し、導出部202は、割合算出部201により算出された前記最新の振幅変動率を、予測誤差変動波形における振幅の時間変化を示す式として導出してもよい。
前記の構成によれば、コントローラ200は、(1)現在までに確定している予測誤差変動波形における最新の極値と、予測誤差変動波形における前記最新の極値の半周期前の極値と、の差の絶対値と、(2)予測誤差変動波形における前記最新の極値の1周期前の極値と、予測誤差変動波形における前記最新の極値の1.5周期前の極値と、の差の絶対値、または、予測誤差変動波形における前記最新の極値の半周期前の極値と、予測誤差変動波形における前記最新の極値の1周期前の極値と、の差の絶対値と、の比率を算出する。そして、コントローラ200は、算出した比率を、予測誤差変動波形における振幅の時間変化を示す式とする。
したがって、コントローラ200は、前記振幅変動率が時間に対して一定である場合、例えば予測誤差変動波形の振幅が時間に応じて一定の割合で大きくなったり小さくなったりする場合、前記振幅の時間変化を示す式を容易に導出することができるとの効果を奏する。
(構成の詳細)
図15は、本発明の実施形態3に係るコントローラ200の要部構成を示すブロック図である。図15に示すコントローラ200は、図1に示すコントローラ10の構成に加えて、割合算出部201および導出部202を備えている。
割合算出部201は、判定部106が、予測誤差(モデル予測誤差)PEの時間変化について周期性ありと判定すると、「予測誤差PEの時間変化を示す波形(=予測誤差変動波形)における、所定期間ごとの振幅変動率」を算出する。例えば、割合算出部201は、予測誤差変動波形の周期(=予測誤差変動周期)ごとの振幅変動率を算出する。割合算出部201は、算出した「予測誤差変動周期ごとの振幅変動率」を、導出部202に通知する。
導出部202は、割合算出部201から通知された「所定期間ごと(例えば、予測誤差変動周期ごと)の振幅変動率」を用いて、「予測誤差変動波形における、振幅の時間変化を示す式」を導出する。導出部202は、導出した「予測誤差変動波形における、振幅の時間変化を示す式」を補正量算出部107に通知する。
補正量算出部107は、導出部202により導出された「予測誤差変動波形における、振幅の時間変化を示す式」と、予測誤差変動波形における現在の周期(=予測誤差変動周期)の1つ前の周期における予測誤差PEと、を用いて、予測補正量を算出する。詳細は後述するが、補正量算出部107は、むだ時間d区間、および予測ホライズンH区間における、予測誤差PEの変化量を、予測補正量Cd(n)、CH(n)として算出する。そして、補正量算出部107は、算出した予測補正量(具体的には、予測補正量Cd(n)、CH(n))を、トルク算出部102に通知する。
(再確認事項)
なお、既に説明している通り、算出部104は、連続する複数の制御周期の各々について予測誤差PEを算出し、極値検出部105は、算出部104により各々算出された、連続する複数の予測誤差PEの時間変化から、予測誤差PEの極大値および極小値を検出する。そして、判定部106は、極値検出部105により極大値および極小値の各々が検出された時刻から、予測誤差PEの時間変化について周期性の有無を判定する。例えば、判定部106は、極値検出部105により複数の極大値の各々が検出された時刻の間隔と、極値検出部105により複数の極小値の各々が検出された時刻の間隔との差に基づいて、予測誤差PEの時間変化について周期性の有無を判定する。例えば、判定部106は、極値検出部105により複数の極大値の各々が検出された時刻の間隔と、極値検出部105により複数の極小値の各々が検出された時刻の間隔との差が所定の値(前述のEPS1)よりも小さいと、予測誤差PEの時間変化について周期性が有ると判定する。
ここで、極値検出部105は、連続する複数の予測誤差PEの時間変化における「予測誤差PEの極大値および極小値」のうち、極大値と極小値との差が所定値よりも大きな「極大値および極小値」のみを検出する。極値検出部105は、「極大値と極小値との差」を考慮することによって、極値の検出において、計測ノイズによる極値の誤検出を防ぎ、また、静止摩擦による停止状態での微小な振動を極値として誤検出することを防ぐことができる。
また、極値検出部105は、(1)複数の極大値の間の検出時刻の間隔が所定の周期よりも長くなるように、複数の極大値の各々を検出し、(2)複数の極小値の間の検出時刻の間隔が所定の周期よりも長くなるように、複数の極小値の各々を検出する。極値検出部105は、例えば、直前に確定した極大値(極小値)との時間差が周期下限値に満たない山(谷)は、極大値(極小値)ではないとみなしてもよい。コントローラ200は、複数の極値(極大値たは極小値)が検出された時刻の間隔であって、所定の周期(周期下限値)よりも長い間隔を、周期性の有無を判定する際に用いるので、予測誤差PEの時間変化について周期性の有無を正しく判定することができる。なお、判定部106が予測誤差PEの時間変化について周期性の有無を判定する際に用いる周期下限値は、ユーザが指定するものであってもよい。
また、指令値生成部101は、外部(例えば、ユーザ)から目標軌道データ(目標軌道)を受け付け(軌道生成)、受け付けた目標軌道データから制御周期ごとに指令値(指令位置)を生成する。トルク算出部102は、モデル予測制御を実行し、制御対象30の制御量の予測値ができる限り目標値(指令値、つまり指令位置)に近づくように操作量を決定する。すなわち、トルク算出部102は先ず、モデルを用いて、各制御周期における予測値(制御量の予測値)を算出し、算出した予測値(予測制御量)を算出部104に通知する。また、トルク算出部102は、補正量算出部107から、予測補正量(具体的には、予測補正量Cd(n)、CH(n))を取得する。トルク算出部102は、取得した予測補正量を用いて予測値(制御量の予測値)を補正し、補正後の予測値(補正後予測値)を用いて、制御量が指令値(指令位置)に追従するようにトルクを算出する。トルク算出部102は、算出したトルクを指令トルク(操作量)としてトルク指令部103に通知する。トルク指令部103は、トルク算出部102の算出したトルクを、サーボドライバ20に、制御対象30のトルク制御に係る指令値として出力する。受付部108は、周期下限値を指定するユーザ操作を受け付け、ユーザ操作において指定された周期下限値を、判定部106(および極値検出部105)に通知する。表示制御部109は、予測誤差PE(算出部104が算出し、記憶部110に格納されている誤差データ1101)の経時変化をユーザに表示する。
§3.動作例
以下、図16および図17を用いて、コントローラ200の実行する処理(特に、外乱補償処理)について説明していく。図16および図17を参照して詳細を説明する前に、コントローラ200の実行する処理についての理解を容易にするため、その概要について以下のように整理しておく。
コントローラ200の実行する処理は、目標軌道から制御周期ごとに生成された指令値に対応する制御対象30の制御量を、制御対象30のモデルを用いて予測するモデル予測制御装置の制御方法である。コントローラ200の実行する処理は、制御対象30の制御量の実測値と前記モデルを用いて予測した制御量の予測値との誤差である予測誤差PEの時間変化について周期性の有無を判定する判定ステップと、前記判定ステップにて周期性が有ると判定されると、予測誤差PEの時間変化を示す波形(=予測誤差変動波形)における振幅の時間変化を示す式を導出する導出ステップと、前記導出ステップにて導出された式と、予測誤差変動波形における現在の周期の1つ前の周期における予測誤差PEと、を用いて、現在の周期における前記予測値を補正する予測値補正ステップと、を含む。
前記の構成によれば、前記制御方法は、制御量の実測値と予測値との誤差である予測誤差PEの時間変化について周期性が有ると判定すると、予測誤差変動波形における振幅の時間変化を示す式を導出する。そして、前記制御方法は、導出した式と、予測誤差変動波形における現在の周期の1つ前の周期における予測誤差PEと、を用いて、現在の周期における前記予測値を補正する。
したがって、前記制御方法は、外乱のモデルを必要とせずに、幅広い機械および装置に対して、より簡単に外乱補償を適用できるとの効果を奏する。特に、前記制御方法は、予測誤差PEが周期的に変化する場合に、予測誤差PEの時間変化を示す波形の振幅が時間に対して一定でないときにも、制御対象30の制御量を正確に予測することができるとの効果を奏する。
(振幅変化率が一定の場合)
図16は、時間に対して振幅変化率が一定である予測誤差変動波形について、コントローラ200の実行する「制御量の予測値を補正する」処理(=外乱補償処理)の概要を説明するための図である。図16には、判定部106によって周期性が有ると判定された「予測誤差PEの時間変化」であって、「周期的に大きさが変化する予測誤差PE」の示す波形(予測誤差変動波形)の振幅が時間に対して一定の割合で変化する「予測誤差PEの時間変化」が示されている。図16に示すような、振幅変化率が時間に対して一定である予測誤差変動波形に対し、コントローラ200は、以下の処理を実行する。
すなわち、補正量算出部107は、導出部202が算出する振幅変化率ACRと、予測誤差変動波形における現在の周期(=予測誤差変動周期)の1つ前の周期における予測誤差PEと、を用いて、現在の周期における予測値を補正するための予測補正量を算出する。以下、詳細を説明する。
補正量算出部107は、先ず、時刻n時点で、最後に確定した「極値時刻Ptime(k)」から「現時刻(=時刻n)」までの経過時間である経過時間「n−Ptime(k)」を求める。補正量算出部107は、次に、現時刻(時刻n時点)から1周期前の時刻を次式で求め、これを予測の起点とする。すなわち、
Ptime(k−2)+n−Ptime(k)
そして、補正量算出部107は、上の式から求めた時刻(=時刻n時点から1周期前の時刻)から、むだ時間d区間、および予測ホライズンH区間における、予測誤差PEの変化量を、予測補正量Cd(n)、CH(n)として求める。すなわち、
言い換えれば、
とすると、数式Pの予測補正量Cd(n)、CH(n)の各々は、数式QのCd’(n)、CH’(n)の各々に、予測誤差PEの時間変化を示す波形(=予測誤差変動波形)における振幅の時間変化を示す式である振幅変化率ACRを乗じた値である。
ここで、コントローラ10およびコントローラ100が算出した予測補正量Cd(n)、CH(n)の各々は、数式QのCd’(n)、CH’(n)の各々に等しい。コントローラ200は、コントローラ10およびコントローラ100が考慮しなかった「予測誤差変動波形における振幅の時間変化」を考慮して、予測誤差変動波形における現在の周期の1つ前の周期における予測誤差PEを用いて、現在の周期における予測値を補正する。具体的には、コントローラ200の補正量算出部107は、予測補正量Cd(n)、CH(n)を、数式QのCd’(n)、CH’(n)と、振幅変化率ACRと、を考慮した値として算出する。例えば、コントローラ200の補正量算出部107は、予測補正量Cd(n)、CH(n)の各々を、数式QのCd’(n)、CH’(n)の各々に振幅変化率ACRを乗じた値として算出する。
振幅変化率ACRは、導出部202によって算出される。すなわち、判定部106によって「予測誤差PEの時間変化に周期性がある」と判定されると、導出部202は、割合算出部201により算出された「予測誤差変動周期ごとの振幅変動率」を用いて、振幅変化率ACRを算出する。導出部202は、算出した振幅変化率ACRを、補正量算出部107に通知する。ここで、予測誤差変動波形の振幅変化率が時間に対して一定である場合、導出部202は、割合算出部201によって算出された「最新の振幅変動率」を、振幅変化率ACRとして、補正量算出部107に通知する。振幅変化率ACR(=割合算出部201によって算出される「最新の振幅変動率」)は、
として算出される。
(振幅変化率が変動する場合)
図17は、時間に対して振幅変化率が一定でない予測誤差変動波形について、図15のコントローラの実行する、制御量の予測値を補正する処理(=外乱補償処理)の概要を説明するための図である。図17には、判定部106によって周期性が有ると判定された「予測誤差PEの時間変化」であって、「周期的に大きさが変化する予測誤差PE」の示す波形(予測誤差変動波形)の振幅変化率が時間に対して一定でない「予測誤差PEの時間変化」が示されている。
なお、図16と図17とは、予測誤差変動波形の振幅が時間(時刻)に対して一定ではない点において共通している。ただし、図16の予測誤差変動波形において振幅変化率は時間に対して一定であり、つまり、図16の予測誤差変動波形において、予測誤差変動波形の振幅は、時間に応じて(=時刻が進むにつれて)、一定の割合で変化する(一定の割合で、大きくなり、または小さくなる)。これに対して、図17の予測誤差変動波形において振幅変化率は時間に対して一定でなく、つまり、図17の予測誤差変動波形において、予測誤差変動波形の振幅は、時間に応じて(=時刻が進むにつれて)、大きくなったり小さくなったりして振動する。
数式Rの振幅変化率ACRは、「判定部106によって周期性が有ると判定された「予測誤差PEの時間変化」の示す波形(予測誤差変動波形)の振幅変化率が、時間に対して一定である」場合を想定したものだが、振幅変化率が時間に対して一定であるとは限らない。そこで、コントローラ200は、図17に示すような、振幅変化率が時間に対して一定でない予測誤差変動波形についても、1周期前の予測誤差PEを用いて、現在の周期における予測値を補正するため、以下に示す振幅変化率ACRを算出する。
すなわち、コントローラ200は、図17に示すように予測誤差変動波形の振幅変化率が変動することを想定して、数式Pにおける振幅変化率ACRを、過去の振幅変化率から算出する。具体的には、j=0,1,2,・・・として、コントローラ200の導出部202は、数式Pにおける振幅変化率ACRについて、
とする。
ここで、
とする。
予測誤差変動周期ごとの振幅変動率であるACR(k−j)は、割合算出部201によって算出され、割合算出部201は、算出した「予測誤差変動周期ごとの振幅変動率であるACR(k−j)」を、導出部202に通知する。導出部202は、割合算出部201により算出された「予測誤差変動周期ごとの振幅変動率であるACR(k−j)」に、周期ごとの係数c0,c1,・・・,cjを乗じた値の和として、「数式Pにおける振幅変化率ACR」として導出する。
ここで、導出部202は、予測誤差変動波形の振幅変化率が周期的に変動する場合、適当なjを決めて、係数c0,c1,・・・,cjを、最小2乗法などにより決定してもよい。すなわち、導出部202は、数式Pに示すように、「周期ごとの振幅変動率(ACR(k−j))に、周期ごとの係数c0,c1,・・・,cjを乗じた値」の和として、振幅変化率ACRを算出してもよい。
ここで、振幅変化率の変動を考慮する最も簡易な方法として、c0およびc1のみを使用して、2回前から前回への振幅変化率の変化量のα倍が、前回から今回への振幅変化率の変化量であると仮定して、次式のようにしてもよい。言い換えれば、導出部202は、予測誤差変動波形における「現在の周期(=予測誤差変動周期)の2周期前の振幅変化率(ACR(k−1))から、現在の周期の1周期前の振幅変化率(ACR(k))への変化量」のα倍が、「現在の周期の1周期前の振幅変化率(ACR(k))から、今回(=現在の周期)の振幅変化率ACRへの変化量」であると仮定してもよい。この場合、振幅変化率ACRは、
となる。
ここで、数式Uは、数式Sについて、
c0=1+α,
c1=−α,
cj=0(j≧2)
である場合に相当する。
同様に、数式R(つまり、予測誤差変動波形の振幅変化率が一定である場合の、振幅変化率ACR)は、数式Sについて、
c0=1,
cj=0(j≧1)
である場合に相当する。
なお、周期ごとの振幅変化率ACR(k−j)は、より短い期間のデータから、次のように算出してもよい。すなわち、
としてもよい。
数式Tにおいて、周期ごとの振幅変化率ACR(k−j)は、(1)「予測誤差変動波形における、或る予測誤差変動周期における極値である第1極値(PE(Ptime(k-2j)))と、第1極値の半周期前の極値である第2極値(PE(Ptime(k-2j-1)))と、の差の絶対値」と、(2)「第1極値の1周期前の極値である第3極値(PE(Ptime(k-2(j+1))))と、第3極値の半周期前の極値である第4極値(PE(Ptime(k-2(j+1)-1)))と、の差の絶対値」と、の比率として定義される。
これに対して、数式Vにおいて、周期ごとの振幅変化率ACR(k−j)は、(1)「予測誤差変動波形における、或る予測誤差変動周期における極値である第1極値(PE(Ptime(k-2j)))と、第1極値の半周期前の極値である第2極値(PE(Ptime(k-2j-1)))と、の差の絶対値」と、(2)「第2極値(PE(Ptime(k-2j-1)))と第3極値(PE(Ptime(k-2j-2)))との差の絶対値」と、の比率の2乗として定義される。
なお、数式Rについても同様に、(1)「現時刻(時刻n時点)で最後に確定した『極値時刻Ptime(k)』における極値(PE(Ptime(k)))と、『極値時刻Ptime(k)』の半周期前の極値(PE(Ptime(k-1)))と、の差の絶対値」と、(2)「『極値時刻Ptime(k)』の1周期前の極値(PE(Ptime(k-2)))と、『極値時刻Ptime(k)』の1.5周期前の極値(PE(Ptime(k-3)))と、の差の絶対値」と、の比率であることは必須ではない。
数式Rは、(1)「現時刻(時刻n時点)で最後に確定した『極値時刻Ptime(k)』における極値(PE(Ptime(k)))と、『極値時刻Ptime(k)』の半周期前の極値(PE(Ptime(k-1)))と、の差の絶対値」と、(2)「『極値時刻Ptime(k)』の半周期前の極値(PE(Ptime(k-1)))と、『極値時刻Ptime(k)』の1周期前の極値(PE(Ptime(k-2)))と、の差の絶対値」と、の比率として算出されてもよい。
(一定の割合で徐々に大きくなる外乱に対する外乱補償の効果)
図18は、コントローラ200による制御処理の実行中に印加する、「連続的に増加する正弦波状の外乱(つまり、時間に対して一定の割合で振幅が大きくなる、周期性のある外乱)」を示す図である。具体的には、図18は、「時刻0s〜1sの全期間にわたって、周波数50Hz、振幅が0%から100%まで連続的に増加する正弦波状の外乱」を示している。
図19は、制御対象(機械)を「共振のない1慣性系」として、コントローラ200の制御処理の実行中に、図18に示した外乱を印加した場合の、コントローラ200による外乱補償処理の効果等を説明するための図である。
図19の(A)は、図18に示した外乱を印加した場合に、コントローラ200が外乱補償を実行しないときの制御結果を示しており、具体的には、上から「位置、位置偏差、予測誤差、トルク(縦軸)の、時間(横軸)に対する変化」を示している。なお、「外乱補償」とは、周期性のある外乱について、「『外乱の周期(つまり、予測誤差変動周期)における、現在より前(過去)において算出した予測誤差』を用いて、現在(現時刻)の制御量予測値を補正する」処理を指す。
これに対し、図19の(B)は、図18に示した外乱を印加した場合に、コントローラ200が外乱補償を実行するときの制御結果であって、「予測誤差変動波形における、振幅の変化」を考慮しないときの制御結果を示している。図19の(B)における4つの図は、上から「位置、位置偏差、予測誤差、トルク(縦軸)の、時間(横軸)に対する変化」を示している。
さらに、図19の(C)は、図18に示した外乱を印加した場合に、コントローラ200が外乱補償を実行するときの制御結果であって、「予測誤差変動波形における、振幅の変化」を考慮したときの制御結果を示している。図19の(C)における4つの図は、上から「位置、位置偏差、予測誤差、トルク(縦軸)の、時間(横軸)に対する変化」を示している。図19の(B)と(C)とは、コントローラ200が外乱補償を実行する点で共通するが、コントローラ200は、外乱補償の実行に際して、「予測誤差変動波形における、振幅の変化」を、(B)においては考慮しないのに対し、(C)においては考慮する。
図19の(B)に示されているように、コントローラ200は、外乱補償を実行することにより、図18に示した外乱を印加した場合であっても、図19の(A)に示されている位置偏差の値と比べて極めて小さな値に、位置偏差を抑制することができる。
さらに、図19の(C)に示されているように、コントローラ200は、外乱補償を、「予測誤差変動波形における、振幅の変化」を考慮して実行することにより、位置偏差の抑制効果を大幅に向上させることができる。すなわち、図19の(B)において定常的に残存していた位置偏差は、図19の(C)においては、「0.1sec」頃から以降はほとんど「0」に抑制されている。
(一定の割合で影響が徐々に小さくなる外乱に対する外乱補償の効果)
図20は、コントローラ200による制御処理の実行中に印加する、図18に示した外乱とは別の外乱を示す図である。具体的には、図20は、「『2慣性系の制御対象(機械)であって、ベース部と先端部との共振周波数が4Hzである制御対象』の先端部に、時刻2sに印加する、(トルクの大きさに対して)大きさ1%、時間10msのパルス外乱」を示している。図20の(A)と(B)とは、時間(横軸)のスケールが異なるだけであり、同じ「時刻2sに印加する、大きさ1%、時間10msのパルス外乱」外乱を示している。
図21は、図20に示した外乱を印加した場合の、コントローラ200が実行する外乱補償処理の効果等を説明するための図である。具体的には、図21は、前述の制御対象(機械)の先端部の位置をフィードバックして、指令位置に追従するように制御処理を実行するコントローラ200に、図20に示した外乱を印加した場合の、コントローラ200による外乱補償処理の効果等を示している。
図21の(A)は、図20に示した外乱を印加した場合に、コントローラ200が外乱補償を実行しないときの制御結果を示しており、具体的には、上から「位置、位置偏差、予測誤差、トルク(縦軸)の、時間(横軸)に対する変化」を示している。
これに対し、図21の(B)は、図20に示した外乱を印加した場合に、コントローラ200が外乱補償を実行するときの制御結果であって、「予測誤差変動波形における、振幅の変化」を考慮しないときの制御結果を示している。図21の(B)における4つの図は、上から「位置、位置偏差、予測誤差、トルク(縦軸)の、時間(横軸)に対する変化」を示している。
さらに、図21の(C)は、図20に示した外乱を印加した場合に、コントローラ200が外乱補償を実行するときの制御結果であって、「予測誤差変動波形における、振幅の変化」を考慮したときの制御結果を示している。図21の(C)における4つの図は、上から「位置、位置偏差、予測誤差、トルク(縦軸)の、時間(横軸)に対する変化」を示している。図21の(B)と(C)とは、コントローラ200が外乱補償を実行する点で共通するが、コントローラ200は、外乱補償の実行に際して、「予測誤差変動波形における、振幅の変化」を、(B)においては考慮しないのに対し、(C)においては考慮する。
図21の(B)に示されているように、コントローラ200は、外乱補償を実行することにより、図20に示した外乱を印加した場合であっても、図21の(A)に示されている位置偏差と比べて早期に、位置偏差を抑制することができる。
さらに、図21の(C)に示されているように、コントローラ200は、外乱補償を、「予測誤差変動波形における、振幅の変化」を考慮して実行することにより、位置偏差の抑制効果を大幅に向上させることができる。すなわち、図21の(B)において位置偏差は、「2.5sec」以降にも振動しながら残存しているのに対し、図21の(C)において位置偏差は、「2.5sec」以降、ほとんど「0」に抑制されている。
(振幅が周期的に変化する外乱に対する外乱補償の効果)
図22は、コントローラ200による制御処理の実行中に印加する、図18および図20に示した外乱とは別の外乱を示す図である。具体的には、図22は、「時刻0s〜2sの全期間にわたって、周波数50Hz、振幅が50%から100%の間を周波数1Hzで変動する、正弦波状の外乱」を示している。
図23は、制御対象(機械)を「共振のない1慣性系」として、コントローラ200の制御処理の実行中に、図22に示した外乱を印加した場合の、コントローラ200による外乱補償処理の効果等を説明するための図である。図23の(A)は、図22に示した外乱を印加した場合に、コントローラ200が外乱補償を実行しないときの制御結果を示しており、具体的には、上から「位置、位置偏差、予測誤差、トルク(縦軸)の、時間(横軸)に対する変化」を示している。
これに対し、図23の(B)は、図22に示した外乱を印加した場合に、コントローラ200が外乱補償を実行するときの制御結果であって、「予測誤差変動波形における、振幅の変化」を考慮しないときの制御結果を示している。図23の(B)における4つの図は、上から「位置、位置偏差、予測誤差、トルク(縦軸)の、時間(横軸)に対する変化」を示している。
さらに、図23の(C)は、図22に示した外乱を印加した場合に、コントローラ200が外乱補償を実行するときの制御結果であって、「予測誤差変動波形における、振幅の変化」を、「振幅変化率が一定」と仮定して考慮したときの制御結果を示している。具体的には、コントローラ200が、「α=0」として数式Uから算出した「振幅変化率ACR」と、数式Pと、を用いて、外乱補償を実行した場合の制御結果を示している。図23の(C)における4つの図は、上から「位置、位置偏差、予測誤差、トルク(縦軸)の、時間(横軸)に対する変化」を示している。図23の(B)と(C)とは、コントローラ200が外乱補償を実行する点で共通するが、コントローラ200は、外乱補償の実行に際して、「予測誤差変動波形における、振幅の変化」を、(B)においては考慮しないのに対し、(C)においては考慮する。
図23の(B)に示されているように、コントローラ200は、外乱補償を実行することにより、図22に示した外乱を印加した場合であっても、図23の(A)に示されている位置偏差の値と比べて極めて小さな値に、位置偏差を抑制することができる。
さらに、図23の(C)に示されているように、コントローラ200は、外乱補償を、「予測誤差変動波形における、振幅の変化」を考慮して実行することにより、位置偏差の抑制効果を大幅に向上させることができる。すなわち、図23の(C)における位置偏差は、図23の(B)における位置偏差と比べて、さらに小さな値に抑制されている。
図24は、図22に示した外乱を印加した場合に、「予測誤差変動波形における、振幅の変化」を考慮するコントローラ200が、「振幅変化率が一定である」と仮定したときと、「振幅変化率が変動する」と仮定したときと、の制御結果の違いを示している。図24の(A)は、図23の(C)と同一であり、すなわち、「振幅変化率が一定」と仮定して、コントローラ200が、「α=0」として数式Uから算出した「振幅変化率ACR」と、数式Pと、を用いて、外乱補償を実行した場合の制御結果を示している。これに対して、図24の(B)は、「振幅変化率が変動する」と仮定して、コントローラ200が、「α=0.5」として数式Uから算出した「振幅変化率ACR」と、数式Pと、を用いて、外乱補償を実行した場合の制御結果を示している。
図24の(B)に示されているように、コントローラ200は、「振幅変化率が変動する」と仮定した上で、「予測誤差変動波形における、振幅の変化」を考慮して、外乱補償を実行することにより、図24の(A)に比べて位置偏差の抑制効果をさらに向上させる。すなわち、図24の(B)における位置偏差は、図24の(A)における位置偏差と比べて、さらに小さな値に抑制されており、また、図24の(B)における位置偏差の変動を示す波形は、図24の(A)における位置偏差の変動を示す波形に比べて穏やかである。
図23および図24に示されるように、移動開始直後を除いた期間では、振幅変化率の変動を考慮した補償が位置偏差の振幅を最も抑制できている。つまり、外乱の振幅が周期的に変化する場合、コントローラ200は、「振幅変化率が変化する予測誤差変動波形」における「振幅の変化」を考慮して外乱補償を実行することによって、位置偏差を最もよく抑制することができる。
〔実施形態4〕
本発明の実施形態4について、図25に基づいて説明する。なお記載の簡潔性を担保するため、実施形態1から実施形態3までに説明した構成とは異なる構成(処理の手順及び処理の内容)のみについて説明する。すなわち、実施形態1から実施形態3までに記載された構成等は、本実施形態にもすべて含まれ得る。また、実施形態1から実施形態3までに記載した用語の定義も、原則として同じである。
以下に図25を参照して説明するコントローラ300は、コントローラ200と同様に、周期的に変化する予測誤差PEを示す波形(=予測誤差変動波形)の「振幅の変化」を考慮して、1周期前の予測誤差PEを用いた「現在の制御量の予測の補償」を実行する。これにより、コントローラ300は、周期性を持つ外乱による制御量の乱れを抑制することができ、特に、予測誤差変動波形の振幅が時間に対して変化する場合であっても、「現在の制御量の予測の補償」を正確に実行することができる。
すなわち、コントローラ300(モデル予測制御装置)は、目標軌道から制御周期ごとに生成された指令値に対応する制御対象30の制御量を、制御対象30のモデルを用いて予測するモデル予測制御装置である。コントローラ300は、制御対象30の制御量の実測値と前記モデルを用いて予測した制御量の予測値との誤差である予測誤差PEの時間変化について周期性の有無を判定する判定部106と、判定部106により周期性が有ると判定されると、予測誤差PEの時間変化を示す波形(=予測誤差変動波形)における振幅の時間変化を示す式(例えば、「振幅変化率ACR」)を導出する導出部202と、導出部202により導出された式と、予測誤差変動波形における現在の周期の1つ前の周期における予測誤差PEと、を用いて、現在の周期における前記予測値を補正する指令値補正部112(予測値補正部)と、を備える。
前記の構成によれば、コントローラ300は、制御量の実測値と予測値との誤差である予測誤差PEの時間変化について周期性が有ると判定すると、予測誤差変動波形における振幅の時間変化を示す式を導出する。そして、コントローラ300は、導出した式と、予測誤差変動波形における現在の周期の1つ前の周期における予測誤差PEと、を用いて、現在の周期における前記予測値を補正する。
したがって、コントローラ300は、外乱のモデルを必要とせずに、幅広い機械および装置に対して、より簡単に外乱補償を適用できるとの効果を奏する。特に、コントローラ300は、予測誤差PEが周期的に変化する場合に、予測誤差変動波形の振幅が時間に対して一定でないときにも、制御対象30の制御量を正確に予測することができるとの効果を奏する。
図25は、本発明の実施形態4に係るコントローラ300の要部構成を示すブロック図である。図25に示すコントローラ300は、図12に示すコントローラ100の構成に加えて、割合算出部201および導出部202を備えている。コントローラ300は、コントローラ200と同様に、予測誤差変動波形の振幅が時間(時刻)に対して一定ではない場合にも、現在における制御量の予測値を、1周期前の予測誤差PEを用いて正確に補正しようとする。例えば、コントローラ300は、予測誤差変動波形における振幅の時間変化を示す式を算出し、この式と、1周期前の予測誤差PEと、を用いて、現在における制御量の予測値を補正する。
コントローラ300の割合算出部201および導出部202は、コントローラ200の割合算出部201および導出部202と同様であり、割合算出部201は、「予測誤差変動波形における、所定期間ごと(例えば、予測誤差変動周期ごと)の振幅変動率」を算出する。また、導出部202は、割合算出部201から通知された「所定期間ごとの振幅変動率」を用いて、「予測誤差変動波形における、振幅の時間変化を示す式」を導出する。補正量算出部107は、導出部202により導出された「予測誤差変動波形における、振幅の時間変化を示す式」と、予測誤差変動波形における現在の周期(=予測誤差変動周期)の1つ前の周期における予測誤差PEと、を用いて、現在の周期における予測値を補正するための予測補正量を算出する。具体的には、前述のように補正量算出部107は、むだ時間d区間、および予測ホライズンH区間における、予測誤差PEの変化量を、予測補正量Cd(n)、CH(n)として算出する。特に、補正量算出部107は、導出部202が算出する振幅変化率ACRと、予測誤差変動波形における現在の周期(=予測誤差変動周期)の1つ前の周期における予測誤差PEと、を用いて、予測補正量Cd(n)、CH(n)を算出する。そして、補正量算出部107は、算出した予測補正量Cd(n)、CH(n)を、指令値補正部112に通知する。
以上の説明からも明らかな通り、コントローラ300は、コントローラ200のトルク算出部102およびトルク指令部103に代えて、指令値補正部112および位置指令部113を備え、それ以外の点においては、コントローラ200と同様である。
指令値補正部112は、モデル予測制御を実行し、制御対象30の制御量の予測値ができる限り目標値(指令値、つまり指令位置)に近づくように操作量(指令位置)を決定する。指令値補正部112は先ず、モデルを用いて、各制御周期において制御対象30が出力する制御量を予測し、予測した制御量(=制御量の予測値、予測制御量)を算出部104に通知する。指令値補正部112は、また、補正量算出部107から、予測補正量(具体的には、予測補正量Cd(n)、CH(n))を取得する。指令値補正部112は、取得した予測補正量を用いて予測値(制御量の予測値)を補正し、補正後の予測値(補正後予測値)を用いて、制御量が指令値(指令位置)に追従するように位置指令(補正後位置指令)を算出する。指令値補正部112は、算出した補正後指令位置を操作量として位置指令部113に通知する。位置指令部113は、指令値補正部112から通知された補正後指令位置(操作量)を、サーボドライバ120(制御対象30にモーション制御を行う制御系)に、制御対象30の位置制御/速度制御に係る指令値として出力する。コントローラ300は、外乱による制御量の変化を操作量に変換するための演算処理を実行せずに、指令値に制御対象30の制御量が追従するように補正した指令値(補正後指令位置)を、サーボドライバ120に出力することができる。
§4.変形例
これまで、導出部202が、「予測誤差変動波形における、振幅の時間変化を示す式」を、割合算出部201が「予測誤差変動波形において隣り合う極値間の差の絶対値」を用いて算出した「予測誤差変動周期ごとの振幅変化率」から、導出する例を説明してきた。しかしながら、「予測誤差変動周期ごとの振幅変化率」が、「予測誤差変動波形において隣り合う極値間の差の絶対値」を用いて算出されることは必須ではなく、「予測誤差変動周期ごとの振幅変化率」は、既知の数学的手法を用いて算出されてもよい。
〔ソフトウェアによる実現例〕
コントローラ10、100、200および300の制御ブロック(特に、指令値生成部101、トルク算出部102、トルク指令部103、算出部104、極値検出部105、判定部106、補正量算出部107、受付部108、表示制御部109、指令値補正部112、位置指令部113、割合算出部201、および導出部202)は、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよいし、CPU(Central Processing Unit)を用いてソフトウェアによって実現してもよい。
後者の場合、コントローラ10、100、200および300は、各機能を実現するソフトウェアであるプログラムの命令を実行するCPU、上記プログラムおよび各種データがコンピュータ(またはCPU)で読み取り可能に記録されたROM(Read Only Memory)または記憶装置(これらを「記録媒体」と称する)、上記プログラムを展開するRAM(Random Access Memory)などを備えている。そして、コンピュータ(またはCPU)が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体(通信ネットワークや放送波等)を介して上記コンピュータに供給されてもよい。なお、本発明は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。