(57)【要約】【課題】高地走行時においても、エンスト防止、出力空燃比の維持等を行う。【解決手段】現在の運転領域がフィードバック領域か否かを判定する判定部１１０と、フィードバック領域と判定された場合、実空燃比を目標空燃比に近づけるフィードバック補正係数を算出するフィードバック制御部１２０と、非フィードバック領域と判定された場合、第２補正係数を学習する補正係数学習部１４０と、少なくとも、フィードバック補正係数と第２補正係数と基本噴射量に基づいて、燃料噴射量を求めて対応する燃料噴射制御信号をインジェクタ４０に与える燃料噴射制御部１５０と、を備える。【選択図】図２
2018204576.tif 000002
【特許請求の範囲】
【請求項１】
酸素センサで実測される実空燃比を目標空燃比に漸近させるフィードバック補正係数を算出可能なエンジン制御装置であって、
現在の運転領域がフィードバック領域以外の非フィードバック領域の場合、前記フィードバック補正係数とともに燃料噴射量を補正するための補正係数である第２補正係数を学習する補正係数学習部と、
基本噴射量と前記フィードバック補正係数と前記第２補正係数とに基づいて、燃料噴射量を求めて対応する燃料噴射制御信号を燃料噴射装置に与える燃料噴射制御部と、を備え、
前記補正係数学習部は、
学習開始時の前記酸素センサの出力信号に応じて前記第２補正係数を変更制御し、前記出力信号が理論空燃比に対応する閾値を跨いだ時点の前記第２補正係数で、それ以前の前記第２補正係数を更新して記憶するエンジン制御装置。
【請求項２】
請求項１に記載のエンジン制御装置であって、  
前記現在の運転領域がフィードバック領域か否かを判定する判定部と、
前記フィードバック領域と判定された場合、前記フィードバック補正係数を算出するフィードバック制御部と、を備えたことを特徴とするエンジン制御装置。
【請求項３】
請求項１または２に記載のエンジン制御装置であって、
前記燃料噴射制御部は、
前記フィードバック領域と判定された場合には、前記フィードバック補正係数と前記第２補正係数の加算結果に前記基本噴射量を乗じて燃料噴射量を求める一方、
前記非フィードバック領域と判定された場合には、前記フィードバック補正係数と前記第２補正係数とを加算した加算結果に、前記基本噴射量と予め設定した定数とを乗じて燃料噴射量を求めることを特徴とするエンジン制御装置。
【請求項４】
請求項１、２および３の内のいずれか一項に記載のエンジン制御装置であって、
前記補正係数学習部は、
学習開始時に、前記酸素センサの前記出力信号に基づいて前記理論空燃比に対してリッチ状態であると判定した場合、目標空燃比に対応する補正値である目標Ａ／Ｆ補正値を出力空燃比に対応する値から前記理論空燃比に対応する値まで徐々に減少させる減少機能と、
前記目標Ａ／Ｆ補正値が前記理論空燃比に対応する値に到達した時点から、前記第２補正係数を徐々に減少させ、前記出力信号が前記閾値以下となった時点で前記第２補正係数の減少を停止させ、減少停止時点の前記第２補正係数で、その時点までの前記第２補正係数を更新して記憶する学習機能と、
前記第２補正係数の記憶後に、前記目標Ａ／Ｆ補正値を前記出力空燃比に対応する値まで戻す復帰機能と、を含んで成ることを特徴とするエンジン制御装置。
【請求項５】
請求項４に記載のエンジン制御装置であって、
前記学習機能は、
前記減少機能による前記目標Ａ／Ｆ補正値の減少過程において、前記出力信号が前記閾値以下となった場合、前記減少機能を停止して、前記減少機能の停止時における前記目標Ａ／Ｆ補正値と、前記理論空燃比に対応する値との差分に対応する量だけ前記第２補正係数を増加させ、
前記増加後の前記第２補正係数で、その時点までの前記第２補正係数を更新して記憶することを特徴とするエンジン制御装置。
【請求項６】
請求項１、２および３の内のいずれか一項に記載のエンジン制御装置であって、
前記補正係数学習部は、
学習開始時に、前記酸素センサの前記出力信号に基づいて前記理論空燃比に対してリーン状態であると判定した場合、目標空燃比に対応する補正値である目標Ａ／Ｆ補正値を出力空燃比に対応する値から前記理論空燃比に対応する値まで徐々に減少させるとともに、前記第２補正係数を徐々に増加させる制御機能と、
前記制御機能により前記出力信号が前記閾値以上となった時点の前記第２補正係数で、その時点までの前記第２補正係数を更新して記憶する学習機能と、
前記目標Ａ／Ｆ補正値を前記出力空燃比に対応する値まで戻す復帰機能と、を含んで成ることを特徴とするエンジン制御装置。
【請求項７】
請求項１、２、３、４および５の内のいずれか一項に記載のエンジン制御装置であって、
前記補正係数学習部は、
学習開始から所定時間内に、前記酸素センサの前記出力信号が前記閾値を跨ぐことを所定数回繰り返した場合、前記第２補正係数を所定値だけ増加させる補正係数増加機能をさらに備えたことを特徴とするエンジン制御装置。
【請求項８】
酸素センサで実測される実空燃比を目標空燃比に漸近させるフィードバック補正係数を算出可能なエンジン制御装置を動作させるプログラムであって、
現在の運転領域がフィードバック領域以外の非フィードバック領域の場合、前記フィードバック補正係数とともに燃料噴射量を補正するための補正係数である第２補正係数を学習する補正係数学習処理と、
基本噴射量と前記フィードバック補正係数と前記第２補正係数とに基づいて、燃料噴射量を求めて対応する燃料噴射制御信号を燃料噴射装置に与える燃料噴射制御処理と、をコンピュータに実行させるためのプログラムであり、
前記補正係数学習処理は、
学習開始時の前記酸素センサの出力信号に応じて前記第２補正係数を変更制御し、前記出力信号が理論空燃比に対応する閾値を跨いだ時点の前記第２補正係数で、それ以前の前記第２補正係数を更新して記憶するエンジン制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、出力空燃比を維持してエンスト発生を防止して安定な高地走行を可能とするエンジン制御装置、および、エンジン制御プログラムに関する。
【背景技術】
【０００２】
従来から、Ｏ2フィードバック制御領域以外の領域でも適切な燃料噴射を行うことができるようにした制御装置が提案されていた。例えば、Ｏ2フィードバック制御領域以外の負荷領域においては、その負荷領域に隣り合うＯ2フィードバック領域の学習値を用いて、燃料噴射量の制御を行う空燃比学習制御装置が提案されていた（特許文献１参照。）。
【０００３】
この装置によれば、吸気圧センサおよび大気圧センサを不要としコストダウンを図り、Ｏ2フィードバック制御領域以外の領域でも、内燃機関の経時変化を反映させた燃料噴射による空燃比制御を行うことができた。  
【０００４】
また、機関負荷毎の基準値を高度に応じて定めた複数のモードの学習補正係数を記憶しておき、学習値変更指示手段からの指示がなされた時に、制御ユニットが、複数モードの一つの基準値をそれまでの学習補正係数の学習値と置換する装置も提案されていた（特許文献２参照。）。この装置によれば、ユーザの操作により、それまでの学習値を高度に合わせた学習値に変更することができた。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第５４１１７２８号公報（第２−１１頁、第６図）
【特許文献２】特開２０１１−１５７８３０（第２−９頁、第２図）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１、特許文献２に記載の従来技術によれば、Ｏ2フィードバック領域では、Ｏ2センサで検出した酸素濃度に基づいて、目標空燃比に近づけるようにＯ2フィードバック制御を行っているが、Ｏ2フィードバック領域以外の領域である非フィードバック領域においては、フィードバック補正係数を「１．０」に固定してフィードバック制御を行わない。
【０００７】
しかし、高地走行時では空気が薄くなるところ、スロットル開度量を多くすることなどが行われる非フィードバック領域での走行において、フィードバック制御が行われない場合には、エンスト等の不具合が発生して安定な走行を行えない可能性がある。また、特許文献２に記載の装置によれば、学習補正係数の基準値を高度に応じて複数モード分、定めておき、アクセルグリップの特定操作パターンに応じて選択したモードの基準値を、それまでの学習値で置き換えるだけなので、高度に応じて細やかな空燃比制御を行うことは想定されていない。
【０００８】
本発明は、かかる従来の課題を解決するためになされたもので、空気が希薄な高地であっても、出力空燃比を維持した安定な走行を可能とするエンジン制御装置、および、エンジン制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明のエンジン制御装置は、酸素センサで実測される実空燃比を目標空燃比に漸近させるフィードバック補正係数を算出可能なエンジン制御装置であって、
現在の運転領域がフィードバック領域以外の非フィードバック領域の場合、フィードバック補正係数とともに燃料噴射量を補正するための燃料噴射量補正係数である第２補正係数を学習する補正係数学習部と、
基本噴射量とフィードバック補正係数と第２補正係数とに基づいて、燃料噴射量を求めて対応する燃料噴射制御信号を燃料噴射装置に与える燃料噴射制御部と、を備え、      
補正係数学習部は、
学習開始時の前記酸素センサの出力信号に応じて前記第２補正係数を変更制御し、
出力信号が理論空燃比に対応する閾値を跨いだ時点の第２補正係数で、それ以前の前記第２補正係数を更新して記憶する構成である。
【００１０】
現在の運転領域がフィードバック領域か否かを判定する判定部と、
前記フィードバック領域と判定された場合、前記フィードバック補正係数を算出するフィードバック制御部と、を備えたエンジン制御装置としても良い。
【００１１】
より詳細には、燃料噴射制御部は、
フィードバック領域と判定された場合には、フィードバック補正係数と前記第２補正係数の加算結果に前記基本噴射量を乗じて燃料噴射量を求める一方、
非フィードバック領域と判定された場合には、フィードバック補正係数と第２補正係数とを加算した加算結果に、基本噴射量と予め設定した定数とを乗じて燃料噴射量を求める構成である。予め設定した定数は、例えば、理論空燃比を出力空燃比で除した定数「１．１６８」である。
【００１２】
また、補正係数学習部は、
学習開始時に、酸素センサの出力信号に基づいて理論空燃比に対してリッチ状態であると判定した場合、目標空燃比に対応する補正量である目標Ａ／Ｆ補正値を出力空燃比に対応する値から理論空燃比に対応する値まで徐々に減少させる減少機能と、
目標Ａ／Ｆ補正値が理論空燃比に対応する値に到達した時点から、第２補正係数を徐々に減少させ、出力信号が閾値以下となった時点で第２補正係数の減少を停止させ、減少停止時点の第２補正係数で、その時点までの第２補正係数を更新して記憶する学習機能と、
第２補正係数の記憶後に、目標Ａ／Ｆ補正値を出力空燃比に対応する値まで戻す復帰機能と、を含んで成る。
【００１３】
また、他の動作態様による学習機能は、
減少機能による目標Ａ／Ｆ補正値の減少過程において、出力信号が閾値以下となった場合、減少機能を停止して、減少機能の停止時における目標Ａ／Ｆ補正値と、理論空燃比に対応する値との差分に対応する量だけ第２補正係数を増加させ、
増加後の第２補正係数で、その時点までの第２補正係数を更新して記憶する構成とするのが好ましい。
【００１４】
また、他の動作態様によれば、補正係数学習部は、
学習開始時に、酸素センサの出力信号に基づいて理論空燃比に対してリーン状態であると判定した場合、目標空燃比に対応する補正量である目標Ａ／Ｆ補正値を出力空燃比に対応する値から理論空燃比に対応する値まで徐々に減少させるとともに、第２補正係数を徐々に増加させる制御機能と、
前記制御機能により出力信号が閾値以上となった時点の第２補正係数で、その時点までの第２補正係数を更新して記憶する学習機能と、
目標Ａ／Ｆ補正値を出力空燃比に対応する値まで戻す復帰機能と、を含んで成る構成である。
【００１５】
さらに他の動作態様によれば、補正係数学習部は、
学習開始から所定時間内に、酸素センサの出力信号が閾値を跨ぐことを所定数回繰り返した場合、第２補正係数を所定値だけ増加させる補正係数増加機能をさらに備えた構成である。
【００１６】
本発明のエンジン制御プログラムは、酸素センサで実測される実空燃比を目標空燃比に漸近させるフィードバック補正係数を算出可能なエンジン制御装置を動作させるプログラムであって、
現在の運転領域がフィードバック領域以外の非フィードバック領域の場合、フィードバック補正係数とともに燃料噴射量を補正するための第２補正係数を学習する補正係数学習処理と、
基本噴射量とフィードバック補正係数と第２補正係数とに基づいて、燃料噴射量を求めて対応する燃料噴射制御信号を燃料噴射装置に与える燃料噴射制御処理と、をコンピュータに実行させるためのプログラムであり、
補正係数学習処理は、
学習開始時の前記酸素センサの出力信号に応じて第２補正係数を変更制御し、出力信号が理論空燃比に対応する閾値を跨いだ時点の第２補正係数で、それ以前の前記第２補正係数を更新して記憶するエンジン制御プログラムである。
【発明の効果】
【００１７】
本発明によれば、空気が希薄な高地であっても、出力空燃比を維持した安定走行を可能にすることができるという効果が得られる。
【図面の簡単な説明】
【００１８】
【図１】エンジン１の構成概要の模式的説明図である。
【図２】制御装置１００の機能構成図である。
【図３】全体動作の説明するためのフローチャートである。
【図４】運転マップ１３４の説明図である。
【図５】制御装置１００のハードウエア構成図である。
【図６】酸素センサ２８の出力特性の説明図である。
【図７】学習動作を説明するためのフローチャートである。
【図８】学習動作を説明するためのフローチャートである。
【図９】動作例１を示すタイミングチャートである。
【図１０】動作例２を示すタイミングチャートである。
【図１１】動作例３を示すタイミングチャートである。
【図１２】動作例４を示すタイミングチャートである。
【発明を実施するための形態】
【００１９】
以下、本発明の実施の形態について図面を参照しつつ説明する。なお、以下に説明する本発明の実施形態は一例であり、本発明は、この実施形態に限定されず、本実施形態の構成例、情報例等に関して種々の変形、変更等が可能である。以下では、エンジン出力が最大となる出力空燃比を「１２．５」、理論空燃比（ストイキオメトリ）を「１４．６」としている。
【００２０】
（エンジン１の概要）
図１は、エンジン１および制御装置１００を含む制御システムの模式的な構成図である。エンジン１は、シリンダ２と、シリンダ２の内部で上下方向に摺動可能に嵌合されたピストン３とを有する。ピストン３には、コンロッド４の一端側が接続されているとともに、コンロッド４の他端側は、クランクシャフト５に連結されている。クランクシャフト５の変速機（不図示）側の端部には、フライホイール７が回転可能に固定されている。フライホイール７の外周の所定の角度領域には、磁性体でなるリラクタ（突起）２０が形成されている。
【００２１】
リラクタ２０に対向して配置される電磁ピックアップ２２は、リラクタ２０が近づく時には正電圧のパルスを出力するとともに、リラクタ２０が遠ざかる時には負電圧のパルスを出力する。公知の波形整形回路により、正負両極パルス信号に基づいて１個の矩形パルスが出力されるように波形整形すると、フライホイール７が１回転する毎に矩形パルスが１パルス出力される。よって、「吸気→圧縮→燃焼→排気→吸気」の１サイクルにおいて、クランクシャフト５が７２０°回転するので、電磁ピックアップ２２から１サイクルで２パルスの矩形信号（エンジン回転信号）が出力される。
【００２２】
電磁ピックアップ２２からのエンジン回転信号に基づいて、エンジン１の回転数を求めることができる。また、フライホイール７の外周上におけるリラクタ２０の形成位置を適宜の角度領域とし、電磁ピックアップ２２から信号に基づいて、点火プラグ４５に点火制御信号を与えて燃料点火するタイミングを所望のタイミングとすることができる。
【００２３】
また、シリンダ２の上部のシリンダヘッドには、吸気管５０と排気管６０とが接続されている。吸気管５０の内部は、外部から燃焼室７０内に新気を取り込むための吸気通路５１が形成される。また、吸気通路５１には、上流側から、新気の塵等を除去するためのエアクリーナ３２、新気の吸入量を調整するためのスロットル弁２４、燃料噴射を行うためのインジェクタ４０が配置されている。そして、新気を燃焼室７０内へ取り込むタイミングは、不図示のスプリングで閉弁方向に付勢される吸気弁１２の開弁・閉弁動作によって制御される。
【００２４】
点火プラグ４５は、その先端が燃焼室内を臨む姿勢でシリンダヘッドの頂部に配置されている。また、スロットル弁の開度を検出するスロットル開度センサ２６が設けられている。なお、図示はしないが、インジェクタ４０には、燃料タンクに貯留された燃料が供給ホースを介して供給される一方、余剰燃料が回収ホースを介して燃料タンクに回収され、インジェクタ４０には、常時、所定圧に加圧された燃料が供給されている。
【００２５】
一方、排気管６０の内部は、燃焼室７０からの排気を排出するための排気通路６１が形成されている。排気通路６１の下流位置には、排気を浄化する触媒装置３０が配置され、触媒装置３０の上流側には、排気中に残存する酸素の濃度を検出する酸素センサ２８が設けられている。触媒装置３０で排気の浄化を行った後に消音器で消音を行う構成とすることもできる。そして、排気の燃焼室７０内からの排出タイミングは、不図示のスプリングで閉弁方向に付勢される排気弁１０の開弁・閉弁動作によって制御される。
【００２６】
図６は、酸素センサ２８（「Ｏ2センサ」とも記す）の出力特性の説明図である。図６の横軸が伸びる方向は、空燃比大方向であり、縦軸は、酸素センサ出力信号（ＶＳ）である。空燃比が大きくなるに従って、酸素センサ出力信号（ＶＳ）は小さくなって行き、酸素センサ出力信号（ＶＳ）がリッチ判定閾値以上になる場合にはリッチ状態と判定される一方、酸素センサ出力信号（ＶＳ）がリーン判定閾値以下である場合には、リーン状態と判定される。空燃比が理論空燃比である「１４．６」近傍で酸素センサ２８の出力信号（ＶＳ）が急激に変化する。以上より、酸素センサ出力信号（ＶＳ）は空燃比に応じて変化するので、ＶＳを取得することによって実空燃比を検出することができる。
【００２７】
また、ＶＳを検出することにより、理論空燃比に対し、リッチ状態にあるのか、あるいは、リーン状態にあるのかを判定することができる。理論空燃比近傍でＶＳが急激に変化するので、理論空燃に対してリッチ、リーンを判定する精度は良い。
【００２８】
エンジン１の動作を制御する制御装置１００には、スロットル開度センサ２６、電磁ピックアップ２２、および、酸素センサ２８の出力が入力される。スロットル開度センサ２６からは、スロットル弁の開度を示すスロットル開度信号が出力され、また、電磁ピックアップ２２からは、上記したエンジン回転に応じた矩形パルス信号が出力される。そして、Ｏ2センサ２８からは、排気ガス中に残存する酸素の濃度を示すＯ2センサ出力信号が出力される。一方、制御装置１００からは、インジェクタ４０を駆動制御するための燃料噴射制御信号、および、点火プラグ４５を点火制御するための点火制御信号が出力される。
【００２９】
制御装置１００は、スロットル開度信号、エンジン回転、および、Ｏ2センサ出力信号等に基づいて、インジェクタ４０による燃料噴射制御（噴射量、噴射時期）と点火プラグ４５による点火時期制御等を行う。そして、シリンダ２内でのピストン１の上下方向の往復運動が、クランクシャフト５の回転運動に変換される。クランクシャフト５の回転運動は、不図示の変速機を介して駆動輪に伝達され、「吸気→圧縮→燃焼→排気」の行程を繰り返すことにより、車両（二輪、四輪）が前進する。
【００３０】
なお、図１は、エンジン１および制御装置１００の構成の一例であり、例えば、制御装置１００は、スロットル開度信号、エンジン回転、および、Ｏ2センサ出力信号の他にエンジン１の吸気温度、冷却水温度などを参照して、エンジン１の制御を行うようにすることもできる。つまり、ドライバビリティを向上させるため、センサの種類を増やして空燃比補正係数等のエンジンパラメータを算出することも可能である。また、単気筒で４サイクルの工程を有するエンジン１を想定しているが、気筒数やシリンダ配列態様は、適宜のものを採用し得る。
【００３１】
（制御装置１００の機能構成）
図２は、制御装置１００の機能構成図である。制御装置１００は、判定部１１０、フィードバック制御部１２０、記憶部１３０、補正係数学習部１４０、燃料噴射制御部１５０、および、点火制御部１６０を有する。記憶部１３０は、プログラム１３２、マップ１３４、不揮発性記憶エリア１３６、および、ワークエリア１３８を有する。各機能は、プログラム１３２を実行することにより一連の制御が実現できる。ワークエリア１３８は演算過程等で補正係数等のパラメータ等を一時的に記憶するための一時記憶領域であり、また、不揮発性記憶エリア１３６は、フィードバック補正係数、第２補正係数等のパラメータを不揮発的に記憶するための記憶領域である。
【００３２】
図４はマップ１３４の説明図である。横軸はエンジン回転数（rpm）、縦軸はスロットル開度（%）である。エンジン回転数がＮＥＨ（rpm）未満、かつ、スロットル開度がＴＨＨ（％）未満の領域は、フィードバック領域である。一方、エンジン回転数がＮＥＨ（rpm）以上、または、スロットル開度がＴＨＨ（％）以上の領域は、フィードバック領域以外の領域である非フィードバック領域である。つまり、全運転状態を示すマップ１３４は、フィードバック領域と非フィードバック領域とで成っている。なお、図４は、運転マップの一例であり、領域の境界線は直線でなくても良いし、フィードバック領域は必ずしも四角形状でなくても良く、境界線上ではヒステリシスを持たせても良い。
【００３３】
図２に戻って説明を続ける。判定部１１０は、スロットル開度センサ２６によるスロットル開度の検出値に応じたスロットル検出信号と、電磁ピックアップ２２によるエンジン回転検出に応じたエンジン回転検出信号とに基づき、記憶部１３０に記憶されたマップ１３４を参照して、現在の運転領域がフィードバック領域であるか、これ以外の領域である非フィードバック領域であるかなどを判定する。具体的には、スロットル開度センサ２６、電磁ピックアップ２２のそれぞれから、スロットル開度、エンジン回転の情報を取得し、図４のマップ１３４を参照して、エンジン回転数がＮＥＨ（rpm）未満、かつ、スロットル開度がＴＨＨ（％）未満の場合には、現在の運転領域が、フィードバック領域であると判定し、一方、これ以外の場合には、現在の運転領域が非フィードバック領域であると判定する。
【００３４】
フィードバック制御部１２０は、実空燃比に応じた出力信号を出力する酸素センサ２６の出力信号ＶＳに応じた実空燃比と、目標空燃比（目標Ａ／Ｆ値とも称する）との制御偏差を求め、求めた制御偏差が零となるように、空燃比フィードバック補正係数（以下、「O2FB補正係数」という）を求める機能を有する。目標空燃比は、例えば、記憶部１３０に記憶されているプログラム１３２により参照すべきとされる、不揮発性記憶エリア１３６の特定アドレスに記憶されている。フィードバック制御部１２０は、これを参照して目標空燃比を認識する。この目標空燃比は、後述する燃料噴射量を所望値とする値である。フィードバック制御部１２０は、算出したO2FB補正係数を読み出し可能に、不揮発性記憶エリア１３６に更新して記憶保持する。
【００３５】
補正係数学習部１４０は、目標空燃比の初期値を出力空燃比として、酸素センサ２６のセンサ出力信号ＶＳ等に基づいて、O2FB補正係数とは異なる第２の補正係数である第２補正係数（以下、O2FF補正係数という）を学習する。より具体的には、補正係数学習部１４０は、リアルタイムで第２補正係数を順次新たな値に更新し、記憶部１３０の不揮発性記憶エリア１３６に記憶する。この学習値を次回の制御時まで保持する。そして、不揮発性記憶エリア１３６に記憶保持されたO2FF補正係数は、次回の制御時に読み出されてO2FF補正係数の初期値となる。なお、学習方法の詳細は後述する。
【００３６】
燃料噴射制御部１５０は、燃料噴射量を求めて対応する燃料噴射制御信号を燃料噴射装置に与える。つまり、燃料噴射制御部１５０は、燃料噴射量を求め、求めた燃料噴射量に応じた燃料噴射制御信号をインジェクタ４０に与える。これにより、インジェクタ４０は、燃料噴射制御信号に応じた燃料噴射量で燃料を噴射する。燃料噴射制御部１５０は、運転領域がフィードバック領域の場合には、「O2FB補正係数」と「基本噴射量」とに基づいて燃料噴射量を求め、求めた燃料噴射量に応じた燃料噴射制御信号をインジェクタ４０に与える。
【００３７】
一方、燃料噴射制御部１５０は、運転領域が非フィードバック領域の場合には、「O2FB補正係数」と「O2FF補正係数」と「基本噴射量」とに基づいて燃料噴射量を求め、求めた燃料噴射量に応じた燃料噴射制御信号をインジェクタ４０に与える。ここで、「FB」はフィードバックを意味し、「FF」はフィードフォワードを意味する。また、基本燃料噴射量は、燃料噴射量を算出する際のベースとなる一定の燃料噴射量である。
【００３８】
具体的には、現在の運転領域がフィードバック領域の場合、燃料噴射制御部１５０は、「燃料噴射量＝基本噴射量×１００（％）×（O2FB補正係数＋O2FF補正係数）」で算出される燃料噴射量に対応する燃料噴射制御信号を出力する。一方、現在の運転領域が非フィードバック領域の場合、燃料噴射制御部１５０は、「燃料噴射量＝基本噴射量×目標Ａ／Ｆ補正値×（O2FB補正係数＋O2FF補正係数）；但し、目標Ａ／Ｆ補正値＝（１４．６／目標Ａ／Ｆ値）×１００（％）、目標Ａ／Ｆ値＝１２．５（出力空燃比）」より、「燃料噴射量＝基本噴射量×１１６．８（％）×（O2FB補正係数＋O2FF補正係数）」で算出される燃料噴射量に対応する燃料噴射制御信号を出力する。このように、目標Ａ／Ｆ補正値は、目標空燃比に対する空燃比補正値であり、目標空燃比（目標Ａ／Ｆ値）に基づき定まる値である。補正係数学習部１４０は、目標Ａ／Ｆ値を増減制御して目標Ａ／Ｆ補正値を減増制御して学習を行う。
【００３９】
演算上は、１００（％）＝１．０であるので、「フィードバック領域」の場合、「燃料噴射量＝基本噴射量×１．０×（O2FB補正係数＋O2FF補正係数）」となる。一方、「非フィードバック領域」の場合、「燃料噴射量＝基本噴射量×１．１６８×（O2FB補正係数＋O2FF補正係数）」となる。つまり、この「１．１６８」は、目標Ａ／Ｆ補正値を出力空燃比に対応する値とするための定数であり、「理論空燃比／出力空燃比＝１．１６８」である。
【００４０】
燃料噴射制御部１５０は、例えば、エンジン１の行程判別完了までは圧縮行程と排気行程の各々において半分ずつ分けて燃料噴射を行い、また、行程判別完了後は排気行程で纏めて燃料噴射を行うように燃料噴射制御を行うように燃料噴射制御信号をインジェクタ４０に与えるように制御する。
【００４１】
点火制御部１６０は、電磁ピックアップ２２の出力信号であるエンジン回転数信号に基づいて点火制御信号を生成して、点火プラグ４５に与える。この点火制御信号を受け取った点火プラグ４５は、燃焼室７０内に導入された混合気を点火する。
【００４２】
（ハードウエア構成図）
図５は制御装置１００のハードウエア構成図である。制御装置１００は、Ａ／Ｄ変換器２５０、ＣＰＵ２００、ＲＯＭ２１０、ＲＡＭ２２０、フラッシュメモリ２３０、および、Ｄ／Ａ変換器２６０を有している。Ａ／Ｄ変換器２５０は、スロットル開度センサ２６からのスロットル開度検出信号、電磁ピックアップ２２からのエンジン回転検出信号、および、酸素センサ２８からの酸素センサ出力信号をアナログ・デジタル変換した信号をＣＰＵ２００に送る。
【００４３】
一方、Ｄ／Ａ変換器２６０は、ＣＰＵ２００が出力するインジェクタ４０への燃料噴射制御信号、および、点火プラグ４５への点火制御信号をデジタル・アナログ変換してインジェクタ４０、点火プラグ４５へ送る。
【００４４】
ＣＰＵ２００は、ＲＯＭ２１０に記録されたプログラム１３２を読み出し、ＲＡＭ２２０に形成されたワークエリア１３８等を利用しながらプログラム１３２を実行する。その実行過程において、算出された補正係数等は、フラッシュメモリ２３０の不揮発性記憶エリア１３６に更新して記憶保持する。また、フラッシュメモリ２３０に記憶しているマップ１３４は、ＣＰＵ２００が現在の運転領域がフィードバック領域か否かを判定するために使用する。また、ＣＰＵ２００は自身内部のタイマ２０５を利用して所定時間の経過をタイムアウトにより認識する。
【００４５】
ＣＰＵ２００あるいはＤＳＰ（Digital Signal Processor）等のプロセッサが、ＲＯＭ２１０等の記録媒体に記録されたプログラム１３２を実行することによって、図２に示した判定部１１０、フィードバック制御部１２０、補正係数学習部１４０、燃料噴射制御部１５０、および、点火制御部１６０を実現することができる。また、ＲＯＭ２１０、ＲＡＭ２２０、および、フラッシュメモリ２３０が、記憶部１３０を実現する。
【００４６】
（全体動作の説明）
図３を参照して全体動作について説明する。まず、ステップＳ３００において、判定部１１０は、スロットル開度センサ２６からのスロットル開度検出信号の値を取得し、これをスロットル２４の開度量として変数ＴＨに代入する。次に、ステップＳ３１０において、判定部１１０は、電磁ピックアップ２２からのエンジン回転検出信号に基づき、エンジン回転数を演算し、この演算結果を変数ＮＥに代入する。電磁ピックアップ２２からのエンジン回転検出信号は、フライホイール７が１回転する毎に１パルスの矩形信号が出力されるので、例えば６０秒当たりの最初のパルス信号の到来数を算出することにより、エンジン回転数を演算する。なお、エンジン回転数の算出方法はこれに限られない。  
【００４７】
次に、ステップＳ３２０において、判定部１１０は、変数ＴＨ、ＮＥ、マップ１３４を参照して、現在の運転領域がフィードバック領域か、これ以外の領域である非フィードバック領域かを判定する。判定部１１０は、横軸ＮＥ、縦軸ＴＨのマップ１３４上において、ステップＳ３００、ステップＳ３１０にて代入した変数ＴＨ、変数ＥＮに対応する２次元の位置がフィードバック領域内にプロットされる場合には、フィードバック領域であると判定し（ステップＳ３３０のＹｅｓ）一方、これ以外の領域にプロットされる場合には、非フィードバック領域であると判定する（ステップＳ３３０のＮｏ）。
【００４８】
ステップＳ３４０に移行した場合には、フィードバック制御部１２０が、目標空燃比と実空燃比との制御偏差が零となるように、O2FB補正係数を求めて、不揮発性記憶エリア１３６に記憶して終了する。一方、ステップＳ３５０に移行した場合には、補正係数学習部１４０は、第２補正係数であるO2FF補正係数を増減制御して学習を行い終了する。学習した値は更新して記憶保持し、次回の制御実行時に読み出して使用する。以上が全体動作の概説である。  
【００４９】
（学習動作例）
次に、図７、図８を参照して学習動作例について説明する。図７、図８に示す学習動作は、本発明の実施形態の補正係数学習部１４０が行う学習動作の一例であり、これ以外の方法でO2FF補正係数を学習するようにしても良い。なお、以下の動作において、酸素センサ２８の出力信号を「ＶＳ」とし、理論空燃比に対してリーン状態かリッチ状態かを判定するための閾値を「Ｏ2ＴＨ」とする。また、目標Ａ／Ｆ補正値に対応する変数をＡＦＨとし、その初期値を出力空燃比に対応する値に設定する。図７、図８の動作は、補正係数学習部１４０により実行される。
【００５０】
最初に、後述する高地燃料補正実施条件（学習開始条件）が成立したことに応答して、ステップＳ７００において、リッチ状態もしくはリーン状態が継続して所定時間経過したか否かを判定する。ＶＳがリッチ閾値以上の状態が所定時間継続された、もしくは、ＶＳがリーン閾値以下の状態が所定時間継続されたと判定した場合には、ステップ７００において「Ｙｅｓ」となる。この所定時間は、酸素センサ２８の出力が安定するなどのために設定された時間である。所定時間経過していないと判定した場合（ステップＳ７００のＮｏ）、ステップＳ７０５において、ＶＳが所定パターンで変化したか否かを判定する。所定パターンで変化していないと判定した場合（ステップＳ７０５のＮｏ）には、ステップＳ７００に戻って所定時間の経過判定を継続する。
【００５１】
一方、変化したと判定した場合（ステップＳ７０５のＹｅｓ）には、ステップＳ７１０に移行し、O2FF補正係数を所定量だけ増加して、コネクタＢにブランチして学習を一旦終了する。ステップＳ７１０での動作は後に「動作例４」として説明する。
【００５２】
さて、所定時間が経過したと判定した場合（ステップＳ７００のＹｅｓ）には、ステップ７１５で、ＶＳがリーン判定閾値以下か否かを判定する。ＶＳがリーン判定閾値以下であると判定した場合、即ち、リーン状態と判定した場合には、図８のコネクタＣにブランチする。
【００５３】
そして、ステップＳ８１０において、目標Ａ／Ｆ補正値（目標空燃比補正値）を示す変数ＡＨＦをΔｈ１だけ減少させるとともに、O2FF補正係数を示す変数Ｏ２ＦＦをΔｈ４だけ増加させる。上述したように、変数ＡＨＦの初期値は出力空燃比に対応する値である。ステップＳ８２０において、変数ＡＨＦが基準値（理論空燃比に対応する値）に等しくなったか否かを判定し、等しくなったと判定した場合（ステップＳ８２０のＹｅｓ）には、ステップＳ８３０に移行する。一方で、変数ＡＨＦが基準値に等しくないと判定した場合（ステップＳ８２０のＮｏ）には、ステップＳ８１０に戻る。次いで、ステップＳ８３０において、O2FF補正係数を示す変数Ｏ２ＦＦをΔｈ４だけ増加させる。次いで、ステップＳ８４０では、ＶＳが閾値Ｏ2ＴＨより小さいと判定した場合（ステップＳ８４０のＮｏ）には、再度、ステップＳ８３０に戻る。一方、ＶＳが閾値Ｏ2ＴＨ以上であると判定した場合には（ステップＳ８４０のＹｅｓ）、図７のコネクタＤにジャンプする。
【００５４】
コネククＤにジャンプした後、ステップＳ７５０において、変数Ｏ２ＦＦを、不揮発性記憶エリア１３６に更新して記憶することにより、第２補正係数としてのO2FF補正係数の学習が実行される。学習値は、次回の制御の初期値として読み出される。次いで、ステップＳ７５５において、変数ＡＦＨを初期値まで戻すためにΔｈ１だけ増加させ、ステップＳ７６０において、変数ＡＦＨが出力空燃比に対応する値になったか否かを判定する。
【００５５】
ステップＳ７６０において、変数ＡＦＨが出力空燃比に対応する値になっていないと判定した場合（ステップＳ７６０のＮｏ）には、ステップＳ７５５に戻って、再度、変数ＡＨＦの増加を行う。一方、変数ＡＦＨが出力空燃比に対応する値に等しくなったと判定した場合（ステップＳ７６０のＹｅｓ）には、制御を一旦終了する。
【００５６】
ステップＳ７００、Ｓ７１５、Ｓ８１０、Ｓ８２０、Ｓ７５０、Ｓ７５５、Ｓ７６０の一連の処理は後に示す「動作例３」に対応する。つまり、所定時間経過後の学習開始時に、酸素センサ２８の出力信号ＶＳがリーン判定閾値以下である場合、目標Ａ／Ｆ補正値を出力空燃比に対応する値から理論空燃比に対応する値まで徐々に減少させるとともに、O2FF補正係数を徐々に増加させる。目標Ａ／Ｆ補正値が基準値となった時、目標Ａ／Ｆ補正値の減少を停止してO2FF補正係数を徐々に増加させる。
【００５７】
そして、ＶＳが閾値Ｏ2ＴＨ以上となった時点のO2FF補正係数で、その時点までのO2FF補正係数を更新する学習を行い、目標Ａ／Ｆ補正値を出力空燃比に対応する値まで戻す。
【００５８】
さて、ステップＳ７１５において、ＶＳがリーン判定閾値より大きいと判定された場合（ステップＳ７１５のＮｏ）、つまり、リッチ状態の場合には、ステップＳ７２０に進んで、変数ＡＦＨをΔｈ１だけ減少させる。ステップＳ７００の判定結果も考慮して言い換えると、ＶＳがリッチ判定閾値以上であると判定した場合、ステップＳ７２０に進んで、変数ＡＦＨをΔｈ１だけ減少させる。次に、ステップＳ７３０において、ＶＳが閾値Ｏ2ＴＨ以下か否かを判定し、ＶＳが閾値Ｏ2ＴＨ以下と判定した場合（ステップＳ７３０のＹｅｓ）には、ステップＳ７６５に移行する。
【００５９】
一方、ステップＳ７３０において、ＶＳが閾値Ｏ2ＴＨより大きいと判定された場合（ステップＳ７３０のＮｏ）には、ステップＳ７３５において、変数ＡＦＨが基準値（理論空燃比に対応する値）に等しくなったか否かを判定し、等しくなったと判定した場合（ステップＳ７３５のＹｅｓ）には、ステップＳ７４０に移行する。一方で、変数ＡＦＨの値が基準値に等しくないと判定した場合（ステップＳ７３５のＮｏ）には、ステップＳ７２０まで戻り、変数ＡＦＨの減少処理を繰り返す。
【００６０】
つまり、ＶＳが閾値Ｏ2ＴＨよりも大きい場合（ステップＳ７３０のＮｏ）には、変数ＡＦＨの値を基準値になるまで減少させる。一方、変数ＡＦＨの減少過程において、ＶＳが閾値Ｏ2ＴＨ以下となったと判定した場合（ステップＳ７３０のＹｅｓ）には、ステップＳ７６５に移行する。そして、ステップＳ７６５では、ステップＳ７６５では、目標Ａ／Ｆ補正値の基準値とその時点の変数ＡＦＨの値との差分の値Δｈ３だけ、変数Ｏ２ＦＦを増加させる。
【００６１】
次いで、ステップＳ７５０に移行して、O2FF補正係数を示す変数Ｏ２ＦＦを不揮発性記憶エリア１３６に更新して記憶保持することにより、O2FF補正係数の学習を実行する。学習値は、次回の制御の初期値として読み出される。次いで、ステップＳ７５５に移行して、変数ＡＦＨを戻すためにΔｈ１だけ増加させ、ステップＳ７６０において、変数ＡＦＨが初期値、即ち、出力空燃比に対応する値に等しくなったか否かを判定する。ステップ７６０において、変数ＡＦＨが出力空燃比に対応する値に等しくなっていないと判定した場合（ステップＳ７６０のＮｏ）には、ステップＳ７５５に戻る。一方、変数ＡＦＨが出力空燃比に対応する値に等しくなったと判定した場合（ステップＳ７６０のＹｅｓ）には、制御を一旦終了する。
【００６２】
ステップＳ７００、Ｓ７１５、Ｓ７２０、ステップＳ７６５、Ｓ７５０、Ｓ７５５、Ｓ７６０の一連の処理は、後に説明する「動作例２」に対応する。つまり、ステップＳ７００、Ｓ７１５、Ｓ７２０、Ｓ７３０、Ｓ７６５において、所定時間経過後の学習開始時に、酸素センサ２８の出力信号ＶＳがリッチ判定閾値以上である場合において、目標Ａ／Ｆ補正値の減少過程においてＶＳが設定閾値Ｏ2ＴＨ以下となった時、目標Ａ／Ｆ補正値の減少を停止して、目標Ａ／Ｆ補正値の基準値とその時点の変数ＡＦＨの値との差分の値だけ変数Ｏ２ＦＦを増加させる。そして、その時点のO2FF補正係数で、その時点までのO2FF補正係数を更新して記憶保持する学習を行い、目標Ａ／Ｆ補正値を出力理論比まで戻す。
【００６３】
さて、ステップＳ７３５のＹｅｓから、ステップＳ７４０に移行した場合には、変数Ｏ２ＦＦの値をΔｈ２だけ減少させ、ステップＳ７４５において、ＶＳが、閾値Ｏ2ＴＨ以下か否かを判定する。ＶＳが閾値Ｏ2ＴＨ以下であると判定した場合（ステップＳ７４５のＹｅｓ）には、ステップＳ７５０に移行する。一方、ＶＳが閾値Ｏ2ＴＨより大きいと判定した場合（ステップＳ７４５のＮｏ）には、ステップ７４０に戻って、変数Ｏ２ＦＦをΔｈ２だけ減少させる。
【００６４】
ステップＳ７５０では、変数Ｏ２ＦＦを、不揮発性記憶エリア１３６に更新して記憶保持することにより、第２補正係数としてのO2FF補正係数を学習する。学習値は、次回の制御の初期値として読み出される。
【００６５】
次いで、ステップＳ７５５において、変数ＡＦＨを初期値まで戻すために、Δｈ１だけ増加させ、ステップＳ７６０において、変数ＡＦＨが初期値、即ち、出力空燃比に対応する値に等しくなっているか否かを判定する。ステップＳ７６０において、変数ＡＦＨが出力空燃比に対応する値に等しくなっていないと判定した場合（ステップＳ７６０のＮｏ）には、ステップＳ７５５に戻る。一方、変数ＡＦＨが出力空燃比に対応する値に等しくなったと判定した場合（ステップＳ７６０のＹｅｓ）には、制御を一旦終了する。
【００６６】
ステップＳ７００、Ｓ７１５、Ｓ７２０、Ｓ７３０、Ｓ７３５、Ｓ７４０、Ｓ７４５、Ｓ７５０、Ｓ７５５、Ｓ７６０の一連の処理は、後に説明する「動作例１」に対応する。つまり、ステップＳ７００、Ｓ７１５において、所定時間経過後の学習開始時に、酸素センサの出力信号ＶＳがリッチ判定閾値以上であると判定した場合、ステップＳ７２０、Ｓ７３０、Ｓ７３５において、目標Ａ／Ｆ補正値を出力空燃比に対応する値から理論空燃比に対応する値まで徐々に減少させる。
【００６７】
そして、ステップＳ７４０、Ｓ７４５、Ｓ７５０において、O2FF補正係数を徐々に減少させて行き、酸素センサ２８の出力信号が閾値Ｏ2ＴＨ以下となった時点のO2FF補正係数で、その時点までのO2FF補正係数を更新して記憶保持する学習を行い、ステップＳ７５５、Ｓ７６０において、目標Ａ／Ｆ補正値を出力空燃比に対応する値まで戻す。なお、上述した変数ＡＦＨの増減分Δｈ１、変数Ｏ２ＦＦの減少分Δｈ２、増加分ｈ３、ｈ４等は適宜の値を設定し得る。
【００６８】
（動作例１〜動作例４）
次に、図９乃至図１２を参照して、動作例１から動作例４について説明する。図９乃至図１２は、横軸が時間に設定してある。また、図９乃至図１２において、「センサ電圧判定閾値」は、酸素センサ２８の出力電圧ＶＳを参照し、理論空燃比に対してリッチ状態であるかリーン状態であるのかを判定するために設定した設定閾値である。
【００６９】
（動作例１）
図９は、「動作例１」を説明するタイミングチャートである。「動作例１」は、低地から高地へ走行して空気が薄くなった場合の動作である。目標Ａ／Ｆ補正値の初期値を出力空燃比に対応する値に設定する。次に、目標Ａ／Ｆ補正値を徐々に基準値まで減少させる。基準値は、目標Ａ／Ｆ補正値が理論空燃比に対応する値である。目標Ａ／Ｆ補正値を出力空燃比に対応する値から理論空燃比に対応する値まで徐々に減少させて行き、その値が理論空燃比に対応する値になると減少を停止する。
【００７０】
目標Ａ／Ｆ補正値の減少を停止すると、酸素センサ２８の出力信号ＶＳが、リッチセンサ電圧判定閾値以上のリッチ状態であることを確認して、O2FF補正係数の値を徐々に減少させる。O2FF補正係数の初期値は、前回の学習結果の値である。そして、ＶＳが、センサ電圧判定閾値以下になった時、即ち、リーン状態になった時、O2FF補正係数の値の減少を停止し、この時のO2FF補正係数の値で、この時点までの値を更新して記憶保持する。かくして、O2FF補正係数の学習が行われる。そして、O2FF補正係数の更新に応答して目標Ａ／Ｆ補正値を出力空燃比に対応する値まで徐々に戻す。
【００７１】
以上のように、補正係数学習部１４０は、学習開始時に、酸素センサ２８の出力信号ＶＳがリッチセンサ電圧判定閾値以上である場合、目標Ａ／Ｆ補正値を出力空燃比に対応する値から理論空燃比に対応する値まで徐々に減少させて行く減少機能と、目標Ａ／Ｆ補正値が理論空燃比に対応する値に到達したタイミングでO2FF補正係数を徐々に減少させて行き、ＶＳがセンサ電圧判定閾値以下となった時点でO2FF補正係数の減少を停止させ、この減少停止時点のO2FF補正係数で、その時点までのO2FF補正係数を更新して記憶する学習機能と、この更新に応答して目標Ａ／Ｆ補正値を出力理論比に対応する値まで戻す復帰機能と、を備えている。
【００７２】
動作例１によれば、最初リッチ状態であるため、O2FF補正係数を減少させてくが、酸素センサ２８の出力信号ＶＳがセンサ電圧判定閾値以下となると、空気が薄希なリーン状態になったと判断して、O2FF補正係数の減少を停止させる。この結果、低地から空気の希薄な高地まで走行したとしても、図９下段のＡ／Ｆ値の予想推移結果に示すように、空燃比「Ａ／Ｆ」が出力空燃比「１２．５」以上を維持できる。
【００７３】
（動作例２）
図１０は、「動作例２」を説明するタイミングチャートである。「動作例２」は、例えば、僅かに高地から低地に走行して空気が薄くなった場合などの動作例である。目標Ａ／Ｆ補正値の初期値を出力空燃比に対応する値に設定する。次に、目標Ａ／Ｆ補正値の値を徐々に基準値まで減少させる。動作例１と同様に、基準値は、目標Ａ／Ｆ補正値が理論空燃比に対応する値である。目標Ａ／Ｆ補正値の値を出力空燃比に対応する値から理論空燃比に対応する値まで徐々に減少させて行き、その値が理論空燃比に対応する値になると減少を停止するのであるが、基準値まで減少させる前に、リッチ状態からリーン状態となる。
【００７４】
この場合、酸素センサ２８の出力信号ＶＳがセンサ電圧判定閾値以下になった時点、即ち、リーン状態になった時点で目標Ａ／Ｆ補正値の増加を中止して、目標Ａ／Ｆ補正値の基準値とその時点の変数ＡＦＨの値との差分の値だけO2FF補正係数の値を増加させる。O2FF補正係数の値を増加させる前のO2FF補正係数の初期値は、前回の学習結果の値である。そして、この時のO2FF補正係数の値で、この時点までの値を更新して記憶保持する。かくして、O2FF補正係数の学習が行われる。
【００７５】
また、図１０に示すように、O2FF補正係数の前回学習値からの増加量は、目標Ａ／Ｆ補正値の基準値と減少工程中止時の目標Ａ／Ｆ補正値との差分に対応する値である。これにより、空気が濃くなった分の燃料噴射量をO2FF補正係数で稼いで、出力空燃比を維持することができる。
【００７６】
以上のように、補正係数学習部１４０は、目標Ａ／Ｆ補正値の減少過程において、ＶＳがセンサ電圧判定閾値以下となった場合、目標Ａ／Ｆ補正値の増加を停止して、目標Ａ／Ｆ補正値の基準値とその時点の変数ＡＦＨの値との差分の値だけ増加させたO2FF補正係数で、その時点までのO2FF補正係数を更新し、目標Ａ／Ｆ補正値を出力理論比まで戻す機能を有する。
【００７７】
動作例２によれば、僅かに高地から低地に走行して空気が濃くなった場合にあっても、O2FF補正係数を増加させることで、図１０の下段に示すように、空燃比「Ａ／Ｆ」の値が出力空燃比「１２．５」以上となるのを維持することができる。
【００７８】
（動作例３）
図１１は、「動作例３」を説明するタイミングチャートである。「動作例３」は、高地から低地へ走行し、空気の希薄化が解消された場合の動作例である。この場合は、最初から空気が濃いので、学習開始当初からリーン状態となる。まず、目標Ａ／Ｆ補正値の初期値を出力空燃比に対応する値に設定する。最初に、酸素センサ２８の出力信号ＶＳがリーンセンサ電圧判定閾値以下であることを確認して、目標Ａ／Ｆ補正値を徐々に基準値まで減少させるとともに、O2FF補正係数の値を徐々に増加させる。目標Ａ／Ｆ補正値が基準値に到達するとその減少を停止させる。O2FF補正係数の初期値は、前回までの学習値である。
【００７９】
そして、ＶＳがセンサ電圧判定閾値以上となった時点、即ち、リッチ状態になった時点でO2FF補正係数の増加を停止して、その時のO2FF補正係数で、この時点までのO2FF補正係数の値を更新して記憶保持する。かくして、O2FF補正係数の学習が実行される。そして、O2FF補正係数の更新に応答して、目標Ａ／Ｆ補正値を出力空燃比に対応する値まで徐々に戻す。
【００８０】
以上のように、補正係数学習部１４０は、学習開始時に、酸素センサ２８の出力電圧ＶＳがリーンセンサ電圧判定閾値以下である場合、目標Ａ／Ｆ補正値を出力空燃比に対応する値から理論空燃比に対応する値まで徐々に増加させるとともに、O2FF補正係数を徐々に減少させる制御機能と、ＶＳがセンサ電圧判定閾値以上となった時点でO2FF補正係数の増加を停止し、その時点のO2FF補正係数で、その時点までのO2FF補正係数を更新する学習機能と、この更新に応答して目標Ａ／Ｆ補正値を理論空燃比に対応する値まで戻す復帰機能とを備えている。
【００８１】
動作例３によれば、空気が希薄な高地から低地へ高度が変化する走行においても、O2FF補正係数を最初から増加させ、リッチ状態に移行した時点でO2FF補正係数の増加を停止するので、図１１の下段に示すように空燃比「Ａ／Ｆ」は、出力空燃比「１２．５」を維持することができる。
【００８２】
（動作例４）
図１２は、「動作例４」を示すタイミングチヤートである。「動作例４」は、高地燃料補正実施条件の成立後の所定時間内において、酸素センサ２８からのセンサ出力信号（ＶＳ）がセンサ電圧判定閾値以下になることと、センサ電圧判定閾値以上になることとを繰り返す。
【００８３】
以上のように、高地燃料補正実施条件成立後の所定時間内において、理論空燃比に対して、リーン状態となることとリッチ状態になることとを、所定回数繰り返している。この場合には、補正係数学習部１５０は、第２補正係数（O2FF補正係数）を一気に所定量増加させる。これにより、非フィードバック領域での不安定な空燃比状態において燃料噴射量を一気に上昇させて、高地走行時の空燃比を安定させることができる。また、高地走行時に高地燃料補正実施条件成立が遅くなった場合に学習が不十分である時などに対応することもできる。
【００８４】
以上説明した実施形態によれば、判定部１１０は、スロットル開度、エンジン回転数、マップ１３４を参照して、現在の運転領域がフィードバック領域か否かを判定する。判定部１１０により、現在の運転領域がフィードバックであると判定された場合には、フィードバック制御部１２０は、酸素センサ２８の出力信号ＶＳに応じた実空燃比を目標空燃比に近づけるように空燃比フィードバック補正係数「O2FB係数」を算出する。
【００８５】
一方、判定部１１０により、現在の運転領域が非フィードバック領域であると判定された場合には、補正係数学習部１４０は、目標空燃比の初期値を出力空燃比として、O2FF補正係数を学習する。学習は、その時点までのO2FF補正係数の更新を行い記憶保持することにより実行され、次回のO2FF係数の初期値は、前回の学習結果となる。
【００８６】
そして、燃料噴射制御部１５０は、空燃比フィードバック補正係数である「O2FB係数」と第２補正係数である「O2FF係数」と「基本噴射量」とを乗じて燃料噴射量を求める。一方、非フィードバック領域と判定された場合には、「O2FB係数」と「O2FF係数」と「基本噴射量」と定数「１．１６８（理論空燃比／出力空燃比）」とを乗じて燃料噴射量を求め、求めた燃料噴射量に応じた燃料噴射制御信号をインジェクタ４０に与える。
【００８７】
以上により、大気圧変化分を反映した第２補正係数である「O2FF係数」を導入し、酸素センサ２８の出力信号を参照しながら、O2FF係数を学習することによって、高地走行時においても燃料噴射量を適切に調整することができる。その結果、エンストの発生を防止するとともに、空気が希薄になっても出力空燃比を維持することができる。また、目標空燃比を一気に増減させずに徐々に増減させるので、ドライバビリティにも悪影響を与えない。
【００８８】
（高地燃料補正実施条件（学習開始条件））
図７、図８で説明した学習は、高地燃料補正実施条件が満たされた場合に開始される。高地燃料補正実施条件としては、（１）ＣＰＵ２００が電磁ピックアップ２２の信号に基づいて工程判別が完了した工程判別後であること、（２）燃料カットしていないこと、（３）加減速モードでないこと、（４）前回の学習から所定時間経過していること、などの総てが満たされることを条件とする。但し、高地燃料補正実施条件はこれらに限られない。
【００８９】
以上説明してきたが、本発明は、上記の実施形態に限定されるものではなく、種々の変形、変更が可能である。例えば、目標Ａ／Ｆ補正値の増減をステップ状ではなくリニアにすること、多項式で補間すること等が挙げられる。また、制御装置２００の搭載対象は２輪以外に４輪とすることも可能である。また、マップ１３４の内容も種々の変更を行うことができる。また、ステップＳ７００、Ｓ７１５においてリッチ判定閾値およびリーン判定閾値を用いてリッチ状態かリーン状態かを判定する例について説明したが、これに限られない。例えば、閾値Ｏ2ＴＨを用いてもよい。この場合、ＶＳが閾値Ｏ2ＴＨよりも大きいと判定した場合はリッチ状態であると判定し、ＶＳが閾値Ｏ2ＴＨよりも小さいと判定した場合はリーン状態であると判定する。
【産業上の利用可能性】
【００９０】
以上説明してきたように、本発明は、高地走行を頻繁に行う二輪、四輪車両などのエンジン制御に適用することができる。
【符号の説明】
【００９１】
１  エンジン
２  シリンダ
３  ピストン
２２  電磁ピックアップ
２６  スロットル開度センサ
２８  酸素センサ（Ｏ2センサ）
４０  インジェクタ
４５  点火プラグ
１００  制御装置
１１０  判定部
１２０  フィードバック制御部
１３０  記憶部
１３２  プログラム
１３４  マップ
１３６  不揮発性記憶エリア
１４０  燃料噴射制御部
１５０  補正係数学習部
１６０  点火制御部
【図１】
2018204576.tif 000003
【図２】
2018204576.tif 000004
【図３】
2018204576.tif 000005
【図４】
2018204576.tif 000006
【図５】
2018204576.tif 000007
【図６】
2018204576.tif 000008
【図７】
2018204576.tif 000009
【図８】
2018204576.tif 000010
【図９】
2018204576.tif 000011
【図１０】
2018204576.tif 000012
【図１１】
2018204576.tif 000013
【図１２】
2018204576.tif 000014