(57)【特許請求の範囲】
【請求項１】
複数の気筒を備える内燃機関の空燃比制御装置であって、
該内燃機関の複数の気筒の排気ガスが合流する排気合流部に配置され、該排気ガスの空燃比を検出する空燃比検出手段と、
前記内燃機関の吸気通路への蒸発燃料を供給するパージ流量を制御するパージ流量制御手段と、
前記パージ流量が所定値のときに、前記複数の気筒における空燃比のばらつきを抑制するように、気筒別に空燃比補正量を算出する気筒別空燃比補正量算出手段と、
前記吸気通路に供給されるパージガス内の燃料量から、各気筒へ供給される該パージガス内の燃料量を推定する気筒別パージ燃料量推定手段と、
を備え、
前記気筒別空燃比補正量算出手段は、前記パージ流量が前記所定値よりも大きくなるときに、前記パージ流量が所定値のときに算出された気筒別空燃比補正量に対して、対応する気筒の前記パージガス内の燃料量に応じて減少または増加させてパージ増量分を考慮した気筒別空燃比補正量を算出することで、前記パージ増量分を考慮した気筒別空燃比補正量を、前記パージ流量が所定値のときに算出された気筒別空燃比補正量が前記パージ流量が所定値のときに算出された複数の気筒の気筒別空燃比補正量の平均値より大きい気筒では、前記パージ流量が所定値のときに算出された気筒別空燃比補正量に対して減少するように算出すると共に、前記パージ流量が所定値のときに算出された気筒別空燃比補正量が前記平均値より小さい気筒では、前記パージ流量が所定値のときの気筒別空燃比補正量に対して増加するように算出する、ことを特徴とする空燃比制御装置。
【請求項２】
前記パージ流量が前記所定値よりも大きくなるときの前記気筒別空燃比補正量を算出する際に用いる、前記パージ流量が所定値のときに算出された気筒別空燃比補正量を、前記内燃機関の運転状態に応じて修正する修正手段をさらに有する、
請求項１に記載の空燃比制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、内燃機関の空燃比を制御するための装置に関する。
【背景技術】
【０００２】
複数の気筒を備える内燃機関において、気筒間で混合気の空燃比がばらつくと、排気ガスを浄化する触媒の浄化率が低下し、エミッションが悪化するおそれがある。そのため、気筒別に空燃比を制御することが提案されている。
【０００３】
下記の特許文献１では、気筒別空燃比制御を行う内燃機関において、パージ実行時における気筒別補正量に基づいてパージ実行時気筒別学習値を算出すると共に、パージ停止時における気筒別補正量に基づいてパージ停止時気筒別学習値を算出し、これらの学習値に基づいてパージ燃料の気筒別分配率を算出し、これに基づいてパージ量を制御することが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−２０７４０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
気筒別に空燃比の制御を行う際、パージによって空燃比が変動するため、パージを考慮した制御を行うのが望ましい。
【０００６】
上記の従来技術では、パージ実行時とパージ停止時とでそれぞれ学習を実施しているため、パージの実行状態が変化する度に学習する必要がある。したがって、空燃比制御にこれらの学習値を反映するまでに時間がかかり、エミッション性能が悪化するおそれがあると共に、複数回の学習を行うことにより演算負荷が増大するおそれがある。
【０００７】
したがって、この発明の一つの目的は、より効率的に、パージを考慮した気筒別空燃比制御を行うための手法を提供することである。
【課題を解決するための手段】
【０００８】
この発明の一つの側面によると、複数の気筒を備える内燃機関の空燃比制御装置は、該内燃機関の複数の気筒の排気ガスが合流する排気合流部に配置され、該排気ガスの空燃比を検出する空燃比検出手段（１６）と、前記内燃機関の吸気通路への蒸発燃料を供給するパージ流量を制御するパージ流量制御手段（２８）と、前記パージ流量が所定値のときに（Ｓ２がＮｏ）、前記複数の気筒における空燃比のばらつきを抑制するように、気筒別に空燃比補正量（ＫＡＦ（ｉ））を算出する気筒別空燃比補正量算出手段（Ｓ４）と、を備え、前記気筒別空燃比補正量算出手段は、前記パージ流量（ＱＰＧＣＢＡＳＥ）が前記所定値よりも大きくなるときに（Ｓ２がＹｅｓ）、前記気筒別空燃比補正量が前記複数の気筒の気筒別空燃比補正量の平均値より大きい気筒では、前記気筒別空燃比補正量を減少させると共に、前記気筒別空燃比補正量が前記平均値より小さい気筒では、前記気筒別空燃比補正量を増加させる（Ｓ１２，ＫＡＦＰｕｒｇｅ（ｉ））。
【０００９】
この発明によれば、気筒別空燃比制御を行う内燃機関において、パージ量が増加することによる気筒別空燃比の変動を好適に抑制することができると共に、気筒間のトルクのばらつきを抑制することができる。よって、エミッションの性能および商品性を向上させることができる。また、この発明によれば、パージ流量が所定値のときの気筒別空燃比補正量を用いて、パージ流量が該所定値から増加したときの該補正量を増減するので、パージの実行に応じて速やかな補正を実現すことができる。したがって、補正を実施するまでに時間を要することによるエミッション低下を回避することができる。
【００１０】
この発明の一実施形態によると、前記吸気通路に供給されるパージガス内の燃料量（ＱＰＵＲＧＥ）から、各気筒へ供給される該パージガス内の燃料量（ＴＰＵＲＧＥ（ｉ））を推定する気筒別パージ燃料量推定手段（式（８））を備え、前記パージ流量が前記所定値よりも大きくなるときに、前記気筒別空燃比補正量算出手段が、前記気筒別空燃比補正量を減少または増加させる量を、対応する気筒の前記パージガス内の燃料量から算出する（式（１１））。
【００１１】
この発明によれば、パージ流量が増加するときに気筒別空燃比補正量の増減する量を、各気筒へ供給されるパージに含まれる燃料量に基づいて決定するので、燃焼室に供給される燃料量に応じた補正を行うことが可能となり、よって、エミッション性能を向上させることができる。
【００１２】
本発明のその他の特徴及び利点については、以下の詳細な説明から明らかである。
【図面の簡単な説明】
【００１３】
【図１】この発明の一実施形態に従う、エンジンおよびその制御装置の全体的な構成を示す図。
【図２】この発明の一実施形態に従う、空燃比センサの配置を説明するための図。
【図３】この発明の一実施形態に従う、可変動弁機構を示す図。
【図４】この発明の一実施形態に従う、可変動弁機構の作動特性を示す図。
【図５】この発明の一実施形態に従う、パージが気筒別空燃比に及ぼす影響を説明するための図。
【図６】この発明の一実施形態に従う、燃料制御プロセスのフローチャート。
【図７】この発明の一実施形態に従う、パージを考慮した気筒別空燃比補正量の算出プロセスのフローチャート。
【図８】この発明の他の実施形態に従う、パージを考慮した気筒別空燃比補正量の算出プロセスのフローチャート。
【図９】この発明の他の実施形態に従う、パージ流量に対する気筒別空燃比補正量の補正係数を規定するマップを示す図。
【図１０】この発明の一実施形態に従う、気筒別空燃比補正量の学習プロセスのフローチャート。
【図１１】この発明の一実施形態に従う、空燃比偏差信号および各気筒の基準信号の挙動を示す図。
【図１２】この発明の一実施形態に従う、相関関数の制御を介して気筒別空燃比補正量が決定される様子を示す図。
【図１３】この発明の一実施形態に従う、内燃機関の運転状態に応じた気筒別空燃比補正量の基準値のマップを概念的に示す図。
【図１４】この発明の一実施形態に従う、リフト量に対する気筒別空燃比補正量の基準値を規定するマップを示す図。
【発明を実施するための形態】
【００１４】
次に図面を参照してこの発明の実施の形態を説明する。図１は、この発明の一実施形態に従う、内燃機関（以下、エンジンと呼ぶ）およびその制御装置の全体的な構成図である。
【００１５】
電子制御ユニット（以下、「ＥＣＵ」）という）１は、中央演算処理装置（ＣＰＵ）およびメモリを備えるコンピュータである。メモリには、車両の様々な制御を実現するためのコンピュータ・プログラムおよび該プログラムの実施に必要なデータ（マップを含む）を格納することができる。ＥＣＵ１は、車両の各部から信号を受取ると共に、該メモリに記憶されたデータおよびプログラムに従って演算を行い、車両の各部を制御するための制御信号を生成する。
【００１６】
エンジン２は、複数の気筒（この実施形態では、４気筒）を有するエンジンである。エンジン２には、吸気バルブのバルブタイミングを変更可能な連続可変動弁機構３１が設けられており、これは、この実施形態では、可変リフト機構および可変位相機構を含む。可変リフト機構は、ＥＣＵ１からの制御信号に従って、各気筒の吸気バルブのリフト量を連続的に変更することができる機構である。可変リフト機構の一例は、後述される。可変位相機構は、ＥＣＵ１からの制御信号に従って、各気筒の吸気バルブの位相を連続的に変更することができる機構である。可変位相機構は、任意の既知の手法により実現することができる。たとえば、電磁的に吸気バルブの位相を進角または遅角に制御する手法が提案されている（たとえば、特開２０００―２２７０３３号を参照）。
【００１７】
連続可変動弁機構３１には、各気筒の吸気バルブのリフト量を検出するためのセンサ３２および該吸気バルブの位相を検出するためのセンサ３３が設けられており、該センサ３２および３３の検出結果は、ＥＣＵ１に送られる。
【００１８】
なお、この実施形態では、リフト量および位相を連続的に変更可能なようになっているが、これに限定されるものではなく、リフト量および位相を段階的（ステップ状）に変更可能な機構にも、本願発明は適用可能である。
【００１９】
エンジン２には、吸気通路３および排気通路４が連結されている。吸気通路３には、スロットル弁５が設けられている。スロットル弁５の開度は、ＥＣＵ１からの制御信号に従って制御される。スロットル弁５には、スロットル弁の開度を検出するスロットル弁開度（θＴＨ）センサ６が連結されており、この検出値は、ＥＣＵ１に送られる。
【００２０】
この実施形態では、エンジン２の各気筒への吸入空気量は、スロットル弁５の開度を制御することだけでなく、連続可変動弁機構３１を介して各気筒の吸気バルブのリフト量を制御することによって実現される。
【００２１】
燃料噴射弁７が、エンジン２とスロットル弁５との間であって、エンジン２の吸気バルブ（図示せず）の少し上流側に、気筒ごとに設けられている。燃料噴射弁７は、燃料タンク２９に接続されており、燃料タンク２９からの燃料を噴射する。燃料噴射弁７の燃料噴射時期および燃料噴射量は、ＥＣＵ１からの制御信号に従って変更される。
【００２２】
スロットル弁５の上流には、吸気通路３を流れる空気の量を検出するエアフローメータ（ＡＦＭ）８が設けられている。
【００２３】
スロットル弁５の下流には、絶対圧（ＰＢ）センサ９が設けられており、吸気通路３内の圧力ＰＢを検出する。また、絶対圧センサ９の下流には吸気温（ＴＡ）センサ１０が設けられており、吸気通路３内の温度を検出する。これらの検出値は、ＥＣＵ１に送られる。また、エンジン２には、エンジンの水温ＴＷを検出するためのエンジン水温センサ１１が設けられており、該センサの検出値は、ＥＣＵ１に送られる。さらに、大気圧ＰＡを検出するための大気圧センサ１２がエンジン外部の任意の位置に設置されており、該センサの検出値はＥＣＵ１に送られる。
【００２４】
ＥＣＵ１には、エンジン２のクランク軸の回転角度を検出するクランク角センサ１３が接続されており、該センサの検出値はＥＣＵ１に供給される。クランク角センサ１３は、所定のクランク角度（たとえば３０度）毎に１パルス（ＣＲＫパルス）を発生し、該パルスにより、クランク軸の回転角度位置を特定することができる。ＥＣＵ１は、該ＣＲＫパルスに基づいてエンジン回転数ＮＥを算出する。また、クランク角センサ１３は、ピストンの上死点（ＴＤＣ）位置に関連したクランク角度で、ＴＤＣ信号をＥＣＵ１に出力する。
【００２５】
燃料タンク２９は、チャージ通路２０を介してキャニスタ２１に接続されている。キャニスタ２１は、燃料タンク２９内で発生する蒸発燃料を吸着する吸着剤２２を内蔵すると共に、外気取り込み口２３を有する。
【００２６】
キャニスタ２１は、パージ通路２７を介して吸気通路３のスロットル弁５の下流側に接続されている。パージ通路２７にはパージ制御弁２８が設けられている。パージ制御弁２８は、ＥＣＵ１からの制御信号に従って、デューティ制御される。制御信号すなわちデューティ信号で表される開弁（オン）時間と閉弁（オフ）時間の比率（デューティ比）を変更することにより、パージ制御弁２８の開弁量を連続的に制御することができる。こうして、パージ制御弁２８は、パージ通路２７を吸気通路３に向けて流れるパージガスの流量（パージ流量）を制御し、パージガス内の蒸発燃料を吸気通路３に供給する。
【００２７】
以上のように、燃料噴射弁７からの燃料、パージ通路２７からの蒸発燃料、および吸気通路３からの空気の混合気が、エンジン２の燃焼室内で燃焼する。その結果、各気筒からの排気ガスが排気通路４に流出される。排気通路４には、たとえば種々の触媒によって実現されることのできる触媒装置（ＣＡＴ）１５が設けられており、該排気通路に流出される排気ガスを浄化して、大気に放出する。
【００２８】
触媒装置１５の上流には、排気ガスの空燃比を検出するための空燃比（ＬＡＦ）センサ１６が設けられている。空燃比センサ１６は、混合気のリーンからリッチにわたる領域の空燃比をリニアに検出してＥＣＵ１に送る。この実施例では、空燃比センサ１６の出力から、検出当量比ＫＡＣＴが検出される。検出当量比ＫＡＣＴは、空燃比を示す信号であり、「理論空燃比／空燃比」によって算出される。検出当量比ＫＡＣＴの値が１より小さければ、空燃比がリーンであることを示し、１より大きければリッチであることを示す。
【００２９】
触媒装置１５の下流には、排ガス（Ｏ２）センサ１７が設けられている。排ガスセンサ１７は、２値型の排気ガス濃度センサである。排ガスセンサ１７は、排気ガスの空燃比が理論空燃比よりもリッチであるとき高レベルの信号を出力し、空燃比が理論空燃比よりもリーンであるとき低レベルの信号を出力する。出力された信号は、ＥＣＵ１に送られる。
【００３０】
ＥＣＵ１は、上記各種センサからの入力信号に応じて、メモリに記憶されたプログラムおよびデータ（マップを含む）に従い、エンジン２の運転状態を検出すると共に、スロットル弁５、燃料噴射弁７、パージ制御弁２８、可変動弁機構３１等を制御するための制御信号を生成する。
【００３１】
図２は、図１のエンジン２が直列４気筒エンジンである場合の、空燃比（ＬＡＦ）センサ１６の配置を説明するための概略図である。このエンジンでは、４つの気筒２ａから２ｄが設けられ、吸気通路３の集合部３５で分岐された吸気管３ａから３ｄは各気筒に連結され、各気筒の排気管４ａ〜４ｂは、集合部３６において排気通路４に連結されている。空燃比センサ１６は、該排気通路４上の該集合部３６よりも下流に設けられている。
【００３２】
図３は、図１の可変動弁機構３１に搭載される可変リフト機構の一例を説明するための図である。可変リフト機構は、（ａ）に示すように、カム６２が設けられたカムシャフト６１と、カムホルダに支持部６５ａを中心として揺動可能に支持されるコントロールアーム６５と、コントロールアーム６５を揺動させるコントロールカム６７が設けられた制御軸（コントロールシャフト）６６と、コントロールアーム６５にサブカムシャフト６３ｂを介して揺動可能に支持されると共に、カム６２に従動して揺動するサブカム６３と、サブカム６３に従動し、吸気バルブ１４を駆動するロッカーアーム６４とを備えている。ロッカーアーム６４は、コントロールアーム６５内に、ロッカーシャフト６８によって揺動可能に支持されている。
【００３３】
サブカム６３は、カム６２に当接するローラ６３ａを有し、カムシャフト６１の回転により、サブカムシャフト６３ｂを中心として揺動する。ロッカーアーム６４は、サブカム６３に当接するローラ６４ａを有し、サブカム６３の動きが、ローラ６４ａを介して、ロッカーアーム６４に伝達される。コントロールアーム６５は、コントロールカム６７に当接するローラ６５ｂを有し、制御軸６６の回転により、支持部６５aを中心として揺動する。
【００３４】
（ａ）、（ｂ）および（ｃ）は、矢印で示されているように、吸気バルブ１４の高リフト状態、中リフト状態、低リフト状態をそれぞれ示している。制御軸６６を介してコントロールアーム６５の位置を変化させることにより、（ａ）のような高リフト状態と、（ｃ）のような低リフト状態の間を連続的に遷移させることができる。（ａ）に示す状態では、サブカム６３の動きがロッカーアーム６４を介して吸気バルブ１４に伝達され、吸気バルブ１４は、最大のリフト量で開弁する。（ｂ）に示す状態では、サブカム６３の動きの、ロッカーアーム６４を介した吸気バルブ１４への伝達量は、（ａ）よりも少なく、よって（ａ）よりも小さいリフト量で開弁する。（ｃ）に示す状態では、サブカム６３の動きはロッカーアーム６４にほとんど伝達されないため、吸気バルブ１４は低リフト状態となる。
【００３５】
制御軸６６には、アクチュエータのモータ（図示せず）が接続されており、該モータによって制御軸６６を回転させることにより、吸気弁１４のリフト量を連続的に変更して、燃焼室内（気筒内）への吸入空気量を連続的に変更することができる。この実施形態では、前述したリフト量を検出するセンサ３２（図１）は、制御軸６６の回転角度位置を検出するよう設けられている。検出された制御軸６６の回転角度位置ＣＳＡが、リフト量を示すパラメータとして使用される。
【００３６】
図４を参照すると、各気筒の排気バルブの作動特性と、連続可変動弁機構３１によって制御される吸気バルブ１４の作動特性が、一例として示されている。縦軸はリフト量を示し、横軸は、１燃焼サイクルにおけるクランク角度を表している。
【００３７】
ＥＸは、排気バルブの作動特性を示す。ＩＮは、吸気バルブ１４の作動特性を示し、複数の実線で表されるように、エンジンの運転状態に従って作動特性ＩＮを連続的に変化させる、すなわち吸気バルブの位相およびリフト量を連続的に変化させることができる。このように、この実施形態において、吸気バルブ１４のリフト量は、エンジンの運転状態に応じて、低リフトから高リフトまで連続的に変化可能なようになっている。なお、以下の説明における「リフト量」は、各作動特性におけるピークすなわち最大リフト量（吸気バルブを開ける量（ｍｍ））を表している。
【００３８】
ここで、パージによって気筒間の空燃比がどのように影響されるかについて考察する。
【００３９】
各気筒の空燃比ＡＦ（ｉ）は、式（１）に示すように、該気筒への吸入空気量Ｇａｉｒ（ｉ）（ｇ／ＴＤＣ）と燃料量Ｆｕｅｌ（ｉ）（ｇ／ＴＤＣ）によって決定される。ここで、ｉは、気筒を識別する番号である。
【数１】
0005394982.tif 000002
【００４０】
各気筒への燃料量Ｆｕｅｌ（ｉ）は、燃料噴射弁７によって供給される燃料量ＦｕｅｌＩＮＪと、パージガスに含まれる燃料量ＦｕｅｌＰｕｒｇｅを含む。全気筒への吸入空気量の平均値をＧａｉｒａｖｅで表し、各気筒への吸入空気量Ｇａｉｒ（ｉ）に含まれるパージガスの割合をＫで表すと、Ｆｕｅｌ（ｉ）は、次のように表すことができる。１４．７は、全気筒の平均空燃比であり、空燃比フィードバック制御で実現される値として、ここでは理論空燃比（ストイキ）を用いている。
【数２】
0005394982.tif 000003
【００４１】
以上より、式（１）は、式（３）のように表され、これは、パージを行った場合の各気筒の空燃比を示す。
【数３】
0005394982.tif 000004
【００４２】
当然ながら、パージを行わない場合には、各気筒の空燃比は、以下のように表される。
【数４】
0005394982.tif 000005
【００４３】
式（３）および（４）に示すように、気筒間の空燃比のばらつきは、気筒間の吸入空気量Ｇａｉｒ（ｉ）の差に応じて生じるが、パージを行った場合には、さらに、各気筒へのパージガスの量（Ｇａｉｒ（ｉ）×Ｋ）に応じて差が生じる。
【００４４】
ここで、図５の（ａ１）および（ａ２）を参照すると、空燃比フィードバック制御は実施されているが、気筒別空燃比制御を実施していない場合の、気筒間の吸気バルブのリフト量のばらつきによるパージ成分（パージガス内の燃料成分）の影響を示したものである。ここで、空燃比フィードバック制御は、空燃比センサ１６の検出結果に基づいて算出される、全気筒の空燃比の平均値を、所定の目標空燃比（この実施例では、理論空燃比（ストイキ））に収束させるための制御である。それに対し、気筒別空燃比制御は、気筒間の空燃比のばらつきを解消するための制御である。
【００４５】
（ａ１）は、吸気バルブのリフト量が低リフト値（たとえば、１ｍｍ）に制御されている場合を示し、（ａ２）は、吸気バルブのリフト量が高リフト値（たとえば、９ｍｍ）に制御されている場合を示す。ここで、エンジンは４つの気筒を備えており、第１および第２の気筒については、バルブの開き側にリフト量がずれており、第３および第４の気筒については、バルブの閉じ側にリフト量がずれていると想定する。リフト量のずれは、目標リフト量に従ってバルブを制御しているにもかかわらず、何らかの原因でわずかに実際のリフト量が該目標リフト量からずれていることを示している。
【００４６】
（ａ１）および（ａ２）においてパージ導入前の空燃比が、各気筒の左側の棒グラフに示されている。空燃比フィードバック制御が実施されているため、４つの気筒の空燃比の平均値は、ほぼ理論空燃比になっている。しかしながら、気筒別空燃比制御が実施されていないため、気筒間で空燃比がばらついている。このばらつきは、上記のようなリフト量のずれに起因しており、（ａ１）では大きく、（ａ２）では小さい。これは、リフト量が低い場合には、リフト量が高い場合に比べて、リフト量のずれによる吸入空気量に対する感度（相対的な割合）が大きいためである。
【００４７】
このような空燃比のばらつきが生じているときにパージを導入した後の空燃比が、各気筒の右側の棒グラフに示されている。バルブのリフト量が開き側にずれている場合には、空気が該気筒に入りやすくなり、上記の式（３）でも示されるように、パージによる蒸発燃料も該気筒に入りやすくなる。したがって、パージを導入したことに応じて、矢印１０１に示すように、空燃比はリッチ方向に変化する。他方、バルブのリフト量が閉じ側にずれている場合には、空気が該気筒に入りにくくなっており、蒸発燃料も該気筒に入りにくくなる。したがって、パージを導入したことに応じて、矢印１０３に示すように、空燃比はリーンに変化する。
【００４８】
前述したように、低リフト状態では、リフト量のばらつきによる吸入空気量に対する感度が大きいため、（ａ１）におけるパージ導入による空燃比の変動は、（ａ２）におけるパージ導入による空燃比の変動より大きい。しかしながら、該変動によって、気筒間の空燃比のばらつきが縮小されているのがわかる。すなわち、気筒別空燃比制御を実行していない場合には、パージを導入することによって気筒間空燃比のばらつきを緩和することができる。
【００４９】
（ｂ）は、空燃比フィードバック制御だけでなく気筒別空燃比制御を実行した場合の同様のグラフを示し、吸気バルブのリフト量は、（ａ１）と同様に低リフトに維持されている。また、（ａ１）と同様に、第１および第２気筒の吸気バルブは開き側にずれており、第３および第４気筒の吸気バルブは閉じ側にずれていると想定する。
【００５０】
パージが導入されていないときには、各気筒の左側の棒グラフで表されるように、気筒別空燃比制御によって気筒間のばらつきはほぼ解消されており、全気筒が、ほぼ理論空燃比になっている。この状態でパージを導入すると、各気筒の右側の棒グラフで示されるような空燃比となる。バルブが開き側にずれている気筒では、矢印１０５で示すように空燃比はリッチになり、バルブが閉じ側にずれている気筒では、矢印１０７で示すように空燃比はリーンになる。このように、気筒別空燃比制御を実行するエンジンの場合、パージを実行すると、気筒間の空燃比がばらついてしまい、気筒別空燃比制御による平滑化の効果を損なうおそれがある。特に、上記のような可変動弁機構を備えている内燃機関において低リフト状態を実現するとき、該ばらつきの量が大きくなるおそれがある。
【００５１】
したがって、本願発明では、気筒別空燃比制御を実行するエンジンにおいて、パージを実行した場合でも、（ｂ）のような気筒間の空燃比ばらつきを防止することができるように、パージを考慮した気筒別空燃比制御を実現する手法を提案する。この具体的な手法を、以下に説明する。
【００５２】
図６は、ＥＣＵ１（より具体的には、ＥＵＣ１のＣＰＵ）によって実行される、燃料制御プロセスを示すフローチャートである。このプロセスは、所定の時間間隔で実行されることができる。
【００５３】
ステップＳ１において、パージを実行するための所定の条件を判断するのに必要な情報を取得する。たとえば、該所定条件には、１）エンジン水温が所定値（たとえば、６５度以上）であること、２）空燃比フィードバック制御中であること、３）燃料カット中でないこと、を含めることができる。したがって、ステップＳ１では、エンジン水温センサ１１の検出値を取得し、空燃比フィードバック制御が実行中か否かを示す情報を取得し、燃料カットが実行中か否かを示す情報を取得する。
【００５４】
ステップＳ２において、上記のように取得された情報に基づいて、上記の所定条件のすべてが満たされるかどうかを判断する。いずれかの条件が満たされなければ、パージの実行条件が不成立と判断し、ステップＳ３に進む。すべての条件が満たされたならば、パージの実行条件が成立したと判断し、ステップＳ６に進む。
【００５５】
パージが実行されないとき、ステップＳ３において、パージ流量ＱＰＧＣＢＡＳＥにゼロを設定する。パージ流量は、エンジン２の吸気通路３に流れるパージガスの量を示す。該パージ流量ＱＰＧＣＢＡＳＥに基づいて、パージ制御弁２８のデューティ比を制御し（実質的に閉弁する）、パージガスが流れないようにする。
【００５６】
他方、パージが実行されるとき、ステップＳ６において、パージ流量ＱＰＧＣＢＡＳＥに、所定値またはエンジンの運転状態に応じて決められた値を設定する。該パージ流量ＱＰＧＣＢＡＳＥに基づいて、パージ制御弁２８のデューティ比を制御し、該流量ＱＰＧＣＢＡＳＥのパージガスが流れるようにする。
【００５７】
代替的に、他の制御プロセスでパージの実行条件を判定してパージ制御弁２８のデューティ比を制御してもよい。この場合、当該プロセスでは、該パージ制御弁２８の現在のデューティ比を取得し、パージ制御弁２８が閉弁していれば、ステップＳ３に進んでパージ流量ＱＰＧＣＢＡＳＥにゼロを設定し、パージ制御弁２８が開弁していれば、ステップＳ６に進んで、該デューティ比に応じた流量をＱＰＧＣＢＡＳＥに設定すればよい。
【００５８】
パージを実行していないとき、ステップＳ４において、気筒別空燃比の学習プロセスを実行し、気筒別空燃比補正量の学習値ＫＲＥＦ（ｉ）と、該学習値ＫＲＥＦ（ｉ）を、その時のエンジンの運転状態に適合するよう修正（補正）した気筒別空燃比補正量ＫＡＦ（ｉ）と、を算出する。前述したように、ｉは、気筒識別番号であり、この実施形態では４気筒あるので、ｉは１〜４の値を取る。ここで、ＫＲＥＦ（ｉ）およびＫＡＦ（ｉ）は、共に、パージ流量がゼロであるときの、気筒間空燃比のばらつきを解消するための各気筒の燃料噴射量の補正量（補正係数）を示している。しかしながら、前者は、所定の運転状態下で学習されたものであり、後者は、現在の運転状態に適合するよう、該学習値ＫＲＥＦ（ｉ）を修正した値である点で相違する。そのため、前者は、パージ流量をその後に増量したとき（Ｓ２がＹｅｓ）に、該増量後の運転状態に適合した学習値ＫＡＦ（ｉ）を算出するのに用いられ、後者は、次のステップＳ５で燃料噴射量を補正するのに用いられる。なお、両者の算出を含む学習プロセスは、図１０を参照して後述される。
【００５９】
ステップＳ５において、ステップＳ４で算出された気筒別空燃比補正量ＫＡＦ（ｉ）を用いて、各気筒の燃料噴射量Ｔｏｕｔ（ｉ）を、以下の式に従って算出する。
Ｔｏｕｔ（ｉ）＝ＴＩＭ×ＫＣＭＤ×ＫＡＦ×ＫＡＦ（ｉ）    （５）
【００６０】
ここで、ＴＩＭは、後述するステップＳ７で算出される基本燃料噴射量を示す。ＫＣＭＤは、後述するステップＳ８で算出される目標空燃比（当量比で表される）を示す。ＫＡＦは、後述するステップＳ９で算出される空燃比補正量であり、上記の空燃比フィードバック制御で算出される。式（５）中のＴＩＭ、ＫＣＭＤおよびＫＡＦには、前回のステップＳ７〜Ｓ９で算出された値（最新値）を用いることができる。
【００６１】
上記の式（５）に示されるように、ＫＡＦ（ｉ）が乗算されているので、気筒間の空燃比のばらつきが解消されるように、各気筒への燃料噴射量Ｔｏｕｔ（ｉ）を算出することができる。こうして算出されたＴｏｕｔ（ｉ）に従って、各気筒の燃料噴射弁７が制御される。
【００６２】
パージを実行するとき、ステップＳ７において、基本燃料噴射量ＴＩＭを算出する。これは、任意の適切な手法により算出されることができ、たとえばＡＦＭ８によって検出される吸入空気量に応じて基本燃料噴射量ＴＩＭを決定することができる。
【００６３】
ステップＳ８において、目標空燃比ＫＣＭＤを算出する。これは、任意の適切な手法により算出または決定されることができる。たとえば、理論空燃比を示す所定値に該目標空燃比ＫＣＭＤを設定することができる。また、たとえば所定の運転領域（たとえば、スロットル全開の領域（ＷＯＴ領域））においては、所定のリッチ空燃比を示す値に該目標空燃比ＫＣＭＤを設定することができる。
【００６４】
ステップＳ９において、空燃比フィードバック制御を介して空燃比補正量ＫＡＦを算出する。前述したように、空燃比フィードバック制御を実行することにより、実空燃比ＫＡＣＴ（前述したように、空燃比センサ１６の検出結果に基づいて算出される、全気筒の空燃比の平均値を表す）を目標空燃比ＫＣＭＤに収束させるための補正量ＫＡＦが算出される。任意の適切な手法で該フィードバック制御を実現することができ、たとえばＰＩ制御を用いることができる。
【００６５】
ステップＳ１０において、気筒別空燃比制御を実施するか否かを判断する。たとえば、エンジンの運転状態に基づいて所定の条件を予め設定し、該所定の条件が満たされているときに、該気筒別空燃比制御を実施するようにすることができる。たとえば、該所定の条件として、ＣＲＫセンサ１３を介して検出されたエンジン回転数ＮＥが所定範囲内にあり、かつ所定時間の変動が所定範囲内にあること、および、吸気管圧力センサ９および大気圧センサ１２を介して検出された吸気管のゲージ圧（絶対圧−大気圧）の大きさが所定値以上であり、かつ所定時間の変動が所定範囲内にあること、等を含めることができる。
【００６６】
気筒別空燃比制御を実施しなければ、ステップＳ１１において、各気筒の燃料噴射量Ｔｏｕｔ（ｉ）を、以下の式のように算出する。気筒別空燃比補正量ＫＡＦ（ｉ）を用いないので、すべての気筒について、同じ量の燃料噴射量Ｔｏｕｔが算出される。
Ｔｏｕｔ（ｉ）＝ＴＩＭ×ＫＣＭＤ×ＫＡＦ    （６）
【００６７】
気筒別空燃比制御を実施する場合には、ステップＳ１２に進み、ステップＳ６で求めたパージ流量ＱＰＧＣＢＡＳＥと、気筒別空燃比補正量ＫＡＦ（ｉ）に基づいて、各気筒について、パージを考慮した気筒別空燃比補正量ＫＡＦＰｕｒｇｅ（ｉ）を算出する。ここで用いる気筒別空燃比補正量ＫＡＦ（ｉ）は、前述したように、ステップＳ４で求めた学習値ＫＲＥＦ（ｉ）を、現在のエンジンの運転状態に適合するよう修正することによって算出されたものである。パージを考慮した気筒別空燃比補正量ＫＡＦＰｕｒｇｅ（ｉ）の具体的な算出手法については、図７および図８を参照して後述される。
【００６８】
ステップＳ１３に進み、該パージを考慮した気筒別空燃比補正量ＫＡＦＰｕｒｇｅ（ｉ）を用いて、以下の式のように、各気筒の燃料噴射量Ｔｏｕｔ（ｉ）を算出する。
【００６９】
Ｔｏｕｔ（ｉ）＝ＴＩＭ×ＫＣＭＤ×ＫＡＦ×ＫＡＦＰｕｒｇｅ（ｉ）    （７）
式（５）と比較して明らかなように、式（７）では、ＫＡＦ（ｉ）の代わりとしてＫＡＦＰｕｒｇｅ（ｉ）が用いられている。どちらも、気筒間の空燃比のばらつきを解消するための補正係数であるが、前者は、パージを考慮していない補正係数であり、後者は、パージを考慮した補正係数である点で異なる。
【００７０】
このように、パージ流量がゼロの時に、ステップＳ４で気筒別空燃比補正量を学習し（ＫＲＥＦ（ｉ））、その後、パージ流量が増加した時には、ステップＳ１２において、該学習した気筒別空燃比補正量（ＫＲＥＦ（ｉ）、ＫＡＦ（ｉ））を用いて、パージを考慮した気筒別空燃比補正量ＫＡＦＰｕｒｇｅ（ｉ）を求める。該パージを考慮した気筒別空燃比補正量ＫＡＦＰｕｒｇｅ（ｉ）の算出手法について、具体的に説明する。
【００７１】
図７は、この発明の一実施形態に従う、図６のステップＳ１２における、パージを考慮した気筒別空燃比補正量ＫＡＦＰｕｒｇｅ（ｉ）を算出するプロセスのフローチャートである。
【００７２】
ステップＳ２１において、各気筒について、パージが実行されなかったときにステップＳ４で算出された気筒別空燃比補正量の学習値ＫＲＥＦ（ｉ）を読み込む。たとえば、前回パージが実行されなかったときにステップＳ４で算出されたものをメモリ等に記憶しておくことにより、当該ステップＳ２１でこれを読み込むことができる。学習値ＫＲＥＦ（ｉ）は、前述したように、パージを実行していないときに空燃比補正量を学習したものであるが、エンジンの所定の運転状態下で学習したものである。したがって、該学習値ＫＲＥＦ（ｉ）を、ステップＳ２２において、現在のエンジンの運転状態に応じた学習値ＫＡＦ（ｉ）に修正する。この修正の具体的な手法は、図１０のステップＳ４７およびＳ４８を参照して後述される。こうして、現在の運転状態に応じた、学習した気筒別空燃比補正量ＫＡＦ（ｉ）が算出される。
【００７３】
ステップＳ２３において、気筒間の空燃比のずれが、吸入空気量の気筒間での分配割合が揃っていないために発生すると想定して、学習した気筒別空燃比補正量ＫＡＦ（ｉ）から、吸入空気量の気筒間の分配割合を算出する。すなわち、図５を参照して説明したように、気筒間において、リフト量にずれが生じていると、各気筒への吸入空気量に違いが生じる。これによって、空燃比が気筒間でばらつき、これが、気筒別空燃比補正量ＫＡＦ（ｉ）に反映されている。したがって、気筒別空燃比補正量ＫＡＦ（ｉ）から、吸入空気量（これは、ＡＦＭ８によって検出されることができる）の気筒間の分配割合を算出する。
【００７４】
具体的な例として、たとえば、気筒別空燃比補正量ＫＡＦ（ｉ）について、第１〜第４の気筒のそれぞれが、以下のような値を有している場合を考える。この実施形態では、全気筒のＫＡＦ（ｉ）の平均値が１となるように、各気筒ＫＡＦ（ｉ）は算出されている。
ＫＡＦ（１）＝１．２、ＫＡＦ（２）＝１．２、ＫＡＦ（３）＝０．８、ＫＡＦ（４）＝０．８
【００７５】
吸入空気量の分配割合は、ＫＡＦ（ｉ）の逆数によって算出されることができ、以下のようになる。
第１気筒＝０．８３、第２気筒＝０．８３、第３気筒＝１．２５、第４気筒＝１．２５
【００７６】
このように、ＫＡＦ（ｉ）の平均値（ここでは、値１）より大きい値を持つ第１および第２の気筒は、空燃比をリッチに向けて補正しようとしている気筒である。逆に、該平均値より小さい値を持つ第３および第４の気筒は、空燃比をリーンに向けて補正しようとしている気筒である。したがって、第１および第２の気筒への吸入空気量の分配は、第３および第４の気筒に比べて減少する。
【００７７】
ステップＳ２４において、各気筒について、パージガス成分として流入される燃料量ＴＰＵＲＧＥ（ｉ）（ｃｃ）を算出する。ここで、パージガス内の燃料量は、蒸発燃料の形態で各気筒に導入されるので、吸入空気量の分配が大きい気筒ほど、該蒸発燃料量の分配も大きくなる。すなわち、各気筒に分配される割合（パージ配分係数と呼ぶ）は、吸入空気量の分配割合に等しいと考えられる。したがって、パージガス内の燃料量ＱＰＵＲＧＥ（ｃｃ）を算出し、該パージガス内の燃料量ＱＰＵＲＧＥと、各気筒のパージ配分係数とに基づいて、以下の式のように、各気筒に流入されるパージガス内の燃料量ＴＰＵＲＧＥ（ｉ）（ｃｃ）を算出することができる。
ＴＰＵＲＧＥ（ｉ）＝ＱＰＵＲＧＥ×（１／ＫＡＦ（ｉ））    （８）
【００７８】
ここで、パージガス内の燃料量ＱＰＵＲＧＥは、ステップＳ６で求めたパージ流量ＱＰＧＣＢＡＳＥ（ｃｃ）に、パージ濃度Ｋ（％）を乗算することによって算出されることができる（ＱＰＵＲＧＥ＝ＱＰＧＣＢＡＳＥ×Ｋ）。
【００７９】
パージ濃度Ｋは、パージ流量に対する、該パージ流量に含まれる燃料量の割合を示し、たとえば前回の運転サイクル時に学習されることができる。たとえば、前回の運転サイクルの安定した運転状態時（たとえば、アイドル運転状態であり、かつ完全に暖機された状態）に、パージ制御弁２８を制御することによりパージを実行する（ただし、気筒別空燃比制御は実行しない）。空燃比フィードバック制御を実行して、燃料補正量ＱＡＦＦＢ（ｃｃ）を算出する。これは、前述したように、実空燃比を目標空燃比に収束させるのに必要な燃料補正量である。この補正量ＱＡＦＦＢは、パージの実行に起因して変動した空燃比を補償するためのものと考えられる。したがって、該補正量ＱＡＦＦＢに相当する燃料が、パージガスに含まれていたと考えることができる。該補正量ＱＡＦＦＢを、その時のパージ流量ＱＰＧＣＦ’（ｃｃ）（これは、その時の目標パージ流量でもよいし、パージ制御弁２８のデューティ比から検出してもよい）で除算することにより、パージ濃度Ｋ（％）を算出することができる。
【００８０】
ステップＳ２５において、ＡＦＭ８の検出値（ｇ／ＴＤＣ）を取得し、これを、気筒数で除算した値を、ＧＡＩＲＡＦＭ（ｇ）とする。この実施形態では、４気筒あるので、該検出値を４分の１したものが、ＧＡＩＲＡＦＭ（ｇ）となる。該ＧＡＩＲＡＦＭと、吸入空気量の分配割合に基づいて、各気筒の充填空気量（ｇ）を算出し、式（９）に示すように、該充填空気量に必要な燃料量ＴＯ（ｉ）（ｃｃ）を算出する。すなわち、ＡＦＭ８で検出される吸入空気量が４つの気筒に分配されるが、各気筒への分配は、上記算出した分配割合（１／ＫＡＦ（ｉ））に従って行われ、分配された吸入空気量に応じた燃料量が、該気筒に必要となる。以下の「単位換算係数」は、空気量を燃料量に換算するための係数である。
ＴＯ（ｉ）＝ＧＡＩＲＡＦＭ×（１／ＫＡＦ（ｉ））×単位換算係数（ｃｃ／ｇ）（９）
【００８１】
ステップＳ２６において、気筒別空燃比制御を実施していない場合の、エンジンの各気筒への燃料噴射量ＴＢＡＳＥ（ｃｃ）を算出する。すなわち、気筒別空燃比制御を実施していない場合には、各気筒には、ＧＡＩＲＡＦＭに見合う燃料量ＴＢＡＳＥが供給されることとなる。
ＴＢＡＳＥ＝ＧＡＩＲＡＦＭ×単位換算係数（ｃｃ／ｇ）    （１０）
【００８２】
ステップＳ２７において、上記ステップＳ２４〜Ｓ２６の結果を使用して、各気筒について、パージを考慮した気筒別空燃比補正量ＫＡＦＰｕｒｇｅ（ｉ）を算出する。ここで、各気筒への吸入空気量に見合う燃料量ＴＯから、該気筒へのパージガスからの燃料量を減算することにより、実際に該気筒に供給すべき燃料量が決まる。したがって、以下の式で、該補正量ＫＡＦＰｕｒｇｅを算出することができる。
ＫＡＦＰｕｒｇｅ（ｉ）＝（ＴＯ（ｉ）−ＴＰＵＲＧＥ（ｉ））／ＴＢＡＳＥ  （１１）
【００８３】
こうして、気筒毎に、ＫＡＦＰｕｒｇｅ（ｉ）が算出される。ここで、上記の具体的な例について再び考察すると、式（１１）のうち、ＴＯ（ｉ）およびＴＰＵＲＧＥ（ｉ）は、１／ＫＡＦ（ｉ）の影響を受ける。ＫＡＦ（ｉ）は、第１および第２の気筒では、平均値１より大きく（１．２）、第３および第４の気筒では、平均値１より小さい（０．８）。そのため、１／ＫＡＦ（ｉ）は、第１および第２の気筒では、平均値１より小さく（０．８３）、第３および第４気筒では、平均値１より大きい（１．２５）。
【００８４】
したがって、気筒別空燃比補正量（パージを考慮しない場合には、ＫＡＦ（ｉ）で表され、パージを考慮した場合には、ＫＡＦＰｕｒｇｅ（ｉ）で表される）の大きさは、パージを考慮した場合、パージを考慮しない場合に比べ、第１および第２気筒では該補正量を減少させるように働き、第３および第４気筒では該補正量を増加させるよう働く。言い換えれば、パージを実行していないときの空燃比補正量が平均値より大きい気筒については、パージを実行したとき（すなわち、パージ流量が増大したとき）、該補正量を減少させる。パージを実行していないときの空燃比補正量が平均値より小さい気筒については、パージを実行したとき（すなわち、パージ流量が増大したとき）、該補正量を増加させる。
【００８５】
前述したように、第１および第２の気筒は、空燃比補正量ＫＡＦ（ｉ）が１より大きく、よってリッチへ補正しようとしている。すなわち、第１および第２の気筒は、バルブが開き側にずれていると考えられ、よって、パージによる蒸発燃料が流れやすくなっている。したがって、パージによる影響（燃料量）を、第３および第４気筒に比べて小さくする。反対に、第３および第４の気筒は、空燃比補正量ＫＡＦ（ｉ）が１より小さく、バルブが閉じ側にずれていると考えられ、よって、パージが流れ込みにくくなっている。したがって、パージによる影響（燃料量）を、第１および第２の気筒に比べて、大きくする。こうして、気筒別空燃比制御を実行している場合でも、パージを導入したことに起因して気筒間で空燃比がばらつくのを防止することができる。
【００８６】
図８は、この発明の一実施形態に従う、図６のステップＳ１２の代替の手法を示す。これは、図７に比べ、より簡略化した手法となっている。
【００８７】
ステップＳ３１およびＳ３２は、図７のステップＳ２１およびＳ２２と同じであり、各気筒について、ステップＳ４で算出された学習値ＫＲＥＦ（ｉ）を読み込み、現在のエンジンの運転状態に応じて、該学習値ＫＲＥＦ（ｉ）を修正することにより、学習した気筒別空燃比補正量ＫＡＦ（ｉ）を算出する。
【００８８】
ステップＳ３３において、図６のステップＳ６で求めたパージ流量ＱＰＧＣＢＡＳＥに基づいて、図９に示すようなマップを参照し、対応する補正係数Ｋｐを求める。該補正係数Ｋｐは、パージ流量が大きくなるほど、小さくなるよう設定されている。すなわち、パージ流量が大きくなるほど、パージガス内の燃料量が多くなるので、これに応じて空燃比補正量を小さくするためである。
【００８９】
ステップＳ３４において、求めた補正係数Ｋｐを用いて、以下の式のように、各気筒について、パージを考慮した空燃比補正量ＫＡＦＰｕｒｇｅ（ｉ）を算出する。
ＫＡＦＰｕｒｇｅ（ｉ）＝（ＫＡＦ（ｉ）−１）×Ｋｐ＋１    （１２）
【００９０】
ここで、値１は、全気筒の気筒別空燃比補正量の平均値を示している。この式は、ＫＡＦ（ｉ）が、平均値１より大きい場合には、ＫＡＦＰｕｒｇｅ（ｉ）が、該ＫＡＦ（ｉ）より小さくなるよう算出され、ＫＡＦ（ｉ）が平均値より小さい場合には、ＫＡＦＰｕｒｇｅ（ｉ）が、該ＫＡＦ（ｉ）より大きくなるよう算出されるよう、構成されている。
【００９１】
具体的な一例を示すと、たとえば、ＫＡＦ（ｉ）＝１．２であり、Ｋｐ＝０．８の場合には、ＫＡＦＰｕｒｇｅ（ｉ）は１．１６となり、パージを考慮した気筒別空燃比補正量ＫＰｕｒｇｅ（ｉ）は、パージを考慮しない気筒別空燃比補正量ＫＡＦ（ｉ）より小さくなる。こうして、リッチに補正しようとしている気筒の場合には、前述したように、該補正量を減少させて、パージによる影響を小さくする。他方、ＫＡＦ（ｉ）＝０．８であり、Ｋｐ＝０．８の場合には、ＫＡＦＰｕｒｇｅ（ｉ）は０．８４となる。パージを考慮した気筒別空燃比補正量ＫＡＦＰｕｒｇｅ（ｉ）は、パージを考慮しない気筒別空燃比補正量ＫＡＦ（ｉ）より大きくなっている。こうして、リーンに補正しようとしている気筒の場合には、前述したように、該補正量を増大させて、パージによる影響を大きくする。
【００９２】
次に、図６のステップＳ４で実行される、気筒別空燃比学習プロセスについて説明する。該プロセスの一例を示すフローチャートが、図１０に示されている。
【００９３】
ステップＳ４１において、気筒別空燃比補正量の学習条件が成立しているかどうかを判断する。たとえば、エンジンがアイドリング運転を行っており、かつ完全に暖機していること（エンジン水温が、たとえば８０度以上になったとき）を、該学習条件に設定することができる。この判断がＮｏならば、学習をすることなく（Ｓ４２）、ステップＳ４７に進む。この判断がＹｅｓならば、ステップＳ４３に進む。ステップS４３以降の学習を行うときには、図に示していないが、各気筒の吸気バルブのリフト量を所定の低値ＬＴ１に制御した状態で行うのがよい。前述したように、リフト量が低い場合には、リフト量が高い場合に比べて、リフト量のずれによる吸入空気量に対する感度（相対的な割合）が大きくなるためである。
【００９４】
ステップＳ４３において、空燃比センサ１６から、空燃比ＫＡＣＴ（当量比で表される）を表す信号を取得する。
【００９５】
ステップＳ４４において、該空燃比ＫＡＣＴを表す信号に基づいて、空燃比ＫＡＣＴの目標空燃比ＫＣＭＤに対する偏差を表す空燃比偏差ＤＫＣＭＤの信号を生成し、空燃比偏差ＤＫＣＭＤの信号と、各気筒用に設定された所定の基準信号Ｆｃｒ＃ｉとを乗算することにより、気筒毎に相関関数Ｃｒ＃ｉを算出する。ここで、該相関関数の算出手法について、図１１を参照する。
【００９６】
図１１には、１燃焼サイクル（この実施形態では、７２０度のクランク角度の期間）における、目標空燃比ＫＣＭＤ（この実施形態では、理論空燃比とする）に対する空燃比ＫＡＣＴの偏差を示す空燃比偏差ＤＫＣＭＤの信号の推移の一例が示されている。１燃焼サイクルにおいて、この実施形態では、１８０度のクランク角度期間ごとに、第１気筒、第３気筒、第４気筒および第２気筒の順番で燃焼が行われる。したがって、第１期間においては、第１気筒の燃焼の結果の排気ガスの空燃比が検出され、図の例では、目標空燃比よりリッチであることが示されている（ＤＫＣＭＤが正値）。第２の期間においては、第３気筒の燃焼の結果の排気ガスの空燃比が検出され、図の例では、目標空燃比よりリーンであることが示されている（ＤＫＣＭＤが負値）。同様に、第３の期間においては、第４気筒の排気ガスの空燃比が検出され、これは、リッチであり、第４の期間においては、第２気筒の排気ガスの空燃比が検出され、これはリーンである。
【００９７】
さらに、図には、第１の気筒用の基準信号Ｆｃｒ＃１、第３の気筒用の基準信号Ｆｃｒ＃３、第４の気筒用の基準信号Ｆｃｒ＃４および第２の気筒用の基準信号Ｆｃｒ＃２の推移が示されている。基準信号は、各気筒について予め決められており、各気筒の排気ガスの排出挙動に対応するよう生成されている。この例では、基準信号は、各気筒の排気タイミングのクランク角度範囲にのみ、ピークの大きさが値１の三角波状の信号を有するよう生成されている。たとえば、Ｆｃｒ＃１は、第１の気筒の排気ガスが排出される第１の期間において、三角波状の信号を有する。なお、基準信号の形状は、三角波に限定されるものではなく、正弦波でもよいし、方形波でもよい。
【００９８】
各気筒の相関関数Ｃｒ＃ｉは、以下の式に示すように、ＤＫＣＭＤ信号と、該気筒の基準信号Ｆｃｒ＃ｉとの乗算によって算出される。ここで、Ｎは１燃焼サイクルあたりのＣＲＫ信号のパルス数である。ＣＲＫ信号が３０度毎に発せられるとすると、Ｎ＝２４である。また、ｋは時間ステップである。
【数５】
0005394982.tif 000006
【００９９】
たとえば、ＤＫＣＭＤ信号と第１の気筒用の基準信号Ｆｃｒ＃１を乗算すると、第１の基準信号Ｆｃｒ＃１は、第１の期間にのみ値を持つため、第１の気筒の相関関数Ｃｒ＃１は、第１の期間に対応する区間のみ、空燃比偏差ＤＫＣＭＤの値を反映した値を持つように、すなわち空燃比ＫＡＣＴの値を反映した値を持つように算出される。空燃比ＫＡＣＴの値がリッチなほど、相関関数Ｃｒは大きな値を取り、リーンなほど、小さな値を取る。こうして、各気筒の空燃比の大きさを表す信号が、相関関数Ｃｒ＃ｉとして算出される。
【０１００】
各気筒の排気ガスの挙動、より具体的には各気筒からの排気ガスが空燃比センサ１６に到達するタイミングは、エンジン回転数と負荷に応じて変動するおそれがある。このタイミングが変動すると、各期間における空燃比ＫＡＣＴ信号のピーク位置（図の例では、第１、第３の期間では最大値となるクランク角度位置であり、第２、第４の期間では最小値となるクランク角度位置）が変動し、対応する基準信号のピーク位置がずれるおそれがある。したがって、より精度を上げるため、エンジン回転数ＮＥおよび負荷に応じて、該ピーク位置を予め規定してマップ等に記憶することができる。該負荷を示すパラメータとして、吸入空気量を用いることができる。ステップＳ４４では、クランク角センサ１３およびＡＦＭ８を介して検出されたエンジン回転数ＮＥおよび吸入空気量に基づいて該マップを参照し、対応するピーク位置を求め、求めた位置でピークとなるような三角波を持つ基準信号を生成し、これを、上記の相関関数Ｃｒ＃ｉの算出に用いることができる。
【０１０１】
各気筒について、空燃比が目標空燃比ＫＣＭＤであるとき、偏差ＤＫＣＭＤの値はゼロとなるため、相関関数Ｃｒ＃ｉの値もゼロとなる。したがって、各気筒の空燃比を目標空燃比ＫＣＭＤにするためには、該相関関数Ｃｒ＃ｉをゼロに収束させるような補正量（該気筒の燃料噴射量を補正するための補正量）ＫＡＦＸを算出すればよい。これが、図１０のステップＳ４５に示されており、該ステップにおいて、各気筒について、相関関数Ｃｒ＃ｉをゼロに収束させるための補正量ＫＡＦＸ（ｉ）を算出する。たとえば、ＰＩ制御のようなフィードバック制御を用いることにより、補正量ＫＡＦＸ（ｉ）を算出することができる。
【０１０２】
ここで、補正量ＫＡＦＸ（ｉ）の効果を説明するため、図１２を参照する。該図には、第１および第４の気筒についての、補正量ＫＡＦＸ（ｉ）と、相関関数Ｃｒ＃ｉと、空燃比ＫＡＣＴ（ｉ）の推移の一例が示されている（第２および第３の気筒については、省略されている）。時間ｔ１に至るまでの期間では、気筒別空燃比補正フラグがゼロに設定されているように、気筒別空燃比制御は実施されていない。したがって、第１の気筒の空燃比ＫＡＣＴ（１）と第４の気筒の空燃比ＫＡＣＴ（４）とを比較しても明らかなように、気筒間において空燃比はばらついたままである。相関関数Ｃｒ＃１およびＣｒ＃４を収束するための制御は行われておらず、補正量ＫＡＦＸ（ｉ）は１に維持されたままである。しかしながら、空燃比フィードバック制御は実行されているため、全気筒の平均空燃比ＫＡＣＴは目標空燃比ＫＣＭＤに向けて収束している。
【０１０３】
時間ｔ１において、気筒別空燃比補正実施フラグが１に設定され、これにより、気筒別空燃比制御が実施が実行される。具体的には、所定の時間間隔で、各気筒の相関関数Ｃｒ＃ｉをゼロに収束するための補正量ＫＡＦＸ（ｉ）が算出され、該補正量ＫＡＦＸ（ｉ）に基づいて補正された燃料量が、対応する気筒に噴射される。その結果、図に示すように、相関関数Ｃｒ＃１およびＣｒ＃４はゼロに向かって収束すると共に、各気筒の空燃比ＫＡＣＴ（ｉ）は、目標空燃比ＫＣＭＤに収束する。こうして、全気筒の空燃比の平均値が目標空燃比に収束すると共に、各気筒の空燃比も目標空燃比に収束させることができる。
【０１０４】
図１０に戻り、ステップＳ４６において、ステップＳ４５で算出された気筒別空燃比補正量ＫＡＦＸ（ｉ）を、学習値ＫＲＥＦ（ｉ）として記憶する。たとえば、学習値ＫＲＥＦ（ｉ）は、車両のイグニションをオフしてもその内容が保持されるメモリ等に記憶され、次の運転サイクルに用いることができるようにすることができる。こうして記憶された学習値ＫＲＥＦ（ｉ）が、前述したＫＡＦＰｕｒｇｅ（ｉ）を算出するために、図７のステップＳ２１または図８のステップＳ３１で読み込まれることとなる。
【０１０５】
次に、ステップＳ４７およびＳ４８において、各気筒について、学習値ＫＲＥＦ（ｉ）を、現在の運転状態および現在のリフトずれ量に対応する学習値すなわち気筒別空燃比補正量ＫＡＦ（ｉ）に修正（補正）する。ステップＳ４７およびＳ４８は、学習が実施された場合にも実行されるが、学習が実施されない場合（Ｓ４２）にも実行される。学習値ＫＲＥＦ（ｉ）は、安定した所定の運転状態下で算出されたものであるので、現在の運転状態で用いるためには、該現在の運転状態に対応するよう、学習値ＫＲＥＦ（ｉ）を補正する必要がある。また、学習の有無にかかわらず、実際にリフト量がどれほどずれているのかは不明であるため、現在のリフトずれ量に適応するよう学習値ＫＲＥＦ（ｉ）を補正する必要がある。そのための処理が、ステップＳ４７およびＳ４８で行われる。
【０１０６】
ステップＳ４７では、現在の運転状態に応じた基準マップを選択する。基準マップは、リフト量が所定値だけずれている場合において、リフト量に対して学習値ＫＲＥＦがどのように推移するかを規定したマップである。リフト量の変化に対する学習値ＫＲＥＦの変化は、エンジンの運転状態に応じて変動するため、エンジンの運転状態毎にマップを予め作成してメモリ等に記憶しておくのがよい。
【０１０７】
図１３には、運転状態毎のマップを概念的に示す図である。この実施形態では、該運転状態として、吸気バルブの位相ＣＡＩＮ、吸気管のゲージ圧ＰＢＧＡ、エンジンの回転数ＮＥを用いており、これらの運転パラメータの値の組み合わせ毎に、リフト量ＬＩＦＴに対する学習値ＫＲＥＦが規定されている。したがって、ステップＳ４７では、位相センサ３３から検出された位相、吸気管絶対圧センサ９および大気圧センサ１２から検出された吸気管のゲージ圧、クランク角センサ１３から検出されたエンジン回転数に基づいて、対応する基準マップを選択する。
【０１０８】
こうして選択した基準マップの一例が、図１４の符号２０１に示されている。このマップは、現在の吸気バルブの位相、ゲージ圧、回転数に応じたマップであり、リフト量が所定量だけずれている前提に作成されたものである。しかしながら、学習値ＫＲＥＦ（ｉ）を算出したときに、リフト量が実際にどの程度ずれているかは不明である。したがって、検出された現在のリフト量に基づいて該基準マップ２０１を直接参照することはできない。そのため、まず、学習値ＫＲＥＦ（ｉ）を算出したときのリフト量ＬＴ１と、該学習値ＫＲＥＦ（ｉ）の値とから、符号２０３のようなプロットを行う。この実施例では、前述したように低リフト状態で学習が行われているため、ＬＴ１は比較的低い値を持つ。
【０１０９】
基準マップ２０１を参照し、該リフト量ＬＴ１に対応する値Ｘを求める。そして、値Ｘに対する学習値ＫＲＥＦ（ｉ）の比αを算出する（α＝ＫＲＥＦ（ｉ）／Ｘ）。たとえば、Ｘ＝１．４であり、今回の学習値ＫＲＥＦ（ｉ）が１．１ならば、α＝１．１／１．４により算出されることができる。
【０１１０】
基準マップ２０１上の各点を、α倍することによって算出された特性が、符号２０５で示されている。符号２０５は、現在のリフト量のずれに対応したマップを表している。ここで、αを、反映係数と呼ぶ。
【０１１１】
なお、この例では、αは値１より小さく算出されるが、基準マップおよび学習値によっては、αは値１より大きく算出されることもありうる。たとえば、符号２０３で示されるプロットが、Ｘ値より大きい位置に配置された場合には、αは値１より大きい値を持ち、マップ２０５は、基準マップ２０１の上側に生成されることとなる。
【０１１２】
こうして、現在の運転状態および現在のリフトずれ量に応じたマップ２０５が求められたので、ステップＳ４８では、検出された現在のリフト量ＬＴ２に基づいて、該マップ２０５を参照し、対応する学習値Ｙを求める。こうして求めた学習値Ｙが、気筒別空燃比補正量ＫＡＦ（ｉ）である。
【０１１３】
代替的に、検出された現在のリフト量ＬＴ２に基づいて基準マップ２０１を参照し、対応する学習値ＫＲＥＦ（ｉ）を求め、該求めた学習値に反映係数αを乗算することによって、学習値Ｙを算出してもよい。
【０１１４】
前述した図７のステップＳ２２では、ステップＳ４７およびＳ４８で行われる上記と同じ手法が実行される。すなわち、現在の運転状態に対応する基準マップを選択し、該マップを、ステップＳ２１で読み込んだ学習値ＫＲＥＦ（ｉ）を用いて参照して反映係数αを算出し、該反映係数αに基づいて、気筒別空燃比補正量ＫＡＦ（ｉ）を算出する。前述した図８のステップＳ３２においても同様の処理が行われる。これにより、現在の運転状態に適合した学習値すなわち気筒別空燃比補正量ＫＡＦ（ｉ）が算出され、これが、パージを考慮した気筒別空燃比補正量ＫＡＦＰｕｒｇｅ（ｉ）の算出に用いられる。
【０１１５】
なお、上記の実施形態では、図６に示すように、パージを実行していないとき、すなわちパージ流量がゼロのときに気筒別空燃比補正量（ＫＲＥＦ（ｉ））を学習し、その後にパージを実行したとき、すなわちパージ流量を増大したときに、該学習した補正量（ＫＲＥＦ（ｉ）、ＫＡＦ（ｉ））を用いて、パージを考慮した補正量ＡＫＦＰｕｒｇｅ（ｉ）を算出している。代替的に、パージ流量が所定値（ゼロでなくてもよい）のときに補正量（ＫＲＥＦ（ｉ））を学習し、その後に、パージ流量を該所定値から増大したときに、該学習した補正量（ＫＲＥＦ（ｉ）、ＫＡＦ（ｉ））を用いて、パージを考慮した補正量ＡＫＦＰｕｒｇｅ（ｉ）を算出してもよい。すなわち、本願発明は、基準となる状態からパージ流量が増大したときに、該パージ流量が増えることによって気筒間空燃比にばらつきが生じることを防止するためのものであるので、基準となる状態は、パージ流量がゼロの状態に必ずしも限定されない。
【０１１６】
しかしながら、パージ流量がゼロでない状態を基準とした場合には、パージを実施していないときに使用する該補正量ＫＡＦ（ｉ）を新たに算出する必要が生じる。パージ流量がゼロの状態を基準とすれば、このような新たな算出は不要となり、利便性を向上させることができる。
【０１１７】
以上にこの発明を具体的な実施例について説明したが、この発明はこのような実施例に限定されるものでなく、また、ガソリンエンジン、ディーゼルエンジンのいずれに対しても使用することができる。
【符号の説明】
【０１１８】
１      電子制御ユニット（ECU）
２      エンジン
１６    空燃比センサ
【図１】
0005394982.tif 000007
【図２】
0005394982.tif 000008
【図３】
0005394982.tif 000009
【図４】
0005394982.tif 000010
【図５】
0005394982.tif 000011
【図６】
0005394982.tif 000012
【図７】
0005394982.tif 000013
【図８】
0005394982.tif 000014
【図９】
0005394982.tif 000015
【図１０】
0005394982.tif 000016
【図１１】
0005394982.tif 000017
【図１２】
0005394982.tif 000018
【図１３】
0005394982.tif 000019
【図１４】
0005394982.tif 000020