(57)【要約】本発明の実施形態に係る内燃機関の空燃比制御装置は、触媒４３の下流に配設された下流側空燃比センサ５６の出力値に相関を有する値（下流側空燃比センサ出力相関値）と所定のリーン要求判定値との比較の結果に基づいてリーン要求が発生したか否かを判定するとともに、前記下流側空燃比センサ出力相関値と所定のリッチ要求判定値との比較に基づいてリッチ要求が発生したか否かを判定する。更に、この空燃比制御装置は、リッチ要求発生期間において触媒から放出された酸素の総量（放出酸素量）を算出するとともに、そのリッチ要求発生期間に続くリーン要求発生期間の開始後に触媒に吸蔵される酸素の量の積算値（現在吸蔵酸素量）を算出する。そして、現在吸蔵酸素量が放出酸素量に近づくほど、前記リッチ要求が発生したと判定する時点がより早期に到来するように前記リッチ要求判定値を変更する。
2012098641.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の排気通路に配設された触媒と、
前記排気通路であって前記触媒の下流に配設された下流側空燃比センサと、
前記下流側空燃比センサの出力値に相関を有する値である下流側空燃比センサ出力相関値と所定のリーン要求判定値との比較の結果に基づいてリーン要求が発生したか否かを判定するとともに、前記下流側空燃比センサ出力相関値と所定のリッチ要求判定値との比較に基づいてリッチ要求が発生したか否かを判定する空燃比要求判定手段と、
前記リーン要求が発生したと判定された時点から前記リッチ要求が発生したと判定される時点までのリーン要求発生期間において前記機関に供給される混合気の空燃比を理論空燃比よりも大きい空燃比であるリーン空燃比に制御するとともに、前記リッチ要求が発生したと判定された時点から前記リーン要求が発生したと判定される時点までのリッチ要求発生期間において前記混合気の空燃比を理論空燃比よりも小さい空燃比であるリッチ空燃比に制御する空燃比制御手段と、
を備える内燃機関の空燃比制御装置において、
前記空燃比要求判定手段は、
前記リッチ要求発生期間において前記触媒から放出された酸素の総量である放出酸素量を前記触媒に流入するガスの空燃比に基づいて算出するとともに、前記リッチ要求発生期間に続く前記リーン要求発生期間の開始後に前記触媒に吸蔵される酸素の量の積算値である現在吸蔵酸素量を前記触媒に流入するガスの空燃比に基づいて算出し、前記現在吸蔵酸素量が前記放出酸素量に近づくほど前記リッチ要求が発生したと判定する時点がより早期に到来するように前記リッチ要求判定値を変更するように構成された、
空燃比制御装置。
【請求項２】
請求項１に記載の空燃比制御装置において、
前記下流側空燃比センサは、
排ガスの酸素分圧と大気の酸素分圧との差に応じて変化する起電力を前記出力値として発生する濃淡電池型酸素濃度センサであり、
前記空燃比要求判定手段は、
前記下流側空燃比センサ出力相関値として前記下流側空燃比センサの出力値の単位時間あたりの変化量に相関する出力時間微分相関値を採用し、
前記リッチ要求発生期間において前記出力時間微分相関値が正であり且つ前記出力時間微分相関値の大きさが前記リーン要求判定値としての第１微分閾値よりも大きくなったとき前記リーン要求が発生したと判定し、
前記リーン要求発生期間において前記出力時間微分相関値が負であり且つ前記出力時間微分相関値の大きさが前記リッチ要求判定値としての第２微分閾値よりも大きくなったとき前記リッチ要求が発生したと判定し、更に、
前記現在吸蔵酸素量が前記放出酸素量に近づくほど前記第２微分閾値を小さくすることにより、前記リッチ要求が発生したと判定する時点がより早期に到来するように構成された空燃比制御装置。
【請求項３】
請求項１に記載の空燃比制御装置において、
前記下流側空燃比センサは、
排ガスの酸素分圧と大気の酸素分圧との差に応じて変化する起電力を前記出力値として発生する濃淡電池型酸素濃度センサであり、
前記空燃比要求判定手段は、
前記下流側空燃比センサ出力相関値として前記下流側空燃比センサの出力値を採用し、
前記リッチ要求発生期間において前記下流側空燃比センサの出力値の極小値を取得するとともに前記取得された極小値に正の第１値を加えた値を前記リーン要求判定値として採用し、且つ、前記下流側空燃比センサの出力値が前記極小値をとった後に前記リーン要求判定値よりも大きくなったとき前記リーン要求が発生したと判定し、
前記リーン要求発生期間において前記下流側空燃比センサの出力値の極大値を取得するとともに前記取得された極大値から正の第２値を減じた値を前記リッチ要求判定値として採用し、且つ、前記下流側空燃比センサの出力値が前記極大値をとった後に前記リッチ要求判定値よりも小さくなったとき前記リッチ要求が発生したと判定し、更に、
前記現在吸蔵酸素量が前記放出酸素量に近づくほど前記第２値を小さくすることにより、前記リッチ要求が発生したと判定する時点がより早期に到来するように構成された空燃比制御装置。
【請求項４】
請求項１に記載の空燃比制御装置において、
前記下流側空燃比センサは、
排ガスの酸素分圧と大気の酸素分圧との差に応じて変化する起電力を前記出力値として発生する濃淡電池型酸素濃度センサであり、
前記空燃比要求判定手段は、
前記下流側空燃比センサ出力相関値として前記下流側空燃比センサの出力値を採用し、
前記リッチ要求発生期間において前記下流側空燃比センサの出力値が前記リーン要求判定値としての触媒リッチ状態判定用閾値よりも小さい値から大きい値へと変化したとき前記リーン要求が発生したと判定し、
前記リーン要求発生期間において前記下流側空燃比センサの出力値が前記リッチ要求判定値としての触媒リーン状態判定用閾値よりも大きい値から小さい値へと変化したとき前記リッチ要求が発生したと判定し、更に、
前記現在吸蔵酸素量が前記放出酸素量に近づくほど前記触媒リーン状態判定用閾値を大きくすることにより、前記リッチ要求が発生したと判定する時点がより早期に到来するように構成された空燃比制御装置。
【請求項５】
請求項１乃至請求項４の何れか一項に記載の空燃比制御装置において、
前記空燃比要求判定手段は、
前記リッチ要求が発生したと判定された時点である第１時点での放出酸素量の値として、同第１時点の直前において前記リーン要求が発生したと判定された時点である第２時点での前記放出酸素量から同第１時点での前記現在吸蔵酸素量を減じた値を採用するとともに、前記機関の運転状態がフューエルカット運転状態となった場合、前記放出酸素量をゼロに設定する、ように構成された空燃比制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、排気通路に触媒を備えた内燃機関の空燃比制御装置に関する。
【背景技術】
【０００２】
従来より、内燃機関から排出される排ガスを浄化するために同機関の排気通路に三元触媒（排ガス浄化用の触媒ユニット）が配設されている。三元触媒は、周知のように、その三元触媒に流入する酸素を吸蔵し且つその吸蔵した酸素を放出する「酸素吸蔵機能」を有する。【０００３】
以下、三元触媒を単に「触媒」と称呼し、触媒に流入する排ガスを「触媒流入ガス」と称呼し、触媒から流出する排ガスを「触媒流出ガス」と称呼する。更に、理論空燃比よりも小さい空燃比を「リッチ空燃比」と称呼し、理論空燃比よりも大きい空燃比を「リーン空燃比」と称呼し、機関に供給される混合気の空燃比を「機関の空燃比」と称呼する。【０００４】
従来の空燃比制御装置の一つ（以下、「従来装置」と称呼する。）は下流側空燃比センサを備える。下流側空燃比センサは、機関の排気通路であって触媒の下流に配設される。従来装置は、下流側空燃比センサの出力値が理論空燃比に相当する値に一致するように、機関の空燃比（従って、触媒流入ガスの空燃比）を制御する（例えば、特許文献１を参照。）。【０００５】
より具体的に述べると、従来装置は、下流側空燃比センサの出力値がリッチ空燃比に相当する値になったとき、触媒流入ガスの空燃比がリーン空燃比となるように機関の空燃比を制御する。換言すると、従来装置は、下流側空燃比センサの出力値がリッチ空燃比に相当する値になったとき、触媒の状態が「酸素不足状態（リッチ状態）」であり、従って、リーン要求が発生したと判定し、機関の空燃比をリーン空燃比に制御する。【０００６】
更に、従来装置は、下流側空燃比センサの出力値がリーン空燃比に相当する値になったとき、触媒流入ガスの空燃比がリッチ空燃比となるように機関の空燃比を制御する。換言すると、従来装置は、下流側空燃比センサの出力値がリーン空燃比に相当する値になったとき、触媒の状態が「酸素過剰状態（リーン状態）」であり、従って、リッチ要求が発生したと判定し、機関の空燃比をリッチ空燃比に制御する。これにより、触媒の状態が「酸素不足状態及び酸素過剰状態の何れかの状態」である期間を短くすることができるので、エミッションが悪化する期間を短くすることができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平０８−１５８９１５号公報
【発明の概要】
【０００８】
しかしながら、機関の運転状態が急変した場合及び下流側空燃比センサの出力値にノイズが重畳した場合等において、下流側空燃比センサの出力値が触媒の状態（酸素過剰状態であるか或いは酸素不足状態であるか）を精度良く表さないことがあり、その結果、触媒流入ガスの空燃比が不適切となることに起因してエミッションが悪化する場合がある。
【０００９】
本発明は、上述した課題に対処するためになされたものである。即ち、本発明の目的の一つは、触媒の「酸素を吸蔵する余力」を示す情報を取得するとともに、その情報と下流側空燃比センサの出力値に相関を有する値とに基づいて触媒の状態を判定する（換言すると、リッチ要求及びリーン要求のうちの何れの空燃比要求が発生しているかを判定する）ことにより、触媒流入ガスの空燃比が「触媒の排気浄化作用に対して出来るだけ望ましい空燃比」となるように機関の空燃比を制御することができる空燃比制御装置を提供することにある。
【００１０】
本発明による内燃機関の空燃比制御装置の一つは、排気通路に配設された触媒と、その触媒の下流に配設された下流側空燃比センサと、空燃比要求判定手段と、空燃比制御手段と、を備える。
【００１１】
前記空燃比要求判定手段は、「前記下流側空燃比センサの出力値に相関を有する値（即ち、下流側空燃比センサ出力相関値）」と「所定のリーン要求判定値」との比較の結果に基づいてリーン要求が発生したか否かを判定する。換言すると、空燃比要求判定手段は、下流側空燃比センサ出力相関値とリーン要求判定値との比較の結果に基づいて触媒の状態が「酸素不足状態（リッチ状態）」であるか否かを判定する。
【００１２】
更に、前記空燃比要求判定手段は、「前記下流側空燃比センサ出力相関値」と「所定のリッチ要求判定値」との比較に基づいてリッチ要求が発生したか否かを判定する。換言すると、空燃比要求判定手段は、下流側空燃比センサ出力相関値とリッチ要求判定値との比較の結果に基づいて触媒の状態が「酸素過剰状態（リーン状態）」であるか否かを判定する。
【００１３】
後述するように、前記下流側空燃比センサ出力相関値は、例えば、下流側空燃比センサの出力値そのものであってもよく、下流側空燃比センサの出力値の単位時間あたりの変化量であってもよい。
【００１４】
前記空燃比制御手段は、前記リーン要求が発生したと判定された時点から前記リッチ要求が発生したと判定される時点までの期間（即ち、リーン要求発生期間）において、前記機関の空燃比をリーン空燃比に制御する。更に、前記空燃比制御手段は、前記リッチ要求が発生したと判定された時点から前記リーン要求が発生したと判定される時点までの期間（即ち、リッチ要求発生期間）において、前記機関の空燃比をリッチ空燃比に制御する。
【００１５】
ところで、触媒は、触媒流入ガスの空燃比がリッチ空燃比であるとき、吸蔵している酸素を放出して未燃物を浄化する。従って、触媒流入ガスの空燃比がリッチ空燃比である状態が継続すると、触媒から放出され得る酸素の量が減少するから、未燃物は触媒内において浄化されずに触媒下流に流出する。その結果、下流側空燃比センサの出力値はリッチ空燃比に相当する値に向けて変化し始める。
【００１６】
しかし、触媒において酸素が放出される際の反応速度は比較的小さいので、下流側空燃比センサの出力値がリッチ空燃比に相当する値に向かう変化を開始した後においても触媒は酸素を放出し続けることができる。つまり、触媒流入ガスの空燃比をリーン空燃比に変更するタイミングが多少遅れたとしても、触媒は未燃物をある程度浄化することができる。従って、エミッションはそれ程悪化しない。
【００１７】
これに対し、触媒は、触媒流入ガスの空燃比がリーン空燃比であるとき、触媒流入ガスに含まれる過剰な酸素を吸蔵する。触媒流入ガスの空燃比がリーン空燃比である状態が継続すると、触媒は酸素を吸蔵することができなくなるから、触媒下流には酸素が流出する。その結果、下流側空燃比センサの出力値はリーン空燃比に相当する値に向けて変化する。触媒において酸素が吸蔵される際の反応速度は比較的大きいので、下流側空燃比センサの出力値がリーン空燃比に相当する値に向かう変化を開始した時点において、触媒はもはや酸素を殆ど吸蔵することができない。それ故、触媒流入ガスの空燃比をリッチ空燃比に変更するタイミングが遅れると、窒素酸化物（ＮＯｘ）が未浄化のまま流出する。その結果、エミッションが悪化する。
【００１８】
以上から、エミッションを良好にするためには、触媒が酸素過剰状態（リーン状態）となった時点を、触媒が酸素不足状態（リッチ状態）となった時点よりも、より精度よく（即ち、遅滞なく）検出する必要があることが理解される。換言すると、リーン要求が発生したとの判定に比較して、リッチ要求が発生したとの判定は出来るだけ遅滞なく行われることが、エミッションを悪化させないために重要である。
【００１９】
加えて、触媒が放出することができる酸素の量（触媒の放出可能酸素量）は、触媒の劣化の程度、触媒の温度、触媒流入ガス（還元成分）の種類、及び、触媒流入ガスの還元成分の濃度（リッチの度合い）等の多くのファクターにより変動する。これらのファクターのそれぞれを精度良く検知することは困難であり、従って、ある時点における触媒の放出可能酸素量を精度良く推定することは極めて困難である。換言すると、ある時点において触媒に吸蔵されている酸素のうちの「どの程度」が放出され得るのかを精度良く推定することは困難である。
【００２０】
これに対し、ある時点において触媒が吸蔵することができる酸素の量は、その時点の直前までの機関の運転過程において触媒が放出した酸素の量（以下、「放出酸素量」とも称呼する。）と精度良く一致する。より具体的に述べると、触媒流入ガスの空燃比がリッチ空燃比であるときに触媒が「所定量の酸素」を放出した場合、その後に触媒流入ガスの空燃比がリーン空燃比になったとき、触媒は「その所定量の酸素」を吸蔵することができる。触媒の「放出酸素量」は、「触媒流入ガスの空燃比がリッチ空燃比であるとき（リッチ要求発生期間）の触媒流入ガス」の空燃比に基づいて比較的精度良く推定することができる。
【００２１】
更に、「そのリッチ要求発生期間に続く期間であってリーン要求が発生している期間（リーン要求発生期間）」の開始後に触媒に吸蔵された酸素の量は、「そのリーン要求発生期間における触媒流入ガス」の空燃比に基づいて比較的精度良く推定することができる。
【００２２】
この場合、リーン要求発生期間の開始後に吸蔵された酸素の量が、そのリーン要求発生期間の開始時において算出されていた放出酸素量に比較して比較的小さい時点においては、「触媒が酸素を吸蔵する余力」は大きい。従って、この時点において、触媒は酸素不足状態（リッチ状態）にある可能性が高い。これに対し、リーン要求発生期間の開始後に吸蔵された酸素の量と、そのリーン要求発生期間の開始時において算出されていた放出酸素量と、の差が僅かになった時点においては、「触媒が酸素を吸蔵する余力」は小さい。従って、この時点において、触媒は酸素過剰状態（リーン状態）にある可能性が高い。
【００２３】
そこで、前記空燃比要求判定手段は、
「前記リッチ要求発生期間において前記触媒から放出された酸素の総量」である放出酸素量を「前記触媒に流入するガスの空燃比」に基づいて算出するとともに、「前記リッチ要求発生期間に続く前記リーン要求発生期間の開始後に前記触媒に吸蔵される酸素の量の積算値」である現在吸蔵酸素量を「前記触媒に流入するガスの空燃比」に基づいて算出し、前記現在吸蔵酸素量が前記放出酸素量に近づくほど前記リッチ要求が発生したと判定する時点がより早期に到来するように前記リッチ要求判定値を変更するように構成されている。「リッチ要求が発生したと判定する時点がより早期に到来するように前記リッチ要求判定値を変更する」ことは、「リッチ要求が発生したとの判定がより容易に為されるように前記リッチ要求判定値を変更する」ことと同義である。
【００２４】
これによれば、触媒が酸素過剰状態（リーン状態）になる可能性が高くなるほど、「下流側空燃比センサ出力相関値に基づく判定であってリッチ要求が発生したとの判定」が為され易くなるので、リッチ要求が発生したこと（即ち、触媒が酸素過剰状態となったこと）を遅滞なく検出することができる。その結果、触媒に適切なタイミングにてリッチ空燃比の排ガスを流入させることができるので、ＮＯｘの排出量を低減することができる。
【００２５】
ところで、前記下流側空燃比センサは、通常、「排ガス（触媒流出ガス）の酸素分圧と大気の酸素分圧との差、に応じて変化する起電力」を出力値として発生する濃淡電池型酸素濃度センサである。
【００２６】
この場合、前記空燃比要求判定手段は、
「前記下流側空燃比センサ出力相関値」として「前記下流側空燃比センサの出力値の単位時間あたりの変化量に相関する値（出力時間微分相関値）」を採用し、
前記リッチ要求発生期間において前記出力時間微分相関値が正であり且つ「前記出力時間微分相関値の大きさ」が「前記リーン要求判定値としての第１微分閾値」よりも大きくなったとき前記リーン要求が発生したと判定し、
前記リーン要求発生期間において前記出力時間微分相関値が負であり且つ「前記出力時間微分相関値の大きさ」が「前記リッチ要求判定値としての第２微分閾値」よりも大きくなったとき前記リッチ要求が発生したと判定し、更に、
前記現在吸蔵酸素量が前記放出酸素量に近づくほど前記第２微分閾値を小さくすることにより、前記リッチ要求が発生したと判定する時点がより早期に到来するように構成される。
【００２７】
上記構成によれば、下流側空燃比センサの出力値が理論空燃比に相当する値よりも小さい場合であっても、下流側空燃比センサの出力値がリッチ空燃比に相当する値に向けて急速に変化している場合、リーン要求が発生した（触媒の状態がリッチ状態となった）と判定することができる。更に、上記構成によれば、下流側空燃比センサの出力値が理論空燃比に相当する値よりも大きい場合であっても、下流側空燃比センサの出力値がリーン空燃比に相当する値に向けて急速に変化している場合、リッチ要求が発生した（触媒の状態がリーン状態となった）と判定することができる。よって、この構成によれば、より早期にリッチ要求及びリーン要求が発生したことを判定することができるので、触媒からＮＯｘが漏れ出す期間及び未燃物が漏れ出す期間を短縮化することができる。
【００２８】
加えて、この構成によれば、前記現在吸蔵酸素量が前記放出酸素量に近づくほど、前記リッチ要求が発生したと判定する時点がより早期に到来するように「前記リッチ要求判定値としての第２微分閾値」が変更される。即ち、前記現在吸蔵酸素量が前記放出酸素量に近づくほど、前記第２微分閾値は小さい値へと変更される。この結果、出力時間微分相関値が負であり且つ出力時間微分相関値の大きさが２微分閾値よりも大きくなる時点が早期に到来するので、リッチ要求が発生したことを早期に且つ確実に判定することができる。従って、ＮＯｘの排出量を低減することができる。
【００２９】
更に、前記下流側空燃比センサが濃淡電池型酸素濃度センサである場合、
前記空燃比要求判定手段は、
「前記下流側空燃比センサ出力相関値」として「前記下流側空燃比センサの出力値」を採用し、
前記リッチ要求発生期間において前記下流側空燃比センサの出力値の極小値を取得するとともに「前記取得された極小値に第１値を加えた値」を「前記リーン要求判定値」として採用し、且つ、（前記リッチ要求発生期間において）前記下流側空燃比センサの出力値が前記極小値をとった後に前記リーン要求判定値よりも大きくなったとき前記リーン要求が発生したと判定し、
前記リーン要求発生期間において前記下流側空燃比センサの出力値の極大値を取得するとともに「前記取得された極大値から第２値を減じた値」を「前記リッチ要求判定値」として採用し、且つ、（前記リーン要求発生期間において）前記下流側空燃比センサの出力値が前記極大値をとった後に前記リッチ要求判定値よりも小さくなったとき前記リッチ要求が発生したと判定し、更に、
前記現在吸蔵酸素量が前記放出酸素量に近づくほど前記第２値を小さくすることにより、前記リッチ要求が発生したと判定する時点がより早期に到来するように構成される。
【００３０】
上記構成によれば、下流側空燃比センサの出力値がリーン空燃比に相当する値であっても、下流側空燃比センサの出力値が「極小値に第１値を加えた値」を超えたとき、リーン要求が発生した（触媒の状態がリッチ状態となった）と判定することができる。更に、上記構成によれば、下流側空燃比センサの出力値がリッチ空燃比に相当する値であっても、下流側空燃比センサの出力値が「極大値から第２値を減じた値」よりも小さくなったとき、リッチ要求が発生した（触媒の状態がリーン状態となった）と判定することができる。よって、この構成によれば、より早期にリッチ要求及びリーン要求が発生したことを判定することができるので、触媒からＮＯｘが漏れ出す期間及び未燃物が漏れ出す期間を短縮化することができる。
【００３１】
加えて、この構成によれば、前記現在吸蔵酸素量が前記放出酸素量に近づくほど、前記リッチ要求が発生したと判定する時点がより早期に到来するように「前記リッチ要求判定値（前記極大値から第２値を減じた値）」が変更される。即ち、前記現在吸蔵酸素量が前記放出酸素量に近づくほど、前記第２値は小さい値へと変更される。この結果、リーン要求発生期間において、下流側空燃比センサの出力値が「極大値から第２値を減じた値」よりも小さくなる時点が早期に到来するので、リッチ要求が発生したことを早期に且つ確実に判定することができる。従って、ＮＯｘの排出量を低減することができる。
【００３２】
更に、前記下流側空燃比センサが濃淡電池型酸素濃度センサである場合、
前記空燃比要求判定手段は、
「前記下流側空燃比センサ出力相関値」として「前記下流側空燃比センサの出力値」を採用し、
前記リッチ要求発生期間において「前記下流側空燃比センサの出力値」が「前記リーン要求判定値としての触媒リッチ状態判定用閾値」よりも小さい値から大きい値へと変化したとき前記リーン要求が発生したと判定し、
前記リーン要求発生期間において「前記下流側空燃比センサの出力値」が「前記リッチ要求判定値としての触媒リーン状態判定用閾値」よりも大きい値から小さい値へと変化したとき前記リッチ要求が発生したと判定し、更に、
前記現在吸蔵酸素量が前記放出酸素量に近づくほど前記触媒リーン状態判定用閾値を大きくすることにより、前記リッチ要求が発生したと判定する時点がより早期に到来するように構成される。
【００３３】
この構成においては、記現在吸蔵酸素量が前記放出酸素量に近づくほど、前記リッチ要求が発生したと判定する時点がより早期に到来するように「前記リッチ要求判定値（触媒リーン状態判定用閾値）」が変更される。即ち、前記現在吸蔵酸素量が前記放出酸素量に近づくほど、前記リーン状態判定用閾値は大きい値へと変更される。この結果、リーン要求発生期間において「前記下流側空燃比センサの出力値」が「前記リッチ要求判定値としての触媒リーン状態判定用閾値」よりも大きい値から小さい値へと変化する時点が早期に到来するので、リッチ要求が発生したことを早期に且つ確実に判定することができる。従って、ＮＯｘの排出量を低減することができる。
【００３４】
ところで、フューエルカット運転が実行されると、触媒に多量の酸素が急激に流入する。従って、触媒の放出酸素量は「０（ゼロ）」になる。更に、フューエルカット運転の終了後において、触媒はリッチ要求発生期間において酸素を放出し、且つ、リーン要求発生期間において酸素を吸蔵する動作を繰り返す。よって、リッチ要求発生時点（第１時点）における放出酸素量の初期値は、その第１時点の前のリーン要求の発生時点（第２時点）における放出酸素量から、第２時点と第１時点との間に吸蔵された酸素量（第１時点での現在吸蔵酸素量）を、減じた値となる。
【００３５】
そこで、本発明の空燃比制御装置の一態様において、
前記空燃比要求判定手段は、
前記リッチ要求が発生したと判定された時点である第１時点での放出酸素量の値として、同第１時点の直前において前記リーン要求が発生したと判定された時点である第２時点での前記放出酸素量から同第１時点での前記現在吸蔵酸素量を減じた値を採用するとともに、前記機関の運転状態がフューエルカット運転状態となった場合、前記放出酸素量をゼロに設定する、ように構成される。
【００３６】
これによれば、放出酸素量を精度良く算出することができるので、結果として、リッチ要求発生時点を精度良く判定することができる。
【００３７】
本発明装置の他の目的、他の特徴及び付随する利点は、以下の図面を参照しつつ記述される本発明装置の各実施形態についての説明から容易に理解されるであろう。
【図面の簡単な説明】
【００３８】
【図１】図１は、本発明の第１実施形態に係る内燃機関の空燃比制御装置（第１制御装置）を適用した内燃機関の概略図である。
【図２】図２は、図１に示した上流側空燃比センサの出力値と空燃比との関係を示したグラフである。
【図３】図３は、図１に示した下流側空燃比センサの出力値と空燃比との関係を示したグラフである。
【図４】図４は、第１制御装置の空燃比要求の判定方法を説明するために、下流側空燃比センサの出力値を示した図である。
【図５】図５は、第１制御装置が算出する放出酸素量及び現在吸蔵酸素量等のタイムチャートである。
【図６】図６は、第１制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図７】図７は、第１制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図８】図８は、第１制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図９】図９は、本発明の第２実施形態に係る空燃比制御装置（第２制御装置）の空燃比要求の判定方法を説明するために、下流側空燃比センサの出力値を示した図である。
【図１０】図１０は、第２制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図１１】図１１は、本発明の第３実施形態に係る空燃比制御装置（第３制御装置）の空燃比要求の判定方法を説明するために、下流側空燃比センサの出力値を示した図である。
【図１２】図１２は、第３制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図１３】図１３は、本発明の第４実施形態に係る空燃比制御装置（第４制御装置）が算出する放出酸素量及び現在吸蔵酸素量等のタイムチャートである。
【図１４】図１４は、第４制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図１５】図１５は、本発明の第５実施形態に係る空燃比制御装置（第５制御装置）のＣＰＵが実行するルーチンを示したフローチャートである。
【図１６】図１６は、第５制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【発明を実施するための形態】
【００３９】
以下、本発明による内燃機関の空燃比制御装置の各実施形態について図面を参照しつつ説明する。
【００４０】
＜第１実施形態＞
（構成）
図１は、本発明の第１実施形態に係る空燃比制御装置（以下、「第１制御装置」とも称呼する。）が適用される内燃機関１０の概略構成を示している。機関１０は、４サイクル・火花点火式・多気筒（本例において４気筒）・ガソリン燃料機関である。機関１０は、本体部２０、吸気系統３０及び排気系統４０を備えている。
【００４１】
本体部２０は、シリンダブロック部とシリンダヘッド部とを備えている。本体部２０は、ピストン頂面、シリンダ壁面及びシリンダヘッド部の下面からなる複数（４個）の燃焼室（第１気筒＃１乃至第４気筒＃４）２１を備えている。
【００４２】
シリンダヘッド部には、複数の吸気ポート２２と複数の排気ポート２３とが形成されている。各吸気ポート２２は、各燃焼室（各気筒）２１に「空気及び燃料からなる混合気」を供給するように各燃焼室２１に接続されている。吸気ポート２２は図示しない吸気弁により開閉される。各排気ポート２３は、各燃焼室２１から排ガス（既燃ガス）を排出するように各燃焼室２１に接続されている。排気ポート２３は図示しない排気弁により開閉される。
【００４３】
シリンダヘッド部には複数（４個）の点火プラグ２４が固定されている。各点火プラグ２４は、その火花発生部が各燃焼室２１の中央部であってシリンダヘッド部の下面近傍位置に露呈するように配設されている。各点火プラグ２４は、点火信号に応答して火花発生部から点火用火花を発生するようになっている。
【００４４】
シリンダヘッド部には更に複数（４個）の燃料噴射弁（インジェクタ）２５が固定されている。燃料噴射弁２５は、各吸気ポート２２に一つずつ（即ち、一つの気筒に対して一つ）設けられている。燃料噴射弁２５は、噴射指示信号に応答し、「その噴射指示信号に含まれる指示燃料噴射量Ｆｉの燃料」を対応する吸気ポート２２内に噴射するようになっている。
【００４５】
更に、シリンダヘッド部には、吸気弁制御装置２６が設けられている。この吸気弁制御装置２６は、インテークカムシャフト（図示せず）とインテークカム（図示せず）との相対回転角度（位相角度）を油圧により調整・制御する周知の構成を備えている。吸気弁制御装置２６は、指示信号（駆動信号）に基いて作動し、吸気弁の開弁タイミング（吸気弁開弁タイミング）を変更することができるようになっている。
【００４６】
吸気系統３０は、インテークマニホールド３１、吸気管３２、エアフィルタ３３、スロットル弁３４及びスロットル弁アクチュエータ３４ａを備えている。
【００４７】
インテークマニホールド３１は、各吸気ポート２２に接続された複数の枝部と、それらの枝部が集合したサージタンク部と、を備えている。吸気管３２はサージタンク部に接続されている。インテークマニホールド３１、吸気管３２及び複数の吸気ポート２２は、吸気通路を構成している。エアフィルタ３３は吸気管３２の端部に設けられている。スロットル弁３４はエアフィルタ３３とインテークマニホールド３１との間の位置において吸気管３２に回動可能に取り付けられている。スロットル弁３４は、回動することにより吸気管３２が形成する吸気通路の開口断面積を変更するようになっている。スロットル弁アクチュエータ３４ａは、ＤＣモータからなり、指示信号（駆動信号）に応答してスロットル弁３４を回動させるようになっている。
【００４８】
排気系統４０は、エキゾーストマニホールド４１、エキゾーストパイプ（排気管）４２、上流側触媒４３及び下流側触媒４４を備えている。
【００４９】
エキゾーストマニホールド４１は、各排気ポート２３に接続された複数の枝部４１ａと、それらの枝部４１ａが集合した集合部（排気集合部）４１ｂと、を含む。エキゾーストパイプ４２は、エキゾーストマニホールド４１の集合部４１ｂに接続されている。エキゾーストマニホールド４１、エキゾーストパイプ４２及び複数の排気ポート２３は、排ガスが通過する通路を構成している。なお、本明細書において、エキゾーストマニホールド４１の集合部４１ｂ及びエキゾーストパイプ４２により形成される通路を、便宜上、「排気通路」と称呼する。
【００５０】
上流側触媒（排気浄化用の触媒装置（ユニット））４３は、セラミックを含む担持体に「触媒物質である貴金属」及び「酸素吸蔵物質であるセリア（CeO2)」を担持していて、酸素吸蔵・放出機能（酸素吸蔵機能）を有する三元触媒である。上流側触媒４３はエキゾーストパイプ４２に配設（介装）されている。上流側触媒４３は所定の活性温度に到達すると、「未燃物（ＨＣ、ＣＯ及びＨ２等）と窒素酸化物（ＮＯｘ）とを同時に浄化する触媒機能」及び「酸素吸蔵機能」を発揮する。上流側触媒４３は、スタート・キャタリティック・コンバータ（ＳＣ）又は第１触媒とも称呼される。
【００５１】
下流側触媒４４は、上流側触媒４３と同様の三元触媒である。下流側触媒４４は、上流側触媒４３よりも下流においてエキゾーストパイプ４２に配設（介装）されている。下流側触媒４４は、車両のフロア下方に配設されているため、アンダ・フロア・キャタリティック・コンバータ（ＵＦＣ）又は第２触媒とも称呼される。なお、本明細書において、単に「触媒」と言うとき、その「触媒」は上流側触媒４３を意味する。
【００５２】
第１制御装置は、熱線式エアフローメータ５１、スロットルポジションセンサ５２、機関回転速度センサ５３、水温センサ５４、上流側空燃比センサ５５、下流側空燃比センサ５６及びアクセル開度センサ５７を備えている。
【００５３】
熱線式エアフローメータ５１は、吸気管３２内を流れる吸入空気の質量流量を検出し、その質量流量（機関１０の単位時間あたりの吸入空気量）Ｇａを表す信号を出力するようになっている。
【００５４】
スロットルポジションセンサ５２は、スロットル弁３４の開度を検出し、スロットル弁開度ＴＡを表す信号を出力するようになっている。
【００５５】
機関回転速度センサ５３は、インテークカムシャフトが５°回転する毎に幅狭のパルスを有するとともにインテークカムシャフトが３６０°回転する毎に幅広のパルスを有する信号を出力するようになっている。機関回転速度センサ５３から出力される信号は後述する電気制御装置６０により機関回転速度ＮＥを表す信号に変換されるようになっている。更に、電気制御装置６０は、機関回転速度センサ５３及び図示しないカムポジションセンサからの信号に基いて、機関１０のクランク角度（絶対クランク角）を取得するようになっている。
【００５６】
水温センサ５４は、内燃機関１０の冷却水の温度を検出し、冷却水温ＴＨＷを表す信号を出力するようになっている。
【００５７】
上流側空燃比センサ５５は、エキゾーストマニホールド４１の集合部４１ｂと上流側触媒４３との間の位置においてエキゾーストマニホールド４１及びエキゾーストパイプ４２の何れか（即ち、排気通路）に配設されている。上流側空燃比センサ５５は、例えば、特開平１１−７２４７３号公報、特開２０００−６５７８２号公報及び特開２００４−６９５４７号公報等に開示された「拡散抵抗層を備える限界電流式広域空燃比センサ」である。
【００５８】
上流側空燃比センサ５５は、図２に示したように、上流側空燃比センサ５５の配設位置を流れる排ガスの空燃比に応じた出力値Vabyfsを出力する。上流側空燃比センサ５５の配設位置を流れる排ガスは、触媒４３に流入するガスであり、「触媒流入ガス」とも称呼される。触媒流入ガスの空燃比は「検出上流側空燃比abyfs」とも称呼される。出力値Vabyfsは触媒流入ガスの空燃比が大きくなるほど（即ち、触媒流入ガスの空燃比がリーン側の空燃比になるほど）増大する。
【００５９】
電気制御装置６０は、図２に示した空燃比変換テーブル（マップ）Mapabyfsを記憶している。電気制御装置６０は、出力値Vabyfsを空燃比変換テーブルMapabyfsに適用することにより、実際の上流側空燃比abyfsを検出する（検出上流側空燃比abyfsを取得する）ようになっている。
【００６０】
再び、図１を参照すると、下流側空燃比センサ５６は、上流側触媒４３と下流側触媒４４との間の位置においてエキゾーストパイプ４２（即ち、排気通路）に配設されている。下流側空燃比センサ５６は、排ガス中の酸素分圧と大気中の酸素分圧との差に応じた起電力を出力値として発生する周知の「濃淡電池型酸素濃度センサ（Ｏ２センサ）」である。
【００６１】
下流側空燃比センサ５６は、例えば、ジルコニアを含む固体電解質層（酸素分圧に応じた出力値を示す素子）と、固体電解質層の外側に形成された排ガス側電極層と、大気室（固体電解質層の内側）に露呈し且つ固体電解室層を挟んで排ガス側電極層と対向するように固体電解質層の内側に形成された大気側電極層と、排ガス側電極層を覆い且つ排ガスが接触する（排ガス中に晒されるように配置される）拡散抵抗層と、を備える。固体電解質層は試験管状であってもよく、板状であってもよい。
【００６２】
下流側空燃比センサ５６は、下流側空燃比センサ５６の配設位置を流れる排ガスの空燃比（下流側空燃比afdown）に応じた出力値Voxsを出力するようになっている。より具体的に述べると、出力値Voxsは、図３に示したように、下流側空燃比センサの素子（実際には排ガス側電極層）に到達したガス（素子到達ガス）の空燃比が理論空燃比よりもリッチ側の空燃比であって、下流側空燃比センサ５６に到達したガスの酸化平衡（酸素平衡）後のガスの酸素分圧が小さいとき最大出力値Max（例えば、約０．９Ｖ又は１．０Ｖ）近傍の値となる。即ち、下流側空燃比センサ５６は、触媒流出ガスに過剰の酸素が全く含まれていない状態が所定時間以上継続しているときに最大出力値Maxを出力する。
【００６３】
更に、出力値Voxsは、素子到達ガスの空燃比が理論空燃比よりもリーン側の空燃比であって、下流側空燃比センサ５６に到達したガスの酸化平衡後のガスの酸素分圧が大きいとき最小出力値Min（例えば、約０．１Ｖ又は０Ｖ）近傍の値となる。即ち、下流側空燃比センサ５６は、触媒流出ガスに「多量の過剰酸素」が含まれている状態が所定時間以上継続しているときに最小出力値Minを出力する。
【００６４】
この出力値Voxsは、触媒流出ガスの空燃比が理論空燃比よりもリッチ側の空燃比からリーン側の空燃比へと変化した場合、最大出力値Max近傍値から最小出力値Min近傍値へと急激に減少する。逆に、出力値Voxsは、触媒流出ガスの空燃比が理論空燃比よりもリーン側の空燃比からリッチ側の空燃比へと変化した場合、最小出力値Min近傍値から最大出力値Max近傍値へと急激に増大する。出力値Voxsは、素子到達ガスの酸素分圧が、「素子到達ガスの空燃比が理論空燃比であるときの酸素分圧」であるとき、下流側空燃比センサ５６の最大出力値Maxと最小出力値Minとの中央の値Vmid（中央値Vmid＝（Max＋Min）／２）に実質的に一致する。中央値Vmidは、便宜上、理論空燃比相当電圧Ｖstとも称呼される。
【００６５】
図１に示したアクセル開度センサ５７は、運転者によって操作されるアクセルペダルＡＰの操作量を検出し、アクセルペダルＡＰの操作量Accpを表す信号を出力するようになっている。
【００６６】
電気制御装置６０は、「ＣＰＵ、ＲＯＭ、ＲＡＭ、バックアップＲＡＭ、並びに、ＡＤコンバータを含むインターフェース等」を含む「周知のマイクロコンピュータ」を備える電気回路である。
【００６７】
電気制御装置６０が備えるバックアップＲＡＭは、機関１０を搭載した車両の図示しないイグニッション・キー・スイッチの位置（オフ位置、始動位置及びオン位置等の何れか）に関わらず、車両に搭載されたバッテリから電力の供給を受けるようになっている。バックアップＲＡＭは、バッテリから電力の供給を受けている場合、ＣＰＵの指示に応じてデータを格納する（データが書き込まれる）とともに、そのデータを読み出し可能となるように保持（記憶）する。バックアップＲＡＭは、バッテリが車両から取り外される等によりバッテリからの電力供給が遮断されると、データを保持することができない。即ち、それまでに保持していたデータが消失（破壊）される。
【００６８】
電気制御装置６０のインターフェースは、前記センサ５１〜５７と接続され、ＣＰＵにセンサ５１〜５７からの信号を供給するようになっている。更に、そのインターフェースは、ＣＰＵの指示に応じて、各気筒の点火プラグ２４、各気筒の燃料噴射弁２５、吸気弁制御装置２６及びスロットル弁アクチュエータ３４ａ等に指示信号（駆動信号）等を送出するようになっている。なお、電気制御装置６０は、取得されたアクセルペダルの操作量Accpが大きくなるほどスロットル弁開度ＴＡが大きくなるように、スロットル弁アクチュエータ３４ａに指示信号を送出するようになっている。
【００６９】
（第１制御装置による空燃比制御の概要）
次に、上記第１制御装置による空燃比制御（空燃比フィードバック制御）の概要について説明する。
【００７０】
第１制御装置は、以下に述べる判定方法に従って、「リーン要求及びリッチ要求」の何れの空燃比要求が発生しているかを判定（決定）する。リーン要求は、触媒４３の状態が酸素不足状態（リッチ状態）であると判定されているときに発生する。リッチ要求は、触媒４３の状態が酸素過剰状態（リーン状態）であると判定されているときに発生する。従って、第１制御装置は、実質的に、触媒４３の状態が「酸素不足状態及び酸素過剰状態」の何れの状態であるかを判定（決定）する。
【００７１】
リーン要求が発生したと判定された時点からリッチ要求が発生したと判定される時点までの期間は、リーン要求発生期間と称呼される。第１制御装置は、リーン要求発生期間において、機関の空燃比を所定のリーン空燃比afLeanに設定する。
リッチ要求が発生したと判定された時点からリーン要求が発生したと判定される時点までの期間は、リッチ要求発生期間と称呼される。第１制御装置は、リッチ要求発生期間において、機関の空燃比を所定のリッチ空燃比afRichに設定する。
【００７２】
＜判定方法＞
第１制御装置は、下流側空燃比センサ５６の出力値Voxsの単位時間UT（例えば、４ｍｓ）あたりの変化量ΔVoxsを取得する（図４を参照。）。この変化量ΔVoxsは、実質的に時間微分値d(Voxs)/dtであるので、出力時間微分相関値ΔVoxsと称呼される。出力時間微分相関値ΔVoxsは、下流側空燃比センサ５６の出力値Voxsに相関する値（下流側空燃比センサ出力相関値）の一つである。
【００７３】
前述したように、第１制御装置は、リッチ要求発生期間において機関の空燃比をリッチ空燃比に設定する。そのため、図４の時刻ｔ１〜時刻ｔ２に示したように、リッチ要求発生期間において出力時間微分相関値ΔVoxsは出力値Voxsが極小値Vminをとった後に正の値となり、且つ、出力時間微分相関値ΔVoxsの大きさは時刻ｔ２において第１微分閾値ΔVth1よりも大きくなる。第１制御装置は、出力時間微分相関値ΔVoxsが正の値であって且つ出力時間微分相関値ΔVoxsの大きさが「リーン要求判定値としての第１微分閾値ΔVth1」よりも大きくなったとき、リーン要求が発生したと判定する。従って、図４に示した例においては、第１制御装置は、時刻ｔ２にてリーン要求が発生したと判定する。
【００７４】
更に、第１制御装置は、リーン要求発生期間において機関の空燃比をリーン空燃比に設定する。そのため、図４の時刻ｔ２〜時刻ｔ３に示したように、リーン要求発生期間において出力時間微分相関値ΔVoxsは出力値Voxsが極大値Vmaxをとった後に負の値となり、且つ、出力時間微分相関値ΔVoxsの大きさは時刻ｔ３において第２微分閾値ΔVth2よりも大きくなる。第１制御装置は、リーン要求発生期間において、出力時間微分相関値ΔVoxsが負の値であって且つ出力時間微分相関値ΔVoxsの大きさが「リッチ要求判定値としての第２微分閾値ΔVth2」よりも大きくなったとき、リッチ要求が発生したと判定する。従って、図４に示した例においては、第１制御装置は、時刻ｔ３にてリッチ要求が発生したと判定する。
【００７５】
従来の空燃比制御装置は、出力値Voxsが理論空燃比相当電圧Ｖstより小さい場合、触媒４３の状態が酸素過剰状態にあり、従って、リッチ要求が発生していると判定する。しかしながら、出力時間微分相関値ΔVoxsが正の値であって且つ出力時間微分相関値ΔVoxsの大きさが第１微分閾値ΔVth1よりも大きくなったとき（時刻ｔ２を参照。）においては、出力値Voxsが理論空燃比相当電圧Ｖstよりも小さいとしても、触媒４３からは多量の未燃物が流出し始めているから、触媒４３の状態は既に酸素不足状態になっていると考えられる。従って、第１制御装置は、従来の空燃比制御装置に比べ、触媒４３の状態が酸素不足状態となったこと（リーン要求が発生したこと）をより早期に判定することができる。
【００７６】
更に、従来の空燃比制御装置は、出力値Voxsが理論空燃比相当電圧Ｖstより大きいとき、触媒４３の状態が酸素不足状態にあり、従って、リーン要求が発生していると判定する。しかしながら、出力時間微分相関値ΔVoxsが負の値であって且つ出力時間微分相関値ΔVoxsの大きさが第２微分閾値ΔVth2よりも大きくなったとき（時刻ｔ３を参照。）においては、出力値Voxsが理論空燃比相当電圧Ｖstよりも大きいとしても、触媒４３からは多量の酸素が流出し始めているから、触媒４３は既に酸素過剰状態になっていると考えられる。従って、第１制御装置は、従来の空燃比制御装置に比べ、触媒４３の状態が酸素過剰状態となったこと（リッチ要求が発生したこと）をより早期に判定することができる。
【００７７】
＜モデルによる補助＞
ところで、下流側空燃比センサ５６の出力値Voxsにはノイズが重畳する場合がある。また、機関１０の運転状態が過渡運転状態であると、下流側空燃比センサ５６の出力値Voxsが触媒４３の状態を精度良く表さない場合もある。一方、前述したように、エミッションを良好にするためには、触媒４３が酸素過剰状態（リーン状態）となった時点を、触媒４３が酸素不足状態（リッチ状態）となった時点よりも、より精度よく（即ち、遅滞なく）検出する必要がある。
【００７８】
そこで、第１制御装置は、以下に述べる考えに従って、触媒４３の酸素を吸蔵する余力に関する情報を取得し、その情報と下流側空燃比センサ５６の出力値Voxsとに基づいて、触媒４３の状態が酸素過剰状態となったか（リッチ要求が発生したか）否かを判定する。
【００７９】
触媒４３の酸素を吸蔵する余力に関する情報は、次のように取得される。
【００８０】
リッチ要求発生期間、機関の空燃比はリッチ空燃比に設定される。従って、リッチ要求発生期間において、触媒４３には過剰な未燃物が流入し、触媒４３に吸蔵されていた酸素はその未燃物を浄化するために放出される。この放出される酸素の量を「放出酸素量ＨＳ」と称呼する。放出酸素量ＨＳは、図５に示したように、リッチ要求発生期間である時刻ｔ１〜時刻ｔ２において増大する。
【００８１】
この放出酸素量ＨＳは、下記（１）式及び下記（２）式により推定することができる。ＳＦｉは「計算周期Ｔｓ」における指示燃料噴射量Ｆｉの総和であり、ＨＳ（ｎ）は現時点の放出酸素量、ＨＳ（ｎ−１）は現時点よりも計算周期Ｔｓ前の時点における放出酸素量である。stoichは理論空燃比（例えば、１４．６）であり、abyfsは上述した検出上流側空燃比abyfsである。０．２３は大気における酸素の重量割合である。（１）式において、ＳＦｉ・（stoich−abyfs)は計算周期Ｔｓにおいて触媒４３に流入する過剰な未燃物に応じた量（未燃物を浄化するのに必要な大気の量）である。このように、放出酸素量ＨＳは、触媒流入ガスの空燃比（検出上流側空燃比abyfs）に基づいて算出される。
放出酸素変化量ΔＨＳ＝０．２３・ＳＦｉ・（stoich−abyfs)  …（１）
放出酸素量ＨＳ（ｎ）＝ＨＳ（ｎ−１）＋ΔＨＳ              …（２）
【００８２】
このように放出酸素量ＨＳ（ｎ）を算出しているとき、触媒４３には過剰な未燃物が流入し続けるので、出力時間微分相関値ΔVoxsは正の値となり、且つ、その出力時間微分相関値ΔVoxsの大きさは第１微分閾値ΔVth1よりも大きくなる。この時点は、図５の時刻ｔ２に対応している。このとき、第１制御装置は、触媒４３の状態が酸素不足状態となった（リーン要求が発生した）と判定し、機関の空燃比をリーン空燃比に設定する。
【００８３】
その結果、触媒４３には過剰な酸素が流入する。従って、図５の時刻ｔ２以降に示したように、吸蔵酸素量の現在値（現在吸蔵酸素量）ＫＺは増大する。この現在吸蔵酸素量ＫＺは、下記（３）式及び下記（４）式により推定することができる。ＫＺ（ｎ）は現時点の現在吸蔵酸素量、ＫＺ（ｎ−１）は現時点よりも計算周期Ｔｓ前の時点における現在吸蔵酸素量である。（３）式において、０．２３・ＳＦｉ・（abyfs−stoich)は計算周期Ｔｓにおいて触媒４３に流入する過剰な酸素に応じた量である。このように、現在吸蔵酸素量ＫＺは、触媒流入ガスの空燃比（検出上流側空燃比abyfs）に基づいて算出される。
吸蔵酸素変化量ΔＫＺ＝０．２３・ＳＦｉ・（abyfs−stoich)  …（３）
現在吸蔵酸素量ＫＺ（ｎ）＝ＫＺ（ｎ−１）＋ΔＫＺ          …（４）
【００８４】
ところで、リーン要求発生期間において触媒４３が吸蔵することができる酸素の総量は、そのリーン要求発生期間の直前のリッチ要求発生期間において触媒４３が放出した酸素量（またはそれ以上の量）に実質的に等しいと考えることができる。つまり、触媒４３が「直前のリッチ要求発生期間」において所定量の酸素を放出したのであれば、その触媒４３はそのリッチ要求発生期間に続くリーン要求発生期間において、少なくともその所定量の酸素を吸蔵することができる可能性が極めて高い。よって、直前のリッチ要求発生期間において算出された放出酸素量ＨＳ（ｎ）から、現在のリーン要求発生期間において更新されている現在吸蔵酸素量ＫＺ（ｎ）を減じた量は、現時点において触媒４３が吸蔵することができる酸素量を精度良く表す。換言すると、現在吸蔵酸素量ＫＺ（ｎ）が放出酸素量ＨＳ（ｎ）に近づくほど、触媒４３が酸素を吸蔵することができる余力は小さくなる。即ち、現在吸蔵酸素量ＫＺ（ｎ）が放出酸素量ＨＳ（ｎ）に近づくほど、触媒４３は酸素過剰状態となっている可能性が高くなる。
【００８５】
そこで、第１制御装置は、現在吸蔵酸素量ＫＺ（ｎ）が放出酸素量ＨＳ（ｎ）に近づくほど、触媒４３が酸素過剰状態となったと判定する際に使用される閾値、即ち、リッチ要求が発生したと判定するための第２微分閾値ΔVth2を小さくする。これにより、リッチ要求が発生したとの判定がより早期に行われる。
【００８６】
より具体的に述べると、第１制御装置は、図５に示したように、リーン要求が発生したと判定した時点（時刻ｔ２）に「直前のリッチ要求発生期間（時刻ｔ１〜時刻ｔ２）において算出された放出酸素量ＨＳ（ｎ）」を基準値ＨＳrefとして取得し、その基準値ＨＳrefの所定割合（ｋ・ＨＳref、ｋは０〜１の値）を比較値として決定する。
【００８７】
そして、第１制御装置は、現在吸蔵酸素量ＫＺ（ｎ）が比較値ｋ・ＨＳrefより小さい場合には第２微分閾値ΔVth2を相対的に大きい値（第１の値）ΔVthLargeに設定し、現在吸蔵酸素量ＫＺ（ｎ）が比較値ｋ・ＨＳrefより大きい場合には第２微分閾値ΔVth2を相対的に小さい値ΔVthsmall（第１の値ΔVthLargeよりも小さい第２の値ΔVthsmall）に設定する。第２微分閾値ΔVth2が小さい値に設定されれば、リッチ要求が発生したとの判定（触媒４３の状態が酸素過剰状態であるとの判定）がより早期に行われる。この結果、触媒４３が酸素過剰状態に陥っている期間を短くすることができるので、ＮＯｘの排出量を低減することができる。
【００８８】
このように、第１制御装置は、ある時点における触媒４３が「その時点から、どの程度の酸素を吸蔵することができるか？」を表すことが可能な情報（現在吸蔵酸素量ＫＺ及び放出酸素量ＨＳ）を取得し、触媒４３の状態判定（空燃比要求の判定）に使用する。なお、ある時点における触媒４３が「その時点から、どれだけの量の酸素を更に放出できるか？」を推定することは容易ではない。何故なら、触媒４３が放出することができる酸素の量（触媒の放出可能酸素量）は、触媒４３の劣化の程度、触媒４３の温度、触媒流入ガス（還元成分）の種類、及び、触媒流入ガスの還元成分の濃度（リッチの度合い）等の多くのファクターであって「精度の良い推定が困難なファクター」により大きく変動するからである。つまり、触媒４３が所定量の酸素を吸蔵している場合であっても、その触媒４３の温度及び触媒流入ガスの空燃比等により触媒４３が所定量の酸素を放出できるとは限らない。
【００８９】
（実際の作動）
次に、第１制御装置の実際の作動について説明する。以下、説明の便宜上、「MapX(a1,a2,…)」は、「a1,a2,…を引数とするテーブル」であって「値Xを求めるためのテーブル」を表すものとする。
【００９０】
＜燃料噴射制御＞
第１制御装置のＣＰＵは、図６に示した燃料噴射制御ルーチンを、任意の気筒のクランク角度が吸気上死点前の所定クランク角度となる毎に、その気筒に対して繰り返し実行するようになっている。前記所定クランク角度は、例えば、ＢＴＤＣ９０°ＣＡ（吸気上死点前９０°クランク角度）である。クランク角度が前記所定クランク角度に一致した気筒は「燃料噴射気筒」とも称呼される。ＣＰＵは、この燃料噴射制御ルーチンにより、指示燃料噴射量（最終燃料噴射量）Ｆｉの計算及び燃料噴射の指示を行う。
【００９１】
任意の気筒のクランク角度が吸気上死点前の所定クランク角度と一致すると、ＣＰＵはステップ６００から処理を開始し、ステップ６０５にてフューエルカットフラグＸＦＣの値が「０」であるか否かを判定する。フューエルカットフラグＸＦＣの値は、フューエルカット開始条件が成立したときに「１」に設定され、フューエルカットフラグＸＦＣの値が「１」であるときにフューエルカット終了条件が成立したときに「０」に設定される。
【００９２】
フューエルカット開始条件は、スロットル弁開度ＴＡが「０」であり且つ機関回転速度ＮＥがフューエルカット回転閾値速度ＮＥＦＣ以上であるとき成立する。フューエルカット終了条件は、スロットル弁開度ＴＡが「０」でなくなるか、又は、機関回転速度ＮＥがフューエルカット終了回転閾値速度ＮＥＲＴ以下となったとき、成立する。フューエルカット終了回転閾値速度ＮＥＲＴはフューエルカット回転閾値速度ＮＥＦＣよりも小さい。
【００９３】
いま、フューエルカットフラグＸＦＣの値が「０」であると仮定する。この場合、ＣＰＵは、ステップ６０５にて「Ｙｅｓ」と判定してステップ６１０に進み、「エアフローメータ５１により計測された吸入空気量Ｇａ、機関回転速度センサ５３の信号に基いて取得された機関回転速度ＮＥ、及び、ルックアップテーブルMapMc（Ｇａ，ＮＥ）」に基いて「燃料噴射気筒に吸入される空気量（即ち、筒内吸入空気量）Ｍｃ）」を取得する。筒内吸入空気量Ｍｃは、周知の空気モデル（吸気通路における空気の挙動を模した物理法則に従って構築されたモデル）により算出されてもよい。
【００９４】
次に、ＣＰＵはステップ６１５に進み、フィードバック制御フラグＸＦＢの値が「１」であるか否かを判定する。このフィードバック制御フラグＸＦＢの値は、フィードバック制御条件が成立しているときに「１」に設定され、フィードバック制御条件が成立していないときに「０」に設定される。フィードバック制御条件は、例えば、以下の総ての条件が成立したときに成立する。
（Ａ１）上流側空燃比センサ５５が活性化している。
（Ａ２）下流側空燃比センサ５６が活性化している。
（Ａ３）機関の負荷ＫＬが閾値ＫＬｔｈ以下である。
（Ａ４）フューエルカットフラグＸＦＣの値が「０」である。
【００９５】
このとき、フィードバック制御フラグＸＦＢの値が「１」でなければ、ＣＰＵはステップ６１５にて「Ｎｏ」と判定してステップ６２０に進み、目標空燃比abyfrを理論空燃比stoich（例えば、１４．６）に設定する。
【００９６】
次に、ＣＰＵは以下に述べるステップ６２５乃至ステップ６４０の処理を順に行い、ステップ６９５に進んで本ルーチンを一旦終了する。
【００９７】
ステップ６２５：ＣＰＵは、筒内吸入空気量Ｍｃを目標空燃比abyfrで除することによって基本燃料噴射量Ｆｂａｓｅを算出する。基本燃料噴射量Ｆｂａｓｅは、機関の空燃比を目標空燃比abyfrに一致させるために必要な燃料噴射量のフィードフォワード量である。
【００９８】
ステップ６３０：ＣＰＵは、図示しないルーチンにより別途計算されているメインフィードバック量ＫＦmainを読み込む。メインフィードバック量ＫＦmainは、検出上流側空燃比abyfsが目標空燃比abyfrに一致するように周知のＰＩＤ制御に基づいて算出される。なお、メインフィードバック量ＫＦmainは、フィードバック制御フラグＸＦＢの値が「０」であるとき「１」に設定される。更に、メインフィードバック量ＫＦmainは常に「１」に設定されてもよい。即ち、メインフィードバック量ＫＦmainを用いたフィードバック制御は本実施形態において必須ではない。
【００９９】
ステップ６３５：ＣＰＵは、基本燃料噴射量Ｆｂａｓｅをメインフィードバック量ＫＦmainにより補正することによって指示燃料噴射量Ｆｉを算出する。より具体的に述べると、ＣＰＵは、基本燃料噴射量Ｆｂａｓｅにメインフィードバック量ＫＦmainを乗じることによって指示燃料噴射量Ｆｉを算出する。
【０１００】
ステップ６４０：ＣＰＵは、「指示燃料噴射量Ｆｉの燃料」を「燃料噴射気筒に対応して設けられている燃料噴射弁２５」から噴射させるための噴射指示信号を、その燃料噴射弁２５に送出する。
【０１０１】
この結果、機関の空燃比を目標空燃比abyfrに一致させるために必要な量の燃料が燃料噴射気筒の燃料噴射弁２５から噴射させられる。即ち、ステップ６２５乃至ステップ６４０は、「機関の空燃比が目標空燃比abyfrに一致するように指示燃料噴射量Ｆｉを制御する」指示燃料噴射量制御手段を構成している。
【０１０２】
一方、ＣＰＵがステップ６１５の処理を行う時点において、フィードバック制御フラグＸＦＢの値が「１」であると、ＣＰＵはそのステップ６１５にて「Ｙｅｓ」と判定してステップ６４５に進み、リーン要求フラグＸLeanreqの値が「１」であるか否かを判定する。リーン要求フラグＸLeanreqの値は後述するルーチンにより設定される。
【０１０３】
リーン要求フラグＸLeanreqの値が「１」であると、ＣＰＵはステップ６４５にて「Ｙｅｓ」と判定してステップ６５０に進み、目標空燃比abyfrを所定のリーン空燃比afLean（理論空燃比よりも大きい一定の空燃比、例えば、１５．０）に設定する。その後、ＣＰＵはステップ６２５以降に進む。従って、機関の空燃比はリーン空燃比afLeanに一致させられる。
【０１０４】
これに対し、ＣＰＵがステップ６４５の処理を実行する時点において、リーン要求フラグＸLeanreqの値が「０」であると、ＣＰＵはステップ６４５にて「Ｎｏ」と判定してステップ６５５に進み、目標空燃比abyfrを所定のリッチ空燃比afRich（理論空燃比よりも小さい一定の空燃比、例えば、１４．２）に設定する。その後、ＣＰＵはステップ６２５以降に進む。従って、機関の空燃比はリッチ空燃比afRichに一致させられる。
【０１０５】
一方、ＣＰＵがステップ６０５の処理を実行する時点において、フューエルカットフラグＸＦＣの値が「１」であると、ＣＰＵはそのステップ６０５にて「Ｎｏ」と判定してステップ６９５に直接進み、本ルーチンを一旦終了する。この場合、ステップ６４０の処理による燃料噴射が実行されないので、フューエルカット制御（燃料供給停止制御）が実行される。即ち、機関１０の運転状態はフューエルカット運転状態となる。
【０１０６】
＜空燃比要求判定（触媒状態判定）＞
ＣＰＵは図７にフローチャートにより示した「空燃比要求判定（触媒状態判定）ルーチン」を所定時間UTの経過毎に繰り返し実行している。従って、所定のタイミングになると、ＣＰＵはステップ７００から処理を開始してステップ７０５に進み、下流側空燃比センサ５６の出力値Voxsから前回値Voxsoldを減じた値を「出力時間微分相関値ΔVoxs」として取得する。前回値Voxsoldは、出力値Voxsの所定時間UT前の時点における値である。
【０１０７】
次に、ＣＰＵはステップ７１０に進み、出力値Voxsを前回値Voxsoldとして格納する。その後、ＣＰＵはステップ７１５に進み、リーン要求フラグＸLeanreqの値が「１」であるか否かを判定する。
【０１０８】
いま、リーン要求フラグＸLeanreqの値が「０」であると仮定する。この場合、ＣＰＵはステップ７１５にて「Ｎｏ」と判定してステップ７２０に進み、出力時間微分相関値ΔVoxsが正（０以上）であり且つ出力時間微分相関値ΔVoxsの大きさ（｜ΔVoxs｜）が「リーン要求判定値としての第１微分閾値ΔVth1」より大きいか否かを判定する。このとき、出力時間微分相関値ΔVoxsが負（０未満）であるか、又は、出力時間微分相関値ΔVoxsの大きさ（｜ΔVoxs｜）が第１微分閾値ΔVth1以下であれば、ＣＰＵはステップ７２０にて「Ｎｏ」と判定してステップ７９５に直接進み、本ルーチンを一旦終了する。
【０１０９】
この状態（リーン要求フラグＸLeanreqの値が「０」である状態）において、フィードバック制御フラグＸＦＢの値が「１」であると、機関の空燃比はリッチ空燃比afRichに制御される（図６のステップ６５５を参照。）。更に、この状態においては、触媒４３に過剰な未燃物が流入するので、後述する図８に示したルーチンにより放出酸素量ＨＳが更新されて行く。
【０１１０】
この状態が継続すると、触媒４３から未燃物が流出し始めるので、図４の時刻ｔ１〜時刻ｔ２に示されているように、出力値Voxsは極小値Vminを取った後に増加する。従って、あるタイミングにおいて、出力時間微分相関値ΔVoxsは正となり、且つ、出力時間微分相関値ΔVoxsの大きさ（｜ΔVoxs｜）は第１微分閾値ΔVth1よりも大きくなる。この場合、ＣＰＵはステップ７２０にて「Ｙｅｓ」と判定し、ステップ７２５に進んでリーン要求フラグＸLeanreqの値を「１」に設定する。
【０１１１】
これにより、ＣＰＵは図６のステップ６４５にて「Ｙｅｓ」と判定し、ステップ６５０に進む。従って、機関の空燃比はリーン空燃比afLeanに設定される。この状態においては触媒４３に過剰な酸素が流入するので、後述する図８に示したルーチンにより現在吸蔵酸素量ＫＺが更新されて行く。
【０１１２】
この状態において、ＣＰＵが図７のステップ７００から処理を開始すると、ＣＰＵはステップ７０５及びステップ７１０の処理を実行した後にステップ７１５に進み、そのステップ７１５にて「Ｙｅｓ」と判定してステップ７３０に進む。ＣＰＵは、そのステップ７３０にて現在吸蔵酸素量ＫＺ（＝ＫＺ（ｎ））が比較値ｋ・ＨＳref（ｋは０〜１の定数、ＨＳrefは基準値）以上であるか否かを判定する。なお、基準値ＨＳrefは、図８のルーチンにより別途取得されている。
【０１１３】
現時点は、リーン要求フラグＸLeanreqの値が「０」から「１」へと変更された直後である。従って、現在吸蔵酸素量ＫＺは「０」から増大し始めた直後の値であるので、比較値ｋ・ＨＳrefよりも小さい。このため、ＣＰＵはステップ７３０にて「Ｎｏ」と判定してステップ７３５に進み、第２微分閾値ΔVth2を相対的に大きい第１の値ΔVthLargeに設定する。
【０１１４】
次いで、ＣＰＵはステップ７４５に進み、出力時間微分相関値ΔVoxsが負（０未満）であり且つ出力時間微分相関値ΔVoxsの大きさ（｜ΔVoxs｜）が「リッチ要求判定値としての第２微分閾値ΔVth2」より大きいか否かを判定する。このとき、出力時間微分相関値ΔVoxsが正（０以上）であるか、又は、出力時間微分相関値ΔVoxsの大きさ（｜ΔVoxs｜）が第２微分閾値ΔVth2以下であれば、ＣＰＵはステップ７４５にて「Ｎｏ」と判定してステップ７９５に直接進み、本ルーチンを一旦終了する。
【０１１５】
この状態が継続すると、触媒４３から酸素が流出し始めるので、図４の時刻ｔ２〜時刻ｔ３に示されているように、出力値Voxsは極大値Vmaxを取った後に減少する。従って、あるタイミングにおいて、出力時間微分相関値ΔVoxsは負となり、且つ、出力時間微分相関値ΔVoxsの大きさ（｜ΔVoxs｜）は第２微分閾値ΔVth2（この場合、第１の値ΔVthLarge）よりも大きくなる。このとき、ＣＰＵはステップ７４５にて「Ｙｅｓ」と判定し、ステップ７５０に進んでリーン要求フラグＸLeanreqの値を「０」に設定する。
【０１１６】
ところで、何らかの理由により、現在吸蔵酸素量ＫＺが比較値ｋ・ＨＳref以上の値に増大する時点まで、出力時間微分相関値ΔVoxsの大きさ（｜ΔVoxs｜）が「第１の値ΔVthLargeに設定された第２微分閾値ΔVth2」よりも大きくならない場合が生じる。現在吸蔵酸素量ＫＺが比較値ｋ・ＨＳref以上の値に増大したということは、触媒４３の酸素を吸蔵する余力が非常に小さいこと、換言すると、触媒４３が酸素過剰状態に陥っている可能性が高いことを意味する。
【０１１７】
そこで、この場合、ＣＰＵはステップ７３０にて「Ｙｅｓ」と判定してステップ７４０に進み、第２微分閾値ΔVth2を「第１の値ΔVthLargeよりも小さい第２の値ΔVthSmall」に設定する。
【０１１８】
これにより、ステップ７４５の判定条件が成立し易くなる。換言すると、リーン要求フラグＸLeanreqの値を「０」にする時点（即ち、リッチ要求が発生したと判定する時点、或いは、触媒４３の状態が酸素過剰状態であると判定する時点）が早期に到来するように、第２微分閾値ΔVth2が変更される。従って、触媒４３が酸素過剰状態に到達したとき、機関の空燃比を遅滞なくリッチ空燃比afRichに設定することができる。
【０１１９】
＜放出酸素量及び現在吸蔵酸素量の算出＞
ＣＰＵは、放出酸素量ＨＳ及び現在吸蔵酸素量ＫＺを算出するために、所定時間Ｔｓ（計算周期Ｔｓ）が経過する毎に図８にフローチャートにより示したルーチンを実行するようになっている。従って、所定のタイミングになると、ＣＰＵは図８のステップ８００から処理を開始してステップ８０５に進み、フューエルカットフラグＸＦＣの値が「０」であるか否かを判定する。
【０１２０】
このとき、フューエルカットフラグＸＦＣの値が「１」であると（即ち、フューエルカット制御が実行中であると）、ＣＰＵはステップ８０５にて「Ｎｏ」と判定して以下に述べるステップ８１０及びステップ８１５の処理を実行し、その後、ステップ８９５に進んで本ルーチンを一旦終了する。
ステップ８１０：ＣＰＵは、放出酸素量ＨＳの値を「０」に設定する。
ステップ８１５：ＣＰＵは、現在吸蔵酸素量ＫＺの値を「０」に設定する。
【０１２１】
一方、ＣＰＵがステップ８０５の処理を行う時点において、フューエルカットフラグＸＦＣの値が「０」であると、ＣＰＵはステップ８０５にて「Ｙｅｓ」と判定してステップ８２０に進み、フィードバック制御フラグＸＦＢの値が「１」であるか否かを判定する。このとき、フィードバック制御フラグＸＦＢの値が「０」であると、ＣＰＵはステップ８２０にて「Ｎｏ」と判定し、上述した「ステップ８１０及びステップ８１５」の処理を実行し、ステップ８９５に進んで本ルーチンを一旦終了する。
【０１２２】
これに対し、ＣＰＵがステップ８２０の処理を実行する時点において、フィードバック制御フラグＸＦＢの値が「１」であると、ＣＰＵはそのステップ８２０にて「Ｙｅｓ」と判定してステップ８２５に進み、リーン要求フラグＸLeanreqの値が「１」であるか否かを判定する。
【０１２３】
いま、リーン要求フラグＸLeanreqの値が「０」であると仮定する。即ち、現時点がリッチ要求発生期間であると仮定する。この場合、ＣＰＵはステップ８２５にて「Ｎｏ」と判定し、以下に述べるステップ８３０乃至ステップ８４０の処理を順に行い、その後、ステップ８９５に進んで本ルーチンを一旦終了する。
【０１２４】
ステップ８３０：ＣＰＵは、上記（１）式に従って放出酸素変化量ΔＨＳを算出する。
ステップ８３５：ＣＰＵは、上記（２）式に従って放出酸素量ＨＳを算出する。
ステップ８４０：ＣＰＵは、現在吸蔵酸素量ＫＺの値を「０」に設定する。
【０１２５】
以上により、リッチ要求発生期間において、放出酸素量ＨＳが更新されて行く。この状態において、図７のステップ７２５の処理が実行されることによりリーン要求フラグＸLeanreqの値が「１」へと変更されたと仮定する。この場合、ＣＰＵはステップ８２５にて「Ｙｅｓ」と判定してステップ８４５に進み、リーン要求フラグＸLeanreqの値が「０」から「１」へと変化した直後であるか否かを判定する。
【０１２６】
前述した仮定に従うと、リーン要求フラグＸLeanreqの値は「０」から「１」へと変更された直後である。従って、ＣＰＵはステップ８４５にて「Ｙｅｓ」と判定してステップ８５０に進み、その時点における放出酸素量ＨＳを基準値ＨＳrefとして格納する（図５の時刻ｔ２を参照。）。なお、ＣＰＵがステップ８４５の処理を実行する時点において、リーン要求フラグＸLeanreqの値が「０」から「１」へと変更された直後でなければ、ＣＰＵはステップ８４５にて「Ｎｏ」と判定してステップ８５５以降に直接進む。
【０１２７】
その後、ＣＰＵは以下に述べるステップ８５５乃至ステップ８６５の処理を順に行い、ステップ８９５に進んで本ルーチンを一旦終了する。
ステップ８５５：ＣＰＵは、上記（３）式に従って吸蔵酸素変化量ΔＫＺを算出する。
ステップ８６０：ＣＰＵは、上記（４）式に従って現在吸蔵酸素量ＫＺを算出する。
ステップ８６５：ＣＰＵは、放出酸素量ＨＳの値を「０」に設定する。
【０１２８】
以上、説明したように、第１制御装置は、
「下流側空燃比センサ５６の出力値Voxsに相関を有する値（下流側空燃比センサ出力相関値）としての出力時間微分相関値ΔVoxs」と「所定のリーン要求判定値（第１微分閾値ΔVth1）」との比較の結果に基づいてリーン要求が発生したか否かを判定するとともに（図７のステップ７２０を参照。）、前記下流側空燃比センサ出力相関値（出力時間微分相関値ΔVoxs）と「所定のリッチ要求判定値（第２微分閾値ΔVth2）」との比較に基づいてリッチ要求が発生したか否かを判定する（図７のステップ７４５を参照。）空燃比要求判定手段と、
前記リーン要求が発生したと判定された時点から前記リッチ要求が発生したと判定される時点までのリーン要求発生期間（リーン要求フラグＸLeanreqの値が「１」である期間）において前記機関に供給される混合気の空燃比を理論空燃比よりも大きい空燃比であるリーン空燃比afLeanに制御するとともに（図６のステップ６４５及びステップ６５０を参照。）、前記リッチ要求が発生したと判定された時点から前記リーン要求が発生したと判定される時点までのリッチ要求発生期間（リーン要求フラグＸLeanreqの値が「０」である期間）において前記混合気の空燃比を理論空燃比よりも小さい空燃比であるリッチ空燃比afRichに制御する（図６のステップ６４５及びステップ６５５を参照。）空燃比制御手段と、
を備える。
【０１２９】
更に、前記空燃比要求判定手段は、
前記リッチ要求発生期間において触媒４３から放出された酸素の総量である放出酸素量ＨＳを触媒４３に流入するガスの空燃比（検出上流側空燃比abyfs）に基づいて算出するとともに（図８のステップ８３０及びステップ８３５を参照。）、前記リッチ要求発生期間に続く前記リーン要求発生期間の開始後に触媒４３に吸蔵される酸素の量の積算値である現在吸蔵酸素量ＫＺを触媒４３に流入するガスの空燃比（検出上流側空燃比abyfs）に基づいて算出し（図８のステップ８５５及びステップ８６０を参照。）、現在吸蔵酸素量ＫＺが放出酸素量ＨＳに近づくほど前記リッチ要求が発生したと判定する時点がより早期に到来するように前記リッチ要求判定値を変更するように構成されている（図７のステップ７３０乃至ステップ７４０を参照。）。
【０１３０】
更に、前記空燃比要求判定手段は、
前記下流側空燃比センサ出力相関値として前記下流側空燃比センサの出力値の単位時間あたりの変化量に相関する出力時間微分相関値ΔVoxsを採用し、
前記リッチ要求発生期間において前記出力時間微分相関値ΔVoxsが正であり且つ前記出力時間微分相関値の大きさが前記リーン要求判定値としての第１微分閾値ΔVth1よりも大きくなったとき前記リーン要求が発生したと判定し（図７のステップ７２０を参照。）、
前記リーン要求発生期間において前記出力時間微分相関値ΔVoxsが負であり且つ前記出力時間微分相関値の大きさが前記リッチ要求判定値としての第２微分閾値ΔVth2よりも大きくなったとき前記リッチ要求が発生したと判定し（図７のステップ７４５を参照。）、更に、
現在吸蔵酸素量ＫＺが放出酸素量ＨＳrefに近づくほど前記第２微分閾値ΔVth2を小さくすることにより、前記リッチ要求が発生したと判定する時点がより早期に到来するように構成されている（図７のステップ７３０乃至ステップ７４０を参照。）。
【０１３１】
これによれば、現在吸蔵酸素量ＫＺが放出酸素量ＨＳrefに近づいた場合、即ち、触媒４３の酸素を吸蔵する余力が小さくなり触媒４３が酸素過剰状態である可能性が高くなると、リッチ要求が発生したと判定する時点がより早期に到来するようにリッチ要求判定値（第２微分閾値ΔVth2）が変更される。従って、リッチ要求が発生したこと（即ち、触媒４３が酸素過剰状態となったこと）を遅滞なく検出することができる。その結果、触媒４３に適切なタイミングにてリッチ空燃比の排ガスを流入させることができるので、ＮＯｘの排出量を低減することができる。
【０１３２】
なお、第１制御装置は、現在吸蔵酸素量ＫＺが比較値ｋ・ＨＳrefよりも大きいか否かに応じてリッチ要求判定値（第２微分閾値ΔVth2）を切り替えていたが、現在吸蔵酸素量ＫＺが基準値ＨＳrefに近づくほどリッチ要求判定値（第２微分閾値ΔVth2）が次第に（連続的に）小さくなるようにリッチ要求判定値を変更してもよい。
【０１３３】
＜第２実施形態＞
次に、本発明の第２実施形態に係る制御装置（以下、単に「第２制御装置」と称呼する。）について説明する。第２制御装置は、空燃比要求を判定するために使用する下流側空燃比センサ出力相関値として「下流側空燃比センサ５６の出力値Voxsそのもの」を採用し、且つ、リーン要求判定値及びリッチ要求判定値が第１制御装置のそれらと相違している点において、第１制御装置と相違している。即ち、第２制御装置は、第１制御装置が採用した空燃比要求の判定方法（触媒４３の状態を判定する方法）とは相違する方法を採用している点のみにおいて、第１制御装置と相違している。従って、以下、この相違点を中心として説明する。
【０１３４】
＜判定方法＞
第２制御装置は、以下に述べる判定方法に従って、「リーン要求及びリッチ要求」の何れの空燃比要求が発生しているかを判定（決定）する。
【０１３５】
第２制御装置は、リッチ要求発生期間において、下流側空燃比センサ５６の出力値Voxsの極小値Vminを取得する。そして、第２制御装置は、図９に示したように、取得した極小値Vminに「正の第１値ΔV1」を加えた値（Vmin＋ΔV1）をリーン要求判定値として設定する。正の第１値ΔV1は予め定められた一定値である。第２制御装置は、リッチ要求発生期間において、下流側空燃比センサ５６の出力値Voxsが極小値Vminをとった後にリーン要求判定値（Vmin＋ΔV1）以上となったとき、リーン要求が発生したと判定する（図９の時刻ｔ２を参照。）。
【０１３６】
第２制御装置は、リーン要求発生期間において、下流側空燃比センサ５６の出力値Voxsの極大値Vmaxを取得する。そして、第２制御装置は、図９に示したように、取得した極大値Vmaxから「正の第２値ΔV2」を減じた値（Vmax−ΔV2）をリッチ要求判定値として設定する。正の第２値ΔV2は、後述するように、放出酸素量ＨＳ及び現在吸蔵酸素量ＫＺに基づいて変更される。第２制御装置は、リーン要求発生期間において、下流側空燃比センサ５６の出力値Voxsが極大値Vmaxを取った後にリッチ要求判定値（Vmax−ΔV2）以下となったとき、リッチ要求が発生したと判定する（図９の時刻ｔ３を参照。）。
【０１３７】
＜モデルによる補助＞
第２制御装置は、第１制御装置と同様、放出酸素量ＨＳ及び現在吸蔵酸素量ＫＺを算出する。そして、第２制御装置は、現時点の現在吸蔵酸素量ＫＺが、直前のリッチ要求発生期間において算出された放出酸素量ＨＳ（基準値ＨＳref）に近づくほど、正の第２値ΔV2を小さくする。
【０１３８】
より具体的に述べると、第２制御装置は、リーン要求が発生したと判定した時点に「直前のリッチ要求発生期間において算出された放出酸素量ＨＳ」を「基準値ＨＳref」として取得し、その基準値ＨＳrefの所定割合（ｋ・ＨＳref、ｋは０〜１の値）を比較値として決定する。
【０１３９】
そして、第２制御装置は、現在吸蔵酸素量ＫＺが比較値ｋ・ＨＳrefより小さい場合には「正の第２値ΔV2」を相対的に大きい値ΔVLargeに設定し、現在吸蔵酸素量ＫＺ（ｎ）が比較値ｋ・ＨＳrefより大きい場合には「正の第２値ΔV2」を相対的に小さい値ΔVSmallに設定する。小さい値ΔVSmallは大きい値ΔVLargeよりも小さい。換言すると、第２制御装置は、現在吸蔵酸素量ＫＺが比較値ｋ・ＨＳrefより小さい場合には「リッチ要求判定値（Vmax−ΔV2）」を小さい値に設定し、現在吸蔵酸素量ＫＺが比較値ｋ・ＨＳrefより大きい場合には「リッチ要求判定値（Vmax−ΔV2）」を大きい値に設定する。
【０１４０】
「正の第２値ΔV2」が相対的に小さい値ΔVSmallに設定されれば（即ち、リッチ要求判定値（Vmax−ΔV2）が相対的に大きい値に設定されれれば）、リッチ要求が発生したとの判定（触媒４３の状態が酸素過剰状態であるとの判定）がより早期に行われる。この結果、触媒４３が酸素過剰状態に陥っている期間を短くすることができるので、ＮＯｘの排出量を低減することができる。
【０１４１】
（実際の作動）
第２制御装置のＣＰＵは、図６及び図８に示したルーチンを実行する。更に、第２制御装置のＣＰＵは図７に代わる図１０に示したルーチンを実行する。図６及び図８に示したルーチンについては説明済みである。よって、以下、図１０に示したルーチンに基づくＣＰＵの作動について説明する。
【０１４２】
第２制御装置のＣＰＵは、所定時間が経過する毎に図１０にフローチャートにより示した「空燃比要求判定（触媒状態判定）ルーチン」を繰り返し実行している。従って、所定のタイミングになると、ＣＰＵはステップ１０００から処理を開始してステップ１００５に進み、リーン要求フラグＸLeanreqの値が「１」であるか否かを判定する。
【０１４３】
いま、リーン要求フラグＸLeanreqの値が「０」であると仮定する。この場合、ＣＰＵはステップ１００５にて「Ｎｏ」と判定してステップ１０１０に進み、リーン要求フラグＸLeanreqの値が「１」から「０」へと変化した後に極小値Vminが出現したか（極小値Vminが取得されたか）否か判定する。リーン要求フラグＸLeanreqの値が「１」から「０」へと変化した後に極小値Vminが出現していなければ、ＣＰＵはステップ１０１０にて「Ｎｏ」と判定してステップ１０９５に直接進み、本ルーチンを一旦終了する。
【０１４４】
リーン要求フラグＸLeanreqの値が「０」である場合（即ち、リッチ要求発生期間）、ＣＰＵは図６のステップ６４５にて「Ｎｏ」と判定し、ステップ６５５に進む。従って、機関の空燃比はリッチ空燃比afRichに設定される。この状態においては触媒４３に過剰な未燃物が流入するので、図８に示したルーチンにより放出酸素量ＨＳが更新されて行く。更に、後述するように、リーン要求フラグＸLeanreqの値は、出力値Voxsが減少している時点にて「０」に設定される（図９の時刻ｔ１又は時刻ｔ３を参照。）。加えて、リーン要求フラグＸLeanreqの値が「０」である場合、ある時点にて触媒４３から未燃物が流出を開始するので、出力値Voxsは増大を開始する。よって、図９の時刻ｔ１〜時刻ｔ２に示したように、出力値Voxsは極小値Vminをとる。
【０１４５】
そこで、リーン要求フラグＸLeanreqの値が「１」から「０」へと変化した後に極小値Vminが出現すると、ＣＰＵはステップ１０１０にて「Ｙｅｓ」と判定してステップ１０１５に進み、出力値Voxsが「極小値Vminに正の第１値ΔV1を加えた値」であるリーン要求判定値（Vmin＋ΔV1）よりも大きいか否かを判定する。この場合、出力値Voxsがリーン要求判定値（Vmin＋ΔV1）以下であれば、ＣＰＵはステップ１０１５にて「Ｎｏ」と判定し、ステップ１０９５に直接進んで本ルーチンを一旦終了する。
【０１４６】
これに対し、ＣＰＵがステップ１０１５の処理を実行する時点において、出力値Voxsがリーン要求判定値（Vmin＋ΔV1）よりも大きいと、ＣＰＵはステップ１０１５にて「Ｙｅｓ」と判定してステップ１０２０に進み、リーン要求フラグＸLeanreqの値を「１」に設定する。その後、ＣＰＵはステップ１０９５に進んで本ルーチンを一旦終了する。
【０１４７】
これにより、ＣＰＵは図６のステップ６４５にて「Ｙｅｓ」と判定し、ステップ６５０に進む。従って、機関の空燃比はリーン空燃比afLeanに設定される。この状態においては触媒４３に過剰な酸素が流入するので、図８に示したルーチンにより現在吸蔵酸素量ＫＺが更新されて行く。更に、図９に示したように、出力値Voxsが増大している期間において機関の空燃比がリーン空燃比afLeanに設定される。加えて、機関の空燃比がリーン空燃比afLeanに設定された場合、ある時点から触媒４３から酸素が流出を開始するので、出力値Voxsは減少を開始する。よって、図９の時刻ｔ２〜時刻ｔ３に示したように、出力値Voxsは極大値Vmaxをとる。
【０１４８】
この状態において、ＣＰＵが図１０のステップ１０００から処理を開始すると、ＣＰＵはステップ１００５にて「Ｙｅｓ」と判定してステップ１０２５に進み、リーン要求フラグＸLeanreqの値が「０」から「１」へと変化した後に極大値Vmaxが出現したか（極大値Vmaxが取得されたか）否か判定する。そして、リーン要求フラグＸLeanreqの値が「０」から「１」へと変化した後に極大値Vmaxが出現していなければ、ＣＰＵはステップ１０２５にて「Ｎｏ」と判定し、ステップ１０９５に直接進んで本ルーチンを一旦終了する。
【０１４９】
これに対し、ＣＰＵがステップ１０２５の処理を実行する時点において、リーン要求フラグＸLeanreqの値が「０」から「１」へと変化した後に極大値Vmaxが出現していると、ＣＰＵはそのステップ１０２５にて「Ｙｅｓ」と判定してステップ１０３０に進む。ＣＰＵは、そのステップ１０３０にて現在吸蔵酸素量ＫＺが比較値ｋ・ＨＳref（ｋは０〜１の定数、ＨＳrefは基準値）以上であるか否かを判定する。なお、基準値ＨＳrefは、図８のルーチンにより別途取得されている。
【０１５０】
現時点は、リーン要求フラグＸLeanreqの値が「０」から「１」へと変更された直後である。従って、現在吸蔵酸素量ＫＺは「０」から増大し始めた直後の値であるので、比較値ｋ・ＨＳrefよりも小さい。このため、ＣＰＵはステップ１０３０にて「Ｎｏ」と判定してステップ１０３５に進み、正の第２値ΔV2に相対的に大きい値ΔVLargeを設定する。
【０１５１】
次いで、ＣＰＵはステップ１０４０に進み、出力値Voxsが「極大値Vmaxから正の第２値ΔV2を減じた値」であるリッチ要求判定値（Vmax−ΔV2）よりも小さいか否かを判定する。この場合、出力値Voxsがリッチ要求判定値（Vmax−ΔV2）以上であれば、ＣＰＵはステップ１０４０にて「Ｎｏ」と判定し、ステップ１０９５に直接進んで本ルーチンを一旦終了する。
【０１５２】
これに対し、ＣＰＵがステップ１０４０の処理を実行する時点において、出力値Voxsがリッチ要求判定値（Vmax−ΔV2）よりも小さいと、ＣＰＵはステップ１０４０にて「Ｙｅｓ」と判定してステップ１０４５に進み、リーン要求フラグＸLeanreqの値を「０」に設定する。その後、ＣＰＵはステップ１０９５に進んで本ルーチンを一旦終了する。この結果、機関の空燃比はリッチ空燃比afRichに設定される。
【０１５３】
ところで、何らかの理由により、現在吸蔵酸素量ＫＺが比較値ｋ・ＨＳref以上の値に増大する時点まで、出力値Voxsがリッチ要求判定値（Vmax−ΔV2＝Vmax−ΔVLarge）よりも小さくならない場合が生じる。現在吸蔵酸素量ＫＺが比較値ｋ・ＨＳref以上の値に増大したということは、触媒４３の酸素を吸蔵する余力が非常に小さいこと、換言すると、触媒４３が酸素過剰状態に陥っている可能性が高いことを意味する。
【０１５４】
そこで、この場合、ＣＰＵはステップ１０３０にて「Ｙｅｓ」と判定してステップ１０５０に進み、正の第２値ΔV2に「相対的に大きい値ΔVLargeよりも小さい、相対的に小さい値ΔVSmall」を設定する。これにより、リッチ要求判定値（Vmax−ΔV2）は相対的に大きい値となる。
【０１５５】
これにより、ステップ１０４０の判定条件が成立し易くなる。換言すると、リーン要求フラグＸLeanreqの値を「０」にする時点（即ち、リッチ要求が発生したと判定する時点、或いは、触媒４３の状態が酸素過剰状態であると判定する時点）が早期に到来するように、リッチ要求判定値（Vmax−ΔV2）が変更される。従って、触媒４３が酸素過剰状態に到達したとき、機関の空燃比を遅滞なくリッチ空燃比afRichに設定することができる。
【０１５６】
以上、説明したように、第２制御装置は、第１制御装置と同様の空燃比制御手段を備える。更に、第２制御装置の空燃比要求判定手段は、下流側空燃比センサ出力相関値として下流側空燃比センサ５６の出力値Voxsを採用する。
【０１５７】
そして、その空燃比要求判定手段は、
リッチ要求発生期間において下流側空燃比センサ５６の出力値Voxsの極小値Vminを取得するとともに前記取得された極小値Vminに正の第１値ΔV1を加えた値（Vmin＋ΔV1）をリーン要求判定値として採用し、且つ、下流側空燃比センサ５６の出力値Voxsが前記極小値Vminをとった後に前記リーン要求判定値（Vmin＋ΔV1）よりも大きくなったときリーン要求が発生したと判定し（図１０のステップ１０１０乃至ステップ１０２０を参照。）、
リーン要求発生期間において下流側空燃比センサ５６の出力値Voxsの極大値Vmaxを取得するとともに前記取得された極大値Vmaxから正の第２値ΔV2を減じた値（Vmax−ΔV2）をリッチ要求判定値として採用し、且つ、下流側空燃比センサ５６の出力値Voxsが前記極大値Vmaxをとった後に前記リッチ要求判定値（Vmax−ΔV2）よりも小さくなったときリッチ要求が発生したと判定し（図１０のステップ１０２５、ステップ１０４０及びステップ１０４５を参照。）、更に、
現在吸蔵酸素量ＫＺが放出酸素量ＨＳrefに近づくほど前記第２値ΔV2を小さくすることにより、前記リッチ要求が発生したと判定する時点がより早期に到来するように構成されている（図１０のステップ１０３０、ステップ１０３５及びステップ１０５０を参照。）。
【０１５８】
この第２制御装置によれば、下流側空燃比センサ５６の出力値Voxsがリーン空燃比に相当する値（理論空燃比相当電圧Ｖstよりも小さい値）であっても、その出力値Voxsが「極小値に第１値を加えた値（Vmin＋ΔV1）」よりも小さい値から大きい値へと変化したとき、リーン要求が発生した（触媒の状態がリッチ状態となった）と判定することができる。
【０１５９】
更に、第２制御装置によれば、下流側空燃比センサ５６の出力値Voxsがリッチ空燃比に相当する値（理論空燃比相当電圧Ｖstよりも大きい値）であっても、その出力値Voxsが「極大値から第２値を減じた値（Vmax−ΔV2）」よりも大きい値から小さい値へと変化したとき、リッチ要求が発生した（触媒の状態がリーン状態となった）と判定することができる。よって、第２制御装置によれば、より早期にリッチ要求及びリーン要求が発生したことを判定することができるので、触媒からＮＯｘが漏れ出す期間及び未燃物が漏れ出す期間を短縮化することができる。
【０１６０】
加えて、第２制御装置によれば、現在吸蔵酸素量ＫＺが放出酸素量ＨＳrefに近づくほど、前記リッチ要求が発生したと判定する時点がより早期に到来するように「リッチ要求判定値である極大値から第２値を減じた値（Vmax−ΔV2）」が変更される。即ち、現在吸蔵酸素量ＫＺが放出酸素量ＨＳrefに近づくほど、第２値ΔV2は小さい値へと変更される。この結果、リーン要求発生期間において、下流側空燃比センサ５６の出力値Voxsが「極大値から第２値を減じた値（Vmax−ΔV2）」よりも小さくなる時点が早期に到来するので、リッチ要求が発生したことを早期に且つ確実に判定することができる。従って、ＮＯｘの排出量を低減することができる。
【０１６１】
なお、第２制御装置は、現在吸蔵酸素量ＫＺが比較値ｋ・ＨＳrefよりも大きいか否かに応じてリッチ要求判定値（Vmax−ΔV2）を切り替えていたが、現在吸蔵酸素量ＫＺが基準値ＨＳrefに近づくほどリッチ要求判定値（Vmax−ΔV2）が次第に（連続的に）大きくなるようにリッチ要求判定値を変更してもよい。
【０１６２】
＜第３実施形態＞
次に、本発明の第３実施形態に係る制御装置（以下、単に「第３制御装置」と称呼する。）について説明する。第３制御装置は、空燃比要求の判定のために使用される下流側空燃比センサ出力相関値が下流側空燃比センサ５６の出力値Voxsそのものであり、且つ、リーン要求判定値及びリッチ要求判定値が第１制御装置のそれらと相違している点において、第１制御装置と相違している。即ち、第３制御装置は、第１制御装置が採用した空燃比要求の判定方法（触媒４３の状態を判定する方法）とは相違する方法を採用している点のみにおいて、第１制御装置と相違している。従って、以下、この相違点を中心として説明する。
【０１６３】
＜判定方法＞
第３制御装置は、以下に述べる判定方法に従って、「リーン要求及びリッチ要求」の何れの空燃比要求が発生しているかを判定（決定）する。
【０１６４】
第３制御装置は、リッチ要求発生期間において、下流側空燃比センサ５６の出力値Voxsが「リーン要求判定値（触媒リッチ状態判定用閾値）VLth」よりも小さい値から大きい値へと変化したとき、リーン要求が発生したと判定する（図１１の時刻ｔ２を参照。）。更に、第３制御装置は、リーン要求発生期間において、下流側空燃比センサ５６の出力値Voxsが「リッチ要求判定値（触媒リーン状態判定用閾値）VRth」よりも大きい値から小さい値へと変化したとき、リッチ要求が発生したと判定する（図１１の時刻ｔ１及び時刻ｔ３を参照。）。
【０１６５】
＜モデルによる補助＞
第３制御装置は、第１制御装置と同様、放出酸素量ＨＳ及び現在吸蔵酸素量ＫＺを算出する。そして、第３制御装置は、現時点の現在吸蔵酸素量ＫＺが、直前のリッチ要求発生期間において算出された放出酸素量ＨＳ（基準値ＨＳref）に近づくほど、「リッチ要求判定値（触媒リーン状態判定用閾値）VRth」を大きくする。
【０１６６】
より具体的に述べると、第３制御装置は、リーン要求が発生したと判定した時点に「直前のリッチ要求発生期間において算出された放出酸素量ＨＳ」を「基準値ＨＳref」として取得し、その基準値ＨＳrefの所定割合（ｋ・ＨＳref、ｋは０〜１の値）を比較値として決定する。
【０１６７】
そして、第３制御装置は、現在吸蔵酸素量ＫＺが比較値ｋ・ＨＳrefより小さい場合には「リッチ要求判定値（触媒リーン状態判定用閾値）VRth」を小さい値に設定し、現在吸蔵酸素量ＫＺが比較値ｋ・ＨＳrefより大きい場合には「リッチ要求判定値（触媒リーン状態判定用閾値）VRth」を大きい値に設定する。リッチ要求判定値VRthが大きい値に設定されれば、出力値Voxsが「リッチ要求判定値VRth」よりも大きい値から小さい値へと変化する時点が早期に訪れる。即ち、リッチ要求が発生したとの判定（触媒４３の状態が酸素過剰状態であるとの判定）がより早期に行われる。この結果、触媒４３が酸素過剰状態に陥っている期間を短くすることができるので、ＮＯｘの排出量を低減することができる。
【０１６８】
（実際の作動）
第３制御装置のＣＰＵは、図６及び図８に示したルーチンを実行する。更に、第３制御装置のＣＰＵは図７に代わる図１２に示したルーチンを実行する。図６及び図８に示したルーチンについては説明済みである。よって、以下、図１２に示したルーチンに基づくＣＰＵの作動について説明する。
【０１６９】
第３制御装置のＣＰＵは、所定時間が経過する毎に図１２にフローチャートにより示した「空燃比要求判定（触媒状態判定）ルーチン」を繰り返し実行している。従って、所定のタイミングになると、ＣＰＵはステップ１２００から処理を開始してステップ１２１０に進み、リーン要求フラグＸLeanreqの値が「１」であるか否かを判定する。
【０１７０】
いま、リーン要求フラグＸLeanreqの値が「０」であると仮定する。この場合、ＣＰＵはステップ１２１０にて「Ｎｏ」と判定してステップ１２２０に進み、下流側空燃比センサ５６の出力値Voxsが「リーン要求判定値（触媒リッチ状態判定用閾値）VLth」よりも小さい値から大きい値へと変化した直後であるか否かを判定する。このとき、出力値Voxsが「リーン要求判定値VLth」よりも小さい値から大きい値へと変化した直後でなければ、ＣＰＵはステップ１２２０にて「Ｎｏ」と判定し、ステップ１２９５に進んで本ルーチンを一旦終了する。
【０１７１】
リーン要求フラグＸLeanreqの値が「０」である場合（即ち、リッチ要求発生期間）、ＣＰＵは図６のステップ６４５にて「Ｎｏ」と判定し、ステップ６５５に進む。従って、機関の空燃比はリッチ空燃比afRichに設定される。この状態においては触媒４３に過剰な未燃物が流入するので、図８に示したルーチンにより放出酸素量ＨＳが更新されて行く。更に、リーン要求フラグＸLeanreqの値が「０」である場合、ある時点にて触媒４３から未燃物が流出を開始するので、出力値Voxsは増大を開始する。よって、図１１の時刻ｔ２に示したように、あるタイミングにて出力値Voxsは「リーン要求判定値VLth」よりも小さい値から大きい値へと変化する。
【０１７２】
このとき、ＣＰＵがステップ１２２０の処理を実行すると、ＣＰＵはそのステップ１２２０にて「Ｙｅｓ」と判定してステップ１２３０に進み、リーン要求フラグＸLeanreqの値を「１」に設定する。その後、ＣＰＵはステップ１２９５に進んで本ルーチンを一旦終了する。
【０１７３】
これにより、ＣＰＵは図６のステップ６４５にて「Ｙｅｓ」と判定し、ステップ６５０に進む。従って、機関の空燃比はリーン空燃比afLeanに設定される。この状態においては触媒４３に過剰な酸素が流入するので、図８に示したルーチンにより現在吸蔵酸素量ＫＺが更新されて行く。
【０１７４】
この状態において、ＣＰＵが図１２のステップ１２００から処理を開始すると、ＣＰＵはステップ１２１０にて「Ｙｅｓ」と判定してステップ１２４０に進み、現在吸蔵酸素量ＫＺが比較値ｋ・ＨＳref（ｋは０〜１の定数、ＨＳrefは基準値）以上であるか否かを判定する。なお、基準値ＨＳrefは、図８のルーチンにより別途取得されている。
【０１７５】
現時点は、リーン要求フラグＸLeanreqの値が「０」から「１」へと変更された直後である。従って、現在吸蔵酸素量ＫＺは「０」から増大し始めた直後の値であるので、比較値ｋ・ＨＳrefよりも小さい。このため、ＣＰＵはステップ１２４０にて「Ｎｏ」と判定してステップ１２５０に進み、「リッチ要求判定値（触媒リーン状態判定用閾値）VRth」を相対的に小さい値VthSmallに設定する。
【０１７６】
次に、ＣＰＵはステップ１２６０に進み、出力値Voxsが「リッチ要求判定値（触媒リーン状態判定用閾値）VRth」よりも大きい値から小さい値へと変化した直後であるか否かを判定する。このとき、出力値Voxsが「リッチ要求判定値VRth」よりも大きい値から小さい値へと変化した直後でなければ、ＣＰＵはステップ１２６０にて「Ｎｏ」と判定し、ステップ１２９５に進んで本ルーチンを一旦終了する。
【０１７７】
リーン要求フラグＸLeanreqの値が「１」である場合（即ち、リーン要求発生期間）、機関の空燃比はリーン空燃比afLeanに設定される。この状態においては、ある時点にて触媒４３から酸素が流出を開始するので、出力値Voxsは減少を開始する。よって、図１１の時刻ｔ１及び時刻ｔ３に示したように、あるタイミングにて出力値Voxsは「リッチ要求判定値VRth」よりも大きい値から小さい値へと変化する。
【０１７８】
このとき、ＣＰＵがステップ１２６０の処理を実行すると、ＣＰＵはそのステップ１２６０にて「Ｙｅｓ」と判定してステップ１２７０に進み、リーン要求フラグＸLeanreqの値を「０」に設定する。その後、ＣＰＵはステップ１２９５に進んで本ルーチンを一旦終了する。これにより、ＣＰＵは図６のステップ６４５にて「Ｎｏ」と判定し、ステップ６５５に進む。従って、機関の空燃比はリッチ空燃比afRichに設定される。
【０１７９】
ところで、何らかの理由により、現在吸蔵酸素量ＫＺが比較値ｋ・ＨＳref以上の値に増大する時点まで、出力値Voxsが「リッチ要求判定値VRth」よりも大きい値から小さい値へと変化しない場合が生じる。現在吸蔵酸素量ＫＺが比較値ｋ・ＨＳref以上の値に増大したということは、触媒４３の酸素を吸蔵する余力が非常に小さいこと、換言すると、触媒４３が酸素過剰状態に陥っている可能性が高いことを意味する。
【０１８０】
そこで、この場合、ＣＰＵはステップ１２４０にて「Ｙｅｓ」と判定してステップ１２８０に進み、「リッチ要求判定値（触媒リーン状態判定用閾値）VRth」を相対的に大きい値VthLargeに設定する。相対的に大きい値VthLargeは相対的に小さい値VthSmallよりも大きい。
【０１８１】
これにより、ステップ１２６０の判定条件が成立し易くなる。換言すると、リーン要求フラグＸLeanreqの値を「０」にする時点（即ち、リッチ要求が発生したと判定する時点、或いは、触媒４３の状態が酸素過剰状態であると判定する時点）が早期に到来するように、リッチ要求判定値VRthが変更される。従って、触媒４３が酸素過剰状態に到達したとき、機関の空燃比を遅滞なくリッチ空燃比afRichに設定することができる。
【０１８２】
以上、説明したように、第３制御装置は、第１制御装置と同様の空燃比制御手段を備える。更に、第３制御装置の空燃比要求判定手段は、下流側空燃比センサ出力相関値として下流側空燃比センサ５６の出力値Voxsを採用する。
【０１８３】
そして、その空燃比要求判定手段は、
リッチ要求発生期間において下流側空燃比センサ５６の出力値Voxsが「リーン要求判定値としての触媒リッチ状態判定用閾値VLth」よりも小さい値から大きい値へと変化したときリーン要求が発生したと判定し（図１２のステップ１２２０及びステップ１２３０を参照。）、
リーン要求発生期間において下流側空燃比センサ５６の出力値Voxsが「リッチ要求判定値としての触媒リーン状態判定用閾値VRth」よりも大きい値から小さい値へと変化したときリッチ要求が発生したと判定し（図１２のステップ１２６０及びステップ１２７０を参照。）、更に、
現在吸蔵酸素量ＫＺが放出酸素量ＨＳrefに近づくほど触媒リーン状態判定用閾値VRthを大きくすることにより、前記リッチ要求が発生したと判定する時点がより早期に到来するように構成されている（図１２のステップ１２４０、ステップ１２５０及びステップ１２８０を参照。）。
【０１８４】
第３制御装置によれば、現在吸蔵酸素量ＫＺが基準値ＨＳrefに近づくほど、リーン状態判定用閾値VRthが大きい値へと変更される。この結果、現在吸蔵酸素量ＫＺが基準値ＨＳrefに近づくほど、リーン要求発生期間において「出力値Voxs」が「リッチ要求判定値としての触媒リーン状態判定用閾値VRth」よりも大きい値から小さい値へと変化する時点が早期に到来するので、リッチ要求が発生したことを早期に且つ確実に判定することができる。従って、ＮＯｘの排出量を低減することができる。
【０１８５】
なお、第３制御装置は、現在吸蔵酸素量ＫＺが比較値ｋ・ＨＳrefよりも大きいか否かに応じてリッチ要求判定値（触媒リーン状態判定用閾値VRth）を切り替えていたが、現在吸蔵酸素量ＫＺが基準値ＨＳrefに近づくほどリッチ要求判定値（触媒リーン状態判定用閾値VRth）が次第に（連続的に）大きくなるようにリッチ要求判定値を変更してもよい。
【０１８６】
＜第４実施形態＞
次に、本発明の第４実施形態に係る制御装置（以下、単に「第４制御装置」と称呼する。）について説明する。第４制御装置は、放出酸素量ＨＳ及び現在吸蔵酸素量ＫＺの算出方法が第１制御装置が採用したそれらの算出方法と相違する点のみにおいて、第１制御装置と相違している。従って、以下、この相違点を中心として説明する。なお、第２及び第３制御装置も、第４制御装置の放出酸素量ＨＳ及び現在吸蔵酸素量ＫＺの算出方法を採用することができる。
【０１８７】
前述したように、触媒４３は、リッチ要求発生期間において酸素を放出し、リーン要求発生期間において酸素を吸蔵する。更に、あるリーン要求発生期間は、そのリーン要求発生期間の直前のリッチ要求発生期間において放出した酸素の量よりも少ない量の酸素を吸蔵した時点にて終了し、次の、リッチ要求発生期間が開始する場合が多い。従って、「あるリッチ要求発生期間において放出した酸素の量Ａ」よりも「少ない量Ｂの酸素」を「そのリッチ要求発生期間に続くリーン要求発生期間」において吸蔵した時点において次のリッチ要求発生期間が開始されたとき、その時点における放出酸素量は「０」ではなく値（Ａ−Ｂ）とすべきである。
【０１８８】
一方、フューエルカット運転が実行されると、触媒４３に多量の酸素が急激に流入する。従って、触媒４３は酸素を放出していない状態となるので、放出酸素量ＨＳは「０（ゼロ）」に設定されるべきである。
【０１８９】
第４制御装置は、以上に述べた観点に従って放出酸素量ＨＳを算出し、リーン要求が発生した時点の放出酸素量ＨＳを基準値ＨＳrefとして取り込む。より具体的に述べると、第４制御装置は、図１３のタイムチャートに示したように放出酸素量ＨＳ等を算出する。この図１３に示した例においては、時刻ｔ１〜時刻ｔ２にてフューエルカット運転が実行される。
【０１９０】
時刻ｔ２にてフューエルカット運転が終了し、リッチ要求発生期間が開始したとき、放出酸素量ＨＳは０に設定されている。その後、時刻ｔ２〜時刻ｔ３のリッチ要求発生期間において放出酸素量ＨＳは増大し、リーン要求発生期間の開始時点である時刻ｔ３にて値Ａに到達する。従って、時刻ｔ３以降における比較値ｋ・ＨＳrefの基礎となる基準値ＨＳrefは値Ａである。
【０１９１】
時刻ｔ３から時刻ｔ４のリーン要求発生期間において現在吸蔵酸素量ＫＺは次第に増大する。そのため、放出酸素量ＨＳは値Ａから現在吸蔵酸素量ＫＺだけ減少する。従って、時刻ｔ４のリーン要求発生期間における現在吸蔵酸素量ＫＺが値Ｂであるとすると、リッチ要求発生期間の開始時点である時刻ｔ４において放出酸素量ＨＳは値（Ａ−Ｂ）となる。続く、時刻ｔ４から時刻ｔ５のリッチ要求発生期間において放出された酸素量が値Ｃであるとすると、次のリーン要求発生期間の開始時点である時刻ｔ５における放出酸素量ＨＳは値（Ａ−Ｂ＋Ｃ）となる。即ち、従って、時刻ｔ５以降における比較値ｋ・ＨＳrefの基礎となる基準値ＨＳrefは値（Ａ−Ｂ＋Ｃ）である。更に、図１３に示した例においては、時刻ｔ６にてフューエルカット運転が再び行われる。そのため、第４制御装置は放出酸素量ＨＳを時刻ｔ６にて「０」に設定する。
【０１９２】
（実際の作動）
第４制御装置のＣＰＵは、所定時間が経過する毎に「図８に代わる図１４」にフローチャートにより示したルーチンを繰り返し実行している。図１４に示したステップであって図８にも示されたステップには、図８に示されたステップと同一の符号が付されている。これらのステップの詳細な説明は適宜省略される。図１４に示したルーチンは、図８に示したルーチンに対してステップ１４１０乃至ステップ１４４０が追加されている点、及び、ステップ８６５が省略されている点、において図８に示したルーチンと相違している。
【０１９３】
フューエルカットフラグＸＦＣの値が「１」である場合、ＣＰＵはステップ１４００に続くステップ８０５にて「Ｎｏ」と判定し、以下に述べるステップ８１０、ステップ８１５、ステップ１４１０及びステップ１４２０の処理を実行した後、ステップ１４９５に進む。更に、フィードバック制御フラグＸＦＢの値が「０」である場合にも、ＣＰＵはステップ８０５に続くステップ８２０にて「Ｎｏ」と判定し、以下に述べるステップ８１０、ステップ８１５、ステップ１４１０及びステップ１４２０の処理を実行した後、ステップ１４９５に進む。
【０１９４】
ステップ８１０：ＣＰＵは、放出酸素量ＨＳの値を「０」に設定する。
ステップ８１５：ＣＰＵは、現在吸蔵酸素量ＫＺの値を「０」に設定する。
ステップ１４１０：ＣＰＵは、基準値ＨＳrefの値を「０」に設定する。
ステップ１４２０：ＣＰＵは、リーン要求フラグＸLeanreqの値を「０」に設定する。
【０１９５】
フューエルカットフラグＸＦＣの値が「１」から「０」に変化することに伴って、フィードバック制御フラグＸＦＢの値が「０」から「１」に変化した場合、ＣＰＵはステップ８０５及びステップ８２０にて「Ｙｅｓ」と判定してステップ８２５に進む。この場合、ステップ１４２０にてリーン要求フラグＸLeanreqの値は「０」に設定されている。従って、ＣＰＵはステップ８２５にて「Ｎｏ」と判定してステップ１４３０に進み、リーン要求フラグＸLeanreqの値が「１」から「０」へと変化した直後であるか否かを判定する。
【０１９６】
この場合、リーン要求フラグＸLeanreqの値が「１」から「０」へと変化した直後ではないので、ＣＰＵはステップ１４３０にて「Ｎｏ」と判定し、以下に述べるステップ８３０乃至ステップ８４０の処理を順に行い、その後、ステップ１４９５に進む。なお、ＣＰＵは、この状態において後述するステップ１４４０を経由してからステップ８３０以降に進んでもよい。
【０１９７】
ステップ８３０：ＣＰＵは、上記（１）式に従って放出酸素変化量ΔＨＳを算出する。
ステップ８３５：ＣＰＵは、上記（２）式に従って放出酸素量ＨＳを算出する。
ステップ８４０：ＣＰＵは、現在吸蔵酸素量ＫＺの値を「０」に設定する。
【０１９８】
この結果、フューエルカット運転の終了後において放出酸素量ＨＳが「０」から次第に増大される（図１３の時刻ｔ２〜時刻ｔ３を参照。）。その後、リーン要求フラグＸLeanreqの値は図７のステップ７２５の処理によって「１」に設定される。この場合、ＣＰＵは、ステップ８２５にて「Ｙｅｓ」と判定するとともに、ステップ８４５にて「Ｙｅｓ」と判定してステップ８５０に進み、放出酸素量ＨＳを基準値ＨＳrefとして取得する。その後、ＣＰＵは以下に述べるステップ８５５及びステップ８６０の処理を行った後、ステップ１４９５に進んで本ルーチンを一旦終了する。
【０１９９】
ステップ８５５：ＣＰＵは、上記（３）式に従って吸蔵酸素変化量ΔＫＺを算出する。
ステップ８６０：ＣＰＵは、上記（４）式に従って現在吸蔵酸素量ＫＺを算出する。
【０２００】
以降、リーン要求フラグＸLeanreqの値が「１」に設定されている限り、ＣＰＵはステップ８２５にて「Ｙｅｓ」と判定するとともに、ステップ８４５にて「Ｎｏ」と判定し、ステップ８５０を経由することなくステップ８５５及びステップ８６０の処理を実行する。この結果、リーン要求フラグＸLeanreqの値が「１」に設定されると、現在吸蔵酸素量ＫＺは「０」から増大される（図１３の時刻ｔ３〜時刻ｔ４、及び、時刻ｔ５〜時刻ｔ６を参照。）。
【０２０１】
その後、リーン要求フラグＸLeanreqの値は図７のステップ７５０の処理によって「０」に設定される。この場合、ＣＰＵは、ステップ８２５にて「Ｎｏ」と判定するとともに、ステップ１４３０にて「Ｙｅｓ」と判定してステップ１４４０に進み、放出酸素量ＨＳを「その時点の基準値ＨＳrefからその時点の現在吸蔵酸素量ＫＺを減じた値（ＨＳref−ＫＺ）」に設定する。例えば、図１３に示した例において、時刻ｔ４にてリーン要求フラグＸLeanreqの値は「０」に設定される。このとき、その時点の基準値ＨＳrefは値Ａであり、その時点の現在吸蔵酸素量ＫＺは値Ｂであるので、時刻ｔ４にて放出酸素量ＨＳは値（ＨＳref−ＫＺ＝Ａ−Ｂ）に設定される。
【０２０２】
その後、ＣＰＵは、リーン要求フラグＸLeanreqの値が「０」に維持されている限り、ステップ８３０乃至ステップ８４０の処理を所定時間の経過毎に繰り返し実行する。よって、放出酸素量ＨＳは値（Ａ−Ｂ）から増大する（時刻ｔ４〜時刻ｔ５を参照。）。
【０２０３】
その後、リーン要求フラグＸLeanreqの値は図７のステップ７２５の処理によって再び「１」に設定される（図１３の時刻ｔ５を参照。）。この場合、ＣＰＵは、ステップ８２５にて「Ｙｅｓ」と判定するとともに、ステップ８４５にて「Ｙｅｓ」と判定してステップ８５０に進み、放出酸素量ＨＳを基準値ＨＳrefとして取得する。この場合、時刻ｔ４〜時刻ｔ５の間に触媒４３から放出された酸素の量が値Ｃであるとすると、時刻ｔ５における放出酸素量ＨＳは値（Ａ−Ｂ＋Ｃ）であるので、時刻ｔ５において値（Ａ−Ｂ＋Ｃ）が基準値ＨＳrefとして取得される。
【０２０４】
以上、説明したように、放出酸素量ＨＳはフューエルカット運転が終了した時点において「０」であり、その後、放出酸素量ＨＳと現在吸蔵酸素量ＫＺの積算値として算出されている。更に、フューエルカットフラグＸＦＣの値が「１」に設定されることによってフューエルカット運転が再開されると、ＣＰＵはステップ８０５にて「Ｎｏ」と判定し、ステップ８１０、ステップ８１５、ステップ１４１０及びステップ１４２０の処理を行う。従って、図１３の時刻ｔ６に示したように、放出酸素量ＨＳ及び現在吸蔵酸素量ＫＺの値が「０」に設定される。
【０２０５】
以上、説明したように、第４制御装置の空燃比要求判定手段は、
リッチ要求が発生したと判定された時点である第１時点（例えば、図１３の時刻ｔ４）での放出酸素量ＨＳの値として、第１時点の直前において前記リーン要求が発生したと判定された時点である第２時点（図１３の時刻ｔ３）での放出酸素量（ＨＳ＝Ａ）から同第１時点での前記現在吸蔵酸素量（ＫＺ＝Ｂ）を減じた値（Ａ−Ｂ）を採用するとともに、前記機関の運転状態がフューエルカット運転状態となった場合、放出酸素量ＨＳをゼロに設定する、ように構成されている（図１３及び図１４のステップ８１０を参照。）。
【０２０６】
従って、放出酸素量ＨＳをより精度良く推定することができるので、触媒４３の酸素を吸蔵する余力についての情報をより精度良く取得することができる。
【０２０７】
＜第５実施形態＞
次に、本発明の第５実施形態に係る制御装置（以下、単に「第５制御装置」と称呼する。）について説明する。第５制御装置は、従来から知られる「空燃比のメインフィードバック制御及びサブフィードバック制御」を実行する。サブフィードバック制御は、下流側空燃比センサ５６の出力値Voxsを目標値Voxsrefに一致させるＰＩＤ制御である。第５制御装置は、サブフィードバック制御における微分項（Ｄ項）のゲインを、酸素を吸蔵する余力に関する情報に基づいて切り替える。即ち、触媒４３の酸素を吸蔵する余力が小さいと考えられる場合には微分項のゲインを大きくし、触媒４３の酸素を吸蔵する余力が大きいと考えられる場合には微分項のゲインを小さくする。これにより、触媒４３が酸素過剰状態となることを回避する。
【０２０８】
（実際の作動）
第５制御装置のＣＰＵは、所定時間が経過する毎に図１５、図１６及び図８に示したルーチンを実行するようになっている。図８に示したルーチンについては説明済みである。従って、以下、図１５及び図１６に示したルーチンについて説明する。なお、これらのルーチンのステップであって、既に説明したステップと同一のステップは、既に説明したステップと同一の符号が付されている。これらのステップについての詳細な説明は適宜省略される。
【０２０９】
ＣＰＵは、所定のタイミングになると、図１５のステップ１５００から処理を開始してステップ６０５に進み、フューエルカットフラグＸＦＣの値が「０」であるか否かを判定する。このとき、フューエルカットフラグＸＦＣの値が「１」であれば、ＣＰＵはステップ６０５にて「Ｎｏ」と判定してステップ１５９５に直接進み、本ルーチンを一旦終了する。これにより、フューエルカット運転が実行される。
【０２１０】
これに対し、フューエルカットフラグＸＦＣの値が「０」であると、ＣＰＵはステップ６０５にて「Ｙｅｓ」と判定し、以下に述べるステップ６１０、ステップ１５１０、ステップ１５２０、及び、ステップ６２５乃至ステップ６４０の処理を順に行い、その後、ステップ１５９５に進む。
【０２１１】
ステップ６１０：ＣＰＵは、吸入空気量Ｇａ、機関回転速度ＮＥ、及び、ルックアップテーブルMapMc（Ｇａ，ＮＥ）に基いて筒内吸入空気量Ｍｃを取得する。
ステップ１５１０：ＣＰＵは、図１６に示したルーチンにより別途算出されているサブフィードバック量ＫＳＦＢを読み込む。
ステップ１５２０：ＣＰＵは、理論空燃比stoichからサブフィードバック量ＫＳＦＢを減じることにより、目標空燃比abyfrを取得する。
【０２１２】
ステップ６２５：ＣＰＵは、筒内吸入空気量Ｍｃを目標空燃比abyfrで除することによって基本燃料噴射量Ｆｂａｓｅを算出する。
ステップ６３０：ＣＰＵは、別途計算されているメインフィードバック量ＫＦmainを読み込む。
ステップ６３５：ＣＰＵは、基本燃料噴射量Ｆｂａｓｅにメインフィードバック量ＫＦmainを乗じることによって指示燃料噴射量Ｆｉを算出する。
ステップ６４０：ＣＰＵは、「指示燃料噴射量Ｆｉの燃料」を「燃料噴射気筒に対応して設けられている燃料噴射弁２５」から噴射させるための噴射指示信号を、その燃料噴射弁２５に送出する。
【０２１３】
この結果、機関の空燃比（従って、触媒流入ガスの空燃比）が、サブフィードバック量ＫＳＦＢに基づいて変更される目標空燃比abyfrに一致するように、制御される。
【０２１４】
一方、所定のタイミングになると、ＣＰＵは図１６のステップ１６００から処理を開始してステップ１６０５に進み、フィードバック制御フラグＸＦＢの値が「１」であるか否かを判定する。このとき、フィードバック制御フラグＸＦＢの値が「１」であれば、ＣＰＵはステップ１６０５にて「Ｙｅｓ」と判定し、以下に述べるステップ１６１０乃至ステップ１６３５の処理を順に行ってステップ１６４０に進む。
【０２１５】
ステップ１６１０：ＣＰＵは、「目標値Voxsref」と「下流側空燃比センサ５６の出力値Voxs」との差である「出力偏差量DVoxs」を取得する。即ち、ＣＰＵは、目標値Voxsrefから出力値Voxsを減じることにより、出力偏差量DVoxsを求める。目標値Voxsrefは、理論空燃比相当電圧Ｖstに設定されている。
【０２１６】
ステップ１６１５：ＣＰＵは、「その時点における出力偏差量の積分値SDVoxs」に「上記ステップ１６１０にて求めた出力偏差量DVoxsと定数（ゲイン）Ｋとの積」を加えることにより、新たな出力偏差量の積分値SDVoxsを求める。ここでは、定数Ｋは「１」に設定されている。
ステップ１６２０：ＣＰＵは、「上記ステップ１６１０にて算出した出力偏差量DVoxs」から「本ルーチンを前回実行した際に算出された出力偏差量（前回出力偏差量DVoxsold）」を減じることにより、新たな出力偏差量の微分値DDVoxsを求める。
ステップ１６２５：ＣＰＵは、「上記ステップ１６１０にて算出した出力偏差量DVoxs」を「前回出力偏差量DVoxsold」として格納する。
【０２１７】
ステップ１６３０：ＣＰＵは、現時点の出力値Voxsから「本ルーチンを前回実行した際の出力値（前回出力値Voxsold）」を減じることにより、出力時間微分相関値ΔVoxsを求める。
ステップ１６３５：ＣＰＵは、現時点の出力値Voxsを「前回出力値Voxsold」として格納する。
【０２１８】
次に、ＣＰＵはステップ１６４０に進み、出力時間微分相関値ΔVoxsが「０」より小さいか否か（負であるか否か）を判定する。このとき、出力時間微分相関値ΔVoxsが「０」以上であると、ＣＰＵはステップ１６４０からステップ１６４５に進み、微分ゲインkdに中間値（中間の大きさを有する値）KdMidを設定する。その後、ＣＰＵはステップ１６６５に進む。
【０２１９】
これに対し、ＣＰＵがステップ１６４０の処理を実行する時点において、出力時間微分相関値ΔVoxsが「０」より小さいと、ＣＰＵはステップ１６４０からステップ１６５０に進んで現在吸蔵酸素量ＫＺが比較値ｋ・ＨＳref（ｋは０〜１の定数、ＨＳrefは基準値）以上であるか否かを判定する。なお、現在吸蔵酸素量ＫＺ及び基準値ＨＳrefは、図８のルーチンにより別途取得されている。
【０２２０】
そして、現在吸蔵酸素量ＫＺが比較値ｋ・ＨＳrefよりも小さければ、ＣＰＵはステップ１６５５に進んで微分ゲインkdに小さい値KdSmallを設定する。その後、ＣＰＵはステップ１６６５に進む。これに対し、現在吸蔵酸素量ＫＺが比較値ｋ・ＨＳref以上であると、ＣＰＵはステップ１６５０からステップ１６６０に進んで微分ゲインkdに大きい値KdLargeを設定する。その後、ＣＰＵはステップ１６６５に進む。値kdLargeは値kdSmallよりも大きい。
【０２２１】
ＣＰＵは、ステップ１６６５にて、下記（５）式に従って、サブフィードバック量ＫＳＦＢを求める。この（５）式において、Kpは予め設定された比例ゲイン（比例定数）、Kiは予め設定された積分ゲイン（積分定数）である。その後、ＣＰＵはステップ１６９５に進み、本ルーチンを一旦終了する。
ＫＳＦＢ＝Kp・DVoxs＋Ki・SDVoxs＋Kd・DDVoxs    …（５）
【０２２２】
一方、ＣＰＵがステップ１６０５の処理を実行する時点において、フィードバック制御フラグＸＦＢの値が「０」であれば、ＣＰＵはステップ１６０５にて「Ｎｏ」と判定し、以下に述べるステップ１６７０及び１６７５の処理を順に行い、その後、ステップ１６９５に進む。
ステップ１６７０：ＣＰＵは、サブフィードバック量ＫＳＦＢの値を「０」に設定する。
ステップ１６７５：ＣＰＵは、積分値SDVoxsの値を「０」に設定する。
【０２２３】
以上、説明したように、第５制御装置は、サブフィードバック量ＫＳＦＢの微分項のゲインを「放出酸素量ＨＳ及び現在吸蔵酸素量ＫＺ」に基づいて変更する。従って、触媒４３が酸素過剰状態に陥ることを回避することができる。
【０２２４】
以上、説明したように、本発明の実施形態に係る空燃比制御装置は、触媒４３の状態（即ち、空燃比要求）を迅速且つ精度良く判定することができるので、エミッションを改善することができる。
【０２２５】
本発明は上記実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、放出酸素量ＨＳは、検出上流側空燃比abyfsに代わるリッチ空燃比afRichと、筒内吸入空気量Ｍｃと、に基づいて算出されてもよい。また、現在吸蔵酸素量ＫＺは、検出上流側空燃比abyfsに代わるリーン空燃比afLeanと、筒内吸入空気量Ｍｃと、に基づいて算出されてもよい。
【図１】
2012098641.tif 000003
【図２】
2012098641.tif 000004
【図３】
2012098641.tif 000005
【図４】
2012098641.tif 000006
【図５】
2012098641.tif 000007
【図６】
2012098641.tif 000008
【図７】
2012098641.tif 000009
【図８】
2012098641.tif 000010
【図９】
2012098641.tif 000011
【図１０】
2012098641.tif 000012
【図１１】
2012098641.tif 000013
【図１２】
2012098641.tif 000014
【図１３】
2012098641.tif 000015
【図１４】
2012098641.tif 000016
【図１５】
2012098641.tif 000017
【図１６】
2012098641.tif 000018
【国際調査報告】
2012098641.tif 000019
2012098641.tif 000020
2012098641.tif 000021
2012098641.tif 000022