(57)【要約】【課題】制御対象の特性変動を容易に検出できる制御装置を提供する。【解決手段】制御装置は、制御対象の出力の計測値を取得するための取得部と、制御対象の出力の振動に関与する制御対象の物理量（例えば振動周波数）の値の変動を検出するための検出部とを備える。検出部は、物理量の互いに異なる値を用いて作成された複数の制御対象モデルの各々について、当該制御対象モデルを用いて制御対象の出力の予測値を演算する。さらに、検出部は、計測値と複数の制御対象モデルそれぞれの予測値との予測誤差の比較結果に基づいて、物理量の値の変動を検出する。【選択図】図３
2020129292.tif 000002
【特許請求の範囲】
【請求項１】
制御対象を制御する制御装置であって、
前記制御対象の出力の計測値を取得するための取得部と、
前記制御対象の出力の振動に関与する前記制御対象の物理量の値の変動を検出するための検出部とを備え、
前記検出部は、
前記物理量の互いに異なる値を用いて作成された複数の制御対象モデルの各々について、当該制御対象モデルを用いて前記制御対象の出力の予測値を演算し、
前記計測値と前記複数の制御対象モデルそれぞれの前記予測値との誤差の比較結果に基づいて、前記物理量の値の変動を検出する、制御装置。
【請求項２】
前記物理量の値に応じて設定された関数によって規定されるモデルを用いたモデル予測制御により、前記制御対象を制御するための操作量を計算するための制御部をさらに備え、
前記検出部は、前記物理量の値の変動を検出した場合に、前記物理量の変動後の値を推定し、
前記関数は、前記変動後の値に応じて更新される、請求項１に記載の制御装置。
【請求項３】
前記物理量の値に応じて設定された関数によって規定されるフィルタを用いて、目標軌道から生成される指令値を補正し、補正後の指令値を前記制御対象に出力する補正部をさらに備え、
前記検出部は、前記物理量の値の変動を検出した場合に、前記物理量の変動後の値を推定し、
前記関数は、前記変動後の値に応じて更新される、請求項１に記載の制御装置。
【請求項４】
前記制御装置は、前記変動後の値に応じて前記関数を更新する指示を受け付けるためのヒューマンマシンインターフェイスと接続され、
前記関数は、前記ヒューマンマシンインターフェイスが前記指示を受け付けたときに更新される、請求項２または３に記載の制御装置。
【請求項５】
前記検出部は、前記複数の制御対象モデルのうち、前記誤差の変化幅が最小の制御対象モデルに対応する前記物理量の値を前記変動後の値として推定する、請求項２から４のいずれか１項に記載の制御装置。
【請求項６】
前記検出部は、前記複数の制御対象モデルのうち前記誤差の変化幅が最小の制御対象モデルに対応する前記物理量の値と、前記複数の制御対象モデルのうち前記誤差の変化幅が２番目に小さい制御対象モデルに対応する前記物理量の値との間の値を、前記変動後の値として推定する、請求項２から４のいずれか１項に記載の制御装置。
【請求項７】
前記物理量は、振動周波数、質量、イナーシャ、摩擦係数およびばね定数の少なくとも１つを含む、請求項１から６のいずれか１項に記載の制御装置。
【請求項８】
制御対象を制御する制御装置を実現するための制御プログラムであって、
前記制御プログラムは、コンピュータに、
前記制御対象の出力の計測値を取得するステップと、
前記制御対象の出力の振動に関与する前記制御対象の物理量の値の変動を検出するステップとを実行させ、
前記検出するステップは、
前記物理量の互いに異なる値を用いて作成された複数の制御対象モデルの各々について、当該制御対象モデルを用いて前記制御対象の出力の予測値を演算するステップと、
前記計測値と前記複数の制御対象モデルそれぞれの前記予測値との誤差の比較結果に基づいて、前記物理量の値の変動を検出するステップとを含む、制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、制御装置および制御プログラムに関する。
【背景技術】
【０００２】
従来、機械などの制御対象を制御する制御装置は、外乱に応じて制御動作を行うことが知られている。このような制御装置は、制御動作のために制御対象の特性変動を検出する。
【０００３】
例えば、特開２０１７−１０３８８２号公報（特許文献１）は、制御対象のモデルについて入力値に対する出力値の予測値を出力する予測部と、予測値と制御対象の出力の実測値との関係を表す関係値を算出する関係値算出部とを備える制御装置が開示されている。特許文献１の制御装置は、制御対象が特定の状態で動作する基準状態での第１関係値と制御対象を動作させる動作状態での第２関係値とを比較して、制御対象の特性変動を検出する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１７−１０３８８２号公報
【特許文献２】特開２０１８−１２０３２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に開示の制御装置では、基準状態での第１関係値を予め測定して記憶しておく必要があり、第１関係値の作成手間がかかる。
【０００６】
本発明は、上記の問題に鑑みてなされたものであり、その目的は、制御対象の特性変動を容易に検出できる制御装置および制御プログラムを提供することである。
【課題を解決するための手段】
【０００７】
本開示の一例によれば、制御対象を制御する制御装置は、制御対象の出力の計測値を取得するための取得部と、制御対象の出力の振動に関与する制御対象の物理量の値の変動を検出するための検出部とを備える。検出部は、物理量の互いに異なる値を用いて作成された複数の制御対象モデルの各々について、当該制御対象モデルを用いて制御対象の出力の予測値を演算する。検出部は、計測値と複数の制御対象モデルそれぞれの予測値との誤差の比較結果に基づいて、物理量の値の変動を検出する。
【０００８】
この開示によれば、予測誤差は、制御対象モデルを作成する際に用いた物理量の値と実際の制御対象の物理量の値との差が小さいほど小さくなる。そのため、制御装置は、特許文献１のように基準状態での第１関係値を予め準備することなく、複数の制御対象モデルの予測誤差を比較することによって、制御対象の物理量の値の変動を検出できる。制御対象の物理量の値は、制御対象の特性を示す。これにより、制御対象の特性変動を容易に検出できる。
【０００９】
上述の開示において、制御装置は、物理量の値に応じて設定された関数によって規定されるモデルを用いたモデル予測制御により、前記制御対象を制御するための操作量を計算するための制御部をさらに備える。検出部は、物理量の値の変動を検出した場合に、物理量の変動後の値を推定する。関数は、変動後の値に応じて更新される。
【００１０】
この開示によれば、物理量の変動後の値に応じて更新された関数を用いたモデル予測制御により操作量が生成されるため、目標位置に対する追従性および制振性能を向上させることができる。さらに、物理量の値の変動に対するロバスト性が向上する。
【００１１】
上述の開示において、制御装置は、前記物理量の値に応じて設定された関数によって規定されるフィルタを用いて、目標軌道から生成される指令値を補正し、補正後の指令値を前記制御対象に出力する補正部をさらに備える。前記検出部は、前記物理量の値の変動を検出した場合に、前記物理量の変動後の値を推定する。前記関数は、前記変動後の値に応じて更新される。
【００１２】
この開示によれば、物理量の変動後の値に応じて更新された関数によって規定されるフィルタを用いて指令値が補正されるため、物理量の値の変動に対するロバスト性が向上する。
【００１３】
上述の開示において、制御装置は、変動後の値に応じて関数を更新する指示を受け付けるためのヒューマンマシンインターフェイスと接続される。関数は、ヒューマンマシンインターフェイスが前記指示を受け付けたときに更新される。この開示によれば、ユーザの確認のない状態で関数が更新されることを回避できる。
【００１４】
上述の開示において、検出部は、複数の制御対象モデルのうち、誤差の変化幅が最小の制御対象モデルに対応する物理量の値を変動後の値として推定する。もしくは、検出部は、複数の制御対象モデルのうち誤差の変化幅が最小の制御対象モデルに対応する物理量の値と、複数の制御対象モデルのうち誤差の変化幅が２番目に小さい制御対象モデルに対応する物理量の値との間の値を、変動後の値として推定してもよい。この開示によれば、物理量の変動後の値が容易に推定される。
【００１５】
上述の開示において、物理量は、例えば、振動周波数、質量、イナーシャ、摩擦係数およびばね定数の少なくとも１つを含む。
【００１６】
本開示の一例によれば、制御対象を制御する制御装置を実現するための制御プログラムは、コンピュータに、制御対象の出力の計測値を取得するステップと、制御対象の出力の振動に関与する制御対象の物理量の値の変動を検出するステップとを実行させる。上記の検出するステップは、物理量の互いに異なる値を用いて作成された複数の制御対象モデルの各々について、当該制御対象モデルを用いて制御対象の出力の予測値を演算するステップと、計測値と複数の制御対象モデルそれぞれの予測値との誤差の比較結果に基づいて、物理量の値の変動を検出するステップとを含む。この開示によっても、制御対象の特性変動を容易に検出できる。
【発明の効果】
【００１７】
本発明によれば、制御対象の特性変動を容易に検出できる。
【図面の簡単な説明】
【００１８】
【図１】本実施の形態に従う制御装置が適用される制御システムの構成例を示す模式図である。
【図２】本実施の形態に従う制御装置のハードウェア構成の一例を示す模式図である。
【図３】本実施の形態に係る制御装置の機能構成を示す模式図である。
【図４】第１動特性モデルを作成するために実行されるチューニングを説明する図である。
【図５】振動波形の一例を示す図である。
【図６】図３に示す操作量計算部による負荷位置の演算例を示す図である。
【図７】図３に示す検出部による物理量の変動検出の演算例を示す図である。
【図８】複数の制御対象モデルに対応する予測誤差の時間変化の一例を示す図である。
【図９】複数の制御対象モデルに対応する予測誤差の時間変化の別の例を示す図である。
【図１０】第２動特性モデルの更新指示を受け付けるための画面の一例を示す図である。
【図１１】本実施の形態に従う制御システムによる制御処理の流れを示すフローチャートである。
【図１２】本実施の形態に従う制御装置で実行される命令コードの一例を示す図である。
【図１３】参考形態におけるシミュレーション結果の一例を示す図である。
【図１４】本実施の形態におけるシミュレーション結果の一例を示す図である。
【図１５】本実施の形態におけるシミュレーション結果の別の例を示す図である。
【図１６】本実施の形態におけるシミュレーション結果のさらに別の例を示す図である。
【図１７】変形例２に係る制御装置の機能構成を示す模式図である。
【図１８】検出モジュールによる物理量の変動検出の演算例を示す図である。
【図１９】変形例２に係る制御装置の制御処理の流れを示すフローチャートである。
【図２０】変形例２におけるシミュレーション結果の一例を示す図である。
【図２１】変形例２におけるシミュレーション結果の別の例を示す図である。
【図２２】変形例２におけるシミュレーション結果のさらに別の例を示す図である。
【発明を実施するための形態】
【００１９】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００２０】
§１  適用例
まず、図１を参照して、本発明が適用される場面の一例について説明する。図１は、本実施の形態に従う制御装置が適用される制御システムの構成例を示す模式図である。図１に示す例の制御システム１は、負荷となる制御対象２と、制御対象２の出力を計測するための計測センサ２０と、１または複数のサーボドライバと、１または複数のサーボモータと、制御装置１００と、ＨＭＩ（ヒューマンマシンインターフェイス)３０とを含む。
【００２１】
図１に示す例の制御対象２は、ワークが置載されるワーキングプレート３を互いに直交する二方向にそれぞれ移動させることができるＸＹステージである。なお、制御対象２は、ＸＹステージに限定されるものではなく、出力が振動し得る装置、例えば指定された位置（停止位置）に位置決めされる装置であってもよい。
【００２２】
１または複数のサーボモータは、制御対象２のワーキングプレート３を移動させるためのモータであり、図１に示す例では、２つのサーボモータ３００Ｘ，３００Ｙ（以下、「サーボモータ３００」とも称する。）を含む。
【００２３】
制御対象２は、ワーキングプレート３の他に、第１ベースプレート４と、第２ベースプレート７とを有する。
【００２４】
第１ベースプレート４には、ワーキングプレート３をＸ方向に沿って任意に移動させるボールネジ６が配置されている。ボールネジ６は、ワーキングプレート３に含まれるナットと係合されている。ボールネジ６の一端に連結されたサーボモータ３００Ｘが回転駆動することで、ワーキングプレート３に含まれるナットとボールネジ６とが相対回転し、その結果、ワーキングプレート３がＸ方向に沿って移動することになる。
【００２５】
さらに、第２ベースプレート７は、ワーキングプレート３および第１ベースプレート４をＹ方向に沿って任意に移動させるボールネジ９が配置されている。ボールネジ９は、第１ベースプレート４に含まれるナットと係合されている。ボールネジ９の一端に連結されたサーボモータ３００Ｙが回転駆動することで、第１ベースプレート４に含まれるナットとボールネジ９とが相対回転し、その結果、ワーキングプレート３および第１ベースプレート４がＹ方向に沿って移動することになる。
【００２６】
１または複数のサーボドライバは、サーボモータを駆動する。図１に示す例では、２つのサーボドライバ２００Ｘ，２００Ｙ（以下、「サーボドライバ２００」とも称する。）は、サーボモータ３００Ｘ，３００Ｙをそれぞれ駆動する。
【００２７】
サーボドライバ２００は、制御装置１００からの指令値（指令位置または指令速度）と、対応するサーボモータ３００からのフィードバック値とに基づいて、対応するサーボモータ３００に対する駆動信号を生成する。サーボドライバ２００は、生成した動作信号をサーボモータ３００に出力することにより、サーボモータ３００を駆動する。
【００２８】
例えば、サーボドライバ２００は、対応するサーボモータ３００の回転軸に結合されたエンコーダからの出力信号をフィードバック値として受ける。フィードバック値により、サーボモータ３００の位置、回転位相、回転速度、累積回転数などを検出できる。
【００２９】
計測センサ２０は、制御対象２の出力としてワーキングプレート３の位置（以下、「負荷位置」ともいう。）を計測する。計測センサ２０は、計測した負荷位置を示す計測値を制御装置１００に送信する。図１に示す例では、計測センサ２０は、２つの計測センサ２０Ｘ，２０Ｙを含む。計測センサ２０Ｘ，２０Ｙは、例えばレーザ変位計などの変位センサによって構成される。
【００３０】
計測センサ２０Ｘは、ワーキングプレート３におけるＸ方向の位置を計測する。具体的には、計測センサ２０Ｘは、ワーキングプレート３におけるＸ方向に直交する端面の変位を計測する。
【００３１】
計測センサ２０Ｙは、ワーキングプレート３におけるＹ方向の位置を計測する。具体的には、計測センサ２０Ｙは、ワーキングプレート３におけるＹ方向に直交する端面の変位を計測する。
【００３２】
制御装置１００は、制御対象２の出力（ここでは負荷位置）を制御する。例えば、制御装置１００は、モデル予測制御により操作量を計算し、計算した操作量をサーボドライバ２００に出力することにより、負荷位置の制御を行なう。制御装置１００とサーボドライバ２００との間では、操作量を含むデータの遣り取りが可能になっている。
【００３３】
さらに、制御装置１００は、制御対象２の出力（負荷位置）の計測値を計測センサ２０から取得し、当該計測値を用いて、制御対象２の出力の振動に関与する制御対象２の物理量（例えば振動周波数）の値の変動を検出する。具体的には、制御装置１００は、物理量の互いに異なる値を用いて複数の制御対象モデルを作成する。制御対象モデルは、制御対象２の動特性を示すモデルである。制御装置１００は、複数の制御対象の各々について、当該制御対象モデルを用いて制御対象２の出力の予測値を演算する。制御装置１００は、計測値と複数の制御対象モデルそれぞれの予測値との誤差（以下、「予測誤差」という。）の比較結果に基づいて、物理量の値の変動を検出する。
【００３４】
予測誤差は、制御対象モデルを作成する際に用いた物理量の値と実際の制御対象２の物理量の値との差が小さいほど小さくなる。そのため、制御装置１００は、特許文献１のように基準状態での第１関係値を予め準備することなく、複数の制御対象モデルの予測誤差を比較することによって、制御対象２の物理量の値の変動を容易に検出できる。
【００３５】
制御装置１００には、ネットワーク１０１ｃを介してＨＭＩ３０が接続されている。制御装置１００は、制御対象２の物理量の値の変動の検出結果等をＨＭＩ３０に適宜通知することができる。
【００３６】
図１には、制御装置１００とサーボドライバ２００との間がフィールドバス１０１ａを介して接続され、制御装置１００と計測センサ２０との間がフィールドバス１０１ｂを介して接続されている構成例を示す。但し、このような構成例に限らず、任意の通信手段を採用することができる。あるいは、制御装置１００とサーボドライバ２００および計測センサ２０との間を直接信号線で接続するようにしてもよい。さらに、制御装置１００とサーボドライバ２００とを一体化した構成を採用してもよい。以下に説明するような、アルゴリズムが実現されるものであれば、どのような実装形態を採用してもよい。
【００３７】
§２  具体例
次に、本実施の形態に係る制御装置１００の具体例について説明する。
【００３８】
＜Ａ．制御装置のハードウェア構成例＞
本実施の形態に従う制御装置１００は、一例として、ＰＬＣ（プログラマブルコントローラ）を用いて実装されてもよい。制御装置１００は、予め格納された制御プログラム（後述するシステムプログラムおよびユーザプログラムを含む）をプロセッサが実行することで、後述するような処理が実現されてもよい。
【００３９】
図２は、本実施の形態に従う制御装置１００のハードウェア構成の一例を示す模式図である。図２に示されるように、制御装置１００は、ＣＰＵ（Central Processing Unit）やＭＰＵ（Micro-Processing Unit）などのプロセッサ１０２と、チップセット１０４と、メインメモリ１０６と、フラッシュメモリ１０８と、外部ネットワークコントローラ１１６と、メモリカードインターフェイス１１８と、フィールドバスコントローラ１２２，１２４と、外部ネットワークコントローラ１１６と、メモリカードインターフェイス１１８とを含む。
【００４０】
プロセッサ１０２は、フラッシュメモリ１０８に格納されたシステムプログラム１１０およびユーザプログラム１１２を読み出して、メインメモリ１０６に展開して実行することで、制御対象に対する任意の制御を実現する。プロセッサ１０２がシステムプログラム１１０およびユーザプログラム１１２を実行することで、後述するような、サーボドライバ２００への操作量の出力、フィールドバスを介したデータ通信に係る処理などを実行する。
【００４１】
システムプログラム１１０は、データの入出力処理や実行タイミング制御などの、制御装置１００の基本的な機能を提供するための命令コードを含む。ユーザプログラム１１２は、制御対象に応じて任意に設計され、シーケンス制御を実行するためのシーケンスプログラム１１２Ａおよびモーション制御を実行するためのモーションプログラム１１２Ｂを含む。ユーザプログラム１１２において、ファンクションブロックが定義されることで、本実施の形態に従う処理および機能が実現される。ファンクションブロックは、制御装置１００で実行されるプログラムのコンポーネントであり、複数回使用するプログラムエレメントをモジュール化したものを意味する。
【００４２】
チップセット１０４は、各コンポーネントを制御することで、制御装置１００全体としての処理を実現する。
【００４３】
フィールドバスコントローラ１２２は、制御装置１００とフィールドバスを通じて連結される各種デバイスとデータを遣り取りするインターフェイスである。このようなデバイスの一例として、計測センサ２０が接続されている。
【００４４】
フィールドバスコントローラ１２４は、制御装置１００とフィールドバスを通じて連結される各種デバイスとデータを遣り取りするインターフェイスである。このようなデバイスの一例として、サーボドライバ２００が接続されている。
【００４５】
フィールドバスコントローラ１２２，１２４は、接続されているデバイスに対して任意の指令を与えることができるとともに、デバイスが管理している任意のデータを取得することができる。
【００４６】
外部ネットワークコントローラ１１６は、各種の有線／無線ネットワークを通じて、ＨＭＩ３０を含む各種の装置との間でデータの遣り取りを制御する。
【００４７】
メモリカードインターフェイス１１８は、メモリカード１２０を着脱可能に構成されており、メモリカード１２０に対してデータを書込み、メモリカード１２０からデータを読出すことが可能になっている。
【００４８】
＜Ｂ．サーボドライバ＞
本実施の形態に従う制御装置１００に接続されるサーボドライバ２００の動作について説明する。サーボドライバ２００は、制御装置１００から出力された操作量を指令値（指令位置または指令速度）として受けるとともに、サーボモータ３００に結合されたエンコーダからの出力信号をフィードバック値（後述するサーボモータ３００の位置の計測値ＰＶＭ（図３参照））として受ける。サーボドライバ２００は、指令値およびフィードバック値を用いて、例えばモデル追従制御系の制御ループに従う制御演算を実行する。
【００４９】
サーボドライバ２００は、指令値として指令位置を受ける場合、位置制御ループおよび速度制御ループに従う制御演算を実行する。サーボドライバ２００は、指令値として指令速度を受ける場合、速度制御ループに従う制御演算を実行する。
【００５０】
サーボドライバ２００は、位置制御ループに従う制御演算を実行することにより、フィードバック値により得られるサーボモータ３００の計測位置と制御装置１００から与えられる指令位置との位置偏差に応じた指令速度を演算する。
【００５１】
サーボドライバ２００は、速度制御ループに従う制御演算を実行することにより、指令速度とフィードバック値から得られるサーボモータ３００の計測速度との速度偏差に応じたトルクを演算する。サーボドライバ２００は、演算されたトルクをサーボモータ３００に発生させるための電流指令を示す動作信号を出力する。
【００５２】
＜Ｃ．制御装置の機能構成例＞
図３は、本実施の形態に係る制御装置の機能構成を示す模式図である。図３に示されるように、制御装置１００は、モデル作成モジュール１３０と、軌道生成モジュール１４０と、モデル予測制御モジュール１５０とからなる制御ユニット１６０を備える。図中においては、モデル予測制御を「ＭＰＣ（Model Predictive Control）」とも記す。なお、制御装置１００は、サーボドライバ２００Ｘ，２００Ｙにそれぞれ対応する２つの制御ユニット１６０を備えている。ただし、図３には簡略化のため２つの制御ユニット１６０のうち一方のみが描かれている。
【００５３】
モデル作成モジュール１３０は、典型的には、ユーザプログラム１１２において、モデル作成ファンクションブロックが規定されることにより実現される。すなわち、モデル作成モジュール１３０は、ユーザプログラム１１２に規定されるモデル作ファンクションブロックによって機能化される。
【００５４】
モデル作成モジュール１３０は、サーボドライバ２００およびサーボモータ３００からなる第１モデル対象４００の動特性を示す第１動特性モデルを作成する。モデル作成モジュール１３０は、作成した第１動特性モデルを規定するモデルパラメータをモデル予測制御モジュール１５０へ与える。
【００５５】
軌道生成モジュール１４０は、予め指定された目標軌道に沿って、制御対象２の目標位置（指令位置）の時系列データを生成し、各制御周期に対応する目標位置ＳＰを当該時系列データから順次読出し、モデル予測制御モジュール１５０へ入力する。具体的には、軌道生成モジュール１４０は、目標位置の時系列データから、現時刻から将来の一定期間である予測ホライズン終了までの複数の目標位置を抽出し、モデル予測制御モジュール１５０へ入力する。
【００５６】
なお、制御装置１００は、目標軌道を規定する目標位置の時系列データを予め記憶しておいてもよい。この場合には、軌道生成モジュール１４０は、予め記憶された目標位置の時系列データへアクセスする。このように、目標軌道を規定する制御周期毎の目標位置は、時系列データの形で予め格納されていてもよいし、予め定められた計算式に従って各制御周期についての目標位置を逐次計算するようにしてもよい。
【００５７】
モデル予測制御モジュール１５０は、操作量計算部１５１と、検出部１５２とを含む。モデル予測制御モジュール１５０に含まれる操作量計算部１５１および検出部１５２の各々は、典型的には、ユーザプログラム１１２にファンクションブロックが規定されることにより実現される。すなわち、操作量計算部１５１および検出部１５２の各々は、ユーザプログラム１１２に規定されるファンクションブロックによって機能化される。なお、操作量計算部１５１および検出部１５２は、互いに異なるファンクションブロックによってそれぞれ機能化されてもよいし、１つのファンクションブロックによって機能化されてもよい。
【００５８】
操作量計算部１５１は、制御対象２からなる第２モデル対象４０２の動特性を示す第２動特性モデルを作成するとともに、第１動特性モデルおよび第２動特性モデルを用いたモデル予測制御を実行し、サーボドライバ２００に出力する操作量ＭＶを生成する。
【００５９】
検出部１５２は、物理量の互いに異なる値を用いて複数の制御対象モデルを作成する。物理量は例えば振動周波数である。複数の制御対象モデルのうちの１つは、第２動特性モデルと同一である。
【００６０】
検出部１５２は、複数の制御対象モデルの各々について、当該制御対象モデルを用いて負荷位置の予測値を演算する。検出部１５２は、計測センサ２０からの計測値ＰＶと複数の制御対象モデルそれぞれの予測値との予測誤差の比較結果に基づいて、制御対象２の物理量の値の変動を検出する。
【００６１】
検出部１５２は、制御対象２の物理量の値の変動を検出した場合、当該物理量の変動後の値を推定してもよい。操作量計算部１５１は、推定された変動後の値に応じて、第２動特性モデルを更新することが好ましい。これにより、第２動特性モデルで示される動特性と制御対象２の実際の動特性との誤差を小さくすることができる。その結果、目標軌道に対する制御対象２の追従性および制御対象２の制振性能が向上する。
【００６２】
＜Ｄ．第１動特性モデルの作成＞
次に、第１動特性モデルの作成手法について説明する。第１動特性モデルは、例えば特開２０１８−１２０３２７（特許文献２）に開示の手法を用いて作成される。第１動特性モデルは、モデル予測制御を実行する前のチューニングにより作成される。
【００６３】
図４は、第１動特性モデルを作成するために実行されるチューニングを説明する図である。図４に示されるように、制御装置１００のモデル作成モジュール１３０は、チューニング用に予め設定された複数の操作量（例えば指令位置）を順にサーボドライバ２００に出力し、サーボモータ３００の計測位置を取得する。サーボモータ３００の計測位置は、サーボモータ３００の回転軸に結合されたエンコーダから出力されるフィードバック値から特定される。モデル作成モジュール１３０は、操作量および計測位置をそれぞれ同定入力および同定出力とし、同定入力に対する同定出力の関係を用いてシステム同定手法を適用することで、第１動特性モデルを作成できる。
【００６４】
第１動特性モデルを示す関数は、例えば以下の［数１］の関数ＰＣＭ（ｚ−１）で示される。関数ＰＣＭ（ｚ−１）は、むだ時間要素と、ｎ次遅れ要素とを組み合わせた離散時間伝達関数である。関数ＰＣＭ（ｚ−１）で示される第１動特性モデルにおいては、むだ時間要素のむだ時間ｄならびにｎ次遅れ要素の変数ａ１〜ａｎおよび変数ｂ１〜ｂｍがモデルパラメータとして決定される。なお、次数ｎおよび次数ｍについても最適な値が決定されてもよい。
【００６５】
【数１】
2020129292.tif 000003
【００６６】
このようなモデルパラメータの作成処理（すなわち、システム同定）は、同定入力および同定出力を用いて、最小二乗法などにより実行されてもよい。
【００６７】
具体的には、ｙ＝ＰＣＭ（ｚ−１）*ｕの変数ｕに同定入力として選択された操作量を与えたときの出力ｙが、同定出力として選択された計測位置と一致するように（すなわち、誤差が最小になるように）、特性パラメータの各々の値が決定される。
【００６８】
このとき、むだ時間ｄを先に決定した上で、同定出力を当該決定したむだ時間ｄだけ進めた補正後の時間波形を生成し、その補正後の時間波形に基づいて、むだ時間要素を除いた残りの伝達関数の要素を決定してもよい。
【００６９】
＜Ｅ．第２動特性モデルの作成＞
次に、第２動特性モデルの作成手法について説明する。第２動特性モデルは、制御対象２の物理量（例えば振動周波数）の値を用いて作成される。以下では、物理量が振動周波数である場合の例について説明する。制御対象２の振動周波数の初期値は、例えば、モデル予測制御を実行する前のチューニングにおいて取得された制御対象２の振動波形から抽出される。振動波形は、サーボモータ３００の回転を停止した直後のワーキングプレート３の位置を計測センサ２０が計測することにより得られる。
【００７０】
図５は、振動波形の一例を示す図である。図５には、横軸を時間とし、縦軸を制御対象２の出力（負荷位置）とするグラフが示される。サーボモータ３００の回転が停止したとしても、制御対象２のワーキングプレート３は振動する。ワーキングプレート３は、制御対象２の固有振動周波数に従って振動する。そこで、制御装置１００のモデル作成モジュール１３０は、振動波形から振動周期Ｔ０’を抽出し、ｆ０＝１／Ｔ０’に従って振動周波数の値ｆ０を算出する。もしくは、モデル作成モジュール１３０は、減衰の影響を考慮して、以下の［数２］に従って振動周波数の値ｆ０を算出してもよい。ζは振動の減衰比を示す。
【００７１】
【数２】
2020129292.tif 000004
【００７２】
第２動特性モデルは、振動周波数の値ｆ０を用いて作成される。第２動特性モデルを示す関数は、例えば以下の［数３］の関数ＰＭＬ（ｓ）で示される。関数ＰＭＬ（ｓ）において、ω０は、制御対象２の振動角周波数であり、ω０＝２πｆ０で示される。算出された振動周波数の値ｆ０を用いて、関数ＰＭＬ（ｓ）で示される第２動特性モデルが作成される。
【００７３】
【数３】
2020129292.tif 000005
【００７４】
第２動特性モデルを示す関数は、以下の［数４］または「数５］の関数ＰＭＬ（ｓ）で示されてもよい。
【００７５】
【数４】
2020129292.tif 000006
【００７６】
【数５】
2020129292.tif 000007
【００７７】
ζは、対数減衰率δを用いて、ζ＝δ／（δ２＋４π２）１／２で示される。対数減衰率δは、振動波形において連続する２つの波の振幅比の値Ａｄｒと自然対数ｌｎとを用いて、δ＝ｌｎ（１／Ａｄｒ）で示される。振幅比の値Ａｄｒは、図６に示す振動波形において連続する２つの波の振幅Ａｎ，Ａｎ＋１の比Ａｎ＋１／Ａｎで示される。そのため、操作量計算部１５１は、振動波形から抽出された振幅比の値Ａｄｒおよび振動周波数の値ｆ０を用いて、［数３］〜［数５］のいずれかの関数ＰＭＬ（ｓ）で示される第２動特性モデルを作成すればよい。
【００７８】
なお、操作量計算部１５１は、［数３］〜［数５］の関数ＰＭＬ（ｓ）を離散時間形式に変換（Ｚ変換）し、変換された関数ＰＭＬ（ｚ−１）を用いてモデル予測制御を行なう。
【００７９】
＜Ｆ．モデル予測制御の処理例＞
モデル予測制御の処理例を説明する前に、図６を参照して、第１動特性モデルＰＣＭおよび第２動特性モデルＰＭＬを用いた負荷位置の演算方法の例について説明する。図６は、第１動特性モデルＰＣＭおよび第２動特性モデルＰＭＬを用いた負荷位置の演算方法の例を示す図である。
【００８０】
図６に示されるように、操作量計算部１５１は、操作量ＭＶを第１動特性モデルＰＣＭに入力することにより、当該操作量ＭＶに応じたサーボモータ３００の予測位置（以下、「モータ位置」とも称する。）を示す予測値ＹＭを演算できる。操作量計算部１５１は、演算された予測値ＹＭを第２動特性モデルＰＭＬに入力することにより、当該予測値ＹＭに応じた負荷位置の予測値ＹＬを演算できる。
【００８１】
図６に示す演算方法を用いて、操作量計算部１５１は、例えば以下のような制御により、制御周期毎にサーボドライバ２００に出力する操作量ＭＶを計算する。
【００８２】
操作量計算部１５１は、上記の［数１］の関数ＰＣＭ（ｚ−１）で示される第１動特性モデルＰＣＭに、今回の制御周期ｋまでに生成した操作量ＭＶｋ，・・・，ＭＶｋ−ｍ＋１を入力することにより、制御周期ｋ＋ｄ＋１におけるモータ位置の予測値ＹＭｋ＋ｄ＋１を演算する。ここで、ｍは、上記のように、第１動特性モデルＰＣＭで規定される次数である。また、制御周期ｋ＋ｄ＋１は、今回の制御周期ｋの終了時から動特性モデルに規定されるむだ時間ｄ＋１だけ経過した制御周期である。
【００８３】
操作量計算部１５１は、予測値ＹＭｋ＋ｄ＋１を第２動特性モデルＰＭＬに入力することにより、制御周期ｋ＋ｄ＋１における負荷位置の予測値ＹＬｋ＋ｄ＋１を演算する。
【００８４】
上記のようにして求められた負荷位置の予測値ＹＬｋ＋ｄ＋１は、次回の制御周期における操作量ＭＶを生成するために使用される。このとき、次回の制御周期に備えて、演算されたデータが１制御周期分だけシフトされる。例えば、上記のようにして求められた予測値ＹＬｋ＋ｄ＋１は、次回の制御周期において予測値ＹＬｋ＋ｄとして使用される。言い換えると、今回の制御周期ｋでは、前回の制御周期において演算された予測値ＹＬｋ＋ｄ＋１が予測値ＹＬｋ＋ｄとして使用される。操作量計算部１５１は、前回の制御周期で演算済みの当該予測値ＹＬｋ＋ｄと第１動特性モデルＰＣＭおよび第２動特性モデルＰＭＬとを用いたモデル予測制御により、サーボドライバ２００に出力する操作量ＭＶｋを生成する。
【００８５】
モデル予測制御としては公知の技術が採用され得る。例えば、操作量計算部１５１は、以下のようなモデル予測制御に従って、操作量ＭＶｋを生成してもよい。
【００８６】
操作量計算部１５１は、第１動特性モデルＰＣＭおよび第２動特性モデルＰＭＬを作成した後、ステップ応答計算とランプ応答計算とを行なう。
【００８７】
ステップ応答計算とは、出力が０である初期状態において最大の入力（ステップ入力）を継続したときの動特性モデル（第１動特性モデルＰＣＭおよび第２動特性モデルＰＭＬを組み合わせたモデル）の出力Ｙｓを求める計算である。以下の説明では、ステップ入力の入力開始からの経過時間ｉ（＞むだ時間ｄ）における出力ＹｓをＹｓ（ｉ）とする。
【００８８】
ランプ応答計算とは、出力が０である初期状態において制御周期毎に１段階ずつ増加させた入力（ランプ入力）を行なったときの動特性モデルの出力Ｙｒを求める計算である。以下の説明では、ランプ入力の入力開始からの経過時間ｉ（＞むだ時間ｄ）における出力ＹｒをＹｒ（ｉ）とする。
【００８９】
さらに、操作量計算部１５１は、負荷位置の予測値ＹＬｋ＋ｄを指定状態とした自由応答計算を行なう。自由応答計算とは、制御周期ｋ＋ｄにおいて指定状態にある動特性モデルにおいて、今回の制御周期ｋ以降の入力を０としたときの、制御周期ｋ＋ｄより後の制御周期ｋ＋ｄ＋Ｈにおける動特性モデルの出力Ｙｆ（ｋ＋ｄ＋Ｈ）を求める計算である。
【００９０】
操作量計算部１５１は、ステップ出力およびランプ出力の大きさをそれぞれｋｓおよびｋｒとして、制御周期ｋ＋ｄより後の制御周期ｋ＋ｄ＋Ｈにおける動特性モデルの出力ＭＨｋ＋ｄ＋Ｈを以下の式に従って演算する。
ＭＨｋ＋ｄ＋Ｈ＝ｋｓ*Ｙｓ（Ｈ）＋ｋｒ*Ｙｒ（Ｈ）＋Ｙｆ（ｋ＋ｄ＋Ｈ）
【００９１】
操作量計算部１５１は、ＭＨｋ＋ｄ＋Ｈと予測値ＹＬｋ＋ｄとの差分ΔＭＨと、制御周期ｋ＋ｄ＋Ｈにおける参照軌道上の位置ＲＨｋ＋ｄ＋Ｈと予測値ＹＬｋ＋ｄとの差分ΔＰＨとが一致するように、ｋｓおよびｋｒを求める。参照軌道は、制御周期ｋ＋ｄ＋Ｈにおける目標位置ＳＰｋ＋ｄ＋Ｈと予め定められる参照軌道時定数Ｔｒとによって特定される。２つの変数ｋｓおよびｋｒを求めるため、Ｈとして２つの値が設定される。Ｈとして設定される２つの値は、制御対象２の振動周期よりも短い時間であり、例えば振動周期の１／８および振動周期の１／４である。そして、当該２つの値のそれぞれの式からなる連立方程式を解くことにより、変数ｋｓ，ｋｒが演算される。
【００９２】
操作量計算部１５１は、上記のようにして求めたｋｓとステップ入力との積を、今回の制御周期ｋにおいてサーボドライバ２００に出力する操作量ＭＶｋとして計算すればよい。
【００９３】
なお、計測センサ２０から負荷位置の計測値ＰＶを受けるため、操作量計算部１５１は、計測値ＰＶに基づいて、負荷位置の予測値ＹＬを計算してもよい。計測値ＰＶを用いることなく予測値ＹＬを演算して操作量ＭＶを生成するモデル予測制御は、「独立モデル型のモデル予測制御」といわれる。また、計測値ＰＶによって計算された予測値ＹＬを用いて操作量ＭＶを生成するモデル予測制御は、「リセットモデル型のモデル予測制御」といわれる。
【００９４】
＜Ｇ．物理量の変動検出の処理例＞
図７〜図９を参照して、検出部１５２による物理量の変動検出の処理例について説明する。図７は、検出部による物理量の変動検出の演算例を示す図である。
【００９５】
検出部１５２は、制御対象２が取り得る動特性を示す複数の制御対象モデルを作成する。検出部１５２は、現状の第２動特性モデルＰＭＬを、複数の制御対象モデルの１つである基準制御対象モデルＰＭＬ０として用いる。検出部１５２は、基準制御対象モデルＰＭＬ０とは異なる物理量の値を用いて、残りの制御対象モデルを作成する。
【００９６】
例えば、検出部１５２は、現状の第２動特性モデルＰＭＬに対応する振動周波数の値ｆ０を用いて、以下の数［６］の関数ＰＭＬＨ（ｓ）で示される高域側制御対象モデルＰＭＬＨと、以下の数［７］の関数ＰＭＬＬ（ｓ）で示される低域側制御対象モデルＰＭＬＬとを作成する。
【００９７】
【数６】
2020129292.tif 000008
【００９８】
【数７】
2020129292.tif 000009
【００９９】
数［６］の関数ＰＭＬＨ（ｓ）において、ωＨは、振動角周波数であり、ωＨ＝２*π*ｆＨで示される。ｆＨは、振動周波数ｆ０よりも高域側の振動周波数を示し、ｆＨ＝αＨ*ｆ０で示される。αＨは１よりも大きい係数である。数［７］の関数ＰＭＬＬ（ｓ）において、ωＬは、振動角周波数であり、ωＬ＝２*π*ｆＬで示される。ｆＬは、振動周波数ｆ０よりも低域側の振動周波数を示し、ｆＬ＝αＬ*ｆ０で示される。αＬは１よりも小さい係数である。
【０１００】
検出部１５２は、複数の制御対象モデルの各々について、当該制御対象モデルを用いて負荷位置の予測値を演算する。
【０１０１】
具体的には、検出部１５２は、サーボドライバ２００に出力する操作量ＭＶを第１動特性モデルＰＣＭに入力することにより、モータ位置の予測値ＹＭを演算する。
【０１０２】
次に、検出部１５２は、予測値ＹＭを基準制御対象モデルＰＭＬ０に入力することにより負荷位置の予測値ＹＬを演算する。当該予測値ＹＬは、今回の制御周期の終了時から動特性モデルに規定されるむだ時間ｄ＋１だけ経過した制御周期における負荷位置を示す。同様に、検出部１５２は、予測値ＹＭを高域側制御対象モデルＰＭＬＨに入力することにより負荷位置の予測値ＹＬＨを演算する。検出部１５２は、予測値ＹＭを低域側制御対象モデルＰＭＬＬに入力することにより負荷位置の予測値ＹＬＬを演算する。このとき、検出部１５２は、独立モデル型のモデル予測制御と同じように、計測値ＰＶを用いることなく負荷位置の予測値を演算する。
【０１０３】
なお、検出部１５２は、操作量計算部１５１と同様に、基準制御対象モデルＰＭＬ０を示す関数ＰＭＬ（ｓ）を離散時間形式に変換（Ｚ変換）し、変換された関数ＰＭＬ（ｚ−１）を用いて負荷位置の予測値を演算する。同様に、［数６］の関数ＰＭＬＨ（ｓ）および数［７］の関数ＰＭＬＬ（ｓ）は、離散時間形式にそれぞれ変換（Ｚ変換）され、変換された関数ＰＭＬＨ（ｚ−１）および関数ＰＭＬＬ（ｚ−１）を用いて負荷位置の予測値が演算される。
【０１０４】
検出部１５２は、複数の制御対象モデルの各々について、負荷位置の計測値ＰＶと負荷位置の予測値との予測誤差を演算する。なお、上述したように、負荷位置の予測値は、今回の制御周期の終了時から動特性モデルに規定されるむだ時間ｄ＋１だけ経過した制御周期における負荷位置を示す。そのため、むだ時間ｄ＋１だけ経過した制御周期において計測センサ２０から取得した計測値ＰＶと予測値との予測誤差が演算される。図７に示す例では、検出部１５２は、基準制御対象モデルＰＭＬ０の出力である予測値ＹＬと計測値ＰＶとの予測誤差ＰＥを演算する。検出部１５２は、高域側制御対象モデルＰＭＬＨの出力である予測値ＹＬＨと計測値ＰＶとの予測誤差ＰＥＨを演算する。検出部１５２は、低域側制御対象モデルＰＭＬＬの出力である予測値ＹＬＬと計測値ＰＶとの予測誤差ＰＥＬを演算する。
【０１０５】
検出部１５２は、複数の制御対象モデルに対応する予測誤差を比較する予測誤差比較処理１５４を実行することにより、制御対象２における振動周波数の値の変動を検出する。さらに、検出部１５２は、振動周波数の値の変動を検出した場合に、振動周波数の変動後の値を推定してもよい。
【０１０６】
図８は、複数の制御対象モデルに対応する予測誤差の時間変化の一例を示す図である。図９は、複数の制御対象モデルに対応する予測誤差の時間変化の別の例を示す図である。図８および図９には、制御対象２を０．４秒で所定距離だけ移動させて位置決めする制御を行なったときの予測誤差の時間変化が示される。
【０１０７】
図８および図９において、ΔＰＥは、制御開始から目標位置が停止するまでの０〜０．４秒の区間における、基準制御対象モデルＰＭＬ０の出力である予測値ＹＬと計測値ＰＶとの予測誤差ＰＥの変化幅（最大値と最小値との差）を示す。ΔＰＥＨは、同じ区間における、高域側制御対象モデルＰＭＬＨの出力である予測値ＹＬＨと計測値ＰＶとの予測誤差ＰＥＨの変化幅を示す。ΔＰＥＬは、同じ区間における、低域側制御対象モデルＰＭＬＬの出力である予測値ＹＬＬと計測値ＰＶとの予測誤差ＰＥＬの変化幅を示す。
【０１０８】
予測誤差は、制御対象モデルを作成する際に用いた物理量（例えば振動周波数）の値と制御対象２の実際の物理量（例えば振動周波数）の値とが近いほど小さくなる。図８に示す例では、ΔＰＥ，ΔＰＥＨおよびΔＰＥＬのうちΔＰＥが最も小さい。そのため、実際の制御対象２の振動周波数の値は、ｆ０，ｆＨおよびｆＬのうちｆ０に最も近く、ｆ０から変動していないと判断できる。
【０１０９】
ただし、図８に示す例では、ΔＰＥＨに比べて、ΔＰＥＬが非常に大きい。そのため、実際の制御対象２の振動周波数の値は、ｆ０よりも少しｆＨ側に変動していると判断されてもよい。この場合、振動周波数の変動後の値は、ｆ０から（ｆ０＋ｆＨ）／２までの値と推定される。
【０１１０】
ΔＰＥとΔＰＥＨとが同程度である場合には、振動周波数の変動後の値は、（ｆ０＋ｆＨ）／２と推定されてもよい。
【０１１１】
図９に示す例では、ΔＰＥ，ΔＰＥＨおよびΔＰＥＬのうちΔＰＥＨが最も小さい。そのため、実際の制御対象２の振動周波数の値は、ｆ０，ｆＨおよびｆＬのうちｆＨに最も近い。従って、振動周波数の値が変動していると判断される。この場合、振動周波数の変動後の値はｆＨと推定される。
【０１１２】
図８および図９に示す例を考慮して、検出部１５２は、例えば以下の示すような判断基準１〜７に従って、振動周波数の値の変動の有無を判断するとともに、振動周波数の変動後の値を推定すればよい。ただし、判断基準は、以下に示すものに限定されず、制御対象２に応じて適宜設定される。
【０１１３】
（判断基準１）ΔＰＥ，ΔＰＥＨおよびΔＰＥＬのうちΔＰＥが最小であるという条件Ａと、（ΔＰＥＨ−ΔＰＥ）が閾値Ｔｈ１Ｈより大きく、かつ、（ΔＰＥＬ−ΔＰＥ）が閾値Ｔｈ１Ｌより大きいという条件Ｂとの両方を満たす場合、振動周波数の値が変動していない。
【０１１４】
（判断基準２）条件Ａと、（ΔＰＥＨ−ΔＰＥ）が閾値Ｔｈ１Ｈから閾値Ｔｈ２Ｈ（＜Ｔｈ１Ｈ）の範囲内であるという条件Ｃとを満たす場合に、振動周波数の値が変動しており、変動後の値がｆ０と（ｆ０＋ｆＨ）／２との間の値である。変動後の値は、例えば、ｆ０と（ｆ０＋ｆＨ）／２との中間値（３ｆ０＋ｆＨ）／４である。
【０１１５】
（判断基準３）条件Ａと、（ΔＰＥＬ−ΔＰＥ）が閾値Ｔｈ１Ｌから閾値Ｔｈ２Ｌ（＜Ｔｈ１Ｌ）の範囲内であるという条件Ｄとを満たす場合に、振動周波数の値が変動しており、変動後の値が（ｆＬ＋ｆ０）／２０からｆ０までの値である。変動後の値は、例えば、（ｆＬ＋ｆ０）／２０とｆ０との中間値（３ｆ０＋ｆＬ）／４である。
【０１１６】
（判断基準４）ΔＰＥおよびΔＰＥＨがΔＰＥＬよりも小さいという条件Ｅと、｜ΔＰＥＨ−ΔＰＥ｜が閾値Ｔｈ２Ｈ未満である条件Ｆとを満たす場合に、振動周波数の値が変動しており、変動後の値が（ｆ０＋ｆＨ）／２である。
【０１１７】
（判断基準５）ΔＰＥおよびΔＰＥＬがΔＰＥＨよりも小さいという条件Ｇと、｜ΔＰＥＬ−ΔＰＥ｜が閾値Ｔｈ２Ｌ未満である条件Ｈとを満たす場合に、振動周波数の値が変動しており、変動後の値が（ｆ０＋ｆＬ）／２である。
【０１１８】
（判断基準６）条件Ｆを満たさず、かつ、ΔＰＥ，ΔＰＥＨおよびΔＰＥＬのうちΔＰＥＨが最小であるという条件Ｉを満たす場合、振動周波数の値が変動しており、変動後の値がｆＨである。
【０１１９】
（判断基準７）条件Ｈを満たさず、かつ、ΔＰＥ，ΔＰＥＨおよびΔＰＥＬのうちΔＰＥＬが最小であるという条件Ｊを満たす場合、振動周波数の値が変動しており、変動後の値がｆＬである。
【０１２０】
なお、図７に示す例では、１つの高域側制御対象モデルＰＭＬＨと１つの低域側制御対象モデルＰＭＬＬとが作成される。しかしながら、複数の高域側制御対象モデルＰＭＬＨ１〜ＰＭＬＨｊ（ｊは２以上の整数）が作成されてもよく、複数の低域側制御対象モデルＰＭＬＬ１〜ＰＭＬＬｋ（ｋは２以上の整数）が作成されてもよい。複数の高域側制御対象モデルＰＭＬＨ１〜ＰＭＬＨｊは、振動周波数の値ｆＨ１（＝αＨ１*ｆ０）〜ｆＨｊ（＝αＨｊ*ｆ０）を用いてそれぞれ作成される。複数の低域側制御対象モデルＰＭＬＬ１〜ＰＭＬＬｋは、振動周波数の値ｆＬ１（＝αＬ１*ｆ０）〜ｆＬｋ（＝αＬｋ*ｆ０）を用いてそれぞれ作成される。
【０１２１】
複数の高域側制御対象モデルＰＭＬＨ１〜ＰＭＬＨｊが作成される場合、検出部１５２は、複数の高域側制御対象モデルＰＭＬＨ１〜ＰＭＬＨｊに対応する予測誤差ＰＥＨ１〜ＰＥＨｊをそれぞれ演算する。さらに、検出部１５２は、制御開始から目標位置が停止するまでの区間における予測誤差ＰＥＨ１〜ＰＥＨｊの変化幅ΔＰＥＨ１〜ΔＰＥＨｊをそれぞれ演算する。
【０１２２】
実際の制御対象２の振動周波数の値がｆＨｉ近傍に変動した場合、ΔＰＥＨｉが最も小さくなる。また、実際の制御対象２の振動周波数の値がｆＨｉとｆＨ（ｉ＋１）との中心辺りに変動した場合、ΔＰＥＨｉとΔＰＥＨ（ｉ＋１）とが同程度となり、他の予測誤差の変化幅より小さくなる。
【０１２３】
そこで、検出部１５２は、上記の判断基準１〜５に加えて、例えば以下の示すような判断基準８，９に従って、振動周波数の値の変動の有無を判断するとともに、振動周波数の変動後の値を推定すればよい。なお、上記の判断基準１〜５では、ΔＰＥＨをΔＰＥＨ１に置き換えるものとする。以下の判断基準８，９は、上記の判断基準６，７の代わりに用いられる。
【０１２４】
（判断基準８）ΔＰＥＨｉが他の全ての予測誤差の変化幅よりも閾値Ｔｈ３Ｈ以上小さい場合、振動周波数の値が変動しており、変動後の値がｆＨｉである。
【０１２５】
（判断基準９）ΔＰＥＨｉおよびΔＰＥＨ（ｉ＋１）が他の全ての予測誤差の変化幅よりも小さく、かつ、｜ΔＰＥＨｉ−ΔＰＥＨ（ｉ＋１）｜が閾値ＴＨ３Ｈ未満である場合、振動周波数の値が変動しており、変動後の値が（ｆＨｉ＋ｆＨ（ｉ＋１））／２である。
【０１２６】
同様に、複数の低域側制御対象モデルＰＭＬＬ１〜ＰＭＬＬｋが作成される場合、検出部１５２は、複数の低域側制御対象モデルＰＭＬＬ１〜ＰＭＬＬｋに対応する予測誤差ＰＥＬ１〜ＰＥＬｋをそれぞれ演算する。さらに、検出部１５２は、制御開始から目標位置が停止するまでの期間における、予測誤差ＰＥＬ１〜ＰＥＬｋの変化幅ΔＰＥＬ１〜ΔＰＥＬｋをそれぞれ演算する。
【０１２７】
実際の制御対象２の振動周波数の値がｆＬｉ近傍に変動した場合、ΔＰＥＬｉが最も小さくなる。また、実際の制御対象２の振動周波数の値がｆＬｉとｆＬ（ｉ＋１）との中心辺りに変動した場合、ΔＰＥＬｉとΔＰＥＬ（ｉ＋１）とが同程度となり、他の予測誤差の変化幅より小さくなる。
【０１２８】
そこで、検出部１５２は、上記の判断基準１〜５に加えて、例えば以下の示すような判断基準１０，１１に従って、振動周波数の値の変動の有無を判断するとともに、振動周波数の変動後の値を推定すればよい。なお、上記の判断基準１〜５では、ΔＰＥＬをΔＰＥＬ１に置き換えるものとする。以下の判断基準１０，１１は、上記の判断基準６，７の代わりに用いられる。
【０１２９】
（判断基準１０）ΔＰＥＬｉが他の全ての予測誤差の変化幅よりも閾値Ｔｈ３Ｌ以上小さい場合、振動周波数が変動しており、変動後の値がｆＬｉである。
【０１３０】
（判断基準１１）ΔＰＥＬｉおよびΔＰＥＬ（ｉ＋１）が他の全ての予測誤差の変化幅よりも小さく、かつ、｜ΔＰＥＬｉ−ΔＰＥＬ（ｉ＋１）｜が閾値Ｔｈ３Ｌ未満である場合、振動周波数の値が変動しており、変動後の値が（ｆＬｉ＋ｆＬ（ｉ＋１））／２である。
【０１３１】
複数の高域側制御対象モデルＰＭＬＨ１〜ＰＭＬＨｊと複数の低域側制御対象モデルＰＭＬＬ１〜ＰＭＬＬｋとが作成されることにより、振動周波数の値の変動の検出精度および振動周波数の変動後の値の推定精度が向上する。
【０１３２】
＜Ｈ．第２動特性モデルの更新＞
操作量計算部１５１は、検出部１５２によって推定された振動周波数の変動後の値に応じて、第２動特性モデルＰＭＬを更新することが好ましい。具体的には、操作量計算部１５１は、振動周波数の値ｆ０を変動後の値に更新し、更新後の値ｆ０を用いて、上記の［数３］〜［数５］のいずれかの関数ＰＭＬ（ｓ）で示される第２動特性モデルＰＭＬを作成すればよい。
【０１３３】
なお、操作量計算部１５１は、検出部１５２によって振動周波数の変動後の値が推定されると、自動的に第２動特性モデルＰＭＬを更新してもよいし、ユーザからの指示を受けてから第２動特性モデルＰＭＬを更新してもよい。
【０１３４】
操作量計算部１５１は、ユーザからの指示を受けてから第２動特性モデルＰＭＬを更新する場合、ＨＭＩ３０に当該指示を受け付けるための画面を表示すればよい。
【０１３５】
図１０は、第２動特性モデルＰＭＬの更新指示を受け付けるための画面の一例を示す図である。図１０に示す画面３１は、ＨＭＩ３０に表示される。画面３１は、表示欄３１Ａ〜３１Ｄを含む。表示欄３１Ａには、現状の第２動特性モデルＰＭＬに対応する振動周波数の値ｆ０（図中、「基準振動周波数」と表記）が表示される。表示欄３１Ｂには、高域側制御対象モデルＰＭＬＨ１〜ＰＭＬＨｊと低域側制御対象モデルＰＭＬＬ１〜ＰＭＬＬｋとを作成するための係数αＨ１〜αＨｊ，αＬ１〜αＬｋが表示される。表示欄３１Ｃには、各制御対象モデルについて演算された予測誤差の時間変化を示すグラフが表示される。表示欄３１Ｄは、推定された振動周波数の変動後の値が表示される。さらに、表示欄３１Ｄは、第２動特性モデルＰＭＬを作成する際に用いる振動周波数の値ｆ０の更新を指示する指示ボタン３１Ｅを含む。
【０１３６】
操作量計算部１５１は、指示ボタン３１Ｅが操作されると、第２動特性モデルＰＭＬを作成する際に用いる振動周波数の値ｆ０を変動後の値に更新する。操作量計算部１５１は、更新後の値ｆ０を用いて、上記の［数３］〜［数５］のいずれかの関数ＰＭＬ（ｓ）で示される第２動特性モデルＰＭＬを作成すればよい。
【０１３７】
さらに、検出部１５２は、第２動特性モデルＰＭＬの更新に応じて、基準制御対象モデルＰＭＬ０、高域側制御対象モデルＰＭＬＨおよび低域側制御対象モデルＰＭＬＬを更新する。
【０１３８】
＜Ｉ．処理手順＞
次に、本実施の形態に従う制御装置１００による制御処理の概要について説明する。図１１は、本実施の形態に従う制御システムによる制御処理の流れを示すフローチャートである。図１１に示すステップは、制御装置１００のプロセッサ１０２が制御プログラム（図２に示すシステムプログラム１１０およびユーザプログラム１１２を含む）を実行することで実現されてもよい。
【０１３９】
まず、制御装置１００は、サーボドライバ２００に対してチューニングを実行させ、チューニングにより同定入力および同定出力を取得するとともに、チューニングの際に計測センサ２０によって計測された振動波形から振動周波数の値ｆ０および振幅比の値Ａｄｒを抽出する。そして、制御装置１００は、同定入力および同定出力に基づいて第１動特性モデルＰＣＭを作成するとともに、振動周波数の値ｆ０および振幅比の値Ａｄｒに基づいて第２動特性モデルＰＭＬを作成する（ステップＳ１）。
【０１４０】
次に、制御装置１００は、係数αＨ，αＬを設定し、高域側制御対象モデルＰＭＬＨと低域側制御対象モデルＰＭＬＬとを作成する（ステップＳ２）。
【０１４１】
次に、ステップＳ３において、制御装置１００は、第１動特性モデルＰＣＭと第２動特性モデルＰＭＬとを用いたモデル予測制御を実行する。さらに、制御装置１００は、モデル予測制御と並行して、基準制御対象モデルＰＭＬ０（第２動特性モデルＰＭＬと同一）と高域側制御対象モデルＰＭＬＨと低域側制御対象モデルＰＭＬＬとの各々について、予測誤差を演算し、演算した予測誤差を記憶する。
【０１４２】
ステップＳ３のモデル予測制御により、制御対象２は、目標軌道の終点に位置決めされる。そして、制御装置１００は、制御対象２の位置決め期間における、複数の制御対象モデルの予測誤差の時間変化を記憶する。
【０１４３】
次に、制御装置１００は、制御処理を終了するか否かを判断する（ステップＳ４）。例えば、制御装置１００は、次の位置決め指令を上位制御部から受けていない場合に、制御処理を終了すると判断する。制御処理を終了すると判断した場合（ステップＳ４でＹＥＳ）、制御装置１００による制御処理は終了する。
【０１４４】
制御処理を終了しないと判断した場合（ステップＳ４でＮＯ）、制御装置１００は、直近のステップＳ３で記憶した、複数の制御対象モデルの予測誤差を比較し、比較結果に基づいて振動周波数の値の変動の有無を判断する（ステップＳ５）。ステップＳ５において、制御装置１００は、振動周波数の値が変動している場合に、振動周波数の変動後の値を推定する。
【０１４５】
次に、制御装置１００は、第２動特性モデルＰＭＬの更新の要否を判断する（ステップＳ６）。制御装置１００は、振動周波数の値が変動している場合に、第２動特性モデルＰＭＬの更新が必要であると判断してもよい。もしくは、制御装置１００は、振動周波数の値が変動しており、かつ、図１０に示す画面３１において指示ボタン３１Ｅが操作された場合に、第２動特性モデルＰＭＬの更新が必要であると判断してもよい。
【０１４６】
第２動特性モデルの更新が不要である場合（ステップＳ６でＮＯ）、制御装置１００による制御処理は、ステップＳ３に戻る。第２動特性モデルＰＭＬの更新が必要である場合（ステップＳ６でＹＥＳ）、制御装置１００は、振動周波数の値ｆ０を推定された変動後の値に更新する。さらに、制御装置１００は、更新後値の値ｆ０に従って、第２動特性モデルＰＭＬ（基準制御対象モデルＰＭＬ０）と高域側制御対象モデルＰＭＬＨと低域側制御対象モデルＰＭＬＬとを更新する。ステップＳ６の後、制御装置１００による制御処理は、ステップＳ３に戻る。
【０１４７】
＜Ｊ．プログラミング例＞
本実施の形態に従う制御装置１００による制御処理は、制御装置１００で実行されるユーザプログラム１１２において命令を記述することで実行され得る。以下、本実施の形態に従う制御装置１００のプログラミングの一例について説明する。
【０１４８】
図１２は、本実施の形態に従う制御装置１００で実行される命令コードの一例を示す図である。図１２には、操作量計算部１５１および検出部１５２を一体化して機能化する例のモデル予測制御ファンクションブロック１１５が示される。モデル予測制御ファンクションブロック１１５（以下、「モデル予測制御ＦＢ１１５」という）は、第２動特性モデルの作成、モデル予測制御の実行、および振動周波数の変動の検出を規定するためのファンクションブロックである。上記のモデル予測制御モジュール１５０は、モデル予測制御ＦＢ１１５によって実現される。
【０１４９】
モデル予測制御ＦＢ１１５は、入力項目として、開始指示１１５Ａと、サンプリング周期１１５Ｂと、目標位置１１５Ｃと、モデルパラメータ１１５Ｄと、制御パラメータ１１５Ｅと、振動周波数１１５Ｆと、振幅比１１５Ｇと、計測値１１５Ｈと、検出用係数１１５Ｉと、振動周波数更新指示１１５Ｊとを含む。モデル予測制御ＦＢ１１５は、出力項目として、ステータス１１５Ｋと、操作量１１５Ｌと。予測誤差１１５Ｍと、推定振動周波数１１５Ｎとを含む。
【０１５０】
開始指示１１５Ａには、例えば、モデル予測制御を開始するための条件が設定される。サンプリング周期１１５Ｂには、モデル予測制御による演算を実行する制御周期が設定される。
【０１５１】
目標位置１１５Ｃには、予め定められた制御対象２の目標軌道を規定する複数の目標位置のデータ配列が設定される。
【０１５２】
モデルパラメータ１１５Ｄには、モデル作成モジュール１３０によって作成された第１動特性モデルＰＣＭを規定するためのモデルパラメータ（ｄ，ａ１〜ａｎ，ｂ１〜ｂｍ）が入力される。
【０１５３】
制御パラメータ１１５Ｅには、モデル予測制御で用いる予測ホライズンおよび参照軌道時定数が入力される。
【０１５４】
振動周波数１１５Ｆには、振動周波数の値ｆ０が入力される。なお、チューニングを行なった直後において、振動周波数１１５Ｆには、チューニングの際に計測された制御対象２の振動波形から抽出された振動周波数の値がｆ０として入力される。振動周波数更新指示１１５Ｊに更新指示が入力された場合において、振動周波数１１５Ｆには、推定振動周波数１１５Ｎから出力された振動周波数の変動後の値がｆ０として入力される。
【０１５５】
振幅比１１５Ｇには、チューニングの際に計測された制御対象２の振動波形から抽出された振幅比の値Ａｄｒが入力される。
【０１５６】
計測値１１５Ｈには、計測センサ２０から出力された計測値ＰＶが入力される。検出用係数１１５Ｉには、高域側制御対象モデルＰＭＬＨ１〜ＰＭＬＨｊおよび低域側制御対象モデルＰＭＬＬ１〜ＰＭＬＬｋを作成するための係数αＨ１〜αＨｊ，αＬ１〜αＬｋが入力される。係数αＨ１〜αＨｊ，αＬ１〜αＬｋは、制御対象２に応じて予め定められる。
【０１５７】
振動周波数更新指示１１５Ｊには、図１０に示す画面３１の指示ボタン３１Ｅが操作されたことに応じて、振動周波数の更新指示が入力される。
【０１５８】
また、ステータス１１５Ｋからは、モデル予測制御ＦＢ１１５による処理の実行状態を示す値が出力される。
【０１５９】
操作量１１５Ｌからは、第１動特性モデルおよび第２動特性モデルを用いたモデル予測制御により計算された操作量ＭＶが出力される。
【０１６０】
予測誤差１１５Ｍからは、基準制御対象モデルＰＭＬ０（第２動特性モデルＰＭＬと同一）、高域側制御対象モデルＰＭＬＨ１〜ＰＭＬＨｊおよび低域側制御対象モデルＰＭＬＬ１〜ＰＭＬＬｋの各々に対応する予測誤差が出力される。
【０１６１】
推定振動周波数１１５Ｎからは、基準制御対象モデルＰＭＬ０、高域側制御対象モデルＰＭＬＨ１〜ＰＭＬＨｊおよび低域側制御対象モデルＰＭＬＬ１〜ＰＭＬＬｋの予測誤差の比較結果に基づいて推定された、振動周波数の変動後の値が出力される。
【０１６２】
＜Ｋ．シミュレーション結果＞
図１３は、参考形態におけるシミュレーション結果の一例を示す図である。図１３には、モデル予測制御を行なうことなく、目標軌道から生成される指令値をサーボドライバ２００に直接出力した場合のシミュレーション結果が示される。図１３には、以下の条件下でのシミュレーション結果が示される。
・制御対象２の固有振動周波数を９．２Ｈｚとした。
・目標軌道を４００ｍｓで制御対象を１００ｍｍ移動させる５次軌道とした。
【０１６３】
図１３に示されるように、制御対象２の出力であるワーキングプレート３の位置（負荷位置）は、目標位置に対して大きく振動することがわかる。
【０１６４】
図１４は、本実施の形態におけるシミュレーション結果の一例を示す図である。図１５は、本実施の形態におけるシミュレーション結果の別の例を示す図である。図１６は、本実施の形態におけるシミュレーション結果のさらに別の例を示す図である。図１４〜図１６には、以下の条件下でのシミュレーション結果が示される。
・制御対象２の振動周波数が９．２Ｈｚであるときの第２動特性モデルＰＭＬを用いた。
・目標軌道を４００ｍｓで制御対象２を１００ｍｍ移動させる５次軌道とした。
・リセットモデル型のモデル予測制御に従って指令値が生成されるように設定した。
・係数αＨを１．１に設定した高域側制御対象モデルＰＭＬＨを作成した。すなわち、高域側制御対象モデルＰＭＬＨは、制御対象の振動周波数が１．１×９．２Ｈｚであると仮定したときのモデルである。
・係数αＬを０．９に設定した低域側制御対象モデルＰＭＬＬを作成した。すなわち、低域側制御対象モデルＰＭＬＬは、制御対象の振動周波数が０．９×９．２Ｈｚであると仮定したときのモデルである。
【０１６５】
図１４の最左列の（ａ）には、制御対象２の固有振動周波数を９．２Ｈｚとしたときのシミュレーション結果が示される。図１４の左から２列目の（ｂ）には、制御対象２の固有振動周波数を９．２Ｈｚの１．０３倍に変動させたときのシミュレーション結果が示される。図１４の左から３列目の（ｃ）には、制御対象２の固有振動周波数を９．２Ｈｚの１．０５倍に変動させたときのシミュレーション結果が示される。図１４の左から４列目の（ｄ）には、制御対象２の固有振動周波数を９．２Ｈｚの１．０７倍に変動させたときのシミュレーション結果が示される。
【０１６６】
図１５の最左列の（ａ）には、制御対象２の固有振動周波数を９．２Ｈｚの１．０９倍に変動させたときのシミュレーション結果が示される。図１５の左から２列目の（ｂ）には、制御対象２の固有振動周波数を９．２Ｈｚの１．２倍に変動させたときのシミュレーション結果が示される。図１５の左から３列目の（ｃ）には、制御対象２の固有振動周波数を９．２Ｈｚの０．９７倍に変動させたときのシミュレーション結果が示される。図１５の左から４列目の（ｄ）には、制御対象２の固有振動周波数を９．２Ｈｚの０．９５倍に変動させたときのシミュレーション結果が示される。
【０１６７】
図１６の最左列の（ａ）には、制御対象２の固有振動周波数を９．２Ｈｚの０．９３倍に変動させたときのシミュレーション結果が示される。図１６の左から２列目の（ｂ）には、制御対象２の固有振動周波数を９．２Ｈｚの０．９１倍に変動させたときのシミュレーション結果が示される。図１６の左から３列目の（ｃ）には、制御対象２の固有振動周波数を９．２Ｈｚの０．８倍に変動させたときのシミュレーション結果が示される。
【０１６８】
図１４〜１６において、各列の上段には、目標位置の時間変化つまり目標軌道が示される。目標軌道は５次軌道である。各列の中段には、目標位置と負荷位置との時間変化が示される。図１３と比較して、モデル予測制御を行なうことにより、振動が抑制されていることがわかる。各列の下段には、基準制御対象モデルＰＭＬ０に対応する予測誤差ＰＥと、高域側制御対象モデルＰＭＬＨに対応する予測誤差ＰＥＨと、低域側制御対象モデルＰＭＬＬに対応する予測誤差ＰＥＬとの時間変化が示される。上段および中段のグラフの横軸の目盛りは、下段のグラフの横軸の目盛りと同じである。
【０１６９】
図１４（ａ）に示されるように、第２動特性モデルＰＭＬに設定される振動周波数の値と制御対象２の振動周波数の値とが一致している場合、第２動特性モデルＰＭＬを用いたモデル予測制御により、目標位置に対する追従性が高く、振動も抑制される。第２動特性モデルＰＭＬに設定される振動周波数の値ｆ０と制御対象２の振動周波数の値とが一致しているため、基準制御対象モデルＰＭＬ０に対応する予測誤差ＰＥの変化幅が他の予測誤差ＰＥＨ，ＰＥＬの変化幅よりも小さくなっている。
【０１７０】
図１４（ｂ）〜（ｄ）および図１５（ａ）（ｂ）に示されるように、制御対象２の振動周波数の値が第２動特性モデルＰＭＬに設定される振動周波数の値ｆ０よりも高域側に変動すると、その変動量が増えるに従って目標位置に対する追従性が低下する。
【０１７１】
図１４（ｂ）〜（ｄ）および図１５（ａ）（ｂ）に示されるように、制御対象２の振動周波数の値が高域側に変動するにつれて、高域側制御対象モデルＰＭＬＨに対応する予測誤差ＰＥＨの変化幅が小さくなっている。制御対象２の振動周波数の値が高域側制御対象モデルＰＭＬＨに設定される振動周波数の値ｆＨに最も近いときに、予測誤差ＰＥＨの変化幅が最も小さくなっている（図１５（ａ）参照）。
【０１７２】
逆に、基準制御対象モデルＰＭＬ０に設定される振動周波数の値ｆ０から制御対象２の振動周波数の値が遠くなるにつれて、基準制御対象モデルＰＭＬ０に対応する予測誤差ＰＥの変化幅が大きくなっている。制御対象２の振動周波数の値が高域側制御対象モデルＰＭＬＨに設定される振動周波数の値ｆＨよりも基準制御対象モデルＰＭＬ０に設定される振動周波数の値ｆ０に近い場合、予測誤差ＰＥの変化幅が予測誤差ＰＥＨの変化幅よりも小さい（図１４（ｂ）参照）。制御対象２の振動周波数の値が高域側制御対象モデルＰＭＬＨに設定される振動周波数の値ｆＨと基準制御対象モデルＰＭＬ０に設定される振動周波数の値ｆ０との中心である場合、予測誤差ＰＥの変化幅と予測誤差ＰＥＨの変化幅とは略同じである（図１４（ｃ）参照）。制御対象２の振動周波数の値が基準制御対象モデルＰＭＬ０に設定される振動周波数の値ｆ０よりも高域側制御対象モデルＰＭＬＨに設定される振動周波数の値ｆＨに近い場合、予測誤差ＰＥＨの変化幅が予測誤差ＰＥの変化幅よりも小さい（図１４（ｄ）、図１５（ａ）（ｂ）参照）。
【０１７３】
図１５（ｃ）（ｄ）および図１６（ａ）〜（ｃ）に示されるように、制御対象２の振動周波数の値が低域側に変動するにつれて、低域側制御対象モデルＰＭＬＬに対応する予測誤差ＰＥＬの変化幅が小さくなっている。制御対象２の振動周波数の値が低域側制御対象モデルＰＭＬＬに設定される振動周波数の値ｆＬに最も近いときに、予測誤差ＰＥＬの変化幅が最も小さくなっている（図１６（ｂ）参照）。
【０１７４】
逆に、基準制御対象モデルＰＭＬ０に設定される振動周波数の値ｆ０から制御対象２の振動周波数の値が遠くなるにつれて、基準制御対象モデルＰＭＬ０に対応する予測誤差ＰＥの変化幅が大きくなっている。制御対象２の振動周波数の値が低域側制御対象モデルＰＭＬＬに設定される振動周波数の値ｆＬよりも基準制御対象モデルＰＭＬ０に設定される振動周波数の値ｆ０に近い場合、予測誤差ＰＥの変化幅が予測誤差ＰＥＬの変化幅よりも小さい（図１５（ｃ）参照）。制御対象２の振動周波数の値が低域側制御対象モデルＰＭＬＬに設定される振動周波数の値ｆＬと基準制御対象モデルＰＭＬ０に設定される振動周波数の値ｆ０との中心である場合、予測誤差ＰＥの変化幅と予測誤差ＰＥＬの変化幅とは略同じである（図１５（ｄ）参照）。制御対象２の振動周波数の値が基準制御対象モデルＰＭＬ０に設定される振動周波数の値ｆ０よりも低域側制御対象モデルＰＭＬＬに設定される振動周波数の値ｆＬに近い場合、予測誤差ＰＥＬの変化幅が予測誤差ＰＥの変化幅よりも小さい（図１６（ａ）〜（ｃ）参照）。
【０１７５】
このように、制御対象２の振動周波数の値の変動に応じて、予測誤差ＰＥ，ＰＥＨ，ＰＥＬの変化幅が変化する。このことから、予測誤差ＰＥ，ＰＥＨ，ＰＥＬの変化幅を比較することにより、制御対象２の振動周波数の変動後の値を推定することができる。予測誤差ＰＥ，ＰＥＨ，ＰＥＬの変化幅は、制御開始から目標位置が停止するまでの期間（すなわち制御対象が移動している期間）で大きくなりやすい。そのため、制御開始から目標位置が停止するまでの比較対象区間（図１４〜図１６に示す例では０〜０．４秒の区間）における予測誤差ＰＥ，ＰＥＨ，ＰＥＬの変化幅を比較すればよい。変化幅は、比較対象区間における最大値と最小値との差である。
【０１７６】
図１４（ａ）および（ｂ）の下段において、予測誤差ＰＥ，ＰＥＨおよびＰＥＬのうち予測誤差ＰＥの変化幅が最も小さい。そのため、図１４（ａ）および（ｂ）の下段に示す予測誤差が得られた場合、検出部１５２は、振動周波数の変動がないと判断すればよい（上記の判断基準１参照）。この場合、第２動特性モデルＰＭＬの振動周波数の値ｆ０は更新されない。
【０１７７】
なお、図１４（ｂ）の下段では、予測誤差ＰＥＨの変化幅と予測誤差ＰＥの変化幅との差が予測誤差ＰＥＬの変化幅と予測誤差ＰＥの変化幅との差よりも小さい。そのため、図１４（ｂ）の下段に示す予測誤差が得られた場合、検出部１５２は、振動周波数の値が変動していると判断し、振動周波数の変動後の値をｆ０から（ｆ０＋ｆＨ）／２までの値と推定すればよい（上記の判断基準２参照）。
【０１７８】
図１４（ｃ）の下段において、予測誤差ＰＥの変化幅と予測誤差ＰＥＨの変化幅とは、ほぼ同じであり、予測誤差ＰＥＬの変化幅よりも小さい。そのため、図１４（ｃ）の下段に示す予測誤差が得られた場合、検出部１５２は、振動周波数の値が変動していると判断し、振動周波数の変動後の値を（ｆ０＋ｆＨ）／２と推定すればよい（上記の判断基準４参照）。
【０１７９】
図１４（ｄ）および図１５（ａ）（ｂ）の下段において、予測誤差ＰＥ，ＰＥＨおよびＰＥＬのうち予測誤差ＰＥＨの変化幅が最も小さい。そのため、図１４（ｄ）および図１５（ａ）（ｂ）の下段に示す予測誤差が得られた場合、検出部１５２は、振動周波数の値が変動していると判断し、振動周波数の変動後の値をｆＨと推定すればよい（上記の判断基準６参照）。
【０１８０】
図１５（ｃ）の下段において、予測誤差ＰＥ，ＰＥＨおよびＰＥＬのうち予測誤差ＰＥの変化幅が最も小さい。そのため、図１５（ｃ）の下段に示す予測誤差が得られた場合、検出部１５２は、振動周波数の変動がないと判断すればよい（上記の判断基準１参照）。この場合、第２動特性モデルＰＭＬに設定される振動周波数の値ｆ０は更新されない。
【０１８１】
図１５（ｄ）の下段において、予測誤差ＰＥの変化幅と予測誤差ＰＥＬの変化幅とは、略同じであり、予測誤差ＰＥＨの変化幅よりも小さい。そのため、図１５（ｄ）の下段に示す予測誤差が得られた場合、検出部１５２は、振動周波数の値が変動していると判断し、振動周波数の変動後の値を（ｆ０＋ｆＬ）／２と推定すればよい（上記の判断基準５参照）。
【０１８２】
図１６（ａ）〜（ｃ）の下段において、予測誤差ＰＥ，ＰＥＨおよびＰＥＬのうち予測誤差ＰＥＬの変化幅が最も小さい。そのため、図１６（ａ）〜（ｃ）の下段に示す予測誤差が得られた場合、検出部１５２は、振動周波数の値の変動が変動していると判断し、振動周波数の変動後の値をｆＬと推定すればよい（上記の判断基準７参照）。
【０１８３】
＜Ｌ．利点＞
以上のように、本実施の形態に係る制御装置１００は、制御対象２の出力の計測値ＰＶを取得するための取得部であるフィールドバスコントローラ１２２と、制御対象２の出力の振動に関与する制御対象２の物理量（例えば振動周波数）の値の変動を検出するための検出部１５２とを備える。検出部１５２は、物理量の互いに異なる値を用いて作成された複数の制御対象モデルの各々について、当該制御対象モデルを用いて制御対象２の出力の予測値を演算する。さらに、検出部１５２は、計測値と複数の制御対象モデルそれぞれの予測値との予測誤差の比較結果に基づいて、物理量の値の変動を検出する。
【０１８４】
上記の構成によれば、予測誤差は、制御対象モデルを作成する際に用いた物理量の値と実際の制御対象２の物理量の値との差が小さいほど小さくなる。そのため、制御装置１００は、特許文献１のように基準状態での第１関係値を予め測定することなく、複数の制御対象モデルの予測誤差を比較することによって、制御対象２の物理量の値の変動を容易に検出できる。
【０１８５】
制御装置１００は、物理量の値に応じて設定された関数ＰＭＬ（ｚ−１）によって規定されるモデルを用いたモデル予測制御により、制御対象２を制御するための操作量ＭＶを生成するための制御部である操作量計算部１５１をさらに備える。検出部１５２は、物理量の値の変動を検出した場合に、物理量の変動後の値を推定する。関数ＰＭＬ（ｚ−１）は、変動後の値に応じて更新される。
【０１８６】
上記の構成によれば、物理量の変動後の値に応じて更新された関数ＰＭＬ（ｚ−１）を用いて指令値が生成されるため、目標位置に対する追従性および制振性能を向上させることができる。さらに、物理量の値の変動に対するロバスト性が向上する。
【０１８７】
制御装置１００は、変動後の値に応じて関数ＰＭＬ（ｚ−１）を更新する指示を受け付けるためのＨＭＩ３０と接続される。関数ＰＭＬ（ｚ−１）は、ＨＭＩ３０が指示を受け付けたときに更新される。上記の構成によれば、ユーザは、関数ＰＭＬ（ｚ−１）の更新の適否を確認してから、関数ＰＭＬ（ｚ−１）を更新することができる。すなわち、ユーザの確認のない状態で関数ＰＭＬ（ｚ−１）が更新されることを避けることができる。
【０１８８】
上記の判断基準６〜８，１０のように、検出部１５２は、複数の制御対象モデルのうち、予測誤差の変化幅が最小の制御対象モデルに対応する物理量の値を変動後の値として推定する。もしくは、上記の判断基準２〜５，９，１１のように、検出部１５２は、複数の制御対象モデルのうち予測誤差の変化幅が最小の制御対象モデルに対応する物理量の値と、複数の制御対象モデルのうち予測誤差の変化幅が２番目に小さい制御対象モデルに対応する物理量の値との間の値を、変動後の値として推定してもよい。このようにして、物理量の変動後の値が容易に推定される。
【０１８９】
＜Ｍ．変形例＞
＜Ｍ−１．変形例１＞
上記の説明では、検出部１５２は、操作量ＭＶを第１動特性モデルＰＣＭに入力することにより得られるモータ位置の予測値ＹＭを各制御対象モデルに入力する。しかしながら、検出部１５２は、モータ位置の計測値ＰＶＭ（図３参照）を各制御対象モデルに入力することにより、負荷位置の予測値を演算してもよい。
【０１９０】
＜Ｍ−２．変形例２＞
上記の説明では、制御装置１００は、第１動特性モデルＰＣＭおよび第２動特性モデルＰＭＬを用いたモデル予測制御により操作量ＭＶを計算し、当該操作量ＭＶを指令値としてサーボドライバ２００に出力するものとした。しかしながら、制御装置は、制御対象の物理量（例えば振動周波数）の値に応じて設定されるフィルタを用いて指令値を生成してもよい。
【０１９１】
図１７は、変形例２に係る制御装置の機能構成を示す模式図である。変形例２に係る制御装置１００Ａは、図３に示す制御装置１００と比較して、制御ユニット１６０の代わりに制御ユニット１６０Ａを備える点で相違する。制御ユニット１６０Ａは、制御ユニット１６０と比較して、モデル作成モジュール１３０およびモデル予測制御モジュール１５０の代わりに、補正モジュール１７０および検出モジュール１８０を含む点で相違する。
【０１９２】
補正モジュール１７０は、逆特性フィルタＦＴを用いて、目標軌道から生成される指令値（指令位置）である目標位置ＳＰを補正し、補正後の指令値をサーボドライバ２００に与える。
【０１９３】
逆特性フィルタＦＴは、制御対象２の振動周波数の値に応じて設定される。逆特性フィルタＦＴは、サーボモータ３００の位置から制御対象２の位置までの伝達特性の逆特性を示すフィルタである。逆特性フィルタＦＴは、例えば上記の第２動特性モデルＰＭＬの逆特性を示し、以下の［数８］の式で示される。ω０は、振動角周波数であり、ω０＝２*π*ｆ０で示される。例えば、目標軌道が５次軌道である場合、［数８］の右辺第２項は、５次軌道を２回微分して加速度データを求め、１次遅れ演算を加えることで算出される。
【０１９４】
【数８】
2020129292.tif 000010
【０１９５】
逆特性フィルタＦＴがサーボモータ３００の位置から制御対象２の位置までの伝達特性の逆特性を示すため、振動周波数のゲインを低減することができる。その結果、逆特性フィルタＦＴにより補正された指令値をサーボドライバ２００に与えることにより、制御対象２の振動が抑制される。
【０１９６】
逆特性フィルタＦＴは、上記の第２動特性モデルＰＭＬと同様に、チューニングの際に得られた制御対象２の振動波形に基づいて作成される。具体的には、振動波形から抽出される振動周波数の値をｆ０とし、振幅比の値Ａｄｒから算出される減衰比の値をζとして、上記の［数８］に従って逆特性フィルタＦＴが作成される。なお、振幅比の値Ａｄｒを取得できない場合には、Ａｄｒ＝１と仮定し、ζ＝０とすればよい。その後、逆特性フィルタＦＴは、検出モジュール１８０によって推定された、振動周波数の変動後の値をｆ０とすることにより更新される。
【０１９７】
検出モジュール１８０は、上記の検出部１５２と同様に、複数の制御対象モデルの各々について予測誤差を演算し、複数の制御対象モデルの予測誤差の比較結果に基づいて、制御対象２の物理量（ここでは振動周波数）の値の変動を検出する。
【０１９８】
図１８は、検出モジュールによる物理量の変動検出の演算例を示す図である。検出モジュール１８０は、上記の検出部１５２と同様の方法により、制御対象２が取り得る動特性を示す複数の制御対象モデルを作成する。すなわち、検出モジュール１８０は、現状の逆特性フィルタＦＴに対応する振動角周波数の値ω０および減衰比ζを用いて、上記の［数３］〜［数５］のいずれかの関数ＰＭＬ（ｓ）で示される基準制御対象モデルＰＭＬ０を作成する。さらに、検出モジュール１８０は、上記の数［６］の関数ＰＭＬＨ（ｓ）で示される高域側制御対象モデルＰＭＬＨと、上記の数［７］の関数ＰＭＬＬ（ｓ）で示される低域側制御対象モデルＰＭＬＬとを作成する。
【０１９９】
なお、図１８に示す例では、検出モジュール１８０は、４つの高域側制御対象モデルＰＭＬＨ１〜ＰＭＬＨ４を作成し、４つの低域側制御対象モデルＰＭＬＬ１〜ＰＭＬＬ４を作成している。高域側制御対象モデルＰＭＬＨ１〜ＰＭＬＨ４は、以下の数［９］の関数ＰＭＬＨ１（ｓ）〜ＰＭＬＨ４（ｓ）でそれぞれ示される。低域側制御対象モデルＰＭＬＬ１〜ＰＭＬＬ４は、以下の数［１０］の関数ＰＭＬＬ１（ｓ）〜ＰＭＬＬ４（ｓ）でそれぞれ示される。
【０２００】
【数９】
2020129292.tif 000011
【０２０１】
【数１０】
2020129292.tif 000012
【０２０２】
関数ＰＭＬＨｉ（ｓ）において、ωＨｉは、振動角周波数であり、ωＨｉ＝２*π*ｆＨｉで示される。ｆＨｉは、基準制御対象モデルＰＭＬ０を作成する際に用いる振動周波数の値ｆ０よりも高域側の振動周波数の値を示し、ｆＨｉ＝αＨｉ*ｆ０で示される。αＨｉは１よりも大きい係数である。関数ＰＭＬＬｉ（ｓ）において、ωＬｉは、振動角周波数であり、ωＬｉ＝２*π*ｆＬｉで示される。ｆＬｉは、基準制御対象モデルＰＭＬ０を作成する際に用いる振動周波数の値ｆ０よりも低域側の振動周波数の値を示し、ｆＬｉ＝αＬｉ*ｆ０で示される。αＬｉは１よりも小さい係数である。
【０２０３】
検出モジュール１８０は、複数の制御対象モデルの各々について、当該制御対象モデルを用いて負荷位置の予測値を演算する。
【０２０４】
図１８に示す例では、検出モジュール１８０は、サーボモータ３００の位置の計測値ＰＶＭを基準制御対象モデルＰＭＬ０に入力することにより負荷位置の予測値ＹＬを演算する。同様に、検出モジュール１８０は、計測値ＰＶＭを高域側制御対象モデルＰＭＬＨ１〜ＰＭＬＨ４に入力することにより負荷位置の予測値ＹＬＨ１〜ＹＬＨ４をそれぞれ演算する。検出モジュール１８０は、計測値ＰＶＭを低域側制御対象モデルＰＭＬＬ１〜ＰＭＬＬ４に入力することにより負荷位置の予測値ＹＬＬ１〜ＹＬＬ４をそれぞれ演算する。
【０２０５】
検出モジュール１８０は、複数の制御対象モデルの各々について、負荷位置の計測値ＰＶと負荷位置の予測値との予測誤差を演算し、複数の制御対象モデルに対応する予測誤差を比較する予測誤差比較処理１５４を実行する。図１８に示す例では、予測値ＹＬ，ＹＬＨ１〜ＹＬＨ４，ＹＬＬ１〜ＹＬＬ４から予測誤差ＰＥ，ＰＥＨ１〜ＰＥＨ４，ＰＥＬ１〜ＰＥＬ４がそれぞれ演算される。
【０２０６】
検出モジュール１８０は、予測誤差比較処理１５４の結果に基づいて、振動周波数の値の変動を検出するとともに、振動周波数の値が変動している場合に、振動周波数の変動後の値を推定する。当該検出方法および推定方法は、検出部１５２と同じである。そのため、当該検出方法および推定方法の詳細な説明を省略する。
【０２０７】
補正モジュール１７０は、検出モジュール１８０によって推定された変動後の値に応じて、逆特性フィルタＦＴを更新することが好ましい。具体的には、補正モジュール１７０は、振動周波数の値ｆ０を推定された変動後の値に更新し、更新後の振動周波数の値ｆ０を用いて、上記の［数８］に従って逆特性フィルタＦＴを更新すればよい。
【０２０８】
なお、補正モジュール１７０は、検出モジュール１８０によって変動後の値が推定されると、自動的に逆特性フィルタＦＴを更新してもよい。もしくは、補正モジュール１７０は、図１０に示す画面３１をＨＭＩ３０に表示し、ＨＭＩ３０が更新指示を受け付けたときに、推定された変動後の値に応じて逆特性フィルタＦＴを更新してもよい。
【０２０９】
図１９は、変形例２に係る制御装置の制御処理の流れを示すフローチャートである。まず、制御装置１００Ａは、サーボドライバ２００に対してチューニングを実行させ、チューニングの際に計測センサ２０によって計測された振動波形から振動周波数の値ｆ０および振幅比の値Ａｄｒを抽出する。そして、制御装置１００Ａは、振動周波数の値ｆ０および振幅比の値Ａｄｒに基づいて逆特性フィルタＦＴを作成するとともに、基準制御対象モデルＰＭＬ０を作成する（ステップＳ１１）。
【０２１０】
次に、制御装置１００は、係数αＨ，αＬを設定し、高域側制御対象モデルＰＭＬＨ（ＰＭＬＨ１〜ＰＭＬＨ４）と低域側制御対象モデルＰＭＬＬ（ＰＭＬＬ１〜ＰＭＬＬ４）とを作成する（ステップＳ２）。
【０２１１】
次に、ステップＳ１３において、制御装置１００Ａは、逆特性フィルタＦＴを用いて指令値の補正を実行する。さらに、制御装置１００Ａは、基準制御対象モデルＰＭＬ０と高域側制御対象モデルＰＭＬＨ（ＰＭＬＨ１〜ＰＭＬＨ４）と低域側制御対象モデルＰＭＬＬ（ＰＭＬＬ１〜ＰＭＬＬ４）との各々について予測誤差を演算し、演算した予測誤差を記憶する。
【０２１２】
ステップＳ１３の処理によって、制御対象２は、目標軌道の終点に位置決めされる。そして、制御装置１００Ａは、制御対象２の位置決めの期間における、複数の制御対象モデルの予測誤差の時間変化を記憶する。
【０２１３】
次に、制御装置１００Ａは、制御処理を終了するか否かを判断する（ステップＳ４）。制御処理を終了すると判断した場合（ステップＳ４でＹＥＳ）、制御装置１００Ａによる制御処理は終了する。
【０２１４】
制御処理を終了しないと判断した場合（ステップＳ４でＮＯ）、制御装置１００Ａは、直近のステップＳ１３で記憶した、複数の制御対象モデルの予測誤差を比較し、比較結果に基づいて振動周波数の値の変動の有無を判断する（ステップＳ５）。ステップＳ５において、制御装置１００Ａは、振動周波数の値が変動していると判断した場合に、振動周波数の変動後の値を推定する。
【０２１５】
そして、制御装置１００Ａは、逆特性フィルタＦＴの更新の要否を判断する（ステップＳ１６）。制御装置１００Ａは、振動周波数の値の変動が検出された場合に、逆特性フィルタＦＴの更新が必要であると判断してもよい。もしくは、制御装置１００Ａは、振動周波数の値の変動が検出され、かつ、図１０に示す画面３１において指示ボタン３１Ｅが操作された場合に、逆特性フィルタＦＴの更新が必要であると判断してもよい。
【０２１６】
逆特性フィルタＦＴの更新が不要である場合（ステップＳ１６でＮＯ）、制御装置１００Ａによる制御処理は、ステップＳ１３に戻り、次の位置決めが行なわれる。逆特性フィルタＦＴの更新が必要である場合（ステップＳ１６でＹＥＳ）、制御装置１００Ａは、振動周波数の値ｆ０を、推定された変動後の値に更新する。さらに、制御装置１００Ａは、更新後の振動周波数の値ｆ０に従って、逆特性フィルタＦＴと基準制御対象モデルＰＭＬ０と高域側制御対象モデルＰＭＬＨと低域側制御対象モデルＰＭＬＬとを更新する（ステップＳ１７）。ステップＳ１７の後、制御装置１００Ａによる制御処理は、ステップＳ１３に戻り、次の位置決めが行なわれる。
【０２１７】
図２０は、変形例２におけるシミュレーション結果の一例を示す図である。図２１は、変形例２におけるシミュレーション結果の別の例を示す図である。図２２は、変形例２におけるシミュレーション結果のさらに別の例を示す図である。図２１〜図２２には、以下の条件下でのシミュレーション結果が示される。
・制御対象の振動周波数が９．２Ｈｚであるときの逆特性フィルタＦＴを用いた。
・目標軌道を４００ｍｓで制御対象を１００ｍｍ移動させる５次軌道とした。
・係数αＨを１．０２，１．０４，１．０６，１．０８に設定した高域側制御対象モデルＰＭＬＨ１〜ＰＭＬＨ４をそれぞれ作成した。
・係数αＬを０．９８，０．９６，０．９４，０．９２に設定した低域側制御対象モデルＰＭＬＬ１〜ＰＭＬＬ４をそれぞれ作成した。
【０２１８】
図２０には、制御対象の固有振動周波数を９．２Ｈｚとしたときのシミュレーション結果が示される。図２１には、制御対象の固有振動周波数を９．２Ｈｚの１．０７倍に変動させたときのシミュレーション結果が示される。図２２には、制御対象の固有振動周波数を９．２Ｈｚの０．９８倍に変動させたときのシミュレーション結果が示される。
【０２１９】
図２０〜２１において、（ａ）には、目標位置の時間変化つまり目標軌道が示される。目標軌道は５次軌道である。（ｂ）には、目標位置と負荷位置との時間変化が示される。（ｃ）には、基準制御対象モデルＰＭＬ０に対応する予測誤差ＰＥと、高域側制御対象モデルＰＭＬＨ１〜ＰＭＬＨ４にそれぞれ対応する予測誤差ＰＥＨ１〜ＰＥＨ４と、低域側制御対象モデルＰＭＬＬ１〜ＰＭＬＬ４にそれぞれ対応する予測誤差ＰＥＬ１〜ＰＥＬ４との時間変化が示される。
【０２２０】
図２０に示されるように、逆特性フィルタＦＴに設定される振動周波数の値と制御対象２の振動周波数の値とが一致している場合、目標位置に対する追従性が高く、振動も抑制される。逆特性フィルタＦＴに設定される振動周波数の値と制御対象２の振動周波数の値とが一致しているため、基準制御対象モデルＰＭＬ０に対応する予測誤差ＰＥの変化幅ΔＰＥが他の予測誤差の変化幅よりも小さくなっている。そのため、図２０（ｃ）に示す予測誤差が得られた場合、検出モジュール１８０は、振動周波数の変動がないと判断すればよい（上記の判断基準１参照）。
【０２２１】
図２１に示す例では、制御対象２の振動周波数の値が逆特性フィルタＦＴに設定される振動周波数の値から僅かに変動しているものの、図２０に示す例と比較して、制振性の差はほとんど見られない（図２１の（ｂ）参照）。図２２に示す例では、図２０に示す例と比較して、僅かに制振性が低下している（図２２の（ｂ）参照）。このように制振性の変化は僅かであるものの、（ｃ）に示されるように、予測誤差は大きく変化する。そのため、予測誤差から振動周波数の値の変動を検出できる。
【０２２２】
図２１に示す例では、高域側制御対象モデルＰＭＬＨ３に対応する予測誤差ＰＥＨ３の変化幅ΔＰＥＨ３と高域側制御対象モデルＰＭＬＨ４に対応する予測誤差ＰＥＨ４の変化幅ΔＰＥＨ４とが同程度であり、他の予測誤差の変化幅よりも小さくなっている。そのため、図２１（ｃ）に示す予測誤差が得られた場合、検出モジュール１８０は、振動周波数の値の変動を検出し、振動周波数の変動後の値を（ｆＨ３＋ｆＨ４）／２と推定すればよい（上記の判断基準９参照）。
【０２２３】
図２２に示す例では、低域側制御対象モデルＰＭＬＬ１に対応する予測誤差ＰＥＬ１の変化幅ΔＰＥＬ１が他の予測誤差の変化幅よりも小さくなっている。そのため、図２２（ｃ）に示す予測誤差が得られた場合、検出モジュール１８０は、振動周波数の値の変動を検出し、振動周波数の変動後の値をｆＬ１と推定すればよい（上記の判断基準１０参照）。
【０２２４】
＜Ｍ−３．変形例３＞
上記の説明では、ある停止位置までの位置決め（図１１のステップＳ３、図１９のステップＳ１３）が終了した後に、振動周波数の変動後の値が推定され、第２動特性モデルＰＭＬまたは逆特性フィルタＦＴが更新される。そのため、次の位置決めでは制振性能および目標軌道への追従性が向上する。
【０２２５】
しかしながら、ある停止位置までの位置決めの途中に、振動周波数の変動後の値が推定され、第２動特性モデルＰＭＬまたは逆特性フィルタＦＴが更新されてもよい。例えば、目標位置が停止する前の移動中に振動周波数の変動が検出され、第２動特性モデルＰＭＬまたは逆特性フィルタＦＴが更新される。あるいは、停止と移動とを複数回繰り返して実行する場合に、途中の停止時に、第２動特性モデルＰＭＬまたは逆特性フィルタＦＴが更新されてもよい。
【０２２６】
＜Ｍ−４．変形例４＞
上記の説明では、検出部１５２および検出モジュール１８０が制御対象２の物理量として振動周波数の値の変動を検出する例について説明した。しかしながら、検出部１５２および検出モジュール１８０は、制御対象２の物理量として振動周波数以外のパラメータの値の変動を検出してもよい。物理量としては、例えば、質量、イナーシャ、摩擦係数（例えば粘性摩擦係数）、ばね定数などがあり得る。
【０２２７】
さらに、１つの物理量ではなく、複数の物理量（例えば、質量、イナーシャ、粘性摩擦係数およびばね定数の３つの物理量）の値の変動が検出されてもよい。この場合、質量、イナーシャ、粘性摩擦係数およびばね定数の各々の値が互いに異なる複数の制御対象を仮定し、当該複数の制御対象にそれぞれ対応する複数の制御対象モデルを作成すればよい。
【０２２８】
＜Ｍ−５．変形例５＞
上記の説明では、高域側制御対象モデルＰＭＬＨと低域側制御対象モデルＰＭＬＬとの両者が作成されるものとした。しかしながら、制御対象２の物理量の変動方向が高域側および低域側の一方に限られる場合には、高域側制御対象モデルＰＭＬＨおよび低域側制御対象モデルＰＭＬＬのうち物理量の変動方向に対応するモデルのみが作成されてもよい。
【０２２９】
＜Ｎ．付記＞
以上のように、本実施の形態および変形例は以下のような開示を含む。
【０２３０】
（構成１）
制御対象（２）を制御する制御装置（１００，１００Ａ）であって、
前記制御対象（２）の出力の計測値を取得するための取得部（１２２）と、
前記制御対象（２）の出力の振動に関与する前記制御対象（２）の物理量の値の変動を検出するための検出部（１０２、１５２，１８０）とを備え、
前記検出部（１０２、１５２，１８０）は、
前記物理量の互いに異なる値を用いて作成された複数の制御対象モデルの各々について、当該制御対象モデルを用いて前記制御対象の出力の予測値を演算し、
前記計測値と前記複数の制御対象モデルそれぞれの前記予測値との誤差の比較結果に基づいて、前記物理量の値の変動を検出する、制御装置（１００，１００Ａ）。
【０２３１】
（構成２）
前記物理量の値に応じて設定された関数によって規定されるモデルを用いたモデル予測制御により、前記制御対象（２）を制御するための操作量を生成するための制御部（１０２，１５１）をさらに備え、
前記検出部（１０２，１５２，１８０）は、前記物理量の値の変動を検出した場合に、前記物理量の変動後の値を推定し、
前記関数は、前記変動後の値に応じて更新される、構成１に記載の制御装置（１００）。
【０２３２】
（構成３）
前記物理量の値に応じて設定された関数によって規定されるフィルタを用いて、目標軌道から生成される指令値を補正し、補正後の指令値を前記制御対象（２）に出力する補正部（１０２，１７０）をさらに備え、
前記検出部（１０２，１８０）は、前記物理量の値の変動を検出した場合に、前記物理量の変動後の値を推定し、
前記関数は、前記変動後の値に応じて更新される、構成１に記載の制御装置（１００Ａ）。
【０２３３】
（構成４）
前記制御装置（１００，１００Ａ）は、前記変動後の値に応じて前記関数を更新する指示を受け付けるためのヒューマンマシンインターフェイス（３０）と接続され、
前記関数は、前記ヒューマンマシンインターフェイス（３０）が前記指示を受け付けたときに更新される、構成２に記載の制御装置（１００，１００Ａ）。
【０２３４】
（構成５）
前記検出部（１０２，１５２，１８０）は、前記複数の制御対象モデルのうち、前記誤差の変化幅が最小の制御対象モデルに対応する前記物理量の値を前記変動後の値として推定する、構成２または３に記載の制御装置（１００，１００Ａ）。
【０２３５】
（構成６）
前記検出部（１０２，１５２，１８０）は、前記複数の制御対象モデルのうち前記誤差の変化幅が最小の制御対象モデルに対応する前記物理量の値と、前記複数の制御対象モデルのうち前記誤差の変化幅が２番目に小さい制御対象モデルに対応する前記物理量の値との間の値を、前記変動後の値として推定する、構成２または３に記載の制御装置（１００，１００Ａ）。
【０２３６】
（構成７）
前記物理量は、振動周波数、質量、イナーシャ、摩擦係数およびばね定数の少なくとも１つを含む、構成１から６のいずれかに記載の制御装置（１００，１００Ａ）。
【０２３７】
（構成８）
制御対象（２）を制御する制御装置（１００，１００Ａ）を実現するための制御プログラム（１１０，１１２）であって、
前記制御プログラム（１１０，１１２）は、コンピュータに、
前記制御対象（２）の出力の計測値を取得するステップと、
前記制御対象（２）の出力の振動に関与する前記制御対象（２）の物理量の値の変動を検出するステップとを実行させ、
前記検出するステップは、
前記物理量の互いに異なる値を用いて作成された複数の制御対象モデルの各々について、当該制御対象モデルを用いて前記制御対象の出力の予測値を演算するステップと、
前記計測値と前記複数の制御対象モデルそれぞれの前記予測値との誤差の比較結果に基づいて、前記物理量の値の変動を検出するステップとを含む、制御プログラム。
【０２３８】
本発明の実施の形態について説明したが、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０２３９】
１  制御システム、２  制御対象、３  ワーキングプレート、４  第１ベースプレート、６，９  ボールネジ、７  第２ベースプレート、２０，２０Ｘ，２０Ｙ  計測センサ、３１  画面、３１Ａ〜３１Ｄ  表示欄、３１Ｅ  指示ボタン、１００，１００Ａ  制御装置、１０１ａ，１０１ｂ  フィールドバス、１０１ｃ  ネットワーク、１０２  プロセッサ、１０４  チップセット、１０６  メインメモリ、１０８  フラッシュメモリ、１１０  システムプログラム、１１２  ユーザプログラム、１１２Ａ  シーケンスプログラム、１１２Ｂ  モーションプログラム、１１５  モデル予測制御ファンクションブロック、１１５Ａ  開始指示、１１５Ｂ  サンプリング周期、１１５Ｃ  目標位置、１１５Ｄ  モデルパラメータ、１１５Ｅ  制御パラメータ、１１５Ｆ  振動周波数、１１５Ｇ  振幅比、１１５Ｈ  計測値、１１５Ｉ  検出用係数、１１５Ｊ  更新指示、１１５Ｋ  ステータス、１１５Ｌ  操作量、１１５Ｍ  予測誤差、１１５Ｎ  推定振動周波数、１１６  外部ネットワークコントローラ、１１８  メモリカードインターフェイス、１２０  メモリカード、１２２，１２４  フィールドバスコントローラ、１３０  モデル作成モジュール、１４０  軌道生成モジュール、１５０  モデル予測制御モジュール、１５１  操作量計算部、１５２  検出部、１５４  予測誤差比較処理、１６０，１６０Ａ  制御ユニット、１７０  補正モジュール、１８０  検出モジュール、２００，２００Ｘ，２００Ｙ  サーボドライバ、３００，３００Ｘ，３００Ｙ  サーボモータ、４００  第１モデル対象、４０２  第２モデル対象、ＦＴ  逆特性フィルタ、ＰＣＭ  第１動特性モデル、ＰＭＬ  第２動特性モデル、ＰＭＬ０  基準制御対象モデル、ＰＭＬＨ  高域側制御対象モデル、ＰＭＬＬ  低域側制御対象モデル。
【図１】
2020129292.tif 000013
【図２】
2020129292.tif 000014
【図３】
2020129292.tif 000015
【図４】
2020129292.tif 000016
【図５】
2020129292.tif 000017
【図６】
2020129292.tif 000018
【図７】
2020129292.tif 000019
【図８】
2020129292.tif 000020
【図９】
2020129292.tif 000021
【図１０】
2020129292.tif 000022
【図１１】
2020129292.tif 000023
【図１２】
2020129292.tif 000024
【図１３】
2020129292.tif 000025
【図１４】
2020129292.tif 000026
【図１５】
2020129292.tif 000027
【図１６】
2020129292.tif 000028
【図１７】
2020129292.tif 000029
【図１８】
2020129292.tif 000030
【図１９】
2020129292.tif 000031
【図２０】
2020129292.tif 000032
【図２１】
2020129292.tif 000033
【図２２】
2020129292.tif 000034