(57)【要約】【課題】制御対象を実際に動作させる時間および回数を低減して、学習制御の調整工数を低減することが要望されている。【解決手段】制御装置は、第１の指令値を補正データに従って制御周期毎に出力される補正量で補償した第２の指令値を生成して制御演算手段へ出力する指令値生成手段と、第１の指令値と制御対象からのフィードバック値との偏差に基づいて、補正データを更新する学習演算手段と、補正データの初期値を決定する初期値決定手段とを含む。初期値決定手段は、制御演算手段に与えられる指令値と当該指令値に応答して制御対象に現れるフィードバック値との関係を示す応答特性を取得する特性取得手段と、第１の指令値を仮の補正データで補償した値と、応答特性とに基づいて、制御対象に現れるであろうフィードバック値を推定する推定手段と、第１の指令値と推定されたフィードバック値との偏差に基づいて仮の補正データを更新する更新手段とを含む。【選択図】図６
2019008416.tif 000002
【特許請求の範囲】
【請求項１】
制御対象を制御するための制御装置であって、
予め定められたパターンに従って制御周期毎に出力される第１の指令値を、補正データに従って制御周期毎に出力される補正量で補償した第２の指令値を生成して制御演算手段へ出力する指令値生成手段を備え、前記制御演算手段は、前記第２の指令値に従って前記制御対象に対する制御出力を算出し、
前記第１の指令値と前記制御対象からのフィードバック値との偏差に基づいて、前記補正データを更新する学習演算手段と、
前記学習演算手段による前記補正データに対する更新が実行されていない状態において用いられる、当該補正データの初期値を決定する初期値決定手段とを備え、
前記初期値決定手段は、
前記制御演算手段に与えられる指令値と当該指令値に応答して前記制御対象に現れるフィードバック値との関係を示す応答特性を取得する特性取得手段と、
前記第１の指令値を仮の補正データで補償した値と、前記応答特性とに基づいて、前記制御対象に現れるであろうフィードバック値を推定する推定手段と、
前記第１の指令値と前記推定されたフィードバック値との偏差に基づいて前記仮の補正データを更新する更新手段とを含む、制御装置。
【請求項２】
前記初期値決定手段は、前記第１の指令値の前記制御演算手段への出力に応答して前記制御対象に現れるフィードバック値と、対応する前記推定されたフィードバック値との偏差からモデル誤差を算出する算出手段をさらに含む、請求項１に記載の制御装置。
【請求項３】
前記更新手段は、前記モデル誤差を更新後の仮の補正データに反映する、請求項２に記載の制御装置。
【請求項４】
前記更新手段は、前記推定されたフィードバック値との偏差に所定の係数を乗じた値で現在の仮の補正データを更新する、請求項２または３に記載の制御装置。
【請求項５】
前記特性取得手段は、
ステップ状の指定値パターンに従って制御周期毎に出力される第３の指令値を前記制御演算手段へ出力し、
前記第３の指令値に対応して取得されるフィードバック値の時間変化について時間的な差分近似により単位パルスに対する応答特性を算出する、請求項１〜４のいずれか１項に記載の制御装置。
【請求項６】
前記特性取得手段は、任意の指令値を前記制御演算手段へ与えるとともに、当該任意の指令値に対応して取得されるフィードバック値の時間変化に基づいて、システム同定手法により推定される伝達関数を前記応答特性として決定する、請求項１〜４のいずれか１項に記載の制御装置。
【請求項７】
前記初期値決定手段は、予め定められた終了条件が満たされるまで、前記推定手段および前記更新手段による処理を繰返す手段をさらに含む、請求項１〜６のいずれか１項に記載の制御装置。
【請求項８】
制御対象を制御するための制御装置を実現するための制御プログラムであって、前記制御プログラムはコンピュータに
予め定められたパターンに従って制御周期毎に出力される第１の指令値を、補正データに従って制御周期毎に出力される補正量で補償した第２の指令値を生成して制御演算手段へ出力するステップを実行させ、前記制御演算手段は、前記第２の指令値に従って前記制御対象に対する制御出力を算出し、
前記第１の指令値と前記制御対象からのフィードバック値との偏差に基づいて、前記補正データを更新するステップと、
前記補正データに対する更新が実行されていない状態において用いられる、当該補正データの初期値を決定するステップとを実行させ、
前記補正データの初期値を決定するステップは、
前記制御演算手段に与えられる指令値と当該指令値に応答して前記制御対象に現れるフィードバック値との関係を示す応答特性を取得するステップと、
前記第１の指令値を仮の補正データで補償した値と、前記応答特性とに基づいて、前記制御対象に現れるであろうフィードバック値を推定するステップと、
前記第１の指令値と前記推定されたフィードバック値との偏差に基づいて前記仮の補正データを更新するステップとを含む、制御プログラム。
【請求項９】
制御対象を制御するための制御システムであって、
予め定められたパターンに従って制御周期毎に出力される第１の指令値を、補正データに従って制御周期毎に出力される補正量で補償した第２の指令値を生成する指令値生成手段と、
前記第２の指令値に従って前記制御対象に対する制御出力を算出する制御演算手段と、
前記第１の指令値と前記制御対象からのフィードバック値との偏差に基づいて、前記補正データを更新する学習演算手段と、
前記学習演算手段による前記補正データに対する更新が実行されていない状態において用いられる、当該補正データの初期値を決定する初期値決定手段とを備え、
前記初期値決定手段は、
前記制御演算手段に与えられる指令値と当該指令値に応答して前記制御対象に現れるフィードバック値との関係を示す応答特性を取得する特性取得手段と、
前記第１の指令値を仮の補正データで補償した値と、前記応答特性とに基づいて、前記制御対象に現れるであろうフィードバック値を推定する推定手段と、
前記第１の指令値と前記推定されたフィードバック値との偏差に基づいて前記仮の補正データを更新する更新手段とを含む、制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御対象に対する制御性能を学習制御によって高める技術に関する。
【背景技術】
【０００２】
制御対象を制御する方法の一例として、制御対象に対して指令値パターンに従って順次出力される指令値に対して、当該制御対象の特性に応じて補正した上で、当該制御対象に与えるような制御系がある。このような制御系においては、指令値に対する補正量などを学習により順次更新するような学習制御が採用される。
【０００３】
このような学習制御は、例えば、モータを用いたメカニカルシステムやロボットといった制御対象に未知の要素を含む動的システムに適用されることがある。
【０００４】
例えば、特開２００４−２２７１６３号公報（特許文献１）は、部品等の同一形状の加工を多数実行するような場合に、学習制御を適用できるようにしたサーボ制御装置を開示する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−２２７１６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したような学習制御においては、適切な補正量を決定するためには、ある程度の学習が必要であり、実際の制御対象に適用するためには、制御対象を所定回数に亘って実際に動作させる必要があった。
【０００７】
そのため、制御対象を実際に動作させる回数を低減して、学習制御の調整工数を低減することが要望されている。
【課題を解決するための手段】
【０００８】
本発明のある局面に従えば、制御対象を制御するための制御装置が提供される。制御装置は、予め定められたパターンに従って制御周期毎に出力される第１の指令値を、補正データに従って制御周期毎に出力される補正量で補償した第２の指令値を生成して制御演算手段へ出力する指令値生成手段を含む。制御演算手段は、第２の指令値に従って制御対象に対する制御出力を算出する。制御装置は、第１の指令値と制御対象からのフィードバック値との偏差に基づいて、補正データを更新する学習演算手段と、学習演算手段による補正データに対する更新が実行されていない状態において用いられる、当該補正データの初期値を決定する初期値決定手段とを含む。初期値決定手段は、制御演算手段に与えられる指令値と当該指令値に応答して制御対象に現れるフィードバック値との関係を示す応答特性を取得する特性取得手段と、第１の指令値を仮の補正データで補償した値と、応答特性とに基づいて、制御対象に現れるであろうフィードバック値を推定する推定手段と、第１の指令値と推定されたフィードバック値との偏差に基づいて仮の補正データを更新する更新手段とを含む。
【０００９】
好ましくは、初期値決定手段は、第１の指令値の制御演算手段への出力に応答して制御対象に現れるフィードバック値と、対応する推定されたフィードバック値との偏差からモデル誤差を算出する算出手段をさらに含む。
【００１０】
好ましくは、更新手段は、モデル誤差を更新後の仮の補正データに反映する。
好ましくは、更新手段は、推定されたフィードバック値との偏差に所定の係数を乗じた値で現在の仮の補正データを更新する。
【００１１】
好ましくは、特性取得手段は、ステップ状の指定値パターンに従って制御周期毎に出力される第３の指令値を制御演算手段へ出力し、第３の指令値に対応して取得されるフィードバック値の時間変化について時間的な差分近似により単位パルスに対する応答特性を算出する。
【００１２】
好ましくは、特性取得手段は、任意の指令値を制御演算手段へ与えるとともに、当該任意の指令値に対応して取得されるフィードバック値の時間変化に基づいて、システム同定手法により推定される伝達関数を応答特性として決定する。
【００１３】
好ましくは、初期値決定手段は、予め定められた終了条件が満たされるまで、推定手段および更新手段による処理を繰返す手段をさらに含む。
【００１４】
本発明の別の局面に従えば、制御対象を制御するための制御装置を実現するための制御プログラムが提供される。制御プログラムはコンピュータに、予め定められたパターンに従って制御周期毎に出力される第１の指令値を、補正データに従って制御周期毎に出力される補正量で補償した第２の指令値を生成して制御演算手段へ出力するステップを実行させる。制御演算手段は、第２の指令値に従って制御対象に対する制御出力を算出する。制御プログラムはコンピュータに、第１の指令値と制御対象からのフィードバック値との偏差に基づいて、補正データを更新するステップと、補正データに対する更新が実行されていない状態において用いられる、当該補正データの初期値を決定するステップとを実行させる。補正データの初期値を決定するステップは、制御演算手段に与えられる指令値と当該指令値に応答して制御対象に現れるフィードバック値との関係を示す応答特性を取得するステップと、第１の指令値を仮の補正データで補償した値と、応答特性とに基づいて、制御対象に現れるであろうフィードバック値を推定するステップと、第１の指令値と推定されたフィードバック値との偏差に基づいて仮の補正データを更新するステップとを含む。
【００１５】
本発明のさらに別の局面に従えば、制御対象を制御するための制御システムが提供される制御システムは、予め定められたパターンに従って制御周期毎に出力される第１の指令値を、補正データに従って制御周期毎に出力される補正量で補償した第２の指令値を生成する指令値生成手段と、第２の指令値に従って制御対象に対する制御出力を算出する制御演算手段と、第１の指令値と制御対象からのフィードバック値との偏差に基づいて、補正データを更新する学習演算手段と、学習演算手段による補正データに対する更新が実行されていない状態において用いられる、当該補正データの初期値を決定する初期値決定手段とを含む。初期値決定手段は、制御演算手段に与えられる指令値と当該指令値に応答して制御対象に現れるフィードバック値との関係を示す応答特性を取得する特性取得手段と、第１の指令値を仮の補正データで補償した値と、応答特性とに基づいて、制御対象に現れるであろうフィードバック値を推定する推定手段と、第１の指令値と推定されたフィードバック値との偏差に基づいて仮の補正データを更新する更新手段とを含む。
【発明の効果】
【００１６】
本発明のある実施の形態によれば、制御対象を実際に動作させる回数を低減して、学習制御の調整工数を低減できる。
【図面の簡単な説明】
【００１７】
【図１】本実施の形態に従う制御装置の構成を示す模式図である。
【図２】本実施の形態に従う制御装置を含む制御システムの機能分担例を示す模式図である。
【図３】本実施の形態に従う学習制御を含む制御系の指令値生成および制御演算に着目した模式図である。
【図４】本実施の形態に従う学習制御を含む制御系の指令値生成に係るデータの一例を説明するための図である。
【図５】本実施の形態に従う学習制御を含む制御系の学習演算に着目した模式図である。
【図６】図５に示す本実施の形態に従う学習制御を含む制御系に対してシミュレーション学習演算を付加した模式図である。
【図７】本実施の形態に従う制御装置における学習制御に係る処理手順を示すフローチャートである。
【図８】図７のステップＳ８に示すシミュレーション学習演算に係る処理手順を示すフローチャートである。
【図９】図７のステップＳ８に示すシミュレーション学習演算において取得される時間波形の一例を示す図である。
【図１０】本実施の形態に従うシミュレーション学習演算による効果を説明するためのグラフである。
【図１１】本実施の形態に従うシミュレーション学習演算による効果を説明するためのグラフである。
【図１２】本実施の形態に従う制御装置の制御プログラムに含まれる学習制御プログラム１１４の実装例を示す図である。
【図１３】本実施の形態に従う制御装置の制御プログラムに含まれる学習制御プログラム１１４の実装例を示す図である。
【発明を実施するための形態】
【００１８】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００１９】
＜Ａ．制御装置の構成＞
まず、本実施の形態に従う制御装置１００の構成について説明する。制御装置１００は、主として、任意の制御対象を制御する機能を有している。制御装置１００としては、例えば、ＰＬＣ（プログラマブルコントローラ）のようなＦＡ（Factory Automation）用のコントローラであってもよいし、汎用コンピュータであってもよい。また、複数の装置が連携することで、後述するような本実施の形態に従う学習制御を含む制御系を実現してもよい。例えば、ＰＬＣが学習演算を含む実制御を担当するとともに、ＰＬＣと連携した汎用コンピュータが事前の学習演算（シミュレーション）を担当するようにしてもよい。
【００２０】
本実施の形態に従う学習制御は、予め定められた指令値パターンから都度算出される指令値（以下、「補正前指令値」とも称す。）を、制御対象の特性に応じて補正することで指令値を生成する。そして、この生成された指令値に基づいて制御出力を算出するための制御演算が実行される。すなわち、本実施の形態に従う学習制御は、主として、指令値生成、学習演算および制御演算から構成される。
【００２１】
以下、説明の便宜上、ＰＬＣを用いて実装する場合の構成例を主として示す。
図１は、本実施の形態に従う制御装置１００の構成を示す模式図である。図１を参照して、制御装置１００は、予め格納された制御プログラム（システムプログラム１１０およびユーザプログラム１１２を含む）を実行することで算出される制御出力または指令値をサーボドライバ２００へ与えるとともに、サーボドライバ２００またはＩ／Ｏ（Input/Output）ユニット１２６を介してフィードバック値を取得する。このような制御出力または指令値とフィードバック値とを用いて、学習制御を実現する。
【００２２】
より具体的には、制御装置１００は、ＣＰＵ（Central Processing Unit）やＭＰＵ（Micro-Processing Unit）などのプロセッサ１０２と、チップセット１０４と、メインメモリ１０６と、フラッシュメモリ１０８と、外部ネットワークコントローラ１１６と、メモリカードインターフェイス１１８と、内部バスコントローラ１２２と、フィールドバスコントローラ１２４とを含む。
【００２３】
プロセッサ１０２は、フラッシュメモリ１０８に格納されたシステムプログラム１１０およびユーザプログラム１１２を読み出して、メインメモリ１０６に展開して実行することで、制御対象に対する任意の制御を実現する。システムプログラム１１０は、データの入出力処理や実行タイミング制御などの、制御装置１００の基本的な機能を提供するための命令コードを含む。ユーザプログラム１１２は、制御対象に応じて任意に設計され、シーケンス制御を実行するためのシーケンスプログラム１１２Ａおよびモーション制御を実行するためのモーションプログラム１１２Ｂとを含む。
【００２４】
本実施の形態に従う学習制御を実現するために、フラッシュメモリ１０８には、学習制御プログラム１１４が格納されている。学習制御プログラム１１４は、シーケンスプログラム１１２Ａおよびモーションプログラム１１２Ｂと連携して実行されることで、後述するような学習制御を実現してもよい。
【００２５】
このように、制御プログラム（システムプログラム１１０、ユーザプログラム１１２および学習制御プログラム１１４）はプロセッサ１０２により実行されることで、制御対象を制御するための制御装置を実現する。
【００２６】
チップセット１０４は、各コンポーネントを制御することで、制御装置１００全体としての処理を実現する。
【００２７】
内部バスコントローラ１２２は、制御装置１００と内部バスを通じて連結される各種デバイスとデータを遣り取りするインターフェイスである。このようなデバイスの一例として、Ｉ／Ｏユニット１２６が接続されている例を示す。
【００２８】
フィールドバスコントローラ１２４は、制御装置１００とフィールドバスを通じて連結される各種デバイスとデータを遣り取りするインターフェイスである。このようなデバイスの一例として、サーボドライバ２００が接続されている例を示す。
【００２９】
内部バスコントローラ１２２およびフィールドバスコントローラ１２４は、接続されているデバイスに対して任意の指令値を与えることができるとともに、デバイスが管理している任意のデータ（測定値を含む）を取得することができる。
【００３０】
外部ネットワークコントローラ１１６は、各種の有線／無線ネットワークを通じたデータの遣り取りを制御する。メモリカードインターフェイス１１８は、メモリカード１２０を着脱可能に構成されており、メモリカード１２０に対してデータを書込み、メモリカード１２０からデータを読出すことが可能になっている。
【００３１】
制御装置１００が制御プログラムを実行することで提供される機能の一部または全部を専用のハードワイヤード回路として実装してもよい。ハードワイヤード回路としては、例えば、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field-Programmable Gate Array）などを用いて実装することができる。
【００３２】
＜Ｂ．制御系の機能分担例＞
次に、本実施の形態に従う学習制御を含む制御系の機能分担例について説明する。図２は、本実施の形態に従う制御装置１００を含む制御システムの機能分担例を示す模式図である。図２（Ａ）を参照して、典型的には、制御装置１００は、サーボドライバ２００およびメカ３００を含む制御対象１０からフィードバック値を測定するとともに、測定したフィードバック値（制御量）を反映した学習演算および制御演算の結果得られる制御出力を制御対象１０へ出力する。すなわち、図２（Ａ）に示す構成においては、制御装置１００において指令値生成、学習演算および制御演算が実行される。図２（Ａ）に示す制御出力は操作量に相当する。
【００３３】
なお、図２において、メカ３００は、駆動体であるモータおよび被駆動体であるメカ体を総称したものである。
【００３４】
図２（Ｂ）に示すように、制御装置１００が指令値生成および学習演算を実行して生成される指令値をサーボドライバ２００に対して与えるとともに、サーボドライバ２００が指令値に従って制御演算を実行するようにしてもよい。
【００３５】
あるいは、図２（Ｃ）に示すように、制御装置１００が指令値生成を実行して補正前指令値をサーボドライバ２００へ出力し、サーボドライバ２００において、学習演算および制御演算を実行するようにしてもよい。
【００３６】
図２（Ｂ）および図２（Ｃ）に示すように、制御装置１００およびサーボドライバ２００が協働して、本実施の形態に従う学習制御を実現してもよい。さらに、図２（Ａ）〜２（Ｃ）に示す構成に限らず、任意のハードウェア構成により実現してもよい。
【００３７】
以上のとおり、本実施の形態に従う学習制御を含む制御系を実現する１または複数の装置またはユニットを「制御システム」と総称することもできる。制御システムは、１または複数の装置またはユニットからなる任意の構成を包含する概念である。
【００３８】
＜Ｃ．指令値生成および制御演算＞
次に、本実施の形態に従う学習制御を含む制御系の指令値生成および制御演算に着目して基本的な処理を説明する。
【００３９】
図３は、本実施の形態に従う学習制御を含む制御系の指令値生成および制御演算に着目した模式図である。図３には、一例として、予め定められた位置パターンに従って制御対象１０を制御する場合の構成例を示す。但し、位置に限らず、任意の指令値を用いることができる。
【００４０】
図３を参照して、制御装置１００は、指令値生成を担当する、指令値生成部１５０および指令値補正部１５２を含む。また、制御装置１００は、制御演算を担当する制御演算部１５４を含む。
【００４１】
指令値生成部１５０は、予め定められた指令値パターン１５１に従って制御周期（例えば、１ｍｓ）毎に補正前指令値（「第１の指令値」に相当）を出力する。図３に示す例では、指令値パターン１５１は制御対象１０が移動すべき軌跡（位置パターン）が規定されているとする。そのため、補正前指令値は位置指令値となる。
【００４２】
指令値補正部１５２は、指令値生成部１５０からの補正前指令値を、補正データ１５３に従って制御周期毎に出力される補正量で補償することで、指令値（補正後指令値：「第２の指令値」に相当）を生成する。そして、指令値補正部１５２は、生成した指令値を制御演算部１５４へ出力する。この例においては、指令値は位置指令値となる。後述するように、補正データ１５３は、学習制御によりその内容が更新される。
【００４３】
図４は、本実施の形態に従う学習制御を含む制御系の指令値生成に係るデータの一例を説明するための図である。図４を参照して、例えば、指令値パターン１５１には、基準点からスタートして一方の方向に移動した後、所定時間その位置で待機し、そして元の基準位置に戻るようなパターンが規定されているとする。この指令値パターン１５１に従って制御周期毎に補正前指令値が出力される。補正前指令値が出力され制御周期に対応させて、補正データ１５３に基づいて制御周期毎に補正量が順次出力される。指令値補正部１５２において、補正前指令値を補正量で補償することで、図４に示すような指令値１５５が制御演算部１５４へ出力される。
【００４４】
例えば、制御対象１０は所定の慣性を有しており、また、制御演算部１５４はある程度の遅れ時間を有しているので、指令値パターン１５１に規定されるような補正前指令値を与えたとしても、制御対象１０は指令値パターン１５１に沿った動きをするわけではない。そこで、指令値パターン１５１に規定される軌跡に沿って制御対象１０が動作できるように、補正データ１５３には補正量（あるいは、補償量）が格納される。このような補正量で補償された指令値１５５を制御演算部１５４へ与えることで、制御対象１０は、指令値パターン１５１に応じた挙動をすることになる。
【００４５】
補正データ１５３には、制御対象１０の特性に応じた補正量を規定する必要があり、本実施の形態においては、後述するような学習演算によって、適切な補正データ１５３を決定する。
【００４６】
再度図３を参照して、指令値補正部１５２からの指令値は制御演算部１５４へ与えられる。制御演算部１５４は、指令値に従って制御対象１０に対する制御出力を算出する。より具体的には、制御演算部１５４は、制御対象１０のフィードバック値が指令値と一致するように制御演算を実行し、制御出力を算出する。制御演算は、所定の制御周期（例えば、１ｍｓ）毎に繰返し実行される。図３に示す例では、制御演算部１５４が位置制御を実行する例を示すが、速度制御などを実行してもよい。
【００４７】
図３に示す制御系においては、制御演算部１５４は、指令値補正部１５２からの位置指令値に対して、位置制御ループおよび速度制御ループにより、最終的な制御出力（この例では、サーボドライバ２００へ与える電流指令値）を算出する。
【００４８】
より具体的には、制御演算部１５４は、差分器１５６，１６０と、位置制御部１５８と、速度制御部１６２と、トルクフィルタ１６４と、電流制御部１６６と、速度検出部１６８とを含む。
【００４９】
位置制御部１５８は、位置制御ループを構成する制御演算部であり、差分器１５６からの位置偏差に応じて速度指令値を操作量として出力する。差分器１５６は、制御対象１０のフィードバック値（実位置）と位置指令値との偏差（位置偏差）を算出する。
【００５０】
速度制御部１６２は、速度制御ループを構成する制御演算部であり、差分器１６０からの速度偏差に応じたトルク指令値を出力する。差分器１６０は、制御対象１０のフィードバック値（実速度）と位置制御部１５８からの操作量（速度指令値）との偏差（速度偏差）を算出する。
【００５１】
速度検出部１６８は、モータに装着されたエンコーダなどからのフィードバック値（例えば、モータの回転数に比例した数のパルス）からモータの実速度を算出する。速度検出部１６８は、典型的には、微分要素を用いて実現される。
【００５２】
トルクフィルタ１６４は、速度制御部１６２からのトルク指令値に含まれる高周波成分を除去する。電流制御部１６６は、トルクフィルタ１６４からのトルク指令値からサーボドライバ２００がモータへ与えるべき電流の大きさやタイミングを示す電流指令値を算出する。
【００５３】
図３に示す制御系においては、位置制御部１５８としてＰ（比例）制御が採用されており、速度制御部１６２としてＰＩ（比例積分）制御が採用されている。但し、位置制御部１５８および速度制御部１６２はどのような制御系であってもよい。
【００５４】
本実施の形態に従う学習制御は、指令値補正部１５２における指令値の補正処理に依拠して制御性能を高めることを主としており、制御演算部１５４での制御演算の内容は、特に制限されることはない。
【００５５】
また、上述の図２（Ｂ）および図２（Ｃ）に示すように、制御装置１００およびサーボドライバ２００が協働して、本実施の形態に従う学習制御を実現する場合には、指令値生成部１５０による補正前指令値の生成周期、指令値補正部１５２による指令値の出力周期、制御演算部１５４による制御演算の周期は、互いに一致していなくともよく、各装置の周期で演算処理を実行すればよい。
【００５６】
＜Ｄ．学習演算＞
次に、本実施の形態に従う学習制御を含む制御系の学習演算に着目して基本的な処理を説明する。
【００５７】
図５は、本実施の形態に従う学習制御を含む制御系の学習演算に着目した模式図である。図５を参照して、制御装置１００は、学習演算を担当する、偏差算出部１７０と、学習演算部１７２と、学習切替部１７４とを含む。
【００５８】
本実施の形態に従う学習制御の学習演算は、指令値が出力された後、制御演算部１５４を経て制御対象１０に生じる変位を示すフィードバック値にどのような変化が生じるのかを測定して、補正データ１５３を順次更新する。
【００５９】
指令値補正部１５２が指令値を制御演算部１５４へ出力することで、制御演算部１５４では入力された特性測定用指令値に応じた制御演算が実行されて、得られた制御出力が制御対象１０へ出力される。その制御出力に応答して、制御対象１０に生じた変化がフィードバック値として現れる。偏差算出部１７０は、指令値生成部１５０からの補正前指令値とフィードバック値との偏差を算出し、偏差データ１７１として順次出力する。偏差データ１７１は、予め定められた指令値パターン１５１と制御対象１０の実際の挙動との相違を意味する。
【００６０】
学習演算部１７２は、偏差データ１７１（指令値と制御対象１０からのフィードバック値との偏差）に基づいて、補正データ１５３を更新する。指令値パターン１５１に規定されている一連の補正前指令値の出力を複数回繰返すことで、補正データ１５３は順次更新され、制御演算部１５４および制御対象１０の特性を反映したものとなる。
【００６１】
指令値パターン１５１に規定されている補正前指令値の全体出力を１回と数えて、ｋ回目の学習演算時の偏差データをＥｒｒ（ｋ）と記述する。また、学習演算をｋ回実行することで得られた偏差データＥｒｒ（ｋ）を用いて算出される、ｋ＋１回目の補正データをＲｅｖ（ｋ＋１）と記述する。
【００６２】
学習演算部１７２は、各回の学習演算において補正データ１５３を更新する。より具体的には、ｋ回目の学習演算における偏差データＥｒｒ（ｋ）を用いて、ｋ＋１回目の補正データＲｅｖ（ｋ＋１）は、以下のような数式に従って算出される。但し、ｎ＝０〜Ｎである。
【００６３】
Ｒｅｖ（ｋ＋１）（ｎ）＝Ｒｅｖ（ｋ）（ｎ）＋Ｇ×Ｅｒｒ（ｋ）（ｎ＋ｓｔ）
但し、
Ｒｅｖ（ｋ＋１）（ｎ）：ｋ＋１回目の学習演算のサンプル時刻ｎにおける補正データ
Ｒｅｖ（ｋ）（ｎ）：ｋ回目の学習演算のサンプル時刻ｎにおける補正データ
Ｇ：学習の強さを定める係数（０＜Ｇ≦１：通常は「１」でもよい）
Ｅｒｒ（ｋ）（ｎ＋ｓｔ）：ｋ回目の学習演算のサンプル時刻ｎ＋ｓｔにおける偏差データ
ｓｔ：補正シフト時間（制御周期の整数倍）
上述の数式において、Ｅｒｒ（ｋ）（ｎ＋ｓｔ）となっているのは、偏差データを補正データに反映する際に、偏差データを補正シフト時間ｓｔだけ時間を過去方向にずらすことを意味する。これは、制御演算、メカ３００の応答遅れ、通信遅れなどに起因するむだ時間を補償することを意図している。補正シフト時間ｓｔは、後述するような特性測定の方法を利用して、制御演算部１５４および制御対象１０の特性から事前に決定できる。
【００６４】
学習演算部１７２による学習演算は、学習切替部１７４が学習演算部１７２と補正データ１５３とを内部的に接続または遮断することで、有効化または無効化される。通常、学習演算部１７２による学習演算は、所定回数の実行後に無効化される。補正データ１５３が過学習されたものとなることを防止するためである。
【００６５】
本実施の形態に従う学習制御の学習演算においては、制御演算部１５４および制御対象１０を含む全体の特性を測定するモードを有している。このモードは、後述のシミュレーション学習演算においても利用するので、以下では「特性測定／シミュレーション学習モード」とも称す。なお、特性測定／シミュレーション学習モードの対比として、指令値補正部１５２からの指令値を制御演算部１５４へ出力するモードを「制御モード」とも称す。
【００６６】
制御装置１００は、特性測定を担当する、特性測定用指令値生成部１７６とモード切替部１７８とを含む。
【００６７】
特性測定においては、モード切替部１７８が特性測定／シミュレーション学習モード側へ切り替えられ、特性測定用指令値生成部１７６と制御演算部１５４とが内部的に接続される。特性測定用指令値生成部１７６は、予め定められた特性測定用指令値パターン１７７に従って制御周期毎に特性測定用指令値を出力する。特性測定用指令値の出力に応答して生じるフィードバック値から、制御演算部１５４および制御対象１０を含む特性が算出される。制御演算部１５４および制御対象１０を含む特性は、補正データ１５３を更新する際に用いられる補正シフト時間を決定する際に考慮されてもよい。
【００６８】
特性測定用指令値生成部１７６が特性測定用指令値を出力する制御周期は、基本的には、指令値生成部１５０が補正前指令値を出力する制御周期と同一に設定されている。また、特性測定用指令値パターン１７７に規定される特性測定用指令値パターンとしては、制御演算部１５４および制御対象１０を含む特性を測定するのに好ましい時間変化（例えば、パルス状の時間変化、ステップ状の時間変化（ステップ応答）、ランプ状の時間変化（ランプ応答）など）を用いることが好ましい。パルス状の時間変化は、時間幅が短い（例えば、１制御周期など）パルスを与えたときの応答特性を意味する。
【００６９】
以上のような学習演算によって、制御対象に応じた適切な指令値を算出するための補正データ１５３が決定される。
【００７０】
なお、図５に示す学習切替部１７４およびモード切替部１７８は、物理的なスイッチでなくてもよく、例えば、ソフトウェアを用いて実装された論理的なスイッチであってもよい。
【００７１】
＜Ｅ．シミュレーション学習演算＞
本実施の形態に従う学習制御を含む制御系は、さらに、補正データ１５３の初期値であるＲｅｖ（１）をより適切に決定するための処理（以下、「シミュレーション学習演算」とも称す。）が実装されている。Ｒｅｖ（１）に入力する補正データを、以下「仮の補正データ」とも称す。
【００７２】
シミュレーション学習演算においては、特性測定／シミュレーション学習モードにおいて測定されるフィードバック値を用いて、上述したような学習演算に相当する演算をシミュレーションにより実行する。そのシミュレーションの実行により得られた結果から仮の補正データを算出する。このようなシミュレーション学習演算を採用することで、適切な補正データを収集するために実際に制御対象を動作させる回数を低減させることができる。
【００７３】
図６は、図５に示す本実施の形態に従う学習制御を含む制御系に対してシミュレーション学習演算を付加した模式図である。図６を参照して、制御装置１００は、シミュレーション学習演算を担当するシミュレーション学習演算部１８０を含む。シミュレーション学習演算は、特性測定用指令値生成部１７６およびモード切替部１７８の機能も利用する。
【００７４】
シミュレーション学習演算においては、基本的には、２つの応答データ（フィードバック値の時間変化）が測定される。
【００７５】
第１の応答データは、指令値パターン１５１に規定された補正前指令値がそのまま（指令値補正部１５２において何らの補正量も与えられることなく）制御演算部１５４へ出力されたときに生じるフィードバック値の時間変化に相当する補正なし応答データ１８２である。
【００７６】
第２の応答データは、特性測定用指令値パターン１７７に規定された補正前指令値が制御演算部１５４へ出力されたときに生じるフィードバック値の時間変化に相当する特性測定用応答データ１８１である。
【００７７】
シミュレーション学習演算部１８０は、補正なし応答データ１８２と、特性測定用指令値パターン１７７および特性測定用応答データ１８１とに基づいて、制御演算部１５４および制御対象１０含む全体の特性をシミュレーションすることで、Ｒｅｖ（１）として用いられる仮の補正データを算出する。すなわち、シミュレーション学習演算部１８０は、学習演算部１７２による補正データ１５３に対する更新が実行されていない状態において用いられる、補正データ１５３の初期値Ｒｅｖ（１）を決定する。
【００７８】
特性測定用指令値パターン１７７は、後述するように、ステップ状の時間変化（ステップ応答）を採用することが好ましい。
【００７９】
＜Ｆ．処理手順＞
次に、本実施の形態に従う制御装置１００における学習制御に係る処理手順について説明する。図７は、本実施の形態に従う制御装置１００における学習制御に係る処理手順を示すフローチャートである。図７に示す各ステップは、図１に示すプロセッサ１０２が制御プログラム（システムプログラム１１０、ユーザプログラム１１２および学習制御プログラム１１４を含む）を実行することで実現される。
【００８０】
図７を参照して、制御装置１００は、まず、学習制御に必要な準備工程（ステップＳ２〜Ｓ１０）を実行する。
【００８１】
具体的には、制御装置１００は、起動指令を受けると（ステップＳ２においてＹＥＳ）、制御モードを設定する（モード切替部１７８を制御モード側へ切り替える）とともに、指令値パターン１５１に従う補正前指令値を制御演算部１５４へ与えて、そのときに測定されるフィードバック値の時間変化を補正なし応答データ１８２として格納する（ステップＳ４）。
【００８２】
続いて、制御装置１００は、特性測定／シミュレーション学習モード（モード切替部１７８を特性測定／シミュレーション学習モード側へ切り替える）を設定するとともに、特性測定用指令値パターン１７７に従う特性測定用指令値を制御演算部１５４へ与えて、そのときに測定されるフィードバック値の時間変化を特性測定用応答データ１８１として格納する（ステップＳ６）。
【００８３】
続いて、制御装置１００は、ステップＳ２において取得した補正なし応答データ１８２と、ステップＳ６において取得した特性測定用応答データ１８１とを用いて、シミュレーション学習演算を実行する（ステップＳ８）。ステップＳ８のシミュレーション学習演算の実行により得られた仮の補正データを補正データ１５３の初期値であるＲｅｖ（１）として設定する（ステップＳ１０）。すなわち、制御装置１００は、補正データ１５３に対する更新が実行されていない状態において用いられる、補正データ１５３の初期値Ｒｅｖ（１）を決定する。
【００８４】
以上の処理によって、学習制御の準備工程が完了するので、続いて、学習制御を開始する。
【００８５】
制御装置１００は、起動指令を受けると（ステップＳ１２においてＹＥＳ）、制御モードを設定する（モード切替部１７８を制御モード側へ切り替える）とともに、学習演算を有効化（学習切替部１７４をオンに設定する）する（ステップＳ１４）。そして、制御装置１００は、起動指令に応答して、予め定められた指令値パターン１５１に従って制御周期毎に出力される補正前指令値を、現在の補正データ１５３に従って制御周期毎に出力される補正量で補償した指令値を出力する（ステップＳ１６）。出力される指令値に従って制御対象１０に対する制御出力が算出される。
【００８６】
続いて、制御装置１００は、指令値生成部１５０からの補正前指令値と測定されるフィードバック値との偏差の時間変化を偏差データ１７１として格納する（ステップＳ１８）とともに、格納した偏差データ１７１に基づいて補正データ１５３を更新する（ステップＳ２０）。すなわち、制御装置１００は、指令値と制御対象１０からのフィードバック値との偏差に基づいて、補正データ１５３を更新する。
【００８７】
指令値パターン１５１に規定された時間変化のすべての出力が完了すると、制御装置１００は、学習回数を１だけインクリメントする（ステップＳ２２）。そして、制御装置１００は、学習回数が予め定められた所定回数に到達したか否かを判断し（ステップＳ２４）、学習回数が予め定められた所定回数に到達していなければ（ステップＳ２４においてＮＯ）、制御装置１００は、ステップＳ１２以下の処理を繰返す。
【００８８】
これに対して、学習回数が予め定められた所定回数に到達していれば（ステップＳ２４においてＹＥＳ）、制御装置１００は、学習演算を無効化（学習切替部１７４をオフに設定する）する（ステップＳ２６）。以下、通常の制御モードで学習制御を実行する。
【００８９】
制御装置１００は、起動指令を受けると（ステップＳ２８においてＹＥＳ）、起動指令に応答して、指令値パターン１５１に従う補正前指令値に対して、現在の補正データ１５３に従って出力される補正量で補償することで算出された指令値を制御演算部１５４へ与える（ステップＳ３０）。以下、ステップＳ２８およびＳ３０の処理が繰返される。
【００９０】
＜Ｇ．シミュレーション学習演算の処理手順＞
次に、シミュレーション学習演算（図７のステップＳ８）のより詳細な処理手順について説明する。
【００９１】
図８は、図７のステップＳ８に示すシミュレーション学習演算に係る処理手順を示すフローチャートである。図９は、図７のステップＳ８に示すシミュレーション学習演算において取得される時間波形の一例を示す図である。
【００９２】
図８を参照して、制御装置１００は、制御装置１００は、制御演算部１５４に与えられる指令値と当該指令値に応答して制御対象１０に現れるフィードバック値との関係を示す応答特性を取得する。より具体的には、ステップＳ６において取得した特性測定用応答データ１８１を用いて、単位パルス指令値に対する単位パルス応答データＵ（ｎ）を算出する（ステップＳ８１）。
【００９３】
特性測定用指令値パターン１７７においては、高さＨのステップ状の時間変化が指令値として規定されているとする。特性測定用指令値パターン１７７に規定される時間変化は、制御周期のＮ倍の長さに亘って規定されているとする。
【００９４】
図９（Ａ）には、制御周期を１ｍｓとして、高さ１のステップ状の時間変化を示す特性測定用指令値を与えるとともに、そのときに現れた特性測定用応答データに相当する応答データＳ（ｎ）の時間波形を示す。図９（Ａ）に示すように、応答データＳ（ｎ）は、特性測定用指令値が与えられると、所定の時定数で徐々に増加する。
【００９５】
特性測定用指令値生成部１７６は、予め定められた特性測定用指令値パターン１７７に従って制御周期毎に特性測定用指令値を出力する。この特性測定用指令値に対して生じるフィードバック値の時間変化、すなわち制御周期毎の応答データＳ（ｎ）（ｎ＝０〜Ｎ）が特性測定用応答データ１８１として格納される。
【００９６】
特性測定用応答データ１８１に格納される時間変化は、制御演算部１５４および制御対象１０の離散ステップ応答に相当する。ステップＳ８１においては、この離散ステップ応答から離散単位インパルス応答を算出する。
【００９７】
具体的には、１つの制御周期を単位時間とし、高さ１の単位時間幅のパルス（以下、「単位パルス」とも称する。）指令値に対する単位パルス応答データＵ（ｎ）（ｎ＝０〜Ｎ）を、近似的に以下のような数式に従って算出される。ここで、Ｓ（−１）＝０とする。
【００９８】
Ｕ（ｎ）＝｛Ｓ（ｎ）−Ｓ（ｎ−１）｝／Ｈ）
このように、制御装置１００は、ステップ状の指定値パターンに従って制御周期毎に出力される特性測定用指令値を制御演算部１５４へ出力し、特性測定用指令値に対応して取得されるフィードバック値の時間変化（すなわち、応答データＳ（ｎ））について時間的な差分近似により単位パルスに対する応答特性（すなわち、単位パルス応答データＵ（ｎ））を算出する。
【００９９】
続いて、制御装置１００は、仮の補正データの初期値を決定する。より具体的には、制御装置１００は、予め定められた指令値パターン１５１に規定された補正前指令値のパターンに対する応答データＲｓｉｍ（０）（ｎ）を算出する（ステップＳ８２）。より詳細には、指令値パターン１５１に規定された指令値パターンＤ（ｎ）に対して、単位パルス応答データＵ（ｎ）を使用して対応する応答データＲｓｉｍ（０）（ｎ）（ｎ＝０〜Ｎ）を、近似的に以下のような数式に従って算出される。ここで、ｉ＝０〜ｎであり、Ｒｓｉｍ（ｋｓ）（０）＝０とする。
【０１００】
Ｒｓｉｍ（０）（ｎ）＝Σ｛Ｄ（ｉ）×Ｕ（ｎ−ｉ）｝
すなわち、指令値パターンＤ（ｎ）と単位パルス応答データＵ（ｎ）との一種の畳み込み演算によって、学習演算の開始前に取得されるであろう応答特性に相当する、応答データＲｓｉｍ（０）（ｎ）が算出される。
【０１０１】
図９（Ｂ）には、図９（Ａ）に示される応答データＳ（ｎ）から算出された単位パルス指令値と当該単位パルス指令値に対応する単位パルス応答データＵ（ｎ）の時間波形を示す。図９（Ｂ）に示すように、単位パルス応答データＵ（ｎ）は、単位パルス指令に応答して、ある時間の間だけ応答を示す。
【０１０２】
次に、制御装置１００は、補正前指令値の制御演算部１５４への出力に応答して制御対象１０に現れるフィードバック値と、対応する推定されたフィードバック値との偏差からモデル誤差Ｍｅｒｒ（ｎ）を算出する（ステップＳ８３）。より具体的には、制御装置１００は、ステップＳ４において取得した補正なし応答データ１８２に格納される時間変化である応答データＲ（０）（ｎ）と、ステップＳ８２において算出した応答データＲｓｉｍ（０）（ｎ）との偏差をモデル誤差Ｍｅｒｒ（ｎ）として算出する。つまり、モデル誤差Ｍｅｒｒ（ｎ）（ｎ＝０〜Ｎ）は、以下のような数式に従って算出される。
【０１０３】
Ｍｅｒｒ（ｎ）＝Ｒ（０）（ｎ）−Ｒｓｉｍ（０）（ｎ）
続いて、制御装置１００は、シミュレーションにより学習演算を実行（シミュレーション学習演算）する。すなわち、制御装置１００は、上述したような学習演算部１７２での補正データ１５３の更新と同様の処理をシミュレーションで実現する。
【０１０４】
まず、制御装置１００は、補正前指令値を仮の補正データで補償した値と、応答特性とに基づいて、制御対象１０に現れるであろうフィードバック値を推定する。より具体的には、制御装置１００は、ｋｓ回目のシミュレーション学習演算における偏差データＥｒｒｓｉｍ（ｋｓ）を算出する（ステップＳ８４）。
【０１０５】
ｋｓ回目のシミュレーション学習演算における偏差データＥｒｒｓｉｍ（ｋｓ）は、シミュレーション上においては、近似的に以下のような数式に従って算出される。但し、ｎ＝０〜Ｎ，ｉ＝０〜ｎである。
【０１０６】
Ｒｓｉｍ（ｋｓ）（ｎ）＝Σ［｛Ｄ（ｉ）＋Ｒｅｖｓｉｍ（ｋｓ）（ｉ）｝×Ｕ（ｎ−ｉ）］
Ｅｒｒｓｉｍ（ｋｓ）（ｎ）＝Ｄ（ｎ）−Ｒｓｉｍ（ｋｓ）（ｎ）
続いて、制御装置１００は、指令値と推定されたフィードバック値との偏差に基づいて仮の補正データを更新する。より具体的には、制御装置１００は、偏差データＥｒｒｓｉｍ（ｋｓ）に基づいてｋｓ＋１回目の補正データＲｅｖｓｉｍ（ｋｓ＋１）を更新する（ステップＳ８５）。ｋｓ＋１回目の補正データＲｅｖｓｉｍ（ｋｓ＋１）は、以下のような数式に従って算出される。但し、ｎ＝０〜Ｎである。
【０１０７】
Ｒｅｖｓｉｍ（ｋｓ＋１）（ｎ）＝Ｒｅｖｓｉｍ（ｋｓ）（ｎ）＋Ｇ×Ｅｒｒｓｉｍ（ｋｓ）（ｎ＋ｓｔ）＋Ｍｅｒｒ（ｎ）
但し、
Ｒｅｖｓｉｍ（ｋｓ＋１）（ｎ）：ｋｓ＋１回目のシミュレーション学習のサンプル時刻ｎにおける補正データ
Ｒｅｖｓｉｍ（ｋｓ）（ｎ）：ｋｓ回目のシミュレーション学習のサンプル時刻ｎにおける補正データ
Ｇ：学習の強さを定める係数（０＜Ｇ≦１：通常は「１」でもよい）
Ｅｒｒｓｉｍ（ｋｓ）（ｎ＋ｓｔ）：ｋｓ回目のシミュレーション学習のサンプル時刻ｎ＋ｓｔにおける偏差データ
ｓｔ：補正シフト時間（制御周期の整数倍）
上述のように、制御装置１００は、推定されたフィードバック値との偏差に所定の係数Ｇを乗じた値で現在の仮の補正データを更新する。このとき、モデル誤差Ｍｅｒｒ（ｎ）を更新後の仮の補正データに反映してもよい。
【０１０８】
続いて、制御装置１００は、シミュレーション学習演算の実行が完了すると、予め定められたシミュレーション終了条件が満たされるか否かを判断する（ステップＳ８６）。予め定められたシミュレーション終了条件が満たされていなければ（ステップＳ８６においてＮＯ）、制御装置１００は、ステップＳ８４以下を再度実行する。このように、予め定められた終了条件が満たされるまで、フィードバック値の推定および仮の補正データの更新に係る処理を繰返す。
【０１０９】
一方、予め定められたシミュレーション終了条件が満たされていれば（ステップＳ８６においてＹＥＳ）、制御装置１００は、補正データＲｅｖｓｉｍ（ｋｓ）の現在値を仮の補正データとして決定する（ステップＳ８７）。そして、処理は図７のステップＳ１０へ進む。
【０１１０】
予め定められたシミュレーション終了条件としては、例えば、偏差データＥｒｒｓｉｍ（ｋｓ）の２乗和などを含む評価関数が十分小さな値に収束することを含む。あるいは、予め定められたシミュレーション終了条件としては、シミュレーション学習演算の実行が予め定められた学習回数に到達することを含む。なお、シミュレーション学習演算においては、補正データ１５３が過学習されたものとなる可能性が低いので、上述の学習演算の終了を判定する条件に比較して、シミュレーション終了条件を厳しく（すなわち、学習回数を増加させる方向に変更）してもよい。
【０１１１】
以上のような処理手順によって、Ｒｅｖ（１）として用いられる仮の補正データが算出される。
【０１１２】
図９（Ｃ）には、１０回のシミュレーション学習演算を実行後に得られた補正データの一例を示す。図９（Ｃ）には、補正データに加えて、補正前指令値および実位置（フィードバック値）の時間変化の一例を示す。図９（Ｃ）に示すように、シミュレーションによって、適切な補正データが事前に取得できていることが分かる。
【０１１３】
＜Ｈ．実施例＞
次に、本実施の形態に従う学習制御を含む制御系によるいくつかの実施例を説明する。
【０１１４】
図１０および図１１は、本実施の形態に従うシミュレーション学習演算による効果を説明するためのグラフである。
【０１１５】
図１０（Ａ）には、学習演算を全く行っていない状態（補正データ１５３に何らの情報も存在していない状態）で制御を実行したときの各部の時間波形を示す。図１０（Ｂ）には、１回の学習演算を行った状態（補正データ１５３には１回の学習演算によって得られた情報のみ存在している状態）で制御を実行したときの各部の時間波形を示す。図１０（Ｃ）には、所定回数のシミュレーション学習演算を実行して仮の補正データを設定した上で、１回の学習演算を行った状態（補正データ１５３では、仮の補正データが１回の学習演算によって得られた情報によって更新された状態）で制御を実行したときの各部の時間波形を示す。
【０１１６】
図１０（Ａ）〜１０（Ｃ）において、位置偏差の変動が小さい程、適切に学習されているとみなすことができる。１回の学習演算によって、図１０（Ａ）に示す状態から図１０（Ｂ）に示す状態に改善している。しかしながら、図１０（Ｃ）に示すように、本実施の形態に従うシミュレーション学習演算を事前に実行することで、図１０（Ｂ）に示される位置偏差の変動に比較して、位置偏差の変動がより小さくなっていることが分かる。すなわち、シミュレーション学習演算を事前に実行することで、最終的な補正データにより早く近付けることが分かる。
【０１１７】
図１１（Ａ）には、３回の学習演算を行った状態（補正データ１５３には３回の学習演算によって得られた情報が存在している状態）で制御を実行したときの各部の時間波形を示す。図１１（Ｂ）には、５回の学習演算を行った状態（補正データ１５３には３回の学習演算によって得られた情報が存在している状態）で制御を実行したときの各部の時間波形を示す。
【０１１８】
一方、図１１（Ｃ）には、所定回数のシミュレーション学習演算を実行して仮の補正データを設定した上で、３回の学習演算を行った状態（補正データ１５３では、仮の補正データが３回の学習演算によって得られた情報によって更新された状態）で制御を実行したときの各部の時間波形を示す。
【０１１９】
上述したように、位置偏差の変動が小さい程、適切に学習されているとみなすことができる。３回の学習演算によって得られる図１１（Ａ）に示す状態から、さらに４回の学習演算を行って、合計７回の学習演算によって得られる図１１（Ｂ）に示す状態に改善している。しかしながら、図１１（Ｃ）に示すように、本実施の形態に従うシミュレーション学習演算を事前に実行することで、３回の学習演算だけで、図１１（Ｂ）に示すような７回の学習演算と同様の効果が得られることが分かる。すなわち、図１１に示す例においては、シミュレーション学習演算によって、実際に制御対象を動作させる回数を半分以下（７回から３回）に低減できることが分かる。
【０１２０】
＜Ｉ．学習制御プログラムの実装例＞
次に、本実施の形態に従う制御装置１００に予め格納された制御プログラムに含まれる学習制御プログラム１１４の実装例について説明する。
【０１２１】
図１２および図１３は、本実施の形態に従う制御装置１００の制御プログラムに含まれる学習制御プログラム１１４の実装例を示す図である。図１２および図１３には、上述したような各処理の実行をファンクションブロックにより規定する例を示す。
【０１２２】
図１２（Ａ）には、制御演算部１５４および制御対象１０を含む全体の特性を測定する処理を担当する特性測定ファンクションブロック１１４１を示す。図１２に示す特性測定ファンクションブロック１１４１に左側にある要素が入力要素であり、右側にある要素が出力要素である。以下に説明する他のファンクションブロックについても同様である。
【０１２３】
より具体的には、特性測定ファンクションブロック１１４１には、入力信号として、特性測定モードの開始を指示する特性測定モード起動と、特性測定を継続すべき時間を規定する最大測定時間と、特性測定用指令値として与えるステップ信号の高さを規定する指令値高さと、制御対象からのフィードバック値を規定するフィードバック値とが入力される。
【０１２４】
また、特性測定ファンクションブロック１１４１からは、特性測定モードを実行中であることを示す特性測定中と、特性測定用指令値のモニター出力である特性測定用指令値と、学習演算において補正データを更新するために用いる補正シフト時間と、シミュレーション学習演算において使用される単位パルス応答データＵ（ｎ）とが出力される。特性測定用指令値としては、パルス状またはステップ状の指令値を指定された最大測定時間に亘って出力する。単位パルス応答データは、時系列データであるので、配列データとして出力されてもよい。
【０１２５】
図１２（Ｂ）には、学習演算を担当する学習演算ファンクションブロック１１４２を示す。学習演算ファンクションブロック１１４２は、１回の学習演算毎に起動されることが想定されている。
【０１２６】
より具体的には、学習演算ファンクションブロック１１４２には、入力信号として、学習演算の開始を指示する学習演算起動と、学習演算を終了するための条件である学習終了判定値と、学習演算において補正データを更新するために用いる補正シフト時間と、予め定められた指令値パターンと、制御対象からのフィードバック値を規定するフィードバック値と、現在の補正データとが入力される。
【０１２７】
また、学習演算ファンクションブロック１１４２からは、学習演算を実行中であることを示す学習演算中と、１回の学習演算の結果を示す評価関数値と、学習演算の実行が完了したことを示す学習終了と、学習演算中のフィードバック値の時間変化を示す応答データと、１回の学習演算の結果得られた更新後の補正データとが出力される。応答データおよび補正データは、時系列データであるので、配列データとして出力されてもよい。
【０１２８】
なお、初回の学習演算において取得された応答データは、シミュレーション学習演算において、補正なし応答データ１８２として用いられてもよい。補正データは学習演算毎に更新される。
【０１２９】
図１３には、シミュレーション学習演算を担当するシミュレーション学習演算ファンクションブロック１１４３を示す。シミュレーション学習演算は、１回の起動で、仮の補正データを出力することが想定されている。
【０１３０】
より具体的には、シミュレーション学習演算ファンクションブロック１１４３には、入力信号として、シミュレーション学習演算の開始を指示する学習演算起動と、シミュレーション学習演算において補正データを更新するために用いる補正シフト時間と、予め定められた指令値パターンと、単位パルス応答データと、補正なし応答データとが入力される。指令値パターンと、単位パルス応答データと、補正なし応答データとは、時系列データであるので、配列データとして出力されてもよい。
【０１３１】
また、シミュレーション学習演算ファンクションブロック１１４３からは、シミュレーション学習演算を実行中であることを示すシミュレーション学習中と、シミュレーション学習演算の実行により決定された仮の補正データが出力される。仮の補正データは、時系列データであるので、配列データとして出力されてもよい。仮の補正データは、学習演算ファンクションブロック１１４２に入力される補正データの初期値として用いられてもよい。また、後述するような方法を採用することで、補正なし応答データを不要にしてもよい。
【０１３２】
＜Ｊ．実施の形態に対する変形例＞
上述した実施の形態について以下のような変形を加えてもよい。
【０１３３】
（１）シミュレーション学習演算における特性測定の省略（図７のステップＳ４）
上述のシミュレーション学習演算においては、特性測定により、補正なし応答データが取得される（ステップＳ４）。さらに、補正なし応答データを用いて、モデル誤差Ｍｅｒｒ（ｎ）が算出される（ステップＳ８３）が、応答データＳ（ｎ）の取得を省略した場合には、モデル誤差Ｍｅｒｒ（ｎ）はゼロとして取り扱うことになる。
【０１３４】
シミュレーション学習演算における特性測定を省略することで、算出される仮の補正データの精度はやや低下するものの、実際に制御対象を動作させる回数を１回分低減させることができる。
【０１３５】
（２）単位パルス応答データＵ（ｎ）の算出方法（ステップＳ８１）
上述の実施の形態においては、特性測定用指令値として、ステップ状の時間変化を用いるとともに、そのような指令値に応じて取得されるステップ応答データを用いて、単位パルス指令値に対する応答データを算出している。
【０１３６】
これに限らず、特性測定用指令値として、パルス状の時間変化を用いるとともに、そのような指令値に基づいて、単位パルス応答データを直接的に測定してもよい。
【０１３７】
あるいは、特性測定用指令値として、ランプ状の時間変化を用いるとともに、そのような指令値に応じて取得されるランプ応答データから単位パルス応答データを算出してもよい。
【０１３８】
（３）単位パルス応答データＵ（ｎ）の算出方法（ステップＳ８１）および補正データＲｅｖｓｉｍ（ｋｓ）の算出方法（ステップＳ８４）
上述の実施の形態においては、単位パルス応答データＵ（ｎ）と指令値パターンＤ（ｎ）とに基づいて、各回の補正データＲｅｖｓｉｍ（ｋｓ）（ｎ）を算出する。
【０１３９】
単位パルス応答データＵ（ｎ）に代えて、制御演算部１５４および制御対象１０をまとめた伝達関数を用いるようにしてもよい。
【０１４０】
伝達関数は、白色雑音などの入力を与えて、それに対する応答データからシステム同定手法により決定してもよい。すなわち、白色雑音などの任意の指令値を制御演算部１５４へ与えるとともに、当該任意の指令値に対応して取得されるフィードバック値の時間変化に基づいて、システム同定手法により推定される伝達関数を応答特性として決定してもよい。
【０１４１】
このように決定された伝達関数と、指令値パターンＤ（ｎ）とに基づいて、各回の補正データＲｅｖｓｉｍ（ｋｓ）（ｎ）を算出してもよい。
【０１４２】
（４）オフラインシステムでのシミュレーション学習演算
上述の実施の形態においては、典型例として、制御装置１００が学習演算およびシミュレーション学習演算を実行する構成を説明した。しかしながら、学習演算およびシミュレーション学習演算をそれぞれ別の処理主体で実行するようにしてもよい。例えば、制御装置１００が指令値を出力することで得られるフィードバック値を取得し、その取得したフィードバック値を用いて、制御装置１００とは別に用意されたパーソナルコンピュータ上でシミュレーション学習演算を実行し、そのシミュレーション学習演算の実行により決定された仮の補正データを再度制御装置１００へ戻すようにしてもよい。
【０１４３】
＜Ｋ．結論＞
本実施の形態に従う学習制御を含む制御系においては、既知の指令値を制御演算部１５４へ与えるとともに、制御対象１０からのフィードバック値の時間変化である応答データを取得する。そして、取得した応答データに基づいて、制御演算部１５４および制御対象１０を含めた系の特性を反映したシミュレーション学習演算を実行し、指令値パターンに対する仮の補正データを決定する。決定された仮の補正データを学習演算の補正データの初期値として採用することで、学習演算を早期の収束し、適切な補正データを決定できる。
【０１４４】
以上のようなシミュレーション学習演算を採用することで、適切な学習演算を実現するために必要な制御対象１０を実際に動作させる回数を低減でき、これによって、制御系に対する調整の時間および手間を削減できる。また、より少ない学習演算の実行回数であっても、精度の高い学習制御を実現できる。
【０１４５】
また、シミュレーション実行環境が十分な性能を有している場合には、制御対象１０を実際に動作させる回数が少なくて済む結果、学習演算を実現するためのトータルの時間を短縮できる。
【０１４６】
さらに、制御対象１０を実際に動作させる処理と上述のシミュレーションとを並列的に実行することで、さらなるトータル時間の短縮が可能となる。具体的には、現在の指令値パターンで制御対象１０を実際に動作させているときに、次の指令値パターンに対する事前シミュレーションを実行するという手法が考えられる。
【０１４７】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１４８】
１０  制御対象、１００  制御装置、１０２  プロセッサ、１０４  チップセット、１０６  メインメモリ、１０８  フラッシュメモリ、１１０  システムプログラム、１１２  ユーザプログラム、１１２Ａ  シーケンスプログラム、１１２Ｂ  モーションプログラム、１１４  学習制御プログラム、１１６  外部ネットワークコントローラ、１１８  メモリカードインターフェイス、１２０  メモリカード、１２２  内部バスコントローラ、１２４  フィールドバスコントローラ、１２６  Ｉ／Ｏユニット、１５０  指令値生成部、１５１  指令値パターン、１５２  指令値補正部、１５３  補正データ、１５４  制御演算部、１５５  指令値、１５６，１６０  差分器、１５８  位置制御部、１６２  速度制御部、１６４  トルクフィルタ、１６６  電流制御部、１６８  速度検出部、１７０  偏差算出部、１７１  偏差データ、１７２  学習演算部、１７４  学習切替部、１７６  特性測定用指令値生成部、１７７  特性測定用指令値パターン、１７８  モード切替部、１８０  シミュレーション学習演算部、１８１  特性測定用応答データ、１８２  応答データ、２００  サーボドライバ、３００  メカ、１１４１  特性測定ファンクションブロック、１１４２  学習演算ファンクションブロック、１１４３  シミュレーション学習演算ファンクションブロック。
【図１】
2019008416.tif 000003
【図２】
2019008416.tif 000004
【図３】
2019008416.tif 000005
【図４】
2019008416.tif 000006
【図５】
2019008416.tif 000007
【図６】
2019008416.tif 000008
【図７】
2019008416.tif 000009
【図８】
2019008416.tif 000010
【図９】
2019008416.tif 000011
【図１０】
2019008416.tif 000012
【図１１】
2019008416.tif 000013
【図１２】
2019008416.tif 000014
【図１３】
2019008416.tif 000015
【手続補正書】
【提出日】平成30年2月16日(2018.2.16)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
本発明のさらに別の局面に従えば、制御対象を制御するための制御システムが提供される。制御システムは、予め定められたパターンに従って制御周期毎に出力される第１の指令値を、補正データに従って制御周期毎に出力される補正量で補償した第２の指令値を生成する指令値生成手段と、第２の指令値に従って制御対象に対する制御出力を算出する制御演算手段と、第１の指令値と制御対象からのフィードバック値との偏差に基づいて、補正データを更新する学習演算手段と、学習演算手段による補正データに対する更新が実行されていない状態において用いられる、当該補正データの初期値を決定する初期値決定手段とを含む。初期値決定手段は、制御演算手段に与えられる指令値と当該指令値に応答して制御対象に現れるフィードバック値との関係を示す応答特性を取得する特性取得手段と、第１の指令値を仮の補正データで補償した値と、応答特性とに基づいて、制御対象に現れるであろうフィードバック値を推定する推定手段と、第１の指令値と推定されたフィードバック値との偏差に基づいて仮の補正データを更新する更新手段とを含む。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００９２
【補正方法】変更
【補正の内容】
【００９２】
図８を参照して、制御装置１００は、制御演算部１５４に与えられる指令値と当該指令値に応答して制御対象１０に現れるフィードバック値との関係を示す応答特性を取得する。より具体的には、ステップＳ６において取得した特性測定用応答データ１８１を用いて、単位パルス指令値に対する単位パルス応答データＵ（ｎ）を算出する（ステップＳ８１）。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０１１７
【補正方法】変更
【補正の内容】
【０１１７】
図１１（Ａ）には、３回の学習演算を行った状態（補正データ１５３には３回の学習演算によって得られた情報が存在している状態）で制御を実行したときの各部の時間波形を示す。図１１（Ｂ）には、７回の学習演算を行った状態（補正データ１５３には７回の学習演算によって得られた情報が存在している状態）で制御を実行したときの各部の時間波形を示す。