(57)【特許請求の範囲】
【請求項１】
内燃機関の複数の気筒の排出ガスが合流して流れる排気集合部に設置した排出ガスセンサの検出値に基づいて気筒別に空燃比を推定する気筒別空燃比推定を実行する気筒別空燃比推定手段を備えた内燃機関の制御装置において、
前記気筒別空燃比推定手段は、
少なくとも１つの気筒毎に燃焼空燃比を入力として前記排気集合部における流入ガスの空燃比（以下「集合部流入空燃比」という）を出力とする第１の排気系モデルを少なくとも１つの気筒毎に設定すると共に、前記集合部流入空燃比を入力として前記排出ガスセンサの検出値を出力とする第２の排気系モデルを設定し、
前記排出ガスセンサの検出値と前記第２の排気系モデルとに基づいて前記集合部流入空燃比を推定する集合部流入空燃比推定手段と、
前記集合部流入空燃比推定手段で推定した集合部流入空燃比と前記第１の排気系モデルとに基づいて少なくとも１つの気筒毎に燃焼空燃比を推定する燃焼空燃比推定手段とを備え、
前記集合部流入空燃比推定手段及び前記燃焼空燃比推定手段により前記気筒別空燃比推定を実行することを特徴とする内燃機関の制御装置。
【請求項２】
前記第１の排気系モデルは、各気筒の燃焼ガスの前記排出ガスセンサでの検出性の差を考慮して、前記排出ガスセンサでの検出に寄与する集合部流入空燃比を出力するように構築されていることを特徴とする請求項１に記載の内燃機関の制御装置。
【請求項３】
前記第２の排気系モデルは、前記集合部流入空燃比の履歴と前記排出ガスセンサの検出値の履歴にそれぞれ所定の重みを乗じて加算したものを前記排出ガスセンサの検出値として出力するように構築されていることを特徴とする請求項１又は２に記載の内燃機関の制御装置。
【請求項４】
前記集合部流入空燃比推定手段は、前記第２の排気系モデルに基づくオブザーバにより前記集合部流入空燃比の推定を実施することを特徴とする請求項１乃至３のいずれかに記載の内燃機関の制御装置。
【請求項５】
前記燃焼空燃比推定手段は、前記第１の排気系モデルの逆モデルにより前記燃焼空燃比の推定を実施することを特徴とする請求項１乃至４のいずれかに記載の内燃機関の制御装置。
【請求項６】
前記気筒別空燃比推定手段は、内燃機関の運転条件に応じて前記第１の排気系モデルを設定し、内燃機関の運転条件に応じて前記集合部流入空燃比推定手段を変更することを特徴とする請求項１乃至５のいずれかに記載の内燃機関の制御装置。
【請求項７】
前記気筒別空燃比推定手段は、前記排出ガスセンサの応答特性に応じて前記第１の排気系モデルを設定し、前記排出ガスセンサの応答特性に応じて前記集合部流入空燃比推定手段を変更することを特徴とする請求項１乃至６のいずれかに記載の内燃機関の制御装置。
【請求項８】
前記燃焼空燃比推定手段による燃焼空燃比の推定精度を判定する推定精度判定手段を備え、
前記気筒別空燃比推定手段は、前記推定精度判定手段の判定結果に基づいて前記集合部流入空燃比推定手段と前記燃焼空燃比推定手段の少なくとも１つの内部パラメータを変更することを特徴とする請求項１乃至７のいずれかに記載の内燃機関の制御装置。
【請求項９】
前記集合部流入空燃比推定手段は、内燃機関の所定の基準角度位置で前記排出ガスセンサの検出値に基づいて前記集合部流入空燃比を推定する演算を実行し、
前記気筒別空燃比推定手段は、少なくとも内燃機関の負荷に応じて前記基準角度位置を決定することを特徴とする請求項１乃至８のいずれかに記載の内燃機関の制御装置。
【請求項１０】
前記燃焼空燃比推定手段は、内燃機関の気筒毎に所定の基準角度位置で前記集合部流入空燃比に基づいて前記燃焼空燃比を推定する演算を実行し、
前記気筒別空燃比推定手段は、少なくとも内燃機関の負荷に応じて前記基準角度位置を決定することを特徴とする請求項１乃至９のいずれかに記載の内燃機関の制御装置。
【請求項１１】
前記気筒別空燃比推定手段は、内燃機関の排気バルブの開弁時期に応じて前記基準角度位置を補正することを特徴とする請求項９又は１０に記載の内燃機関の制御装置。
【請求項１２】
前記気筒別空燃比推定手段は、前記排出ガスセンサの状態と内燃機関の運転状態のうちの少なくとも一方に基づいて前記気筒別空燃比推定の実行条件が成立しているか否かを判定し、該実行条件が成立しているときに前記気筒別空燃比推定を実行することを特徴とする請求項１乃至１１のいずれかに記載の内燃機関の制御装置。
【請求項１３】
前記気筒別空燃比推定の実行条件として、内燃機関の燃料カット中でなく且つ該燃料カット終了から所定期間以内でないという条件を含むことを特徴とする請求項１２に記載の内燃機関の制御装置。
【請求項１４】
内燃機関の気筒群毎又は気筒毎に前記気筒別空燃比推定手段を備えていることを特徴とする請求項１乃至１３のいずれかに記載の内燃機関の制御装置。
【請求項１５】
前記排出ガスセンサの検出値を目標値に一致させるよう各気筒の空燃比をフィードバック制御する空燃比フィードバック制御を実行する空燃比フィードバック制御手段と、
前記気筒別空燃比推定により推定された各気筒の気筒別空燃比に基づいて気筒毎に気筒間空燃比ばらつきを算出し、該気筒間空燃比ばらつきに基づいて気筒毎に気筒別補正値を算出して、該気筒別補正値を用いて気筒毎に空燃比制御量を補正する気筒別空燃比制御を実行する気筒別空燃比制御手段と
を備えていることを特徴とする請求項１乃至１４のいずれかに記載の内燃機関の制御装置。
【請求項１６】
前記気筒別空燃比制御手段は、前記気筒別空燃比推定により推定された全気筒の気筒別空燃比の平均値と気筒別空燃比との差から前記気筒間空燃比ばらつきを算出することを特徴とする請求項１５に記載の内燃機関の制御装置。
【請求項１７】
前記気筒別空燃比制御手段は、前記気筒別補正値の全気筒平均値を算出し、この全気筒平均値により各気筒の気筒別補正値を減算補正することを特徴とする請求項１５又は１６に記載の内燃機関の制御装置。
【請求項１８】
前記気筒別空燃比制御手段は、所定条件下で前記気筒別空燃比推定が許可された場合又は前記気筒別空燃比推定が許可されてから所定期間が経過した場合に前記気筒別空燃比制御を許可することを特徴とする請求項１５乃至１７のいずれかに記載の内燃機関の制御装置。
【請求項１９】
前記排出ガスセンサの検出値を目標値に一致させるよう各気筒の空燃比をフィードバック制御する空燃比フィードバック制御を実行する空燃比フィードバック制御手段と、
前記気筒別空燃比推定により推定された各気筒の気筒別空燃比に基づいて気筒毎に気筒間空燃比ばらつきを算出し、該気筒間空燃比ばらつきに基づいて前記空燃比フィードバック制御のフィードバックゲインを変化させる手段と
を備えていることを特徴とする請求項１乃至１４のいずれかに記載の内燃機関の制御装置。
【請求項２０】
前記気筒別空燃比制御の実行中に、前記気筒別補正値に基づいて気筒毎に気筒別学習値を算出し、該気筒別学習値をバックアップ用メモリに記憶する気筒別学習手段を備えていることを特徴とする請求項１５乃至１８のいずれかに記載の内燃機関の制御装置。
【請求項２１】
前記気筒別学習手段は、内燃機関の運転領域を複数に区分し、該区分した運転領域毎に前記気筒別学習値を算出して前記バックアップ用メモリに記憶することを特徴とする請求項２０に記載の内燃機関の制御装置。
【請求項２２】
前記気筒別学習手段は、前記気筒別補正値が所定値以上である場合にのみ前記気筒別学習値を更新することを特徴とする請求項２０又は２１に記載の内燃機関の制御装置。
【請求項２３】
前記所定値は、前記気筒別空燃比推定により推定された全気筒の気筒別空燃比の平均値と気筒別空燃比との差が空気過剰率（λ）で０．０１以上となる場合の相当値に設定されていることを特徴とする請求項２２に記載の内燃機関の制御装置。
【請求項２４】
前記気筒別学習手段は、その都度の前記気筒別補正値に応じて前記気筒別学習値の１回当たりの更新幅を決定し、該更新幅だけ前記気筒別学習値を更新することを特徴とする請求項２２又は２３に記載の内燃機関の制御装置。
【請求項２５】
前記気筒別学習手段は、前記気筒別学習値の更新周期を前記気筒別補正値の算出周期よりも長くすることを特徴とする請求項２０乃至２４のいずれかに記載の内燃機関の制御装置。
【請求項２６】
各気筒に対する燃料噴射の都度、前記バックアップ用メモリに記憶された気筒別学習値を前記気筒別空燃比制御に反映させる学習値反映手段を備えていることを特徴とする請求項２０乃至２５のいずれかに記載の内燃機関の制御装置。
【請求項２７】
前記気筒別学習手段は、内燃機関の運転領域において学習実行領域と学習非実行領域とを予め設定しておき、
前記学習値反映手段は、前記学習非実行領域では前記学習実行領域内で最も前記学習非実行領域寄りの気筒別学習値を前記気筒別空燃比制御に反映させることを特徴とする請求項２６に記載の内燃機関の制御装置。
【請求項２８】
前記気筒別空燃比制御の実行条件が満たされない場合に、前記気筒別学習値の更新を禁止する手段を備えていることを特徴とする請求項２０乃至２７のいずれかに記載の内燃機関の制御装置。
【請求項２９】
前記排出ガスセンサの検出値の変動量が所定の許容レベルを超えている場合に、前記気筒別学習値の更新を禁止する手段を備えていることを特徴とする請求項２０乃至２８のいずれかに記載の内燃機関の制御装置。
【請求項３０】
前記気筒別空燃比制御手段は、内燃機関の気筒毎に所定の基準角度位置で前記気筒別補正値の演算を実行し、少なくとも内燃機関の負荷に応じて前記基準角度位置を決定することを特徴とする請求項１５乃至２９のいずれかに記載の内燃機関の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の複数の気筒の排出ガスが合流して流れる排気集合部に設置した排出ガスセンサの検出値に基づいて気筒別に空燃比を推定する機能を備えた内燃機関の制御装置に関する発明である。
【背景技術】
【０００２】
従来より、内燃機関の排出ガスの空燃比を排出ガスセンサ（例えば空燃比センサ）で検出し、その検出値を目標空燃比に一致させるように燃料噴射量を補正する空燃比フィードバック制御を実行するようにしたものがあるが、複数の気筒を有する内燃機関の場合、各気筒の吸気マニホールド形状の違いや吸気バルブ動作のばらつき等により各気筒の吸入空気量に気筒間ばらつきが生じることがある。また、各気筒にそれぞれ燃料噴射弁を設けて気筒毎に燃料噴射を行うＭＰＩ（マルチポイントインジェクション）方式では、各気筒の燃料噴射弁の個体差等により各気筒の燃料噴射量に気筒間ばらつきが生じることがある。これらの吸入空気量や燃料噴射量の気筒間ばらつきによって各気筒の空燃比の気筒間ばらつきが大きくなって空燃比制御精度が悪化するという問題がある。
【０００３】
そこで、排出ガスセンサの検出値に基づいて各気筒の空燃比を気筒毎に推定し、その推定結果に基づいて各気筒の空燃比の気筒間ばらつきが小さくなるように各気筒の空燃比（例えば燃料噴射量）を気筒毎に補正する気筒別空燃比制御を実行するようにしたものがある。各気筒の空燃比を推定する技術としては、例えば、特許文献１（特許第３６８３３５５号公報）に記載されているように、内燃機関の排気系の挙動を記述するモデルに基づいてその内部状態を観測するオブザーバを設定し、排気系集合部に設けられた排出ガスセンサ（空燃比センサ）の出力に基づいて各気筒の空燃比を気筒毎に推定するようにしたものがある。このものは、モデルの状態量に各気筒の空燃比をもつことによってオブザーバにより直接各気筒の空燃比を推定するようにしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３６８３３５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
内燃機関の複数の気筒の排出ガスが合流して流れる排気集合部に排出ガスセンサを設置したシステムでは、排出ガスセンサに対する各気筒の燃焼ガスの当り具合の差、各気筒の排気マニホールドの長さの違い、気筒間の燃焼間隔のばらつき等によって、気筒毎に燃焼空燃比の変化に対する排出ガスセンサの出力の挙動が異なってくるため、各気筒の空燃比に対する排出ガスセンサの検出性に差（ばらつき）が生じることがある。しかし、上記特許文献１の技術では、各気筒の空燃比に対する排出ガスセンサの検出性のばらつきの影響を受けて、各気筒の空燃比を精度良く推定できない可能性がある。
【０００６】
そこで、本発明が解決しようとする課題は、各気筒の空燃比に対する排出ガスセンサの検出性のばらつきの影響を受け難くすることができ、各気筒の空燃比を精度良く推定することができる内燃機関の制御装置を提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、請求項１に係る発明は、内燃機関の複数の気筒の排出ガスが合流して流れる排気集合部に設置した排出ガスセンサの検出値に基づいて気筒別に空燃比を推定する気筒別空燃比推定を実行する気筒別空燃比推定手段を備えた内燃機関の制御装置において、気筒別空燃比推定手段は、少なくとも１つの気筒毎に燃焼空燃比を入力として排気集合部における流入ガスの空燃比（以下「集合部流入空燃比」という）を出力とする第１の排気系モデルを少なくとも１つの気筒毎に設定すると共に、集合部流入空燃比を入力として排出ガスセンサの検出値を出力とする第２の排気系モデルを設定し、排出ガスセンサの検出値と第２の排気系モデルとに基づいて集合部流入空燃比を推定する集合部流入空燃比推定手段と、この集合部流入空燃比推定手段で推定した集合部流入空燃比と第１の排気系モデルとに基づいて少なくとも１つの気筒毎に燃焼空燃比を推定する燃焼空燃比推定手段とを備え、これらの集合部流入空燃比推定手段及び燃焼空燃比推定手段により気筒別空燃比推定を実行するようにしたものである。
【０００８】
この構成では、第１の排気系モデルで、各気筒の燃焼空燃比の変化に対する集合部流入空燃比の挙動を表現することができるため、第２の排気系モデルでは、各気筒の燃焼空燃比の変化に対する排出ガスセンサの検出値の挙動の違いを考慮することなく、集合部流入空燃比の変化に対する排出ガスセンサの検出値の挙動を表現すれば良く、これらの第１及び第２の排気系モデルによって各気筒の燃焼空燃比から排出ガスセンサの検出値までの挙動を精度良く表現することができる（モデル化誤差を少なくすることができる）。このように設定した第１及び第２の排気系モデルを用いて、排出ガスセンサの検出値と第２の排気系モデルとに基づいて集合部流入空燃比を推定し、その推定した集合部流入空燃比と第１の排気系モデルとに基づいて少なくとも１つの気筒毎に燃焼空燃比を推定することで、各気筒の空燃比に対する排出ガスセンサの検出性の差（ばらつき）の影響をあまり受けずに、各気筒の空燃比を精度良く推定することができる。
【０００９】
この場合、請求項２のように、第１の排気系モデルは、各気筒の燃焼ガスの排出ガスセンサでの検出性の差を考慮して、排出ガスセンサでの検出に寄与する集合部流入空燃比を出力するように構築すると良い。このように各気筒の燃焼ガスの排出ガスセンサでの検出性の差を考慮して第１の排気系モデルを設定することで、第２の排気系モデルは、各気筒の燃焼ガスの排出ガスセンサでの検出性の差がないものとして設定することができ、精度良くモデル化することが可能となる。
【００１０】
更に、請求項３のように、第２の排気系モデルは、集合部流入空燃比の履歴と排出ガスセンサの検出値の履歴にそれぞれ所定の重みを乗じて加算したものを排出ガスセンサの検出値として出力するように構築すると良い。このようにすれば、排気集合部におけるガスの混合に着目したモデルを用いることになるため、排気集合部のガス交換挙動を反映して気筒別空燃比（気筒別の燃焼空燃比）を算出することができる。また、排出ガスセンサの検出値をその過去の値から予測するモデル（自己回帰モデル）を用いることから、精度向上を図る上で履歴を増やすことを要しない。その結果、簡単なモデルを用いることでモデリングの複雑さを解消し、しかも気筒別空燃比を精度良く推定することができるようになる。
【００１１】
また、請求項４のように、集合部流入空燃比推定手段は、第２の排気系モデルに基づくオブザーバにより集合部流入空燃比の推定を実施するようにしても良い。オブザーバを用いることにより対ノイズ性能を向上させることができ、気筒別空燃比の推定精度を向上させることができる。
【００１２】
更に、請求項５のように、燃焼空燃比推定手段は、第１の排気系モデルの逆モデルにより燃焼空燃比の推定を実施するようにしても良い。このようにすれば、集合部流入空燃比から各気筒の燃焼空燃比を容易に推定することができる。
【００１３】
また、請求項６のように、気筒別空燃比推定手段は、内燃機関の運転条件に応じて第１の排気系モデルを設定し、内燃機関の運転条件に応じて集合部流入空燃比推定手段を変更するようにしても良い。このようにすれば、内燃機関の運転条件が変化しても最適なモデルに基づいて気筒別空燃比を推定することができ、気筒別空燃比の推定精度を向上させることができる。
【００１４】
更に、請求項７のように、気筒別空燃比推定手段は、排出ガスセンサの応答特性に応じて第１の排気系モデルを設定し、排出ガスセンサの応答特性に応じて集合部流入空燃比推定手段を変更するようにしても良い。このようにすれば、排出ガスセンサの応答特性が変化しても最適なモデルに基づいて気筒別空燃比を推定することができ、気筒別空燃比の推定精度を向上させることができる。
【００１５】
また、請求項８のように、燃焼空燃比推定手段による燃焼空燃比の推定精度を判定する推定精度判定手段を備え、気筒別空燃比推定手段は、推定精度判定手段の判定結果に基づいて集合部流入空燃比推定手段と燃焼空燃比推定手段の少なくとも１つの内部パラメータを変更するようにしても良い。このようにすれば、燃焼空燃比の推定精度が悪化した場合に、集合部流入空燃比推定手段や燃焼空燃比推定手段の内部パラメータを予め設定した値に変更して燃焼空燃比の推定精度の改善を図ることが可能となる。
【００１６】
実際の空燃比挙動では、気筒間で存在する個体差等により空燃比が変動し、その空燃比変動はクランク角に同期した所定パターンで現れるが、空燃比の変動パターンは、少なくとも内燃機関の負荷に応じて進角側又は遅角側にシフトするため（図８参照）、この空燃比変動により気筒別空燃比の推定精度が低下する可能性がある。
【００１７】
このような事情を考慮して、請求項９のように、集合部流入空燃比推定手段は、内燃機関の所定の基準角度位置で排出ガスセンサの検出値に基づいて集合部流入空燃比を推定する演算を実行し、気筒別空燃比推定手段は、少なくとも内燃機関の負荷に応じて基準角度位置を決定するようにしても良い。このようにすれば、内燃機関の負荷に応じた適正なタイミングで排出ガスセンサの検出値に基づいた集合部流入空燃比の推定を実行することができ、集合部流入空燃比の推定精度を向上させることができる。
【００１８】
また、請求項１０のように、燃焼空燃比推定手段は、内燃機関の気筒毎に所定の基準角度位置で集合部流入空燃比に基づいて燃焼空燃比を推定する演算を実行し、気筒別空燃比推定手段は、少なくとも内燃機関の負荷に応じて基準角度位置を決定するようにしても良い。このようにすれば、内燃機関の負荷に応じた適正なタイミングで集合部流入空燃比に基づいた燃焼空燃比の推定を実行することができ、気筒別空燃比の推定精度を向上させることができる。請求項９と請求項１０のいずれの場合も、例えば、少なくとも内燃機関の負荷（吸気管圧力や吸入空気量等）をパラメータとする基準角度位置のマップを参照して、内燃機関の負荷に応じた基準角度位置を決定すれば良い。
【００１９】
更に、請求項１１のように、気筒別空燃比推定手段は、内燃機関の排気バルブの開弁時期に応じて基準角度位置を補正するようにしても良い。このようにすれば、排気バルブの開弁時期に応じて各気筒の燃焼ガスが排気マニホールドに流入する時期が変化するのに対応して、基準角度位置を補正することができ、より適正なタイミングで集合部流入空燃比や燃焼空燃比の推定を実行することができ、集合部流入空燃比や燃焼空燃比の推定精度を向上させることができる。
【００２０】
また、請求項１２のように、気筒別空燃比推定手段は、排出ガスセンサの状態と内燃機関の運転状態のうちの少なくとも一方に基づいて気筒別空燃比推定の実行条件が成立しているか否かを判定し、該実行条件が成立しているときに気筒別空燃比推定を実行するようにすると良い。このようにすれば、気筒別空燃比推定の実行条件（例えば、排出ガスセンサが使用可能であること、内燃機関の運転状態が所定の実行領域であること等）が成立しているときに、気筒別空燃比推定を実行するようにできる。
【００２１】
この場合、請求項１３のように、気筒別空燃比推定の実行条件として、内燃機関の燃料カット中でなく且つ該燃料カット終了（燃料噴射再開）から所定期間以内でないという条件を含むようにしても良い。このようにすれば、燃料カット中や燃料カット終了から所定期間以内の期間（つまり気筒別空燃比推定が困難になる期間や気筒別空燃比の推定値の信頼性が低下する期間）に、気筒別空燃比推定を禁止することができ、気筒別空燃比の推定精度の悪化を未然に防止することができる。
【００２２】
ところで、例えばＶ型８気筒の内燃機関のように、１つのバンクにおける各気筒の燃焼間隔が不等間隔であったり、各気筒の排気管長が不等長の排気系であったり、全気筒（バンク毎）の排気管が集合する部分よりも上流側で複数気筒の排気管が集合する排気系の内燃機関においては、全気筒の排出ガスが合流して流れる排気集合部に到達する前に各気筒の排出ガスが混じり合ったり、各気筒の排出ガスが燃焼順に排気集合部に到達しない可能性がある。このような内燃機関に本発明を適用する場合に、内燃機関の全気筒に対して１つの気筒別空燃比推定手段を備えた構成にすると、第１の排気系モデルにおいて気筒毎の排出ガスの挙動を精度良くモデル化できない可能性があり、第２の排気系モデルのモデル化の精度が低下する可能性がある。
【００２３】
そこで、本発明は、内燃機関の全気筒に対して１つの気筒別空燃比推定手段を備えた構成に限定されず、請求項１４のように、内燃機関の気筒群毎又は気筒毎に気筒別空燃比推定手段を備えた構成としても良い。このようにすれば、第１の排気系モデルだけでなく第２の排気系モデルも気筒群毎又は気筒毎の挙動の違いを考慮して設定することが可能となる。これにより、各気筒の燃焼間隔が不等間隔であったり、各気筒の排気管長が不等長の排気系であったり、全気筒（バンク毎）の排気管が集合する部分よりも上流側で複数気筒の排気管が集合する排気系の内燃機関の場合でも、気筒別空燃比を推定するためのモデルを不等間隔燃焼や不等長排気系の影響を考慮して気筒群毎又は気筒毎に別々にモデル化できるため、気筒別空燃比を精度良く推定することができる。
【００２４】
また、請求項１５のように、排出ガスセンサの検出値を目標値に一致させるよう各気筒の空燃比をフィードバック制御する空燃比フィードバック制御を実行する空燃比フィードバック制御手段を備えたシステムでは、気筒別空燃比推定により推定された各気筒の気筒別空燃比（気筒別の燃焼空燃比）に基づいて気筒毎に気筒間空燃比ばらつきを算出し、該気筒間空燃比ばらつきに基づいて気筒毎に気筒別補正値（気筒別補正係数又は気筒別補正量）を算出して、該気筒別補正値を用いて気筒毎に空燃比制御量を補正する気筒別空燃比制御を実行する気筒別空燃比制御手段を備えた構成としても良い。このようにすれば、各気筒の気筒間空燃比ばらつき（空燃比の気筒間ばらつき）を小さくすることができ、精度の良い空燃比制御を実現することができる。
【００２５】
この場合、請求項１６のように、気筒別空燃比制御手段は、気筒別空燃比推定により推定された全気筒の気筒別空燃比の平均値と気筒別空燃比との差から気筒間空燃比ばらつきを算出するようにすると良い。このようにすれば、全気筒の気筒別空燃比の平均値を基準にしてリッチ／リーンいずれの方向に空燃比がばらついているかに応じて各気筒の空燃比を気筒毎に補正することができる。
【００２６】
また、請求項１７のように、気筒別空燃比制御手段は、気筒別補正値の全気筒平均値を算出し、この全気筒平均値により各気筒の気筒別補正値を減算補正するようにしても良い。このようにすれば、通常の空燃比フィードバック制御との干渉を回避することができる。つまり、通常の空燃比フィードバック制御では、排気集合部における空燃比検出値（排出ガスセンサの検出値）を目標値に一致させるように空燃比制御を実施するのに対して、請求項１７による気筒別空燃比制御では、各気筒の気筒間空燃比ばらつきを吸収するよう空燃比制御を実施することができる。
【００２７】
更に、請求項１８のように、気筒別空燃比制御手段は、所定条件下（例えば気筒別空燃比推定の実行条件が成立している状態）で気筒別空燃比推定が許可された場合又は気筒別空燃比推定が許可されてから所定期間が経過した場合に気筒別空燃比制御を許可するようにしても良い。このようにすれば、精度良く推定した気筒別空燃比に基づいて気筒別空燃比制御を実行することができ、気筒別空燃比制御の精度を向上させることができる。
【００２８】
ところで、通常の空燃比フィードバック制御では、気筒間空燃比ばらつきが無い状態で最適にマッチングがとられているため、気筒間空燃比ばらつきによってモデル化誤差や外乱が大きくなると、制御の安定性が悪化する可能性がある。
【００２９】
そこで、請求項１９のように、排出ガスセンサの検出値を目標値に一致させるよう各気筒の空燃比をフィードバック制御する空燃比フィードバック制御を実行する空燃比フィードバック制御手段を備えたシステムでは、気筒別空燃比推定により推定された各気筒の気筒別空燃比に基づいて気筒毎に気筒間空燃比ばらつきを算出し、該気筒間空燃比ばらつきに基づいて空燃比フィードバック制御のフィードバックゲインを変化させるようにしても良い。例えば、気筒間空燃比ばらつきが所定値以上の場合に、空燃比フィードバック制御のフィードバックゲインを減補正する。このようにすれば、気筒間空燃比ばらつきを考慮した空燃比フィードバック制御を実現することができ、空燃比フィードバック制御の安定性を確保することができる。
【００３０】
気筒別空燃比の推定値（気筒別空燃比推定により推定された気筒別空燃比）に基づいて気筒別空燃比制御を実行することで各気筒の気筒間空燃比ばらつきを小さくすることができるが、内燃機関の運転状態等によっては気筒別空燃比の推定値が得られない（気筒別空燃比を推定できない又は気筒別空燃比の推定が困難になる）場合もあると考えられる。
【００３１】
そこで、請求項２０のように、気筒別空燃比制御の実行中に、気筒別補正値に基づいて気筒毎に気筒別学習値を算出し、該気筒別学習値をバックアップ用メモリに記憶する気筒別学習手段を備えた構成としても良い。このようにすれば、気筒別空燃比の推定値が得られない場合でも、気筒別学習値を用いることで気筒別空燃比制御を実行することが可能となり、各気筒の気筒間空燃比ばらつきを小さくすることができる。
【００３２】
この場合、請求項２１のように、気筒別学習手段は、内燃機関の運転領域を複数に区分し、該区分した運転領域毎に気筒別学習値を算出してバックアップ用メモリに記憶するようにしても良い。このようにすれば、気筒別空燃比の推定値が得られない場合でも、高精度な気筒別空燃比制御の実現が可能となる。尚、複数に区分する内燃機関の運転領域のパラメータとしては、回転速度、負荷（吸入空気量や吸気管圧力等）、冷却水温、要求噴射量等のうちの１つ又は複数を用いることが考えられる。
【００３３】
また、請求項２２のように、気筒別学習手段は、気筒別補正値が所定値以上である場合にのみ気筒別学習値を更新するようにしても良い。このようにすれば、気筒別学習値の更新に不感帯を設けて、気筒別補正値が所定値未満であれば、気筒別学習値を更新しないようにすることができ、気筒別学習値の誤学習の防止を図ることができる。
【００３４】
この場合、請求項２３のように、所定値は、気筒別空燃比推定により推定された全気筒の気筒別空燃比の平均値と気筒別空燃比との差が空気過剰率（λ）で０．０１以上となる場合の相当値に設定すると良い。このようにすれば、空気過剰率（λ）の偏差が０．０１以上となる場合にのみ気筒別学習値を更新するようにできる。
【００３５】
また、請求項２４のように、気筒別学習手段は、その都度の気筒別補正値に応じて気筒別学習値の１回当たりの更新幅を決定し、該更新幅だけ気筒別学習値を更新するようにしても良い。具体的には、気筒別補正値が大きいほど気筒別学習値の更新幅を大きくする。このようにすれば、気筒別補正値が大きい（つまり気筒間空燃比ばらつきが大きい）場合でも、比較的短時間で気筒別学習値の学習を完了することができる。一方、気筒間空燃比ばらつきが小さく、気筒別補正値が小さい場合には、小刻みにすなわち慎重に気筒別学習値を更新することができ、気筒別学習値の学習精度を高めることができる。
【００３６】
更に、請求項２５のように、気筒別学習手段は、気筒別学習値の更新周期を気筒別補正値の算出周期よりも長くすると良い。このようにすれば、気筒別学習値の急な更新による誤学習を抑制することができる。
【００３７】
また、請求項２６のように、各気筒に対する燃料噴射の都度、バックアップ用メモリに記憶された気筒別学習値を気筒別空燃比制御に反映させる学習値反映手段を備えた構成としても良い。このようにすれば、気筒間空燃比ばらつきが小さい高精度な気筒別空燃比制御を実現することができる。
【００３８】
この場合、請求項２７のように、気筒別学習手段は、内燃機関の運転領域において学習実行領域と学習非実行領域とを予め設定しておき、学習値反映手段は、学習非実行領域では学習実行領域内で最も学習非実行領域寄りの気筒別学習値を気筒別空燃比制御に反映させるようにすると良い。このようにすれば、学習非実行領域（例えば高回転・高負荷運転領域）でも気筒別学習値を気筒別空燃比制御に反映させることができる。
【００３９】
また、請求項２８のように、気筒別空燃比制御の実行条件が満たされない場合に、気筒別学習値の更新を禁止するようにしても良い。例えば、排出ガスセンサの活性前、排出ガスセンサの故障時など気筒別空燃比制御が困難な場合に、気筒別学習値の更新を禁止する。又は気筒別空燃比制御が可能であっても、冷却水温の低温時、高回転運転時や低負荷運転時など気筒別空燃比の推定精度が低下する場合に、気筒別学習値の更新を禁止する。このようにすれば、気筒別学習値の誤学習の防止を図ることができる。
【００４０】
更に、請求項２９のように、排出ガスセンサの検出値の変動量が所定の許容レベルを超えている場合に、気筒別学習値の更新を禁止するようにしても良い。このようにすれば、気筒別学習値の誤学習の防止を図ることができる。
【００４１】
また、請求項３０のように、気筒別空燃比制御手段は、内燃機関の気筒毎に所定の基準角度位置で気筒別補正値の演算を実行し、少なくとも内燃機関の負荷に応じて基準角度位置を決定するようにしても良い。このようにすれば、内燃機関の負荷に応じた適正なタイミングで気筒別補正値を演算して気筒別空燃比制御を実行することができ、気筒別空燃比制御の精度を向上させることができる。
【図面の簡単な説明】
【００４２】
【図１】図１は本発明の実施例１におけるエンジン制御システム全体の概略構成を示す図である。
【図２】図２は燃料噴射量制御システムの概略構成を示す図である。
【図３】図３は気筒別空燃比推定部の構成を示すブロック図である。
【図４】図４は気筒別空燃比制御部の構成を示すブロック図である。
【図５】図５は気筒別空燃比制御メインルーチンの処理の流れを示すフローチャートである。
【図６】図６は実行条件判定ルーチンの処理の流れを示すフローチャートである。
【図７】図７は気筒別空燃比推定及び気筒別空燃比制御ルーチンの処理の流れを示すフローチャートである。
【図８】図８は空燃比センサの検出値とクランク角との関係を示す図である。
【図９】図９は実施例２の気筒別空燃比推定及び気筒別空燃比制御ルーチンの処理の流れを示すフローチャートである。
【図１０】図１０は気筒別学習値更新ルーチンの処理の流れを示すフローチャートである。
【図１１】図１１は気筒別学習値反映ルーチンの処理の流れを示すフローチャートである。
【図１２】図１２は補正係数なまし値と学習値更新量との関係を示す図である。
【図１３】図１３は気筒別学習値及び学習完了フラグの記憶形態を説明するための図である。
【図１４】図１４は他の実施例における燃料噴射量制御システムの概略構成を示す図である。
【発明を実施するための形態】
【００４３】
以下、本発明を実施するための形態を具体化した幾つかの実施例を説明する。
【実施例１】
【００４４】
本発明の実施例１を図１乃至図８に基づいて説明する。
まず、図１に基づいてエンジン制御システム全体の概略構成を説明する。
内燃機関である例えば直列４気筒のエンジン１１の吸気管１２の最上流部には、エアクリーナ１３が設けられ、このエアクリーナ１３の下流側に、吸入空気量を検出するエアフローメータ１４が設けられている。このエアフローメータ１４の下流側には、モータ等によって開度調節されるスロットルバルブ１５と、このスロットルバルブ１５の開度（スロットル開度）を検出するスロットル開度センサ１６とが設けられている。
【００４５】
更に、スロットルバルブ１５の下流側には、サージタンク１７が設けられ、このサージタンク１７に、吸気管圧力を検出する吸気管圧力センサ１８が設けられている。また、サージタンク１７には、エンジン１１の各気筒に空気を導入する吸気マニホールド１９が設けられ、各気筒の吸気マニホールド１９の吸気ポートの近傍に、それぞれ燃料を吸気ポートに向けて噴射する燃料噴射弁２０が取り付けられている。エンジン運転中は、燃料タンク２１内の燃料が燃料ポンプ２２によりデリバリパイプ２３に送られ、各気筒の噴射タイミング毎に各気筒の燃料噴射弁２０から燃料が噴射される。デリバリパイプ２３には、燃料圧力（燃圧）を検出する燃圧センサ２４が取り付けられている。
【００４６】
また、エンジン１１には、吸気バルブ２５と排気バルブ２６のバルブタイミング（開閉タイミング）をそれぞれ変化させる可変バルブタイミング装置２７，２８が設けられている。更に、エンジン１１には、吸気カム軸２９と排気カム軸３０の回転に同期してカム角信号を出力する吸気カム角センサ３１と排気カム角センサ３２が設けられていると共に、エンジン１１のクランク軸の回転に同期して所定クランク角毎（例えば３０℃Ａ毎）にクランク角信号のパルスを出力するクランク角センサ３３が設けられている。
【００４７】
一方、エンジン１１の排気管３４のうちの各気筒の排出ガスが合流して流れる排気集合部３４ａ（各気筒の排気マニホールド３５が集合する部分又はそれよりも下流側）には、排出ガスの空燃比を検出する空燃比センサ３６（排出ガスセンサ）が設けられ、この空燃比センサ３６の下流側に、排出ガス中のＣＯ，ＨＣ，ＮＯｘ等を浄化する三元触媒等の触媒３７が設けられている。また、エンジン１１のシリンダブロックには、冷却水温を検出する冷却水温センサ３８が取り付けられている。
【００４８】
これら各種センサの出力は、電子制御ユニット（以下「ＥＣＵ」と表記する）３９に入力される。このＥＣＵ３９は、マイクロコンピュータを主体として構成され、内蔵されたＲＯＭ（記憶媒体）に記憶された各種のエンジン制御用のプログラムを実行することで、エンジン運転状態に応じて、燃料噴射量、点火時期、スロットル開度（吸入空気量）等を制御する。
【００４９】
その際、ＥＣＵ３９は、所定の空燃比Ｆ／Ｂ（フィードバック）制御実行条件が成立したときに、空燃比センサ３６で検出した排出ガスの空燃比（空燃比センサ３６の検出値）を目標空燃比（空燃比の目標値）に一致させるよう各気筒の空燃比（例えば燃料噴射量）をＦ／Ｂ制御する空燃比Ｆ／Ｂ制御を実行する空燃比フィードバック制御手段として機能する。
【００５０】
具体的には、図２に示すように、まず、空燃比偏差算出部４０で、検出空燃比（空燃比センサ３６で検出した空燃比）と別途設定した目標空燃比との偏差を算出し、空燃比Ｆ／Ｂ制御部４１で、検出空燃比と目標空燃比との偏差が小さくなるように空燃比補正係数を算出する。そして、噴射量算出部４２で、エンジン回転速度やエンジン負荷（吸気管負圧や吸入空気量等）に基づいて算出されたベース噴射量や空燃比補正係数等に基づいて最終噴射量を算出し、その最終噴射量により各気筒の燃料噴射弁２０を制御する。この制御の流れは従来の空燃比Ｆ／Ｂ制御と同様である。
【００５１】
上述した空燃比Ｆ／Ｂ制御は、排気管３４のうちの各気筒の排出ガスが合流して流れる排気集合部３４ａ（各気筒の排気マニホールド３５が集合する部分又はそれよりも下流側）で検出した空燃比情報に基づいて各気筒の燃料噴射量（空燃比）を制御するものであるが、現実には気筒毎に空燃比がばらつく。
【００５２】
そこで、ＥＣＵ３９は、空燃比センサ３６の検出値に基づいて各気筒の燃焼空燃比を気筒毎に推定する気筒別空燃比推定を実行する気筒別空燃比推定手段として機能すると共に、この気筒別空燃比推定により推定された各気筒の気筒別空燃比（気筒別の燃焼空燃比）に基づいて各気筒の空燃比制御量（例えば燃料噴射量）を気筒毎に補正する気筒別空燃比制御を実行する気筒別空燃比制御手段として機能する。
【００５３】
具体的には、図２に示すように、まず、気筒別空燃比推定部４３で、各気筒の気筒別空燃比を次のようにして推定する。各気筒の燃焼ガスの空燃比センサ３６での検出性の差を考慮するために、気筒毎に空燃比センサ３６での検出に寄与する集合部流入空燃比（排気集合部３４ａにおける流入ガスの空燃比）を、燃焼空燃比の履歴と空燃比センサ３６での検出に寄与する集合部流入空燃比の履歴とにそれぞれ所定の重みを乗じて加算したものとしてモデル化した第１の排気系モデルを１つの気筒毎に設定すると共に、空燃比センサ３６の検出値を、空燃比センサ３６での検出に寄与する集合部流入空燃比の履歴と空燃比センサ３６の検出値の履歴とにそれぞれ所定の重みを乗じて加算したものとしてモデル化した第２の排気系モデルを予め設計し、これらの第１及び第２の排気系モデルに基づいて気筒別空燃比を推定する。
【００５４】
ここで、図３を用いて、気筒別空燃比推定部４３のより詳しい構成を説明する。気筒別空燃比推定部４３では、第２の排気系モデルに基づいて設計される集合部流入空燃比推定部４７（集合部流入空燃比推定手段）に空燃比センサ３６の検出値ｙを入力することにより、集合部流入空燃比Ｘを推定（出力）し、第１の排気系モデルに基づいて設計される燃焼空燃比推定部４８（燃焼空燃比推定手段）に推定された集合部流入空燃比Ｘを入力することにより、各気筒の燃焼空燃比φi を推定（出力）する。
【００５５】
集合部流入空燃比推定部４７では、第２の排気系モデルに基づくカルマンフィルタ型オブザーバを用いる。より具体的には、排気集合部３４ａにおけるガス交換のモデルを次の（１）式にて近似する。
ｙs(k)＝ｂ1 ×ｕ(k-1) ＋ｂ2 ×ｕ(k-2) −ａ1 ×ｙs(k-1)−ａ2 ×ｙs(k-2)
…（１）
ここで、ｙs は空燃比センサ３６の検出値、ｕは集合部流入空燃比、ａ1 ，ａ2 ，ｂ1 ，ｂ2 は定数である。
【００５６】
排気系では、排気集合部３４ａにおけるガス流入及び混合の一次遅れ要素と、空燃比センサ３６の応答による一次遅れ要素とが存在する。そこで、上記（１）式では、これらの一次遅れ要素を考慮して過去２回分の履歴を参照することとしている。尚、次数はこれに限定されず、適宜変更しても良く、例えば気筒数分の排気空燃比の存在を考慮して４次のモデルとして次の（２）式にて近似するようにしても良い。
【００５７】
ｙs(k)＝ｂ1 ×ｕ(k-1) ＋ｂ2 ×ｕ(k-2) ＋ｂ3 ×ｕ(k-3) ＋ｂ4 ×ｕ(k-4)
−ａ1 ×ｙs(k-1)−ａ2 ×ｙs(k-2)−ａ3 ×ｙs(k-3)−ａ4 ×ｙs(k-4)
…（２）
ここで、ａ1 〜ａ4 ，ｂ1 〜ｂ4 は定数である。
【００５８】
上記（１）式を状態空間モデルに変換すると、次の（３ａ）、（３ｂ）式が導き出される。
Ｘ(k+1) ＝Ａ・Ｘ(K) ＋Ｂ・ｕ(k) ＋Ｗ(K)         …（３ａ）
Ｙ(k) ＝Ｃ・Ｘ(K) ＋Ｄ・ｕ(k)                   …（３ｂ）
ここで、Ａ，Ｂ，Ｃ，Ｄはモデルのパラメータ、Ｙは空燃比センサ３６の検出値、Ｘは状態変数としての集合部流入空燃比、Ｗはノイズである。
【００５９】
更に、上記（３ａ）、（３ｂ）式によりカルマンフィルタを設計すると、次の（４）式が得られる。
Ｘ＾(k+1｜k)＝Ａ・Ｘ＾(k｜k-1)＋Ｌ｛Ｙ(k) −Ｃ・Ｘ＾(k｜k-1)｝    …（４）
ここで、Ｘ＾（エックスハット）は推定値としての集合部流入空燃比、Ｌはカルマンゲインである。Ｘ＾(k+1｜k)の意味は、時間(k) の推定値により次の時間(k+1) の推定値を求めることを表す。
【００６０】
以上のように、集合部流入空燃比推定部４７をカルマンフィルタ型オブザーバにて構成することにより、燃焼サイクルの進行に伴い集合部流入空燃比を順次推定することができる。尚、図２の構成では、空燃比偏差（検出空燃比と目標空燃比との偏差）を気筒別空燃比推定部４３の入力としており、上記（４）式において出力Ｙが空燃比偏差に置き換えられる。
【００６１】
次に燃焼空燃比推定部４８では、気筒毎の第１の排気系モデルの逆モデルを用いる。より具体的には、集合部流入空燃比を、各気筒の燃焼空燃比を入力とする一次遅れとして次の（５）式にて近似する。
ｙc(k)＝ｂi ×ｕi(k-1)−ａi ×ｙc(k-1)            …（５）
ここで、ｙc は集合部流入空燃比、ｕi は各気筒の燃焼空燃比、ａi ，ｂi は定数である。
【００６２】
上記（５）式を伝達関数表現に変換すると、次の（６）式が得られる。
Ｇi(z)＝ｂi ／（ｚ−ａi ）            …（６）
ここで、Ｇi は第ｉ気筒に対応するモデルであり、ｚは差分方程式を伝達関数表現に変換する一般的なｚ変換におけるサンプリング周期分の時間シフトを表す演算子である。
【００６３】
集合部流入空燃比推定部４７で推定した集合部流入空燃比を上記（６）式の逆モデルに入力することにより、各気筒の推定空燃比φi ＾を算出する。尚、第１の排気系モデルは、上記に限定されず、例えば、Ｇi ＝ｍi （スカラ）のような静的なモデルであっても良い。この場合、Ｇi ＾（−１）＝１／ｍi となり、計算負荷を軽減しつつ、各気筒の燃焼ガスの空燃比センサ３６での検出性の振幅差を補償することができる。
【００６４】
また、エンジン運転条件（例えばエンジン回転速度やエンジン負荷等）に応じて第１の排気系モデルを設定し、エンジン運転条件に応じて集合部流入空燃比推定部４７を変更するようにしても良い。これにより、エンジン運転条件が変化しても最適なモデルに基づいて気筒別空燃比（気筒別の燃焼空燃比）を推定することができ、気筒別空燃比の推定精度を向上させることができる。
【００６５】
更に、空燃比センサ３６の応答特性に応じて第１の排気系モデルを設定し、空燃比センサ３６の応答特性に応じて集合部流入空燃比推定部４７を変更するようにしても良い。これにより、空燃比センサ３６の応答特性が変化しても最適なモデルに基づいて気筒別空燃比を推定することができ、気筒別空燃比の推定精度を向上させることができる。
【００６６】
また、燃焼空燃比推定部４８による燃焼空燃比の推定精度を判定する推定精度判定部（推定精度判定手段）を設け、この推定精度判定部の判定結果に基づいて集合部流入空燃比推部４７と燃焼空燃比推定部４８の少なくとも１つの内部パラメータを変更するようにしても良い。これにより、燃焼空燃比の推定精度が悪化した場合に、集合部流入空燃比推定部４７や燃焼空燃比推定部４８の内部パラメータを予め設定した値に変更して燃焼空燃比の推定精度の改善を図ることが可能となる。
【００６７】
以上のようにして、気筒別空燃比推定部４３で各気筒の気筒別空燃比を推定した後、図２に示すように、基準空燃比算出部４４で、各気筒の気筒別空燃比に基づいて基準空燃比を算出する。本実施例では、全気筒（第１〜第４気筒）の気筒別空燃比の平均値を基準空燃比として算出し、新たに気筒別空燃比が算出される度に基準空燃比を更新する。
【００６８】
この後、気筒別空燃比偏差算出部４５で、気筒毎に気筒別空燃比と基準空燃比との偏差を気筒別空燃比偏差（気筒間空燃比ばらつき）として算出することで各気筒の気筒別空燃比偏差を算出し、気筒別空燃比制御部４６で、気筒毎に気筒別空燃比偏差に基づいて気筒別補正係数（気筒別補正値）を算出することで各気筒の気筒別補正係数を算出し、気筒毎に気筒別補正係数を用いて最終噴射量を補正することで各気筒の空燃比を補正する。
【００６９】
ここで、図４を用いて、気筒別空燃比制御部４６のより詳しい構成を説明する。気筒毎に算出された気筒別空燃比偏差（図２の気筒別空燃比偏差算出部４５の出力）が、第１〜第４の各気筒毎の補正係数算出部４９〜５２にそれぞれ入力される。各補正係数算出部４９〜５２では、気筒別空燃比偏差に基づいて気筒間の空燃比ばらつきが解消されるように、すなわち、該当する気筒の気筒別空燃比が基準空燃比に一致するように気筒別補正係数を算出する。この際、各気筒の補正係数算出部４９〜５２で算出された気筒別補正係数は全て補正係数平均値算出部５３に取り込まれ、第１気筒〜第４気筒の気筒別補正係数の平均値が算出される。そして、その補正係数平均値だけ各気筒の気筒別補正係数が減量補正される。結果この補正後の気筒別補正係数により各気筒の最終噴射量が補正される。
【００７０】
尚、補正後の気筒別補正係数に上下限ガードを設けるようにしても良く、この場合、上限ガード値と下限ガード値は、それぞれ全気筒で同一の値であっても良いし、気筒毎に設定した値であっても良く、更に、エンジン運転状態や空燃比センサ３６の応答特性に応じて変化させるようにしても良い。また、気筒別空燃比偏差の今回値と前回値との差分に基づいて前述のように算出した補正後の気筒別補正係数に対して上下限ガードを設けた値を積算することにより最終的な気筒別補正係数を算出するようにしても良い。また、各気筒の補正係数算出部４９〜５２において構成されるフィードバック制御器におけるフィードバックゲインは、全気筒で同一の値であっても良いし、気筒毎に設定した値であっても良く、更に、エンジン運転状態や空燃比センサ３６の応答特性に応じて変化させるようにしても良い。
【００７１】
以上説明した本実施例１の気筒別空燃比制御は、ＥＣＵ３９によって図５乃至図７の気筒別空燃比制御用の各ルーチンに従って実行される。以下、これらの各ルーチンの処理内容を説明する。
【００７２】
［気筒別空燃比制御メインルーチン］
図５に示す気筒別空燃比制御メインルーチンは、クランク角センサ３３の出力パルスに同期して所定クランク角毎（例えば３０℃Ａ毎）に起動される。本ルーチンが起動されると、まず、１０１で、後述する図６の実行条件判定ルーチンを実行することで、実行フラグを「ＯＮ（オン）」にセットするか又は「ＯＦＦ（オフ）」にリセットする。ここで、実行フラグのＯＮは、気筒別空燃比推定及び気筒別空燃比制御の実行条件が成立していることを意味する。
【００７３】
この後、ステップ１０２に進み、実行フラグがＯＮであるか否かを判定し、実行フラグがＯＮである（つまり気筒別空燃比推定及び気筒別空燃比制御の実行条件が成立している）と判定された場合には、ステップ１０３に進み、気筒別空燃比推定及び気筒別空燃比制御の制御タイミングを決定する。この場合、エンジン負荷（例えば吸気管負圧や吸入空気量等）をパラメータとする基準クランク角度のマップを参照して、現在のエンジン負荷に応じた基準クランク角度を決定する。この基準クランク角度のマップは、低負荷域で基準クランク角度が遅角側にシフトされるように設定されている。つまり、低負荷域では排気流速が遅くなることが考えられ、故にその遅延分に合わせて基準クランク角度が設定され、その基準クランク角度に基づいて制御タイミングが決定されるようになっている。
【００７４】
ここで、基準クランク角度は、気筒別空燃比推定に用いる空燃比センサ３６の検出値を取得するための基準角度位置であり、これはエンジン負荷に応じて変動する。図８に示すように、空燃比センサ３６の検出値は気筒間の個体差等により変動し、クランク角に同期した所定パターンとなる。この変動パターンはエンジン負荷が小さい場合に遅角側にシフトする。例えば図８のａ，ｂ，ｃ，ｄの各タイミングで空燃比センサ３６の検出値を取得したい場合に、負荷変動が生じると空燃比センサ３６の検出値が本来欲しい値からずれるが、上記の通り基準クランク角度が可変設定されることにより最適なタイミングで空燃比センサ３６の検出値が取得できる。但し、空燃比センサ３６の検出値を取り込むこと（例えばＡ／Ｄ変換すること）自体は、必ずしも上記基準クランク角度のタイミングに限定されず、この基準クランク角度よりも短い間隔で実施される構成であっても良い。
【００７５】
この後、ステップ１０４に進み、クランク角センサ３３で検出したクランク角が基準クランク角度になったか否かによって、気筒別空燃比推定及び気筒別空燃比制御の制御タイミングであるか否かを判定し、制御タイミングであると判定される毎に、ステップ１０５に進み、後述する図７の気筒別空燃比推定及び気筒別空燃比制御ルーチンを実行する。
【００７６】
一方、上記ステップ１０２で、実行フラグがＯＦＦである（つまり気筒別空燃比推定及び気筒別空燃比制御の実行条件が不成立である）と判定された場合には、ステップ１０６に進み、各気筒の気筒別補正係数ＦＡＦ(i) を全て「１．０」にセットする。この場合、気筒別空燃比推定及び気筒別空燃比制御は実行されない。
【００７７】
［実行条件判定ルーチン］
図６に示す実行条件判定ルーチンは、前記図５の気筒別空燃比制御メインルーチンのステップ１０１で実行されるサブルーチンである。本ルーチンが起動されると、まず、ステップ２０１で、空燃比センサ３６が使用可能であるか否かを、例えば、空燃比センサ３６が活性化していること、空燃比センサ３６が正常である（フェイルしていない）こと等を全て満たすか否かによって判定し、空燃比センサ３６が使用可能であると判定されれば、ステップ２０２に進み、エンジン１１の冷却水温が所定値（例えば７０℃）以上であるか否かを判定する。
【００７８】
上記ステップ２０１で空燃比センサ３６が使用可能ではないと判定された場合、又は、上記ステップ２０２で冷却水温が所定値よりも低いと判定された場合には、気筒別空燃比推定及び気筒別空燃比制御の実行条件が不成立であると判断して、ステップ２０６に進み、実行フラグを「ＯＦＦ」にリセットする。
【００７９】
一方、上記ステップ２０１で空燃比センサ３６が使用可能であると判定され、且つ、上記ステップ２０２で冷却水温が所定値以上であると判定された場合には、ステップ２０３に進み、エンジン回転速度とエンジン負荷（例えば吸気管負圧や吸入空気量等）とをパラメータとする運転領域マップを参照して、現在のエンジン運転状態が実行領域である否かを判定する。このとき、高回転域又は低負荷域では気筒別空燃比の推定が困難である又は推定値の信頼性が低いと考えられるため、高回転域又は低負荷域では気筒別空燃比制御が禁止されるように実行領域が設定されている。尚、実行領域を空燃比センサ３６の応答特性の変化に応じて補正するようにしても良い。また、実行領域であっても空燃比センサ３６の検出値の変化量の絶対値が所定値以上の場合は推定値の信頼性が低いと判断して、気筒別空燃比制御を禁止する構成としても良い。
【００８０】
この後、ステップ２０４に進み、上記ステップ２０３の判定結果に基づいて現在のエンジン運転状態が実行領域であると判定されたか否かを判別し、現在のエンジン運転状態が実行領域であると判定された場合には、気筒別空燃比推定及び気筒別空燃比制御の実行条件が成立していると判断して、プ２０５に進み、実行フラグを「ＯＮ」にセットする。
【００８１】
一方、上記ステップ２０４で、現在のエンジン運転状態が実行領域ではないと判定された場合には、気筒別空燃比推定及び気筒別空燃比制御の実行条件が不成立であると判断して、ステップ２０６に進み、実行フラグを「ＯＦＦ」にリセットする。
【００８２】
以上の処理により、気筒別空燃比推定及び気筒別空燃比制御の実行条件（例えば、空燃比センサ３６が使用可能であること、エンジン運転状態が実行領域であること等）が成立しているときに、気筒別空燃比推定及び気筒別空燃比制御を実行するようにできる。
【００８３】
尚、気筒別空燃比推定及び気筒別空燃比制御の実行条件として、エンジン１１の燃料カット中でなく且つ該燃料カット終了（燃料噴射再開）から所定期間以内でないという条件を含むようにしても良い。このようにすれば、燃料カット中や燃料カット終了から所定期間以内の期間（つまり気筒別空燃比推定が困難になる期間や気筒別空燃比の推定値の信頼性が低下する期間）に、気筒別空燃比推定を禁止することができ、気筒別空燃比の推定精度の悪化を未然に防止することができる。
【００８４】
［気筒別空燃比推定及び気筒別空燃比制御ルーチン］
図７に示す気筒別空燃比推定及び気筒別空燃比制御ルーチンは、前記図５の気筒別空燃比制御メインルーチンのステップ１０５で実行されるサブルーチンであり、基準クランク角度になる毎（気筒別空燃比推定及び気筒別空燃比制御の制御タイミングになる毎）に起動される。本ルーチンが起動されると、まず、ステップ３０１で、空燃比センサ３６の検出値を読み込んだ後、ステップ３０２に進み、空燃比センサ３６の検出値に基づいて集合部流入空燃比を推定し、この集合部流入空燃比に基づいて各気筒の気筒別空燃比（気筒別の燃焼空燃比）を推定する。気筒別空燃比の推定手法については既述の通りである。この際、検出空燃比（空燃比センサ３６の検出値）に対してバンドパスフィルタ等の信号処理を施し、該信号処理後の検出空燃比に基づいて各気筒の気筒別空燃比を推定するようにしても良い。
【００８５】
本実施例では、基準クランク角度になる毎に空燃比センサ３６の検出値に基づいて集合部流入空燃比を推定する演算を実行するが、エンジン負荷に応じて基準クランク角度を決定するようにしたので、エンジン負荷に応じた適正なタイミングで空燃比センサ３６の検出値に基づいた集合部流入空燃比の推定を実行することができ、集合部流入空燃比の推定精度を向上させることができる。
【００８６】
また、基準クランク角度になる毎に集合部流入空燃比に基づいて該当する気筒の燃焼空燃比を推定する演算を実行するが、エンジン負荷に応じて基準クランク角度を決定するようにしたので、エンジン負荷に応じた適正なタイミングで集合部流入空燃比に基づいた燃焼空燃比の推定を実行することができ、気筒別空燃比の推定精度を向上させることができる。
【００８７】
尚、排気バルブ２６の開弁時期に応じて基準クランク角度を補正するようにしても良い。このようにすれば、排気バルブ２６の開弁時期に応じて各気筒の燃焼ガスが排気マニホールド３５に流入する時期が変化するのに対応して、基準クランク角度を補正することができ、より適正なタイミングで集合部流入空燃比や燃焼空燃比の推定を実行することができ、集合部流入空燃比や燃焼空燃比の推定精度を向上させることができる。
【００８８】
この後、ステップ３０３に進み、推定した気筒別空燃比の全気筒分（本実施例では過去４気筒分）の平均値を算出し、その平均値を基準空燃比とする。この後、ステップ３０４に進み、気筒毎に気筒別空燃比と基準空燃比との偏差を気筒別空燃比偏差として算出することで各気筒の気筒別空燃比偏差を算出し、気筒毎に気筒別空燃比偏差に基づいて気筒別補正係数を算出することで各気筒の気筒別補正係数を算出する。この際、前記図４で説明したように、全気筒の気筒別補正係数が各々算出されると共に全気筒平均値が算出され、気筒別補正係数から全気筒平均値を減算した値が、最終的に気筒別補正係数とされるようになっている。そして、気筒毎に気筒別補正係数を用いて最終噴射量を補正することで各気筒の空燃比を補正する。
【００８９】
本実施例では、基準クランク角度になる毎に気筒別空燃比に基づいて該当する気筒の気筒別補正係数の演算を実行するが、エンジン負荷に応じて基準クランク角度を決定するようにしたので、エンジン負荷に応じた適正なタイミングで気筒別補正係数を演算して気筒別空燃比制御を実行することができ、気筒別空燃比制御の精度を向上させることができる。
【００９０】
尚、気筒別空燃比と基準空燃比との偏差に対して不感帯を設けた後、気筒毎に気筒別補正係数を算出するようにしても良い。この場合、例えば、気筒別空燃比と基準空燃比との偏差の絶対値が所定の微小値より小さい場合に、前記偏差を「０」として気筒別補正係数を算出することにより、過度な補正を軽減して制御の安定性を向上させることが可能となる。この際、不感帯の幅は、全気筒で同一の値であっても良いし、気筒毎に設定した値であっても良く、更に、エンジン運転状態や空燃比センサ３６の応答特性に応じて変化させるようにしても良い。
【００９１】
以上説明した本実施例１では、各気筒の燃焼ガスの空燃比センサ３６での検出性の差を考慮して、気筒毎に空燃比センサ３６での検出に寄与する集合部流入空燃比（排気集合部３４ａにおける流入ガスの空燃比）を、燃焼空燃比の履歴と空燃比センサ３６での検出に寄与する集合部流入空燃比の履歴とにそれぞれ所定の重みを乗じて加算したものとしてモデル化した第１の排気系モデルと、空燃比センサ３６の検出値を、空燃比センサ３６での検出に寄与する集合部流入空燃比の履歴と空燃比センサ３６の検出値の履歴とにそれぞれ所定の重みを乗じて加算したものとしてモデル化した第２の排気系モデルを予め設計し、第２の排気系モデルに基づいて設計される集合部流入空燃比推定部４７に空燃比センサ３６の検出値を入力することにより、集合部流入空燃比を推定（出力）し、第１の排気系モデルに基づいて設計される燃焼空燃比推定部４８に推定された集合部流入空燃比を入力することにより、各気筒の燃焼空燃比を推定（出力）する。
【００９２】
これにより、各気筒の燃焼ガスの空燃比センサ３６での検出性の差を第１の排気系モデルに基づく燃焼空燃比推定部４８で適切に補償することができ、第２の排気系モデルに基づく集合部流入空燃比推定部４７での推定精度を向上させることができるため、各気筒の空燃比に対する空燃比センサ３６の検出性の差（ばらつき）の影響をあまり受けずに、各気筒の空燃比を精度良く推定することができる。その結果、空燃比制御の制御性や各気筒の空燃比に基づく気筒間空燃比インバランス状態の検出性を向上させることができる。
【００９３】
また、本実施例１では、第１の排気系モデルは、各気筒の燃焼ガスの空燃比センサ３６での検出性の差を考慮して、空燃比センサ３６での検出に寄与する集合部流入空燃比を出力するように構築したので、第２の排気系モデルは、各気筒の燃焼ガスの空燃比センサ３６での検出性の差がないものとして設定することができ、精度良くモデル化することが可能となる。
【００９４】
更に、本実施例１では、第２の排気系モデルは、集合部流入空燃比の履歴と空燃比センサ３６の検出値の履歴にそれぞれ所定の重みを乗じて加算したものを空燃比センサ３６の検出値として出力するように構築したので、排気集合部３４ａにおけるガスの混合に着目したモデルを用いることになり、排気集合部３４ａのガス交換挙動を反映して気筒別空燃比（気筒別の燃焼空燃比）を算出することができる。また、空燃比センサ３６の検出値をその過去の値から予測するモデル（自己回帰モデル）を用いることから、精度向上を図る上で履歴を増やすことを要しない。その結果、簡単なモデルを用いることでモデリングの複雑さを解消し、しかも気筒別空燃比を精度良く推定することができるようになる。
【００９５】
また、本実施例１では、第２の排気系モデルに基づくオブザーバにより集合部流入空燃比の推定を実施するようにしたので、オブザーバを用いることにより対ノイズ性能を向上させることができ、気筒別空燃比の推定精度を向上させることができる。更に、第１の排気系モデルの逆モデルにより燃焼空燃比の推定を実施するようにしたので、集合部流入空燃比から各気筒の燃焼空燃比を容易に推定することができる。
【００９６】
また、本実施例１では、気筒別空燃比推定により推定された各気筒の気筒別空燃比に基づいて気筒毎に気筒間空燃比偏差（気筒間空燃比ばらつき）を算出し、該気筒間空燃比偏差に基づいて気筒毎に気筒別補正係数を算出して、該気筒別補正係数を用いて気筒毎に燃料噴射量を補正する気筒別空燃比制御を実行するようにしたので、各気筒の気筒間空燃比ばらつき（空燃比の気筒間ばらつき）を小さくすることができ、精度の良い空燃比制御を実現することができる。
【００９７】
その際、本実施例１では、気筒別空燃比推定により推定された全気筒の気筒別空燃比の平均値を基準空燃比とし、気筒別空燃比と基準空燃比との偏差を気筒間空燃比偏差として算出するようにしたので、全気筒の気筒別空燃比の平均値を基準にしてリッチ／リーンいずれの方向に空燃比がばらついているかに応じて各気筒の空燃比を気筒毎に補正することができる。
【００９８】
また、本実施例１では、気筒別補正係数の全気筒平均値を算出し、この全気筒平均値だけ各気筒の気筒別補正係数を減算補正するようにしたので、通常の空燃比Ｆ／Ｂ制御との干渉を回避することができる。つまり、通常の空燃比Ｆ／Ｂ制御では、排気集合部３４ａにおける空燃比検出値（空燃比センサ３６の検出値）を目標値に一致させるように空燃比制御を実施するのに対して、気筒別空燃比制御では、各気筒の気筒間空燃比ばらつきを吸収するよう空燃比制御を実施することができる。
【００９９】
更に、本実施例１では、所定条件下（気筒別空燃比推定の実行条件が成立している状態）で気筒別空燃比推定が許可された場合に気筒別空燃比制御を許可するようにしたので、精度良く推定した気筒別空燃比に基づいて気筒別空燃比制御を実行することができ、気筒別空燃比制御の精度を向上させることができる。尚、所定条件下で気筒別空燃比推定が許可されてから所定期間が経過した場合に気筒別空燃比制御を許可するようにしても良い。
【０１００】
ところで、通常の空燃比Ｆ／Ｂ制御では、気筒間空燃比ばらつきが無い状態で最適にマッチングがとられているため、気筒間空燃比ばらつきによってモデル化誤差や外乱が大きくなると、制御の安定性が悪化する可能性がある。
【０１０１】
そこで、気筒別空燃比推定により推定された各気筒の気筒別空燃比に基づいて気筒毎に気筒間空燃比偏差（気筒間空燃比ばらつき）を算出し、該気筒間空燃比偏差に基づいて空燃比Ｆ／Ｂ制御のＦ／Ｂゲインを変化させるようにしても良い。例えば、気筒間空燃比偏差が所定値以上の場合に、空燃比Ｆ／Ｂ制御のＦ／Ｂゲインを減補正する。このようにすれば、気筒間空燃比ばらつきを考慮した空燃比Ｆ／Ｂ制御を実現することができ、空燃比Ｆ／Ｂ制御の安定性を確保することができる。
【実施例２】
【０１０２】
次に、図９乃至図１３を用いて本発明の実施例２を説明する。但し、前記実施例１と実質的に同一部分については説明を省略又は簡略化し、主として前記実施例１と異なる部分について説明する。
【０１０３】
前記実施例１では、空燃比センサ３６の検出値に基づいて気筒別空燃比を推定し、該気筒別空燃比（推定値）に基づいて気筒間の空燃比ばらつきを小さくするように気筒別空燃比制御を実施するようにしたが、エンジン運転状態等によっては気筒別空燃比の推定値が得られない（気筒別空燃比を推定できない又は気筒別空燃比の推定が困難になる）場合もあると考えられる。気筒別空燃比の推定値が得られないと、気筒別空燃比制御を実施できなくなるため、気筒間の空燃比ばらつきが解消できないことが懸念される。例えば、エンジン始動直後や、高回転又は低負荷運転時にはこうした事態が生じる。
【０１０４】
そこで、本実施例２では、ＥＣＵ３９により後述する図９乃至図１１の各ルーチンを実行することで、気筒別空燃比制御の実行中に、気筒別補正係数に基づいて気筒毎に気筒別学習値を算出し、その気筒別学習値をスタンバイＲＡＭやＥＥＰＲＯＭ等のバックアップ用メモリ（ＥＣＵ３９の電源オフ中でも記憶データを保持する書き換え可能なメモリ）に記憶する気筒別学習手段として機能すると共に、各気筒に対する燃料噴射の都度、バックアップ用メモリに記憶された気筒別学習値を気筒別空燃比制御に反映させる学習値反映手段として機能する。
以下、本実施例２でＥＣＵ３９が実行する図９乃至図１１の各ルーチンの処理内容を説明する。
【０１０５】
［気筒別空燃比推定及び気筒別空燃比制御ルーチン］
図９に示す気筒別空燃比推定及び気筒別空燃比制御ルーチンは、前記実施例１で説明した図７のルーチンに置き換えて実行される。尚、本実施例２で実行する図９のルーチンのステップ４０１〜４０４の処理は、図７のルーチンのステップ３０１〜３０４の処理と同じである。
【０１０６】
本ルーチンが起動されると、まず、ステップ４０１で、空燃比センサ３６の検出値を読み込んだ後、ステップ４０２に進み、空燃比センサ３６の検出値に基づいて集合部流入空燃比を推定し、この集合部流入空燃比に基づいて各気筒の気筒別空燃比（気筒別の燃焼空燃比）を推定する。
【０１０７】
この後、ステップ４０３に進み、推定した気筒別空燃比の全気筒分の平均値を基準空燃比として算出した後、ステップ４０４に進み、気筒毎に気筒別空燃比と基準空燃比との偏差を気筒別空燃比偏差として算出することで各気筒の気筒別空燃比偏差を算出し、気筒毎に気筒別空燃比偏差に基づいて気筒別補正係数を算出することで各気筒の気筒別補正係数を算出する。
【０１０８】
この後、ステップ４０５に進み、後述する図１０の気筒別学習値更新ルーチンを実行することで、気筒別補正係数に基づいて気筒毎に気筒別学習値を算出し、その気筒別学習値をバックアップ用メモリステップに記憶する。
【０１０９】
この後、ステップ４０６に進み、後述する図１１の気筒別学習値反映ルーチンを実行することで、各気筒に対する燃料噴射の都度、バックアップ用メモリに記憶された気筒別学習値を気筒別空燃比制御に反映させる。
【０１１０】
［気筒別学習値更新ルーチン］
図１０に示す気筒別学習値更新ルーチンは、前記図９の気筒別空燃比推定及び気筒別空燃比制御ルーチンのステップ４０５で実行されるサブルーチンである。本ルーチンが起動されると、まず、ステップ５０１で、所定の学習実行条件が成立しているか否かを、例えば、次の(1) 〜(3) の条件を全て満たすか否かによって判定する。
【０１１１】
(1) 気筒別空燃比制御の実行中である（つまり気筒別空燃比制御の実行条件が成立している）こと
(2) 冷却水温が所定温度以上（例えばマイナス１０℃以上）であること
(3) 空燃比変動量（空燃比センサ３６の検出値の変動量）が所定値以下であり、空燃比安定条件が成立していること
【０１１２】
ここで、上記(3) の条件について説明する。検出空燃比（空燃比センサ３６の検出値）の今回値と前回値との差ΔＡ／Ｆ１（絶対値）が所定値ＴＨ１未満であり、且つ、検出空燃比の今回値と７２０°ＣＡ前値との差ΔＡ／Ｆ２（絶対値）が所定値ＴＨ２未満である場合に、上記(3) の空燃比安定条件が成立した判定することとしている。
上記(1) 〜(3) の条件を全て満たせば、学習実行条件が成立するが、上記(1) 〜(3) の条件のうちいずれか１つでも満たさない条件があれば、学習実行条件が不成立となる。
【０１１３】
このステップ５０１で、学習実行条件が成立していると判定された場合には気筒別学習値の更新が許可されるが、学習実行条件が不成立と判定された場合には気筒別学習値の更新が禁止される。
【０１１４】
尚、上記(1) 〜(3) の条件以外にも、高回転時や低負荷時など、気筒別空燃比の推定精度が低下すると考えられる条件を設定し、かかる条件下で気筒別学習値の更新を禁止するようにしても良い。以上のように学習実行条件を規定することで、気筒別学習値の誤学習の防止が可能となる。
【０１１５】
このステップ５０１で、学習実行条件が成立していると判定された場合には、ステップ５０２に進み、例えばエンジン回転速度やエンジン負荷をパラメータとして今回学習を実施する学習領域を決定する。その後、ステップ５０３に進み、気筒毎に気筒別補正係数のなまし値を算出する。具体的には、次式を用いて補正係数なまし値を算出する。但し、Ｋはなまし係数であり、例えばＫ＝０．２５である。
補正係数なまし値＝前回のなまし値＋Ｋ×（今回の補正係数−前回のなまし値）
【０１１６】
この後、ステップ５０４に進み、今回の処理が気筒別学習値の更新タイミングであるか否かを判定する。この更新タイミングは、気筒別学習値の更新周期が少なくとも気筒別補正係数の算出周期よりも長くなるよう設定されるものであれば良く、例えば、タイマ等に設定された所定時間が経過した時に更新タイミングである旨判別される。これにより、気筒別学習値の急な更新による誤学習を抑制することができる。
【０１１７】
このステップ５０４で、気筒別学習値の更新タイミングであると判定される毎に、ステップ５０５に進み、前記算出した気筒毎の補正係数なまし値の絶対値が所定値ＴＨＡ以上であるか否かを判定する。この所定値ＴＨＡは、気筒別空燃比（推定値）の全気筒平均値と気筒別空燃比との差が空気過剰率（λ）で０．０１以上となる場合の相当値に設定されている。
【０１１８】
このステップ５０５で、補正係数なまし値（絶対値）≧ＴＨＡであると判定された場合には、ステップ５０６に進み、学習値更新量を算出する。このとき、学習値更新量は、例えば図１２の関係を用い、その時の補正係数なまし値に基づいて算出され、基本的に補正係数なまし値が大きいほど学習値更新量が大きい値とされる。尚、図１２の関係では、補正係数なまし値＜ａでは学習値更新量が０とされ、このａは前記ステップ５０５の所定値ＴＨＡに相当する。この後、ステップ５０７に進み、気筒別学習値の更新処理を実施する。すなわち、気筒別学習値の前回値に学習値更新量を加算し、その結果を新たな気筒別学習値とする。
【０１１９】
一方、上記ステップ５０５で、補正係数なまし値（絶対値）＜ＴＨＡであると判定された場合には、ステップ５０８に進み、学習完了フラグをＯＮにする。
【０１２０】
この後、ステップ５０９に進み、気筒別学習値と学習完了フラグをスタンバイＲＡＭやＥＥＰＲＯＭ等のバックアップ用メモリに記憶する。このとき、気筒別学習値及び学習完了フラグは、複数に区分された運転領域毎に記憶される。その概要を図１３に表す。図１３では、エンジン運転領域を負荷レベル（例えば吸気管圧力ＰＭ）毎に領域０，領域１，領域２，領域３，領域４に区分しており、各領域０〜４毎に気筒別学習値及び学習完了ラグが記憶されることを表している。領域０は学習未完了、領域１〜４は学習完了の状態であり、領域１〜４の気筒別学習値をそれぞれＬＲＮ１，ＬＲＮ２，ＬＲＮ３，ＬＲＮ４としている。また、各領域０〜４の領域中心負荷、すなわち領域を代表する負荷を、それぞれＰＭ０，ＰＭ１，ＰＭ２，ＰＭ３，ＰＭ４としている。領域区分には、負荷以外にも、エンジン回転速度、冷却水温、吸入空気量、要求噴射量等を適宜用いることができる。
【０１２１】
［気筒別学習値反映ルーチン］
図１１に示す気筒別学習値反映ルーチンは、前記図９の気筒別空燃比推定及び気筒別空燃比制御ルーチンのステップ４０６で実行されるサブルーチンである。本ルーチンが起動されると、まず、ステップ６０１で、その時のエンジン運転状態に基づいて学習反映値を算出する。このとき、学習反映値は、前記図１３のように運転領域毎に記憶保持された気筒別学習値を用い、それら領域間の気筒別学習値の線形補間により求められる。学習反映値の求め方を図１３を用いて説明する。
【０１２２】
一例として、その時の負荷が「ＰＭａ」である場合、領域２，３の気筒別学習値ＬＲＮ２，ＬＲＮ３と、領域２，３の中心負荷であるＰＭ２，ＰＭ３とを用い、次の（７）式により学習反映値ＦＬＲＮを算出する。
【０１２３】
【数１】
0005660319.tif 000002
【０１２４】
尚、予め設定された領域外（学習非実行領域）では、領域境界部に相当する気筒別学習値を用いて学習反映値が算出されると良い。例えば、図１３において、領域０〜４が学習実行領域であり、その外側が学習非実行領域であれば、領域０，４の気筒別学習値を用いて学習非実行領域の学習反映値を算出する。これにより、例えば高回転・高負荷領域等の学習非実行領域であっても気筒別学習値の反映が可能となる。
【０１２５】
この後、ステップ６０２に進み、前記算出した学習反映値を最終の燃料噴射量ＴＡＵに反映させる。具体的には、基本噴射量ＴＰ、空燃比補正係数ＦＡＦ、気筒別補正係数ＦＫ、学習反映値ＦＬＲＮ、その他の補正係数ＦＡＬＬを用いて、燃料噴射量ＴＡＵを次式により算出する。
【０１２６】
ＴＡＵ＝ＴＰ×ＦＡＦ×ＦＫ×ＦＬＲＮ×ＦＡＬＬ
なおこのとき、ＦＡＦ補正と学習補正とが干渉しないように、空燃比補正係数ＦＡＦを学習反映値ＦＬＲＮ分だけ減補正すると良い。
【０１２７】
以上説明した本実施例２では、気筒別空燃比制御の実行中に、気筒別補正係数に基づいて気筒毎に気筒別学習値を算出し、その気筒別学習値をバックアップ用メモリに記憶するようにしたので、気筒別空燃比の推定値が得られない場合でも、気筒別学習値を用いることで気筒別空燃比制御を実行することが可能となり、各気筒の気筒間空燃比ばらつきを小さくすることができる。
【０１２８】
しかも、本実施例２では、エンジン１１の運転領域を複数に区分して、その区分した運転領域毎に気筒別学習値を算出してバックアップ用メモリに記憶するようにしたので、気筒別空燃比の推定値が得られない場合でも、高精度な気筒別空燃比制御の実現が可能となる。
【０１２９】
また、本実施例２では、気筒別補正係数が所定値ＴＨＡ以上である場合にのみ気筒別学習値を更新するようにしたので、気筒別学習値の更新に不感帯を設けて、気筒別補正値が所定値ＴＨＡ未満であれば、気筒別学習値を更新しないようにすることができ、気筒別学習値の誤学習の防止を図ることができる。
【０１３０】
更に、本実施例２では、気筒別学習値の１回当たりの更新幅（学習値更新量）がその都度の気筒別補正係数に応じて可変設定されるため、気筒別補正係数が大きい（すなわち気筒間における空燃比ばらつきが大きい）場合であっても、比較的短時間で学習を完了することができる。また、気筒間における空燃比ばらつきが解消され、気筒別補正係数が小さくなる場合には、小刻みにすなわち慎重に気筒別学習値を更新することができるため、学習の精度を高めることができる。
【０１３１】
また、本実施例２では、バックアップ用メモリに記憶された気筒別学習値に基づいて学習反映値を算出し、その学習反映値を気筒別空燃比制御に反映させるようにしたので、気筒間空燃比ばらつきが小さい高精度な気筒別空燃比制御を実現することができる。
【０１３２】
尚、上記各実施例１，２では、エンジン１１の全気筒に対して１つの気筒別空燃比推定部４３を備えた構成（図２参照）としたが、これに限定されず、例えば、図１４に示すように、エンジン１１の気筒毎（又は気筒群毎）に気筒別空燃比推定部４３を備えた構成としても良い。このようにすれば、第１の排気系モデルだけでなく第２の排気系モデルも気筒毎（又は気筒群毎）の挙動の違いを考慮して設定することが可能となる。これにより、各気筒の燃焼間隔が不等間隔であったり、各気筒の排気管長が不等長の排気系であったり、全気筒（バンク毎）の排気管が集合する部分よりも上流側で複数気筒の排気管が集合する排気系の内燃機関の場合でも、気筒別空燃比を推定するためのモデルを不等間隔燃焼や不等長排気系の影響を考慮して気筒毎（又は気筒群毎）に別々にモデル化できるため、気筒別空燃比を精度良く推定することができる。
【０１３３】
また、上記各実施例１，２では、１つの気筒毎に第１の排気系モデルを設定するようにしたが、これに限定されず、複数の気筒毎に第１の排気系モデルを設定するようにしても良い。
【０１３４】
また、上記各実施例１，２では、排出ガスセンサとして、排出ガスの空燃比を検出する空燃比センサを用いたシステムに本発明を適用したが、これに限定されず、排出ガスセンサとして、排出ガスの空燃比のリッチ／リーンを検出する酸素センサを用いたシステムに本発明を適用しても良い。
【０１３５】
更に、上記各実施例１，２では、各気筒の排出ガスが合流して流れる排気集合部のうちの触媒の上流側に配置した排出ガスセンサの検出値に基づいて気筒別空燃比推定を実行するようにしたが、これに限定されず、排気集合部のうちの他の位置（例えば、触媒の下流側や排気タービンの下流側等）に配置した排出ガスセンサの検出値に基づいて気筒別空燃比推定を実行するようにしても良い。
【０１３６】
また、上記各実施例１，２では、気筒別空燃比制御の際に、各気筒の気筒別空燃比に基づいて気筒毎に燃料噴射量を補正するようにしたが、これに限定されず、例えば、各気筒の気筒別空燃比に基づいて気筒毎に吸入空気量を補正するようにしても良く、何れにしても空燃比が精度良くＦ／Ｂ制御されるものであれば良い。
【０１３７】
その他、本発明は、図１に示すような吸気ポート噴射式エンジンに限定されず、筒内噴射式エンジンや、吸気ポート噴射用の燃料噴射弁と筒内噴射用の燃料噴射弁の両方を備えたデュアル噴射式のエンジンにも適用して実施できる。
【０１３８】
また、複数の気筒ずつで排気通路が集合される構成とした多気筒内燃機関であれば、任意の型式のエンジンに本発明を適用できる。例えば、６気筒エンジンにおいて３気筒ずつ二つに分けて排気系が構成される場合、各排気系の排気集合部にそれぞれ排出ガスセンサを設定して、各排気系でそれぞれ排出ガスセンサの検出値に基づいて気筒別空燃比推定や気筒別空燃比制御を実行するようにしても良い。
【符号の説明】
【０１３９】
１１…エンジン（内燃機関）、１２…吸気管、１５…スロットルバルブ、２０…燃料噴射弁、３３…クランク角センサ、３４…排気管、３４ａ…排気集合部、３５…排気マニホールド、３６…空燃比センサ（排出ガスセンサ）、３９…ＥＣＵ（空燃比フィードバック制御手段，気筒別空燃比推定手段，気筒別空燃比制御手段，気筒別学習手段，学習値反映手段）、４０…空燃比偏差算出部、４１…空燃比Ｆ／Ｂ制御部、４２…噴射量算出部、４３…気筒別空燃比推定部、４４…基準空燃比算出部、４５…気筒別空燃比偏差算出部、４６…気筒別空燃比制御部、４７…集合部流入空燃比推定部（集合部流入空燃比推定手段）、４８…燃焼空燃比推定部（燃焼空燃比推定手段）
【図１】
0005660319.tif 000003
【図２】
0005660319.tif 000004
【図３】
0005660319.tif 000005
【図４】
0005660319.tif 000006
【図５】
0005660319.tif 000007
【図６】
0005660319.tif 000008
【図７】
0005660319.tif 000009
【図８】
0005660319.tif 000010
【図９】
0005660319.tif 000011
【図１０】
0005660319.tif 000012
【図１１】
0005660319.tif 000013
【図１２】
0005660319.tif 000014
【図１３】
0005660319.tif 000015
【図１４】
0005660319.tif 000016