高精度かつ応答性の良い機械では、使用する軸受やボールネジに対して、高い予圧をかけ、ロストモーションを小さく抑えて製造している。しかし、長期的には摩耗等により、これらの予圧が低下し、機械特性が変化する。このため、機械共振周波数がずれて、ノッチフィルターの効果が低下し、機械発振や異音が再発する問題があった。また、予圧が低下すると、モータからテーブルまでの間の微小変位に対するロストモーションが増加し、微小変位の振動となる高い周波数の駆動力に対して、サーボモータから遠い箇所ほど応答しなくなる。その結果、サーボモータが駆動する軸のイナーシャーが高い周波数ほど等価的に低下し、速度制御のループゲインが高域ほど高くなり、サーボモータは、出荷時よりも高い周波数に対して応答し易くなる。このため、出荷時には問題無かった高い周波数で、新たな機械発振や異音が発生するという問題があった。
また、機械構成によっては、テーブルの位置や搭載するワークの重量等でも機械共振周波数が微妙に変化する場合がある。そのため、このような条件の機械では、除去周波数の帯域が狭く、位相特性の良いノッチフィルターが使用できず、サーボ制御の応答性を上げることができないという問題もあった。
また、エンコーダの内挿誤差に関しては、モータ回転数で誤差成分の周波数が変化し、加工精度としては、十分過ぎる位置誤差量であっても、高域になるほど周波数の自乗に比例して振動レベルが高くなる上、さらに人の可聴特性は高域ほど音量が大きく感じられる。そのため、応答性の良い機械ほど、エンコーダの内挿誤差が騒音となり易く、加工精度的にはオーバースペックとなる超高精度のエンコーダを搭載する必要があった。
なお、高域の有害な応答は、ローパスフィルター等で低下させる方法がある。しかし、ローパスフィルターの除去特性を上げようとすると、機械制御に必要な低域の位相特性が悪化するため、ローパスフィルターで対策できる条件が限られていた。
本発明は、上述のような事情から成されたものであり、本発明の一側面の目的は、機械共振やエンコーダの内挿誤差によって発生する高域の周期的に変化する有害な信号の周波数や位相や振幅を短時間で同定する周波数同定器を実現することにある。また、別の側面の目的は、この周波数同定器を利用して有害な高域の信号成分を除去し、発振や異音の発生を防止することにある。
本発明に係る周波数同定器は、入力信号を一定周期TでN個サンプルし、窓関数を掛けた後のデータから、NT周期を1次とし(すなわちN×Tの長さを1周期とした場合の周波数の成分を1次の成分とし)、前記N個のデータをフーリエ変換して求めたm次(mは、N/2−4より小さい自然数)とm+1次とm+2次とm+3次のCOS成分の値C(m),C(m+1),C(m+2),C(m+3)と、SIN成分の値S(m),S(m+1),S(m+2),S(m+3)の8つの値に基づき、周波数(m+1)/(NT)から周波数(m+2)/(NT)間の1つの信号の周波数を1/(NT)より高い分解能で同定する周波数同定器である。
また、平方根の関数をSQRTとした場合、Si=SQRT(C(m+2)^2+S(m+2)^2)−SQRT(C(m)^2+S(m)^2)とCi=SQRT(C(m+1)^2+S(m+1)^2)−SQRT(C(m+3)^2+S(m+3)^2)を計算し、数値Ciと数値Siの値に基づき、周波数Fiを同定する周波数同定器としても良い。
また、2変数の逆正接関数をATAN2とした場合、Fi=(m+1+2*ATAN2(Ci,Si)/π)/(NT)を計算することにより、周波数Fiを同定する周波数同定器としても良い。なお、ATAN2(X,Y)は、座標原点と点(X,Y)を結ぶ線が正の方向のX軸に対してなす角度を算出する関数である。
また、2*SQRT(Ci^2+Si^2)の値に基づき、周波数Fiの信号の振幅を同定する周波数同定器としても良い。
また、周波数FiとATAN2(C(m+1),S(m+1))の値又は、ATAN2(C(m+2),S(m+2))の値に基づき、周波数Fiの信号の位相を同定する周波数同定器としても良い。
その他、前記周波数同定器と、その同定器が同定した周波数と入力信号を入力とするデジタルノッチフィルターとを含み、入力信号から同定した周波数成分を除去する信号除去装置としても良い。
また、前記周波数同定器と、その周波数同定器が同定した周波数と振幅と位相と同じ信号を生成するデジタル信号生成器と、入力信号から前記信号生成器が発生した信号を減算する減算器とを含む信号除去装置としても良い。
本発明の周波数同定器では、フーリエ変換により求めた連続する4つの次数の8つのパラメータ(それら4つの次数におけるSIN成分とCOS成分)で、1次の周波数と同じ帯域内に存在する単一周波数の信号の周波数と位相と振幅を高精度に同定できる。そのため、一般的な高速フーリエ変換(FFT)よりも大幅に少ないデータ数で、2次成分より高域にある周波数を短時間に同定することが可能である。また、エンコーダの内挿誤差のような速度変化に応じて周波数が急激に変化する信号に対しても、周波数の同定が可能であり、フィルターを用いずに、同定した周波数や位相や振幅を入力とするデジタル信号生成器を用いて内挿誤差による信号成分を除去することも可能である。このため、加工精度にマッチした内挿精度のローコストなエンコーダが使用可能となる。また、低域側の位相特性に影響を与えるフィルターを使用せずに有害な信号を除去することも可能なため、サーボ制御の応答特性を改善することが可能となる。また、FFT等で、ノッチフィルターの周波数を同定するような高度なサーボシステムと比較し、本発明の周波数同定器では、処理時間が大幅に短くできるため、サーボ制御の処理負担を低減できる。
これらのことから、本発明の周波数同定器によって、機械発振や異音が発生しにくい、高応答なサーボシステムをローコストに提供することが可能となる。
図1のサーボ制御を示すブロック4内では、数値制御装置等から指令される位置指令値Pcから、サーボモータ6搭載のエンコーダ7が検出した位置検出データPoを減算することにより、位置偏差Pdを算出する。乗算器9では、位置偏差Pdに位置ループゲインKpを乗算して、速度指令値Vcを出力する。差分演算器8では、位置検出データPoと前回のPoとの差分演算を行うことにより、速度Velを計算し、出力する。速度指令値Vcから速度Velが減算されることで、速度偏差Vdが算出される。速度偏差Vdには、伝達関数演算器10で比例ゲインや積分ゲインが乗算される。また、伝達関数演算器10は、このゲイン乗算結果に対して、低域位相への影響の少ない範囲で、周波数変動の少ない機械共振周波数成分を除去するノッチフィルターやローパスフィルター等のフィルター演算を行い、これによりトルク指令値Tcを算出して出力する。この説明に用いる例では速度偏差Vdやトルク指令値Tcの演算は、あくまで一例であるが、T=500μs間隔の制御周期で処理される。
また、速度偏差Vdは、周波数同定器1に入力される。周波数同定器1の内部構成の例を図2に示す。周波数同定器1の窓関数演算器11は、入力されたVd(n)に対して、ハン窓関数であるVd(n)*(0.5−0.5*COS(2π*n/N))の演算を行い、その演算の結果を数値Vw(n)として出力する。この例ではN=20とする。この場合、窓関数処理後の数値Vw(n)については、20個(N=20)おきに、連続する20個の数値Vw(n)に対して、フーリエ演算器12,13,14,15,16,17,18,19で、それぞれCOS(2π*2n/N),SIN(2π*2n/N),COS(2π*3n/N),SIN(2π*3n/N),COS(2π*4n/N),SIN(2π*4n/N),COS(2π*5n/N),SIN(2π*5n/N)が乗算された後の20個が積算(合計)され、その積算結果にさらに0.1が乗算される。これにより、フーリエ演算器12,13,14,15,16,17,18,19からは、それぞれ、周波数100Hz(この例での1/(NT)の値)を1次の基本波とする2次のCOS成分(m=2)、2次のSIN成分,3次のCOS成分、3次のSIN成分,4次のCOS成分、4次のSIN成分,5次のCOS成分、5次のSIN成分である数値C2,S2,C3,S3,C4,S4,C5,S5が出力される。
数値C2と数値S2,数値C3と数値S3,数値C4と数値S4,数値C5と数値S5は、それぞれ自乗和平方根演算器20,21,22,23に入力される。自乗和平方根演算器20,21,22,23は、それぞれ、入力された2つの数値の自乗和の平方根(すなわち各次数の振幅)を計算し、その計算結果を数値A2,A3,A4,A5として出力する。数値A3と数値A5は、減算器24に入力される。減算器24は、A3−A5の演算を行い、その演算の結果を数値Ciとして出力する。同様に減算器25は、A4−A2の演算を行い、その演算の結果を数値Siとして出力する。周波数演算器27は、それら数値Ciと数値Siについて、(3+2*ATAN2(Ci,Si)/π)/(NT)の演算を行い、その演算の結果を数値Fiとして出力する。また、振幅演算器26で、数値Ciと数値Siに対して、自乗和平方根演算であるSQRT(Ci^2+Si^2)の演算を行い、その演算結果を2倍した数値Aiを出力する。
入力信号Vd(n)が単一周波数であった場合の、数値A2,A3,A4,A5の入力周波数に対する感度レベルをグラフにすると、図3のグラフになる。また、A3−A5とA4−A2の感度特性をグラフにすると、図4のようになる。図4のグラフからわかるように、300Hz(3/(NT))から400Hz(4/(NT))間では、A3−A5である信号Ciは、入力信号の周波数変化の余弦値に比例して変化し、A4−A2である信号Siは、入力信号の周波数変化の正弦値に比例して変化している。このことから、m=2の時の(m+1+2*ATAN2(Ci,Si)/π)/(NT)の演算により得られる数値Fiが、入力信号の周波数の同定値となることが理解できる。
また、入力信号Vd(n)が単一周波数であった場合の、A3−A5とA4−A2の自乗和平方根の感度特性をグラフにすると、図5のようになり、300Hz(3/(NT))から400Hz(4/(NT))間では、多少の誤差はあるが入力信号振幅の約1/2の値を示す。したがって、数値Aiが入力信号の振幅の同定値となることが理解できる。
周波数同定器1によって300Hzから400Hz間の入力信号の振幅を同定した数値Aiは、比較器2に入力され、予め設定された数値ATよりもAiが大きい場合に、デジタルノッチフィルター3へ周波数設定信号Setを1にして出力する。デジタルノッチフィルター3は、周波数設定信号Setが1になると、周波数同定器1が出力した入力信号の周波数を同定した数値Fiにノッチフィルターの中心周波数を変更する。また、デジタルノッチフィルター3は、設定された周波数の成分をトルク指令値Tcから除去し、除去結果のトルク指令値Tnを出力する。電流変換器5は、トルク指令値Tnにしたがって、サーボモータ6の3相の巻線電流UVWを電流制御する。
図1の例は、モータが駆動する機械側に300Hzから400Hz間で、共振周波数が変動する機械要素があることを前提としたサーボシステムを示している。このような機械に対して、本発明の周波数同定器及び信号除去装置を用いれば、300Hzから400Hz間で、共振による大きな信号成分が速度偏差Vdに発生した場合、10msという短い応答時間で、共振周波数を同定し、ノッチフィルターの除去周波数を共振周波数に一致させることが可能となる。このため、テーブルに搭載する重力ワーク等で、機械起動時に共振周波数が大きく変化していても、すばやく共振を抑制できる。これにより、起動直後の共振による一時的な異音発生も防止することが可能となる。また、高精度に周波数を同定できるため、ノッチフィルターのQ値を高く設定することも容易である。そのため、ノッチフィルターによる低域位相特性の悪化を小さく抑えることが可能である。
速度偏差信号Vdについては、速度指令信号Vc≒速度信号Velとなるため、原理的に速度偏差信号Vdは非常に小さな信号しか含まれないことになる。また、通常であれば、速度偏差信号Vdに含まれる主成分は、制御に必要な低域成分が支配的となるため、高域の信号は共振等がない限り、ほぼ0となる。しかしながら、高域に共振周波数が多数存在する場合は、周波数同定器1が複数の信号に対して応答する可能性がある。これに対処するには、高い方の共振周波数成分をサーボ制御の伝達関数演算器10のフィルターで除去すればよい。そして、周波数が変化し易く、低域の位相特性に影響を与える可能性のある低い方の共振周波数を、周波数同定器1とノッチフィルター3で除去すると良い。
図6は、本発明に係る別の実施形態の周波数同定器と信号発生器を組み合わせた信号除去装置の一例を示すサーボ制御システムのブロック図である。なお、図6で、図1と同じものは、同一番号を付し説明を省略する。
図6で伝達関数演算器10からのトルク指令値Tcは、それぞれ窓関数演算器30,31に入力される。窓関数演算器30は、入力されたVd(n)に対して、ハン窓関数であるVd(n)*(0.5−0.5*COS(2π*n/N))の演算を行い、その演算の結果を数値Tw1として周波数同定器32に出力する。また、窓関数演算器31は、入力されたVd(n)に対して、ハン窓関数であるVd(n)*(0.5−0.5*COS(2π*n/N+π))の演算を行い、その演算の結果を数値Tw2として周波数同定器33に出力する。
周波数同定器32の内部構成の例を図7に示す。なお、周波数同定器33の内部構成も、これと同様の内部構成を有する。周波数同定器32のFFT演算器40では、窓関数演算器30の窓関数が0から始まる32個おきに、32個の数値Tw1(n)の値に対して高速フーリエ演算を行う。これにより、FFT演算器40は、62.5Hz(これは1/(32T)に該当)を1次の基本波とする15次までのCOS成分C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15とSIN成分S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14,S15を演算して出力する。最大成分選択器41では、演算した各次数の成分のうち2次以上かつ14次以下の次数の中で、隣り合う2組のレベルが最も大きな2つの次数を選択する。すなわち、2次〜14次の各次数の中で、振幅(すなわちSIN成分とCOS成分の自乗和の平方根)が第1位(最大)と第2位である隣り合う2つの次数を特定する(一般に、振幅最大の次数と第2位の次数は隣り合う)。そして、特定した2つの次数のうち次数の小さい方を(m+1)次としたときに、数値Cm,Sm,C(m+1),S(m+1),C(m+2),S(m+2),C(m+3),S(m+3)と数値mを出力する。数値Cmと数値Sm,数値C(m+1)と数値S(m+1),数値C(m+2)と数値S(m+2),数値C(m+3)と数値S(m+3)は、それぞれ自乗和平方根演算器42,43,44,45に入力される。自乗和平方根演算器42,43,44,45は、それぞれ入力された2つの数値の自乗和の平方根を計算し,その計算結果を数値Am,A(m+1),A(m+2),A(m+3)として出力する。
減算器48は、A(m+1)−A(m+3)の演算を行い、その演算結果を数値Ci1として出力する。また、減算器49は、A(m+2)−Amの演算を行い、その演算結果を数値Si1として出力する。数値Ci1と数値Si1と数値mについては、周波数演算器51で、(m+1+2*ATAN2(Ci1,Si1)/π)/(NT)の演算が行われ、これにより数値Fi1が求められ、出力される。また、振幅演算器50は、数値Ci1と数値Si1について、自乗和平方根演算であるSQRT(Ci^2+Si^2)の演算を行う。さらに振幅演算器50は、周波数演算器51が求めた数値Fi1の値に対応する変換係数を変換テーブルから求め、上述の自乗和平方根の演算結果をその変換係数で微調整し、その微調整の結果を2倍した値を数値Ai1として出力する。なお、この数値Fi1の値による微調整のために用いる変換テーブルは、図5のグラフの300Hz((m+1)/(NT))から400Hz((m+2)/(NT))間の感度レベルを0.5の一定値に変換する変換係数と同じものである。
また、逆正接演算器46は、数値C(m+1)と数値S(m+1)に対して2項の逆正接演算ATAN2を実行し、その演算の結果として数値P(m+1)を出力する。同様に逆正接演算器47は、数値C(m+2)と数値S(m+2)に2項の逆正接演算を行い、演算結果の数値P(m+2)を出力する。数値P(m+1)と数値P(m+2)と数値Fi1を入力とする位相演算器52は、入力信号(具体例は後述)の位相が0の時のP(m+1)又はP(m+2)の位相のオフセット量(後述する図8から求めることができる)を数値Fi1の値に応じて数値P(m+1)又は数値P(m+2)から除去し、除去結果の値の符号を変えたものを、数値Pi1として出力する。ここで、位相演算器52では、数値Fi1が(m+2)/(NT)よりも(m+1)/(NT)に近い場合は、数値P(m+1)に基づいて数値Pi1を算出する。また、数値Fi1が(m+1)/(NT)よりも(m+2)/(NT)に近い場合は、数値P(m+2)に基づいて数値Pi1を算出する。このようにPi1の計算に(m+1)/(NT)と(m+2)/(NT)のうち数値Fi1が近い方の次数を用いるのは、その方が高い精度を期待できるからである。精度が多少低くてもよければ、Pi1は、P(m+1)とP(m+2)のどちらに基づいて計算しても良い。また、上述の「除去」の計算は、同じ次数の間で行う。すなわち、例えば、数値P(m+1)に基づいて数値Pi1を算出すると決定した場合は、逆正接演算器46が出力した数値P(m+1)から、入力信号の位相が0のときのP(m+1)の位相オフセット量(図8から算出可能)を除去すなわち減算し、その減算結果の値の符号を反転したものを、数値Pi1として算出する。
周波数係数x=2*ATAN2(Ci,Si)/πとした場合、位相0の入力信号sin(2π/NT*(m+1+x)t)に対する数値P(m+1)と数値P(m+2)の位相関係をグラフにすると図8のようになる。また、周波数係数x=0.2となる入力信号を例として、位相phを変えた時の入力信号に対する数値P(m+1)及び数値P(m+2)の位相関係をそれぞれグラフにすると図9のようになる。図9のグラフから分かるように、数値P(m+1)と数値P(m+2)は、(周期的な折り返しはあるものの、一般には)入力信号の位相の増加に伴って線形に減少する。また、図8のグラフから分かるように、入力信号の位相が0の場合、数値P(m+1)と数値P(m+2)の位相のオフセット量(図9の縦軸)は、周波数係数xの増加に伴って線形に減少する。このようなことから、上述の演算で求められる数値Pi1が入力信号の位相の同定値となることを理解できる。以上の処理によって、周波数同定器32では、入力信号となるトルク指令値Tcに含まれ高域にある大きな成分の信号の周波数と位相と振幅を同定することができる。
周波数同定器32が同定した周波数Fi1と位相Pi1と振幅Ai1は、信号生成器34に入力され、同定したパラメータに従った信号となる数値Ni1を出力する。数値Ni1は、窓関数演算器36に入力される。窓関数演算器36では、窓関数演算器30と同様に、入力されたNi1(n)に対して、ハン窓関数であるNi1(n)*(0.5-0.5*COS(2π*n/N))の演算が行われ、数値Nwi1として出力する。
周波数同定器33と信号生成器35と窓関数演算器37では、数値Tw2に対して周波数同定器32と信号生成器34と窓関数演算器36と同様の処理を周波数同定器32とは16T時間をずらして処理される。これにより、窓関数演算器30で除去されたトルク指令値Tcの信号成分に対しても周波数同定器32と信号生成器34と同様の処理が行われることになる。したがって、窓関数演算器37からは、数値Nwi1を補完する数値Nwi2が出力される。数値Nwi1と数値Nwi2は、加算器38で合成すなわち加算され、その合成の結果が数値Niとして出力される。減算器39では、トルク指令値Tcから数値Niが減算され、その減算の結果が数値Tnrとして出力される。数値Tnrは、電流変換器5へのトルク指令値として入力される。
以上から図7に示した周波数同定器では、図2に示した周波数同定器と比較し、高域の広い範囲で発生するトルク指令値Tcに含まれる有害な信号成分を同定することが可能である。また、同定した周波数成分を信号生成器で生成して、トルク指令値Tcから除去することが可能である。これにより、エンコーダの内挿誤差による高域の異音発生をフィルター無しでも防止することが可能である。また、高域で突発的に機械共振が発生しても、共振レベルが発振条件を大きく超えない限り、除去することも可能であり、共振による異音発生も防止できる。ただし、機械共振レベルが高く発振し易い条件では、図1の例のようにデジタルノッチフィルターを用いて共振周波数を除去する必要がある。
なお、図1の例では、デジタルノッチフィルター1個の例を示したが、デジタルノッチフィルターを複数個にして、同定した周波数が大きく離れていれば、別のノッチフィルターの除去周波数を設定するようにすれば、複数の共振周波数に対しても、有害な信号成分を除去することが可能である。