(57)【要約】【課題】排気通路内に複数の触媒が配置されている場合に下流側の触媒の酸素貯蔵量を正確に求める。【解決手段】機関排気通路内に上流側触媒を配置すると共に上流側触媒下流の排気通路内に下流側触媒を配置する。上流側触媒と下流側触媒間の排気通路内に空燃比を検出するための空燃比センサを取り付ける。機関の制御状態がスライトリッチ制御、スライトリーン制御、燃料増量補正、機関への燃料供給停止のうちいずれの状態にあるかに基づいて上流側酸素貯蔵量代表値ＯＸＵを算出し、機関の制御状態及び空燃比センサの出力に基づいて下流側酸素貯蔵量代表値ＯＸＤを算出する。上流側酸素貯蔵量代表値ＯＸＵ又は下流側酸素貯蔵量代表値ＯＸＤが対応する許容下限値ＬＬＵ，ＬＬＤよりも小さくなると、スライトリーン制御を行い、対応する許容上限値ＵＬＵ，ＵＬＤよりも大きくなると、スライトリッチ制御を行う。【選択図】      図７
2005061221.tif 000002
【特許請求の範囲】
【請求項１】
機関排気通路内に上流側触媒を配置すると共に該上流側触媒下流の排気通路内に下流側触媒を配置し、上流側触媒と下流側触媒間の排気通路内に空燃比を検出するための空燃比センサを取り付け、内燃機関の制御状態と空燃比センサの出力とに基づいて下流側触媒の貯蔵酸素量を求め、該求められた下流側触媒の酸素貯蔵量に基づいて該下流側触媒の酸素貯蔵量を制御するようにした内燃機関の制御装置。
【請求項２】
上流側触媒と下流側触媒間の排気通路内に二次空気を供給する二次空気供給手段を具備し、前記求められた下流側触媒の酸素貯蔵量が許容下限量よりも少ないときには二次空気供給手段により二次空気を供給するようにした請求項１に記載の内燃機関の制御装置。
【請求項３】
機関低負荷運転時には二次空気供給手段による二次空気の供給を許容し、機関高負荷運転時には二次空気供給手段による二次空気の供給を禁止するようにした請求項２に記載の内燃機関の制御装置。
【請求項４】
前記求められた下流側触媒の酸素貯蔵量が許容下限量よりも少ないときには、下流側触媒の酸素貯蔵量を増大させるために空燃比を理論空燃比を挟んで強制的に振動させる空燃比振動制御を行うようにした請求項１に記載の内燃機関の制御装置。
【請求項５】
空燃比を理論空燃比を挟んで強制的に振動させながらこのときの前記空燃比センサの出力に基づいて上流側触媒の劣化度合いを検出する劣化度合い検出手段を具備し、前記空燃比振動制御時には劣化度合い検出手段による上流側触媒の劣化度合いの検出を禁止するようにした請求項４に記載の内燃機関の制御装置。
【請求項６】
空燃比振動制御時における平均空燃比に基づいて前記求められた下流側触媒の酸素貯蔵量を補正するようにした請求項４に記載の内燃機関の制御装置。
【請求項７】
前記内燃機関の複数の気筒のうち一部の気筒の運転を行い残りの気筒の運転を停止する減筒運転を行う運転制御手段を具備し、減筒運転が行われると休止気筒の吸気弁又は排気弁が閉弁状態に保持されるようになっており、減筒運転時に前記求められた下流側触媒の酸素貯蔵量が許容下限量よりも少ないときには休止気筒の吸気弁及び排気弁を一時的に開弁させるようにした請求項１に記載の内燃機関の制御装置。
【請求項８】
前記空燃比センサを、空燃比が理論空燃比を横切って変動すると出力が急変するセンサから構成した請求項１に記載の内燃機関の制御装置。
【請求項９】
前記下流側触媒の酸素貯蔵量を制御するために空燃比を制御するようにした請求項１に記載の内燃機関の制御装置。
【請求項１０】
前記内燃機関の制御状態に基づいて前記上流側触媒の貯蔵酸素量を求め、該求められた上流側触媒の貯蔵酸素量又は前記求められた下流側触媒の酸素貯蔵量に基づいて空燃比を制御するようにした請求項１に記載の内燃機関の制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は内燃機関の制御装置に関する。
【０００２】
【従来の技術】
従来より、機関排気通路内に配置された三元触媒の酸素貯蔵量を求め、三元触媒の酸素貯蔵量が少なくなると空燃比をわずかばかりリーンに切り換え、三元触媒の酸素貯蔵量が多くなると空燃比をわずかばかりリッチに切り換えて三元触媒の酸素貯蔵量を目標となる範囲内に維持するようにした内燃機関が知られている。詳しくは後述するが、このようにすると、空燃比が理論空燃比から大きく逸脱したときにも排気ガス中に含まれる未燃ＨＣ、ＣＯ、及びＮＯＸを良好に浄化することができる。
【０００３】
三元触媒の酸素貯蔵量を目標範囲内に維持するためには三元触媒の酸素貯蔵量を正確に求める必要がある。一方、機関減速運転時には機関への燃料供給を一時的に停止するのが一般的であり、機関への燃料供給が停止されると空気が燃焼室を通過して三元触媒内に直接流入する。
【０００４】
そこで、機関への燃料供給が停止されているときには比較的大きな加算項を加算することにより三元触媒の酸素貯蔵量を算出し、機関への燃料供給が停止されておらずかつ空燃比がリーンのときには比較的小さな減算項を減算することにより三元触媒の酸素貯蔵量を算出し、機関への燃料供給が停止されておらずかつ空燃比がリッチのときには比較的小さな加算項を加算することにより三元触媒の酸素貯蔵量を算出するようにした内燃機関が公知である（特許文献１参照）。
【０００５】
【特許文献１】
特開２００１−２２７３８３号公報
【特許文献２】
特開２００２−１１５５９０号公報
【特許文献３】
特開平８−１９３５３７号公報
【０００６】
【発明が解決しようとする課題】
しかしながら、触媒上流の排気通路内に追加の三元触媒が配置されている場合に、上述の方法で算出されるのは二つの三元触媒の酸素貯蔵量の合計値か又は上流側の追加の三元触媒の酸素貯蔵量であり、下流側の三元触媒の酸素貯蔵量を単独で算出することはできないという問題点がある。
【０００７】
従って、本発明の目的は排気通路内に複数の触媒が配置されている場合に下流側の触媒の酸素貯蔵量を正確に求めることができる内燃機関の制御装置を提供することにある。
【０００８】
【課題を解決するための手段】
上記課題を解決するために１番目の発明によれば、機関排気通路内に上流側触媒を配置すると共に該上流側触媒下流の排気通路内に下流側触媒を配置し、上流側触媒と下流側触媒間の排気通路内に空燃比を検出するための空燃比センサを取り付け、内燃機関の制御状態と空燃比センサの出力とに基づいて下流側触媒の貯蔵酸素量を求め、該求められた下流側触媒の酸素貯蔵量に基づいて該下流側触媒の酸素貯蔵量を制御するようにしている。
【０００９】
また、２番目の発明によれば１番目の発明において、上流側触媒と下流側触媒間の排気通路内に二次空気を供給する二次空気供給手段を具備し、前記求められた下流側触媒の酸素貯蔵量が許容下限量よりも少ないときには二次空気供給手段により二次空気を供給するようにしている。
【００１０】
また、３番目の発明によれば２番目の発明において、機関低負荷運転時には二次空気供給手段による二次空気の供給を許容し、機関高負荷運転時には二次空気供給手段による二次空気の供給を禁止するようにしている。
【００１１】
また、４番目の発明によれば１番目の発明において、前記求められた下流側触媒の酸素貯蔵量が許容下限量よりも少ないときには、下流側触媒の酸素貯蔵量を増大させるために空燃比を理論空燃比を挟んで強制的に振動させる空燃比振動制御を行うようにしている。
【００１２】
また、５番目の発明によれば４番目の発明において、空燃比を理論空燃比を挟んで強制的に振動させながらこのときの前記空燃比センサの出力に基づいて上流側触媒の劣化度合いを検出する劣化度合い検出手段を具備し、前記空燃比振動制御時には劣化度合い検出手段による上流側触媒の劣化度合いの検出を禁止するようにしている。
【００１３】
また、６番目の発明によれば４番目の発明において、空燃比振動制御時における平均空燃比に基づいて前記求められた下流側触媒の酸素貯蔵量を補正するようにしている。
【００１４】
また、７番目の発明によれば１番目の発明において、前記内燃機関の複数の気筒のうち一部の気筒の運転を行い残りの気筒の運転を停止する減筒運転を行う運転制御手段を具備し、減筒運転が行われると休止気筒の吸気弁又は排気弁が閉弁状態に保持されるようになっており、減筒運転時に前記求められた下流側触媒の酸素貯蔵量が許容下限量よりも少ないときには休止気筒の吸気弁及び排気弁を一時的に開弁させるようにしている。
【００１５】
また、８番目の発明によれば１番目の発明において、前記空燃比センサを、空燃比が理論空燃比を横切って変動すると出力が急変するセンサから構成している。
【００１６】
また、９番目の発明によれば１番目の発明において、前記下流側触媒の酸素貯蔵量を制御するために空燃比を制御するようにしている。
【００１７】
また、１０番目の発明によれば１番目の発明において、前記内燃機関の制御状態に基づいて前記上流側触媒の貯蔵酸素量を求め、該求められた上流側触媒の貯蔵酸素量又は前記求められた下流側触媒の酸素貯蔵量に基づいて空燃比を制御するようにしている。
【００１８】
【発明の実施の形態】
図１を参照すると、１は例えば四つの気筒を有する機関本体、２はシリンダブロック、３はシリンダヘッド、４はピストン、５は燃焼室、６は吸気弁、７は吸気ポート、８は排気弁、９は排気ポート、１０は点火栓をそれぞれ示す。吸気ポート７は吸気枝管１１を介してサージタンク１２に接続され、サージタンク１２は吸気ダクト１３を介してエアクリーナ１４に接続される。吸気枝管１１内には燃料噴射弁１５が配置され、吸気ダクト１３内にはステップモータ１６により駆動されるスロットル弁１７が配置される。
【００１９】
一方、排気ポート９は排気マニホルド１８を介して上流側ケーシング１９ｕに接続される。この上流側ケーシング１９ｕ内には比較的小容量の上流側触媒２０ｕが収容されている。また、上流側ケーシング１９ｕは排気管２１を介して下流側ケーシング１９ｄに接続される。この下流側ケーシング１９ｄ内には比較的大容量の下流側触媒２０ｄが収容されている。更に、下流側ケーシング１９ｄは排気管２２に接続される。これら上流側触媒２０ｕ及び下流側触媒２０ｄは白金ＰｔやセリアＣｅＯ２を含む三元触媒から構成される。
【００２０】
電子制御ユニット３０はディジタルコンピュータからなり、双方向性バス３１によって相互に接続されたＲＯＭ（リードオンリメモリ）３２、ＲＡＭ（ランダムアクセスメモリ）３３、ＣＰＵ（マイクロプロセッサ）３４、入力ポート３５及び出力ポート３６を具備する。機関本体１には機関冷却水温を検出するための水温センサ３９が取り付けられ、吸気ダクト１３には吸入空気質量流量（以下、吸入空気量という）Ｇａを検出するためのエアフローメータ４０が取り付けられる。また、排気マニホルド１８及び排気管２１には上流側空燃比センサ４１ｕ及び下流側空燃比センサ４１ｄがそれぞれ取り付けられ、排気管２２には下流側触媒２０ｄから排出される排気ガスの温度を検出するための排気温センサ４２が取り付けられる。なお、下流側触媒２０ｄから排出される排気ガスの温度は下流側触媒２０ｄの温度を表している。更に、アクセルペダル（図示しない）にはアクセルペダルの踏み込み量ＤＥＰを検出するための踏み込み量センサ４３が接続される。これらセンサ３９，４０，４１，４２，４３の出力電圧はそれぞれ対応するＡＤ変換器３７を介して入力ポート３５に入力される。更に、入力ポート３５にはクランクシャフトが例えば３０°回転する毎に出力パルスを発生するクランク角センサ４４が接続される。ＣＰＵ３４ではこの出力パルスに基づいて機関回転数Ｎが算出される。一方、出力ポート３６は対応する駆動回路３８を介して点火栓１０、燃料噴射弁１５、及びステップモータ１６に接続される。なお、図１に示される内燃機関の燃焼順序は＃１−＃３−＃４−＃２である。
【００２１】
上流側空燃比センサ４１ｕ及び下流側空燃比センサ４１ｄには、排気ガス中の酸素濃度に応じて出力電圧が変化する酸素濃度センサが用いられる。この酸素濃度センサの出力電圧Ｖは図２に示されるように、空燃比が理論空燃比であるとＶＳ例えば約０．５ボルトになり、空燃比がリッチになると約１．０ボルトになり、空燃比がリーンになると約０ボルトになる。図２からわかるように、空燃比が理論空燃比を横切って変動すると酸素濃度センサの出力電圧Ｖが急変する。
【００２２】
本発明による各実施例では、燃料噴射時間ＴＡＵが次式に基づいて算出される。
【００２３】
ＴＡＵ＝ＴＢ・ＩＮＣ・ＦＡＦ
ここで、ＴＢは基本燃料噴射時間、ＩＮＣは燃料増量補正係数、ＦＡＦはフィードバック補正係数をそれぞれ表している。
【００２４】
基本燃料噴射時間ＴＢは空燃比を理論空燃比に一致させるのに必要な燃料噴射時間であって、例えば図３に示されるように機関負荷Ｌ（＝吸入空気量Ｇａ／機関回転数Ｎ）及び機関回転数Ｎの関数として予めＲＯＭ３２内に記憶されている。
【００２５】
燃料増量補正係数ＩＮＣは例えば暖機運転時に燃料増量補正するための暖機増量補正係数、要求負荷が高いときに燃料増量補正するための高負荷時増量補正係数、下流側触媒２０ｄの温度が高いときに下流側触媒２０ｄの熱劣化を阻止するために燃料増量補正するための高温時増量補正係数などを一まとめにして表したものであり、燃料増量補正する必要がないときには１．０に保持される。
【００２６】
フィードバック補正係数ＦＡＦは上流側空燃比センサ４１ｕの出力に基づいて平均空燃比を目標となる空燃比に一致させるためのものであり、燃料増量補正時のようにオープンループ制御が行われるときには１．０に保持される。
【００２７】
ここで、フィードバック補正係数ＦＡＦの算出方法について、図４及び図５を参照して簡単に説明しておく。
【００２８】
図４はフィードバック補正係数ＦＡＦの算出ルーチンを示している。図４を参照すると、ステップ１７０では上流側空燃比センサ４１ｕの出力電圧ＶＵが基準電圧ＶＲＥＦよりも高いか否か、即ち空燃比が基準電圧ＶＲＥＦで表される基準空燃比に対しリッチであるか否かが判別される。ＶＵ＞ＶＲＥＦのときには次いでステップ１７１に進み、前回の処理サイクルにおける上流側空燃比センサ４１ｕの出力電圧ＶＵが基準電圧ＶＲＥＦ以下であるか否か、即ち前回の処理サイクルにおける空燃比が基準空燃比に対しリーンであったか否かが判別される。ＶＵＰ≦ＶＲＥＦのとき、即ち空燃比が基準空燃比に対しリーンからリッチに切り替わったときには次いでステップ１７２に進み、フィードバック補正係数ＦＡＦからスキップ値ＳＲだけ減算される。その結果、図５に示されるようにフィードバック補正係数ＦＡＦが急激に減少する。次いでステップ１７７に進む。これに対し、ＶＵＰ＞ＶＲＥＦのとき、即ち空燃比が継続して基準空燃比に対しリッチのときには次いでステップ１７３に進み、フィードバック補正係数ＦＡＦから積分値ＩＲ（≪ＳＲ）だけ減算される。その結果、図５に示されるようにフィードバック補正係数ＦＡＦが徐々に減少する。次いでステップ１７７に進む。
【００２９】
一方、ステップ１７０においてＶＵ≦ＶＲＥＦのとき、即ち空燃比が基準空燃比よりもリーンのときには次いでステップ１７４に進み、前回の処理サイクルにおける上流側空燃比センサ４１ｕの出力電圧ＶＵが基準電圧ＶＲＥＦよりも高いか否か、即ち前回の処理サイクルにおける空燃比が基準空燃比に対しリーンであったか否かが判別される。ＶＵＰ＞ＶＲＥＦのとき、即ち空燃比が基準空燃比に対しリッチからリーンに切り替わったときには次いでステップ１７５に進み、フィードバック補正係数ＦＡＦにスキップ値ＳＬだけ加算される。その結果、図５に示されるようにフィードバック補正係数ＦＡＦが急激に増大する。次いでステップ１７７に進む。これに対し、ＶＵＰ≦ＶＲＥＦのとき、即ち空燃比が継続して基準空燃比に対しリーンのときには次いでステップ１７６に進み、フィードバック補正係数ＦＡＦに積分値ＩＬ（≪ＳＬ）だけ加算される。その結果、図５に示されるようにフィードバック補正係数ＦＡＦが徐々に増大する。次いでステップ１７７に進む。
【００３０】
ステップ１７７では、今回の処理サイクルにおける上流側空燃比センサ４１ｕの出力電圧ＶＵがＶＵＰとして記憶される。
【００３１】
このようにしてフィードバック補正係数ＦＡＦにより補正された空燃比は基準電圧ＶＲＥＦで表される基準空燃比を中心として変動し、この場合の平均空燃比は基準電圧ＶＲＥＦで表される基準空燃比に一致する。従って、目標となる空燃比に対応する電圧を基準電圧ＶＲＥＦに設定すれば、平均空燃比を目標となる空燃比に一致させることができるということになる。即ち、例えば目標となる空燃比が理論空燃比のときには、基準電圧ＶＲＥＦを理論空燃比に対応する電圧ＶＳ（図２参照）に設定される。
【００３２】
ところで、三元触媒２０ｕ，２０ｄは酸素貯蔵能力を備えている。従って、空燃比をリッチにすると、三元触媒２０ｕ，２０ｄにおいてＮＯＸが良好に還元され、このとき未燃ＨＣ、ＣＯは三元触媒２０ｕ，２０ｄ内に貯蔵されている酸素によって酸化される。ところが、時間の経過と共に三元触媒２０ｕ，２０ｄの酸素貯蔵量が減少する。これに対し、空燃比をリーンにすると、三元触媒２０ｕ，２０ｄにおいて未燃ＨＣ、ＣＯが良好に酸化され、三元触媒２０ｕ，２０ｄの酸素貯蔵量が増大する。一方、ＮＯＸ、未燃ＨＣ、ＣＯの三成分を三元触媒でもって同時に浄化することを考えると、空燃比を理論空燃比から大きく逸脱させるのは好ましくない。
【００３３】
そこで、本発明による第１実施例では、平均空燃比が理論空燃比よりもわずかばかりリッチになるように空燃比を制御するスライトリッチ制御を行い、三元触媒２０ｕ，２０ｄの酸素貯蔵量が少なくなったときには、平均空燃比が理論空燃比よりもわずかばかりリーンになるように空燃比を制御するスライトリーン制御を行うようにしている。
【００３４】
即ち、本発明による第１実施例では、上流側触媒２０ｕの酸素貯蔵量を代表する上流側酸素貯蔵量代表値ＯＸＵ及び下流側触媒２０ｄの酸素貯蔵量を代表する下流側酸素貯蔵量代表値ＯＸＤがそれぞれ求められる。スライトリッチ制御が行われているときには、上流側酸素貯蔵量代表値ＯＸＵ及び下流側酸素貯蔵量代表値ＯＸＤはそれぞれ次第に減少し、次いで上流側酸素貯蔵量代表値ＯＸＵが対応する許容下限値ＬＬＵよりも少なくなるか又は下流側酸素貯蔵量代表値ＯＸＤが対応する許容下限値ＬＬＤよりも少なくなると、スライトリーン制御に切り替えられる。スライトリーン制御が行われると、上流側酸素貯蔵量代表値ＯＸＵ及び下流側酸素貯蔵量代表値ＯＸＤはそれぞれ次第に増大し、次いで上流側酸素貯蔵量代表値ＯＸＵが対応する許容上限量ＵＬＵよりも多くなるか又は下流側酸素貯蔵量代表値ＯＸＤが対応する許容上限量ＵＬＤよりも多くなると、スライトリッチ制御に戻される。
【００３５】
言い換えると、上流側触媒２０ｕの酸素貯蔵量が許容下限値ＬＬＵと許容上限値ＵＬＵとにより定められる目標範囲内になるように、又は下流側触媒２０ｄの酸素貯蔵量が許容下限値ＬＬＤと許容上限値ＵＬＤとにより定められる目標範囲内になるように、空燃比が制御され、それにより上流側触媒２０ｕ及び下流側触媒２０ｄの酸素貯蔵量が制御される。その結果、ＮＯＸ、未燃ＨＣ、ＣＯの三成分を良好に浄化することができる。
【００３６】
スライトリッチ制御を行うべきときには図４及び図５を参照して上述した基準電圧ＶＲＥＦが理論空燃比に対応するＶＳよりもわずかばかり高い電圧ＶＲ（図２参照）に設定され、スライトリーン制御を行うべきときには基準電圧ＶＲＥＦが理論空燃比に対応するＶＳよりもわずかばかり低い電圧ＶＬ（図２参照）に設定される。なお、スライトリッチ制御が行われたときの空燃比の挙動が図６（Ａ）に、スライトリーン制御が行われたときの空燃比の挙動が図６（Ｂ）に、それぞれ示されている。
【００３７】
このようなスライトリッチ制御とスライトリーン制御との間の切り替えを正確に行うためには上流側酸素貯蔵量代表値ＯＸＵ及び下流側酸素貯蔵量代表値ＯＸＤをそれぞれ正確に求める必要がある。
【００３８】
本発明による第１実施例では、上流側酸素貯蔵量代表値ＯＸＵ及び下流側酸素貯蔵量代表値ＯＸＤの増減値ΔＯＸＵ，ΔＯＸＤがそれぞれ繰り返し求められ、これら増減値ΔＯＸＵ，ΔＯＸＤをそれぞれ積算することにより上流側酸素貯蔵量代表値ＯＸＵ及び下流側酸素貯蔵量代表値ＯＸＤが求められる（ＯＸＵ＝ＯＸＵ＋ΔＯＸＵ，ＯＸＤ＝ＯＸＤ＋ΔＯＸＤ）。その上で、増減値ΔＯＸＵ，ΔＯＸＤは次のようにして算出される。
【００３９】
まず、スライトリッチ制御が行われているときにはこのとき排気ガス中に含まれている未燃ＨＣ、ＣＯによって上流側酸素貯蔵量代表値ＯＸＵ及び下流側酸素貯蔵量代表値ＯＸＤが減少し、これらの減少分は吸入空気量Ｇａに比例する。そこで、スライトリッチ制御が行われているときには、吸入空気量Ｇａ及び重み係数ＫＲＵ，ＫＲＤ（＞０）用い、次式に基づいて増減値ΔＯＸＵ，ΔＯＸＤが算出される。
【００４０】
ΔＯＸＵ＝−Ｇａ・ＫＲＵ
ΔＯＸＤ＝−Ｇａ・ＫＲＤ
ところが、スライトリッチ制御が行われているときの平均空燃比はわずかばかりリッチであるので、スライトリーン制御からスライトリッチ制御に切り替えられた後しばらくの間は、下流側空燃比センサ４１ｄにより検出される空燃比がリーンの場合があり、この場合には下流側酸素貯蔵量代表値ＯＸＤは減少しておらず、むしろ増大している。そこで、この場合には、重み係数ＫＲＣ（＞０）を用い、次式に基づいて下流側酸素貯蔵量代表値ＯＸＤの増減値ΔＯＸＤが算出される。
【００４１】
ΔＯＸＤ＝Ｇａ・ＫＲＣ
なお、重み係数ＫＲＵ，ＫＲＤは互いに同じ値でも異なる値でもよく、ＫＲＤ，ＫＲＣも互いに同じ値でも異なる値でもよい。
【００４２】
これに対し、スライトリーン制御が行われているときには、このとき排気ガス中に含まれている酸素によって上流側酸素貯蔵量代表値ＯＸＵ及び下流側酸素貯蔵量代表値ＯＸＤが増大する。そこで、スライトリーン制御が行われているときには、重み係数ＫＬＵ，ＫＬＤ（＞０）用い、次式に基づいて増減値ΔＯＸＵ，ΔＯＸＤが算出される。
【００４３】
ΔＯＸＵ＝Ｇａ・ＫＬＵ
ΔＯＸＤ＝Ｇａ・ＫＬＤ
ところが、スライトリーン制御が行われているときの平均空燃比はわずかばかりリーンであるので、スライトリッチ制御からスライトリーン制御に切り替えられた後しばらくの間は、下流側空燃比センサ４１ｄにより検出される空燃比がリッチの場合がある。このような場合には、下流側酸素貯蔵量代表値ＯＸＤは増大している。このような場合には、重み係数ＫＬＣ（＞０）を用い、次式に基づいて下流側酸素貯蔵量代表値ＯＸＤの増減値ΔＯＸＤが算出される。
【００４４】
ΔＯＸＤ＝−Ｇａ・ＫＬＣ
なお、重み係数ＫＬＵ，ＫＬＤは互いに同じ値でも異なる値でもよく、ＫＬＤ，ＫＬＣも互いに同じ値でも異なる値でもよい。
【００４５】
一方、燃料増量補正が行われているときには、上流側酸素貯蔵量代表値ＯＸＵ及び下流側酸素貯蔵量代表値ＯＸＤが減少し、これらの減少分は吸入空気量Ｇａ及び上述した燃料増量補正係数ＩＮＣに比例する。そこで、燃料増量補正が行われているときには、重み係数ＫＩＮＣＵ，ＫＩＮＣＤ（＞０）用い、次式に基づいて増減値ΔＯＸＵ，ΔＯＸＤが算出される。
【００４６】
ΔＯＸＵ＝−（Ｇａ・ＫＩＮＣＵ）・ＩＮＣ
ΔＯＸＤ＝−（Ｇａ・ＫＩＮＣＤ）・ＩＮＣ
ただし、燃料増量補正が行われているにもかかわらず、下流側空燃比センサ４１ｄにより検出される空燃比がリーンの場合には、下流側酸素貯蔵量代表値ＯＸＤの増減値ΔＯＸＤはゼロとされる（ΔＯＸＤ＝０）。燃料増量補正が行われているときには空燃比はかなりリッチであり、下流側空燃比センサ４１ｄにより検出される空燃比がリーンになることはほとんどないと考えられる。従って、このような場合には増減値ΔＯＸＤをゼロとした方が下流側酸素貯蔵量代表値ＯＸＤをより正確に求めることができる。
【００４７】
なお、重み係数ＫＩＮＣＵ，ＫＩＮＣＤは互いに同じ値でも異なる値でもよい。
【００４８】
更に、図１に示される内燃機関では、機関減速運転時に機関への燃料供給が一時的に停止される。機関への燃料供給が停止されているときには、空気又は酸素が燃焼室５を通過して上流側触媒２０ｕ及び下流側触媒２０ｄ内に流入する。そこで、機関への燃料供給が停止されているときには、重み係数ＫＦＣＵ，ＫＦＣＤ（＞０）用い、次式に基づいて増減値ΔＯＸＵ，ΔＯＸＤが算出される。
【００４９】
ΔＯＸＵ＝Ｇａ・ＫＦＣＵ
ΔＯＸＤ＝Ｇａ・ＫＦＣＤ
ただし、機関への燃料供給が停止されているにもかかわらず、下流側空燃比センサ４１ｄにより検出される空燃比がリッチの場合には、下流側酸素貯蔵量代表値ＯＸＤの増減値ΔＯＸＤはゼロとされる（ΔＯＸＤ＝０）。
【００５０】
このように、本発明による第１実施例では、機関の制御状態に基づいて、即ち機関の制御状態がスライトリッチ制御、スライトリーン制御、燃料増量補正、機関への燃料供給停止のうちいずれの状態にあるかに基づいて上流側酸素貯蔵量代表値ＯＸＵが求められる。これに対し、機関の制御状態及び下流側空燃比センサ４１ｄの出力に基づいて下流側酸素貯蔵量代表値ＯＸＤが求められる。この点、機関の制御状態に基づいて求められた下流側酸素貯蔵量代表値ＯＸＤを、下流側空燃比センサ４１ｄの出力に基づいて補正しているという見方もできる。
【００５１】
なお、上流側触媒２０ｕ及び下流側触媒２０ｄが実際に貯蔵し得る酸素の量には限界があり、即ち上流側触媒２０ｕ及び下流側触媒２０ｄの貯蔵酸素量はそれぞれ対応する可能最小量よりも小さくなることはなく、それぞれ対応する可能最大量よりも大きくなることはない。そこで、算出された酸素貯蔵量代表値ＯＸＵ，ＯＸＤが上述の可能最小量に対応する可能最小値ＯＸＵｍ，ＯＸＤｍ（例えばゼロ）よりも小さくなったときには、酸素貯蔵量代表値ＯＸＵ，ＯＸＤをこれら可能最小値ＯＸＵｍ，ＯＸＤｍまで戻し、算出された酸素貯蔵量代表値ＯＸＵ，ＯＸＤが上述の可能最大量に対応する可能最大値ＯＸＵＭ，ＯＸＤＭよりも大きくなったときには、酸素貯蔵量代表値ＯＸＵ，ＯＸＤをこれら可能最大値ＯＸＵＭ，ＯＸＤＭまで戻すようにしている。以下では、このような処理をガード処理と称することにする。
【００５２】
次に、図７から図９までを参照しながら、本発明による第１実施例を更に説明する。図７から図９までにおいて、ＸＬはリーンフラグを、ＶＤは下流側空燃比センサ４１ｄの出力電圧を、ＸＩＮＣは燃料増量補正フラグを、ＸＦＣは燃料供給停止フラグを、それぞれ表している。リーンフラグＸＬはスライトリーン制御を行うべきときにセットされ（ＸＬ＝１）、スライトリッチ制御を行うべきときにリセットされる（ＸＬ＝０）ものである。燃料増量補正フラグＸＩＮＣは燃料増量補正を行うべきときにセットされ（ＸＩＮＣ＝１）、それ以外はリセットされる（ＸＩＮＣ＝０）ものである。燃料供給停止フラグＸＦＣは機関への燃料供給を停止すべきときにセットされ（ＸＦＣ＝１）、それ以外はリセットされる（ＸＦＣ＝０）ものである。
【００５３】
図７に示される例を参照すると、例えばリーンフラグＸＬがリセットされており（ＸＬ＝０）従ってスライトリッチ制御が行われているときに、上流側酸素貯蔵量代表値ＯＸＵがその許容下限値ＬＬＵよりも小さくなると（図７のａ１参照）、リーンフラグＸＬがセットされ（ＸＬ＝１）、従ってスライトリーン制御に切り替えられる。スライトリーン制御が行われているときには、上流側酸素貯蔵量代表値ＯＸＵはＧａ・ＫＬＵずつ増大され（図７のａ２参照）、下流側酸素貯蔵量代表値ＯＸＤは下流側空燃比センサ４１ｄにより検出される空燃比がリッチのうちはＧａ・ＫＬＣずつ減少され（図７のａ３参照）、下流側空燃比センサ４１ｄにより検出される空燃比がリーンに切り替わると（図７のａ４参照）、Ｇａ・ＫＬＤずつ増大される（図７のａ５参照）。
【００５４】
次いで、例えば下流側酸素貯蔵量代表値ＯＸＤがその許容上限値ＵＬＤよりも大きくなると（図７のａ６１参照）、リーンフラグＸＬがリセットされ（ＸＬ＝０）、従ってスライトリッチ制御に切り替えられる。スライトリッチ制御が行われているときには、上流側酸素貯蔵量代表値ＯＸＵはＧａ・ＫＲＵずつ減少される（図７のａ７参照）。一方、下流側酸素貯蔵量代表値ＯＸＤは下流側空燃比センサ４１ｄにより検出される空燃比がリーンのうちはＧａ・ＫＲＣずつ増大され（図７のａ８参照）、下流側空燃比センサ４１ｄにより検出される空燃比がリッチに切り替わると（図７のａ９参照）、Ｇａ・ＫＲＤずつ減少される（図７のａ１０参照）。
【００５５】
次に図８に示される例を参照すると、燃料増量補正フラグＸＩＮＣがセットされ（ＸＩＮＣ＝１）従って燃料増量補正が開始されると（図８のｂ１参照）、上流側酸素貯蔵量代表値ＯＸＵは（Ｇａ・ＫＩＮＣＵ）・ＩＮＣずつ急激に減少される（図８のｂ２参照）。一方、下流側酸素貯蔵量代表値ＯＸＤは下流側空燃比センサ４１ｄにより検出される空燃比がリーンのうちは一定に保持され（図８のｂ３参照）、下流側空燃比センサ４１ｄにより検出される空燃比がリッチに切り替わると（図８のｂ４参照）、（Ｇａ・ＫＩＮＣＤ）・ＩＮＣずつ急激に減少される（図８のｂ５参照）。次いで、燃料増量補正フラグＸＩＮＣがリセットされ（ＸＩＮＣ＝０）従って燃料増量補正が停止されると（図８のｂ６参照）、例えばスライトリーン制御が再開され、上流側酸素貯蔵量代表値ＯＸＵ及び下流側酸素貯蔵量代表値ＯＸＤが増大される。
【００５６】
なお、図８のｂ７はガード処理が行われている場合を示しており、この例では上流側酸素貯蔵量代表値ＯＸＵが可能最小値ＯＸＵｍに制限されている。
【００５７】
更に図９に示される例を参照すると、燃料供給停止フラグＸＦＣがセットされ（ＸＦＣ＝１）従って機関への燃料供給が停止されると（図９のｃ１参照）、上流側酸素貯蔵量代表値ＯＸＵはＧａ・ＫＦＣＵずつ急激に増大される（図９のｃ２参照）。一方、下流側酸素貯蔵量代表値ＯＸＤは下流側空燃比センサ４１ｄにより検出される空燃比がリッチのうちは一定に保持され（図９のｃ３参照）、下流側空燃比センサ４１ｄにより検出される空燃比がリーンに切り替わると（図９のｃ４参照）、Ｇａ・ＫＦＣＤずつ急激に増大される（図９のｃ５参照）。次いで、燃料供給停止フラグＸＦＣがリセットされ（ＸＦＣ＝０）従って機関への燃料供給が再開されると（図９のｃ６参照）、例えばスライトリッチ制御が再開され、上流側酸素貯蔵量代表値ＯＸＵ及び下流側酸素貯蔵量代表値ＯＸＤが減少される。
【００５８】
なお、図９のｃ７はガード処理が行われている場合を示しており、この例では上流側酸素貯蔵量代表値ＯＸＵが可能最大値ＯＸＵＭに制限されている。
【００５９】
図１０は本発明による第１実施例の酸素貯蔵量制御ルーチンを示している。このルーチンは予め定められた設定時間毎の割り込みによって実行される。
【００６０】
図１０を参照すると、ステップ１００では、上流側酸素貯蔵量代表値ＯＸＵ及び下流側酸素貯蔵量代表値ＯＸＤの算出ルーチンが実行される。このルーチンは図１１及び図１２に示されている。続くステップ１３０では、リーンフラグＸＬの制御ルーチンが実行される。このルーチンは図１３に示されている。
【００６１】
酸素貯蔵量代表値ＯＸＵ，ＯＸＤの算出ルーチンを示す図１１及び図１２を参照すると、まずステップ１０１では燃料供給停止フラグＸＦＣがセットされているか否かが判別される。燃料供給停止フラグＸＦＣがリセットされているとき（ＸＦＣ＝０）には、次いでステップ１０２に進み、燃料増量補正フラグＸＩＮＣがセットされているか否かが判別される。燃料増量補正フラグＸＩＮＣがリセットされているとき（ＸＩＮＣ＝０）には、次いでステップ１０３に進み、リーンフラグＸＬがセットされているか否かが判別される。リーンフラグＸＬがリセットされているとき（ＸＬ＝０）、即ちスライトリッチ制御が行われているときには次いでステップ１０４に進み、増減値ΔＯＸＵ，ΔＯＸＤがそれぞれ算出される（ΔＯＸＵ＝−Ｇａ・ＫＲＵ，ΔＯＸＤ＝−Ｇａ・ＫＲＤ）。続くステップ１０５では、下流側空燃比センサ４１ｄの出力電圧ＶＤが理論空燃比に対応する電圧ＶＳよりも低いか否かが判別される。ＶＤ＜ＶＳのとき、即ちスライトリーン制御が行われているときに下流側空燃比センサ４１ｄにより検出される空燃比がリーンのときにはステップ１０６に進み、下流側酸素貯蔵量代表値ＯＸＤが算出される（ΔＯＸＤ＝Ｇａ・ＫＲＣ）。次いでステップ１１６に進む。これに対し、ＶＤ≧ＶＳのとき、即ちスライトリッチ制御が行われているときに下流側空燃比センサ４１ｄにより検出される空燃比がリッチのときにはステップ１０５からステップ１１６にジャンプする。
【００６２】
これに対し、リーンフラグＸＬがセットされているとき（ＸＬ＝１）、即ちスライトリーン制御が行われているときにはステップ１０３からステップ１０７に進み、増減値ΔＯＸＵ，ΔＯＸＤがそれぞれ算出される（ΔＯＸＵ＝Ｇａ・ＫＬＵ，ΔＯＸＤ＝Ｇａ・ＫＬＤ）。続くステップ１０８では、下流側空燃比センサ４１ｄの出力電圧ＶＤが理論空燃比に対応する電圧ＶＳよりも高いか否かが判別される。ＶＤ＞ＶＳのとき、即ちスライトリーン制御が行われているときに下流側空燃比センサ４１ｄにより検出される空燃比がリッチのときにはステップ１０９に進み、下流側酸素貯蔵量代表値ＯＸＤが算出される（ΔＯＸＤ＝−Ｇａ・ＫＬＣ）。次いでステップ１１６に進む。これに対し、ＶＤ≦ＶＳのとき、即ちスライトリーン制御が行われているときに下流側空燃比センサ４１ｄにより検出される空燃比がリーンのときにはステップ１０８からステップ１１６にジャンプする。
【００６３】
燃料増量補正フラグＸＩＮＣがセットされているとき（ＸＩＮＣ＝１）には、ステップ１０２からステップ１１０に進み、増減値ΔＯＸＵ，ΔＯＸＤがそれぞれ算出される（ΔＯＸＵ＝−（Ｇａ・ＫＩＮＣＵ）・ＩＮＣ，ΔＯＸＤ＝−（Ｇａ・ＫＩＮＣＤ）・ＩＮＣ）。続くステップ１１１では、下流側空燃比センサ４１ｄの出力電圧ＶＤが理論空燃比に対応する電圧ＶＳよりも低いか否かが判別される。ＶＤ＜ＶＳのとき、即ち燃料増量補正が行われているときに下流側空燃比センサ４１ｄにより検出される空燃比がリーンのときにはステップ１１２に進み、下流側酸素貯蔵量代表値ＯＸＤの増減値ΔＯＸＤがゼロとされる（ΔＯＸＤ＝０）。次いでステップ１１６に進む。これに対し、ＶＤ≧ＶＳのとき、即ち燃料増量補正が行われているときに下流側空燃比センサ４１ｄにより検出される空燃比がリッチのときにはステップ１１１からステップ１１６にジャンプする。
【００６４】
燃料供給停止フラグＸＦＣがセットされているとき（ＸＦＣ＝１）、即ち機関への燃料供給が停止されているときにはステップ１０１からステップ１１３に進み、増減値ΔＯＸＵ，ΔＯＸＤがそれぞれ算出される（ΔＯＸＵ＝Ｇａ・ＫＦＣＵ，ΔＯＸＤ＝Ｇａ・ＫＦＣＤ）。続くステップ１１４では、下流側空燃比センサ４１ｄの出力電圧ＶＤが理論空燃比に対応する電圧ＶＳよりも高いか否かが判別される。ＶＤ＞ＶＳのとき、即ち機関への燃料供給が停止されているときに下流側空燃比センサ４１ｄにより検出される空燃比がリッチのときにはステップ１１５に進み、下流側酸素貯蔵量代表値ＯＸＤの増減値ΔＯＸＤがゼロとされる（ΔＯＸＤ＝０）。次いでステップ１１６に進む。これに対し、ＶＤ≦ＶＳのとき、即ち機関への燃料供給が停止されているときに下流側空燃比センサ４１ｄにより検出される空燃比がリーンのときにはステップ１１４からステップ１１６にジャンプする。
【００６５】
ステップ１１６では、上流側酸素貯蔵量代表値ＯＸＵ及び下流側酸素貯蔵量代表値ＯＸＤがそれぞれ算出される（ＯＸＵ＝ＯＸＵ＋ΔＯＸＵ，ＯＸＤ＝ＯＸＤ＋ΔＯＸＤ）。続くステップ１１７では、ガード処理が行われる。
【００６６】
リーンフラグＸＬの制御ルーチンを示す図１３を参照すると、ステップ１３１ではリーンフラグＸＬがセットされているか否かが判別される。リーンフラグＸＬがリセットされているとき（ＸＬ＝０）には、次いでステップ１３２に進み、上流側酸素貯蔵量代表値ＯＸＵ又は下流側酸素貯蔵量代表値ＯＸＤがそれぞれ対応する許容下限値ＬＬＵ，ＬＬＤよりも小さいかが判別される。ＯＸＵ≧ＬＬＵかつＯＸＤ≧ＬＬＤのときには処理サイクルを終了し、ＯＸＵ＜ＬＬＵ又はＯＸＤ＜ＬＬＤのときには次いでステップ１３３に進み、リーンフラグＸＬがセットされる（ＸＬ＝１）。
【００６７】
リーンフラグＸＬがセットされているとき（ＸＬ＝１）には、ステップ１３１からステップ１３４に進み、上流側酸素貯蔵量代表値ＯＸＵ又は下流側酸素貯蔵量代表値ＯＸＤがそれぞれ対応する許容上限値ＵＬＵ，ＵＬＤよりも大きいか否かが判別される。ＯＸＵ≦ＵＬＵかつＯＸＤ≦ＵＬＤのときには処理サイクルを終了し、ＯＸＵ＞ＵＬＵ又はＯＸＤ＞ＵＬＤのときには次いでステップ１３５に進み、リーンフラグＸＬがリセットされる（ＸＬ＝０）。
【００６８】
図１４は本発明による第１実施例の燃料供給制御ルーチンを示している。このルーチンは例えば予め定められた設定クランク覚悟との割り込みによって実行される。
【００６９】
図１４を参照すると、まずステップ１５０では、燃料供給停止フラグＸＦＣがセットされているか否かが判別される。燃料供給停止フラグＸＦＣがセットされているとき（ＸＦＣ＝１）には次いでステップ１５１に進み、基本燃料噴射時間ＴＢが図３のマップから算出される。続くステップ１５２では燃料増量補正フラグＸＩＮＣがセットされているか否かが判別される。燃料増量補正フラグＸＩＮＣがリセットされているとき（ＸＩＮＣ＝０）には、次いでステップ１５３に進み、リーンフラグＸＬがセットされているか否かが判別される。リーンフラグＸＬがリセットされているとき（ＸＬ＝０）、即ちスライトリッチ制御を行うべきときには次いでステップ１５４に進み、基準電圧ＶＲＥＦが上述のＶＲに設定される。次いでステップ１５６に進む。これに対し、リーンフラグＸＬがセットされているとき（ＸＬ＝１）、即ちスライトリーン制御を行うべきときには次いでステップ１５５に進み、基準電圧ＶＲＥＦが上述のＶＬに設定される。次いでステップ１５６に進む。ステップ１５６では燃料増量補正係数ＩＮＣが１．０に固定され、続くステップ１５７では図４に示されるフィードバック補正係数ＦＡＦの算出ルーチンが実行される。次いでステップ１６０にジャンプする。これに対し、燃料増量補正フラグＸＩＮＣがせっとされているとき（ＸＩＮＣ＝１）にはステップ１５２からステップ１５８に進み、燃料増量補正係数ＩＮＣが算出される。続くステップ１５９ではフィードバック補正係数ＦＡＦが１．０に固定される。次いでステップ１６０にジャンプする。
【００７０】
ステップ１６０では燃料噴射時間ＴＡＵが算出される（ＴＡＵ＝ＴＢ・ＩＮＣ・ＦＡＦ）。続くステップ１６１では、燃料噴射弁１５からＴＡＵだけ燃料が噴射される。
【００７１】
一方、燃料供給停止フラグＸＦＣがセットされているとき（ＸＦＣ＝１）には、ステップ１５０からステップ１６２に進み、機関への燃料供給が停止される。
【００７２】
図１６は燃料供給停止フラグＸＦＣの制御ルーチンを示している。このルーチンは予め定められた設定時間毎の割り込みによって実行される。
【００７３】
図１６を参照すると、まずステップ１８０では、アクセルペダルの踏み込み量ＤＥＰがゼロであるか否かが判別される。ＤＥＰ＝０のときには次いでステップ１８１に進み、機関回転数Ｎが第１の設定回転数Ｎ１よりも低いか否かが判別される。Ｎ≧Ｎ１のときには次いでステップ１８２に進み、機関回転数Ｎが第２の設定回転数Ｎ２（＜Ｎ１）よりも高いか否かが判別される。Ｎ＞Ｎ２のときには次いでステップ１８３に進み、燃料供給停止フラグＸＦＣがセットされる（ＸＦＣ＝１）。
【００７４】
これに対し、ステップ１８０においてＤＥＰ＞０のとき、ステップ１８１においてＮ＜Ｎ１のとき、又はステップ１８２においてＮ≦Ｎ２のときには、次いでステップ１８４に進み、燃料供給停止フラグＸＦＣがリセットされる（ＸＦＣ＝０）。
【００７５】
図１７は燃料増量補正フラグＸＩＮＣの制御ルーチンを示している。このルーチンは予め定められた設定時間毎の割り込みによって実行される。
【００７６】
図１７を参照すると、まずステップ１９０では、燃料増量補正を行うべきか否かが判別される。燃料増量補正を行うべきときにはステップ１９１に進み、燃料増量補正フラグＸＩＮＣがセットされる（ＸＩＮＣ＝１）。これに対し、燃料増量補正を行うべきでないときにはステップ１９２に進み、燃料増量補正フラグＸＩＮＣがリセットされる（ＸＩＮＣ＝０）。
【００７７】
次に、本発明による第２実施例を説明する。この第２実施例では図１８に示されるように、上流側触媒２０ｕと下流側触媒２０ｄ間の排気管２１に、二次空気を供給するための空気ポンプ５０が接続される。この空気ポンプ５０は電子制御ユニット３０からの出力信号に基づいて制御される。空気ポンプ５０を運転して二次空気供給を行うと、下流側触媒２０ｄ内の貯蔵酸素量を増大させることができる。
【００７８】
上述した本発明による第１実施例では、上流側酸素貯蔵量代表値ＯＸＵ及び下流側酸素貯蔵量代表値ＯＸＤに基づいてスライトリッチ制御を行うかスライトリーン制御を行うかが決定される。
【００７９】
これに対し、本発明による第２実施例では、上流側酸素貯蔵量代表値ＯＸＵのみに基づいてスライトリッチ制御を行うかスライトリーン制御を行うかが決定され、下流側酸素貯蔵量代表値ＯＸＤに基づいて空気ポンプ５０による二次空気供給を行うか否かが決定される。
【００８０】
次に、図１９を参照しながら本発明による第２実施例を更に説明する。図１９において、ＸＳＡは二次空気供給フラグを表している。この二次空気供給フラグＸＳＡは空気ポンプ５０による二次空気供給を行うべきときにセットされ（ＸＳＡ＝１）、それ以外はリセットされる（ＸＳＡ＝０）ものである。
【００８１】
例えばリーンフラグＸＬがセットされており（ＸＬ＝１）従ってスライトリーン制御が行われているときに、上流側酸素貯蔵量代表値ＯＸＵがその許容上限値ＵＬＵよりも大きくなると（図１９のｄ１参照）、リーンフラグＸＬがリセットされ（ＸＬ＝０）、従ってスライトリッチ制御に切り替えられる。スライトリッチ制御が行われると上流側酸素貯蔵量代表値ＯＸＵが次第に減少され、次いで上流側酸素貯蔵量代表値ＯＸＵがその許容下限値ＬＬＵよりも小さくなると（図１９のｄ２参照）、リーンフラグＸＬがセットされ（ＸＬ＝１）、従ってスライトリーン制御に切り替えられる。
【００８２】
一方、スライトリッチ制御が行われると、下流側酸素貯蔵量代表値ＯＸＤが次第に減少され、次いで下流側酸素貯蔵量代表値ＯＸＤがその許容下限値ＬＬＤよりも小さくなると（図１９のｄ３参照）、二次空気供給フラグＸＳＡがセットされる（ＸＳＡ＝１）。その結果、空気ポンプ５０による二次空気供給が開始される。
【００８３】
二次空気供給が行われているときには、第１実施例と同様に機関の制御状態及び下流側空燃比センサ４１ｄの出力に基づき算出された下流側酸素貯蔵量代表値ＯＸＤに、更に増大値ＫＳＡ（＞０）が加算される（ＯＸＤ＝ＯＸＤ＋ＫＳＡ）。この増大値ＫＳＡは例えば空気ポンプ５０の単位時間当たりの吐出空気量に基づいて決定される。この場合、機関の制御状態及び下流側空燃比センサ４１ｄの出力に基づき算出された下流側酸素貯蔵量代表値ＯＸＤを、二次空気供給の状態に応じて補正しているという見方もできる。
【００８４】
次いで、二次空気供給が例えば供給時間ｔＳＡだけ行われると（図１９のｄ４参照）、二次空気供給フラグＸＳＡがリセットされ（ＸＳＡ＝０）、従って二次空気供給が停止される。なお、供給時間ｔＳＡは下流側酸素貯蔵量代表値ＯＸＤを目標となる値、例えば許容上限値ＵＬＤと許容下限値ＬＬＤの平均値（＝（ＵＬＤ＋ＬＬＤ）／２）まで増大させるのに必要な時間であって、二次空気供給を開始すべきときの下流側酸素貯蔵量代表値ＯＸＤと空気ポンプ５０の単位時間当たりの吐出空気量とに基づいて設定することができる。
【００８５】
ところで、空気ポンプ５０から供給される二次空気量を正確に制御するのは困難であり、二次空気供給により下流側酸素貯蔵量代表値ＯＸＤがその許容上限値ＵＬＤを越える場合もありうる。このような場合にも、下流側触媒２０ｄから流出するＮＯＸの量を低減するために、本発明による第２実施例では、機関低負荷運転時に二次空気供給を許容し、機関高負荷運転時に二次空気供給を禁止するようにしている。
【００８６】
図２０は本発明による第２実施例の酸素貯蔵量制御ルーチンを示している。このルーチンは予め定められた設定時間毎の割り込みによって実行される。
【００８７】
図２０を参照すると、ステップ２００では、図１１及び図１２に示される上流側酸素貯蔵量代表値ＯＸＵ及び下流側酸素貯蔵量代表値ＯＸＤの算出ルーチンが実行される。続くステップ２３０では、本発明による第２実施例のリーンフラグＸＬの制御ルーチンが実行される。このルーチンは図２１に示されている。続くステップ２４０では二次空気供給フラグＸＳＡの制御ルーチンが実行される。このルーチンは図２２に示されている。
【００８８】
本発明による第２実施例のリーンフラグＸＬの制御ルーチンを示す図２１を参照すると、ステップ２３１ではリーンフラグＸＬがセットされているか否かが判別される。リーンフラグＸＬがリセットされているとき（ＸＬ＝０）には、次いでステップ２３２に進み、上流側酸素貯蔵量代表値ＯＸＵが対応する許容下限値ＬＬＵよりも小さいかが判別される。ＯＸＵ≧ＬＬＵのときには処理サイクルを終了し、ＯＸＵ＜ＬＬＵのときには次いでステップ２３３に進み、リーンフラグＸＬがセットされる（ＸＬ＝１）。
【００８９】
リーンフラグＸＬがセットされているとき（ＸＬ＝１）には、ステップ２３１からステップ２３４に進み、上流側酸素貯蔵量代表値ＯＸＵが対応する許容上限値ＵＬＵよりも大きいか否かが判別される。ＯＸＵ≦ＵＬＵのときには処理サイクルを終了し、ＯＸＵ＞ＵＬＵのときには次いでステップ２３５に進み、リーンフラグＸＬがリセットされる（ＸＬ＝０）。
【００９０】
二次空気供給フラグＸＳＡの制御ルーチンを示す図２２を参照すると、ステップ２４１では機関負荷Ｌ（＝吸入空気量Ｇａ／機関回転数Ｎ）が予め定められた設定負荷Ｌ１よりも低いか否かが判別される。Ｌ＜Ｌ１のとき、即ち機関低負荷運転時には次いでステップ２４２に進み、二次空気供給フラグＸＳＡがセットされているか否かが判別される。二次空気供給フラグＸＳＡがリセットされているとき（ＸＳＡ＝０）には次いでステップ２４３に進み、下流側酸素貯蔵量代表値ＯＸＤが対応する許容下限値ＬＬＤよりも小さいかが判別される。ＯＸＤ≧ＬＬＤのときには処理サイクルを終了し、ＯＸＤ＜ＬＬＤのときには次いでステップ２４４に進み、二次空気供給フラグＸＳＡがセットされる（ＸＳＡ＝１）。続くステップ２４５では供給時間ｔＳＡが設定される。
【００９１】
これに対し、二次空気供給フラグＸＳＡがセットされているとき（ＸＳＡ＝１）、即ち二次空気供給が行われているときには、ステップ２４２からステップ２４６に進み、下流側酸素貯蔵量代表値ＯＸＤが算出される（ＯＸＤ＝ＯＸＤ＋ＫＳＡ）。続くステップ２４７ではガード処理が行われる。続くステップ２４８では、二次空気供給が開始されてから供給時間ｔＳＡが経過したか否かが判別される。二次空気供給が開始されてから供給時間ｔＳＡが経過していないときには処理サイクルを終了し、二次空気供給が開始されてから供給時間ｔＳＡが経過したときには次いでステップ２４９に進み、二次空気供給フラグＸＳＡがリセットされる（ＸＳＡ＝０）。
【００９２】
一方、Ｌ≧Ｌ１のとき、即ち機関高負荷運転時にはステップ２４１からステップ２４９に進み、二次空気供給フラグＸＳＡがリセットされる（ＸＳＡ＝０）。
【００９３】
図２３は本発明による第２実施例の二次空気供給制御ルーチンを示している。このルーチンは予め定められた設定時間毎の割り込みによって実行される。
【００９４】
図２３を参照すると、まずステップ２９０では二次空気供給フラグＸＳＡがセットされているか否かが判別される。二次空気供給フラグＸＳＡがセットされているとき（ＸＳＡ＝１）には次いでステップ２９１に進み、空気ポンプ５０が運転される。これに対し、二次空気供給フラグＸＳＡがリセットされているとき（ＸＳＡ＝０）には次いでステップ２９２に進み、空気ポンプ５０の運転が停止される。
【００９５】
本発明による第２実施例のその他の構成及び作用は上述した本発明による第１実施例と同様であるので説明を省略する。
【００９６】
次に、本発明による第３実施例を説明する。
【００９７】
まず、図２４を参照しながら、理論空燃比を挟んで強制的に振動させる空燃比振動制御について説明する。
【００９８】
図２４（Ａ）は空燃比振動制御を行うことなく例えばスライトリーン制御を行ったときの空燃比の挙動を示しており、これは図６（Ｂ）に示される空燃比の挙動と一致している。
【００９９】
これに対し、空燃比振動制御を行いながら例えばスライトリーン制御を行うと、空燃比は図２４（Ｂ）に示されるように変動する。即ち、図２４（Ａ）に示される通常の場合に比べて、空燃比の振幅が大きくなり、周期が短くなり、しかしながらこのとき平均空燃比はわずかばかりリーンに維持されている。空燃比振動制御を行いながらスライトリッチ制御を行った場合も同様である。
【０１００】
空燃比の振幅及び周期は図５を参照して説明したスキップ値ＳＲ，ＳＬ及び積分値ＩＲ，ＩＬに応じて定まる。そこで本発明による第３実施例では、空燃比振動制御が行われない通常時のスキップ値ＳＲ，ＳＬ及び積分値ＩＲ，ＩＬをそれぞれＳＲ０，ＳＬ０，ＩＲ０，ＩＬ０に設定し、空燃比振動制御が行われるときのスキップ値ＳＲ，ＳＬ及び積分値ＩＲ，ＩＬをそれぞれＳＲ０・ａ，ＳＬ０・ａ，ＩＲ０・ａ，ＩＬ０・ａに設定している（ａ＞１．０）。
【０１０１】
このような空燃比振動制御が行われると、上流側触媒２０ｕから流出し下流側触媒２０ｄ内に流入する排気ガスの空燃比、即ち下流側空燃比センサ４１ｄにより検出される空燃比の振幅が大きくなり、周期が短くなる。その結果、空燃比制御が行われながらスライトリーン制御が行われたときには、下流側触媒２０ｄ内の貯蔵酸素量が増大する。これに対し、空燃比制御が行われながらスライトリッチ制御が行われたときには、下流側触媒２０ｄ内の貯蔵酸素量はほとんど減少しない。
【０１０２】
なお、空燃比振動制御が行われると、空燃比が特に理論空燃比から比較的大きく逸脱したときの三元触媒のＮＯＸ浄化率が高められることが確認されている。
【０１０３】
さて、本発明による第３実施例では、第２実施例と同様に、上流側酸素貯蔵量代表値ＯＸＵのみに基づいてスライトリッチ制御を行うかスライトリーン制御を行うかが決定される。一方、下流側酸素貯蔵量代表値ＯＸＤに基づいて空燃比振動制御を行うか否かが決定される。具体的には、下流側酸素貯蔵量代表値ＯＸＤがその許容下限値ＬＬＤよりも少なくなると、下流側酸素貯蔵量代表値ＯＸＤを増大させるために空燃比振動制御が行われ、次いで下流側酸素貯蔵量代表値ＯＸＤがその許容上限値ＵＬＤよりも大きくなると空燃比振動制御が停止される。
【０１０４】
空燃比振動制御が行われながらスライトリーン制御が行われているときには、第１実施例と同様に機関の制御状態及び下流側空燃比センサ４１ｄの出力に基づき算出された下流側酸素貯蔵量代表値ＯＸＤに、更に増大値ＫＦＬＣ（＞０）が加算される（ＯＸＤ＝ＯＸＤ＋ＫＦＬＣ）。これに対し、空燃比振動制御が行われながらスライトリッチ制御が行われているときには、機関の制御状態及び下流側空燃比センサ４１ｄの出力に基づき算出された下流側酸素貯蔵量代表値ＯＸＤがそのまま保持される。従って、機関の制御状態及び下流側空燃比センサ４１ｄの出力に基づき算出された下流側酸素貯蔵量代表値ＯＸＤを、空燃比振動制御が行われているときの平均空燃比に応じて補正しているという見方もできる。
【０１０５】
一方、本発明による第３実施例では、空燃比を理論空燃比を挟んで強制的に振動させながらこのときの下流側空燃比センサ４１ｄの出力に基づいて上流側触媒２０ｕの劣化度合いを検出する劣化度合い検出が行われる。
【０１０６】
ところが、空燃比振動制御が行われているときにも空燃比が強制的に振動されるので、空燃比振動制御と劣化度合い検出とが同時に行われると、上流側触媒２０ｕの劣化度合いを正確に判断することができなくなる。
【０１０７】
そこで本発明による第３実施例では、空燃比振動制御が行われているときには上流側触媒２０ｕの劣化度合い検出を禁止するようにしている。
【０１０８】
図２５は本発明による第３実施例の酸素貯蔵量制御ルーチンを示している。このルーチンは予め定められた設定時間毎の割り込みによって実行される。
【０１０９】
図２５を参照すると、ステップ３００では、図１１及び図１２に示される上流側酸素貯蔵量代表値ＯＸＵ及び下流側酸素貯蔵量代表値ＯＸＤの算出ルーチンが実行される。続くステップ３３０では、図２１に示されるリーンフラグＸＬの制御ルーチンが実行される。続くステップ３４０では空燃比振動フラグＸＦＬＣの制御ルーチンが実行される。このルーチンは図２６に示されている。なお、空燃比振動フラグＸＦＬＣは空燃比振動制御を行うべきときにセットされ（ＸＦＬＣ＝１）、それ以外はリセットされる（ＸＦＬＣ＝０）ものである。
【０１１０】
空燃比振動フラグＸＦＬＣの制御ルーチンを示す図２６を参照すると、ステップ３４１では空燃比振動フラグＸＦＬＣがセットされているか否かが判別される。空燃比振動フラグＸＦＬＣがリセットされているとき（ＸＦＬＣ＝０）には次いでステップ３４２に進み、下流側酸素貯蔵量代表値ＯＸＤが対応する許容下限値ＬＬＤよりも小さいかが判別される。ＯＸＤ≧ＬＬＤのときには処理サイクルを終了し、ＯＸＤ＜ＬＬＤのときには次いでステップ３４３に進み、空燃比振動フラグＸＦＬＣがセットされる（ＸＦＬＣ＝１）。
【０１１１】
これに対し、空燃比振動フラグＸＦＬＣがセットされているとき（ＸＦＬＣ＝１）、即ち空燃比振動制御が行われているときには次いでステップ３４４に進み、リーンフラグＸＬがセットされているか否かが判別される。リーンフラグＸＬがセットされているとき（ＸＬ＝１）、即ちスライトリーン制御が行われているときには、次いでステップ３４５に進み、下流側酸素貯蔵量代表値ＯＸＤが算出される（ＯＸＤ＝ＯＸＤ＋ＫＦＬＣ）。続くステップ３４６ではガード処理が行われる。次いでステップ３４７に進む。これに対し、リーンフラグＸＬがリセットされているとき（ＸＬ＝０）、即ちスライトリッチ制御が行われているときには、ステップ３４４からステップ３４７にジャンプする。
【０１１２】
ステップ３４７では下流側酸素貯蔵量代表値ＯＸＤが対応する許容上限値ＵＬＤよりも大きいか否かが判別される。ＯＸＤ≦ＵＬＤのときには処理サイクルを終了し、ＯＸＤ＞ＵＬＤのときには次いでステップ３４８に進み、空燃比振動フラグＸＦＬＣがリセットされる（ＸＦＬＣ＝０）。
【０１１３】
図２７は本発明による第３実施例のフィードバック補正係数ＦＡＦの算出ルーチンを示している。このルーチンは図１４及び図１５に示される燃料供給制御ルーチンのステップ１５７で実行される。
【０１１４】
図２７を参照すると、ステップ３７０では空燃比振動フラグＸＦＬＣがセットされているか否かが判別される。空燃比振動フラグＸＦＬＣがセットされているとき（ＸＦＬＣ＝１）には次いでステップ３７１に進み、スキップ値ＳＲ，ＳＬ及び積分値ＩＲ，ＩＬがそれぞれ比較的大きなＳＲ０・ａ，ＳＬ０・ａ，ＩＲ０・ａ，ＩＬ０・ａに設定される。次いでステップ３７３に進む。これに対し、空燃比振動フラグＸＦＬＣがリセットされているとき（ＸＦＬＣ＝０）には次いでステップ３７２に進み、スキップ値ＳＲ，ＳＬ及び積分値ＩＲ，ＩＬがそれぞれ比較的小さなＳＲ０，ＳＬ０，ＩＲ０，ＩＬ０に設定される。次いでステップ３７３に進む。
【０１１５】
ステップ３７３では、上流側空燃比センサ４１ｕの出力電圧ＶＵが基準電圧ＶＲＥＦよりも高いか否か、即ち空燃比が基準電圧ＶＲＥＦで表される基準空燃比に対しリッチであるか否かが判別される。ＶＵ＞ＶＲＥＦのときには次いでステップ３７４に進み、前回の処理サイクルにおける上流側空燃比センサ４１ｕの出力電圧ＶＵが基準電圧ＶＲＥＦ以下であるか否か、即ち前回の処理サイクルにおける空燃比が基準空燃比に対しリーンであったか否かが判別される。ＶＵＰ≦ＶＲＥＦのとき、即ち空燃比が基準空燃比に対しリーンからリッチに切り替わったときには次いでステップ３７５に進み、フィードバック補正係数ＦＡＦからスキップ値ＳＲだけ減算される。次いでステップ３８０に進む。これに対し、ＶＵＰ＞ＶＲＥＦのとき、即ち空燃比が継続して基準空燃比に対しリッチのときには次いでステップ３７６に進み、フィードバック補正係数ＦＡＦから積分値ＩＲ（≪ＳＲ）だけ減算される。次いでステップ３８０に進む。
【０１１６】
一方、ステップ３７３においてＶＵ≦ＶＲＥＦのとき、即ち空燃比が基準空燃比よりもリーンのときには次いでステップ３７７に進み、前回の処理サイクルにおける上流側空燃比センサ４１ｕの出力電圧ＶＵが基準電圧ＶＲＥＦよりも高いか否か、即ち前回の処理サイクルにおける空燃比が基準空燃比に対しリーンであったか否かが判別される。ＶＵＰ＞ＶＲＥＦのとき、即ち空燃比が基準空燃比に対しリッチからリーンに切り替わったときには次いでステップ３７８に進み、フィードバック補正係数ＦＡＦにスキップ値ＳＬだけ加算される。これに対し、ＶＵＰ≦ＶＲＥＦのとき、即ち空燃比が継続して基準空燃比に対しリーンのときには次いでステップ３７９に進み、フィードバック補正係数ＦＡＦに積分値ＩＬ（≪ＳＬ）だけ加算される。次いでステップ３８０に進む。
【０１１７】
ステップ３８０では、今回の処理サイクルにおける上流側空燃比センサ４１ｕの出力電圧ＶＵがＶＵＰとして記憶される。
【０１１８】
図２８は劣化度合い検出制御ルーチンを示している。このルーチンは予め定められた設定時間毎の割り込みによって実行される。
【０１１９】
図２８を参照すると、ステップ３９０では、上流側触媒２０ｕの劣化度合い検出を行うべきか否かが判別される。例えば、先の劣化度合い検出から一定運転時間だけ経過したときに劣化度合い検出を行うべきと判断される。上流側触媒２０ｕの劣化度合い検出を行うべきときには次いでステップ３９１に進み、空燃比振動フラグＸＦＬＣがリセットされているか否かが判別される。空燃比振動フラグＸＦＬＣがリセットされているとき（ＸＦＬＣ＝０）には、次いでステップ３９２に進み、上流側触媒２０ｕの劣化度合いが検出される。これに対し、空燃比振動フラグＸＦＬＣがセットされているとき（ＸＦＬＣ＝１）には、次いでステップ３９３に進み、上流側触媒２０ｕの劣化度合い検出が禁止される。一方、上流側触媒２０ｕの劣化度合い検出を行うべきでないときにはステップ３９０からステップ３９３に進み、上流側触媒２０ｕの劣化度合い検出が禁止される。
【０１２０】
本発明による第３実施例のその他の構成及び作用は上述した本発明による第２実施例と同様であるので説明を省略する。
【０１２１】
次に、本発明による第４実施例を説明する。
【０１２２】
本発明による第４実施例では、例えば機関負荷Ｌが予め定められた設定負荷Ｌ２よりも低い機関低負荷運転時に、内燃機関の複数の気筒のうち一部の気筒、例えば１番気筒＃１及び４番気筒＃４の運転を行い、残りの気筒、例えば２番気筒＃２及び３番気筒＃３の運転を停止する減筒運転が行われる。これに対し、機関負荷が設定負荷Ｌ２よりも高い機関高負荷運転時には、全気筒が運転される全筒運転が行われる。
【０１２３】
一方、図２９に示されるように、減筒運転が行われたときに休止気筒となる２番気筒＃２及び３番気筒＃３の吸気弁６ｂ，６ｃと、対応するカム５１ｂ，５１ｃ間には、吸気弁６ｂ，６ｃの開弁動作を制御する開弁動作制御装置５２が挿入されている。また、２番気筒＃２及び３番気筒＃３の排気弁８と対応するカム間にも、排気弁８の開弁動作を制御する開弁動作制御装置が挿入されている。これら開弁動作制御装置５２は全筒運転が行われているときには、２番気筒＃２及び３番気筒＃３の吸気弁６ｂ，６ｃ及び排気弁８をそれぞれ対応するカムに応じて開弁させ、減筒運転が行われているときには休止気筒の吸気弁６ｂ，６ｃ及び排気弁８を閉弁状態に保持する。なお、図２９において，６ａ，５１ａ，６ｄ，５１ｄは１番気筒＃１の吸気弁及び対応するカム、並びに４番気筒＃４の吸気弁及び対応するカムをそれぞれ表している。
【０１２４】
さて、本発明による第４実施例では、上流側酸素貯蔵量代表値ＯＸＵ又は下流側酸素貯蔵量代表値ＯＸＤが対応する許容下限値ＬＬＵ，ＬＬＤよりも小さくなったときに減筒運転が行われているときには、休止気筒の吸気弁及び排気弁を開弁させる開弁制御が行われる。その結果、休止気筒の燃焼室を空気が通過するので、上流側酸素貯蔵量代表値ＯＸＵ及び下流側酸素貯蔵量代表値ＯＸＤが速やかに増大される。なお、開弁制御が行われているときには、運転気筒ではスライトリッチ制御が行われる。このようにすると、排気ガスの平均空燃比が理論空燃比から大きく逸脱するのが阻止される。
【０１２５】
開弁制御が行われているときの上流側酸素貯蔵量代表値ＯＸＵ及び下流側酸素貯蔵量代表値ＯＸＤの増減値ΔＯＸＵ，ΔＯＸＤは次式により算出される。
【０１２６】
ΔＯＸＵ＝Ｇａ・（ＫＦＣＵ−ＫＲＵ）／２
ΔＯＸＤ＝Ｇａ・（ＫＦＣＤ−ＫＲＤ）／２
ここで、休止気筒は機関への燃料供給が停止されている場合と同様に考えることができるので、この場合の重み係数ＫＦＣＵ，ＫＦＣＤが用いられている。
【０１２７】
次いで、上流側酸素貯蔵量代表値ＯＸＵ又は下流側酸素貯蔵量代表値ＯＸＤが対応する許容上限値ＵＬＵ，ＵＬＤよりも大きくなると、開弁制御が停止され、即ち休止気筒の吸気弁及び排気弁が閉弁状態に保持される。
【０１２８】
これに対し、上流側酸素貯蔵量代表値ＯＸＵ又は下流側酸素貯蔵量代表値ＯＸＤが対応する許容下限値ＬＬＵ，ＬＬＤよりも小さくなったときに減筒運転が行われていないときには、スライトリーン制御が行われる。
【０１２９】
次に、図３０を参照して本発明による第４実施例を更に説明する。図３０において、ＸＯＸは酸素供給フラグを、ＸＰＤは減筒運転フラグを、ＸＶＯＰは開弁フラグを、それぞれ表している。酸素供給フラグＸＯＸは上流側触媒２０ｕ又は下流側触媒２０ｄ内の貯蔵酸素量を増大させるべきときにセットされ（ＸＯＸ＝１）、それ以外はリセットされる（ＸＯＸ＝０）ものである。減筒運転フラグＸＰＤは減筒運転を行うべきときにセットされ（ＸＰＤ＝１）、全筒運転を行うべきときにリセットされる（ＸＰＤ＝０）ものである。また、ＸＶＯＰは後述する開弁制御を行うべきときにセットされ（ＸＶＯＰ＝１）、それ以外はリセットされる（ＸＶＯＰ＝０）ものである。
【０１３０】
例えば上流側酸素貯蔵量代表値ＯＸＵがその許容下限値ＬＬＵよりも小さくなると（図３０のｅ１参照）、酸素供給フラグＸＯＸがセットされる（ＸＯＸ＝１）。このとき減筒運転が行われていないので、リーンフラグＸＬがセットされ（ＸＬ＝１）、即ちスライトリーン制御が行われる。次いで、例えば下流側酸素貯蔵量代表値ＯＸＤがその許容上限値ＵＬＤよりも大きくなると（図３０のｅ２参照）、酸素供給フラグＸＯＸがリセットされ（ＸＯＸ＝０）、リーンフラグＸＬがリセットされ（ＸＬ＝０）、即ちスライトリッチ制御に切り替えられる。
【０１３１】
次いで、上流側酸素貯蔵量代表値ＯＸＵが再びその許容下限値ＬＬＵよりも小さくなると（図３０のｅ３参照）、酸素供給フラグＸＯＸがセットされ（ＸＯＸ＝１）、このとき減筒運転が行われているので、開弁フラグＸＶＯＰがセットされ（ＸＶＯＰ＝１）、従って開弁制御が開始される。この場合、リーンフラグＸＬはリセットに保持され（ＸＬ＝０）、即ちスライトリッチ制御が行われる。次いで、例えば下流側酸素貯蔵量代表値ＯＸＤがその許容上限値ＵＬＤよりも大きくなると（図３０のｅ４参照）、酸素供給フラグＸＯＸがリセットされ（ＸＯＸ＝０）、開弁フラグＸＶＯＰがリセットされ（ＸＶＯＰ＝０）、従って開弁制御が停止される。
【０１３２】
なお、機関負荷Ｌが比較的高いときに開弁制御を行うと、上流側酸素貯蔵量代表値ＯＸＵ及び下流側酸素貯蔵量代表値ＯＸＤが過度に急激に増大しうる。そこで本発明による第４実施例では、機関負荷Ｌが予め定められた設定負荷Ｌ３（＜Ｌ２）よりも低いときに開弁制御を行い、機関負荷Ｌが設定負荷Ｌ３よりも高いときには開弁制御を行わず、スライトリーン制御を行うようにしている。
【０１３３】
図３１は本発明による第４実施例の酸素貯蔵量制御ルーチンを示している。このルーチンは予め定められた設定時間毎の割り込みによって実行される。
【０１３４】
図３１を参照すると、ステップ４００では本発明による第４実施例の上流側酸素貯蔵量代表値ＯＸＵ及び下流側酸素貯蔵量代表値ＯＸＤの算出ルーチンが実行される。このルーチンは図３２から図３４までに示されている。続くステップ４３０では、酸素供給フラグＸＯＸの制御ルーチンが実行される。このルーチンは図３５に示されている。続くステップ４４０では、開弁フラグＸＶＯＰ及びリーンフラグＸＬの制御ルーチンが実行される。このルーチンは図３６に示されている。
【０１３５】
本発明による第４実施例の上流側酸素貯蔵量代表値ＯＸＵ及び下流側酸素貯蔵量代表値ＯＸＤの算出ルーチンを示す図３２から図３４までを参照すると、ステップ４０１では、燃料供給停止フラグＸＦＣがセットされているか否かが判別される。燃料供給停止フラグＸＦＣがリセットされているとき（ＸＦＣ＝０）には、次いでステップ４０２に進み、燃料増量補正フラグＸＩＮＣがセットされているか否かが判別される。燃料増量補正フラグＸＩＮＣがリセットされているとき（ＸＩＮＣ＝０）には、次いでステップ４０３に進み、開弁フラグＸＶＯＰがセットされているか否かが判別される。開弁フラグＸＶＯＰがリセットされているとき（ＸＶＯＰ＝０）には、次いでステップ４０４に進み、リーンフラグＸＬがセットされているか否かが判別される。リーンフラグＸＬがリセットされているとき（ＸＬ＝０）、即ちスライトリッチ制御が行われているときには次いでステップ４０５に進み、増減値ΔＯＸＵ，ΔＯＸＤがそれぞれ算出される（ΔＯＸＵ＝−Ｇａ・ＫＲＵ，ΔＯＸＤ＝−Ｇａ・ＫＲＤ）。続くステップ４０６では、下流側空燃比センサ４１ｄの出力電圧ＶＤが理論空燃比に対応する電圧ＶＳよりも低いか否かが判別される。ＶＤ＜ＶＳのとき、即ちスライトリーン制御が行われているときに下流側空燃比センサ４１ｄにより検出される空燃比がリーンのときにはステップ４０７に進み、下流側酸素貯蔵量代表値ＯＸＤが算出される（ΔＯＸＤ＝Ｇａ・ＫＲＣ）。次いでステップ４２０に進む。これに対し、ＶＤ≧ＶＳのとき、即ちスライトリッチ制御が行われているときに下流側空燃比センサ４１ｄにより検出される空燃比がリッチのときにはステップ４０６からステップ４２０にジャンプする。
【０１３６】
これに対し、リーンフラグＸＬがセットされているとき（ＸＬ＝１）、即ちスライトリーン制御が行われているときにはステップ４０４からステップ４０８に進み、増減値ΔＯＸＵ，ΔＯＸＤがそれぞれ算出される（ΔＯＸＵ＝Ｇａ・ＫＬＵ，ΔＯＸＤ＝Ｇａ・ＫＬＤ）。続くステップ４０９では、下流側空燃比センサ４１ｄの出力電圧ＶＤが理論空燃比に対応する電圧ＶＳよりも高いか否かが判別される。ＶＤ＞ＶＳのとき、即ちスライトリーン制御が行われているときに下流側空燃比センサ４１ｄにより検出される空燃比がリッチのときにはステップ４１０に進み、下流側酸素貯蔵量代表値ＯＸＤが算出される（ΔＯＸＤ＝−Ｇａ・ＫＬＣ）。次いでステップ４２０に進む。これに対し、ＶＤ≦ＶＳのとき、即ちスライトリーン制御が行われているときに下流側空燃比センサ４１ｄにより検出される空燃比がリーンのときにはステップ４０９からステップ４２０にジャンプする。
【０１３７】
開弁フラグＸＶＯＰがセットされているとき（ＸＶＯＰ＝１）には、ステップ４０３からステップ４１１に進み、増減値ΔＯＸＵ，ΔＯＸＤがそれぞれ算出される（ΔＯＸＵ＝Ｇａ・（ＫＦＣＵ−ＫＲＵ）／２，ΔＯＸＤ＝Ｇａ・（ＫＦＣＤ−ＫＲＤ）／２）。続くステップ４１２では、下流側空燃比センサ４１ｄの出力電圧ＶＤが理論空燃比に対応する電圧ＶＳよりも高いか否かが判別される。ＶＤ＞ＶＳのとき、即ち開弁制御が行われているときに下流側空燃比センサ４１ｄにより検出される空燃比がリッチのときにはステップ４１３に進み、下流側酸素貯蔵量代表値ＯＸＤの増減値ΔＯＸＤがゼロとされる（ΔＯＸＤ＝０）。次いでステップ４２０に進む。これに対し、ＶＤ≦ＶＳのとき、即ち開弁制御が行われているときに下流側空燃比センサ４１ｄにより検出される空燃比がリーンのときにはステップ４１２からステップ４２０にジャンプする。
【０１３８】
燃料増量補正フラグＸＩＮＣがセットされているとき（ＸＩＮＣ＝１）には、ステップ４０２からステップ４１４に進み、増減値ΔＯＸＵ，ΔＯＸＤがそれぞれ算出される（ΔＯＸＵ＝−（Ｇａ・ＫＩＮＣＵ）・ＩＮＣ，ΔＯＸＤ＝−（Ｇａ・ＫＩＮＣＤ）・ＩＮＣ）。続くステップ４１５では、下流側空燃比センサ４１ｄの出力電圧ＶＤが理論空燃比に対応する電圧ＶＳよりも低いか否かが判別される。ＶＤ＜ＶＳのとき、即ち燃料増量補正が行われているときに下流側空燃比センサ４１ｄにより検出される空燃比がリーンのときにはステップ４１６に進み、下流側酸素貯蔵量代表値ＯＸＤの増減値ΔＯＸＤがゼロとされる（ΔＯＸＤ＝０）。次いでステップ４２０に進む。これに対し、ＶＤ≧ＶＳのとき、即ち燃料増量補正が行われているときに下流側空燃比センサ４１ｄにより検出される空燃比がリッチのときにはステップ４１５からステップ４２０にジャンプする。
【０１３９】
燃料供給停止フラグＸＦＣがセットされているとき（ＸＦＣ＝１）、即ち機関への燃料供給が停止されているときにはステップ４０１からステップ４１７に進み、増減値ΔＯＸＵ，ΔＯＸＤがそれぞれ算出される（ΔＯＸＵ＝Ｇａ・ＫＦＣＵ，ΔＯＸＤ＝Ｇａ・ＫＦＣＤ）。続くステップ４１８では、下流側空燃比センサ４１ｄの出力電圧ＶＤが理論空燃比に対応する電圧ＶＳよりも高いか否かが判別される。ＶＤ＞ＶＳのとき、即ち機関への燃料供給が停止されているときに下流側空燃比センサ４１ｄにより検出される空燃比がリッチのときにはステップ４１９に進み、下流側酸素貯蔵量代表値ＯＸＤの増減値ΔＯＸＤがゼロとされる（ΔＯＸＤ＝０）。次いでステップ４２０に進む。これに対し、ＶＤ≦ＶＳのとき、即ち機関への燃料供給が停止されているときに下流側空燃比センサ４１ｄにより検出される空燃比がリーンのときにはステップ４１８からステップ４２０にジャンプする。
【０１４０】
ステップ４２０では、上流側酸素貯蔵量代表値ＯＸＵ及び下流側酸素貯蔵量代表値ＯＸＤがそれぞれ算出される（ＯＸＵ＝ＯＸＵ＋ΔＯＸＵ，ＯＸＤ＝ＯＸＤ＋ΔＯＸＤ）。続くステップ４２１では、ガード処理が行われる。
【０１４１】
酸素供給フラグＸＯＸの制御ルーチンを示す図３５を参照すると、ステップ４３１では、酸素供給フラグＸＯＸがセットされているか否かが判別される。酸素供給フラグＸＯＸがリセットされているとき（ＸＯＸ＝０）には、次いでステップ４３２に進み、上流側酸素貯蔵量代表値ＯＸＵ又は下流側酸素貯蔵量代表値ＯＸＤがそれぞれ対応する許容下限値ＬＬＵ，ＬＬＤよりも小さいかが判別される。ＯＸＵ≧ＬＬＵかつＯＸＤ≧ＬＬＤのときには処理サイクルを終了し、ＯＸＵ＜ＬＬＵ又はＯＸＤ＜ＬＬＤのときには次いでステップ４３３に進み、酸素供給フラグＸＯＸがセットされる（ＸＯＸ＝１）。
【０１４２】
酸素供給フラグＸＯＸがセットされているとき（ＸＯＸ＝１）には、ステップ４３１からステップ４３４に進み、上流側酸素貯蔵量代表値ＯＸＵ又は下流側酸素貯蔵量代表値ＯＸＤがそれぞれ対応する許容上限値ＵＬＵ，ＵＬＤよりも大きいか否かが判別される。ＯＸＵ≦ＵＬＵかつＯＸＤ≦ＵＬＤのときには処理サイクルを終了し、ＯＸＵ＞ＵＬＵ又はＯＸＤ＞ＵＬＤのときには次いでステップ４３５に進み、酸素供給フラグＸＯＸがリセットされる（ＸＯＸ＝０）。
【０１４３】
開弁フラグＸＶＯＰ及びリーンフラグＸＬの制御ルーチンを示す図３６を参照すると、ステップ４４１では酸素供給フラグＸＯＸがセットされているか否かが判別される。酸素供給フラグＸＯＸがセットされているとき（ＸＯＸ＝１）には次いでステップ４４２に進み、減筒運転フラグＸＰＤがセットされているか否かが判別される。減筒運転フラグＸＰＤがセットされているとき（ＸＰＤ＝１）には次いでステップ４４３に進み、機関負荷Ｌが上述の設定負荷Ｌ３よりも高いか否かが判別される。Ｌ＜Ｌ３のときには次いでステップ４４４に進み、開弁フラグＸＶＯＰがセットされる（ＸＶＯＰ＝１）。続くステップ４４５では、リーンフラグＸＬがリセットされる（ＸＬ＝０）。
【０１４４】
これに対し、Ｌ≧Ｌ３のときには次いでステップ４４６に進み、開弁フラグＸＶＯＰがリセットされる（ＸＶＯＰ＝０）。続くステップ４４７では、リーンフラグＸＬがセットされる（ＸＬ＝１）。
【０１４５】
一方、減筒運転フラグＸＰＤがリセットされているとき（ＸＰＤ＝０）にはステップ４４２からステップ４４７に進み、リーンフラグＸＬがセットされる（ＸＬ＝１）。これに対し、酸素供給フラグＸＯＸがリセットされているとき（ＸＯＸ＝０）にはステップ４４１からステップ４４５に進み、リーンフラグＸＬがリセットされる（ＸＬ＝０）。
【０１４６】
図３７は燃料供給停止フラグＸＦＣ及び減筒運転フラグＸＰＤの制御ルーチンを示している。このルーチンは予め定められた設定時間毎の割り込みによって実行される。
【０１４７】
図３７を参照すると、ステップ４８０では、アクセルペダルの踏み込み量ＤＥＰがゼロであるか否かが判別される。ＤＥＰ＝０のときには次いでステップ４８１に進み、機関負荷Ｌが上述の設定負荷Ｌ２よりも高いか否かが判別される。Ｌ≦Ｌ２のとき、即ち機関低負荷運転時には次いでステップ４８２に進み、機関回転数Ｎが第１の設定回転数Ｎ１よりも低いか否かが判別される。Ｎ≧Ｎ１のときには次いでステップ４８３に進み、機関回転数Ｎが第２の設定回転数Ｎ２（＜Ｎ１）よりも高いか否かが判別される。Ｎ＞Ｎ２のときには次いでステップ４８４に進み、燃料供給停止フラグＸＦＣがセットされ（ＸＦＣ＝１）、減筒運転フラグＸＰＤがリセットされる（ＸＰＤ＝０）。
【０１４８】
これに対し、ステップ４８２においてＮ＜Ｎ１のとき、又はステップ４８３においてＮ≦Ｎ２のときには、次いでステップ４８５に進み、燃料供給停止フラグＸＦＣがリセットされ（ＸＦＣ＝０）、減筒運転フラグＸＰＤがセットされる（ＸＰＤ＝１）。
【０１４９】
一方、ステップ４８０においてＤＥＰ＞０のとき、又はステップ４８１においてＬ＜Ｌ２のとき即ち機関高負荷運転時には、次いでステップ４８６に進み、燃料供給停止フラグＸＦＣ及び減筒運転フラグＸＰＤが共にリセットされる（ＸＦＣ＝０，ＸＰＤ＝０）。
【０１５０】
図３８は運転制御ルーチンを示している。このルーチンは予め定められた設定時間毎の割り込みによって実行される。
【０１５１】
図３８を参照すると、ステップ４９０では、減筒運転フラグＸＰＤがセットされているか否かが判別される減筒運転フラグＸＰＤがセットされているとき（ＸＰＤ＝１）には次いでステップ４９１に進み、減筒運転が行われる。続くステップ４９２では、開弁フラグＸＶＯＰがセットされているか否かが判別される。開弁フラグＸＶＯＰがセットされているとき（ＸＶＯＰ＝１）には次いでステップ４９４に進み、休止気筒の吸気弁及び排気弁が開弁される。これに対し、開弁フラグＸＶＯＰがリセットされているとき（ＸＶＯＰ＝０）には次いでステップ４９４に進み、休止気筒の吸気弁及び排気弁が閉弁に保持される。
【０１５２】
一方、減筒運転フラグＸＰＤがリセットされているとき（ＸＰＤ＝０）には次いでステップ４９５に進み、全筒運転が行われる。
【０１５３】
本発明による第４実施例のその他の構成及び作用は上述した本発明による第１実施例と同様であるので説明を省略する。
【０１５４】
【発明の効果】
排気通路内に複数の触媒が配置されている場合に下流側の触媒の酸素貯蔵量を正確に求めることができる。
【図面の簡単な説明】
【図１】内燃機関の全体図である。
【図２】空燃比センサの出力電圧を示す線図である。
【図３】基本燃料噴射時間ＴＢを示す線図である。
【図４】フィードバック補正係数ＦＡＦの算出ルーチンを示すフローチャートである。
【図５】フィードバック補正係数ＦＡＦによる補正作用を説明するための図である。
【図６】スライトリッチ制御及びスライトリーン制御を説明するための図である。
【図７】本発明による第１実施例を説明するためのタイムチャートである。
【図８】本発明による第１実施例を説明するためのタイムチャートである。
【図９】本発明による第１実施例を説明するためのタイムチャートである。
【図１０】本発明による第１実施例の酸素貯蔵量制御ルーチンを示すフローチャートである。
【図１１】本発明による第１実施例の酸素貯蔵量代表値ＯＸＵ，ＯＸＤの算出ルーチンを示すフローチャートである。
【図１２】本発明による第１実施例の酸素貯蔵量代表値ＯＸＵ，ＯＸＤの算出ルーチンを示すフローチャートである。
【図１３】本発明による第１実施例のリーンフラグＸＬの制御ルーチンを示すフローチャートである。
【図１４】本発明による第１実施例の燃料供給制御ルーチンを示すフローチャートである。
【図１５】本発明による第１実施例の燃料供給制御ルーチンを示すフローチャートである。
【図１６】本発明による第１実施例の燃料供給停止フラグＸＦＣの制御ルーチンを示すフローチャートである。
【図１７】本発明による第１実施例の燃料増量補正フラグＸＩＮＣの制御ルーチンを示すフローチャートである。
【図１８】本発明による第２実施例の内燃機関の部分図である。
【図１９】本発明による第２実施例を説明するためのタイムチャートである。
【図２０】本発明による第２実施例の酸素貯蔵量制御ルーチンを示すフローチャートである。
【図２１】本発明による第２実施例のリーンフラグＸＬの制御ルーチンを示すフローチャートである。
【図２２】本発明による第２実施例の二次空気供給フラグＸＳＡの制御ルーチンを示すフローチャートである。
【図２３】本発明による第２実施例の二次空気供給制御ルーチンを示すフローチャートである。
【図２４】空燃比振動制御を説明するための図である。
【図２５】本発明による第３実施例の酸素貯蔵量制御ルーチンを示すフローチャートである。
【図２６】本発明による第３実施例の空燃比振動フラグＸＦＬＣの制御ルーチンを示すフローチャートである。
【図２７】本発明による第３実施例のフィードバック補正係数ＦＡＦの算出ルーチンを示すフローチャートである。
【図２８】本発明による第３実施例の劣化度合い検出制御ルーチンを示すフローチャートである。
【図２９】本発明による第４実施例の内燃機関の部分図である。
【図３０】本発明による第４実施例を説明するためのタイムチャートである。
【図３１】本発明による第４実施例の酸素貯蔵量制御ルーチンを示すフローチャートである。
【図３２】本発明による第４実施例の酸素貯蔵量代表値ＯＸＵ，ＯＸＤの算出ルーチンを示すフローチャートである。
【図３３】本発明による第４実施例の酸素貯蔵量代表値ＯＸＵ，ＯＸＤの算出ルーチンを示すフローチャートである。
【図３４】本発明による第４実施例の酸素貯蔵量代表値ＯＸＵ，ＯＸＤの算出ルーチンを示すフローチャートである。
【図３５】本発明による第４実施例の酸素供給フラグＸＯＸの制御ルーチンを示すフローチャートである。
【図３６】本発明による第４実施例の開弁フラグＸＶＯＰ及びリーンフラグＸＬの制御ルーチンを示すフローチャートである。
【図３７】本発明による第４実施例の燃料供給停止フラグＸＦＣ及び及び減筒運転フラグＸＰＤの制御ルーチンを示すフローチャートである。
【図３８】本発明による第４実施例の運転制御ルーチンを示すフローチャートである。
【符号の説明】
１…機関本体
１８…排気マニホルド
２０ｕ…上流側触媒
２０ｄ…下流側触媒
４１ｕ…上流側空燃比センサ
４１ｄ…下流側空燃比センサ
【図１】
2005061221.tif 000003
【図２】
2005061221.tif 000004
【図３】
2005061221.tif 000005
【図４】
2005061221.tif 000006
【図５】
2005061221.tif 000007
【図６】
2005061221.tif 000008
【図７】
2005061221.tif 000009
【図８】
2005061221.tif 000010
【図９】
2005061221.tif 000011
【図１０】
2005061221.tif 000012
【図１１】
2005061221.tif 000013
【図１２】
2005061221.tif 000014
【図１３】
2005061221.tif 000015
【図１４】
2005061221.tif 000016
【図１５】
2005061221.tif 000017
【図１６】
2005061221.tif 000018
【図１７】
2005061221.tif 000019
【図１８】
2005061221.tif 000020
【図１９】
2005061221.tif 000021
【図２０】
2005061221.tif 000022
【図２１】
2005061221.tif 000023
【図２２】
2005061221.tif 000024
【図２３】
2005061221.tif 000025
【図２４】
2005061221.tif 000026
【図２５】
2005061221.tif 000027
【図２６】
2005061221.tif 000028
【図２７】
2005061221.tif 000029
【図２８】
2005061221.tif 000030
【図２９】
2005061221.tif 000031
【図３０】
2005061221.tif 000032
【図３１】
2005061221.tif 000033
【図３２】
2005061221.tif 000034
【図３３】
2005061221.tif 000035
【図３４】
2005061221.tif 000036
【図３５】
2005061221.tif 000037
【図３６】
2005061221.tif 000038
【図３７】
2005061221.tif 000039
【図３８】
2005061221.tif 000040