(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0017】
以下に、本発明にかかる制御装置100の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態の形態によりこの発明が限定されるものではない。
【0018】
〔実施の形態1〕
<制御システムの全体構成>
図1は、本発明の実施の形態による制御装置100を含む制御システムの構成を示すブロック図である。図において、当該制御システムは、本実施の形態にかかわる制御装置100と制御対象2から構成される。制御装置100は典型的には、PLC(プログラマブルコントローラ)で構成され、制御出力を演算し制御対象を制御する。制御装置100は所定の制御周期ごとに制御対象を制御した結果であるフィードバック値から制御出力を演算する。制御対象2は、典型的には駆動制御装置としてアクチュエータにより駆動される機械であり、制御装置100が演算した制御出力が入力され、制御出力に応じて駆動される。制御出力によって駆動された制御対象は、エンコーダ(図示せず)等を介して駆動された位置・速度等をフィードバック値として制御装置100へ出力する。
【0019】
本発明の実施の形態については位置制御を行うことにより、指令パターンに応じた軌跡の制御を行う制御システムの実施例について以下に説明する。
【0020】
本実施の形態では、モータで制御対象を駆動する例を取って説明を行うが制御装置100によって制御が行われるものであればこの例に限定されず、例えば制御対象として温度を制御する温度制御装置であっても良い。
【0021】
<制御装置のハードウェア構成>
次に、制御装置100のハードウェア構成の構成について説明する。
図2は、
図1に示す制御装置100のハードウェア構成の一例を示す模式図である。
図2を参照して、制御装置100は、予めインストールされたプログラムをプロセッサが実行することで、制御対象に対する制御を実現する。より具体的には、制御装置100は、CPU(Central Processing Unit)やMPU(Micro-Processing Unit)などのプロセッサ102と、チップセット104と、メインメモリ106と、フラッシュメモリ108と、外部ネットワークコントローラ116と、メモリカードインターフェイス118と、内部バスコントローラ122と、フィールドバスコントローラ124とを含む。
【0022】
プロセッサ102は、フラッシュメモリ108に格納されたシステムプログラム110およびユーザプログラム112を読み出して、メインメモリ106に展開して実行することで、制御対象に対する制御を実現する。システムプログラム110は、データの入出力処理や実行タイミング制御などの、制御装置100の基本的な機能を提供するための命令コードを含む。本実施の形態においては、システムプログラム110は、ライブラリプログラム110Aを含む。ライブラリプログラム110Aは、汎用的な処理を再利用可能な形で格納されており、ユーザプログラム112の実行時に、必要に応じて呼び出される(call/invoke)。すなわち、ライブラリプログラム110Aは、制御装置100でのプログラム実行に用いられる。
【0023】
ユーザプログラム112は、制御対象に応じて任意に設計され、シーケンス制御を実行するためのシーケンスプログラム112Aおよびモーション制御を実行するためのモーションプログラム112
Bを含む。これらのシーケンスプログラム112Aおよびモーションプログラム112Bは、ライブラリプログラム110Aを適宜呼び出すことで実行される。
【0024】
チップセット104は、各コンポーネントを制御することで、制御装置100全体としての処理を実現する。
【0025】
内部バスコントローラ122は、制御装置100と内部バスを通じて連結されるI/Oユニット126とデータを遣り取りするインターフェイスである。フィールドバスコントローラ124は、制御装置100とフィールドバス130(
図2)を通じて連結されるI/Oユニット128とデータを遣り取りするインターフェイスである。内部バスコントローラ122およびフィールドバスコントローラ124は、対応のI/Oユニット126および128にそれぞれ入力される状態値を取得するとともに、プロセッサ102での演算結果を対応のI/Oユニット126および128から指令値としてそれぞれ出力する。
【0026】
外部ネットワークコントローラ116は、各種の有線/無線ネットワークを通じたデータの遣り取りを制御する。メモリカードインターフェイス118は、メモリカード120を着脱可能に構成されており、メモリカード120に対してデータを書込み、メモリカード120からデータを読出すことが可能になっている。
【0027】
制御装置100がプログラムを実行することで提供される機能の一部または全部を専用
のハードウェア回路として実装してもよい。
【0028】
<学習制御の制御装置の動作>
図3は本実施の形態にかかわる学習制御プログラムが実行された時の制御装置100の動作を示すフローチャートを示す。学習制御プログラムが実行されることにより、制御装置100は試行前の偏差データを用いて望ましい出力を出すための補正値を繰り返し的に算出する。
【0029】
S1では学習制御パラメータをメモリから読み出す。学習制御パラメータは制御装置100が制御する制御対象の特性
に応じて変更されるパラメータであり、後述する補正シフト時間を含む。
【0030】
S2では指令パターンから指令値を算出する。ユーザプログラムで規定されている指令パターンから制御周期ごとにモータ制御装置へ出力する指令値を演算する。指令パターンとは、目標とする制御対象の動作を規定するパターンである。典型的には制御対象を特定の位置から特定の位置へ移動させる位置の時間的な変化を示すデータである。制御装置100は指令パターンから制御周期毎にモータ制御装置へ与える位置指令値を演算する。
【0031】
S3ではK回目の補正データを用いて、制御周期毎に出力する指令値を算出する。制御装置100はメモリ上に格納された補正データを読み出し、読みだした補正データを指令値に加算することにより、指令値を補正し、補正後指令値を得る。
【0032】
S4では制御周期毎に補正した補正後指令値をモータ制御装置へ出力する。制御装置100はS3で補正された指令値を逐次メモリから読み出しモータ制御装置へ出力する。同時に制御対象からフィードバックデータを取得し、逐次メモリに格納する。
【0033】
S5では格納したフィードバックデータと制御周期毎の指令値と学習制御パラメータからK+1回目の補正データを算出する。制御装置100は格納されたフィードバックデータと制御周期毎の指令値との偏差データを算出し、偏差データに読み込んだ学習制御パラメータから補正シフト時間を用いて算出することにより、後述する数式1からK+1回目の補正データを算出する。これらの一連の処理を繰り返し的に実行することにより、目標とする制御対象の動作を規定する指令パターンに近づくような補正データを繰り返し算出する。
【0034】
S6では、制御装置100は学習の結果として算出したK回分の補正データを評価し、所定の評価関数によって最も適した補正データを選択し格納する。具体的には制御装置100は、K回目までの位置偏差の二乗和を取得し、その位置偏差の二乗和の減少率が所定の値以下になった場合に学習制御を終了とする。学習結果の評価の仕方はこの手法に限らず、例えば所定回数の学習を行った結果、最も位置偏差の二乗和が少なくなる補正データを選択しても良い。このように目標値に近づく度合を学習制御の終了条件とする構成をとる場合は、繰り返し学習制御を行い補正データを求めたとしても目標とする指令値に近づくとは限らないため、無駄な学習制御演算を回避することができる。
【0035】
<学習制御パラメータ算出実行時の制御装置の動作>
図4は、学習制御パラメータ算出プログラムが実行された時の制御装置100の動作を示すフローチャートである。学習制御パラメータ算出プログラムが実行されると、制御装置100は学習制御パラメータに含まれる、補正シフト時間を制御対象装置の応答特性のデータを取得することにより算出する。
【0036】
S11では学習制御パラメータ算出プログラムが実行されると、制御装置100は特性計測用指令パターンを読み出し、特性計測用の指令値を算出する。ここで特性計測用指令パターンは、指令値に対する制御対象の応答特性を算出できる指令パターンであればどのような指令パターンであっても良く、単位パルス、ステップ関数、ランプ関数であっても良い。
【0037】
S12では、制御装置100は制御周期毎に算出した特性計測用指令値を出力し、かつ制御周期毎にフィードバック値を取り込み格納する。
【0038】
S13では、制御装置100は特性計測用指令値及び制御周期毎のフィードバック値から、制御対象の応答特性データを取得する。本発明の実施形態では単位パルスを出力した場合のフィードバック値から、応答特性データを取得する。制御装置100は応答特性データを用いて補正シフト時間を算出する。応答特性データから算出する補正シフト時間については後述する。
【0039】
制御装置100は、補正シフト時間を算出し算出した補正シフト時間を学習制御パラメータとして格納する。
【0040】
<学習結果を用いた制御プログラム実行時の制御装置の動作>
上述したように、制御装置100は、学習制御パラメータ算出プログラム実行により、制御対象の応答特性のデータを取得し、学習制御パラメータを格納する。
【0041】
制御装置100は、学習制御プログラム実行により、学習制御パラメータ算出プログラム実行より、算出された学習制御パラメータを用いて、繰り返し的に補正データを算出すると共に、学習制御の結果として得られた補正データを格納する。(
図5)
制御装置100は、学習制御の結果として得られた補正データを用いて指令パターンから算出した指令値と学習制御の結果として得られた補正データを用いて指令値を算出し、制御周期毎に出力する。目標とする制御対象の動作を規定するパターンである指令パターンに対する位置偏差が最小となるような指令値を補正データを用いて算出する。
【0042】
S31では、制御装置100は、指令パターンを読み出し指令値を生成する。
【0043】
S32では制御装置100は、補正データを読み出し、指令値に加算し、補正された指令値を算出する。
【0044】
S33では、制御周期毎に算出した指令値をモータ制御装置へ出力する。制御周期毎に補正された指令値を制御対象へ繰り返し出力する。
【0045】
<補正シフト時間>
図6に特性計測用パターンの例を示す。ここでは、単位時間幅パルスを特性計測用パターンとして出力する例を示す。
図6は、単位時間幅パルスを入力し、その応答データを取得した例を示す。ここで単位時間とは制御周期の時間幅を指す。
図6の例では制御周期が1msであるため1ms幅のパルスを出力した例で以下に説明をする。
【0046】
学習制御が適用されるケースでは、通常サンプリング時刻毎に指令値が変化する。学習制御で求める補正データは、各サンプリング時刻の補正量の集まりであると考えられる。そのため本発明の実施形態による学習制御では、あるサンプリング時刻の偏差を用いて対応するサンプリング時刻の指令値に対する補正量を求めることにより、学習制御を通じて適切な補正データの算出が可能となる。
【0047】
指令値の補正量は、サンプリング時刻毎のパルスになるので、単位時間幅パルスを入力したとき、影響が最も多く現れるサンプリング時刻の応答データから補正量を求める。
【0048】
図6に示す例では、単位時間幅のパルスに対して、4msの応答遅れが生じていることが分かる、この値を
補正シフト時間として設定する。
【0049】
図7に
補正シフト時間を用いた補正指令値を用いた制御結果について示す。
図7に指令位置、実位置、補正後位置指令値の軌跡を示す。加えて
図7には、指令位置と実位置の位置偏差量を示す。さらに
図7には、指令値補正量の時間変化を示す。
図7に示す通り、補正後位置指令値は、実位置と指令位置に対して、補正シフト時刻だけ遡ったサンプリング時刻の補正データを用いることにより、実位置と指令位置との偏差が最少化されていることが分かる。
【0050】
図8に応答特性として
図6の特性を有する制御対象について、異なる補正シフト時間を用いて学習制御を行った結果を示す。指令パターンから算出される補正前の指令値とフィードバック値の位置偏差の2乗和の減少率が5%以下になった場合に学習制御を打ち切る条件で算出した。
【0051】
補正シフト時間として4msとして設定して学習制御を行った場合と、補正シフト時間として1msと6msとして設定した結果とを比較すると、補正シフト時間が制御対象の特性に合致した適切な値でない場合には、学習を繰り返し実行したとしても目標とする動作に近づかないことが分かる。
【0052】
本発明においては、学習制御のパラメータの値である補正シフト時間を制御対象の特性値から算出することにより、適切な補正シフト時間を用いた学習制御を行うことにより指令パターンとして与えられる目標とする機械の動作へ近づけることができる。
【0053】
<補正シフト時間算出の変形例>
補正シフト時間の算出にあたり、
図5の例では単位時間幅パルスに対する応答データを取得した。これに対してステップ応答データS(n),n=0-Nを測定して、次の計算式により、単位時間幅パルス指令値に対する応答データU(n)を求めても良い。
〔数2〕U(n) = S(n) - S(n-1) , n=0〜N,
〔数3〕ただし、S(-1) = 0
補正シフト時間の算出にあたり、ランプ応答データR(n), n=0〜Nを測定して次の計算によりステップ応答データS(n)を経由して、単位時間幅パルス指令値に対する応答データU(n)を求めても良い。
〔数4〕 S(n) = R(n) - R(n-1), n=0〜N, ただしR(-1)=0とする
〔数5〕 U(n) = S(n) - S(n-1) , n=0〜N, ただし S(-1)=0 とする
<制御装置の機能的構成>
図9に、本発明の実施の形態による制御装置100の機能的構成を示す。制御装置100は、指令値生成部20と、学習制御部30と、制御部10と、特性測定用指令値生成部40と補正シフト時間算出部50とを備える。
【0054】
指令値生成部20は、指令パターンを読み出し、読み出した指令パターンに基づいて指令値を生成する。ここで指令パターンは制御システムが目標とする制御対象の動作軌跡を規定とする制御の目標とする値である。
【0055】
制御部10は、指令値生成部が生成した指令値と学習制御部が生成した補正データとを加算された補正後指令値を所定の制御周期毎に出力し、制御対象を駆動させる。
【0056】
特性用測定用指令値生成部40は、制御対象の特性を計測するための指令パターンを生成する。制御部は制御対象の特性測定を行う場合は、制御対象に対して所定の制御周期毎に特性測定用の指令値を制御対象へ出力する。
【0057】
補正シフト時間算出部50は、特性測定用指令値に基づいて制御対象を駆動したフィードアック値から、学習制御パラメータとして補正シフト時間を算出する。
【0058】
学習制御部30は、指令値生成部が生成した指令値とフィードバック値との差である偏差データを読み込み、指令値を補正する補正値を含む補正データ繰り返し的に演算する。
【0059】
学習制御部30は、指令値生成部
20が演算した指令値と、制御対象から入力されるフィードバック値との偏差を演算する。学習制御部30はさらに、所定の制御周期ごとに、指令値生成部20が演算した指令値とフィードバック値とから演算を行い、K回目の偏差データを用いてK+1回目の指令値に対する補正データを演算する。ここで制御対象2に関する応答特性から補正シフト時間分だけシフトさせた偏差データを用いて、補正データを演算することにより、制御対象特性に応じた補正データを算出することが可能となる。
【0060】
補正シフト時間は、制御周期の倍数であっても良いし、実数を用いても良い。
【0061】
〔数式1〕 Rev(k+1)(n) = Rev(k)(n) + G * Err(k) (n+st)
k: 学習回数 0,1,2,…
n: サンプル時刻 0,1,2,….,N
Rev(k+1)(n): 学習k+1回目用のサンプル時刻nの補正データ
Rev(k)(n): 学習k回目用のサンプル時刻nの補正データ
G : 学習の強さを決める係数
Err(k)(n+st): 学習k回目のサンプル時刻n+stの偏差データ
st: 補正シフト時間(制御周期の整数倍)
制御部10は、指令値に対して補正値を加算して、制御対象へ出力する。
【0062】
<ライブラリプログラムおよびユーザプログラム>
次に本実施の形態の制御装置が学習制御パラメータ算出、学習制御、動作軌跡制御を行う構成について説明する。一実施形態として、制御装置には、学習制御、学習制御パラメータ算出に適したライブラリプログラムが予め容易される。制御装置のユーザは、図示しない制御装置のサポート装置を用いて当該ライブラリプログラムを読みだすようなコードを作成することができる。このようなライブラリプログラムを制御装置メーカやサードパーティが予め提供しておくことで、短い時間で、制御対象に応じた学習制御パラメータの算出をするようなユーザプログラムを作成することが可能となる。すなわち、ユーザプログラムは、制御対象において典型的には動作軌跡を制御する制御装置において学習制御により指令パターンで与えられる補正データの算出に用いられる。
【0063】
図10は、本実施の形態の制御装置で実行されるライブラリプログラムの一例を示す。主として、学習制御ファンクションブロックと、学習制御パラメータ算出ファンクションブロックとを含む。これ
らのファンクションブロック
の一部または全部は、その実行順序
が到来すると、対応するライブラリプログラムを読み出し、読みだして実行することを指定するための命令である。言い換えれば、各ファンクションブロッ
クに対応するプログラムの実態であるライブラリプログラムが予め容易されており、プロセッサは、プログラムに従って、ライブラリプログラムを適宜呼び出して実行することになる。以下、各ファンクションブロックの機能について説明する。
【0064】
特性測定FBは、制御対象の応答特性を算出するための指令値を生成し、生成した指令値に対すフィードバック値を入手することにより、制御対象の応答特性から学習制御パラメータとして補正シフト時間を導出する。
【0065】
特性測定FBの入力としては、特性測定モード起動と最大測定時間と指令値高さフィードバック値とが規定されている。特性測定モード起動は本ファンクションブロックを起動する信号であり、TRUEとなると特性測定モードが開始され、特性測定中がTRUEとなる。特性測定モードでは、制御装置は特性指令用のパターンから指令値を算出し、制御対象へ出力すると共に、制御対象からのフィードバック値を逐次格納する。最大測定時間は、制御対象への指令値出力に対してフィードバック値を測定する最大時間であり、特性測定用指令値を出力した制御周期から最大時間だけ制御対象のフィードバック値を測定し格納する。指令値高さは制御対象へ出力する特性計測用指令値の高さを指定する入力であり、最大測定時間でかつ指令値高さを有する特性計測用指令値をパルス状、またはステップ状に出力する。
【0066】
特性測定用ファンクションブロックは入力としてさらに、フィードバック値が規定される。フィードバック値は、最大測定時間として与えられた測定時間において、格納されたフィードバック値が入力される。特性計測用指令値とフィードバック値との時刻を比較することにより、補正シフト時間が出力される。
【0067】
<2.学習制御ファンクションブロック>
図11は学習制御ファンクションブロックの一例を示す。学習制御ファンクションブロックは、入力として学習制御起動が規定される。学習制御起動がTRUEとなると、学習制御中にTRUEが出力される。
【0068】
学習制御ファンクションブロックは、さらに学習終了判定値、補正シフト時間、指令パターン(配列データ)、フィードバック値を入力として備える。学習終了判定値 は、判定条件として与えられる実数である。補正シフト時間は、特性測定ファンクションブロックで演算された値であり、制御周期の整数倍または実数で与えられる。指令パターンは配列データとして与えられる。フィードバック値は配列データとして与えられる。指令パターンとフィードバック値とから位置偏差の2乗和を算出し、評価関数値として出力する。
【0069】
制御ファンクションブロックはさらに補正データを入力として規定される。補正データについては、指令パターンとフィードバック値との偏差に対して補正シフト時間分だけシフトした時間について加算することで補正データを出力し、補正データ配列を更新して出力する。補正データ配列の更新が完了すると出力として学習終了がTRUEとなり、学習制御ファンクションブロックの起動が終了する。
【0070】
(利点)
上述したような学習制御ファンクションブロック、特性算出用ファンクションブロックおよびそれを実現するためのライブラリプログラムが提供されることで、作成工数をかけることなく、制御対象の特性に王板学習制御パラメータの算出と、学習制御を行うユーザプログラムが作成できる。
【0071】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。