(57)【要約】      （修正有）【課題】推定に基づいて制御の実行中に制御パラメータを変更することなく、高追従性と高ロバスト性とを両立させた制御を実現する。【解決手段】コントローラ１０は、基準値Ｔｒｓから予め決定しておいた参照軌道の時定数Ｔｒを用いて、制御対象２０（または３０）に対してモデル予測制御を実行する。推定に基づいて制御特性に影響するパラメータを変更する従来方式には、推定が誤っていた場合に制御性が低下するリスクがあるが、「コントローラ１０が実行する処理」にはそのようなリスクはなく、高追従性と高ロバスト性とを両立させることができる。【選択図】図１
2020027482.tif 000002
【特許請求の範囲】
【請求項１】
目標軌道から制御周期ごとに生成される指令値に対応する制御対象の制御量を、前記制御対象のモデルを用いて予測するモデル予測制御装置であって、
前記制御対象の最大負荷の半分以下の、所定の負荷における前記制御対象の動特性に対応する前記制御対象の第１のモデルから、前記第１のモデルを用いた前記制御対象に対するモデル予測制御のための参照軌道の時定数の基準値である第１の時定数を設定する設定部と、
前記第１のモデルを用いたモデル予測制御を、前記制御対象の負荷が最大である前記制御対象に対して実行した時の、前記制御対象の状態を示す値が、所定の基準を超えて振動しないとの条件を満たす参照軌道の時定数である第２の時定数を、前記設定部により設定された前記第１の時定数を用いて予め決定しておく決定部と、
前記決定部により決定された前記第２の時定数と、前記第１のモデルとを用いて、前記制御対象に対するモデル予測制御を実行する実行部と、
を備えるモデル予測制御装置。
【請求項２】
前記所定の負荷は、前記制御対象の最小負荷である
請求項１に記載のモデル予測制御装置。
【請求項３】
前記設定部は、前記第１の時定数を、前記第１のモデルへのパルス入力の開始時点から、前記パルス入力に対する前記第１のモデルの出力または出力差分のピークが出現する時点までの時間を用いて設定する
請求項１または２に記載のモデル予測制御装置。
【請求項４】
前記所定の基準を超えて振動しているかを判定される前記制御対象の状態を示す値として、前記制御対象のトルクの値を判定する判定部をさらに備える
請求項１から３のいずれか１項に記載のモデル予測制御装置。
【請求項５】
前記決定部は、前記制御対象の最大負荷における総イナーシャの、前記所定の負荷における総イナーシャに対する比率と、前記第１の時定数とを用いて、前記第２の時定数を決定する
請求項１から４のいずれか１項に記載のモデル予測制御装置。
【請求項６】
前記実行部によりモデル予測制御が実行される前記制御対象の状態および負荷の少なくとも一方に応じて、前記実行部が前記第１のモデルを用いてモデル予測制御を実行する際の参照軌道の時定数を、前記第２の時定数から前記第１の時定数へ、または、前記第１の時定数から前記第２の時定数へ、切り替える切替部をさらに備える
請求項１から５のいずれか１項に記載のモデル予測制御装置。
【請求項７】
目標軌道から制御周期ごとに生成される指令値に対応する制御対象の制御量を、前記制御対象のモデルを用いて予測するモデル予測制御装置の制御方法であって、
前記制御対象の最大負荷の半分以下の、所定の負荷における前記制御対象の動特性に対応する前記制御対象の第１のモデルから、前記第１のモデルを用いた前記制御対象に対するモデル予測制御のための参照軌道の時定数の基準値である第１の時定数を設定する設定ステップと、
前記第１のモデルを用いたモデル予測制御を、前記制御対象の負荷が最大である前記制御対象に対して実行した時の、前記制御対象の状態を示す値が、所定の基準を超えて振動しないとの条件を満たす参照軌道の時定数である第２の時定数を、前記設定ステップにて設定した前記第１の時定数を用いて予め決定しておく決定ステップと、
前記決定ステップにて決定した前記第２の時定数と、前記第１のモデルとを用いて、前記制御対象に対するモデル予測制御を実行する実行ステップと、
を含む制御方法。
【請求項８】
請求項１から６のいずれか一項に記載のモデル予測制御装置としてコンピュータを機能させるための情報処理プログラムであって、前記各部としてコンピュータを機能させるための情報処理プログラム。
【請求項９】
請求項８に記載の情報処理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーボドライバ等を含むフィードバック制御系に対してモデル予測制御を実行するモデル予測制御装置等に関する。
【背景技術】
【０００２】
従来、例えばＦＡ（Factory Automation）の分野において、プログラマブルコントローラ（ＰＬＣ、Programmable Logic Controller）等の制御装置が実行する制御について、追従性とロバスト性とを向上させようとする種々の試みが知られている。例えば、下掲の特許文献１には、負荷イナーシャの推定の結果に基づいて実運転中に速度制御部の設定定数を自動修正することで、実運転中に負荷イナーシャ変動が生じた場合においても、高性能な位置決めを実現しようとするサーボ制御装置が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−３５２７７３号公報（２００１年１２月２１日公開）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述のような従来技術は、推定した負荷イナーシャに基づいて実運転中に速度制御部の設定定数等の制御パラメータを自動変更するため、制御パラメータの変更の基礎となる推定を誤る可能性を排除できず、ユーザが不安を感じるという問題がある。
【０００５】
本発明の一態様は、前記の問題点に鑑みてなされたものであり、制御に影響し得る要素の推定に基づいて制御の実行中に制御パラメータを変更することなく、高追従性と高ロバスト性とを両立させた制御を実現することを目的とする。
【課題を解決するための手段】
【０００６】
上記の課題を解決するために、本発明の一態様に係るモデル予測制御装置は、目標軌道から制御周期ごとに生成される指令値に対応する制御対象の制御量を、前記制御対象のモデルを用いて予測するモデル予測制御装置であって、前記制御対象の最大負荷の半分以下の、所定の負荷における前記制御対象の動特性に対応する前記制御対象の第１のモデルから、前記第１のモデルを用いた前記制御対象に対するモデル予測制御のための参照軌道の時定数の基準値である第１の時定数を設定する設定部と、前記第１のモデルを用いたモデル予測制御を、前記制御対象の負荷が最大である前記制御対象に対して実行した時の、前記制御対象の状態を示す値が、所定の基準を超えて振動しないとの条件を満たす参照軌道の時定数である第２の時定数を、前記設定部により設定された前記第１の時定数を用いて予め決定しておく決定部と、前記決定部により決定された前記第２の時定数と、前記第１のモデルとを用いて、前記制御対象に対するモデル予測制御を実行する実行部と、を備えている。
【０００７】
前記の構成によれば、前記モデル予測制御装置は、前記第１のモデルから前記第１の時定数を設定し、設定した前記第１の時定数を用いて予め決定しておいた前記第２の時定数と、前記第１のモデルとを用いて、前記制御対象に対するモデル予測制御を実行する。
【０００８】
ここで一般に、モデル予測制御は高精度のフィードフォワード制御によって追従性を向上できることが知られており、また、モデル予測制御において参照軌道の時定数が追従性とロバスト性とのトレードオフを調整するためのパラメータであることが知られている。さらに、制御特性に関係するパラメータを固定する場合、制御対象の負荷が小さくなるほど制御が振動的になりやすいことが知られている。
【０００９】
前記モデル予測制御装置は、前記制御対象に対するモデル予測制御に用いる前記第１のモデルとして、前記制御対象の最大負荷の半分以下の負荷の、前記所定の負荷における前記制御対象の動特性に対応する、前記制御対象のモデルを用いる。
【００１０】
ここで、前記制御対象の負荷の変動に対して、モデル予測制御に用いるモデルを固定する場合、どの負荷に対応するモデルが最良のモデルであるのかを予め決定しておくことはできない。しかしながら、前記モデル予測制御装置は、前記制御対象の小さめの負荷に対応するモデルを用いることにより、大きめの負荷に対応するモデルを用いる場合に比べて、負荷の変動に対して、制御の振動を抑制することができる。
【００１１】
すなわち、一般的に、制御に用いるモデルおよびパラメータを、或る負荷における制御対象に対応させて固定する場合、「制御対象の負荷の、その或る負荷からの変動の大きさ」が一定の範囲を超えると、その制御対象に対する制御について、振動が発生し始める。ただし、相対的に、制御対象の負荷がその或る負荷よりも大きくなる場合に比べて、その或る負荷よりも小さくなる場合の方が、「制御対象の負荷の、その或る負荷からの変動の大きさ」が小さくても、制御は振動的になってしまいやすい。言い換えれば、制御対象の負荷が採り得る範囲（＝負荷変動範囲）の中間よりも大きな負荷に対応するモデルを用いる場合より、負荷変動範囲の中間以下の負荷に対応するモデルを用いた場合の方が、「制御が振動的になってしまう可能性」を抑えることができる。そこで、前記モデル予測制御装置は、前記制御対象の最大負荷の半分以下の、前記所定の負荷に対応するモデルを用いることで、「制御が振動的になってしまう可能性」をより抑制したモデル予測制御を実行することができる。
【００１２】
したがって、前記モデル予測制御装置は、高追従性を実現可能なモデル予測制御を、高ロバスト性を実現可能な前記第２の時定数を用いて実行することによって、高追従性と高ロバスト性とを両立させた制御を実現することができるとの効果を奏する。
【００１３】
特に、前記モデル予測制御装置は、前記第１のモデルを用いたモデル予測制御のための参照軌道の時定数として、予め決定しておいた前記第２の時定数を用いることにより、前記制御対象に対する制御について、高追従性と高ロバスト性とを両立させる。つまり、前記モデル予測制御装置は、制御に影響し得る要素の推定に基づいて制御の実行中に制御特性に影響するパラメータを変更して、高追従性と高ロバスト性とを両立させた制御を実現しようとするものではない。
【００１４】
したがって、前記モデル予測制御装置は、推定に基づいて制御の実行中に制御特性に影響するパラメータを変更することなく、前記制御対象に対する制御について、高追従性と高ロバスト性とを両立させることができるとの効果を奏する。高追従性と高ロバスト性とを両立しようして、推定に基づいて制御特性に影響するパラメータを変更する従来方式には、推定が誤っていた場合に制御性が低下するリスクがあるが、前記モデル予測制御装置にはそのようなリスクはない。
【００１５】
さらに、前記第２の時定数は、前記第１のモデルを用いたモデル予測制御を、前記制御対象の負荷が最大である前記制御対象に対して実行した時に、「前記制御対象の状態を示す値が、所定の基準を超えて振動しない」という条件を満たすように決定される。また、前記第１のモデルは、前記制御対象の最大負荷の半分以下の、所定の負荷における前記制御対象の動特性に対応する前記制御対象のモデルである。そして、前記第１の時定数は、前記第１のモデルから、前記第１のモデルを用いた前記制御対象に対するモデル予測制御のための参照軌道の時定数の基準値として設定されるものである。そのため、前記第１の時定数と前記第２の時定数との間には一定の関係があり、少なくとも、前記第２の時定数は前記第１の時定数よりも大きくなるという関係がある。
【００１６】
したがって、前記モデル予測制御装置は、前記第１の時定数を用いずに前記第２の時定数を決定する場合に比べて、前記第１の時定数を用いて前記第２の時定数を決定することにより、前記第２の時定数の決定に要する調整工数を抑制できるとの効果を奏する。
【００１７】
本発明の一態様に係るモデル予測制御装置において、前記所定の負荷は、前記制御対象の最小負荷であってもよい。
【００１８】
前記の構成によれば、前記モデル予測制御装置は、前記制御対象の最小負荷における前記制御対象の動特性に対応する前記第１のモデルから、前記第１の時定数を設定する。そして、前記モデル予測制御装置は、設定した前記第１の時定数を用いて予め決定しておいた前記第２の時定数と、前記第１のモデルとを用いて、前記制御対象に対するモデル予測制御を実行する。
【００１９】
ここで、前述の通り、制御特性に関係するパラメータを固定する場合、制御対象の負荷が小さくなるほど制御が振動的になりやすいことが知られている。そこで、前記モデル予測制御装置は、前記第１のモデルとして、前記制御対象の最小負荷における前記制御対象の動特性に対応するモデルを用い、つまり、負荷の変動に対して、「制御が振動的になってしまう可能性」を最も抑制することのできるモデルを用いる。
【００２０】
したがって、前記モデル予測制御装置は、高追従性を実現可能なモデル予測制御を、高ロバスト性を実現可能な前記第２の時定数を用いて実行することによって、高追従性と高ロバスト性とを両立させた制御を実現することができるとの効果を奏する。
【００２１】
本発明の一態様に係るモデル予測制御装置において、前記設定部は、前記第１の時定数を、前記第１のモデルへのパルス入力の開始時点から、前記パルス入力に対する前記第１のモデルの出力または出力差分のピークが出現する時点までの時間を用いて設定してもよい。
【００２２】
前記の構成によれば、前記モデル予測制御装置は、前記第１の時定数を、前記第１のモデルへのパルス入力の開始時点から、前記パルス入力に対する前記第１のモデルの出力または出力差分のピークが出現する時点までの時間を用いて設定する。つまり、前記モデル予測制御装置は、前記第１の時定数を、前記第１のモデルへの入力を開始してから、前記第１のモデルへの入力変化の影響が、前記第１のモデルからの出力に最も大きく現れるまでの期間として、設定する。
【００２３】
したがって、前記モデル予測制御装置は、前記第１の時定数を、前記パルス入力の開始時点から、前記パルス入力に対する前記第１のモデルの出力または出力差分のピークが出現する時点までの時間を用いて、容易に設定することができるとの効果を奏する。
【００２４】
本発明の一態様に係るモデル予測制御装置は、前記所定の基準を超えて振動しているかを判定される前記制御対象の状態を示す値として、前記制御対象のトルクの値を判定する判定部をさらに備えてもよい。
【００２５】
前記の構成によれば、前記モデル予測制御装置は、前記モデル予測制御を、前記負荷が最大である前記制御対象に対して実行した時の、前記制御対象のトルクの値が前記所定の基準を超えて振動しているかによって、前記モデル予測制御が安定しているかを判定する。そして、前記モデル予測制御装置は、前記トルクの値が前記所定の基準を超えて振動しないように、前記第２の時定数を、前記第１の時定数を用いて決定する。
【００２６】
ここで一般に、或る制御方法が安定した制御を実現することができているかを判定するに際し、その或る制御方法が実行された制御対象の状態を示す値のうち、少なくともトルクが振動し、あるいは飽和を繰り返している場合、安定した制御を実現することができていないと判定することができる。
【００２７】
したがって、前記モデル予測制御装置は、前記モデル予測制御を実行した前記制御対象の状態を示す値のうち、少なくともトルクの値が前記所定の基準を超えて振動しているかを判定することで、前記モデル予測制御が安定しているかを確実に判定できるとの効果を奏する。
【００２８】
本発明の一態様に係るモデル予測制御装置において、前記決定部は、前記制御対象の最大負荷における総イナーシャの、前記所定の負荷における総イナーシャに対する比率と、前記第１の時定数とを用いて、前記第２の時定数を決定してもよい。ここで、回転モータにおける「イナーシャ」は、回転モータがリニアモータである場合、「質量」である。
【００２９】
前記の構成によれば、前記モデル予測制御装置は、前記第２の時定数を、「前記制御対象の最大負荷における総イナーシャの、前記所定の負荷における総イナーシャに対する比率（これを「負荷変動倍率」とも称する）」と、前記第１の時定数とを用いて決定する。
【００３０】
したがって、前記モデル予測制御装置は、前記負荷変動倍率と前記第１の時定数とを用いて、前記第２の時定数を容易に決定することができるとの効果を奏する。
【００３１】
本発明の一態様に係るモデル予測制御装置は、前記実行部によりモデル予測制御が実行される前記制御対象の状態および負荷の少なくとも一方に応じて、前記実行部が前記第１のモデルを用いてモデル予測制御を実行する際の参照軌道の時定数を、前記第２の時定数から前記第１の時定数へ、または、前記第１の時定数から前記第２の時定数へ、切り替える切替部をさらに備えてもよい。
【００３２】
前記の構成によれば、前記モデル予測制御装置は、前記モデル予測制御が実行される前記制御対象の状態および負荷の少なくとも一方に応じて、前記モデル予測制御の参照軌道の時定数を、前記第２の時定数から前記第１の時定数へ、または、前記第１の時定数から前記第２の時定数へ、切り替える。
【００３３】
例えば、機械の運転シーケンスに応じて、「或る工程以降は、前記制御対象の負荷は、前記所定の負荷から、一定範囲以上変動しない」と予め分かっている場合、前記モデル予測制御装置は、以下のように、前記モデル予測制御の参照軌道の時定数を切り替える。すなわち、前記モデル予測制御装置は、前記モデル予測制御の「参照軌道の時定数」を、その或る工程以降は、前記第２の時定数から前記第１の時定数へ切り換える。
【００３４】
前述の通り、前記モデル予測制御装置において、前記第１のモデルは、前記所定の負荷における前記制御対象の動特性に対応するモデルである。また、前記第１の時定数は、前記第１のモデルを用いた、前記制御対象に対するモデル予測制御のための「参照軌道の時定数」の基準値である。そして、前記所定の負荷における前記制御対象に対して、前記第１のモデルを用いたモデル予測制御を実行する場合、前記第１の時定数を「参照軌道の時定数」とした方が、前記第２の時定数を「参照軌道の時定数」とするより、追従性を向上することができる。
【００３５】
例えば、前記制御対象の負荷が前記所定の負荷に一致し変動しない場合、負荷が前記所定の負荷に近似したまま変動しない場合、つまり、負荷が前記所定の負荷から一定範囲以上変動しない場合、前記モデル予測制御装置は、「参照軌道の時定数」を切り替える。すなわち、これらの場合、前記モデル予測制御装置は、前記第１のモデルを用いた、前記制御対象に対するモデル予測制御の「参照軌道の時定数」を、前記第２の時定数から前記第１の時定数へ切り換え、追従性を向上させる。前記第１のモデルに基づく予測誤差が或る閾値より小さい場合など、前記制御対象の負荷が前記所定の負荷に近似したまま変動しないと判断できる場合、前記モデル予測制御装置は、「参照軌道の時定数」を前記第１の時定数へと切り換えて、追従性を向上させる。
【００３６】
したがって、前記モデル予測制御装置は、前記制御対象の状態および負荷の少なくとも一方に応じて、実行中のモデル予測制御に用いる「参照軌道の時定数」を、より追従性の高い制御を実現することのできる値に、適宜変更することができるとの効果を奏する。
【００３７】
特に、前記第１の時定数および前記第２の時定数はいずれも、前記所定の負荷における前記制御対象に対する、または、前記負荷が最大である前記制御対象に対する、前記モデル予測制御を適用した制御を安定させることのできる時定数として、予め準備しておいたものである。
【００３８】
つまり、前記モデル予測制御装置は、「制御に影響し得る要素の推定に基づいて、制御の実行中に、制御特性に影響するパラメータを変更する」ものではなく、推定を誤って制御が不安定になるリスクがない。
【００３９】
前記モデル予測制御装置は、前記制御対象の状態および負荷の少なくとも一方に応じて、実行中のモデル予測制御に用いる「参照軌道の時定数」を、予め準備しておいた前記第１の時定数または前記第２の時定数へと、適宜切り替える。したがって、前記モデル予測制御装置は、制御に影響し得る要素の推定を誤って制御が不安定になるリスクを冒さずに、高追従性と高ロバスト性とを両立させた制御を実現することができるとの効果を奏する。
【００４０】
上記の課題を解決するために、本発明の一態様に係る制御方法は、目標軌道から制御周期ごとに生成される指令値に対応する制御対象の制御量を、前記制御対象のモデルを用いて予測するモデル予測制御装置の制御方法であって、前記制御対象の最大負荷の半分以下の、所定の負荷における前記制御対象の動特性に対応する前記制御対象の第１のモデルから、前記第１のモデルを用いた前記制御対象に対するモデル予測制御のための参照軌道の時定数の基準値である第１の時定数を設定する設定ステップと、前記第１のモデルを用いたモデル予測制御を、前記制御対象の負荷が最大である前記制御対象に対して実行した時の、前記制御対象の状態を示す値が、所定の基準を超えて振動しないとの条件を満たす参照軌道の時定数である第２の時定数を、前記設定ステップにて設定した前記第１の時定数を用いて予め決定しておく決定ステップと、前記決定ステップにて決定した前記第２の時定数と、前記第１のモデルとを用いて、前記制御対象に対するモデル予測制御を実行する実行ステップと、を含んでいる。
【００４１】
前記の方法によれば、前記制御方法は、前記第１のモデルから前記第１の時定数を設定し、設定した前記第１の時定数を用いて予め決定しておいた前記第２の時定数と、前記第１のモデルとを用いて、前記制御対象に対するモデル予測制御を実行する。
【００４２】
ここで一般に、モデル予測制御は高精度のフィードフォワード制御によって追従性を向上できることが知られており、また、モデル予測制御において参照軌道の時定数が追従性とロバスト性とのトレードオフを調整するためのパラメータであることが知られている。さらに、制御特性に関係するパラメータを固定する場合、制御対象の負荷が小さくなるほど制御が振動的になりやすいことが知られている。
【００４３】
前記制御方法は、前記制御対象に対するモデル予測制御に用いる前記第１のモデルとして、前記制御対象の最大負荷の半分以下の負荷の、前記所定の負荷における前記制御対象の動特性に対応する、前記制御対象のモデルを用いる。
【００４４】
ここで、前記制御対象の負荷の変動に対して、モデル予測制御に用いるモデルを固定する場合、どの負荷に対応するモデルが最良のモデルであるのかを予め決定しておくことはできない。しかしながら、前記制御方法は、前記制御対象の小さめの負荷に対応するモデルを用いることにより、大きめの負荷に対応するモデルを用いる場合に比べて、負荷の変動に対して、制御の振動を抑制することができる。
【００４５】
すなわち、一般的に、制御に用いるモデルおよびパラメータを、或る負荷における制御対象に対応させて固定する場合、「制御対象の負荷の、その或る負荷からの変動の大きさ」が一定の範囲を超えると、その制御対象に対する制御について、振動が発生し始める。ただし、相対的に、制御対象の負荷がその或る負荷よりも大きくなる場合に比べて、その或る負荷よりも小さくなる場合の方が、「制御対象の負荷の、その或る負荷からの変動の大きさ」が小さくても、制御は振動的になってしまいやすい。言い換えれば、制御対象の負荷が採り得る範囲（＝負荷変動範囲）の中間よりも大きな負荷に対応するモデルを用いる場合より、負荷変動範囲の中間以下の負荷に対応するモデルを用いた場合の方が、「制御が振動的になってしまう可能性」を抑えることができる。そこで、前記制御方法は、前記制御対象の最大負荷の半分以下の、前記所定の負荷に対応するモデルを用いることで、「制御が振動的になってしまう可能性」をより抑制したモデル予測制御を実行することができる。
【００４６】
したがって、前記制御方法は、高追従性を実現可能なモデル予測制御を、高ロバスト性を実現可能な前記第２の時定数を用いて実行することによって、高追従性と高ロバスト性とを両立させた制御を実現することができるとの効果を奏する。
【００４７】
特に、前記制御方法は、前記第１のモデルを用いたモデル予測制御のための参照軌道の時定数として、予め決定しておいた前記第２の時定数を用いることにより、前記制御対象に対する制御について、高追従性と高ロバスト性とを両立させる。つまり、前記制御方法は、制御に影響し得る要素の推定に基づいて制御の実行中に制御特性に影響するパラメータを変更して、高追従性と高ロバスト性とを両立させた制御を実現しようとするものではない。
【００４８】
したがって、前記制御方法は、推定に基づいて制御の実行中に制御特性に影響するパラメータを変更することなく、前記制御対象に対する制御について、高追従性と高ロバスト性とを両立させることができるとの効果を奏する。高追従性と高ロバスト性とを両立しようして、推定に基づいて制御特性に影響するパラメータを変更する従来方式には、推定が誤っていた場合に制御性が低下するリスクがあるが、前記制御方法にはそのようなリスクはない。
【００４９】
さらに、前記第２の時定数は、「前記第１のモデルを用いたモデル予測制御を、前記制御対象の負荷が最大である前記制御対象に対して実行した時に、前記制御対象の状態を示す値が、所定の基準を超えて振動しない」という条件を満たすように決定される。また、前記第１のモデルは、前記制御対象の最大負荷の半分以下の、所定の負荷における前記制御対象の動特性に対応する前記制御対象のモデルである。そして、前記第１の時定数は、前記第１のモデルから、前記第１のモデルを用いた前記制御対象に対するモデル予測制御のための参照軌道の時定数の基準値として設定されるものである。そのため、前記第１の時定数と前記第２の時定数との間には一定の関係があり、少なくとも、前記第２の時定数は前記第１の時定数よりも大きくなるという関係がある。
【００５０】
したがって、前記制御方法は、前記第１の時定数を用いずに前記第２の時定数を決定する場合に比べて、前記第１の時定数を用いて前記第２の時定数を決定することにより、前記第２の時定数の決定に要する調整工数を抑制することができるとの効果を奏する。
【発明の効果】
【００５１】
本発明の一態様によれば、制御に影響し得る要素の推定に基づいて制御の実行中に制御パラメータを変更することなく、高追従性と高ロバスト性とを両立させた制御を実現することができるという効果を奏する。
【図面の簡単な説明】
【００５２】
【図１】本発明の実施形態１に係るコントローラ等の要部構成を示すブロック図である。
【図２】本発明の各実施形態に係るコントローラを含む制御システムの概要を示す図である。
【図３】モデル予測制御のための参照軌道について説明する図である。
【図４】モデルへのパルス入力の開始時点から、このパルス入力に対するモデル出力のピークが出現する時点までの時間を算出する方法を説明する図である。
【図５】図１のコントローラが実行する処理の概要を示すフロー図である。
【図６】本発明の実施形態２に係るコントローラ等の要部構成を示すブロック図である。
【図７】図６のコントローラが実行する処理の概要を示すフロー図である。
【図８】従来の方法について、制御対象のイナーシャが変動する場合の制御結果を示す図である。
【図９】従来の方法について、制御対象のイナーシャが変動する場合の、図８とは別の制御結果を示す図である。
【図１０】従来の方法について、制御対象のイナーシャが変動する場合の、図８および図９とは別の制御結果を示す図である。
【図１１】図１および図６のコントローラについて、制御対象のイナーシャが変動する場合の制御結果および好適な時定数を示す図である。
【図１２】図１および図６のコントローラについて、制御対象のイナーシャが変動する場合の制御結果および好適な時定数を示す、図１１とは別の図である。
【図１３】図１および図６のコントローラについて、制御対象のイナーシャが変動する場合の制御結果および好適な時定数を示す、図１１および図１２とは別の図である。
【図１４】図１および図６のコントローラについて、制御対象のイナーシャが変動する場合の制御結果および好適な時定数を示す、図１１、図１２および図１３とは別の図である。
【発明を実施するための形態】
【００５３】
以下、本発明の一側面に係る実施の形態（以下、「本実施形態」とも表記する）を、図面に基づいて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。以下の各実施形態においては、機械および設備等の制御対象を制御するコントローラ１０および５０の各々を、モデル予測制御装置の典型例として説明を行う。コントローラ１０および５０は各々、例えばＰＬＣ（プログラマブル・ロジック・コントローラ、Programmable Logic Controller）である。
【００５４】
以下では先ず、コントローラ１０および５０の理解を容易にするために、コントローラ１０または５０を含む制御システム１および２の概要を、図２を用いて説明する。その後、実施形態１および２の各々において、コントローラ１０および５０について、各々の構成および各々の装置が実行する処理について説明する。最後に、コントローラ１０および５０の各々が奏する効果、および、コントローラ１０による「参照軌道の時定数Ｔｒの選択方法」等について、図８から図１４を用いて説明する。
【００５５】
§１．適用例
（制御システムの概要）
図２は、コントローラ１０または５０を含む制御システム１および２の概要を示す図である。コントローラ１０および５０の各々は、制御対象２０または３０に対してモデル予測制御（Model Predictive Control。以下、「ＭＰＣ」と略記する）を実行する制御装置（上位コントローラ）である。図２に示すように、制御システム１および２の各々は、「コントローラ１０または５０」と、「コントローラ１０または５０によって制御される、制御対象２０または３０」とを含んでいる。
【００５６】
制御対象２０および３０は、各々、「サーボドライバ２１または３１（下位コントローラ）」と、「サーボドライバ２１または３１によって駆動を制御される、機械２３または３３」と、を含むフィードバック制御系である。サーボドライバ２１および３１は、各々、コントローラ１０または５０からの入力（操作量）を目標値とし、実測値（例えば、フィードバック位置等の制御量）をフィードバック値として、機械２３および３３の各々にフィードバック制御を行う。具体的には、サーボドライバ２１および３１の各々は、実測値（制御量）が目標値（操作量）に近づくように、機械２３および３３の各々（特に、機械２３および３３の各々が含むサーボモータ）を駆動するための電流を調整する。サーボドライバ２１および３１の各々は、サーボモータアンプと称されることもある。機械２３および３３の各々は、例えば、サーボモータおよび当該サーボモータによって駆動される機械要素である。
【００５７】
コントローラ１０および５０は、各々、制御周期ごとに、制御対象２０または３０に操作量を出力して、制御対象２０または３０を制御するＰＬＣ（制御装置）である。コントローラ１０および５０は、各々、制御対象２０または３０の動特性モデル（以下、単に「モデル」と称することもある）を用いたＭＰＣを、制御対象２０または３０の制御に適用する。コントローラ１０および５０は、各々、制御対象に応じて好適な形式の操作量を出力して、制御対象に対するＭＰＣを実行する。コントローラ１０および５０の各々が出力する操作量は、図２の（Ａ）に例示するように指令速度であってもよいし、図２の（Ｂ）に例示するように指令トルクであってもよい。
【００５８】
具体的には、図２の（Ａ）に示す制御システム１において、コントローラ１０または５０は、制御対象２０に対して、具体的にはサーボドライバ２１に対して、操作量として指令速度を出力する。サーボドライバ２１は、ＰＩ制御（比例積分制御）を行なう速度制御部２２を備えており、コントローラ１０または５０からの操作量に従って、以下のように機械２３を制御する。すなわち、サーボドライバ２１は、コントローラ１０または５０からの指令速度と、エンコーダ等によって取得するフィードバック値（具体的にはフィードバック位置）を微分して算出したフィードバック速度との偏差である速度偏差から、指令トルクを生成する。そして、サーボドライバ２１は、生成した指令トルクに基づいて、機械２３を制御する。
【００５９】
これに対して、図２の（Ｂ）に示す制御システム２において、コントローラ１０または５０は、制御対象３０に対して、具体的にはサーボドライバ３１に対して、操作量として指令トルクを出力する。サーボドライバ３１は、トルク制御部３２を備え、コントローラ１０または５０からの操作量（具体的には指令トルク）に従って、機械３３を制御する。
【００６０】
コントローラ１０および５０は、各々、従来の一般的なＭＰＣ装置と同様の指令値生成部１１０およびＭＰＣ部１２０を備える。指令値生成部１１０は、目標軌道データから制御周期ごとに指令値を生成し、ＭＰＣ部１２０は、制御対象２０または３０の動特性モデルＭｓを用いたＭＰＣを実行して、制御対象２０または３０に操作量を出力する。
【００６１】
コントローラ１０および５０は、各々、指令値生成部１１０およびＭＰＣ部１２０に加えて、事前調整部１３０または１５０を備える。事前調整部１３０および１５０は、各々、制御対象２０または３０に対するＭＰＣの実運転の準備段階である試運転時に、「ＭＰＣ部１２０が実運転で実行するＭＰＣのための参照軌道の時定数Ｔｒ（または、参照軌道の時定数Ｔｒの候補）」を準備する。
【００６２】
コントローラ１０および５０の各々が、「ＭＰＣ部１２０が実運転で実行するＭＰＣのための参照軌道の時定数Ｔｒ（または、時定数Ｔｒの候補）」を試運転時に準備する方法について、以下に概要を説明する。なお、以下では先ず、コントローラ１０が制御対象２０に対しＭＰＣを実行する場合に、コントローラ１０がＭＰＣのための参照軌道の時定数Ｔｒ（または、時定数Ｔｒの候補）を準備する方法（第１の方法）について説明を行なう。その後、コントローラ５０が制御対象２０に対しＭＰＣを実行する場合に、コントローラ５０がＭＰＣのための参照軌道の時定数Ｔｒ（または、時定数Ｔｒの候補）を準備する方法（第２の方法）について説明を行なう。
【００６３】
（ＭＰＣのための参照軌道の時定数Ｔｒを準備する第１の方法）
コントローラ１０は、制御対象２０の制御について、ＭＰＣを適用する。先ず、コントローラ１０は、「制御対象２０の負荷Ｌが、制御対象２０の最大負荷Ｌｍａｘの半分以下の、所定の負荷Ｌｓである」制御対象２０に対応する、制御対象２０の動特性モデルＭｓを作成する。つまり、コントローラ１０は、制御対象２０の負荷Ｌが「制御対象２０の最小負荷Ｌｍｉｎ」から「制御対象２０の最大負荷Ｌｍａｘの半分以下」までの所定の負荷Ｌｓである場合に対応する、制御対象２０の動特性モデルＭｓを作成する。コントローラ１０は、例えば、「所定の負荷Ｌｓ」が「制御対象２０の最小負荷Ｌｍｉｎ」である場合（つまり、「Ｌｓ＝Ｌｍｉｎ」である場合）に対応する、制御対象２０の動特性モデルＭｓを作成する。
【００６４】
コントローラ１０が、「負荷Ｌが、制御対象２０の最大負荷Ｌｍａｘの半分以下の、所定の負荷Ｌｓである」制御対象２０に対応する、制御対象２０の動特性モデルＭｓを作成するのは、以下の理由からである。すなわち、一般的に、制御パラメータ（＝制御特性に影響するパラメータ）を固定する場合、制御対象の負荷が小さくなるほど、制御が振動的になりやすいからである。
【００６５】
ただし、コントローラ１０にとって、「制御対象２０の動特性モデルＭｓを作成する」ことは必須ではなく、コントローラ１０は外部から「制御対象２０の動特性モデルＭｓ」を取得してもよい。
【００６６】
次に、コントローラ１０は、作成した「制御対象２０の動特性モデルＭｓ」（または、外部から取得した「制御対象２０の動特性モデルＭｓ」）から、制御対象２０に対するＭＰＣに用いる「参照軌道の時定数Ｔｒ」の基準値Ｔｒｓを自動設定する。なお以下では、「制御対象２０に対するＭＰＣに用いる『参照軌道の時定数Ｔｒ』の基準値Ｔｒｓ」を、「基準値Ｔｒｓ」と略記することがある。
【００６７】
そして、コントローラ１０は、負荷Ｌが最大負荷Ｌｍａｘである制御対象２０に対してＭＰＣを繰り返し実行して（つまり、試運転を実行して）、「制御（つまり、ＭＰＣ）を安定化させる参照軌道の時定数Ｔｒ」を、基準値Ｔｒｓから決定する。なお以下では、「制御を安定化させる参照軌道の時定数Ｔｒ」を、「時定数Ｔｒ」と略記することがある。
【００６８】
具体的には、コントローラ１０は、基準値Ｔｒｓを時定数Ｔｒの最小値として、「負荷Ｌが最大負荷Ｌｍａｘである、制御対象２０」に対するＭＰＣの試運転から、好適な時定数Ｔｒを探索する。例えば、コントローラ１０は、「基準値Ｔｒｓに、『０よりも大きな、所定の差分値ｄｔｒ』のｎ倍（ｎは１以上の整数）を付加した変数Ｔｒｘ」を「参照軌道の時定数」とするＭＰＣを、負荷Ｌが最大負荷Ｌｍａｘである制御対象２０に対して実行する。コントローラ１０は、負荷Ｌが最大負荷Ｌｍａｘである制御対象２０に対して実行するＭＰＣが安定するまで、ＭＰＣに用いる「参照軌道の時定数Ｔｒ」の候補である変数Ｔｒｘを徐々に大きくしていき、つまり、「ｎ」を徐々に大きくしていく。言い換えれば、コントローラ１０は、負荷Ｌが最大負荷Ｌｍａｘである制御対象２０に対する制御が安定するＭＰＣを、ＭＰＣの「参照軌道の時定数」とする変数Ｔｒｘの値を徐々に大きくしていきながら、探索する。コントローラ１０は、例えば、「基準値Ｔｒｓに、所定の差分値ｄｔｒを追加的に付加して徐々に大きくしていった変数Ｔｒｘ」のうち、負荷Ｌが最大負荷Ｌｍａｘである制御対象２０に対して実行するＭＰＣによる制御を安定させる変数Ｔｒｘを、時定数Ｔｒとする。
【００６９】
コントローラ１０は、「基準値Ｔｒｓに、１よりも大きな所定の倍率を乗じた変数Ｔｒｘ」を「参照軌道の時定数」とするＭＰＣを、負荷Ｌが最大負荷Ｌｍａｘである制御対象２０に対して繰り返し実行し、ＭＰＣによる制御を安定させる変数Ｔｒｘを探索してもよい。コントローラ１０は、負荷Ｌが最大負荷Ｌｍａｘである制御対象２０に対して実行するＭＰＣが安定するまで、変数Ｔｒｘを徐々に大きくしていき、つまり、基準値Ｔｒｓに乗じる倍率を徐々に大きくしていってもよい。コントローラ１０は、例えば、「基準値Ｔｒｓに、１よりも大きな所定の倍率を乗じて徐々に大きくしていった変数Ｔｒｘ」のうち、最大負荷Ｌｍａｘにおける制御対象２０に対して実行するＭＰＣによる制御を安定させる変数Ｔｒｘを、時定数Ｔｒとしてもよい。
【００７０】
ここで、コントローラ１０は、「最大負荷Ｌｍａｘにおける制御対象２０に対するＭＰＣが、『参照軌道の時定数』をＴｒｘとした場合に安定するか」を、「参照軌道の時定数をＴｒｘとするＭＰＣ」が適用された制御対象２０の状態を示す値を用いて、判定する。特に、コントローラ１０は、「参照軌道の時定数をＴｒｘとするＭＰＣ」により制御された制御対象２０の状態を示す値のうち、少なくとも出力トルクの値を用いて、「制御対象２０に対するＭＰＣが安定しているか」を判定する。
【００７１】
これまでに説明してきた「制御対象２０に対するＭＰＣのための参照軌道の時定数Ｔｒ（または、時定数Ｔｒの候補）を準備する方法」と同様の方法を用いて、コントローラ１０は、制御対象３０に対するＭＰＣのための参照軌道の時定数Ｔｒを準備する。
【００７２】
すなわち、先ず、コントローラ１０は、「制御対象３０の負荷Ｌが、制御対象３０の最大負荷Ｌｍａｘの半分以下の、所定の負荷Ｌｓである」制御対象３０に対応する、制御対象３０の動特性モデルＭｓを作成する。コントローラ１０は、制御対象３０の動特性モデルＭｓを、外部から取得してもよい。次に、コントローラ１０は、作成または取得した「制御対象３０の動特性モデルＭｓ」から、制御対象３０に対するＭＰＣに用いる「参照軌道の時定数Ｔｒ」の基準値Ｔｒｓを自動設定する。コントローラ１０は、基準値Ｔｒｓを時定数Ｔｒの最小値として、負荷Ｌが最大負荷Ｌｍａｘである制御対象３０に対するＭＰＣの試運転から、「制御対象３０に対するＭＰＣによる制御を安定化させる、『参照軌道の時定数Ｔｒ』」を探索する。すなわち、コントローラ１０は、「参照軌道の時定数をＴｒｘとするＭＰＣ」により制御された制御対象３０の状態を示す値のうち、少なくとも出力トルクの値を用いて、「参照軌道の時定数をＴｒｘとした場合に、制御対象３０に対するＭＰＣが安定するか」を判定する。そして、コントローラ１０は、「最大負荷Ｌｍａｘにおける制御対象３０に対するＭＰＣが、『ＭＰＣの参照軌道の時定数』を或るＴｒｘとした場合に安定する」と判定すると、その或るＴｒｘを、制御対象３０に対するＭＰＣに用いる「時定数Ｔｒ」に決定する。
【００７３】
（ＭＰＣのための参照軌道の時定数Ｔｒを準備する第２の方法）
次に、コントローラ５０が制御対象２０に対しＭＰＣを実行する場合に、コントローラ５０がＭＰＣのための参照軌道の時定数Ｔｒ（または、時定数Ｔｒの候補）を準備する方法について説明を行なう。
【００７４】
コントローラ５０は、先ず、「制御対象２０の負荷Ｌが、制御対象２０の最大負荷Ｌｍａｘの半分以下の、所定の負荷Ｌｓである」制御対象２０に対応する、制御対象２０の動特性モデルＭｓを作成または取得する。コントローラ５０は、次に、作成または取得した「制御対象２０の動特性モデルＭｓ」から、制御対象２０に対するＭＰＣに用いる「参照軌道の時定数Ｔｒ」の基準値Ｔｒｓを自動設定する。「基準値Ｔｒｓ」の自動設定までにコントローラ５０が実行する処理は、「基準値Ｔｒｓ」の自動設定までにコントローラ１０が実行する処理と同様である。
【００７５】
コントローラ５０は、自動設定した基準値Ｔｒｓと制御対象２０の負荷変動倍率Ｒとから、制御対象２０に対するＭＰＣの実運転時に用いる「参照軌道の時定数Ｔｒ」を決定する。ここで、「制御対象２０の負荷変動倍率Ｒ」は、「制御対象２０の最大負荷Ｌｍａｘに対応する、制御対象２０の総イナーシャ」を、「制御対象２０の動特性モデルＭｓの総イナーシャ」によって除した値である。前述の通り、「制御対象２０の動特性モデルＭｓ」は、「負荷Ｌが、制御対象２０の最大負荷Ｌｍａｘの半分以下の、所定の負荷Ｌｓである」制御対象２０に対応する。したがって、「制御対象２０の動特性モデルＭｓの総イナーシャ」は、「所定の負荷Ｌｓに対応する、制御対象２０の総イナーシャ」である。つまり、「制御対象２０の負荷変動倍率Ｒ＝『制御対象２０の、最大負荷Ｌｍａｘに対応する総イナーシャ』／『制御対象２０の、所定の負荷Ｌｓに対応する総イナーシャ』」である。なお、「総イナーシャ」は、「モータのロータイナーシャ」と「負荷イナーシャ」との合計であり（ただし、リニアモータ駆動の場合は、イナーシャの代わりに質量となる）、つまり、「総イナーシャ＝モータのロータイナーシャ＋負荷イナーシャ」である。
【００７６】
これまでに説明してきた「制御対象２０に対するＭＰＣのための参照軌道の時定数Ｔｒ（または、時定数Ｔｒの候補）を準備する方法」と同様の方法を用いて、コントローラ５０は、制御対象３０に対するＭＰＣのための参照軌道の時定数Ｔｒを準備する。
【００７７】
すなわち、コントローラ５０は、「制御対象３０の負荷Ｌが、制御対象３０の最大負荷Ｌｍａｘの半分以下の、所定の負荷Ｌｓである」制御対象３０に対応する、制御対象３０の動特性モデルＭｓを作成または取得する。コントローラ５０は、次に、作成または取得した「制御対象３０の動特性モデルＭｓ」から、制御対象３０に対するＭＰＣに用いる「参照軌道の時定数Ｔｒ」の基準値Ｔｒｓを自動設定する。コントローラ５０は、自動設定した基準値Ｔｒｓと制御対象３０の負荷変動倍率Ｒとから、制御対象３０に対するＭＰＣの実運転時に用いる「参照軌道の時定数Ｔｒ」を決定する。「制御対象３０の負荷変動倍率Ｒ＝『制御対象３０の、最大負荷Ｌｍａｘに対応する総イナーシャ』／『制御対象３０の、所定の負荷Ｌｓに対応する総イナーシャ』」である。
【００７８】
（ＭＰＣの実運転、および、実運転中の「参照軌道の時定数」の切替）
コントローラ１０および５０の各々は、「制御対象２０（または３０）の動特性モデルＭｓ」と、「参照軌道の時定数Ｔｒ」とを用いて、制御対象２０（または３０）に対するＭＰＣの実運転を実行する。
【００７９】
コントローラ１０および５０の各々は、制御対象２０（または３０）に対するＭＰＣの実運転中に、制御対象２０（または３０）の状態および負荷の少なくとも一方を用いて、実運転中のＭＰＣに用いる「参照軌道の時定数」を、ＴｒからＴｒｓへと切り替える。また、コントローラ１０および５０の各々は、Ｔｒｓへと切り替えた「参照軌道の時定数」を、制御対象２０（または３０）の状態および負荷の少なくとも一方を用いて、Ｔｒへと戻す。すなわち、コントローラ１０および５０の各々は、制御対象２０（または３０）に対するＭＰＣに用いる「参照軌道の時定数」を、制御対象２０（または３０）の状態および負荷の少なくとも一方を用いて実運転中に、ＴｒからＴｒｓへ、または、ＴｒｓからＴｒへ、切り替える。
【００８０】
コントローラ１０および５０の各々は、例えば、制御対象２０（または３０）の状態および負荷の少なくとも一方によって、ＭＰＣに用いる「参照軌道の時定数」を、ＴｒからＴｒｓへ、または、ＴｒｓからＴｒへ、切り替える。例えば、コントローラ１０および５０の各々は、「制御対象２０（または３０）が出力するトルクの振動の大きさ（程度）」と「位置偏差の振動の大きさ」とを用いて、ＭＰＣに用いる「参照軌道の時定数」の切替を実行してもよい。
【００８１】
また、例えば、機械の運転シーケンスに応じて、「或る工程以降は、制御対象２０（または３０）の負荷は、所定の負荷Ｌｓから、一定範囲以上変動しない」と予め分かっている場合、コントローラ１０および５０の各々は、以下のように、ＭＰＣの「参照軌道の時定数」を切り替える。すなわち、コントローラ１０および５０の各々は、ＭＰＣの「参照軌道の時定数」を、その或る工程以降は、ＴｒからＴｒｓへ切り換える。
【００８２】
（従来の制御方法との主たる相違点）
コントローラ１０および５０の各々は、例えば最小負荷Ｌｍｉｎにおける制御対象２０（または３０）の動特性モデルＭｓから、制御対象２０（または３０）に対するＭＰＣに用いる「参照軌道の時定数Ｔｒ」の基準値Ｔｒｓを自動生成しておく。そして、コントローラ１０および５０の各々は、最大負荷Ｌｍａｘにおける制御対象２０（または３０）に対するＭＰＣの試運転によって、自動生成した「基準値Ｔｒｓ」を用いて、ＭＰＣによる制御を安定させる「参照軌道の時定数Ｔｒ」を予め決定しておく。コントローラ１０および５０の各々は、予め決定しておいた時定数Ｔｒと、制御対象２０（または３０）の動特性モデルＭｓとを用いて、制御対象２０（または３０）に対するＭＰＣの実運転を実行する。
【００８３】
ここで一般に、ＭＰＣは、高追従性を実現することのできる制御方式として知られている。また、ＭＰＣにおいて、「ＭＰＣに用いる参照軌道の時定数」がＭＰＣの追従性とロバスト性とのトレードオフを調整するためのパラメータであることが知られている。
【００８４】
したがって、コントローラ１０および５０は、各々、実運転時に実行するＭＰＣについて、必要なロバスト性を確保するためのパラメータ（具体的には、「参照軌道の時定数Ｔｒ」）を予め簡易に準備しておくことができる。すなわち、コントローラ１０および５０の各々は、「基準値Ｔｒｓ」を最小値として用いて「参照軌道の時定数Ｔｒ」を決定することにより、ロバスト性を確保するための、実運転時に用いる「参照軌道の時定数Ｔｒ」の調整工数を削減することができる。
【００８５】
コントローラ１０および５０の各々は、予め準備しておいたＴｒまたはＴｒｓを、「参照軌道の時定数」として用いてＭＰＣの実運転を行ない、実運転の途中に、制御パラメータを任意の値に変更することがない。つまり、コントローラ１０および５０の各々は、ロバスト性を向上させる方法として、従来の「制御対象の特性に係る推定結果に基づいて、制御パラメータを任意の値に変更する」処理を採用しない。そのため、コントローラ１０および５０の各々は、制御対象の特性に係る誤推定のリスク、特に誤推定に伴う制御性低下のリスクを回避しながら、ロバスト性の向上を実現することができる。
【００８６】
コントローラ１０および５０の各々は、高追従性を実現することのできる制御方式として知られるＭＰＣを適用することで、ロバスト性を高めても追従性の高さを確保することができ、高追従性と高ロバスト性とを両立させた制御を実現することができる。コントローラ１０および５０の各々は、例えば、ワーク重量が変動する搬送装置の制御に適用可能であり、いわゆる「ピック＆プレース」工程の制御等に好適である。
【００８７】
これまで図２を参照しながら概要を説明してきたコントローラ１０および５０について、次に、コントローラ１０の構成および実行する処理の詳細について実施形態１として、コントローラ５０の構成および実行する処理の詳細について実施形態２として説明する。
【００８８】
§２．構成例
〔実施形態１〕
（コントローラの詳細）
図１は、コントローラ１０等の要部構成を示すブロック図である。図１に示すように、コントローラ１０は、機能ブロックとして、指令値生成部１１０、ＭＰＣ部１２０、事前調整部１３０、および、切替部１９０を備えている。なお、記載の簡潔性を担保するため、本実施の形態に直接関係のない構成は、説明およびブロック図から省略している。ただし、実施の実情に則して、コントローラ１０は、当該省略された構成を備えてもよい。図１に例示した各機能ブロックは、例えば、ＣＰＵ（central processing unit）等が、ＲＯＭ（read only memory）、ＮＶＲＡＭ（non-Volatile random access memory）等で実現された記憶装置（記憶部１８０）に記憶されているプログラムを不図示のＲＡＭ（random access memory）等に読み出して実行することで実現できる。以下、コントローラ１０における各機能ブロックについて説明する。
【００８９】
（記憶部以外の機能ブロックの詳細）
指令値生成部１１０は、外部（例えば、ユーザ）から、目標軌道データ（目標軌道）を受け付け（軌道生成）、受け付けた目標軌道データから制御周期ごとに指令値（例えば、指令位置）を生成する。そして、指令値生成部１１０は、生成した指令値を、制御周期ごとに、ＭＰＣ部１２０へと出力する。
【００９０】
ＭＰＣ部１２０は、制御対象２０（または３０）に対するＭＰＣを実行し、具体的には、制御対象２０（または３０）の動特性モデルＭｓを用いて、制御対象２０（または３０）の未来の状態を予測する。ＭＰＣ部１２０は、制御対象２０（または３０）の未来の出力（制御量の予測値）ができる限り目標値（指令値、つまり指令位置）に近づくように、制御対象２０（または３０）への操作量を決定する。つまり、ＭＰＣ部１２０は、制御対象２０（または３０）の動特性モデルに基づいて制御対象２０（または３０）の未来の出力（制御量）の変化を予測し、出力と目標値とができるだけ近づくように、制御対象２０（または３０）への入力（操作量）を決定する。
【００９１】
ＭＰＣ部１２０は、制御対象２０（または３０）の挙動をモデル化した制御対象２０（または３０）の動特性モデルＭｓを、例えば記憶部１８０の第１モデルテーブル１８１を参照して取得する。そして、ＭＰＣ部１２０は、取得した動特性モデルＭｓを用いて、各制御周期において制御対象２０（または３０）が出力する制御量を予測する。すなわち、ＭＰＣ部１２０は、動特性モデルＭｓを用いて、各制御周期における制御量の予測値を算出する。ＭＰＣ部１２０は、動特性モデルＭｓを用いて、「これまでに取得している実測値（＝フィードバック値）」および「これまでに制御対象２０（または３０）へ出力している操作量」から、「未来の制御周期における制御量」を予測する。例えば、ＭＰＣ部１２０は、動特性モデルＭｓを用いて、「これまでに取得しているフィードバック位置」および「これまでに制御対象２０（または３０）へ出力している指令速度（または、指令トルク）」から、「未来の制御周期におけるフィードバック位置」を予測する。
【００９２】
そして、ＭＰＣ部１２０は、予測した「未来の制御周期におけるフィードバック位置（制御量）」が、指令値生成部１１０から取得した未来の指令位置（指令値）に一致するように、制御対象２０（または３０）に対する現在の制御周期における操作量を決定する。ＭＰＣ部１２０は、決定した「現在の制御周期における操作量（例えば、指令速度または指令トルク）」を、現在の制御周期において、制御対象２０（または３０）（具体的には、サーボドライバ２１または３１）に出力する。
【００９３】
ここで、制御対象２０（または３０）の動特性モデルは、サーボドライバ２１（または３１）の動特性モデルと、機械２３（または３３）の動特性モデルとを含んでいる。ＭＰＣ部１２０は、制御の対象となる全体（すなわち、サーボドライバ２１（または３１）と機械２３（または３３）とを含む、制御対象２０（または３０）の全体。入力（操作量）から出力（制御量）までの範囲）の動特性モデルＭｓを用いて、ＭＰＣを実行する。
【００９４】
ＭＰＣ部１２０は、第１モデルテーブル１８１に格納されている「制御対象２０（または３０）の動特性モデルＭｓ」を用いて、制御対象２０（または３０）に対するＭＰＣの実運転を実行する。ＭＰＣ部１２０は、実運転として実行するＭＰＣのための「参照軌道の時定数」として、第２時定数テーブル１８３に格納されている時定数Ｔｒ、または、第１時定数テーブル１８２に格納されている基準値Ｔｒｓを用いる。ＭＰＣ部１２０は、実運転中に、ＭＰＣに用いる「参照軌道の時定数」を、切替部１９０からの指示にしたがって、ＴｒからＴｒｓへ、または、ＴｒｓからＴｒへ、切り替える。
【００９５】
事前調整部１３０は、コントローラ１０の試運転時に、コントローラ１０が実運転時に用いる、「制御対象２０（または３０）へのＭＰＣのための参照軌道の時定数Ｔｒ」を準備する。事前調整部１３０は、モデル算出部１４０、設定部１５０、判定部１６０、決定部１７０、および、記憶部１８０を含んでいる。
【００９６】
モデル算出部１４０は、「制御対象２０（または３０）の負荷Ｌが、制御対象２０（または３０）の最大負荷Ｌｍａｘの半分以下の、所定の負荷Ｌｓである」制御対象２０（または３０）に対応する、制御対象２０（または３０）の動特性モデルＭｓを作成する。モデル算出部１４０は、例えば、「所定の負荷Ｌｓ」が「制御対象２０（または３０）の最小負荷Ｌｍｉｎ」である場合（つまり、「Ｌｓ＝Ｌｍｉｎ」である場合）に対応する、制御対象２０（または３０）の動特性モデルＭｓを作成する。例えば、モデル算出部１４０は、「ＭＰＣ部１２０から制御対象２０（または３０）への操作量」および「その操作量に対応する、制御対象２０（または３０）の制御量（フィードバック値）」等を、動特性モデルＭｓを同定するための入出力データとして取得する。そして、モデル算出部１４０は、取得した入出力データを用いて、制御対象２０（または３０）の動特性モデルＭｓを生成する。モデル算出部１４０は、作成した制御対象２０（または３０）の動特性モデルＭｓを、記憶部１８０の第１モデルテーブル１８１に格納する。
【００９７】
ただし、コントローラ１０にとってモデル算出部１４０を備えることは必須ではなく、つまり、コントローラ１０にとって制御対象２０（または３０）の動特性モデルＭｓを生成する処理の実行は必須ではない。コントローラ１０は、例えば、制御対象２０（または３０）の動特性モデルＭｓを、ユーザ等の外部から取得してもよく、取得したモデルを、記憶部１８０の第１モデルテーブル１８１に格納してもよい。
【００９８】
設定部１５０は、第１モデルテーブル１８１を参照して、制御対象２０（または３０）の動特性モデルＭｓを取得する。設定部１５０は、制御対象２０（または３０）の動特性モデルＭｓから、「その動特性モデルＭｓを用いる、制御対象２０（または３０）に対するＭＰＣ」のための「参照軌道の時定数Ｔｒ」の基準値Ｔｒｓを設定する。設定部１５０が、動特性モデルＭｓから基準値Ｔｒｓを算出する方法について、詳細は後述する。設定部１５０は、算出した基準値Ｔｒｓを、記憶部１８０の第１時定数テーブル１８２に格納する。
【００９９】
決定部１７０は、第１時定数テーブル１８２を参照して基準値Ｔｒｓを取得し、取得した基準値Ｔｒｓを用いて、制御対象２０（または３０）へのＭＰＣの試運転から、制御対象２０（または３０）へのＭＰＣによる制御を安定化させる参照軌道の時定数Ｔｒを決定する。決定部１７０は、基準値Ｔｒｓを最小値として、「負荷Ｌが最大負荷Ｌｍａｘである制御対象２０（または３０）」に対するＭＰＣの試運転から、動特性モデルＭｓを用いた、制御対象２０（または３０）に対するＭＰＣによる制御を安定化させる参照軌道の時定数Ｔｒを探索する。
【０１００】
決定部１７０は、ＭＰＣ部１２０に、「『基準値Ｔｒｓ以上である』との条件を満たすＴｒｘを、参照軌道の時定数とする」ＭＰＣの試運転を、「最大負荷Ｌｍａｘにおける制御対象２０（または３０）」に対して実行させる。決定部１７０は、ＭＰＣ部１２０に試運転させるＭＰＣが安定するまで、つまり、制御が安定するまで、Ｔｒｘの値を徐々に大きくして、ＭＰＣ部１２０に、ＭＰＣの試運転を繰り返し指示する。具体的には、決定部１７０は、「『参照軌道の時定数がＴｒｘであるＭＰＣ』が実行された制御対象２０（または３０）の状態を示す値」が所定の基準を満たしていると判定部１６０によって判定されるまで、Ｔｒｘの値を徐々に大きくして、ＭＰＣの試運転を指示する。
【０１０１】
例えば、決定部１７０は、「ｎ」を「１以上の整数」として、「第１時定数テーブル１８２を参照して取得した基準値Ｔｒｓに、所定の差分値ｄｔｒ（＞０）のｎ倍を付加した変数Ｔｒｘ」を生成する。決定部１７０は、先ず「ｎ＝１」として、ＭＰＣ部１２０に、「最大負荷Ｌｍａｘにおける制御対象２０（または３０）に対して、生成したＴｒｘを『参照軌道の時定数』とするＭＰＣ（試運転）を実行する」よう指示する。「ｎ＝１」としたＴｒｘを「参照軌道の時定数」とするＭＰＣが実行されている制御対象２０（または３０）の状態を示す値が、判定部１６０により所定の基準を満たしていないと判定されると、決定部１７０は、「ｎ＝２」としてＭＰＣ部１２０に試運転の実行を指示する。決定部１７０は、「ｎ＝１，２，３、・・・」として、判定部１６０によって、「制御対象２０（または３０）の状態を示す値が所定の基準を満たす」と判定されるまで、ＭＰＣ部１２０に試運転の実行を指示する。判定部１６０によって、「制御対象２０（または３０）の状態を示す値が所定の基準を満たす」と判定されると、決定部１７０は、その時のＴｒｘを、「制御対象２０（または３０）へのＭＰＣによる制御を安定化させる『参照軌道の時定数Ｔｒ』」として決定する。
【０１０２】
なお、上述の例では、基準値Ｔｒｓを最小値として「参照軌道の時定数Ｔｒ」を決定する方法として、「基準値Ｔｒｓに所定の差分値ｄｔｒを順次足して『参照軌道の時定数Ｔｒ』を探索する」方法について説明したが、これ以外の方法を採用することもできる。
【０１０３】
決定部１７０は、「基準値Ｔｒｓに、１よりも大きな所定の倍率を乗じて徐々に大きくしていったＴｒｘ」のうち、最大負荷Ｌｍａｘにおける制御対象２０（または３０）に対して実行するＭＰＣによる制御を安定させるＴｒｘを、時定数Ｔｒとしてもよい。例えば、決定部１７０は、Ｔｒｘを基準値Ｔｒｓの１倍、２倍、４倍、８倍、・・・と徐々に大きくしていって、判定部１６０によって「制御対象２０（または３０）の状態を示す値が所定の基準を満たす」と判定されるＴｒｘを探索してもよい。
【０１０４】
決定部１７０は、基準値Ｔｒｓを最小値として「参照軌道の時定数Ｔｒ」を決定する方法として、判定部１６０によって最初に「制御対象２０（または３０）の状態を示す値が所定の基準を満たす」と判定されたＴｒｘを「参照軌道の時定数Ｔｒ」に決定しなくてもよい。
【０１０５】
決定部１７０は、判定部１６０によって最初に「制御対象２０（または３０）の状態を示す値が所定の基準を満たす」と判定されたＴｒｘをさらに大きくした変数Ｔｒｘ１を「参照軌道の時定数」とする試運転を、ＭＰＣ部１２０にさらに実行させてもよい。そして、Ｔｒｘ１を「参照軌道の時定数」とするＭＰＣが、Ｔｒｘを「参照軌道の時定数」とするＭＰＣよりも、より安定的な制御を実現できる場合、Ｔｒｘ１を「参照軌道の時定数Ｔｒ」に決定してもよい。Ｔｒｘ１は、「Ｔｒｘに所定の差分値ｄｔｒを足した値」であってもよいし、「Ｔｒｓに、１よりも大きな所定の倍率を乗じた値」であってもよい。また、決定部１７０は、Ｔｒｘ１をさらに大きくした変数Ｔｒｘ２、Ｔｒｘ２をさらに大きくした変数Ｔｒｘ３、Ｔｒｘ３をさらに大きくした変数Ｔｒｘ４、・・・を「参照軌道の時定数」とする試運転を、ＭＰＣ部１２０にさらに実行させてもよい。そして、決定部１７０は、「Ｔｒｘ、Ｔｒｘ１、Ｔｒｘ２、Ｔｒｘ３、・・・」の各々を「参照軌道の時定数」とするＭＰＣが実行された制御対象２０（または３０）の各々の状態を示す値を比較して、最も好適な値を「参照軌道の時定数Ｔｒ」に決定してもよい。さらに、コントローラ１０は、「Ｔｒｘ、Ｔｒｘ１、Ｔｒｘ２、Ｔｒｘ３、・・・」の各々を「参照軌道の時定数」とするＭＰＣが実行された制御対象２０（または３０）の各々の状態を示す値をユーザに提示してもよい。そして、コントローラ１０は、「Ｔｒｘ、Ｔｒｘ１、Ｔｒｘ２、Ｔｒｘ３、・・・」の中からユーザによって選択された値を、「参照軌道の時定数Ｔｒ」に決定してもよい。
【０１０６】
決定部１７０は、基準値Ｔｒｓを最小値として、例えば上述の方法を用いて「参照軌道の時定数Ｔｒ」を決定し、決定した「参照軌道の時定数Ｔｒ」を、記憶部１８０の第２時定数テーブル１８３に格納する。
【０１０７】
判定部１６０は、試運転時および実運転時に、ＭＰＣ部１２０によってＭＰＣが実行されている制御対象２０（または３０）の状態を示す値を取得して、ＭＰＣの安定性（つまり、制御の安定性）を判定し、判定結果を、決定部１７０および切替部１９０に通知する。
【０１０８】
判定部１６０は、ＭＰＣ（制御）の安定性を判定するために、「ＭＰＣが実行されている制御対象２０（または３０）の状態を示す値」が、所定の基準を超えて振動していないかを確認する。判定部１６０は、「ＭＰＣが実行されている制御対象２０（または３０）の状態を示す値」が、所定の基準を超えて振動していないことを確認すると、制御が安定していると判定する。判定部１６０は、例えば、「ＭＰＣが実行されている制御対象２０（または３０）の出力トルク」が所定の基準を超えて振動していないかを判定し、出力トルクが所定の基準を超えて振動していることを確認すると、制御が安定していないと判定する。具体的には、判定部１６０は、「ＭＰＣが実行されている制御対象２０（または３０）の出力トルク」を取得し、出力トルクが振動し、あるいは飽和を繰り返していることを確認すると、制御が安定していない旨を、決定部１７０および切替部１９０に通知する。
【０１０９】
判定部１６０による制御の安定性の判定は、「トルクが飽和しているか」を判定するものに限られず、判定部１６０は、「ＭＰＣが実行されている制御対象２０（または３０）の状態を示す値」が所定の基準を満たしているか否かによって、制御の安定性を判定してもよい。判定部１６０は、例えば、「ＭＰＣが実行されている制御対象２０（または３０）の出力するトルクの振動の大きさ（程度）」と「位置偏差の振動の大きさ」との組合せから、制御の安定性を判定してもよい。すなわち、制御対象２０（または３０）の出力するトルクが所定の基準を超えて振動しておらず、かつ、制御対象２０（または３０）の制御量（フィードバック位置）と指令値（指令位置）との差が所定の範囲に収まっている場合に、制御が安定していると判定してもよい。
【０１１０】
判定部１６０は、「制御対象２０（または３０）の状態を示す値（トルク、実位置（フィードバック位置）、実速度（実位置の微分値））」および「状態を示す値と指令値との差（位置偏差）」等の変数の少なくとも１つが、所定の基準を超える程度に振動していると、制御が安定していないと判定してもよい。なお、判定部１６０は、それらの変数の「振動の程度」を、振幅の大きさ、減衰率、および周波数等から判断してもよい。
【０１１１】
ただし、制御対象２０（または３０）の出力するトルクが振動し、あるいは飽和を繰り返している場合は「制御が安定していない」と確実に判定することができるため、判定部１６０は、少なくとも、「制御対象２０（または３０）の出力トルク」が所定の基準を超えて振動しているかを判定する。そして、判定部１６０は、「制御対象２０（または３０）の出力トルク」が所定の基準を超えて振動していると、「ＭＰＣが実行されている制御対象２０（または３０）の制御が安定していない」旨を、決定部１７０および切替部１９０に通知する。
【０１１２】
また、判定部１６０は、「動特性モデルＭｓに基づく予測誤差」の大きさが所定の閾値より小さいかを判定し、「動特性モデルＭｓに基づく予測誤差が、所定の閾値より小さい」と判定すると、その判定結果を切替部１９０に通知する。例えば判定部１６０は、ＭＰＣ部１２０が動特性モデルＭｓを用いて予測した「制御対象２０（または３０）の状態を示す値」と、制御対象２０（または３０）から取得したフィードバック値等の「制御対象２０（または３０）の状態を示す値」との誤差を算出する。判定部１６０は、算出した誤差（動特性モデルＭｓに基づく予測誤差）の大きさが所定の閾値より小さいと判定すると、その判定結果を切替部１９０に通知する。
【０１１３】
切替部１９０は、「Ｔｒを『参照軌道の時定数』とするＭＰＣが実行される制御対象２０（または３０）の状態および負荷Ｌの少なくとも一方」に応じて、ＭＰＣ部１２０が用いている「参照軌道の時定数」を、ＴｒからＴｒｓへ切り替えさせる。
【０１１４】
例えば、判定部１６０によって「動特性モデルＭｓに基づく予測誤差が所定の閾値より小さい」と判定され、「負荷Ｌが所定の負荷Ｌｓに近似したまま変動しない」と判断した場合、切替部１９０は、「参照軌道の時定数」を、ＴｒからＴｒｓへ切り替える。切替部１９０は、制御対象２０（または３０）の状態および負荷Ｌの少なくとも一方に応じて、実行中のＭＰＣに用いる「参照軌道の時定数」を、予め算出しておいたＴｒおよびＴｒｓのうち、より追従性の高い制御を実現することができる方に、適宜変更する。
【０１１５】
（記憶部の詳細）
記憶部１８０は、コントローラ１０が使用する各種データを格納する記憶装置である。なお、記憶部１８０は、コントローラ１０が実行する（１）制御プログラム、（２）ＯＳプログラム、（３）コントローラ１０が有する各種機能を実行するためのアプリケーションプログラム、および、（４）該アプリケーションプログラムを実行するときに読み出す各種データを非一時的に記憶してもよい。上記の（１）〜（４）のデータは、例えば、ＲＯＭ（read only memory）、フラッシュメモリ、ＥＰＲＯＭ（Erasable Programmable ROM）、ＥＥＰＲＯＭ（登録商標）（Electrically EPROM）、ＨＤＤ（Hard Disc Drive）等の不揮発性記憶装置に記憶される。コントローラ１０は、図示しない一時記憶部を備えていてもよい。一時記憶部は、コントローラ１０が実行する各種処理の過程で、演算に使用するデータおよび演算結果等を一時的に記憶するいわゆるワーキングメモリであり、ＲＡＭ（Random Access Memory）等の揮発性記憶装置で構成される。どのデータをどの記憶装置に記憶するのかについては、コントローラ１０の使用目的、利便性、コスト、または、物理的な制約等から適宜決定される。記憶部１８０はさらに第１モデルテーブル１８１、第１時定数テーブル１８２、および、第２時定数テーブル１８３を格納している。
【０１１６】
第１モデルテーブル１８１には、「負荷Ｌが、制御対象２０（または３０）の最大負荷Ｌｍａｘの半分以下の、所定の負荷Ｌｓである」制御対象２０（または３０）に対応する、制御対象２０（または３０）の動特性モデルＭｓが格納される。第１モデルテーブル１８１には、例えば、「『所定の負荷Ｌｓ』が最小負荷Ｌｍｉｎである、制御対象２０（または３０）」に対応する、制御対象２０（または３０）の動特性モデルＭｓが格納される。第１モデルテーブル１８１には、モデル算出部１４０によって作成された動特性モデルＭｓが格納される代わりに、ユーザ等の外部から取得された動特性モデルＭｓがモデル算出部１４０によって格納されてもよい。
【０１１７】
第１時定数テーブル１８２には、設定部１５０によって制御対象２０（または３０）の動特性モデルＭｓから算出された「基準値Ｔｒｓ」が格納される。第２時定数テーブル１８３には、決定部１７０によって基準値Ｔｒｓを最小値として用いて決定された「参照軌道の時定数Ｔｒ」が格納される。
【０１１８】
（コントローラの概要についての整理）
これまでに図１を用いて構成を説明してきたコントローラ１０について、その理解を容易にするため、以下のように整理しておく。すなわち、コントローラ１０は、目標軌道から制御周期ごとに生成される指令値に対応する制御対象２０（または３０）の制御量を、制御対象２０（または３０）のモデルを用いて予測するモデル予測制御装置であって、制御対象２０（または３０）の最大負荷Ｌｍａｘの半分以下の、所定の負荷Ｌｓにおける制御対象２０（または３０）の動特性に対応する制御対象２０（または３０）の動特性モデルＭｓ（第１のモデル）から、動特性モデルＭｓを用いた制御対象２０（または３０）に対するＭＰＣのための「参照軌道の時定数」の基準値である基準値Ｔｒｓを設定する設定部１５０と、「動特性モデルＭｓを用いたＭＰＣを、制御対象２０（または３０）の負荷Ｌが最大である制御対象２０（または３０）に対して実行した時の、制御対象２０（または３０）の状態を示す値が、所定の基準を超えて振動しない」との条件を満たす「参照軌道の時定数」である時定数Ｔｒを、設定部１５０により設定された基準値Ｔｒｓを用いて予め決定しておく決定部１７０と、決定部１７０により決定された時定数Ｔｒと、動特性モデルＭｓとを用いて、制御対象２０（または３０）に対するＭＰＣを実行するＭＰＣ部１２０（実行部）と、を備えている。
【０１１９】
前記の構成によれば、コントローラ１０は、動特性モデルＭｓから基準値Ｔｒｓを設定し、設定した基準値Ｔｒｓを用いて予め決定しておいた時定数Ｔｒと、動特性モデルＭｓとを用いて、制御対象２０（または３０）に対するＭＰＣを実行する。
【０１２０】
ここで一般に、ＭＰＣは高精度のフィードフォワード制御によって追従性を向上できることが知られており、また、ＭＰＣにおいて参照軌道の時定数が追従性とロバスト性とのトレードオフを調整するためのパラメータであることが知られている。さらに、制御特性に関係するパラメータを固定する場合、制御対象の負荷が小さくなるほど制御が振動的になりやすいことが知られている。
【０１２１】
コントローラ１０は、制御対象２０（または３０）に対するＭＰＣに用いる動特性モデルＭｓとして、制御対象２０（または３０）の最大負荷Ｌｍａｘの半分以下である、所定の負荷Ｌｓにおける制御対象２０（または３０）の動特性に対応する、制御対象２０（または３０）のモデルを用いる。
【０１２２】
ここで、制御対象２０（または３０）の負荷Ｌの変動に対して、ＭＰＣに用いるモデルを固定する場合、どの負荷に対応するモデルが最良のモデルであるのかを予め決定しておくことはできない。しかしながら、コントローラ１０は、制御対象２０（または３０）の小さめの負荷Ｌ（具体的には、所定の負荷Ｌｓ）に対応するモデルを用いることにより、大きめの負荷Ｌに対応するモデルを用いる場合に比べて、負荷Ｌの変動に対して、制御の振動を抑制することができる。
【０１２３】
すなわち、一般的に、制御に用いるモデルおよびパラメータを、或る負荷における制御対象に対応させて固定する場合、「制御対象の負荷の、その或る負荷からの変動の大きさ」が一定の範囲を超えると、その制御対象に対する制御について、振動が発生し始める。ただし、相対的に、制御対象の負荷がその或る負荷よりも大きくなる場合に比べて、その或る負荷よりも小さくなる場合の方が、「制御対象の負荷の、その或る負荷からの変動の大きさ」が小さくても、制御は振動的になってしまいやすい。言い換えれば、制御対象の負荷が採り得る範囲（＝負荷変動範囲）の中間よりも大きな負荷に対応するモデルを用いる場合より、負荷変動範囲の中間以下の負荷に対応するモデルを用いた場合の方が、「制御が振動的になってしまう可能性」を抑えることができる。そこで、コントローラ１０は、制御対象２０（または３０）の最大負荷Ｌｍａｘの半分以下の、所定の負荷Ｌｓに対応する動特性モデルＭｓを用いることで、「制御が振動的になってしまう可能性」をより抑制したＭＰＣを実行することができる。
【０１２４】
したがって、コントローラ１０は、高追従性を実現可能なＭＰＣを、高ロバスト性を実現可能な時定数Ｔｒを用いて実行することによって、高追従性と高ロバスト性とを両立させた制御を実現することができるとの効果を奏する。
【０１２５】
特に、コントローラ１０は、動特性モデルＭｓを用いたＭＰＣのための「参照軌道の時定数」として、予め決定しておいた時定数Ｔｒを用いることにより、制御対象２０（または３０）に対する制御について、高追従性と高ロバスト性とを両立させる。つまり、コントローラ１０は、制御に影響し得る要素の推定に基づいて制御の実行中に制御特性に影響するパラメータを変更して、高追従性と高ロバスト性とを両立させた制御を実現しようとするものではない。
【０１２６】
したがって、コントローラ１０は、推定に基づいて制御の実行中に制御特性に影響するパラメータを変更することなく、制御対象２０（または３０）に対する制御について、高追従性と高ロバスト性とを両立させることができるとの効果を奏する。高追従性と高ロバスト性とを両立しようして、推定に基づいて制御特性に影響するパラメータを変更する従来方式には、推定が誤っていた場合に制御性が低下するリスクがあるが、コントローラ１０にはそのようなリスクはない。
【０１２７】
さらに、時定数Ｔｒは、「動特性モデルＭｓを用いたＭＰＣを、制御対象２０（または３０）の負荷Ｌが最大である制御対象２０（または３０）に対して実行した時に、制御対象２０（または３０）の状態を示す値が、所定の基準を超えて振動しない」という条件を満たすように決定される。また、動特性モデルＭｓは、制御対象２０（または３０）の最大負荷Ｌｍａｘの半分以下の、所定の負荷Ｌｓにおける制御対象２０（または３０）の動特性に対応する制御対象２０（または３０）のモデルである。そして、基準値Ｔｒｓは、動特性モデルＭｓから、動特性モデルＭｓを用いた制御対象２０（または３０）に対するＭＰＣのための「参照軌道の時定数」の基準値として設定されるものである。そのため、基準値Ｔｒｓと時定数Ｔｒとの間には一定の関係があり、少なくとも、時定数Ｔｒは基準値Ｔｒｓよりも大きくなるという関係がある。
【０１２８】
したがって、コントローラ１０は、基準値Ｔｒｓを用いずに時定数Ｔｒを決定する場合に比べて、基準値Ｔｒｓを用いて時定数Ｔｒを決定することにより、時定数Ｔｒの決定に要する調整工数を抑制できるとの効果を奏する。
【０１２９】
コントローラ１０において、所定の負荷Ｌｓは、制御対象２０（または３０）の最小負荷Ｌｍｉｎである。前記の構成によれば、コントローラ１０は、制御対象２０（または３０）の最小負荷Ｌｍｉｎにおける制御対象２０（または３０）の動特性に対応する動特性モデルＭｓから、基準値Ｔｒｓを設定する。そして、コントローラ１０は、設定した基準値Ｔｒｓを用いて予め決定しておいた時定数Ｔｒと、動特性モデルＭｓとを用いて、制御対象２０（または３０）に対するＭＰＣを実行する。
【０１３０】
ここで、前述の通り、制御特性に関係するパラメータを固定する場合、制御対象の負荷が小さくなるほど制御が振動的になりやすいことが知られている。そこで、コントローラ１０は、動特性モデルＭｓとして、最小負荷Ｌｍｉｎにおける制御対象２０（または３０）の動特性に対応するモデルを、つまり、負荷Ｌの変動に対して、「制御が振動的になってしまう可能性」を最も抑制することのできるモデルを用いる。
【０１３１】
したがって、コントローラ１０は、高追従性を実現可能なＭＰＣを、高ロバスト性を実現可能な時定数Ｔｒを用いて実行することによって、高追従性と高ロバスト性とを両立させた制御を実現することができるとの効果を奏する。
【０１３２】
コントローラ１０において、設定部１５０は、基準値Ｔｒｓを、動特性モデルＭｓへのパルス入力の開始時点から、前記パルス入力に対する動特性モデルＭｓの「出力または出力差分」のピークが出現する時点までの時間を用いて設定する。
【０１３３】
前記の構成によれば、コントローラ１０は、基準値Ｔｒｓを、動特性モデルＭｓへのパルス入力の開始時点から、前記パルス入力に対する動特性モデルＭｓの「出力または出力差分」のピークが出現する時点までの時間（＝ピーク出現時間Ｔｐｋ）を用いて設定する。つまり、コントローラ１０は、基準値Ｔｒｓを、「動特性モデルＭｓへの入力を開始してから、動特性モデルＭｓへの入力変化の影響が、動特性モデルＭｓからの出力に最も大きく現れるまでの期間」として設定する。したがって、コントローラ１０は、基準値Ｔｒｓを、ピーク出現時間Ｔｐｋを用いて、容易に設定することができるとの効果を奏する。
【０１３４】
コントローラ１０は、前記所定の基準を超えて振動しているか（言い換えれば、制御が安定しているかを判定するための基準に収まっているか）を判定される制御対象２０（または３０）の状態を示す値として、制御対象２０（または３０）のトルクの値を判定する判定部１６０をさらに備えている。
【０１３５】
前記の構成によれば、コントローラ１０は、ＭＰＣを、負荷Ｌが最大である制御対象２０（または３０）に対して実行した時の、制御対象２０（または３０）のトルクの値が前記所定の基準を超えて振動しているかによって、ＭＰＣによる制御が安定しているかを判定する。そして、コントローラ１０は、前記トルクの値が前記所定の基準を超えて振動しないように、時定数Ｔｒを、基準値Ｔｒｓを用いて決定する。
【０１３６】
ここで一般に、或る制御方法が安定した制御を実現することができているかを判定するに際し、その或る制御方法が実行された制御対象の状態を示す値のうち、少なくともトルクが振動し、あるいは飽和を繰り返している場合、安定した制御を実現することができていないと判定することができる。
【０１３７】
したがって、コントローラ１０は、ＭＰＣを実行した制御対象２０（または３０）の状態を示す値のうち、少なくともトルクの値が前記所定の基準を超えて振動しているかを判定することで、ＭＰＣが安定しているかを確実に判定できるとの効果を奏する。
【０１３８】
コントローラ１０は、ＭＰＣ部１２０によりＭＰＣが実行される制御対象２０（または３０）の状態および負荷Ｌの少なくとも一方に応じて、ＭＰＣ部１２０が動特性モデルＭｓを用いてＭＰＣを実行する際の参照軌道の時定数を、時定数Ｔｒから基準値Ｔｒｓへ、または、基準値Ｔｒｓから時定数Ｔｒへ、切り替える切替部１９０をさらに備えている。
【０１３９】
前記の構成によれば、コントローラ１０は、ＭＰＣが実行される制御対象２０（または３０）の状態および負荷Ｌの少なくとも一方に応じて、ＭＰＣの参照軌道の時定数を、時定数Ｔｒから基準値Ｔｒｓへ、または、基準値Ｔｒｓから時定数Ｔｒへ、切り替える。
【０１４０】
例えば、機械の運転シーケンスに応じて、「或る工程以降は、制御対象２０（または３０）の負荷Ｌは、所定の負荷Ｌｓから、一定範囲以上変動しない」と予め分かっている場合、コントローラ１０は、以下のように、ＭＰＣの参照軌道の時定数を切り替える。すなわち、コントローラ１０は、ＭＰＣの参照軌道の時定数を、その或る工程以降は、時定数Ｔｒから基準値Ｔｒｓへ切り換える。
【０１４１】
前述の通り、コントローラ１０において、動特性モデルＭｓは、所定の負荷Ｌｓにおける制御対象２０（または３０）の動特性に対応するモデルである。また、基準値Ｔｒｓは、動特性モデルＭｓを用いた、制御対象２０（または３０）に対するＭＰＣのための「参照軌道の時定数」の基準値である。そして、所定の負荷Ｌｓにおける制御対象２０（または３０）に対して、動特性モデルＭｓを用いたＭＰＣを実行する場合、Ｔｒｓを「参照軌道の時定数」とした方が、Ｔｒを「参照軌道の時定数」とするより、追従性を向上することができる。
【０１４２】
例えば、制御対象２０（または３０）の負荷Ｌが所定の負荷Ｌｓに一致し変動しない場合、負荷Ｌが所定の負荷Ｌｓに近似したまま変動しない場合、つまり、負荷Ｌが所定の負荷Ｌｓから一定範囲以上変動しない場合、コントローラ１０は、「参照軌道の時定数」を切り替える。すなわち、これらの場合、コントローラ１０は、動特性モデルＭｓを用いた、制御対象２０（または３０）に対するＭＰＣの「参照軌道の時定数」を、ＴｒからＴｒｓへ切り換え、追従性を向上させる。動特性モデルＭｓに基づく予測誤差が或る閾値より小さい場合など、制御対象２０（または３０）の負荷Ｌが所定の負荷Ｌｓに近似したまま変動しないと判断できる場合、コントローラ１０は、「参照軌道の時定数」をＴｒｓへと切り換えて、追従性を向上させる。
【０１４３】
したがって、コントローラ１０は、制御対象２０（または３０）の状態および負荷Ｌの少なくとも一方に応じて、実行中のＭＰＣに用いる「参照軌道の時定数」を、より追従性の高い制御を実現することのできる値に、適宜変更することができるとの効果を奏する。
【０１４４】
特に、基準値Ｔｒｓおよび時定数Ｔｒはいずれも、所定の負荷Ｌｓにおける制御対象２０（または３０）に対する、または、負荷Ｌが最大である制御対象２０（または３０）に対する、ＭＰＣによる制御を安定させることのできる時定数として、予め準備しておいたものである。
【０１４５】
つまり、コントローラ１０は、「制御に影響し得る要素の推定に基づいて、制御の実行中に、制御特性に影響するパラメータを変更する」ものではなく、推定を誤って制御が不安定になるリスクがない。
【０１４６】
コントローラ１０は、制御対象２０（または３０）の状態および負荷Ｌの少なくとも一方に応じて、実行中のＭＰＣに用いる時定数を、予め準備しておいた基準値Ｔｒｓまたは時定数Ｔｒへと、適宜切り替える。したがって、コントローラ１０は、制御に影響し得る要素の推定を誤って制御が不安定になるリスクを冒さずに、高追従性と高ロバスト性とを両立させた制御を実現することができるとの効果を奏する。
【０１４７】
（参照軌道について）
図３は、ＭＰＣのための参照軌道について説明する図である。制御システム１および２においては、図３の破線で示される参照軌道として、現時刻ｎでの偏差を、「参照軌道の時定数」で指数関数的に「０」に近づける軌道を用いている。ＭＰＣ部１２０は、予測ホライズンＨ後に、指令値との一致を目指すのではなく、現在の偏差を「参照軌道の時定数」でゼロ向かわせる軌道への一致を目指して、操作量を決定する。図３の制御ホライズンＨｕは、「操作量の最適な時系列を計算する対象区間」を意味する。
【０１４８】
（モデル形式について）
ＭＰＣ部１２０が用いる動特性モデル（特に、第１モデルテーブル１８１に格納されている「制御対象２０（または３０）の動特性モデルＭｓ」）は、例えば、以下のような離散時間伝達関数の形式で与えられる。すなわち、
【０１４９】
【数１】
2020027482.tif 000003
【０１５０】
と示される離散時間伝達関数として、「制御対象２０（または３０）の動特性モデルＭｓ」は与えられる。本実施の形態においては、ＭＰＣ部１２０が用いる動特性モデルＭｓが離散時間伝達関数として示される例を説明するが、動特性モデルＭｓが離散時間伝達関数として示されることは必須ではない。動特性モデルＭｓは、例えば、連続時間伝達関数として示されてもよいし、状態空間モデルとして示されてもよいし、また、ステップ応答の配列データ等として示されてもよい。
【０１５１】
（時定数の基準値Ｔｒｓの自動設定方法の一例）
設定部１５０は、動特性モデルＭｓから「基準値Ｔｒｓ」を算出し、例えば、動特性モデルＭｓへのパルス入力に対する、動特性モデルＭｓの出力について、その出力のピークが出現する時間（＝ピーク出現時間Ｔｐｋ）の関数として、基準値Ｔｒｓを求める。すなわち、「Ｆ」を所定の関数として、設定部１５０は「基準値Ｔｒｓ」を、「Ｔｒｓ＝Ｆ（Ｔｐｋ）」として求め、例えば、正数αを用いて「Ｔｒｓ＝α＊Ｔｐｋ」として求める。以下では、動特性モデルＭｓからピーク出現時間Ｔｐｋを求める方法の一例を、図４を参照して説明する。
【０１５２】
図４は、「動特性モデルＭｓへのパルス入力の開始時点」から、「このパルス入力に対する動特性モデルＭｓの出力の『ピーク』が出現する時点」までの時間（期間）を、つまり、ピーク出現時間Ｔｐｋを、算出する方法の一例を説明する図である。設定部１５０は、動特性モデルＭｓへの入力を変化させてから、動特性モデルＭｓへの入力の変化の影響が、動特性モデルＭｓの出力に最も大きく現れるまでの期間として、「ピーク出現時間Ｔｐｋ」を算出する。ただし、図４の（Ｂ）に示すように、動特性モデルＭｓが積分特性を含む場合、設定部１５０は、動特性モデルＭｓの出力に差分処理を行って、「ピーク出現時間Ｔｐｋ」を求める。
【０１５３】
（定位系モデルについて）
動特性モデルＭｓが図４の（Ａ）に示すような定位系モデルである場合、設定部１５０は、以下のように「ピーク出現時間Ｔｐｋ」を求める。すなわち、動特性モデルＭｓが離散時間伝達関数として示される時、設定部１５０は、１サンプリング周期（＝制御周期）だけ「モデル入力ｕ＝１」とし、２周回目以降は「モデル入力ｕ＝０」として、モデル出力ｙを計算する。図４の（Ａ）において、「モデル入力ｕ」は、例えば動特性モデルＭｓへ入力する指令位置であり、「モデル出力ｙ」は、例えば動特性モデルＭｓの出力する実位置（フィードバック位置）の予測値である。動特性モデルＭｓが定位系モデルである場合、「ピーク出現時間Ｔｐｋ」は、「モデル入力ｕ」の入力時点（入力開始時点）から、「モデル出力ｙ」のピークが出現する時点までの時間（期間）である。
【０１５４】
なお、図４の（Ａ）において「モデル出力ｙ」は滑らかな曲線として描かれているが、実際には、モデル出力ｙとその差分データとは、サンプリング周期（＝モデル入力ｕのパルス幅）の間隔でしか更新されないため、「モデル出力ｙ」は階段状のグラフになる。
【０１５５】
（積分系モデルについて）
動特性モデルＭｓが図４の（Ｂ）に示すような積分系モデルである場合、設定部１５０は、以下のように「ピーク出現時間Ｔｐｋ」を求める。すなわち、１サンプリング周期（＝制御周期）だけ「モデル入力ｕ＝１」とし、２周回目以降は「モデル入力ｕ＝０」とすると、動特性モデルＭｓからは、図４の（Ｂ）の左側に示すような応答が得られる。図４の（Ｂ）の左側において、「モデル入力ｕ」は、例えば動特性モデルＭｓへ入力する指令速度であり、「モデル出力ｙ」は、例えば動特性モデルＭｓの出力する実位置（フィードバック位置）の予測値である。
【０１５６】
そして、設定部１５０は、図４の（Ｂ）の左側に示す「モデル出力ｙ」から、図４の（Ｂ）の右側に示す「モデル出力ｙ」の差分データｙｄを求め、この差分データｙｄのピークが出現する時点を「ピーク出現時間Ｔｐｋ」とする。具体的には、図４の（Ｂ）の右側に示す曲線（「モデル出力ｙ」の差分データｙｄを示す曲線）は、図４の（Ｂ）の左側に示す曲線（「モデル出力ｙ」を示す曲線）から、以下のようにして算出したものである。すなわち、「ｎ周期目のサンプリング周期におけるモデル出力ｙｎ」と「ｎ−１周期目のサンプリング周期におけるモデル出力ｙｎ−１」との差分を、１サンプリング周期（＝制御周期）で除することにより、図４の（Ｂ）の右側に示す曲線が得られる。動特性モデルＭｓが積分系モデルである場合、「ピーク出現時間Ｔｐｋ」は、「モデル入力ｕ」の入力時点（入力開始時点）から、「『モデル出力ｙ』の差分データｙｄ」のピークが出現する時点までの時間（期間）である。
【０１５７】
（ピーク出現時間Ｔｐｋの算出方法の一例）
動特性モデルＭｓが図４の（Ａ）に示すような定位系モデルである場合、「ピーク出現時間Ｔｐｋ」は、以下のように求めることができる。動特性モデルＭｓが離散時間伝達関数として示される場合、「モデル出力ｙ（例えば、動特性モデルＭｓの出力する実位置の予測値）」および「ｎ周期目のサンプリング周期におけるモデル出力ｙｎ」は以下のように示される。すなわち、
【０１５８】
【数２】
2020027482.tif 000004
【０１５９】
したがって、「Ｔｓ」を「サンプリング周期（＝制御周期）」とし、「Ｎ」を十分大きな正の整数として、以下の処理を実行することにより、「ピーク出現時間Ｔｐｋ」を求めることができる。すなわち、
【０１６０】
【数３】
2020027482.tif 000005
【０１６１】
この処理は、モデル出力ｙの最大値が出現する時間として、「ピーク出現時間Ｔｐｋ」を求めている。動特性モデルＭｓが図４の（Ｂ）に示すような積分系モデルである場合、モデル出力ｙの１サンプリング周期あたりの変化量（差分）の最大値が出現する時間として、「ピーク出現時間Ｔｐｋ」を求めることができる。設定部１５０は、上述のようにして求めた「ピーク出現時間Ｔｐｋ」から、例えば、正数αを用いて、「Ｔｒｓ＝α＊Ｔｐｋ」として、「基準値Ｔｒｓ」を算出する。
【０１６２】
（予測ホライズンの自動設定方法の一例）
コントローラ１０は、「基準値Ｔｒｓ」と同様に、ＭＰＣに用いる予測ホライズンＨ、および、制御ホライズンＨｕも、「ピーク出現時間Ｔｐｋ」の関数として求めてもよい。ただし、予測ホライズンＨも制御ホライズンＨｕも整数であるため、制御周期で除して四捨五入等で整数化する。
【０１６３】
「Ｆ１」を所定の関数として、コントローラ１０は、「予測ホライズンＨ」を、「Ｈ＝Ｆ１（Ｔｐｋ）」として求めてもよい。例えば、「Ｔｓ」を「サンプリング周期（＝制御周期）」とし、正数βを用いて、
【０１６４】
【数４】
2020027482.tif 000006
【０１６５】
として、「予測ホライズンＨ」を求めてもよい。なお、「ｒｏｕｎｄ（）：四捨五入関数」とする。
【０１６６】
同様に、「Ｆ２」を所定の関数として、コントローラ１０は、「制御ホライズンＨｕ」を、「Ｈｕ＝Ｆ２（Ｔｐｋ）」として求めてもよい。例えば、「サンプリング周期Ｔｓ」と正数γとを用いて、
【０１６７】
【数５】
2020027482.tif 000007
【０１６８】
として、「制御ホライズンＨｕ」を求めてもよい。
【０１６９】
§３．動作例
図５は、コントローラ１０が実行する処理の概要を示すフロー図である。モデル算出部１４０は、「制御対象２０（または３０）への操作量」および「その操作量に対応する、制御対象２０（または３０）の制御量（フィードバック値）」等を、動特性モデルＭｓを同定するための入出力データとして取得する（Ｓ１１０）。
【０１７０】
モデル算出部１４０は、取得した入出力データを用いて、「負荷Ｌが、最大負荷Ｌｍａｘの半分以下の、所定の負荷Ｌｓである」制御対象２０（または３０）に対応する、制御対象２０（または３０）の動特性モデルＭｓを作成する（Ｓ１２０）。モデル算出部１４０は、例えば、所定の負荷Ｌｓが最小負荷Ｌｍｉｎである制御対象２０（または３０）に対応する、制御対象２０（または３０）の動特性モデルＭｓを作成する。モデル算出部１４０は、作成した動特性モデルＭｓを、記憶部１８０の第１モデルテーブル１８１に格納する。
【０１７１】
設定部１５０は、第１モデルテーブル１８１を参照して取得した動特性モデルＭｓから、「動特性モデルＭｓを用いるＭＰＣ」のための「参照軌道の時定数Ｔｒ」の基準値Ｔｒｓを設定する（Ｓ１３０）。既に説明した通り、設定部１５０は、基準値Ｔｒｓを、「Ｓ１２０で作成した（または、外部から設定された）動特性モデルＭｓの、パルス入力に対する出力特性、または、出力特性の微分（差分）値」から、具体的にはピーク出現時間Ｔｐｋから、算出する。設定部１５０は、算出した基準値Ｔｒｓを、記憶部１８０の第１時定数テーブル１８２に格納する。
【０１７２】
決定部１７０は、第１時定数テーブル１８２を参照して基準値Ｔｒｓを取得し、取得した基準値Ｔｒｓを最小値として用いて、「動特性モデルＭｓを用いる、制御対象２０（または３０）に対するＭＰＣ」を安定化させる「参照軌道の時定数Ｔｒ」を決定する。決定部１７０は、ＭＰＣ部１２０に試運転させるＭＰＣが安定するまで、つまり、制御が安定するまで、変数Ｔｒｘの値を徐々に大きくして、ＭＰＣ部１２０に、「参照軌道の時定数」の値をＴｒｘとするＭＰＣの試運転を繰り返し指示する。
【０１７３】
すなわち、決定部１７０は先ず、変数Ｔｒｘに基準値Ｔｒｓの値を代入する（Ｓ１４０）。そして、決定部１７０は、ＭＰＣ部１２０に、「最大負荷Ｌｍａｘにおける制御対象２０（または３０）」に対する、動特性モデルＭｓを用いるＭＰＣの試運転を、「参照軌道の時定数」の値をＴｒｘとして、実行させる（Ｓ１５０）。
【０１７４】
判定部１６０は、「参照軌道の時定数がＴｒｘであるＭＰＣ」の制御結果データを取得し、つまり、「『参照軌道の時定数がＴｒｘであるＭＰＣ』が実行された制御対象２０（または３０）」の状態を示す値（例えば、出力トルク）を取得する（Ｓ１６０）。判定部１６０は、取得した制御結果データを用いて、「安定な制御ができているか」を判定する（Ｓ１７０）。判定部１６０は、少なくとも、「『参照軌道の時定数がＴｒｘであるＭＰＣ』が実行された制御対象２０（または３０）」の出力トルクが、所定の基準を超えて振動していないかを、例えば、飽和していないかを、判定する。
【０１７５】
判定部１６０によって、「安定な制御ができていない」と判定されると（Ｓ１７０でＮｏ）、決定部１７０は、「変数Ｔｒｘに、『０よりも大きな所定の差分値ｄｔｒ』を足したＴｒｘ」を生成する（Ｓ１８０）。決定部１７０は、「『参照軌道の時定数』の値を、Ｓ１８０で生成したＴｒｘとする」ＭＰＣの試運転を実行させ（Ｓ１５０）、判定部１６０は、試運転の制御結果データを取得して（Ｓ１６０）、「安定な制御ができているか」を判定する（Ｓ１７０）。判定部１６０によって「安定な制御ができている」と判定されるまで、決定部１７０は、変数Ｔｒｘの値を徐々に大きくして、ＭＰＣ部１２０に繰り返し試運転を実行させる。具体的には、決定部１７０は、変数Ｔｒｘの値を徐々に大きくしていきながら、ＭＰＣ部１２０に、「参照軌道の時定数」の値をＴｒｘとする、「最大負荷Ｌｍａｘにおける制御対象２０（または３０）」に対するＭＰＣを、繰り返し実行させる。
【０１７６】
判定部１６０によって、「安定な制御ができている」と判定されると（Ｓ１７０でＹｅｓ）、決定部１７０は、その時の変数Ｔｒｘの値を、「制御対象２０（または３０）へのＭＰＣによる制御を安定化させる参照軌道の時定数Ｔｒ」に決定する（Ｓ１９０）。そして、決定部１７０は、決定した「参照軌道の時定数Ｔｒ」を、記憶部１８０の第２時定数テーブル１８３に格納する。
【０１７７】
ＭＰＣ部１２０は、決定部１７０が決定した「参照軌道の時定数Ｔｒ」を、つまり、第２時定数テーブル１８３に格納されている時定数Ｔｒを用いて、制御対象２０（または３０）に対する、動特性モデルＭｓを用いたＭＰＣの実運転を実行する（Ｓ２００）。
【０１７８】
前述の通り、決定部１７０は、Ｓ１８０において、「差分値ｄｔｒを足して、変数Ｔｒｘの値を大きくする」のに代えて、「１よりも大きな所定の倍率を乗じて、変数Ｔｒｘの値を大きくする」方法を採用してもよい。
【０１７９】
また、決定部１７０は、判定部１６０によって最初に「安定な制御ができている」と判定されたＴｒｘを「参照軌道の時定数Ｔｒ」に決定しなくてもよい。決定部１７０は、判定部１６０によって最初に「安定な制御ができている」と判定されたＴｒｘに一定倍率を乗じたり、差分値ｄｔｒをさらに足したりした変数Ｔｒｘ１を、「参照軌道の時定数Ｔｒ」に決定してもよい。決定部１７０は、Ｔｒｘをさらに大きくした変数Ｔｒｘ１、Ｔｒｘ１をさらに大きくした変数Ｔｒｘ２、Ｔｒｘ２をさらに大きくした変数Ｔｒｘ３のいずれかを、適宜、「制御対象２０（または３０）へのＭＰＣによる制御を安定化させる参照軌道の時定数Ｔｒ」に決定してもよい。
【０１８０】
これまで図５を参照しながら説明してきた「コントローラ１０が実行する処理」は、以下のように整理することができる。すなわち、「コントローラ１０が実行する処理」は、目標軌道から制御周期ごとに生成される指令値に対応する制御対象２０（または３０）の制御量を、制御対象２０（または３０）のモデルを用いて予測するモデル予測制御装置の制御方法であって、制御対象２０（または３０）の最大負荷Ｌｍａｘの半分以下の、所定の負荷Ｌｓにおける制御対象２０（または３０）の動特性に対応する制御対象２０（または３０）の動特性モデルＭｓから、動特性モデルＭｓを用いた制御対象２０（または３０）に対するＭＰＣのための「参照軌道の時定数」の基準値である基準値Ｔｒｓを設定する設定ステップ（Ｓ１３０）と、「動特性モデルＭｓを用いたＭＰＣを、制御対象２０（または３０）の負荷が最大である制御対象２０（または３０）に対して実行した時の、制御対象２０（または３０）の状態を示す値が、所定の基準を超えて振動しない」との条件を満たす時定数Ｔｒを、設定ステップＳ１３０にて設定した基準値Ｔｒｓを用いて予め決定しておく決定ステップ（Ｓ１９０）と、決定ステップＳ１９０にて決定した時定数Ｔｒと、動特性モデルＭｓとを用いて、制御対象２０（または３０）に対するＭＰＣを実行する実行ステップ（Ｓ２００）と、を含んでいる。
【０１８１】
前記の方法によれば、「コントローラ１０が実行する処理」は、動特性モデルＭｓから基準値Ｔｒｓを設定し、設定した基準値Ｔｒｓを用いて予め決定しておいた時定数Ｔｒと、動特性モデルＭｓとを用いて、制御対象２０（または３０）に対するＭＰＣを実行する。
【０１８２】
ここで一般に、ＭＰＣは高精度のフィードフォワード制御によって追従性を向上できることが知られており、また、ＭＰＣにおいて参照軌道の時定数が追従性とロバスト性とのトレードオフを調整するためのパラメータであることが知られている。さらに、制御特性に関係するパラメータを固定する場合、制御対象の負荷が小さくなるほど制御が振動的になりやすいことが知られている。
【０１８３】
「コントローラ１０が実行する処理」は、制御対象２０（または３０）に対するＭＰＣに用いる動特性モデルＭｓとして、制御対象２０（または３０）の最大負荷Ｌｍａｘの半分以下である所定の負荷Ｌｓにおける制御対象２０（または３０）の動特性に対応する、制御対象２０（または３０）のモデルを用いる。
【０１８４】
ここで、制御対象２０（または３０）の負荷Ｌの変動に対して、ＭＰＣに用いるモデルを固定する場合、どの負荷に対応するモデルが最良のモデルであるのかを予め決定しておくことはできない。しかしながら、「コントローラ１０が実行する処理」は、制御対象２０（または３０）の小さめの負荷Ｌ（具体的には、所定の負荷Ｌｓ）に対応するモデルを用いることにより、大きめの負荷Ｌに対応するモデルを用いる場合に比べて、負荷Ｌの変動に対して、制御の振動を抑制することができる。
【０１８５】
すなわち、一般的に、制御に用いるモデルおよびパラメータを、或る負荷における制御対象に対応させて固定する場合、「制御対象の負荷の、その或る負荷からの変動の大きさ」が一定の範囲を超えると、その制御対象に対する制御について、振動が発生し始める。ただし、相対的に、制御対象の負荷がその或る負荷よりも大きくなる場合に比べて、その或る負荷よりも小さくなる場合の方が、「制御対象の負荷の、その或る負荷からの変動の大きさ」が小さくても、制御は振動的になってしまいやすい。言い換えれば、制御対象の負荷が採り得る範囲（＝負荷変動範囲）の中間よりも大きな負荷に対応するモデルを用いる場合より、負荷変動範囲の中間以下の負荷に対応するモデルを用いた場合の方が、「制御が振動的になってしまう可能性」を抑えることができる。そこで、「コントローラ１０が実行する処理」は、制御対象２０（または３０）の最大負荷Ｌｍａｘの半分以下の、所定の負荷Ｌｓに対応するモデルを用いることで、「制御が振動的になってしまう可能性」をより抑制したモデル予測制御を実行することができる。
【０１８６】
したがって、「コントローラ１０が実行する処理」は、高追従性を実現可能なＭＰＣを、高ロバスト性を実現可能な時定数Ｔｒを用いて実行することによって、高追従性と高ロバスト性とを両立させた制御を実現することができるとの効果を奏する。
【０１８７】
特に、「コントローラ１０が実行する処理」は、動特性モデルＭｓを用いたＭＰＣのための参照軌道の時定数として、予め決定しておいた時定数Ｔｒを用いることにより、制御対象２０（または３０）に対する制御について、高追従性と高ロバスト性とを両立させる。つまり、「コントローラ１０が実行する処理」は、制御に影響し得る要素の推定に基づいて制御の実行中に制御特性に影響するパラメータを変更して、高追従性と高ロバスト性とを両立させた制御を実現しようとするものではない。
【０１８８】
したがって、「コントローラ１０が実行する処理」は、推定に基づいて制御の実行中に制御特性に影響するパラメータを変更することなく、制御対象２０（または３０）に対する制御について、高追従性と高ロバスト性とを両立させることができるとの効果を奏する。高追従性と高ロバスト性とを両立しようして、推定に基づいて制御特性に影響するパラメータを変更する従来方式には、推定が誤っていた場合に制御性が低下するリスクがあるが、「コントローラ１０が実行する処理」にはそのようなリスクはない。
【０１８９】
さらに、時定数Ｔｒは、「動特性モデルＭｓを用いたＭＰＣを、制御対象２０（または３０）の負荷Ｌが最大である制御対象２０（または３０）に対して実行した時に、制御対象２０（または３０）の状態を示す値が、所定の基準を超えて振動しない」という条件を満たすように決定される。また、動特性モデルＭｓは、制御対象２０（または３０）の最大負荷Ｌｍａｘの半分以下の、所定の負荷Ｌｓにおける制御対象２０（または３０）の動特性に対応する制御対象２０（または３０）のモデルである。そして、基準値Ｔｒｓは、動特性モデルＭｓから、動特性モデルＭｓを用いた制御対象２０（または３０）に対するＭＰＣのための「参照軌道の時定数」の基準値として設定されるものである。そのため、基準値Ｔｒｓと時定数Ｔｒとの間には一定の関係があり、少なくとも、時定数Ｔｒは基準値Ｔｒｓよりも大きくなるという関係がある。
【０１９０】
したがって、「コントローラ１０が実行する処理」は、基準値Ｔｒｓを用いずに時定数Ｔｒを決定する場合に比べて、基準値Ｔｒｓを用いて時定数Ｔｒを決定することにより、時定数Ｔｒの決定に要する調整工数を抑制することができるとの効果を奏する。
【０１９１】
〔実施形態２〕
本発明の他の実施形態について、図６および図７に基づいて説明すれば、以下のとおりである。なお記載の簡潔性を担保するため、実施形態１とは異なる構成（処理の手順および処理の内容）のみについて説明する。すなわち、実施形態１で記載された構成等は、本実施形態にもすべて含まれ得る。また、実施形態１で記載した用語の定義も同じである。
【０１９２】
（構成）
図６は、本発明の実施形態２に係るコントローラ５０等の要部構成を示すブロック図である。コントローラ５０は、図１のコントローラ１０と同様に、指令値生成部１１０、ＭＰＣ部１２０、および、切替部１９０を備え、また、コントローラ１０の事前調整部１３０に代えて、事前調整部５３０を備えている。
【０１９３】
事前調整部５３０は、コントローラ５０の試運転時に、コントローラ５０が実運転時に用いる、「制御対象２０（または３０）へのＭＰＣのための参照軌道の時定数Ｔｒ」を準備する。事前調整部５３０は、事前調整部１３０と同様に、モデル算出部１４０、設定部１５０、判定部１６０、決定部１７０を備え、また、事前調整部１３０の記憶部１８０に代えて、記憶部５８０を備え、さらに、負荷変動倍率算出部５１０を備えている。
【０１９４】
負荷変動倍率算出部５１０は、「負荷Ｌが最大負荷Ｌｍａｘである、制御対象２０（または３０）の総イナーシャ」を、「負荷Ｌが所定の負荷Ｌｓである、制御対象２０（または３０）の総イナーシャ」で除した値として、負荷変動倍率Ｒを算出する。つまり、負荷変動倍率算出部５１０は、「最大負荷Ｌｍａｘに対応する、制御対象２０（または３０）の総イナーシャ」を、「所定の負荷Ｌｓに対応する、制御対象２０（または３０）の総イナーシャ」で除した値として、負荷変動倍率Ｒを算出する。ここで、第１モデルテーブル１８１に格納される「制御対象２０（または３０）の動特性モデルＭｓ」は、「制御対象２０（または３０）の負荷Ｌが所定の負荷Ｌｓである、制御対象２０（または３０）」に対応する。したがって、「所定の負荷Ｌｓに対応する、制御対象２０（または３０）の総イナーシャ」は、「制御対象２０（または３０）の動特性モデルＭｓの総イナーシャ（動特性モデルＭｓに対応する制御対象２０（または３０）の総イナーシャ）」と言い換えてもよい。負荷変動倍率算出部５１０は、算出した負荷変動倍率Ｒを負荷変動倍率テーブル５８１に格納する。
【０１９５】
なお、前述の通り、「制御対象２０（または３０）の総イナーシャ」は、「機械２３または３３が含むサーボモータのロータイナーシャ」と「制御対象２０（または３０）の負荷イナーシャ」との合計である。ただし、制御対象２０（または３０）がリニアモータ駆動である場合、イナーシャの代わりに質量となる。また、いわゆる「イナーシャ比」は、「負荷イナーシャ」を「モータのロータイナーシャ」で除した値であり、つまり、「イナーシャ比＝負荷イナーシャ／モータのロータイナーシャ」である。「総イナーシャ＝モータのロータイナーシャ＋負荷イナーシャ」であるから、「総イナーシャ＝モータのロータイナーシャ＊（１．０＋イナーシャ比）」となる。
【０１９６】
記憶部５８０は、コントローラ１０の記憶部１８０と同様に、第１モデルテーブル１８１、第１時定数テーブル１８２、および、第２時定数テーブル１８３を格納し、さらに、記憶部１８０には格納されていない負荷変動倍率テーブル５８１を格納している。負荷変動倍率テーブル５８１には、負荷変動倍率算出部５１０によって算出された負荷変動倍率Ｒが格納される。
【０１９７】
コントローラ５０の決定部１７０は、コントローラ１０の決定部１７０と同様に、第１時定数テーブル１８２を参照して取得した基準値Ｔｒｓを用いて、制御対象２０（または３０）へのＭＰＣによる制御を安定化させる「参照軌道の時定数Ｔｒ」を決定する。ただし、コントローラ５０の決定部１７０による「参照軌道の時定数Ｔｒ」の決定方法は、コントローラ１０の決定部１７０による「参照軌道の時定数Ｔｒ」の決定方法とは異なる。
【０１９８】
コントローラ１０の決定部１７０は、基準値Ｔｒｓを最小値として、「変数Ｔｒｘ（＝参照軌道の時定数Ｔｒの候補）」の値を徐々に大きくしていきながら、「最大負荷Ｌｍａｘにおける制御対象２０（または３０）」に対するＭＰＣが安定するＴｒｘを探索する。動特性モデルＭｓを用いた、「最大負荷Ｌｍａｘにおける制御対象２０（または３０）」に対するＭＰＣが、「参照軌道の時定数」を或るＴｒｘにしたときに安定すると、コントローラ１０の決定部１７０は、その或るＴｒｘを「参照軌道の時定数Ｔｒ」に決定する。
【０１９９】
これに対して、コントローラ５０の決定部１７０は、基準値Ｔｒｓと、負荷変動倍率テーブル５８１に格納されている負荷変動倍率Ｒとから、制御対象２０に対するＭＰＣの実運転時に用いる「参照軌道の時定数Ｔｒ」を決定する。コントローラ５０の決定部１７０は、例えば「Ｔｒ＝Ｔｒｓ＊Ｒ」として、「参照軌道の時定数Ｔｒ」を決定し、決定した「参照軌道の時定数Ｔｒ」を、記憶部５８０の第２時定数テーブル１８３に格納する。
【０２００】
これまでに図６を用いて構成を説明してきたコントローラ５０について、その理解を容易にするため、以下のように整理しておく。すなわち、コントローラ５０は、目標軌道から制御周期ごとに生成される指令値に対応する制御対象２０（または３０）の制御量を、制御対象２０（または３０）のモデルを用いて予測するモデル予測制御装置であって、制御対象２０（または３０）の最大負荷Ｌｍａｘの半分以下の、所定の負荷Ｌｓにおける制御対象２０（または３０）の動特性に対応する制御対象２０（または３０）の動特性モデルＭｓから、動特性モデルＭｓを用いた制御対象２０（または３０）に対するＭＰＣのための「参照軌道の時定数」の基準値である基準値Ｔｒｓを設定する設定部１５０と、動特性モデルＭｓを用いたＭＰＣを、制御対象２０（または３０）の負荷Ｌが最大である制御対象２０（または３０）に対して実行した時の、制御対象２０（または３０）の状態を示す値が、所定の基準を超えて振動しないとの条件を満たす「参照軌道の時定数」である時定数Ｔｒを、設定部１５０により設定された基準値Ｔｒｓを用いて予め決定しておく決定部１７０と、決定部１７０により決定された時定数Ｔｒと、動特性モデルＭｓとを用いて、制御対象２０（または３０）に対するＭＰＣを実行するＭＰＣ部１２０（実行部）と、を備えている。
【０２０１】
前記の構成によれば、コントローラ５０は、動特性モデルＭｓから基準値Ｔｒｓを設定し、設定した基準値Ｔｒｓを用いて予め決定しておいた時定数Ｔｒと、動特性モデルＭｓとを用いて、制御対象２０（または３０）に対するＭＰＣを実行する。
【０２０２】
ここで一般に、ＭＰＣは高精度のフィードフォワード制御によって追従性を向上できることが知られており、また、ＭＰＣにおいて参照軌道の時定数が追従性とロバスト性とのトレードオフを調整するためのパラメータであることが知られている。さらに、制御特性に関係するパラメータを固定する場合、制御対象の負荷が小さくなるほど制御が振動的になりやすいことが知られている。
【０２０３】
コントローラ５０は、制御対象２０（または３０）に対するＭＰＣに用いる動特性モデルＭｓとして、制御対象２０（または３０）の最大負荷Ｌｍａｘの半分以下である、前記所定の負荷Ｌｓにおける制御対象２０（または３０）の動特性に対応する、制御対象２０（または３０）のモデルを用いる。
【０２０４】
ここで、制御対象２０（または３０）の負荷Ｌの変動に対して、ＭＰＣに用いるモデルを固定する場合、どの負荷Ｌに対応するモデルが最良のモデルであるのかを予め決定しておくことはできない。しかしながら、コントローラ５０は、制御対象２０（または３０）の小さめの負荷Ｌ（具体的には、所定の負荷Ｌｓ）に対応するモデルを用いることにより、大きめの負荷Ｌに対応するモデルを用いる場合に比べて、負荷Ｌの変動に対して、制御の振動を抑制することができる。
【０２０５】
すなわち、一般的に、制御に用いるモデルおよびパラメータを、或る負荷における制御対象に対応させて固定する場合、「制御対象の負荷の、その或る負荷からの変動の大きさ」が一定の範囲を超えると、その制御対象に対する制御について、振動が発生し始める。ただし、相対的に、制御対象の負荷がその或る負荷よりも大きくなる場合に比べて、その或る負荷よりも小さくなる場合の方が、「制御対象の負荷の、その或る負荷からの変動の大きさ」が小さくても、制御は振動的になってしまいやすい。言い換えれば、制御対象の負荷が採り得る範囲（＝負荷変動範囲）の中間よりも大きな負荷に対応するモデルを用いる場合より、負荷変動範囲の中間以下の負荷に対応するモデルを用いた場合の方が、「制御が振動的になってしまう可能性」を抑えることができる。そこで、コントローラ５０は、制御対象２０（または３０）の最大負荷Ｌｍａｘの半分以下の、所定の負荷Ｌｓに対応するモデルを用いることで、「制御が振動的になってしまう可能性」をより抑制したＭＰＣを実行することができる。
【０２０６】
したがって、コントローラ５０は、高追従性を実現可能なＭＰＣを、高ロバスト性を実現可能な時定数Ｔｒを用いて実行することによって、高追従性と高ロバスト性とを両立させた制御を実現することができるとの効果を奏する。
【０２０７】
特に、コントローラ５０は、動特性モデルＭｓを用いたＭＰＣのための「参照軌道の時定数」として、予め決定しておいた時定数Ｔｒを用いることにより、制御対象２０（または３０）に対する制御について、高追従性と高ロバスト性とを両立させる。つまり、コントローラ５０は、制御に影響し得る要素の推定に基づいて制御の実行中に制御特性に影響するパラメータを変更して、高追従性と高ロバスト性とを両立させた制御を実現しようとするものではない。
【０２０８】
したがって、コントローラ５０は、推定に基づいて制御の実行中に制御特性に影響するパラメータを変更することなく、制御対象２０（または３０）に対する制御について、高追従性と高ロバスト性とを両立させることができるとの効果を奏する。高追従性と高ロバスト性とを両立しようして、推定に基づいて制御特性に影響するパラメータを変更する従来方式には、推定が誤っていた場合に制御性が低下するリスクがあるが、コントローラ５０にはそのようなリスクはない。
【０２０９】
さらに、時定数Ｔｒは、「動特性モデルＭｓを用いたＭＰＣを、制御対象２０（または３０）の負荷が最大である制御対象２０（または３０）に対して実行した時に、制御対象２０（または３０）の状態を示す値が、所定の基準を超えて振動しない」という条件を満たすように決定される。また、動特性モデルＭｓは、制御対象２０（または３０）の最大負荷Ｌｍａｘの半分以下の、所定の負荷Ｌｓにおける制御対象２０（または３０）の動特性に対応する制御対象２０（または３０）のモデルである。そして、基準値Ｔｒｓは、動特性モデルＭｓから、動特性モデルＭｓを用いた制御対象２０（または３０）に対するＭＰＣのための「参照軌道の時定数」の基準値として設定されるものである。そのため、基準値Ｔｒｓと時定数Ｔｒとの間には一定の関係があり、少なくとも、時定数Ｔｒは基準値Ｔｒｓよりも大きくなるという関係がある。
【０２１０】
したがって、コントローラ５０は、基準値Ｔｒｓを用いずに時定数Ｔｒを決定する場合に比べて、基準値Ｔｒｓを用いて時定数Ｔｒを決定することにより、時定数Ｔｒの決定に要する調整工数を抑制できるとの効果を奏する。
【０２１１】
コントローラ５０において、決定部１７０は、制御対象２０（または３０）の最大負荷Ｌｍａｘにおける総イナーシャの、制御対象２０（または３０）の所定の負荷Ｌｓにおける総イナーシャに対する比率と、基準値Ｔｒｓとを用いて、時定数Ｔｒを決定する。前述の通り、回転モータにおける「イナーシャ」は、回転モータがリニアモータである場合、「質量」である。
【０２１２】
前記の構成によれば、コントローラ５０は、時定数Ｔｒを、「『最大負荷Ｌｍａｘに対応する総イナーシャ』の、『所定の負荷Ｌｓに対応する総イナーシャ』に対する比率（これを「負荷変動倍率Ｒ」とも称する）」と、基準値Ｔｒｓとを用いて決定する。したがって、コントローラ５０は、負荷変動倍率Ｒと基準値Ｔｒｓとを用いて、時定数Ｔｒを容易に決定することができるとの効果を奏する。
【０２１３】
（動作）
図７は、コントローラ５０が実行する処理の概要を示すフロー図である。モデル算出部１４０は、「負荷Ｌが、最大負荷Ｌｍａｘの半分以下の、所定の負荷Ｌｓである」制御対象２０（または３０）に対応する、制御対象２０（または３０）の動特性モデルＭｓを作成し、または、ユーザ等の外部から取得する（Ｓ６１０）。モデル算出部１４０は、作成または取得した動特性モデルＭｓを、記憶部５８０の第１モデルテーブル１８１に格納する。設定部１５０は、第１モデルテーブル１８１を参照して取得した動特性モデルＭｓから、「動特性モデルＭｓを用いるＭＰＣ」のための「参照軌道の時定数」の基準値Ｔｒｓを設定する（Ｓ６２０）。すなわち、設定部１５０は、動特性モデルＭｓについてピーク出現時間Ｔｐｋを求め、ピーク出現時間Ｔｐｋの関数として基準値Ｔｒｓを算出し、算出した基準値Ｔｒｓを、記憶部５８０の第１時定数テーブル１８２に格納する。
【０２１４】
負荷変動倍率算出部５１０は、「負荷Ｌが最大負荷Ｌｍａｘである、制御対象２０（または３０）の総イナーシャ」と、「負荷Ｌが所定の負荷Ｌｓである、制御対象２０（または３０）の総イナーシャ」とから、負荷変動倍率Ｒを設定する（Ｓ６３０）。すなわち、負荷変動倍率算出部５１０は、「負荷Ｌが最大負荷Ｌｍａｘである、制御対象２０（または３０）の総イナーシャ」を、「負荷Ｌが所定の負荷Ｌｓである、制御対象２０（または３０）の総イナーシャ」で除した値として、負荷変動倍率Ｒを算出する。そして、負荷変動倍率算出部５１０は、算出した負荷変動倍率Ｒを負荷変動倍率テーブル５８１に格納する。
【０２１５】
決定部１７０は、第１時定数テーブル１８２を参照して取得する基準値Ｔｒｓと、負荷変動倍率テーブル５８１を参照して取得する負荷変動倍率Ｒとから、制御対象２０に対するＭＰＣの実運転時に用いる「参照軌道の時定数Ｔｒ」を決定する。「Ｆ」を「基準値Ｔｒｓと負荷変動倍率Ｒとから、『参照軌道の時定数Ｔｒ』を算出する関数」として、決定部１７０は、「Ｔｒ＝Ｆ（Ｔｒｓ，Ｒ）」として、「参照軌道の時定数Ｔｒ」を決定する（Ｓ６４０）。例えば、決定部１７０は、「Ｔｒ＝Ｔｒｓ＊Ｒ」として、「参照軌道の時定数Ｔｒ」を決定する。そして、決定部１７０は、決定した「参照軌道の時定数Ｔｒ」を、記憶部５８０の第２時定数テーブル１８３に格納する。
【０２１６】
ＭＰＣ部１２０は、決定部１７０によって決定された「参照軌道の時定数Ｔｒ」を、つまり、第２時定数テーブル１８３に格納されている時定数Ｔｒを用いて、制御対象２０（または３０）に対するＭＰＣの実運転を実行する（Ｓ６５０）。
【０２１７】
これまで図７を参照しながら説明してきた「コントローラ５０が実行する処理」は、以下のように整理することができる。すなわち、「コントローラ５０が実行する処理」は、目標軌道から制御周期ごとに生成される指令値に対応する制御対象２０（または３０）の制御量を、制御対象２０（または３０）のモデルを用いて予測するモデル予測制御装置の制御方法であって、制御対象２０（または３０）の最大負荷Ｌｍａｘの半分以下の、所定の負荷Ｌｓにおける制御対象２０（または３０）の動特性に対応する制御対象２０（または３０）の動特性モデルＭｓから、動特性モデルＭｓを用いた制御対象２０（または３０）に対するＭＰＣのための「参照軌道の時定数」の基準値である基準値Ｔｒｓを設定する設定ステップ（Ｓ６２０）と、「動特性モデルＭｓを用いたＭＰＣを、制御対象２０（または３０）の負荷Ｌが最大である制御対象２０（または３０）に対して実行した時の、制御対象２０（または３０）の状態を示す値が、所定の基準を超えて振動しない」との条件を満たす「参照軌道の時定数」である時定数Ｔｒを、設定ステップＳ６２０にて設定した基準値Ｔｒｓを用いて予め決定しておく決定ステップ（Ｓ６４０）と、決定ステップＳ６４０にて決定した時定数Ｔｒと、動特性モデルＭｓとを用いて、制御対象２０（または３０）に対するＭＰＣを実行する実行ステップ（Ｓ６５０）と、を含んでいる。
【０２１８】
前記の方法によれば、「コントローラ５０が実行する処理」は、動特性モデルＭｓから基準値Ｔｒｓを設定し、設定した基準値Ｔｒｓを用いて予め決定しておいた時定数Ｔｒと、動特性モデルＭｓとを用いて、制御対象２０（または３０）に対するＭＰＣを実行する。
【０２１９】
ここで一般に、ＭＰＣは高精度のフィードフォワード制御によって追従性を向上できることが知られており、また、ＭＰＣにおいて参照軌道の時定数が追従性とロバスト性とのトレードオフを調整するためのパラメータであることが知られている。さらに、制御特性に関係するパラメータを固定する場合、制御対象の負荷が小さくなるほど制御が振動的になりやすいことが知られている。
【０２２０】
「コントローラ５０が実行する処理」は、制御対象２０（または３０）に対するＭＰＣに用いる動特性モデルＭｓとして、制御対象２０（または３０）の最大負荷Ｌｍａｘの半分以下である、所定の負荷Ｌｓにおける制御対象２０（または３０）の動特性に対応する、制御対象２０（または３０）のモデルを用いる。
【０２２１】
ここで、制御対象２０（または３０）の負荷Ｌの変動に対して、ＭＰＣに用いるモデルを固定する場合、どの負荷Ｌに対応するモデルが最良のモデルであるのかを予め決定しておくことはできない。しかしながら、「コントローラ５０が実行する処理」は、制御対象２０（または３０）の小さめの負荷Ｌ（具体的には、所定の負荷Ｌｓ）に対応するモデルを用いることにより、大きめの負荷Ｌに対応するモデルを用いる場合に比べて、負荷Ｌの変動に対して、制御の振動を抑制することができる。
【０２２２】
すなわち、一般的に、制御に用いるモデルおよびパラメータを、或る負荷における制御対象に対応させて固定する場合、「制御対象の負荷の、その或る負荷からの変動の大きさ」が一定の範囲を超えると、その制御対象に対する制御について、振動が発生し始める。ただし、相対的に、制御対象の負荷がその或る負荷よりも大きくなる場合に比べて、その或る負荷よりも小さくなる場合の方が、「制御対象の負荷の、その或る負荷からの変動の大きさ」が小さくても、制御は振動的になってしまいやすい。言い換えれば、制御対象の負荷が採り得る範囲（＝負荷変動範囲）の中間よりも大きな負荷に対応するモデルを用いる場合より、負荷変動範囲の中間以下の負荷に対応するモデルを用いた場合の方が、「制御が振動的になってしまう可能性」を抑えることができる。そこで、「コントローラ５０が実行する処理」は、制御対象２０（または３０）の最大負荷Ｌｍａｘの半分以下の、所定の負荷Ｌｓに対応するモデルを用いることで、「制御が振動的になってしまう可能性」をより抑制したＭＰＣを実行することができる。
【０２２３】
したがって、「コントローラ５０が実行する処理」は、高追従性を実現可能なＭＰＣを、高ロバスト性を実現可能な時定数Ｔｒを用いて実行することによって、高追従性と高ロバスト性とを両立させた制御を実現することができるとの効果を奏する。
【０２２４】
特に、「コントローラ５０が実行する処理」は、動特性モデルＭｓを用いたＭＰＣのための「参照軌道の時定数」として、予め決定しておいた時定数Ｔｒを用いることにより、制御対象２０（または３０）に対する制御について、高追従性と高ロバスト性とを両立させる。つまり、「コントローラ５０が実行する処理」は、制御に影響し得る要素の推定に基づいて制御の実行中に制御特性に影響するパラメータを変更して、高追従性と高ロバスト性とを両立させた制御を実現しようとするものではない。
【０２２５】
したがって、「コントローラ５０が実行する処理」は、推定に基づいて制御の実行中に制御特性に影響するパラメータを変更することなく、制御対象２０（または３０）に対する制御について、高追従性と高ロバスト性とを両立させることができるとの効果を奏する。高追従性と高ロバスト性とを両立しようして、推定に基づいて制御特性に影響するパラメータを変更する従来方式には、推定が誤っていた場合に制御性が低下するリスクがあるが、「コントローラ５０が実行する処理」にはそのようなリスクはない。
【０２２６】
さらに、時定数Ｔｒは、「動特性モデルＭｓを用いたＭＰＣを、制御対象２０（または３０）の負荷Ｌが最大である制御対象２０（または３０）に対して実行した時に、制御対象２０（または３０）の状態を示す値が、所定の基準を超えて振動しない」という条件を満たすように決定される。また、動特性モデルＭｓは、制御対象２０（または３０）の最大負荷Ｌｍａｘの半分以下の、所定の負荷Ｌｓにおける制御対象２０（または３０）の動特性に対応する制御対象２０（または３０）のモデルである。そして、基準値Ｔｒｓは、動特性モデルＭｓから、動特性モデルＭｓを用いた制御対象２０（または３０）に対するＭＰＣのための「参照軌道の時定数」の基準値として設定されるものである。そのため、基準値Ｔｒｓと時定数Ｔｒとの間には一定の関係があり、少なくとも、時定数Ｔｒは基準値Ｔｒｓよりも大きくなるという関係がある。
【０２２７】
したがって、「コントローラ５０が実行する処理」は、基準値Ｔｒｓを用いずに時定数Ｔｒを決定する場合に比べて、基準値Ｔｒｓを用いて時定数Ｔｒを決定することにより、時定数Ｔｒの決定に要する調整工数を抑制することができるとの効果を奏する。
【０２２８】
（「安定な制御ができているか」を判定する方法の一例）
これまでに説明してきたコントローラ１０および５０について、次に、コントローラ１０および５０の奏する効果と、コントローラ１０による「参照軌道の時定数Ｔｒの選択方法」とについて、図８から図１４を用いて説明する。
【０２２９】
図８から図１４において、「基準イナーシャ」は、「制御対象２０（または３０）の負荷Ｌが、最大負荷Ｌｍａｘの半分以下の、所定の負荷Ｌｓである」制御対象２０（または３０）の総イナーシャに対応するものとする。特に、図８から図１４において、所定の負荷Ｌｓは最小負荷Ｌｍｉｎに等しいものとし、つまり、「基準イナーシャ」は、「制御対象２０（または３０）の負荷Ｌが、最小負荷Ｌｍｉｎである」制御対象２０（または３０）の総イナーシャに対応するものとする。つまり、「基準イナーシャ」は、最小負荷Ｌｍｉｎに対応するイナーシャであるものとする。
【０２３０】
同様に、「基準イナーシャの１０倍のイナーシャ」は、「制御対象２０（または３０）の負荷Ｌが最大負荷Ｌｍａｘである」制御対象２０（または３０）の総イナーシャに対応するものとする。つまり、「基準イナーシャの１０倍のイナーシャ」は、最大負荷Ｌｍａｘに対応するイナーシャであるものとする。
【０２３１】
前述の通り、「負荷変動倍率Ｒ＝『負荷Ｌが最大負荷Ｌｍａｘである、制御対象２０（または３０）の総イナーシャ』／『負荷Ｌが所定の負荷Ｌｓである、制御対象２０（または３０）の総イナーシャ』」である。したがって、図８から図１４において、「負荷変動倍率Ｒ＝『基準イナーシャの１０倍のイナーシャ』／『基準イナーシャ』＝１０」である。以下では、「総イナーシャ」は単に「イナーシャ」と略記することがある。
【０２３２】
（負荷変動が、従来の方法に基づく制御の結果に及ぼす影響について）
コントローラ１０および５０の各々が奏する効果についての理解を容易にするため、先ず、図８から図１０を用いて、従来の方法について、負荷変動がある場合の制御結果を示す。具体的には、従来の「サーボドライバのＰ−ＰＩ制御について、制御パラメータ（具体的には、制御ゲイン）を調整して、追従性とロバスト性とを向上しようとする」方法について、負荷変動がある場合の制御結果を、図８から図１０を参照して以下に説明する。
【０２３３】
図８から図１０は、従来の「サーボドライバ２１または３１のＰ−ＰＩ制御について、制御ゲイン（イナーシャ比を含む）を調整する」方法について、負荷変動がある場合の制御結果を示すものである。
【０２３４】
なお、前述の通り、コントローラ１０および５０の判定部１６０は、「制御対象（具体的には、制御対象２０（または３０））の状態を示す値」および「状態を示す値と指令値との差」等の変数の少なくとも１つを用いて、制御が安定しているかを判定する。例えば、「制御対象のトルク、実位置（フィードバック位置）、実速度（実位置の微分値）」および「状態を示す値と指令値との差（位置偏差等）」の少なくとも１つが所定の基準を超えて振動していると、判定部１６０は、制御が安定していないと判定する。判定部１６０は、これらの４つの変数の「振動の程度」について、その振幅の大きさ、減衰率、および周波数等から、「所定の基準を超えているか」を判断する。図８から図１０に示す、従来の調整方法についても同様に、負荷変動がある場合の制御結果が安定しているかを、これらの変数の振動の程度等を用いて、判定する。
【０２３５】
図８の（Ａ）は、制御ゲインを「基準イナーシャに対応する制御ゲイン」に調整したサーボドライバのＰ−ＰＩ制御を、イナーシャ（＝総イナーシャ）を基準イナーシャとした制御対象に対して実行した場合の、制御結果を示している。具体的には、図８の（Ａ）は、紙面の上から順に、制御ゲインを「基準イナーシャに対応する制御ゲイン」に調整したＰ−ＰＩ制御を実行した場合に、イナーシャを基準イナーシャとした制御対象が出力する、位置、位置偏差、および、トルクを示している。
【０２３６】
同様に、図８の（Ｂ）は、制御ゲインを「基準イナーシャに対応する制御ゲイン」に調整したＰ−ＰＩ制御を実行した場合に、基準イナーシャの１０倍のイナーシャの制御対象が出力する位置、位置偏差、および、トルクを示している。図９の（Ａ）は、制御ゲインを「基準イナーシャの１０倍のイナーシャに対応する制御ゲイン」に調整したＰ−ＰＩ制御を実行した場合に、基準イナーシャの１０倍のイナーシャの制御対象が出力する位置、位置偏差、および、トルクを示している。図９の（Ｂ）は、制御ゲインを「基準イナーシャの１０倍のイナーシャに対応する制御ゲイン」に調整したＰ−ＰＩ制御を実行した場合に、イナーシャを基準イナーシャとした制御対象が出力する、位置、位置偏差、および、トルクを示している。
【０２３７】
図８の（Ａ）は、「制御ゲイン：基準イナーシャに対応する制御ゲイン」であって、「イナーシャ：基準イナーシャ」であるから、制御結果（制御対象が出力する、位置、位置偏差、および、トルク）は当然に安定する。これに対して、「制御ゲイン：基準イナーシャに対応する制御ゲイン」であって、「イナーシャ：基準イナーシャの１０倍」である図８の（Ｂ）は、トルクと位置偏差との両方に振動が見られ（特に、トルクの振動は極めて大きい）、制御は安定していない。つまり、制御ゲインを「基準イナーシャに対応する制御ゲイン」に調整したＰ−ＰＩ制御では、イナーシャの大きさを１０倍にすると、制御対象の状態を示す値が振動的になり、安定な制御ができないことが分かる。
【０２３８】
図９の（Ａ）は、「制御ゲイン：基準イナーシャの１０倍のイナーシャに対応する制御ゲイン」であって、「イナーシャ：基準イナーシャの１０倍」であるから、制御結果（制御対象が出力する、位置、位置偏差、および、トルク）は当然に安定する。すなわち、イナーシャを１０倍にしたのに合わせてイナーシャ比を正しく設定すれば、当然、安定な制御を実現することができる。これに対して、「制御ゲイン：基準イナーシャの１０倍のイナーシャに対応する制御ゲイン」であって、「イナーシャ：基準イナーシャ」である図９の（Ｂ）は、少なくとも位置偏差に大きな振幅の振動はないが、トルクに大きな振動が見られる。すなわち、図９の（Ｂ）に示すトルクは、上限飽和と下限飽和とを繰り返すように大きな振動しており、制御は安定していない。つまり、制御ゲインを「基準イナーシャの１０倍のイナーシャに対応する制御ゲイン」に調整したＰ−ＰＩ制御を、基準イナーシャの制御対象に対して実行すると、制御対象の出力するトルクは激しく振動し、安定な制御ができない。
【０２３９】
図１０は、イナーシャ変動倍率を１０倍として、つまり、総イナーシャを基準イナーシャの１０倍とした場合（図１０の（Ａ））と、総イナーシャを基準イナーシャとした場合（図１０の（Ｂ））とについて、サーボドライバのＰ−ＰＩ制御の制御結果を示す。前述の通り、「基準イナーシャ」は、「制御対象の負荷が最小負荷Ｌｍｉｎである」制御対象の総イナーシャに対応し、「基準イナーシャの１０倍のイナーシャ」は、「制御対象の負荷が最大負荷Ｌｍａｘである」制御対象の総イナーシャに対応する。
【０２４０】
図１０の（Ａ）および（Ｂ）において、「イナーシャ比（＝負荷イナーシャ／モータのロータイナーシャ）」の設定は、基準イナーシャに合わせて設定し、変更していない。図１０の（Ａ）は、位置制御比例ゲインのみを「基準イナーシャに対応する制御ゲイン」の０．２５倍に調整したＰ−ＰＩ制御を実行した場合に、基準イナーシャの１０倍のイナーシャの制御対象が出力する位置、位置偏差、および、トルクを示している。図１０の（Ｂ）は、位置制御比例ゲインのみを「基準イナーシャに対応する制御ゲイン」の０．２５倍に調整したＰ−ＰＩ制御を実行した場合に、イナーシャを基準イナーシャとした制御対象が出力する位置、位置偏差、および、トルクを示している。
【０２４１】
図１０の（Ａ）および（Ｂ）に示すとおり、位置制御比例ゲインを０．２５倍することで、イナーシャを基準イナーシャの１０倍とした場合と、イナーシャを基準イナーシャとした場合との両方で、安定な制御が可能となる。つまり、位置制御比例ゲインを０．２５倍することで、イナーシャが「最大負荷Ｌｍａｘ」に対応する値である場合も、「最小負荷Ｌｍｉｎに対応する」値である場合も、制御が安定する。具体的には、図１０の（Ａ）および（Ｂ）の各々において、出力トルクは、所定の基準を超えて振動しておらず、所定の範囲に収まっている。
【０２４２】
ただし、図１０の（Ａ）および（Ｂ）の各々において、追従性は低下している。例えば、図１０の（Ａ）および（Ｂ）の各々における「位置偏差」の最大値は、図８および図９の各々の（Ａ）における「位置偏差」の最大値の２倍以上となっている。
【０２４３】
（各実施形態のコントローラについて、負荷変動がある場合の制御結果について）
図１１から図１４は、コントローラ１０および５０の各々について、制御対象２０（または３０）のイナーシャが変動する場合の制御結果を示す図である。また、図１１から図１４は、コントローラ１０および５０の各々において、判定部１６０が「安定な制御ができているか」を判定するための基準について、その具体例を示している。
【０２４４】
以下では、イナーシャ変動倍率を１０倍として、つまり、イナーシャを基準イナーシャとした場合と、イナーシャを基準イナーシャの１０倍とした場合とについて、コントローラ１０および５０の各々の制御結果を示す。言い換えれば、最小負荷Ｌｍｉｎに対応する総イナーシャ（＝基準イナーシャ）の制御対象と、最大負荷Ｌｍａｘに対応する総イナーシャ（＝基準イナーシャの１０倍のイナーシャ）の制御対象とについて、コントローラ１０および５０の各々の制御結果を示す。
【０２４５】
なお、以下ではコントローラ１０および５０の各々が、ＰＩ速度制御を実行するサーボドライバ２１に対してＭＰＣを適用する場合について説明するが、コントローラ１０および５０の各々が、サーボドライバ３１に対してＭＰＣを適用する場合も同様である。サーボドライバ２１の制御ゲイン（「イナーシャ比」含む）は、基準イナーシャに合わせて調整されているものとする。
【０２４６】
（基準値と負荷変動倍率とから時定数を決定する）
図１１の（Ａ）は、イナーシャが基準イナーシャである制御対象２０に、「イナーシャ（＝総イナーシャ）が基準イナーシャである制御対象２０」に対応する「制御対象２０の動特性モデルＭｓ」を用いたＭＰＣを実行した場合の制御結果を示している。図１１の（Ａ）に制御結果を示すＭＰＣについて、「参照軌道の時定数Ｔｒ」は「時定数の基準値Ｔｒｓ（＝０．００２５［ｓ］）」に等しく、つまり、「参照軌道の時定数Ｔｒ＝０．００２５［ｓ］」である。言い換えれば、図１１の（Ａ）は、動特性モデルＭｓを用いた、「参照軌道の時定数Ｔｒ＝０．００２５［ｓ］」であるＭＰＣを実行した場合に、総イナーシャが基準イナーシャである制御対象２０の出力する位置、位置偏差、および、トルクを示している。
【０２４７】
図１１の（Ｂ）は、図１１の（Ａ）と同様に、「総イナーシャが基準イナーシャである制御対象２０」に対応する「制御対象２０の動特性モデルＭｓ」を用いて、「参照軌道の時定数Ｔｒ＝０．００２５［ｓ］」であるＭＰＣを実行した場合の制御結果を示している。ただし、図１１の（Ｂ）において、制御対象２０の総イナーシャは、基準イナーシャの１０倍である。つまり、図１１の（Ａ）および（Ｂ）は共に、「総イナーシャが基準イナーシャである制御対象２０」に対応する「制御対象２０の動特性モデルＭｓ」を用いて、「参照軌道の時定数Ｔｒ＝０．００２５［ｓ］」であるＭＰＣを実行した場合の制御結果を示している。ただし、図１１の（Ａ）において、制御対象２０の総イナーシャは基準イナーシャに等しいのに対して、図１１の（Ｂ）において、制御対象２０の総イナーシャは基準イナーシャの１０倍である。
【０２４８】
図１１の（Ａ）と（Ｂ）との比較から分かるように、「動特性モデル：動特性モデルＭｓ（＝基準イナーシャに対応する動特性モデル）」、「時定数Ｔｒ：０．００２５［ｓ］（＝時定数の基準値Ｔｒｓ）」のＭＰＣの制御は、イナーシャ変動により振動する。すなわち、制御対象２０の総イナーシャが基準イナーシャの時は、図１１の（Ａ）に示すように、制御対象２０の出力トルクは、所定の基準を超えて振動しておらず、所定の範囲に収まっている。しかしながら、制御対象２０の総イナーシャが基準イナーシャの１０倍になると、図１１の（Ｂ）に示すように、制御対象２０の出力トルクの振動は、上限飽和と下限飽和とを繰り返すように大きな振動しており、制御は安定していない。つまり、「動特性モデル：動特性モデルＭｓ（＝基準イナーシャに対応する動特性モデル）」、「時定数Ｔｒ＝時定数の基準値Ｔｒｓ」のＭＰＣの制御は、「イナーシャ変動倍率：１０倍」について、安定した制御を実現することができない。
【０２４９】
これに対して、「動特性モデル：動特性モデルＭｓ（＝基準イナーシャに対応する動特性モデル）」は維持したまま、ＭＰＣに用いる「参照軌道の時定数Ｔｒ」を「時定数の基準値Ｔｒｓ」の１０倍にすることによって、安定した制御を実現することができる。すなわち、コントローラ５０の決定部１７０が、基準値Ｔｒｓ（＝０．００２５［ｓ］）と、負荷変動倍率Ｒ（＝１０）とから決定した「参照軌道の時定数Ｔｒ＝Ｔｒｓ＊Ｒ＝０．０２５［ｓ］」によって、コントローラ５０は安定した制御を実現することができる。以下、図１２を参照しながら、具体的に説明していく。
【０２５０】
図１２は、コントローラ１０および５０の各々が実行する、「動特性モデル：動特性モデルＭｓ（＝基準イナーシャに対応する動特性モデル）」、「時定数Ｔｒ：Ｔｒｓの１０倍（つまり、負荷変動倍率Ｒ倍）」のＭＰＣについて、制御結果を示す図である。具体的には、図１２の（Ａ）は、図１１の（Ａ）の動特性モデルＭｓと同じ動特性モデルＭｓを用いて、「参照軌道の時定数Ｔｒ」が「時定数の基準値Ｔｒｓ（＝０．００２５［ｓ］）」の１０倍であるＭＰＣを実行した場合の制御結果を示している。図１２の（Ａ）において、制御対象２０の総イナーシャは基準イナーシャの１０倍である。つまり、図１２の（Ａ）は、「動特性モデル：動特性モデルＭｓ（＝基準イナーシャに対応する動特性モデル）」、「時定数Ｔｒ：０．０２５［ｓ］」のＭＰＣを、「総イナーシャ：基準イナーシャの１０倍」の制御対象２０に実行した場合の制御結果を示している。また、図１２の（Ｂ）は、「動特性モデル：動特性モデルＭｓ（＝基準イナーシャに対応する動特性モデル）」、「時定数Ｔｒ：０．０２５［ｓ］」のＭＰＣを、「総イナーシャ：基準イナーシャ」の制御対象２０に実行した場合の制御結果を示している。つまり、図１２の（Ａ）および（Ｂ）は共に、「総イナーシャが基準イナーシャである制御対象２０」に対応する「制御対象２０の動特性モデルＭｓ」を用いて、「時定数Ｔｒ＝０．０２５［ｓ］」であるＭＰＣを実行した場合の制御結果を示している。ただし、図１２の（Ａ）において、制御対象２０の総イナーシャは基準イナーシャの１０倍であるのに対して、図１２の（Ｂ）において、制御対象２０の総イナーシャは基準イナーシャに等しい。
【０２５１】
図１２の（Ａ）に示すように、総イナーシャが基準イナーシャの１０倍である制御対象２０に対する、動特性モデルＭｓを用いたＭＰＣの制御結果は、「参照軌道の時定数Ｔｒ」を「時定数の基準値Ｔｒｓ」の１０倍にすることによって、安定する。すなわち、図１２の（Ａ）において、制御対象２０の出力トルクは、上限飽和および下限飽和のいずれにも達することなく所定の範囲に収まっており、制御は安定している。
【０２５２】
また、図１２の（Ｂ）に示すように、動特性モデルＭｓを用いた、「『参照軌道の時定数Ｔｒ』を『時定数の基準値Ｔｒｓ』の１０倍にした、ＭＰＣ」は、総イナーシャが基準イナーシャに等しい制御対象２０に対しても、安定した制御を実現することができる。すなわち、図１２の（Ｂ）において、制御対象２０の出力トルクは、上限飽和および下限飽和のいずれにも達することなく所定の範囲に収まっており、制御は安定している。
【０２５３】
さらに、図１２の（Ｂ）と図１１の（Ａ）との比較から分かるように、総イナーシャが基準イナーシャに等しい制御対象２０に対する、動特性モデルＭｓを用いたＭＰＣについて、「参照軌道の時定数Ｔｒ」を１０倍にすることにより、追従性は少しだけ低下する。すなわち、図１２の（Ｂ）の位置偏差の最大値は、図１１の（Ａ）の位置偏差の最大値よりも少しだけ大きい。つまり、「参照軌道の時定数Ｔｒ」を１０倍にすると、追従性は少しだけ低下するものの、依然として十分に高い追従性を維持できている。動特性モデルＭｓを用いた、「『参照軌道の時定数Ｔｒ』を『時定数の基準値Ｔｒｓ』の１０倍にした、ＭＰＣ」は、追従性の高い制御を実現することができている。特に、図８から図１０に示した従来の方法に比べて、図１２の（Ｂ）に示す、動特性モデルＭｓを用いた、「『参照軌道の時定数Ｔｒ』を『時定数の基準値Ｔｒｓ』の１０倍にした、ＭＰＣ」は、極めて追従性の高い制御を実現することができている。
【０２５４】
図１２の（Ａ）および（Ｂ）に示すように、コントローラ１０および５０の各々が実行する、動特性モデルＭｓを用いる、「『参照軌道の時定数Ｔｒ』を『時定数の基準値Ｔｒｓ』の１０倍にした、ＭＰＣ」は、ロバスト性の高い制御を実現し、制御を安定させる。また、コントローラ１０および５０の各々が実行する、動特性モデルＭｓを用いる、「『参照軌道の時定数Ｔｒ』を『時定数の基準値Ｔｒｓ』の１０倍にした、ＭＰＣ」は、従来の方法に比べて、追従性の高い制御を実現することができる。
【０２５５】
（基準値を最小値として、時定数を徐々に大きくして、好適な時定数を探索する）
コントローラ１０の決定部１７０は、「負荷Ｌが最大負荷Ｌｍａｘである制御対象２０」に対するＭＰＣによる制御を安定化させる「参照軌道の時定数Ｔｒ」の値を、最小値である基準値Ｔｒｓよりも少しずつ大きくしながら、探索する。例えば、決定部１７０は、「ｎ」を「１以上の整数」として、「所定の差分値ｄｔｒのｎ倍を基準値Ｔｒｓに付加した」変数Ｔｒｘについて、Ｔｒｘの値を少しずつ大きくしながら、最大負荷Ｌｍａｘの制御対象２０に対するＭＰＣによる制御を安定化させるＴｒｘを探索する。そして、決定部１７０は、最大負荷Ｌｍａｘの制御対象２０に対するＭＰＣによる制御を安定化させるＴｒｘの探索に成功すると、探索したＴｒｘを、「参照軌道の時定数Ｔｒ」の値とする。以下、図１３および図１４を用いて、「ｄｔｒ＝Ｔｒｓ」として、「コントローラ１０の決定部１７０が、最大負荷Ｌｍａｘの制御対象２０に対するＭＰＣによる制御を安定化させる変数Ｔｒｘを探索する」方法について、具体例を示しながら説明する。
【０２５６】
図１３の（Ａ）は、図１１の（Ａ）の動特性モデルＭｓと同じ動特性モデルＭｓを用いて、「参照軌道の時定数Ｔｒ＝Ｔｒｓ＋１＊ｄｔｒ＝０．００５［ｓ］」としたＭＰＣを実行した場合の制御結果を示している。なお、「ｄｔｒ＝Ｔｒｓ＝０．００２５［ｓ］」とする。図１３の（Ａ）において、制御対象２０の総イナーシャは基準イナーシャの１０倍である。つまり、図１３の（Ａ）は、「動特性モデル：動特性モデルＭｓ（＝基準イナーシャに対応する動特性モデル）」、「時定数Ｔｒ：０．００５［ｓ］」のＭＰＣを、「総イナーシャ：基準イナーシャの１０倍」の制御対象２０に実行した場合の制御結果を示している。
【０２５７】
図１３の（Ａ）に示すように、「総イナーシャ：基準イナーシャの１０倍」の制御対象２０に対する、動特性モデルＭｓを用いたＭＰＣは、「時定数Ｔｒ＝０．００５［ｓ］」のとき、指令位置の停止後は徐々に振動が収まるが、まだ安定な制御ができていない。例えば、図１３の（Ａ）において、トルクの一部は、上限飽和または下限飽和に達して振動しており、制御は安定していない。
【０２５８】
図１３の（Ｂ）は、図１１の（Ａ）の動特性モデルＭｓと同じ動特性モデルＭｓを用いて、「参照軌道の時定数Ｔｒ＝３＊ｄｔｒ＝０．０１［ｓ］」としたＭＰＣを実行した場合の制御結果を示している。図１３の（Ｂ）において、制御対象２０の総イナーシャは基準イナーシャの１０倍である。つまり、図１３の（Ｂ）は、「動特性モデル：動特性モデルＭｓ（＝基準イナーシャに対応する動特性モデル）」、「時定数Ｔｒ：０．０１［ｓ］」のＭＰＣを、「総イナーシャ：基準イナーシャの１０倍」の制御対象２０に実行した場合の制御結果を示している。
【０２５９】
図１４の（Ａ）は、図１３の（Ｂ）を拡大した図（具体的には、縦軸のレンジのみを変えて示す図）であり、図１３の（Ｂ）の制御結果と同じ制御結果を示している。すなわち、図１４の（Ａ）は、「動特性モデル：動特性モデルＭｓ（＝基準イナーシャに対応する動特性モデル）」、「時定数Ｔｒ：０．０１［ｓ］」のＭＰＣを、「総イナーシャ：基準イナーシャの１０倍」の制御対象２０に実行した場合の制御結果を示している。
【０２６０】
図１３の（Ｂ）および図１４の（Ａ）に示すように、「総イナーシャ：基準イナーシャの１０倍」の制御対象２０に対する、動特性モデルＭｓを用いたＭＰＣは、「時定数Ｔｒ＝０．０１［ｓ］」とすると、図１３の（Ａ）に見られるトルクの振動はなくなる。時定数Ｔｒを、図１３の（Ａ）の「０．００５［ｓ］」に比べて大きくし、「０．０１［ｓ］」にすると、「総イナーシャ：基準イナーシャの１０倍」の制御対象２０に対する動特性モデルＭｓを用いたＭＰＣは、図１３の（Ａ）に比べて安定した制御となっている。
【０２６１】
図１３の（Ｂ）および図１４の（Ａ）において、移動開始後の加速区間が終わり、定速度区間に移った直後に、位置偏差およびトルクに、振幅の小さな振動が見られる。位置偏差およびトルクの振動について、振幅が小さく、また、減衰が速いため、判定部１６０は、「制御が安定している」と判定してもよい。
【０２６２】
また、図１３の（Ｂ）および図１４の（Ａ）において、位置偏差に細かな振動が残っているので、判定部１６０は、「制御が安定していない」と判定してもよい。ただし、図１３の（Ｂ）および図１４の（Ａ）において、図１３の（Ａ）に見られた位置偏差の細かな振動もほぼ無くなっているため、「制御が安定している」と判定してもよい。
【０２６３】
コントローラ１０は、「時定数Ｔｒ：０．０１［ｓ］」とするＭＰＣが実行された制御対象２０の状態を示す値（例えば、図１４の（Ａ））をユーザに提示し、ユーザから、「０．０１［ｓ］」を時定数Ｔｒとして選択してもよいか否かの判定を受け付けてもよい。
【０２６４】
判定部１６０が「制御が安定していない」と判定する場合、コントローラ１０の決定部１７０は、時定数Ｔｒを、図１３の（Ｂ）の「０．０１［ｓ］」に比べて大きくし、例えば、「０．０２［ｓ］」にする。
【０２６５】
図１４の（Ｂ）は、図１１の（Ａ）の動特性モデルＭｓと同じ動特性モデルＭｓを用いて、「参照軌道の時定数Ｔｒ＝Ｔｒｓ＋７＊ｄｔｒ＝０．０２［ｓ］」としたＭＰＣを実行した場合の制御結果を示している。図１４の（Ｂ）において、制御対象２０の総イナーシャは基準イナーシャの１０倍である。つまり、図１４の（Ｂ）は、「動特性モデル：動特性モデルＭｓ（＝基準イナーシャに対応する動特性モデル）」、「時定数Ｔｒ：０．０２［ｓ］」のＭＰＣを、「総イナーシャ：基準イナーシャの１０倍」の制御対象２０に実行した場合の制御結果を示している。
【０２６６】
§４．変形例
これまでに説明してきた例では、モデル算出部１４０が、「制御対象２０（または３０）への操作量」および「その操作量に対応する、制御対象２０（または３０）の制御量（フィードバック値）」等から、動特性モデルＭｓを作成する例を説明してきた。
【０２６７】
しかしながら、コントローラ１０および５０の各々にとってモデル算出部１４０を備えることは必須ではなく、コントローラ１０および５０の各々は、動特性モデルＭｓを、ユーザ等の外部から取得してもよい。
【０２６８】
また、これまでに説明してきた例では、コントローラ１０および５０の各々が、制御対象２０（または３０）への操作量を、指令速度（図２の（Ａ））または指令トルク（図２の（Ｂ））として出力する例を説明してきた。
【０２６９】
しかしながら、コントローラ１０および５０の各々は、制御対象２０（または３０）に指令位置を出力して、制御対象２０（または３０）に対するＭＰＣを実行してもよい。
【０２７０】
コントローラ１０および５０の各々は、「参照軌道の時定数Ｔｒ」の候補としての「Ｔｒｘ、Ｔｒｘ１、Ｔｒｘ２、Ｔｒｘ３、・・・」の各々を「参照軌道の時定数」とするＭＰＣが実行された制御対象２０（または３０）の各々の状態を示す値をユーザに提示してもよい。すなわち、コントローラ１０および５０の各々は、図１１から図１４の各々に示すような、「参照軌道の時定数Ｔｒ」の複数の候補の各々を「参照軌道の時定数」とするＭＰＣが実行された制御対象２０（または３０）の各々の状態を示す値を、ユーザに提示してもよい。そして、コントローラ１０は、「Ｔｒｘ、Ｔｒｘ１、Ｔｒｘ２、Ｔｒｘ３、・・・」の中からユーザによって選択された値を、「参照軌道の時定数Ｔｒ」に決定してもよい。
【０２７１】
〔ソフトウェアによる実現例〕
コントローラ１０および５０の各々の制御ブロック（特に、指令値生成部１１０、ＭＰＣ部１２０、事前調整部１３０、事前調整部５３０、および、切替部１９０）は、集積回路（ＩＣチップ）等に形成された論理回路（ハードウェア）によって実現してもよいし、ＣＰＵ（CenＴｒal Processing Unit）を用いてソフトウェアによって実現してもよい。
【０２７２】
後者の場合、コントローラ１０および５０の各々は、各機能を実現するソフトウェアであるプログラムの命令を実行するＣＰＵ、上記プログラムおよび各種データがコンピュータ（またはＣＰＵ）で読み取り可能に記録されたＲＯＭ（Read Only Memory）または記憶装置（これらを「記録媒体」と称する）、上記プログラムを展開するＲＡＭ（Random Access Memory）等を備えている。そして、コンピュータ（またはＣＰＵ）が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路等を用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体（通信ネットワークや放送波等）を介して上記コンピュータに供給されてもよい。なお、本発明は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【０２７３】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【０２７４】
１０  コントローラ（モデル予測制御装置）
２０  制御対象
３０  制御対象
５０  コントローラ（モデル予測制御装置）
１２０  ＭＰＣ部（実行部）
１５０  設定部
１６０  判定部
１７０  決定部
１９０  切替部
Ｍｓ  動特性モデル（第１のモデル）
Ｌｍａｘ  最大負荷
Ｌｍｉｎ  最小負荷
Ｌｓ  所定の負荷
Ｓ１３０  設定ステップ
Ｓ１９０  決定ステップ
Ｓ２００  実行ステップ
Ｓ６２０  設定ステップ
Ｓ６４０  決定ステップ
Ｓ６５０  実行ステップ
Ｔｒｓ  基準値（第１の時定数）
Ｔｒ  時定数（第２の時定数）
【図１】
2020027482.tif 000008
【図２】
2020027482.tif 000009
【図３】
2020027482.tif 000010
【図４】
2020027482.tif 000011
【図５】
2020027482.tif 000012
【図６】
2020027482.tif 000013
【図７】
2020027482.tif 000014
【図８】
2020027482.tif 000015
【図９】
2020027482.tif 000016
【図１０】
2020027482.tif 000017
【図１１】
2020027482.tif 000018
【図１２】
2020027482.tif 000019
【図１３】
2020027482.tif 000020
【図１４】
2020027482.tif 000021