(57)【要約】【課題】内燃機関がフィードバック制御を実行できない運転領域にある場合であっても、燃料噴射量をアルコール濃度に応じた最適な値に補正し、よって燃料補正の制御精度を向上させるようにした内燃機関の制御装置を提供する。【解決手段】内燃機関（エンジン）の運転領域を複数個の領域に区分すると共に、その１つの領域を基準領域として設定し（Ｓ１４）、内燃機関の運転が基準領域にあるときに算出されたフィードバック補正係数と基準領域以外の領域にあるときに算出されたフィードバック補正係数との比率を算出して機差補正係数として記憶しておく一方（Ｓ１６）、フィードバック補正係数に基づいてアルコール濃度補正係数を算出すると共に、機差補正係数で修正して記憶しておき（Ｓ１６，Ｓ１８）、内燃機関がフィードバック制御を実行できない運転領域にあるとき、燃料噴射量Ｔｏｕｔを修正されたアルコール濃度補正係数で補正する。【選択図】図３
2010265768.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の排気中の空燃比を検出し、前記検出された空燃比に基づいて燃料噴射量のフィードバック補正係数を算出し、前記算出されたフィードバック補正係数で前記燃料噴射量を補正するフィードバック制御を実行するフィードバック制御手段を備えた内燃機関の制御装置において、前記内燃機関の運転領域を機関回転数と負荷で複数個の領域に区分すると共に、その１つの領域を基準領域として設定する領域設定手段と、前記内燃機関の運転が前記基準領域にあるときに算出された前記フィードバック補正係数と前記基準領域以外の領域にあるときに算出された前記フィードバック補正係数との比率を算出して前記内燃機関の個体差を補正するための機差補正係数として記憶しておく機差補正係数記憶手段と、前記算出されたフィードバック補正係数に基づいて燃料に含まれるアルコール濃度に応じたアルコール濃度補正係数を算出すると共に、前記記憶される機差補正係数で修正して記憶しておくアルコール濃度補正係数記憶手段とを備えると共に、前記内燃機関が前記フィードバック制御を実行できない運転領域にあるとき、前記燃料噴射量を前記修正されたアルコール濃度補正係数で補正することを特徴とする内燃機関の制御装置。
【請求項２】
前記領域設定手段は前記基準領域以外の領域を複数個設定すると共に、前記機差補正係数記憶手段は、前記内燃機関の運転が前記基準領域にあるときの前記フィードバック補正係数が算出されないとき、前記内燃機関の運転が前記複数個の基準領域以外の領域のいずれかにあるときに算出された前記アルコール濃度補正係数を前記基準領域にあるときに算出された前記フィードバック補正係数と置換することを特徴とする請求項１記載の内燃機関の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は内燃機関の制御装置に関し、より詳しくはガソリン燃料でも、ガソリンにメタノールやエタノールなどのアルコールを混合したアルコール混合燃料でも運転可能な内燃機関の制御装置に関する。
【背景技術】
【０００２】
従来より、ガソリン燃料またはアルコール混合燃料で運転可能な内燃機関の制御装置においては、排ガスを排気管に設けられた触媒装置で効率良く浄化するため、酸素濃度センサを排気管に設置し、その出力に基づいて内燃機関の空燃比が理論空燃比に収束（一致）するように燃料噴射量を補正する、いわゆるフィードバック制御が行われている（例えば特許文献１参照）。
【０００３】
特許文献１記載の技術にあっては、酸素濃度センサの出力に基づいてフィードバック補正係数を算出し、算出されたフィードバック補正係数で燃料噴射量を補正するようにしている。尚、フィードバック補正係数は燃料に含まれるアルコール濃度によって変化する、具体的には、アルコール濃度が増加すると理論空燃比はリッチ側へ変化することから、フィードバック補正係数も燃料噴射量を増量させる方向に変化する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開昭６３−５１３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、内燃機関がフィードバック制御を実行できない運転領域（例えば機関低温時、始動時、加速・減速といった過渡運転時、および高負荷運転時など）にある場合であっても、燃料噴射量をアルコール濃度に応じて補正する必要がある。そこで、フィードバック補正係数が上記した如くアルコール濃度によって変化することから、フィードバック補正係数をアルコール濃度に応じたアルコール濃度補正係数として適用し、燃料噴射量を補正することが考えられる。
【０００６】
しかしながら、フィードバック補正係数は、アルコール濃度以外にも内燃機関の機差（個体差。具体的には量産バラツキや経年劣化など）による影響によっても変化する値、即ち、機差を内包した値であるため、フィードバック補正係数をそのままアルコール濃度補正係数として適用すると、燃料噴射量をアルコール濃度に応じた最適な値に補正することができず、燃料補正の制御精度が低下するという不具合が生じていた。
【０００７】
従って、この発明の目的は上記した課題を解決し、内燃機関がフィードバック制御を実行できない運転領域にある場合であっても、燃料噴射量をアルコール濃度に応じた最適な値に補正し、よって燃料補正の制御精度を向上させるようにした内燃機関の制御装置を提供することにある。
【課題を解決するための手段】
【０００８】
上記の目的を達成するために、請求項１にあっては、内燃機関の排気中の空燃比を検出し、前記検出された空燃比に基づいて燃料噴射量のフィードバック補正係数を算出し、前記算出されたフィードバック補正係数で前記燃料噴射量を補正するフィードバック制御を実行するフィードバック制御手段を備えた内燃機関の制御装置において、前記内燃機関の運転領域を機関回転数と負荷で複数個の領域に区分すると共に、その１つの領域を基準領域として設定する領域設定手段と、前記内燃機関の運転が前記基準領域にあるときに算出された前記フィードバック補正係数と前記基準領域以外の領域にあるときに算出された前記フィードバック補正係数との比率を算出して前記内燃機関の個体差を補正するための機差補正係数として記憶しておく機差補正係数記憶手段と、前記算出されたフィードバック補正係数に基づいて燃料に含まれるアルコール濃度に応じたアルコール濃度補正係数を算出すると共に、前記記憶される機差補正係数で修正して記憶しておくアルコール濃度補正係数記憶手段とを備えると共に、前記内燃機関が前記フィードバック制御を実行できない運転領域にあるとき、前記燃料噴射量を前記修正されたアルコール濃度補正係数で補正するように構成した。
【０００９】
請求項２に係る内燃機関の制御装置にあっては、前記領域設定手段は前記基準領域以外の領域を複数個設定すると共に、前記機差補正係数記憶手段は、前記内燃機関の運転が前記基準領域にあるときの前記フィードバック補正係数が算出されないとき、前記内燃機関の運転が前記複数個の基準領域以外の領域のいずれかにあるときに算出された前記アルコール濃度補正係数を前記基準領域にあるときに算出された前記フィードバック補正係数と置換するように構成した。
【発明の効果】
【００１０】
請求項１に係る内燃機関の制御装置にあっては、内燃機関の運転領域を複数個の領域に区分すると共に、その１つの領域を基準領域として設定し、内燃機関の運転が基準領域にあるときに算出されたフィードバック補正係数と基準領域以外の領域にあるときに算出されたフィードバック補正係数との比率を算出して機差補正係数として記憶しておく一方、フィードバック補正係数に基づいてアルコール濃度補正係数を算出し、それを機差補正係数で修正して記憶しておくと共に、内燃機関がフィードバック制御を実行できない運転領域にあるとき、燃料噴射量を修正されたアルコール濃度補正係数で補正するように構成したので、内燃機関がフィードバック制御を実行できない運転領域にある場合であっても、燃料噴射量を機差を内包しないように修正されたアルコール濃度補正係数で補正できる、即ち、燃料噴射量をアルコール濃度に応じた最適な値に補正でき、よって燃料補正の制御精度を向上させることができる。
【００１１】
また、燃料に含まれるアルコール濃度を検出するセンサなどを新たに設置することなく、燃料噴射量をアルコール濃度に応じて補正するように構成したので、コストアップや装置が複雑化するのを防止することができる。
【００１２】
請求項２に係る内燃機関の制御装置にあっては、基準領域以外の領域を複数個設定すると共に、機差補正係数記憶手段は、内燃機関の運転が基準領域にあるときのフィードバック補正係数が算出されないとき、内燃機関の運転が複数個の基準領域以外の領域のいずれかにあるときに算出されたアルコール濃度補正係数を基準領域にあるときに算出されたフィードバック補正係数と置換するように構成、即ち、内燃機関の運転が基準領域になく、そのときのフィードバック補正係数が算出されない場合であっても、基準領域以外の領域にあるときに算出されたアルコール濃度補正係数を基準領域にあるときに算出されたフィードバック補正係数と置換することで前記比率を算出し、それを機差補正係数として記憶しておくように構成したので、上記した効果に加え、その記憶された機差補正係数でアルコール濃度補正係数を修正し、燃料噴射量を修正されたアルコール濃度補正係数で補正でき、よって燃料噴射量をアルコール濃度に応じた最適な値に確実に補正することができる。
【図面の簡単な説明】
【００１３】
【図１】この発明の実施例に係る内燃機関の制御装置を全体的に示す概略図である。
【図２】図１に示すＥＣＵの構成を全体的に示すブロック図である。
【図３】図１に示す内燃機関の制御装置の動作を示すフロー・チャートである。
【図４】図３の初期値セット処理のサブ・ルーチン・フロー・チャートである。
【図５】図３のフィードバック補正係数算出処理のサブ・ルーチン・フロー・チャートである。
【図６】図３の運転領域判断処理のサブ・ルーチン・フロー・チャートである。
【図７】図６フロー・チャートで使用される運転領域設定を示す説明グラフである。
【図８】図３の機差補正係数算出処理のサブ・ルーチン・フロー・チャートである。
【図９】図３のアルコール濃度補正係数算出処理のサブ・ルーチン・フロー・チャートである。
【図１０】図３フロー・チャートと平行して実行される内燃機関の制御装置の動作を示すフロー・チャートである。
【発明を実施するための形態】
【００１４】
以下、添付図面に即してこの発明に係る内燃機関の制御装置を実施するための形態について説明する。
【実施例】
【００１５】
図１はこの発明の実施例に係る内燃機関の制御装置を全体的に示す概略図である。
【００１６】
図１において符号１０は、図示しない車両（例えば自動二輪車）に搭載された内燃機関（以下「エンジン」という）を示す。エンジン１０は４サイクル単気筒の水冷式で、排気量２５０ｃｃ程度のエンジンからなる。尚、符号１０ａはエンジン１０のクランクケースを示す。
【００１７】
エンジン１０の吸気管１２にはスロットルバルブ１４が配置される。スロットルバルブ１４は、車両のハンドルバーに運転者の手動操作自在に設けられたアクセラレータ（スロットルグリップ）にスロットルワイヤ（共に図示せず）を介して機械的に接続され、アクセラレータの操作量に応じて開閉され、エアクリーナ１６から吸気管１２を通ってエンジン１０に吸入される空気の量を調整する。
【００１８】
吸気管１２においてスロットルバルブ１４の下流側の吸気ポート付近には、インジェクタ２０が配置される。インジェクタ２０には、燃料タンク２２に貯留される燃料が、燃料タンク２２の内部に配置された燃料ポンプ２４によって燃料供給管２６を介して圧送される。
【００１９】
燃料タンク２２に貯留される燃料としては、ガソリン、またはガソリンとアルコール（例えばメタノール（メチルアルコール）やエタノール（エチルアルコール）など）の混合燃料、具体的にはガソリン１００％（即ち、アルコール０％）の燃料からガソリン７０％とアルコール３０％のアルコール混合燃料（Ｅ３０）までの間の燃料が予定される。尚、アルコール混合燃料はガソリンに比して理論空燃比がリッチ側にずれると共に、そのずれはアルコール濃度の増加につれて拡大する。
【００２０】
インジェクタ２０は、電子制御ユニット（Electronic Control Unit。以下「ＥＣＵ」という）３０の駆動回路（図１で図示せず）に電気的に接続され、ＥＣＵ３０から開弁時間を示すインジェクタ駆動信号が駆動回路を通じて供給されると開弁し、開弁時間に応じた燃料を吸気ポートに噴射する。噴射された燃料は吸入空気と混合して混合気を形成し、吸気バルブ３２が開弁されるとき、燃焼室３４に流入する。
【００２１】
燃焼室３４に流入した混合気は、点火コイル３６から供給された高電圧で点火プラグ４０が火花放電されるときに点火されて燃焼し、ピストン４２を図１において下方に駆動してクランク軸４４を回転させる。燃焼によって生じた排気（排ガス）は、排気バルブ４６が開弁されるとき、排気管５０を流れる。排気管５０には三元触媒を有する触媒装置５２が配置され、排ガス中のＨＣ，ＣＯ，ＮＯｘなどの有害成分を除去する。触媒装置５２で浄化された排ガスはさらに下流に流れ、エンジン１０の外部に排出される。
【００２２】
スロットルバルブ１４の付近にはポテンショメータからなるスロットル開度センサ５４が設けられ、スロットルバルブ１４の開度ＴＨ（エンジン負荷）を示す出力を生じる。吸気管１２のスロットルバルブ１４の上流側には吸気温センサ５６が設けられて吸入空気の温度（吸気温）ＴＡを示す出力を生じると共に、下流側には絶対圧センサ５８が設けられ、吸気管内絶対圧ＰＢＡを示す出力を生じる。
【００２３】
排気管５０に設けられた触媒装置５２の上流側には、Ｏ２センサ（酸素濃度センサ）６０が配置される。Ｏ２センサ６０は、理論空燃比近傍で特性が変化する出力を生じる。具体的には、Ｏ２センサ６０は、理論空燃比近傍で出力電圧が急変する。従って、Ｏ２センサ６０の出力電圧を理論空燃比を表す基準電圧と比較することにより、空燃比が理論空燃比に対してリーンかリッチのいずれであるか判定することができる。
【００２４】
エンジン１０のシリンダブロックの冷却水通路１０ｂには水温センサ６２が取り付けられ、エンジン１０の温度（エンジン冷却水温）ＴＷに応じた出力を生じる。エンジン１０のクランク軸４４の付近にはクランク角センサ６４が取り付けられて所定クランク角度位置で（具体的には２０°ごとに）クランク角度信号を出力する。
【００２５】
上記したスロットル開度センサ５４やＯ２センサ６０、クランク角センサ６４などの各センサの出力はＥＣＵ３０に入力される。
【００２６】
図２はＥＣＵ３０の構成を全体的に示すブロック図である。
【００２７】
ＥＣＵ３０はマイクロコンピュータからなり、図２に示すように、波形整形回路３０ａと、回転数カウンタ３０ｂと、Ａ／Ｄ変換回路３０ｃと、ＣＰＵ３０ｄと、点火回路３０ｅと、２個の駆動回路３０ｆ，３０ｇと、ＲＯＭ３０ｈと、ＥＥＰＲＯＭ（不揮発性メモリ）３０ｉと、ＲＡＭ３０ｊおよびタイマ３０ｋを備える。
【００２８】
波形整形回路３０ａは、クランク角センサ６４の出力（信号波形）をパルス信号に波形整形し、回転数カウンタ３０ｂに出力する。回転数カウンタ３０ｂは入力されたパルス信号をカウントしてエンジン回転数（機関回転数）ＮＥを検出（算出）し、エンジン回転数ＮＥを示す信号をＣＰＵ３０ｄへ出力する。Ａ／Ｄ変換回路３０ｃは、スロットル開度センサ５４やＯ２センサ６０などの各センサの出力が入力され、アナログ信号値をデジタル信号値に変換してＣＰＵ３０ｄに出力する。
【００２９】
ＣＰＵ３０ｄは、変換されたデジタル信号などに基づき、ＲＯＭ３０ｈに格納されているプログラムに従って演算を実行し、クランク角度が点火出力タイミングのときに点火コイル３６の点火制御信号を点火回路３０ｅに出力する（即ち、点火時期制御を行う）。また、ＣＰＵ３０ｄは、各信号などに基づき、同様にＲＯＭ３０ｈに格納されているプログラムに従って演算を実行し、燃料噴射タイミングのときにインジェクタ駆動信号を駆動回路３０ｆに送る（燃料噴射制御を行う）と共に、各信号などに基づいて燃料ポンプ２４を駆動させる燃料ポンプ駆動信号を駆動回路３０ｇに出力する。
【００３０】
ここで、燃料噴射制御について説明すると、ＣＰＵ３０ｄでは、検出された運転状態に応じてエンジン１０に供給すべき燃料噴射量Ｔｏｕｔ（より詳しくはインジェクタ２０の開弁時間）を算出し、算出された燃料噴射量Ｔｏｕｔに応じてインジェクタ駆動信号を出力する。
【００３１】
燃料噴射量Ｔｏｕｔは、エンジン１０がフィードバック制御を実行できる運転領域（後述するフィードバック制御領域）にあるか否かで算出する計算式が相違し、具体的にはフィードバック制御を実行できる運転領域にあるときは下記の式（１）に従って、フィードバック制御を実行できない運転領域（例えば機関低温時、始動時、加速・減速といった過渡運転時、および高負荷運転時など）にあるときは式（２）に従って算出される。
燃料噴射量Ｔｏｕｔ＝基本燃料噴射量Ｔｉ×フィードバック補正係数ＭＨＧ
×環境補正項                              ・・・式（１）
燃料噴射量Ｔｏｕｔ＝基本燃料噴射量Ｔｉ×アルコール濃度補正係数ＭＥＴ
×環境補正項                              ・・・式（２）
【００３２】
式（１）および（２）で基本燃料噴射量Ｔｉは、予め設定されたマップをエンジン回転数ＮＥと吸気管内絶対圧ＰＢＡで検索することによって求められる。また、式（１）のフィードバック補正係数ＭＨＧは、後述する如くＯ２センサ６０の出力に基づいて算出される。具体的には、Ｏ２センサ６０の出力電圧ＶＨＧと理論空燃比を表す基準電圧ＶＨＧＲＥＦを比較して現在の空燃比がリーンかリッチのいずれであるか判定し、リッチの場合はフィードバック補正係数ＭＨＧを段階的に減少させる一方、リーンの場合は段階的に増加させる。
【００３３】
このように、エンジン１０の空燃比が理論空燃比に収束するように燃料噴射量Ｔｏｕｔをフィードバック制御（ＰＩ制御）する。尚、式（１）（２）の環境補正項は、吸気温ＴＡやエンジン冷却水温ＴＷなどに基づいて算出される。また、式（２）のアルコール濃度補正係数ＭＥＴは、後に詳説する如く、フィードバック制御の実行中にフィードバック補正係数ＭＨＧなどに基づいて算出される。
【００３４】
図２の説明を続けると、点火回路３０ｅは、ＣＰＵ３０ｄからの点火制御信号に応じ、点火コイル３６を通電して点火を行う。駆動回路３０ｆは、ＣＰＵ３０ｄからのインジェクタ駆動信号に応じ、インジェクタ２０を駆動して燃料を噴射させる。駆動回路３０ｇは、ＣＰＵ３０ｄから燃料ポンプ駆動信号に応じ、燃料ポンプ２４を駆動させる。
【００３５】
ＥＥＰＲＯＭ３０ｉは算出されたアルコール濃度補正係数ＭＥＴなどを記憶すると共に、ＲＡＭ３０ｊは例えば点火時期制御および燃料噴射制御において算出された点火時期や燃料噴射量などのデータが書き込まれる。また、タイマ３０ｋは、図示しないプログラムにおいて行われる時間計測の処理に利用される。
【００３６】
図３はこの実施例に係る内燃機関の制御装置の動作を示すフロー・チャートである。図示のプログラムは、ＥＣＵ３０によって所定の周期（例えば２０ｍｓｅｃ）ごとに実行される。
【００３７】
以下説明すると、先ずＳ１０において、フィードバック補正係数ＭＨＧやアルコール濃度補正係数ＭＥＴの算出に用いられる各種の学習値、フラグなどに初期値をセットする処理を行う。
【００３８】
図４はその初期値セット処理を示すサブ・ルーチン・フロー・チャートである。先ずＳ１００において、今回のプログラムループがＥＣＵ３０の起動後最初（初回）のプログラムループか否か判断する。Ｓ１００で肯定されるときはＳ１０２に進み、各学習値やフラグなどの初期値セットを行う。
【００３９】
具体的には、後述する機差学習値（基準領域）ＭＲＥＦＨＧＳＴＤを１．０倍にセットすると共に、機差学習値（第１領域）ＭＲＥＦＨＧ１、機差学習値（第２領域）ＭＲＥＦＨＧ２およびアルコール濃度補正係数ＭＥＴの値にＥＥＰＲＯＭ３０ｉに記憶された記憶値をそれぞれセットする。
【００４０】
また、基準領域履歴フラグＦ_ＭＲＥＦＨＧＳＴＤ、第１領域履歴フラグＦ_ＭＲＥＦＨＧ１、第２領域履歴フラグＦ_ＭＲＥＦＨＧ２およびＯ２センサ電圧判定フラグＦ_ＶＨＧＲＥＦのビットを全て０にリセットする。さらに、フィードバック補正係数平均値（基準領域）ＭＲＥＦＨＧＳＴＤＢにアルコール濃度補正係数ＭＥＴをセットすると共に、フィードバック補正係数平均値（第１領域）ＭＲＥＦＨＧ１Ｂに補正係数ＭＥＴと学習値（第１領域）ＭＲＥＦＨＧ１を乗算した値を、フィードバック補正係数平均値（第２領域）ＭＲＥＦＨＧ２Ｂに補正係数ＭＥＴと学習値（第２領域）ＭＲＥＦＨＧ２を乗算した値をセットする。尚、Ｓ１００で否定されるときはＳ１０２の処理をスキップする。
【００４１】
図３の説明に戻ると、次いでＳ１２に進み、フィードバック補正係数ＭＨＧを算出する処理を実行する。
【００４２】
図５はそのフィードバック補正係数算出処理のサブ・ルーチン・フロー・チャートである。図５に示すように、先ずＳ２００において、前回Ｏ２センサ電圧判定フラグＦ_ＶＨＧＲＥＦ１に前回のプログラム実行時に設定されたＯ２センサ電圧判定フラグＦ_ＶＨＧＲＥＦ（後述）をセットして更新する。
【００４３】
次いでＳ２０２に進んでＯ２センサ６０の出力電圧ＶＨＧを読み込み、Ｓ２０４に進み、Ｏ２センサ６０の出力電圧ＶＨＧを理論空燃比を表す基準電圧ＶＨＧＲＥＦ（例えば０．４５Ｖ）と比較し、現在の空燃比が理論空燃比に対してリーンとリッチのいずれであるか判定する。具体的には、出力電圧ＶＨＧが基準電圧ＶＨＧＲＥＦ以上のときにリッチ、基準電圧ＶＨＧＲＥＦ未満のときにリーンと判定する。
【００４４】
このようにＳ２０２，Ｓ２０４では、Ｏ２センサ６０の出力電圧ＶＨＧに基づいてエンジン１０の排気中の空燃比を検出し、検出された空燃比が理論空燃比に対してリーンとリッチのいずれであるか判定する。
【００４５】
Ｓ２０４で肯定されるときはＳ２０６に進み、Ｏ２センサ電圧判定フラグＦ_ＶＨＧＲＥＦのビットを１にセットする。即ち、フラグＦ_ＶＨＧＲＥＦは現在の空燃比が理論空燃比に対してリッチ側であると判定されるとき１にセットされる一方、後述する如くリーン側であると判定されるとき０にリセットされる。
【００４６】
次いでＳ２０８に進み、フィードバック補正係数ＭＨＧを、前回のプログラム実行時に算出されたフィードバック補正係数ＭＨＧ（前回値）から積分加減算定数Δを減算することによって算出し、今回値としてセット（更新）する。これにより、エンジン１０がフィードバック制御を実行できる運転領域にあるときは前述した式（１）に従って燃料噴射量Ｔｏｕｔは減量させられ、よって空燃比がリーン方向へ変化して理論空燃比に収束する。
【００４７】
次いでＳ２１０に進み、前回Ｏ２センサ電圧判定フラグＦ_ＶＨＧＲＥＦ１のビットが０か否か判断、換言すれば、前回のプログラムループにおいてリーンと判定されたか否か判断する。Ｓ２１０で否定されるとき、即ち、前回と今回のプログラムループにおいて共にリッチと判定されるときはＳ２１２に進み、リッチ／リーン反転フラグＦ_ＶＨＧＴＧＬのビットを０にリセットする一方、肯定されるときはＳ２１４に進み、フラグＦ_ＶＨＧＴＧＬのビットを１にセットする。
【００４８】
他方、Ｓ２０４で否定されるときはＳ２１６に進み、Ｏ２センサ電圧判定フラグＦ_ＶＨＧＲＥＦのビットを０にリセットする。次いでＳ２１８に進み、フィードバック補正係数ＭＨＧの前回値に積分加減算定数Δを加算して得た値をフィードバック補正係数ＭＨＧの今回値としてセット（更新）する。これにより、燃料噴射量Ｔｏｕｔは増量させられ、よって空燃比がリッチ方向へ変化して理論空燃比に収束する。
【００４９】
次いでＳ２２０に進み、前回Ｏ２センサ電圧判定フラグＦ_ＶＨＧＲＥＦ１のビットが１か否か判断、別言すれば、前回のプログラムループにおいてリッチと判定されたか否か判断する。Ｓ２２０で否定されるとき、即ち、前回と今回のプログラムループにおいて共にリーンと判定されるときはＳ２２２に進み、リッチ／リーン反転フラグＦ_ＶＨＧＴＧＬのビットを０にリセットする一方、肯定されるときは前述したＳ２１４に進み、フラグＦ_ＶＨＧＴＧＬのビットを１にセットする。以上から分かるように、フラグＦ_ＶＨＧＴＧＬのビットが１にセットされることは空燃比がリッチからリーンに、あるいはリーンからリッチに反転したことを意味し、０にリセットされることはその反転がなかったことを意味する。
【００５０】
図３フロー・チャートにおいては次いでＳ１４に進み、エンジン１０が現在どの運転領域にあるか判断する。
【００５１】
図６は、Ｓ１４の運転領域判断処理のサブ・ルーチン・フロー・チャートである。図６に示すように、Ｓ３００においてクランク角センサ６４の出力に基づいてエンジン回転数ＮＥを検出（算出）し、Ｓ３０２に進んでスロットル開度センサ５４の出力に基づいてスロットル開度ＴＨを検出（算出）する。
【００５２】
次いでＳ３０４に進み、検出されたエンジン回転数ＮＥとスロットル開度ＴＨ（負荷）に基づき、エンジン１０の運転領域を判断する。この処理は、具体的にはエンジン回転数ＮＥとスロットル開度ＴＨとから予め設定された運転領域図を参照することで、運転領域を判断する。
【００５３】
図７はその運転領域図を示す説明グラフである。図７について説明すると、エンジン１０の運転領域は、フィードバック制御が実行される領域（図において破線で囲まれた領域。以下「フィードバック制御領域」という）と、フィードバック制御が実行されない領域（図において破線で囲まれた領域以外の領域）とに区分される。尚、図から分かるように、フィードバック制御が実行されない領域は、エンジン回転数ＮＥやスロットル開度ＴＨが極めて大きい領域（例えば高負荷運転時など）、あるいは極めて小さい領域（例えばエンジン始動時など）とされる。
【００５４】
前記したフィードバック制御領域はさらに、エンジン回転数ＮＥとスロットル開度ＴＨで複数個（３個）の領域に区分される、具体的には高回転領域Ａ、中回転領域Ｂおよび低回転領域Ｃに区分される。詳しくは、高回転領域Ａは、図においてドットで示す如く、エンジン回転数ＮＥが比較的高回転であってスロットル開度ＴＨも比較的大きい領域、またはエンジン回転数ＮＥが低回転であってもスロットル開度ＴＨがやや大きい領域に設定される。
【００５５】
中回転領域Ｂは、エンジン回転数ＮＥが高回転領域Ａのそれに比して低い中回転であると共に、スロットル開度ＴＨも高回転領域Ａのそれに比して小さい領域（図において斜線で示す）とされる。また、低回転領域Ｃは、エンジン回転数ＮＥが中回転領域Ｂのそれに比して低い低回転であってスロットル開度ＴＨも中回転領域Ｂのそれに比して小さい領域（図において縦線で示す）に設定される。
【００５６】
従って、図６のＳ３０４では、エンジン回転数ＮＥとスロットル開度ＴＨに基づいて図７説明グラフを参照し、エンジン１０が上記した運転領域（フィードバック制御領域（高回転領域Ａ、中回転領域Ｂ、低回転領域Ｃ）とフィードバック制御領域以外の領域）の内のどの領域にあるか判断する。
【００５７】
次いでＳ３０６に進み、基準領域ナンバー設定値ＭＲＥＦＳＴＤＺが３か否か判断する。この設定値ＭＲＥＦＳＴＤＺは、後に詳説するが、車両の種類（車種）ごとに１，２，３のいずれかの値が予め設定される。
【００５８】
Ｓ３０６で肯定されるときはＳ３０８に進み、前記した３個の領域（高回転領域Ａ、中回転領域Ｂ、低回転領域Ｃ）の内の１つの領域を、機差補正係数ＭＲＥＦＨＧ（後述）を算出する際に基準となるべき基準領域として設定する。具体的には、高回転領域Ａを基準領域に設定する。さらに、基準領域（ここでは高回転領域Ａ）以外の領域である低回転領域Ｃを第１領域に、中回転領域Ｂを第２領域に設定する。
【００５９】
一方、Ｓ３０６で否定されるときはＳ３１０に進み、設定値ＭＲＥＦＳＴＤＺが２か否か判断する。Ｓ３１０で肯定されるときはＳ３１２に進み、中回転領域Ｂを基準領域に設定すると共に、基準領域（ここでは中回転領域Ｂ）以外の領域である低回転領域Ｃを第１領域に、高回転領域Ａを第２領域に設定する。
【００６０】
また、Ｓ３１０で否定されるとき、即ち、設定値ＭＲＥＦＳＴＤＺが１のときはＳ３１４に進み、低回転領域Ｃを基準領域に設定すると共に、基準領域（ここでは低回転領域Ｃ）以外の領域である中回転領域Ｂを第１領域に、高回転領域Ａを第２領域に設定する。
【００６１】
これらＳ３０６からＳ３１４までの処理について詳説すると、上記した基準領域は、機差補正係数ＭＲＥＦＨＧを算出するときの基準となるため、エンジン１０の機差（個体差。具体的には量産バラツキや経年劣化など）が表れ難い運転領域が設定されるのが望ましい。しかしながら、この機差が表れ難い運転領域は車種によって相違する。
【００６２】
そこで、この実施例にあっては、機差が表れ難い運転領域を車種ごとに予め実験により求め、求められた運転領域が高回転領域Ａである場合は設定値ＭＲＥＦＳＴＤＺを３に、中回転領域Ｂである場合は設定値ＭＲＥＦＳＴＤＺを２に、低回転領域Ｃである場合は設定値ＭＲＥＦＳＴＤＺを１に設定しておく。このように構成することで、Ｓ３０６〜Ｓ３１４において、機差が表れ難い運転領域を基準領域として車種に応じて適切に設定することができると共に、機差が表れ易い運転領域を第１、第２領域に設定できる。
【００６３】
図３の説明に戻ると、次いでＳ１６に進み、機差補正係数ＭＲＥＦＨＧを算出する処理を実行する。
【００６４】
図８はその機差補正係数算出処理を示すサブ・ルーチン・フロー・チャートである。同図を参照して説明すると、先ずＳ４００において、リッチ／リーン反転フラグＦ_ＶＨＧＴＧＬのビットが１か否か判断、即ち、エンジン１０の空燃比がリッチからリーンに、あるいはリーンからリッチに反転したか否か判断する。Ｓ４００で否定されるときは以降の処理をスキップする一方、肯定されるときはＳ４０２に進み、前述したＳ３０４で判断されたエンジン１０の運転領域が、Ｓ３０８，Ｓ３１２，Ｓ３１４の内のいずれかの処理で設定された基準領域であるか否か判断する。
【００６５】
Ｓ４０２で肯定されるときはＳ４０４に進み、基準領域履歴フラグＦ_ＭＲＥＦＨＧＳＴＤのビットを１にセットする。従って、フラグＦ_ＭＲＥＦＨＧＳＴＤのビットが１にセットされることは、エンジン１０の運転が基準領域にあり、後述するステップでフィードバック補正係数平均値（基準領域）ＭＲＥＦＨＧＳＴＤＢが算出された履歴があることを、０にリセットされることはその履歴がないことを意味する。
【００６６】
次いでＳ４０６に進み、そのフィードバック補正係数平均値（基準領域）ＭＲＥＦＨＧＳＴＤＢを算出してセットする。具体的には、フィードバック補正係数ＭＨＧにフィルタリング係数ＣＨＧＲＥＦ（例えば０．０１倍）を乗算した値と、機差学習値（基準領域）ＭＲＥＦＨＧＳＴＤに１からフィルタリング係数ＣＨＧＲＥＦを減算した値を乗算した値とを加算することによって得た値を平均値（基準領域）ＭＲＥＦＨＧＳＴＤＢとしてセットする。
【００６７】
次いでＳ４０８に進み、Ｓ４０６で算出された平均値（基準領域）ＭＲＥＦＨＧＳＴＤＢを暫定アルコール濃度補正係数ＭＥＴａとしてセットする。このように、フィードバック補正係数ＭＨＧに基づいて燃料に含まれるアルコール濃度に応じた暫定アルコール濃度補正係数ＭＥＴａを算出する、正確には、フィードバック補正係数ＭＨＧをフィルタリング（平均化）処理することによって、エンジン１０の空燃比をアルコール濃度に応じて変化する理論空燃比に収束させ得る平均値（基準領域）ＭＲＥＦＨＧＳＴＤＢを算出すると共に、それを暫定アルコール濃度補正係数ＭＥＴａとする。
【００６８】
次いでＳ４１０に進み、機差補正係数ＭＲＥＦＨＧに１．０倍（即ち、機差補正がないことを意味する）をセットしてプログラムを終了する。
【００６９】
他方、Ｓ４０２で否定されるときはＳ４１２に進み、エンジン１０の運転が第１領域にあるか否か判断する。Ｓ４１２で肯定されるときはＳ４１４に進み、第１領域履歴フラグＦ_ＭＲＥＦＨＧ１のビットを１にセットする。従って、フラグＦ_ＭＲＥＦＨＧ１のビットが１にセットされることは、エンジン１０の運転が第１領域にあり、後述するステップでフィードバック補正係数平均値（第１領域）ＭＲＥＦＨＧ１Ｂが算出された履歴があることを、０にリセットされることはその履歴がないことを意味する。
【００７０】
次いでＳ４１６に進み、その平均値（第１領域）ＭＲＥＦＨＧ１Ｂを算出してセットする。具体的には、Ｓ４０６と同様、フィードバック補正係数ＭＨＧをフィルタリング処理する、詳しくはフィードバック補正係数ＭＨＧにフィルタリング係数ＣＨＧＲＥＦを乗算した値と、平均値（第１領域）ＭＲＥＦＨＧ１Ｂの前回値に１からフィルタリング係数ＣＨＧＲＥＦを減算した値を乗算した値とを加算することによって得た値を平均値（第１領域）ＭＲＥＦＨＧ１Ｂの今回値としてセットする。
【００７１】
次いでＳ４１８に進み、Ｓ４１６で算出された平均値（第１領域）ＭＲＥＦＨＧ１Ｂを暫定アルコール濃度補正係数ＭＥＴａとしてセットする。
【００７２】
次いでＳ４２０に進み、基準領域履歴フラグＦ_ＭＲＥＦＨＧＳＴＤのビットが１か否か判断、即ち、エンジン１０の運転が基準領域にあるときのフィードバック補正係数ＭＨＧに基づいて平均値（基準領域）ＭＲＥＦＨＧＳＴＤＢが算出された履歴があるか否か判断する。
【００７３】
Ｓ４２０で肯定されるときはＳ４２２に進み、エンジン１０の個体差を補正するための機差学習値（第１領域）ＭＲＥＦＨＧ１を算出してセットする。具体的には、Ｓ４１６で算出された平均値（第１領域）ＭＲＥＦＨＧ１ＢとＳ４０６で算出された平均値（基準領域）ＭＲＥＦＨＧＳＴＤＢとの比率（詳しくは、平均値（第１領域）ＭＲＥＦＨＧ１Ｂを平均値（基準領域）ＭＲＥＦＨＧＳＴＤＢで除算して得た値）を機差学習値（第１領域）ＭＲＥＦＨＧ１としてセットする。
【００７４】
次いでＳ４２４に進み、算出された機差学習値（第１領域）ＭＲＥＦＨＧ１を機差補正係数ＭＲＥＦＨＧとしてセット（記憶）する。このように、エンジン１０の運転が基準領域にあるときに算出されたフィードバック補正係数ＭＨＧの平均値（基準領域）ＭＲＥＦＨＧＳＴＤＢと前記基準領域以外の領域（ここでは第１領域）にあるときに算出されたフィードバック補正係数ＭＨＧの平均値（第１領域）ＭＲＥＦＨＧ１Ｂとの比率を算出してエンジン１０の個体差を補正するための機差補正係数ＭＲＥＦＨＧとして記憶しておく。
【００７５】
一方、Ｓ４２０で否定されるとき、即ち、エンジン１０の運転が基準領域にあるときのフィードバック補正係数ＭＨＧの平均値（基準領域）ＭＲＥＦＨＧＳＴＤＢが算出された履歴がないときはＳ４２６に進み、第２領域履歴フラグＦ_ＭＲＥＦＨＧ２のビットが１か否か判断する。尚、フラグＦ_ＭＲＥＦＨＧ２のビットは、後に説明する如く、エンジン１０の運転が第２領域にあるときのフィードバック補正係数ＭＨＧに基づいて平均値（第２領域）ＭＲＥＦＨＧ２Ｂが算出された履歴があるとき１に、履歴がないとき０にリセットされる。
【００７６】
Ｓ４２６で肯定されるとき、即ち、直前に第１領域以外の領域（ここでは第２領域）においてフィードバック補正係数ＭＨＧから平均値（第２領域）ＭＲＥＦＨＧ２Ｂが算出されているときはＳ４２８に進み、第２領域を基準にして機差学習値（第１領域）ＭＲＥＦＨＧ１を算出する。機差学習値（第１領域）ＭＲＥＦＨＧ１は、下記の式（３）に示す如く、第２領域で算出された機差学習値（第２領域）ＭＲＥＦＨＧ２に、第１領域と第２領域のフィードバック補正係数の比率（正確には、第１領域のフィードバック補正係数（の平均値）を第２領域のフィードバック補正係数（の平均値）で除算した値）を乗算することで算出される。
機差学習値（第１領域）ＭＲＥＦＨＧ１＝機差学習値（第２領域）ＭＲＥＦＨＧ２×フィードバック補正係数平均値（第１領域）ＭＲＥＦＨＧ１Ｂ／フィードバック補正係数平均値（第２領域）ＭＲＥＦＨＧ２Ｂ                                ・・・式（３）
【００７７】
ここで、Ｓ４２２とＳ４２８で算出される機差学習値（第１領域）ＭＲＥＦＨＧ１について詳しく説明する。先ず基準領域、第１、第２領域の３つの運転領域の関係、具体的には、算出されるフィードバック補正係数の領域間の相対的な比率を機差と考え、機差のない基準領域で算出されるフィードバック補正係数はアルコール濃度補正係数そのものであるため、機差学習値（機差補正係数ＭＲＥＦＨＧ）を１．０倍と定義する（Ｓ４１０）。
【００７８】
基準領域の機差学習値を１．０倍とすることで、第１、第２領域の機差学習値（ＭＲＥＦＨＧ１，ＭＲＥＦＨＧ２）を数値として算出する。例えば機差学習値について基準領域が１．０倍、第１領域が１．１倍、第２領域が１．２倍と過去に算出されている場合、第１、第２領域の機差学習値の比率としては、機差学習値（第１領域）ＭＲＥＦＨＧ１は機差学習値（第２領域）ＭＲＥＦＨＧ２の約０．９１７倍となり、機差学習値（第２領域）ＭＲＥＦＨＧ２は機差学習値（第１領域）ＭＲＥＦＨＧ１の約１．０９倍となる。
【００７９】
基準領域と第１領域で考えた場合、Ｓ４２２で述べた如く、各々の領域で算出されたフィードバック補正係数の比率を機差学習値（第１領域）ＭＲＥＦＨＧ１として算出する。よって基準領域と第１領域において、各々のフィードバック補正係数の比率と各々の機差学習値の比率は等価と言える。
【００８０】
第１領域と第２領域で考えた場合においても同様に、各々のフィードバック補正係数の比率と各々の機差学習値の比率は等価と言えるため、よって例えば第２領域でフィードバック補正係数を算出した後に第１領域でフィードバック補正係数を算出する場合、Ｓ４２８で述べた如く、第２領域での機差学習値ＭＲＥＦＨＧ２に対して、第１領域と第２領域のフィードバック補正係数の比率を乗算すれば、第１領域の機差学習値ＭＲＥＦＨＧ１を算出することができる。尚、機差学習値ＭＲＥＦＨＧ１の算出に用いられる機差学習値ＭＲＥＦＨＧ２は、第２領域と基準領域の機差学習値の比率であり、基準領域からの機差に基づいて算出される。
【００８１】
また、式（３）にあっては、以下のように変形することができる。
機差学習値（第１領域）ＭＲＥＦＨＧ１＝フィードバック補正係数平均値（第１領域）ＭＲＥＦＨＧ１Ｂ×機差学習値（第２領域）ＭＲＥＦＨＧ２／フィードバック補正係数平均値（第２領域）ＭＲＥＦＨＧ２Ｂ                            ・・・式（３−１）
【００８２】
後述するように、第２領域においてＭＲＥＦＨＧ２は機差補正係数ＭＲＥＦＨＧであり、またＭＲＥＦＨＧ２Ｂは暫定アルコール濃度補正係数ＭＥＴａであるため、式（３−１）の「ＭＲＥＦＨＧ２／ＭＲＥＦＨＧ２Ｂ」は、第２領域で算出されたアルコール濃度補正係数ＭＥＴの逆数となる。
【００８３】
従って、式（３−１）は、
機差学習値（第１領域）ＭＲＥＦＨＧ１＝フィードバック補正係数平均値（第１領域）ＭＲＥＦＨＧ１Ｂ／（第２領域で算出された）アルコール濃度補正係数ＭＥＴ
・・・式（３−２）
となる。式（３−２）とＳ４２２に示す式とを対比すると分かるように、Ｓ４２２の式中にあるフィードバック補正係数（正確には、平均値（基準領域）ＭＲＥＦＨＧＳＴＤＢ）を第２領域で算出されたアルコール濃度補正係数ＭＥＴに置き換えることで、式（３−２）が得られる。
【００８４】
即ち、Ｓ４２８にあっては、エンジン１０の運転が基準領域にあるときのフィードバック補正係数が算出されないとき、エンジン１０の運転が複数個の基準領域以外の領域のいずれかにあるとき（ここでは第２領域）に算出されたアルコール濃度補正係数ＭＥＴを基準領域にあるときに算出されたフィードバック補正係数と置換するようにした。
【００８５】
その後前記したＳ４２４に進み、算出された機差学習値（第１領域）ＭＲＥＦＨＧ１を機差補正係数ＭＲＥＦＨＧとしてセット（記憶）する。尚、Ｓ４２６で否定されるときはＳ４２８の処理をスキップしてＳ４２４に進む。この場合、機差学習値（第１領域）ＭＲＥＦＨＧ１はＳ１０２でセットされた記憶値のままとなるため、機差補正係数ＭＲＥＦＨＧにもその値をセットする。
【００８６】
Ｓ４１２で否定されるときはＳ４３０に進み、エンジン１０の運転が第２領域にあるか否か判断する。Ｓ４３０で否定されるとき、即ち、エンジン１０の運転が基準領域、第１および第２領域（換言すれば、フィードバック制御領域）にないときは以降の処理をスキップする一方、肯定されるときはＳ４３２に進む。
【００８７】
このＳ４３２からＳ４４６までの処理は、前述したＳ４１４からＳ４２８までと同様な機差補正係数ＭＲＥＦＨＧを算出するための処理である。
【００８８】
即ち、Ｓ４３２において第２領域履歴フラグＦ_ＭＲＥＦＨＧ２のビットを１にセットする。従って、フラグＦ_ＭＲＥＦＨＧ２のビットが１にセットされることは、前記したように、平均値（第２領域）ＭＲＥＦＨＧ２Ｂが算出された履歴があることを、０にリセットされることはその履歴がないことを意味する。
【００８９】
次いでＳ４３４に進み、その平均値（第２領域）ＭＲＥＦＨＧ２Ｂを算出してセットする。具体的には、Ｓ４１６と同様、フィードバック補正係数ＭＨＧにフィルタリング係数ＣＨＧＲＥＦを乗算した値と、平均値（第２領域）ＭＲＥＦＨＧ２Ｂの前回値に１からフィルタリング係数ＣＨＧＲＥＦを減算した値を乗算した値とを加算することによって得た値を平均値（第２領域）ＭＲＥＦＨＧ２Ｂの今回値としてセットする。
【００９０】
次いでＳ４３６に進み、算出された平均値（第２領域）ＭＲＥＦＨＧ２Ｂを暫定アルコール濃度補正係数ＭＥＴａとしてセットする。次いでＳ４３８に進み、基準領域履歴フラグＦ_ＭＲＥＦＨＧＳＴＤのビットが１か否か判断する。
【００９１】
Ｓ４３８で肯定されるときはＳ４４０に進み、Ｓ４３４で算出された平均値（第２領域）ＭＲＥＦＨＧ２ＢとＳ４０６で算出された平均値（基準領域）ＭＲＥＦＨＧＳＴＤＢとの比率（詳しくは、平均値（第２領域）ＭＲＥＦＨＧ２Ｂを平均値（基準領域）ＭＲＥＦＨＧＳＴＤＢで除算して得た値）を機差学習値（第２領域）ＭＲＥＦＨＧ２としてセットする。
【００９２】
次いでＳ４４２に進み、算出された機差学習値（第２領域）ＭＲＥＦＨＧ２を機差補正係数ＭＲＥＦＨＧとしてセット（記憶）する。このように、エンジン１０の運転が基準領域にあるときに算出されたフィードバック補正係数ＭＨＧの平均値（基準領域）ＭＲＥＦＨＧＳＴＤＢと前記基準領域以外の領域（ここでは第２領域）にあるときに算出されたフィードバック補正係数ＭＨＧの平均値（第２領域）ＭＲＥＦＨＧ２Ｂとの比率を算出して機差補正係数ＭＲＥＦＨＧとして記憶しておく。
【００９３】
一方、Ｓ４３８で否定されるときはＳ４４４に進み、第１領域履歴フラグＦ_ＭＲＥＦＨＧ１のビットが１か否か判断し、肯定されるときはＳ４４６に進んで第１領域を基準にして機差学習値（第２領域）ＭＲＥＦＨＧ２を算出する。機差学習値（第２領域）ＭＲＥＦＨＧ２は、下記の式（４）に示す如く、第１領域で算出された機差学習値（第１領域）ＭＲＥＦＨＧ１に、第１領域と第２領域のフィードバック補正係数の比率（正確には、第２領域のフィードバック補正係数（の平均値）を第１領域のフィードバック補正係数（の平均値）で除算した値）を乗算することで算出される。
機差学習値（第２領域）ＭＲＥＦＨＧ２＝機差学習値（第１領域）ＭＲＥＦＨＧ１×フィードバック補正係数平均値（第２領域）ＭＲＥＦＨＧ２Ｂ／フィードバック補正係数平均値（第１領域）ＭＲＥＦＨＧ２Ｂ                                ・・・式（４）
【００９４】
式（４）は、Ｓ４２８の式（３）と同様、変形すると、
機差学習値（第２領域）ＭＲＥＦＨＧ２＝フィードバック補正係数平均値（第２領域）ＭＲＥＦＨＧ２Ｂ／（第１領域で算出された）アルコール濃度補正係数ＭＥＴ
・・・式（４−１）
となる。即ち、Ｓ４４６にあっても、エンジン１０の運転が基準領域にあるときのフィードバック補正係数が算出されないとき、エンジン１０の運転が複数個の基準領域以外の領域のいずれかにあるとき（ここでは第１領域）に算出されたアルコール濃度補正係数ＭＥＴを基準領域にあるときに算出されたフィードバック補正係数と置換するようにした。
【００９５】
そして前述したＳ４４２に進み、算出された機差学習値（第２領域）ＭＲＥＦＨＧ２を機差補正係数ＭＲＥＦＨＧとしてセット（記憶）する。尚、Ｓ４４４で否定されるときはＳ４４６の処理をスキップしてＳ４４２に進む。この場合、機差学習値（第２領域）ＭＲＥＦＨＧ２はＳ１０２でセットされた記憶値のままとなるため、機差補正係数ＭＲＥＦＨＧにもその値をセットする。
【００９６】
図３フロー・チャートにおいては次いでＳ１８に進み、アルコール濃度補正係数ＭＥＴを算出（修正）する処理を行う。
【００９７】
図９は、そのアルコール濃度補正係数算出（修正）処理を示すサブ・ルーチン・フロー・チャートである。図９に示すように、Ｓ５００にあっては、図８フロー・チャートで求められた暫定アルコール濃度補正係数ＭＥＴａと機差補正係数ＭＲＥＦＨＧに基づいてアルコール濃度補正係数ＭＥＴを算出する。具体的には、暫定アルコール濃度補正係数ＭＥＴａを機差補正係数ＭＲＥＦＨＧで除算することで得た値をアルコール濃度補正係数ＭＥＴとしてセット（記憶）する。
【００９８】
このように、Ｓ５００では、暫定アルコール濃度補正係数ＭＥＴａを、記憶される機差補正係数ＭＲＥＦＨＧで修正、即ち、機差を内包しないように機差補正係数ＭＲＥＦＨＧで修正し、それを修正されたアルコール濃度補正係数ＭＥＴとするようにした。
【００９９】
これにより、エンジン１０がフィードバック制御を実行できない運転領域にあるときは、上記した式（２）に従って燃料噴射量Ｔｏｕｔを、修正された（別言すれば、機差を包含しない）アルコール濃度補正係数ＭＥＴで補正でき、よって燃料補正の制御精度を向上させることができる。
【０１００】
図１０は、図３フロー・チャートと平行してＥＣＵ３０によって所定時間、例えば３ｓｅｃごとに実行される内燃機関の制御装置の動作を示すフロー・チャートである。
【０１０１】
図１０に示す如く、Ｓ６００において、図８と図９フロー・チャートで算出された機差学習値（第１領域）ＭＲＥＦＨＧ１、機差学習値（第２領域）ＭＲＥＦＨＧ２およびアルコール濃度補正係数ＭＥＴの値をＥＥＰＲＯＭ３０ｉに記憶させる。
【０１０２】
これにより、次のＥＣＵ３０の起動時（即ち、次回のエンジン始動時）においては、その前のエンジン運転時に記憶（学習）されたアルコール濃度補正係数ＭＥＴなどをＥＥＰＲＯＭ３０ｉから読み出すことが可能となるため、エンジン始動直後からこれらの値に基づき、燃料噴射量Ｔｏｕｔをアルコール濃度に応じた最適な値に補正することができる。
【０１０３】
以上の如く、この発明の実施例にあっては、内燃機関（エンジン）１０の排気中の空燃比を検出し、前記検出された空燃比に基づいて燃料噴射量Ｔｏｕｔのフィードバック補正係数ＭＨＧを算出し、前記算出されたフィードバック補正係数ＭＨＧで前記燃料噴射量Ｔｏｕｔを補正するフィードバック制御を実行するフィードバック制御手段（Ｏ２センサ６０、ＥＣＵ３０。Ｓ１２，Ｓ２００〜Ｓ２０８，Ｓ２１６，Ｓ２１８）を備えた内燃機関の制御装置において、前記内燃機関１０の運転領域を機関回転数（エンジン回転数ＮＥ）と負荷（スロットル開度ＴＨ）で複数個（３個）の領域（高回転領域Ａ、中回転領域Ｂおよび低回転領域Ｃ）に区分すると共に、その１つの領域を基準領域として設定する領域設定手段と（ＥＣＵ３０。Ｓ１４，Ｓ３００〜Ｓ３１４）、前記内燃機関１０の運転が前記基準領域にあるときに算出された前記フィードバック補正係数（フィードバック補正係数ＭＨＧのフィードバック補正係数平均値（基準領域）ＭＲＥＦＨＧＳＴＤＢ）と前記基準領域以外の領域にあるときに算出された前記フィードバック補正係数（フィードバック補正係数ＭＨＧのフィードバック補正係数平均値（第１または第２領域）ＭＲＥＦＨＧ１Ｂ，ＭＲＥＦＨＧ２Ｂ）との比率を算出して前記内燃機関１０の個体差を補正するための機差補正係数ＭＲＥＦＨＧとして記憶しておく機差補正係数記憶手段と（ＥＣＵ３０。Ｓ１６，Ｓ４００〜Ｓ４２４，Ｓ４３０〜Ｓ４４２）、前記算出されたフィードバック補正係数（ＭＲＥＦＨＧＳＴＤＢ，ＭＲＥＦＨＧ１Ｂ，ＭＲＥＦＨＧ２Ｂ）に基づいて燃料に含まれるアルコール濃度に応じたアルコール濃度補正係数（暫定アルコール濃度補正係数ＭＥＴａ）を算出すると共に、前記記憶される機差補正係数ＭＲＥＦＨＧで修正して記憶しておくアルコール濃度補正係数記憶手段（ＥＣＵ３０。Ｓ１６〜Ｓ１８，Ｓ４０６，Ｓ４０８，Ｓ４１６，Ｓ４１８，Ｓ４３４，Ｓ４３６，Ｓ５００，Ｓ６００）とを備えると共に、前記内燃機関１０が前記フィードバック制御を実行できない運転領域にあるとき、前記燃料噴射量Ｔｏｕｔを前記修正されたアルコール濃度補正係数（アルコール濃度補正係数ＭＥＴ）で補正するように構成した。
【０１０４】
これにより、エンジン１０がフィードバック制御を実行できない運転領域にある場合であっても、燃料噴射量Ｔｏｕｔを機差を内包しないように修正されたアルコール濃度補正係数ＭＥＴで補正できる、即ち、燃料噴射量Ｔｏｕｔをアルコール濃度に応じた最適な値に補正でき、よって燃料補正の制御精度を向上させることができる。
【０１０５】
また、燃料に含まれるアルコール濃度を検出するセンサなどを新たに設置することなく、燃料噴射量Ｔｏｕｔをアルコール濃度に応じて補正するように構成したので、コストアップや装置が複雑化するのを防止することができる。
【０１０６】
また、前記領域設定手段は前記基準領域以外の領域（第１領域、第２領域）を複数個設定すると共に（Ｓ１４，Ｓ３０６〜Ｓ３１４）、前記機差補正係数記憶手段は、前記内燃機関１０の運転が前記基準領域にあるときの前記フィードバック補正係数（平均値（基準領域）ＭＲＥＦＨＧＳＴＤＢ）が算出されないとき、前記内燃機関１０の運転が前記複数個の基準領域以外の領域（第１領域、第２領域）のいずれかにあるときに算出された前記アルコール濃度補正係数ＭＥＴを前記基準領域にあるときに算出された前記フィードバック補正係数（平均値（基準領域）ＭＲＥＦＨＧＳＴＤＢ）と置換するように構成（Ｓ１６，Ｓ４２０，Ｓ４２６，Ｓ４２８，Ｓ４３８，Ｓ４４４，Ｓ４４６）、即ち、エンジン１０の運転が基準領域になく、そのときのフィードバック補正係数（平均値（基準領域）ＭＲＥＦＨＧＳＴＤＢ）が算出されない場合であっても、基準領域以外の領域にあるときに算出されたアルコール濃度補正係数ＭＥＴを基準領域にあるときに算出されたフィードバック補正係数（平均値（基準領域）ＭＲＥＦＨＧＳＴＤＢ）と置換することで前記比率を算出し、それを機差補正係数ＭＲＥＦＨＧとして記憶しておくように構成した。
【０１０７】
これにより、記憶された機差補正係数ＭＲＥＦＨＧでアルコール濃度補正係数（暫定アルコール濃度補正係数ＭＥＴａ）を修正し、燃料噴射量Ｔｏｕｔを修正されたアルコール濃度補正係数（アルコール濃度補正係数ＭＥＴ）で補正でき、よって燃料噴射量Ｔｏｕｔをアルコール濃度に応じた最適な値に確実に補正することができる。
【０１０８】
尚、車両の例として自動二輪車を挙げたが、それに限られるものではなく、例えばスクータやＡＴＶ（All Terrain Vehicle）など、運転者がシート（サドル）に跨って乗る型の、いわゆる鞍乗り型車両であれば良く、さらには他の車両（例えば四輪自動車）であっても良い。
【符号の説明】
【０１０９】
１０  エンジン（内燃機関）、２０  インジェクタ、３０  ＥＣＵ（電子制御ユニット）、６０  Ｏ２センサ
【図１】
2010265768.tif 000003
【図２】
2010265768.tif 000004
【図３】
2010265768.tif 000005
【図４】
2010265768.tif 000006
【図５】
2010265768.tif 000007
【図６】
2010265768.tif 000008
【図７】
2010265768.tif 000009
【図８】
2010265768.tif 000010
【図９】
2010265768.tif 000011
【図１０】
2010265768.tif 000012