(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1、特許文献2に記載の従来技術によれば、O
2フィードバック領域では、O
2センサで検出した酸素濃度に基づいて、目標空燃比に近づけるようにO
2フィードバック制御を行っているが、O
2フィードバック領域以外の領域である非フィードバック領域においては、フィードバック補正係数を「1.0」に固定してフィードバック制御を行わない。
【0007】
しかし、高地走行時では空気が薄くなるところ、スロットル開度量を多くすることなどが行われる非フィードバック領域での走行において、フィードバック制御が行われない場合には、エンスト等の不具合が発生して安定な走行を行えない可能性がある。また、特許文献2に記載の装置によれば、学習補正係数の基準値を高度に応じて複数モード分、定めておき、アクセルグリップの特定操作パターンに応じて選択したモードの基準値を、それまでの学習値で置き換えるだけなので、高度に応じて細やかな空燃比制御を行うことは想定されていない。
【0008】
本発明は、かかる従来の課題を解決するためになされたもので、空気が希薄な高地であっても、出力空燃比を維持した安定な走行を可能とするエンジン制御装置、および、エンジン制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
上記目的を達成するために、本発明のエンジン制御装置は、酸素センサで実測される実空燃比を目標空燃比に漸近させるフィードバック補正係数を算出可能なエンジン制御装置であって、
現在の運転領域がフィードバック領域以外の非フィードバック領域の場合、フィードバック補正係数とともに燃料噴射量を補正するための燃料噴射量補正係数である第2補正係数を学習する補正係数学習部と、
基本噴射量とフィードバック補正係数と第2補正係数とに基づいて、燃料噴射量を求めて対応する燃料噴射制御信号を燃料噴射装置に与える燃料噴射制御部と、を備え、
補正係数学習部は、
学習開始時の前記酸素センサの出力信号に応じて前記第2補正係数を変更制御し、
出力信号が理論空燃比に対応する閾値を跨いだ時点の第2補正係数で、それ以前の前記第2補正係数を更新して記憶する構成である。
【0010】
現在の運転領域がフィードバック領域か否かを判定する判定部と、
前記フィードバック領域と判定された場合、前記フィードバック補正係数を算出するフィードバック制御部と、を備えたエンジン制御装置としても良い。
【0011】
より詳細には、燃料噴射制御部は、
フィードバック領域と判定された場合には、フィードバック補正係数と前記第2補正係数の加算結果に前記基本噴射量を乗じて燃料噴射量を求める一方、
非フィードバック領域と判定された場合には、フィードバック補正係数と第2補正係数とを加算した加算結果に、基本噴射量と予め設定した定数とを乗じて燃料噴射量を求める構成である。予め設定した定数は、例えば、理論空燃比を出力空燃比で除した定数「1.168」である。
【0012】
また、補正係数学習部は、
学習開始時に、酸素センサの出力信号に基づいて理論空燃比に対してリッチ状態であると判定した場合、目標空燃比に対応する補正量である目標A/F補正値を出力空燃比に対応する値から理論空燃比に対応する値まで徐々に減少させる減少機能と、
目標A/F補正値が理論空燃比に対応する値に到達した時点から、第2補正係数を徐々に減少させ、出力信号が閾値以下となった時点で第2補正係数の減少を停止させ、減少停止時点の第2補正係数で、その時点までの第2補正係数を更新して記憶する学習機能と、
第2補正係数の記憶後に、目標A/F補正値を出力空燃比に対応する値まで戻す復帰機能と、を含んで成る。
【0013】
また、他の動作態様による学習機能は、
減少機能による目標A/F補正値の減少過程において、出力信号が閾値以下となった場合、減少機能を停止して、減少機能の停止時における目標A/F補正値と、理論空燃比に対応する値との差分に対応する量だけ第2補正係数を増加させ、
増加後の第2補正係数で、その時点までの第2補正係数を更新して記憶する構成とするのが好ましい。
【0014】
また、他の動作態様によれば、補正係数学習部は、
学習開始時に、酸素センサの出力信号に基づいて理論空燃比に対してリーン状態であると判定した場合、目標空燃比に対応する補正量である目標A/F補正値を出力空燃比に対応する値から理論空燃比に対応する値まで徐々に減少させるとともに、第2補正係数を徐々に増加させる制御機能と、
前記制御機能により出力信号が閾値以上となった時点の第2補正係数で、その時点までの第2補正係数を更新して記憶する学習機能と、
目標A/F補正値を出力空燃比に対応する値まで戻す復帰機能と、を含んで成る構成である。
【0015】
さらに他の動作態様によれば、補正係数学習部は、
学習開始から所定時間内に、酸素センサの出力信号が閾値を跨ぐことを所定数回繰り返した場合、第2補正係数を所定値だけ増加させる補正係数増加機能をさらに備えた構成である。
【0016】
本発明のエンジン制御プログラムは、酸素センサで実測される実空燃比を目標空燃比に漸近させるフィードバック補正係数を算出可能なエンジン制御装置を動作させるプログラムであって、
現在の運転領域がフィードバック領域以外の非フィードバック領域の場合、フィードバック補正係数とともに燃料噴射量を補正するための第2補正係数を学習する補正係数学習処理と、
基本噴射量とフィードバック補正係数と第2補正係数とに基づいて、燃料噴射量を求めて対応する燃料噴射制御信号を燃料噴射装置に与える燃料噴射制御処理と、をコンピュータに実行させるためのプログラムであり、
補正係数学習処理は、
学習開始時の前記酸素センサの出力信号に応じて第2補正係数を変更制御し、出力信号が理論空燃比に対応する閾値を跨いだ時点の第2補正係数で、それ以前の前記第2補正係数を更新して記憶するエンジン制御プログラムである。
【発明の効果】
【0017】
本発明によれば、空気が希薄な高地であっても、出力空燃比を維持した安定走行を可能にすることができるという効果が得られる。
【発明を実施するための形態】
【0019】
以下、本発明の実施の形態について図面を参照しつつ説明する。なお、以下に説明する本発明の実施形態は一例であり、本発明は、この実施形態に限定されず、本実施形態の構成例、情報例等に関して種々の変形、変更等が可能である。以下では、エンジン出力が最大となる出力空燃比を「12.5」、理論空燃比(ストイキオメトリ)を「14.6」としている。
【0020】
(エンジン1の概要)
図1は、エンジン1および制御装置100を含む制御システムの模式的な構成図である。エンジン1は、シリンダ2と、シリンダ2の内部で上下方向に摺動可能に嵌合されたピストン3とを有する。ピストン3には、コンロッド4の一端側が接続されているとともに、コンロッド4の他端側は、クランクシャフト5に連結されている。クランクシャフト5の変速機(不図示)側の端部には、フライホイール7が回転可能に固定されている。フライホイール7の外周の所定の角度領域には、磁性体でなるリラクタ(突起)20が形成されている。
【0021】
リラクタ20に対向して配置される電磁ピックアップ22は、リラクタ20が近づく時には正電圧のパルスを出力するとともに、リラクタ20が遠ざかる時には負電圧のパルスを出力する。公知の波形整形回路により、正負両極パルス信号に基づいて1個の矩形パルスが出力されるように波形整形すると、フライホイール7が1回転する毎に矩形パルスが1パルス出力される。よって、「吸気→圧縮→燃焼→排気→吸気」の1サイクルにおいて、クランクシャフト5が720°回転するので、電磁ピックアップ22から1サイクルで2パルスの矩形信号(エンジン回転信号)が出力される。
【0022】
電磁ピックアップ22からのエンジン回転信号に基づいて、エンジン1の回転数を求めることができる。また、フライホイール7の外周上におけるリラクタ20の形成位置を適宜の角度領域とし、電磁ピックアップ22から信号に基づいて、点火プラグ45に点火制御信号を与えて燃料点火するタイミングを所望のタイミングとすることができる。
【0023】
また、シリンダ2の上部のシリンダヘッドには、吸気管50と排気管60とが接続されている。吸気管50の内部は、外部から燃焼室70内に新気を取り込むための吸気通路51が形成される。また、吸気通路51には、上流側から、新気の塵等を除去するためのエアクリーナ32、新気の吸入量を調整するためのスロットル弁24、燃料噴射を行うためのインジェクタ40が配置されている。そして、新気を燃焼室70内へ取り込むタイミングは、不図示のスプリングで閉弁方向に付勢される吸気弁12の開弁・閉弁動作によって制御される。
【0024】
点火プラグ45は、その先端が燃焼室内を臨む姿勢でシリンダヘッドの頂部に配置されている。また、スロットル弁の開度を検出するスロットル開度センサ26が設けられている。なお、図示はしないが、インジェクタ40には、燃料タンクに貯留された燃料が供給ホースを介して供給される一方、余剰燃料が回収ホースを介して燃料タンクに回収され、インジェクタ40には、常時、所定圧に加圧された燃料が供給されている。
【0025】
一方、排気管60の内部は、燃焼室70からの排気を排出するための排気通路61が形成されている。排気通路61の下流位置には、排気を浄化する触媒装置30が配置され、触媒装置30の上流側には、排気中に残存する酸素の濃度を検出する酸素センサ28が設けられている。触媒装置30で排気の浄化を行った後に消音器で消音を行う構成とすることもできる。そして、排気の燃焼室70内からの排出タイミングは、不図示のスプリングで閉弁方向に付勢される排気弁10の開弁・閉弁動作によって制御される。
【0026】
図6は、酸素センサ28(「O
2センサ」とも記す)の出力特性の説明図である。
図6の横軸が伸びる方向は、空燃比大方向であり、縦軸は、酸素センサ出力信号(VS)である。空燃比が大きくなるに従って、酸素センサ出力信号(VS)は小さくなって行き、酸素センサ出力信号(VS)がリッチ判定閾値以上になる場合にはリッチ状態と判定される一方、酸素センサ出力信号(VS)がリーン判定閾値以下である場合には、リーン状態と判定される。空燃比が理論空燃比である「14.6」近傍で酸素センサ28の出力信号(VS)が急激に変化する。以上より、酸素センサ出力信号(VS)は空燃比に応じて変化するので、VSを取得することによって実空燃比を検出することができる。
【0027】
また、VSを検出することにより、理論空燃比に対し、リッチ状態にあるのか、あるいは、リーン状態にあるのかを判定することができる。理論空燃比近傍でVSが急激に変化するので、理論空燃に対してリッチ、リーンを判定する精度は良い。
【0028】
エンジン1の動作を制御する制御装置100には、スロットル開度センサ26、電磁ピックアップ22、および、酸素センサ28の出力が入力される。スロットル開度センサ26からは、スロットル弁の開度を示すスロットル開度信号が出力され、また、電磁ピックアップ22からは、上記したエンジン回転に応じた矩形パルス信号が出力される。そして、O
2センサ28からは、排気ガス中に残存する酸素の濃度を示すO
2センサ出力信号が出力される。一方、制御装置100からは、インジェクタ40を駆動制御するための燃料噴射制御信号、および、点火プラグ45を点火制御するための点火制御信号が出力される。
【0029】
制御装置100は、スロットル開度信号、エンジン回転、および、O
2センサ出力信号等に基づいて、インジェクタ40による燃料噴射制御(噴射量、噴射時期)と点火プラグ45による点火時期制御等を行う。そして、シリンダ2内でのピストン1の上下方向の往復運動が、クランクシャフト5の回転運動に変換される。クランクシャフト5の回転運動は、不図示の変速機を介して駆動輪に伝達され、「吸気→圧縮→燃焼→排気」の行程を繰り返すことにより、車両(二輪、四輪)が前進する。
【0030】
なお、
図1は、エンジン1および制御装置100の構成の一例であり、例えば、制御装置100は、スロットル開度信号、エンジン回転、および、O
2センサ出力信号の他にエンジン1の吸気温度、冷却水温度などを参照して、エンジン1の制御を行うようにすることもできる。つまり、ドライバビリティを向上させるため、センサの種類を増やして空燃比補正係数等のエンジンパラメータを算出することも可能である。また、単気筒で4サイクルの工程を有するエンジン1を想定しているが、気筒数やシリンダ配列態様は、適宜のものを採用し得る。
【0031】
(制御装置100の機能構成)
図2は、制御装置100の機能構成図である。制御装置100は、判定部110、フィードバック制御部120、記憶部130、補正係数学習部140、燃料噴射制御部150、および、点火制御部160を有する。記憶部130は、プログラム132、マップ134、不揮発性記憶エリア136、および、ワークエリア138を有する。各機能は、プログラム132を実行することにより一連の制御が実現できる。ワークエリア138は演算過程等で補正係数等のパラメータ等を一時的に記憶するための一時記憶領域であり、また、不揮発性記憶エリア136は、フィードバック補正係数、第2補正係数等のパラメータを不揮発的に記憶するための記憶領域である。
【0032】
図4はマップ134の説明図である。横軸はエンジン回転数(rpm)、縦軸はスロットル開度(%)である。エンジン回転数がNEH(rpm)未満、かつ、スロットル開度がTHH(%)未満の領域は、フィードバック領域である。一方、エンジン回転数がNEH(rpm)以上、または、スロットル開度がTHH(%)以上の領域は、フィードバック領域以外の領域である非フィードバック領域である。つまり、全運転状態を示すマップ134は、フィードバック領域と非フィードバック領域とで成っている。なお、
図4は、運転マップの一例であり、領域の境界線は直線でなくても良いし、フィードバック領域は必ずしも四角形状でなくても良く、境界線上ではヒステリシスを持たせても良い。
【0033】
図2に戻って説明を続ける。判定部110は、スロットル開度センサ26によるスロットル開度の検出値に応じたスロットル検出信号と、電磁ピックアップ22によるエンジン回転検出に応じたエンジン回転検出信号とに基づき、記憶部130に記憶されたマップ134を参照して、現在の運転領域がフィードバック領域であるか、これ以外の領域である非フィードバック領域であるかなどを判定する。具体的には、スロットル開度センサ26、電磁ピックアップ22のそれぞれから、スロットル開度、エンジン回転の情報を取得し、
図4のマップ134を参照して、エンジン回転数がNEH(rpm)未満、かつ、スロットル開度がTHH(%)未満の場合には、現在の運転領域が、フィードバック領域であると判定し、一方、これ以外の場合には、現在の運転領域が非フィードバック領域であると判定する。
【0034】
フィードバック制御部120は、実空燃比に応じた出力信号を出力する酸素センサ26の出力信号VSに応じた実空燃比と、目標空燃比(目標A/F値とも称する)との制御偏差を求め、求めた制御偏差が零となるように、空燃比フィードバック補正係数(以下、「O2FB補正係数」という)を求める機能を有する。目標空燃比は、例えば、記憶部130に記憶されているプログラム132により参照すべきとされる、不揮発性記憶エリア136の特定アドレスに記憶されている。フィードバック制御部120は、これを参照して目標空燃比を認識する。この目標空燃比は、後述する燃料噴射量を所望値とする値である。フィードバック制御部120は、算出したO2FB補正係数を読み出し可能に、不揮発性記憶エリア136に更新して記憶保持する。
【0035】
補正係数学習部140は、目標空燃比の初期値を出力空燃比として、酸素センサ26のセンサ出力信号VS等に基づいて、O2FB補正係数とは異なる第2の補正係数である第2補正係数(以下、O2FF補正係数という)を学習する。より具体的には、補正係数学習部140は、リアルタイムで第2補正係数を順次新たな値に更新し、記憶部130の不揮発性記憶エリア136に記憶する。この学習値を次回の制御時まで保持する。そして、不揮発性記憶エリア136に記憶保持されたO2FF補正係数は、次回の制御時に読み出されてO2FF補正係数の初期値となる。なお、学習方法の詳細は後述する。
【0036】
燃料噴射制御部150は、燃料噴射量を求めて対応する燃料噴射制御信号を燃料噴射装置に与える。つまり、燃料噴射制御部150は、燃料噴射量を求め、求めた燃料噴射量に応じた燃料噴射制御信号をインジェクタ40に与える。これにより、インジェクタ40は、燃料噴射制御信号に応じた燃料噴射量で燃料を噴射する。燃料噴射制御部150は、運転領域がフィードバック領域の場合には、「O2FB補正係数」と「基本噴射量」とに基づいて燃料噴射量を求め、求めた燃料噴射量に応じた燃料噴射制御信号をインジェクタ40に与える。
【0037】
一方、燃料噴射制御部150は、運転領域が非フィードバック領域の場合には、「O2FB補正係数」と「O2FF補正係数」と「基本噴射量」とに基づいて燃料噴射量を求め、求めた燃料噴射量に応じた燃料噴射制御信号をインジェクタ40に与える。ここで、「FB」はフィードバックを意味し、「FF」はフィードフォワードを意味する。また、基本燃料噴射量は、燃料噴射量を算出する際のベースとなる一定の燃料噴射量である。
【0038】
具体的には、現在の運転領域がフィードバック領域の場合、燃料噴射制御部150は、「燃料噴射量=基本噴射量×100(%)×(O2FB補正係数+O2FF補正係数)」で算出される燃料噴射量に対応する燃料噴射制御信号を出力する。一方、現在の運転領域が非フィードバック領域の場合、燃料噴射制御部150は、「燃料噴射量=基本噴射量×目標A/F補正値×(O2FB補正係数+O2FF補正係数);但し、目標A/F補正値=(14.6/目標A/F値)×100(%)、目標A/F値=12.5(出力空燃比)」より、「燃料噴射量=基本噴射量×116.8(%)×(O2FB補正係数+O2FF補正係数)」で算出される燃料噴射量に対応する燃料噴射制御信号を出力する。このように、目標A/F補正値は、目標空燃比に対する空燃比補正値であり、目標空燃比(目標A/F値)に基づき定まる値である。補正係数学習部140は、目標A/F値を増減制御して目標A/F補正値を減増制御して学習を行う。
【0039】
演算上は、100(%)=1.0であるので、「フィードバック領域」の場合、「燃料噴射量=基本噴射量×1.0×(O2FB補正係数+O2FF補正係数)」となる。一方、「非フィードバック領域」の場合、「燃料噴射量=基本噴射量×1.168×(O2FB補正係数+O2FF補正係数)」となる。つまり、この「1.168」は、目標A/F補正値を出力空燃比に対応する値とするための定数であり、「理論空燃比/出力空燃比=1.168」である。
【0040】
燃料噴射制御部150は、例えば、エンジン1の行程判別完了までは圧縮行程と排気行程の各々において半分ずつ分けて燃料噴射を行い、また、行程判別完了後は排気行程で纏めて燃料噴射を行うように燃料噴射制御を行うように燃料噴射制御信号をインジェクタ40に与えるように制御する。
【0041】
点火制御部160は、電磁ピックアップ22の出力信号であるエンジン回転数信号に基づいて点火制御信号を生成して、点火プラグ45に与える。この点火制御信号を受け取った点火プラグ45は、燃焼室70内に導入された混合気を点火する。
【0042】
(ハードウエア構成図)
図5は制御装置100のハードウエア構成図である。制御装置100は、A/D変換器250、CPU200、ROM210、RAM220、フラッシュメモリ230、および、D/A変換器260を有している。A/D変換器250は、スロットル開度センサ26からのスロットル開度検出信号、電磁ピックアップ22からのエンジン回転検出信号、および、酸素センサ28からの酸素センサ出力信号をアナログ・デジタル変換した信号をCPU200に送る。
【0043】
一方、D/A変換器260は、CPU200が出力するインジェクタ40への燃料噴射制御信号、および、点火プラグ45への点火制御信号をデジタル・アナログ変換してインジェクタ40、点火プラグ45へ送る。
【0044】
CPU200は、ROM210に記録されたプログラム132を読み出し、RAM220に形成されたワークエリア138等を利用しながらプログラム132を実行する。その実行過程において、算出された補正係数等は、フラッシュメモリ230の不揮発性記憶エリア136に更新して記憶保持する。また、フラッシュメモリ230に記憶しているマップ134は、CPU200が現在の運転領域がフィードバック領域か否かを判定するために使用する。また、CPU200は自身内部のタイマ205を利用して所定時間の経過をタイムアウトにより認識する。
【0045】
CPU200あるいはDSP(Digital Signal Processor)等のプロセッサが、ROM210等の記録媒体に記録されたプログラム132を実行することによって、
図2に示した判定部110、フィードバック制御部120、補正係数学習部140、燃料噴射制御部150、および、点火制御部160を実現することができる。また、ROM210、RAM220、および、フラッシュメモリ230が、記憶部130を実現する。
【0046】
(全体動作の説明)
図3を参照して全体動作について説明する。まず、ステップS300において、判定部110は、スロットル開度センサ26からのスロットル開度検出信号の値を取得し、これをスロットル24の開度量として変数THに代入する。次に、ステップS310において、判定部110は、電磁ピックアップ22からのエンジン回転検出信号に基づき、エンジン回転数を演算し、この演算結果を変数NEに代入する。電磁ピックアップ22からのエンジン回転検出信号は、フライホイール7が1回転する毎に1パルスの矩形信号が出力されるので、例えば60秒当たりの最初のパルス信号の到来数を算出することにより、エンジン回転数を演算する。なお、エンジン回転数の算出方法はこれに限られない。
【0047】
次に、ステップS320において、判定部110は、変数TH、NE、マップ134を参照して、現在の運転領域がフィードバック領域か、これ以外の領域である非フィードバック領域かを判定する。判定部110は、横軸NE、縦軸THのマップ134上において、ステップS300、ステップS310にて代入した変数TH、変数ENに対応する2次元の位置がフィードバック領域内にプロットされる場合には、フィードバック領域であると判定し(ステップS330のYes)一方、これ以外の領域にプロットされる場合には、非フィードバック領域であると判定する(ステップS330のNo)。
【0048】
ステップS340に移行した場合には、フィードバック制御部120が、目標空燃比と実空燃比との制御偏差が零となるように、O2FB補正係数を求めて、不揮発性記憶エリア136に記憶して終了する。一方、ステップS350に移行した場合には、補正係数学習部140は、第2補正係数であるO2FF補正係数を増減制御して学習を行い終了する。学習した値は更新して記憶保持し、次回の制御実行時に読み出して使用する。以上が全体動作の概説である。
【0049】
(学習動作例)
次に、
図7、
図8を参照して学習動作例について説明する。
図7、
図8に示す学習動作は、本発明の実施形態の補正係数学習部140が行う学習動作の一例であり、これ以外の方法でO2FF補正係数を学習するようにしても良い。なお、以下の動作において、酸素センサ28の出力信号を「VS」とし、理論空燃比に対してリーン状態かリッチ状態かを判定するための閾値を「O
2TH」とする。また、目標A/F補正値に対応する変数をAFHとし、その初期値を出力空燃比に対応する値に設定する。
図7、
図8の動作は、補正係数学習部140により実行される。
【0050】
最初に、後述する高地燃料補正実施条件(学習開始条件)が成立したことに応答して、ステップS700において、リッチ状態もしくはリーン状態が継続して所定時間経過したか否かを判定する。VSがリッチ閾値以上の状態が所定時間継続された、もしくは、VSがリーン閾値以下の状態が所定時間継続されたと判定した場合には、ステップ700において「Yes」となる。この所定時間は、酸素センサ28の出力が安定するなどのために設定された時間である。所定時間経過していないと判定した場合(ステップS700のNo)、ステップS705において、VSが所定パターンで変化したか否かを判定する。所定パターンで変化していないと判定した場合(ステップS705のNo)には、ステップS700に戻って所定時間の経過判定を継続する。
【0051】
一方、変化したと判定した場合(ステップS705のYes)には、ステップS710に移行し、O2FF補正係数を所定量だけ増加して、コネクタBにブランチして学習を一旦終了する。ステップS710での動作は後に「動作例4」として説明する。
【0052】
さて、所定時間が経過したと判定した場合(ステップS700のYes)には、ステップ715で、VSがリーン判定閾値以下か否かを判定する。VSがリーン判定閾値以下であると判定した場合、即ち、リーン状態と判定した場合には、
図8のコネクタCにブランチする。
【0053】
そして、ステップS810において、目標A/F補正値(目標空燃比補正値)を示す変数AHFをΔh1だけ減少させるとともに、O2FF補正係数を示す変数O2FFをΔh4だけ増加させる。上述したように、変数AHFの初期値は出力空燃比に対応する値である。ステップS820において、変数AHFが基準値(理論空燃比に対応する値)に等しくなったか否かを判定し、等しくなったと判定した場合(ステップS820のYes)には、ステップS830に移行する。一方で、変数AHFが基準値に等しくないと判定した場合(ステップS820のNo)には、ステップS810に戻る。次いで、ステップS830において、O2FF補正係数を示す変数O2FFをΔh4だけ増加させる。次いで、ステップS840では、VSが閾値O
2THより小さいと判定した場合(ステップS840のNo)には、再度、ステップS830に戻る。一方、VSが閾値O
2TH以上であると判定した場合には(ステップS840のYes)、
図7のコネクタDにジャンプする。
【0054】
コネククDにジャンプした後、ステップS750において、変数O2FFを、不揮発性記憶エリア136に更新して記憶することにより、第2補正係数としてのO2FF補正係数の学習が実行される。学習値は、次回の制御の初期値として読み出される。次いで、ステップS755において、変数AFHを初期値まで戻すためにΔh1だけ増加させ、ステップS760において、変数AFHが出力空燃比に対応する値になったか否かを判定する。
【0055】
ステップS760において、変数AFHが出力空燃比に対応する値になっていないと判定した場合(ステップS760のNo)には、ステップS755に戻って、再度、変数AHFの増加を行う。一方、変数AFHが出力空燃比に対応する値に等しくなったと判定した場合(ステップS760のYes)には、制御を一旦終了する。
【0056】
ステップS700、S715、S810、S820、S750、S755、S760の一連の処理は後に示す「動作例3」に対応する。つまり、所定時間経過後の学習開始時に、酸素センサ28の出力信号VSがリーン判定閾値以下である場合、目標A/F補正値を出力空燃比に対応する値から理論空燃比に対応する値まで徐々に減少させるとともに、O2FF補正係数を徐々に増加させる。目標A/F補正値が基準値となった時、目標A/F補正値の減少を停止してO2FF補正係数を徐々に増加させる。
【0057】
そして、VSが閾値O
2TH以上となった時点のO2FF補正係数で、その時点までのO2FF補正係数を更新する学習を行い、目標A/F補正値を出力空燃比に対応する値まで戻す。
【0058】
さて、ステップS715において、VSがリーン判定閾値より大きいと判定された場合(ステップS715のNo)、つまり、リッチ状態の場合には、ステップS720に進んで、変数AFHをΔh1だけ減少させる。ステップS700の判定結果も考慮して言い換えると、VSがリッチ判定閾値以上であると判定した場合、ステップS720に進んで、変数AFHをΔh1だけ減少させる。次に、ステップS730において、VSが閾値O
2TH以下か否かを判定し、VSが閾値O
2TH以下と判定した場合(ステップS730のYes)には、ステップS765に移行する。
【0059】
一方、ステップS730において、VSが閾値O
2THより大きいと判定された場合(ステップS730のNo)には、ステップS735において、変数AFHが基準値(理論空燃比に対応する値)に等しくなったか否かを判定し、等しくなったと判定した場合(ステップS735のYes)には、ステップS740に移行する。一方で、変数AFHの値が基準値に等しくないと判定した場合(ステップS735のNo)には、ステップS720まで戻り、変数AFHの減少処理を繰り返す。
【0060】
つまり、VSが閾値O
2THよりも大きい場合(ステップS730のNo)には、変数AFHの値を基準値になるまで減少させる。一方、変数AFHの減少過程において、VSが閾値O
2TH以下となったと判定した場合(ステップS730のYes)には、ステップS765に移行する。そして、ステップS765では、ステップS765では、目標A/F補正値の基準値とその時点の変数AFHの値との差分の値Δh3だけ、変数O2FFを増加させる。
【0061】
次いで、ステップS750に移行して、O2FF補正係数を示す変数O2FFを不揮発性記憶エリア136に更新して記憶保持することにより、O2FF補正係数の学習を実行する。学習値は、次回の制御の初期値として読み出される。次いで、ステップS755に移行して、変数AFHを戻すためにΔh1だけ増加させ、ステップS760において、変数AFHが初期値、即ち、出力空燃比に対応する値に等しくなったか否かを判定する。ステップ760において、変数AFHが出力空燃比に対応する値に等しくなっていないと判定した場合(ステップS760のNo)には、ステップS755に戻る。一方、変数AFHが出力空燃比に対応する値に等しくなったと判定した場合(ステップS760のYes)には、制御を一旦終了する。
【0062】
ステップS700、S715、S720、ステップS765、S750、S755、S760の一連の処理は、後に説明する「動作例2」に対応する。つまり、ステップS700、S715、S720、S730、S765において、所定時間経過後の学習開始時に、酸素センサ28の出力信号VSがリッチ判定閾値以上である場合において、目標A/F補正値の減少過程においてVSが設定閾値O
2TH以下となった時、目標A/F補正値の減少を停止して、目標A/F補正値の基準値とその時点の変数AFHの値との差分の値だけ変数O2FFを増加させる。そして、その時点のO2FF補正係数で、その時点までのO2FF補正係数を更新して記憶保持する学習を行い、目標A/F補正値を出力理論比まで戻す。
【0063】
さて、ステップS735のYesから、ステップS740に移行した場合には、変数O2FFの値をΔh2だけ減少させ、ステップS745において、VSが、閾値O
2TH以下か否かを判定する。VSが閾値O
2TH以下であると判定した場合(ステップS745のYes)には、ステップS750に移行する。一方、VSが閾値O
2THより大きいと判定した場合(ステップS745のNo)には、ステップ740に戻って、変数O2FFをΔh2だけ減少させる。
【0064】
ステップS750では、変数O2FFを、不揮発性記憶エリア136に更新して記憶保持することにより、第2補正係数としてのO2FF補正係数を学習する。学習値は、次回の制御の初期値として読み出される。
【0065】
次いで、ステップS755において、変数AFHを初期値まで戻すために、Δh1だけ増加させ、ステップS760において、変数AFHが初期値、即ち、出力空燃比に対応する値に等しくなっているか否かを判定する。ステップS760において、変数AFHが出力空燃比に対応する値に等しくなっていないと判定した場合(ステップS760のNo)には、ステップS755に戻る。一方、変数AFHが出力空燃比に対応する値に等しくなったと判定した場合(ステップS760のYes)には、制御を一旦終了する。
【0066】
ステップS700、S715、S720、S730、S735、S740、S745、S750、S755、S760の一連の処理は、後に説明する「動作例1」に対応する。つまり、ステップS700、S715において、所定時間経過後の学習開始時に、酸素センサの出力信号VSがリッチ判定閾値以上であると判定した場合、ステップS720、S730、S735において、目標A/F補正値を出力空燃比に対応する値から理論空燃比に対応する値まで徐々に減少させる。
【0067】
そして、ステップS740、S745、S750において、O2FF補正係数を徐々に減少させて行き、酸素センサ28の出力信号が閾値O
2TH以下となった時点のO2FF補正係数で、その時点までのO2FF補正係数を更新して記憶保持する学習を行い、ステップS755、S760において、目標A/F補正値を出力空燃比に対応する値まで戻す。なお、上述した変数AFHの増減分Δh1、変数O2FFの減少分Δh2、増加分h3、h4等は適宜の値を設定し得る。
【0068】
(動作例1〜動作例4)
次に、
図9乃至
図12を参照して、動作例1から動作例4について説明する。
図9乃至
図12は、横軸が時間に設定してある。また、
図9乃至
図12において、「センサ電圧判定閾値」は、酸素センサ28の出力電圧VSを参照し、理論空燃比に対してリッチ状態であるかリーン状態であるのかを判定するために設定した設定閾値である。
【0069】
(動作例1)
図9は、「動作例1」を説明するタイミングチャートである。「動作例1」は、低地から高地へ走行して空気が薄くなった場合の動作である。目標A/F補正値の初期値を出力空燃比に対応する値に設定する。次に、目標A/F補正値を徐々に基準値まで減少させる。基準値は、目標A/F補正値が理論空燃比に対応する値である。目標A/F補正値を出力空燃比に対応する値から理論空燃比に対応する値まで徐々に減少させて行き、その値が理論空燃比に対応する値になると減少を停止する。
【0070】
目標A/F補正値の減少を停止すると、酸素センサ28の出力信号VSが、リッチセンサ電圧判定閾値以上のリッチ状態であることを確認して、O2FF補正係数の値を徐々に減少させる。O2FF補正係数の初期値は、前回の学習結果の値である。そして、VSが、センサ電圧判定閾値以下になった時、即ち、リーン状態になった時、O2FF補正係数の値の減少を停止し、この時のO2FF補正係数の値で、この時点までの値を更新して記憶保持する。かくして、O2FF補正係数の学習が行われる。そして、O2FF補正係数の更新に応答して目標A/F補正値を出力空燃比に対応する値まで徐々に戻す。
【0071】
以上のように、補正係数学習部140は、学習開始時に、酸素センサ28の出力信号VSがリッチセンサ電圧判定閾値以上である場合、目標A/F補正値を出力空燃比に対応する値から理論空燃比に対応する値まで徐々に減少させて行く減少機能と、目標A/F補正値が理論空燃比に対応する値に到達したタイミングでO2FF補正係数を徐々に減少させて行き、VSがセンサ電圧判定閾値以下となった時点でO2FF補正係数の減少を停止させ、この減少停止時点のO2FF補正係数で、その時点までのO2FF補正係数を更新して記憶する学習機能と、この更新に応答して目標A/F補正値を出力理論比に対応する値まで戻す復帰機能と、を備えている。
【0072】
動作例1によれば、最初リッチ状態であるため、O2FF補正係数を減少させてくが、酸素センサ28の出力信号VSがセンサ電圧判定閾値以下となると、空気が薄希なリーン状態になったと判断して、O2FF補正係数の減少を停止させる。この結果、低地から空気の希薄な高地まで走行したとしても、
図9下段のA/F値の予想推移結果に示すように、空燃比「A/F」が出力空燃比「12.5」以上を維持できる。
【0073】
(動作例2)
図10は、「動作例2」を説明するタイミングチャートである。「動作例2」は、例えば、僅かに高地から低地に走行して空気が薄くなった場合などの動作例である。目標A/F補正値の初期値を出力空燃比に対応する値に設定する。次に、目標A/F補正値の値を徐々に基準値まで減少させる。動作例1と同様に、基準値は、目標A/F補正値が理論空燃比に対応する値である。目標A/F補正値の値を出力空燃比に対応する値から理論空燃比に対応する値まで徐々に減少させて行き、その値が理論空燃比に対応する値になると減少を停止するのであるが、基準値まで減少させる前に、リッチ状態からリーン状態となる。
【0074】
この場合、酸素センサ28の出力信号VSがセンサ電圧判定閾値以下になった時点、即ち、リーン状態になった時点で目標A/F補正値の増加を中止して、目標A/F補正値の基準値とその時点の変数AFHの値との差分の値だけO2FF補正係数の値を増加させる。O2FF補正係数の値を増加させる前のO2FF補正係数の初期値は、前回の学習結果の値である。そして、この時のO2FF補正係数の値で、この時点までの値を更新して記憶保持する。かくして、O2FF補正係数の学習が行われる。
【0075】
また、
図10に示すように、O2FF補正係数の前回学習値からの増加量は、目標A/F補正値の基準値と減少工程中止時の目標A/F補正値との差分に対応する値である。これにより、空気が濃くなった分の燃料噴射量をO2FF補正係数で稼いで、出力空燃比を維持することができる。
【0076】
以上のように、補正係数学習部140は、目標A/F補正値の減少過程において、VSがセンサ電圧判定閾値以下となった場合、目標A/F補正値の増加を停止して、目標A/F補正値の基準値とその時点の変数AFHの値との差分の値だけ増加させたO2FF補正係数で、その時点までのO2FF補正係数を更新し、目標A/F補正値を出力理論比まで戻す機能を有する。
【0077】
動作例2によれば、僅かに高地から低地に走行して空気が濃くなった場合にあっても、O2FF補正係数を増加させることで、
図10の下段に示すように、空燃比「A/F」の値が出力空燃比「12.5」以上となるのを維持することができる。
【0078】
(動作例3)
図11は、「動作例3」を説明するタイミングチャートである。「動作例3」は、高地から低地へ走行し、空気の希薄化が解消された場合の動作例である。この場合は、最初から空気が濃いので、学習開始当初からリーン状態となる。まず、目標A/F補正値の初期値を出力空燃比に対応する値に設定する。最初に、酸素センサ28の出力信号VSがリーンセンサ電圧判定閾値以下であることを確認して、目標A/F補正値を徐々に基準値まで減少させるとともに、O2FF補正係数の値を徐々に増加させる。目標A/F補正値が基準値に到達するとその減少を停止させる。O2FF補正係数の初期値は、前回までの学習値である。
【0079】
そして、VSがセンサ電圧判定閾値以上となった時点、即ち、リッチ状態になった時点でO2FF補正係数の増加を停止して、その時のO2FF補正係数で、この時点までのO2FF補正係数の値を更新して記憶保持する。かくして、O2FF補正係数の学習が実行される。そして、O2FF補正係数の更新に応答して、目標A/F補正値を出力空燃比に対応する値まで徐々に戻す。
【0080】
以上のように、補正係数学習部140は、学習開始時に、酸素センサ28の出力電圧VSがリーンセンサ電圧判定閾値以下である場合、目標A/F補正値を出力空燃比に対応する値から理論空燃比に対応する値まで徐々に増加させるとともに、O2FF補正係数を徐々に減少させる制御機能と、VSがセンサ電圧判定閾値以上となった時点でO2FF補正係数の増加を停止し、その時点のO2FF補正係数で、その時点までのO2FF補正係数を更新する学習機能と、この更新に応答して目標A/F補正値を理論空燃比に対応する値まで戻す復帰機能とを備えている。
【0081】
動作例3によれば、空気が希薄な高地から低地へ高度が変化する走行においても、O2FF補正係数を最初から増加させ、リッチ状態に移行した時点でO2FF補正係数の増加を停止するので、
図11の下段に示すように空燃比「A/F」は、出力空燃比「12.5」を維持することができる。
【0082】
(動作例4)
図12は、「動作例4」を示すタイミングチヤートである。「動作例4」は、高地燃料補正実施条件の成立後の所定時間内において、酸素センサ28からのセンサ出力信号(VS)がセンサ電圧判定閾値以下になることと、センサ電圧判定閾値以上になることとを繰り返す。
【0083】
以上のように、高地燃料補正実施条件成立後の所定時間内において、理論空燃比に対して、リーン状態となることとリッチ状態になることとを、所定回数繰り返している。この場合には、補正係数学習部150は、第2補正係数(O2FF補正係数)を一気に所定量増加させる。これにより、非フィードバック領域での不安定な空燃比状態において燃料噴射量を一気に上昇させて、高地走行時の空燃比を安定させることができる。また、高地走行時に高地燃料補正実施条件成立が遅くなった場合に学習が不十分である時などに対応することもできる。
【0084】
以上説明した実施形態によれば、判定部110は、スロットル開度、エンジン回転数、マップ134を参照して、現在の運転領域がフィードバック領域か否かを判定する。判定部110により、現在の運転領域がフィードバックであると判定された場合には、フィードバック制御部120は、酸素センサ28の出力信号VSに応じた実空燃比を目標空燃比に近づけるように空燃比フィードバック補正係数「O2FB係数」を算出する。
【0085】
一方、判定部110により、現在の運転領域が非フィードバック領域であると判定された場合には、補正係数学習部140は、目標空燃比の初期値を出力空燃比として、O2FF補正係数を学習する。学習は、その時点までのO2FF補正係数の更新を行い記憶保持することにより実行され、次回のO2FF係数の初期値は、前回の学習結果となる。
【0086】
そして、燃料噴射制御部150は、空燃比フィードバック補正係数である「O2FB係数」と第2補正係数である「O2FF係数」と「基本噴射量」とを乗じて燃料噴射量を求める。一方、非フィードバック領域と判定された場合には、「O2FB係数」と「O2FF係数」と「基本噴射量」と定数「1.168(理論空燃比/出力空燃比)」とを乗じて燃料噴射量を求め、求めた燃料噴射量に応じた燃料噴射制御信号をインジェクタ40に与える。
【0087】
以上により、大気圧変化分を反映した第2補正係数である「O2FF係数」を導入し、酸素センサ28の出力信号を参照しながら、O2FF係数を学習することによって、高地走行時においても燃料噴射量を適切に調整することができる。その結果、エンストの発生を防止するとともに、空気が希薄になっても出力空燃比を維持することができる。また、目標空燃比を一気に増減させずに徐々に増減させるので、ドライバビリティにも悪影響を与えない。
【0088】
(高地燃料補正実施条件(学習開始条件))
図7、
図8で説明した学習は、高地燃料補正実施条件が満たされた場合に開始される。高地燃料補正実施条件としては、(1)CPU200が電磁ピックアップ22の信号に基づいて工程判別が完了した工程判別後であること、(2)燃料カットしていないこと、(3)加減速モードでないこと、(4)前回の学習から所定時間経過していること、などの総てが満たされることを条件とする。但し、高地燃料補正実施条件はこれらに限られない。
【0089】
以上説明してきたが、本発明は、上記の実施形態に限定されるものではなく、種々の変形、変更が可能である。例えば、目標A/F補正値の増減をステップ状ではなくリニアにすること、多項式で補間すること等が挙げられる。また、制御装置200の搭載対象は2輪以外に4輪とすることも可能である。また、マップ134の内容も種々の変更を行うことができる。また、ステップS700、S715においてリッチ判定閾値およびリーン判定閾値を用いてリッチ状態かリーン状態かを判定する例について説明したが、これに限られない。例えば、閾値O
2THを用いてもよい。この場合、VSが閾値O
2THよりも大きいと判定した場合はリッチ状態であると判定し、VSが閾値O
2THよりも小さいと判定した場合はリーン状態であると判定する。