(57)【要約】本発明の実施形態に係る空燃比制御装置は、触媒の下流に配設された下流側空燃比センサの出力値に基いて、機関に供給される混合気の空燃比（機関の空燃比）を制御する。即ち、出力値Ｖｏｘｓが目標値ＶＲＥＦよりも小さいとき（リッチ要求が発生しているとき）、空燃比制御装置は機関の空燃比をリッチ空燃比に設定する。出力値Ｖｏｘｓが目標値ＶＲＥＦよりも大きいとき（リーン要求が発生しているとき）、空燃比制御装置は機関の空燃比をリーン空燃比に設定する。この空燃比制御装置は、出力値Ｖｏｘｓが基準値Ｖｆ（理論空燃比相当値）から大きく乖離すると、目標値ＶＲＥＦを所定の値から基準値Ｖｆへと徐々に近づける（点Ｐ１〜点Ｐ３）。
2011148517.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の排気通路に配設された触媒と、
前記排気通路であって前記触媒の下流に配設され且つ酸素分圧に応じて変化する出力値を示す素子を備える下流側空燃比センサと、
前記下流側空燃比センサの出力値を所定の目標値に近づけるために前記機関に供給される混合気の空燃比である機関の空燃比を増大させる必要があるリーン要求の発生期間において前記機関の空燃比を増大し、前記下流側空燃比センサの出力値を前記目標値に近づけるために前記機関の空燃比を減少させる必要があるリッチ要求の発生期間において前記機関の空燃比を減少する、フィードバック制御を実行する空燃比制御手段と、
を備える内燃機関の空燃比制御装置において、
前記空燃比制御手段は、
前記目標値を、前記下流側空燃比センサの素子に到達しているガスの酸素分圧が同ガスの空燃比が理論空燃比であるときの酸素分圧であるときに前記下流側空燃比センサの素子の出力値が示す値を含む所定の範囲内の値である基準値に、前記基準値よりも大きい側の領域及び前記基準値よりも小さい側の領域の何れか一方の領域であって前記下流側空燃比センサの出力値が存在している領域内の所定の値から時間経過とともに徐々に近づける目標値変更手段、
を備える空燃比制御装置。
【請求項２】
請求項１に記載の空燃比制御装置において、
前記空燃比制御手段は、
前記下流側空燃比センサの出力値が前記基準値から離れる方向に変化する状態から前記基準値に近づく方向に変化する状態へと変化したときの同出力値を第１極値として取得し、且つ、前記下流側空燃比センサの出力値が前記基準値に近づく方向に変化する状態から前記基準値から離れる方向へと変化する状態へと変化したときの同出力値を第２極値として取得する極値取得手段を含み、
前記目標値変更手段は、
前記極値取得手段により前記第１極値が取得された場合に同取得された第１極値と前記基準値との間の値である第１値を前記目標値として設定し、その後、前記極値取得手段によって前記第２極値が取得された場合に同取得された第２極値と前記極値取得手段によって取得された前記第１極値との間の値である第２値を前記目標値として設定するように構成された空燃比制御装置。
【請求項３】
請求項２に記載の空燃比制御装置において、
前記目標値変更手段は、
前記第２値を、前記取得された第２極値と前記第１値との間の値に設定するように構成された空燃比制御装置。
【請求項４】
請求項３に記載の空燃比制御装置において、
前記目標値変更手段は、
前記第２極値が取得された時点である第２極値取得時点以降において取得される前記第１極値と前記基準値との差の絶対値が、前記第２極値取得時点以前において取得された前記第１極値と前記基準値との差の絶対値よりも小さくなるように、前記第２値を設定する空燃比制御装置。
【請求項５】
請求項２乃至請求項４の何れか一項に記載の空燃比制御装置において、
前記目標値変更手段は、
前記極値取得手段により前記第１極値が取得された場合に同取得された第１極値と前記基準値との差の絶対値が正の第１閾値よりも大きいとき前記第１値を前記目標値として設定し、同取得された第１極値と前記基準値との差の絶対値が前記第１閾値以下であるとき前記基準値を前記目標値として設定するように構成された空燃比制御装置。
【請求項６】
請求項５に記載の空燃比制御装置において、
前記目標値変更手段は、
前記第１極値に比べて正の第１変更値だけ前記基準値に近い値を前記第１値として設定し、且つ、前記第２極値に比べて正の第２変更値だけ前記基準値から遠い値を前記第２値として設定するように構成され、
前記第１変更値は前記第１閾値以下であり、且つ、
前記第２変更値は前記第１変更値よりも小さい空燃比制御装置。
【請求項７】
請求項６に記載の空燃比制御装置において、
前記目標値変更手段は、
前記下流側空燃比センサの温度が低いほど前記第１変更値をより小さくするように構成された空燃比制御装置。
【請求項８】
請求項６に記載の空燃比制御装置において、
前記目標値変更手段は、
前記触媒を通過する排ガスの流量が大きいほど前記第１変更値をより小さくするように構成された空燃比制御装置。
【請求項９】
請求項６に記載の空燃比制御装置において、
前記目標値変更手段は、
前記第１極値と前記基準値との差の絶対値が正の第２閾値よりも大きい場合における前記第１変更値の値を、前記第１極値と前記基準値との差の絶対値が前記第２閾値以下である場合における前記第１変更値の値よりも小さくするように構成された空燃比制御装置。
【請求項１０】
請求項６に記載の空燃比制御装置において、
前記目標値変更手段は、
前記機関の運転状態が、前記機関への燃料の供給を停止するフューエルカット状態から前記機関への燃料の供給を行う燃料供給状態へと変化した時点から、所定時間が経過する時点までのフューエルカット終了後期間における前記第１変更値の値を、前記フューエルカット終了後期間以外の期間における前記第１変更値の値よりも小さくするように構成された空燃比制御装置。
【請求項１１】
請求項６に記載の空燃比制御装置において、
前記目標値変更手段は、
前記機関が所定の加速状態にあるか否かを判定するとともに、前記機関が前記加速状態にあると判定された場合の前記第１変更値の値を、前記機関が前記加速状態にあると判定されていない場合の前記第１変更値の値よりも小さくするように構成された空燃比制御装置。
【請求項１２】
請求項６に記載の空燃比制御装置において、
前記空燃比制御手段は、
前記機関に吸入される吸入空気量を取得するとともに同取得された吸入空気量に基づいて前記機関に供給される混合気の空燃比を理論空燃比に一致させるための基本燃料噴射量を算出する基本燃料噴射量算出手段と、
前記排気通路であって前記触媒よりも上流に配設されるとともに前記触媒に流入する排ガスの空燃比に応じた出力値を出力する上流側空燃比センサと、
前記上流側空燃比センサの出力値により表される上流側空燃比が理論空燃比に一致するように前記基本燃料噴射量を補正するメインフィードバック量を算出するメインフィードバック量算出手段と、
前記リーン要求が発生していると判定されている期間において前記基本燃料噴射量を増大させるように前記基本燃料噴射量を補正し且つ前記リッチ要求が発生していると判定されている期間において前記基本燃料噴射量を減少させるように前記基本燃料噴射量を補正するサブフィードバック量を算出するサブフィードバック量算出手段と、
前記基本燃料噴射量を、前記メインフィードバック量及び前記サブフィードバック量に基く空燃比補正量により補正して指示燃料噴射量を算出するとともに、同算出された指示燃料噴射量の燃料を前記機関に供給することにより前記フィードバック制御を実行する燃料噴射量制御手段と、
を含む空燃比制御装置。
【請求項１３】
請求項１２に記載の空燃比制御装置において、
前記空燃比制御手段は、
前記メインフィードバック量の平均値に相関する値を空燃比学習値として取得する学習制御を実行する学習手段を備え、
前記燃料噴射量制御手段は、
前記基本燃料噴射量を前記空燃比学習値にも基いて補正することにより前記指示燃料噴射量を算出するように構成され、
前記学習手段は、
前記目標値が前記基準値に設定されている場合に前記学習制御を実行し、且つ、前記目標値が前記基準値に設定されていない場合に前記学習制御を実行しないように構成された空燃比制御装置。
【請求項１４】
請求項１３に記載の空燃比制御装置において、
前記下流側空燃比センサは、
前記触媒から流出する排ガスに含まれる酸素の濃度に応じた電圧を前記下流側空燃比センサの出力値として出力する濃淡電池型の酸素濃度センサであり、
前記学習手段は、
前記目標値が第１継続時間以上に渡り前記基準値に一致している状態が第２継続時間以上に渡って発生していない場合、前記目標値の平均値に相関する値が前記基準値よりも大きいとき、前記空燃比学習値を、前記基本燃料噴射量をより減少補正する値へと修正するように構成された空燃比制御装置。
【請求項１５】
請求項１３に記載の空燃比制御装置において、
前記下流側空燃比センサは、
前記触媒から流出する排ガスに含まれる酸素の濃度に応じた電圧を前記下流側空燃比センサの出力値として出力する濃淡電池型の酸素濃度センサであり、
前記学習手段は、
前記目標値が第１継続時間以上に渡り前記基準値に一致している状態が第２継続時間以上に渡って発生していない場合、前記目標値の平均値に相関する値が前記基準値よりも小さいとき、前記空燃比学習値を、前記基本燃料噴射量をより増大補正する値へと修正するように構成された空燃比制御装置。
【請求項１６】
請求項１３に記載の空燃比制御装置において、
前記下流側空燃比センサは、
前記触媒から流出する排ガスに含まれる酸素の濃度に応じた電圧を前記下流側空燃比センサの出力値として出力する濃淡電池型の酸素濃度センサであり、
前記目標値変更手段は、
前記目標値が、前記基準値よりも大きい値と前記基準値よりも小さい値とに交互に変化する状態が所定時間以上継続する状態である目標値振動状態が発生した場合、前記第１変更値の値を、前記目標値振動状態が発生していない場合の前記第１変更値の値よりも小さくするように構成された空燃比制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、排気通路に触媒を備えた内燃機関の空燃比制御装置に関する。
【背景技術】
【０００２】
従来から、内燃機関から排出される排ガスを浄化するために同機関の排気通路に三元触媒（排ガス浄化用の触媒ユニット）が配設されている。三元触媒は、周知のように、その三元触媒に流入する酸素を吸蔵し且つその吸蔵した酸素を放出する「酸素吸蔵機能」を有する。以下、三元触媒は単に「触媒」とも称呼される。【０００３】
従来の空燃比制御装置の一つ（以下、「従来装置」と称呼する。）は、機関の排気通路であって触媒の下流に配設された下流側空燃比センサを備える。従来装置は、気筒に吸入される空気量に基づいて「機関に供給される混合気の空燃比を理論空燃比に一致させるための基本燃料噴射量」を求め、その基本燃料噴射量を少なくとも下流側空燃比センサの出力値に基づいて補正するようになっている。【０００４】
以下、触媒に流入する排ガスを「触媒流入ガス」と称呼し、触媒から流出する排ガスを「触媒流出ガス」と称呼する。更に、理論空燃比よりも小さい空燃比を「リッチ空燃比」と称呼し、理論空燃比よりも大きい空燃比を「リーン空燃比」と称呼する。機関に供給される混合気の空燃比は「機関の空燃比」と称呼する。【０００５】
従来装置に使用される下流側空燃比センサは、一般に、濃淡電池型酸素濃度センサである。この下流側空燃比センサの出力値Ｖｏｘｓは、図３の曲線Ｃ１に示したように、触媒流出ガスの空燃比が理論空燃比よりも小さい状態が継続した場合、最大出力値Ｍａｘ近傍の値となる。下流側空燃比センサの出力値Ｖｏｘｓは、触媒流出ガスの空燃比が理論空燃比よりも大きい状態が継続した場合、最小出力値Ｍｉｎ近傍の値となる。更に、下流側空燃比センサの出力値Ｖｏｘｓは、触媒流出ガスの空燃比がリッチ空燃比からリーン空燃比へと変化する場合、最大出力値Ｍａｘ近傍の値から最小出力値Ｍｉｎ近傍の値へと急激に変化する。下流側空燃比センサの出力値Ｖｏｘｓは、触媒流出ガスの空燃比がリーン空燃比からリッチ空燃比へと変化する場合、最小出力値Ｍｉｎ近傍の値から最大出力値Ｍａｘ近傍の値へと急激に変化する。【０００６】
このように、触媒流出ガスの空燃比がリーン空燃比であって、そのために触媒流出ガスに過剰な酸素が含まれているとき、出力値Ｖｏｘｓは最小出力値Ｍｉｎ近傍の値となる。触媒流出ガスの空燃比がリッチ空燃比であって、そのために触媒流出ガスに過剰な酸素が含まれていないとき、出力値Ｖｏｘｓは最大出力値Ｍａｘ近傍の値となる。従って、出力値Ｖｏｘｓが「最大出力値Ｍａｘと最小出力値Ｍｉｎとの中央の値Ｖｍｉｄ（即ち、中央値Ｖｍｉｄ＝（Ｍａｘ＋Ｍｉｎ）／２）」に一致している場合、触媒流出ガスの空燃比は理論空燃比に一致していると考えられている。【０００７】
そして、従来装置は、下流側空燃比センサの出力値Ｖｏｘｓが「理論空燃比に相当する値（即ち、中央値Ｖｍｉｄ）に設定された目標値ＶＲＥＦ」に一致するように空燃比のフィードバック量を比例・積分制御（ＰＩ制御）等に基づいて算出する。この空燃比のフィードバック量は、便宜上「サブフィードバック量」とも称呼される。従来装置は、基本燃料噴射量をサブフィードバック量により補正することにより、機関に供給される混合気の空燃比をフィードバック制御する（例えば、特開２００５−１７１９８２号公報を参照。）。【０００８】
図２８は、このような従来装置による空燃比のフィードバック制御の様子を示したタイムチャートである。従来装置は、目標値ＶＲＥＦを一定値（中央値Ｖｍｉｄ近傍の値である基準値Ｖｆ）に維持し、触媒流出ガスの空燃比がリッチ空燃比であるのかリーン空燃比であるのかを判定する。換言すると、従来装置は、「排ガスを触媒により効率良く浄化するために要求される機関の空燃比（要求空燃比）」を「出力値Ｖｏｘｓ及び基準値Ｖｆ」に基いて決定している。【０００９】
より具体的に述べると、従来装置は、出力値Ｖｏｘｓが基準値Ｖｆよりも大きいとき（例えば、時刻ｔ１〜時刻ｔ２、時刻ｔ３〜時刻ｔ４、及び、時刻ｔ５〜時刻ｔ６）、触媒流出ガスの空燃比はリッチ空燃比であると判定し、要求空燃比はリーン空燃比である（即ち、リーン要求が発生している）と判定する。リーン要求が発生しているとき、従来装置は機関の空燃比をリーン空燃比に制御する。【００１０】
この結果、触媒流出ガスの空燃比はリーン空燃比になるので、出力値Ｖｏｘｓは減少し、基準値Ｖｆよりも小さくなる。従来装置は、出力値Ｖｏｘｓが基準値Ｖｆよりも小さいとき（例えば、時刻ｔ２〜時刻ｔ３、及び、時刻ｔ４〜時刻ｔ５）、触媒流出ガスの空燃比がリーン空燃比であると判定し、要求空燃比はリッチ空燃比である（即ち、リッチ要求が発生している）と判定する。リッチ要求が発生しているとき、従来装置は機関の空燃比をリッチ空燃比に制御する。この結果、触媒流出ガスの空燃比はリッチ空燃比になるので、出力値Ｖｏｘｓは増大し、基準値Ｖｆよりも大きくなる。
【発明の概要】
【００１１】
ところが、このようなフィードバック制御を実行すると、機関の空燃比が過大又は過小となり、その結果、窒素酸化物（ＮＯｘ）又は未燃物（ＣＯ，ＨＣ等）が触媒により完全には浄化されずに機関の外部へと排出されてしまう場合がある。例えば、図２８に示した例においては、時刻ｔ２、時刻ｔ４及び時刻ｔ６の前後において、ＮＯｘの排出量が増大している。
【００１２】
この理由は、次のように考えられる。例えば、出力値Ｖｏｘｓが最大出力値Ｍａｘ近傍にまで増大した場合（例えば、時刻ｔ１の直後を参照。）、触媒流出ガスの空燃比は「理論空燃比との差の絶対値が大きいリッチ空燃比」である。この場合、触媒に吸蔵されている酸素の量（以下、「酸素吸蔵量ＯＳＡ」とも称呼する。）は実質的に「０」である。そこで、従来装置は、リーン要求が発生したと判定して機関の空燃比をリーン空燃比に設定する。
【００１３】
その結果、触媒流入ガスには過剰な酸素が含まれるので、酸素吸蔵量ＯＳＡは増加する。触媒の酸素吸蔵量ＯＳＡが比較的小さい場合、触媒は酸素を効率良く吸蔵することができる。従って、時刻ｔ１直後において、触媒流入ガスに含まれる過剰な酸素の殆どは触媒に吸蔵される。
【００１４】
その後、触媒の酸素吸蔵量ＯＳＡが大きくなると、触媒は酸素を効率良く吸蔵することができなくなる。よって、触媒流出ガスに酸素が含まれ始める。この結果、時刻ｔ１からある程度の時間が経過すると下流側空燃比センサの出力値Ｖｏｘｓは最大出力値Ｍａｘから最小出力値Ｍｉｎに向けて減少し始める。
【００１５】
ところが、下流側空燃比センサの出力値Ｖｏｘｓは、触媒流出ガスの酸素分圧の変化に対して遅れて変化する。これは、以下のような要因によると推定される。
（１）触媒と下流側空燃比センサとの間に距離があるため、触媒流出ガスが下流側空燃比センサの素子に到達するまでに時間を要すること。
（２）下流側空燃比センサには一般に保護カバーが備えられているので、触媒流出ガスが下流側空燃比センサの素子に到達するまでに時間を要すること。
（３）下流側空燃比センサの素子が「酸素平衡後のガスを素子に到達させるための層（例えば、拡散抵抗層）」により覆われているため、その素子に到達するガスの酸素分圧の変化が遅れること。この遅れは、下流側空燃比センサの素子の周囲に、それまでに蓄積された酸素又は未燃物が存在するとき、顕著になる。
【００１６】
この出力値Ｖｏｘｓの変化の遅れに起因して、出力値Ｖｏｘｓは時刻ｔ２に至るまで基準値Ｖｆよりも大きいので、従来装置は時刻ｔ２までリーン要求が発生していると判定し続ける。従って、機関の空燃比はリーン空燃比に設定され続ける。この結果、酸素吸蔵量ＯＳＡは増大し続け、時刻ｔ２又は時刻ｔ２の直前に「触媒の酸素吸蔵量ＯＳＡの最大値である最大酸素吸蔵量Ｃｍａｘ」の近傍値に到達する。
【００１７】
このとき、機関の空燃比はリーン空燃比であるから、触媒流入ガスには多量のＮＯｘ（窒素酸化物）が含まれている。ところが、酸素吸蔵量ＯＳＡが最大酸素吸蔵量Ｃｍａｘの近傍値に到達しているから、触媒はＮＯｘを充分に浄化することができない。この結果、時刻ｔ２近傍の期間において、比較的多量のＮＯｘが触媒の下流に排出される。
【００１８】
同様に、従来装置は、酸素吸蔵量ＯＳＡが「０」に近くなった場合（例えば、時刻ｔ１の直前、時刻ｔ３の直前及び時刻ｔ５の直前）であっても、リッチ要求が発生していると判定する。その結果、過剰な未燃物が触媒に流入するので、その未燃物が浄化されずに触媒の下流に排出される場合がある。
【００１９】
このように、従来装置によれば、機関の空燃比が「触媒の排気浄化作用に対して望ましくない空燃比」に設定される場合がある。
【００２０】
本発明は、上述した課題に対処するためになされたものである。即ち、本発明の目的の一つは、触媒流入ガスの空燃比が「触媒の排気浄化作用に対して出来るだけ望ましい空燃比」となるように、機関の空燃比を制御することができる空燃比制御装置を提供することにある。
【００２１】
本発明による内燃機関の空燃比制御装置の一態様は、
内燃機関の排気通路に配設された触媒と、前記排気通路であって前記触媒の下流に配設される下流側空燃比センサと、空燃比制御手段と、を備える。
【００２２】
前記下流側空燃比センサは、空燃比を検出するための素子を備える。その素子は、その素子に到達しているガス（以下、「素子到達ガス」とも称呼する。）の酸素分圧に応じて変化する出力値を示す。下流側空燃比センサは、濃淡電池型の酸素濃度センサ（Ｏ２センサ）であることが望ましい。下流側空燃比センサが濃淡電池型の酸素濃度センサである場合、下流側空燃比センサの出力値は「素子到達ガスの空燃比」が小さくなる（よりリッチである）ほど大きくなる。但し、下流側空燃比センサは、限界電流式の広域空燃比センサ等であってもよい。下流側空燃比センサが限界電流式の広域空燃比センサである場合、下流側空燃比センサの出力値は「素子到達ガスの空燃比」がより小さくなる（よりリッチである）ほど小さくなる。更に、下流側空燃比センサは、ジルコニア素子を有するセンサであってもよく、チタニア素子を有するセンサであってもよい。
【００２３】
前記空燃比制御手段は、前記下流側空燃比センサの出力値を所定の目標値に近づけるために前記機関の空燃比を増大させる必要があるリーン要求の発生期間において、前記機関の空燃比を増大する。この場合、前記機関の空燃比は、徐々に増大されてもよく、所定（一定又は可変）のリーン空燃比に設定されてもよい。
【００２４】
更に、前記空燃比制御手段は、前記下流側空燃比センサの出力値を前記目標値に近づけるために前記機関の空燃比を減少させる必要があるリッチ要求の発生期間において、前記機関の空燃比を減少する。この場合、前記機関の空燃比は、徐々に減少されてもよく、所定（一定又は可変）のリッチ空燃比に設定されてもよい。
【００２５】
この空燃比の制御は「フィードバック制御（空燃比フィードバック制御、又は、サブフィードバック制御）」と称呼される。
【００２６】
例えば、下流側空燃比センサが濃淡電池型の酸素濃度センサである場合、下流側空燃比センサの出力値が前記目標値よりも大きいとき、「触媒流出ガスの空燃比はリッチ空燃比であり、従って、リーン要求が発生している」ので、機関の空燃比はリーン空燃比に制御される。更に、下流側空燃比センサが濃淡電池型の酸素濃度センサである場合、下流側空燃比センサの出力値が前記目標値よりも小さいとき、「触媒流出ガスの空燃比はリーン空燃比であり、従って、リッチ要求が発生している」ので、機関の空燃比はリッチ空燃比に制御される。
【００２７】
例えば、下流側空燃比センサが限界電流式の広域空燃比センサである場合、下流側空燃比センサの出力値が前記目標値よりも大きいとき、「触媒流出ガスの空燃比はリーン空燃比であり、従って、リッチ要求が発生している」ので、機関の空燃比はリッチ空燃比に制御される。更に、下流側空燃比センサが限界電流式の広域空燃比センサである場合、下流側空燃比センサの出力値が前記目標値よりも小さいとき、「触媒流出ガスの空燃比はリッチ空燃比であり、従って、リーン要求が発生している」ので、機関の空燃比はリーン空燃比に制御される。
【００２８】
更に、前記空燃比制御手段は目標値変更手段を備える。
【００２９】
前記目標値変更手段は、
前記フィードバック制御において用いられる前記目標値を、所定の基準値に、「前記基準値よりも大きい側の領域及び前記基準値よりも小さい側の領域」の何れが一方の領域であって前記下流側空燃比センサの出力値が存在している領域内の所定の値から、時間経過とともに徐々に近づける。
【００３０】
前記所定の基準値は、「前記下流側空燃比センサの素子に到達しているガス（素子到達ガス）」の酸素分圧が「その素子到達ガスの空燃比が理論空燃比であるとき」の酸素分圧であるときに、「前記下流側空燃比センサの出力値が示す値（以下、「理論空燃比相当値」とも称呼する。）」を含む「所定の範囲」内の値である。
【００３１】
即ち、理論空燃比相当値が、例えば、Ｖｍｉｄであるとすると、前記所定の範囲は「（Ｖｍｉｄ−Δｖ１）以上であり且つ（Ｖｍｉｄ＋Δｖ２）以下」の範囲である（Δｖ１＞０、Δｖ２＞０）。例えば、下流側空燃比センサが濃淡電池型の酸素濃度センサである場合、図３に示したように、前記所定の範囲は、素子到達ガスの空燃比の変化量に対する出力値の変化量が極めて大きい「高感度領域」と呼ばれる範囲である。
【００３２】
前記目標値変更手段は、目標値を、その目標値の時間的平均値が基準値に近づくように変更させればよい。即ち、目標値は、増減を繰り返しながらも、その時間的平均値が目標値に近づくように変更されればよい。勿論、目標値は、目標値と基準値との差の絶対値が時間経過とともに徐々に小さくなるように（時間に関して単調減少するように）変更されてもよい。
【００３３】
この目標値変更手段によれば、例えば、図６に示したように、目標値を、点Ｐ１から点Ｐ２及び点Ｐ３を経由して基準値Ｖｆへと変化させることができる。図６の点Ｐ１により示される目標値は、「基準値Ｖｆよりも大きい側の領域及び基準値Ｖｆよりも小さい側の領域」の何れか一方の領域であって下流側空燃比センサの出力値が存在している領域（この例においては、基準値Ｖｆよりも大きい側の領域）」内の所定の値である。同様に、この目標値変更手段によれば、例えば、図７に示したように、目標値を、点Ｐ１から点Ｐ２及び点Ｐ３を経由して基準値Ｖｆへと変化させることができる。図７の点Ｐ１により示される目標値は、「基準値Ｖｆよりも大きい側の領域及び基準値Ｖｆよりも小さい側の領域」の何れか一方の領域であって下流側空燃比センサの出力値が存在している領域（この例においては、基準値Ｖｆよりも小さい側の領域）」内の所定の値である。
【００３４】
従って、下流側空燃比センサが目標値を横切るタイミングが、目標値を基準値Ｖｆに固定している場合に比べ、早期に到来する。換言すると、リーン要求からリッチ要求へと（又は、その逆へと）空燃比要求が変化したことを早期に検出することができる（例えば、図２８の時刻ｔ２に対する時刻ｔ２’を参照。）。
【００３５】
この結果、本発明による内燃機関の空燃比制御装置の一態様は、下流側空燃比センサの出力値が過大又は過小にならないように制御しながら（即ち、酸素吸蔵量ＯＳＡが「０」近傍値又は最大酸素吸蔵量Ｃｍａｘ近傍値にならないようにしながら）、下流側空燃比センサの出力値を基準値へと接近させることができる。換言すると、本発明による内燃機関の空燃比制御装置の一態様は、触媒の排気浄化作用を効率良く行わせることに対して「過剰な酸素又は過剰な未燃物」が触媒に流入しないように「機関の空燃比」を制御することができる。従って、この空燃比制御装置の一態様は、エミッションを良好に維持することができる。
【００３６】
前記空燃比制御手段は、例えば、極値取得手段を含むことができる。
この極値取得手段は、
（１）前記下流側空燃比センサの出力値が前記基準値から離れる方向に変化する状態から前記基準値に近づく方向に変化する状態へと変化したときの同出力値を、第１極値として取得し、且つ、
（２）前記下流側空燃比センサの出力値が前記基準値に近づく方向に変化する状態から前記基準値から離れる方向へと変化する状態へと変化したときの同出力値を、第２極値として取得する。
【００３７】
ここで、出力値が基準値から離れることと、出力値と基準値との差の絶対値が増大することとは同義である。更に、出力値が基準値に近づくことと、出力値と基準値との差の絶対値が減少することとは同義である。
【００３８】
この極値取得手段によれば、例えば、下流側空燃比センサの出力値が、基準値よりも大きい状態において「基準値から遠ざかり、その後、基準値へと近づく」ように変化する場合、「基準値へと近づき始めた時点の出力値（即ち、極大値Ｖｍａｘ）」が第１極値として取得される。これに対し、下流側空燃比センサの出力値が、基準値よりも小さい状態において、「基準値から遠ざかり、その後、基準値へと近づく」ように変化する場合、「基準値へと近づき始めた時点の出力値（即ち、極小値Ｖｍｉｎ）」が第１極値として取得される。
【００３９】
更に、この極値取得手段によれば、下流側空燃比センサの出力値が、基準値よりも小さい状態において、「基準値に近づき、その後、基準値から遠ざかる」ように変化する場合、基準値から遠ざかり始めた時点の出力値（即ち、極大値Ｖｍａｘ）が第２極値として取得される。これに対し、下流側空燃比センサの出力値が、基準値よりも大きい状態において、「基準値に近づき、その後、基準値から遠ざかる」ように変化する場合、基準値から遠ざかり始めた時点の出力値（即ち、極小値Ｖｍｉｎ）が第２極値として取得される。
【００４０】
加えて、前記目標値変更手段は、次の機能を実現するように構成され得る。
【００４１】
（１）前記目標値変更手段は、前記極値取得手段により前記第１極値が取得された場合、「その取得された第１極値（ｋ１（１））」と「前記基準値」との間の値（即ち、第１値）を「前記目標値」として設定する。この第１値は、現時点の下流側空燃比センサの出力値と基準値との間の値（現時点の下流側空燃比センサの出力値を含む値）である。
【００４２】
（２）その後、前記目標値変更手段は、前記極値取得手段によって前記第２極値が取得された場合、「その取得された第２極値（ｋ２（１））」と「前記極値取得手段によって取得された前記第１極値（ｋ１（１））」との間の値（即ち、第２値）を「前記目標値」として設定する。
【００４３】
例えば、説明を簡単にするために、下流側空燃比センサが濃淡電池型の酸素濃度センサであると仮定する。この場合、下流側空燃比センサの出力値が目標値より大きい期間がリーン要求の発生期間（機関の空燃比が増大される期間）であり、下流側空燃比センサの出力値が目標値より小さい期間がリッチ要求の発生期間（機関の空燃比が減少される期間）である。
【００４４】
リーン要求の発生期間において第１極値（ｋ１（１）、例えば、図６の極大値Ｖｍａｘ（１））が取得されると、目標値は「第１極値（ｋ１（１）＝Ｖｍａｘ（１））と基準値（Ｖｆ）との間の第１値」に設定される（図６の点Ｐ１を参照。）。従って、その後、下流側空燃比センサの出力値が、「第１値に設定された目標値」よりも大きい状態から小さい状態へと変化した時点（第１時点、図６の時刻ｔ２を参照。）にて、空燃比要求はリーン要求からリッチ要求へと変化する。その結果、機関の空燃比は減少させられる。
【００４５】
前記第１値は「第１極値（ｋ１（１））と基準値（Ｖｆ）との間の値」であるから、下流側空燃比センサの出力値は、基準値（Ｖｆ）に到達する時点よりも前の時点（第１時点）にて第１値に到達する。従って、機関の空燃比は、触媒に過剰な酸素が流入する前（触媒の酸素吸蔵量ＯＳＡが過大になる前）に酸素吸蔵量ＯＳＡを減少させる空燃比（リッチ空燃比）へと切り換えられる。
【００４６】
その後、リッチ要求の発生期間において第２極値（ｋ２（１）、例えば、図６の極小値Ｖｍｉｎ（１））が取得される。この場合、目標値は「第２極値（ｋ２（１）＝Ｖｍｉｎ（１））と第１極値（ｋ１（１）＝Ｖｍａｘ（１））との間の第２値」に設定される（図６の点Ｐ２を参照。）。下流側空燃比センサの出力値が、「第２値に設定された目標値」よりも小さい状態から大きい状態へと変化した時点（第２時点、図６の時刻ｔ４を参照。）にて、空燃比要求はリッチ要求からリーン要求へと変化する。その結果、機関の空燃比は、触媒に過剰な未燃物が流入する前（触媒の酸素吸蔵量ＯＳＡが過小になる前）に酸素吸蔵量ＯＳＡを増大させる空燃比（リーン空燃比）へと切り換えられ得る。
【００４７】
同様に、リッチ要求の発生期間において第１極値（ｋ１（１）、例えば、図７の極小値Ｖｍｉｎ（１））が取得されると、目標値は「第１極値（ｋ１（１）＝Ｖｍｉｎ（１））と基準値（Ｖｆ）との間の第１値」に設定される（図７の点Ｐ１を参照。）。従って、その後、下流側空燃比センサの出力値が、「第１値に設定された目標値」よりも小さい状態から大きい状態へと変化した時点（第１時点、図７の時刻ｔ２を参照。）にて、空燃比要求はリッチ要求からリーン要求へと変化する。その結果、機関の空燃比は増大させられる。
【００４８】
前記第１値は「第１極値（ｋ１（１））と基準値（Ｖｆ）との間の値」であるから、下流側空燃比センサの出力値は、基準値（Ｖｆ）に到達する時点よりも前の時点（第１時点）にて第１値に到達する。従って、機関の空燃比は、触媒に過剰な未燃物が流入する前（触媒の酸素吸蔵量ＯＳＡが過小になる前）に酸素吸蔵量ＯＳＡを増大させる空燃比（リーン空燃比）へと切り換えられる。
【００４９】
その後、リーン要求の発生期間において第２極値（ｋ２（１）、例えば、図７の極大値Ｖｍａｘ（１））が取得される。この場合、目標値は「第２極値（ｋ２（１）＝Ｖｍａｘ（１））と第１極値（ｋ１（１）＝Ｖｍｉｎ（１））との間の第２値」に設定される（図７の点Ｐ２を参照。）。下流側空燃比センサの出力値が、「第２値に設定された目標値」よりも大きい状態から小さい状態へと変化した時点（第２時点、図７の時刻ｔ４を参照。）にて、空燃比要求はリーン要求からリッチ要求へと変化する。その結果、機関の空燃比は、触媒に過剰な酸素が流入する前（触媒の酸素吸蔵量ＯＳＡが過大になる前）に酸素吸蔵量ＯＳＡを減少させる空燃比（リッチ空燃比）へと切り換えられる。
【００５０】
以上、説明したように、前記空燃比制御手段によれば、機関の空燃比の増大から減少への切換え、及び、機関の空燃比の減少から増大への切換えが、従来装置に比較して早期に行われる。しかも、出力値は目標値に近づくように制御され、且つ、目標値は基準値に漸近する。
【００５１】
この結果、本発明による内燃機関の空燃比制御装置の一態様は、下流側空燃比センサの出力値が過大又は過小にならないように制御しながら、出力値を基準値へと接近させることができる。換言すると、この装置は、触媒の排気浄化作用を効率良く行わせることに対して「過剰な酸素又は過剰な未燃物」が触媒に流入しないように、機関の空燃比を制御することができるので、エミッションを良好に維持することができる。
【００５２】
更に、前記目標値変更手段は、
前記第２値を、前記取得された第２極値（ｋ２（１））と前記第１値との間の値に設定するように構成されることが好ましい。
【００５３】
これによれば、第２値は、「その第２値を目標値として設定する時点の直前に目標値として設定されていた第１値と、第２値を目標値として設定する時点の直前に取得された第２極値（ｋ２（１））と、の間の値」に設定される。この結果、目標値と基準値との差の絶対値を時間の経過とともに減少させる（目標値を基準値に確実に近づける）ことができる。
【００５４】
更に、前記目標値変更手段は、
前記第２極値が取得された時点である第２極値取得時点以降において取得される前記第１極値ｋ１（２）と前記基準値との差の絶対値が、前記第２極値取得時点以前において取得された前記第１極値ｋ１（１）と前記基準値との差の絶対値よりも小さくなるように、前記第２値を設定することが好ましい。
【００５５】
これによれば、第１極値と基準値Ｖｆとの差の絶対値は、第１極値が取得される毎に次第に小さくなる（即ち、｜ｋ１（１）−Ｖｆ｜＞｜ｋ１（２）−Ｖｆ｜）。この結果、下流側空燃比センサの出力値を基準値へと確実に近づけることができる。
【００５６】
この空燃比制御装置の具体的な態様における前記目標値変更手段は、
前記極値取得手段により前記第１極値（ｋ１（１））が取得された場合に、
「その取得された第１極値（ｋ１（１））と前記基準値との差の絶対値」が正の第１閾値よりも大きいとき「前記第１値を前記目標値として設定」し、
「その取得された第１極値（ｋ１（１））と前記基準値との差の絶対値」が前記第１閾値以下であるとき「前記基準値を前記目標値として設定する」ように構成される。
【００５７】
下流側空燃比センサの出力値が基準値の近傍において変動している場合、触媒は浄化すべき物質を適切に浄化していると考えられる。従って、下流側空燃比センサの出力値が基準値の近傍において変動している場合、目標値を基準値と相違する値（現時点の下流側空燃比センサの出力値と基準値との間の値）に設定する必要性はない。一方、下流側空燃比センサの出力値と基準値との差の絶対値が大きい場合、下流側空燃比センサに過剰な酸素又は過剰な未燃物が大量に到達したことを意味する。この場合、触媒流出ガスの空燃比の変化タイミングに対する下流側空燃比センサの出力値の変化タイミングは、一層遅れる。これは、下流側空燃比センサの周囲に、過去に到達した多量の酸素又は多量の未燃物が残存するからであると推定される。
【００５８】
これに対し、上記構成によれば、下流側空燃比センサの出力値と基準値との差の絶対値が前記第１閾値よりも大きくなった場合にのみ、目標値が基準値とは相違する値から基準値に向けて変更される。換言すると、下流側空燃比センサの応答性が事実上低下している場合にのみ、目標値が基準値に向けて変更させられる。この結果、「目標値を基準値に向けて変更させることに起因して、却ってエミッションを悪化させること」が回避されるので、エミッションを良好に維持することができる。
【００５９】
更に、具体的には、前記目標値変更手段は、
前記第１極値（ｋ１（１））に比べて正の第１変更値（Ａ）だけ前記基準値に近い値（Ｘ１）を前記第１値として設定し、且つ、前記第２極値（ｋ２（１））に比べて正の第２変更値（Ｂ）だけ前記基準値から遠い値（Ｘ２）を前記第２値として設定するように構成され、
前記第１変更値（Ａ）は前記第１閾値（Ａ）以下であり、且つ、
前記第２変更値（Ｂ）は前記第１変更値（Ａ）よりも小さいことが望ましい。
なお、図６の例において第１変更値（Ａ）は値Ａ１であり、第２変更値（Ｂ）は値Ｂ１である。図７の例において第１変更値（Ａ）は値Ａ２であり、第２変更値（Ｂ）は値Ｂ２である。
【００６０】
例えば、第１極値（ｋ１（１））が基準値Ｖｆよりも大きいとき第１値（Ｘ１）は値（ｋ１（１）−Ａ）であり、第１極値（ｋ１（１））が基準値Ｖｆよりも小さいとき第１値（Ｘ１）は値（ｋ１（１）＋Ａ）である。
更に、第２極値（ｋ２（１））が基準値Ｖｆよりも大きいとき第２値（Ｘ２）は値（ｋ２（１））＋Ｂ）であり、第２極値（ｋ２（１））が基準値Ｖｆよりも小さいとき第２値（Ｘ２）は値（ｋ２（１）−Ｂ）である。
【００６１】
本発明装置の他の目的、他の特徴及び付随する利点は、以下の図面を参照しつつ記述される本発明装置の各実施形態についての説明から容易に理解されるであろう。
【図面の簡単な説明】
【００６２】
【図１】図１は、本発明の第１実施形態に係る内燃機関の空燃比制御装置（第１制御装置）を適用した内燃機関の概略図である。
【図２】図２は、図１に示した上流側空燃比センサの出力値と空燃比との関係を示したグラフである。
【図３】図３は、図１に示した下流側空燃比センサの出力値と空燃比との関係を示したグラフである。
【図４】図４の（Ａ）〜（Ｃ）は、第１制御装置が採用した「目標値の設定方法及び要求空燃比の決定方法」を説明するための図である。
【図５】図５の（Ａ）〜（Ｃ）は、第１制御装置が採用した「目標値の設定方法及び要求空燃比の決定方法」を説明するための図である。
【図６】図６は、第１制御装置による空燃比制御の様子を示したタイムチャートである。
【図７】図７は、第１制御装置による空燃比制御の様子を示したタイムチャートである。
【図８】図８は、第１制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図９】図９は、第１制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図１０】図１０は、第１制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図１１】図１１は、第１制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図１２】図１２は、第１制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図１３】図１３は、第１制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図１４】図１４は、本発明の第２実施形態に係る空燃比制御装置（第２制御装置）のＣＰＵが実行するルーチンを示したフローチャートである。
【図１５】図１５は、本発明の第３実施形態に係る空燃比制御装置（第３制御装置）のＣＰＵが実行するルーチンを示したフローチャートである。
【図１６】図１６は、本発明の第４実施形態に係る空燃比制御装置（第４制御装置）のＣＰＵが実行するルーチンを示したフローチャートである。
【図１７】図１７は、本発明の第５実施形態に係る空燃比制御装置（第５制御装置）のＣＰＵが実行するルーチンを示したフローチャートである。
【図１８】図１８は、本発明の第６実施形態に係る空燃比制御装置（第６制御装置）のＣＰＵが実行するルーチンを示したフローチャートである。
【図１９】図１９は、本発明の第８実施形態に係る空燃比制御装置（第８制御装置）のＣＰＵが実行するルーチンを示したフローチャートである。
【図２０】図２０は、第８制御装置の作動を説明するためのタイムチャートである。
【図２１】図２１は、第８制御装置の作動を説明するためのタイムチャートである。
【図２２】図２２は、本発明の第９実施形態に係る空燃比制御装置（第９制御装置）の作動を説明するためのタイムチャートである。
【図２３】図２３は、第９制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図２４】図２４は、本発明の第１０実施形態に係る空燃比制御装置（第１０制御装置）のＣＰＵが実行するルーチンを示したフローチャートである。
【図２５】図２５は、第１０制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図２６】図２６は、第１０制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図２７】図２７は、本発明の第１１実施形態に係る空燃比制御装置（第１１制御装置）のＣＰＵが実行するルーチンを示したフローチャートである。
【図２８】図２８は、従来の空燃比制御装置の作動を説明するためのタイムチャートである。
【発明を実施するための形態】
【００６３】
以下、本発明による内燃機関の空燃比制御装置の各実施形態について図面を参照しつつ説明する。
【００６４】
＜第１実施形態＞
（構成）
図１は、本発明の第１実施形態に係る空燃比制御装置（以下、「第１制御装置」とも称呼する。）が適用される内燃機関１０の概略構成を示している。機関１０は、４サイクル・火花点火式・多気筒（本例において４気筒）・ガソリン燃料機関である。機関１０は、本体部２０、吸気系統３０及び排気系統４０を備えている。
【００６５】
本体部２０は、シリンダブロック部とシリンダヘッド部とを備えている。本体部２０は、ピストン頂面、シリンダ壁面及びシリンダヘッド部の下面からなる複数（４個）の燃焼室（第１気筒＃１乃至第４気筒＃４）２１を備えている。
【００６６】
シリンダヘッド部には、複数の吸気ポート２２と複数の排気ポート２３とが形成されている。各吸気ポート２２は、各燃焼室（各気筒）２１に「空気及び燃料からなる混合気」を供給するように各燃焼室２１に接続されている。吸気ポート２２は図示しない吸気弁により開閉される。各排気ポート２３は、各燃焼室２１から排ガス（既燃ガス）を排出するように各燃焼室２１に接続されている。排気ポート２３は図示しない排気弁により開閉される。
【００６７】
シリンダヘッド部には複数（４個）の点火プラグ２４が固定されている。各点火プラグ２４は、その火花発生部が各燃焼室２１の中央部であってシリンダヘッド部の下面近傍位置に露呈するように配設されている。各点火プラグ２４は、点火信号に応答して火花発生部から点火用火花を発生するようになっている。
【００６８】
シリンダヘッド部には更に複数（４個）の燃料噴射弁（インジェクタ）２５が固定されている。燃料噴射弁２５は、各吸気ポート２２に一つずつ（即ち、一つの気筒に対して一つ）設けられている。燃料噴射弁２５は、噴射指示信号に応答し、「その噴射指示信号に含まれる指示燃料噴射量Ｆｉの燃料」を対応する吸気ポート２２内に噴射するようになっている。
【００６９】
更に、シリンダヘッド部には、吸気弁制御装置２６が設けられている。この吸気弁制御装置２６は、インテークカムシャフト（図示せず）とインテークカム（図示せず）との相対回転角度（位相角度）を油圧により調整・制御する周知の構成を備えている。吸気弁制御装置２６は、指示信号（駆動信号）に基いて作動し、吸気弁の開弁タイミング（吸気弁開弁タイミング）を変更することができるようになっている。
【００７０】
吸気系統３０は、インテークマニホールド３１、吸気管３２、エアフィルタ３３、スロットル弁３４及びスロットル弁アクチュエータ３４ａを備えている。
【００７１】
インテークマニホールド３１は、各吸気ポート２２に接続された複数の枝部と、それらの枝部が集合したサージタンク部と、を備えている。吸気管３２はサージタンク部に接続されている。インテークマニホールド３１、吸気管３２及び複数の吸気ポート２２は、吸気通路を構成している。エアフィルタ３３は吸気管３２の端部に設けられている。スロットル弁３４はエアフィルタ３３とインテークマニホールド３１との間の位置において吸気管３２に回動可能に取り付けられている。スロットル弁３４は、回動することにより吸気管３２が形成する吸気通路の開口断面積を変更するようになっている。スロットル弁アクチュエータ３４ａは、ＤＣモータからなり、指示信号（駆動信号）に応答してスロットル弁３４を回動させるようになっている。
【００７２】
排気系統４０は、エキゾーストマニホールド４１、エキゾーストパイプ（排気管）４２、上流側触媒４３及び下流側触媒４４を備えている。
【００７３】
エキゾーストマニホールド４１は、各排気ポート２３に接続された複数の枝部４１ａと、それらの枝部４１ａが集合した集合部（排気集合部）４１ｂと、を含む。エキゾーストパイプ４２は、エキゾーストマニホールド４１の集合部４１ｂに接続されている。エキゾーストマニホールド４１、エキゾーストパイプ４２及び複数の排気ポート２３は、排ガスが通過する通路を構成している。なお、本明細書において、エキゾーストマニホールド４１の集合部４１ｂ及びエキゾーストパイプ４２により形成される通路を、便宜上、「排気通路」と称呼する。
【００７４】
上流側触媒（排気浄化用の触媒装置（ユニット））４３は、セラミックを含む担持体に「触媒物質である貴金属」及び「酸素吸蔵物質であるセリア（Ｃｅ０２）」を担持していて、酸素吸蔵・放出機能（酸素吸蔵機能）を有する三元触媒である。上流側触媒４３はエキゾーストパイプ４２に配設（介装）されている。上流側触媒４３は所定の活性温度に到達すると、「未燃物（ＨＣ、ＣＯ及びＨ２等）と窒素酸化物（ＮＯｘ）とを同時に浄化する触媒機能」及び「酸素吸蔵機能」を発揮する。上流側触媒４３は、スタート・キャタリティック・コンバータ（ＳＣ）又は第１触媒とも称呼される。
【００７５】
下流側触媒４４は、上流側触媒４３と同様の三元触媒である。下流側触媒４４は、上流側触媒４３よりも下流においてエキゾーストパイプ４２に配設（介装）されている。下流側触媒４４は、車両のフロア下方に配設されているため、アンダ・フロア・キャタリティック・コンバータ（ＵＦＣ）又は第２触媒とも称呼される。なお、本明細書において、単に「触媒」と言うとき、その「触媒」は上流側触媒４３を意味する。
【００７６】
第１制御装置は、熱線式エアフローメータ５１、スロットルポジションセンサ５２、機関回転速度センサ５３、水温センサ５４、上流側空燃比センサ５５、下流側空燃比センサ５６及びアクセル開度センサ５７を備えている。
【００７７】
熱線式エアフローメータ５１は、吸気管３２内を流れる吸入空気の質量流量を検出し、その質量流量（機関１０の単位時間あたりの吸入空気量）Ｇａを表す信号を出力するようになっている。
【００７８】
スロットルポジションセンサ５２は、スロットル弁３４の開度を検出し、スロットル弁開度ＴＡを表す信号を出力するようになっている。
【００７９】
機関回転速度センサ５３は、インテークカムシャフトが５°回転する毎に幅狭のパルスを有するとともにインテークカムシャフトが３６０°回転する毎に幅広のパルスを有する信号を出力するようになっている。機関回転速度センサ５３から出力される信号は後述する電気制御装置６０により機関回転速度ＮＥを表す信号に変換されるようになっている。更に、電気制御装置６０は、機関回転速度センサ５３及び図示しないカムポジションセンサからの信号に基いて、機関１０のクランク角度（絶対クランク角）を取得するようになっている。
【００８０】
水温センサ５４は、内燃機関１０の冷却水の温度を検出し、冷却水温ＴＨＷを表す信号を出力するようになっている。
【００８１】
上流側空燃比センサ５５は、エキゾーストマニホールド４１の集合部４１ｂと上流側触媒４３との間の位置においてエキゾーストマニホールド４１及びエキゾーストパイプ４２の何れか（即ち、排気通路）に配設されている。上流側空燃比センサ５５は、例えば、特開平１１−７２４７３号公報、特開２０００−６５７８２号公報及び特開２００４−６９５４７号公報等に開示された「拡散抵抗層を備える限界電流式広域空燃比センサ」である。
【００８２】
上流側空燃比センサ５５は、図２に示したように、上流側空燃比センサ５５の配設位置を流れる排ガスの空燃比に応じた出力値Ｖａｂｙｆｓを出力する。上流側空燃比センサ５５の配設位置を流れる排ガスは、触媒４３に流入するガスであり、「触媒流入ガス」とも称呼される。触媒流入ガスの空燃比は「検出上流側空燃比ａｂｙｆｓ」とも称呼される。出力値Ｖａｂｙｆｓは触媒流入ガスの空燃比が大きくなるほど（即ち、触媒流入ガスの空燃比がリーン側の空燃比になるほど）増大する。
【００８３】
電気制御装置６０は、図２に示した空燃比変換テーブル（マップ）Ｍａｐａｂｙｆｓを記憶している。電気制御装置６０は、出力値Ｖａｂｙｆｓを空燃比変換テーブルＭａｐａｂｙｆｓに適用することにより、実際の上流側空燃比ａｂｙｆｓを検出する（検出上流側空燃比ａｂｙｆｓを取得する）ようになっている。
【００８４】
再び、図１を参照すると、下流側空燃比センサ５６は、上流側触媒４３と下流側触媒４４との間の位置においてエキゾーストパイプ４２（即ち、排気通路）に配設されている。下流側空燃比センサ５６は、周知の「濃淡電池型の酸素濃度センサ（Ｏ２センサ）」である。
【００８５】
下流側空燃比センサ５６は、例えば、ジルコニアを含む固体電解質層（酸素分圧に応じた出力値を示す素子）と、固体電解質層の外側に形成された排ガス側電極層と、大気室（固体電解質層の内側）に露呈し且つ固体電解室層を挟んで排ガス側電極層と対向するように固体電解質層の内側に形成された大気側電極層と、排ガス側電極層を覆い且つ排ガスが接触する（排ガス中に晒されるように配置される）拡散抵抗層と、を備える。固体電解質層は試験管状であってもよく、板状であってもよい。更に、下流側空燃比センサ５６は、固体電解質層、排ガス側電極層、大気側電極層及び拡散抵抗層を含む素子部を覆う保護カバーを備える。保護カバーは金属からなり、貫通孔を複数備える。保護カバーの外部に到達した排ガスは、その貫通孔を通って素子部の外部に到達する。拡散抵抗層は、下流側空燃比センサ５６の外周部に到達したガスを酸素平衡後のガス（存在する未燃物を存在する酸素と結合させた後のガスであって、過剰な未燃物又は過剰な酸素のみを含むガス）に変化させる。
【００８６】
下流側空燃比センサ５６は、下流側空燃比センサ５６の配設位置を流れる排ガスの空燃比（下流側空燃比ａｆｄｏｗｎ）に応じた出力値Ｖｏｘｓを出力するようになっている。
【００８７】
下流側空燃比センサ５６の出力値Ｖｏｘｓは、図３に示したように、下流側空燃比センサの素子（実際には排ガス側電極層）に到達したガス（素子到達ガス）の空燃比が理論空燃比よりもリッチ側の空燃比であって、下流側空燃比センサ５６に到達したガスの酸化平衡（酸素平衡）後のガスの酸素分圧が小さいとき最大出力値Ｍａｘ（例えば、約０．９Ｖ又は１．０Ｖ）近傍の値となる。即ち、下流側空燃比センサ５６は、触媒流出ガスに過剰の酸素が全く含まれていない状態が所定時間以上継続しているときに最大出力値Ｍａｘを出力する。
【００８８】
更に、出力値Ｖｏｘｓは、素子到達ガスの空燃比が理論空燃比よりもリーン側の空燃比であって、下流側空燃比センサ５６に到達したガスの酸化平衡後のガスの酸素分圧が大きいとき最小出力値Ｍｉｎ（例えば、約０．１Ｖ又は０Ｖ）近傍の値となる。即ち、下流側空燃比センサ５６は、触媒流出ガスに「多量の過剰酸素」が含まれている状態が所定時間以上継続しているときに最小出力値Ｍｉｎを出力する。
【００８９】
この出力値Ｖｏｘｓは、触媒流出ガスの空燃比が理論空燃比よりもリッチ側の空燃比からリーン側の空燃比へと変化した場合、最大出力値Ｍａｘ近傍値から最小出力値Ｍｉｎ近傍値へと急激に減少する。逆に、出力値Ｖｏｘｓは、触媒流出ガスの空燃比が理論空燃比よりもリーン側の空燃比からリッチ側の空燃比へと変化した場合、最小出力値Ｍｉｎ近傍値から最大出力値Ｍａｘ近傍値へと急激に増大する。出力値Ｖｏｘｓは、素子到達ガスの酸素分圧が、「素子到達ガスの空燃比が理論空燃比であるときの酸素分圧」であるとき、下流側空燃比センサ５６の最大出力値Ｍａｘと最小出力値Ｍｉｎとの中央の値Ｖｍｉｄ（中央値Ｖｍｉｄ＝（Ｍａｘ＋Ｍｉｎ）／２）に実質的に一致する。
【００９０】
図１に示したアクセル開度センサ５７は、運転者によって操作されるアクセルペダルＡＰの操作量を検出し、アクセルペダルＡＰの操作量Ａｃｃｐを表す信号を出力するようになっている。
【００９１】
電気制御装置６０は、「ＣＰＵ、ＲＯＭ、ＲＡＭ、バックアップＲＡＭ、並びに、ＡＤコンバータを含むインターフェース等」を含む「周知のマイクロコンピュータ」を備える電気回路である。
【００９２】
電気制御装置６０が備えるバックアップＲＡＭは、機関１０を搭載した車両の図示しないイグニッション・キー・スイッチの位置（オフ位置、始動位置及びオン位置等の何れか）に関わらず、車両に搭載されたバッテリから電力の供給を受けるようになっている。バックアップＲＡＭは、バッテリから電力の供給を受けている場合、ＣＰＵの指示に応じてデータを格納する（データが書き込まれる）とともに、そのデータを読み出し可能となるように保持（記憶）する。バックアップＲＡＭは、バッテリが車両から取り外される等によりバッテリからの電力供給が遮断されると、データを保持することができない。即ち、それまでに保持していたデータが消失（破壊）される。
【００９３】
電気制御装置６０のインターフェースは、前記センサ５１〜５７と接続され、ＣＰＵにセンサ５１〜５７からの信号を供給するようになっている。更に、そのインターフェースは、ＣＰＵの指示に応じて、各気筒の点火プラグ２４、各気筒の燃料噴射弁２５、吸気弁制御装置２６及びスロットル弁アクチュエータ３４ａ等に指示信号（駆動信号）等を送出するようになっている。なお、電気制御装置６０は、取得されたアクセルペダルの操作量Ａｃｃｐが大きくなるほどスロットル弁開度ＴＡが大きくなるように、スロットル弁アクチュエータ３４ａに指示信号を送出するようになっている。
【００９４】
（第１制御装置による空燃比制御の概要）
次に、上記第１制御装置による「空燃比のフィードバック制御」の概要について説明する。第１制御装置は、以下に述べる＜判定方法＞に従って、目標値ＶＲＥＦを決定するとともに空燃比の判定を行い、その空燃比の判定に基いて「リーン要求及びリッチ要求」の何れの空燃比要求が発生しているかを決定する。
【００９５】
なお、以下に述べる＜判定方法＞において使用される基準値Ｖｆは、下流側空燃比センサの出力値Ｖｏｘｓの最終的な目標値ＶＲＥＦである。基準値Ｖｆは、中央値Ｖｍｉｄ又は中央値Ｖｍｉｄ近傍の値に設定されている。即ち、基準値Ｖｆは、空燃比の変化に対して出力値Ｖｏｘｓの変化が最も大きくなる領域内の値（図３の高感度領域内の値）となるように設定されている。換言すると、基準値Ｖｆは、下流側空燃比センサ５６の素子（固体電解質層、実際には、排ガス側電極層）に到達しているガス（素子到達ガス）の酸素分圧が、素子到達ガスの空燃比が理論空燃比であるときの酸素分圧であるときに、下流側空燃比センサの出力値Ｖｏｘｓが示す値（例えば、中央値Ｖｍｉｄ）を含む所定の範囲（Ｖｍｉｄ−Δｖ２〜Ｖｍｉｄ＋Δｖ１）内の値である。
【００９６】
空燃比の判定は、後述するように、下流側空燃比センサの出力値Ｖｏｘｓと目標値ＶＲＥＦとの比較に基いて行われる判定である。
【００９７】
空燃比の判定がリッチであるとき、触媒４３の状態は酸素が不足している状態（酸素吸蔵量ＯＳＡが所定値ＯＳＡｍｉｎよりも小さい状態）である。従って、空燃比の判定がリッチであるとき、触媒４３が「浄化すべき物質」を高い浄化効率にて浄化するためには、触媒流入ガスの空燃比（従って、機関の空燃比）をリーン空燃比に設定する必要がある。そこで、第１制御装置は、空燃比の判定がリッチであるとき、リーン要求が発生していると判定する。リーン要求が発生しているとき、機関の空燃比は増大させられる。即ち、機関の空燃比は、理論空燃比よりも大きい空燃比である「リーン空燃比」になるように制御される。
【００９８】
空燃比の判定がリーンであるとき、触媒４３の状態は酸素が過剰になっている状態（酸素吸蔵量ＯＳＡが前記所定値ＯＳＡｍｉｎよりも大きい別の所定値ＯＳＡｍａｘよりも大きい状態）である。従って、空燃比の判定がリーンであるとき、触媒４３が「浄化すべき物質」を高い浄化効率にて浄化するためには、触媒流入ガスの空燃比（従って、機関の空燃比）をリッチ空燃比に設定する必要がある。そこで、第１制御装置は、空燃比の判定がリーンであるとき、リッチ要求が発生していると判定する。リッチ要求が発生しているとき、機関の空燃比は減少させられる。即ち、機関の空燃比は、理論空燃比よりも小さい空燃比である「リッチ空燃比」になるように制御される。
【００９９】
＜判定方法＞
第１制御装置は、出力値Ｖｏｘｓが目標値ＶＲＥＦよりも大きいとき、空燃比は「リッチ」であると判定する。従って、第１制御装置は、出力値Ｖｏｘｓが目標値ＶＲＥＦよりも大きいとき、リーン要求が発生していると判定する。
第１制御装置は、出力値Ｖｏｘｓが目標値ＶＲＥＦよりも小さいとき、空燃比は「リーン」であると判定する。従って、第１制御装置は、出力値Ｖｏｘｓが目標値ＶＲＥＦよりも小さいとき、リッチ要求が発生していると判定する。
【０１００】
第１制御装置は、出力値Ｖｏｘｓの「極大値Ｖｍａｘ及び極小値Ｖｍｉｎ」を取得する。第１制御装置は、現時点においてリーン要求が発生しているか（即ち、機関の空燃比がリーン空燃比に設定されているか）又はリッチ要求が発生しているか（即ち、機関の空燃比がリッチ空燃比に設定されているか）に基いて、下記の表１のように目標値ＶＲＥＦ（判定閾値ＶＲＥＦ）を「極大値Ｖｍａｘ及び極小値Ｖｍｉｎ」に応じて決定する。
【表１】
2011148517.tif 000003
【０１０１】
以下、上記表１について説明を加える。
（１）現時点の空燃比が「リッチ」であると判定され、従って、リーン要求が発生している場合（機関の空燃比が増大されている場合）。
下流側空燃比センサの出力値Ｖｏｘｓが目標値ＶＲＥＦよりも小さい値から大きい値へと変化したとき、空燃比はリッチに変化した（リーン要求が発生した）と判定される。リーン要求が発生していると、機関の空燃比が増大させられるので触媒流入ガスの空燃比は増大させられ、触媒４３に多量の酸素が流入する。従って、リーン要求が所定時間継続すると、触媒４３の下流に酸素が流出し始める。この結果、下流側空燃比センサの出力値Ｖｏｘｓは、リーン要求が発生している期間において、増大した後に減少し始める。第１制御装置は、この出力値Ｖｏｘｓの極大値Ｖｍａｘを取得する。
【０１０２】
（１−１）極大値Ｖｍａｘが基準値Ｖｆよりも大きい場合。
（１−１ａ）「極大値Ｖｍａｘから正の一定値Ａ１（正の第１閾値）を減じた値（Ｖｍａｘ−Ａ１）」が基準値Ｖｆよりも大きいとき、第１制御装置は「値（Ｖｍａｘ−Ａ１）」を目標値ＶＲＥＦとして設定する（図４の（Ａ）を参照。）。極大値Ｖｍａｘから減算される値Ａ１は、第１変更値とも称呼される。
（１−１ｂ）「極大値Ｖｍａｘから正の一定値Ａ１（正の第１閾値）を減じた値（Ｖｍａｘ−Ａ１）」が基準値Ｖｆよりも小さいとき、第１制御装置は基準値Ｖｆを目標値ＶＲＥＦとして設定する（図４の（Ｂ）を参照。）。
【０１０３】
（１−２）極大値Ｖｍａｘが基準値Ｖｆよりも小さい場合。
第１制御装置は「極大値Ｖｍａｘから正の一定値Ｂ２を減じた値（Ｖｍａｘ−Ｂ２）」を目標値ＶＲＥＦとして設定する（図４の（Ｃ）を参照。）。値Ｂ２は、第２変更値とも称呼される。
【０１０４】
なお、リーン要求が発生している場合にリッチ要求へと空燃比要求が変化したか否かを判定するために設定される目標値ＶＲＥＦ（空燃比がリッチであると判定されている場合に空燃比がリーンへと変化したか否かを判定するために設定される目標値ＶＲＥＦ）は、「リーン判定用目標値ＶＲＥＦＬ、又は、リーン判定用閾値ＶＲＥＦＬ」とも称呼される。
【０１０５】
（２）現時点の空燃比が「リーン」であると判定され、従って、リッチ要求が発生している場合（機関の空燃比が減少されている場合）。
下流側空燃比センサの出力値Ｖｏｘｓが目標値ＶＲＥＦよりも大きい値から小さい値へと変化したとき、空燃比はリーンに変化した（リッチ要求が発生した）と判定される。リッチ要求が発生していると、機関の空燃比が減少させられるので触媒流入ガスの空燃比は減少させられ、触媒４３に多量の未燃物が流入する。従って、リッチ要求が所定時間継続すると、触媒４３の下流に未燃物が流出し始め、酸素は殆ど流出しなくなる。この結果、下流側空燃比センサの出力値Ｖｏｘｓは、リッチ要求が発生している期間において、減少した後に増大し始める。第１制御装置は、この出力値Ｖｏｘｓの極小値Ｖｍｉｎを取得する。
【０１０６】
（２−１）極小値Ｖｍｉｎが基準値Ｖｆよりも小さい場合。
（２−１ａ）「極小値Ｖｍｉｎに正の一定値Ａ２（正の第１閾値）を加えた値（Ｖｍｉｎ＋Ａ２）」が基準値Ｖｆよりも小さいとき、第１制御装置は「値（Ｖｍｉｎ＋Ａ２）」を目標値ＶＲＥＦとして設定する（図５の（Ａ）を参照。）。極小値Ｖｍｉｎに加算される値Ａ２は、第１変更値とも称呼される。
（２−１ｂ）「極小値Ｖｍｉｎに正の一定値Ａ２（正の第１閾値）を加えた値（Ｖｍｉｎ＋Ａ２）」が基準値Ｖｆよりも大きいとき、第１制御装置は基準値Ｖｆを目標値ＶＲＥＦとして設定する（図５の（Ｂ）を参照。）。
【０１０７】
（２−２）極小値Ｖｍｉｎが基準値Ｖｆよりも大きい場合。
第１制御装置は「極小値Ｖｍｉｎに正の一定値Ｂ１を加えた値（Ｖｍｉｎ＋Ｂ１）」を目標値ＶＲＥＦとして設定する（図５の（Ｃ）を参照。）。値Ｂ１は、第２変更値とも称呼される。
【０１０８】
なお、リッチ要求が発生している場合にリーン要求へと空燃比要求が変化したか否かを判定するために設定される目標値ＶＲＥＦ（空燃比がリーンであると判定されている場合に空燃比がリッチへと変化したか否かを判定するために設定される目標値ＶＲＥＦ）は、「リッチ判定用目標値ＶＲＥＦＲ、又は、リッチ判定用閾値ＶＲＥＦＲ」とも称呼される。
【０１０９】
上記Ａ１，Ａ２，Ｂ１，Ｂ２の関係は以下の通りである。
値Ａ１は値Ｂ１よりも正の所定値以上大きい（Ａ１＞Ｂ１＞０、図５の（Ｃ）を参照。）。但し、値Ａ１は最大出力値Ｍａｘと基準値Ｖｆとの差の絶対値よりも正の所定値ｅ１だけ小さい。前述したように、値Ａ１は第１変更値とも称呼され、値Ｂ１は第２変更値とも称呼される。
値Ａ２は値Ｂ２よりも正の所定値以上大きい（Ａ２＞Ｂ２＞０、図４の（Ｃ）を参照。）但し、値Ａ２は最小出力値Ｍｉｎと基準値Ｖｆとの差の絶対値よりも正の所定値ｅ２だけ小さい。前述したように、値Ａ２は第１変更値とも称呼され、値Ｂ２は第２変更値とも称呼される。
値Ａ１と値Ａ２とは、互いに等しい値Ａであってもよい。
値Ｂ１と値Ｂ２とは、互いに等しい値Ｂであってもよい。
【０１１０】
＜空燃比制御状況＞
次に、上記判定方法に基く空燃比制御の状況について説明する。図６は、時刻ｔ１以前において触媒４３の酸素吸蔵量ＯＳＡが小さくなり、その結果、下流側空燃比センサの出力値Ｖｏｘｓが基準値Ｖｆよりも相当に大きくなった場合の「出力値Ｖｏｘｓ及び要求空燃比等」の変化を示している。
【０１１１】
より具体的に述べると、図６に示した例においては、時刻ｔ１以前にて空燃比は「リッチ」と判定されており、リーン要求が発生したと判定されている。従って、機関の空燃比は増大させられている。このため、酸素吸蔵量ＯＳＡは次第に増大し、時刻ｔ１以降において触媒４３から酸素が流出し始める。この結果、出力値Ｖｏｘｓは時刻ｔ１にて極大値Ｖｍａｘ（＝Ｖｍａｘ（１））をとった後、減少する。
【０１１２】
第１制御装置は、この極大値Ｖｍａｘ（＝Ｖｍａｘ（１））を取得する。極大値Ｖｍａｘ（＝Ｖｍａｘ（１））は、最大出力値Ｍａｘに近い値である。よって、極大値Ｖｍａｘ（＝Ｖｍａｘ（１））から値Ａ１を減じた値（Ｖｍａｘ（１）−Ａ１）は基準値Ｖｆよりも大きい。この結果、上記判定方法に基き、値（Ｖｍａｘ−Ａ１＝Ｖｍａｘ（１）−Ａ１）が目標値ＶＲＥＦ（リーン判定用目標値ＶＲＥＦＬ）として設定される（点Ｐ１を参照。）。
【０１１３】
その後、時刻ｔ２になると、出力値Ｖｏｘｓは「目標値ＶＲＥＦ（＝Ｖｍａｘ（１）−Ａ１）」よりも小さくなる。従って、第１制御装置は、空燃比が「リーン」であると判定し、「リッチ要求」が発生したと判定する。よって、時刻ｔ２以降において、機関の空燃比は減少され始める。
【０１１４】
この結果、触媒４３には過剰な未燃物が流入する。従って、時刻ｔ２から所定時間が経過すると、触媒４３から流出する未燃物の量が増大し始める。よって、出力値Ｖｏｘｓは時刻ｔ３にて極小値Ｖｍｉｎ（＝Ｖｍｉｎ（１））をとった後、増大する。
【０１１５】
第１制御装置は、この極小値Ｖｍｉｎ（＝Ｖｍｉｎ（１））を取得する。図６に示した例において、極小値Ｖｍｉｎ（＝Ｖｍｉｎ（１））は基準値Ｖｆよりも大きい。よって、上記判定方法に基き、「極小値Ｖｍｉｎ（＝Ｖｍｉｎ（１））に値Ｂ１を加えた値（Ｖｍｉｎ（１）＋Ｂ１）」が「目標値ＶＲＥＦ（リッチ判定用目標値ＶＲＥＦＲ）」として設定される（点Ｐ２を参照。）。
【０１１６】
その後、時刻ｔ４になると、出力値Ｖｏｘｓは「目標値ＶＲＥＦ（＝Ｖｍｉｎ（１）＋Ｂ１）」よりも大きくなる。従って、第１制御装置は、空燃比が「リッチ」であると判定し、「リーン要求」が発生したと判定する。よって、時刻ｔ４以降において、機関の空燃比は増大され始める。
【０１１７】
この結果、触媒４３には過剰な酸素が流入する。従って、時刻ｔ４から所定時間が経過すると、触媒４３から流出する酸素の量が増大し始める。よって、出力値Ｖｏｘｓは時刻ｔ５にて極大値Ｖｍａｘ（＝Ｖｍａｘ（２））をとった後、減少する。
【０１１８】
第１制御装置は、この極大Ｖｍａｘ（＝Ｖｍａｘ（２））を取得する。図６に示した例において、極大値Ｖｍａｘ（＝Ｖｍａｘ（２））から値Ａ１を減じた値（Ｖｍａｘ（２）−Ａ１）は基準値Ｖｆよりも大きい。この結果、上記判定方法に基き、値（Ｖｍａｘ−Ａ１＝Ｖｍａｘ（２）−Ａ１）が目標値ＶＲＥＦ（リーン判定用目標値ＶＲＥＦＬ）として設定される（点Ｐ３を参照。）。
【０１１９】
その後、時刻ｔ６になると、出力値Ｖｏｘｓは「目標値ＶＲＥＦ（＝Ｖｍａｘ（２）−Ａ１）」よりも小さくなる。従って、第１制御装置は、空燃比が「リーン」であると判定し、「リッチ要求」が発生したと判定する。よって、時刻ｔ６以降において、機関の空燃比は減少され始める。
【０１２０】
この結果、触媒４３には過剰な未燃物が流入する。従って、時刻ｔ６から所定時間が経過すると、触媒４３から流出する未燃物の量が増大し始める。よって、出力値Ｖｏｘｓは時刻ｔ７にて極小値Ｖｍｉｎ（＝Ｖｍｉｎ（２））をとった後、増大する。
【０１２１】
第１制御装置は、この極小値Ｖｍｉｎ（＝Ｖｍｉｎ（２））を取得する。図６に示した例において、極小値Ｖｍｉｎ（＝Ｖｍｉｎ（２））は基準値Ｖｆよりも小さく、且つ、極小値Ｖｍｉｎ（＝Ｖｍｉｎ（２））に値Ａ２を加えた値（Ｖｍｉｎ（２）＋Ａ２）」は基準値Ｖｆよりも大きい。この結果、上記判定方法に基き、基準値Ｖｆが目標値ＶＲＥＦ（リッチ判定用目標値ＶＲＥＦＲ）として設定される（点Ｐ４を参照。）。
【０１２２】
その後、時刻ｔ８になると、出力値Ｖｏｘｓは「目標値ＶＲＥＦ（＝Ｖｆ）」よりも大きくなる。従って、第１制御装置は、空燃比が「リッチ」であると判定し、「リーン要求」が発生したと判定する。よって、時刻ｔ８以降において、機関の空燃比は増大され始める。
【０１２３】
この結果、触媒４３には過剰な酸素が流入する。従って、時刻ｔ８から所定時間が経過すると、触媒４３から流出する酸素の量が増大し始める。よって、出力値Ｖｏｘｓは時刻ｔ９にて極大値Ｖｍａｘ（＝Ｖｍａｘ（３））をとった後、減少する。
【０１２４】
第１制御装置は、この極大値Ｖｍａｘ（＝Ｖｍｉｎ（３））を取得する。図６に示した例において、極大値Ｖｍａｘ（＝Ｖｍａｘ（３））は基準値Ｖｆよりも大きいが、極大値Ｖｍａｘ（＝Ｖｍａｘ（３））から値Ａ１を減じた値（Ｖｍｉｎ（３）−Ａ１）」は基準値Ｖｆよりも小さい。この結果、上記判定方法に基き、基準値Ｖｆが目標値ＶＲＥＦ（リーン判定用目標値ＶＲＥＦＬ）として設定される（点Ｐ５を参照。）。
【０１２５】
その後、時刻ｔ１０になると、出力値Ｖｏｘｓは「目標値ＶＲＥＦ（＝Ｖｆ）」よりも小さくなる。従って、第１制御装置は、空燃比が「リーン」であると判定し、「リッチ要求」が発生したと判定する。よって、時刻ｔ１０以降において、機関の空燃比は減少され始める。
【０１２６】
この結果、触媒４３には過剰な未燃物が流入する。従って、時刻ｔ１０から所定時間が経過すると、触媒４３から流出する未燃物の量が増大し始める。よって、出力値Ｖｏｘｓは再び増大し、時刻ｔ１１にて「基準値Ｖｆに設定された目標値ＶＲＥＦ」よりも大きくなる。以降、時刻ｔ８〜時刻ｔ１１と同様、基準値Ｖｆが目標値ＶＲＥＦとして設定され続ける。
【０１２７】
このように、第１制御装置は、下流側空燃比センサの出力値Ｖｏｘｓが最大出力値Ｍａｘ近傍の値になった場合、目標値ＶＲＥＦを次第に基準値Ｖｆに近づけることにより、出力値Ｖｏｘｓの振幅を小さく維持しながら、出力値Ｖｏｘｓを基準値Ｖｆに接近させることができる。出力値Ｖｏｘｓの振幅が小さいことは、触媒４３から多量の酸素又は未燃物が流出していないことを意味する。換言すると、第１制御装置は、出力値Ｖｏｘｓが最大出力値Ｍａｘ近傍の値になった場合であっても、未燃物及びＮＯｘを触媒４３によって浄化しながら、出力値Ｖｏｘｓを基準値Ｖｆの近傍に移行させることができる。
【０１２８】
詳細な説明は省略するが、第１制御装置は、図７に示したように、出力値Ｖｏｘｓが最小出力値Ｍｉｎ近傍の値になった場合においても、目標値ＶＲＥＦを次第に基準値Ｖｆに近づける。従って、図６に示した場合と同様、第１制御装置は、出力値Ｖｏｘｓの振幅を小さく維持しながら、出力値Ｖｏｘｓを基準値Ｖｆに接近させることができる。
【０１２９】
（実際の作動）
次に、第１制御装置の実際の作動について説明する。以下、説明の便宜上、「ＭａｐＸ（ａ１，ａ２，…）」は、「ａ１，ａ２，…を引数とするテーブル」であって「値Ｘを求めるためのテーブル」を表すものとする。
【０１３０】
＜燃料噴射制御＞
第１制御装置のＣＰＵは、図８に示した燃料噴射制御ルーチンを、任意の気筒のクランク角度が吸気上死点前の所定クランク角度となる毎に、その気筒に対して繰り返し実行するようになっている。前記所定クランク角度は、例えば、ＢＴＤＣ９０°ＣＡ（吸気上死点前９０°クランク角度）である。クランク角度が前記所定クランク角度に一致した気筒は「燃料噴射気筒」とも称呼される。ＣＰＵは、この燃料噴射制御ルーチンにより、指示燃料噴射量（最終燃料噴射量）Ｆｉの計算及び燃料噴射の指示を行う。
【０１３１】
任意の気筒のクランク角度が吸気上死点前の所定クランク角度と一致すると、ＣＰＵはステップ８００から処理を開始し、ステップ８１０にてフューエルカット条件（以下、「ＦＣ条件」と表記する。）が成立しているか否かを判定する。
【０１３２】
いま、ＦＣ条件が成立していないと仮定する。この場合、ＣＰＵは、ステップ８１０にて「Ｎｏ」と判定し、以下に述べるステップ８２０乃至ステップ８６０の処理を順に行う。その後、ＣＰＵは、ステップ８９５に進んで本ルーチンを一旦終了する。
【０１３３】
ステップ８２０：ＣＰＵは、目標空燃比ａｂｙｆｒ（上流側目標空燃比ａｂｙｆｒ）を機関１０の運転状態に基づいて決定する。本例において、目標値ＶＲＥＦは理論空燃比ｓｔｏｉｃｈ（例えば、１４．６）に設定される。
【０１３４】
ステップ８３０：ＣＰＵは、「エアフローメータ５１により計測された吸入空気量Ｇａ、機関回転速度センサ５３の信号に基いて取得された機関回転速度ＮＥ、及び、ルックアップテーブルＭａｐＭｃ（Ｇａ，ＮＥ）」に基いて「燃料噴射気筒に吸入される空気量（即ち、筒内吸入空気量Ｍｃ（ｋ））」を取得する。筒内吸入空気量Ｍｃ（ｋ）は、各吸気行程に対応されながらＲＡＭ内に記憶される。筒内吸入空気量Ｍｃ（ｋ）は、周知の空気モデル（吸気通路における空気の挙動を模した物理法則に従って構築されたモデル）により算出されてもよい。
【０１３５】
ステップ８４０：ＣＰＵは、筒内吸入空気量Ｍｃ（ｋ）を目標空燃比ａｂｙｆｒで除することにより基本燃料噴射量Ｆｂを求める。基本燃料噴射量Ｆｂは、目標空燃比ａｂｙｆｒ（本例において理論空燃比ｓｔｏｉｃｈ）を得るために必要な燃料噴射量のフィードフォワード量である。このステップ８４０は、機関に供給される混合気の空燃比（機関の空燃比）を目標空燃比ａｂｙｆｒに一致させるためのフィードフォワード制御手段を構成している。
【０１３６】
ステップ８５０：ＣＰＵは、基本燃料噴射量Ｆｂを、メインフィードバック学習値（メインＦＢ学習値）ＫＧ及びメインフィードバック係数ＦＡＦにより補正する。より具体的には、ＣＰＵは、基本燃料噴射量Ｆｂに「メインＦＢ学習値ＫＧとメインフィードバック係数ＦＡＦとの積」を乗じることにより、指示燃料噴射量Ｆｉを算出する。即ち、Ｆｉ＝ＫＧ・ＦＡＦ・Ｆｂなる式に基き、指示燃料噴射量Ｆｉが求められる。メインＦＢ学習値ＫＧ及びメインフィードバック係数ＦＡＦは、後述する図９に示したルーチンにより求められている。メインＦＢ学習値ＫＧはバックアップＲＡＭに格納されている。
【０１３７】
ステップ８６０：ＣＰＵは、「指示燃料噴射量Ｆｉの燃料」を「燃料噴射気筒に対応して設けられている燃料噴射弁２５」から噴射させるための噴射指示信号を、その燃料噴射弁２５に送出する。
【０１３８】
この結果、機関の空燃比を目標空燃比ａｂｙｆｒ（理論空燃比）に一致させるために必要な量の燃料が燃料噴射気筒の燃料噴射弁２５から噴射させられる。即ち、ステップ８２０乃至ステップ８６０は、「機関の空燃比が目標空燃比ａｂｙｆｒに一致するように指示燃料噴射量Ｆｉを制御する」指示燃料噴射量制御手段を構成している。
【０１３９】
一方、ＣＰＵがステップ８１０の処理を実行する時点において、ＦＣ条件が成立していると、ＣＰＵはそのステップ８１０にて「Ｙｅｓ」と判定し、ステップ８９５に直接進んで本ルーチンを一旦終了する。この場合、ステップ８６０の処理による燃料噴射が実行されないので、フューエルカット制御（燃料供給停止制御）が実行される。
【０１４０】
＜メインフィードバック制御＞
ＣＰＵは図９にフローチャートにより示した「メインフィードバック制御ルーチン」を所定時間ｔａの経過毎に繰り返し実行している。従って、所定のタイミングになると、ＣＰＵはステップ９００から処理を開始し、ステップ９０５に進んで「メインフィードバック制御条件（上流側空燃比フィードバック制御条件）」が成立しているか否かを判定する。
【０１４１】
メインフィードバック制御条件は以下の総ての条件が成立したときに成立する。
（Ａ１）上流側空燃比センサ５５が活性化している。
（Ａ２）機関の負荷ＫＬが閾値ＫＬｔｈ以下である。
（Ａ３）フューエルカット制御中でない。
【０１４２】
なお、負荷ＫＬは、ここでは下記の（１）式により求められる負荷率である。この負荷ＫＬに代え、アクセルペダル操作量Ａｃｃｐが用いられても良い。（１）式において、Ｍｃは筒内吸入空気量であり、ρは空気密度（単位は（ｇ／ｌ））、Ｌは機関１０の排気量（単位は（ｌ））、「４」は機関１０の気筒数である。
ＫＬ＝（Ｍｃ／（ρ・Ｌ／４））・１００％  …（１）
【０１４３】
いま、メインフィードバック制御条件が成立しているものとして説明を続ける。この場合、ＣＰＵはステップ９０５にて「Ｙｅｓ」と判定して以下に述べるステップ９１０乃至ステップ９５０の処理を順に行い、メインフィードバック量ＤＦｉ及びメインフィードバック係数ＦＡＦ等を求める。
【０１４４】
ステップ９１０：ＣＰＵは、下記（２）式に従ってフィードバック制御用出力値Ｖａｂｙｆｃを取得する。（２）式において、Ｖａｂｙｆｓは上流側空燃比センサ５５の出力値であり、Ｖａｆｓｆｂは下流側空燃比センサ５６の出力値Ｖｏｘｓに基づいて算出されるサブフィードバック量である。サブフィードバック量Ｖａｆｓｆｂは、後述する図１０に示したルーチンにより求められている。
Ｖａｂｙｆｃ＝Ｖａｂｙｆｓ＋Ｖａｆｓｆｂ    …（２）
【０１４５】
ステップ９１５：ＣＰＵは、下記（３）式に示したように、上記フィードバック制御用出力値Ｖａｂｙｆｃを図２に示したテーブルＭａｐａｂｙｆｓに適用することにより、フィードバック制御用空燃比ａｂｙｆｓｃを得る。
ａｂｙｆｓｃ＝Ｍａｐａｂｙｆｓ（Ｖａｂｙｆｃ）    …（３）
【０１４６】
ステップ９２０：ＣＰＵは、下記（４）式に従って、「現時点よりもＮサイクル前の時点において燃焼室２１に実際に供給された燃料の量」である「筒内燃料供給量Ｆｃ（ｋ−Ｎ）」を求める。即ち、ＣＰＵは、「現時点よりもＮサイクル（即ち、Ｎ・７２０°クランク角）前の時点における筒内吸入空気量Ｍｃ（ｋ−Ｎ）」を「上記フィードバック制御用空燃比ａｂｙｆｓｃ」により除すことにより、筒内燃料供給量Ｆｃ（ｋ−Ｎ）を求める。
Ｆｃ（ｋ−Ｎ）＝Ｍｃ（ｋ−Ｎ）／ａｂｙｆｓｃ    …（４）
【０１４７】
このように、筒内燃料供給量Ｆｃ（ｋ−Ｎ）を求めるために、現時点からＮサイクル前の筒内吸入空気量Ｍｃ（ｋ−Ｎ）をフィードバック制御用空燃比ａｂｙｆｓｃで除すのは、「燃焼室２１内での混合気の燃焼により生成された排ガス」が上流側空燃比センサ５５に到達するまでに「Ｎサイクルに相当する時間」を要しているからである。
【０１４８】
ステップ９２５：ＣＰＵは、下記（５）式に従って、「現時点よりもＮサイクル前の時点において燃焼室２１に供給されるべきであった燃料の量」である「目標筒内燃料供給量Ｆｃｒ（ｋ−Ｎ）」を求める。即ち、ＣＰＵは、現時点からＮサイクル前の筒内吸入空気量Ｍｃ（ｋ−Ｎ）を目標空燃比ａｂｙｆｒで除すことにより、目標筒内燃料供給量Ｆｃｒ（ｋ−Ｎ）を求める。
Ｆｃｒ＝Ｍｃ（ｋ−Ｎ）／ａｂｙｆｒ    …（５）
【０１４９】
ステップ９３０：ＣＰＵは、下記（６）式に従って、筒内燃料供給量偏差ＤＦｃを取得する。即ち、ＣＰＵは、目標筒内燃料供給量Ｆｃｒ（ｋ−Ｎ）から筒内燃料供給量Ｆｃ（ｋ−Ｎ）を減じることにより、筒内燃料供給量偏差ＤＦｃを求める。この筒内燃料供給量偏差ＤＦｃは、Ｎストローク前の時点で筒内に供給された燃料の過不足分を表す量となる。
ＤＦｃ＝Ｆｃｒ（ｋ−Ｎ）−Ｆｃ（ｋ−Ｎ）    …（６）
【０１５０】
ステップ９３５：ＣＰＵは、下記（７）式に従って、メインフィードバック量ＤＦｉを求める。この（７）式において、Ｇｐは予め設定された比例ゲイン、Ｇｉは予め設定された積分ゲインである。更に、（７）式の「値ＳＤＦｃ」は「筒内燃料供給量偏差ＤＦｃの積分値」である。つまり、ＣＰＵは、フィードバック制御用空燃比ａｂｙｆｓｃを目標空燃比ａｂｙｆｒに一致させるための比例積分制御により「メインフィードバック量ＤＦｉ」を算出する。このメインフィードバック量ＤＦｉは、後述するステップ９４５にてメインフィードバック係数ＦＡＦに変換される。
ＤＦｉ＝Ｇｐ・ＤＦｃ＋Ｇｉ・ＳＤＦｃ    …（７）
【０１５１】
ステップ９４０：ＣＰＵは、その時点における筒内燃料供給量偏差ＤＦｃの積分値ＳＤＦｃに上記ステップ９３０にて求められた筒内燃料供給量偏差ＤＦｃを加えることにより、新たな筒内燃料供給量偏差の積分値ＳＤＦｃを取得する。
【０１５２】
ステップ９４５：ＣＰＵは、メインフィードバック量ＤＦｉ及び基本燃料噴射量Ｆｂ（ｋ−Ｎ）を下記（８）式に適用することによりメインフィードバック係数ＦＡＦを算出する。即ち、メインフィードバック係数ＦＡＦは、「現時点からＮストローク前の基本燃料噴射量Ｆｂ（ｋ−Ｎ）にメインフィードバック量ＤＦｉを加えた値」を「基本燃料噴射量Ｆｂ（ｋ−Ｎ）」で除すことにより求められる。以上により、メインフィードバック量ＤＦｉが比例積分制御により求められ、このメインフィードバック量ＤＦｉがメインフィードバック係数ＦＡＦへと変換される。
ＦＡＦ＝（Ｆｂ（ｋ−Ｎ）＋ＤＦｉ）／Ｆｂ（ｋ−Ｎ）…（８）
【０１５３】
ステップ９５０：ＣＰＵは、下記（９）式に従ってメインフィードバック係数ＦＡＦの加重平均値をメインフィードバック係数平均値ＦＡＦＡＶとして求める。メインフィードバック係数平均値ＦＡＦＡＶは、以下「補正係数平均値ＦＡＦＡＶ」とも称呼される。メインフィードバック係数平均値ＦＡＦＡＶは、メインフィードバック量ＤＦｉの平均値に相関する値である。
【０１５４】
（９）式においてＦＡＦＡＶｎｅｗは更新後の補正係数平均値ＦＡＦＡＶであり、そのＦＡＦＡＶｎｅｗが新たな補正係数平均値ＦＡＦＡＶとして格納される。（９）式において、値ｑは０より大きく１より小さい定数である。メインフィードバック係数平均値ＦＡＦＡＶは、所定期間におけるメインフィードバック係数ＦＡＦの平均値であってもよい。
ＦＡＦＡＶｎｅｗ＝ｑ・ＦＡＦ＋（１−ｑ）・ＦＡＦＡＶ…（９）
【０１５５】
次に、ＣＰＵはステップ９５５以降のステップに進み、メインＦＢ学習値ＫＧを更新（取得、算出）する。即ち、ＣＰＵは、メインフィードバック係数ＦＡＦを基準値（基本値）「１」に近づけるためのメインＦＢ学習値ＫＧを、補正係数平均値ＦＡＦＡＶに基いて求める。
【０１５６】
より具体的に述べると、ＣＰＵはステップ９５５に進み、現時点において学習条件が成立しているか否かを判定する。学習条件は、例えば、図９のルーチンが実行される時間間隔（所定時間ｔａ）の自然数倍の時間が経過する毎に成立する。
【０１５７】
学習条件が成立していないとき、ＣＰＵはステップ９５５にて「Ｎｏ」と判定し、ステップ９９５に直接進んで本ルーチンを一旦終了する。この結果、メインＦＢ学習値ＫＧの更新は行われない。
【０１５８】
一方、現時点において学習条件が成立していると、ＣＰＵはステップ９５５にて「Ｙｅｓ」と判定してステップ９６０に進み、補正係数平均値ＦＡＦＡＶの値が値（１＋ｄα）以上であるか否かを判定する。値ｄαは正の所定値であり、例えば、０．０２である。
【０１５９】
このとき、補正係数平均値ＦＡＦＡＶの値が値（１＋ｄα）以上であると、ＣＰＵはステップ９６５に進んでメインＦＢ学習値ＫＧを正の所定値ΔＫＧだけ増大させる。その後、ＣＰＵはステップ９９５に進み、本ルーチンを一旦終了する。なお、前述したように、メインＦＢ学習値ＫＧはバックアップＲＡＭに格納される。
【０１６０】
これに対し、ＣＰＵがステップ９６０に進んだ際、補正係数平均値ＦＡＦＡＶの値が値（１＋ｄα）よりも小さいと、ＣＰＵはステップ９７０に進んで補正係数平均値ＦＡＦＡＶの値が値（１−ｄα）以下であるか否かを判定する。このとき、補正係数平均値ＦＡＦＡＶの値が値（１−ｄα）以下であると、ＣＰＵはステップ９７５に進んでメインＦＢ学習値ＫＧを正の所定値ΔＫＧだけ減少させる。その後、ＣＰＵはステップ９９５に進み、本ルーチンを一旦終了する。
【０１６１】
ＣＰＵがステップ９７０に進んだ際、補正係数平均値ＦＡＦＡＶの値が値（１−ｄα）よりも大きいと、ＣＰＵはステップ９７０からステップ９９５に直接進んで本ルーチンを一旦終了する。即ち、補正係数平均値ＦＡＦＡＶの値が値（１−ｄα）と値（１＋ｄα）との間の値であるとき、メインＦＢ学習値ＫＧは更新されない。
【０１６２】
一方、ステップ９０５の判定時において、メインフィードバック制御条件が不成立であると、ＣＰＵはそのステップ９０５にて「Ｎｏ」と判定し、以下に述べるステップ９８０乃至ステップ９９２の処理を順に行う。
【０１６３】
ステップ９８０：ＣＰＵは、メインフィードバック量ＤＦｉの値を「０」に設定する。
ステップ９８５：ＣＰＵは、メインフィードバック係数ＦＡＦの値を「１」に設定する。
ステップ９９０：ＣＰＵは、筒内燃料供給量偏差の積分値ＳＤＦｃを「０」に設定する。
ステップ９９２：ＣＰＵは、補正係数平均値ＦＡＦＡＶの値を「１」に設定する。
その後、ＣＰＵは、ステップ９９５に進んで本ルーチンを一旦終了する。
【０１６４】
このように、メインフィードバック制御条件が不成立であるとき、メインフィードバック量ＤＦｉの値は「０」に設定され、メインフィードバック係数ＦＡＦの値は「１」に設定される。従って、基本燃料噴射量Ｆｂのメインフィードバック係数ＦＡＦによる補正は行われない。但し、このような場合であっても、基本燃料噴射量ＦｂはメインＦＢ学習値ＫＧによって補正される。
【０１６５】
＜サブフィードバック制御＞
ＣＰＵは、サブフィードバック量Ｖａｆｓｆｂを算出するために、所定時間が経過する毎に図１０に示した「サブフィードバック制御ルーチン」を実行するようになっている。
【０１６６】
従って、所定のタイミングになると、ＣＰＵは図１０のステップ１０００から処理を開始してステップ１００５に進み、サブフィードバック制御条件が成立しているか否かを判定する。
【０１６７】
サブフィードバック制御条件は以下の総ての条件が成立したときに成立する。
（Ｂ１）メインフィードバック制御条件が成立している。
（Ｂ２）下流側空燃比センサ５６が活性化している。
【０１６８】
いま、サブフィードバック制御条件が成立していると仮定して説明を続ける。この場合、ＣＰＵはステップ１００５にて「Ｙｅｓ」と判定し、以下に述べるステップ１０１０乃至ステップ１０４０の処理を実行し、その後、ステップ１０９５に進んで本ルーチンを一旦終了する。
【０１６９】
ステップ１０１０：ＣＰＵは、目標値ＶＲＥＦ（下流側空燃比センサの出力値Ｖｏｘｓの目標値）を読み出す。目標値ＶＲＥＦは後述するルーチンにより決定されている。
ステップ１０１５：ＣＰＵは、下記（１０）式に従って、「目標値ＶＲＥＦ」と「下流側空燃比センサ５６の出力値Ｖｏｘｓ」との差である「出力偏差量ＤＶｏｘｓ」を取得する。即ち、ＣＰＵは、目標値ＶＲＥＦから出力値Ｖｏｘｓを減じることにより、出力偏差量ＤＶｏｘｓを求める。
ＤＶｏｘｓ＝ＶＲＥＦ−Ｖｏｘｓ    …（１０）
【０１７０】
ステップ１０２０：ＣＰＵは、下記（１１）式に従って、サブフィードバック量Ｖａｆｓｆｂを求める。この（１１）式において、Ｋｐは予め設定された比例ゲイン（比例定数）、Ｋｉは予め設定された積分ゲイン（積分定数）、Ｋｄは予め設定された微分ゲイン（微分定数）である。また、ＳＤＶｏｘｓは出力偏差量ＤＶｏｘｓの積分値、ＤＤＶｏｘｓは出力偏差ＤＶｏｘｓの微分値である。
Ｖａｆｓｆｂ＝Ｋｐ・ＤＶｏｘｓ＋Ｋｉ・ＳＤＶｏｘｓ＋Ｋｄ・ＤＤＶｏｘｓ    …（１１）
【０１７１】
ステップ１０２５：ＣＰＵは、「その時点における出力偏差量の積分値ＳＤＶｏｘｓ」に「上記ステップ１０１５にて求めた出力偏差量ＤＶｏｘｓ」を加えることにより、新たな出力偏差量の積分値ＳＤＶｏｘｓを求める。
ステップ１０３０：ＣＰＵは、「上記ステップ１０１５にて算出した出力偏差量ＤＶｏｘｓ」から「本ルーチンを前回実行した際に算出された出力偏差量（前回出力偏差量ＤＶｏｘｓｏｌｄ）」を減じることにより、新たな出力偏差量の微分値ＤＤＶｏｘｓを求める。
ステップ１０３５：ＣＰＵは、「上記ステップ１０１５にて算出した出力偏差量ＤＶｏｘｓ」を「前回出力偏差量ＤＶｏｘｓｏｌｄ」として格納する。
【０１７２】
このように、ＣＰＵは、下流側空燃比センサ５６の出力値Ｖｏｘｓを目標値ＶＲＥＦに一致させるための比例・積分・微分（ＰＩＤ）制御により「サブフィードバック量Ｖａｆｓｆｂ」を算出する。このサブフィードバック量Ｖａｆｓｆｂは、上述した（２）式に示したように、フィードバック制御用出力値Ｖａｂｙｆｃを算出するために使用される。
【０１７３】
ステップ１０４０；ＣＰＵは、下記（１２）式に従ってサブＦＢ学習値Ｖａｆｓｆｂｇを更新する。この（１２）式の左辺Ｖａｆｓｆｂｇ（ｋ＋１）は更新後のサブＦＢ学習値Ｖａｆｓｆｂｇを表す。値αは０以上１未満の任意の値である。
Ｖａｆｓｆｂｇ（ｋ＋１）＝α・Ｖａｆｓｆｂｇ＋（１−α）・Ｋｉ・ＳＤＶｏｘｓ    …（１２）
【０１７４】
（１２）式から明らかなように、サブＦＢ学習値Ｖａｆｓｆｂｇは「サブフィードバック量Ｖａｆｓｆｂの積分項Ｋｉ・ＳＤＶｏｘｓ」に「ノイズ除去のためのフィルタ処理」を施した値である。換言すると、サブＦＢ学習値Ｖａｆｓｆｂｇは、サブフィードバック量Ｖａｆｓｆｂの定常成分（積分項）に応じた値である。更新されたサブＦＢ学習値Ｖａｆｓｆｂｇ（＝Ｖａｆｓｆｂｇ（ｋ＋１））はバックアップＲＡＭに格納される。
【０１７５】
更に、ＣＰＵがステップ１００５の処理を実行する時点において、サブフィードバック制御条件が成立していない場合、ＣＰＵはそのステップ１００５にて「Ｎｏ」と判定し、以下に述べるステップ１０４５及びステップ１０５０の処理を順に行う。その後、ＣＰＵは、ステップ１０９５に進んで本ルーチンを一旦終了する。
【０１７６】
ステップ１０４５：ＣＰＵはサブフィードバック量Ｖａｆｓｆｂの値として、サブＦＢ学習値Ｖａｆｓｆｂｇを採用する。
ステップ１０５０：ＣＰＵは出力偏差量の積分値ＳＤＶｏｘｓの値を「０」に設定する。
【０１７７】
以上、説明したように、出力値Ｖｏｘｓが目標値ＶＲＥＦに一致するようにサブフィードバック量Ｖａｆｓｆｂが求められ、このサブフィードバック量Ｖａｆｓｆｂは指示燃料噴射量Ｆｉに反映される（図９のステップ９１０を参照。）。従って、出力値Ｖｏｘｓが目標値ＶＲＥＦに一致するように、指示燃料噴射量Ｆｉがフィードバック制御される。
【０１７８】
＜目標値ＶＲＥＦ決定＞
ＣＰＵは、「サブフィードバック制御に用いられる上記目標値ＶＲＥＦ」を決定するために、所定時間が経過する毎に図１１に示した「目標値決定ルーチン」を実行するようになっている。従って、所定のタイミングになると、ＣＰＵは図１１のステップ１１００から処理を開始してステップ１１１０に進み、上述した「サブフィードバック制御条件」が成立しているか否かを判定する。
【０１７９】
いま、サブフィードバック制御条件が成立していないと仮定して説明を続ける。この場合、ＣＰＵはステップ１１１０にて「Ｎｏ」と判定してステップ１１２０に進み、目標値収束制御実行フラグＸＶＳＦＢの値を「０」に設定する。目標値収束制御実行フラグＸＶＳＦＢは、その値が「１」であるとき「目標値ＶＲＥＦを基準値Ｖｆへと収束させる目標値収束制御（目標値変更制御）」が実行されていることを示し、その値が「０」であるとき「目標値収束制御」が実行されていないことを示す。なお、目標値収束制御実行フラグＸＶＳＦＢの値は、「機関１０が搭載された図示しない車両」のイグニッション・キー・スイッチがオフ位置からオン位置へと変更された際、ＣＰＵにより実行されるイニシャルルーチンにおいて「０」に設定される。
【０１８０】
次いで、ＣＰＵはステップ１１３０に進み、目標値決定要求フラグＸＶＲＥＦｒｅｑの値を「１」に設定し、ステップ１１９５に進んで本ルーチンを一旦終了する。目標値決定要求フラグＸＶＲＥＦｒｅｑは、その値が「１」であるとき目標値ＶＲＥＦを新たに決定する必要があること（目標値ＶＲＥＦを更新する要求があること）を示す。目標値決定要求フラグＸＶＲＥＦｒｅｑは、その値が「０」であるとき、目標値ＶＲＥＦを新たに決定する必要がないることを示す。目標値決定要求フラグＸＶＲＥＦｒｅｑの値は、上述したイニシャルルーチンにおいて「１」に設定されるようになっている。その後、ＣＰＵはステップ１１９５に進み、本ルーチンを一旦終了する。
【０１８１】
サブフィードバック制御条件が不成立の状態から成立した状態へと変化した場合において、ＣＰＵがステップ１１００に続いてステップ１１１０に進むと、ＣＰＵはそのステップ１１１０にて「Ｙｅｓ」と判定してステップ１０４０に進む。ＣＰＵは、そのステップ１１４０にて目標値決定要求フラグＸＶＲＥＦｒｅｑの値が「１」であるか否かを判定する。
【０１８２】
この場合、上述したイニシャルルーチン又は前述したステップ１１３０にて、目標値決定要求フラグＸＶＲＥＦｒｅｑの値は「１」に設定されている。従って、ＣＰＵはステップ１１４０にて「Ｙｅｓ」と判定してステップ１０５０に進み、前述した＜判定方法＞に従って目標値ＶＲＥＦを決定する。
【０１８３】
より具体的に述べると、ＣＰＵはステップ１１５０に進んだとき、図１２のステップ１２００を経由してステップ１２０２へと進み、目標値収束制御実行フラグＸＶＳＦＢの値が「０」であるか否かを判定する。
【０１８４】
目標値収束制御実行フラグＸＶＳＦＢの値は、上述したイニシャルルーチン又は前述したステップ１１２０にて「０」に設定されている。従って、ＣＰＵはステップ１２０２にて「Ｙｅｓ」と判定してステップ１２０４に進み、下流側空燃比センサの出力値Ｖｏｘｓが基準値Ｖｆよりも大きいか否かを判定する。
【０１８５】
出力値Ｖｏｘｓが基準値Ｖｆよりも大きい場合、ＣＰＵはステップ１２０４にて「Ｙｅｓ」と判定してステップ１２０６に進み、リッチ判定フラグＸＲの値を「１」に設定する。リッチ判定フラグＸＲは、その値が「１」であるとき、空燃比が「リッチ」と判定されていることを示し、従って、リーン要求が発生していることを示す。なお、リッチ判定フラグＸＲの値は上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
【０１８６】
これに対し、出力値Ｖｏｘｓが基準値Ｖｆ以下である場合、ＣＰＵはステップ１２０４にて「Ｎｏ」と判定してステップ１２０８に進み、リッチ判定フラグＸＲの値を「０」に設定する。リッチ判定フラグＸＲは、その値が「０」であるとき、空燃比が「リーン」と判定されていることを示し、従って、リッチ要求が発生していることを示す。
【０１８７】
このように、サブフィードバック制御条件が成立したことに伴ってサブフィードバック制御の実行を開始するとき（サブフィードバック量Ｖａｆｓｆｂの更新を開始するとき）、出力値Ｖｏｘｓと基準値Ｖｆとの比較に基いて、リッチ要求及びリーン要求の何れが発生しているか（空燃比がリーンであるのかリッチであるのか）が暫定的に判定される。
【０１８８】
次に、ＣＰＵはステップ１２１０に進み、目標値収束制御実行フラグＸＶＳＦＢの値を「１」に設定するとともに、基準値Ｖｆを目標値ＶＲＥＦとして暫定的に設定する。その後、ＣＰＵはステップ１２９５を経由して図１１のステップ１１９５に進み、目標値決定ルーチンを一旦終了する。
【０１８９】
この結果、サブフィードバック制御の実行開始直後においては、出力値Ｖｏｘｓが「基準値Ｖｆに設定された目標値ＶＲＥＦ」に一致するように、サブフィードバック量Ｖａｆｓｆｂが算出される。
【０１９０】
以下、サブフィードバック制御条件が成立し続けていると仮定する。この場合、所定時間が経過し、ＣＰＵが図１１のステップ１１００からステップ１１１０に進んだとき、ＣＰＵはそのステップ１１１０にて「Ｙｅｓ」と判定してステップ１１４０に進む。目標値決定要求フラグＸＶＲＥＦｒｅｑは依然として「１」である。従って、ＣＰＵはステップ１１４０からステップ１１５０に進み、図１２のステップ１２００を経由してステップ１２０２に進む。
【０１９１】
目標値収束制御実行フラグＸＶＳＦＢの値は、先に実行された図１２のステップ１２１０にて「１」に設定されている。従って、ＣＰＵはステップ１２０２にて「Ｎｏ」と判定し、ステップ１２１２へと進む。ＣＰＵはステップ１２１２にてリッチ判定フラグＸＲの値が「１」であるか否かを判定する。
【０１９２】
以下、リッチ判定フラグＸＲの値が「１」に設定されていると仮定して説明を続ける。この場合、ＣＰＵはステップ１２１２にて「Ｙｅｓ」と判定してステップ１２１４に進み、リッチ判定フラグＸＲが「１」へと変更されてから「出力値Ｖｏｘｓの極大値Ｖｍａｘ」が取得されたか否かを判定する。極大値Ｖｍａｘは、図示しないルーチンにより別途取得される。
【０１９３】
なお、後述するように、ＣＰＵは出力値Ｖｏｘｓの極小値Ｖｍｉｎも取得するようになっている。ここで、極大値Ｖｍａｘ及び極小値Ｖｍｉｎの取得方法について簡単に説明する。ＣＰＵは、一定時間Ｔｂの経過毎に下流側空燃比センサの出力値Ｖｏｘｓを取得する。ＣＰＵは、新たに出力Ｖｏｘｓを取得する毎に、「その新たに取得された出力値Ｖｏｘｓから、一定時間Ｔｂ前の出力値Ｖｏｘｓ（以下、「前回出力値Ｖｏｘｓｚｅｎ」と称呼する。）を減じた値（Ｖｏｘｓ−Ｖｏｘｓｚｅｎ）」を「微分値ｄＶｏｘｓ／ｄｔ」として取得する。そして、ＣＰＵは、一定時間Ｔｂ前の微分値ｄＶｏｘｓ／ｄｔが「０」以上であり、新たに得られた微分値ｄＶｏｘｓ／ｄｔが「０」よりも小さいとき、一定時間Ｔｂ前の出力値Ｖｏｘｓを極大値Ｖｍａｘとして取得する。同様に、ＣＰＵは、一定時間Ｔｂ前の微分値ｄＶｏｘｓ／ｄｔが「０」以下であり、新たに得られた微分値ｄＶｏｘｓ／ｄｔが「０」よりも大きいとき、一定時間Ｔｂ前の出力値Ｖｏｘｓを極小値Ｖｍｉｎとして取得する。
【０１９４】
リッチ判定フラグＸＲが「１」へと変更されてから極大値Ｖｍａｘが取得されていない場合、ＣＰＵはステップ１２１４にて「Ｎｏ」と判定し、ステップ１２９５を経由してステップ１１９５に直接進む。従って、極大値Ｖｍａｘが取得されるまで、ＣＰＵは図１１のステップ１１００、ステップ１１１０、ステップ１１４０、及び、ステップ１１５０（実際には、ステップ１２００、ステップ１２０２、ステップ１２１２及びステップ１２１４）を繰り返し実行する。
【０１９５】
その後、リッチ判定フラグＸＲの値が「１」に変更されてから極大値Ｖｍａｘが取得されると、ＣＰＵはステップ１２１４にて「Ｙｅｓ」と判定してステップ１２１６に進み、その取得された極大値Ｖｍａｘを読み込む。次いで、ＣＰＵは上記表１に示した「リッチ判定時」の規則に従って目標値ＶＲＥＦを決定（設定）する。
【０１９６】
具体的に述べると、ＣＰＵはステップ１２１８に進み、極大値Ｖｍａｘが基準値Ｖｆ以上であるか否かを判定する。極大値Ｖｍａｘが基準値Ｖｆ以上であれば、ＣＰＵはステップ１２２０に進み、極大値Ｖｍａｘから「第１閾値としての値Ａ１」を減じた値（Ｖｍａｘ−Ａ１）が基準値Ｖｆよりも大きいか否かを判定する。そして、値（Ｖｍａｘ−Ａ１）が基準値Ｖｆよりも大きい場合、ＣＰＵはステップ１２２２に進み、極大値Ｖｍａｘから「第１変更値としての値Ａ１」を減じた値（Ｖｍａｘ−Ａ１）を目標値ＶＲＥＦに設定する。これに対し、値（Ｖｍａｘ−Ａ１）が基準値Ｖｆ以下である場合、ＣＰＵはステップ１２２６に進み、基準値Ｖｆを目標値ＶＲＥＦに設定する。更に、ＣＰＵがステップ１２１８の処理を実行する時点において、極大値Ｖｍａｘが基準値Ｖｆよりも小さければ、ＣＰＵはステップ１２２８に進み、極大値Ｖｍａｘから「第２変更値としての値Ｂ２」を減じた値（Ｖｍａｘ−Ｂ２）を目標値ＶＲＥＦに設定する。
【０１９７】
ＣＰＵは、ステップ１２２２、ステップ１２２６及びステップ１２２８の何れかのステップの処理を実行した後、ステップ１２２４に進んで目標値決定要求フラグＸＶＲＥＦｒｅｑの値を「０」に設定する。その後、ＣＰＵはステップ１２９５及び図１１のステップ１１５０を経由してステップ１１９５に進み、目標値決定ルーチンを一旦終了する。
【０１９８】
その後、所定時間が経過し、ＣＰＵが図１１のステップ１１００からステップ１１１０に進んだとき、ＣＰＵはそのステップ１１１０にて「Ｙｅｓ」と判定してステップ１１４０に進む。この場合、目標値決定要求フラグＸＶＲＥＦｒｅｑは、先に実行された「図１２のステップ１２２４の処理」により「０」に設定されている。従って、ＣＰＵはステップ１１４０にて「Ｎｏ」と判定してステップ１１６０に進み、空燃比の判定（及び、空燃比要求の判定）を行う。
【０１９９】
より具体的に述べると、ＣＰＵはステップ１１６０に進んだとき、図１３のステップ１３００を経由してステップ１３１０へと進み、リッチ判定フラグＸＲの値が「１」であるか否かを判定する。
【０２００】
上述した仮定に従えば、リッチ判定フラグＸＲの値は依然として「１」である。従って、ＣＰＵはステップ１３１０にて「Ｙｅｓ」と判定してステップ１３２０に進み、下流側空燃比センサの出力値Ｖｏｘｓが目標値ＶＲＥＦよりも小さいか否かを判定する。そして、下流側空燃比センサの出力値Ｖｏｘｓが目標値ＶＲＥＦよりも小さい場合、ＣＰＵはステップ１３２０にて「Ｙｅｓ」と判定し（即ち、空燃比はリーンであると判定し）、以下に述べるステップ１３３０及びステップ１３４０の処理を順に行う。
【０２０１】
ステップ１３３０：ＣＰＵは、リッチ判定フラグＸＲの値を「０」に設定する。
ステップ１３４０：ＣＰＵは、目標値決定要求フラグＸＶＲＥＦｒｅｑの値を「１」に設定する。
その後、ＣＰＵはステップ１３９５及び図１１のステップ１１６０を経由してステップ１１９５に進み、目標値決定ルーチンを一旦終了する。
【０２０２】
これに対し、ＣＰＵがステップ１３２０の処理を実行する時点において、下流側空燃比センサの出力値Ｖｏｘｓが目標値ＶＲＥＦ以上であると、ＣＰＵはそのステップ１３２０にて「Ｎｏ」と判定し、ステップ１３９５に直接進む。その後、ＣＰＵは、図１１のステップ１１６０を経由してステップ１１９５に進んで目標値決定ルーチンを一旦終了する。このように、リッチ判定フラグＸＲの値が「１」である場合、出力値Ｖｏｘｓが目標値ＶＲＥＦよりも小さくなった場合にのみ、リッチ判定フラグＸＲの値が「０」に変更される。
【０２０３】
図１３のステップ１３３０にてリッチ判定フラグＸＲの値が「０」に設定され、ステップ１３４０にて目標値決定要求フラグＸＶＲＥＦｒｅｑの値が「１」に設定された後、ＣＰＵが図１１のステップ１１４０に再び進むと、ＣＰＵはそのステップ１１４０にて「Ｙｅｓ」と判定してステップ１１５０に進む。従って、ＣＰＵは、図１２のステップ１２００を経由してステップ１２０２へと進み、目標値収束制御実行フラグＸＶＳＦＢの値が「０」であるか否かを判定する。この場合、目標値収束制御実行フラグＸＶＳＦＢの値は「１」である（ステップ１２１０を参照。）。
【０２０４】
従って、ＣＰＵはステップ１２０２からステップ１２１２へと進む。この場合、リッチ判定フラグＸＲの値は、先に実行された図１３のステップ１３３０の処理により「０」に設定されている。従って、ＣＰＵはステップ１２１２にて「Ｎｏ」と判定してステップ１２３０に進み、リッチ判定フラグＸＲが「０」へと変更されてから「出力値Ｖｏｘｓの極小値Ｖｍｉｎ」が取得されたか否かを判定する。極小値Ｖｍｉｎは、前述したように、図示しないルーチンにより別途取得される。
【０２０５】
極小値Ｖｍｉｎが取得されていない場合、ＣＰＵはステップ１２３０にて「Ｎｏ」と判定し、ステップ１２９５を経由してステップ１１９５に直接進む。従って、極小値Ｖｍｉｎが取得されるまで、ＣＰＵは図１１のステップ１１００、ステップ１１１０、ステップ１１４０、及び、ステップ１１５０（実際には、ステップ１２００、ステップ１２０２、ステップ１２１２及びステップ１２３０）を繰り返し実行する。
【０２０６】
その後、リッチ判定フラグＸＲの値が「０」に変更されてから極小値Ｖｍｉｎが取得されると、ＣＰＵはステップ１２３０にて「Ｙｅｓ」と判定してステップ１２３２に進み、その取得された極小値Ｖｍｉｎを読み込む。次いで、ＣＰＵは上記表１に示した「リーン判定時」の規則に従って目標値ＶＲＥＦを決定（設定）する。
【０２０７】
具体的に述べると、ＣＰＵはステップ１２３４に進み、極小値Ｖｍｉｎが基準値Ｖｆ以下であるか否かを判定する。極小値Ｖｍｉｎが基準値Ｖｆ以下であれば、ＣＰＵはステップ１２３６に進み、極小値Ｖｍｉｎに「第１閾値としての値Ａ２」を加えた値（Ｖｍｉｎ＋Ａ２）が基準値Ｖｆよりも小さいか否かを判定する。そして、値（Ｖｍｉｎ＋Ａ２）が基準値Ｖｆよりも小さい場合、ＣＰＵはステップ１２３８に進み、極小値Ｖｍｉｎに「第１変更値としての値Ａ２」を加えた値（Ｖｍｉｎ＋Ａ２）を目標値ＶＲＥＦに設定する。これに対し、値（Ｖｍｉｎ＋Ａ２）が基準値Ｖｆ以上である場合、ＣＰＵはステップ１２４２に進み、基準値Ｖｆを目標値ＶＲＥＦに設定する。更に、ＣＰＵがステップ１２３４の処理を実行する時点において、極小値Ｖｍｉｎが基準値Ｖｆよりも大きければ、ＣＰＵはステップ１２４４に進み、極小値Ｖｍｉｎに「第２変更値としての値Ｂ１」を加えた値（Ｖｍｉｎ＋Ｂ１）を目標値ＶＲＥＦに設定する。
【０２０８】
ＣＰＵは、ステップ１２３８、ステップ１２４２及びステップ１２４４の何れかのステップの処理を実行した後、ステップ１２４０に進んで目標値決定要求フラグＸＶＲＥＦｒｅｑの値を「０」に設定する。その後、ＣＰＵはステップ１２９５及び図１１のステップ１１５０を経由してステップ１１９５に進み、目標値決定ルーチンを一旦終了する。
【０２０９】
その後、所定時間が経過し、ＣＰＵが図１１のステップ１１００からステップ１１１０に進んだとき、ＣＰＵはそのステップ１１１０にて「Ｙｅｓ」と判定してステップ１１４０に進む。この場合、目標値決定要求フラグＸＶＲＥＦｒｅｑは、先に実行された「図１２のステップ１２４０の処理」により「０」に設定されている。従って、ＣＰＵはステップ１１４０にて「Ｎｏ」と判定してステップ１１６０に進み、空燃比判定を行う。
【０２１０】
より具体的に述べると、ＣＰＵはステップ１１６０に進んだとき、図１３のステップ１３００を経由してステップ１３１０へと進み、リッチ判定フラグＸＲの値が「１」であるか否かを判定する。
【０２１１】
この場合、リッチ判定フラグＸＲの値は「０」である。従って、ＣＰＵはステップ１３１０にて「Ｎｏ」と判定してステップ１３５０に進み、下流側空燃比センサの出力値Ｖｏｘｓが目標値ＶＲＥＦよりも大きいか否かを判定する。そして、下流側空燃比センサの出力値Ｖｏｘｓが目標値ＶＲＥＦよりも大きい場合、ＣＰＵはステップ１３５０にて「Ｙｅｓ」と判定し（即ち、空燃比はリッチであると判定し）、以下に述べるステップ１３６０及びステップ１３７０の処理を順に行う。
【０２１２】
ステップ１３６０：ＣＰＵは、リッチ判定フラグＸＲの値を「１」に設定する。
ステップ１３７０：ＣＰＵは、目標値決定要求フラグＸＶＲＥＦｒｅｑの値を「１」に設定する。
その後、ＣＰＵはステップ１３９５及び図１１のステップ１１６０を経由してステップ１１９５に進み、目標値決定ルーチンを一旦終了する。
【０２１３】
これに対し、ＣＰＵがステップ１３５０の処理を実行する時点において、下流側空燃比センサの出力値Ｖｏｘｓが目標値ＶＲＥＦ以下であると、ＣＰＵはステップ１３５０にて「Ｎｏ」と判定し、ステップ１３９５に直接進む。その後、ＣＰＵは、図１１のステップ１１６０を経由してステップ１１９５に進んで目標値決定ルーチンを一旦終了する。このように、リッチ判定フラグＸＲの値が「０」である場合、出力値Ｖｏｘｓが目標値ＶＲＥＦよりも大きくなった場合にのみ、リッチ判定フラグＸＲの値が「１」に変更される。
【０２１４】
図１３のステップ１３６０にてリッチ判定フラグＸＲの値が「１」に設定され、ステップ１３７０にて目標値決定要求フラグＸＶＲＥＦｒｅｑの値が「１」に設定された後、ＣＰＵが図１１のステップ１１４０に再び進むと、ＣＰＵはそのステップ１１４０にて「Ｙｅｓ」と判定してステップ１１５０に進む。従って、ＣＰＵは、図１２のステップ１２００を経由してステップ１２０２、ステップ１２１２及びステップ１２１４へと進む。以降、同様な処理が繰り返し行われる。
【０２１５】
なお、サブフィードバック制御条件が成立したことに伴って目標値収束制御実行フラグＸＶＳＦＢが「０」から「１」へと変更されてから（図１１のステップ１１４０を参照。）、リッチ判定フラグＸＲの値が「０」に設定された場合（図１２のステップ１２０８を参照。）、ＣＰＵはステップ１２３０にて「目標値収束制御実行フラグＸＶＳＦＢが「０」から「１」へと変更されてから極小値Ｖｍｉｎが取得されたか否か」を監視する。
【０２１６】
以上、説明したように、第１制御装置は、目標値ＶＲＥＦを次第に基準値Ｖｆへと近づける目標値収束制御を実行する。
【０２１７】
より具体的に述べると、第１制御装置は、リーン要求が発生しているか、リッチ要求が発生しているか、を下流側空燃比センサの出力値Ｖｏｘｓと目標値ＶＲＥＦとに基づいて判定する空燃比制御手段（判定手段）を備える（図１３及びリッチ判定フラグＸＲを参照。）。リーン要求は、出力値Ｖｏｘｓを目標値ＶＲＥＦに近づけるために機関の空燃比を増大させる要求である。リッチ要求は、出力値Ｖｏｘｓを目標値ＶＲＥＦに近づけるために機関の空燃比を減少させる要求である。
【０２１８】
但し、第１制御装置において、リーン要求及びリッチ要求は目標値ＶＲＥＦを決定するために使用されるが、実際の機関の空燃比の制御には直接使用されない。機関の空燃比は、出力値Ｖｏｘｓと目標値ＶＲＥＦとを一致させるように算出されるサブフィードバック量Ｖａｆｓｆｂにより制御される。
【０２１９】
サブフィードバック量Ｖａｆｓｆｂは、図１０に示したように、リーン要求が発生している期間（即ち、出力値Ｖｏｘｓが目標値ＶＲＥＦよりも大きい期間）において機関の空燃比を増大する（指示燃料噴射量Ｆｉを減少する）ように変更される。
サブフィードバック量Ｖａｆｓｆｂは、図１０に示したように、リッチ要求が発生している期間（即ち、出力値Ｖｏｘｓが目標値ＶＲＥＦよりも小さい期間）において機関の空燃比を減少する（指示燃料噴射量Ｆｉを増大する）ように制御される。
【０２２０】
即ち、第１制御装置は、前記リーン要求が発生している期間において前記機関の空燃比を増大し、前記リッチ要求が発生している期間において前記機関の空燃比を減少する、フィードバック制御を実行する空燃比制御手段を備える（図１０のルーチン等を参照。）。
【０２２１】
加えて、第１制御装置は、極大値Ｖｍａｘ及び極小値Ｖｍｉｎを取得する極値取得手段を備える（図１２のステップ１２１４、ステップ１２１６、ステップ１２３０及びステップ１２３２を参照。）。
【０２２２】
基準値Ｖｆ以上である極大値Ｖｍａｘ、及び、基準値Ｖｆ以下である極小値Ｖｍｉｎは、「下流側空燃比センサの出力値Ｖｏｘｓが基準値Ｖｆから離れる方向に変化する状態から基準値Ｖｆに近づく方向に変化する状態へと変化したときの出力値Ｖｏｘｓ」であるということができる。このような極値（基準値Ｖｆ以上である極大値Ｖｍａｘ、及び、基準値Ｖｆ以下である極小値Ｖｍｉｎ）は、便宜上「第１極値」と称呼される。
【０２２３】
基準値Ｖｆよりも小さい極大値Ｖｍａｘ、及び、基準値Ｖｆよりも大きい極小値Ｖｍｉｎは、「下流側空燃比センサの出力値Ｖｏｘｓが基準値Ｖｆに近づく方向に変化する状態から基準値Ｖｆから離れる方向へと変化する状態へと変化したときの出力値Ｖｏｘｓ」であるということができる。このような極値（基準値Ｖｆよりも小さい極大値Ｖｍａｘ、及び、基準値Ｖｆよりも大きい極小値Ｖｍｉｎ）は、便宜上「第２極値」と称呼される。
【０２２４】
従って、第１制御装置は、第１極値及び第２極値を取得する極値取得手段を備える。
【０２２５】
更に、第１制御装置の空燃比制御手段は、
前記極値取得手段により前記第１極値（基準値Ｖｆ以上である極大値Ｖｍａｘ、又は、基準値Ｖｆ以下である極小値Ｖｍｉｎ）が取得された場合、その取得された第１極値と基準値Ｖｆとの間の値である第１値（Ｖｍａｘ−Ａ１、又は、Ｖｍｉｎ＋Ａ２）を目標値ＶＲＥＦとして設定する（表１、図４の（Ａ）、図４の（Ｃ）、図５の（Ａ）、図５の（Ｃ）、図１２のステップ１２２２、ステップ１２３８等を参照。）。
【０２２６】
第１制御装置の空燃比制御手段は、その後（第１値（Ｖｍａｘ−Ａ１）を目標値ＶＲＥＦとして設定した後）、リーン要求が発生している場合において出力値Ｖｏｘｓが「第１値（Ｖｍａｘ−Ａ１）に設定された目標値ＶＲＥＦ」よりも小さくなった時点にて、リッチ要求が発生したと判定する（図１３のステップ１３１０乃至ステップ１３３０を参照。）。この時点は、出力値Ｖｏｘｓと基準値Ｖｆとの差の絶対値が、「第１値（Ｖｍａｘ−Ａ１）に設定された目標値ＶＲＥＦ」と基準値Ｖｆとの差の絶対値、よりも小さくなった時点である。出力値Ｖｏｘｓと基準値Ｖｆとの差の絶対値が、「第１値に設定された目標値ＶＲＥＦ」と基準値Ｖｆとの差の絶対値、よりも小さくなった時点は、便宜上、第１時点とも称呼される。
【０２２７】
同様に、第１制御装置の空燃比制御手段は、リッチ要求が発生している場合において出力値Ｖｏｘｓが「第１値（Ｖｍｉｎ＋Ａ２）に設定された目標値ＶＲＥＦ」よりも大きくなった時点にて、リーン要求が発生したと判定する（図１３のステップ１３１０、ステップ１３５０及びステップ１３６０を参照。）。この時点は、出力値Ｖｏｘｓと基準値Ｖｆとの差の絶対値が、「第１値（Ｖｍｉｎ＋Ａ２）に設定された目標値ＶＲＥＦ」と基準値Ｖｆとの差の絶対値、よりも小さくなった時点（即ち、第１時点）である。
【０２２８】
このように、第１制御装置の空燃比制御手段は、「出力値Ｖｏｘｓと基準値Ｖｆとの差の絶対値」が、「前記第１値に設定された目標値ＶＲＥＦと基準値Ｖｆとの差の絶対値」よりも小さくなった第１時点において、その第１時点まで発生していると判定していた「リッチ要求及びリーン要求のうちの何れか一方」とは異なる「他方の要求」が発生したと判定する。
【０２２９】
更に、第１制御装置の空燃比制御手段は、
その後（「他方の要求」が発生したと判定した後）、前記極値取得手段によって前記第２極値（基準値Ｖｆよりも大きい極小値Ｖｍｉｎ、及び、基準値Ｖｆよりも小さい極大値Ｖｍａｘ）が取得された場合、「その取得された第２極値」と「前記極値取得手段によって取得された前記第１極値（基準値Ｖｆよりも大きい極大値Ｖｍａｘ、又は、基準値Ｖｆよりも小さい極小値Ｖｍｉｎ）」との間の値である第２値（Ｖｍｉｎ＋Ｂ１又はＶｍａｘ−Ｂ２）、を目標値ＶＲＥＦとして設定する（表１、図４の（Ｃ）、図５の（Ｃ）、図１２のステップ１２２８、ステップ１２４４等を参照。）。換言すると、第１制御装置の空燃比制御手段は、第２値が、最新の第１極値と最新の第２極値との間の値となるように、値Ｂ１及び値Ｂ１を設定している。
【０２３０】
第１制御装置の空燃比制御手段は、その後（第２値を目標値ＶＲＥＦとして設定した後）、リッチ要求が発生している場合において出力値Ｖｏｘｓが「第２値（Ｖｍｉｎ＋Ｂ１）に設定された目標値ＶＲＥＦ」よりも大きくなった時点にて、リーン要求が発生したと判定する（図１３のステップ１３１０、ステップ１３５０及びステップ１３６０を参照。）。この時点は、出力値Ｖｏｘｓと基準値Ｖｆとの差の絶対値が、「第２値（Ｖｍｉｎ＋Ｂ１）に設定された目標値ＶＲＥＦ」と基準値Ｖｆとの差の絶対値、よりも大きくなった時点である。出力値Ｖｏｘｓと基準値Ｖｆとの差の絶対値が、「第２値に設定された目標値ＶＲＥＦ」と基準値Ｖｆとの差の絶対値、よりも大きくなった時点は、便宜上、第２時点とも称呼される。
【０２３１】
同様に、第１制御装置の空燃比制御手段は、リーン要求が発生している場合において出力値Ｖｏｘｓが「第２値（Ｖｍａｘ−Ｂ２）に設定された目標値ＶＲＥＦ」よりも小さくなった時点にて、リッチ要求が発生したと判定する（図１３のステップ１３１０乃至ステップ１３３０を参照。）。この時点は、出力値Ｖｏｘｓと基準値Ｖｆとの差の絶対値が、「第２値（Ｖｍａｘ−Ｂ２）に設定された目標値ＶＲＥＦ」と基準値Ｖｆとの差の絶対値、よりも大きくなった時点（即ち、第２時点）である。
【０２３２】
このように、第１制御装置の空燃比制御手段は、「出力値Ｖｏｘｓと基準値Ｖｆとの差の絶対値」が、「前記第２値に設定された目標値ＶＲＥＦと基準値Ｖｆとの差の絶対値」よりも大きくなった第２時点において、その第２時点まで発生していると判定していた「リッチ要求及びリーン要求のうちの何れか一方」とは異なる「他方の要求」が発生したと判定する。
【０２３３】
第１制御装置は、このような目標値ＶＲＥＦの設定及び空燃比の判定（リッチ要求及びリーン要求の何れが発生しているかの判定）を繰り返すことにより、目標値ＶＲＥＦを基準値Ｖｆに近づける。即ち、第１制御装置は、下流側空燃比センサの出力値Ｖｏｘｓの極大値Ｖｍａｘが「基準値Ｖｆに第１閾値（Ａ１）を加えた値」よりも大きい場合、又は、下流側空燃比センサの出力値Ｖｏｘｓの極小値Ｖｍｉｎが「基準値Ｖｆから第１閾値（Ａ２）を減じた値」よりも小さい場合、目標値ＶＲＥＦ（サブフィードバック制御に用いられる目標値）を、基準値Ｖｆに、所定の初期値から、時間経過とともに徐々に近づける目標値変更手段を備える。即ち、目標値変更手段は、目標値収束制御を実行する。
【０２３４】
この場合、前記所定の初期値（目標値収束制御の初期値）の一つは、値（Ｖｍａｘ−Ａ１＝Ｖｍａｘ（１）−Ａ１）である。この値（Ｖｍａｘ−Ａ１＝Ｖｍａｘ（１）−Ａ１）は、「基準値Ｖｆよりも大きい側の領域及び基準値Ｖｆよりも小さい側の領域」の何れか一方の領域であって下流側空燃比センサの出力値Ｖｏｘｓ（現時点の出力値Ｖｏｘｓ）が存在している領域（この例においては、基準値Ｖｆよりも大きい側の領域）」内の値である。更に、前記所定の初期値（目標値収束制御の初期値）の他の一つは、値（Ｖｍｉｎ＋Ａ２＝Ｖｍｉｎ（１）＋Ａ２）である。この値（Ｖｍｉｎ＋Ａ２＝Ｖｍｉｎ（１）＋Ａ２）は、「基準値Ｖｆよりも大きい側の領域及び基準値Ｖｆよりも小さい側の領域」の何れか一方の領域であって下流側空燃比センサの出力値Ｖｏｘｓ（現時点の出力値Ｖｏｘｓ）が存在している領域（この例においては、基準値Ｖｆよりも小さい側の領域）」内の値である。
【０２３５】
従って、第１制御装置は、目標値ＶＲＥＦが基準値Ｖｆに固定される従来の装置に比べ、より早期に（換言すると、短い周期にて）機関の空燃比を「リーン空燃比からリッチ空燃比へと、又は、その逆へと」切り換えることができる。その結果、第１制御装置は、出力値Ｖｏｘｓの振幅が大きくなることを回避しながら、出力値Ｖｏｘｓを基準値Ｖｆに近づけることができるので、エミッションを良好に維持することができる。
【０２３６】
なお、第２変更値（値Ｂ１又は値Ｂ２）は、第１変更値（値Ａ１又は値Ａ２）に比べ、「（十分に大きな）正の所定値」以上小さくなるように設定することが望ましい。これによれば、第１制御装置は、前記第２値である値（例えば、Ｖｍｉｎ＋Ｂ１）を、前記取得された第２極値（Ｖｍｉｎ）と前記第１値（Ｖｍａｘ−Ａ１）との間の値に設定することができる。同様に、第１制御装置は、前記第２値である値（例えば、Ｖｍａｘ−Ｂ２）を、前記取得された第２極値（Ｖｍａｘ）と前記第１値（Ｖｍｉｎ＋Ａ２）との間の値に設定することができる。この結果、第１制御装置は、目標値ＶＲＥＦを迅速に基準値Ｖｆへと収束させることができる。
【０２３７】
更に、第１極値が極大値Ｖｍａｘ（１）である場合、第１制御装置は、「第２極値である極小値Ｖｍｉｎ（１）が得られた第２極値取得時点」以降に得られる第１極値（即ち、極大値Ｖｍａｘ（２））が、第２極値取得時点以前に得られていた極大値Ｖｍａｘ（１）よりも小さくなるように、値Ａ１及び値Ｂ１を設定することが望ましい（図６を参照。）。
【０２３８】
同様に、第１極値が極小値Ｖｍｉｎ（１）である場合、第１制御装置は、「第２極値である極大値Ｖｍａｘ（１）が得られた第２極値取得時点」以降に得られる第１極値（即ち、極小値Ｖｍｉｎ（２））が、第２極値取得時点以前に得られていた極小値Ｖｍｉｎ（１）よりも大きくなるように、値Ａ２及び値Ｂ２を設定することが望ましい（図７を参照。）。
【０２３９】
即ち、第１制御装置の空燃比制御手段は、「前記第２極値取得時点（例えば、図６の時刻ｔ３）以降において前記極値取得手段により取得される前記第１極値（例えば、極大値Ｖｍａｘ（２））」と基準値Ｖｆとの差の絶対値（｜Ｖｍａｘ（２）−Ｖｆ｜）が、「前記第２極値取得時点（図６の時刻ｔ３）の前に前記極値取得手段によって取得された前記第１極値（極大値Ｖｍａｘ（１））」と基準値Ｖｆとの差の絶対値（｜Ｖｍａｘ（１）−Ｖｆ｜）、よりも小さくなるように、前記第１値（Ｖｍａｘ（１）−Ａ１）及び前記第２値（Ｖｍｉｎ（１）＋Ｂ１）を設定するように構成されることが好ましいと言い換えることができる。
【０２４０】
或いは、第１制御装置の空燃比制御手段は、「前記第２極値取得時点（例えば、図７の時刻ｔ３）以降において前記極値取得手段により取得される前記第１極値（例えば、極小値Ｖｍｉｎ（２））」と基準値Ｖｆとの差の絶対値（｜Ｖｍｉｎ（２）−Ｖｆ｜）が、「前記第２極値取得時点（図７の時刻ｔ３）の前に前記極値取得手段によって取得された前記第１極値（極小値Ｖｍｉｎ（１））」と基準値Ｖｆとの差の絶対値（｜Ｖｍｉｎ（１）−Ｖｆ｜）、よりも小さくなるように、前記第１値（Ｖｍｉｎ（１）＋Ａ２）及び前記第２値（Ｖｍａｘ（１）−Ｂ２）を設定するように構成されることが好ましいと言い換えることができる。
【０２４１】
これによれば、目標値ＶＲＥＦを基準値Ｖｆへとより確実に収束させることができる。
【０２４２】
更に、第１制御装置の判定装置は、
前記極値取得手段により前記第１極値が取得された場合、
（１）同取得された第１極値と前記基準値との差の絶対値が正の第１閾値（値Ａ１又は値Ａ２）よりも大きいとき（図１２のステップ１２２０での「Ｙｅｓ」との判定又はステップ１２３６での「Ｙｅｓ」との判定を参照。）、前記第１値を目標値ＶＲＥＦとして設定し（ステップ１２２２又はステップ１２３８）、
（２）同取得された第１極値と前記基準値との差の絶対値が前記第１閾値以下であるとき（図１２のステップ１２２０での「Ｎｏ」との判定又はステップ１２３６での「Ｎｏ」との判定を参照。）、基準値Ｖｆを目標値ＶＲＥＦとして設定する（ステップ１２２６又はステップ１２４２）。なお、この場合、第１制御装置の判定装置は、出力値Ｖｏｘｓが「基準値Ｖｆに設定された目標値ＶＲＥＦ」を横切った第３時点において、同第３時点まで発生していると判定していた「前記リッチ要求及び前記リーン要求のうちの何れか一方」とは異なる「他方の要求」が発生したと判定する（図１３のルーチン、図６の時刻ｔ８以降、及び、図７の時刻ｔ８以降等を参照。）、ように構成されている。
【０２４３】
更に、第１制御装置の空燃比制御手段は、図５の（Ｃ）及び図６に示したように、
前記第１極値（例えば、極大値Ｖｍａｘ（１））に比べて正の第１変更値（値Ａ１）だけ前記基準値に近い値（Ｖｍａｘ（１）−Ａ１）を前記第１値として設定し、前記第２極値（極小値Ｖｍｉｎ（１））に比べて正の第２変更値（値Ｂ１）だけ基準値Ｖｆから遠い値（Ｖｍｉｎ（１）＋Ｂ１）を前記第２値として設定するように構成されている。この場合、前記第１変更値（値Ａ１）は前記第１閾値以下（値Ａ１）であればよく、且つ、前記第２変更値（値Ｂ１）は前記第１変更値（値Ａ１）よりも小さいことが望ましい。
【０２４４】
同様に、第１制御装置の空燃比制御手段は、図４の（Ｃ）及び図７に示したように、
前記第１極値（例えば、極小値Ｖｍｉｎ（１））に比べて正の第１変更値（値Ａ２）だけ前記基準値に近い値（Ｖｍｉｎ（１）＋Ａ２）を前記第１値として設定し、前記第２極値（極大値Ｖｍａｘ（１））に比べて正の第２変更値（値Ｂ２）だけ基準値Ｖｆから遠い値（Ｖｍａｘ（１）−Ｂ２）を前記第２値として設定するように構成されている。この場合、前記第１変更値（値Ａ２）は前記第１閾値以下（値Ａ２）であればよく、且つ、前記第２変更値（値Ｂ２）は前記第１変更値（値Ａ２）よりも小さいことが望ましい。
【０２４５】
＜第２実施形態＞
次に、本発明の第２実施形態に係る制御装置（以下、単に「第２制御装置」と称呼する。）について説明する。第２制御装置は、第１変更値（値Ａ１及び値Ａ２）と第２変更値（値Ｂ１及び値Ｂ２）とを、下流側空燃比センサ５６の温度（素子温度）が低いほど「より小さく」する点のみにおいて、第１制御装置と相違している。
【０２４６】
より具体的に述べると、図３の実線Ｃ１及び破線Ｃ２に示したように、下流側空燃比センサの出力値Ｖｏｘｓは、下流側空燃比センサ５６の温度が低いほど、最大値が最大出力値Ｍａｘに近づき、最小値が最小出力値Ｍｉｎに近づく。換言すると、下流側空燃比センサの出力値Ｖｏｘｓは、下流側空燃比センサ５６の温度Ｔｒｅａｒが低いほど急激に変化する。
【０２４７】
そこで、第２制御装置のＣＰＵは、図８乃至図１３に示したルーチンに加え、図１４に示したルーチンを所定時間が経過する毎に実行するようになっている。従って、所定のタイミングになると、ＣＰＵは図１４のステップ１４００から処理を開始してステップ１４１０に進み、下流側空燃比センサ５６の温度Ｔｒｅａｒを取得する。具体的には、ＣＰＵは、下流側空燃比センサ５６のインピーダンス（又は、アドミタンス）を取得し、そのインピーダンスに基いて温度Ｔｒｅａｒを取得する。なお、ＣＰＵは、負荷ＫＬと機関回転速度ＮＥとから排ガスの温度を推定し、その排ガスの推定温度に対して一次遅れ処理等を施すことにより、温度Ｔｒｅａｒを取得してもよい。
【０２４８】
次に、ＣＰＵはステップ１４２０に進み、ステップ１４２０内に示されたテーブルＭａｐＡＢ（Ｔｒｅａｒ）に、取得した温度Ｔｒｅａｒを適用することにより、第１変更値（値Ａ１及び値Ａ２）と、第２変更値（値Ｂ１及び値Ｂ２）と、を決定する。このテーブルＭａｐＡＢ（Ｔｒｅａｒ）によれば、第１変更値及び第２変更値は、温度Ｔｒｅａｒが低いほど小さくなるように決定される。本例において、値Ａ１と値Ａ２とは等しいが、値Ａ１と値Ａ２とは相違していてもよい。更に、本例において、値Ｂ１と値Ｂ２とは等しいが、値Ｂ１と値Ｂ２とは相違していてもよい。その後、ＣＰＵはステップ１４９５に進み、本ルーチンを一旦終了する。そして、ＣＰＵはこのように決定された「第１変更値及び第２変更値」を用いて目標値ＶＲＥＦを設定する（図１２のルーチンを参照。）。
【０２４９】
前述したように、下流側空燃比センサの出力値Ｖｏｘｓは、下流側空燃比センサ５６の温度Ｔｒｅａｒが低いほど急激に変化する（触媒流出ガスの空燃比が理論空燃比ｓｔｏｉｃｈを通過した際の出力値Ｖｏｘｓの変動幅が大きくなる）。従って、第２制御装置は、第１変更値及び第２変更値を、温度Ｔｒｅａｒが低いほど「より小さくする」。これにより、出力値Ｖｏｘｓが過小になる前にリッチ要求が発生したと判定することができ、出力値Ｖｏｘｓが過大になる前にリーン要求が発生したと判定することができる。その結果、出力値Ｖｏｘｓの振幅を小さく維持しながら、出力値Ｖｏｘｓを「時間経過とともに基準値Ｖｆに近づく目標値ＶＲＥＦ」の近傍に維持することができる。従って、第２制御装置は、温度Ｔｒｅａｒに関わらずエミッションを良好に維持することができる。
【０２５０】
なお、第２制御装置は、値Ａ１及び値Ａ２のみを温度Ｔｒｅａｒに応じて変化させ、且つ、値Ｂ１及び値Ｂ２を一定値に維持してもよい。更に、第２制御装置は、値Ａ１、値Ａ２、値Ｂ１及び値Ｂ２のうちの少なくとも一つ、を温度Ｔｒｅａｒが低いほど「より小さい値」に設定してもよい。加えて、第２制御装置は、第１閾値としての値（Ａ１，Ａ２）を、第１変更値と同様に温度Ｔｒｅａｒに応じて変化させてもよく、一定値に維持してもよい。
【０２５１】
＜第３実施形態＞
次に、本発明の第３実施形態に係る制御装置（以下、単に「第３制御装置」と称呼する。）について説明する。第３制御装置は、第１変更値（値Ａ１及び値Ａ２）及び第２変更値（値Ｂ１及び値Ｂ２）を、触媒４３を通過する排ガスの流量（従って、吸入空気量Ｇａ）が小さいほど「より小さく」する点のみにおいて、第１制御装置と相違している。
【０２５２】
より具体的に述べると、触媒流出ガスの空燃比が理論空燃比ｓｔｏｉｃｈを横切る際の「下流側空燃比センサの出力値Ｖｏｘｓの単位時間あたりの変化幅」は、触媒４３を通過する排ガスの流量が小さい場合、触媒４３を通過する排ガスの流量が大きい場合に比べて大きくなる。これは、排ガスの流量が小さい場合、排ガスの流量が大きい場合に比べ、酸素吸蔵量ＯＳＡが最大酸素吸蔵量Ｃｍａｘ近傍値に到達するまで、触媒４３の下流に酸素が流出し難く、酸素吸蔵量ＯＳＡが最大酸素吸蔵量Ｃｍａｘ近傍値に到達すると酸素が触媒４３の下流に急激に流出することによると推定される。同様に、排ガスの流量が小さい場合、排ガスの流量が大きい場合に比べ、酸素吸蔵量ＯＳＡが「０」の近傍値に到達するまで、触媒４３の下流に未燃物が流出し難く、酸素吸蔵量ＯＳＡが「０」の近傍値に到達すると未燃物が触媒４３の下流に急激に流出することによると推定される。
【０２５３】
そこで、第３制御装置のＣＰＵは、図８乃至図１３に示したルーチンに加え、図１５に示したルーチンを所定時間が経過する毎に実行するようになっている。従って、所定のタイミングになると、ＣＰＵは図１５のステップ１５００から処理を開始してステップ１５１０に進み、吸入空気量Ｇａを取得する。吸入空気量Ｇａは、触媒４３を通過する排ガスの流量を表す。
【０２５４】
次に、ＣＰＵはステップ１５２０に進み、ステップ１５２０内に示されたテーブルＭａｐＡＢ（Ｇａ）に、取得した吸入空気量Ｇａを適用することにより、第１変更値（値Ａ１及び値Ａ２）と、第２変更値（値Ｂ１及び値Ｂ２）と、を決定する。このテーブルＭａｐＡＢ（Ｇａ）によれば、第１変更値及び第２変更値は、吸入空気量Ｇａが小さいほど小さくなるように決定される。本例において、値Ａ１と値Ａ２とは等しいが、値Ａ１と値Ａ２とは相違していてもよい。更に、本例において、値Ｂ１と値Ｂ２とは等しいが、値Ｂ１と値Ｂ２とは相違していてもよい。その後、ＣＰＵはステップ１５９５に進み、本ルーチンを一旦終了する。そして、ＣＰＵはこのように決定された「第１変更値及び第２変更値」を用いて目標値ＶＲＥＦを設定する（図１２のルーチンを参照。）。
【０２５５】
これによれば、排ガスの流量が小さいことに起因して下流側空燃比センサの出力値Ｖｏｘｓが急激に変化する場合、第１変更値及び第２変更値が小さい値となる。よって、出力値Ｖｏｘｓが過小になる前にリッチ要求が発生したと判定することができ、出力値Ｖｏｘｓが過大になる前にリーン要求が発生したと判定することができる。その結果、出力値Ｖｏｘｓの振幅を小さく維持しながら、出力値Ｖｏｘｓを「時間経過とともに基準値Ｖｆに近づく目標値ＶＲＥＦ」の近傍に維持することができる。従って、第３制御装置は、排ガスの流量に関わらずエミッションを良好に維持することができる。
【０２５６】
なお、第３制御装置は、値Ａ１及び値Ａ２のみを吸入空気量Ｇａに応じて変化させ、且つ、値Ｂ１及び値Ｂ２を一定値に維持してもよい。更に、第３制御装置は、値Ａ１、値Ａ２、値Ｂ１及び値Ｂ２のうちの少なくとも一つ、を吸入空気量Ｇａが小さいほど小さい値に設定してもよい。加えて、第３制御装置は、第１閾値としての値（Ａ１，Ａ２）を、第１変更値と同様に吸入空気量Ｇａに応じて変化させてもよく、一定値に維持してもよい。
【０２５７】
＜第４実施形態＞
次に、本発明の第４実施形態に係る制御装置（以下、単に「第４制御装置」と称呼する。）について説明する。第４制御装置は、第１変更値（値Ａ１及び値Ａ２）を、第１極値（基準値Ｖｆよりも大きい極大値Ｖｍａｘ、及び、基準値Ｖｆよりも小さい極小値Ｖｍｉｎ）が大きいほど「より小さく」する点のみにおいて、第１制御装置と相違している。
【０２５８】
第４制御装置のＣＰＵは、図８乃至図１１と、図１３と、に示したルーチンに加え、図１２に代わる図１６に示したルーチンを実行するようになっている。即ち、ＣＰＵは、図１１のステップ１１５０に進んだとき、図１６のステップ１６００へと進む。更に、ＣＰＵは、図１６のステップ１６９５に進んだとき、図１１のステップ１１５０を経由してステップ１１９５へと進む。
【０２５９】
図１６に示したルーチンは、図１２に示したルーチンに「ステップ１６１０乃至ステップ１６４０」を追加した点のみにおいて、図１２に示したルーチンと相違している。従って、以下、この相違点を中心として説明する。
【０２６０】
ＣＰＵは、ステップ１２２０にて「Ｙｅｓ」と判定した場合、ステップ１６１０に進み、極大値Ｖｍａｘから値（Ａ１＋ａ１）を減じた値（Ｖｍａｘ−（Ａ１＋ａ１））が基準値Ｖｆよりも大きいか否かを判定する。値ａ１は正の所定値であり、値（Ａ１＋ａ１）は、最大出力値Ｍａｘと基準値Ｖｆとの差の絶対値よりも小さい。
【０２６１】
そして、値（Ｖｍａｘ−（Ａ１＋ａ１））が基準値Ｖｆよりも大きい場合、ＣＰＵはステップ１６１０からステップ１６２０に進み、値（Ｖｍａｘ−Ａ１ｓ）を目標値ＶＲＥＦに設定する。値Ａ１ｓは、値Ａ１よりも小さい正の所定値である。その後、ＣＰＵはステップ１２２４へと進む。これに対し、値（Ｖｍａｘ−（Ａ１＋ａ１））が基準値Ｖｆ以下である場合、ＣＰＵはステップ１６１０からステップ１２２２に進み、値（Ｖｍａｘ−Ａ１）を目標値ＶＲＥＦに設定する。その後、ＣＰＵはステップ１２２４へと進む。
【０２６２】
即ち、ＣＰＵは、極大値Ｖｍａｘと基準値Ｖｆとの差の絶対値が値（Ａ１＋ａ１）よりも大きい場合に目標値ＶＲＥＦを値（Ｖｍａｘ−Ａ１ｓ）に設定し、極大値Ｖｍａｘと基準値Ｖｆとの差の絶対値が値Ａ１よりも大きく且つ値（Ａ１＋ａ１）以下である場合に目標値ＶＲＥＦを値（Ｖｍａｘ−Ａ１）に設定する。換言すると、極大値Ｖｍａｘが所定値（Ｖｆ＋Ａ１＋ａ１）よりも大きい場合、極大値Ｖｍａｘが所定値（Ｖｆ＋Ａ１＋ａ１）よりも小さい場合に比べ、第１値を大きい値に設定する。
【０２６３】
更に、ＣＰＵは、ステップ１２３６にて「Ｙｅｓ」と判定した場合、ステップ１６３０に進み、極小値Ｖｍｉｎに値（Ａ２＋ａ２）を加えた値（Ｖｍｉｍ＋（Ａ２＋ａ２））が基準値Ｖｆよりも小さいか否かを判定する。値ａ２は正の所定値であり、値（Ａ２＋ａ２）は、最小出力値Ｍｉｎと基準値Ｖｆとの差の絶対値よりも小さい。
【０２６４】
そして、値（Ｖｍｉｍ＋（Ａ２＋ａ２））が基準値Ｖｆよりも小さい場合、ＣＰＵはステップ１６３０からステップ１６４０に進み、値（Ｖｍｉｎ＋Ａ２ｓ）を目標値ＶＲＥＦに設定する。値Ａ２ｓは、値Ａ２よりも小さい正の所定値である。その後、ＣＰＵはステップ１２４０へと進む。これに対し、値（Ｖｍｉｍ＋（Ａ２＋ａ２））が基準値Ｖｆ以上である場合、ＣＰＵはステップ１６３０からステップ１２３８に進み、値（Ｖｍｉｎ＋Ａ２）を目標値ＶＲＥＦに設定する。その後、ＣＰＵはステップ１２４０へと進む。
【０２６５】
即ち、ＣＰＵは、極小値Ｖｍｉｎと基準値Ｖｆとの差の絶対値が値（Ａ２＋ａ２）よりも大きい場合に目標値ＶＲＥＦを値（Ｖｍｉｎ＋Ａ２ｓ）に設定し、極小値Ｖｍｉｎと基準値Ｖｆとの差の絶対値が値Ａ２よりも大きく且つ値（Ａ２＋ａ２）以下である場合に目標値ＶＲＥＦを値（Ｖｍｉｎ＋Ａ２）に設定する。換言すると、極小値Ｖｍｉｎが所定値（Ｖｆ−（Ａ２＋ａ２））よりも小さい場合、極小値Ｖｍｉｎが所定値（Ｖｆ−（Ａ２＋ａ２））よりも大きい場合に比べ、第１値を小さい値に設定する。
【０２６６】
例えば、フューエルカット制御が行われると、触媒流出ガスには多量の酸素が含まれる。そのため、下流側空燃比センサの出力値Ｖｏｘｓは最小出力値Ｍｉｎに極めて近い値を示す。この場合、下流側空燃比センサ５６の拡散抵抗層には多量の酸素が残存しているので、フューエルカット制御の終了後に触媒流出ガスの空燃比がリッチ空燃比になった場合であっても、下流側空燃比センサの出力値Ｖｏｘｓは直ちに増大しない。即ち、触媒流出ガスの空燃比の変化に対する出力値Ｖｏｘｓの変化が遅れる。
【０２６７】
更に、フューエルカット制御の終了後に機関の空燃比がリッチ空燃比に制御される場合（フューエルカット終了後増量制御が実行される場合）、触媒流出ガスには多量の未燃物が含まれる。そのため、下流側空燃比センサの出力値Ｖｏｘｓは最大出力値Ｍａｘに極めて近い値を示す。この場合、下流側空燃比センサ５６の拡散抵抗層には多量の未燃物が残存しているので、フューエルカット終了後増量制御の終了後に触媒流出ガスの空燃比がリーン空燃比になった場合であっても、下流側空燃比センサの出力値Ｖｏｘｓは直ちに減少しない。即ち、触媒流出ガスの空燃比の変化に対する出力値Ｖｏｘｓの変化が遅れる。
【０２６８】
このように、多量の酸素又は多量の未燃物が下流側空燃比センサ５６に到達すると、下流側空燃比センサ５６は所謂「一次被毒状態」と呼ばれる状態となり、センサの応答性が低下する。
【０２６９】
そこで、第４制御装置は、上述したように、極大値Ｖｍａｘが極めて大きくなった場合（即ち、極大値Ｖｍａｘと基準値Ｖｆとの差の絶対値が値（Ａ１＋ａ１）よりも大きい場合）、目標値ＶＲＥＦを「極大値Ｖｍａｘにより近い値（Ｖｍａｘ−Ａ１ｓ）亅に設定する。同様に、第４制御装置は、極小値Ｖｍｉｎが極めて小さくなった場合（即ち、極小値Ｖｍｉｎと基準値Ｖｆとの差の絶対値が値（Ａ２＋ａ２）よりも大きい場合）、目標値ＶＲＥＦを「極小値Ｖｍｉｎにより近い値（Ｖｍｉｎ＋Ａ２ｓ）」に設定する。この結果、センサの応答性が低下している場合であっても、リーン要求又はリッチ要求の判定が遅れないようにすることができるので、機関の空燃比を「リーン空燃比からリッチ空燃比へと、又は、その逆へと」遅れなく切り換えることができる。従って、第４制御装置は、出力値Ｖｏｘｓの振幅が大きくなることを回避しながら、出力値Ｖｏｘｓを基準値Ｖｆに近づけることができるので、エミッションを良好に維持することができる。
【０２７０】
このように、第４制御装置は、
前記第１極値（例えば、極大値Ｖｍａｘ）と基準値Ｖｆとの差の絶対値が正の第２閾値（Ａ１＋ａ１）よりも大きい場合における前記第１変更値の値を、前記第１極値と前記基準値との差の絶対値が前記第２閾値以下である場合における前記第１変更値の値（Ａ１）よりも小さい値（Ａ１ｓ）に設定するように構成された装置であると言うことができる。
【０２７１】
同様に、第４制御装置は、
前記第１極値（例えば、極小値Ｖｍｉｎ）と基準値Ｖｆとの差の絶対値が正の第２閾値（Ａ２＋ａ２）よりも大きい場合における前記第１変更値の値を、前記第１極値と前記基準値との差の絶対値が前記第２閾値以下である場合における前記第１変更値の値（Ａ２）よりも小さい値（Ａ２ｓ）に設定するように構成された装置であると言うことができる。
【０２７２】
なお、第４制御装置は、
前記第１極値（例えば、極大値Ｖｍａｘ）と基準値Ｖｆとの差の絶対値が正の第２閾値（Ａ１＋ａ１）よりも大きい場合における前記第２変更値の値を、前記第１極値と前記基準値との差の絶対値が前記第２閾値以下である場合における前記第２変更値の値（Ｂ１）よりも小さい値（Ｂ１ｓ）に設定するように構成されてもよい。
【０２７３】
同様に、第４制御装置は、
前記第１極値（例えば、極小値Ｖｍｉｎ）と基準値Ｖｆとの差の絶対値が正の第２閾値（Ａ２＋ａ２）よりも大きい場合における前記第２変更値の値を、前記第１極値と前記基準値との差の絶対値が前記第２閾値以下である場合における前記第２変更値の値（Ｂ２）よりも小さい値（Ｂ２ｓ）に設定するように構成されてもよい。
【０２７４】
更に、第４制御装置は、第１変更値Ａ１及び第２変更値Ｂ１のうちの少なくとも一つを、基準値Ｖｆよりも大きい極大値Ｖｍａｘが大きくなるほど連続的に小さくなるように設定してもよい。同様に、第４制御装置は、第１変更値Ａ２及び第２変更値Ｂ２のうちの少なくとも一つを、基準値Ｖｆよりも小さい極小値Ｖｍｉｎが小さくなるほど連続的に小さくなるように設定してもよい。
【０２７５】
＜第５実施形態＞
次に、本発明の第５実施形態に係る制御装置（以下、単に「第５制御装置」と称呼する。）について説明する。第５制御装置は、第１変更値（値Ａ１及び値Ａ２の少なくとも一方）を、フューエルカット制御の終了時点から所定時間が経過する時点までの期間（フューエルカット制御終了後期間）、フューエルカット制御終了後期間以外の期間に比べ、小さくする点のみにおいて、第１制御装置と相違している。
【０２７６】
第５制御装置のＣＰＵは、図１６に代わる図１７に示したルーチンを実行する点のみにおいて、第４制御装置のＣＰＵと相違している。従って、以下、この相違点を中心として説明する。
【０２７７】
図１７に示したルーチンは、図１６に示したルーチンの「ステップ１６１０及び１６３０」を、「ステップ１７１０及びステップ１７２０」にそれぞれ置換した点のみにおいて、図１６に示したルーチンと相違している。
【０２７８】
ステップ１７１０において、ＣＰＵは、現時点がフューエルカット制御終了後期間内であるか否かを判定する。そして、現時点がフューエルカット制御終了後期間内である場合、ＣＰＵはステップ１７１０からステップ１６２０に進む。現時点がフューエルカット制御終了後期間内でない場合、ＣＰＵはステップ１７１０からステップ１２２２に進む。
【０２７９】
ステップ１７２０において、ＣＰＵは、現時点がフューエルカット制御終了後期間内であるか否かを判定する。そして、現時点がフューエルカット制御終了後期間内である場合、ＣＰＵはステップ１７２０からステップ１６４０に進む。現時点がフューエルカット制御終了後期間内でない場合、ＣＰＵはステップ１７２０からステップ１２３８に進む。
【０２８０】
フューエルカット制御終了後期間内において、下流側空燃比センサ５６は前述した一次被毒状態にある可能性が高い。従って、第５制御装置のように、フューエルカット制御終了後期間内において第１変更値を小さくする（目標値ＶＲＥＦを、値Ｖｍａｘ−Ａ１に代えて値Ｖｍａｘ−Ａ１ｓに設定し、或いは、値Ｖｍｉｎ＋Ａ２に代えて値Ｖｍｉｎ＋Ａ２ｓに設定する）。即ち、第５制御装置は、「フューエルカット制御終了後期間内の第１変更値」を「フューエルカット制御終了期間内以外の期間における第１変更値」よりも小さい値に設定する。
【０２８１】
この結果、下流側空燃比センサ５６の応答性が低下している場合であっても、リーン要求又はリッチ要求の判定が遅れないようにすることができるので、機関の空燃比を「リーン空燃比からリッチ空燃比へと、又は、その逆へと」遅れなく切り換えることができる。従って、第５制御装置は、出力値Ｖｏｘｓの振幅が大きくなることを回避しながら、出力値Ｖｏｘｓを基準値Ｖｆに近づけることができるので、エミッションを良好に維持することができる。
【０２８２】
なお、第５制御装置は、「フューエルカット制御終了後期間内の第２変更値」を「フューエルカット制御終了期間内以外の期間における第２変更値」よりも小さい値に設定してもよい。
【０２８３】
また、「フューエルカット制御終了後期間」は、フューエルカット制御終了後に機関の空燃比を所定期間に渡りリッチ空燃比に設定する制御（フューエルカット終了後増量制御）と、そのフューエルカット終了後増量制御の終了後から所定時間が経過する時点までの期間と、を加えた期間を含んでいてもよい。
【０２８４】
更に、第５制御装置は、ステップ１７１０を「現時点が、フューエルカット終了後増量制御の終了後から所定時間が経過する期間内であるか否かを判定するステップ」へと置換してもよい。更に、第５制御装置は、ステップ１７２０を「現時点が、フューエルカット終了後増量制御の終了後から所定時間が経過する期間内であるか否かを判定するステップ」へと置換してもよい。加えて、第５制御装置は、第１閾値としての値（Ａ１，Ａ２）を、一定値に維持しておくことが好ましい。
【０２８５】
＜第６実施形態＞
次に、本発明の第６実施形態に係る制御装置（以下、単に「第６制御装置」と称呼する。）について説明する。第６制御装置は、第１変更値（値Ａ１及び値Ａ２）を、機関が所定の加速状態にある場合、機関が所定の加速状態にない場合（定常状態にある場合）に比べ、「より小さく」する点のみにおいて、第１制御装置と相違している。
【０２８６】
第６制御装置のＣＰＵは、図１６に代わる図１８に示したルーチンを実行する点のみにおいて、第４制御装置のＣＰＵと相違している。従って、以下、この相違点を中心として説明する。
【０２８７】
図１８に示したルーチンは、図１６に示したルーチンの「ステップ１６１０及び１６３０」を、ステップ１８１０及びステップ１８２０にそれぞれ置換した点のみにおいて、図１６に示したルーチンと相違している。
【０２８８】
ステップ１８１０において、ＣＰＵは、現時点の機関１０の状態が所定の加速状態にあるか否かを判定する。より具体的に述べると、ＣＰＵは、現時点が、「スロットル弁開度ＴＡの単位時間あたりの変化量ΔＴＡが過渡判定閾値ΔＴＡｔｈ以上となった時点から、所定時間が経過する時点までの期間（加速期間）内」であるとき、現時点の機関１０の状態が所定の加速状態にあると判定する。なお、加速状態にあるか否かを判定するパラメータは、スロットル弁ＴＡの単位時間あたりの変化量ΔＴＡの他、アクセルペダル操作Ａｃｃｐの単位時間あたりの変化量ΔＡｃｃｐ、吸入空気量Ｇａの単位時間あたりの変化量ΔＧａ、負荷ＫＬの単位時間あたりの変化量ΔＫＬ、機関１０を搭載した車両の速度の単位時間あたりの変化量ΔＳＰＤ等、の何れかであってもよい。
【０２８９】
そして、現時点が加速期間内である場合、ＣＰＵはステップ１８１０からステップ１６２０に進む。現時点が加速期間内でない場合、ＣＰＵはステップ１８１０からステップ１２２２に進む。
【０２９０】
ステップ１８２０において、ＣＰＵは、現時点が加速期間内であるか否かを判定する。そして、現時点が加速期間内である場合、ＣＰＵはステップ１８２０からステップ１６４０に進む。現時点が加速期間内でない場合、ＣＰＵはステップ１８２０からステップ１２３８に進む。
【０２９１】
加速期間内において、触媒４３の酸素吸蔵量ＯＳＡは、「最大酸素吸蔵量Ｃｍａｘ近傍値又は「０」の近傍値」に到達する可能性が高く、更に、その状態において多量の「ＮＯｘ又は未燃物」が触媒４３に流入する可能性が高い。
【０２９２】
そこで、第６制御装置は、加速期間内において第１変更値を小さくする（目標値ＶＲＥＦを、値Ｖｍａｘ−Ａ１に代えて値Ｖｍａｘ−Ａ１ｓに設定するか、値Ｖｍｉｎ＋Ａ２に代えて値Ｖｍｉｎ＋Ａ２ｓに設定する）。即ち、第６制御装置は、「加速期間内の第１変更値」を「加速期間内以外の期間における第１変更値」よりも小さい値に設定する。
【０２９３】
この結果、リーン要求又はリッチ要求の判定をより迅速に行うことができる。換言すると、機関の空燃比を「リーン空燃比からリッチ空燃比へと、又は、その逆へと」遅れなく切り換えることができる。従って、第６制御装置は、エミッションを良好に維持することができる。
【０２９４】
なお、第６制御装置は、「加速期間内の第２変更値」を「加速期間内以外の期間における第２変更値」よりも小さい値に設定してもよい。
【０２９５】
＜第７実施形態＞
次に、本発明の第７実施形態に係る制御装置（以下、単に「第７制御装置」と称呼する。）について説明する。第７制御装置は、メインＦＢ学習値ＫＧの学習条件を第１制御装置の学習条件と異なる条件とした点においてのみ、第１制御装置と相違している。従って、以下、この相違点を中心として説明する。
【０２９６】
より具体的に述べると、第７制御装置のＣＰＵは、第１制御装置のＣＰＵと同様、図８乃至図１３に示したルーチンを実行する。但し、第７制御装置のＣＰＵは、図９のステップ９５５において、以下の条件の総てが成立したときに学習条件が成立したと判定する。
（条件１）図９のルーチンが実行される時間間隔（所定時間ｔａ）の自然数倍の時間が経過した。
（条件２）目標値ＶＲＥＦが基準値Ｖｆに一致した状態が所定時間ｔ以上経過している。
【０２９７】
即ち、第７制御装置は、目標値ＶＲＥＦが基準値Ｖｆに設定されている場合に「メインＦＢ学習値ＫＧを更新する学習制御」を実行し、且つ、目標値ＶＲＥＦが基準値Ｖｆに設定されていない場合に前記学習制御を実行しない（禁止する）ように構成されている。
【０２９８】
目標値ＶＲＥＦが基準値Ｖｆに向けて変化している状態においては、機関の空燃比の時間的平均値が理論空燃比ｓｔｏｉｃｈに一致していない可能性が高い。従って、目標値ＶＲＥＦが基準値Ｖｆに向けて変化している状態においてメインＦＢ学習値ＫＧを更新すると、メインＦＢ学習値ＫＧが不正確な値になる可能性が高い。
【０２９９】
第７制御装置は、目標値ＶＲＥＦが基準値Ｖｆに一致している場合にのみメインＦＢ学習値ＫＧの更新を行う（学習制御を実行する）。従って、メインＦＢ学習値ＫＧが誤った値になる可能性を低減することができる。その結果、第７制御装置は、エミッションを良好に維持することができる。
【０３００】
なお、第７制御装置は、図９のステップ９５０における補正係数平均値ＦＡＦＡＶの更新を、目標値ＶＲＥＦが基準値Ｖｆに一致した状態が所定時間ｔ以上経過している場合にのみ実行するように構成されることが好ましい。
【０３０１】
なお、第７制御装置及び本発明の他の実施形態に係る制御装置は、
機関１０に吸入される吸入空気量（筒内吸入空気量Ｍｃ（ｋ））を取得するとともに（図８のステップ８３０）、その取得された吸入空気量（筒内吸入空気量Ｍｃ（ｋ））に基づいて「機関１０に供給される混合気」の空燃比を理論空燃比に一致させるための基本燃料噴射量Ｆｂを算出する（図８のステップ８４０）基本燃料噴射量算出手段と、
前記排気通路であって触媒４３よりも上流に配設されるとともに、触媒４３に流入する排ガスの空燃比に応じた出力値を出力する上流側空燃比センサ５５と、
上流側空燃比センサ５５の出力値Ｖａｂｙｆｓにより表される上流側空燃比（ａｂｙｆｓ）が理論空燃比に一致するように基本燃料噴射量Ｆｂを補正するメインフィードバック量（ＤＦｉ）を算出するメインフィードバック量算出手段（図９のステップ９０５乃至ステップ９４５）と、
前記リーン要求が発生していると判定されている期間において前記基本燃料噴射量を増大させるように前記基本燃料噴射量を補正し且つ前記リッチ要求が発生していると判定されている期間において前記基本燃料噴射量を減少させるように前記基本燃料噴射量を補正するサブフィードバック量（Ｖａｆｓｆｂ）を算出するサブフィードバック量算出手段（図１０のステップ１００５乃至ステップ１０３５）と、
基本燃料噴射量Ｆｂを、前記メインフィードバック量及び前記サブフィードバック量に基く空燃比補正量（ＦＡＦ）により補正して指示燃料噴射量Ｆｉを算出するとともに（図９のステップ９１０及び図８のステップ８５０等）、その算出された指示燃料噴射量Ｆｉの燃料を機関１０に供給することにより前記フィードバック制御を実行する（図８のステップ８６０等）燃料噴射量制御手段と、
を含む空燃比制御装置である。
【０３０２】
更に、第７制御装置の前記空燃比制御手段は、
前記メインフィードバック量の平均値に相関する値（例えば、ＦＡＦＡＶ、又はＦＡＦＡＶが大きいとき増大し且つＦＡＦＡＶが小さいとき減少する値）を空燃比学習値（メインＦＢ学習値ＫＧ）として取得する学習制御を実行する学習手段（図９のステップ９５０乃至ステップ９７５）を備え、
前記燃料噴射量制御手段は、
前記基本燃料噴射量Ｆｂを前記空燃比学習値ＫＧにも基いて補正することにより前記指示燃料噴射量を算出するように構成され（図８のステップ８５０）、
第７制御装置の前記学習手段は、
前記目標値が前記基準値に設定されている場合に前記学習制御を実行し、且つ、前記目標値が前記基準値に設定されていない場合に前記学習制御を実行しないように構成されている（図９のステップ９５５、及び、上述した（条件２）を参照。）。
【０３０３】
＜第８実施形態＞
次に、本発明の第８実施形態に係る制御装置（以下、単に「第８制御装置」と称呼する。）について説明する。第８制御装置は、目標値ＶＲＥＦが基準値Ｖｆに収束しない場合、目標値ＶＲＥＦに相関する値に基いて空燃比学習値（メインＦＢ学習値ＫＧ）を修正するように構成されている点においてのみ、第７制御装置と相違する。従って、以下、この相違点を中心として説明する。
【０３０４】
より具体的に述べると、第８制御装置のＣＰＵは、第７制御装置のＣＰＵと同様のルーチンを実行する。更に、第８制御装置のＣＰＵは、図１９に示したルーチンを所定時間が経過する毎に実行するようになっている。
【０３０５】
従って、所定のタイミングになると、ＣＰＵは図１９のステップ１９００から処理を開始してステップ１９１０に進み、メインフィードバック制御条件が成立しているか否かを判定する。このとき、メインフィードバック制御条件が成立していなければ、ＣＰＵはステップ１９１０からステップ１９９５に直接進んで本ルーチンを一旦終了する。
【０３０６】
一方、ＣＰＵがステップ１９１０の処理を実行する時点において、メインフィードバック制御条件が成立していると、ＣＰＵはそのステップ１９１０にて「Ｙｅｓ」と判定してステップ１９２０に進み、「目標値ＶＲＥＦが第１継続時間以上に渡り基準値Ｖｆに一致している状態（以下、「目標値収束状態」とも称呼する。）」が第２継続時間ｔ  ｈｒｅｆ以上に渡って発生していないか否かを判定する。
【０３０７】
「目標値収束状態」が「現時点から第２継続時間ｔ  ｈｒｅｆだけ前の時点」から「現時点」までの期間内に発生していれば、ＣＰＵはステップ１９２０にて「Ｎｏ」と判定し、ステップ１９９５に直接進んで本ルーチンを一旦終了する。これに対し、「目標値収束状態」が第２継続時間ｔ  ｈｒｅｆ以上に渡って発生していないとき、ＣＰＵはステップ１９２０にて「Ｙｅｓ」と判定してステップ１９３０に進み、目標値ＶＲＥＦが、値（Ｖｍａｘ−Ａ１）と値（Ｖｍｉｎ＋Ａ２）とに交互に変化しているか否かを判定する。
【０３０８】
このとき、目標値ＶＲＥＦが「値（Ｖｍａｘ−Ａ１）と値（Ｖｍｉｎ＋Ａ２）と」に交互に変化していると、ＣＰＵはステップ１９３０にて「Ｙｅｓ」と判定し、ステップ１９９５に直接進んで本ルーチンを一旦終了する。
【０３０９】
目標値ＶＲＥＦが「値（Ｖｍａｘ−Ａ１）と値（Ｖｍｉｎ＋Ａ２）と」に交互に変化していない場合、ＣＰＵはステップ１９３０にて「Ｎｏ」と判定してステップ１９４０に進み、目標値ＶＲＥＦの平均値（過去の所定時点から現時点までの目標値ＶＲＥＦの平均値、目標値ＶＲＥＦの平均値に相関する値）が基準値Ｖｆよりも大きいか否かを判定する。
【０３１０】
目標値ＶＲＥＦの平均値が基準値Ｖｆよりも大きい場合、ＣＰＵはステップ１９４０にて「Ｙｅｓ」と判定してステップ１９５０に進み、メインＦＢ学習値ＫＧを正の所定値ｄＫＧ１だけ減少させる。即ち、メインＦＢ学習値ＫＧは、その時点のメインＦＢ学習値ＫＧに比べて「基本燃料噴射量Ｆｂを、より減少する値」へと修正される。その後、ＣＰＵはステップ１９９５に進み、本ルーチンを一旦終了する。
【０３１１】
ＣＰＵがステップ１９４０の処理を実行する時点において、目標値ＶＲＥＦの平均値が基準値Ｖｆよりも小さい場合、ＣＰＵはステップ１９４０にて「Ｎｏ」と判定してステップ１９６０に進み、メインＦＢ学習値ＫＧを正の所定値ｄＫＧ２だけ増大させる。即ち、メインＦＢ学習値ＫＧは、その時点のメインＦＢ学習値ＫＧに比べて「基本燃料噴射量Ｆｂを、より増大する値」へと修正される。その後、ＣＰＵはステップ１９９５に進み、本ルーチンを一旦終了する。
【０３１２】
例えば、メインＦＢ学習値ＫＧの学習が誤ってなされ、メインＦＢ学習値ＫＧが「基本燃料噴射量Ｆｂを過剰に増大するような値」になっている場合、機関の空燃比の中心は理論空燃比ｓｔｏｉｃｈよりも小さくなる。従って、触媒流出ガスの空燃比の平均もリッチ空燃比となる。この場合、メインＦＢ学習値ＫＧの適正値からの誤差が大きいと、下流側空燃比センサの出力値Ｖｏｘｓは、図２０に示したように、基準値Ｖｆよりも大きい値を中心に振動する。即ち、極大値Ｖｍａｘは最大出力値Ｍａｘ近傍の値になり続ける。この結果、目標値ＶＲＥＦは、リーン判定用目標値ＶＲＥＦＬである値（Ｖｍａｘ−Ａ１）と、リッチ判定用目標値ＶＲＥＦＲである値Ｖｆと、に交互に変化する。換言すると、目標値ＶＲＥＦは基準値Ｖｆに収束せず、「目標値収束状態」が第２継続時間ｔ  ｈｒｅｆ以上に渡って発生しない。
【０３１３】
そこで、第８制御装置は、図２０に示した状態が生じた場合、上述したように、メインＦＢ学習値ＫＧを正の所定値ｄＫＧ１だけ減少させる。その結果、機関の空燃比の中心を理論空燃比ｓｔｏｉｃｈに接近させることができ、目標値ＶＲＥＦを基準値Ｖｆへと収束させることが可能となる。
【０３１４】
同様に、メインＦＢ学習値ＫＧの学習が誤ってなされ、メインＦＢ学習値ＫＧが「基本燃料噴射量Ｆｂを過剰に減少するような値」になっている場合、機関の空燃比の中心は理論空燃比ｓｔｏｉｃｈよりも大きくなる。従って、触媒流出ガスの空燃比の平均もリーン空燃比となる。この場合、メインＦＢ学習値ＫＧの適正値からの誤差が大きいと、下流側空燃比センサの出力値Ｖｏｘｓは、図２１に示したように、基準値Ｖｆよりも小さい値を中心に振動する。即ち、極小値Ｖｍｉｎは最小出力値Ｍｉｎ近傍の値になり続ける。この結果、目標値ＶＲＥＦは、リッチ判定用目標値ＶＲＥＦＲである値（Ｖｍｉｎ＋Ａ２）と、リーン判定用目標値ＶＲＥＦＬである値Ｖｆと、に交互に変化する。換言すると、目標値ＶＲＥＦは基準値Ｖｆに収束せず、「目標値収束状態」が第２継続時間ｔ  ｈｒｅｆ以上に渡って発生しない。
【０３１５】
そこで、第８制御装置は、図２１に示した状態が生じた場合、上述したように、メインＦＢ学習値ＫＧを正の所定値ｄＫＧ２だけ増大させる。その結果、機関の空燃比の中心を理論空燃比ｓｔｏｉｃｈに接近させることができ、目標値ＶＲＥＦを基準値Ｖｆへと収束させることが可能となる。
【０３１６】
但し、第８制御装置は、図２２に示したように、目標値ＶＲＥＦが「値（Ｖｍａｘ−Ａ１）と値（Ｖｍｉｎ＋Ａ２）と」に交互に変化している状態が所定時間（第３継続時間）以上継続している場合、メインＦＢ学習値ＫＧの修正を実行しない（図１９のステップ１９３０での「Ｎｏ」との判定を参照。）。即ち、第８制御装置は、「リーン判定用目標値ＶＲＥＦＬが値（Ｖｍａｘ−Ａ１）であり且つリッチ判定用目標値ＶＲＥＦＲが値（Ｖｍｉｎ＋Ａ２）である状態」が所定時間以上継続している場合（以下、この場合を「目標値振動状態」とも称呼する。）、メインＦＢ学習値ＫＧを変更しない。
【０３１７】
なお、第１継続時間は、「リーン要求からリッチ要求へと、又は、その逆へと」空燃比要求が変化したと判定された回数（反転回数）が第１所定回数以上となる時間に設定することができる。同様に、第２継続時間は、反転回数が第２所定回数以上となる時間に設定することができる。第３継続時間は、反転回数が第３所定回数以上となる時間に設定することができる。
【０３１８】
＜第９実施形態＞
次に、本発明の第９実施形態に係る制御装置（以下、単に「第９制御装置」と称呼する。）について説明する。第９制御装置は、目標値ＶＲＥＦが基準値Ｖｆに収束せず且つ図２２に示した目標値振動状態が発生している場合、目標値振動状態が発生していない場合に比べ、第１変更値（値Ａ１及び値Ａ２）を小さくする点のみにおいて、第８制御装置と相違している。従って、以下、この相違点を中心として説明する。
【０３１９】
より具体的に述べると、第９制御装置のＣＰＵは、第８制御装置のＣＰＵと同様のルーチンを実行する。更に、第９制御装置のＣＰＵは、図２３に示したルーチンを所定時間が経過する毎に実行するようになっている。
【０３２０】
図２３に示したルーチンは、図１６に示したルーチンの「ステップ１６１０及び１６３０」を、ステップ２３１０及びステップ２３２０にそれぞれ置換した点のみにおいて、図１６に示したルーチンと相違している。
【０３２１】
ステップ２３１０において、ＣＰＵは、現時点が上述した目標値振動状態であるか否かを判定する。そして、現時点が目標値振動状態である場合、ＣＰＵはステップ２３１０からステップ１６２０に進む。現時点が目標値振動状態でない場合、ＣＰＵはステップ２３１０からステップ１２２２に進む。
【０３２２】
ステップ２３２０において、ＣＰＵは、現時点が目標値振動状態であるか否かを判定する。そして、現時点が目標値振動状態である場合、ＣＰＵはステップ２３２０からステップ１６４０に進む。現時点が目標値振動状態でない場合、ＣＰＵはステップ２３２０からステップ１２３８に進む。
【０３２３】
即ち、第９制御装置は、目標値振動状態にある場合、目標値振動状態にない場合に比べ、第１変更値を小さくする（目標値ＶＲＥＦを、値Ｖｍａｘ−Ａ１に代えて値Ｖｍａｘ−Ａ１ｓに設定し、或いは、値Ｖｍｉｎ＋Ａ２に代えて値Ｖｍｉｎ＋Ａ２ｓに設定する）。即ち、第９制御装置は、「目標値振動状態にある場合の第１変更値」を「目標値振動状態にない場合の第１変更値」よりも小さい値に設定する。
【０３２４】
従って、第９制御装置は、目標値振動状態にある場合、機関の空燃比を「リーン空燃比からリッチ空燃比へと、又は、その逆へと」より早いタイミングにて切り換えることができる。その結果、「極大Ｖｍａｘが最大出力値Ｍａｘ近傍値となり続けること、及び、極小値Ｖｍｉｎが最小出力値Ｍｉｎ近傍値になり続けること（即ち、目標値振動状態が継続すること）」を回避することができる。従って、第９制御装置は、目標値振動状態が発生した場合において、エミッションを改善することができる。
【０３２５】
このように、第９制御装置は、
目標値ＶＲＥＦが「基準値Ｖｆよりも大きい値（例えば、Ｖｍａｘ−Ａ１）」と「基準値Ｖｆよりも小さい値（例えば、Ｖｍｉｎ＋Ａ２）」とに交互に変化する状態が所定時間以上継続する状態（即ち、目標値振動状態）が発生した場合、第１変更値の値（値Ａ１、値Ａ２）をより小さくするように構成された学習手段を備えている。
【０３２６】
なお、第９制御装置は、「目標値振動状態にある場合の第２変更値」を「目標値振動状態にない場合の第２変更値」よりも小さい値に設定してもよい。
【０３２７】
＜第１０実施形態＞
次に、本発明の第１０実施形態に係る制御装置（以下、単に「第１０制御装置」と称呼する。）について説明する。第１０制御装置は、目標値ＶＲＥＦを時間経過とともに基準値Ｖｆに強制的に接近させる点のみにおいて、第１制御装置と相違している。従って、以下、この相違点を中心として説明する。
【０３２８】
より具体的に述べると、第１０制御装置のＣＰＵは、図８乃至図１０に示したルーチンと、図２４乃至図２６に示したルーチンとを実行する。図８乃至図１０に示したルーチンは説明済みである。よって、図２４乃至図２６に示したルーチンについて説明する。第１０制御装置のＣＰＵは、図２４乃至図２６に示したルーチンのそれぞれを所定時間が経過する毎に実行するようになっている。図２４乃至図２６に示したルーチンは、目標値ＶＲＥＦを基準値Ｖｆに強制的に近づけるためのルーチンである。
【０３２９】
所定のタイミングになると、ＣＰＵは図２４のステップ２４００から処理を開始してステップ２４１０に進み、サブフィードバック制御条件が成立しているか否かを判定する。ＣＰＵは、サブフィードバック制御条件が成立していないと、ステップ２４１０にて「Ｎｏ」と判定してステップ２４２０に進み、次に述べる処理を実行する。その後、ＣＰＵは、ステップ２４９５に進んで本ルーチンを一旦終了する。
【０３３０】
ＣＰＵは、目標値収束制御実行フラグＸＶＳＦＢの値を「０」に設定する。なお、目標値収束制御実行フラグＸＶＳＦＢは上述したイニシャルルーチンにおいて「０」に設定されるようになっている。
ＣＰＵは、目標値減少フラグＸＤの値を「０」に設定する。
ＣＰＵは、目標値増大フラグＸＵの値を「０」に設定する。
ＣＰＵは、基準値Ｖｆを目標値ＶＲＥＦとして設定する。
【０３３１】
一方、ＣＰＵがステップ２４１０の処理を実行する時点において、サブフィードバック制御条件が成立していると、ＣＰＵはステップ２４１０にて「Ｙｅｓ」と判定してステップ２４３０に進み、目標値収束制御実行フラグＸＶＳＦＢの値が「０」であるか否かを判定する。目標値収束制御実行フラグＸＶＳＦＢの値が「０」でなければ、ＣＰＵはステップ２４３０にて「Ｎｏ」と判定し、ステップ２４９５に直接進んで本ルーチンを一旦終了する。
【０３３２】
ＣＰＵがステップ２４３０の処理を実行する時点において、目標値収束制御実行フラグＸＶＳＦＢの値が「０」であると、ＣＰＵはステップ２４３０にて「Ｙｅｓ」と判定してステップ２４４０に進み、サブフィードバック制御条件が成立してから現時点までの期間に「極大値Ｖｍａｘが取得されたか否か」を判定する。
【０３３３】
サブフィードバック制御条件が成立してから現時点までの期間に極大値Ｖｍａｘが取得されている場合、ＣＰＵはステップ２４４０にて「Ｙｅｓ」と判定してステップ２４５０に進み、極大値Ｖｍａｘと基準値Ｖｆとの差の絶対値が正の第１閾値（この場合は、値Ａ１）より大きいか否かを判定する（極大値Ｖｍａｘが、値（Ｖｆ＋Ａ１）よりも大きいか否かを判定する。）。
【０３３４】
そして、極大値Ｖｍａｘと基準値Ｖｆとの差の絶対値が正の第１閾値Ａ１より大きい場合、ＣＰＵはステップ２４５０にて「Ｙｅｓ」と判定してステップ２４６０に進み、次に述べる処理を実行し、その後、ステップ２４９５に進んで本ルーチンを一旦終了する。
【０３３５】
ＣＰＵは、目標値収束制御実行フラグＸＶＳＦＢの値を「１」に設定する。
ＣＰＵは、目標値減少フラグＸＤの値を「１」に設定する。
ＣＰＵは、目標値増大フラグＸＵの値を「０」に設定する。
ＣＰＵは、極大値Ｖｍａｘを初期極大値Ｖｍａｘ０として格納する。
【０３３６】
一方、ＣＰＵがステップ２４４０の処理を実行する時点において極大値Ｖｍａｘが取得されていない場合、及び、ＣＰＵがステップ２４５０の処理を実行する時点において極大値Ｖｍａｘと基準値Ｖｆとの差の絶対値が正の第１閾値Ａ１以下である場合、ＣＰＵはステップ２４７０に進む。
【０３３７】
ＣＰＵは、ステップ２４７０にて、サブフィードバック制御条件が成立してから現時点までの期間に「極小値Ｖｍｉｎが取得されたか否か」を判定する。
【０３３８】
サブフィードバック制御条件が成立してから現時点までの期間に極小値Ｖｍｉｎが取得されている場合、ＣＰＵはステップ２４７０にて「Ｙｅｓ」と判定してステップ２４８０に進み、極小値Ｖｍｉｎと基準値Ｖｆとの差の絶対値が正の第１閾値（この場合は、値Ａ２）より大きいか否かを判定する（極小値Ｖｍｉｎが、値（Ｖｆ−Ａ２）よりも小さいか否かを判定する。）。
【０３３９】
そして、極小値Ｖｍｉｎと基準値Ｖｆとの差の絶対値が正の第１閾値Ａ２より大きい場合、ＣＰＵはステップ２４８０にて「Ｙｅｓ」と判定してステップ２４９０に進み、次に述べる処理を実行し、その後、ステップ２４９５に進んで本ルーチンを一旦終了する。
【０３４０】
ＣＰＵは、目標値収束制御実行フラグＸＶＳＦＢの値を「１」に設定する。
ＣＰＵは、目標値減少フラグＸＤの値を「０」に設定する。
ＣＰＵは、目標値増大フラグＸＵの値を「１」に設定する。
ＣＰＵは、極小値Ｖｍｉｎを初期極小値Ｖｍｉｎ０として格納する。
【０３４１】
一方、ＣＰＵがステップ２４７０の処理を実行する時点において極小値Ｖｍｉｎが取得されていない場合、及び、ＣＰＵがステップ２４８０の処理を実行する時点において極小値Ｖｍｉｎと基準値Ｖｆとの差の絶対値が正の第１閾値Ａ２以下である場合、ＣＰＵはステップ２４９５に進んで本ルーチンを一旦終了する。
【０３４２】
以上、説明したように、ＣＰＵは、サブフィードバック制御条件が成立した後であって、目標値収束制御実行フラグＸＶＳＦＢの値が「０」であり（即ち、目標値収束制御が実行されておらず）、且つ、「極大値Ｖｍａｘと基準値Ｖｆとの差の絶対値」が第１閾値よりも大きいとき、目標値減少フラグＸＤの値を「１」に設定する。また、ＣＰＵは、サブフィードバック制御条件が成立した後であって、目標値収束制御実行フラグＸＶＳＦＢの値が「０」であり（即ち、目標値収束制御が実行されておらず）、且つ、「極小値Ｖｍｉｎと基準値Ｖｆとの差の絶対値」が第１閾値よりも大きいとき、目標値増大フラグＸＵの値を「１」に設定する。
【０３４３】
ところで、ＣＰＵは所定のタイミングにて図２５のステップ２５００から処理を開始し、ステップ２５１０にて目標値減少フラグＸＤの値が「１」であるか否かを判定する。このとき、目標値減少フラグＸＤの値が「１」でなければ、ＣＰＵはステップ２５１０にて「Ｎｏ」と判定し、ステップ２５９５に直接進んで本ルーチンを一旦終了する。
【０３４４】
いま、目標値減少フラグＸＤの値が、図２４のステップ２４６０にて「１」に設定された直後であると仮定する。この場合、ＣＰＵは図２５のステップ２５１０に進んだとき、そのステップ２５１０にて「Ｙｅｓ」と判定してステップ２５２０に進む。ＣＰＵは、そのステップ２５２０にて、「現時点が、目標値減少フラグＸＤの値が「０」から「１」に変化した直後であるか否か」を判定する。
【０３４５】
この場合、現時点は、目標値減少フラグＸＤの値が「０」から「１」に変化した直後である。従って、ＣＰＵはステップ２５２０にて「Ｙｅｓ」と判定してステップ２５３０に進み、カウンタＮの値を「１」に設定し、ステップ２５４０に進む。なお、ＣＰＵがステップ２５２０の処理を実行する時点が、目標値減少フラグＸＤの値が「０」から「１」に変化した直後でないとき、ＣＰＵはステップ２５２０にて「Ｎｏ」と判定してステップ２５４０に直接進む。
【０３４６】
次いで、ＣＰＵはステップ２５４０にて、空燃比判定結果が反転したか否かを判定する。より具体的に述べると、所定時間前において下流側空燃比センサの出力値Ｖｏｘｓが目標値ＶＲＥＦよりも小さく、且つ、現時点の出力値Ｖｏｘｓが目標値ＶＲＥＦよりも大きいとき、ＣＰＵは空燃比判定結果が反転したと判定する。更に、所定時間前において下流側空燃比センサの出力値Ｖｏｘｓが目標値ＶＲＥＦよりも大きく、且つ、現時点の出力値Ｖｏｘｓが目標値ＶＲＥＦよりも小さいとき、ＣＰＵは空燃比判定結果が反転したと判定する。
【０３４７】
そして、空燃比判定結果が反転していると、ＣＰＵはステップ２５４０にて「Ｙｅｓ」と判定してステップ２５５０に進んでカウンタＮの値を「１」増大し、ステップ２５６０に進む。一方、空燃比判定結果が反転していなければ、ＣＰＵはステップ２５４０にて「Ｎｏ」と判定してステップ２５６０に直接進む。
【０３４８】
次いで、ＣＰＵはステップ２５６０にて、図２４のステップ２４６０にて取得した初期極大値Ｖｍａｘ０から「値Ｎと正の一定値ΔＶ１との積」を減算して得られる値（Ｖｍａｘ０−Ｎ・ΔＶ１）を、目標値ＶＲＥＦとして設定する。なお、値ΔＶ１は、第１変更値に相当し、最大出力値Ｍａｘと基準値Ｖｆとの差の絶対値よりも小さい値に設定されている。
【０３４９】
次いで、ＣＰＵはステップ２５７０にて目標値ＶＲＥＦが基準値Ｖｆ以下であるか否かを判定する。そして、目標値ＶＲＥＦが基準値Ｖｆ以下であると、ＣＰＵはステップ２５８０に進んで基準値Ｖｆを目標値ＶＲＥＦとして設定し、その後ステップ２５９５に進んで本ルーチンを一旦終了する。これに対し、目標値ＶＲＥＦが基準値Ｖｆよりも大きいと、ＣＰＵはステップ２５７０からステップ２５９５に直接進んで本ルーチンを一旦終了する。なお、ＣＰＵは、ステップ２５８０において、図２４のステップ２４２０と同じ処理を実行してもよい。
【０３５０】
以降、このルーチンが繰り返し実行されることにより、目標値減少フラグＸＤの値が「０」から「１」に変化した場合、目標値ＶＲＥＦは値（Ｖｍａｘ０−ΔＶ１）から、空燃比判定結果が反転する毎に値ΔＶ１ずつ減少し、最終的には基準値Ｖｆに一致する。
【０３５１】
同様に、ＣＰＵは所定のタイミングにて図２６のステップ２６００から処理を開始し、ステップ２６１０にて目標値増大フラグＸＵの値が「１」であるか否かを判定する。このとき、目標値増大フラグＸＵの値が「１」でなければ、ＣＰＵはステップ２６１０にて「Ｎｏ」と判定し、ステップ２６９５に直接進んで本ルーチンを一旦終了する。
【０３５２】
いま、目標値増大フラグＸＵの値が、図２４のステップ２４９０にて「１」に設定された直後であると仮定する。この場合、ＣＰＵは図２６のステップ２６１０に進んだとき、そのステップ２６１０にて「Ｙｅｓ」と判定してステップ２６２０に進む。ＣＰＵは、そのステップ２６２０にて、「現時点が、目標値増大フラグＸＵの値が「０」から「１」に変化した直後であるか否か」を判定する。
【０３５３】
前述した仮定に従えば、現時点は、目標値増大フラグＸＵの値が「０」から「１」に変化した直後である。従って、ＣＰＵはステップ２６２０にて「Ｙｅｓ」と判定してステップ２６３０に進み、カウンタＮの値を「１」に設定し、ステップ２６４０に進む。なお、ＣＰＵがステップ２６２０の処理を実行する時点が、目標値増大フラグＸＵの値が「０」から「１」に変化した直後でないとき、ＣＰＵはステップ２６２０にて「Ｎｏ」と判定してステップ２６４０に直接進む。
【０３５４】
次いで、ＣＰＵはステップ２６４０にて、空燃比判定結果が反転したか否かを判定する。そして、空燃比判定結果が反転していると、ＣＰＵはステップ２６４０にて「Ｙｅｓ」と判定してステップ２６５０に進んでカウンタＮの値を「１」増大し、ステップ２６６０に進む。一方、空燃比判定結果が反転していなければ、ＣＰＵはステップ２６４０にて「Ｎｏ」と判定してステップ２６６０に直接進む。
【０３５５】
次いで、ＣＰＵはステップ２６６０にて、図２４のステップ２４９０にて取得した初期極小値Ｖｍｉｎ０に「値Ｎと正の一定値ΔＶ２との積」を加算して得られる値（Ｖｍｉｎ０＋Ｎ・ΔＶ２）を、目標値ＶＲＥＦとして設定する。なお、値ΔＶ２は、第１変更値に相当し、最小出力値Ｍｉｎと基準値Ｖｆとの差の絶対値よりも小さい値に設定されている。
【０３５６】
次いで、ＣＰＵはステップ２６７０にて目標値ＶＲＥＦが基準値Ｖｆ以上であるか否かを判定する。そして、目標値ＶＲＥＦが基準値Ｖｆ以上であると、ＣＰＵはステップ２６８０に進んで基準値Ｖｆを目標値ＶＲＥＦとして設定し、その後ステップ２６９５に進んで本ルーチンを一旦終了する。これに対し、目標値ＶＲＥＦが基準値Ｖｆよりも小さいと、ＣＰＵはステップ２６７０からステップ２６９５に直接進んで本ルーチンを一旦終了する。なお、ＣＰＵは、ステップ２６８０において、図２４のステップ２４２０と同じ処理を実行してもよい。
【０３５７】
以降、このルーチンが繰り返し実行されることにより、目標値増大フラグＸＵの値が「０」から「１」に変化した場合、目標値ＶＲＥＦは値（Ｖｍｉｎ０＋ΔＶ１）から、空燃比判定結果が反転する毎に値ΔＶ１ずつ増大し、最終的には基準値Ｖｆに一致する。
【０３５８】
このように、第１０制御装置は、サブフィードバック制御の開始後等（目標値収束制御実行フラグＸＶＳＦＢの値が「０」である場合）において得られた極大値Ｖｍａｘが「基準値Ｖｆに第１閾値Ａ１を加えた値（Ｖｆ＋Ａ１）」よりも大きいとき、目標値ＶＲＥＦを「その極大値Ｖｍａｘと基準値Ｖｆとの間の値（Ｖｍａｘ０−ΔＶ１）」から基準値Ｖｆに向けて徐々に減少する。即ち、第１０制御装置も、目標値収束制御を実行する。この場合、目標値収束制御の初期値は値（Ｖｍａｘ０−ΔＶ１）である。この値（Ｖｍａｘ０−ΔＶ１）は、「基準値Ｖｆよりも大きい側の領域及び基準値Ｖｆよりも小さい側の領域」の何れか一方の領域であって「下流側空燃比センサの出力値Ｖｏｘｓ（現時点の出力値Ｖｏｘｓ）が存在している領域（この例においては、基準値Ｖｆよりも大きい側の領域）」内の値である。
【０３５９】
同様に、第１０制御装置は、サブフィードバック制御の開始後等（目標値収束制御実行フラグＸＶＳＦＢの値が「０」である場合）において得られた極小値Ｖｍｉｎが値（Ｖｆ−Ａ２）よりも小さいとき、目標値ＶＲＥＦをその極小値Ｖｍｉｎと基準値Ｖｆとの間の値（Ｖｍｉｎ０＋ΔＶ２）から基準値Ｖｆに向けて徐々に増大する。即ち、第１０制御装置も、目標値収束制御を実行する。この場合、目標値収束制御の初期値は値（Ｖｍｉｎ０＋ΔＶ２）である。この値（Ｖｍｉｎ０＋ΔＶ２）は、「基準値Ｖｆよりも大きい側の領域及び基準値Ｖｆよりも小さい側の領域」の何れか一方の領域であって「下流側空燃比センサの出力値Ｖｏｘｓ（現時点の出力値Ｖｏｘｓ）が存在している領域（この例においては、基準値Ｖｆよりも小さい側の領域）」内の値である。なお、値Ａ１及び値Ａ２は互いに同じであっても相違していてもよく、値ΔＶ１及び値ΔＶ２は互いに同じ値であっても相違していてもよい。
【０３６０】
＜第１１実施形態＞
次に、本発明の第１１実施形態に係る制御装置（以下、単に「第１１制御装置」と称呼する。）について説明する。第１１制御装置は、サブフィードバック量Ｖａｆｓｆｂをリッチ要求及びリーン要求に基いて矩形波状に変化させる点のみにおいて、第１制御装置と相違している。従って、以下、この相違点を中心として説明する。
【０３６１】
より具体的に述べると、第１１制御装置のＣＰＵは、図８、図９、図１１乃至図１３に示したルーチンと、図１０に代わる図２７に示したルーチンとを実行する。図８、図９、図１１乃至図１３に示したルーチンは説明済みである。よって、図２７に示したルーチンについて説明する。第１１制御装置のＣＰＵは、図２７に示したルーチンを所定時間が経過する毎に実行するようになっている。
【０３６２】
従って、所定のタイミングになると、ＣＰＵは図２７のステップ２７００から処理を開始してステップ２７１０に進み、サブフィードバック制御条件が成立しているか否かを判定する。このとき、サブフィードバック制御条件が成立していなければ、ＣＰＵはステップ２７１０にて「Ｎｏ」と判定してステップ２７２０に進み、サブフィードバック量Ｖａｆｓｆｂを「０」に設定する。その後、ＣＰＵはステップ２７９５に進み、本ルーチンを一旦終了する。
【０３６３】
これに対し、ＣＰＵがステップ２７１０の処理を実行する時点において、サブフィードバック制御条件が成立していると、ＣＰＵはそのステップ２７１５にて「Ｙｅｓ」と判定してステップ２７１５に進み、リッチ判定フラグＸＲの値が「１」であるか否かを判定する。即ち、ＣＰＵはリーン要求が発生しているかを判定する。このリッチ判定フラグＸＲの値は、図１３に示したルーチンにより設定されている。
【０３６４】
そして、リッチ判定フラグＸＲの値が「１」であるとき（即ち、リーン要求が発生していると判定されているとき）、ＣＰＵはステップ２７１０にて「Ｙｅｓ」と判定してステップ２７３０に進み、サブフィードバック制御を負の一定値（−Ｖｓｆｂ）に設定する。値Ｖｓｆｂは正の一定値である。その後、ＣＰＵはステップ２７９５に進む。
【０３６５】
この結果、上記（２）式により求められるフィードバック制御用出力値Ｖａｂｙｆｃは、上流側空燃比センサ５５の出力値Ｖａｂｙｆｓよりも値Ｖｓｆｂだけ小さくなる。従って、フィードバック制御用出力値Ｖａｂｙｆｃは、上流側空燃比センサ５５の出力値Ｖａｂｙｆｓよりもリッチ側の空燃比に相当する値へと修正される。この結果、指示燃料噴射量Ｆｉは減少させられるので、機関の空燃比及び触媒流入ガスの空燃比は大きくなる（リーン側の空燃比になる。）。
【０３６６】
一方、ＣＰＵがステップ２７１５の処理を実行する時点において、リッチ判定フラグＸＲの値が「０」であるとき（即ち、リッチ要求が発生していると判定されているとき）、ＣＰＵはステップ２７１５にて「Ｎｏ」と判定してステップ２７４０に進み、サブフィードバック制御を正の一定値（Ｖｓｆｂ）に設定する。その後、ＣＰＵはステップ２７９５に進む。
【０３６７】
この結果、上記（２）式により求められるフィードバック制御用出力値Ｖａｂｙｆｃは、上流側空燃比センサ５５の出力値Ｖａｂｙｆｓよりも値Ｖｓｆｂだけ大きくなる。従って、フィードバック制御用出力値Ｖａｂｙｆｃは、上流側空燃比センサ５５の出力値Ｖａｂｙｆｓよりもリーン側の空燃比に相当する値へと修正される。この結果、指示燃料噴射量Ｆｉは増大させられるので、機関の空燃比及び触媒流入ガスの空燃比は小さくなる（リッチ側の空燃比になる。）。
【０３６８】
このように、第１１制御装置は、リーン要求が発生していると判定されているときにはサブフィードバック量Ｖａｆｓｆｂを負の一定値（−Ｖｓｆｂ）に設定し、リッチ要求が発生していると判定されているときにはサブフィードバック量Ｖａｆｓｆｂを正の一定値（Ｖｓｆｂ）に設定する。従って、空燃比制御を簡素化することができる。
【０３６９】
以上、説明したように、本発明の実施形態に係る各空燃比制御装置は、下流側空燃比センサの出力値Ｖｏｘｓの基準値Ｖｆからの偏移が大きくなったとき、目標値ＶＲＥＦを「基準値Ｖｆとは相違する値」から「基準値Ｖｆ」へと次第に近づける。この結果、機関の空燃比が迅速に切り換わるので、触媒流入ガスの空燃比が「触媒４３が高い浄化効率にて排ガスを浄化するために適切な空燃比」に近づく。従って、エミッションを良好に維持することができる。
【０３７０】
本発明は上記実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、下流側空燃比センサ５６は、ジルコニア素子を備える濃淡電池型のＯ２センサであったが、限界電流式の広域空燃比センサであってもよい。更に、下流側空燃比センサはチタニアを素子として用いた酸素濃度センサであってもよい。上流側空燃比センサ５５は、限界電流式の広域空燃比センサであったが、濃淡電池型のＯ２センサであってもよい。
【図１】
2011148517.tif 000004
【図２】
2011148517.tif 000005
【図３】
2011148517.tif 000006
【図４】
2011148517.tif 000007
【図５】
2011148517.tif 000008
【図６】
2011148517.tif 000009
【図７】
2011148517.tif 000010
【図８】
2011148517.tif 000011
【図９】
2011148517.tif 000012
【図１０】
2011148517.tif 000013
【図１１】
2011148517.tif 000014
【図１２】
2011148517.tif 000015
【図１３】
2011148517.tif 000016
【図１４】
2011148517.tif 000017
【図１５】
2011148517.tif 000018
【図１６】
2011148517.tif 000019
【図１７】
2011148517.tif 000020
【図１８】
2011148517.tif 000021
【図１９】
2011148517.tif 000022
【図２０】
2011148517.tif 000023
【図２１】
2011148517.tif 000024
【図２２】
2011148517.tif 000025
【図２３】
2011148517.tif 000026
【図２４】
2011148517.tif 000027
【図２５】
2011148517.tif 000028
【図２６】
2011148517.tif 000029
【図２７】
2011148517.tif 000030
【図２８】
2011148517.tif 000031
【国際調査報告】
2011148517.tif 000032
2011148517.tif 000033
2011148517.tif 000034
2011148517.tif 000035