(57)【特許請求の範囲】
【請求項１】
連結軸を介して駆動対象負荷と結合した電動機と、前記電動機を駆動する電力変換器と、位置指令値と前記電動機の位置検出値との偏差に応じて位置制御器出力を出力する位置制御器と、前記位置指令値を入力として位置フィードフォワード信号を出力する位置フィードフォワード制御器と、前記位置制御器出力と前記位置フィードフォワード信号とを加算し速度指令値を出力する加算器と、前記速度指令値と電動機の速度検出値の偏差に応じてトルク電流指令値を出力する速度制御器と、前記トルク電流指令値と前記電動機に供給されるトルク電流検出値との偏差に応じて前記電力変換器の出力電流を調整する電流制御器を備えた電動機の制御装置において、
予め登録した複数の位置指令パターンを前記位置制御器の位置指令として複数の運転動作を行うステップと、複数の前記運転動作においてオーバーシュート量が所定値を超えないように、前記位置フィードフォワード制御器の制御パラメータを調整するステップと、
前記フィードフォワード制御器の時定数を固定した条件で、前記フィードフォワード制御器のゲインを更新し、各フィードフォワードゲインに対して、予め登録した複数の位置指令パターンを前記位置制御器の位置指令として複数の運転動作を行うステップと、複数の前記運転動作においてオーバーシュート量が所定値を超えない限界フィードフォワードゲインに前記位置フィードフォワード制御器のフィードフォワードゲインを調整するステップを備えたことを特徴とする電動機制御装置の自動調整法。
【請求項２】
請求項１において、前記フィードフォワード時定数を更新しつつ、各フィードフォワード時定数に対して、前記フィードフォワードゲインを前記最大値に調整し、各フィードフォワード時定数に対応する限界フィードフォワードゲインにおける整定時間を計測するステップと、前記フィードフォワード時定数に対応する限界フィードフォワードゲインにおける整定時間を最小とする前記フィードフォワード時定数を極値探索により求めるステップとを備えたことを特徴とする電動機制御装置の自動調整法。
【請求項３】
請求項２において、前記極値探索は、等間隔に前記フィードフォワード時定数の偏差を与えて取得した３つの前記フィードフォワード時定数に関する前記限界フィードフォワードゲインにおける整定時間を比較することを特徴とする電動機制御装置の自動調整法。
【請求項４】
請求項３において、前記フィードフォワード時定数に関する前記限界フィードフォワードゲインにおける整定時間の３点のデータの比較に際し、横軸を前記フィードフォワード時定数、縦軸を前記限界フィードフォワードゲインにおける整定時間とするグラフを仮定し、グラフが下に凸か、単調増加か、単調減少かを判定するステップと、この判定結果が下に凸ならば、３点データのうち、中間データと残る両側データのいずれか一方の中点に新規に１データを取得するステップと、前記判定結果が単調増加ならば、データ間隔を変えないで３点データのうち、最小の時定数側に新規に１データを取得するステップと、前記判定結果が単調減少ならば、データ間隔を変えないで３点データのうち、最大の時定数側に新規に１データを取得するステップとを備えたことを特徴とする電動機制御装置の自動調整法。
【請求項５】
請求項２において、整定時間を測定する為の監視時間をユーザの入力に応じて設定し、前記監視時間の起点を、位置偏差がゼロクロスした時点またはその近傍とすることを特徴とする電動機制御装置の自動調整法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フィードバック制御および／またはフィードフォワード制御を採用する電動機制御装置のフィードバック制御及び／またはフィードフォワード制御における制御パラメータを自動的にチューニングする電動機制御装置の自動調整法および装置に関する。
【背景技術】
【０００２】
フィードバック制御パラメータ及びフィードフォワード制御パラメータを自動的にチューニングする第１の従来技術として、特許文献１が知られている。この第１の従来技術では、制御指令値に対する制御量の応答形状から、知識処理によりフィードバック制御パラメータを推定し、次いで、同応答形状からファジイ推論または、ニューラルネットワークにより最適なフィードフォワードパラメータを決定する。
【０００３】
また、第２の従来技術として、特許文献２を挙げることができる。この第２の従来技術は、特にフィードフォワード自動調整法に関する内容で、制御指令値に対する制御量がオーバーシュートすれば、フィードフォワードゲインを下げ、オーバーシュートしなければ、フィードフォワードゲインを上げることを特徴としている。また、評価関数を導入し、その値が所定値以下となれば、調整を終了する。
【０００４】
【特許文献１】特開平６−１０２９０５号公報（全体）
【特許文献２】特開２００３−６１３７７号公報（全体）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
通常、フィードバック制御パラメータの調整に際しては、制御性能を高める為に、位置制御器および速度制御器のゲインを最大化することが行われる。しかしながら、電動機と駆動対象負荷と連結軸からなる機械系では、機械系に固有の反共振周波数が存在し、その周波数近傍において、非常に振動し易くなる性質がある。この為、実際の調整では、反共振周波数近傍での前記制御器のゲインが高くなり過ぎないように、やや低めに調整する。このような微妙な調整を実現する簡単な手段として、実際に機械を反共振周波数で加振しながら機械振動が過大とならない範囲内で位置制御器および速度制御器のゲインを高めていく方法が考えられる。また、反共振周波数が未知の機械系を反共振周波数で加振する最も簡単且つ確実な方法は、位置指令（制御指令値）として、ステップ指令を与えることである。しかるに、第１の従来技術では、制御指令値を外部から入力する構成の為、与えられる制御指令値によっては、反共振周波数を十分に加振しない場合が発生し得る。このような加振条件下で、位置決め動作を繰り返しながら、前述の如く機械振動を評価しながら位置制御器および速度制御器のゲインを高めていった場合には、わずかの外乱でも発振するような過大なゲイン設定となる可能性があった。
【０００６】
また、フィードフォワード制御パラメータの調整に際しては、複数の位置指令パターンに対して、オーバーシュート量を規定値以下とし、更に、頻繁に利用する特定の位置指令パターンに関しては、整定時間を最小化するような調整が望まれていた。しかしながら、第１、第２の従来技術では、チューニング手段内部に位置指令パターン生成部および、複数の位置指令パターン登録機能を持たない為、前述のような、位置指令パターンと関連付けた調整条件を設定することは困難であった。
【０００７】
本発明の目的は、短時間に適正なフィードバックおよび／またはフィードフォワードの制御パラメータを得ることのできる自動調整法および装置を提供することである。
【課題を解決するための手段】
【０００８】
本発明の望ましい実施態様においては、位置制御器、速度制御器、および電流制御器を縦続接続した電動機制御装置において、前記位置制御器の位置指令値として連続的に変化する調整運転用の位置指令パターンを生成し、この位置指令パターンを前記位置制御器の位置指令として与えた際に、位置偏差波形の振動振幅が所定値を超えない範囲内で、前記位置制御器および／または前記速度制御器の応答周波数を増加させる。
【０００９】
また、より具体的には、前記電動機駆動系の合計慣性モーメント値Ｊに基づいて、前記位置指令パターンの変化の度合いを決定する。
【００１０】
さらに、望ましくは、前記位置指令パターンの変化の度合いは、電動機の速度がその許容最大速度を超えないように、かつ、定速期間を持たず加減速するように決定する。
【００１１】
また、本発明の望ましい実施態様においては、前記位置制御器、速度制御器、および電流制御器の縦続接続に加え、位置指令値を入力して位置フィードフォワード信号を出力する位置フィードフォワード制御器と、前記位置制御器の出力と前記位置フィードフォワード信号とを加算して速度指令値を出力するように構成した電動機制御装置において、予め登録した複数の位置指令パターンを前記位置制御器の位置指令として複数の運転動作を行い、複数の前記運転動作においてオーバーシュート量が所定値を超えないように、前記位置フィードフォワード制御器の制御パラメータを調整する。
【００１２】
本発明の具体的実施例においては、フィードバック制御パラメータの調整に際し、その電動機制御系によって出し得る最大出力付近で電動機を運転させる短移動距離の位置指令パターンを与える。これにより、機械系を反共振周波数近傍も含めて十分に加振する。更に、前記位置指令パターンの生成に際して、駆動系の合計慣性モーメント値Ｊと、電動機制御装置の許容最大トルク値τｍａｘを考慮に入れて、加速レートを前記許容最大トルク値τｍａｘを超えない範囲内で最大となるように、自動設定する。更に、電動機の最大速度を超えない位置指令パターンとする。
【００１３】
このように、制御系の内部が飽和しない条件を満足する最もステップ状指令に近い位置指令パターンを自動生成し、フィードバック制御パラメータの調整を行う。
【００１４】
一方、フィードフォワード制御パラメータの調整に際しては、複数の位置指令パターンを生成し、各位置指令パターン毎に調整条件を設定する。
【発明の効果】
【００１５】
本発明の望ましい実施態様によれば、自動生成した位置指令パターンによるフィードバック制御パラメータを短時間に調整することができる。
【００１６】
また、本発明の望ましい実施態様によれば、ユーザが事前に登録した複数の位置指令パターンに対して、オーバーシュート量を規定値以下とすることができる。
【００１７】
更に、本発明の望ましい実施態様によれば、頻繁に利用する特定の位置指令パターンに関して整定時間を最小化するようなフィードフォワード制御パラメータの自動調整が可能となる。
【００１８】
本発明によるその他の目的と特徴は、以下に述べる実施例の説明の中で明らかにする。
【発明を実施するための最良の形態】
【００１９】
以下本発明の望ましい実施例を図面を参照して説明する。
【実施例１】
【００２０】
図１は、本発明の第１の実施例による電動機制御装置の自動調整法を示す制御ブロック図である。第１の実施例は、フィードバック制御パラメータの自動調整を目的とする。図１において、１は電動機、２は前記電動機１により駆動される駆動対象負荷、３は前記電動機１と前記駆動対象負荷２を連結する連結軸、４は前記電動機１を駆動する電力変換器である。５は前記電動機１の回転軸に取り付けられ、前記電動機１の回転軸の位置検出値θＭを出力する位置検出器、６は位置指令値θＭ＊と前記電動機１の前記位置検出値θＭとの位置偏差θｅを演算する減算器である。７は前記位置偏差θｅに応じて速度指令値ωＭ＊を出力する位置制御器、８は前記位置検出器５の出力する位置検出値θＭを入力して、前記電動機１の回転軸の速度検出値ωＭを出力する速度演算器である。９は前記速度指令値ωＭ＊と前記電動機１の速度検出値ωＭとの速度偏差ωｅを演算する減算器、１０は前記速度偏差ωｅに応じてトルク電流指令値Ｉｑ＊を出力する速度制御器である。１１は前記電動機１に供給されるトルク電流検出値Ｉｑを検出する電流検出器、１２は前記トルク電流指令値Ｉｑ＊と前記電動機１に供給される前記トルク電流検出値Ｉｑとの電流偏差Ｉｅを演算する減算器である。１３は前記電流偏差Ｉｅに応じて前記電力変換器４の出力電流を調整する電流制御器である。１４は前記位置制御器７および速度制御器１０のパラメータを自動調整するフィードバック制御パラメータチューニング部である。このチューニング部は、前述の位置偏差θｅを入力し、位置指令値θＭ＊と前記位置制御器７に設定する位置応答周波数および前記速度制御器１０に設定する速度応答周波数を出力する。
【００２１】
フィードバック制御パラメータチューニング部１４の内部には、後述するフィードバック制御パラメータの自動調整アルゴリズムと、フィードバック制御パラメータの自動調整に必要なステップ状位置指令パターン生成手段を有している。その基本動作は、位置応答周波数および速度応答周波数をステップ状位置指令印加時の位置偏差θｅの振動振幅がユーザが設定する所定値、例えば許容値を超えない範囲内で最大化するというものである。
【００２２】
図２は、図１の実施例における位置指令パターンの生成フロー図である。
【００２３】
図３は、フィードバック制御パラメータ自動調整のための位置指令パターンの生成手順におけるトルク、速度、並びに位置指令パターンの波形図である。
【００２４】
図２のフローチャートと、図３の波形図を用いて、前述の位置指令パターン自動生成手段を具体的に説明する。図２のフローチャートでは、最大トルクで、かつ速度指令値が飽和することなく、指示された移動量（電動機にとっては、回転角度）θｍａｘを回転する速度パターンを生成し、最終的に、位置指令パターンを生成する。このとき、速度パターンに定速期間を設けず、更に、できるだけ、移動距離を短く設定することを方針としている。これにより、位置指令パターンに、より高い周波数成分を含ませることが可能となる。
【００２５】
図２において、２０でフローチャートを開始し、処理２１で移動量θｍａｘの算出を行う。先に移動量θｍａｘは短ければ短い程良いと述べたが、極端に移動量θｍａｘを短く設定すると、移動量θｍａｘに対する位置偏差θｅの振動振幅の割合に関係なく、その絶対値が小さくなり過ぎる場合がある。この場合、前記振動振幅が前記位置検出器５の分解能を下回り、振動を検出できなくなる。そこで、移動量θｍａｘを（１）式で決定している。
【００２６】
θｍａｘ＝α・θｖｉｂ  ・・・・・・・・・・・・・・・・・・（１）
（１）式において、θｖｉｂは、ユーザが設定する位置偏差θｅの振動振幅の許容値である。すなわち、位置偏差θｅの振動振幅がθｖｉｂ未満であれば、位置偏差θｅは振動していないと判定する為の閾値を意味する。また、αは、ユーザが設定する正の定数であり、前記位置偏差θｅの振動振幅の許容値θｖｉｂに対する移動量θｍａｘの比率を意味する。例えば、α＝１００と設定すれば、θｖｉｂが移動量θｍａｘの１／１００となるように移動量θｍａｘが計算される為、移動量θｍａｘの１／１００以上の振幅の振動は確実に検出可能となる。通常、経験的にαには１００以上の値を設定する。
【００２７】
次に、処理２２において、電動機制御装置と電動機の組合せで決まる許容最大トルク値τｍａｘで加速した場合の電動機の理想最大速度ωｐｅａｋを（２）式で算出する。
【００２８】
【数１】
0004745798.tif 000002
但し、（２）式において、τｍａｘは前記許容最大トルク値、θｍａｘは前記移動量、Ｊは前記電動機と前記連結軸と前記駆動対象負荷の慣性モーメント値を合計した合計慣性モーメント値である。次に、判定処理２３において、前記電動機の理想最大速度ωｐｅａｋと電動機の許容最大速度ωｍａｘを比較し、理想最大速度ωｐｅａｋが電動機の許容最大速度ωｍａｘを下回る場合には、処理２４に移行する。処理２４は、許容最大トルクτｍａｘで加速しても、電動機の許容最大速度ωｍａｘを超えない場合である。
【００２９】
図３（ａ）は、許容最大トルクτｍａｘで加速しても、電動機の許容最大速度ωｍａｘを超えない場合を示している。すなわち、前述したように、まず、設定された許容振動振幅θｖｉｂのα倍によって移動量θｍａｘが決まる。この距離を、許容最大トルクτｍａｘで加速し、定速期間を置くことなく、間髪を入れず許容最大トルクτｍａｘで減速させると、正負のトルク４１により、速度パターン４０が得られ、これによって、移動量θｍａｘ内の位置指令パターン４２が得られる。このときの電動機の理想最大速度ωｐｅａｋが、電動機の許容最大速度ωｍａｘを超えない場合、そのままの速度パターン４０が利用できるので、処理２４では、最大速度を前記理想最大速度ωｐｅａｋに設定し、処理２５に移行する。処理２５では、許容最大トルク値τｍａｘで前記理想最大速度ωｐｅａｋまで加速する加減速時間ｔａを（３）式で算出し、設定後、２６に移行し、処理を終了する。
【００３０】
【数２】
0004745798.tif 000003
次に、判り易くするため、電動機の許容最大速度が極端に小さいケースを想定して、図３（ｂ）を参照して説明する。今、仮定により、前記判定処理２３において、理想最大速度ωｐｅａｋが、電動機の小さな許容最大速度ωｍａｘを上回ってしまうので、処理２７に移行する。処理２７では、許容最大トルクτｍａｘで加速すると、電動機の許容最大速度ωｍａｘを超えてしまう場合であり、止む無く図３（ｂ）に示すように、最大速度として前記電動機の許容最大速度ωｍａｘに設定し、処理２８に移行する。すなわち、速度パターンは符号４３で示すようになり、これを時間積分した移動距離θＳＬは、前記移動量θｍａｘには達し得ない。処理２８では、許容最大トルク値τｍａｘで電動機の許容最大速度ωｍａｘまで加速する加減速時間ｔｂを（４）式で算出し設定後、２６に移行し、処理を終了する。
【００３１】
ｔｂ＝Ｊ・ωｍａｘ／τｍａｘ・・・・・・・・・・・・・・・・・・・（４）
このときの電動機の移動量θＳＬは、（５）式で表すことができる。
【００３２】
【数３】
0004745798.tif 000004
また、このときに、電動機が出力するトルクの大きさτＳＬは、下記（６）式で表すことができ、許容最大トルクτｍａｘよりも小さくなることが分かる。
【００３３】
【数４】
0004745798.tif 000005
図４は、第１の実施例によるフィードバック制御パラメータの自動調整フローチャートである。この図を用いて、フィードバック制御パラメータチューニング部１４におけるフィードバック制御パラメータの自動調整アルゴリズムを説明する。図４において、Ｆｓ＿ｍｉｎは、ユーザが設定する最小速度応答周波数、Ｆｓ＿ｍａｘはユーザが設定する最大速度応答周波数、ｄｉｖ＿Ｆｓはユーザが設定する速度応答周波数増分ステップである。後述する調整時には、速度応答周波数をＦｓ＿ｍｉｎからＦｓ＿ｍａｘまでｄｉｖ＿Ｆｓのステップで増加しながら調整することを意味する。同様に、Ｆｐ＿ｍｉｎは、ユーザが設定する最小位置応答周波数、Ｆｐ＿ｍａｘはユーザが設定する最大位置応答周波数、ｄｉｖ＿Ｆｐはユーザが設定する位置応答周波数増分ステップである。後述する調整時には、位置応答周波数をＦｐ＿ｍｉｎからＦｐ＿ｍａｘまでｄｉｖ＿Ｆｐのステップで増加しながら調整することを意味する。また、θｖｉｂは、ユーザが設定する位置偏差θｅの振動振幅許容値である。Ｆｓは、前記速度制御器１０に設定されている現在の速度応答周波数、Ｆｐは前記位置制御器７に設定されている現在の位置応答周波数である。Ｆｐ＿ｖ０は、振動限界の最大位置応答周波数であり、位置偏差波形の振動振幅が許容値θｖｉｂ以下となる最大の位置応答周波数を記録する。Ｆｓ＿ｖｌは、調整により最終的に求まる最適速度応答周波数、Ｆｐ＿ｖｌは調整により最終的に求まる最適位置応答周波数、ｆｌａｇ＿ｆｐｍａｘは‘１’の場合に位置偏差波形の振動振幅が許容値θｖｉｂ以下のまま最大位置応答に達したことを示すフラグである。
【００３４】
本フローチャートによる調整の基本的考え方は、位置応答周波数および速度応答周波数を位置偏差波形に振動を誘発しない範囲内で可能な限り高く設定することである。また、位置応答周波数を徐々に高めて行く過程で、位置偏差波形に振動が発生しても、速度応答周波数を少し高めることで前記位置偏差波形の振動を低減できる場合のあることが経験的に分かっている。そこで、この経験則を活かす為に、位置偏差波形に振動が発生した場合には、速度応答周波数をｄｉｖ＿Ｆｓだけ高くして前記振動の再評価を行うこととした。
【００３５】
次に、図４のフローチャートを順を追って説明する。図４では、５０でフローチャートを開始し、処理５１で変数の初期化を実施する。初期化処理５１では、ＦｓにＦｓ＿ｍｉｎを代入し、速度応答周波数を前記最小速度応答周波数Ｆｓ＿ｍｉｎから調整開始するように設定している。同様に、ＦｐにＦｐ＿ｍｉｎを代入し、位置応答周波数を前記最小位置応答周波数Ｆｐ＿ｍｉｎから調整開始するように設定している。更に、振動限界の最大位置応答周波数Ｆｐ＿ｖ０を最小位置応答周波数Ｆｐ＿ｍｉｎで、前記フラグｆｌａｇ＿ｆｐｍａｘを‘０’で初期化する。次に、処理５２に移行し、前述の手段で生成するステップ状の位置指令を図１における位置指令値θＭ＊として印加した際の位置偏差θｅの振動振幅を測定する。この位置偏差θｅの振動振幅の測定手段については後述する。次に、判定処理５３に移行し、前記位置偏差θｅの振動振幅が前記許容値θｖｉｂ以下か否かを判定する。判定処理５３で振動振幅が許容値θｖｉｂ以下ならば、位置応答周波数を更に上げる余地があり、判定処理５４に移行する。判定処理５４では、現在の位置応答周波数Ｆｐが最大位置応答周波数Ｆｐ＿ｍａｘ未満か否かを判定し、未満であれば処理５５に移行する。処理５５では現在の位置応答周波数Ｆｐを位置応答周波数増分ステップｄｉｖ＿Ｆｐだけ増加し、前記処理５２に移行する。一方、前記判定処理５４で現在の位置応答周波数Ｆｐが最大位置応答周波数Ｆｐ＿ｍａｘ以上の場合には、処理５６に移行する。処理５６では、前記フラグｆｌａｇ＿ｆｐｍａｘに‘１’を設定し、位置偏差波形の振動振幅が許容値θｖｉｂ以下のまま最大位置応答に達したことを明示し、判定処理５７に移行する。判定処理５７では、現在の速度応答周波数Ｆｓが最大速度応答周波数Ｆｓ＿ｍａｘ未満か否かを判定し、未満であれば処理５８に移行する。処理５８では現在の速度応答周波数Ｆｓを速度応答周波数増分ステップｄｉｖ＿Ｆｓだけ増加し、位置偏差波形の振動振幅の低減を図りつつ、前記処理５２に移行する。前記判定処理５７で現在の速度応答周波数Ｆｓが最大速度応答周波数Ｆｓ＿ｍａｘ以上の場合には、位置応答周波数・速度応答周波数ともに、位置偏差波形の振動振幅が許容値θｖｉｂ以下のまま最大値に達したことを意味し、処理５９に移行する。処理５９では、前記最適速度応答周波数Ｆｓ＿ｖｌおよび最適位置応答周波数Ｆｐ＿ｖｌに対して、それぞれ現在の速度応答周波数Ｆｓ、現在の位置応答周波数Ｆｐを代入した後、６０に移行し終了する。
【００３６】
前記判定処理５３で振動振幅が許容値θｖｉｂ以下でない場合には、判定処理６１に移行する。判定処理６１では、前記フラグｆｌａｇ＿ｆｐｍａｘをチェックし、位置偏差波形の振動振幅が許容値θｖｉｂ以下のまま最大位置応答に達したか否かを確認する。ここで、ｆｌａｇ＿ｆｐｍａｘ＝０でない場合には、位置偏差波形の振動振幅が許容値θｖｉｂ以下のまま、最大位置応答に達し、その後、位置偏差波形の振動振幅が許容値θｖｉｂを超えるまで速度応答周波数を高めたことを意味し、処理６７に移行する。処理６７では、前記最適速度応答周波数Ｆｓ＿ｖｌに対して、位置偏差波形の振動振幅が許容値θｖｉｂ以下となる条件を設定する為に、前記現在の速度応答周波数Ｆｓから速度応答周波数増分ステップｄｉｖ＿Ｆｓだけ減算した値を代入した後、６０に移行し終了する。判定処理６１で、ｆｌａｇ＿ｆｐｍａｘ＝０の場合には、判定処理６２に移行し、現在の位置応答周波数Ｆｐと前記振動限界の最大位置応答周波数Ｆｐ＿ｖ０とを比較する。ここで、「Ｆｐ＞Ｆｐ＿ｖ０」が成立しない場合には、現在の位置応答周波数Ｆｐが振動限界の最大位置応答周波数Ｆｐ＿ｖ０を超える条件が存在しないことを意味し、前記処理６７に移行する。前記判定処理６２で「Ｆｐ＞Ｆｐ＿ｖ０」が成立する場合には、判定処理６３に移行する。判定処理６３では、現在の速度応答周波数Ｆｓが最大速度応答周波数Ｆｓ＿ｍａｘ未満か否かを判定し、未満であれば処理６４に移行する。処理６４では、現在の速度応答周波数Ｆｓを速度応答周波数増分ステップｄｉｖ＿Ｆｓだけ増加し、位置偏差波形の振動振幅の低減を図る。更に、位置偏差波形の振動振幅が必ず許容値θｖｉｂ以下となるように、現在の位置応答周波数Ｆｐを位置応答周波数増分ステップｄｉｖ＿Ｆｐだけ減少し、処理６５に移行する。処理６５では、振動限界の最大位置応答周波数Ｆｐ＿ｖ０として現在の位置応答周波数Ｆｐを記録し、位置応答周波数を更に上げるべく前記処理５２に移行する。前記判定処理６３で現在の速度応答周波数Ｆｓが最大速度応答周波数Ｆｓ＿ｍａｘ以上の場合には、現在の速度応答周波数Ｆｓをこれ以上増加できないことを意味し、処理６６に移行する。処理６６では、前記最適速度応答周波数Ｆｓ＿ｖｌに対して、現在の速度応答周波数Ｆｓを代入する。更に、前記最適位置応答周波数Ｆｐ＿ｖｌに対しては、位置偏差波形の振動振幅が必ず許容値θｖｉｂ以下となるように、現在の位置応答周波数Ｆｐを位置応答周波数増分ステップｄｉｖ＿Ｆｐだけ減少した値を代入した後、６０に移行し終了する。
【００３７】
図５および図６は、第１の実施例における振動振幅・整定時間・オーバーシュート量の計測処理フロー図である。このフローを用い、フィードバック制御パラメータチューニング部１４および、後述する位置フィードフォワード制御パラメータチューニング部１７において必要となる前記位置偏差波形の振動振幅、整定時間、オーバーシュート量を計測する方法を述べる。図５および図６において、ｔｉｍｅｏｕｔは、ユーザが設定する整定監視タイムアウト時間であり、位置偏差波形が始めてゼロクロスした時点を起点として、ｔｉｍｅｏｕｔだけ整定時間を計測させる調整パラメータである。ｐｏｓｉｎ＿ｐｌｓは、ユーザが設定する整定判定用偏差であり、位置偏差の絶対値が安定してｐｏｓｉｎ＿ｐｌｓ以下となるとき、整定しているとする。また、ｐｏｓｅｒｒは前記位置偏差、ｐｏｓｅｒｒ＿ｗｏｒｋは振動・オーバーシュート計測用位置偏差であり、ステップ状位置指令印加直後の位置偏差が電動機の回転方向に関わらず、常に正側から開始するように位置偏差ｐｏｓｅｒｒを符号調整した状態量である。ｆｌａｇ＿ｐｏｓｅｒｒ＿ｐｌｕｓは、ステップ状位置指令印加直後の位置偏差が正から開始することを示すフラグであり、位置偏差が正から開始する時には、ｆｌａｇ＿ｐｏｓｅｒｒ＿ｐｌｕｓ＝１とし、位置偏差が負から開始する時には、ｆｌａｇ＿ｐｏｓｅｒｒ＿ｐｌｕｓ＝０とする。よって、ｆｌａｇ＿ｐｏｓｅｒｒ＿ｐｌｕｓ＝１ではｐｏｓｅｒｒ＿ｗｏｒｋ＝ｐｏｓｅｒｒであり、ｆｌａｇ＿ｐｏｓｅｒｒ＿ｐｌｕｓ＝０ではｐｏｓｅｒｒ＿ｗｏｒｋ＝−ｐｏｓｅｒｒとなる。ｐｏｓｅｒｒ＿ｍｉｎは位置偏差最小値であり、ステップ状の位置指令が変化し終わった直後から、整定時間の計測を終了するまでの間、常にその時点における前記ｐｏｓｅｒｒ＿ｗｏｒｋの最小値を保持する変数である。ｐｏｓｅｒｒ＿ｖｉｂは位置偏差中の振動振幅最大値であり、「ｐｏｓｅｒｒ＿ｗｏｒｋ−ｐｏｓｅｒｒ＿ｍｉｎ」で算出されるｐｏｓｅｒｒ＿ｗｏｒｋの振動振幅から常に最大値を保持する変数である。ｆｌａｇ＿ｐｌｓｉｎは整定判定用偏差到達フラグであり、位置偏差の絶対値が整定判定用偏差ｐｏｓｉｎ＿ｐｌｓ以下ならばｆｌａｇ＿ｐｌｓｉｎ＝１とし、そうでないならば、ｆｌａｇ＿ｐｌｓｉｎ＝０とする。ｆｌａｇ＿ｐｌｓｉｎ＿ｂｋは整定判定用偏差到達フラグ前回値であり、前回設定したｆｌａｇ＿ｐｌｓｉｎと同値なフラグである。ｔｉｍｅ＿ｓは計測経過時間であり、ステップ状の位置指令が変化し終わった直後を起点とする経過時間、ｔｉｍｅ＿ｗは整定監視経過時間であり、位置偏差波形が始めてゼロクロスした時点を起点とする経過時間を示す。Ｓｔは整定時間であり、位置偏差の絶対値が整定判定用偏差ｐｏｓｉｎ＿ｐｌｓよりも大きい値からｐｏｓｉｎ＿ｐｌｓ以下となる度にＳｔに対して計測経過時間ｔｉｍｅ＿ｓを代入する。これにより、前記整定監視タイムアウト時間ｔｉｍｅｏｕｔが適切に長く設定されていれば、Ｓｔにはステップ状の位置指令が変化し終わった直後から位置偏差が最終的に整定するまでに要する時間が記録されることになる。ｏｖｅｒ＿ｓｈｏｏｔは電動機位置の位置指令値に対するオーバーシュート量であり、整定後には前記ｐｏｓｅｒｒ＿ｍｉｎの符号反転値に等しくなる。
【００３８】
次に、図５および図６のフローチャートを順を追って説明する。図５および図６では、８０でフローチャートを開始し、判定処理８１で位置指令θＭ＊の変化を確認する。ここでは、ステップ状の位置指令が入力されるまでは、位置指令に変化がない為、判定処理８１を繰り返し実行するが、ステップ状の位置指令が入力されると、「位置指令θＭ＊に変化あり」と判定され、判定処理８２に移行する。判定処理８２では、位置指令が一定が否かを判定する。ここでは、ステップ状の位置指令が完全に立ち上がった時点において、位置指令が一定となり、判定処理８３に移行する。一方、ステップ状の位置指令が立ち上がっている最中は、前記判定処理８２を繰り返し実行する。判定処理８３では、位置偏差ｐｏｓｅｒｒの正負を確認し、正であれば処理８４に移行する。処理８４では、前記位置偏差が正から開始することを示すフラグｆｌａｇ＿ｐｏｓｅｒｒ＿ｐｌｕｓに“１”をセットし、処理８５に移行する。処理８５では、前記位置偏差最小値ｐｏｓｅｒｒ＿ｍｉｎを位置偏差ｐｏｓｅｒｒで初期化し、初期化処理８６に移行する。前記判定処理８３において、位置偏差ｐｏｓｅｒｒが負であれば処理８７に移行し、前記位置偏差が正から開始することを示すフラグｆｌａｇ＿ｐｏｓｅｒｒ＿ｐｌｕｓに“０”をセットし、処理８８に移行する。処理８８では、前記位置偏差最小値ｐｏｓｅｒｒ＿ｍｉｎを位置偏差ｐｏｓｅｒｒの符号反転値−ｐｏｓｅｒｒで初期化し、初期化処理８６に移行する。初期化処理８６では、位置偏差中の振動振幅最大値ｐｏｓｅｒｒ＿ｖｉｂ、計測経過時間ｔｉｍｅ＿ｓ、整定監視経過時間ｔｉｍｅ＿ｗ、整定判定用偏差到達フラグ前回値ｆｌａｇ＿ｐｌｓｉｎ＿ｂｋをゼロで初期化し、処理９０に移行する。処理９０では、計測経過時間ｔｉｍｅ＿ｓに１加算し、判定処理９１に移行する。判定処理９１では、位置偏差ｐｏｓｅｒｒの絶対値が整定判定用偏差ｐｏｓｉｎ＿ｐｌｓ以下ならば、処理９２に移行し整定判定用偏差到達フラグｆｌａｇ＿ｐｌｓｉｎに“１”をセットし、判定処理９３に移行する。判定処理９３では、整定判定用偏差到達フラグ前回値ｆｌａｇ＿ｐｌｓｉｎ＿ｂｋがゼロか否かを判定し、ｆｌａｇ＿ｐｌｓｉｎ＿ｂｋ＝０ならば、処理９５に移行し、整定時間Ｓｔに計測経過時間ｔｉｍｅ＿ｓを記録し処理９５に移行する。処理９５では、次回の位置偏差判定処理９１に備えて、整定判定用偏差到達フラグ前回値ｆｌａｇ＿ｐｌｓｉｎ＿ｂｋに対して、今回の整定判定用偏差到達フラグｆｌａｇ＿ｐｌｓｉｎの値を代入し、判定処理９７に移行する。前記判定処理９１において、位置偏差ｐｏｓｅｒｒの絶対値が整定判定用偏差ｐｏｓｉｎ＿ｐｌｓ以下とならない場合には、処理９６に移行し、整定判定用偏差到達フラグｆｌａｇ＿ｐｌｓｉｎに“０”をセットし、前記処理９５に移行する。また、前記判定処理９３において、ｆｌａｇ＿ｐｌｓｉｎ＿ｂｋ＝１ならば、既に整定している為、整定時間Ｓｔを更新する必要はなく、前記処理９５に移行する。判定処理９７では、前記位置偏差が正から開始することを示すフラグｆｌａｇ＿ｐｏｓｅｒｒ＿ｐｌｕｓをチェックする。ｆｌａｇ＿ｐｏｓｅｒｒ＿ｐｌｕｓ＝１ならば、位置偏差が正から開始したとして、前��振動・オーバーシュート計測用位置偏差ｐｏｓｅｒｒ＿ｗｏｒｋに位置偏差ｐｏｓｅｒｒをそのまま代入し、判定処理９９に移行する。判定処理９７において、ｆｌａｇ＿ｐｏｓｅｒｒ＿ｐｌｕｓ＝０ならば、位置偏差が負から開始したとして、前記振動・オーバーシュート計測用位置偏差ｐｏｓｅｒｒ＿ｗｏｒｋに位置偏差ｐｏｓｅｒｒの符号反転値−ｐｏｓｅｒｒを代入し、判定処理９９に移行する。判定処理９９では、振動・オーバーシュート計測用位置偏差ｐｏｓｅｒｒ＿ｗｏｒｋが位置偏差最小値ｐｏｓｅｒｒ＿ｍｉｎ以下か否かを判定する。以下であれば処理１０１に移行し、位置偏差最小値ｐｏｓｅｒｒ＿ｍｉｎを現在の振動・オーバーシュート計測用位置偏差ｐｏｓｅｒｒ＿ｗｏｒｋで更新し、判定処理１０２に移行する。前記判定処理９９において、振動・オーバーシュート計測用位置偏差ｐｏｓｅｒｒ＿ｗｏｒｋが位置偏差最小値ｐｏｓｅｒｒ＿ｍｉｎ以下とならない場合には、位置偏差最小値ｐｏｓｅｒｒ＿ｍｉｎを更新することなく、判定処理１０２に移行する。判定処理１０２では、これまでに計測された位置偏差中の振動振幅最大値ｐｏｓｅｒｒ＿ｖｉｂと「ｐｏｓｅｒｒ＿ｗｏｒｋ−ｐｏｓｅｒｒ＿ｍｉｎ」を比較する。そして、ｐｏｓｅｒｒ＿ｖｉｂの方が小さい場合には、ｐｏｓｅｒｒ＿ｖｉｂを「ｐｏｓｅｒｒ＿ｗｏｒｋ−ｐｏｓｅｒｒ＿ｍｉｎ」で更新し判定処理１０４に移行する。前記判定処理１０２において、ｐｏｓｅｒｒ＿ｖｉｂの方が大きい場合には、ｐｏｓｅｒｒ＿ｖｉｂを更新することなく、判定処理１０４に移行する。判定処理１０４では、位置偏差がゼロクロスしたことを検出する為に、位置偏差最小値ｐｏｓｅｒｒ＿ｍｉｎがゼロ以下か否かを評価する。ここで、ｐｏｓｅｒｒ＿ｍｉｎ≦０ならば、過去に位置偏差がゼロクロスしたと判定し、処理１０５に移行する。処理１０５では、位置偏差波形が始めてゼロクロスした時点を起点とする経過時間を表す整定監視経過時間ｔｉｍｅ＿ｗに１加算し、判定処理１０６に移行する。判定処理１０４でｐｏｓｅｒｒ＿ｍｉｎ≦０が成立しない場合には、未だ一度も位置偏差波形がゼロクロスしていないと判定し、処理９０に移行する。判定処理１０６では、ステップ状の位置指令が変化し終わった直後を起点とする整定監視経過時間ｔｉｍｅ＿ｗと整定監視タイムアウト時間ｔｉｍｅｏｕｔを比較し、ｔｉｍｅ＿ｗ≧ｔｉｍｅｏｕｔならば整定監視を終了するべく処理１０７に移行する。一方、前記判定処理１０６において、ｔｉｍｅ＿ｗ≧ｔｉｍｅｏｕｔが成立しない場合には、整定監視を継続するべく処理９０に移行する。前記処理１０７では、オーバーシュート量ｏｖｅｒ＿ｓｈｏｏｔとして位置偏差最小値ｐｏｓｅｒｒ＿ｍｉｎの符号反転値−ｐｏｓｅｒｒ＿ｍｉｎを設定し、１０８に移行し、前記位置偏差波形の振動振幅、整定時間、オーバーシュート量を計測する処理を終了する。
【００３９】
図７は、第１の実施例における振動振幅・整定時間・オーバーシュート量の計測法説明波形図であり、各部状態量の波形を用いて、図５および図６のフローチャートの結果を具体例で示す。図７において、波形１２０は位置指令値θＭ＊、波形１２１は位置偏差ｐｏｓｅｒｒ及び振動・オーバーシュート計測用位置偏差ｐｏｓｅｒｒ＿ｗｏｒｋである。波形１２２は整定判定用偏差到達フラグｆｌａｇ＿ｐｌｓｉｎ、波形１２３は位置偏差最小値ｐｏｓｅｒｒ＿ｍｉｎ、波形１２４はｐｏｓｅｒｒ＿ｗｏｒｋ−ｐｏｓｅｒｒ＿ｍｉｎである。また、各波形の横軸は計測経過時間ｔｉｍｅ＿ｓであり、位置指令を示す波形１２０が完全に立ち上がった時点をｔｉｍｅ＿ｓ＝０としている。この場合、位置指令波形１２０が正方向に変化しているため、ｔｉｍｅ＿ｓ≧０でのｐｏｓｅｒｒ＿ｗｏｒｋは位置偏差ｐｏｓｅｒｒと等しい。ここでもし、位置指令波形１２０が負方向に変化していたならば、ｐｏｓｅｒｒ＿ｗｏｒｋを示す波形１２１は変わらずに、位置偏差ｐｏｓｅｒｒのみ波形１２１を時間軸に対して線対称に変換した波形となる。また、整定判定用偏差到達フラグｆｌａｇ＿ｐｌｓｉｎを示す波形１２２は、ｐｏｓｅｒｒ＿ｗｏｒｋを示す波形１２１がグラフ中の−ｐｏｓｉｎ＿ｐｌｓからｐｏｓｉｎ＿ｐｌｓの間に存在すれば、”１”を採り、それ以外では”０”を採る。この例のように、位置偏差波形が振動的な場合には、整定判定用偏差到達フラグｆｌａｇ＿ｐｌｓｉｎは”０”と”１”を何度か往復した後、特に整定監視タイムアウト時間ｔｉｍｅｏｕｔが十分に長く設定されていれば、最終的に”１”に落ち着く。また、整定判定用偏差到達フラグｆｌａｇ＿ｐｌｓｉｎの立ち上がりエッジ（矢印）毎に、整定時間Ｓｔを計測経過時間ｔｉｍｅ＿ｓで更新する。整定監視経過時間ｔｉｍｅ＿ｗは、前記整定監視タイムアウト時間ｔｉｍｅｏｕｔを計測する為の経過時間であり、図中に時間軸１２５で示したように、位置偏差波形１２１が始めてゼロクロスした時点を起点としている。このように、計測経過時間ｔｉｍｅ＿ｓとは別に、位置偏差波形１２１が始めてゼロクロスした時点を起点とする整定監視経過時間ｔｉｍｅ＿ｗを新たに設ける。その理由は、位置偏差波形がゼロクロスした時点から整定までに要する時間が、位置応答周波数や速度応答周波数といった制御パラメータの影響をあまり受けないことによる。これにより、ユーザによる整定監視タイムアウト時間ｔｉｍｅｏｕｔの設定に際しては、位置応答周波数や速度応答周波数といった制御パラメータを考慮することなく、一定値を設定するだけで、整定時間Ｓｔの正確な測定を可能としている。また、波形１２３は、位置偏差最小値ｐｏｓｅｒｒ＿ｍｉｎであり、振動・オーバーシュート計測用位置偏差ｐｏｓｅｒｒ＿ｗｏｒｋと比較すると分かり易いが、ｐｏｓｅｒｒ＿ｗｏｒｋの各時点での最小値を示す。また、波形１２４は、ｐｏｓｅｒｒ＿ｗｏｒｋ−ｐｏｓｅｒｒ＿ｍｉｎであり、振動・オーバーシュート計測用位置偏差ｐｏｓｅｒｒ＿ｗｏｒｋに含まれる振動成分のみを抽出した波形となる。このことは、もしｐｏｓｅｒｒ＿ｗｏｒｋが振動を伴わない漸減波形ならば、ｐｏｓｅｒｒ＿ｗｏｒｋ−ｐｏｓｅｒｒ＿ｍｉｎが常にゼロに���ることから理解できる。また、最終的に求めたい位置偏差中の振動振幅最大値ｐｏｓｅｒｒ＿ｖｉｂは、波形１２４のピークホールド値である。
【００４０】
以上のように、図５および図６のフローチャートを用いることにより、フィードバック制御パラメータチューニング部１４で必要となる前記位置偏差波形の振動振幅、整定時間、オーバーシュート量を計測することができる。なお、後述する第２の実施例の位置フィードフォワード制御パラメータチューニング部１７においても、前記位置偏差波形の振動振幅、整定時間、オーバーシュート量を利用することができる。
【実施例２】
【００４１】
図８は、本発明の第２の実施例による電動機制御装置のフィードフォワード制御パラメータの自動調整手段を含む制御ブロック図である。第２の実施例では、図１のフィードバック制御パラメータの自動調整に加え、位置フィードフォワード制御パラメータの自動調整をも行う。図８において、図１と同一機能部には同一符号を付け、重複説明は避ける。７は位置偏差θｅに応じて位置制御器出力信号ωＦＢ＊を出力する位置制御器、１５は位置指令値θＭ＊を入力し、位置フィードフォワード制御器出力信号ωＦＦ＊を出力する位置フィードフォワード制御器である。その入出力関係は、ラプラス演算子をｓとするとき、制御器のパラメータであるフィードフォワードゲインＫｆｆとフィードフォワード時定数Ｔｆｆを用いて（７）式で表すことができる。
【００４２】
【数５】
0004745798.tif 000006
１７は、図１の１４と同様に、位置制御器７および速度制御器１０のパラメータを自動調整するほかに、位置フィードフォワード制御器１５におけるフィードフォワードゲインＫｆｆおよび時定数Ｔｆｆを自動調整する制御パラメータチューニング部である。したがって、１４に加わる機能として、位置偏差θｅを入力し、位置指令値θＭ＊と位置フィードフォワード制御器１５に設定するフィードフォワードゲインＫｆｆおよびフィードフォワード時定数Ｔｆｆをも出力することとなる。また、制御パラメータチューニング部１７の内部には、後述する位置フィードフォワード制御パラメータの自動調整アルゴリズムと、予めユーザが登録した複数の位置指令パターンを順次、位置指令値θＭ＊として出力する機能をも有している。その基本動作は、複数の位置指令パターンの全てに対して、実際に運転動作を行い、全ての位置指令パターンに関してオーバーシュート量が許容値を超えない条件を満たし、且つ、特定の位置指令パターンにおける整定時間を最小化する。このとき、位置フィードフォワード制御器のフィードフォワードゲインＫｆｆおよびフィードフォワード時定数Ｔｆｆの自動探索を行うものである。
【００４３】
次に、フィードフォワードゲインＫｆｆの自動調整法を具体的に説明するが、まず、その考え方を、図９を参照して説明する。
【００４４】
図９は、図８の実施例におけるフィードフォワードゲインと整定時間・オーバーシュートの関係説明図であり、同図（ａ）は、フィードフォワードゲインと整定時間の関係、同図（ｂ）は、フィードフォワードゲインとオーバーシュート量の関係を示す。図９（ａ）では、横軸がフィードフォワードゲインＫｆｆ、縦軸が整定時間であり、基本的にはフィードフォワードゲインＫｆｆが大きい程、整定時間が短くなる傾向を示す。図のように、フィードフォワードゲインＫｆｆがある値以上になると、急激に整定時間が長くなることを示している。一方、図９（ｂ）では、横軸がフィードフォワードゲインＫｆｆ、縦軸がオーバーシュート量であり、フィードフォワードゲインＫｆｆが小さい内は、オーバーシュートを全く発生しない。しかし、フィードフォワードゲインＫｆｆがある値以上になると、オーバーシュートが発生し始め、以後、その発生量はＫｆｆに関して単調増加となることを示している。
【００４５】
以上、図９（ａ），（ｂ）から、オーバーシュート量がゼロか十分に小さい場合には、整定時間はフィードフォワードゲインＫｆｆを大きく設定した方が短くなると言える。また、オーバーシュート量はフィードフォワードゲインＫｆｆを大きく設定する程、増大することから、整定時間を最小化するには、フィードフォワードゲインＫｆｆをオーバーシュート量が許容値を超えない範囲内で最大化すれば良いことが分かる。
【００４６】
よって、以下に説明する処理フローチャートでは、予め登録した全位置指令パターンに関して、オーバーシュート量が許容値を超えない条件を満たす最大フィードフォワードゲインＫｆｆの探索を行う。
【００４７】
図１０は、第２の実施例におけるフィードフォワードゲインＫｆｆの自動調整法の処理フロー図である。なお、フィードフォワード時定数Ｔｆｆの自動調整法については、その調整過程において、フィードフォワードゲインＫｆｆの自動調整を必要とする為、後述することにする。
【００４８】
図１０において、Ｋｆｆ＿ｉｎｉはユーザが設定するフィードフォワードゲイン初期値、ｄｍａｘ＿Ｋｆｆはユーザが設定するフィードフォワードゲイン探索最大ステップ、ｄｍｉｎ＿Ｋｆｆはユーザが設定するフィードフォワードゲイン探索最小ステップである。Ｋｆｆは位置フィードフォワード制御器１５に設定されている現在のフィードフォワードゲイン、ｄｉｖ＿Ｋｆｆは現在のフィードフォワードゲイン探索ステップ、Ｋｆｆ＿ｂｄは最終的に求めたい限界フィードフォワードゲインである。後述する調整時には、Ｋｆｆ＝Ｋｆｆ＿ｉｎｉから探索を開始し、Ｋｆｆ＝Ｋｆｆ＿ｉｎｉでオーバーシュート量が許容値未満であればＫｆｆをｄｍａｘ＿Ｋｆｆのステップで増加する。また、Ｋｆｆ＝Ｋｆｆ＿ｉｎｉでオーバーシュート量が許容値以上であれば、Ｋｆｆをｄｍａｘ＿Ｋｆｆのステップで減少する。更に、前記ｄｍａｘ＿ＫｆｆステップでのＫｆｆ更新中にオーバーシュート量が許容値未満から許容値以上に変化、あるいは、オーバーシュート量が許容値以上から許容値未満に変化した場合には、次の処理を実施する。すなわち、前記現在のフィードフォワードゲイン探索ステップｄｉｖ＿Ｋｆｆを半減しながらＫｆｆを増減探索する処理をｄｉｖ＿Ｋｆｆがフィードフォワードゲイン探索最小ステップｄｍｉｎ＿Ｋｆｆを下回るまで実施することを意味する。
【００４９】
次に、図１０のフローチャートを順を追って説明する。図１０では、１５０でフローチャートを開始し、初期化処理１５１で現在のフィードフォワードゲインＫｆｆにフィードフォワードゲイン初期値Ｋｆｆ＿ｉｎｉを設定する。そして、現在のフィードフォワードゲイン探索ステップｄｉｖ＿Ｋｆｆにフィードフォワードゲイン探索最大ステップｄｍａｘ＿Ｋｆｆを設定し、処理１５２に移行する。処理１５２では、ユーザが予め登録した全ての位置指令パターンでの運転を行い、各運転毎に前述の手段で、整定時間、オーバーシュート量を計測し、判定処理１５３に移行する。前記判定処理１５３では、各運転パターン毎のオーバーシュート量の評価を行い、いずれかの運転パターンでのオーバーシュート量が許容値以上となる場合には、処理１５４に移行する。処理１５４では、現在のフィードフォワードゲインＫｆｆを現在のフィードフォワードゲイン探索ステップｄｉｖ＿Ｋｆｆだけ減じた後に、処理１５５に移行する。処理１５５では、前記処理１５２と同様にユーザが予め登録した全ての位置指令パターンでの運転を行い、各運転毎に整定時間、オーバーシュート量を計測し、判定処理１５６に移行する。前記判定処理１５６では、各運転パターン毎のオーバーシュート量の評価を行い、全ての運転パターンでのオーバーシュート量が許容値未満となる場合には、処理１５７に移行する。一方、前記判定処理１５６において、いずれかの運転パターンでのオーバーシュート量が許容値以上となる場合には、更に現在のフィードフォワードゲインＫｆｆを減ずる目的で、前記処理１５４に移行する。前記処理１５７では、全ての運転パターンでのオーバーシュート量を許容値未満とする最大Ｋｆｆの候補の１つとして、現在のフィードフォワードゲインＫｆｆで限界フィードフォワードゲインＫｆｆ＿ｂｄを更新し、処理１５８に移行する。処理１５８では、後のフローを考慮して、現在のフィードフォワードゲインＫｆｆに現在のゲイン探索ステップｄｉｖ＿Ｋｆｆを加算し、いずれかの運転パターンでのオーバーシュート量が許容値以上となる条件を再設定し、処理１５９に移行する。前記判定処理１５３において、全ての運転パターンでのオーバーシュート量が許容値未満となる場合には、処理１６０に移行する。前記処理１６０では、全ての運転パターンでのオーバーシュート量を許容値未満とする最大Ｋｆｆの候補の１つとして、現在のフィードフォワードゲインＫｆｆで限界フィードフォワードゲインＫｆｆ＿ｂｄを更新し、処理１６１に移行する。前記処理１６１では、現在のフィードフォワードゲインＫｆｆに現在のフィードフォワードゲイン探索ステップｄｉｖ＿Ｋｆｆを加算した後に、処理１６２に移行する。処理１６２では、前記処理１５５と同様にユーザが予め登録した全ての位置指令パターンでの運転を行い、各運転毎に整定時間、オーバーシュート量を計測し、判定処理１６３に移行する。前記判定処理１６３では、各運転パターン毎のオーバーシュート量の評価を行い、いずれかの運転パターンでのオーバーシュート量が許容値以上となる場合には、前記処理１５９に移行する。一方、前記判定処理１６３において、全ての運転パターンでのオーバーシュート量が許容値未満となる場合には、更に現在のフィードフォワードゲインＫｆｆを増加する目的で、前記処理１６０に移行する。前記処理１５９に続くフローでは、前記現在のフィードフォワードゲイン探索ステップｄｉｖ＿Ｋｆｆを半減しながらＫｆｆを増減探索する処理であり、処理１５９では、前記現在のフィードフォワードゲイン探索ステップｄｉｖ＿Ｋｆｆを半減し、判定処理１６５に移行する。前記判定処理１６５では、現在のフィードフォワードゲイン探索ステップｄｉｖ＿Ｋｆｆの大きさがフィードフォワードゲイン探索最小ステップｄｍｉｎ＿Ｋｆｆ以上か否かを判定する。そして、以上であれば処理１６６に移行し、未満であれば１７６に移行し、フィードフォワードゲインＫｆｆの探索処理を終了する。処理１６６では、現在のフィードフォワードゲインＫｆｆを現在のフィードフォワードゲイン探索ステップｄｉｖ＿Ｋｆｆだけ減じた後に、処理１６７に移行する。処理１６７では、前記処理１６２と同様にユーザが予め登録した全ての位置指令パターンでの運転を行い、各運転毎に整定時間、オーバーシュート量を計測し、判定処理１６８に移行する。前記判定処理１６８では、各運転パターン毎のオーバーシュート量の評価を行い、全ての運転パターンでのオーバーシュート量が許容値未満となる場合には、処理１６９に移行する。一方、前記判定処理１６８において、いずれかの運転パターンでのオーバーシュート量が許容値以上となる場合には、更に現在のフィードフォワードゲインＫｆｆを減ずる目的で、前記処理１５９に移行する。前記処理１６９では、全ての運転パターンでのオーバーシュート量を許容値未満とする最大Ｋｆｆの候補の１つとして、現在のフィードフォワードゲインＫｆｆで限界フィードフォワードゲインＫｆｆ＿ｂｄを更新し、処理１７０に移行する。前記処理１７０では、前記現在のフィードフォワードゲイン探索ステップｄｉｖ＿Ｋｆｆを半減し、判定処理１７１に移行する。前記判定処理１７１では、現在のフィードフォワードゲイン探索ステップｄｉｖ＿Ｋｆｆの大きさがフィードフォワードゲイン探索最小ステップｄｍｉｎ＿Ｋｆｆ以上か否かを判定する。そして、以上であれば処理１７２に移行し、未満であれば１７６に移行し、フィードフォワードゲインＫｆｆの探索処理を終了する。処理１７２では、現在のフィードフォワードゲインＫｆｆに現在のフィードフォワードゲイン探索ステップｄｉｖ＿Ｋｆｆを加算した後に、処理１７３に移行する。処理１７３では、前記処理１６７と同様にユーザが予め登録した全ての位置指令パターンでの運転を行い、各運転毎に整定時間、オーバーシュート量を計測し、判定処理１７４に移行する。前記判定処理１７４では、各運転パターン毎のオーバーシュート量の評価を行い、いずれかの運転パターンでのオーバーシュート量が許容値以上となる場合には、更に現在のフィードフォワードゲインＫｆｆを減ずる目的で、処理１５９に移行する。一方、前記判定処理１７４において、全ての運転パターンでのオーバーシュート量が許容値未満となる場合には、処理１７５に移行する。前記処理１７５では、全ての運転パターンでのオーバーシュート量を許容値未満とする最大Ｋｆｆの候補の１つとして、現在のフィードフォワードゲインＫｆｆで限界フィードフォワードゲインＫｆｆ＿ｂｄを更新し、更に現在のフィードフォワードゲインＫｆｆを増加する目的で、前記処理１７０に移行する。
【００５０】
以上のように、図１０のフローチャートを用いれば、予め登録した全位置指令パターンに関して、オーバーシュート量が許容値を超えない条件を満たす最大フィードフォワードゲインＫｆｆが限界フィードフォワードゲインＫｆｆ＿ｂｄとして見出される。また、その時の整定時間は、オーバーシュートの許容値が十分に小さければ、最小となる。
【００５１】
また、前述の図９（ａ），（ｂ）は、図１０のフローチャートによる調整過程を具体的に示している。このときの各調整パラメータは、Ｋｆｆ＿ｉｎｉ＝０．１０、ｄｍｉｎ＿Ｋｆｆ＝０．００５、ｄｍａｘ＿Ｋｆｆ＝０．１０、オーバーシュート許容値＝２［ｐｕｌｓｅ］である。図９中の（１）から（６）の順に探索が行われ、最終的に処理１７０において、ｄｉｖ＿Ｋｆｆ＝０．００３１２５がセットされる。このため、次の判定処理１７１でＮｏとなり、ＥＮＤに移行するものである。
【００５２】
図１１は、第２の実施例におけるフィードフォワード時定数と限界フィードフォワードゲインＫｆｆ＿ｂｄと整定時間の関係説明図である。同図（ａ）に示すフィードフォワード時定数と限界フィードフォワードゲイン（最大値）における整定時間の関係および、同図（ｂ）に示すフィードフォワード時定数と限界フィードフォワードゲインの関係を説明する。
【００５３】
図１１（ａ）は横軸がフィードフォワード時定数Ｔｆｆ、縦軸が限界フィードフォワードゲインにおける整定時間であり、図１１（ｂ）は横軸がフィードフォワード時定数Ｔｆｆ、縦軸がフィードフォワードゲインである。また、各グラフのパラメータとして、異なる位置指令パターンを３種類選んでいる。ここで、限界フィードフォワードゲインＫｆｆ＿ｂｄとは、各位置指令パターンに関して、オーバーシュート量が許容値を超えない条件を満たす最大フィードフォワードゲインＫｆｆのことである。具体的には、図１１（ｂ）の各波形上の数値は、フィードフォワード時定数Ｔｆｆを固定した条件で、前述図１０のフローチャートを各単独の位置指令パターンに関して実行し、求めたものである。図１１（ａ）の各波形上の数値は、こうして求めた限界フィードフォワードゲインＫｆｆ＿ｂｄでの整定時間Ｓｔ＿ｂｄを記録したものである。ここで、図１１（ａ），（ｂ）から明らかなことは、最小の整定時間を与える最適フィードフォワード時定数は位置指令パターンによって、異なることである。例えば、図１１（ａ）から、位置指令パターン１の最適フィードフォワード時定数は約５ｍｓであるが、位置指令パターン２および位置指令パターン３の最適フィードフォワード時定数はそれぞれ約９ｍｓ、１０ｍｓである。また、限界フィードフォワードゲインＫｆｆ＿ｂｄも位置指令パターンによって異なることが、図１１（ｂ）に示されている。
【００５４】
以上の具体例に示したように、最適なフィードフォワード時定数および限界フィードフォワードゲインＫｆｆ＿ｂｄは、位置指令パターンによって変化するものである。このため、位置フィードフォワード制御パラメータの調整に際しては、実際にユーザが使用する位置指令パターンを用いて実施することとする。また、複数の位置指令パターンに対し、妥当な位置フィードフォワード制御パラメータを決定する場合には、特に整定時間を最小化したい位置指令パターンをユーザ自身が指定できるようにする。そして、その位置指令パターンでの整定時間の極小化を実現するフィードフォワード時定数を見出すことを考える。
【００５５】
図１２〜図１４は、以上に示した考え方に基づく限界フィードフォワードゲインＫｆｆ＿ｂｄ探索フロー図である。また、本フローチャートでは、限界フィードフォワードゲインＫｆｆ＿ｂｄ時のパラメータ設定値および整定時間測定結果を効率よく保存・評価する為に、図１５に示すｄａｔａ［０］、ｄａｔａ［１］、ｄａｔａ［２］の３つの構造体型要素で構成された構造体配列型のデータ構造を利用する。
【００５６】
図１５は、最適フィードフォワード時定数Ｔｆｆ＿ｏｐｔ探索用データ構造説明図であり、ｄａｔａ［０］、ｄａｔａ［１］、ｄａｔａ［２］の３つの構造体型要素で構成された構造体配列型のデータ構造を利用する。また、構造体のメンバは、次の４つである。まず、フィードフォワード時定数Ｔｆｆであり、次に、該Ｔｆｆでの限界フィードフォワードゲインＫｆｆ＿ｂｄである。さらに、該Ｔｆｆ，Ｋｆｆ＿ｂｄでの優先位置指令パターンに対する整定時間Ｓｔ＿ｂｄであり、最後に、該Ｔｆｆの次に小さいＴｆｆに関するデータを保存する配列番号を指示する次データ指示インデックスｎｅｘｔである。ｓｍ＿ｉｎｄｅｘは、前記構造体配列ｄａｔａ［０］、ｄａｔａ［１］、ｄａｔａ［２］の内、どの番号の配列に現在最小のＴｆｆに関するデータが保存されているかを示す最小Ｔｆｆデータ指示インデックスである。また、以下では、各構造体メンバへの参照手段は、Ｃ言語の記述と同様として説明する。例えば、構造体配列ｄａｔａ［１］のメンバＳｔ＿ｂｄを参照する場合には、ｄａｔａ［１］．Ｓｔ＿ｂｄと記述する。また、図１５に示したように、ｄａｔａ［０］．ｎｅｘｔ＝１の場合には、ｄａｔａ［ｄａｔａ［０］．ｎｅｘｔ］．Ｓｔ＿ｂｄとしてもｄａｔａ［１］のメンバＳｔ＿ｂｄを参照可能である。
【００５７】
図１２〜１４のフローチャートにおいて、Ｔｆｆ＿ｉｎｉはユーザが設定するフィードフォワード時定数初期値、ｄｍｉｎ＿Ｔｆｆはユーザが設定するフィードフォワード時定数探索最小ステップである。また、ｄｍａｘ＿Ｔｆｆはユーザが設定するフィードフォワード時定数探索最大ステップ、Ｔｆｆは位置フィードフォワード制御器１５に設定されている現在のフィードフォワード時定数、ｄｉｖ＿Ｔｆｆは現在のフィードフォワード時定数探索ステップである。さらに、Ｔｆｆ＿ｏｐｔは最終的に求めたい最適フィードフォワード時定数であり、Ｋｆｆ＿ｏｐｔは最適フィードフォワードゲインであり、最適フィードフォワード時定数Ｔｆｆ＿ｏｐｔにおける限界フィードフォワードゲインＫｆｆ＿ｂｄに等しい。また、ｄａｔ＿ｃｏｕｎｔは初期取得データ数カウンタであり、Ｔｆｆに関する取得データ数が３点あることを確認する為のカウンタ、ｄａｔａ［］およびｓｍ＿ｉｎｄｅｘは前述した通りである。
【００５８】
次に、本フローチャートによる最適フィードフォワード時定数Ｔｆｆ＿ｏｐｔの探索概要を、図１６を参照しながら説明する。
【００５９】
図１６は、最適フィードフォワード時定数Ｔｆｆ＿ｏｐｔ探索過程説明図である。図において、横軸がフィードフォワード時定数Ｔｆｆ、縦軸が該フィードフォワード時定数Ｔｆｆでの限界フィードフォワードゲインＫｆｆ＿ｂｄにおける優先位置指令パターンに対する整定時間Ｓｔ＿ｂｄである。また、図１６に示す例では、Ｔｆｆ＿ｉｎｉ＝Ｔｆｆ＿１とした。本フローチャートでは、常にＴｆｆに関する３点データを評価しながら、次に探索するべきＴｆｆを決定する。このため、まず、Ｔｆｆ＝Ｔｆｆ＿１のデータ（１）を起点として、ｄｍａｘ＿Ｔｆｆ間隔でデータ（２）、データ（３）を取得する。次に、データ（１），（２），（３）を評価し、これらのＳｔ＿ｂｄがＴｆｆに関して単調減少であることから、更なるＳｔ＿ｂｄの減少を期待して、データ（３）の延長上にデータ（４）を取得し、溢れたデータ（１）を廃棄する。次に、データ（２），（３），（４）を評価し、これらのＳｔ＿ｂｄがＴｆｆに関して下に凸であることから、最適フィードフォワード時定数Ｔｆｆ＿ｏｐｔが「データ（２）とデータ（３）の間」か、「データ（３）とデータ（４）の間」の何れかにあると考える。この時点では、何れの側にＴｆｆ＿ｏｐｔが存在するかを断定できないが、両端のデータ（２）とデータ（４）のＳｔ＿ｂｄを比較し、小さい側を探索することにしている。よって、データ（３）とデータ（４）の中点のデータ（５）を取得し、データ（２）を廃棄する。次に、データ（３），（５），（４）を評価し、これらのＳｔ＿ｂｄがＴｆｆに関して下に凸であることから、上記同様にデータ（３）とデータ（４）のＳｔ＿ｂｄを比較し、小さい側のデータ（６）を取得し、データ（４）を廃棄する。次に、データ（３），（６），（５）を評価し、これらのＳｔ＿ｂｄがＴｆｆに関して単調減少であることから、データ（５）の延長上にデータ（７）を取得し、溢れたデータ（３）を廃棄する。ここで、データ（６），（５），（７）を評価すると、これらのＳｔ＿ｂｄがＴｆｆに関して下に凸となる。しかし、更なる探索を行うと、現在のフィードフォワード時定数探索ステップｄｉｖ＿Ｔｆｆがユーザが設定するフィードフォワード時定数探索最小ステップｄｍｉｎ＿Ｔｆｆを下回ることとなる。よって、探索を終了し、この時点の極小点であるデータ（５）のＴｆｆを最適フィードフォワード時定数Ｔｆｆ＿ｏｐｔとする。以上、図１２〜１４に示すフローチャートによる探索概要を図１６を参照しながら解説した。
【００６０】
次に、図１２〜１４のフローチャートを順を追って説明する。まず、２００でフローチャートを開始する。初期化処理２０１では、現在のフィードフォワード時定Ｔｆｆにフィードフォワード時定数初期値Ｔｆｆ＿ｉｎｉを設定し、現在のフィードフォワード時定数探索ステップｄｉｖ＿Ｔｆｆにフィードフォワード時定数探索最大ステップｄｍａｘ＿Ｔｆｆを設定する。また、前記構造体配列ｄａｔａ［］の並びを、格納するＴｆｆが小さい順にｄａｔａ［０］，ｄａｔａ［１］，ｄａｔａ［２］と初期化する。この為に、次データ指示インデックスｎｅｘｔをｄａｔａ［０］．ｎｅｘｔ＝１、ｄａｔａ［１］．ｎｅｘｔ＝２、ｄａｔａ［２］．ｎｅｘｔ＝０とし、更に、最小Ｔｆｆデータ指示インデックスｓｍ＿ｉｎｄｅｘをｓｍ＿ｉｎｄｅｘ＝０とする。また、現在の取得データ数をゼロとする為に初期取得データ数カウンタｄａｔ＿ｃｏｕｎｔ＝０とし、処理２０２に移行する。処理２０２では、前述した図１０の限界フィードフォワードゲインＫｆｆ＿ｂｄ探索フローチャートを実施し、処理２０３に移行する。処理２０３では、現在のフィードフォワード時定数Ｔｆｆをｄａｔａ［ｄａｔ＿ｃｏｕｎｔ］．Ｔｆｆに保存し、現在のＴｆｆでの限界フィードフォワードゲインＫｆｆ＿ｂｄをｄａｔａ［ｄａｔ＿ｃｏｕｎｔ］．Ｋｆｆ＿ｂｄに保存する。また、現在のＴｆｆおよびＫｆｆ＿ｂｄにおける優先位置指令パターンに対する整定時間Ｓｔ＿ｂｄをｄａｔａ［ｄａｔ＿ｃｏｕｎｔ］．Ｓｔ＿ｂｄに保存し、判定処理２０４に移行する。判定処理２０４では、初期取得データ数カウンタｄａｔ＿ｃｏｕｎｔの値を評価し、Ｔｆｆに関するデータ数が３点あれば判定処理２０５に移行し、データ数が３点無いならば、処理２０６に移行する。処理２０６では、現在のフィードフォワード時定数Ｔｆｆに現在のフィードフォワード時定数探索ステップｄｉｖ＿Ｔｆｆを加算し、初期取得データ数カウンタｄａｔ＿ｃｏｕｎｔの値に１加算し、前記処理２０２に移行する。前記判定処理２０５では、優先位置指令パターンに対する整定時間Ｓｔ＿ｂｄがフィードフォワード時定数Ｔｆｆに関して下に凸か否かを判定する。ここの処理は具体的には、次の通りであれば、下に凸と判断して、処理２０７に移行する。すなわち、ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．Ｓｔ＿ｂｄ＞ｄａｔａ［ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔ］．Ｓｔ＿ｂｄ、且つｄａｔａ［ｄａｔａ［ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔ］．ｎｅｘｔ］．Ｓｔ＿ｂｄ＞ｄａｔａ［ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔ］．Ｓｔ＿ｂｄである。処理２０７では、現在のフィードフォワード時定数探索ステップｄｉｖ＿Ｔｆｆを半減し、判定処理２０８に移行する。前記判定処理２０８では、現在のフィードフォワード時定数探索ステップｄｉｖ＿Ｔｆｆの大きさがフィードフォワード時定数探索最小ステップｄｍｉｎ＿Ｔｆｆ以上か否かを判定し、以上であれば判定処理２０９に移行し、未満であれば処理２１０に移行する。前記判定処理２０９では３点データの内、最小Ｔｆｆでの優先位置指令パターンに対する整定時間Ｓｔ＿ｂｄと、最大ＴｆｆでのＳｔ＿ｂｄの大小関係を比較する。
【００６１】
具体的には、ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．Ｓｔ＿ｂｄ＞ｄａｔａ［ｄａｔａ［ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔ］．ｎｅｘｔ］．Ｓｔ＿ｂｄが成立するか否かを判定し、成立する場合には、処理２１２に移行する。処理２１２では、新規のデータを２番目に大きいＴｆｆと最大Ｔｆｆとの中点に取得する為に、Ｔｆｆを２番目に大きいＴｆｆとｄｉｖ＿Ｔｆｆを加算した値とする。具体的には、現在のフィードフォワード時定数Ｔｆｆをｄａｔａ［ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔ］．Ｔｆｆ＋ｄｉｖ＿Ｔｆｆで更新し、処理２１３に移行する。処理２１３では、前述した図１０の限界フィードフォワードゲインＫｆｆ＿ｂｄ探索フローチャートを実施し、処理２１４に移行する。処理２１４では、現在最小のＴｆｆに関するデータを保存した配列要素を前記処理２１３で取得した新規データで上書き更新する。この為に、現在のフィードフォワード時定数Ｔｆｆをｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．Ｔｆｆに保存し、現在のＴｆｆでの限界フィードフォワードゲインＫｆｆ＿ｂｄをｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．Ｋｆｆ＿ｂｄに保存する。そして、現在のＴｆｆおよびＫｆｆ＿ｂｄにおける優先位置指令パターンに対する整定時間Ｓｔ＿ｂｄをｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．Ｓｔ＿ｂｄに保存する。更に、これまで最小のＴｆｆに関するデータを保存していた配列要素を、今後２番目に大きいＴｆｆに関するデータとなる新規データで上書き更新したことによる次データ指示インデックスｎｅｘｔの乱れを修正する。具体的には、ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔの値を一時変数ｔｍｐに退避した上で、ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔをｄａｔａ［ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔ］．ｎｅｘｔで更新する。また、ｄａｔａ［ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔ］．ｎｅｘｔをｓｍ＿ｉｎｄｅｘで更新し、ｄａｔａ［ｄａｔａ［ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔ］．ｎｅｘｔ］．ｎｅｘｔを前記一時変数ｔｍｐの値で更新する。最後に、ｓｍ＿ｉｎｄｅｘを前記一時変数ｔｍｐの値で更新し、前記判定処理２０５に移行する。前記判定処理２０９において、ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．Ｓｔ＿ｂｄ＞ｄａｔａ［ｄａｔａ［ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔ］．ｎｅｘｔ］．Ｓｔ＿ｂｄが成立しない場合には、処理２１５に移行する。処理２１５では、新規のデータを最小Ｔｆｆと２番目に大きいＴｆｆとの中点に取得する為に、Ｔｆｆを２番目に大きいＴｆｆからｄｉｖ＿Ｔｆｆを減算した値とする。具体的には、現在のフィードフォワード時定数Ｔｆｆをｄａｔａ［ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔ］．Ｔｆｆ−ｄｉｖ＿Ｔｆｆで更新し、処理２１６に移行する。処理２１６では、前述した図１０の限界フィードフォワードゲインＫｆｆ＿ｂｄ探索フローチャートを実施し、処理２１７に移行する。処理２１７では、現在最大のＴｆｆに関するデータを保存した配列要素を処理２１６で取得した新規データで上書き更新する為、現在のフィードフォワード時定数Ｔｆｆをｄａｔａ［ｄａｔａ［ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔ］．ｎｅｘｔ］．Ｔｆｆに保存する。そして、現在のＴｆｆでの限界フィードフォワードゲインＫｆｆ＿ｂｄをｄａｔａ［ｄａｔａ［ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔ］．ｎｅｘｔ］．Ｋｆｆ＿ｂｄに保存する。また、現在のＴｆｆおよびＫｆｆ＿ｂｄにおける優先位置指令パターンに対する整定時間Ｓｔ＿ｂｄをｄａｔａ［ｄａｔａ［ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔ］．ｎｅｘｔ］．Ｓｔ＿ｂｄに保存する。更に、これまで最大のＴｆｆに関するデータを保存していた配列要素を、今後２番目に大きいＴｆｆに関するデータとなる新規データで上書き更新したことによる次データ指示インデックスｎｅｘｔの乱れを修正する。具体的には、ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔの値を一時変数ｔｍｐに退避した上で、ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔをｄａｔａ［ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔ］．ｎｅｘｔで更新する。また、ｄａｔａ［ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔ］．ｎｅｘｔをｄａｔａ［ｄａｔａ［ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔ］．ｎｅｘｔ］．ｎｅｘｔで更新する。さらに、ｄａｔａ［ｄａｔａ［ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔ］．ｎｅｘｔ］．ｎｅｘｔを前記一時変数ｔｍｐの値で更新し、前記判定処理２０５に移行する。前記判定処理２０８において、ｄｉｖ＿Ｔｆｆ≧ｄｍｉｎ＿Ｔｆｆが成立しない場合には、処理２１０に移行する。処理２１０では、最適フィードフォワード時定数Ｔｆｆ＿ｏｐｔに２番目に大きいＴｆｆであるｄａｔａ［ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔ］．Ｔｆｆをセットする。そして、最適フィードフォワードゲインＫｆｆ＿ｏｐｔに番目に大きいＴｆｆにおける限界フィードフォワードゲインＫｆｆ＿ｂｄであるｄａｔａ［ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔ］．Ｋｆｆ＿ｂｄをセットし、終了状態２１１に移行する。一方、前記判定処理２０５において、優先位置指令パターンに対する整定時間Ｓｔ＿ｂｄがフィードフォワード時定数Ｔｆｆに関して下に凸でない場合には、判定処理２１８に移行する。判定処理２１８では、優先位置指令パターンに対する整定時間Ｓｔ＿ｂｄがフィードフォワード時定数Ｔｆｆに関して下に単調増加か否かを判定する。ここでは、ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．Ｓｔ＿ｂｄ＜ｄａｔａ［ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔ］．Ｓｔ＿ｂｄ＜ｄａｔａ［ｄａｔａ［ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔ］．ｎｅｘｔ］．Ｓｔ＿ｂｄならば、単調増加と判断し、処理２１９に移行する。処理２１９では、単調増加であることから、Ｓｔ＿ｂｄの減少を期待して、最小Ｔｆｆデータの延長上に新規データを取得する。具体的には、現在のフィードフォワード時定数Ｔｆｆをｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．Ｔｆｆ−ｄｉｖ＿Ｔｆｆで更新し、処理２２０に移行する。処理２２０では、前述した図１０の限界フィードフォワードゲインＫｆｆ＿ｂｄ探索フローチャートを実施し、処理２２１に移行する。処理２２１では、現在最大のＴｆｆに関するデータを保存した配列要素を前記処理２２０で取得した新規データで上書き更新する。この為に、現在のフィードフォワード時定数Ｔｆｆをｄａｔａ［ｄａｔａ［ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔ］．ｎｅｘｔ］．Ｔｆｆに保存する。そして、現在のＴｆｆでの限界フィードフォワードゲインＫｆｆ＿ｂｄをｄａｔａ［ｄａｔａ［ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔ］．ｎｅｘｔ］．Ｋｆｆ＿ｂｄに保存する。また、現在のＴｆｆおよびＫｆｆ＿ｂｄにおける優先位置指令パターンに対する整定時間Ｓｔ＿ｂｄをｄａｔａ［ｄａｔａ［ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔ］．ｎｅｘｔ］．Ｓｔ＿ｂｄに保存する。更に、これまで最大のＴｆｆに関するデータを保存していた配列要素に、最小のＴｆｆに関するデータを上書き更新したことによる最小Ｔｆｆデータ指示インデックスｓｍ＿ｉｎｄｅｘの更新を実施する。すなわち、ｄａｔａ［ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔ］．ｎｅｘｔの代入で実施し、前記判定処理２０５に移行する。前記判定処理２１８で単調増加と判定されなかった場合には、単調減少と考えて処理２２２に移行する。処理２２２では、単調減少であることから、Ｓｔ＿ｂｄの更なる減少を期待して、最大Ｔｆｆデータの延長上に新規データを取得する。具体的には、現在のフィードフォワード時定数Ｔｆｆをｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．Ｔｆｆ＋３×ｄｉｖ＿Ｔｆｆで更新し、処理２２３に移行する。処理２２３では、前述した図１０の限界フィードフォワードゲインＫｆｆ＿ｂｄ探索フローチャートを実施し、処理２２４に移行する。処理２２４では、現在最小のＴｆｆに関するデータを保存した配列要素を前記処理２２３で取得した新規データで上書き更新する。この為に、現在のフィードフォワード時定数Ｔｆｆをｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．Ｔｆｆに保存し、現在のＴｆｆでの限界フィードフォワードゲインＫｆｆ＿ｂｄをｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．Ｋｆｆ＿ｂｄに保存する。また、現在のＴｆｆおよびＫｆｆ＿ｂｄにおける優先位置指令パターンに対する整定時間Ｓｔ＿ｂｄをｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．Ｓｔ＿ｂｄに保存する。更に、これまで最小のＴｆｆに関するデータを保存していた配列要素に、最大のＴｆｆに関するデータを上書き更新したことによる最小Ｔｆｆデータ指示インデックスｓｍ＿ｉｎｄｅｘの更新を実施する。すなわち、ｄａｔａ［ｓｍ＿ｉｎｄｅｘ］．ｎｅｘｔの代入で実施し、前記判定処理２０５に移行する。
【００６２】
このように、予め登録した全位置指令パターンにつき、オーバーシュート量を所定（許容）値以内に抑えつつ、指定された特定の位置指令パターンでの整定時間を最小化する位置フィードフォワード制御パラメータの自動探索を行うことができる。
【００６３】
なお、処理２０３、処理２１４、処理２１７、処理２２１、処理２２４において、ｄａｔａ［］．Ｓｔ＿ｂｄには、優先位置指令パターンに対する整定時間Ｓｔ＿ｂｄをセットしたが、評価した全位置指令パターンの内、最も長かった整定時間をセットしてもよい。
【００６４】
次に、調整パラメータ設定画面の実施例を図１７，図１８に示す。
【００６５】
図１７は、本発明の第１の実施例であるフィードバック制御パラメータの自動調整に際して、ユーザが調整条件を入力するパソコンの画面構成例である。図１７における各入力項目は、前述の各調整パラメータに対応し、例えば、２９０は最小位置応答周波数Ｆｐ＿ｍｉｎに、２９１は最大位置応答周波数Ｆｐ＿ｍａｘに、２９２は位置応答周波数増分ステップｄｉｖ＿Ｆｐに対応する。また、２９３は最小速度応答周波数Ｆｓ＿ｍｉｎに、２９４は最大速度応答周波数Ｆｓ＿ｍａｘに、２９５は速度応答周波数増分ステップｄｉｖ＿Ｆｓに、２９６は位置偏差θｅの振動振幅許容値θｖｉｂに、２９７は整定監視タイムアウト時間ｔｉｍｅｏｕｔに対応する。また、ステップ状の位置指令を自動生成するか、手動設定するかをユーザ側で選択可能とする為に、排他的に選択できるチェックボックス２９８と２９９を設けた。ここで、２９８を選択した場合、図２のフローチャートに示した処理が実行され、位置指令パターンが自動設定される。一方、２９９を選択した場合には、加減速時間３００、移動距離３０１、最大速度３０２の各項目をユーザ自身が設定し、位置指令パターンを決定する必要がある。
【００６６】
図１８は、本発明の第２の実施例である位置フィードフォワード制御パラメータの自動調整に際して、ユーザが調整条件を入力するパソコンの画面構成例である。図１８における各入力項目は、前述の各調整パラメータに対応し、例えば、３１１はフィードフォワードゲイン探索最小ステップｄｍｉｎ＿Ｋｆｆに、３１２はフィードフォワードゲイン探索最大ステップｄｍａｘ＿Ｋｆｆに対応する。また、３１４はフィードフォワード時定数初期値Ｔｆｆ＿ｉｎｉに、３１６は同じく時定数探索最小ステップｄｍｉｎ＿Ｔｆｆに、３１７は同じく時定数探索最大ステップｄｍａｘ＿Ｔｆｆに、３１８は整定監視タイムアウト時間ｔｉｍｅｏｕｔに対応する。
【００６７】
また、３２０から３２４はそれぞれ、位置指令パターン１から位置指令パターン５の調整条件設定画面であり、３２０から３２４の番号で指し示したパターン名の表記部分をマウスでクリックすることにより、該パターンの設定画面を開くことができる。なお、図１８では、位置指令パターン１の設定画面が開いた状態であるが、他の位置指令パターンの設定画面も同様の構成である。よって、３００には該位置指令パターンでの加減速時間、３０１には該位置指令パターンでの移動距離、３０２には該位置指令パターンでの最大速度を設定し、該位置指令パターンを決定する。また、３２５は該位置指令パターンでのオーバーシュート量の許容値に、３２６は該位置指令パターンでの整定判定用偏差ｐｏｓｉｎ＿ｐｌｓに対応する。チェックボックス３２７は該位置指令パターンでの調整を行うか否かを設定する為のものである。また、位置フィードフォワード時定数調整の実施有無を設定する為に、選択項目３１３を設けた。３１３の選択項目には「調整あり」と「調整なし」があり、「調整なし」を選択すると、図１０のフローチャートを実行し、現在の位置フィードフォワード時定数に対して、位置フィードフォワードゲインのみが調整される。一方、「調整あり」を選択した場合には、図１２〜１４のフローチャートを実行し、位置フィードフォワードゲイン・時定数両方の調整が行われる。また、整定時間を最小化する最優先位置指令パターンを指定する為に、選択項目３１９を設けた。３１３の選択項目では、前記チェックボックス３２７でチェックを付けた位置指令パターンと「整定時間最大パターン」の中から１つを選択することができる。
【００６８】
図１９は、第１の実施例、第２の実施例に共通する本発明を採用できる電動機制御装置の全体のシステム構成図である。図１９において、３４１はボールネジユニット、３４２は電動機、３４３は電動機３４３の位置検出器、３４５は負荷３４４を搭載するスライダー、３３９はサーボアンプ、３４６は電動機３４２の位置検出信号をサーボアンプ３３９に伝送するケーブルである。また、３４７はサーボアンプ３３９から電動機３４２に駆動電力を供給するケーブル、３４９はサーボアンプに電源を供給するケーブルである。３５２は、フィードバック制御パラメータおよび位置フィードフォワード制御パラメータの自動調整に際して、ユーザが調整条件を入力するパソコン、３５３はパソコン３５２からの調整条件をサーボアンプ３３９に伝送する為の通信ケーブルである。
【００６９】
次に、前述の第１の実施形態、第２の実施形態の説明に用いた図１、図８の符号と図１９における符号との対応関係を説明する。電動機１は３４２に、位置検出器５は３４３に、負荷２は３４４および３４５に、駆動軸３はボールネジユニット３４１内部のボールネジに対応する。また、次の構成要素はサーボアンプ３３９に含まれる。すなわち、電力変換器４を筆頭に、減算器６、位置制御器７、速度演算器８、減算器９、速度制御器１０、電流検出器１１、減算器１２、および電流制御器１３等の通常の制御装置である。また、本発明によって付加されたフィードバック制御パラメータチューニング部１４または１７のほか、位置フィードフォワード制御器１５、加算器１６なども、サーボアンプ３３９に含まれている。
【図面の簡単な説明】
【００７０】
【図１】本発明の第１の実施例による電動機制御装置のフィードバック制御パラメータの自動調整法を示す制御ブロック図。
【図２】図１の実施例における位置指令パターンの生成フロー図。
【図３】フィードバック制御パラメータ自動調整のための位置指令パターンの生成手順におけるトルク、速度、並びに位置指令パターンの波形図。
【図４】第１の実施例によるフィードバック制御パラメータの自動調整フロー図。
【図５】第１の実施例における振動振幅・整定時間・オーバーシュート量の計測処理フロー図その１。
【図６】第１の実施例における振動振幅・整定時間・オーバーシュート量の計測処理フロー図その２。
【図７】第１の実施例における振動振幅・整定時間・オーバーシュート量の計測法説明波形図。
【図８】本発明の第２の実施例によるフィードフォワード制御パラメータの自動調整手段を加えた電動機制御装置の自動調整装置の制御ブロック図。
【図９】図８の実施例におけるフィードフォワードゲインと整定時間・オーバーシュートの関係説明図。
【図１０】第２の実施例におけるフィードフォワードゲインＫｆｆの自動調整法の処理フロー図。
【図１１】第２の実施例におけるフィードフォワード時定数と限界フィードフォワードゲインＫｆｆ＿ｂｄと整定時間の関係図。
【図１２】限界フィードフォワードゲインＫｆｆ＿ｂｄ探索フローチャートその１。
【図１３】限界フィードフォワードゲインＫｆｆ＿ｂｄ探索フローチャートその２。
【図１４】限界フィードフォワードゲインＫｆｆ＿ｂｄ探索フローチャートその３。
【図１５】最適フィードフォワード時定数Ｔｆｆ＿ｏｐｔ探索用データ構造説明図。
【図１６】最適フィードフォワード時定数Ｔｆｆ＿ｏｐｔ探索過程説明図。
【図１７】フィードバック制御パラメータ自動調整機能設定画面例。
【図１８】位置フィードフォワード制御パラメータ自動調整機能設定画面例。
【図１９】本発明を採用できる電動機制御装置の全体システム一例構成図。
【符号の説明】
【００７１】
１…電動機、２…駆動対象負荷、３…連結軸、４…電力変換器、５…位置検出器、６…減算器、７…位置制御器、８…速度演算器、９…減算器、１０…速度制御器、１１…電流検出器、１２…減算器、１３…電流制御器、１４…フィードバック制御パラメータチューニング部、１５…位置フィードフォワード制御器、１６…加算器、１７…フィードバック及び位置フィードフォワード制御パラメータチューニング部、θＭ＊…位置指令パターン、θＭ…位置検出値、θｅ…位置偏差、ωＭ＊…速度指令値、ωＭ…速度検出値、ωｅ…速度偏差、Ｉｑ＊…トルク電流指令値、Ｉｑ…トルク電流検出値、Ｉｅ…電流偏差、ωＦＢ＊…位置制御器出力信号、ωＦＦ＊…位置フィードフォワード制御器出力信号。
【図１】
0004745798.tif 000007
【図２】
0004745798.tif 000008
【図３】
0004745798.tif 000009
【図４】
0004745798.tif 000010
【図５】
0004745798.tif 000011
【図６】
0004745798.tif 000012
【図７】
0004745798.tif 000013
【図８】
0004745798.tif 000014
【図９】
0004745798.tif 000015
【図１０】
0004745798.tif 000016
【図１１】
0004745798.tif 000017
【図１２】
0004745798.tif 000018
【図１３】
0004745798.tif 000019
【図１４】
0004745798.tif 000020
【図１５】
0004745798.tif 000021
【図１６】
0004745798.tif 000022
【図１７】
0004745798.tif 000023
【図１８】
0004745798.tif 000024
【図１９】
0004745798.tif 000025