JP3823711B2 - エンジンの燃料性状判別方法及び燃料噴射制御方法 - Google Patents
エンジンの燃料性状判別方法及び燃料噴射制御方法 Download PDFInfo
- Publication number
- JP3823711B2 JP3823711B2 JP2000309298A JP2000309298A JP3823711B2 JP 3823711 B2 JP3823711 B2 JP 3823711B2 JP 2000309298 A JP2000309298 A JP 2000309298A JP 2000309298 A JP2000309298 A JP 2000309298A JP 3823711 B2 JP3823711 B2 JP 3823711B2
- Authority
- JP
- Japan
- Prior art keywords
- fuel
- engine
- amount
- air
- fuel injection
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02T—CLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
- Y02T10/00—Road transport of goods or passengers
- Y02T10/10—Internal combustion engine [ICE] based vehicles
- Y02T10/40—Engine management systems
Landscapes
- Electrical Control Of Air Or Fuel Supplied To Internal-Combustion Engine (AREA)
- Combined Controls Of Internal Combustion Engines (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、エンジンの燃料性状判別方法に係り、特に、空燃比センサを活用して燃料応答に基づいて燃料性状の重質、軽質を判別するのに好適なエンジンの燃料性状判別方法に関する。また、本発明は、エンジンの燃料噴射制御方法に係り、特に、燃料性状変化に適応して空燃比制御精度を維持するのに好適なエンジンの燃料噴射制御方法に関する。
【0002】
【従来の技術】
線形回帰モデルを活用してエンジンの燃料性状を検出する技術として、特開平10−252550号公報記載の方法がある。この方法では、現在と過去の燃料噴射時間、水温、回転数、吸気管内絶対圧、現在と過去の当量比など、燃料性状による動特性を表現できるパラメータから多層ニューラルネットに基づいて燃料性状パラメータ(燃料の50%分留温度)を計算している。
【0003】
一方、特開平7−119515号公報には、制御則のパラメータを内燃機関の状態に応じて動的に修正して、燃料噴射量を適正な状態に保ち、空燃比制御精度を維持する方法が記載されている。上記従来技術では、いわゆる、逐次型の最小二乗法を活用して、内燃機関の運転状態に対応するパラメータをその都度、推定するものである。
【0004】
【発明が解決しようとする課題】
上記第1の従来技術を活用して、燃料性状を検出することは可能であるが、多層ニューラルネットという、いわゆるブラックボックスモデルを活用して燃料性状検出を行う場合、検出精度を確保するためノードや層の数を数多く設けなければならず、オンボードで燃料性状を計算する負荷が非現実的に膨大になるという問題がある。また、ノードや層の数を抑制し、ネットを簡素化した場合は、計算負荷は低減できるが、検出精度が劣化するという問題がある。
【0005】
また、第2の従来技術を活用すれば、燃料性状変化に適応して、制御パラメータを適正な方向に修正できるので、燃料性状が変わっても空燃比制御精度をある程度維持可能と考えられる。しかしながら、パラメータ推定に活用される最小二乗法は、推定パラメータが動かないことを前提にした理論であるため、エンジンのようなパラメータが動的に変化する対象では、パラメータの推定遅れが生じ、その都度適正なパラメータは推定されないという問題がある。これにより空燃比制御精度は劣化することになる。
【0006】
本発明の第1の目的は、比較的低負荷で精度良く燃料性状が判別できるエンジンの燃料性状判別方法を提供することにある。
【0007】
本発明の第2の目的は、燃料性状によらず空燃比制御精度を維持可能なエンジンの燃料噴射制御方法を提供することにある。
【0008】
【課題を解決するための手段】
本発明では、上記目的を達成するため以下の方法を行う。
【0009】
(方法1)
吸入空気量に基づいて燃料噴射量を制御するエンジンの燃料性状判別方法では、
(1)空気量、回転数、排気空燃比を計測し、
(2)エンジンが所定の運転状態にあるかどうかを判別し、
(3)エンジンが所定の運転状態にあると判定された時、上記計測値から第1の気筒流入燃料量を算出し、
(4)エンジンが所定の運転状態にあると判定された時、予め求めて記憶している上記所定の運転状態に対応する燃料輸送特性モデルと上記燃料噴射量から、第2の気筒流入燃料量を計算し、
(5)上記第1と第2の気筒流入燃料量から燃料性状を判別する。
【0010】
本方法においては、燃料輸送特性を表す物理モデルである燃料輸送モデルを活用し、基準の燃料応答と実際の燃料応答を比較することで、燃料性状を判別するもので、物理モデルを活用することで、判別法を簡素にでき、かつ、高精度な判別が可能になる。
【0011】
(方法2)
エンジン運転状態に応じて所定の制御パラメータを計算し、該計算値に基づいて燃料噴射量を制御するエンジンの燃料噴射方法では、
(1)排気空燃比、空気量、回転数の計測値から第1の気筒流入燃料量を計算し、
(2)吸気管内での燃料輸送特性を表す所定の数学モデルと燃料噴射量から第2の気筒流入燃料量を計算し、
(3)第1と第2の気筒流入燃料量の応答を比較し、この比較結果に基づいて上記制御パラメータを計算し、燃料噴射量を制御する。
【0012】
本方法では、気筒流入燃料量の応答比較により、燃料性状のレベルが判定し、これにより適切な制御パラメータを計算し、燃料噴射制御ができるので、空燃比制御精度を、常に良好な状態に維持できる。
【0013】
【発明の実施の形態】
本発明の実施例を図1から図15に基づいて説明する。
【0014】
図1は、本発明のエンジンの燃料性状判別方法、並びに、燃料噴射制御方法をデジタル式制御ユニットで実現する時の制御系の全体構成図である。制御ユニット10は、CPU20、RAM30、ROM40、タイマ50、I/O LSI60、それらを電気的に接続するバス70を備えている。I/O LSI60には、空気量センサ80、スロットル角センサ90、水温センサ100、回転数を検出するクランク角センサ110、排気管集合部に設置された空燃比をリニアに検出可能な空燃比センサ120からの信号が入力されるようになっている。また、I/O LSI60からは、各気筒に設けられた燃料噴射器への信号が出力されるようになっている。タイマ50は、CPU20に対して一定周期で割り込み要求を発生し、CPU20はこれに応じてROM40に格納された所定のプログラムを実行するようになっている。
【0015】
次に、図2から図7、図15に基づいて本発明の燃料性状を判別する処理の内容について説明する。まず、図15の制御ブロック図に基づいて燃料性状判別処理の概要について説明する。制御系では、水温などの現在の運転状態に対して、その運転状態に対応する燃料噴射量Gfと気筒流入燃料量Gfeの2変数間の数学モデル201をデータベースから選択する。このモデルは、予め、重質と軽質の中間的な性状の燃料に対するGfとGfeの関係を運転領域ごとに、実験に基づいてモデリングしたものである。
【0016】
実走行における、単調増加するある燃料噴射量Gfの応答に対して、この基準モデルを活用して、基準気筒流入燃料量Gfebの応答を計算する(201)。同時に、排気空燃比の計測値AFと気筒流入空気量推定値Qapから実際の気筒流入燃料量の応答Gfemを計算する(203)。Gfem,Gfebの2変数の差分(Gfem−Gfeb)の時間積分Jが正か負のどちらの値を取るかで、どちらの応答が速いかを判別する(204)。もし、Jの値が正で、実際の気筒流入燃料量の応答の方が速ければ使用中の燃料を軽質、Jの値が負で、実際の気筒流入燃料量の応答が遅ければ重質と判別する。以上の判定が合理的なことは、燃料噴射から気筒流入までの燃料の応答遅れが、重質から軽質に向かうほど小さくなることから明らかである。すなわち、実燃料応答が、中間の燃料性状に対する燃料応答を規定する基準応答より速い場合は使用燃料の軽質、遅い場合は重質ということになる。以上が燃料性状判別処理の概要とその原理である。次に処理の詳細について説明する。
【0017】
図2から図4は、燃料性状を判別するプログラムのフローチャートであり、10msごとに実行されるようになっている。本実施例では、アイドルからの加速に限定し燃料性状を判別する処理を行う。
【0018】
まず、ステップ800では、 A/Fセンサが活性化したかどうかを判定する。活性化していれば、ステップ900に進み、さもなければ処理をリターンする。
【0019】
次に、気筒流入空気量推定値のデータの移動、最新値の取り込みを行う。
【0020】
図5に示すように、燃料性状判別に利用する、a)気筒流入空気量推定値QAP、b)回転数検出値N,c)燃料噴射量計算値GF、d)空燃比計算値AF、e)スロットル開度の時系列データがRAMの所定領域に記憶されている。ステップ900では、気筒流入空気量推定値を記憶する各アドレスに記憶されたデータの移動を次のように行う。所定アドレス(M0からM0+60)に、最新時刻から300ms前までの時系列データが、10msおきに、31個記憶されている。図5a)で、QAPi(i=0から30)は、i×10ms時刻前の気筒流入空気量推定値データを示しており、対応するアドレスにそのデータが格納されている。まず、290ms前の空気量QAP29を記憶するアドレス(M0+58)のデータを、300ms前の空気量QAP30を記憶するアドレス(M0+60)にコピーする。さらに、280ms前の空気量QAP28を記憶するアドレス(M0+56)のデータを、290ms前の空気量QAP29を記憶するアドレス(M0+58)にコピーする。この操作を、最新時刻の空気量QAP0を記憶するアドレス(M0)のデータを、10ms前の空気量QAP1を記憶するアドレス(M0+2)にコピーするまで繰り返す。
【0021】
最後に、最新の空気量推定値QAPを、最新の気筒流入空気量推定値を記憶するアドレス(M0)にコピーする。
【0022】
なお、気筒流入空気量の推定演算は、別のプログラムにより実行されている。具体的には、空気量センサによる計測値QAをベースに次式により2msごとに演算される。
【0023】
【数1】
ここに、QAP;現在の気筒流入空気量、QAP(−1):2ms前の気筒流入空気量、T:時定数(回転数の関数)、QA:最新空気量計測値である。
【0024】
次に、ステップ950では、300ms前の空気量推定値QAP30が0でないかどうかをチェックし、0でなければ、ステップ1000に進み、さもなければ、処理をリターンする。
【0025】
ステップ1000では、水温Twが60℃未満がどうかを判定する。60℃未満ならステップ1001の処理移り、さもなければ、ステップ1032に移り、判別処理をリセットする。
【0026】
ステップ1001では、アイドルスイッチがONかどうかを判定する。ONなら、ステップ10021へ、ONでないなら、ステップ1004に進む。
【0027】
ステップ10021では、空気量下降チェックを行う。QAP0−QAP20<−0.25(g/s)、あるいは、QAP10−QAP30<−0.25(g/s)ならステップ1032に移り処理をリセットする。さもなければ、ステップ10022に進む。但し、QAP0:最新の空気量推定値(g/s)、QAP10:100ms前の空気量推定値(g/s)、QAP20:200ms前の空気量推定値(g/s)、QAP30:300ms前の空気量推定値(g/s)である。
【0028】
ステップ10022では、空気量上昇チェックを行う。QAP0−QAP20>0.25(g/s)、あるいは、QAP10−QAP30>0.25(g/s)ならステップ10023に移る。さもなければ、ステップ1005に進む。ステップ10021と同様、QAP0:最新の空気量推定値(g/s)、QAP10:100ms前の空気量推定値(g/s)、QAP20:200ms前の空気量推定値(g/s)、QAP30:300ms前の空気量推定値(g/s)である。
【0029】
ステップ10023では、スロットル開度変位チェックを行う。次の式が満足されたなら、ステップ1024に進み、さもなければ、ステップ1032に進み処理をリセットする。
【0030】
【数2】
TH0−TH10≧10mV (数2)
但し、TH0:最新スロットル開度(5mV)、TH10:100ms前のスロットル開度(5mV)である。
【0031】
ステップ10024では、記憶領域データチェックを行う。後述の方法で計算される140ms前の気筒流入燃料量GFEM14の値が、0でないかをチェックし、0でなければ、ステップ1005に進み、さもなければ、ステップ1032に進み処理をリセットする。
【0032】
ステップ1004では、空気量上昇チェックを行う。QAP0−QAP10>−0.25(g/s)ならステップ10041に移る。さもなければ、ステップ1032に進む。但し、QAP0:最新の空気量推定値(g/s)、QAP10:100ms前の空気量推定値(g/s)である。ステップ10041では、ステップ10024と同様、140ms前の気筒流入燃料量GFEM14の値が、0でないかをチェックし、0でなければ、ステップ1005に進み、さもなければ、ステップ1032に進み処理をリセットする。
【0033】
ステップ1005では、RAMの所定領域に記憶されている回転数、燃料噴射量、空燃比、スロットル開度のデータシフト、及び、最新値取り込みを行う。図5b)にそのアドレスを示す。気筒流入空気量のデータ移動、最新値取り込みを行ったのと同様の次の処理を行う。
【0034】
回転数を記憶する各アドレスに記憶されたデータの移動は次のように行う。所定アドレス(M1からM1+40)に、最新時刻から200ms前までの時系列データが、10msおきに、21個記憶されている。図5b)で、Ni(i=0から20)は、i×10ms時刻前の回転数検出値データを示しており、対応するアドレスにそのデータが格納されている。まず、190ms前の回転数N19を記憶するアドレス(M1+38)のデータを、200ms前の回転数N20を記憶するアドレス(M1+40)にコピーする。さらに、180ms前の回転数N18を記憶するアドレス(M1+36)のデータを、190ms前の回転数N19を記憶するアドレス(M1+38)にコピーする。この操作を、最新時刻の回転数N0を記憶するアドレス(M1)のデータを、10ms前の回転数N1を記憶するアドレス(M1+2)にコピーするまで繰り返す。
【0035】
最後に、最新の回転数検出値N0を、最新の回転数検出値を記憶するアドレス(M1)にコピーする。
【0036】
以上は、回転数の場合であるが、燃料噴射量、空燃比、スロットル開度に関しても同様の処理を行う。なお、燃料噴射量GFiに関しては、現時刻から300ms前までの31個のデータ、計測空燃比AFに関しては、現時刻から40ms前までの5個のデータ、スロットル開度に関しては、現時刻から100ms前までの11個のデータを記憶、更新する。なお、GFi、Ni、AFi、THiは、i×10ms前のデータを表す。この処理は、最新から所定時刻前までの気筒流入空気量、燃料噴射量、計測空燃比、スロットル開度のデータを予め定められたRAMの所定アドレスに記憶する処理を意味するものである。
【0037】
また、燃料噴射量の最新値GFCALの演算は、次式に基づいて行う。
【0038】
【数3】
ここに、KT1:定数、Ti:後述の方法で計算される実行噴射パルス幅(μs)、TS:無効噴射時間(μs)、TDATAF:燃料噴射REF間時間(エンジンが半回転する時間)(μs)、KLMTM:学習補正係数、KMR:混合比補正係数である。
【0039】
混合比補正係数、及び、学習補正係数の計算方法について説明する。
【0040】
空燃比制御の活用されるインジェクタや空気量センサは、様々な運転領域で高精度に動作するとは限らない。例えば、ある運転領域で、空気量センサによる計測空気量は、数%の誤算を持つかもしれない。また、インジェクタに関しても、ある噴射量指令値(目標値)に対して実際に噴射される燃料量は、数%の誤差を持つ可能性がある。初期のインジェクタや空気量センサの誤差を補正するために混合比補正係数が設けられている。混合比補正係数は、図8に示すように、空気量QAと空気量QAを回転数Nで割って得られる負荷L(=QA/N)の2次元テーブルを検索して求められる。テーブルデータには、予め、エンジン試験を行ない、様々な運転領域で、目標空燃比が実現されるような値が格納されている。
【0041】
次に、学習補正係数の計算方法について説明する。
【0042】
インジェクタや空気量センサの初期誤差の影響は、混合比補正を設けることで対処できる。しかしながら、これらセンサやアクチュエータの経時変化までは補償できない。学習補正係数KLNは、インジェクタや空気量センサの経時変化による誤差を補償するためのものである。混合比補正係数と同様に、図11に示す空気量QAと負荷L(=QA/N)の2次元テーブルを検索してその値KLNが求められる。
【0043】
テーブルデータは、時々刻々書き換えらている。次に、このテーブルデータの設定方法について説明する。
【0044】
このテーブルデータ設定には、空燃比フィードバック制御の補正係数が用いられる。空燃比フィードバック制御とは、計測空燃比が目標空燃比に一致するよう燃料噴射時間を補正するもので、その補正係数γは、例えば、PI制御則により次のように求められる。
【0045】
【数4】
e=AF0−AFT (数4)
【0046】
【数5】
γ=(Kp+Ki/S)e (数5)
ここに、AF0:計測空燃比、AFT:目標空燃比、e:空燃比誤差、Kp:比例ゲイン、Ki:積分ゲイン、S:ラプラス演算子、γ:フィードバック補正係数である。
【0047】
この補正係数を用いて、燃料噴射時間Tiが次のように演算される。
【0048】
【数6】
Ti=KT2・GF・TDATAF・γ・(1+KMR)・(1+KLN)+TS (数6)
ここに、KT2:定数、Ti:実行噴射パルス幅(μs)、TS:無効噴射時間(μs)、TDATAF:燃料噴射REF間時間(エンジンが半回転する時間)(μs)、KLN:学習補正係数、KMR:混合比補正係数、γ:フィードバック補正係数、GF:燃料噴射量計算値である。GFの計算方法については、後述する。
【0049】
学習補正係数KLNの初期値は0である。定常状態で、インジェクタや空気量センサの特性の経時変化がない場合は、フィードバック補正係数は1.0近傍の値を示す。これに対して経時劣化が生じた場合、1.0と異なる値を示すことになる。このずれを、ずれが生じた運転領域と対にして図11の学習テーブルに記憶し、テーブル検索により学習係数KLNを算出し、数6のTi演算に活用する。これにより、特性の経時変化が存在する場合でも目標空燃比を実現する適切な燃料噴射量を決定できる。
【0050】
以上述べた学習補正係数のテーブルデータを算出するプログラムのフローチャートを、図9に示す。この処理は、所定の周期で実行される。ステップ901では、計測空気量QAと負荷(QA/N)が一定の定常運転状態にあるかどうかを判定する。定常状態にあれば次のステップに進み、さもなければ処理を終了する。ステップ902では、現在の運転領域が、図10のどの学習領域にあるかを判定する。図10では、空気量、負荷とも6分割された、36の学習運転領域が設定されている。ステップ903では、最新のフィードバック補正係数γから1を引いた値(γ−1)の値を計算し、そのデータを図11のテーブルに書き込むが、データを書き込むテーブル内の運転領域は、ステップ902で判定された運転領域に等しくする。以上が学習補正係数を格納したテーブルのデータを書き換える処理の内容である。
【0051】
以上で図2のステップ1005に関連する処理の説明を終わる。
【0052】
次に、ステップ1006では、センサの応答遅れを補償した空燃比を計算し、RAMの所定領域に記憶する。RAMに記憶された最新の空燃比計測値AF0と、過去にこのステップで計算し、RAMの所定領域(図5に示す以外の領域)に記憶している最新、10ms前、20ms前のセンサの応答遅れを補償した空燃比AFR0、AFR1、AFR2から次の式に従って、現時刻のセンサ応答遅れを補償した空燃比AFRを計算する。
【0053】
【数7】
ここに、ai,bi(i=0,1,2,3)は定数である。
【0054】
さらに、AFR1のデータを、20ms前の空燃比を記憶するアドレスにコピーし、AFR0のデータを、10ms前の空燃比を記憶するアドレスにコピーし、最後に、算出されたAFRのデータを最新の空燃比を記憶するアドレスにコピーする。
【0055】
ステップ1007では、センサの応答遅れを補償した空燃比に含まれるノイズを除去する。ノイズ除去はローパスフィルタを活用し、最新、10ms前、20ms前のセンサ応答遅れを補償した空燃比AFR0、AFR1、AFR2と、過去にこのステップで計算し、RAMの所定領域に記憶している最新、10ms前、20ms前のノイズ除去を施した空燃比AFN0、AFN1、AFN2から次式に従って、ノイズを除去した現時刻の空燃比AFNを計算する。
【0056】
【数8】
ここに、ci,diは定数である。
【0057】
さらに、AFN1のデータを、20ms前の空燃比を記憶するアドレスにコピーし、AFN0のデータを、10ms前の空燃比を記憶するアドレスにコピーし、最後に、算出されたAFNのデータを最新の空燃比を記憶するアドレスにコピーする。
【0058】
ステップ1008では、300ms前の燃料噴射量計算値GF30の値が0でないかどうかで、図5のRAM領域がすべて埋まっているかどうかを判定する。0でなければ、次の処理に、さもなければ処理を終了する。
【0059】
本プログラムでは、エンジンの行程と排気管内での流動に起因する遅れ(空燃比の検出遅れ時間:無駄時間)の最新値idと10ms前の値idoldをRAMの所定領域に記憶している。ステップ1009では、最新値のデータを読み出し、これを10ms前のデータを記憶するアドレスにロードする。
【0060】
ステップ1011では、現在の空燃比検出遅れ時間idを次式に基づいて計算し、RAMの所定領域に記憶する。
【0061】
【数9】
id=SEISU(12000/N0) (数9)
ここに、N0:最新の回転数検出値、SEISU:引数の整数値を出力する関数。
【0062】
ステップ10111では、idoldの値が0の時、idの値を、idoldに代入する。
【0063】
ステップ1012では、RAMの所定領域に記憶している最新の空燃比検出遅れ時間idと10ms前の空燃比検出遅れ時間idoldを比較する。idの方が大きければステップ1013に進み、さもなければステップ1014に進む。加速時では、回転数が上昇するため、一般的にはidのほうが大きくなることはない。idの方が大きい場合、ノイズの影響であり、この影響を除去するため次のステップ1013で、idにidoldを代入する。すなわち、最新の空燃比検出遅れ時間のデータを記憶するアドレスに、10ms前の空燃比検出遅れ時間のデータをロードする。
【0064】
ステップ1015では、idとidoldの値を比較し、id=idoldならステップ1016に、id=idold−1ならステップ1017に、id<idold−1ならステップ1032に進む。
【0065】
RAMの所定領域に、検出しうる最新の気筒流入燃料量GFEM0から、その140ms前までのデータが10msおきに15個記憶されている。以下、GFEMi(i=0から14)をi×10ms前の気筒流入燃料量を記憶するアドレスに記憶されたデータとする。
【0066】
ステップ1016では、まず、130ms前のデータGFEM13を読み出し、これを、140ms前のデータを記憶するアドレスにロードする。さらに、120ms前のデータGFEM12を読み出し、130ms前のデータを記憶するアドレスにロードする。この処理を、最新のデータGFEM0を読み出し、10ms前のデータを記憶するアドレスにロードするまで繰り返す。最後に、次式で計算したGFEMを、最新のデータを記憶するアドレスに記憶する。
【0067】
【数10】
GFEM=QAPID/AFN0 (数10)
ここに、QAPID:id×10時刻前の気筒流入空気量推定値、AFN0:最新のノイズ除去空燃比である。
【0068】
ステップ1017では、RAMの所定領域に記憶されている上述のデータを次のように操作する。 まず、120ms前のデータGFEM12を読み出し、これを、140ms前のデータを記憶するアドレスにロードする。次に、110ms前のデータGFEM11を読み出し、130ms前のデータを記憶するアドレスにロードする。この処理を、最新のデータGFEM0を、20ms前のデータを記憶するアドレスにロードするまで繰り返す。次に、0.5×(GFEM0+GFEM)を計算し、計算された値を、10ms前のデータを記憶するアドレスにロードする。但し、GFEMは数10で計算される値である。 最後に、数10に基づいて計算したGFEMを、最新のデータを記憶するアドレスにロードし、処理を終了する。空燃比の検出遅れ時間idが変化するタイミングでは、気筒流入燃料量の計算値が一時的に欠損するため、ステップ1017では、それを補間計算で補う処理を行っている。
【0069】
ステップ1018では、加速中かどうかを示す加速フラグAFLGがON(値が1)かどうかを判定する。ONの場合は加速中であり、この場合は、ステップ1023に進み、さもなければステップ1019に進む。
【0070】
ステップ1019では、燃料噴射量、気筒流入燃料量の平均値を次式に基づいて計算し、RAMの所定領域に記憶する。
【0071】
【数11】
GFBAR=(GF0+GF2+GF4+GF6+GF8+GF10+GF12+GF14)/8 (数11)
【0072】
【数12】
ここに、GFBAR:燃料噴射量平均値、GFi:i×10ms前の燃料噴射量、
GFEBAR:気筒流入燃料量平均値、GFEMi:i×10ms前の気筒流入燃料量である。
【0073】
ステップ1020では、加速開始かどうかを判定する。加速開始は、次式により判定する。
【0074】
【数13】
TH0―TH10>LEVEL (数13)
THi:i×10ms前のスロットル開度、LEVEL:定数
数13が成立し、加速開始と判定された場合、ステップ10201に進み、さもなければ処理を終了する。
【0075】
ステップ10201では、記憶領域データチェックを行なう。ここでは、GFEM14の値が、0でないかをチェックし、0でなければ、ステップ10202に進み、さもなければ、ステップ1032に進み処理をリセットする。
【0076】
但し、GFEM14は、140ms前の気筒流入燃料量計算値である。
【0077】
ステップ10202では、空気量の一定チェックを行なう。気筒流入空気量推定値QAPi(i=8,14,18,20,24、30)が次の条件式を満たすかどうかを判定する。
【0078】
【数14】
|QAP8−QAP18|<0.35(g/s) (数14)
【0079】
【数15】
|QAP14−QAP24|<0.35(g/s) (数15)
【0080】
【数16】
|QAP20−QAP30|<0.35(g/s) (数16)
ここに、QAP8:80ms前の気筒流入空気量推定値(g/s)、QAP14:140ms前の気筒流入空気量推定値(g/s)、QAP18:180ms前の気筒流入空気量推定値(g/s)、QAP20:200ms前の気筒流入空気量推定値(g/s)、QAP24:240ms前の気筒流入空気量推定値(g/s)、QAP30:300ms前の気筒流入空気量推定値(g/s)である。
【0081】
上の全ての条件式が満たされたなら、ステップ10203、さもなければ、ステップ1032に進む。
【0082】
ステップ10203では、GFとGFEの平均値の偏差の判定を行なう。
【0083】
次の条件式が満足されたならステップ1021に進み、さもなければ、ステッ1032に進み、処理をリセットする。
【0084】
【数17】
|GFBAR−GFEBAR|<0.025(g/s) (数17)
ここに、GFBAR:ステップ1019で計算されたGFの平均値(g/s)、GFEBAR:ステップ1019で計算されたGFEの平均値(g/s)である。
【0085】
ステップ1021では、加速フラグAFLGをON(値を1)にする。なお、このフラグの初期値はOFF(値は0)である。
【0086】
ステップ10211では、燃料性状の判別指標であるJを初期化(0を代入)する。
【0087】
ステップ1022では、加速開始時の回転数NS、気筒流入空気量QAPS、スロットル開度THSを記憶する。
【0088】
ステップ1023では、タイムカウンタCNTを1だけアップする。なお、CNTの初期値は0である。
【0089】
ステップ10231では、非同期噴射が実行されたかどうかを判定し、実行されたならステップ1032に進み処理をリセット、さもなければ、ステップ1024に進む。
【0090】
ステップ1024では、回転数、空気量、燃料噴射量のレベル判定を行なう。回転数、気筒流入空気量、燃料噴射量計算値が以下の全ての条件を満たす時、ステップ1025に進み、条件が満たされない時、ステップ1032に進み判別処理をリセットする。
【0091】
【数18】
N0−N4>−25(rpm) (数18)
【0092】
【数19】
Qap0−Qap4>−0.5(g/s) (数19)
【0093】
【数20】
GF0−GF10>−0.035(g/s) (数20)
ここで、N0:最新の回転数検出値(rpm)、N4:40ms前の回転数検出値(rpm)、QAP0:最新の気筒流入空気量推定値(g/s)、QAP4:40ms前の気筒流入空気量推定値(g/s)、GF0:最新の燃料噴射量(g/s)、GF10:100ms前の燃料噴射量(g/s)である。
【0094】
ステップ1025では、最新回転数N0>2000(rpm)かどうかを判定する。この条件が満たされたなら、アイドルから所定の加速が行われ、性状判別が可能な十分なデータが採取できたとして、ステップ10290以降の燃料性状判別処理に移る。さもなければステップ1026以降の処理に移る。
【0095】
ステップ1026では、レベル判定フラグLFLGがON(値が1)かどうかを判定する。レベル判定フラグとは、加速開始後に、基準モデルパラメータが計算された後、ON(値が1にセット)されるフラグである。ONならステップ1036の処理に移る。さもなければ、ステップ1027以降の処理に移る。
【0096】
ステップ1027では、タイムカウンタCNT≧20より、0.2秒経過を判定する。0.2秒経過ならステップ1028以降の処理に移り、さもなければ処理を終了する。
【0097】
ステップ1028では、水温が60℃未満かどうかを判定し、そうならば次の処理に移り、さもなければ、判別処理をリセットするステップ1032以降の処理に移る。続く、ステップ1033では、燃料噴射量GFと気筒流入燃料量GFEの関係式
【0098】
【数21】
【0099】
において、水温Twの関数であるモデルパラメータb0(Tw)、b1(Tw)、a0(Tw)を、最新の水温Twをパラメータにして、図6の1次元テーブルを参照して求める。なお、q−1は、時間遅れ素子。
【0100】
ここで、テーブルデータは、予め、エンジン試験で採取したデータを解析して求める。例えば、水温20℃のデータは、水温を20℃の状態でエンジンをアイドル運転する。なお、燃料は、重質と軽質の中間性状の燃料を用いてエンジンを運転する。このときエンジンにかかる負荷はROAD/LOADとする。アイドル状態からスロットルを踏み込み加速する。図7に示すように、このときのa)回転数、b)気筒流入空気量、c)空燃比、d)燃料噴射量の応答を検出する。数10を活用すればe)気筒流入燃料量の応答も図7のように計算できる。得られた燃料噴射量の応答を入力、気筒流入燃料量の応答を出力として最小二乗法により、数21のモデルパラメータa0、b0、b1を計算できる。得られたデータを図6の水温20℃の領域に格納する。以上がテーブルデータの求め方である。
【0101】
次に、ステップ1034では、レベル判定フラグLFLGをON(値を1)にする。このフラグの初期値は0である。
【0102】
ステップ1036では、燃料噴射量のトレンドを次の式により除去し、記憶する。
【0103】
【数22】
GFT0=GFID−GFBAR (数22)
【0104】
【数23】
GFT1=GFID0−GFBAR (数23)
【0105】
【数24】
GFT2=GFID1−GFBAR (数24)
ここに、GFID:id×10ms前の燃料噴射量、GFID0:(id+1)×10ms前の燃料噴射量、GFID1:(id+2)×10ms前の燃料噴射量、GFBAR:燃料噴射量平均値、GFT0:id×10ms前のトレンド除去した燃料噴射量、GFT1:idold×10ms前のトレンド除去した燃料噴射量である。
【0106】
ステップ1037では、気筒流入燃料量のトレンドを次式により除去し、記憶する。
【0107】
【数25】
GFET=GFEM0−GFEBAR (数25)
GFEM0:検出しうる最新(id×10ms前)の気筒流入燃料量、GFEBAR:気筒流入燃料量平均値、GFET:トレンド除去した気筒流入燃料量である。トレンド除去した気筒流入燃料量は、検出しうる最新の値からその40ms前の値まで10msごとに5個記憶されている。ステップ1037では、30ms前のデータGFET3を呼び出し、40ms前のデータを記憶するアドレスにロードし、20ms前のデータGFET2を呼び出し、30ms前のデータを記憶するアドレスにロードし、10ms前のデータGFET1を呼び出し、20ms前のデータを記憶するアドレスにロードし、最新のデータGFET0を呼び出し、10ms前のデータを記憶するアドレスにロードする。最後に、GFETを、最新のデータを記憶するアドレスにロードする。
【0108】
ステップ1038では、最新の空燃比検出遅れ時間idと10ms前の空燃比検出遅れ時間idoldを比較する。両者が等しければステップ1040に進み、さもなければステップ1043に進む。
【0109】
ステップ1040では、トレンド除去した燃料噴射量GFT0,GFT1と過去にこのステップで計算し記憶している基準気筒流入燃料量GFEB、及び、ステップ1033で求めたモデルパラメータa1、b0、b1から最新の基準気筒流入燃料量GFEBNを次式で計算し、記憶する。
【0110】
【数26】
記憶されたGFEBNの値は、次回のこのステップで、GFEBの値として、新たなGFEBNの計算に活用される。
【0111】
ステップ1041では、燃料性状判別のための指標Jを次式で更新する。
【0112】
【数27】
J←J+(GFET0−GFEBN) (数27)
ここに、GFET0:空燃比に基づいて計算されたトレンド除去した気筒流入燃料量、GFEBN:燃料噴射量と数21(あるいは数26)のモデルベースに計算された基準気筒流入燃料量である。
【0113】
10msごとにJの更新を行うため、Jの値の正、負により、空燃比計測値から検出される気筒流入燃料量の応答と、燃料噴射量と数21のモデルにより計算される基準気筒流入燃料量の応答のうち、どちらの応答が速いかを判別できる。例えば、モデルによる基準応答は重質と軽質の中間の性状を表すため、検出気筒流入燃料量の応答の方が速ければ、現在使用中の燃料は軽質、検出気筒流入燃料量の応答の方が遅ければ、現在使用中の燃料は重質と判定できる。この判定処理は、十分なデータが採取された後、ステップ1030で行う。
【0114】
ステップ1043では、トレンド除去した燃料噴射量GFT0,GFT1、GFT2と過去にステップ1040で計算し記憶している基準気筒流入燃料量GFEB、及び、ステップ1033で求めたモデルパラメータからa1、b0、b1から最新の基準気筒流入燃料量GFEBNを次式で計算し、記憶する。
【0115】
【数28】
得られたGFEBNは、(id−1)×10ms前の基準気筒流入燃料量に相当する。
【0116】
さらに、GFEBNから次の式によりid×10ms前の基準気筒流入燃料量GFEBNNを計算する。
【0117】
【数29】
ステップ1044では、燃料性状判別のための指標Jを次式で更新する。
【0118】
【数30】
最後に、性状判定用のデータが十分そろった後の処理である、ステップ10290、1029、1030の処理について説明する。
【0119】
ステップ10290では、加速開始後0.5秒経過したかをチェックする。タイムカウンタCNT が50を越えたかどうかをチェックし、50を越えたならステップ1029に進み、さもなければ、ステップ1032に進み処理をリセットする。
【0120】
ステップ1029では、気筒流入空気量が次の条件を満足するかどうかを判定する。
【0121】
【数31】
ここに、QMIN,QMAX:所定の定数、QAP0:最新気筒流入空気量である。
【0122】
上記条件を満たせたステップ1030に進み、さもなければ、ステップ1032に進み性状判別処理をリセットする。
【0123】
ステップ1030では、次の条件式により燃料性状を判別する。
【0124】
【数32】
【0125】
【数33】
JMIN、JMAXは定数で、例えば、両定数とも0に設定する。
【0126】
以上で性状判別処理方法の実施例のすべての処理の説明を終了する。
【0127】
上記実施例がアイドルからの加速を想定したが、定常走行からの加速や減速でも同様の方法で燃料性状を判別できる。
【0128】
次に、燃料性状判別結果の利用方法について図12から図14に基づいて説明する。
【0129】
図12は、目標の空燃比を実現する燃料噴射パルス幅を計算するプログラムのフローチャートであり、所定のクランク角に来たときに実行されるようになっている。ステップ4001では、図13のテーブルを参照して噴射燃料の付着率X、液膜の蒸発時定数τを計算する。付着率に関しては、回転数Nと空気量Qaを回転数で割って選られる負荷Qa/Nをパラメータに2次元テーブルを検索してベース付着率Xbを算出する。さらに、水温をパラメータに1次元テーブルを検索して水温補正係数kxを計算する。補正係数算出のため重質用と軽質用の補正テーブルが設けられており、前述のプログラムによる判定結果にしたがって、どちらのテーブル検索値を利用するかを決定する。重質と判定されていれば、重質用テーブルを利用し、軽質と判定されていれば軽質用テーブルを利用する。基準付着率Xbに水温補正係数kxを乗じて付着率Xを計算する。図13に示すように蒸発時定数の計算も同様に行うことができる。なお、1次元テーブルのデータは、図14に示すように、kx、kτとも、重質燃料ほど値が大きくなる傾向にある。
【0130】
ステップ4002では、選られた付着率X、蒸発時定数τ、気筒流入空気量推定値Qap、前のサイクルで後述のステップ4004で計算され記憶されている液膜量Mfから次式にしたがって燃料噴射量GF(g/s)を計算する。
【0131】
【数34】
【0132】
ここに、AFT:目標空燃比である。
【0133】
ステップ4003では、数6により燃料噴射パルス幅Tiを計算する。
【0134】
最後に、ステップ4004では、次式により液膜量推定値を更新して記憶する。
【0135】
【数35】
【0136】
ここに、i:時刻(1時刻はΔtの時間)、Δt:時間刻み、X:付着率、τ:蒸発時手数、Gf:燃料噴射量である。
【0137】
以上で処理を終了し、次回の起動要求があるまで待機する。以上のように燃料性状判別結果に応じて、適切な燃料制御パラメータを設定できるので、燃料性状によらず常に空燃比制御精度を良好な状態に維持できる。なお、燃料性状が変化したと判定された時、図13の水温補正テーブルをいきなり切り替えると、算出される付着率、蒸発時定数が不連続になり、制御性能が劣化する場合がある。したがって、性状変化直後は、付着率と蒸発時定数を、古い性状相当値から新しい性状相当値に徐々に切り替えるようにして、制御性能を確保するようにしても良い。
【0138】
【発明の効果】
以上のように、本発明では、燃料性状を精度良く判別できる。また、性状変化に適応して空燃比制御精度を維持できる。
【図面の簡単な説明】
【図1】制御系全体構成図である。
【図2】本発明の第一実施例の燃料性状を判別するプログラムのフローチャートである。
【図3】本発明の第一実施例の燃料性状を判別するプログラムのフローチャートである。
【図4】本発明の第一実施例の燃料性状を判別するプログラムのフローチャートである。
【図5】変数を記憶するRAM領域である。
【図6】第一実施例のモデルパラメータを格納したテーブルである。
【図7】第一実施例におけるモデル構築のための時系列データである。
【図8】混合比補正係数を格納した2次元テーブルである。
【図9】学習制御プログラムのフローチャートである。
【図10】学習領域を示す図である。
【図11】学習補正係数を格納した2次元テーブルである。
【図12】燃料噴射量を計算するプログラムのフローチャートである。
【図13】付着率、蒸発時定数を格納したテーブルである。
【図14】付着率、蒸発時定数の水温補正係数の特性である。
【図15】燃料性状判別処理のブロック図である。
【符号の説明】
10:制御ユニット、20:CPU、30:RAM、40:ROM、50:タイマ、60:LSI、70:バス、80:空気量センサ、90:スロットルセンサ、100:水温センサ、110:クランク角センサ、120:空燃比センサ
【発明の属する技術分野】
本発明は、エンジンの燃料性状判別方法に係り、特に、空燃比センサを活用して燃料応答に基づいて燃料性状の重質、軽質を判別するのに好適なエンジンの燃料性状判別方法に関する。また、本発明は、エンジンの燃料噴射制御方法に係り、特に、燃料性状変化に適応して空燃比制御精度を維持するのに好適なエンジンの燃料噴射制御方法に関する。
【0002】
【従来の技術】
線形回帰モデルを活用してエンジンの燃料性状を検出する技術として、特開平10−252550号公報記載の方法がある。この方法では、現在と過去の燃料噴射時間、水温、回転数、吸気管内絶対圧、現在と過去の当量比など、燃料性状による動特性を表現できるパラメータから多層ニューラルネットに基づいて燃料性状パラメータ(燃料の50%分留温度)を計算している。
【0003】
一方、特開平7−119515号公報には、制御則のパラメータを内燃機関の状態に応じて動的に修正して、燃料噴射量を適正な状態に保ち、空燃比制御精度を維持する方法が記載されている。上記従来技術では、いわゆる、逐次型の最小二乗法を活用して、内燃機関の運転状態に対応するパラメータをその都度、推定するものである。
【0004】
【発明が解決しようとする課題】
上記第1の従来技術を活用して、燃料性状を検出することは可能であるが、多層ニューラルネットという、いわゆるブラックボックスモデルを活用して燃料性状検出を行う場合、検出精度を確保するためノードや層の数を数多く設けなければならず、オンボードで燃料性状を計算する負荷が非現実的に膨大になるという問題がある。また、ノードや層の数を抑制し、ネットを簡素化した場合は、計算負荷は低減できるが、検出精度が劣化するという問題がある。
【0005】
また、第2の従来技術を活用すれば、燃料性状変化に適応して、制御パラメータを適正な方向に修正できるので、燃料性状が変わっても空燃比制御精度をある程度維持可能と考えられる。しかしながら、パラメータ推定に活用される最小二乗法は、推定パラメータが動かないことを前提にした理論であるため、エンジンのようなパラメータが動的に変化する対象では、パラメータの推定遅れが生じ、その都度適正なパラメータは推定されないという問題がある。これにより空燃比制御精度は劣化することになる。
【0006】
本発明の第1の目的は、比較的低負荷で精度良く燃料性状が判別できるエンジンの燃料性状判別方法を提供することにある。
【0007】
本発明の第2の目的は、燃料性状によらず空燃比制御精度を維持可能なエンジンの燃料噴射制御方法を提供することにある。
【0008】
【課題を解決するための手段】
本発明では、上記目的を達成するため以下の方法を行う。
【0009】
(方法1)
吸入空気量に基づいて燃料噴射量を制御するエンジンの燃料性状判別方法では、
(1)空気量、回転数、排気空燃比を計測し、
(2)エンジンが所定の運転状態にあるかどうかを判別し、
(3)エンジンが所定の運転状態にあると判定された時、上記計測値から第1の気筒流入燃料量を算出し、
(4)エンジンが所定の運転状態にあると判定された時、予め求めて記憶している上記所定の運転状態に対応する燃料輸送特性モデルと上記燃料噴射量から、第2の気筒流入燃料量を計算し、
(5)上記第1と第2の気筒流入燃料量から燃料性状を判別する。
【0010】
本方法においては、燃料輸送特性を表す物理モデルである燃料輸送モデルを活用し、基準の燃料応答と実際の燃料応答を比較することで、燃料性状を判別するもので、物理モデルを活用することで、判別法を簡素にでき、かつ、高精度な判別が可能になる。
【0011】
(方法2)
エンジン運転状態に応じて所定の制御パラメータを計算し、該計算値に基づいて燃料噴射量を制御するエンジンの燃料噴射方法では、
(1)排気空燃比、空気量、回転数の計測値から第1の気筒流入燃料量を計算し、
(2)吸気管内での燃料輸送特性を表す所定の数学モデルと燃料噴射量から第2の気筒流入燃料量を計算し、
(3)第1と第2の気筒流入燃料量の応答を比較し、この比較結果に基づいて上記制御パラメータを計算し、燃料噴射量を制御する。
【0012】
本方法では、気筒流入燃料量の応答比較により、燃料性状のレベルが判定し、これにより適切な制御パラメータを計算し、燃料噴射制御ができるので、空燃比制御精度を、常に良好な状態に維持できる。
【0013】
【発明の実施の形態】
本発明の実施例を図1から図15に基づいて説明する。
【0014】
図1は、本発明のエンジンの燃料性状判別方法、並びに、燃料噴射制御方法をデジタル式制御ユニットで実現する時の制御系の全体構成図である。制御ユニット10は、CPU20、RAM30、ROM40、タイマ50、I/O LSI60、それらを電気的に接続するバス70を備えている。I/O LSI60には、空気量センサ80、スロットル角センサ90、水温センサ100、回転数を検出するクランク角センサ110、排気管集合部に設置された空燃比をリニアに検出可能な空燃比センサ120からの信号が入力されるようになっている。また、I/O LSI60からは、各気筒に設けられた燃料噴射器への信号が出力されるようになっている。タイマ50は、CPU20に対して一定周期で割り込み要求を発生し、CPU20はこれに応じてROM40に格納された所定のプログラムを実行するようになっている。
【0015】
次に、図2から図7、図15に基づいて本発明の燃料性状を判別する処理の内容について説明する。まず、図15の制御ブロック図に基づいて燃料性状判別処理の概要について説明する。制御系では、水温などの現在の運転状態に対して、その運転状態に対応する燃料噴射量Gfと気筒流入燃料量Gfeの2変数間の数学モデル201をデータベースから選択する。このモデルは、予め、重質と軽質の中間的な性状の燃料に対するGfとGfeの関係を運転領域ごとに、実験に基づいてモデリングしたものである。
【0016】
実走行における、単調増加するある燃料噴射量Gfの応答に対して、この基準モデルを活用して、基準気筒流入燃料量Gfebの応答を計算する(201)。同時に、排気空燃比の計測値AFと気筒流入空気量推定値Qapから実際の気筒流入燃料量の応答Gfemを計算する(203)。Gfem,Gfebの2変数の差分(Gfem−Gfeb)の時間積分Jが正か負のどちらの値を取るかで、どちらの応答が速いかを判別する(204)。もし、Jの値が正で、実際の気筒流入燃料量の応答の方が速ければ使用中の燃料を軽質、Jの値が負で、実際の気筒流入燃料量の応答が遅ければ重質と判別する。以上の判定が合理的なことは、燃料噴射から気筒流入までの燃料の応答遅れが、重質から軽質に向かうほど小さくなることから明らかである。すなわち、実燃料応答が、中間の燃料性状に対する燃料応答を規定する基準応答より速い場合は使用燃料の軽質、遅い場合は重質ということになる。以上が燃料性状判別処理の概要とその原理である。次に処理の詳細について説明する。
【0017】
図2から図4は、燃料性状を判別するプログラムのフローチャートであり、10msごとに実行されるようになっている。本実施例では、アイドルからの加速に限定し燃料性状を判別する処理を行う。
【0018】
まず、ステップ800では、 A/Fセンサが活性化したかどうかを判定する。活性化していれば、ステップ900に進み、さもなければ処理をリターンする。
【0019】
次に、気筒流入空気量推定値のデータの移動、最新値の取り込みを行う。
【0020】
図5に示すように、燃料性状判別に利用する、a)気筒流入空気量推定値QAP、b)回転数検出値N,c)燃料噴射量計算値GF、d)空燃比計算値AF、e)スロットル開度の時系列データがRAMの所定領域に記憶されている。ステップ900では、気筒流入空気量推定値を記憶する各アドレスに記憶されたデータの移動を次のように行う。所定アドレス(M0からM0+60)に、最新時刻から300ms前までの時系列データが、10msおきに、31個記憶されている。図5a)で、QAPi(i=0から30)は、i×10ms時刻前の気筒流入空気量推定値データを示しており、対応するアドレスにそのデータが格納されている。まず、290ms前の空気量QAP29を記憶するアドレス(M0+58)のデータを、300ms前の空気量QAP30を記憶するアドレス(M0+60)にコピーする。さらに、280ms前の空気量QAP28を記憶するアドレス(M0+56)のデータを、290ms前の空気量QAP29を記憶するアドレス(M0+58)にコピーする。この操作を、最新時刻の空気量QAP0を記憶するアドレス(M0)のデータを、10ms前の空気量QAP1を記憶するアドレス(M0+2)にコピーするまで繰り返す。
【0021】
最後に、最新の空気量推定値QAPを、最新の気筒流入空気量推定値を記憶するアドレス(M0)にコピーする。
【0022】
なお、気筒流入空気量の推定演算は、別のプログラムにより実行されている。具体的には、空気量センサによる計測値QAをベースに次式により2msごとに演算される。
【0023】
【数1】
ここに、QAP;現在の気筒流入空気量、QAP(−1):2ms前の気筒流入空気量、T:時定数(回転数の関数)、QA:最新空気量計測値である。
【0024】
次に、ステップ950では、300ms前の空気量推定値QAP30が0でないかどうかをチェックし、0でなければ、ステップ1000に進み、さもなければ、処理をリターンする。
【0025】
ステップ1000では、水温Twが60℃未満がどうかを判定する。60℃未満ならステップ1001の処理移り、さもなければ、ステップ1032に移り、判別処理をリセットする。
【0026】
ステップ1001では、アイドルスイッチがONかどうかを判定する。ONなら、ステップ10021へ、ONでないなら、ステップ1004に進む。
【0027】
ステップ10021では、空気量下降チェックを行う。QAP0−QAP20<−0.25(g/s)、あるいは、QAP10−QAP30<−0.25(g/s)ならステップ1032に移り処理をリセットする。さもなければ、ステップ10022に進む。但し、QAP0:最新の空気量推定値(g/s)、QAP10:100ms前の空気量推定値(g/s)、QAP20:200ms前の空気量推定値(g/s)、QAP30:300ms前の空気量推定値(g/s)である。
【0028】
ステップ10022では、空気量上昇チェックを行う。QAP0−QAP20>0.25(g/s)、あるいは、QAP10−QAP30>0.25(g/s)ならステップ10023に移る。さもなければ、ステップ1005に進む。ステップ10021と同様、QAP0:最新の空気量推定値(g/s)、QAP10:100ms前の空気量推定値(g/s)、QAP20:200ms前の空気量推定値(g/s)、QAP30:300ms前の空気量推定値(g/s)である。
【0029】
ステップ10023では、スロットル開度変位チェックを行う。次の式が満足されたなら、ステップ1024に進み、さもなければ、ステップ1032に進み処理をリセットする。
【0030】
【数2】
TH0−TH10≧10mV (数2)
但し、TH0:最新スロットル開度(5mV)、TH10:100ms前のスロットル開度(5mV)である。
【0031】
ステップ10024では、記憶領域データチェックを行う。後述の方法で計算される140ms前の気筒流入燃料量GFEM14の値が、0でないかをチェックし、0でなければ、ステップ1005に進み、さもなければ、ステップ1032に進み処理をリセットする。
【0032】
ステップ1004では、空気量上昇チェックを行う。QAP0−QAP10>−0.25(g/s)ならステップ10041に移る。さもなければ、ステップ1032に進む。但し、QAP0:最新の空気量推定値(g/s)、QAP10:100ms前の空気量推定値(g/s)である。ステップ10041では、ステップ10024と同様、140ms前の気筒流入燃料量GFEM14の値が、0でないかをチェックし、0でなければ、ステップ1005に進み、さもなければ、ステップ1032に進み処理をリセットする。
【0033】
ステップ1005では、RAMの所定領域に記憶されている回転数、燃料噴射量、空燃比、スロットル開度のデータシフト、及び、最新値取り込みを行う。図5b)にそのアドレスを示す。気筒流入空気量のデータ移動、最新値取り込みを行ったのと同様の次の処理を行う。
【0034】
回転数を記憶する各アドレスに記憶されたデータの移動は次のように行う。所定アドレス(M1からM1+40)に、最新時刻から200ms前までの時系列データが、10msおきに、21個記憶されている。図5b)で、Ni(i=0から20)は、i×10ms時刻前の回転数検出値データを示しており、対応するアドレスにそのデータが格納されている。まず、190ms前の回転数N19を記憶するアドレス(M1+38)のデータを、200ms前の回転数N20を記憶するアドレス(M1+40)にコピーする。さらに、180ms前の回転数N18を記憶するアドレス(M1+36)のデータを、190ms前の回転数N19を記憶するアドレス(M1+38)にコピーする。この操作を、最新時刻の回転数N0を記憶するアドレス(M1)のデータを、10ms前の回転数N1を記憶するアドレス(M1+2)にコピーするまで繰り返す。
【0035】
最後に、最新の回転数検出値N0を、最新の回転数検出値を記憶するアドレス(M1)にコピーする。
【0036】
以上は、回転数の場合であるが、燃料噴射量、空燃比、スロットル開度に関しても同様の処理を行う。なお、燃料噴射量GFiに関しては、現時刻から300ms前までの31個のデータ、計測空燃比AFに関しては、現時刻から40ms前までの5個のデータ、スロットル開度に関しては、現時刻から100ms前までの11個のデータを記憶、更新する。なお、GFi、Ni、AFi、THiは、i×10ms前のデータを表す。この処理は、最新から所定時刻前までの気筒流入空気量、燃料噴射量、計測空燃比、スロットル開度のデータを予め定められたRAMの所定アドレスに記憶する処理を意味するものである。
【0037】
また、燃料噴射量の最新値GFCALの演算は、次式に基づいて行う。
【0038】
【数3】
ここに、KT1:定数、Ti:後述の方法で計算される実行噴射パルス幅(μs)、TS:無効噴射時間(μs)、TDATAF:燃料噴射REF間時間(エンジンが半回転する時間)(μs)、KLMTM:学習補正係数、KMR:混合比補正係数である。
【0039】
混合比補正係数、及び、学習補正係数の計算方法について説明する。
【0040】
空燃比制御の活用されるインジェクタや空気量センサは、様々な運転領域で高精度に動作するとは限らない。例えば、ある運転領域で、空気量センサによる計測空気量は、数%の誤算を持つかもしれない。また、インジェクタに関しても、ある噴射量指令値(目標値)に対して実際に噴射される燃料量は、数%の誤差を持つ可能性がある。初期のインジェクタや空気量センサの誤差を補正するために混合比補正係数が設けられている。混合比補正係数は、図8に示すように、空気量QAと空気量QAを回転数Nで割って得られる負荷L(=QA/N)の2次元テーブルを検索して求められる。テーブルデータには、予め、エンジン試験を行ない、様々な運転領域で、目標空燃比が実現されるような値が格納されている。
【0041】
次に、学習補正係数の計算方法について説明する。
【0042】
インジェクタや空気量センサの初期誤差の影響は、混合比補正を設けることで対処できる。しかしながら、これらセンサやアクチュエータの経時変化までは補償できない。学習補正係数KLNは、インジェクタや空気量センサの経時変化による誤差を補償するためのものである。混合比補正係数と同様に、図11に示す空気量QAと負荷L(=QA/N)の2次元テーブルを検索してその値KLNが求められる。
【0043】
テーブルデータは、時々刻々書き換えらている。次に、このテーブルデータの設定方法について説明する。
【0044】
このテーブルデータ設定には、空燃比フィードバック制御の補正係数が用いられる。空燃比フィードバック制御とは、計測空燃比が目標空燃比に一致するよう燃料噴射時間を補正するもので、その補正係数γは、例えば、PI制御則により次のように求められる。
【0045】
【数4】
e=AF0−AFT (数4)
【0046】
【数5】
γ=(Kp+Ki/S)e (数5)
ここに、AF0:計測空燃比、AFT:目標空燃比、e:空燃比誤差、Kp:比例ゲイン、Ki:積分ゲイン、S:ラプラス演算子、γ:フィードバック補正係数である。
【0047】
この補正係数を用いて、燃料噴射時間Tiが次のように演算される。
【0048】
【数6】
Ti=KT2・GF・TDATAF・γ・(1+KMR)・(1+KLN)+TS (数6)
ここに、KT2:定数、Ti:実行噴射パルス幅(μs)、TS:無効噴射時間(μs)、TDATAF:燃料噴射REF間時間(エンジンが半回転する時間)(μs)、KLN:学習補正係数、KMR:混合比補正係数、γ:フィードバック補正係数、GF:燃料噴射量計算値である。GFの計算方法については、後述する。
【0049】
学習補正係数KLNの初期値は0である。定常状態で、インジェクタや空気量センサの特性の経時変化がない場合は、フィードバック補正係数は1.0近傍の値を示す。これに対して経時劣化が生じた場合、1.0と異なる値を示すことになる。このずれを、ずれが生じた運転領域と対にして図11の学習テーブルに記憶し、テーブル検索により学習係数KLNを算出し、数6のTi演算に活用する。これにより、特性の経時変化が存在する場合でも目標空燃比を実現する適切な燃料噴射量を決定できる。
【0050】
以上述べた学習補正係数のテーブルデータを算出するプログラムのフローチャートを、図9に示す。この処理は、所定の周期で実行される。ステップ901では、計測空気量QAと負荷(QA/N)が一定の定常運転状態にあるかどうかを判定する。定常状態にあれば次のステップに進み、さもなければ処理を終了する。ステップ902では、現在の運転領域が、図10のどの学習領域にあるかを判定する。図10では、空気量、負荷とも6分割された、36の学習運転領域が設定されている。ステップ903では、最新のフィードバック補正係数γから1を引いた値(γ−1)の値を計算し、そのデータを図11のテーブルに書き込むが、データを書き込むテーブル内の運転領域は、ステップ902で判定された運転領域に等しくする。以上が学習補正係数を格納したテーブルのデータを書き換える処理の内容である。
【0051】
以上で図2のステップ1005に関連する処理の説明を終わる。
【0052】
次に、ステップ1006では、センサの応答遅れを補償した空燃比を計算し、RAMの所定領域に記憶する。RAMに記憶された最新の空燃比計測値AF0と、過去にこのステップで計算し、RAMの所定領域(図5に示す以外の領域)に記憶している最新、10ms前、20ms前のセンサの応答遅れを補償した空燃比AFR0、AFR1、AFR2から次の式に従って、現時刻のセンサ応答遅れを補償した空燃比AFRを計算する。
【0053】
【数7】
ここに、ai,bi(i=0,1,2,3)は定数である。
【0054】
さらに、AFR1のデータを、20ms前の空燃比を記憶するアドレスにコピーし、AFR0のデータを、10ms前の空燃比を記憶するアドレスにコピーし、最後に、算出されたAFRのデータを最新の空燃比を記憶するアドレスにコピーする。
【0055】
ステップ1007では、センサの応答遅れを補償した空燃比に含まれるノイズを除去する。ノイズ除去はローパスフィルタを活用し、最新、10ms前、20ms前のセンサ応答遅れを補償した空燃比AFR0、AFR1、AFR2と、過去にこのステップで計算し、RAMの所定領域に記憶している最新、10ms前、20ms前のノイズ除去を施した空燃比AFN0、AFN1、AFN2から次式に従って、ノイズを除去した現時刻の空燃比AFNを計算する。
【0056】
【数8】
ここに、ci,diは定数である。
【0057】
さらに、AFN1のデータを、20ms前の空燃比を記憶するアドレスにコピーし、AFN0のデータを、10ms前の空燃比を記憶するアドレスにコピーし、最後に、算出されたAFNのデータを最新の空燃比を記憶するアドレスにコピーする。
【0058】
ステップ1008では、300ms前の燃料噴射量計算値GF30の値が0でないかどうかで、図5のRAM領域がすべて埋まっているかどうかを判定する。0でなければ、次の処理に、さもなければ処理を終了する。
【0059】
本プログラムでは、エンジンの行程と排気管内での流動に起因する遅れ(空燃比の検出遅れ時間:無駄時間)の最新値idと10ms前の値idoldをRAMの所定領域に記憶している。ステップ1009では、最新値のデータを読み出し、これを10ms前のデータを記憶するアドレスにロードする。
【0060】
ステップ1011では、現在の空燃比検出遅れ時間idを次式に基づいて計算し、RAMの所定領域に記憶する。
【0061】
【数9】
id=SEISU(12000/N0) (数9)
ここに、N0:最新の回転数検出値、SEISU:引数の整数値を出力する関数。
【0062】
ステップ10111では、idoldの値が0の時、idの値を、idoldに代入する。
【0063】
ステップ1012では、RAMの所定領域に記憶している最新の空燃比検出遅れ時間idと10ms前の空燃比検出遅れ時間idoldを比較する。idの方が大きければステップ1013に進み、さもなければステップ1014に進む。加速時では、回転数が上昇するため、一般的にはidのほうが大きくなることはない。idの方が大きい場合、ノイズの影響であり、この影響を除去するため次のステップ1013で、idにidoldを代入する。すなわち、最新の空燃比検出遅れ時間のデータを記憶するアドレスに、10ms前の空燃比検出遅れ時間のデータをロードする。
【0064】
ステップ1015では、idとidoldの値を比較し、id=idoldならステップ1016に、id=idold−1ならステップ1017に、id<idold−1ならステップ1032に進む。
【0065】
RAMの所定領域に、検出しうる最新の気筒流入燃料量GFEM0から、その140ms前までのデータが10msおきに15個記憶されている。以下、GFEMi(i=0から14)をi×10ms前の気筒流入燃料量を記憶するアドレスに記憶されたデータとする。
【0066】
ステップ1016では、まず、130ms前のデータGFEM13を読み出し、これを、140ms前のデータを記憶するアドレスにロードする。さらに、120ms前のデータGFEM12を読み出し、130ms前のデータを記憶するアドレスにロードする。この処理を、最新のデータGFEM0を読み出し、10ms前のデータを記憶するアドレスにロードするまで繰り返す。最後に、次式で計算したGFEMを、最新のデータを記憶するアドレスに記憶する。
【0067】
【数10】
GFEM=QAPID/AFN0 (数10)
ここに、QAPID:id×10時刻前の気筒流入空気量推定値、AFN0:最新のノイズ除去空燃比である。
【0068】
ステップ1017では、RAMの所定領域に記憶されている上述のデータを次のように操作する。 まず、120ms前のデータGFEM12を読み出し、これを、140ms前のデータを記憶するアドレスにロードする。次に、110ms前のデータGFEM11を読み出し、130ms前のデータを記憶するアドレスにロードする。この処理を、最新のデータGFEM0を、20ms前のデータを記憶するアドレスにロードするまで繰り返す。次に、0.5×(GFEM0+GFEM)を計算し、計算された値を、10ms前のデータを記憶するアドレスにロードする。但し、GFEMは数10で計算される値である。 最後に、数10に基づいて計算したGFEMを、最新のデータを記憶するアドレスにロードし、処理を終了する。空燃比の検出遅れ時間idが変化するタイミングでは、気筒流入燃料量の計算値が一時的に欠損するため、ステップ1017では、それを補間計算で補う処理を行っている。
【0069】
ステップ1018では、加速中かどうかを示す加速フラグAFLGがON(値が1)かどうかを判定する。ONの場合は加速中であり、この場合は、ステップ1023に進み、さもなければステップ1019に進む。
【0070】
ステップ1019では、燃料噴射量、気筒流入燃料量の平均値を次式に基づいて計算し、RAMの所定領域に記憶する。
【0071】
【数11】
GFBAR=(GF0+GF2+GF4+GF6+GF8+GF10+GF12+GF14)/8 (数11)
【0072】
【数12】
ここに、GFBAR:燃料噴射量平均値、GFi:i×10ms前の燃料噴射量、
GFEBAR:気筒流入燃料量平均値、GFEMi:i×10ms前の気筒流入燃料量である。
【0073】
ステップ1020では、加速開始かどうかを判定する。加速開始は、次式により判定する。
【0074】
【数13】
TH0―TH10>LEVEL (数13)
THi:i×10ms前のスロットル開度、LEVEL:定数
数13が成立し、加速開始と判定された場合、ステップ10201に進み、さもなければ処理を終了する。
【0075】
ステップ10201では、記憶領域データチェックを行なう。ここでは、GFEM14の値が、0でないかをチェックし、0でなければ、ステップ10202に進み、さもなければ、ステップ1032に進み処理をリセットする。
【0076】
但し、GFEM14は、140ms前の気筒流入燃料量計算値である。
【0077】
ステップ10202では、空気量の一定チェックを行なう。気筒流入空気量推定値QAPi(i=8,14,18,20,24、30)が次の条件式を満たすかどうかを判定する。
【0078】
【数14】
|QAP8−QAP18|<0.35(g/s) (数14)
【0079】
【数15】
|QAP14−QAP24|<0.35(g/s) (数15)
【0080】
【数16】
|QAP20−QAP30|<0.35(g/s) (数16)
ここに、QAP8:80ms前の気筒流入空気量推定値(g/s)、QAP14:140ms前の気筒流入空気量推定値(g/s)、QAP18:180ms前の気筒流入空気量推定値(g/s)、QAP20:200ms前の気筒流入空気量推定値(g/s)、QAP24:240ms前の気筒流入空気量推定値(g/s)、QAP30:300ms前の気筒流入空気量推定値(g/s)である。
【0081】
上の全ての条件式が満たされたなら、ステップ10203、さもなければ、ステップ1032に進む。
【0082】
ステップ10203では、GFとGFEの平均値の偏差の判定を行なう。
【0083】
次の条件式が満足されたならステップ1021に進み、さもなければ、ステッ1032に進み、処理をリセットする。
【0084】
【数17】
|GFBAR−GFEBAR|<0.025(g/s) (数17)
ここに、GFBAR:ステップ1019で計算されたGFの平均値(g/s)、GFEBAR:ステップ1019で計算されたGFEの平均値(g/s)である。
【0085】
ステップ1021では、加速フラグAFLGをON(値を1)にする。なお、このフラグの初期値はOFF(値は0)である。
【0086】
ステップ10211では、燃料性状の判別指標であるJを初期化(0を代入)する。
【0087】
ステップ1022では、加速開始時の回転数NS、気筒流入空気量QAPS、スロットル開度THSを記憶する。
【0088】
ステップ1023では、タイムカウンタCNTを1だけアップする。なお、CNTの初期値は0である。
【0089】
ステップ10231では、非同期噴射が実行されたかどうかを判定し、実行されたならステップ1032に進み処理をリセット、さもなければ、ステップ1024に進む。
【0090】
ステップ1024では、回転数、空気量、燃料噴射量のレベル判定を行なう。回転数、気筒流入空気量、燃料噴射量計算値が以下の全ての条件を満たす時、ステップ1025に進み、条件が満たされない時、ステップ1032に進み判別処理をリセットする。
【0091】
【数18】
N0−N4>−25(rpm) (数18)
【0092】
【数19】
Qap0−Qap4>−0.5(g/s) (数19)
【0093】
【数20】
GF0−GF10>−0.035(g/s) (数20)
ここで、N0:最新の回転数検出値(rpm)、N4:40ms前の回転数検出値(rpm)、QAP0:最新の気筒流入空気量推定値(g/s)、QAP4:40ms前の気筒流入空気量推定値(g/s)、GF0:最新の燃料噴射量(g/s)、GF10:100ms前の燃料噴射量(g/s)である。
【0094】
ステップ1025では、最新回転数N0>2000(rpm)かどうかを判定する。この条件が満たされたなら、アイドルから所定の加速が行われ、性状判別が可能な十分なデータが採取できたとして、ステップ10290以降の燃料性状判別処理に移る。さもなければステップ1026以降の処理に移る。
【0095】
ステップ1026では、レベル判定フラグLFLGがON(値が1)かどうかを判定する。レベル判定フラグとは、加速開始後に、基準モデルパラメータが計算された後、ON(値が1にセット)されるフラグである。ONならステップ1036の処理に移る。さもなければ、ステップ1027以降の処理に移る。
【0096】
ステップ1027では、タイムカウンタCNT≧20より、0.2秒経過を判定する。0.2秒経過ならステップ1028以降の処理に移り、さもなければ処理を終了する。
【0097】
ステップ1028では、水温が60℃未満かどうかを判定し、そうならば次の処理に移り、さもなければ、判別処理をリセットするステップ1032以降の処理に移る。続く、ステップ1033では、燃料噴射量GFと気筒流入燃料量GFEの関係式
【0098】
【数21】
【0099】
において、水温Twの関数であるモデルパラメータb0(Tw)、b1(Tw)、a0(Tw)を、最新の水温Twをパラメータにして、図6の1次元テーブルを参照して求める。なお、q−1は、時間遅れ素子。
【0100】
ここで、テーブルデータは、予め、エンジン試験で採取したデータを解析して求める。例えば、水温20℃のデータは、水温を20℃の状態でエンジンをアイドル運転する。なお、燃料は、重質と軽質の中間性状の燃料を用いてエンジンを運転する。このときエンジンにかかる負荷はROAD/LOADとする。アイドル状態からスロットルを踏み込み加速する。図7に示すように、このときのa)回転数、b)気筒流入空気量、c)空燃比、d)燃料噴射量の応答を検出する。数10を活用すればe)気筒流入燃料量の応答も図7のように計算できる。得られた燃料噴射量の応答を入力、気筒流入燃料量の応答を出力として最小二乗法により、数21のモデルパラメータa0、b0、b1を計算できる。得られたデータを図6の水温20℃の領域に格納する。以上がテーブルデータの求め方である。
【0101】
次に、ステップ1034では、レベル判定フラグLFLGをON(値を1)にする。このフラグの初期値は0である。
【0102】
ステップ1036では、燃料噴射量のトレンドを次の式により除去し、記憶する。
【0103】
【数22】
GFT0=GFID−GFBAR (数22)
【0104】
【数23】
GFT1=GFID0−GFBAR (数23)
【0105】
【数24】
GFT2=GFID1−GFBAR (数24)
ここに、GFID:id×10ms前の燃料噴射量、GFID0:(id+1)×10ms前の燃料噴射量、GFID1:(id+2)×10ms前の燃料噴射量、GFBAR:燃料噴射量平均値、GFT0:id×10ms前のトレンド除去した燃料噴射量、GFT1:idold×10ms前のトレンド除去した燃料噴射量である。
【0106】
ステップ1037では、気筒流入燃料量のトレンドを次式により除去し、記憶する。
【0107】
【数25】
GFET=GFEM0−GFEBAR (数25)
GFEM0:検出しうる最新(id×10ms前)の気筒流入燃料量、GFEBAR:気筒流入燃料量平均値、GFET:トレンド除去した気筒流入燃料量である。トレンド除去した気筒流入燃料量は、検出しうる最新の値からその40ms前の値まで10msごとに5個記憶されている。ステップ1037では、30ms前のデータGFET3を呼び出し、40ms前のデータを記憶するアドレスにロードし、20ms前のデータGFET2を呼び出し、30ms前のデータを記憶するアドレスにロードし、10ms前のデータGFET1を呼び出し、20ms前のデータを記憶するアドレスにロードし、最新のデータGFET0を呼び出し、10ms前のデータを記憶するアドレスにロードする。最後に、GFETを、最新のデータを記憶するアドレスにロードする。
【0108】
ステップ1038では、最新の空燃比検出遅れ時間idと10ms前の空燃比検出遅れ時間idoldを比較する。両者が等しければステップ1040に進み、さもなければステップ1043に進む。
【0109】
ステップ1040では、トレンド除去した燃料噴射量GFT0,GFT1と過去にこのステップで計算し記憶している基準気筒流入燃料量GFEB、及び、ステップ1033で求めたモデルパラメータa1、b0、b1から最新の基準気筒流入燃料量GFEBNを次式で計算し、記憶する。
【0110】
【数26】
記憶されたGFEBNの値は、次回のこのステップで、GFEBの値として、新たなGFEBNの計算に活用される。
【0111】
ステップ1041では、燃料性状判別のための指標Jを次式で更新する。
【0112】
【数27】
J←J+(GFET0−GFEBN) (数27)
ここに、GFET0:空燃比に基づいて計算されたトレンド除去した気筒流入燃料量、GFEBN:燃料噴射量と数21(あるいは数26)のモデルベースに計算された基準気筒流入燃料量である。
【0113】
10msごとにJの更新を行うため、Jの値の正、負により、空燃比計測値から検出される気筒流入燃料量の応答と、燃料噴射量と数21のモデルにより計算される基準気筒流入燃料量の応答のうち、どちらの応答が速いかを判別できる。例えば、モデルによる基準応答は重質と軽質の中間の性状を表すため、検出気筒流入燃料量の応答の方が速ければ、現在使用中の燃料は軽質、検出気筒流入燃料量の応答の方が遅ければ、現在使用中の燃料は重質と判定できる。この判定処理は、十分なデータが採取された後、ステップ1030で行う。
【0114】
ステップ1043では、トレンド除去した燃料噴射量GFT0,GFT1、GFT2と過去にステップ1040で計算し記憶している基準気筒流入燃料量GFEB、及び、ステップ1033で求めたモデルパラメータからa1、b0、b1から最新の基準気筒流入燃料量GFEBNを次式で計算し、記憶する。
【0115】
【数28】
得られたGFEBNは、(id−1)×10ms前の基準気筒流入燃料量に相当する。
【0116】
さらに、GFEBNから次の式によりid×10ms前の基準気筒流入燃料量GFEBNNを計算する。
【0117】
【数29】
ステップ1044では、燃料性状判別のための指標Jを次式で更新する。
【0118】
【数30】
最後に、性状判定用のデータが十分そろった後の処理である、ステップ10290、1029、1030の処理について説明する。
【0119】
ステップ10290では、加速開始後0.5秒経過したかをチェックする。タイムカウンタCNT が50を越えたかどうかをチェックし、50を越えたならステップ1029に進み、さもなければ、ステップ1032に進み処理をリセットする。
【0120】
ステップ1029では、気筒流入空気量が次の条件を満足するかどうかを判定する。
【0121】
【数31】
ここに、QMIN,QMAX:所定の定数、QAP0:最新気筒流入空気量である。
【0122】
上記条件を満たせたステップ1030に進み、さもなければ、ステップ1032に進み性状判別処理をリセットする。
【0123】
ステップ1030では、次の条件式により燃料性状を判別する。
【0124】
【数32】
【0125】
【数33】
JMIN、JMAXは定数で、例えば、両定数とも0に設定する。
【0126】
以上で性状判別処理方法の実施例のすべての処理の説明を終了する。
【0127】
上記実施例がアイドルからの加速を想定したが、定常走行からの加速や減速でも同様の方法で燃料性状を判別できる。
【0128】
次に、燃料性状判別結果の利用方法について図12から図14に基づいて説明する。
【0129】
図12は、目標の空燃比を実現する燃料噴射パルス幅を計算するプログラムのフローチャートであり、所定のクランク角に来たときに実行されるようになっている。ステップ4001では、図13のテーブルを参照して噴射燃料の付着率X、液膜の蒸発時定数τを計算する。付着率に関しては、回転数Nと空気量Qaを回転数で割って選られる負荷Qa/Nをパラメータに2次元テーブルを検索してベース付着率Xbを算出する。さらに、水温をパラメータに1次元テーブルを検索して水温補正係数kxを計算する。補正係数算出のため重質用と軽質用の補正テーブルが設けられており、前述のプログラムによる判定結果にしたがって、どちらのテーブル検索値を利用するかを決定する。重質と判定されていれば、重質用テーブルを利用し、軽質と判定されていれば軽質用テーブルを利用する。基準付着率Xbに水温補正係数kxを乗じて付着率Xを計算する。図13に示すように蒸発時定数の計算も同様に行うことができる。なお、1次元テーブルのデータは、図14に示すように、kx、kτとも、重質燃料ほど値が大きくなる傾向にある。
【0130】
ステップ4002では、選られた付着率X、蒸発時定数τ、気筒流入空気量推定値Qap、前のサイクルで後述のステップ4004で計算され記憶されている液膜量Mfから次式にしたがって燃料噴射量GF(g/s)を計算する。
【0131】
【数34】
【0132】
ここに、AFT:目標空燃比である。
【0133】
ステップ4003では、数6により燃料噴射パルス幅Tiを計算する。
【0134】
最後に、ステップ4004では、次式により液膜量推定値を更新して記憶する。
【0135】
【数35】
【0136】
ここに、i:時刻(1時刻はΔtの時間)、Δt:時間刻み、X:付着率、τ:蒸発時手数、Gf:燃料噴射量である。
【0137】
以上で処理を終了し、次回の起動要求があるまで待機する。以上のように燃料性状判別結果に応じて、適切な燃料制御パラメータを設定できるので、燃料性状によらず常に空燃比制御精度を良好な状態に維持できる。なお、燃料性状が変化したと判定された時、図13の水温補正テーブルをいきなり切り替えると、算出される付着率、蒸発時定数が不連続になり、制御性能が劣化する場合がある。したがって、性状変化直後は、付着率と蒸発時定数を、古い性状相当値から新しい性状相当値に徐々に切り替えるようにして、制御性能を確保するようにしても良い。
【0138】
【発明の効果】
以上のように、本発明では、燃料性状を精度良く判別できる。また、性状変化に適応して空燃比制御精度を維持できる。
【図面の簡単な説明】
【図1】制御系全体構成図である。
【図2】本発明の第一実施例の燃料性状を判別するプログラムのフローチャートである。
【図3】本発明の第一実施例の燃料性状を判別するプログラムのフローチャートである。
【図4】本発明の第一実施例の燃料性状を判別するプログラムのフローチャートである。
【図5】変数を記憶するRAM領域である。
【図6】第一実施例のモデルパラメータを格納したテーブルである。
【図7】第一実施例におけるモデル構築のための時系列データである。
【図8】混合比補正係数を格納した2次元テーブルである。
【図9】学習制御プログラムのフローチャートである。
【図10】学習領域を示す図である。
【図11】学習補正係数を格納した2次元テーブルである。
【図12】燃料噴射量を計算するプログラムのフローチャートである。
【図13】付着率、蒸発時定数を格納したテーブルである。
【図14】付着率、蒸発時定数の水温補正係数の特性である。
【図15】燃料性状判別処理のブロック図である。
【符号の説明】
10:制御ユニット、20:CPU、30:RAM、40:ROM、50:タイマ、60:LSI、70:バス、80:空気量センサ、90:スロットルセンサ、100:水温センサ、110:クランク角センサ、120:空燃比センサ
Claims (7)
- 吸入空気量に基づいて燃料噴射量を制御するエンジン制御方法において、
(1)空気量、回転数、排気空燃比を計測する処理、
(2)前記(1)の処理の計測値に基づいて、エンジンが所定の運転状態にあるかどうかを判別する処理、
(3)エンジンが所定の運転状態にあると判定された時、前記計測値から第1の気筒流入燃料量を算出する処理、
(4)エンジンが所定の運転状態にあると判定された時、予め求めて記憶している前記所定の運転状態に対応する燃料輸送特性モデルと前記燃料噴射量から、第2の気筒流入燃料量を計算する処理、
(5)前記第1と第2の気筒流入燃料量から燃料性状を判別することを特徴とするエンジンの燃料性状判別方法。 - 請求項1記載のエンジンの燃料性状判別方法において、空燃比を計測するセンサが活性化しているかどうか、あるいは、空燃比センサに基づく空燃比のフィードバック制御が実施されているかどうかを判定し、センサが活性化しているかフィードバック制御が実施されている時のみ、前記(1)から(5)の燃料性状判別処理を行なうことを特徴とするエンジンの燃料性状判別方法。
- 請求項1記載のエンジンの燃料性状判別方法において、非同期噴射が実行されたかどうかを判定し、非同期噴射が実行されたなら前記(1)から(5)の燃料性状判別処理を中止することを特徴とするエンジンの燃料性状判別方法。
- 請求項1記載のエンジンの燃料性状判別方法において、回転数偏差、空気量偏差、燃料噴射量偏差の少なくとも一つ、あるいは、水温が所定の条件を満足した時、前記(1)から(5)の燃料性状判別処理を中止することを特徴とするエンジンの燃料性状判別方法。
- 請求項1記載のエンジンの燃料性状判別方法の前記(4)の処理において、
(a)空燃比の計測値を利用して空燃比のフィードバック制御を実施し、計算燃料噴射量を補正して実行燃料噴射量を求めることによって補正係数を計算し、
(b)前記補正係数を利用して要求燃料噴射量と計算燃料噴射量のずれを学習し、そのずれを学習補正係数としてエンジン運転状態と対応させて記憶し、
(c)上記運転状態に対応して記憶された学習補正係数に基づいて、前記第2の気筒流入燃料量を計算することを特徴とするエンジンの燃料噴射制御方法。 - エンジンの燃料噴射量を決定するエンジン制御方法において、
(1)エンジンの各種計測値に基づいて予め構築したテーブルを少なくとも2つ用意し、
(2)少なくとも空気量、回転数、排気空燃比を計測し、
(3)前記(2)の計測値に基づいて、エンジンが所定の運転状態にあるかどうかを判別し、
(4)エンジンが所定の運転状態にあると判定された時、前記計測値から第1の気筒流入燃料量を算出し、
(5)エンジンが所定の運転状態にあると判定された時、予め求めて記憶している前記所定の運転状態に対応する燃料輸送特性モデルと前記燃料噴射量から、第2の気筒流入燃料量を計算し、
(6)前記第1と第2の気筒流入燃料量に基づいて上記テーブルの一つを選択して、前記選択されたテーブルを参照して燃料噴射量を決定することを特徴とするエンジンの燃料噴射制御方法。 - エンジン運転状態に応じて所定の制御パラメータを計算し、前記計算値に基づいて燃料噴射量を制御するエンジン制御方法において、
(1)排気空燃比、空気量、回転数の計測値から第1の気筒流入燃料量を計算し、
(2)吸気管内での燃料輸送特性を表す所定の数学モデルと燃料噴射量から第2の気筒流入燃料量を計算し、
(3)前記第1と第2の気筒流入燃料量の応答を比較し、前記比較結果に基づいて前記制御パラメータを計算し、燃料噴射量を制御することを特徴とするエンジンの燃料噴射制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000309298A JP3823711B2 (ja) | 1999-11-05 | 2000-10-04 | エンジンの燃料性状判別方法及び燃料噴射制御方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11-314749 | 1999-11-05 | ||
JP31474999 | 1999-11-05 | ||
JP2000309298A JP3823711B2 (ja) | 1999-11-05 | 2000-10-04 | エンジンの燃料性状判別方法及び燃料噴射制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001193544A JP2001193544A (ja) | 2001-07-17 |
JP3823711B2 true JP3823711B2 (ja) | 2006-09-20 |
Family
ID=26568059
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000309298A Expired - Fee Related JP3823711B2 (ja) | 1999-11-05 | 2000-10-04 | エンジンの燃料性状判別方法及び燃料噴射制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3823711B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006027853A1 (ja) * | 2004-09-09 | 2006-03-16 | Hitachi, Ltd. | エンジンの制御装置 |
JP4798056B2 (ja) * | 2007-05-09 | 2011-10-19 | トヨタ自動車株式会社 | 内燃機関の燃料性状判定装置 |
WO2012131900A1 (ja) * | 2011-03-29 | 2012-10-04 | トヨタ自動車 株式会社 | セタン価推定装置 |
-
2000
- 2000-10-04 JP JP2000309298A patent/JP3823711B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001193544A (ja) | 2001-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6109244A (en) | Fuel injection control apparatus for an internal combustion engine | |
JP4487745B2 (ja) | センサ応答特性検出装置 | |
JP3233526B2 (ja) | 適応制御を用いたフィードバック制御装置 | |
JPH0988685A (ja) | 内燃機関の空燃比制御装置 | |
JP2005188503A (ja) | 内燃機関の気筒別空燃比制御装置 | |
JPH10122017A (ja) | エンジン制御方式 | |
JP2004183616A (ja) | 制御装置 | |
JP2689364B2 (ja) | 内燃機関の燃料噴射量制御装置 | |
US5134981A (en) | Fuel injection control method in an engine | |
JP2001090584A (ja) | 内燃機関の空燃比制御装置 | |
JP4174821B2 (ja) | 車両用制御装置 | |
JP3823711B2 (ja) | エンジンの燃料性状判別方法及び燃料噴射制御方法 | |
JP4600699B2 (ja) | 内燃機関の気筒別空燃比制御装置 | |
JPH11223145A (ja) | 空燃比制御装置 | |
JP4492802B2 (ja) | 空燃比制御装置 | |
JP2754744B2 (ja) | 内燃機関の燃料噴射量制御装置 | |
JP2754568B2 (ja) | 内燃機関の燃料噴射量制御装置 | |
JP2001504606A (ja) | 非線形特性を有する1次のダイナミックシステムのモデル化および制御方法 | |
JPH11218043A (ja) | 内燃機関の燃料噴射量制御装置 | |
JP3602575B2 (ja) | 内燃機関の気筒別空燃比推定装置 | |
JP2606226B2 (ja) | 内燃機関の燃料噴射量制御装置 | |
JP2701296B2 (ja) | 内燃機関の燃料噴射量制御装置 | |
JP2615773B2 (ja) | 内燃機関の燃料噴射量制御装置 | |
JP2705113B2 (ja) | 内燃機関の燃料噴射量制御装置 | |
JP3240780B2 (ja) | 内燃機関の燃料供給量制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050930 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20060418 |
|
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: 20060606 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060619 |
|
LAPS | Cancellation because of no payment of annual fees |