以下、本発明の一側面に係る実施の形態(以下、「本実施形態」とも表記する)を、図面に基づいて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。以下の各実施形態においては、機械および設備等の制御対象を制御するコントローラ10および50の各々を、モデル予測制御装置の典型例として説明を行う。コントローラ10および50は各々、例えばPLC(プログラマブル・ロジック・コントローラ、Programmable Logic Controller)である。
以下では先ず、コントローラ10および50の理解を容易にするために、コントローラ10または50を含む制御システム1および2の概要を、図2を用いて説明する。その後、実施形態1および2の各々において、コントローラ10および50について、各々の構成および各々の装置が実行する処理について説明する。最後に、コントローラ10および50の各々が奏する効果、および、コントローラ10による「参照軌道の時定数Trの選択方法」等について、図8から図14を用いて説明する。
§1.適用例
(制御システムの概要)
図2は、コントローラ10または50を含む制御システム1および2の概要を示す図である。コントローラ10および50の各々は、制御対象20または30に対してモデル予測制御(Model Predictive Control。以下、「MPC」と略記する)を実行する制御装置(上位コントローラ)である。図2に示すように、制御システム1および2の各々は、「コントローラ10または50」と、「コントローラ10または50によって制御される、制御対象20または30」とを含んでいる。
制御対象20および30は、各々、「サーボドライバ21または31(下位コントローラ)」と、「サーボドライバ21または31によって駆動を制御される、機械23または33」と、を含むフィードバック制御系である。サーボドライバ21および31は、各々、コントローラ10または50からの入力(操作量)を目標値とし、実測値(例えば、フィードバック位置等の制御量)をフィードバック値として、機械23および33の各々にフィードバック制御を行う。具体的には、サーボドライバ21および31の各々は、実測値(制御量)が目標値(操作量)に近づくように、機械23および33の各々(特に、機械23および33の各々が含むサーボモータ)を駆動するための電流を調整する。サーボドライバ21および31の各々は、サーボモータアンプと称されることもある。機械23および33の各々は、例えば、サーボモータおよび当該サーボモータによって駆動される機械要素である。
コントローラ10および50は、各々、制御周期ごとに、制御対象20または30に操作量を出力して、制御対象20または30を制御するPLC(制御装置)である。コントローラ10および50は、各々、制御対象20または30の動特性モデル(以下、単に「モデル」と称することもある)を用いたMPCを、制御対象20または30の制御に適用する。コントローラ10および50は、各々、制御対象に応じて好適な形式の操作量を出力して、制御対象に対するMPCを実行する。コントローラ10および50の各々が出力する操作量は、図2の(A)に例示するように指令速度であってもよいし、図2の(B)に例示するように指令トルクであってもよい。
具体的には、図2の(A)に示す制御システム1において、コントローラ10または50は、制御対象20に対して、具体的にはサーボドライバ21に対して、操作量として指令速度を出力する。サーボドライバ21は、PI制御(比例積分制御)を行なう速度制御部22を備えており、コントローラ10または50からの操作量に従って、以下のように機械23を制御する。すなわち、サーボドライバ21は、コントローラ10または50からの指令速度と、エンコーダ等によって取得するフィードバック値(具体的にはフィードバック位置)を微分して算出したフィードバック速度との偏差である速度偏差から、指令トルクを生成する。そして、サーボドライバ21は、生成した指令トルクに基づいて、機械23を制御する。
これに対して、図2の(B)に示す制御システム2において、コントローラ10または50は、制御対象30に対して、具体的にはサーボドライバ31に対して、操作量として指令トルクを出力する。サーボドライバ31は、トルク制御部32を備え、コントローラ10または50からの操作量(具体的には指令トルク)に従って、機械33を制御する。
コントローラ10および50は、各々、従来の一般的なMPC装置と同様の指令値生成部110およびMPC部120を備える。指令値生成部110は、目標軌道データから制御周期ごとに指令値を生成し、MPC部120は、制御対象20または30の動特性モデルMsを用いたMPCを実行して、制御対象20または30に操作量を出力する。
コントローラ10および50は、各々、指令値生成部110およびMPC部120に加えて、事前調整部130または150を備える。事前調整部130および150は、各々、制御対象20または30に対するMPCの実運転の準備段階である試運転時に、「MPC部120が実運転で実行するMPCのための参照軌道の時定数Tr(または、参照軌道の時定数Trの候補)」を準備する。
コントローラ10および50の各々が、「MPC部120が実運転で実行するMPCのための参照軌道の時定数Tr(または、時定数Trの候補)」を試運転時に準備する方法について、以下に概要を説明する。なお、以下では先ず、コントローラ10が制御対象20に対しMPCを実行する場合に、コントローラ10がMPCのための参照軌道の時定数Tr(または、時定数Trの候補)を準備する方法(第1の方法)について説明を行なう。その後、コントローラ50が制御対象20に対しMPCを実行する場合に、コントローラ50がMPCのための参照軌道の時定数Tr(または、時定数Trの候補)を準備する方法(第2の方法)について説明を行なう。
(MPCのための参照軌道の時定数Trを準備する第1の方法)
コントローラ10は、制御対象20の制御について、MPCを適用する。先ず、コントローラ10は、「制御対象20の負荷Lが、制御対象20の最大負荷Lmaxの半分以下の、所定の負荷Lsである」制御対象20に対応する、制御対象20の動特性モデルMsを作成する。つまり、コントローラ10は、制御対象20の負荷Lが「制御対象20の最小負荷Lmin」から「制御対象20の最大負荷Lmaxの半分以下」までの所定の負荷Lsである場合に対応する、制御対象20の動特性モデルMsを作成する。コントローラ10は、例えば、「所定の負荷Ls」が「制御対象20の最小負荷Lmin」である場合(つまり、「Ls=Lmin」である場合)に対応する、制御対象20の動特性モデルMsを作成する。
コントローラ10が、「負荷Lが、制御対象20の最大負荷Lmaxの半分以下の、所定の負荷Lsである」制御対象20に対応する、制御対象20の動特性モデルMsを作成するのは、以下の理由からである。すなわち、一般的に、制御パラメータ(=制御特性に影響するパラメータ)を固定する場合、制御対象の負荷が小さくなるほど、制御が振動的になりやすいからである。
ただし、コントローラ10にとって、「制御対象20の動特性モデルMsを作成する」ことは必須ではなく、コントローラ10は外部から「制御対象20の動特性モデルMs」を取得してもよい。
次に、コントローラ10は、作成した「制御対象20の動特性モデルMs」(または、外部から取得した「制御対象20の動特性モデルMs」)から、制御対象20に対するMPCに用いる「参照軌道の時定数Tr」の基準値Trsを自動設定する。なお以下では、「制御対象20に対するMPCに用いる『参照軌道の時定数Tr』の基準値Trs」を、「基準値Trs」と略記することがある。
そして、コントローラ10は、負荷Lが最大負荷Lmaxである制御対象20に対してMPCを繰り返し実行して(つまり、試運転を実行して)、「制御(つまり、MPC)を安定化させる参照軌道の時定数Tr」を、基準値Trsから決定する。なお以下では、「制御を安定化させる参照軌道の時定数Tr」を、「時定数Tr」と略記することがある。
具体的には、コントローラ10は、基準値Trsを時定数Trの最小値として、「負荷Lが最大負荷Lmaxである、制御対象20」に対するMPCの試運転から、好適な時定数Trを探索する。例えば、コントローラ10は、「基準値Trsに、『0よりも大きな、所定の差分値dtr』のn倍(nは1以上の整数)を付加した変数Trx」を「参照軌道の時定数」とするMPCを、負荷Lが最大負荷Lmaxである制御対象20に対して実行する。コントローラ10は、負荷Lが最大負荷Lmaxである制御対象20に対して実行するMPCが安定するまで、MPCに用いる「参照軌道の時定数Tr」の候補である変数Trxを徐々に大きくしていき、つまり、「n」を徐々に大きくしていく。言い換えれば、コントローラ10は、負荷Lが最大負荷Lmaxである制御対象20に対する制御が安定するMPCを、MPCの「参照軌道の時定数」とする変数Trxの値を徐々に大きくしていきながら、探索する。コントローラ10は、例えば、「基準値Trsに、所定の差分値dtrを追加的に付加して徐々に大きくしていった変数Trx」のうち、負荷Lが最大負荷Lmaxである制御対象20に対して実行するMPCによる制御を安定させる変数Trxを、時定数Trとする。
コントローラ10は、「基準値Trsに、1よりも大きな所定の倍率を乗じた変数Trx」を「参照軌道の時定数」とするMPCを、負荷Lが最大負荷Lmaxである制御対象20に対して繰り返し実行し、MPCによる制御を安定させる変数Trxを探索してもよい。コントローラ10は、負荷Lが最大負荷Lmaxである制御対象20に対して実行するMPCが安定するまで、変数Trxを徐々に大きくしていき、つまり、基準値Trsに乗じる倍率を徐々に大きくしていってもよい。コントローラ10は、例えば、「基準値Trsに、1よりも大きな所定の倍率を乗じて徐々に大きくしていった変数Trx」のうち、最大負荷Lmaxにおける制御対象20に対して実行するMPCによる制御を安定させる変数Trxを、時定数Trとしてもよい。
ここで、コントローラ10は、「最大負荷Lmaxにおける制御対象20に対するMPCが、『参照軌道の時定数』をTrxとした場合に安定するか」を、「参照軌道の時定数をTrxとするMPC」が適用された制御対象20の状態を示す値を用いて、判定する。特に、コントローラ10は、「参照軌道の時定数をTrxとするMPC」により制御された制御対象20の状態を示す値のうち、少なくとも出力トルクの値を用いて、「制御対象20に対するMPCが安定しているか」を判定する。
これまでに説明してきた「制御対象20に対するMPCのための参照軌道の時定数Tr(または、時定数Trの候補)を準備する方法」と同様の方法を用いて、コントローラ10は、制御対象30に対するMPCのための参照軌道の時定数Trを準備する。
すなわち、先ず、コントローラ10は、「制御対象30の負荷Lが、制御対象30の最大負荷Lmaxの半分以下の、所定の負荷Lsである」制御対象30に対応する、制御対象30の動特性モデルMsを作成する。コントローラ10は、制御対象30の動特性モデルMsを、外部から取得してもよい。次に、コントローラ10は、作成または取得した「制御対象30の動特性モデルMs」から、制御対象30に対するMPCに用いる「参照軌道の時定数Tr」の基準値Trsを自動設定する。コントローラ10は、基準値Trsを時定数Trの最小値として、負荷Lが最大負荷Lmaxである制御対象30に対するMPCの試運転から、「制御対象30に対するMPCによる制御を安定化させる、『参照軌道の時定数Tr』」を探索する。すなわち、コントローラ10は、「参照軌道の時定数をTrxとするMPC」により制御された制御対象30の状態を示す値のうち、少なくとも出力トルクの値を用いて、「参照軌道の時定数をTrxとした場合に、制御対象30に対するMPCが安定するか」を判定する。そして、コントローラ10は、「最大負荷Lmaxにおける制御対象30に対するMPCが、『MPCの参照軌道の時定数』を或るTrxとした場合に安定する」と判定すると、その或るTrxを、制御対象30に対するMPCに用いる「時定数Tr」に決定する。
(MPCのための参照軌道の時定数Trを準備する第2の方法)
次に、コントローラ50が制御対象20に対しMPCを実行する場合に、コントローラ50がMPCのための参照軌道の時定数Tr(または、時定数Trの候補)を準備する方法について説明を行なう。
コントローラ50は、先ず、「制御対象20の負荷Lが、制御対象20の最大負荷Lmaxの半分以下の、所定の負荷Lsである」制御対象20に対応する、制御対象20の動特性モデルMsを作成または取得する。コントローラ50は、次に、作成または取得した「制御対象20の動特性モデルMs」から、制御対象20に対するMPCに用いる「参照軌道の時定数Tr」の基準値Trsを自動設定する。「基準値Trs」の自動設定までにコントローラ50が実行する処理は、「基準値Trs」の自動設定までにコントローラ10が実行する処理と同様である。
コントローラ50は、自動設定した基準値Trsと制御対象20の負荷変動倍率Rとから、制御対象20に対するMPCの実運転時に用いる「参照軌道の時定数Tr」を決定する。ここで、「制御対象20の負荷変動倍率R」は、「制御対象20の最大負荷Lmaxに対応する、制御対象20の総イナーシャ」を、「制御対象20の動特性モデルMsの総イナーシャ」によって除した値である。前述の通り、「制御対象20の動特性モデルMs」は、「負荷Lが、制御対象20の最大負荷Lmaxの半分以下の、所定の負荷Lsである」制御対象20に対応する。したがって、「制御対象20の動特性モデルMsの総イナーシャ」は、「所定の負荷Lsに対応する、制御対象20の総イナーシャ」である。つまり、「制御対象20の負荷変動倍率R=『制御対象20の、最大負荷Lmaxに対応する総イナーシャ』/『制御対象20の、所定の負荷Lsに対応する総イナーシャ』」である。なお、「総イナーシャ」は、「モータのロータイナーシャ」と「負荷イナーシャ」との合計であり(ただし、リニアモータ駆動の場合は、イナーシャの代わりに質量となる)、つまり、「総イナーシャ=モータのロータイナーシャ+負荷イナーシャ」である。
これまでに説明してきた「制御対象20に対するMPCのための参照軌道の時定数Tr(または、時定数Trの候補)を準備する方法」と同様の方法を用いて、コントローラ50は、制御対象30に対するMPCのための参照軌道の時定数Trを準備する。
すなわち、コントローラ50は、「制御対象30の負荷Lが、制御対象30の最大負荷Lmaxの半分以下の、所定の負荷Lsである」制御対象30に対応する、制御対象30の動特性モデルMsを作成または取得する。コントローラ50は、次に、作成または取得した「制御対象30の動特性モデルMs」から、制御対象30に対するMPCに用いる「参照軌道の時定数Tr」の基準値Trsを自動設定する。コントローラ50は、自動設定した基準値Trsと制御対象30の負荷変動倍率Rとから、制御対象30に対するMPCの実運転時に用いる「参照軌道の時定数Tr」を決定する。「制御対象30の負荷変動倍率R=『制御対象30の、最大負荷Lmaxに対応する総イナーシャ』/『制御対象30の、所定の負荷Lsに対応する総イナーシャ』」である。
(MPCの実運転、および、実運転中の「参照軌道の時定数」の切替)
コントローラ10および50の各々は、「制御対象20(または30)の動特性モデルMs」と、「参照軌道の時定数Tr」とを用いて、制御対象20(または30)に対するMPCの実運転を実行する。
コントローラ10および50の各々は、制御対象20(または30)に対するMPCの実運転中に、制御対象20(または30)の状態および負荷の少なくとも一方を用いて、実運転中のMPCに用いる「参照軌道の時定数」を、TrからTrsへと切り替える。また、コントローラ10および50の各々は、Trsへと切り替えた「参照軌道の時定数」を、制御対象20(または30)の状態および負荷の少なくとも一方を用いて、Trへと戻す。すなわち、コントローラ10および50の各々は、制御対象20(または30)に対するMPCに用いる「参照軌道の時定数」を、制御対象20(または30)の状態および負荷の少なくとも一方を用いて実運転中に、TrからTrsへ、または、TrsからTrへ、切り替える。
コントローラ10および50の各々は、例えば、制御対象20(または30)の状態および負荷の少なくとも一方によって、MPCに用いる「参照軌道の時定数」を、TrからTrsへ、または、TrsからTrへ、切り替える。例えば、コントローラ10および50の各々は、「制御対象20(または30)が出力するトルクの振動の大きさ(程度)」と「位置偏差の振動の大きさ」とを用いて、MPCに用いる「参照軌道の時定数」の切替を実行してもよい。
また、例えば、機械の運転シーケンスに応じて、「或る工程以降は、制御対象20(または30)の負荷は、所定の負荷Lsから、一定範囲以上変動しない」と予め分かっている場合、コントローラ10および50の各々は、以下のように、MPCの「参照軌道の時定数」を切り替える。すなわち、コントローラ10および50の各々は、MPCの「参照軌道の時定数」を、その或る工程以降は、TrからTrsへ切り換える。
(従来の制御方法との主たる相違点)
コントローラ10および50の各々は、例えば最小負荷Lminにおける制御対象20(または30)の動特性モデルMsから、制御対象20(または30)に対するMPCに用いる「参照軌道の時定数Tr」の基準値Trsを自動生成しておく。そして、コントローラ10および50の各々は、最大負荷Lmaxにおける制御対象20(または30)に対するMPCの試運転によって、自動生成した「基準値Trs」を用いて、MPCによる制御を安定させる「参照軌道の時定数Tr」を予め決定しておく。コントローラ10および50の各々は、予め決定しておいた時定数Trと、制御対象20(または30)の動特性モデルMsとを用いて、制御対象20(または30)に対するMPCの実運転を実行する。
ここで一般に、MPCは、高追従性を実現することのできる制御方式として知られている。また、MPCにおいて、「MPCに用いる参照軌道の時定数」がMPCの追従性とロバスト性とのトレードオフを調整するためのパラメータであることが知られている。
したがって、コントローラ10および50は、各々、実運転時に実行するMPCについて、必要なロバスト性を確保するためのパラメータ(具体的には、「参照軌道の時定数Tr」)を予め簡易に準備しておくことができる。すなわち、コントローラ10および50の各々は、「基準値Trs」を最小値として用いて「参照軌道の時定数Tr」を決定することにより、ロバスト性を確保するための、実運転時に用いる「参照軌道の時定数Tr」の調整工数を削減することができる。
コントローラ10および50の各々は、予め準備しておいたTrまたはTrsを、「参照軌道の時定数」として用いてMPCの実運転を行ない、実運転の途中に、制御パラメータを任意の値に変更することがない。つまり、コントローラ10および50の各々は、ロバスト性を向上させる方法として、従来の「制御対象の特性に係る推定結果に基づいて、制御パラメータを任意の値に変更する」処理を採用しない。そのため、コントローラ10および50の各々は、制御対象の特性に係る誤推定のリスク、特に誤推定に伴う制御性低下のリスクを回避しながら、ロバスト性の向上を実現することができる。
コントローラ10および50の各々は、高追従性を実現することのできる制御方式として知られるMPCを適用することで、ロバスト性を高めても追従性の高さを確保することができ、高追従性と高ロバスト性とを両立させた制御を実現することができる。コントローラ10および50の各々は、例えば、ワーク重量が変動する搬送装置の制御に適用可能であり、いわゆる「ピック&プレース」工程の制御等に好適である。
これまで図2を参照しながら概要を説明してきたコントローラ10および50について、次に、コントローラ10の構成および実行する処理の詳細について実施形態1として、コントローラ50の構成および実行する処理の詳細について実施形態2として説明する。
§2.構成例
〔実施形態1〕
(コントローラの詳細)
図1は、コントローラ10等の要部構成を示すブロック図である。図1に示すように、コントローラ10は、機能ブロックとして、指令値生成部110、MPC部120、事前調整部130、および、切替部190を備えている。なお、記載の簡潔性を担保するため、本実施の形態に直接関係のない構成は、説明およびブロック図から省略している。ただし、実施の実情に則して、コントローラ10は、当該省略された構成を備えてもよい。図1に例示した各機能ブロックは、例えば、CPU(central processing unit)等が、ROM(read only memory)、NVRAM(non-Volatile random access memory)等で実現された記憶装置(記憶部180)に記憶されているプログラムを不図示のRAM(random access memory)等に読み出して実行することで実現できる。以下、コントローラ10における各機能ブロックについて説明する。
(記憶部以外の機能ブロックの詳細)
指令値生成部110は、外部(例えば、ユーザ)から、目標軌道データ(目標軌道)を受け付け(軌道生成)、受け付けた目標軌道データから制御周期ごとに指令値(例えば、指令位置)を生成する。そして、指令値生成部110は、生成した指令値を、制御周期ごとに、MPC部120へと出力する。
MPC部120は、制御対象20(または30)に対するMPCを実行し、具体的には、制御対象20(または30)の動特性モデルMsを用いて、制御対象20(または30)の未来の状態を予測する。MPC部120は、制御対象20(または30)の未来の出力(制御量の予測値)ができる限り目標値(指令値、つまり指令位置)に近づくように、制御対象20(または30)への操作量を決定する。つまり、MPC部120は、制御対象20(または30)の動特性モデルに基づいて制御対象20(または30)の未来の出力(制御量)の変化を予測し、出力と目標値とができるだけ近づくように、制御対象20(または30)への入力(操作量)を決定する。
MPC部120は、制御対象20(または30)の挙動をモデル化した制御対象20(または30)の動特性モデルMsを、例えば記憶部180の第1モデルテーブル181を参照して取得する。そして、MPC部120は、取得した動特性モデルMsを用いて、各制御周期において制御対象20(または30)が出力する制御量を予測する。すなわち、MPC部120は、動特性モデルMsを用いて、各制御周期における制御量の予測値を算出する。MPC部120は、動特性モデルMsを用いて、「これまでに取得している実測値(=フィードバック値)」および「これまでに制御対象20(または30)へ出力している操作量」から、「未来の制御周期における制御量」を予測する。例えば、MPC部120は、動特性モデルMsを用いて、「これまでに取得しているフィードバック位置」および「これまでに制御対象20(または30)へ出力している指令速度(または、指令トルク)」から、「未来の制御周期におけるフィードバック位置」を予測する。
そして、MPC部120は、予測した「未来の制御周期におけるフィードバック位置(制御量)」が、指令値生成部110から取得した未来の指令位置(指令値)に一致するように、制御対象20(または30)に対する現在の制御周期における操作量を決定する。MPC部120は、決定した「現在の制御周期における操作量(例えば、指令速度または指令トルク)」を、現在の制御周期において、制御対象20(または30)(具体的には、サーボドライバ21または31)に出力する。
ここで、制御対象20(または30)の動特性モデルは、サーボドライバ21(または31)の動特性モデルと、機械23(または33)の動特性モデルとを含んでいる。MPC部120は、制御の対象となる全体(すなわち、サーボドライバ21(または31)と機械23(または33)とを含む、制御対象20(または30)の全体。入力(操作量)から出力(制御量)までの範囲)の動特性モデルMsを用いて、MPCを実行する。
MPC部120は、第1モデルテーブル181に格納されている「制御対象20(または30)の動特性モデルMs」を用いて、制御対象20(または30)に対するMPCの実運転を実行する。MPC部120は、実運転として実行するMPCのための「参照軌道の時定数」として、第2時定数テーブル183に格納されている時定数Tr、または、第1時定数テーブル182に格納されている基準値Trsを用いる。MPC部120は、実運転中に、MPCに用いる「参照軌道の時定数」を、切替部190からの指示にしたがって、TrからTrsへ、または、TrsからTrへ、切り替える。
事前調整部130は、コントローラ10の試運転時に、コントローラ10が実運転時に用いる、「制御対象20(または30)へのMPCのための参照軌道の時定数Tr」を準備する。事前調整部130は、モデル算出部140、設定部150、判定部160、決定部170、および、記憶部180を含んでいる。
モデル算出部140は、「制御対象20(または30)の負荷Lが、制御対象20(または30)の最大負荷Lmaxの半分以下の、所定の負荷Lsである」制御対象20(または30)に対応する、制御対象20(または30)の動特性モデルMsを作成する。モデル算出部140は、例えば、「所定の負荷Ls」が「制御対象20(または30)の最小負荷Lmin」である場合(つまり、「Ls=Lmin」である場合)に対応する、制御対象20(または30)の動特性モデルMsを作成する。例えば、モデル算出部140は、「MPC部120から制御対象20(または30)への操作量」および「その操作量に対応する、制御対象20(または30)の制御量(フィードバック値)」等を、動特性モデルMsを同定するための入出力データとして取得する。そして、モデル算出部140は、取得した入出力データを用いて、制御対象20(または30)の動特性モデルMsを生成する。モデル算出部140は、作成した制御対象20(または30)の動特性モデルMsを、記憶部180の第1モデルテーブル181に格納する。
ただし、コントローラ10にとってモデル算出部140を備えることは必須ではなく、つまり、コントローラ10にとって制御対象20(または30)の動特性モデルMsを生成する処理の実行は必須ではない。コントローラ10は、例えば、制御対象20(または30)の動特性モデルMsを、ユーザ等の外部から取得してもよく、取得したモデルを、記憶部180の第1モデルテーブル181に格納してもよい。
設定部150は、第1モデルテーブル181を参照して、制御対象20(または30)の動特性モデルMsを取得する。設定部150は、制御対象20(または30)の動特性モデルMsから、「その動特性モデルMsを用いる、制御対象20(または30)に対するMPC」のための「参照軌道の時定数Tr」の基準値Trsを設定する。設定部150が、動特性モデルMsから基準値Trsを算出する方法について、詳細は後述する。設定部150は、算出した基準値Trsを、記憶部180の第1時定数テーブル182に格納する。
決定部170は、第1時定数テーブル182を参照して基準値Trsを取得し、取得した基準値Trsを用いて、制御対象20(または30)へのMPCの試運転から、制御対象20(または30)へのMPCによる制御を安定化させる参照軌道の時定数Trを決定する。決定部170は、基準値Trsを最小値として、「負荷Lが最大負荷Lmaxである制御対象20(または30)」に対するMPCの試運転から、動特性モデルMsを用いた、制御対象20(または30)に対するMPCによる制御を安定化させる参照軌道の時定数Trを探索する。
決定部170は、MPC部120に、「『基準値Trs以上である』との条件を満たすTrxを、参照軌道の時定数とする」MPCの試運転を、「最大負荷Lmaxにおける制御対象20(または30)」に対して実行させる。決定部170は、MPC部120に試運転させるMPCが安定するまで、つまり、制御が安定するまで、Trxの値を徐々に大きくして、MPC部120に、MPCの試運転を繰り返し指示する。具体的には、決定部170は、「『参照軌道の時定数がTrxであるMPC』が実行された制御対象20(または30)の状態を示す値」が所定の基準を満たしていると判定部160によって判定されるまで、Trxの値を徐々に大きくして、MPCの試運転を指示する。
例えば、決定部170は、「n」を「1以上の整数」として、「第1時定数テーブル182を参照して取得した基準値Trsに、所定の差分値dtr(>0)のn倍を付加した変数Trx」を生成する。決定部170は、先ず「n=1」として、MPC部120に、「最大負荷Lmaxにおける制御対象20(または30)に対して、生成したTrxを『参照軌道の時定数』とするMPC(試運転)を実行する」よう指示する。「n=1」としたTrxを「参照軌道の時定数」とするMPCが実行されている制御対象20(または30)の状態を示す値が、判定部160により所定の基準を満たしていないと判定されると、決定部170は、「n=2」としてMPC部120に試運転の実行を指示する。決定部170は、「n=1,2,3、・・・」として、判定部160によって、「制御対象20(または30)の状態を示す値が所定の基準を満たす」と判定されるまで、MPC部120に試運転の実行を指示する。判定部160によって、「制御対象20(または30)の状態を示す値が所定の基準を満たす」と判定されると、決定部170は、その時のTrxを、「制御対象20(または30)へのMPCによる制御を安定化させる『参照軌道の時定数Tr』」として決定する。
なお、上述の例では、基準値Trsを最小値として「参照軌道の時定数Tr」を決定する方法として、「基準値Trsに所定の差分値dtrを順次足して『参照軌道の時定数Tr』を探索する」方法について説明したが、これ以外の方法を採用することもできる。
決定部170は、「基準値Trsに、1よりも大きな所定の倍率を乗じて徐々に大きくしていったTrx」のうち、最大負荷Lmaxにおける制御対象20(または30)に対して実行するMPCによる制御を安定させるTrxを、時定数Trとしてもよい。例えば、決定部170は、Trxを基準値Trsの1倍、2倍、4倍、8倍、・・・と徐々に大きくしていって、判定部160によって「制御対象20(または30)の状態を示す値が所定の基準を満たす」と判定されるTrxを探索してもよい。
決定部170は、基準値Trsを最小値として「参照軌道の時定数Tr」を決定する方法として、判定部160によって最初に「制御対象20(または30)の状態を示す値が所定の基準を満たす」と判定されたTrxを「参照軌道の時定数Tr」に決定しなくてもよい。
決定部170は、判定部160によって最初に「制御対象20(または30)の状態を示す値が所定の基準を満たす」と判定されたTrxをさらに大きくした変数Trx1を「参照軌道の時定数」とする試運転を、MPC部120にさらに実行させてもよい。そして、Trx1を「参照軌道の時定数」とするMPCが、Trxを「参照軌道の時定数」とするMPCよりも、より安定的な制御を実現できる場合、Trx1を「参照軌道の時定数Tr」に決定してもよい。Trx1は、「Trxに所定の差分値dtrを足した値」であってもよいし、「Trsに、1よりも大きな所定の倍率を乗じた値」であってもよい。また、決定部170は、Trx1をさらに大きくした変数Trx2、Trx2をさらに大きくした変数Trx3、Trx3をさらに大きくした変数Trx4、・・・を「参照軌道の時定数」とする試運転を、MPC部120にさらに実行させてもよい。そして、決定部170は、「Trx、Trx1、Trx2、Trx3、・・・」の各々を「参照軌道の時定数」とするMPCが実行された制御対象20(または30)の各々の状態を示す値を比較して、最も好適な値を「参照軌道の時定数Tr」に決定してもよい。さらに、コントローラ10は、「Trx、Trx1、Trx2、Trx3、・・・」の各々を「参照軌道の時定数」とするMPCが実行された制御対象20(または30)の各々の状態を示す値をユーザに提示してもよい。そして、コントローラ10は、「Trx、Trx1、Trx2、Trx3、・・・」の中からユーザによって選択された値を、「参照軌道の時定数Tr」に決定してもよい。
決定部170は、基準値Trsを最小値として、例えば上述の方法を用いて「参照軌道の時定数Tr」を決定し、決定した「参照軌道の時定数Tr」を、記憶部180の第2時定数テーブル183に格納する。
判定部160は、試運転時および実運転時に、MPC部120によってMPCが実行されている制御対象20(または30)の状態を示す値を取得して、MPCの安定性(つまり、制御の安定性)を判定し、判定結果を、決定部170および切替部190に通知する。
判定部160は、MPC(制御)の安定性を判定するために、「MPCが実行されている制御対象20(または30)の状態を示す値」が、所定の基準を超えて振動していないかを確認する。判定部160は、「MPCが実行されている制御対象20(または30)の状態を示す値」が、所定の基準を超えて振動していないことを確認すると、制御が安定していると判定する。判定部160は、例えば、「MPCが実行されている制御対象20(または30)の出力トルク」が所定の基準を超えて振動していないかを判定し、出力トルクが所定の基準を超えて振動していることを確認すると、制御が安定していないと判定する。具体的には、判定部160は、「MPCが実行されている制御対象20(または30)の出力トルク」を取得し、出力トルクが振動し、あるいは飽和を繰り返していることを確認すると、制御が安定していない旨を、決定部170および切替部190に通知する。
判定部160による制御の安定性の判定は、「トルクが飽和しているか」を判定するものに限られず、判定部160は、「MPCが実行されている制御対象20(または30)の状態を示す値」が所定の基準を満たしているか否かによって、制御の安定性を判定してもよい。判定部160は、例えば、「MPCが実行されている制御対象20(または30)の出力するトルクの振動の大きさ(程度)」と「位置偏差の振動の大きさ」との組合せから、制御の安定性を判定してもよい。すなわち、制御対象20(または30)の出力するトルクが所定の基準を超えて振動しておらず、かつ、制御対象20(または30)の制御量(フィードバック位置)と指令値(指令位置)との差が所定の範囲に収まっている場合に、制御が安定していると判定してもよい。
判定部160は、「制御対象20(または30)の状態を示す値(トルク、実位置(フィードバック位置)、実速度(実位置の微分値))」および「状態を示す値と指令値との差(位置偏差)」等の変数の少なくとも1つが、所定の基準を超える程度に振動していると、制御が安定していないと判定してもよい。なお、判定部160は、それらの変数の「振動の程度」を、振幅の大きさ、減衰率、および周波数等から判断してもよい。
ただし、制御対象20(または30)の出力するトルクが振動し、あるいは飽和を繰り返している場合は「制御が安定していない」と確実に判定することができるため、判定部160は、少なくとも、「制御対象20(または30)の出力トルク」が所定の基準を超えて振動しているかを判定する。そして、判定部160は、「制御対象20(または30)の出力トルク」が所定の基準を超えて振動していると、「MPCが実行されている制御対象20(または30)の制御が安定していない」旨を、決定部170および切替部190に通知する。
また、判定部160は、「動特性モデルMsに基づく予測誤差」の大きさが所定の閾値より小さいかを判定し、「動特性モデルMsに基づく予測誤差が、所定の閾値より小さい」と判定すると、その判定結果を切替部190に通知する。例えば判定部160は、MPC部120が動特性モデルMsを用いて予測した「制御対象20(または30)の状態を示す値」と、制御対象20(または30)から取得したフィードバック値等の「制御対象20(または30)の状態を示す値」との誤差を算出する。判定部160は、算出した誤差(動特性モデルMsに基づく予測誤差)の大きさが所定の閾値より小さいと判定すると、その判定結果を切替部190に通知する。
切替部190は、「Trを『参照軌道の時定数』とするMPCが実行される制御対象20(または30)の状態および負荷Lの少なくとも一方」に応じて、MPC部120が用いている「参照軌道の時定数」を、TrからTrsへ切り替えさせる。
例えば、判定部160によって「動特性モデルMsに基づく予測誤差が所定の閾値より小さい」と判定され、「負荷Lが所定の負荷Lsに近似したまま変動しない」と判断した場合、切替部190は、「参照軌道の時定数」を、TrからTrsへ切り替える。切替部190は、制御対象20(または30)の状態および負荷Lの少なくとも一方に応じて、実行中のMPCに用いる「参照軌道の時定数」を、予め算出しておいたTrおよびTrsのうち、より追従性の高い制御を実現することができる方に、適宜変更する。
(記憶部の詳細)
記憶部180は、コントローラ10が使用する各種データを格納する記憶装置である。なお、記憶部180は、コントローラ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の使用目的、利便性、コスト、または、物理的な制約等から適宜決定される。記憶部180はさらに第1モデルテーブル181、第1時定数テーブル182、および、第2時定数テーブル183を格納している。
第1モデルテーブル181には、「負荷Lが、制御対象20(または30)の最大負荷Lmaxの半分以下の、所定の負荷Lsである」制御対象20(または30)に対応する、制御対象20(または30)の動特性モデルMsが格納される。第1モデルテーブル181には、例えば、「『所定の負荷Ls』が最小負荷Lminである、制御対象20(または30)」に対応する、制御対象20(または30)の動特性モデルMsが格納される。第1モデルテーブル181には、モデル算出部140によって作成された動特性モデルMsが格納される代わりに、ユーザ等の外部から取得された動特性モデルMsがモデル算出部140によって格納されてもよい。
第1時定数テーブル182には、設定部150によって制御対象20(または30)の動特性モデルMsから算出された「基準値Trs」が格納される。第2時定数テーブル183には、決定部170によって基準値Trsを最小値として用いて決定された「参照軌道の時定数Tr」が格納される。
(コントローラの概要についての整理)
これまでに図1を用いて構成を説明してきたコントローラ10について、その理解を容易にするため、以下のように整理しておく。すなわち、コントローラ10は、目標軌道から制御周期ごとに生成される指令値に対応する制御対象20(または30)の制御量を、制御対象20(または30)のモデルを用いて予測するモデル予測制御装置であって、制御対象20(または30)の最大負荷Lmaxの半分以下の、所定の負荷Lsにおける制御対象20(または30)の動特性に対応する制御対象20(または30)の動特性モデルMs(第1のモデル)から、動特性モデルMsを用いた制御対象20(または30)に対するMPCのための「参照軌道の時定数」の基準値である基準値Trsを設定する設定部150と、「動特性モデルMsを用いたMPCを、制御対象20(または30)の負荷Lが最大である制御対象20(または30)に対して実行した時の、制御対象20(または30)の状態を示す値が、所定の基準を超えて振動しない」との条件を満たす「参照軌道の時定数」である時定数Trを、設定部150により設定された基準値Trsを用いて予め決定しておく決定部170と、決定部170により決定された時定数Trと、動特性モデルMsとを用いて、制御対象20(または30)に対するMPCを実行するMPC部120(実行部)と、を備えている。
前記の構成によれば、コントローラ10は、動特性モデルMsから基準値Trsを設定し、設定した基準値Trsを用いて予め決定しておいた時定数Trと、動特性モデルMsとを用いて、制御対象20(または30)に対するMPCを実行する。
ここで一般に、MPCは高精度のフィードフォワード制御によって追従性を向上できることが知られており、また、MPCにおいて参照軌道の時定数が追従性とロバスト性とのトレードオフを調整するためのパラメータであることが知られている。さらに、制御特性に関係するパラメータを固定する場合、制御対象の負荷が小さくなるほど制御が振動的になりやすいことが知られている。
コントローラ10は、制御対象20(または30)に対するMPCに用いる動特性モデルMsとして、制御対象20(または30)の最大負荷Lmaxの半分以下である、所定の負荷Lsにおける制御対象20(または30)の動特性に対応する、制御対象20(または30)のモデルを用いる。
ここで、制御対象20(または30)の負荷Lの変動に対して、MPCに用いるモデルを固定する場合、どの負荷に対応するモデルが最良のモデルであるのかを予め決定しておくことはできない。しかしながら、コントローラ10は、制御対象20(または30)の小さめの負荷L(具体的には、所定の負荷Ls)に対応するモデルを用いることにより、大きめの負荷Lに対応するモデルを用いる場合に比べて、負荷Lの変動に対して、制御の振動を抑制することができる。
すなわち、一般的に、制御に用いるモデルおよびパラメータを、或る負荷における制御対象に対応させて固定する場合、「制御対象の負荷の、その或る負荷からの変動の大きさ」が一定の範囲を超えると、その制御対象に対する制御について、振動が発生し始める。ただし、相対的に、制御対象の負荷がその或る負荷よりも大きくなる場合に比べて、その或る負荷よりも小さくなる場合の方が、「制御対象の負荷の、その或る負荷からの変動の大きさ」が小さくても、制御は振動的になってしまいやすい。言い換えれば、制御対象の負荷が採り得る範囲(=負荷変動範囲)の中間よりも大きな負荷に対応するモデルを用いる場合より、負荷変動範囲の中間以下の負荷に対応するモデルを用いた場合の方が、「制御が振動的になってしまう可能性」を抑えることができる。そこで、コントローラ10は、制御対象20(または30)の最大負荷Lmaxの半分以下の、所定の負荷Lsに対応する動特性モデルMsを用いることで、「制御が振動的になってしまう可能性」をより抑制したMPCを実行することができる。
したがって、コントローラ10は、高追従性を実現可能なMPCを、高ロバスト性を実現可能な時定数Trを用いて実行することによって、高追従性と高ロバスト性とを両立させた制御を実現することができるとの効果を奏する。
特に、コントローラ10は、動特性モデルMsを用いたMPCのための「参照軌道の時定数」として、予め決定しておいた時定数Trを用いることにより、制御対象20(または30)に対する制御について、高追従性と高ロバスト性とを両立させる。つまり、コントローラ10は、制御に影響し得る要素の推定に基づいて制御の実行中に制御特性に影響するパラメータを変更して、高追従性と高ロバスト性とを両立させた制御を実現しようとするものではない。
したがって、コントローラ10は、推定に基づいて制御の実行中に制御特性に影響するパラメータを変更することなく、制御対象20(または30)に対する制御について、高追従性と高ロバスト性とを両立させることができるとの効果を奏する。高追従性と高ロバスト性とを両立しようして、推定に基づいて制御特性に影響するパラメータを変更する従来方式には、推定が誤っていた場合に制御性が低下するリスクがあるが、コントローラ10にはそのようなリスクはない。
さらに、時定数Trは、「動特性モデルMsを用いたMPCを、制御対象20(または30)の負荷Lが最大である制御対象20(または30)に対して実行した時に、制御対象20(または30)の状態を示す値が、所定の基準を超えて振動しない」という条件を満たすように決定される。また、動特性モデルMsは、制御対象20(または30)の最大負荷Lmaxの半分以下の、所定の負荷Lsにおける制御対象20(または30)の動特性に対応する制御対象20(または30)のモデルである。そして、基準値Trsは、動特性モデルMsから、動特性モデルMsを用いた制御対象20(または30)に対するMPCのための「参照軌道の時定数」の基準値として設定されるものである。そのため、基準値Trsと時定数Trとの間には一定の関係があり、少なくとも、時定数Trは基準値Trsよりも大きくなるという関係がある。
したがって、コントローラ10は、基準値Trsを用いずに時定数Trを決定する場合に比べて、基準値Trsを用いて時定数Trを決定することにより、時定数Trの決定に要する調整工数を抑制できるとの効果を奏する。
コントローラ10において、所定の負荷Lsは、制御対象20(または30)の最小負荷Lminである。前記の構成によれば、コントローラ10は、制御対象20(または30)の最小負荷Lminにおける制御対象20(または30)の動特性に対応する動特性モデルMsから、基準値Trsを設定する。そして、コントローラ10は、設定した基準値Trsを用いて予め決定しておいた時定数Trと、動特性モデルMsとを用いて、制御対象20(または30)に対するMPCを実行する。
ここで、前述の通り、制御特性に関係するパラメータを固定する場合、制御対象の負荷が小さくなるほど制御が振動的になりやすいことが知られている。そこで、コントローラ10は、動特性モデルMsとして、最小負荷Lminにおける制御対象20(または30)の動特性に対応するモデルを、つまり、負荷Lの変動に対して、「制御が振動的になってしまう可能性」を最も抑制することのできるモデルを用いる。
したがって、コントローラ10は、高追従性を実現可能なMPCを、高ロバスト性を実現可能な時定数Trを用いて実行することによって、高追従性と高ロバスト性とを両立させた制御を実現することができるとの効果を奏する。
コントローラ10において、設定部150は、基準値Trsを、動特性モデルMsへのパルス入力の開始時点から、前記パルス入力に対する動特性モデルMsの「出力または出力差分」のピークが出現する時点までの時間を用いて設定する。
前記の構成によれば、コントローラ10は、基準値Trsを、動特性モデルMsへのパルス入力の開始時点から、前記パルス入力に対する動特性モデルMsの「出力または出力差分」のピークが出現する時点までの時間(=ピーク出現時間Tpk)を用いて設定する。つまり、コントローラ10は、基準値Trsを、「動特性モデルMsへの入力を開始してから、動特性モデルMsへの入力変化の影響が、動特性モデルMsからの出力に最も大きく現れるまでの期間」として設定する。したがって、コントローラ10は、基準値Trsを、ピーク出現時間Tpkを用いて、容易に設定することができるとの効果を奏する。
コントローラ10は、前記所定の基準を超えて振動しているか(言い換えれば、制御が安定しているかを判定するための基準に収まっているか)を判定される制御対象20(または30)の状態を示す値として、制御対象20(または30)のトルクの値を判定する判定部160をさらに備えている。
前記の構成によれば、コントローラ10は、MPCを、負荷Lが最大である制御対象20(または30)に対して実行した時の、制御対象20(または30)のトルクの値が前記所定の基準を超えて振動しているかによって、MPCによる制御が安定しているかを判定する。そして、コントローラ10は、前記トルクの値が前記所定の基準を超えて振動しないように、時定数Trを、基準値Trsを用いて決定する。
ここで一般に、或る制御方法が安定した制御を実現することができているかを判定するに際し、その或る制御方法が実行された制御対象の状態を示す値のうち、少なくともトルクが振動し、あるいは飽和を繰り返している場合、安定した制御を実現することができていないと判定することができる。
したがって、コントローラ10は、MPCを実行した制御対象20(または30)の状態を示す値のうち、少なくともトルクの値が前記所定の基準を超えて振動しているかを判定することで、MPCが安定しているかを確実に判定できるとの効果を奏する。
コントローラ10は、MPC部120によりMPCが実行される制御対象20(または30)の状態および負荷Lの少なくとも一方に応じて、MPC部120が動特性モデルMsを用いてMPCを実行する際の参照軌道の時定数を、時定数Trから基準値Trsへ、または、基準値Trsから時定数Trへ、切り替える切替部190をさらに備えている。
前記の構成によれば、コントローラ10は、MPCが実行される制御対象20(または30)の状態および負荷Lの少なくとも一方に応じて、MPCの参照軌道の時定数を、時定数Trから基準値Trsへ、または、基準値Trsから時定数Trへ、切り替える。
例えば、機械の運転シーケンスに応じて、「或る工程以降は、制御対象20(または30)の負荷Lは、所定の負荷Lsから、一定範囲以上変動しない」と予め分かっている場合、コントローラ10は、以下のように、MPCの参照軌道の時定数を切り替える。すなわち、コントローラ10は、MPCの参照軌道の時定数を、その或る工程以降は、時定数Trから基準値Trsへ切り換える。
前述の通り、コントローラ10において、動特性モデルMsは、所定の負荷Lsにおける制御対象20(または30)の動特性に対応するモデルである。また、基準値Trsは、動特性モデルMsを用いた、制御対象20(または30)に対するMPCのための「参照軌道の時定数」の基準値である。そして、所定の負荷Lsにおける制御対象20(または30)に対して、動特性モデルMsを用いたMPCを実行する場合、Trsを「参照軌道の時定数」とした方が、Trを「参照軌道の時定数」とするより、追従性を向上することができる。
例えば、制御対象20(または30)の負荷Lが所定の負荷Lsに一致し変動しない場合、負荷Lが所定の負荷Lsに近似したまま変動しない場合、つまり、負荷Lが所定の負荷Lsから一定範囲以上変動しない場合、コントローラ10は、「参照軌道の時定数」を切り替える。すなわち、これらの場合、コントローラ10は、動特性モデルMsを用いた、制御対象20(または30)に対するMPCの「参照軌道の時定数」を、TrからTrsへ切り換え、追従性を向上させる。動特性モデルMsに基づく予測誤差が或る閾値より小さい場合など、制御対象20(または30)の負荷Lが所定の負荷Lsに近似したまま変動しないと判断できる場合、コントローラ10は、「参照軌道の時定数」をTrsへと切り換えて、追従性を向上させる。
したがって、コントローラ10は、制御対象20(または30)の状態および負荷Lの少なくとも一方に応じて、実行中のMPCに用いる「参照軌道の時定数」を、より追従性の高い制御を実現することのできる値に、適宜変更することができるとの効果を奏する。
特に、基準値Trsおよび時定数Trはいずれも、所定の負荷Lsにおける制御対象20(または30)に対する、または、負荷Lが最大である制御対象20(または30)に対する、MPCによる制御を安定させることのできる時定数として、予め準備しておいたものである。
つまり、コントローラ10は、「制御に影響し得る要素の推定に基づいて、制御の実行中に、制御特性に影響するパラメータを変更する」ものではなく、推定を誤って制御が不安定になるリスクがない。
コントローラ10は、制御対象20(または30)の状態および負荷Lの少なくとも一方に応じて、実行中のMPCに用いる時定数を、予め準備しておいた基準値Trsまたは時定数Trへと、適宜切り替える。したがって、コントローラ10は、制御に影響し得る要素の推定を誤って制御が不安定になるリスクを冒さずに、高追従性と高ロバスト性とを両立させた制御を実現することができるとの効果を奏する。
(参照軌道について)
図3は、MPCのための参照軌道について説明する図である。制御システム1および2においては、図3の破線で示される参照軌道として、現時刻nでの偏差を、「参照軌道の時定数」で指数関数的に「0」に近づける軌道を用いている。MPC部120は、予測ホライズンH後に、指令値との一致を目指すのではなく、現在の偏差を「参照軌道の時定数」でゼロ向かわせる軌道への一致を目指して、操作量を決定する。図3の制御ホライズンHuは、「操作量の最適な時系列を計算する対象区間」を意味する。
(モデル形式について)
MPC部120が用いる動特性モデル(特に、第1モデルテーブル181に格納されている「制御対象20(または30)の動特性モデルMs」)は、例えば、以下のような離散時間伝達関数の形式で与えられる。すなわち、
と示される離散時間伝達関数として、「制御対象20(または30)の動特性モデルMs」は与えられる。本実施の形態においては、MPC部120が用いる動特性モデルMsが離散時間伝達関数として示される例を説明するが、動特性モデルMsが離散時間伝達関数として示されることは必須ではない。動特性モデルMsは、例えば、連続時間伝達関数として示されてもよいし、状態空間モデルとして示されてもよいし、また、ステップ応答の配列データ等として示されてもよい。
(時定数の基準値Trsの自動設定方法の一例)
設定部150は、動特性モデルMsから「基準値Trs」を算出し、例えば、動特性モデルMsへのパルス入力に対する、動特性モデルMsの出力について、その出力のピークが出現する時間(=ピーク出現時間Tpk)の関数として、基準値Trsを求める。すなわち、「F」を所定の関数として、設定部150は「基準値Trs」を、「Trs=F(Tpk)」として求め、例えば、正数αを用いて「Trs=α*Tpk」として求める。以下では、動特性モデルMsからピーク出現時間Tpkを求める方法の一例を、図4を参照して説明する。
図4は、「動特性モデルMsへのパルス入力の開始時点」から、「このパルス入力に対する動特性モデルMsの出力の『ピーク』が出現する時点」までの時間(期間)を、つまり、ピーク出現時間Tpkを、算出する方法の一例を説明する図である。設定部150は、動特性モデルMsへの入力を変化させてから、動特性モデルMsへの入力の変化の影響が、動特性モデルMsの出力に最も大きく現れるまでの期間として、「ピーク出現時間Tpk」を算出する。ただし、図4の(B)に示すように、動特性モデルMsが積分特性を含む場合、設定部150は、動特性モデルMsの出力に差分処理を行って、「ピーク出現時間Tpk」を求める。
(定位系モデルについて)
動特性モデルMsが図4の(A)に示すような定位系モデルである場合、設定部150は、以下のように「ピーク出現時間Tpk」を求める。すなわち、動特性モデルMsが離散時間伝達関数として示される時、設定部150は、1サンプリング周期(=制御周期)だけ「モデル入力u=1」とし、2周回目以降は「モデル入力u=0」として、モデル出力yを計算する。図4の(A)において、「モデル入力u」は、例えば動特性モデルMsへ入力する指令位置であり、「モデル出力y」は、例えば動特性モデルMsの出力する実位置(フィードバック位置)の予測値である。動特性モデルMsが定位系モデルである場合、「ピーク出現時間Tpk」は、「モデル入力u」の入力時点(入力開始時点)から、「モデル出力y」のピークが出現する時点までの時間(期間)である。
なお、図4の(A)において「モデル出力y」は滑らかな曲線として描かれているが、実際には、モデル出力yとその差分データとは、サンプリング周期(=モデル入力uのパルス幅)の間隔でしか更新されないため、「モデル出力y」は階段状のグラフになる。
(積分系モデルについて)
動特性モデルMsが図4の(B)に示すような積分系モデルである場合、設定部150は、以下のように「ピーク出現時間Tpk」を求める。すなわち、1サンプリング周期(=制御周期)だけ「モデル入力u=1」とし、2周回目以降は「モデル入力u=0」とすると、動特性モデルMsからは、図4の(B)の左側に示すような応答が得られる。図4の(B)の左側において、「モデル入力u」は、例えば動特性モデルMsへ入力する指令速度であり、「モデル出力y」は、例えば動特性モデルMsの出力する実位置(フィードバック位置)の予測値である。
そして、設定部150は、図4の(B)の左側に示す「モデル出力y」から、図4の(B)の右側に示す「モデル出力y」の差分データydを求め、この差分データydのピークが出現する時点を「ピーク出現時間Tpk」とする。具体的には、図4の(B)の右側に示す曲線(「モデル出力y」の差分データydを示す曲線)は、図4の(B)の左側に示す曲線(「モデル出力y」を示す曲線)から、以下のようにして算出したものである。すなわち、「n周期目のサンプリング周期におけるモデル出力yn」と「n-1周期目のサンプリング周期におけるモデル出力yn-1」との差分を、1サンプリング周期(=制御周期)で除することにより、図4の(B)の右側に示す曲線が得られる。動特性モデルMsが積分系モデルである場合、「ピーク出現時間Tpk」は、「モデル入力u」の入力時点(入力開始時点)から、「『モデル出力y』の差分データyd」のピークが出現する時点までの時間(期間)である。
(ピーク出現時間Tpkの算出方法の一例)
動特性モデルMsが図4の(A)に示すような定位系モデルである場合、「ピーク出現時間Tpk」は、以下のように求めることができる。動特性モデルMsが離散時間伝達関数として示される場合、「モデル出力y(例えば、動特性モデルMsの出力する実位置の予測値)」および「n周期目のサンプリング周期におけるモデル出力yn」は以下のように示される。すなわち、
したがって、「Ts」を「サンプリング周期(=制御周期)」とし、「N」を十分大きな正の整数として、以下の処理を実行することにより、「ピーク出現時間Tpk」を求めることができる。すなわち、
この処理は、モデル出力yの最大値が出現する時間として、「ピーク出現時間Tpk」を求めている。動特性モデルMsが図4の(B)に示すような積分系モデルである場合、モデル出力yの1サンプリング周期あたりの変化量(差分)の最大値が出現する時間として、「ピーク出現時間Tpk」を求めることができる。設定部150は、上述のようにして求めた「ピーク出現時間Tpk」から、例えば、正数αを用いて、「Trs=α*Tpk」として、「基準値Trs」を算出する。
(予測ホライズンの自動設定方法の一例)
コントローラ10は、「基準値Trs」と同様に、MPCに用いる予測ホライズンH、および、制御ホライズンHuも、「ピーク出現時間Tpk」の関数として求めてもよい。ただし、予測ホライズンHも制御ホライズンHuも整数であるため、制御周期で除して四捨五入等で整数化する。
「F1」を所定の関数として、コントローラ10は、「予測ホライズンH」を、「H=F1(Tpk)」として求めてもよい。例えば、「Ts」を「サンプリング周期(=制御周期)」とし、正数βを用いて、
として、「予測ホライズンH」を求めてもよい。なお、「round():四捨五入関数」とする。
同様に、「F2」を所定の関数として、コントローラ10は、「制御ホライズンHu」を、「Hu=F2(Tpk)」として求めてもよい。例えば、「サンプリング周期Ts」と正数γとを用いて、
として、「制御ホライズンHu」を求めてもよい。
§3.動作例
図5は、コントローラ10が実行する処理の概要を示すフロー図である。モデル算出部140は、「制御対象20(または30)への操作量」および「その操作量に対応する、制御対象20(または30)の制御量(フィードバック値)」等を、動特性モデルMsを同定するための入出力データとして取得する(S110)。
モデル算出部140は、取得した入出力データを用いて、「負荷Lが、最大負荷Lmaxの半分以下の、所定の負荷Lsである」制御対象20(または30)に対応する、制御対象20(または30)の動特性モデルMsを作成する(S120)。モデル算出部140は、例えば、所定の負荷Lsが最小負荷Lminである制御対象20(または30)に対応する、制御対象20(または30)の動特性モデルMsを作成する。モデル算出部140は、作成した動特性モデルMsを、記憶部180の第1モデルテーブル181に格納する。
設定部150は、第1モデルテーブル181を参照して取得した動特性モデルMsから、「動特性モデルMsを用いるMPC」のための「参照軌道の時定数Tr」の基準値Trsを設定する(S130)。既に説明した通り、設定部150は、基準値Trsを、「S120で作成した(または、外部から設定された)動特性モデルMsの、パルス入力に対する出力特性、または、出力特性の微分(差分)値」から、具体的にはピーク出現時間Tpkから、算出する。設定部150は、算出した基準値Trsを、記憶部180の第1時定数テーブル182に格納する。
決定部170は、第1時定数テーブル182を参照して基準値Trsを取得し、取得した基準値Trsを最小値として用いて、「動特性モデルMsを用いる、制御対象20(または30)に対するMPC」を安定化させる「参照軌道の時定数Tr」を決定する。決定部170は、MPC部120に試運転させるMPCが安定するまで、つまり、制御が安定するまで、変数Trxの値を徐々に大きくして、MPC部120に、「参照軌道の時定数」の値をTrxとするMPCの試運転を繰り返し指示する。
すなわち、決定部170は先ず、変数Trxに基準値Trsの値を代入する(S140)。そして、決定部170は、MPC部120に、「最大負荷Lmaxにおける制御対象20(または30)」に対する、動特性モデルMsを用いるMPCの試運転を、「参照軌道の時定数」の値をTrxとして、実行させる(S150)。
判定部160は、「参照軌道の時定数がTrxであるMPC」の制御結果データを取得し、つまり、「『参照軌道の時定数がTrxであるMPC』が実行された制御対象20(または30)」の状態を示す値(例えば、出力トルク)を取得する(S160)。判定部160は、取得した制御結果データを用いて、「安定な制御ができているか」を判定する(S170)。判定部160は、少なくとも、「『参照軌道の時定数がTrxであるMPC』が実行された制御対象20(または30)」の出力トルクが、所定の基準を超えて振動していないかを、例えば、飽和していないかを、判定する。
判定部160によって、「安定な制御ができていない」と判定されると(S170でNo)、決定部170は、「変数Trxに、『0よりも大きな所定の差分値dtr』を足したTrx」を生成する(S180)。決定部170は、「『参照軌道の時定数』の値を、S180で生成したTrxとする」MPCの試運転を実行させ(S150)、判定部160は、試運転の制御結果データを取得して(S160)、「安定な制御ができているか」を判定する(S170)。判定部160によって「安定な制御ができている」と判定されるまで、決定部170は、変数Trxの値を徐々に大きくして、MPC部120に繰り返し試運転を実行させる。具体的には、決定部170は、変数Trxの値を徐々に大きくしていきながら、MPC部120に、「参照軌道の時定数」の値をTrxとする、「最大負荷Lmaxにおける制御対象20(または30)」に対するMPCを、繰り返し実行させる。
判定部160によって、「安定な制御ができている」と判定されると(S170でYes)、決定部170は、その時の変数Trxの値を、「制御対象20(または30)へのMPCによる制御を安定化させる参照軌道の時定数Tr」に決定する(S190)。そして、決定部170は、決定した「参照軌道の時定数Tr」を、記憶部180の第2時定数テーブル183に格納する。
MPC部120は、決定部170が決定した「参照軌道の時定数Tr」を、つまり、第2時定数テーブル183に格納されている時定数Trを用いて、制御対象20(または30)に対する、動特性モデルMsを用いたMPCの実運転を実行する(S200)。
前述の通り、決定部170は、S180において、「差分値dtrを足して、変数Trxの値を大きくする」のに代えて、「1よりも大きな所定の倍率を乗じて、変数Trxの値を大きくする」方法を採用してもよい。
また、決定部170は、判定部160によって最初に「安定な制御ができている」と判定されたTrxを「参照軌道の時定数Tr」に決定しなくてもよい。決定部170は、判定部160によって最初に「安定な制御ができている」と判定されたTrxに一定倍率を乗じたり、差分値dtrをさらに足したりした変数Trx1を、「参照軌道の時定数Tr」に決定してもよい。決定部170は、Trxをさらに大きくした変数Trx1、Trx1をさらに大きくした変数Trx2、Trx2をさらに大きくした変数Trx3のいずれかを、適宜、「制御対象20(または30)へのMPCによる制御を安定化させる参照軌道の時定数Tr」に決定してもよい。
これまで図5を参照しながら説明してきた「コントローラ10が実行する処理」は、以下のように整理することができる。すなわち、「コントローラ10が実行する処理」は、目標軌道から制御周期ごとに生成される指令値に対応する制御対象20(または30)の制御量を、制御対象20(または30)のモデルを用いて予測するモデル予測制御装置の制御方法であって、制御対象20(または30)の最大負荷Lmaxの半分以下の、所定の負荷Lsにおける制御対象20(または30)の動特性に対応する制御対象20(または30)の動特性モデルMsから、動特性モデルMsを用いた制御対象20(または30)に対するMPCのための「参照軌道の時定数」の基準値である基準値Trsを設定する設定ステップ(S130)と、「動特性モデルMsを用いたMPCを、制御対象20(または30)の負荷が最大である制御対象20(または30)に対して実行した時の、制御対象20(または30)の状態を示す値が、所定の基準を超えて振動しない」との条件を満たす時定数Trを、設定ステップS130にて設定した基準値Trsを用いて予め決定しておく決定ステップ(S190)と、決定ステップS190にて決定した時定数Trと、動特性モデルMsとを用いて、制御対象20(または30)に対するMPCを実行する実行ステップ(S200)と、を含んでいる。
前記の方法によれば、「コントローラ10が実行する処理」は、動特性モデルMsから基準値Trsを設定し、設定した基準値Trsを用いて予め決定しておいた時定数Trと、動特性モデルMsとを用いて、制御対象20(または30)に対するMPCを実行する。
ここで一般に、MPCは高精度のフィードフォワード制御によって追従性を向上できることが知られており、また、MPCにおいて参照軌道の時定数が追従性とロバスト性とのトレードオフを調整するためのパラメータであることが知られている。さらに、制御特性に関係するパラメータを固定する場合、制御対象の負荷が小さくなるほど制御が振動的になりやすいことが知られている。
「コントローラ10が実行する処理」は、制御対象20(または30)に対するMPCに用いる動特性モデルMsとして、制御対象20(または30)の最大負荷Lmaxの半分以下である所定の負荷Lsにおける制御対象20(または30)の動特性に対応する、制御対象20(または30)のモデルを用いる。
ここで、制御対象20(または30)の負荷Lの変動に対して、MPCに用いるモデルを固定する場合、どの負荷に対応するモデルが最良のモデルであるのかを予め決定しておくことはできない。しかしながら、「コントローラ10が実行する処理」は、制御対象20(または30)の小さめの負荷L(具体的には、所定の負荷Ls)に対応するモデルを用いることにより、大きめの負荷Lに対応するモデルを用いる場合に比べて、負荷Lの変動に対して、制御の振動を抑制することができる。
すなわち、一般的に、制御に用いるモデルおよびパラメータを、或る負荷における制御対象に対応させて固定する場合、「制御対象の負荷の、その或る負荷からの変動の大きさ」が一定の範囲を超えると、その制御対象に対する制御について、振動が発生し始める。ただし、相対的に、制御対象の負荷がその或る負荷よりも大きくなる場合に比べて、その或る負荷よりも小さくなる場合の方が、「制御対象の負荷の、その或る負荷からの変動の大きさ」が小さくても、制御は振動的になってしまいやすい。言い換えれば、制御対象の負荷が採り得る範囲(=負荷変動範囲)の中間よりも大きな負荷に対応するモデルを用いる場合より、負荷変動範囲の中間以下の負荷に対応するモデルを用いた場合の方が、「制御が振動的になってしまう可能性」を抑えることができる。そこで、「コントローラ10が実行する処理」は、制御対象20(または30)の最大負荷Lmaxの半分以下の、所定の負荷Lsに対応するモデルを用いることで、「制御が振動的になってしまう可能性」をより抑制したモデル予測制御を実行することができる。
したがって、「コントローラ10が実行する処理」は、高追従性を実現可能なMPCを、高ロバスト性を実現可能な時定数Trを用いて実行することによって、高追従性と高ロバスト性とを両立させた制御を実現することができるとの効果を奏する。
特に、「コントローラ10が実行する処理」は、動特性モデルMsを用いたMPCのための参照軌道の時定数として、予め決定しておいた時定数Trを用いることにより、制御対象20(または30)に対する制御について、高追従性と高ロバスト性とを両立させる。つまり、「コントローラ10が実行する処理」は、制御に影響し得る要素の推定に基づいて制御の実行中に制御特性に影響するパラメータを変更して、高追従性と高ロバスト性とを両立させた制御を実現しようとするものではない。
したがって、「コントローラ10が実行する処理」は、推定に基づいて制御の実行中に制御特性に影響するパラメータを変更することなく、制御対象20(または30)に対する制御について、高追従性と高ロバスト性とを両立させることができるとの効果を奏する。高追従性と高ロバスト性とを両立しようして、推定に基づいて制御特性に影響するパラメータを変更する従来方式には、推定が誤っていた場合に制御性が低下するリスクがあるが、「コントローラ10が実行する処理」にはそのようなリスクはない。
さらに、時定数Trは、「動特性モデルMsを用いたMPCを、制御対象20(または30)の負荷Lが最大である制御対象20(または30)に対して実行した時に、制御対象20(または30)の状態を示す値が、所定の基準を超えて振動しない」という条件を満たすように決定される。また、動特性モデルMsは、制御対象20(または30)の最大負荷Lmaxの半分以下の、所定の負荷Lsにおける制御対象20(または30)の動特性に対応する制御対象20(または30)のモデルである。そして、基準値Trsは、動特性モデルMsから、動特性モデルMsを用いた制御対象20(または30)に対するMPCのための「参照軌道の時定数」の基準値として設定されるものである。そのため、基準値Trsと時定数Trとの間には一定の関係があり、少なくとも、時定数Trは基準値Trsよりも大きくなるという関係がある。
したがって、「コントローラ10が実行する処理」は、基準値Trsを用いずに時定数Trを決定する場合に比べて、基準値Trsを用いて時定数Trを決定することにより、時定数Trの決定に要する調整工数を抑制することができるとの効果を奏する。
〔実施形態2〕
本発明の他の実施形態について、図6および図7に基づいて説明すれば、以下のとおりである。なお記載の簡潔性を担保するため、実施形態1とは異なる構成(処理の手順および処理の内容)のみについて説明する。すなわち、実施形態1で記載された構成等は、本実施形態にもすべて含まれ得る。また、実施形態1で記載した用語の定義も同じである。
(構成)
図6は、本発明の実施形態2に係るコントローラ50等の要部構成を示すブロック図である。コントローラ50は、図1のコントローラ10と同様に、指令値生成部110、MPC部120、および、切替部190を備え、また、コントローラ10の事前調整部130に代えて、事前調整部530を備えている。
事前調整部530は、コントローラ50の試運転時に、コントローラ50が実運転時に用いる、「制御対象20(または30)へのMPCのための参照軌道の時定数Tr」を準備する。事前調整部530は、事前調整部130と同様に、モデル算出部140、設定部150、判定部160、決定部170を備え、また、事前調整部130の記憶部180に代えて、記憶部580を備え、さらに、負荷変動倍率算出部510を備えている。
負荷変動倍率算出部510は、「負荷Lが最大負荷Lmaxである、制御対象20(または30)の総イナーシャ」を、「負荷Lが所定の負荷Lsである、制御対象20(または30)の総イナーシャ」で除した値として、負荷変動倍率Rを算出する。つまり、負荷変動倍率算出部510は、「最大負荷Lmaxに対応する、制御対象20(または30)の総イナーシャ」を、「所定の負荷Lsに対応する、制御対象20(または30)の総イナーシャ」で除した値として、負荷変動倍率Rを算出する。ここで、第1モデルテーブル181に格納される「制御対象20(または30)の動特性モデルMs」は、「制御対象20(または30)の負荷Lが所定の負荷Lsである、制御対象20(または30)」に対応する。したがって、「所定の負荷Lsに対応する、制御対象20(または30)の総イナーシャ」は、「制御対象20(または30)の動特性モデルMsの総イナーシャ(動特性モデルMsに対応する制御対象20(または30)の総イナーシャ)」と言い換えてもよい。負荷変動倍率算出部510は、算出した負荷変動倍率Rを負荷変動倍率テーブル581に格納する。
なお、前述の通り、「制御対象20(または30)の総イナーシャ」は、「機械23または33が含むサーボモータのロータイナーシャ」と「制御対象20(または30)の負荷イナーシャ」との合計である。ただし、制御対象20(または30)がリニアモータ駆動である場合、イナーシャの代わりに質量となる。また、いわゆる「イナーシャ比」は、「負荷イナーシャ」を「モータのロータイナーシャ」で除した値であり、つまり、「イナーシャ比=負荷イナーシャ/モータのロータイナーシャ」である。「総イナーシャ=モータのロータイナーシャ+負荷イナーシャ」であるから、「総イナーシャ=モータのロータイナーシャ*(1.0+イナーシャ比)」となる。
記憶部580は、コントローラ10の記憶部180と同様に、第1モデルテーブル181、第1時定数テーブル182、および、第2時定数テーブル183を格納し、さらに、記憶部180には格納されていない負荷変動倍率テーブル581を格納している。負荷変動倍率テーブル581には、負荷変動倍率算出部510によって算出された負荷変動倍率Rが格納される。
コントローラ50の決定部170は、コントローラ10の決定部170と同様に、第1時定数テーブル182を参照して取得した基準値Trsを用いて、制御対象20(または30)へのMPCによる制御を安定化させる「参照軌道の時定数Tr」を決定する。ただし、コントローラ50の決定部170による「参照軌道の時定数Tr」の決定方法は、コントローラ10の決定部170による「参照軌道の時定数Tr」の決定方法とは異なる。
コントローラ10の決定部170は、基準値Trsを最小値として、「変数Trx(=参照軌道の時定数Trの候補)」の値を徐々に大きくしていきながら、「最大負荷Lmaxにおける制御対象20(または30)」に対するMPCが安定するTrxを探索する。動特性モデルMsを用いた、「最大負荷Lmaxにおける制御対象20(または30)」に対するMPCが、「参照軌道の時定数」を或るTrxにしたときに安定すると、コントローラ10の決定部170は、その或るTrxを「参照軌道の時定数Tr」に決定する。
これに対して、コントローラ50の決定部170は、基準値Trsと、負荷変動倍率テーブル581に格納されている負荷変動倍率Rとから、制御対象20に対するMPCの実運転時に用いる「参照軌道の時定数Tr」を決定する。コントローラ50の決定部170は、例えば「Tr=Trs*R」として、「参照軌道の時定数Tr」を決定し、決定した「参照軌道の時定数Tr」を、記憶部580の第2時定数テーブル183に格納する。
これまでに図6を用いて構成を説明してきたコントローラ50について、その理解を容易にするため、以下のように整理しておく。すなわち、コントローラ50は、目標軌道から制御周期ごとに生成される指令値に対応する制御対象20(または30)の制御量を、制御対象20(または30)のモデルを用いて予測するモデル予測制御装置であって、制御対象20(または30)の最大負荷Lmaxの半分以下の、所定の負荷Lsにおける制御対象20(または30)の動特性に対応する制御対象20(または30)の動特性モデルMsから、動特性モデルMsを用いた制御対象20(または30)に対するMPCのための「参照軌道の時定数」の基準値である基準値Trsを設定する設定部150と、動特性モデルMsを用いたMPCを、制御対象20(または30)の負荷Lが最大である制御対象20(または30)に対して実行した時の、制御対象20(または30)の状態を示す値が、所定の基準を超えて振動しないとの条件を満たす「参照軌道の時定数」である時定数Trを、設定部150により設定された基準値Trsを用いて予め決定しておく決定部170と、決定部170により決定された時定数Trと、動特性モデルMsとを用いて、制御対象20(または30)に対するMPCを実行するMPC部120(実行部)と、を備えている。
前記の構成によれば、コントローラ50は、動特性モデルMsから基準値Trsを設定し、設定した基準値Trsを用いて予め決定しておいた時定数Trと、動特性モデルMsとを用いて、制御対象20(または30)に対するMPCを実行する。
ここで一般に、MPCは高精度のフィードフォワード制御によって追従性を向上できることが知られており、また、MPCにおいて参照軌道の時定数が追従性とロバスト性とのトレードオフを調整するためのパラメータであることが知られている。さらに、制御特性に関係するパラメータを固定する場合、制御対象の負荷が小さくなるほど制御が振動的になりやすいことが知られている。
コントローラ50は、制御対象20(または30)に対するMPCに用いる動特性モデルMsとして、制御対象20(または30)の最大負荷Lmaxの半分以下である、前記所定の負荷Lsにおける制御対象20(または30)の動特性に対応する、制御対象20(または30)のモデルを用いる。
ここで、制御対象20(または30)の負荷Lの変動に対して、MPCに用いるモデルを固定する場合、どの負荷Lに対応するモデルが最良のモデルであるのかを予め決定しておくことはできない。しかしながら、コントローラ50は、制御対象20(または30)の小さめの負荷L(具体的には、所定の負荷Ls)に対応するモデルを用いることにより、大きめの負荷Lに対応するモデルを用いる場合に比べて、負荷Lの変動に対して、制御の振動を抑制することができる。
すなわち、一般的に、制御に用いるモデルおよびパラメータを、或る負荷における制御対象に対応させて固定する場合、「制御対象の負荷の、その或る負荷からの変動の大きさ」が一定の範囲を超えると、その制御対象に対する制御について、振動が発生し始める。ただし、相対的に、制御対象の負荷がその或る負荷よりも大きくなる場合に比べて、その或る負荷よりも小さくなる場合の方が、「制御対象の負荷の、その或る負荷からの変動の大きさ」が小さくても、制御は振動的になってしまいやすい。言い換えれば、制御対象の負荷が採り得る範囲(=負荷変動範囲)の中間よりも大きな負荷に対応するモデルを用いる場合より、負荷変動範囲の中間以下の負荷に対応するモデルを用いた場合の方が、「制御が振動的になってしまう可能性」を抑えることができる。そこで、コントローラ50は、制御対象20(または30)の最大負荷Lmaxの半分以下の、所定の負荷Lsに対応するモデルを用いることで、「制御が振動的になってしまう可能性」をより抑制したMPCを実行することができる。
したがって、コントローラ50は、高追従性を実現可能なMPCを、高ロバスト性を実現可能な時定数Trを用いて実行することによって、高追従性と高ロバスト性とを両立させた制御を実現することができるとの効果を奏する。
特に、コントローラ50は、動特性モデルMsを用いたMPCのための「参照軌道の時定数」として、予め決定しておいた時定数Trを用いることにより、制御対象20(または30)に対する制御について、高追従性と高ロバスト性とを両立させる。つまり、コントローラ50は、制御に影響し得る要素の推定に基づいて制御の実行中に制御特性に影響するパラメータを変更して、高追従性と高ロバスト性とを両立させた制御を実現しようとするものではない。
したがって、コントローラ50は、推定に基づいて制御の実行中に制御特性に影響するパラメータを変更することなく、制御対象20(または30)に対する制御について、高追従性と高ロバスト性とを両立させることができるとの効果を奏する。高追従性と高ロバスト性とを両立しようして、推定に基づいて制御特性に影響するパラメータを変更する従来方式には、推定が誤っていた場合に制御性が低下するリスクがあるが、コントローラ50にはそのようなリスクはない。
さらに、時定数Trは、「動特性モデルMsを用いたMPCを、制御対象20(または30)の負荷が最大である制御対象20(または30)に対して実行した時に、制御対象20(または30)の状態を示す値が、所定の基準を超えて振動しない」という条件を満たすように決定される。また、動特性モデルMsは、制御対象20(または30)の最大負荷Lmaxの半分以下の、所定の負荷Lsにおける制御対象20(または30)の動特性に対応する制御対象20(または30)のモデルである。そして、基準値Trsは、動特性モデルMsから、動特性モデルMsを用いた制御対象20(または30)に対するMPCのための「参照軌道の時定数」の基準値として設定されるものである。そのため、基準値Trsと時定数Trとの間には一定の関係があり、少なくとも、時定数Trは基準値Trsよりも大きくなるという関係がある。
したがって、コントローラ50は、基準値Trsを用いずに時定数Trを決定する場合に比べて、基準値Trsを用いて時定数Trを決定することにより、時定数Trの決定に要する調整工数を抑制できるとの効果を奏する。
コントローラ50において、決定部170は、制御対象20(または30)の最大負荷Lmaxにおける総イナーシャの、制御対象20(または30)の所定の負荷Lsにおける総イナーシャに対する比率と、基準値Trsとを用いて、時定数Trを決定する。前述の通り、回転モータにおける「イナーシャ」は、回転モータがリニアモータである場合、「質量」である。
前記の構成によれば、コントローラ50は、時定数Trを、「『最大負荷Lmaxに対応する総イナーシャ』の、『所定の負荷Lsに対応する総イナーシャ』に対する比率(これを「負荷変動倍率R」とも称する)」と、基準値Trsとを用いて決定する。したがって、コントローラ50は、負荷変動倍率Rと基準値Trsとを用いて、時定数Trを容易に決定することができるとの効果を奏する。
(動作)
図7は、コントローラ50が実行する処理の概要を示すフロー図である。モデル算出部140は、「負荷Lが、最大負荷Lmaxの半分以下の、所定の負荷Lsである」制御対象20(または30)に対応する、制御対象20(または30)の動特性モデルMsを作成し、または、ユーザ等の外部から取得する(S610)。モデル算出部140は、作成または取得した動特性モデルMsを、記憶部580の第1モデルテーブル181に格納する。設定部150は、第1モデルテーブル181を参照して取得した動特性モデルMsから、「動特性モデルMsを用いるMPC」のための「参照軌道の時定数」の基準値Trsを設定する(S620)。すなわち、設定部150は、動特性モデルMsについてピーク出現時間Tpkを求め、ピーク出現時間Tpkの関数として基準値Trsを算出し、算出した基準値Trsを、記憶部580の第1時定数テーブル182に格納する。
負荷変動倍率算出部510は、「負荷Lが最大負荷Lmaxである、制御対象20(または30)の総イナーシャ」と、「負荷Lが所定の負荷Lsである、制御対象20(または30)の総イナーシャ」とから、負荷変動倍率Rを設定する(S630)。すなわち、負荷変動倍率算出部510は、「負荷Lが最大負荷Lmaxである、制御対象20(または30)の総イナーシャ」を、「負荷Lが所定の負荷Lsである、制御対象20(または30)の総イナーシャ」で除した値として、負荷変動倍率Rを算出する。そして、負荷変動倍率算出部510は、算出した負荷変動倍率Rを負荷変動倍率テーブル581に格納する。
決定部170は、第1時定数テーブル182を参照して取得する基準値Trsと、負荷変動倍率テーブル581を参照して取得する負荷変動倍率Rとから、制御対象20に対するMPCの実運転時に用いる「参照軌道の時定数Tr」を決定する。「F」を「基準値Trsと負荷変動倍率Rとから、『参照軌道の時定数Tr』を算出する関数」として、決定部170は、「Tr=F(Trs,R)」として、「参照軌道の時定数Tr」を決定する(S640)。例えば、決定部170は、「Tr=Trs*R」として、「参照軌道の時定数Tr」を決定する。そして、決定部170は、決定した「参照軌道の時定数Tr」を、記憶部580の第2時定数テーブル183に格納する。
MPC部120は、決定部170によって決定された「参照軌道の時定数Tr」を、つまり、第2時定数テーブル183に格納されている時定数Trを用いて、制御対象20(または30)に対するMPCの実運転を実行する(S650)。
これまで図7を参照しながら説明してきた「コントローラ50が実行する処理」は、以下のように整理することができる。すなわち、「コントローラ50が実行する処理」は、目標軌道から制御周期ごとに生成される指令値に対応する制御対象20(または30)の制御量を、制御対象20(または30)のモデルを用いて予測するモデル予測制御装置の制御方法であって、制御対象20(または30)の最大負荷Lmaxの半分以下の、所定の負荷Lsにおける制御対象20(または30)の動特性に対応する制御対象20(または30)の動特性モデルMsから、動特性モデルMsを用いた制御対象20(または30)に対するMPCのための「参照軌道の時定数」の基準値である基準値Trsを設定する設定ステップ(S620)と、「動特性モデルMsを用いたMPCを、制御対象20(または30)の負荷Lが最大である制御対象20(または30)に対して実行した時の、制御対象20(または30)の状態を示す値が、所定の基準を超えて振動しない」との条件を満たす「参照軌道の時定数」である時定数Trを、設定ステップS620にて設定した基準値Trsを用いて予め決定しておく決定ステップ(S640)と、決定ステップS640にて決定した時定数Trと、動特性モデルMsとを用いて、制御対象20(または30)に対するMPCを実行する実行ステップ(S650)と、を含んでいる。
前記の方法によれば、「コントローラ50が実行する処理」は、動特性モデルMsから基準値Trsを設定し、設定した基準値Trsを用いて予め決定しておいた時定数Trと、動特性モデルMsとを用いて、制御対象20(または30)に対するMPCを実行する。
ここで一般に、MPCは高精度のフィードフォワード制御によって追従性を向上できることが知られており、また、MPCにおいて参照軌道の時定数が追従性とロバスト性とのトレードオフを調整するためのパラメータであることが知られている。さらに、制御特性に関係するパラメータを固定する場合、制御対象の負荷が小さくなるほど制御が振動的になりやすいことが知られている。
「コントローラ50が実行する処理」は、制御対象20(または30)に対するMPCに用いる動特性モデルMsとして、制御対象20(または30)の最大負荷Lmaxの半分以下である、所定の負荷Lsにおける制御対象20(または30)の動特性に対応する、制御対象20(または30)のモデルを用いる。
ここで、制御対象20(または30)の負荷Lの変動に対して、MPCに用いるモデルを固定する場合、どの負荷Lに対応するモデルが最良のモデルであるのかを予め決定しておくことはできない。しかしながら、「コントローラ50が実行する処理」は、制御対象20(または30)の小さめの負荷L(具体的には、所定の負荷Ls)に対応するモデルを用いることにより、大きめの負荷Lに対応するモデルを用いる場合に比べて、負荷Lの変動に対して、制御の振動を抑制することができる。
すなわち、一般的に、制御に用いるモデルおよびパラメータを、或る負荷における制御対象に対応させて固定する場合、「制御対象の負荷の、その或る負荷からの変動の大きさ」が一定の範囲を超えると、その制御対象に対する制御について、振動が発生し始める。ただし、相対的に、制御対象の負荷がその或る負荷よりも大きくなる場合に比べて、その或る負荷よりも小さくなる場合の方が、「制御対象の負荷の、その或る負荷からの変動の大きさ」が小さくても、制御は振動的になってしまいやすい。言い換えれば、制御対象の負荷が採り得る範囲(=負荷変動範囲)の中間よりも大きな負荷に対応するモデルを用いる場合より、負荷変動範囲の中間以下の負荷に対応するモデルを用いた場合の方が、「制御が振動的になってしまう可能性」を抑えることができる。そこで、「コントローラ50が実行する処理」は、制御対象20(または30)の最大負荷Lmaxの半分以下の、所定の負荷Lsに対応するモデルを用いることで、「制御が振動的になってしまう可能性」をより抑制したMPCを実行することができる。
したがって、「コントローラ50が実行する処理」は、高追従性を実現可能なMPCを、高ロバスト性を実現可能な時定数Trを用いて実行することによって、高追従性と高ロバスト性とを両立させた制御を実現することができるとの効果を奏する。
特に、「コントローラ50が実行する処理」は、動特性モデルMsを用いたMPCのための「参照軌道の時定数」として、予め決定しておいた時定数Trを用いることにより、制御対象20(または30)に対する制御について、高追従性と高ロバスト性とを両立させる。つまり、「コントローラ50が実行する処理」は、制御に影響し得る要素の推定に基づいて制御の実行中に制御特性に影響するパラメータを変更して、高追従性と高ロバスト性とを両立させた制御を実現しようとするものではない。
したがって、「コントローラ50が実行する処理」は、推定に基づいて制御の実行中に制御特性に影響するパラメータを変更することなく、制御対象20(または30)に対する制御について、高追従性と高ロバスト性とを両立させることができるとの効果を奏する。高追従性と高ロバスト性とを両立しようして、推定に基づいて制御特性に影響するパラメータを変更する従来方式には、推定が誤っていた場合に制御性が低下するリスクがあるが、「コントローラ50が実行する処理」にはそのようなリスクはない。
さらに、時定数Trは、「動特性モデルMsを用いたMPCを、制御対象20(または30)の負荷Lが最大である制御対象20(または30)に対して実行した時に、制御対象20(または30)の状態を示す値が、所定の基準を超えて振動しない」という条件を満たすように決定される。また、動特性モデルMsは、制御対象20(または30)の最大負荷Lmaxの半分以下の、所定の負荷Lsにおける制御対象20(または30)の動特性に対応する制御対象20(または30)のモデルである。そして、基準値Trsは、動特性モデルMsから、動特性モデルMsを用いた制御対象20(または30)に対するMPCのための「参照軌道の時定数」の基準値として設定されるものである。そのため、基準値Trsと時定数Trとの間には一定の関係があり、少なくとも、時定数Trは基準値Trsよりも大きくなるという関係がある。
したがって、「コントローラ50が実行する処理」は、基準値Trsを用いずに時定数Trを決定する場合に比べて、基準値Trsを用いて時定数Trを決定することにより、時定数Trの決定に要する調整工数を抑制することができるとの効果を奏する。
(「安定な制御ができているか」を判定する方法の一例)
これまでに説明してきたコントローラ10および50について、次に、コントローラ10および50の奏する効果と、コントローラ10による「参照軌道の時定数Trの選択方法」とについて、図8から図14を用いて説明する。
図8から図14において、「基準イナーシャ」は、「制御対象20(または30)の負荷Lが、最大負荷Lmaxの半分以下の、所定の負荷Lsである」制御対象20(または30)の総イナーシャに対応するものとする。特に、図8から図14において、所定の負荷Lsは最小負荷Lminに等しいものとし、つまり、「基準イナーシャ」は、「制御対象20(または30)の負荷Lが、最小負荷Lminである」制御対象20(または30)の総イナーシャに対応するものとする。つまり、「基準イナーシャ」は、最小負荷Lminに対応するイナーシャであるものとする。
同様に、「基準イナーシャの10倍のイナーシャ」は、「制御対象20(または30)の負荷Lが最大負荷Lmaxである」制御対象20(または30)の総イナーシャに対応するものとする。つまり、「基準イナーシャの10倍のイナーシャ」は、最大負荷Lmaxに対応するイナーシャであるものとする。
前述の通り、「負荷変動倍率R=『負荷Lが最大負荷Lmaxである、制御対象20(または30)の総イナーシャ』/『負荷Lが所定の負荷Lsである、制御対象20(または30)の総イナーシャ』」である。したがって、図8から図14において、「負荷変動倍率R=『基準イナーシャの10倍のイナーシャ』/『基準イナーシャ』=10」である。以下では、「総イナーシャ」は単に「イナーシャ」と略記することがある。
(負荷変動が、従来の方法に基づく制御の結果に及ぼす影響について)
コントローラ10および50の各々が奏する効果についての理解を容易にするため、先ず、図8から図10を用いて、従来の方法について、負荷変動がある場合の制御結果を示す。具体的には、従来の「サーボドライバのP-PI制御について、制御パラメータ(具体的には、制御ゲイン)を調整して、追従性とロバスト性とを向上しようとする」方法について、負荷変動がある場合の制御結果を、図8から図10を参照して以下に説明する。
図8から図10は、従来の「サーボドライバ21または31のP-PI制御について、制御ゲイン(イナーシャ比を含む)を調整する」方法について、負荷変動がある場合の制御結果を示すものである。
なお、前述の通り、コントローラ10および50の判定部160は、「制御対象(具体的には、制御対象20(または30))の状態を示す値」および「状態を示す値と指令値との差」等の変数の少なくとも1つを用いて、制御が安定しているかを判定する。例えば、「制御対象のトルク、実位置(フィードバック位置)、実速度(実位置の微分値)」および「状態を示す値と指令値との差(位置偏差等)」の少なくとも1つが所定の基準を超えて振動していると、判定部160は、制御が安定していないと判定する。判定部160は、これらの4つの変数の「振動の程度」について、その振幅の大きさ、減衰率、および周波数等から、「所定の基準を超えているか」を判断する。図8から図10に示す、従来の調整方法についても同様に、負荷変動がある場合の制御結果が安定しているかを、これらの変数の振動の程度等を用いて、判定する。
図8の(A)は、制御ゲインを「基準イナーシャに対応する制御ゲイン」に調整したサーボドライバのP-PI制御を、イナーシャ(=総イナーシャ)を基準イナーシャとした制御対象に対して実行した場合の、制御結果を示している。具体的には、図8の(A)は、紙面の上から順に、制御ゲインを「基準イナーシャに対応する制御ゲイン」に調整したP-PI制御を実行した場合に、イナーシャを基準イナーシャとした制御対象が出力する、位置、位置偏差、および、トルクを示している。
同様に、図8の(B)は、制御ゲインを「基準イナーシャに対応する制御ゲイン」に調整したP-PI制御を実行した場合に、基準イナーシャの10倍のイナーシャの制御対象が出力する位置、位置偏差、および、トルクを示している。図9の(A)は、制御ゲインを「基準イナーシャの10倍のイナーシャに対応する制御ゲイン」に調整したP-PI制御を実行した場合に、基準イナーシャの10倍のイナーシャの制御対象が出力する位置、位置偏差、および、トルクを示している。図9の(B)は、制御ゲインを「基準イナーシャの10倍のイナーシャに対応する制御ゲイン」に調整したP-PI制御を実行した場合に、イナーシャを基準イナーシャとした制御対象が出力する、位置、位置偏差、および、トルクを示している。
図8の(A)は、「制御ゲイン:基準イナーシャに対応する制御ゲイン」であって、「イナーシャ:基準イナーシャ」であるから、制御結果(制御対象が出力する、位置、位置偏差、および、トルク)は当然に安定する。これに対して、「制御ゲイン:基準イナーシャに対応する制御ゲイン」であって、「イナーシャ:基準イナーシャの10倍」である図8の(B)は、トルクと位置偏差との両方に振動が見られ(特に、トルクの振動は極めて大きい)、制御は安定していない。つまり、制御ゲインを「基準イナーシャに対応する制御ゲイン」に調整したP-PI制御では、イナーシャの大きさを10倍にすると、制御対象の状態を示す値が振動的になり、安定な制御ができないことが分かる。
図9の(A)は、「制御ゲイン:基準イナーシャの10倍のイナーシャに対応する制御ゲイン」であって、「イナーシャ:基準イナーシャの10倍」であるから、制御結果(制御対象が出力する、位置、位置偏差、および、トルク)は当然に安定する。すなわち、イナーシャを10倍にしたのに合わせてイナーシャ比を正しく設定すれば、当然、安定な制御を実現することができる。これに対して、「制御ゲイン:基準イナーシャの10倍のイナーシャに対応する制御ゲイン」であって、「イナーシャ:基準イナーシャ」である図9の(B)は、少なくとも位置偏差に大きな振幅の振動はないが、トルクに大きな振動が見られる。すなわち、図9の(B)に示すトルクは、上限飽和と下限飽和とを繰り返すように大きな振動しており、制御は安定していない。つまり、制御ゲインを「基準イナーシャの10倍のイナーシャに対応する制御ゲイン」に調整したP-PI制御を、基準イナーシャの制御対象に対して実行すると、制御対象の出力するトルクは激しく振動し、安定な制御ができない。
図10は、イナーシャ変動倍率を10倍として、つまり、総イナーシャを基準イナーシャの10倍とした場合(図10の(A))と、総イナーシャを基準イナーシャとした場合(図10の(B))とについて、サーボドライバのP-PI制御の制御結果を示す。前述の通り、「基準イナーシャ」は、「制御対象の負荷が最小負荷Lminである」制御対象の総イナーシャに対応し、「基準イナーシャの10倍のイナーシャ」は、「制御対象の負荷が最大負荷Lmaxである」制御対象の総イナーシャに対応する。
図10の(A)および(B)において、「イナーシャ比(=負荷イナーシャ/モータのロータイナーシャ)」の設定は、基準イナーシャに合わせて設定し、変更していない。図10の(A)は、位置制御比例ゲインのみを「基準イナーシャに対応する制御ゲイン」の0.25倍に調整したP-PI制御を実行した場合に、基準イナーシャの10倍のイナーシャの制御対象が出力する位置、位置偏差、および、トルクを示している。図10の(B)は、位置制御比例ゲインのみを「基準イナーシャに対応する制御ゲイン」の0.25倍に調整したP-PI制御を実行した場合に、イナーシャを基準イナーシャとした制御対象が出力する位置、位置偏差、および、トルクを示している。
図10の(A)および(B)に示すとおり、位置制御比例ゲインを0.25倍することで、イナーシャを基準イナーシャの10倍とした場合と、イナーシャを基準イナーシャとした場合との両方で、安定な制御が可能となる。つまり、位置制御比例ゲインを0.25倍することで、イナーシャが「最大負荷Lmax」に対応する値である場合も、「最小負荷Lminに対応する」値である場合も、制御が安定する。具体的には、図10の(A)および(B)の各々において、出力トルクは、所定の基準を超えて振動しておらず、所定の範囲に収まっている。
ただし、図10の(A)および(B)の各々において、追従性は低下している。例えば、図10の(A)および(B)の各々における「位置偏差」の最大値は、図8および図9の各々の(A)における「位置偏差」の最大値の2倍以上となっている。
(各実施形態のコントローラについて、負荷変動がある場合の制御結果について)
図11から図14は、コントローラ10および50の各々について、制御対象20(または30)のイナーシャが変動する場合の制御結果を示す図である。また、図11から図14は、コントローラ10および50の各々において、判定部160が「安定な制御ができているか」を判定するための基準について、その具体例を示している。
以下では、イナーシャ変動倍率を10倍として、つまり、イナーシャを基準イナーシャとした場合と、イナーシャを基準イナーシャの10倍とした場合とについて、コントローラ10および50の各々の制御結果を示す。言い換えれば、最小負荷Lminに対応する総イナーシャ(=基準イナーシャ)の制御対象と、最大負荷Lmaxに対応する総イナーシャ(=基準イナーシャの10倍のイナーシャ)の制御対象とについて、コントローラ10および50の各々の制御結果を示す。
なお、以下ではコントローラ10および50の各々が、PI速度制御を実行するサーボドライバ21に対してMPCを適用する場合について説明するが、コントローラ10および50の各々が、サーボドライバ31に対してMPCを適用する場合も同様である。サーボドライバ21の制御ゲイン(「イナーシャ比」含む)は、基準イナーシャに合わせて調整されているものとする。
(基準値と負荷変動倍率とから時定数を決定する)
図11の(A)は、イナーシャが基準イナーシャである制御対象20に、「イナーシャ(=総イナーシャ)が基準イナーシャである制御対象20」に対応する「制御対象20の動特性モデルMs」を用いたMPCを実行した場合の制御結果を示している。図11の(A)に制御結果を示すMPCについて、「参照軌道の時定数Tr」は「時定数の基準値Trs(=0.0025[s])」に等しく、つまり、「参照軌道の時定数Tr=0.0025[s]」である。言い換えれば、図11の(A)は、動特性モデルMsを用いた、「参照軌道の時定数Tr=0.0025[s]」であるMPCを実行した場合に、総イナーシャが基準イナーシャである制御対象20の出力する位置、位置偏差、および、トルクを示している。
図11の(B)は、図11の(A)と同様に、「総イナーシャが基準イナーシャである制御対象20」に対応する「制御対象20の動特性モデルMs」を用いて、「参照軌道の時定数Tr=0.0025[s]」であるMPCを実行した場合の制御結果を示している。ただし、図11の(B)において、制御対象20の総イナーシャは、基準イナーシャの10倍である。つまり、図11の(A)および(B)は共に、「総イナーシャが基準イナーシャである制御対象20」に対応する「制御対象20の動特性モデルMs」を用いて、「参照軌道の時定数Tr=0.0025[s]」であるMPCを実行した場合の制御結果を示している。ただし、図11の(A)において、制御対象20の総イナーシャは基準イナーシャに等しいのに対して、図11の(B)において、制御対象20の総イナーシャは基準イナーシャの10倍である。
図11の(A)と(B)との比較から分かるように、「動特性モデル:動特性モデルMs(=基準イナーシャに対応する動特性モデル)」、「時定数Tr:0.0025[s](=時定数の基準値Trs)」のMPCの制御は、イナーシャ変動により振動する。すなわち、制御対象20の総イナーシャが基準イナーシャの時は、図11の(A)に示すように、制御対象20の出力トルクは、所定の基準を超えて振動しておらず、所定の範囲に収まっている。しかしながら、制御対象20の総イナーシャが基準イナーシャの10倍になると、図11の(B)に示すように、制御対象20の出力トルクの振動は、上限飽和と下限飽和とを繰り返すように大きな振動しており、制御は安定していない。つまり、「動特性モデル:動特性モデルMs(=基準イナーシャに対応する動特性モデル)」、「時定数Tr=時定数の基準値Trs」のMPCの制御は、「イナーシャ変動倍率:10倍」について、安定した制御を実現することができない。
これに対して、「動特性モデル:動特性モデルMs(=基準イナーシャに対応する動特性モデル)」は維持したまま、MPCに用いる「参照軌道の時定数Tr」を「時定数の基準値Trs」の10倍にすることによって、安定した制御を実現することができる。すなわち、コントローラ50の決定部170が、基準値Trs(=0.0025[s])と、負荷変動倍率R(=10)とから決定した「参照軌道の時定数Tr=Trs*R=0.025[s]」によって、コントローラ50は安定した制御を実現することができる。以下、図12を参照しながら、具体的に説明していく。
図12は、コントローラ10および50の各々が実行する、「動特性モデル:動特性モデルMs(=基準イナーシャに対応する動特性モデル)」、「時定数Tr:Trsの10倍(つまり、負荷変動倍率R倍)」のMPCについて、制御結果を示す図である。具体的には、図12の(A)は、図11の(A)の動特性モデルMsと同じ動特性モデルMsを用いて、「参照軌道の時定数Tr」が「時定数の基準値Trs(=0.0025[s])」の10倍であるMPCを実行した場合の制御結果を示している。図12の(A)において、制御対象20の総イナーシャは基準イナーシャの10倍である。つまり、図12の(A)は、「動特性モデル:動特性モデルMs(=基準イナーシャに対応する動特性モデル)」、「時定数Tr:0.025[s]」のMPCを、「総イナーシャ:基準イナーシャの10倍」の制御対象20に実行した場合の制御結果を示している。また、図12の(B)は、「動特性モデル:動特性モデルMs(=基準イナーシャに対応する動特性モデル)」、「時定数Tr:0.025[s]」のMPCを、「総イナーシャ:基準イナーシャ」の制御対象20に実行した場合の制御結果を示している。つまり、図12の(A)および(B)は共に、「総イナーシャが基準イナーシャである制御対象20」に対応する「制御対象20の動特性モデルMs」を用いて、「時定数Tr=0.025[s]」であるMPCを実行した場合の制御結果を示している。ただし、図12の(A)において、制御対象20の総イナーシャは基準イナーシャの10倍であるのに対して、図12の(B)において、制御対象20の総イナーシャは基準イナーシャに等しい。
図12の(A)に示すように、総イナーシャが基準イナーシャの10倍である制御対象20に対する、動特性モデルMsを用いたMPCの制御結果は、「参照軌道の時定数Tr」を「時定数の基準値Trs」の10倍にすることによって、安定する。すなわち、図12の(A)において、制御対象20の出力トルクは、上限飽和および下限飽和のいずれにも達することなく所定の範囲に収まっており、制御は安定している。
また、図12の(B)に示すように、動特性モデルMsを用いた、「『参照軌道の時定数Tr』を『時定数の基準値Trs』の10倍にした、MPC」は、総イナーシャが基準イナーシャに等しい制御対象20に対しても、安定した制御を実現することができる。すなわち、図12の(B)において、制御対象20の出力トルクは、上限飽和および下限飽和のいずれにも達することなく所定の範囲に収まっており、制御は安定している。
さらに、図12の(B)と図11の(A)との比較から分かるように、総イナーシャが基準イナーシャに等しい制御対象20に対する、動特性モデルMsを用いたMPCについて、「参照軌道の時定数Tr」を10倍にすることにより、追従性は少しだけ低下する。すなわち、図12の(B)の位置偏差の最大値は、図11の(A)の位置偏差の最大値よりも少しだけ大きい。つまり、「参照軌道の時定数Tr」を10倍にすると、追従性は少しだけ低下するものの、依然として十分に高い追従性を維持できている。動特性モデルMsを用いた、「『参照軌道の時定数Tr』を『時定数の基準値Trs』の10倍にした、MPC」は、追従性の高い制御を実現することができている。特に、図8から図10に示した従来の方法に比べて、図12の(B)に示す、動特性モデルMsを用いた、「『参照軌道の時定数Tr』を『時定数の基準値Trs』の10倍にした、MPC」は、極めて追従性の高い制御を実現することができている。
図12の(A)および(B)に示すように、コントローラ10および50の各々が実行する、動特性モデルMsを用いる、「『参照軌道の時定数Tr』を『時定数の基準値Trs』の10倍にした、MPC」は、ロバスト性の高い制御を実現し、制御を安定させる。また、コントローラ10および50の各々が実行する、動特性モデルMsを用いる、「『参照軌道の時定数Tr』を『時定数の基準値Trs』の10倍にした、MPC」は、従来の方法に比べて、追従性の高い制御を実現することができる。
(基準値を最小値として、時定数を徐々に大きくして、好適な時定数を探索する)
コントローラ10の決定部170は、「負荷Lが最大負荷Lmaxである制御対象20」に対するMPCによる制御を安定化させる「参照軌道の時定数Tr」の値を、最小値である基準値Trsよりも少しずつ大きくしながら、探索する。例えば、決定部170は、「n」を「1以上の整数」として、「所定の差分値dtrのn倍を基準値Trsに付加した」変数Trxについて、Trxの値を少しずつ大きくしながら、最大負荷Lmaxの制御対象20に対するMPCによる制御を安定化させるTrxを探索する。そして、決定部170は、最大負荷Lmaxの制御対象20に対するMPCによる制御を安定化させるTrxの探索に成功すると、探索したTrxを、「参照軌道の時定数Tr」の値とする。以下、図13および図14を用いて、「dtr=Trs」として、「コントローラ10の決定部170が、最大負荷Lmaxの制御対象20に対するMPCによる制御を安定化させる変数Trxを探索する」方法について、具体例を示しながら説明する。
図13の(A)は、図11の(A)の動特性モデルMsと同じ動特性モデルMsを用いて、「参照軌道の時定数Tr=Trs+1*dtr=0.005[s]」としたMPCを実行した場合の制御結果を示している。なお、「dtr=Trs=0.0025[s]」とする。図13の(A)において、制御対象20の総イナーシャは基準イナーシャの10倍である。つまり、図13の(A)は、「動特性モデル:動特性モデルMs(=基準イナーシャに対応する動特性モデル)」、「時定数Tr:0.005[s]」のMPCを、「総イナーシャ:基準イナーシャの10倍」の制御対象20に実行した場合の制御結果を示している。
図13の(A)に示すように、「総イナーシャ:基準イナーシャの10倍」の制御対象20に対する、動特性モデルMsを用いたMPCは、「時定数Tr=0.005[s]」のとき、指令位置の停止後は徐々に振動が収まるが、まだ安定な制御ができていない。例えば、図13の(A)において、トルクの一部は、上限飽和または下限飽和に達して振動しており、制御は安定していない。
図13の(B)は、図11の(A)の動特性モデルMsと同じ動特性モデルMsを用いて、「参照軌道の時定数Tr=3*dtr=0.01[s]」としたMPCを実行した場合の制御結果を示している。図13の(B)において、制御対象20の総イナーシャは基準イナーシャの10倍である。つまり、図13の(B)は、「動特性モデル:動特性モデルMs(=基準イナーシャに対応する動特性モデル)」、「時定数Tr:0.01[s]」のMPCを、「総イナーシャ:基準イナーシャの10倍」の制御対象20に実行した場合の制御結果を示している。
図14の(A)は、図13の(B)を拡大した図(具体的には、縦軸のレンジのみを変えて示す図)であり、図13の(B)の制御結果と同じ制御結果を示している。すなわち、図14の(A)は、「動特性モデル:動特性モデルMs(=基準イナーシャに対応する動特性モデル)」、「時定数Tr:0.01[s]」のMPCを、「総イナーシャ:基準イナーシャの10倍」の制御対象20に実行した場合の制御結果を示している。
図13の(B)および図14の(A)に示すように、「総イナーシャ:基準イナーシャの10倍」の制御対象20に対する、動特性モデルMsを用いたMPCは、「時定数Tr=0.01[s]」とすると、図13の(A)に見られるトルクの振動はなくなる。時定数Trを、図13の(A)の「0.005[s]」に比べて大きくし、「0.01[s]」にすると、「総イナーシャ:基準イナーシャの10倍」の制御対象20に対する動特性モデルMsを用いたMPCは、図13の(A)に比べて安定した制御となっている。
図13の(B)および図14の(A)において、移動開始後の加速区間が終わり、定速度区間に移った直後に、位置偏差およびトルクに、振幅の小さな振動が見られる。位置偏差およびトルクの振動について、振幅が小さく、また、減衰が速いため、判定部160は、「制御が安定している」と判定してもよい。
また、図13の(B)および図14の(A)において、位置偏差に細かな振動が残っているので、判定部160は、「制御が安定していない」と判定してもよい。ただし、図13の(B)および図14の(A)において、図13の(A)に見られた位置偏差の細かな振動もほぼ無くなっているため、「制御が安定している」と判定してもよい。
コントローラ10は、「時定数Tr:0.01[s]」とするMPCが実行された制御対象20の状態を示す値(例えば、図14の(A))をユーザに提示し、ユーザから、「0.01[s]」を時定数Trとして選択してもよいか否かの判定を受け付けてもよい。
判定部160が「制御が安定していない」と判定する場合、コントローラ10の決定部170は、時定数Trを、図13の(B)の「0.01[s]」に比べて大きくし、例えば、「0.02[s]」にする。
図14の(B)は、図11の(A)の動特性モデルMsと同じ動特性モデルMsを用いて、「参照軌道の時定数Tr=Trs+7*dtr=0.02[s]」としたMPCを実行した場合の制御結果を示している。図14の(B)において、制御対象20の総イナーシャは基準イナーシャの10倍である。つまり、図14の(B)は、「動特性モデル:動特性モデルMs(=基準イナーシャに対応する動特性モデル)」、「時定数Tr:0.02[s]」のMPCを、「総イナーシャ:基準イナーシャの10倍」の制御対象20に実行した場合の制御結果を示している。
§4.変形例
これまでに説明してきた例では、モデル算出部140が、「制御対象20(または30)への操作量」および「その操作量に対応する、制御対象20(または30)の制御量(フィードバック値)」等から、動特性モデルMsを作成する例を説明してきた。
しかしながら、コントローラ10および50の各々にとってモデル算出部140を備えることは必須ではなく、コントローラ10および50の各々は、動特性モデルMsを、ユーザ等の外部から取得してもよい。
また、これまでに説明してきた例では、コントローラ10および50の各々が、制御対象20(または30)への操作量を、指令速度(図2の(A))または指令トルク(図2の(B))として出力する例を説明してきた。
しかしながら、コントローラ10および50の各々は、制御対象20(または30)に指令位置を出力して、制御対象20(または30)に対するMPCを実行してもよい。
コントローラ10および50の各々は、「参照軌道の時定数Tr」の候補としての「Trx、Trx1、Trx2、Trx3、・・・」の各々を「参照軌道の時定数」とするMPCが実行された制御対象20(または30)の各々の状態を示す値をユーザに提示してもよい。すなわち、コントローラ10および50の各々は、図11から図14の各々に示すような、「参照軌道の時定数Tr」の複数の候補の各々を「参照軌道の時定数」とするMPCが実行された制御対象20(または30)の各々の状態を示す値を、ユーザに提示してもよい。そして、コントローラ10は、「Trx、Trx1、Trx2、Trx3、・・・」の中からユーザによって選択された値を、「参照軌道の時定数Tr」に決定してもよい。
〔ソフトウェアによる実現例〕
コントローラ10および50の各々の制御ブロック(特に、指令値生成部110、MPC部120、事前調整部130、事前調整部530、および、切替部190)は、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよいし、CPU(CenTral Processing Unit)を用いてソフトウェアによって実現してもよい。
後者の場合、コントローラ10および50の各々は、各機能を実現するソフトウェアであるプログラムの命令を実行するCPU、上記プログラムおよび各種データがコンピュータ(またはCPU)で読み取り可能に記録されたROM(Read Only Memory)または記憶装置(これらを「記録媒体」と称する)、上記プログラムを展開するRAM(Random Access Memory)等を備えている。そして、コンピュータ(またはCPU)が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路等を用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体(通信ネットワークや放送波等)を介して上記コンピュータに供給されてもよい。なお、本発明は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。