(57)【特許請求の範囲】
【請求項１】
排気空燃比に応じて排気中の酸素を取り込みあるいは放出する酸素ストレージ能力を有する第１触媒と、
この第１触媒の下流側に設置したリア空燃比センサと、
前記第１触媒上流の空燃比を検出する上流空燃比検出手段と、
吸入空気流量を検出する吸入空気流量検出手段と、
前記第１触媒の酸素ストレージ量が目標値となるように空燃比を制御する空燃比制御手段と、
所定条件が成立したときに燃料カットを行い、その後に別の所定条件の成立したときに燃料カットリカバーを行う燃料カット・燃料カットリカバー実行手段と、
前記リア空燃比センサが活性状態である第１の運転時における前記燃料カットリカバー時に第１リッチスパイク処理を行う第１リッチスパイク処理手段と、
この第１リッチスパイク処理時に、前記第１リッチスパイク処理の開始タイミングから前記第１リッチスパイク処理の終了タイミングまでの間の、前記上流空燃比検出手段により検出される第１触媒上流の空燃比と、前記吸入空気流量検出手段により検出される吸入空気流量とに基づいて、前記リア空燃比センサが活性状態でのリッチスパイク量である第１リッチスパイク量を算出する第１リッチスパイク量算出手段と、
前記第１リッチスパイク量より少ない値を、前記リア空燃比センサが非活性状態でありかつ前記第１触媒の温度が完全活性状態となる温度より低い場合のリッチスパイク量である第２リッチスパイク量として設定する第２リッチスパイク量設定手段と、
前記第１の運転停止後の前記リア空燃比センサが非活性状態でありかつ前記第１触媒の温度が完全活性状態となる温度より低い第２の運転時における前記燃料カットリカバー時に前記設定された第２リッチスパイク量を用いて第２リッチスパイク処理を行う第２リッチスパイク処理手段と
を備えることを特徴とするエンジンの空燃比制御装置。
【請求項２】
前記第２リッチスパイク量設定手段は、
前記第１リッチスパイク量に基づいてリッチスパイク量学習量を算出し、このリッチスパイク量学習量を前記第１の運転停止後もその値が消失しないように記憶するリッチスパイク量学習量記憶手段と、
前記第２リッチスパイク量を、前記リッチスパイク量学習量に基づいて設定する第２リッチスパイク量設定手段と
を備えることを特徴とする請求項１に記載のエンジンの空燃比制御装置。
【請求項３】
前記第１リッチスパイク量は、理論空燃比から前記上流空燃比検出手段により検出される第１触媒上流の空燃比を差し引いた値に前記吸入空気流量検出手段により検出される吸入空気流量を乗算した値を、前記第１リッチスパイク処理の開始タイミングから前記第１リッチスパイク処理の終了タイミングまでの間、所定時間毎に積算した値であることを特徴とする請求項１または２に記載のエンジンの空燃比制御装置。
【請求項４】
前記第１リッチスパイク処理の終了タイミングは、前記リア空燃比センサ出力がリーン出力からリッチ出力に切換わるタイミングであることを特徴とする請求項１から３までのいずれか一つに記載のエンジンの空燃比制御装置。
【請求項５】
前記第１触媒の温度を検出するかまたは推定する第１触媒温度検出・推定手段を備え、
前記第２リッチスパイク量を、前記第１温度検出・推定手段により検出されるかまたは推定される第１触媒の温度に応じて補正することを特徴とする請求項１または２に記載のエンジンの空燃比制御装置。
【請求項６】
排気空燃比に応じて排気中の酸素を取り込みあるいは放出する酸素ストレージ能力を有する第２触媒を前記リア空燃比センサの下流に備えると共に、
この第２触媒の温度を検出するかまたは推定する第２触媒温度検出・推定手段を備え、
前記第２リッチスパイク量を、前記第２温度検出・推定手段により検出されるかまたは推定される第２触媒の温度に応じてさらに補正することを特徴とする請求項５に記載のエンジンの空燃比制御装置。
【請求項７】
前記第２リッチスパイク量を前記第１触媒の劣化度合いに応じても補正することを特徴とする請求項５に記載のエンジンの空燃比制御装置。
【請求項８】
前記第１触媒の劣化度合いは、前記第１リッチスパイク量または前記リッチスパイク量学習量に基づいて推定することを特徴とする請求項７に記載のエンジンの空燃比制御装置。
【請求項９】
前記第２リッチスパイク量を、この第２リッチスパイク量を用いて行うリッチスパイク処理の直前に行われた燃料カット時間に応じて補正することを特徴とする請求項１または２に記載のエンジンの空燃比制御装置。
【請求項１０】
前記第１触媒上流の空燃比を検出する上流空燃比検出手段と、
吸入空気流量を検出する吸入空気流量検出手段と
を備え、
理論空燃比から前記上流空燃比検出手段により検出される第１触媒上流の空燃比を差し引いた値に前記吸入空気流量検出手段により検出される吸入空気流量を乗算した値を、前記第２リッチスパイク処理の開始タイミングから所定時間毎に積算し、その積算値が、前記第２リッチスパイク量と一致したとき、前記第２リッチスパイク処理を終了することを特徴とする請求項１または２に記載のエンジンの空燃比制御装置。
【請求項１１】
前記リア空燃比センサが非活性状態である場合に、前記第１触媒が非活性状態であるとき前記第２リッチスパイク処理を禁止することを特徴とする請求項１または２に記載のエンジンの空燃比制御装置。
【請求項１２】
排気空燃比に応じて排気中の酸素を取り込みあるいは放出する酸素ストレージ能力を有する第１触媒と、
この第１触媒の下流側に設置したリア空燃比センサと、
前記第１触媒上流の空燃比を検出する上流空燃比検出手段と、
吸入空気流量を検出する吸入空気流量検出手段と
を備え、
前記第１触媒の酸素ストレージ量が目標値となるように空燃比を制御する空燃比制御処理手順と、
所定条件が成立したときに燃料カットを行い、その後に別の所定条件の成立したときに燃料カットリカバーを行う燃料カット・燃料カットリカバー実行処理手順と、
前記リア空燃比センサが活性状態である第１の運転時における前記燃料カットリカバー時に第１リッチスパイク処理を行う第１リッチスパイク処理手順と、
この第１リッチスパイク処理時に、前記第１リッチスパイク処理の開始タイミングから前記第１リッチスパイク処理の終了タイミングまでの間の、前記上流空燃比検出手段により検出される第１触媒上流の空燃比と、前記吸入空気流量検出手段により検出される吸入空気流量とに基づいて、前記リア空燃比センサが活性状態でのリッチスパイク量である第１リッチスパイク量を算出する第１リッチスパイク量算出処理手順と、
前記第１リッチスパイク量より少ない値を、前記リア空燃比センサが非活性状態でありかつ前記第１触媒の温度が完全活性状態となる温度より低い場合のリッチスパイク量である第２リッチスパイク量として設定する第２リッチスパイク量設定処理手順と、
前記第１の運転停止後の前記リア空燃比センサが非活性状態でありかつ前記第１触媒の温度が完全活性状態となる温度より低い第２の運転時における前記燃料カットリカバー時にこの設定された第２リッチスパイク量を用いて第２リッチスパイク処理を行う第２リッチスパイク処理手順手段と
を含むことを特徴とするエンジンの空燃比制御方法。
【請求項１３】
前記第２リッチスパイク量設定処理手順は、
前記第１リッチスパイク量に基づいてリッチスパイク量学習量を算出し、このリッチスパイク量学習量を前記第１の運転停止後もその値が消失しないように記憶するリッチスパイク量学習量記憶処理手順と、
前記第２リッチスパイク量を、前記リッチスパイク量学習量に基づいて設定する第２リッチスパイク量設定処理手順と
を含むことを特徴とする請求項１２に記載のエンジンの空燃比制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はエンジンの空燃比制御装置及び空燃比制御方法に関するものである。
【背景技術】
【０００２】
三元触媒の下流にリアＯ2センサを備え、このリアＯ2センサが活性状態にあるのかそれとも非活性状態にあるのかをみて、リアＯ2センサが非活性状態にある場合には、燃料カットを許可するエンジン回転速度を、リアＯ2センサが活性状態にある場合より上昇させることで燃料カットが行われにくくし、これによってＮＯｘの抑制を図るようにしたものがある（特許文献１参照）。
【０００３】
三元触媒は、排気空燃比に応じて排気中の酸素を取り込みあるいは放出する酸素ストレージ能力を有し、ＨＣ、ＣＯに対しては酸素を与えることによって、またＮＯｘに対しては酸素を奪うことによって無害な物質へと変換するのであるが、燃料カットを解除して燃料供給を再開する燃料カットリカバー時にはＮＯｘが三元触媒により浄化されずに三元触媒の下流に排出されてしまうことがある。これは、ＮＯｘの浄化のためにはＮＯｘから酸素を奪うことであるが、燃料カット中に三元触媒に酸素が多量に吸着して飽和してしまうと、その状態の三元触媒ではＮＯｘから酸素を奪う余地がなくなり、ＮＯｘを還元できなくなるためである。そこで、上記特許文献１ではＮＯｘ排出の原因となる燃料カットが行われにくくなるようにしている。
【特許文献１】特開昭２００６−１８３５４３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、燃料カットは減速時のような出力が必要とされない運転条件において燃料供給を停止することにより燃費を向上させようとするものである。このため、上記特許文献１の技術のようにＮＯｘ抑制の観点のみから燃料カットが行われにくくするのでは、燃料カットによる燃費向上効果を抑制するものとなる。単に燃料カットを行う機会を制限するだけだと、排気性能の向上と燃費性能の向上とが両立しない。
【０００５】
そこで本発明は、排気性能へのはね返りを抑えつつも燃料カットが行われる頻度（時間）を高めて燃費性能の向上を図り得る空燃比制御装置及び空燃比制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、排気空燃比に応じて排気中の酸素を取り込みあるいは放出する酸素ストレージ能力を有する第１触媒と、この第１触媒の下流側に設置したリア空燃比センサと、前記第１触媒上流の空燃比を検出する上流空燃比検出手段と、吸入空気流量を検出する吸入空気流量検出手段とを備え、前記第１触媒の酸素ストレージ量が目標値となるように空燃比を制御し、所定条件が成立したときに燃料カットを行い、その後に別の所定条件の成立したときに燃料カットリカバーを行い、前記リア空燃比センサが活性状態である第１の運転時における前記燃料カットリカバー時に第１リッチスパイク処理を行い、この第１リッチスパイク処理時に、前記第１リッチスパイク処理の開始タイミングから前記第１リッチスパイク処理の終了タイミングまでの間の、前記上流空燃比検出手段により検出される第１触媒上流の空燃比と、前記吸入空気流量検出手段により検出される吸入空気流量とに基づいて、前記リア空燃比センサが活性状態でのリッチスパイク量である第１リッチスパイク量を算出し、前記第１リッチスパイク量より少ない値を、前記リア空燃比センサが非活性状態でありかつ前記第１触媒の温度が完全活性状態となる温度より低い場合のリッチスパイク量である第２リッチスパイク量として設定し、前記第１の運転停止後の前記リア空燃比センサが非活性状態でありかつ前記第１触媒の温度が完全活性状態となる温度より低い第２の運転時における前記燃料カットリカバー時にこの設定された第２リッチスパイク量を用いて第２リッチスパイク処理を行うように構成する。
【発明の効果】
【０００８】
本発明によれば、リア空燃比センサが非活性状態にある場合にもリア空燃比センサが活性状態にある場合と同様に燃料カットを行い、リア空燃比センサが非活性状態での燃料カットリカバー時に第２リッチスパイク処理を行うことによってリア空燃比センサが非活性状態での燃料カットリカバー時のＮＯｘ対策を施しているので、排気性能へのはね返りを抑えつつも燃料カットが行われる頻度（時間）が高まり燃費性能を向上させることができている。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施形態を図面に基づいて説明する。
【００１１】
図１は本発明の空燃比制御装置及び空燃比制御方法が適用されるエンジンの概略構成を示し、エンジン１の排気管２の上流にある排気マニホールドの集合部にマニ触媒３（第１触媒）が、またその下流の車両床下部に床下触媒４（第２触媒）がそれぞれ設けられ、マニ触媒３の上流にはリニアな特性のフロント空燃比センサ５（上流空燃比検出手段）が、マニ触媒３の下流かつ床下触媒４の上流にはリアＯ2センサ６（リア空燃比センサ）が設置され、これらセンサ出力に基づいてエンジン１に供給する燃料により燃焼室内に形成される混合気の空燃比を制御するエンジンコントローラ１１を備えている。
【００１２】
エンジン１の吸気管７にはスロットル弁８と、スロットル弁８により調整された吸入空気流量を測定するエアフローメータ９（吸入空気流量検出手段）を備える。
【００１３】
上記のマニ触媒３、床下触媒４はいわゆる三元触媒で、触媒雰囲気がストイキ（理論空燃比）のときにＮＯｘ、ＨＣ、ＣＯを最大効率で浄化する。すなわち、ＮＯｘからは酸素を奪って無害のＮ2へと還元し、ＨＣ、ＣＯには酸素を与えて酸化し無害のＨ2ＯやＣＯ2とする。マニ触媒３、床下触媒４は触媒担体にセリア等の酸素ストレージ材で被覆されており、流入する排気の空燃比に応じて酸素を保持したり、放出したりする能力（酸素ストレージ能力）を有している。
【００１４】
上記のフロント空燃比センサ５は排気中の酸素濃度に応じたリニアな出力特性をもち、上記のリアＯ2センサ６はストイキの付近で２値的に切換わる特性をもっている。なお、リアＯ2センサ６はこれに限られるものでなく、フロント空燃比センサ５と同じに排気中の酸素濃度に応じたリニアな出力特性を有するものでもかまわない。
【００１５】
また、マニ触媒３、床下触媒４にはマニ触媒の温度を検出する温度センサ１２（第１触媒温度検出手段）、床下触媒の温度を検出する温度センサ１３（第２触媒温度検出手段）が取付けられ、マニ触媒３、床下触媒４が完全活性状態にあるのかそれとも完全活性状態にないのかなどを判定するために用いられる。温度センサ１２、１３の取付位置としては触媒入口、触媒中央部、触媒出口などが考えられる。
【００１６】
エンジンコントローラ１１はマイクロプロセッサ、ＲＯＭ、ＲＡＭ、Ｉ／Ｏインターフェースなどで構成され、スロットル弁８上流のエアフローメータ９により検出される吸入空気流量と、クランク角センサ（３３、３４）により検出されるエンジン回転速度とに基づいて燃料噴射弁２１に与える燃料噴射パルス幅を算出するほか、エアフローメータ９と、フロント空燃比センサ５の出力に基づいて主にマニ触媒３の酸素ストレージ量を演算し、この酸素ストレージ量が目標値となるように空燃比をフィードバック制御する。演算した酸素ストレージ量が目標値より少ないときは、目標空燃比をリーン側にして保持量を増やし、逆に目標値よりも多いときはリッチ側にして酸素ストレージ量を減らし、これらにより目標値に一致させる。また、演算誤差により、演算された酸素ストレージ量と実際の酸素ストレージ量との間にずれを生じるが、リアＯ2センサ６の検出する酸素濃度に基づいて、例えばエンジンの燃料カット時などに、燃料カットに移行してから所定のタイミングで演算した酸素ストレージ量のリセットを行い、ずれを修正する。
【００１７】
なお、マニ触媒３の酸素ストレージ量の演算方法については特開２０００−１２０４７５号公報等に詳しいので、ここでは原理のみ簡単に述べる。
【００１８】
マニ触媒３上流の排気空燃比から換算して排気中の酸素の過剰または不足する割合である酸素過剰率が分かる。酸素過剰率はストイキのときをゼロとして、リーン側で正、リッチ側で負の値となる。
【００１９】
酸素過剰率とそのときの吸入空気流量とからマニ触媒３に吸収される酸素量または放出される酸素量が分かり、これを積算していくことでマニ触媒３の酸素ストレージ量を推定できる。マニ触媒３下流側の空燃比がリーン側のときは、マニ触媒３の酸素ストレージ量が飽和保持量に達しているときで、それ以上の酸素量の保持はできず、そのままマニ触媒３下流に流れる。この状態から空燃比がストイキよりもリッチ側になると、酸素の不足量に応じて保持酸素量は最大値から減っていく。マニ触媒３下流側の空燃比がリッチのときは、マニ触媒３の酸素ストレージ量がゼロのときであり、この状態から空燃比がリーン側になると、そのときの酸素過剰量に応じてマニ触媒３の酸素ストレージ量が増加していく。このようにして、ある運転状態を基準として、マニ触媒３の酸素ストレージ量を演算により求めることが可能で、これを積算していくことで、現在の酸素ストレージ量を演算により求めることができる。予めマニ触媒３の最大酸素ストレージ量を実験等により確認しておき、例えばその半分の保持量を目標値として設定し、酸素ストレージ量がこの目標値と一致するように空燃比を制御するのである。
【００２０】
ただし、エンジンの空燃比は運転条件による要求値があり、マニ触媒３を三元触媒として機能させるときは、ストイキ近傍に制御する必要があり、この運転状態で酸素ストレージ量を目標値に一致させるには、空燃比をストイキとするための公知のλ制御に対して、酸素ストレージ量の目標値からの偏差分に対応した値を補正値として付与することで、エンジン１の要求燃焼特性を満たしつつ、酸素ストレージ量を目標値に収束させられる。
【００２１】
これで原理の説明を終える。
【００２２】
一方、エンジンコントローラ１１では、所定条件が成立したとき（例えばアクセルペダルを離したときの回転速度が燃料カット回転速度以上であるとき）に燃料カットを行い（燃料供給を停止し）、その後に別の所定条件の成立したとき（例えば実際の回転速度が低下して燃料カットリカバー回転速度以下となったとき）に燃料カットを解除して燃料供給を再開する燃料カットリカバーの制御を行う。
【００２３】
この場合に、燃料カット時間が長いと、燃料カットリカバー時にＮＯｘがマニ触媒３により浄化されずにマニ触媒３の下流に排出されてしまう。これは、ＮＯｘの浄化のためにはマニ触媒３によりＮＯｘから酸素を奪うことであるが、燃料カット中にマニ触媒３に酸素が多量に吸着されて飽和してしまうと、その状態のマニ触媒３ではＮＯｘから酸素を奪う余地がなくなりＮＯｘを還元できなくなるためである。
【００２４】
このため、燃料カットが行われにくくする従来装置があるが、燃料カットは本来燃費を向上させるための技術であるため、ＮＯｘ排出の抑制のためとはいえ従来装置のように燃料カットが行われにくくしたのでは、燃費の向上代が低下してしまう。
【００２５】
そこで、エンジンコントローラ１１では、前回の運転時（第１の運転時）であってリアＯ2センサ６が活性状態での燃料カットリカバー時に第１リッチスパイク処理を行い、この第１リッチスパイク処理時にリアＯ2センサ６が活性状態でのリッチスパイク量である第１リッチスパイク量ＲＳＰ１を算出し、第１リッチスパイク量ＲＳＰ１と等しいかまたは第１リッチスパイク量ＲＳＰ１より少ない値を、リアＯ2センサ６が非活性状態でのリッチスパイク量である第２リッチスパイク量Ａとして設定し、今回の運転時（第２の運転時）であってリアＯ2センサ６が非活性状態での燃料カットリカバー時にこの設定された第２リッチスパイク量Ａを用いて第２リッチスパイク処理を行う。あるいは、前回の運転時（第１の運転時）であってリアＯ2センサ６が活性状態での燃料カットリカバー時に第１リッチスパイク処理を行い、この第１リッチスパイク処理時にリアＯ2センサ６が活性状態でのリッチスパイク量である第１リッチスパイク量ＲＳＰ１を算出し、この第１リッチスパイク量ＲＳＰ１に基づいてリッチスパイク量学習量Ｂを算出し、このリッチスパイク量学習量を前回の運転停止後もその値が消失しないように記憶し、今回の運転時（第２の運転時）にリアＯ2センサ６が非活性状態で前記リッチスパイク量学習量Ｂに基づいて、リアＯ2センサ６が非活性状態でのリッチスパイク量である第２リッチスパイク量Ａを設定し、今回の運転時であってリアＯ2センサ６が非活性状態での燃料カットリカバー時にこの設定された第２リッチスパイク量Ａを用いて第２リッチスパイク処理を行う。
【００２６】
このように、本発明では、リアＯ2センサ６が活性状態で燃料カットと燃料カットリカバー時のリッチスパイク処理を行うだけでなく、リアＯ2センサ６が非活性状態でも燃料カットと燃料カットリカバー時のリッチスパイク処理を行うものである。ここでは、リアＯ2センサ６が活性状態で行うリッチスパイク処理を「第１リッチスパイク処理」、これに対してリアＯ2センサ６が非活性状態で行うリッチスパイク処理を「第２リッチスパイク処理」と定義している。リッチスパイク処理そのものは、目標空燃比を一時的にストイキよりもリッチ空燃比に設定する処理のことである。
【００２７】
さらに述べると、本発明の考え方は次のようなものである。
【００２８】
まず第１に、リアＯ2センサ６が活性状態である状態で燃料カットリカバー時にマニ触媒３にストレージされている酸素量の全てが消費されるように第１リッチスパイク処理を行い、マニ触媒３の酸素ストレージ量がゼロとなるようにする。そのためには、リアＯ2センサ出力をみていればよく、センサ出力がリーン出力からリッチ出力に切換わるタイミングでマニ触媒３の酸素ストレージ量がゼロとなったと判断できる。
【００２９】
この第１リッチスパイク処理時にマニ触媒３の酸素ストレージ量がゼロとなるときのリッチスパイク量ＲＳＰ１を算出する。リッチスパイク量ＲＳＰ１としては、１４．７（ストイキ）からフロント空燃比センサ５により検出されるリア触媒上流の空燃比を差し引いた値にエアフローメータ９により検出される吸入空気流量Ｑａを乗算した値を、第１リッチスパイク処理の開始タイミングから第１リッチスパイク処理の終了タイミングまでの間、所定時間毎に積算した値を採用する。
【００３０】
そして、このリッチスパイク量（このリッチスパイク量を改めて「第１リッチスパイク量」とする。）ＲＳＰ１は、第２リッチスパイク処理の終了タイミングの判定に用いる。すなわち、目標当量比をリッチ側の値（例えば１．２）に設定して第２リッチスパイク処理を開始すると共に、１４．７からフロント空燃比センサ５により検出されるフロント触媒上流の空燃比を差し引いた値にエアフローメータ９により検出される吸入空気流量Ｑａを乗算した値を、第２リッチスパイク処理の開始タイミングから所定時間毎に積算し、その積算値が、上記の第１リッチスパイク量ＲＳＰ１と一致したとき、第２リッチスパイク処理を終了させることで、リアＯ2センサ６が非活性状態であっても、第２リッチスパイク処理時と第１リッチスパイク処理時とでマニ触媒３の活性状態が変わらない限りにおいて、第２リッチスパイク処理時にマニ触媒３の酸素ストレージ量がゼロとなるようにすることができる。
【００３１】
しかしながら、実際には、第２リッチスパイク処理時と第１リッチスパイク処理時とではマニ触媒３の活性状態が相違し、例えば第２リッチスパイク処理時にはマニ触媒温度が完全活性状態となる温度より低くその分だけマニ触媒３の最大酸素ストレージ量が、マニ触媒が完全活性状態にある場合（つまり第１リッチスパイク処理時）の最大酸素ストレージ量より減少していることが考えられる。このときにも目標当量比をリッチ側の値（例えば１．２）に設定して第２リッチスパイク処理を開始すると共に、１４．７からフロント空燃比センサ５により検出されるフロント触媒上流の空燃比を差し引いた値にエアフローメータ９により検出される吸入空気流量Ｑａを乗算した値を、第２リッチスパイク処理の開始タイミングから所定時間毎に積算し、その積算値が第１リッチスパイク量ＲＳＰ１と一致したとき、第２リッチスパイク処理を終了させるのでは、第１リッチスパイク量ＲＳＰ１が実際より大きくなっている分だけ、第２リッチスパイク処理期間を長引かせてしまい、つまり完全活性状態となる温度より低いマニ触媒３ではマニ触媒３のストレージ酸素量はすでにゼロとなっているのになおＨＣ、ＣＯを供給していることになってしまう。
【００３２】
そこで、第１リッチスパイク量ＲＳＰ１をそのまま第２リッチスパイク処理時に用いるのではなく、第１リッチスパイク量ＲＳＰ１に基づいて、第２リッチスパイク処理時のマニ触媒２の活性状態に合わせたリッチスパイク量（このリッチスパイク量を「第２リッチスパイク量」とする。）Ａを設定する必要がある。
【００３３】
このため、第１リッチスパイク量ＲＳＰ１に基づいてリッチスパイク量学習値Ｂを算出し、そのリッチスパイク量学習量Ｂを前回の運転停止後もその値が消失しないように記憶させておき、次回の運転時にリアＯ2センサ６が非活性状態でのリッチスパイク量である第２リッチスパイク量Ａを、前回の運転時に得ている第１リッチスパイク量ＲＳＰ１またはリッチスパイク量学習量Ｂに基づいて設定し、その設定した第２リッチスパイク量Ａを用いてリアＯ2センサ６が非活性状態での燃料カットリカバー時に第２リッチスパイク処理を行わせ、マニ触媒３が完全活性状態にない場合でも、マニ触媒３のストレージ酸素量がゼロとなるようにする。
【００３４】
このように構成することで、リアＯ2センサ６が非活性状態である場合においても、リアＯ2センサ６が活性状態である場合と同じにリッチスパイク処理を行わせることが初めて可能となったのであり、これにより、リアＯ2センサ６が非活性状態である場合においても燃料カットを行わせて燃費性能を向上させ、かつ燃料カットリカバー時に第２リッチスパイク処理を行うことによってＮＯｘを抑制することも可能となったのである。
【００３５】
ただし、マニ触媒３には経時劣化（熱劣化）が生じるので、マニ触媒３の劣化状態に応じた適切な第２リッチスパイク量Ａを設定できるようにする。また、床下触媒４が完全活性状態にないときやマニ触媒３の酸素ストレージ量が最大値に到達する前に燃料カットが終了するときにも、適切な第２リッチスパイク量Ａを設定できるようにする。
【００３６】
エンジンコントローラ１１で行われるこの制御を図２〜図８を用いてさらに説明する。
【００３７】
図２は冷間始動時からの変化を左半分に、その後にエンジンを停止し暫く経過して再始動したときの変化を右半分に示している。冷間始動であるためマニ触媒３、リアＯ2センサ６、床下触媒４はいずれもｔ１のタイミングでの始動直後に非活性状態にあり、排気管２の上流にあるマニ触媒３がまずｔ２のタイミングで活性状態となり、それより少し遅れたｔ３のタイミングでリアＯ2センサ６が活性状態となり、その直後のｔ４のタイミングで床下触媒４が活性状態となっている。また、ｔ５のタイミングでエンジンを停止し、時間が暫く経過した後のｔ６のタイミングではマニ触媒３、リアＯ2センサ６、床下触媒４がいずれも非活性状態に戻っているが、ｔ７のタイミングで再びマニ触媒３が活性状態となり、続いてｔ８のタイミングで床下触媒４が、ｔ９のタイミングでリアＯ2センサ６が活性状態となっている。このように、エンジン冷間始動からの活性化の順としては、マニ触媒３が最初で、次はリアＯ2センサ６と床下触媒４のいずれかとなる。
【００３８】
この場合に、リアＯ2センサ６が活性状態となっている期間であるｔ３〜ｔ５をリッチスパイク量学習領域として定める。このリッチスパイク量学習領域では、第１リッチスパイク処理を行い、この第１リッチスパイク処理時にマニ触媒３にストレージ可能な最大酸素量を消費するために必要な第１リッチスパイク量ＲＳＰ１を算出し、その求めた第１リッチスパイク量ＲＳＰ１に基づいてリッチスパイク量学習量Ｂを算出し、そのリッチスパイク量学習量Ｂを記憶しておく。
【００３９】
そして、リッチスパイク量学習量を求めたのが前回の運転時であるとすると、今回の運転時において、リアＯ2センサ６が非活性状態にある期間であるｔ６〜ｔ９を、前記記憶しているリッチスパイク量学習量Ｂの反映領域として定める。このリッチスパイク量学習量Ｂの反映領域では、前回の運転時に得ているリッチスパイク量学習量Ｂに基づいて、学習量反映領域で用いる第２リッチスパイク量Ａを決定し、この第２リッチスパイク量Ａを用いて学習量反映領域での燃料カットリカバー時に第２リッチスパイク処理を行う。
【００４０】
次に、リッチスパイク量の学習領域でリッチスパイク量学習量Ｂを算出する方法を図３を用いて説明する。図３はリアＯ2センサ６の活性状態で車両が所定の走行モードに従って走行したときの目標当量比、マニ触媒３上流の空燃比（図では「上流Ａ／Ｆ」で略記）、リアＯ2センサ出力、マニ触媒３の酸素ストレージ量、床下触媒４の酸素ストレージ量、吸入空気流量の各変化を表している。
【００４１】
上記の走行モードには図３最上段に示したように車両の加速、減速が含まれ、減速時に燃料カットとそれに引き続く燃料カットリカバーとが行われる。具体的には、図３第２段目に示したように燃料噴射時に目標当量比は１．０に設定されストイキ（理論空燃比）での運転が行われる。例えば燃料カット開始タイミングのｔ１で目標当量比が１．０からゼロに切換えられて燃料供給が遮断され、燃料カットの終了タイミングのｔ２で目標当量比がゼロから１．０より大きな値（例えば１．２）へと切換えられることで燃料噴射の再開（燃料カットリカバー）と同時に第１リッチスパイク処理が行われる。目標当量比がゼロである期間（ｔ１〜ｔ２）が燃料カット時間、目標当量比が１．０より大きな値（例えば１．２）となっている期間（ｔ２〜ｔ３）が第１リッチスパイク処理期間である。ｔ３以後も燃料カットがあるたびに燃料カットリカバー時に第１リッチスパイク処理が行われる。
【００４２】
ここでは、第１リッチスパイク処理を目標当量比を１．０より大きな値に設定することによって実行する場合で示しているが、これに限られるものでなく、空燃比フィードバック補正係数αによって第１リッチスパイク処理を行うようにしてもかまわない。
【００４３】
こうした目標当量比の変化に対してマニ触媒上流の空燃比は、図３第３段目に示したように燃料噴射中はストイキにあり、目標当量比がゼロとなっている燃料カット中には無限大に向かって発散し、目標当量比が１．２となっている第１リッチスパイク処理中には１４．７（ストイキ）より小さな所定値を維持し、第１リッチスパイク処理の終了によってストイキに戻る。
【００４４】
マニ触媒３の酸素ストレージ量は、図３第５段目に示したように燃料カット前にはほぼ目標値（例えば５０％）にあり、ｔ１からの燃料カット中に増えて最大値である１００％に到達した後に１００％に張り付く。その後、ｔ２からの第１リッチスパイク処理の開始によるＨＣ、ＣＯの供給でマニ触媒３内のストレージ酸素が消費（脱離）されるため、減少側に向かって移動し、ｔ３のタイミングでマニ触媒３の酸素ストレージ量は最小値であるゼロになり、マニ触媒３の酸素ストレージ量がゼロになるｔ３のタイミングで第１リッチスパイク処理が終了する。すると、目標当量比の１．０への切換により空燃比はストイキに戻されるため、マニ触媒３の酸素ストレージ量は再び増加側に向かい、目標値の付近に落ち着く。マニ触媒３の酸素ストレージ量はｔ３以後も燃料カットと第１リッチスパイク処理とがあるたびに同様の変化を繰り返している。これに対して、床下触媒酸素ストレージ量の変化は、図３第６段目に示したようにマニ触媒酸素ストレージ量の変化より少し遅れて生じている。
【００４５】
こうしたマニ触媒３の酸素ストレージ量の変化に対し、リアＯ2センサ出力は次のように変化する。すなわち、図３第４段目に示したようにリアＯ2センサ出力はｔ１からの燃料カットの開始によって急激に小さな値（リーンを示す）へと変化し、第１リッチスパイク処理の終了タイミングであるｔ３より少し手前で再び大きくなって少しオーバーシュートしてリッチの値を示した後に所定値（ストイキを示す）に落ち着いている。
【００４６】
図３最下段には、
ａ１＝｛（１４．７−第１リッチスパイク処理時空燃比）×排気流量｝の積算値
…（１）
の変化を示している。この（１）式は、次の式の一部である。
【００４７】
ａ２＝｛（１４．７−第１リッチスパイク処理時空燃比）×排気流量×Ｋ｝
の積算値
…（２）
ただし、Ｋ：比例定数で、マニ触媒のストレージ酸素量への換算係数
（２）式のａ２は第１リッチスパイク処理開始タイミングを起点として第１リッチスパイク処理によってマニ触媒３から脱離されるであろう酸素量を表している。すなわち、空燃比が１４．７（ストイキ）にあれば、マニ触媒３にストレージされている酸素量は目標値に保たれるため増えもしなれば減りもしないのであるが、第１リッチスパイク処理によって空燃比がストイキよりもリッチ側になるほどＨＣ、ＣＯが多くなり、これらの酸化にマニ触媒３のストレージ酸素が奪われるためにマニ触媒３にストレージされている酸素の減少量が大きくなる。言い替えると、マニ触媒３のストレージ酸素量の減少量は空燃比がストイキより外れる分である（１４．７−第１リッチスパイク処理時空燃比）に比例する。また、第１リッチスパイク処理によるＨＣ、ＣＯの供給量は排気流量に比例し、排気流量が大きいほどＨＣ、ＣＯの供給量が多くなってマニ触媒３のストレージ酸素量の減少量が大きくなる、つまりマニ触媒３のストレージ酸素量の減少量は排気流量に比例する。排気流量は所定時間当たりの排気量であるから、比例定数をＫとすれば、所定時間当たりのストレージ酸素量の減少量ΔＧＥＮは、
ΔＧＥＮ＝（１４．７−第１リッチスパイク処理時空燃比）×排気流量×Ｋ
となり、所定時間毎にこの減少量ΔＧＥＮを算出し、この算出した減少量ΔＧＥＮを所定時間毎に積算すれば、その積算値、つまり（２）式のａ２により第１リッチスパイク処理によってマニ触媒３から脱離されるであろう酸素量を推定することができる。
【００４８】
ここで、（２）式右辺の比例定数Ｋは一定であると考えれば、比例定数Ｋは考えなくてもよくなるので、（２）式に代えて上記（１）式を用いることができる。上記（１）式では比例定数Ｋを考えていないので、上記（１）式のａ１は、第１リッチスパイク処理によってマニ触媒３から脱離されるであろう酸素量相当値を表すこととなる。
【００４９】
上記（１）式右辺を計算するには、第１リッチスパイク処理時の空燃比と排気流量とを所定時間毎に検出することが必要である。ここで、第１リッチスパイク処理時空燃比はマニ触媒上流の空燃比センサ５により検出するか目標当量比に基づいて推定すればよい。また、排気流量としてはエアフローメータ９により検出される吸入空気流量Ｑａで代用すればよい。
【００５０】
上記（１）式右辺の計算開始タイミングは、第１リッチスパイク処理の開始タイミング、つまり燃料カットリカバー時である。
【００５１】
上記（１）式右辺の計算終了タイミングはリアＯ2センサ出力がリーン出力からリッチ出力に切換わるタイミングである。これは例えばリアＯ2センサ出力とスライスレベルＳＬを比較し、リアＯ2センサ出力がスライスレベルＳＬを横切って大きくなったとき、リアＯ2センサ出力がリーン出力からリッチ出力に切換わるタイミングとなったと判定する。この場合に、リアＯ2センサ出力がリーン出力からリッチ出力に切換わるタイミングは、図３ではマニ触媒酸素ストレージ量が最小値の０％になるタイミングと一致させている。この理由は、これ以上はマニ触媒３からストレージ酸素を脱離できないため、言い替えると第１リッチスパイク処理は、マニ触媒３から全てのストレージ酸素を脱離させることを目的として行うものであるためである。図３ではスライスレベルＳＬは、ストイキよりリーン側にある。
【００５２】
そこで、第１リッチスパイク処理開始タイミングよりリアＯ2センサ出力がリーン出力からリッチ出力に切換わるタイミングまで所定時間毎に「（１４．７−第１リッチスパイク処理時空燃比）×排気流量」を算出して積算した値を計算する。本発明ではこの計算した値を第１リッチスパイク量ＲＳＰ１として定義する。この第１リッチスパイク量ＲＳＰ１は、リアＯ2センサが活性状態でのリッチスパイク量である。ここで、排気流量の単位は通常例えば［ｇ／ｓｅｃ］であるが、ここでは所定時間毎で考えるので排気流量の単位は単に［ｇ］で表すことができる。また、空燃比の単位は［無名数］である。すると、第１リッチスパイク量は全体として［ｇ］単位となる。
【００５３】
本発明では、リアＯ2センサが非活性状態でのリッチスパイク量である第２リッチスパイク量Ａを設定する際に、この第１リッチスパイク量ＲＳＰ１が必要となるので、この第１リッチスパイク量ＲＳＰ１をそのままリッチスパイク量学習量Ｂとして算出するかまたは第１リッチスパイク量ＲＳＰ１を複数個求めたあと、その平均値をリッチスパイク量学習量Ｂとして算出し、算出したリッチスパイク量学習量Ｂは記憶させる。
【００５４】
ところで、マニ触媒３、床下触媒４は経時劣化（熱劣化）し、経時劣化によっていずれも酸素ストレージ量が減る方向に向かう。図３において各触媒新品時の酸素ストレージ量を実線で、各触媒経時劣化後の酸素ストレージ量を破線で示している。経時劣化によってマニ触媒３の酸素ストレージ量は触媒新品時より減るのであるから、リアＯ2センサ出力がリーン出力からリッチ出力に切換わるタイミングも早まることとなる。マニ触媒３が経時劣化すると、第１リッチスパイク量ＲＳＰ１が、従ってリッチスパイク量学習量Ｂが減る。
【００５５】
さて、今回の運転時にリアＯ2センサ６が非活性状態で燃料カットが行われたとき、リアＯ2センサ６が非活性状態でのリッチスパイク量である第２リッチスパイク量Ａを、前回の運転時に得ている第１リッチスパイク量ＲＳＰ１やリッチスパイク量学習量Ｂに基づいて設定し、その直後の燃料カットリカバー時にこの設定された第２リッチスパイク量Ａを用いて第２リッチスパイク処理を行う。
【００５６】
第２リッチスパイク量Ａとしては、例えばリッチスパイク量学習量Ｂを、マニ触媒温度Ｔｍａｎｉ、床下触媒温度Ｔｙｕｋａ、燃料カット終了時のマニ触媒３の酸素ストレージ量相当値により補正して決定する。具体的には第２リッチスパイク量Ａを次式により計算する。
【００５７】
Ａ＝Ｂ×ＨＯＳ１×ＨＯＳ２×ＨＯＳ３                    …（３）
ただし、Ｂ：リッチスパイク量学習量
ＨＯＳ１：マニ触媒温度補正係数
ＨＯＳ２：床下触媒温度補係数
ＨＯＳ３：燃料カットによる補正係数
ここで、（３）式の２つの温度補正係数ＨＯＳ１、ＨＯＳ２はマニ触媒３、床下触媒４が完全活性状態にない場合を、燃料カットによる補正係数ＨＯＳ３はマニ触媒３の酸素ストレージ量が最大値に到達する前に燃料カットが終了する場合を考慮するものである。
【００５８】
まず図４にマニ触媒温度補正係数ＨＯＳ１の特性を示す。マニ触媒温度補正係数ＨＯＳ１は、図４の太実線に示したように１を中心とする１以下の値で、第１所定値Ｔｍ１から第２所定値Ｔｍ２の間でマニ触媒温度Ｔｍａｎｉが低くなるほどゼロに向けて小さくなり、マニ触媒温度Ｔｍａｎｉが第２所定値Ｔｍ２より低いときゼロとなる。ここで、第１所定値Ｔｍ１はマニ触媒３が完全に活性状態となる温度、第２所定値Ｔｍ２はマニ触媒３が完全に非活性状態となる温度で、その間はマニ触媒３の一部が活性状態となっている遷移領域である。
【００５９】
遷移領域であるＴｍ１〜Ｔｍ２の温度範囲でマニ触媒温度Ｔｍａｎｉが低くなるほどマニ触媒温度補正係数ＨＯＳ１が小さくなるように設定しているのは、マニ触媒３の最大酸素ストレージ量がマニ触媒温度Ｔｍａｎｉに依存し、第１所定値Ｔｍ１よりマニ触媒温度Ｔｍａｎｉが低下するほどマニ触媒３の最大酸素ストレージ量が減るので、これに合わせたものである。
【００６０】
マニ触媒温度Ｔｍａｎｉが第２所定値Ｔｍ２より低い温度域ではマニ触媒３が完全に非活性状態となり酸素ストレージ能力を有しない。このときには第２リッチスパイク処理を行う必要がないので、マニ触媒温度補正係数ＨＯＳ１はゼロである。マニ触媒温度補正係数ＨＯＳ１がゼロであると、上記（３）式より第２リッチスパイク量Ａはゼロとなり、第２リッチスパイク処理は行われない。
【００６１】
ここではマニ触媒温度Ｔｍａｎｉは温度センサ１２により検出しているが、エンジンの運転条件（負荷と回転速度）に基づいて推定するようにしてもかまわない。
【００６２】
次に、図４において太実線がマニ触媒３の新品時のマニ触媒温度補正係数の特性であるとすると、マニ触媒３が経時劣化したときのマニ触媒温度補正係数の特性は破線特性（あるいは細実線特性）として表すことができる。つまり、マニ触媒３が経時劣化したときにはマニ触媒新品時のマニ触媒温度補正係数の特性を右方向に所定のシフト量ΔＴだけ平行移動してやればよいことが分かっている。なぜなら、今、マニ触媒温度Ｔｍａｎｉが所定値Ｔｍ３である場合で考えてみると、マニ触媒３の劣化状態でのマニ触媒温度補正係数（ｈｏｓ２）のほうが、マニ触媒新品時のマニ触媒温度補正係数（ｈｏｓ１）より小さくなり、従って上記（３）式より第２リッチスパイク量Ａがマニ触媒新品時より小さくなる。これは、マニ触媒３が劣化するとマニ触媒酸素ストレージ量が減少し、従ってマニ触媒劣化時の第２リッチスパイク量はマニ触媒新品時の第２リッチスパイク量より小さくてよいことと一致している。実際にはマニ触媒３の経時劣化後の波形はマニ触媒新品時の波形を右方向に正確に平行移動したものとはならないが、近似できる範囲内であるのでこう考えても問題ない。
【００６３】
図５は上記シフト量ΔＴの特性図である。図４においてマニ触媒新品時のマニ触媒温度補正係数の特性（太実線の特性）を基準とし、マニ触媒３の劣化程度に応じた所定のシフト量ΔＴだけマニ触媒温度補正係数を右側にシフトするには、マニ触媒３の劣化程度を検出する必要がある。マニ触媒３は経時劣化するほどマニ触媒の最大酸素ストレージ量が減少し、従ってリアＯ2センサ出力がリーン出力からリッチ出力に切換わるタイミングが早まる。ということは、マニ触媒３の劣化程度は上記の第１リッチスパイク量ＲＳＰ１あるいはリッチスパイク量学習量Ｂに現れることを意味する。言い替えると、リッチスパイク量学習量Ｂがマニ触媒新品時の値である所定値Ｂ０より小さくなるほどマニ触媒３の劣化度合が大きいことを表すので、図５に示したようにリッチスパイク量学習量Ｂがマニ触媒新品時の値である所定値Ｂ０のときゼロとし、リッチスパイク量学習量Ｂがマニ触媒新品時の値である所定値Ｂ０より小さくなるほど（つまりマニ触媒３の劣化度合が大きいほど）、シフト量ΔＴ（図４における右側への平行移動量）を大きくしている。
【００６４】
図６は床下触媒温度補正係数ＨＯＳ２の特性図である。図６において、床下触媒温度補正係数ＨＯＳ２も１を中心とする１以下の値で、第１所定値Ｔｙ１より第２所定値Ｔｙ２の間で床下触媒温度Ｔｙｕｋａが低下するほど小さくなり、床下触媒温度Ｔｙｕｋａが第２所定値Ｔｙ２より低くなるとほぼ一定値（例えば０．５）となる。ここで、第１所定値Ｔｙ１は床下触媒４が完全に活性状態となる温度、第２所定値Ｔｙ２は床下触媒４が完全に非活性状態となる温度で、その間は床下触媒４の一部が活性状態となっている遷移領域である。
【００６５】
第２リッチスパイク処理においても、マニ触媒３のストレージ酸素が全てなくなるよう第２リッチスパイク量Ａを定めているのであるが、燃料噴射弁２１の流量特性のバラツキ等により、マニ触媒３のストレージ酸素量の全てを脱離させた状態でマニ触媒３内にＨＣ、ＣＯが余ることがある。これら余剰のＨＣ、ＣＯはマニ触媒３の下流にそのまま出てくる。このとき、床下触媒４が非活性状態にあるとこの余剰のＨＣ、ＣＯを浄化できないので、床下触媒４が非活性状態にあるときには第２リッチスパイク量Ａを小さくして燃料噴射弁２１の流量特性のバラツキがあっても、マニ触媒３からＨＣ、ＣＯが洩れ出ないようにする必要がある。そこで、図６に示したように、床下触媒４が完全に活性状態となる温度である第１所定値Ｔｙ１を外れて、床下触媒温度Ｔｙｕｋａが小さくなると、床下触媒温度補正係数ＨＯＳ２を１より小さい値にし、第２リッチスパイク量Ａを床下触媒４が完全に活性状態にあるときの値より小さくすることで、燃料噴射弁２１の流量特性のバラツキ等があっても、マニ触媒３からＨＣ、ＣＯが洩れ出ないようにしている。
【００６６】
ただし、床下触媒４が完全に活性状態にある温度（Ｔｙ１）にないからといって床下触媒温度補正係数ＨＯＳ２をゼロとし、第２リッチスパイク処理を中止してしまったのでは、リアＯ2センサ６が非活性状態での燃料カットリカバー時のＮＯｘを抑制できないことになってしまうので、床下触媒が完全に活性状態にない場合（Ｔｙ２以下の温度域）でも、床下触媒温度補正係数ＨＯＳ２の最小値ＨＯＳ２０をほぼ０．５程度にとどめ、少しは第２リッチスパイク処理を行う（つまり第２リッチスパイク処理期間を縮める）ことによって、マニ触媒３からＨＣ、ＣＯが洩れ出ないようにしつつリアＯ2センサ６が非活性状態での燃料カットリカバー時のＮＯｘを抑制するようにしている。
【００６７】
ここでは床下触媒温度Ｔｙｕｋａは温度センサ１３により検出しているが、エンジンの運転条件（負荷と回転速度）に基づいて推定するようにしてもかまわない。
【００６８】
図７は燃料カットによる補正係数の特性図である。図７において燃料カットによる補正係数ＨＯＳ３も１を中心とする１以下の値で、燃料カットによる補正係数ＨＯＳ３は燃料カット終了タイミングでのマニ触媒酸素ストレージ量相当値が所定値Ｃより小さくなるほど小さくなる。ここで、所定値Ｃはリッチスパイク量学習量Ｂにマニ触媒温度補正係数ＨＯＳ１を乗算した値である。
【００６９】
燃料カットによる補正係数ＨＯＳ３を導入した理由は次の通りである。すなわち、燃料カット終了タイミングではマニ触媒３の酸素ストレージ量が最大値である１００％に到達していることを前提としているのであるが、実際の燃料カット時間が基準の燃料カット時間より短かくて燃料カット終了タイミングでマニ触媒３の酸素ストレージ量が１００％に到達していないのに燃料カットが終了することがある。このときにも、マニ触媒３の酸素ストレージ量が最大値の１００％に到達しているものとしてそのまま第２リッチスパイク量Ａを与えたのでは、マニ触媒３の酸素ストレージ量が１００％に足りていなかった分だけ第２リッチスパイク量Ａが過多（つまりＨＣ、ＣＯの供給過多）となる。そこで、これを防止するため実際に燃料カット終了タイミングでのマニ触媒酸素ストレージ量相当値を算出し、その算出値が、リッチスパイク量学習量Ｂにマニ触媒温度補正係数ＨＯＳ１を乗算した値である所定値Ｃより少ない（つまりマニ触媒３の酸素ストレージ量が最大値である１００％に到達していない）ときには、燃料カットによる補正係数ＨＯＳ３を１より小さくして、第２リッチスパイク量Ａを減量補正し、ＨＣ、ＣＯの供給過多とならないようにするものである。
【００７０】
燃料カット終了タイミングでのマニ触媒の酸素ストレージ量相当値としては燃料カット中の吸入空気流量Ｑａの積算値を用いる。
【００７１】
次に、リッチスパイク量学習量Ｂを得たのが前回の運転時であったとして、図８は今回の運転時であって冷間始動からの時間がそれほど経過しておらずリアＯ2センサ６が非活性状態にあるときの変化を表している。ただし、車速の変化が図３の場合と相違している。本来なら図３と同じ走行モードで比較したいのであるが、波形が複雑になるので、ここでは、本発明の第２リッチスパイク処理がどのように行われるのかを明確に示すため車速の変化は単純なものとしている。
【００７２】
図８において今回の運転がｔ０より開始されると、排気マニホールド集合部に設けられているマニ触媒３の温度上昇は図８下から２段目に示されるように比較的早く、これに対して床下触媒４の温度上昇は図８最下段に示されるようにマニ触媒３より遅れて生じる。
【００７３】
マニ触媒３の温度上昇の途中であるｔ１のタイミングで運転開始後１回目の燃料カットが開始され、ｔ２のタイミングで燃料カットリカバー時になっているが、ｔ２の燃料カットリカバー時に第２リッチスパイク処理は開始されていない。これは、マニ触媒３が完全非活性状態にあるため（Ｔｍａｎｉ＜Ｔｍ２）、図４よりマニ触媒温度補正係数ＨＯＳ１＝０となり、上記（３）式より第２リッチスパイク量Ａ＝０となるためである。
【００７４】
図８第６段目に示したように、マニ触媒３が一部活性状態に入るｔ３のタイミング（Ｔｍａｎｉ＝Ｔｍ２）よりマニ触媒温度補正係数ＨＯＳ１がゼロから立ち上がり、マニ触媒３が完全に活性状態となるｔ４のタイミング（Ｔｍａｎｉ＝Ｔｍ１）でマニ触媒温度補正係数ＨＯＳ１は１に落ち着く。これを受けて第２リッチスパイク量Ａは図８第５段目に示したように、ｔ３のタイミングでゼロから立ち上がり、ｔ４のタイミングで一定値（＝Ｂ×ＨＯＳ２０）に落ち着く。
【００７５】
ｔ５のタイミングで２回目の燃料カットが開始され、ｔ６のタイミングでそのときの第２リッチスパイク量Ａを用いて第２リッチスパイク処理が開始される。このとき、つまり第２リッチスパイク処理の開始タイミングであるｔ６より次の式の計算が開始される。
【００７６】
ｂ１＝｛（１４．７−第２リッチスパイク処理時空燃比）×排気流量｝の積算値
…（４）
この（４）式は上記（１）式と比較すれば分かるように、違いは（１）式で「第１リッチスパイク処理」となっていたところが（４）式では「第２リッチスパイク処理」となっている点だけである。すなわち、（４）式の計算値ｂ１は、第２リッチスパイク処理によってマニ触媒３から脱離されるであろう酸素量相当値を表している。そして、（４）式の計算値ｂ１が第２リッチスパイク量Ａと等しくなるｔ７のタイミングで、マニ触媒３にストレージされている酸素量の全てが脱離したと判断し第２リッチスパイク処理を終了する。
【００７７】
図８下から第３段目に示したように、床下触媒４が一部活性状態に入るｔ８のタイミング（Ｔｙｕｋａ＝Ｔｙ２）より床下触媒温度補正係数ＨＯＳ２が立ち上がり、床下触媒４が完全に活性状態となるｔ９のタイミング（Ｔｙｕｋａ＝Ｔｙ１）で床下触媒温度補正係数ＨＯＳ２は１に落ち着く。これを受けて第２リッチスパイク量Ａは図８第５段目に示したようにさらに立ち上がり、ｔ９のタイミングで一定値（＝Ｂ）に落ち着く。
【００７８】
ｔ１０のタイミングで３回目の燃料カットが開始され、ｔ１１のタイミングでそのときの第２リッチスパイク量Ａ（＝リッチスパイク量学習量Ｂ）を用いて第２リッチスパイク処理が開始される。すなわち、第２リッチスパイク処理の開始タイミングであるｔ１１より、上記（４）式の計算が開始され、上記（４）式の計算値ｂ１が第２リッチスパイク量Ａ（＝Ｂ）と等しくなるｔ１２のタイミングで、マニ触媒３にストレージされている酸素量の全てが脱離したと判断し第２リッチスパイク処理を終了する。
【００７９】
言い替えると、ｔ９以降ではマニ触媒３及び床下触媒４の活性状態は、図３と変わらなくなる。ということは、図３ではマニ触媒３のストレージ酸素量の全てが脱離されたタイミングでの上記（１）式の計算値ａ１が第１リッチスパイク量ＲＳＰ１（＝リッチスパイク量学習量Ｂ）とされているのであるから、図８においてマニ触媒３及び床下触媒４の活性状態が図３と変わらなくなった場合に、上記（４）式の計算値ｂ１が第２リッチスパイク量Ａ（＝リッチスパイク量学習量Ｂ）と一致したときマニ触媒３のストレージ酸素量の全てが脱離されているものと推定できることとなる。図３におけるようにリアＯ2センサ６が活性状態となっていれば、リアＯ2センサ出力がリーン出力からリッチ出力に切換わるタイミングでマニ触媒３のストレージ酸素量の全てが脱離されたと判定できるが、図８におけるようにリアＯ2センサ６が不活性状態であるときには、リアＯ2センサ６を用いては、マニ触媒３のストレージ酸素量の全てが脱離されたか否かの判定（第２リッチスパイク処理の終了判定）を行うことができない。しかしながら、本発明では、リアＯ2センサ６が不活性状態である場合における、マニ触媒３のストレージ酸素量の全てが脱離されたか否かの判定を、上記（４）式の計算値ｂ１が第２リッチスパイク量Ａ（＝リッチスパイク量学習量Ｂ）と一致したか否かにより行うようにしているので、リアＯ2センサ６が不活性状態であっても第２リッチスパイク処理の終了判定を精度良く行うことができるのである。
【００８０】
ｔ１３のタイミングで４回目の燃料カットが開始され、ｔ１４のタイミングでそのときの第２リッチスパイク量Ａを用いて第２リッチスパイク処理が開始される。
【００８１】
ただし、ｔ１４のタイミング前後で第２リッチスパイク量Ａが、ｔ１１のタイミングでの第２リッチスパイク量Ａより所定値だけ小さくなっている。これは、４回目の燃料カットでは、燃料カット終了タイミングでのマニ触媒酸素ストレージ量相当値が図７に示した所定値Ｃより小さかったために燃料カットによる補係数ＨＯＳ３が１より小さくなり（図８の右下方にＨＯＳ３の変化を示している）、これを受けて第２リッチスパイク量Ａがリッチスパイク量学習量Ｂより小さくなったためである。
【００８２】
第２リッチスパイク処理の開始タイミングであるｔ１４より、上記（４）式の計算が開始され、上記（４）式の計算値ｂ１が第２リッチスパイク量Ａと等しくなるｔ１５のタイミングで、マニ触媒３にストレージされている酸素量の全てが脱離したと判断し第２リッチスパイク処理を終了する。
【００８３】
エンジンコントローラ１１で実行される、上記図３、図８に示した制御を図９からのフローチャートに従って詳述する。
【００８４】
なお、ここではリアＯ2センサ６が活性状態である場合の燃料カット、燃料カットリカバーと、リアＯ2センサ６が非活性状態である場合の燃料カット、燃料カットリカバーとを区別して扱うものとする。すなわち、リアＯ2センサ６が活性状態である場合において、所定の燃料カット条件を満たしたとき、燃料カットフラグ１がゼロから１へと切換えられ、またその後に所定の燃料カットリカバー条件を満たしたとき、燃料カットリカバーフラグ１がゼロから１へと切換えられ、またリアＯ2センサ６が非活性状態である場合において、所定の燃料カット条件を満たしたとき、燃料カットフラグ２がゼロから１へと切換えられ、またその後に所定の燃料カットリカバー条件を満たしたとき、燃料カットリカバーフラグ２がゼロから１へと切換えられているとする。このように燃料カットフラグ、燃料カットリカバーフラグの後に付けた「１」でリアＯ2センサ６が活性状態である場合であることを、燃料カットフラグ、燃料カットリカバーフラグの後に付けた「２」でリアＯ2センサ６が非活性状態である場合であることを表す。この「１」、「２」は後述するリッチスパイクフラグについても使用する。燃料カット条件や燃料カットリカバー条件としては公知ものでよいので、その説明は省略する。
【００８５】
図９は、リッチスパイクフラグ１、２を設定するためのもので、一定時間毎（例えば１０ｍｓｅｃ毎）に実行する。
【００８６】
ステップ１でリアＯ2センサ６が活性状態であるか否かをみる。リアＯ2センサ６が非活性状態である場合にはステップ２、３に進み燃料カットリカバーフラグ２が１であるか否か、前回は燃料カットリカバーフラグ２が１であったか否かをみる。燃料カットリカバーフラグ２が１でありかつ前回は燃料カットリカバーフラグ２がゼロであった、つまり燃料カットリカバーフラグ２がゼロより１に切換わったときにはステップ４、５に進んでリアＯ2センサ６が非活性状態での燃料カットを終わらせるため燃料カットフラグ２＝０とし、かつリアＯ2センサ６が非活性状態での燃料カットリカバー時に第２リッチスパイク処理を行わせるためリッチスパイクフラグ２（エンジン始動寺にゼロに初期設定）＝１とする。
【００８７】
それ以外のときにはステップ２、３よりステップ４、５を飛ばして今回の処理を終了する。
【００８８】
一方、ステップ１でリアＯ2センサ６が活性状態である場合にはステップ６、７に進み燃料カットリカバーフラグ１が１であるか否か、前回は燃料カットリカバーフラグ１が１であったか否かをみる。燃料カットリカバーフラグ１が１でありかつ前回は燃料カットリカバーフラグ１がゼロであった、つまり燃料カットリカバーフラグ１がゼロより１に切換わったときにはステップ８、９に進んでリアＯ2センサ６が活性状態での燃料カットを終わらせるため燃料カットフラグ１＝０とし、かつリアＯ2センサ６が活性状態での燃料カットリカバー時に第１リッチスパイク処理を行わせるためリッチスパイクフラグ１（エンジン始動寺にゼロに初期設定）＝１とする。
【００８９】
それ以外のときにはステップ６、７よりステップ８、９を飛ばして今回の処理を終了する。
【００９０】
なお、リアＯ2センサ６が活性状態であるのか非活性状態にあるのかの判定方法は公知であるので説明は省略している。
【００９１】
図１０は、目標当量比ＴＦＢＹＡを算出するためのもので、一定時間毎（例えば１０ｍｓｅｃ毎）に実行する。
【００９２】
ステップ１１では燃料カットフラグ１をみる。燃料カットフラグ１＝１であるときには、リアＯ2センサ６が活性状態での燃料カットを行わせるためステップ１２に進んで目標当量比ＴＦＢＹＡ＝０とする。
【００９３】
ステップ１１で燃料カットフラグ１＝０であるときにはステップ１３に進んで燃料カットフラグ２をみる。燃料カットフラグ２＝１であるときには、リアＯ2センサ６が非活性状態での燃料カットを行わせるためステップ１２に進んで目標当量比ＴＦＢＹＡ＝０とする。
【００９４】
ステップ１３で燃料カットフラグ２＝０であるときにはステップ１４に進んでリッチスパイクフラグ１をみる。リッチスパイクフラグ１＝１であるときには第１リッチスパイク処理を行わせるためステップ１５に進んで目標当量比ＴＦＢＹＡを１より大きな所定値（例えば１．２）とする。
【００９５】
ステップ１４でリッチスパイクフラグ１＝０であるときにはステップ１６に進みリッチスパイクフラグ２をみる。リッチスパイクフラグ２＝１であるときには第２リッチスパイク処理を行わせるためステップ１５に進んで目標当量比ＴＦＢＹＡを１より大きな所定値（例えば１．２）とする。
【００９６】
一方、ステップ１６でリッチスパイクフラグ２＝０であるときにはステップ１７に進み、目標当量比ＴＦＢＹＡ＝１とする。目標当量比ＴＦＢＹＡが１のとき空燃比がストイキに、目標当量比ＴＦＢＹＡが１より大きいとき空燃比がストイキよりもリッチになる。
【００９７】
ここで得られた目標当量比ＴＦＢＹＡを用い、図示しないフローにおいて、燃料噴射弁２１に与える燃料噴射パルス幅Ｔｉが例えば次の式により計算され、所定のタイミングでこの噴射パルスＴｉの間、燃料噴射弁２１が開かれ燃料が噴射される。
【００９８】
Ｔｉ＝ＴＰ×ＴＦＢＹＡ×（α＋αｍ−１）×２＋ＴＳ      …（５）
ただし、ＴＰ：基本噴射パルス幅
α：空燃比フィードバック補正係数
αｍ：空燃比学習値
ＴＳ：無効パルス幅
実施形態は、目標当量比ＴＦＢＹＡを用いて第１リッチスパイク処理と第２リッチスパイク処理とを開始する場合であるが、空燃比フィードバック補正係数αを用いて第１リッチスパイク処理と第２リッチスパイク処理とを開始する場合でもかまわない。
【００９９】
図１１は、リッチスパイク量学習量Ｂを算出するためのもので、一定時間毎（例えば１０ｍｓｅｃ毎）に実行する。
【０１００】
ステップ２１ではリアＯ2センサ６が活性状態にあるか否か、リッチスパイク量学習量格納済みフラグは１であるか否かをみる。ステップ２１でリアＯ2センサ６が非活性状態にあるときやリアＯ2センサ６が活性状態にあってもリッチスパイク量学習量格納済みフラグ＝１であるときにはそのまま今回の処理を終了する。
【０１０１】
一方、ステップ２１、２２でリアＯ2センサ６が活性状態にありかつリッチスパイク量学習量格納済みフラグ＝０（まだリッチスパイク量学習量Ｂを得ていない）であるときにステップ２３以降に進んで第１リッチスパイク量ＲＳＰ１を算出する。すなわち、まずステップ２３で、エアフローメータ９により検出される吸入空気流量Ｑａと、フロント空燃比センサ５により検出されるマニ触媒上流の空燃比（図では「上流Ａ／Ｆ」で略記する）と、リアＯ2センサ出力とを読み込む。
【０１０２】
ステップ２４ではリッチスパイクフラグ１をみる。リッチスパイクフラグ１＝０であるときには第１リッチスパイク処理が行われていないのでそのまま今回の処理を終了する。
【０１０３】
ステップ２４でリッチスパイクフラグ１＝１であるとき（第１リッチスパイク処理中）にはステップ２５に進み、次式により第１リッチスパイク処理開始時を起点としてマニ触媒３から脱離される酸素量相当値Ｏ２ＤＡＴ１を計算する。
【０１０４】
Ｏ２ＤＡＴ１＝Ｏ２ＤＡＴ１（-1）＋（１４．７−マニ触媒上流の空燃比）×Ｑａ
…（６）
ただし、Ｏ２ＤＡＴ１（-1）：前回の脱離酸素量相当値
（６）式は、後述するように所定時間毎に繰り返される式である。ここで、（６）式右辺のマニ触媒上流の空燃比は、リッチスパイクフラグ１＝１のとき（第１リッチスパイク処理時）、第１リッチスパイク処理時空燃比となるので、（６）式右辺第２項は所定時間当たり（図１１の演算周期当たり）にマニ触媒３から脱離される酸素量相当値を表す。（６）式右辺第１項は前回までの脱離酸素量相当値の積算値である。従って、（６）式を繰り返すことで、第１リッチスパイク処理の開始タイミングから所定時間当たり（図１１の演算周期当たり）にマニ触媒３から脱離される酸素量相当値が積算されることとなる。言い替えると、（６）式は上記（１）式と等価な式である。ここで、（６）式右辺のＯ２ＤＡＴ１（-1）の初期値としてはゼロを入れておく。
【０１０５】
ステップ２６ではリアＯ2センサ出力とスライスレベルＳＬを比較する。第１リッチスパイク処理の開始直後にはリアＯ2センサ出力はスライスレベルＳＬよりも小さいのでステップ２７に進み次回に備えて脱離酸素量相当値Ｏ２ＤＡＴ１の値を前回値であるＯ２ＤＡＴ１（-1）に移す。
【０１０６】
次回からの第１リッチスパイク処理中にはステップ２５、２６、２７の操作を繰り返すことになるので、（６）式左辺の脱離酸素量相当値Ｏ２ＤＡＴ１が増えてゆく。
【０１０７】
やがて、マニ触媒３のストレージ酸素量が全てなくなると、リアＯ2センサ出力がスライスレベルＳＬ以上になる。このときにはステップ２６よりステップ２８に進んで脱離酸素量相当値Ｏ２ＤＡＴ１を第１リッチスパイク量ＲＳＰ１に移す。さらにこの第１リッチスパイク量ＲＳＰ１をステップ２９でリッチスパイク量学習量Ｂに移す。リッチスパイク量学習量Ｂは、次回の運転時の第２リッチスパイク処理に用いるので、その値が消失しないようにＥＥＰＲＯＭなどのメモリに格納しておく。これでリッチスパイク量学習量Ｂが格納済みとなるので、ステップ３０ではリッチスパイク量学習量格納済みフラグ＝１とする。
【０１０８】
なお、図１１では簡単のため、１回の第１リッチスパイク量ＲＳＰ１が得られたタイミングでその第１リッチスパイク量ＲＳＰ１をそのままリッチスパイク量学習量Ｂとすると共にリッチスパイク量学習量格納済みフラグ＝１としているが、これに限られない。例えば、その後も第１リッチスパイク処理を行う毎に第１リッチスパイク量を得て格納しておき、第１リッチスパイク量が予め定めた個数得られた後にその平均値を求め、その求めた平均値をリッチスパイク量学習量Ｂとして定める。例えば第１リッチスパイク量がｄ１〜ｄ５の５個得られたとすると、（ｄ１＋ｄ２＋ｄ３＋ｄ４＋ｄ５）／５をリッチスパイク量学習量Ｂとし、リッチスパイク量学習量格納済みフラグ＝１とする。
【０１０９】
図１２は、第２リッチスパイク量Ａを設定するためのもので、一定時間毎（例えば１０ｍｓｅｃ毎）に実行する。
【０１１０】
ステップ４１、４２ではリアＯ2センサ６が非活性状態にあるか否か、リッチスパイク量学習量格納済みフラグは１であるか否かをみる。リアＯ2センサ６が活性状態にあるときやリアＯ2センサ６が非活性状態にあってもリッチスパイク量学習量格納済みフラグ＝０であるときにはそのまま今回の処理を終了する。
【０１１１】
一方、ステップ４１、４２でリアＯ2センサ６が非活性状態にありかつリッチスパイク量学習量格納済みフラグ＝１であるときにステップ４３以降に進んで第２リッチスパイク処理に用いる第２リッチスパイク量Ａを設定する。すなわち、まずステップ４３では、温度センサ１２により検出されるマニ触媒温度Ｔｍａｎｉ、温度センサ１３により検出される床下触媒温度Ｔｙｕｋａ、リッチスパイク量学習量Ｂ（図１１で既に得られている）を読み込む。
【０１１２】
ステップ４４ではリッチスパイク量学習量Ｂから図５を内容とするテーブルを検索することによりシフト量ΔＴを算出する。マニ触媒３が劣化していないときにはこのシフト量ΔＴはゼロ、マニ触媒３が劣化しているときにはこのシフト量ΔＴは正の値を有する。
【０１１３】
ステップ４５では図４に示した基本特性（太実線の特性）をシフト量ΔＴだけ右方向に平行移動した特性をマニ触媒経時劣化後の特性（破線や細実線の特性）として修正（作成）する。もちろん、マニ触媒３に経時劣化が生じていないときにはシフト量ΔＴ＝０であるため、修正後の特性は図４に示した基本特性（太実線の特性）と同じになる。
【０１１４】
ステップ４６では、マニ触媒温度Ｔｍａｎｉから修正後のマニ触媒温度補正係数の特性（破線や細実線の特性）を検索してマニ触媒温度補正係数ＨＯＳ１を算出する。
【０１１５】
ステップ４７では、床下触媒Ｔｙｕｋａから図６を内容とするテーブルを検索することにより床下触媒温度補正係数ＨＯＳ２を算出する。
【０１１６】
ステップ４８では燃料カットによる補正係数ＨＯＳ３を算出する。この燃料カットによる補正係数ＨＯＳ３の算出については図１３のフローにより説明する。
【０１１７】
図１３においてステップ５１、５２ではリアＯ2センサ６が非活性状態にあるか否か、リッチスパイク量学習量格納済みフラグは１であるか否かをみる。リアＯ2センサ６が活性状態にあるときやリアＯ2センサ６が非活性状態にあってもリッチスパイク量学習量格納済みフラグ＝０であるときにはそのまま今回の処理を終了する。
【０１１８】
一方、ステップ５１、５２でリアＯ2センサ６が非活性状態にありかつリッチスパイク量学習量格納済みフラグ＝１であるときにステップ５３以降に進んで燃料カットによる補正係数ＨＯＳ３を算出する。すなわち、まずステップ５３ではエアフローメータ９により検出される吸入空気流量Ｑａを読み込む。
【０１１９】
ステップ５４、５５では燃料カットフラグ２が１であるか否か、前回は燃料カットフラグ２が１であったか否かをみる。燃料カットフラグ２が１でありかつ前回は燃料カットフラグ２がゼロであった、つまり燃料カットフラグ２がゼロより１に切換わったときにはステップ５６に進んで、次式によりマニ触媒酸素ストレージ量相当値の前回値であるＯ２ＳＴＯ（-1）を計算する。
【０１２０】
Ｏ２ＳＴＯ（-1）＝ＨＯＳＣ×Ｋ１                        …（７）
ただし、ＨＯＳＣ：燃料カットの直前に演算しているマニ触媒酸素ストレージ量
Ｋ１：換算係数
ここで、換算係数Ｋ１は単位あわせための係数である。
【０１２１】
（７）式はリアＯ2センサ６が非活性状態での燃料カット開始時のマニ触媒酸素ストレージ量相当値を表している。すなわち、リアＯ2センサ６が非活性状態での燃料カット開始直前にはマニ触媒３の酸素ストレージ量ＨＯＳＣはほぼ目標値（≒５０％）にあり、リアＯ2センサ６が非活性状態での燃料カットの開始と共に、マニ触媒３の酸素ストレージ量ＨＯＳＣが燃料カット直前の値を初期値として増えてゆく。これに合わせて、リアＯ2センサ６が非活性状態での燃料カット開始時のマニ触媒３の酸素ストレージ相当値についても、リアＯ2センサ６が非活性状態での燃料カット直前の値を与えるものである。
【０１２２】
ステップ５４、５５で燃料カットフラグ２が１でありかつ前回も燃料カットフラグ２が１であった、つまり燃料カットフラグ２が続けて１であるときにはステップ５７に進み、ステップ５６で得ている燃料カット開始時のマニ触媒酸素ストレージ量相当値に吸入空気流量Ｑａを加算した値を、今回のマニ触媒酸素ストレージ量相当値Ｏ２ＳＴＯとして、つまり次式によりマニ触媒酸素ストレージ量相当値Ｏ２ＳＴＯを計算する。
【０１２３】
Ｏ２ＳＴＯ＝Ｏ２ＳＴＯ（-1）＋Ｑａ                      …（８）
ただし、Ｏ２ＳＴＯ（-1）：ステップ５６の値
ステップ５８では燃料カットリカバーフラグ２をみる。リアＯ2センサ６が非活性状態での燃料カットの開始直後は燃料カットリカバーフラグ２＝０であるのでステップ５９に進み、次回に備えてマニ触媒酸素ストレージ相当値Ｏ２ＳＴＯの値を前回値であるＯ２ＳＴＯ（-1）の値に移す。
【０１２４】
リアＯ2センサ６が非活性状態での燃料カットの開始からしばらくは燃料カットリカバーフラグ２＝０である（リアＯ2センサ６が非活性状態での燃料カット中）ので、ステップ５７、５８、５９の処理を、つまり
Ｏ２ＳＴＯ＝Ｏ２ＳＴＯ（-1）＋Ｑａ                      …（９）
ただし、Ｏ２ＳＴＯ（-1）：前回のマニ触媒酸素ストレージ量相当値
の式の計算を繰り返す。
【０１２５】
ここで、（９）式右辺第２項は所定時間当たり（図１３の演算周期当たり）にマニ触媒３にストレージされる酸素量相当値を表す。（９）式右辺第１項は前回までのマニ触媒３の酸素ストレージ相当値の積算値である。従って、（９）式を繰り返すことで、リアＯ2センサ６が非活性状態での燃料カット開始直前でのマニ触媒３の酸素ストレージ量相当値を初期値として、リアＯ2センサ６が非活性状態での燃料カット開始タイミングから所定時間当たり（図１３の演算周期当たり）にマニ触媒３にストレージされる酸素量相当値が積算されることとなる。（９）式の繰り返しによりマニ触媒３の酸素ストレージ量相当値Ｏ２ＳＴＯが増えてゆく。
【０１２６】
やがてステップ５８で燃料カットリカバーフラグ２＝１になると、リアＯ2センサ６が非活性状態での燃料カット終了タイミングになったと判断し、ステップ６０に進み、そのタイミングでのマニ触媒３の酸素ストレージ量相当値Ｏ２ＳＴＯをリアＯ2センサ６が非活性状態での燃料カット終了時のマニ触媒酸素ストレージ量相当値Ｄに移す。
【０１２７】
ステップ６１ではこの燃料カット終了時のマニ触媒酸素ストレージ量相当値Ｄから図７を内容とするテーブルを検索することにより燃料カットによる補正係数ＨＯＳ３を算出する。
【０１２８】
このようにして燃料カットによる補正係数ＨＯＳ３を算出したら図１２に戻り、ステップ４９で次式により第２リッチスパイク量Ａを設定する。
【０１２９】
Ａ＝Ｂ×ＨＯＳ１×ＨＯＳ２×ＨＯＳ３                    …（１０）
図１４はリッチスパイクフラグ２を設定するためのもので、図１２のフローに続けて一定時間毎（例えば１０ｍｓｅｃ毎）に実行する。
【０１３０】
ステップ７１、７２ではリアＯ2センサ６が活性状態となっているか否か、リッチスパイク量学習量格納済みフラグは１であるか否かをみる。リアＯ2センサ６が活性状態にあるときやリアＯ2センサ６が非活性状態にあってもリッチスパイク量学習量格納済みフラグ＝０であるときにはそのまま今回の処理を終了する。
【０１３１】
一方、ステップ７１、７２でリアＯ2センサ６が非活性状態にありかつリッチスパイク量学習量格納済みフラグ＝１であるときにステップ７３以降に進む。まずステップ７３では、エアフローメータ９により検出される吸入空気流量Ｑａと、フロント空燃比センサ５により検出されるマニ触媒上流の空燃比とを読み込む。
【０１３２】
ステップ７４ではリッチスパイクフラグ２をみる。リッチスパイクフラグ２＝０であるときには第２リッチスパイク処理は行われていないのでそのまま今回の処理を終了する。
【０１３３】
ステップ７４でリッチスパイクフラグ２＝１であるときには第２リッチスパイク処理中であると判断しステップ７５に進み、次式により第２リッチスパイク処理の開始タイミングよりマニ触媒３から脱離される酸素量相当値Ｏ２ＤＡＴ２を計算する。
【０１３４】
Ｏ２ＤＡＴ２＝Ｏ２ＤＡＴ２（-1）
＋（１４．７−マニ触媒上流の空燃比）×Ｑａ
…（１１）
ただし、Ｏ２ＤＡＴ２（-1）：前回の脱離酸素量相当値
（１１）式は、後述するように所定時間毎に繰り返される式である。ここで、（１１）式右辺のマニ触媒上流の空燃比は、リッチスパイクフラグ２＝１のとき（第２リッチスパイク処理時）、第２リッチスパイク処理時空燃比となるので、（１１）式右辺第２項は所定時間当たり（図１４の演算周期当たり）にマニ触媒３から脱離される酸素量相当値を表す。（１１）式右辺第１項は前回までの脱離酸素量相当値の積算値である。従って、（１０）式を繰り返すことで、第２リッチスパイク処理の開始タイミングから所定時間当たり（図１４の演算周期当たり）にマニ触媒３から脱離される酸素量相当値が積算されることとなる。言い替えると、（１１）式は上記（４）式と等価な式である。ここで、（１１）式右辺のＯ２ＤＡＴ２（-1）の初期値としてはゼロを入れておく。
【０１３５】
（１１）式は上記（６）式と基本的に同じ式である。違うのは、上記（６）式がリアＯ2センサが活性状態であるときの値であるのに対して、（１１）式はリアＯ2センサが非活性状態であるときの値である点だけである。
【０１３６】
ステップ７６ではこの脱離酸素量相当値Ｏ２ＤＡＴ２と第２リッチスパイク量Ａ（図１２で既に設定済み）を比較する。第２リッチスパイク処理の開始直後には、脱離酸素量相当値Ｏ２ＤＡＴ２は第２リッチスパイク量Ａよりも小さいのでステップ７７に進み、次回に備えて脱離酸素量相当値Ｏ２ＤＡＴ２の値を前回値であるＯ２ＤＡＴ２（-1）に移す。
【０１３７】
次回からはステップ７５、７６、７７の操作を繰り返すことになり、脱離酸素量相当値Ｏ２ＤＡＴ２が増えてゆく。やがて、ステップ７６で脱離酸素量相当値Ｏ２ＤＡＴ２が第２リッチスパイク量Ａ以上になると、マニ触媒３のストレージ酸素が全て脱離したと判断し、第２リッチスパイク処理を終了させるため、ステップ７８に進んでリッチスパイクフラグ２＝０とする。これにより、図１０においてステップ１６よりステップ１７に進むことになり第２リッチスパイク処理が終了する。
【０１３８】
ここで、本実施形態の作用効果を説明する。
【０１３９】
本実施形態（請求項１、１２に記載の発明）によれば、前回の運転時（第１の運転時）であってリアＯ2センサ６が活性状態での燃料カットリカバー時に第１リッチスパイク処理を行い（図１０のステップ１４、１５参照）、この第１リッチスパイク処理時にリアＯ2センサ６が活性状態でのリッチスパイク量である第１リッチスパイク量ＲＳＰ１を算出し（図１１のステップ２４、２５、２６、２７、２８参照）、この第１リッチスパイク量ＲＳＰ１と等しいかまたは第１リッチスパイク量ＲＳＰ１より少ない値を、リアＯ2センサ６が非活性状態でのリッチスパイク量である第２リッチスパイク量Ａとして設定し（図１１のステップ２９、図１２のステップ４９参照）、今回の運転時（第２の運転時）であってリアＯ2センサ６が非活性状態での燃料カットリカバー時に前記第２リッチスパイク量Ａを用いて第２リッチスパイク処理を行っている（図１４のステップ７６、７８、図１０のステップ１６、１７参照）。本実施形態（請求項２、１３に記載の発明）によれば、前回の運転時（第１の運転時）であってリアＯ2センサ６が活性状態での燃料カットリカバー時に第１リッチスパイク処理を行い（図１０のステップ１４、１５参照）、第１リッチスパイク処理時にリアＯ2センサ６が活性状態でのリッチスパイク量である第１リッチスパイク量ＲＳＰ１を算出し、この第１リッチスパイク量ＲＳＰ１に基づいてリッチスパイク量学習量Ｂを算出し、このリッチスパイク量学習量を前回の運転停止後もその値が消失しないように記憶し（図１１のステップ２４、２５、２６、２７、２８、２９参照）、今回の運転時（第２の運転時）にリアＯ2センサ６が非活性状態でリッチスパイク量学習量Ｂに基づいて、リアＯ2センサ６が非活性状態でのリッチスパイク量である第２リッチスパイク量Ａを設定し（図１２のステップ４３、４９参照）、今回の運転時であってリアＯ2センサ６が非活性状態での燃料カットリカバー時にこの設定された第２リッチスパイク量Ａを用いて第２リッチスパイク処理を行っている（図１４のステップ７６、７８、図１０のステップ１６、１７参照）。すなわち、本実施形態（請求項１、２、１２、１３に記載の発明）によれば、リアＯ2センサ６が非活性状態にある場合にもリアＯ2センサ６が活性状態にある場合と同様に燃料カットを行い、リアＯ2センサ６が非活性状態での燃料カットリカバー時に第２リッチスパイク処理を行うことによってリアＯ2センサ６が非活性状態での燃料カットリカバー時のＮＯｘ対策を施しているので、排気性能へのはね返りを抑えつつも燃料カットが行われる頻度（時間）が高まり燃費性能を向上させることができている。
【０１４０】
また、本実施形態（請求項２、１３に記載の発明）によれば、従来装置では推定できなかった第２リッチスパイク量Ａを設定することが可能となり、リアＯ2センサ６が非活性状態での燃料カットリカバー時にこの第２リッチスパイク量Ａを用いることで第２リッチスパイク処理を最適に行わせることができる。
【０１４１】
本実施形態（請求項１に記載の発明）によれば、フロント空燃比センサ５と、エアフローメータ９とを備え、第１リッチスパイク量ＲＳＰ１を、第１リッチスパイク処理の開始タイミングから第１リッチスパイク処理の終了タイミングまでの間の、フロント空燃比センサ５により検出されるマニ触媒上流の空燃比と、エアフローメータ９により検出される吸入空気流量Ｑａとに基づいて算出するので（図１１のステップ２４、２５、２６、２７、２８参照）、マニ触媒３にストレージ可能な最大酸素量を消費するために必要なリッチスパイク量を第１リッチスパイク量ＲＳＰ１として精度良く算出することができる。
【０１４２】
本実施形態（請求項３に記載の発明）によれば、第１リッチスパイク量ＲＳＰ１は、１４．７（ストイキ）からフロント空燃比センサ５により検出されるマニ触媒上流の空燃比を差し引いた値にエアフローメータ９により検出される吸入空気流量Ｑａを乗算した値を、第１リッチスパイク処理の開始タイミングから第１リッチスパイク処理の終了タイミングまでの間、所定時間毎に積算した値であるので（図１１のステップ２４、２５、２６、２７、２８参照）、マニ触媒上流の空燃比や吸入空気流量が相違しても、第１リッチスパイク量ＲＳＰ１を精度良く求めることができる。
【０１４３】
本実施形態（請求項４に記載の発明）によれば、前記第１リッチスパイク処理の終了タイミングは、前記リア空燃比センサ（リアＯ2センサ）出力がリーン出力からリッチ出力に切換わるタイミングであるので（図１１のステップ２６参照）、マニ触媒３にストレージされた全ての酸素量がゼロになるタイミングを正確に判定することができる。
【０１４４】
リアＯ2センサ６が非活性状態である場合には、マニ触媒３が完全活性状態にないことがあり、このときマニ触媒３にストレージ可能な最大酸素量は、マニ触媒３が完全活性状態にあるときより少なくなる。マニ触媒３が完全活性状態にないことはマニ触媒温度で検出または推定できる。本実施形態（請求項５に記載の発明）によれば、温度センサ１２を備え、第２リッチスパイク量Ａを、温度センサ１２により検出されるマニ触媒温度Ｔｍａｎｉに応じて補正する、つまりマニ触媒３が完全活性状態にないとき（図４でマニ触媒温度Ｔｍａｎｉ＜第２所定値Ｔｍ２のとき）、第２リッチスパイク量Ａを減量補正するので（図４参照）、マニ触媒６が完全活性状態にないときでも、第２リッチスパイク量Ａを最適に与えることができる。
【０１４５】
第２リッチスパイク処理においても、マニ触媒３のストレージ酸素量が全てゼロとなるように第２リッチスパイク量Ａを定めているのであるが、燃料噴射弁２１の流量特性のバラツキ等により、マニ触媒３のストレージ酸素量の全てを脱離させた状態でマニ触媒内にＨＣ、ＣＯが余ることがある。これら余剰のＨＣ、ＣＯはマニ触媒３の下流にそのまま出てくる。このとき、床下触媒４が完全活性状態にないとこれら余剰のＨＣ、ＣＯを浄化できない。この場合に、床下触媒４が完全活性状態でないことは床下触媒温度で検出または推定できる。本実施形態（請求項６に記載の発明）によれば、床下触媒４（第２触媒）をリア空燃比センサ６の下流に備えると共に、温度センサ１３を備え、第２リッチスパイク量Ａを、温度センサ１３により検出される第２触媒温度Ｔｙｕｋａに応じてさらに補正する、つまり床下触媒４が完全活性状態にないとき（図６で床下触媒温度Ｔｙｕｋａ＜第２所定値Ｔｙ２のとき）、第２リッチスパイク量Ａを減量補正するので（図６参照）、燃料噴射弁２１の流量特性のバラツキがあっても、マニ触媒３からＨＣ、ＣＯが洩れ出ないようにすることができる。
【０１４６】
マニ触媒３の劣化度合いにより、マニ触媒温度Ｔｍａｎｉとマニ触媒活性の関係（図４参照）が変化する。本実施形態（請求項７に記載の発明）によれば、第２リッチスパイク量Ａをマニ触媒３の劣化度合いに応じても補正する、例えば図４に示したようにマニ触媒３が小劣化したときにはマニ触媒新品時の特性（太実線参照）を右方向にシフトさせてマニ触媒３が小劣化したときの特性（破線参照）を作成し、またマニ触媒３が大劣化したときにはマニ触媒新品時の特性（太実線参照）を右方向にシフトさせてマニ触媒３が大劣化したときの特性（細実線参照）を作成するので、マニ触媒３に小劣化や大劣化が生じているときにも、第２リッチスパイク量Ａを最適に与えることができる。
【０１４７】
第１リッチスパイク量ＲＳＰ１やリッチスパイク量学習量Ｂは、マニ触媒３にストレージ可能な最大酸素量を消費するために必要なリッチスパイク量であるため、マニ触媒３が劣化するほど第１リッチスパイク量ＲＳＰ１やリッチスパイク量学習量Ｂは小さくなる。本実施形態（請求項８に記載の発明）によれば、マニ触媒３の劣化度合いは、第１リッチスパイク量ＲＳＰ１やリッチスパイク量学習量Ｂに基づいて推定するので、マニ触媒３の劣化度合いを簡易に推定することができる。
【０１４８】
リアＯ2センサ６が非活性状態である場合にも、燃料カット終了タイミングでマニ触媒３の酸素ストレージ量が最大値の１００％に到達していることを前提としているのであるが、実際の燃料カット時間が基準の燃料カット時間より短かくて燃料カット終了タイミングでマニ触媒３の酸素ストレージ量が最大値の１００％に到達していないのに燃料カットが終了することがある。このときにも、マニ触媒３の酸素ストレージ量が１００％に到達しているものとしてそのまま第２リッチスパイク量Ａを与えて第２リッチスパイク処理を行ったのでは、マニ触媒３の酸素ストレージ量が１００％に足りていなかった分だけ第２リッチスパイク量Ａが過多となり、第２リッチスパイク処理期間が長引き、ＨＣ、ＣＯの供給過多を招く。これに対して本実施形態（請求項９に記載の発明）によれば、第２リッチスパイク量Ａを、第２リッチスパイク処理の直前に行われた燃料カット時間に応じて補正する、つまり実際の燃料カット時間が基準の燃料カット時間より短いとき（燃料カット終了時のマニ触媒酸素ストレージ量相当値が図７の所定値Ｃ未満のとき）、第２リッチスパイク量Ａを減量補正するので（図７参照）、実際の燃料カット時間が基準の燃料カット時間より短いとき（マニ触媒３の酸素ストレージ量が１００％に足りていなかったとき）にもその直後の第２リッチスパイク処理時にＨＣ、ＣＯの供給過多を防止することができる。
【０１４９】
本実施形態（請求項１０に記載の発明）によれば、フロント空燃比センサ５と、エアフローメータ９とを備え、１４．７（ストイキ）からフロント空燃比センサ５により検出されるマニ触媒上流の空燃比を差し引いた値にエアフローメータ９により検出される吸入空気流量Ｑａを乗算した値を、第２リッチスパイク処理の開始タイミングから所定時間毎に積算し、その積算値が、第２リッチスパイク量Ａと一致したとき、第２リッチスパイク処理を終了するので（図１４のステップ７４、７５、７６、７７，７８、図１０のステップ１６、１７参照）、第２リッチスパイク処理における適切なリッチスパイク時間を与えることができる。
【０１５０】
マニ触媒３が非活性状態であるとき、マニ触媒３は酸素ストレージ能力を有さないため、このときにも第２リッチスパイク処理を行ったのでは燃料が無駄になり燃費が悪くなるが、本実施形態（請求項１１に記載の発明）よれば、リアＯ2センサ６が非活性状態である場合に、マニ触媒３が非活性状態であるとき第２リッチスパイク処理を禁止するので（図４においてマニ触媒温度Ｔｍａｎｉが第２所定値Ｔｍ２以下でマニ触媒温度補正係数ＨＯＳ１がゼロになっている点を参照）、燃費の悪化を防止できる。
【０１５１】
請求項１に記載の空燃比制御手段、燃料カット・燃料カットリカバー実行手段の機能はエンジンコントローラ１１により、第１リッチスパイク処理手段の機能は図１０のステップ１４、１５により、第１リッチスパイク量算出手段の機能は図１１のステップ２４、２５、２６、２７、２８により、第２リッチスパイク量設定手段の機能は図１１のステップ２９、図１２のステップ４９により、第２リッチスパイク処理手段の機能は図１４のステップ７６、７８、図１０のステップ１６、１７によりそれぞれ果たされている。
【０１５３】
請求項１２に記載の空燃比制御手段、燃料カット・燃料カットリカバー実行処理手順はエンジンコントローラ１１により、第１リッチスパイク処理処理手順は図１０のステップ１４、１５により、第１リッチスパイク量算出処理手順は図１１のステップ２４、２５、２６、２７、２８により、第２リッチスパイク量設定処理手順は図１１のステップ２９、図１２のステップ４９により、第２リッチスパイク処理手順は図１４のステップ７６、７８、図１０のステップ１６、１７によりそれぞれ果たされている。
【図面の簡単な説明】
【０１５５】
【図１】本発明の空燃比制御装置及び空燃比制御方法が適用されるエンジンの一実施形態の概略構成図。
【図２】冷間始動時からの変化を左半分に、その後にエンジンを停止し暫く経過して再始動したときの変化を右半分に示した波形図。
【図３】リアＯ2センサの活性状態で車両を所定の走行モードに従って走行したときの目標当量比、マニ触媒上流の空燃比、リアＯ2センサ出力、マニ触媒の酸素ストレージ量、床下触媒酸の素ストレージ量、吸入空気流量の各変化を示すタイミングチャート。
【図４】マニ触媒温度補正係数の特性図。
【図５】シフト量の特性図。
【図６】床下触媒温度補正係数の特性図。
【図７】燃料カットによる補正係数の特性図。
【図８】リッチスパイク学習量を得た運転時の次の運転時かつリアＯ2センサが非活性状態で車両を所定の走行モードに従って走行したときの目標当量比、マニ触媒上流の空燃比、吸入空気流量、第２リッチスパイク量、マニ触媒温度補正係数、床下触媒温度補正係数、マニ触媒温度、床下触媒温度の各変化を示すタイミングチャート。
【図９】リッチスパイクフラグ１、２の設定を説明するためのフローチャート。
【図１０】目標当量比の算出を説明するためのフローチャート。
【図１１】リッチスパイク量学習量の算出を説明するためのフローチャート。
【図１２】第２リッチスパイク量の設定を説明するためのフローチャート。
【図１３】燃料カットによる補正係数の算出を説明するためのフローチャート。
【図１４】リッチスパイクフラグ２の設定を説明するためのフローチャート。
【符号の説明】
【０１５６】
１  エンジン
３  マニ触媒（第１触媒）
４  床下触媒（第２触媒）
５  フロント空燃比センサ（上流空燃比検出手段）
６  リアＯ2センサ（リア空燃比センサ）
９  エアフローメータ（吸入空気流量検出手段）
１１  エンジンコントローラ
１２  温度センサ（第１触媒温度検出手段）
１３  温度センサ（第２触媒温度検出手段）
【図１】
0005104323.tif 000002
【図２】
0005104323.tif 000003
【図３】
0005104323.tif 000004
【図４】
0005104323.tif 000005
【図５】
0005104323.tif 000006
【図６】
0005104323.tif 000007
【図７】
0005104323.tif 000008
【図８】
0005104323.tif 000009
【図９】
0005104323.tif 000010
【図１０】
0005104323.tif 000011
【図１１】
0005104323.tif 000012
【図１２】
0005104323.tif 000013
【図１３】
0005104323.tif 000014
【図１４】
0005104323.tif 000015