(57)【要約】【課題】外乱のモデルを必要とせずに外乱補償を適用でき、特に、制御対象の制御量の実測値と予測値との誤差である予測誤差が周期的に変化する場合、予測誤差の時間変化を示す波形の振幅が時間に対し一定でないときにも、制御量を正確に予測する。【解決手段】コントローラ（２００）は、制御量の実測値と予測値との誤差である予測誤差を示す波形の振幅の変化を考慮して、１周期前の予測誤差を用いて、現在の制御量の予測値を補償する。【選択図】図１５
2019139590.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）などの揮発性記憶装置で構成される。
【００７２】
どのデータをどの記憶装置に記憶するのかについては、コントローラ１０の使用目的、利便性、コスト、または、物理的な制約などから適宜決定される。記憶部１１０はさらに、誤差データ１１０１と、極値データ１１０２とを格納している。
【００７３】
誤差データ１１０１は、算出部１０４が算出した前記「（或る動作周期における）モデル予測誤差」の情報であり、算出部１０４によって記憶部１１０に格納される。
【００７４】
極値データ１１０２は、極値検出部１０５によってモデル予測誤差の時間変化から検出されたモデル予測誤差の時間変化における極値についての情報であり、極値検出部１０５によって記憶部１１０に格納される。
【００７５】
（モデル予測制御について）
図３は、コントローラ１０が実行するモデル予測制御の概要を説明するための図である。モデル予測制御は、制御対象（制御システム１においては、制御対象３０（およびサーボドライバ２０））のモデルを使って、参照軌道（制御システム１においては、目標軌道）上のターゲットポイントに制御量を一致させるための未来の操作量（制御システム１においては、サーボドライバ２０に与えるトルク指令値）を決定し、この処理を毎周期繰り返すものである。
【００７６】
コントローラ１０は、図３に示すように、現時刻ｎにおいて制御量ＰＶ（ｎ）を測定し、現時刻の制御量ＰＶ（ｎ）を始点として設定値ＳＰに徐々に近づく破線で示す参照軌道を計算する。ここでは、簡単のために、制御ホライズンＨｕは「１」とする。
【００７７】
コントローラ１０は、次に、内部モデル（制御対象３０（およびサーボドライバ２０）のモデル）を用いて、予測ホライズンＨ後の制御量ＰＶの予測値ＰＶ（ｎ＋Ｈ）が参照軌道に一致するように、現在の時刻ｎの操作量ＭＶ（ｎ）を決定する。
【００７８】
コントローラ１０は、得られた操作量ＭＶ（ｎ）を実際にサーボドライバ２０に加え、次のサンプリング時刻ｎ＋１まではその値を保持する。
【００７９】
時刻ｎ＋１において制御量ＰＶ（ｎ＋１）が測定されると、コントローラ１０は、改めて時刻ｔ＋１を現時刻とみなし、未来の予測値と参照軌道とが、予測ホライズンＨ後に一致するように操作量を決定し、次のサンプリング時刻までその操作量をサーボドライバ２０に加える。以下、この手順を繰り返す。
【００８０】
次に、制御システム１におけるコントローラ１０が実行する予測制御について、詳細に説明する。
【００８１】
コントローラ１０は、上述のように内部モデルを用いて予測制御を行なうものであり、制御システム１において、内部モデルは、サンプリング時間で離散化した次式で表されるＮ次のＡＲＸモデルとしている。なお、制御対象（制御システム１においては、制御対象３０（およびサーボドライバ２０））のモデルは、ＡＲＸモデルに限らず、ステップ応答モデルやその他のモデルを用いてもよい。
【００８２】
【数１】
2019139590.tif 000003
【００８３】
ここで、
Ｙ(ｎ)：時刻ｎの内部モデル出力値
Ｕ(ｎ)：時刻ｎの操作量
ａ１〜ａＮ,ｂ１〜ｂＭ：内部モデルの係数
Ｎ,Ｍ：内部モデル次数
である。
【００８４】
このＡＲＸモデルの決定は、例えば、制御対象（制御システム１においては、制御対象３０（およびサーボドライバ２０））に対する入出力の時系列データ、すなわち、操作量ＭＶおよび制御量ＰＶの時系列データを予め計測し、最小二乗法等を用いて行われる。
【００８５】
制御システム１においては、図３の破線で示される参照軌道として、現時刻ｎでの偏差を、時定数Ｔｒで指数関数的に０に近づける軌道を用いている。
【００８６】
すなわち、予測ホライズンＨ後の参照軌道上の目標値Ｒ(ｎ＋Ｈ)は、次式で求めることができる。
R(n+H)＝SP(n+H)−λH＊{SP(n)−PV(n)}，
λ＝ｅｘｐ(−Tc／Tr)
ここで、
ＰＶ（ｎ）：時刻ｎの制御量
ＳＰ（ｎ），ＳＰ（ｎ＋Ｈ）：時刻ｎ,ｎ＋Ｈの目標値
Ｒ（ｎ＋Ｈ）：予測ホライズンＨ先の参照軌道上の目標値
Ｔｃ：サンプリング時間
である。
【００８７】
したがって、現時刻ｎにおける制御量ＰＶ（ｎ）からの増分、すなわち、予測ホライズンＨ後に、制御量ＰＶを、参照軌道上の目標値Ｒ（ｎ＋Ｈ）に一致させるために必要な制御量ＰＶの増分（偏差）ΔＰ（ｎ＋Ｈ）は、
【００８８】
【数２】
2019139590.tif 000004
【００８９】
となる。
【００９０】
次に、操作量ＭＶの計算について説明する。
【００９１】
線形の制御対象の場合、モデル出力の挙動は、次の２つの加算により求めることができる。
【００９２】
（１）自由応答
現在の状態を初期値として、未来の操作量ＭＶとして０が継続する場合の、予測ホライズンＨ後のモデル出力Ｙｆ（ｎ＋Ｈ）を、上述のＡＲＸモデルの式から繰り返し計算により求める。
【００９３】
【数３】
2019139590.tif 000005
【００９４】
（２）ステップ応答
初期状態を０として、ＭＶ＝１（１００％）のステップ応答における、時刻Ｈのモデル出力Ｓ（Ｈ）を求める。
【００９５】
【数４】
2019139590.tif 000006
【００９６】
ＭＶ＝１（１００％）ではなく、一般にＭＶ（ｎ）とすると、時刻Ｈのステップ応答出力はＭＶ（ｎ）＊Ｓ（Ｈ）となる。
ここで、
ＭＶ（ｎ）：時刻ｎの操作量
Ｙｆ（ｎ＋Ｈ）：予測ホライズンＨ後のモデルの自由応答出力
Ｓ（Ｈ）：時刻Ｈのモデルのステップ応答出力
である。
【００９７】
前項より、時刻ｎ以降、操作量ＭＶ（ｎ）を継続した場合、時刻ｎ＋Ｈ時点のモデル出力（制御量の予測値）は次式となる。
Ｙ（ｎ＋Ｈ）＝Ｙｆ（ｎ＋Ｈ）＋ＭＶ（ｎ）＊Ｓ（Ｈ）
ここで、Ｙ(ｎ)からの増分、すなわち、予測ホライズンＨ後に期待されるモデル出力の増分ΔＭ（ｎ＋Ｈ）は、
ΔＭ（ｎ＋Ｈ）＝Ｙｆ（ｎ＋Ｈ）＋ＭＶ（ｎ）＊Ｓ（Ｈ）−Ｙ（ｎ）
となる。
【００９８】
したがって、予測ホライズンＨ後に期待されるモデル出力の増分ΔＭ（ｎ＋Ｈ）が、制御量ＰＶを予測ホライズンＨ後に参照軌道上の目標値とするための上述の制御量ＰＶの増分ΔＰ（ｎ＋Ｈ）と等しくなるように操作量ＭＶを求めればよい。すなわち、
ΔＭ（ｎ＋Ｈ）＝ΔＰ（ｎ＋Ｈ）
となる操作量ＭＶを求めればよい。
【００９９】
ここで、予測補正量ＣＨ（ｎ）を考慮すると、
ΔＭ（ｎ＋Ｈ）＋ＣＨ（ｎ）＝ΔＰ（ｎ＋Ｈ）
より、
【０１００】
【数５】
2019139590.tif 000007
【０１０１】
ＭＶ（ｎ）について解くと、
【０１０２】
【数６】
2019139590.tif 000008
【０１０３】
むだ時間を内部モデルに含めない場合は、前項のＭＶの算出式を、むだ時間ｄを考慮したものに修正する必要がある。
【０１０４】
そこで、実際のプロセスデータについて、時刻ｎの代わりに時刻ｎ＋ｄとする。
【０１０５】
【数７】
2019139590.tif 000009
【０１０６】
ここで、ＰＶ（ｎ＋ｄ）の予測値が必要となり、合理的な近似として通常は次の計算式で求める。
ＰＶ（ｎ＋ｄ）＝ＰＶ（ｎ）＋Ｙ（ｎ）−Ｙ（ｎ−ｄ）
ここでも、むだ時間ｄ間の予測補正量Ｃｄ（ｎ）を考慮すると、
ＰＶ（ｎ＋ｄ）＝ＰＶ（ｎ）＋Ｙ（ｎ）−Ｙ（ｎ−ｄ）＋Ｃｄ（ｎ）
より
【０１０７】
【数８】
2019139590.tif 000010
【０１０８】
なお、時刻ｎの操作量ＭＶ（ｎ）を計算した後に、次回計算のために、次のモデル出力Ｙ（ｎ＋１）を求めておく。
【０１０９】
【数９】
2019139590.tif 000011
【０１１０】
ただし、ＭＶ（ｎ）は操作量リミット処理後の値を使用する。
【０１１１】
（外乱補償処理の一例）
図４は、コントローラ１０の実行する外乱補償処理の一例を示すフロー図である。図４に示すように、コントローラ１０は、モデル予測誤差を記憶し（Ｓ１０）、モデル予測誤差を時系列に並べたデータから、モデル予測誤差の極値を検出する（Ｓ２０）。そして、コントローラ１０は、検出した極値を用いてモデル予測誤差の時間変化について周期性の有無を判定する（Ｓ３０）。コントローラ１０は、モデル予測誤差の時間変化に周期性があると判定した場合（Ｓ３０でＹｅｓ）、１周期（１予測誤差変動周期）前の予測誤差を利用して予測値の補正を行って、補正した予測値を用いて予測制御を実行する（Ｓ４０）。コントローラ１０は、モデル予測誤差の時間変化に周期性がないと判定した場合（Ｓ３０でＮｏ）、予測値の補正をせずに、予測制御を実行する（Ｓ５０）。以下、詳細を説明していく。
【０１１２】
なお、以下の説明においては、「ＰＥ（ｎ）」は「サイクル内時刻ｎの予測誤差」を意味し、「ＰＶ（ｎ）」は「サイクル内時刻ｎの制御量（制御対象３０が出力する制御量の実測値。例えば、フィードバック位置）」を意味している。また、「Ｙ（ｎ−ｄ）」は「時刻（ｎ−ｄ）におけるモデル予測値（トルク算出部１０２が、制御対象（つまり、制御対象３０およびサーボドライバ２０）の挙動をモデル化した内部モデルを用いて算出したサイクル内時刻（ｎ−ｄ）における制御量の予測値）」を意味し、「ｄ」は「むだ時間」を意味している。むだ時間ｄは、コントローラ１０の制御周期の整数倍である。
【０１１３】
算出部１０４は、制御周期毎に、１サイクル分の予測誤差データを算出し、算出したモデル予測誤差を、極値検出部１０５に通知するとともに、記憶部１１０に誤差データ１１０１として格納する（Ｓ１０）。算出部１０４は、以下の式によりモデル予測誤差ＰＥ（ｎ）を算出し、算出したモデル予測誤差ＰＥ（ｎ）を、極値検出部１０５に通知するとともに、記憶部１１０に誤差データ１１０１として格納する。
ＰＥ（ｎ）＝ＰＶ（ｎ）−Ｙ（ｎ−ｄ）
極値検出部１０５は、制御周期毎に、算出部１０４により各々算出された、連続する複数の前記モデル予測誤差の時間変化から、前記モデル予測誤差の極大値および極小値を検出する。すなわち、極値検出部１０５は、例えば、制御周期毎に算出部１０４から通知されるモデル予測誤差の時間変化を示す曲線（直線）から、モデル予測誤差の極大値および極小値を、制御周期毎に検出する。そして、極値検出部１０５は、制御周期毎に、検出した極値（極大値および極小値）の値を、検出した時刻（検出時刻）と共に判定部１０６に通知する。極値検出部１０５は、検出した極値を、当該極値が発生したタイミング（検出時刻）とともに、記憶部１１０に極値データ１１０２として格納してもよい（Ｓ２０）。
【０１１４】
判定部１０６は、制御周期毎に、極値検出部１０５によって複数の極値が検出されたら、極値間の検出時刻の差（検出時刻差）を算出して、周期性の有無を判断する（Ｓ３０）。判定部１０６がモデル予測誤差の時間変化について周期性があると判断した場合（Ｓ３０でＹｅｓ）、補正量算出部１０７は、現在より前（過去）の変動周期（つまり、或る「予測誤差変動周期」の１つ前の「予測誤差変動周期」）の予測誤差を用いて、予測補正量を算出する。ここで特に、補正量算出部１０７は、「現時刻において予測する、（未来の）制御量の予測値（つまり、或る『予測誤差変動周期』における制御量の予測値）」を補正するための予測補正量Ｃｄ（ｎ）、ＣＨ（ｎ）を算出する。
【０１１５】
そして、トルク算出部１０２は、補正量算出部１０７の算出した予測補正量Ｃｄ（ｎ）、ＣＨ（ｎ）を用いて予測値（制御量の予測値）を補正し、補正後の予測値（補正後予測値）を用いて、制御量が指令値（指令位置）に追従するようにトルクを算出する。ここで特に、トルク算出部１０２は、予測補正量Ｃｄ（ｎ）、ＣＨ（ｎ）を用いて、「或る予測誤差変動周期における制御量の予測値」を、つまり、「現在における予測値」を補正する。トルク算出部１０２は、補正後の「或る予測誤差変動周期における制御量の予測値」を用いて、制御量が指令値（指令位置）に追従するようにトルクを算出する。トルク算出部１０２は、制御量が指令値に追従するのに必要なトルクを、内部モデルを用いて算出する。トルク指令部１０３は、トルク算出部１０２が算出したトルクを、指令トルク（操作量）として、サーボドライバ２０に出力する（Ｓ４０）。
【０１１６】
判定部１０６がモデル予測誤差の時間変化について周期性がないと判断した場合（Ｓ３０でＮｏ）、補正量算出部１０７は予測値を補正するための予測補正量Ｃｄ（ｎ）、ＣＨ（ｎ）を算出しない。そして、トルク算出部１０２は、補正していない予測値（制御量の予測値）を用いて、制御量が指令値（指令位置）に追従するように、内部モデルを用いてトルクを算出する。トルク指令部１０３は、トルク算出部１０２が算出したトルクを、指令トルク（操作量）として、サーボドライバ２０に出力する（Ｓ５０）。
【０１１７】
図４を参照して説明してきたコントローラ１０の実行する処理（制御方法）は、以下のように整理することができる。すなわち、コントローラ１０の実行する処理（制御方法）は、目標軌道から制御周期ごとに生成された指令値に対応する制御対象３０の制御量を、制御対象３０（およびサーボドライバ２０）のモデルを用いて予測するモデル予測制御装置の制御方法であって、制御対象３０の制御量の実測値と前記モデルを用いて予測した制御量の予測値との誤差であるモデル予測誤差の時間変化について周期性の有無を判定する判定ステップ（Ｓ３０）と、前記判定ステップにて前記モデル予測誤差の時間変化について周期性が有ると判定すると、前記モデル予測誤差の時間変化の周期である予測誤差変動周期について、或る予測誤差変動周期の１つ前の予測誤差変動周期における前記モデル予測誤差を用いて、前記或る予測誤差変動周期における前記モデルを用いて予測した制御量の予測値を補正する予測値補正ステップ（Ｓ４０）と、を含んでいる。
【０１１８】
前記の制御方法によれば、前記予測値補正ステップは、モデル予測誤差の時間変化について周期性が有ると判定されると、前記或る予測誤差変動周期の１つ前の予測誤差変動周期における前記モデル予測誤差を用いて、前記或る予測誤差変動周期における前記モデルを用いて予測した制御量の予測値を補正する。
【０１１９】
なお、予測値補正ステップ（４０）が、或る予測誤差変動周期の１つ前の予測誤差変動周期における前記モデル予測誤差を用いて補正する、「前記或る予測誤差変動周期における前記モデルを用いて予測した制御量の予測値」は、「現在における予測値」と言い換えてもよい。
【０１２０】
したがって、前記制御方法は、前記或る予測誤差変動周期における前記制御量の予測値が周期性を有する外乱によって乱れる場合、前記或る予測誤差変動周期の１つ前の予測誤差変動周期における前記モデル予測誤差を用いて、前記或る予測誤差変動周期における前記予測値を補正することができるという効果を奏する。前記制御方法は、外乱のモデルを必要とせずに、幅広い機械および装置に対して、より簡単に外乱補償を適用できるという効果を奏する。
【０１２１】
（周期性の判定方法−予測誤差の極値検出と記憶）
図５は、コントローラ１０がモデル予測誤差の時間変化について周期性の有無を判定する方法を説明するための図である。図４を用いて説明したように、算出部１０４は制御周期毎にモデル予測誤差をチェックし（算出し）、算出したモデル予測誤差を記憶部１１０に誤差データ１１０１として格納する。そして、極値検出部１０５は、算出部１０４により算出されたモデル予測誤差を時系列に並べ、モデル予測誤差の時間変化から、モデル予測誤差の極大値および極小値を検出する。
【０１２２】
ここで、図５の中段に例示している「モデル予測誤差」は、算出部１０４が算出した（記憶部１１０に誤差データ１１０１として格納されている）モデル予測誤差を時系列に並べた曲線（直線）を示している。なお、以下の説明においては、「モデル予測誤差を時系列に並べた曲線（直線）」を、「予測誤差変動波形」とも称する。
【０１２３】
極値検出部１０５は、図５の中段に例示している「モデル予測誤差」の曲線（予測誤差変動波形）から、丸で囲んだ極大値および極小値を順に確定していく。そして、極値検出部１０５は、確定した極値の情報として、「Ｐ（ｊ）：ｊ番目の極値」および「Ｐｔｉｍｅ（ｊ）：ｊ番目の極値の出現時刻（検出時刻）」を、極値データ１１０２として記憶部１１０に格納する。
【０１２４】
極値検出部１０５は、図５の中段に例示している「モデル予測誤差」の曲線（予測誤差変動波形）において、極大値と極小値とを交互に確定して行く。ここで、判定部１０６は、極値検出部１０５が、極大値と極小値とを合計４以上確定すれば、次の要領で周期性の有無を判定する。すなわち、極値検出部１０５が最後に確定した極値がＰ（ｋ）として、次の条件を満たす場合に、判定部１０６は、モデル予測誤差の時間変化について、周期性ありと判定する。
【０１２５】
【数１０】
2019139590.tif 000012
【０１２６】
ここで、ＥＰＳ１は、「０」〜「１」の範囲で予め決めておけばよい。例えば、「ＥＰＳ１＝０．２」などに設定しておく。ＥＰＳ１の値を「１」に近い値に設定しておくほど、判定部１０６による「モデル予測誤差の時間変化に係る周期性の有無の判定」は甘くなる。なお、ＥＰＳ１は、ユーザが「０」〜「１」の範囲で設定することができるようにしておいてもよい。
【０１２７】
すなわち、コントローラ１０において、判定部１０６は、極値検出部１０５により複数の前記極大値の各々が検出された時刻の間隔と、極値検出部１０５により複数の前記極小値の各々が検出された時刻の間隔との差に基づいて、前記モデル予測誤差の時間変化について周期性の有無を判定する。
【０１２８】
前記の構成によれば、判定部１０６は、極値検出部１０５により複数の前記極大値の各々が検出された時刻の間隔と、極値検出部１０５により複数の前記極小値の各々が検出された時刻の間隔との差に基づいて、前記モデル予測誤差の時間変化について周期性の有無を判定する。
【０１２９】
したがって、コントローラ１０は、複数の前記極大値の各々が検出された時刻の間隔と、複数の前記極小値の各々が検出された時刻の間隔との差との差に基づいて、前記モデル予測誤差の時間変化について周期性の有無を判定し、前記周期性が有ると判定すると、前記或る予測誤差変動周期の１つ前の予測誤差変動周期における前記モデル予測誤差を用いて、前記或る予測誤差変動周期における前記モデルを用いて予測した制御量の予測値を補正することができるという効果を奏する。
【０１３０】
例えば、判定部１０６は、極値検出部１０５により複数の前記極大値の各々が検出された時刻の間隔と、極値検出部１０５により複数の前記極小値の各々が検出された時刻の間隔との差が所定の値（前述のＥＰＳ１）よりも小さいと、前記モデル予測誤差の時間変化について周期性が有ると判定する。
【０１３１】
したがって、コントローラ１０は、複数の前記極大値の各々が検出された時刻の間隔と、複数の前記極小値の各々が検出された時刻の間隔との差が所定の値よりも小さいと、前記モデル予測誤差の時間変化について周期性が有ると判定し、前記或る予測誤差変動周期の１つ前の予測誤差変動周期における前記モデル予測誤差を用いて、前記或る予測誤差変動周期における前記モデルを用いて予測した制御量の予測値を補正することができるという効果を奏する。
【０１３２】
なお、前述の通り、ＥＰＳ１は、ユーザが「０」〜「１」の範囲で設定できるようにしておいてもよく、ＥＰＳ１の値を「１」に近い値に設定しておくほど、判定部１０６による「モデル予測誤差の時間変化に係る周期性の有無の判定」は甘くなる。
【０１３３】
また、上述の例では、判定部１０６が、
【０１３４】
【数１１】
2019139590.tif 000013
【０１３５】
を、
【０１３６】
【数１２】
2019139590.tif 000014
【０１３７】
で割って、モデル予測誤差の時間変化について、周期性の有無を判定する例を説明した。
【０１３８】
しかしながら、判定部１０６が、モデル予測誤差の時間変化の周期性の有無を判定するのに、
【０１３９】
【数１３】
2019139590.tif 000015
【０１４０】
を、
【０１４１】
【数１４】
2019139590.tif 000016
【０１４２】
で割ることは必須ではない。
【０１４３】
判定部１０６は、極値検出部１０５により複数の前記極大値の各々が検出された時刻の間隔と、極値検出部１０５により複数の前記極小値の各々が検出された時刻の間隔との差に基づいて、前記モデル予測誤差の時間変化について周期性の有無を判定すればよい。すなわち、判定部１０６は、
【０１４４】
【数１５】
2019139590.tif 000017
【０１４５】
がＥＰＳ１よりも小さい（つまり、「０」に近い）場合に、モデル予測誤差の時間変化に周期性があると判定してもよい。
【０１４６】
さらに、上述の例では、極値検出部１０５が、予測誤差変動波形（モデル予測誤差を時系列に並べた曲線）から、極大値と極小値とを各々２つずつ検出し、判定部１０６が、２つの極大値の各々が検出された時刻の間隔と、２つの極小値の各々が検出された時刻の間隔との差に基づいて、モデル予測誤差の時間変化について周期性の有無を判定していた。
【０１４７】
しかしながら、極値検出部１０５が予測誤差変動波形から極値を３つ検出し、判定部１０６が、隣り合う２つの極値の各々が検出された時刻の間隔を求め、最初の間隔と次の間隔との差に基づいて、モデル予測誤差の時間変化について周期性の有無を判定してもよい。すなわち、１番目の極値（例えば、極大値）が検出された時刻と２番目の極値（例えば、極小値）が検出された時刻との間隔（最初の間隔）と、２番目の極値（例えば、極小値）が検出された時刻と３番目の極値（例えば、極大値）が検出された時刻との間隔（次の間隔）との差に基づいて、判定部１０６は、モデル予測誤差の時間変化について周期性の有無を判定してもよい。
【０１４８】
また、図５における極値の検出において、計測ノイズによる誤検出を防ぎ、また、静止摩擦による停止状態での微小な振動を誤検出することを防ぐために、極値検出部１０５は、極大値と極小値との差が或る閾値を超える場合にのみ極値を確定するようにしてもよい。すなわち、コントローラ１０において、極値検出部１０５は、前記連続する複数の前記モデル予測誤差の時間変化における前記モデル予測誤差の極大値および極小値のうち、前記極大値と前記極小値との差が所定値よりも大きな前記極大値および前記極小値のみを検出する。
【０１４９】
前記の構成によれば、極値検出部１０５は、前記連続する複数の前記モデル予測誤差の時間変化における前記モデル予測誤差の極大値および極小値のうち、前記極大値と前記極小値との差が所定値よりも大きな前記極大値および前記極小値のみを検出する。
【０１５０】
ここで、前記モデル予測誤差は、算出部１０４により、制御対象３０の制御量の実測値と前記モデルを用いて予測した制御量の予測値との誤差として算出されるのであり、前記実測値は計測ノイズを含み得る。また、例えば静止摩擦による停止状態での微小な振動が、前記実測値に影響し得る。つまり、算出部１０４により算出される前記モデル予測誤差は、前記実測値の含み得る計測ノイズ等に影響を受け得る。
【０１５１】
極値検出部１０５は、前記連続する複数の前記モデル予測誤差の時間変化における前記モデル予測誤差の極大値および極小値のうち、前記極大値と前記極小値との差が所定値よりも大きな前記極大値および前記極小値のみを検出することにより、前記計測ノイズ等に影響された前記モデル予測誤差を誤って極値（極大値または極小値）として検出してしまうことを防ぐことができる。
【０１５２】
したがって、コントローラ１０は、高精度で検出した極値の検出時刻を用いて、前記モデル予測誤差の時間変化について周期性の有無を判定することができるという効果を奏する。
【０１５３】
（予測値の補正方法−１周期前の予測誤差を使用して予測を補正）
図６は、コントローラ１０が予測値を補正する方法を説明するための図である。判定部１０６が、モデル予測誤差の時間変化について周期性ありと判定した場合、補正量算出部１０７は、以下に示す方法により予測補正量を算出する。
【０１５４】
補正量算出部１０７は、先ず、時刻ｎ時点で、最後に確定した極値時刻から現時刻までの経過時間である経過時間「ｎ−Ｐｔｉｍｅ（ｋ）」を求める。
【０１５５】
補正量算出部１０７は、次に、現時刻から１周期前の時刻を次式で求め、これを予測の起点とする。すなわち、
Ｐｔｉｍｅ（ｋ−２）＋ｎ−Ｐｔｉｍｅ（ｋ）
そして、補正量算出部１０７は、上の式から求めた時刻から、むだ時間ｄ区間、および予測ホライズンＨ区間における、予測誤差の変化量を、予測補正量Ｃｄ（ｎ）、ＣＨ（ｎ）として求める。すなわち、
【０１５６】
【数１６】
2019139590.tif 000018
【０１５７】
なお、前述の通り、「ＰＥ（ｎ）」は「時刻ｎの予測誤差」を意味しており、算出部１０４は、以下の式によりモデル予測誤差ＰＥ（ｎ）を算出し、算出したモデル予測誤差ＰＥ（ｎ）を記憶部１１０に誤差データ１１０１として格納している。
ＰＥ（ｎ）＝ＰＶ（ｎ）−Ｙ（ｎ−ｄ）
（外乱補償の効果の実証）
コントローラ１０は、制御対象３０の制御量の実測値と、制御対象３０（およびサーボドライバ２０）のモデルを用いて予測した制御量の予測値との誤差であるモデル予測誤差の時間変化について周期性の有無を判定する。そして、モデル予測誤差の時間変化について周期性が有ると判定すると、コントローラ１０は、予測誤差変動周期について、或る予測誤差変動周期の１つ前の予測誤差変動周期における前記モデル予測誤差を用いて、前記或る予測誤差変動周期における前記モデルを用いて予測した制御量の予測値を補正する。コントローラ１０が実行する上記外乱補償処理の奏する効果について、以下、「単純な（一般的な）外乱」と「複雑な外乱」の各々について、説明していく。
【０１５８】
なお、「単純な（一般的な）外乱」とは、例えば、その大きさの時間変化を示す変動波形（予測誤差変動波形）が１つの周期しかもたない外乱をいう。また、「複雑な外乱」とは、例えば、その大きさの時間変化を示す変動波形（予測誤差変動波形）が複数の周期を持つような外乱をいう。
【０１５９】
（単純な外乱の補償）
図７は、コントローラ１０が外乱補償処理を実行した場合の効果を説明するための図である。すなわち、図７に示す例は、「１００ｍｓで６０ｍｍ移動し、その後１００ｍｓ間停止する」目標軌道データ（目標軌道）の制御に対し、「最大振幅１０％、周波数１００Ｈｚの正弦波状の外乱」を印加した場合について、コントローラ１０が外乱補償処理を実行した場合の効果を説明するための図である。
【０１６０】
図７に示すように、時刻４０ｍｓ辺りで、コントローラ１０が周期性外乱補償機能を実行し、時刻４０ｍｓ以降の位置偏差は小さく抑制できている。すなわち、時刻４０ｍｓ以降は、前記外乱の制御への影響は抑制されている。例えば、時刻４０ｍｓ以降における位置偏差は、時刻４０ｍｓよりも前における位置偏差と異なり、ほとんど「０」で推移している。また、時刻４０ｍｓ以降におけるトルクは、時刻４０ｍｓよりも前におけるトルクに比べて変化が穏やかなものとなっており、時刻４０ｍｓよりも前におけるような乱高下が無くなっている。つまり、コントローラ１０は、外乱に周期性があると判定すると、外乱の周期（つまり、予測誤差変動周期）について、現在より前（過去）において算出したモデル予測誤差を用いて、現在（現時刻）の制御量予測値を補正することで、前記外乱の制御への影響を抑制している。
【０１６１】
ここで、位置偏差および位置の振動波形の少なくとも一方を用いて外乱の周期性を判断する方法では、外乱補償が働き出すと、周期性の正しい判定ができなくなる。外乱補償によって外乱が補償され、つまり、位置偏差および位置の振動波形が外乱補償によって変形されるため、外乱を（外乱の周期性を）正確に把握することができなくなるからである。
【０１６２】
これに対して、コントローラ１０においては、コントローラ１０が外乱補償によって位置偏差の振動を抑制している間も、予測誤差には外乱の振動波形が残る。したがって、コントローラ１０は、継続的に外乱を補償することができる。コントローラ１０は、予測誤差を用いて外乱の周期性を判断するので、外乱補償を実行した後であっても、予測誤差において外乱の振動波形を検出することができるので、コントローラ１０は、外乱の周期性を正確に判断することができるという効果を奏する。
【０１６３】
（複雑な外乱の補償）
図７に示す例において、コントローラ１０は、予測誤差変動波形が１つの周期しかもたない「単純な（一般的な）外乱」を補償していた。これに対し、予測誤差変動波形が複数の周期を持つ「複雑な外乱」を補償する際には、コントローラ１０は、周期下限（値）を利用することにより、モデル予測誤差の時間変化の周期である予測誤差変動周期を正確に把握することができる。以下、図８および図９を用いて説明していく。
【０１６４】
図８は、コントローラ１０が周期下限値を用いてモデル予測誤差の周期性の有無を判定する、「複雑な外乱」を説明するための図である。図７に例示した「単純な（一般的な）外乱」の変動波形（予測誤差変動波形）が単一周期であったのに対して、図８に例示する「複雑な外乱」の変動波形（予測誤差変動波形）は、複数の周期を持っている。
【０１６５】
図８において、捉えたいのは周期（Ａ）であり、周期（Ｂ）は無視しなければならない。そこで、周期（Ｂ）よりも長く、周期（Ａ）よりも短い時間を、周期下限値として設定することで、コントローラ１０において、判定部１０６は、周期（Ｂ）を無視することができる。例えば、極値検出部１０５は、予測誤差変動波形からモデル予測誤差の時間変化における極大値および極小値の少なくとも一方を確定する際に、直前に確定した極大値（極小値）との時間差が周期下限値に満たないものは、極小値（極大値）ではないとみなす。すなわち、周期下限値を設定し、極値検出部１０５は、極大値（極小値）間の検出時刻の差が周期下限値よりも短いときは、その極値を確定しない（つまり、極大値（極小値）とはみなさない）。極値検出部１０５は、（１）複数の前記極大値の間の検出時刻の間隔が周期下限値よりも長くなるように、複数の前記極大値の各々を検出し、（２）複数の前記極小値の間の検出時刻の間隔が周期下限値よりも長くなるように、複数の前記極小値の各々を検出する。
【０１６６】
判定部１０６は、検出時刻の差が周期下限値以上である複数の前記極大値（極小値）を用いて（より正確には、複数の前記極大値（極小値）の検出時刻の間隔を用いて）、モデル予測誤差の時間変化の周期性の有無を判断する。
【０１６７】
また、極値検出部１０５が周期下限値を用いて検出する（確定する）極値の精度を向上させるのに代えて、判定部１０６が周期下限値を用いることによって、モデル予測誤差の時間変化についての、周期性の有無の判定精度を向上させてもよい。すなわち、判定部１０６が、（１）極値検出部１０５によって検出された複数の極大値の間の検出時刻の間隔のうち、前記周期下限値よりも長い間隔を、前記周期性の有無を判定する際に用いる前記極大値が検出された時刻の間隔として用い、（２）極値検出部１０５によって検出された複数の極小値の間の検出時刻のうち、前記周期下限値よりも長い間隔を、前記周期性の有無を判定する際に用いる前記極小値が検出された時刻の間隔として用いてもよい。
【０１６８】
判定部１０６および極値検出部１０５の少なくとも一方が周期下限値を用いることにより、図８に例示する予測誤差変動波形において、判定部１０６は周期（Ｂ）ではなく周期（Ａ）について、モデル予測誤差の時間変化について周期性の有無を判定する。そして、判定部１０６によりモデル予測誤差の時間変化について周期性が有ると判定されると、補正量算出部１０７は、モデル予測誤差の時間変化である予測誤差変動周期（つまり、周期（Ａ））について、或る予測誤差変動周期の１つ前の予測誤差変動周期における前記モデル予測誤差を用いて、予測補正量Ｃｄ（ｎ）、ＣＨ（ｎ）を算出する。特に、補正量算出部１０７は、「前記或る予測誤差変動周期における、前記モデルを用いて予測した制御量の予測値」を補正するための予測補正量Ｃｄ（ｎ）、ＣＨ（ｎ）を算出する。
【０１６９】
次に、コントローラ１０が、以上に説明したように、予測誤差変動波形が複数の周期を持つ「複雑な外乱」を、周期下限値を用いて補償した場合の効果について、図９を用いて説明していく。
【０１７０】
図９は、コントローラ１０が周期下限値を用いた外乱補償処理を実行した場合の効果を説明するための図である。すなわち、図９に示す例は、「１００ｍｓで６０ｍｍ移動し、その後１００ｍｓ間停止する」目標軌道データ（目標軌道）の制御に対し、複数の周期の予測誤差変動波形で示される「複雑な外乱」を印加した場合について、コントローラ１０が外乱補償処理を実行した場合の効果を説明するための図である。
【０１７１】
コントローラ１０が実行する処理は、図７に例示した場合と比べて、図９に例示する場合は、周期下限値を用いた点のみである。すなわち、図９に例示する場合において、コントローラ１０（極値検出部１０５）は、図７に例示した場合における処理に、「周期下限値に満たない時間では極値を確定しない」という処理を追加しただけの処理を実行する。
【０１７２】
図９の差異下段に例示しているモデル予測誤差は、予測誤差変動波形が複数の周期を有している。図８を用いて説明したように、予測誤差変動波形が複数の周期を持つ場合には、最も長い周期だけを検出する必要がある。
【０１７３】
コントローラ１０において、極値検出部１０５は、周期下限値を用いて検出する（確定する）極値の精度を向上させる。すなわち、コントローラ１０は、周期の下限値（周期下限値）を予め設定しておき、この下限値に満たない周期は無視することによって、最も長い周期の予測誤差変動を検出することができる。
【０１７４】
図９の真ん中の列には、予測誤差変動波形が複数の周期を持つ「複雑な外乱」に対し、コントローラ１０が、通常の外乱補償（つまり、「周期下限値を用いない」外乱補償処理）を実行した場合の位置偏差およびトルク等の軌跡が示されている。
【０１７５】
図８を用いて説明したように、予測誤差変動波形が複数の周期を持つ「複雑な外乱」は、モデル予測誤差の時間変化について周期性を正しく判定することが困難であり、また、モデル予測誤差の時間変化の周期を正しく算定することが困難である。
【０１７６】
したがって、「複雑な外乱」に対し、コントローラ１０が、「周期下限値を用いない」で外乱補償処理を実行した場合の位置偏差およびトルク等の軌跡は、図９の真ん中の列に示すように、外乱補償処理を実行しない場合の位置偏差およびトルク等の軌跡（図９の左側の列に示す位置偏差およびトルク等の軌跡）に類似している。つまり、コントローラ１０は、「周期下限値を用いない」場合、「複雑な外乱」による制御の乱れを抑制することができず、例えば、位置偏差変動を抑制できない。
【０１７７】
これに対して、図９の右側の列に示すように、予測誤差変動波形が複数の周期を持つ「複雑な外乱」に対し、コントローラ１０は、周期下限値を用いた外乱補償処理を実行することにより、位置偏差変動を良好に抑制できている。また、トルクの変化についても、穏やかなものとすることができている。
【０１７８】
すなわち、コントローラ１０は、周期下限値を用いることにより、予測誤差変動波形が複数の周期を持つ「複雑な外乱」について、その時間変化に係る周期性の有無を正確に判定し、かつ、前記「複雑な外乱」の時間変化の周期（つまり、モデル予測誤差の時間変化の周期）を正しく算定することができる。そして、コントローラ１０は、外乱に周期性があると判定すると、外乱の周期（つまり、予測誤差変動周期）について、現在より前（過去）において算出したモデル予測誤差を用いて、現在（現時刻）の制御量予測値を補正することで、前記外乱の制御への影響を抑制している。
【０１７９】
すなわち、コントローラ１０において、極値検出部１０５は、（１）複数の前記極大値の間の検出時刻の間隔が所定の周期よりも長くなるように、複数の前記極大値の各々を検出し、（２）複数の前記極小値の間の検出時刻の間隔が所定の周期よりも長くなるように、複数の前記極小値の各々を検出する。
【０１８０】
前記の構成によれば、極値検出部１０５は、複数の前記極大値（前記極小値）の間の検出時刻の間隔が所定の周期よりも長くなるように、複数の前記極大値（前記極小値）の各々を検出する。つまり、極値検出部１０５は、極大値（極小値）間の検出時刻の差（間隔）が所定の周期よりも短いときは、その極値を確定しない（つまり、極大値（極小値）とは見做さない）。極値検出部１０５は、例えば、直前に確定した極大値（極小値）との時間差が周期下限値に満たない山（谷）は、極大値（極小値）ではないとみなしてもよい。
【０１８１】
ここで、例えば前記モデル予測誤差の時間変化を示す曲線が、大きな周期曲線中に小さな周期曲線を含むようなものである場合、前記モデル予測誤差の時間変化の周期性を判定する際に用いるべき周期は、前記大きな周期曲線の周期である。
【０１８２】
したがって、コントローラ１０は、前記複数の前記極値（極大値たは極小値）が検出された時刻の間隔であって、所定の周期（周期下限値）よりも長い間隔を、前記周期性の有無を判定する際に用いるので、前記モデル予測誤差の時間変化について周期性の有無を正しく判定することができるという効果を奏する。
【０１８３】
（ユーザの指定する周期下限値を利用した周期性判定精度の向上）
なお、判定部１０６がモデル予測誤差の時間変化について周期性の有無を判定する際に用いる上記周期下限値は、ユーザが指定するものであってもよい。すなわち、コントローラ１０の受付部１０８は、周期下限値を指定するユーザ操作を受け付ける。そして、判定部１０６は、（１）極値検出部１０５により複数の極大値が検出されると、前記複数の極大値の間の検出時刻の間隔のうち、前記周期下限値よりも長い間隔を、前記周期性の有無を判定する際に用いる前記極大値が検出された時刻の間隔として用い、（２）極値検出部１０５により複数の極小値が検出されると、前記複数の極小値の間の検出時刻のうち、前記周期下限値よりも長い間隔を、前記周期性の有無を判定する際に用いる前記極小値が検出された時刻の間隔として用いる。
【０１８４】
前記の構成によれば、判定部１０６は、（１）極値検出部１０５により検出された複数の前記極大値の間の検出時刻の間隔のうち、前記前記周期下限値よりも長い間隔を、前記周期性の有無を判定する際に用いる前記極大値が検出された時刻の間隔として用い、（２）極値検出部１０５により検出された複数の前記極小値の間の検出時刻の間隔のうち、前記周期下限値よりも長い間隔を、前記周期性の有無を判定する際に用いる前記極小値が検出された時刻の間隔として用いる。
【０１８５】
ここで、例えば前記モデル予測誤差の時間変化を示す曲線が、大きな周期曲線中に小さな周期曲線を含むようなものである場合、前記モデル予測誤差の時間変化の周期性を判定する際に用いるべき周期は、前記大きな周期曲線の周期である。
【０１８６】
したがって、コントローラ１０は、前記複数の前記極値（極大値たは極小値）が検出された時刻の間隔であって、前記周期下限値よりも長い間隔を、前記周期性の有無を判定する際に用いるので、前記モデル予測誤差の時間変化について周期性の有無を正しく判定することができるという効果を奏する。
【０１８７】
（表示画面の一例）
図１０は、コントローラ１０が表示する予測誤差のトレンドグラフの一例を示す図である。図１０に示すように、コントローラ１０の表示制御部１０９は、モデル予測誤差（算出部１０４が算出し、記憶部１１０に格納されている誤差データ１１０１）の経時変化をユーザに表示する。
【０１８８】
前記の構成によれば、表示制御部１０９は、前記モデル予測誤差の経時変化をユーザに表示する。したがって、コントローラ１０は、前記モデル予測誤差の経時変化をユーザに表示するので、ユーザが、コントローラ１０によって表示された前記モデル予測誤差の経時変化（いわゆる、トレンドグラフ）に現れる波形から、外乱の様子を近似的に把握することができるという効果を奏する。
【０１８９】
表示制御部１０９が予測誤差（モデル予測誤差）のトレンドグラフを表示することにより、ユーザは、外乱が発生するタイミング、および発生した外乱がどのように変化するかを確認することができる。特に、外乱補償が有効に働いている場合には、ユーザは、制御偏差（例えば、位置偏差）の乱れのみによって、外乱発生の様子を確認することは困難である。表示制御部１０９が予測誤差のトレンドグラフを表示するので、ユーザは、外乱が発生している時点（タイミング）、および、外乱の経時変化を容易に確認することができる。
【０１９０】
図１１は、コントローラ１０が補償したトルク外乱波形を示す図である。なお、図１１の（Ａ）は、図７に示した例においてコントローラ１０が外乱補償処理を実行したトルク外乱波形（単一周期の予測誤差変動波形で示される「単純な（一般的な）外乱」）を示している。また、図１１の（Ｂ）は、図９に示した例においてコントローラ１０が外乱補償処理を実行したトルク外乱波形（複数の周期の予測誤差変動波形で示される「複雑な外乱」）を示している。
【０１９１】
〔実施形態２〕
本発明の他の実施形態について、図１２および図１３に基づいて説明すれば、以下のとおりである。なお記載の簡潔性を担保するため、実施形態１とは異なる構成（処理の手順及び処理の内容）のみについて説明する。すなわち、実施形態１で記載された構成等は、本実施形態にもすべて含まれ得る。また、実施形態１で記載した用語の定義も同じである。
【０１９２】
（制御システムの概要）
図１３は、コントローラ１００を含む制御システム２の概要を示す図である。制御システム２は、コントローラ１０が、位置／速度制御を実行し、予測制御によりサーボドライバ２０へのトルク指令値を出力する制御システム１と異なり、コントローラ１００は予測制御によりサーボドライバ１２０への指令位置を補正し、サーボドライバ１２０が位置／速度制御を実行する。すなわち、制御システム１においてコントローラ１０はサーボドライバ２０にトルク指令値を出力していたのに対し、制御システム２においてコントローラ１００はサーボドライバ１２０に指令位置を出力する。
【０１９３】
コントローラ１００は、モデル予測制御機構を備えるコントローラであって、サーボドライバ１２０に対し、操作量としての指令位置を出力する。コントローラ１００は、例えば、ユーザ等の外部から目標軌道データ（目標軌道）を受け付け（軌道生成）、受け付けた目標軌道データから制御周期ごとに指令値（指令位置）を生成する。コントローラ１００は、また、制御対象３０から、「制御対象３０の出力である制御量（制御量の実測値）」を、フィードバック情報として取得する。すなわち、コントローラ１００は、フィードバック位置として、制御対象３０が出力した位置を取得する。
【０１９４】
ここで、コントローラ１００は、制御対象３０のモデルを内部モデルとして有し、この内部モデルを用いて、生成した指令位置と、「制御対象３０の出力であるフィードバック位置（制御量の実測値）」と、に基づいて、サーボドライバ１２０に対し、操作量としての指令位置を出力する。コントローラ１００が用いる内部モデルは、サーボドライバ１２０および制御対象３０のモデルである。制御システム２では、サーボドライバ１２０の特性を無視できないため、制御対象３０のみのモデルでは不十分であり、コントローラ１００は、内部モデルとして、サーボドライバ１２０および制御対象３０のモデルを必要とする。
【０１９５】
コントローラ１００は、前記内部モデルを用いて制御対象３０の出力する制御量（フィードバック位置）を予測するとともに、予測誤差を推定して外乱補償を行い、つまり、予測した制御量（予測値）を、予め記憶しておいたモデル予測誤差（１つ前の予測誤差変動周期におけるモデル予測誤差）を用いて補正する。そして、コントローラ１００は、モデル予測誤差を用いて補正した予測値である予測補正値（補正後予測値）を用いて、サーボドライバ１２０に出力する補正後指令位置（操作量）を算出する。
【０１９６】
サーボドライバ１２０は、制御対象３０について位置／速度制御を実行する。すなわち、サーボドライバ１２０は、コントローラ１００から、指令位置（補正後指令位置）を取得する。サーボドライバ１２０は、また、制御対象３０から、「制御対象３０の出力である制御量（制御量の実測値）」を、フィードバック情報として取得する。すなわち、サーボドライバ１２０は、フィードバック速度およびフィードバック位置（フィードバック速度およびフィードバック位置の少なくとも一方）として、制御対象３０が出力した速度および位置（速度および位置の少なくとも一方）を取得する。
【０１９７】
サーボドライバ１２０は、コントローラ１００から取得した指令位置（補正後指令位置）と、制御対象３０から取得したフィードバック速度およびフィードバック位置の少なくとも一方と、を用いて、制御対象３０について位置／速度制御を実行する。
【０１９８】
（コントローラの概要）
これまで図１３を用いて概要を説明してきた制御システム２に含まれるコントローラ１００について、次に、その構成および処理の内容等を、図１２を用いて説明していく。図１２を参照して詳細を説明する前に、コントローラ１００についての理解を容易にするため、その概要について以下のように整理しておく。
【０１９９】
コントローラ１００は、指令値補正部１１２および位置指令部１１３を備えている。指令値補正部１１２は、補正量算出部１０７から、予測補正量（具体的には、予測補正量Ｃｄ（ｎ）、ＣＨ（ｎ））を取得する。指令値補正部１１２は、取得した予測補正量を用いて、「或る予測誤差変動周期における制御量の予測値」を、つまり、「現在における予測値」を補正する。指令値補正部１１２は、補正後の予測値（補正後予測値）を用いて、制御量が指令値（指令位置）に追従するように位置指令（補正後位置指令）を算出する。指令値補正部１１２は、算出した補正後指令位置を操作量として位置指令部１１３に通知する。
【０２００】
位置指令部１１３は、指令値補正部１１２により算出された前記指令値である補正後指令値を、サーボドライバ１２０（制御対象３０にモーション制御を行う制御系）に、制御対象３０の位置制御に係る指令値として出力する。
【０２０１】
前記の構成によれば、指令値補正部１１２は、補正量算出部１０７の算出した予測補正量を用いて予測値（制御量の予測値）を補正し、補正後の予測値を用いて、制御量が指令値（指令位置）に追従するように位置指令（補正後位置指令）を算出する。
【０２０２】
したがって、コントローラ１０は、前記外乱による制御量の変化を操作量に変換するための演算処理を実行せずに、前記指令値に制御対象３０の制御量が追従するように補正された前記指令値を、サーボドライバ１２０に出力することができるという効果を奏する。
【０２０３】
（コントローラの詳細）
以上に概要を説明したコントローラ１００について、次に、その構成の詳細を、図１２を用いて説明する。
【０２０４】
図１２は、本発明の実施形態２に係るコントローラ１００の要部構成を示すブロック図である。図１２に示すコントローラ１００は、図１に示すコントローラ１０のトルク算出部１０２およびトルク指令部１０３に代えて、指令値補正部１１２および位置指令部１１３を備えている。コントローラ１００のトルク算出部１０２およびトルク指令部１０３以外の構成については、コントローラ１０のトルク算出部１０２およびトルク指令部１０３以外の構成と同様なので、詳細は略記する。
【０２０５】
指令値補正部１１２は、モデル予測制御を実行し、具体的には、制御対象（つまり、サーボドライバ１２０および制御対象３０）の内部モデルを用いて未来の状態を予測し、制御対象３０の未来の出力（制御量の予測値）ができる限り目標値（指令値、つまり指令位置）に近づくように操作量（指令位置）を決定する。つまり、指令値補正部１１２は、前記内部モデルに基づいて未来の出力（制御量）の変化を予測し、出力と目標値とができるだけ近づくように入力（操作量、つまり指令位置）を決定するものである。
【０２０６】
指令値補正部１１２は、制御対象（つまり、制御対象３０）の挙動をモデル化した前記内部モデルを含み、前記内部モデルを用いて、各制御周期において制御対象３０が出力する制御量を予測する。すなわち、指令値補正部１１２は、前記内部モデルを用いて、各制御周期における予測値（制御量の予測値）を算出する。指令値補正部１１２は、算出した予測値（予測制御量）を算出部１０４に通知する。
【０２０７】
指令値補正部１１２は、また、補正量算出部１０７から、予測補正量（具体的には、予測補正量Ｃｄ（ｎ）、ＣＨ（ｎ））を取得する。指令値補正部１１２は、取得した予測補正量を用いて、「或る予測誤差変動周期における制御量の予測値」を補正し、補正後の予測値を用いて、制御量が指令値（指令位置）に追従するように位置指令（補正後位置指令）を算出する。指令値補正部１１２は、算出した補正後指令位置を操作量として位置指令部１１３に通知する。
【０２０８】
位置指令部１１３は、指令値補正部１１２から通知された補正後指令位置（操作量）を、サーボドライバ１２０（制御対象３０にモーション制御を行う制御系）に、制御対象３０の位置／速度制御に係る指令値として出力する。
【０２０９】
〔実施形態３〕
本発明の実施形態３について、図１５〜図２４に基づいて説明すれば、以下のとおりである。なお記載の簡潔性を担保するため、実施形態１および実施形態２とは異なる構成（処理の手順及び処理の内容）のみについて説明する。すなわち、実施形態１および実施形態２で記載された構成等は、本実施形態にもすべて含まれ得る。また、実施形態１および実施形態２で記載した用語の定義も、原則として同じである。
【０２１０】
これまでに実施形態１および実施形態２において説明してきたコントローラ１０およびコントローラ１００は、周期性を持つ外乱による制御量の乱れを抑制するものであった。具体的には、コントローラ１０およびコントローラ１００は、モデル（制御対象３０のモデル、または、サーボドライバ１２０および制御対象３０のモデル）を用いて、指令値に対応する制御対象３０の制御量を予測し、つまり、制御量の予測値を算出する。ここで、コントローラ１０およびコントローラ１００は、制御対象３０の制御量の実測値と制御量の予測値との誤差である予測誤差（モデル予測誤差）ＰＥの時間変化について周期性の有無を判定する。そして、コントローラ１０およびコントローラ１００は、予測誤差ＰＥの時間変化について周期性が有ると判定すると、さらに以下の処理を実行する。すなわち、コントローラ１０およびコントローラ１００は、予測誤差ＰＥの時間変化の周期である予測誤差変動周期について、或る予測誤差変動周期の１つ前の予測誤差変動周期における予測誤差ＰＥを用いて、或る予測誤差変動周期における制御量の予測値を補正する。
【０２１１】
ここで、コントローラ１０およびコントローラ１００は、予測誤差ＰＥの時間変化を示す波形の振幅が時間に対して一定であると想定して、或る予測誤差変動周期における制御量の予測値を、１周期前における予測誤差ＰＥを用いて補正する。そのため、コントローラ１０およびコントローラ１００による制御量の予測値の補正には、以下の事態が発生し得る。
【０２１２】
すなわち、周期的に変化する予測誤差ＰＥを示す波形の振幅が時間（時刻）に対して一定ではない場合、或る予測誤差変動周期の予測誤差ＰＥの大きさは、１周期前（或る予測誤差変動周期の１つ前の予測誤差変動周期）の予測誤差ＰＥの大きさとは一致しない。そのため、コントローラ１０およびコントローラ１００は、「周期的に変化する予測誤差ＰＥ」を示す波形の振幅が時間に対して一定ではない場合、現在における制御量の予測値を、１周期前の予測誤差ＰＥを用いて正確に補正することが困難となる。なお、以下の説明においては、「周期的に大きさが変化する予測誤差ＰＥ」の示す波形を「予測誤差変動波形」と称する。
【０２１３】
図１４は、予測誤差変動波形の振幅が時間（時刻）に対して一定ではない例を示す図である。具体的には、図４の（Ａ）は、振幅が時刻（横軸）に対して減少する予測誤差変動波形の例を示しており、言い換えれば、時刻が進むほど予測誤差変動波形の振幅が小さくなる例（一定の割合で小さくなる例）を示している。図４の（Ｂ）は、振幅が時刻に対して増大する予測誤差変動波形の例を示しており、言い換えれば、時刻が進むほど予測誤差変動波形の振幅が大きくなる例（一定の割合で大きくなる例）を示している。図４の（Ｃ）は、振幅が時刻に対して振動する予測誤差変動波形の例を示しており、言い換えれば、時刻に対して、予測誤差変動波形の振幅が、大きくなったり小さくなったりする例を示している。図４の（Ｃ）の予測誤差変動波形において、「或る周期（＝或る予測誤差変動周期）」における振幅の、その「或る周期」の１つ前の周期における振幅に対する変化の大きさ（振幅変化率）は、一定ではない。
【０２１４】
図１４に示すように、予測誤差変動波形の振幅が時間（時刻）に対して変化する場合、或る予測誤差変動周期の予測誤差ＰＥの大きさは、１周期前（＝或る予測誤差変動周期の１つ前の予測誤差変動周期）の予測誤差ＰＥの大きさとは一致しない。そのため、予測誤差変動波形の振幅が時間に対して変動する場合、或る予測誤差変動周期の予測誤差ＰＥの大きさと、１周期前の予測誤差ＰＥの大きさとが一致すると想定するコントローラ１０およびコントローラ１００の補償効果は、低下する。
【０２１５】
§１．適用例
本発明の実施形態３および実施形態４に係るコントローラ２００およびコントローラ３００は、予測誤差変動波形の振幅が時間（時刻）に対して一定ではない場合にも、現在における制御量の予測値を、１周期前の予測誤差ＰＥを用いて正確に補正することができる。具体的には、コントローラ２００およびコントローラ３００は、予測誤差変動波形における振幅の時間変化（直近の振幅の、１周期前の振幅からの変化）を示す式を算出し、この式と、１周期前の予測誤差ＰＥと、を用いて、現在における制御量の予測値を補正する。
【０２１６】
例えば、コントローラ２００およびコントローラ３００は、予測誤差変動波形における、直近の振幅と、１つ前の周期の振幅と、の比（つまり、後述する「振幅変化率」）を算出し、記憶しておく。そして、コントローラ２００およびコントローラ３００は、１周期前の予測誤差ＰＥから、１周期前にとっての未来の予測誤差ＰＥ（つまり、現在の予測誤差ＰＥ）を予測する際に、振幅変化率を考慮する。コントローラ２００およびコントローラ３００は、予測誤差変動波形の振幅が時間に対して変化する場合であっても、１周期前の予測誤差ＰＥから、振幅変化率を考慮して、現在の予測誤差ＰＥを正確に予測することによって、補償効果を維持し向上させることができる。
【０２１７】
すなわち、コントローラ２００およびコントローラ３００は、予測機構を持つ制御装置（モデル予測制御装置）であって、予測誤差ＰＥの変動（＝時間変化）に周期性があるかを監視する。予測誤差ＰＥの時間変化に周期性を確認した場合、コントローラ２００およびコントローラ３００は、１周期前の予測誤差ＰＥを使用して、現在の制御量の予測を補償する。ここで特に、コントローラ２００およびコントローラ３００は、周期的に変化する予測誤差ＰＥを示す波形（＝予測誤差変動波形）の「振幅の変化」を考慮して、１周期前の予測誤差ＰＥを用いた「現在の制御量の予測の補償」を実行する。コントローラ２００およびコントローラ３００が考慮する「振幅の変化」とは、例えば、「予測誤差変動波形の直近の振幅と、１つ前の周期の振幅と、の比」である。
【０２１８】
これによって、コントローラ２００およびコントローラ３００は、周期性を持つ外乱による制御量の乱れを抑制することができ、特に、予測誤差変動波形の振幅が時間に対して変化する場合であっても、「現在の制御量の予測の補償」を正確に実行することができる。例えば、コントローラ２００およびコントローラ３００は、瞬時外乱をきっかけに発生する低剛性対象の減衰振動を抑制することができ、つまり、機械の制御性能を維持し、それによって製造物の品質を維持することができる。コントローラ２００およびコントローラ３００は、周辺の他の機械から受ける振動、および、加工機械において、ツールやテーブルの加減速により励起される振動の発生する環境下で好適に利用される。
【０２１９】
§２．構成例
（構成の概要）
コントローラ１０およびコントローラ１００は、「制御量の実測値と予測値との誤差である予測誤差ＰＥの時間変化を示す波形（＝予測誤差変動波形）における、振幅の変化」を想定していなかった。例えば、コントローラ１０およびコントローラ１００は、予測誤差変動波形の振幅が、時間が進むにつれて、大きくなったり小さくなったりすることを想定していなかった。
【０２２０】
これに対して、以下に図１５等を参照して説明するコントローラ２００およびコントローラ３００は、「予測誤差変動波形における、振幅の変化」を考慮して、１周期前の予測誤差ＰＥを用いた「現在の制御量の予測の補償」を実行する。コントローラ２００およびコントローラ３００は、「予測誤差変動波形における、振幅の変化」を考慮することにより、予測誤差変動波形の振幅が時間に対して一定でないときにも、制御量を正確に予測することができる。
【０２２１】
以下、図１５を参照して、コントローラ２００の詳細を説明していく。その前に、コントローラ２００についての理解を容易にするため、その概要について以下のように整理しておく。
【０２２２】
コントローラ２００（モデル予測制御装置）は、目標軌道から制御周期ごとに生成された指令値に対応する制御対象３０の制御量を、制御対象３０のモデルを用いて予測するモデル予測制御装置である。コントローラ２００は、制御対象３０の制御量の実測値と前記モデルを用いて予測した制御量の予測値との誤差である予測誤差ＰＥの時間変化について周期性の有無を判定する判定部１０６と、判定部１０６により周期性が有ると判定されると、予測誤差ＰＥの時間変化を示す波形（＝予測誤差変動波形）における振幅の時間変化を示す式（例えば、後述する「振幅変化率ＡＣＲ」）を導出する導出部２０２と、導出部２０２により導出された式と、予測誤差変動波形における現在の周期の１つ前の周期における予測誤差ＰＥと、を用いて、現在の周期における予測値（制御対象３０のモデルを用いて予測した制御量の予測値）を補正するトルク算出部１０２（予測値補正部）と、を備える。
【０２２３】
前記の構成によれば、コントローラ２００は、制御量の実測値と予測値との誤差である予測誤差ＰＥの時間変化について周期性が有ると判定すると、予測誤差ＰＥの時間変化を示す波形である「予測誤差変動波形」における振幅の時間変化を示す式を導出する。そして、コントローラ２００は、導出した式と、予測誤差変動波形における現在の周期の１つ前の周期における予測誤差ＰＥと、を用いて、現在の周期における前記予測値を補正する。
【０２２４】
したがって、コントローラ２００は、外乱のモデルを必要とせずに、幅広い機械および装置に対して、より簡単に外乱補償を適用できるとの効果を奏する。特に、コントローラ２００は、予測誤差ＰＥが周期的に変化する場合に、予測誤差ＰＥの時間変化を示す波形の振幅が時間に対して一定でないときにも、制御対象３０の制御量を正確に予測することができるとの効果を奏する。
【０２２５】
コントローラ２００は、予測誤差変動波形における、現在の周期の１つ前の周期までの、周期ごとの振幅変動率（後述する「振幅変化率ＡＣＲ（ｋ−ｊ）」）を算出する割合算出部２０１をさらに備えている。そして、コントローラ２００において、導出部２０２は、割合算出部２０１により算出された、現在の周期の１つ前の周期までの周期ごとの振幅変動率に、周期ごとの係数（後述する「ｃ０,ｃ１,・・・,ｃｊ」）を乗じた値の和として、予測誤差変動波形における振幅の時間変化を示す式を導出してもよい。
【０２２６】
前記の構成によれば、コントローラ２００は、予測誤差変動波形における、現在の周期の１つ前の周期までの「周期ごとの振幅変動率」を算出する。そして、コントローラ２００は、算出した、現在の周期の１つ前の周期までの「周期ごとの振幅変動率」に、「周期ごとの係数」を乗じた値の和として、予測誤差変動波形における振幅の時間変化を示す式を導出する。
【０２２７】
したがって、コントローラ２００は、前記振幅変動率が時間に対して一定でない場合であっても、現在の周期の１つ前の周期までの「周期ごとの振幅変動率」を用いて、「予測誤差変動波形における振幅の時間変化を示す式」を導出することができるとの効果を奏する。例えば、コントローラ２００は、前記振幅変動率が、時間が進むにつれて、大きくなったり小さくなったりする場合であっても、現在の周期の１つ前の周期までの「周期ごとの振幅変動率」に、「周期ごとの係数」を乗じた値の和として、前記式を導出する。なお、前記「周期ごとの係数」は、例えば最小二乗法等を用いて算出してもよい。
【０２２８】
コントローラ２００において、割合算出部２０１は、（１）予測誤差変動波形における、或る周期における極値である第１極値と、予測誤差変動波形における前記第１極値の半周期前の極値である第２極値と、の差の絶対値と、（２）予測誤差変動波形における前記第１極値の１周期前の極値である第３極値と、予測誤差変動波形における前記第３極値の半周期前の極値である第４極値と、の差の絶対値、または、前記第２極値と前記第３極値との差の絶対値と、の比率を用いて、前記或る周期における振幅変動率を算出してもよい。
【０２２９】
前記の構成によれば、コントローラ２００は、予測誤差変動波形における「或る周期における振幅変動率」を、（１）前記或る周期における極値である第１極値と、予測誤差変動波形における前記第１極値の半周期前の極値である第２極値と、の差の絶対値と、（２）予測誤差変動波形における前記第１極値の１周期前の極値である第３極値と、予測誤差変動波形における前記第３極値の半周期前の極値である第４極値と、の差の絶対値、または、前記第２極値と前記第３極値との差の絶対値と、の比率を用いて算出する。
【０２３０】
例えば、コントローラ２００は、予測誤差変動波形における「或る周期における振幅変動率」を、（１）前記或る周期における極値である第１極値と、予測誤差変動波形における前記第１極値の半周期前の極値である第２極値と、の差の絶対値と、（２）予測誤差変動波形における前記第１極値の１周期前の極値である第３極値と、予測誤差変動波形における前記第３極値の半周期前の極値である第４極値と、の差の絶対値の比率として算出する。
【０２３１】
また、例えば、コントローラ２００は、予測誤差変動波形における「或る周期における振幅変動率」を、（１）前記或る周期における極値である第１極値と、予測誤差変動波形における前記第１極値の半周期前の極値である第２極値と、の差の絶対値と、（２−２）前記第２極値と前記第３極値との差の絶対値と、の比率の２乗として算出する。
【０２３２】
したがって、コントローラ２００は、予測誤差変動波形の周期ごとの振幅変動率を、予測誤差変動波形の極値を用いて容易に算出することができるとの効果を奏する。
【０２３３】
コントローラ２００において、割合算出部２０１は、最新の振幅変動率を、（１）現在までに確定している予測誤差変動波形における最新の極値と、予測誤差変動波形における前記最新の極値の半周期前の極値と、の差の絶対値と、（２）予測誤差変動波形における前記最新の極値の１周期前の極値と、予測誤差変動波形における前記最新の極値の１．５周期前の極値と、の差の絶対値、または、予測誤差変動波形における前記最新の極値の半周期前の極値と、予測誤差変動波形における前記最新の極値の１周期前の極値と、の差の絶対値と、の比率として算出し、導出部２０２は、割合算出部２０１により算出された前記最新の振幅変動率を、予測誤差変動波形における振幅の時間変化を示す式として導出してもよい。
【０２３４】
前記の構成によれば、コントローラ２００は、（１）現在までに確定している予測誤差変動波形における最新の極値と、予測誤差変動波形における前記最新の極値の半周期前の極値と、の差の絶対値と、（２）予測誤差変動波形における前記最新の極値の１周期前の極値と、予測誤差変動波形における前記最新の極値の１．５周期前の極値と、の差の絶対値、または、予測誤差変動波形における前記最新の極値の半周期前の極値と、予測誤差変動波形における前記最新の極値の１周期前の極値と、の差の絶対値と、の比率を算出する。そして、コントローラ２００は、算出した比率を、予測誤差変動波形における振幅の時間変化を示す式とする。
【０２３５】
したがって、コントローラ２００は、前記振幅変動率が時間に対して一定である場合、例えば予測誤差変動波形の振幅が時間に応じて一定の割合で大きくなったり小さくなったりする場合、前記振幅の時間変化を示す式を容易に導出することができるとの効果を奏する。
【０２３６】
（構成の詳細）
図１５は、本発明の実施形態３に係るコントローラ２００の要部構成を示すブロック図である。図１５に示すコントローラ２００は、図１に示すコントローラ１０の構成に加えて、割合算出部２０１および導出部２０２を備えている。
【０２３７】
割合算出部２０１は、判定部１０６が、予測誤差（モデル予測誤差）ＰＥの時間変化について周期性ありと判定すると、「予測誤差ＰＥの時間変化を示す波形（＝予測誤差変動波形）における、所定期間ごとの振幅変動率」を算出する。例えば、割合算出部２０１は、予測誤差変動波形の周期（＝予測誤差変動周期）ごとの振幅変動率を算出する。割合算出部２０１は、算出した「予測誤差変動周期ごとの振幅変動率」を、導出部２０２に通知する。
【０２３８】
導出部２０２は、割合算出部２０１から通知された「所定期間ごと（例えば、予測誤差変動周期ごと）の振幅変動率」を用いて、「予測誤差変動波形における、振幅の時間変化を示す式」を導出する。導出部２０２は、導出した「予測誤差変動波形における、振幅の時間変化を示す式」を補正量算出部１０７に通知する。
【０２３９】
補正量算出部１０７は、導出部２０２により導出された「予測誤差変動波形における、振幅の時間変化を示す式」と、予測誤差変動波形における現在の周期（＝予測誤差変動周期）の１つ前の周期における予測誤差ＰＥと、を用いて、予測補正量を算出する。詳細は後述するが、補正量算出部１０７は、むだ時間ｄ区間、および予測ホライズンＨ区間における、予測誤差ＰＥの変化量を、予測補正量Ｃｄ（ｎ）、ＣＨ（ｎ）として算出する。そして、補正量算出部１０７は、算出した予測補正量（具体的には、予測補正量Ｃｄ（ｎ）、ＣＨ（ｎ））を、トルク算出部１０２に通知する。
【０２４０】
（再確認事項）
なお、既に説明している通り、算出部１０４は、連続する複数の制御周期の各々について予測誤差ＰＥを算出し、極値検出部１０５は、算出部１０４により各々算出された、連続する複数の予測誤差ＰＥの時間変化から、予測誤差ＰＥの極大値および極小値を検出する。そして、判定部１０６は、極値検出部１０５により極大値および極小値の各々が検出された時刻から、予測誤差ＰＥの時間変化について周期性の有無を判定する。例えば、判定部１０６は、極値検出部１０５により複数の極大値の各々が検出された時刻の間隔と、極値検出部１０５により複数の極小値の各々が検出された時刻の間隔との差に基づいて、予測誤差ＰＥの時間変化について周期性の有無を判定する。例えば、判定部１０６は、極値検出部１０５により複数の極大値の各々が検出された時刻の間隔と、極値検出部１０５により複数の極小値の各々が検出された時刻の間隔との差が所定の値（前述のＥＰＳ１）よりも小さいと、予測誤差ＰＥの時間変化について周期性が有ると判定する。
【０２４１】
ここで、極値検出部１０５は、連続する複数の予測誤差ＰＥの時間変化における「予測誤差ＰＥの極大値および極小値」のうち、極大値と極小値との差が所定値よりも大きな「極大値および極小値」のみを検出する。極値検出部１０５は、「極大値と極小値との差」を考慮することによって、極値の検出において、計測ノイズによる極値の誤検出を防ぎ、また、静止摩擦による停止状態での微小な振動を極値として誤検出することを防ぐことができる。
【０２４２】
また、極値検出部１０５は、（１）複数の極大値の間の検出時刻の間隔が所定の周期よりも長くなるように、複数の極大値の各々を検出し、（２）複数の極小値の間の検出時刻の間隔が所定の周期よりも長くなるように、複数の極小値の各々を検出する。極値検出部１０５は、例えば、直前に確定した極大値（極小値）との時間差が周期下限値に満たない山（谷）は、極大値（極小値）ではないとみなしてもよい。コントローラ２００は、複数の極値（極大値たは極小値）が検出された時刻の間隔であって、所定の周期（周期下限値）よりも長い間隔を、周期性の有無を判定する際に用いるので、予測誤差ＰＥの時間変化について周期性の有無を正しく判定することができる。なお、判定部１０６が予測誤差ＰＥの時間変化について周期性の有無を判定する際に用いる周期下限値は、ユーザが指定するものであってもよい。
【０２４３】
また、指令値生成部１０１は、外部（例えば、ユーザ）から目標軌道データ（目標軌道）を受け付け（軌道生成）、受け付けた目標軌道データから制御周期ごとに指令値（指令位置）を生成する。トルク算出部１０２は、モデル予測制御を実行し、制御対象３０の制御量の予測値ができる限り目標値（指令値、つまり指令位置）に近づくように操作量を決定する。すなわち、トルク算出部１０２は先ず、モデルを用いて、各制御周期における予測値（制御量の予測値）を算出し、算出した予測値（予測制御量）を算出部１０４に通知する。また、トルク算出部１０２は、補正量算出部１０７から、予測補正量（具体的には、予測補正量Ｃｄ（ｎ）、ＣＨ（ｎ））を取得する。トルク算出部１０２は、取得した予測補正量を用いて予測値（制御量の予測値）を補正し、補正後の予測値（補正後予測値）を用いて、制御量が指令値（指令位置）に追従するようにトルクを算出する。トルク算出部１０２は、算出したトルクを指令トルク（操作量）としてトルク指令部１０３に通知する。トルク指令部１０３は、トルク算出部１０２の算出したトルクを、サーボドライバ２０に、制御対象３０のトルク制御に係る指令値として出力する。受付部１０８は、周期下限値を指定するユーザ操作を受け付け、ユーザ操作において指定された周期下限値を、判定部１０６（および極値検出部１０５）に通知する。表示制御部１０９は、予測誤差ＰＥ（算出部１０４が算出し、記憶部１１０に格納されている誤差データ１１０１）の経時変化をユーザに表示する。
【０２４４】
§３．動作例
以下、図１６および図１７を用いて、コントローラ２００の実行する処理（特に、外乱補償処理）について説明していく。図１６および図１７を参照して詳細を説明する前に、コントローラ２００の実行する処理についての理解を容易にするため、その概要について以下のように整理しておく。
【０２４５】
コントローラ２００の実行する処理は、目標軌道から制御周期ごとに生成された指令値に対応する制御対象３０の制御量を、制御対象３０のモデルを用いて予測するモデル予測制御装置の制御方法である。コントローラ２００の実行する処理は、制御対象３０の制御量の実測値と前記モデルを用いて予測した制御量の予測値との誤差である予測誤差ＰＥの時間変化について周期性の有無を判定する判定ステップと、前記判定ステップにて周期性が有ると判定されると、予測誤差ＰＥの時間変化を示す波形（＝予測誤差変動波形）における振幅の時間変化を示す式を導出する導出ステップと、前記導出ステップにて導出された式と、予測誤差変動波形における現在の周期の１つ前の周期における予測誤差ＰＥと、を用いて、現在の周期における前記予測値を補正する予測値補正ステップと、を含む。
【０２４６】
前記の構成によれば、前記制御方法は、制御量の実測値と予測値との誤差である予測誤差ＰＥの時間変化について周期性が有ると判定すると、予測誤差変動波形における振幅の時間変化を示す式を導出する。そして、前記制御方法は、導出した式と、予測誤差変動波形における現在の周期の１つ前の周期における予測誤差ＰＥと、を用いて、現在の周期における前記予測値を補正する。
【０２４７】
したがって、前記制御方法は、外乱のモデルを必要とせずに、幅広い機械および装置に対して、より簡単に外乱補償を適用できるとの効果を奏する。特に、前記制御方法は、予測誤差ＰＥが周期的に変化する場合に、予測誤差ＰＥの時間変化を示す波形の振幅が時間に対して一定でないときにも、制御対象３０の制御量を正確に予測することができるとの効果を奏する。
【０２４８】
（振幅変化率が一定の場合）
図１６は、時間に対して振幅変化率が一定である予測誤差変動波形について、コントローラ２００の実行する「制御量の予測値を補正する」処理（＝外乱補償処理）の概要を説明するための図である。図１６には、判定部１０６によって周期性が有ると判定された「予測誤差ＰＥの時間変化」であって、「周期的に大きさが変化する予測誤差ＰＥ」の示す波形（予測誤差変動波形）の振幅が時間に対して一定の割合で変化する「予測誤差ＰＥの時間変化」が示されている。図１６に示すような、振幅変化率が時間に対して一定である予測誤差変動波形に対し、コントローラ２００は、以下の処理を実行する。
【０２４９】
すなわち、補正量算出部１０７は、導出部２０２が算出する振幅変化率ＡＣＲと、予測誤差変動波形における現在の周期（＝予測誤差変動周期）の１つ前の周期における予測誤差ＰＥと、を用いて、現在の周期における予測値を補正するための予測補正量を算出する。以下、詳細を説明する。
【０２５０】
補正量算出部１０７は、先ず、時刻ｎ時点で、最後に確定した「極値時刻Ｐｔｉｍｅ（ｋ）」から「現時刻（＝時刻ｎ）」までの経過時間である経過時間「ｎ−Ｐｔｉｍｅ（ｋ）」を求める。補正量算出部１０７は、次に、現時刻（時刻ｎ時点）から１周期前の時刻を次式で求め、これを予測の起点とする。すなわち、
Ｐｔｉｍｅ（ｋ−２）＋ｎ−Ｐｔｉｍｅ（ｋ）
そして、補正量算出部１０７は、上の式から求めた時刻（＝時刻ｎ時点から１周期前の時刻）から、むだ時間ｄ区間、および予測ホライズンＨ区間における、予測誤差ＰＥの変化量を、予測補正量Ｃｄ（ｎ）、ＣＨ（ｎ）として求める。すなわち、
【０２５１】
【数１７】
2019139590.tif 000019
【０２５２】
言い換えれば、
【０２５３】
【数１８】
2019139590.tif 000020
【０２５４】
とすると、数式Ｐの予測補正量Ｃｄ（ｎ）、ＣＨ（ｎ）の各々は、数式ＱのＣｄ’（ｎ）、ＣＨ’（ｎ）の各々に、予測誤差ＰＥの時間変化を示す波形（＝予測誤差変動波形）における振幅の時間変化を示す式である振幅変化率ＡＣＲを乗じた値である。
【０２５５】
ここで、コントローラ１０およびコントローラ１００が算出した予測補正量Ｃｄ（ｎ）、ＣＨ（ｎ）の各々は、数式ＱのＣｄ’（ｎ）、ＣＨ’（ｎ）の各々に等しい。コントローラ２００は、コントローラ１０およびコントローラ１００が考慮しなかった「予測誤差変動波形における振幅の時間変化」を考慮して、予測誤差変動波形における現在の周期の１つ前の周期における予測誤差ＰＥを用いて、現在の周期における予測値を補正する。具体的には、コントローラ２００の補正量算出部１０７は、予測補正量Ｃｄ（ｎ）、ＣＨ（ｎ）を、数式ＱのＣｄ’（ｎ）、ＣＨ’（ｎ）と、振幅変化率ＡＣＲと、を考慮した値として算出する。例えば、コントローラ２００の補正量算出部１０７は、予測補正量Ｃｄ（ｎ）、ＣＨ（ｎ）の各々を、数式ＱのＣｄ’（ｎ）、ＣＨ’（ｎ）の各々に振幅変化率ＡＣＲを乗じた値として算出する。
【０２５６】
振幅変化率ＡＣＲは、導出部２０２によって算出される。すなわち、判定部１０６によって「予測誤差ＰＥの時間変化に周期性がある」と判定されると、導出部２０２は、割合算出部２０１により算出された「予測誤差変動周期ごとの振幅変動率」を用いて、振幅変化率ＡＣＲを算出する。導出部２０２は、算出した振幅変化率ＡＣＲを、補正量算出部１０７に通知する。ここで、予測誤差変動波形の振幅変化率が時間に対して一定である場合、導出部２０２は、割合算出部２０１によって算出された「最新の振幅変動率」を、振幅変化率ＡＣＲとして、補正量算出部１０７に通知する。振幅変化率ＡＣＲ（＝割合算出部２０１によって算出される「最新の振幅変動率」）は、
【０２５７】
【数１９】
2019139590.tif 000021
【０２５８】
として算出される。
【０２５９】
（振幅変化率が変動する場合）
図１７は、時間に対して振幅変化率が一定でない予測誤差変動波形について、図１５のコントローラの実行する、制御量の予測値を補正する処理（＝外乱補償処理）の概要を説明するための図である。図１７には、判定部１０６によって周期性が有ると判定された「予測誤差ＰＥの時間変化」であって、「周期的に大きさが変化する予測誤差ＰＥ」の示す波形（予測誤差変動波形）の振幅変化率が時間に対して一定でない「予測誤差ＰＥの時間変化」が示されている。
【０２６０】
なお、図１６と図１７とは、予測誤差変動波形の振幅が時間（時刻）に対して一定ではない点において共通している。ただし、図１６の予測誤差変動波形において振幅変化率は時間に対して一定であり、つまり、図１６の予測誤差変動波形において、予測誤差変動波形の振幅は、時間に応じて（＝時刻が進むにつれて）、一定の割合で変化する（一定の割合で、大きくなり、または小さくなる）。これに対して、図１７の予測誤差変動波形において振幅変化率は時間に対して一定でなく、つまり、図１７の予測誤差変動波形において、予測誤差変動波形の振幅は、時間に応じて（＝時刻が進むにつれて）、大きくなったり小さくなったりして振動する。
【０２６１】
数式Ｒの振幅変化率ＡＣＲは、「判定部１０６によって周期性が有ると判定された「予測誤差ＰＥの時間変化」の示す波形（予測誤差変動波形）の振幅変化率が、時間に対して一定である」場合を想定したものだが、振幅変化率が時間に対して一定であるとは限らない。そこで、コントローラ２００は、図１７に示すような、振幅変化率が時間に対して一定でない予測誤差変動波形についても、１周期前の予測誤差ＰＥを用いて、現在の周期における予測値を補正するため、以下に示す振幅変化率ＡＣＲを算出する。
【０２６２】
すなわち、コントローラ２００は、図１７に示すように予測誤差変動波形の振幅変化率が変動することを想定して、数式Ｐにおける振幅変化率ＡＣＲを、過去の振幅変化率から算出する。具体的には、ｊ＝０，１，２，・・・として、コントローラ２００の導出部２０２は、数式Ｐにおける振幅変化率ＡＣＲについて、
【０２６３】
【数２０】
2019139590.tif 000022
【０２６４】
とする。
【０２６５】
ここで、
【０２６６】
【数２１】
2019139590.tif 000023
【０２６７】
とする。
【０２６８】
予測誤差変動周期ごとの振幅変動率であるＡＣＲ（ｋ−ｊ）は、割合算出部２０１によって算出され、割合算出部２０１は、算出した「予測誤差変動周期ごとの振幅変動率であるＡＣＲ（ｋ−ｊ）」を、導出部２０２に通知する。導出部２０２は、割合算出部２０１により算出された「予測誤差変動周期ごとの振幅変動率であるＡＣＲ（ｋ−ｊ）」に、周期ごとの係数ｃ０,ｃ１,・・・,ｃｊを乗じた値の和として、「数式Ｐにおける振幅変化率ＡＣＲ」として導出する。
【０２６９】
ここで、導出部２０２は、予測誤差変動波形の振幅変化率が周期的に変動する場合、適当なｊを決めて、係数ｃ０,ｃ１,・・・,ｃｊを、最小２乗法などにより決定してもよい。すなわち、導出部２０２は、数式Ｐに示すように、「周期ごとの振幅変動率（ＡＣＲ（ｋ−ｊ））に、周期ごとの係数ｃ０,ｃ１,・・・,ｃｊを乗じた値」の和として、振幅変化率ＡＣＲを算出してもよい。
【０２７０】
ここで、振幅変化率の変動を考慮する最も簡易な方法として、ｃ０およびｃ１のみを使用して、２回前から前回への振幅変化率の変化量のα倍が、前回から今回への振幅変化率の変化量であると仮定して、次式のようにしてもよい。言い換えれば、導出部２０２は、予測誤差変動波形における「現在の周期（＝予測誤差変動周期）の２周期前の振幅変化率（ＡＣＲ（ｋ−１））から、現在の周期の１周期前の振幅変化率（ＡＣＲ（ｋ））への変化量」のα倍が、「現在の周期の１周期前の振幅変化率（ＡＣＲ（ｋ））から、今回（＝現在の周期）の振幅変化率ＡＣＲへの変化量」であると仮定してもよい。この場合、振幅変化率ＡＣＲは、
【０２７１】
【数２２】
2019139590.tif 000024
【０２７２】
となる。
【０２７３】
ここで、数式Ｕは、数式Ｓについて、
ｃ０＝１＋α,
ｃ１＝−α,
ｃｊ＝０（ｊ≧２）
である場合に相当する。
【０２７４】
同様に、数式Ｒ（つまり、予測誤差変動波形の振幅変化率が一定である場合の、振幅変化率ＡＣＲ）は、数式Ｓについて、
ｃ０＝１,
ｃｊ＝０（ｊ≧１）
である場合に相当する。
【０２７５】
なお、周期ごとの振幅変化率ＡＣＲ（ｋ−ｊ）は、より短い期間のデータから、次のように算出してもよい。すなわち、
【０２７６】
【数２３】
2019139590.tif 000025
【０２７７】
としてもよい。
【０２７８】
数式Ｔにおいて、周期ごとの振幅変化率ＡＣＲ（ｋ−ｊ）は、（１）「予測誤差変動波形における、或る予測誤差変動周期における極値である第１極値（ＰＥ(Ptime(k-2j))）と、第１極値の半周期前の極値である第２極値（ＰＥ(Ptime(k-2j-1))）と、の差の絶対値」と、（２）「第１極値の１周期前の極値である第３極値（ＰＥ(Ptime(k-2(j+1)))）と、第３極値の半周期前の極値である第４極値（ＰＥ(Ptime(k-2(j+1)-1))）と、の差の絶対値」と、の比率として定義される。
【０２７９】
これに対して、数式Ｖにおいて、周期ごとの振幅変化率ＡＣＲ（ｋ−ｊ）は、（１）「予測誤差変動波形における、或る予測誤差変動周期における極値である第１極値（ＰＥ(Ptime(k-2j))）と、第１極値の半周期前の極値である第２極値（ＰＥ(Ptime(k-2j-1))）と、の差の絶対値」と、（２）「第２極値（ＰＥ(Ptime(k-2j-1))）と第３極値（ＰＥ(Ptime(k-2j-2))）との差の絶対値」と、の比率の２乗として定義される。
【０２８０】
なお、数式Ｒについても同様に、（１）「現時刻（時刻ｎ時点）で最後に確定した『極値時刻Ｐｔｉｍｅ（ｋ）』における極値（ＰＥ(Ptime(k))）と、『極値時刻Ｐｔｉｍｅ（ｋ）』の半周期前の極値（ＰＥ(Ptime(k-1))）と、の差の絶対値」と、（２）「『極値時刻Ｐｔｉｍｅ（ｋ）』の１周期前の極値（ＰＥ(Ptime(k-2))）と、『極値時刻Ｐｔｉｍｅ（ｋ）』の１．５周期前の極値（ＰＥ(Ptime(k-3))）と、の差の絶対値」と、の比率であることは必須ではない。
【０２８１】
数式Ｒは、（１）「現時刻（時刻ｎ時点）で最後に確定した『極値時刻Ｐｔｉｍｅ（ｋ）』における極値（ＰＥ(Ptime(k))）と、『極値時刻Ｐｔｉｍｅ（ｋ）』の半周期前の極値（ＰＥ(Ptime(k-1))）と、の差の絶対値」と、（２）「『極値時刻Ｐｔｉｍｅ（ｋ）』の半周期前の極値（ＰＥ(Ptime(k-1))）と、『極値時刻Ｐｔｉｍｅ（ｋ）』の１周期前の極値（ＰＥ(Ptime(k-2))）と、の差の絶対値」と、の比率として算出されてもよい。
【０２８２】
（一定の割合で徐々に大きくなる外乱に対する外乱補償の効果）
図１８は、コントローラ２００による制御処理の実行中に印加する、「連続的に増加する正弦波状の外乱（つまり、時間に対して一定の割合で振幅が大きくなる、周期性のある外乱）」を示す図である。具体的には、図１８は、「時刻０ｓ〜１ｓの全期間にわたって、周波数５０Ｈｚ、振幅が０％から１００％まで連続的に増加する正弦波状の外乱」を示している。
【０２８３】
図１９は、制御対象（機械）を「共振のない１慣性系」として、コントローラ２００の制御処理の実行中に、図１８に示した外乱を印加した場合の、コントローラ２００による外乱補償処理の効果等を説明するための図である。
【０２８４】
図１９の（Ａ）は、図１８に示した外乱を印加した場合に、コントローラ２００が外乱補償を実行しないときの制御結果を示しており、具体的には、上から「位置、位置偏差、予測誤差、トルク（縦軸）の、時間（横軸）に対する変化」を示している。なお、「外乱補償」とは、周期性のある外乱について、「『外乱の周期（つまり、予測誤差変動周期）における、現在より前（過去）において算出した予測誤差』を用いて、現在（現時刻）の制御量予測値を補正する」処理を指す。
【０２８５】
これに対し、図１９の（Ｂ）は、図１８に示した外乱を印加した場合に、コントローラ２００が外乱補償を実行するときの制御結果であって、「予測誤差変動波形における、振幅の変化」を考慮しないときの制御結果を示している。図１９の（Ｂ）における４つの図は、上から「位置、位置偏差、予測誤差、トルク（縦軸）の、時間（横軸）に対する変化」を示している。
【０２８６】
さらに、図１９の（Ｃ）は、図１８に示した外乱を印加した場合に、コントローラ２００が外乱補償を実行するときの制御結果であって、「予測誤差変動波形における、振幅の変化」を考慮したときの制御結果を示している。図１９の（Ｃ）における４つの図は、上から「位置、位置偏差、予測誤差、トルク（縦軸）の、時間（横軸）に対する変化」を示している。図１９の（Ｂ）と（Ｃ）とは、コントローラ２００が外乱補償を実行する点で共通するが、コントローラ２００は、外乱補償の実行に際して、「予測誤差変動波形における、振幅の変化」を、（Ｂ）においては考慮しないのに対し、（Ｃ）においては考慮する。
【０２８７】
図１９の（Ｂ）に示されているように、コントローラ２００は、外乱補償を実行することにより、図１８に示した外乱を印加した場合であっても、図１９の（Ａ）に示されている位置偏差の値と比べて極めて小さな値に、位置偏差を抑制することができる。
【０２８８】
さらに、図１９の（Ｃ）に示されているように、コントローラ２００は、外乱補償を、「予測誤差変動波形における、振幅の変化」を考慮して実行することにより、位置偏差の抑制効果を大幅に向上させることができる。すなわち、図１９の（Ｂ）において定常的に残存していた位置偏差は、図１９の（Ｃ）においては、「０．１ｓｅｃ」頃から以降はほとんど「０」に抑制されている。
【０２８９】
（一定の割合で影響が徐々に小さくなる外乱に対する外乱補償の効果）
図２０は、コントローラ２００による制御処理の実行中に印加する、図１８に示した外乱とは別の外乱を示す図である。具体的には、図２０は、「『２慣性系の制御対象（機械）であって、ベース部と先端部との共振周波数が４Ｈｚである制御対象』の先端部に、時刻２ｓに印加する、（トルクの大きさに対して）大きさ１％、時間１０ｍｓのパルス外乱」を示している。図２０の（Ａ）と（Ｂ）とは、時間（横軸）のスケールが異なるだけであり、同じ「時刻２ｓに印加する、大きさ１％、時間１０ｍｓのパルス外乱」外乱を示している。
【０２９０】
図２１は、図２０に示した外乱を印加した場合の、コントローラ２００が実行する外乱補償処理の効果等を説明するための図である。具体的には、図２１は、前述の制御対象（機械）の先端部の位置をフィードバックして、指令位置に追従するように制御処理を実行するコントローラ２００に、図２０に示した外乱を印加した場合の、コントローラ２００による外乱補償処理の効果等を示している。
【０２９１】
図２１の（Ａ）は、図２０に示した外乱を印加した場合に、コントローラ２００が外乱補償を実行しないときの制御結果を示しており、具体的には、上から「位置、位置偏差、予測誤差、トルク（縦軸）の、時間（横軸）に対する変化」を示している。
【０２９２】
これに対し、図２１の（Ｂ）は、図２０に示した外乱を印加した場合に、コントローラ２００が外乱補償を実行するときの制御結果であって、「予測誤差変動波形における、振幅の変化」を考慮しないときの制御結果を示している。図２１の（Ｂ）における４つの図は、上から「位置、位置偏差、予測誤差、トルク（縦軸）の、時間（横軸）に対する変化」を示している。
【０２９３】
さらに、図２１の（Ｃ）は、図２０に示した外乱を印加した場合に、コントローラ２００が外乱補償を実行するときの制御結果であって、「予測誤差変動波形における、振幅の変化」を考慮したときの制御結果を示している。図２１の（Ｃ）における４つの図は、上から「位置、位置偏差、予測誤差、トルク（縦軸）の、時間（横軸）に対する変化」を示している。図２１の（Ｂ）と（Ｃ）とは、コントローラ２００が外乱補償を実行する点で共通するが、コントローラ２００は、外乱補償の実行に際して、「予測誤差変動波形における、振幅の変化」を、（Ｂ）においては考慮しないのに対し、（Ｃ）においては考慮する。
【０２９４】
図２１の（Ｂ）に示されているように、コントローラ２００は、外乱補償を実行することにより、図２０に示した外乱を印加した場合であっても、図２１の（Ａ）に示されている位置偏差と比べて早期に、位置偏差を抑制することができる。
【０２９５】
さらに、図２１の（Ｃ）に示されているように、コントローラ２００は、外乱補償を、「予測誤差変動波形における、振幅の変化」を考慮して実行することにより、位置偏差の抑制効果を大幅に向上させることができる。すなわち、図２１の（Ｂ）において位置偏差は、「２．５ｓｅｃ」以降にも振動しながら残存しているのに対し、図２１の（Ｃ）において位置偏差は、「２．５ｓｅｃ」以降、ほとんど「０」に抑制されている。
【０２９６】
（振幅が周期的に変化する外乱に対する外乱補償の効果）
図２２は、コントローラ２００による制御処理の実行中に印加する、図１８および図２０に示した外乱とは別の外乱を示す図である。具体的には、図２２は、「時刻０ｓ〜２ｓの全期間にわたって、周波数５０Ｈｚ、振幅が５０％から１００％の間を周波数１Ｈｚで変動する、正弦波状の外乱」を示している。
【０２９７】
図２３は、制御対象（機械）を「共振のない１慣性系」として、コントローラ２００の制御処理の実行中に、図２２に示した外乱を印加した場合の、コントローラ２００による外乱補償処理の効果等を説明するための図である。図２３の（Ａ）は、図２２に示した外乱を印加した場合に、コントローラ２００が外乱補償を実行しないときの制御結果を示しており、具体的には、上から「位置、位置偏差、予測誤差、トルク（縦軸）の、時間（横軸）に対する変化」を示している。
【０２９８】
これに対し、図２３の（Ｂ）は、図２２に示した外乱を印加した場合に、コントローラ２００が外乱補償を実行するときの制御結果であって、「予測誤差変動波形における、振幅の変化」を考慮しないときの制御結果を示している。図２３の（Ｂ）における４つの図は、上から「位置、位置偏差、予測誤差、トルク（縦軸）の、時間（横軸）に対する変化」を示している。
【０２９９】
さらに、図２３の（Ｃ）は、図２２に示した外乱を印加した場合に、コントローラ２００が外乱補償を実行するときの制御結果であって、「予測誤差変動波形における、振幅の変化」を、「振幅変化率が一定」と仮定して考慮したときの制御結果を示している。具体的には、コントローラ２００が、「α＝０」として数式Ｕから算出した「振幅変化率ＡＣＲ」と、数式Ｐと、を用いて、外乱補償を実行した場合の制御結果を示している。図２３の（Ｃ）における４つの図は、上から「位置、位置偏差、予測誤差、トルク（縦軸）の、時間（横軸）に対する変化」を示している。図２３の（Ｂ）と（Ｃ）とは、コントローラ２００が外乱補償を実行する点で共通するが、コントローラ２００は、外乱補償の実行に際して、「予測誤差変動波形における、振幅の変化」を、（Ｂ）においては考慮しないのに対し、（Ｃ）においては考慮する。
【０３００】
図２３の（Ｂ）に示されているように、コントローラ２００は、外乱補償を実行することにより、図２２に示した外乱を印加した場合であっても、図２３の（Ａ）に示されている位置偏差の値と比べて極めて小さな値に、位置偏差を抑制することができる。
【０３０１】
さらに、図２３の（Ｃ）に示されているように、コントローラ２００は、外乱補償を、「予測誤差変動波形における、振幅の変化」を考慮して実行することにより、位置偏差の抑制効果を大幅に向上させることができる。すなわち、図２３の（Ｃ）における位置偏差は、図２３の（Ｂ）における位置偏差と比べて、さらに小さな値に抑制されている。
【０３０２】
図２４は、図２２に示した外乱を印加した場合に、「予測誤差変動波形における、振幅の変化」を考慮するコントローラ２００が、「振幅変化率が一定である」と仮定したときと、「振幅変化率が変動する」と仮定したときと、の制御結果の違いを示している。図２４の（Ａ）は、図２３の（Ｃ）と同一であり、すなわち、「振幅変化率が一定」と仮定して、コントローラ２００が、「α＝０」として数式Ｕから算出した「振幅変化率ＡＣＲ」と、数式Ｐと、を用いて、外乱補償を実行した場合の制御結果を示している。これに対して、図２４の（Ｂ）は、「振幅変化率が変動する」と仮定して、コントローラ２００が、「α＝０．５」として数式Ｕから算出した「振幅変化率ＡＣＲ」と、数式Ｐと、を用いて、外乱補償を実行した場合の制御結果を示している。
【０３０３】
図２４の（Ｂ）に示されているように、コントローラ２００は、「振幅変化率が変動する」と仮定した上で、「予測誤差変動波形における、振幅の変化」を考慮して、外乱補償を実行することにより、図２４の（Ａ）に比べて位置偏差の抑制効果をさらに向上させる。すなわち、図２４の（Ｂ）における位置偏差は、図２４の（Ａ）における位置偏差と比べて、さらに小さな値に抑制されており、また、図２４の（Ｂ）における位置偏差の変動を示す波形は、図２４の（Ａ）における位置偏差の変動を示す波形に比べて穏やかである。
【０３０４】
図２３および図２４に示されるように、移動開始直後を除いた期間では、振幅変化率の変動を考慮した補償が位置偏差の振幅を最も抑制できている。つまり、外乱の振幅が周期的に変化する場合、コントローラ２００は、「振幅変化率が変化する予測誤差変動波形」における「振幅の変化」を考慮して外乱補償を実行することによって、位置偏差を最もよく抑制することができる。
【０３０５】
〔実施形態４〕
本発明の実施形態４について、図２５に基づいて説明する。なお記載の簡潔性を担保するため、実施形態１から実施形態３までに説明した構成とは異なる構成（処理の手順及び処理の内容）のみについて説明する。すなわち、実施形態１から実施形態３までに記載された構成等は、本実施形態にもすべて含まれ得る。また、実施形態１から実施形態３までに記載した用語の定義も、原則として同じである。
【０３０６】
以下に図２５を参照して説明するコントローラ３００は、コントローラ２００と同様に、周期的に変化する予測誤差ＰＥを示す波形（＝予測誤差変動波形）の「振幅の変化」を考慮して、１周期前の予測誤差ＰＥを用いた「現在の制御量の予測の補償」を実行する。これにより、コントローラ３００は、周期性を持つ外乱による制御量の乱れを抑制することができ、特に、予測誤差変動波形の振幅が時間に対して変化する場合であっても、「現在の制御量の予測の補償」を正確に実行することができる。
【０３０７】
すなわち、コントローラ３００（モデル予測制御装置）は、目標軌道から制御周期ごとに生成された指令値に対応する制御対象３０の制御量を、制御対象３０のモデルを用いて予測するモデル予測制御装置である。コントローラ３００は、制御対象３０の制御量の実測値と前記モデルを用いて予測した制御量の予測値との誤差である予測誤差ＰＥの時間変化について周期性の有無を判定する判定部１０６と、判定部１０６により周期性が有ると判定されると、予測誤差ＰＥの時間変化を示す波形（＝予測誤差変動波形）における振幅の時間変化を示す式（例えば、「振幅変化率ＡＣＲ」）を導出する導出部２０２と、導出部２０２により導出された式と、予測誤差変動波形における現在の周期の１つ前の周期における予測誤差ＰＥと、を用いて、現在の周期における前記予測値を補正する指令値補正部１１２（予測値補正部）と、を備える。
【０３０８】
前記の構成によれば、コントローラ３００は、制御量の実測値と予測値との誤差である予測誤差ＰＥの時間変化について周期性が有ると判定すると、予測誤差変動波形における振幅の時間変化を示す式を導出する。そして、コントローラ３００は、導出した式と、予測誤差変動波形における現在の周期の１つ前の周期における予測誤差ＰＥと、を用いて、現在の周期における前記予測値を補正する。
【０３０９】
したがって、コントローラ３００は、外乱のモデルを必要とせずに、幅広い機械および装置に対して、より簡単に外乱補償を適用できるとの効果を奏する。特に、コントローラ３００は、予測誤差ＰＥが周期的に変化する場合に、予測誤差変動波形の振幅が時間に対して一定でないときにも、制御対象３０の制御量を正確に予測することができるとの効果を奏する。
【０３１０】
図２５は、本発明の実施形態４に係るコントローラ３００の要部構成を示すブロック図である。図２５に示すコントローラ３００は、図１２に示すコントローラ１００の構成に加えて、割合算出部２０１および導出部２０２を備えている。コントローラ３００は、コントローラ２００と同様に、予測誤差変動波形の振幅が時間（時刻）に対して一定ではない場合にも、現在における制御量の予測値を、１周期前の予測誤差ＰＥを用いて正確に補正しようとする。例えば、コントローラ３００は、予測誤差変動波形における振幅の時間変化を示す式を算出し、この式と、１周期前の予測誤差ＰＥと、を用いて、現在における制御量の予測値を補正する。
【０３１１】
コントローラ３００の割合算出部２０１および導出部２０２は、コントローラ２００の割合算出部２０１および導出部２０２と同様であり、割合算出部２０１は、「予測誤差変動波形における、所定期間ごと（例えば、予測誤差変動周期ごと）の振幅変動率」を算出する。また、導出部２０２は、割合算出部２０１から通知された「所定期間ごとの振幅変動率」を用いて、「予測誤差変動波形における、振幅の時間変化を示す式」を導出する。補正量算出部１０７は、導出部２０２により導出された「予測誤差変動波形における、振幅の時間変化を示す式」と、予測誤差変動波形における現在の周期（＝予測誤差変動周期）の１つ前の周期における予測誤差ＰＥと、を用いて、現在の周期における予測値を補正するための予測補正量を算出する。具体的には、前述のように補正量算出部１０７は、むだ時間ｄ区間、および予測ホライズンＨ区間における、予測誤差ＰＥの変化量を、予測補正量Ｃｄ（ｎ）、ＣＨ（ｎ）として算出する。特に、補正量算出部１０７は、導出部２０２が算出する振幅変化率ＡＣＲと、予測誤差変動波形における現在の周期（＝予測誤差変動周期）の１つ前の周期における予測誤差ＰＥと、を用いて、予測補正量Ｃｄ（ｎ）、ＣＨ（ｎ）を算出する。そして、補正量算出部１０７は、算出した予測補正量Ｃｄ（ｎ）、ＣＨ（ｎ）を、指令値補正部１１２に通知する。
【０３１２】
以上の説明からも明らかな通り、コントローラ３００は、コントローラ２００のトルク算出部１０２およびトルク指令部１０３に代えて、指令値補正部１１２および位置指令部１１３を備え、それ以外の点においては、コントローラ２００と同様である。
【０３１３】
指令値補正部１１２は、モデル予測制御を実行し、制御対象３０の制御量の予測値ができる限り目標値（指令値、つまり指令位置）に近づくように操作量（指令位置）を決定する。指令値補正部１１２は先ず、モデルを用いて、各制御周期において制御対象３０が出力する制御量を予測し、予測した制御量（＝制御量の予測値、予測制御量）を算出部１０４に通知する。指令値補正部１１２は、また、補正量算出部１０７から、予測補正量（具体的には、予測補正量Ｃｄ（ｎ）、ＣＨ（ｎ））を取得する。指令値補正部１１２は、取得した予測補正量を用いて予測値（制御量の予測値）を補正し、補正後の予測値（補正後予測値）を用いて、制御量が指令値（指令位置）に追従するように位置指令（補正後位置指令）を算出する。指令値補正部１１２は、算出した補正後指令位置を操作量として位置指令部１１３に通知する。位置指令部１１３は、指令値補正部１１２から通知された補正後指令位置（操作量）を、サーボドライバ１２０（制御対象３０にモーション制御を行う制御系）に、制御対象３０の位置制御／速度制御に係る指令値として出力する。コントローラ３００は、外乱による制御量の変化を操作量に変換するための演算処理を実行せずに、指令値に制御対象３０の制御量が追従するように補正した指令値（補正後指令位置）を、サーボドライバ１２０に出力することができる。
【０３１４】
§４．変形例
これまで、導出部２０２が、「予測誤差変動波形における、振幅の時間変化を示す式」を、割合算出部２０１が「予測誤差変動波形において隣り合う極値間の差の絶対値」を用いて算出した「予測誤差変動周期ごとの振幅変化率」から、導出する例を説明してきた。しかしながら、「予測誤差変動周期ごとの振幅変化率」が、「予測誤差変動波形において隣り合う極値間の差の絶対値」を用いて算出されることは必須ではなく、「予測誤差変動周期ごとの振幅変化率」は、既知の数学的手法を用いて算出されてもよい。
【０３１５】
〔ソフトウェアによる実現例〕
コントローラ１０、１００、２００および３００の制御ブロック（特に、指令値生成部１０１、トルク算出部１０２、トルク指令部１０３、算出部１０４、極値検出部１０５、判定部１０６、補正量算出部１０７、受付部１０８、表示制御部１０９、指令値補正部１１２、位置指令部１１３、割合算出部２０１、および導出部２０２）は、集積回路（ＩＣチップ）等に形成された論理回路（ハードウェア）によって実現してもよいし、ＣＰＵ（Central Processing Unit）を用いてソフトウェアによって実現してもよい。
【０３１６】
後者の場合、コントローラ１０、１００、２００および３００は、各機能を実現するソフトウェアであるプログラムの命令を実行するＣＰＵ、上記プログラムおよび各種データがコンピュータ（またはＣＰＵ）で読み取り可能に記録されたＲＯＭ（Read Only Memory）または記憶装置（これらを「記録媒体」と称する）、上記プログラムを展開するＲＡＭ（Random Access Memory）などを備えている。そして、コンピュータ（またはＣＰＵ）が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体（通信ネットワークや放送波等）を介して上記コンピュータに供給されてもよい。なお、本発明は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【０３１７】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【０３１８】
３０  制御対象
２００  コントローラ（モデル予測制御装置）
３００  コントローラ（モデル予測制御装置）
１０２  トルク算出部（予測値補正部）
１０６  判定部
１１２  指令値補正部（予測値補正部）
２０１  割合算出部
２０２  導出部
ＡＣＲ  振幅変化率（振幅の時間変化を示す式）
ＰＥ    予測誤差
【図１】
2019139590.tif 000026
【図２】
2019139590.tif 000027
【図３】
2019139590.tif 000028
【図４】
2019139590.tif 000029
【図５】
2019139590.tif 000030
【図６】
2019139590.tif 000031
【図７】
2019139590.tif 000032
【図８】
2019139590.tif 000033
【図９】
2019139590.tif 000034
【図１０】
2019139590.tif 000035
【図１１】
2019139590.tif 000036
【図１２】
2019139590.tif 000037
【図１３】
2019139590.tif 000038
【図１４】
2019139590.tif 000039
【図１５】
2019139590.tif 000040
【図１６】
2019139590.tif 000041
【図１７】
2019139590.tif 000042
【図１８】
2019139590.tif 000043
【図１９】
2019139590.tif 000044
【図２０】
2019139590.tif 000045
【図２１】
2019139590.tif 000046
【図２２】
2019139590.tif 000047
【図２３】
2019139590.tif 000048
【図２４】
2019139590.tif 000049
【図２５】
2019139590.tif 000050