(57)【特許請求の範囲】
【請求項１】
内燃機関の運転状態を検出する運転状態検出手段と、
前記内燃機関の排気系に設けられ空燃比を検出する空燃比検出手段と、
該空燃比検出手段で検出された前記空燃比に応じて空燃比補正係数を算出する空燃比補正係数算出手段と、
前記空燃比検出手段で検出された前記空燃比の反転周期を算出する反転周期算出手段と、
前記空燃比補正係数算出手段で算出された前記空燃比補正係数の平均値を算出する平均値算出手段と、
該平均値算出手段で算出された前記空燃比補正係数の平均値に基づいて空燃比学習値を算出し、該算出時に、前記内燃機関の運転状態に対応して設けられ前記空燃比学習値が記憶される複数の記憶位置のうち前記運転状態検出手段で検出される前記内燃機関の運転状態に対応する記憶位置に前記空燃比学習値を更新記憶する学習値更新手段と、
前記運転状態検出手段で検出される前記内燃機関の運転状態に対応する記憶位置より前記空燃比学習値を検索し、該空燃比学習値に基づいて前記内燃機関内に噴射する燃料噴射量を設定する設定手段と、
前記学習値更新手段による前記空燃比学習値の更新記憶の実行を許可する前記反転周期の許可範囲を前記内燃機関への吸入空気量に応じて決定する範囲決定手段と、
該範囲決定手段で決定された前記許可範囲外に前記反転周期があるときに前記学習値更新手段の実行を禁止する更新禁止手段とを備えたことを特徴とする内燃機関の制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、内燃機関の空燃比の学習制御を行う内燃機関の制御装置に関する。
【０００２】
【従来の技術】
内燃機関に供給する混合気の空燃比を理論空燃比近辺に維持することで、三元触媒によって排気ガスを効率よく浄化して排気ガス特性を向上させることが可能となる。しかし、このような理論空燃比近辺の空燃比が得られるように予め設定された噴射量で燃料を噴射させるように燃料噴射弁を制御しても、例えば燃料噴射弁の個体差や燃料噴射弁の劣化等の問題から、実際の噴射量が設定通りにならず、空燃比が理論空燃比近辺から外れてしまって排気ガス特性が悪化してしまうことがある。このため、排気系に取り付けられたＯ２センサで検出した空燃比に基づいて内燃機関の燃料噴射量をフィードバック制御する内燃機関の制御装置が知られている。この種の制御装置は、Ｏ２センサからの検出値に基づく空燃比フィードバック係数ＫＯ２により算出された学習値を運転領域毎にＲＡＭに更新格納する一方、各運転領域からこの学習値を読み出しこれに基づいて燃料噴射量を制御することで、混合気の空燃比を学習しながら理論空燃比近辺に維持するように制御する。
【０００３】
そして、このような空燃比学習制御を行う内燃機関の制御装置として、エンジン回転数に対するＯ２センサの出力（空燃比）の反転周期の許可範囲のテーブルを設定し、空燃比フィードバック係数ＫＯ２で補正した学習値をＲＡＭに更新格納する空燃比学習の実行条件の一つに、上記テーブルの許可範囲に、実際のＯ２センサの出力の反転周期が入っているか否かを入れることで、誤学習を防止するものが開示されている（特公平５−３０９７８号公報）。すなわち、Ｏ２センサの出力の反転周期が、エンジン回転数に基づき検索される許可範囲から外れた場合、内燃機関が定常的な状態になく過渡的な状態にあると判断できることから、このような条件下で得られた学習値は格納せず、Ｏ２センサの出力の反転周期が許可範囲にあって内燃機関が定常的な状態にあると判断できる条件下で得られた学習値のみを格納するのである。
【０００４】
【発明が解決しようとする課題】
しかしながら、内燃機関においては、例えば坂道走行時と平坦路走行時とでは、同一エンジン回転数でもエンジン負荷は変化する。すなわち、エンジン負荷であるスロットル開度に対応する吸入空気量は、同一エンジン回転数でも坂道を登るときは平坦路を走行しているときに比して大きくなる。そして、同一エンジン回転数であっても、このようにエンジン負荷である吸入空気量が変化すると、上記したＯ２センサの出力の反転周期も変化してしまうことになる。つまり、エンジン回転数はエンジン負荷と必ずしも相関しないため、エンジン回転数からはエンジン負荷と相関のあるＯ２センサの反転周期を正確に判断することはできない。その結果、上記のように空燃比学習の実行条件の一つであるＯ２センサの出力の反転周期の許可範囲をエンジン回転数に対するテーブルで設定するのでは、空燃比の学習を正確かつ効果的に行うことができないという問題があった。すなわち、同一エンジン回転数であってもＯ２センサの出力の反転周期に幅があることになるため、この幅を考慮して広い許可範囲を設定すると誤学習の可能性が高くなる一方、誤学習を防ぐために狭い許可範囲を設定すると、本来は学習値として使用できるデータまで排除されることになって学習の領域が狭くなってしまうのである。
【０００５】
本発明は、このような事情に鑑みてなされたもので、空燃比の学習を正確かつ効果的に行うことができる内燃機関の制御装置の提供を目的とする。
【０００６】
【課題を解決するための手段】
上記目的を達成するため、本発明は、内燃機関の運転状態を検出する運転状態検出手段（例えば実施の形態の図２における吸気管内絶対圧センサ１０および回転情報センサ１４）と、前記内燃機関の排気系に設けられ空燃比を検出する空燃比検出手段（例えば実施の形態の図２における上流Ｏ２センサ１７）と、該空燃比検出手段で検出された前記空燃比に応じて空燃比補正係数を算出する空燃比補正係数算出手段（例えば実施の形態の図２における空燃比Ｆ／Ｂ係数演算部５１）と、前記空燃比検出手段で検出された前記空燃比の反転周期を算出する反転周期算出手段（例えば実施の形態の図２におけるＯ２センサ反転周期演算部５２）と、前記空燃比補正係数算出手段で算出された前記空燃比補正係数の平均値を算出する平均値算出手段（例えば実施の形態の図２における空燃比学習値格納部５３）と、該平均値算出手段で算出された前記空燃比補正係数の平均値に基づいて空燃比学習値を算出し、該算出時に、前記内燃機関の運転状態に対応して設けられ前記空燃比学習値が記憶される複数の記憶位置のうち前記運転状態検出手段で検出される前記内燃機関の運転状態に対応する記憶位置に前記空燃比学習値を更新記憶する学習値更新手段（例えば実施の形態の図２における空燃比学習値格納部５３）と、前記運転状態検出手段で検出される前記内燃機関の運転状態に対応する記憶位置より前記空燃比学習値を検索し、該空燃比学習値に基づいて前記内燃機関内に噴射する燃料噴射量を設定する設定手段（例えば実施の形態の図２における燃料噴射量演算部５５）と、前記学習値更新手段による前記空燃比学習値の更新記憶の実行を許可する前記反転周期の許可範囲を前記内燃機関への吸入空気量に応じて決定する範囲決定手段（例えば実施の形態の図２における空燃比学習実行判定部５８）と、該範囲決定手段で決定された前記許可範囲外に前記反転周期があるときに前記学習値更新手段の実行を禁止する更新禁止手段（例えば実施の形態の図２における空燃比学習実行判定部５８）とを備えたことを特徴とする。
【０００７】
これにより、空燃比検出手段が空燃比を検出すると、この空燃比に応じて空燃比補正係数算出手段が空燃比補正係数を算出し、平均値算出手段が空燃比補正係数の平均値を算出する。そして、学習値更新手段が、算出された空燃比補正係数の平均値に基づいて空燃比学習値を算出し、該算出時に運転状態検出手段で検出される内燃機関の運転状態に対応する記憶位置に空燃比学習値を更新記憶する。一方、設定手段は、このようにして更新記憶された空燃比学習値を、運転状態検出手段で検出される内燃機関の運転状態に対応する記憶位置より検索し、該空燃比学習値に基づいて内燃機関内に噴射する燃料噴射量を設定し、その結果、この燃料噴射量で燃料を噴射することになる。
【０００８】
そして、範囲決定手段は、学習値更新手段による空燃比学習値の更新記憶の実行を許可する空燃比の反転周期の許可範囲を内燃機関への吸入空気量に応じて決定しており、上記学習値更新手段による空燃比学習値の更新記憶の実行に当たって、空燃比検出手段が空燃比を検出し、反転周期算出手段が、空燃比検出手段で検出した空燃比の反転周期を算出すると、更新禁止手段が、範囲決定手段で決定された前記許可範囲外に空燃比の反転周期があるときに学習値更新手段による空燃比学習値の更新記憶の実行を禁止する。
【０００９】
【発明の実施の形態】
本発明の一の実施の形態を図面を参照して以下に説明する。
図１は本発明の一の実施の形態を示す図である。同図中、１は、各気筒に吸気弁及び排気弁（図示せず）を設けた直列４気筒の、動力を発生させる内燃機関本体である。
【００１０】
内燃機関の吸気管２は分岐部（吸気マニホルド）１１を介して内燃機関本体１の各気筒の燃焼室に接続する。吸気管２の途中にはスロットル弁３が配されている。スロットル弁３にはスロットル弁開度（θＴＨ）センサ４が連結されており、スロットル弁開度θＴＨに応じた電気信号を出力してＥＣＵ５に供給する。吸気管２には、スロットル弁３をバイパスする補助空気通路６が設けられており、該補助空気通路６の途中には補助空気量制御弁７が配されている。補助空気量制御弁７は、ＥＣＵ５に接続されており、ＥＣＵ５によりその開弁量が制御される。
【００１１】
吸気管２のスロットル弁３の上流側には吸気温（ＴＡ）センサ８が装着されており、その検出信号がＥＣＵ５に供給される。吸気管２のスロットル弁３と吸気マニホルド１１の間には、チャンバ９が設けられており、チャンバ９には吸気管内絶対圧（ＰＢＡ）センサ（運転状態検出手段）１０が取り付けられている。吸気管内絶対圧センサ１０の検出信号はＥＣＵ５に供給される。
【００１２】
内燃機関本体１には内燃機関水温（ＴＷ）センサ１３が装着されており、その検出信号がＥＣＵ５に供給される。ＥＣＵ５には、内燃機関本体１のクランク軸（図示せず）の回転に関する情報を検出する回転情報センサ（運転状態検出手段）１４が接続されており、該回転情報センサ１４から、クランク軸の回転角度に応じた信号がＥＣＵ５に供給される。回転情報センサ１４は、内燃機関本体１の特定の気筒の所定クランク角度位置で信号パルス（以下「ＣＹＬ信号パルス」という）を出力する気筒判別センサ、各気筒の吸入行程開始時の上死点（ＴＤＣ）に関し所定クランク角度前のクランク角度位置で（４気筒エンジンではクランク角１８０度毎に）ＴＤＣ信号パルスを出力するＴＤＣセンサ及びＴＤＣ信号パルスより短い一定クランク角周期（例えば３０度周期）で１パルス（以下「ＣＲＫ信号パルス」という）を発生するＣＲＫセンサから成り、ＣＹＬ信号パルス、ＴＤＣ信号パルス及びＣＲＫ信号パルスがＥＣＵ５に供給される。これらの信号パルスは、燃料噴射時期、点火時期等の各種タイミング制御およびエンジン回転数Ｎｅの検出に使用される。
【００１３】
吸気マニホルド１１の吸気弁の少し上流側には、単位時間当たりの燃料噴射量が一定の燃料噴射弁１２が、各気筒毎に設けられており、各燃料噴射弁１２は図示しない燃料ポンプに接続されているとともにＥＣＵ５に電気的に接続されて、ＥＣＵ５からの信号により燃料噴射時期及び燃料噴射時間（開弁時間すなわち噴射量）が制御される。内燃機関本体１の点火プラグ（図示せず）もＥＣＵ５に電気的に接続されており、ＥＣＵ５により点火時期θＩＧが制御される。
【００１４】
排気管１６は分岐部（排気マニホルド）１５を介して内燃機関本体１の燃焼室に接続されている。排気系の排気管１６には分岐部１５が集合する部分の直ぐ下流側に、上流側の酸素濃度センサ（以下「上流Ｏ２センサ」という）１７が装着されている。さらに上流Ｏ２センサ１７の下流側には三元触媒１９が配されており、またこの三元触媒１９の下流には下流側の酸素濃度センサ（以下「下流Ｏ２センサ」という）１８が装着されている。三元触媒１９は、排気ガス中のＨＣ，ＣＯ，ＮＯｘ等の浄化を行う。
【００１５】
上流Ｏ２センサ１７と下流Ｏ２センサ１８は、その出力が理論空燃比の前後において急激に変化する特性を有し、その出力は理論空燃比よりリッチ側で高レベルとなり、リーン側で低レベルとなる。上流側Ｏ２センサ１７と下流Ｏ２センサ１８はＥＣＵ５に接続されており、その検出信号はＥＣＵ５に供給される。さらに大気圧を検出する大気圧センサ２１がＥＣＵ５に接続されており、その検出信号はＥＣＵ５に供給される。
【００１６】
排気還流機構３０は、吸気管２のチャンバ９と排気管１６とを接続する排気還流路３１と、排気還流路３１の途中に設けられ、排気還流量を制御する排気還流弁（ＥＧＲ弁）３２と、ＥＧＲ弁３２の弁開度を検出し、その検出信号をＥＣＵ５に供給するリフトセンサ３３とから成る。ＥＧＲ弁３２は、ソレノイドを有する電磁弁であり、ソレノイドはＥＣＵ５に接続され、その弁開度がＥＣＵ５からの制御信号によりリニアに変化させることができるように構成されている。
【００１７】
蒸発燃料処理装置４０は、燃料を貯留する燃料タンク４１内で発生した蒸発燃料を内燃機関本体１の吸気系にパージするもので、燃料タンク４１が通路４２を介してキャニスタ４５に接続し、キャニスタ４５はパージ通路４３を介して吸気管２のチャンバ９に接続している。キャニスタ４５は、燃料タンク４１内で発生する蒸発燃料を吸着する吸着剤を内蔵し、外気取込口を有する。通路４２の途中には、正圧バルブ及び負圧バルブから成る２ウェイバルブ４６が配設され、パージ通路４３の途中にはデューティ制御型の電磁弁であるパージ制御弁４４が設けられている。パージ制御弁４４は、ＥＣＵ５に接続されており、ＥＣＵ５からの信号に応じて制御される。
【００１８】
ＥＣＵ５は、上述した各種センサからの入力信号波形を整形して電圧レベルを所定レベルに修正し、アナログ信号値をデジタル信号値に変化する等の機能を有する入力回路と、中央処理回路（ＣＰＵ）と、該ＣＰＵで実行される各種演算プログラムや後述する各種マップ及び演算結果等を記憶するＲＯＭ及びＲＡＭからなる記憶回路と、燃料噴射弁１２，パージ制御弁４４等の各種電磁弁や点火プラグに駆動信号を出力する出力回路とを備えている。
【００１９】
ＥＣＵ５は、上述の各種内燃機関運転パラメータ信号に基づいて燃料噴射弁１２の燃料噴射時間ＴＯＵＴを演算し、この演算結果に基づいて燃料噴射弁１２を駆動する信号を出力する。すなわち、ＥＣＵ５は各種センサとで、内燃機関を制御する内燃機関の制御装置５０を構成する。
【００２０】
ＥＣＵ５は、例えば、図２に示すように、上流Ｏ２センサ１７の出力ＶＯ２に応じて空燃比フィードバック係数（空燃比補正係数）ＫＯ２を算出する空燃比Ｆ／Ｂ係数演算部（空燃比補正係数算出手段）５１と、上流Ｏ２センサ１７の出力ＶＯ２の反転周期ＦＰＶＯ２を算出するＯ２センサ反転周期演算部（反転周期算出手段）５２とを有している。
【００２１】
また、空燃比Ｆ／Ｂ係数演算部５１で算出された空燃比フィードバック係数の平均値ＫＯ２ＭＥＮを算出するとともに空燃比フィードバック係数の平均値ＫＯ２ＭＥＮに基づいて空燃比学習値ＫＴＩＭを算出し、該算出時の内燃機関の運転状態に対応する記憶位置に空燃比学習値ＫＴＩＭを更新記憶する空燃比学習値格納部（平均値算出手段，学習値更新手段）５３と、内燃機関の運転状態に対応する記憶位置より基本燃料噴射量ＴＩＭを検索する基本燃料噴射量演算部５４とを有している。
【００２２】
さらに、内燃機関の運転状態に対応する記憶位置より空燃比学習値ＫＴＩＭを検索し、該空燃比学習値ＫＴＩＭに基づいて内燃機関内に噴射する燃料噴射量に相当する燃料噴射時間ＴＯＵＴを設定する燃料噴射量演算部（設定手段）５５と、該設定された燃料噴射時間ＴＯＵＴで燃料噴射弁１２を駆動する燃料噴射出力部５６と、内燃機関への吸入空気量に相関する吸入空気量相関値ＮＴＩを演算する吸入空気量相関値演算部５７と、空燃比学習値格納部５３による空燃比学習値ＫＴＩＭの更新記憶の実行を許可する反転周期ＦＰＶＯ２の許可範囲を内燃機関への吸入空気量相関値ＮＴＩに応じて決定するとともに、決定された許可範囲外に反転周期ＦＰＶＯ２があるときに空燃比学習値格納部５３による空燃比学習値ＫＴＩＭの更新記憶の実行を禁止する空燃比学習実行判定部（範囲決定手段，更新禁止手段）５８とを有している。
【００２３】
上記ＥＣＵ５による燃料噴射制御の制御内容について以下に説明する。
ＥＣＵ５は、図３に示す燃料噴射制御のフローチャートのＳＴＡＲＴからＥＸＩＴまでの１制御サイクルを、例えば、ＴＤＣセンサからＴＤＣ信号パルスが出力される毎に実行する。
【００２４】
ＥＣＵ５の記憶回路には、エンジン回転数Ｎｅと吸気管内絶対圧Ｐｂとで規定される各運転状態毎にそれぞれ基本燃料噴射量（基本燃料噴射時間）ＴＩＭが対応設定されてなる基本燃料噴射量マップが記憶されており、まず、ステップＳＡ１において、その時点のエンジン回転数Ｎｅを回転情報センサ１４の出力から検出するとともに、その時点の吸気管内絶対圧Ｐｂを吸気管内絶対圧センサ１０の出力から検出し、これらエンジン回転数Ｎｅと吸気管内絶対圧Ｐｂとで規定される運転状態に対する基本燃料噴射量ＴＩＭを基本燃料噴射量マップで検索し読み出す。なお、この基本燃料噴射量ＴＩＭの演算は、基本燃料噴射量演算部５４が実行する。
【００２５】
また、ＥＣＵ５の記憶回路を構成するバッテリバックアップＲＡＭには、エンジン回転数Ｎｅと吸気管内絶対圧Ｐｂとで規定される各運転状態毎にＲＡＭエリア（記憶位置）が設定されこれらＲＡＭエリアにそれぞれ空燃比学習値ＫＴＩＭが対応設定されてなる空燃比学習値マップが記憶されており、ステップＳＡ２において、この空燃比学習値マップから、その時点のエンジン回転数Ｎｅと吸気管内絶対圧Ｐｂとで検出される内燃機関の運転状態に対するＲＡＭエリアにある空燃比学習値ＫＴＩＭを検索し読み出す。
【００２６】
ここで、上記した空燃比学習値マップは、例えば、図４に示すように、エンジン回転数Ｎｅを＃ＮＫＴＩＭ＋０〜＃ＮＫＴＩＭ＋８の９つの値の格子点により区画される８つの領域（図４における横方向）に分けるとともに、吸気管内絶対圧Ｐｂを＃ＰＫＴＩＭ＋０〜＃ＰＫＴＩＭ＋８の９つの値の格子点により区画される８つの領域（図４における縦方向）に分けることにより、８×８＝６４のＲＡＭエリアに区分されており、各ＲＡＭエリア毎にＫＴＩＭ０〜ＫＴＩＭ６３の空燃比学習値が設定記憶されている。さらに、この空燃比学習値マップとは別に、内燃機関がアイドリング状態において用いられる空燃比学習値ＫＴＩＭ６４が設定記憶されている。
【００２７】
これら空燃比学習値ＫＴＩＭの初期値は１．０であり、空燃比学習値は、図３に示すこの燃料噴射制御のフローチャートとは別に、所定時間（１０ｍｓ）毎に実行される後述する空燃比フィードバック係数ＫＯ２の算出処理で実行される空燃比学習値ＫＴＩＭの算出処理で必要に応じて補正され更新される。
【００２８】
なお、空燃比学習値マップから空燃比学習値ＫＴＩＭを読み出す際には、補間計算が行われる。すなわち、まず、図５に示すように、ＲＡＭエリアを区分する格子点の隣り合うもの同士の中間値を補間計算用格子点とする。具体的には、例えば、ＲＡＭエリアを区分する格子点＃ＮＫＴＩＭ２，＃ＮＫＴＩＭ３，＃ＰＢＫＴＩＭ３，＃ＰＢＫＴＩＭ４に対して、（ＮＫＴＩＭ２＋ＮＫＴＩＭ３）／２，（ＰＢＫＴＩＭ３＋ＰＢＫＴＩＭ４）／２を補間計算用格子点Ａ１とし、格子点＃ＮＫＴＩＭ３，＃ＮＫＴＩＭ４，＃ＰＢＫＴＩＭ３，＃ＰＢＫＴＩＭ４に対して、（ＮＫＴＩＭ３＋ＮＫＴＩＭ４）／２，（ＰＢＫＴＩＭ３＋ＰＢＫＴＩＭ４）／２を補間計算用格子点Ａ２とし、格子点＃ＮＫＴＩＭ４，＃ＮＫＴＩＭ５，＃ＰＢＫＴＩＭ３，＃ＰＢＫＴＩＭ４に対して、（ＮＫＴＩＭ４＋ＮＫＴＩＭ５）／２，（ＰＢＫＴＩＭ３＋ＰＢＫＴＩＭ４）／２を補間計算用格子点Ａ３とし、また、格子点＃ＮＫＴＩＭ２，＃ＮＫＴＩＭ３，＃ＰＢＫＴＩＭ４，＃ＰＢＫＴＩＭ５に対して、（ＮＫＴＩＭ２＋ＮＫＴＩＭ３）／２，（ＰＢＫＴＩＭ４＋ＰＢＫＴＩＭ５）／２を補間計算用格子点Ａ４とし、格子点＃ＮＫＴＩＭ３，＃ＮＫＴＩＭ４，＃ＰＢＫＴＩＭ４，＃ＰＢＫＴＩＭ５に対して、（ＮＫＴＩＭ３＋ＮＫＴＩＭ４）／２，（ＰＢＫＴＩＭ４＋ＰＢＫＴＩＭ５）／２を補間計算用格子点Ａ５とし、格子点＃ＮＫＴＩＭ４，＃ＮＫＴＩＭ５，＃ＰＢＫＴＩＭ４，＃ＰＢＫＴＩＭ５に対して、（ＮＫＴＩＭ４＋ＮＫＴＩＭ５）／２，（ＰＢＫＴＩＭ４＋ＰＢＫＴＩＭ５）／２を補間計算用格子点Ａ６とし、さらに、格子点＃ＮＫＴＩＭ２，＃ＮＫＴＩＭ３，＃ＰＢＫＴＩＭ５，＃ＰＢＫＴＩＭ６に対して、（ＮＫＴＩＭ２＋ＮＫＴＩＭ３）／２，（ＰＢＫＴＩＭ５＋ＰＢＫＴＩＭ６）／２を補間計算用格子点Ａ７とし、格子点＃ＮＫＴＩＭ３，＃ＮＫＴＩＭ４，＃ＰＢＫＴＩＭ５，＃ＰＢＫＴＩＭ６に対して、（ＮＫＴＩＭ３＋ＮＫＴＩＭ４）／２，（ＰＢＫＴＩＭ５＋ＰＢＫＴＩＭ６）／２を補間計算用格子点Ａ８とし、格子点＃ＮＫＴＩＭ４，＃ＮＫＴＩＭ５，＃ＰＢＫＴＩＭ５，＃ＰＢＫＴＩＭ６に対して、（ＮＫＴＩＭ４＋ＮＫＴＩＭ５）／２，（ＰＢＫＴＩＭ５＋ＰＢＫＴＩＭ６）／２を補間計算用格子点Ａ９とする。そして、エンジン回転数Ｎｅと吸気管内絶対圧Ｐｂとに対応する位置（例えば図５に示す位置Ａ０）に対し最も近接する四つの補間計算用格子点（図５に示す補間計算用格子点Ａ１，Ａ２，Ａ４，Ａ５）を割り出しこれら四つの補間計算用格子点からの各距離に応じた重み付けをするようにして補間計算を行うのである。
【００２９】
さらに、このように補間計算されたＫＴＩＭに対し、大気圧センサ２１の検出値から図６に示す大気圧補正テーブルに基づく検索で割り出される大気圧補正係数ＫＴＫＰＡで次式にしたがった補正を行う。
ＫＴＩＭ＝（ＫＴＩＭ−１．０）×ＫＴＫＰＡ＋１．０
【００３０】
さらに、ＥＣＵ５の記憶回路には、図３に示す燃料噴射制御のフローチャートとは別に、所定時間（１０ｍｓ）毎に実行される後述する空燃比フィードバック係数（空燃比補正係数）ＫＯ２の算出処理で算出された空燃比フィードバック係数ＫＯ２が記憶されており、ステップＳＡ３において、この空燃比フィードバック係数ＫＯ２を読み出す。
【００３１】
ＥＣＵ５は、ステップＳＡ４において、ステップＳＡ１で読み出した基本燃料噴射量ＴＩＭと、ステップＳＡ２で読み出した空燃比学習値ＫＴＩＭと、ステップＳＡ３で読み出した空燃比フィードバック係数ＫＯ２と、さらにその時点のバッテリの状態に応じた補正値ＴＩＶＢとから、内燃機関内に噴射する燃料噴射量に相当する燃料噴射弁１２の燃料噴射時間（燃料噴射弁１２の開弁時間）ＴＯＵＴを以下の式に基づいて設定することになる。
ＴＯＵＴ＝ＴＩＭ＊ＫＴＩＭ＊ＫＯ２＋ＴＩＶＢ
この算出は燃料噴射量演算部５５が実行する。
【００３２】
そして、ＥＣＵ５は、このようにして算出した燃料噴射時間ＴＯＵＴの間だけ燃料噴射弁１２を開弁させる。この燃料噴射弁１２の開弁駆動は燃料噴射出力部５６が実行する。
【００３３】
このようにしてステップＳＡ４で燃料噴射時間ＴＯＵＴを算出し燃料噴射弁１２を開弁させると、図２の燃料噴射制御の処理を終了する。
【００３４】
次に、上記した燃料噴射制御のフローチャートのステップＳＡ３で用いられる空燃比フィードバック係数ＫＯ２を算出するための算出処理と、燃料噴射制御のフローチャートのステップＳＡ２で用いられる、この空燃比フィードバック係数ＫＯ２の算出処理中のステップＳＢ１５で実行される空燃比学習値ＫＴＩＭを算出するための算出処理とについて説明する。
【００３５】
まず、空燃比フィードバック係数ＫＯ２を上流Ｏ２センサ１７の出力に応じて算出するための算出処理について図７のフローチャートに基づき説明する。なお、図７に示す空燃比フィードバック係数ＫＯ２の算出処理のフローチャートのＳＴＡＲＴからＥＸＩＴまでの１制御サイクルを、例えば、所定時間（１０ｍｓ）毎に実行する。
【００３６】
まず、ステップＳＢ１において、上流Ｏ２センサ１７の出力に反転があったか否かをフラグＦ＿ＰＶＲＥＦの反転に基づき判定する。すなわち、上流Ｏ２センサ１７の出力ＶＯ２は、図８（ａ）に示すように周期をもって変動するものであり、ＥＣＵ５においては、図８（ｂ）に示すように、上流Ｏ２センサ１７の出力ＶＯ２がリーン（０Ｖ）側からリッチ（１Ｖ）側に変動しているときは１Ｖに近い所定のしきい値Ｂ１を上回ると、フラグＦ＿ＰＶＲＥＦを「１」にセットする一方、上流Ｏ２センサ１７の出力がリッチ（１Ｖ）側からリーン（０Ｖ）側に変動しているときは０Ｖに近い所定のしきい値Ｂ２を下回ると、フラグＦ＿ＰＶＲＥＦを「０」にリセットする処理を行う。そして、ステップＳＢ１では、このフラグＦ＿ＰＶＲＥＦが前回の１サイクルのときに対し反転したか（０→１または１→０）否かを判定するのである。
【００３７】
ステップＳＢ１においてフラグＦ＿ＰＶＲＥＦに反転があった場合は、ステップＳＢ２においてフラグＦ＿ＰＶＲＥＦが１であるか否かを判定する。ステップＳＢ２において、フラグＦ＿ＰＶＲＥＦが１である場合、すなわち現在の空燃比の状態がリッチ側にある場合は、ステップＳＢ３においてリッチ用のタイマ値ＲＤＬＹをディレイタイマＴＲＬＤＬＹにセットする一方、ステップＳＢ２において、フラグＦ＿ＰＶＲＥＦが０である場合、すなわち現在の空燃比の状態がリーン側にある場合は、ステップＳＢ４においてリーン用のタイマ値ＬＤＬＹをディレイタイマＴＲＬＤＬＹにセットする。なお、ディレイタイマＴＲＬＤＬＹはセット後、自動的に所定の時間毎にカウントダウンされる。
【００３８】
ステップＳＢ３の後およびステップＳＢ４の後は、ステップＳＢ５において、フラグＦ＿ＫＯ２ＷＩＮを「０」にする。
【００３９】
上記ステップＳＢ１においてフラグＦ＿ＰＶＲＥＦに反転がなかった場合は、ステップＳＢ６においてディレイタイマＴＲＬＤＬＹ＝０であるか否かを判定する。そして、ステップＳＢ６においてディレイタイマＴＲＬＤＬＹ＝０であった場合、ステップＳＢ７においてフラグＦ＿ＰＶＲＥＦが１であるか否かを判定する。
【００４０】
ステップＳＢ７において、フラグＦ＿ＰＶＲＥＦが１である場合、すなわち現在の空燃比の状態がリッチ側にある場合は、ステップＳＢ８においてフラグＦ＿ＫＯ２ＷＩＮ＝１であるか否かを判定する。そして、ステップＳＢ８においてフラグＦ＿ＫＯ２ＷＩＮ＝１でなかった場合、ステップＳＢ９において現在の空燃比フィードバック係数ＫＯ２から飛躍的に補正するための所定値ＫＯ２ＷＲを減算した値を新たな空燃比フィードバック係数ＫＯ２とするとともに、ステップＳＢ１０において、フラグＦ＿ＫＯ２ＷＩＮを「１」とする。他方、ステップＳＢ８においてフラグＦ＿ＫＯ２ＷＩＮ＝１であった場合、ステップＳＢ１１において現在の空燃比フィードバック係数ＫＯ２から、徐々に補正していくための所定値ＩＬを減算した値を新たな現在の空燃比フィードバック係数ＫＯ２とする。
【００４１】
上記ステップＳＢ７において、フラグＦ＿ＰＶＲＥＦが１でない場合、すなわち現在の空燃比の状態がリーン側にある場合は、ステップＳＢ１２においてフラグＦ＿ＫＯ２ＷＩＮ＝１であるか否かを判定する。そして、ステップＳＢ１２においてフラグＦ＿ＫＯ２ＷＩＮ＝１でなかった場合、ステップＳＢ１３において現在の空燃比フィードバック係数ＫＯ２に対し飛躍的に補正するための所定値ＫＯ２ＷＬを加算した値を新たな空燃比フィードバック係数ＫＯ２とし、ステップＳＢ１０において、フラグＦ＿ＫＯ２ＷＩＮを「１」とする。他方、ステップＳＢ１２においてフラグＦ＿ＫＯ２ＷＩＮ＝１であった場合、ステップＳＢ１４において現在の空燃比フィードバック係数ＫＯ２に対し、徐々に補正していくための所定値ＩＲを加算した値を新たな空燃比フィードバック係数ＫＯ２とする。
【００４２】
ステップＳＢ５の後と、ステップＳＢ６の判断がＮＯの場合と、ステップＳＢ１０の後と、ステップＳＢ１１の後と、ステップＳＢ１４の後とに、ステップＳＢ１５において、空燃比学習値ＫＴＩＭの算出処理（後述）を行う。そして、このステップＳＢ１５の処理を終了すると、図７に示す空燃比フィードバック係数ＫＯ２を算出するための算出処理を終了する。
【００４３】
ここで、図９に示すタイミングチャートに照らし合わせて以上を説明すると、時点ｔ１において、フラグＦ＿ＰＶＲＥＦが「０」から「１」に変わると、ステップＳＢ１での判断がＹＥＳとなり、ステップＳＢ２での判断がＹＥＳとなって、ステップＳＢ３においてタイマ値ＲＤＬＹをディレイタイマＴＲＬＤＬＹにセットし、ステップＳＢ５において、フラグＦ＿ＫＯ２ＷＩＮを「０」にする。
【００４４】
すると、次の制御サイクルでは、ステップＳＢ１の判断がＮＯとなり、ステップＳＢ６でディレイタイマＴＲＬＤＬＹ＝０となるまで、空燃比フィードバック係数ＫＯ２をそのままの状態で維持する（時点ｔ１〜ｔ２）。そして、ステップＳＢ６でディレイタイマＴＲＬＤＬＹ＝０となった時点ｔ２においては現在の空燃比の状態がリッチ側にあってフラグＦ＿ＰＶＲＥＦ＝１であるため、ステップＳＢ７の判断がＹＥＳとなり、さらにステップＳＢ８においてフラグＦ＿ＫＯ２ＷＩＮ＝１がＮＯとなって、ステップＳＢ９において現在の空燃比フィードバック係数ＫＯ２から飛躍的に補正するための所定値ＫＯ２ＷＲを減算した値を新たな空燃比フィードバック係数ＫＯ２とする。そして、ステップＳＢ１０において、フラグＦ＿ＫＯ２ＷＩＮを「１」とする。
【００４５】
すると、次の制御サイクルでは、ステップＳＢ８の判断がＹＥＳとなり、ステップＳＢ１１において、現在の空燃比フィードバック係数ＫＯ２から、徐々に補正していくための所定値ＩＬを減算した値を新たな現在の空燃比フィードバック係数ＫＯ２とする。そして、ステップＳＢ１において次のフラグＦ＿ＰＶＲＥＦの反転の判断がＹＥＳとなるまで、ステップＳＢ１１を繰り返し、空燃比フィードバック係数ＫＯ２を徐々に小さくしていく（時点ｔ２〜ｔ３）。
【００４６】
次に、時点ｔ３において、フラグＦ＿ＰＶＲＥＦが「０」から「１」に変わると、ステップＳＢ１での判断がＹＥＳとなり、ステップＳＢ２での判断がＮＯとなって、ステップＳＢ４においてタイマ値ＬＤＬＹをディレイタイマＴＲＬＤＬＹにセットし、ステップＳＢ５において、フラグＦ＿ＫＯ２ＷＩＮを「０」にする。
【００４７】
すると、次の制御サイクルでは、ステップＳＢ１の判断がＮＯとなり、ステップＳＢ６でディレイタイマＴＲＬＤＬＹ＝０となるまで、空燃比フィードバック係数ＫＯ２をそのままの状態で維持する（時点ｔ３〜ｔ４）。そして、ステップＳＢ６でディレイタイマＴＲＬＤＬＹ＝０となると、時点ｔ４においては現在の空燃比の状態がリーン側にあってフラグＦ＿ＰＶＲＥＦ＝１ではないため、ステップＳＢ７の判断がＮＯとなり、さらにステップＳＢ１２においてフラグＦ＿ＫＯ２ＷＩＮ＝１がＮＯとなって、ステップＳＢ１３において現在の空燃比フィードバック係数ＫＯ２に一度にある程度補正するための所定値ＫＯ２ＷＬを加算した値を新たな空燃比フィードバック係数ＫＯ２とする。そして、ステップＳＢ１０において、フラグＦ＿ＫＯ２ＷＩＮを「１」とする。
【００４８】
すると、次の制御サイクルでは、ステップＳＢ１２の判断がＹＥＳとなり、ステップＳＢ１４において、現在の空燃比フィードバック係数ＫＯ２に、徐々に補正していくための所定値ＩＲを加算した値を新たな現在の空燃比フィードバック係数ＫＯ２とする。そして、ステップＳＢ１において次のフラグＦ＿ＰＶＲＥＦの反転の判断がＹＥＳとなるまで、ステップＳＢ１４を繰り返し、空燃比フィードバック係数ＫＯ２を徐々に大きくしていく（時点ｔ４〜ｔ５）。
【００４９】
以上のようにして空燃比フィードバック係数ＫＯ２を算出する。
なお、この空燃比フィードバック係数ＫＯ２の算出処理は、空燃比Ｆ／Ｂ係数演算部５１が実行する。
【００５０】
次に、上記した空燃比フィードバック係数ＫＯ２の算出処理のステップＳＢ１５で実行される空燃比学習値ＫＴＩＭを算出するための算出処理について図１０および図１１のフローチャートに基づき説明する。なお、この空燃比学習値ＫＴＩＭの算出処理においては、空燃比フィードバック係数の平均値ＫＯ２ＭＥＮの算出を行い、この空燃比フィードバック係数の平均値ＫＯ２ＭＥＮに基づいて空燃比学習値ＫＴＩＭを算出し、該算出時にエンジン回転数Ｎｅと吸気管内絶対圧Ｐｂとで規定される内燃機関の運転状態に対応するＲＡＭエリア（記憶位置）にこの空燃比学習値ＫＴＩＭを更新記憶する。また、この空燃比学習値ＫＴＩＭの算出処理においては、上流Ｏ２センサ１７の出力すなわち空燃比の反転周期ＦＰＶＯ２の算出をも行い、この反転周期ＦＰＶＯ２が、予め内燃機関への吸入空気量に応じて決定された空燃比学習値の更新記憶の実行を許可する反転周期の許可範囲外にあるときには、空燃比学習値の更新記憶の実行を禁止する。
【００５１】
まず、ステップＳＣ１において、上流Ｏ２センサ１７の出力にリーン側からリッチ側への反転があったか否かをフラグＦ＿ＰＶＲＥＦの反転に基づき判定する。すなわち、上述したように、上流Ｏ２センサ１７の出力すなわち空燃比ＶＯ２は図８に示すように周期をもって変動するものであることから、上述と同様に、この変動に基づいて、リーン側からリッチ側への移行でＦ＿ＰＶＲＥＦを「１」にセットする一方、リッチ側からリーン側への移行でＦ＿ＰＶＲＥＦを「０」にリセットする処理を行う。そして、ステップＳＣ１においては、前回の制御サイクルにおけるフラグＦ＿ＰＶＲＥＦが「０」であり、かつ今回の制御サイクルにおけるフラグＦ＿ＰＶＲＥＦが「１」であるか否か、すなわちフラグＦ＿ＰＶＲＥＦがリーン側からリッチ側に反転したか否かを判定する。
【００５２】
そして、ステップＳＣ１の判断がＮＯの場合、ステップＳＣ２において、カウンタＣＦＰＶＯ２を「１」だけインクリメントする。
【００５３】
次に、ステップＳＣ３において、前回の制御サイクルにおけるフラグＦ＿ＰＶＲＥＦが「１」であり、かつ今回の制御サイクルにおけるフラグＦ＿ＰＶＲＥＦが「０」であるか否か、すなわちフラグＦ＿ＰＶＲＥＦがリッチ側からリーン側に反転したか否かを判定する。
【００５４】
そして、ステップＳＣ３の判断がＹＥＳの場合、ステップＳＣ４において、現在の空燃比フィードバック係数ＫＯ２を空燃比フィードバック係数の最小値ＫＯ２ＭＩＮとして記憶する。
【００５５】
ステップＳＣ３の判断がＮＯの場合と、ステップＳＣ４の後とにおいては、ステップＳＣ５で、フラグＦ＿ＫＴＩＭＧを「０」とする。
【００５６】
上記ステップＳＣ１の判断がＹＥＳであった場合、すなわちフラグＦ＿ＰＶＲＥＦがリーン側からリッチ側に反転した場合は、ステップＳＣ６においてカウンタＣＦＰＶＯ２を反転周期ＦＰＶＯ２として記憶する。そして、ステップＳＣ７においてカウンタＣＦＰＶＯ２を「０」とし、ステップＳＣ８において、現在の空燃比フィードバック係数ＫＯ２を空燃比フィードバック係数の最大値ＫＯ２ＭＡＸとして記憶する。
【００５７】
次に、ステップＳＣ９において、空燃比フィードバック係数の最小値ＫＯ２ＭＩＮと最大値ＫＯ２ＭＡＸとを加算して２で割ることで、空燃比フィードバック係数の平均値ＫＯ２ＭＥＮを算出する。そして、ステップＳＣ１０において、フラグＦ＿ＫＴＩＭＧを「１」とする。
【００５８】
ここで、図９に示すタイミングチャートに照らし合わせて以上を説明すると、時点ｔ１において、フラグＦ＿ＰＶＲＥＦが「０」から「１」に変わると、ステップＳＣ１での判断がＹＥＳとなり、ステップＳＣ７においてカウンタＣＦＰＶＯ２を「０」とする。
【００５９】
次の制御サイクルでは、ステップＳＣ１での判断がＮＯとなり、ステップＳＣ２において、カウンタＣＦＰＶＯ２を「１」だけインクリメントする。そして、フラグＦ＿ＰＶＲＥＦが「０」から「１」に変わった時点ｔ１から、次にステップＳＣ１での判断がＹＥＳとなる、すなわちフラグＦ＿ＰＶＲＥＦが「０」から「１」に変わる時点ｔ５までに０から制御サイクル毎に１ずつインクリメントされるカウンタＣＦＰＶＯ２を、ステップＳＣ６において反転周期ＦＰＶＯ２として記憶する。なお、このような反転周期ＦＰＶＯ２の演算はＯ２センサ反転周期演算部５２において行われる。
【００６０】
また、時点ｔ３において、フラグＦ＿ＰＶＲＥＦが「１」から「０」に変わると、ステップＳＣ３での判断がＹＥＳとなり、ステップＳＣ４において、その時点での空燃比フィードバック係数ＫＯ２をその最小値ＫＯ２ＭＩＮとして記憶することになり、その後、時点ｔ５において、フラグＦ＿ＰＶＲＥＦが「０」から「１」に変わると、ステップＳＣ１での判断がＹＥＳとなり、ステップＳＣ８において、その時点での空燃比フィードバック係数ＫＯ２をその最大値ＫＯ２ＭＡＸとして記憶するとともに、ステップＳＣ９でその平均値ＫＯ２ＭＥＮを算出して記憶する。そして、ステップＳＣ６で反転周期ＦＰＶＯ２が算出され、ステップＳＣ９で空燃比フィードバック係数の平均値ＫＯ２ＭＥＮが算出されると、ステップＳＣ１０においてこれらの算出が終わったことを示すフラグＦ＿ＫＴＩＭＧを「１」とする。
【００６１】
なお、ここでは、空燃比フィードバック係数の平均値ＫＯ２ＭＥＮを最大値ＫＯ２ＭＡＸおよび最小値ＫＯ２ＭＩＮの平均から求めたが、フラグＦ＿ＰＶＲＥＦが「１」から「０」に変わってから次にフラグＦ＿ＰＶＲＥＦが「１」から「０」に変わるまでの間のすべての制御サイクルで求められる空燃比フィードバック係数ＫＯ２を加算しその加算回数で除算して平均値を求めてもよい。
【００６２】
上記ステップＳＣ５の後およびステップＳＣ１０の後に、ステップＳＣ１１において、空燃比学習値マップ（図４参照）から、その時点のエンジン回転数Ｎｅと吸気管内絶対圧Ｐｂとで検出されるＲＡＭエリアにある空燃比学習値ＫＴＩＭを検索し読み出す。そして、ステップＳＣ１２において、一の反転周期計測中に空燃比学習値ＫＴＩＭが記憶されたＲＡＭエリアに変化（他のＲＡＭエリアへの移行）があったか否かを判定し、ＲＡＭエリアの変化があった場合には、運転状態が変化していることから、ステップＳＣ１３で、その旨を示すフラグＦ＿ＫＴＩＭＡを「１」にする。
【００６３】
ステップＳＣ１２においてＲＡＭエリアの変化がなかった場合、およびステップＳＣ１３でフラグＦ＿ＫＴＩＭＡを「１」にした場合は、ステップＳＣ１４においてフラグＦ＿ＫＴＩＭＧ＝１であるか否かを判定し、フラグＦ＿ＫＴＩＭＧ＝１でない場合は、反転周期ＦＰＶＯ２および空燃比フィードバック係数の平均値ＫＯ２ＭＥＮが算出されていないため、図１０および図１１に示すフローチャートの処理すなわち図７に示すフローチャートのステップＳＢ１５を終了する。
【００６４】
ステップＳＣ１４においてフラグＦ＿ＫＴＩＭＧ＝１である場合、すなわち、反転周期ＦＰＶＯ２および空燃比フィードバック係数の平均値ＫＯ２ＭＥＮが算出されていると、ステップＳＣ１５においてフラグＦ＿ＩＤＬＥ＝１であるか否かを判定する。このフラグＦ＿ＩＤＬＥは、内燃機関がアイドリング状態にあると判定される所定の条件下において「１」とされ、内燃機関がアイドリング状態にないと判定される所定の条件下において「０」とされる。
【００６５】
そして、ステップＳＣ１５において、フラグＦ＿ＩＤＬＥ＝１である場合、すなわち、内燃機関がアイドリング状態にある場合は、ステップＳＣ１６において、ステップＳＣ６で記憶した反転周期ＦＰＶＯ２が、下側しきい値＃ＦＰＶＯ２ＩＬと上側しきい値＃ＦＰＶＯ２ＩＨとで規定される一の学習許可範囲に入っているか否か、すなわち＃ＦＰＶＯ２ＩＬ≦ＦＰＶＯ２≦＃ＦＰＶＯ２ＩＨであるか否かを判定し、＃ＦＰＶＯ２ＩＬ≦ＦＰＶＯ２≦＃ＦＰＶＯ２ＩＨでない場合は、後述するステップＳＣ２２〜ＳＣ２４で実行される空燃比学習値ＫＴＩＭの更新記憶の実行を禁止する。ここで、アイドリング状態にあるときは、エンジン負荷がほとんど変わることがないので、反転周期ＦＰＶＯ２がこのような一の所定範囲に入っているか否かの判断のみを行う。なお、この空燃比学習値ＫＴＩＭの更新記憶の実行禁止の判定は空燃比学習実行判定部５８が実行する。
【００６６】
上記ステップＳＣ１５において、フラグＦ＿ＩＤＬＥ＝１でない場合、すなわち、内燃機関がアイドリング状態にない場合は、ステップＳＣ１７において、内燃機関への吸入空気量に相関がある吸入空気量相関値ＮＴＩを算出する。なお、この吸入空気量相関値ＮＴＩの算出は、吸入空気量相関値演算部５７が実行する。
【００６７】
ステップＳＣ１７においては、まず、エンジン回転数Ｎｅおよび吸気管内絶対圧Ｐｂを検出し、これらエンジン回転数Ｎｅと吸気管内絶対圧Ｐｂとで規定される運転状態に対する基本燃料噴射量ＴＩＭを基本燃料噴射量マップで検索し読み出す。そして、この基本燃料噴射量ＴＩＭとエンジン回転数Ｎｅとから、以下の式で算出を行う。
吸入空気量相関値ＮＴＩ＝エンジン回転数Ｎｅ×基本燃料噴射量ＴＩＭ
【００６８】
なお、基本燃料噴射量ＴＩＭは、単位回転当たりの燃料噴射量であるので、これにエンジン回転数Ｎｅをかけることで、単位時間当たりの燃料噴射量が得られ、この単位時間当たりの燃料噴射量が、単位時間当たりの吸入空気量に相当する値となる。
【００６９】
ここで、ＥＣＵ５の記憶回路には、各吸入空気量相関値ＮＴＩ毎にそれぞれ下側しきい値データ＃ＦＰＶＯ２ＮＮＬおよび上側しきい値データ＃ＦＰＶＯ２ＮＮＨが対応設定された図１２に示すしきい値テーブルが記憶されている。すなわち、図１２においては、吸入空気量相関値ＮＴＩの各値に対し設定された上側の線Ｃ１が上側しきい値データを、下側の線Ｃ２が下側しきい値データを示している。
【００７０】
そして、ステップＳＣ１８において、ステップＳＣ１７で算出された吸入空気量相関値ＮＴＩに対する下側しきい値データ＃ＦＰＶＯ２ＮＮＬおよび上側しきい値データ＃ＦＰＶＯ２ＮＮＨをしきい値テーブルで検索して読み出し、読み出した下側しきい値データ＃ＦＰＶＯ２ＮＮＬを下側しきい値ＦＰＶＯ２ＮＬとし、上側しきい値データ＃ＦＰＶＯ２ＮＮＨを上側しきい値ＦＰＶＯ２ＮＨとする。
【００７１】
そして、ステップＳＣ１９において、ステップＳＣ６で記憶した反転周期ＦＰＶＯ２が、下側しきい値ＦＰＶＯ２ＮＬと上側しきい値ＦＰＶＯ２ＮＨとで規定される学習許可範囲に入っているか否か、すなわちＦＰＶＯ２ＮＬ≦ＦＰＶＯ２≦ＦＰＶＯ２ＮＨであるか否かを判定し、ＦＰＶＯ２ＮＬ≦ＦＰＶＯ２≦ＦＰＶＯ２ＮＨでない場合は、後述するステップＳＣ２２〜ＳＣ２４で実行される空燃比学習値ＫＴＩＭの更新記憶の実行を禁止する。すなわち、アイドリング状態にないときは、エンジン負荷が変動しているため、エンジン負荷の大きさ毎に設定された学習許可範囲に反転周期ＦＰＶＯ２が入っているか否かの判断を行う。なお、この空燃比学習値ＫＴＩＭの更新記憶の実行禁止の判定は空燃比学習実行判定部５８が実行する。
【００７２】
上述したステップＳＣ１６において＃ＦＰＶＯ２ＩＬ≦ＦＰＶＯ２≦＃ＦＰＶＯ２ＩＨであった場合、およびステップＳＣ１９においてＦＰＶＯ２ＮＬ≦ＦＰＶＯ２≦ＦＰＶＯ２ＮＨであった場合は、ステップＳＣ２０において、ＲＡＭエリアの変化があり運転状態が変化したことを示すフラグＦ＿ＫＴＩＭＡが「１」であるか否かを判断する。
【００７３】
ステップＳＣ２０において、Ｆ＿ＫＴＩＭＡ＝１であった場合は、ステップＳＣ２１において、Ｆ＿ＫＴＩＭＡを「０」にするとともに、図１０および図１１に示すフローチャートの処理すなわち図７に示すフローチャートのステップＳＢ１５を終了する。すなわち、運転状態が定常的状態になく過渡的状態にあることから空燃比学習値ＫＴＩＭの更新記憶の実行を禁止する。なお、この空燃比学習値ＫＴＩＭの更新記憶の実行禁止の判定は空燃比学習実行判定部５８が実行する。
【００７４】
ステップＳＣ２０において、Ｆ＿ＫＴＩＭＡ＝１でなかった場合は、ステップＳＣ２２において、ステップＳＣ９で算出された空燃比フィードバック係数の平均値ＫＯ２ＭＥＮから、基準値である１．００を減算して偏差ＤＫＯ２ＭＥＮを算出する。
【００７５】
そして、ステップＳＣ２３において、偏差ＤＫＯ２ＭＥＮに所定の割合＃ＣＫＴＩＭ（例えば１〜２％）を乗算した値を、ステップＳＣ１１で運転状態に対応する空燃比学習値マップのＲＡＭエリアから読み出された空燃比学習値ＫＴＩＭ（ＫＴＩＭｎＯＬＤ）に加算し、この値を新たな空燃比学習値ＫＴＩＭ（ＫＴＩＭｎＮＥＷ）として同じＲＡＭエリアに更新記憶する。なお、この空燃比学習値ＫＴＩＭの更新記憶は、空燃比学習値格納部５３が実行する。
【００７６】
さらに、ステップＳＣ２４において、空燃比学習値ＫＴＩＭを所定の下限値＃ＫＴＩＭＬＬと所定の上限値＃ＫＴＩＭＬＨとの間に収めるリミット処理を行う。すなわち、空燃比学習値ＫＴＩＭが下限値＃ＫＴＩＭＬＬ以上かつ上限値＃ＫＴＩＭＬＨ以下であればそのままとし、空燃比学習値ＫＴＩＭが所定の下限値＃ＫＴＩＭＬＬを下回った場合にはこれを下限値＃ＫＴＩＭＬＬとし、空燃比学習値ＫＴＩＭが所定の上限値＃ＫＴＩＭＬＨを上回った場合にはこれを上限値＃ＫＴＩＭＬＨとするのである。
【００７７】
ステップＳＣ２４の処理を行った後、図１０および図１１に示すフローチャートの処理すなわち図７に示すフローチャートのステップＳＢ１５を終了する。
【００７８】
以上の実施の形態によれば、空燃比学習値ＫＴＩＭの更新記憶の実行を許可する空燃比の反転周期ＦＰＶＯ２の許可範囲を、図１２に示すように内燃機関への吸入空気量相当量ＮＴＩに応じて決定しており、空燃比学習値ＫＴＩＭの更新記憶の実行に当たって、空燃比の反転周期ＦＰＶＯ２を算出すると、上記許可範囲外に空燃比の反転周期ＦＰＶＯ２があるときにステップＳＣ１９の判断がＮＯとなって、ステップＳＣ２２〜ＳＣ２４の空燃比学習値ＫＴＩＭの更新記憶の実行を禁止する。
【００７９】
よって、エンジン負荷である吸入空気量が異なった状態にあっても、空燃比学習値ＫＴＩＭの更新記憶の実行を許可する空燃比の反転周期ＦＰＶＯ２の許可範囲を、この吸入空気量に相関のある吸入空気量相関値ＮＴＩに応じて決定しているため、決定した空燃比の反転周期ＦＰＶＯ２の許可範囲は正確に対応するものとなる。
【００８０】
したがって、誤学習を防止した上で許可範囲を広く設定できるため、空燃比の学習を正確かつ効果的に行うことができる。その結果、排気ガス特性を良好に維持することができ、誤学習により生じるドライバビリティ悪化も防止することができる。
【００８１】
なお、以上の実施の形態においては、基本燃料噴射量ＴＩＭとエンジン回転数Ｎｅとから求められる吸入空気量相関値ＮＴＩを用いる場合を例にとり説明したが、この吸入空気量相関値ＮＴＩに代えて他の吸入空気量相関値を用いたり、内燃機関の吸入空気量を直接検出するセンサを設け、このセンサで検出した吸入空気量を上記吸入空気量相関値ＮＴＩに代えて用いたりすることも勿論可能である。
【００８２】
また、以上の実施の形態においては、上流Ｏ２センサ１７で空燃比を検出する場合を例にとり説明したが、これに代えてリニアＡ／Ｆセンサで空燃比を検出することも可能である。
【００８３】
【発明の効果】
以上詳述したように、本発明によれば、範囲決定手段は、学習値更新手段による空燃比学習値の更新記憶の実行を許可する空燃比の反転周期の許可範囲を内燃機関への吸入空気量に応じて決定しており、上記学習値更新手段による空燃比学習値の更新記憶の実行に当たって、空燃比検出手段が空燃比を検出し、反転周期算出手段が、空燃比検出手段で検出した空燃比の反転周期を算出すると、更新禁止手段が、範囲決定手段で決定された前記許可範囲外に空燃比の反転周期があるときに学習値更新手段による空燃比学習値の更新記憶の実行を禁止する。
【００８４】
よって、エンジン負荷である吸入空気量が異なった状態にあっても、範囲決定手段が、学習値更新手段による空燃比学習値の更新記憶の実行を許可する空燃比の反転周期の許可範囲を、この吸入空気量に応じて決定しているため、決定された空燃比の反転周期の許可範囲は正確に対応するものとなる。
【００８５】
したがって、誤学習を防止した上で許可範囲を広く設定でき、空燃比の学習を正確かつ効果的に行うことができる。その結果、排気ガス特性を良好に維持することができ、誤学習により生じるドライバビリティ悪化も防止することができる。
【図面の簡単な説明】
【図１】  本発明の一の実施の形態を示す全体構成図である。
【図２】  本発明の一の実施の形態の制御系を示すブロック図である。
【図３】  本発明の一の実施の形態の燃料噴射制御の制御内容を示すフローチャートである。
【図４】  本発明の一の実施の形態の空燃比学習値マップを模式的に示す図である。
【図５】  本発明の一の実施の形態の空燃比学習値の補間計算を説明するための図である。
【図６】  本発明の一の実施の形態の空燃比学習値の補正に用いられる大気圧補正テーブルを模式的に示す図である。
【図７】  本発明の一の実施の形態の空燃比フィードバック係数の算出処理の制御内容を示すフローチャートである。
【図８】  本発明の一の実施の形態のＯ２センサの出力（ａ）およびフラグＦ＿ＰＶＲＥＦの状態（ｂ）を示すタイミングチャートである。
【図９】  本発明の一の実施の形態の空燃比フィードバック係数ＫＯ２の値（ａ）およびフラグＦ＿ＰＶＲＥＦの状態（ｂ）を示すタイミングチャートである。
【図１０】  本発明の一の実施の形態の空燃比学習値の算出処理の制御内容の一部を示すフローチャートである。
【図１１】  本発明の一の実施の形態の空燃比学習値の算出処理の制御内容の残りの一部を示すフローチャートである。
【図１２】  本発明の一の実施の形態の空燃比学習値の算出処理で用いられる学習値の更新記憶の実行許可を判断するしきい値テーブルである。
【符号の説明】
１０  吸気管内絶対圧センサ（運転状態検出手段）
１４  回転情報センサ（運転状態検出手段）
１７  上流Ｏ２センサ（空燃比検出手段）
５１  空燃比Ｆ／Ｂ係数演算部（空燃比補正係数算出手段）
５２  Ｏ２センサ反転周期演算部（反転周期算出手段）
５３  空燃比学習値格納部（平均値算出手段，学習値更新手段）
５５  燃料噴射量演算部（設定手段）
５８  空燃比学習実行判定部（範囲決定手段，更新禁止手段）
【図１】
0003923241.tif 000002
【図２】
0003923241.tif 000003
【図３】
0003923241.tif 000004
【図４】
0003923241.tif 000005
【図５】
0003923241.tif 000006
【図６】
0003923241.tif 000007
【図７】
0003923241.tif 000008
【図８】
0003923241.tif 000009
【図９】
0003923241.tif 000010
【図１０】
0003923241.tif 000011
【図１１】
0003923241.tif 000012
【図１２】
0003923241.tif 000013