(57)【特許請求の範囲】
【請求項１】
駆動対象物と結合した電動機を駆動する電力変換器と、
位置指令値と前記電動機の位置検出値との偏差に応じて位置制御器出力を出力する位置
制御器と、
前記位置指令値を入力して位置フィードフォワード信号を出力する位置フィードフォワ
ード制御器と、
前記位置制御器出力と前記位置フィードフォワード信号とを加算し速度指令値を出力す
る加算器と、
前記速度指令値と前記電動機の速度検出値の偏差に応じてトルク電流指令値を出力する
速度制御器と、
前記トルク電流指令値と前記電動機に供給されるトルク電流検出値との偏差に応じて前
記電力変換器の出力電流を調整する電流制御器と、
予め登録された複数の位置指令パターンを前記位置制御器への位置指令として出力する
パラメータチューニング部とを備え、
前記パラメータチューニング部は、
前記位置指令値と前記位置検出値との偏差の微分であるモータ振動時の位置偏差微分波形
の振幅量が、予め定められた振動条件を満たすか否かを判定し、振動条件を満たす場合、
モータ振動有りと判定し、振動条件を満たさない場合、モータ振動無しと判定する判定結
果を出力するモータ振動判定部を有し、前記複数の位置指令パターンを前記位置制御器へ
出力して前記電動機を駆動させてフィードフォワードゲインを調整する場合に、前記モー
タ振動判定部の出力が振動条件を満たさず、かつ、オーバーシュート量が規定値以下とな
る最大のフィードフォワードゲインを、制御パラメータとして設定することを特徴とする
電動機制御装置。
【請求項２】
駆動対象物と結合した電動機と、
前記電動機を駆動する電力変換器と、
位置指令値と前記電動機の位置検出値との偏差に応じて位置制御器出力を出力する位置
制御器と、
前記位置指令値を入力して位置フィードフォワード信号を出力する位置フィードフォワ
ード制御器と、
前記位置指令器出力と前記位置フィードフォワード信号とを加算し速度指令値を出力す
る加算器と、
前記速度指令値と前記電動機の速度検出値の偏差に応じてトルク電流指令値を出力する
速度制御器と、
前記トルク電流指令値と前記電動機に供給されるトルク電流検出値との偏差に応じて前
記電力変換器の出力電流を調整する電流制御器とを備えた電動機制御装置の自動調整法に
おいて、
前記複数の位置指令パターンを前記位置制御器へ出力して前記電動機を駆動させ、
前記位置指令値と前記位置検出値との偏差の微分であるモータ振動時の位置偏差微分波
形の振幅量が、予め定められた振動条件を満たすか否かを判定し、
振動条件を満たさず、かつ、オーバーシュート量が規定値以下となる最大のフィードフ
ォワードゲインを限界フィードフォワードゲインとして調整し、
前記最大のフィードフォワードゲインを制御パラメータとして設定することを特徴とす
る電動機制御装置の自動調整法。
【請求項３】
請求項２において、前記フィードフォワード時定数を更新しつつ、各フィードフォワー
ド時定数に対して、前記フィードフォワードゲインを前記限界フィードフォワードゲイン
に調整し、各フィードフォワード時定数に対応するステップと、前記フィードフォワード
ゲインにおける整定時間を計測するステップと、前記フィードフォワード時定数に対応す
る前記限界フィードフォワードゲインにおける整定時間を最小とする前記フィードフォワ
ード時定数を極値探索により求めるステップとを備えたことを特徴とする電動機制御装置
の自動調整法。
【請求項４】
請求項３において、前記極値探索法は、等間隔に前記フィードフォワード時定数の偏差
を与えて取得した３つの前記フィードフォワード時定数に関する前記限界フィードフォワ
ードゲインにおける整定時間を比較することを特徴とする電動機制御装置の自動調整法。
【請求項５】
請求項４において、前記フィードフォワード時定数に関する前記限界フィードフォワー
ドゲインにおける整定時間の３点のデータ比較に際し、横軸を前記フィードフォワード時
定数、縦軸を前記限界フィードフォワードゲインにおける整定時間とするグラフを仮定し
、グラフが下に凸か、単調増加か、単調減少かを判定するステップと、この判定結果かが
下に凸ならば、３点データのうち、中間データと残る両側データのいずれか一方の中点に
新規に１データを取得するステップと、前記判定結果が単調増加ならば、データ感覚を変
えないで３点データのうち、最小の時定数側に新規に１データを取得するステップと、前
記判定結果が単調減少ならば、データ間隔を変えないで３点データのうち、最大の時定数
側に新規に１データを取得するステップとを備えたことを特徴とする電動機制御装置の自
動調整法。
【請求項６】
請求項３において、整定時間を測定する為の監視時間をユーザの入力に応じて設定し、
前記監視時間の起点を、位置偏差がゼロクロスした時点またはその近傍とすることを特徴
とする電動機制御装置の自動調整法。
【請求項７】
請求項２において、前記フィードフォワード時定数を固定した条件で、前記フィードフ
ォワード制御器のゲインを更新し、各フィードフォワードゲインに対して、予め登録した
複数の位置指令パターンを前記位置制御器の位置指令として複数の運転動作を行うステッ
プと、複数の前記運転動作において、前記振動条件を満たさず、かつ、オーバーシュート
量が規定値を超えない、限界フィードフォワードゲインに前記位置フィードフォワード制
御器のフィードフォワードゲインを調整するステップを備えた電動機制御装置の自動調整
法。
【請求項８】
請求項２において、前記フィードフォワードゲインを固定した条件で、前記フィードフ
ォワード制御器の時定数を更新し、各フィードフォワード時定数に対して、予め登録した
複数の位置指令パターンを前記位置制御器の位置指令として複数の運転動作を行うステッ
プと、複数の前記運転動作において、前記振動条件を満たさず、かつ、オーバーシュート
量が規定値を超えない、限界フィードフォワードゲインに前記位置フィードフォワード制
御器のフィードフォワードゲインを調整するステップを備えた電動機制御装置の自動調整
法。
【請求項９】
請求項２において、前記モータ振動判定部にて判定されるモータ振動判定方法は、モー
タ移動中、モータ停止中の何れの状態においてもモータ振動検出を行うことを特徴とする
電動機制御装置の自動調整法。
【請求項１０】
請求項９において、前記モータ振動判定方法は、前記位置偏差の微分値である位置偏差
微分波形が減少傾向のとき、この波形の低位をホールドし、前記位置偏差微分波形が増加
傾向のとき、この波形の高位をホールドし、前記位置偏差微分波形の振動波形１周期分の
振動振幅を繰り返し算出することを特徴とする電動機制御装置の自動調整法。
【請求項１１】
請求項９において、前記モータ振動判定方法は、モータ振動振幅判定値を判定値とし、
前記位置偏差微分の振動波形１周期分の振動振幅が、前記モータ振動振幅判定値を越えた
回数をモータ振動検出回数として測定し、前記モータ振動検出回数が、ある任意の回数だ
け検出された場合にモータ繰返し振動を発生したとすることを特徴とする電動機制御装置
の自動調整法。
【請求項１２】
請求項１１において、前記モータ振動判定方法は、モータ停止状態とモータ移動状態で
、前記モータ振動振幅判定値を切替えることを特徴とした電動機制御装置の自動調整法。
【請求項１３】
請求項１２において、前記モータ振動判定方法は、モータ停止状態とモータ移動状態を
区別するため、予めユーザが設定する位置指令値の最終値と前記位置指令値が不一致の場
合、モータ移動状態とし、前記予めユーザが設定する位置指令値の最終値と前記位置指令
値が一致した場合、モータ停止状態と判定することを特徴とした電動機制御装置の自動調
整法。
【請求項１４】
請求項１１において、前記モータ振動判定方法は、モータ振動１周期分の振動がモータ
振動したと検出する毎に、前記モータ振動検出時間をモータ振動検出総合時間として加算
し、前記モータ振動検出総合時間内に、前記モータ振動検出回数がある任意の回数だけ繰
り返された場合に、モータ振動繰り返し検出有りと判定することを特徴とする電動機制御
装置の自動調整法。
【請求項１５】
請求項１４において、前記モータ振動判定方法は、前記モータ振動検出回数がある時間
内に、ある任意の回数だけモータ振動として検出されなかった場合、モータの振動検出時
間の振動１周期分を、モータ振動検出総合時間から減算し、モータ振動検出処理を続ける
ことを特徴とする電動機制御装置の自動調整法。
【請求項１６】
駆動対象負荷と結合した電動機と、
前記電動機を駆動する電力変換器と、
位置指令値と前記電動機の位置検出値との偏差に応じて位置制御器出力を出力する位置制御器と、
前記位置指令値を入力として位置フィードフォワード信号を出力する位置フィードフォ
ワード制御器と、
前記位置制御器出力と前記位置フィードフォワード信号とを加算し速度指令値を出力す
る加算器と、
前記速度指令値と電動機の速度検出値の偏差に応じてトルク電流指令値を出力する速度
制御器と、
前記トルク電流指令値と前記電動機に供給されるトルク電流検出値との偏差に応じて前
記電力変換器の出力電流を調整する電流制御器と、
前記位置指令値と前記位置検出値との偏差の微分であるモータ振動時の位置偏差微分波形の振幅量が、予め定められた振動条件を満たすか否かを判定し、振動条件を満たす場合、モータ振動有りと判定し、振動条件を満たさない場合、モータ振動無しと判定する判定結果を出力するモータ振動判定部と、を備えた電動機の制御装置において、
前記位置偏差波形の振動振幅が許容値を超えない範囲、かつ、前記モータ振動判定部の出力が前記振動条件を満たさない状態で最大の位置制御器の応答周波数、及び最大の速度制御器の応答周波数を調整し、前記最大の位置制御器の応答周波数、及び前記最大の速度制御器の応答周波数を制御パラメータとして設定することを特徴とする電動機制御装置の自動調整法。
【請求項１７】
請求項１６において、前記位置偏差波形の振動振幅が規定値を越えるまで、または、前
記振動条件を満たす状態まで、前記位置制御器の応答周波数を規定の増分で増加する第１
ステップと、前記位置偏差波形の振動振幅が許容値を超えたとき、または、前記振動条件
を満たす状態となったときは前記位置制御器の応答周波数を前記位置偏差波形の振動振幅
が許容値を超えない範囲、かつ前記モータ振動判定部の出力が前記振動条件を満たさない
状態まで戻した上で、前記速度制御器の応答周波数を規定の増分で増加する第２ステップ
と、前記第１第２ステップを繰り返し、この繰り返しによって、前記位置制御器の応答周
波数を前記位置偏差波形の振動振幅を規定値以下とする条件で増加できないとき、前記速
度制御器の応答周波数及び前記位置制御器の応答周波数を前記位置偏差波形の振動振幅が
規定値を超えない範囲まで戻す第３ステップと、前記第１第２ステップを繰り返し、この
繰り返しによって、前記位置制御器の応答周波数を前記モータ振動判定部の出力が前記振
動条件を満たす状態のとき、前記速度制御器の応答周波数及び前記位置制御器の応答周波
数が前記振動条件を満たさない状態まで戻す第４ステップとを備え、ゲインチューニング
を収束させるまで、自動調整を繰り返すことを特徴とする電動機制御装置の自動調整法。
【請求項１８】
請求項１６において、前記位置偏差波形の振動振幅が規定値を越えるまで、または、前
記振動条件を満たす状態まで、前記速度制御器の応答周波数を規定の増分で増加する第１
ステップと、前記位置偏差波形の振動振幅が許容値を超えたとき、または、前記振動条件
を満たす状態となったときは前記速度制御器の応答周波数を前記位置偏差波形の振動振幅
が許容値を超えない範囲、かつ前記モータ振動判定部の出力が前記振動条件を満たさない
状態まで戻した上で、前記位置制御器の応答周波数を規定の増分で増加する第２ステップ
と、前記第１第２ステップを繰り返し、この繰り返しによって、前記速度制御器の応答周
波数を前記位置偏差波形の振動振幅を規定値以下とする条件で増加できないとき、前記位
置制御器の応答周波数及び前記速度制御器の応答周波数を前記位置偏差波形の振動振幅が
規定値を超えない範囲まで戻す第３ステップと、前記第１第２ステップを繰り返し、この
繰り返しによって、前記速度制御器の応答周波数を前記モータ振動判定部の出力が前記振
動条件を満たす状態のとき、前記位置制御器の応答周波数及び前記速度制御器の応答周波
数が前記振動条件を満たさない状態まで戻す第４ステップとを備え、ゲインチューニング
を収束させるまで、自動調整を繰り返すことを特徴とする電動機制御装置の自動調整法。
【請求項１９】
請求項１７において、前記位置指令パターンを自動生成する機能を用いて電動機を動作
し、前記位置制御器の応答周波数を前記位置偏差波形の振動振幅が許容値を超えない範囲
、且つ前記モータ振動判定部の出力が前記振動条件を満たさない状態となるまで、運転パ
ターンを繰り返すことを特徴とする電動機制御装置の自動調整法。
【請求項２０】
駆動対象負荷と結合した電動機と、
前記電動機を駆動する電力変換器と、
位置指令値と前記電動機の位置検出値との偏差に応じて位置制御器出力を出力する位置
制御器と、
前記位置指令値を入力として位置フィードフォワード信号を出力する位置フィードフォ
ワード制御器と、
前記位置制御器出力と前記位置フィードフォワード信号とを加算し速度指令値を出力す
る加算器と、
前記速度指令値と電動機の速度検出値の偏差に応じてトルク電流指令値を出力する速度
制御器と、
前記トルク電流指令値と前記電動機に供給されるトルク電流検出値との偏差に応じて前
記電力変換器の出力電流を調整する電流制御器を備えた電動機の制御装置において、
前記位置制御器の位置指令値として連続的に変化する調整運転用の位置指令パターンを
生成するステップと、
この位置指令パターンを前記位置制御器の位置指令値として与えた際に、位置偏差波形
の振動振幅が規定値を超えない範囲内で、前記位置制御器及び／または前記速度制御器の
応答周波数を増加するステップと、
前記位置指令値と前記位置検出値との偏差の微分であるモータ振動時の位置偏差微分波
形の振幅量が、予め定められた振動条件を満たすか否かを判定し、判定結果を出力するモ
ータ振動判定部により、モータが振動したか振動条件を判定するステップと、を備え、
振動条件の判定により、振動条件を満たさない状態で、前記位置制御器および／または
前記速度制御器の応答周波数を増加させる応答周波数最大手段を備えたことを特徴とする
電動機制御装置の自動調整法。
【請求項２１】
駆動対象負荷と結合した電動機と、
前記電動機を駆動する電力変換器と、
位置指令値と前記電動機の位置検出値との偏差に応じて位置制御器出力を出力する位置制御器と、
前記位置指令値を入力として位置フィードフォワード信号を出力する位置フィードフォ
ワード制御器と、
前記位置制御器出力と前記位置フィードフォワード信号とを加算し速度指令値を出力す
る加算器と、
前記速度指令値と電動機の速度検出値の偏差に応じてトルク電流指令値を出力する速度
制御器と、
前記トルク電流指令値と前記電動機に供給されるトルク電流検出値との偏差に応じて前
記電力変換器の出力電流を調整する電流制御器と、
前記位置指令値と前記位置検出値との偏差の微分であるモータ振動時の位置偏差微分波形の振幅量が、予め定められた振動条件を満たすか否かを判定し、振動条件を満たす場合、モータ振動有りと判定し、振動条件を満たさない場合、モータ振動無しと判定する判定結果を出力するモータ振動判定部と、を備えた電動機の制御装置において、
位置指令パターンを与えた際の位置偏差波形の振動振幅が規定値を超えない、かつ前記モータ振動判定部の出力が振動条件を満たさない状態である範囲内で、前記位置制御器および／または前記速度制御器の応答周波数を増加するステップと、
予め登録した複数の前記位置指令パターンを前記位置制御器に対する位置指令値として
複数の運転動作を行うステップと、
複数の前記運転動作においてオーバーシュート量が規定値を超えないように、前記位置
フィードフォワード制御器の制御パラメータを調整するステップと、
を備えたことを特徴とする電動機制御装置の自動調整法。
【請求項２２】
請求項２１において、前記オーバーシュート量が規定値を超えない条件、且つ前記モー
タ振動判定部の出力が振動条件を満たさない状態を満たし、且つ、それぞれの位置指令パ
ターンにおける整定時間が小さくなる前記位置フィードフォワード制御器の制御パラメー
タを探索するステップを備えたことを特徴とする電動機制御装置の自動調整法。
【請求項２３】
請求項２１において、ユーザインターフェースから、調整条件の設定入力を受付けるス
テップと、複数の前記位置指令パターンの１つの選択入力を受付けるステップとを備えた
ことを特徴とする電動機制御装置の自動調整法。
【請求項２４】
駆動対象負荷と結合した電動機と、
前記電動機を駆動する電力変換器と、
位置指令値と前記電動機の位置検出値との偏差に応じて位置制御器出力を出力する位置
制御器と、
前記位置指令値を入力として位置フィードフォワード信号を出力する位置フィードフォ
ワード制御器と、
前記位置制御器出力と前記位置フィードフォワード信号とを加算し速度指令値を出力す
る加算器と、
前記速度指令値と電動機の速度検出値の偏差に応じてトルク電流指令値を出力する速度制御器と、
前記トルク電流指令値と前記電動機に供給されるトルク電流検出値との偏差に応じて前
記電力変換器の出力電流を調整する電流制御器と、
前記位置指令値と前記位置検出値との偏差の微分であるモータ振動時の位置偏差微分波形の振幅量が、予め定められた振動条件を満たすか否かを判定し、振動条件を満たす場合、モータ振動有りと判定し、振動条件を満たさない場合、モータ振動無しと判定する判定結果を出力するモータ振動判定部と、を備えた電動機の制御装置において、
前記位置制御器の位置指令値として連続的に変化する調整運転用の位置指令パターンを
生成する位置指令パターン生成手段と、
この位置指令パターンを前記位置制御器の位置指令値として与えて前記電動機の制御装
置を運転した際に、位置偏差波形の振動振幅が規定値を超えない、且つ前記モータ振動判定部の出力が振動条件を満たさない状態で、前記位置制御器および／または前記速度制御器の応答周波数を増加させる応答周波数最大手段とを備えたことを特徴とする電動機制御装置の自動調整法。
【請求項２５】
駆動対象負荷と結合した電動機と、
前記電動機を駆動する電力変換器と、
位置指令値と前記電動機の位置検出値との偏差に応じて位置制御器出力を出力する位置
制御器と、
前記位置指令値を入力として位置フィードフォワード信号を出力する位置フィードフォ
ワード制御器と、
前記位置制御器出力と前記位置フィードフォワード信号とを加算し速度指令値を出力す
る加算器と、
前記速度指令値と電動機の速度検出値の偏差に応じてトルク電流指令値を出力する速度制御器と、
前記トルク電流指令値と前記電動機に供給されるトルク電流検出値との偏差に応じて前
記電力変換器の出力電流を調整する電流制御器と、
前記位置指令値と前記位置検出値との偏差の微分であるモータ振動時の位置偏差微分波形の振幅量が、予め定められた振動条件を満たすか否かを判定し、振動条件を満たす場合、モータ振動有りと判定し、振動条件を満たさない場合、モータ振動無しと判定する判定結果を出力するモータ振動判定部と、を備えた電動機の制御装置において、
予め登録した複数の位置指令パターンを前記位置制御器の位置指令として与え、複数の
運転動作を行う調整運転手段と、
複数の前記運転動作においてオーバーシュート量が規定値を超えない、且つ前記モータ振動判定部の出力が振動条件を満たさない状態とならないように、前記位置フィードフォワード制御器の制御パラメータを調整するパラメータ手段とを備えたことを特徴とする電動機制御装置の自動調整法。
【請求項２６】
駆動対象負荷と結合した電動機と、
前記電動機を駆動する電力変換器と、
位置指令値と前記電動機の位置検出値との偏差に応じて位置制御器出力を出力する位置制御器と、
前記位置指令値を入力として位置フィードフォワード信号を出力する位置フィードフォ
ワード制御器と、
前記位置制御器出力と前記位置フィードフォワード信号とを加算し速度指令値を出力す
る加算器と、
前記速度指令値と電動機の速度検出値の偏差に応じてトルク電流指令値を出力する速度
制御器と、前記トルク電流指令値と前記電動機に供給されるトルク電流検出値との偏差に
応じて前記電力変換器の出力電流を調整する電流制御器と、
前記位置指令値と前記位置検出値との偏差の微分であるモータ振動時の位置偏差微分波形の振幅量が、予め定められた振動条件を満たすか否かを判定し、振動条件を満たす場合、モータ振動有りと判定し、振動条件を満たさない場合、モータ振動無しと判定する判定結果を出力するモータ振動判定部と、を備えた電動機の制御装置において、
位置指令パターンを与えた際の速度制御器の応答周波数を増加させる応答周波数最大化
手段と、
予め登録した複数の前記位置指令パターンを前記位置制御器に対する位置指令として与
え、複数の運転動作を行う調整運転手段と、
複数の前記運転動作においてオーバーシュート量が規定値を超えない、且つ前記モータ振動判定部の出力が振動条件を満たす状態とならないように、前記位置フィードフォワード制御器の制御パラメータを調整するパラメータ調整手段とを備えたことを特徴とする電動機制御装置の自動調整法。
【請求項２７】
駆動対象負荷と結合した電動機と、
前記電動機を駆動する電力変換器と、
位置指令値と前記電動機の位置検出値との偏差に応じて位置制御器出力を出力する位置制御器と、
前記位置指令値を入力として位置フィードフォワード信号を出力する位置フィードフォ
ワード制御器と、
前記位置制御器出力と前記位置フィードフォワード信号とを加算し速度指令値を出力す
る加算器と、
前記速度指令値と電動機の速度検出値の偏差に応じてトルク電流指令値を出力する速度
制御器と、
前記トルク電流指令値と前記電動機に供給されるトルク電流検出値との偏差に応じて前
記電力変換器の出力電流を調整する電流制御器と、
前記位置指令値と前記位置検出値との偏差の微分であるモータ振動時の位置偏差微分波形の振幅量が、予め定められた振動条件を満たすか否かを判定し、振動条件を満たす場合、モータ振動有りと判定し、振動条件を満たさない場合、モータ振動無しと判定する判定結果を出力するモータ振動判定部と、を備えた電動機の制御装置において、予め登録した複数の前記位置指令パターンを前記位置制御器の位置指令値として複数の運転動作を行うステップと、
複数の前記運転動作においてオーバーシュート量が規定値を超えないように、且つ前記モータ振動判定部の出力が振動条件を満たす状態とならない前記位置フィードフォワード制御器の制御パラメータを調整するステップとを備えたことを特徴とする電動機制御装置の自動調整法。
【請求項２８】
請求項２７において、複数の前記位置指令パターンの内、特定の位置指令パターンにお
ける整定時間を、前記モータ振動判定部の出力が振動条件を満たす状態とならない範囲内
で最小化するように、前記位置フィードフォワード制御の制御パラメータを調整すること
を特徴とする電動機制御装置の自動調整法。
【請求項２９】
請求項２８において、前記モータ振動判定部の出力が振動条件を満たす状態とならない
範囲内で整定時間を最小化する前記特定の位置指令パターンを、ユーザの特性入力に応じ
て切替えることを特徴とする電動機制御装置の自動調整法。
【請求項３０】
請求項２７において、前記モータ振動判定部の出力が振動条件を満たす状態とならない
範囲内で整定時間を最小化する前記特定の位置指令パターンとして、予め登録した位置指
令パターンの中から、最も整定時間が短くなる位置指令パターンを自動登録することを特
徴とする電動機制御装置の自動調整法。
【請求項３１】
請求項１７において、前記モータ振動判定部にて判定されるモータ振動判定方法は、モ
ータ移動中、モータ停止中の何れの状態においてもモータ振動検出を行うことを特徴とす
る電動機制御装置の自動調整法。
【請求項３２】
請求項３１において、前記モータ振動判定方法は、前記位置偏差の微分値である位置偏
差微分波形が減少傾向のとき、この波形の低位をホールドし、前記位置偏差微分波形が増
加傾向のとき、この波形の高位をホールドし、前記位置偏差微分波形の振動波形１周期分
の振動振幅を繰り返し算出することを特徴とする電動機制御装置の自動調整法。
【請求項３３】
請求項３１において、前記モータ振動判定方法は、モータ振動振幅判定値を判定値とし
、前記位置偏差微分の振動波形１周期分の振動振幅が、前記モータ振動振幅判定値を越え
た回数をモータ振動検出回数として測定し、前記モータ振動検出回数が、ある任意の回数
だけ検出された場合にモータ繰返し振動を発生したとすることを特徴とする電動機制御装
置の自動調整法。
【請求項３４】
請求項３３において、前記モータ振動判定方法は、モータ停止状態とモータ移動状態で
、前記モータ振動振幅判定値を切替えることを特徴とした電動機制御装置の自動調整法。
【請求項３５】
請求項３４において、前記モータ振動判定方法は、モータ停止状態とモータ移動状態を
区別するため、予めユーザが設定する位置指令値の最終値と前記位置指令値が不一致の場
合、モータ移動状態とし、前記予めユーザが設定する位置指令値の最終値と前記位置指令
値が一致した場合、モータ停止状態と判定することを特徴とした電動機制御装置の自動調
整法。
【請求項３６】
請求項３３において、前記モータ振動判定方法は、モータ振動１周期分の振動がモータ
振動したと検出する毎に、前記モータ振動検出時間をモータ振動検出総合時間として加算
し、前記モータ振動検出総合時間内に、前記モータ振動検出回数がある任意の回数だけ繰
り返された場合に、モータ振動繰り返し検出有りと判定することを特徴とする電動機制御
装置の自動調整法。
【請求項３７】
請求項３６において、前記モータ振動判定方法は、前記モータ振動検出回数がある時間
内に、ある任意の回数だけモータ振動として検出されなかった場合、モータの振動検出時
間の振動１周期分を、モータ振動検出総合時間から減算し、モータ振動検出処理を続ける
ことを特徴とする電動機制御装置の自動調整法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は電動機制御装置及びその自動調整法に関する。
【背景技術】
【０００２】
フィードバック制御パラメータ及びフィードフォワード制御パラメータを自動的にチューニングする第１の従来技術として、特許文献１が知られている。この第１の従来技術では、上位指令装置を必要とすることなく、制御パラメータを調整する際の、基本動作パターンを生成し、該基本動作パターンを設定された回数だけ繰り返す連続運転パターンを出力する電動機制御装置である。
【０００３】
また、第２の従来技術として、特許文献２が知られている。この第２の従来技術では、上位指令装置を必要とすることなく、基本動作パターンを生成し、フィードバック制御パラメータ及びフィードフォワード制御パラメータを、振動振幅量及びオーバーシュート量がユーザの設定する許容値範囲内で、適正な制御パラメータを得るまで、自動調整を繰り返す調整法および装置である。
【０００４】
さらに、第３の従来技術として、特許文献３が知られている。この第３の従来技術では、追従性パラメータを第一の間隔で順次変化させて位置決め制御を行うことで整定特徴量を測定し、その後に第一の間隔より小なる間隔で追従性パラメータを増減させて制御パラメータを探索する方式が示されている。
【０００５】
モータ振動を検出する第４の従来技術として、特許文献４が知られている。この第４の従来技術では、モータ停止時にエンコーダから出力される現在位置信号が、位置指令値を中心として行き過ぎているのか、戻り過ぎているのか、という往復動作の発生回数をカウントし、そのカウント結果がある閾値を越えた場合にモータ振動発生しているとするものである。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−２３９４６号公報
【特許文献２】特開２００７−１３５３４４号公報
【特許文献３】特開２００９−１２２７７８号公報
【特許文献４】特開平０９−２５８８３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１では、生成した基本動作パターンを設定された回数だけ繰り返す連続運転パターンを出力する電動機制御装置であることが明記されている。もし、基本動作パターンの設定回数を誤って設定した場合、制御パラメータ調整途中で、基本動作パターンの出力が終了してしまう恐れがある。このとき、制御パラメータをさらに調整する必要が生じてしまい、作業者への負担が大きくなるという問題点があった。
【０００８】
また、特許文献２では、振動振幅量及びオーバーシュート量がユーザが設定する許容値範囲内で、適正な制御パラメータを得るまで、自動調整を繰り返す調整法および装置である。一方、モータ移動→停止タイミング以外のモータ振動検出については注目していない。制御パラメータ調整の際は、モータ停止中、モータ移動中にもモータ振動することがあり、制御パラメータ増加に伴い、モータから大きな騒音が発生する可能性があり、モータ停止中、モータ移動中のモータ振動も検出する必要がある。
【０００９】
特許文献３に示される方式では整定特徴量を用いているが、この整定特徴量とは具体的には位置決め整定時間、オーバーシュート量、残留振動振幅、高周波振動振幅である（特許文献３の段落００１６参照）。残留振動振幅は、位置指令と検出位置との偏差に現われる低周波振動の振幅値であるため、動的な状態での振幅波形が小さく、動的な振動検出は非常に困難となってしまう。
【００１０】
一方、特許文献４でもモータ振動の検出方法について記載されているが、ここではモータ停止時のモータ振動検出方法にのみ着目している。この方法では、モータ移動中のモータ振動は検出していないため、モータ移動中にモータ振動が発生した場合には、大きな騒音を発生しながら、モータが駆動してしまう恐れがある。
【００１１】
本発明は上記課題に鑑みてなされたものであり、作業者の負担が軽減でき、かつ、安定した動作を実現する制御パラメータを自動調整可能な電動機制御装置及びその自動調整方法を提供することを目的としている。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、本発明は、例えば、特許請求の範囲に記載の構成を採用する。その一例を示すならば、駆動対象物と結合した電動機を駆動する電力変換器と、位置指令値と前記電動機の位置検出値との偏差に応じて位置制御器出力を出力する位置制御器と、前記位置指令値を入力して位置フィードフォワード信号を出力する位置フィードフォワード制御器と、前記位置制御器出力と前記位置フィードフォワード信号とを加算し速度指令値を出力する加算器と、前記速度指令値と前記電動機の速度検出値の偏差に応じてトルク電流指令値を出力する速度制御器と、前記トルク電流指令値と前記電動機に供給されるトルク電流検出値との偏差に応じて前記電力変換器の出力電流を調整する電流制御器と、予め登録された複数の位置指令パターンを前記位置制御器への位置指令として出力するパラメータチューニング部とを備え、
前記パラメータチューニング部は、
前記位置指令値と前記位置検出値との偏差の微分が、予め定められた振動条件を満たすか否かを判定し、振動条件を満たす場合、モータ振動有りと判定し、振動条件を満たさない場合、モータ振動無しと判定する判定結果を出力するモータ振動判定部を有し、前記複数の位置指令パターンを前記位置制御器へ出力して前記電動機を駆動させてフィードフォワードゲインを調整する場合に、前記モータ振動判定部の出力が振動条件を満たさず、かつ、オーバーシュート量が規定値以下となる最大のフィードフォワードゲインを、制御パラメータとして設定することを特徴とする電動機制御装置である。
【発明の効果】
【００１３】
本発明によれば、作業者の負担が軽減でき、かつ、安定した動作を実現する制御パラメータを自動調整可能な電動機制御装置及びその自動調整方法を提供することができる。
【００１４】
上記した以外の課題、構成、効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施例による電動機制御装置のフィードバック制御パラメータの自動調整法を示す制御ブロック図。
【図２】フィードバック制御及び位置フィードフォワード制御パラメータ自動調整を行うチューニング部及び位置指令パターンを生成する位置指令生成ブロックを示す制御ブロック図。
【図３】第１の実施例によるフィードバック制御部のフローチャートその１。
【図４】第１の実施例によるフィードバック制御部のフローチャートその２。
【図５】振動振幅・整定時間・オーバーシュート量の測定処理フロー図その１。
【図６】振動振幅・整定時間・オーバーシュート量の測定処理フロー図その２。
【図７】振動振幅・整定時間・オーバーシュート量の測定処理説明波形図。
【図８】モータ振動時に発生する、位置指令波形、位置偏差波形、位置偏差微分波形の説明波形図。
【図９】モータ振動検出処理部のフローチャートその１。
【図１０】モータ振動判定部のフローチャートその２。
【図１１】モータ振動判定部のフローチャートその３。
【図１２】モータ振動判定部のフローチャートその４。
【図１３】モータ振動判定部の説明波形図。
【図１４】モータ振動発生中のモータ移動中振動波形とモータ停止中振動波形のモータ振動振幅判定レベルの切り分け説明波形図。
【図１５】モータ振動検出処理部の、ノイズ対策説明波形図。
【図１６】モータ振動判定部の、ノイズ対策説明波形図。
【図１７】モータ振動判定部のモータ振動周波数監視法の説明波形図。
【図１８】第２の実施例におけるフィードフォワードゲインと整定時間・オーバーシュートの関係説明図。
【図１９】第２の実施例におけるフィードフォワードゲインKffの自動調整法の処理フロー図。
【図２０】第２の実施例におけるフィードフォワード時定数と限界フィードフォワードゲインKff_bdと整定時間の関係図。
【図２１】限界フィードフォワードゲインKff_bd探索フローチャートその１。
【図２２】限界フィードフォワードゲインKff_bd探索フローチャートその２。
【図２３】限界フィードフォワードゲインKff_bd探索フローチャートその３。
【図２４】最適フィードフォワード時定数Tff_opt探索用データ構造説明図。
【図２５】最適フィードフォワード制御部Tff_opt探索過程説明図。
【図２６】フィードバック制御パラメータ自動調整機能設定画面例。
【図２７】位置フィードフォワード制御パラメータ自動調整機能設定画面例。
【図２８】本実施形態の電動機制御装置の全体システム構成図。
【発明を実施するための形態】
【００１６】
本発明の実施形態を説明する。本実施形態を概観すると、制御パラメータ自動調整装置において、モータ停止中のモータ振動、およびモータ移動中のモータ振動を検出し、モータ振動を抑制しながら、振動振幅量及びオーバーシュート量がユーザが設定する許容値範囲内で、適正な制御パラメータを得るまで、自動調整を繰り返す調整法および装置を提供することが特徴となっている。
【００１７】
詳細は下記の実施例の説明を通して理解されるが、次のような効果が得られるものとなっている。すなわち、まず、制御パラメータ増加に伴うモータ振動発生に対し、制御パラメータを調整することで、モータ振動を抑制することができる。また、自動生成した位置指令パターンによるフィードバック制御パラメータを短時間に、モータ振動を抑制しつつ調整することができる。また、頻繁に利用する特定の位置指令パターンに関して、モータ振動を抑制しつつ整定時間を最小化するようなフィードフォワード制御パラメータの自動調整が可能となる。さらには、ユーザが事前に登録した複数の位置指令パターンに対して、オーバーシュート量を規定値以下とすることができる。
【００１８】
なお、本発明の実施形態として説明する電動機制御装置及びその自動制御法では、フィードバック制御パラメータを自動調整する際、位置制御応答周波数、及び速度制御応答周波数の２つの制御パラメータについて調整を行うが、その調整手順は、どちらを初めに調整しても最適な制御パラメータを得ることができる。実施例１では、位置制御応答周波数を調整後、速度応答周波数を調整する、という手順の実施例を示す。
【実施例１】
【００１９】
図１は、本発明の第１の実施例による電動機制御装置の自動調整法を示す制御ブロック図である。第１の実施例は、フィードバック制御パラメータの自動調整を目的とする。
【００２０】
図１において、駆動源となる電動機１は駆動対象負荷２と連結軸３によって連結される。電動機１には電力を供給するために電力変換装置４が取り付けられており、この電力変換装置４から供給される電流によって電動機１が駆動される。電動機１には、電動機１の位置検出値θMを出力する位置検出器５が取り付けられており、後述する上位指令装置からの位置指令値θM*と電動機１の位置検出値θMとの位置偏差θeを演算する減算器６が設けられている。減算器７からの位置偏差θeは位置制御器７へと出力され、この位置制御器７は位置偏差θeに応じて速度指令値ωM*を出力する。
【００２１】
位置検出器５の出力する位置検出値θMは速度検出器８へと入力され、この速度検出器８は電動機１の速度検出値ωMを出力する。また、速度指令値ωM*と電動機１の速度検出値ωMとの速度偏差ωeを演算する減算器９が設けられ、この速度偏差ωeは速度制御器１０に入力される。速度制御器１０は入力された速度偏差ωeに応じてトルク電流指令値Iq*を出力する。
【００２２】
電力変換装置４と電動機１との間には、電動機１に供給されるトルク電流検出値Iqを検出する電流検出器１１が取り付けられ、検出された電流値は演算器１２へと送られる。演算器１２はトルク電流指令値Iqと電流検出器１１で検出されたトルク電流検出値Iqとの電流偏差Ieを演算し、この電流偏差電流偏差Ieは電力制御器１３へと入力される。電力制御器１３は電流偏差Ieに応じて電力変換器４の出力電流を調整する。
【００２３】
このような電動機制御装置において、位置指令に応じた速度指令値を出力する位置フィードフォワード制御部１４が設けられている。この位置フィードフォワード制御部１４は位置指令θM*に応じて速度指令値ωM*を出力する。さらには、位置指令θM*を生成し、位置制御器７および速度制御器１０および位置フィードフォワード制御部１４のパラメータを自動調整するフィードバック及びフィードフォワード制御パラメータチューニング部１５が設けられている。
【００２４】
このチューニング部は前述の位置偏差θeを入力し、位置指令値θM*、と位置制御７に設定する位置応答周波数および速度制御器１０に設定する速度応答周波数と、位置フィードフォワード制御部に設定する位置フィードフォワードゲイン及び位置フィードフォワード時定数を出力する。
【００２５】
図２は、図１が示すフィードバック制御及び位置フィードフォワード制御パラメータチューニング部１５のブロック図を示す。
【００２６】
位置指令はユーザが設定するものとし、位置指令生成部１５１はユーザにより設定される位置指令パターンから具体的な位置指令θM*を生成する。
【００２７】
また、減算器６から出力された位置偏差θeを入力として、電動機から発生するモータ振動の有無を検出するモータ振動判定部１５２と、位置偏差θe、及び１５２から出力されるモータ振動検出フラグflgmvibを入力として、後述するアルゴリズムを用いて最適な位置制御応答周波数、および最適な速度制御応答周波数を自動で調整するフィードバック制御パラメータチューニング部１５３とを備える。
【００２８】
さらに、ユーザが設定する位置指令値θref*、及び位置指令生成部１５１から出力される位置指令値θM*を入力として、モータ移動中、若しくはモータ停止中のいずれかを判断し、モータ停止中、モータ移動中、各々の場合において、異なるモータ振動検出振動振幅量判定値を出力する、モータ振動検出振動振幅量判定値切替部１５４、及び、位置偏差θe、及びモータ振動判定部１５２から出力されるモータ振動検出フラグflgmvibを入力として、後述するアルゴリズムを用いて最適な位置フィードフォワードゲイン、および最適な位置フィードフォワード時定数を自動で調整するフィードフォワード制御パラメータチューニング部１５５とを備えている。
【００２９】
フィードバック制御パラメータチューニング部１５３の内部には、後述するフィードバック制御パラメータの自動調整アルゴリズムを有している。その基本動作は、位置応答周波数、及び速度応答周波数を、位置指令印加時の位置偏差振動振幅量がユーザが設定する規定値、例えば許容値を越えない範囲内で、かつモータ振動判定部の出力であるモータ振動検出フラグflgmvibが(「モータ繰返し振動発生無し」)の状態において、最大化するというものである。
【００３０】
図３、および図４は第１の実施例によるフィードバック制御パラメータの自動調整フローチャートである。この図を用いて、フィードバック制御パラメータの自動調整アルゴリズムを説明する。
【００３１】
図４において、Fs_minは、ユーザが設定する最小速度応答周波数、Fs_maxはユーザが設定する最大速度応答周波数、Fs_divはユーザが設定する速度応答周波数増分ステップである。後述する調整時には、速度応答周波数をFs_minからFs_maxまでFs_divのステップで増加しながら調整することを意味する。
【００３２】
同様に、Fp_minは、ユーザが設定する最小位置応答周波数、Fp_maxはユーザが設定する最大位置応答周波数、Fp_divはユーザが設定する位置応答周波数増分ステップである。後述する調整時には、位置応答周波数をFp_minからFp_maxまでFp_divのステップで増加しながら調整することを意味する。
【００３３】
また、θvibは、ユーザが設定する位置偏差θeの振動振幅許容値である。Fsは、速度制御器１０に設定されている現在の速度応答周波数、Fpは位置制御器７に設定されている現在の位置応答周波数である。Fp_voは振動限界の最大位置応答周波数であり、位置偏差波形の振動振幅量が許容値θvib以下、またはモータ振動検出無し、となる最大の位置応答周波数を記録する。Fs_vlは、調整により最終的に求まる最適速度応答周波数、Fp_vlは、調整により最終的に求まる最適位置応答周波数、flag_fpmaxは‘ＯＮ’の場合に位置偏差波形の振動振幅が許容値θvib以下のまま、かつモータ振動を検出しないまま最大位置応答に達したことを示すフラグである。
【００３４】
本フローチャートにおける調整の基本的な考え方は、位置応答周波数および速度応答周波数を、位置偏差波形に振動を誘発しない範囲内、かつモータ振動を検出しない範囲内で、可能な限り高く設定することである。また、位置応答周波数を徐々に高めて行く過程で、位置偏差波形に振動が発生、もしくはモータ振動を検出しても、速度応答周波数を少し高めることで前記位置偏差波形の振動を低減できる、またはモータ振動を抑制することができる場合があることが経験的に分かっている。
【００３５】
そこで、この経験則を活かす為に、位置偏差波形に振動が発生した場合、もしくはモータ振動が繰返し発生した場合には、速度応答周波数Fsを速度応答周波数増分ステップFs_divだけ高くして位置偏差波形の振動あるいは繰返し発生したモータ振動の再評価を行うこととした。
【００３６】
次に、図３のフローチャートを順を追って説明する。図３では、２０でフィードバック制御パラメータの自動調整を開始し、処理２１で各変数の初期化を実施する。初期化処理２１では、FsにFs_minを代入し、速度応答周波数を最小速度応答周波数Fs_minから開始するように設定している。同様に、FpにFp_minを代入し、位置応答周波数を最小位置応答周波数Fp_minから開始するように設定している。
【００３７】
更に、振動限界の最大位置応答周波数Fp_voを最小位置応答周波数Fp_minで、フラグflag_fpmaxを‘ＯＦＦ’で初期化し、処理２２に移行する。処理２２では、位置指令値θM*を入力として電動機を駆動し、処理２３へ移行する。処理２３では、処理２２で生成する位置指令を図１における位置指令値θM*として印加した際の位置偏差θeの振動振幅を測定し、処理２４へ移行する。この位置偏差θeの振動振幅の測定手段については後述する。処理２４では、図２におけるモータ振動判定部１５２からの出力であるモータ振動検出フラグflgmvibを用いてモータ振動が繰り返しあったかを検出する。このモータ振動の検出手段ついては後述する。
【００３８】
次に、判定処理２５では、処理２４でモータ振動が繰り返し発生したか否かを判定する。判定処理２５で、モータ振動が発生していない場合、処理２６へ移行する。処理２６では、位置偏差θeの振動振幅が許容値θvib以下か否かを判定する。判定処理２６で位置偏差θeの振動振幅が許容値θvib以下かの場合、処理２７へ移行する。判定処理２７では、現在の位置応答周波数Fpが最大位置応答周波数Fp_max未満か否かを判定し、未満であれば、処理２８に移行する。処理２８では現在の位置応答周波数を位置応答周波数増分ステップだけ増加し、処理２２に移行する。
【００３９】
一方、判定処理２７で現在の位置応答周波数Fpが最大位置応答周波数Fp_max以上の場合には、処理２９に移行する。処理２９では、フラグflag_fpmaxに‘ＯＮ’を設定し、位置偏差波形の振動振幅が許容値θvib以下、かつモータ振動検出無しのまま、最大位置応答周波数に達したことを明示し、判定処理３０に移行する。
【００４０】
判定処理３０では、現在の速度応答周波数Fsが最大速度応答周波数Fs_max未満か否かを判定し、未満であれば、処理３１に移行する。処理３１では現在の速度応答周波数を速度応答周波数増分ステップFs_divだけ増加し、処理２２に移行する。
【００４１】
一方、判定処理３０で現在の位置応答周波数Fpが最大速度応答周波数Fs_max以上の場合には、位置応答周波数、速度応答周波数ともに、位置偏差波形の振動振幅が許容値θvib以下、かつモータ振動検出なしのまま最大値に達したことを意味し、処理３２に移行する。処理３２では、最適速度応答周波数Fs_vl、および最適位置応答周波数Fp_vlに対して、それぞれ現在の速度応答周波数Fs、現在の位置応答周波数Fpを代入した後、３３へ移行し終了する。
【００４２】
判定処理２６で振動振幅が許容値θvib以下でない場合には、処理３４に移行する。判定処理３４では、flag_fpmaxをチェックし、位置偏差波形の振動振幅が許容値θvib以下のまま最大位置応答に達したか否かを確認する。ここで、flag_fpmax=ＯＦＦでない場合には、位置偏差波形の振動振幅が許容値θvib以下のまま、最大位置応答に達し、その後、位置偏差波形の振動振幅が許容値θvibを越えるまで速度応答周波数を高めたことを意味し、処理３５に移行する。処理３５では、最適速度応答周波数Fs_vlに対して、位置偏差波形の振動振幅が許容値θvib以下となる条件を設定する為に、現在の速度応答周波数Fsから速度応答周波数増加ステップFs_divだけ減算した値を代入した後、３３へ移行し終了する。
【００４３】
判定処理３４で、flag_fpmax=ＯＦＦの場合には、判定処理３６に移行し、現在の位置応答周波数Fpと前記した振動限界の最大位置応答周波数Fp_voとを比較する。ここで、「Fp>Fp_vo」が成立しない場合には、現在の位置応答周波数Fpが振動限界の最大位置応答周波数Fp_voを越える条件が存在しないことを意味し、処理３５に移行する。判定処理３６で「Fp>Fp_vo」が成立する場合には、判定処理３７に移行する。
【００４４】
判定処理３７では、現在の速度応答周波数Fsが最大速度応答周波数Fs_max未満か否かを判定し、未満であれば処理３８に移行する。処理３８では、現在の速度応答周波数Fsを速度応答周波数増分ステップFs_divだけ増加し、位置偏差波形の振動振幅の低減を図る。更に、位置偏差波形の振動振幅が必ず許容値θvib以下となるように、現在の位置応答周波数Fpを位置応答周波数増分ステップFp_divだけ減少し、処理３９に移行する。処理３９では、振動限界の最大位置応答周波数Fp_voとして現在の位置応答周波数Fpを記録し、位置応答周波数を更に上げるべく処理２２に移行する。
【００４５】
判定処理３７で現在の速度応答周波数Fsが最大速度応答周波数Fs_max以上の場合には、現在の速度応答周波数Fsをこれ以上増加できないことを意味し、処理４０に移行する。処理４０では、最適速度応答周波数Fs_vlに対して、現在の速度応答周波数Fsを代入する。更に、最適位置応答周波数Fp_vlに対しては、位置偏差波形の振動振幅が必ず許容値θvib以下となるように、現在の位置応答周波数Fpを位置応答周波数増分ステップFp_divだけ減少した後、３３へ移行し終了する。
【００４６】
判定処理２５でモータ振動検出有り状態と判定した場合には、処理４１に移行する。判定処理４１では、flag_fpmaxをチェックし、モータ振動検出無し状態のまま最大位置応答に達したか否かを確認する。flag_fpmax=ＯＦＦ以外の場合には、位置偏差波形のモータ振動検出無しのまま、最大位置応答に達し、その後、モータ振動検出無し状態を越えるまで速度応答周波数を高めたことを意味し、処理４２に移行する。
【００４７】
処理４２では、現在の速度応答周波数は、モータ振動検出有り状態であることから、現在の速度応答周波数Fsを速度応答周波数増加ステップFs_divだけ減算する。ここで、現在の速度応答周波数Fsを速度応答周波数増加ステップFs_divだけ減算した値は、モータ振動検出しない範囲内での限界値であることが分かる。よって、最大速度応答周波数Fs_maxを現在の速度応答周波数Fsで記録することで、次回電動機駆動時にモータ振動検出有り状態となることを防ぎ、処理２２へ移行する。
【００４８】
判定処理４１で、flag_fpmax=ＯＦＦの場合には、判定処理４３に移行し、現在の位置応答周波数Fpと振動限界の最大位置応答周波数Fp_voとを比較する。ここで、「Fp>Fp_vo」が成立しない場合には、現在の位置応答周波数Fpが振動限界の最大位置応答周波数Fp_voを越える条件が存在しないことを意味し、処理４２に移行する。判定処理４３で「Fp>Fp_vo」が成立する場合には、処理４４に移行する。
【００４９】
判定処理４４では、現在の速度応答周波数Fsが最大速度応答周波数Fs_max未満か否かを判定し、未満であれば処理４５に移行する。処理４５では、現在の速度応答周波数Fsを速度応答周波数増分ステップFs_divだけ増加し、現在の位置応答周波数Fpを位置応答周波数増分ステップFp_divだけ減少することで、モータ振動検出無し状態とし、処理４６に移行する。処理４６では、振動限界の最大位置応答周波数Fp_voとして現在の位置応答周波数Fpを記録し、位置応答周波数Fpを更に上げるべく処理２２に移行する。
【００５０】
判定処理４４で現在の速度応答周波数Fsが最大速度応答周波数Fs_max以上の場合には、現在の速度応答周波数Fsをこれ以上増加できないことを意味し、処理４２に移行する。
【００５１】
図５および図６は、第１の実施例における振動振幅・整定時間・オーバーシュート量の測定処理フロー図である。このフローを用い、フィードバック制御及び位置フィードフォワード制御パラメータチューニング部１５において、必要となる位置偏差波形の振動振幅、整定時間、オーバーシュート量を計測する方法を述べる。
【００５２】
図５および図６において、timeoutは、ユーザが設定する整定監視タイムアウト時間であり、位置偏差波形が始めてゼロクロスした時点を起点として、timeoutだけ整定時間を計測させる調整パラメータである。posin_plsは、ユーザが設定する整定判定用偏差であり、位置偏差の絶対値が安定してposin_pls以下となるとき、整定しているとする。
【００５３】
また、poserrは位置偏差、poserr_workは振動・オーバーシュート計測用位置偏差であり、位置指令印加直後の位置偏差が電動機の駆動方向に関わらず、常に正側から開始するように位置偏差poserrを符号調整した状態量である。flag_poserr_plusは、位置指令印加直後の位置偏差が正から開始することを示すフラグであり、位置偏差が正から開始する時には、flag_poserr_plus=ＯＮとし、負から開始する時には、flag_poserr_plus=ＯＦＦとする。よって、flag_poserr_plus=ＯＮではposerr_work=poserrであり、flag_poserr_plus=ＯＦＦではposerr_work=-poserrとなる。
【００５４】
poserr_minは位置偏差最小値であり、位置指令が変化し終わった直後から、整定時間の計測を終了するまでの間、常にその時点におけるposerr_workの最小値を保持する変数である。poserr_vibは位置偏差中の振動振幅最大値であり、「poserr_work-poserr_min」で算出されるposerr_workの振動振幅から常に最大値を保持する変数である。flag_plsinは整定判定用偏差到達フラグであり、位置偏差の絶対値が整定判定用偏差posin_pls以下ならばflag_plsin=ＯＮとし、そうでないならば、flag_plsin=ＯＦＦとする。よって、flag_plsin_bkは整定判定用偏差到達フラグ前回値であり、前回設定したflag_plsinと同値なフラグである。
【００５５】
time_sは計測経過時間であり、位置指令が変化し終わった直後を起点とする経過時間、time_wは整定監視経過時間であり、位置偏差波形が始めてゼロクロスした時点を起点とする経過時間を示す。Stは整定時間であり、位置偏差の絶対値が整定判定用偏差posin_plsよりも大きい値からposin_pls以下となる度にStに対して計測経過時間time_sを代入する。これにより、整定監視タイムアウト時間timeoutが適切に長く設定されていれば、Stには位置指令が変化し終わった直後から位置偏差が最終的に整定するまでに要する時間が記録されることになる。
【００５６】
over_shootは電動機位置の位置指令値に対するオーバーシュート量であり、整定後には、poserr_minの符号反転値に等しくなる。
【００５７】
次に、図５および図６のフローチャートを順を追って説明する。図５および図６では、５０でフローチャートを開始し、判定処理５１で位置指令θM*の変化を確認する。ここでは、位置指令が入力されるまでは、位置指令に変化がない為、判定処理５１を繰り返し実行するが、位置指令が入力されると、「位置指令θM*に変化あり」と判定され、判定処理５２に移行する。判定処理５２では、位置指令が一定か否かを判定する。ここでは、位置指令が完全に立ち上がった時点において、位置指令が一定となり、判定処理５３に移行する。一方、位置指令が立ち上がっている最中は、判定処理５２を繰り返し実行する。
【００５８】
判定処理５３では、位置偏差poserrの正負を確認し、正であれば処理５４に移行する。処理５４では、前記位置偏差が正から開始することを示すフラグflag_poserr_plusに‘ＯＮ’をセットし、処理５５に移行する。処理５５では、位置偏差最小値poserr_minを位置偏差poserrで初期化し、初期化処理５６に移行する。判定処理５３において、位置偏差poserrが負であれば、処理５７に移行し、位置偏差が正から開始することを示すフラグflag_poserr_plusに‘ＯＦＦ’をセットし、処理５８に移行する。処理５８では、善意位置偏差最小値poserr_minを位置偏差poserrの符号反転-poserrで初期化し、初期化処理５６に移行する。初期化処理５６では、位置偏差中の振動振幅最大値poserr_vib、計測経過時間time_s、整定監視時間time_w、整定判定用偏差到達フラグ前回値flag_plsin_bkをゼロで初期化し、処理５９に移行する。
【００５９】
処理５９では、計測経過時間time_sに1加算し、判定処理６０に移行する。判定処理６０では、位置偏差poserrの絶対値が整定判定用偏差posin_pls以下ならば、処理６１に移行し整定判定用偏差到達フラグflag_plsinに‘ＯＮ’をセットし、判定処理６２に移行する。
【００６０】
判定処理６２では、整定判定用偏差到達フラグ前回値flag_plsin_bkがゼロか否かを判定し、flag_plsin_bk=ＯＦＦならば、処理６３に移行し整定時間Stに計測経過時間time_sを記録し処理６５へ移行する。また、判定処理６２において、flag_plsin_bk=ＯＮならば、既に整定している為、整定時間Stを更新する必要は無く、処理６５に移行する。処理６５では、次回の位置偏差判定処理６０に備えて、整定時間判定用偏差到達フラグ前回値flag_plsin_bkに対して、今回の整定時間判定用偏差到達フラグflag_plsinの値を代入し、判定処理６６へ移行する。
【００６１】
判定処理６６では、位置偏差が正から開始することを示すフラグflag_poserr_plusをチェックする。flag_poserr_plus=ＯＮならば、位置偏差が正から開始したとして処理６７へ移行し、振動・オーバーシュート計測用位置偏差poserr_workに位置偏差poserrをそのまま代入し、判定処理６９に移行する。判定処理６６において、flag_poserr_plus=ＯＦＦならば、位置偏差が負から開始したとして処理６８へ移行し、振動・オーバーシュート計測用位置偏差poserr_workに位置偏差poserrの符号反転-poserrを代入し、判定処理６９に移行する。
【００６２】
判定処理６９では、振動・オーバーシュート計測用位置偏差poserr_workが位置偏差最小値poserr_min以下か否かを判定する。以下であれば処理７０に移行し、位置偏差最小値poserr_minを現在の振動・オーバーシュート計測用位置偏差poserr_workで更新し、判定処理７１に移行する。判定処理６９において、振動・オーバーシュート計測用位置偏差poserr_workが位置偏差最小値poserr_min以下とならない場合には、位置偏差最小値poserr_minを更新することなく、判定処理７１に移行する。
【００６３】
判定処理７１では、これまでに計測された位置偏差中の振動振幅最大値poserr_vibと「poserr_work-poserr_min」を比較し、poserr_vibの方が小さい場合には処理７２へ移行し、poserr_vibを「poserr_work-poserr_min」で更新し、判定処理７３に移行する。判定処理７１において、poserr_vibの方が大きい場合には、poserr_vibを更新することなく、判定処理７３に移行する。
【００６４】
判定処理７３では、位置偏差がゼロクロスしたことを検出する為に、位置偏差最小値poserr_minがゼロ以下か否かを評価する。ここで、poserr_min≦0ならば、過去に位置偏差がゼロクロスしたと判定し、処理７４に移行する。処理７４では、位置偏差波形が始めてゼロクロスした時点を起点とする経過時間を表す整定監視経過時間time_wに1加算し、判定処理７５に移行する。判定処理７３でposerr_min≦0が成立しない場合には、未だ一度も位置偏差波形がゼロクロスしていないと判定し、処理５９へ移行する。
【００６５】
判定処理７５では、位置指令が変化し終わった直後を起点とする整定監視経過時間time_wと整定監視タイムアウト時間timeoutを比較し、time_w≧timeoutならば整定監視を終了するべく処理７６に移行する。一方、判定処理７５において、time_w≧timeoutが成立しない場合には、整定監視を継続するべく処理５９に移行する。処理７６では、オーバーシュート量over_shootとして位置偏差最小値poserr_minの符号反転値-poserr_minを設定し、７７に移行し、位置偏差波形の振動振幅、整定時間、オーバーシュート量を計測する処理を終了する。
【００６６】
図７は、第１の実施例における振動振幅・整定時間・オーバーシュート量の計測説明波形図であり、各部状態量の波形を用いて、図５および図６のフローチャートの結果を具体例で示す。図７において、波形８０は位置指令値、波形８１は位置偏差poserr及び振動・オーバーシュート計測用位置偏差poserr_workである。波形８２は整定判定用偏差到達フラグflag_plsin、波形８３は位置偏差最小値poserr_min、波形８４はposerr_work-poserr_minである。
【００６７】
また、各波形の横軸は計測経過時間time_sであり、位置指令を示す波形８０が完全に立ち上がった時点をtime_s=0としている。この場合、位置指令波形８０が正方向に変化しているため、time_s≧0でのposerr_workは位置偏差poserrと等しい。ここでもし、位置指令波形８０が負方向に変化していたならば、poserr_workを示す波形８１を時間軸に対して線対称に変換した波形となる。
【００６８】
また、整定判定用偏差到達フラグflag_plsinを示す波形８２は、poserr_workを示す波形８１がグラフ中の-posin_plsからposin_plsの間に存在すれば‘ＯＮ’を取り、それ以外では‘ＯＦＦ’を取る。この例のように、位置偏差波形が振動的な場合には、‘ＯＦＦ’と‘ＯＮ’を何度か往復した後、特に整定監視タイムアウト時間timeoutが十分に長く設定されていれば、最終的に‘ＯＮ’に落ち着く。
【００６９】
また、整定判定用偏差到達フラグflag_plsinの立ち上がりエッジ(矢印)毎に、整定時間Stを計測経過時間time_sで更新する。整定監視経過時間time_wは、整定監視タイムアウト時間timeoutを計測する為の経過時間であり、図中に時間軸８５で示したように、位置偏差波形８１が始めてゼロクロスした時点を起点としている。このように、計測経過時間time_sとは別に、位置偏差波形８１が始めてゼロクロスした時点を起点とする整定監視経過時間time_wを新たに設ける。その理由は、位置偏差波形がゼロクロスした時点から整定までに要する時間が、位置応答周波数や速度応答周波数といった制御パラメータの影響をあまり受けないことによる。
【００７０】
これにより、ユーザによる整定監視タイムアウト時間timeoutの設定に際しては、位置応答周波数や速度応答周波数と言った制御パラメータを考慮することなく、一定値を設定するだけで、制定時間Stの正確な測定を可能としている。また、波形８３は位置偏差最小値poserr_minであり、振動・オーバーシュート計測用位置偏差poserr_workと比較するとわかりやすいが、poserr_workの各時点での最小値を示す。また、波形８４は、poserr_work-poserr_minであり、振動・オーバーシュート計測用位置偏差poserr_workに含まれる振動成分のみを抽出した波形となる。
【００７１】
このことは、もしposerr_workが振動を伴わない漸減波形ならば、poserr_work-poserr_minが常にゼロになることから理解できる。また、最終的に求めたい位置偏差中の振動振幅最大値poserr_vibは、波形８４のピークホールド値である。
【００７２】
図８は、モータ駆動時にモータ振動が発生した場合の説明波形図である。波形１００は位置指令生成部１５１で生成される位置指令波形である。波形１０１は位置偏差θeである。波形１０２は波形１０１を微分することにより得られる、位置偏差微分波形である。
【００７３】
波形１００の位置指令値を入力値として、電動機、負荷、制御パラメータ等の影響によりモータが振動した場合、位置偏差波形は波形１０１のように振動的な波形となり、波形１０１の微分により得られる波形１０２は、振動振幅量が大きく、周期的な振動波形となる。
【００７４】
本実施例におけるモータ振動判定方法は、この点に着目し、波形１０２の振動波形１周期分の振動振幅量が、ある任意の値を越える場合の計測回数を計測する。この計測回数が、ある任意の時間の間に、ある任意の回数だけ検出された場合、モータ振動が繰り返し発生した、と判定することを特徴とする。
【００７５】
図９〜図１２は、第１の実施例におけるモータ振動検出処理１５２のフローである。このフローを用い、モータ振動判定部１５２で行うモータ振動検出を検出するフローを述べる。
【００７６】
図９〜図１２において、poserrは位置偏差θeであり、poserr_oldは位置偏差θeの前回値であり位置偏差(前回値)とする。poserr_difは前記位置偏差と前記位置偏差(前回値) poserr_oldの差から算出される位置偏差微分値である。
【００７７】
time_vib_cntはモータ振動時の位置偏差微分波形が示す、モータ振動波形１周期分の測定時間であり、後述するモータ振動振幅最大値検出状態開始からモータ振動振幅最小値検出状態終了までの時間を測定する。time_vib_jdgはモータ振動検出時間の合計値であり、後述するモータ振動検出回数をカウントアップする毎に、モータ振動波形１周期分の時間を合算し、モータ振動が検出されている間の合計時間を計測する。time_vib_jdg_levelは、モータ振動検出時間の判定値である。モータ振動はtime_vib_jdgがtime_vib_jdg_levelを越えない範囲内で、ある任意の回数だけ繰り返し検出した場合、モータ振動検出に誤検出なくモータ振動を検出した、と判定する。また、モータ振動はtime_vib_jdgがtime_vib_jdg_levelを越えた場合、モータ振動検出時に、誤検出があったと判断し、モータ振動を繰り返し検出した、と判定しない。
【００７８】
time_buf[vib_dtct_ov_cnt]はモータ振動波形１周期分の測定時間を保存するバッファ値である。モータ振動を検出し、time_vib_jdg がtime_vib_jdg_level を越えた場合、time_buf[vib_dtct_ov_cnt]分だけ減算する。vib_dtct_ov_cntは、モータ振動検出時間オーバーカウント回数である。vib_dtct_ov_cntはtime_vib_jdg がtime_vib_jdg_level を越える毎にカウントアップする。vib_cntはモータ振動検出判定回数である。
【００７９】
poserr_dif_chk_stsはモータ振動検出判定状態を示す。poserr_dif_chk_sts=ＶＩＢ＿ＭＡＸのとき、モータ振動振幅最大値を測定する状態であり、poserr_dif_chk_sts=ＶＩＢ＿ＭＩＮのとき、モータ振動振幅最小値を測定する状態であり、poserr_dif_chk_sts=ＶＩＢ＿ＣＨＫのとき、モータ振動振幅最大値とモータ振動振幅最小値の関係から、モータ振動を検出したか判定する状態である。
【００８０】
poserr_dif_maxは、poserr_difが示すモータ振動波形１周期中の最大振幅値である。poserr_dif_minは、poserr_difが示すモータ振動波形１周期中の最小振幅値である。poserr_vib_levelはモータ振動検出振動振幅量判定値であり、poserr_dif_chk_sts=ＶＩＢ＿ＣＨＫの状態において、poserr_dif_maxとposerr_dif_minの差が、poserr_vib_levelを越えた場合、モータ振動検出回数poserr_dif_vib_cntをカウントアップする。vib_chk_levelはモータ振動振幅最大最小判定レベル値である。
【００８１】
poserr_dif_vib_cntはモータ振動検出回数であり、モータ振動の動作が、time_vib_jdg_levelの範囲内で何度繰り返し検出されたかを示す。また、poserr_dif_vib_cnt が、モータ振動検出判定回数poserr_dif_vib_cnt_jdgを越えた場合、モータ振動が繰り返し発生したと判定する。vib_dtct_flgはモータ振動検出状態フラグであり、モータ振動を検出していない場合、vib_dtct_flg =ＯＦＦ、モータ振動を検出した場合、vib_dtct_flg =ＯＮとなる。
【００８２】
次に図９〜図１２のフローチャートを順を追って説明する。図９では、３００でフローチャートを開始し、処理３０１でモータ振動検出状態フラグvib_dtct_flg、及びモータ振動検出フラグflgmvibをＯＦＦとし、モータ振動検出判定状態poserr_dif_chk_sts=ＶＩＢ＿ＭＡＸとして初期化処理を行い、処理３０２へ移行する。処理３０２では、位置偏差poserrと位置偏差(前回値)poserr_oldの差分から、位置偏差微分値poserr_difを算出する。処理３０３で位置偏差poserrを位置偏差(前回値)poserr_oldとし、次回の処理３０２で位置偏差(前回値)poserr_oldとして扱う。処理３０４では、位置偏差微分値poserr_difに１次遅れフィルタ処理を加え、高周波ノイズの影響によるモータ振動の誤検出を抑制する。処理３０５では、モータ振動１周期分の時間を測定するため、time_vib_cntに1加算し、判定処理３０６へ移行する。
【００８３】
判定処理３０６では、すでにモータ振動検出した状態であるかを判別し、すでにモータ振動を検出した場合、３０７の状態へ移行する。処理３０７ではモータ振動検出フラグ=‘ＯＮ’と設定することで、前記モータ振動判定部でモータ振動を検出したことを出力し、処理３０８へ移行し、モータ振動検出処理を終了する。また、モータ振動を検出していない場合、処理３０９へ移行する。
【００８４】
判定処理３０９では、モータ振動振幅値最大値検出状態poserr_dif_chk_sts=ＶＩＢ＿ＭＡＸの場合、判定処理３１０へ移行する。判定処理３１０では、モータ振動振幅値最大値poserr_dif_maxが位置偏差微分値poserr_difより小さい場合、処理３１１へ移行する。処理３１１にて、モータ振動振幅値最大値poserr_dif_max=poser_difとしてモータ振動振幅値最大値を更新し、判定処理３１２へ移行する。
【００８５】
判定処理３１２では、モータ振動振幅値最大値検出状態を終了するか判定する処理である。モータ振動時、位置偏差微分波形は正弦波波形となるため、位置偏差微分波形１周期中の最大値を通った後、位置偏差微分値は徐々に小さくなる。このことから、poserr_dif_max-poser_difなる値がモータ振動振幅最大最小判定レベル値vib_chk_levelより大きくなった場合、モータ振動振幅値最大値はすでに取得したと判断する。このとき、処理３１３へ移行し、モータ振動振幅値最小値検出状態poserr_dif_chk_sts=ＶＩＢ＿ＭＩＮとする。判定処理３１４では、モータ振動振幅値最大値検出状態poserr_dif_chk_sts=ＶＩＢ＿ＭＩＮの場合、判定処理３１５へ移行する。
【００８６】
判定処理３１５では、モータ振動振幅値最小値poserr_dif_minが位置偏差微分値poserr_difより大きい場合、処理３１６に移行する。処理３１６にて、モータ振動振幅値最小値poserr_dif_minを現在の位置指令微分値poser_difで更新し、判定処理３１７へ移行する。
【００８７】
判定処理３１７では、モータ振動振幅値最小値検出状態が終了か否かを判定する処理である。モータ振動時、位置偏差微分波形は正弦波波形となるため、位置偏差微分波形１周期中の最小値を通った後、位置偏差微分値は徐々に大きくなる。このことから、|poserr_dif_min-poser_dif|なる値がモータ振動振幅最大最小判定レベル値vib_chk_levelより大きくなった場合、位置偏差微分波形１周期中における、モータ振動振幅値最小値はすでに取得したと判断する。このとき、処理３１８へ移行し、モータ振動振幅値判定状態poserr_dif_chk_sts=ＶＩＢ＿ＣＨＫとする。
【００８８】
判定処理３１９では、モータ振動振幅値判定状態poserr_dif_chk_sts=ＶＩＢ＿ＣＨＫの場合、判定処理３２０へ移行する。判定処理３２０では、モータ振動振幅値最大値poserr_dif_maxとモータ振動振幅値最小値poserr_dif_minの差からモータ振動振幅量を算出し、その値がモータ振動検出振動振幅値判定値より大きい場合、モータが振動する動作をした、として処理３２１へ移行する。処理３２１では、モータ振動検出回数を1加算し、処理３２２へ移行する。処理３２２では、モータ振動検出時間に、今回のモータ振動１周期分の検出時間を加算し、判定処理３２３へ移行する。
【００８９】
判定処理３２３では、モータ振動検出時間がモータ振動検出時間判定値を越えたかを判定する。モータ振動検出時間がモータ振動検出時間判定を越えた場合、モータ振動検出時に誤検出があったとして、処理３２４へ移行する。処理３２４では、モータ振動誤検出が少なくとも１回は発生していることから、モータ振動検出回数をカウントダウンする。処理３２５では、モータ振動検出時間から、モータ振動検出時間バッファ値time_buf[vib_cnt]だけ減算する。これにより、モータ振動誤検出した、と考えられる時間を減算することが可能となる。処理３２６では、モータ振動検出時間がモータ振動検出時間判定値を越えた回数を測定する。処理３２７では、モータ振動時間(1周期分) time_vib_cntをtime_buf[vib_cnt]へ保存する。処理３２８ではモータ振動検出総計回数をカウントアップする。
【００９０】
判定処理３２９では、モータ振動検出回数がモータ振動検出判定回数以上であるかを判定する。モータ振動検出回数がモータ振動検出判定回数以上の場合、処理３３０へ移動し、モータが振動したと判定しモータ振動検出状態フラグvib_dtct_flg=ＯＮをセットする。判定処理３２９、または処理３３０終了後、処理３３１へ移行する。
【００９１】
処理３３１では、モータ振動検出判定を終了し、再度モータ振動1周期分のモータ振動振幅値最大値を検出するため、モータ振動振幅値判定状態poserr_dif_chk_sts=ＶＩＢ＿ＭＡＸとし、また、再度モータ振動振幅の最大値を検出するため、モータ振動振幅値最大値poserr_dif_maxを、設定しうる最小の値とし、そして、再度モータ振動振幅の最小値を検出するため、モータ振動振幅値最小値poserr_dif_minを、設定しうる最大の値に設定して、処理３０２へ移動し、モータ振動検出処理を繰り返す。
【００９２】
図１３は、第１の実施例におけるモータ振動波形、モータ振動検出_判定状態、モータ振動振幅値最大値、モータ振動振幅値最小値、モータ振動検出振動振幅量判定値、モータ振動振幅最大最小判定レベル値、モータ振動検出回数の計測法説明波形図であり、各状態量の波形を用いて、図９〜図１２のフローチャートの結果を具体例で示す。図１３において、波形３５０は位置偏差微分値poser_dif、波形３５１はモータ振動振幅値最大値poserr_dif_max、波形３５２はモータ振動振幅値最小値poserr_dif_min、波形３５３はモータ振動振幅値最大値poserr_dif_maxとモータ振動振幅値最小値poserr_dif_minの差である。波形３５４はモータ振動検出処理が、モータ振動振幅最大値検出状態、またはモータ振動最小値検出状態、またはモータ振動判定状態のいずれの状態であるかを示している。
【００９３】
poserr_dif_chk_sts=ＶＩＢ＿ＭＡＸの時、モータ振動振幅値最大値poserr_dif_maxを検出している。この状態において、位置偏差微分値poserr_difがモータ振動振幅値最大値poserr_dif_maxよりも大きい場合、位置偏差微分値は、モータ振動振幅値最大値を検出し始めてから、一番大きな値を取得していることを表している。ここで位置偏差微分値の一番大きな値を表す、モータ振動振幅値最大値を更新するため、poserr_dif_max=poserr_difとして、poserr_dif_maxを増加させる。このとき、波形３５５では、poserr_dif_max-poserr_dif=0となり、モータ振動振幅値最大値が増加状態であることを示している。波形３５０の位置偏差微分値poserr_difが減少し、位置偏差微分値poserr_difがモータ振動振幅値最大値poserr_dif_maxよりも小さい場合、波形３５１のモータ振動振幅値最大値は更新されない。また、波形３５５において、poserr_dif_max-poserr_difは0より大きくなり、増加していく。波形３５５において、poserr_dif_max-poserr_difが増加していき、モータ振動振幅最大最小判定レベル値vib_chk_levelより大きくなった場合、モータ振動振幅値最大値は取得完了したとして、モータ振動最小値検出状態poserr_dif_chk_sts=ＶＩＢ＿ＭＩＮとなる。
【００９４】
波形３５４において、poserr_dif_chk_sts=2の時、波形３５２に示すように、モータ振動振幅値最小値を検出している。この状態において、位置偏差微分値poserr_difがモータ振動振幅値最小値poserr_dif_minよりも大きい場合、poserr_dif_min=poser_difとして、poserr_dif_minも増加していく。このとき、波形３５５では、poserr_dif-poserr_dif_min=0となり、モータ振動振幅値最小値が減少状態であることを示している。
【００９５】
波形３５０の位置偏差微分値poserr_difが小さくなった場合、波形３５２のモータ振動振幅値最小値は更新されない。また、波形３５５において、poserr_dif-poserr_dif_minは0より大きくなり、増加していく。
【００９６】
波形３５５において、poserr_dif-poserr_dif_minが増加していき、モータ振動振幅最大最小判定レベル値vib_chk_levelより大きくなった場合、モータ振動振幅値最小値は取得完了したとして、モータ振動最小値検出状態poserr_dif_chk_sts=ＶＩＢ＿ＣＨＫとなる。
【００９７】
波形３５４において、poserr_dif_chk_sts=ＶＩＢ＿ＣＨＫの時、波形３５３に示す、モータ振動振幅値poserr_dif_max+ poserr_dif_minを波形３５１モータ振動振幅値最大値poserr_dif_maxと、波形３５２モータ振動振幅最小値poserr_dif_minの和から算出する。モータ振動振幅量poserr_dif_max+ poserr_dif_minがモータ振動検出振動振幅量判定値poserr_vib_levelより大きい場合、波形３５６に示すようにモータ振動検出回数poserr_dif_vib_cntをカウントアップする。この処理を繰り返し、モータ振動検出回数が、ある任意の値を越えた場合、モータ振動を検出したと判定し、モータ振動検出フラグvib_dtct_flgをＯＮとする。
【００９８】
図１４では、モータ移動中、モータ停止中のモータ振動検出振動振幅量判定値の切替方法について説明する。図１４において、波形３６０は位置指令波形、波形３６１は位置指令差分波形、波形３６２は位置偏差波形、波形３６３は位置偏差微分波形図、波形３６４はモータ振動振幅レベルを示す。
【００９９】
波形３６２は、位置指令値θM*と位置検出値θMとの位置偏差波形であり、波形３６３は波形３６２を微分した位置偏差微分波形である。波形３６３では、モータ移動中も位置偏差微分波形が振動的な波形であるが、モータ振動が微小である状態を表している。この場合、モータ移動中はモータ振動音が発生せず、モータ振動として検出する必要はない。一方、モータ停止中には、モータ振動音が発生するため、モータ振動として検出する必要がある。
【０１００】
ここで、モータ停止中とモータ移動中のモータ振動レベルを同値とした場合について述べる。モータ停止中のモータ振動レベルを、モータ振動検出振動振幅量判定値として設定した場合、モータ移動中にモータ振動音が発生しない場合であっても、モータ振動と誤検出する場合がある。一方、モータ移動中のモータ振動レベルをモータ振動検出振動振幅量判定値として設定した場合には、モータ停止中のモータ振動が大きい場合しかモータ振動を検出できなくなる。このため、モータ振動を判定するモータ振動検出振動振幅量判定値は、モータ移動中とモータ停止中で異なる値を持つ必要がある。
【０１０１】
モータ振動検出振動振幅量判定値を、モータ移動中とモータ停止中で異なる値を設定するためには、モータ移動中とモータ停止中を区別する必要となる。本実施形態では、位置指令値をユーザが事前に入力して、モータを駆動させるので、位置指令値θM*の最終的な値が予め分かっている。つまり、入力する位置指令値θM*が、ユーザの設定する位置指令値θref*に一致した時、位置指令値θM*が停止し、モータは移動中→停止動作に移ることがわかる。
【０１０２】
すなわち、位置指令値θM*とユーザの設定する位置指令値θref*が異なる場合は、モータ移動中であると判定し、モータ振動検出振動振幅量判定値をモータ移動中に適した値に設定し、位置指令値θM*とユーザの設定する位置指令値θref*が一致した場合は、モータ停止中であると判定し、モータ振動検出振動振幅量判定値をモータ停止中に適した値に設定することで、モータ振動レベルを切替ることが可能となる。
【０１０３】
これにより、モータ停止中のモータ振動レベルを、モータ振動検出振動振幅量判定値として設定した場合、モータ移動中にモータ振動音が発生しない場合であっても、モータ振動と誤検出する場合が発生する。一方、モータ移動中のモータ振動レベルをモータ振動検出振動振幅量判定値として設定すると、モータ停止中のモータ振動が大きい場合しか検出できなくなる。といった誤検出を防ぐことが可能となる。
【０１０４】
図１５はモータ振動が周期的に発生した場合の、モータ振動判定方法を説明し、図１６はノイズの影響でモータ振動が非周期的に発生した場合、モータ振動として誤検出されるのを防ぐ方法について説明する。図１５において波形３７０は位置指令波形、波形３７１はモータ振動発生時の位置偏差波形、波形３７２はモータ振動発生時の位置偏差微分波形を示す。また、波形３７３はモータ振動が検出された場合のモータ振動検出回数を示し、波形３７４はモータ振動検出状態フラグを示す。
【０１０５】
また、図１６において、波形３７５では位置指令波形、波形３７６はノイズの影響を受けた場合の位置偏差波形、波形３７７はノイズの影響を受けた場合の位置偏差微分波形、波形３７８はモータ振動が検出された場合のモータ振動検出回数を示し、波形３７９はモータ振動検出状態フラグである。
【０１０６】
モータ振動周波数fvibであるモータ振動が、モータ振動検出判定回数poserr_dif_vib_jdgだけモータ振動検出を繰り返した場合、モータ振動が繰り返し検出された合計時間tvibは(１)式を用いて表すことが出来る。
【０１０７】
【数１】
0005860755.tif 000002
【０１０８】
ここで、モータ振動検出判定回数poserr_dif_vib_jdg を一定値として、モータ振動周波数fvibが大きくなる場合、（１）式から、モータ振動が繰り返し検出された時間tvibは小さくなる。また、モータ振動周波数fvibは速度応答周波数Fsより大きな値となり、本実施例おける速度応答周波数の最小値はFs_minであることから、モータ振動が繰り返し検出された合計時間tvibは（２）を満たすことが分かる。
【０１０９】
【数２】
0005860755.tif 000003
【０１１０】
(２)式より、モータ振動検出判定回数poserr_dif_vib_jdgと、モータ振動が繰り返し検出された時間tvibを、事前に適切に設定すれば、モータ振動検出の誤検出を抑制することが可能である。なお、tvibに関して（２）式が成り立つ条件を満たせば、任意に設定することが出来る。
【０１１１】
波形３７０に示す位置指令値波形を入力し、波形３７１に示す位置偏差波形のようにモータ振動が発生した場合、波形３７２のモータ振動振幅量がモータ振動値振動量判定値を越えるモータ振動検出処理が周期的に発生する。モータ振動が検出された場合には、波形３７３で示すモータ振動検出回数poserr_dif_vib_cntを1加算する。波形３７３がモータ振動検出時間判定値time_vib_jdg_level内で、モータ振動検出判定回数poserr_dif_vib_cnt_jdgを越えた場合に、モータ振動が繰り返し検出されたと判定し、波形３７４でモータ振動を繰り返し検出した状態を示すため‘ＯＮ’を出力する。
【０１１２】
一方、波形３７５に示す位置指令値波形を入力し、波形３７６に示すノイズの影響により、モータ振動が発生した場合、波形３７７では、位置偏差微分波形のモータ振動振幅量がモータ振動値振動量判定値を越えている場合が不定期に発生することを示している。ノイズの影響によりモータ振動を誤検出した場合であっても、波形３７８で示すモータ振動検出回数poserr_dif_vib_cntを1加算する。モータ振動検出回数poserr_dif_vib_cntがモータ振動検出時間判定値time_vib_jdg_level内で、モータ振動検出判定回数poserr_dif_vib_cnt_jdgを越えた場合に、モータ振動が繰り返し検出されたと判定する。ノイズの影響によりモータ振動を誤検出した場合には、モータ振動検出が不定期となることから、モータ振動検出回数poserr_dif_vib_cntは波形３７８のようになる。波形３７８では、モータ振動検出回数poserr_dif_vib_cntがモータ振動検出時間判定値time_vib_jdg_level内で、モータ振動検出判定回数poserr_dif_vib_cnt_jdgを越えていないので、モータ振動繰り返し検出した、と判定しない。
【０１１３】
これにより、ある任意の時間、ある任意のモータ振動検出回数を適切に設定すれば、ノイズによる影響から発生したモータ振動検出は、モータ振動が繰り返し発生したと判定されることは無く、波形３７９でモータ振動を繰り返し検出した状態を示す‘ＯＮ’を出力せず、‘ＯＦＦ’のままである。
【０１１４】
図１７は、モータ振動検出処理中にモータ振動検出時間time_vib_jdgが、モータ振動検出時間判定値time_vib_jdg_levelを越えた場合の説明波形図である。波形３８０は、モータ振動時の位置偏差微分波形、波形３８１は、モータ振動検出判定時のモータ振動振幅レベル、波形３８２はモータ振動検出回数、波形３８３はモータ振動検出時間time_vib_jdg、波形３８４はモータ振動検出時間バッファ値time_buf[vib_cnt]である。
【０１１５】
波形３８０に示すように、位置偏差微分の振動値が大きい状態から、位置偏差微分の振動量が徐々に小さくなっていく場合、波形３８１がモータ振動検出レベル判定値を越える間、波形３８２に示すようにモータ振動検出回数が増加していく。同時に、波形３８３に示すように、モータ振動１周期分のモータ振動検出時間をモータ振動が検出される毎に加算していく。波形３８３がモータ振動検出時間判定値を越えた場合、モータ振動は、ある任意回数のモータ振動検出回数を、ある任意時間以内に繰り返し検出していないことを示している。
【０１１６】
この場合、ある任意の時間、ある任意の検出回数を適切に設定すれば、モータ振動に誤検出があったと判断できる。モータ振動が誤検出されていると判断された場合、モータ振動検出回数を１減算する。波形３８４では、モータ振動が検出された場合の、モータ振動１周期分の検出時間をバッファとして保持し。モータ振動誤検出があったと判定された場合には、モータ振動検出時間から、モータ振動検出開始１回目のモータ振動検出時間であるモータ振動検出時間バッファ値を減算した値をモータ振動検出時間とする。この処理を繰り返すことにより、モータ振動が周期的に発生するモータ振動検出を検出する。
【実施例２】
【０１１７】
冒頭に述べたように本実施形態では、フィードフォワード制御パラメータを自動調整する際、位置フィードフォワードゲイン、及び位置フィードフォワード時定数の２つの制御パラメータについて調整を行うが、その調整手順は、どちらを先に調整しても最適な制御パラメータを得ることができる。実施例２では、位置フィードフォワードゲインを調整後、位置フィードフォワード時定数を変更、位置フィードフォワードゲインを再度調整する、という手順を繰り返す調整法の実施例について示す。
【０１１８】
前提とするシステムは、図１に示される通りに第１の実施例と同様であるため、詳細な説明は省略する。
【０１１９】
第２の実施例では、第１の実施例におけるフィードバック制御パラメータの自動調整に加え、位置フィードフォワード制御パラメータの自動調整をも行う。位置フィードフォワード制御器への入出力関係は、ラプラス演算子をsとするとき、制御器のパラメータであるフィードフォワードゲインKffとフィードフォワード時定数Tffを用いて（３）式で表すことができる。
【０１２０】
【数３】
0005860755.tif 000004
【０１２１】
次に、フィードフォワードゲインKffの自動調整法を具体的に説明するが、まず、その考え方を、図１８を用いて説明する。
【０１２２】
図１８は、第２の実施例におけるフィードフォワードゲインと整定時間・オーバーシュートの関係説明図であり、同図（a）は、フィードフォワードゲインと整定時間の関係、同図（b）は、フィードフォワードゲインとオーバーシュート量の関係を示す。図１８（a）では、横軸がフィードフォワードゲインKff、縦軸が整定時間であり、基本的にはフィードフォワードゲインKffが大きい程、整定時間が短くなる傾向を示す。図のように、フィードフォワードゲインKffがある値以上になると、急激に整定時間が長くなることを示している。
【０１２３】
一方、図１８（b）では、横軸がフィードフォワードゲインKff、縦軸がオーバーシュート量であり、フィードフォワードゲインKffが小さい場合には、オーバーシュートを全く発生しない。しかし、フィードフォワードゲインKffがある値以上になると、オーバーシュートが発生し始め、以後、その発生量はKffに関して単調増加となることを示している。
【０１２４】
以上、図１８（a）、（b）から、オーバーシュート量がゼロか十分に小さい場合には、整定時間はフィードフォワードゲインKffを大きく設定した方が短くなると言える。また、オーバーシュート量はフィードフォワードゲインKffを大きく設定する程、増大することから、整定時間を最小化するには、フィードフォワードゲインKffをオーバーシュート量が許容値を超えない範囲内で最大化すれば良いことがわかる。
【０１２５】
よって、以下に説明する処理フローチャートでは、予め登録した全位置指令パターンに関して、オーバーシュート量が許容値を超えない条件を満たす最大フィードフォワードゲインKffの探索を行う。
【０１２６】
図１９は、第２の実施例におけるフィードフォワードゲインKffの自動調整法の処理フロー図である。なお、フィードフォワード時定数Tffの自動調整法については、その調整過程において、フィードフォワードゲインKffの自動調整を必要とする為、後述することとする。
【０１２７】
図１９において、Kff_iniはユーザが設定するフィードフォワードゲイン初期値、Kff_dmaxはユーザが設定するフィードフォワードゲイン探索最大ステップ、Kff_dminはユーザが設定するフィードフォワードゲイン探索最小ステップである。Kffは位置フィードフォワード制御器１４に設定されている現在のフィードフォワードゲイン、Kff_divは現在のフィードフォワードゲイン探索ステップ、Kff_bdは最終的に求めたい限界フィードフォワードゲインである。
【０１２８】
また、実施例１同様、位置フィードフォワード制御パラメータの自動調整を行う際も、図２に示す「モータ振動検出処理部」にてモータ振動を検出する。
【０１２９】
後述する調整時には、Kff=Kff_iniから探索を開始し、Kff=Kff_iniでオーバーシュート量が許容値未満、かつモータ振動を検出しない範囲内であればKffをKff_dmaxで増加する。また、Kff=Kff_iniでオーバーシュート量が許容値以上、またはモータ振動を検出した状態(flgmvib=ＯＮ)であれば、KffをKff_dmaxのステップで減少する。更に、Kff_dmaxステップでのKff更新中にオーバーシュート量が許容値未満から許容値以上に変化、あるいはオーバーシュート量が許容値以上から許容値未満に変化、あるいはモータ振動を検出しない状態(flgmvib=ＯＦＦ)からモータ振動を検出した状態(flgmvib=ＯＮ)に変化、あるいはモータ振動を検出した状態(flgmvib=ＯＮ)からモータ振動を検出しない状態(flgmvib=ＯＦＦ)に変化した場合には、次の処理を実施する。
【０１３０】
すなわち、前記現在のフィードフォワードゲイン探索ステップKff_divを半減しながらKffを増減探索する処理をKff_divがフィードフォワードゲイン探索最小ステップKff_dminを下回るまで実施することを意味する。
【０１３１】
次に、図１９のフローチャートを順を追って説明する。図１９では、４００でフローチャートを開始し、初期化処理４０１で現在のゲインKffにフィードフォワードゲインKffにフィードフォワードゲイン初期値Kff_iniを設定する。そして、現在のフィードフォワードゲイン探索ステップKff_divにフィードフォワードゲイン探索ステップKff_dmaxを設定し、処理４０２に移行する。
【０１３２】
処理４０２では、ユーザが予め登録した全ての位置指令パターンでの運転を行い、各運転毎に前述の手段で、整定時間、オーバーシュート量を計測し、判定処理４０３へ移行する。
【０１３３】
判定処理４０３では、各運転パターン毎のオーバーシュート量の評価を行い、いずれかの運転パターンでのオーバーシュート量が許容値以上となる場合、またはいずれかの運転パターンでモータ振動を検出した場合(flgmvib=ＯＮ)には、処理４０４に移行する。処理４０４では、現在のフィードフォワードゲインKffを現在のフィードフォワードゲイン探索ステップKff_divだけ減じた後に、処理４０５に移行する。処理４０５では、処理４０２と同様にユーザが予め登録した全ての位置指令パターンでの運転を行い、各運転毎に整定時間、オーバーシュート量を計測し、判定処理４０６へ移行する。
【０１３４】
判定処理４０６では、各運転パターン毎のオーバーシュート量の評価を行い、全ての運転パターンでのオーバーシュート量が許容値未満で、かつ全ての運転パターンでモータ振動を検出しなかった場合(flgmvib=ＯＦＦ)には、処理４０７へ移行する。一方、判定処理４０６において、いずれかの運転パターンでのオーバーシュート量が許容値以上となる場合、またはいずれかの運転パターンでモータ振動を検出した場合(flgmvib=ＯＮ)には、更に現在のフィードフォワードゲインKffを減ずる目的で、処理４０４に移行する。
【０１３５】
処理４０７では、全ての運転パターンでのオーバーシュート量を許容値未満であり、かつ全ての運転パターンでモータ振動無し(flgmvib=ＯＦＦ)とする最大Kffの候補の１つとして、現在のフィードフォワードゲインKffで限界フィードフォワードゲインKff_bdを更新し、処理４０８に移行する。
【０１３６】
処理４０８では、後のフローを考慮して、現在のフィードフォワードゲインKffに現在のゲイン探索ステップKff_divを加算し、いずれかの運転パターンでのオーバーシュート量が許容値以上、またはいずれか運転パターンでモータ振動を検出した(flgmvib=ＯＮ)条件を再設定し、処理４０９へ移行する。判定処理４０３において、全ての運転パターンでのオーバーシュート量が許容値未満、かつ全ての運転パターンでモータ振動を検出しなかった(flgmvib=ＯＦＦ)場合には処理４１０に移行する。
【０１３７】
処理４１０では、全ての運転パターンでのオーバーシュート量を許容値未満、かつモータ振動無し(flgmvib=ＯＦＦ)とする最大Kffの候補の１つとして、現在のフィードフォワードゲインKffで限界フィードフォワードゲインKff_bdを更新し、処理４１１に移行する。処理４１１では、現在のフィードフォワードゲインKffに現在のフィードフォワードゲイン探索ステップKff_divを加算した後に、処理４１２に移行する。
【０１３８】
処理４１２では、処理４０５と同様にユーザが予め登録した全ての位置指令パターンでの運転を行い、各運転毎に整定時間、オーバーシュート量を計測し、判定処理４１３に移行する。判定処理４１３では、各運転毎のオーバーシュート量の評価を行い、いずれかの運転パターンでのオーバーシュート量が許容値以上となる場合、またはいずれかの運転パターンでモータ振動を検出した場合(flgmvib=ＯＮ)には、処理４０９に移行する。
【０１３９】
一方、判定処理４１３において、全ての運転パターンでのオーバーシュート量が許容値未満、かつ全ての運転パターンでモータ振動を検出しなかった(flgmvib=ＯＦＦ)場合には、更に現在のフィードフォワードゲインKffを増加する目的で、処理４１０に移行する。処理４０９に続くフローでは、現在のフィードフォワードゲイン探索ステップKff_divを半減しながらKffを増減探索する処理であり、処理４０９では、現在のフィードフォワードゲイン探索ステップKff_divを半減し、判定処理４１４に移行する。
【０１４０】
判定処理４１４では、現在のフィードフォワードゲインKff_divの大きさがフィードフォワードゲイン探索最小ステップKff_dmin以上か否かを判定する。そして、それ以上であれば処理４１５に移行し、未満であれば、４２５に移行し、処理を終了する。処理４１５では、現在のフィードフォワードゲインKffを現在のフィードフォワードゲイン探索ステップKff_divだけ減じた後に処理４１６へ移行する。
【０１４１】
処理４１６では、処理４１２と同様にユーザが予め登録した全ての位置指令パターンでの運転を行い、各運転毎に、整定時間、オーバーシュート量を計測し、判定処理４１７に移行する。判定処理４１７では、各運転パターン毎のオーバーシュート量が許容値未満、かつ全ての運転パターンでモータ振動を検出しなかった(flgmvib=ＯＦＦ)場合には、処理４１８に移行する。一方、判定処理４１７において、いずれかの運転パターンでのオーバーシュート量が許容値以上となる場合、またはいずれかの運転パターンでモータ振動を検出した場合(flgmvib=ＯＮ)には、更に現在のフィードフォワードゲインKffを減ずる目的で、処理４０９に移行する。
【０１４２】
処理４１８では、全ての運転パターンでのオーバーシュート量を許容値未満であり、かつ全ての運転パターンでモータ振動無し(flgmvib=ＯＦＦ)とする最大Kffの候補の１つとして、現在のフィードフォワードゲインKffで限界フィードフォワードゲインKff_bdを更新し、処理４１９に移行する。処理４１９では、現在のフィードフォワードゲイン探索ステップKff_divを半減し、判定処理４２０に移行する。判定処理４２０では、現在のフィードフォワードゲイン探索ステップKff_divの大きさがフィードフォワードゲイン最小探索ステップKff_dmin以上か否かを判定する。そして、それ以上であれば処理４２１に移行し、未満であれば４２５に移行し、フィードフォワードゲインKffの探索を終了する。
【０１４３】
処理４２１では、現在のフィードフォワードゲインKffに現在のフィードフォワードゲイン探索ステップKff_divを加算した後に、処理４２２に移行する。処理４２２では、処理４１６と同様に予めユーザが登録した全ての位置指令パターンでの運転を行い、各運転毎に整定時間、オーバーシュート量を計測し、判定処理４２３に移行する。
【０１４４】
判定処理４２３では、各運転パターン毎のオーバーシュート量の評価を行い、いずれかの運転パターンでのオーバーシュート量が許容値以上、またはいずれかの運転パターンでモータ振動を検出した(flgmvib=ＯＮ)場合には、更に現在のフィードフォワードゲインKffを減ずる目的で、処理４０９に移行する。
【０１４５】
一方、判定処理４２３において、全ての運転パターンでのオーバーシュート量が許容値未満、かつモータ振動検出無し(flgmvib=ＯＦＦ)となる場合には、処理４２４に移行する。処理４２４では、全ての運転パターンでのオーバーシュート量を許容値未満、かつモータ振動検出無し(flgmvib=ＯＦＦ)とする最大Kffの候補の１つとして、現在のフィードフォワードゲインKffで限界フィードフォワードKff_bdを更新し、更に現在のフィードフォワードゲインKffを増加する目的で、処理４１９に移行する。
【０１４６】
以上のように、図１９のフローチャートを用いれば、予め登録した全位置指令パターンに関して、オーバーシュート量が許容値を超えない、かつモータ振動無し(flgmvib=ＯＦＦ)の条件を満たす最大フィードフォワードゲインKffが限界フィードフォワードゲインKff_bdとして見出される。また、その時の整定時間は、オーバーシュートの許容値が十分に小さければ、最小となる。
【０１４７】
また、前述の図(a)、(b)は、図１９のフローチャートによる調整改定を具体的に示している。このときの各調整パラメータは、Kff_ini=0.10、Kff_dmin=0.005、Kff_dmax=0.10、オーバーシュート許容値=2[pulse]である。図１８中の(1)から(6)の順に探索が行われ、最終的に処理４２０において、Kff_div=0.003125がセットされる。このため、次の判定処理でNoとなり、endに移行するものである。
【０１４８】
図１９は、第２の実施例における、フィードフォワード時定数と限界フィードフォワードゲインKff_bdと整定時間の関係説明図である。同図(a)に示すフィードフォワード時定数と限界フィードフォワードゲイン(最大値)における整定時間の関係および、同図(b)に示すフィードフォワード時定数と整定時間の関係を説明する。
【０１４９】
図２０(a)は横軸がフィードフォワード時定数Tff、縦軸が限界フィードフォワードゲインにおける整定時間であり、図２０(b)は横軸がフィードフォワード時定数Tff、縦軸がフィードフォワードゲインである。また、各グラフのパラメータとして、異なる位置指令パターンを３種類選んでいる。ここで、限界フィードフォワードゲインKff_bdとは、各位置指令パターン関して、オーバーシュート量が許容値を超えない、かつモータ振動を検出しない(flgmvib=ＯＦＦ)条件を満たす最大フィードフォワードゲインKffのことである。
【０１５０】
具体的には、図２０(b)の各波形上の数値は、フィードフォワード時定数Tffを固定した条件で、前述図１９のフローチャートを各単独の位置指令パターンに関して実行し、求めたものである。図２０(a)の各波形上の数値は、こうして求めた限界フィードフォワードゲインKff_bdでの整定時間St_bdを記録したものである。ここで、図２０(a)、(b)から明らかなことは、最小の整定時間を与える最適フィードフォワード時定数は位置指令パターンによって、異なることである。例えば、図２０(a)から、位置指令パターン１の最適フィードフォワード時定数は約5[ms]であるが、位置指令パターン２および位置指令パターン３の最適フィードフォワード時定数はそれぞれ約9[ms]、10[ms]である。また、限界フィードフォワードゲインKff_bdも位置指令パターンによって異なることが、図２０(b)に示されている。
【０１５１】
以上の具体例で示したように、最適なフィードフォワード時定数および限界フィードフォワードゲインKff_bdは、位置指令パターンによって変化するものである。このため、位置フィードフォワードゲイン制御パラメータの調整に際しては、実際にユーザが使用する位置指令パターンに対し、妥当な位置フィードフォワード制御パラメータを決定する場合には、特に整定時間を最小化したい位置指令パターンをユーザ自身が設定できるようにする。そして、その位置指令パターンでの整定時間の極小化を実現するフィードフォワード時定数を見出すことができる。
【０１５２】
図２１〜２３は、以上に示した考え方に基づく、最適なフィードフォワード時定数、及び限界フィードフォワードゲインKff_bd探索フロー図である。また、本フローチャートでは、最適なフィードフォワード時定数、及び限界フィードフォワードゲインKff_bd時のパラメータ設定値および整定時間測定結果を効率よく保存・評価する為に、図２３で示すdata[0]、data[1]、 data[2]の３つの構造体型要素で構成された構造体配列型構造のデータ構造を利用する。
【０１５３】
図２４では、最適フィードフォワード時定数Tff_opt探索用データ構造説明図であり、data[0]、data[1]、 data[2]の３つの構造体型要素で構成された構造体配列型のデータ構造を利用する。また、構造体のメンバは、次の４つである。まず、フィードフォワード時定数Tffであり、次に、該Tffでの限界フィードフォワードゲインKff_bdである。更に、該Tff、Kff_bdでの優先位置指令パターンに対する整定時間St_bdであり、最後に、該Tffの次に小さいTffに関するデータを保存する配列番号を指示する次データ指示インデックスnextである。Sm_indexは、前記構造体配列data[0]、data[1]、 data[2]の内、どの番号の配列に、現在最小のTffに関するデータが保存されているかを示す最小Tffデータ指示インデックスである。また、以下では、各構造体メンバへの参照手段は、C言語の記述と同様として説明する。例えば、構造体配列data[1]のメンバSt_bdを参照する場合には、data[1].St_bdと記述する。また、図２４で示したように、data[0].next=1の場合には、data[data[0].next].St_bdとしても data[1]のメンバSt_bdを参照可能である。
【０１５４】
図２１〜２３のフローチャートにおいて、Tff_iniがユーザが設定するフィードフォワード時定数初期値、Tff_dminはユーザが設定するフィードフォワード時定数探索最小ステップである。また、Tff_dmaxはユーザが設定するフィードフォワード時定数探索最大ステップ、Tffは位置フィードフォワード制御１４に設定されている現在のフィードフォワード時定数、Tff_divは現在のフィードフォワード時定数探索ステップである。更に、Tff_optは最終的に求めたい最適フィードフォワード時定数であり、Kff_optは最適フィードフォワードゲインであり、最適フィードフォワード時定数Tff_optにおける限界フィードフォワードゲインKff_bdに等しい。また、dat_countは初期取得データ数カウンタであり、Tffに関する取得データ数が３点ほどあることを確認する為のカウンタ、data[]およびsm_indexは前述したとおりである。
【０１５５】
次に、本フローチャートによる最適フィードフォワード時定数Tff_optの探索概要を、図２５を参照しながら説明する。
【０１５６】
図２５では、最適フィードフォワード時定数Tff_opt探索過程説明図である。図において、横軸がフィードフォワード時定数Tff、縦軸が該フィードフォワード時定数Tffでの限界フィードフォワードゲインKff_bdにおける優先位置指令パターンに対する整定時間St_bdである。また、図２５に示す例では、Tff_ini=Tff_1とした。本フローチャートでは、常にTffに関する３点データを評価しながら、次に探索するべきTffを決定する。このため、まず、Tff=Tff_1のデータ(1)を起点として、Tff_dmax感覚でデータ(２)、データ(３)を取得する。
【０１５７】
次に、データ(１)、(２)、(３)を評価し、これらのSt_bdがTffに関して単調減少であることから、更なるSt_bdの減少を期待して、データ(３)の延長上にデータ(４)を取得し、溢れたデータ(１)を破棄する。次に、データ(２)、(３)、(４)を評価し、これらのSt_bdがTffに関して下に凸であることから、最適フィードフォワード時定数Tff_optが「データ(２)とデータ(３)の間」か「データ(３)とデータ(４)の間」の何れかにあると考える。
【０１５８】
この時点では、何れの側にTff_optがあると断定できないが、両端のデータ(２)とデータ(４)のSt_bdを比較し、小さい側を探索することにしている。よって、データ(３)とデータ(４)の中間のデータ(５)を取得し、データ(２)を破棄する。次に、データ(３)、(４)、(５)を評価し、これらのSt_bdがTffに関して下に凸であることから、上記同様にデータ(３)とデータ(４)のSt_bdを比較し、小さい側のデータ(６)を取得し、データ(４)を破棄する。
【０１５９】
次に、データ(３)、(５)、(６)を評価し、これらのSt_bdがTffに関して単調減少であることから、データ(５)の延長上にデータ(７)を取得し、溢れたデータ(３)を破棄する。ここで、データ(５)、(６)、(７)を評価すると、これらのSt_bdがTffに関して下に凸となる。しかし、更なる探索を行うと、現在のフィードフォワード時定数探索ステップTff_divがユーザが設定するフィードフォワード時定数探索最小ステップTff_dminを下回ることとなる。よって、探索を終了し、この時点の極小点であるデータ(５)のTffを最適フィードフォワード時定数Tff_optとする。以上、図２１〜２３に示すフローチャートによる探索概要を図２５を参照しながら説明した。
【０１６０】
次に、図２１〜２３のフローチャートを順を追って説明する。まず、５００でフローチャートを開始する。初期化処理５０１では、現在のフィードフォワード字絵地数Tffにフィードフォワード時定数初期値Tff_iniを設定し、現在のフィードフォワード時定数探索ステップTff_divにフィードフォワード時定数探索最大ステップTff_dmaxを設定する。
【０１６１】
また、構造体配列data[]の並びを、格納するTffが小さい順にdata[０]、data[１]、data[２]と初期化する。この為に、次データ指示インデックスnextをdata[０].next=１、data[１].next=２、data[２].next=０とし、更に、最小Tffデータ指示インデックスsm_indexをsm_index=０とする。また、現在の取得データ数をゼロとする為に初期取得データ数カウンタdat_count=０とし、処理５０２に移行する。処理５０２では、前述した図１９の限界フィードフォワードゲインKff_bd探索フローチャートを実施し、処理５０３に移行する。処理５０３では、現在のフィードフォワード時定数Tffをdata[dat_count].Tffに保存し、現在のTffでの限界フィードフォワードゲインKff_bdをdata[dat_count].Kff_bdに保存する。また、現在のTffおよびKff_bdにおける優先位置指令パターンに対する整定時間St_bdをdata[dat_count].St_bdをに保存し、判定処理５０４に移行する。判定処理５０４では、初期取得データ数カウンタdat_countの値を評価し、Tffに関するデータ数が３点あれば判定処理５０５に移行し、データ数が３点無いならば、処理５０６に移行する。処理５０６では、現在のフィードフォワード時定数Tffに現在のフィードフォワード時定数探索ステップTff_divを加算し、処理５０２に移行する。
【０１６２】
判定処理５０５では、優先位置指令パターンに対する整定時間St_bdがフィードフォワード時定数Tffに関して下に凸か否かを判定する。ここの処理は具体的には、次の通りであれば、下に凸と判断して、処理５０７に移行する。すなわち、data[sm_index].St_bd>data[data.[sm_index].next].St_bd、且つdata[data[sm_index].next].next].St_bd>data[data[sm_index].next].St_bdである。処理５０７では、現在のフィードフォワード時定数探索ステップTffを半減し、判定処理５０８に移行する。判定処理５０８の大きさがフィードフォワード時定数探索ステップTff_div以上か否かを判定し、以上であれば判定処理５０９に移行し、未満であれば処理５１０に移行する。判定処理５０９では３点データの内、最小Tffでの優先位置指令パターンに対する整定時間St_bdと、最大TffでのSt_bdの大小関係を比較する。
【０１６３】
具体的には、data[sm_index].St_bd>data[data[data[sm_index].next].next.St_bdが成立するか否かを判定し、成立する場合には、処理５１２に移行する。処理５１２では、新規のデータを２番目に大きいTffと最大Tffの中点に取得する為に、Tffを２番目に大きいTffとTff_divを加算した値とする。具体的には、現在のフィードフォワード時定数Tffをdata[data[sm_index].next].Tff+Tff_divで更新し、処理５１３に移行する。
【０１６４】
処理５１３では、前述した図１９の限界フィードフォワードゲインKff_bd探索フローチャートを実施し、処理５１４に移行する。処理５１４では、現在最小のTffに関するデータを保存した配列要素を処理５１３で取得した新規データで上書き更新する。この為に、現在のフィードフォワード時定数Tffをdata[sm_index].Tffに保存し、現在のTffでの限界フィードフォワードゲインKff_bdをdata[sm_index].Kff_bdに保存する。そして、現在のTff及びKff_bdにおける優先位置指令パターンに対する整定時間St_bdをdata[sm_index].St_bdに保存する。更に、これまで最小のTffに関するデータを保存していた配列要素を、今後２番目に大きいTffに関するデータとなる新規データで上書き更新したことによる次データ指示インデックスnextの乱れを修正する。具体的には、data[sm_index].nextの値を一時変数tmpに退避した上で、data[sm_index].nextをdata[data[sm_index].next].nextで更新する。また、data[data[sm_index].next].nextをsm_indexで更新し、data[data[data[sm_index].next].next].nextを一時変数tmpの値で更新する。最後に、sm_indexを一時変数tmpの値で更新し、判定処理５０５に移行する。判定処理５０９において、data[sm_index].St_bd>data[data[data[sm_index].next].next].St_bdが成立しない場合には、処理５１５に移行する。
【０１６５】
処理５１５では、新規のデータを最小Tffと２番目に大きいTffとの中点に取得する為に、Tffを２番目に大きいTffからTff_divを減算した値とする。具体的には、現在のフィードフォワード時定数Tffをdata[data[sm_index].next].Tff-Tff_divで更新し、処理５１６に移行する。
【０１６６】
処理５１６では、前述した図１９の限界フィードフォワードゲインKff_bd探索フローチャートを実施し、処理５１７へ移行する。処理５１７では、現在最大のTffに関するデータを保存した配列要素を処理５１６で取得した新規データで上書き更新する為、現在のフィードフォワード時定数Tffをdata[data[data[sm_index].netx].next].Kff_bdに保存する。また、現在のTff及びKff_bdにおける優先位置指令パターンに対する整定時間St_bdをdata[data[data[sm_index].next].next.St_bdに保存する。更に、これまで最大のTffに関するデータを保存していた配列要素を、今後２番目に大きいTffに関するデータとなる新規データで上書き更新したことによる次データ指示インデックスnextの乱れを修正する。具体的には、data[sm_index].nextの値を一時変数tmpに退避した上で、data[sm_index].nextをdata[data[sm_index].next].nextで更新する。また、data[data[sm_index].next].nextをdata[data[data[sm_index].next].next].nextで更新する。さらに、data[data[data[sm_index].next].next].nextを一時変数tmpの値で更新し、判定処理５０５に移行する。判定処理５０８においてTff_div≧Tff_dminが成立しない場合には、処理５１０に移行する。処理５１０では、最適フィードフォワード時定数Tff_optに２番目に大きいTffであるdata[data[sm_index].next].Tffをセットする。そして、最適フィードフォワードゲインKff_optに２番目に大きいTffにおける限界フィードフォワードゲインKff_bdであるdata[data[sm_index].next].Kff_bdをセットし、終了状態５１１に移行する。一方、判定処理５０５において、優先位置指令パターンに対する整定時間St_bdがフィードフォワード時定数Tffに関して下に凸でない場合には、判定処理５１８に移行する。判定処理５１８では、優先位置指令パターンに対する整定時間St_bdがフィードフォワード時定数Tffに関して下に凸で無い場合には、判定処理５１８移行する。判定処理５１８では、優先位置指令パターンに対する整定時間St_bdがフィードフォワード時定数Tffに関して下に単調増加か否かを判定する。
【０１６７】
ここでは、data[sm_index].St_bd<data[data[sm_index].next].St_bd< data[data[data[sm_index].next].next].St_bdならば、単調増加であると判断し、処理５１９に移行する。
【０１６８】
処理５１９では、単調増加であることから、St_bdの減少を期待して、最小Tffデータの延長上に新規データを取得する。具体的には、現在のフィードフォワード時定数Tffをdata[sm_index].Tff-Tff_divで更新し、処理５２０に移行する。処理５２０では、前述した図１９の限界フィードフォワードゲインKff_bd探索フローチャートを実施し、処理５２１に移行する。処理５２１では、現在最大のTffに関するデータを保存した配列要素を処理５２０で取得した新規データで上書き更新する。この為に、現在のフィードフォワード時定数Tffをdata[data[data[sm_index].next].next].Tffに保存する。そして、現在のTffでの限界フィードフォワードゲインKff_bdをdata[data[data[sm_index].next].next].Kff_bdに保存する。また、現在のTff及びKf_bdにおける優先位置指令パターンに対する整定時間St_bdをdata[data[data[sm_index].next].next].St_bdに保存する。更に、これまで最大のTffに関するデータを保存していた配列要素に、最小のTffに関するデータを上書き更新したことによる最小Tffデータ指示インデックスsm_indexの更新を実施する。すなわち、data[data[sm_index].next].nextの代入を実施し、判定処理５０５に移行する。判定処理５１８で単調増加と判定されなかった場合には、単調減少と考えて処理５２２に移行する。
【０１６９】
処理５２２では、単調減少であることから、St_bdの更なる減少を期待して、最大Tffデータの延長上に新規データを取得する。具体的には、現在のフィードフォワード時定数Tffをdata[sm_index].Tff+３×Tff_divで更新し、処理５２３に移行する。処理５２３では、前述した図１９の限界フィードフォワードゲインKff_bd探索フローチャートを実施し、処理５２４に移行する。処理５２４では、現在最小のTffに関するデータを保存した配列要素を処理５２３で取得した新規データで上書き更新する。この為に、現在のフィードフォワード時定数Tffをdata[sm_index].Tffに保存し、現在のTffでの限界フィードフォワードゲインKff_bdをdata[sm_index].Kff_bdに保存する。また、現在のTff及びKff_bdにおける優先位置指令パターンに対する整定時間St_bdをdata[sm_index].St_bdに保存する。更に、これまで最小のTffに関するデータを保存していた配列要素に、最大のTffに関するデータを上書き更新したことによる最小Tffデータ指示インデックスsm_indexの更新を実施する。すなわち、data[sm_index].nextの代入で実施し、判定処理５０５に移行する。
【０１７０】
このように、予め登録した全位置指令パターンにつき、オーバーシュート量を規定(許容)値以内に抑えつつ、かつモータ振動無しの状態で(flgmvib=ＯＦＦ)指定された特定の位置指令パターンでの整定時間を最小化する位置フィードフォワード制御パラメータの自動探索を行うことができる。
【０１７１】
なお、処理５０３、処理５１４、処理５１７、処理５２１、処理５２４において、data[].St_bdには、優先位置指令パターンに対する整定時間St_bdをセットしたが、評価した全位置指令パターンのうち、最も長かった整定時間をセットしてもよい。
【０１７２】
次に、調整パラメータ設定画面の実施例を図２６、図２７に示す。図２６は、本実施例におけるフィードバック制御パラメータの自動調整に際して、ユーザが調整条件を入力するパソコンの画面構成例である。図２６における入力項目は、前述の各調整パラメータに対応し、例えば６００は最小位置応答周波数Fp_minに、６０１は最大位置応答周波数Fp_maxに、６０２は位置応答周波数増分ステップFp_divに対応する。また、６０３は最小速度応答周波数Fs_minに、６０４は最大速度応答周波数Fs_maxに、６０５は速度応答周波数増分ステップFs_divに、６０６は位置偏差θeの振動振幅許容値θvibに、６０７は整定監視タイムアウト時間timeoutに対応する。また、ステップ状の位置指令を自動生成するか、手動設定するかをユーザ側で選択可能とする為に、排他的に選択できるチェックボックス６０８と６０９を設けた。ここで、６０８を選択した場合、図２のフローチャートに示した処理が実行され、位置指令パターンが自動生成される。一方、６０９を選択した場合には、加減速時間６１０、移動距離６１１、最大速度６１２の各項目をユーザ自身が設定し、位置指令パターンを決定する必要がある。
【０１７３】
図２７は、本実施例における第２の実施例である位置フィードフォワード制御パラメータの自動調整に際して、ユーザ自身が調整条件を入力するパソコン画面構成例である。図２７における各入力項目は、前述の各調整パラメータに対応し、例えば、６１３はフィードフォワードゲイン探索最小ステップKff_dminに、６１４はフィードフォワードゲイン探索最大ステップKff_dmaxに対応する。また、６１５はフィードフォワード時定数初期値Tff_iniに、６１６は同じく時定数探索最小ステップTff_dminに、６１７は同じく時定数探索最大ステップTff_dmaxに、６１８は整定監視タイムアウト時間timeoutに対応する。
【０１７４】
また、６２０から６２４はそれぞれ、位置指令パターン１から位置指令パターン５までの調整条件設定画面であり、６２０から６２４の番号で指し示したパターン名の表記部分をマウスでクリックすることにより、該パターンの設定画面を開くことができる。なお、図２７では位置指令パターン１の設定画面が開いた上体であるが、他の位置指令パターンの設定画面も同様の構成である。よって、６３０には、該位置指令パターンでの加減速時間、６３１には該位置指令パターンでの移動距離、６３２には該位置指令パターンでの最大速度を設定し、該位置指令パターンを決定する。また、６２５は該位置指令パターンでのオーバーシュート量の許容値に、６２６は該位置指令パターンでの整定判定用偏差posin_plsに対応する。チェックボックス６２７は該位置指令パターンでの調整を行うか否かを設定する為のものである。また、位置フィードフォワード時定数調整の実施有無を設定する為に、選択項目６２８を設けた。６２８の選択項目には「調整あり」と「調整なし」があり、「調整なし」を選択すると、図１９のフローチャートを実行し、現在の位置フィードフォワード時定数に対して、位置フィードフォワードゲインのみが調整される。一方、「調整あり」を選択した場合には、図２０〜２２のフローチャートを実行し、位置フィードフォワードゲイン・時定数両方の調整が行われる。また、整定時間を最小化する最優先位置指令パターンを指定する為に、選択項目６１９を設けた。６１９の選択項目では、チェックボックス６２７でチェックを付けた位置指令パターンと「整定時間最大パターン」の中から１つを選択することができる。
【０１７５】
図２８は、第１の実施例、第２の実施例に共通して本実施形態の電動機制御装置の全体のシステム構成図である。図２８において、６５１はボールネジユニット、６５２は電動機、６５３は電動機６５２の位置検出器、６５５は負荷６５４と搭載するスライダー、６５０はサーボアンプ、６５６は電動機６５２の位置検出信号をサーボアンプ６５０に伝送するケーブルである。また、６５７は、サーボアンプ６４９から電動機６５２にj駆動電力を供給するケーブル、６５９はサーボアンプに電源を供給するケーブルである。６６２は、フィードバック制御パラメータ及び位置フィードフォワード制御パラメータの自動調整に際して、ユーザが調整条件を入力するパソコン、６６３はパソコン６６２からの調整条件をサーボアンプ６５０に伝送する為の通信ケーブルである。
【０１７６】
なお、図２８では、全体のシステム構成図として、電動機制御装置の駆動対象に回転系の電動機を用いた場合を例として、説明を行ったが、この電動機制御装置の全体のシステム構成は、電動機制御装置の駆動対象に、直動系の電動機を用いた場合でも、同様の効果を得ることができる。
【０１７７】
最後に、前述の実施例１、実施例２の説明に用いた図１の符号と図２８における符号との対応関係を説明する。電動機１は６５２に、位置検出器５は６５３に、負荷２は６５４及び６５５に、駆動軸３はボールネジユニット６５１内部のボールネジに対応する。また、次の構成要素はサーボアンプ６４９に含まれる。すなわち、電力変換器４を筆頭に、減算器６、位置制御器７、速度制御器８、減算器９、速度制御器１０、電流検出器１１、減算器１２、及び電流制御器１３等の通常の制御装置である。また、本発明によって付加された位置フィードフォワード制御器１４、フィードバック及びフィードフォワード制御パラメータチューニング部１５なども、サーボアンプ６５０に含まれている。
【符号の説明】
【０１７８】
１…電動機、２…駆動対象負荷、３…連結軸、４…電力変換器、５…位置検出器、６…減算器、７…位置制御器、８…速度演算器、９…減算器、１０…速度制御器、１１…電流検出器、１２、減算器、１３…電流制御器、１４…位置フィードフォワード制御器、θM*…位置指令パターン、１５…フィードバック及びフィードフォワード制御パラメータチューニング部、１５１…位置指令生成部、１５２…モータ振動判定部、１５３…フィードバック制御パラメータチューニング部、１５４…フィードフォワード制御パラメータチューニング部、１５５…モータ振動検出振動振幅量判定値切替部、θM*…位置指令値、θM…位置検出器、θe…位置偏差、θref*…ユーザが設定する位置指令値、ωM*…速度指令値、ωM…速度検出器、ωe…速度偏差、Iq*…トルク電流指令値、Iq…トルク電流検出値、Ie…電流偏差、ωFB*…位置制御器出力信号、ωFF*…位置フィードフォワード制御器出力信号、poserr_vib_level…モータ振動検出振動振幅量判定値。
【図１】
0005860755.tif 000005
【図２】
0005860755.tif 000006
【図３】
0005860755.tif 000007
【図４】
0005860755.tif 000008
【図５】
0005860755.tif 000009
【図６】
0005860755.tif 000010
【図７】
0005860755.tif 000011
【図８】
0005860755.tif 000012
【図９】
0005860755.tif 000013
【図１０】
0005860755.tif 000014
【図１１】
0005860755.tif 000015
【図１２】
0005860755.tif 000016
【図１３】
0005860755.tif 000017
【図１４】
0005860755.tif 000018
【図１５】
0005860755.tif 000019
【図１６】
0005860755.tif 000020
【図１７】
0005860755.tif 000021
【図１８】
0005860755.tif 000022
【図１９】
0005860755.tif 000023
【図２０】
0005860755.tif 000024
【図２１】
0005860755.tif 000025
【図２２】
0005860755.tif 000026
【図２３】
0005860755.tif 000027
【図２４】
0005860755.tif 000028
【図２５】
0005860755.tif 000029
【図２６】
0005860755.tif 000030
【図２７】
0005860755.tif 000031
【図２８】
0005860755.tif 000032