以下、本開示の実施例を図面に基づいて説明する。以下の実施例において同一の構成には同一の符号を付す。
本開示では、周期的な負荷トルク変動を有する圧縮機を駆動する永久磁石同期モータ(PMSM(Permanent Magnet Synchronous Motor))のトルク制御を位置センサレスベクトル制御により行うモータ制御装置を一例に挙げて説明する。しかし、開示の技術は、周期的な負荷トルク変動を有する圧縮機を駆動するモータのトルク制御を行うモータ制御装置に広く適用可能である。
[実施例1]
<モータ制御装置の構成>
図1は、本開示の実施例1のモータ制御装置の構成例を示す図である。図1において、モータ制御装置100は、減算器11,18,19,40と、速度制御器12と、加算器13,16,17,21,22と、電流指令値算出器14と、電圧指令値算出器20と、d−q/u,v,w変換器23と、PWM(Pulse Width Modulation)変調器24と、IPM(Intelligent Power Module)25とを有する。IPM25は、モータMに接続される。モータMの一例としてPMSMが挙げられる。
また、モータ制御装置100は、シャント抵抗26と、電流センサ27a,27bと、3φ電流算出器28とを有する。なお、モータ制御装置100は、シャント抵抗26、または、電流センサ27a,27bの何れか一方を有していれば良い。
また、モータ制御装置100は、u,v,w/d−q変換器29と、軸誤差演算器30と、PLL(Phase Locked Loop)制御器31と、位置推定器32と、1/Pn処理器33と、補正トルク生成器34と、IIRフィルタ(Infinite Impulse Response Filter)35a,35bと、非干渉化制御器36と、電流誤差補正値生成器37と、補正トルク制限値生成器38とを有する。
減算器11は、モータ制御装置100の外部(例えば、上位のコントローラ)からモータ制御装置100へ入力された機械角速度指令値ωm*から、1/Pn処理器33より出力された現在の推定角速度である機械角推定角速度ωmを減算することにより角速度誤差Δωを算出する。
速度制御器12は、減算器11より出力された角速度誤差Δωの平均がゼロに近づくような平均トルク指令値To*を生成する。
加算器13は、速度制御器12より出力された平均トルク指令値To*と、補正トルク生成器34より出力された補正トルク指令値ΔTとを加算することにより合計トルク指令値T*を算出する。
電流指令値算出器14は、合計トルク指令値T*によって示される定トルク曲線とMTPI(最大トルク/電流制御)曲線との交点に基づいて、q軸電流指令値Iq*及びd軸電流指令値Id*を算出する。
ここで、定トルク曲線とMTPI曲線との交点は、例えば、式(1)に示すモータトルク式と、MTPI曲線におけるd軸電流Idとq軸電流Iqとの関係を示す式(2)とを用いて算出できる。式(1)の右辺において、第1項がマグネットトルクを表し、第2項がリラクタンストルクを表し、マグネットトルクはq軸電流Iqのみを含み、リラクタンストルクはq軸電流Iqとd軸電流Idとの双方を含む。従って、q軸電流Iqとd軸電流Idとを適切に制御することにより、モータMに適正なトルクを発生させることができる。式(1)及び式(2)において、“Pn”はモータMの極対数、“Ψa”はモータMの鎖交磁束、“Ld”はモータMのd軸インダクタンス、“Lq”はモータMのq軸インダクタンスを示す。
式(1)及び式(2)よりd軸電流Idを消去すると、q軸電流Iqに関する4次方程式である式(3)を得ることができる。
式(3)に示す4次方程式は、例えばニュートン法等を用いて、合計トルク指令値T*の定トルク曲線とMTPI曲線との交点でのq軸電流指令値Iq*に相当する解を導出することができる。また、電流指令値算出器14は、式(3)に従って算出したq軸電流指令値Iq*に基づいて、式(2)に従って、d軸電流指令値Id*を算出する。
図1において、加算器17は、式(4.1)に従って、電流指令値算出器14より出力されたq軸電流指令値Iq
*と電流誤差補正値生成器37より出力されたq軸電流誤差補正値ΔIqとを加算することによりq軸電流補正指令値Iq_FF
*を算出する。加算器16は、式(4.2)に従って、電流指令値算出器14より出力されたd軸電流指令値Id
*と電流誤差補正値生成器37より出力されたd軸電流誤差補正値ΔIdとを加算することによりd軸電流補正指令値Id_FF
*を算出する。
減算器19は、加算器17より出力されたq軸電流補正指令値Iq_FF*から、u,v,w/d−q変換器29より出力されたq軸電流Iqを減算することにより、q軸電流補正指令値Iq_FF*とq軸電流Iqとの誤差であるq軸電流誤差Iq_diffを算出する。減算器18は、加算器16より出力されたd軸電流補正指令値Id_FF*から、u,v,w/d−q変換器29より出力されたd軸電流Idを減算することにより、d軸電流補正指令値Id_FF*とd軸電流Idとの誤差であるd軸電流誤差Id_diffを算出する。
電圧指令値算出器20は、式(5.1)に従って、q軸電流誤差Iq_diff(Iq_FF
*−Iq)に基づいてPI(Proportional Integral)制御を行うことにより非干渉化前q軸電圧指令値Vqtを算出する。また、電圧指令値算出器20は、式(5.2)に従って、d軸電流誤差Id_diff(Id_FF
*−Id)に基づいてPI制御を行うことにより非干渉化前d軸電圧指令値Vdtを算出する。なお、式(5.1)のkp_q及び式(5.2)のkp_dは比例定数であり、式(5.1)のki_q及び式(5.2)のki_dは積分定数である。
加算器22は、式(6.1)で表されるq軸非干渉化補正値Vqaを、式(6.3)に従って、非干渉化前q軸電圧指令値Vqtに加算することにより、q軸電圧指令値Vq
*を算出する。加算器21は、式(6.2)で表されるd軸非干渉化補正値Vdaを、式(6.4)に従って、非干渉化前d軸電圧指令値Vdtに加算することにより、d軸電圧指令値Vd
*を算出する。これにより、dq軸間の干渉がフィードフォワードでキャンセルされたq軸電圧指令値Vq
*及びd軸電圧指令値Vd
*が算出される。
IIRフィルタ35aは、u,v,w/d−q変換器29より出力されたd軸電流Idのノイズを除去し、ノイズ除去後のd軸応答電流Id_iirを出力する。IIRフィルタ35bは、u,v,w/d−q変換器29より出力されたq軸電流Iqのノイズを除去し、ノイズ除去後のq軸応答電流Iq_iirを出力する。IIRフィルタ35a,35bはノイズ除去フィルタの一例である。
非干渉化制御器36は、モータ制御装置100の外部(例えば、上位のコントローラ)からの電気角速度指令値ωe*とq軸応答電流Iq_iirとに基づいて、式(6.2)に従って、非干渉化前d軸電圧指令値Vdtを補正するためのd軸非干渉化補正値Vdaを生成する。また、非干渉化制御器36は、電気角速度指令値ωe*とd軸応答電流Id_iirとに基づいて、式(6.1)に従って、非干渉化前q軸電圧指令値Vqtを補正するためのq軸非干渉化補正値Vqaを生成する。d軸非干渉化補正値Vda及びq軸非干渉化補正値Vqaは、dq軸間の干渉項をフィードフォワードでキャンセルするための補正値である。ここで、安定制御を図るために、非干渉化補正値は直流化された値であることが望ましい。このため、非干渉化補正値の生成にあたっては、速度については電気角速度指令値ωe*が用いられ、d軸電流Id及びq軸電流Iqについては、IIRフィルタ35a,35bにより変動成分が除去されたd軸応答電流Id_iir及びq軸応答電流Iq_iirが用いられる。
電流誤差補正値生成器37は、電流指令値算出器14より出力されたd軸電流指令値Id*及びq軸電流指令値Iq*と、u,v,w/d−q変換器29より出力されたd軸電流Id及びq軸電流Iqと、位置推定器32より出力された機械角位相θmとに基づいて、d軸電流誤差補正値ΔId及びq軸電流誤差補正値ΔIqを生成する。
電流誤差補正値生成器37は、電流指令値算出器14の応答遅延やdq軸の干渉により、dq軸電流が電流指令値に追従し切れずに生じる変動誤差(位相誤差及び振幅誤差)を積算し、積算値の反転出力を電流誤差補正値(d軸電流誤差補正値ΔId及びq軸電流誤差補正値ΔIq)として生成する。ここで、d軸電流誤差補正値ΔIdは、d軸電流指令値I*とd軸電流Idとの変動誤差を補正するためのフィードフォワード成分であり、q軸電流誤差補正値ΔIqは、q軸電流指令値Iq*とq軸電流Iqとの変動誤差を補正するためのフィードフォワード成分である。
d−q/u,v,w変換器23は、加算器21,22より出力された2相のd軸電圧指令値Vd*及びq軸電圧指令値Vq*を、位置推定器32より出力された電気角位相(dq軸位相)θeに基づいて、3相のU相出力電圧指令値Vu*、V相出力電圧指令値Vv*及びW相出力電圧指令値Vw*へ変換する。位置推定器32より出力される電気角位相θeは、モータMの現在のロータ位置を示す。
PWM変調器24は、U相出力電圧指令値Vu*、V相出力電圧指令値Vv*、W相出力電圧指令値Vw*と、PWMキャリア信号とに基づいて、6相のPWM信号を生成し、生成した6相のPWM信号をIPM25へ出力する。
IPM25は、PWM変調器24より出力された6相のPWM信号に基づいて、外部から供給される直流電圧Vdcを変換して、モータMのU相、V相、W相のそれぞれへ印可される交流電圧を生成し、生成したそれぞれの交流電圧をモータMのU相、V相、W相へ印加する。
3φ電流算出器28は、シャント抵抗26を用いた1シャント方式で母線電流が検出される場合、PWM変調器24より出力される6相のPWMスイッチング情報と、検出された母線電流とから、モータMのU相電流値Iu、V相電流値Iv、W相電流値Iwを算出する。または、3φ電流算出器28は、電流センサ27a,27bでU相電流及びV相電流が検出される場合、残りのW相電流値Iwを“Iu+Iv+Iw=0”のキルヒホッフの法則に基づいて算出する。3φ電流算出器28は、各相の相電流値Iu,Iv,Iwをu,v,w/d−q変換器29へ出力する。
u,v,w/d−q変換器29は、位置推定器32より出力された電気角位相θeに基づいて、3φ電流算出器28より出力された3相のU相電流値Iu、V相電流値Iv、W相電流値Iwを、2相のd軸電流Id及びq軸電流Iqへ変換する。
軸誤差演算器30は、加算器21,22より出力されたd軸電圧指令値Vd*及びq軸電圧指令値Vq*と、u,v,w/d−q変換器29より出力されたd軸電流Id及びq軸電流Iqを用いて軸誤差Δθ(推定した回転軸と実際の回転軸との差)を算出する。
PLL制御器31は、軸誤差演算器30より出力された軸誤差Δθに基づいて、モータMの現在の推定角速度である電気角推定角速度ωeを算出する。
位置推定器32は、PLL制御器31より出力された電気角推定角速度ωeに基づいて電気角位相θe及び機械角位相θmを推定する。
1/Pn処理器33は、PLL制御器31より出力された電気角推定角速度ωeをモータMの極対数Pnで除算することにより機械角推定角速度ωmを算出する。
減算器40は、1/Pn処理器33より出力された機械角推定角速度ωmから機械角速度指令値ωm*を減算することにより機械角推定角速度変動Δωmを算出する。
補正トルク生成器34は、モータMの振動が許容できる速度変動範囲である速度変動許容値|Δωm|*、減算器40より出力された機械角推定角速度変動Δωm、及び、位置推定器32より出力された機械角位相θmに基づいて、周期的な速度変動である機械角推定角速度変動Δωmを速度変動許容値|Δωm|*以下に抑制するための補正トルク指令値ΔTを生成する。なお、速度変動許容値|Δωm|*は、モータ制御装置100内に記憶されている。また、機械角推定角速度変動(速度変動)Δωmは、上記の角速度誤差Δωの値と正負の符号が異なるだけである。
補正トルク制限値生成器38は、電流リミット値Ia_limitと、電流指令値算出器14より出力されたd軸電流指令値Id*,q軸電流指令値Iq*とに基づいて、補正トルク指令値ΔTの振幅である補正トルク振幅|ΔT|に制限を与える補正トルク制限値|ΔT|_limitを生成する。
<電流誤差補正値生成器の構成>
図2は、本開示の実施例1の電流誤差補正値生成器の構成例を示す図である。図2において、電流誤差補正値生成器37は、減算器37a,37eと、q軸電流誤差成分分離器37bと、q軸電流誤差積算器37cと、q軸電流誤差補正値復調器37dと、d軸電流誤差成分分離器37fと、d軸電流誤差積算器37gと、d軸電流誤差補正値復調器37hとを有する。
減算器37aは、式(7)に従って、q軸電流Iqとq軸電流指令値Iq
*との誤差であるq軸電流変動誤差Iq_errを算出する。
q軸電流誤差成分分離器37bは、式(8.1)及び式(8.2)に従って、q軸電流変動誤差Iq_errの基本波成分である2つのフーリエ係数Iq_err_sin(sin成分),Iq_err_cos(cos成分)を機械角周期毎に算出する。
q軸電流誤差積算器37cは、式(9.1)及び式(9.2)に従って、q軸電流変動誤差Iq_errのsin成分Iq_err_sinと、q軸電流変動誤差Iq_errのcos成分Iq_err_cosとのそれぞれに補正ゲインkを乗算し、それぞれの乗算結果をIq_err_sin_i_old,Iq_err_cos_i_oldに加算する。式(9.1)におけるIq_err_sin_iは、今回の機械角周期までのIq_err_sinの積分値であり、式(9.2)におけるIq_err_cos_iは、今回の機械角周期までのIq_err_cosの積分値である。また、式(9.1)におけるIq_err_sin_i_oldは、前回の機械角周期までのIq_err_sin_iであり、式(9.2)におけるIq_err_cos_i_oldは、前回の機械角周期までのIq_err_cos_iである。
q軸電流誤差補正値復調器37dは、式(10.1)及び式(10.2)に従って、q軸電流誤差補正値ΔIqを算出する。これにより、q軸電流変動誤差の位相が反転して、機械角位相θmでのq軸電流誤差補正値ΔIqの瞬時値が算出される。
減算器37eは、式(11)に従って、d軸電流Idとd軸電流指令値Id
*との誤差であるd軸電流変動誤差Id_errを算出する。
d軸電流誤差成分分離器37fは、式(12.1)及び式(12.2)に従って、d軸電流変動誤差Id_errの基本波成分である2つのフーリエ係数Id_err_sin(sin成分),Id_err_cos(cos成分)を機械角周期毎に算出する。
d軸電流誤差積算器37gは、式(13.1)及び式(13.2)に従って、d軸電流変動誤差Id_errのsin成分Id_err_sinと、d軸電流変動誤差Id_errのcos成分Id_err_cosとのそれぞれに補正ゲインkを乗算し、それぞれの乗算結果にId_err_sin_i_old,Id_err_cos_i_oldを加算する。式(13.1)におけるId_err_sin_iは、今回の機械角周期までのId_err_sinの積分値であり、式(13.2)におけるId_err_cos_iは、今回の機械角周期におけるId_err_cosの積分値である。また、式(13.1)におけるId_err_sin_i_oldは、前回の機械角周期までのId_err_sin_iであり、式(13.2)におけるId_err_cos_i_oldは、前回の機械角周期におけるId_err_cos_iである。
d軸電流誤差補正値復調器37hは、式(14.1)及び式(14.2)に従って、d軸電流誤差補正値ΔIdを算出する。これにより、d軸電流変動誤差の位相が反転して、機械角位相θmでのd軸電流誤差補正値ΔIdの瞬時値が生成される。
<補正トルク制限値生成器の構成>
図3は、本開示の実施例1の補正トルク制限値生成器の構成例を示す図である。図3において、補正トルク制限値生成器38は、電流振幅算出器38aと、ピークホールド算出器38bと、減算器38cと、ΔT制限値生成器38dとを有する。
電流振幅算出器38aは、d軸電流指令値Id
*とq軸電流指令値Iq
*とに基づいて、式(15)に従って、電流指令値振幅Ia
*を算出し、算出した電流指令値振幅Ia
*をピークホールド算出器38bへ出力する。
ピークホールド算出器38bは、所定の取得期間Tm毎に、各取得期間Tmにおいて電流指令値振幅Ia*の最大値を電流指令ピーク値Ia*_peakとして取得し、取得した電流指令ピーク値Ia*_peakを減算器38cへ出力する。例えば、所定の取得期間Tmは、モータMの機械角周期に相当する。
図4は、本開示の実施例1のピークホールド算出器の動作例の説明に供する図である。
図4に示すように、ピークホールド算出器38bは、取得期間Tm1(機械角位相θm=0〜2π)において、式(16)に従って、時間の経過に伴って変化する電流指令値振幅Ia
*と、仮電流指令ピーク値Ia
*_peak_temp(対象取得期間Tmにおいて時間の経過に伴って変化する電流指令値振幅Ia
*のピークホールド値)とを比較し、電流指令値振幅Ia
*が仮電流指令ピーク値Ia
*_peak_tempよりも大きくなったときに、仮電流指令ピーク値Ia
*_peak_tempを電流指令値振幅Ia
*によって更新する。
また、ピークホールド算出器38bは、取得期間Tm1の終了時点で、式(17)に従って、仮電流指令ピーク値Ia
*_peak_tempを電流指令ピーク値Ia
*_peakに設定するとともに、式(18)に従って、仮電流指令ピーク値Ia
*_peak_tempをゼロに初期化する。つまり、取得期間Tm1の終了時点での仮電流指令ピーク値Ia
*_peak_tempが、取得期間Tm1の次の取得期間である取得期間Tm2における電流指令ピーク値Ia
*_peakとして取得される。
また、図4に示すように、ピークホールド算出器38bは、取得期間Tm2(機械角位相θm=2π〜4π)において、式(16)に従って、時間の経過に伴って変化する電流指令値振幅Ia*と、仮電流指令ピーク値Ia*_peak_tempとを比較し、電流指令値振幅Ia*が仮電流指令ピーク値Ia*_peak_tempよりも大きくなったときに、仮電流指令ピーク値Ia*_peak_tempを電流指令値振幅Ia*によって更新する。つまり、取得期間Tm2でも、取得期間Tm1と同様に、電流指令値振幅Ia*の最大値を随時トレースするように仮電流指令ピーク値Ia*_peak_tempが更新される。
また、ピークホールド算出器38bは、取得期間Tm2の終了時点で、式(17)に従って、仮電流指令ピーク値Ia*_peak_tempを電流指令ピーク値Ia*_peakに設定するとともに、式(18)に従って、仮電流指令ピーク値Ia*_peak_tempをゼロに初期化する。つまり、取得期間Tm2の終了時点での仮電流指令ピーク値Ia*_peak_tempが、取得期間Tm2の次の取得期間である取得期間Tm3における電流指令ピーク値Ia*_peakとして取得される。
取得期間Tm3(機械角位相θm=4π〜6π)以降の各取得期間Tmにおいても、ピークホールド算出器38bは上記と同様に動作する。
図3において、減算器38cは、電流指令ピーク値Ia
*_peakから所定の電流リミット値Ia_limitを減算することにより、式(19)に従って、電流リミット値Ia_limitに対する電流指令ピーク値Ia
*_peakの偏差Ia
*_errを算出する。なお、所定の電流リミット値Ia_limitは、モータMの過電流保護機能が作動する電流閾値である電流トリップ値Ia_tripから所定のマージンMAを減算した値として設定されるのが好ましい。
ここで、補正トルク指令値ΔTの増加に伴い、電流ピーク値も増加し、モータMが電流トリップに至る場合がある。そこで、ΔT制限値生成器38dは、モータMが電流トリップに至らないように、以下のようにして設定するΔT振幅制限フラグに従って補正トルク制限値|ΔT|_limitを生成する。ΔT振幅制限フラグが“オン”に設定されているときは補正トルク指令値ΔTに制限が与えられ、ΔT振幅制限フラグが“オフ”に設定されているときは、補正トルク指令値ΔTに制限が与えられない。
ΔT制限値生成器38dは、補正トルク生成器34より出力された補正トルク指令値ΔTが0(ゼロ)でないとき(つまり、トルク制御が実行中のとき)で、かつ、偏差Ia*_errが正の値であるときに、ΔT振幅制限フラグを“オン”に設定する。つまり、ΔT制限値生成器38dは、“ΔT≠0”かつ“Ia*_err≧0”のときに、ΔT振幅制限フラグを“オン”に設定する。“ΔT≠0”かつ“Ia*_err≧0”のときは、モータMが電流トリップに至らないように補正トルク指令値ΔTに制限を与えたいときに相当する。
一方で、ΔT制限値生成器38dは、補正トルク指令値ΔTに制限を与える必要がないときに、ΔT振幅制限フラグを“オフ”に設定する。ここで、偏差Ia*_errが負の値であるときにΔT振幅制限フラグが“オフ”に設定されてしまうと、補正トルク指令値ΔTに制限が与えられることと、補正トルク指令値ΔTに与えられた制限が解除されることとの短い周期での繰り返し(以下では「トルク制限ハンチング」と呼ぶことがある)が発生してしまう可能性がある。すなわち、ΔT振幅制限フラグが“オフ”に設定されると、速度変動振幅|Δωm|が速度変動許容値|Δωm|*より大きい場合、補正トルク指令値ΔTが大きくなる方向へ制御されるため、電流トリップが発生しないように、再び、補正トルク指令値ΔTに制限を与える必要が生じてしまう。
そこで、ΔT制限値生成器38dは、速度変動振幅|Δωm|が速度変動許容値|Δωm|*より小さいとき、つまり、“|Δωm|<|Δωm|*”のときに、ΔT振幅制限フラグを“オフ”に設定する。
ΔT制限値生成器38dは、ΔT振幅制限フラグの設定後、ΔT振幅制限フラグに従って補正トルク制限値|ΔT|_limitを生成する。
ΔT制限値生成器38dは、上記のようにしてΔT振幅制限フラグを“オン”に設定したときは、前回の機械角周期における補正トルク振幅|ΔT|である|ΔT|_oldと、偏差Ia
*_errとに基づいて、式(20)に従って、補正トルク制限値|ΔT|_limitを生成する。式(20)における“g”は、偏差Ia
*_errに乗算される所定のゲイン値である。つまり、ΔT振幅制限フラグが“オン”であるときは、ΔT制限値生成器38dは、前回の機械角周期の補正トルク振幅|ΔT|_oldを積分項に見立てた積分制御を行う。こうすることで、モータMが電流トリップに至りそうな場合に、偏差Ia
*_errが正の値となるため、補正トルク制限値|ΔT|_limitが減少し、補正トルク制限値|ΔT|_limitの減少に伴って電流指令値振幅Ia
*が減少する。
一方で、ΔT制限値生成器38dは、上記のようにしてΔT振幅制限フラグを“オフ”に設定したときは、補正トルク指令値ΔTに制限がかからないような大きい値に補正トルク制限値|ΔT|_limitを設定する。例えば、ΔT制限値生成器38dは、式(21)に従って、平均トルク指令値To
*の3倍の値を補正トルク制限値|ΔT|_limitに設定する。平均トルク指令値To
*の3倍の値という大きい値が補正トルク制限値|ΔT|_limitとして設定されることで、補正トルク指令値ΔTには、実質上、制限が与えられなくなる。
ΔT制限値生成器38dは、以上のようにして生成した補正トルク制限値|ΔT|_limitを補正トルク生成器34へ出力する。
<補正トルク生成器の構成>
図5は、本開示の実施例1の補正トルク生成器の構成例を示す図である。図5において、補正トルク生成器34は、速度変動成分分離器34aと、速度変動振幅算出器34bと、減算器34cと、補正トルク振幅算出器34dと、速度変動位相修正器34eと、直交成分分離器34fと、補正トルク復調器34gと、補正トルク振幅制限器34hとを有する。
図5において、速度変動成分分離器34aは、機械角周期毎に、機械角位相θmに基づいて、式(22.1)及び式(22.2)に従って、機械角推定角速度変動Δωmを、Δωmの基本波成分である2つのフーリエ係数ωsin(sin成分)とωcos(cos成分)とへ分離する。機械角推定角速度変動Δωmの基本波成分のフーリエ係数が機械角周期毎に算出されることで、機械角推定角速度変動Δωmの高調波成分が除去されて機械角推定角速度変動Δωmの基本波成分を精度よく抽出することができる。ωsin及びωcosは、機械角周期毎に更新される値である。
速度変動振幅算出器34bは、フーリエ係数ωsin,ωcosに基づいて、式(23)に従って、速度変動振幅|Δωm|を算出する。ωsin及びωcosは機械角周期毎に更新される値であるため、速度変動振幅|Δωm|も機械角周期毎に更新される。
減算器34cは、速度変動振幅算出器34bより出力された速度変動振幅|Δωm|から速度変動許容値|Δωm|*を減算することにより速度変動誤差|Δωm|errを算出する。速度変動許容値|Δωm|*は、モータMの振動が許容できる範囲での速度変動振幅|Δωm|を規定したものである。
補正トルク振幅算出器34dは、速度変動振幅|Δωm|と速度変動許容値|Δωm|
*との誤差に応じて補正トルク振幅|ΔT|を機械角周期毎に調整する。例えば、補正トルク振幅算出器34dは、式(24)に従って、速度変動振幅|Δωm|と速度変動許容値|Δωm|
*との誤差である速度変動誤差|Δωm|errに補正ゲインkを乗算し、乗算結果と|ΔT|_oldとを加算することにより補正トルク振幅|ΔT|を算出する。式(24)における|ΔT|_oldは、前回の機械角周期における補正トルク振幅|ΔT|である。補正ゲインkを適切に設定することで、速度変動|Δω|が速度変動許容値|Δωm|
*の境界でハンチングすることや、急激な負荷トルク変化によって速度変動|Δω|が速度変動許容値|Δωm|
*よりも大きくなって振動が発生することを抑制できる。
補正トルク振幅制限器34hは、補正トルク振幅算出器34dより出力された補正トルク振幅|ΔT|が、補正トルク制限値生成器38より出力された補正トルク制限値|ΔT|_limitより大きいときは、補正トルク振幅|ΔT|の値を補正トルク制限値|ΔT|_limitによって書き換え、補正トルク制限値|ΔT|_limitに書き換え後の補正トルク振幅|ΔT|を直交成分分離器34fへ出力する。つまり、補正トルク振幅|ΔT|が補正トルク制限値|ΔT|_limitより大きいときは、補正トルク振幅|ΔT|の値が補正トルク制限値|ΔT|_limitに設定される。補正トルク振幅|ΔT|の値が補正トルク制限値|ΔT|_limitに設定されることでモータMの電流振幅の変動量が制限され、モータMに電流トリップが発生することを防止できる。
一方で、補正トルク振幅|ΔT|が補正トルク制限値|ΔT|_limit以下のときは、補正トルク振幅制限器34hは、補正トルク振幅算出器34dより出力された補正トルク振幅|ΔT|をそのまま直交成分分離器34fへ出力する。
速度変動位相修正器34eは、機械角周期毎に取得される機械角推定角速度変動Δωmの位相を修正する。例えば、速度変動位相修正器34eは、式(25.1)及び式(25.2)に従って、フーリエ係数ωsin,ωcosのそれぞれに補正ゲインkを乗算し、それぞれの乗算結果にωsin_i_old,ωcos_i_oldを加算する。式(25.1)におけるωsin_i_oldは、前回の機械角周期におけるωsin_iであり、式(25.2)におけるωcos_i_oldは、前回の機械角周期におけるωcos_iである。そして、速度変動位相修正器34eは、式(25.3)に従って、ωsin_i及びωcos_iの逆正接(Arctangent)を速度変動修正位相φωiとして算出する。この速度変動修正位相φωiが、トルク制御を行う際の位相の基準になり、この基準に対してπ/2遅角した位相が補正トルク指令値ΔTの位相(補正トルク位相)となる。
直交成分分離器34fは、補正トルク振幅制限器34hより出力された補正トルク振幅|ΔT|と、速度変動位相修正器34eより出力された速度変動修正位相φωiとに基づいて、式(26.1)及び式(26.2)に従って、速度変動修正位相φωiのsin成分(ωsin_i)とcos成分(ωcos_i)とを算出する。この処理は、式(25.1)及び式(25.2)の演算による位相修正時の発散を防止する役割も有する。
補正トルク復調器34gは、速度変動修正位相φωiのsin成分(ωsin_i)とcos成分(ωcos_i)とに基づいて、式(27.1)及び式(27.2)に従って、補正トルク指令値ΔTを算出する。この処理により速度変動修正位相φωiからπ/2だけ遅角した補正トルク位相へ変換され、機械角位相θmでの補正トルク指令値ΔTの瞬時値が生成される。
なお、補正トルク復調器34gは、式(27.1)及び式(27.2)に代えて式(28)に従って補正トルク指令値ΔTの瞬時値を算出しても良い。
そして、図1に示す加算器13は、式(29)に従って、補正トルク復調器34gより出力された補正トルク指令値ΔTを、速度制御器12より出力された平均トルク指令値To
*に加算することにより合計トルク指令値T
*を算出する。
<モータ制御装置の動作>
図6A、図6B、図6C、図7及び図8は、本開示の実施例1のモータ制御装置の動作例の説明に供する図である。
図6A、図6B及び図6Cに、モータ制御装置100における電流ベクトルの挙動を示す。図6Aに示すように、電流指令ピーク値Ia*_peakが電流リミット値Ia_limitより大きい場合は、ΔT振幅制限フラグが“オン”に設定され、補正トルク振幅|ΔT|に制限が与えられる。補正トルク振幅|ΔT|に制限が与えられても、図6Bに示すように、未だ電流指令ピーク値Ia*_peakが電流リミット値Ia_limitより大きい場合は、補正トルク振幅|ΔT|がさらに制限され、補正トルク制限値|ΔT|_limitは小さくなる。これにより、図6Cに示すように、電流指令ピーク値Ia*_peakが電流リミット値Ia_limitまで抑制される。
また、図7に、電流指令値振幅Ia*と電流指令ピーク値Ia*_peakとの時間変化を示す。図7において、電流リミット値Ia_limitは、電流トリップ値Ia_tripから所定のマージンMAを減算した値として設定されている。モータMの負荷の増大によりトルク制御量が増大する区間a11では、電流指令ピーク値Ia*_peakが増大する。区間a11の次の区間b11では、ΔT振幅制限フラグが“オン”に設定されて補正トルク振幅|ΔT|に制限が与えられる。区間b11の次の区間c11では、ΔT振幅制限フラグが“オフ”に設定されて、モータMの負荷の減少につれて、電流指令ピーク値Ia*_peakが減少する。
また、図8では、図7に対し、速度変動振幅|Δωm|の時間変化が追加されている。図8において、モータMの負荷が増大するにつれてトルク制御量が増大する区間a12では、トルク制御量の増大より電流指令ピーク値Ia*_peakが増大する。このとき、ΔT振幅制限フラグは“オフ”になっているため、速度変動振幅|Δωm|は速度変動許容値|Δωm|*に追従する。区間a12の次の区間b12では、区間a12における電流指令ピーク値Ia*_peakが電流リミット値Ia_limitより大きいため、ΔT振幅制限フラグが“オン”に設定されて補正トルク振幅|ΔT|に制限が与えられる。補正トルク振幅|ΔT|に制限が与えられることにより、速度動振振幅|Δωm|は速度変動許容値|Δωm|*に追従しなくなる。区間b12の次の区間c12では、モータMの負荷が減少するにつれて速度変動振幅|Δωm|及び電流指令ピーク値Ia*_peakが減少する。また、区間c12では、速度変動許容値|Δωm|*が速度変動振幅|Δωm|より大きいため、ΔT振幅制限フラグが“オフ”に設定されて補正トルク振幅|ΔT|の制限が解除される。補正トルク振幅|ΔT|の制限が解除されることにより、速度変動振幅|Δωm|が速度変動許容値|Δωm|*に追従するようになる。
以上、本開示の実施例1について説明した。
[実施例2]
<モータ制御装置の構成>
図9は、本開示の実施例2のモータ制御装置の構成例を示す図である。
図9示すモータ制御装置200は、図1に示すモータ制御装置100が有する補正トルク制限値生成器38に代えて補正トルク制限値生成器39を有する。また、図1に示すモータ制御装置100では、電流指令値算出器14より出力されたd軸電流指令値Id*及びq軸電流指令値Iq*が補正トルク制限値生成器38に入力されていたのに対し、図9に示すモータ制御装置200では、u,v,w/d−q変換器29より出力されたd軸電流Id及びq軸電流Iqが補正トルク制限値生成器39に入力される。
<補正トルク制限値生成器の構成>
図10は、本開示の実施例2の補正トルク制限値生成器の構成例を示す図である。図10において、補正トルク制限値生成器39は、電流振幅算出器39aと、ピークホールド算出器39bと、減算器39cと、ΔT制限値生成器39dとを有する。
電流振幅算出器39aは、d軸電流Idとq軸電流Iqとに基づいて、式(30)に従って、検出電流値振幅Iaを算出し、算出した検出電流値振幅Iaをピークホールド算出器39bへ出力する。
ピークホールド算出器39bは、所定の取得期間Tm毎に、各取得期間Tmにおける検出電流値振幅Iaの最大値を電流ピーク値Ia_peakとして取得し、取得した電流ピーク値Ia_peakを減算器39cへ出力する。例えば、所定の取得期間Tmは、モータMの機械角周期に相当する。図11は、本開示の実施例2のピークホールド算出器の動作例の説明に供する図である。
図11に示すように、ピークホールド算出器39bは、取得期間Tm1(機械角位相θm=0〜2π)において、式(31)に従って、時間の経過に伴って変化する検出電流値振幅Iaと、仮電流ピーク値Ia_peak_temp(対象取得期間Tmにおいて時間の経過に伴って変化する電流指令値振幅Iaのピークホールド値)とを比較し、検出電流値振幅Iaが仮電流ピーク値Ia_peak_tempよりも大きくなったときに、仮電流ピーク値Ia_peak_tempを検出電流値振幅Iaによって更新する。
また、ピークホールド算出器39bは、取得期間Tm1の終了時点で、式(32)に従って、仮電流ピーク値Ia_peak_tempを電流ピーク値Ia_peakに設定するとともに、式(33)に従って、仮電流ピーク値Ia_peak_tempをゼロに初期化する。つまり、取得期間Tm1の終了時点での仮電流ピーク値Ia_peak_tempが、取得期間Tm1の次の取得期間である取得期間Tm2における電流ピーク値Ia_peakとして取得される。
また、図11に示すように、ピークホールド算出器39bは、取得期間Tm2(機械角位相θm=2π〜4π)において、式(31)に従って、時間の経過に伴って変化する検出電流値振幅Iaと、仮電流ピーク値Ia_peak_tempとを比較し、検出電流値振幅Iaが仮電流ピーク値Ia_peak_tempよりも大きくなったときに、仮電流ピーク値Ia_peak_tempを検出電流値振幅Iaによって更新する。つまり、取得期間Tm2でも、取得期間Tm1と同様に、検出電流値振幅Iaの最大値を随時トレースするように仮電流ピーク値Ia_peak_tempが更新される。
また、ピークホールド算出器39bは、取得期間Tm2の終了時点で、式(32)に従って、仮電流ピーク値Ia_peak_tempを電流ピーク値Ia_peakに設定するとともに、式(33)に従って、仮電流ピーク値Ia_peak_tempをゼロに初期化する。つまり、取得期間Tm2の終了時点での仮電流ピーク値Ia_peak_tempが、取得期間Tm2の次の取得期間である取得期間Tm3における電流ピーク値Ia_peakとして取得される。
取得期間Tm3(機械角位相θm=4π〜6π)以降の各取得期間Tmにおいても、ピークホールド算出器39bは上記と同様に動作する。
図10において、減算器39cは、電流ピーク値Ia_peakから所定の電流リミット値Ia_limitを減算することにより、式(34)に従って、電流リミット値Ia_limitに対する電流ピーク値Ia_peakの偏差Ia_errを算出する。なお、所定の電流リミット値Ia_limitは、モータMの過電流保護機能が作動する電流閾値である電流トリップ値Ia_tripから所定のマージンMAを減算した値として設定されるのが好ましい。
ここで、補正トルク指令値ΔTの増加に伴い、電流ピーク値も増加し、モータMが電流トリップに至る場合がある。そこで、ΔT制限値生成器39dは、モータMが電流トリップに至らないように、以下のようにして設定するΔT振幅制限フラグに従って補正トルク制限値|ΔT|_limitを生成する。ΔT振幅制限フラグが“オン”に設定されているときは補正トルク指令値ΔTに制限が与えられ、ΔT振幅制限フラグが“オフ”に設定されているときは、補正トルク指令値ΔTに制限が与えられない。
ΔT制限値生成器39dは、補正トルク生成器34より出力された補正トルク指令値ΔTが0(ゼロ)でないとき(つまり、トルク制御が実行中のとき)で、かつ、偏差Ia_errが正の値であるときに、ΔT振幅制限フラグを“オン”に設定する。つまり、ΔT制限値生成器39dは、“ΔT≠0”かつ“Ia_err≧0”のときに、ΔT振幅制限フラグを“オン”に設定する。“ΔT≠0”かつ“Ia_err≧0”のときは、モータMが電流トリップに至らないように補正トルク指令値ΔTに制限を与えたいときに相当する。
一方で、ΔT制限値生成器39dは、補正トルク指令値ΔTに制限を与える必要がないときに、ΔT振幅制限フラグを“オフ”に設定する。ここで、偏差Ia_errが負の値であるときにΔT振幅制限フラグが“オフ”に設定されてしまうと、トルク制限ハンチングが発生してしまう可能性がある。すなわち、ΔT振幅制限フラグが“オフ”に設定されると、速度変動振幅|Δωm|が速度変動許容値|Δωm|*より大きい場合、補正トルク指令値ΔTが大きくなる方向へ制御されるため、電流トリップが発生しないように、再び、補正トルク指令値ΔTに制限を与える必要が生じてしまう。
そこで、ΔT制限値生成器39dは、速度変動振幅|Δωm|が速度変動許容値|Δωm|*より小さいとき、つまり、“|Δωm|<|Δωm|*”のときに、ΔT振幅制限フラグを“オフ”に設定する。
ΔT制限値生成器39dは、ΔT振幅制限フラグの設定後、ΔT振幅制限フラグに従って補正トルク制限値|ΔT|_limitを生成する。
ΔT制限値生成器39dは、上記のようにしてΔT振幅制限フラグを“オン”に設定したときは、前回の機械角周期における補正トルク振幅|ΔT|である|ΔT|_oldと、偏差Ia_errとに基づいて、式(35)に従って、補正トルク制限値|ΔT|_limitを生成する。式(35)における“g”は、偏差Ia_errに乗算される所定のゲイン値である。つまり、ΔT振幅制限フラグが“オン”であるときは、ΔT制限値生成器39dは、前回の機械角周期の補正トルク振幅|ΔT|_oldを積分項に見立てた積分制御を行う。こうすることで、モータMが電流トリップに至りそうな場合に、偏差Ia_errが正の値となるため、補正トルク制限値|ΔT|_limitが減少し、補正トルク制限値|ΔT|_limitの減少に伴って検出電流値振幅Iaが減少する。
一方で、ΔT制限値生成器39dは、上記のようにしてΔT振幅制限フラグを“オフ”に設定したときは、補正トルク指令値ΔTに制限がかからないような大きい値に補正トルク制限値|ΔT|_limitを設定する。例えば、ΔT制限値生成器39dは、式(21)に従って、平均トルク指令値To*の3倍の値を補正トルク制限値|ΔT|_limitに設定する。平均トルク指令値To*の3倍の値という大きい値が補正トルク制限値|ΔT|_limitとして設定されることで、補正トルク指令値ΔTには、実質上、制限が与えられなくなる。
ΔT制限値生成器39dは、以上のようにして生成した補正トルク制限値|ΔT|_limitを補正トルク生成器34へ出力する。
<モータ制御装置の動作>
図12A、図12B、図12C、図13、図14及び図15は、本開示の実施例2のモータ制御装置の動作例の説明に供する図である。
図12A、図12B及び図12Cに、モータ制御装置200における電流ベクトルの挙動を示す。図12Aに示すように、電流ピーク値Ia_peakが電流リミット値Ia_limitより大きい場合は、ΔT振幅制限フラグが“オン”に設定され、補正トルク振幅|ΔT|に制限が与えられる。補正トルク振幅|ΔT|に制限が与えられても、図12Bに示すように、未だ電流ピーク値Ia_peakが電流リミット値Ia_limitより大きい場合は、補正トルク振幅|ΔT|がさらに制限され、補正トルク制限値|ΔT|_limitは小さくなる。これにより、図12Cに示すように、電流ピーク値Ia_peakが電流リミット値Ia_limitまで抑制される。
また、図13に、電流指令値振幅Iaと電流指令ピーク値Ia_peakとの時間変化を示す。図13において、電流リミット値Ia_limitは、電流トリップ値Ia_tripから所定のマージンMAを減算した値として設定されている。モータMの負荷の増大によりトルク制御量が増大する区間a21では、電流ピーク値Ia_peakが増大する。区間a21の次の区間b21では、ΔT振幅制限フラグが“オン”に設定されて補正トルク振幅|ΔT|に制限が与えられる。区間b21の次の区間c21では、ΔT振幅制限フラグが“オフ”に設定されて、モータMの負荷の減少につれて、電流ピーク値Ia_peakが減少する。
また、図14では、図13に対し、速度変動振幅|Δωm|の時間変化が追加されている。図14において、モータMの負荷が増大するにつれてトルク制御量が増大する区間a22では、トルク制御量の増大より電流ピーク値Ia_peakが増大する。このとき、ΔT振幅制限フラグは“オフ”になっているため、速度変動振幅|Δωm|は速度変動許容値|Δωm|*に追従する。区間a22の次の区間b22では、区間a22における電流ピーク値Ia_peakが電流リミット値Ia_limitより大きいため、ΔT振幅制限フラグが“オン”に設定されて補正トルク振幅|ΔT|に制限が与えられる。補正トルク振幅|ΔT|に制限が与えられることにより、速度変動振幅|Δωm|は速度変動許容値|Δωm|*に追従しなくなる。区間b22の次の区間c22では、モータMの負荷が減少するにつれて速度変動振幅|Δωm|及び電流ピーク値Ia_peakが減少する。また、区間c22では、速度変動許容値|Δωm|*が速度変動振幅|Δωm|より大きいため、ΔT振幅制限フラグが“オフ”に設定されて補正トルク振幅|ΔT|の制限が解除される。補正トルク振幅|ΔT|の制限が解除されることにより、速度変動振幅|Δωm|が速度変動許容値|Δωm|*に追従するようになる。
図15に実施例1における電流リミット動作の一例を示し、図16に実施例2における電流リミット動作の一例を示す。図15には、実施例1のように電流指令値によってリミットをかける場合の電流ノイズの有無による比較例を示し、図16には、実施例2のように電流検出値でリミットをかける場合の電流ノイズの有無による比較例を示す。
実施例1では、d軸電流指令値Id*とq軸電流指令値Iq*とに基づいて算出される電流指令ピーク値Ia*_peakと、電流リミット値Ia_limitとの比較結果に基づいてΔT振幅制限フラグが設定される。このため、図15に示すように、電流リミット値Ia_limitが適切でないと、検出電流のノイズ成分が大きい場合に電流指令値振幅Ia*が電流トリップ値Ia_tripに到達する恐れがある。電流指令値振幅Ia*が電流トリップ値Ia_tripに到達することを回避するためには、電流リミット値Ia_limitを小さくするなどのチューニングを要する。
これに対し、実施例2では、d軸電流Idとq軸電流Iqとに基づいて算出される検出電流ピーク値Ia_peakと、電流リミット値Ia_limitとの比較結果に基づいてΔT振幅制限フラグが設定される。これにより、実施例2では、図16に示すように、制御状態によって検出電流振幅Iaにノイズがあるような場合でも、検出電流に電流リミットをかけるため、ノイズの有無にかかわらず、同一の電流リミット値Ia_limitを用いることができる。よって、電流トリップ値Ia_tripに対する電流リミット値Ia_limitのチューニングが不要となるため、電流リミット値Ia_limitのチューニングにかかる工数を削減することができる。
以上、本開示の実施例2について説明した。
以上のように、本開示のモータ制御装置(実施例1のモータ制御装置100)は、電流指令値算出器(実施例1の電流指令値算出器14)と、補正トルク制限値生成器(実施例1の補正トルク制限値生成器38)とを有する。電流指令値算出器は、速度指令値(実施例1の機械角速度指令値ωm*)とモータの速度(実施例1の機械角推定角速度ωm)とに基づいて生成される平均トルク指令値(実施例1の平均トルク指令値To*)と、トルク指令値を補正するための補正トルク指令値(実施例1の補正トルク指令値ΔT)とを加算した合計トルク指令値(実施例1の合計トルク指令値T*)とに基づいて電流指令値(q軸電流指令値Iq*,d軸電流指令値Id*)を算出する。補正トルク制限値生成器は、補正トルク指令値がゼロでなく、かつ、電流指令値の最大値(実施例1の電流指令ピーク値Ia*_peak)が所定の電流リミット値(実施例1の電流リミット値Ia_limit)以上のときに、補正トルク指令値に制限を与える。
このようにして補正トルク指令値に制限を与えることで、補正トルク指令値の増大による電流トリップを防止することができるため、過電流保護機能の作動によるモータの停止に至らずに安定してモータを動作させることができる。
また、補正トルク制限値生成器(実施例2の補正トルク制限値生成器39)は、補正トルク指令値がゼロでなく、かつ、モータの電流(d軸電流Id,q軸電流Iq)の最大値(実施例2の電流ピーク値Ia_peak)が所定の電流リミット値(実施例2の電流リミット値Ia_limit)以上のときに、補正トルク指令値に制限を与える。
このようにして補正トルク指令値に制限を与えても、補正トルク指令値の増大による電流トリップを防止することができるため、過電流保護機能の作動によるモータの停止に至らずに安定してモータを動作させることができる。また、モータの電流の振幅値のノイズレベルが制御状態によって異なるような場合でも、同一の電流リミット値を用いることができるため、電流トリップ値に対する電流リミット値のマージンの設定にあたりチューニングが不要となる。
また、補正トルク制限値生成器は、モータの回転速度の変動幅(実施例1,2の速度変動振幅|Δωm|)が許容値(実施例1,2の速度変動許容値|Δωm|*)より小さいときに、補正トルク指令値に与えられている制限を解除する。
こうすることで、トルク制限ハンチングが発生することを防止できる。
また、補正トルク制限値生成器は、モータの過電流保護機能が作動する電流閾値(実施例1,2の電流トリップ値Ia_trip)よりも所定値(実施例1,2のマージンMA)だけ小さい値を電流リミット値として用いる。
こうすることで、補正トルク指令値の増大による電流トリップを確実に防止することができる。