(57)【要約】【課題】各気筒の吸気側にそれぞれ２つの燃料噴射弁を配置した内燃機関において、各気筒の２つの燃料噴射弁の噴射特性ずれを個別に学習補正できるようにする。【解決手段】各気筒の燃料噴射時期毎に各気筒の２つの燃料噴射弁２１を全て噴射動作させて空燃比Ｆ／Ｂ制御を実行しているときに空燃比Ｆ／Ｂ補正量に基づいてエンジン１１全体の燃料噴射弁２１の噴射特性ずれ（全体噴射特性ずれ）を学習する。この後、空燃比Ｆ／Ｂ制御実行中にいずれか１つの気筒（学習対象気筒）のみで片方の燃料噴射弁２１の噴射を停止して他方の燃料噴射弁２１のみで学習対象気筒の要求噴射量分の燃料を噴射する制御を、学習対象気筒と噴射を停止する燃料噴射弁２１をそれぞれ順番に切り替えて実施して各燃料噴射弁２１の噴射停止前後の空燃比Ｆ／Ｂ補正量の変化量に基づいて学習対象気筒の各燃料噴射弁２１の噴射特性ずれ（個別噴射特性ずれ）を個別に学習する。【選択図】図２
2010168905.tif 000002
【特許請求の範囲】
【請求項１】
複数の気筒を有する内燃機関の各気筒の吸気側にそれぞれ複数の燃料噴射弁を配置すると共に、排気通路に排出ガスの空燃比又はリッチ／リーンを検出する排出ガスセンサを配置し、前記排出ガスセンサの出力に基づいて空燃比フィードバック補正量を設定して前記各気筒の複数の燃料噴射弁の燃料噴射量を前記空燃比フィードバック補正量で補正する空燃比フィードバック制御を実行する空燃比制御手段を備えた内燃機関の空燃比学習制御装置において、
前記各気筒の燃料噴射時期毎に前記各気筒の複数の燃料噴射弁を全て噴射動作させて前記空燃比フィードバック制御を実行しているときに前記空燃比フィードバック補正量に基づいて前記内燃機関全体の燃料噴射弁噴射特性ずれ（以下「全体噴射特性ずれ」という）を学習する全体噴射特性ずれ学習手段と、
前記空燃比フィードバック制御を実行しているときにいずれか１つの気筒（以下「学習対象気筒」という）のみでいずれか１つの燃料噴射弁の噴射を停止して他の燃料噴射弁のみで前記学習対象気筒の要求噴射量分の燃料を噴射する制御を、前記学習対象気筒と噴射を停止する燃料噴射弁をそれぞれ順番に切り替えて実施して各燃料噴射弁の噴射停止前後の前記空燃比フィードバック補正量の変化量に基づいて前記学習対象気筒の各燃料噴射弁の噴射特性ずれ（以下「個別噴射特性ずれ」という）を個別に学習する個別噴射特性ずれ学習手段とを備え、
前記空燃比制御手段は、前記全体噴射特性ずれの学習値と前記個別噴射特性ずれの学習値とを用いて前記各気筒の複数の燃料噴射弁の燃料噴射量を個別に補正することを特徴とする内燃機関の空燃比学習制御装置。
【請求項２】
前記個別噴射特性ずれ学習手段は、前記全体噴射特性ずれ学習手段により前記全体噴射特性ずれの学習が完了した後に、前記各燃料噴射弁の燃料噴射量を前記全体噴射特性ずれの学習値で補正した状態で前記個別噴射特性ずれを学習することを特徴とする請求項１に記載の内燃機関の空燃比学習制御装置。
【請求項３】
複数の気筒を有する内燃機関の各気筒の吸気側にそれぞれ複数の燃料噴射弁を配置すると共に、排気通路に排出ガスの空燃比又はリッチ／リーンを検出する排出ガスセンサを配置し、前記排出ガスセンサの出力に基づいて空燃比フィードバック補正量を設定して前記各気筒の複数の燃料噴射弁の燃料噴射量を前記空燃比フィードバック補正量で補正する空燃比フィードバック制御を実行する空燃比制御手段を備えた内燃機関の空燃比学習制御装置において、
前記各気筒の燃料噴射時期毎に前記各気筒の複数の燃料噴射弁を全て噴射動作させて前記空燃比フィードバック制御を実行しているときに前記空燃比フィードバック補正量に基づいて前記内燃機関全体の燃料噴射弁噴射特性ずれ（以下「全体噴射特性ずれ」という）を学習する全体噴射特性ずれ学習手段と、
前記空燃比フィードバック制御を実行しているときに前記各気筒の複数の燃料噴射弁のうちのいずれか１つの燃料噴射弁からなる燃料噴射弁グループの噴射を停止して他の燃料噴射弁グループのみで各気筒の要求噴射量分の燃料を噴射する制御を、噴射を停止する燃料噴射弁グループを順番に切り替えて実施して燃料噴射弁グループの噴射停止前後の前記空燃比フィードバック補正量の変化量に基づいて燃料噴射弁グループ別の噴射特性ずれ（以下「グループ別噴射特性ずれ」という）を学習するグループ別噴射特性ずれ学習手段とを備え、
前記空燃比制御手段は、前記全体噴射特性ずれの学習値と前記グループ別噴射特性ずれの学習値とを用いて前記各気筒の複数の燃料噴射弁の燃料噴射量を燃料噴射弁グループ別に補正することを特徴とする内燃機関の空燃比学習制御装置。
【請求項４】
前記グループ別噴射特性ずれ学習手段は、前記全体噴射特性ずれ学習手段により前記全体噴射特性ずれの学習が完了した後に、前記各燃料噴射弁の燃料噴射量を前記全体噴射特性ずれの学習値で補正した状態で前記グループ別噴射特性ずれを学習することを特徴とする請求項３に記載の内燃機関の空燃比学習制御装置。
【請求項５】
前記空燃比フィードバック制御を実行しているときにいずれか１つの気筒（以下「学習対象気筒」という）のみでいずれか１つの燃料噴射弁の噴射を停止して他の燃料噴射弁のみで前記学習対象気筒の要求噴射量分の燃料を噴射する制御を、前記学習対象気筒と噴射を停止する燃料噴射弁をそれぞれ順番に切り替えて実施して各燃料噴射弁の噴射停止前後の前記空燃比フィードバック補正量の変化量に基づいて前記学習対象気筒の各燃料噴射弁の噴射特性ずれ（以下「個別噴射特性ずれ」という）を個別に学習する個別噴射特性ずれ学習手段を備え、
前記空燃比制御手段は、前記全体噴射特性ずれの学習値と前記グループ別噴射特性ずれの学習値と前記個別噴射特性ずれの学習値を用いて前記各気筒の複数の燃料噴射弁の燃料噴射量を補正することを特徴とする請求項３又は４に記載の内燃機関の空燃比学習制御装置。
【請求項６】
前記個別噴射特性ずれ学習手段は、前記全体噴射特性ずれ学習手段により前記全体噴射特性ずれの学習が完了し、且つ、前記グループ別噴射特性ずれ学習手段により前記グループ別噴射特性ずれの学習が完了した後、前記各燃料噴射弁の燃料噴射量を前記全体噴射特性ずれの学習値及び前記グループ別噴射特性ずれの学習値で補正した状態で前記個別噴射特性ずれを学習することを特徴とする請求項５に記載の内燃機関の空燃比学習制御装置。
【請求項７】
内燃機関の停止中でも記憶データを保持する書き換え可能な記憶手段に前記学習値を記憶し、
前記空燃比制御手段は、前記記憶手段に前記学習値が記憶されている場合には、前記記憶手段から読み出した前記学習値を用いて前記各気筒の複数の燃料噴射弁の燃料噴射量を補正することを特徴とする請求項１乃至６のいずれかに記載の内燃機関の空燃比学習制御装置。
【請求項８】
前記学習値が所定の許容範囲から外れたときに前記燃料噴射弁の異常と判定して運転者に警告する異常判定手段を備えていることを特徴とする請求項１乃至７のいずれかに記載の内燃機関の空燃比学習制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の各気筒の吸気側にそれぞれ複数の燃料噴射弁を配置した内燃機関の空燃比学習制御装置に関する発明である。
【背景技術】
【０００２】
従来の一般的な内燃機関の空燃比制御は、排気通路のうちの触媒の上流側に、排出ガスの空燃比又はリッチ／リーンを検出する排出ガスセンサを配置し、この排出ガスセンサの出力に基づいて空燃比フィードバック補正量を設定して各気筒の燃料噴射弁の燃料噴射量を空燃比フィードバック補正量で補正する空燃比フィードバック制御を実行することで、排出ガスの空燃比を排出ガス浄化効率が高くなる触媒の浄化ウインドウ内（理論空燃比付近）に制御するようにしている。
【０００３】
更に、特許文献１（特開昭６０−９０９４４号公報）に記載されているように、空燃比フィードバック制御実行中に空燃比フィードバック補正量に基づいて全気筒の燃料噴射弁の平均的な噴射特性ずれ（要求噴射量に対する実噴射量のずれによって生じる平均的な空燃比のずれ）を補正するための学習補正量を学習してメモリに記憶しておき、学習完了後は、各気筒の燃料噴射弁の燃料噴射量を空燃比フィードバック補正量と学習補正量で補正して空燃比制御精度を高めるようにしたものがある。
【０００４】
また、特許文献２（特開２００６−２９９９４５号公報）に記載されているように、内燃機関の気筒内での燃料噴霧の微粒化やポートウエット低減（吸気ポート内壁面への燃料付着量低減）等を目的として、内燃機関の各気筒の２つの吸気ポートにそれぞれ燃料噴射弁を配置して、各気筒にそれぞれ２つの燃料噴射弁で燃料を噴射するようにしたものがある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開昭６０−９０９４４号公報
【特許文献２】特開２００６−２９９９４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、燃料噴射弁の個体差（製造ばらつき）や経時変化等によって燃料噴射弁の噴射特性ずれが発生し、しかも、この噴射特性ずれは、燃料噴射弁毎にずれ量が異なる。そこで、上記特許文献２に記載された各気筒にそれぞれ２本の燃料噴射弁を配置したシステムにおいても、上記特許文献１の空燃比学習制御技術を適用することが考えられるが、上記特許文献１の空燃比学習制御技術は、全気筒の燃料噴射弁の平均的な噴射特性ずれ（平均的な空燃比のずれ）を学習補正量として学習するものであるため、各気筒の２つの燃料噴射弁のそれぞれの噴射特性ずれを個別に補正することはできない。このため、各燃料噴射弁の噴射特性ずれのばらつきにより、気筒間の空燃比ばらつきが発生して気筒間のトルクばらつきが発生したり、排出ガスの浄化効率が低下する等の問題を解決できない。
【０００７】
そこで、本発明が解決しようとする課題は、各気筒の吸気側にそれぞれ複数の燃料噴射弁を配置した内燃機関において、各気筒の複数の燃料噴射弁の噴射特性ずれを個別又はグループ別に学習補正できる内燃機関の空燃比学習制御装置を提供することにある。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、請求項１に係る発明は、複数の気筒を有する内燃機関の各気筒の吸気側にそれぞれ複数の燃料噴射弁を配置すると共に、排気通路に排出ガスの空燃比又はリッチ／リーンを検出する排出ガスセンサを配置し、前記排出ガスセンサの出力に基づいて空燃比フィードバック補正量を設定して前記各気筒の複数の燃料噴射弁の燃料噴射量を前記空燃比フィードバック補正量で補正する空燃比フィードバック制御を実行する空燃比制御手段を備えた内燃機関の空燃比学習制御装置において、前記各気筒の燃料噴射時期毎に前記各気筒の複数の燃料噴射弁を全て噴射動作させて前記空燃比フィードバック制御を実行しているときに前記空燃比フィードバック補正量に基づいて前記内燃機関全体の燃料噴射弁噴射特性ずれ（以下「全体噴射特性ずれ」という）を学習する全体噴射特性ずれ学習手段と、前記空燃比フィードバック制御を実行しているときにいずれか１つの気筒（以下「学習対象気筒」という）のみでいずれか１つの燃料噴射弁の噴射を停止して他の燃料噴射弁のみで前記学習対象気筒の要求噴射量分の燃料を噴射する制御を、前記学習対象気筒と噴射を停止する燃料噴射弁をそれぞれ順番に切り替えて実施して各燃料噴射弁の噴射停止前後の前記空燃比フィードバック補正量の変化量に基づいて前記学習対象気筒の各燃料噴射弁の噴射特性ずれ（以下「個別噴射特性ずれ」という）を個別に学習する個別噴射特性ずれ学習手段とを備え、前記空燃比制御手段は、前記全体噴射特性ずれの学習値と前記個別噴射特性ずれの学習値とを用いて前記各気筒の複数の燃料噴射弁の燃料噴射量を個別に補正することを特徴とするものである。
【０００９】
この構成では、空燃比フィードバック制御実行中に各気筒の複数の燃料噴射弁を全て噴射動作させて内燃機関全体の燃料噴射弁噴射特性ずれ（全体噴射特性ずれ）を学習すると共に、空燃比フィードバック制御実行中にいずれか１つの気筒（学習対象気筒）のみでいずれか１つの燃料噴射弁の噴射を停止して他の燃料噴射弁のみで学習対象気筒の要求噴射量分の燃料を噴射して各燃料噴射弁の噴射特性ずれ（個別噴射特性ずれ）を個別に学習するため、学習対象気筒に要求噴射量分の燃料を噴射しながら学習対象気筒の各燃料噴射弁の噴射特性ずれ（個別噴射特性ずれ）を個別に学習することができ、学習対象気筒と他の気筒との間の空燃比ばらつきやトルクばらつきを抑えながら個別噴射特性ずれを精度良く学習することができる。そして、全体噴射特性ずれの学習値と個別噴射特性ずれの学習値を用いて各気筒の複数の燃料噴射弁の燃料噴射量を個別に補正するため、各燃料噴射弁の噴射特性ずれを個別に精度良く補正することができて、燃料噴射弁間の噴射特性ずれのばらつきに起因する気筒間の空燃比ばらつきやトルクばらつきを効果的に低減することができる。
【００１０】
この場合、請求項２のように、全体噴射特性ずれ学習手段により全体噴射特性ずれの学習が完了した後に、各燃料噴射弁の燃料噴射量を全体噴射特性ずれの学習値で補正した状態で個別噴射特性ずれを学習するようにすると良い。このようにすれば、全体噴射特性ずれを補正した状態で個別噴射特性ずれを学習できるため、個別噴射特性ずれの学習精度を更に向上させることができる。
【００１１】
但し、本発明は、各燃料噴射弁の燃料噴射量を全体噴射特性ずれの学習値で補正しない状態で個別噴射特性ずれを学習し、全体噴射特性ずれと個別噴射特性ずれの学習完了後に全体噴射特性ずれの学習値と個別噴射特性ずれの学習値とを用いて各燃料噴射弁の燃料噴射量を個別に補正するようにしても良い。
【００１２】
また、請求項３のように、全体噴射特性ずれを学習する全体噴射特性ずれ学習手段の他に、空燃比フィードバック制御を実行しているときに各気筒の複数の燃料噴射弁のうちのいずれか１つの燃料噴射弁からなる燃料噴射弁グループの噴射を停止して他の燃料噴射弁グループのみで各気筒の要求噴射量分の燃料を噴射する制御を、噴射を停止する燃料噴射弁グループを順番に切り替えて実施して燃料噴射弁グループの噴射停止前後の空燃比フィードバック補正量の変化量に基づいて燃料噴射弁グループ別の噴射特性ずれ（以下「グループ別噴射特性ずれ」という）を学習するグループ別噴射特性ずれ学習手段を備え、全体噴射特性ずれの学習値とグループ別噴射特性ずれの学習値とを用いて各気筒の複数の燃料噴射弁の燃料噴射量を燃料噴射弁グループ別に補正するようにしても良い。
【００１３】
この構成では、空燃比フィードバック制御実行中に各気筒の複数の燃料噴射弁を全て噴射動作させて内燃機関全体の燃料噴射弁噴射特性ずれ（全体噴射特性ずれ）を学習すると共に、空燃比フィードバック制御実行中にいずれか１つの燃料噴射弁グループの噴射を停止して他の燃料噴射弁グループのみで各気筒の要求噴射量分の燃料を噴射しながら燃料噴射弁グループ別の噴射特性ずれ（グループ別噴射特性ずれ）を学習するため、各気筒の要求噴射量分の燃料を噴射しながらグループ別噴射特性ずれを学習することができ、気筒間の空燃比ばらつきやトルクばらつきを抑えながらグループ別噴射特性ずれを精度良く学習することができる。そして、全体噴射特性ずれの学習値とグループ別噴射特性ずれの学習値を用いて各気筒の複数の燃料噴射弁の燃料噴射量を燃料噴射弁グループ別に補正するため、各燃料噴射弁グループの噴射特性ずれを精度良く補正することができて、燃料噴射弁グループ間の噴射特性ずれのばらつきに起因する気筒間の空燃比ばらつきやトルクばらつきを低減することができる。
【００１４】
この場合、請求項４のように、全体噴射特性ずれ学習手段により全体噴射特性ずれの学習が完了した後に、各燃料噴射弁の燃料噴射量を全体噴射特性ずれの学習値で補正した状態でグループ別噴射特性ずれを学習するようにすると良い。このようにすれば、全体噴射特性ずれを補正した状態でグループ別噴射特性ずれを学習できるため、グループ別噴射特性ずれの学習精度を更に向上させることができる。
【００１５】
但し、本発明は、各燃料噴射弁の燃料噴射量を全体噴射特性ずれの学習値で補正しない状態でグループ別噴射特性ずれを学習し、全体噴射特性ずれとグループ別噴射特性ずれの学習完了後に全体噴射特性ずれの学習値とグループ別噴射特性ずれの学習値とを用いて各燃料噴射弁の燃料噴射量を燃料噴射弁グループ別に補正するようにしても良い。
【００１６】
更に、請求項５のように、全体噴射特性ずれとグループ別噴射特性ずれと個別噴射特性ずれをそれぞれ学習し、全体噴射特性ずれの学習値とグループ別噴射特性ずれの学習値と個別噴射特性ずれの学習値を用いて各気筒の複数の燃料噴射弁の燃料噴射量を補正するようにしても良い。このようにすれば、燃料噴射弁間の噴射特性ずれのばらつき及び燃料噴射弁グループ間の噴射特性ずれのばらつきに起因する気筒間の空燃比ばらつきやトルクばらつきを低減することができる。
【００１７】
この場合、請求項６のように、全体噴射特性ずれ学習手段により全体噴射特性ずれの学習が完了し、且つ、グループ別噴射特性ずれ学習手段によりグループ別噴射特性ずれの学習が完了した後、各燃料噴射弁の燃料噴射量を全体噴射特性ずれの学習値及びグループ別噴射特性ずれの学習値で補正した状態で個別噴射特性ずれを学習するようにすると良い。このようにすれば、全体噴射特性ずれとグループ別噴射特性ずれの両方を補正した状態で個別噴射特性ずれを学習できるため、個別噴射特性ずれの学習精度を更に向上させることができる。
【００１８】
また、請求項７のように、内燃機関の停止中でも記憶データを保持する書き換え可能な記憶手段に前記学習値を記憶し、前記記憶手段に前記学習値が記憶されている場合には、前記記憶手段から読み出した前記学習値を用いて各気筒の複数の燃料噴射弁の燃料噴射量を補正するようにすると良い。このようにすれば、記憶手段に学習値が記憶されている場合には、内燃機関の始動時から学習値を用いて各気筒の複数の燃料噴射弁の燃料噴射量を補正することができ、始動性向上や始動時のエミッション低減を実現することができる。      
【００１９】
また、請求項８のように、前記学習値が所定の許容範囲から外れたときに、燃料噴射弁の異常と判定して運転者に警告する異常判定手段を設けた構成としても良い。このようにすれば、燃料噴射弁の異常が発生したときに、異常な燃料噴射弁を特定したり、異常な燃料噴射弁が属する燃料噴射弁グループを特定することが可能になると共に、燃料噴射弁の異常が発生したことを早期に運転者に知らせて修理・点検を促すことができる。
【図面の簡単な説明】
【００２０】
【図１】図１は本発明の実施例１〜３で共通して用いるエンジン制御システム全体の概略構成図である。
【図２】図２は本発明の実施例１〜３で共通して用いる４気筒エンジンの構成例を説明する図である。
【図３】図３は実施例１の噴射特性ずれ学習補正メインルーチンの処理の流れを示すフローチャートである。
【図４】図４は実施例１の全体噴射特性ずれ学習ルーチンの処理の流れを示すフローチャートである。
【図５】図５は実施例１の個別噴射特性ずれ学習ルーチンの処理の流れを示すフローチャートである。
【図６】図６は実施例１の学習制御ルーチンの処理の流れを示すフローチャートである。
【図７】図７は燃料噴射弁の噴射特性のばらつきを説明する図である。
【図８】図８は実施例２の噴射特性ずれ学習補正メインルーチンの処理の流れを示すフローチャートである。
【図９】図９は実施例２のグループ別噴射特性ずれ学習ルーチンの処理の流れを示すフローチャートである。
【図１０】図８は実施例３の噴射特性ずれ学習補正メインルーチンの処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００２１】
以下、本発明を実施するための形態を具体化した３つの実施例１〜３を説明する。
【実施例１】
【００２２】
本発明の実施例１を図１乃至図７に基づいて説明する。
まず、図１に基づいてエンジン制御システム全体の概略構成を説明する。
内燃機関であるエンジン１１の吸気管１２の最上流部には、エアクリーナ１３が設けられ、このエアクリーナ１３の下流側に、吸入空気量を検出するエアフローメータ１４が設けられている。このエアフローメータ１４の下流側には、モータ１５によって開度調節されるスロットルバルブ１６と、このスロットルバルブ１６の開度（スロットル開度）を検出するスロットル開度センサ１７とが設けられている。
【００２３】
更に、スロットルバルブ１６の下流側には、サージタンク１８が設けられ、このサージタンク１８に、吸気管圧力を検出する吸気管圧力センサ１９が設けられている。また、サージタンク１８とエンジン１１の各気筒の吸気ポート３１との間には、各気筒に空気を導入する吸気マニホールド２０が接続されている。一方、エンジン１１のシリンダヘッドには、各気筒毎に点火プラグ２２が取り付けられ、各点火プラグ２２の火花放電によって筒内の混合気に着火される。
【００２４】
図２に示すように、エンジン１１の各気筒には、それぞれ２つの吸気ポート３１と２つの排気ポート３２が設けられ、各気筒の２つの吸気ポート３１の付近に、それぞれ吸気ポート３１に向けて燃料を噴射する燃料噴射弁２１が配置され、１気筒当たり２つの燃料噴射弁２１が配置されている。各吸気ポート３１は、それぞれ吸気バルブ３３によって開閉され、各排気ポート３２は、それぞれ排気バルブ３４によって開閉される。
【００２５】
一方、図１に示すように、エンジン１１の排気管２３（排気通路）には、排出ガスの空燃比又はリッチ／リーン等を検出する排出ガスセンサ２４（空燃比センサ、酸素センサ等）が設けられ、この排出ガスセンサ２４の下流側に、排出ガスを浄化する三元触媒等の触媒２５が設けられている。
【００２６】
また、エンジン１１のシリンダブロックには、冷却水温を検出する冷却水温センサ２６や、ノッキング振動を検出するノックセンサ２９が取り付けられている。また、クランク軸２７の外周側には、クランク軸２７が所定クランク角回転する毎にパルス信号を出力するクランク角センサ２８が取り付けられ、このクランク角センサ２８の出力パルス信号に基づいてクランク角やエンジン回転速度が検出される。
【００２７】
これら各種センサの出力は、エンジン制御回路（以下「ＥＣＵ」と表記する）３０に入力される。このＥＣＵ３０は、マイクロコンピュータを主体として構成され、内蔵されたＲＯＭ（記憶媒体）に記憶された各種のエンジン制御プログラムを実行することで、エンジン運転状態に応じて各気筒の２つの燃料噴射弁２１の燃料噴射弁２１の燃料噴射量や点火プラグ２２の点火時期を制御する。
【００２８】
また、ＥＣＵ３０は、所定の空燃比Ｆ／Ｂ制御実行条件が成立したときに、排出ガスセンサ２４の出力に基づいて排出ガスの空燃比を目標空燃比（例えば理論空燃比）に一致させるように空燃比Ｆ／Ｂ補正量を算出し、この空燃比Ｆ／Ｂ補正量を用いて各気筒の２つの燃料噴射弁２１の燃料噴射量を補正する空燃比Ｆ／Ｂ制御を実行する空燃比制御手段として機能する。ここで、「Ｆ／Ｂ」は「フィードバック」を意味する（以下、同様）。
【００２９】
ところで、図７に示すように、燃料噴射弁２１の個体差（製造ばらつき）や経時変化等によって燃料噴射弁２１の噴射特性ずれ（要求噴射量に対する実噴射量のずれ）が発生し、しかも、この噴射特性ずれは、燃料噴射弁２１毎にずれ量が異なる。
【００３０】
この点を考慮して、ＥＣＵ３０は、後述する図３乃至図６の噴射特性ずれ学習補正用の各ルーチンを実行することで、所定の学習実行条件が成立したときに、エンジン１１全体の燃料噴射弁２１の噴射特性ずれ（以下「全体噴射特性ずれ」という）を学習する全体噴射特性ずれ学習と、各燃料噴射弁２１の噴射特性ずれ（以下「個別噴射特性ずれ」という）を個別に学習する個別噴射特性ずれ学習とを実行し、全体噴射特性ずれの学習値と個別噴射特性ずれの学習値とを用いて各気筒の２つの燃料噴射弁２１の燃料噴射量を個別に補正するようにしている。
【００３１】
ここで、全体噴射特性ずれ学習では、各気筒の燃料噴射時期毎に各気筒の２つの燃料噴射弁２１を全て噴射動作させて空燃比Ｆ／Ｂ制御を実行しているときに空燃比Ｆ／Ｂ補正量に基づいてエンジン１１全体の燃料噴射弁２１の噴射特性ずれ（全体噴射特性ずれ）を学習する。
【００３２】
一方、個別噴射特性ずれ学習では、空燃比Ｆ／Ｂ制御の実行中に、いずれか１つの気筒（以下「学習対象気筒」という）のみで片方（例えば左側）の燃料噴射弁２１の噴射を停止して他方（例えば右側）の燃料噴射弁２１のみで学習対象気筒の要求噴射量分の燃料を噴射する制御を、学習対象気筒と噴射を停止する燃料噴射弁２１をそれぞれ順番に切り替えて実施して、各燃料噴射弁２１の噴射停止前後の空燃比Ｆ／Ｂ補正量の変化量に基づいて学習対象気筒の各燃料噴射弁２１の噴射特性ずれ（個別噴射特性ずれ）を個別に学習する。
【００３３】
以下、ＥＣＵ３０によって実行される図３乃至図６の噴射特性ずれ学習補正用の各ルーチンの処理内容を説明する。以下の説明では、図２に示す４気筒エンジンを例にして説明し、必要に応じて、各気筒の番号を＃１，＃２，＃３，＃４で表し、各気筒＃１〜＃４の２つの燃料噴射弁２１をＡ，Ｂで表す。
【００３４】
［噴射特性ずれ学習補正メインルーチン］
図３の噴射特性ずれ学習補正メインルーチンは、エンジン運転中に周期的に繰り返し実行される。本ルーチンが起動されると、まず、ステップ１０１で、所定の学習実行条件が成立しているか否かを、例えば、[1] 定常運転中（例えばアイドル運転中等）であること、且つ[2] 空燃比Ｆ／Ｂ制御実行中であること等の条件を満たすか否かで判定する。その結果、学習実行条件が成立していないと判定されれば、噴射特性ずれの学習に適した運転条件ではないと判断して、ステップ１０２以降の噴射特性ずれの学習に関する処理を行うことなく、本ルーチンを終了する。
【００３５】
一方、上記ステップ１０１で、学習実行条件が成立していると判定されれば、噴射特性ずれの学習に適した運転条件であると判断して、ステップ１０２以降の噴射特性ずれの学習に関する処理を次のようにして実行する。まず、ステップ１０２で、後述する図４の全体噴射特性ずれ学習ルーチンを実行して、空燃比Ｆ／Ｂ補正量ＡＦＦＢに基づいてエンジン１１全体の燃料噴射弁２１の噴射特性ずれ（全体噴射特性ずれ）を学習する。
【００３６】
この後、ステップ１０３に進み、全体噴射特性ずれ学習が完了したか否か（最終全体噴射特性ずれ学習値Ｇf.all.fin ＝１か否か）を判定し、全体噴射特性ずれ学習が完了するまで、全体噴射特性ずれの学習を継続する。
【００３７】
その後、全体噴射特性ずれ学習が完了した時点で、ステップ１０４に進み、エンジン停止中でも記憶データを保持する書き換え可能な記憶手段であるバックアップＲＡＭ３８に全体噴射特性ずれ学習値Ｇf.all を更新記憶して、この全体噴射特性ずれ学習値Ｇf.all を空燃比制御に適用する。これにより、空燃比制御実行中に、全気筒の各燃料噴射弁２１の燃料噴射量が一律に全体噴射特性ずれ学習値Ｇf.all で補正される。
【００３８】
この後、ステップ１０５に進み、後述する図５の個別噴射特性ずれ学習ルーチンを実行して、学習対象気筒と噴射を停止する燃料噴射弁２１をそれぞれ順番に切り替えて各燃料噴射弁２１の噴射停止前後の空燃比Ｆ／Ｂ補正量の変化量に基づいて学習対象気筒の噴射を停止した燃料噴射弁２１の噴射特性ずれ（個別噴射特性ずれ）を個別に学習する。
【００３９】
この後、ステップ１０６に進み、個別噴射特性ずれ学習が完了したか否か（燃料噴射弁識別番号ＮＵＭ＝９［最終番号］か否か）を判定し、個別噴射特性ずれ学習が完了するまで、個別噴射特性ずれの学習を継続する。
【００４０】
その後、個別噴射特性ずれ学習が完了した時点で、ステップ１０７に進み、個別噴射特性ずれ学習値Ｇf.#1A 〜Ｇf.#4A ，Ｇf.#1B 〜Ｇf.#4B をバックアップＲＡＭ３８に更新記憶して、これらの個別噴射特性ずれ学習値Ｇf.#1A 〜Ｇf.#4A ，Ｇf.#1B 〜Ｇf.#4B を空燃比制御に適用する。これにより、空燃比制御実行中に、各気筒＃１〜＃４の燃料噴射弁Ａ，Ｂの燃料噴射量がそれぞれ該当する個別噴射特性ずれ学習値Ｇf.#1A 〜Ｇf.#4A ，Ｇf.#1B 〜Ｇf.#4B で補正される。ここで、Ｇf.#1A 〜Ｇf.#4A は、それぞれ各気筒＃１〜＃４の一方の燃料噴射弁Ａの燃料噴射量を個別に補正するための個別噴射特性ずれ学習値であり、Ｇf.#1B 〜Ｇf.#4B は、それぞれ各気筒＃１〜＃４の他方の燃料噴射弁Ｂの燃料噴射量を個別に補正するための個別噴射特性ずれ学習値である。
【００４１】
［全体噴射特性ずれ学習ルーチン］
図４の全体噴射特性ずれ学習ルーチンは、図３の噴射特性ずれ学習補正メインルーチンのステップ１０２で実行されるサブルーチンであり、特許請求の範囲でいう全体噴射特性ずれ学習手段としての役割を果たす。本ルーチンが起動されると、まず、ステップ２０１で、バックアップＲＡＭ３８から読み出した全体噴射特性ずれ学習値Ｇf.all を空燃比学習値Ｇf にセットする。これにより、全体噴射特性ずれ学習の実行中は、全気筒の各燃料噴射弁２１の燃料噴射量が一律に空燃比学習値Ｇf （全体噴射特性ずれ学習値Ｇf.all ）で補正される。尚、バックアップＲＡＭ３８に全体噴射特性ずれ学習値Ｇf.all が記憶されていない場合は、予め設定された初期値が空燃比学習値Ｇf にセットされる。
【００４２】
この後、ステップ２０２に進み、後述する図６の学習制御ルーチンを実行して空燃比学習値Ｇf を更新した後、ステップ２０３に進み、現時点の空燃比学習値Ｇf を全体噴射特性ずれ学習値Ｇf.all にセットしてバックアップＲＡＭ３８に更新記憶する。
【００４３】
この後、ステップ２０４に進み、学習が完了したか否か（空燃比Ｆ／Ｂ補正量ＡＦＦＢがほぼ０か否か）を判定し、学習が完了するまで、上記ステップ２０２〜２０４の処理を繰り返す。その後、上記ステップ２０４で、学習完了と判定された時点で、ステップ２０５に進み、最終全体噴射特性ずれ学習値Ｇf.all.fin を「１」にセットして本ルーチンを終了する。
【００４４】
尚、全体噴射特性ずれ学習値Ｇf.all を学習（更新記憶）する際に、全体噴射特性ずれ学習値Ｇf.all が予め決められた許容範囲内であるか否かを判定して、全体噴射特性ずれ学習値Ｇf.all が許容範囲から外れた場合は、いずれかの燃料噴射弁２１の異常と判定して、その異常情報をバックアップＲＡＭ３８に記憶すると共に、警告ランプを点灯又は点滅させたり、運転席のインストルメントパネルの表示部に警告表示して運転者に警告するようにしても良い。更に、全体噴射特性ずれ学習値Ｇf.all が予め決められた許容範囲内となるようにガード処理する（全体噴射特性ずれ学習値Ｇf.all の上下限値を所定値以内に制限する）ようにしても良い。
【００４５】
［個別噴射特性ずれ学習ルーチン］
図５の個別噴射特性ずれ学習ルーチンは、図３の噴射特性ずれ学習補正メインルーチンのステップ１０５で実行されるサブルーチンであり、特許請求の範囲でいう個別噴射特性ずれ学習手段としての役割を果たす。本ルーチンが起動されると、まず、ステップ３０１で、本ルーチンの最後のステップ３０６でカウントアップされる燃料噴射弁識別番号ＮＵＭ（＝１〜９）に基づいて以下の（１）〜（８）のいずれに該当するかを判別して、噴射を停止する燃料噴射弁２１を選択する。
【００４６】
（１）燃料噴射弁識別番号ＮＵＭ＝１の場合は、気筒＃１が学習対象気筒となり、当該気筒＃１の一方の燃料噴射弁Ａの噴射を停止し、当該気筒＃１の他方の燃料噴射弁Ｂの噴射量を２倍に増大させることで、当該気筒＃１に要求噴射量分の燃料を噴射する。
【００４７】
（２）燃料噴射弁識別番号ＮＵＭ＝２の場合は、気筒＃１が学習対象気筒となり、当該気筒＃１の他方の燃料噴射弁Ｂの噴射を停止し、当該気筒＃１の一方の燃料噴射弁Ａの噴射量を２倍に増大させることで、当該気筒＃１に要求噴射量分の燃料を噴射する。
【００４８】
（３）燃料噴射弁識別番号ＮＵＭ＝３の場合は、気筒＃２が学習対象気筒となり、当該気筒＃２の一方の燃料噴射弁Ａの噴射を停止し、当該気筒＃２の他方の燃料噴射弁Ｂの噴射量を２倍に増大させることで、当該気筒＃２に要求噴射量分の燃料を噴射する。
【００４９】
（４）燃料噴射弁識別番号ＮＵＭ＝４の場合は、気筒＃２が学習対象気筒となり、当該気筒＃２の他方の燃料噴射弁Ｂの噴射を停止し、当該気筒＃２の一方の燃料噴射弁Ａの噴射量を２倍に増大させることで、当該気筒＃２に要求噴射量分の燃料を噴射する。
【００５０】
（５）燃料噴射弁識別番号ＮＵＭ＝５の場合は、気筒＃３が学習対象気筒となり、当該気筒＃３の一方の燃料噴射弁Ａの噴射を停止し、当該気筒＃３の他方の燃料噴射弁Ｂの噴射量を２倍に増大させることで、当該気筒＃３に要求噴射量分の燃料を噴射する。
【００５１】
（６）燃料噴射弁識別番号ＮＵＭ＝６の場合は、気筒＃３が学習対象気筒となり、当該気筒＃３の他方の燃料噴射弁Ｂの噴射を停止し、当該気筒＃３の一方の燃料噴射弁Ａの噴射量を２倍に増大させることで、当該気筒＃３に要求噴射量分の燃料を噴射する。
【００５２】
（７）燃料噴射弁識別番号ＮＵＭ＝７の場合は、気筒＃４が学習対象気筒となり、当該気筒＃４の一方の燃料噴射弁Ａの噴射を停止し、当該気筒＃４の他方の燃料噴射弁Ｂの噴射量を２倍に増大させることで、当該気筒＃４に要求噴射量分の燃料を噴射する。
【００５３】
（８）燃料噴射弁識別番号ＮＵＭ＝８の場合は、気筒＃４が学習対象気筒となり、当該気筒＃４の他方の燃料噴射弁Ｂの噴射を停止し、当該気筒＃４の一方の燃料噴射弁Ａの噴射量を２倍に増大させることで、当該気筒＃４に要求噴射量分の燃料を噴射する。
【００５４】
この後、ステップ３０２に進み、現時点の燃料噴射弁識別番号ＮＵＭに基づいて以下のいずれに該当するかを判別して、現時点の燃料噴射弁識別番号ＮＵＭに対応する個別噴射特性ずれ学習値を空燃比学習値Ｇf にセットする。
【００５５】
燃料噴射弁識別番号ＮＵＭ＝１の場合は、気筒＃１の一方の燃料噴射弁Ａの個別噴射特性ずれ学習値Ｇf.#1A を空燃比学習値Ｇf にセットする。
【００５６】
燃料噴射弁識別番号ＮＵＭ＝２の場合は、気筒＃１の他方の燃料噴射弁Ｂの個別噴射特性ずれ学習値Ｇf.#1B を空燃比学習値Ｇf にセットする。
【００５７】
燃料噴射弁識別番号ＮＵＭ＝３の場合は、気筒＃２の一方の燃料噴射弁Ａの個別噴射特性ずれ学習値Ｇf.#2A を空燃比学習値Ｇf にセットする。
【００５８】
燃料噴射弁識別番号ＮＵＭ＝４の場合は、気筒＃２の他方の燃料噴射弁Ｂの個別噴射特性ずれ学習値Ｇf.#2B を空燃比学習値Ｇf にセットする。
【００５９】
燃料噴射弁識別番号ＮＵＭ＝５の場合は、気筒＃３の一方の燃料噴射弁Ａの個別噴射特性ずれ学習値Ｇf.#3A を空燃比学習値Ｇf にセットする。
【００６０】
燃料噴射弁識別番号ＮＵＭ＝６の場合は、気筒＃３の他方の燃料噴射弁Ｂの個別噴射特性ずれ学習値Ｇf.#3B を空燃比学習値Ｇf にセットする。
【００６１】
燃料噴射弁識別番号ＮＵＭ＝７の場合は、気筒＃４の一方の燃料噴射弁Ａの個別噴射特性ずれ学習値Ｇf.#4A を空燃比学習値Ｇf にセットする。
【００６２】
燃料噴射弁識別番号ＮＵＭ＝８の場合は、気筒＃４の他方の燃料噴射弁Ｂの個別噴射特性ずれ学習値Ｇf.#4B を空燃比学習値Ｇf にセットする。
【００６３】
この後、ステップ３０３に進み、後述する図６の学習制御ルーチンを実行して空燃比学習値Ｇf を更新した後、ステップ３０４に進み、現時点の燃料噴射弁識別番号ＮＵＭに基づいて以下のいずれに該当するかを判別して、現時点の空燃比学習値Ｇf を燃料噴射弁識別番号ＮＵＭに対応する個別噴射特性ずれ学習値にセットする。
【００６４】
燃料噴射弁識別番号ＮＵＭ＝１の場合は、現時点の空燃比学習値Ｇf を気筒＃１の一方の燃料噴射弁Ａの個別噴射特性ずれ学習値Ｇf.#1A にセットする。
【００６５】
燃料噴射弁識別番号ＮＵＭ＝２の場合は、現時点の空燃比学習値Ｇf を気筒＃１の他方の燃料噴射弁Ｂの個別噴射特性ずれ学習値Ｇf.#1B にセットする。
【００６６】
燃料噴射弁識別番号ＮＵＭ＝３の場合は、現時点の空燃比学習値Ｇf を気筒＃２の一方の燃料噴射弁Ａの個別噴射特性ずれ学習値Ｇf.#2A にセットする。
【００６７】
燃料噴射弁識別番号ＮＵＭ＝４の場合は、現時点の空燃比学習値Ｇf を気筒＃２の他方の燃料噴射弁Ｂの個別噴射特性ずれ学習値Ｇf.#2B にセットする。
【００６８】
燃料噴射弁識別番号ＮＵＭ＝５の場合は、現時点の空燃比学習値Ｇf を気筒＃３の一方の燃料噴射弁Ａの個別噴射特性ずれ学習値Ｇf.#3A にセットする。
【００６９】
燃料噴射弁識別番号ＮＵＭ＝６の場合は、現時点の空燃比学習値Ｇf を気筒＃３の他方の燃料噴射弁Ｂの個別噴射特性ずれ学習値Ｇf.#3B にセットする。
【００７０】
燃料噴射弁識別番号ＮＵＭ＝７の場合は、現時点の空燃比学習値Ｇf を気筒＃４の一方の燃料噴射弁Ａの個別噴射特性ずれ学習値Ｇf.#4A にセットする。
【００７１】
燃料噴射弁識別番号ＮＵＭ＝８の場合は、現時点の空燃比学習値Ｇf を気筒＃４の他方の燃料噴射弁Ｂの個別噴射特性ずれ学習値Ｇf.#4B にセットする。
【００７２】
この後、ステップ３０５に進み、学習が完了したか否か（空燃比Ｆ／Ｂ補正量ＡＦＦＢがほぼ０か否か）を判定し、学習が完了するまで、上記ステップ３０３〜３０５の処理を繰り返す。その後、上記ステップ３０５で、学習完了と判定された時点で、ステップ３０６に進み、燃料噴射弁識別番号ＮＵＭを１だけ増加させて本ルーチンを終了する。
【００７３】
尚、個別噴射特性ずれ学習値Ｇf.#1A 〜Ｇf.#4A ，Ｇf.#1B 〜Ｇf.#4B を学習する際に、それらの個別噴射特性ずれ学習値が予め決められた許容範囲内であるか否かを判定して、いずれかの個別噴射特性ずれ学習値が許容範囲から外れた場合は、許容範囲から外れた燃料噴射弁２１が異常であると判定してその異常情報をバックアップＲＡＭ３８に記憶すると共に、警告ランプを点灯又は点滅させたり、運転席のインストルメントパネルの表示部に警告表示して運転者に警告するようにしても良い。この場合、いずれかの燃料噴射弁２１の異常が発生したときに、異常な燃料噴射弁２１を特定することができる。更に、個別噴射特性ずれ学習値が予め決められた許容範囲内となるようにガード処理する（個別噴射特性ずれ学習値の上下限値を所定値以内に制限する）ようにしても良い。
【００７４】
［学習制御ルーチン］
図６の学習制御ルーチンは、図４の全体噴射特性ずれ学習ルーチンのステップ２０２と図５の個別噴射特性ずれ学習ルーチンのステップ３０３で実行されるサブルーチンである。本ルーチンが起動されると、まず、ステップ４０１で、現時点の空燃比学習値Ｇf を前回空燃比学習値Ｇf.o にセットし、次のステップ４０２で、現時点の空燃比Ｆ／Ｂ補正量ＡＦＦＢを前回空燃比Ｆ／Ｂ補正量ＡＦＦＢ.oにセットする。
【００７５】
この後、ステップ４０３、４０４の判定処理により、空燃比Ｆ／Ｂ補正量ＡＦＦＢがプラス値、０、マイナス値のいずれであるかを判別して、空燃比Ｆ／Ｂ補正量ＡＦＦＢが０と判定された場合（ステップ４０３、４０４で共に「Ｙｅｓ」と判定された場合）には、ステップ４０５に進み、空燃比学習値更新量ＤＬＧＦを０にセットする。
【００７６】
また、空燃比Ｆ／Ｂ補正量ＡＦＦＢがマイナス値と判定された場合（ステップ４０３で「Ｎｏ」と判定された場合）には、ステップ４０７に進み、空燃比学習値更新量ＤＬＧＦを予め設定された所定値（マイナス値）にセットする。
【００７７】
一方、空燃比Ｆ／Ｂ補正量ＡＦＦＢがプラス値と判定された場合（ステップ４０３で「Ｙｅｓ」、ステップ４０４で「Ｎｏ」と判定された場合）には、ステップ４０６に進み、空燃比学習値更新量ＤＬＧＦを予め設定された所定値（プラス値）にセットする。
【００７８】
以上のようにして空燃比学習値更新量ＤＬＧＦをセットした後、ステップ４０８に進み、前回空燃比学習値Ｇf.o に空燃比学習値更新量ＤＬＧＦを加算した値を新たな空燃比学習値Ｇf とする。
【００７９】
この後、ステップ４０９に進み、前回空燃比Ｆ／Ｂ補正量ＡＦＦＢ.oから空燃比学習値更新量ＤＬＧＦを加算した値を新たな空燃比Ｆ／Ｂ補正量ＡＦＦＢとして、本ルーチンを終了する。
【００８０】
以上説明した本実施例１によれば、各気筒の燃料噴射時期毎に各気筒の２つの燃料噴射弁２１を全て噴射動作させて空燃比Ｆ／Ｂ制御を実行しているときに空燃比Ｆ／Ｂ補正量に基づいてエンジン１１全体の燃料噴射弁２１の噴射特性ずれ（全体噴射特性ずれ）を学習した後、空燃比Ｆ／Ｂ制御の実行中にいずれか１つの気筒（学習対象気筒）のみで片方の燃料噴射弁２１の噴射を停止して他方の燃料噴射弁２１のみで学習対象気筒の要求噴射量分の燃料を噴射する制御を、学習対象気筒と噴射を停止する燃料噴射弁２１をそれぞれ順番に切り替えて実施して各燃料噴射弁２１の噴射停止前後の空燃比Ｆ／Ｂ補正量の変化量に基づいて学習対象気筒の各燃料噴射弁２１の噴射特性ずれ（個別噴射特性ずれ）を個別に学習するようにしたので、学習対象気筒に要求噴射量分の燃料を噴射しながら学習対象気筒の各燃料噴射弁２１の噴射特性ずれ（個別噴射特性ずれ）を個別に学習することができ、学習対象気筒と他の気筒との間の空燃比ばらつきやトルクばらつきを抑えながら個別噴射特性ずれを精度良く学習することができる。そして、全体噴射特性ずれの学習値と個別噴射特性ずれの学習値を用いて各気筒の２つの燃料噴射弁２１の燃料噴射量を個別に補正するため、各燃料噴射弁２１の噴射特性ずれを個別に精度良く補正することができて、燃料噴射弁２１間の噴射特性ずれのばらつきに起因する気筒間の空燃比ばらつきやトルクばらつきを効果的に低減することができる。
【００８１】
しかも、本実施例１では、全体噴射特性ずれの学習が完了した後に、各燃料噴射弁２１の燃料噴射量を全体噴射特性ずれの学習値で補正した状態で個別噴射特性ずれを学習するようにしたので、全体噴射特性ずれを補正した状態で個別噴射特性ずれを精度良く学習することができ、個別噴射特性ずれの学習精度を更に向上させることができる。
【００８２】
但し、本発明は、各燃料噴射弁２１の燃料噴射量を全体噴射特性ずれの学習値で補正しない状態で個別噴射特性ずれを学習し、全体噴射特性ずれと個別噴射特性ずれの学習完了後に全体噴射特性ずれの学習値と個別噴射特性ずれの学習値とを用いて各燃料噴射弁２１の燃料噴射量を個別に補正するようにしても良い。
【実施例２】
【００８３】
次に、図８及び図９を用いて本発明の実施例２を説明する。但し、前記実施例１と実質的に同一部分については説明を省略又は簡略化し、主として前記実施例１と異なる部分について説明する。
【００８４】
本実施例２では、前記実施例１と同様の方法で全体噴射特性ずれを学習した後に、グループ別噴射特性ずれを学習し、全体噴射特性ずれの学習値とグループ別噴射特性ずれの学習値とを用いて各気筒の２つの燃料噴射弁２１の燃料噴射量を燃料噴射弁グループ別に補正するようにしている。
【００８５】
ここで、グループ別噴射特性ずれの学習では、空燃比Ｆ／Ｂ制御実行中に各気筒の２つの燃料噴射弁２１のうちの一方（例えば左側）の燃料噴射弁２１からなる燃料噴射弁グループの噴射を停止して他方（例えば右側）の燃料噴射弁グループのみで各気筒の要求噴射量分の燃料を噴射する制御を、噴射を停止する燃料噴射弁グループを切り替えて実施して、燃料噴射弁グループの噴射停止前後の空燃比Ｆ／Ｂ補正量の変化量に基づいて燃料噴射弁グループ別の噴射特性ずれ（グループ別噴射特性ずれ）を学習する。
以下、本実施例２で実行される図８及び図９の噴射特性ずれ学習補正用の各ルーチンの処理内容を説明する。
【００８６】
［噴射特性ずれ学習補正メインルーチン］
図８の噴射特性ずれ学習補正メインルーチンは、エンジン運転中に周期的に繰り返し実行される。本ルーチンが起動されると、まず、ステップ５０１〜５０４で、前記実施例１で説明した図３の噴射特性ずれ学習補正メインルーチンのステップ１０１〜１０４と同様の処理により、空燃比Ｆ／Ｂ補正量ＡＦＦＢに基づいてエンジン１１全体の燃料噴射弁２１の噴射特性ずれ（全体噴射特性ずれ）を学習して、全体噴射特性ずれ学習が完了した時点で、バックアップＲＡＭ３８に全体噴射特性ずれ学習値Ｇf.all を更新記憶して、この全体噴射特性ずれ学習値Ｇf.all を空燃比制御に適用する。
【００８７】
この後、ステップ５０５に進み、後述する図９のグループ別噴射特性ずれ学習ルーチンを実行して、一方の燃料噴射弁グループの噴射を停止して他方の燃料噴射弁グループのみで各気筒の要求噴射量分の燃料を噴射して、燃料噴射弁グループの噴射停止前後の空燃比Ｆ／Ｂ補正量の変化量に基づいて燃料噴射弁グループ別の噴射特性ずれ（グループ別噴射特性ずれ）を学習する。
【００８８】
この後、ステップ５０６に進み、グループ別噴射特性ずれ学習が完了したか否か（グループ識別番号ＧＲＰ＝３［最終番号］か否か）を判定し、グループ別噴射特性ずれ学習が完了するまで、グループ別噴射特性ずれの学習を継続する。
【００８９】
その後、グループ別噴射特性ずれ学習が完了した時点で、ステップ５０７に進み、グループ別噴射特性ずれ学習値Ｇf.A ，Ｇf.B をバックアップＲＡＭ３８に更新記憶して、このグループ別噴射特性ずれ学習値Ｇf.A ，Ｇf.B を空燃比制御に適用する。これにより、空燃比制御実行中に、各気筒＃１，…，＃４の燃料噴射弁Ａ，Ｂの燃料噴射量が燃料噴射弁グループ別にグループ別噴射特性ずれ学習値Ｇf.A ，Ｇf.B で補正される。
【００９０】
［グループ別噴射特性ずれ学習ルーチン］
図９のグループ別噴射特性ずれ学習ルーチンは、図８の噴射特性ずれ学習補正メインルーチンのステップ５０５で実行されるサブルーチンであり、特許請求の範囲でいうグループ別噴射特性ずれ学習手段としての役割を果たす。本ルーチンが起動されると、まず、ステップ６０１で、本ルーチンの最後のステップ６０６でカウントアップされるグループ識別番号ＧＲＰに基づいて以下のいずれに該当するかを判別して、噴射を実行する燃料噴射弁グループを選択する。
【００９１】
グループ識別番号ＧＲＰ＝１の場合は、一方の燃料噴射弁グループＡ（各気筒＃１〜＃４の一方の燃料噴射弁Ａ）のみで噴射し、他方の燃料噴射弁グループＢ（各気筒＃１〜＃４の他方の燃料噴射弁Ｂ）の噴射を停止する。
【００９２】
グループ識別番号ＧＲＰ＝２の場合は、他方の燃料噴射弁グループＢ（各気筒＃１〜＃４の他方の燃料噴射弁Ｂ）のみで噴射し、一方の燃料噴射弁グループＡ（各気筒＃１〜＃４の一方の燃料噴射弁Ａ）の噴射を停止する。
【００９３】
この後、ステップ６０２に進み、グループ識別番号ＧＲＰに基づいて以下のいずれに該当するかを判別して、現時点のグループ識別番号ＧＲＰに対応するグループ別噴射特性ずれ学習値を空燃比学習値Ｇf にセットする。
【００９４】
グループ識別番号ＧＲＰ＝１の場合は、一方の燃料噴射弁グループＡのグループ別噴射特性ずれ学習値Ｇf.A を空燃比学習値Ｇf にセットする。
グループ識別番号ＧＲＰ＝２の場合は、他方の燃料噴射弁グループＢのグループ別噴射特性ずれ学習値Ｇf.B を空燃比学習値Ｇf にセットする。
【００９５】
この後、ステップ６０３に進み、前記実施例１で説明する図６の学習制御ルーチンを実行して空燃比学習値Ｇf を更新した後、ステップ６０４に進み、グループ識別番号ＧＲＰに基づいて以下のいずれに該当するかを判別して、現時点の空燃比学習値Ｇf をグループ識別番号ＧＲＰに対応するグループ別噴射特性ずれ学習値にセットする。
【００９６】
グループ識別番号ＧＲＰ＝１の場合は、現時点の空燃比学習値Ｇf を一方の燃料噴射弁グループＡのグループ別噴射特性ずれ学習値Ｇf.A にセットする。
グループ識別番号ＧＲＰ＝２の場合は、現時点の空燃比学習値Ｇf を他方の燃料噴射弁グループＢのグループ別噴射特性ずれ学習値Ｇf.B にセットする。
【００９７】
この後、ステップ６０５に進み、学習が完了したか否か（空燃比Ｆ／Ｂ補正量ＡＦＦＢがほぼ０か否か）を判定し、学習が完了するまで、上記ステップ６０３〜６０５の処理を繰り返す。その後、上記ステップ６０５で、学習完了と判定された時点で、ステップ６０６に進み、グループ識別番号ＧＲＰを１だけ増加させて本ルーチンを終了する。
【００９８】
尚、グループ別噴射特性ずれ学習値Ｇf.A ，Ｇf.B を学習する際に、それらのグループ別噴射特性ずれ学習値が予め決められた許容範囲内であるか否かを判定して、いずれかの個別噴射特性ずれ学習値が許容範囲から外れた場合は、許容範囲から外れた燃料噴射弁グループのいずれかの燃料噴射弁２１が異常であると判定して、その異常情報をバックアップＲＡＭ３８に記憶すると共に、警告ランプを点灯又は点滅させたり、運転席のインストルメントパネルの表示部に警告表示して運転者に警告するようにしても良い。この場合、いずれかの燃料噴射弁２１の異常が発生したときに、異常な燃料噴射弁２１が属する燃料噴射弁グループを特定することができる。更に、グループ別噴射特性ずれ学習値が予め決められた許容範囲内となるようにガード処理する（グループ別噴射特性ずれ学習値の上下限値を所定値以内に制限する）ようにしても良い。
【００９９】
以上説明した本実施例２では、空燃比Ｆ／Ｂ制御実行中に各気筒の２つの燃料噴射弁２１を全て噴射動作させてエンジン１１全体の燃料噴射弁２１の噴射特性ずれ（全体噴射特性ずれ）を学習した後、空燃比Ｆ／Ｂ制御実行中に一方の燃料噴射弁グループの噴射を停止して他方の燃料噴射弁グループのみで各気筒の要求噴射量分の燃料を噴射しながら燃料噴射弁グループ別の噴射特性ずれ（グループ別噴射特性ずれ）を学習するため、各気筒の要求噴射量分の燃料を噴射しながらグループ別噴射特性ずれを学習することができ、気筒間の空燃比ばらつきやトルクばらつきを抑えながらグループ別噴射特性ずれを精度良く学習することができる。そして、全体噴射特性ずれの学習値とグループ別噴射特性ずれの学習値を用いて各気筒の２つの燃料噴射弁２１の燃料噴射量を燃料噴射弁グループ別に補正するため、各燃料噴射弁グループの噴射特性ずれを精度良く補正することができて、燃料噴射弁グループ間の噴射特性ずれのばらつきに起因する気筒間の空燃比ばらつきやトルクばらつきを低減することができる。
【０１００】
更に、本実施例２では、全体噴射特性ずれの学習が完了した後に、各燃料噴射弁２１の燃料噴射量を全体噴射特性ずれの学習値で補正した状態でグループ別噴射特性ずれを学習するようにしたので、全体噴射特性ずれを補正した状態でグループ別噴射特性ずれを学習することができて、グループ別噴射特性ずれの学習精度を更に向上させることができる。      
【０１０１】
但し、本発明は、各燃料噴射弁２１の燃料噴射量を全体噴射特性ずれの学習値で補正しない状態でグループ別噴射特性ずれを学習し、全体噴射特性ずれとグループ別噴射特性ずれの学習完了後に全体噴射特性ずれの学習値とグループ別噴射特性ずれの学習値とを用いて各燃料噴射弁２１の燃料噴射量を燃料噴射弁グループ別に補正するようにしても良い。
【実施例３】
【０１０２】
本発明の実施例３では、上記実施例１，２で説明した全体噴射特性ずれとグループ別噴射特性ずれと個別噴射特性ずれをそれぞれ学習し、全体噴射特性ずれの学習値とグループ別噴射特性ずれの学習値と個別噴射特性ずれの学習値を用いて各気筒の複数の燃料噴射弁２１の燃料噴射量を補正するようにしている。
【０１０３】
本実施例３では、エンジン運転中に図１０の噴射特性ずれ学習補正メインルーチンを周期的に繰り返し実行する。本ルーチンが起動されると、まず、ステップ７０１〜７０４で、前記実施例１で説明した図３の噴射特性ずれ学習補正メインルーチンのステップ１０１〜１０４と同様の処理により、空燃比Ｆ／Ｂ補正量ＡＦＦＢに基づいてエンジン１１全体の燃料噴射弁２１の噴射特性ずれ（全体噴射特性ずれ）を学習して、全体噴射特性ずれ学習が完了した時点で、バックアップＲＡＭ３８に全体噴射特性ずれ学習値Ｇf.all を更新記憶して、この全体噴射特性ずれ学習値Ｇf.all を空燃比制御に適用する。
【０１０４】
この後、ステップ７０５〜７０７で、前記実施例２で説明した図８の噴射特性ずれ学習補正メインルーチンのステップ５０５〜５０７と同様の処理により、一方の燃料噴射弁グループの噴射を停止して他方の燃料噴射弁グループのみで各気筒の要求噴射量分の燃料を噴射して、燃料噴射弁グループの噴射停止前後の空燃比Ｆ／Ｂ補正量の変化量に基づいて燃料噴射弁グループ別の噴射特性ずれ（グループ別噴射特性ずれ）を学習し、グループ別噴射特性ずれ学習が完了した時点で、グループ別噴射特性ずれ学習値Ｇf.A ，Ｇf.B をバックアップＲＡＭ３８に更新記憶して、グループ別噴射特性ずれ学習値Ｇf.A ，Ｇf.B を空燃比制御に適用する。
【０１０５】
この後、ステップ７０８〜７１０で、前記実施例１で説明した図３の噴射特性ずれ学習補正メインルーチンのステップ１０５〜１０７と同様の処理により、学習対象気筒と噴射を停止する燃料噴射弁２１をそれぞれ順番に切り替えて各燃料噴射弁２１の噴射停止前後の空燃比Ｆ／Ｂ補正量の変化量に基づいて学習対象気筒の各燃料噴射弁２１の噴射特性ずれ（個別噴射特性ずれ）を個別に学習し、個別噴射特性ずれ学習が完了した時点で、個別噴射特性ずれ学習値Ｇf.#1A 〜Ｇf.#4A ，Ｇf.#1B 〜Ｇf.#4B をバックアップＲＡＭ３８に更新記憶して、個別噴射特性ずれ学習値Ｇf.#1A 〜Ｇf.#4A ，Ｇf.#1B 〜Ｇf.#4B を空燃比制御に適用する。
【０１０６】
以上説明した本実施例３によれば、全体噴射特性ずれとグループ別噴射特性ずれと個別噴射特性ずれをそれぞれ学習し、全体噴射特性ずれの学習値とグループ別噴射特性ずれの学習値と個別噴射特性ずれの学習値を用いて各気筒の複数の燃料噴射弁２１の燃料噴射量を補正するようにしたので、燃料噴射弁２１間の噴射特性ずれのばらつき及び燃料噴射弁グループ間の噴射特性ずれのばらつきに起因する気筒間の空燃比ばらつきやトルクばらつきを低減することができる。
【０１０７】
しかも、本実施例３では、全体噴射特性ずれの学習が完了した後、各燃料噴射弁２１の燃料噴射量を全体噴射特性ずれの学習値で補正した状態でグループ別噴射特性ずれを学習し、その後、各燃料噴射弁２１の燃料噴射量を全体噴射特性ずれの学習値及びグループ別噴射特性ずれの学習値で補正した状態で個別噴射特性ずれを学習するようにしたので、全体噴射特性ずれとグループ別噴射特性ずれの両方を補正した状態で個別噴射特性ずれを学習することができて、個別噴射特性ずれの学習精度を更に向上させることができる。
【０１０８】
但し、本発明は、全体噴射特性ずれの学習とグループ別噴射特性ずれの学習と個別噴射特性ずれの学習の順序は適宜変更しても良い。
その他、本発明は、図２に示す４気筒エンジンに限定されず、３気筒以下又は５気筒以上のエンジンに適用したり、各気筒にそれぞれ３つ以上の燃料噴射弁を設けたエンジンに適用しても良い。
【符号の説明】
【０１０９】
１１…エンジン（内燃機関）、１２…吸気管、１６…スロットルバルブ、２１…燃料噴射弁、２２…点火プラグ、２３…排気管（排気通路）、２４…排出ガスセンサ、３０…ＥＣＵ（空燃比制御手段，全体噴射特性ずれ学習手段，個別噴射特性ずれ学習手段，グループ別噴射特性ずれ学習手段，異常判定手段）、３１…吸気ポート、３２…排気ポート、３８…バックアップＲＡＭ（記憶手段）
【図１】
2010168905.tif 000003
【図２】
2010168905.tif 000004
【図３】
2010168905.tif 000005
【図４】
2010168905.tif 000006
【図５】
2010168905.tif 000007
【図６】
2010168905.tif 000008
【図７】
2010168905.tif 000009
【図８】
2010168905.tif 000010
【図９】
2010168905.tif 000011
【図１０】
2010168905.tif 000012