以下、図に示した実施の形態に基づき、本発明を説明する。図1は、一実施の形態におけるモータ制御装置を適用したアクチュエータの概念図である。図2は、電気角速度に対するq軸電流を最大とするdq各相の電圧指令値の合成ベクトルのベクトル角度の変化を示す図である。図3(A)は、d相電流をゼロにし、飽和時に積分中止するようにモータを制御した場合のアクチュエータのストローク変位に対するdq各相の電圧指令値の合成ベクトルのベクトル角度の変化を示すグラフである。図3(B)は、弱め界磁制御を行いつつ飽和時に積分中止してモータを制御した場合のアクチュエータのストローク変位に対するdq各相の電圧指令値の合成ベクトルのベクトル角度の変化を示すグラフである。図4は、一実施の形態におけるモータ制御装置のシステム図である。図5は、PWM回路を示す図である。図6(A)は、モータに逆回転方向のトルクを発生させる場合に使用される電気角速度をパラメータとして作成したベクトル角度最終値のマップを示す図である。図6(B)は、モータに正回転方向のトルクを発生させる場合に使用される電気角速度をパラメータとして作成したベクトル角度最終値のマップを示す図である。図7は、dq各相の電圧指令値の合成ベクトルのq軸に対する回転方向を決定するための表である。図8は、q相電流目標値がプラスの場合の合成ベクトルの回転方向を説明する図である。図9は、q相電流目標値がプラスの場合のdq直交座標における合成ベクトルの回転方向を説明する図である。図10は、q相電流目標値がマイナスの場合の合成ベクトルの回転方向を説明する図である。図11は、q相電流目標値がマイナスの場合のdq直交座標における合成ベクトルの回転方向を説明する図である。図12は、電気角速度をパラメータとして作成したq相電流目標値を制限するリミット値のマップを示す図である。図13は、一実施の形態のモータ制御装置における処理手順を示すフローチャートである。図14は、他の実施の形態におけるモータ制御装置のシステム図である。図15は、選択手段におけるスイッチコントローラのシステム図である。図16は、他の実施の形態のモータ制御装置における処理手順を示すフローチャートである。
一実施の形態におけるモータ制御装置が適用されるアクチュエータは、図1に示すように、回転部材たるピニオンギア1と直動部材たるラック軸2とを有してピニオンギア1の回転運動をラック軸2の直線運動に変換する運動変換機構Hと、ピニオンギア1に連結されるロータRを有するモータMとを備えて構成されている。
詳しくは、ピニオンギア1は、ラック軸2のラック歯2aに歯合されており、モータMを駆動してピニオンギア1を回転駆動すると、ラック軸2を直線運動させることが可能とされている。
なお、運動変換機構Hは、上記したところでは、ピニオンギアとラック軸2とで構成されたラックピニオン機構とされているが、これ以外にも、回転部材と摩擦車とし直動部材を軸としてもよいし、ボール螺子ナットおよび螺子軸の一方を回転部材として他方を直動部材とする送り螺子機構とされてもよい。また、ピニオンギア1とロータRとの間に歯車機構等で構成される減速機を介装し、ロータRの回転運動を減速して上記ピニオンギア1に伝達するようにしてもよい。
そして、当該アクチュエータは、上述のようにモータMによってピニオンギア1を回転駆動し、さらに、ピニオンギア1の回転によってラック軸2を直動させるようになっており、直動アクチュエータとして機能するとともに、ピニオンギア1とラック軸2が軸方向の直線相対運動を呈すると、回転部材であるピニオンギア1が回転運動を呈することになり、このピニオンギア1の回転運動がモータMのロータRに伝達されることになるので、モータMの発生トルクでピニオンギア1の回転運動を抑制してラック軸2の制動を行うことが可能となる。
つづき、モータMは、この場合、筒状のフレーム10と、フレーム10の内周側に設けた電機子であるステータSと、フレーム10に回転自在に軸支されるロータRとを備え三相ブラシレスモータとして構成され、詳しくは、ステータSは、複数のティースを備えた環状のステータコア11と、各ティースに巻回されたU,V,W相の各相における巻線12とを備えており、他方のロータRは、螺子軸1の一端に連結されるシャフト13と、シャフト13の中間部外周に装着された駆動用磁石14とを備えている。
なお、駆動用磁石14は、駆動用磁石14を所定数の極数を実現できるようにブロック化してシャフト13の外周に接着されるか、環状に形成して分割着磁されてシャフト13の外周に嵌着される。
また、このモータMには、ロータRの回転角(電気角)θを検出するために、回転角センサ15が搭載されており、具体的にはたとえば、回転角センサ15は、シャフト13に設けたレゾルバコアとフレーム10に設けられるレゾルバコアに対向するレゾルバステータとを備え、さらに、電気角θから電気角速度ωを得られるようになっている。なお、電気角θから電気角速度ωを演算する演算部を別途設けるのであれば、他にも、光学式のエンコーダを採用してもよいし、ロータRにセンシング用磁石を設ける場合にはホール素子やMR素子等の磁気センサをフレーム10に設けるとした構成としてもよい。
他方、モータ制御装置20は、基本的には、モータMを比例積分制御する。具体的には、モータ制御装置20は、比例積分制御に当たり、モータMのU,V,Wの三相の巻線12に流れる電流をdq座標におけるdq各相の電流に変換する二相変換を行い、このdq各相の電流値id,iqとdq各相の電流目標値id*,iq*との偏差εd,εqを求め、dq各相毎に偏差εd,εqに比例ゲインKPを乗じた値と、偏差εd,εqを積分して積分ゲインKIを乗じた値とを加算してdq各相の電圧指令値Vd,Vqを演算し、電圧指令値Vd,Vqを実際の三相の電圧指令値Vu,Vv,Vwに変換し、電圧指令値Vu,Vv,Vwに応じたPWM開度(デューティ比)で三相の巻線12に電圧を印加してモータMの駆動電流を制御する。
ここで、dq各相の電圧指令値Vd,Vqの合成ベクトルが飽和する、すなわち、dq各相の電圧指令値Vd,Vqの合成ベクトルの長さが飽和電圧Vsに達すると、d相電流idおよびq相電流iqが互いに他相に干渉することと、電気角速度ωに比例する誘導起電力の影響によって各相の電流値id,iqを各相の電流目標値id*,iq*通りに制御することができなくなり、モータMに狙い通りのトルクを発生させることができなくなる。
詳しくは、dq変換によるd相およびq相は、実際のモータMにおけるU,V,Wの三相巻線12と等価な直交二相巻線に変換されたものであるので、実際のd相電圧とq相の電圧の合成ベクトル長さの値は、飽和電圧Vsを超える値をとることができないが、d相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルの長さ(Vd2+Vq2)1/2は、上記制限とは無関係に各電流目標値id*,iq*と上記d相およびq相の電流値id,iqの偏差εd,εqに基づいて演算されるので、上記制限を超える場合がある。ここで、飽和電圧Vsは、dq座標における電源Eの電圧に相当する値である。
したがって、d相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトル長さが飽和電圧Vsを超える場合、すなわち、d相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルが飽和している場合には、これらd相電圧指令値Vdおよびq相電圧指令値Vqを三相の巻線12にそれぞれ印加すべき電圧指令値Vu,Vv,Vwに変換しても、実際には電圧指令値Vu,Vv,Vw通りには、三相各相の巻線12を印加できないため、各電流値id,iqが各電流目標値id*,iq*に追随できず、各電流目標値id*,iq*と各電流値id,iqとの偏差εd,εqの絶対値が大きくなってしまう。
すると、d相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルが飽和しているにもかかわらず、d相電圧指令値Vdおよびq相電圧指令値Vqの絶対値は増大するので、飽和の影響でモータMのトルクにリップルを生じて制御性が悪化することになる。
他方、ロータRをマイナスの速度方向に回転させるトルクをモータMに発生させる場合にq軸の電流値iqがプラスの値を持つという符号の採りかたをして、d軸を縦軸としq軸を横軸に採るdq直交座標では、d相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルが飽和している状態において、q相の電流値iqが最大値を採るときのd相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルのq軸に対する角度(ベクトル角度)は、図2に示すように、電気角速度ωの変化によって変化する。なお、説明の都合上と理解の容易のため、d相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルのベクトル角度は、d相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルがdq直交座標におけるq軸に対してなす角度として説明するが、本発明の意図するところは、d相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルのベクトル角度を制御することによってq相電流を適切に制御するところにあり、dq直交座標の原点から伸びる任意の直線を基準として、この直線に対してd相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルのなす角度をベクトル角度としてもよく、たとえば、当該直線をdq直交座標におけるd軸とするとしてもよい。
図2中実線で示すように、ロータRがマイナスの速度を持って逆回転しており、このロータRの逆回転を助勢するトルクをモータMが発生している場合(力行状態)には、q相の電流値iqが最大値となる合成ベクトルの角度は、電気角速度ωの減少(マイナス側に増大)によって0度から時計回りに−90度へ近付き、最終的には、−90度となり、対して、ロータRがプラスの速度を持って正回転しており、このロータRの正回転を抑制するトルクをモータMが発生している場合(制動状態)には、q相の電流値iqが最大値となる合成ベクトルの角度は、電気角速度ωの上昇によって0度から反時計回りに90度へ近付き、最終的には、90度となる。
なお、図2中破線で示すように、ロータRがプラスの速度を持って正回転しており、このロータRの正回転を助勢するトルクをモータMが発生している場合(力行状態)には、q相の電流値iqが最小値(マイナス側の最大値)となる合成ベクトルの角度は、電気角速度ωの上昇によって−180度から反時計回りに−90度へ近付き、最終的には、−90度となり、対し、ロータRがマイナスの速度を持って逆回転しており、このロータRの逆回転を抑制するトルクをモータMが発生している場合(制動状態)には、q相の電流値iqが最小値(マイナス側の最大値)となる合成ベクトルの角度は、電気角速度ωの減少(マイナス側に増大)によって180度から時計回りに90度へ近付き、最終的には、90度となる。
そして、q相電流は、モータMが出力するトルクに寄与する電流であるので、q相の電流値iqの絶対値が大きければ大きいほど、モータMの発生トルクも大きくなる。
このことから、dq各相の電圧指令値Vd,Vqの合成ベクトルが飽和する場合、合成ベクトルのq軸に対する角度を制御してやれば、飽和状態にあっても、モータMの発生トルクに寄与するq相電流を制御することができ、モータMにより大きなトルクを発生させることができる。
これに対し、モータMをdqの二相変換を行ってd相電流idをゼロに制御するとともにd相およびq相の電圧指令値Vd,Vqの合成ベクトルが飽和すると偏差εd,εqの積分演算を中止するようにした場合、d相およびq相の電圧指令値Vd,Vqの合成ベクトルが飽和すると、図3(A)に示すように、力行状態では、d相電圧指令値Vdとq相電圧指令値Vqの合成ベクトルのq軸に対する角度は、0度から−50度程度との間で推移し、制動状態においては、80度から120度程度の間で推移する。
さらに、弱め界磁制御を行い、かつ、d相およびq相の電圧指令値Vd,Vqの合成ベクトルが飽和すると偏差εd,εqの積分演算を中止してモータMを制御する場合、図3(B)に示すように、力行状態では、d相電圧指令値Vdとq相電圧指令値Vqの合成ベクトルのq軸に対する角度は、−20度から−50度程度との間で推移し、制動状態においては、30度から70度程度の間で推移する。
なお、図3(A),(B)の各グラフは、モータMを従来からある制御手法によって制御した場合の結果であり、具体的には、各グラフは、ラック軸2に正弦波振動を与えてストロークさせて、ストロークの途中でd相およびq相の電圧指令値Vd,Vqの合成ベクトルが飽和するようにラック軸2を往復動させた場合におけるd相電圧指令値Vdとq相電圧指令値Vqの合成ベクトルのq軸に対する角度を示しており、モータMにロータRを逆回転させるトルクを与えるようにしている。また、ラック軸2に正弦波振動を与えてストロークさせており、各グラフの両端および中央付近ではストローク速度は低くなるのでd相およびq相の電圧指令値Vd,Vqの合成ベクトルが飽和していないため、d相電圧指令値Vdとq相電圧指令値Vqの合成ベクトルのq軸に対しなす角度に変化が現れている。さらに、電気角速度ωの絶対値が一番大きくなるのは、横軸の1/4および3/4の部分である。
上記したところから、理解できるように、モータMを従来と同様に制御したのでは、d相およびq相の電圧指令値Vd,Vqの合成ベクトルが飽和しても、本発明のようにベクトル角度制御が行われないため、電気角速度ωの絶対値の上昇に対して合成ベクトルのq軸に対する角度の絶対値が減少してしまい、q相の電流値iqの絶対値が最大となるように制御されていない。
そこで、本発明の一実施の形態におけるモータ制御装置20にあっては、dq各相の電圧指令値Vd,Vqの合成ベクトルのq軸に対する角度を制御することが可能なベクトル角度制御手段を備えている。
そして、このベクトル角度制御手段によって、dq各相の電圧指令値Vd,Vqの合成ベクトルのq軸に対する角度を制御することによって、dq各相の電圧指令値Vd,Vqの合成ベクトルが飽和する場合にあっても、モータMが発生するトルクを適切に制御することが可能であるとともに、また、モータMに従来のモータ制御装置に比較してより一層大きなトルクを発生させることが可能である。
また、このモータ制御装置20にあっては、モータMにより一層大きなトルクを発生させることが可能であるので、トルク制御範囲が大きくなるとともに、より小型のモータを使用してもアクチュエータの必要推力を確保することができる。換言すれば、より小さなモータを使用することができ、アクチュエータのコストを低減することが可能となり、アクチュエータを使用する装置へのアクチュエータの搭載性をも向上させることが可能となる。
つづいて、より具体的にモータ制御装置20を説明する。このモータ制御装置20は、具体的には、図4に示すように、各電流目標値id*,iq*を演算する電流目標値演算部21と、q相電流目標値iq*がリミット値を超える場合にこれをリミット値Ilimに制限するq相電流制限手段たる電流制限部22と、上記巻線12の三相のうち二相に流れる電流をdq変換してd相電流値idおよびq相電流値iqを演算する二相電流演算部23と、各電流目標値id*,iq*と上記d相およびq相の電流値id,iqに基づいてd相電圧指令値Vdおよびq相電圧指令値Vqを演算する比例積分制御部24と、d相およびq相の各電圧指令値Vd,Vqの合成ベクトルのq軸に対する角度を制御するベクトル角度制御手段たるベクトル角度制御部25と、d相およびq相の各電圧指令値Vd,Vqの合成ベクトルが飽和しているか否かを判断して比例積分制御とベクトル角度制御のいずれかを選択する選択手段である飽和判断部26と、d相電圧指令値Vdおよびq相電圧指令値VqをU,V,Wの三相各相の電圧指令値Vu,Vv,Vwに変換する三相変換演算部27と、三相変換演算部27が出力する上記各電圧指令値Vu,Vv,Vwのうち、PWM開度が全開、すなわち、PWMデューティ比が最大値以上となる場合に、PWMデューティ比を最大値とする値に電圧指令値Vu,Vv,Vwを制限するリミッタ28と、モータMのU,V,Wのうち二相iu,ivに流れる電流値を検出する電流検出器29と、電圧指令値Vu,Vv,Vwに応じて所定のPWM開度でU,V,Wの各巻線12を印加するPWM回路30とを備えて構成されている。
そして、このモータ制御装置20は、基本的には、電流目標値演算部21によって決定されるd相およびq相の各電流目標値id*,iq*と、二相電流演算部23の演算結果として得られるd相およびq相の電流値id,iqとのそれぞれの偏差εd,εqに基づいてモータMを比例積分制御する。なお、偏差εd,εqを微分して得られる要素を追加して比例微分積分制御を行うようにしてもよい。
ここで、電流目標値演算部21は、d相およびq相の電流目標値id*,iq*を所定の制御則に則って上記比例積分制御部24に出力するものであるが、所定の制御側は、アクチュエータが使用される機器に適するものが採用される。
また、この電流目標値演算部21は、基本的には、d相電流目標値id*を0としてq相電流目標値iq*を演算するようになっているが、ロータの電気角速度ωが大きい場合に、d相電流目標値id*をマイナスの値に誘導して弱め界磁制御をするようにしてもよいことは無論である。
そして、電流検出器29としては、ホール素子や巻線等を用いた非接触型や、三相の巻線12のいずれか二つに直列介装した抵抗の電圧降下から電流値を得る電流センサを用いればよい。
また、上記電流検出器29は、U,V,W相のうち二相に流れる電流値を検出すればよく、これは、二相の電流値が分かればロータRの電気角θから後述する下記式(1)を用いてd相およびq相の電流値に変換可能であるからである。
さらに、PWM回路30は、図5に示すように、電源Eと、モータMにおける三相各相の巻線12に電流供給を行う6つのスイッチング素子30aと、各スイッチング素子30aにPWMパルス信号を与えるマルチバイブレータ等の図示しないパルス発生器とを備えて構成されており、このPWM回路31は、比例積分制御部21が出力する各電圧指令値に基づいて所定のPWM開度で上記各相に電流供給を行う。
そして、二相電流演算部23は、電気角θを用いて、以下の式(1)に示したように、上記各電流値iv,iuをd相およびq相の電流値id,iqへ変換する演算を行い、この変換されたd相およびq相の電流値id,iqを比例積分制御部24へ出力する。
比例積分制御部24は、各電流目標値id*,iq*とd相およびq相の電流値id,iqの各偏差εd,εqを求め、上記各偏差εd,εqをそれぞれ積分した値に積分ゲインKIを乗じるとともに、各偏差εd,εqに比例ゲインKPを乗じることで得られる二つの値を加算して、d相電圧指令値Vdおよびq相電圧指令値Vqを演算する。
具体的には、各相毎の偏差εd,εqは、それぞれ、εd=id*−id、εq=iq*−iqの計算式によって演算され、各偏差εd,εqの積分については、各相毎に積分値fd,fqは、それぞれ前回制御時に演算されたd相およびq相の積分値fdpre,fqpreに対応する相の偏差εd,εqを加算演算することによりd相およびq相の積分値を演算される。つまり、d相の積分値fdはfd=fdpre+εdで,q相の積分値fqはfq=fqpre+εqでそれぞれを演算される。
したがって、d相の電圧指令値Vdは、Vd=KI・fd+KP・εdで演算され、q相の電圧指令値Vqは、Vq=KI・fq+KP・εqで演算され、上記した比例積分制御部24は、上記のようにして演算した各電圧指令値Vd,Vqを出力する。
すなわち、モータ制御装置20の場合、電流ループは、二相電流演算部23、比例積分制御部24および制御対象であるモータMとで作られる電流フィードバックループとなる。
そして、さらに、d相電圧指令値Vdおよびq相電圧指令値Vqは、上記したようにU,V,Wの各相の電圧指令値に変換する三相変換演算部27に入力され、この三相変換演算部27は、下記式(2)の演算によって、上記d相電圧指令値Vdおよびq相電圧指令値Vqを実際のU,V,W各相の電圧指令値Vu,Vv,Vwへ変換し、この変換された電圧指令値Vu,Vv,VwをPWM回路30に出力する。なお、リミッタ28は、PWM回路30におけるPWM開度が最大から最小となる値の範囲内になるように、電圧指令値Vu,Vv,Vwを制限するために設けられているものである。
以上によって、モータ制御装置20は、基本的には、電流ループ処理を行って比例積分制御によってモータMを駆動するようになっている。
つづき、本実施の形態における発明のモータ制御装置20にあっては、dq各相の電圧指令値Vd,Vqの合成ベクトルのq軸に対する角度を制御することができるようにベクトル角度制御部25を備えており、ベクトル角度を制御することで、dq各相の電圧指令値Vd,Vqの合成ベクトルが飽和する場合にあっても、モータMが発生するトルクを適切に制御することができるようになっている。
このベクトル角度制御部25は、ベクトル角度目標値θdqを求めて、このベクトル角度目標値θdqと合成ベクトル長さ(Vd2+Vq2)1/2から、d相の電圧指令値VdをVd=(Vd2+Vq2)1/2・sinθdqで演算し、q相の電圧指令値VqをVq=(Vd2+Vq2)1/2・cosθdqで演算して、これらdq各相の電圧指令値Vd,Vqを三相変換演算部27に出力するようになっている。
なお、sinθdq、cosθdqの演算にあたっては、実際には、ベクトル角度制御部25は、sin関数マップを用いるようにしている。このsin関数マップは、もともと、三相変換演算部27がdq−UVW変換の際に使用するため、sin関数マップをベクトル角度制御部25でも使用することによって、モータ制御装置20にsin関数マップを重複して保持させる必要はない。
もどって、詳細に説明すると、ベクトル角度制御部25は、まず、ロータRの電気角速度ωに基づいて、q相電流目標値iq*がプラスである場合には、q相電流iqが最大値をとるベクトル角度を、q相電流目標値iq*がマイナスである場合にはq相電流iqが最小値をとるベクトル角度をそれぞれベクトル角度最終値θdq*とする。
具体的には、上記ベクトル角度最終値θdq*は電気角速度ωに依存して変化するので、予め、図6(A),(B)に示すように、電気角速度ωをパラメータとして変動するベクトル角度最終値θdq*をマップ化しておき、ベクトル角度制御部25で電気角速度ωをモニタし、当該マップを参照してベクトル角度最終値θdq*をマップ演算するようにしてある。
このようにマップ演算を行うことによって、ベクトル角度を制御するのに必要なベクトル角度最終値θdq*を簡単に得ることができ、これによって、演算時間の短縮を図って制御応答性を向上することができ、さらには、コスト高となる高性能なCPUを用いなければならない事態も回避することができる。
そして、上記マップは、図6(A)に示したモータMにロータRを逆回転させるトルクを発生させる場合におけるマップと、図6(B)に示したモータMにロータRを正回転させるトルクを発生させる場合におけるマップの二種類が用意される。
なお、実際には、ベクトル角度最終値θdq*は、電気角速度ωの変化に対して連続して変化するが、マップ作成に当たっては、電気角速度ωの任意の値ずつ変化させた時の不連続なベクトル角度最終値θdq*として、実際にモニタされた電気角速度ωに対応するベクトル角度最終値θdq*がマップ上に存在しない場合には、線形補間によってベクトル角度最終値θdq*を演算するようにしておけばよい。
さらに、マップ演算を行う代わりに、θ
dq*を式(3)によって近似的に求め、モータMにロータRを逆回転させるトルクを発生させる場合には、−90度から90度の範囲でθ
dq *を求め、モータMにロータRを正回転させるトルクを発生させる場合には、−180度から−90度および90度から180度の範囲でθ
dq *を求めるようにしてもよい。なお、式(3)中、ωは電気角速度を示し、aは、任意の正の小さな定数である。
つづいて、ベクトル角度制御部25は、前回制御時の電圧指令値Vd,Vqの合成ベクトルを取り込み、前回制御時の電圧指令値Vd,Vqの合成ベクトルのベクトル角度θvを今回制御に当たっての現在のベクトル角度として、ベクトル角度最終値θ
dq*とベクトル角度θvの角度制御偏差たるベクトル角度制御偏差εθ
dqと、q相電流目標値iq*の符号、および、q相電流目標値iq*とq相電流値iqの偏差である電流制御偏差ε
q(ε
q=iq*−iq)とから、図7に示すような判断を行って、合成ベクトルのq軸に対する回転方向を決定し、この回転方向からベクトル角度目標値θ
dqを設定するようにする。
なお、ベクトル角度θvは、電圧指令値Vd,Vqの合成ベクトルのq軸に対する角度であるが、q軸に対して合成ベクトルが反時計回りには0度から180度の間で変化し、q軸に対して合成ベクトルが時計回りには0度から−180度の間で変化するものとしてあり、また、ベクトル角度目標値θdqも同様である。
また、上記ベクトル角度制御偏差εθdqは、ベクトル角度最終値θdq*とベクトル角度θvの単純偏差eθ(eθ=θdq*−θv、単位は角度)に基づいて求められる量であって、単純偏差eθが−180以上180度未満の範囲内にある場合、単純偏差eθがそのままベクトル角度制御偏差εθdqとなり、単純偏差eθが180度以上の場合、ベクトル角度制御偏差εθdqは、εθdq=eθ−360で演算され、単純偏差eθが−180度未満の場合、ベクトル角度制御偏差εθdqは、εθdq=eθ+360で演算される。したがって、ベクトル角度制御偏差εθdqは、必ず−180度以上180度未満の範囲内の値を採るように調整されていることになる。
上記判断では、q相電流目標値iq*の符号がプラスの場合、すなわち、モータMにロータRを逆回転させるトルクを発生させる場合であって、電流制御偏差εqがプラスの値を採る状況で、ベクトル角度制御偏差εθdqが−180度以上0度未満の時には、ベクトル角度θvを時計回りに回転させ、逆に、ベクトル角度制御偏差εθdqが0度以上180度未満の時には、ベクトル角度θvを反時計回りに回転させる。
他方、q相電流目標値iq*の符号がプラスの場合であっても、電流制御偏差εqがマイナスの値を採る状況では、ベクトル角度制御偏差εθdqが−180度以上0度未満の時には、ベクトル角度θvを反時計回りに回転させ、逆に、ベクトル角度制御偏差εθdqが0度以上180度未満の時には、ベクトル角度θvを時計回りに回転させる。
すなわち、q相電流目標値iq*の符号がプラスであることを前提にして、q相電流目標値iq*よりq相電流値iqが小さい場合、つまり、電流制御偏差εqがプラスの値の場合であってベクトル角度制御偏差εθdqが−180度以上0度未満の場合には、図8に示すように、前回制御時のベクトル角度θvは、q相電流iqを最大にするベクトル角度最終値θdq*のラインL1と、このラインL1に対して180度位相の異なるラインL2との間の領域(a)内に存在していることになる。また、q相電流目標値iq*よりq相電流値iqが小さいので、この場合、前回制御時のベクトル角度θvをq相電流iqを最大にするベクトル角度最終値θdq*のラインL1に近づけることでq相電流iqをq相電流目標値iq*に近づけることができることから、ラインL1に対して図8中下方へ合成ベクトルを移動させる、つまり、dq軸の直交座標で考えると合成ベクトルを時計回りに回転させると、合成ベクトルの回転角度が最大でも180度以下にすることができ、より早くq相電流iqをq相電流目標値iq*に追随させることができる。
上記したところをもう少し詳しく説明すると、たとえば、ベクトル角度最終値θdq*が−90度である場合、dq軸の直交座標で考えると、図9に示すように、前回制御時の合成ベクトルのベクトル角度θvが−90度より大きく90度以下の範囲内にある状態となり、このような範囲内に合成ベクトルがある場合、合成ベクトルがq軸に対して成す角度であるベクトル角度θvをベクトル角度最終値θdq*にするには、合成ベクトルを図9中時計回りに回転させるほうが回転角度が少なくて済むことが理解できるであろう。
このように、上記判断を行うことによって、より速くq相電流iqをq相電流目標値iq*に追随させるには、ベクトル角度最終値θdq*に対して、合成ベクトルを時計回りと反時計回りのいずれに回転させるべきかを見極めることができるのである。
同様に、q相電流目標値iq*の符号がプラスであることを前提にして、q相電流目標値iq*よりq相電流値iqが小さい場合、つまり、電流制御偏差εqがプラスの値の場合であってベクトル角度制御偏差εθdqが0度以上180度未満の場合には、図8に示すように、前回制御時のベクトル角度θvは、q相電流iqを最大にするベクトル角度最終値θdq*のラインL1と、このラインL1に対して180度位相の異なるラインL2との間の領域(b)内に存在していることになる。また、q相電流目標値iq*よりq相電流値iqが小さいので、この場合、前回制御時のベクトル角度θvをq相電流iqを最大にするベクトル角度最終値θdq*のラインL1に近づけることでq相電流iqをq相電流目標値iq*に近づけることができることから、ラインL1に対して図8中上方へ合成ベクトルを移動させる、つまり、dq軸の直交座標で考えると合成ベクトルを反時計回りに回転させると、合成ベクトルの回転角度が最大でも180度以下にすることができることになる。
さらに、q相電流目標値iq*の符号がプラスであることを前提にして、q相電流目標値iq*よりq相電流値iqが大きい場合、つまり、電流制御偏差εqがマイナスの値の場合であってベクトル角度制御偏差εθdqが−180度以上0度未満の場合には、図8に示すように、前回制御時のベクトル角度θvは、q相電流iqを最大にするベクトル角度最終値θdq*のラインL1と、このラインL1に対して180度位相の異なるラインL2との間の領域(a)内に存在していることになるが、今度は、q相電流目標値iq*よりq相電流値iqが大きいので、この場合、前回制御時のベクトル角度θvをq相電流iqを最大にするベクトル角度最終値θdq*のラインL1から遠ざける必要がある。
したがって、ラインL1に対して図8中上方へ合成ベクトルを移動させる、つまり、dq軸の直交座標で考えると合成ベクトルを反時計回りに回転させると、合成ベクトルをベクトル角度最終値θdq*のラインL1から確実に遠ざけてより早くq相電流iqをq相電流目標値iq*に追随させることができる。ここで、仮に、合成ベクトルを時計回りに回転させると、一端、q相電流iqは最大値まで増加してからq相電流目標値iq*に追随することになるので、制御性が悪化することになるので、上述の判断によって回転方向を定めることで、制御性の悪化を防止することが可能となるのである。
また、すなわち、q相電流目標値iq*の符号がプラスであることを前提にして、q相電流目標値iq*よりq相電流値iqが大きい場合、つまり、電流制御偏差εqがマイナスの値の場合であってベクトル角度制御偏差εθdqが0度以上180度未満の場合には、図8に示すように、前回制御時のベクトル角度θvは、q相電流iqを最大にするベクトル角度最終値θdq*のラインL1と、このラインL1に対して180度位相の異なるラインL2との間の領域(b)内に存在していることになるが、上記と同様にq相電流目標値iq*よりq相電流値iqが大きいので、この場合、前回制御時のベクトル角度θvをq相電流iqを最大にするベクトル角度最終値θdq*のラインL1から遠ざける必要がある。
したがって、ラインL1に対して図8中下方へ合成ベクトルを移動させる、つまり、dq軸の直交座標で考えると合成ベクトルを時計回りに回転させると、合成ベクトルをベクトル角度最終値θdq*のラインL1から確実に遠ざけてより早くq相電流iqをq相電流目標値iq*に追随させることができる。
つづき、q相電流目標値iq*の符号がマイナスの場合、すなわち、モータMにロータRを正回転させるトルクを発生させる場合であって、電流制御偏差εqがプラスの値を採る状況で、ベクトル角度制御偏差εθdqが−180度以上0度未満の時には、ベクトル角度θvを反時計回りに回転させ、逆に、ベクトル角度制御偏差εθdqが0度以上180度未満の時には、ベクトル角度θvを時計回りに回転させる。
他方、q相電流目標値iq*の符号がマイナスの場合であっても、電流制御偏差εqがマイナスの値を採る状況では、ベクトル角度制御偏差εθdqが−180度以上0度未満の時には、ベクトル角度θvを時計回りに回転させ、逆に、ベクトル角度制御偏差εθdqが0度以上180度未満の時には、ベクトル角度θvを反時計回りに回転させる。
すなわち、q相電流目標値iq*の符号がマイナスであることを前提にして、q相電流目標値iq*よりq相電流値iqが小さい場合、つまり、電流制御偏差εqがプラスの値の場合であってベクトル角度制御偏差εθdqが−180度以上0度未満の場合には、図10に示すように、前回制御時のベクトル角度θvは、q相電流iqを最小にするベクトル角度最終値θdq*のラインL3と、このラインL3に対して180度位相の異なるラインL4との間の領域(c)内に存在していることになる。
また、q相電流目標値iq*よりq相電流値iqが小さいので、この場合、前回制御時のベクトル角度θvをq相電流iqを最小にするベクトル角度最終値θdq*のラインL3から遠ざけることでq相電流iqをq相電流目標値iq*に近づけることができることから、ラインL3に対して図10中上方へ合成ベクトルを移動させる、つまり、dq軸の直交座標で考えると合成ベクトルを反時計回りに回転させると、合成ベクトルをベクトル角度最終値θdq*のラインL3から確実に遠ざけてより早くq相電流iqをq相電流目標値iq*に追随させることができる。ここで、仮に、合成ベクトルを時計回りに回転させると、一端、q相電流iqはマイナスの最大の値である最小値まで減少してからq相電流目標値iq*に追随することになるので、制御性が悪化することになるので、上述の判断によって回転方向を定めることで、制御性の悪化を防止することが可能となるのである。
上記したところをもう少し詳しく説明すると、たとえば、ベクトル角度最終値θdq*が90度である場合、dq軸の直交座標で考えると、図11に示すように、前回制御時の合成ベクトルのベクトル角度θvが90度より大きく180度以下の範囲内および−90度より小さく−180度より大きい範囲内にある状態となり、このような範囲内に合成ベクトルがある場合、合成ベクトルがq軸に対して成す角度であるベクトル角度θvをベクトル角度最終値θdq*から遠ざけるには、合成ベクトルを図11中反時計回りに回転させることが合理的であることが理解できるであろう。
同様に、q相電流目標値iq*の符号がマイナスであることを前提にして、q相電流目標値iq*よりq相電流値iqが小さい場合、つまり、電流制御偏差εqがプラスの値の場合であってベクトル角度制御偏差εθdqが0度以上180度未満の場合には、図10に示すように、前回制御時のベクトル角度θvは、q相電流iqを最小にするベクトル角度最終値θdq*のラインL3と、このラインL3に対して180度位相の異なるラインL4との間の領域(d)内に存在していることになる。
また、q相電流目標値iq*よりq相電流値iqが小さいので、この場合、前回制御時のベクトル角度θvをq相電流iqを最小にするベクトル角度最終値θdq*のラインL3から遠ざけることでq相電流iqをq相電流目標値iq*に近づけることができることから、ラインL3に対して図10中下方へ合成ベクトルを移動させる、つまり、dq軸の直交座標で考えると合成ベクトルを時計回りに回転させると、合成ベクトルの回転角度が最大でも180度以下にすることができることになる。
さらに、q相電流目標値iq*の符号がマイナスであることを前提にして、q相電流目標値iq*よりq相電流値iqが大きい場合、つまり、電流制御偏差εqがマイナスの値の場合であってベクトル角度制御偏差εθdqが−180度以上0度未満の場合には、図10に示すように、前回制御時のベクトル角度θvは、q相電流iqを最小にするベクトル角度最終値θdq*のラインL3と、このラインL3に対して180度位相の異なるラインL4との間の領域(c)内に存在していることになるが、今度は、q相電流目標値iq*よりq相電流値iqが大きいので、この場合、前回制御時のベクトル角度θvをq相電流iqを最小にするベクトル角度最終値θdq*のラインL3に近づける必要がある。
したがって、ラインL3に対して図10中下方へ合成ベクトルを移動させる、つまり、dq軸の直交座標で考えると合成ベクトルを時計回りに回転させると、合成ベクトルをベクトル角度最終値θdq*のラインL3にいち早く近づけることができ、より早くq相電流iqをq相電流目標値iq*に追随させることができる。
すなわち、dq軸の直交座標で考えると合成ベクトルを時計回りに回転させると、合成ベクトルの回転角度が最大でも180度以下にすることができ、より早くq相電流iqをq相電流目標値iq*に追随させることができるのである。
また、q相電流目標値iq*の符号がマイナスであることを前提にして、q相電流目標値iq*よりq相電流値iqが大きい場合、つまり、電流制御偏差εqがマイナスの値の場合であってベクトル角度制御偏差εθdqが0度以上180度未満の場合には、図10に示すように、前回制御時のベクトル角度θvは、q相電流iqを最小にするベクトル角度最終値θdq*のラインL3と、このラインL3に対して180度位相の異なるラインL4との間の領域(d)内に存在していることになるが、上記と同様にq相電流目標値iq*よりq相電流値iqが大きいので、この場合、前回制御時のベクトル角度θvをq相電流iqを最大にするベクトル角度最終値θdq*のラインL3に近づける必要がある。
したがって、ラインL3に対して図10中上方へ合成ベクトルを移動させる、つまり、dq軸の直交座標で考えると合成ベクトルを反時計回りに回転させると、合成ベクトルをベクトル角度最終値θdq*のラインL3に近づけてより早くq相電流iqをq相電流目標値iq*に追随させることができる。
つまり、上記判断によって、ベクトル角度θvの回転方向を決定することによって、ベクトル角度θvをベクトル角度最終値θdq*を基準として、遠近させることによって、q相電流をq相電流目標値iq*に追随させることが可能となるのである。
そして、上記判断から合成ベクトルのq軸に対する回転方向が決定されると、回転方向からベクトル角度目標値θdqを設定するのであるが、このベクトル角度目標値θdqは、たとえば、現在のベクトル角度θvに対し回転方向に所定のα度を加算した角度に設定される。したがって、ベクトル角度目標値θdqは、θdq=θv±αで演算されることになる。なお、αの前の符号は合成ベクトルの回転方向によって上記のように決定される。
ベクトル角度θvに加算される角度αは、q相電流偏差εqに制御ゲインを乗じて演算される。この場合、αを演算するための制御ゲインは、q相電流はベクトル角度θvに対してsin関数で増減するので、制御ゲインもこれに準じてsin関数で表せる非線形なものとしておけば、どのような状態においても同じ応答性を確保することが可能となる。
このようにして、ベクトル角度制御部25は、ベクトル角度目標値θdqから、上述のようにd相電圧指令値Vdおよびq相電圧指令値Vqを演算し、これら電圧指令値Vd,Vqは、U,V,Wの各相の電圧指令値Vv,Vu,Vwに変換する三相変換演算部27に入力され、PWM回路30によってモータMが駆動されることになる。
このように、ベクトル角度制御部25によって、dq各相の電圧指令値Vd,Vqの合成ベクトルのベクトル角度θvを制御するので、飽和状態でもモータMのトルクを極限にまで大きくしてトルク指令の要求になるべく近いトルクを出力させることが可能である。
なお、ロータRの電気角速度ωからq相電流目標値iq*を実現可能なベクトル角度を求めて、このベクトル角度を直接にベクトル角度目標値θdqとして制御するようにしてもよいが、上述のように、回転方向を求めて、ベクトル角度目標値θdqを設定することによって、dq各相の電圧指令値Vd,Vqの急激に変動してしまうことを防止でき、トルク変動が大きくなってしまうことを防止できる。また、ベクトル角度目標値θdqをq相電流目標値iq*を実現可能なベクトル角度に定めるとベクトル角度の回転方向は一義的には決められないが、上記判断によってベクトル角度の回転方向を決定するので、ベクトル角度の操作量を小さくすることができる。
上記したように、ベクトル角度目標値θdqを求めることができ、これによって、トルクの制御範囲を拡大することができるが、上記判断よって回転方向を決定する場合、ベクトル角度最終値θdq*を基準として回転方向が反転することになるので、ベクトル角度θvがベクトル角度最終値θdq*付近で振動的になってしまったり、急激に変化してしまったりする場合があるため、これを防止するため、q相電流目標値iq*の絶対値を採りうる最大値に制限する電流制限部22を設けている。
電流制限部22は、モータMがロータRを逆回転させるようにトルクを発生している場合には、q相電流目標値iq*をq相電流が採りうる最大値となるリミット値Ilimに制限し、反対に、モータMがロータRを正回転させるようにトルクを発生している場合には、q相電流目標値iq*をq相電流が採りうる最小値となるリミット値Ilimに制限する。
具体的には、このリミット値Ilimは、モータMがロータRを逆回転させるトルクを発生している場合、dq各相の電圧指令値Vd,Vqの合成ベクトルが飽和電圧Vsに達している状態で、この合成ベクトルをdq座標において原点回りに360度一周させたときのq相電流値iqが取りうる最大値とされ、他方、モータMがロータRを正回転させるトルクを発生している場合、dq各相の電圧指令値Vd,Vqの合成ベクトルが飽和電圧Vsに達している状態で、この合成ベクトルをdq座標において原点回りに360度一周させたときのq相電流値iqが取りうる最小値とされる。
したがって、ロータRを逆回転させるトルクをモータMが発生している場合、q相電流目標値iq*の上限が、d相およびq相の電圧指令値Vd,Vqの合成ベクトルの飽和時において、q相電流値iqが取り得る最大値に制限され、ロータRを正回転させるトルクをモータMが発生している場合、q相電流目標値iq*の下限が、d相およびq相の電圧指令値Vd,Vqの合成ベクトルの飽和時において、q相電流値iqが取り得る最小値に制限されるため、合成ベクトルが飽和しても、q相電流目標値iq*とq相電流iqとの偏差εqの絶対値が大きくなることが無く、上記したベクトル角度制御時に、ベクトル角度θvがベクトル角度最終値θdq*付近ではαも小さい値となり、ベクトル角度θvがベクトル角度最終値θdq*となると偏差εqが0となるので、ベクトル角度θvがベクトル角度最終値θdq*付近で振動的になるような不具合が解消されることになる。
なお、q相電流値iqの絶対値の最大値は、ロータRの電気角速度ωの絶対値が大きくなればなるほど、d相およびq相の相互干渉と誘導起電力の影響により0に近付くように小さくなり、電気角速度ωに依存した値となる。
したがって、上記リミット値Ilimも電気角速度ωに依存して変更する必要があるが、予め、図12に示すように、電気角速度ωをパラメータとして変動するリミット値Ilimをマップ化しておき、電流制限部22で電気角速度ωをモニタし、当該マップを参照してリミット値Ilimを選択するようにしておくとよい。なお、電気角速度ωが0近傍の値をとる場合のリミット値Ilimが電気角速度ωの変化に対して一定値をとるのは、モータ制御装置20の最大通電能力によって制限されるからであり、同方向にトルクを発生する場合の力行時と制動時でリミット値Ilimが異なっているのは、誘導起電力の発生方向等の影響によるものである。
このようにマップ演算を行うことによって、q相電流目標値iq*の制限に必要なリミット値Ilimを簡単に得ることができ、これによって、演算時間の短縮を図って制御応答性を向上することができ、さらには、コスト高となる高性能なCPUを用いなければならない事態も回避することができる。
そして、上記マップは、電気角速度ωがプラスの実用最大値からマイナスの実用最小値まで変化した場合のリミット値Ilimとしてプロットすることにより作成すればよく、実際には、リミット値Ilimは、電気角速度ωの変化に対して連続して変化するが、マップ作成に当たっては、電気角速度ωの任意の値ずつ変化させた時の不連続なリミット値Ilimとして、実際にモニタされた電気角度ωに対応するリミット値Ilimがマップ上に存在しない場合には、線形補間によってリミット値Ilimを演算するようにしておけばよい。
このようにq相電流目標値iq*をリミット値Ilimに制限するが、上記リミット値Ilimをd相およびq相の電圧指令値Vd,Vqの合成ベクトルの飽和時におけるq相電流iqの最大値および最小値とする場合、q相電流値iqの最大値および最小値は、電源Eの電圧に左右されるので、電源Eの電圧変化に応じてリミット値Ilimを補正するようにしてもよい。
なお、d相およびq相の電圧指令値Vd,Vqの合成ベクトルが飽和したときのq相電流iqの最大値および最小値は、ほぼ電源電圧に比例して変化することから、電源Eの電圧変化に対しリミット値Ilimを比例的に補正するようにしてもよく、この場合には、電気角速度ωをパラメータとして作成したリミット値Ilimのマップにおけるリミット値Ilimの値を、予めマップ作成時の電源Eの電圧で割って補正用のマップを作成しておき、このマップを参照して得たリミット値Ilimに実際の電源電圧を乗算することでリミット値Ilimを補正すればよい。
つづき、このモータ制御装置20にあっては、d相およびq相の各電圧指令値Vd,Vqの合成ベクトルが飽和しているか否か、すなわち、dq各相の電圧指令値Vd,Vqの合成ベクトルの長さが閾値より大きいか否かを判断し、上記した比例積分制御とベクトル角度制御のいずれかを選択する選択手段である飽和判断部26を備えている。
この飽和判断部26は、比例積分制御を行う比例積分制御部24が出力するdq各相の電圧指令値Vd,Vqを取り込んで、この電圧指令値Vd,Vqの合成ベクトルの長さが閾値より大きいか否かを判断し、電圧指令値Vd,Vqの合成ベクトルの長さが閾値より大きい場合には、ベクトル角度制御を選択すべくスイッチ26aをベクトル角度制御部25が出力するdq各相の電圧指令値Vd,Vqが三相変換演算部27に入力されるように動作させ、他方、電圧指令値Vd,Vqの合成ベクトルが閾値以下である場合には、スイッチ26aを比例積分制御部24が出力するdq各相の電圧指令値Vd,Vqが三相変換演算部27に入力されるように動作させる。
なお、いずれの制御が選択される場合にも、比例積分制御部24は、dq各相の電流目標値id*,iq*が入力される上記電流ループにおける処理を継続し続け、dq各相の電圧指令値Vd,Vqを飽和判断部26に出力する。
また、飽和判断部26は、電圧指令値Vd,Vqの合成ベクトルが飽和すると、電流目標値id*,iq*にdq各相の電流値id,iqが追随できないにも拘わらず、比例積分制御部24の積分パスの積分値fd,fqの値の絶対値が増大してしまうことになるので、積分パスにおける積分演算を中止させる。
そして、上記したように、電圧指令値Vd,Vqの合成ベクトルが飽和すると、ベクトル角度制御が選択されてベクトル角度制御部25が出力するdq各相の電圧指令値Vd,Vqが有効となるが、その後、比例積分制御部24が出力するdq各相の電圧指令値Vd,Vqの合成ベクトルが飽和しない状態となると、スイッチ26aを切換動作させて比例積分制御部24が出力するdq各相の電圧指令値Vd,Vqを有効とする。
このような切換時には、すなわち、比例積分制御を選択し比例積分制御へ移行するときには、飽和判断部26は、比例積分制御部24へ積分値fd,fqを書き換える積分値書換指令を出力する。他方、比例積分制御部24は、ベクトル角度制御部25が出力するdq各相の電圧指令値Vd,Vqをモニタしており、飽和判断部26からスイッチ26aの切換によって上記積分値書換指令を受け取ると、ベクトル角度制御部25が出力した電圧指令値Vd,Vqを同じ値の電圧指令値Vd,Vqを出力するように、積分パスにおける積分値fd,fqの値を書き換える。この書換に当たっては、比例積分制御部24に入力されるdq各相の電流目標値id*,iq*とdq各相の電流値id,iqの偏差εd,εqを考慮し、ベクトル角度制御部25が出力した電圧指令値Vd,Vqから偏差εd,εqに基づいて演算される比例パスにおける値εd・KP,εq・KPをそれぞれ引いて、各相の積分パスの値を求め、積分ゲインKIから逆算して積分値fd,fqを演算し、積分値fd,fqを書き換える。
つまり、比例積分制御部24は、スイッチ26aの切換直後には、スイッチ26aの切換前にベクトル角度制御部25が出力していたdq各相の電圧指令値Vd,Vqの値と同じ値の電圧指令値Vd,Vqを出力することになる。
すると、このように、飽和判断部26がベクトル角度制御から比例積分制御へ移行した時に、dq各相の電圧指令値Vd,Vqの値が急激に変化してしまうような事態が防止され、モータMの出力トルクにリップルが生じてしまう事態が回避されることになる。
またさらに、ベクトル角度制御においても上述のように、dq各相の電圧指令値Vd,Vqが急激に変化しないように、ベクトル角度目標値θdqを設定しており、スイッチ26aの切換時に、電圧指令値Vd,Vqに急激に変化を生じさせることがないので、スイッチ26aをいずれに切換えても、出力トルクに急激な変化を生じさせることがなく、比例積分制御およびベクトル角度制御のいずれもフェードイン・フェードアウトさせる必要が無く、制御アルゴリズムが複雑となってしまう不具合もない。
また、飽和判断部26の判断において閾値を飽和電圧Vsとしておくと、dq各相の電圧指令値Vd,Vqの合成ベクトルが飽和するまでは、すなわち、通常時(非飽和時)には、比例積分制御部24における比例積分制御が行われることになり、演算負荷の高いベクトル角度制御を飽和時のみに行えばよいことになることから、制御応答性の点で有利となる。
なお、飽和判断部26における判断において、閾値を飽和電圧Vsとする場合、閾値は、U,V,Wの各相巻線12の端子間電圧を電源Eの電圧まで向上させることができうるような制御を実施する場合には1/√2を電源Eの初期設定電圧に乗じた値とすればよく、また、U,V,Wの各相巻線12に正弦波電圧を印加するように制御する場合には、√6/4を電源Eの設定電圧に乗じた値とすればよい。
転じて、上述のように構成されるモータ制御装置20の電流検出器29、回転角センサ15およびPWM回路30以外の各部におけるハードウェア資源としては、具体的にはたとえば、電流検出器32および回転角センサ15が出力する各信号を増幅するためのアンプと、アナログ信号をデジタル信号に変換する変換器と、CPU(Central Processing Unit)と、ROM(Read Only Memory)等の記憶装置と、CPUに記憶領域を提供するRAM(Random Access Memory)と、水晶発振子及びこれらを連絡するバスラインとを備えた図示しない周知のコンピュータシステムとして構成され、また、PWM回路30に電圧指令値Vu,Vv,Vwを出力することができるようになっている。なお、このハードウェアとしてモータ制御装置20の電流検出器32、回転角センサ15およびPWM回路30以外の各部は、モータMが適用される機器に搭載されるコントローラ等に統合されてもよい。
そして、この場合、上記電流目標値演算部21、電流制限部22、二相電流演算部23、比例積分制御部24、ベクトル角度制御部25、飽和判断部26、三相変換演算部27およびリミッタ28における処理手順は、プログラムとしてROMや他の記憶装置に予め格納され、上記これら各部は、CPUが上記プログラムを読み込んで、上記した各演算処理を実行することによって実現される。
ここで、上記したモータ制御装置20における処理手順について、図13に示すフローチャートに基づいて説明する。
まず、ステップS1でモータ制御装置20は、三相の巻線12のうちの任意の二相、たとえば、U相とV相の電流値iu,ivと、モータMの電気角θと、電気角速度ωを読み込む。
つづき、ステップS2に移行して、モータ制御装置20は、各電流目標値id*,iq*を演算する。
さらに、ステップS3では、電流目標値iq*からリミット値Ilimを演算するためのマップを選択し、電気角速度ωに基づいて電流目標値iq*を制限する処理を行う。
つづいて、ステップS4では、モータ制御装置20は、電流値iu,ivと電気角θを用いて、上記各電流値iv,iuをd相およびq相の電流値id,iqへ変換する演算を行って、ステップS5に移行する。
ステップS5では、前回制御時にd相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルの長さが閾値以上であったか、すなわち、d相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトル長さ(Vd2+Vq2)1/2が閾値以上であったかを、選択フラグを参照して判断し、前回制御時にd相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルの長さが閾値以上でない場合、ステップS6へ移行し、前回制御時にd相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルの長さが閾値以上である場合、ステップS10へ移行する。なお、選択フラグは、後述するステップS14、ステップS17によってセットされ、たとえば、選択フラグが0である場合には、前回制御時にd相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルの長さが閾値未満であり、選択フラグが1である場合には、前回制御時にd相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルの長さが閾値以上であったことを示す。
つづき、ステップS6に移行して、モータ制御装置20は、前回制御時に比例積分制御が行われていたか否かを、制御移行フラグを参照して判断し、前回制御時に比例積分制御が行われている場合には、ステップS7へ移行し、そうでない場合にはステップS16に移行する。なお、制御移行フラグは、後述するステップS9、ステップS15によってセットされ、たとえば、制御移行フラグが0である場合には、前回制御時に比例積分制御が行われており、制御移行フラグが1である場合には、前回制御時にベクトル角度制御が行われていたことを示す。
ステップS7では、前回制御時にd相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルが閾値以上となっておらず、前回も通常の比例積分制御が行われていたため、通常制御を行うため、モータ制御装置20は、各電流目標値id*,iq*とd相およびq相の電流値id,iqとの偏差εd,εqを演算するとともに積分値fd,fqを演算して、ステップS8へ移行する。なお、ステップS7においては、通常の比例積分制御を行うため、積分値fd,fqは、それぞれ、fd=fdpre+εd、fq=fqpre+εqを演算することによって算出される。
ステップS8では、Vd=KI・fd+KP・εdを演算してd相の電圧指令値Vdを算出し、Vq=KI・fq+KP・εqを演算してq相の電圧指令値Vqを算出してステップS9へ移行する。
ステップS9では、今回制御では比例積分制御を行うので、制御移行フラグを0にセットして、ステップS17へ移行する。
他方、ステップS10では、モータ制御装置20は、前回制御時にd相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルが閾値以上となっているので、ベクトル角度制御を行うため、前回制御時に出力されたdq各相の電圧指令値Vq,Vdからベクトル角度θvを求める。このベクトル角度θvの算出に当たっては、tan−1(Vd/Vq)を演算して求めればよい。
そして、ステップS11では、q相電流目標値iq*の符合からベクトル角度最終値θdq*を求めるためのマップを選択し、電気角速度ωに基づいてベクトル角度最終値θdq*を求める。
つづき、ステップS12では、q相電流目標値iq*の符号と、ベクトル角度制御偏差εθdqと、q相電流目標値iq*とq相電流値iqの偏差である電流制御偏差εqを求めて、合成ベクトルの回転方向を決定し、さらに、ベクトル角度目標値θdqを、ベクトル角度θvと前述のαと合成ベクトルの回転方向からθdq=θv+αあるいはθdq=θv−αによって求める。
そして、ステップS13に移行して、ベクトル角度目標値θdqからdq各相の電圧指令値Vd,Vqを求める。すなわち、d相の電圧指令値VdをVd=(Vd2+Vq2)1/2・sinθdqで演算し、q相の電圧指令値VqをVq=(Vd2+Vq2)1/2・cosθdqで演算する。
さらに、ステップS14に移行して、比例積分制御における積分パスの積分演算のみを中止してdq各相の電圧指令値Vd,Vqを演算し、積分を中止して演算したdq相の電圧指令値Vd,Vqの合成ベクトルの長さが閾値以上となる場合には、選択フラグを1に、そうでない場合には選択フラグを0にセットする。なお、この判断において、d相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトル長さ(Vd2+Vq2)1/2と閾値とを比較する演算を行うとルート演算が必要であり演算時間が長くなるので、d相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトル長さの自乗の値(Vd2+Vq2)と閾値の自乗の値とを比較するようにしておくとよい。
つづき、ステップS15では、今回制御ではベクトル角度制御を行うので、制御移行フラグを1にセットして、ステップS18へ移行する。
また、ステップS16では、前回制御時にd相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルが閾値以上となってはいないが、前回制御時にベクトル角度制御が行われており、今回制御では通常制御に移行するため、モータ制御装置20は、ベクトル角度制御が行われた前回制御時のdq各相の電圧指令値Vd,Vqと偏差εd,εqとから、dq各相の積分パスにおける積分値fd,fqを書換えて、dq各相の電圧指令値Vd,Vqを演算し、ステップS9へ移行する。
戻って、ステップS17では、上記したステップS8およびステップS16の処理後に移行するステップであり、このステップS17では、モータ制御装置20は、ステップS8あるいはステップS16で演算されたdq相の電圧指令値Vd,Vqの合成ベクトルの長さが閾値以上となる場合には、選択フラグを1に、そうでない場合には選択フラグを0にセットする。
そして、ステップS18では、モータ制御装置20は、上記d相電圧指令値Vdおよびq相電圧指令値Vqを三相の電圧指令値Vu,Vv,Vwに変換する演算を行って、ステップS19に移行する。
そして、ステップS19では、モータ制御装置20は、電圧指令値Vu,Vv,Vwを採り得る値に制限する処理が必要な場合には、この制限処理を行い、必要が無い場合には、制限処理を施さずにステップS20に移行する。
ステップS20では、モータ制御装置20は、電圧指令値Vu,Vv,VwをPWM回路30へ出力して、これらの一連の処理を終了する。
そして、このモータ制御装置20は、以上のステップS1からS20までを繰り返し処理してモータMを制御する。
したがって、制御装置20が上記した一連の処理を実行することで、上述した電流目標値演算部21、電流制限部22、二相電流演算部23、比例積分制御部24、ベクトル角度制御部25、飽和判断部26、三相変換演算部27およびリミッタ28の各部の処理が実現され、これによって、dq各相の電圧指令値Vd,Vqの合成ベクトルのq軸に対する角度を制御することが可能となり、dq各相の電圧指令値Vd,Vqの合成ベクトルが飽和する場合にあっても、モータMが発生するトルクを適切に制御することが可能であるとともに、また、モータMに従来のモータ制御装置に比較してより一層大きなトルクを発生させることが可能である。
また、このモータ制御装置20にあっては、モータMにより一層大きなトルクを発生させることが可能であるので、トルク制御範囲が大きくなるとともに、種々の機器に搭載されるモータを小型化でき、たとえば、より小型のモータを使用してもアクチュエータの必要推力を確保することができる。換言すれば、より小さなモータを使用することができ、アクチュエータのコストを低減することが可能となり、アクチュエータを使用する装置へのアクチュエータの搭載性をも向上させることが可能となる。
つづいて、他の実施の形態におけるモータ制御装置50について説明する。この他の実施の形態におけるモータ制御装置50が一実施の形態におけるモータ制御装置20と異なるのは、dq各相の電圧指令値Vd,Vqの合成ベクトルのベクトル角度を直接制御するのではなく、d相の電圧指令値Vdとq相の電圧指令値Vqを独立に調節して、ベクトル角度を制御する点である。
以下、この異なる点について詳しく説明する。この他の実施の形態におけるモータ制御装置50は、具体的には、図14に示すように、各電流目標値id*,iq*を演算する電流目標値演算部21と、一実施の形態における電流制限部22と同様にq相電流目標値iq*がリミット値を超える場合にこれをリミット値Ilimに制限することに加えて、d相電流目標値id*の下限を−Φ/Ldの値に制限する電流制限部22aと、上記巻線12の三相のうち二相に流れる電流をdq変換してd相電流値idおよびq相電流値iqを演算する二相電流演算部23と、各電流目標値id*,iq*と上記d相およびq相の電流値id,iqに基づいてd相電圧指令値Vdおよびq相電圧指令値Vqを演算する比例積分制御部51と、d相およびq相の各電圧指令値Vd,Vqの合成ベクトルのq軸に対する角度を制御するベクトル角度制御手段たるベクトル角度制御部52と、d相およびq相の各電圧指令値Vd,Vqの合成ベクトルが飽和しているか否かを判断して比例積分制御とベクトル角度制御のいずれかを選択する選択手段である飽和判断部53と、d相電圧指令値Vdおよびq相電圧指令値VqをU,V,Wの三相各相の電圧指令値Vu,Vv,Vwに変換する三相変換演算部27と、三相変換演算部27が出力する上記各電圧指令値Vu,Vv,Vwのうち、PWM開度が全開、すなわち、PWMデューティ比が最大値以上となる場合に、PWMデューティ比を最大および最小とする値に電圧指令値Vu,Vv,Vwを制限するリミッタ28と、モータMのU,V,Wのうち二相iu,ivに流れる電流値を検出する電流検出器29と、電圧指令値Vu,Vv,Vwに応じて所定のPWM開度でU,V,Wの各巻線12を印加するPWM回路30とを備えて構成されている。
比例積分制御部51は、上述の一実施の形態におけるモータ制御装置20の比例積分制御部24と同様に、各電流目標値id*,iq*とd相およびq相の電流値id,iqの各偏差εd,εqを求め、上記各偏差εd,εqをそれぞれ積分した値に積分ゲインKIを乗じるとともに、各偏差εd,εqに比例ゲインKPを乗じることで得られる二つの値を加算して、d相電圧指令値Vdおよびq相電圧指令値Vqを演算する。
具体的には、比例積分制御部51は、各相の偏差εd,εqを演算する加減算部61,62と、各偏差εd,εqに比例ゲインKPを乗じる乗算部63,64と、各偏差εd,εqをそれぞれ積分する積分部65,66と、積分部65,66の演算結果である各積分値fd,fqに積分ゲインKIを乗じる乗算部67,68と、乗算部63が演算した比例ゲインKPを乗算後の偏差εdと乗算部67が演算した積分ゲインKIを乗算後の積分値fdとを加算する加算部69と、乗算部64が演算した比例ゲインKPを乗算後の偏差εqと乗算部68が演算した積分ゲインKIを乗算後の積分値fqとを加算する加算部70とを備えて構成されている。
すなわち、モータ制御装置50の場合、電流ループは、二相電流演算部23、比例積分制御部51および制御対象であるモータMとで作られる電流フィードバックループとなる。
つづき、この他の実施の形態における発明のモータ制御装置50にあっては、ベクトル角度制御部52は、q相電流ループにおける積分値fq、すなわち、上記比例積分制御部51の積分部66において演算される積分値fqを、当該積分値fqをフィードバックして補正して、q相電圧指令値Vqを調節してdq各相の電圧指令値Vd,Vqの合成ベクトルのベクトル角度を制御する。
以下、この他の実施の形態におけるベクトル角度制御について、詳しく説明すると、ベクトル角度制御部52は、積分部66が演算した積分値fqと、q相積分値目標値fq*との偏差である積分値偏差εfqを演算する加減算部71と、上記積分値偏差εfqにゲインGを乗じる乗算部72と、この乗算部72の出力であるG・εfqと上記した比例積分制御部51の加減算部62によって演算される偏差εqとのいずれかを選択的に積分部66への入力とするスイッチ73と、スイッチ73の切換を制御するスイッチコントローラ75と、を備えて構成されている。
ここで、スイッチ73が加減算部62によって演算される偏差εqを積分部66へ入力する場合には、ベクトル角度制御部52によるベクトル角度制御は行われずに通常の比例積分制御が行われ、反対に、スイッチ73が乗算部72の出力であるG・εfqを積分部66へ入力する場合には、比例積分制御からベクトル角度制御部52によるベクトル角度制御に切換り、ベクトル角度制御部52は、積分値fqをフィードバックするループによって積分部66の演算結果である積分値fqを徐々に積分値目標値fq*に誘導してdq各相の電圧指令値Vd,Vqの合成ベクトルのq軸に対する角度を制御する。
そして、図6に示したマップを利用して電気角速度ωから得られるベクトル角度最終値θdq*を求めて、dq各相の電圧指令値Vd,Vqの合成ベクトルの長さ(Vd2+Vq2)1/2とcosθdq*の乗算結果を積分値目標値fq*に設定することで、合成ベクトルのベクトル角度を一実施の形態と同様に制御することが可能となる。
つまり、q相電流目標値iq*は、電流制限部22によって制限されているので、比例積分制御部51における比例パスはq相電流値iqがq相電流目標値iq*に追随することで小さな値を出力するようになって、ベクトル角度制御が行われている積分パスの値がq相電圧指令値Vqを支配するようになるので、最終的には、q相電圧指令値Vqは、積分値目標値fq*に誘導されることになり、q相電圧指令値Vqを狙った値に制御することができる。
なお、実際には、(Vd2+Vq2)1/2・cosθdq*を乗算するには、時間がかかるので、電気角速度ωをパラメータとした(Vd2+Vq2)1/2・cosθdq*のマップを用いて、マップ演算すればよい。しがたって、たとえば、上記の力行状態では、電気角速度ωがマイナスの大きな値である場合、ベクトル角度を−90度に設定することになるので、積分値目標値fq*を0に設定すればよい。
また、ロータRの回転を助勢するトルクをモータMが発生している場合(力行状態)では、電流目標値演算部21が出力するd相電流目標値id*をマイナスの値とする弱め界磁制御を実施する。
上記の力行状態において、ベクトル角度制御を実施する場合、合成ベクトルのベクトル角度θvをマイナスの角度に誘導する必要があるが、d相電流目標値id*を0とする制御を実施すると、実際にはマイナスの値を採るd相電流idの影響により、偏差εdがプラスとなって、d相電圧指令値Vdがプラス方向に誘導され、ベクトル角度を狙い通りに制御できなくなる虞がある。そこで、上述したように、特に、力行状態では、電流目標値演算部21が出力するd相電流目標値id*をマイナスの値とする弱め界磁制御を実施することで、d相電圧指令値Vdをマイナスの値にすることができ、合成ベクトルのベクトル角度θvを狙い通りに制御できるようになる。
なお、弱め界磁制御を実施して、d相電圧指令値Vdをマイナスに誘導する場合において、電流目標値演算部21は、d相電流目標値id*をマイナスの値に設定することになるが、この値がマイナスであって過剰に大きい場合には、q相電流iqの絶対値を最大とすることができない。そこで、q相電流iqを最大にするd相電流idは、モータMの鎖交磁束最大数Φをd相インダクタンスLdで除した値−Φ/Ldであるため、この電流目標値演算部21が出力するd相電流目標値id*を電流制限部22aによって−Φ/Ldに制限するようにしている。したがって、上記の力行状態にあっては、d相電流目標値id*が−Φ/Ldに制限され、これによって、q相電流iqの絶対値が最大値を取れないような事態が防止される。ここで、電流制限部22aは、q相電流目標値iq*に関しては上述の一実施の形態と同様に制限する。
なお、制動状態において、もともと、電流目標値演算部21がd相電流目標値id*を0として制御しているような場合には、dq各相の合成ベクトルが飽和する状態においてd相電流値idがマイナスの値をとるため、d相の偏差εdがプラスの値を持ち、d相電圧指令値Vdがプラスの値となることから、特に、このような制動状態においては、電流目標値演算部21がd相電流目標値id*をマイナスの値に設定する弱め界磁制御を実施しなくともよい。
また、ベクトル角度制御を行う際、実際には、電気角速度ωの絶対値が小さく、すなわち、ロータRの回転速度が小さい場合には、dq各相の電圧指令値Vd,Vqの合成ベクトルが飽和するケースはあまりないことから、積分値目標値fq*を上記のごとく可変とするのではなく0に設定しておくようにしても、実用上は差し支えなく、制御に必要な演算も簡単となり、演算周期も短縮することが可能となる。
ちなみに、積分値目標値fq*を0に設定しておく場合には、d相電圧指令値Vdとq相電圧指令値Vqの合成ベクトルがq軸に対しなす角度が90度および−90度になるように誘導することができ、モータ制御装置20の処理手順を実現するプログラム上にq相の積分値目標値fq*を演算する記述をする必要が無くなりプログラムが簡素化することが可能となる。
なお、上記したところでは、積分値fqをフィードバックしているが、積分ゲインKI乗算後の値fq・KIをフィードバックするループによって、最終的に積分パスが出力する値、すなわち、乗算部68が出力する値fq・KIを積分値目標値fq*に積分ゲインKIを乗じた値に誘導するようにしてもよいことは勿論であり、積分値をフィードバックすることにはq相積分パスにおける乗算部68が出力する値をフィードバックすることも含まれる。
また、このように、このモータ制御装置50にあっては、ベクトル角度制御部52は、積分値fqをフィードバックして当該積分値fqを補正するので、積分値fqは、一次遅れ系のフィードバックループの時定数に依存して徐々に積分値目標値fq*に変化することになるとともに、比例パスに対しては補正処理を行わずに積分値fqのみを補正するので、スイッチ73の切換時に、電流ループにおける積分部66のフィルタ特性を利用して、q相電圧指令値Vqに急激に変化を生じさせることもなく、モータMの発生トルクに急激な変化を生じさせることがなく、アクチュエータのストローク速度に急激な変化を生じさせることがない。
さらに、スイッチ73の切換時に、q相電圧指令値Vqに急激に変化を生じさせることがないので、積分値fqの補正に当たり、補正制御をフェードイン・フェードアウトさせる必要が無く、制御アルゴリズムが複雑となってしまう不具合もない。
換言すれば、直接的に、q相の電圧指令値Vqを補正したり、比例パスの値をも補正したりすることも可能ではあるが、すると、その制御に当たってフェードイン・フェードアウトさせなくてはq相電圧指令値Vqの変化が急激となることから、制御が煩雑となるが、本実施の形態のモータ制御装置50にあっては、このような不具合がないのである。
つづき、スイッチ73の切換について説明する。上記スイッチ73の切換、すなわち、比例積分制御とベクトル角度制御の切換は、本実施の形態においては、dq各相の電圧指令値Vd,Vqの合成ベクトルが飽和することを条件としている。
すなわち、dq各相の電圧指令値Vd,Vqの合成ベクトルが飽和するまでは、比例積分制御を行えば足りるので、dq各相の電圧指令値Vd,Vqの合成ベクトルが飽和状態であってもモータMに大きなトルクを発生させるべくベクトル角度制御を行えばよいことから、dq各相の電圧指令値Vd,Vqの合成ベクトルが飽和することを条件として比例積分制御からベクトル角度制御へ切換る。
上記したところから、通常の比例積分制御が可能である時、スイッチ73を加減算部62によって演算される偏差εqが積分部66へ入力するようにしておき、d相およびq相の電圧指令値Vd,Vqの合成ベクトルが飽和することの条件を満たす場合に、上記スイッチ73を乗算部72の出力であるG・εfqが積分部66へ入力されるように切換えてやればよいことになる。
このため、本実施の形態におけるモータ制御装置50は、dq各相の各電圧指令値Vd,Vqの合成ベクトルが飽和しているか否かを判断する飽和判断部53を備え、飽和判断部53の判断の結果、上記条件を満たす場合に、スイッチコントローラ75がベクトル角度制御を選択して比例積分制御からベクトル角度制御へと切換えるように、スイッチ73を切換えるようにしている。
詳しく説明すると、飽和判断部53は、d相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトル長さの自乗の値(Vd2+Vq2)と上述の閾値の自乗の値とを比較して、d相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトル長さが閾値を超えているかを判断する。なお、この場合、上述のように、閾値を飽和電圧Vsとしておくことによって、上記判断により、d相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルが飽和している状態であるかを判断することができる。
このように、d相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトル長さの自乗の値、すなわち、d相電圧指令値Vdの二乗の値とq相電圧指令値Vqの二乗の値とを足し合わせた加算値(Vd2+Vq2)と閾値の自乗とを比較して、d相電圧指令値Vdとq相電圧指令値Vqの合成ベクトル長さ(Vd2+Vq2)1/2が閾値を超えているかを判断するようにしているので、この判断に必要な演算にルート演算を行わずに済み、演算時間の短縮に寄与することができる。
なお、飽和の判断は、上記したところに代えて、q相電流目標値iq*がリミット値Ilimを超える場合には、q相電流目標値iq*はq相電流iqが採りえない値となっていることから、d相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルが飽和することになるので、このように、q相電流目標値iq*がリミット値Ilimを超えることをもってして飽和判断部53が合成ベクトルが飽和状態であることを判断してもよい。
そして、飽和判断部53は、d相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルが飽和している場合、0をスイッチコントローラ75に出力し、飽和していない場合には、1をスイッチコントローラ75に出力するようにする。
他方、スイッチコントローラ75は、図15に示すように、飽和判断部53が出力する値を否定する否定演算部76を備え、また、スイッチコントローラ75は、飽和判断部53が出力した値をそのままq相電流目標値iq*とq相電流iqとの偏差εqを演算する加減算部62とスイッチ73との間に設けた乗算部77およびd相の積分ループ中の積分部65の手前に設けた乗算部80へ出力するとともに、否定演算部76が出力する値を積分値fqの補正用のフィードバックループの途中であってスイッチ73と乗算部72との間に設けた乗算部78へ出力し、さらには、飽和判断部53が出力する値をそのままスイッチ73へ出力するようになっている。
また、スイッチ73は、この場合、スイッチコントローラ75から1未満の値を受け取ると、ベクトル角度制御を有効とするべく、乗算部72の出力であるG・εfqが積分部39へ入力されるように切換り、スイッチコントローラ75から1以上の値を受け取ると、加減算部62によって演算される偏差εqが積分部66へ入力されるように切換るようになっている。
ここで、飽和判断部53がd相電圧指令値Vdとq相電圧指令値Vqの合成ベクトルが飽和していると判断して0を出力すると、スイッチコントローラ75は、スイッチ73に対しては0を、乗算部77,80に対しては0を、乗算部78に対しては1をそれぞれ出力する。
すると、スイッチ73は、ベクトル角度制御を選択するべく、乗算部72の出力であるG・εfqが積分部66へ入力されるように切換り、乗算部72の出力であるG・εfqとスイッチコントローラ75が出力する1とが乗算部78へ入力されるので、積分部66へは、G・εfqがそのまま入力されるようになる。また、乗算部80へはスイッチコントローラ75が出力する0と偏差εdが入力されるので、積分部65へは0が入力されるようになる。
つまり、この場合には、ベクトル角度制御が行われるので、積分値fqを補正する制御が実施されるとともに、乗算部80には0が出力されることから、d相電流ループにおける積分演算は中止されることになる。なお、電流目標値演算部21は、飽和判断部53がd相電圧指令値Vdとq相電圧指令値Vqの合成ベクトルが飽和しているか否かに関わらず、d相電流目標値id*をマイナスの値にする弱め界磁制御を実施するようになっている。
対し、飽和判断部53がd相電圧指令値Vdとq相電圧指令値Vqの合成ベクトルが飽和していないと判断して1を出力すると、スイッチコントローラ75は、スイッチ73に対しては1を、乗算部77,80に対しては1を、乗算部78に対しては0をそれぞれ出力する。
すると、スイッチ73は、比例積分制御を選択するべく、加減算部62によって演算される偏差εqが積分部66へ入力されるように切換り、乗算部77へはスイッチコントローラ75が出力する1と偏差εqが入力されるので、積分部66へは、偏差εqがそのまま入力されるようになる。さらに、乗算部80へはスイッチコントローラ75が出力する1と偏差εdが入力されるので、積分部65へは偏差εdがそのまま入力されるようになる。
つまり、この場合には、積分値fqを補正してベクトル角度制御を行う必要が無いので、通常の比例積分制御が行われることになる。
また、ベクトル角度制御では、d相電流ループにおける積分演算が中止され、さらに、q相積分値fqは、小さい値の積分値目標値fq*に誘導されることになるので、dq各相の積分値fd,fqの絶対値が大きな値を持つようなことがなく、比例積分制御を再開するときに、制御応答性が悪化してしまうことが無い。さらに、本実施の形態におけるベクトル角度制御では、d相電流ループにおける積分演算が中止するとともにq相の積分値fqを補正するようにしているので、比例積分制御に切換るときにベクトル角度制御をフェードアウトさせたり、dq各相の積分値fd,fqの書換えを行わずとも、dq各相の電圧指令値Vd,Vqに大きな段差が生じることがなく、モータMの発生トルクに大きな変動が生じてしまう事態が防止される。
かくして、飽和判断部53は、上記のように、モータ制御装置50が通常の比例積分制御をするべきか、ベクトル角度制御をするべきかを判断し、比例積分制御とベクトル角度制御のうち、いずれかの制御を選択するので、モータMを適切に制御することが可能となる。
さらに、スイッチコントローラ75を上記のごとく構成することで、高度な演算処理を要せずして、飽和判断部53が出力する値を論理演算のみによってスイッチ73を制御して、比例積分制御とベクトル角度制御のいずれかを選択することが可能となる。
そして、この他の実施の形態におけるモータ制御装置50も、上記した一実施の形態におけるモータ制御装置20と同様に、dq各相の電圧指令値Vd,Vqの合成ベクトルのq軸に対する角度を制御することが可能となり、dq各相の電圧指令値Vd,Vqの合成ベクトルが飽和する場合にあっても、モータMが発生するトルクを適切に制御することが可能であるとともに、また、モータMに従来のモータ制御装置に比較してより一層大きなトルクを発生させることが可能である。
また、このモータ制御装置50にあっても、モータMにより一層大きなトルクを発生させることが可能であるので、トルク制御範囲が大きくなるとともに、より小型のモータを使用してもアクチュエータの必要推力を確保することができる。換言すれば、より小さなモータを使用することができ、アクチュエータのコストを低減することが可能となり、アクチュエータを使用する装置へのアクチュエータの搭載性をも向上させることが可能となる。
さらに、この他の実施の形態のモータ制御装置においては、ベクトル角度制御では、演算に時間を要するベクトル角度計算を用いずにd相およびq相の電圧指令値Vd,Vqを独立して調節することによってdq各相の電圧指令値Vd,Vqの合成ベクトルのベクトル角度を制御することが可能であるから、演算周期が短縮されるとともに、演算負担も軽減され、モータ制御装置50の実用性が向上することになる。
つづいて、上述のように構成されるモータ制御装置50の電流検出器29、回転角センサ15およびPWM回路30以外の各部におけるハードウェア資源は、上述のモータ制御装置20と同様であり、電流目標値演算部21、電流制限部22、二相電流演算部23、比例積分制御部51、ベクトル角度制御部52、飽和判断部53、三相変換演算部27、リミッタ28、スイッチ73およびスイッチコントローラ75における処理手順は、プログラムとしてROMや他の記憶装置に予め格納され、上記これら各部は、CPUが上記プログラムを読み込んで、上記した各演算処理を実行することによって実現される。
ここで、上記したモータ制御装置50における処理手順について、図16に示すフローチャートに基づいて説明する。
まず、ステップS31でモータ制御装置50は、三相の巻線12のうちの任意の二相、たとえば、U相とV相の電流値iu,ivと、モータMの電気角θと電気角速度ωを読み込む。
つづき、ステップS32に移行して、モータ制御装置50は、各電流目標値id*,iq*を演算する。なお、必要がある場合、電気角速度ωに基づいて電流目標値iq*を制限する処理を行う。また、d相電流目標値id*については、弱め界磁制御が適用されて演算される。
さらに、ステップS33では、モータ制御装置50は、電流値iu,ivと電気角θを用いて、上記各電流値iv,iuをd相およびq相の電流値id,iqへ変換する演算を行って、ステップS34に移行する。
ステップS34では、前回制御時にd相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルの長さが閾値以上であったか、すなわち、d相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトル長さ(Vd2+Vq2)1/2が閾値以上であったかを、選択フラグを参照して判断する。なお、この閾値は上述の一実施の形態と同様のものである。そして、選択フラグが1の場合、d相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルの長さが閾値以上であり、選択フラグが0である時は、d相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルの長さが閾値未満と判断する。そして、前回制御時にd相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルの長さが閾値以上でない場合、ステップS35へ移行し、前回制御時にd相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルの長さが閾値以上である場合、ステップS37へ移行する。
つづき、ステップS35に移行して、前回制御時にd相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルが閾値以上となっておらず、今回も通常の比例積分制御を行うため、モータ制御装置50は、各電流目標値id*,iq*とd相およびq相の電流値id,iqとの偏差εd,εqを演算するとともに積分値fd,fqを演算して、ステップS36へ移行する。なお、ステップS35においては、通常の比例積分制御を行うため、積分値fd,fqは、それぞれ、fd=fdpre+εd、fq=fqpre+εqを演算することによって算出される。ここで、上述したように、fdpre,fqpreは、それぞれ、前回制御時に演算されたd相およびq相の積分値である。
ステップS36では、Vd=KI・fd+KP・εdを演算してd相の電圧指令値Vdを算出し、Vq=KI・fq+KP・εqを演算してq相の電圧指令値Vqを算出してステップS40へ移行する。
他方、ステップS37では、モータ制御装置50は、前回制御時にd相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルが閾値以上となっているので、今回制御においてはベクトル角度制御を行うため、積分値目標値fq*を演算する。
そして、ステップS38へ移行して、q相積分ループの積分値fqを補正する処理を行い、さらに、d相積分ループにおける積分演算が中止される。具体的には、今回制御時の積分値fqをfq=fqpre+G・εfqの演算を行うことによって求め、d相の積分値fdをfd=fdpreの演算によって求める。
そして、ステップS39に移行して、dq相の電圧指令値Vd,Vqを算出し、ステップS40へ移行する。具体的には、Vd=KI・fd+KP・εdを演算してd相の電圧指令値Vdを算出し、Vq=KI・fq+KP・εqを演算してq相の電圧指令値Vqを算出する。
ステップS40では、dq相の電圧指令値Vd,Vqの合成ベクトルの長さが閾値以上となる場合には、選択フラグを1に、そうでない場合には選択フラグを0にセットする。なお、閾値を飽和電圧Vsとする場合には、q相電流目標値iq*がリミット値Ilimを超えるか否かをもってして、d相電圧指令値Vdおよびq相電圧指令値Vqの合成ベクトルが飽和しているか否かを判断することが可能であり、選択フラグをセットする当該ステップS40を、上記ステップS32とステップS33との間に設け、前回制御時におけるdq各相の電圧指令値Vd,Vqの合成ベクトルが飽和しているか否かで比例積分制御とベクトル角度制御のいずれかを選択するのではなく、今回の制御のルーチンで比例積分制御とベクトル角度制御のいずれかを選択するようにしてもよい。
そして、ステップS41では、モータ制御装置50は、上記d相電圧指令値Vdおよびq相電圧指令値Vqを三相の電圧指令値Vu,Vv,Vwに変換する演算を行って、ステップS43に移行する。
そして、ステップS42では、モータ制御装置50は、電圧指令値Vu,Vv,Vwを採り得る値に制限する処理が必要な場合には、この制限処理を行い、必要が無い場合には、制限処理を施さずにステップS43に移行する。
ステップS43では、モータ制御装置50は、電圧指令値Vu,Vv,VwをPWM回路30へ出力して、これらの一連の処理を終了する。
そして、このモータ制御装置50は、以上のステップS31からS43までを繰り返し処理してモータMを制御する。
したがって、モータ制御装置50が上記した一連の処理を実行することで、上述した電流目標値演算部21、電流制限部22、二相電流演算部23、比例積分制御部51、ベクトル角度制御部52、飽和判断部53、三相変換演算部27、リミッタ28、スイッチ73およびスイッチコントローラ75の各部の処理が実現され、これによって、dq各相の電圧指令値Vd,Vqの合成ベクトルのq軸に対する角度を制御することが可能となり、dq各相の電圧指令値Vd,Vqの合成ベクトルが飽和する場合にあっても、モータMが発生するトルクを適切に制御することが可能であるとともに、また、モータMに従来のモータ制御装置に比較してより一層大きなトルクを発生させることが可能である。
また、この他の実施の形態におけるモータ制御装置50のベクトル角度制御にあっては、比例積分制御部51のdq各相の電流ループにおける入力数値を変更するようにしているので、通常の比例積分制御とベクトル角度制御との切換え時には、dq各相の電圧指令値Vd,Vqが特別な処理を施すことなく急激に変化することがなく、制御が煩雑となるような不具合もない。
以上で、本発明の実施の形態についての説明を終えるが、本発明の範囲は図示されまたは説明された詳細そのものには限定されないことは勿論である。