(57)【要約】【課題】三元触媒に残っている遅い脱離速度のＯ2が、今回のリッチスパイク処理次に何らかの理由により一度に脱離されることがあっても、最適な還元剤量を供給し得る空燃比制御方法を提供する。【解決手段】第１のリッチスパイク処理を行う手順と、この第１のリッチスパイク処理後に第１のストイキ運転を行う手順と、この第１のストイキ運転中のストイキ運転量を第１のストイキ運転量として推定する手順と、前記第１のリッチスパイク処理の終了後に再び第２のリッチスパイク処理を行う手順と、この第２のリッチスパイク処理直後に第２のストイキ運転を行う手順と、第１のストイキ運転量の推定値に応じて第２のストイキ運転中に空燃比をリッチシフトするリッチシフト手順（Ｓ４８、４９、５４、５５）とを含む。【選択図】図８
2006299886.tif 000002
【特許請求の範囲】
【請求項１】
排気中の空燃比に応じた量のＯ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センサ出力の波形が、両側に欠けた部分が生じてほぼ山状となっている（図４第４段目に示すハッチング部分参照）。
【００３３】
この欠けた部分の生じる原因が、上記のように三元触媒にＯ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センサ（下流側センサ）
【図１】
2006299886.tif 000003
【図２】
2006299886.tif 000004
【図３】
2006299886.tif 000005
【図４】
2006299886.tif 000006
【図５】
2006299886.tif 000007
【図６】
2006299886.tif 000008
【図７】
2006299886.tif 000009
【図８】
2006299886.tif 000010
【図９】
2006299886.tif 000011
【図１０】
2006299886.tif 000012
【図１１】
2006299886.tif 000013
【図１２】
2006299886.tif 000014
【図１３】
2006299886.tif 000015
【図１４】
2006299886.tif 000016
【図１５】
2006299886.tif 000017
【図１６】
2006299886.tif 000018
【図１７】
2006299886.tif 000019
【図１８】
2006299886.tif 000020
【図１９】
2006299886.tif 000021
【図２０】
2006299886.tif 000022