(57)【特許請求の範囲】
【請求項１】
内燃機関に燃料を供給するための燃料噴射弁と、内燃機関の排気通路中にその上流側から、排出ガスの空燃比を検出する第１の空燃比検出手段と、排気ガスの有害ガス成分を浄化する上流側触媒コンバータと、排出ガスの空燃比を検出する第２の空燃比検出手段と、排気ガスの有害ガス成分を浄化する下流側触媒コンバータとを備える内燃機関の排気ガス浄化装置において、
内燃機関の運転中に前記燃料噴射弁により噴射される燃料の供給を停止する燃料供給停止手段と、
前記上流側触媒と前記下流側触媒に吸着する酸素量の合計値を推定する第１の酸素吸着量推定手段と、
前記燃料供給停止手段により燃料の供給が停止された状態から復帰するときに前記排出ガスの空燃比をリッチにさせる第１の空燃比濃化手段と、
前記第１の空燃比濃化手段が実行されてから所定期間後に前記排出ガスの空燃比を第１の空燃比濃化手段により設定されるリッチ度合いよりも小さなリッチに設定する第２の空燃比濃化手段とを備え、
前記第１の酸素吸着量推定手段により推定される上流側触媒と下流側触媒の酸素吸着量の合計値が第１の所定値を下回ったときに前記第２の空燃比濃化手段による空燃比のリッチ化を停止することを特徴とする内燃機関の排気浄化装置。
【請求項２】
前記第２の空燃比検出手段は、ジルコニア固体電解質からなり、前記空燃比に対応して出力される出力電圧が所定の空燃比で急変する特性を持つ酸素濃度センサであり、
前記所定期間は、前記酸素濃度センサにより検出される空燃比が第２の所定値を越えたときに前記第１の空燃比濃化手段による空燃比のリッチ化を停止して、前記第２の空燃比濃化手段による空燃比のリッチ化を実行することを特徴とする請求項１に記載の内燃機関の排気浄化装置。
【請求項３】
前記所定期間は、前記第１の酸素吸着量推定手段により推定される酸素吸着量が第３の所定値を下回ったときに、前記第１の空燃比濃化手段による空燃比のリッチ化を停止して、前記第２の空燃比濃化手段による空燃比のリッチ化を実行することを特徴とする請求項１に記載の内燃機関の排気浄化装置。
【請求項４】
前記第１の酸素吸着量推定手段は、前記燃料供給停止手段により燃料噴射弁からの燃料供給が停止されている期間において、吸入空気量に基づいて前記上流側触媒と前記下流側触媒とに吸着される酸素量を推定することを特徴とする請求項１乃至請求項３のいずれか一つに記載の内燃機関の排気浄化装置。
【請求項５】
前記第１の酸素吸着量推定手段は、前記燃料供給停止手段により燃料噴射弁からの燃料供給が停止されている期間において、前記燃料供給が停止されている期間に基づいて前記上流側触媒と前記下流側触媒とに吸着される酸素量を推定することを特徴とする請求項１乃至請求項３のいずれか一つに記載の内燃機関の排気浄化装置。
【請求項６】
前記第１の空燃比検出手段により検出される前記排出ガスの空燃比が第４の所定値よりもリーンであることが第２の所定期間継続したことを判定する判定手段とを備え、
前記判定手段により排出ガスの空燃比が第４の所定値よりもリーンであることが第２の所定期間継続していると判定され、かつ、前記排出ガスの空燃比が第４の所定値よりもリーンな空燃比から第４の所定値よりもリッチな第５の所定値を超えたときに前記排出ガスの空燃比をリッチにさせる第１の空燃比濃化手段と、前記第１の空燃比濃化手段が実行されてから所定期間後に前記排出ガスの空燃比を第１の空燃比濃化手段により設定されるリッチ度合いよりも小さなリッチに設定する第２の空燃比濃化手段とを備え、
前記酸素吸着量推定手段により推定される上流側触媒と下流側触媒の酸素吸着量が前記第１の所定値を下回ったときに前記第２の空燃比濃化手段による空燃比のリッチ化を停止することを特徴とする請求項１乃至請求項３のいずれか一つに記載の内燃機関の排気浄化装置。
【請求項７】
前記下流側触媒に吸着される酸素量を推定する第２の酸素吸着量推定手段を備え、
前記第２の酸素吸着量推定手段により推定される酸素量が前記第１の所定値を下回ったときに前記第２の空燃比濃化手段による空燃比のリッチ化を停止することを特徴とする請求項１乃至請求項６のいずれか一つに記載の内燃機関の排気浄化装置。
【請求項８】
前記第１の空燃比濃化手段により前記上流側触媒から脱離される酸素量を算出する酸素脱離量算出手段を備え、
前記第２の酸素吸蔵量推定手段は、前記酸素脱離量算出手段により算出された上流側触媒の酸素脱離量に基づいて下流側触媒に吸着されている酸素量を推定することを特徴とする請求項７に記載の内燃機関の排気浄化装置。
【請求項９】
前記第１の酸素吸着量推定手段は、推定により得られる前記上流側触媒と前記下流側触媒との酸素吸着量（以下、推定値）と、予め記憶されている前記上流側触媒と前記下流側触媒との飽和酸素吸着量（以下、記憶値）とを比較し、前記推定値が前記記憶値よりも大きい場合に、前記上流側触媒と前記下流側触媒との酸素吸着量を前記記憶値に設定することを特徴とする請求項１乃至請求項８のいずれか一つに記載の内燃機関の排気浄化装置。
【請求項１０】
前記酸素脱離量算出手段により算出された上流触媒の酸素脱離量に基づいて、前記記憶値を補正することを特徴とする請求項９に記載の内燃機関の排気浄化装置。
【発明の詳細な説明】
本発明は、所定機関以上リーン空燃比が継続、特に燃料カットからの復帰後の空燃比制御を実行する内燃機関の排気浄化装置に関する。
【０００１】
【発明の属する技術分野】
従来、内燃機関の運転中にドライバによりアクセルペダルがオフされること、エンジン回転速度が所定回転速度よりも高いことを条件として燃料噴射制御を停止し、燃費を低減する技術（以下、燃料カットと称する）が知られている。一般的に、内燃機関の運転中に燃料カットが実施されると、内燃機関の排気通路中に排出ガスを浄化するために設けられる触媒、例えば三元触媒の状態が吸蔵し得る酸素の飽和量になってしまうことが知られている。
【０００２】
三元触媒の浄化率は、理論空燃比近傍で最大の排出ガス浄化特性を示す。従って、燃料カット復帰後に理論空燃比となるように燃料を供給しても三元触媒に吸蔵された酸素によって三元触媒から排出される空燃比がリーンになるという不都合を生じてしまう。
【０００３】
このような不都合を解決する技術としては、特許第２６４８４０号に開示される技術と我々が出願した特開平８−１９３５３７号公報に開示される技術とある。これら技術のシステム構成は、エンジンの排気通路中に設けられる触媒コンバータと、触媒コンバータ下流側に設けられてエンジンからの排出ガスの酸素濃度を検出するセンサ（以下、酸素濃度センサと称する）を備える。
【０００４】
特許第２６４８４０号に開示される技術では、燃料カット復帰後に触媒コンバータに吸着された酸素を速やかに消費するために、インジェクタにより噴射する燃料噴射量を予め定め設定された量だけ増量や濃化を実行する。そして、触媒コンバータ下流に設けられる酸素濃度センサの出力がリッチとなったときに、触媒コンバータに吸着している酸素が消費したとして、燃料噴射量の増量や濃化の実行を中止している。
【０００５】
また、特開平８−１９３５３７号公報に開示される技術は、システム構成として更に、内燃機関側の触媒コンバータの前に排出ガスの空燃比を検出するためのリニアＡ／Ｆセンサを備える。このようなシステムにおいて、燃料カット復帰後に触媒に吸着している酸素を消費するためにリニアＡ／Ｆセンサの出力が所望の値となるようにインジェクタによる燃料噴射量を増加させる。この技術では、まず、燃料カット時には触媒コンバータに吸着される酸素量（以下、酸素吸蔵量と称する）を推定する。そして、燃料カット復帰後の燃料噴射量増量時には、推定した酸素吸蔵量に対して空燃比の濃化による酸素脱離量を演算し、酸素吸蔵量がそれ以上酸素を消費する必要がない吸蔵量となったときに燃料噴射量の増量を停止している。
【０００６】
【従来技術】
【０００７】
【発明が解決しようとする課題】
ところで、上述のシステム構成では、エンジンの排気通路に設けられる触媒コンバータは１つであった。これに対して、近年では、冷始動時のエミッションを低減することを目的として、触媒暖機が速やかに行われる従来の触媒コンバータに比して容量が小さい触媒コンバータを排気通路の上流側に設けることが知られている。つまり、エンジンで排出される排出ガスの通路には、その上流側からリニアＡ／Ｆセンサ、容量が小さな上流側触媒、酸素濃度センサ、上流触媒よりも容量が大きな下流側触媒を備えたシステムである。
【０００８】
しかしながら、このようなシステムに上記従来の特許第２６０４８４０号と特開平８−１９３５３７号公報に開示される技術を適用すると次のような不都合を生じる虞がある。
【０００９】
まず、特許第２６０４８４０号の技術では、触媒下流の酸素濃度センサにより燃料噴射量増加の停止を判定しているので、下流側触媒の下流側にセンサを持たないシステムでは燃料噴射量増加の停止判定を実行することができない。従って、下流側触媒に吸蔵されている酸素が十分に消費されていない状態で通常のフィードバック制御に復帰してしまう場合があるので、その後は燃料噴射量の増量が行われず、下流側触媒に吸蔵された酸素を消費するのに時間を要してしまう。また、実際の下流側触媒に吸蔵されている酸素が消費されてしまった状態で燃料噴射量の増加を行った場合には、リッチガスが大気へ放出されてしまい、エミッションが悪化する可能性がある。
【００１０】
一方、これに対して特開平８−１９３５３７号公報では、触媒コンバータの酸素吸蔵量を推定しているので、仮に、２つの触媒コンバータに吸着される酸素量を推定したとし、その推定値に基づいて燃料噴射量の増加を実行したとする。特開平８−１９３５３７号公報には、燃料噴射量の増加は、空燃比が理論空燃比よりも「０．５％」から「２．０％」リッチな値に設定することが記載されている。
【００１１】
しかしながら、燃料噴射量の増加を空燃比が「０．５％」リッチな値になるように設定したとしても、触媒コンバータに吸着されている酸素を消費するのに長い時間を要してしまい、速やかに通常のフィードバック制御に復帰させることができない可能性がある。また、燃料噴射量の増加を空燃比が「２．０％」リッチな値になるように設定した場合について記述する。この場合にあっても触媒コンバータに吸蔵された酸素量は推定値なので、実際に酸素が消費されたにも関わらず「２．０％」リッチな排出ガスが大気に放出されてエミッションが悪化する可能性がある。
【００１２】
そこで、本発明の目的とするところは、速やかに触媒コンバータに吸着している酸素を消費すると共に、酸素吸着量の推定値がずれていても大気に放出するエミッションを低減することである。
【００１３】
【課題を解決するための手段】
そこで、請求項１の発明のように、内燃機関の運転中に前記燃料噴射弁により噴射される燃料の供給を停止する燃料供給停止手段と、前記上流側触媒と下流側触媒に吸着する酸素量を推定する第１の酸素吸着量推定手段と、前記燃料供給停止手段により燃料の供給が停止された状態から復帰するときに前記排出ガスの空燃比をリッチにさせる第１の空燃比濃化手段と、前記第１の空燃比濃化手段が実行されてから第１の所定期間後に前記排出ガスの空燃比を第１の空燃比濃化手段により設定されるリッチ度合いよりも小さなリッチに設定する第２の空燃比濃化手段とを備え、前記第１の酸素吸着量推定手段により推定される上流側触媒と下流側触媒の酸素吸着量が第１の所定値を下回ったときに前記第２の空燃比濃化手段による空燃比のリッチ化を停止させる。
【００１４】
これにより、例えば燃料カットにより上流側触媒と下流側触媒に酸素が多量に吸着されている状態において、第１の空燃比濃化手段により上下流の触媒コンバータに吸着されている酸素を速やかに消費する。そして、第１の所定期間経過後に第１の空燃比濃化手段よりもリッチ度合いの小さな第２の空燃比濃化手段により上下流の触媒コンバータに吸着されている酸素を消費し、第１の酸素吸着量推定手段により推定される酸素吸着量が第１の所定値を下回ったときに第２の空燃比濃化手段による空燃比のリッチ化を停止する。
【００１５】
故に、常に第１の所定期間経過後には排気通路中に供給される空燃比は、第２の空燃比濃化手段によるリッチ化であるので、仮に第１の酸素吸着量推定手段による上下流の触媒コンバータに吸着されている酸素量の推定がずれていたとしても、第１の空燃比濃化手段よりもリッチ度合いが小さいのでエミッションに与える影響を抑制することができる。
【００１６】
また、第２の空燃比濃化手段が実行される前には、第１の空燃比濃化手段により空燃比のリッチ化を行っているので、リッチ度合いの小さい空燃比で上下流の触媒コンバータに吸着されている酸素を消費するものに比して、短時間で酸素を消費することができる。
【００１７】
ところで、燃料カット復帰後に空燃比を濃化することにより、まず上流側触媒に吸着された酸素が消費され、次に下流側触媒に吸着された酸素が消費されるという現象が起こる。このような現象を考慮すると、請求項１の発明においては、所定期間にて第１の空燃比濃化手段と第２の空燃比濃化手段とを切り替えているので、上流側触媒の酸素が消費されたにも関わらず、第１の空燃比濃化手段による空燃比のリッチ化が実行される可能性がある。このため、上流側触媒の状態がリッチになる可能性があり、滑らかにフィードバック制御に復帰することができない虞がある。
【００１８】
従って、請求項２の発明のように請求項１の第１の所定期間を、酸素濃度センサにより検出される空燃比（酸素濃度に対応した出力）が第２の所定値を越えたことで第１の所定期間が経過したと判定すると、上流側触媒の酸素が消費されたときに第１の空燃比濃化手段による空燃比のリッチ化から第２の空燃比濃化手段による空燃比のリッチ化へと切り替えることができる。
【００１９】
これにより、燃料カット復帰からの第１の空燃比濃化手段により上流側触媒に吸着されている酸素が十分に消費されたことを判定でき、この判定後に第２の空燃比濃化手段に切り替えることができる。すなわち、フィードバック制御等の通常制御への復帰時に上流側触媒に供給される排出ガスのリッチ度合いを小さくすることができるので、第２の空燃比濃化手段による空燃比制御が終了した後に滑らかに通常の制御に復帰することができる。
【００２０】
また、請求項３の発明によれば、請求項２の発明と同様の理由から請求項１の第１の所定期間は、第１の酸素吸着量推定手段により推定される酸素吸着量が第３の所定値を下回ったときに第１の所定期間が経過したと判定する。
【００２１】
すなわち、酸素吸着量を判定するための第３の所定値を上流側触媒の酸素が消費されたことを示す値に設定することで、請求項２の発明と同様の効果を得ることができる。
【００２２】
請求項４の発明によれば、第１の酸素吸着量推定手段は、燃料供給停止手段により燃料噴射弁からの燃料供給が停止されている期間において、吸入空気量に基づいて上流側触媒と下流側触媒とに吸着される酸素量を推定する。
【００２３】
これにより、燃料カット中ではれば触媒に供給される酸素は吸入空気に比例するので、吸入空気量に基づいて上流側触媒と下流側触媒とに吸着される酸素量を精度良く推定することができる。
【００２４】
また、請求項４に替えて請求項５の発明のように、第１の酸素吸着量推定手段として、燃料供給停止手段により燃料噴射弁からの燃料供給が停止されている期間において、燃料供給が停止されている期間に基づいて上流側触媒と下流側触媒とに吸着される酸素量を推定しても良い。
【００２５】
これにより、請求項４に比して簡単に上下流の触媒コンバータに吸着する酸素量を簡易な推定することができる。
【００２６】
請求項６の発明によれば、第１の空燃比検出手段により検出される前記排出ガスの空燃比が第４の所定値よりもリーンであることが第２の所定期間継続したことを判定する判定手段とを備え、この判定手段により排出ガスの空燃比が第４の所定値よりもリーンであることが第２の所定期間継続していると判定され、かつ、前記排出ガスの空燃比が第４の所定値よりもリーンな空燃比から第４の所定値よりもリッチな第５の所定値を超えたときに前記排出ガスの空燃比をリッチにさせる第１の空燃比濃化手段と、前記第１の空燃比濃化手段が実行されてから所定期間後に前記排出ガスの空燃比を第１の空燃比濃化手段により設定されるリッチ度合いよりも小さなリッチに設定する第２の空燃比濃化手段とを備え、前記酸素吸着量推定手段により推定される上流側触媒と下流側触媒の酸素吸着量が所定値を下回ったときに前記第２の空燃比濃化手段による空燃比のリッチ化を停止する。
【００２７】
内燃機関の制御空燃比がリーンな場合であっても、上下流の触媒コンバータには酸素が吸着する。従って、上下流の触媒コンバータに酸素が吸着するような条件を判定し、第１，第２の空燃比濃化手段を用いることで、燃料カット以外に上下流の触媒に酸素が吸着する場合にも、請求項１と同様の効果を得ることができる。
【００２８】
請求項７の発明によれば、下流側触媒に吸着される酸素量を推定する第２の酸素吸着量推定手段を備え、第２の酸素吸着量推定手段により推定される酸素量が前記第１の所定値を下回ったときに前記第２の空燃比濃化手段による空燃比のリッチ化を停止する。
【００２９】
これにより、下流側触媒に吸着された酸素量を推定することができるので、下流側触媒に吸着された酸素を消費したときに第２の空燃比濃化手段によるリッチ化を停止することができる。
【００３０】
請求項８の発明によれば、前記第１の空燃比濃化手段により前記上流側触媒から脱離される酸素量を算出する酸素脱離量算出手段を備え、前記第２の酸素吸蔵量推定手段は、前記酸素脱離量算出手段により算出された上流側触媒の酸素脱離量に基づいて下流側触媒に吸着されている酸素量を推定する。
【００３１】
第１の空燃比濃化による酸素脱離量は上流側触媒に吸着された酸素量に相当する。そして、上流側触媒と下流側触媒とは容量の違いがあるが、お互いの酸素吸着量には相関がある。従って、算出される酸素脱離量に基づいて下流側触媒の酸素吸着量を精度良く推定することができる。
【００３２】
請求項９の発明によれば、第１の酸素吸着量推定手段は、推定により得られる上流側触媒と下流側触媒との酸素吸着量（以下、推定値）と、予め記憶されている上流側触媒と下流側触媒との飽和酸素吸着量（以下、記憶値）とを比較し、推定値が記憶値よりも大きい場合に、上流側触媒と下流側触媒との酸素吸着量を記憶値に設定する。
【００３３】
これにより、上下流の触媒コンバータの酸素量が飽和したときであっても精度良く酸素吸着量を推定することができる。
【００３４】
ここで仮に飽和酸素吸着量の記憶値が実際の飽和酸素吸着量とずれていた場合、上流側触媒と下流側触媒に吸着された酸素量が実際に消費された状態で第２の空燃比濃化手段によりリッチ化してしまう。若しくは、酸素量が消費されていない状態で第２の空燃比濃化手段を停止させてしまう虞がある。このような場合について説明する。本実施の形態では、上流側触媒と下流側触媒との飽和酸素吸着量には相関があることは前述した。従って、記憶値に基づいて上流側触媒と下流側触媒とのそれぞれの飽和酸素吸着量を求めることができる。そして、上流側触媒の飽和酸素量は、上流側触媒の酸素脱離量に相当する。上流側触媒の酸素脱離量は、酸素濃度センサの出力が所定リッチになったことで判定することができるので、上流側触媒の飽和酸素吸着量を脱離酸素量から求めることができる。
【００３５】
そこで、請求項１０の発明によれば、酸素脱離量算出手段により算出された上流側触媒の酸素脱離量に基づいて記憶値を補正する。これにより、酸素飽和量の記憶値が実際の酸素飽和量とずれていても酸素脱離量算出手段により算出された上流側の酸素脱離量から補正することができるので、記憶値のずれを補正することができる。
【００３６】
【発明の実施の形態】
本発明を具体化した実施の形態を図面を用いて詳細に説明する。図１は本実施の形態の全体構成を示す概略図である。図１に示すように、エンジン１は４気筒４サイクルの火花点火式として構成されている。このエンジン１において、吸入空気はエンジン１の燃焼室１０へと導くための吸気通路３を介して吸入される。吸気通路３にはその上流から吸入空気を浄化するためのエアクリーナ２が設けられ、浄化された吸入空気はその吸入空気量を検出するためにエアクリーナ２の下流に設けられたエアフロメータ４を通過する。
【００３７】
そして、吸入空気はエアフロメータ４の下流側に設けられるスロットルバルブ５の開度が調整されることにより、燃焼室１０に供給されるその量が調整される。このようにして調整された吸入空気は、吸気通路３から分枝したインテークマニホールドにて、各インテークマニホールドに配設されるインジェクタ６により燃料が噴射されることにより燃料と混合される。形成された混合気は吸気バルブ８が開弁することにより燃焼室１０に供給され、供給された混合気に対して所定タイミングで点火プラグ７が火花点火することで混合気が燃焼し、燃焼によりエンジン１の燃焼室１０に設けられるピストン１１が下方へ押し下げることによって図示しないクランクシャフトが回転するための回転トルクが発生する。
【００３８】
吸気バルブ８，排気バルブ９は、図示しないカムシャフトの回転に同期して開閉駆動するバルブであり、そのタイミングやリフト量を可変に設定することで燃焼を運転状態に適した状態へコントロールすることができる。吸気バルブ８，排気バルブ９の開閉タイミングやリフト量を可変に設定する機構としては、可変バルブ機構１２，１３をそれぞれ設けている。
【００３９】
一方、燃焼により発生した燃焼ガスは、エンジン１の各気筒に対応したエキゾーストマニホールドからその集合部を介して排気通路１４へと導かれ大気へ放出される。その際、排気通路１４に設けられた２つの触媒コンバータにより排出ガスの有害成分（ＣＯ，ＨＣ，ＮＯｘ等）が浄化される。排気通路のエンジン１側に設けられる触媒コンバータ（以下、上流側触媒と称する）１６は、冷間時から速やかに暖機が完了するために容量が小さく、所謂スタートキャタリストとしての役割を持つ。これに対して、上流側触媒１６の下流側に設けられる触媒コンバータ（以下、下流側触媒と称する）１８は、上流側触媒１６よりも容量が大きく、大きな排気量に対しても浄化が可能なキャタリストとしての役割を持つ。尚、触媒コンバータの容量が同程度のものを上下流に配置する構成としても良い。
【００４０】
また、排気通路１４には排出ガスの空燃比をリニアに検出するためのリニアＡ／Ｆセンサ１５が、上流側触媒１６の上流側に設けられ、排出ガスの酸素濃度を検出し、排出ガスのリッチ／リーンを出力するための酸素濃度センサ１７が上流側触媒１６と下流側触媒１８との間に設けられている。この他にも、エンジン１の冷却水の温度（冷却水温Ｔｈｗ）を検出するための水温センサ１９や図示しないクランクシャフトの回転角度位置を検出するためのクランク角度センサ２０が設けられている。
【００４１】
このように構成されるエンジン１において、本実施の形態は、エンジン１の運転状態として上述の各種センサによる出力値に基づいて電子制御装置（以下、ＥＣＵと称する）２１により空燃比制御を実行する。ＥＣＵ２１は、ＣＰＵ（中央処理装置）、ＲＯＭ（リードオンリメモリ）、ＲＡＭ（ランダムアクセスメモリ）、バックアップＲＡＭ等を中心に論理演算回路として構成される。このＥＣＵ２１により、本実施の形態では空燃比制御として、所謂フィードバック制御を実行している。以下に本制御の概要について記述する。
【００４２】
まず、本実施の形態におけるメインの空燃比フィードバック制御について説明する。ドライバのアクセルペダルの踏込み量に応じて所定の吸入空気量となるようにスロットルバルブ５の開度を調整する。この吸入空気はエアフロメータ４により検出され、検出された吸入空気に対してインジェクタ６による燃料噴射により混合気が形成される。このとき、インジェクタ６による燃料噴射時間の設定として、運転条件として吸入空気量、エンジン回転速度ＮＥから予め設定されたマップによりベースとなる基本噴射時間Ｔｐを呼び出す。
【００４３】
そして、この基本噴射時間Ｔｐに対して各種補正係数を乗じて目標空燃比λTGとなるように燃料噴射時間ＴＡＵを設定する。各種補正係数としては、水温センサ１９により検出されるエンジン１の冷却水温Ｔｈｗに基づいて設定される補正係数や、リニアＡ／Ｆセンサ１５に検出される実空燃比λが目標空燃比λTGとなるように設定される補正係数等である。
【００４４】
更に、本実施の形態では、空燃比のサブフィードバック制御を実施している。このサブフィードバック制御は、酸素濃度センサ１７により検出されるリッチ／リーンの周期比率や面積比率が一定となるように目標空燃比λTGを変更する制御である。以上のようにメインのフィードバック制御／サブフィードバック制御とにより下流側触媒１８の有害成分の浄化率が最も高い空燃比になるように燃料噴射量を制御することでエミッションを低減することを可能にしている。
【００４５】
本実施の形態では、このような空燃比のフィードバック制御システムにおいて、燃料カットが行われて、その復帰後に実施する制御に特徴を有する。以下では、本実施の形態の特徴部分について図２乃至図１３を用いて詳細に説明する。まず、図２を用いて本実施の形態の概要を説明する。図２に示すブロック図は本実施の形態においてＥＣＵ２１が行う燃料カット復帰後の空燃比制御を示す。エンジン１の運転中に燃料噴射を停止する条件が成立した場合、燃料噴射停止手段ブロック２２により空燃比制御手段ブロック２５におけるインジェクタ６の燃料噴射を停止する。また、同様に燃料噴射停止ブロック２２において、エンジン１の運転中に燃料噴射量を減量する条件が成立した場合には、同様にインジェクタ６から噴射する燃料を減量補正する。
【００４６】
このようにして、燃料が減量、または停止されると上流側触媒１６と下流側触媒１８とには酸素が供給され、供給された酸素が前記上下流の触媒１６，１８に吸着される。そして、燃料噴射停止ブロック２２による燃料の停止指令が終了すると、燃料カットから復帰し、その後第１の空燃比濃化ブロック２４により空燃比制御ブロック２７へ目標空燃比λTGが「０．９９０」となるように設定指令を行う。そして、第１の空燃比検出ブロック１５と第２の空燃比検出ブロック１６との出力信号が空燃比制御ブロック２５へ入力されて目標空燃比λTGと実空燃比λとに基づいてフィードバック制御を実行し、また、第２の空燃比検出ブロック１６の出力信号も空燃比制御ブロック２５へ入力されて目標空燃比λTGを補正するサブフィードバック制御を実行する。
【００４７】
一方、第２の空燃比検出ブロックから出力される信号が所定リッチを示した場合、つまり上流側触媒１６に吸着された酸素が消費された場合には、第１の空燃比濃化ブロックによる空燃比制御から、第２の空燃比濃化ブロックによる目標空燃比λTGとして「０．９９５」をセットする。そして、酸素吸蔵量推定ブロック２６により推定される上流側触媒１６と下流側触媒１８の酸素が消費されたと判定されると、第２の空燃比濃化ブロックによる空燃比の濃化を停止して通常のフィードバック制御／サブフィードバック制御に復帰する。
【００４８】
次に、図３乃至図１０を用いて本実施の形態の詳細説明を行う。まず、図３の燃料カットフラグ設定ルーチンを用いて本実施の形態における燃料カットを実行するためのフラグを設定する処理について詳細に説明する。このルーチンは所定期間（例えば３２ｍｓ）毎に起動される処理である。ステップＳ１０１では、現在燃料カットフラグＸＦＣに「１」がセットされているか否かを判別する。通常の空燃比フィードバック状態ではステップＳ１０１が否定判別（ＮＯ）され（ＸＦＣ＝０）、ＣＰＵはステップＳ１０２に進む。そして、ＣＰＵは、ステップＳ１０２，Ｓ１０３で燃料カットの実行条件を判別する。
【００４９】
すなわち、ＣＰＵは、ステップＳ１０２でアイドルＳＷ＝オンであるか否かを判別し、ステップＳ１０３でエンジン回転速度ＮＥが燃料カット実行を判定するための所定回転速度（本実施の形態では、１４００ｒｐｍ）を超えているか否かを判別する。この場合、ステップＳ１０２，Ｓ１０３のいずれかが否定判別（ＮＯ）されれば、ＣＰＵは燃料カットの実行条件が不成立であるとしてステップＳ１０４に進み、燃料カットを開始するためにカウントするディレイカウンタＣＤFCを「０」にクリアして本ルーチンを終了する。
【００５０】
また、ステップＳ１０２，Ｓ１０３が共に肯定判別（ＹＥＳ）されれば、ＣＰＵは燃料カットの実行条件が成立したとしてステップＳ１０５に進む。ＣＰＵは、ステップＳ１０５でディレイカウンタＣＤFCのカウント値が「０」であるか否かを判別する。この場合、当初はＤＣFC＝０であるためステップＳ１０５が肯定判別（ＹＥＳ）され、ＣＰＵ３２はステップ１０６に進む。そして、ＣＰＵは、ステップＳ１０６でディレイカウンタＣＤFCを「１」にセットして本ルーチンを終了する。
【００５１】
また、ディレイカウンタＣＤFC＝１の設定後は、ステップＳ１０５が否定判別（ＮＯ）され、ＣＰＵはステップＳ１０７でディレイカウンタＣＤFCのカウント値が所定の判定値ＣＫ１（例えば、０．５秒に相当するカウント値）を超えるか否かを判別する。ここで、ディレイカウンタＣＤFCは、図４に示すルーチンにてカウントされる。詳しくは、ＣＰＵは図４のステップＳ２０１でディレイカウンタＣＤFC＝０であるか否かを判別し、ＣＤFC＝０であればそのまま本ルーチンを終了する。また、ディレイカウンタＣＤFC≠０であれば、ＣＰＵはステップＳ２０２でディレイカウンタＣＤFCを「１」インクリメントして本ルーチンを終了する。つまり、前記図３のステップＳ１０６においてディレイカウンタＣＤFC＝１が設定された後は、図４の処理が実行される毎（３２ｍｓ毎）にディレイカウンタＣＤFCが「１」ずつカウントアップされる。
【００５２】
そして、ディレイカウンタＣＤFC≦ＣＫ１となって図３のステップ１０７が否定判別（ＮＯ）される場合には、ＣＰＵはそのまま図３のルーチンを終了する。また、ディレイカウンタＣＤFC＞ＣＫ１となってステップＳ１０７が肯定判別（ＹＥＳ）される場合には、ＣＰＵはステップＳ１０８に進み、燃料カットフラグＸＦＣを「１」に、フィードバック制御フラグＸＦＢを「０」に、ディレイカウンタＣＤFCを「０」にして本ルーチンを終了する。
【００５３】
一方、上記のように燃料カットフラグＸＦＣに「１」がセットされると、ステップＳ１０１が肯定判別（ＹＥＳ）される。従って、ＣＰＵはステップＳ１０９の処理へと進み、エンジン回転速度ＮＥが燃料カット終了を判定するための所定回転速度（本実施の形態では、１０００ｒｐｍ）以下であるか否かを判別する。また、ＣＰＵは、ステップＳ１１０においてアイドルＳＷがオンであるか否かを判別する。
【００５４】
この場合、エンジン回転速度ＮＥが１０００ｒｐｍ以上で且つアイドルＳＷ＝オンであれば（ステップＳ１０９が否定判別（ＮＯ）、且つステップＳ１１０が肯定判別（ＹＥＳ）の場合）、ＣＰＵはそのまま本ルーチンを終了する。また、エンジン回転速度ＮＥが１０００ｒｐｍ未満であるか又はアイドルＳＷ＝オフであれば（ステップＳ１０９が肯定判別（ＹＥＳ）、又はステップＳ１１０が否定判別（ＮＯ）の場合）、ＣＰＵはステップＳ１１１で燃料カットフラグＸＦＣを「０」に、ディレイカウンタＣＤFBを「１」にして本ルーチンを終了する。
【００５５】
ここで、ディレイカウンタＣＤFBは図５に示すルーチンにてカウントアップされるカウンタであり、その処理を説明する。前述したようにＣＰＵはクランク角度センサ２０に基づいて検出されるＴＤＣ信号の入力に同期して図５の処理ルーチンをスタートし、ＣＰＵは先ずステップＳ３０１でＣＤFB＝０であるか否かを判別する。ディレイカウンタＣＤFB＝０であれば、ＣＰＵはそのまま本ルーチンを終了する。また、ディレイカウンタＣＤFB≠０であれば、すなわち前述した図２のステップＳ１１１でディレイカウンタＣＤFB＝１が設定されていれば、ＣＰＵはステップＳ３０２に進み、ディレイカウンタＣＤFBを「１」インクリメントする。
【００５６】
その後、ＣＰＵは、ステップＳ３０３でディレイカウンタＣＤFBのカウント値が所定の判定値ＣＫ２（例えば、３０カウント）に達したか否かを判別する。達していなければステップＳ３０３が否定判別（ＮＯ）されて、本ルーチンを終了する。そして、ディレイカウンタＣＤ２が判定値ＣＫ２に達すると、ステップＳ３０３が肯定判別（ＹＥＳ）されて、ＣＰＵはステップＳ３０４に進み、フィードバック制御フラグＸＦＢを「１」に、ディレイカウンタＣＤFBを「０」にして、本ルーチンを終了する。
【００５７】
次に、燃料カットが終了してからの空燃比制御を図６の空燃比濃化要求フラグ設定ルーチンを用いて説明する。本ルーチンでは燃料カット復帰後に実行する制御の進行度合いに応じて目標空燃比λTGを変更するために、空燃比濃化要求フラグＸＥ１RICHをフラグＸＥ２RICHへと切り替える。切り替えのタイミングは酸素濃度センサ１７により検出される空燃比が所定のリッチよりも大きくなったときである。
【００５８】
具体的には、燃料カットによって２つの触媒コンバータの酸素吸蔵量が飽和し、この飽和した酸素を燃料カットの復帰後に速やかに消費させて通常のフィードバック制御／サブフィードバック制御を実行させることを目的とする。この目的を達成するために燃料カット復帰後には空燃比濃化要求フラグＸＥ１RICHに「１」をセットし、上流側触媒１６に供給する排出ガスをリッチにすることで速やかに上流側触媒１６の酸素を消費させる。従って、酸素濃度センサ１７の出力がリッチであることを示した場合には上流側触媒１６に吸蔵されている酸素が適宜消費されたことを示す。なお、この間、上流側触媒１６にリッチガスを供給しても上流側触媒１６の浄化作用によって下流側触媒１８には理論空燃比近傍の排出ガスが供給されるので下流側触媒１８に吸蔵された酸素は消費されない。
【００５９】
そこで、酸素濃度センサ１７の出力値が所定のリッチを示したときには空燃比濃化要求フラグＸＥ２RICHに「１」をセットし、前記リッチよりもリッチ度合いの小さい排出ガスを上流側触媒１６に供給する。これにより、上流側触媒１６の酸素吸蔵量は適宜の量になっているため下流側触媒１８に吸蔵された酸素が速やかに消費され、速やかに通常のフィードバック制御／サブフィードバック制御に復帰することができる。図６のフローチャートでは、以上のことを考慮して空燃比濃化要求フラグＸＥ１RICH，ＸＥ２RICHを設定している。以下、詳細に説明する。
【００６０】
まず、ステップＳ４０１において、ＣＰＵは燃料カットフラグＸＦＣが１であるか否かを判定する。ここで、燃料カット中である、すなわち、燃料カットフラグＸＦＣ＝１である場合にはステップＳ４０１が肯定判別（ＹＥＳ）されて本ルーチンを終了する。一方、燃料カット中である場合にはステップＳ４０１が否定判別（ＮＯ）されてステップＳ４０２以降の処理が実行される。
【００６１】
ステップＳ４０２以降の処理では、燃料カット復帰からの空燃比制御として目標空燃比を設定するためのフラグをセットする。このフラグの詳細については後述するが、制御の進行度合いに応じて空燃比濃化要求フラグＸＥ１RICHとフラグＸＥ２RICHをそれぞれ設定し、空燃比を制御する。まず、ＣＰＵは、ステップＳ４０２において酸素濃度センサ１７から検出される電圧値ＶＯＸ２が所定電圧ＫＯＳＣを超えたか否かを判定する。
【００６２】
酸素濃度センサ１７は、その出力特性として空燃比が理論空燃比近傍で急激に変化する特性を持つ。具体的には、リッチ側の空燃比に対してはＶＯＸ２の値が大きな値を出力し、リーン側の空燃比に対してはＶＯＸ２の値が小さな値を出力する。
【００６３】
電圧値ＶＯＸ２が所定電圧ＫＯＳＣを超えていない場合には、上流側触媒１６の酸素が十分に消費されていないとして、ステップＳ４０２が否定判別（ＮＯ）されてステップＳ４０３へ進む。そして、空燃比を濃化するために空燃比濃化フラグＸＥ１RICHに「１」を設定して本ルーチンを終了する。すなわち燃料カットが実行されたときには上流側触媒１６、下流側触媒１８共に吸蔵する酸素量が大きい。このため、燃料カットからの復帰後には上流側触媒への排出ガスの空燃比をリッチな空燃比とするべく、燃料噴射量を増量して速やかに上流側触媒１６に吸蔵されている酸素を消費する。
【００６４】
一方、ステップＳ４０２にて、酸素濃度センサ１７により検出される電圧値ＶＯＸ２が所定電圧ＫＯＳＣよりも大きいときには、ステップＳ４０２が肯定判別（ＹＥＳ）されてステップＳ４０４へ進む。ここで、酸素濃度センサ１７の電圧値ＶＯＸ２が所定電圧ＫＯＳＣよりも大きい、すなわち、リッチ出力を示すということは、燃料カット復帰からの燃料増量によって上流側触媒の吸蔵酸素が十分に消費されたことを示す。従って、酸素濃度センサ１７の電圧値ＶＯＸ２が所定電圧ＫＯＳＣを超えたときには、下流側触媒１８の吸蔵酸素を消費するように排出ガスの空燃比を設定する。
【００６５】
具体的には、ステップＳ４０４にて空燃比濃化フラグＸＥ１RICHを「０」に設定し、ステップＳ４０５へ進む。そして、ＣＰＵはステップＳ４０５において後述する酸素吸蔵量ＳＭＯ２が所定値、例えば「０」よりも大きいか否かを判定する。ここで、酸素吸蔵量ＳＭＯ２が所定値よりも大きければ、ステップＳ４０５が肯定判別（ＹＥＳ）されてステップＳ４０６へ進み、空燃比濃化フラグＸＥ２RICHを「１」にセットして本ルーチンを終了する。一方、酸素吸蔵量ＳＭＯ２が所定値以下と判定されると、ステップＳ４０５は否定判別（ＮＯ）されてステップＳ４０７へ進む。ステップＳ４０７では空燃比濃化フラグＸＥ２RICHに「０」をセットして本ルーチンを終了する。
【００６６】
以上のように、図６の空燃比濃化要求フラグ設定ルーチンでは、燃料カット復帰後の空燃比制御として酸素濃度センサ１７の出力値と、酸素吸蔵量ＳＭＯ２とに基づいて空燃比の濃化を実行するためのフラグを設定する。このフローチャートにおいて記述した酸素吸蔵量ＳＭＯ２についての詳細については後述する。
【００６７】
次に、図７の燃料噴射量算出ルーチンを用いて、本実施の形態における燃料噴射量制御について説明する。なお、特に前述した図６の空燃比濃化要求フラグ設定ルーチンにて設定された空燃比濃化フラグＸＥ１RICH，ＸＥ２RICHに基づいて実行される空燃比の制御を詳細に説明する。まず、ＣＰＵはステップＳ５０１において燃料カットフラグＸＦＣが「０」であるか否かを判定する。燃料カットフラグＸＦＣが「１」の場合、つまり燃料カットが実行されている場合にはステップＳ５０１が否定判別（ＮＯ）されて、ステップＳ５０２にて燃料噴射時間ＴＡＵに「０」をセットして、そのまま本ルーチンを終了する。一方、燃料カットフラグＸＦＣが「０」の場合、つまり燃料カットが実行されていない場合にはステップＳ５０１が肯定判別（ＹＥＳ）されてステップＳ５０２へ進む。
【００６８】
ステップＳ５０２では、燃料噴射制御における燃料噴射時間の基本噴射時間Ｔｐをマップにより設定する。このマップでは、例えば、エンジンの運転状態をクランク角度センサ２０により検出されるＴＤＣ信号に基づいて算出される回転速度ＮＥと、エアフロメーター４により検出される吸入空気量とをパラメータとして分割し、これらのパラメータの組み合わせにおける基本噴射時間Ｔｐを予め適合等により求めＥＣＵ２１のＲＯＭ等に記憶させておく。そして、基本噴射時間Ｔｐを上述のマップにより呼び出すと次のステップＳ５０４の処理へと進む。
【００６９】
ＣＰＵは、ステップＳ５０４においてフィードバックフラグＸＦＢが「１」であるか否かを判定する。ここで、フィードバックフラグＸＦＢが「０」であれば、ステップＳ５０４が否定判別（ＮＯ）されてステップＳ５０５へ進む。ステップＳ５０５では、フィードバック補正係数ＦＡＦに１．０をセットしてステップＳ５１２とＳ５１３の処理を実行して本ルーチンを終了する。尚、ステップＳ５１２とＳ５１３の処理については後述する。
【００７０】
ステップＳ５０４にて、フィードバックフラグＸＦＢが「１」であると判定されるとステップＳ５０４が肯定判別（ＹＥＳ）され、ステップＳ５０６へ進む。ステップＳ５０６では、図６の空燃比濃化要求フラグ設定ルーチンで設定された空燃比濃化要求フラグＸＥ１RICHが「１」であるかが判定される。空燃比濃化要求フラグＸＥ１RICHが「１」である場合には、ステップＳ５０６が肯定判別（ＹＥＳ）されて、ステップＳ５０７へ進む。ステップＳ５０７では、目標空燃比λTGとして「０．９９０」をセットし、ステップＳ５１１乃至Ｓ５１３の処理を実行する。
【００７１】
一方、空燃比濃化要求フラグＸＥ１RICHが１ではない場合はステップＳ５０６が否定判別（ＮＯ）されてステップＳ５０８の処理を実行する。ステップＳ５０８では、図６の空燃比濃化要求フラグ設定ルーチンで設定された空燃比濃化要求フラグＸＥ２RICHが１であるかが判定される。空燃比濃化要求フラグＸＥ２RICHが１である場合には目標空燃比λTGに「０．９９５」をセットし、ステップＳ５１１乃至ステップＳ５１３の処理を実行する。また、空燃比濃化要求フラグＸＥ２RICHが１ではない場合には目標空燃比λTGに「１．０」をセットしステップＳ５１２乃至ステップＳ５１３の処理を実行し、本ルーチンを終了する。
【００７２】
次に、ステップＳ５１１乃至ステップＳ５１３の処理について説明する。ステップＳ５１１では、フィードバック補正係数ＦＡＦを算出する。フィードバック補正係数は、目標空燃比λTGとリニアＡ／Ｆセンサ１５により検出される実空燃比λとの偏差に基づいて基本噴射時間Ｔｐに対する補正係数として算出される。従って、ＣＰＵは本ステップにおいて、ステップＳ５０７，Ｓ５０９，Ｓ５１０のいずれかのステップにおいて設定した目標空燃比λTGと、リニアＡ／Ｆセンサ１５により検出される実空燃比λとの偏差に基づいてフィードバック補正係数ＦＡＦを算出する。
【００７３】
そして、ステップＳ５１２では、水温センサ２０により検出されるエンジン１の冷却水温が低温のときや、運転状態として高負荷運転時や加速運転時に燃料噴射量が増量されるための補正係数ＦＡＬＬを算出し、ステップＳ５１３へ進む。ステップＳ５１３では、燃料噴射時間ＴＡＵをステップＳ５０５，若しくはＳ５１１にて算出したフィードバック補正係数ＦＡＦと、ステップＳ５１２で算出した補正係数ＦＡＬＬを基本噴射時間に乗じ、更に、無効噴射時間Ｔｖを加えることによって、最終的な燃料噴射時間ＴＡＵ（＝Ｔｐ×ＦＡＦ×ＦＡＬＬ）＋Ｔｖを算出し、本ルーチンを終了する。
【００７４】
以上のように本フローチャートでは、空燃比濃化要求フラグＸＥ１RICH，ＸＥ２RICHの状態に基づいて目標空燃比λTGを設定する。具体的には、空燃比濃化要求フラグＸＥ１RICHが１の場合には、目標空燃比λTGが理論空燃比よりも１０％リッチとなるように設定される。そして、空燃比濃化要求フラグＸＥ２RICHが１の場合には、目標空燃比λTGが理論空燃比よりも５％リッチとなるように設定される。そして、後述する酸素吸蔵量ＳＭＯ２が所定値として、例えば０以下となった場合には空燃比濃化要求フラグＸＥ２RICHが０となり、燃料カット復帰後の空燃比制御を終了して、通常のフィードバック制御／サブフィードバック制御とを実行する。
【００７５】
尚、本実施の形態において目標空燃比λTGを「０．９９０」から「０．９９５」へと切り替えている理由について説明する。下流側触媒１８に吸蔵されている酸素を消費する際に、本実施の形態ではリッチガスを供給している。リッチガス供給停止のタイミングは、下流側触媒１８に吸蔵されている酸素が適宜消費されたことに基づいて停止され、通常のフィードバック制御／サブフィードバック制御へと復帰する。しかしながら、判定タイミングがずれた場合にはリッチガス成分が十分に浄化されずに触媒を通過して大気に放出されるという懸念がある。従って、この間に排出されるリッチガス成分を低減することを目的として下流側触媒１８の酸素を消費するときには目標空燃比λTGを「０．９９０」から「０．９９５」へと切り替えている。
【００７６】
次に、下流側触媒１８の酸素吸蔵量ＳＭＯ２の算出について説明する。酸素吸蔵量ＳＭＯ２は、各触媒の酸素吸蔵量の推定値である。本実施の形態のシステムにおいては、下流側触媒１８の下流側には空燃比を検出するためのセンサが配設されていないために下流側触媒１８に吸蔵されている酸素吸蔵量を推定する必要がある。従って、下流側触媒１８の酸素吸蔵量を推定する処理について例えば３２ｍｓｅｃ毎に起動される図８に示す酸素吸蔵量ＳＭＯ２算出ルーチンを用いて詳細に説明する。このルーチンは燃料カットが開始されると起動されるルーチンである。
【００７７】
まず、ＣＰＵはステップＳ６０１において燃料カットフラグが「１」であるか否かを判定する。ここで、燃料カットフラグが「１」であると判定されると、ステップＳ６０２へ進む。ステップＳ６０２では、燃料カットが実行されていることから酸素吸蔵速度ＳＭＯ２＿ＦＣを算出する。具体的には、
ＳＭＯ２＿ＦＣ＝ＫＳＭＯ２＿ＦＣ×（ＧＡ×演算周期）・・・（１）
の演算式により算出される。
【００７８】
この式では、燃料カット時には排気通路１４中に大気が供給されるとして、所定値ＫＳＭＯ２＿ＦＣは大気の酸素濃度に対応した値に相当する。そして、この所定値ＫＳＭＯ２＿ＦＣにエアフロメータ４により検出される吸入空気量ＧＡと、演算周期とを乗じることによって触媒に供給される酸素吸蔵速度ＳＭＯ２＿ＦＣを算出する。
【００７９】
次にステップＳ６０３にて、上流側触媒１６から脱離する脱離酸素量ＰＧＯ２＿１に「０」をセットする。すなわち、燃料カット中であれば上流側触媒１６から脱離する酸素はないとしてステップＳ６０４へ進む。ステップＳ６０４では、下流側触媒１８から脱離する酸素脱離量ＰＧＯ２＿２に「０」をセットする。これも燃料カット時には下流側触媒１８から脱離する酸素はないとしているからである。そして、ステップＳ６０５では、上流側触媒１６と下流側触媒１８とに吸蔵されているトータルの酸素吸蔵量ＳＭＯ２を求める。ステップＳ６０５では、燃料カット時なので、脱離酸素量ＰＧＯ２＿１，ＰＧＯ２＿２が「０」であるので、酸素吸蔵量ＳＭＯ２はステップＳ６０２にて算出された酸素吸蔵速度ＳＭＯ２＿ＦＣと前回の酸素吸蔵量ＳＭＯ２との値が入力される。
【００８０】
そして、ＣＰＵはステップＳ６０７において最大酸素吸蔵量の学習値ＳＭＯ２＿ＭＡＸ＿ＧをＲＡＭから呼び出す。最大酸素吸蔵量の学習値ＳＭＯ２＿ＭＡＸ＿Ｇは、２つの触媒コンバータが吸蔵し得る最大の酸素吸蔵量である。この値をＣＰＵがＲＡＭから呼び出すと、ステップＳ６０８へ進み現在の酸素吸蔵量ＳＭＯ２が最大酸素吸蔵量の学習値ＳＭＯ２＿ＭＡＸ＿Ｇよりも大きいか否かを判定する。ここで、酸素吸蔵量ＳＭＯ２が小さい場合にはステップＳ６０８が否定判別（ＮＯ）されてそのまま本ルーチンを終了する。一方、酸素吸蔵量ＳＭＯ２が大きい場合にはステップＳ６０８が肯定判別（ＹＥＳ）されて酸素吸蔵量ＳＭＯ２に最大酸素吸蔵量の学習値ＳＭＯ２＿ＭＡＸ＿Ｇをセットして本ルーチンを終了する。すなわち、触媒の最大吸蔵量を超える場合には、最大酸素吸蔵量の学習値ＰＧＯ２＿ＭＡＸ＿Ｇを現在の酸素吸蔵量ＳＭＯ２にセットする。
【００８１】
ここで、再びステップＳ６０１において燃料カットフラグＸＦＣに「１」がセットされていないと判定された場合について説明をする。この場合は、ＣＰＵはステップＳ６０１を否定判別（ＮＯ）し、ステップＳ６１０に進む。ステップＳ６１０では、酸素吸蔵速度ＳＭＯ２＿ＦＣに「０」をセットする。つまり、空燃比をリッチ化しているときには、リッチガスが２つの触媒コンバータ１６，１８に供給されることになるので、リッチガス成分では触媒コンバータ１６，１８に酸素が吸蔵されないとしているからである。そして、ステップＳ６１１に進み、空燃比濃化要求フラグＸＥ１RICHに「１」がセットされているか否かを判定する。
【００８２】
ここで、空燃比濃化要求フラグＸＥ１RICHに「１」がセットされていると判定されると、ステップＳ６１１は肯定判別（ＹＥＳ）される。空燃比濃化要求フラグＸＥ１RICHが「１」にセットされているときには上流側触媒１６の酸素が消費されているので、ステップＳ６１２へ進み、上流側触媒１６の酸素脱離量ＰＧＯ２＿１（以下、単に酸素脱離量ＰＧＯ２＿１と称する）を算出する。具体的には、酸素脱離量ＰＧＯ２＿１＝ＫＰＧＯ２＿１×（ＧＡ×演算周期）・・・（２）の演算式により算出される。
【００８３】
この式において、所定値ＫＰＧＯ２＿１は、空燃比濃化要求フラグＸＥ１RICHに「１」がセットされているので、目標空燃比λTGが「０．９９０」に設定されていることを前提として、実空燃比λが「０．９９０」時の酸素脱離量に相当する値を設定している。従って、（２）式により、酸素脱離量ＰＧＯ２＿１は、この所定値ＫＰＧＯ２＿１に、エアフロメータ４により検出される吸入空気量ＧＡと演算周期とを乗じることによって算出される。
【００８４】
ステップＳ６１３では、上流側触媒１６における酸素脱離量の総和量ΣＰＧＯ２＿１を演算し、ステップＳ６０４に進む。以下の処理は前述した通りであるので、簡単な説明に留める。ステップＳ６０４にて酸素脱離量ＰＧＯ２＿２に「０」をセットし、ステップＳ６０５に進む。そして、ステップＳ６０５では、目標空燃比λTGが「０．９９０」であるので、酸素吸蔵速度ＳＭＯ２＿ＦＣと酸素脱離量ＰＧＯ２＿２とが「０」であり、前回のＳＭＯ２値から今回の酸素脱離量ＰＧＯ２＿２を加算した値が酸素吸蔵量ＳＭＯ２として算出される。尚、酸素脱離量ＰＧＯ２＿１，ＰＧＯ２＿２は、負の値が設定されている。これにより、酸素吸蔵量ＳＭＯ２を算出する際にこれらの値を加算しても、酸素脱離量ＰＧＯ２＿１，ＰＧＯ２＿２は実際には減算される。ステップＳ６０７乃至ステップＳ６０９の処理については前述した通りである。
【００８５】
ここで再び、空燃比濃化要求フラグＸＥ１RICHに「０」が設定されており、ステップＳ６１１が否定判別（ＮＯ）されたときの処理について説明する。ステップＳ６１１が否定判別（ＮＯ）されるとステップＳ６１５へ進む。ステップＳ６１５では、空燃比濃化要求フラグＸＥ２RICHに「１」がセットされているか否かを判定する。空燃比濃化要求フラグＸＥ２RICHが「０」の場合は、ステップＳ６１６にて下流側触媒１８に対する酸素脱離量ＰＧＯ２＿２を算出する。具体的には、
酸素脱離量ＰＧＯ２＿２＝ＫＰＧＯ２＿２×（ＧＡ×演算周期）・・・（３）
の演算式により算出される。
【００８６】
（３）式においては、所定値ＫＰＧＯ２＿２は、空燃比濃化要求フラグＸＥ２RICHが「１」にセットされていることを前提とし、そのときの目標空燃比λTGが「０・９９５」であるので、この空燃比に対応した酸素脱離量を設定している。そして、酸素吸蔵量ＰＧＯ２＿２は、この所定値ＫＰＧＯ２＿２に、吸入空気量ＧＡと演算周期とを乗ずることによって算出される。そして、ステップＳ６０５では、空燃比濃化要求フラグＸＥ２RICHによる空燃比の濃化により酸素吸蔵速度ＳＭＯ２＿ＦＣと酸素脱離量ＰＧＯ２＿１とが「０」であるので、酸素吸蔵量ＳＭＯ２としては、ＳＭＯ２の前回値に酸素脱離量ＰＧＯ２＿２を加算することによって算出できる。尚、酸素脱離量ＰＧＯ２＿２は酸素脱離量ＰＧＯ２＿１同様、負の値が格納されている。そして、前述したようにステップＳ６０７乃至ステップＳ６０９の処理を実行し、本ルーチンを終了する。
【００８７】
一方、空燃比濃化要求フラグＸＥ２RICHが「０」にセットされている場合には、燃料カット復帰後の空燃比制御が終了しているので、ステップＳ６１５が否定判別されてステップＳ６１７に進み、酸素脱離量ＰＧＯ２＿２に「０」をセット、ステップＳ６１８では、上流側触媒１６の酸素脱離量の総和量ΣＰＧＯ２＿１と酸素吸蔵量ＳＭＯ２とに「０」をセットし、リセットし本ルーチンを終了する。
【００８８】
本実施の形態では、２つの触媒コンバータ１６，１８の酸素吸蔵量ＳＭＯ２が「０」となることで、空燃比濃化要求フラグＸＥ２ＲＩＣＨを「１」から「０」へとセットし、燃料カット後の空燃比制御を終了した。ところで、前述の説明では、触媒コンバータの最大酸素吸蔵量の学習値ＳＭＯ２＿ＭＡＸ＿Ｇを用いたが、触媒コンバータは一般的に知られるように経時劣化によって最大酸素吸蔵量が小さくなる。従って、本実施の形態では、この学習値を更新する処理を実行する。
【００８９】
学習値を更新する上で、最大酸素吸蔵量ＳＭＯ２＿ＭＡＸ＿Ｇは、上流側触媒１６と下流側触媒１８との最大酸素吸蔵量からなり、上流側触媒１６と下流側触媒１８との劣化度合いには、相関があるということを前提とする。本実施の形態では、燃料カット復帰後に空燃比濃化要求フラグＸＥ１RICHを「１」をセットし、目標空燃比λTGに「０．９９０」とすることで、まず、上流側触媒１６の酸素脱離量ＰＧＯ２＿１を演算した。このとき、上流側触媒１６の酸素が十分に消費されたことを酸素濃度センサ１７の出力が所定の判定値ＫＯＳＣを超えたときに判定した。従って、上流側触媒１６の最大酸素吸蔵量は、目標空燃比λTGが「０．９９０」のときの酸素脱離量の総和量ΣＳＭＯ２＿１（図８のフローチャートのステップＳ６１３にて算出）で代用することができる。
【００９０】
しかも、前述したように上流側触媒１６と下流側触媒１８との劣化度合いに相関があるので、上流側触媒１６と下流側触媒１８との最大酸素吸蔵量にも相関がある。すなわち、上流側触媒１６の酸素脱離量の総和量ΣＳＭＯ２＿１に基づいて下流側触媒１８の最大酸素吸蔵量を算出することができる。このような原理により触媒の最大酸素吸蔵量の学習値ＳＭＯ２＿ＭＡＸ＿Ｇを上流側触媒１６の酸素脱離量の総和量ΣＳＭＯ２＿１と下流側触媒１８の総和量ΣＳＭＯ２＿２との和として更新する。以下に図９の空燃比濃化要求フラグ切替え時酸素吸蔵量ＳＭＯ２演算ルーチンを用いて説明する。
【００９１】
まず、ＣＰＵはステップＳ７０１にて、空燃比濃化要求フラグＸＥ１RICHがフラグＸＥ２RICHへと切り替えられたか否かを判定する。ここで、切り替わっていなければ、ステップＳ７０１が否定判別（ＮＯ）されて本ルーチンを終了する。一方、切り替わったと判定されるとステップＳ７０１が肯定判別（ＹＥＳ）されてステップＳ７０２へ進む。ステップＳ７０２では、図８のフローチャートのステップＳ６１３にて算出した上流側触媒１６の酸素脱離量の総和量ΣＰＧＯ２＿１に基づいて２つの触媒コンバータ１６，１８における最大酸素吸蔵量の学習値ＳＭＯ２＿ＭＡＸ＿Ｇを算出する。具体的には、
ＳＭＯ２＿ＭＡＸ＿Ｇ＝ＳＭＯ２＿ＭＡＸ＿Ｇ＋１／８×（ＳＭＯ２＿ＭＡＸ−（１＋１．５）×ΣＰＧＯ２＿１）・・・（４）
の演算式で示される。
【００９２】
上記（４）式において、２つの上流側触媒１６，１８における最大酸素吸蔵量の学習値は、更新前の学習値ＳＭＯ２＿ＭＡＸ＿Ｇに「１／８」なまし処理した学習値のずれ分を加算して算出している。学習値のずれ分は最大酸素吸蔵量ＳＭＯ２＿ＭＡＸの値と、上流側触媒１６における酸素脱離量の総和量ΣＰＧＯ２＿１と下流側触媒１８における酸素脱離量の総和量ΣＰＧＯ２＿２とを加算した値との差によって求めることができる。尚、上流側触媒１６と下流側触媒１８との劣化には相関があることを考慮すれば、酸素脱離量の総和量ΣＰＧＯ２＿２は、酸素脱離量の総和量ΣＰＧＯ２＿１の関数として演算することができる。本実施の形態では、触媒の容量を考慮してΣＰＧＯ２＿２＝１．５×ΣＰＧＯ２＿１としている。
【００９３】
このような演算式により、触媒の劣化に応じて２つの触媒コンバータ１６，１８における最大酸素吸蔵量の学習値ＳＭＯ２＿ＭＡＸ＿Ｇを常に実際の触媒に即した値に更新することができる。そして、ステップＳ７０３へ進み、空燃比濃化要求フラグＸＥ１RICHからＸＥ２RICHへの切り替え時の２つの触媒１６，１８における酸素吸蔵量ＳＸＯ２の演算処理を実行する。つまり、切り替え時は、上流側触媒１６に吸蔵された酸素が消費されたことを示すため、２つの触媒コンバータ１６，１８における酸素吸蔵量ＳＭＯ２は、下流側触媒１８における酸素脱離量の総和量ΣＰＧＯ２＿２に相当する。既に上流側触媒１６に酸素脱離量の総和量ΣＰＧＯ２＿１が演算により算出されている。故に、２つの触媒コンバータ１６，１８の劣化度合いに相関があることを考慮すれば、下流側触媒１６における酸素脱離量の総和量ΣＰＧＯ２＿２は、１．５×ΣＰＧＯ２＿１で示すことができる。このように、切り替え時には上流側触媒１６における酸素脱離量の総和量ΣＰＧＯ２＿１に基づいて触媒コンバータ１６，１８の酸素吸蔵量を補正することができるので、学習値ＳＭＯ２＿ＭＡＸ＿Ｇにずれが生じていても速やかにずれ分を補正して最適な学習値をＥＣＵ２１のＲＡＭに格納することができる。
【００９４】
以上説明した制御ルーチンを、図１０に示すタイムチャートを用いて説明する。図１０（ａ）は、クランク角度センサ２０から出力されるＴＤＣ信号に基づいて演算されるエンジン回転速度ＮＥである。エンジン回転速度ＮＥが所定の回転速度（本実施の形態では、１４００ｒｐｍ）を超えているときにドライバが時刻Ｔ１において、アクセルペダルを開放すると、図１０（ｂ）のアイドルＳＷが「１」にセットされる。そして、図１０（ｈ）に示すようにディレイカウンタＣＤFCが時刻Ｔ１からカウントアップされる。ディレイカウンタＣＤFCが所定値ＣＫ１を時刻Ｔ２にて超えると、図１０（ｆ）に示す燃料カットフラグＸＦＣに「１」がセットされると共に、図１０（ｇ）に示すフィードバックフラグＸＦＢに「０」がセットされることにより燃料カットが実行される。燃料カットによって実空燃比は、図１０（ｃ）に示すように排気通路１４に大気が供給されるため空燃比が大きくリーンとなる。
【００９５】
このように時刻Ｔ２において、燃料カットが開始されると、図１０（ｍ）に示すように２つの触媒コンバータ１６，１８における酸素吸蔵量ＳＭＯ２の演算を開始する。そして、酸素吸蔵量ＳＭＯ２の値が最大酸素吸蔵量の学習値ＳＭＯ２＿ＭＡＸ＿Ｇを超えると酸素吸蔵量ＳＭＯ２は、学習値ＳＭＯ２＿ＭＡＸ＿Ｇが設定される。時刻Ｔ３になり、図１０（ａ）のエンジン回転速度ＮＥが１０００ｒｐｍを下回ると、図１０（ｆ）の燃料カットフラグに「０」がセットされて燃料カット制御が終了し、本実施の形態の空燃比制御を開始する。尚、フィードバック制御が開始されるタイミングは、燃料カット制御終了した時刻Ｔ３から、図１０（ｈ）に示すディレイカウンタＣＤFBが所定値ＣＫ２を超える時刻Ｔ４である。
【００９６】
本実施の形態の空燃比制御では、まず、時刻Ｔ３において図１０（ｄ）に示す空燃比濃化要求フラグＸＥ１RICHに「１」がセットされて、時刻Ｔ４にてフィードバック制御が復帰し、図１０（ｋ）に示すように目標空燃比λＴＧと実空燃比λとの偏差に基づいてフィードバック補正係数ＦＡＦを演算すると共に、図１０（ｊ）に示すように目標空燃比λTGが「１．０」から「０・９９０」へと切り替えられる。目標空燃比λTGが「０．９９０」の空燃比制御では、上流側触媒１６に吸蔵された酸素が消費される。この消費される酸素を図１０（ｎ）に示すように酸素脱離量の総和量ΣＰＧＯ２＿１として算出する。なお、図１０（ｍ）に示すように触媒コンバータ１６，１８の酸素吸蔵量ＳＭＯ２は、酸素脱離量の総和量ΣＰＧＯ２＿１だけ消費される。
【００９７】
そして、図１０（ｌ）に示すように時刻Ｔ５において、酸素濃度センサ１７の出力ＶＯＸ２が所定の判定値ＫＯＳＣを超えたとき、すなわち、所定のリッチ出力を示したときは、上流側触媒１６に吸蔵された酸素が消費されたとして空燃比制御を切り替える。この空燃比制御では、まず、図１０（ｄ）に示す空燃比濃化要求フラグＸＥ１RICHを「０」にし、図１０（ｅ）ＸＥ２RICHを「１」にセットする。これにより、図１０（ｊ）に示す目標空燃比λTGが「０．９９０」から「０．９９５」へと切り替えられる。
【００９８】
なお、時刻Ｔ５の切り替えタイミングにおいて、学習値ＳＭＯ２＿ＭＡＸ＿Ｇの更新を行っているので、以下に説明する。図１０（ｍ）に示す実線は演算による酸素吸蔵量であり、実際の酸素吸蔵量である。本実施の形態では、演算により酸素吸蔵量ＳＭＯ２を求めているので、点線で示す実際の酸素吸蔵量を超えて酸素吸蔵量ＳＭＯ２を算出する。時刻Ｔ４にて本実施の形態の空燃比制御が開始されると、上流側触媒１６における酸素脱離量の総和量ΣＰＧＯ２＿１が算出される。この値は、酸素吸蔵量ＳＭＯ２の減少分に相当する。
【００９９】
そして、時刻Ｔ５において酸素濃度センサ１７の出力が所定の判定値ＫＯＳＣを超えると、上流側触媒１６に吸蔵された酸素が消費されたと判定する。このとき、上流側触媒１６と下流側触媒１８との酸素吸蔵量には相関があるので、上流側触媒１６における酸素脱離量の総和量ΣＰＧＯ２＿１に基づいて下流側触媒１８における酸素脱離量ＰＧＯ２＿２を演算で求めることができる。従って、図１０（ｏ）に示すように学習値ＳＭＯ２＿ＭＡＸ＿Ｇがずれていた場合であっても、時刻Ｔ５にて学習値が更新されるとともに、図１０（ｍ）のように酸素吸蔵量ＳＭＯ２が補正されるので、最大酸素吸蔵量に応じて精度良く２つの触媒コンバータ１６，１８に吸蔵されている酸素を消費することができる。
【０１００】
時刻Ｔ６になると、酸素吸蔵量ＳＭＯ２が「０」となり、通常のフィードバック制御／サブフィードバック制御に復帰する。本実施の形態では、上述のように燃料カット制御復帰後の目標空燃比λTGを「０．９９０」と設定することで上流側触媒１６に吸蔵される酸素を速やかに消費することができ、更に、下流側触媒１８に吸蔵されている酸素を消費する際には、目標空燃比λTGを「０．９９５」へと切り替えることで、仮に下流側触媒１８に吸蔵された酸素が消費されたタイミングがずれたとしても、リッチ度合いが小さいので、エミッションに与える影響を抑制することができる。更に、学習値ＰＧＯ２＿ＭＡＸ＿Ｇの更新を上流側触媒１６と下流側触媒１８との相関に基づいて行うことで精度良く、下流側触媒１８に吸蔵された酸素が消費されたことを判定することができる。
【０１０１】
尚、本実施の形態においては、酸素濃度センサ１７の出力が所定リッチを示したときに、目標空燃比λTGを「０．９９５」へと切り替えたが、単に予め設定した第１の所定期間を用いて切り替えても良い。また、同様に、酸素吸蔵量ＳＭＯ２の値に基づいて目標空燃比λTGを「０．９９５」へと切り替えても良い。更に、目標空燃比λTGの設定では、リッチ度合いは「０．９９０」，「０．９９５」に限るものではなく、例えば、目標空燃比λTGを「０．９７０」から「０．９８５」へと切り替えるようにしても良く、リッチ度合いを小さく変更すれば良い。
【０１０２】
また、本実施の形態では、燃料カット復帰後の処理について説明したが、エンジン１の運転中に排出ガスの実空燃比λが第４の所定値よりもリーンであるときにも、空燃比がリーンであることから上下流の触媒コンバータには酸素が吸着する。従って、空燃比が第４の所定値よりもリーンである期間が第２の所定期間継続したとき、かつ、第４の所定値よりもリッチな第５の空燃比に設定されるときには、目標空燃比λTGを本実施の形態のように設定して制御しても良い。さらに、本実施の形態では、上流側触媒１６の酸素が十分に消費されたことを酸素濃度センサ１７の出力ＶＯＸ２が第２の所定値としてのＫＯＳＣを超えたときに判定したが、この判定を酸素吸着量ＳＭＯ２が予め設定した第３の所定値を超えることによって判定しも良い。
【０１０３】
本実施の形態において、燃料供給停止手段は図３のフローチャートにおいてフラグＸＦＣに「１」が設定されたときにインジェクタにより噴射される燃料を停止する手段に、第１の空燃比検出手段はリニアＡ／Ｆセンサ１５に、第２の空燃比検出手段は酸素濃度センサ１７に、第１の空燃比濃化手段は図６のフローチャートにより設定される空燃比濃化フラグＸＥ１RICHに「１」がセットされて図７の燃料噴射量算出ルーチンのステップＳ５０７にて目標空燃比λTGを「０．９９０」にセットする手段に、第２の空燃比濃化手段は図６のフローチャートにより設定される空燃比濃化フラグＸＥ１RICHに「１」がセットされて図７の燃料噴射量算出ルーチンのステップＳ５０９にて目標空燃比λTGを「０．９９５」にセットする手段に、第１の酸素吸着量推定手段は図８，９のフローチャートに、酸素脱離量算出手段は図８のステップＳ６１４乃至Ｓ６１６の処理に、補正手段は図９のフローチャートに、判定手段は排出ガスの空燃比が第４の所定値よりもリーンな期間が第２の所定期間継続したことを判定する手段に、第２の酸素吸着量推定手段はそのときに下流側触媒に吸着される酸素量を推定する手段に、それぞれ相当し機能する。
【図面の簡単な説明】
【図１】本発明の概略構成を示す全体構成図である
【図２】本発明の一実施の形態を示す制御ブロック図である
【図３】本発明の一実施の形態を示す燃料カットフラグをセットするためのフローチャートである
【図４】ディレイカウンタＣＤFCのカウント処理を示すフローチャートである
【図５】ディレイカウンタＣＤFBのカウント処理を示すフローチャートである
【図６】本発明の一実施の形態を示す空燃比濃化要求を判定するためのフローチャートである
【図７】本発明の一実施の形態を示す燃料噴射制御を示すフローチャートである
【図８】本発明の一実施の形態を示す酸素吸着量を算出するためのフローチャートである
【図９】本発明の一実施の形態を示す下流側触媒の酸素吸着量を更新するためのフローチャートである
【図１０】本発明の一実施の形態を適用したタイミングチャートである
【符号の説明】
１・・・エンジン、
６・・・インジェクタ、
９・・・点火プラグ、
１５・・・リニアＡ／Ｆセンサ、
１６・・・上流側触媒、
１７・・・酸素濃度センサ、
１８・・・下流側触媒。
【図１】
0003966014.tif 000002
【図２】
0003966014.tif 000003
【図３】
0003966014.tif 000004
【図４】
0003966014.tif 000005
【図５】
0003966014.tif 000006
【図６】
0003966014.tif 000007
【図７】
0003966014.tif 000008
【図８】
0003966014.tif 000009
【図９】
0003966014.tif 000010
【図１０】
0003966014.tif 000011