図1は、本発明の実施例としてのエンジン装置21を搭載するハイブリッド自動車20の構成の概略を示す構成図であり、図2は、エンジン装置21の構成の概略を示す構成図である。実施例のハイブリッド自動車20は、図1に示すように、エンジン22と、プラネタリギヤ30と、モータMG1,MG2と、インバータ41,42と、バッテリ50と、ハイブリッド用電子制御ユニット(以下、「HVECU」という)70とを備える。
エンジン22は、ガソリンや軽油などを燃料として動力を出力する内燃機関として構成されている。図2に示すように、エンジン22は、エアクリーナ122により清浄された空気を吸気管123に吸入してスロットルバルブ124やサージタンク125を通過させると共に、吸気管123のサージタンク125よりも下流側で燃料噴射弁126から燃料を噴射し、空気と燃料とを混合する。そして、エンジン22は、この混合気を吸気バルブ128を介して燃焼室129に吸入し、吸入した混合気を点火プラグ130による電気火花により爆発燃焼させる。この爆発燃焼のエネルギにより押し下げられるピストン132の往復運動がクランクシャフト26の回転運動に変換される。燃焼室129から排気バルブ133を介して排気管134に排出される排気は、浄化装置136,138を介して外気に排出される。浄化装置136,138は、それぞれ、排気中の一酸化炭素(CO)や炭化水素(HC)、窒素酸化物(NOx)の有害成分を浄化する浄化触媒(三元触媒)136a,138aを有する。浄化触媒136a,138aは、それぞれ酸素を吸蔵可能に構成されている。
エンジン22は、エンジン用電子制御ユニット(以下、「エンジンECU」という)24により運転制御されている。エンジンECU24は、図示しないが、CPUを中心とするマイクロプロセッサとして構成されており、CPUの他に、処理プログラムを記憶するROMや、データを一時的に記憶するRAM、入出力ポート、通信ポートを備える。
エンジンECU24には、エンジン22を運転制御するのに必要な各種センサからの信号が入力ポートを介して入力される。エンジンECU24に入力される信号としては、例えば、エンジン22のクランクシャフト26の回転位置を検出するクランクポジションセンサ140からのクランク角θcrや、エンジン22の冷却水の温度を検出する水温センサ142からの冷却水温Twを挙げることができる。また、吸気バルブ128を開閉するインテークカムシャフトや排気バルブ133を開閉するエキゾーストカムシャフトの回転位置を検出するカムポジションセンサ144からのカムポジションθcaも挙げることができる。さらに、スロットルバルブ124のポジションを検出するスロットルバルブポジションセンサ124aからのスロットル開度THや、吸気管123に取り付けられたエアフローメータ148からの吸入空気量Qa、吸気管123に取り付けられた温度センサ149からの吸気温Ta、サージタンク125に取り付けられた圧力センサ150からのサージ圧Psも挙げることができる。加えて、排気管134の浄化装置136よりも上流側に取り付けられた上流側空燃比センサ152からの検出空燃比AFuや、排気管134の浄化装置136よりも下流側で且つ浄化装置138の上流側に取り付けられた下流側空燃比センサ154からの検出空燃比AFdも挙げることができる。
エンジンECU24からは、エンジン22を運転制御するための各種制御信号が出力ポートを介して出力される。エンジンECU24から出力される信号としては、例えば、スロットルバルブ124のポジションを調節するスロットルモータ124bへの駆動制御信号、燃料噴射弁126への駆動制御信号や、点火プラグ130への制御信号を挙げることができる。
エンジンECU24は、HVECU70と通信ポートを介して接続されている。エンジンECU24は、クランクポジションセンサ140からのエンジン22のクランク角θcrに基づいてエンジン22の回転数Neを演算する。また、エアフローメータ148からの吸入空気量Qaとエンジン22の回転数Neとに基づいて体積効率(エンジン22の1サイクルあたりの行程容積に対する1サイクルで実際に吸入される空気の容積の比)KLを演算する。
図1に示すように、プラネタリギヤ30は、シングルピニオンタイプの遊星歯車機構として構成されている。プラネタリギヤ30のサンギヤには、モータMG1の回転子が接続されている。プラネタリギヤ30のリングギヤには、駆動輪39a,39bにデファレンシャルギヤ38を介して連結された駆動軸36が接続されている。プラネタリギヤ30のキャリヤには、ダンパ28を介してエンジン22のクランクシャフト26が接続されている。
モータMG1は、例えば同期発電電動機として構成されており、上述したように、回転子がプラネタリギヤ30のサンギヤに接続されている。モータMG2は、例えば同期発電電動機として構成されており、回転子が駆動軸36に接続されている。インバータ41,42は、モータMG1,MG2の駆動に用いられると共に電力ライン54を介してバッテリ50に接続されている。モータMG1,MG2は、モータ用電子制御ユニット(以下、「モータECU」という)40によって、インバータ41,42の図示しない複数のスイッチング素子がスイッチング制御されることにより、回転駆動される。
モータECU40は、図示しないが、CPUを中心とするマイクロプロセッサとして構成されており、CPUの他に、処理プログラムを記憶するROMや、データを一時的に記憶するRAM、入出力ポート、通信ポートを備える。モータECU40には、モータMG1,MG2を駆動制御するのに必要な各種センサからの信号が入力ポートを介して入力される。モータECU40に入力される信号としては、例えば、モータMG1,MG2の回転子の回転位置を検出する回転位置センサ43,44からのモータMG1,MG2の回転子の回転位置θm1,θm2や、モータMG1,MG2の各相に流れる相電流を検出する電流センサからのモータMG1,MG2の各相の相電流Iu1,Iv1,Iu2,Iv2を挙げることができる。モータECU40からは、インバータ41,42の図示しない複数のスイッチング素子へのスイッチング制御信号などが出力ポートを介して出力される。モータECU40は、HVECU70と通信ポートを介して接続されている。モータECU40は、回転位置センサ43,44からのモータMG1,MG2の回転子の回転位置θm1,θm2に基づいてモータMG1,MG2の電気角θe1,θe2や回転数Nm1,Nm2を演算する。
バッテリ50は、例えばリチウムイオン二次電池やニッケル水素二次電池として構成されており、上述したように、電力ライン54を介してインバータ41,42に接続されている。このバッテリ50は、バッテリ用電子制御ユニット(以下、「バッテリECU」という)52により管理されている。
バッテリECU52は、図示しないが、CPUを中心とするマイクロプロセッサとして構成されており、CPUの他に、処理プログラムを記憶するROMや、データを一時的に記憶するRAM、入出力ポート、通信ポートを備える。バッテリECU52には、バッテリ50を管理するのに必要な各種センサからの信号が入力ポートを介して入力される。バッテリECU52に入力される信号としては、例えば、バッテリ50の端子間に取り付けられた電圧センサ51aからのバッテリ50の電圧Vbや、バッテリ50の出力端子に取り付けられた電流センサ51bからのバッテリ50の電池電流Ib、バッテリ50に取り付けられた温度センサ51cからのバッテリ50の温度Tbを挙げることができる。バッテリECU52は、HVECU70と通信ポートを介して接続されている。バッテリECU52は、電流センサ51bからの電池電流Ibの積算値に基づいて蓄電割合SOCを演算する。蓄電割合SOCは、バッテリ50の全容量に対するバッテリ50から放電可能な電力の容量の割合である。
HVECU70は、図示しないが、CPUを中心とするマイクロプロセッサとして構成されており、CPUの他に、処理プログラムを記憶するROMや、データを一時的に記憶するRAM、入出力ポート、通信ポートを備える。HVECU70には、各種センサからの信号が入力ポートを介して入力される。HVECU70に入力される信号としては、例えば、イグニッションスイッチ80からのイグニッション信号や、シフトレバー81の操作位置を検出するシフトポジションセンサ82からのシフトポジションSPを挙げることができる。また、アクセルペダル83の踏み込み量を検出するアクセルペダルポジションセンサ84からのアクセル開度Accや、ブレーキペダル85の踏み込み量を検出するブレーキペダルポジションセンサ86からのブレーキペダルポジションBP、車速センサ88からの車速V、外気温センサ89からの外気温度Toutも挙げることができる。HVECU70は、上述したように、エンジンECU24やモータECU40、バッテリECU52と通信ポートを介して接続されている。
こうして構成された実施例のハイブリッド自動車20は、エンジン22の運転を伴わずに走行する電動走行モード(EV走行モード)や、エンジン22の運転を伴って走行するハイブリッド走行モード(HV走行モード)で走行する。
EV走行モードでは、HVECU70は、最初に、アクセル開度Accと車速Vとに基づいて走行に要求される(駆動軸36に要求される)要求トルクTd*を設定する。続いて、モータMG1のトルク指令Tm1*に値0を設定すると共に要求トルクTd*が駆動軸36に出力されるようにモータMG2のトルク指令Tm2*を設定し、設定したモータMG1,MG2のトルク指令Tm1*,Tm2*をモータECU40に送信する。モータECU40は、モータMG1,MG2がトルク指令Tm1*,Tm2*で駆動されるようにインバータ41,42の複数のスイッチング素子のスイッチング制御を行なう。
HV走行モードでは、HVECU70は、最初に、EV走行モードと同様に、要求トルクTd*を設定する。続いて、要求トルクTd*に駆動軸36の回転数Ndを乗じて走行に要求される要求パワーPd*を演算し、要求パワーPd*からバッテリ50の充放電要求パワーPb*(バッテリ50から放電するときが正の値)を減じてエンジン22に要求される要求パワーPe*を演算する。ここで、駆動軸36の回転数Ndとしては、例えば、モータMG2の回転数Nm2や、車速Vに換算係数を乗じて得られる回転数が用いられる。そして、エンジン22から要求パワーPe*が出力されると共に要求トルクTd*が駆動軸36に出力されるようにエンジン22の目標回転数Ne*や目標トルクTe*、モータMG1,MG2のトルク指令Tm1*,Tm2*を設定し、エンジン22の目標回転数Ne*および目標トルクTe*を24に送信すると共にモータMG1,MG2のトルク指令Tm1*,Tm2*をモータECU40に送信する。エンジンECU24は、エンジン22が目標回転数Ne*および目標トルクTe*に基づいて運転されるようにエンジン22の吸入空気量制御や燃料噴射制御、点火制御などを行なう。モータECU40によるモータMG1,MG2(インバータ41,42)の制御については上述した。
次に、こうして構成されたハイブリッド自動車20の動作、特に、エンジンECU24による燃料噴射制御について説明する。最初に、アクセルオフなどに伴ってエンジン22の燃料噴射弁126からの燃料噴射を停止(燃料カット)した後に燃料噴射を再開する際のエンジンECU24によるエンジン22の燃料噴射制御(以下、「再開時燃料噴射制御」という)について説明する。
再開時燃料噴射制御では、上流側空燃比センサ152からの検出空燃比AFuと下流側空燃比センサ154からの検出空燃比AFdとエアフローメータ148からの吸入空気量Qaとに基づいて、浄化触媒136aの酸素吸蔵量OSを推定する。そして、酸素吸蔵量OSが所定値OS1(例えば、0.4g、0.5g、0.6gなど)以下であるときには、再開時燃料噴射制御を実行せずに、後述する通常燃料噴射制御を実行する。
酸素吸蔵量OSが所定値OS1より大きいときには、体積効率KLに基づいて、燃焼室129内の混合気の空燃比を目標空燃比AFtagに後述するオフセット量δを加えた制御用空燃比AF*(=AFtag+δ)とするための燃料噴射弁126の目標噴射量Qf*を設定する。ここで、目標空燃比AFtagとしては、理論空燃比(ストイキ)よりリッチ側の空燃比(例えば、14.5など)が用いられる。目標噴射量Qfは、例えば、燃焼室129内の混合気の空燃比を目標空燃比AFtagとするための単位噴射量(体積効率KLの1%当たりの噴射量)Qfpuに体積効率KLを乗じて演算される。体積効率KLは、上述したように、エアフローメータ148からの吸入空気量Qaと、クランクポジションセンサ140からのエンジン22のクランク角θcrに基づいて演算されるエンジン22の回転数Neと、に基づいて演算される。
こうして目標噴射量Qf*を設定すると、燃料噴射弁126から目標噴射量Qf*の燃料噴射が行なわれるように燃料噴射弁126を制御する。そして、酸素吸蔵量OSが所定値OS1より低い所定値OS2(0.05g、0.10g、0.15gなど)未満となったときや下流側空燃比センサ154からの検出空燃比AFdがリッチ側の空燃比(例えば、14.5など)未満になったときには、再開時燃料噴射制御を終了して、後述する通常燃料噴射制御を実行する。
こうした再開時燃料噴射制御では、下流側空燃比センサ154からの検出空燃比AFdのずれ量(以下、「センサずれ量」という)に関するずれ量関連学習値を更新する。実施例では、ずれ量関連学習値として、ストイキ学習値AFstを用いるものとした。ストイキ学習値AFstは、検出空燃比AFdがストイキ基準値AFs付近のときの検出空燃比AFdに関する学習値である。ストイキ基準値AFsは、燃焼室129内の混合気の空燃比が理論空燃比のときの検出空燃比AFdとして予め定められた値である。ストイキ学習値AFstからストイキ基準値AFsを減じた値(AFst-AFs)は、センサずれ量を反映した値となる。
図3は、再開時ずれ量関連学習ルーチンの一例を示すフローチャートである。このルーチンは、繰り返し実行される。なお、実施例では、本ルーチンの繰り返しの実行が開始される(初回の実行が開始される)ときに、後述の積算空燃比AFsumや積算回数Na、積算許可フラグFaに初期値としての値0が設定される。
再開時ずれ量関連学習ルーチンが実行されると、最初に、検出空燃比AFdなどのデータを入力する(ステップS100)。ここで、検出空燃比AFdとしては、下流側空燃比センサ154により検出された値が入力される。
こうしてデータが入力されると、検出空燃比AFdに対して次式(1)を用いてなまし処理を施して得られる処理後空燃比AFaを算出すると共に次式(2)を用いて処理後空燃比AFaの単位時間(実施例では、本ルーチンの実行間隔)当たりの変化量としての処理後空燃比変化率ΔAFaを算出する(ステップS105)。式(1)中、「Nfc」は、再開時燃料噴射制御でのなまし処理の時定数であり、ノイズなどで生じる下流側空燃比センサ154の検出空燃比AFdの微少な変動を後述するステップS170、S180の判定やストイキ学習値AFstに取り込まない程度の値(例えば、15、16、17)などに設定される。
AFa=前回AFa+(AFd-前回AFa)/Nfc (1)
ΔAFa=AFa-前回AFa (2)
続いて、処理後空燃比AFaの積算条件が成立しているか否かを判定する。再開時ずれ量関連学習ルーチンでは、処理後空燃比AFaの積算条件としては、処理後空燃比AFaが所定範囲Raf1内である条件(ステップS170)、処理後空燃比変化率ΔAFaが所定範囲Raf2内である条件(ステップS180)、の論理積を用いている。
ここで、所定範囲Raf1は、処理後空燃比AFaがストイキ基準値AFs付近である(両者の差分が十分に小さい)とみなすことができる範囲として設定される。所定範囲Raf2は、処理後空燃比変化率ΔAFaが値0付近である(絶対値が十分に小さい)とみなすことができる範囲として設定される。したがって、ステップS170、S180は、燃焼室129内の混合気の空燃比が理論空燃比付近で停滞しているか否かを判定する処理となっている。このとき、処理後空燃比AFaと処理後空燃比変化率ΔAFaを用いて判定を行なうから、ノイズなどで生じる下流側空燃比センサ154の検出空燃比AFdの微少な変動が判定結果に影響することを抑制でき、精度のよい判定を行なうことができる。
ステップS170で処理後空燃比AFaが所定範囲Raf1内であり、且つ、ステップS180で処理後空燃比変化率ΔAFaが所定範囲Raf2内であるときには、処理後空燃比AFaの積算条件が成立していると判断する。そして、現在の積算空燃比(現在AFsum)に処理後空燃比AFaを加えた値を新たな積算空燃比AFsumに設定すると共に(ステップS190)、現在の積算回数(現在Na)を値1だけインクリメントした値を新たな積算回数Naに設定する(ステップS200)。
続いて、積算回数Naを学習許可回数Nalrnと比較する(ステップS210)。ここで、学習許可回数Nalrnは、ストイキ学習値AFstの更新に適した回数として設定される。積算回数Naが学習許可回数Nalrn未満のときには、ストイキ学習値AFstの更新に適していないと判断し、再開時ずれ量関連学習ルーチンを終了する。
ステップS210で積算回数Naが学習許可回数Nalrn以上のときには、ストイキ学習値AFstの更新に適していると判断し、積算空燃比AFsumを積算回数Naで除した値を平均空燃比AFaveとして更新し(ステップS220)、この平均空燃比AFaveになまし処理を施した値をストイキ学習値AFstとして更新する(ステップS230)。
ステップS230の処理は、実施例では、式(3)に示すように、平均空燃比AFaveと現在のストイキ点(現在AFst)と時定数τとを用いたなまし処理によりストイキ学習値AFstを更新することにより行なわれる。なお、実施例では、本ルーチンの繰り返しの実行が開始される(初回の実行が開始される)ときに、ストイキ学習値AFstに、初期値としてのストイキ基準値AFsが設定される。
AFst=現在AFst・τ+AFdave・(1-τ) (3)
こうしてストイキ学習値AFstを更新すると、更新した学習したストイキ学習値AFstを用いてオフセット量δを更新する(ステップS240)。実施例では、式(4)に示すように、ストイキ学習値AFstからストイキ基準値AFsを減じた値(AFst-AFs)をオフセット量δの初期値δiniから減じてオフセット量δを更新する。したがって、ストイキ学習値AFstに初期値としてのストイキ基準値AFsを設定しているときには、オフセット量δに初期値δiniを設定し、ストイキ学習値AFstを更新してストイキ学習値AFstがストイキ基準値AFsからずれると、オフセット量δに式(4)により得られる値を設定することになる。
δ=δini-(AFst-AFs) (4)
上述したように、ストイキ学習値AFstからストイキ基準値AFsを減じた値(AFst-AFs)は、センサずれ量を反映した値となる。そして、ステップS240の処理により、ストイキ学習値AFstからストイキ基準値AFsを減じた値(AFst-AFs)を用いてオフセット量δを更新する。こうしたオフセット量δを用いて設定した制御用空燃比AF*を用いて燃料噴射弁126を制御するから、より適正な制御を行なうことができる。
次に、再開時燃料噴射制御が終了した後に実行されるエンジン22の燃料噴射制御(以下、「通常燃料噴射制御」という)について説明する。図4は、エンジンECU24によりエンジン22の通常燃料噴射制御を行なう際の制御ブロックの一例を示す制御ブロック図である。図示するように、エンジンECU24は、エンジン22の通常燃料噴射制御についての制御ブロックとして、ベース噴射量設定部90と、メインフィードバック部91と、サブフィードバック部92と、目標噴射量設定部93と、噴射弁制御部94と、ずれ量関連学習部95と、酸素吸蔵量推定部96とを有する。
ベース噴射量設定部90は、体積効率KLに基づいて、燃焼室129内の混合気の空燃比を目標空燃比とするための燃料噴射弁126の目標噴射量Qf*のベース値であるベース噴射量Qfbを設定する。ここで、目標空燃比としては、実施例では、理論空燃比(ストイキ)が用いられる。ベース噴射量Qfbは、例えば、燃焼室129内の混合気の空燃比を目標空燃比とするための単位噴射量(体積効率KLの1%当たりの噴射量)Qfpuに体積効率KLを乗じて演算される。体積効率KLは、上述したように、エアフローメータ148からの吸入空気量Qaと、クランクポジションセンサ140からのエンジン22のクランク角θcrに基づいて演算されるエンジン22の回転数Neと、に基づいて演算される。
メインフィードバック部91は、上流側空燃比センサ152からの検出空燃比AFuを制御用空燃比AFu*にするためのフィードバック制御により補正値δafを演算し、演算した補正値δafに値(-1)を乗じてから値1を加えた値を補正係数Kafに設定する。ここで、制御用空燃比AFu*は、サブフィードバック部92により設定される。補正値δafは、式(5)に示すように、検出空燃比AFuと制御用空燃比AFu*と比例項のゲインKpと積分項のゲインKiとを用いたフィードバック制御の関係式を用いて演算される。補正値δafに値(-1)を乗じてから値1を加えた値を補正係数Kafに設定する理由については後述する。
δaf=Kp・(AFu*-AFu)+Ki・∫(AFu*-AFu)dt (5)
サブフィードバック部92は、下流側空燃比センサ154からの検出空燃比AFdに基づいて、制御用空燃比AFu*にリッチ側の値を設定するリッチ補正と、制御用空燃比AFu*にリーン側の値を設定するリーン補正と、を交互に行なう。以下、この処理を「サブフィードバック補正」という。リッチ補正やリーン補正は、浄化触媒136aの酸素吸蔵量を調節するために行なわれる。サブフィードバック部92の詳細については後述する。
目標噴射量設定部93は、ベース噴射量Qfbに補正係数Kafを乗じた値を燃料噴射弁126の目標噴射量Qf*に設定する。噴射弁制御部94は、燃料噴射弁126から目標噴射量Qf*の燃料噴射が行なわれるように燃料噴射弁126を制御する。
ここで、メインフィードバック部91において、補正値δafに値(-1)を乗じてから値1を加えた値を補正係数Kafに設定する理由について説明する。リーン補正の実行中には、検出空燃比AFuが制御用空燃比AFu*よりも小さく(リッチ側であり)、式(1)により、基本的に、補正値δafが正の値になる。このため、補正係数Kafを値1よりも小さくして目標噴射量Qf*をベース噴射量Qfbよりも少なくし、検出空燃比AFuを現在値よりも大きくする(リーン側にする)必要がある。これに対して、リッチ補正の実行中には、検出空燃比AFuが制御用空燃比AFu*よりも大きく(リーン側であり)、式(1)により、基本的に、補正値δafが負の値になる。このため、補正係数Kafを値1よりも大きくして目標噴射量Qf*をベース噴射量Qfbよりも多くし、検出空燃比AFuを現在値よりも小さくする(リッチ側にする)必要がある。こうした理由により、補正値δafに値(-1)を乗じてから値1を加えた値を補正係数Kafに設定するのである。
ずれ量関連学習部95は、下流側空燃比センサ154からの検出空燃比AFdのずれ量(以下、「センサずれ量」という)に関するずれ量関連学習値を更新する。実施例では、ずれ量関連学習値として、ストイキ学習値AFstを用いるものとした。ストイキ学習値AFstは、検出空燃比AFdがストイキ基準値AFs付近のときの検出空燃比AFdに関する学習値である。ストイキ基準値AFsは、燃焼室129内の混合気の空燃比が理論空燃比のときの検出空燃比AFdの基準値(予め設定された値)である。ストイキ学習値AFstからストイキ基準値AFsを減じた値(AFst-AFs)は、センサずれ量を反映した値となる。ずれ量関連学習部95の詳細については後述する。
酸素吸蔵量推定部96は、上流側空燃比センサ152からの検出空燃比AFuと下流側空燃比センサ154からの検出空燃比AFdとエアフローメータ148からの吸入空気量Qaとに基づいて、浄化触媒136aの酸素吸蔵量OSを推定すると共に、その最大値である最大酸素吸蔵量OSmaxを推定する。一般に、最大酸素吸蔵量OSmaxは、浄化触媒136aの劣化が進行するにつれて減少する。
次に、サブフィードバック部92の詳細について説明する。図5は、サブフィードバック部92により実行されるサブフィードバック補正ルーチンの一例を示すフローチャートである。このルーチンは、繰り返し実行される。なお、実施例では、本ルーチンの繰り返しの実行が開始されるとき(初回の実行が開始されるとき)に、後述のリッチ補正フラグFrに値1が設定される。
図5のサブフィードバック補正ルーチンでは、サブフィードバック部92は、最初に、下流側空燃比センサ154からの検出空燃比AFdを入力すると共に(ステップS300)、リッチ補正フラグFrの値を調べる(ステップS310)。ここで、リッチ補正フラグFrは、リッチ補正およびリーン補正のうちの何れの実行中であるかを示すフラグである。
ステップS310でリッチ補正フラグFrが値1のときには、リッチ補正の実行中であると判断し、検出空燃比AFdを、ストイキ基準値AFsからサブオフセット量εRを減じたリッチ側閾値(AFs-εR)と比較する(ステップS320)。この処理は、検出空燃比AFdがある程度リッチ側の値になったか否か、即ち、浄化触媒136aの下流側の排気中の未燃焼燃料量がある程度増加したか否かを判定する処理である。
ステップS320で検出空燃比AFdがリッチ側閾値(AFs-εR)よりも大きいときには、未だ検出空燃比AFdがある程度リッチ側の値になっていないと判断し、ストイキ基準値AFsからメインオフセット量δRを減じた値(AFs-δR)を制御用空燃比AFu*に設定して(ステップS370)、本ルーチンを終了する。ここで、メインオフセット量δRは、サブオフセット量εR以上の範囲内で設定される。例えば、メインオフセット量δRには、サブオフセット量εRにマージンを加えた値が設定される。この場合、リッチ補正の実行を継続することになる。
ステップS320で検出空燃比AFdがリッチ側閾値(AFs-εR)以下のときには、検出空燃比AFdがある程度リッチ側の値になったと判断し、リッチ補正フラグFrに値0を設定し(ステップS330)、ストイキ基準値AFsにメインオフセット量δLを加えた値(AFs+δL)を制御用空燃比AFu*に設定して(ステップS340)、本ルーチンを終了する。ここで、メインオフセット量δLは、後述のサブオフセット量εL以上の範囲内で設定される。例えば、メインオフセット量δLには、サブオフセット量εLにマージンを加えた値が設定される。このようにして、リッチ補正の実行からリーン補正の実行に切り替えるのである。
ステップS310でリッチ補正フラグFrが値0のときには、リーン補正の実行中であると判断し、検出空燃比AFdを、ストイキ基準値AFsにサブオフセット量εLを加えたリーン側閾値(AFs+εL)と比較する(ステップS350)。この処理は、検出空燃比AFdがある程度リーン側の値になったか否か、即ち、浄化触媒136aの下流側の排気中の酸素量がある程度増加したか否かを判定する処理である。
ステップS350で検出空燃比AFdがリーン側閾値(AFs+εL)未満のときには、未だ検出空燃比AFdがある程度リーン側の値になっていないと判断し、上述のステップS340の処理により、値(AFs+δL)を制御用空燃比AFu*に設定して、本ルーチンを終了する。この場合、リーン補正の実行を継続することになる。
ステップS350で検出空燃比AFdがリーン側閾値(AFs+εL)以上のときには、検出空燃比AFdがある程度リーン側の値になったと判断し、リッチ補正フラグFrに値1を設定し(ステップS360)、上述のステップS370の処理により、値(AFs-δR)を制御用空燃比AFu*に設定して、本ルーチンを終了する。このようにして、リーン補正の実行からリッチ補正の実行に切り替えるのである。
図6は、検出空燃比AFdや、サブフィードバック補正の様子の一例を示す説明図である。図示するように、リーン補正の実行中に検出空燃比AFdがリーン側閾値(AFs+εL)以上に至ると(時刻t1,t3)、リッチ補正の実行に切り替える。また、リッチ補正の実行中に検出空燃比AFdがリッチ側閾値(AFs-εR)以下に至ると(時刻t2)、リーン補正の実行に切り替える。以下、リーン補正およびリッチ補正のうちの一方の開始から他方の終了まで(例えば、時刻t1~t3)を「サブフィードバック補正の1周期」という。
なお、リッチ補正の実行中には、ベース噴射量Qfbよりも多い値を目標噴射量Qf*に設定して燃料噴射弁126を制御するから、浄化触媒136aに流入する排気には、その排気中の酸素と過不足なく反応する未燃焼燃料量よりも多量の未燃焼燃料が含まれる。この多量の未燃焼燃料は、排気中の酸素や浄化触媒136aに吸蔵されている酸素により酸化されるから、浄化触媒136aの下流側の排気中の酸素量や未燃焼燃料量は十分に少なくなる。これにより、図示するように、検出空燃比AFdがストイキ基準値AFs付近のときに、検出空燃比AFdの単位時間当たりの変化量の絶対値が小さくなっている。
次に、ずれ量関連学習部95の詳細について説明する。図7は、ずれ量関連学習部95により実行される通常ずれ量関連学習ルーチンの一例を示すフローチャートである。このルーチンは、繰り返し実行される。なお、実施例では、本ルーチンの繰り返しの実行が開始される(初回の実行が開始される)ときに、後述の積算空燃比AFsumや積算回数Na、積算許可フラグFaに初期値としての値0が設定される。また、通常ずれ量関連学習ルーチンの各処理のうち再開時ずれ量関連学習ルーチンの処理と同一の処理については、詳細な説明を省略する。
ずれ量関連学習ルーチンが実行されると、ずれ量関連学習部95は、最初に、検出空燃比AFdやリッチ補正フラグFr、定常運転フラグFstなどのデータを入力する(ステップS400)。
ここで、検出空燃比AFdとしては、下流側空燃比センサ154により検出された値が入力される。リッチ補正フラグFrは、サブフィードバック部92により設定された値が入力される。定常運転フラグFstは、定常運転フラグ設定ルーチン(図示省略)により設定された値が入力される。定常運転フラグ設定ルーチンでは、エンジン22の運転状態が定常運転状態であるときには、定常運転フラグFstに値1が設定され、エンジン22の運転状態が定常運転状態でないときには、定常運転フラグFstに値0が設定される。
エンジン22の運転状態が定常運転状態である条件としては、例えば、吸入空気量Qaの単位時間当たりの変化量である吸入空気量変化率ΔQaが所定範囲Rqa内である条件や、体積効率KLの単位時間当たりの変化量である体積効率変化率ΔKLが所定範囲Rkl内である条件、エンジン22の目標トルクTe*の単位時間当たりの変化量である目標トルク変化率ΔTe*が所定範囲Rte内である条件などのうちの少なくとも1つが用いられる。所定範囲Rqaは、吸入空気量変化率ΔQaが値0付近である(絶対値が十分に小さい)とみなすことができる範囲として設定される。所定範囲Rklは、体積効率変化率ΔKLが値0付近である(絶対値が十分に小さい)とみなすことができる範囲として設定される。所定範囲Rteは、目標トルク変化率ΔTe*が値0付近である(絶対値が十分に小さい)とみなすことができる範囲として設定される。
こうしてデータが入力されると、検出空燃比AFdに対して次式(6)を用いてなまし処理を施して得られる処理後空燃比AFaを算出すると共に次式(7)を用いて処理後空燃比AFaの単位時間(実施例では、本ルーチンの実行間隔)当たりの変化量としての処理後空燃比変化率ΔAFaを算出する(ステップS405)。式(6)中、「Nfn」は、通常時におけるなまし処理の時定数であり、図3の再開時ずれ量関連学習ルーチンのステップS105で用いられた時定数Nfcより小さい値(例えば、0.8、1.0、1.2など)に設定される。したがって、ステップS405のなまし処理は、再開時ずれ量関連学習ルーチンのステップS105のなまし処理に比して、検出空燃比AFdの変化に対する処理後空燃比AFaの追従性を高くする処理となっている。
AFa=前回AFa+(AFd-前回AFa)/Nu (6)
ΔAFa=AFa-前回AFa (7)
続いて、積算許可フラグFaの値を調べる(ステップS410)。ここで、積算許可フラグFaは、検出空燃比AFdの積算(後述の積算空燃比AFsumの演算)を許可するか否かを示すフラグである。
積算許可フラグFaが値0のときには、処理後空燃比AFaの積算を許可していないと判断し、検知条件が成立したか否かを判定する(ステップS420,S430)。ここで、検知条件は、リーン補正の実行中に浄化触媒136aよりも下流側の排気のリーンを検知した条件である。実施例では、検知条件として、リッチ補正フラグFrが値0である条件、即ち、サブフィードバック部92によりリーン補正の実行中である条件(ステップS420)、処理後空燃比変化率ΔAFaが正の閾値ΔAFaref以上である条件(ステップS430)、の論理積を用いるものとした。ここで、閾値ΔAFarefは、検出空燃比AFdがリーン側に大きく変化したか否かを判定するために用いられる閾値である。
ステップS420でリッチ補正フラグFrが値1のときや、ステップS430で処理後空燃比変化率ΔAFaが閾値ΔAFaref未満のときには、検知条件が成立していないと判断し、積算許可フラグFaを変更することなく、通常ずれ量関連学習ルーチンを終了する。
ステップS420でリッチ補正フラグFrが値0であり、且つ、ステップS430で処理後空燃比変化率ΔAFaが閾値ΔAFaref以上のときには、検知条件が成立したと判断し、積算許可フラグFaに値1を設定して(ステップS440)、通常ずれ量関連学習ルーチンを終了する。
ステップS410で積算許可フラグFaが値1のときには、処理後空燃比AFaの積算を許可していると判断し、処理後空燃比AFaの積算条件が成立しているか否かを判定する(ステップS450、S460、S470、S480)。通常ずれ量関連学習ルーチンでは、処理後空燃比AFaの積算条件として、リッチ補正フラグFrが値1である条件、即ち、サブフィードバック部92によりリッチ補正の実行中である条件(ステップS450)、定常運転フラグFstが値1である条件、即ち、エンジン22の運転状態が定常運転状態である条件(ステップS460)、処理後空燃比AFaが所定範囲Raf1内である条件(ステップS470)、処理後空燃比変化率ΔAFaが所定範囲Raf2内である条件(ステップS480)、の論理積を用いるものとした。
ここで、ステップS470、S480は、図3の再開時ずれ量関連学習ルーチンのステップS170、S180と同一の処理であることから、所定範囲Raf1、Raf2は、ステップS170、S180で用いた値と同一の値である。したがって、ステップS470、S480は、燃焼室129内の混合気の空燃比が理論空燃比付近で停滞しているか否かを判定する処理となっている。
上述したように、ステップS405のなまし処理は、再開時ずれ量関連学習ルーチンのステップS105のなまし処理に比して、検出空燃比AFdの変化に対する処理後空燃比AFaの追従性を高くする処理となっている。上述のサブフィードバック補正は、再開時燃料噴射制御に比して、短時間で検出空燃比AFdがリッチ側の空燃比とリーン側の空燃比との間で変化する。そのため、燃料噴射の再開時のなまし処理の時定数Nfcと同一の時定数を用いたなまし処理だと、検出空燃比AFdの変化に処理後空燃比AFaが追従できず、ステップS470、S480を適正に判定できないことがある。実施例では、処理後空燃比AFaを、燃料噴射の再開時のなまし処理の時定数Nfcより小さい値としての時定数Nfnを用いたなまし処理で設定して検出空燃比AFdの変化に対する処理後空燃比AFaの追従性を高くすることにより、検出空燃比AFdの変化に対する処理後空燃比AFaが追従できないことによって積算条件が成立する頻度が低下することを抑制できる。これにより、ステップS490以降の処理の実行頻度の低下を抑制できる。
ステップS450でリッチ補正フラグFrが値0のときには、処理後空燃比AFaの積算条件が成立していないと判断し、通常ずれ量関連学習ルーチンを終了する。上述したように、リーン補正の実行中に積算許可フラグFaを値0から値1に切り替えるから、ステップS410で積算許可フラグFaが値1で且つステップS450でリッチ補正フラグFrが値0のときとしては、積算許可フラグFaを値0から値1に切り替えてからリーン補正の実行からリッチ補正の実行に切り替えるまでの間を挙げることができる。
ステップS450でリッチ補正フラグFrが値1であり、且つ、ステップS460で定常運転フラグFstが値1であり、且つ、ステップS470で処理後空燃比AFaが所定範囲Raf1内であり、且つ、ステップS480で処理後空燃比変化率ΔAFaが所定範囲Raf2内であるときには、図3の再開時ずれ量関連学習ルーチンのステップS190~S230と同様の処理で、積算空燃比AFsumに設定し(ステップS490)、積算回数Naを設定し(ステップS510)、積算回数Naを学習許可回数Nalrnと比較し(ステップS510)、積算回数Naが学習許可回数Nalrn以上のときには、平均空燃比AFaveを更新し(ステップS520)、ストイキ学習値AFstを更新する(ステップS530)。
こうしてストイキ学習値AFstを更新すると、更新した学習したストイキ学習値AFstを用いてサブオフセット量εRおよびサブオフセット量εLを更新する(ステップS540)。実施例では、式(8)に示すように、ストイキ学習値AFstからストイキ基準値AFsを減じた値(AFst-AFs)をサブオフセット量εRの初期値εRiniから減じてサブオフセット量εRを更新する。また、式(9)に示すように、値(AFst-AFs)をサブオフセット量εLの初期値δ1iniに加えてサブオフセット量εLを更新する。したがって、ストイキ学習値AFstに初期値としてのストイキ基準値AFsを設定しているときには、サブオフセット量εRおよびサブオフセット量εLに初期値εRiniおよび初期値εLiniを設定し、ストイキ学習値AFstを更新してストイキ学習値AFstがストイキ基準値AFsからずれると、サブオフセット量εRおよびサブオフセット量εLに式(8)および式(9)により得られる値を設定することになる。
εR=εRini-(AFst-AFs) (8)
εL=εLini+(AFst-AFs) (9)
上述したように、ストイキ学習値AFstからストイキ基準値AFsを減じた値(AFst-AFs)は、センサずれ量を反映した値となる。そして、ステップS540の処理により、ストイキ学習値AFstからストイキ基準値AFsを減じた値(AFst-AFs)を用いてサブオフセット量εRおよびサブオフセット量εLを更新する。これにより、サブフィードバック補正の1周期において、浄化触媒136aに流入する酸素および未燃焼燃料のうちの一方が他方と互いに過不足なく反応する量よりも過剰になることを抑制することができる。
以下、この効果の詳細について説明する。なお、前提として、実施例では、値(AFst-AFs)の絶対値が十分に小さい場合、サブフィードバック補正の1周期における浄化触媒136aの酸素吸蔵量OSの変動量の上限が最大酸素吸蔵量OSmaxの数%~数十%程度になるように、サブオフセット量εRの初期値εRiniおよびサブオフセット量εLの初期値εLiniを設定するものとした。
値(AFst-AFs)の絶対値がある程度大きい場合、燃焼室129内の混合気の空燃比が理論空燃比に対してある程度ずれたときに、検出空燃比AFdがストイキ基準値AFsに等しくなる。このため、サブオフセット量εRおよびサブオフセット量εLを初期値εRiniおよび初期値εLiniで保持する、即ち、リッチ側閾値(AFs-εR)およびリーン側閾値(AFs+εL)を値(AFs-εRini)、値(AFs+εL)で保持すると、サブフィードバック補正の1周期において、リッチ補正およびリーン補正のうちの一方が他方に比してある程度長くなる可能性がある。このとき、浄化触媒136aに流入する酸素および未燃焼燃料のうちの一方が他方と互いに過不足なく反応する量よりも過剰になり、浄化触媒136aの酸素吸蔵量OSが、値0に近づいたり最大酸素吸蔵量OSmaxに近づいたりして、浄化触媒136aの排気の浄化性能が低下する懸念がある。これに対して、実施例では、ストイキ学習値AFstからストイキ基準値AFsを減じた値(AFst-AFs)を用いてサブオフセット量εRおよびサブオフセット量εLを更新する、即ち、リッチ側閾値(AFs-εR)およびリーン側閾値(AFs+εL)を更新することにより、こうした不都合が生じるのを抑制することができる。
ステップS540でサブオフセット量εRおよびサブオフセット量εLを更新すると、積算空燃比AFsumおよび積算回数Naを値0にリセットすると共に(ステップS550)、積算許可フラグFaに値0を設定して(ステップS560)、通常ずれ量関連学習ルーチンを終了する。
こうして積算許可フラグFaに値0を設定すると、次回に検知条件が成立するまで(ステップS420,S430)、積算許可フラグFaを値0で保持する。したがって、次回に検知条件が成立するまで、積算空燃比AFsumや積算回数Naの逐次更新や(ステップS490,S500)、平均空燃比AFaveやストイキ学習値AFst、サブオフセット量εRおよびサブオフセット量εLの更新(ステップS520~S540)を禁止することになる。
処理後空燃比AFaの積算条件が成立しているときにおいて、処理後空燃比AFaが所定範囲Raf1内の上限値側のときと下限値側のときとでは、積算空燃比AFsumや平均空燃比AFaveが異なり、ストイキ学習値AFstに影響を与える。このため、1回のリッチ補正の実行開始から実行終了までの間に、処理後空燃比AFaが所定範囲Raf1内の上限値側のときと下限値側のときとでストイキ学習値AFstを複数回更新すると、ストイキ学習値AFstの信頼性が低くなる可能性がある。これを踏まえて、実施例では、1回のリッチ補正の実行開始から実行終了までの間に、ストイキ学習値AFstを1回だけ更新するものとした。これにより、ストイキ学習値AFstの信頼性が低くなるのを抑制することができる。
ステップS450でリッチ補正フラグFrが値1のときにおいて、ステップS460で定常運転フラグFstが値0のときには、積算条件が成立していないと判断し、積算空燃比AFsumおよび積算回数Naを値0にリセットすると共に(ステップS550)、積算許可フラグFaに値0を設定して(ステップS560)、通常ずれ量関連学習ルーチンを終了する。
リッチ補正の実行中に、エンジン22の運転状態が定常運転状態でなくなってからその後に定常運転状態に戻った場合、処理後空燃比AFaの積算条件が成立しているときの処理後空燃比AFaが所定範囲Raf1内の上限値側のときと下限値側のときとが生じる。上述したように、処理後空燃比AFaが所定範囲Raf1内の上限値側のときと下限値側のときとでは、積算空燃比AFsumや平均空燃比AFaveが異なり、ストイキ学習値AFstに影響を与える。これを踏まえて、実施例では、リッチ補正の実行中にエンジン22の運転状態が定常運転状態でなくなると、今回のリッチ補正の実行中でのストイキ学習値AFstの更新を中止するものとした。これにより、ストイキ学習値AFstの信頼性が低くなるのを抑制することができる。
ステップS450でリッチ補正フラグFrが値1であり、且つ、ステップS460で定常運転フラグFstが値1のときにおいて、ステップS470で処理後空燃比AFaが所定範囲Raf1外のときや、ステップS480で処理後空燃比変化率ΔAFaが所定範囲Raf2外のときには、積算条件が成立していないと判断する。そして、積算回数Naを学習許可回数Nalrnよりも小さい閾値Narefと比較する(ステップS570)。ここで、閾値Narefは、処理後空燃比AFaの積算条件の成立開始後に、検出空燃比AFdや処理後空燃比変化率ΔAFaの乱れにより積算条件が一時的に不成立になり、その後に積算条件が再成立する可能性のある時間やそれよりも若干長い時間に対応する値として設定される。
ステップS570で積算回数Naが閾値Naref未満のときには、積算空燃比AFsumや積算回数Na、積算許可フラグFaを保持して、通常ずれ量関連学習ルーチンを終了する。これにより、処理後空燃比AFaの積算条件の成立の開始直後などに、検出空燃比AFdや処理後空燃比変化率ΔAFaの乱れにより積算条件が一時的に不成立になったときに、ストイキ学習値AFstの更新の中止を回避することができる。この結果、ストイキ学習値AFstの更新機会が少なくなるのを抑制することができる。
ステップS570で積算回数Naが閾値Naref以上のときには、積算空燃比AFsumおよび積算回数Naを値0にリセットすると共に(ステップS550)、積算許可フラグFaに値0を設定して(ステップS560)、通常ずれ量関連学習ルーチンを終了する。この場合、今回のリッチ補正の実行中の、積算空燃比AFsumや積算回数Naの逐次更新、平均空燃比AFaveやストイキ学習値AFst、サブオフセット量εRおよびサブオフセット量εLの更新を中止することになる。
積算回数Naが閾値Naref以上のときには、通常であれば、検出空燃比AFdや処理後空燃比変化率ΔAFaの乱れにより積算条件が不成立になる可能性が低いと想定される。これを踏まえて、実施例では、積算回数Naが閾値Naref以上のときに、処理後空燃比AFaが所定範囲Raf1外になったときや処理後空燃比変化率ΔAFaが所定範囲Raf2外になったときには、今回のリッチ補正の実行中でのストイキ学習値AFstの更新を中止するものとした。これにより、ストイキ学習値AFstの信頼性が低くなるのを抑制することができる。
以上説明した実施例のハイブリッド自動車20に搭載されるエンジン装置21では、エンジン22を運転する場合において、下流側空燃比センサ154により検出された検出空燃比AFdに対して変化をなめらかにするためのなまし処理を施して得られる処理後空燃比AFaがストイキ基準値AFsを含む所定範囲Raf1内である条件と、処理後空燃比AFaの単位時間当たりの変化量である処理後空燃比変化率ΔAFaが値0を含む所定範囲Raf2内である条件と、を含む積算条件が成立したときに、処理後空燃比AFaを用いてストイキ学習値AFstを更新し、通常燃料噴射制御を実行しているときに検出空燃比AFdに対して施されるなまし処理を、再開時燃料噴射制御を実行しているときに検出空燃比AFdに対して施されるなまし処理に比して、検出空燃比AFdの変化に対する処理後空燃比AFaの追従性が高い処理とすることにより、検出空燃比AFdのずれ量に関するずれ量関連学習値の更新の頻度の低下を抑制することができる。
実施例のハイブリッド自動車20に搭載されるエンジン装置21では、ずれ量関連学習部95は、処理後空燃比AFaの積算条件として、リッチ補正フラグFrが値1である条件、定常運転フラグFstが値1である条件、処理後空燃比AFaが所定範囲Raf1内である条件、処理後空燃比変化率ΔAFaが所定範囲Raf2内である条件、の論理積を用いるものとした。しかしながら、定常運転フラグFstが値1である条件を用いないものとしてもよい。
実施例のハイブリッド自動車20に搭載されるエンジン装置21では、図3の再開時ずれ量関連学習ルーチンのステップS170、S180、図6の通常ずれ量関連学習ルーチンのステップS470,S480の処理で用いる所定範囲Raf1,Raf2として、それぞれ固定値を用いるものとした。しかしながら、吸入空気量Qaおよび最大酸素吸蔵量OSmaxのうちの少なくとも1つに基づいて所定範囲Raf1,Raf2を設定するものとしてもよい。この場合、所定範囲Raf1,Raf2は、何れも、吸入空気量Qaが多いほどほど広くなり(上限値が大きくなると共に下限値が小さくなり)、且つ、最大酸素吸蔵量OSmaxが少ないほど広くなるように設定すればよい。これは、以下の理由による。
再開時燃料噴射制御や通常燃料噴射制御のリッチ補正の実行中に、吸入空気量Qaが多いほど即ち浄化触媒136aに流入する排気量が多いほど、且つ、最大酸素吸蔵量OSmaxが少ない即ち浄化触媒136aの劣化程度が大きいほど、浄化触媒136aの酸素吸蔵量OSの単位時間当たりの減少量が大きくなりやすく、検出空燃比AFdが所定範囲Raf1内である条件や検出空燃比変化率ΔAFdが所定範囲Raf2内である条件の成立時間が短くなりやすい。したがって、吸入空気量Qaが多いほど広くなり且つ最大酸素吸蔵量OSmaxが少ないほど広くなるように所定範囲Raf1,Raf2を設定することにより、吸入空気量Qaが多いときや最大酸素吸蔵量OSmaxが少ないときに、検出空燃比AFdの検出回数を確保しやすくすることができる。これにより、積算回数Naが学習許可回数Nalrn以上に至りやすくすることがでる。この結果、ストイキ学習値AFstの更新頻度が低くなるのを抑制できる。
実施例のハイブリッド自動車20に搭載されるエンジン装置21では、ずれ量関連学習部95は、処理後空燃比AFaの積算を許可しており且つリッチ補正の実行中に、ストイキ学習値AFstを更新したときや、エンジン22の運転状態が定常運転状態でなくなったとき、積算回数Naが閾値Naref以上であり且つ処理後空燃比AFaが所定範囲Raf1外になったり処理後空燃比変化率ΔAFaが所定範囲Raf2外になったりしたときには、処理後空燃比AFaの積算の許可を解除するものとした。しかしながら、積算回数Naが閾値Naref以上であり且つ処理後空燃比AFaが所定範囲Raf1外になったり処理後空燃比変化率ΔAFaが所定範囲Raf2外になったりしたときだけを用いるものとしてもよい。また、処理後空燃比AFaが所定範囲Raf1外になったり処理後空燃比変化率ΔAFaが所定範囲Raf2外になったりしたときには、積算回数Naと閾値Narefとの大小関係に拘わらずに、処理後空燃比AFaの積算の許可を解除するものとしてもよい。
実施例のハイブリッド自動車20に搭載されるエンジン装置21では、ずれ量関連学習部95は、平均空燃比AFaveになまし処理を施した値をストイキ学習値AFstとして更新するものとした。しかしながら、平均空燃比AFaveにレート処理を施した値をストイキ学習値AFstとして更新するものとしてもよい。
実施例のハイブリッド自動車20に搭載されるエンジン装置21では、ずれ量関連学習部95は、平均空燃比AFaveになまし処理を施した値をストイキ学習値AFstとして更新するものとした。しかしながら、平均空燃比AFaveをストイキ学習値AFstとして更新するものとしてもよい。この場合、式(10)および式(11)に示すように、ストイキ学習値AFstからストイキ基準値AFsを減じた値(AFst-AFs)と、値1よりも小さいゲインαR,αLと、の積を用いてサブオフセット量εRおよびサブオフセット量εLを更新するのが好ましい。
εR=εRini-(AFst-AFs)・αR (10)
εL=εLini+(AFst-AFs)・αL (11)
実施例のハイブリッド自動車20に搭載されるエンジン装置21では、ずれ量関連学習部95は、平均空燃比AFaveに基づいてストイキ学習値AFstを更新し、式(3)および式(4)に示したように、ストイキ学習値AFstからストイキ基準値AFsを減じた値(AFst-AFs)を用いてサブオフセット量εRおよびサブオフセット量εLを更新するものとした。しかしながら、ストイキ学習値AFstからストイキ基準値AFsを減じた値(AFst-AFs)をストイキずれ量ΔAFstとして更新するものとしてもよい。また、ストイキ学習値AFstからストイキ基準値AFsを減じた値(AFst-AFs)に緩変化処理(なまし処理やレート処理)を施して得られる値をストイキずれ量ΔAFstとして更新するものとしてもよい。さらに、平均空燃比AFaveからストイキ基準値AFsを減じた値(AFdave-AFs)をストイキずれ量ΔAFstとして更新するものとしてもよい。加えて、平均空燃比AFaveからストイキ基準値AFsを減じた値(AFdave-AFs)に緩変化処理を施して得られる値をストイキずれ量ΔAFstとして更新するものとしてもよい。これらの場合、ストイキずれ量ΔAFstが「ずれ量関連学習値」に該当する。また、これらの場合、式(12)および式(13)に示すように、ストイキずれ量ΔAFstを用いてサブオフセット量εRおよびサブオフセット量εLを更新するものとしてもよい。
εR=εRini-ΔAFst (12)
εL=εLini+ΔAFst (13)
実施例では、エンジン22とプラネタリギヤ30とモータMG1,MG2とを備えるハイブリッド自動車20に搭載されるエンジン装置21の形態とした。しかしながら、エンジンと1つのモータとを備えるいわゆる1モータハイブリッド自動車に搭載されるエンジン装置の形態としてもよい。また、エンジンからの動力だけを用いて走行する自動車に搭載されるエンジン装置の形態としてもよい。さらに、建設設備などの移動しない設備に搭載されるエンジン装置の形態としてもよい。
実施例の主要な要素と課題を解決するための手段の欄に記載した発明の主要な要素との対応関係について説明する。実施例では、エンジン22が「エンジン」に相当し、浄化触媒136aが「浄化触媒」に相当し、下流側空燃比センサ154が「排気センサ」に相当し、エンジンECU24が「制御装置」に相当する。
なお、実施例の主要な要素と課題を解決するための手段の欄に記載した発明の主要な要素との対応関係は、実施例が課題を解決するための手段の欄に記載した発明を実施するための形態を具体的に説明するための一例であることから、課題を解決するための手段の欄に記載した発明の要素を限定するものではない。即ち、課題を解決するための手段の欄に記載した発明についての解釈はその欄の記載に基づいて行なわれるべきものであり、実施例は課題を解決するための手段の欄に記載した発明の具体的な一例に過ぎないものである。
以上、本発明を実施するための形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において、種々なる形態で実施し得ることは勿論である。