(57)【要約】【課題】気筒別空燃比制御を行うシステムにおいて、排気流速の変化による空燃比検出タイミング（空燃比センサ出力のサンプルタイミング）のずれを抑制できるようにする。【解決手段】エンジン１１の各気筒の空燃比検出タイミング毎に検出された空燃比センサ３６の検出値に基づいて各気筒の空燃比を推定し、各気筒の推定空燃比に基づいて各気筒の空燃比を制御する気筒別空燃比制御を実行する。その際、排気流速が変化する要因となる運転条件である排気流速変化要因（点火時期と燃料噴射時期と負荷変化量）に応じて空燃比検出タイミングを補正する。これにより、排気流速変化要因に応じて、排気流速が変化して、空燃比センサ３６の出力波形の位相が変化する（つまり各気筒の適正な空燃比検出タイミングが変化する）のに対応して、空燃比検出タイミングを補正して、各気筒の空燃比検出タイミングが適正な空燃比検出タイミングからずれることを抑制する。【選択図】図１
2016044575.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関（１１）の各気筒の排出ガスが合流して流れる排気集合部（３４ａ）に該排出ガスの空燃比を検出する空燃比センサ（３６）を設置し、前記内燃機関（１１）の負荷と回転速度のうちの少なくとも一方に応じて前記各気筒の空燃比検出タイミングを設定する空燃比検出タイミング設定手段（３９）と、前記各気筒の空燃比検出タイミング毎に検出された前記空燃比センサ（３６）の検出値に基づいて前記各気筒の空燃比を推定する気筒別空燃比推定手段（３９）と、前記各気筒の推定空燃比に基づいて前記各気筒の空燃比を制御する気筒別空燃比制御手段（３９）とを備えた内燃機関の気筒別空燃比制御装置において、
前記空燃比検出タイミング設定手段（３９）は、前記内燃機関（１１）の排気流速が変化する要因となる運転条件（以下「排気流速変化要因」という）に応じて前記空燃比検出タイミングを補正することを特徴とする内燃機関の気筒別空燃比制御装置。
【請求項２】
前記空燃比検出タイミング設定手段（３９）は、前記排気流速変化要因として前記内燃機関（１１）の点火時期を用い、該点火時期に応じて前記空燃比検出タイミングを補正することを特徴とする請求項１に記載の内燃機関の気筒別空燃比制御装置。
【請求項３】
前記空燃比検出タイミング設定手段（３９）は、前記排気流速変化要因として前記内燃機関（１１）の燃料噴射時期を用い、該燃料噴射時期に応じて前記空燃比検出タイミングを補正することを特徴とする請求項１又は２に記載の内燃機関の気筒別空燃比制御装置。
【請求項４】
前記空燃比検出タイミング設定手段（３９）は、前記排気流速変化要因として前記内燃機関（１１）の負荷の変化量を用い、該負荷の変化量に応じて前記空燃比検出タイミングを補正することを特徴とする請求項１乃至３のいずれかに記載の内燃機関の気筒別空燃比制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の各気筒の空燃比を推定し、その推定空燃比に基づいて各気筒の空燃比を制御する内燃機関の気筒別空燃比制御装置に関する発明である。
【背景技術】
【０００２】
内燃機関の気筒間の空燃比ばらつきを小さくする技術として、例えば、特許文献１（特開２０１３−２５３５９３号公報）に記載されているように、内燃機関の排気集合部に設置した空燃比センサの検出値に基づいて各気筒の空燃比を推定し、各気筒の推定空燃比に基づいて各気筒の空燃比を制御する気筒別空燃比制御を行うようにしたものがある。その際、各気筒から排出される排出ガスが空燃比センサ付近に到達してその空燃比が検出されるまでの遅れ（排気系の応答遅れ）が内燃機関の負荷や回転速度によって変化することを考慮して、負荷や回転速度に応じて各気筒の空燃比検出タイミング（空燃比センサ出力のサンプルタイミング）を設定するようにしている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−２５３５９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、内燃機関の負荷や回転速度以外の運転条件（例えば点火時期等）によって排気流速が変化することがあり、排気流速が変化すると、それに伴って排気系の応答遅れが変化して、空燃比センサの出力波形の位相が変化するため、各気筒の適正な空燃比検出タイミングも変化する。
【０００５】
このため、気筒別空燃比制御の際に、内燃機関の負荷や回転速度に応じて各気筒の空燃比検出タイミングを設定しても、負荷や回転速度以外の運転条件によって排気流速が変化すると、各気筒の空燃比検出タイミングが適正な空燃比検出タイミングからずれる可能性がある。各気筒の空燃比検出タイミングがずれると、各気筒の空燃比の推定精度が低下して、各気筒の空燃比を正しく制御する（気筒間の空燃比ばらつきを小さくするように制御する）ことが困難になる。
【０００６】
そこで、本発明が解決しようとする課題は、内燃機関の排気流速の変化による空燃比検出タイミングのずれを抑制することができる内燃機関の気筒別空燃比制御装置を提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、請求項１に係る発明は、内燃機関（１１）の各気筒の排出ガスが合流して流れる排気集合部（３４ａ）に該排出ガスの空燃比を検出する空燃比センサ（３６）を設置し、内燃機関（１１）の負荷と回転速度のうちの少なくとも一方に応じて各気筒の空燃比検出タイミングを設定する空燃比検出タイミング設定手段（３９）と、各気筒の空燃比検出タイミング毎に検出された空燃比センサ（３６）の検出値に基づいて各気筒の空燃比を推定する気筒別空燃比推定手段（３９）と、各気筒の推定空燃比に基づいて各気筒の空燃比を制御する気筒別空燃比制御手段（３９）とを備えた内燃機関の気筒別空燃比制御装置において、空燃比検出タイミング設定手段（３９）は、内燃機関（１１）の排気流速が変化する要因となる運転条件（以下「排気流速変化要因」という）に応じて空燃比検出タイミングを補正するようにしたものである。
【０００８】
この構成では、排気流速変化要因に応じて、排気流速が変化して、空燃比センサの出力波形の位相が変化する（つまり各気筒の適正な空燃比検出タイミングが変化する）のに対応して、空燃比検出タイミングを補正することができ、各気筒の空燃比検出タイミングが適正な空燃比検出タイミングからずれることを抑制することができる。これにより、内燃機関の負荷や回転速度以外の運転条件によって排気流速が変化しても、その排気流速の変化による空燃比検出タイミングのずれを抑制することができるため、各気筒の空燃比の推定精度の低下を抑制することができ、各気筒の空燃比を正しく制御する（気筒間の空燃比ばらつきを小さくするように制御する）ことができる。
【図面の簡単な説明】
【０００９】
【図１】図１は本発明の一実施例におけるエンジン制御システムの概略構成を示す図である。
【図２】図２は空燃比制御機能を説明するブロック図である。
【図３】図３は気筒別空燃比制御ルーチンの処理の流れを示すフローチャートである。
【図４】図４は空燃比検出タイミング設定ルーチンの処理の流れを示すフローチャートである。
【図５】図５はベース空燃比検出タイミングＳb のマップの一例を概念的に示す図である。
【図６】図６は点火時期に応じた補正量Ｓ1 のマップの一例を概念的に示す図である。
【図７】図７は燃料噴射時期に応じた補正量Ｓ2 のマップの一例を概念的に示す図である。
【図８】図８は負荷変化量に応じた補正量Ｓ3 のマップの一例を概念的に示す図である。
【図９】図９は点火時期に応じた空燃比検出タイミング補正の実行例を示すタイムチャートである。
【図１０】図１０は燃料噴射時期に応じた空燃比検出タイミング補正の実行例を示すタイムチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための形態を具体化した一実施例を説明する。
まず、図１に基づいてエンジン制御システム全体の概略構成を説明する。
内燃機関である例えば直列４気筒のエンジン１１は、第１気筒＃１〜第４気筒＃４の四つの気筒を有し、このエンジン１１の吸気管１２の最上流部には、エアクリーナ１３が設けられ、このエアクリーナ１３の下流側に、吸入空気量を検出するエアフローメータ１４が設けられている。このエアフローメータ１４の下流側には、モータ等によって開度調節されるスロットルバルブ１５と、このスロットルバルブ１５の開度（スロットル開度）を検出するスロットル開度センサ１６とが設けられている。
【００１１】
更に、スロットルバルブ１５の下流側には、サージタンク１７が設けられ、このサージタンク１７には、吸気管圧力を検出する吸気管圧力センサ１８が設けられている。また、サージタンク１７には、エンジン１１の各気筒に空気を導入する吸気マニホールド１９が設けられ、各気筒の吸気マニホールド１９に接続された吸気ポート又はその近傍に、それぞれ吸気ポートに燃料を噴射する燃料噴射弁２０が取り付けられている。或は、エンジン１１の各気筒に、それぞれ筒内に燃料を直接噴射する燃料噴射弁２０が取り付けられているようにしても良い。エンジン運転中は、燃料タンク２１内の燃料が燃料ポンプ２２によりデリバリパイプ２３に送られ、各気筒の噴射タイミング毎に各気筒の燃料噴射弁２０から燃料が噴射される。デリバリパイプ２３には、燃料圧力（燃圧）を検出する燃圧センサ２４が取り付けられている。
【００１２】
また、エンジン１１には、吸気バルブ２５と排気バルブ２６のバルブタイミング（開閉タイミング）をそれぞれ変化させる可変バルブタイミング機構２７，２８が設けられている。更に、エンジン１１には、吸気カム軸２９と排気カム軸３０の回転に同期してカム角信号を出力する吸気カム角センサ３１と排気カム角センサ３２が設けられていると共に、エンジン１１のクランク軸の回転に同期して所定クランク角毎（例えば３０ＣＡ毎）にクランク角信号のパルスを出力するクランク角センサ３３が設けられている。
【００１３】
一方、エンジン１１の排気管３４のうちの各気筒の排出ガスが合流して流れる排気集合部３４ａ（各気筒の排気マニホールド３５が集合する部分又はそれよりも下流側）には、排出ガスの空燃比を検出する空燃比センサ３６が設けられている。この空燃比センサ３６の下流側に、排出ガス中のＣＯ，ＨＣ，ＮＯX 等を浄化する三元触媒等の触媒３７が設けられている。また、エンジン１１のシリンダブロックには、冷却水温を検出する冷却水温センサ３８が取り付けられている。
【００１４】
これら各種センサの出力は、電子制御ユニット（以下「ＥＣＵ」と表記する）３９に入力される。このＥＣＵ３９は、マイクロコンピュータを主体として構成され、内蔵されたＲＯＭ（記憶媒体）に記憶された各種のエンジン制御用のプログラムを実行することで、エンジン運転状態に応じて、燃料噴射量、燃料噴射時期、点火時期、スロットル開度（吸入空気量）等を制御する。
【００１５】
その際、ＥＣＵ３９は、所定の空燃比Ｆ／Ｂ制御実行条件が成立したときに、空燃比センサ３６の出力に基づいて排出ガスの空燃比を目標空燃比に一致させるように混合気の空燃比（例えば燃料噴射量）をＦ／Ｂ制御する空燃比Ｆ／Ｂ制御を実行する。ここで、「Ｆ／Ｂ」は「フィードバック」を意味する（以下、同様）。
【００１６】
具体的には、図２に示すように、まず、空燃比偏差算出部４０で、検出空燃比（空燃比センサ３６で検出した排出ガスの空燃比）と目標空燃比との偏差を算出し、空燃比Ｆ／Ｂ制御部４１で、検出空燃比と目標空燃比との偏差が小さくなるように空燃比補正係数を算出する。そして、噴射量算出部４２で、エンジン回転速度やエンジン負荷（吸気管負圧や吸入空気量等）に基づいて算出されたベース噴射量や空燃比補正係数等に基づいて燃料噴射量を算出し、その燃料噴射量に基づいて各気筒の燃料噴射弁２０を制御する。
【００１７】
更に、ＥＣＵ３９は、後述する図３の気筒別空燃比制御ルーチンを実行することで、各気筒の空燃比検出タイミング毎に検出された空燃比センサ３６の検出値に基づいて各気筒の空燃比を気筒毎に推定する気筒別空燃比推定を実行し、各気筒の推定空燃比に基づいて各気筒の空燃比を気筒毎に制御する気筒別空燃比制御を実行する。
【００１８】
具体的には、図２に示すように、まず、気筒別空燃比推定部４３で、後述する気筒別空燃比推定モデルを用いて空燃比センサ３６の検出値（排気集合部３４ａを流れる排出ガスの実空燃比）に基づいて各気筒の空燃比を気筒毎に推定し、基準空燃比算出部４４で、全気筒の推定空燃比の平均値を算出して、その平均値を基準空燃比に設定する。この後、気筒別空燃比偏差算出部４５で、各気筒の推定空燃比と基準空燃比との偏差を気筒毎に算出し、気筒別空燃比制御部４６で、各気筒の推定空燃比と基準空燃比との偏差が小さくなるように気筒別補正値として例えば燃料補正量（燃料噴射量の補正量）を気筒毎に算出する。その算出結果に基づいて各気筒の燃料噴射量を気筒毎に補正することで、各気筒に供給する混合気の空燃比を気筒毎に補正して気筒間の空燃比ばらつきを小さくする。
【００１９】
ここで、空燃比センサ３６の検出値（排気集合部３４ａを流れる排出ガスの実空燃比）に基づいて各気筒の空燃比を推定するモデル（以下「気筒別空燃比推定モデル」という）の具体例を説明する。
【００２０】
排気集合部３４ａにおけるガス交換に着目して、空燃比センサ３６の検出値を、排気集合部３４ａにおける各気筒の推定空燃比の履歴と空燃比センサ３６の検出値の履歴とにそれぞれ所定の重みを乗じて加算したものとしてモデル化し、このモデルを用いて各気筒の空燃比を推定するようにしている。この際、オブザーバとしてはカルマンフィルタを用いる。
【００２１】
より具体的には、排気集合部３４ａにおけるガス交換のモデルを次の（１）式にて近似する。
ｙs(t)＝ｋ1 ×ｕ(t-1) ＋ｋ2 ×ｕ(t-2) −ｋ3 ×ｙs(t-1)−ｋ4 ×ｙs(t-2)
……（１）
ここで、ｙs は空燃比センサ３６の検出値、ｕは排気集合部３４ａに流入するガスの空燃比、ｋ1 〜ｋ4 は定数である。
【００２２】
排気系では、排気集合部３４ａにおけるガス流入及び混合の一次遅れ要素と、空燃比センサ３６の応答遅れによる一次遅れ要素とが存在する。そこで、上記（１）式では、これらの一次遅れ要素を考慮して過去２回分の履歴を参照することとしている。
【００２３】
上記（１）式を状態空間モデルに変換すると、次の（２ａ）、（２ｂ）式が導き出される。
Ｘ(t+1) ＝Ａ・Ｘ(t) ＋Ｂ・ｕ(t) ＋Ｗ(t)       ……（２ａ）
Ｙ(t) ＝Ｃ・Ｘ(t) ＋Ｄ・ｕ(t)                 ……（２ｂ）
ここで、Ａ，Ｂ，Ｃ，Ｄはモデルのパラメータ、Ｙは空燃比センサ３６の検出値、Ｘは状態変数としての各気筒の推定空燃比、Ｗはノイズである。
【００２４】
更に、上記（２ａ）、（２ｂ）式によりカルマンフィルタを設計すると、次の（３）式が得られる。
Ｘ＾(k+1｜k)＝Ａ・Ｘ＾(k｜k-1)＋Ｋ｛Ｙ(k) −Ｃ・Ａ・Ｘ＾(k｜k-1)｝  ……（３）  ここで、Ｘ＾（エックスハット）は各気筒の推定空燃比、Ｋはカルマンゲインである。Ｘ＾(k+1｜k)の意味は、時間(k) の推定値により次の時間(k+1) の推定値を求めることを表す。
【００２５】
以上のようにして、気筒別空燃比推定モデルをカルマンフィルタ型オブザーバにて構成することにより、燃焼サイクルの進行に伴って各気筒の空燃比を順次推定することができる。
【００２６】
次に、各気筒の空燃比検出タイミング（空燃比センサ３６の出力のサンプルタイミング）の設定方法について説明する。各気筒から排出される排出ガスが空燃比センサ３６付近に到達してその空燃比が検出されるまでの遅れ（以下「排気系の応答遅れ」という）がエンジン運転状態によって変化する。これを考慮して、本実施例では、エンジン運転状態（例えばエンジン回転速度や負荷）に応じてマップにより各気筒の空燃比検出タイミングを設定し、空燃比センサ３６の出力をＥＣＵ３９に取り込むようにしている。一般に、エンジン１１の負荷が小さくなるほど、排気系の応答遅れが大きくなるため、各気筒の空燃比検出タイミングは、エンジン１１の負荷が小さくなるほど、遅角側にシフトされるように設定されている。
【００２７】
しかしながら、各気筒の排気ポートから空燃比センサ３６までの排気マニホールド３５の長さが各気筒毎に異なると共に、各気筒の排出ガスの流れがエンジン運転状態（エンジン回転速度や筒内充填空気量等）によって複雑に変化する。しかも、エンジン１１の製造ばらつきや経年変化によっても排気系の応答遅れが変化するため、エンジン設計・製造過程で、各気筒の排気系の応答遅れ（各気筒の空燃比検出タイミング）と負荷との関係を精度良くマップ化しておくことは困難である。このため、各気筒の空燃比検出タイミングが適正な空燃比検出タイミングからずれる可能性がある。
【００２８】
そこで、ＥＣＵ３９は、気筒別空燃比制御中に推定空燃比に基づいて空燃比検出タイミングのずれの有無を判定する空燃比検出タイミング判定を行い、空燃比検出タイミングのずれ有りと判定されたときに空燃比検出タイミングを補正する。
【００２９】
例えば、エンジン１１の１サイクル（７２０ＣＡ）内で空燃比センサ３６の検出値のばらつき（変動）が最大となるように空燃比検出タイミングを補正するＬｏｃａｌ学習を実行する。このＬｏｃａｌ学習の実行後に、気筒別空燃比制御中に少なくとも一つの気筒の推定空燃比の変化とその気筒の気筒別補正値（例えば燃料補正量）の変化との関係に基づいて空燃比検出タイミングを補正するＧｌｏｂａｌ学習を実行する。このＧｌｏｂａｌ学習では、各気筒の推定空燃比が想定している各気筒番号を仮想的に複数通り変更した場合の各々において少なくとも一つの気筒の推定空燃比の変化とその推定空燃比の変更後の気筒番号の気筒別補正値の変化との相関値を算出し、この相関値が最大となるように空燃比検出タイミングを補正する。
【００３０】
或は、Ｌｏｃａｌ学習の実行後（つまりＬｏｃａｌ学習により空燃比検出タイミングが補正された後）、空燃比検出タイミングがずれていると判定される毎に該空燃比検出タイミングをエンジン１１の燃焼間隔（４気筒の場合には１８０ＣＡ）又はその複数倍ずつ補正するＧｌｏｂａｌ学習を実行することで、各気筒の空燃比検出タイミングを他の気筒の空燃比検出タイミングと入れ替えて、各気筒の空燃比検出タイミングを正しい空燃比検出タイミングに補正するようにしても良い。
【００３１】
ところで、エンジン１１負荷や回転速度以外の運転条件（例えば点火時期等）によって排気流速が変化することがあり、排気流速が変化すると、それに伴って排気系の応答遅れが変化して、空燃比センサ３６の出力波形の位相が変化するため、各気筒の適正な空燃比検出タイミングも変化する。
【００３２】
このため、気筒別空燃比制御の際に、エンジン１１の負荷や回転速度に応じて各気筒の空燃比検出タイミングを設定しても、負荷や回転速度以外の運転条件によって排気流速が変化すると、各気筒の空燃比検出タイミングが適正な空燃比検出タイミングからずれる可能性がある。各気筒の空燃比検出タイミングがずれると、各気筒の空燃比の推定精度が低下して、各気筒の空燃比を正しく制御する（気筒間の空燃比ばらつきを小さくするように制御する）ことが困難になる。
【００３３】
この対策として、本実施例では、ＥＣＵ３９により後述する図４の空燃比検出タイミング設定ルーチンを実行することで、エンジン１１の排気流速が変化する要因となる運転条件（以下「排気流速変化要因」という）に応じて空燃比検出タイミングを補正するようにしている。
【００３４】
このようにすれば、排気流速変化要因に応じて、排気流速が変化して、空燃比センサ３６の出力波形の位相が変化する（つまり各気筒の適正な空燃比検出タイミングが変化する）のに対応して、空燃比検出タイミングを補正することができ、各気筒の空燃比検出タイミングが適正な空燃比検出タイミングからずれることを抑制することができる。
【００３５】
本実施例では、排気流速変化要因として、エンジン１１の点火時期と燃料噴射時期と負荷の変化量とを用い、これらの点火時期と燃料噴射時期と負荷の変化量とに応じて空燃比検出タイミングを補正するようにしている。
【００３６】
点火時期（例えばベース点火時期からの遅角量）が変化すると、燃焼タイミングの変化により排気圧が変化して、排気流速が変化するため、点火時期は、排気流速変化要因となる。
【００３７】
また、燃料噴射時期が変化する（例えば吸気行程噴射と圧縮行程噴射との間で切り換わる）と、燃焼状態が変化して、排気流速が変化するため、燃料噴射時期は、排気流速変化要因となる。
【００３８】
更に、負荷の変化量（例えば吸入空気量の所定期間の変化量）が変化すると、排出ガス量の所定期間の変化量が変化して、排気流速が変化するため、負荷の変化量は、排気流速変化要因となる。
以下、本実施例でＥＣＵ３９が実行する図３及び図４の各ルーチンの処理内容を説明する。
【００３９】
［気筒別空燃比制御ルーチン］
図３に示す気筒別空燃比制御ルーチンは、クランク角センサ３３の出力パルスに同期して所定クランク角毎（例えば３０ＣＡ毎）に起動され、特許請求の範囲でいう気筒別空燃比制御手段としての役割を果たす。
【００４０】
本ルーチンが起動されると、まず、ステップ１０１で、気筒別空燃比制御の実行条件が成立しているか否かを判定する。この気筒別空燃比制御の実行条件としては、例えば、次の条件(1) 〜(3) がある。
(1) 空燃比センサ３６が活性状態であること
(2) 空燃比センサ３６が異常（故障）と判定されていないこと
(3) エンジン運転領域（例えばエンジン回転速度と吸気管圧力）が空燃比推定精度を確保できる運転領域であること
【００４１】
これら三つの条件(1) 〜(3) を全て満したときに気筒別空燃比制御の実行条件が成立し、いずれか１つでも満たさない条件があれば、実行条件が不成立となる。実行条件が不成立の場合は、ステップ１０２以降の処理を行うことなく、本ルーチンを終了する。
【００４２】
一方、実行条件が成立している場合は、ステップ１０２に進み、後述する図４の空燃比検出タイミング設定ルーチンを実行して、各気筒の空燃比検出タイミング（空燃比センサ３６の出力のサンプルタイミング）を設定する。
【００４３】
この後、ステップ１０３に進み、現在のクランク角が上記ステップ１０２で設定した空燃比検出タイミングであるか否かを判定し、空燃比検出タイミングでなければ、以降の処理を行うことなく、本ルーチンを終了する。
【００４４】
これに対して、現在のクランク角が上記ステップ１０２で設定した空燃比検出タイミングであれば、ステップ１０４に進み、空燃比センサ３６の出力（空燃比検出値）を読み込む。
【００４５】
この後、ステップ１０５に進み、前記気筒別空燃比推定モデルを用いて今回の空燃比推定対象となる気筒の空燃比を空燃比センサ３６の検出値に基づいて推定する。このステップ１０５の処理が特許請求の範囲でいう気筒別空燃比推定手段としての役割を果たす。
【００４６】
この後、ステップ１０６に進み、全気筒の推定空燃比の平均値を算出して、その平均値を基準空燃比（全気筒の目標空燃比）に設定する。
この後、ステップ１０７に進み、各気筒の推定空燃比と基準空燃比との偏差を算出して、その偏差が小さくなるように各気筒の気筒別補正値として燃料補正量を算出する。
【００４７】
この後、ステップ１０８に進み、各気筒の燃料補正量に基づいて各気筒の燃料噴射量を補正することで、各気筒に供給する混合気の空燃比を各気筒毎に補正して気筒間の空燃比ばらつきを小さくするように制御する。
【００４８】
［空燃比検出タイミング設定ルーチン］
図４に示す空燃比検出タイミング設定ルーチンは、前記図３の気筒別空燃比制御ルーチンのステップ１０２で実行されるサブルーチンであり、特許請求の範囲でいう空燃比検出タイミング設定手段としての役割を果たす。
【００４９】
本ルーチンが起動されると、まず、ステップ２０１で、各種センサの出力やＥＣＵ３９の演算情報（例えば点火時期や燃料噴射時期等）を読み込む。
この後、ステップ２０２に進み、現在のエンジン１１の負荷（例えば吸気管圧力）に応じて各気筒のベース空燃比検出タイミングＳb をマップ（図５参照）により算出する。尚、エンジン回転速度と負荷に応じて各気筒のベース空燃比検出タイミングＳb をマップにより算出するようにしても良い。このベース空燃比検出タイミングＳb を算出するマップは、図示しない空燃比検出タイミングずれ学習補正用のルーチン（例えばＬｏｃａｌ学習実行ルーチンやＧｌｏｂａｌ学習実行ルーチン）によって学習補正される。
【００５０】
この後、ステップ２０３に進み、図６に示す点火時期に応じた補正量Ｓ1 のマップを参照して、現在の点火時期（例えばベース点火時期からの遅角量）に応じた補正量Ｓ1 を算出する。図６の補正量Ｓ1 のマップは、点火時期が遅角側になる（つまりベース点火時期からの遅角量が大きくなる）ほど補正量Ｓ1 が小さくなる（空燃比検出タイミングの進角量が大きくなる）ように設定されている。この補正量Ｓ1 のマップは、予め試験や設計データ等に基づいて作成され、ＥＣＵ３９のＲＯＭに記憶されている。
【００５１】
この後、ステップ２０４に進み、図７に示す燃料噴射時期に応じた補正量Ｓ2 のマップを参照して、現在の燃料噴射時期に応じた補正量Ｓ2 を算出する。図７の補正量Ｓ2 のマップは、燃料噴射時期が吸気行程の場合よりも圧縮行程の場合の方が補正量Ｓ2 が小さくなる（空燃比検出タイミングの進角量が大きくなる）ように設定されている。この補正量Ｓ2 のマップは、予め試験や設計データ等に基づいて作成され、ＥＣＵ３９のＲＯＭに記憶されている。
【００５２】
この後、ステップ２０５に進み、図８に示す負荷変化量に応じた補正量Ｓ3 のマップを参照して、現在の負荷変化量に応じた補正量Ｓ3 を算出する。ここで、負荷変化量は、例えば、吸入空気量ＧＮの所定期間（例えばＴＤＣ間）の変化量ｄＧＮである。図８の補正量Ｓ3 のマップは、負荷変化量が大きくなるほど補正量Ｓ3 が大きくなる（空燃比検出タイミングの遅角量が大きくなる）ように設定されている。この補正量Ｓ3 のマップは、予め試験や設計データ等に基づいて作成され、ＥＣＵ３９のＲＯＭに記憶されている。
【００５３】
この後、ステップ２０６に進み、各補正量Ｓ1 〜Ｓ3 を用いてベース空燃比検出タイミングＳb を補正して最終的な空燃比検出タイミングＳを求める。これにより、点火時期と燃料噴射時期と負荷変化量に応じて空燃比検出タイミングを補正する。
Ｓ＝Ｓb ＋Ｓ1 ＋Ｓ2 ＋Ｓ3
【００５４】
以上説明した本実施例では、エンジン１１の排気流速が変化する要因となる運転条件である排気流速変化要因（点火時期と燃料噴射時期と負荷変化量）に応じて空燃比検出タイミングを補正するようにしている。このようにすれば、排気流速変化要因に応じて、排気流速が変化して、空燃比センサ３６の出力波形の位相が変化する（つまり各気筒の適正な空燃比検出タイミングが変化する）のに対応して、空燃比検出タイミングを補正することができ、各気筒の空燃比検出タイミングが適正な空燃比検出タイミングからずれることを抑制することができる。これにより、エンジン１１の負荷や回転速度以外の運転条件（点火時期や燃料噴射時期や負荷変化量）によって排気流速が変化しても、その排気流速の変化による空燃比検出タイミングのずれを抑制することができるため、各気筒の空燃比の推定精度の低下を抑制することができ、各気筒の空燃比を正しく制御する（気筒間の空燃比ばらつきを小さくするように制御する）ことができる。
【００５５】
具体的には、点火時期が変化すると、燃焼タイミングの変化により排気圧が変化して、排気流速が変化するため、空燃比センサ３６の出力波形の位相が変化する。例えば、図９に示すように、点火時期が遅角されると、排気流速が上昇して、空燃比センサ３６の出力波形の位相が進角方向に変化する（図９の破線参照）。
【００５６】
そこで、本実施例では、点火時期（例えばベース点火時期からの遅角量）に応じて補正量Ｓ1 を算出し、この補正量Ｓ1 を用いてベース空燃比検出タイミングを補正して最終的な空燃比検出タイミングを求めることで、点火時期に応じて空燃比検出タイミングを補正するようにしている。このようにすれば、点火時期の変化（例えば触媒暖機制御時の点火時期遅角）によって排気流速が変化して、空燃比センサ３６の出力波形の位相が変化するのに対応して、空燃比検出タイミングを補正することができ、各気筒の空燃比検出タイミングのずれを抑制することができる。
【００５７】
また、燃料噴射時期が変化すると、燃焼状態が変化して、排気流速が変化するため、空燃比センサ３６の出力波形の位相が変化する。例えば、図１０に示すように、燃料噴射時期が吸気行程から圧縮行程に変化する（つまり吸気行程噴射から圧縮行程噴射に切り換える）と、排気流速が上昇して、空燃比センサ３６の出力波形の位相が進角方向に変化する（図１０の破線参照）。
【００５８】
そこで、本実施例では、燃料噴射時期に応じて補正量Ｓ2 を算出し、この補正量Ｓ2 を用いてベース空燃比検出タイミングを補正して最終的な空燃比検出タイミングを求めることで、燃料噴射時期に応じて空燃比検出タイミングを補正するようにしている。このようにすれば、燃料噴射時期の変化（例えば吸気行程噴射から圧縮行程噴射への切り換え）によって排気流速が変化して、空燃比センサ３６の出力波形の位相が変化するのに対応して、空燃比検出タイミングを補正することができ、各気筒の空燃比検出タイミングのずれを抑制することができる。
【００５９】
また、負荷変化量が変化すると、排出ガス量の所定期間の変化量が変化して、排気流速が変化するため、空燃比センサ３６の出力波形の位相が変化する。そこで、本実施例では、負荷変化量（例えば吸入空気量の変化量）に応じて補正量Ｓ3 を算出し、この補正量Ｓ3 を用いてベース空燃比検出タイミングを補正して最終的な空燃比検出タイミングを求めることで、負荷変化量に応じて空燃比検出タイミングを補正するようにしている。このようにすれば、エンジン１１の過渡時に、負荷変化量に応じて、排気流速が変化して、空燃比センサ３６の出力波形の位相が変化するのに対応して、空燃比検出タイミングを補正することができ、各気筒の空燃比検出タイミングのずれを抑制することができる。
【００６０】
尚、上記実施例では、排気流速変化要因として、点火時期と燃料噴射時期と負荷変化量を用い、これらの点火時期と燃料噴射時期と負荷変化量の三つに応じて空燃比検出タイミングを補正するようにしている。しかし、これに限定されず、例えば、点火時期と燃料噴射時期と負荷変化量のうちの二つ又は一つに応じて空燃比検出タイミングを補正するようにしても良い。
【００６１】
また、空燃比検出タイミングのずれ有りと判定されたときに、空燃比検出タイミングを補正する方法は、上記実施例で説明した方法に限定されず、適宜変更しても良い。
また、上記実施例では、本発明を４気筒エンジンに適用したが、これに限定されず、２気筒エンジンや３気筒エンジン或は５気筒以上のエンジンに本発明を適用しても良い。
【符号の説明】
【００６２】
１１…エンジン（内燃機関）、１２…吸気管、３４…排気管、３４ａ…排気集合部、３６…空燃比センサ、３９…ＥＣＵ（空燃比検出タイミング設定手段，気筒別空燃比推定手段，気筒別空燃比制御手段）
【図１】
2016044575.tif 000003
【図２】
2016044575.tif 000004
【図３】
2016044575.tif 000005
【図４】
2016044575.tif 000006
【図５】
2016044575.tif 000007
【図６】
2016044575.tif 000008
【図７】
2016044575.tif 000009
【図８】
2016044575.tif 000010
【図９】
2016044575.tif 000011
【図１０】
2016044575.tif 000012