図1は、本発明の一実施例としてのハイブリッド自動車20の構成の概略を示す構成図であり、図2は、モータMG1,MG2を含む電気駆動系の構成の概略を示す構成図である。実施例のハイブリッド自動車20は、図示するように、エンジン22と、プラネタリギヤ30と、モータMG1と、モータMG2と、インバータ41,42と、バッテリ50と、昇圧回路55と、システムメインリレー56と、外部給電装置95と、充電器98と、ハイブリッド用電子制御ユニット(以下、HVECUという)70と、電源用電子制御ユニット(以下、電源ECUという)90とを備える。
エンジン22は、ガソリンや軽油などを燃料として動力を出力する内燃機関として構成されており、エンジン用電子制御ユニット(以下、「エンジンECU」という)24により運転制御される。
エンジンECU24は、図示しないが、CPUを中心とするマイクロプロセッサとして構成されており、CPUの他に、処理プログラムを記憶するROMやデータを一時的に記憶するRAM,入出力ポート,通信ポートを備える。
エンジンECU24には、エンジン22を運転制御するのに必要な各種センサからの信号が入力ポートを介して入力されている。各種センサからの信号としては以下のものを挙げることができる。
・クランクシャフト26の回転位置を検出するクランクポジションセンサからのクランク角θcr
エンジンECU24からは、エンジン22を運転制御するための種々の制御信号が出力ポートを介して出力されている。種々の制御信号としては以下のものを挙げることができる。
・空気が吸入される吸気管に燃料を噴射する燃料噴射弁への駆動信号
・スロットルバルブのポジションを調節するスロットルモータへの駆動信号
・イグナイタと一体化されたイグニッションコイルなどへの駆動信号
エンジンECU24は、HVECU70と通信ポートを介して接続されている。このエンジンECU24は、HVECU70からの制御信号によりエンジン22を運転制御する。また、エンジンECU24は、必要に応じてエンジン22の運転状態に関するデータをHVECU70に出力する。なお、エンジンECU24は、クランク角θcrに基づいて、クランクシャフト26の回転数、即ち、エンジン22の回転数Neを演算している。
プラネタリギヤ30は、サンギヤ31とリングギヤ32とピニオンギヤ33とキャリア34とを有するシングルピニオン式の遊星歯車機構として構成されている。プラネタリギヤ30のサンギヤ31には、モータMG1の回転子が接続されている。プラネタリギヤ30のリングギヤ32には、駆動輪39a,39bにデファレンシャルギヤ38およびギヤ機構37を介して連結された駆動軸36が接続されている。プラネタリギヤ30のキャリア34には、ダンパ28を介してエンジン22のクランクシャフト26が接続されている。
モータMG1は、永久磁石が埋め込まれた回転子と、三相コイルが巻回された固定子と、を有する同期発電電動機として構成されている。このモータMG1は、上述したように、回転子がプラネタリギヤ30のサンギヤ31に接続されている。モータMG2は、モータMG1と同様の同期発電電動機として構成されている。このモータMG2は、回転子が減速ギヤ35を介して駆動軸36に接続されている。
インバータ41は、高電圧系電力ライン54に接続されている。このインバータ41は、6つのトランジスタT11〜T16と、6つのダイオードD11〜D16と、を備える。トランジスタT11〜T16は、それぞれ、高電圧系電力ライン54の正極母線と負極母線とに対して、ソース側とシンク側になるように、2個ずつペアで配置されている。6つのダイオードD11〜D16は、それぞれ、トランジスタT11〜T16に逆方向に並列接続されている。トランジスタT11〜T16の対となるトランジスタ同士の接続点の各々には、モータMG1の三相コイル(U相,V相,W相)の各々が接続されている。したがって、インバータ41に電圧が作用しているときに、モータ用電子制御ユニット(以下、モータECUという)40によって、対となるトランジスタT11〜T16のオン時間の割合が調節されることにより、三相コイルに回転磁界が形成され、モータMG1が回転駆動される。なお、高電圧系電力ライン54の正極母線と負極母線とには、平滑用のコンデンサ57が接続されている。
インバータ42は、インバータ41と同様に、6つのトランジスタT21〜T26と、6つのダイオードD21〜D26と、を備える。そして、インバータ42に電圧が作用しているときに、モータECU40によって、対となるトランジスタT21〜T26のオン時間の割合が調節されることにより、三相コイルに回転磁界が形成され、モータMG2が回転駆動される。
昇圧回路55は、インバータ41,42が接続された高電圧系電力ライン54と、システムメインリレー56を介してバッテリ50が接続された低電圧系電力ライン59と、に接続されている。この昇圧回路55は、2つのトランジスタT31,T32と、2つのダイオードD31,D32と、リアクトルL1と、を備える。トランジスタT31は、高電圧系電力ライン54の正極母線に接続されている。トランジスタT32は、トランジスタT31と、高電圧系電力ライン54および低電圧系電力ライン59の負極母線と、に接続されている。2つのダイオードD31,D32は、それぞれ、トランジスタT31,T32に逆方向に並列接続されている。リアクトルL1は、トランジスタT31,T32同士の接続点Cn1と、低電圧系電力ライン59の正極母線と、に接続されている。昇圧回路55は、モータECU40によって、トランジスタT31,T32のオン時間の割合が調節されることにより、低電圧系電力ライン59の電力を昇圧して高電圧系電力ライン54に供給したり、高電圧系電力ライン54の電力を降圧して低電圧系電力ライン59に供給したりする。なお、低電圧系電力ライン59の正極母線と負極母線とには、平滑用のコンデンサ58が接続されている。
モータECU40は、CPU40aを中心とするマイクロプロセッサとして構成されており、CPU40aの他に、処理プログラムを記憶するROM40bやデータを一時的に記憶するRAM40c,入出力ポート,通信ポートを備える。
モータECU40には、モータMG1,MG2(インバータ41,42)や昇圧回路55を駆動制御するのに必要な各種センサからの信号が入力ポートを介して入力されている。各種センサからの信号としては、以下のものを挙げることができる。
・モータMG1,MG2の回転子の回転位置を検出する回転位置検出センサ43,44からの回転角θm1,θm2
・モータMG1,MG2の各相(V相,W相)に流れる電流を検出する電流センサ45V,45W,46V,46Wからの相電流
・コンデンサ57の端子間に取り付けられた電圧センサ57aからの高電圧系電力ライン54の電圧VH
・コンデンサ58の端子間に取り付けられた電圧センサ58aからの低電圧系電力ライン59の電圧VL
モータECU40からは、モータMG1,MG2(インバータ41,42)や昇圧回路55を駆動制御するための種々の制御信号が出力ポートを介して出力されている。種々の制御信号としては、以下のものを挙げることができる。
・インバータ41,42のトランジスタT11〜T16,T21〜T26へのスイッチング制御信号
・昇圧回路55のトランジスタT31,T32へのスイッチング制御信号
モータECU40は、HVECU70と通信ポートを介して接続されている。このモータECU40は、HVECU70からの制御信号によってモータMG1,MG2(インバータ41,42)や昇圧回路55を駆動制御する。また、モータECU40は、必要に応じてモータMG1,MG2や昇圧回路55の駆動状態に関するデータをHVECU70に出力する。なお、モータECU40は、モータMG1,MG2の回転子の回転角θm1,θm2に基づいて、モータMG1,MG2の回転数Nm1,Nm2を演算している。
バッテリ50は、例えばリチウムイオン二次電池として構成されており、上述したように、システムメインリレー56を介して低電圧系電力ライン59に接続されている。バッテリ50は、バッテリ用電子制御ユニット(以下、バッテリECUという)52によって管理される。
バッテリECU52は、図示しないが、CPUを中心とするマイクロプロセッサとして構成されており、CPUの他に、処理プログラムを記憶するROMやデータを一時的に記憶するRAM,入出力ポート,通信ポートを備える。
バッテリECU52には、バッテリ50を管理するのに必要な各種センサからの信号が入力ポートを介して入力されている。各種センサからの信号としては、以下のものを挙げることができる。
・バッテリ50の端子間に設置された電圧センサ51aからの電池電圧Vb
・バッテリ50の出力端子に取り付けられた電流センサ51bからの電池電流Ib
・バッテリ50に取り付けられた温度センサ51cからの電池温度Tb
バッテリECU52は、HVECU70と通信ポートを介して接続されている。このバッテリECU52は、必要に応じてバッテリ50の状態に関するデータをHVECU70に出力する。バッテリECU52は、バッテリ50を管理するために、電池電流Ibの積算値に基づいて、蓄電割合SOCを演算している。蓄電割合SOCは、そのときのバッテリ50から放電可能な電力の容量の、全容量に対する割合である。また、バッテリECU52は、蓄電割合SOCや電池温度Tbに基づいてバッテリ50から放電可能な電力の許容最大値としての出力制限Woutや、バッテリ50を充電可能な許容最大値(絶対値)としての入力制限Winを設定している。バッテリ50の出力制限Woutや入力制限Winは、電池温度Tbが低いとき(例えば0℃以下や−5℃以下,−10℃以下など)には、その絶対値が通常温度の場合に比して大幅に小さくなるように設定される。
外部給電装置95は、低電圧系電力ライン59と、車両の構成要素でない外部機器の接続用のコンセント97と、に接続されている。この外部給電装置95は、図示しないが、低電圧系電力ライン59の直流電力を所定電圧の交流電力(例えば、AC100Vの電力)に変換して、コンセント97に接続された外部機器に供給するためのインバータを有する。以下、低電圧系電力ライン59の電力を外部機器に供給することを「外部給電」という。なお、外部給電装置95は、HVECU70により、インバータの図示しない複数のスイッチング素子がスイッチング制御されることによって駆動される。
充電器98は、車両側コネクタ99を外部電源100の外部電源側コネクタ102に接続することにより、外部電源100からの電力を用いてバッテリ50を充電する。充電器98は、図示しないが低電圧系電力ライン59と車両側コネクタ99との接続や接続の解除を行なう充電用リレーや、外部電源100からの交流電力を直流電力に変換するAC/DCコンバータ,AC/DCコンバータにより変換した直流電力の電圧を変換して低電圧系電力ライン59側に供給するDC/DCコンバータなどを備える。
電源ECU90は、図示しないが、CPUを中心とするマイクロプロセッサとして構成されており、CPUの他に、処理プログラムを記憶するROMやデータを一時的に記憶するRAM,入出力ポート,通信ポートを備える。
電源ECU90には、運転席前面のパネルに取り付けられたパワースイッチ92からのプッシュ信号やブレーキスイッチ94からのスイッチ信号などが入力ポートを介して入力されている。電源ECU90からは、パワースイッチ92に内蔵されたインジケータ93への点灯信号などが出力ポートを介して出力されている。
電源ECU90は、システムが停止状態にあるときに、ブレーキオンの状態でパワースイッチ92からプッシュ信号を入力したときには、システムメインリレー56をオンとすると共に初期化処理を実行することにより、システムを起動状態、即ち、レディオン(READYON)とする。また、電源ECU90は、システムが起動状態にあるときに、車両が停車している状態でパワースイッチ92からプッシュ信号を入力したときには、システムメインリレー56をオフとすることにより、システムを停止状態、即ち、レディオフ(READYOFF)とする。また、電源ECU90は、HVECU70と通信ポートを介して通信しており、必要に応じてデータや制御信号のやり取りを行なう。
HVECU70は、図示しないが、CPU72を中心とするマイクロプロセッサとして構成されており、CPU72の他に、処理プログラムを記憶するROM74やデータを一時的に記憶するRAM76,入出力ポート,通信ポートを備える。
HVECU70には、各種センサからの信号が入力ポートを介して入力されている。各種センサからの信号としては、以下のものを挙げることができる。
・シフトレバー81の操作位置を検出するシフトポジションセンサ82からのシフトポジションSP
・アクセルペダル83の踏み込み量を検出するアクセルペダルポジションセンサ84からのアクセル開度Acc
・ブレーキペダル85の踏み込み量を検出するブレーキペダルポジションセンサ86からのブレーキペダルポジションBP
・車速センサ88からの車速V
・外部給電装置95による外部給電の給電電力を検出する電力センサ96からの給電電力Ph
HVECU70からは、種々の制御信号が出力ポートを介して出力されている。種々の制御信号としては、以下のものを挙げることができる。
・システムメインリレー56への駆動信号
・外部給電装置95のインバータへの制御信号
・充電器98の充電用リレーやAC/DCコンバータ,DC/DCコンバータへの制御信号
HVECU70は、上述したように、エンジンECU24やモータECU40,バッテリECU52,電源ECU90と通信ポートを介して接続されている。このHVECU70は、エンジンECU24やモータECU40,バッテリECU52,電源ECU90と各種制御信号やデータのやりとりを行なっている。
こうして構成された実施例のハイブリッド自動車20は、運転者によるアクセルペダル83の踏み込み量に対応するアクセル開度Accと車速Vとに基づいて駆動軸36に出力すべき要求トルクTr*を計算し、この要求トルクTr*に対応する要求動力が駆動軸36に出力されるように、エンジン22とモータMG1とモータMG2とが運転制御される。エンジン22とモータMG1とモータMG2の運転制御としては以下の(1)〜(3)のものがある。(1)のトルク変換運転モードと(2)の充放電運転モードは、いずれもエンジン22の運転を伴って走行するモードであり、実質的な制御における差異はないため、以下、両者を合わせてエンジン運転モード(ハイブリッドモード)という。
(1)トルク変換運転モード:要求動力に見合う動力がエンジン22から出力されるようにエンジン22を運転制御すると共にエンジン22から出力される動力のすべてがプラネタリギヤ30とモータMG1とモータMG2とによってトルク変換されて駆動軸36に出力されるようモータMG1およびモータMG2を駆動制御する運転モード
(2)充放電運転モード:要求動力とバッテリ50の充放電に必要な電力との和に見合う動力がエンジン22から出力されるようにエンジン22を運転制御すると共にバッテリ50の充放電を伴ってエンジン22から出力される動力の全部またはその一部がプラネタリギヤ30とモータMG1とモータMG2とによりトルク変換されて要求動力が駆動軸36に出力されるようモータMG1およびモータMG2を駆動制御する運転モード
(3)モータ運転モード:エンジン22の運転を停止してモータMG2からのトルクにより要求動力に見合う動力を駆動軸36に出力するよう駆動制御する運転モード
また、実施例のハイブリッド自動車20では、停車時には、基本的には、エンジン22の運転を停止する。そして、図示しない補機(空気調和装置など)による電力消費や外部給電装置95による外部給電などによって、バッテリ50の蓄電割合SOCが予め定められた閾値S1未満となると、モータMG1によりエンジン22をクランキングして始動する。そして、エンジン22からの動力を用いたモータMG1の発電によって、バッテリ50が充電されるようエンジン22とモータMG1とを制御する。
モータMG1の駆動制御は、モータECU40に含まれる図3の制御ブロックによって行なわれる。図3に示すように、モータMG1の駆動制御は、まず、トルク指令Tm1*に基づいて電流指令生成器61によりdq軸座標系におけるd軸,q軸の電流指令Id*,Iq*を生成する。電流指令生成器61は、トルク指令に対応する電流指令の関係を予め定めた電流指令テーブルを用いてd軸,q軸の電流指令Id*,Iq*を生成する。次に、モータMG1のU相,V相,W相にそれぞれ流れる電流の総和が値0であるとして、モータMG1の制御用回転角θを用いて座標変換器66により電流センサ45V,45WからのV相電流Iv,W相電流Iwをd軸電流Id,q軸電流Iqに変換する(三相二相変換)。モータMG1の制御用回転角θは、回転位置センサ43により検出される回転角θm1と後述するオフセット学習制御部67により出力されるオフセット量Δθとの和として加算器68により演算されたものが用いられる。続いて、設定したd軸電流指令Id*,q軸電流指令Iq*と電流フィードバックのためのd軸電流Id,q軸電流Iqとの差分ΔId,ΔIqを減算器62d,62qにより演算する。そして、演算した差分ΔId,ΔIqに基づいて電圧指令変換器63d,63qによりd軸電圧指令Vd*,q軸電圧指令Vq*を生成する。ここで、d軸電圧指令Vd*,q軸電圧指令Vq*は、差分ΔId,ΔIqに基づくフィードバック項と、各軸相互に干渉する項をキャンセルするためのフィードフォワード項(後述する式(1)、(2)の右辺第2項)との和として演算される。d軸電圧指令Vd*,q軸電圧指令Vq*を生成すると、上述したモータMG1の制御用回転角θを用いて座標変換器64によりd軸電圧指令Vd*,q軸電圧指令Vq*を相電圧指令Vu*,Vv*,Vw*に変換する(二相三相変換)。そして、相電圧指令Vu*,Vv*,Vw*に基づいてPWM変換器65によりパルス幅変調信号を生成し、生成したパルス幅変調制御信号に基づいてインバータ41のトランジスタをスイッチングすることによって直流電力を三相交流電力としてモータMG1に印加する。なお、モータMG2についても図3と同様の制御ブロックを用いて駆動制御することができる。
いま、座標変換(三相二相変換,二相三相変換)で用いるモータMG1の制御用回転角θとして、回転位置センサ43により検出される回転角θm1をそのまま用いる場合を考える。永久磁石によって発生する磁束の方向をd軸とし、d軸と直交する軸をq軸とすると、モータMG1の電圧方程式を、次式(1),(2)により示すことができる。
Vd=R・Id-ω・φq …(1)
Vq=R・Iq+ω・φd …(2)
ただし、
Vd,Vq:d軸電圧,q軸電圧
R:一相あたりの抵抗
Id,Iq:d軸電流,q軸電流
ω:回転子の角速度
φd,φq:d軸磁束,q軸磁束
回転位置センサ43により検出されるモータMG1の回転角θm1と実際の回転角との間に位相差Δθ(オフセット誤差)がない場合、永久磁石が発生させる磁束φの方向とd軸とが一致する(図4(a)参照)。このため、d軸磁束φdおよびq軸磁束φqは、次式(3),(4)で示すことができる。
φd=Ld・Id+φ …(3)
φq=Lq・Iq …(4)
ただし、
Ld,Lq:d軸インダクタンス,q軸インダクタンス
φ:永久磁石の磁束
このとき、d軸電流Idおよびq軸電流Iqを値0とすると、式(3)および式(4)から、d軸磁束φdは値φとなり、q軸磁束φqは値0となる。そして、これらを式(1),(2)にそれぞれ代入すると、d軸電圧Vd,q軸電圧Vqはそれぞれ次式(5),(6)で示され、d軸電圧Vdが値0となる。
Vd=0 …(5)
Vq=ω・φ …(6)
一方、回転位置センサ43により検出されるモータMG1の回転角θm1と実際の回転角との間に位相差Δθ(オフセット誤差)がある場合、永久磁石が発生させる磁束φの方向とd軸との間で位相差Δθのズレが生じる(図4(b)参照)。このため、d軸電流Idおよびq軸電流を値0とすると、d軸電圧Vd,q軸電圧Vqはそれぞれ次式(7),(8)で示され、モータMG1が回転していると(角速度ωが値0でなければ)、d軸電圧Vdが値0とはならない。
Vd=ω・φ・cosα …(7)
Vq=ω・φ・cosα …(8)
このように、回転位置センサ43により検出される回転角θm1にオフセット誤差がない場合には、d軸電流Idおよびq軸電流Iqを値0としたときに、d軸電圧Vdが値0となる。一方、回転位置センサ43により検出される回転角θm1にオフセット誤差がある場合には、d軸電流Idおよびq軸電流Iqを値0としても、モータMG2が回転していると、d軸電圧Vdが値0とならない。上述したように、回転位置センサ43により検出される回転角θm1は、座標変換器64,66による座標変換(二相三相変換,三相二相変換)に用いられる。このため、回転角θm1にオフセット誤差がある場合に当該オフセット誤差を打ち消すためのオフセット補正を行なわないと、座標変換を正しく行なうことができず、モータMG1からトルク指令に見合うトルクを出力することができなくなる。本実施例では、モータMG1の回転中にそのトルク指令を値0(d軸電流Idおよびq軸電流を値0と)とし、この状態でd軸電圧Vdが値0となるように回転位置センサ43により検出される回転角θm1をオフセットし、d軸電圧Vdが値0となったときの回転角θmのオフセット量Δθを学習値(オフセット誤差)とするオフセット学習を行なう。オフセット学習が行なわれると、回転位置センサ43により検出される回転角θm1は、加算器68によって、オフセット量Δθだけオフセットされて、制御用回転角θとして座標変換器64,66にそれぞれ出力される。
次に、こうして構成された実施例のハイブリッド自動車20の動作について説明する。本実施例では、オフセット学習はモータECU40により実行され、オフセット学習の実行条件が成立したか否かの判定はHVECU70によって実行される。図5は、モータECU40のオフセット学習制御部67により実行されるMG1オフセット学習制御ルーチンの一例を示すフローチャートである。このルーチンは、所定時間毎(例えば、数msec毎)に繰り返し実行される。
MG1オフセット学習制御ルーチンが実行されると、オフセット学習制御部67は、まず、RAM40cにオフセット学習履歴が記憶されているか否かを判定する(ステップS100)。オフセット学習履歴が記憶されていると判定すると、RAM40cに記憶されている学習オフセット量Δθoffsをオフセット量Δθに設定する(ステップS110)。一方、オフセット学習履歴が記憶されていないと判定すると、初期オフセット量Δθinitをオフセット量Δθに設定する(ステップS120)。ここで、初期オフセット量Δθinitは、工場出荷時や部品交換時に行なわれるオフセット学習による学習値である。なお、部品交換時には、車両を整備モードとして、作業者が所定の手順に従って作業を進めることにより、オフセット学習が行なわれるようになっている。これにより、RAM40cに記憶されているオフセット学習履歴がリセットされると共に、新たな学習値が初期オフセット量ΔθinitとしてRAM40cに記憶される。ただし、作業者のミス等によってオフセット学習が行なわれないと、部品交換後に、初期オフセット量Δθinitに正しい値が記憶されていない場合が生じる。そこで、本実施例では、システム起動中に所定の頻度でオフセット学習を行なうことにより、RAM40cに適切な学習オフセット量Δθoffsを記憶するものとしている。
次に、MG1オフセット学習指令を受信したか否かを判定する(ステップS130)。ここで、MG1オフセット学習指令は、後述するオフセット学習の実行条件が成立したときに、HVECU70からモータECU40に対して送信される。MG1オフセット学習指令を受信していないと判定すると、ステップS110またはステップS120で設定したオフセット量Δθを加算器68に出力して(ステップS140)、MG1オフセット学習制御ルーチンを終了する。
一方、ステップS130でMG1オフセット学習指令を受信したと判定すると、d軸電流指令Id*およびq軸電流指令Iq*にそれぞれ値0を設定する(ステップS150)。そして、設定したd軸電流指令Id*およびq軸電流指令Iq*を電流指令生成器61に出力すると共に、ステップS110またはステップS120で設定したオフセット量Δθを加算器68に出力する(ステップS160)。電流指令生成器61は、値0のd軸電流指令Id*およびq軸電流指令Iq*を入力すると、値0のd軸電流指令Id*,値0のq軸電流指令Iq*を減算器62d,62qに出力する。また、加算器68は、オフセット量Δθを入力すると、回転位置センサ43により検出された回転角θm1を入力し、回転角θm1にオフセット量Δθを加算したものを制御用回転角θとして座標変換器64,66に出力する。減算器62d,62qは、電流指令生成器61からd軸電流指令Id*,q軸電流指令Iq*を入力すると、座標変換器66からd軸電流,q軸電流を入力し、d軸電流指令Id*,q軸電流指令Iq*とd軸電流,q軸電流との差分ΔId,ΔIqを演算して電圧指令変換器63d,63qに出力する。電圧指令変換器63d,63qは、差分ΔId,ΔIqを入力すると、差分ΔId,ΔIqに基づいてd軸電圧指令Vd*,q軸電圧指令Vq*を生成する。上述したように、d軸電流指令Id*およびq軸電流指令Iq*を値0とした場合、制御用回転角θと実際の回転角との間にズレがなければ、d軸電圧指令Vd*は値0となり、制御用回転角θと実際の回転角との間にズレがあれば、モータMG1が回転していると、d軸電圧指令Vd*は値0とならない。
次に、電圧指令変換器63dからd軸電圧指令Vd*を入力し(ステップS170)、入力したd軸電圧指令Vd*が値0を含む所定範囲内にあるか否かを判定する(ステップS180)。この判定は、d軸電圧指令Vd*が値0近傍に設定された範囲内にあるか否かを判定するものである。d軸電圧指令Vd*が値0を含む所定範囲内にあると判定すると、現在のオフセット量Δθは適正値であるため、現在のオフセット量Δθにより学習オフセット量Δθoffsを更新し(ステップS200)、学習済みフラグFに値1を設定して(ステップS210)、MG1オフセット学習制御ルーチンを終了する。現在のオフセット量Δθが初期オフセット量Δθinitである場合には、オフセット学習が行なわれていないため、学習オフセット量Δθoffsを更新しないものとしてもよい。
一方、d軸電圧指令Vd*が値0を含む所定範囲内にないと判定すると、d軸電圧指令Vd*を用いて次式(9)によりオフセット量Δθを計算して(ステップS190)、ステップS150に戻る。ここで、式(9)は、d軸電圧指令Vd*を値0とするためのフィードバック制御における関係式である。なお、式(9)中、右辺第1項の「前回Δθ」は前回のオフセット量Δθであり、右辺第2項の「s1」は比例項のゲインであり、右辺第3項の「s2」は積分項のゲインである。なお、本実施例では、式(9)に示すように、d軸電圧指令Vd*を値0とするオフセット量Δθの計算に比例積分制御を用いるものとしたが、比例制御を用いるものとしてもよいし、比例積分微分制御を用いるものとしてもよい。
Δθ=前回Δθ+s1(0-Vd*)+s2∫(0-Vd*)dt …(9)
こうしてステップS150〜S190の処理を繰り返し、ステップS180でd軸電圧指令Vd*が値0を含む所定範囲内になると、そのときのオフセット量Δθにより学習オフセット量Δθoffsを更新し(ステップS200)、学習済みフラグFに値1を設定して(ステップS210)、MG1オフセット学習制御ルーチンを終了する。
次に、オフセット学習の実行条件が成立したか否かを判定するHVECU70の動作について説明する。図6は、HVECU70のCPU72により実行される停車時制御ルーチンの一例を示すフローチャートである。このルーチンは、車両が停車しているとき(車速Vが値0であるとき)に、所定時間毎(例えば、数msec毎)に繰り返し実行される。
停車時制御ルーチンが実行されると、HVECU70のCPU72は、まず、モータMG1,MG2の回転数Nm1,Nm2やバッテリ50の蓄電割合SOC,学習済みフラグFなどのデータを入力する処理を行なう(ステップS300)。ここで、モータMG1,MG2の回転数Nm1,Nm2は、回転位置検出センサ43,44からのモータMG1,MG2の回転子の回転角θm1,θm2に基づいて演算された値をモータECU40から通信により入力するものとした。バッテリ50の蓄電割合SOCは、電池電流Ibの積算値に基づいて演算された値をバッテリECU52により通信により入力するものとした。学習済みフラグFは、モータECU40や電源ECU90により設定された値を通信により入力するものとした。
続いて、バッテリ50が充電中であるか否か(ステップS310)、蓄電割合SOCが閾値S1未満であるか否か(ステップS320)、をそれぞれ判定する。バッテリ50が充電中でなく、蓄電割合SOCが閾値S1未満でないと判定すると、エンジン22にアイドル運転が要求されているか否かを判定する(ステップS330)。アイドル運転が要求されていないと判定すると、エンジン22の運転を停止するよう目標回転数Ne*および目標トルクTe*に値0を設定する(ステップS340)。一方、アイドル運転が要求されていると判定すると、エンジン22がアイドル回転数Nidleで自立運転(無負荷運転)するよう目標回転数Ne*にアイドル回転数Nidleを設定すると共に目標トルクTe*に値0を設定する(ステップS350)。そして、モータMG1,MG2のトルク指令Tm1*,Tm2*に値0を設定し(ステップS360)、目標回転数Ne*および目標トルクTe*をエンジンECU24に送信し、トルク指令Tm1*,Tm2*をモータECU40に送信して(ステップS370)、停車時制御ルーチンを終了する。目標回転数Ne*と目標トルクTe*とを受信したエンジンECU24は、目標回転数Ne*と目標トルクTe*とによってエンジン22が運転されるようエンジン22の吸入空気量制御や燃料噴射制御,点火制御などを行なう。また、トルク指令Tm1*,Tm2*を受信したモータECU40は、モータMG1,MG2がトルク指令Tm1*,Tm2*で駆動されるようインバータ41,42のスイッチング素子のスイッチング制御を行なう。
ステップS310でバッテリ50が充電中でないと判定し、且つ、ステップS320で蓄電割合SOCが閾値S1未満であると判定すると、エンジン22が運転中であるか否かを判定する(ステップS380)。エンジン22が運転中でなければ、モータMG1によりエンジン22をクランキングして始動する(ステップS390)。そして、蓄電割合SOCに基づいてエンジン要求パワーPe*を設定し(ステップS400)、エンジン要求パワーPe*に基づいてエンジン22を運転すべき運転ポイントとしての目標回転数Ne*および目標トルクTe*を設定する(ステップS410)。なお、目標回転数Ne*および目標トルクTe*は、エンジン22を効率よく運転するための動作ラインと、要求パワーPe*(Ne*×Te*)が一定の曲線との交点により求めることができる。続いて、エンジン22の目標回転数Ne*とモータMG2の回転数Nm2とプラネタリギヤ30のギヤ比(サンギヤの歯数/リングギヤの歯数)ρとを用いて次式(10)によりモータMG1の目標回転数Nm1*を計算する。また、計算した目標回転数Nm1*と入力したモータMG1の回転数Nm1とに基づいて式(11)によりモータMG1から出力すべきトルク指令Tm1*を計算する(ステップS420)。ここで、式(11)は、モータMG1を目標回転数Nm1*で回転させるためのフィードバック制御における関係式であり、式(11)中、右辺第2項の「k1」は比例項のゲインであり、右辺第3項の「k2」は積分項のゲインである。
Nm1*=Ne*・(1+ρ)/ρ-Nm2/ρ …(10)
Tm1*=ρ・Te*/(1+ρ)+k1(Nm1*-Nm1)+k2∫(Nm1*-Nm1)dt …(11)
続いて、モータMG1から出力されるトルクにより駆動軸36に作用するトルクをモータMG2からのトルクによりキャンセルするためのモータMG2のトルク指令Tm2*を次式(12)により計算する(ステップS430)。なお、式(12)中、「Gr」は減速ギヤ35のギヤ比である。そして、目標回転数Ne*および目標トルクTe*をエンジンECU24に送信し、トルク指令Tm1*,Tm2*をモータECU40に送信して(ステップS370)、停車時制御ルーチンを終了する。これにより、エンジン22からの動力を用いたモータMG1の発電によって、バッテリ50が充電されることになる。
Tm2*=Tm1*/ρ/Gr …(12)
ステップS310でバッテリ50が充電中であると判定すると、蓄電割合SOCが予め定められた閾値S2以上であるか否かを判定する(ステップS440)。なお、閾値S2は、バッテリ50の充電の終了を判定するための閾値であり、閾値S1よりも大きな値に定められている。蓄電割合SOCが閾値S2以上でないと判定すると、エンジン22からの動力を用いたモータMG1の発電によってバッテリ50を充電するステップS400〜S430,S370の処理を継続する。一方、蓄電割合SOCが閾値S2以上であると判定すると、学習済みフラグFが値0であるか否かを判定する(ステップS450)。学習済みフラグFが値0であると判定すると、MG1オフセット学習指令をモータECU40に送信する(ステップS460)。そして、エンジン22が自立運転するよう目標回転数Ne*にアイドル回転数Nidleを設定すると共に目標トルクTe*に値0を設定し(ステップS350)、モータMG1,MG2のトルク指令Tm1*,Tm2*に値0を設定する(ステップS360)。これにより、モータMG1の回転が維持された状態で、MG1オフセット学習制御ルーチンにてオフセット学習が行なわれることになる。一方、学習済みフラグFが値0でなく値1であると判定すると、MG1オフセット学習指令を送信することなく、アイドル要求がなされていなければ、エンジン22の運転を停止させる(ステップS330,S340)。
ここで、学習済みフラグFは、電源ECU90により実行されるシステム起動処理ルーチンにおいて値0にリセットされる。図7は、システム起動処理ルーチンの一例を示すフローチャートである。このルーチンは、ブレーキオンの状態でパワースイッチ92からプッシュ信号を入力したときに、HVECU70へ駆動指令を送信することによりシステムメインリレー56をオンさせた後(ステップS500)、初期化処理を実行すること(ステップS510)により行なわれる。学習済みフラグFは、ステップS510の初期化処理において、値0にリセットされる。一方、学習済みフラグFは、上述したように、MG1オフセット学習制御ルーチンにおいてオフセット学習が完了すると、値1が設定される。オフセット学習は、学習済みフラグFが値0である場合に実行条件が成立したときに実行されるから、システムが起動してから終了するまでの間(いわゆる1トリップ)に1回実行されることになる。
このように、本実施例では、車両が停車している状態でエンジン22からの動力を用いたモータMG1の発電によりバッテリ50が充電されると、その充電が終了するタイミングでモータMG1の回転を維持しつつオフセット学習を行なうのである。車両が停車してしている状態は、運転者が走行のための駆動力を要求していないと考えられる。このため、オフセット学習を行なうためにモータMG1のトルク指令Tm1*を値0としても、ドライバビリティに悪影響を与えないようにすることができる。また、エンジン22の動力を用いたモータMG1の発電によりバッテリ50を充電しているときには、モータMG1が回転しているから、バッテリ50の充電が終了した直後にオフセット学習を行なえば、エンジン22を始動させる必要がない。
以上説明した本実施例のハイブリッド自動車20によれば、車両が停車している状態でエンジン22からの動力を用いたモータMG1の発電によりバッテリ50が充電されている場合に、その充電が終了するときにモータMG1が回転している状態でモータMG1のトルク指令Tm1*を値0としてオフセット学習を行なう。これにより、オフセット学習によって、ドライバビリティが悪化するのを抑制することができる。しかも、バッテリ50の充電が終了し、モータMG1が回転している状態でオフセット学習を行なうから、オフセット学習を行なうためにエンジン22を始動させる必要がない。
実施例のハイブリッド自動車20では、バッテリ50の充電が終了した後、エンジン22を自立運転することによりモータMG1の回転を維持してオフセット学習を行なうものとした。これに対して、バッテリ50の充電が完了した後、エンジン22への燃料供給を停止し、エンジン22が惰性で回転している間に、オフセット学習を行なうものとしてもよい。
実施例のハイブリッド自動車20では、車両が停車している状態でエンジン22からの動力を用いたモータMG1の発電によってバッテリ50を充電している場合に、バッテリ50の充電が終了した後、オフセット学習を実行するものとした。これに対して、オフセット学習を実行するための実行条件として、要求トルクTr*が所定トルク未満であることを含めるものとしてもよい。即ち、車両の発進が要求されていないことをオフセット学習の実行条件に含めるものとしてもよい。
実施例のハイブリッド自動車20では、車両が停車している状態でエンジン22からの動力を用いたモータMG1の発電によりバッテリ50が充電されている場合に、その充電が終了するときにオフセット学習を行なうものとした。これに対して、バッテリ50の充電を伴って外部給電装置95により外部給電を行なう場合に、外部給電が終了するときにオフセット学習を行なうものとしてもよい。図8は、HVECU70のCPU72により実行される外部給電時制御ルーチンの一例を示すフローチャートである。このルーチンは、所定時間毎(例えば、数msec毎)に繰り返し実行される。外部給電時制御ルーチンが実行されると、HVECU70のCPU72は、まず、外部給電中であるか否かを判定する(ステップS600)。外部給電中でないと判定すると、外部給電時制御ルーチンを終了する。一方、外部給電中であると判定すると、バッテリ50の蓄電割合SOCを入力し(ステップS610)、入力した蓄電割合SOCが、バッテリ50の充電の開始を判定するための閾値S1未満であるか否か(ステップS620)、バッテリ50の充電の終了を判定するための閾値S2以上であるか否か(ステップS630)、をそれぞれ判定する。蓄電割合SOCが閾値S1未満であると判定すると、エンジン22が停止中であれば、エンジン22を始動してモータMG1による発電を開始させる(ステップS640,S650)。また、蓄電割合SOCが閾値S2以上であると判定すると、エンジン22が運転中であれば、エンジン22を停止してモータMG1による発電を終了させる(ステップS660,S670)。そして、外部給電が終了したか否かを判定する(ステップS680)。外部給電が終了していないと判定すると、ステップS610に戻る。一方、外部給電が終了したと判定すると、エンジン22が停止中であれば、エンジン22を始動させる(ステップS700)。そして、MG1オフセット学習指令をモータECU40に送信する(ステップS710)。そして、エンジン22がアイドル回転数Nidleで自立運転するよう目標回転数Ne*にアイドル回転数Nidleを設定すると共に目標トルクTe*に値0を設定する(ステップS720)。また、モータMG1,MG2のトルク指令Tm1*,Tm2*に値0を設定し(ステップS730)、各目標値や指令値をエンジンECU24やモータECU40に送信する(ステップS740)。これにより、モータMG1の回転が維持された状態で、MG1オフセット学習制御ルーチンによってオフセット学習が行なわれることになる。そして、オフセット学習の実行に必要な時間として予め定められた所定時間(例えば、1〜3sec)が経過するのを待って(ステップS690)、エンジン22の運転を停止して(ステップS750)、外部給電時制御ルーチンを終了する。
このように、外部給電中にバッテリ50の蓄電割合SOCが閾値S1未満となると、エンジン22の動力を用いたモータMG1の発電によってバッテリ50を充電し、蓄電割合SOCが閾値S2以上となると、エンジン22を停止させてバッテリ50の充電を停止する。そして、外部給電が終了するときにエンジン22の運転によりモータMG1を回転させた状態でオフセット学習を行なう。外部給電は車両が停車している状態で行なわれるから、外部給電が終了するときにモータMG1のトルク指令Tm1*を値0としたオフセット学習を実行することで、ドライバビリティが悪化するのを抑制することができる。なお、この変形例では、MG1オフセット学習指令を送信した後、所定時間が経過するのを待って、エンジン22の運転を停止したが、これに限られず、学習済みフラグFが値1となったときに、エンジン22の運転を停止するものとしてもよい。
実施例のハイブリッド自動車20では、車両が停車している状態でエンジン22からの動力を用いたモータMG1の発電によりバッテリ50が充電されている場合に、その充電が終了するときにオフセット学習を行なうものとした。これに対して、外部電源100からの電力を用いてバッテリ50を充電する場合に、バッテリ50の充電が終了するときにオフセット学習を行なうものとしてもよい。図9は、外部充電時制御ルーチンの一例を示すフローチャートである。このルーチンは、車両側コネクタ99が外部電源100の外部電源側コネクタ102に接続されたときに実行される。外部充電時制御ルーチンが実行されると、HVECU70のCPU72は、まず、充電器98を制御してバッテリ50の充電を開始する(ステップS800)。そして、バッテリ50の蓄電割合SOCを入力し(ステップS810)、蓄電割合SOCが目標割合Stg以上となるまで待つ(ステップS820)。蓄電割合SOCが目標割合Stg以上となると、充電器98を制御してバッテリ50の充電を終了する(ステップS830)。続いて、モータMG1によりエンジン22をクランキングして始動し(ステップS840)、MG1オフセット学習指令をモータECU40に送信する(ステップS850)。そして、エンジン22がアイドル回転数Nidleで自立運転するよう目標回転数Ne*にアイドル回転数Nidleを設定すると共に目標トルクTe*に値0を設定する(ステップS860)。また、モータMG1,MG2のトルク指令Tm1*,Tm2*に値0を設定し(ステップS870)、各目標値や指令値をエンジンECU24やモータECU40に送信する(ステップS880)。これにより、モータMG1の回転が維持された状態で、MG1オフセット学習制御ルーチンにてオフセット学習が行なわれることになる。そして、所定時間(例えば、1〜3sec)が経過するのを待って(ステップS890)、エンジン22の運転を停止して(ステップS900)、外部充電時制御ルーチンを終了する。
外部電源100によるバッテリ50の充電は、車両が停車している状態で行なわれ、充電が終了するまでに比較的長い時間を要するのが通常である。このため、外部電源100によるバッテリ50の充電が終了するときに、エンジン22を始動してモータMG1を回転させた上で、オフセット学習を行なうことにより、モータMG1のトルク指令Tm1*を値0としたオフセット学習によって、ドライバビリティが悪化するのを抑制することができる。
実施例のハイブリッド自動車20では、オフセット学習が1トリップ中に1回実行されるよう学習済みフラグFをシステム起動の際にリセットするものとした。これに対して、学習済みフラグFのリセットは、システム終了の際に行なうものとしてもよい。
実施例のハイブリッド自動車20では、オフセット学習が1トリップ中に1回実行されるようにした。これに対して、オフセット学習が1トリップ中に複数回実行されるようにしてもよく、数トリップ(2トリップや3トリップ)で1回実行するようにしてもよい。
実施例のハイブリッド自動車20では、モータMG1,MG2として、永久磁石式のモータを用いるものとしたが、これに限定されるものではなく、巻線界磁式のモータを用いるものとしてもよい。
実施例のハイブリッド自動車20では、エンジン22からの動力をプラネタリギヤ30を介して駆動輪39a,39bに接続された駆動軸36に出力するものとした。これに対して、図10の変形例のハイブリッド自動車120に例示するように、エンジン122のクランクシャフトに接続されたインナーロータ132と駆動輪39a,39bに接続された駆動軸36に接続されたアウターロータ134とを有しエンジン122からの動力の一部を駆動軸36に伝達すると共に残余の動力を電力に変換する発電可能な対ロータ電動機130を備えるものとしてもよい。また、図11の変形例のハイブリッド自動車220に例示するように、エンジン222と、エンジン222の動力により発電して駆動軸36に接続されたモータMG2またはバッテリ50に供給する発電機Gと、を備えるいわゆるシリーズ式のハイブリッド自動車としてもよい。さらに、図12の変形例のハイブリッド自動車320に例示するように、駆動輪39a,39bに接続された駆動軸36に変速機330を介してモータMGを取り付けると共にモータMGの回転軸にクラッチCLを介してエンジン322を接続するものとしてもよい。このように、エンジンからの動力によって発電が可能な発電機を備えるものであれば、如何なるタイプの自動車に適用するものとしてもよい。
実施例の主要な要素と課題を解決するための手段の欄に記載した発明の主要な要素との対応関係について説明する。実施例では、エンジン22が「エンジン」に相当し、モータMG1が「三相発電機」に相当し、インバータ41が「インバータ」に相当し、バッテリ50が「バッテリ」に相当し、モータECU40が「インバータ制御手段」に相当し、回転位置センサ43が「回転位置センサ」に相当し、オフセット学習制御部67が「オフセット学習手段」に相当し、加算器68が「回転位置補正手段」に相当する。また、外部給電装置95が「外部給電装置」に相当する。
なお、実施例の主要な要素と課題を解決するための手段の欄に記載した発明の主要な要素との対応関係は、実施例が課題を解決するための手段の欄に記載した発明を実施するための形態を具体的に説明するための一例であることから、課題を解決するための手段の欄に記載した発明の要素を限定するものではない。即ち、課題を解決するための手段の欄に記載した発明についての解釈はその欄の記載に基づいて行なわれるべきものであり、実施例は課題を解決するための手段の欄に記載した発明の具体的な一例に過ぎないものである。
以上、本発明を実施するための形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において、種々なる形態で実施し得ることは勿論である。