以下、本発明の実施の形態について、図面を用いて説明する。
(実施の形態1)
図1は、本発明の実施の形態1におけるサーボモータの制御装置のブロック図である。
本実施の形態では、モータの回転位置を検出して、外部より入力される速度指令へ追従するようなフィードバックループを構成するとともに、速度ゲインや位置ゲインなどのフィードバックループに内包される複数の制御パラメータに、適切な設定値をマニュアルにより設定可能なサーボモータの制御装置(以下、適宜、単に「制御装置」と呼ぶ)の一例を挙げて説明する。
図1において、サーボモータ(以下、適宜、「モータ」と呼ぶ)101には、回転位置を検出するためのエンコーダ103が接続されている。エンコーダ103は、検出したモータ101の回転位置に対応した値を示す位置検出信号を出力する。位置検出信号は、微分演算を行う微分演算部111において微分演算処理され、これによって、微分演算部111からは、モータ101の回転速度を示す速度検出信号dvが出力される。
また、外部より入力される速度指令の値を示す速度指令信号は、フィードフォワードゲイン乗算部110に供給されるとともに、減算部114にも供給される。
フィードフォワードゲイン乗算部110は、供給された速度指令信号に対して所定のフィードフォワードゲインKfを乗じ、フィードフォワード信号として出力する。
一方、減算部114は、速度指令信号と速度検出信号dvとの減算演算を行い、この減算演算結果を速度誤差信号として出力する。この速度誤差信号は、速度指令と検出速度との偏差量である速度誤差に該当する。速度誤差信号は、積分演算を行う積分演算部112に供給され、積分演算処理が施される。これにより、速度誤差信号は、位置誤差に該当する位置誤差信号へと変換される。この位置誤差信号は、位置ゲイン乗算部109に供給される。位置ゲイン乗算部109は、位置誤差信号に対して制御ゲインの一つである所定の位置ゲインKpを乗じ、位置補正信号として出力する。また、位置ゲイン乗算部109には、このような位置ゲインKpの設定値が以下で説明するパラメータ更新部116から供給されている。
次に、演算部113には、位置補正信号、フィードフォワード信号および速度検出信号dvが供給される。演算部113は、位置補正信号とフィードフォワード信号との加算演算を行い、さらに、この加算演算結果と速度検出信号dvとの減算演算を行い、速度制御信号として出力する。この速度制御信号は、速度ゲイン乗算部108に供給される。速度ゲイン乗算部108は、速度制御信号に対して制御ゲインの一つである所定の速度ゲインKvを乗じ、回転制御信号として出力する。また、速度ゲイン乗算部108には、このような速度ゲインKvの設定値が以下で説明する乗算部115から供給されている。
そして、回転制御信号に対応した駆動信号がモータ101に供給され、これによってモータ101が回転駆動される。
また、このように回転駆動されるモータ101に負荷102を接続することで、負荷102が回転するように駆動される。
以上説明したような構成により、外部から通知される指令情報としての速度指令と、検出部としてのエンコーダ103により検出された回転動作に関する情報としての位置検出信号とからそれらの偏差量を求め、偏差量に対して制御ゲインを含む所定の制御パラメータ群により演算処理を施し、演算処理により生成された回転制御信号によりサーボモータ101の回転動作を制御することで、サーボモータ101の回転動作が指令情報に追従するようにフィードバック制御するフィードバックループ104が構成される。本実施の形態では、図1に示すように、負荷102を含めたサーボモータ101、エンコーダ103および駆動信号を生成するまでの帰還処理の部分を、まとめてフィードバックループ104と称して扱う。なお、ここでは、フィードバックループ104に速度指令が入力される形式となっているが、フィードバックループ104内部において、積分演算部112により、速度誤差信号に対する積分演算が行われる。このため、実質的には外部より位置指令が入力され、それにサーボモータ101の回転位置が追従するように制御されるような構成と等価である。
また、上述したように、本実施の形態の制御装置は、マニュアル、すなわち手動によるマニュアル調整で、フィードバックループ104における複数の制御パラメータに対して、設定値を設定できる構成としている。すなわち、本実施の形態では、図1に示すように、本制御装置に対して外部から、速度指令信号としての速度指令の値とともに、所定の制御パラメータ群に含まれる制御パラメータとして、位置ゲインKp、速度帯域fvおよびイナーシャJそれぞれに対しての設定値が設定可能な構成例を挙げている。このような制御パラメータへの設定値は、例えばマイクロプロセッサやマイクロコンピュータ装置のような上位器、あるいは本制御装置を収納するコントローラ装置のパネルスイッチなどから通知される。また、図1では、本制御装置に設定されている位置ゲインKpおよび速度帯域fvの設定値が、上位器など外部に対して通知され、上位器などにおいて、その設定値が例えば表示されるような一例を挙げている。
このような制御パラメータの各設定値をフィードバックループ104内に設定するため、本実施の形態の制御装置は、フィードバックループに内包される複数の制御パラメータを外部からの設定値に従って各値を更新するパラメータ更新部116およびパラメータ更新部117と、パラメータ更新部116およびパラメータ更新部117が出力する各出力値の更新履歴を記憶するパラメータ操作部106と、フィードバックループの発振を検知し、検知結果をパラメータ操作部106に通知する発振検知部105とをさらに備えている。なお、パラメータ更新部116とパラメータ更新部117とにより更新部が構成される。
パラメータ更新部116には、外部の上位器などから位置ゲインKpの設定値が供給され、パラメータ更新部117には、速度帯域fvの設定値が供給される。また、パラメータ更新部116、117は、パラメータ操作部106の操作指示信号dmの操作指示に従って、最適な設定値を選択し、選択した設定値を出力する。なお、以下、外部の上位器などから通知される設定値を外部設定値とし、パラメータ更新部116、117から出力される設定値を内部設定値と区分して呼び、説明する。
パラメータ更新部116から出力された位置ゲインKpの内部設定値は、位置ゲイン乗算部109に供給される。これによって、制御パラメータとして、フィードバックループ内における位置ゲインKpが設定される。
また、パラメータ更新部117から出力された速度帯域fvの内部設定値は乗算部115に供給される。ここで、フィードバックループの周波数帯域fsとともに、モータ101と負荷102の両方を含めた慣性モーメント、すなわちイナーシャJを割り当てると、速度ゲインKv、イナーシャJおよび周波数帯域fsの間には、Kv/J=2πfs(πは円周率を示す)の関係が成り立つ。また、フィードバックループ104の応答減衰係数を1とすると、位置ゲインKp=1/4・Kv/Jの関係が成り立つ。これに基づき、本実施の形態では、外部から速度帯域fvおよびイナーシャJの設定を可能とし、速度帯域fvとイナーシャJとの乗算結果を速度ゲインKvとして設定するような構成としている。すなわち、図1に示すように、乗算部115を設け、乗算部115により速度帯域fvの内部設定値とイナーシャJの設定値との乗算演算を行い、その乗算結果である値を速度ゲインKvとして速度ゲイン乗算部108に設定するような構成としている。このようにして、制御パラメータとしてイナーシャJおよび速度帯域fvが設定されるとともに、フィードバックループ内における速度ゲインKvも設定される。なお、外部から速度ゲインKvの外部設定値がパラメータ更新部117に通知され、パラメータ更新部117から出力された内部設定値が速度ゲイン乗算部108に供給されるような構成であってもよい。
このように、位置ゲインKpや速度ゲインKvである制御パラメータを適切に設定することにより、速度指令に対して優れた応答性や追従性を得ることができる。図2A、図2Bおよび図2Cは、制御パラメータの設定を変えた場合、速度指令の変化に対するそれぞれの応答特性例を示している。
図2Aは、時間の経過とともに速度指令信号を変化させた一例を示している。図2Bは、位置ゲインKpおよび速度ゲインKvをある程度低く設定したとき、図2Aに示す速度指令信号の変化に対して、モータ101における実回転速度の変化を示している。図2Cは、位置ゲインKpおよび速度ゲインKvを図2Bの場合よりも高く設定したとき、図2Aに示す速度指令信号の変化に対して、モータ101における実回転速度の変化を示している。
図2Bと図2Cとの比較で判るように、位置ゲインKpや速度ゲインKvを高く設定するほど、フィードバックループ104の周波数帯域幅が広くなり、速度指令の入力変化に対して優れた応答性、あるいは追従性が得られることになる。ところが、サーボモータ101を含めた負荷102は一般に機械的な共振特性を持っている。さらに、負荷102の剛性が低い場合には、その共振の周波数がフィードバックループ104の周波数帯域の上限周波数より低くなる場合がある。その場合には、フィードバックループ104に発振を生ずる可能性がある。従って、速度指令の入力に対する応答性の観点からは前述の位置ゲインKpや速度ゲインKvを高く設定する方が望ましいが、フィードバックループ104が発振を生じない範囲に留める必要がある。
本実施の形態の制御装置は、フィードバックループ104においてこのような発振が生じても速やかに発振を停止させるため、発振検知部105およびパラメータ操作部106を設けている。
パラメータ操作部106は、パラメータ更新部116およびパラメータ更新部117が出力する内部設定値を入力し、それぞれの値が変更されるたびに各値を更新履歴として順次記憶する。さらに、パラメータ操作部106には、発振検知部105から、フィードバックループ104においての発振を検知したかどうかを示す発振検知信号が通知される。
パラメータ操作部106は、この発振検知信号が発振を検知したことを示すとき、最後に更新された制御パラメータの値が、更新された以前の値に戻るように、パラメータ更新部116およびパラメータ更新部117のうち該当するパラメータ更新部に対し、更新された以前の値を供給する。さらに、このとき、パラメータ操作部106は、該当するパラメータ更新部に対し、このように供給した以前の値を選択し、出力するような操作指示を示す操作指示信号dmを通知する。これに応答して、該当するパラメータ更新部は、その値を保持するとともに、その値を内部設定値として出力する。
一方、パラメータ操作部106は、発振検知信号が発振を検知したことを示さないときには、操作指示信号dmによりパラメータ更新部116およびパラメータ更新部117に対して、外部設定値をそのまま内部設定値として出力するよう操作指示する。すなわち、発振検知信号が発振を検知したことを示さないときには、パラメータ更新部116およびパラメータ更新部117は、外部設定値をそのまま内部設定値として出力する。
パラメータ操作部106、パラメータ更新部116およびパラメータ更新部117がこのような処理を行うことで、発振検知信号が発振を検知していないことを示すとき、パラメータ操作部106は、操作指示信号dmによりパラメータ更新部116、117に対して、供給された設定値に応じた制御パラメータを設定するよう操作指示し、発振検知信号が発振を検知したことを示すとき、パラメータ操作部106はパラメータ更新部116、117に対して、フィードバックループ104の周波数帯域幅が狭くなるような制御パラメータを設定するよう操作指示するような処理が行われる。
このように、本実施の形態の制御装置は、発振検知部105によりフィードバックループ104における発振が検知されると、パラメータ操作部106によるパラメータ更新部116およびパラメータ更新部117への操作により、フィードバックループ104における制御パラメータの内部設定値が一つ手前の設定値となるように、後戻りして設定されることを特徴としている。すなわち、発振検知信号が発振を検知したことを示すとき、パラメータ操作部106の操作指示信号dmに応じて、パラメータ更新部116、117は、最後に更新して設定した制御パラメータを以前の制御パラメータへと戻し、その戻した制御パラメータをフィードバックループ104に設定する構成である。
図3は、発振検知部105の詳細な構成を示すブロック図である。図3において、発振検知部105に入力されたモータ速度を示す速度検出信号dvは、まず、バンドパスフィルタ120に入力される。図4は、バンドパスフィルタ120の周波数特性の一例を示す図である。速度検出信号dvは、図4に示すような周波数特性のバンドパスフィルタ120により、高周波成分と低周波成分とが遮断されて出力される。これはノイズ成分を遮断し、フィードバックループ104の発振を精度良く検出するためである。バンドパスフィルタ120の出力信号は、振幅判定部121に入力される。
振幅判定部121は、入力された信号の振幅が所定の振幅値よりも大きいか小さいかを判定する。振幅判定部121は、大きいと判定したときHレベル、小さいと判定したときLレベルとする2値信号を出力する。この判定結果を示す2値信号は、発振継続判定部122に供給される。
発振継続判定部122は、振幅判定部121からの信号に基づき、フィードバックループ104において安定した確実な発振が生じているかどうかを判定する。すなわち、発振継続判定部122は、例えば、入力される信号がHレベルである時間を計数することでフィードバックループ104の発振の継続性を判定する。発振継続判定部122は、継続的な発振であると判定したときHレベル、そうでなければLレベルとする2値信号を出力する。
このような発振継続判定部122のより具体的な構成例として、発振継続判定部122の内部において、アップダウンカウンタ(以下、適宜、単に「カウンタ」と呼ぶ)を設け、入力される信号がHレベルのときにはアップカウントし、Lレベルのときにはダウンカウントするよう構成する。さらに、カウンタの出力値を判定するような判定器を設け、このカウンタの出力値が所定の値以上になったときに、継続的な発振であるとしてHレベル、そうでなければLレベルの2値信号として出力するような構成とする。このような構成とすることで、発振継続判定部122が実現できる。なお、以下、各実施の形態における動作の説明において、発振検知部105がこのようなカウンタを有する発振継続判定部122を備えた構成での動作例を挙げて説明する。
なお、前述のフィードフォワードゲイン乗算部110におけるフィードフォワードゲインKfは、速度指令の入力に対するサーボモータ101の応答に関係するパラメータである。このようなフィードフォワードゲインKfは、基本的にフィードバックループ104に生ずる発振とは関係ないので、フィードバックループ104に内包される他の制御パラメータとは区別して取り扱う。また、フィードフォワードゲインKfは、通常0.3程度の値に固定して設定されることが多い。また、本実施の形態では、フィードフォワードゲインKfが固定して設定されるような構成例を示しているが、速度指令や他の制御パラメータと同様に、外部から設定可能な構成であってもよい。
次に、以上のように構成された本実施の形態のサーボモータの制御装置について、具体例を挙げて、その動作を説明する。また、上述したように、ここでは、発振継続判定部122がカウンタを備えた一例を用いて説明する。
まず、表1に示すようなマニュアル調整のステップの順に従って、制御パラメータである速度帯域fvを設定するような動作例を挙げて説明する。なお、ここでは、制御パラメータである位置ゲインKpは表1に示すように固定の値とし、変更しないような場合の例を挙げる。また、図5は、表1に示す各ステップでの設定値および各信号の様子を示したタイミングチャートである。
まず、例えば制御パラメータのマニュアル調整開始の時点において、表1のステップ1に示すような各制御パラメータの組み合わせで、各内部設定値が設定される。なお、この時点ではフィードバックループ104に発振は生じていないとして説明する。
次に、ステップ1に示す制御パラメータを設定した後、図5に示すように、時刻t1にて、ステップ2として、速度帯域fvの設定値を「400」から「500」へとさらに変更する。この段階でもフィードバックループ104には発振を生じていないので、さらに、時刻t2にて、ステップ3として、速度帯域fvの設定値を「500」から「520」に変更する。図5は、このように、例えば応答性をよくするため、ステップ3まで順次速度帯域fvの内部設定値を増やすことにより、フィードバックループ104の周波数帯域幅が広くなり、フィードバックループ104において発振が発生した様子を示している。すなわち、フィードバックループ104において発振が生じたため、図5に示すように、発振検知部105に供給される速度検出信号dvも振動することになる。これにより、振幅判定部121は、時刻t2を過ぎると、発振を検出したとする発振検知信号(Hレベル)を発振継続判定部122へと出力する。このため、図5に示すように、発振継続判定部122のカウンタの出力値は増加し、時刻t3においてカウンタの出力値が所定の値を超える。そして、発振継続判定部122は、この時点で発振を検知したとする発振検知信号(Hレベル)を出力し、これによって、発振検知部105からパラメータ操作部106へとこのような発振検知信号が通知される。
パラメータ操作部106は、パラメータ更新部117から出力される内部設定値が変化するたびに、その値を順次記憶している。パラメータ操作部106は、時刻t3において、発振検知信号の発振を検知したとする変化を受けて、パラメータ更新部117から出力される内部設定値が更新される以前の値、すなわち、速度帯域fvの更新前の値である「500」を、時刻t4においてパラメータ更新部117に対して出力する。さらに、パラメータ操作部106は、パラメータ更新部117に対して、更新前の値である「500」を選択し、出力するよう操作指示する。
その結果、パラメータ更新部117から出力される内部設定値は、「520」から再び「500」に戻る。これにより、フィードバックループ104の周波数帯域幅が狭くなり、図5に示すように、時刻t4以降、発振は収束し、これに伴ってカウンタの値も減少する。この後、時刻t5にて、発振継続判定部122は、発振が停止したとする発振検知信号(Lレベル)に切り替え、これによって一連の処理を完了する。すなわち、外部設定値として「520」を設定することで発振が生じた場合、最終的には表1のステップ4に示す通り、内部設定値としては「500」へと変更され、外部から速度帯域fvの設定値として「500」を入力したのと同様の状態に戻ることになる。
このように、例えば、マニュアル調整時などにおいて制御パラメータの設定値を負荷に応じた最適値へと変更するとき、本制御装置は、フィードバックループ104に発振が生じた場合、発振検知部105とパラメータ操作部106とパラメータ更新部116、117とによって、制御パラメータを更新する以前の値に戻す処理を自動的に行う。このため、本制御装置によれば、フィードバックループ104に生ずる発振を短時間で停止させることができる。さらに、発振を手動で停止させる必要がなく、また、制御パラメータの限界値も判るので、制御パラメータの調整作業をスムーズかつ短時間に行うことができる。
次に、表2に示すようなステップの順に従って、制御パラメータである速度帯域fvを設定するような動作例を挙げて説明する。ここでも、制御パラメータである位置ゲインKpは表2に示すように固定の値とした例を挙げる。また、図6は、表2に示す各ステップでの設定に応じて各信号の様子を示したタイミングチャートである。
まず、図6に示す時刻t2までにおいては、図5の場合と同様の処理が行われる。さらに、時刻t2にて、ステップ3として、速度帯域fvの設定値が「500」から「600」に変更される。これによって、図5の場合と同様に、フィードバックループ104の周波数帯域幅が広くなるためフィードバックループ104が発振し、図6に示すように、発振検知部105に供給される速度検出信号dvも振動することになる。
このような発振が生じたため、図6に示すように、発振継続判定部122のカウンタの出力値は増加し、時刻t3において、発振検知部105からパラメータ操作部106へと、発振を検知したとする発振検知信号(Hレベル)が通知される。パラメータ操作部106は、時刻t3においてこのような発振検知信号を受け、時刻t4において、パラメータ更新部117の出力値が更新される以前の値、すなわち、速度帯域fvの更新前の値である「500」をパラメータ更新部117に対して出力する。
その結果、パラメータ更新部117の出力値は再び「600」から「500」に戻る。ここで、図5の場合このような操作により発振が停止するような例を挙げたが、図6では、時刻t4以降も発振が引き続き継続するような場合を示している。すなわち、図6に示すように、時刻t4以降も速度検出信号dvが振動する。
このように発振が継続する場合、図6に示すように、カウンタの値は飽和レベルまで達するとともに、発振検知部105は発振を検知したとする発振検知信号を引き続き出力し続ける。パラメータ操作部106は、これを受けて、パラメータ更新部117の出力値が「500」に更新されるさらに以前の値、すなわち、速度帯域fvのさらに更新前の値である「400」を時刻t5においてパラメータ更新部117に対して出力する。
そうすると、フィードバックループ104の周波数帯域幅はさらに狭くなるので、図6に示すように、速度検出信号dvの振動は収束するとともに、カウンタの値も減少する。この後、時刻t6にて、発振継続判定部122は、発振が停止したとする発振検知信号(Lレベル)に切り替え、これによって一連の処理を完了する。すなわち、最終的には表2のステップ5に示す通り、外部から速度帯域fvの設定値として「400」を入力したのと同様の状態に戻る。
このように、制御パラメータの設定値を変更するとき、本制御装置は、フィードバックループ104に発振が生じた場合、制御パラメータを更新する以前の値に戻す処理を継続的かつ自動的に行う。このため、本制御装置によれば、フィードバックループ104に生ずる発振を短時間で停止させることができる。さらに、発振を手動で停止させる必要がなく、また、制御パラメータの限界値も判るので、制御パラメータの調整作業をスムーズかつ短時間に行うことができる。
次に、表3に示すようなステップの順に従って、制御パラメータである速度帯域fvおよび位置ゲインKpを設定するような動作例を挙げて説明する。ここでは、表3で示すように、まず、ステップ1で速度帯域fvを「400」、位置ゲインKpを「100」とする設定値に設定し、その後、ステップ2で速度帯域fvを「400」から「500」に更新し、ステップ3で位置ゲインKpを「100」から「80」に更新し、ステップ4で位置ゲインKpを「80」から「70」に更新している。また、ここまでの処理において、フィードバックループ104には発振が生じておらず、ステップ5で速度帯域fvが「500」から「560」に更新された時点において、発振が生じた場合の例を挙げて以下説明する。
まず、ステップ5において発振が生じたため、パラメータ操作部106は、パラメータ更新部117に対し、更新する以前の値である「500」を出力する。
その結果、パラメータ更新部117の出力値は、「560」から再び「500」に戻り、ステップ6に至るとともに、フィードバックループ104に生じていた発振が停止する。
このように、2種類の制御パラメータをそれぞれ変更する場合でも、本制御装置は、フィードバックループ104に発振が生じた場合、該当する制御パラメータを選択的に、更新する以前の値に戻す処理を自動的に行う。このため、本制御装置によれば、フィードバックループ104に生ずる発振を短時間で停止させることができる。さらに、発振を手動で停止させる必要がなく、また、制御パラメータの限界値も判るので、制御パラメータの調整作業をスムーズかつ短時間に行うことができる。
以上のように、本実施の形態におけるサーボモータの制御装置は、パラメータ更新部116、117が外部より入力された制御パラメータに更新して出力するとともに、発振検知部105がフィードバックループ104の発振を検知したとき、パラメータ操作部106は、制御パラメータの値を更新する以前の値に戻すように作用するので、フィードバックループ104に生ずる発振を短時間で停止させることができ、また、制御パラメータの調整作業をスムーズ、かつ短時間に行うことができるサーボモータの制御装置を実現することができる。
(実施の形態2)
図7は、本発明の実施の形態2におけるサーボモータの制御装置のブロック図である。実施の形態1との比較において、実施の形態2では、制御パラメータとしてのイナーシャJの設定値を外部から取り込み、この設定値に従って値を更新するパラメータ更新部118をさらに備える。また、パラメータ更新部116、パラメータ更新部117およびパラメータ更新部118により更新部が構成される。なお、図7において、図1と同じ構成要素については同一の符号を付しており、これらの詳細な説明は省略する。
図7において、パラメータ更新部118には、外部の上位器などからイナーシャJの設定値が供給される。パラメータ更新部118は、パラメータ操作部106の操作指示に従って、最適なイナーシャJの設定値を出力値として出力する。パラメータ更新部118から出力されたイナーシャJの出力値は乗算部115に供給される。これによって、制御パラメータとして、フィードバックループ内におけるイナーシャJの内部設定値が設定される。さらに、パラメータ更新部118から出力されたイナーシャJの内部設定値である出力値は、パラメータ操作部106にも供給される。
本実施の形態におけるパラメータ操作部106は、パラメータ更新部116およびパラメータ更新部117が出力する出力値に加えて、パラメータ更新部118が出力する出力値も入力し、それぞれの値が変更されるたびに各値を更新履歴として順次記憶する。さらに、パラメータ操作部106は、イナーシャJの値が更新された後に、発振検知部105からの発振検知信号により発振が検知されたと通知されると、更新する以前のイナーシャJの値をパラメータ更新部118に対して出力する。パラメータ更新部118は、それを受けて、出力するイナーシャJの出力値を更新する以前の値に戻す。
ところで、上述したように、速度ゲイン乗算部108における速度ゲインKvは、負荷102を含めたサーボモータ101のイナーシャJの設定値と速度帯域fvの設定値とが乗算部115で乗算された値として設定される。よって、イナーシャJの設定値は、前述の速度ゲインKvの値に影響を与え、フィードバックループ104の発振にも影響を与える。従って、イナーシャの設定値Jを更新したときにおいても、フィードバックループ104に発振を生じることもあり得る。イナーシャJの設定値は、速度帯域fvの設定値、位置ゲインKpの設定値等、他の制御パラメータと区別して扱われることが多いが、前述の理由から広義での制御パラメータの一部とみなすことができる。このため、本実施の形態では、イナーシャJの内部設定値の変更によりフィードバックループ104において発振が生じた場合、イナーシャJの内部設定値も、更新する以前の値に戻すような構成としている。
次に、以上のように構成された本実施の形態のサーボモータの制御装置について、具体例を挙げて、その動作を説明する。ここでは、表4で示すように、まず、ステップ1で速度帯域fvを「400」、位置ゲインKpを「100」、イナーシャJを「1.0」とする設定値に設定し、その後、ステップ2で速度帯域fvを「400」から「500」に更新し、ステップ3で位置ゲインKpを「100」から「80」に更新し、ステップ4でイナーシャ設定値Jを「1.0」から「1.2」に更新している。また、ここまでの処理において、フィードバックループ104には発振が生じておらず、ステップ5でイナーシャ設定値Jが「1.2」から「1.4」に更新された時点において、発振が生じた場合の例を挙げて以下説明する。
まず、ステップ5において発振が生じたため、発振検知部105は、発振を検知したとする発振検知信号をパラメータ操作部106に通知する。これに応答して、パラメータ操作部106はパラメータ更新部118に対し、更新する以前の値である「1.2」を出力する。
その結果、パラメータ更新部118の出力値は再び「1.4」から「1.2」に戻り、ステップ6に至るとともに、フィードバックループ104に生じていた発振が停止する。
このように3種類の制御パラメータをそれぞれ変更した場合でも、本制御装置は、フィードバックループ104に発振が生じた場合、発振検知部105とパラメータ操作部106とパラメータ更新部116、117、118とによって、該当する制御パラメータを選択的に、更新する以前の値に戻す処理を自動的に行う。このため、本制御装置によれば、フィードバックループ104に生ずる発振を短時間で停止させることができる。さらに、発振を手動で停止する必要がないので、制御パラメータの調整作業をスムーズかつ短時間に行うことができる。
(実施の形態3)
図8は、本発明の実施の形態3におけるサーボモータの制御装置のブロック図である。実施の形態1との比較において、実施の形態3では、パラメータ更新部116、117に代えて、パラメータ設定部130および剛性値更新部131を備える。また、パラメータ設定部130および剛性値更新部131により更新部が構成される。なお、図8において、図1と同じ構成要素については同一の符号を付しており、これらの詳細な説明は省略する。
また、本実施の形態では、外部の上位器などから、あらかじめ値の範囲が決定されている剛性設定値を選択して設定することで、負荷の剛性に応じた制御パラメータが設定可能な構成としている。すなわち、例えば、「0」から「7」までの8段階の剛性設定値をあらかじめ設けておき、剛性の低い負荷を駆動する場合には「0」、また剛性の高い負荷を駆動する場合には「7」とする。そして、例えば、上位器などから剛性設定値として「0」が設定された場合には、剛性の低い負荷を駆動するための制御パラメータがフィードバックループ104内に設定される。このような構成とすることにより、本制御装置の使用者は、制御パラメータなど意識せず、容易に、負荷に対応した制御パラメータを設定できる。
図8に示すように、本実施の形態の制御装置においては、フィードバックループ104における制御パラメータとしての位置ゲインKpおよび速度帯域fvが、パラメータ設定部130によって設定される。また、パラメータ設定部130が設定する各制御パラメータの値は、外部より入力される剛性設定値(以下、適宜、単に「剛性値」と呼ぶ)に従って決定される。このような剛性値は、剛性値更新部131を経由してパラメータ設定部130に供給される。すなわち、パラメータ設定部130は、剛性値に対しての位置ゲインKpおよび速度帯域fvの設定値を変換テーブルのような形式で記憶しており、ある剛性値が通知されると、それに対応した位置ゲインKpおよび速度帯域fvの設定値を出力する。
このような剛性値をパラメータ設定部130に供給するため、本実施の形態の制御装置は、剛性値を外部からの設定値に従って各値を更新する剛性値更新部131を備えるとともに、実施の形態1などと同様に、剛性値更新部131が出力する各出力値の更新履歴を記憶するパラメータ操作部106と、フィードバックループ104の発振を検知し、検知結果をパラメータ操作部106に通知する発振検知部105とを備えている。
剛性値更新部131には、外部の上位器などから、負荷の剛性に対応した制御パラメータを設定するための剛性値として、外部設定値が供給される。また、剛性値更新部131は、パラメータ操作部106の操作指示に従って、最適な設定値を選択し、選択した設定値を内部設定値として出力し、パラメータ設定部130に供給する。また、剛性値更新部131から出力された内部設定値は、パラメータ更新部116にも供給される。
パラメータ操作部106は、剛性値更新部131からの内部設定値を入力し、それぞれの値が変更されるたびに各値を更新履歴として順次記憶する。さらに、パラメータ操作部106には、発振検知部105から、フィードバックループ104においての発振を検知したかどうかを示す発振検知信号が通知される。
パラメータ操作部106は、この発振検知信号が発振を検知したことを示すとき、最後に更新された剛性値の値が、更新された以前の値に戻るように、剛性値更新部131に対し、更新された以前の値を供給する。さらに、このとき、パラメータ操作部106は、操作指示信号dmにより剛性値更新部131に対し、このように供給した以前の値を選択し、出力するような操作指示を通知する。これに応答して、剛性値更新部131は、その値を保持するとともに、その値を内部設定値として出力する。
一方、パラメータ操作部106は、発振検知信号が発振を検知したことを示さないときには、操作指示信号dmにより剛性値更新部131に対して、外部設定値をそのまま内部設定値として出力するよう操作指示する。すなわち、発振検知信号が発振を検知したことを示さないときには、外部設定値がそのまま内部設定値としてパラメータ設定部130に供給される。
このように、本実施の形態の制御装置は、発振検知部105によりフィードバックループ104における発振が検知されると、パラメータ操作部106による剛性値更新部131への操作により、剛性値が一つ手前の設定値となるように、後戻りして設定され、これによって、フィードバックループ104における制御パラメータの内部設定値も一つ手前の設定値となるように、後戻りして設定されることを特徴としている。すなわち、本実施の形態の制御装置は、発振検知信号が発振を検知したことを示すとき、パラメータ操作部106の操作指示に応じて、剛性値更新部131が、最後に更新して設定した剛性値を以前の剛性値へと戻し、この戻した剛性値をパラメータ設定部130に供給する。
図9は、図8の要部の詳細な構成を示すブロック図である。図9に示すように、剛性値更新部131は、設定値保存部125および出力値決定部128を有している。また、パラメータ操作部106は、設定値更新検知部126および旧値保存部127を有している。設定値保存部125は、外部からの剛性設定の入力値を一旦保存して出力値決定部128に出力する。設定値更新検知部126は、入力された剛性設定の入力値と剛性値更新部131の出力値とを比較して値が変化したことを検知すると、出力値決定部128に対して、入力された剛性値を更新して出力するように指令する。それと同時に、設定値更新検知部126は、旧値保存部127に対して、出力値決定部128が出力していた更新する前の値を保存するように指令する。そして、発振検知部105がフィードバックループ104の発振を検知したときには、出力値決定部128は、旧値保存部127に保存されている更新する前の値を取り込み、出力する。その場合、出力値決定部128の出力値は再び設定値保存部125に入力され、設定値保存部125に保存されている値は出力値決定部128の出力値に書き換えられる。これは、剛性値更新部131の出力する更新した剛性値が剛性表示として、外部からその値を確認できるようにするためである。
次に、以上のように構成された本実施の形態のサーボモータの制御装置について、具体例を挙げて、その動作を説明する。
図8において、マニュアル調整時など外部より手動で設定される剛性値には、通常、上述したように整数が割り当てられる。ここでの動作例については、外部より設定される剛性値、すなわち剛性値として、「0」から「7」までの8種類の値が割り当てられる一例を挙げて説明する。
また、剛性値に対応したフィードバックループ104の周波数帯域fsが割り当てられ、さらに、この周波数帯域fsに対応して、Kv/J、Kpの各値が決められる。ここで、Kvは速度ゲイン、Kpは位置ゲイン、Jはモータ101と負荷102との両方を含めた慣性モーメントであるイナーシャを表している。Kv/Jとfsの間には、Kv/J=2πfs(πは円周率を示す)の関係が成り立つ。また、フィードバックループ104の応答減衰係数を1とすると、Kp=1/4・Kv/Jの関係が成り立つ。また、フィードフォワードゲインKfは、速度指令に対するフィードバックループ104の応答性の観点から、通常0.3程度の値が用いられる。従って、制御パラメータのテーブル、すなわちバランスの取れた標準的な制御パラメータの組み合わせとしては、例えば、表5に示すようになる。
剛性値「0」から「7」までの値に対して、それぞれに対応するフィードバックループ104の周波数帯域fsが割り当てられているので、結果として、剛性値「0」から「7」までの値に対して、Kv/J、Kp、Kfの各値が決まることを表5が示している。従って、慣性モーメントJの大きさが決まれば、剛性設定の各値について制御パラメータの全ての値が周波数帯域fsに対する最適値として決まることになる。その後、各制御パラメータの値はフィードバックループ104に内包される速度ゲイン乗算部108、位置ゲイン乗算部109、フィードフォワードゲイン乗算部110のそれぞれ対応する演算部に転送される。また、表5の剛性値と周波数帯域fsとの比較で判るように、剛性値が高いほど、フィードバックループ104の周波数帯域fsが広くなり、速度指令の入力に対して優れた応答性、あるいは追従性が得られる。
なお、慣性モーメントであるイナーシャJの値については、サーボモータの制御装置それぞれについて、手動で入力したり、あるいは自動的に推定したりすることで決められるが、ここではイナーシャJの値については正しい値が設定されているとして説明する。
図10は、本実施の形態の制御装置の一動作例を説明するためのタイミングチャートである。まず、図10に示すように、初期値「3」とする剛性値が設定されており、時刻t1にて「5」に変更される場合の動作について説明する。なお、剛性値およびそれに対応した制御パラメータは表5に示した各値を用いる。また、発振検知部105として、図3で示したような発振継続判定部122が上述のようなカウンタを備えた一例を用いる。
まず、図10に示すように、時刻t1までにおいては、初期値「3」とする剛性値が設定されており、このとき、速度検出信号dvは振動しておらず、フィードバックループ104に発振は生じていない。
次に、時刻t1になると、外部から剛性値「5」が供給され、設定値保存部125の値も「3」から「5」になる。設定値更新検知部126は、この値の変化を検出し、出力値決定部128に対して設定値保存部125の出力値を出力するように指令する。さらに、設定値更新検知部126は、旧値保存部127に対して、出力値決定部128の出力する更新する前の出力値を保存するように指令する。これにより、図10に示すように、時刻t1以降は、旧値保存部127の値は「3」となる。
このようにして、設定値保存部125の出力値はパラメータ設定部130に供給され、制御パラメータの値が剛性値「3」に対応する値から剛性値「5」に対応する値に変更される。図10では、このような剛性値の変更により、時刻t1を過ぎると、フィードバックループ104の周波数帯域fsが広くなり、速度検出信号dvが振動を開始するような場合を示している。このような発振が生じると、図10に示すように、発振検知部105における発振継続判定部122のカウンタの出力値は増加し、時刻t2において、発振検知部105からパラメータ操作部106へと、発振を検知したとする発振検知信号(Hレベル)が通知される。パラメータ操作部106は、時刻t3においてこのような発振検知信号を受け、出力値決定部128に対して、旧値保存部127に保存されている更新する前の剛性値「3」を取り込み、出力するよう操作指示する。出力値決定部128は、これを受けて、旧値保存部127から取り込んだ更新する前の剛性値「3」を時刻t3で出力する。
その結果、出力値決定部128からパラメータ設定部130に対して供給される内部設定値は、剛性値「5」から「3」に戻る。これにより、フィードバックループ104の周波数帯域幅が狭くなり、図10に示すように、時刻t3以降、発振は収束し、これに伴ってカウンタの値も減少する。この後、時刻t4にて、発振継続判定部122は、発振が停止したとする発振検知信号(Lレベル)に切り替え、これによって一連の処理を完了する。すなわち、外部設定値として剛性値「5」を設定することで発振が生じた場合、最終的には図10に示す通り、内部設定値としては剛性値「3」へと変更され、外部から剛性値として「3」を入力したのと同様の状態に戻ることになる。
このように剛性値を高い値に変更したとしても、フィードバックループ104に発振が生じた場合、剛性値を更新する以前の値に戻す処理を自動的に行うので、フィードバックループ104に生ずる発振を短時間で停止させることができ、かつ、剛性値を調整する作業をスムーズに行うことができる。
図11は、本実施の形態の制御装置の他の動作例を説明するためのタイミングチャートである。次に、図11に示すように、初期値「4」とする剛性値からスタートした場合の動作について説明する。また、図11では、時刻t1以前はフィードバックループ104が休止状態にあり、時刻t1にてフィードバックループ104が能動状態として機能し始めて、このとき、フィードバックループ104に発振が生じるような場合を示している。
時刻t2になると、図11に示すように、発振検知部105はフィードバックループ104の発振を検知する。この場合、剛性値はこの時刻まで一度も変更していないので、更新する以前の剛性値は初期値である「4」とみなす。
従って、剛性値更新部131の現在の出力値は更新する以前の出力値と等しい値であり、更新する以前の出力値の方が低いということはないので、この場合、現在の出力値よりも階数「1」だけ低い剛性に対応する値を出力するように動作する。すなわち、図11に示す発振を検出したとする発振検知信号(Hレベル)を受けて、出力値決定部128は、初期値の「4」から階数「1」だけ低い剛性に対応する値である「3」へと更新した出力値として時刻t3に出力する。この場合は、旧値保存部127の値も図11に示すように時刻t3にて同じ値である3に設定される。
その結果、フィードバックループ104の周波数帯域fsの帯域幅が狭くなり、時刻t3以降、発振は収束し、これに伴ってカウンタの値も減少し、一連の処理を完了する。また、出力値決定部128の出力値は設定値保存部125に入力され、設定値保存部125は、保存されている剛性値を初期値の「4」から「3」に書き換える。すなわち、外部から剛性値として「3」を入力したのと同様の状態となる。
このように、発振検知部105がフィードバックループ104の発振を検知したときに、剛性値更新部131が現在の更新した出力値と更新する以前の出力値とを比較し、更新する以前の出力値の方が高い剛性に対応する値である場合、または、現在の更新した出力値と更新する以前の出力値とが等しい値である場合には、その出力値を現在の更新した出力値よりも所定の階数だけ低い剛性に対応する値に更新するような構成とすることにより、剛性値の初期値を設定した場合などにおいて発振が生じた場合であっても、剛性値を所定の階数だけ低い剛性に対応する値に更新する処理を自動的に行うので、フィードバックループ104に生ずる発振を短時間で停止させることができ、かつ、剛性値を調整する作業をスムーズに行うことができる。
図12は、本実施の形態の制御装置のさらに他の動作例を説明するためのタイミングチャートである。次に、図12に示すように、初期値「5」とする剛性値からスタートした場合の動作について説明する。図12でも、時刻t1以前はフィードバックループ104が休止状態にあり、時刻t1にてフィードバックループ104が能動状態として機能し始めて、このとき、フィードバックループ104に発振が生じるような場合を示している。
時刻t2になると、図12に示すように、発振検知部105はフィードバックループ104の発振を検知する。この場合も、剛性値はこの時刻まで一度も変更していないので、更新する以前の剛性値は初期値である「5」とみなす。
従って、剛性値更新部131の現在の出力値は更新する以前の出力値と等しい値であり、更新する以前の出力値の方が低いということはないので、この場合、現在の出力値よりも階数1だけ低い剛性に対応する値を出力するように動作する。すなわち、時刻t3において、出力値決定部128は、初期値の「5」から階数「1」だけ低い剛性に対応する値である「4」を更新した出力値として出力する。また、旧値保存部127の値も、時刻t3にて、同じ値である「4」に設定される。
図12では、出力値がこのように更新されても発振が引き続き継続するような場合を示している。すなわち、出力値が更新された結果、フィードバックループ104の周波数帯域fsの帯域幅が若干狭くなるが、まだ十分低いレベルではないので、時刻t3以降も、速度検出信号dvは振動し、発振は引き続き継続している。また、カウンタの値は飽和レベルに達し、発振継続判定部122は発振を示すHレベルの値を引き続き出力し続ける。
この場合、剛性値更新部131の現在の出力値は更新する以前の出力値より低い剛性に対応する値なので、現在の出力値よりもさらに階数「1」だけ低い剛性に対応する値を出力するように動作する。すなわち、時刻t4において、出力値決定部128は、現在の出力値の「4」からさらに階数「1」だけ低い剛性に対応する値である「3」を更新した出力値として出力する。また、旧値保存部127の値も時刻t4にて同じ値である「3」に設定される。
そうすると、フィードバックループ104の周波数帯域fsの帯域幅がさらに狭くなるので、図12に示すように、速度検出信号dvの振動は収束し、カウンタの値も減少し、一連の処理を完了する。また、出力値決定部128の出力する値は設定値保存部125に入力され、保存されている剛性値を「3」に書き換える。すなわち、外部から剛性値として「3」を入力したのと同様の状態となる。
このように、発振検知部105がフィードバックループ104の発振を検知したときに、剛性値更新部131が現在の更新した出力値と更新する以前の出力値とを比較し、更新する以前の出力値の方が高い剛性に対応する値である場合、または、現在の更新した出力値と更新する以前の出力値とが等しい値である場合には、その出力値を現在の更新した出力値よりも所定の階数だけ低い剛性に対応する値に更新するような構成とすることにより、剛性値の初期値を設定した場合などにおいて発振が生じた場合であっても、発振が停止するまで、剛性値を所定の階数づつ低い剛性に対応する値に更新する処理を自動的に行うので、フィードバックループ104に生ずる発振を短時間で停止させることができ、かつ、剛性値を調整する作業をスムーズに行うことができる。
ところで、図12に示したような動作例の場合、剛性値が初期値「5」からスタートしており、剛性値更新部131の出力値は「5」から「4」へ更新し、さらに、「4」から「3」へ更新するという2段階を経由している。このため、最終的にフィードバックループ104の発振が停止するまで、図11に示した動作例の場合と比べて、若干の時間を要している。従って、図12に示したような動作例の場合は、この発振が負荷102に与える損傷の度合いが、若干増していると言える。
例えば、電源投入時など、フィードバックループ104が休止状態から能動状態に変化したときは、負荷102の入れ替えを行った直後である可能性もあり、その場合、負荷102の剛性や慣性モーメントが変化している。このため、剛性値が最適値から大幅にずれている可能性がある。このような場合、図12に示した動作例のように剛性値更新部131の出力値が段階的に更新されと、結果として、最終的に発振が停止するまでに要する時間が比較的長くなり、その発振が負荷102に与える損傷の度合いが大きくなる懸念がある。
図13は、本実施の形態の制御装置のさらに他の動作例を説明するためのタイミングチャートである。図13においては、図12に示した動作例と比べて、発振が停止するまでに要する時間を抑制するような動作例を挙げている。前述の説明では、剛性値更新部131の出力値の更新する以前の値、すなわち、旧値保存部127の値を剛性値の初期値と同一値の「5」とみなしていたが、図13では、フィードバックループ104の発振が確実に停止すると予想される所定の剛性に対応する値を設定するような方法に基づいた動作例を示している。
図12の場合、時刻t1においては、旧値保存部127の出力値が「5」であったが、図13に示すように、ここでの動作例では、旧値保存部127の出力値を「3」としている。これは前述のようにフィードバックループ104の発振が確実に停止すると予想される所定の剛性に対応する値として「3」が設定されているためである。
時刻t2において、発振検知部105がフィードバックループ104の発振を検出する。このとき、剛性値更新部131の出力値は更新する以前の値の方が低い剛性に対応する値となっている。従って、図13に示すように、時刻t3にて、剛性値更新部131の出力値は「5」から「3」に更新される。その結果、フィードバックループ104の周波数帯域fsの帯域幅が十分狭くなるので、図13に示すように時刻t3にて発振は収束し始める。
このように、本実施の形態では、フィードバックループが休止状態から能動状態に変化したときに、剛性値更新部は更新する以前の出力値としてフィードバックループの発振が確実に停止すると予想される所定の剛性に対応する値を設定するような構成としている。これより、剛性値の初期値が高い値において、フィードバックループ104が休止状態から能動状態に変化したとしても、フィードバックループ104に発振が生じた場合、本実施の形態の制御装置は、剛性値を所定の剛性に対応する値に更新する処理を自動的に行う。このため、フィードバックループ104に生ずる発振を最小限の短時間で停止させることができ、負荷102に与える損傷を最小限に抑えることができる。
図14は、本実施の形態の制御装置のさらに他の動作例を説明するためのタイミングチャートである。次に、図14に示すように、剛性値が初期値「3」から時刻t1にて剛性値「5」に設定され、その後、時刻t3までフィードバックループ104に発振が生じず、時刻t3にて初めて発振が生じるような場合の動作例について説明する。また、ここでは、時刻t1から時刻t3までの時間は比較的長く、例えば5秒であったとする。
図14に示すように、旧値保存部127の出力値は、時刻t1における値が「3」である。その後、時刻t1から所定の時間(例えば2秒)を経過した時刻t2において、設定値更新検知部126は、旧値保存部127に対し、剛性値更新部131の出力値を保存するように指令する。従って、時刻t2においては、旧値保存部127の出力値は、「3」から「5」に変わる。
その後、図14に示すように、時刻t3にてフィードバックループ104に発振が生じ、時刻t4にて発振検知部105がこの発振を検知する。このとき、旧値保存部127の値が「5」であるので、剛性値更新部131の更新する以前の出力値は「5」であるとみなされる。従って、この後は図11にて説明したのと同様の動作となり、剛性値更新部131の出力値は、時刻t5にて階数「1」だけ低い剛性に対応した値である「4」となり、時刻t6にてフィードバックループ104の発振が停止する。
図14に示したように時刻t1から時刻t3までの比較的長い時間、フィードバックループ104に発振が生じていないということは、時刻t1において剛性値として設定された値である「5」が、モータ101の負荷102に対応する剛性値として最適値に近い可能性が高い。従って、その後、たとえフィードバックループ104に発振が生じたとしても、このような場合、剛性値更新部131の出力値は更新する以前の値である「3」に戻すのではなく、現在の出力値よりも階数「1」だけ低い剛性に対応した値である「4」に更新して出力した方がより剛性値として最適値に近い可能性が高く、望ましいと言える。
このように、剛性値を更新してから所定の時間を経過後にフィードバックループ104に発振が生じた場合でも、本実施の形態の制御装置は、剛性値を最適値に更新する処理を自動的に行うので、フィードバックループ104に生ずる発振を短時間で停止させることができ、かつ、剛性値を調整する作業をスムーズに行うことができる。
なお、本実施の形態においては、剛性値更新部131の更新する以前の出力値が更新された出力値よりも低い剛性に対応する値ではなかった場合、現在の出力値よりも階数「1」だけ低い剛性に対応した値に更新して出力すると説明したが、階数「1」以上低い剛性に対応した値、例えば、階数「2」だけ低い剛性に対応した値に更新して出力した場合の方が、フィードバックループ104に生じた発振を素早く停止可能な場合も考えられる。従って、この場合、制御装置への要求に応じて動作を選択するのが望ましい。
以上のように、剛性値更新部131が入力された剛性値に更新して出力すると同時に発振検知部105がフィードバックループ104の発振を検知したときに、その出力値を自動的に最適値に更新するという動作を行うことで、フィードバックループ104に生ずる発振を短時間で停止させることができ、かつ、剛性値を調整する作業をスムーズに行うことができるサーボモータの制御装置を実現することができる。
(実施の形態4)
図15は、本発明の実施の形態4におけるサーボモータの制御装置のブロック図である。実施の形態3との比較において、実施の形態4では、さらに、ノッチフィルタ141および中心周波数調整部142を備える。なお、図15において、図8と同じ構成要素については同一の符号を付しており、これらの詳細な説明は省略する。
本実施の形態において、速度ゲイン乗算部108から出力された回転制御信号は、第1のノッチフィルタ141に供給される。ノッチフィルタ141は、中心周波数とする周波数を中心に所定の帯域幅の信号成分を遮断するよう動作する。さらに、ノッチフィルタ141は、その中心周波数を外部からの指令によって可変する機能を備えている。本実施の形態では、このように特定の周波数の成分が除去された回転制御信号がノッチフィルタ141から出力され、この回転制御信号に対応した駆動信号がモータ101に供給される。
図16Aおよび図16Bは、ノッチフィルタ141の周波数伝達特性を示す図であり、図16Aは中心周波数が100Hzの場合、図16Bは中心周波数が1000Hzの場合を示している。ノッチフィルタ141は、外部からの指令によって、遮断する中心周波数が例えば図16A、Bに示すように100Hzから1000Hzまでの範囲で可変できる。
また、中心周波数調整部142には、微分演算部111から速度検出信号dvが供給される。中心周波数調整部142は、供給された速度検出信号dvを利用して中心周波数調整信号dcを生成し、ノッチフィルタ141に対して出力する。ノッチフィルタ141は、この中心周波数調整信号dcによって遮断する中心周波数が調整される。
図17は、中心周波数調整部142の詳細な構成を示すブロック図である。図17において、微分演算部111から供給された速度検出信号dvは、ハイパスフィルタ143に供給される。ハイパスフィルタ143は、速度検出信号dvにおいて、所定の周波数よりも低い信号成分を遮断し、高い周波数の信号成分のみを抽出して出力する。ハイパスフィルタ143から出力された高い周波数の信号成分は、第2のノッチフィルタ144に供給される。ノッチフィルタ144は、ノッチフィルタ141と同一の特性と機能を備えており、外部より指令された中心周波数で所定の周波数成分を遮断して出力する。ノッチフィルタ144から出力された信号は、ノッチ中心周波数修正部145に供給される。ノッチ中心周波数修正部145は、ノッチフィルタ144から出力された信号の振幅が最も小さくなるように、ノッチフィルタ144の中心周波数を指令するための中心周波数調整信号dcを、ノッチフィルタ144に出力する。そして、この中心周波数調整信号dcがノッチフィルタ141に供給される。
このように構成されたノッチフィルタ141と中心周波数調整部142とは、フィードバックループ104に発振が生じ、速度検出信号dvに振動が生じたときに、この振動の周波数成分を遮断するようにノッチフィルタ141の中心周波数を自動的に調整し、フィードバックループ104に生じた発振を停止させるように作用する。
次に、以上のように構成された本実施の形態のサーボモータの制御装置について、具体例を挙げて、その動作を説明する。
図18は、本実施の形態の制御装置の一動作例を説明するためのタイミングチャートである。まず、図18に示すように、初期値「3」とする剛性値が設定されており、時刻t1にて「5」に変更される場合の動作について説明する。なお、剛性値およびそれに対応した制御パラメータは表5に示した各値を用いる。また、発振検知部105として、図3で示したような発振継続判定部122が上述のようなカウンタを備えた一例を用いる。
まず、図18に示すように、時刻t1までにおいては、初期値「3」とする剛性値が設定されており、このとき、速度検出信号dvは振動しておらず、フィードバックループ104に発振は生じていない。
次に、時刻t1になると、外部から剛性値「5」が供給され、設定値保存部125の値も「3」から「5」になる。図18では、このような剛性値の変更により、時刻t1を過ぎると、フィードバックループ104の周波数帯域fsの帯域幅が広くなり、速度検出信号dvが振動を開始するような場合を示している。
このような速度検出信号dvは、中心周波数調整部142にも入力される。ノッチフィルタ144は、この速度検出信号dvの周波数を遮断するように、すなわち、ノッチフィルタ144の中心周波数が、この振動する速度検出信号dvの周波数と一致するようにノッチ中心周波数修正部145はその出力信号を調整して出力する。そして、中心周波数調整部142の出力する中心周波数調整信号dcは、ノッチフィルタ141に対し、その中心周波数をノッチフィルタ144の中心周波数と一致させるように指令するため、フィードバックループ104の発振を停止させるように作用する。
その結果、時刻t2において、フィードバックループ104の発振が停止すると、アップカウントしていたカウンタは、時刻t2にてダウンカウントを開始する。すなわち、カウンタは、発振継続判定部122が発振の発生を判定する所定の値に到達する前にダウンカウントを開始するため、発振継続判定部122は、発振を検出したとするHレベルの値を出力することなく、Lレベルの値を出力し続けている。
よって、図18に示すように、剛性値更新部131の出力値は、時刻t2以降も剛性値「5」を維持し続ける。
一方、中心周波数調整信号dcによってノッチフィルタ141の中心周波数を調整した結果、フィードバックループ104の発振が停止しない場合もあり得る。例えば、発振の周波数がノッチフィルタ141の中心周波数の可変範囲から外れているような場合、あるいは速度ゲインKvの値が大き過ぎるような場合である。このような場合は、実施の形態3において図10で示したように、発振継続判定部122は、Hレベルの値を出力し、剛性値更新部131の出力値を剛性値「5」から再び剛性値「3」に戻すことによって、フィードバックループ104の発振を停止させることになる。
なお、前述のように発振継続判定部122内部のカウンタの値が所定の値に達するには所定の時間が必要である。この所定の時間を、中心周波数調整部142がノッチフィルタ141の中心周波数を調整するのに要する時間(例えば200msec)よりも長くすることによって、中心周波数調整部142がノッチフィルタ141の中心周波数を調整している間、剛性値更新部131がその出力値を更新しないようにすることができる。これによって、ノッチフィルタ141の作用によって発振が停止した場合は、剛性値更新部131の出力値は現在の剛性値を維持し、ノッチフィルタ141の作用によって発振が停止しなかった場合は、剛性値更新部131の出力値は現在の剛性値から再び更新する以前の剛性値に戻し、このようにして、フィードバックループ104の発振を停止させるという動作が可能である。
また、この場合、剛性値「3」よりも剛性値「5」の方が、フィードバックループ104の周波数帯域fsの帯域幅が広いので、速度指令に対する応答性が良く望ましい。すなわち、実施の形態3に比べて本実施の形態の方が、高い剛性値を維持する可能性があるため、速度指令に対する応答性も望ましいか、もしくは同等の応答性を示すことになる。
また、本実施の形態においては、前述のようにノッチフィルタ141の中心周波数を調整するのに要する時間を一定時間として見積もったが、中心周波数を調整する処理を観測し、この処理が見積もった時間よりも早期に終了した場合は、見積もった時間まで待たずに、剛性値更新部131の出力値を現在の剛性値から再び更新する以前の剛性値に戻してフィードバックループ104の発振を停止させるという動作も可能である。この方がフィードバックループ104の発振をより早期に停止させることができるので望ましい。
このようにフィードバックループ104の発振を抑制するためのノッチフィルタ141とその中心周波数を調整する中心周波数調整部142とを備えた場合においても、フィードバックループ104に発振が生じた場合、本実施の形態の制御装置は、剛性値を現在の値のまま維持するか、もしくは更新する以前の値に戻すかの処理を適切かつ自動的に行うので、フィードバックループ104に生ずる発振を短時間で停止させることができ、かつ、剛性値を調整する作業をスムーズに行うことができる。
(実施の形態5)
図19は、本発明の実施の形態5におけるサーボモータの制御装置のブロック図である。実施の形態3との比較において、実施の形態5では、モータ101を含めた負荷102の慣性モーメントであるイナーシャJを推定および設定する機能を有したことを特徴としている。このような機能を実現するため、本実施の形態における制御装置は、実施の形態3で説明した構成に加えて、さらに、イナーシャ設定部152、イナーシャ推定部153および微分演算部154を備える。なお、図19において、図8と同じ構成要素については同一の符号を付しており、これらの詳細な説明は省略する。
図19において、第1の微分演算部111から出力された速度検出信号dvは、第2の微分演算部154に供給される。微分演算部154は、供給された速度検出信号dvに対してさらに微分演算を行い、モータ101の回転加速度に対応した加速度検出信号を出力する。加速度検出信号は、イナーシャ推定部153に供給される。
イナーシャ推定部153には、加速度検出信号とともに、速度ゲイン乗算部108から出力されたトルク指令に対応する回転制御信号も供給される。イナーシャ推定部153は、これら2種類の信号に基づき、モータ101を含む負荷102の慣性モーメントを推定し、イナーシャ推定値として出力する。
イナーシャ設定部152には、イナーシャ推定値とともに、外部の上位器などから設定されるイナーシャJの設定値であるイナーシャ値が供給される。イナーシャ設定部152は、イナーシャ推定部153からのイナーシャ推定値が有効なときは、そのイナーシャ推定値をイナーシャ設定値として出力する。また、イナーシャ設定部152は、イナーシャ推定値が有効でないときには、外部からのイナーシャJ値をイナーシャ設定値として出力する。なお、このイナーシャ設定値は、外部の上位器などに通知され、外部に上位器などにおいて表示されるような構成としてもよい。
ここで、イナーシャ推定部153がモータ101を含む負荷102の慣性モーメントを推定可能なのは、次の原理に基づく。すなわち、モータ101および負荷102の慣性モーメントをJL、モータ101の回転加速度をβ、サーボモータ101に与えられるトルクをTで表したとき、物理法則として、T=JL×βの関係が成り立つ。イナーシャ推定部153は、このような原理に基づき、回転加速度βに対応した加速度検出信号とトルクTに対応した回転制御信号との2種類の信号から慣性モーメントJLを推定している。より具体的には、逐次最小自乗法などの手法を用いてイナーシャを推定することが可能である。
また、イナーシャ推定部153は、動作原理上、モータ101がある程度以上の加減速を伴ってある程度以上の時間、回転しなければモータ101を含む負荷102の慣性モーメントの値を正確に推定することはできない。従って、イナーシャ推定部153がモータ101を含む負荷102の慣性モーメントの値を推定するまでの間は、イナーシャ推定値の代わりに、仮の値としてイナーシャ初期設定値を用いる必要がある。そのため、本実施の形態では、イナーシャ設定部152が、イナーシャ推定値が有効となる以前は、外部からのイナーシャJの設定値をイナーシャ初期設定値として出力し、イナーシャ推定値が有効となった後は、その値をイナーシャ設定値として出力するというような構成としている。
また、このような構成とした場合、イナーシャ初期設定値としては、モータ101を含む負荷102の慣性モーメントとして、実際の値に近い値と思われる値が設定されることが一般的である。ところが、イナーシャ初期設定値と実際の慣性モーメントの値あるいはイナーシャ推定値にずれが生じている場合があり、その場合は、イナーシャ推定値が有効となる前後において、速度ゲインKvの値が変化することになる。
例えば、イナーシャ初期設定値が実際の慣性モーメントの値に対して1/2の値であり、イナーシャ推定値が実際の慣性モーメントの値に等しい値となったとする。この場合、イナーシャ推定値が有効となる前後において、速度ゲインKvの値が2倍に増加することになる。このように、イナーシャ初期設定値がイナーシャ推定値よりも小さい値であった場合、速度ゲインKvの値が増加することになる。イナーシャ推定値が有効となる前後において、実際の慣性モーメントの値に変化がないとすると、速度ゲインKvの値が増加した分だけ、フィードバックループ104の実際の周波数帯域幅が増加することになる。従って、イナーシャ推定値が有効となった後にフィードバックループ104に発振が生じる可能性がある。
このため、本実施の形態においても、発振検知部105、パラメータ操作部106および剛性値更新部131を備えた構成とし、これにより、フィードバックループ104に生じた発振を自動的かつ速やかに停止させている。
以上のように構成されたサーボモータの制御装置について、具体例を挙げて、その動作を説明する。
図20は、本実施の形態の制御装置の一動作例を説明するためのタイミングチャートである。
図20では、剛性値更新部131の出力値とともに、イナーシャ設定値と実際の慣性モーメントの値の比、およびフィードバックループ104の実際の周波数帯域幅の値(単位はHz)などを示している。フィードバックループ104の実際の周波数帯域幅fsrを示す値は、イナーシャ設定値をJs、実際の慣性モーメントの値をJrとすると、周波数帯域設定値fsに対して、fsr=fs×(Js/Jr)となる。また、剛性値およびそれに対応した制御パラメータは表5に示した各値を用いる。発振検知部105としては、図3で示したような発振継続判定部122が上述のようなカウンタを備えた一例を用いる。
図20において、時刻t1以前では、イナーシャ推定値が有効でなく、イナーシャ初期設定値、すなわちこの時点のイナーシャ設定値Jsが実際の慣性モーメントの値Jrの0.4倍となるような一例を挙げている。周波数帯域設定値fsの値は、表5から剛性値「4」に対して100(Hz)であるから、実際の周波数帯域幅fsrは、fsr=100×0.4=40(Hz)となる。
時刻t1で、イナーシャ推定値が有効となり、イナーシャ設定部の出力値と実際の慣性モーメントの値が等しい、すなわち両者の比が1.0になる。この場合は、実際の周波数帯域幅fsrは、fsr=100×1.0=100(Hz)となる。また、このように、フィードバックループ104の実際の周波数帯域幅が広くなったので、時刻t1においてフィードバックループ104に発振が生じる。
このような発振が生じると、図20に示すように、発振検知部105における発振継続判定部122のカウンタの出力値は増加し、時刻t2において、発振検知部105からパラメータ操作部106へと、発振を検知したとする発振検知信号(Hレベル)が通知される。
パラメータ操作部106は、このような発振検知信号(Hレベル)の通知を受け、剛性値更新部131に対して次のような操作指示を行う。すなわち、剛性値更新部131は、この操作指示を受けて、出力する剛性値を現在の剛性値「4」から所定の階数だけ低い(この場合は階数=「2」)剛性値「2」を時刻t3で出力する。
その結果、周波数帯域設定値fsが狭くなり、図20に示すように、フィードバックループ104の実際の周波数帯域幅fsrも、fsr=30×1.0=30(Hz)となる。これによって、発振は収束し、これに伴ってカウンタの値も減少する。この後、時刻t4にて、発振継続判定部122は、発振が停止したとする発振検知信号(Lレベル)に切り替え、これによって一連の処理を完了する。すなわち、最終的には図20に示す通り、内部設定値としては剛性値「2」へと変更され、外部から剛性値として「2」を入力したのと同様の状態に戻ることになる。
すなわち、本実施の形態の制御装置は、イナーシャ推定値が有効となった後に、発振検知信号が発振を検知したことを示すとき、パラメータ操作部106の操作指示に応じて、剛性値更新部131は、剛性値を現在の値よりも所定の階数だけ低い剛性に対応する値に切り替え、この切り替えた値をパラメータ設定部130に供給する構成である。
このようにイナーシャ設定部152の出力するイナーシャ設定値が増加することにより、フィードバックループ104の実際の周波数帯域幅が増大し、フィードバックループ104に発振が生じた場合、本実施の形態の制御装置は、剛性値を所定の階数だけ低い剛性に対応する値に更新する処理を自動的に行うので、フィードバックループ104に生ずる発振を短時間で停止させることができ、負荷102に与える損傷を最小限に抑えることができる。
なお、ここでの所定の階数は、その値が小さ過ぎればフィードバックループ104に生じた発振が停止するまで前述の一連の動作を繰り返すために時間が掛かり、逆にその値が大き過ぎればフィードバックループ104に生じた発振が短時間で確実に停止する可能性が高くなる一方、その後、剛性値を外部より手動にて再調整する必要が生じるため、両者の利点と欠点を考慮し適切な値を設定することが必要である。
図21は、本実施の形態の制御装置の他の動作例を説明するためのタイミングチャートである。次に、図21に示すように、初期値「3」とする剛性値からスタートした場合の動作について説明する。また、図20の場合と同様に、時刻t1以前では、イナーシャ推定値が有効でなく、イナーシャ初期設定値すなわちこの時点のイナーシャ設定値Jsが実際の慣性モーメントの値Jrの0.4倍であるような場合を示している。周波数帯域設定値fsの値は、表5から剛性値「3」に対して60(Hz)であるから、フィードバックループ104の実際の周波数帯域幅fsrは、fsr=60×0.4=24(Hz)となる。
時刻t1になると、イナーシャ推定部153の出力値が有効となり、イナーシャ設定部152の出力値であるイナーシャ設定値と実際の慣性モーメントの値が等しい、すなわち両者の比が1.0になる。この場合は、フィードバックループ104の実際の周波数帯域幅fsrは、fsr=60×1.0=60(Hz)となる。図20のように剛性値が「4」からスタートした場合では、時刻t1にてすぐにフィードバックループ104に発振が生じたが、この場合は、実際の周波数帯域幅fsrが、fsr=60(Hz)と比較的狭く、発振が励起されるぎりぎりのレベルである。このため、時刻t1にて発振は生じず、時刻t2においてフィードバックループ104に発振が生じる。そして、この場合、時刻t1から時刻t2までの時間が所定の時間(例えば1秒)よりも長かったとする。従って、同様に時刻t3にて発振が検知されるが、剛性値更新部131の出力値は時刻t4においては、スタート時の剛性値「3」に対して前述の階数「2」ではなく階数「1」だけ低い剛性に対応する値である剛性値「2」に更新される。
その結果、周波数帯域設定値fsが低くなり、図21に示すように、フィードバックループ104の実際の周波数帯域幅fsrも、fsr=30×1.0=30(Hz)となり、発振は収束する。このように、イナーシャ推定値が有効となってからフィードバックループ104に発振が生じるまでの時間が長いということは、発振が停止する剛性値はスタート時の剛性値「3」に対して、大きく乖離していないということを意味する。従って、この場合、スタート時の剛性値「3」に対して、階数「2」だけ低い剛性に対応する値である剛性値「1」に更新されるよりも、階数「1」だけ低い剛性に対応する値である剛性値「2」に更新される方が望ましい結果となる。なぜなら、剛性値「1」に更新された場合は、最適値である剛性値「2」でフィードバックループ104を動作させるためには、剛性値「2」を外部から再度、手動により設定する必要があるからである。
このようにイナーシャ推定部153の出力が有効となったときから所定の時間を超えてフィードバックループ104の発振を検知したときは、剛性値更新部131がその出力値を現在の出力値よりも階数「1」だけ低い剛性に対応する値に切り替える処理を行うことで、フィードバックループ104に生ずる発振を短時間で停止させることができ、かつ剛性値更新部131の出力値が状況に応じてより望ましい剛性値に設定されることになる。
なお、ここではイナーシャ推定部153の出力が有効となったときからフィードバックループ104の発振を検知したときまでの時間が所定の時間を超えているかどうかで動作を切り替えた。これに代えて、例えば、所定の時間をT1、T2、・・・(T1<T2)と複数設け、時間T1を超えていなければ階数K0だけ低い剛性に対応する剛性値に更新し、時間T1を超えてかつ時間T2を超えていなければ階数K1だけ低い剛性に対応する剛性値に更新し、時間T2を超えていれば階数K2だけ低い剛性に対応する剛性値に更新し、階数がK0>K1>K2となるようにする。すなわちイナーシャ推定部153の出力が有効となったときからフィードバックループ104の発振を検知したときまでの時間の増大に伴って順次階数を小さく設定することで、よりきめ細かく最適な剛性値の設定が可能となる。
このように、本実施の形態の制御装置において、イナーシャ推定値が有効となったときから所定の時間以内に、発振検知信号が発振を検知したことを示すとき、剛性値更新部131は、その出力値を現在の出力値よりも所定の第1の階数だけ低い剛性に対応する値に切り替える。そして、イナーシャ推定値が有効となったときから所定の時間以降に、発振検知信号が発振を検知したことを示すとき、剛性値更新部131は、その出力値を現在の出力値よりも所定の第2の階数だけ低い剛性に対応する値に切り替え、第1の階数は第2の階数よりも大きな値とするような構成としてもよい。
(実施の形態6)
図22は、本発明の実施の形態6におけるサーボモータの制御装置のブロック図である。実施の形態5との比較において、実施の形態6では、さらに、安定剛性値算出部157を備える。なお、図22において、図8と同じ構成要素については同一の符号を付しており、これらの詳細な説明は省略する。また、本実施の形態では、乗算部115により、イナーシャ設定部152からのイナーシャ設定値と周波数帯域設定値を乗算して速度ゲインとして出力する速度ゲイン算出部が構成されるとして説明する。
図22において、安定剛性値算出部157には、外部からのイナーシャ初期設定値、イナーシャ設定部152が出力するイナーシャ設定値、乗算部115の出力値および剛性値更新部131が出力する剛性値が供給される。安定剛性値算出部157は、これらの供給された値から安定剛性値を算出し、これを剛性値更新部131に供給する。
この安定剛性値は、イナーシャ推定部153の出力が有効となる前後において、乗算部115、すなわち速度ゲイン算出部の出力値が増加しない範囲で、イナーシャ推定部153の出力が有効となった後の剛性値として最も高い剛性に対応する値という定義に従って算出される。実際には、イナーシャ初期設定値をJi、イナーシャ推定値が有効となった後のイナーシャ設定値をJs、現在の剛性値に対応する周波数帯域設定値をfsとすると、周波数帯域設定値がfs×(Ji/Js)で算出される周波数帯域幅の値を超えないという条件の下での、最も高い剛性に対応する剛性値という定義に従って算出しても等価である。この安定剛性値は、フィードバックループ104に生じた発振を確実に停止させることが可能であり、かつ最も高い剛性に対応する剛性値を意味しており、剛性値更新部131の出力値を安定剛性値に切り替えることで発振を確実に停止することが可能となる。
このように、安定剛性値算出部157を備えた本実施の形態における制御装置の一動作例について説明する。なお、ここでは、本制御装置の動作について、図20および図21を用いて説明する。
図20において、時刻t1で、イナーシャ推定値が有効となり、イナーシャ設定部の出力値と実際の慣性モーメントの値が等しい、すなわち両者の比が1.0になる。このとき、フィードバックループ104の実際の周波数帯域幅が広くなったので、時刻t1においてフィードバックループ104に発振が生じる。その結果、図20に示すように、発振検知部105における発振継続判定部122のカウンタの出力値は増加し、時刻t2において、発振検知部105からパラメータ操作部106へと、発振を検知したとする発振検知信号(Hレベル)が通知される。
このとき、前述の周波数帯域幅fs×(Ji/Js)を計算すると、fs=100[Hz]、Ji/Js=(Ji/Jr)/(Js/Jr)=0.4/1.0=0.4であるので、fs×(Ji/Js)=100×0.4=40[Hz]となる。周波数帯域設定値fsがこれを超えないという条件の下での最も高い剛性に対応する剛性値は、表5から剛性値「2」となる。すなわち、この時、安定剛性値算出部157が出力する安定剛性値は剛性値「2」である。従って、剛性値更新部131は、パラメータ操作部106から、発振が発生したときの操作指示を受け、出力する剛性値を現在の剛性値「4」から安定剛性値である剛性値「2」に時刻t3において切り替えて出力する。
その結果、周波数帯域設定値fsが低くなり、図20に示すように、発振は収束し、カウンタの値も減少する。この後、時刻t4にて、発振継続判定部122は、発振が停止したとする発振検知信号(Lレベル)に切り替え、これによって一連の処理を完了する。また、剛性値更新部131の出力値は設定値保存部125に入力され、保存されている剛性値が「4」から「2」に書き換えられる。すなわち、外部から剛性値として「2」を入力したのと同様の状態となる。
このようにイナーシャ設定部152の出力するイナーシャ設定値が増加することにより、フィードバックループ104の実際の周波数帯域幅が増大し、フィードバックループ104に発振が生じた場合、発振検知部105と剛性値更新部131は、安定剛性値算出部157の出力する安定剛性値に更新する処理を自動的に行うので、フィードバックループ104に生ずる発振を短時間で停止させることができ、負荷102に与える損傷を最小限に抑えることができる。
次に、図21に示したように剛性値が3からスタートした場合の動作について説明する。
図21において、時刻t1以前では、イナーシャ推定値が有効でなく、イナーシャ初期設定値すなわちこの時点のイナーシャ設定値Jsが実際の慣性モーメントの値Jrの0.4倍であるような場合を示している。さらに、時刻t1で、イナーシャ推定値が有効となり、イナーシャ設定値と実際の慣性モーメントの値が等しい、すなわち両者の比が1.0になる。
このとき、前述の周波数帯域fs×(Ji/Js)を計算すると、fs=60[Hz]、Ji/Js=(Ji/Jr)/(Js/Jr)=0.4/1.0=0.4であるので、fs×(Ji/Js)=60×0.4=24[Hz]となる。周波数帯域設定値fsがこれを超えないという条件の下での最も高い剛性に対応する剛性値は、表5から剛性値「1」となる。すなわち、このとき、安定剛性値算出部157が出力する安定剛性値は剛性値「1」である。
剛性値が「4」からスタートした場合では時刻t1にてすぐにフィードバックループ104に発振が生じたが、この場合は、発振が励起されるぎりぎりのレベルである。このため、時刻t1にて発振は生じず、時刻t2において図21のようにフィードバックループ104に発振が生じる。そして、この場合、時刻t1から時刻t2までの時間が所定の時間(例えば1秒)よりも長かったとする。従って、同様に時刻t3にて発振が検知されるが、剛性値更新部131の出力値は時刻t4においては、スタート時の剛性値「3」に対して前述の安定剛性値である剛性値「1」ではなく階数「1」だけ低い剛性に対応する値である剛性値「2」に更新される。
その結果、周波数帯域設定値fsが低くなり、図21に示すように発振は収束する。このようにイナーシャ推定部153の出力値が有効となってからフィードバックループ104に発振が生じるまでの時間が長いということは、発振が停止する剛性値はスタート時の剛性値「3」に対して、大きく乖離していないということを意味する。従って、この場合、スタート時の剛性値「3」に対して、安定剛性値である剛性値「1」に更新されるよりも、階数「1」だけ低い剛性に対応する値である剛性値「2」に更新される方が望ましい結果となる。
このようにイナーシャ推定部153の出力が有効となったときから所定の時間を超えてフィードバックループ104の発振を検知したときは、剛性値更新部131がその出力値を安定剛性値の値に関わらず、現在の出力値よりも階数「1」だけ低い剛性に対応する値に切り替える処理を行うことで、フィードバックループ104に生ずる発振を短時間で停止させることができ、かつ剛性値更新部131の出力値が状況に応じてより望ましい剛性値に設定されることになる。
図23は、本制御装置の他の動作例を説明するためのタイミングチャートである。次に、図23に示すように剛性値が「3」からスタートし、イナーシャ初期設定値すなわち、この時点のイナーシャ設定値Jsが実際の慣性モーメントの値Jrの1.1倍であった場合の動作について説明する。
時刻t1において、イナーシャ設定部の出力値と実際の慣性モーメントの値の比が1.0になると、前述の周波数帯域fs×(Ji/Js)は、fs=60[Hz]、Ji/Js=(Ji/Jr)/(Js/Jr)=1.1/1.0=1.1であるので、fs×(Ji/Js)=60×1.1=66[Hz]となる。周波数帯域設定値fsがこれを超えないという条件の下での最も高い剛性に対応する剛性値は、表5から剛性値「3」となる。すなわち、このとき、安定剛性値算出部157が出力する安定剛性値は剛性値「3」である。
この場合は、発振が励起されるぎりぎりのレベルであるため、時刻t1にて発振は生じず、時刻t2においてフィードバックループ104に発振が生じる。そして、この場合、時刻t1から時刻t2までの時間が所定の時間(例えば1秒)よりも短かったとする。時刻t3にて発振が検知されるが、剛性値更新部131の出力値は通常であれば時刻t4において、前述の安定剛性値である剛性値「3」に更新されるが、この場合、安定剛性値が現在より低い剛性に対応する値ではない。従って、剛性値更新部131の出力値は時刻t4において、安定剛性値である剛性値「3」ではなく、階数「1」だけ低い剛性に対応する値である剛性値「2」に更新される。
その結果、周波数帯域設定値fsが低くなり、発振は収束する。このようにイナーシャ初期設定値がイナーシャ推定部153の出力値よりも大きかった場合、安定剛性値は、現在の剛性と同じか、または高い剛性に対応する値となってしまう。その場合、安定剛性値である剛性値「3」に更新されるよりも、階数「1」だけ低い剛性に対応する値である剛性値「2」に更新される方が望ましい結果となる。
このように、イナーシャ推定部153の出力が有効となったときからフィードバックループ104の発振を検知するまでの時間が所定の時間を超えているかどうかに関わらず、安定剛性値算出部157が出力する安定剛性値が現在より低い剛性に対応する値でなければ、剛性値更新部131がその出力値を、現在の出力値よりも階数「1」だけ低い剛性に対応する値に切り替える処理を行う。このような構成とすることで、フィードバックループ104に生ずる発振を短時間で停止させることができ、かつ剛性値更新部131の出力値が状況に応じてより望ましい剛性値に設定されることになる。
以上のように、本実施の形態におけるサーボモータの制御装置は、イナーシャ推定値が有効となったとき以降の速度ゲイン算出部の出力値がイナーシャ推定値が有効となったとき以前の速度ゲイン算出部の出力値の値以下となる条件を満たし、イナーシャ推定値が有効となったとき以降の剛性値として、最も高い剛性に対応する値を安定剛性値として算出する安定剛性値算出部157を有しており、イナーシャ推定値が有効となったときから所定の時間以内に、発振検知信号が発振を検知したことを示すとき、剛性値更新部131は、その出力値を安定剛性値算出部157の出力値に切り替え、イナーシャ推定値が有効となったときから所定の時間以降に、発振検知信号が発振を検知したことを示すとき、剛性値更新部131は、その出力値を現在の出力値よりも所定の階数だけ低い剛性に対応する値に切り替える構成としている。
また、本実施の形態の制御装置は、イナーシャ推定値が有効となったときから所定の時間以内に、発振検知信号が発振を検知したことを示すとき、安定剛性値が現在より低い剛性に対応する値である場合は、剛性値更新部131は、その出力値を安定剛性値算出部157の出力値に切り替え、イナーシャ推定値が有効となったときから所定の時間以降に発振検知信号が発振を検知したことを示す場合、または、イナーシャ推定値が有効となったときから所定の時間以内に発振検知信号が発振を検知したことを示す場合であって、安定剛性値が現在の剛性値以上の剛性に対応する場合に、剛性値更新部131が、その出力値を現在の出力値よりも所定の階数だけ低い剛性に対応する値に切り替える構成としてもよい。
このように、本実施の形態の制御装置によれば、剛性値更新部131が入力された剛性値に更新して出力するとともに発振検知部105がフィードバックループ104の発振を検知したときに、その出力値を自動的に最適値に更新するという動作を行うことで、フィードバックループ104に生ずる発振を短時間で停止させることができ、かつ、外部からの剛性値の再調整の必要性が少ないサーボモータの制御装置を実現することができる。
(実施の形態7)
図24は、本発明の実施の形態7におけるサーボモータの制御装置のブロック図である。実施の形態5との比較において、実施の形態7では、さらに剛性値判定部161を備える。なお、図24において、図19と同じ構成要素については同一の符号を付しており、これらの詳細な説明は省略する。
図24において、剛性値判定部161は、剛性値更新部131の出力値を入力し、その値が所定の剛性値に等しい値または所定の剛性値よりも低い剛性に対応する値であるかどうかを判断する。また、発振検知部105の出力する発振検知信号を入力し、フィードバックループ104が発振しているかどうかを判断する。そして、剛性値判定部161は、剛性値更新部131の出力値が所定の剛性値に等しい値または所定の剛性値よりも低い剛性に対応する値であり、かつフィードバックループ104が発振していると判断すればイナーシャ低減を指令するHレベル、そうでなければLレベルの2値のイナーシャ低減指令信号として、イナーシャ設定部152に対して出力する。
以上のように構成されたサーボモータの制御装置について、具体例を挙げて、その動作を説明する。また、本実施の形態においても、実施の形態5と同様に、イナーシャ初期設定値が実際の慣性モーメントの値よりも大きな値であった場合や、負荷102の慣性モーメントが急変した場合など、速度ゲインKvの値が増加し、フィードバックループ104の実際の周波数帯域幅が増加したときに生じる発振を、図24に示した構成により、自動的に確実に発振を停止させるような動作について説明する。
図25は、本実施の形態の制御装置の一動作例を説明するためのタイミングチャートである。
図25では、剛性値更新部131の出力値とともに、イナーシャ設定値と実際の慣性モーメントの値の比、およびフィードバックループ104の実際の周波数帯域幅fsrの値(単位はHz)などを示している。また、剛性値およびそれに対応した制御パラメータは表5に示した各値を用いる。発振検知部105としては、図3で示したような発振継続判定部122が上述のようなカウンタを備えた一例を用いる。
図25において、時刻t1以前では、イナーシャ推定部153の出力値であるイナーシャ推定値が有効であり、イナーシャ設定値Jsが実際の慣性モーメントの値Jrに等しい、すなわち、1.0倍となるような一例を挙げている。周波数帯域設定値fsの値は、表5から剛性値「1」に対して10(Hz)であるから、実際の周波数帯域幅fsrは、fsr=10×1.0=10(Hz)となる。
また、時刻t1で、負荷102の慣性モーメントがそれまでの1/8に急変し、イナーシャ設定部152の出力値であるイナーシャ設定値が実際の慣性モーメントの値の8倍になる。この場合は、実際の周波数帯域幅fsrは、fsr=10×8=80(Hz)となる。また、このように、フィードバックループ104の実際の周波数帯域幅が広くなったので、時刻t1においてフィードバックループ104に発振が生じる。
このような発振が生じると、図25に示すように、発振検知部105における発振継続判定部122のカウンタの出力値は増加し、時刻t2において、発振検知部105からは、発振を検知したとする発振検知信号(Hレベル)が出力される。
剛性値判定部161は、この発振検知信号を受け、また、このとき、剛性値更新部131の出力値は所定の剛性値である剛性値「0」に等しい。このため、剛性値判定部161は、図25に示すように、時刻t2にてイナーシャ低減指令信号として、イナーシャ低減を指令するHレベルの値を、イナーシャ設定部152に対して出力する。
イナーシャ設定部152は、このイナーシャ低減指令信号を受けて、イナーシャ設定値を現在の出力値に対し、1/2に低減した値に切り替えて、時刻t3にて出力する。従って、図25に示すように、時刻t3において、イナーシャ設定値は実際の慣性モーメントの値の8倍から4倍に変化する。
その結果、フィードバックループ104の実際の周波数帯域幅fsrの値も、fsr=10×4=40(Hz)となる。これによって、実際の周波数帯域幅fsrの値が十分に下がったので、発振は収束し、これに伴ってカウンタの値も減少する。この後、時刻t4にて、発振継続判定部122は、発振が停止したとする発振検知信号(Lレベル)に切り替え、これによって一連の処理を完了する。
このように、イナーシャ設定部152の出力するイナーシャ設定値が見かけ上、相対的に増加することにより、フィードバックループ104の実際の周波数帯域幅が増大し、フィードバックループ104に発振が生じたとしても、剛性値判定部161は、剛性値更新部131の出力値を判断しつつ、イナーシャ設定値を所定の比率で低減する処理を自動的に行う。このため、本実施の形態の制御装置によれば、フィードバックループ104に生ずる発振を確実に停止させることができ、負荷102に与える損傷を小さく抑えることができる。
なお、ここでは、イナーシャ設定部152がイナーシャ低減指令信号を受けたとき、出力するイナーシャ設定値を現在の出力値に対し1/2に低減した値に切り替えて出力するような例を挙げたが、1/2でなく、他の比率に低減した値に切り替えて出力してもよい。この場合、低減する比率が高ければイナーシャ設定値が実際の慣性モーメントよりも低くなり過ぎてしまう可能性があり、逆に低減する比率が低ければ発振が停止するまでに時間が掛かる可能性がある。従って、両者の長所短所を考慮の上で低減する比率を決定すればよい。
また、ここでは、所定の剛性値を、剛性値「0」とした例を挙げた。基本的には所定の剛性値として、最も低い剛性に対応する値を選択するのが普通であるが、必ずしも最も低い剛性に対応する値でなくてもよい。すなわち、例えば、この場合であれば、剛性値「1」としてもよい。ただし、この所定の剛性値は、イナーシャ設定値が実際の慣性モーメントに等しい値であるとき、フィードバックループ104に生ずる発振が確実に停止する剛性値であることが必要である。
図26は、本実施の形態の制御装置の他の動作例を説明するためのタイミングチャートである。次に、図26に示すように、剛性値が「1」からスタートした場合の動作について説明する。図26では、イナーシャ設定部152に対するイナーシャ初期設定値として実際の慣性モーメントの8倍の値が設定されているような場合を示している。この場合、周波数帯域設定値fsの値は、表5から剛性値1に対して20(Hz)であるから、フィードバックループ104の実際の周波数帯域幅fsrは、fsr=20×8=160(Hz)となる。また、図26では、時刻t1でサーボオンとなるが、実際の周波数帯域幅fsrが大きいので、時刻t1において、フィードバックループ104に発振が生じたような場合を示している。すなわち、図26に示すように、発振継続判定部122内部のカウンタの値は時刻t2にて所定の値以上になるので、発振検知信号は、時刻t2にて発振の発生を示すHレベルとなる。
剛性値判定部161は、この発振検知信号を受け、このとき、剛性値更新部131の出力値は剛性値「1」であり、所定の剛性値である剛性値「0」よりも高い剛性に対応する値であるので、イナーシャ低減指令信号として、Lレベルの値を保持し、イナーシャ低減を指令していない状態となっている。
一方、剛性値更新部131は、この発振検知信号による発振の発生を示すHレベルの値を受けて、出力する剛性値を現在の剛性値「1」から所定の階数だけ低い剛性値「0」を時刻t3にて出力する。
これにより、周波数帯域設定値fsが低くなり、図26に示すように、フィードバックループ104の実際の周波数帯域幅fsrは、fsr=10×8=80(Hz)となる。ところが、発振が停止するほどには低くないので、図26に示すように、時刻t3以降も発振は収束することなく継続してしまっている。これは、イナーシャ設定部152の出力するイナーシャ設定値、すなわちイナーシャ初期設定値が実際の慣性モーメントの値よりも大幅に大きいことが原因である。
しかし、剛性値更新部131の出力値は、所定の剛性値である剛性値「0」に等しくなったので、剛性値判定部161は、図26に示すように、時刻t4にてイナーシャ低減指令信号として、イナーシャ低減を指令するHレベルの値をイナーシャ設定部152に対して出力する。イナーシャ設定部152は、このイナーシャ低減指令信号を受けて、出力するイナーシャ設定値を現在の出力値に対し1/2に低減した値に切り替えて時刻t5にて出力する。従って、時刻t5において、イナーシャ設定部152の出力値は実際の慣性モーメントの値の8倍から4倍に変化する。
その結果、図26に示すように、フィードバックループ104の実際の周波数帯域幅fsrも、fsr=10×4=40(Hz)となる。このように、実際の周波数帯域幅fsrが十分に下がったので、発振は収束し、これに伴ってカウンタの値も減少する。この後、時刻t6にて、発振継続判定部122は、発振が停止したとする発振検知信号(Lレベル)に切り替え、これによって一連の処理を完了する。
このようにイナーシャ初期設定値が実際の慣性モーメントよりも大きな値であったことが原因でフィードバックループ104に発振が生じたとしても、剛性値判定部161は、剛性値更新部131の出力値を判断しつつ、イナーシャ設定部152の出力値を所定の比率で低減する処理を自動的に行うので、フィードバックループ104に生ずる発振を確実に停止させることができ、負荷102に与える損傷を小さく抑えることができる。
なお、イナーシャ設定部152が出力するイナーシャ設定値を現在の出力値に対し1/2に低減した値に切り替えて出力した結果、フィードバックループ104の実際の周波数帯域幅fsrが十分に低い値にならず、フィードバックループ104に生じた発振が停止しなかったとしても、前述の一連の処理を発振が停止するまで繰り返すことにより確実に発振を停止させることが可能である。ただし、所定の剛性値に対応した周波数帯域設定値fsが十分に低い周波数であることが必要である。
(実施の形態8)
図27は、本発明の実施の形態8におけるサーボモータの制御装置のブロック図である。なお、図27において、図24と同じ構成要素については同一の符号を付しており、これらの詳細な説明は省略する。
実施の形態7との比較において、実施の形態8では、剛性値判定部161を備えておらず、発振検知部105の発振検知信号は、直接にイナーシャ設定部152に供給される。また、図24においては、発振検知信号が剛性値更新部131に入力されていたが、図27においては、発振検知信号が剛性値更新部131に入力されることはない。
以上のように構成されたサーボモータの制御装置について、具体例を挙げて、その動作を説明する。なお、剛性値およびそれに対応した制御パラメータは表5に示した各値を用いる。発振検知部105としては、図3で示したような発振継続判定部122が上述のようなカウンタを備えた一例を用いる。
図28は、本実施の形態の制御装置の一動作例を説明するためのタイミングチャートである。図28に示すように、剛性値が「1」からスタートし、このとき、イナーシャ設定部152に対するイナーシャ初期設定値として実際の慣性モーメントの8倍の値が設定されている場合の動作について説明する。この場合、周波数帯域設定値fsの値は、表5から剛性値「1」に対して20(Hz)であるから、フィードバックループ104の実際の周波数帯域幅fsrは、fsr=20×8=160(Hz)となる。また、図28では、時刻t1でサーボオンとなるが、実際の周波数帯域幅fsrが大きいので、時刻t1において、フィードバックループ104に発振が生じたような場合を示している。すなわち、図28に示すように、発振継続判定部122内部のカウンタの値は時刻t2にて所定の値以上になるので、発振検知信号は、時刻t2にて発振の発生を示すHレベルとなる。
イナーシャ設定部152は、この発振検知信号を受けて、その出力値を現在の出力値の1/2に低減した値に時刻t3にて切り替える。従って、図28に示すように、時刻t3においてイナーシャ設定値は実際の慣性モーメントの値の8倍から4倍に変化する。
これにより、図28に示すように、フィードバックループ104の実際の周波数帯域幅fsrは、fsr=20×4=80(Hz)となる。ところが、発振が停止するほどには低くないので、図28に示すように、時刻t3以降も発振は収束することなく継続してしまっている。また、図28に示すように、発振検知信号も発振を検知したことを示すHレベルのままとなっている。これを受けて、イナーシャ設定部152は、その出力値を現在の出力値の1/2に低減した値に時刻t4にて切り替える。従って、図28に示すように、時刻t4においてイナーシャ設定部152の出力値は実際の慣性モーメントの値の4倍から2倍に変化する。
その結果、図28に示すように、フィードバックループ104の実際の周波数帯域幅fsrも、fsr=20×2=40(Hz)となる。実際の周波数帯域幅fsrが十分に下がったので、発振は収束し、これに伴ってカウンタの値も減少する。この後、時刻t6にて、発振継続判定部122は、発振が停止したとする発振検知信号(Lレベル)に切り替え、これによって一連の処理を完了する。
このように、状況によっては剛性値更新部131の出力値が変化しなくても、イナーシャ設定部152がその出力値を低減することで、フィードバックループ104に生じた発振を停止することができる。しかし、このような動作が可能なのは、発振の原因がイナーシャ設定部の出力値と実際の慣性モーメントの値との乖離であり、剛性値を変更しなくてもイナーシャ設定部の出力値が実際の慣性モーメントの値に近い値となることで、発振が停止することが明らかとなっている場合に限られる。このような場合には、フィードバックループに発振が生じたとしても剛性値が下がることなく発振が停止するために、剛性値を再調整することなく、速度指令または位置指令に対する最適な応答が維持できるというメリットが得られる。
以上のように、発振検知部105がフィードバックループ104の発振を検知したときに、イナーシャ設定部152がその出力値を自動的に低減させるという動作を行うことで、フィードバックループ104に生ずる発振を確実に停止させるサーボモータの制御装置を実現することができる。
なお、上述した各実施の形態では、この発明に必要な全ての部が同一の制御装置に含まれているが、それぞれの部が別々の装置に含まれていてもよい。
また、上述した各実施の形態では、本発明のサーボモータの制御装置は各ブロック図に示したような機能ブロックで構成されるような実施の形態の例を挙げて説明したが、例えば、各ブロックにおける処理を手順に従ったステップの実行により実現されるサーボモータの制御方法であってもよい。具体的には、各ブロックの処理に対応したステップを順次実行するようなプログラムをメモリなどに記憶させ、例えば、マイクロプロセッサのようなCPUが、メモリに記憶されたプログラムを順次読み取り、読み取ったプログラムに従って処理を実行するような構成であってもよい。
すなわち、例えば、サーボモータの制御手順として、フィードバックループの発振を検知するステップと、フィードバックループの制御パラメータ群における制御パラメータの設定を、発振の検知に基づき操作制御するステップと、制御パラメータを設定するための設定値が供給され、操作制御に応じて更新しながら制御パラメータをフィードバックループに設定するステップとを備え、発振が検知されていないとき、操作制御により、供給された設定値に応じた制御パラメータをフィードバックループに設定し、発振が検知されたとき、操作制御により、フィードバックループの周波数帯域幅が狭くなるような制御パラメータをフィードバックループに設定するようなプログラムをメモリに記憶させる。そして、マイクロプロセッサがメモリに記憶されたこのプログラムを順次読み取り、読み取ったプログラムに従って処理を実行することで、本発明のサーボモータの制御方法が実現できる。
また、実施の形態4のサーボモータはノッチフィルタ141を備えるが、このノッチフィルタ141を、他の実施形態のサーボモータに適応してもよい。