【実施例1】
【0022】
図1は、本発明の第1の実施形態によるモータ駆動装置を示している。
図1に示すように、本実施例によるモータ駆動装置100は、制御部103と、永久磁石モータ101を駆動する電力変換回路104と、を備え、永久磁石モータ101は位置センサ102を備え、電力変換回路104は電流センサ105を備える。この永久磁石モータ101は、例えば3相ブラシレスDCモータである。また、電力変換回路104は、例えば三相フルブリッジインバータである。
【0023】
制御部103は、ベクトル制御を基本構成とし、モータ速度制御を行う。制御部103は、外部からモータ速度指令ωr*が入力され、三相電圧指令Vu*、Vv*、Vw*を出力する。
【0024】
電力変換回路104は、制御部103から出力される三相電圧指令Vu*、Vv*、Vw*に基づいて動作する。
【0025】
ベクトル制御部106は、モータ速度指令ωr*、d軸電流の検出値Idc、q軸電流の検出値Iqc、モータ速度の検出値ωrcから、d軸電圧指令Vd*とq軸電圧指令Vq*を出力する。
【0026】
回転子位置/モータ速度生成部107では、位置センサ102の出力信号から、モータ速度の検出値ωrcと、回転子位置の検出値θdcを出力する。位置センサ102の出力信号は、例えば回転に伴い生成されるパルス状の信号である。
【0027】
トルク脈動補償部108は、モータ速度指令ωr*と、回転子位置の検出値θdcから、d軸補正電圧指令ΔVd*とq軸補正電圧指令ΔVq*を生成し、これらの指令をそれぞれd軸電圧指令Vd*とq軸電圧指令Vq*に加算する。
【0028】
dq/3相変換部109は、回転子位置の検出値θdcに基づいて、d軸補正後電圧指令Vd**とq軸補正後電圧指令Vq**を、三相電圧指令Vu*、Vv*、Vw*に変換する。
【0029】
3相/dq変換部110は、回転子位置の検出値θdcに基づいて、三相電流の検出値Iuc、Ivc、Iwcを、d軸電流の検出値Idcと、q軸電流の検出値Iqcに変換する。
【0030】
以上が、本実施例の主要な構成要素である。
【0031】
図2は、ベクトル制御部106の内部構成を示している。ベクトル制御部106は、速度制御部200、電流制御部201、電気角周波数生成部202、電圧指令生成部203を備える。
【0032】
速度制御部200は、減算器200aと、速度制御用PI制御器200bを備える。減算器200aは、モータ速度指令ωr*とモータ速度の検出値ωrcの差分から、モータ速度偏差Δωrを出力する。速度制御用PI制御器200bは、モータ速度偏差Δωrから、q軸電流指令Iq*を出力する。
【0033】
電流制御部201は、d軸電流指令生成部201aと、減算器201bと、減算器201cと、d軸電流制御用PI制御器201dと、q軸電流制御用PI制御器201eを備える。d軸電流指令生成部201aは、予め設定したd軸電流指令Id*を出力する。減算器201bは、d軸電流指令Id*とd軸電流の検出値Idcの差分から、d軸電流偏差ΔIdを出力する。同様に、減算器201cは、q軸電流指令Iq*とq軸電流の検出値Iqcの差分から、q軸電流偏差ΔIqを出力する。d軸電流制御用PI制御器201dは、d軸電流偏差ΔIdから、第2d軸電流指令Id**を出力する。同様に、q軸電流制御用PI制御器201eは、q軸電流偏差ΔIqから、第2q軸電流指令Iq**を出力する。
【0034】
電気角周波数生成部202は、モータ速度指令の検出値ωrcから、電気角周波数ω1を出力する。具体的には、以下の式(1)に示す演算を行う。
【0035】
【数1】
【0036】
式(1)において、Pmは極対数(永久磁石モータの極数は、極対数の2倍に等しい)である。
【0037】
電圧指令生成部203は、d軸電圧指令生成部203aと、q軸電圧指令生成部203bを備える。d軸電圧指令生成部203aは、第2d軸電流指令Id**と第2q軸電流指令Iq**と電気角周波数ω1から、d軸電圧指令Vd*を出力する。具体的には、以下の式(2)に示す演算を行う。
【0038】
【数2】
【0039】
式(2)において、R*は巻線抵抗の設定値、Lq*はq軸インダクタンスの設定値である。
【0040】
q軸電圧指令生成部203bは、第2d軸電流指令Id**と第2q軸電流指令Iq**と電気角周波数ω1から、q軸電圧指令Vq*を出力する。具体的には、以下の式(3)に示す演算を行う。
【0041】
【数3】
【0042】
式(3)において、Ld*はd軸インダクタンスの設定値、Ke*は誘起電圧定数の設定値である。
【0043】
トルク脈動補償部108は、振幅生成部108aと、補正電圧生成部108bと、加算部108cを備える。
【0044】
図3は、振幅生成部108aの内部構成を示している。振幅補正部108aは、振幅値データテーブル300を備える。振幅値データテーブル300は、モータ速度指令ωr*に応じて、d軸補正電圧の第1振幅ΔV ̄d1*と、d軸補正電圧の第2振幅ΔV ̄d2*と、q軸補正電圧の第1振幅ΔV ̄q1*と、q軸補正電圧の第2振幅ΔV ̄q2*を読み出す構成となっている。例えば、モータ速度指令が「ωr* = ωr1」となる場合、振幅値データ1〜4が読み出され、「ωr* = ωr2」となる場合、振幅値データ5〜8が読み出される。これら4組の振幅値の算出方法については、後述する。
【0045】
図4は、補正電圧生成部108bの内部構成を示している。補正電圧生成部108bは、加算器400aと、加算器400bと、乗算器401a〜d、sin関数演算器402a、cos関数演算器402bを備える。補正電圧生成部108bは、d軸補正電圧の第1振幅ΔV ̄d1*と、d軸補正電圧の第2振幅ΔV ̄d2*と、q軸補正電圧の第1振幅ΔV ̄q1*と、q軸補正電圧の第2振幅ΔV ̄q2*から、d軸補正電圧ΔVd*とq軸補正電圧ΔVq*を出力する。
【0046】
図5は、加算部108cの内部構成を示している。加算部108cは、加算器500aと加算器500bを備える。加算器500aは、d軸電圧指令Vd*とd軸補正電圧指令ΔVd*を加算し、d軸補正後電圧指令Vd**を出力する。加算器500bは、q軸電圧指令Vq*とq軸補正電圧指令ΔVq*を加算し、q軸補正後電圧指令Vq**を出力する。
【0047】
以下に、トルク脈動補償部108の具体的な演算内容について説明する。
【0048】
本実施例では、以下の式(4)で表される補正電流指令を与える。
【0049】
【数4】
【0050】
式(4)において、Kidはd軸補正電流振幅ゲイン、Kiqはq軸補正電流振幅ゲイン、Θidはd軸補正電流位相、Θiqはq軸補正電流位相、I ̄dはd軸電流の平均値、I ̄qはq軸電流の平均値、nは抑制したいモータトルク脈動の次数である。
【0051】
次に、式(5)に示す補正電流指令を、フィードフォワード制御で実現するため、以下の式(5)で表される補正電圧指令を与える。
【0052】
【数5】
【0053】
式(5)において、ω1*は電気角周波数指令(ω1* = Pm ωr*)、Kvdはd軸補正電圧ゲイン、Kvqはq軸補正電圧ゲイン、Θvdはd軸補正電圧位相、Θvqはq軸補正電圧位相である。
【0054】
式(4)を式(5)に代入し、sin/cos関数とその振幅に整理すると、以下の式(6)および式(7)を得る。
【0055】
【数6】
【0056】
【数7】
【0057】
振幅生成部108aに保存されるd軸補正電圧の第1振幅ΔV ̄d1*と、d軸補正電圧の第2振幅ΔV ̄d2*と、q軸補正電圧の第1振幅ΔV ̄q1*と、q軸補正電圧の第2振幅ΔV ̄q2*は、式(7)に基づいて算出する。同式に示すd軸電流の平均値I ̄dとq軸電流の平均値I ̄qは、例えば、それぞれd軸電流指令Id*とq軸電流指令Iq*として計算してもよい。また式(6)は、
図4に示す補正電圧生成部108bの処理を数式で示したものに相当する。
【0058】
ここで定常状態(電気角周波数指令ω1*、d軸電流の平均値Id ̄、q軸電流の平均値Iq ̄が全て一定)を考えると、式(7)で算出される振幅値は全て一定値となる。このことから、式(7)を予め計算することで、
図3に示すように、4組の振幅値をデータテーブルに保存する構成を実現することができる。
【0059】
以上のようにトルク脈動補償部108を構成することで、式(7)に示す複雑な演算を、4組の振幅値データを同時に読み出す簡易な処理にすることができるため、計算負荷を低減できる。また、処理能力に制約がある演算装置の場合、式(7)の演算において桁落ちが発生する可能性があるが、上述の工夫を施すことで対策することが可能となる。
【0060】
図6は、歪んだ誘起電圧をもつ永久磁石モータを、ベクトル制御で駆動した場合の動作波形を示している。同図に示すeh5は、U相の誘起電圧に含有する5次高調波成分を示している。実際のモータにおける誘起電圧分布は、基本波成分に対して5次や7次の高調波成分を含有する場合が多い。このとき、ベクトル制御、すなわち正弦波駆動を行うと、基本波成分に対して6次や12次のモータトルク脈動が発生する。
【0061】
図7は、本実施例において、d軸電流指令Id*とd軸補正電流指令ΔId*をゼロに設定し、基本波成分に対して6次のモータトルク脈動を抑制する場合(すなわち、n = 6)の動作波形を示している。このように、モータトルクの脈動に応じてq軸電流を脈動させることで、一定トルクを実現することができる。
【0062】
振幅生成部108aは、保存できる振幅値データの個数が有限であるため、
図8の点線に示すように、モータ速度に対して出力が断続的になる。そこで、計算負荷を低減しつつも、
図8の実線に示すような連続的な出力を実現するため、以下に説明する手法を用いても良い。
【0063】
図9は、
図1に示すモータ駆動装置において、トルク脈動補償部108をトルク脈動補償部902に変更した構成を示している。ただし、補正電圧生成部108bと、加算部108cは、
図1に示すものと同一である。
【0064】
振幅生成部902aは、モータ速度指令ωr*と、d軸電流の検出値Idcと、q軸電流の検出値Iqcから、d軸補正電圧の第1振幅ΔV ̄d1*と、d軸補正電圧の第2振幅ΔV ̄d2*と、q軸補正電圧の第1振幅ΔV ̄q1*と、q軸補正電圧の第2振幅ΔV ̄q2*を出力する。
【0065】
図10は、振幅生成部902aの内部構成の内、d軸補正電圧の第1振幅ΔV ̄d1*を生成する部分を示している。その他、d軸補正電圧の第2振幅ΔV ̄d2*と、q軸補正電圧の第1振幅ΔV ̄q1*と、q軸補正電圧の第2振幅ΔV ̄q2*を生成する部分の構成も、
図10に示すものと同様である。振幅生成部902aは、係数値データ1000と、加算器1001と、乗算器1002a〜fと、d軸平均電流用フィルタ1003と、q軸平均電流用フィルタ1004と、電気角周波数指令生成部1005を備える。係数値データ1000は、16個の係数値データから成る。これら16個の係数値の算出方法については、後述する。
【0066】
d軸平均電流用フィルタ1003は、d軸電流の検出値Idcから、d軸電流の平均値I ̄dを出力する。具体的には、以下の式(8)に示す演算を行う。
【0067】
【数8】
【0068】
式(8)において、Tidaはd軸平均電流用フィルタの時定数である。
【0069】
q軸平均電流用フィルタ1003も同様に、q軸電流の検出値Iqcから、q軸電流の平均値I ̄qを出力する。具体的には、以下の式(9)に示す演算を行う。
【0070】
【数9】
【0071】
式(9)において、Tiqaはq軸平均電流用フィルタの時定数である。
【0072】
電気角周波数指令生成部1005は、モータ速度指令ωr*から電気角周波数指令ω1*を出力する。具体的には、以下の式(10)に示す演算を行う。
【0073】
【数10】
【0074】
係数値データ1000に保存される16個の係数値データの算出方法について説明する。振幅演算部902aの場合も、式(7)に基づいてd軸補正電圧の第1振幅ΔV ̄d1*と、d軸補正電圧の第2振幅ΔV ̄d2*と、q軸補正電圧の第1振幅ΔV ̄q1*と、q軸補正電圧の第2振幅ΔV ̄q2*を算出するが、以下の式(11)および式(12)に示すように、駆動条件に依存しないパラメータを集約して演算する点が異なる(ここで、駆動条件に依存するパラメータとは、電気角周波数指令ω1*と、d軸電流の平均値Id ̄と、q軸電流の平均値Iq ̄の3つを指す)。
【0075】
【数11】
【0076】
【数12】
【0077】
式(12)に基づいて算出される16個の係数は、駆動条件に関係なく、全て一定値となる。このことから、式(12)を予め演算しておくことで、16個の係数値として振幅生成部902aに保存することができる。
【0078】
以上のようにトルク脈動補償部902を構成することで、式(7)に示す複雑な演算を、一部簡易化した式(11)と式(12)に示す処理にすることができるため、計算負荷を低減できる。しかしながら、これらの計算は演算周期毎に処理されるため、依然として、計算負荷は大きい。そこで、計算負荷をさらに低減するために、演算内容に応じて演算周期を個別に設定するとよい。
【0079】
先述したように、定常状態において、式(7)より算出されるd軸補正電圧の第1振幅ΔV ̄d1*と、d軸補正電圧の第2振幅ΔV ̄d2*と、q軸補正電圧の第1振幅ΔV ̄q1*と、q軸補正電圧の第2振幅ΔV ̄q2*は一定値となる。このことから、定常状態であれば、振幅演算部902aの出力結果も同様に一定値となるため、演算周期に対して影響を受けない。
【0080】
この点に着目し、トルク脈動補償部902において、演算内容に応じた演算周期の個別設定を行う。
図11は、トルク脈動補償部902において、振幅生成部902aを第1演算周期Ts1、補正電圧生成部108bと加算部108cを第2演算周期Ts2で処理する場合の構成を示している。同図において、第2演算周期Ts2は、変動値を処理する部分に適用されるため、演算周期を十分短く設定する必要がある。一方、第1演算周期Ts1は、一定値を処理する振幅生成部902aに適用されるため、演算周期を長く設定できる。このように、演算周期の個別設定を行うことで、トルク脈動補償部902における振幅生成部902aの計算回数を減らし、計算負荷を低減することができる。
【実施例2】
【0081】
第1の実施形態では、トルク脈動抑制制御を実現する手段を備えたモータ駆動装置のうち、位置センサを必要とする例を説明した。本実施例では、位置センサが不要な例(すなわち、位置センサレス)について説明する。
【0082】
図12は、本発明の第2の実施形態によるモータ駆動装置を示している。モータ駆動装置1200は、
図1に示すモータ駆動装置において、回転子位置/モータ速度生成部107を回転子位置/モータ速度推定部1202に変更したものである。
【0083】
回転子位置/モータ速度推定部1202は、d軸電圧指令Vd*と、q軸電圧指令Vq*と、d軸電流の検出値Idcと、q軸電流の検出値Iqcから、モータ速度の推定値ωrcと回転子位置の推定値θdcを出力する。
図13は、制御軸(dc-qc軸)と軸誤差Δθcの定義を示している。回転子位置/モータ速度推定部1202は、PLL(PLL:Phase Locked Loop)制御器を用いて、軸誤差Δθcがゼロとなるように電気角周波数ω1を調整する。すなわち、制御軸のdc軸とqc軸が、それぞれd軸とq軸に一致するように動作する。
【0084】
図14は、回転子位置/モータ速度推定部1202の内部構成を示している。回転子位置/モータ速度推定部1202は、軸誤差推定部1400、PLL制御部1401、機械角周波数生成部1402、積分器1403を備える。軸誤差推定部1400は、d軸電圧指令Vd*、q軸電圧指令Vq*、d軸電流の検出値Idc、q軸電流の検出値Iqcから、軸誤差Δθcを出力する。具体的には、以下の式(13)に示す演算を行う。
【0085】
【数13】
【0086】
PLL制御部1401は、軸誤差Δθcから電気角周波数ω1を出力する。具体的には、以下の式(14)に示す演算を行う。
【0087】
【数14】
【0088】
式(14)において、KpsはPLL制御の比例ゲイン、KisはPLL制御の積分ゲインである。
【0089】
機械角周波数生成部1402は、電気角周波数ω1から、モータ速度の推定値ωrcを出力する(本実施例では、ωrcを数式で算出するため、推定値と称する)。具体的には、以下の式(15)に示す演算を行う。
【0090】
【数15】
【0091】
積分器1403は、電気角周波数ω1から、回転子位置の推定値θdcを出力する(本実施例では、θdcを数式で算出するため、推定値と称する)。
【0092】
以上のようにモータ駆動装置1200を構成することで、モータ駆動装置100を位置センサレス化することができる。
【0093】
また、
図12に示すモータ駆動装置1200は、第1の実施形態と同様に、振幅生成部902を用いて構成することができる。
図15は、
図12に示すモータ駆動装置において、トルク脈動補償部108をトルク脈動補償部902に変更した構成を示している。モータ駆動装置1500の構成要素は、以上で全て説明済みである。
【実施例3】
【0094】
第1と第2の実施形態は、良好なトルク応答特性を得られる反面、ベクトル制御部106の設計が複雑となる。そこで、ベクトル制御部の構成をシンプルにした例として、第3の実施形態を示す。
【0095】
図16は、本発明の第3の実施形態によるモータ駆動装置を示している。モータ駆動装置1600は、
図1に示すモータ駆動装置において、ベクトル制御部106をベクトル制御部1602、回転子位置/モータ速度生成部107を回転子位置推定部1603に変更したものである。
【0096】
ベクトル制御部1602は、モータ速度指令ωr*と、q軸電流の検出値Iqcから、d軸電圧指令Vd*とq軸電圧指令Vq*を出力する。
【0097】
図17は、ベクトル制御部1602の内部構成を示している。ベクトル制御部1602は、d軸電流指令生成部1700と、q軸電流指令生成部1701と、電気角周波数指令生成部1702と、d軸電圧指令生成部1703と、q軸電圧指令生成部1704を備える。d軸電流指令生成部1700は、予め設定したd軸電流指令Id*を出力する。q軸電流指令生成部1701は、q軸電流の検出値Iqcから、q軸電流指令Iq*を出力する。具体的には、以下の式(16)に示す演算を行う。
【0098】
【数16】
【0099】
式(16)において、Tiqrはq軸電流指令用フィルタの時定数である。
【0100】
電気角周波数指令生成部1702は、モータ速度指令ωr*から、電気角周波数指令ω1*を出力する。具体的には、式(10)に示す演算を行う。
【0101】
d軸電圧指令生成部1703は、d軸電流指令Id*と、q軸電流指令Iq*と、電気角周波数指令ω1*から、d軸電圧指令Vd*を出力する。具体的には、以下の式(17)に示す演算を行う。
【0102】
【数17】
【0103】
q軸電圧指令生成部1704は、d軸電流指令Id*と、q軸電流指令Iq*と、電気角周波数指令ω1*から、q軸電圧指令Vq*を出力する。具体的には、以下の式(18)に示す演算を行う。
【0104】
【数18】
【0105】
回転子位置推定部1603は、d軸電圧指令Vd*、q軸電圧指令Vq*、モータ速度指令ωr*、d軸電流の検出値Idc、q軸電流の検出値Iqcから、回転子位置の推定値θdcを出力する(本実施例では、θdcを数式で算出するため、推定値と称する)。
【0106】
図18は、回転子位置推定部1603の内部構造を示している。回転子位置推定部1603は、軸誤差推定部1400(
図14のものと同一)と、電気角周波数指令生成部1800と、PLL制御部1801と、積分器1802を備える。
【0107】
電気角周波数指令生成部1800は、モータ速度指令ωr*から、電気角周波数指令ω1*を出力する。具体的には、式(10)に示す演算を行う。
【0108】
PLL制御部1801は、軸誤差Δθcと電気角周波数指令ω1*から、電気角周波数ω1を出力する。具体的には、以下の式(19)に示す演算を行う。
【0109】
【数19】
【0110】
積分器1802は、電気角周波数ω1から、回転子位置の推定値θdcを出力する。
【0111】
第1と第2の実施形態では、ベクトル制御部106において、複数のPI制御器の設計が必要となる。一方、第3の実施形態では、ベクトル制御部1602において、q軸電流指令生成部1701のみを設計すればよい。これにより、トルク応答特性は劣化してしまうが、制御部の設計は非常に容易となる。
【0112】
また、
図16に示すモータ駆動装置1600は、第1と第2の実施形態と同様に、振幅生成部902を用いて構成することができる。
図19は、
図16に示すモータ駆動装置において、トルク脈動補償部108をトルク脈動補償部902に変更した構成を示している。モータ駆動装置1900の構成要素は、以上で全て説明済みである。