(57)【要約】【課題】燃料タンク内に燃料が補給された場合に、始動後の早い時期から補給後の燃料に適した空燃比学習補正値を用いて燃料噴射量を補正できるようにする。【解決手段】エンジン停止中に燃料キャップが開閉されたか否かによって燃料タンク内に燃料が補給されたか否かを判定し、燃料が補給されたと判定された場合のエンジン始動後に、前回のエンジン運転中（空燃比フィードバック制御中）に学習した空燃比学習補正値と気筒毎に異なる増減補正値とを用いて気筒毎に燃料噴射量を補正して、気筒毎に燃料噴射量を変化させる噴射量増減制御を実行する。この噴射量増減制御による各気筒の燃焼状態（例えば各気筒のエンジン回転変動）を判定し、判定した各気筒の燃焼状態に基づいて補給後の燃料のアルコール濃度に適した増減補正値を求め、その増減補正値に基づいて補給後の燃料のアルコール濃度に適した空燃比学習補正値を求める。【選択図】図７
2009097453.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の空燃比フィードバック制御中に学習した燃料噴射量の補正量（以下「空燃比学習補正値」という）を用いて燃料噴射量を補正する内燃機関の制御装置において、
内燃機関の停止中に燃料タンク内に燃料が補給されたか否かを判定する燃料補給判定手段と、
前記燃料補給判定手段により燃料が補給されたと判定された場合の内燃機関の始動後に、前回の運転中に学習した空燃比学習補正値と気筒毎に異なる増減補正値とを用いて気筒毎に燃料噴射量を補正して気筒毎に燃料噴射量を変化させる噴射量増減制御を実行する噴射量増減制御手段と、
前記噴射量増減制御による各気筒の燃焼状態を判定する燃焼状態判定手段と、
前記燃焼状態判定手段で判定した各気筒の燃焼状態に基づいて燃料に適した増減補正値を求め、該増減補正値に基づいて空燃比学習補正値を変更又は補正する空燃比学習補正値変更手段と
を備えていることを特徴とする内燃機関の制御装置。
【請求項２】
前記噴射量増減制御手段は、前記噴射量増減制御を実行する際に、燃料のアルコール濃度の変化可能な全範囲に対して少なくとも１つの気筒で燃焼限界を越えない空燃比になり且つ各気筒の燃焼状態が異なるように各気筒の増減補正値を設定することを特徴とする請求項１に記載の内燃機関の制御装置。
【請求項３】
前記燃焼状態判定手段は、内燃機関の運転条件が定常状態のときの回転変動に基づいて各気筒の燃焼状態を判定することを特徴とする請求項１又は２に記載の内燃機関の制御装置。
【請求項４】
前記噴射量増減制御手段は、前記噴射量増減制御を各気筒の燃料噴射回数がそれぞれ所定回数になるまで繰り返し実行することを特徴とする請求項１乃至３のいずれかに記載の内燃機関の制御装置。
【請求項５】
前記噴射量増減制御手段は、内燃機関の始動開始からの燃料噴射量の積算値が燃料タンクから燃料噴射弁までの燃料供給通路の容積に相当する値を越えた後に前記噴射量増減制御を実行することを特徴とする請求項１乃至４のいずれかに記載の内燃機関の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の空燃比フィードバック制御中に学習した空燃比学習補正値を用いて燃料噴射量を補正する内燃機関の制御装置に関する発明である。
【背景技術】
【０００２】
近年の電子制御化された内燃機関では、所定の空燃比フィードバック制御実行条件が成立したときに、排気管に設置した排出ガスセンサの出力に基づいて排出ガスの空燃比を目標空燃比（例えば理論空燃比）に一致させるように燃料噴射量をフィードバック補正する空燃比フィードバック制御を実行し、この空燃比フィードバック制御中に空燃比学習補正値（燃料噴射量の補正量）を学習する。そして、内燃機関の始動直後等の空燃比フィードバック制御の開始前には、前回の運転中（空燃比フィードバック制御中）に学習した空燃比学習補正値を用いて燃料噴射量を補正することで、空燃比フィードバック制御の開始前から空燃比を目標空燃比（例えば理論空燃比）付近に制御できるようにしている。
【０００３】
ところで、内燃機関の燃料として、ガソリン、エタノールやメタノール等のアルコール、或は、ガソリンにアルコールを混合したアルコール混合燃料をいずれも使用可能にしたシステムがあり、このようなシステムでは、燃料タンクに前回と異なる燃料が補給されて、燃料のアルコール濃度（又はガソリン濃度）が変化することがある。一般に、ガソリンとアルコールとでは理論空燃比が異なるため、燃料のアルコール濃度が変化すると、理論空燃比が変化して適正な空燃比（安定燃焼可能な空燃比）が変化する。
【０００４】
このため、内燃機関の停止中に前回と異なる燃料が補給されて燃料のアルコール濃度が変化した場合には、始動直後等の空燃比フィードバック制御の開始前に、前回の運転中に学習した空燃比学習補正値（つまり補給前の燃料のアルコール濃度に対応した空燃比学習補正値）を用いて燃料噴射量を補正したのでは、補給後の燃料のアルコール濃度に応じた適正な空燃比に制御することができず、燃焼状態が悪化してドライバビリティや排気エミッションが悪化する可能性がある。
【０００５】
そこで、特許文献１（特開昭６３−１２８５３号公報）に記載されているように、燃料の補給が検出された場合の始動時に、特定の燃料（例えばアルコール１００％の燃料）が補給されたものと仮定してクランプ値（燃料補正値）を推定し、このクランプ値を用いて燃料噴射量を補正するようにしたものがある。
【特許文献１】特開昭６３−１２８５３号公報（第２頁等）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、上記特許文献１の技術では、特定の燃料（例えばアルコール１００％の燃料）が補給されたものと仮定して推定したクランプ値を用いて燃料噴射量を補正するため、補給後の実際の燃料のアルコール濃度に応じた適正な空燃比に制御することができず、燃焼状態が悪化してドライバビリティや排気エミッションが悪化する可能性がある。
【０００７】
本発明は、このような事情を考慮してなされたものであり、従って本発明の目的は、燃料が補給された場合に、始動後の早い時期から補給後の燃料に適した補正値を用いて燃料噴射量を補正して適正な空燃比に制御することができ、ドライバビリティや排気エミッションを向上させることができる内燃機関の制御装置を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、請求項１に係る発明は、内燃機関の空燃比フィードバック制御中に学習した燃料噴射量の補正量（以下「空燃比学習補正値」という）を用いて燃料噴射量を補正する内燃機関の制御装置において、内燃機関の停止中に燃料タンク内に燃料が補給されたか否かを燃料補給判定手段により判定し、燃料が補給されたと判定された場合の内燃機関の始動後に、前回の運転中に学習した空燃比学習補正値と気筒毎に異なる増減補正値とを用いて気筒毎に燃料噴射量を補正して気筒毎に燃料噴射量を変化させる噴射量増減制御を噴射量増減制御手段により実行し、この噴射量増減制御による各気筒の燃焼状態を燃焼状態判定手段により判定し、空燃比学習補正値変更手段によって、各気筒の燃焼状態に基づいて燃料に適した増減補正値を求め、該増減補正値に基づいて空燃比学習補正値を変更又は補正するようにしたものである。
【０００９】
気筒毎に異なる増減補正値を用いて気筒毎に燃料噴射量を変化させる噴射量増減制御を実行すると、増減補正値が適正値（補給後の燃料に応じた適正な空燃比となる増減補正値）に近い気筒ほど燃焼状態が良くなるため、各気筒の燃焼状態を評価すれば、各気筒の増減補正値の適正度合を評価して、補給後の燃料に適した増減補正値を求めることができ、その増減補正値から補給後の燃料に適した空燃比学習補正値を求めることができる。これにより、内燃機関の停止中に前回と異なる燃料が補給されて燃料のアルコール濃度が変化した場合でも、内燃機関の始動後の早い時期から補給後の燃料のアルコール濃度に適した空燃比学習補正値を用いて燃料噴射量を補正して適正な空燃比に制御することができ、ドライバビリティや排気エミッションを向上させることができる。
【００１０】
噴射量増減制御を実行した場合、補給後の燃料のアルコール濃度や各気筒の増減補正値によっては、全ての気筒で空燃比が燃焼限界を越えたり、或は、全ての気筒で燃焼状態がほぼ同じになる可能性がある。もし、全ての気筒で空燃比が燃焼限界を越えると、全ての気筒で失火してしまうことになる。また、全ての気筒で燃焼状態がほぼ同じになると、各気筒の燃焼状態の優劣を評価するのが困難になって、各気筒の増減補正値の適正度合を評価するのが困難になり、補給後の燃料のアルコール濃度に適した空燃比学習補正値を求めることが困難になる。
【００１１】
そこで、請求項２のように、噴射量増減制御を実行する際に、燃料のアルコール濃度の変化可能な全範囲に対して少なくとも１つの気筒で燃焼限界を越えない空燃比になり且つ各気筒の燃焼状態が異なるように各気筒の増減補正値を設定するようにすると良い。少なくとも１つの気筒で燃焼限界を越えない空燃比になるように各気筒の増減補正値を設定することで、全ての気筒で失火してしまうことを防止することができる。更に、各気筒の燃焼状態が異なるように各気筒の増減補正値を設定することで、各気筒の燃焼状態の優劣を容易に評価して、各気筒の増減補正値の適正度合を容易に評価することができ、補給後の燃料のアルコール濃度に適した空燃比学習補正値を容易に求めることができる。
【００１２】
また、請求項３のように、内燃機関の運転条件が定常状態のときの回転変動に基づいて各気筒の燃焼状態を判定するようにしても良い。内燃機関の運転条件（例えばアクセル開度等）が定常状態のときには各気筒の燃焼状態に応じて各気筒の燃焼による回転速度の変動量（上昇量）が変化するため、内燃機関の運転条件が定常状態のときの回転変動を用いれば、各気筒の燃焼状態を精度良く判定することができる。
【００１３】
更に、請求項４のように、噴射量増減制御を各気筒の燃料噴射回数がそれぞれ所定回数になるまで繰り返し実行するようにしても良い。このようにすれば、各気筒の所定回数分の燃焼状態のデータを用いて各気筒の燃焼状態を精度良く判定して、補給後の燃料のアルコール濃度に適した空燃比学習補正値を精度良く求めることができる。
【００１４】
ところで、燃料タンク内に前回と異なる燃料が補給されて燃料タンク内の燃料のアルコール濃度が変化した場合でも、内燃機関の始動開始後には、まず、燃料タンクから燃料噴射弁までの燃料供給配管内に残っている前回の燃料（アルコール濃度が変化する前の燃料）が噴射され、その後、燃料タンク内の燃料（アルコール濃度が変化した後の燃料）が噴射される。
【００１５】
このような事情を考慮して、請求項５のように、内燃機関の始動開始からの燃料噴射量の積算値（燃料消費量）が燃料タンクから燃料噴射弁までの燃料供給通路の容積に相当する値を越えた後に噴射量増減制御を実行するようにすると良い。このようにすれば、燃料噴射量の積算値が燃料供給通路の容積に相当する値を越えて、燃料タンク内の燃料が噴射されるようになってから噴射量増減制御を実行することができる。これにより、燃料タンク内に前回と異なる燃料が補給されて燃料タンク内の燃料のアルコール濃度が変化した場合に、確実に燃料タンク内の燃料（アルコール濃度が変化した後の燃料）が噴射されるようになってから噴射量増減制御を実行して、アルコール濃度が変化した後の燃料に適した空燃比学習補正値を精度良く求めることができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明を実施するための最良の形態を具体化した一実施例を説明する。
まず、図１に基づいてエンジン制御システム全体の概略構成を説明する。
内燃機関である例えば３気筒のエンジン１１は、第ａ気筒＃ａ〜第ｃ気筒＃ｃの３つの気筒を有し、このエンジン１１の吸気管１２の最上流部には、エアクリーナ１３が設けられ、このエアクリーナ１３の下流側に、吸入空気量を検出するエアフローメータ１４が設けられている。このエアフローメータ１４の下流側には、モータ１５によって開度調節されるスロットルバルブ１６と、このスロットルバルブ１６の開度（スロットル開度）を検出するスロットル開度センサ１７とが設けられている。
【００１７】
更に、スロットルバルブ１６の下流側には、サージタンク１８が設けられ、このサージタンク１８に、吸気管圧力を検出する吸気管圧力センサ１９が設けられている。また、サージタンク１８には、エンジン１１の各気筒に空気を導入する吸気マニホールド２０が設けられ、各気筒の吸気マニホールド２０の吸気ポート近傍に、それぞれ燃料を噴射する燃料噴射弁２１が取り付けられている。また、エンジン１１のシリンダヘッドには、各気筒毎に点火プラグ２２が取り付けられ、各点火プラグ２２の火花放電によって筒内の混合気に着火される。
【００１８】
一方、エンジン１１の排気管２３には、排出ガスの空燃比又はリッチ／リーン等を検出する排出ガスセンサ２４（空燃比センサ、酸素センサ等）が設けられ、この排出ガスセンサ２４の下流側に、排出ガスを浄化する三元触媒等の触媒２５が設けられている。
【００１９】
また、エンジン１１のシリンダブロックには、冷却水温を検出する冷却水温センサ２６や、ノッキング振動を検出するノックセンサ２９が取り付けられている。また、クランク軸２７の外周側には、クランク軸２７が所定クランク角回転する毎にパルス信号を出力するクランク角センサ２８が取り付けられ、このクランク角センサ２８の出力信号に基づいてクランク角やエンジン回転速度が検出される。
【００２０】
エンジン１１は、燃料として、ガソリン、エタノールやメタノール等のアルコール、ガソリンにアルコールを混合したアルコール混合燃料をいずれも使用可能であり、これらのガソリン、アルコール、アルコール混合燃料のいずれかをエンジン１１に供給するようになっている。燃料を貯溜する燃料タンク３０内には、燃料を汲み上げる燃料ポンプ３１が設けられている。この燃料ポンプ３１から吐出される燃料は、燃料供給配管３２（燃料供給通路）を通してデリバリパイプ３３（燃料供給通路）に送られ、このデリバリパイプ３３から各気筒の燃料噴射弁２１に分配される。
【００２１】
上述した各種センサの出力は、エンジン制御回路（以下「ＥＣＵ」と表記する）３４に入力される。このＥＣＵ３４は、マイクロコンピュータを主体として構成され、内蔵されたＲＯＭ（記憶媒体）に記憶された各種のエンジン制御プログラムを実行することで、エンジン運転状態に応じて燃料噴射弁２１の燃料噴射量や点火プラグ２２の点火時期を制御する。
【００２２】
その際、ＥＣＵ３４は、エンジン運転中に所定の空燃比Ｆ／Ｂ制御実行条件が成立したときに、排出ガスセンサ２４の出力に基づいて排出ガスの空燃比を目標空燃比（例えば理論空燃比）に一致させるように空燃比Ｆ／Ｂ補正量を算出し、この空燃比Ｆ／Ｂ補正量を用いて燃料噴射弁２１の燃料噴射量を補正する空燃比Ｆ／Ｂ制御を実行する。ここで、「Ｆ／Ｂ」は「フィードバック」を意味する（以下、同様）。
【００２３】
また、ＥＣＵ３４は、空燃比Ｆ／Ｂ制御中に燃料噴射量の補正量（空燃比Ｆ／Ｂ補正量）を学習し、学習した燃料噴射量の補正量を空燃比学習補正値としてＥＣＵ３４のバックアップＲＡＭ（図示せず）等の書き換え可能な不揮発性メモリ（ＥＣＵ３４の電源オフ中でも記憶データを保持する書き換え可能なメモリ）に記憶する。
【００２４】
そして、ＥＣＵ３４は、エンジン始動直後等の空燃比Ｆ／Ｂ制御の開始前には、前回のエンジン運転中（空燃比Ｆ／Ｂ制御中）に学習した空燃比学習補正値を用いて燃料噴射量を補正することで、空燃比Ｆ／Ｂ制御の開始前から空燃比を目標空燃比（例えば理論空燃比）付近に制御するようにしている。
【００２５】
ところで、本実施例のように、エンジン１１の燃料として、ガソリン、アルコール、アルコール混合燃料をいずれも使用可能にしたシステムでは、燃料タンク３０に前回と異なる燃料が補給されて、燃料のアルコール濃度（又はガソリン濃度）が変化することがある。一般に、ガソリンとアルコールとでは理論空燃比が異なるため、燃料のアルコール濃度が変化すると、理論空燃比が変化して適正な空燃比（適正な燃焼状態を確保できる空燃比）が変化する。
【００２６】
このため、エンジン停止中に前回と異なる燃料が補給されて燃料のアルコール濃度が変化した場合には、エンジン始動直後等の空燃比Ｆ／Ｂ制御の開始前に、前回のエンジン運転中に学習した空燃比学習補正値（つまり補給前の燃料のアルコール濃度に対応した空燃比学習補正値）を用いて燃料噴射量を補正したのでは、補給後の燃料のアルコール濃度に応じた適正な空燃比に制御することができず、燃焼状態が悪化してドライバビリティや排気エミッションが悪化する可能性がある。
【００２７】
そこで、ＥＣＵ３４は、後述する図２乃至図４の空燃比学習補正値変更用の各ルーチンを実行することで、エンジン停止中に燃料タンク３０内に燃料が補給されたか否かを判定し、燃料が補給されたと判定された場合のエンジン始動後に、前回のエンジン運転中（空燃比Ｆ／Ｂ制御中）に学習した空燃比学習補正値と気筒毎に異なる増減補正値とを用いて気筒毎に燃料噴射量を補正して気筒毎に燃料噴射量を変化させる噴射量増減制御を実行する。この噴射量増減制御による各気筒の燃焼状態（例えば各気筒のエンジン回転変動）を判定し、判定した各気筒の燃焼状態に基づいて補給後の燃料に適した増減補正値を求め、該増減補正値に基づいて空燃比学習補正値を変更又は補正する。
【００２８】
気筒毎に異なる増減補正値を用いて気筒毎に燃料噴射量を変化させる噴射量増減制御を実行すると、増減補正値が適正値（補給後の燃料のアルコール濃度に応じた適正な空燃比となる増減補正値）に近い気筒ほど燃焼状態が良くなるため、各気筒の燃焼状態を評価すれば、各気筒の増減補正値の適正度合を評価して、補給後の燃料のアルコール濃度に適した増減補正値を求めることができ、その増減補正値から補給後の燃料のアルコール濃度に適した空燃比学習補正値を求めることができる。これにより、エンジン停止中に前回と異なる燃料が補給されて燃料のアルコール濃度が変化した場合でも、エンジン始動後の早い時期（空燃比Ｆ／Ｂ制御の開始前）から補給後の燃料のアルコール濃度に適した空燃比学習補正値を用いて燃料噴射量を補正することができる。
以下、図２乃至図４の空燃比学習補正値変更用の各ルーチンの処理内容を説明する。
【００２９】
［燃料補給判定ルーチン］
図２に示す燃料補給判定ルーチンは、ＥＣＵ３４の電源オン中に所定周期で実行され、特許請求の範囲でいう燃料補給判定手段としての役割を果たす。本ルーチンが起動されると、まず、ステップ１０１で、エンジン停止中に燃料キャップ（燃料タンク３０の給油口のキャップ）の開閉があったか否かによって、エンジン停止中に燃料タンク３０に燃料が補給されたか否かを判定する。この場合、例えば、エンジン停止中に、車両側の制御回路（図示せず）が、燃料キャップの開閉を検出するセンサの出力に基づいて燃料キャップが開閉されたか否かを判定し、ＥＣＵ３４の電源オン後に、ＥＣＵ３４が、車両側の制御回路からの送信データに基づいてエンジン停止中に燃料キャップの開閉があったか否かを判定する。或は、エンジン停止中に、ＥＣＵ３４が、燃料キャップの開閉を検出するセンサの出力に基づいて燃料キャップが開閉されたか否かを判定するようにしても良い。
【００３０】
尚、エンジン停止中に燃料タンク３０に燃料が補給されたか否かを判定する方法は、適宜変更しても良く、例えば、燃料残量計（図示せず）で計測したエンジン停止中の燃料タンク３０内の燃料残量の変化（エンジン始動時の燃料タンク３０内の燃料残量とエンジン停止時の燃料タンク３０内の燃料残量との差）に基づいて、エンジン停止中に燃料タンク３０に燃料が補給されたか否かを判定するようにしても良い。
【００３１】
このステップ１０１で、エンジン停止中に燃料キャップの開閉があったと判定された場合には、エンジン停止中に燃料タンク３０に燃料が補給されたと判断して、ステップ１０２に進み、噴射量増減制御実行フラグを「１」にセットする。
【００３２】
一方、上記ステップ１０１で、エンジン停止中に燃料キャップの開閉がなかったと判定された場合には、エンジン停止中に燃料タンク３０に燃料が補給されなかったと判断して、ステップ１０３に進み、噴射量増減制御実行フラグを「０」に維持する。
【００３３】
［噴射量増減制御ルーチン］
図３に示す噴射量増減制御ルーチンは、ＥＣＵ３４の電源オン中に燃料噴射タイミング毎に実行され、特許請求の範囲でいう噴射量増減制御手段としての役割を果たす。本ルーチンが起動されると、まず、ステップ２０１で、噴射量増減制御実行フラグが「１」にセットされているか否かを判定すると共に、エンジン始動開始からの燃料噴射量の積算値である噴射量積算値が所定値を越えたか否かを判定する。ここで、所定値は、燃料タンク３０内の燃料ポンプ３１から燃料噴射弁２１までの燃料供給通路の容積（燃料配管３２内の容積とデリバリパイプ３３内の容積との和）に相当する値又はそれよりも少し大きい値に設定されている。従って、エンジン始動開始からの噴射量積算値が所定値を越えたか否かによって、エンジン始動開始後に燃料タンク３０内の燃料が燃料噴射弁２１から噴射されるようになったか否かを判定できる。
【００３４】
このステップ２０１で、噴射量増減制御実行フラグが「０」であると判定された場合、又は、噴射量積算値が所定値以下であると判定された場合には、ステップ２１７に進み、実行カウンタを「０」に維持すると共に増減補正値を「０」に維持したまま本ルーチンを終了する。この場合は、噴射量増減制御は実行されない。
【００３５】
その後、上記ステップ２０１で、噴射量増減制御実行フラグが「１」であると判定され、且つ、噴射量積算値が所定値を越えたと判定されたときに、ステップ２０２に進み、エンジン始動完了後で且つエンジン運転条件（例えば、アクセル開度、スロットル開度、吸入空気量等）が定常状態であるか否かを判定し、エンジン始動完了後で且つエンジン運転条件が定常状態であると判定されれば、噴射量増減制御を次のようにして実行する。
【００３６】
まず、ステップ２０３で、実行カウンタのカウント値（初期値＝０）を「１」だけカウントアップした後、ステップ２０４に進み、実行カウンタのカウント値が「１」〜「３」のうちのいずれであるかを判定する。
【００３７】
このステップ２０４で、実行カウンタのカウント値が「１」であると判定された場合には、ステップ２０５に進み、今回の噴射気筒である第ａ気筒＃ａの増減補正値Δａを設定するための第１所定値である例えば４２（％）と前回のエンジン運転中に学習した空燃比学習補正値を用いて、今回の噴射気筒である第ａ気筒＃ａの増減補正値Δａを次式により設定する。
増減補正値Δａ＝４２−空燃比学習補正値（％）
【００３８】
この後、ステップ２０６に進み、前回のエンジン運転中に学習した空燃比学習補正値と第ａ気筒＃ａの増減補正値Δａとを用いて第ａ気筒＃ａの燃料噴射量を補正する。この場合、例えば、空燃比学習補正値に第ａ気筒＃ａの増減補正値Δａを加算して求めた最終補正値（＝空燃比学習補正値＋増減補正値Δａ）を用いて第ａ気筒＃ａの燃料噴射量を補正する。この後、ステップ２１１に進み、第ａ気筒＃ａの燃料噴射を実行する。
【００３９】
また、上記ステップ２０４で、実行カウンタのカウント値が「２」であると判定された場合には、ステップ２０７に進み、今回の噴射気筒である第ｂ気筒＃ｂの増減補正値Δｂを設定するための第２所定値である例えば３０（％）と前回のエンジン運転中に学習した空燃比学習補正値を用いて、今回の噴射気筒である第ｂ気筒＃ｂの増減補正値Δｂを次式により設定する。
増減補正値Δｂ＝３０−空燃比学習補正値（％）
【００４０】
この後、ステップ２０８に進み、前回のエンジン運転中に学習した空燃比学習補正値と第ｂ気筒＃ｂの増減補正値Δｂとを用いて第ｂ気筒＃ｂの燃料噴射量を補正する。この場合、例えば、空燃比学習補正値に第ｂ気筒＃ｂの増減補正値Δｂを加算して求めた最終補正値（＝空燃比学習補正値＋増減補正値Δｂ）を用いて第ｂ気筒＃ｂの燃料噴射量を補正する。この後、ステップ２１１に進み、第ｂ気筒＃ｂの燃料噴射を実行する。
【００４１】
また、上記ステップ２０４で、実行カウンタのカウント値が「３」であると判定された場合には、ステップ２０９に進み、今回の噴射気筒である第ｃ気筒＃ｃの増減補正値Δｃを設定するための第３所定値である例えば１８（％）と前回のエンジン運転中に学習した空燃比学習補正値を用いて、今回の噴射気筒である第ｃ気筒＃ｃの増減補正値Δｃを次式により設定する。
増減補正値Δｃ＝１８−空燃比学習補正値（％）
【００４２】
尚、上記第１所定値「４２」、第２所定値「３０」、第３所定値「１８」は、適宜変更しても良く、要は、互いに異なる値に設定すれば良い（大小関係の順序はどの様に変更しても良い）。
【００４３】
この後、ステップ２１０に進み、前回のエンジン運転中に学習した空燃比学習補正値と第ｃ気筒＃ｃの増減補正値Δｃとを用いて第ｃ気筒＃ｃの燃料噴射量を補正する。この場合、例えば、空燃比学習補正値に第ｃ気筒＃ｃの増減補正値Δｃを加算して求めた最終補正値（＝空燃比学習補正値＋増減補正値Δｃ）を用いて第ｃ気筒＃ｃの燃料噴射量を補正する。この後、ステップ２１１に進み、第ｃ気筒＃ｃの燃料噴射を実行する。
【００４４】
このようにして、前回のエンジン運転中に学習した空燃比学習補正値と気筒毎に異なる増減補正値Δａ〜Δｃを用いて気筒毎に燃料噴射量を補正して気筒毎に燃料噴射量を変化させる噴射量増減制御を実行する。その際、燃料のアルコール濃度の変化可能な全範囲（例えば０〜１００％）に対して少なくとも１つの気筒でリッチ側及びリーン側の両側の燃焼限界を越えない空燃比になり且つ各気筒の燃焼状態が異なるように各気筒＃ａ〜＃ｃの増減補正値Δａ〜Δｃを設定するようにしている。
【００４５】
ここで、各気筒＃ａ〜＃ｃの増減補正値Δａ〜Δｃの設定方法について説明する。
図５に示すように、燃料のアルコール濃度に応じて要求空燃比学習補正値（例えば、理論空燃比となる空燃比学習補正値）が変化するため、実際の空燃比学習補正値と要求空燃比学習補正値との差に応じて燃焼状態が変化する。例えば、空燃比学習補正値と要求空燃比学習補正値との差が−１０から２８までの領域が可燃域となる。また、空燃比学習補正値と要求空燃比学習補正値との差が２８から４０までの領域と−１０から−２０までの領域が燃焼限界域（燃焼限界を越える手前の領域）となる。更に、空燃比学習補正値と要求空燃比学習補正値との差が４０以上の領域と−２０以下の領域が失火域となる。
【００４６】
このような特性を考慮して、図６に示すように、燃料のアルコール濃度の変化可能な全範囲（例えば０〜１００％）に対して、空燃比学習補正値に拘らず、各気筒＃ａ〜＃ｃの最終補正値（＝空燃比学習補正値＋増減補正値）と要求空燃比学習補正値との差の少なくとも１つが可燃域又は燃焼限界域（例えば−２０から４０までの領域）となるように各気筒＃ａ〜＃ｃの増減補正値Δａ〜Δｃを設定することで、燃料のアルコール濃度の変化可能な全範囲に対して少なくとも１つの気筒で燃焼限界を越えない空燃比になるように各気筒＃ａ〜＃ｃの増減補正値Δａ〜Δｃを設定する。尚、燃料のアルコール濃度の変化可能な全範囲に対して全ての気筒で燃焼限界を越えない空燃比にできる場合には、全ての気筒で燃焼限界を越えない空燃比になるように各気筒＃ａ〜＃ｃの増減補正値Δａ〜Δｃを設定する。
【００４７】
更に、第ａ気筒＃ａの最終補正値が第ｂ気筒＃ｂの最終補正値よりも１０以上大きくなる（１０％以上リッチになる）と共に、第ｃ気筒＃ｃの最終補正値が第ｂ気筒＃ｂの最終補正値よりも１０以上小さくなる（１０％以上リーンになる）ように各気筒＃ａ〜＃ｃの増減補正値Δａ〜Δｃを設定することで、各気筒＃ａ〜＃ｃの燃焼状態が異なるように各気筒＃ａ〜＃ｃの増減補正値Δａ〜Δｃを設定する。
【００４８】
上記ステップ２１１で燃料噴射を実行した後、ステップ２１２に進み、前回までの噴射量積算値（初期値＝０）に今回の燃料噴射量を加算して噴射量積算値を更新した後、ステップ２１３に進み、実行カウンタのカウント値が気筒数（本実施例では「３」）に達したか否かによって、噴射量増減制御を各気筒＃ａ〜＃ｃで１回ずつ実行したか否かを判定する。
【００４９】
このステップ２１３で、実行カウンタのカウント値が「３」であると判定されたときに、噴射量増減制御を各気筒＃ａ〜＃ｃで１回ずつ実行したと判断して、ステップ２１４に進み、実行セットカウンタのカウント値（初期値＝０）を「１」だけカウントアップすると共に、実行カウンタのカウント値を「０」にリセットする。
【００５０】
この後、ステップ２１５に進み、実行セットカウンタのカウント値が所定値である例えば「５」に達したか否かによって、噴射量増減制御中の各気筒＃ａ〜＃ｃの噴射回数が所定回数である例えば５回になったか否かを判定し、実行セットカウンタのカウント値が「５」に達していなければ、実行セットカウンタのカウント値が「５」に達するまで（噴射量増減制御中の各気筒＃ａ〜＃ｃの噴射回数が５回になるまで）、ステップ２０１〜２１５の処理を繰り返して噴射量増減制御を継続する。
【００５１】
その後、上記ステップ２１５で、実行セットカウンタのカウント値が「５」に達したと判定されたときに、噴射量増減制御中の各気筒＃ａ〜＃ｃの噴射回数が５回になったと判断して、ステップ２１６に進み、噴射量増減制御実行フラグを「０」にリセットして噴射量増減制御を終了する。
【００５２】
［空燃比学習補正値変更ルーチン］
図４に示す空燃比学習補正値変更ルーチンは、ＥＣＵ３４の電源オン中に所定周期で実行され、特許請求の範囲でいう空燃比学習補正値変更手段としての役割を果たす。本ルーチンが起動されると、まず、ステップ３０１で、エンジン運転条件が定常状態（例えば、アクセル開度、スロットル開度、吸入空気量等）のときに、噴射量増減制御を実行した各気筒の燃焼状態の情報として、噴射量増減制御を実行した各気筒の燃焼によるエンジン回転変動を算出する。この場合、例えば、今回の燃焼気筒の燃焼直後のエンジン回転速度と燃焼直前のエンジン回転速度との差を求め、それを今回の燃焼気筒のエンジン回転変動とする。エンジン運転条件が定常状態のときには各気筒の燃焼状態に応じて各気筒の燃焼によるエンジン回転速度の変動量（上昇量）が変化するため、エンジン運転条件が定常状態のときのエンジン回転変動を用いれば、各気筒の燃焼状態を精度良く判定することができる。
【００５３】
この後、ステップ３０２に進み、今回の燃焼気筒が第ａ気筒＃ａ〜第ｃ気筒＃ｃのうちのいずれの気筒であるかを判定する。
このステップ３０２で、今回の燃焼気筒が第ａ気筒＃ａ（つまり噴射量増減制御中の燃料噴射量が第ｂ気筒＃ｂよりも増量側となる気筒）であると判定された場合には、ステップ３０３に進み、前回までの増量側回転変動積算値（初期値＝０）に今回の第ａ気筒＃ａのエンジン回転変動を加算して増量側回転変動積算値（第ａ気筒＃ａのエンジン回転変動の積算値）を更新する。
【００５４】
また、上記ステップ３０２で、今回の燃焼気筒が第ｂ気筒＃ｂであると判定された場合には、ステップ３０４に進み、前回までの中央側回転変動積算値（初期値＝０）に今回の第ｂ気筒＃ｂのエンジン回転変動を加算して中央側回転変動積算値（第ｂ気筒＃ｂのエンジン回転変動の積算値）を更新する。
【００５５】
また、上記ステップ３０２で、今回の燃焼気筒が第ｃ気筒＃ｃ（つまり噴射量増減制御中の燃料噴射量が第ｂ気筒＃ｂよりも減量側となる気筒）であると判定された場合には、ステップ３０５に進み、前回までの減量側回転変動積算値（初期値＝０）に今回の第ｃ気筒＃ｃのエンジン回転変動を加算して減量側回転変動積算値（第ｃ気筒＃ｃのエンジン回転変動の積算値）を更新する。
【００５６】
この後、ステップ３０６に進み、図３のステップ２１４でカウントアップされる実行セットカウンタのカウント値が所定値である例えば「５」に達したか否かによって、各気筒＃ａ〜＃ｃのエンジン回転変動の積算回数が例えば５回になったか否かを判定し、実行セットカウンタのカウント値が「５」に達したと判定されたときに、各気筒＃ａ〜＃ｃのエンジン回転変動の積算回数が５回になったと判断して、ステップ３０７に進み、増量側回転変動平均値（第ａ気筒＃ａのエンジン回転変動の平均値）と中央側回転変動平均値（第ｂ気筒＃ｂのエンジン回転変動の平均値）と減量側回転変動平均値（第ｃ気筒＃ｃのエンジン回転変動の平均値）を、それぞれ次式により求める。
【００５７】
増量側回転変動平均値＝増量側回転変動積算値／５
中央側回転変動平均値＝中央側回転変動積算値／５
減量側回転変動平均値＝減量側回転変動積算値／５
【００５８】
この後、ステップ３０８に進み、各気筒＃ａ〜＃ｃの回転変動平均値（増量側回転変動平均値と中央側回転変動平均値と減量側回転変動平均値）がそれぞれ所定の失火判定値よりも低いか否かを判定することで、各気筒＃ａ〜＃ｃの燃焼状態がそれぞれ失火状態であるか否かを判定する。このステップ３０８の処理が特許請求の範囲でいう燃焼状態判定手段としての役割を果たす。
【００５９】
このステップ３０８で、各気筒＃ａ〜＃ｃの回転変動平均値（増量側回転変動平均値と中央側回転変動平均値と減量側回転変動平均値）のうちのいずれかが失火判定値よりも低いと判定された場合、つまり、いずれかの気筒の燃焼状態が失火状態であると判定された場合には、ステップ３０９に進み、失火判定気筒（失火状態であると判定された気筒）以外の増減補正値の中で失火判定気筒の増減補正値に近い増減補正値が補給後の燃料のアルコール濃度に適した増減補正値であると判断して該増減補正値を選択する。
【００６０】
一方、上記ステップ３０８で、各気筒＃ａ〜＃ｃの回転変動平均値（増量側回転変動平均値と中央側回転変動平均値と減量側回転変動平均値）が全て失火判定値以上であると判定された場合、つまり、全ての気筒の燃焼状態が失火状態ではないと判定された場合には、ステップ３１０に進み、中央側回転変動平均値となる気筒（つまり第ｂ気筒＃ｂ）の増減補正値が補給後の燃料のアルコール濃度に適した増減補正値であると判断して該増減補正値を選択する。
【００６１】
尚、補給後の燃料のアルコール濃度に適した増減補正値を求める方法は、各気筒＃ａ〜＃ｃの増減補正値の中から補給後の燃料のアルコール濃度に適した増減補正値を選択する方法に限定されず、適宜変更しても良く、例えば、各気筒＃ａ〜＃ｃの増減補正値と各気筒＃ａ〜＃ｃの回転変動平均値との関係から適正な回転変動（適正な燃焼状態に相当する回転変動）となる増減補正値を求めることで、補給後の燃料のアルコール濃度に適した増減補正値を求めるようにしても良い。
【００６２】
この後、ステップ３１１に進み、選択した増減補正値を現在の空燃比学習補正値（前回のエンジン運転中に学習した空燃比学習補正値）に加算して補給後の燃料のアルコール濃度に適した空燃比学習補正値を求めて、空燃比学習補正値を更新する。
【００６３】
以上説明した本実施例の空燃比学習補正値変更処理の実行例を図７のタイムチャートを用いて説明する。エンジン停止中に燃料キャップが開閉された時点ｔ1 で、燃料が補給されたと判断して、噴射量増減制御実行フラグを「１」にセットし、その後、噴射量積算値が所定値を越えると共に、エンジン始動完了後で且つエンジン運転条件が定常状態であると判定された時点ｔ2 で、噴射量増減制御を開始する。
【００６４】
この噴射量増減制御では、各気筒＃ａ〜＃ｃ毎に異なる増減補正値を設定し、現在の空燃比学習補正値（前回のエンジン運転中に学習した空燃比学習補正値）と各気筒＃ａ〜＃ｃ毎に異なる増減補正値とを用いて各気筒＃ａ〜＃ｃ毎に燃料噴射量を補正して各気筒＃ａ〜＃ｃ毎に燃料噴射量を変化させる。その後、噴射量増減制御中の各気筒＃ａ〜＃ｃの噴射回数がそれぞれ５回に達した時点ｔ3 で、噴射量増減制御実行フラグを「０」にリセットして噴射量増減制御を終了する。これにより、噴射量増減制御を各気筒の燃料噴射回数がそれぞれ５回になるまで繰り返し実行する。
【００６５】
そして、噴射量増減制御を実行した各気筒＃ａ〜＃ｃの燃焼状態の情報として、各気筒＃ａ〜＃ｃの燃焼によるエンジン回転変動を算出し、各気筒＃ａ〜＃ｃのエンジン回転変動を積算する。その後、各気筒＃ａ〜＃ｃのエンジン回転変動の積算回数がそれぞれ５回になった時点ｔ4 で、各気筒＃ａ〜＃ｃのエンジン回転変動の平均値を求め、各気筒＃ａ〜＃ｃのエンジン回転変動の平均値を失火判定値と比較して各気筒の燃焼状態を判定する。その判定結果に基づいて補給後の燃料のアルコール濃度に適した増減補正値を求め、その増減補正値を現在の空燃比学習補正値（前回のエンジン運転中に学習した空燃比学習補正値）に加算して補給後の燃料のアルコール濃度に適した空燃比学習補正値を求める。
【００６６】
これにより、エンジン停止中に前回と異なる燃料が補給されて燃料のアルコール濃度が変化した場合でも、エンジン始動後の早い時期（空燃比Ｆ／Ｂ制御の開始前）から補給後の燃料のアルコール濃度に適した空燃比学習補正値を用いて燃料噴射量を補正して適正な空燃比に制御することができ、ドライバビリティや排気エミッションを向上させることができる。
【００６７】
また、本実施例では、噴射量増減制御を実行する際に、燃料のアルコール濃度の変化可能な全範囲に対して少なくとも１つの気筒で燃焼限界を越えない空燃比になるように各気筒＃ａ〜＃ｃの増減補正値Δａ〜Δｃを設定するようにしたので、全ての気筒で失火してしまうことを防止することができ、更に、各気筒＃ａ〜＃ｃの燃焼状態が異なるように各気筒＃ａ〜＃ｃの増減補正値Δａ〜Δｃを設定するようにしたので、各気筒＃ａ〜＃ｃの燃焼状態の優劣を容易に評価して、各気筒＃ａ〜＃ｃの増減補正値の適正度合を容易に評価することができ、補給後の燃料のアルコール濃度に適した空燃比学習補正値を容易に求めることができる。
【００６８】
更に、本実施例では、噴射量増減制御を各気筒＃ａ〜＃ｃの燃料噴射回数がそれぞれ所定回数（例えば５回）になるまで繰り返し実行するようにしたので、各気筒＃ａ〜＃ｃの所定回数分の燃焼状態（エンジン回転変動）のデータを用いて各気筒＃ａ〜＃ｃの燃焼状態を精度良く判定して、補給後の燃料のアルコール濃度に適した空燃比学習補正値を精度良く求めることができる。
【００６９】
ところで、燃料タンク３０内に前回と異なる燃料が補給されて燃料タンク３０内の燃料のアルコール濃度が変化した場合でも、エンジン始動開始後には、まず、燃料タンク３０内の燃料ポンプ３１から燃料噴射弁２１までの燃料供給配管内に残っている前回の燃料（アルコール濃度が変化する前の燃料）が噴射され、その後、燃料タンク３０内の燃料（燃料補給によりアルコール濃度が変化した後の燃料）が噴射される。
【００７０】
このような事情を考慮して、本実施例では、エンジン始動開始からの噴射量積算値が所定値（燃料タンク３０内の燃料ポンプ３１から燃料噴射弁２１までの燃料供給通路の容積に相当する値又はそれよりも少し大きい値）を越えて、燃料タンク３０内の燃料が噴射されるようになってから噴射量増減制御を実行するようにしたので、燃料タンク３０内に前回と異なる燃料が補給されて燃料タンク３０内の燃料のアルコール濃度が変化した場合に、確実に燃料タンク３０内の燃料（アルコール濃度が変化した後の燃料）が噴射されるようになってから噴射量増減制御を実行して、アルコール濃度が変化した後の燃料に適した空燃比学習補正値を精度良く求めることができる。
【００７１】
尚、上記実施例では、エンジン始動後に噴射量増減制御を実行して空燃比学習補正値を１回のみ変更するようにしたが、エンジン始動後に噴射量増減制御を実行して空燃比学習補正値を変更する処理を複数回繰り返して空燃比学習補正値を更に精度良く求めるようにしても良い。
【００７２】
また、上記実施例では、各気筒の燃焼によるエンジン回転変動に基づいて各気筒の燃焼状態を判定するようにしたが、各気筒の燃焼よる筒内圧変動等の他のパラメータに基づいて各気筒の燃焼状態を判定するようにしても良い。
【００７３】
また、上記実施例では、本発明を３気筒エンジンに適用したが、２気筒エンジンや４気筒以上のエンジンに本発明を適用しても良い。
また、本発明は、図１に示すような吸気ポート噴射式エンジンに限定されず、筒内噴射式エンジンや、吸気ポート噴射用の燃料噴射弁と筒内噴射用の燃料噴射弁の両方を備えたデュアル噴射式のエンジンにも適用して実施できる。
【図面の簡単な説明】
【００７４】
【図１】本発明の実施例１におけるエンジン制御システム全体の概略構成図である。
【図２】燃焼補給判定ルーチンの処理の流れを説明するフローチャートである。
【図３】噴射量増減制御ルーチンの処理の流れを説明するフローチャートである。
【図４】空燃比学習補正値変更ルーチンの処理の流れを説明するフローチャートである。
【図５】空燃比学習補正値と要求空燃比学習補正値と燃焼状態との関係を説明する図である。
【図６】各気筒の増減補正値の設定方法を説明する図である。
【図７】本実施例の空燃比学習補正値変更処理の実行例を示すタイムチャートである。
【符号の説明】
【００７５】
１１…エンジン（内燃機関）、１２…吸気管、１６…スロットルバルブ、２１…燃料噴射弁、２２…点火プラグ、２３…排気管、２４…排出ガスセンサ、３０…燃料タンク、３１…燃料ポンプ、３２…燃料供給配管（燃料供給通路）、３３…デリバリパイプ（燃料供給通路）、３４…ＥＣＵ（燃料補給判定手段，噴射量増減制御手段，燃焼状態判定手段，空燃比学習補正値変更手段）
【図１】
2009097453.tif 000003
【図２】
2009097453.tif 000004
【図３】
2009097453.tif 000005
【図４】
2009097453.tif 000006
【図５】
2009097453.tif 000007
【図６】
2009097453.tif 000008
【図７】
2009097453.tif 000009