以下、本発明を図面に従い、ディスク装置、位置制御系の外乱周波数推定、適応制御、位置制御系の第1の実施の形態、位置制御系の第3の実施の形態、位置制御系の第4の実施の形態、位置制御系の第5の実施の形態、位置制御系の第6の実施の形態、他の実施の形態の順で説明するが、本発明は、下記実施の形態に限らず、種々の変形が可能である。
[ディスク装置]
図1は、本発明の一実施の形態のディスク装置の構成図、図2は、図1の磁気ディスクの位置信号の配置図、図3は、図1及び図2の磁気ディスクの位置信号の構成図、図4は、図1のヘッド位置制御の説明図である。
図1は、ディスク装置として、磁気ディスク装置を示す。図1に示すように、磁気記憶媒体である磁気ディスク4が、スピンドルモータ5の回転軸2に設けられている。スピンドルモータ5は、磁気ディスク4を回転する。アクチュエータ(VCM)1は、そのアーム先端に磁気ヘッド3を備え、磁気ヘッド3を磁気ディスク4の半径方向に移動する。
アクチュエータ1は、回転軸を中心に回転するボイスコイルモータ(VCM)で構成される。図では、磁気ディスク装置に、2枚の磁気ディスク4が搭載され、4つの磁気ヘッド3が、同一のアクチュエータ1で同時に駆動される。
磁気ヘッド3は、リード素子と、ライト素子とからなる。磁気ヘッド3は、スライダに、磁気抵抗(MR)素子を含むリード素子を積層し、その上にライトコイルを含むライト素子を積層して、構成される。
位置検出回路7は、磁気ヘッド3が読み取った位置信号(アナログ信号)をデジタル信号に変換する。リード/ライト(R/W)回路10は、磁気ヘッド3の読み取り及び書込みを制御する。スピンドルモータ(SPM)駆動回路8は、スピンドルモータ5を駆動する。ボイスコイルモータ(VCM)駆動回路6は、ボイスコイルモータ(VCM)1に駆動電流を供給し、VCM1を駆動する。
マイクロコントローラ(MCU)14は、位置検出回路7からのデジタル位置信号から現在位置を検出(復調)し、検出した現在位置と目標位置との誤差に従い、VCM駆動指令値を演算する。即ち、位置復調とサーボ制御を行う。リードオンリーメモリ(ROM)13は、MCU14の制御プログラム等を格納する。ランダムアクセスメモリ(RAM)12は、MCU14の処理のためのデータ等を格納する。
ハードディスクコントローラ(HDC)11は、サーボ信号のセクタ番号を基準にして,1周内の位置を判断し,データを記録・再生する。バッファ用ランダムアクセスメモリ(RAM)15は、リードデータやライトデータを一時格納する。HDC11は、USB,ATAやSCSI等のインターフェイスIFで、ホストと通信する。バス9は、これらを接続する。
図2に示すように、磁気ディスク4には、外周から内周に渡り、各トラックにサーボ信号(位置信号)16が、円周方向に等間隔に配置される。尚、各トラックは、複数のセクタで構成され、図2の実線は、サーボ信号16の記録位置を示す。図3に示すように、位置信号は,サーボマークServo Markと、トラック番号Gray Codeと、インデックスIndexと、オフセット情報(サーボバースト)PosA,PosB,PosC,PosDとからなる。尚、図3の点線は、トラックセンターを示す。
図3に示すトラック番号Gray Codeとオフセット情報PosA,PosB,PosC,PosDを使い,磁気ヘッドの半径方向の位置を検出する。さらに、インデックス信号Indexを元にして,磁気ヘッドの円周方向の位置を把握する。
例えば,インデックス信号を検出したときのセクタ番号を0番に設定し、サーボ信号を検出する毎に、カウントアップして、トラックの各セクタのセクタ番号を得る。このサーボ信号のセクタ番号は,データの記録再生を行うときの基準となる。尚、インデックス信号は、1周に1つである、又、インデックス信号の代わりに、セクタ番号を設けることもできる。
図4は、図1のMCU14が行うアクチュエータのシーク制御例である。図1の位置検出回路7を通じて、MCU14が、アクチュエータの位置を確認して,サーボ演算し、適切な電流をVCM1に供給する。図4では、あるトラック位置から目標トラック位置へヘッド3を移動するシーク開始時からの制御の遷移と、アクチュエータ1の電流、アクチュエータ(ヘッド)の速度、アクチュエータ(ヘッド)の位置を示す。
即ち、シーク制御は、コアース制御、整定制御及びフォローイング制御と遷移することで,目標位置まで移動させることができる。コアース制御は、基本的に速度制御であり、整定制御、フォローイング制御は、基本的に位置制御であり、いずれも、ヘッドの現在位置を検出する必要がある。
このような,位置を確認するためには,前述の図2のように、磁気ディスク上にサーボ信号を事前に記録しておく。即ち、図3に示したように、サーボ信号の開始位置を示すサーボマーク,トラック番号を表すグレイコード,インデックス信号,オフセットを示すPosA〜PosDといった信号が記録されている。この信号を磁気ヘッドで読み出し、このサーボ信号を、位置検出回路7が、デジタル値に変換する。
[位置制御系の第1の実施の形態]
図5は、本発明の位置制御系(サーボ制御系)の第1の実施の形態のブロック図、図6は、図5のsin(ωT)推定の説明図、図7は、振動周波数と推定値cos(ωT)との関係図、図8は、図5の適応ゲインの説明図である。
図5は、MCU14が実行するサーボ制御系の演算ブロック図である。即ち、目標位置rと現在位置yとの位置誤差eを演算ブロック20で演算し、制御ブロック(Cn)21に入力する。制御ブロック(Cn)21は、位置誤差eに従い、制御演算し、制御量Unを計算し、プラント22であるVCM1、3を駆動する。プラントの位置は、磁気ヘッド3からのサーボ信号を、復調し、現在位置yを計算し、演算ブロック20にフィードバックする。
周波数推定器24は、位置誤差eと外乱抑圧補償器23(Cd)の内部変数を用いて、外部振動の角周波数ωのsin(ωT)を推定する。補償用テーブル25は、角周波数ωのsin(ωT)に対応した外部振動抑圧用の補償器23(Cd)の定数を格納する。
外乱抑圧補償器23(Cd)は、周波数推定器24の角周波数ωのsin(ωT)により、補償用テーブル25から読み出された定数により内部定数を修正し、位置誤差eから外乱抑圧制御量Udを計算する。加算ブロック26は、制御量Unと外乱抑圧制御量Udとを加算して、プラント22に出力する。外乱抑圧制御量とは、外乱に対し、ディスクとヘッドとの位置関係がずれないように制御するための制御量であり、外乱が印加されると、通常ヘッドの位置ずれが生じるため、ヘッドを駆動するVCMの駆動値を適応制御する。
ここで、本発明では、周波数推定器24は、sin(ωT)を導出している。この理由を説明する。制御ブロック21、補償器23、周波数推定器24を、オブザーバで構成した制御系で説明する。先ず、予測オブザーバの適応則を説明する。
予測オブザーバでの補償器23は、下記式(8)で表される。尚、式(8)において、z1は、外乱のsin成分、z2は、外乱のcos成分、L4,L5は、入力ゲイン、eは、位置誤差である。
ここで、外乱モデルが、正弦波の場合には、式(8)のA行列は、下記式(9)で表される。
式(8)を展開すると、式(10)となる。
式(2)のアナログの時間微分は、デジタルでは、引き算であるので、式(10)のZ2[k+1]の式から、Z2[k]を引き、Z1[k]を掛けると、式(11)が得られる。
同様に、式(10)のZ1[k+1]の式から、Z1[k]を引き、Z2[k]を掛けると、式(1)が得られる。
式(3)と同様に、アナログの微分は、デジタルの引き算であるから、式(11)と式(12)の差分を取ると、式(13)が得られる。
又、外乱モデルが正弦波である時は、式(9)のように、a11=a22(=cos(ωT))、a12=−a22(=sin(ωT))であるから、式(13)は、下記式(14)に変形できる。
式(14)において、z1とz2の二乗和で除算して、式(15)を得る。
式(5)と比較すると、式(5)では、外乱として、ωを推定するのに対し、式(15)では、sin(ωT)を推定することを示す。即ち、デジタル制御においては、sinωTを推定する必要があり、適応則は、式(15)の右辺の第2項を「0」にするように、sinωTを推定することになる。
次に、現在オブザーバの適応則を説明する。現在オブザーバは、デジタル制御において、予測オブザーバより広く利用されている。
現在オブザーバでの補償器23は、下記式(16)で表される。尚、式(16)において、z1は、外乱のsin成分、z2は、外乱のcos成分、L4,L5は、入力ゲイン、eは、位置誤差である。
式(16)の2つの式を纏めると、式(17)が得られる。
ここで、外乱モデルが、正弦波の場合には、式(17)のA行列は、下記式(18)で表される。尚、式の簡略化のため、cos(ωT),sin(ωT)を、「c」、「s」で表すこととする。
式(18)のA行列の逆行列は、次式(19)となる。
式(17)を、式(18)のA行列で割り、式(19)のA行列の逆行列に置き換えると、式(20)が得られる。
式(20)から、kサンプル時のz1、z2を、求めると、式(21)が得られる。
式(21)のz2[k+1]を掛け、z2[k]に、z1[k+1]を掛けると、式(22)が得られる。この時、z2[k]に、左辺のマイナスを付与している。
式(22)の上下の式の和をとると、式(23)が得られる。
式(23)から、現在オブザーバの構成でも、sin(ωT)を推定すべきである。即ち、アナログの式のように、外乱周波数又は外乱角周波数ωを推定するのではなく、デジタル制御においては、直接推定すべきは、sin(ωT)である。式(23)から、sin(ωT)は、下記式(24)で得られる。
又、現在オブザーバでは、sin(ωT)の代わりに、cos(ωT)を推定しても良い。即ち、式(21)のz1[k+1]を掛け、z2[k]に、z2[k+1]を掛けると、式(25)が得られる。
式(25)の上下の式の和をとると、式(26)が得られる。
式(26)から、アナログの式のように、外乱周波数又は外乱角周波数ωを推定するのではなく、デジタル制御においては、直接推定するのは、cos(ωT)である。式(26)から、cos(ωT)は、下記式(27)で得られる。
図6は、振動周波数と推定値sin(ωT)との関係図である。推定値sin(ωT)は実線で、従来の推定値ωは、一点鎖線で示す。横軸の振動周波数に対し、従来の推定値ωは、直線状の特性を描くが、推定値sin(ωT)と比べると、振動周波数に対し、推定周波数のずれがあり、推定精度が低い。このため、デジタル制御では、推定値ωを推定しても、正確に振動周波数を推定できず、振動周波数に適応する位置制御が困難であった。
一方、本願は、振動周波数を、sin(ωT)で推定しているため、デジタル制御において、正確に振動周波数を推定でき、振動周波数成分に適応する位置制御が実現できる。
又、デジタル制御において、sin(ωT)を、振動周波数fの推定値に使用することは、デジタル制御のサンプリング周波数をFsとすると、次式(28)の周波数を推定することになる。
このことは、図6に示したように、外乱周波数fとsin(ωT)とが、単調な関係を示す範囲は、0からFs/4の領域であり、Fs/4以上では、適応追従ができない。
又、図7は、振動周波数と推定値cos(ωT)との関係図である。図7に示すように、cos(ωT)を推定値に用いる場合には、0からFs/2の範囲で、単調減少の特性が得られる。従って、sin(ωT)の推定の場合に、生じていたFs/4の上限の制約はない。
一方、cos(ωT)を利用すると、低周波数領域では、カーブが平坦近くなり、周波数の推定精度が劣化する。例えば、12kHzのサンプル周波数の場合には、500Hz程度の低周波数領域までは、カーブが平坦であり、推定精度が低下する。
従って、低い周波数側の推定精度を重要視する場合には、sin(ωT)の推定式を使用し、高い周波数側の推定精度を重要視する場合には、cos(ωT)の推定を行うことが望ましい。
更に、ディスク装置の使用形態では、外部振動が、通常、低い周波数側で問題になることが多い。例えば、数100Hz程度の外部振動が、外部から加わることが多い。そのため、ディスク装置では、低い周波数の振動を精度よく推定できるsin(ωT)推定式を利用することが、都合が良い。
[外乱適応制御]
次に、図5のsin(ωT)(又は、cos(ωT))推定器24は、次のように、sin(ωT)又はcos(ωT)を推定して、適応制御する。
第1の適応制御は、正しく、推定できて、制御系が外乱周波数を抑圧できれば、式(24)又は式(27)のe[k]は、「0」になるので、式(24)、式(27)の右辺第2項は、「0」となるはずである。
そこで、sin(ωT)推定の場合には、式(24)の右辺第2項E[k]を,次式(29)で計算する。
次に、式(29)のE[k]に適応ゲインKを掛け、次式(30)のように、sin(ωT)を更新する。
又、cos(ωT)推定の場合には、式(27)の右辺第2項E[k]を,次式(31)で計算する。
次に、式(31)のE[k]に適応ゲインKを掛け、次式(32)のように、cos(ωT)を更新する。
上記のようにして、z1[k+1],z2[k+1],e[k],L4,L5の5つの値を利用して、sin(ωT)、cos(ωT)を、適応的に推定できる。
第2の適応制御の計算方法を説明する。固定小数点方式のプロセッサを使用する場合には、桁数が限られる。上記の、z1[k+1],z2[k+1],e[k],L4,L5の5つの値を利用する場合に、z1[k+1],z2[k+1]の値と,e[k],L4,L5の値との桁が相違する。そこで、限られた桁数を有効に利用するため、以下の手順で、計算する。
sin(ωT)推定の場合には、式(24)の右辺第1項G[k]を,次式(33)で計算する。
次に、現在の設定値であるsin(ωT)と、式(33)のずれE[k]を、次式(34)で計算する。
この式(34)のE[k]に適応ゲインKを掛け、次式(35)のように、sin(ωT)を更新する。
又、cos(ωT)推定の場合には、式(27)の右辺第1項G[k]を,次式(36)で計算する。
次に、現在の設定値であるcos(ωT)と、式(36)のずれE[k]を、次式(37)で計算する。
次に、式(37)のE[k]に適応ゲインKを掛け、次式(38)のように、cos(ωT)を更新する。
上記のようにして、z1[k+1],z1[k],z2[k+1],z[k]の4つの値を利用するだけで、sin(ωT)、cos(ωT)を、適応的に推定できる。
次に、式(30)、(32)、(35)、(38)の適応ゲインKによる誤差を解消する方法を説明する。アナログ制御で,外乱周波数または外乱角周波数を求める場合は,適応則は、式(6)であった。式(6)のエラー値には、外乱以外のノイズ成分(例えば、RRO(Repeatable Run Out)、NRRO(Non Repeatable Run Out))が含まれている。
外乱が、いかなる周波数においても、そのノイズの影響は同じ値を示す場合を考える。とすると,外乱周波数に追従している状態では,上記の一律の適応ゲインKを用いている場合には,外乱周波数が、いかなる値においても,推定した周波数の変動は、適応ゲインKとエラー値の変動で決まり,一定のばらつきを持つ。
一方、デジタル制御においては、式(30)、(32)、(35)、(38)に示したように、エラー値E[k]を求めた後、適応ゲインKをかけて,sinωTを更新する。これらの式において、適応ゲインは一定値として説明した。
このエラー値E[k]が、ノイズの影響で変動する場合、かつその変動は、外乱周波数が、いかなる周波数においても、同様の値を示す場合を考える。すると,外乱周波数が低い場合、すなわち、sinωTが「0」に近い場合と,外乱周波数が高い場合、すなわち、sinωTが「1」に近い場合とで、エラー値E[k]のばらつきが、ω[k]に与える影響には差があることになる。
図8に示すように、ωが高いとき,sinωTのω変化に対する変動は小さい。ωが小さい時、sinωTのω変化に対する変動は大きい。この変化幅は、下記式(39)で表される。即ち、sinωTを、ωで偏微分すると求めることができる。
このように、変化幅が異なることは、デジタル制御における適応ゲインは、一律であっては、誤差への影響が大きくなる。従って、現在の推定外乱周波数に応じて、異なる値をとるべきである。その適応ゲインは、可変であり,周波数が低いと大きく,周波数が高いと低くすべきである。
即ち、sinωTを推定する方法においては、適応ゲインKaは、下記式(40)に示すように、cosωTに比例した値をとる。これにより、変化幅の相違による、誤差への影響を抑制できる。
又、cosωTを推定する方法においては、適応ゲインKaは、式(40)と同様に、sinωTに比例した値をとる。
次に、図5で示した補償器23は、オブザーバで構成され、下記式(41)により、外乱抑圧制御量(電流)Udist(又は、Ud)を計算する。
図5の制御定数テーブル25は、図10で説明するように、式(41)で使用するsin(ωT)又はcos(ωT)の値と、対応するL4、L5、cosωT又はsinωTの値のテーブルで構成される。
従って、サンプル毎に、sinωT(cosωT)演算器24で計算されたsinωT(cosωT)に対応するL4、L5、cosωT又はsinωTの値が、テーブル25から読み出され、補償器23にセットされる。補償器23は、セットされた制御定数と、位置誤差から、式(41)を計算し、外部抑圧制御量Udistを計算し、加算ブロック26に出力する。
[位置制御系の第2の実施の形態]
図9は、本発明の第2の実施の形態の位置制御系のブロック図、図10は、図9の制御定数テーブルの説明図である。図9は、コントローラ21、補償器23を、一体の現在オブザーバで構成した例である。又、sinωT演算部24を、第1の適応制御の計算方法を適用した例である。
図9の位置制御系は、外乱周波数を検出し、外乱を適応制御により、抑圧するため、下記式(42)、(43)、(44)で示される外乱抑圧を行う現在オブザーバである。
尚、式(44)において、a11〜a22は、式(9)、式(18)で示したsin,cosの値である。
即ち、この実施の形態は、コントローラのモデルと外乱モデルを含むオブザーバによる位置制御系の例である。図9において、図5で示したものと同一のものは、同一の記号で示してある。
図9において、第1の演算ブロック20は、ヘッド3(図1参照)が読み取った前述のサーボ情報を復調して得た観測位置y[k]から目標位置rを差し引き、実位置誤差er[k]を演算する。
第2の演算ブロック32は、実位置誤差er[k]からオブザーバの推定位置x[k]を差し引き、推定位置誤差e[k]を演算する。状態推定ブロック34は、この推定位置誤差e[k]と、内部変数である式(42)の推定ゲインL(L1,L2、L3,L4,L5)を用いて、推定修正値(式(42)の右辺第2項)を、演算する。
そして、加算ブロック36は、この推定修正値と、遅延ブロック46から状態量(式(42)の右辺第1項)x[k],v[k]、b[k],z1[k],z2[k]とを加算し、式(42)のように、推定位置x[k],推定速度v[k]、推定バイアス値b[k],推定外乱抑圧値z1[k],z2[k]を得る。尚、式(44)では、推定位置誤差e[k]を、(y[k]−x[k])で表示する。
この推定値は、第4の演算ブロック38で、状態フィードバックゲイン(一Fa=F1,F2,F3,F4,F5)を乗算され、式(43)のように、アクチュエータ1の駆動値u[k]を得る。一方、加算ブロック36からの式(42)の推定値は、第5の演算ブロック42で、推定ゲインAa(式(44)の右辺第1項の行列)を乗じられる。
第4の演算ブロック38の駆動値u[k]は、第6の演算ブロック40で、推定ゲインB(式(44)の右辺第2項のu[k]に乗じる値)を乗じられる。両乗算結果は、加算ブロック44で、加算され、式(44)の次のサンプルの推定状態量x[k+1],v[k+1]、b[k+1],z1[k+1],z2[k+1]を得る。
この次のサンプルの推定状態量は、前述のように、遅延ブロック46に入力し、状態推定ブロック34で、推定修正値で、修正される。そして、加算ブロック36からの式(42)の推定値は、第7の演算ブロック48で、推定位置x[k]が取り出され、前述の第2の演算ブロック32に入力する。
この現在オブザーバに、周波数推定器24と、制御定数テーブル25とを付与する。周波数推定器24は、sin(ωT)の第1の適応則である式(29)、(30)を演算し、sin(ωT)を計算する。
即ち、周波数推定器24では、推定誤差(E[k])演算器24−1が、推定位置誤差e[k]、推定状態量z1[k+1],z2[k+1]、推定ゲインL4,L5を受け、式(29)を計算し、推定誤差E[k]を出力する。
ゲイン乗算器24−2は、推定誤差E[k]にゲインKaを乗算し、式(30)の右辺第2項を計算する。加算器24−5は、遅延ブロック24−3からの1サンプル前のsin(ω[k]T)と、ゲイン乗算器24−2の出力とを加算し、式(30)のsin(ω[k+1]T)を出力する。このsin(ω[k+1]T)は、遅延ブロック24−3で1サンプル遅延され、加算器24−4に入力する。
クリップブロック(飽和処理ブロック)24−4は、入力されたsinωTが、「0」より小さい場合は、「0」に、「1」より大きい場合は、「1」に制限する。このため、状態変数からsinωTを推定しても、図6の周波数範囲の外乱周波数成分を得ることができる。
前述のように、0〜Fs/4の周波数の範囲に対応するsinωTの値は、0〜1である。従って、推定したsinωTの値は、常に0から1の範囲に制限する必要がある。この実施の形態は、加算ブロック24−5の出力を、0から1の範囲に制限するクリップブロック24−4を設けたものである。
そして、ゲイン可変部24−6は、遅延ブロック24−3からのsin(ω[k]T)から、cos(ω[k]T)を計算し、式(40)に従い、ゲイン乗算部24−2のゲインKaを更新する。
周波数推定器24の出力sin(ω[k+1]T)は、制御定数テーブル25に入力する。図10に示すように、制御定数テーブル25は、推定値sinωTに対応する、推定ゲインL1、L2,L3,L4,L5、cosωTの値を格納する。sinωTは、図6で説明したように、0〜Fs/4までを使用するため、図10のテーブルは、33個のsinωTの値を、0〜Fs/4の範囲に割り振る。
そして、制御定数テーブル25は、推定値sinωTに対応する推定ゲインL、cosωTを、引き出し、且つブロック34,42に設定する。これにより、ブロック34の式(42)の推定ゲインL1〜L5、ブロック42の式(44)の制御定数a11〜a22(=cosωT又はsinωT)が更新され、オブザーバの外乱抑圧特性を、外乱周波数に応じて、変更する。
このように、現在オブザーバで構成すると、設計が容易であり、且つ外乱抑圧機能を容易に設定できる。又、周波数推定器24が、cosωTを推定する場合にも、同様の構成で実現できる。又、cosωTを推定する場合には、図7のように、クリップブロック24−4は、クリップ範囲を、「−1」〜「+1」に制限することにより、同様の作用効果を奏する。
図11は、図9の構成における他の周波数推定器24Aのブロック図である。図11において、図9で示したものと同一のものは、同一の記号で示してある。
図11において、周波数推定器24Aは、sinωTの第2の適応則である式(33)乃至式(35)を演算し、sin(ωT)を計算する。即ち、周波数推定器24Aでは、推定誤差(G[k])演算器24−7が、推定状態量z1[k],z1[k+1],z2[k],z2[k+1]を受け、式(33)を計算し、第1の推定誤差G[k]を出力する。
第1の演算ブロック24−8は、第1の推定誤差G[k]から、遅延ブロック24−3からの1サンプル前のsin(ω[k]T)を引き、式(34)の第2の推定誤差E[k]を出力する。
ゲイン乗算器24−2は、第2の推定誤差E[k]にゲインKaを乗算し、式(35)の右辺第2項を計算する。加算器24−5は、遅延ブロック24−3からの1サンプル前のsin(ω[k]T)と、ゲイン乗算器24−2の出力とを加算し、式(35)のsin(ω[k+1]T)を出力する。このsin(ω[k+1]T)は、遅延ブロック24−3で1サンプル遅延され、演算ブロック24−8、加算器24−5に入力する。
クリップブロック(飽和処理ブロック)24−4は、入力されたsinωTが、「0」より小さい場合は、「0」に、「1」より大きい場合は、「1」に制限する。
そして、ゲイン可変部24−6は、遅延ブロック24−3からのsin(ω[k]T)から、cos(ω[k]T)を計算し、式(40)に従い、ゲイン乗算部24−2のゲインKaを更新する。
周波数推定器24Aの出力sin(ω[k+1]T)は、図9のように、制御定数テーブル25に入力する。制御定数テーブル25は、図10で示したように、推定値sinωTに対応する推定ゲインL、cosωTを、引き出し、且つブロック34,42に設定する。これにより、ブロック34の式(40)の推定ゲインL1〜L5、ブロック42の式(42)の制御定数a11〜a22(=cosωT又はsinωT)が更新され、オブザーバの外乱抑圧特性を、外乱周波数に応じて、変更する。
このように、現在オブザーバで構成すると、設計が容易であり、且つ外乱抑圧機能を容易に設定できる。又、第2の適応式を用いているので、入力の桁数に差異がなく、固定小数点方式のプロセッサでも、精度良く、計算できる。更に、周波数推定器24Aが、cosωTを推定する場合にも、同様の構成で、式(36)〜式(38)を計算できる。
[位置制御系の第3の実施の形態]
前述の周波数推定では、sin(ωT)を推定した。一方、使用用途によっては、更に推定周波数範囲を拡大したいとの要望がある。例えば、ナイキスト周波数であるFs/2まで拡張したいとの要望がある。この周波数範囲の拡張方法を説明する。
図12は、本発明の第3の実施の形態のブロック図、図13は、図12のsin(ωT/2)推定の説明図、図14は、振動周波数と推定値sin(ωT/2)との関係図、図15は、図12の適応ゲインの説明図である。
図12において、図5で説明したものと同一のものは、同一の記号で示してある。周波数推定器27は、外乱周波数として、sin(ωT/2)を推定する。制御定数テーブル28は、図5と同様に、sin(ωT/2)の値に対応する制御定数を格納する。
現在オブザーバの適応則式(24)の導出で示した、z1[k+1],z2[k+1]は、あくまでも、推定値である。従って、この推定値z1[k+1],z2[k+1]を使って、0.5サンプル分戻した推定値z1[k+0.5],z2[k+0.5]を作成する。
z1[k+1],z2[k+1]は、振動周波数の回転ベクトルのsin,cos成分であるから、図13に示すように、k+1サンプル時点のz1[k+1],z2[k+1]を、0.5サンプル戻すこと、即ち、k+0.5サンプル時点の回転ベクトルz1[k+0.5],z2[k+0.5]を作成することは、回転ベクトルを、ωT/2戻せば良い。従って、z1[k+1],z2[k+1]から、下記式(45)により、0.5サンプル戻したz1[k+0.5],z2[k+0.5]を計算できる。
この式(45)の左辺と右辺を入れ替えて、更に、z1[k+1],z2[k+1]が、単独で表されるように、変換すると、次式(46)が得られる。
前述のz1[k+1」、z2[k+1]の式(17)に、式(46)を代入すると、式(47)が得られる。
更に、式を整理するため、式(47)の左辺、右辺ともに、下記式(48)を掛ける。
この時、cos,sinの行列間の掛け算では、下記式(49)が成立する。
式(49)を利用して、式(47)の左辺、右辺に、式(48)を掛けると、式(50)が得られる。
即ち、sinωTの式(17)と同様に、sin(ωT/2)の関係式が得られた。この式(50)を、sinωTの導出と同様に展開する。即ち、sin(ωT/2),cos(ωT/2)を、それぞれ、「s」、「c」と簡略化すると、式(50)は、式(51)に変換される。
式(51)から、kサンプル時のz1[k]、z2[k]を、求めると、式(52)が得られる。
式(52)の上側に、z2[k+0.5]を掛け、下側に、−z1[k+0.5]を掛けると、式(53)が得られる。この時、z2[k]に、左辺のマイナスを付与している。
式(53)の上下の式の和をとると、式(54)が得られる。
式(54)から、sin(ωT/2)は、下記式(55)で表される。これを適応則に利用する。
式(55)から、デジタル制御においては、外乱周波数を直接推定するため、sin(ωT/2)を推定すればよい。
図14は、振動周波数と推定値sin(ωT/2)との関係図である。デジタル制御において、sin(ωT/2)を、振動周波数fの推定値に使用することは、デジタル制御のサンプリング周波数をFsとすると、次式(56)の周波数を推定することになる。
このことは、図14に示したように、外乱周波数fとsin(ωT/2)とが、単調な関係を示す範囲は、0からFs/2の領域であり、ナイキスト周波数まで推定できる。又、Fs/2以上では、適応追従ができない。例えば、サンプリング周波数Fsを12KHzとすると、6KHzまで推定できる。
従って、低い周波数側の推定精度を高くして、且つ高い周波数まで、推定できる。又、ディスク装置の使用形態では、外部振動が、通常、低い周波数側で問題になることが多い。例えば、数100Hz程度の外部振動が、外部から加わることが多い。そのため、ディスク装置では、低い周波数の振動を精度よく推定できるsin(ωT/2)推定式を利用することが、都合が良い。
次に、図12のsin(ωT/2)推定器27は、次のように、sin(ωT/2)を推定して、適応制御する。
第1の適応制御は、正しく、推定できて、制御系が外乱周波数を抑圧できれば、式(55)のe[k]は、「0」になるので、式(55)の右辺第2項は、「0」となるはずである。
そこで、sin(ωT/2)推定の場合には、式(55)の右辺第2項E[k]を,次式(57)で計算する。
次に、式(57)のE[k]に適応ゲインKを掛け、次式(58)のように、sin(ωT/2)を更新する。
上記のようにして、z1[k+1],z2[k+1],e[k],L4,L5の5つの値を利用して、sin(ωT/2)を、適応的に推定できる。
第2の適応制御の計算方法を説明する。固定小数点方式のプロセッサを使用する場合には、桁数が限られる。上記の、z1[k+1],z2[k+1],e[k],L4,L5の5つの値を利用する場合に、z1[k+1],z2[k+1]の値と,e[k],L4,L5の値との桁が相違する。そこで、限られた桁数を有効に利用するため、以下の手順で、計算する。
sin(ωT)推定の場合には、式(55)の右辺第1項G[k]を,次式(59)で計算する。
次に、現在の設定値であるsin(ωT/2)と、式(59)のずれE[k]を、次式(60)で計算する。
この式(60)のE[k]に適応ゲインKを掛け、次式(61)のように、sin(ωT/2)を更新する。
上記のようにして、z1[k+1],z1[k],z2[k+1],z[k]の4つの値を利用するだけで、sin(ωT/2)を、適応的に推定できる。
又、第1の実施の形態と同様に、これらの式において、適応ゲインは一定値として説明したが、sinωTの推定と同様に、図15に示すように、ωが高いとき,sinωT/2のω変化に対する変動は小さい。ωが小さい時、sinωT/2のω変化に対する変動は大きい。従って、現在の推定外乱周波数に応じて、異なる値をとるべきである。その適応ゲインは、可変であり,周波数が低いと大きく,周波数が高いと低くすべきである。
即ち、sinωT/2を推定する方法においても、適応ゲインKaは、下記式(62)に示すように、cosωT/2に比例した値をとる。これにより、変化幅の相違による、誤差への影響を抑制できる。
次に、図12で示した補償器23は、オブザーバで構成され、前述の式(41)により、外乱抑圧制御量(電流)Udist(又は、Ud)を計算する。
図12の制御定数テーブル28は、図17で説明するように、sin(ωT/2)の値と、対応するL4、L5、cosωT、sinωTの値のテーブルで構成される。cosωT、sinωTの値は、式(41)のHの計算に使用する。
従って、サンプル毎に、sin(ωT/2)演算器27で計算されたsinωT/2に対応するL4、L5、cosωT,sinωTの値が、テーブル28から読み出され、補償器23にセットされる。補償器23は、セットされた制御定数と、位置誤差から、式(41)を計算し、外部抑圧制御量Udistを計算し、加算ブロック26に出力する。
このようにして、デジタル位置制御系において、外乱周波数に適応した位置制御を行う場合に、外乱周波数を精度良く推定し、外乱周波数に適応した位置制御が可能となる。
[位置制御系の第4の実施の形態]
図16は、本発明の第4の実施の形態の位置制御系のブロック図、図17は、図16の制御定数テーブルの説明図である。図16は、コントローラ21、補償器23を、一体の現在オブザーバで構成した例である。又、sinωT/2演算部27を、第1の適応制御の計算方法を適用した例である。
図16の位置制御系は、外乱周波数を検出し、外乱を適応制御により、抑圧するため、前述の式(42)、(43)、(44)で示される外乱抑圧を行う現在オブザーバである。即ち、この実施の形態は、コントローラのモデルと外乱モデルを含むオブザーバによる位置制御系の例である。図16において、図9、図12で示したものと同一のものは、同一の記号で示してある。
図16において、現在オブザーバ21,23,26の構成は、図9と同一のため、説明を省略する。この現在オブザーバに、周波数推定器27と、制御定数テーブル28とを付与する。周波数推定器27は、sin(ωT/2)の第1の適応則である式(57)、(58)を演算し、sin(ωT/2)を計算する。
即ち、周波数推定器27では、状態時点変換ブロック27−1は、式(45)に従い、z1[k+1],z2[k+1]を、z1[k+0.5],z2[k+0.5]に変換する。推定誤差(E[k])演算器27−2が、推定位置誤差e[k]、推定状態量z1[k+0.5],z2[k+0.5]、推定ゲインL4,L5を受け、式(57)を計算し、推定誤差E[k]を出力する。
ゲイン乗算器27−3は、推定誤差E[k]にゲインKを乗算し、式(58)の右辺第2項を計算する。加算器27−5は、遅延ブロック27−4からの1サンプル前のsin(ω[k]T/2)と、ゲイン乗算器27−3の出力とを加算し、式(58)のsin(ω[k+1]T/2)を出力する。このsin(ω[k+1]T/2)は、遅延ブロック27−4で1サンプル遅延され、加算器27−5に入力する。
クリップブロック(飽和処理ブロック)27−6は、入力されたsin(ωT/2)が、「0」より小さい場合は、「0」に、「1」より大きい場合は、「1」に制限する。
そして、ゲイン可変部27−7は、遅延ブロック24−4からのsin(ω[k]T/2)から、cos(ω[k]T/2)を計算し、式(62)に従い、ゲイン乗算部27−3のゲインKaを更新する。
周波数推定器27の出力sin(ω[k+1]T/2)は、制御定数テーブル28に入力する。図17に示すように、制御定数テーブル28は、推定値sinωT/2に対応する、推定ゲインL1、L2,L3,L4,L5、cosωT,sinωTの値を格納する。sinωT/2は、図14で説明したように、0〜Fs/2までを使用するため、図17のテーブルは、33個のsinωT/2の値を、0〜Fs/2の範囲に割り振る。
そして、制御定数テーブル28は、推定値sinωT/2に対応する推定ゲインL、cosωT、sinωTを、引き出し、且つブロック34,42に設定する。これにより、ブロック34の式(42)の推定ゲインL1〜L5、ブロック42の式(44)の制御定数a11〜a22(=cosωT又はsinωT)が更新され、オブザーバの外乱抑圧特性を、外乱周波数に応じて、変更する。
このように、現在オブザーバで構成すると、設計が容易であり、且つ外乱抑圧機能を容易に設定できる。
図18は、図16の周波数推定器27の他の実施の形態のブロック図である。図18において、図16で示したものと同一のものは、同一の記号で示してある。sin(ωT/2)演算部27Aに、第2の適応制御の計算方法を適用した例である。
図18において、周波数推定器27Aは、sin(ωT/2)の第2の適応則である式(59)乃至式(61)を演算し、sin(ωT/2)を計算する。
即ち、周波数推定器27Aでは、状態時点変換ブロック27−1は、式(45)に従い、z1[k+1],z2[k+1]を、z1[k+0.5],z2[k+0.5]に変換する。推定誤差(G[k])演算器27−8が、推定状態量z1[k],z1[k+0.5],z2[k],z2[k+0.5]を受け、式(59)を計算し、第1の推定誤差G[k]を出力する。
第1の演算ブロック27−9は、第1の推定誤差G[k]から、遅延ブロック27−4からの1サンプル前のsin(ω[k]T/2)を引き、式(60)の第2の推定誤差E[k]を出力する。
ゲイン乗算器27−3は、第2の推定誤差E[k]にゲインKを乗算し、式(61)の右辺第2項を計算する。加算器27−5は、遅延ブロック27−4からの1サンプル前のsin(ω[k]T/2)と、ゲイン乗算器27−3の出力とを加算し、式(61)のsin(ω[k+1]T/2)を出力する。このsin(ω[k+1]T/2)は、遅延ブロック27−4で1サンプル遅延され、演算ブロック27−9、加算器27−5に入力する。
図16と同様に、クリップブロック(飽和処理ブロック)27−6は、入力されたsin(ωT/2)が、「0」より小さい場合は、「0」に、「1」より大きい場合は、「1」に制限する。
そして、ゲイン可変部27−7は、遅延ブロック24−4からのsin(ω[k]T/2)から、cos(ω[k]T/2)を計算し、式(62)に従い、ゲイン乗算部27−3のゲインKaを更新する。
この周波数推定器27Aの出力sin(ω[k+1]T/2)は、制御定数テーブル28に入力する。制御定数テーブル28は、図17で示したものと同一であり、推定値sin(ωT/2)に対応する推定ゲインL、sinωT,cosωTを、引き出し、且つブロック34,42に設定する。これにより、ブロック34の式(42)の推定ゲインL1〜L5、ブロック42の式(44)の制御定数a11〜a22(=cosωT又はsinωT)が更新され、オブザーバの外乱抑圧特性を、外乱周波数に応じて、変更する。
このように、現在オブザーバで構成すると、設計が容易であり、且つ外乱抑圧機能を容易に設定できる。又、第2の適応式を用いているので、入力の桁数に差異がなく、固定小数点方式のプロセッサでも、精度良く、計算できる。
[位置制御系の第5の実施の形態]
図19は、本発明の第5の実施の形態の位置制御系のブロック図である。図19は、コントローラ21と、補償器23を、分離した現在オブザーバで構成した例である。又、sin(ωT)演算部24に、第1の適応制御の計算方法を適用した例である。
図19の位置制御系は、外乱周波数を検出し、外乱を適応制御により、抑圧するため、下記式(63)、(64)、(65)、(66)、(67)で示される外乱抑圧を行う現在オブザーバである。
尚、式(67)において、a11〜a22は、式(9)、式(18)で示したsin,cosの値である。
即ち、この実施の形態は、コントローラのモデルと外乱モデルを含むオブザーバによる位置制御系の例である。図19において、図5、図9、図16で示したものと同一のものは、同一の記号で示してある。
図19において、第1の演算ブロック20は、ヘッド3(図1参照)が読み取った前述のサーボ情報を復調して得た観測位置y[k]から目標位置rを差し引き、実位置誤差er[k]を演算する。
第2の演算ブロック32は、実位置誤差er[k]からオブザーバの推定位置x[k]を差し引き、推定位置誤差e[k]を演算する。状態推定ブロック34−1は、この推定位置誤差e[k]と、内部変数である式(43)の推定ゲインL(L1,L2)を用いて、推定修正値(式(63)の右辺第2項)を、演算する。
そして、加算ブロック36−1は、この推定修正値と、遅延ブロック46−1から状態量(式(63)の右辺第1項)x[k],v[k]とを加算し、式(63)のように、推定位置x[k],推定速度v[k]を得る。尚、式(63)では、推定位置誤差e[k]を、(y[k]−x[k])で表示する。
この推定値は、第4の演算ブロック38−1で、状態フィードバックゲイン(一Fa=F1,F2)を乗算され、式(64)のように、アクチュエータ1の駆動値u[k]を得る。一方、加算ブロック36−1からの式(63)の推定値は、第5の演算ブロック42−1で、推定ゲインAa(式(66)の右辺第1項の行列)を乗じられる。
第4の演算ブロック38−1の駆動値u[k]は、第6の演算ブロック40で、推定ゲインB(式(66)の右辺第2項のu[k]に乗じる値)を乗じられる。両乗算結果は、加算ブロック44で、加算され、式(66)の次のサンプルの推定状態量x[k+1],v[k+1]を得る。
この次のサンプルの推定状態量は、前述のように、遅延ブロック46−1に入力し、状態推定ブロック34−1の推定修正値で、修正される。そして、加算ブロック36−1からの式(63)の推定値は、第5の演算ブロック48で、推定位置x[k]が取り出され、前述の第2の演算ブロック32に入力する。
同様に、外乱モデルにおいても、第2の状態推定ブロック34−2は、この推定位置誤差e[k]と、内部変数である式(63)の推定ゲインLd1(L3、L4,L5)を用いて、推定修正値(式(63)の右辺第2項)を、演算する。
そして、第2の加算ブロック36−2は、この推定修正値と、第2の遅延ブロック46−2から状態量(式(63)の右辺第1項)b[k],z1[k],z2[k]とを加算し、式(63)のように、推定バイアスb[k],推定外乱量z1[k],z2[k]を得る。
この推定値は、第6の演算ブロック38−2で、状態フィードバックゲイン(一Fd1=F3、F4,F5)を乗算され、式(65)のように、アクチュエータ1の外乱抑圧駆動値ud[k]を得る。一方、第2の加算ブロック36−2からの式(63)の推定値は、第7の演算ブロック42−2で、推定ゲインAd1(式(67)の右辺の行列)を乗じられる。
第8の演算ブロック50は、第5の演算ブロック38−2の駆動値ud[k]と、第4の演算ブロック38−1の駆動値u[k]とを加算し、アクチュエータの駆動値u[k]を出力する。
この例でも、この現在オブザーバに、周波数推定器24と、制御定数テーブル25とを付与する。周波数推定器24は、図9で説明したものである。又、制御定数テーブル25は、図10で説明したものである。
そして、制御定数テーブル25は、推定値sinωTに対応する推定ゲインL1、L2を、状態推定ブロック34−1に、推定ゲインL3,L4,L5,sinωT,cosωTを、ブロック34−2,42−2に設定する。これにより、ブロック34−1,34−2の式(63)の推定ゲインL1〜L5、ブロック42−2の式(67)の制御定数a11〜a22(=cosωT又はsinωT)が更新され、オブザーバの外乱抑圧特性を、外乱周波数に応じて、変更する。
このように、外乱モデルを分離した現在オブザーバで構成すると、外乱モデルの設計が容易であり、且つ外乱抑圧機能を容易に設定できる。
[位置制御系の第6の実施の形態]
図20は、本発明の第6の実施の形態の位置制御系のブロック図である。図20は、コントローラ21と、補償器23を、分離した現在オブザーバで構成した例である。又、sin(ωT)演算部24Aに、第2の適応制御の計算方法を適用した例である。
図20において、図19で示したものと同一のものは、同一の記号で示してある。図20の位置制御系は、外乱周波数を検出し、外乱を適応制御により、抑圧するため、前述の式(63)乃至(67)で示される外乱抑圧を行う現在オブザーバである。
即ち、この実施の形態は、図19と同様に、コントローラのモデルと外乱モデルを含むオブザーバによる位置制御系の例である。従って、オブザーバの説明は、省略する。
この例でも、この現在オブザーバに、周波数推定器24Aと、制御定数テーブル25とを付与する。周波数推定器24Aは、図11で説明したものである。又、制御定数テーブル25は、図10で説明したものである。
そして、制御定数テーブル28は、推定値sin(ωT/2)に対応する推定ゲインL1、L2を、状態推定ブロック34−1に、推定ゲインL3,L4,L5,sinωT,cosωTを、ブロック34−2,42−2に設定する。これにより、ブロック34−1,34−2の式(63)の推定ゲインL1〜L5、ブロック42−2の式(67)の制御定数a11〜a22(=cosωT又はsinωT)が更新され、オブザーバの外乱抑圧特性を、外乱周波数に応じて、変更する。
このように、外乱モデルを分離した現在オブザーバで構成すると、外乱モデルの設計が容易であり、且つ外乱抑圧機能を容易に設定できる。
[他の実施の形態]
図19、図20の説明では、周波数推定器に、sinωTを推定する推定器で説明したが、cosωTを推定する推定器や、sin(ωT/2)を推定する推定器を適用することもできる。
又、以上の説明では、補償器23に、オブザーバの構成で説明した。しかしながら、図5の補償器23にフィルタを使用する場合にも、適用できる。
更に、ヘッドの位置制御装置で、説明したが、他の位置制御装置にも適用できる。同様に、ディスク装置を磁気ディスク装置で説明したが、他のデータ記憶装置にも適用できる。