JP3644172B2 - エンジンの空燃比制御装置 - Google Patents
エンジンの空燃比制御装置 Download PDFInfo
- Publication number
- JP3644172B2 JP3644172B2 JP00571597A JP571597A JP3644172B2 JP 3644172 B2 JP3644172 B2 JP 3644172B2 JP 00571597 A JP00571597 A JP 00571597A JP 571597 A JP571597 A JP 571597A JP 3644172 B2 JP3644172 B2 JP 3644172B2
- Authority
- JP
- Japan
- Prior art keywords
- learning
- learning value
- value
- limiter
- injection amount
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- F—MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
- F02—COMBUSTION ENGINES; HOT-GAS OR COMBUSTION-PRODUCT ENGINE PLANTS
- F02D—CONTROLLING COMBUSTION ENGINES
- F02D41/00—Electrical control of supply of combustible mixture or its constituents
- F02D41/24—Electrical control of supply of combustible mixture or its constituents characterised by the use of digital means
- F02D41/2406—Electrical control of supply of combustible mixture or its constituents characterised by the use of digital means using essentially read only memories
- F02D41/2425—Particular ways of programming the data
- F02D41/2429—Methods of calibrating or learning
- F02D41/2451—Methods of calibrating or learning characterised by what is learned or calibrated
- F02D41/2454—Learning of the air-fuel ratio control
- F02D41/2461—Learning of the air-fuel ratio control by learning a value and then controlling another value
Landscapes
- Engineering & Computer Science (AREA)
- Chemical & Material Sciences (AREA)
- Combustion & Propulsion (AREA)
- Mechanical Engineering (AREA)
- General Engineering & Computer Science (AREA)
- Electrical Control Of Air Or Fuel Supplied To Internal-Combustion Engine (AREA)
- Combined Controls Of Internal Combustion Engines (AREA)
Description
【0001】
【発明の属する技術分野】
この発明はエンジンの空燃比制御装置、特に空燃比学習値にリミッタを設け、学習値がこのリミッタを超えないように制限するものに関する。
【0002】
【従来の技術】
空燃比制御に2種以上の学習値を導入するものがある。この種の装置として、たとえば特開昭64−19143号公報では、マップ学習値KLCD2のほかに、噴射弁流量特性値の学習値(1データ)KLCD1と無効噴射パルス幅の学習値(以下、簡単に「TS学習値」という、1データ)KLCD3を導入し、
Tp=(Qa/N)×KCONST×KLCD1
ただし、Tp:基本噴射パルス幅
Qa:吸入空気流量
N:エンジン回転数
KCONST:噴射定数
の式により基本噴射パルス幅Tpを計算するとともに、
Ti=Tp×COEF×KLCD2×ALPHA+Ts+KLCD3
ただし、COEF:1と各種補正係数の和
ALPHA:空燃比フィードバック補正係数
Ts:無効噴射パルス幅
の式により1サイクル値に必要となる燃料噴射パルス幅Tiを計算している。
【0003】
【発明が解決しようとする課題】
ところで、最近の空燃比学習制御では、学習値に対して所定の範囲(あるいは一定割合)のリミッタを設けることで、燃料インジェクタやエアフローメータの製造時の部品バラツキや経時劣化を吸収することができ、また誤学習による理論空燃比からの空燃比誤差も同じ所定の範囲以内であれば、エンスト等の不具合を回避できることがわかっている。
【0004】
しかしながら、従来装置において、KLCD1、KCLD2は乗算の形で導入された学習値(以下「乗算項の学習値」という)であるのに対してKLCD3は加算の形で導入された学習値(以下「加算項の学習値」という)であり、このように異なる形式の2つの学習値を合わせもつものにおいて、各学習値毎に独立してリミッタを設けたのでは、2つの学習値のトータルで所定の範囲のリミッタを確保するのが難しく、一方の学習値が上限リミッタや下限リミッタに張り付いたとき2つの学習値のトータルでリミッタが所定の範囲を超えてしまう事態が生じる。
【0005】
たとえば、話を簡単にするため従来装置においてKLCD1、COEFを省略し、
Tp=(Qa/N)×KCONST …(a)
Ti=Tp×マップ学習値×ALPHA+Ts+TS学習値 …(b)
の式で考える。
【0006】
ここで、学習値のリミッタの説明に入る前に、燃料噴射パルス幅の演算式の意味するところを簡単に説明する。まずTsは燃料インジェクタの応答遅れを考慮するものである。燃料インジェクタにTpの間だけ開弁する信号を与えても、すぐには開くことができず、応答遅れをもって開くので、この応答遅れ分だけ噴射期間が短くなって燃料が不足する。そこで、Tsの分だけ多くすることによって実際にTpの間だけ開弁させるようにしているわけである。通常、Tsはバッテリ電圧の影響を大きく受け、バッテリ電圧が低下するほど応答遅れが大きくなるので、バッテリ電圧が低下するほど大きくなる値となっている。
【0007】
一方、エアフローメータや燃料インジェクタの流量特性に製作バラツキや経時劣化があると、排気の空燃比が理論空燃比からずれてくるが(この場合の理論空燃比からのずれ(空燃比偏差)が定常偏差といわれる)、マップ学習値はこれら空燃比制御部品の製作バラツキや経時劣化に左右されずに、空燃比フィードバック制御を行わない運転条件においても定常偏差を解消するための値である。たとえば、燃料インジェクタの流量特性が設定値より小さいものでは、噴射量が不足して排気の空燃比がリーン側に傾き、このリーン側に傾いた空燃比を理論空燃比に戻そうとALPHA(中心値は100%)が100%よりも大きな値へと変化していく。このときのALPHAに基づいてマップ学習値(中心値は100%)が更新されるので、マップ学習値は100%より大きい値へと変化してゆく。このようにして、マップ学習値が収束した段階では、ALPHAが演算されなくとも、ふたたび空燃比が理論空燃比へと落ち着くことになり、燃料インジェクタの流量特性が設定値より小さいものであっても、流量特性が設定通りの燃料インジェクタと変わらなくなるわけである。
【0008】
同様にして、燃料インジェクタの開き初めのタイミングに製作バラツキや経時劣化があっても、排気の空燃比が理論空燃比からずれるので、このずれを解消するための値がTS学習値である。たとえば燃料インジェクタの開き初めのタイミングが設定値より遅れるものでは、噴射量が不足して排気の空燃比がリーン側に傾き、このリーン側に傾いた空燃比を理論空燃比に戻そうとALPHAが100%よりも大きな値へと変化し、このときのALPHAに基づいて更新されるTS学習値(中心値は0ms)、0msより大きい値へと変化する。したがって、TS学習値が収束した段階で、ALPHAが演算されなくともふたたび空燃比が理論空燃比へと落ち着くことになり、燃料インジェクタの開き初めのタイミングが設定値より遅れるものであっても、開き初めのタイミングが設定通りの燃料インジェクタと変わらなくなる。
【0009】
ただし、マップ学習値とTS学習値とで学習許可条件を相違させており、マップ学習値は学習領域毎に更新するのに対して、TS学習値は低負荷域でだけ更新している。これは、低負荷域ではTsよりもTpが相対的に小さく、したがって低負荷域における理論空燃比からのずれ(空燃比偏差)は、Tsによる分が支配的となるので、Ts学習値を更新させるようにしたものである。
【0010】
これで燃料噴射パルス幅の演算式の説明を終える。
【0011】
さて、上記(b)式のマップ学習値(乗算項の学習値)とTS学習値(加算項の学習値)を、
90%≦マップ学習値≦110% …(c)
−0.1ms≦TS学習値≦+0.1ms …(d)
のように各学習値毎に独立してリミッタを設定したとする。このとき、マップ学習値はTpに対する乗算項として、またTS学習値はTpに対する加算項として加わることから、マップ学習値のリミッタについてはTpの大小に関係なく110%が上限リミッタ、90%が下限リミッタとなるのに対して、TS学習値のリミッタについてはTpが小さくなるほどTpに対するリミッタ分が大きくなっていくため、いまTpを横軸にとり、マップ学習値のリミッタとTS学習値のリミッタを重ねてみると、図15上段に示したようになる。つまり、Tpが小さい領域では、TS学習値のTpに対するリミッタ分が急激に大きくなるため、マップ学習値が上限リミッタの110%や下限リミッタの90%に張り付いたとき、TS学習値がリミッタ分を超えなくても、2つの学習値のトータルでリミッタが±10%を超えてしまうのである。
【0012】
そこで本発明は、加算項の学習値を基本噴射量に対する割合(たとえばパーセント)に換算した値と、もともと割合の単位で設けられる乗算項の学習値とのトータルでリミッタが所定の範囲(たとえば±10パーセント)に収まるように2つの学習値をそれぞれ制限することにより、単位の異なる加算項の学習値と乗算項の学習値を合わせもつものにおいても、2つの学習値のトータルでのリミッタを所定の範囲に収めることができ、これによって誤学習の悪影響を小さくするとともに、エンスト等の不具合を回避することを目的とする。
【0013】
【課題を解決するための手段】
第1の発明は、図25に示すように、エンジンの負荷と回転数に基づいて基本噴射量TP0を演算する手段21と、乗算項の学習値を割合の単位(たとえばパーセント)で格納する手段22と、加算項の学習値を噴射量の単位(たとえばms)で格納する手段23と、前記加算項の学習値を前記基本噴射量TP0に対する割合に換算した値と前記乗算項の学習値とのトータルでリミッタが所定の範囲(たとえば±10パーセント)に収まるように前記2つの学習値をそれぞれ制限する手段24、25と、排気の空燃比を検出する手段26と、この空燃比検出手段26の出力に基づいて空燃比が理論空燃比と一致するように空燃比フィードバック補正量ALPHAを演算する手段27と、この空燃比フィードバック補正量ALPHAと前記制限された2つの学習値とで前記基本噴射量TP0を補正して燃料噴射量を演算する手段28と、この噴射量の燃料をエンジンに供給する手段29とを設けた。
【0014】
第2の発明では、第1の発明において前記燃料噴射量が前記基本噴射量と無効噴射量の和からなり、前記加算項の学習値がこの無効噴射量の学習値である。
【0015】
第3の発明では、第2の発明において前記無効噴射量の学習値を低負荷域でだけ前記空燃比フィードバック補正量ALPHAに基づいて更新する。
【0016】
第4の発明では、第2または第3の発明において前記乗算項の学習値が学習領域毎の学習値である。
【0017】
第5の発明では、第4の発明において前記学習領域毎の学習値を低負荷域以外の運転域で前記空燃比フィードバック補正量ALPHAに基づいて更新する。
【0018】
第6の発明では、第2または第3の発明において前記乗算項の学習値がパージカット時の学習値である。
【0019】
第7の発明では、第6の発明において前記パージカット時の学習値を所定の1つの学習領域でだけ前記空燃比フィードバック補正量ALPHAに基づいて更新する。
【0020】
第8の発明では、第2または第3の発明において前記乗算項の学習値がパージカット時の学習値と学習領域毎の学習値とからなり、パージカット時の学習値からしきい値SLALPを差し引いた値と学習領域毎の学習値との比較により、パージカット時の学習値からしきい値SLALPを差し引いた値が学習領域毎の学習値以下のときパージカット時の学習値を、またパージカット時の学習値からしきい値SLALPを差し引いた値が学習領域毎の学習値を超えるとき学習領域毎の学習値を選択する。
【0021】
第9の発明では、第2または第3の発明において前記無効噴射量の学習値単独でリミッタLTSMAX#、LTSMIN#を設ける(たとえばLTSMAX#=+0.1ms、LTSMIN#=−0.1ms)。
【0022】
第10の発明では、第9の発明において前記無効噴射量の学習値の更新時に、前記基本噴射量TP0に応じたリミッタLTSMAX2、LTSMIN2で無効噴射量の学習値を制限するとともに、そのリミッタで無効噴射量の学習値が制限されるときは、そのリミッタで無効噴射量の学習値を更新する。
【0023】
第11の発明では、第9の発明において前記無効噴射量の学習値の更新時に、前記基本噴射量TP0に応じたリミッタLTSMAX2、LTSMIN2と前記無効噴射量の学習値単独のリミッタLTSMAX#、LTSMIN#との狭いほうで無効噴射量の学習値を制限するとともに、その狭いほうのリミッタで無効噴射量の学習値が制限されるときは、その狭いほうのリミッタで無効噴射量の学習値を更新する。
【0024】
第12の発明では、第9または第10の発明において前記無効噴射量の学習値の参照時に、低負荷域に限り前記基本噴射量TP0に応じたリミッタLTSMAX2、LTSMIN2で無効噴射量の学習値を制限する。
【0025】
第13の発明では、第10から第12までのいずれか一つの発明において前記リミッタが、2つの学習値(無効噴射量の学習値と乗算項の学習値)のトータルとして割合の単位(たとえばパーセント)で予め定めたリミッタRLRMAX#、RLRMIN#から前記乗算項の学習値を差し引いた値に前記基本噴射量TP0をかけた値である。
【0026】
第14の発明では、第4または第5の発明において前記学習領域毎の学習値の更新時に、前記無効噴射量の学習値に応じたリミッタRLMAX1、RLMAX2、RLMAX3、RLMIN1、RLMIN2、RLMIN3で学習領域毎の学習値を制限するとともに、そのリミッタで学習領域毎の学習値が制限されるときは、そのリミッタで学習領域毎の学習値を更新する。
【0027】
第15の発明では、第4または第5の発明において前記学習領域毎の学習値の更新時に、前記無効噴射量の学習値に応じたリミッタRLMAX1、RLMAX2、RLMAX3、RLMIN1、RLMIN2、RLMIN3と2つの学習値(無効噴射量の学習値と学習領域毎の学習値)のトータルとして割合の単位で予め定めたリミッタRLRMAX#、RLRMIN#との狭いほうで学習領域毎の学習値を制限するとともに、その狭いほうのリミッタで学習領域毎の学習値が制限されるときは、その狭いほうのリミッタで学習領域毎の学習値を更新する。
【0028】
第16の発明では、第4、第5、第14、第15のいずれか一つの発明において前記学習領域毎の学習値の参照時に、前記無効噴射量の学習値に応じたリミッタRLMAX1、RLMAX2、RLMAX3、RLMIN1、RLMIN2、RLMIN3で学習領域毎の学習値を制限するとともに、そのリミッタで学習領域毎の学習値が制限されるときは、そのリミッタで学習領域毎の学習値を更新する。
【0029】
第17の発明では、第4、第5、第14、第15のいずれか一つの発明において前記学習領域毎の学習値の参照時に、前記無効噴射量の学習値に応じたリミッタRLMAX1、RLMAX2、RLMAX3、RLMIN1、RLMIN2、RLMIN3と2つの学習値(無効噴射量の学習値と学習領域毎の学習値)のトータルとして割合の単位で予め定めたリミッタRLRMAX#、RLRMIN#との狭いほうで学習領域毎の学習値を制限するとともに、その狭いほうのリミッタで学習領域毎の学習値が制限されるときは、その狭いほうのリミッタで学習領域毎の学習値を更新する。
【0030】
第18の発明では、第14から第17までのいずれか一つの発明において前記リミッタが、2つの学習値(無効噴射量の学習値と学習領域毎の学習値)のトータルとして割合の単位で予め定めたリミッタRLRMAX#、RLRMIN#から前記無効噴射量の学習値を前記基本噴射量TP0に対する割合に換算した値を差し引いた値である。
【0031】
第19の発明では、第18の発明において前記基本噴射量TP0に代えて各学習領域の負荷の下限を定める値を用いる。
【0032】
第20の発明では、第6または第7の発明において前記パージカット時の学習値の更新時に前記無効噴射量の学習値に応じたリミッタRLMAX0、RLMIN0でパージカット時の学習値を制限するとともに、そのリミッタでパージカット時の学習値が制限されるときは、そのリミッタでパージカット時の学習値を更新する。
【0033】
第21の発明では、第6または第7の発明において前記パージカット時の学習値の更新時に前記無効噴射量の学習値に応じたリミッタRLMAX0、RLMIN0と2つの学習値(無効噴射量の学習値とパージカット時の学習値)のトータルとして割合の単位で予め定めたリミッタRLRMAX#、RLRMIN#との狭いほうでパージカット時の学習値を制限するとともに、その狭いほうのリミッタでパージカット時の学習値が制限されるときは、その狭いほうのリミッタでパージカット時の学習値を更新する。
【0034】
第22の発明では、第20または第21の発明において前記リミッタが、2つの学習値(無効噴射量の学習値とパージカット時の学習値)のトータルとして割合の単位で予め定めたリミッタRLRMAX#、RLRMIN#から前記無効噴射量の学習値を前記基本噴射量TP0に対する割合に換算した値を差し引いた値である。
【0035】
第23の発明では、第22の発明において前記基本噴射量TP0に代えて学習領域の負荷の下限を定める値を用いる。
【0036】
第24の発明では、第6、第7、第20、第21の発明のいずれか一つにおいて前記パージカット時の学習値の参照時に前記無効噴射量の学習値に応じたリミッタRLMAX0、RLMIN0で前記パージカット時の学習値を制限する。
【0037】
第25の発明では、第6、第7、第20、第21の発明のいずれか一つにおいて前記パージカット時の学習値の参照時に前記無効噴射量の学習値に応じたリミッタRLMAX0、RLMIN0と2つの学習値(無効噴射量の学習値とパージカット時の学習値)のトータルとして割合の単位で予め定めたリミッタRLRMAX#、RLRMIN#との狭いほうで前記パージカット時の学習値を制限する。
【0038】
第26の発明では、第24または第25の発明において前記リミッタが、2つの学習値(無効噴射量の学習値とパージカット時の学習値)のトータルとして割合の単位で予め定めたリミッタRLRMAX#、RLRMIN#から前記無効噴射量の学習値を前記基本噴射量TP0に対する割合に換算した値を差し引いた値である。
【0039】
【発明の効果】
第1の発明では、乗算項の学習値が割合の単位、加算項の学習値が噴射量の単位となっており、両者で単位が相違している場合に、両者の単位をそろえるため加算項の学習値を基本噴射量に対する割合に換算し、その加算項の学習値の割合の単位への換算値と、もともと割合の単位である乗算項の学習値とのトータルでリミッタが所定の範囲に収まるように2つの学習値を制限するので、空燃比学習制御において加算項の学習値と乗算項の学習値を合わせもつものに対しても、基本噴射量の大小に関係なく、2つの学習値のトータルでリミッタが所定の範囲に収まり、これによって、誤学習の悪影響を小さくするとともに、エンスト等の不具合を回避することができる。
【0040】
低負荷域では基本噴射量よりも無効噴射量のほうが燃料噴射量に対する寄与割合が大きく、したがってこのときの理論空燃比からのずれは主に無効噴射量の誤差に伴うものであることより、第3の発明では低負荷域に限り無効噴射量の学習値を更新するので、無効噴射量の学習値の精度を高いものに維持できる。
【0041】
キャニスタにたくさんの燃料蒸気がたまっていた状態からパージが行われたときは、空燃比が一時的にリッチ側に傾き、このリッチに傾いた空燃比を理論空燃比に戻そうと空燃比フィードバック補正量が100%よりも小さい側に移動していくため、この空燃比フィードバック補正量に基づいて更新される学習領域毎の学習値が小さい側に移動し、しきい値を下回ってピークをとる。その後はパージガス濃度の減少とともに学習領域毎の学習値が再び大きくなり、パージがしばらく継続した後の状態に対する学習値へと収束してゆく。この場合に、そのピーク位置でリーン運転が開始されたときパージの継続によりキャニスタ内の燃料蒸気がなくなってゆくのに対して、学習領域毎の学習値はピーク位置の値のままでそれ以上更新されることがない。したがって、ピーク位置でリーン運転が開始された後も、更新されることのない学習領域毎の学習値を用いたのでは、パージの継続につれて実際のパージ状態と学習領域毎の学習値とが対応しなくなり、リーン運転中の空燃比がリーン側に大きく傾いてゆくため、空燃比の理論空燃比への制御精度が落ちてしまう。このとき、第8の発明では100%に近い値にあるパージカット時時の学習値を用いるので、空燃比の理論空燃比への制御精度が落ちてしまうことがない。
【0042】
第11の発明では無効噴射量の学習値の更新時に基本噴射量に応じたリミッタと無効噴射量の学習値単独のリミッタとの狭いほうで無効噴射量の学習値を、第15、第17の各発明では学習領域毎の学習値の更新時、参照時に無効噴射量の学習値に応じたリミッタと2つの学習値のトータルとして割合の単位で予め定めたリミッタとの狭いほうで学習領域毎の学習値を、第21、第25の各発明ではパージカット時の学習値の更新時、参照時に無効噴射量の学習値に応じたリミッタと2つの学習値のトータルとして割合の単位で予め定めたリミッタとの狭いほうでパージカット時の学習値をそれぞれ制限するので、いずれも学習値の範囲を狭めることができ、誤学習の影響をより小さくすることができる。
【0043】
基本噴射量に応じたリミッタを設ける場合に、他の負荷域より基本噴射量が小さい低負荷域において基本噴射量が小さくなるほどに基本噴射量に応じたリミッタも小さくなることから、このときにも無効噴射量の学習値を更新したのでは、無効噴射量の学習値を小さな値としてしまうのであるが、第12の発明では低負荷域に限り学習値を更新することはしないので、それまで比較的大きな値だった学習値を無用に小さくすることがない。
【0044】
2つの学習値(学習領域毎の学習値と無効噴射量の学習値)がある場合は、両方を同じタイミングで更新して各学習値とも最新値に置き換えていくことにより初めて、2つの学習値のトータルでリミッタを所定範囲に収めることができる。しかしながら、2つの学習値の学習許可条件が異なるときは同じタイミングで更新されることがないため、2つの学習値のトータルでリミッタが所定範囲に収まらないことが考えられる。このとき、第16の発明では学習領域毎の学習値の参照時にリミッタにより制御した値で、また、第17の発明では学習領域毎の学習値の参照時に狭いほうのリミッタにより制御した値で学習値を更新することで、できるだけ更新の機会を増やしているので、トータルの学習値のリミッタが所定範囲からはみ出す機会を減らすことができる。
【0045】
同じ学習領域において基本噴射量が小さくなるのにつれて学習値に対するリミッタを小さくしなければならない。したがって、同じ学習領域において比較的大きな値の基本噴射量(これをTP0Hとする)のときのリミッタをその学習領域全体についてのリミッタとしたのでは、同じ学習領域のうちTP0H未満の領域で学習値のリミッタが大きくなり過ぎ、2つの学習値のトータルでリミッタが所定範囲に収まらない事態が生じる。このとき第19と第23の各発明では、学習領域の負荷の下限を定める値に対するリミッタを、その同じ学習領域全体についてのリミッタとするので、広がりのある学習領域内で同じ値の学習値をもつ場合であっても、2つの学習値のトータルでリミッタが所定範囲に収まらない事態が生じることがない。
【0046】
無効噴射量の学習値に応じたリミッタを設ける場合に、基本噴射量が0に近づいていくときリミッタが0に近づいていくので、このときにまでパージカット時の学習値を更新したのでは、学習値がごくわずかな値になってしまうのであるが、第24の発明ではパージカット時の学習値の参照時にリミッタにより制限した値でベース学習値を更新することはしないので、また、第25の発明でもパージカット時の学習値の参照時に、狭いほうのリミッタにより制限した値でベース学習値を更新することはしないので、それまで比較的大きな値だった学習値を無用に小さくすることがない。
【0047】
【発明の実施の形態】
図1において、1はエンジン本体で、吸入空気はエアクリーナ11から吸気マニフォールドのコレクタ12a、分岐部12bを通ってシリンダに供給される。燃料は、運転条件に応じて所定の空燃比となるようにコントロールユニット2よりの噴射信号に基づき燃料インジェクタ3からエンジン1の吸気ポートに向けて噴射される。
【0048】
コントロールユニット2にはディストリビュータ内蔵のクランク角センサ7からのRef信号(4気筒では180°毎、6気筒では120°毎に発生)とPos信号(1°信号)、エアフローメータ4からの吸入空気量信号、三元触媒19の上流側に設置したO2センサ9からの空燃比(酸素濃度)信号、水温センサ8からのエンジン冷却水温信号、スロットルセンサ6からの絞り弁5開度信号等が入力され、これらに基づいて吸入空気流量とエンジン回転数から基本噴射パルス幅を算出するとともに、三元触媒19に流入する排気の空燃比が理論空燃比を中心として所定の周期で振れるように空燃比のフィードバック制御を行う。
【0049】
この場合、さらに目標空燃比への制御精度を高めるため、燃料インジェクタ3やエアフローメータ4の流量特性の製作時の部品バラツキやその後の経時劣化に伴う理論空燃比からのずれの解消を目的とするマップ学習値と燃料インジェクタの開き初めのタイミングが燃料インジェクタの部品バラツキやその後の経時劣化に伴う理論空燃比からのずれの解消を目的とするTS学習値を導入するほか、リーン運転時のキャニスタパージとの両立を図るためのベース学習値を導入している。
【0050】
コントロールユニット2で実行されるこの空燃比制御の内容を、以下のフローチャートにしたがって説明する。
【0051】
図2のフローチャートは、気筒別同期噴射パルス幅Tin[ms]の演算を行わせるためのもので、一定時間毎(たとえば10ms毎)に実行する。
【0052】
なお、図2のフローにおいて、記号の最後に気筒番号nをつけることで、気筒別の値であることを示している(CTin、Chosn、ERACIn)。
【0053】
ステップ1ではエアフローメータ出力より得られる吸入空気流量Qs[g/s]とクランク角センサより得られるエンジン回転数N[rpm]より基本噴射パルス幅TP0[ms]を
TP0=(Qs/N)×K×Ktrm …(1)
ただし、K:噴射定数
Ktrm:トリミング係数
の式で計算する。
【0054】
ここで、(1)式のKは理論空燃比の混合気が得られるように定めた定数、Ktrmはインジェクタ4の流量特性により定まる固有の定数である。
【0055】
ステップ2では回転数Nおよびシリンダ容積V[cc]の積N×Vと絞り弁部の総流路面積Aa[cm2]から所定のマップを参照して加重平均係数Fload[%]を求める。なお、総流路面積Aaは絞り弁5の流路面積[cm2]にアイドル調整弁22やエアレギュレータ(図示しない)の流路面積[cm2]を足したものである。
【0056】
ステップ3ではシリンダ空気量相当パルス幅TP[ms]を
TP=TP0×Fload+TP(old)×(1−Fload)…(2)
ただし、TP(old):Avtpの前回値
の式により計算し、このTPを用いステップ4において、
ただし、Kathos:過渡補正量[ms]
Tfbya:目標燃空比相当量[無名数]
ALPHA:空燃比フィードバック補正係数[無名数]
LALPHA:空燃比学習値[無名数]
Ts:無効パルス幅[ms]
LRNTS:TS学習値[ms]
CHOSn:気筒別壁流補正パルス幅[ms]
ERACIn:割込噴射移行化パルス幅[ms]
の式により、シーケンシャル噴射モードにおける気筒別同期噴射パルス幅Tin[ms]を計算する。
【0057】
なお、始動時のときは
の式により、同時噴射モードにおける気筒別同期噴射パルス幅Tin[ms]を計算する。
【0058】
ここで、(3)、(4)式の記号を説明すると、まずTfbyaは水温増量補正係数Ktwや始動後増量補正係数Kasと目標燃空比Dmlの和である。空燃比フィードバック制御を行う条件では、Ktw=0、Kas=0、Dml=1.0(つまりTfbya=1.0)であるが、エンジン回転の不安定となる冷間始動時にはKtwとKasが0を超える値(つまりTfbyaが1.0より大きい値)となって燃料増量が行われる。また、暖機完了後においてリーン運転条件になると、Dmlが1未満の値となって燃料減量され、リーン運転が行われる。
【0059】
エンジンの加減速時における空燃比の目標値からのずれは、吸気マニフォールドや吸気ポートに付着し、液状のまま壁面を伝ってシリンダに流れ込む、いわゆる壁流燃料の量的変化に起因するものであり、この壁流燃料による過不足分を補正量として燃料補正を行う。この場合、壁流燃料には直接にシリンダに流入される分が少なく比較的応答の遅いものと、直接にシリンダに流入される分が主で比較的応答の速いものとがあり、Kathosが応答の遅い壁流燃料に関する補正量、またChosnとERACIn(および図示しない気筒別割込噴射パルス幅Injsetn)とが応答の速い壁流燃料に関する補正量である(特開平1−305144号参照)。
【0060】
インジェクタに対して噴射信号が出力されたとしてもインジェクタは応答遅れをもって開くので、この応答遅れの分を考慮した値がTsである。
【0061】
(3)式右辺のTsの前にある2は、シーケンシャル噴射(1気筒当たりエンジン2回転に1回の噴射)のときに必要となる値である。
【0062】
なお、上記(2)式のメモリTP(old)の値は、後述するALPHA(old)とともに、始動時に0に初期設定されている。
【0063】
(3)、(4)式の空燃比学習値LALPHAの検索については図3のフローチャートにより説明する。同図のフローは一定時間毎に(あるいはバックグランドジョブで)実行する。なお、(3)、(4)式のLALPHA(ALPHAについても)は、1.0を中心とする無名数の単位であるが、実際のフロー上では100%を中心とする値(パーセント表示)で計算する。
【0064】
この実施形態ではリーン運転時のキャニスタパージを考慮して、通常のマップ学習値の外にベース学習値(1データ)を導入しており、いずれかを選択してLALPHAに入れることになる。
【0065】
まず、マップ学習値TALPの学習領域は、図4に示したように、TP格子である所定値TALPP0#(=0)、TALPP1#、TALPP2#、TALPP3#とN格子とで16に区分けし、各学習領域毎に独立の学習値を格納している。したがって、運転条件の属する学習領域の学習値を参照するとともに、各学習領域毎に学習値を更新することになる。なお、学習領域には0から15までの番号を割り振ることで、他の学習領域と区別している。以下で学習領域が0といえば、図4のTALPマップの0が指す学習領域のことである。
【0066】
これに対してベース学習値はパージカット時の学習値として導入しているもので、図5に示したように、マップ学習値の学習領域とは無関係に、リーン運転時の全域を代表できるような領域を学習領域として定めており、その1つの学習領域でだけ学習値の更新を行い、その学習領域に限らず全域で参照する。
【0067】
なお、マップ学習値、ベース学習値を格納するためのメモリは、TS学習値を格納するためのメモリとともに、バックアップRAMである。
【0068】
図3においてステップ11ではどの学習領域にあるかをみて学習領域が0のときは、TS学習を行わせるためステップ12に進んでLALPHA[%]に100を入れる。
【0069】
学習領域が0以外のときはステップ11よりステップ13、14、15に進み、冷却水温Twが所定値TWLCL#以上かどうか、フラグFLEANによりリーン運転条件であるかどうか、マップ学習収束カウンタCLRNTDi(i=0〜15)はマップ学習収束回数NLRNTD#以上かどうかをそれぞれみる。ここで、フラグFLEANはリーン運転条件を許可するときに“1”となるフラグである。マップ学習収束カウンタ(バックアップRAMに格納)CLRNTDi(iは学習領域の番号)は、各学習領域でマップ学習値が更新される毎にその更新の回数を学習領域毎に計測するためのものである。
【0070】
Tw≧TWLCL#のときかつリーン運転条件のときかつCLRNTDi≧NLRNTD#のときは、ステップ16に進んで図4のTALPマップを参照してマップ学習値TALP[%]を求め、変数LRNALP[%]に入れる。ここではマップ学習値そのものと演算に用いるマップ学習値とを区別するため、変数LRNALPを用いている。同様にして、後述する変数BSALP[%]は演算用のベース学習値、変数LRNTS[%]は演算用のTS学習値である。
【0071】
ステップ18では、演算用のベース学習値BSALP[%]としきい値SLALP[%]の差と演算用のマップ学習値LRNALPを比較し、BSALP−SLALP≦LRNALPのときはマップ学習値のほうを選択するためステップ19でLRNALPの値を空燃比学習値LALPHAに入れ、BSALP−SLALP>LRNALPのときはベース学習値のほうを選択するためステップ20、22でベース学習値を変数BSALPに入れるとともに、BSALPの値をLALPHAに移す。
【0072】
ここで、ベース学習値とマップ学習値を使い分けるのは次の理由による。空燃比学習制御中にパージが行われたときの学習値の変化を図6に示すと、ベース学習値はパージカット時の学習値であるからベース学習値の収束後はほぼ一定である。これに対して、キャニスタ(図示しない)にたくさんの燃料蒸気がたまっていた状態からパージが行われたときは、空燃比が一時的にリッチ側に傾き、このリッチに傾いた空燃比を理論空燃比に戻そうと空燃比フィードバック補正係数ALPHAが100%よりも小さい側に移動していくため、このALPHAに基づいて更新されるマップ学習値がしきい値SLALPを下回って小さい側に移動し、たとえば80%でピークをとる。その後はパージガス濃度の減少とともにマップ学習値が再び大きくなり、パージがしばらく継続した後の状態に対する学習値へと収束してゆく。
【0073】
一方、そのピーク位置でリーン運転が開始されたときは、パージの継続によりキャニスタ内の燃料蒸気がなくなってゆくのに対して、マップ学習値はピーク位置の値のままでそれ以上更新されることがないため一点鎖線で示したようにピーク位置の値のままである。したがって、ピーク位置でリーン運転が開始された後も、その一点鎖線で示したマップ学習値を用いたのでは、パージの継続につれて実際のパージ状態とマップ学習値とが対応しなくなり、リーン運転中の空燃比がリーン側に大きく傾いてゆくため、空燃比の理論空燃比への制御精度が落ちてしまう。そこで、ベース学習値を中心としてしきい値SLALPよりもマップ学習値が下側にあるときは、マップ学習値を用いない(ベース学習値を用いる)ようにしたのである。
【0074】
なお、Tw<TWLCL#のときやTw≧TWLCL#かつFLEAN=1でもCLRNTDi<NLRNTD#のときは、マップ学習が十分に進んでいないと考えられるためステップ13や15よりステップ20、22に進んで、ベース学習値を選択する。
【0075】
一方、リーン運転条件でないときはステップ14よりステップ23に進み、フラグFBSLTDよりベース学習値が収束したかどうかをみる。このフラグはFBSLTD=0のときベース学習が未収束であることを、FBSLTD=1はベース学習が収束したことを表すので、ベース学習が未収束(FBSLTD=0)のときはベース学習を進めるためステップ24、26に進んでベース学習値をLALPHAに入れ、ベース学習が収束(FBSLTD=1)した後はマップ学習を進めるためステップ27、29に進んでマップ学習値をLALPHAに入れる。
【0076】
図3において説明しなかったステップ17、28のリミッタ処理B2、ステップ21、25のリミッタ処理C2は本発明により新たに追加した部分であるため後で詳述する。
【0077】
次に、マップ学習値やベース学習値の更新は空燃比フィードバック補正係数ALPHAに基づいて行うため、空燃比フィードバック補正係数ALPHAの演算途中(正確にはリッチ、リーンの反転時)で学習値の更新を指示することになる。
【0078】
図7のフローチャートはO2センサ出力VO2に基づいて空燃比フィードバック補正係数ALPHAを演算するためのもので、Ref信号に同期して実行する。Ref信号に同期させるのは、燃料噴射がRef信号同期であり、系の乱れもRef信号同期であるため、これに合わせたものである。
【0079】
ステップ31では空燃比フィードバック制御条件が成立しているかどうかをみる。たとえば、次の条件、
▲1▼冷却水温Twが空燃比フィードバック制御の開始水温TWCLMPを越えていること、
▲2▼目標燃空比相当量Tfbya=1であること、
▲3▼フラグFLGCL=1であること(つまりO2センサ出力が所定回数(たとえば1回)反転していること)、
を一つずつチェックし、いずれかでも満たさないときは空燃比フィードバック制御条件の非成立時と判断して、ステップ32に進み、メモリALPHA(old)にALPHAの値を移したあとALPHAに100%を入れて(ALPHAをクランプ)、図7のフローを終了する。
【0080】
上記の▲1▼〜▲3▼のすべてを満足するときは空燃比フィードバック制御条件の成立時と判断してステップ33に進む。
【0081】
ステップ33ではO2センサ出力VO2をA/D変換して取り込み、ステップ34においてVO2とスライスレベル(たとえば500mV付近)SLを比較する。VO2>SLであればステップ35でフラグAF1に“1”を、VO2≦SLであるときはステップ36においてフラグAF1に“0”を入れる。これによってAF1=0はO2センサ出力がリーン側にあることを、AF1=1はリッチ側にあることを表す。
【0082】
なお、フラグAF1は、他のフラグ(図3のステップ14のFLEAN、ステップ23のFBSLTD、図7のステップ37のAF0、図8のステップ57、58のFLRNTD、図9のステップ68のFBSLTD、図10のステップ86、87のFBSLTD、図11のステップ98のFBSLTD、図13のステップ140、141のFLTSTD)とともに電源投入時のイニシャライズで“0”に初期設定し、また変数を格納するためのメモリ(たとえば図7のステップ38のALP 1、ALP 2、ステップ39のTP 1、TP 2、ステップ40のNE 1、NE 2、図8のステップ53のX1(new)、X1(old)、図10のステップ82のX2(new)、X2(old)、図13のステップ134、135、136のX3(new)、X3(old))も電源投入時のイニシャライズで0に初期設定するものであり、以下のフローチャートおいて、フラグ、メモリについての初期設定については省略する。
【0083】
ステップ37では2つのフラグAF0、AF1を比較する。ここで、フラグAF0は前回にO2センサ出力VO2がリッチあるいはリーンのいずれの側にあったかを示すフラグであり、AF0=0は前回リーン側にあったことを、AF0=1は前回リッチ側にあったことを表す。したがって、2つのフラグAF0、AF1の値が等しくないときは、VO2のリッチからリーンへの反転時あるいはその反対にリーンからリッチへの反転時であると判断し、ステップ38でメモリALP 2[%]の値をメモリALP 1[%]に移し、メモリALP 2[%]にALPHAの値(前回演算時の値)を入れる。メモリALP 2にリッチ、リーン反転時の最新のALPHAを、メモリALP 1に前回反転時のALPHAを格納するわけである。同様にしてステップ39、40ではメモリTP 2[ms]の値をメモリTP 1[ms]に移し、メモリTP 2[ms]にTP(図2のステップ3で既に得ている)の値を入れるとともに、メモリNE 2[rpm]の値をメモリNE 1[rpm]に移し、メモリNE 2に回転数Nを入れる。メモリTP 2、NE 2にリッチ、リーン反転時の最新のTP、Nを、メモリTP 1、NE 1に前回反転時のTP、Nを格納するのである。
【0084】
ステップ41ではマップ学習値、ベース学習値およびTS学習値の更新を指示する(図8と図10と図13のフローを起動させる)。
【0085】
ステップ42ではフラグAF1の値をみる。AF1=0(リッチからリーンへの反転時)であればステップ43で
ALPHA=ALPHA(old)+PL …(5)
ただし、ALPHA(old):ALPHAの前回値
の式により、またAF1=1(リーンからリッチへの反転時)であるときはステップ44において
ALPHA=ALPHA(old)−PR …(6)
の式によりALPHAをそれぞれ更新する。
【0086】
ステップ45では次回演算のため、フラグAF1の値をフラグAF0に、またALPHAの値をメモリALPHA(old)に移して図7のフローを終了する。
【0087】
ステップ37で2つのフラグAF0、AF1の値が等しいときは、反転時でないと判断し、ステップ46に進んでフラグAF1の値をみる。AF1=0(前回、今回ともリーン)であれば、ステップ47でALPHA(old)に積分分ILを加算することによって、またAF1=1(前回、今回ともリッチ)であるときはステップ48でALPHA(old)より積分分IRを減算することによってそれぞれALPHAを更新したあと、ステップ45の操作を実行する。
【0088】
上記の比例分PL、PRと積分分IL、IRはTPとNをパラメータとするマップ値である。
【0089】
図8のフローチャートはマップ学習値を更新するためのもので、O2センサ出力のリッチ、リーンの反転毎に実行する。
【0090】
ステップ51で学習許可条件が成立しているかどうかの判定を行うが、このための具体的な内容を図9に示す。学習許可条件の判定は図9のステップ61〜68の内容を一つずつチェックすることにより行い、各項目のすべてを満たしたときにマップ学習を許可し、一つでも反するときはマップ学習を禁止する。すなわち、
ステップ61;空燃比フィードバック制御中である、
ステップ62;クランプ中でない状態になってからALPHAが2回以上反転した、
ステップ63;冷却水温Twが所定温度範囲(TWLCL#≦Tw≦TWLCH#)となってALPHAが2回以上反転した、
ステップ64;|ALP 2−ALP 1|≦所定値ALP21#である、
ステップ65;|TP 2−TP 1|≦所定値TP21#である、
ステップ66;|NE 2−NE 1|≦所定値NE21#である、
ステップ67;学習領域が0でない、
ステップ68;ベース学習が収束している(FBSLTD=1)
ときに、ステップ69でマップ学習を許可し、そうでなければステップ70に移行してマップ学習を禁止する。
【0091】
ここで、学習領域が0のときマップ学習値の更新を許可しないのは、学習領域が0のときはTS学習値の更新を行わせるためである。したがって、学習領域0でのマップ学習値は初期値の100%のままで、更新されないことになる。後述するように学習領域が0である場合にだけTS学習を許可するのは、この領域ではTPよりもTsのほうがCTinに対する寄与割合が大きく、したがってこのときの理論空燃比からの空燃比誤差は主にTsの誤差に伴うものであるからである。ベース学習が収束していることを条件とするのは、ベース学習値の収束後にマップ学習値の更新を行わせるためである。
【0092】
このようにして学習許可条件を判定したら図8のステップ51に戻り、学習許可条件が成立しているときはステップ52で運転条件がどの学習領域にあるのかを判定し、運転条件が属する学習領域のマップ学習値を用いて
ただし、X1(new):更新後のマップ学習値[%]
X1(old):更新前のマップ学習値[%]
WEIGHT:更新割合
の式によりマップ学習値を更新し、運転条件が属する学習領域に対応するマップ学習収束カウンタCLRNTDiをステップ55においてインクリメントする。ただし、この段階ではX1(new)の値を、運転条件が属する学習領域にマップ学習値として格納することはしない。
【0093】
ステップ56ではマップ学習収束カウンタCLRNTDiと所定値NLRNTD#を比較し、すべての学習領域でCLRNTDi≧NLRNTD#のときステップ57に進んでマップ学習収束フラグFLRNTDに“1”をセットし、それ以外ではステップ58に進んでFLRNTD=0とする。
【0094】
図8において説明を飛ばしたステップ54のリミッタ処理B1は本発明により新たに導入する部分であり、後で詳述する。
【0095】
図10のフローチャートはベース学習値を更新するためのもの、図11のフローチャートは学習許可条件を判定するためのもので、それぞれ図8、図9に対応する。
【0096】
ベース学習値の更新の方法は、マップ学習値の更新の方法と基本的に変わらないので、異なる部分を主に説明する。
【0097】
まず、図11のほうではステップ98、99、100が図9と相違する。ベース学習では、ベース学習が未収束(フラグFBSLTD=0)であり、かつTPとNがベース学習領域にあるとき(BSLTPL#≦TP≦BSLTPH#かつBSLNEL#≦N≦BSLNEH#のとき)が、学習許可条件に加わるわけである。
【0098】
また、ベース学習値は1データであるため、図10を図8と比較すればわかるようにマップ学習値の更新の場合よりベース学習値の更新のほうが簡単になっている。つまり、図10において学習許可条件の成立時にステップ81よりステップ82に進み、
ただし、X2(new):更新後のベース学習値[%]
X2(old):更新前のベース学習値[%]
WEIGHT:更新割合
の式によりベース学習値を更新し、ベース学習収束カウンタ(電源投入時のイニシャライズで0に初期設定)CBSLTDをステップ84においてインクリメントしている。ただし、この段階ではX2(new)の値を、ベース学習値として格納することはしない。また、ステップ85ではベース学習収束カウンタCBSLTDと所定値NBSLTD#を比較し、CBSLTD≧NBSLTD#のときステップ86に進んでベース学習収束フラグFBSLTDに“1”をセットし、それ以外ではステップ87に進んでFBSLTD=0とする。
【0099】
図10において説明を飛ばしたステップ83のリミッタ処理C1は本発明により新たに導入する部分であり、後で詳述する。
【0100】
次に、TS学習値の参照について図12のフローチャートにより説明する。同図のフローは図3とは独立に一定時間毎に(あるいはバックグランドジョブで)実行する。
【0101】
ステップ111ではTS学習値を変数LRNTS[ms]に入れる。ここでも、無効パルス幅学習値そのものと演算に用いる無効パルス幅学習値を区別するため変数LRNTSを用いている。
【0102】
ステップ112〜115はTS学習値に対してリミッタ処理を行う部分である。ステップ112ではTS学習値の上限値LTSMAX#[ms](たとえば+0.1ms)とLRNTSを比較し、LTSMAX#<LRNTSのときはステップ113に進んでLTSMAX#の値をLRNTSに、またステップ114でTS学習値の下限値LTSMIM#[ms](たとえば−0.1ms)とLRNTSを比較し、LTSMIN#>LRNTSのときはステップ115に進んでLTSMIN#の値をLRNTSに入れる。
【0103】
図12において説明を飛ばしたステップ116〜122のリミッタ処理は本発明により新たに導入する部分であり、後で詳述する。
【0104】
図13のフローチャートはTS学習値を更新するためのもの、図14のフローチャートは学習許可条件を判定するためのもので、それぞれ図8、図9あるいは図10、図11に対応する。図13のフローチャートも図8、図10と同じにO2センサ出力のリッチ、リーンの反転毎に実行する。
【0105】
TS学習値の更新の方法もマップ学習値やベース学習値の更新の方法と基本的に変わらない。
【0106】
学習許可条件の判定では、図14のステップ155、156、157が図9と相違する。つまり、TS学習では
ステップ155;学習領域が0である、
ステップ156;アイドル回転数制御(図ではISC制御で略記)がクローズド中である、
ステップ157;アイドルスイッチがOFFよりONに切換わってからTS学習ディレイ時間DTSLRN#が経過した
ときをTS学習許可条件に含めている。
【0107】
ここで、学習領域が0である場合にだけTS学習を許可するのは、この領域ではTPよりもTsのほうがCTinに対する寄与割合が大きく、したがってこのときの理論空燃比からの空燃比誤差は主にTsの誤差に伴うものであるからである。また、負荷の小さい学習領域でありながら、4、8、12の各学習領域でTS学習を許可しないのは、この領域ではフュエルカットが行われることがあり、フュエルカット時にはTS学習を行うことができないからである。アイドル回転数制御がクローズド中に限りTS学習を許可するのは、回転数、空燃比がクローズド中以外よりも安定するからである。アイドルスイッチがOFFよりONに切換わってからディレイ時間が経過するのを待つのは、TS学習値を安定させるためである。
【0108】
なお、図14においては図9のステップ65、66と同じ部分がない。これは、TS学習値の更新を行うのがアイドル時に限られるので、TPとNより運転条件をみる必要がないからである。
【0109】
図13においては、学習許可条件の成立時にステップ132、133で(ALP 1+ALP 2)/2と100%を比較し、(ALP 1+ALP 2)/2<100のとき(リッチ側にあるとき)、ステップ134に進んで
X3(new)=X3(old)−DLRNTS …(11)
ただし、X3(new):更新後のTS学習値[%]
X3(old):更新前のTS学習値[%]
DLRNTS:更新量[%]
の式により、また(ALP 1+ALP 2)/2>100のとき(リーン側にあるとき)、ステップ135に進んで
X3(new)=X3(old)+DLRNTS …(12)
ただし、X3(new):更新後のTS学習値[%]
X3(old):更新前のTS学習値[%]
DLRNTS:更新量[%]
の式によりTS学習値を更新する。一方、(ALP 1+ALP 2)/2=100のときはステップ132、133よりステップ136に進み、
X3(new)=X3(old) …(13)
の式によりTS学習値を更新する。ただし、この段階ではX3(new)の値を、TS学習値として格納することはしない。
【0110】
学習領域が0のときは主にアイドル時であり、アイドル時に学習値を大きく変化させる(つまり空燃比を大きく変化させる)と回転変動が大きくなるので、これを避けるため、(11)、(12)式のDLRNTSには比較的小さな値を与えている。
【0111】
ステップ138ではTS学習収束カウンタ(バックアップRAMに格納)CLTSTDをインクリメントし、この学習収束カウンタCLTSTDと所定値NLTSTD#をステップ139において比較する。CLTSTD≧NLTSTD#のときステップ140に進んでTS学習収束フラグFLTSTDに“1”をセットし、それ以外ではステップ141、142に進んでFLTSTD=0かつすべてのマップ学習収束カウンタCLRNTDi=0とする。TS学習値が未収束のときは、マップ学習値の更新をやり直すため、CLRNTDi=0とするのである。
【0112】
図13において説明を飛ばしたステップ137のリミッタ処理Aは本発明により新たに導入する部分であり、後で詳述する。
【0113】
これで、単位の異なる学習値を用いた現状の空燃比学習制御の説明を終える。
【0114】
さて、最近の空燃比学習制御では、学習値に対して所定の範囲のリミッタを設けることで、燃料インジェクタやエアフローメータの製造時の部品バラツキや経時劣化を吸収でき、かつ誤学習による理論空燃比からの空燃比誤差も同じ所定の範囲以内であれば、エンスト等の不具合を回避できることがわかっている。
【0115】
しかしながら、上記のようにマップ学習値(あるいはベース学習値)とTS学習値をともに用いるものでは、現在のところ各学習値毎に独立してリミッタを設けているため、2つの学習値のトータルで所定の範囲のリミッタを確保するのが難しく、一方の学習値が上限リミッタや下限リミッタに張り付いたときには、2つの学習値のトータルでリミッタが所定の範囲を超えてしまう事態が生じる。
【0116】
たとえば現在のところ、マップ学習値、ベース学習値、TS学習値の各学習値に対して、
RLRMIN#[%]≦マップ学習値≦RLRMAX#[%]…(14)
RLRMIN#[%]≦ベース学習値≦RLRMAX#[%]…(15)
LTSMIN#[ms]≦TS学習値≦LTSMAX#[ms]…(16)
のように各学習値ごとに独立してリミッタを設定している。ただし、(14)、(15)、(16)式においてRLRMAX#、RLRMIN#はマップ学習値(またはベース学習値)の上限値(たとえば110%)、下限値(たとえば90%)、また、LTSMAX#、LTSMIN#はTS学習値の上限値(たとえば+0.1ms)、下限値(たとえば−0.1ms)である。
【0117】
ここで、マップ学習値とベース学習値はいずれかが選択され、両方がともに選択されることはないので、マップ学習値とTS学習値の組み合わせで考える。この場合に、マップ学習値はTPに対する乗算項として、またTS学習値はTPに対する加算項として加わることから、マップ学習値のリミッタについてはTPに関係なくRLRMAX#が上限リミッタ、RLRMIN#が下限リミッタとなるのに対して、TS学習値のリミッタについてはTPが小さくなるほどTPに対するリミッタ分が大きくなっていくため、TPを横軸にとり、マップ学習値のリミッタと無効パルス幅のリミッタを重ねたとき、図15上段のようになる。つまり、マップ学習値が上限リミッタや下限リミッタに張り付いたとき、TS学習値がリミッタ分を超えなくても、2つの学習値のトータルでリミッタが所定の範囲(±10%)を超えてしまうのである。
【0118】
これに対処するため本発明の第1実施形態では、TS学習値をTPに対するパーセントに換算した値と、もともとパーセントで設定されるマップ学習値とのトータルでリミッタが所定の範囲である±10パーセントに収まるように2つの学習値をそれぞれ制限する。
【0119】
ここで、本発明のリミッタの制御イメージを図15下段を参照して概説すると、TS学習値のリミッタをTPに対するパーセント表示に換算した値とマップ学習値のリミッタとのトータルで±10%となるように、マップ学習値のリミッタを定めたとき、図示のように、TPが小さくなるほど100%に近づいていく曲線がそれぞれマップ学習値の上限リミッタ、下限リミッタとなる。したがって、マップ学習値を更新したり参照するとき、マップ学習値のリミッタを外れないように、またTS学習値についてもTS学習値を更新したり参照するときTS学習値のリミッタを外れないように各学習値を制限することで、噴射時間表示のTS学習値と%表示の学習値を合わせもつものにおいても、2つの学習値のトータルでのリミッタ(%単位)を±10%以内に収め、これによって誤学習の悪影響を小さくするとともに、エンスト等の不具合を回避することができるのである。
【0120】
ただし、マップ学習値は学習領域毎の値であり、TPに対して不連続な値をとることから、実際には図15下段に示した曲線がそのままマップ学習値のリミッタを定めるものではない。
【0121】
具体的には、図16にまとめて示したように、マップ学習値とTS学習値に対して学習値の更新時、参照時のリミッタ処理を学習領域毎に行う。図16に示したリミッタ処理を実現するため、
▲1▼図3に示すLALPHAの検索においてステップ17、28のリミッタ処理B2とステップ21、25のリミッタ処理C2を、
▲2▼図8に示すマップ学習値の更新においてステップ54のリミッタ処理B1を、
▲3▼図10に示すベース学習値の更新においてステップ83のリミッタ処理C1を、
▲4▼図12に示すTS学習値の参照においてステップ116〜122のリミッタ処理を、
▲5▼図13に示すTS学習値の更新においてステップ137のリミッタ処理Aを追加している。
【0122】
なお、図16はマップ学習値が選択されたときの2つの学習値(マップ学習値とTS学習値)のリミッタ処理を示しているが、実施形態ではベース学習値が選択されることがあり、このときもマップ学習値が選択されたときと同様に2つの学習値(ベース学習値とTS学習値)のリミッタ処理を行わなければならないので、▲1▼〜▲5▼にはベース学習値についてのリミッタ処理も含めている。
【0123】
以下、▲1▼〜▲5▼の順ではなく、
〈1〉TS学習値の更新時のリミッタ処理(上記▲5▼に対応)
〈2〉TS学習値の参照時のリミッタ処理(上記▲4▼に対応)
〈3〉マップ学習値の更新時、参照時のリミッタ処理(上記▲2▼、▲1▼に対応)
〈4〉ベース学習値の更新時、参照時のリミッタ処理(上記▲3▼、▲1▼に対応)
の順に項分けして説明する。
【0124】
〈1〉TS学習値の更新時のリミッタ処理
TS学習値の更新時のリミッタ処理は図13のステップ137のリミッタ処理Aのことである。この処理を行うため、サブルーチンとして図17のフローチャートを設けている。つまり、図13においてステップ137に進んだときは、図17に飛んで図17の処理をすべて実行した後、再び図13に戻り、ステップ138以降を実行することになる。なお、後述するリミッタ処理B1、C1、C2についてもサブルーチンとして図19、図20、図22、図23のフローチャートを設けている。
【0125】
図17においてステップ161〜165は上限リミッタ処理を、166〜170は下限リミッタ処理をそれぞれ行う部分である。上限リミッタ処理と下限リミッタ処理とで内容は同様であるので、主に上限リミッタ処理を説明する。
【0126】
ステップ161ではTP(図2のステップ3で得ている)を用いて
LTSMAX2=TP×(RLRMAX#−TALP0)/100×2…(17)
ただし、RLRMAX#:学習値上限値[%]
TALP0:学習領域0でのマップ学習値[%]
の式によりTS学習値の上限値LTSMAX2[ms]を計算する。
【0127】
ここで、(17)式がどういう値であるかを図18を用いて説明すると、同図は前述した図15下段と基本的に同じもので、図18においてTPが大きくなるほど学習値上限値RLRMAX#に近づいていく曲線が、TS学習値に対するリミッタ分とマップ学習値に対するリミッタ分を分ける境界である。実際にはマップ学習値は学習領域毎の値(不連続値)であるから、図示のように、マップ学習値に対するリミッタは階段状の値となる。なお、TP格子点(TALPP0#、TALPP1#、TALPP2#、TALPP3#)では黒丸のほうの値である。
【0128】
さて、学習領域が0のときTS学習値に対する上限リミッタ分として許されるのは、RLRMAX#からTALP0までのあいだ(つまり図示の矢印幅)であり、この値はパーセント単位であるため、これを100パーセントで割った値にTP[ms]をかけることによってms単位でのTS学習値に対する上限値へと換算するのである。なお、(17)式右辺の2はシーケンシャル噴射に対応させるための値である。
【0129】
ステップ162では、この上限値LTSMAX2とTS学習上限値LTSMAX#[ms]との小さいほうを上限リミッタ[ms]として選択する。これは次の理由からである。TS学習上限値LTSMAX#は、現状と同じにTS学習値単独で設定している上限値であり(上記の(16)式参照)、このLTSMAX#とLTSMAX2との小さいほうを選択することでTS学習値の範囲を狭めて誤学習の影響を小さくするためである。
【0130】
このようにしてTS学習値に対する上限リミッタが定まれば、ステップ163においてこの上限リミッタとLRNTSを比較し、LRNTSが上限リミッタを超えているときはステップ164、165に進んでLRNTSを上限リミッタに制限するとともに、その上限リミッタの値を変数X3(new)に入れる。
【0131】
同様にして、ステップ166では
LTSMIN2=TP×(RLRMIN#−TALP0)/100×2…(18)
ただし、RLRMIN#:学習値下限値[%]
TALP0:学習領域0でのマップ学習値[%]
の式によりTS学習値の下限値LTSMIN2[ms]を計算し、このLTSMIN2とTS学習下限値LTSMIN#[ms]の大きいほうをステップ167において下限リミッタ[ms]として選択する。この下限リミッタとLRNTSを比較し、LRNTSが下限リミッタを下回るときはステップ169、170に進んでLRNTSを下限リミッタに制限するとともに、その下限リミッタの値を変数X3(new)に入れる。
【0132】
ステップ171では変数X3(new)の値をTS学習値として格納する。つまり、TS学習値の更新時に図13のステップ134、135、136でTS学習値が更新されていても、ステップ137のリミッタ処理AにおいてLRNTSがリミッタで制限されたときはその制限された値でTS学習値をさらに更新するのである。
【0133】
〈2〉TS学習値の参照時のリミッタ処理
TS学習値の参照時のリミッタ処理は図12のステップ116〜122である。
【0134】
図12において、ステップ116で学習領域をみて、学習領域が0、4、8、12のときだけステップ117以降に進む。
【0135】
ステップ117、118、119は上限リミッタ処理を、ステップ120、121、122は下限リミッタ処理をそれぞれ行う部分である。
【0136】
ステップ117では、
LTSMAX2=TP×(RLRMAX#−TALP)/100×2…(19)
ただし、RLRMAX#:学習値上限値[%]
TALP:0、4、8、12の各学習領域でのマップ学習値[%]
の式によりTS学習値の上限値LTSMAX2[ms]を計算し、このLTSMAX2とLRNTSをステップ118において比較し、LTSMAX2<LRNTSのときはステップ119に進んでLTSMAX2の値をLRNTSに移す。
【0137】
同様にして、ステップ120では
LTSMIN2=TP×(RLRMIN#−TALP)/100×2…(20)
ただし、RLRMIN#:学習値下限値[%]
TALP:0、4、8、12の各学習領域でのマップ学習値[%]
の式によりTS学習の下限値LTSMIN2[ms]を計算し、このLTSMIN2とLRNTSをステップ121において比較し、LTSMIN2>LRNTSのときはステップ122に進んでLTSMIN2の値をLRNTSに移す。
【0138】
(19)、(20)式を上記の(17)、(18)式と比較すればわかるように、学習領域でのマップ学習値が異なるだけで同等の式である。
【0139】
しかしながら、TS学習値の参照時には、リミッタでLRNTSを制限するだけで、LRNTSがリミッタにより制限されたとき、そのリミッタ値でTS学習値を更新することはしていない(図17のステップ165、170に対応するステップが図12にない)。これは次の理由による。学習領域0、4、8、12では他の学習領域よりTPが小さいのであるが、これら4つの学習領域の中でもTPが小さくなると、(19)式右辺の値、(20)式右辺の値が小さくなる。したがって、このときにもTS学習値を更新したのでは、TS学習値が小さな値となってしまうので、これを避けるため、学習領域が0、4、8、12での参照時に限ってはリミッタでTS学習値を更新することはしないのである。
【0140】
〈3〉マップ学習値の更新時、参照時のリミッタ処理
マップ学習値の更新時のリミッタ処理は、図8のステップ54のリミッタ処理B1のことで、このリミッタ処理B1を図19、図20(図8ステップ54のサブルーチン)のフローチャートにより説明する。
【0141】
図19においてステップ181、182では学習領域をみる。ここでの学習領域は、図4に示したようにTP格子だけにより4つに分割し、各学習領域を区別するためA0、A1、A2、A3を割り振っている。たとえば学習領域A0は学習領域0、4、8、12を合わせたものである。
【0142】
学習領域がA0、A1にあるときは図19のステップ183〜187、図20のステップ188〜193に、学習領域がA2にあるときは図19のステップ194〜198、図20のステップ199〜204に、学習領域がA3にあるときは図19のステップ205〜209、図20のステップ210〜215に進む。このうち、図19のほうのステップ183〜187、ステップ194〜198、ステップ205〜209が上限リミッタ処理、図20のほうのステップ188〜192、ステップ199〜203、ステップ210〜214が下限リミッタ処理をそれぞれ行う部分であり、両者で処理内容は同様であるので、これも上限リミッタ処理のほうで代表させる。
【0143】
ステップ183、194、205では
ただし、RLRMAX#:学習値上限値[%]
LRNTS0:TS学習値[ms]
の式によりマップ学習領域毎上限値RLMAX1[%]、RLMAX2[%]、RLMAX3[%]をそれぞれ計算し、これらのそれぞれと学習値上限値RLRMAX#のいずれか小さいほうをステップ184、195、206において上限リミッタに設定する。
【0144】
ここで、(21)、(22)、(23)式の中から(21)式を例にとり、(21)式右辺の値を、TPでなくTALPP1#(学習領域A1の下限を定めるTP格子)に対する値とする理由を図21を用いて説明する。
【0145】
学習領域A1においてTPがTP1のとき、TS学習値に対するリミッタ分は{LRNTS0/(TP1×2)}×100(%表示)であるから、RLRMAX#からこの分を差し引いた値、つまり
RLRMAX#−{LRNTS0/(TP1×2)}×100…(24)
がマップ学習値に対する上限値となる。
【0146】
これに対して、同じ学習領域A1においてTP1よりも小さなTP2のときは、
RLRMAX#−{LRNTS0/(TP2×2)}×100…(25)
がマップ学習値に対する上限値になることから、TPがTP1より小さくなるのにつれてマップ学習値に対する上限値を減少させなけれならない。したがって、(24)の値を学習領域A1の全体についてのマップ学習値の上限値としたのでは、学習領域A1のうちTP1未満の領域でマップ学習値の上限値が大きくなり過ぎ、2つの学習値のトータルでリミッタがRLRMAX#を超える事態が生じてしまう。そこで、学習領域A1において最小のTP(つまりTALPP1#)のときの値である
RLRMAX#−{LRNTS0/(TALPP1#×2)}×100
を学習領域A1の全体についてのマップ学習値の上限値としたわけである。
【0147】
なお、学習領域A0でのマップ学習領域毎上限値は学習領域A1でのマップ学習領域毎上限値に等しくしている。これは、学習領域A0においては、(21)式からの類推により
RLRMAX#−{LRNTS0/(TALPP0#×2)}×100…(26)
の値がマップ学習領域毎上限値となりそうであるが、TALPP0#が0であることより、(26)第2項目の値を計算することができないこと、また学習領域A0ではTS学習値のほうでリミッタにより制限していることから、学習領域A0でのマップ学習領域毎上限値を学習領域A1でのマップ学習領域毎上限値に等しくしているのである。
【0148】
図19のステップ185、196、207では上限リミッタとLRNALPを比較し、上限リミッタ<LRNALPのときはステップ186、197、208に進んで、上限リミッタをLRNALPに入れ、さらにステップ187、198、209において上限リミッタの値を変数X1(new)に移す。
【0149】
図20のステップ188〜192、ステップ199〜203、ステップ210〜214では図19のステップ183〜187、ステップ194〜198、ステップ205〜209と同様にして、学習領域毎に下限リミッタ処理を行う。
【0150】
ステップ193、204、215では、変数X1(new)の値を、対応する学習領域(このときの学習領域はA0、A1、A2、A3でなく、図4の1〜15の各領域である)のマップ学習値TALPとして格納する。つまり、マップ学習値の更新時に図8のステップ53でマップ学習値が更新されていても、ステップ54のリミッタ処理B1においてLRNALPがリミッタで制限されたときはその制限された値でマップ学習値をさらに更新する。
【0151】
次に、マップ学習値の参照時のリミッタ処理は、図3のステップ17、28の各リミッタ処理B2のことであるが、このリミッタ処理B2も図19、図20に示したリミッタ処理B1(マップ学習値の更新時のリミッタ処理)と同様である。このときは、図19、図20においてステップ187、192、193、198、203、204、209、214、215で上限リミッタ、下限リミッタの各リミッタを変数X1(new)に入れたあと、この変数X1(new)の値を、対応する学習領域のマップ学習値として格納する代わりに、上限リミッタ、下限リミッタの各リミッタを直接に、対応する学習領域のマップ学習値として格納すればよい。つまり、マップ学習値の参照時にも、上限リミッタ、下限リミッタの各リミッタでLRNALPを制限するとともに、リミッタでLRNALPを制限したときはその制限した値でマップ学習値を更新するのである。
【0152】
ここで、マップ学習値の参照時にもリミッタにより制限した値でマップ学習値を更新するのは次の理由からである。2つの学習値(マップ学習値とTS学習値)がある場合は、両方を同じタイミングで更新して各学習値とも最新値に置き換えていくことにより初めて、2つの学習値のトータルでリミッタを学習値上限値RLRMAX#と学習値下限値RLRMIN#の間に収めることができる。しかしながら、2つの学習値は学習許可条件が異なり、同じタイミングで更新されることがないため、2つの学習値のトータルでリミッタが学習値上限値RLRMAX#を超えたり学習値下限値RLRMIN#を下回ることが考えられる。そこで、マップ学習値の参照時にもリミッタにより制御した値でマップ学習値を更新することにより、できるだけ更新の機会を増やし、トータルの学習値のリミッタが学習値上限値RLRMAX#を超えることも、学習値下限値RLRMIN#を下回ることもないようにしているのである。
【0153】
〈4〉ベース学習値の更新時、参照時のリミッタ処理
ベース学習値の更新時のリミッタ処理は図10のステップ83のリミッタ処理C1、またベース学習値の参照時のリミッタ処理は図3のステップ21、25のリミッタ処理C2である。このうちリミッタ処理C1を図22(図10のステップ83のサブルーチン)のフローチャートにより、またリミッタ処理C2を図23(図3のステップ21、25のサブルーチン)のフローチャートにより説明する。
【0154】
ベース学習値の更新時のリミッタ処理はマップ学習値の更新時のリミッタ処理と同様である。ただし、マップ学習値と異なりベース学習値は図5に示したように1つの学習領域であるため、ベース学習値の上限値、下限値の各計算式が図22のステップ221、226に示したように、
ただし、RLMAX0:ベース学習値の上限値[%]
RLMIN0:ベース学習値の下限値[%]
RLRMAX#:学習値上限値[%]
RLRMIN#:学習値上限値[%]
LRNTS0:TS学習値[ms]
BSLTPL#:ベース学習許可下限TP
となっている。
【0155】
ここで、(27)、(28)式において右辺第2項の分母がTP×2でなくBSLTPL#×2であるのは、図19のステップ183、図20のステップ188において右辺第2項の分母がTP×2でなくTALPP1#×2であるのと同じ理由からである。なお、(27)式右辺の値を図24に示す。
【0156】
これに対してベース学習値の参照時には、ベース学習値の上限値、下限値の各計算式が図23のステップ241、245に示したように、
ただし、RLMAX0:ベース学習値の上限値[%]
RLMIN0:ベース学習値の下限値[%]
RLRMAX#:学習値上限値[%]
RLRMIN#:学習値上限値[%]
LRNTS0:TS学習値[ms]
となり、これら上限値RLMAX0、下限値RLMIN0でBSALPを制限するものの(ステップ242、243、244、246、247、248)、制限した値でベース学習値を更新することはしない(図22のステップ225、230、231に対応する部分が図23にない)。
【0157】
ベース学習値の参照時に、リミッタにより制限するだけで、その制限した値でベース学習値を更新しないのは次の理由からである。(29)、(30)式においてTPが0に近づいていくとき、(29)、(30)式右辺第2項が大きくなり、(29)、(30)式右辺の値が0に近づいていくので、このときにまでベース学習値を更新したのでは、ベース学習値がごくわずかな値になってしまう。これを避けるため、ベース学習値の参照時にリミッタにより制限した値でベース学習値を更新することはしないのである。
【0158】
実施形態では、加算項の学習値がTS学習値、乗算項の学習値がマップ学習値(またはベース学習値)である場合で説明したが、これに限られるものでない。
【図面の簡単な説明】
【図1】第1実施形態の制御システム図である。
【図2】気筒別燃料噴射パルス幅CTinの演算を説明するためのフローチャートである。
【図3】空燃比学習値LALPHAの検索を説明するためのフローチャートである。
【図4】マップ学習値の学習領域図である。
【図5】ベース学習値の学習領域図である。
【図6】マップ学習値とベース学習値の切換を説明するための波形図である。
【図7】空燃比フィードバック補正係数ALPHAの演算を説明するためのフローチャートである。
【図8】マップ学習値の更新を説明するためのフローチャートである。
【図9】学習許可条件の判定を説明するためのフローチャートである。
【図10】ベース学習値の更新を説明するためのフローチャートである。
【図11】学習許可条件の判定を説明するためのフローチャートである。
【図12】TS学習値の参照を説明するためのフローチャートである。
【図13】TS学習値の更新を説明するためのフローチャートである。
【図14】学習許可条件の判定を説明するためのフローチャートである。
【図15】現状のリミッタ処理の制御イメージと本発明のリミッタ処理の制御イメージを対比して示す特性図である。
【図16】各学習領域毎のリミッタ処理をまとめて示す特性図である。
【図17】TS学習値の更新時のリミッタ処理を説明するためのフローチャートである。
【図18】TS学習値に対するリミッタ分を説明するための特性図である。
【図19】マップ学習値の更新時のリミッタ処理を説明するためのフローチャートである。
【図20】マップ学習値の更新時のリミッタ処理を説明するためのフローチャートである。
【図21】マップ学習値の更新時のマップ学習値に対するリミッタ分を説明するための特性図である。
【図22】ベース学習値の更新時のリミッタ処理を説明するためのフローチャートである。
【図23】ベース学習値の参照時のリミッタ処理を説明するためのフローチャートである。
【図24】ベース学習値の更新時のベース学習値に対するリミッタ分を説明するための特性図である。
【図25】第1の発明のクレーム対応図である。
【符号の説明】
1 エンジン
2 コントロールユニット
3 燃料インジェクタ
4 エアフローメータ
7 クランク角センサ
9 O2センサ
【発明の属する技術分野】
この発明はエンジンの空燃比制御装置、特に空燃比学習値にリミッタを設け、学習値がこのリミッタを超えないように制限するものに関する。
【0002】
【従来の技術】
空燃比制御に2種以上の学習値を導入するものがある。この種の装置として、たとえば特開昭64−19143号公報では、マップ学習値KLCD2のほかに、噴射弁流量特性値の学習値(1データ)KLCD1と無効噴射パルス幅の学習値(以下、簡単に「TS学習値」という、1データ)KLCD3を導入し、
Tp=(Qa/N)×KCONST×KLCD1
ただし、Tp:基本噴射パルス幅
Qa:吸入空気流量
N:エンジン回転数
KCONST:噴射定数
の式により基本噴射パルス幅Tpを計算するとともに、
Ti=Tp×COEF×KLCD2×ALPHA+Ts+KLCD3
ただし、COEF:1と各種補正係数の和
ALPHA:空燃比フィードバック補正係数
Ts:無効噴射パルス幅
の式により1サイクル値に必要となる燃料噴射パルス幅Tiを計算している。
【0003】
【発明が解決しようとする課題】
ところで、最近の空燃比学習制御では、学習値に対して所定の範囲(あるいは一定割合)のリミッタを設けることで、燃料インジェクタやエアフローメータの製造時の部品バラツキや経時劣化を吸収することができ、また誤学習による理論空燃比からの空燃比誤差も同じ所定の範囲以内であれば、エンスト等の不具合を回避できることがわかっている。
【0004】
しかしながら、従来装置において、KLCD1、KCLD2は乗算の形で導入された学習値(以下「乗算項の学習値」という)であるのに対してKLCD3は加算の形で導入された学習値(以下「加算項の学習値」という)であり、このように異なる形式の2つの学習値を合わせもつものにおいて、各学習値毎に独立してリミッタを設けたのでは、2つの学習値のトータルで所定の範囲のリミッタを確保するのが難しく、一方の学習値が上限リミッタや下限リミッタに張り付いたとき2つの学習値のトータルでリミッタが所定の範囲を超えてしまう事態が生じる。
【0005】
たとえば、話を簡単にするため従来装置においてKLCD1、COEFを省略し、
Tp=(Qa/N)×KCONST …(a)
Ti=Tp×マップ学習値×ALPHA+Ts+TS学習値 …(b)
の式で考える。
【0006】
ここで、学習値のリミッタの説明に入る前に、燃料噴射パルス幅の演算式の意味するところを簡単に説明する。まずTsは燃料インジェクタの応答遅れを考慮するものである。燃料インジェクタにTpの間だけ開弁する信号を与えても、すぐには開くことができず、応答遅れをもって開くので、この応答遅れ分だけ噴射期間が短くなって燃料が不足する。そこで、Tsの分だけ多くすることによって実際にTpの間だけ開弁させるようにしているわけである。通常、Tsはバッテリ電圧の影響を大きく受け、バッテリ電圧が低下するほど応答遅れが大きくなるので、バッテリ電圧が低下するほど大きくなる値となっている。
【0007】
一方、エアフローメータや燃料インジェクタの流量特性に製作バラツキや経時劣化があると、排気の空燃比が理論空燃比からずれてくるが(この場合の理論空燃比からのずれ(空燃比偏差)が定常偏差といわれる)、マップ学習値はこれら空燃比制御部品の製作バラツキや経時劣化に左右されずに、空燃比フィードバック制御を行わない運転条件においても定常偏差を解消するための値である。たとえば、燃料インジェクタの流量特性が設定値より小さいものでは、噴射量が不足して排気の空燃比がリーン側に傾き、このリーン側に傾いた空燃比を理論空燃比に戻そうとALPHA(中心値は100%)が100%よりも大きな値へと変化していく。このときのALPHAに基づいてマップ学習値(中心値は100%)が更新されるので、マップ学習値は100%より大きい値へと変化してゆく。このようにして、マップ学習値が収束した段階では、ALPHAが演算されなくとも、ふたたび空燃比が理論空燃比へと落ち着くことになり、燃料インジェクタの流量特性が設定値より小さいものであっても、流量特性が設定通りの燃料インジェクタと変わらなくなるわけである。
【0008】
同様にして、燃料インジェクタの開き初めのタイミングに製作バラツキや経時劣化があっても、排気の空燃比が理論空燃比からずれるので、このずれを解消するための値がTS学習値である。たとえば燃料インジェクタの開き初めのタイミングが設定値より遅れるものでは、噴射量が不足して排気の空燃比がリーン側に傾き、このリーン側に傾いた空燃比を理論空燃比に戻そうとALPHAが100%よりも大きな値へと変化し、このときのALPHAに基づいて更新されるTS学習値(中心値は0ms)、0msより大きい値へと変化する。したがって、TS学習値が収束した段階で、ALPHAが演算されなくともふたたび空燃比が理論空燃比へと落ち着くことになり、燃料インジェクタの開き初めのタイミングが設定値より遅れるものであっても、開き初めのタイミングが設定通りの燃料インジェクタと変わらなくなる。
【0009】
ただし、マップ学習値とTS学習値とで学習許可条件を相違させており、マップ学習値は学習領域毎に更新するのに対して、TS学習値は低負荷域でだけ更新している。これは、低負荷域ではTsよりもTpが相対的に小さく、したがって低負荷域における理論空燃比からのずれ(空燃比偏差)は、Tsによる分が支配的となるので、Ts学習値を更新させるようにしたものである。
【0010】
これで燃料噴射パルス幅の演算式の説明を終える。
【0011】
さて、上記(b)式のマップ学習値(乗算項の学習値)とTS学習値(加算項の学習値)を、
90%≦マップ学習値≦110% …(c)
−0.1ms≦TS学習値≦+0.1ms …(d)
のように各学習値毎に独立してリミッタを設定したとする。このとき、マップ学習値はTpに対する乗算項として、またTS学習値はTpに対する加算項として加わることから、マップ学習値のリミッタについてはTpの大小に関係なく110%が上限リミッタ、90%が下限リミッタとなるのに対して、TS学習値のリミッタについてはTpが小さくなるほどTpに対するリミッタ分が大きくなっていくため、いまTpを横軸にとり、マップ学習値のリミッタとTS学習値のリミッタを重ねてみると、図15上段に示したようになる。つまり、Tpが小さい領域では、TS学習値のTpに対するリミッタ分が急激に大きくなるため、マップ学習値が上限リミッタの110%や下限リミッタの90%に張り付いたとき、TS学習値がリミッタ分を超えなくても、2つの学習値のトータルでリミッタが±10%を超えてしまうのである。
【0012】
そこで本発明は、加算項の学習値を基本噴射量に対する割合(たとえばパーセント)に換算した値と、もともと割合の単位で設けられる乗算項の学習値とのトータルでリミッタが所定の範囲(たとえば±10パーセント)に収まるように2つの学習値をそれぞれ制限することにより、単位の異なる加算項の学習値と乗算項の学習値を合わせもつものにおいても、2つの学習値のトータルでのリミッタを所定の範囲に収めることができ、これによって誤学習の悪影響を小さくするとともに、エンスト等の不具合を回避することを目的とする。
【0013】
【課題を解決するための手段】
第1の発明は、図25に示すように、エンジンの負荷と回転数に基づいて基本噴射量TP0を演算する手段21と、乗算項の学習値を割合の単位(たとえばパーセント)で格納する手段22と、加算項の学習値を噴射量の単位(たとえばms)で格納する手段23と、前記加算項の学習値を前記基本噴射量TP0に対する割合に換算した値と前記乗算項の学習値とのトータルでリミッタが所定の範囲(たとえば±10パーセント)に収まるように前記2つの学習値をそれぞれ制限する手段24、25と、排気の空燃比を検出する手段26と、この空燃比検出手段26の出力に基づいて空燃比が理論空燃比と一致するように空燃比フィードバック補正量ALPHAを演算する手段27と、この空燃比フィードバック補正量ALPHAと前記制限された2つの学習値とで前記基本噴射量TP0を補正して燃料噴射量を演算する手段28と、この噴射量の燃料をエンジンに供給する手段29とを設けた。
【0014】
第2の発明では、第1の発明において前記燃料噴射量が前記基本噴射量と無効噴射量の和からなり、前記加算項の学習値がこの無効噴射量の学習値である。
【0015】
第3の発明では、第2の発明において前記無効噴射量の学習値を低負荷域でだけ前記空燃比フィードバック補正量ALPHAに基づいて更新する。
【0016】
第4の発明では、第2または第3の発明において前記乗算項の学習値が学習領域毎の学習値である。
【0017】
第5の発明では、第4の発明において前記学習領域毎の学習値を低負荷域以外の運転域で前記空燃比フィードバック補正量ALPHAに基づいて更新する。
【0018】
第6の発明では、第2または第3の発明において前記乗算項の学習値がパージカット時の学習値である。
【0019】
第7の発明では、第6の発明において前記パージカット時の学習値を所定の1つの学習領域でだけ前記空燃比フィードバック補正量ALPHAに基づいて更新する。
【0020】
第8の発明では、第2または第3の発明において前記乗算項の学習値がパージカット時の学習値と学習領域毎の学習値とからなり、パージカット時の学習値からしきい値SLALPを差し引いた値と学習領域毎の学習値との比較により、パージカット時の学習値からしきい値SLALPを差し引いた値が学習領域毎の学習値以下のときパージカット時の学習値を、またパージカット時の学習値からしきい値SLALPを差し引いた値が学習領域毎の学習値を超えるとき学習領域毎の学習値を選択する。
【0021】
第9の発明では、第2または第3の発明において前記無効噴射量の学習値単独でリミッタLTSMAX#、LTSMIN#を設ける(たとえばLTSMAX#=+0.1ms、LTSMIN#=−0.1ms)。
【0022】
第10の発明では、第9の発明において前記無効噴射量の学習値の更新時に、前記基本噴射量TP0に応じたリミッタLTSMAX2、LTSMIN2で無効噴射量の学習値を制限するとともに、そのリミッタで無効噴射量の学習値が制限されるときは、そのリミッタで無効噴射量の学習値を更新する。
【0023】
第11の発明では、第9の発明において前記無効噴射量の学習値の更新時に、前記基本噴射量TP0に応じたリミッタLTSMAX2、LTSMIN2と前記無効噴射量の学習値単独のリミッタLTSMAX#、LTSMIN#との狭いほうで無効噴射量の学習値を制限するとともに、その狭いほうのリミッタで無効噴射量の学習値が制限されるときは、その狭いほうのリミッタで無効噴射量の学習値を更新する。
【0024】
第12の発明では、第9または第10の発明において前記無効噴射量の学習値の参照時に、低負荷域に限り前記基本噴射量TP0に応じたリミッタLTSMAX2、LTSMIN2で無効噴射量の学習値を制限する。
【0025】
第13の発明では、第10から第12までのいずれか一つの発明において前記リミッタが、2つの学習値(無効噴射量の学習値と乗算項の学習値)のトータルとして割合の単位(たとえばパーセント)で予め定めたリミッタRLRMAX#、RLRMIN#から前記乗算項の学習値を差し引いた値に前記基本噴射量TP0をかけた値である。
【0026】
第14の発明では、第4または第5の発明において前記学習領域毎の学習値の更新時に、前記無効噴射量の学習値に応じたリミッタRLMAX1、RLMAX2、RLMAX3、RLMIN1、RLMIN2、RLMIN3で学習領域毎の学習値を制限するとともに、そのリミッタで学習領域毎の学習値が制限されるときは、そのリミッタで学習領域毎の学習値を更新する。
【0027】
第15の発明では、第4または第5の発明において前記学習領域毎の学習値の更新時に、前記無効噴射量の学習値に応じたリミッタRLMAX1、RLMAX2、RLMAX3、RLMIN1、RLMIN2、RLMIN3と2つの学習値(無効噴射量の学習値と学習領域毎の学習値)のトータルとして割合の単位で予め定めたリミッタRLRMAX#、RLRMIN#との狭いほうで学習領域毎の学習値を制限するとともに、その狭いほうのリミッタで学習領域毎の学習値が制限されるときは、その狭いほうのリミッタで学習領域毎の学習値を更新する。
【0028】
第16の発明では、第4、第5、第14、第15のいずれか一つの発明において前記学習領域毎の学習値の参照時に、前記無効噴射量の学習値に応じたリミッタRLMAX1、RLMAX2、RLMAX3、RLMIN1、RLMIN2、RLMIN3で学習領域毎の学習値を制限するとともに、そのリミッタで学習領域毎の学習値が制限されるときは、そのリミッタで学習領域毎の学習値を更新する。
【0029】
第17の発明では、第4、第5、第14、第15のいずれか一つの発明において前記学習領域毎の学習値の参照時に、前記無効噴射量の学習値に応じたリミッタRLMAX1、RLMAX2、RLMAX3、RLMIN1、RLMIN2、RLMIN3と2つの学習値(無効噴射量の学習値と学習領域毎の学習値)のトータルとして割合の単位で予め定めたリミッタRLRMAX#、RLRMIN#との狭いほうで学習領域毎の学習値を制限するとともに、その狭いほうのリミッタで学習領域毎の学習値が制限されるときは、その狭いほうのリミッタで学習領域毎の学習値を更新する。
【0030】
第18の発明では、第14から第17までのいずれか一つの発明において前記リミッタが、2つの学習値(無効噴射量の学習値と学習領域毎の学習値)のトータルとして割合の単位で予め定めたリミッタRLRMAX#、RLRMIN#から前記無効噴射量の学習値を前記基本噴射量TP0に対する割合に換算した値を差し引いた値である。
【0031】
第19の発明では、第18の発明において前記基本噴射量TP0に代えて各学習領域の負荷の下限を定める値を用いる。
【0032】
第20の発明では、第6または第7の発明において前記パージカット時の学習値の更新時に前記無効噴射量の学習値に応じたリミッタRLMAX0、RLMIN0でパージカット時の学習値を制限するとともに、そのリミッタでパージカット時の学習値が制限されるときは、そのリミッタでパージカット時の学習値を更新する。
【0033】
第21の発明では、第6または第7の発明において前記パージカット時の学習値の更新時に前記無効噴射量の学習値に応じたリミッタRLMAX0、RLMIN0と2つの学習値(無効噴射量の学習値とパージカット時の学習値)のトータルとして割合の単位で予め定めたリミッタRLRMAX#、RLRMIN#との狭いほうでパージカット時の学習値を制限するとともに、その狭いほうのリミッタでパージカット時の学習値が制限されるときは、その狭いほうのリミッタでパージカット時の学習値を更新する。
【0034】
第22の発明では、第20または第21の発明において前記リミッタが、2つの学習値(無効噴射量の学習値とパージカット時の学習値)のトータルとして割合の単位で予め定めたリミッタRLRMAX#、RLRMIN#から前記無効噴射量の学習値を前記基本噴射量TP0に対する割合に換算した値を差し引いた値である。
【0035】
第23の発明では、第22の発明において前記基本噴射量TP0に代えて学習領域の負荷の下限を定める値を用いる。
【0036】
第24の発明では、第6、第7、第20、第21の発明のいずれか一つにおいて前記パージカット時の学習値の参照時に前記無効噴射量の学習値に応じたリミッタRLMAX0、RLMIN0で前記パージカット時の学習値を制限する。
【0037】
第25の発明では、第6、第7、第20、第21の発明のいずれか一つにおいて前記パージカット時の学習値の参照時に前記無効噴射量の学習値に応じたリミッタRLMAX0、RLMIN0と2つの学習値(無効噴射量の学習値とパージカット時の学習値)のトータルとして割合の単位で予め定めたリミッタRLRMAX#、RLRMIN#との狭いほうで前記パージカット時の学習値を制限する。
【0038】
第26の発明では、第24または第25の発明において前記リミッタが、2つの学習値(無効噴射量の学習値とパージカット時の学習値)のトータルとして割合の単位で予め定めたリミッタRLRMAX#、RLRMIN#から前記無効噴射量の学習値を前記基本噴射量TP0に対する割合に換算した値を差し引いた値である。
【0039】
【発明の効果】
第1の発明では、乗算項の学習値が割合の単位、加算項の学習値が噴射量の単位となっており、両者で単位が相違している場合に、両者の単位をそろえるため加算項の学習値を基本噴射量に対する割合に換算し、その加算項の学習値の割合の単位への換算値と、もともと割合の単位である乗算項の学習値とのトータルでリミッタが所定の範囲に収まるように2つの学習値を制限するので、空燃比学習制御において加算項の学習値と乗算項の学習値を合わせもつものに対しても、基本噴射量の大小に関係なく、2つの学習値のトータルでリミッタが所定の範囲に収まり、これによって、誤学習の悪影響を小さくするとともに、エンスト等の不具合を回避することができる。
【0040】
低負荷域では基本噴射量よりも無効噴射量のほうが燃料噴射量に対する寄与割合が大きく、したがってこのときの理論空燃比からのずれは主に無効噴射量の誤差に伴うものであることより、第3の発明では低負荷域に限り無効噴射量の学習値を更新するので、無効噴射量の学習値の精度を高いものに維持できる。
【0041】
キャニスタにたくさんの燃料蒸気がたまっていた状態からパージが行われたときは、空燃比が一時的にリッチ側に傾き、このリッチに傾いた空燃比を理論空燃比に戻そうと空燃比フィードバック補正量が100%よりも小さい側に移動していくため、この空燃比フィードバック補正量に基づいて更新される学習領域毎の学習値が小さい側に移動し、しきい値を下回ってピークをとる。その後はパージガス濃度の減少とともに学習領域毎の学習値が再び大きくなり、パージがしばらく継続した後の状態に対する学習値へと収束してゆく。この場合に、そのピーク位置でリーン運転が開始されたときパージの継続によりキャニスタ内の燃料蒸気がなくなってゆくのに対して、学習領域毎の学習値はピーク位置の値のままでそれ以上更新されることがない。したがって、ピーク位置でリーン運転が開始された後も、更新されることのない学習領域毎の学習値を用いたのでは、パージの継続につれて実際のパージ状態と学習領域毎の学習値とが対応しなくなり、リーン運転中の空燃比がリーン側に大きく傾いてゆくため、空燃比の理論空燃比への制御精度が落ちてしまう。このとき、第8の発明では100%に近い値にあるパージカット時時の学習値を用いるので、空燃比の理論空燃比への制御精度が落ちてしまうことがない。
【0042】
第11の発明では無効噴射量の学習値の更新時に基本噴射量に応じたリミッタと無効噴射量の学習値単独のリミッタとの狭いほうで無効噴射量の学習値を、第15、第17の各発明では学習領域毎の学習値の更新時、参照時に無効噴射量の学習値に応じたリミッタと2つの学習値のトータルとして割合の単位で予め定めたリミッタとの狭いほうで学習領域毎の学習値を、第21、第25の各発明ではパージカット時の学習値の更新時、参照時に無効噴射量の学習値に応じたリミッタと2つの学習値のトータルとして割合の単位で予め定めたリミッタとの狭いほうでパージカット時の学習値をそれぞれ制限するので、いずれも学習値の範囲を狭めることができ、誤学習の影響をより小さくすることができる。
【0043】
基本噴射量に応じたリミッタを設ける場合に、他の負荷域より基本噴射量が小さい低負荷域において基本噴射量が小さくなるほどに基本噴射量に応じたリミッタも小さくなることから、このときにも無効噴射量の学習値を更新したのでは、無効噴射量の学習値を小さな値としてしまうのであるが、第12の発明では低負荷域に限り学習値を更新することはしないので、それまで比較的大きな値だった学習値を無用に小さくすることがない。
【0044】
2つの学習値(学習領域毎の学習値と無効噴射量の学習値)がある場合は、両方を同じタイミングで更新して各学習値とも最新値に置き換えていくことにより初めて、2つの学習値のトータルでリミッタを所定範囲に収めることができる。しかしながら、2つの学習値の学習許可条件が異なるときは同じタイミングで更新されることがないため、2つの学習値のトータルでリミッタが所定範囲に収まらないことが考えられる。このとき、第16の発明では学習領域毎の学習値の参照時にリミッタにより制御した値で、また、第17の発明では学習領域毎の学習値の参照時に狭いほうのリミッタにより制御した値で学習値を更新することで、できるだけ更新の機会を増やしているので、トータルの学習値のリミッタが所定範囲からはみ出す機会を減らすことができる。
【0045】
同じ学習領域において基本噴射量が小さくなるのにつれて学習値に対するリミッタを小さくしなければならない。したがって、同じ学習領域において比較的大きな値の基本噴射量(これをTP0Hとする)のときのリミッタをその学習領域全体についてのリミッタとしたのでは、同じ学習領域のうちTP0H未満の領域で学習値のリミッタが大きくなり過ぎ、2つの学習値のトータルでリミッタが所定範囲に収まらない事態が生じる。このとき第19と第23の各発明では、学習領域の負荷の下限を定める値に対するリミッタを、その同じ学習領域全体についてのリミッタとするので、広がりのある学習領域内で同じ値の学習値をもつ場合であっても、2つの学習値のトータルでリミッタが所定範囲に収まらない事態が生じることがない。
【0046】
無効噴射量の学習値に応じたリミッタを設ける場合に、基本噴射量が0に近づいていくときリミッタが0に近づいていくので、このときにまでパージカット時の学習値を更新したのでは、学習値がごくわずかな値になってしまうのであるが、第24の発明ではパージカット時の学習値の参照時にリミッタにより制限した値でベース学習値を更新することはしないので、また、第25の発明でもパージカット時の学習値の参照時に、狭いほうのリミッタにより制限した値でベース学習値を更新することはしないので、それまで比較的大きな値だった学習値を無用に小さくすることがない。
【0047】
【発明の実施の形態】
図1において、1はエンジン本体で、吸入空気はエアクリーナ11から吸気マニフォールドのコレクタ12a、分岐部12bを通ってシリンダに供給される。燃料は、運転条件に応じて所定の空燃比となるようにコントロールユニット2よりの噴射信号に基づき燃料インジェクタ3からエンジン1の吸気ポートに向けて噴射される。
【0048】
コントロールユニット2にはディストリビュータ内蔵のクランク角センサ7からのRef信号(4気筒では180°毎、6気筒では120°毎に発生)とPos信号(1°信号)、エアフローメータ4からの吸入空気量信号、三元触媒19の上流側に設置したO2センサ9からの空燃比(酸素濃度)信号、水温センサ8からのエンジン冷却水温信号、スロットルセンサ6からの絞り弁5開度信号等が入力され、これらに基づいて吸入空気流量とエンジン回転数から基本噴射パルス幅を算出するとともに、三元触媒19に流入する排気の空燃比が理論空燃比を中心として所定の周期で振れるように空燃比のフィードバック制御を行う。
【0049】
この場合、さらに目標空燃比への制御精度を高めるため、燃料インジェクタ3やエアフローメータ4の流量特性の製作時の部品バラツキやその後の経時劣化に伴う理論空燃比からのずれの解消を目的とするマップ学習値と燃料インジェクタの開き初めのタイミングが燃料インジェクタの部品バラツキやその後の経時劣化に伴う理論空燃比からのずれの解消を目的とするTS学習値を導入するほか、リーン運転時のキャニスタパージとの両立を図るためのベース学習値を導入している。
【0050】
コントロールユニット2で実行されるこの空燃比制御の内容を、以下のフローチャートにしたがって説明する。
【0051】
図2のフローチャートは、気筒別同期噴射パルス幅Tin[ms]の演算を行わせるためのもので、一定時間毎(たとえば10ms毎)に実行する。
【0052】
なお、図2のフローにおいて、記号の最後に気筒番号nをつけることで、気筒別の値であることを示している(CTin、Chosn、ERACIn)。
【0053】
ステップ1ではエアフローメータ出力より得られる吸入空気流量Qs[g/s]とクランク角センサより得られるエンジン回転数N[rpm]より基本噴射パルス幅TP0[ms]を
TP0=(Qs/N)×K×Ktrm …(1)
ただし、K:噴射定数
Ktrm:トリミング係数
の式で計算する。
【0054】
ここで、(1)式のKは理論空燃比の混合気が得られるように定めた定数、Ktrmはインジェクタ4の流量特性により定まる固有の定数である。
【0055】
ステップ2では回転数Nおよびシリンダ容積V[cc]の積N×Vと絞り弁部の総流路面積Aa[cm2]から所定のマップを参照して加重平均係数Fload[%]を求める。なお、総流路面積Aaは絞り弁5の流路面積[cm2]にアイドル調整弁22やエアレギュレータ(図示しない)の流路面積[cm2]を足したものである。
【0056】
ステップ3ではシリンダ空気量相当パルス幅TP[ms]を
TP=TP0×Fload+TP(old)×(1−Fload)…(2)
ただし、TP(old):Avtpの前回値
の式により計算し、このTPを用いステップ4において、
ただし、Kathos:過渡補正量[ms]
Tfbya:目標燃空比相当量[無名数]
ALPHA:空燃比フィードバック補正係数[無名数]
LALPHA:空燃比学習値[無名数]
Ts:無効パルス幅[ms]
LRNTS:TS学習値[ms]
CHOSn:気筒別壁流補正パルス幅[ms]
ERACIn:割込噴射移行化パルス幅[ms]
の式により、シーケンシャル噴射モードにおける気筒別同期噴射パルス幅Tin[ms]を計算する。
【0057】
なお、始動時のときは
の式により、同時噴射モードにおける気筒別同期噴射パルス幅Tin[ms]を計算する。
【0058】
ここで、(3)、(4)式の記号を説明すると、まずTfbyaは水温増量補正係数Ktwや始動後増量補正係数Kasと目標燃空比Dmlの和である。空燃比フィードバック制御を行う条件では、Ktw=0、Kas=0、Dml=1.0(つまりTfbya=1.0)であるが、エンジン回転の不安定となる冷間始動時にはKtwとKasが0を超える値(つまりTfbyaが1.0より大きい値)となって燃料増量が行われる。また、暖機完了後においてリーン運転条件になると、Dmlが1未満の値となって燃料減量され、リーン運転が行われる。
【0059】
エンジンの加減速時における空燃比の目標値からのずれは、吸気マニフォールドや吸気ポートに付着し、液状のまま壁面を伝ってシリンダに流れ込む、いわゆる壁流燃料の量的変化に起因するものであり、この壁流燃料による過不足分を補正量として燃料補正を行う。この場合、壁流燃料には直接にシリンダに流入される分が少なく比較的応答の遅いものと、直接にシリンダに流入される分が主で比較的応答の速いものとがあり、Kathosが応答の遅い壁流燃料に関する補正量、またChosnとERACIn(および図示しない気筒別割込噴射パルス幅Injsetn)とが応答の速い壁流燃料に関する補正量である(特開平1−305144号参照)。
【0060】
インジェクタに対して噴射信号が出力されたとしてもインジェクタは応答遅れをもって開くので、この応答遅れの分を考慮した値がTsである。
【0061】
(3)式右辺のTsの前にある2は、シーケンシャル噴射(1気筒当たりエンジン2回転に1回の噴射)のときに必要となる値である。
【0062】
なお、上記(2)式のメモリTP(old)の値は、後述するALPHA(old)とともに、始動時に0に初期設定されている。
【0063】
(3)、(4)式の空燃比学習値LALPHAの検索については図3のフローチャートにより説明する。同図のフローは一定時間毎に(あるいはバックグランドジョブで)実行する。なお、(3)、(4)式のLALPHA(ALPHAについても)は、1.0を中心とする無名数の単位であるが、実際のフロー上では100%を中心とする値(パーセント表示)で計算する。
【0064】
この実施形態ではリーン運転時のキャニスタパージを考慮して、通常のマップ学習値の外にベース学習値(1データ)を導入しており、いずれかを選択してLALPHAに入れることになる。
【0065】
まず、マップ学習値TALPの学習領域は、図4に示したように、TP格子である所定値TALPP0#(=0)、TALPP1#、TALPP2#、TALPP3#とN格子とで16に区分けし、各学習領域毎に独立の学習値を格納している。したがって、運転条件の属する学習領域の学習値を参照するとともに、各学習領域毎に学習値を更新することになる。なお、学習領域には0から15までの番号を割り振ることで、他の学習領域と区別している。以下で学習領域が0といえば、図4のTALPマップの0が指す学習領域のことである。
【0066】
これに対してベース学習値はパージカット時の学習値として導入しているもので、図5に示したように、マップ学習値の学習領域とは無関係に、リーン運転時の全域を代表できるような領域を学習領域として定めており、その1つの学習領域でだけ学習値の更新を行い、その学習領域に限らず全域で参照する。
【0067】
なお、マップ学習値、ベース学習値を格納するためのメモリは、TS学習値を格納するためのメモリとともに、バックアップRAMである。
【0068】
図3においてステップ11ではどの学習領域にあるかをみて学習領域が0のときは、TS学習を行わせるためステップ12に進んでLALPHA[%]に100を入れる。
【0069】
学習領域が0以外のときはステップ11よりステップ13、14、15に進み、冷却水温Twが所定値TWLCL#以上かどうか、フラグFLEANによりリーン運転条件であるかどうか、マップ学習収束カウンタCLRNTDi(i=0〜15)はマップ学習収束回数NLRNTD#以上かどうかをそれぞれみる。ここで、フラグFLEANはリーン運転条件を許可するときに“1”となるフラグである。マップ学習収束カウンタ(バックアップRAMに格納)CLRNTDi(iは学習領域の番号)は、各学習領域でマップ学習値が更新される毎にその更新の回数を学習領域毎に計測するためのものである。
【0070】
Tw≧TWLCL#のときかつリーン運転条件のときかつCLRNTDi≧NLRNTD#のときは、ステップ16に進んで図4のTALPマップを参照してマップ学習値TALP[%]を求め、変数LRNALP[%]に入れる。ここではマップ学習値そのものと演算に用いるマップ学習値とを区別するため、変数LRNALPを用いている。同様にして、後述する変数BSALP[%]は演算用のベース学習値、変数LRNTS[%]は演算用のTS学習値である。
【0071】
ステップ18では、演算用のベース学習値BSALP[%]としきい値SLALP[%]の差と演算用のマップ学習値LRNALPを比較し、BSALP−SLALP≦LRNALPのときはマップ学習値のほうを選択するためステップ19でLRNALPの値を空燃比学習値LALPHAに入れ、BSALP−SLALP>LRNALPのときはベース学習値のほうを選択するためステップ20、22でベース学習値を変数BSALPに入れるとともに、BSALPの値をLALPHAに移す。
【0072】
ここで、ベース学習値とマップ学習値を使い分けるのは次の理由による。空燃比学習制御中にパージが行われたときの学習値の変化を図6に示すと、ベース学習値はパージカット時の学習値であるからベース学習値の収束後はほぼ一定である。これに対して、キャニスタ(図示しない)にたくさんの燃料蒸気がたまっていた状態からパージが行われたときは、空燃比が一時的にリッチ側に傾き、このリッチに傾いた空燃比を理論空燃比に戻そうと空燃比フィードバック補正係数ALPHAが100%よりも小さい側に移動していくため、このALPHAに基づいて更新されるマップ学習値がしきい値SLALPを下回って小さい側に移動し、たとえば80%でピークをとる。その後はパージガス濃度の減少とともにマップ学習値が再び大きくなり、パージがしばらく継続した後の状態に対する学習値へと収束してゆく。
【0073】
一方、そのピーク位置でリーン運転が開始されたときは、パージの継続によりキャニスタ内の燃料蒸気がなくなってゆくのに対して、マップ学習値はピーク位置の値のままでそれ以上更新されることがないため一点鎖線で示したようにピーク位置の値のままである。したがって、ピーク位置でリーン運転が開始された後も、その一点鎖線で示したマップ学習値を用いたのでは、パージの継続につれて実際のパージ状態とマップ学習値とが対応しなくなり、リーン運転中の空燃比がリーン側に大きく傾いてゆくため、空燃比の理論空燃比への制御精度が落ちてしまう。そこで、ベース学習値を中心としてしきい値SLALPよりもマップ学習値が下側にあるときは、マップ学習値を用いない(ベース学習値を用いる)ようにしたのである。
【0074】
なお、Tw<TWLCL#のときやTw≧TWLCL#かつFLEAN=1でもCLRNTDi<NLRNTD#のときは、マップ学習が十分に進んでいないと考えられるためステップ13や15よりステップ20、22に進んで、ベース学習値を選択する。
【0075】
一方、リーン運転条件でないときはステップ14よりステップ23に進み、フラグFBSLTDよりベース学習値が収束したかどうかをみる。このフラグはFBSLTD=0のときベース学習が未収束であることを、FBSLTD=1はベース学習が収束したことを表すので、ベース学習が未収束(FBSLTD=0)のときはベース学習を進めるためステップ24、26に進んでベース学習値をLALPHAに入れ、ベース学習が収束(FBSLTD=1)した後はマップ学習を進めるためステップ27、29に進んでマップ学習値をLALPHAに入れる。
【0076】
図3において説明しなかったステップ17、28のリミッタ処理B2、ステップ21、25のリミッタ処理C2は本発明により新たに追加した部分であるため後で詳述する。
【0077】
次に、マップ学習値やベース学習値の更新は空燃比フィードバック補正係数ALPHAに基づいて行うため、空燃比フィードバック補正係数ALPHAの演算途中(正確にはリッチ、リーンの反転時)で学習値の更新を指示することになる。
【0078】
図7のフローチャートはO2センサ出力VO2に基づいて空燃比フィードバック補正係数ALPHAを演算するためのもので、Ref信号に同期して実行する。Ref信号に同期させるのは、燃料噴射がRef信号同期であり、系の乱れもRef信号同期であるため、これに合わせたものである。
【0079】
ステップ31では空燃比フィードバック制御条件が成立しているかどうかをみる。たとえば、次の条件、
▲1▼冷却水温Twが空燃比フィードバック制御の開始水温TWCLMPを越えていること、
▲2▼目標燃空比相当量Tfbya=1であること、
▲3▼フラグFLGCL=1であること(つまりO2センサ出力が所定回数(たとえば1回)反転していること)、
を一つずつチェックし、いずれかでも満たさないときは空燃比フィードバック制御条件の非成立時と判断して、ステップ32に進み、メモリALPHA(old)にALPHAの値を移したあとALPHAに100%を入れて(ALPHAをクランプ)、図7のフローを終了する。
【0080】
上記の▲1▼〜▲3▼のすべてを満足するときは空燃比フィードバック制御条件の成立時と判断してステップ33に進む。
【0081】
ステップ33ではO2センサ出力VO2をA/D変換して取り込み、ステップ34においてVO2とスライスレベル(たとえば500mV付近)SLを比較する。VO2>SLであればステップ35でフラグAF1に“1”を、VO2≦SLであるときはステップ36においてフラグAF1に“0”を入れる。これによってAF1=0はO2センサ出力がリーン側にあることを、AF1=1はリッチ側にあることを表す。
【0082】
なお、フラグAF1は、他のフラグ(図3のステップ14のFLEAN、ステップ23のFBSLTD、図7のステップ37のAF0、図8のステップ57、58のFLRNTD、図9のステップ68のFBSLTD、図10のステップ86、87のFBSLTD、図11のステップ98のFBSLTD、図13のステップ140、141のFLTSTD)とともに電源投入時のイニシャライズで“0”に初期設定し、また変数を格納するためのメモリ(たとえば図7のステップ38のALP 1、ALP 2、ステップ39のTP 1、TP 2、ステップ40のNE 1、NE 2、図8のステップ53のX1(new)、X1(old)、図10のステップ82のX2(new)、X2(old)、図13のステップ134、135、136のX3(new)、X3(old))も電源投入時のイニシャライズで0に初期設定するものであり、以下のフローチャートおいて、フラグ、メモリについての初期設定については省略する。
【0083】
ステップ37では2つのフラグAF0、AF1を比較する。ここで、フラグAF0は前回にO2センサ出力VO2がリッチあるいはリーンのいずれの側にあったかを示すフラグであり、AF0=0は前回リーン側にあったことを、AF0=1は前回リッチ側にあったことを表す。したがって、2つのフラグAF0、AF1の値が等しくないときは、VO2のリッチからリーンへの反転時あるいはその反対にリーンからリッチへの反転時であると判断し、ステップ38でメモリALP 2[%]の値をメモリALP 1[%]に移し、メモリALP 2[%]にALPHAの値(前回演算時の値)を入れる。メモリALP 2にリッチ、リーン反転時の最新のALPHAを、メモリALP 1に前回反転時のALPHAを格納するわけである。同様にしてステップ39、40ではメモリTP 2[ms]の値をメモリTP 1[ms]に移し、メモリTP 2[ms]にTP(図2のステップ3で既に得ている)の値を入れるとともに、メモリNE 2[rpm]の値をメモリNE 1[rpm]に移し、メモリNE 2に回転数Nを入れる。メモリTP 2、NE 2にリッチ、リーン反転時の最新のTP、Nを、メモリTP 1、NE 1に前回反転時のTP、Nを格納するのである。
【0084】
ステップ41ではマップ学習値、ベース学習値およびTS学習値の更新を指示する(図8と図10と図13のフローを起動させる)。
【0085】
ステップ42ではフラグAF1の値をみる。AF1=0(リッチからリーンへの反転時)であればステップ43で
ALPHA=ALPHA(old)+PL …(5)
ただし、ALPHA(old):ALPHAの前回値
の式により、またAF1=1(リーンからリッチへの反転時)であるときはステップ44において
ALPHA=ALPHA(old)−PR …(6)
の式によりALPHAをそれぞれ更新する。
【0086】
ステップ45では次回演算のため、フラグAF1の値をフラグAF0に、またALPHAの値をメモリALPHA(old)に移して図7のフローを終了する。
【0087】
ステップ37で2つのフラグAF0、AF1の値が等しいときは、反転時でないと判断し、ステップ46に進んでフラグAF1の値をみる。AF1=0(前回、今回ともリーン)であれば、ステップ47でALPHA(old)に積分分ILを加算することによって、またAF1=1(前回、今回ともリッチ)であるときはステップ48でALPHA(old)より積分分IRを減算することによってそれぞれALPHAを更新したあと、ステップ45の操作を実行する。
【0088】
上記の比例分PL、PRと積分分IL、IRはTPとNをパラメータとするマップ値である。
【0089】
図8のフローチャートはマップ学習値を更新するためのもので、O2センサ出力のリッチ、リーンの反転毎に実行する。
【0090】
ステップ51で学習許可条件が成立しているかどうかの判定を行うが、このための具体的な内容を図9に示す。学習許可条件の判定は図9のステップ61〜68の内容を一つずつチェックすることにより行い、各項目のすべてを満たしたときにマップ学習を許可し、一つでも反するときはマップ学習を禁止する。すなわち、
ステップ61;空燃比フィードバック制御中である、
ステップ62;クランプ中でない状態になってからALPHAが2回以上反転した、
ステップ63;冷却水温Twが所定温度範囲(TWLCL#≦Tw≦TWLCH#)となってALPHAが2回以上反転した、
ステップ64;|ALP 2−ALP 1|≦所定値ALP21#である、
ステップ65;|TP 2−TP 1|≦所定値TP21#である、
ステップ66;|NE 2−NE 1|≦所定値NE21#である、
ステップ67;学習領域が0でない、
ステップ68;ベース学習が収束している(FBSLTD=1)
ときに、ステップ69でマップ学習を許可し、そうでなければステップ70に移行してマップ学習を禁止する。
【0091】
ここで、学習領域が0のときマップ学習値の更新を許可しないのは、学習領域が0のときはTS学習値の更新を行わせるためである。したがって、学習領域0でのマップ学習値は初期値の100%のままで、更新されないことになる。後述するように学習領域が0である場合にだけTS学習を許可するのは、この領域ではTPよりもTsのほうがCTinに対する寄与割合が大きく、したがってこのときの理論空燃比からの空燃比誤差は主にTsの誤差に伴うものであるからである。ベース学習が収束していることを条件とするのは、ベース学習値の収束後にマップ学習値の更新を行わせるためである。
【0092】
このようにして学習許可条件を判定したら図8のステップ51に戻り、学習許可条件が成立しているときはステップ52で運転条件がどの学習領域にあるのかを判定し、運転条件が属する学習領域のマップ学習値を用いて
ただし、X1(new):更新後のマップ学習値[%]
X1(old):更新前のマップ学習値[%]
WEIGHT:更新割合
の式によりマップ学習値を更新し、運転条件が属する学習領域に対応するマップ学習収束カウンタCLRNTDiをステップ55においてインクリメントする。ただし、この段階ではX1(new)の値を、運転条件が属する学習領域にマップ学習値として格納することはしない。
【0093】
ステップ56ではマップ学習収束カウンタCLRNTDiと所定値NLRNTD#を比較し、すべての学習領域でCLRNTDi≧NLRNTD#のときステップ57に進んでマップ学習収束フラグFLRNTDに“1”をセットし、それ以外ではステップ58に進んでFLRNTD=0とする。
【0094】
図8において説明を飛ばしたステップ54のリミッタ処理B1は本発明により新たに導入する部分であり、後で詳述する。
【0095】
図10のフローチャートはベース学習値を更新するためのもの、図11のフローチャートは学習許可条件を判定するためのもので、それぞれ図8、図9に対応する。
【0096】
ベース学習値の更新の方法は、マップ学習値の更新の方法と基本的に変わらないので、異なる部分を主に説明する。
【0097】
まず、図11のほうではステップ98、99、100が図9と相違する。ベース学習では、ベース学習が未収束(フラグFBSLTD=0)であり、かつTPとNがベース学習領域にあるとき(BSLTPL#≦TP≦BSLTPH#かつBSLNEL#≦N≦BSLNEH#のとき)が、学習許可条件に加わるわけである。
【0098】
また、ベース学習値は1データであるため、図10を図8と比較すればわかるようにマップ学習値の更新の場合よりベース学習値の更新のほうが簡単になっている。つまり、図10において学習許可条件の成立時にステップ81よりステップ82に進み、
ただし、X2(new):更新後のベース学習値[%]
X2(old):更新前のベース学習値[%]
WEIGHT:更新割合
の式によりベース学習値を更新し、ベース学習収束カウンタ(電源投入時のイニシャライズで0に初期設定)CBSLTDをステップ84においてインクリメントしている。ただし、この段階ではX2(new)の値を、ベース学習値として格納することはしない。また、ステップ85ではベース学習収束カウンタCBSLTDと所定値NBSLTD#を比較し、CBSLTD≧NBSLTD#のときステップ86に進んでベース学習収束フラグFBSLTDに“1”をセットし、それ以外ではステップ87に進んでFBSLTD=0とする。
【0099】
図10において説明を飛ばしたステップ83のリミッタ処理C1は本発明により新たに導入する部分であり、後で詳述する。
【0100】
次に、TS学習値の参照について図12のフローチャートにより説明する。同図のフローは図3とは独立に一定時間毎に(あるいはバックグランドジョブで)実行する。
【0101】
ステップ111ではTS学習値を変数LRNTS[ms]に入れる。ここでも、無効パルス幅学習値そのものと演算に用いる無効パルス幅学習値を区別するため変数LRNTSを用いている。
【0102】
ステップ112〜115はTS学習値に対してリミッタ処理を行う部分である。ステップ112ではTS学習値の上限値LTSMAX#[ms](たとえば+0.1ms)とLRNTSを比較し、LTSMAX#<LRNTSのときはステップ113に進んでLTSMAX#の値をLRNTSに、またステップ114でTS学習値の下限値LTSMIM#[ms](たとえば−0.1ms)とLRNTSを比較し、LTSMIN#>LRNTSのときはステップ115に進んでLTSMIN#の値をLRNTSに入れる。
【0103】
図12において説明を飛ばしたステップ116〜122のリミッタ処理は本発明により新たに導入する部分であり、後で詳述する。
【0104】
図13のフローチャートはTS学習値を更新するためのもの、図14のフローチャートは学習許可条件を判定するためのもので、それぞれ図8、図9あるいは図10、図11に対応する。図13のフローチャートも図8、図10と同じにO2センサ出力のリッチ、リーンの反転毎に実行する。
【0105】
TS学習値の更新の方法もマップ学習値やベース学習値の更新の方法と基本的に変わらない。
【0106】
学習許可条件の判定では、図14のステップ155、156、157が図9と相違する。つまり、TS学習では
ステップ155;学習領域が0である、
ステップ156;アイドル回転数制御(図ではISC制御で略記)がクローズド中である、
ステップ157;アイドルスイッチがOFFよりONに切換わってからTS学習ディレイ時間DTSLRN#が経過した
ときをTS学習許可条件に含めている。
【0107】
ここで、学習領域が0である場合にだけTS学習を許可するのは、この領域ではTPよりもTsのほうがCTinに対する寄与割合が大きく、したがってこのときの理論空燃比からの空燃比誤差は主にTsの誤差に伴うものであるからである。また、負荷の小さい学習領域でありながら、4、8、12の各学習領域でTS学習を許可しないのは、この領域ではフュエルカットが行われることがあり、フュエルカット時にはTS学習を行うことができないからである。アイドル回転数制御がクローズド中に限りTS学習を許可するのは、回転数、空燃比がクローズド中以外よりも安定するからである。アイドルスイッチがOFFよりONに切換わってからディレイ時間が経過するのを待つのは、TS学習値を安定させるためである。
【0108】
なお、図14においては図9のステップ65、66と同じ部分がない。これは、TS学習値の更新を行うのがアイドル時に限られるので、TPとNより運転条件をみる必要がないからである。
【0109】
図13においては、学習許可条件の成立時にステップ132、133で(ALP 1+ALP 2)/2と100%を比較し、(ALP 1+ALP 2)/2<100のとき(リッチ側にあるとき)、ステップ134に進んで
X3(new)=X3(old)−DLRNTS …(11)
ただし、X3(new):更新後のTS学習値[%]
X3(old):更新前のTS学習値[%]
DLRNTS:更新量[%]
の式により、また(ALP 1+ALP 2)/2>100のとき(リーン側にあるとき)、ステップ135に進んで
X3(new)=X3(old)+DLRNTS …(12)
ただし、X3(new):更新後のTS学習値[%]
X3(old):更新前のTS学習値[%]
DLRNTS:更新量[%]
の式によりTS学習値を更新する。一方、(ALP 1+ALP 2)/2=100のときはステップ132、133よりステップ136に進み、
X3(new)=X3(old) …(13)
の式によりTS学習値を更新する。ただし、この段階ではX3(new)の値を、TS学習値として格納することはしない。
【0110】
学習領域が0のときは主にアイドル時であり、アイドル時に学習値を大きく変化させる(つまり空燃比を大きく変化させる)と回転変動が大きくなるので、これを避けるため、(11)、(12)式のDLRNTSには比較的小さな値を与えている。
【0111】
ステップ138ではTS学習収束カウンタ(バックアップRAMに格納)CLTSTDをインクリメントし、この学習収束カウンタCLTSTDと所定値NLTSTD#をステップ139において比較する。CLTSTD≧NLTSTD#のときステップ140に進んでTS学習収束フラグFLTSTDに“1”をセットし、それ以外ではステップ141、142に進んでFLTSTD=0かつすべてのマップ学習収束カウンタCLRNTDi=0とする。TS学習値が未収束のときは、マップ学習値の更新をやり直すため、CLRNTDi=0とするのである。
【0112】
図13において説明を飛ばしたステップ137のリミッタ処理Aは本発明により新たに導入する部分であり、後で詳述する。
【0113】
これで、単位の異なる学習値を用いた現状の空燃比学習制御の説明を終える。
【0114】
さて、最近の空燃比学習制御では、学習値に対して所定の範囲のリミッタを設けることで、燃料インジェクタやエアフローメータの製造時の部品バラツキや経時劣化を吸収でき、かつ誤学習による理論空燃比からの空燃比誤差も同じ所定の範囲以内であれば、エンスト等の不具合を回避できることがわかっている。
【0115】
しかしながら、上記のようにマップ学習値(あるいはベース学習値)とTS学習値をともに用いるものでは、現在のところ各学習値毎に独立してリミッタを設けているため、2つの学習値のトータルで所定の範囲のリミッタを確保するのが難しく、一方の学習値が上限リミッタや下限リミッタに張り付いたときには、2つの学習値のトータルでリミッタが所定の範囲を超えてしまう事態が生じる。
【0116】
たとえば現在のところ、マップ学習値、ベース学習値、TS学習値の各学習値に対して、
RLRMIN#[%]≦マップ学習値≦RLRMAX#[%]…(14)
RLRMIN#[%]≦ベース学習値≦RLRMAX#[%]…(15)
LTSMIN#[ms]≦TS学習値≦LTSMAX#[ms]…(16)
のように各学習値ごとに独立してリミッタを設定している。ただし、(14)、(15)、(16)式においてRLRMAX#、RLRMIN#はマップ学習値(またはベース学習値)の上限値(たとえば110%)、下限値(たとえば90%)、また、LTSMAX#、LTSMIN#はTS学習値の上限値(たとえば+0.1ms)、下限値(たとえば−0.1ms)である。
【0117】
ここで、マップ学習値とベース学習値はいずれかが選択され、両方がともに選択されることはないので、マップ学習値とTS学習値の組み合わせで考える。この場合に、マップ学習値はTPに対する乗算項として、またTS学習値はTPに対する加算項として加わることから、マップ学習値のリミッタについてはTPに関係なくRLRMAX#が上限リミッタ、RLRMIN#が下限リミッタとなるのに対して、TS学習値のリミッタについてはTPが小さくなるほどTPに対するリミッタ分が大きくなっていくため、TPを横軸にとり、マップ学習値のリミッタと無効パルス幅のリミッタを重ねたとき、図15上段のようになる。つまり、マップ学習値が上限リミッタや下限リミッタに張り付いたとき、TS学習値がリミッタ分を超えなくても、2つの学習値のトータルでリミッタが所定の範囲(±10%)を超えてしまうのである。
【0118】
これに対処するため本発明の第1実施形態では、TS学習値をTPに対するパーセントに換算した値と、もともとパーセントで設定されるマップ学習値とのトータルでリミッタが所定の範囲である±10パーセントに収まるように2つの学習値をそれぞれ制限する。
【0119】
ここで、本発明のリミッタの制御イメージを図15下段を参照して概説すると、TS学習値のリミッタをTPに対するパーセント表示に換算した値とマップ学習値のリミッタとのトータルで±10%となるように、マップ学習値のリミッタを定めたとき、図示のように、TPが小さくなるほど100%に近づいていく曲線がそれぞれマップ学習値の上限リミッタ、下限リミッタとなる。したがって、マップ学習値を更新したり参照するとき、マップ学習値のリミッタを外れないように、またTS学習値についてもTS学習値を更新したり参照するときTS学習値のリミッタを外れないように各学習値を制限することで、噴射時間表示のTS学習値と%表示の学習値を合わせもつものにおいても、2つの学習値のトータルでのリミッタ(%単位)を±10%以内に収め、これによって誤学習の悪影響を小さくするとともに、エンスト等の不具合を回避することができるのである。
【0120】
ただし、マップ学習値は学習領域毎の値であり、TPに対して不連続な値をとることから、実際には図15下段に示した曲線がそのままマップ学習値のリミッタを定めるものではない。
【0121】
具体的には、図16にまとめて示したように、マップ学習値とTS学習値に対して学習値の更新時、参照時のリミッタ処理を学習領域毎に行う。図16に示したリミッタ処理を実現するため、
▲1▼図3に示すLALPHAの検索においてステップ17、28のリミッタ処理B2とステップ21、25のリミッタ処理C2を、
▲2▼図8に示すマップ学習値の更新においてステップ54のリミッタ処理B1を、
▲3▼図10に示すベース学習値の更新においてステップ83のリミッタ処理C1を、
▲4▼図12に示すTS学習値の参照においてステップ116〜122のリミッタ処理を、
▲5▼図13に示すTS学習値の更新においてステップ137のリミッタ処理Aを追加している。
【0122】
なお、図16はマップ学習値が選択されたときの2つの学習値(マップ学習値とTS学習値)のリミッタ処理を示しているが、実施形態ではベース学習値が選択されることがあり、このときもマップ学習値が選択されたときと同様に2つの学習値(ベース学習値とTS学習値)のリミッタ処理を行わなければならないので、▲1▼〜▲5▼にはベース学習値についてのリミッタ処理も含めている。
【0123】
以下、▲1▼〜▲5▼の順ではなく、
〈1〉TS学習値の更新時のリミッタ処理(上記▲5▼に対応)
〈2〉TS学習値の参照時のリミッタ処理(上記▲4▼に対応)
〈3〉マップ学習値の更新時、参照時のリミッタ処理(上記▲2▼、▲1▼に対応)
〈4〉ベース学習値の更新時、参照時のリミッタ処理(上記▲3▼、▲1▼に対応)
の順に項分けして説明する。
【0124】
〈1〉TS学習値の更新時のリミッタ処理
TS学習値の更新時のリミッタ処理は図13のステップ137のリミッタ処理Aのことである。この処理を行うため、サブルーチンとして図17のフローチャートを設けている。つまり、図13においてステップ137に進んだときは、図17に飛んで図17の処理をすべて実行した後、再び図13に戻り、ステップ138以降を実行することになる。なお、後述するリミッタ処理B1、C1、C2についてもサブルーチンとして図19、図20、図22、図23のフローチャートを設けている。
【0125】
図17においてステップ161〜165は上限リミッタ処理を、166〜170は下限リミッタ処理をそれぞれ行う部分である。上限リミッタ処理と下限リミッタ処理とで内容は同様であるので、主に上限リミッタ処理を説明する。
【0126】
ステップ161ではTP(図2のステップ3で得ている)を用いて
LTSMAX2=TP×(RLRMAX#−TALP0)/100×2…(17)
ただし、RLRMAX#:学習値上限値[%]
TALP0:学習領域0でのマップ学習値[%]
の式によりTS学習値の上限値LTSMAX2[ms]を計算する。
【0127】
ここで、(17)式がどういう値であるかを図18を用いて説明すると、同図は前述した図15下段と基本的に同じもので、図18においてTPが大きくなるほど学習値上限値RLRMAX#に近づいていく曲線が、TS学習値に対するリミッタ分とマップ学習値に対するリミッタ分を分ける境界である。実際にはマップ学習値は学習領域毎の値(不連続値)であるから、図示のように、マップ学習値に対するリミッタは階段状の値となる。なお、TP格子点(TALPP0#、TALPP1#、TALPP2#、TALPP3#)では黒丸のほうの値である。
【0128】
さて、学習領域が0のときTS学習値に対する上限リミッタ分として許されるのは、RLRMAX#からTALP0までのあいだ(つまり図示の矢印幅)であり、この値はパーセント単位であるため、これを100パーセントで割った値にTP[ms]をかけることによってms単位でのTS学習値に対する上限値へと換算するのである。なお、(17)式右辺の2はシーケンシャル噴射に対応させるための値である。
【0129】
ステップ162では、この上限値LTSMAX2とTS学習上限値LTSMAX#[ms]との小さいほうを上限リミッタ[ms]として選択する。これは次の理由からである。TS学習上限値LTSMAX#は、現状と同じにTS学習値単独で設定している上限値であり(上記の(16)式参照)、このLTSMAX#とLTSMAX2との小さいほうを選択することでTS学習値の範囲を狭めて誤学習の影響を小さくするためである。
【0130】
このようにしてTS学習値に対する上限リミッタが定まれば、ステップ163においてこの上限リミッタとLRNTSを比較し、LRNTSが上限リミッタを超えているときはステップ164、165に進んでLRNTSを上限リミッタに制限するとともに、その上限リミッタの値を変数X3(new)に入れる。
【0131】
同様にして、ステップ166では
LTSMIN2=TP×(RLRMIN#−TALP0)/100×2…(18)
ただし、RLRMIN#:学習値下限値[%]
TALP0:学習領域0でのマップ学習値[%]
の式によりTS学習値の下限値LTSMIN2[ms]を計算し、このLTSMIN2とTS学習下限値LTSMIN#[ms]の大きいほうをステップ167において下限リミッタ[ms]として選択する。この下限リミッタとLRNTSを比較し、LRNTSが下限リミッタを下回るときはステップ169、170に進んでLRNTSを下限リミッタに制限するとともに、その下限リミッタの値を変数X3(new)に入れる。
【0132】
ステップ171では変数X3(new)の値をTS学習値として格納する。つまり、TS学習値の更新時に図13のステップ134、135、136でTS学習値が更新されていても、ステップ137のリミッタ処理AにおいてLRNTSがリミッタで制限されたときはその制限された値でTS学習値をさらに更新するのである。
【0133】
〈2〉TS学習値の参照時のリミッタ処理
TS学習値の参照時のリミッタ処理は図12のステップ116〜122である。
【0134】
図12において、ステップ116で学習領域をみて、学習領域が0、4、8、12のときだけステップ117以降に進む。
【0135】
ステップ117、118、119は上限リミッタ処理を、ステップ120、121、122は下限リミッタ処理をそれぞれ行う部分である。
【0136】
ステップ117では、
LTSMAX2=TP×(RLRMAX#−TALP)/100×2…(19)
ただし、RLRMAX#:学習値上限値[%]
TALP:0、4、8、12の各学習領域でのマップ学習値[%]
の式によりTS学習値の上限値LTSMAX2[ms]を計算し、このLTSMAX2とLRNTSをステップ118において比較し、LTSMAX2<LRNTSのときはステップ119に進んでLTSMAX2の値をLRNTSに移す。
【0137】
同様にして、ステップ120では
LTSMIN2=TP×(RLRMIN#−TALP)/100×2…(20)
ただし、RLRMIN#:学習値下限値[%]
TALP:0、4、8、12の各学習領域でのマップ学習値[%]
の式によりTS学習の下限値LTSMIN2[ms]を計算し、このLTSMIN2とLRNTSをステップ121において比較し、LTSMIN2>LRNTSのときはステップ122に進んでLTSMIN2の値をLRNTSに移す。
【0138】
(19)、(20)式を上記の(17)、(18)式と比較すればわかるように、学習領域でのマップ学習値が異なるだけで同等の式である。
【0139】
しかしながら、TS学習値の参照時には、リミッタでLRNTSを制限するだけで、LRNTSがリミッタにより制限されたとき、そのリミッタ値でTS学習値を更新することはしていない(図17のステップ165、170に対応するステップが図12にない)。これは次の理由による。学習領域0、4、8、12では他の学習領域よりTPが小さいのであるが、これら4つの学習領域の中でもTPが小さくなると、(19)式右辺の値、(20)式右辺の値が小さくなる。したがって、このときにもTS学習値を更新したのでは、TS学習値が小さな値となってしまうので、これを避けるため、学習領域が0、4、8、12での参照時に限ってはリミッタでTS学習値を更新することはしないのである。
【0140】
〈3〉マップ学習値の更新時、参照時のリミッタ処理
マップ学習値の更新時のリミッタ処理は、図8のステップ54のリミッタ処理B1のことで、このリミッタ処理B1を図19、図20(図8ステップ54のサブルーチン)のフローチャートにより説明する。
【0141】
図19においてステップ181、182では学習領域をみる。ここでの学習領域は、図4に示したようにTP格子だけにより4つに分割し、各学習領域を区別するためA0、A1、A2、A3を割り振っている。たとえば学習領域A0は学習領域0、4、8、12を合わせたものである。
【0142】
学習領域がA0、A1にあるときは図19のステップ183〜187、図20のステップ188〜193に、学習領域がA2にあるときは図19のステップ194〜198、図20のステップ199〜204に、学習領域がA3にあるときは図19のステップ205〜209、図20のステップ210〜215に進む。このうち、図19のほうのステップ183〜187、ステップ194〜198、ステップ205〜209が上限リミッタ処理、図20のほうのステップ188〜192、ステップ199〜203、ステップ210〜214が下限リミッタ処理をそれぞれ行う部分であり、両者で処理内容は同様であるので、これも上限リミッタ処理のほうで代表させる。
【0143】
ステップ183、194、205では
ただし、RLRMAX#:学習値上限値[%]
LRNTS0:TS学習値[ms]
の式によりマップ学習領域毎上限値RLMAX1[%]、RLMAX2[%]、RLMAX3[%]をそれぞれ計算し、これらのそれぞれと学習値上限値RLRMAX#のいずれか小さいほうをステップ184、195、206において上限リミッタに設定する。
【0144】
ここで、(21)、(22)、(23)式の中から(21)式を例にとり、(21)式右辺の値を、TPでなくTALPP1#(学習領域A1の下限を定めるTP格子)に対する値とする理由を図21を用いて説明する。
【0145】
学習領域A1においてTPがTP1のとき、TS学習値に対するリミッタ分は{LRNTS0/(TP1×2)}×100(%表示)であるから、RLRMAX#からこの分を差し引いた値、つまり
RLRMAX#−{LRNTS0/(TP1×2)}×100…(24)
がマップ学習値に対する上限値となる。
【0146】
これに対して、同じ学習領域A1においてTP1よりも小さなTP2のときは、
RLRMAX#−{LRNTS0/(TP2×2)}×100…(25)
がマップ学習値に対する上限値になることから、TPがTP1より小さくなるのにつれてマップ学習値に対する上限値を減少させなけれならない。したがって、(24)の値を学習領域A1の全体についてのマップ学習値の上限値としたのでは、学習領域A1のうちTP1未満の領域でマップ学習値の上限値が大きくなり過ぎ、2つの学習値のトータルでリミッタがRLRMAX#を超える事態が生じてしまう。そこで、学習領域A1において最小のTP(つまりTALPP1#)のときの値である
RLRMAX#−{LRNTS0/(TALPP1#×2)}×100
を学習領域A1の全体についてのマップ学習値の上限値としたわけである。
【0147】
なお、学習領域A0でのマップ学習領域毎上限値は学習領域A1でのマップ学習領域毎上限値に等しくしている。これは、学習領域A0においては、(21)式からの類推により
RLRMAX#−{LRNTS0/(TALPP0#×2)}×100…(26)
の値がマップ学習領域毎上限値となりそうであるが、TALPP0#が0であることより、(26)第2項目の値を計算することができないこと、また学習領域A0ではTS学習値のほうでリミッタにより制限していることから、学習領域A0でのマップ学習領域毎上限値を学習領域A1でのマップ学習領域毎上限値に等しくしているのである。
【0148】
図19のステップ185、196、207では上限リミッタとLRNALPを比較し、上限リミッタ<LRNALPのときはステップ186、197、208に進んで、上限リミッタをLRNALPに入れ、さらにステップ187、198、209において上限リミッタの値を変数X1(new)に移す。
【0149】
図20のステップ188〜192、ステップ199〜203、ステップ210〜214では図19のステップ183〜187、ステップ194〜198、ステップ205〜209と同様にして、学習領域毎に下限リミッタ処理を行う。
【0150】
ステップ193、204、215では、変数X1(new)の値を、対応する学習領域(このときの学習領域はA0、A1、A2、A3でなく、図4の1〜15の各領域である)のマップ学習値TALPとして格納する。つまり、マップ学習値の更新時に図8のステップ53でマップ学習値が更新されていても、ステップ54のリミッタ処理B1においてLRNALPがリミッタで制限されたときはその制限された値でマップ学習値をさらに更新する。
【0151】
次に、マップ学習値の参照時のリミッタ処理は、図3のステップ17、28の各リミッタ処理B2のことであるが、このリミッタ処理B2も図19、図20に示したリミッタ処理B1(マップ学習値の更新時のリミッタ処理)と同様である。このときは、図19、図20においてステップ187、192、193、198、203、204、209、214、215で上限リミッタ、下限リミッタの各リミッタを変数X1(new)に入れたあと、この変数X1(new)の値を、対応する学習領域のマップ学習値として格納する代わりに、上限リミッタ、下限リミッタの各リミッタを直接に、対応する学習領域のマップ学習値として格納すればよい。つまり、マップ学習値の参照時にも、上限リミッタ、下限リミッタの各リミッタでLRNALPを制限するとともに、リミッタでLRNALPを制限したときはその制限した値でマップ学習値を更新するのである。
【0152】
ここで、マップ学習値の参照時にもリミッタにより制限した値でマップ学習値を更新するのは次の理由からである。2つの学習値(マップ学習値とTS学習値)がある場合は、両方を同じタイミングで更新して各学習値とも最新値に置き換えていくことにより初めて、2つの学習値のトータルでリミッタを学習値上限値RLRMAX#と学習値下限値RLRMIN#の間に収めることができる。しかしながら、2つの学習値は学習許可条件が異なり、同じタイミングで更新されることがないため、2つの学習値のトータルでリミッタが学習値上限値RLRMAX#を超えたり学習値下限値RLRMIN#を下回ることが考えられる。そこで、マップ学習値の参照時にもリミッタにより制御した値でマップ学習値を更新することにより、できるだけ更新の機会を増やし、トータルの学習値のリミッタが学習値上限値RLRMAX#を超えることも、学習値下限値RLRMIN#を下回ることもないようにしているのである。
【0153】
〈4〉ベース学習値の更新時、参照時のリミッタ処理
ベース学習値の更新時のリミッタ処理は図10のステップ83のリミッタ処理C1、またベース学習値の参照時のリミッタ処理は図3のステップ21、25のリミッタ処理C2である。このうちリミッタ処理C1を図22(図10のステップ83のサブルーチン)のフローチャートにより、またリミッタ処理C2を図23(図3のステップ21、25のサブルーチン)のフローチャートにより説明する。
【0154】
ベース学習値の更新時のリミッタ処理はマップ学習値の更新時のリミッタ処理と同様である。ただし、マップ学習値と異なりベース学習値は図5に示したように1つの学習領域であるため、ベース学習値の上限値、下限値の各計算式が図22のステップ221、226に示したように、
ただし、RLMAX0:ベース学習値の上限値[%]
RLMIN0:ベース学習値の下限値[%]
RLRMAX#:学習値上限値[%]
RLRMIN#:学習値上限値[%]
LRNTS0:TS学習値[ms]
BSLTPL#:ベース学習許可下限TP
となっている。
【0155】
ここで、(27)、(28)式において右辺第2項の分母がTP×2でなくBSLTPL#×2であるのは、図19のステップ183、図20のステップ188において右辺第2項の分母がTP×2でなくTALPP1#×2であるのと同じ理由からである。なお、(27)式右辺の値を図24に示す。
【0156】
これに対してベース学習値の参照時には、ベース学習値の上限値、下限値の各計算式が図23のステップ241、245に示したように、
ただし、RLMAX0:ベース学習値の上限値[%]
RLMIN0:ベース学習値の下限値[%]
RLRMAX#:学習値上限値[%]
RLRMIN#:学習値上限値[%]
LRNTS0:TS学習値[ms]
となり、これら上限値RLMAX0、下限値RLMIN0でBSALPを制限するものの(ステップ242、243、244、246、247、248)、制限した値でベース学習値を更新することはしない(図22のステップ225、230、231に対応する部分が図23にない)。
【0157】
ベース学習値の参照時に、リミッタにより制限するだけで、その制限した値でベース学習値を更新しないのは次の理由からである。(29)、(30)式においてTPが0に近づいていくとき、(29)、(30)式右辺第2項が大きくなり、(29)、(30)式右辺の値が0に近づいていくので、このときにまでベース学習値を更新したのでは、ベース学習値がごくわずかな値になってしまう。これを避けるため、ベース学習値の参照時にリミッタにより制限した値でベース学習値を更新することはしないのである。
【0158】
実施形態では、加算項の学習値がTS学習値、乗算項の学習値がマップ学習値(またはベース学習値)である場合で説明したが、これに限られるものでない。
【図面の簡単な説明】
【図1】第1実施形態の制御システム図である。
【図2】気筒別燃料噴射パルス幅CTinの演算を説明するためのフローチャートである。
【図3】空燃比学習値LALPHAの検索を説明するためのフローチャートである。
【図4】マップ学習値の学習領域図である。
【図5】ベース学習値の学習領域図である。
【図6】マップ学習値とベース学習値の切換を説明するための波形図である。
【図7】空燃比フィードバック補正係数ALPHAの演算を説明するためのフローチャートである。
【図8】マップ学習値の更新を説明するためのフローチャートである。
【図9】学習許可条件の判定を説明するためのフローチャートである。
【図10】ベース学習値の更新を説明するためのフローチャートである。
【図11】学習許可条件の判定を説明するためのフローチャートである。
【図12】TS学習値の参照を説明するためのフローチャートである。
【図13】TS学習値の更新を説明するためのフローチャートである。
【図14】学習許可条件の判定を説明するためのフローチャートである。
【図15】現状のリミッタ処理の制御イメージと本発明のリミッタ処理の制御イメージを対比して示す特性図である。
【図16】各学習領域毎のリミッタ処理をまとめて示す特性図である。
【図17】TS学習値の更新時のリミッタ処理を説明するためのフローチャートである。
【図18】TS学習値に対するリミッタ分を説明するための特性図である。
【図19】マップ学習値の更新時のリミッタ処理を説明するためのフローチャートである。
【図20】マップ学習値の更新時のリミッタ処理を説明するためのフローチャートである。
【図21】マップ学習値の更新時のマップ学習値に対するリミッタ分を説明するための特性図である。
【図22】ベース学習値の更新時のリミッタ処理を説明するためのフローチャートである。
【図23】ベース学習値の参照時のリミッタ処理を説明するためのフローチャートである。
【図24】ベース学習値の更新時のベース学習値に対するリミッタ分を説明するための特性図である。
【図25】第1の発明のクレーム対応図である。
【符号の説明】
1 エンジン
2 コントロールユニット
3 燃料インジェクタ
4 エアフローメータ
7 クランク角センサ
9 O2センサ
Claims (26)
- エンジンの負荷と回転数に基づいて基本噴射量を演算する手段と、
乗算項の学習値を割合の単位で格納する手段と、
加算項の学習値を噴射量の単位で格納する手段と、
前記加算項の学習値を前記基本噴射量に対する割合に換算した値と前記乗算項の学習値とのトータルでリミッタが所定の範囲に収まるように前記2つの学習値をそれぞれ制限する手段と、
排気の空燃比を検出する手段と、
この空燃比検出手段の出力に基づいて空燃比が理論空燃比と一致するように空燃比フィードバック補正量を演算する手段と、
この空燃比フィードバック補正量と前記制限された2つの学習値とで前記基本噴射量を補正して燃料噴射量を演算する手段と、
この噴射量の燃料をエンジンに供給する手段と
を設けたことを特徴とするエンジンの空燃比制御装置。 - 前記燃料噴射量が前記基本噴射量と無効噴射量の和からなり、前記加算項の学習値がこの無効噴射量の学習値であることを特徴とする請求項1に記載のエンジンの空燃比制御装置。
- 前記無効噴射量の学習値を低負荷域でだけ前記空燃比フィードバック補正量に基づいて更新することを特徴とする請求項2に記載のエンジンの空燃比制御装置。
- 前記乗算項の学習値が学習領域毎の学習値であることを特徴とする請求項2または3に記載のエンジンの空燃比制御装置。
- 前記学習領域毎の学習値を低負荷域以外の運転域で前記空燃比フィードバック補正量に基づいて更新することを特徴とする請求項4に記載のエンジンの空燃比制御装置。
- 前記乗算項の学習値がパージカット時の学習値であることを特徴とする請求項2または3に記載のエンジンの空燃比制御装置。
- 前記パージカット時の学習値を所定の1つの学習領域でだけ前記空燃比フィードバック補正量に基づいて更新することを特徴とする請求項6に記載のエンジンの空燃比制御装置。
- 前記乗算項の学習値がパージカット時の学習値と学習領域毎の学習値とからなり、パージカット時の学習値からしきい値を差し引いた値と学習領域毎の学習値との比較により、パージカット時の学習値からしきい値を差し引いた値が学習領域毎の学習値以下のときパージカット時の学習値を、またパージカット時の学習値からしきい値を差し引いた値が学習領域毎の学習値を超えるとき学習領域毎の学習値を選択することを特徴とする請求項2または3に記載のエンジンの空燃比制御装置。
- 前記無効噴射量の学習値単独でリミッタを設けることを特徴とする請求項2または3に記載のエンジンの空燃比制御装置。
- 前記無効噴射量の学習値の更新時に、前記基本噴射量に応じたリミッタで無効噴射量の学習値を制限するとともに、そのリミッタで無効噴射量の学習値が制限されるときは、そのリミッタで無効噴射量の学習値を更新することを特徴とする請求項9に記載のエンジンの空燃比制御装置。
- 前記無効噴射量の学習値の更新時に、前記基本噴射量に応じたリミッタと前記無効噴射量の学習値単独のリミッタとの狭いほうで無効噴射量の学習値を制限するとともに、その狭いほうのリミッタで無効噴射量の学習値が制限されるときは、その狭いほうのリミッタで無効噴射量の学習値を更新することを特徴とする請求項9に記載のエンジンの空燃比制御装置。
- 前記無効噴射量の学習値の参照時に、低負荷域に限り前記基本噴射量に応じたリミッタで無効噴射量の学習値を制限することを特徴とする請求項9または10に記載のエンジンの空燃比制御装置。
- 前記リミッタは、2つの学習値のトータルとして割合の単位で予め定めたリミッタから前記乗算項の学習値を差し引いた値に前記基本噴射量をかけた値であることを特徴とする請求項10から12までのいずれか一つに記載のエンジンの空燃比制御装置。
- 前記学習領域毎の学習値の更新時に、前記無効噴射量の学習値に応じたリミッタで学習領域毎の学習値を制限するとともに、そのリミッタで学習領域毎の学習値が制限されるときは、そのリミッタで学習領域毎の学習値を更新することを特徴とする請求項4または5に記載のエンジンの空燃比制御装置。
- 前記学習領域毎の学習値の更新時に、前記無効噴射量の学習値に応じたリミッタと2つの学習値のトータルとして割合の単位で予め定めたリミッタとの狭いほうで学習領域毎の学習値を制限するとともに、その狭いほうのリミッタで学習領域毎の学習値が制限されるときは、その狭いほうのリミッタで学習領域毎の学習値を更新することを特徴とする請求項4または5に記載のエンジンの空燃比制御装置。
- 前記学習領域毎の学習値の参照時に、前記無効噴射量の学習値に応じたリミッタで学習領域毎の学習値を制限するとともに、そのリミッタで学習領域毎の学習値が制限されるときは、そのリミッタで学習領域毎の学習値を更新することを特徴とする請求項4、5、14、15のいずれか一つに記載のエンジンの空燃比制御装置。
- 前記学習領域毎の学習値の参照時に、前記無効噴射量の学習値に応じたリミッタと2つの学習値のトータルとして割合の単位で予め定めたリミッタとの狭いほうで学習領域毎の学習値を制限するとともに、その狭いほうのリミッタで学習領域毎の学習値が制限されるときは、その狭いほうのリミッタで学習領域毎の学習値を更新することを特徴とする請求項4、5、14、15のいずれか一つに記載のエンジンの空燃比制御装置。
- 前記リミッタは、2つの学習値のトータルとして割合の単位で予め定めたリミッタから前記無効噴射量の学習値を前記基本噴射量に対する割合に換算した値を差し引いた値であることを特徴とする請求項14から17までのいずれか一つに記載のエンジンの空燃比制御装置。
- 前記基本噴射量に代えて各学習領域の負荷の下限を定める値を用いることを特徴とする請求項18に記載のエンジンの空燃比制御装置。
- 前記パージカット時の学習値の更新時に前記無効噴射量の学習値に応じたリミッタでパージカット時の学習値を制限するとともに、そのリミッタでパージカット時の学習値が制限されるときは、そのリミッタでパージカット時の学習値を更新することを特徴とする請求項6または7に記載のエンジンの空燃比制御装置。
- 前記パージカット時の学習値の更新時に前記無効噴射量の学習値に応じたリミッタと2つの学習値のトータルとして割合の単位で予め定めたリミッタとの狭いほうでパージカット時の学習値を制限するとともに、その狭いほうのリミッタでパージカット時の学習値が制限されるときは、その狭いほうのリミッタでパージカット時の学習値を更新することを特徴とする請求項6または7に記載のエンジンの空燃比制御装置。
- 前記リミッタは、2つの学習値のトータルとして割合の単位で予め定めたリミッタから前記無効噴射量の学習値を前記基本噴射量に対する割合に換算した値を差し引いた値であることを特徴とする請求項20または21に記載のエンジンの空燃比制御装置。
- 前記基本噴射量に代えて学習領域の負荷の下限を定める値を用いることを特徴とする請求項22に記載のエンジンの空燃比制御装置。
- 前記パージカット時の学習値の参照時に前記無効噴射量の学習値に応じたリミッタで前記パージカット時の学習値を制限することを特徴とする請求項6、7、20、21のいずれか一つに記載のエンジンの空燃比制御装置。
- 前記パージカット時の学習値の参照時に前記無効噴射量の学習値に応じたリミッタと2つの学習値のトータルとして割合の単位で予め定めたリミッタとの狭いほうで前記パージカット時の学習値を制限することを特徴とする請求項6、7、20、21のいずれか一つに記載のエンジンの空燃比制御装置。
- 前記リミッタは、2つの学習値のトータルとして割合の単位で予め定めたリミッタから前記無効噴射量の学習値を前記基本噴射量に対する割合に換算した値を差し引いた値であることを特徴とする請求項24または25に記載のエンジンの空燃比制御装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP00571597A JP3644172B2 (ja) | 1997-01-16 | 1997-01-16 | エンジンの空燃比制御装置 |
US09/008,501 US6116227A (en) | 1997-01-16 | 1998-01-16 | Engine air-fuel ratio controller |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP00571597A JP3644172B2 (ja) | 1997-01-16 | 1997-01-16 | エンジンの空燃比制御装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10196436A JPH10196436A (ja) | 1998-07-28 |
JP3644172B2 true JP3644172B2 (ja) | 2005-04-27 |
Family
ID=11618823
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP00571597A Expired - Fee Related JP3644172B2 (ja) | 1997-01-16 | 1997-01-16 | エンジンの空燃比制御装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6116227A (ja) |
JP (1) | JP3644172B2 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4225645B2 (ja) * | 1999-08-25 | 2009-02-18 | 株式会社日立製作所 | 車両用コントロールユニットのデータ書き換え装置 |
JP4259109B2 (ja) * | 2002-12-20 | 2009-04-30 | 日産自動車株式会社 | エンジンの燃料噴射制御装置 |
US7167791B2 (en) * | 2004-09-27 | 2007-01-23 | Ford Global Technologies, Llc | Oxygen depletion sensing for a remote starting vehicle |
JP4453538B2 (ja) * | 2004-12-16 | 2010-04-21 | トヨタ自動車株式会社 | 内燃機関の燃料噴射制御装置 |
DE102005009101B3 (de) * | 2005-02-28 | 2006-03-09 | Siemens Ag | Verfahren und Vorrichtung zum Ermitteln eines Korrekturwertes zum Beeinflussen eines Luft/Kraftstoff-Verhältnisses |
JP5430770B2 (ja) * | 2010-09-17 | 2014-03-05 | ボッシュ株式会社 | 制御部材の制御処理装置、圧力制御処理装置、egr制御処理装置及び過給圧制御処理装置 |
JP5759142B2 (ja) | 2010-11-04 | 2015-08-05 | 日立オートモティブシステムズ株式会社 | 内燃機関の制御装置 |
EP2469064A1 (en) * | 2010-12-24 | 2012-06-27 | Delphi Technologies, Inc. | Method of controlling an internal combustion engine |
CN104153899B (zh) * | 2014-08-25 | 2016-07-13 | 北京理工大学 | 一种确定电控柴油机异常情况下的输出油量的方法 |
DE102015200898B3 (de) * | 2015-01-21 | 2015-11-05 | Continental Automotive Gmbh | Vorsteuerung eines Verbrennungsmotors |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4785784A (en) * | 1986-11-18 | 1988-11-22 | Nissan Motor Co., Ltd. | Fuel injection control system for internal combustion engine |
JP2526250B2 (ja) * | 1987-07-13 | 1996-08-21 | 日産自動車株式会社 | 内燃機関の燃料制御装置 |
JPH0693910A (ja) * | 1992-09-10 | 1994-04-05 | Nissan Motor Co Ltd | エンジンの蒸発燃料処理装置 |
JP3321877B2 (ja) * | 1993-03-16 | 2002-09-09 | 日産自動車株式会社 | エンジンの空燃比制御装置 |
JP2884469B2 (ja) * | 1994-02-28 | 1999-04-19 | 株式会社ユニシアジェックス | 内燃機関の空燃比制御装置 |
-
1997
- 1997-01-16 JP JP00571597A patent/JP3644172B2/ja not_active Expired - Fee Related
-
1998
- 1998-01-16 US US09/008,501 patent/US6116227A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6116227A (en) | 2000-09-12 |
JPH10196436A (ja) | 1998-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3259967B2 (ja) | 燃料と空気の混合気を適応調節する方法 | |
US20090107441A1 (en) | Adaptive fuel control strategy for engine starting | |
JPH0214976B2 (ja) | ||
JP3644172B2 (ja) | エンジンの空燃比制御装置 | |
JP2887056B2 (ja) | 内燃機関の燃料性状判定装置 | |
JP2000073885A (ja) | 内燃機関の空燃比制御装置 | |
JP3903925B2 (ja) | 内燃機関の燃料性状推定装置 | |
JP3966202B2 (ja) | 内燃機関の制御装置 | |
JPH06100149B2 (ja) | 内燃機関の制御装置 | |
JP4161772B2 (ja) | 内燃機関の制御装置 | |
JPH1018883A (ja) | エンジンの空燃比制御装置 | |
JPH0742875B2 (ja) | エンジンの空燃比制御装置 | |
JP3405128B2 (ja) | エンジンの空燃比制御装置 | |
JP4010256B2 (ja) | 内燃機関の制御装置 | |
JP3183040B2 (ja) | 内燃機関の燃料噴射制御装置 | |
JPH10110645A (ja) | エンジンの空燃比制御装置 | |
JPH07310577A (ja) | 内燃機関の燃料供給制御装置 | |
JP3946816B2 (ja) | エンジンの空燃比制御装置 | |
JP3593854B2 (ja) | 内燃機関の燃料噴射制御装置 | |
JP3404911B2 (ja) | エンジンの空燃比制御装置 | |
JP2004293349A (ja) | 内燃機関の制御装置 | |
JP2705268B2 (ja) | 内燃機関の空燃比フィードバック制御装置 | |
JPH04279746A (ja) | 内燃機関の燃料性状検出装置 | |
JP3397087B2 (ja) | エンジンの燃焼変動制御装置 | |
JP2543762B2 (ja) | 内燃機関の燃料供給制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050111 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050124 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090210 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100210 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |