(57)【要約】【課題】フューエルカット等の空燃比制御に対する外乱が発生した場合において、触媒下流の酸素濃度センサ出力値に基づく空燃比フィードバック制御における積分項の値が収束目標値からずれていくことを抑制すること。【解決手段】触媒下流のＯ２センサ６７の出力値Voxsに基づいて算出されたサブＦＢ補正量FBsubにより補正された目標空燃比abyfrsが計算され、触媒上流のＡＦセンサ６６による検出空燃比abyfsと目標空燃比abyfrsとの差DAFがゼロになるように触媒上流空燃比が制御される。サブＦＢ補正量FBsubの算出に際し、差DAFを触媒モデルＡ１３及びＯ２センサモデルＡ１４に入力して算出される出力値Voxsの推定値Voxsmと、出力値Voxsとの差DVoxsmが算出される。サブＦＢ補正量FBsubは、目標空燃比相当値Voxsrefと出力値Voxsの差DVoxsを比例・微分処理した値FBsub1と、差DVoxsmを積分処理した値SUMの和に算出される。【選択図】図４
2008095647.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の排気通路に配設された酸素吸蔵機能を有する触媒と、
前記触媒よりも上流の前記排気通路に配設されて前記触媒に流入するガスの空燃比に応じた値を出力する空燃比センサと、
前記触媒よりも下流の前記排気通路に配設されて前記触媒から流出するガスの空燃比に応じた値を出力する起電力式の酸素濃度センサと、
を備えた内燃機関に適用され、
前記触媒と前記酸素濃度センサについてのモデルを使用して前記酸素濃度センサの出力値を推定する出力値推定手段と、
前記酸素濃度センサの実際の出力値と前記推定出力値との差を積算して更新されていく偏差積分値を算出する積分値算出手段と、
少なくとも前記偏差積分値に基づいて、前記空燃比センサの出力値に相当する値、及び／又は目標空燃比を補正するためのフィードバック補正値を算出する補正値算出手段と、
前記空燃比センサの出力値から検出される検出空燃比と前記目標空燃比との差であって前記フィードバック補正値で補正された値である第１の偏差がゼロになるように制御して前記触媒に流入するガスの空燃比を前記目標空燃比に一致するよう制御する空燃比制御手段と、
を備えた内燃機関の空燃比制御装置。
【請求項２】
請求項１に記載の内燃機関の空燃比制御装置において、
前記出力値推定手段は、
前記第１の偏差により得られる前記触媒に流入するガス中の酸素の過不足量を表す値を前記モデルに入力して前記推定出力値を推定するように構成された内燃機関の空燃比制御装置。
【請求項３】
請求項１又は請求項２に記載の内燃機関の空燃比制御装置において、
前記補正値算出手段は、
前記偏差積分値に加えて、前記酸素濃度センサの実際の出力値と前記目標空燃比に相当する同出力値の目標値との差にも基づいて前記フィードバック補正値を算出するように構成された内燃機関の空燃比制御装置。
【請求項４】
請求項１に記載の内燃機関の空燃比制御装置において、
前記補正値算出手段は、
前記偏差積分値に加えて、前記酸素濃度センサの実際の出力値と前記目標空燃比に相当する同出力値の目標値との差にも基づいて前記フィードバック補正値を算出するように構成され、
前記出力値推定手段は、
前記検出空燃比と前記目標空燃比との差であって前記偏差積分値で補正された値である第２の偏差により得られる前記触媒に流入するガス中の酸素の過不足量を表す値を前記モデルに入力して前記推定出力値を推定するように構成された内燃機関の空燃比制御装置。
【請求項５】
請求項１乃至請求項４の何れか一項に記載の内燃機関の空燃比制御装置において、
前記出力値推定手段が使用する前記モデルは、前記触媒の酸素吸蔵量を推定する触媒モデルと、前記酸素吸蔵量に基づいて前記推定出力値を推定する酸素濃度センサモデルとを含む内燃機関の空燃比制御装置。
【請求項６】
請求項５に記載の内燃機関の空燃比制御装置において、
前記出力値推定手段が使用する前記酸素濃度センサモデルは、前記酸素吸蔵量が第１所定値を超えた場合にリッチを示す値からリーンを示す値に反転し、前記酸素吸蔵量が前記第１所定値よりも小さい第２所定値を下回った場合に前記リーンを示す値から前記リッチを示す値に反転するように前記推定出力値を前記リーンを示す値と前記リッチを示す値の何れかに決定するよう構成された内燃機関の空燃比制御装置。
【請求項７】
請求項６に記載の内燃機関の空燃比制御装置において、
前記積分値算出手段は、
前記酸素濃度センサの実際の出力値が前記目標空燃比に相当する同出力値の目標値を含む所定の範囲内にある場合、前記偏差積分値の更新を行わないように構成された内燃機関の空燃比制御装置。
【請求項８】
請求項５に記載の内燃機関の空燃比制御装置において、
前記出力値推定手段が使用する前記触媒モデルは、前記触媒が吸蔵し得る酸素の量の最大値である最大酸素吸蔵量を使用して前記触媒の酸素吸蔵量を推定するように構成され、
前記積分値算出手段は、
前記最大酸素吸蔵量が取得される前の段階では前記偏差積分値の更新を行わないように構成された内燃機関の空燃比制御装置。
【請求項９】
請求項８に記載の内燃機関の空燃比制御装置において、
前記補正値算出手段は、
前記最大酸素吸蔵量が取得される前の段階では、前記偏差積分値に代えて、前記酸素濃度センサの実際の出力値と前記目標空燃比に相当する同出力値の目標値との差を積算して更新されていく積分値に基づいて前記フィードバック補正値を算出するように構成された内燃機関の空燃比制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、排気通路に配設された触媒の上流側に空燃比センサを備え触媒の下流側に起電力式の酸素濃度センサを備えた内燃機関に適用され、空燃比センサ、及び酸素濃度センサの出力値に基づいて触媒に流入するガスの空燃比を制御する内燃機関の空燃比制御装置に関する。以下、「触媒に流入するガスの（実際の）空燃比」を、「触媒上流空燃比」、或いは、単に「空燃比」と称呼し、「内燃機関」を、単に「機関」と称呼することもある。
【背景技術】
【０００２】
従来より、この種の空燃比制御装置として、例えば、特許文献１に開示されたものが知られている。この空燃比制御装置では、排気通路に配設された触媒の上流に空燃比センサ、同触媒の下流に起電力式の酸素濃度センサがそれぞれ配設されている。酸素濃度センサの出力値と目標空燃比に相当する同出力値の目標値（目標空燃比相当値）との差（下流側偏差）を比例・積分・微分処理（ＰＩＤ処理）してフィードバック補正値が算出される。このフィードバック補正値で補正された空燃比センサの出力値から検出される空燃比と目標空燃比との差がゼロになるように制御して触媒上流空燃比が目標空燃比に一致するようにフィードバック制御されるようになっている。
【特許文献１】特開２００５−１１３７２９号公報
【０００３】
一般に、インジェクタから噴射される燃料の量を決定するために使用されるエアフローメータにより計測される吸入空気流量と実際の空気流量との差（エアフローメータのばらつき）、インジェクタに噴射指示される指令燃料噴射量と実際に噴射された燃料の量との差（インジェクタのばらつき）等（以下、これらを「燃料噴射量の誤差」と総称する。）が不可避的に発生する。更には、上記空燃比センサとして使用されることが多い限界電流式の酸素濃度センサでは、出力値の誤差が発生し易い。以下、燃料噴射量の誤差、及び、上流側空燃比センサの誤差を「吸排気系の誤差」とも総称する。
【０００４】
上記フィードバック補正値には、積分項（Ｉ項）の値、即ち、上記下流側偏差を積算して更新されていく偏差積分値にフィードバックゲインを乗じた値が含まれている。これにより、上記吸排気系の誤差が発生していても、上述したフィードバック制御の実行により、吸排気系の誤差が積分項により補償され得、この結果、空燃比を目標空燃比に一致・収束させることができる。換言すれば、この積分項の値（或いは、偏差積分値）は、吸排気系の誤差の大きさを表す値となり得る。
【０００５】
この種の空燃比制御装置では、このような性格を有する積分項の値（或いは、偏差積分値）を記憶するとともに記憶されている積分項の値（以下、「積分項の学習値」とも称呼する。）を所定のタイミング毎に更新（学習）していく積分項の学習が実行される場合が多い。
【０００６】
ところで、この積分項の値（或いは、積分項の学習値）は、上記吸排気系の誤差の大きさを正確に表す値（以下、「収束目標値」と称呼する。）に収束する。積分項の値（或いは、積分項の学習値）が収束目標値に一致していることは、空燃比制御装置が目標空燃比と等しい空燃比であるものとして扱っている実際の空燃比（以下、「制御中心空燃比」と称呼する。）が目標空燃比に一致していることを意味する。
【０００７】
制御中心空燃比が目標空燃比と一致している場合、上記吸排気系の誤差が適切に補償され得、空燃比が目標空燃比に適切に一致し得る。なお、上記文献に記載の装置では、制御中心空燃比が目標空燃比と一致することは、フィードバック補正値で補正された空燃比センサの出力値から検出される空燃比が触媒上流空燃比と一致することに対応する。
【０００８】
一方、積分項の値（或いは、積分項の学習値）が収束目標値からずれている場合、制御中心空燃比が目標空燃比からずれた値となる。この場合、上記吸排気系の誤差が適切に補償され得ず、空燃比が目標空燃比に適切に一致し得ない可能性がある。従って、積分項の値（或いは、積分項の学習値）をできる限り収束目標値、或いは収束目標値近傍に維持させることが好ましい。
【０００９】
ところが、フューエルカット、燃料増量等の空燃比制御に対する外乱が頻繁に発生すると、積分項（或いは、積分項の学習値）が収束目標値からずれていくという問題が発生し得る。例えば、フューエルカットが頻繁になされると、触媒内がリーン雰囲気に偏ることにより酸素濃度センサ出力値がリーン側に偏る。この結果、積分項の値（或いは、積分項の学習値）が収束目標値から空燃比をよりリッチに補正する方向に向けて次第にずれていくという問題が発生し得る。
【発明の開示】
【００１０】
本発明の目的は、フューエルカット等の空燃比制御に対する外乱が発生した場合において触媒下流の酸素濃度センサ出力値に基づく空燃比フィードバック制御における積分項の値が収束目標値からずれていくことを抑制でき、従って、制御中心空燃比が目標空燃比からずれていくことを抑制し得る内燃機関の空燃比制御装置を提供することにある。
【００１１】
本発明に係る空燃比制御装置は、酸素吸蔵機能を有する触媒と、前記触媒よりも上流の排気通路に配設された空燃比センサと、前記触媒よりも下流の排気通路に配設された起電力式の酸素濃度センサとを備えた内燃機関に適用される。
【００１２】
本発明に係る空燃比制御装置は、出力値推定手段と、積分値算出手段と、補正値算出手段と、空燃比制御手段とを備える。以下、これらについて順に説明していく。
【００１３】
出力値推定手段は、前記触媒と前記酸素濃度センサについてのモデルを使用して前記酸素濃度センサの出力値を推定する。このモデルは、例えば、前記触媒の酸素吸蔵量を推定する触媒モデルと、前記酸素吸蔵量に基づいて前記推定出力値を推定する酸素濃度センサモデルとを含んで構成される。
【００１４】
触媒モデルとしては、例えば、触媒に流入するガス中の酸素の過不足量を表す値を入力することで酸素吸蔵量を推定する周知のものが使用され得る。酸素濃度センサモデルとしては、例えば、酸素吸蔵量が第１所定値を超えた場合にリッチを示す値からリーンを示す値に反転し、酸素吸蔵量が第１所定値よりも小さい第２所定値を下回った場合にリーンを示す値からリッチを示す値に反転するように推定出力値をリーンを示す値とリッチを示す値の何れかに決定する周知のものが使用され得る。
【００１５】
積分値算出手段は、前記酸素濃度センサの実際の出力値と前記推定出力値との差（以下、「出力値偏差」とも称呼する。）を積算して更新されていく偏差積分値を算出する。即ち、偏差積分値は、上記出力値偏差を積分処理した値である。
【００１６】
なお、係る偏差積分値の学習が実行される場合、この空燃比制御装置は、偏差積分値に基づく値を用いて「偏差積分値に基づく値」の定常的な成分を表す学習値を算出・更新するとともに、前記更新による学習値の変化量に相当する分を前記「偏差積分値に基づく値」から差し引く学習手段を備える。ここにおいて、「偏差積分値に基づく値」とは、例えば、偏差積分値そのもの、偏差積分値にフィードバックゲインを乗じて得られる積分項等である。また、学習値（「偏差積分値に基づく値」の定常的な成分を表す値）とは、例えば、「偏差積分値に基づく値」をローパスフィルタ処理（なまし処理）した値である。
【００１７】
この学習手段は、例えば、所定のタイミングが到来する毎に、「偏差積分値に基づく値」の定常的な成分を学習値更新用の更新値として取得し、取得した更新値をその時点での学習値に積算して学習値を更新するとともに、その更新値に相当する分をその時点での「偏差積分値に基づく値」から差し引く。
【００１８】
補正値算出手段は、少なくとも前記偏差積分値に基づいて、前記空燃比センサの出力値に相当する値、及び／又は目標空燃比を補正するためのフィードバック補正値を算出する。このフィードバック補正値は、例えば、前記偏差積分値に加えて、前記酸素濃度センサの実際の出力値と目標空燃比に相当する同出力値の目標値（目標空燃比相当値）との差（即ち、上記下流側偏差）にも基づいて算出され得る。この場合、例えば、フィードバック補正値は、上記出力値偏差を積分処理した値（即ち、偏差積分値）と、上記下流側偏差を比例処理（或いは、比例・微分処理）した値とに基づいて算出される。
【００１９】
空燃比制御手段は、前記空燃比センサの出力値から検出される検出空燃比と前記目標空燃比との差であって前記フィードバック補正値で補正された値である第１の偏差がゼロになるように制御して前記触媒に流入するガスの空燃比を前記目標空燃比に一致するよう制御する。
【００２０】
ここにおいて、前記第１の偏差は、例えば、フィードバック補正値で補正された空燃比センサの出力値から検出される空燃比と目標空燃比との差、空燃比センサの出力値そのものから検出される空燃比とフィードバック補正値で補正された目標空燃比との差等である。
【００２１】
このように、本発明に係る空燃比制御装置は、触媒と酸素濃度センサについてのモデルが導入された点、並びに、フィードバック補正値に含まれる偏差積分値（積分項）が、上記下流側偏差に代えて上記出力値偏差を積分処理して更新される点において上記文献に記載の装置と主として異なる。
【００２２】
ここで、前記モデルは、前記第１の偏差により得られる前記触媒に流入するガス中の酸素の過不足量を表す値を入力されることで前記推定出力値を推定するように構成されることが好適である。
【００２３】
上記制御中心空燃比が目標空燃比（通常、理論空燃比）と一致している場合（即ち、偏差積分値が収束目標値と一致している場合）、前記空燃比制御手段により前記第１の偏差がゼロになるように制御されると、触媒上流空燃比が制御中心空燃比（＝目標空燃比と等しい空燃比）と一致するように制御される。
【００２４】
従って、モデルに入力される「前記第１の偏差により得られる触媒に流入するガス中の酸素の過不足量」は、触媒に実際に流入するガス中の酸素の過不足量と一致し得る。この結果、モデルによる前記推定出力値の推移は酸素濃度センサの実際の出力値の推移と一致し得る。
【００２５】
このことは、フューエルカット等の空燃比制御に対する外乱が発生した場合であっても、その後において、前記出力値偏差がゼロ、或いはゼロ近傍の値に維持されて偏差積分値が収束目標値からずれていかない（ずれていき難い）ことを意味する。以上のことから、上記制御中心空燃比が目標空燃比と一致している場合、フューエルカット等の空燃比制御に対する外乱が発生した場合において偏差積分値（或いは、積分項の値）が収束目標値からずれていくことが抑制され得、従って、制御中心空燃比が目標空燃比からずれていくことが抑制され得る。
【００２６】
一方、上記制御中心空燃比が目標空燃比からずれている場合（即ち、偏差積分値が収束目標値からずれている場合）、前記空燃比制御手段により前記第１の偏差がゼロになるように制御されると、触媒上流空燃比が制御中心空燃比（＝目標空燃比からずれた空燃比）と一致するように制御される。
【００２７】
従って、モデルに入力される「前記第１の偏差により得られる触媒に流入するガス中の酸素の過不足量」は、触媒に実際に流入するガス中の酸素の過不足量と一致し得なくなる。この結果、モデルによる前記推定出力値の推移が酸素濃度センサの実際の出力値の推移と一致し得えなくなる（図７を参照）。このように、前記推定出力値と酸素濃度センサの実際の出力値とのずれの発生は、上記制御中心空燃比が目標空燃比からずれていることを意味する。
【００２８】
このように、前記制御中心空燃比が目標空燃比と一致していない場合、前記出力値偏差が偏差積分値を収束目標値に近づける方向の値に設定され得る。この結果、偏差積分値が収束目標値に向けて近づけられ得、制御中心空燃比が目標空燃比に向けて近づけられ得る。
【００２９】
上記本発明に係る空燃比制御装置において、前記フィードバック補正値が前記偏差積分値に加えて上記下流側偏差にも基づいて算出される場合、前記出力値推定手段は、前記第１の偏差（即ち、前記検出空燃比と前記目標空燃比との差であってフィードバック補正値で補正された値）に代えて、第２の偏差、即ち、前記検出空燃比と前記目標空燃比との差であって前記偏差積分値で補正された値、により得られる前記触媒に流入するガス中の酸素の過不足量を表す値を前記モデルに入力して前記推定出力値を推定するように構成してもよい。
【００３０】
ここにおいて、前記第２の偏差は、例えば、偏差積分値で補正された空燃比センサの出力値から検出される空燃比と目標空燃比との差、空燃比センサの出力値そのものから検出される空燃比と偏差積分値で補正された目標空燃比との差等である。
【００３１】
前記空燃比制御手段により前記第１の偏差がゼロになるように制御されている場合（且つ、制御中心空燃比が目標空燃比と一致している場合）において、例えば、酸素濃度センサに対する外乱等により、フィードバック補正値における上記下流側偏差に基づく部分（偏差積分値を除いた部分、例えば、上記下流側偏差を比例・微分処理した値）が大きい値となり、この結果、触媒上流空燃比が目標空燃比から一時的に離れた場合を考える。
【００３２】
この場合、前記第１の偏差はゼロ近傍の値に維持され得る一方、前記第２の偏差は、フィードバック補正値における上記下流側偏差に基づく部分に相当する分だけ前記第１の偏差と異なる値となる。従って、触媒上流空燃比が目標空燃比から一時的に離れた場合であっても、モデルに入力される「前記第２の偏差により得られる触媒に流入するガス中の酸素の過不足量」は、触媒に実際に流入するガスの過不足量と一致し得る。この結果、酸素濃度センサに対する外乱等が発生した場合であっても、モデルによる前記推定出力値の推移を酸素濃度センサの実際の出力値の推移と一致させることができる。
【００３３】
上記本発明に係る空燃比制御装置において、前記モデルが前記触媒モデルと前記酸素濃度センサモデルとを含み、且つ、前記酸素濃度センサモデルが上述のように前記推定出力値を前記リーンを示す値と前記リッチを示す値の何れかに決定するように構成される場合、前記積分値算出手段は、前記酸素濃度センサの実際の出力値が前記目標空燃比相当値を含む所定の範囲内にある場合、前記偏差積分値の更新を行わないように構成されることが好適である。
【００３４】
酸素濃度センサの実際の出力値が目標空燃比相当値に近い値で推移している場合、制御中心空燃比が目標空燃比に一致している（或いは、近い）こと、従って、偏差積分値が収束目標値に一定している（或いは、近い）を意味している。この場合、偏差積分値を更新する必要がない。一方、酸素濃度センサモデルは前記推定出力値をリーンを示す値とリッチを示す値の何れかにしか決定しないから、この場合、前記出力値偏差が大きい値となって偏差積分値が次第に変化していってしまう。即ち、この場合、偏差積分値の更新を禁止する必要がある。
【００３５】
上記構成は、係る知見に基づくものである。これによれば、酸素濃度センサの実際の出力値が目標空燃比相当値に近い値で推移している場合において、制御中心空燃比が目標空燃比から離れていくことを抑制することができる。
【００３６】
また、上記本発明に係る空燃比制御装置において、前記モデルが前記触媒モデルと前記酸素濃度センサモデルとを含む場合、前記出力値推定手段が使用する前記触媒モデルは、前記触媒が吸蔵し得る酸素の量の最大値である最大酸素吸蔵量を使用して前記触媒の酸素吸蔵量を推定するように構成され、前記積分値算出手段は、前記最大酸素吸蔵量が取得される前の段階では前記偏差積分値の更新を行わないように構成されることが好適である。
【００３７】
触媒モデルは、触媒の最大酸素吸蔵量が正確に取得されている状態で、触媒の酸素吸蔵量を正確に推定することができる。従って、触媒の最大酸素吸蔵量が取得されていない段階では、触媒モデルは、触媒の酸素吸蔵量を正確に推定することができず、この結果、酸素濃度センサモデルも前記推定出力値を正確に推定することができない。この状態では、不正確な前記推定出力値に基づいて偏差積分値の更新を行うべきではない。上記構成は係る知見に基づく。
【００３８】
加えて、前記補正値算出手段は、前記最大酸素吸蔵量が取得される前の段階では、前記偏差積分値に代えて、前記下流側偏差を積算して更新されていく積分値に基づいて前記フィードバック補正値を算出するように構成されることが好適である。
【００３９】
これによれば、前記最大酸素吸蔵量が取得される前の段階であっても、上記文献に記載した装置と同様にフィードバック補正値が算出され得、少なくとも上記文献に記載した装置と同等程度には上記吸排気系の誤差が補償され得る。
【発明を実施するための最良の形態】
【００４０】
以下、本発明による内燃機関の空燃比制御装置の各実施形態について図面を参照しつつ説明する。
【００４１】
（第１実施形態）
図１は、本発明の第１実施形態に係る空燃比制御装置を火花点火式多気筒（４気筒）内燃機関１０に適用したシステムの概略構成を示している。この内燃機関１０は、シリンダブロック、シリンダブロックロワーケース、及びオイルパン等を含むシリンダブロック部２０と、シリンダブロック部２０の上に固定されるシリンダヘッド部３０と、シリンダブロック部２０にガソリン混合気を供給するための吸気系統４０と、シリンダブロック部２０からの排気ガスを外部に放出するための排気系統５０とを含んでいる。
【００４２】
シリンダブロック部２０は、シリンダ２１、ピストン２２、コンロッド２３、及びクランク軸２４を含んでいる。このシリンダブロック部２０においては、ピストン２２はシリンダ２１内を往復動し、ピストン２２の往復動がコンロッド２３を介してクランク軸２４に伝達され、これにより当該クランク軸２４が回転するようになっている。シリンダ２１とピストン２２のヘッドは、シリンダヘッド部３０とともに燃焼室２５を形成している。
【００４３】
シリンダヘッド部３０は、燃焼室２５に連通した吸気ポート３１、吸気ポート３１を開閉する吸気弁３２、吸気弁３２を駆動するインテークカムシャフトを含むとともに当該インテークカムシャフトの位相角を連続的に変更する可変吸気タイミング装置３３、可変吸気タイミング装置３３のアクチュエータ３３ａ、燃焼室２５に連通した排気ポート３４、排気ポート３４を開閉する排気弁３５、排気弁３５を駆動するエキゾーストカムシャフト３６、点火プラグ３７、点火プラグ３７に与える高電圧を発生するイグニッションコイルを含むイグナイタ３８、及び燃料を吸気ポート３１内に噴射するインジェクタ（燃料噴射手段）３９を備えている。
【００４４】
吸気系統４０は、吸気ポート３１に連通し当該吸気ポート３１とともに吸気通路を形成するインテークマニホールドを含む吸気管４１、吸気管４１の端部に設けられたエアフィルタ４２、吸気管４１内にあって吸気通路の開口断面積を可変とするスロットル弁４３、及びスロットル弁アクチュエータ４３ａを備えている。ここで、吸気ポート３１、及び吸気管４１は、吸気通路を構成している。
【００４５】
排気系統５０は、排気ポート３４に連通したエキゾーストマニホールド５１、エキゾーストマニホールド５１（実際には、各排気ポート３４に連通した各々のエキゾーストマニホールド５１が集合した集合部）に接続されたエキゾーストパイプ（排気管）５２、エキゾーストパイプ５２に配設（介装）された上流側触媒装置５３（三元触媒、以下、「第１触媒５３」と称呼する。）、及びこの第１触媒５３の下流のエキゾーストパイプ５２に配設（介装）された下流側触媒装置５４（三元触媒、以下、「第２触媒５４」と称呼する。）を備えている。排気ポート３４、エキゾーストマニホールド５１、及びエキゾーストパイプ５２は、排気通路を構成している。
【００４６】
一方、このシステムは、エアフローメータ６１、スロットルポジションセンサ６２、カムポジションセンサ６３、クランクポジションセンサ６４、水温センサ６５、第１触媒５３の上流の排気通路（本例では、前記各々のエキゾーストマニホールド５１が集合した集合部）に配設された空燃比センサ６６（以下、「ＡＦセンサ６６」と称呼する。）、第１触媒５３の下流であって第２触媒５４の上流の排気通路に配設された空燃比センサ６７（以下、「Ｏ２センサ６７」と称呼する。）、及びアクセル開度センサ６８を備えている。
【００４７】
エアフローメータ６１は、周知の熱線式エアフローメータにより構成されており、吸気管４１内を流れる吸入空気の単位時間あたりの質量流量（吸入空気流量Ga）に応じた電圧を出力するようになっている。スロットルポジションセンサ６２は、スロットル弁４３の開度を検出し、スロットル弁開度TAを表す信号を出力するようになっている。カムポジションセンサ６３は、インテークカムシャフトが９０°回転する毎に（即ち、クランク軸２４が１８０°回転する毎に）一つのパルスを有する信号（Ｇ２信号）を発生するようになっている。クランクポジションセンサ６４は、クランク軸２４が１０°回転する毎に幅狭のパルスを有するとともに当該クランク軸２４が３６０°回転する毎に幅広のパルスを有する信号を出力するようになっている。この信号は、運転速度NEを表す。水温センサ６５は、内燃機関１０の冷却水の温度を検出し、冷却水温THWを表す信号を出力するようになっている。
【００４８】
ＡＦセンサ６６は、限界電流式の酸素濃度センサであり、図２に実線で示したように、空燃比Ａ／Ｆに応じた電流を出力し、この電流に応じた電圧である出力値Vabyfsを出力するようになっていて、特に、上流側空燃比センサ６６の出力値Vabyfsの誤差（ＡＦセンサ６６の誤差）がない場合、第１触媒５３上流の実際の空燃比（触媒上流空燃比）が理論空燃比AFthであるときには出力値Vabyfsは上流側目標値Vstoichになる。図２から明らかなように、ＡＦセンサ６６によれば、広範囲にわたる空燃比Ａ／Ｆを精度良く検出することができる。
【００４９】
Ｏ２センサ６７は、起電力式（濃淡電池式）の酸素濃度センサであり、図３に示したように、理論空燃比近傍において急変する電圧である出力値Voxsを出力するようになっている。より具体的に述べると、Ｏ２センサ６７は、空燃比が理論空燃比よりもリーンのときは略０．１（Ｖ）（min、リーンを示す値）、空燃比が理論空燃比よりもリッチのときは略０．９（Ｖ）（max、リッチを示す値）、及び空燃比が理論空燃比のときは０．５（Ｖ）の電圧を出力するようになっている。アクセル開度センサ６８は、運転者によって操作されるアクセルペダル８１の操作量を検出し、アクセルペダル８１の操作量Accpを表す信号を出力するようになっている。
【００５０】
更にこのシステムは、電気制御装置７０を備えている。電気制御装置７０は、互いにバスで接続されたＣＰＵ７１、ＣＰＵ７１が実行するルーチン（プログラム）、テーブル（ルックアップテーブル、マップ）、及びパラメータ等を予め記憶したＲＯＭ７２、ＣＰＵ７１が必要に応じてデータを一時的に格納するＲＡＭ７３、電源が投入された状態でデータを格納するとともに当該格納したデータを電源が遮断されている間も保持するバックアップＲＡＭ（ＳＲＡＭ）７４、並びにＡＤコンバータを含むインターフェース７５等からなるマイクロコンピュータである。インターフェース７５は、前記センサ６１〜６８と接続され、ＣＰＵ７１にセンサ６１〜６８からの信号を供給するとともに、同ＣＰＵ７１の指示に応じて可変吸気タイミング装置３３のアクチュエータ３３ａ、イグナイタ３８、インジェクタ３９、及びスロットル弁アクチュエータ４３ａに駆動信号を送出するようになっている。
【００５１】
（空燃比制御の概要）
次に、上述のように構成された第１実施形態に係る空燃比制御装置（以下、「本装置」とも称呼する。）が行う空燃比制御の概要について説明する。
【００５２】
本装置は、ＡＦセンサ６６の出力値を用いた空燃比フィードバック制御（以下、「メインＦＢ制御」と称呼する。）、及び、Ｏ２センサ６７の出力値を用いた空燃比フィードバック制御（以下、「サブＦＢ制御」と称呼する。）という２つの空燃比フィードバック制御を行う。これらにより、触媒上流空燃比が目標空燃比である理論空燃比に一致するようにフィードバック制御される。
【００５３】
より具体的に述べると、本装置は、機能ブロック図である図４に示したように、Ａ１〜Ａ１９の各機能ブロックを含んで構成されている。以下、図４を参照しながら各機能ブロックについて説明していく。
【００５４】
<基本燃料噴射量の算出>
先ず、筒内吸入空気量算出手段Ａ１は、エアフローメータ６１が計測している吸入空気流量Gaと、クランクポジションセンサ６４の出力に基づいて得られる運転速度NEと、ＲＯＭ７２が記憶しているテーブルMapMcとに基づき、今回の吸気行程において吸気行程を迎える気筒に吸入された新気の量である筒内吸入空気量Mc(k)を求める。ここで、添え字の（k）は、今回の吸気行程に対する値であることを示している（以下、他の物理量についても同様。）。筒内吸入空気量Mcは、各気筒の吸気行程に対応されながらＲＡＭ７３に記憶されていく。
【００５５】
上流側目標空燃比設定手段Ａ２は、内燃機関１０の運転状態である運転速度NE、及びスロットル弁開度TA等に基づいて目標空燃比abyfrを決定する。この上流側目標空燃比abyfrは、例えば、内燃機関１０の暖機終了後においては、特殊な場合を除き理論空燃比に設定されている。
【００５６】
制御用目標空燃比設定手段Ａ３は、下記(1)式に従って、目標空燃比abyfrと、後述するサブＦＢ補正量算出手段Ａ１９により算出されるサブＦＢ補正量FBsubとに基づいて制御用目標空燃比abyfrs(k)を設定する。
【００５７】
abyfrs(k)＝abyfr/(1＋FBsub)  ・・・(1)
【００５８】
上記(1)式から理解できるように、この制御用目標空燃比abyfrs(k)は、目標空燃比abyfrに対してサブＦＢ補正量FBsubに応じた分だけ異なる空燃比に設定される。制御用目標空燃比abyfrsは、各気筒の吸気行程に対応されながらＲＡＭ７３に記憶されていく。
【００５９】
基本燃料噴射量算出手段Ａ４は、筒内吸入空気量Mc(k)を制御用目標空燃比abyfrs(k)で除することにより、筒内吸入空気量Mc(k)に対応する、制御用目標空燃比abyfrs(k)を得るための燃料の量である基本燃料噴射量Fbaseを求める。このように、制御用目標空燃比abyfrs(k)は、基本燃料噴射量Fbaseの設定に使用され、且つ、後述するように、メインＦＢ制御に使用される。
【００６０】
<指令燃料噴射量の算出>
指令燃料噴射量算出手段Ａ５は、基本燃料噴射量Fbaseに後述するメインＦＢ補正量算出手段（ＰＩコントローラ）Ａ９により算出されるメインＦＢ補正量FBmainを加えることで、下記(2)式に基づいて指令燃料噴射量Fiを求める。
【００６１】
Fi＝Fbase＋FBmain  ・・・(2)
【００６２】
本装置は、このように算出される指令燃料噴射量Fiの燃料の噴射指示を今回の吸気行程を迎える気筒についてのインジェクタ３９に対して行う。これにより、後に詳述するように、メインＦＢ制御、及びサブＦＢ制御が達成される。
【００６３】
<メインＦＢ制御>
テーブル変換手段Ａ６は、ＡＦセンサ６６の出力値Vabyfsと、先に説明した図２に示したＡＦセンサ出力値Vabyfsと空燃比Ａ／Ｆとの関係を規定したテーブル（実線を参照）とに基づいて、ＡＦセンサ６６が検出する現時点（具体的には、今回のFiの噴射指示開始時点）における今回の検出空燃比abyfs(k)を求める。検出空燃比abyfsは、各気筒の吸気行程に対応されながらＲＡＭ７３に記憶されていく。
【００６４】
ＡＦセンサ応答モデルＡ７は、ＡＦセンサ出力値Vabyfsの遅れを模擬したモデルであり、目標空燃比遅延手段と、ローパスフィルタとを備えている。この目標空燃比遅延手段は、制御用目標空燃比設定手段Ａ３により吸気行程毎に求められＲＡＭ７３に記憶されている制御用目標空燃比abyfrsのうち、現時点からＮストローク（Ｎ回の吸気行程）前の制御用目標空燃比abyfrsをＲＡＭ７３から読み出し、これを制御用目標空燃比abyfrs(k−N)とする。この値Ｎは、燃料の噴射指示から、その噴射指示により噴射された燃料の燃焼に基づく排ガスの空燃比がＡＦセンサ６６（の検出部）に到達するまでに要する時間（以下、「遅れ時間Ｌ」と称呼する。）に相当するストローク数である。以下、遅れ時間Ｌ、及びストローク数Ｎについて付言する。
【００６５】
一般に、燃料の噴射指示は、吸気行程中（或いは吸気行程よりも前の時点）にて実行され、噴射された燃料は、その後に到来する圧縮上死点近傍の時点で燃焼室２５内にて着火（燃焼）させられる。この結果、発生する排ガスは、排気弁３５の周囲を介して燃焼室２５から排気通路へと排出され、その後、排気通路内を移動していくことで上流側空燃比センサ６６（の検出部）に到達する。
【００６６】
以上のことから、上記遅れ時間Ｌは、燃焼行程に係わる遅れ（行程遅れ）、及び排気通路内での排ガスの移動に係わる遅れ（輸送遅れ）の和で表される。即ち、上流側空燃比センサ６６による検出空燃比abyfsは、このようにして得られる遅れ時間Ｌだけ前に実行された燃料の噴射指示に基づいて発生した排ガスの空燃比を表す値となる。
【００６７】
上述した行程遅れに係る時間は、運転速度NEの増加に応じて短くなるとともに、輸送遅れに係る時間は、運転速度NE及び筒内吸入空気量Mcの上昇に応じて短くなる傾向がある。従って、遅れ時間Ｌに相当するストローク数Ｎは、運転速度NE及び筒内吸入空気量Mcの上昇に応じて小さくなる。
【００６８】
上記ローパスフィルタは、ＡＦセンサ６６の応答遅れに相当する時定数と等しい時定数τを有する一次のディジタルフィルタであり、上記制御用目標空燃比abyfrs(k−N)を入力するとともに、上記制御用目標空燃比abyfrs(k−N)を時定数τをもってローパスフィルタ処理した値であるローパスフィルタ通過後制御用目標空燃比abyfrslowを出力する。
【００６９】
上流側空燃比偏差算出手段Ａ８は、下記(3)式に基づいて、今回の検出空燃比abyfs(k)からローパスフィルタ通過後制御用目標空燃比abyfrslowを減じることにより、現時点からＮストローク前の上流側空燃比偏差DAF（前記「第１の偏差」に対応）を求める。
【００７０】
DAF＝abyfs(k)−abyfrslow  ・・・(3)
【００７１】
このように、現時点からＮストローク前の上流側空燃比偏差DAFを求めるために、今回の検出空燃比abyfs(k)から、ローパスフィルタ通過後制御用目標空燃比abyfrslowを減じるのは、上述したように、今回の検出空燃比abyfs(k)は、現時点から遅れ時間Ｌだけ前(従って、現時点からＮストローク前)に実行された噴射指示に基づいて発生した排ガスの空燃比を表しているからである。この上流側空燃比偏差DAFは、Ｎストローク前の時点で筒内に供給された燃料の過不足量に対応する値である。
【００７２】
メインＦＢ補正量算出手段Ａ９（ＰＩコントローラ）は、上流側空燃比偏差DAFを比例・積分処理（ＰＩ処理）することで、下記(4)式に基づいてＮストローク前の燃料供給量の過不足を補償するためのメインＦＢ補正量FBmainを求める。(4)式において、Gpは予め設定された比例ゲイン（比例定数）、Giは予め設定された積分ゲイン（積分定数）であり、SDAFは上流側空燃比偏差DAFの積分値（積算値）である。
【００７３】
FBmain＝Gp・DAF＋Gi・SDAF  ・・・(4)
【００７４】
本装置は、このようにしてメインＦＢ補正量FBmainを求め、指令燃料噴射量Fiを求める際、上述したように、補正後基本燃料噴射量Fbaseに対してメインＦＢ補正量FBmainを加える。これにより、以下のように、メインＦＢ制御がなされる。
【００７５】
例えば、触媒上流空燃比がリーン方向に変化すると、検出空燃比abyfs(k)はローパスフィルタ通過後制御用目標空燃比abyfrslowよりもリーンな値（より大きな値）となる。このため、上流側空燃比偏差DAFは正の値となる。従って、メインＦＢ補正量FBmainが正の値となる。これにより、指令燃料噴射量Fiは、基本燃料噴射量Fbaseよりも大きくなって、空燃比がリッチ方向に制御される。この結果、検出空燃比abyfs(k)が小さくなり、検出空燃比abyfs(k)がローパスフィルタ通過後制御用目標空燃比abyfrslowと一致するように制御される。
【００７６】
反対に、触媒上流空燃比がリッチ方向に変化すると、検出空燃比abyfs(k)はローパスフィルタ通過後制御用目標空燃比abyfrslowよりもリッチな値（より小さな値）となる。このため、上流側空燃比偏差DAFは負の値となる。従って、メインＦＢ補正量FBmainが負の値となる。これにより、指令燃料噴射量Fi(k)は、補正後基本燃料噴射量Fbaseよりも小さくなって、空燃比がリーン方向に制御される。この結果、検出空燃比abyfs(k)が大きくなり、検出空燃比abyfs(k)がローパスフィルタ通過後制御用目標空燃比abyfrslowと一致するように制御される。以上のように、メインＦＢ制御により、検出空燃比abyfs(k)がローパスフィルタ通過後制御用目標空燃比abyfrslowと一致するように（即ち、上流側空燃比偏差DAFがゼロになるように）指令燃料噴射量Fiが制御される。以上、このように触媒上流空燃比を制御する手段が前記空燃比制御手段に対応する。
【００７７】
更には、メインＦＢ補正量FBmainは積分項Gi・SDAFを含んでいるので、定常状態では上流側空燃比偏差DAFがゼロになることが保証される。換言すれば、上述した「燃料噴射量の誤差」が発生している場合、メインＦＢ制御の実行により、定常状態において、積分項Gi・SDAFの値が「燃料噴射量の誤差」の大きさに対応する値に収束するとともに、検出空燃比abyfs(k)がローパスフィルタ通過後制御用目標空燃比abyfrslowに収束すること（即ち、上流側空燃比偏差DAFがゼロになること）が保証される。このように、「燃料噴射量の誤差」は、メインＦＢ制御により補償され得る。
【００７８】
<サブＦＢ制御>
下流側目標値設定手段Ａ１０は、上述した上流側目標空燃比設定手段Ａ２と同様、内燃機関１０の運転状態である運転速度NE、及びスロットル弁開度TA等に基づいて下流側目標値Voxsref（前記「目標空燃比に相当する目標値」に相当）を決定する。この下流側目標値Voxsrefは、例えば、内燃機関１０の暖機終了後においては、特殊な場合を除き理論空燃比に対応する値である０．５（Ｖ）に設定されている（図３を参照。）。また、本例では、下流側目標値Voxsrefは、同下流側目標値Voxsrefに対応する空燃比が上述した目標空燃比abyfrと常時一致するように設定される。
【００７９】
下流側偏差算出手段Ａ１１は、下記(5)式に基づいて、現時点（具体的には、今回のFiの噴射指示開始時点）での下流側目標値Voxsrefから現時点でのＯ２センサ６７の出力値Voxsを減じることにより、下流側偏差DVoxsを求める。
【００８０】
DVoxs＝Voxsref−Voxs  ・・・(5)
【００８１】
ＰＤコントローラＡ１２（比例・微分項算出手段）は、下記(6)式に基づいて、下流側偏差DVoxsを比例・微分処理（ＰＤ処理）して、サブＦＢ制御におけるＰＤ補正量FBsub1を求める。ここにおいて、Kp,Kdはそれぞれ、予め設定された比例ゲイン（比例定数）、微分ゲイン（微分定数）である。DDVoxsは下流側偏差DVoxsの時間微分値である。「Kp・DVoxs」は比例項に対応し、「Kd・DDVoxs」は微分項に対応する。
【００８２】
FBsub1＝Kp・DVoxs＋Kd・DDVoxs  ・・・(6)
【００８３】
触媒モデルＡ１３は、上流側空燃比偏差算出手段Ａ８により求められる上流側空燃比偏差DAF（前記「第１の偏差」に対応）を入力して、通常、下記(7)式に基づいて、後述するプログラムの実行タイミング毎に第１触媒５３の酸素吸蔵量OSAを推定（更新）していく。
【００８４】
OSA＝Σ(0.23・DAF・Fi)  （0≦OSA≦Cmax）・・・(7)
【００８５】
(7)式において、値0.23は空気中における酸素の質量割合である。「0.23・DAF・Fi」は、上流側空燃比偏差DAFにより得られる、第１触媒５３に流入するガス中の一燃料噴射当たりの酸素の過不足量を表す。Cmaxは第１触媒５３が吸蔵し得る酸素の最大量（最大酸素吸蔵量）である。最大酸素吸蔵量Cmaxは、周知の手法の一つにより所定のタイミングで取得・更新され得る。
【００８６】
また、フューエルカット中では、触媒モデルＡ１３は、(7)式に代えて下記(8)式に従って、第１触媒５３の酸素吸蔵量OSAを推定（更新）していく。ここにおいて、Δtは後述するプログラムの実行時間間隔である。「0.23・Ga・Δt」は、第１触媒５３に流入するガス（空気）中の一プログラム実行時間間隔当たりの酸素量を表す。(8)式により、フューエルカット中では、酸素吸蔵量OSAは最大酸素吸蔵量Cmaxを上限として増大していく。
【００８７】
OSA＝Σ(0.23・Ga・Δt)  （0≦OSA≦Cmax）・・・(8)
【００８８】
Ｏ２センサモデルＡ１４は、触媒モデルＡ１３により推定される酸素吸蔵量OSAを入力して、図５に示す出力特性に従ってＯ２センサ６７の出力値の推定値（推定出力値Voxsm）を推定・更新していく。これにより、推定出力値Voxsmは、酸素吸蔵量OSAが最大酸素吸蔵量Cmaxよりも若干小さい第１所定値ｂを超えた場合にリッチを示す値maxからリーンを示す値minに反転し、酸素吸蔵量OSAが第２所定値ａ（０＜ａ＜ｂ）を下回った場合にリーンを示す値minからリッチを示す値maxに反転するように、リーンを示す値minとリッチを示す値maxの何れかに決定される。なお、図５に示す出力特性は、第１触媒５３の実際の酸素吸蔵量に対するＯ２センサ６７の実際の出力値Voxsの出力特性に沿うものである。触媒モデルＡ１３とＯ２センサモデルＡ１４は、前記出力値推定手段に相当する。
【００８９】
出力値偏差算出手段Ａ１５は、下記(9)式に基づいて、現時点（具体的には、今回のFiの噴射指示開始時点）での推定出力値Voxsmから現時点でのＯ２センサ６７の出力値Voxsを減じた値に係数Kmを乗じて、出力値偏差DVoxsmを求める。ここにおいて、係数Kmは、図６に示すテーブルに基づいて決定される。
【００９０】
DVoxsm＝(Voxsm−Voxs)・Km  ・・・(9)
【００９１】
これにより、出力値偏差DVoxsmは、Ｏ２センサ出力値Voxsが下流側目標値Voxsrefを含む値ｃ〜値ｄの範囲外にある場合、推定出力値VoxsmとＯ２センサ出力値Voxsの差と等しい値に設定され、Ｏ２センサ出力値Voxsが値ｃ〜値ｄの範囲内にある場合、「０」に設定される。
【００９２】
ＩコントローラＡ１６（積分項算出手段）は、下記(10)式に基づいて、出力値偏差DVoxsmを積分処理（Ｉ処理）してＩ補正量（積分項）FBsub2を求める。ここにおいて、Kiは予め設定された積分ゲイン（積分定数）である。SDVoxsmは、出力値偏差DVoxsmを積算して更新されていく「出力値偏差DVoxsmの時間積分値（積算値）」である偏差積分値である。従って、偏差積分値SDVoxsmは、Ｏ２センサ出力値Voxsが値ｃ〜値ｄの範囲内にあって出力値偏差DVoxsm＝０となる場合、更新されないことになる。ＩコントローラＡ１６は、前記積分値算出手段に相当する。
【００９３】
FBsub2＝Ki・SDVoxsm  ・・・(10)
【００９４】
学習処理手段Ａ１７は、後に詳述するように、「積分項FBsub2の学習処理」の実行タイミングが到来する毎に、積分項FBsub2の値の定常的な成分を積分項FBsub2の学習値Learn（バックアップＲＡＭ７４に記憶されている値）に移し変えていく。即ち、各「積分項FBsub2の学習処理」の前後において、積分項FBsub2の値と学習値Learnの和は変化しない。積分項FBsub2の値と学習値Learnの和は、サブＦＢ制御における実質的な積分項として機能する。
【００９５】
総和値算出手段Ａ１８は、積分項FBsub2の値と学習値Learnの和を総和値SUMとして算出する。総和値SUMは、上述のごとく、サブＦＢ制御における実質的な積分項として機能する値である。
【００９６】
サブＦＢ補正量算出手段Ａ１９は、下記(11)式に従って、上記ＰＤ補正量FBsub1に総和値SUMを加えることで、サブＦＢ補正量FBsubを求める（−1＜FBsub＜1）。これにより、サブＦＢ補正量FBsubは、下流側偏差DVoxsを比例・微分処理した値（FBsub1）と、出力値偏差DVoxsmを積分処理した値（SUM）の和となる。
【００９７】
FBsub＝FBsub1＋SUM  ・・・(11)
【００９８】
このように、本装置は、サブＦＢ補正量FBsubの算出に際し、触媒モデルＡ１３及びＯ２センサモデルＡ１４を導入して推定出力値Voxsm及び出力値偏差DVoxsmを算出する点、並びに、下流側偏差DVoxsに代えて出力値偏差DVoxsmを積分処理して積分項（＝総和値SUM）を算出する点、において特徴を有する。この特徴による作用・効果については後述する。サブＦＢ補正量算出手段Ａ１９は、前記補正値算出手段に相当する。
【００９９】
再び、図４を参照すると、上述したように、このサブＦＢ補正量FBsubは、制御用目標空燃比abyfrs(k)の設定に使用される。加えて、サブＦＢ補正量FBsubに基づく制御用目標空燃比abyfrs(k)は、上述したメインＦＢ制御に使用される。これにより、メインＦＢ制御を補完（補正）するように、以下のようにサブＦＢ制御がなされる。
【０１００】
例えば、第１触媒５３の下流のガスの空燃比がリーンとなることでＯ２センサ６７の出力値Voxsがリーンを示す値となると、下流側偏差DVoxsが正の値となるので（図３を参照）、サブＦＢ補正量FBsubは正の値となる。これにより、制御用目標空燃比abyfrs(k)（従って、ローパスフィルタ通過後制御用目標空燃比abyfrslow）が目標空燃比abyfr（＝理論空燃比）よりも小さい値（即ち、リッチな空燃比）に設定される。この状態で上流側空燃比偏差DAFがゼロになるようにメインＦＢ制御が実行されることにより、指令燃料噴射量Fiが増大させられ、空燃比がリッチ方向に制御される。この結果、Ｏ２センサ６７の出力値Voxsが下流側目標値Voxsrefと一致するように制御される。
【０１０１】
反対に、第１触媒５３の下流のガスの空燃比がリッチとなることでＯ２センサ６７の出力値Voxsがリッチを示す値となると、下流側偏差DVoxsが負の値となるので、サブＦＢ補正量FBsubは負の値となる。これにより、制御用目標空燃比abyfrs(k)（従って、ローパスフィルタ通過後制御用目標空燃比abyfrslow）が目標空燃比abyfr（＝理論空燃比）よりも大きい値（即ち、リーンな空燃比）に設定される。この状態で上流側空燃比偏差DAFがゼロになるようにメインＦＢ制御が実行されることにより、指令燃料噴射量Fiが減少させられ、空燃比がリーン方向に制御される。この結果、Ｏ２センサ６７の出力値Voxsが下流側目標値Voxsrefと一致するように制御される。以上のように、サブＦＢ制御により、Ｏ２センサ６７の出力値Voxsが下流側目標値Voxsrefと一致するように指令燃料噴射量Fiが制御される。
【０１０２】
加えて、サブＦＢ補正量FBsubは積分項（即ち、実質的な積分項である総和値SUM）を含んでいる。これにより、上述した「ＡＦセンサ６６の誤差」が発生している場合、サブＦＢ制御の実行により、後述するように、総和値SUMが「ＡＦセンサ６６の誤差」の大きさに対応する値（上記「収束目標値」に相当）に収束することで、「ＡＦセンサ６６の誤差」が補償され得る。
【０１０３】
なお、基本燃料噴射量算出手段Ａ４において目標空燃比abyfrに代えて制御用目標空燃比abyfrsを使用して基本燃料噴射量Fbaseが算出されること、並びに、ＡＦセンサ応答モデルＡ７が備えられていること、により、何らかの理由によりサブＦＢ補正量FBsubが荒れてもメインＦＢ補正量FBmainの荒れが次第に大きくなることが抑制され得、触媒上流空燃比の荒れが増大することを抑制することができる。この点については、特願２００５−３３８１１３に詳細に記載されている。
【０１０４】
ところで、Ｏ２センサ６７の出力値Voxsが下流側目標値Voxsrefに維持された状態では、サブＦＢ補正量FBsubにおける比例項Kp・DVoxsと微分項Kd・DDVoxsが共にゼロになるから、サブＦＢ補正量FBsubは総和値SUMと等しい。この状態において総和値SUMが「ＡＦセンサ６６の誤差」の大きさに対応する値（収束目標値）に収束している場合、制御用目標空燃比abyfrs（＝abyfr/(1＋FBsub)＝abyfr/(1＋SUM)）が、触媒上流空燃比が目標空燃比abyfr（＝理論空燃比AFth）と一致する場合に対応するＡＦセンサ６６の出力値Vabyfsから検出される検出空燃比abyfsと一致する。
【０１０５】
より具体的に述べると、例えば、「ＡＦセンサ６６の誤差」が発生していて、触媒上流空燃比に対するＡＦセンサ６６の出力特性が図２の破線で示される場合を考える。この場合、触媒上流空燃比が目標空燃比abyfr（＝AFth）と一致する場合（Vabyfs＝V1）に対応するＡＦセンサ６６による検出空燃比abyfs（値V1と図２の実線とから得られる空燃比）は、値AF1となる。
【０１０６】
この場合において、総和値SUMが「ＡＦセンサ６６の誤差」の大きさに対応する値（収束目標値）に収束している状態では、制御用目標空燃比abyfrs（＝abyfr/(1＋SUM)）は、値AF1と一致する。この状態においてメインＦＢ制御により、上流側空燃比偏差DAFがゼロになるように制御されることで、触媒上流空燃比が目標空燃比abyfr（＝AFth）と一致する。なお、この場合、総和値SUMの収束目標値である「ＡＦセンサ６６の誤差」の大きさに対応する値L1＝1−AF1/abyfr（＜０）となる。
【０１０７】
即ち、総和値SUMが収束目標値L1に一致していることは、本装置が目標空燃比abyfr（＝AFth）と等しい空燃比であるものとして扱っている実際の空燃比（以下、「制御中心空燃比AFcen」と称呼する。）が目標空燃比abyfr（＝AFth）に一致していることを意味する。
【０１０８】
換言すれば、メインＦＢ制御により上流側空燃比偏差DAFがゼロになるように制御されることで、触媒上流側空燃比が制御中心空燃比AFcenに一致するように制御される。そして、制御中心空燃比AFcenが目標空燃比abyfr(＝AFth)と一致している場合、触媒上流空燃比が目標空燃比abyfr（＝AFth）と一致する。この結果、「ＡＦセンサ６６の誤差」が適切に補償され得る。
【０１０９】
（下流側偏差DVoxsに代えて出力値偏差DVoxsmを積分処理して積分項（＝総和値SUM）を算出することによる作用）
上述のように、制御中心空燃比AFcenが目標空燃比abyfr（＝AFth）と一致している場合（即ち、総和値SUMが収束目標値と一致している場合）、メインＦＢ制御により上流側空燃比偏差DAFがゼロになるように制御されることで触媒上流空燃比が制御中心空燃比AFcen（＝AFth）と一致するように制御される。
【０１１０】
従って、触媒モデルＡ１３（具体的には、上記(7)式）にて使用される、第１触媒５３に流入するガス中の一燃料噴射当たりの酸素の過不足量を表す値である「0.23・DAF・Fi」は、第１触媒５３に実際に流入するガス中の一燃料噴射当たりの酸素の過不足量と一致し得る。この結果、触媒モデルＡ１３により推定される酸素吸蔵量OSAの推移が第１触媒５３の実際の酸素吸蔵量OSAactの推移と一致し得、この結果、Ｏ２センサモデルＡ１４により推定される推定出力値Voxsmの推移がＯ２センサ６７の実際の出力値Voxsの推移と一致し得る。
【０１１１】
このことは、フューエルカット等の空燃比制御に対する外乱が発生した場合であっても、その後において、出力値偏差Voxsmがゼロ、或いはゼロ近傍の値に維持されて総和値SUMが収束目標値からずれていかない（ずれていき難い）ことを意味する。
【０１１２】
即ち、制御中心空燃比AFcenが目標空燃比abyfr（＝AFth）と一致している場合、フューエルカット等の空燃比制御に対する外乱が発生した場合において総和値SUMが収束目標値からずれていくことが抑制され得る。この結果、制御中心空燃比AFcenが目標空燃比abyfr（＝AFth）からずれていくことが抑制され得る。
【０１１３】
一方、総和値SUMが収束目標値からずれている場合、制御中心空燃比AFcenが目標空燃比abyfr(＝AFth)からずれた値となる。この場合、メインＦＢ制御により上流側空燃比偏差DAFがゼロになるように制御されることで、触媒上流空燃比が制御中心空燃比AFcen（即ち、目標空燃比abyfrからずれた空燃比）と一致するように制御される。
【０１１４】
従って、上記値「0.23・DAF・Fi」が、第１触媒５３に実際に流入するガス中の一燃料噴射当たりの酸素の過不足量と一致し得なくなる。この結果、酸素吸蔵量OSAの推移が実際の酸素吸蔵量OSAactの推移と一致し得なくなり、この結果、推定出力値Voxsmの推移がＯ２センサ出力値Voxsの推移と一致し得なくなる。以下、このことについて、図７を参照しながら説明する。なお、ＡＦセンサ６６には誤差が発生していて、上述と同様、空燃比に対するＡＦセンサ６６の出力特性は、図２の破線で示されるものとする。
【０１１５】
図７では、時刻ｔ１以前において継続されていたフューエルカットが時刻ｔ１にて終了した場合であって、制御中心空燃比AFcenが目標空燃比abyfr（＝AFth）よりもリッチ方向にずれている場合（図中の「中心ずれ」を参照）が示されている。即ち、総和値SUMが、上記収束目標値L1よりも大きい値に維持され、値（abyfr/(1＋SUM)）が、値AF1（図２を参照）よりも上記「中心ずれ」の分だけ小さい場合が示されている。なお、制御中心空燃比AFcenは、検出空燃比abyfsが値（abyfr/(1＋SUM)）に一致する場合に対応する触媒上流空燃比であるということもできる。
【０１１６】
図７では、時刻ｔ１以前のフューエルカット中において、第１触媒５３には空気そのものが流入すること、並びに、上記(7)式に代えて上記(8)式に従って酸素吸蔵量OSAが計算されること、により、時刻ｔ１にて、実際の酸素吸蔵量OSAact及び酸素吸蔵量OSAが共に最大酸素吸蔵量Cmaxになっていて、Ｏ２センサ出力値Voxs及び推定出力値Voxsmが共に値minになっている場合が示されている。
【０１１７】
時刻ｔ１にてフューエルカットが終了すると、上述したメインＦＢ制御及びサブＦＢ制御が開始される。これにより、時刻ｔ１以降、上流側空燃比偏差DAFがゼロになるように制御されることで、触媒上流空燃比が制御中心空燃比AFcen（即ち、理論空燃比AFthよりもリッチな空燃比）と一致するように制御される。
【０１１８】
この結果、第１触媒５３には理論空燃比AFthよりもリッチな空燃比の（未燃ＨＣ，ＣＯを多量に含んだ）ガスが流入するから、時刻ｔ１以降、実際の酸素吸蔵量OSAactは最大酸素吸蔵量Cmaxからゼロに向けて減少していく。しかしながら、時刻ｔ２にて実際の酸素吸蔵量OSAactがゼロになるまで、Ｏ２センサ出力値Voxsは値minに維持され続ける。
【０１１９】
一方、時刻ｔ１以降、上流側空燃比偏差DAFがゼロ、或いはゼロ近傍の値に維持され続けるから、酸素吸蔵量OSAは、時刻ｔ１以降（ｔ２以降も）、最大酸素吸蔵量Cmax、或いは最大酸素吸蔵量Cmax近傍の値に維持され続ける。即ち、時刻ｔ１以降（時刻ｔ２以降も）、推定出力値Voxsmも値minに維持され続ける。この結果、時刻ｔ１〜ｔ２では、推定出力値VoxsmがＯ２センサ出力値Voxsと一致して出力値偏差DVoxsmがゼロに維持され続けるから、総和値SUMが上記「収束目標値L1よりも大きい値」で一定となる。
【０１２０】
時刻ｔ２になると、第１触媒５３から多量の未燃ＨＣ，ＣＯを含んだガスが流出するから、Ｏ２センサ出力値Voxsが値minから値maxに反転する。これにより、時刻ｔ２以降、推定出力値VoxsmがＯ２センサ出力値Voxsと一致し得なくなり、出力値偏差DVoxsmが負の値に維持される。この結果、収束目標値L1よりも大きかった総和値SUMが減少して収束目標値L1に近づいていき、制御中心空燃比AFcenが理論空燃比AFthに近づいていく。
【０１２１】
このように、制御中心空燃比AFcenが目標空燃比abyfr（＝AFth）と一致していない場合、推定出力値VoxsmとＯ２センサ出力値Voxsとにおいて差が発生し得、これにより、制御中心空燃比AFcenが目標空燃比abyfr（＝AFth）に向けて近づいていく。この結果、「ＡＦセンサ６６の誤差」が適切に補償され得る。
【０１２２】
（実際の作動）
次に、この第１実施形態の実際の作動について、図８〜図１１に示したフローチャートを参照しながら説明する。以下、説明の便宜上、「MapX(a1,a2,…)」は、a1,a2,…を引数とする値Xを求めるためのテーブルを表すものとする。また、引数の値がセンサの検出値である場合、現在値が使用される。
【０１２３】
ＣＰＵ７１は、図８にフローチャートにより示した指令燃料噴射量Fiの計算、及び燃料噴射の指示を行うルーチンを、各気筒のクランク角が各吸気上死点前の所定クランク角度（例えば、ＢＴＤＣ９０°ＣＡ）となる毎に、繰り返し実行するようになっている。
【０１２４】
従って、任意の気筒のクランク角度が前記所定クランク角度になると、ＣＰＵ７１はステップ８００から処理を開始してステップ８０５に進んで、テーブルMapMc(NE,Ga)に基づいて、今回の吸気行程を迎える気筒（以下、「燃料噴射気筒」と云うこともある。）に吸入された新気の量である今回の筒内吸入空気量Mc(k)を推定する。
【０１２５】
次に、ＣＰＵ７１はステップ８１０に進んで、フューエルカット中であるか否かを判定し、「Ｙｅｓ」と判定する場合、ステップ８９５に直ちに進んで本ルーチンを一旦終了する。これにより、フューエルカット中は、燃料噴射が行われない。
【０１２６】
一方、フューエルカット中でない場合、ＣＰＵ７１はステップ８１０にて「Ｎｏ」と判定してステップ８１５に進み、目標空燃比abyfr（＝理論空燃比AFth）と、後述するルーチンにて（前回の燃料噴射時点にて）求められているサブＦＢ補正量FBsubの最新値と、上記(1)式とに基づいて制御用目標空燃比abyfrs(k)を求め、続くステップ８２０にて、上記筒内吸入空気量Mc(k)を制御用目標空燃比abyfrs(k)で除することにより、基本燃料噴射量Fbaseを決定する。
【０１２７】
次いで、ＣＰＵ７１はステップ８２５に進んで、上記(2)式に従って、上記基本燃料噴射量Fbaseに、後述するルーチンにて（前回の燃料噴射時点にて）求められているメインＦＢ補正量FBmainの最新値を加えることで、今回の指令燃料噴射量Fiを決定する。
【０１２８】
続いて、ＣＰＵ７１はステップ８３０に進んで、指令燃料噴射量Fiの燃料の噴射指示を行った後、ステップ８９５に進んで本ルーチンを一旦終了する。以上により、メインＦＢ制御、及びサブＦＢ制御が行われる。
【０１２９】
次に、上述したメインＦＢ制御においてメインＦＢ補正量FBmainを算出する際の作動について説明すると、ＣＰＵ７１は図９にフローチャートにより示したルーチンを、燃料噴射気筒について燃料噴射開始時期（噴射指示開始時点）が到来する毎に、繰り返し実行するようになっている。
【０１３０】
従って、燃料噴射気筒について燃料噴射開始時期が到来すると、ＣＰＵ７１はステップ９００から処理を開始し、ステップ９０５に進んで、メインＦＢ条件が成立しているか否かを判定する。メインＦＢ条件は、例えば、機関の冷却水温THWが第１所定値以上であって、ＡＦセンサ６６が正常（活性状態となっていることを含む）であって、筒内吸入空気量Mcが所定値以下であるときに成立する。
【０１３１】
いま、メインＦＢ条件が成立しているものとして説明を続けると、ＣＰＵ７１はステップ９０５にて「Ｙｅｓ」と判定してステップ９１０に進み、テーブルMapabyfs(Vabyfs)（図２の実線を参照）に基づいて、今回の検出空燃比abyfs(k)を求める。
【０１３２】
次に、ＣＰＵ７１はステップ９１５に進んで、テーブルMapＮ(Mc(k),NE)に基づいて、ストローク数Ｎを決定する。次いで、ＣＰＵ７１はステップ９２０に進み、現時点からＮストローク（Ｎ回の吸気行程）前の制御用目標空燃比であるabyfrs(k−N)を時定数τをもってローパスフィルタ処理してローパスフィルタ通過後制御用目標空燃比abyfrslowを求める。
【０１３３】
続いて、ＣＰＵ７１はステップ９２５に進み、上記(3)式に従って、検出空燃比abyfs(k)からローパスフィルタ通過後制御用目標空燃比abyfrslowを減ずることにより、上流側空燃比偏差DAFを求める。
【０１３４】
次いで、ＣＰＵ７１はステップ９３０に進み、その時点における上流側空燃比偏差DAFの積分値SDAFにステップ９２５にて求めた上流側空燃比偏差DAFを加えて、積分値SDAFを更新する。そして、ＣＰＵ７１はステップ９３５に進んで、上記(4)式に従って、メインＦＢ補正量FBmainを求めた後、ステップ９９５に進んで本ルーチンを一旦終了する。
【０１３５】
以上により、メインＦＢ補正量FBmainが求められ、このメインＦＢ補正量FBmainが前述した図８のステップ８２５により指令燃料噴射量Fiに反映されることで上述したメインＦＢ制御が実行される。
【０１３６】
一方、ステップ９０５の判定時において、メインＦＢ条件が不成立であると、ＣＰＵ７１は同ステップ９０５にて「Ｎｏ」と判定してステップ９４０に進んでメインＦＢ補正量FBmainの値を「０」に設定し、その後ステップ９９５に進んで本ルーチンを一旦終了する。このように、メインＦＢ条件が不成立であるときは、メインＦＢ補正量FBmainを「０」としてメインＦＢ制御に基づく空燃比フィードバック制御を行わない。
【０１３７】
次に、上述したサブＦＢ制御においてサブＦＢ補正量FBsubを算出する際の作動について説明すると、ＣＰＵ７１は図１０にフローチャートにより示したルーチンを、燃料噴射気筒について燃料噴射開始時期（噴射指示開始時点）が到来する毎に、繰り返し実行するようになっている。
【０１３８】
従って、燃料噴射気筒について燃料噴射開始時期が到来すると、ＣＰＵ７１はステップ１０００から処理を開始し、まず、ステップ１００５にて、サブＦＢ条件が成立しているか否かを判定する。サブＦＢ条件は、例えば、前述したステップ９０５でのメインＦＢ条件に加え、機関の冷却水温THWが前記第１所定値よりも高い第２所定値以上のときに成立する。
【０１３９】
いま、サブＦＢ条件が成立しているものとして説明を続けると、ＣＰＵ７１はステップ１００５にて「Ｙｅｓ」と判定してステップ１０１０に進み、上記(5)式に従って、下流側目標値Voxsrefから現時点のＯ２センサ出力値Voxsを減じることにより、下流側偏差DVoxsを求め、続くステップ１０１５にて、上記(6)式に従って、下流側偏差DVoxsをＰＤ処理してＰＤ補正量FBsub1を求める。
【０１４０】
次に、ＣＰＵ７１はステップ１０２０に進んで、先のステップ８２５にて求めた指令燃料噴射量Fiの最新値と、先のステップ９２５にて求めた上流側空燃比偏差DAFの最新値と、上記(7)式（或いは、上記(8)式）とに基づいて酸素吸蔵量OSAを更新する。続いて、ＣＰＵ７１はステップ１０２５に進み、上記更新された酸素吸蔵量OSAと、図５に示した出力特性とに基づいて推定出力値Voxsmを更新する。
【０１４１】
次いで、ＣＰＵ７１はステップ１０３０に進み、上記推定出力値Voxsmと、Ｏ２センサ出力値Voxsと、図６に示したテーブルに基づいて決定される係数Kmと、上記(9)式とに基づいて、出力値偏差DVoxsmを求める。
【０１４２】
続いて、ＣＰＵ７１はステップ１０３５に進んで、その時点における偏差積分値SDVoxsmにステップ１０３０にて求めた出力値偏差DVoxsmを加えて偏差積分値SDVoxsmを更新し、続くステップ１０４０にて、上記更新した偏差積分値SDVoxsmと、上記(10)式とに基づいて積分項FBsub2を求め、続くステップ１０４５にて、上記積分項FBsub2と、後述するルーチンにて設定・更新されている積分項FBsub2の学習値Learnを加えて総和値SUMを求める。
【０１４３】
そして、ＣＰＵ７１はステップ１０５０に進んで、ステップ１０１５にて求めたＰＤ補正量FBsub1と、ステップ１０４５にて求めた総和値SUMと、上記(11)式とに基づいてサブＦＢ補正量FBsubを求め、ステップ１０９５に進んで本ルーチンを一旦終了する。
【０１４４】
以上により、サブＦＢ補正量FBsubが求められる。このサブＦＢ補正量FBsubが、前述した図８のステップ８１５により制御用目標空燃比abyfrs(k)に反映され、この制御用目標空燃比abyfrs(k)に基づいて図９のルーチンが実行される（即ち、メインＦＢ制御が実行される）ことで、上述したサブＦＢ制御が実行される。
【０１４５】
一方、ステップ１００５の判定時において、サブフィードバック条件が不成立であると、ＣＰＵ７１は同ステップ１００５にて「Ｎｏ」と判定してステップ１０５５に進んで、ＰＤ補正量FBsub1、及び積分項FBsub2を共に「０」に設定し、ステップ１０４５、１０５０の処理を実行する。このように、サブフィードバック条件が不成立であるときは、サブＦＢ補正量FBsubを学習値Learnと等しい値に維持して「ＡＦセンサの６６の誤差」を補償する一方、サブＦＢ制御に基づく空燃比フィードバック制御を行わない。
【０１４６】
次に、積分項FBsub2の学習値Learnを更新する際の作動について説明すると、ＣＰＵ７１は図１１にフローチャートにより示したルーチンを、燃料噴射気筒について燃料噴射開始時期（噴射指示開始時点）が到来する毎に、繰り返し実行するようになっている。
【０１４７】
従って、燃料噴射気筒について燃料噴射開始時期が到来すると、ＣＰＵ７１はステップ１１００から処理を開始し、まず、ステップ１１０５にて、図１０のステップ１００５のものと同じサブＦＢ条件が成立しているか否かを判定する。
【０１４８】
ＣＰＵ７１はステップ１１０５にて「Ｎｏ」と判定する場合、ステップ１１９５に直ちに進んで本ルーチンを一旦終了する。この場合、学習値Learnの更新は行われない。一方、ＣＰＵ７１はステップ１１０５にて「Ｙｅｓ」と判定する場合、ステップ１１１０に進んで、ステップ１０４０にて求めた積分項FBsub2の値をローパスフィルタ処理してなまし処理後積分項FBsub2lowを求める。
【０１４９】
続いて、ＣＰＵ７１はステップ１１１５に進み、学習値Learnの更新タイミングが到来したか否かを判定し、「Ｎｏ」と判定する場合、ステップ１１９５に直ちに進んで本ルーチンを一旦終了する。この場合、学習値Learnの更新は行われない。本例では、学習値Learnの更新タイミングは、燃料噴射が所定回数行われる毎に到来する。
【０１５０】
いま、学習値Learnの更新タイミングが到来したものとすると、ＣＰＵ７１はステップ１１１５にて「Ｙｅｓ」と判定してステップ１１２０に進み、学習値の更新値DLearnを、先のステップ１１１０にて更新されている現時点でのなまし処理後積分項FBsub2lowの値に設定する。
【０１５１】
続いて、ＣＰＵ７１はステップ１１２５に進んで、その時点においてバックアップＲＡＭ７４に記憶されている学習値Learnに上記ステップ１１２０にて求めた更新値DLearnを加えて、新たな学習値Learnを求める（即ち、学習値Learnを更新する）。
【０１５２】
次に、ＣＰＵ７１はステップ１１３０に進み、その時点での積分項FBsub2から上記更新値DLearnを減じることで、更新値DLearnの分を積分項FBsub2から差し引き、続くステップ１１３５にて、偏差積分値SDVoxsmを上記差し引かれた後の積分項FBsub2の値に対応させるため、偏差積分値SDVoxsmを値（FBsub2/Ki）に補正する。そして、ＣＰＵ７１はステップ１１４０に進んで、なまし処理後積分項FBsub2lowの値を「０」にクリアし、ステップ１１９５に進んで本ルーチンを一旦終了する。
【０１５３】
このように、更新タイミングが到来する毎に、積分項FBsub2の値の定常的な成分（＝FBsub2low）が学習値Learnに移し変えられていき、これにより、学習値Learnが更新されていく。
【０１５４】
以上、説明したように、本発明による内燃機関の空燃比制御装置の第１実施形態によれば、触媒下流のＯ２センサ６７の出力値Voxsに基づくサブＦＢ制御によりサブＦＢ補正量FBsubが算出され、このサブＦＢ補正量FBsubにより目標空燃比が補正される（即ち、制御用目標空燃比abyfrsが計算される）。触媒上流のＡＦセンサ６６の出力値Vabyfsに基づくメインＦＢ制御により、ＡＦセンサ出力値Vabyfsから検出される検出空燃比abyfsと制御用目標空燃比abyfrsとの差（即ち、上流側空燃比偏差DAF）がゼロになるように触媒上流空燃比が制御される。
【０１５５】
ここで、サブＦＢ補正量FBsubの算出に際し、上流側空燃比偏差DAFに基づいて第１触媒５３の酸素吸蔵量の推定値OSAを算出する触媒モデルＡ１３と、推定された酸素吸蔵量OSAに基づいてＯ２センサ出力値Voxsの推定値Voxsmを算出するＯ２センサモデルＡ１４とを導入し、推定出力値VoxsmとＯ２センサ出力値Voxsの差（出力値偏差DVoxsm）が算出される。加えて、サブＦＢ補正量FBsubは、目標空燃比に相当する下流側目標値VoxsrefとＯ２センサ出力値Voxsの差（下流側偏差DVoxs）を比例・微分処理した値（ＰＤ補正量FBsub1）と、出力値偏差DVoxsmを積分処理した値（積分項SUM）の和の値に算出される。
【０１５６】
このように、下流側偏差DVoxsに代えて出力値偏差DVoxsmを積分処理してサブＦＢ制御における積分項（＝総和値SUM）を算出することで、以下の作用・効果が発生する。制御中心空燃比AFcenが目標空燃比abyfr（＝AFth）と一致している場合（総和値SUMが「ＡＦセンサ６６の誤差」の大きさに対応する値（収束目標値）に収束している場合）、フューエルカット等の空燃比制御に対する外乱が発生した場合であっても、その後において、出力値偏差Voxsmがゼロ、或いはゼロ近傍の値に維持されて総和値SUMが収束目標値からずれていかない（ずれていき難い）。これにより、フューエルカット等の空燃比制御に対する外乱が発生した場合において制御中心空燃比AFcenが目標空燃比abyfr（＝AFth）からずれていくことが抑制され得、この結果、「ＡＦセンサ６６の誤差」が適切に補償され得る。
【０１５７】
加えて、制御中心空燃比AFcenが目標空燃比abyfr（＝AFth）と一致していない場合（総和値SUMが収束目標値からずれている場合）、出力値偏差DVoxsmが総和値SUMを収束目標値に近づける方向の値に設定され、総和値SUMが収束目標値に向けて近づけられ得る。この結果、制御中心空燃比AFcenが目標空燃比abyfr（＝AFth）に向けて近づけられ得、「ＡＦセンサ６６の誤差」が適切に補償され得る。
【０１５８】
更には、Ｏ２センサ出力値Voxsが下流側目標値Voxsrefを含む所定の範囲内（値ｃ〜値ｄの範囲内）にある場合、出力値偏差DVoxsmが強制的にゼロに設定され（図６、上記(9)式参照）、総和値SUMの更新が行われない。これにより、制御中心空燃比AFcenが目標空燃比abyfr（＝AFth）に近い場合（総和値SUMが収束目標値に近い場合）において、総和値SUMが収束目標値から離れていくことで制御中心空燃比AFcenが目標空燃比abyfr（＝AFth）から離れていくことを抑制することができる。
【０１５９】
（第２実施形態）
次に、本発明の第２実施形態に係る空燃比制御装置について説明する。図１２は、第２実施形態の機能ブロック図である。この図１２と、第１実施形態の機能ブロック図である図４との比較から理解できるように、第２実施形態は、総和値SUMで補正された目標空燃比とＡＦセンサ６６の検出空燃比abyfsとの差（積分補正用空燃比偏差DAF1）を触媒モデルＡ１３に入力する点で、サブＦＢ補正量FBsubで補正された目標空燃比と検出空燃比abyfsと差（上記上流側空燃比偏差DAF）を触媒モデルＡ１３に入力する上記第１実施形態と異なる。
【０１６０】
より具体的に述べると、図１２では、図４に対して、Ａ２０〜Ａ２２の機能ブロックが追加されている。積分補正用目標空燃比設定手段Ａ２０は、下記(12)式に従って、目標空燃比abyfrと、総和値SUMとに基づいて積分補正用目標空燃比abyfrsi(k)を設定する。
【０１６１】
abyfrsi(k)＝abyfr/(1＋SUM)  ・・・(12)
【０１６２】
上記(12)式から理解できるように、この積分補正用目標空燃比abyfrsi(k)は、目標空燃比abyfrに対して総和値SUMに応じた分だけ異なる空燃比に設定される。積分補正用目標空燃比abyfrsiは、各気筒の吸気行程に対応されながらＲＡＭ７３に記憶されていく。
【０１６３】
ＡＦセンサ応答モデルＡ２１は、ＡＦセンサ応答モデルＡ７と同様のモデルであり、現時点からＮストローク（Ｎ回の吸気行程）前の積分補正用目標空燃比abyfrsi(k−N)を時定数τをもってローパスフィルタ処理した値であるローパスフィルタ通過後積分補正用目標空燃比abyfrsilowを出力する。
【０１６４】
積分補正用空燃比偏差算出手段Ａ２２は、下記(13)式に基づいて、今回の検出空燃比abyfs(k)からローパスフィルタ通過後積分補正用目標空燃比abyfrsilowを減じることにより、現時点からＮストローク前の積分補正用空燃比偏差DAF1（前記「第２の偏差」に対応）を求める。
【０１６５】
DAF1＝abyfs(k)−abyfrsilow  ・・・(13)
【０１６６】
そして、触媒モデルＡ１３は、このようにして求められた積分補正用空燃比偏差DAF1を入力し、上記(7)式に対応する下記(14)式に基づいて酸素吸蔵量OSAを推定（更新）していく。
【０１６７】
OSA＝Σ(0.23・DAF1・Fi)  （0≦OSA≦Cmax）・・・(14)
【０１６８】
図１３は、第２実施形態に係るＣＰＵ７１が実行するサブＦＢ補正量FBsubを算出するためのルーチンをフローチャートにより示している。図１３のルーチンは、積分補正用目標空燃比設定手段Ａ２０に対応するステップ１３０５、ＡＦセンサ応答モデルＡ２１に対応するステップ１３１０、及び積分補正用空燃比偏差算出手段Ａ２２に対応するステップ１３１５を挿入した点、並びに、「DAF」を「DAF1」に置き換えて図１０のステップ１０２０をステップ１３２０とした点においてのみ、図１０のルーチンと異なる。図１３のルーチンについての詳細な説明は省略する。
【０１６９】
以下、第２実施形態の作用・効果について説明する。いま、制御中心空燃比AFcenが目標空燃比abyfr（＝AFth）と一致していて、メインＦＢ制御により上流側空燃比偏差DAFがゼロになるように制御されている場合において、Ｏ２センサ６７の出力値Voxsに外乱が加わったこと等に起因して、サブＦＢ補正量FBsubにおける下流側偏差DVoxsに基づく部分（即ち、ＰＤ補正量FBsub1）が大きい値となり、この結果、触媒上流空燃比が目標空燃比abyfr（＝AFth）から一時的に離れた場合（急激に変化した場合）を考える。
【０１７０】
この場合、上流側空燃比偏差DAFは依然としてゼロ近傍の値に維持され得る。一方、積分補正用空燃比偏差DAF1は、ＰＤ補正量FBsub1の値に相当する分だけ上流側空燃比偏差DAFと異なる値となる。従って、触媒上流空燃比が目標空燃比abyfr(＝AFth)から一時的に離れた場合であっても、触媒モデルＡ１３（具体的には、上記(14)式）にて使用される、第１触媒５３に流入するガス中の一燃料噴射当たりの酸素の過不足量を表す値である「0.23・DAF1・Fi」は、第１触媒５３に実際に流入するガス中の一燃料噴射当たりの酸素の過不足量と一致し得る。
【０１７１】
この結果、Ｏ２センサ６７の出力値Voxsに対する外乱等が発生した場合であっても、触媒モデルＡ１３により推定される酸素吸蔵量OSAの推移を、同外乱により変化する第１触媒５３の実際の酸素吸蔵量OSAactの推移と一致させることができ、この結果、Ｏ２センサモデルＡ１４により推定される推定出力値Voxsmの推移をＯ２センサ６７の実際の出力値Voxsの推移と一致させることができる。
【０１７２】
一方、上記第１実施形態では、Ｏ２センサ６７の出力値Voxsに対する外乱等が発生した場合であっても、上流側空燃比偏差DAFが依然としてゼロ近傍の値に維持されて触媒モデルＡ１３により推定される酸素吸蔵量OSAが略一定に維持されてしまう。即ち、触媒モデルＡ１３により推定される酸素吸蔵量OSAの推移を第１触媒５３の実際の酸素吸蔵量OSAactの推移と一致させることができない。この結果、Ｏ２センサモデルＡ１４により推定される推定出力値Voxsmの推移をＯ２センサ６７の実際の出力値Voxsの推移と一致させることができない可能性が高くなる。以上より、第２実施形態によれば、上記第１実施形態に比して、推定出力値Voxsmの推移をＯ２センサ６７の実際の出力値Voxsの推移により一層精度良く一致させることができる。
【０１７３】
本発明は上記各実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、上記各実施形態においては、基本燃料噴射量Fbaseを、筒内吸入空気量Mcを制御用目標空燃比abyfrsで除した値に設定しているが、基本燃料噴射量Fbaseを、筒内吸入空気量Mcを目標空燃比abyfrで除した値に設定してもよい。
【０１７４】
また、上記各実施形態においては、サブＦＢ補正量FBsubに基づいて目標空燃比abyfr（＝理論空燃比AFth）を補正して制御用目標空燃比abyfrsを設定し、検出空燃比abyfsが制御用目標空燃比abyfrsに一致するようにメインＦＢ制御が実行されているが、サブＦＢ補正量FBsubに基づいて検出空燃比abyfs（或いは、上流側空燃比センサの出力値Vabyfs）を補正し、補正された検出空燃比abyfs（或いは、上流側空燃比センサの出力値Vabyfs）が目標空燃比abyfr（＝理論空燃比AFth）と一致するようにメインＦＢ制御が実行されてもよい。
【０１７５】
また、上記各実施形態においては、上記(7)式、或いは、上記(14)式にて表される簡易な触媒モデルＡ１３が使用されているが、酸素吸蔵量OSAをより精度良く推定するため、より複雑な触媒モデルを使用してもよい。より複雑な触媒モデルは、例えば、特開２００４−３６４７５号公報、特開２００４−２２５６１８号公報等に開示されている。
に開示されている。
【０１７６】
また、上記各実施形態においては、第１触媒５３の最大酸素吸蔵量Cmaxが既に取得済みであることを前提としていたが、最大酸素吸蔵量Cmaxが未取得の段階をも考慮する場合、図１０のルーチンに代えて図１４にフローチャートにより示したルーチンを使用してサブフィードバック補正量FBsubが計算されることが好ましい。
【０１７７】
図１４のルーチンは、ステップ１４０５、１４１０が追加された点においてのみ、図１０のルーチンと異なる。図１４のルーチンについての詳細な説明は省略する。図１４のルーチンを使用してサブフィードバック補正量FBsubを計算すれば、最大酸素吸蔵量Cmaxが未取得の段階では、積分項FBsub2がゼロに維持されるから、総和値SUMが更新されない。これにより、不正確な酸素吸蔵量OSA、即ち、不正確な推定出力値Voxsmに基づいて総和値SUMが更新される事態を防止することができる。
【０１７８】
加えて、最大酸素吸蔵量Cmaxが未取得の段階をも考慮する場合、図１０のルーチンに代えて図１５にフローチャートにより示したルーチンを使用してサブフィードバック補正量FBsubが計算されてもよい。
【０１７９】
図１５のルーチンは、ステップ１５０５、１５１０、１５１５が追加された点においてのみ、図１０のルーチンと異なる。図１５のルーチンについての詳細な説明は省略する。図１５のルーチンを使用してサブフィードバック補正量FBsubを計算すれば、最大酸素吸蔵量Cmaxが未取得の段階では、積分項FBsub2がゼロに維持されることに加え、値FBsub1が下流側偏差DVoxsをＰＩＤ処理した値に算出される。従って、最大酸素吸蔵量Cmaxが未取得の段階では、上述した特許文献１に記載した装置と同様に、積分項を含むサブＦＢ補正量FBsubが算出され得る。従って、少なくとも特許文献１に記載した装置と同等程度には上記吸排気系の誤差を補償することができる。
【図面の簡単な説明】
【０１８０】
【図１】本発明の第１実施形態に係る空燃比制御装置を適用した内燃機関の概略図である。
【図２】図１に示した上流側空燃比センサの出力電圧と空燃比との関係を示したグラフである。
【図３】図１に示した下流側空燃比センサの出力電圧と空燃比との関係を示したグラフである。
【図４】図１に示した空燃比制御装置が空燃比フィードバック制御を実行する際の機能ブロック図である。
【図５】図１に示した空燃比制御装置が使用するＯ２センサモデルの出力特性を示したグラフである。
【図６】図１に示した空燃比制御装置が出力値偏差の計算に使用する係数の値を決定する際に参照する、Ｏ２センサ出力値と係数との関係を規定するテーブルを示したグラフである。
【図７】制御中心空燃比が理論空燃比からずれている場合において図１に示した空燃比制御装置により空燃比フィードバック制御が実行された場合の一例を示したタイムチャートである。
【図８】図１に示したＣＰＵが実行する指令燃料噴射量の計算、及び噴射指示を行うためのルーチンを示したフローチャートである。
【図９】図１に示したＣＰＵが実行するメインＦＢ補正量を計算するためのルーチンを示したフローチャートである。
【図１０】図１に示したＣＰＵが実行するサブＦＢ補正量を計算するためのルーチンを示したフローチャートである。
【図１１】図１に示したＣＰＵが実行する学習値の更新を行うためのルーチンを示したフローチャートである。
【図１２】本発明の第２実施形態に係る空燃比制御装置が空燃比フィードバック制御を実行する際の機能ブロック図である。
【図１３】本発明の第２実施形態に係る空燃比制御装置のＣＰＵが実行するサブＦＢ補正量を計算するためのルーチンを示したフローチャートである。
【図１４】本発明の実施形態の変形例に係る空燃比制御装置のＣＰＵが実行するサブＦＢ補正量を計算するためのルーチンを示したフローチャートである。
【図１５】本発明の実施形態の他の変形例に係る空燃比制御装置のＣＰＵが実行するサブＦＢ補正量を計算するためのルーチンを示したフローチャートである。
【符号の説明】
【０１８１】
１０…内燃機関、２５…燃焼室、３９…インジェクタ、５１…エキゾーストマニホールド、５３…三元触媒（第１触媒）、６６…ＡＦセンサ、６７…Ｏ２センサ、７０…電気制御装置、７１…ＣＰＵ、７４…バックアップＲＡＭ
【図１】
2008095647.tif 000003
【図２】
2008095647.tif 000004
【図３】
2008095647.tif 000005
【図４】
2008095647.tif 000006
【図５】
2008095647.tif 000007
【図６】
2008095647.tif 000008
【図７】
2008095647.tif 000009
【図８】
2008095647.tif 000010
【図９】
2008095647.tif 000011
【図１０】
2008095647.tif 000012
【図１１】
2008095647.tif 000013
【図１２】
2008095647.tif 000014
【図１３】
2008095647.tif 000015
【図１４】
2008095647.tif 000016
【図１５】
2008095647.tif 000017