(57)【要約】【課題】  複数の気筒間における空燃比のばらつきを確実に抑制しつつ、排気通路の集合部に配設された空燃比センサ出力に基づき機関の空燃比をフィードバック制御すること。【解決手段】  この空燃比制御装置は、補正前基本燃料噴射量Fbasebに基本燃料噴射量補正係数α#nを乗じた値（Fbaseb・α#n）が#n気筒に同Fbasebの燃料が実際に噴射されるために必要な補正後基本燃料噴射指示量Fbase#nになるようにα#nを気筒毎に求め、#n気筒の最終燃料噴射指示量Fi#nを、（Fbaseb・α#n）に上流側空燃比センサ出力vabyfsに基づくフィードバック補正量DFiを乗じた値に設定する。α#nは、各気筒の最終燃料噴射指示量Fi#nを全て（Fbaseb・DFi）に設定した状態にて、全気筒稼動状態にて得られるフィードバック補正量DFiallと、#n気筒のみを休止した状態にて得られるフィードバック補正量DFi#elseとを取得し、「α#n＝４・DFiall−３・DFi#else」なる式から求める。【選択図】  図４
2005030350.tif 000002
【特許請求の範囲】
【請求項１】
複数の気筒を有する内燃機関の気筒毎に配設され、気筒毎に燃料を噴射する燃料噴射手段と、
前記複数の気筒からそれぞれ排出された排ガスが集合せしめられて成る排ガスが通過する前記内燃機関の排気通路に配設された空燃比センサと、
前記空燃比センサの出力値が所定の目標値になるように同出力値に基づいてフィードバック補正量を算出し、同フィードバック補正量に基づいて調整された燃料噴射量の燃料を前記各気筒に対して前記燃料噴射手段により噴射せしめることで同各気筒に供給される混合気の空燃比をフィードバック制御するフィードバック制御手段と、
を備えた内燃機関の空燃比制御装置であって、
前記内燃機関の運転状態に応じて前記複数の気筒の状態を、全ての気筒が稼動する全気筒稼動状態と、同複数の気筒の一部である一つ又は複数の気筒が休止する一部気筒休止状態との何れか一方に切換える気筒状態切換手段と、
前記全気筒稼動状態において前記フィードバック制御手段により算出される全気筒稼動時フィードバック補正量と、前記一部気筒休止状態において同フィードバック制御手段により算出される一部気筒休止時フィードバック補正量とに基づいて、同一部気筒休止状態において休止していた前記一部の気筒に対する前記燃料噴射量を補正する気筒別噴射量補正手段と、
を備えた内燃機関の空燃比制御装置。
【請求項２】
請求項１に記載の内燃機関の空燃比制御装置において、
前記フィードバック制御手段は、
前記各気筒に供給される混合気の空燃比を前記所定の目標値に相当する目標空燃比とするために必要な基本燃料噴射量を同内燃機関の運転状態に応じて決定するとともに同基本燃料噴射量を前記フィードバック補正量に基づいて調整することで得られる前記燃料噴射量の燃料を前記各気筒に対して前記燃料噴射手段により噴射せしめるように構成され、
前記気筒別噴射量補正手段は、
前記全気筒稼動時フィードバック補正量と、前記一部気筒休止時フィードバック補正量とに基づいて前記一部気筒休止状態において休止していた前記一部の気筒についての前記基本燃料噴射量を補正することで同一部の気筒に対する前記燃料噴射量を補正するように構成された内燃機関の空燃比制御装置。
【請求項３】
請求項１又は請求項２に記載の内燃機関の空燃比制御装置において、
前記気筒状態切換手段は、
前記一部気筒休止状態において、前記一部の気筒としての任意の一つの気筒を休止させるとともに、全ての気筒の各々を同任意の一つの気筒として休止させていくように構成された内燃機関の空燃比制御装置。
【請求項４】
請求項１乃至請求項３の何れか一項に記載の内燃機関の空燃比制御装置において、
前記気筒別噴射量補正手段は、
前記内燃機関が所定の定常運転状態にある所定時間内における前記全気筒稼動時フィードバック補正量の時間的平均値、及び前記一部気筒休止時フィードバック補正量の時間的平均値をそれぞれ、前記全気筒稼動時フィードバック補正量、及び前記一部気筒休止時フィードバック補正量として使用するように構成された内燃機関の空燃比制御装置。
【請求項５】
請求項１乃至請求項４の何れか一項に記載の内燃機関の空燃比制御装置であって、
稼動している気筒から排出された排ガスの各状態が前記空燃比センサの出力に反映される程度における均一度合と、同均一度合に影響を与える前記内燃機関の運転状態との関係を予め記憶した記憶手段を更に備え、
前記気筒別噴射量補正手段は、
前記内燃機関の運転状態と前記記憶手段とに基づいて取得される前記均一度合が所定の良好な状態となる場合においてのみ前記一部の気筒に対する前記燃料噴射量を補正するために使用する前記全気筒稼動時フィードバック補正量、及び一部気筒休止時フィードバック補正量を取得するように構成された内燃機関の空燃比制御装置。
【請求項６】
請求項１乃至請求項４の何れか一項に記載の内燃機関の空燃比制御装置であって、
稼動している気筒から排出された排ガスの各状態が前記空燃比センサの出力に反映される程度における均一度合と、同均一度合に影響を与える前記内燃機関の運転状態との関係を予め記憶した記憶手段を更に備え、
前記気筒別噴射量補正手段は、
前記一部の気筒に対する前記燃料噴射量を補正するために使用する前記全気筒稼動時フィードバック補正量、及び一部気筒休止時フィードバック補正量を取得した時点において前記内燃機関の運転状態と前記記憶手段とに基づいて取得される前記均一度合に応じて、同一部の気筒に対する前記燃料噴射量を補正する程度を変更するように構成された内燃機関の空燃比制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の気筒を有する内燃機関の排気通路に配設された空燃比センサの出力に基づいて各気筒に供給される混合気の空燃比をフィードバック制御する内燃機関の空燃比制御装置に関する。
【背景技術】
【０００２】
従来より、複数の気筒を有する内燃機関の気筒毎に燃料を噴射するインジェクタを個別に配設するとともに、複数の気筒からそれぞれ排出された排ガスが集合せしめられて成る排ガスが通過する内燃機関の排気通路（以下、「排気通路の集合部」と云うこともある。）に空燃比センサを配設し、空燃比センサの出力値が所定の目標値になるように同出力値に基づいて算出したフィードバック補正量に基づいて調整された燃料噴射量の燃料を各気筒に対して噴射することで同各気筒に供給される混合気の空燃比をフィードバック制御する空燃比制御装置が広く知られている。
【０００３】
しかしながら、この空燃比センサは、排気通路の集合部を通過するガスの空燃比を検出するから、その出力は各気筒から排出された排ガスの平均的な空燃比を表す値となる。従って、上記装置においては、前記平均的な空燃比が前記所定の目標値相当の目標空燃比になるようにフィードバック制御される。
【０００４】
一方、気筒毎に配設された各インジェクタには特有の固体誤差がそれぞれ不可避的に存在するから、同一の燃料噴射量の燃料の噴射指示に対する実際の燃料噴射量はインジェクタ毎に異なる（以下、インジェクタに対して噴射指示された燃料噴射量と同インジェクタから実際に噴射される実燃料噴射量との差を「インジェクタの誤差」と称呼する。）。従って、前記平均的な空燃比が前記目標空燃比（例えば、理論空燃比）になるように制御されている定常運転状態においても、インジェクタ毎の誤差の相違により、気筒から排出された排ガスの空燃比（従って、気筒に供給される混合気の空燃比）が理論空燃比よりリッチ、或いはリーンとなる気筒が実際には存在し得る。
【０００５】
このように、気筒間における空燃比のばらつきが発生すると種々の問題が発生する。即ち、例えば、機関の出力（トルク）変動が大きくなってドライバビリティが低下する。また、理論空燃比よりもリッチな空燃比の排ガス中には未燃ＨＣ，ＣＯが多量に存在し、理論空燃比よりもリーンな空燃比の排ガス中には窒素酸化物（ＮＯｘ）が多量に存在し得るから、特に、前記空燃比センサの下流に配設された触媒が十分な活性化状態に達する前の暖気運転中においてエミッションの排出量が増大する。更には、排ガス中に未燃ＨＣ，ＣＯが多量に存在することそれ自体が燃費悪化の原因にも繋がる。
【０００６】
以上のことから、気筒間における空燃比のばらつきを防止（抑制）する必要がある。このため、下記特許文献１に開示された内燃機関の空燃比制御装置は、各気筒の排気タイミングを判別し、空燃比センサの出力と各気筒の排気タイミングとに基づいて気筒毎に気筒別空燃比を検出する。そして、この装置は、気筒毎に、前記検出された気筒別空燃比と目標値との差に基づいて気筒別補正量を算出し同気筒別補正量により補正された量の燃料を噴射することで、気筒間における空燃比のばらつきを抑制するようになっている。
【特許文献１】特開平９−２０３３３７号公報
【０００７】
しかしながら、空燃比センサには応答遅れが不可避的に存在する。また、前記各気筒の排気タイミングの時間間隔は、機関の気筒数の増加、或いは機関の回転速度の増加に応じて短くなる。従って、前記各気筒の排気タイミングの時間間隔に対する空燃比センサの応答遅れが無視できなくなる場合があり、この場合、同センサの出力は、各気筒の排気タイミングの到来に応じて対応する気筒から排出される排ガスの空燃比を精度良く表す値とはなり得なくなる。この結果、気筒間における空燃比のばらつきを確実に抑制し得ないという問題があった。
【発明の開示】
【０００８】
従って、本発明の目的は、複数の気筒を有する内燃機関の排気通路の集合部に配設された空燃比センサの出力に基づいて各気筒に供給される混合気の空燃比をフィードバック制御する内燃機関の空燃比制御装置において、気筒間における空燃比のばらつきを確実に抑制し得るものを提供することにある。
【０００９】
本発明の特徴は、複数の気筒を有する内燃機関の気筒毎に配設され、気筒毎に燃料を噴射する燃料噴射手段と、前記複数の気筒からそれぞれ排出された排ガスが集合せしめられて成る排ガスが通過する前記内燃機関の排気通路に配設された空燃比センサと、前記空燃比センサの出力値が所定の目標値になるように同出力値に基づいてフィードバック補正量を算出し、同フィードバック補正量に基づいて調整された燃料噴射量の燃料を前記各気筒に対して前記燃料噴射手段により噴射せしめることで同各気筒に供給される混合気の空燃比をフィードバック制御するフィードバック制御手段とを備えた内燃機関の空燃比制御装置が、前記内燃機関の運転状態に応じて前記複数の気筒の状態を、全ての気筒が稼動する全気筒稼動状態と、同複数の気筒の一部である一つ又は複数の気筒（以下、「休止気筒」と云うこともある。）が休止する一部気筒休止状態との何れか一方に切換える気筒状態切換手段と、前記全気筒稼動状態において前記フィードバック制御手段により算出される全気筒稼動時フィードバック補正量と、前記一部気筒休止状態において同フィードバック制御手段により算出される一部気筒休止時フィードバック補正量とに基づいて、同一部気筒休止状態において休止していた前記一部の気筒に対する前記燃料噴射量を補正する気筒別噴射量補正手段と、を備えたことにある。
【００１０】
ここにおいて、前記気筒状態切換手段は、一部気筒休止状態において、例えば、気筒毎に個別に任意の気筒を休止できるように構成されていても、常に特定の単数又は複数の気筒を休止するように構成されていてもよい。また、前記気筒状態切換手段は、休止される可能性のある気筒の吸気弁、及び排気弁の少なくとも一つの運動を停止可能な弁駆動手段（例えば、ソレノイド等）を備えていて、前記弁駆動手段を制御することにより前記少なくとも一つの弁の運動を停止することで前記気筒を休止させるように構成されていることが好適である。また、前記所定の目標値は理論空燃比に相当する値であることが好ましい。
【００１１】
先に述べたように、この空燃比センサの出力は、稼動している全ての気筒からそれぞれ排出された排ガスの平均的な空燃比を表す値となる。従って、この装置においては、稼動している全ての気筒からそれぞれ排出された排ガスの平均的な空燃比が前記所定の目標値相当の目標空燃比になるように空燃比センサの出力に基づいてフィードバック補正量が算出される。
【００１２】
従って、全気筒稼動状態において前記平均的な空燃比が目標空燃比に一致している場合に算出される全気筒稼動時フィードバック補正量は、機関の全ての気筒についてのインジェクタの誤差の平均値を表す値となる。また、一部気筒休止状態において前記平均的な空燃比が目標空燃比に一致している場合に算出される一部気筒休止時フィードバック補正量は、前記一部の気筒（休止気筒）を除いた残りの気筒についてのインジェクタの誤差の平均値を表す値となる。
【００１３】
以上のことから、前記全気筒稼動時フィードバック補正量と、前記一部気筒休止時フィードバック補正量との２つの値に基づいて、休止気筒についてのインジェクタの誤差（休止気筒が複数の気筒である場合には同休止気筒についてのインジェクタの誤差の平均値）を求めることができる。
【００１４】
以上の知見に基づき、上記のように、前記全気筒稼動時フィードバック補正量と、前記一部気筒休止時フィードバック補正量とに基づいて、（前記一部の気筒が再稼動している場合における）前記一部の気筒に対する燃料噴射量を補正するように構成すれば、同一部の気筒に対する燃料噴射量を同一部の気筒についてのインジェクタの誤差分（若しくは、インジェクタの誤差分の平均値）だけ補正することができ、この結果、少なくとも同一部の気筒についてのインジェクタの誤差の影響を排除することができる。
【００１５】
即ち、本発明に係る空燃比制御装置によれば、少なくとも一部気筒休止状態において休止状態となったことがある気筒についてのインジェクタの誤差の影響を排除することができ、この結果、気筒間における空燃比のばらつきを確実に抑制することができる。
【００１６】
より具体的には、前記フィードバック制御手段は、前記各気筒に供給される混合気の空燃比を前記所定の目標値に相当する目標空燃比とするために必要な基本燃料噴射量を同内燃機関の運転状態に応じて決定するとともに同基本燃料噴射量を前記フィードバック補正量に基づいて調整することで得られる前記燃料噴射量の燃料を前記各気筒に対して前記燃料噴射手段により噴射せしめるように構成され、前記気筒別噴射量補正手段は、前記全気筒稼動時フィードバック補正量と、前記一部気筒休止時フィードバック補正量とに基づいて前記一部気筒休止状態において休止していた前記一部の気筒についての前記基本燃料噴射量を補正することで同一部の気筒に対する前記燃料噴射量を補正するように構成されることが好適である。
【００１７】
これによれば、少なくとも一部気筒休止状態において休止状態となったことがある気筒についての前記基本燃料噴射量（若しくは、基本燃料噴射量の平均値）が、同気筒に供給される混合気の空燃比を正確に前記目標空燃比とするために必要な値に確実に補正され、これにより、前記休止状態となったことがある気筒についてのインジェクタの誤差の影響を排除することができる。
【００１８】
前記気筒状態切換手段は、前記一部気筒休止状態において、前記一部の気筒としての任意の一つの気筒を休止させるとともに、全ての気筒の各々を同任意の一つの気筒として休止させていくように構成されることが好適である。
【００１９】
これによれば、内燃機関が有する全ての気筒を個別に一気筒ずつ順次休止させていくことができるから、同全ての気筒についてのインジェクタの誤差の影響を排除することができ、この結果、気筒間における空燃比のばらつきを確実に防止する（消滅させる）ことができる。
【００２０】
また、上記何れかの空燃比制御装置においては、前記気筒別噴射量補正手段は、前記内燃機関が所定の定常運転状態にある所定時間内における前記全気筒稼動時フィードバック補正量の時間的平均値、及び前記一部気筒休止時フィードバック補正量の時間的平均値をそれぞれ、前記全気筒稼動時フィードバック補正量、及び前記一部気筒休止時フィードバック補正量として使用するように構成されることが好適である。
【００２１】
これによれば、前記平均的な空燃比が目標空燃比により一層正確に一致している状態における全気筒稼動時フィードバック補正量の値と一部気筒休止時フィードバック補正量の値が取得され得る。従って、全気筒稼動時フィードバック補正量の値と一部気筒休止時フィードバック補正量の値が共に、稼動している気筒についてのインジェクタの誤差の平均値をより一層精度良く表す値となり得る。この結果、前記一部の気筒に対する前記燃料噴射量をより一層精度良く補正することができ、同一部の気筒についてのインジェクタの誤差の影響をより一層正確に排除することができる。
【００２２】
また、上記何れかの空燃比制御装置においては、稼動している気筒から排出された排ガスの各状態が前記空燃比センサの出力に反映される程度における均一度合と、同均一度合に影響を与える前記内燃機関の運転状態との関係を予め記憶した記憶手段を更に備え、前記気筒別噴射量補正手段は、前記内燃機関の運転状態と前記記憶手段とに基づいて取得される前記均一度合が所定の良好な状態となる場合においてのみ前記一部の気筒に対する前記燃料噴射量を補正するために使用する前記全気筒稼動時フィードバック補正量、及び一部気筒休止時フィードバック補正量を取得するように構成されることが好適である。
【００２３】
一般に、内燃機関の運転状態（例えば、エンジン回転速度、筒内吸入空気量等）によって、排ガスの流れの状態が変化することで同排ガスが排気通路の集合部に配設された空燃比センサ（の検出部）に当たる際の状態（以下、「ガス当たり状態」と称呼する。）も変化する。ガス当たり状態が変化すると、稼動している気筒から排出された排ガスの各状態が空燃比センサの出力に反映される程度における均一度合が変化することにも繋がる。
【００２４】
一方、前記均一度合が低く（悪く）なる（即ち、ガス当たり状態が悪くなる）と、空燃比センサの出力が、稼動している全ての気筒からそれぞれ排出された排ガスの平均的な空燃比を精度良く表す値となり得なくなるから、前記一部の気筒に対する前記燃料噴射量を正確に補正することができなくなる。以上のことから、上記のように、前記均一度合が所定の良好な状態となる場合においてのみ前記全気筒稼動時フィードバック補正量、及び一部気筒休止時フィードバック補正量を取得するように構成すれば、不適切な値に同燃料噴射量が補正されることを確実に防止することができる。
【００２５】
また、前記気筒別噴射量補正手段は、前記全気筒稼動時フィードバック補正量、及び一部気筒休止時フィードバック補正量を取得した時点において前記内燃機関の運転状態と前記記憶手段とに基づいて取得される前記均一度合に応じて、前記一部の気筒に対する前記燃料噴射量を補正する程度を変更するように構成されてもよい。これによれば、例えば、前記均一度合が悪化するにつれて同燃料噴射量を補正する程度を小さくすることができ、この結果、同燃料噴射量の補正の機会を減らすことなく、過度に不適切な値に同燃料噴射量が補正されることを防止することができる。
【発明を実施するための最良の形態】
【００２６】
以下、本発明による内燃機関の空燃比制御装置の実施形態について図面を参照しつつ説明する。図１は、本発明の実施形態による空燃比制御装置を火花点火式多気筒（４気筒）内燃機関１０に適用したシステムの概略構成を示している。この内燃機関１０は、シリンダブロック、シリンダブロックロワーケース、及びオイルパン等を含むシリンダブロック部２０と、シリンダブロック部２０の上に固定されるシリンダヘッド部３０と、シリンダブロック部２０にガソリン混合気を供給するための吸気系統４０と、シリンダブロック部２０からの排ガスを外部に放出するための排気系統５０とを含んでいる。なお、図１は、４気筒（#1気筒〜#4気筒）のうちの任意の一つの気筒に関する構成のみを示しているが、他の３つの気筒に関する構成についても同様である。
【００２７】
シリンダブロック部２０は、シリンダ２１、ピストン２２、コンロッド２３、及びクランク軸２４を含んでいる。ピストン２２はシリンダ２１内を往復動し、ピストン２２の往復動がコンロッド２３を介してクランク軸２４に伝達され、これにより同クランク軸２４が回転するようになっている。シリンダ２１とピストン２２のヘッドは、シリンダヘッド部３０とともに燃焼室２５を形成している。
【００２８】
シリンダヘッド部３０は、燃焼室２５に連通した吸気ポート３１、吸気ポート３１を開閉する吸気弁３２、吸気弁３２を駆動する吸気弁駆動装置３３、燃焼室２５に連通した排気ポート３４、排気ポート３４を開閉する排気弁３５、排気弁３５を駆動する排気弁駆動装置３６、点火プラグ３７、点火プラグ３７に与える高電圧を発生するイグニッションコイルを含むイグナイタ３８、及び燃料を吸気ポート３１内に噴射するインジェクタ（燃料噴射手段）３９を備えている。イグナイタ３８、及びインジェクタ３９はそれぞれ、後述する電気制御装置７０からの指示により駆動されるようになっている。
【００２９】
吸気弁駆動装置３３（排気弁駆動装置３６についても同様である。）は、気筒毎に、吸気弁３２（排気弁３５）を中立位置に付勢する図示しない２つのスプリングと、同吸気弁３２（排気弁３５）を開弁方向又は閉弁方向に付勢する電磁力をそれぞれ発生する図示しない２つの電磁石とを備えていて、後述する電気制御装置７０からの指示により同２つの電磁石への通電を制御することで吸気弁３２（排気弁３５）のリフト量を制御できるようになっている。
【００３０】
また、吸気弁駆動装置３３（排気弁駆動装置３６についても同様である。）は、機関１０の運転状態に応じた電気制御装置７０からの指示に応じて、４つの気筒についての吸気弁３２（排気弁３５）の全てに対してクランク軸２４の回転に応じた所定のリフト量制御を実行する全気筒稼動状態と、４つの気筒のうち電気制御装置７０からの指示により指定された一つの気筒（休止気筒）についての吸気弁３２（排気弁３５）のみを閉弁状態に維持するとともに他の３つの気筒についての吸気弁３２（排気弁３５）に対しては前記所定のリフト量制御と同一の制御を実行する一部気筒休止状態と、の何れか一方の状態に制御されるようになっている。
【００３１】
即ち、一部気筒休止状態において、前記休止気筒についての吸気弁３２、及び排気弁３５は共に閉弁状態に維持されるようになっている。また、電気制御装置７０からの指示により、この休止気筒についてのイグナイタ３８、及びインジェクタ３９は非駆動状態に維持されるようになっている。このように、機関１０の運転状態に応じて４つの気筒の状態を、全ての気筒が稼動する全気筒稼動状態と、前記指定された一つの気筒（一部の気筒）のみが休止する一部気筒休止状態との何れか一方に切換える手段が気筒状態切換手段に相当する。
【００３２】
吸気系統４０は、吸気ポート３１に連通し同吸気ポート３１とともに吸気通路を形成するインテークマニホールドを含む吸気管４１、吸気管４１の端部に設けられたエアフィルタ４２、吸気管４１内にあって吸気通路の開口断面積を可変とするスロットル弁４３、スロットル弁駆動手段を構成するＤＣモータからなるスロットル弁アクチュエータ４３ａ、スワールコントロールバルブ（以下、「ＳＣＶ」と称呼する。）４４、及びＤＣモータからなるＳＣＶアクチュエータ４４ａを備えている。
【００３３】
排気系統５０は、排気ポート３４に連通したエキゾーストマニホールド５１、エキゾーストマニホールド５１（実際には、各排気ポート３４に連通した各々のエキゾーストマニホールド５１が集合した集合部）に接続されたエキゾーストパイプ（排気管）５２、エキゾーストパイプ５２に配設（介装）された上流側の三元触媒５３（上流側触媒コンバータ、又はスタート・キャタリティック・コンバータとも云うが、以下「第１触媒５３」と称呼する。）、及びこの第１触媒５３の下流のエキゾーストパイプ５２に配設（介装）された下流側の三元触媒５４（車両のフロア下方に配設されるため、アンダ・フロア・キャタリティック・コンバータとも云うが、以下「第２触媒５４」と称呼する。）を備えている。排気ポート３４、エキゾーストマニホールド５１、及びエキゾーストパイプ５２は、排気通路を構成している。
【００３４】
一方、このシステムは、熱線式エアフローメータ６１、スロットルポジションセンサ６２、カムポジションセンサ６３、クランクポジションセンサ６４、水温センサ６５、第１触媒５３の上流の排気通路（本例では、上記各々のエキゾーストマニホールド５１が集合した集合部）に配設された空燃比センサ６６（以下、「上流側空燃比センサ６６」と称呼する。）、第１触媒５３の下流であって第２触媒５４の上流の排気通路に配設された空燃比センサ６７（以下、「下流側空燃比センサ６７」と称呼する。）、及びアクセル開度センサ６８を備えている。
【００３５】
熱線式エアフローメータ６１は、吸気管４１内を流れる吸入空気の単位時間あたりの質量流量に応じた電圧Vgを出力するようになっている。かかるエアフローメータ６１の出力Vgと、計測された吸入空気量（流量）Ｇａとの関係は、図２に示したとおりである。スロットルポジションセンサ６２は、スロットル弁４３の開度を検出し、スロットル弁開度TAを表す信号を出力するようになっている。クランクポジションセンサ６４は、クランク軸２４が１０°回転する毎に幅狭のパルスを有するとともに同クランク軸２４が３６０°回転する毎に幅広のパルスを有する信号を出力するようになっている。この信号は、エンジン回転速度NEを表す。水温センサ６５は、内燃機関１０の冷却水の温度を検出し、冷却水温THWを表す信号を出力するようになっている。
【００３６】
上流側空燃比センサ６６は、限界電流式の酸素濃度センサであり、図３に示したように、空燃比Ａ／Ｆに応じた電流を出力し、この電流に応じた電圧である出力値vabyfsを出力するようになっていて、特に、空燃比が理論空燃比であるときには出力値vabyfsは上流側目標値vstoichになる。図３から明らかなように、上流側空燃比センサ６６によれば、広範囲にわたる空燃比Ａ／Ｆを精度良く検出することができる。
【００３７】
電気制御装置７０は、互いにバスで接続されたＣＰＵ７１、ＣＰＵ７１が実行するルーチン（プログラム）、テーブル（ルックアップテーブル、マップ）、及び定数等を予め記憶したＲＯＭ７２、ＣＰＵ７１が必要に応じてデータを一時的に格納するＲＡＭ７３、電源が投入された状態でデータを格納するとともに同格納したデータを電源が遮断されている間も保持するバックアップＲＡＭ７４、並びにＡＤコンバータを含むインターフェース７５等からなるマイクロコンピュータである。インターフェース７５は、前記センサ６１〜６８と接続され、ＣＰＵ７１にセンサ６１〜６８からの信号を供給するとともに、同ＣＰＵ７１の指示に応じて吸気弁駆動装置３３、排気弁駆動装置３６、イグナイタ３８、インジェクタ３９、スロットル弁アクチュエータ４３ａ、及びＳＣＶアクチュエータ４４ａに駆動信号を送出するようになっている。
【００３８】
（空燃比フィードバック制御の概要）
次に、上記のように構成された空燃比制御装置（以下、「本装置」と云うこともある。）が行う機関の空燃比フィードバック制御の概要について説明する。この空燃比制御装置は、機能ブロック図である図４に示したように、Ａ１〜Ａ１２の各手段等を含んで構成されている。以下、図４を参照しながら各手段等について説明していく。
【００３９】
<補正前基本燃料噴射量の算出>
先ず、筒内吸入空気量算出手段Ａ１は、エアフローメータ６１が計測している吸入空気流量Ｇａと、クランクポジションセンサ６４の出力に基づいて得られるエンジン回転速度NEと、ＲＯＭ７２が記憶しているテーブルMAPMcとに基づき今回の吸気行程を迎える稼動中の気筒（以下、「燃料噴射気筒」と云うこともある。）の吸入空気量である筒内吸入空気量Mc(k)を求める。ここで、添え字の（k）は、今回の吸気行程に対する値であることを示している（以下、他の物理量についても同様。）。筒内吸入空気量Mcは、各気筒の吸気行程に対応されながらＲＡＭ７３に記憶されていく。
【００４０】
上流側目標空燃比設定手段Ａ２は、内燃機関１０の運転状態であるエンジン回転速度NE、及びスロットル弁開度TA等に基づいて所定の目標値に相当する上流側目標空燃比abyfr(k)を決定する。この上流側目標空燃比abyfr(k)は、例えば、内燃機関１０の暖機運転中、スロットル弁開度TAが所定値以上である急加速運転中等の特殊な場合を除き理論空燃比に設定されている。また、上流側目標空燃比abyfrは、各気筒の吸気行程に対応されながらＲＡＭ７３に記憶されていく。
【００４１】
補正前基本燃料噴射量算出手段Ａ３は、筒内吸入空気量算出手段Ａ１により求められた筒内吸入空気量Mc(k)を上流側目標空燃比設定手段Ａ２により設定された上流側目標空燃比abyfr(k)で除することにより、燃料噴射気筒に供給される混合気の空燃比を同上流側目標空燃比abyfr(k)とするための今回の吸気行程に対する補正前基本燃料噴射量Fbasebを求める。
【００４２】
このように、本装置は、筒内吸入空気量算出手段Ａ１、上流側目標空燃比設定手段Ａ２、及び補正前基本燃料噴射量算出手段Ａ３を利用して、今回の吸気行程に対する補正前基本燃料噴射量Fbasebを機関１０の運転状態（具体的には、エンジン回転速度NE、筒内吸入空気量Mc、及び上流側目標空燃比abyfr）に基づいて求める。
【００４３】
<最終燃料噴射量の算出>
補正後基本燃料噴射量算出手段Ａ４は、補正前基本燃料噴射量算出手段Ａ３により求められた補正前基本燃料噴射量Fbasebに、後述する燃料噴射気筒についての基本燃料噴射量補正係数α#injを乗じることで、下記(1)式に基づいて燃料噴射気筒についての補正後基本燃料噴射（指示）量Fbase#injを求める。ここで、燃料噴射気筒についての基本燃料噴射量補正係数α#injは、後述する基本燃料噴射量補正係数取得手段Ａ１２により算出される#1気筒〜#4気筒の各々についての基本燃料噴射量補正係数α#1〜α#4のうちから選択される燃料噴射気筒についての値である。本明細書において、添え字の「#inj」は燃料噴射気筒についての値であることを示す。また、添え字の「#n」は、#1気筒〜#4気筒のうちの#n気筒（n：１〜４の何れかの自然数）についての値であることを示す。なお、後述するように、上記基本燃料噴射量補正係数α#1〜α#4の全てが算出されていない段階では、補正後基本燃料噴射量算出手段Ａ４は、補正前基本燃料噴射量Fbasebの値そのものを燃料噴射気筒についての補正後基本燃料噴射（指示）量Fbase#injとして求める。
【００４４】
Fbase#inj＝Fbaseb・α#inj  ・・・(1)
【００４５】
最終燃料噴射量算出手段Ａ５は、前記燃料噴射気筒についての補正後基本燃料噴射量Fbase#injに後述するフィードバック補正量DFiを乗じることで、下記(2)式に基づいて燃料噴射気筒についての最終燃料噴射量Fi#injを求める。本装置は、このようにして、補正後基本燃料噴射量算出手段Ａ４、及び最終燃料噴射量算出手段Ａ５により燃料噴射気筒についての補正後基本燃料噴射量Fbase#injをフィードバック補正量DFiに基づいて補正（調整）することにより燃料噴射気筒についての最終燃料噴射量Fi#injを求め、同最終燃料噴射量Fi#injの燃料を燃料噴射気筒についてのインジェクタ３９により同燃料噴射気筒に対して噴射する。このようにして、燃料噴射気筒に供給される混合気の空燃比をフィードバック補正量DFiに基づいてフィードバック制御する手段がフィードバック制御手段に相当する。
【００４６】
Fi#inj＝Fbase#inj・DFi  ・・・(2)
【００４７】
<フィードバック補正量の算出>
先ず、テーブル変換手段Ａ６は、上流側空燃比センサ６６の出力値vabyfsと、先に説明した図３に示した上流側空燃比センサ出力値vabyfsと空燃比Ａ／Ｆとの関係を規定したテーブルとに基づいて、上流側空燃比センサ６６が検出する現時点における検出空燃比abyfsを求める。
【００４８】
筒内吸入空気量遅延手段Ａ７は、筒内吸入空気量算出手段Ａ１により吸気行程毎に求められＲＡＭ７３に記憶されている筒内吸入空気量Mcのうち、現時点からＮストローク（Ｎ回の吸気行程）前に吸気行程を迎えた気筒の筒内吸入空気量McをＲＡＭ７３から読み出し、これを筒内吸入空気量Mc(k−N)として設定する。
【００４９】
筒内燃料供給量算出手段Ａ８は、筒内吸入空気量遅延手段Ａ７により求められた現時点からＮストローク前の筒内吸入空気量Mc(k−N)をテーブル変換手段Ａ６により求められた現時点における検出空燃比abyfsで除することで、現時点からＮストローク前の実際の筒内燃料供給量Fc(k−N)を求める。ここで、前記値Ｎは、内燃機関１０の排気量、及び燃料室２５から上流側空燃比センサ６６までの距離等により異なる値である。
【００５０】
このように、現時点からＮストローク前の実際の筒内燃料供給量Fc(k−N)を求めるために、現時点からＮストローク前の筒内吸入吸気量Mc(k−N)を現時点における検出空燃比abyfsで除するのは、燃焼室２５内で燃料された混合気が上流側空燃比センサ６６に到達するまでには、Ｎストロークに相当する時間Ｌを要しているからである。
【００５１】
目標筒内燃料供給量遅延手段Ａ９は、筒内吸入空気量算出手段Ａ１、及び上流側目標空燃比設定手段Ａ２により吸気行程毎に求められＲＡＭ７３にそれぞれ記憶されている筒内吸入空気量Mc、及び上流側目標空燃比abyfrのうち、現時点からＮストローク前の筒内吸入空気量Mc(k−N)、及び現時点からＮストローク前の上流側目標空燃比abyfr(k−N)をＲＡＭ７３からそれぞれ読み出し、現時点からＮストローク前の筒内吸入空気量Mc(k−N)を現時点からＮストローク前の上流側目標空燃比abyfr(k−N)で除した値を現時点からNストローク前の目標筒内燃料供給量Fcr(k−N)として設定する。
【００５２】
筒内燃料供給量偏差算出手段Ａ１０は、下記(3)式に基づいて、目標筒内燃料供給量遅延手段Ａ９により設定された現時点からＮストローク前の目標筒内燃料供給量Fcr(k−N)から筒内燃料供給量算出手段Ａ８により求められた現時点からＮストローク前の実際の筒内燃料供給量Fc(k−N)を減じることにより、前述した筒内燃料供給量偏差DFcを求める。この筒内燃料供給量偏差DFcは、Ｎストローク前の時点で筒内に供給された燃料の過不足分を表す量であって、上流側空燃比センサ６６の出力値vabyfsと前記所定の目標値（上流側目標空燃比abyfrが理論空燃比のときは図３に示すvstoich）との偏差に基づく値である。
【００５３】
DFc＝Fcr(k−N)-Fc(k−N)  ・・・(3)
【００５４】
ＰＩコントローラＡ１１は、前記筒内燃料供給量偏差DFcを比例・積分処理（ＰＩ処理）することで、下記(4)式に基づいてフィードバック補正量DFi（＞０）を求める。下記(4)式において、Gpは予め設定された比例ゲイン（比例定数（正の値））であり、Giは予め設定された積分ゲイン（比例定数（正の値））である。このフィードバック補正量DFiは、先に述べたように最終燃料噴射量算出手段Ａ５により最終燃料噴射量Fiを求める際に使用される。
【００５５】
DFi＝１＋(Gp・DFc＋Gi・ΣDFc)／Fbaseb  ・・・(4)
【００５６】
このようにして、本装置は、上流側空燃比センサ６６の出力値vabyfsと上流側目標空燃比abyfrに対応する所定の目標値との偏差に基づく値である筒内燃料供給量偏差DFcに基づいてフィードバック補正量DFiを求める。そして、前記燃料噴射気筒についての補正後基本燃料噴射量Fbase#injにフィードバック補正量DFiを乗じることで、同補正後基本燃料噴射量Fbase#injを補正（調整）する。
【００５７】
例えば、機関の空燃比が急変してリーンとなると、テーブル変換手段Ａ６にて求められる検出空燃比abyfsは上流側目標空燃比設定手段Ａ２により設定されている上流側目標空燃比abyfrよりもリーンな値（より大きな値）として求められる。このため、筒内燃料供給量算出手段Ａ８にて求められる実際の筒内燃料供給量Fc(k−N)は目標筒内燃料供給量遅延手段Ａ９にて求められる目標筒内燃料供給量Fcr(k−N)よりも小さい値となり、筒内燃料供給量偏差DFcは大きい正の値として求められる。従って、フィードバック補正量DFiが「１」より大きい値となる。これにより、最終燃料噴射量算出手段Ａ５にて求められる最終燃料噴射量Fi#injは、補正後基本燃料噴射量Fbase#injよりも大きくなって、機関の空燃比がリッチとなるように制御される。
【００５８】
反対に、機関の空燃比が急変してリッチとなると、検出空燃比abyfsは上流側目標空燃比abyfrよりもリッチな値（より小さな値）として求められる。このため、実際の筒内燃料供給量Fc(k−N)は目標筒内燃料供給量Fcr(k−N)よりも大きい値となり、筒内燃料供給量偏差DFcは負の値として求められる。従って、フィードバック補正量DFiが「１」より小さい正の値となる。これにより、最終燃料噴射量Fi#injは、補正後基本燃料噴射量Fbase#injよりも小さくなって、機関の空燃比がリーンとなるように制御される。以上が、空燃比フィードバック制御の概要である。
【００５９】
（基本燃料噴射量の補正）
先に述べたように、上流側空燃比センサ６６は、各々のエキゾーストマニホールド５１が集合した集合部に配設されているから、その出力vabyfsは稼動している各気筒から排出された排ガスの平均的な空燃比を表す値となる。従って、本装置は、実際にはこの平均的な空燃比が前記上流側目標空燃比abyfrになるように前記空燃比フィードバック制御を行うことになる。
【００６０】
一方、４つの気筒に個別に配設された各インジェクタ３９にはそれぞれ異なる誤差が不可避的に存在するから、同一の最終燃料噴射量Fiの燃料の噴射指示に対する実燃料噴射量はインジェクタ３９毎に異なる。従って、定常運転状態において稼動している全ての気筒に対して同一の最終燃料噴射量Fi#injの燃料の噴射指示がなされているものとすると（具体的には、前述の燃料噴射気筒についての補正後基本燃料噴射量Fbase#injではなく前述の補正前基本燃料噴射量Fbasebそのものに前記フィードバック補正量DFiを乗じた値（Fbaseb・DFi）を燃料噴射気筒についての最終燃料噴射量Fi#injとして設定するものとすると）、前記平均的な空燃比が上流側目標空燃比abyfr（例えば、理論空燃比）になるように制御されている定常運転状態においても、インジェクタ３９毎の誤差の相違により、気筒に供給される混合気の空燃比が理論空燃比よりリッチ、或いはリーンとなる気筒が実際には存在し、この結果、気筒間における空燃比のばらつきが発生することになる。
【００６１】
即ち、このような気筒間における空燃比のばらつきは、補正前基本燃料噴射量Fbasebの燃料の噴射指示に対する実燃料噴射量がインジェクタ３９毎の誤差の相違により気筒毎に異なることに基づく。従って、このような気筒間における空燃比のばらつきを消滅させるためには、前記補正前基本燃料噴射量Fbasebの燃料が実際に噴射されるために必要な補正後基本燃料噴射（指示）量Fbaseを気筒毎に求める必要がある（即ち、補正前基本燃料噴射量Fbasebを気筒毎に補正する必要がある）。
【００６２】
そこで、本装置は、補正前基本燃料噴射量算出手段Ａ３による算出される補正前基本燃料噴射量Fbasebを気筒毎に補正するための基本燃料噴射量補正係数α#nを気筒毎に導入する。そして、本装置は、補正前基本燃料噴射量Fbasebに基本燃料噴射量補正係数α#nを乗じた値（Fbaseb・α#n）が#n気筒に補正前基本燃料噴射量Fbasebの燃料が実際に噴射されるために必要な補正後基本燃料噴射（指示）量Fbase#nになるように、同基本燃料噴射量補正係数α#nを後述するように気筒毎に求める。この基本燃料噴射量補正係数α#nの値は、#n気筒についてのインジェクタ３９の誤差分に相当する値である。
【００６３】
以下、基本燃料噴射量補正係数α#nを算出する方法について詳述する。機関１０は、前記補正前基本燃料噴射量Fbasebの値そのものに前記フィードバック補正量DFiを乗じた値（Fbaseb・DFi）を燃料噴射気筒についての最終燃料噴射量Fi#injとして設定した状態で定常運転状態にあって（即ち、全ての気筒に対して同一の最終燃料噴射量Fi#inj（＝Fbaseb・DFi）の燃料の噴射指示がなされていて）、且つ、吸気管４１から吸入された空気は各気筒に均一に分配され筒内吸入空気量Mcの気筒間におけるばらつきはないと仮定する。
【００６４】
先ず、機関１０が全気筒稼動状態にあって定常運転状態になっている場合について考える。この場合、前記ＰＩコントローラＡ１１により算出されているフィードバック補正量DFiを全気筒稼動時フィードバック補正量DFiallと称呼するものとすると、４つの全ての気筒に対してFbaseb・DFiallの量の燃料の噴射指示がなされているから、４つの全ての気筒に対して一回ずつ燃料が噴射された場合における燃料の噴射指示合計量mfrAは下記(5)式にて表される。
【００６５】
mfrA＝４・Fbaseb・DFiall  ・・・(5)
【００６６】
一方、全気筒稼動状態において稼動している#1気筒〜#4気筒についての前記補正後基本燃料噴射（指示）量Fbase#1〜Fbase#4はそれぞれ下記(6)式にて表される。
【００６７】
Fbase#1＝Fbaseb・α#1
Fbase#2＝Fbaseb・α#2
Fbase#3＝Fbaseb・α#3
Fbase#4＝Fbaseb・α#4  ・・・(6)
【００６８】
かかる補正後基本燃料噴射（指示）量Fbase#1〜Fbase#4の各燃料の噴射指示を全気筒稼動状態において#1気筒〜#4気筒についてそれぞれ行ったとすれば、４つの全ての気筒に供給される混合気の空燃比が全て上流側目標空燃比abyfrと等しくなるから、全気筒稼動状態における定常運転状態においてフィードバック補正量DFiの値は「１」になる。従って、この場合、４つの全ての気筒に対して一回ずつ燃料が噴射された場合における燃料の噴射指示合計量mfrBは下記(7)式にて表される。
【００６９】
mfrB＝Fbaseb・(α#1+α#2+α#3+α#4)・DFi＝Fbaseb・(α#1+α#2+α#3+α#4)  ・・・(7)
【００７０】
ここで、上記燃料の噴射指示合計量mfrA、及び上記燃料の噴射指示合計量mfrBは共に、４つの全ての気筒から排出される排ガスの平均的な空燃比（従って、４つの全ての気筒に供給される混合気の平均的な空燃比）が上流側目標空燃比abyfrと等しくなる定常運転状態において取得される値であるから、両者の値は等しくなるはずである。従って、上記(5)、及び上記(7)式を等しいと置いて整理すると、下記(8)式が成立する。下記(8)式から理解できるように、全気筒稼動状態において前記平均的な空燃比が目標空燃比abyfrに一致している場合に算出される全気筒稼動時フィードバック補正量DFiallの値は、４つの全ての気筒についてのインジェクタ３９の誤差の平均値を表す値となる。
【００７１】
DFiall＝(α#1+α#2+α#3+α#4)／４  ・・・(8)
【００７２】
次に、機関１０が一部気筒休止状態（例えば、#1気筒が休止気筒である状態）にあって定常運転状態になっている場合について考える。この場合、前記ＰＩコントローラＡ１１により算出されているフィードバック補正量DFiを一部気筒休止時フィードバック補正量DFi#234と称呼するものとすると、#1気筒以外の他の３つの気筒に対してFbaseb・DFi#234の量の燃料の噴射指示がなされているから、同３つの気筒に対して一回ずつ燃料が噴射された場合における燃料の噴射指示合計量mfrCは下記(9)式にて表される。
【００７３】
mfrC＝３・Fbaseb・DFi#234  ・・・(9)
【００７４】
一方、前記一部気筒休止状態において稼動している気筒である#2気筒〜#4気筒についての前記補正後基本燃料噴射（指示）量Fbase#2〜Fbase#4はそれぞれ上記(6)式と同様、下記(10)式にて表される。
【００７５】
Fbase#2＝Fbaseb・α#2
Fbase#3＝Fbaseb・α#3
Fbase#4＝Fbaseb・α#4  ・・・(10)
【００７６】
かかる補正後基本燃料噴射（指示）量Fbase#2〜Fbase#4の各燃料の噴射指示を前記一部気筒休止状態において稼動している#2気筒〜#4気筒についてそれぞれ行ったとすれば、かかる３つの気筒に供給される混合気の空燃比が全て上流側目標空燃比abyfrと等しくなるから、前記一部気筒休止状態における定常運転状態においてフィードバック補正量DFiの値は「１」になる。従って、この場合、かかる３つの気筒に対して一回ずつ燃料が噴射された場合における燃料の噴射指示合計量mfrDは下記(11)式にて表される。
【００７７】
mfrD＝Fbaseb・(α#2+α#3+α#4)・DFi＝Fbaseb・(α#2+α#3+α#4)  ・・・(11)
【００７８】
ここで、上記燃料の噴射指示合計量mfrC、及び上記燃料の噴射指示合計量mfrDは共に、前記３つの気筒に供給される混合気の平均的な空燃比が上流側目標空燃比abyfrと等しくなる定常運転状態において取得される値であるから、両者の値は等しくなるはずである。従って、上記(9)、及び上記(11)式を等しいと置いて整理すると、下記(12)式が成立する。下記(12)式から理解できるように、この一部気筒休止状態において前記平均的な空燃比が目標空燃比abyfrに一致している場合に算出される一部気筒休止時フィードバック補正量DFi#234の値は、休止気筒を除いた残りの３つの気筒についてのインジェクタ３９の誤差の平均値を表す値となる。
【００７９】
DFi#234＝(α#2+α#3+α#4)／３  ・・・(12)
【００８０】
以上、全気筒稼動状態において成立する上記(8)式と一部気筒休止状態において成立する上記(12)式とから (α#2+α#3+α#4) を消去すれば、下記(13)式が得られる。従って、下記(13)式から理解できるように、前記全気筒稼動時フィードバック補正量DFiallと休止気筒が#1気筒である場合の前記一部気筒休止時フィードバック補正量DFi#234とを取得すれば、休止気筒である#1気筒についてのインジェクタ３９の誤差分に相当する基本燃料噴射量補正係数α#1を求めることができる。
【００８１】
α#1＝４・DFiall−３・DFi#234  ・・・(13)
【００８２】
従って、同様の考え方を用いると、前記全気筒稼動時フィードバック補正量DFiallと、休止気筒が#n気筒（n：２〜４の何れかの自然数）である場合の一部気筒休止時フィードバック補正量DFi#elseとを取得すれば、休止気筒である#n気筒についてのインジェクタ３９の誤差分に相当する基本燃料噴射量補正係数α#nを下記(14)式〜(16)式に従ってそれぞれ求めることができる。なお、本明細書において、添え字の「#else」は休止気筒以外の３つの稼動している気筒についての値であることを示し、例えば、休止気筒が#2気筒である場合には「DFi#else」は「DFi#134」を意味する。以上が、基本燃料噴射量補正係数α#1〜α#4をそれぞれ算出する方法である。
【００８３】
α#2＝４・DFiall−３・DFi#134  ・・・(14)
α#3＝４・DFiall−３・DFi#124  ・・・(15)
α#4＝４・DFiall−３・DFi#123  ・・・(16)
【００８４】
そこで、上記算出方法を採用する本装置は、先ず、補正前基本燃料噴射量算出手段Ａ３による算出される補正前基本燃料噴射量Fbasebの値そのものにＰＩコントローラＡ１１により算出されるフィードバック補正量DFiを乗じた値（Fbaseb・DFi）を燃料噴射気筒についての最終燃料噴射量Fi#injとして設定し、この最終燃料噴射量Fi#injの燃料の噴射指示を燃料噴射気筒のインジェクタ３９に与え続ける。この段階では、気筒間における空燃比のばらつきが発生している。
【００８５】
この状態で、本装置は、機関１０が一部気筒休止状態にある場合における休止気筒を#1気筒から#4気筒まで順次変更していき、対応する一部気筒休止時フィードバック補正量DFi#elseの値と全気筒稼動状態における全気筒稼動時フィードバック補正量DFiallの値とが共に取得された各段階で、上記(13)式〜(16)式に従って順次、基本燃料噴射量補正係数α#1〜α#4を算出する。このようにして、基本燃料噴射量補正係数α#1〜α#4を取得する手段が前記基本燃料噴射量補正係数取得手段Ａ１２に相当する。
【００８６】
そして、基本燃料噴射量補正係数α#1〜α#4の全てが取得されると、これ以降、本装置は、先に図４を参照しながら説明したように、同基本燃料噴射量補正係数α#1〜α#4の値を利用して、上記(1)式に従って前記補正前基本燃料噴射量Fbasebを気筒毎に補正するとともに上記(2)式に従って気筒毎に最終燃料噴射量Fi#injを補正し、この補正した最終燃料噴射量Fi#injの燃料の噴射指示を燃料噴射気筒のインジェクタ３９に与える。この結果、気筒間における空燃比のばらつきが消滅する。このようにして、気筒毎に最終燃料噴射量Fi#injを補正する手段が気筒別噴射量補正手段に相当する。
【００８７】
（十分に安定した定常運転状態でのフィードバック補正量DFiall，DFi#elseの取得）
上記の内容から理解できるように、この方法によって基本燃料噴射量補正係数α#1〜α#4をそれぞれ精度良く算出するためには、前記全気筒稼動時フィードバック補正量DFiall、及び前記一部気筒休止時フィードバック補正量DFi#elseが共に、稼動している気筒についてのインジェクタ３９の誤差の平均値を精度良く表す値となっている必要がある。このためには、前記全気筒稼動時フィードバック補正量DFiall、及び前記一部気筒休止時フィードバック補正量DFi#elseを取得する際、前記平均的な空燃比が正確に上流側目標空燃比abyfrに一致している必要がある。換言すれば、機関１０が十分に安定した定常運転状態にある必要がある。
【００８８】
そこで、本装置は、全気筒稼動状態、或いは、一部気筒休止状態において、機関１０が第１所定時間Ｔ１の間、及びその後の第２所定時間Ｔ２の間に渡り継続して所定の定常運転状態にある場合に、同第１所定時間Ｔ１経過後の同第２所定時間Ｔ２内にてＣＰＵ７１の演算周期毎に取得される多数のフィードバック補正量DFiの時間的平均値DFiaveを計算する。そして、本装置は、全気筒稼動状態において前記計算される時間的平均値DFiaveを全気筒稼動時フィードバック補正量DFiallとして使用するとともに、一部気筒休止状態において計算される同時間的平均値DFiaveを一部気筒休止時フィードバック補正量DFi#elseとして使用する。
【００８９】
（ガス当たり状態の良否に基づくフィードバック補正量DFiall，DFi#elseの取得防止）
また、上記の内容から理解できるように、この方法によって基本燃料噴射量補正係数α#1〜α#4をそれぞれ精度良く算出するためには、上流側空燃比センサ６６の出力vabyfsが、稼動している全ての気筒からそれぞれ排出された排ガスの平均的な空燃比を精度良く表す値となっている必要がある。
【００９０】
一方、先に説明したように、一般に、内燃機関１０のエンジン回転速度NE、筒内吸入空気量Mc等によって、上流側空燃比センサ６６（の検出部）への排ガスの「ガス当たり状態」が変化し、稼動している気筒から排出された排ガスの各状態（空燃比）が同センサ出力vabyfsに反映される程度における均一度合が変化する。前記均一度合が悪くなる（即ち、ガス当たり状態が悪くなる）と、上流側空燃比センサ出力vabyfsが、稼動している全ての気筒からそれぞれ排出された排ガスの平均的な空燃比を精度良く表す値となり得なくなる。
【００９１】
そこで、本装置は、エンジン回転速度NE、及び筒内吸入空気量Mcに相当する吸入空気量相当値KLと、ガス当たり状態との関係を予め実験等により調査した結果に基づく図５に示したマップをＲＯＭ７２に記憶している。そして、本装置は、エンジン回転速度NE、吸入空気量相当値KL、及び同マップに基づいてガス当たり状態の良否を判定し、機関１０の運転状態が図５に示した「ガス当たり状態が良」となる運転状態になっている場合にのみ上記全気筒稼動時フィードバック補正量DFiall、及び上記一部気筒休止時フィードバック補正量DFi#elseを取得する。以上が、基本燃料噴射量補正係数α#1〜α#4に基づく補正前基本燃料噴射量Fbasebの補正（従って、最終燃料噴射量Fi#injの補正）の概要である。
【００９２】
（実際の作動）
次に、上記空燃比制御装置の実際の作動について、電機制御装置７０のＣＰＵ７１が実行するルーチンをフローチャートにより示した図６〜図１１を参照しながら説明する。
【００９３】
ＣＰＵ７１は、図６に示した気筒休止制御を行うルーチンを所定時間の経過毎に繰り返し実行している。従って、所定のタイミングになると、ＣＰＵ７１はステップ６００から処理を開始し、ステップ６０５に進んで、クランクポジションセンサ６４の出力に基づいて取得されるエンジン回転速度NEと、エアフローメータ６１により計測される吸入空気流量Ｇａと、ステップ６０５内に記載したテーブルとに基づいて全気筒稼動フラグＡＬＬの値を「０」、又は「１」のいずれか一方に設定する。ここで、全気筒稼動フラグＡＬＬは、その値が「１」のとき機関１０が全気筒稼動状態にあることを示し、その値が「０」のとき機関１０が一部気筒休止状態にあることを示す。
【００９４】
次に、ＣＰＵ７１はステップ６１０に進み、全気筒稼動フラグＡＬＬの値が「１」であるか否かを判定し、「Ｙｅｓ」と判定する場合には、ステップ６１５に進んで４つの全ての気筒が稼動状態となるように全ての気筒についての吸気弁駆動装置３３、排気弁駆動装置３６、イグナイタ３８、及びインジェクタ３９に所定の駆動指示を付与した後、ステップ６９５に進んで本ルーチンを一旦終了する。
【００９５】
一方、ステップ６１０の判定において「Ｎｏ」と判定する場合には、ＣＰＵ７１はステップ６２０に進んで、#n気筒のみが休止状態（休止気筒）となるように#n気筒についての吸気弁駆動装置３３、及び排気弁駆動装置３６のそれぞれに吸気弁３２、及び排気弁３５が共に閉弁状態に維持されるように駆動指示を付与するとともに、#n気筒についてのイグナイタ３８、及びインジェクタ３９を非駆動状態に維持する。また、ＣＰＵ７１は、#n気筒を除いた他の３つの気筒についての吸気弁駆動装置３３、排気弁駆動装置３６、イグナイタ３８、及びインジェクタ３９には全気筒稼動フラグＡＬＬの値が「１」である場合と同様の前記所定の駆動指示を付与する。
【００９６】
これにより、機関１０の運転状態に応じて、機関１０（吸気弁駆動装置３３、及び排気弁駆動装置３６）が全気筒稼動状態、或いは、#n気筒が休止気筒となる一部気筒休止状態の何れか一方になるように制御される。なお、「n」の値は、後述するルーチンにより設定・変更されるようになっているが、現段階では「１」になっているものとする。また、現段階では機関１０は全気筒稼動状態にあって全気筒稼動フラグＡＬＬの値が「１」になっているものとして説明を続ける。
【００９７】
また、ＣＰＵ７１は、図７にフローチャートにより示した燃料噴射量Fi#injの計算、及び燃料噴射の指示を行うルーチンを、稼動している気筒のクランク角が各吸気上死点前の所定クランク角度（例えば、ＢＴＤＣ９０°ＣＡ）となる毎に、繰り返し実行するようになっている。従って、稼動している任意の気筒のクランク角度が前記所定クランク角度になると、ＣＰＵ７１はステップ７００から処理を開始してステップ７０５に進み、エアフローメータ６１により計測された吸入空気流量Ｇａ、エンジン回転速度NE、及び上記上流側目標空燃比abyfr(k)に基づいて、各気筒に供給される混合気の空燃比を同上流側目標空燃比abyfr(k)とするための補正前基本燃料噴射量Fbasebを求める。
【００９８】
次に、ＣＰＵ７１はステップ７１０に進み、学習完了フラグＦＩＮの値が「１」になっているか否かを判定する。ここで、学習完了フラグＦＩＮは、その値が「１」のとき前記基本燃料噴射量補正係数α#1〜α#4の全てが取得されていることを示し、その値が「０」のとき同基本燃料噴射量補正係数α#1〜α#4の全てが取得されていないことを示す。
【００９９】
いま、学習完了フラグＦＩＮの値が「０」になっているものとして説明を続けると、ＣＰＵ７１はステップ７１０にて「Ｎｏ」と判定してステップ７１５に進んで、前記補正前基本燃料噴射量Fbasebの値そのものを燃料噴射気筒についての補正後基本燃料噴射量Fbase#injとして設定する。
【０１００】
次いで、ＣＰＵ７１はステップ７２０に進み、上記(2)式に従って、前記補正後基本燃料噴射量Fbase#injに後述するフィードバック補正量DFiを乗じた値を燃料噴射気筒についての最終燃料噴射量Fi#injとして設定する。
【０１０１】
次に、ＣＰＵ７１はステップ７２５に進み、最終燃料噴射量Fi#injの燃料を噴射するための指示を燃料噴射気筒についてのインジェクタ３９に対して行う。そして、ＣＰＵ７１はステップ７９５に進み、本ルーチンを一旦終了する。以上により、学習完了フラグＦＩＮの値が「０」である限りにおいて、燃料噴射気筒についての基本燃料噴射量補正係数α#injによる補正がなされない補正前基本燃料噴射量Fbasebがフィードバック補正量DFiによりフィードバック補正された後の最終燃料噴射量Fi#injの燃料の噴射指示が吸気行程を迎える燃料噴射気筒に対してなされる。
【０１０２】
次に、上記フィードバック補正量DFiを算出する際の作動について説明すると、ＣＰＵ７１は図８に示したルーチンを所定時間の経過毎に繰り返し実行している。従って、所定のタイミングになると、ＣＰＵ７１はステップ８００から処理を開始し、ステップ８０５に進んでフィードバック制御条件が成立しているか否かを判定する。このフィードバック制御条件は、例えば、機関の冷却水温THWが第１所定温度以上であって、機関の一回転当りの吸入空気量（負荷、筒内吸入空気量Mc）が所定値以下であり、上流側空燃比センサ６６が正常（活性状態であることを含む。）であるときに成立する。
【０１０３】
いま、フィードバック制御条件が成立しているものとして説明を続けると、ＣＰＵ７１はステップ８０５にて「Ｙｅｓ」と判定してステップ８１０に進み、現時点の上流側空燃比センサ６６の出力値vabyfsを図３に示したテーブルに基づいて変換することにより、現時点における検出空燃比abyfsを求める。
【０１０４】
次に、ＣＰＵ７１はステップ８１５に進み、現時点からＮストローク前に吸気行程を迎えた気筒の吸入空気量である筒内吸入空気量Mc(k−N)を前記求めた検出空燃比abyfsで除することにより、現時点からＮストローク前の実際の筒内燃料供給量Fc(k−N)を求める。次いで、ＣＰＵ７１はステップ８２０に進み、現時点からＮストローク前の筒内吸入空気量Mc(k−N)を現時点からNストローク前の時点における上流側目標空燃比abyfr(k−N)で除することにより、現時点からＮストローク前の目標筒内燃料供給量Fcr(k−N)を求める。
【０１０５】
続いて、ＣＰＵ７１はステップ８２５に進んで、上記(3)式に従って前記現時点からＮストローク前の目標筒内燃料供給量Fcr(k−N)から前記実際の筒内燃料供給量Fc(k−N)を減じた値を筒内燃料供給量偏差DFcとして設定する。つまり、筒内燃料供給量偏差DFcは、Ｎストローク前の時点で筒内に供給された燃料の過不足分を表す量となる。次に、ＣＰＵ７１はステップ８３０に進み、その時点における筒内燃料供給量偏差DFcの積分値SDFcに前記ステップ８２５にて求めた筒内燃料供給量偏差DFcを加えて新たな筒内燃料供給量偏差の積分値SDFcを求め、続くステップ８３５にて上記(4)式に基づくステップ８３５内に示した式に従ってフィードバック補正量DFiを求めた後、ステップ８９５に進んで本ルーチンを一旦終了する。
【０１０６】
このように、フィードバック補正量DFiが求められ、このフィードバック補正量DFiが前述した図７のステップ７２０により最終燃料噴射量Fi#injに反映されるから、Nストローク前の燃料供給量の過不足が補償され、稼動している各気筒に供給される混合気の平均的な空燃比が上流側目標空燃比abyfrに一致せしめられるようにフィードバック制御される。
【０１０７】
一方、ステップ８０５の判定時において、フィードバック制御条件が不成立であると、ＣＰＵ７１は同ステップ８０５にて「Ｎｏ」と判定してステップ８４０に進んでフィードバック補正量DFiの値を「１」に設定し、その後、ステップ８９５に進んで本ルーチンを一旦終了する。このように、フィードバック制御条件が不成立であるときは、フィードバック補正量DFiが「１」に維持されて前記フィードバック制御が実行されない。
【０１０８】
また、ＣＰＵ７１は、全気筒稼動時フィードバック補正量DFiall、及び一部気筒休止時フィードバック制御量DFi#elseの時間的平均値をそれぞれ取得するための図９に示したルーチンを所定時間の経過毎に繰り返し実行している。従って、所定のタイミングになると、ＣＰＵ７１はステップ９００から処理を開始してステップ９０５に進んで、学習完了フラグＦＩＮの値が「０」になっているか否かを判定する。
【０１０９】
現時点では学習完了フラグＦＩＮの値が「０」になっているから、ＣＰＵ７１はステップ９０５にて「Ｙｅｓ」と判定してステップ９１０に進み、全気筒稼動フラグＡＬＬの値が「１」であって、且つ全気筒稼動時学習フラグＬＥＡＲＮallの値が「０」になっているか、或いは、全気筒稼動フラグＡＬＬの値が「０」であって、且つ一部気筒休止時学習フラグＬＥＡＲＮ#nの値が「０」になっているかを判定する。
【０１１０】
ここで、全気筒稼動時学習フラグＬＥＡＲＮallは、その値が「１」のとき全気筒稼動時フィードバック補正量DFiallが取得された状態であることを示し、その値が「０」のとき全気筒稼動時フィードバック補正量DFiallが取得されていない状態であることを示す。また、一部気筒休止時学習フラグＬＥＡＲＮ#nは、その値が「１」のとき休止気筒が#n気筒である場合の一部気筒休止時フィードバック補正量DFi#elseが取得された状態であることを示し、その値が「０」のとき休止気筒が#n気筒である場合の一部気筒休止時フィードバック補正量DFi#elseが取得されていない状態であることを示す。
【０１１１】
いま、全気筒稼動時学習フラグＬＥＡＲＮallの値、及び一部気筒休止時学習フラグＬＥＡＲＮ#nの各値が全て「０」になっているものとして説明を続けると、現段階では全気筒稼動フラグＡＬＬの値が「１」であって、且つ全気筒稼動時学習フラグＬＥＡＲＮallの値が「０」になっている。従って、ＣＰＵ７１はステップ９１０の判定にて「Ｙｅｓ」と判定してステップ９１５に進んで、基本燃料噴射量補正係数の算出条件が成立しているか否かを判定する。ここで、基本燃料噴射量補正係数の算出条件は、機関１０が所定の定常運転状態（例えば、上流側空燃比センサ出力vabyfsの変動幅が所定値以下であって、且つ吸入空気流量Ｇａの変動幅が所定値以下である状態）を前記第１所定時間に渡って既に継続していて、且つ現時点まで引き続いて継続していること、機関１０の運転状態が図５に示した「ガス当たり状態が良」となる運転状態になっていること、及び前記フィードバック制御条件が成立していること、の全てが成立している場合に成立する。
【０１１２】
いま、機関１０が上記所定の定常運転状態を前記第１所定時間に渡って継続しておらず、基本燃料噴射量補正係数の算出条件が成立していないものとすると、ＣＰＵ７１はステップ９１５にて「Ｎｏ」と判定してステップ９２０に進んで、カウンタＭの値を「０」にクリアした後、ステップ９９５に直ちに進んで本ルーチンを一旦終了する。ここで、カウンタMの値は、前記第１所定時間経過後における機関１０の上記所定の定常運転状態の継続時間を表す。以降、ＣＰＵ７１は、上記基本燃料噴射量補正係数の算出条件が成立しない限りにおいて、ステップ９００〜９２０、９９５の処理を繰り返し実行する。
【０１１３】
一方、この状態から、機関１０の上記定常運転状態が前記第１所定時間に渡って継続することで基本燃料噴射量補正係数の算出条件が成立したものとすると、ＣＰＵ７１はステップ９１５に進んだとき「Ｙｅｓ」と判定してステップ９２５に進み、その時点でのカウンタＭの値（現時点では「０」である。）を「１」だけ増大し、続くステップ９３０にて図８のステップ８３０にて算出されている全気筒稼動状態における最新のフィードバック補正量DFiの値をサンプル値DFi(M)（従って、DFi(1)）として格納する。
【０１１４】
次いで、ＣＰＵ７１はステップ９３５に進んで、現時点でのカウンタＭの値が前記第２所定時間に相当するDFi平均値算出用必要サンプル数Mrefに達したか否かを判定する。現段階ではカウンタＭの値は「１」であるから、ＣＰＵ７１はステップ９３５の判定にて「Ｎｏ」と判定してステップ９９５に直ちに進んで本ルーチンを一旦終了する。
【０１１５】
以降、機関１０が上記所定の定常運転状態を維持することによりステップ９２５の繰り返し実行によりカウンタＭの値が前記Mrefに達するまで（従って、前記第２所定時間が経過するまで）の間、ＣＰＵ７１はステップ９００〜９１５、９２５〜９３５、９９５の処理を繰り返し実行してサンプル値DFi(M)の値を順次格納していく。なお、この間において、機関１０が上記定常運転状態を維持しなくなった場合、その時点で基本燃料噴射量補正係数の算出条件が不成立になるから、ＣＰＵ７１はステップ９１５に進んだとき「Ｎｏ」と判定してステップ９２０にてカウンタＭの値を再び「０」にクリアする。
【０１１６】
そして、機関１０が前記第２所定時間に渡って上記所定の定常運転状態を継続すると、カウンタＭの値が前記Mrefに達するから、ＣＰＵ７１はステップ９３５に進んだとき「Ｙｅｓ」と判定してステップ９４０に進み、Mref個のサンプル値DFi(1)〜DFi(Mref)の平均値を平均値DFiaveとして格納する。
【０１１７】
次いで、ＣＰＵ７１はステップ９４５に進み、全気筒稼動フラグＡＬＬの値が「１」であるか否かを判定する。現段階は全気筒稼動状態になっていて全気筒稼動フラグＡＬＬの値が「１」になっているから、ＣＰＵ７１はステップ９４５にて「Ｙｅｓ」と判定してステップ９５０に進んで、前記平均値DFiaveを全気筒稼動時フィードバック補正量DFiallとして格納し、続くステップ９５５にて全気筒稼動時学習フラグＬＥＡＲＮallの値を「１」に設定した後、ステップ９９５に進んで本ルーチンを一旦終了する。
【０１１８】
これにより、全気筒稼動時フィードバック補正量DFiall（の時間的平均値）が取得される。以降、全気筒稼動時学習フラグＬＥＡＲＮallの値が「１」になり、且つ、全気筒稼動フラグＡＬＬの値が「１」のままであるから、ＣＰＵ７１はステップ９１０に進んだとき「Ｎｏ」と判定するようになる。
【０１１９】
次に、この状態から、機関１０の運転状態が変化し、ＣＰＵ７１が図６のステップ６０５に進んだときに全気筒稼動フラグＡＬＬの値を「０」に設定した場合について説明する。この場合、ＣＰＵ７１はステップ６２０に進んで機関１０を休止気筒が#1気筒である一部気筒休止状態に設定する。これにより、全気筒稼動フラグＡＬＬの値が「０」になり、休止気筒が#1気筒である場合の一部気筒休止時学習フラグＬＥＡＲＮ#1の値が「０」のままであるから、ＣＰＵ７１は図９のステップ９１０に進んだとき再び「Ｙｅｓ」と判定して前述したステップ９１５以降の処理を再び行う。
【０１２０】
そして、前記基本燃料噴射量補正係数の算出条件が前記第２所定時間に渡って成立し続けたとき、ＣＰＵ７１は一部気筒休止状態におけるフィードバック補正量DFiについてステップ９３０にて取得したMref個のサンプル値DFi(1)〜DFi(Mref)に基づいてステップ９４０にて一部気筒休止状態における前記平均値DFiaveを取得する。
【０１２１】
次いで、ＣＰＵ７１はステップ９４５にて「Ｎｏ」と判定してステップ９６０に進み、前記平均値DFiaveを一部気筒休止時フィードバック補正量DFi#else（即ち、DFi#234）として格納し、続くステップ９６５にて一部気筒休止時学習フラグＬＥＡＲＮ#1の値を「１」に設定した後、ステップ９９５に進んで本ルーチンを一旦終了する。
【０１２２】
これにより、休止気筒が#1気筒である場合の一部気筒休止時フィードバック補正量DFi#234（の時間的平均値）が取得される。この結果、全気筒稼動時フィードバック補正量DFiall、及び一部気筒休止時フィードバック補正量DFi#234が取得されたことになる。即ち、全気筒稼動時学習フラグＬＥＡＲＮallの値、及び一部気筒休止時学習フラグＬＥＡＲＮ#1の値は共に「１」になっている。以降、一部気筒休止時学習フラグＬＥＡＲＮ#1の値が「１」になり、且つ、全気筒稼動フラグＡＬＬの値が「０」のままであるから、ＣＰＵ７１はステップ９１０に進んだとき「Ｎｏ」と判定するようになる。なお、この時点では、一部気筒休止時学習フラグＬＥＡＲＮ#2〜ＬＥＡＲＮ#4の値は「０」のままである。
【０１２３】
一方、ＣＰＵ７１は、基本燃料噴射量補正係数の算出・更新を行うための図１０に示したルーチンを所定時間の経過毎に繰り返し実行している。従って、所定のタイミングになると、ＣＰＵ７１はステップ１０００から処理を開始してステップ１００５に進んで、学習完了フラグＦＩＮの値が「０」になっているか否かを判定する。
【０１２４】
現時点では学習完了フラグＦＩＮの値が「０」になっているから、ＣＰＵ７１はステップ１００５にて「Ｙｅｓ」と判定してステップ１０１０に進み、全気筒稼動時学習フラグＬＥＡＲＮallの値、及び一部気筒休止時学習フラグＬＥＡＲＮ#nの値（即ち、ＬＥＡＲＮ#1の値）が共に「１」になっているか否かを判定する。
【０１２５】
いま、先の図９のステップ９６５の処理が実行された直後であるものとすると、全気筒稼動時学習フラグＬＥＡＲＮallの値、及び一部気筒休止時学習フラグＬＥＡＲＮ#1の値が共に「１」になっているから、ＣＰＵ７１はステップ１０１０にて「Ｙｅｓ」と判定してステップ１０１５に進み、上記(13)式に相当するステップ１０１５内に記載の式に従って#1気筒についての基本燃料噴射量補正係数α#1の値を算出するとともに、同値をバックアップＲＡＭ７４に格納する。
【０１２６】
次いで、ＣＰＵ７１はステップ１０２０に進み、nの値が「４」以外であるか否かを判定する。現時点ではnの値は「１」であるから、ＣＰＵ７１はステップ１０２０にて「Ｙｅｓ」と判定してステップ１０２５に進み、全気筒稼動時学習フラグＬＥＡＲＮallの値を再び「０」に設定し、続くステップ１０３０にてnの値を「１」だけ増大して「２」とした後、ステップ１０９５に進んで本ルーチンを一旦終了する。このようにして、全気筒稼動時学習フラグＬＥＡＲＮallの値、及び一部気筒休止時学習フラグＬＥＡＲＮ#1の値が共に「１」になった段階で基本燃料噴射量補正係数α#1が算出される。
【０１２７】
以降、全気筒稼動時学習フラグＬＥＡＲＮallの値は「０」になり、また、一部気筒休止時学習フラグＬＥＡＲＮ#nの値（即ち、ＬＥＡＲＮ#2の値）は「０」のままであるから、ＣＰＵ７１はステップ１０１０に進んだとき「Ｎｏ」と判定してステップ１０９５に直ちに進んで本ルーチンを一旦終了するようになる。また、nの値が「２」になったことに伴い、以降、ＣＰＵ７１は図６のステップ６２０にて休止気筒となる気筒を#1気筒から#2気筒に変更する。
【０１２８】
また、これ以降、全気筒稼動時学習フラグＬＥＡＲＮallの値、及び一部気筒休止時学習フラグＬＥＡＲＮ#2の値は共に「０」になっているから、機関１０が全気筒稼動状態（ＡＬＬ＝１）、及び休止気筒が#2気筒となる一部気筒休止状態（ＡＬＬ＝０）の何れにあるかにかかわらず、ＣＰＵ７１は図９のステップ９１０にて「Ｙｅｓ」と判定してステップ９１５以降の処理を再び行う。
【０１２９】
そして、機関１０が全気筒稼動状態にある場合において前記基本燃料噴射量補正係数の算出条件が前記第２所定時間に渡って成立し続けたとき、前述の#1気筒の場合と同様、ステップ９４０にて前記平均値DFiaveを求め、ステップ９５０にて同平均値DFiaveを全気筒稼動時フィードバック補正量DFiallとして再び格納し、ステップ９５５にて全気筒稼動時学習フラグＬＥＡＲＮallの値を「１」に設定する。
【０１３０】
同様に、機関１０が一部気筒休止状態にある場合において前記基本燃料噴射量補正係数の算出条件が前記第２所定時間に渡って成立し続けたとき、前述の#1気筒の場合と同様、ステップ９４０にて前記平均値DFiaveを求め、ステップ９６０にて同平均値DFiaveを一部気筒休止時フィードバック補正量DFi#else（従って、DFi#134）として格納し、ステップ９６５にて一部気筒休止時学習フラグＬＥＡＲＮ#2の値を「１」に設定する。
【０１３１】
これにより、全気筒稼動時学習フラグＬＥＡＲＮallの値、及び一部気筒休止時学習フラグＬＥＡＲＮ#2の値が共に「１」になるから、ＣＰＵ７１は図１０のステップ１０１０にて再び「Ｙｅｓ」と判定し、続くステップ１０１５にて上記(14)式に従って#2気筒についての基本燃料噴射量補正係数α#2の値を算出するとともに、同値をバックアップＲＡＭ７４に格納する。そして、ＣＰＵ７１はステップ１０２０にて「Ｎｏ」と判定した後、ステップ１０２５にて全気筒稼動時学習フラグＬＥＡＲＮallの値を再び「０」に設定し、続くステップ１０３０にてnの値を「３」に更新する。
【０１３２】
このようにして、全気筒稼動時学習フラグＬＥＡＲＮallの値、及び一部気筒休止時学習フラグＬＥＡＲＮ#2の値が共に「１」になった段階で基本燃料噴射量補正係数α#2が算出される。また、nの値が「３」になったことに伴い、以降、ＣＰＵ７１は図６のステップ６２０にて休止気筒となる気筒を#2気筒から#3気筒に変更する。
【０１３３】
以降、同様にして、全気筒稼動時学習フラグＬＥＡＲＮallの値、及び一部気筒休止時学習フラグＬＥＡＲＮ#3の値が共に「１」になった段階で図１０のステップ１０１５にて上記(15)式に従って#3気筒についての基本燃料噴射量補正係数α#3の値が算出され、同値がバックアップＲＡＭ７４に格納される。そして、nの値が「４」となって休止気筒となる気筒が#3気筒から#4気筒に変更された後、全気筒稼動時学習フラグＬＥＡＲＮallの値、及び一部気筒休止時学習フラグＬＥＡＲＮ#4の値が共に「１」になった段階でステップ１０１５にて上記(16)式に従って#4気筒についての基本燃料噴射量補正係数α#4の値が算出され、同値がバックアップＲＡＭ７４に格納される。これにより、基本燃料噴射量補正係数α#1〜α#4の全てが算出・格納されたことになる。
【０１３４】
この段階ではnの値は「４」になっているから、ＣＰＵ７１はステップ１０２０に進んだとき「Ｎｏ」と判定してステップ１０３５に進み、学習完了フラグＦＩＮの値を「０」から「１」に変更する。この結果、ＣＰＵ７１は図１０のステップ１００５、或いは図９のステップ９０５に進んだとき「Ｎｏ」と判定するようになり、基本燃料噴射量補正係数αの算出処理、及び前記平均値DFiaveの取得処理を実行しないようになる。
【０１３５】
また、学習完了フラグＦＩＮの値が「１」になるから、ＣＰＵ７１は図７のステップ７１０に進んだとき「Ｙｅｓ」と判定してステップ７３０に進むようになる。ステップ７３０に進むとＣＰＵ７１は、バックアップＲＡＭ７４に格納されている前記基本燃料噴射量補正係数α#1〜α#4の各値のうちから燃料噴射気筒についての基本燃料噴射量補正係数α#injを選択し、上記(1)式に従ってステップ７０５にて計算した補正前基本燃料噴射量Fbasebの値に同基本燃料噴射量補正係数α#injを乗じた値を燃料噴射気筒についての補正後基本燃料噴射量Fbase#injとして設定するようになる。
【０１３６】
これにより、学習完了フラグＦＩＮの値が「１」である限りにおいて、燃料噴射気筒についての基本燃料噴射量補正係数α#injによる補正がなされた補正前基本燃料噴射量Fbaseb（即ち、補正後基本燃料噴射量Fbase#inj）がフィードバック補正量DFiによりフィードバック補正された後の最終燃料噴射量Fi#injの燃料の噴射指示が吸気行程を迎える燃料噴射気筒に対してなされるようになる。
【０１３７】
また、ＣＰＵ７１は、基本燃料噴射量補正係数の更新判定を行うための図１１に示したルーチンを所定時間の経過毎に繰り返し実行している。従って、所定のタイミングになると、ＣＰＵ７１はステップ１１００から処理を開始してステップ１１０５に進んで、学習完了フラグＦＩＮの値が「１」になっているか否かを判定し、「Ｎｏ」と判定するときはステップ１１９５に直ちに進んで本ルーチンを一旦終了する。
【０１３８】
いま、先の図１０のステップ１０３５の処理が実行された直後であるものとすると、学習完了フラグＦＩＮの値が「１」になっているから、ＣＰＵ７１はステップ１１０５にて「Ｙｅｓ」と判定してステップ１１１０に進み、基本燃料噴射量補正係数の更新条件が成立しているか否かを判定する。ここで、基本燃料噴射量補正係数の更新条件は、例えば、前回、基本燃料噴射量補正係数α#1〜α#4の全てが算出・格納された時点（即ち、学習完了フラグＦＩＮの値が「０」から「１」に変更された時点）から所定の更新基準時間が経過しているときに成立する。
【０１３９】
現時点は学習完了フラグＦＩＮの値が「０」から「１」に変更された直後であるから基本燃料噴射量補正係数の更新条件は成立していない。従って、ＣＰＵ７１はステップ１１１０にて「Ｎｏ」と判定してステップ１１９５に直ちに進んで本ルーチンを一旦終了する。
【０１４０】
そして、前記更新基準時間が経過すると、前記基本燃料噴射量補正係数の更新条件が成立するから、ＣＰＵ７１はステップ１１１０にて「Ｙｅｓ」と判定してステップ１１１５に進み、全気筒稼動時学習フラグＬＥＡＲＮallの値を「１」から「０」に変更し、続くステップ１１２０にて一部気筒休止時学習フラグＬＥＡＲＮ#1〜ＬＥＡＲＮ#4の値を全て「１」から「０」に変更するとともに、続くステップ１１２５にてnの値を「１」に設定し、続くステップ１１３０にて学習完了フラグＦＩＮの値を「１」から「０」に変更した後、ステップ１１９５に進んで本ルーチンを一旦終了する。これにより、学習完了フラグＦＩＮの値が「０」になっているから、ＣＰＵ７１はステップ１１０５にて「Ｎｏ」と判定してステップ１１９５に直ちに進むようになる。
【０１４１】
また、学習完了フラグＦＩＮの値が「０」になるから、ＣＰＵ７１は図７のステップ７１０に進んだとき再び「Ｎｏ」と判定して再びステップ７１５に進むようになる。これにより、燃料噴射気筒についての基本燃料噴射量補正係数α#injによる補正がなされない補正前基本燃料噴射量Fbasebがフィードバック補正量DFiによりフィードバック補正された後の最終燃料噴射量Fi#injの燃料の噴射指示が吸気行程を迎える燃料噴射気筒に対して再びなされるようになる。
【０１４２】
また、学習完了フラグＦＩＮの値が「０」になるから、ＣＰＵ７１は図９のステップ９０５、或いは図１０のステップ１００５に進んだとき「Ｙｅｓ」と判定するようになり、前述した前記平均値DFiaveの取得処理、及び基本燃料噴射量補正係数α#1〜#4の算出（更新）処理が順次実行されることで、新たな基本燃料噴射量補正係数α#1〜#4が算出（更新）・格納されて、その結果、学習完了フラグＦＩＮの値が再び「１」になる。
【０１４３】
これにより、再びステップ７３０の処理が実行されるようになり、この結果、燃料噴射気筒についての新たな（更新された）基本燃料噴射量補正係数α#injによる補正がなされた補正前基本燃料噴射量Fbaseb（従って、補正後基本燃料噴射量Fbase#inj）がフィードバック補正量DFiによりフィードバック補正された後の最終燃料噴射量Fi#injの燃料の噴射指示が吸気行程を迎える燃料噴射気筒に対して再びなされるようになる。
【０１４４】
以上、説明したように、本発明による内燃機関の空燃比制御装置の実施形態によれば、補正前基本燃料噴射量Fbasebの値そのものにフィードバック補正量DFiを乗じた値（Fbaseb・DFi）である最終燃料噴射量Fi#injの燃料の噴射指示を燃料噴射気筒のインジェクタ３９に与えた状態で、一部気筒休止状態における休止気筒を#1気筒から#4気筒まで順次変更していき、対応する一部気筒休止時フィードバック補正量DFi#elseの値と全気筒稼動状態における全気筒稼動時フィードバック補正量DFiallの値とが共に取得された各段階で、上記(13)式〜(16)式に従って順次、基本燃料噴射量補正係数α#1〜α#4を算出する。そして、基本燃料噴射量補正係数α#1〜α#4の全てが取得されると、これ以降、本実施形態は、基本燃料噴射量補正係数α#1〜α#4の値を利用して、上記(1)式に従って前記補正前基本燃料噴射量Fbasebを気筒毎に補正するとともに上記(2)式に従って気筒毎に最終燃料噴射量Fi#injを補正し、この補正した最終燃料噴射量Fi#injの燃料の噴射指示を燃料噴射気筒のインジェクタ３９に与える。
【０１４５】
この結果、全ての気筒についてのインジェクタ３９の誤差がそれぞれ確実に補償され得、気筒間における空燃比のばらつきが確実に消滅した。従って、機関の出力（トルク）変動が小さくなってドライバビリティの低下が抑制され、また、暖気運転中におけるエミッションの排出量が少なくなるとともに、燃費の悪化を防止できた。
【０１４６】
本発明は上記実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、上記実施形態においては、基本燃料噴射量補正係数α#1〜#4が順次取得される毎に全気筒稼動時フィードバック補正量DFiallを新たに取得し直すように構成されているが、一旦、全気筒稼動時フィードバック補正量DFiallが取得されたら、同取得された一つの値そのものを使用して基本燃料噴射量補正係数α#1〜#4の全てを取得するように構成してもよい。
【０１４７】
また、上記実施形態においては、基本燃料噴射量補正係数α#1〜#4の各値を取得する処理が実行されている間（従って、学習完了フラグＦＩＮの値が「０」になっている間）において、一部気筒休止状態での休止気筒となる気筒が#1気筒から#4気筒まで順次変更されていくように構成されているが、機関の運転状態に応じて一部気筒休止状態での休止気筒となる気筒を選択するように構成してもよい。
【０１４８】
また、上記実施形態においては、フィードバック補正量DFiの値そのものについての前記第２所定時間内における時間的平均値を全気筒稼動時フィードバック補正量DFiall、或いは一部気筒休止時フィードバック補正量DFi#elseとして使用するように構成されているが、フィードバック補正量DFiの値を所定のローパスフィルタにて処理した後の値、若しくは、同処理した後の値についての前記第２所定時間内における時間的平均値を全気筒稼動時フィードバック補正量DFiall、或いは一部気筒休止時フィードバック補正量DFi#elseとして使用するように構成してもよい。
【０１４９】
また、上記実施形態においては、上記ローパスフィルタを使用することと同様の効果を発揮させるため、フィードバック補正量DFiを算出する際に使用される積分ゲインGiの値を小さい値に設定することが好ましい。
【０１５０】
また、上記実施形態においては、燃料噴射気筒についての最終燃料噴射量Fi#injが「Fi#inj＝Fbaseb・α#inj・DFi」にて計算されるように構成されているが、燃料噴射気筒についての最終燃料噴射量Fi#injが「Fi#inj＝Fbaseb＋α#inj＋DFi」にて計算されるように構成してもよい。この場合においても、基本燃料噴射量補正係数α#1〜#4の各値は、上記(13)〜上記(16)式に従ってそれぞれ計算され得る。
【０１５１】
また、上記実施形態においては、一部気筒休止状態での休止気筒となる気筒が#1気筒から#4気筒まで一気筒ずつ順次変更されていくように構成されているが、例えば、２つの部分気筒群（バンクＡ、及びバンクＢ）を有する機関（例えば、Ｖ型８気筒エンジン）においては、一部気筒休止状態での休止気筒となる気筒が部分気筒群ずつ（Ｖ型８気筒エンジンの場合には４気筒ずつ）交互に変更されていくように構成してもよい。この場合、バンクＡ、及びバンクＢについての基本燃料噴射量補正係数の平均値α#A，α#Bはそれぞれ、下記(17)式、下記(18)式に従って計算され得る。下記(17)式において、DFi#Bは休止気筒がバンクＡに属する全ての気筒である場合の一部気筒休止時フィードバック補正量であり、下記(18)式において、DFi#Aは休止気筒がバンクＢに属する全ての気筒である場合の一部気筒休止時フィードバック補正量である。
【０１５２】
α#A＝２・DFiall−DFi#B  ・・・(17)
α#B＝２・DFiall−DFi#A  ・・・(18)
【０１５３】
そして、バンクＡに属する気筒の何れかが燃料噴射気筒である場合には、燃料噴射気筒についての最終燃料噴射量Fi#injが「Fi#inj＝Fbaseb・α#A・DFi」にて計算され、バンクＢに属する気筒の何れかが燃料噴射気筒である場合には、燃料噴射気筒についての最終燃料噴射量Fi#injが「Fi#inj＝Fbaseb・α#B・DFi」にて計算される。
【０１５４】
また、一部気筒休止状態での休止気筒となる気筒が常に２つの部分気筒群のうち特定の何れか一方のみ（例えば、常にバンクＡに属する全ての気筒）になるように構成されていてもよい。この場合、上記(17)式、(18)式のうち(17)式のみが使用され得、バンクＡに属する気筒の何れかが燃料噴射気筒である場合には、燃料噴射気筒についての最終燃料噴射量Fi#injが「Fi#inj＝Fbaseb・α#A・DFi」にて計算される一方、バンクＢに属する気筒の何れかが燃料噴射気筒である場合には、基本燃料噴射量Fbasebを補正することなく、燃料噴射気筒についての最終燃料噴射量Fi#injが「Fi#inj＝Fbaseb・DFi」にて計算される。
【０１５５】
また、上記実施形態においては、機関１０の運転状態が図５に示した「ガス当たり状態が良」となる運転状態になっている場合にのみ、全気筒稼動時フィードバック補正量DFiall、及び一部気筒休止時フィードバック補正量DFi#elseを取得することで基本燃料噴射量補正係数α#1〜α#4を算出するように構成されているが、「ガス当たり状態」の良否にかかわらず全気筒稼動時フィードバック補正量DFiall、及び一部気筒休止時フィードバック補正量DFi#elseを共に取得することで基本燃料噴射量補正係数α#1〜α#4を算出するとともに、その時点でのエンジン回転速度NE、及び吸入空気量相当値KLと、基本燃料噴射量Fbasebを補正する際の反映率Kc（例えば、Kc＝０．２〜１．０）を求めるための図１２に示したテーブルとに基づいて反映率Kcを求め、前記算出した基本燃料噴射量補正係数α#1〜α#4の各々に同反映率Kcを乗じた各値を最終的な基本燃料噴射量補正係数α#1〜α#4として使用するように構成してもよい。この場合、反映率Kcの値は、「ガス当たり状態」が良好になるほどより大きい値に設定されることが望ましい。
【図面の簡単な説明】
【０１５６】
【図１】本発明の実施形態に係る空燃比制御装置を適用した内燃機関の概略図である。
【図２】図１に示したエアフローメータの出力電圧と計測された吸入空気流量との関係を示したグラフである。
【図３】図１に示した上流側空燃比センサの出力電圧と空燃比との関係を示したグラフである。
【図４】図１に示した空燃比制御装置が空燃比フィードバック制御を実行する際の機能ブロック図である。
【図５】図１に示したＣＰＵが参照する、エンジン回転速度、及び吸入空気量相当値に基づいて排ガスの上流側空燃比センサへのガス当たり状態の良否を判定するためのテーブルを示したグラフである。
【図６】図１に示したＣＰＵが実行する気筒休止制御を行うためのルーチンを示したフローチャートである。
【図７】図１に示したＣＰＵが実行する最終燃料噴射量の計算等を行うためのルーチンを示したフローチャートである。
【図８】図１に示したＣＰＵが実行するフィードバック補正量を計算するためのルーチンを示したフローチャートである。
【図９】図１に示したＣＰＵが実行する全気筒稼動時フィードバック補正量の時間的平均値、及び一部気筒休止時フィードバック制御量の時間的平均値をそれぞれ取得するためのルーチンを示したフローチャートである。
【図１０】図１に示したＣＰＵが実行する基本燃料噴射量補正係数を算出・更新するためのルーチンを示したフローチャートである。
【図１１】図１示したＣＰＵが実行する基本燃料噴射量補正係数を更新するか否かの判定を行うためのルーチンを示したフローチャートである。
【図１２】本発明の実施形態の変形例に係る空燃比制御装置のＣＰＵが参照する、エンジン回転速度、及び吸入空気量相当値と、基本燃料噴射量を補正する際の反映率との関係を規定するテーブルを示したグラフである。
【符号の説明】
【０１５７】
１０…内燃機関、２５…燃焼室、３３…吸気弁駆動装置、３６…排気弁駆動装置、３９…インジェクタ、５２…エキゾーストパイプ（排気管）、６６…上流側空燃比センサ、７０…電気制御装置、７１…ＣＰＵ
【図１】
2005030350.tif 000003
【図２】
2005030350.tif 000004
【図３】
2005030350.tif 000005
【図４】
2005030350.tif 000006
【図５】
2005030350.tif 000007
【図６】
2005030350.tif 000008
【図７】
2005030350.tif 000009
【図８】
2005030350.tif 000010
【図９】
2005030350.tif 000011
【図１０】
2005030350.tif 000012
【図１１】
2005030350.tif 000013
【図１２】
2005030350.tif 000014