(57)【要約】【課題】モーション制御において定型の外乱による制御量への影響を補償する処理を単純化する。【解決手段】モデル予測制御装置であるコントローラ（１０）は、定型の外乱が印加されたときの、或る動作周期における制御量の実測値と、前記或る動作周期における制御量の予測値との誤差であるモデル予測誤差を算出し、算出した前記モデル予測誤差を用いて、前記或る動作周期より後の動作周期における予測値を補正する。【選択図】図１
2018041150.tif 000002
【特許請求の範囲】
【請求項１】
モーション制御の対象である制御対象のモデルを用いて、指令値に対応する前記制御対象の制御量を予測するモデル予測制御装置であって、
連続する複数の動作周期の間で大きさおよび印加のタイミングが同一である外乱が印加されたときの、或る動作周期における制御量の実測値と、前記或る動作周期における前記モデルを用いた制御量の予測値との誤差であるモデル予測誤差を算出する誤差算出部と、
前記誤差算出部により算出された前記或る動作周期における前記モデル予測誤差を用いて、前記或る動作周期より後の動作周期における前記予測値を補正する予測値補正部と、を備えることを特徴とするモデル予測制御装置。
【請求項２】
前記予測値補正部は、前記誤差算出部により算出された所定の回の動作周期における前記モデル予測誤差を用いて、前記所定の回より後の回の動作周期における前記予測値を補正することを特徴とする請求項１に記載のモデル予測制御装置。
【請求項３】
前記予測値補正部は、前記誤差算出部により算出された或る動作周期における前記モデル予測誤差を用いて、前記或る動作周期の次の動作周期における前記予測値を補正することを特徴とする請求項１に記載のモデル予測制御装置。
【請求項４】
前記指令値に、前記予測値補正部により補正された前記予測値が追従するのに必要なトルクを算出するトルク算出部と、
前記トルク算出部により算出されたトルクを、前記制御対象にモーション制御を行う制御系に、前記制御対象のトルク制御に係る指令値として出力するトルク指令部と、をさらに備えることを特徴とする請求項１から３のいずれか１項に記載のモデル予測制御装置。
【請求項５】
前記指令値に、前記予測値補正部により補正された前記予測値が追従するよう、前記指令値を補正する指令値補正部と、
前記指令値補正部により補正された前記指令値である補正後指令値を、前記制御対象にモーション制御を行う制御系に、前記制御対象の位置制御に係る指令値として出力する位置指令部と、をさらに備えることを特徴とする請求項１から３のいずれか１項に記載のモデル予測制御装置。
【請求項６】
前記予測値補正部が用いる前記モデル予測誤差について、どの動作周期における前記モデル予測誤差にするかを選択するユーザ操作を受け付ける受付部をさらに備えることを特徴とする請求項１から５のいずれか１項に記載のモデル予測制御装置。
【請求項７】
前記モデル予測誤差の経時変化をユーザに表示する表示制御部をさらに備えることを特徴とする請求項１から６のいずれか１項に記載のモデル予測制御装置。
【請求項８】
モーション制御の対象である制御対象のモデルを用いて、指令値に対応する前記制御対象の制御量を予測するモデル予測制御装置の制御方法であって、
連続する複数の動作周期の間で大きさおよび印加のタイミングが同一である外乱が印加されたときの、或る動作周期における制御量の実測値と、前記或る動作周期における前記モデルを用いた制御量の予測値との誤差であるモデル予測誤差を算出する誤差算出ステップと、
前記誤差算出ステップにて算出した前記或る動作周期における前記モデル予測誤差を用いて、前記或る動作周期より後の動作周期における前記予測値を補正する予測値補正ステップと、を含むことを特徴とする制御方法。
【請求項９】
請求項１から７のいずれか１項に記載のモデル予測制御装置としてコンピュータを機能させるための情報処理プログラムであって、前記各部としてコンピュータを機能させるための情報処理プログラム。
【請求項１０】
請求項９に記載の情報処理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モーション制御の対象である制御対象のモデルを用いて制御量を予測するモデル予測制御装置等に関する。
【背景技術】
【０００２】
従来、例えば１サイクル（動作周期）内のツールとワークとの接触力の変化など、モーション制御の実行において定型的に発生する外乱（定型の外乱）が知られており、この定型の外乱による制御量への影響を抑制する試みが為されている。
【０００３】
例えば、下掲の特許文献１には、制御用調節部から出力される操作量に基づいてプロセスを制御するプロセス制御装置であって、プロセスを実施したときに制御用調節部から出力される操作量と、プロセスを実施したときに得られる制御量を目標値として求めた操作量と、の差に基づいてプロセスに加わった外乱パターンを推定するプロセス制御装置が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−３４８４８１号公報（２００４年１２月９日公開）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述のような従来技術は、定型の外乱の大きさおよび印加（発生）のタイミングを操作量のレベルで推定する演算を、制御のための演算から独立して行う必要があるため、演算負荷が大きくなるという問題がある。
【０００６】
本発明は、前記の問題点に鑑みてなされたものであり、その目的は、モーション制御において、大きさおよび印加のタイミングが同一である外乱による制御量への影響を補償する処理を単純化した制御装置を実現することにある。
【課題を解決するための手段】
【０００７】
上記の課題を解決するために、本発明の一態様に係るモデル予測制御装置は、モーション制御の対象である制御対象のモデルを用いて、指令値に対応する前記制御対象の制御量を予測するモデル予測制御装置であって、連続する複数の動作周期の間で大きさおよび印加のタイミングが同一である外乱が印加されたときの、或る動作周期における制御量の実測値と、前記或る動作周期における前記モデルを用いた制御量の予測値との誤差であるモデル予測誤差を算出する誤差算出部と、前記誤差算出部により算出された前記或る動作周期における前記モデル予測誤差を用いて、前記或る動作周期より後の動作周期における前記予測値を補正する予測値補正部と、を備えることを特徴としている。
【０００８】
前記の構成によれば、前記予測値補正部は、前記或る動作周期より後の動作周期における前記予測値を、前記或る動作周期における前記モデル予測誤差を用いて補正する。つまり、前記モデル予測制御装置は、前記外乱に相当する操作量を推定せずに前記外乱の補償を行う。
【０００９】
したがって、前記モデル予測制御装置は、前記外乱による制御量の変化を操作量に変換するための演算処理を実行せずに、前記外乱を補償でき、前記外乱による制御量の変化を補償する処理を単純化することができるという効果を奏する。
【００１０】
好ましくは、前記モデル予測制御装置において、前記予測値補正部は、前記誤差算出部により算出された所定の回の動作周期における前記モデル予測誤差を用いて、前記所定の回より後の回の動作周期における前記予測値を補正する。
【００１１】
前記の構成によれば、前記予測値補正部は、前記所定の回の動作周期における前記モデル予測誤差を用いて、前記所定の回より後の回の動作周期における前記予測値を補正する。
【００１２】
ここで、例えばｎを自然数としてｎ回目の動作周期における前記モデル予測誤差を用いてｎ＋１回目以降の回の動作周期における前記予測値を補正することが予め分かっていれば、ユーザは、ｎ回目の動作周期におけるモーション制御について、再現性が高い周囲環境を予め整備しておくことができる。つまり、前記モデル予測制御装置は、ｎ＋１回目以降の回の動作周期における前記予測値を補正するのに好適な前記モデル予測誤差を、ｎ回目の動作周期において取得することができる。
【００１３】
したがって、前記モデル予測制御装置は、偶発的に発生する前記誤差を含まない、精度の高い前記所定の回の動作周期における前記モデル予測誤差を用いて、前記所定の回より後の回の動作周期における前記予測値を補正することができるという効果を奏する。
【００１４】
したがって、前記モデル予測制御装置は、例えば、本稼動前の調整段階の最後に、再現性が高い周囲環境における前記モデル予測誤差を記憶しておき、記憶した前記モデル予測誤差を用いて、本稼動時の前記予測値を補正することができるという効果を奏する。
【００１５】
好ましくは、前記モデル予測制御装置において、前記予測値補正部は、前記誤差算出部により算出された或る動作周期における前記モデル予測誤差を用いて、前記或る動作周期の次の動作周期における前記予測値を補正することを特徴とする請求項１に記載のモデル予測制御装置。
（作用効果）
前記の構成によれば、前記予測値補正部は、前記或る動作周期における前記モデル予測誤差を用いて、前記或る動作周期の次の動作周期における前記予測値を補正する。
【００１６】
ここで、前記誤差算出部により前記或る動作周期において前記モデル予測誤差が算出された場合、同様の前記モデル予測誤差が、前記或る動作周期の次の動作周期においても算出される可能性が高いと考えることができる。
【００１７】
したがって、前記モデル予測制御装置は、前記或る動作周期において算出された前記モデル予測誤差と同様の前記モデル予測誤差が算出される可能性の高い、前記或る動作周期の次の動作周期における前記予測値を、前記或る動作周期における前記モデル予測誤差を用いて補正することができるという効果を奏する。
【００１８】
好ましくは、前記モデル予測制御装置は、前記指令値に、前記予測値補正部により補正された前記予測値が追従するのに必要なトルクを算出するトルク算出部と、前記トルク算出部により算出されたトルクを、前記制御対象にモーション制御を行う制御系に、前記制御対象のトルク制御に係る指令値として出力するトルク指令部と、をさらに備える。
【００１９】
前記の構成によれば、前記トルク算出部は、前記予測値補正部により補正された制御量の予測値が前記指令値に追従するのに必要なトルクを算出し、前記トルク指令部は、前記トルク算出部により算出されたトルクを、前記制御系に、前記制御対象のトルク制御に係る指令値として出力する。
【００２０】
したがって、前記モデル予測制御装置は、前記外乱による制御量の変化を操作量に変換するための演算処理を実行せずに、前記指令値に前記制御対象の制御量が追従するためのトルクを、前記制御系に出力することができるという効果を奏する。
【００２１】
好ましくは、前記モデル予測制御装置は、前記指令値に、前記予測値補正部により補正された前記予測値が追従するよう、前記指令値を補正する指令値補正部と、前記指令値補正部により補正された前記指令値である補正後指令値を、前記制御対象にモーション制御を行う制御系に、前記制御対象の位置制御に係る指令値として出力する位置指令部と、をさらに備える。
【００２２】
前記の構成によれば、前記指令値補正部は、前記予測値補正部により補正された制御量の予測値が前記指令値に追従するよう前記指令値を補正し、前記位置指令部は、前記指令値補正部により補正された前記指令値である補正後指令値を、前記制御対象にモーション制御を行う制御系に、前記制御対象の位置制御に係る指令値として出力する。
【００２３】
したがって、前記モデル予測制御装置は、前記外乱による制御量の変化を操作量に変換するための演算処理を実行せずに、前記指令値に前記制御対象の制御量が追従するように補正された前記指令値を、前記制御系に出力することができるという効果を奏する。
【００２４】
好ましくは、前記モデル予測制御装置は、前記予測値補正部が用いる前記モデル予測誤差について、どの動作周期における前記モデル予測誤差にするかを選択するユーザ操作を受け付ける受付部をさらに備える。
【００２５】
前記の構成によれば、前記受付部は、前記予測値補正部が用いる前記モデル予測誤差について、どの動作周期における前記モデル予測誤差にするかを選択するユーザ操作を受け付ける。
【００２６】
したがって、前記モデル予測制御装置は、前記受付部によって受け付けられたユーザ操作に対応する動作周期における前記モデル予測誤差を用いて、前記ユーザ操作に対応する動作周期より後の動作周期における前記予測値を補正することができるという効果を奏する。
【００２７】
ここで、前記ユーザ操作は、１回目の動作周期を指定するものであってもよい。また、前記ユーザ操作は、２回目以降の動作周期における補正に際して、直前の動作周期における前記モデル予測誤差を用いることを指定するものであってもよい。さらに、前記モデル予測制御装置は、前記ユーザ操作において指定された任意の回（例えば、３回目）の動作周期における前記モデル予測誤差を用いて、前記指定された任意の回より後の回（例えば、４回目、５回目、・・・、ｎ回目）の動作周期における前記予測値を補正してもよい。
【００２８】
好ましくは、前記モデル予測制御装置は、前記モデル予測誤差の経時変化をユーザに表示する表示制御部をさらに備える。
【００２９】
前記の構成によれば、前記表示制御部は、前記モデル予測誤差の経時変化をユーザに表示する。
【００３０】
したがって、前記モデル予測制御装置は、前記モデル予測誤差の経時変化をユーザに表示するので、ユーザが、前記モデル予測制御装置によって表示された前記モデル予測誤差の経時変化（いわゆる、トレンドグラフ）に現れる波形から、外乱の様子を近似的に把握することができるという効果を奏する。
【００３１】
上記の課題を解決するために、本発明の一態様に係る制御方法は、モーション制御の対象である制御対象のモデルを用いて、指令値に対応する前記制御対象の制御量を予測するモデル予測制御装置の制御方法であって、連続する複数の動作周期の間で大きさおよび印加のタイミングが同一である外乱が印加されたときの、或る動作周期における制御量の実測値と、前記或る動作周期における前記モデルを用いた制御量の予測値との誤差であるモデル予測誤差を算出する誤差算出ステップと、前記誤差算出ステップにて算出した前記或る動作周期における前記モデル予測誤差を用いて、前記或る動作周期より後の動作周期における前記予測値を補正する予測値補正ステップと、を含むことを特徴としている。
【００３２】
前記の方法によれば、前記予測値補正ステップは、前記或る動作周期より後の動作周期における前記予測値を、前記或る動作周期における前記モデル予測誤差を用いて補正する。つまり、前記モデル予測制御装置の制御方法は、前記外乱に相当する操作量を推定せずに前記外乱の補償を行う。
【００３３】
したがって、前記モデル予測制御装置の制御方法は、前記外乱による制御量の変化を操作量に変換するための演算処理を実行せずに、前記外乱を補償でき、前記外乱による制御量の変化を補償する処理を単純化することができるという効果を奏する。
【発明の効果】
【００３４】
本発明は、モーション制御において、大きさおよび印加のタイミングが同一である外乱による制御量への影響を補償する処理を単純化することができるという効果を奏する。
【図面の簡単な説明】
【００３５】
【図１】本発明の実施形態１に係るコントローラの要部構成を示すブロック図である。
【図２】図１のコントローラを含む制御システムの概要を示す図である。
【図３】図１のコントローラが実行するモデル予測制御の概要を説明するための図である。
【図４】図１のコントローラの実行する外乱補償処理の一例を示すフロー図である。
【図５】図１のコントローラが予測値を補正する方法を説明するための図である。
【図６】図１のコントローラが外乱補償処理を実行した場合の効果を説明するための図である。
【図７】図１のコントローラの実行する外乱補償処理の、図４に示すのとは別の例を示すフロー図である。
【図８】印加される外乱が徐々に変化する場合に、図１のコントローラが図７に示す外乱補償処理を実行しなかった場合の位置偏差等の軌跡を示す図である。
【図９】印加される外乱が徐々に変化する場合に、図１のコントローラが図７に示す外乱補償処理を実行した場合の位置偏差等の軌跡を示す図である。
【図１０】図１のコントローラが表示する予測誤差のトレンドグラフの一例を示す図である。
【図１１】本発明の実施形態２に係るコントローラの要部構成を示すブロック図である。
【図１２】図１１のコントローラを含む制御システムの概要を示す図である。
【発明を実施するための形態】
【００３６】
〔実施形態１〕
以下、本発明の実施形態１について、図１から図１０に基づいて詳細に説明する。図中同一または相当部分には同一符号を付してその説明は繰返さない。本発明の一態様に係るコントローラ１０（モデル予測制御装置）についての理解を容易にするため、先ず、コントローラ１０を含む制御システム１の概要を、図２を用いて説明する。
【００３７】
（制御システムの概要）
図２は、コントローラ１０を含む制御システム１の概要を示す図である。制御システム１は、１サイクル内（１動作周期内）において、発生（印加）のタイミングおよび大きさが同一である外乱である「定型の外乱」による制御性能への影響を抑制しようとするものである。特に、コントローラ１０は、モーション制御において、定型の外乱による制御量への影響を補償する処理（外乱補償処理）を単純化しようとするものである。
【００３８】
コントローラ１０は、例えばモデル予測制御（ＭＰＣ、Model Predictive Control）など予測機構を有する制御方式において、１サイクル分の予測誤差（モデル予測誤差）を記憶しておき、記憶した１サイクル分の予測誤差を利用して、次サイクル以降の予測を補正するものである。コントローラ１０は、モーション制御に適用され、例えば、加工機械において、１サイクル内のツール（工具）とワークとの接触力の変化による位置精度への影響を抑制する。コントローラ１０は、定型の外乱がある場合にも制御性能を維持することができるので、例えば製造物の品質を維持することができる。
【００３９】
なお、コントローラ１０が制御性能への影響を抑制することのできる「定型の外乱」は、１サイクル内において印加のタイミングおよび大きさが同一である外乱だけでなく、１サイクル内において印加のタイミングおよび大きさが略同一である外乱も含む。
【００４０】
制御システム１は、（１）例えばプログラマブルコントローラ（ＰＬＣ、Programmable Logic Controller）であるコントローラ１０と、（２）上位コントローラであるコントローラ１０により制御される下位コントローラとしてのサーボドライバ２０と、（３）サーボドライバ２０によって制御される制御対象３０（例えば、モータおよびメカ）と、を含んでいる。制御システム１において、コントローラ１０が、位置／速度制御を実行し、予測制御によりサーボドライバ２０へのトルク指令値を出力する。
【００４１】
コントローラ１０は、モデル予測制御機構を備えるコントローラであって、サーボドライバ２０に対し、操作量としてのトルク指令値を出力する。コントローラ１０は、例えば、ユーザ等の外部から目標軌道データ（目標軌道）を受け付け（軌道生成）、受け付けた目標軌道データから制御周期ごとに指令値（指令位置）を生成する。コントローラ１０は、また、制御対象３０から、「制御対象３０の出力である制御量（制御量の実測値）」を、フィードバック情報として取得する。すなわち、コントローラ１０は、フィードバック速度およびフィードバック位置（フィードバック速度およびフィードバック位置の少なくとも一方）として、制御対象３０が出力した速度および位置（速度および位置の少なくとも一方）を取得する。
【００４２】
コントローラ１０は、制御対象３０（およびサーボドライバ２０）のモデルを内部モデルとして有し、この内部モデルを用いて、生成した指令位置と、「制御対象３０の出力である制御量」と、に基づいて、サーボドライバ２０に対し、操作量としてのトルク指令値を出力する。ここで、コントローラ１０は、制御対象（つまり、制御対象３０およびサーボドライバ２０）のモデルを用いて制御量を予測するとともに、予測誤差を推定して外乱補償を行う。すなわち、コントローラ１０は、過去に記憶した（つまり、予め格納しておいた）基準予測誤差を利用して、現在時刻の予測誤差を「推定」する。ここで「推定」とは、サイクル内の時刻を合わせてその時刻の予測誤差を読み取ることと捉えることができる。
【００４３】
コントローラ１０は、外乱パターンを制御量の次元のままで記憶して利用するため、外乱を推定するための演算を、制御量の算出のための演算とは別途用意する必要がない（ただし、より正確には、コントローラ１０が記憶するのは、「外乱パターン」ではなく、外乱の情報を含む予測誤差パターンである）。したがって、コントローラ１０は、制御量の算出のための演算に加えて、外乱を推定するための演算を別途行う装置に比べて演算負荷が小さく、高速制御周期が必要となるモーション制御においては、重要なメリットとなる。
【００４４】
サーボドライバ２０は、コントローラ１０からのトルク指令値に従って、制御対象３０についてトルク制御を実行する。
【００４５】
（コントローラの概要）
これまで図２を用いて概要を説明してきた制御システム１に含まれるコントローラ１０について、次に、その構成および処理の内容等を、図１等を用いて説明していく。図１を参照して詳細を説明する前に、コントローラ１０についての理解を容易にするため、その概要について以下のように整理しておく。
【００４６】
コントローラ１０は、モーション制御の対象である制御対象３０（およびサーボドライバ２０）のモデルを用いて、指令値に対応する制御対象３０の制御量を予測するモデル予測制御装置であって、連続する複数の動作周期の間で大きさおよび印加のタイミングが同一である（略同一である）外乱が印加されたときの、或る動作周期における制御量の実測値と、前記或る動作周期における前記モデルを用いた制御量の予測値との誤差であるモデル予測誤差を算出する誤差算出部１０４と、誤差算出部１０４により算出された前記或る動作周期における前記モデル予測誤差を用いて、前記或る動作周期より後の動作周期における前記予測値を補正する予測値補正部１０６と、を備えている。
【００４７】
前記の構成によれば、予測値補正部１０６は、前記或る動作周期より後の動作周期における前記予測値を、前記或る動作周期における前記モデル予測誤差を用いて補正する。つまり、コントローラ１０は、前記外乱に相当する操作量を推定せずに前記外乱の補償を行う。
【００４８】
したがって、コントローラ１０は、前記外乱による制御量の変化を操作量に変換するための演算処理を実行せずに、前記外乱を補償でき、前記外乱による制御量の変化を補償する処理を単純化することができるという効果を奏する。
【００４９】
コントローラ１０は、前記指令値に、予測値補正部１０６により補正された前記予測値が追従するのに必要なトルクを算出するトルク算出部１０２と、トルク算出部１０２により算出されたトルクを、サーボドライバ２０（制御対象３０にモーション制御を行う制御系）に、制御対象３０のトルク制御に係る指令値として出力するトルク指令部１０３と、をさらに備えている。
【００５０】
前記の構成によれば、トルク算出部１０２は、予測値補正部１０６により補正された制御量の予測値が前記指令値に追従するのに必要なトルクを算出し、トルク指令部１０３は、トルク算出部１０２により算出されたトルクを、サーボドライバ２０に、制御対象３０のトルク制御に係る指令値として出力する。
【００５１】
したがって、コントローラ１０は、前記外乱による制御量の変化を操作量に変換するための演算処理を実行せずに、前記指令値に制御対象３０の制御量が追従するためのトルクを、サーボドライバ２０に出力することができるという効果を奏する。
【００５２】
（コントローラの詳細）
コントローラ１０は、「或るサイクル」において発生した外乱を、当該「或るサイクル」の全期間にわたって計測、記憶し、記憶した前記「或るサイクル」の全期間にわたって計測された外乱を用いて、前記「或るサイクル」より後のサイクルの予測値を補正するものである。以上に概要を説明したコントローラ１０について、次に、その構成の詳細を、図１を用いて説明する。
【００５３】
図１は、本発明の実施形態１に係るコントローラ１０の要部構成を示すブロック図である。図１に示すコントローラ１０は、指令値生成部１０１と、トルク算出部１０２と、トルク指令部１０３と、誤差算出部１０４と、記憶部１０５と、予測値補正部１０６と、受付部１０７と、表示制御部１０８と、を備える構成である。なお、記載の簡潔性を担保するため、本実施の形態に直接関係のない構成は、説明およびブロック図から省略している。ただし、実施の実情に則して、コントローラ１０は、当該省略された構成を備えてもよい。上述の指令値生成部１０１、トルク算出部１０２、トルク指令部１０３、誤差算出部１０４、予測値補正部１０６、受付部１０７、および表示制御部１０８などの各機能ブロックは、例えば、ＣＰＵ（central processing unit）などが、ＲＯＭ（read only memory）、ＮＶＲＡＭ（non-Volatile random access memory）等で実現された記憶装置（記憶部１０５）に記憶されているプログラムを不図示のＲＡＭ（random access memory）等に読み出して実行することで実現できる。以下、コントローラ１０における各機能ブロックについて説明する。
【００５４】
指令値生成部１０１は、外部（例えば、ユーザ）から目標軌道データ（目標軌道）を受け付け（軌道生成）、受け付けた目標軌道データから制御周期ごとに指令値（指令位置）を生成する。指令値生成部１０１は、生成した指令値（指令位置）を、トルク算出部１０２に送信する。
【００５５】
トルク算出部１０２は、モデル予測制御（ＭＰＣ、Model Predictive Control）を実行し、具体的には、制御対象（つまり、制御対象３０およびサーボドライバ２０）の内部モデルを用いて未来の状態を予測し、制御対象３０の未来の出力（制御量の予測値）ができる限り目標値（指令値、つまり指令位置）に近づくように操作量を決定する（推定する）。つまり、トルク算出部１０２は、前記内部モデルに基づいて未来の出力（制御量）の変化を予測し、出力と目標値とができるだけ近づくように入力（操作量）を決定するものである。
【００５６】
トルク算出部１０２は、制御対象（つまり、制御対象３０およびサーボドライバ２０）の挙動をモデル化した前記内部モデルを含み、前記内部モデルを用いて、各動作周期において制御対象３０が出力する制御量を予測する。すなわち、トルク算出部１０２は、前記内部モデルを用いて、各動作周期における予測値（制御量の予測値）を算出する。トルク算出部１０２は、算出した予測値（予測制御量）を誤差算出部１０４に通知する。
【００５７】
トルク算出部１０２は、また、予測値補正部１０６から取得する予測補正値（補正後予測値）が、つまり、予測値補正部１０６により補正された予測値（制御量の予測値）が、指令値（指令位置）に追従するのに必要なトルクを、前記内部モデルを用いて算出する。トルク算出部１０２は、算出したトルクを指令トルク（操作量）としてトルク指令部１０３に通知する。
【００５８】
トルク指令部１０３は、トルク算出部１０２から通知された指令トルク（操作量）を、サーボドライバ２０（制御対象３０にモーション制御を行う制御系）に、制御対象３０のトルク制御に係る指令値として出力する。
【００５９】
誤差算出部１０４は、連続する複数の動作周期の間で大きさおよび印加のタイミングが同一である（略同一である）外乱が印加されたときの、或る動作周期における制御対象３０の出力（制御量の実測値）と、前記或る動作周期における制御量の予測値（予測制御量）との誤差であるモデル予測誤差を算出する。すなわち、誤差算出部１０４は、トルク算出部１０２から通知された「或る動作周期における制御量の予測値（予測制御量）」と、「前記或る動作周期における制御対象３０の出力（制御量の実測値）」との誤差（前記或る動作周期におけるモデル予測誤差）を算出する。
【００６０】
ここで、誤差算出部１０４は、受付部１０７から、受付部１０７が受け付けたユーザ操作において指定されている（選択されている）動作周期を、つまり、ユーザ指定の動作周期を、取得してもよい。そして、誤差算出部１０４は、ユーザ指定の動作周期における制御対象３０の出力（制御量の実測値）と、ユーザ指定の動作周期における制御量の予測値（予測制御量）と、から、ユーザ指定の動作周期におけるモデル予測誤差を算出してもよい。
【００６１】
誤差算出部１０４は、算出した「前記或る動作周期におけるモデル予測誤差」を記憶部１０５に誤差データ１５１として格納する。誤差算出部１０４は、また、算出した「前記或る動作周期におけるモデル予測誤差」を、表示制御部１０８に通知する。
【００６２】
記憶部１０５は、コントローラ１０が使用する各種データを格納する記憶装置である。なお、記憶部１０５は、コントローラ１０が実行する（１）制御プログラム、（２）ＯＳプログラム、（３）コントローラ１０が有する各種機能を実行するためのアプリケーションプログラム、および、（４）該アプリケーションプログラムを実行するときに読み出す各種データを非一時的に記憶してもよい。上記の（１）〜（４）のデータは、例えば、ＲＯＭ（read only memory）、フラッシュメモリ、ＥＰＲＯＭ（Erasable Programmable ROM）、ＥＥＰＲＯＭ（登録商標）（Electrically EPROM）、ＨＤＤ（Hard Disc Drive）等の不揮発性記憶装置に記憶される。
【００６３】
コントローラ１０は、図示しない一時記憶部を備えていてもよい。一時記憶部は、コントローラ１０が実行する各種処理の過程で、演算に使用するデータおよび演算結果等を一時的に記憶するいわゆるワーキングメモリであり、ＲＡＭ（Random Access Memory）などの揮発性記憶装置で構成される。
【００６４】
どのデータをどの記憶装置に記憶するのかについては、コントローラ１０の使用目的、利便性、コスト、または、物理的な制約などから適宜決定される。記憶部１０５はさらに誤差データ１５１を格納している。
【００６５】
誤差データ１５１は、誤差算出部１０４が算出した前記「或る動作周期におけるモデル予測誤差」の情報であり、誤差算出部１０４によって記憶部１０５に格納される。
【００６６】
予測値補正部１０６は、記憶部１０５に格納されている誤差データ１５１を参照して取得した前記「或る動作周期におけるモデル予測誤差」を用いて、トルク算出部１０２が算出した前記「或る動作周期」より後の動作周期における予測値（制御量の予測値、つまり予測制御量）を、補正する。
【００６７】
予測値補正部１０６は、受付部１０７から、受付部１０７が受け付けたユーザ操作において指定されている（選択されている）動作周期を、つまり、ユーザ指定の動作周期を、取得する。そして、予測値補正部１０６は、誤差データ１５１を参照して、ユーザ指定の動作周期におけるモデル予測誤差を取得する。予測値補正部１０６は、前記「ユーザ指定の動作周期におけるモデル予測誤差」を用いて、トルク算出部１０２が算出した「ユーザ指定の動作周期」より後の動作周期における予測値（制御量の予測値、つまり予測制御量）を、補正する。
【００６８】
そして、予測値補正部１０６は、補正した前記「或る動作周期」より後の動作周期における予測値（制御量の予測値、つまり予測制御量）を、つまり、前記「或る動作周期」より後の動作周期における予測補正値（補正後予測値）を、トルク算出部１０２に通知する。
【００６９】
つまり、予測値補正部１０６は、「或る動作周期」におけるモデル予測誤差を用いて、前記「或る動作周期」より後の動作周期における予測値（制御量の予測値、つまり予測制御量）を補正する。予測値補正部１０６は、「或る動作周期」におけるモデル予測誤差から、前記「或る動作周期」より後の動作周期におけるモデル予測誤差を推定すると捉えることもできる。
【００７０】
受付部１０７は、予測値補正部１０６が用いる前記モデル予測誤差について、どの動作周期における前記モデル予測誤差にするかを選択するユーザ操作を受け付ける。受付部１０７は、ユーザ操作において指定されている（選択されている）動作周期を、つまり、ユーザ指定の動作周期を、予測値補正部１０６に通知する。
【００７１】
ここで、受付部１０７が受け付けるユーザ操作は、予測値補正部１０６に、例えば、「１回目」の動作周期におけるモデル予測誤差を用いて、「２回目以降」の動作周期における予測値（制御量の予測値、つまり予測制御量）を補正するよう指示するものであってもよい。また、前記ユーザ操作は、予測値補正部１０６に、２回目以降の動作周期における予測値の補正に際して、直前の動作周期におけるモデル予測誤差を用いることを指定するものであってもよい。さらに、コントローラ１０は、前記ユーザ操作において指定された任意の回（例えば、３回目）の動作周期における前記モデル予測誤差を用いて、前記指定された任意の回より後の回（例えば、４回目、５回目、・・・、ｎ回目）の動作周期における前記予測値を補正してもよい。
【００７２】
受付部１０７は、さらに、誤差算出部１０４が前記「或る動作周期」におけるモデル予測誤差を算出するのに際して利用する前記「或る動作周期」における、制御対象３０の出力（制御量の実測値）および制御量の予測値（予測制御量）について、どの動作周期にするかを選択するユーザ操作を受け付けてもよい。受付部１０７は、ユーザ操作において指定されている（選択されている）動作周期を、つまり、ユーザ指定の動作周期を、誤差算出部１０４に通知する。
【００７３】
表示制御部１０８は、前記モデル予測誤差の経時変化をユーザに表示する。表示制御部１０８は、例えば、誤差算出部１０４から、誤差算出部１０４が算出した前記「或る動作周期」におけるモデル予測誤差を取得して、取得したモデル予測誤差を利用して、前記モデル予測誤差の経時変化をユーザに表示してもよい。表示制御部１０８は、また、記憶部１０５に格納されている誤差データ１５１を参照して、前記モデル予測誤差の経時変化をユーザに表示してもよい。
【００７４】
（モデル予測制御について）
図３は、コントローラ１０が実行するモデル予測制御の概要を説明するための図である。モデル予測制御は、制御対象（制御システム１においては、制御対象３０（およびサーボドライバ２０））のモデルを使って、参照軌道上のターゲットポイントに制御量を一致させるための未来の操作量（制御システム１においては、サーボドライバ２０に与えるトルク指令値）を決定し（推定し）、この処理を毎周期繰り返すものである。なお、参照軌道は、コントローラ１０の内部において、仮想的に設定する軌道であり、制御システム１における目標軌道とは異なるものである。図３における目標値ＳＰが、制御システム１における目標軌道に対応する（ただし、図３において目標値ＳＰは一定値としている）。
【００７５】
コントローラ１０は、図３に示すように、現時刻ｎにおいて制御量ＰＶ（ｎ）を測定し、現時刻の制御量ＰＶ（ｎ）を始点として目標値ＳＰに徐々に近づく破線で示す参照軌道を計算する。ここでは、簡単のために、制御ホライズンＨｕは「１」とする。
【００７６】
コントローラ１０は、次に、内部モデル（制御対象３０（およびサーボドライバ２０）のモデル）を用いて、予測ホライズンＨ後の制御量ＰＶの予測値ＰＶ（ｎ＋Ｈ）が参照軌道に一致するように、現在の時刻ｎの操作量ＭＶ（ｎ）を決定する。
【００７７】
コントローラ１０は、得られた操作量ＭＶ（ｎ）を実際にサーボドライバ２０に加え、次のサンプリング時刻ｎ＋１まではその値を保持する。
【００７８】
時刻ｎ＋１において制御量ＰＶ（ｎ＋１）が測定されると、コントローラ１０は、改めて時刻ｔ＋１を現時刻とみなし、未来の予測値と参照軌道とが、予測ホライズンＨ後に一致するように操作量を決定し（推定し）、次のサンプリング時刻までその操作量をサーボドライバ２０に加える。以下、この手順を繰り返す。
【００７９】
次に、制御システム１におけるコントローラ１０が実行する予測制御について、詳細に説明する。
【００８０】
コントローラ１０は、上述のように内部モデルを用いて予測制御を行なうものであり、制御システム１において、内部モデルは、サンプリング時間で離散化した次式で表されるＮ次のＡＲＸモデルとしている。なお、制御対象（制御システム１においては、制御対象３０（およびサーボドライバ２０））のモデルは、ＡＲＸモデルに限らず、ステップ応答モデルやその他のモデルを用いてもよい。
【００８１】
【数１】
2018041150.tif 000003
【００８２】
ここで、
Ｙ(ｎ)：時刻ｎの内部モデル出力値
Ｕ(ｎ)：時刻ｎの操作量
ａ１〜ａＮ,ｂ１〜ｂＭ：内部モデルの係数
Ｎ,Ｍ：内部モデル次数
である。
【００８３】
このＡＲＸモデルの決定は、例えば、制御対象（制御システム１においては、制御対象３０（およびサーボドライバ２０））に対する入出力の時系列データ、すなわち、操作量ＭＶおよび制御量ＰＶの時系列データを予め計測し、最小二乗法等を用いて行われる。
【００８４】
制御システム１においては、図３の破線で示される参照軌道として、現時刻ｎでの偏差を、時定数Ｔｒで指数関数的に０に近づける軌道を用いている。
【００８５】
すなわち、予測ホライズンＨ後の参照軌道上の目標値Ｒ(ｎ＋Ｈ)は、次式で求めることができる。
R(n+H)＝SP(n+H)−λH＊{SP(n)−PV(n)}，
λ＝ｅｘｐ(−Tc／Tr)
ここで、
ＰＶ（ｎ）：時刻ｎの制御量
ＳＰ（ｎ），ＳＰ（ｎ＋Ｈ）：時刻ｎ,ｎ＋Ｈの目標値
Ｒ（ｎ＋Ｈ）：予測ホライズンＨ先の参照軌道上の目標値
Ｔｃ：サンプリング時間
である。
【００８６】
したがって、現時刻ｎにおける制御量ＰＶ（ｎ）からの増分、すなわち、予測ホライズンＨ後に、制御量ＰＶを、参照軌道上の目標値Ｒ（ｎ＋Ｈ）に一致させるために必要な制御量ＰＶの増分（偏差）ΔＰ（ｎ＋Ｈ）は、
【００８７】
【数２】
2018041150.tif 000004
【００８８】
となる。
【００８９】
次に、操作量ＭＶの計算について説明する。
【００９０】
線形の制御対象の場合、モデル出力の挙動は、次の２つの加算により求めることができる。
【００９１】
（１）自由応答
現在の状態を初期値として、未来の操作量ＭＶとして０が継続する場合の、予測ホライズンＨ後のモデル出力Ｙｆ（ｎ＋Ｈ）を、上述のＡＲＸモデルの式から繰り返し計算により求める。
【００９２】
【数３】
2018041150.tif 000005
【００９３】
（２）ステップ応答
初期状態を０として、ＭＶ＝１（１００％）のステップ応答における、時刻Ｈのモデル出力Ｓ（Ｈ）を求める。
【００９４】
【数４】
2018041150.tif 000006
【００９５】
ＭＶ＝１（１００％）ではなく、一般にＭＶ（ｎ）とすると、時刻Ｈのステップ応答出力はＭＶ（ｎ）＊Ｓ（Ｈ）となる。
ここで、
ＭＶ（ｎ）：時刻ｎの操作量
Ｙｆ（ｎ＋Ｈ）：予測ホライズンＨ後のモデルの自由応答出力
Ｓ（Ｈ）：時刻Ｈのモデルのステップ応答出力
である。
【００９６】
前項より、時刻ｎ以降、操作量ＭＶ（ｎ）を継続した場合、時刻ｎ＋Ｈ時点のモデル出力（制御量の予測値）は次式となる。
Ｙ（ｎ＋Ｈ）＝Ｙｆ（ｎ＋Ｈ）＋ＭＶ（ｎ）＊Ｓ（Ｈ）
ここで、Ｙ(ｎ)からの増分、すなわち、予測ホライズンＨ後に期待されるモデル出力の増分ΔＭ（ｎ＋Ｈ）は、
ΔＭ（ｎ＋Ｈ）＝Ｙｆ（ｎ＋Ｈ）＋ＭＶ（ｎ）＊Ｓ（Ｈ）−Ｙ（ｎ）
となる。
【００９７】
したがって、予測ホライズンＨ後に期待されるモデル出力の増分ΔＭ（ｎ＋Ｈ）が、制御量ＰＶを予測ホライズンＨ後に参照軌道上の目標値とするための上述の制御量ＰＶの増分ΔＰ（ｎ＋Ｈ）と等しくなるように操作量ＭＶを求めればよい。すなわち、
ΔＭ（ｎ＋Ｈ）＝ΔＰ（ｎ＋Ｈ）
となる操作量ＭＶを求めればよい。
【００９８】
ここで、予測補正量ＣＨ（ｎ）を考慮すると、
ΔＭ（ｎ＋Ｈ）＋ＣＨ（ｎ）＝ΔＰ（ｎ＋Ｈ）
より、
【００９９】
【数５】
2018041150.tif 000007
【０１００】
ＭＶ（ｎ）について解くと、
【０１０１】
【数６】
2018041150.tif 000008
【０１０２】
むだ時間を内部モデルに含めない場合は、前項のＭＶの算出式を、むだ時間ｄを考慮したものに修正する必要がある。
【０１０３】
そこで、実際のプロセスデータについて、時刻ｎの代わりに時刻ｎ＋ｄとする。
【０１０４】
【数７】
2018041150.tif 000009
【０１０５】
ここで、ＰＶ（ｎ＋ｄ）の予測値が必要となり、合理的な近似として通常は次の計算式で求める。
ＰＶ（ｎ＋ｄ）＝ＰＶ（ｎ）＋Ｙ（ｎ）−Ｙ（ｎ−ｄ）
ここでも、むだ時間ｄ間の予測補正量Ｃｄ（ｎ）を考慮すると、
ＰＶ（ｎ＋ｄ）＝ＰＶ（ｎ）＋Ｙ（ｎ）−Ｙ（ｎ−ｄ）＋Ｃｄ（ｎ）
より
【０１０６】
【数８】
2018041150.tif 000010
【０１０７】
なお、時刻ｎの操作量ＭＶ（ｎ）を計算した後に、次回計算のために、次のモデル出力Ｙ（ｎ＋１）を求めておく。
【０１０８】
【数９】
2018041150.tif 000011
【０１０９】
ただし、ＭＶ（ｎ）は操作量リミット処理後の値を使用する。
【０１１０】
（外乱補償処理の一例）
図４は、コントローラ１０の実行する外乱補償処理の一例を示すフロー図である。図４に示すように、コントローラ１０（トルク算出部１０２）は、モーション制御ｎサイクル目（ｎは１以上の自然数）の予測制御を実行し（Ｓ１０）、必要があれば、同時に、誤差算出部１０４は、１サイクル分の予測誤差データを算出し（Ｓ３０）、算出したモデル予測誤差を記憶部１０５に誤差データ１５１として格納する（Ｓ４０）。なお、誤差データ１５１として格納されるデータを、「基準予測誤差」と呼ぶ。以下、詳細を説明していく。
【０１１１】
コントローラ１０は、「ｎ＋１サイクル目以降の制御サイクル」において、モデル予測制御による予測値（トルク算出部１０２が算出した制御量の予測値）に対し、基準予測誤差を利用して補正を行う。すなわち、予測値補正部１０６は、誤差データ１５１として格納されている「ｎサイクル目のモデル予測誤差（基準予測誤差）」を用いて、ｎ＋１サイクル目以降の予測制御量（トルク算出部１０２が算出した「ｎ＋１サイクル目以降の動作周期における予測値（制御量の予測値）」）を補正する。そして、トルク算出部１０２は、予測値補正部１０６により補正された予測値（制御量の予測値）が、指令値（指令位置）に追従するのに必要なトルクを、内部モデルを用いて算出する。トルク指令部１０３は、トルク算出部１０２が算出したトルクを、指令トルク（操作量）として、サーボドライバ２０に出力する（Ｓ１０、予測制御の実行）。
【０１１２】
なお、初回の制御実行時（「ｎ＝１」の時の制御実行時）は、基準予測誤差がまだ記憶部１０５に格納されておらず、誤差データ１５１がないので、外乱補償処理を実行しても、実際には予測値は補正されないことになる。
【０１１３】
コントローラ１０は、新たな基準予測誤差を記憶するか否かを判定する（Ｓ２０）。すなわち、受付部１０７は、新たな基準予測誤差を記憶することを指示するユーザ操作を受け付けたか否かを判定する。なお、受付部１０７が、２回目以降の動作周期における予測値の補正に際して、直前の動作周期におけるモデル予測誤差を用いることを指定するユーザ操作を受け付けている場合にも、受付部１０７は、「新たな基準予測誤差を記憶することを指示するユーザ操作を受け付けている」と判定する。
【０１１４】
受付部１０７が、「新たな基準予測誤差を記憶することを指示するユーザ操作を受け付けている」と判定した場合、つまり、新たな基準予測誤差を記憶する場合（Ｓ２０でＹｅｓ）、誤差算出部１０４は、新たな基準予測誤差（モデル予測誤差）を算出し（Ｓ３０）、算出した新たな基準予測誤差を記憶部１０５に誤差データ１５１として格納する（Ｓ４０）。
【０１１５】
すなわち、誤差算出部１０４は、前記ユーザ操作において指定された動作周期におけるモデル予測誤差を算出し、算出したモデル予測誤差を記憶部１０５に誤差データ１５１として格納する。例えば、トルク算出部１０２が「ｎサイクル目」の予測制御を実行するのと共に、誤差算出部１０４は、「ｎサイクル目」における制御対象３０の制御量の実測値と、「ｎサイクル目」における予測制御量と、から「ｎサイクル目」におけるモデル予測誤差を算出する。誤差算出部１０４は、算出した「ｎサイクル目」におけるモデル予測誤差（新たな基準予測誤差）を記憶部１０５に誤差データ１５１として格納する。
【０１１６】
そして、予測値補正部１０６は、誤差データ１５１として記憶部１０５に格納されている新たな基準予測誤差を用いて予測値（制御量の予測値、つまり予測制御量）を補正する（予測補正値（補正後予測値）を生成する）。トルク算出部１０２は、予測補正値（補正後予測値）が指令値（指令位置）に追従するのに必要なトルク（指令トルク）を、前記内部モデルを用いて算出し、トルク指令部１０３は、トルク算出部１０２が算出した指令トルク（操作量）を、サーボドライバ２０に出力する（予測制御の実行、Ｓ１０）。
【０１１７】
受付部１０７が、「新たな基準予測誤差を記憶することを指示するユーザ操作を受け付けていない」と判定した場合、つまり、新たな基準予測誤差を記憶しない場合（Ｓ２０でＮｏ）、誤差算出部１０４による新たな基準予測誤差の記憶は行われない。予測値補正部１０６は、誤差データ１５１として記憶部１０５に既に格納されている基準予測誤差を用いて予測補正値を生成し、トルク算出部１０２は、当該予測補正値が指令値に追従するのに必要なトルク（指令トルク）を算出する。トルク指令部１０３は、トルク算出部１０２が算出した指令トルクを、サーボドライバ２０に出力する（予測制御の実行、Ｓ１０）。
【０１１８】
図４に例示する外乱補償処理は、コントローラ１０が基準予測誤差を必要なときだけ記憶する（上に示した例では、「モーション制御ｎサイクル目における、１サイクル分の予測誤差データ」を記憶部１０５に誤差データ１５１として格納する）外乱補償処理である。すなわち、図４に例示する外乱補償処理は、指令パターンを変更する場合、および負荷条件を変更する場合など、必要に応じて基準予測誤差を記憶し直す外乱補償処理である。
【０１１９】
図４を参照して説明してきたコントローラ１０の実行する処理（制御方法）は、以下のように整理することができる。すなわち、コントローラ１０の実行する処理（制御方法）は、モーション制御の対象である制御対象３０のモデルを用いて、指令値に対応する制御対象３０の制御量を予測するモデル予測制御装置の制御方法であって、連続する複数の動作周期の間で大きさおよび印加のタイミングが同一である（略同一である）外乱が印加されたときの、或る動作周期における制御量の実測値と、前記或る動作周期における前記モデルを用いた制御量の予測値との誤差であるモデル予測誤差を算出する誤差算出ステップ（Ｓ３０）と、前記誤差算出ステップにて算出した前記或る動作周期における前記モデル予測誤差を用いて、前記或る動作周期より後の動作周期における前記予測値を補正する予測値補正ステップ（Ｓ１０）と、を含むことを特徴としている。
【０１２０】
前記の方法によれば、前記予測値補正ステップは、前記或る動作周期より後の動作周期における前記予測値を、前記或る動作周期における前記モデル予測誤差を用いて補正する。つまり、コントローラ１０の制御方法は、前記外乱に相当する操作量を推定せずに前記外乱の補償を行う。
【０１２１】
したがって、コントローラ１０の制御方法は、前記外乱による制御量の変化を操作量に変換するための演算処理を実行せずに、前記外乱を補償でき、前記外乱による制御量の変化を補償する処理を単純化することができるという効果を奏する。
【０１２２】
（予測値の補正方法）
図５は、コントローラ１０の予測値補正部１０６が予測値（トルク算出部１０２が算出した「或る動作周期における予測値（制御量の予測値、つまり予測制御量）」）を補正する方法を説明するための図である。
【０１２３】
予測値補正部１０６は、図３を用いて説明したモデル予測制御のアルゴリズムにおける予測補正量Ｃｄ（ｎ）およびＣＨ（ｎ）を求めることにより、トルク算出部１０２が算出した前記「或る動作周期」より後の動作周期における予測値（制御量の予測値、つまり予測制御量）を、補正する。以下詳細を説明していく。
【０１２４】
なお、以下の説明においては、「ＰＥ（ｎ）」は「時刻ｎの予測誤差」を意味し、「ＰＶ（ｎ）」は「時刻ｎの制御量（制御対象３０が出力する制御量の実測値。例えば、フィードバック位置）」を意味している。また、「Ｙ（ｎ−ｄ）」は「時刻（ｎ−ｄ）におけるモデル予測値（トルク算出部１０２が、制御対象（つまり、制御対象３０およびサーボドライバ２０）の挙動をモデル化した内部モデルを用いて算出した時刻（ｎ−ｄ）における制御量の予測値）」を意味し、「ｄ」は「むだ時間」を意味している。むだ時間ｄは、コントローラ１０の制御周期の整数倍である。
【０１２５】
予測値補正部１０６は、基準予測誤差データの、サイクル内時刻「ｎ」、「ｎ＋ｄ」、「ｎ＋ｄ＋Ｈ」における予測誤差ＰＥを求め、次式により、予測補正量Ｃｄ（ｎ）およびＣＨ（ｎ）を算出する。
Ｃｄ（ｎ）＝ＰＥ（ｎ＋ｄ）−ＰＥ（ｎ）,
ＣＨ（ｎ）＝ＰＥ（ｎ＋ｄ＋Ｈ）−ＰＥ（ｎ＋ｄ）
なお、誤差算出部１０４は、以下の式によりモデル予測誤差ＰＥ（ｎ）を算出し、算出したモデル予測誤差ＰＥ（ｎ）を記憶部１０５に誤差データ１５１として格納する。
ＰＥ（ｎ）＝ＰＶ（ｎ）−Ｙ（ｎ−ｄ）
（基準予測誤差記憶のタイミング指定）
コントローラ１０は、予測値補正部１０６が用いる前記モデル予測誤差について、どの動作周期における前記モデル予測誤差にするかを選択するユーザ操作を受け付ける受付部１０７を備えている。
【０１２６】
前記の構成によれば、受付部１０７は、予測値補正部１０６が用いる前記モデル予測誤差について、どの動作周期における前記モデル予測誤差にするかを選択するユーザ操作を受け付ける。
【０１２７】
したがって、コントローラ１０は、受付部１０７によって受け付けられたユーザ操作に対応する動作周期における前記モデル予測誤差を用いて、前記ユーザ操作に対応する動作周期より後の動作周期における前記予測値を補正することができるという効果を奏する。
【０１２８】
ここで、前記ユーザ操作は、１回目の動作周期を指定するものであってもよい。また、前記ユーザ操作は、２回目以降の動作周期における補正に際して、直前の動作周期における前記モデル予測誤差を用いることを指定するものであってもよい。さらに、コントローラ１０は、前記ユーザ操作において指定された任意の回（例えば、３回目）の動作周期における前記モデル予測誤差を用いて、前記指定された任意の回より後の回（例えば、４回目、５回目、・・・、ｎ回目）の動作周期における前記予測値を補正してもよい。
【０１２９】
受付部１０７は、例えば、「初回サイクル（１回目の動作周期）」のモデル予測誤差だけを記憶させ、２回目以降の動作周期における予測値の補正には、常に「初回サイクル」のモデル予測誤差を用いるよう指定するユーザ操作を受け付けてもよい。
【０１３０】
同様に、受付部１０７は、例えば、新たに「ｎ回目（例えば、５回目）の動作周期」のモデル予測誤差を記憶させ、ｎ＋１回目（例えば、６回目の動作周期）以降の動作周期における予測値の補正に前記ｎ回目の動作周期におけるモデル予測誤差を用いるよう指示するユーザ操作を受け付けてもよい。
【０１３１】
さらに、受付部１０７は、動作周期毎にモデル予測誤差を記憶させ、或る動作周期におけるモデル予測誤差を用いて、前記或る動作周期の次の動作周期における前記予測値を補正するよう指示するユーザ操作を受け付けてもよい。
【０１３２】
（外乱補償の効果の実証）
前述の通り、受付部１０７は、予測値補正部１０６が用いるモデル予測誤差について、どの動作周期におけるモデル予測誤差にするかを選択するユーザ操作を受け付ける。そして、予測値補正部１０６は、「受付部１０７が受け付けたユーザ操作において指定されている動作周期（ユーザ指定の動作周期）」におけるモデル予測誤差を用いて、前記「ユーザ指定の動作周期」より後の動作周期における予測値（制御量の予測値、つまり予測制御量）を、補正する（外乱補償）。
【０１３３】
以下では、外乱の内容に応じて、例えば、印加される外乱が変化しないか、それとも変化するかに応じて、予測値補正部１０６が、どのタイミング（どの動作周期）におけるモデル予測誤差を用いて予測値（予測制御量）を補正するのが好ましいかを説明する。
【０１３４】
（変化しない外乱の補償）
図６は、コントローラ１０が外乱補償処理を実行した場合の効果を説明するための図である。図６に示す例は、「１００ｍｓで６０ｍｍ移動する（これが１サイクル）」目標軌道データ（目標軌道）の制御に対し、「時刻４０ｍｓに、パルス幅４ｍｓ、振幅５０％のパルス状のトルク外乱」を印加した場合について、コントローラ１０が外乱補償処理を実行した場合の効果を説明するための図である。
【０１３５】
図６に示す例において、コントローラ１０は、「時刻４０ｍｓに、パルス幅４ｍｓ、振幅５０％のパルス状のトルク外乱」のような定型の外乱（複数の動作周期に亘って、大きさおよび印加のタイミングが変化しない外乱）に対して、１回目に記憶した基準予測誤差を用いて２回目以降の動作周期における予測値を補正する。つまり、定型の外乱については、予測値補正部１０６が「１回目の動作周期におけるモデル予測誤差」を用いて「２回目以降の動作周期における予測制御量（制御量の予測値）」を補正する（外乱補償）。
【０１３６】
そして、トルク算出部１０２は、予測値補正部１０６により補正された予測値（制御量の予測値）が指令値（指令位置）に追従するのに必要なトルクを、制御対象３０およびサーボドライバ２０の挙動をモデル化した内部モデルを用いて、算出する。
【０１３７】
図６に示すように、外乱補償が有効となっている「２回目の動作周期」において、つまり、予測値補正部１０６が「１回目の動作周期におけるモデル予測誤差」を用いて予測制御量（制御量の予測値）を補正した「２回目の動作周期」において、前記外乱の制御への影響は抑制されている。例えば、「２回目の動作周期」における位置偏差は、「１回目の動作周期」における位置偏差と異なり、ほとんど「０」で推移している。また、「２回目の動作周期」におけるトルクは、「１回目の動作周期」におけるトルクに比べて変化が穏やかなものとなっており、「１回目の動作周期」におけるような乱高下が無くなっている。つまり、定型の外乱については、予測値補正部１０６が、所定の回の動作周期（例えば、１回目の動作周期）におけるモデル予測誤差を用いて、前記所定の回より後の回の動作周期における予測値を補正することで、コントローラ１０は、前記外乱の制御への影響を低減することが可能となる。
【０１３８】
すなわち、コントローラ１０において、予測値補正部１０６は、誤差算出部１０４により算出された所定の回の動作周期（例えば、１回目の動作周期）における前記モデル予測誤差を用いて、前記所定の回より後の回の動作周期における前記予測値を補正する。
【０１３９】
前記の構成によれば、予測値補正部１０６は、前記所定の回の動作周期における前記モデル予測誤差を用いて、前記所定の回より後の回の動作周期における前記予測値を補正する。
【０１４０】
ここで、例えばｎを自然数としてｎ回目の動作周期における前記モデル予測誤差を用いてｎ＋１回目以降の回の動作周期における前記予測値を補正することが予め分かっていれば、ユーザは、ｎ回目の動作周期におけるモーション制御について、再現性が高い周囲環境を予め整備しておくことができる。つまり、コントローラ１０は、ｎ＋１回目以降の回の動作周期における前記予測値を補正するのに好適な前記モデル予測誤差を、ｎ回目の動作周期において取得することができる。
【０１４１】
したがって、コントローラ１０は、偶発的に発生する前記誤差を含まない、精度の高い前記所定の回の動作周期における前記モデル予測誤差を用いて、前記所定の回より後の回の動作周期における前記予測値を補正することができるという効果を奏する。
【０１４２】
したがって、コントローラ１０は、例えば、本稼動前の調整段階の最後に、再現性が高い周囲環境における前記モデル予測誤差を記憶しておき、記憶した前記モデル予測誤差を用いて、本稼動時の前記予測値を補正することができるという効果を奏する。
【０１４３】
（変化する外乱の補償）
外乱が徐々に変化するような場合、コントローラ１０は、毎回、基準予測誤差を記憶し、かつ、直前のサイクルで記憶した基準予測誤差を使用して、予測の補正を行うのが好ましい。ここで、「外乱が徐々に変化するような場合」とは、例えば、発生する（印加される）外乱について、次のような傾向がある外乱をいう。すなわち、ｎ回目の制御周期において印加される外乱とｎ＋１回目の制御周期において印加される外乱とは、印加のタイミングおよび大きさが類似し、ｎ＋１回目の制御周期において印加される外乱とｎ＋２回目の制御周期において印加される外乱とは、印加のタイミングおよび大きさが類似する。しかしながら、ｎ回目の制御周期において印加される外乱とｎ＋２回目の制御周期において印加される外乱とは、印加のタイミングおよび大きさが類似するとは言えないような傾向がある場合を、「外乱が徐々に変化するような場合」と呼ぶことにする。
【０１４４】
図７は、コントローラ１０の実行する外乱補償処理の、図４に示すのとは別の例を示すフロー図である。図４に例示した外乱補償処理においては、誤差算出部１０４は、「ユーザ指定の回」についてのみ、その回の動作周期におけるモデル予測誤差を算出し、予測値補正部１０６は、「ユーザ指定の回」の動作周期におけるモデル予測誤差を用いて、前記「ユーザ指定の回」より後の回の動作周期における予測値（制御量の予測値、つまり予測制御量）を、補正していた。
【０１４５】
これに対して、図７に例示する外乱補償処理においては、誤差算出部１０４は、毎動作周期におけるモデル予測誤差を算出する。つまり、誤差算出部１０４は、動作周期ごとに、その回の動作周期におけるモデル予測誤差を算出する。そして、予測値補正部１０６は、算出されたモデル予測誤差を用いて、次の回の動作周期における予測値（制御量の予測値、つまり予測制御量）を、補正する。
【０１４６】
すなわち、図７に示すように、コントローラ１０（トルク算出部１０２）は、モーション制御ｎサイクル目の予測制御を実行し（Ｓ１１０）、同時に、誤差算出部１０４は、１サイクル分の予測誤差データを算出し（Ｓ１２０）、算出したモデル予測誤差を記憶部１０５に誤差データ１５１として格納する（Ｓ１３０）。以下、詳細を説明していく。
【０１４７】
トルク算出部１０２が「ｎサイクル目」の予測制御を実行する（Ｓ１１０）のと共に、誤差算出部１０４は、「ｎサイクル目」における制御対象３０の制御量の実測値と、「ｎサイクル目」における予測制御量と、から「ｎサイクル目」におけるモデル予測誤差を算出する（Ｓ１２０）。誤差算出部１０４は、算出した「ｎサイクル目」におけるモデル予測誤差（新たな基準予測誤差）を記憶部１０５に誤差データ１５１として格納する（Ｓ１３０）。
【０１４８】
「ｎ＋１サイクル目」の制御サイクルにおいて、予測値補正部１０６は、誤差データ１５１として格納されている「ｎサイクル目」のモデル予測誤差（基準予測誤差）を用いて、「ｎ＋１サイクル目」の予測制御量（トルク算出部１０２が算出した「ｎ＋１サイクル目」の動作周期における予測値（制御量の予測値））を補正する。そして、トルク算出部１０２は、予測値補正部１０６により補正された予測値（制御量の予測値）が、指令値（指令位置）に追従するのに必要なトルクを、内部モデルを用いて算出する。トルク指令部１０３は、トルク算出部１０２が算出したトルクを、指令トルク（操作量）として、サーボドライバ２０に出力する（Ｓ１１０、予測制御の実行）。
【０１４９】
なお、図４に例示した処理と同様に、図７に令する処理においても、初回の制御実行時（「ｎ＝１」の時の制御実行時）は、基準予測誤差がまだ記憶部１０５に格納されておらず、誤差データ１５１がないので、外乱補償処理を実行しても、実際には予測値は補正されないことになる。
【０１５０】
「ｎ＋１サイクル目」の制御サイクルにおいて、誤差算出部１０４は、「ｎ＋１サイクル目」における制御対象３０の制御量の実測値と、「ｎ＋１サイクル目」における予測制御量と、から「ｎ＋１サイクル目」におけるモデル予測誤差を算出する（Ｓ１２０）。誤差算出部１０４は、算出した「ｎ＋１サイクル目」におけるモデル予測誤差（新たな基準予測誤差）を記憶部１０５に誤差データ１５１として格納する（Ｓ１２０）。
【０１５１】
図７を参照して説明してきたコントローラ１０の実行する処理（制御方法）は、連続する複数の動作周期の間で大きさおよび印加のタイミングが略同一である外乱が印加されたときの、或る動作周期における制御量の実測値と、前記或る動作周期における前記モデルを用いた制御量の予測値との誤差であるモデル予測誤差を算出する誤差算出ステップ（Ｓ１２０）と、前記誤差算出ステップにて算出した前記或る動作周期における前記モデル予測誤差を用いて、前記或る動作周期より後の動作周期における前記予測値を補正する予測値補正ステップ（Ｓ１１０）と、を含んでいる。
【０１５２】
コントローラ１０は、大きさおよび印加（発生）のタイミングの少なくとも一方が徐々に変化するような外乱に対して、毎回、基準予測誤差として予測誤差を記憶し、かつ直前のサイクルで記憶した予測誤差を基準予測誤差として用いて、予測の補正を行う。
【０１５３】
つまり、コントローラ１０において、予測値補正部１０６は、誤差算出部１０４により算出された或る動作周期における前記モデル予測誤差を用いて、前記或る動作周期の次の動作周期における前記予測値を補正する。
【０１５４】
前記の構成によれば、予測値補正部１０６は、前記或る動作周期における前記モデル予測誤差を用いて、前記或る動作周期の次の動作周期における前記予測値を補正する。
【０１５５】
ここで、誤差算出部１０４により前記或る動作周期において前記モデル予測誤差が算出された場合、同様の前記モデル予測誤差が、前記或る動作周期の次の動作周期においても算出される可能性が高いと考えることができる。
【０１５６】
したがって、コントローラ１０は、前記或る動作周期において算出された前記モデル予測誤差と同様の前記モデル予測誤差が算出される可能性の高い、前記或る動作周期の次の動作周期における前記予測値を、前記或る動作周期における前記モデル予測誤差を用いて補正することができるという効果を奏する。
【０１５７】
大きさおよび印加（発生）のタイミングの少なくとも一方が徐々に変化するような外乱に対して、コントローラ１０が図７に例示する外乱補償処理を実行した場合の効果を、以下に図８および図９を用いて説明する。図８および図９に示す例は、共に、「１００ｍｓで６０ｍｍ移動する（これが１サイクル）」目標軌道データ（目標軌道）の制御に対し、「時刻４０ｍｓに、パルス幅４ｍｓ、振幅５０％のパルス状のトルク外乱」を印加し、モーション制御の２〜１０回目の制御周期（サイクル）においては、「１サイクル毎に、外乱印加時刻が０．５ｍｓだけ前にシフトし、振幅が２％ずつ増え」、最後の１１回目の制御周期においては、「外乱の変化が止まり、１０回目の制御周期におけるのと同一の外乱が与えられる」点で共通している。なお、図８は、コントローラ１０が図７に示す外乱補償処理を実行しなかった場合の位置偏差等の軌跡を示しているのに対して、図９は、コントローラ１０が図７に示す外乱補償処理を実行した場合の位置偏差等の軌跡を示している。また、図８と図９とにおいて、１サイクル目の位置偏差およびトルクの軌跡は共通である。前述の通り、初回の制御実行時（「ｎ＝１」の時の制御実行時）は、基準予測誤差がまだ記憶部１０５に格納されておらず、誤差データ１５１がないので、外乱補償処理を実行しても、実際には予測値は補正されないことになるからである。
【０１５８】
図８は、印加される外乱が徐々に変化する場合に、コントローラ１０が図７に示す外乱補償処理を実行しなかった場合の位置偏差等の軌跡を示す図である。図８に示すように、コントローラ１０が図７に示す外乱補償処理を実行しない場合、少しずつ位置偏差が拡大している。
【０１５９】
図９は、印加される外乱が徐々に変化する場合に、コントローラ１０が図７に示す外乱補償処理を実行した場合の位置偏差等の軌跡を示す図である。図９に示す例においては、図８に示す位置偏差等の軌跡とは対照的に、印加される外乱が変化しても、コントローラ１０が位置偏差の拡大を抑制しつつ、印加される外乱の変化が止まると、コントローラ１０はほぼ完全に位置偏差の拡大を抑制している。
【０１６０】
（表示画面の一例）
図１０は、コントローラ１０が表示する予測誤差のトレンドグラフ（経時変化を示す図）の一例を示す図である。図１０に示すように、コントローラ１０の表示制御部１０８は、モデル予測誤差（誤差算出部１０４が算出し、記憶部１０５に格納されている誤差データ１５１）の経時変化をユーザに表示する。
【０１６１】
前記の構成によれば、表示制御部１０８は、前記モデル予測誤差の経時変化をユーザに表示する。したがって、コントローラ１０は、前記モデル予測誤差の経時変化をユーザに表示するので、ユーザが、コントローラ１０によって表示された前記モデル予測誤差の経時変化（いわゆる、トレンドグラフ）に現れる波形から、外乱の様子を近似的に把握することができるという効果を奏する。
【０１６２】
表示制御部１０８が予測誤差（モデル予測誤差）のトレンドグラフを表示することにより、ユーザは、１サイクル（動作周期）内のどの時点で外乱が発生しているかを確認することができる。特に、外乱補償が有効に働いている場合には、制御偏差の乱れのみによっては、外乱発生の様子を確認することが難しくなる。しかしながら、表示制御部１０８が表示する予測誤差のトレンドグラフによって、ユーザは、外乱が発生している時点（タイミング）を容易に確認することができる。
【０１６３】
〔実施形態２〕
本発明の他の実施形態について、図１１および図１２に基づいて説明すれば、以下のとおりである。なお記載の簡潔性を担保するため、実施形態１とは異なる構成（処理の手順及び処理の内容）のみについて説明する。すなわち、実施形態１で記載された構成等は、本実施形態にもすべて含まれ得る。また、実施形態１で記載した用語の定義も同じである。
【０１６４】
（制御システムの概要）
図１２は、コントローラ１００を含む制御システム２の概要を示す図である。制御システム２は、コントローラ１０が、位置／速度制御を実行し、予測制御によりサーボドライバ２０へのトルク指令値を出力する制御システム１と異なり、コントローラ１００は予測制御によりサーボドライバ１２０への指令位置を補正し、サーボドライバ１２０が位置／速度制御を実行する。すなわち、制御システム１においてコントローラ１０はサーボドライバ２０にトルク指令値を出力していたのに対し、制御システム２においてコントローラ１００はサーボドライバ１２０に指令位置を出力する。
【０１６５】
コントローラ１００は、モデル予測制御機構を備えるコントローラであって、サーボドライバ１２０に対し、操作量としての指令位置を出力する。コントローラ１００は、例えば、ユーザ等の外部から目標軌道データ（目標軌道）を受け付け（軌道生成）、受け付けた目標軌道データから制御周期ごとに指令値（指令位置）を生成する。コントローラ１００は、また、制御対象３０から、「制御対象３０の出力である制御量（制御量の実測値）」を、フィードバック情報として取得する。すなわち、コントローラ１００は、フィードバック位置として、制御対象３０が出力した位置を取得する。
【０１６６】
ここで、コントローラ１００は、サーボドライバ１２０および制御対象３０のモデルを内部モデルとして有し、この内部モデルを用いて、生成した指令位置と、「制御対象３０の出力であるフィードバック位置（制御量の実測値）」と、に基づいて、サーボドライバ１２０に対し、操作量としての指令位置を出力する。
【０１６７】
制御システム１においては、サーボドライバ２０のトルク制御部の特性について、「入力と出力とが略同一である」と見なして、サーボドライバ２０のモデルは無視することも可能であった。すなわち、コントローラ１０が用いる内部モデルは、制御対象３０のみのモデルであっても好かった。
【０１６８】
一方、制御システム２では、サーボドライバ１２０が位置制御と速度制御とを実行するため、サーボドライバ１２０のモデルは、制御対象３０のモデルと同様に重要であり、必須となる。すなわち、コントローラ１００が用いる内部モデルは、サーボドライバ１２０および制御対象３０のモデルである。コントローラ１００は、内部モデルとして、サーボドライバ１２０および制御対象３０の両方のモデルを必要とする。コントローラ１００は、サーボドライバ１２０および制御対象３０の各々のモデルを別個に有していてもよい。ただし、コントローラ１００は、モデル予測制御を実行する際には、サーボドライバ１２０と制御対象３０とをひとまとめにした制御対象（サーボドライバ１２０および制御対象３０）全体の特性を表すモデルを必要とする。
【０１６９】
コントローラ１００は、前記内部モデルを用いて制御対象３０の出力する制御量（フィードバック位置）を予測するとともに、予測誤差を推定して外乱補償を行い、つまり、予測した制御量（予測値）を、予め記憶しておいたモデル予測誤差を用いて補正する。そして、コントローラ１００は、モデル予測誤差を用いて補正した予測値である予測補正値（補正後予測値）を用いて、サーボドライバ１２０に出力する補正後指令位置（操作量）を算出する。
【０１７０】
サーボドライバ１２０は、制御対象３０について位置／速度制御を実行する。すなわち、サーボドライバ１２０は、コントローラ１００から、指令位置（補正後指令位置）を取得する。サーボドライバ１２０は、また、制御対象３０から、「制御対象３０の出力である制御量（制御量の実測値）」を、フィードバック情報として取得する。すなわち、サーボドライバ１２０は、フィードバック速度およびフィードバック位置（フィードバック速度およびフィードバック位置の少なくとも一方）として、制御対象３０が出力した速度および位置（速度および位置の少なくとも一方）を取得する。
【０１７１】
サーボドライバ１２０は、コントローラ１００から取得した指令位置（補正後指令位置）と、制御対象３０から取得したフィードバック速度およびフィードバック位置の少なくとも一方と、を用いて、制御対象３０について位置／速度制御を実行する。
【０１７２】
（コントローラの概要）
これまで図１２を用いて概要を説明してきた制御システム２に含まれるコントローラ１００について、次に、その構成および処理の内容等を、図１１を用いて説明していく。図１１を参照して詳細を説明する前に、コントローラ１００についての理解を容易にするため、その概要について以下のように整理しておく。
【０１７３】
コントローラ１００（モデル予測制御装置）は、モーション制御の対象である制御対象全体（サーボドライバ１２０および制御対象３０）のモデルを用いて、指令値に対応する制御対象３０の制御量を予測するモデル予測制御装置である。コントローラ１００は、制御システム１におけるコントローラ１０と同様に、誤差算出部１０４と、予測値補正部１０６と、を備えている。
【０１７４】
コントローラ１００は、さらに、前記指令値に、予測値補正部１０６により補正された前記予測値が追従するよう、前記指令値を補正する指令値補正部１１２と、指令値補正部１１２により補正された前記指令値である補正後指令値を、サーボドライバ１２０（制御対象３０にモーション制御を行う制御系）に、制御対象３０の位置制御に係る指令値として出力する位置指令部１１３と、を備えている。
【０１７５】
前記の構成によれば、指令値補正部１１２は、予測値補正部１０６により補正された制御量の予測値が前記指令値に追従するよう前記指令値を補正し、位置指令部１１３は、指令値補正部１１２により補正された前記指令値である補正後指令値を、サーボドライバ１２０に、制御対象３０の位置制御に係る指令値として出力する。
【０１７６】
したがって、コントローラ１００は、前記外乱による制御量の変化を操作量に変換するための演算処理を実行せずに、前記指令値に制御対象３０の制御量が追従するように補正された前記指令値を、サーボドライバ１２０に出力することができるという効果を奏する。
【０１７７】
（コントローラの詳細）
以上に概要を説明したコントローラ１００について、次に、その構成の詳細を、図１１を用いて説明する。
【０１７８】
図１１は、本発明の実施形態２に係るコントローラ１００の要部構成を示すブロック図である。図１１に示すコントローラ１００は、図１に示すコントローラ１０のトルク算出部１０２およびトルク指令部１０３に代えて、指令値補正部１１２および位置指令部１１３を備えている。コントローラ１００のトルク算出部１０２およびトルク指令部１０３以外の構成については、コントローラ１０のトルク算出部１０２およびトルク指令部１０３以外の構成と同様なので、詳細は略記する。
【０１７９】
指令値補正部１１２は、モデル予測制御を実行し、具体的には、制御対象（つまり、サーボドライバ１２０および制御対象３０）の内部モデルを用いて未来の状態を予測し、制御対象３０の未来の出力（制御量の予測値）ができる限り目標値（指令値、つまり指令位置）に近づくように操作量（指令位置）を決定する（推定する）。つまり、指令値補正部１１２は、前記内部モデルに基づいて未来の出力（制御量）の変化を予測し、出力と目標値とができるだけ近づくように入力（操作量、つまり指令位置）を決定するものである。
【０１８０】
指令値補正部１１２は、制御対象（つまり、サーボドライバ１２０および制御対象３０）の挙動をモデル化した前記内部モデルを含み、前記内部モデルを用いて、各動作周期において制御対象３０が出力する制御量を予測する。すなわち、指令値補正部１１２は、前記内部モデルを用いて、各動作周期における予測値（制御量の予測値）を算出する。指令値補正部１１２は、算出した予測値（予測制御量）を誤差算出部１０４に通知する。
【０１８１】
指令値補正部１１２は、また、予測値補正部１０６から取得する予測補正値（補正後予測値）が、つまり、予測値補正部１０６により補正された予測値（制御量の予測値）が、指令値（指令位置）に追従するのに必要な操作量（補正後指令位置）を、前記内部モデルを用いて算出する。指令値補正部１１２は、算出した補正後指令位置を操作量として位置指令部１１３に通知する。
【０１８２】
位置指令部１１３は、指令値補正部１１２から通知された補正後指令位置（操作量）を、サーボドライバ１２０（制御対象３０にモーション制御を行う制御系）に、制御対象３０の位置／速度制御に係る指令値として出力する。
【０１８３】
〔ソフトウェアによる実現例〕
コントローラ１０および１００の制御ブロック（特に、指令値生成部１０１、トルク算出部１０２、トルク指令部１０３、誤差算出部１０４、記憶部１０５、予測値補正部１０６、受付部１０７、表示制御部１０８、指令値補正部１１２、および位置指令部１１３）は、集積回路（ＩＣチップ）等に形成された論理回路（ハードウェア）によって実現してもよいし、ＣＰＵ（Central Processing Unit）を用いてソフトウェアによって実現してもよい。
【０１８４】
後者の場合、コントローラ１０および１００は、各機能を実現するソフトウェアであるプログラムの命令を実行するＣＰＵ、上記プログラムおよび各種データがコンピュータ（またはＣＰＵ）で読み取り可能に記録されたＲＯＭ（Read Only Memory）または記憶装置（これらを「記録媒体」と称する）、上記プログラムを展開するＲＡＭ（Random Access Memory）などを備えている。そして、コンピュータ（またはＣＰＵ）が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体（通信ネットワークや放送波等）を介して上記コンピュータに供給されてもよい。なお、本発明は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【０１８５】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【０１８６】
１０  コントローラ（モデル予測制御装置）
３０  制御対象
１００  コントローラ（モデル予測制御装置）
１０２  トルク算出部
１０３  トルク指令部
１０４  誤差算出部
１０５  記憶部
１０６  予測値補正部
１０７  受付部
１０８  表示制御部
１１２  指令値補正部
１１３  位置指令部
１５１  誤差データ（モデル予測誤差）
Ｓ１０  予測値補正ステップ
Ｓ３０  誤差算出ステップ
Ｓ１１０  予測値補正ステップ
Ｓ１２０  誤差算出ステップ
【図１】
2018041150.tif 000012
【図２】
2018041150.tif 000013
【図３】
2018041150.tif 000014
【図４】
2018041150.tif 000015
【図５】
2018041150.tif 000016
【図６】
2018041150.tif 000017
【図７】
2018041150.tif 000018
【図８】
2018041150.tif 000019
【図９】
2018041150.tif 000020
【図１０】
2018041150.tif 000021
【図１１】
2018041150.tif 000022
【図１２】
2018041150.tif 000023