(57)【特許請求の範囲】
【請求項１】
吸入空気量に基づいて燃料噴射量を制御するエンジン制御方法において、
（１）空気量、回転数、排気空燃比を計測する処理、
（２）前記（１）の処理の計測値に基づいて、エンジンが所定の運転状態にあるかどうかを判別する処理、
（３）エンジンが所定の運転状態にあると判定された時、前記計測値から第１の気筒流入燃料量を算出する処理、
（４）エンジンが所定の運転状態にあると判定された時、予め求めて記憶している前記所定の運転状態に対応する燃料輸送特性モデルと前記燃料噴射量から、第２の気筒流入燃料量を計算する処理、
（５）前記第１と第２の気筒流入燃料量から燃料性状を判別することを特徴とするエンジンの燃料性状判別方法。
【請求項２】
請求項１記載のエンジンの燃料性状判別方法において、空燃比を計測するセンサが活性化しているかどうか、あるいは、空燃比センサに基づく空燃比のフィードバック制御が実施されているかどうかを判定し、センサが活性化しているかフィードバック制御が実施されている時のみ、前記（１）から（５）の燃料性状判別処理を行なうことを特徴とするエンジンの燃料性状判別方法。
【請求項３】
請求項１記載のエンジンの燃料性状判別方法において、非同期噴射が実行されたかどうかを判定し、非同期噴射が実行されたなら前記（１）から（５）の燃料性状判別処理を中止することを特徴とするエンジンの燃料性状判別方法。
【請求項４】
請求項１記載のエンジンの燃料性状判別方法において、回転数偏差、空気量偏差、燃料噴射量偏差の少なくとも一つ、あるいは、水温が所定の条件を満足した時、前記（１）から（５）の燃料性状判別処理を中止することを特徴とするエンジンの燃料性状判別方法。
【請求項５】
請求項1記載のエンジンの燃料性状判別方法の前記（４）の処理において、
（ａ）空燃比の計測値を利用して空燃比のフィードバック制御を実施し、計算燃料噴射量を補正して実行燃料噴射量を求めることによって補正係数を計算し、
（ｂ）前記補正係数を利用して要求燃料噴射量と計算燃料噴射量のずれを学習し、そのずれを学習補正係数としてエンジン運転状態と対応させて記憶し、
（ｃ）上記運転状態に対応して記憶された学習補正係数に基づいて、前記第２の気筒流入燃料量を計算することを特徴とするエンジンの燃料噴射制御方法。
【請求項６】
エンジンの燃料噴射量を決定するエンジン制御方法において、
（１）エンジンの各種計測値に基づいて予め構築したテーブルを少なくとも２つ用意し、
（２）少なくとも空気量、回転数、排気空燃比を計測し、
（３）前記（２）の計測値に基づいて、エンジンが所定の運転状態にあるかどうかを判別し、
（４）エンジンが所定の運転状態にあると判定された時、前記計測値から第１の気筒流入燃料量を算出し、
（５）エンジンが所定の運転状態にあると判定された時、予め求めて記憶している前記所定の運転状態に対応する燃料輸送特性モデルと前記燃料噴射量から、第２の気筒流入燃料量を計算し、
（６）前記第１と第２の気筒流入燃料量に基づいて上記テーブルの一つを選択して、前記選択されたテーブルを参照して燃料噴射量を決定することを特徴とするエンジンの燃料噴射制御方法。
【請求項７】
エンジン運転状態に応じて所定の制御パラメータを計算し、前記計算値に基づいて燃料噴射量を制御するエンジン制御方法において、
（１）排気空燃比、空気量、回転数の計測値から第１の気筒流入燃料量を計算し、
（２）吸気管内での燃料輸送特性を表す所定の数学モデルと燃料噴射量から第２の気筒流入燃料量を計算し、
（３）前記第１と第２の気筒流入燃料量の応答を比較し、前記比較結果に基づいて前記制御パラメータを計算し、燃料噴射量を制御することを特徴とするエンジンの燃料噴射制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、エンジンの燃料性状判別方法に係り、特に、空燃比センサを活用して燃料応答に基づいて燃料性状の重質、軽質を判別するのに好適なエンジンの燃料性状判別方法に関する。また、本発明は、エンジンの燃料噴射制御方法に係り、特に、燃料性状変化に適応して空燃比制御精度を維持するのに好適なエンジンの燃料噴射制御方法に関する。
【０００２】
【従来の技術】
線形回帰モデルを活用してエンジンの燃料性状を検出する技術として、特開平１０−２５２５５０号公報記載の方法がある。この方法では、現在と過去の燃料噴射時間、水温、回転数、吸気管内絶対圧、現在と過去の当量比など、燃料性状による動特性を表現できるパラメータから多層ニューラルネットに基づいて燃料性状パラメータ（燃料の５０％分留温度）を計算している。
【０００３】
一方、特開平７−１１９５１５号公報には、制御則のパラメータを内燃機関の状態に応じて動的に修正して、燃料噴射量を適正な状態に保ち、空燃比制御精度を維持する方法が記載されている。上記従来技術では、いわゆる、逐次型の最小二乗法を活用して、内燃機関の運転状態に対応するパラメータをその都度、推定するものである。
【０００４】
【発明が解決しようとする課題】
上記第１の従来技術を活用して、燃料性状を検出することは可能であるが、多層ニューラルネットという、いわゆるブラックボックスモデルを活用して燃料性状検出を行う場合、検出精度を確保するためノードや層の数を数多く設けなければならず、オンボードで燃料性状を計算する負荷が非現実的に膨大になるという問題がある。また、ノードや層の数を抑制し、ネットを簡素化した場合は、計算負荷は低減できるが、検出精度が劣化するという問題がある。
【０００５】
また、第２の従来技術を活用すれば、燃料性状変化に適応して、制御パラメータを適正な方向に修正できるので、燃料性状が変わっても空燃比制御精度をある程度維持可能と考えられる。しかしながら、パラメータ推定に活用される最小二乗法は、推定パラメータが動かないことを前提にした理論であるため、エンジンのようなパラメータが動的に変化する対象では、パラメータの推定遅れが生じ、その都度適正なパラメータは推定されないという問題がある。これにより空燃比制御精度は劣化することになる。
【０００６】
本発明の第１の目的は、比較的低負荷で精度良く燃料性状が判別できるエンジンの燃料性状判別方法を提供することにある。
【０００７】
本発明の第２の目的は、燃料性状によらず空燃比制御精度を維持可能なエンジンの燃料噴射制御方法を提供することにある。
【０００８】
【課題を解決するための手段】
本発明では、上記目的を達成するため以下の方法を行う。
【０００９】
（方法１）
吸入空気量に基づいて燃料噴射量を制御するエンジンの燃料性状判別方法では、
（１）空気量、回転数、排気空燃比を計測し、
（２）エンジンが所定の運転状態にあるかどうかを判別し、
（３）エンジンが所定の運転状態にあると判定された時、上記計測値から第１の気筒流入燃料量を算出し、
（４）エンジンが所定の運転状態にあると判定された時、予め求めて記憶している上記所定の運転状態に対応する燃料輸送特性モデルと上記燃料噴射量から、第２の気筒流入燃料量を計算し、
（５）上記第１と第２の気筒流入燃料量から燃料性状を判別する。
【００１０】
本方法においては、燃料輸送特性を表す物理モデルである燃料輸送モデルを活用し、基準の燃料応答と実際の燃料応答を比較することで、燃料性状を判別するもので、物理モデルを活用することで、判別法を簡素にでき、かつ、高精度な判別が可能になる。
【００１１】
（方法２）
エンジン運転状態に応じて所定の制御パラメータを計算し、該計算値に基づいて燃料噴射量を制御するエンジンの燃料噴射方法では、
（１）排気空燃比、空気量、回転数の計測値から第１の気筒流入燃料量を計算し、
（２）吸気管内での燃料輸送特性を表す所定の数学モデルと燃料噴射量から第２の気筒流入燃料量を計算し、
（３）第１と第２の気筒流入燃料量の応答を比較し、この比較結果に基づいて上記制御パラメータを計算し、燃料噴射量を制御する。
【００１２】
本方法では、気筒流入燃料量の応答比較により、燃料性状のレベルが判定し、これにより適切な制御パラメータを計算し、燃料噴射制御ができるので、空燃比制御精度を、常に良好な状態に維持できる。
【００１３】
【発明の実施の形態】
本発明の実施例を図１から図１５に基づいて説明する。
【００１４】
図１は、本発明のエンジンの燃料性状判別方法、並びに、燃料噴射制御方法をデジタル式制御ユニットで実現する時の制御系の全体構成図である。制御ユニット１０は、ＣＰＵ２０、ＲＡＭ３０、ＲＯＭ４０、タイマ５０、Ｉ／Ｏ ＬＳＩ６０、それらを電気的に接続するバス７０を備えている。Ｉ／Ｏ ＬＳＩ６０には、空気量センサ８０、スロットル角センサ９０、水温センサ１００、回転数を検出するクランク角センサ１１０、排気管集合部に設置された空燃比をリニアに検出可能な空燃比センサ１２０からの信号が入力されるようになっている。また、Ｉ／Ｏ ＬＳＩ６０からは、各気筒に設けられた燃料噴射器への信号が出力されるようになっている。タイマ５０は、ＣＰＵ２０に対して一定周期で割り込み要求を発生し、ＣＰＵ２０はこれに応じてＲＯＭ４０に格納された所定のプログラムを実行するようになっている。
【００１５】
次に、図２から図７、図１５に基づいて本発明の燃料性状を判別する処理の内容について説明する。まず、図１５の制御ブロック図に基づいて燃料性状判別処理の概要について説明する。制御系では、水温などの現在の運転状態に対して、その運転状態に対応する燃料噴射量Ｇｆと気筒流入燃料量Ｇｆｅの２変数間の数学モデル２０１をデータベースから選択する。このモデルは、予め、重質と軽質の中間的な性状の燃料に対するＧｆとＧｆｅの関係を運転領域ごとに、実験に基づいてモデリングしたものである。
【００１６】
実走行における、単調増加するある燃料噴射量Ｇｆの応答に対して、この基準モデルを活用して、基準気筒流入燃料量Ｇｆｅｂの応答を計算する（２０１）。同時に、排気空燃比の計測値ＡＦと気筒流入空気量推定値Ｑａｐから実際の気筒流入燃料量の応答Ｇｆｅｍを計算する（２０３）。Ｇｆｅｍ，Ｇｆｅｂの２変数の差分（Ｇｆｅｍ−Ｇｆｅｂ）の時間積分Ｊが正か負のどちらの値を取るかで、どちらの応答が速いかを判別する（２０４）。もし、Ｊの値が正で、実際の気筒流入燃料量の応答の方が速ければ使用中の燃料を軽質、Ｊの値が負で、実際の気筒流入燃料量の応答が遅ければ重質と判別する。以上の判定が合理的なことは、燃料噴射から気筒流入までの燃料の応答遅れが、重質から軽質に向かうほど小さくなることから明らかである。すなわち、実燃料応答が、中間の燃料性状に対する燃料応答を規定する基準応答より速い場合は使用燃料の軽質、遅い場合は重質ということになる。以上が燃料性状判別処理の概要とその原理である。次に処理の詳細について説明する。
【００１７】
図２から図４は、燃料性状を判別するプログラムのフローチャートであり、１０ｍｓごとに実行されるようになっている。本実施例では、アイドルからの加速に限定し燃料性状を判別する処理を行う。
【００１８】
まず、ステップ８００では、 Ａ／Ｆセンサが活性化したかどうかを判定する。活性化していれば、ステップ９００に進み、さもなければ処理をリターンする。
【００１９】
次に、気筒流入空気量推定値のデータの移動、最新値の取り込みを行う。
【００２０】
図５に示すように、燃料性状判別に利用する、ａ）気筒流入空気量推定値ＱＡＰ、ｂ）回転数検出値Ｎ，ｃ）燃料噴射量計算値ＧＦ、ｄ）空燃比計算値ＡＦ、ｅ）スロットル開度の時系列データがＲＡＭの所定領域に記憶されている。ステップ９００では、気筒流入空気量推定値を記憶する各アドレスに記憶されたデータの移動を次のように行う。所定アドレス（Ｍ０からＭ０＋６０）に、最新時刻から３００ｍｓ前までの時系列データが、１０ｍｓおきに、３１個記憶されている。図５ａ）で、ＱＡＰｉ（ｉ＝０から３０）は、ｉ×１０ｍｓ時刻前の気筒流入空気量推定値データを示しており、対応するアドレスにそのデータが格納されている。まず、２９０ｍｓ前の空気量ＱＡＰ２９を記憶するアドレス（Ｍ０＋５８）のデータを、３００ｍｓ前の空気量ＱＡＰ３０を記憶するアドレス（Ｍ０＋６０）にコピーする。さらに、２８０ｍｓ前の空気量ＱＡＰ２８を記憶するアドレス（Ｍ０＋５６）のデータを、２９０ｍｓ前の空気量ＱＡＰ２９を記憶するアドレス（Ｍ０＋５８）にコピーする。この操作を、最新時刻の空気量ＱＡＰ０を記憶するアドレス（Ｍ０）のデータを、１０ｍｓ前の空気量ＱＡＰ１を記憶するアドレス（Ｍ０＋２）にコピーするまで繰り返す。
【００２１】
最後に、最新の空気量推定値ＱＡＰを、最新の気筒流入空気量推定値を記憶するアドレス（Ｍ０）にコピーする。
【００２２】
なお、気筒流入空気量の推定演算は、別のプログラムにより実行されている。具体的には、空気量センサによる計測値ＱＡをベースに次式により２ｍｓごとに演算される。
【００２３】
【数１】
0003823711.tif 000002
ここに、ＱＡＰ；現在の気筒流入空気量、ＱＡＰ（−１）：２ｍｓ前の気筒流入空気量、Ｔ：時定数（回転数の関数）、ＱＡ：最新空気量計測値である。
【００２４】
次に、ステップ９５０では、３００ｍｓ前の空気量推定値ＱＡＰ３０が０でないかどうかをチェックし、０でなければ、ステップ１０００に進み、さもなければ、処理をリターンする。
【００２５】
ステップ１０００では、水温Ｔｗが６０℃未満がどうかを判定する。６０℃未満ならステップ１００１の処理移り、さもなければ、ステップ１０３２に移り、判別処理をリセットする。
【００２６】
ステップ１００１では、アイドルスイッチがＯＮかどうかを判定する。ＯＮなら、ステップ１００２１へ、ＯＮでないなら、ステップ１００４に進む。
【００２７】
ステップ１００２１では、空気量下降チェックを行う。ＱＡＰ０−ＱＡＰ２０＜−０．２５（ｇ／ｓ）、あるいは、ＱＡＰ１０−ＱＡＰ３０＜−０．２５（ｇ／ｓ）ならステップ１０３２に移り処理をリセットする。さもなければ、ステップ１００２２に進む。但し、ＱＡＰ０：最新の空気量推定値（ｇ／ｓ）、ＱＡＰ１０：１００ｍｓ前の空気量推定値（ｇ／ｓ）、ＱＡＰ２０：２００ｍｓ前の空気量推定値（ｇ／ｓ）、ＱＡＰ３０：３００ｍｓ前の空気量推定値（ｇ／ｓ）である。
【００２８】
ステップ１００２２では、空気量上昇チェックを行う。ＱＡＰ０−ＱＡＰ２０＞０．２５（ｇ／ｓ）、あるいは、ＱＡＰ１０−ＱＡＰ３０＞０．２５（ｇ／ｓ）ならステップ１００２３に移る。さもなければ、ステップ１００５に進む。ステップ１００２１と同様、ＱＡＰ０：最新の空気量推定値（ｇ／ｓ）、ＱＡＰ１０：１００ｍｓ前の空気量推定値（ｇ／ｓ）、ＱＡＰ２０：２００ｍｓ前の空気量推定値（ｇ／ｓ）、ＱＡＰ３０：３００ｍｓ前の空気量推定値（ｇ／ｓ）である。
【００２９】
ステップ１００２３では、スロットル開度変位チェックを行う。次の式が満足されたなら、ステップ１０２４に進み、さもなければ、ステップ１０３２に進み処理をリセットする。
【００３０】
【数２】
ＴＨ０−ＴＨ１０≧１０ｍV                                  （数２）
但し、ＴＨ０：最新スロットル開度（５ｍV）、ＴＨ１０：１００ｍｓ前のスロットル開度（５ｍV）である。
【００３１】
ステップ１００２４では、記憶領域データチェックを行う。後述の方法で計算される１４０ｍｓ前の気筒流入燃料量ＧＦＥＭ１４の値が、０でないかをチェックし、０でなければ、ステップ１００５に進み、さもなければ、ステップ１０３２に進み処理をリセットする。
【００３２】
ステップ１００４では、空気量上昇チェックを行う。ＱＡＰ０−ＱＡＰ１０＞−０．２５（ｇ／ｓ）ならステップ１００４１に移る。さもなければ、ステップ１０３２に進む。但し、ＱＡＰ０：最新の空気量推定値（ｇ／ｓ）、ＱＡＰ１０：１００ｍｓ前の空気量推定値（ｇ／ｓ）である。ステップ１００４１では、ステップ１００２４と同様、１４０ｍｓ前の気筒流入燃料量ＧＦＥＭ１４の値が、０でないかをチェックし、０でなければ、ステップ１００５に進み、さもなければ、ステップ１０３２に進み処理をリセットする。
【００３３】
ステップ１００５では、RAMの所定領域に記憶されている回転数、燃料噴射量、空燃比、スロットル開度のデータシフト、及び、最新値取り込みを行う。図５ｂ）にそのアドレスを示す。気筒流入空気量のデータ移動、最新値取り込みを行ったのと同様の次の処理を行う。
【００３４】
回転数を記憶する各アドレスに記憶されたデータの移動は次のように行う。所定アドレス（Ｍ１からＭ１＋４０）に、最新時刻から２００ｍｓ前までの時系列データが、１０ｍｓおきに、２1個記憶されている。図５ｂ）で、Ｎｉ（ｉ＝０から２０）は、ｉ×１０ｍｓ時刻前の回転数検出値データを示しており、対応するアドレスにそのデータが格納されている。まず、１９０ｍｓ前の回転数Ｎ１９を記憶するアドレス（Ｍ１＋３８）のデータを、２００ｍｓ前の回転数Ｎ２０を記憶するアドレス（Ｍ１＋４０）にコピーする。さらに、１８０ｍｓ前の回転数Ｎ１８を記憶するアドレス（Ｍ１＋３６）のデータを、１９０ｍｓ前の回転数Ｎ１９を記憶するアドレス（Ｍ１＋３８）にコピーする。この操作を、最新時刻の回転数Ｎ０を記憶するアドレス（Ｍ１）のデータを、１０ｍｓ前の回転数Ｎ１を記憶するアドレス（Ｍ１＋２）にコピーするまで繰り返す。
【００３５】
最後に、最新の回転数検出値Ｎ０を、最新の回転数検出値を記憶するアドレス（Ｍ１）にコピーする。
【００３６】
以上は、回転数の場合であるが、燃料噴射量、空燃比、スロットル開度に関しても同様の処理を行う。なお、燃料噴射量GFｉに関しては、現時刻から３００ｍｓ前までの３１個のデータ、計測空燃比ＡＦに関しては、現時刻から４０ｍｓ前までの５個のデータ、スロットル開度に関しては、現時刻から１００ｍｓ前までの11個のデータを記憶、更新する。なお、ＧＦｉ、Ｎｉ、ＡＦｉ、ＴＨｉは、ｉ×１０ｍｓ前のデータを表す。この処理は、最新から所定時刻前までの気筒流入空気量、燃料噴射量、計測空燃比、スロットル開度のデータを予め定められたＲＡＭの所定アドレスに記憶する処理を意味するものである。
【００３７】
また、燃料噴射量の最新値ＧＦＣＡＬの演算は、次式に基づいて行う。
【００３８】
【数３】
0003823711.tif 000003
ここに、ＫＴ１：定数、Ｔｉ：後述の方法で計算される実行噴射パルス幅（μｓ）、ＴＳ：無効噴射時間（μｓ）、ＴＤＡＴＡＦ：燃料噴射ＲＥＦ間時間（エンジンが半回転する時間）（μｓ）、ＫＬＭＴＭ：学習補正係数、KMR：混合比補正係数である。
【００３９】
混合比補正係数、及び、学習補正係数の計算方法について説明する。
【００４０】
空燃比制御の活用されるインジェクタや空気量センサは、様々な運転領域で高精度に動作するとは限らない。例えば、ある運転領域で、空気量センサによる計測空気量は、数％の誤算を持つかもしれない。また、インジェクタに関しても、ある噴射量指令値（目標値）に対して実際に噴射される燃料量は、数％の誤差を持つ可能性がある。初期のインジェクタや空気量センサの誤差を補正するために混合比補正係数が設けられている。混合比補正係数は、図８に示すように、空気量QAと空気量QAを回転数Nで割って得られる負荷L（＝QA/N）の2次元テーブルを検索して求められる。テーブルデータには、予め、エンジン試験を行ない、様々な運転領域で、目標空燃比が実現されるような値が格納されている。
【００４１】
次に、学習補正係数の計算方法について説明する。
【００４２】
インジェクタや空気量センサの初期誤差の影響は、混合比補正を設けることで対処できる。しかしながら、これらセンサやアクチュエータの経時変化までは補償できない。学習補正係数KLNは、インジェクタや空気量センサの経時変化による誤差を補償するためのものである。混合比補正係数と同様に、図１１に示す空気量QAと負荷L（＝QA/N）の2次元テーブルを検索してその値KLNが求められる。
【００４３】
テーブルデータは、時々刻々書き換えらている。次に、このテーブルデータの設定方法について説明する。
【００４４】
このテーブルデータ設定には、空燃比フィードバック制御の補正係数が用いられる。空燃比フィードバック制御とは、計測空燃比が目標空燃比に一致するよう燃料噴射時間を補正するもので、その補正係数γは、例えば、PI制御則により次のように求められる。
【００４５】
【数４】
ｅ＝ＡＦ０−ＡＦT                                           （数４）
【００４６】
【数５】
γ＝（Kｐ＋Kｉ／Ｓ）ｅ                                      （数５）
ここに、AF０：計測空燃比、AFT：目標空燃比、ｅ：空燃比誤差、Kｐ：比例ゲイン、Kｉ：積分ゲイン、S：ラプラス演算子、γ：フィードバック補正係数である。
【００４７】
この補正係数を用いて、燃料噴射時間Ｔｉが次のように演算される。
【００４８】
【数６】
Ｔｉ＝ＫＴ２・GF・TDATAF・γ・（１＋KMR）・（１＋KLN）＋TS   （数６）
ここに、ＫＴ２：定数、Ｔｉ：実行噴射パルス幅（μｓ）、ＴＳ：無効噴射時間（μｓ）、ＴＤＡＴＡＦ：燃料噴射ＲＥＦ間時間（エンジンが半回転する時間）（μｓ）、ＫＬＮ：学習補正係数、KMR：混合比補正係数、γ：フィードバック補正係数、GF：燃料噴射量計算値である。GFの計算方法については、後述する。
【００４９】
学習補正係数KLNの初期値は０である。定常状態で、インジェクタや空気量センサの特性の経時変化がない場合は、フィードバック補正係数は１．０近傍の値を示す。これに対して経時劣化が生じた場合、１．０と異なる値を示すことになる。このずれを、ずれが生じた運転領域と対にして図１１の学習テーブルに記憶し、テーブル検索により学習係数KLNを算出し、数６のＴｉ演算に活用する。これにより、特性の経時変化が存在する場合でも目標空燃比を実現する適切な燃料噴射量を決定できる。
【００５０】
以上述べた学習補正係数のテーブルデータを算出するプログラムのフローチャートを、図9に示す。この処理は、所定の周期で実行される。ステップ９０１では、計測空気量QAと負荷（QA/N）が一定の定常運転状態にあるかどうかを判定する。定常状態にあれば次のステップに進み、さもなければ処理を終了する。ステップ９０２では、現在の運転領域が、図１０のどの学習領域にあるかを判定する。図１０では、空気量、負荷とも６分割された、３６の学習運転領域が設定されている。ステップ９０３では、最新のフィードバック補正係数γから１を引いた値（γ−1）の値を計算し、そのデータを図１１のテーブルに書き込むが、データを書き込むテーブル内の運転領域は、ステップ９０２で判定された運転領域に等しくする。以上が学習補正係数を格納したテーブルのデータを書き換える処理の内容である。
【００５１】
以上で図2のステップ１００５に関連する処理の説明を終わる。
【００５２】
次に、ステップ１００６では、センサの応答遅れを補償した空燃比を計算し、ＲＡＭの所定領域に記憶する。ＲＡＭに記憶された最新の空燃比計測値ＡＦ０と、過去にこのステップで計算し、ＲＡＭの所定領域（図５に示す以外の領域）に記憶している最新、１０ｍｓ前、２０ｍｓ前のセンサの応答遅れを補償した空燃比ＡＦＲ０、ＡＦＲ１、ＡＦＲ２から次の式に従って、現時刻のセンサ応答遅れを補償した空燃比ＡＦＲを計算する。
【００５３】
【数７】
0003823711.tif 000004
ここに、ａｉ，ｂｉ（ｉ＝０，１，２，３）は定数である。
【００５４】
さらに、ＡＦＲ１のデータを、２０ｍｓ前の空燃比を記憶するアドレスにコピーし、ＡＦＲ０のデータを、１０ｍｓ前の空燃比を記憶するアドレスにコピーし、最後に、算出されたＡＦＲのデータを最新の空燃比を記憶するアドレスにコピーする。
【００５５】
ステップ１００７では、センサの応答遅れを補償した空燃比に含まれるノイズを除去する。ノイズ除去はローパスフィルタを活用し、最新、１０ｍｓ前、２０ｍｓ前のセンサ応答遅れを補償した空燃比ＡＦＲ０、ＡＦＲ１、ＡＦＲ２と、過去にこのステップで計算し、ＲＡＭの所定領域に記憶している最新、１０ｍｓ前、２０ｍｓ前のノイズ除去を施した空燃比ＡＦＮ０、ＡＦＮ１、ＡＦＮ２から次式に従って、ノイズを除去した現時刻の空燃比ＡＦＮを計算する。
【００５６】
【数８】
0003823711.tif 000005
ここに、ｃｉ，ｄｉは定数である。
【００５７】
さらに、ＡＦＮ１のデータを、２０ｍｓ前の空燃比を記憶するアドレスにコピーし、ＡＦＮ０のデータを、１０ｍｓ前の空燃比を記憶するアドレスにコピーし、最後に、算出されたＡＦＮのデータを最新の空燃比を記憶するアドレスにコピーする。
【００５８】
ステップ１００８では、３００ｍｓ前の燃料噴射量計算値ＧＦ３０の値が０でないかどうかで、図５のＲＡＭ領域がすべて埋まっているかどうかを判定する。０でなければ、次の処理に、さもなければ処理を終了する。
【００５９】
本プログラムでは、エンジンの行程と排気管内での流動に起因する遅れ（空燃比の検出遅れ時間：無駄時間）の最新値ｉｄと１０ｍｓ前の値ｉｄｏｌｄをＲＡＭの所定領域に記憶している。ステップ１００９では、最新値のデータを読み出し、これを１０ｍｓ前のデータを記憶するアドレスにロードする。
【００６０】
ステップ１０１１では、現在の空燃比検出遅れ時間ｉｄを次式に基づいて計算し、ＲＡＭの所定領域に記憶する。
【００６１】
【数９】
ｉｄ＝ＳＥＩＳＵ（１２０００／Ｎ０）                          （数９）
ここに、Ｎ０：最新の回転数検出値、ＳＥＩＳＵ：引数の整数値を出力する関数。
【００６２】
ステップ１０１１１では、ｉｄｏｌｄの値が０の時、ｉｄの値を、ｉｄｏｌｄに代入する。
【００６３】
ステップ１０１２では、ＲＡＭの所定領域に記憶している最新の空燃比検出遅れ時間ｉｄと１０ｍｓ前の空燃比検出遅れ時間ｉｄｏｌｄを比較する。ｉｄの方が大きければステップ１０１３に進み、さもなければステップ１０１４に進む。加速時では、回転数が上昇するため、一般的にはｉｄのほうが大きくなることはない。ｉｄの方が大きい場合、ノイズの影響であり、この影響を除去するため次のステップ１０１３で、ｉｄにｉｄｏｌｄを代入する。すなわち、最新の空燃比検出遅れ時間のデータを記憶するアドレスに、１０ｍｓ前の空燃比検出遅れ時間のデータをロードする。
【００６４】
ステップ１０１５では、ｉｄとｉｄｏｌｄの値を比較し、ｉｄ＝ｉｄｏｌｄならステップ１０１６に、ｉｄ＝ｉｄｏｌｄ−１ならステップ１０１７に、ｉｄ＜ｉｄｏｌｄ−１ならステップ１０３２に進む。
【００６５】
ＲＡＭの所定領域に、検出しうる最新の気筒流入燃料量ＧＦＥＭ０から、その１４０ｍｓ前までのデータが１０ｍｓおきに１５個記憶されている。以下、ＧＦＥＭｉ（ｉ＝０から１４）をｉ×１０ｍｓ前の気筒流入燃料量を記憶するアドレスに記憶されたデータとする。
【００６６】
ステップ１０１６では、まず、１３０ｍｓ前のデータＧＦＥＭ１３を読み出し、これを、１４０ｍｓ前のデータを記憶するアドレスにロードする。さらに、１２０ｍｓ前のデータＧＦＥＭ１２を読み出し、１３０ｍｓ前のデータを記憶するアドレスにロードする。この処理を、最新のデータＧＦＥＭ０を読み出し、１０ｍｓ前のデータを記憶するアドレスにロードするまで繰り返す。最後に、次式で計算したＧＦＥＭを、最新のデータを記憶するアドレスに記憶する。
【００６７】
【数１０】
ＧＦＥＭ＝ＱＡＰＩＤ／ＡＦＮ０                        （数１０）
ここに、ＱＡＰＩＤ：ｉｄ×１０時刻前の気筒流入空気量推定値、ＡＦＮ０：最新のノイズ除去空燃比である。
【００６８】
ステップ１０１７では、ＲＡＭの所定領域に記憶されている上述のデータを次のように操作する。 まず、１２０ｍｓ前のデータＧＦＥＭ１２を読み出し、これを、１４０ｍｓ前のデータを記憶するアドレスにロードする。次に、１１０ｍｓ前のデータＧＦＥＭ１１を読み出し、１３０ｍｓ前のデータを記憶するアドレスにロードする。この処理を、最新のデータＧＦＥＭ０を、２０ｍｓ前のデータを記憶するアドレスにロードするまで繰り返す。次に、０．５×（ＧＦＥＭ０＋ＧＦＥＭ）を計算し、計算された値を、１０ｍｓ前のデータを記憶するアドレスにロードする。但し、ＧＦＥＭは数１０で計算される値である。 最後に、数１０に基づいて計算したＧＦＥＭを、最新のデータを記憶するアドレスにロードし、処理を終了する。空燃比の検出遅れ時間ｉｄが変化するタイミングでは、気筒流入燃料量の計算値が一時的に欠損するため、ステップ１０１７では、それを補間計算で補う処理を行っている。
【００６９】
ステップ１０１８では、加速中かどうかを示す加速フラグＡＦＬＧがＯＮ（値が１）かどうかを判定する。ＯＮの場合は加速中であり、この場合は、ステップ１０２３に進み、さもなければステップ１０１９に進む。
【００７０】
ステップ１０１９では、燃料噴射量、気筒流入燃料量の平均値を次式に基づいて計算し、ＲＡＭの所定領域に記憶する。
【００７１】
【数１１】
GFBAR=(GF0+GF2+GF4+GF6+GF8+GF10+GF12+GF14)/8               （数１１）
【００７２】
【数１２】
0003823711.tif 000006
ここに、ＧＦＢＡＲ：燃料噴射量平均値、ＧＦｉ：ｉ×１０ｍｓ前の燃料噴射量、
ＧＦＥＢＡＲ：気筒流入燃料量平均値、ＧＦＥＭｉ：ｉ×１０ｍｓ前の気筒流入燃料量である。
【００７３】
ステップ１０２０では、加速開始かどうかを判定する。加速開始は、次式により判定する。
【００７４】
【数１３】
ＴＨ０―ＴＨ１０＞ＬＥＶＥＬ                             （数１３）
ＴＨｉ：ｉ×１０ｍｓ前のスロットル開度、ＬＥＶＥＬ：定数
数１３が成立し、加速開始と判定された場合、ステップ１０２０１に進み、さもなければ処理を終了する。
【００７５】
ステップ１０２０１では、記憶領域データチェックを行なう。ここでは、ＧＦＥＭ１４の値が、０でないかをチェックし、０でなければ、ステップ１０２０２に進み、さもなければ、ステップ１０３２に進み処理をリセットする。
【００７６】
但し、GFEM１４は、１４０ｍｓ前の気筒流入燃料量計算値である。
【００７７】
ステップ１０２０２では、空気量の一定チェックを行なう。気筒流入空気量推定値ＱＡＰｉ（ｉ＝８，１４，１８，２０，２４、３０）が次の条件式を満たすかどうかを判定する。
【００７８】
【数１４】
｜ＱＡＰ８−ＱＡＰ１８｜＜０．３５（ｇ／ｓ）               （数１４）
【００７９】
【数１５】
｜ＱＡＰ１４−ＱＡＰ２４｜＜０．３５（ｇ／ｓ）             （数１５）
【００８０】
【数１６】
｜ＱＡＰ２０−ＱＡＰ３０｜＜０．３５（ｇ／ｓ）             （数１６）
ここに、ＱＡＰ８：８０ｍｓ前の気筒流入空気量推定値（ｇ／ｓ）、ＱＡＰ１４：１４０ｍｓ前の気筒流入空気量推定値（ｇ／ｓ）、ＱＡＰ１８：１８０ｍｓ前の気筒流入空気量推定値（ｇ／ｓ）、ＱＡＰ２０：２００ｍｓ前の気筒流入空気量推定値（ｇ／ｓ）、ＱＡＰ２４：２４０ｍｓ前の気筒流入空気量推定値（ｇ／ｓ）、ＱＡＰ３０：３００ｍｓ前の気筒流入空気量推定値（ｇ／ｓ）である。
【００８１】
上の全ての条件式が満たされたなら、ステップ１０２０３、さもなければ、ステップ１０３２に進む。
【００８２】
ステップ１０２０３では、ＧＦとＧＦＥの平均値の偏差の判定を行なう。
【００８３】
次の条件式が満足されたならステップ１０２１に進み、さもなければ、ステッ１０３２に進み、処理をリセットする。
【００８４】
【数１７】
｜ＧＦＢＡＲ−ＧＦＥＢＡＲ｜＜０．０２５（ｇ／ｓ）        （数１７）
ここに、ＧＦＢＡＲ：ステップ１０１９で計算されたＧＦの平均値（ｇ／ｓ）、ＧＦＥＢＡＲ：ステップ１０１９で計算されたＧＦＥの平均値（ｇ／ｓ）である。
【００８５】
ステップ１０２１では、加速フラグＡＦＬＧをＯＮ（値を１）にする。なお、このフラグの初期値はＯＦＦ（値は０）である。
【００８６】
ステップ１０２１１では、燃料性状の判別指標であるＪを初期化（０を代入）する。
【００８７】
ステップ１０２２では、加速開始時の回転数ＮＳ、気筒流入空気量ＱＡＰＳ、スロットル開度THSを記憶する。
【００８８】
ステップ１０２３では、タイムカウンタＣＮＴを１だけアップする。なお、ＣＮＴの初期値は０である。
【００８９】
ステップ１０２３１では、非同期噴射が実行されたかどうかを判定し、実行されたならステップ１０３２に進み処理をリセット、さもなければ、ステップ１０２４に進む。
【００９０】
ステップ１０２４では、回転数、空気量、燃料噴射量のレベル判定を行なう。回転数、気筒流入空気量、燃料噴射量計算値が以下の全ての条件を満たす時、ステップ１０２５に進み、条件が満たされない時、ステップ１０３２に進み判別処理をリセットする。
【００９１】
【数１８】
Ｎ０−Ｎ４＞−２５（ｒｐｍ）                           （数１８）
【００９２】
【数１９】
Ｑａｐ０−Ｑａｐ４＞−０．５（ｇ／ｓ）                 （数１９）
【００９３】
【数２０】
ＧＦ０−ＧＦ１０＞−０．０３５（ｇ／ｓ）                （数２０）
ここで、Ｎ０：最新の回転数検出値（ｒｐｍ）、Ｎ４：４０ｍｓ前の回転数検出値（ｒｐｍ）、ＱＡＰ０：最新の気筒流入空気量推定値（ｇ／ｓ）、ＱＡＰ４：４０ｍｓ前の気筒流入空気量推定値（ｇ／ｓ）、ＧＦ０：最新の燃料噴射量（ｇ／ｓ）、ＧＦ１０：１００ｍｓ前の燃料噴射量（ｇ／ｓ）である。
【００９４】
ステップ１０２５では、最新回転数Ｎ０＞２０００（ｒｐｍ）かどうかを判定する。この条件が満たされたなら、アイドルから所定の加速が行われ、性状判別が可能な十分なデータが採取できたとして、ステップ１０２９０以降の燃料性状判別処理に移る。さもなければステップ１０２６以降の処理に移る。
【００９５】
ステップ１０２６では、レベル判定フラグＬＦＬＧがＯＮ（値が１）かどうかを判定する。レベル判定フラグとは、加速開始後に、基準モデルパラメータが計算された後、ＯＮ（値が１にセット）されるフラグである。ＯＮならステップ１０３６の処理に移る。さもなければ、ステップ１０２７以降の処理に移る。
【００９６】
ステップ１０２７では、タイムカウンタＣＮＴ≧２０より、０．２秒経過を判定する。０．２秒経過ならステップ１０２８以降の処理に移り、さもなければ処理を終了する。
【００９７】
ステップ１０２８では、水温が６０℃未満かどうかを判定し、そうならば次の処理に移り、さもなければ、判別処理をリセットするステップ１０３２以降の処理に移る。続く、ステップ１０３３では、燃料噴射量ＧＦと気筒流入燃料量ＧＦＥの関係式
【００９８】
【数２１】
0003823711.tif 000007
【００９９】
において、水温Ｔｗの関数であるモデルパラメータｂ０（Ｔｗ）、ｂ１（Ｔｗ）、ａ０（Ｔｗ）を、最新の水温Ｔｗをパラメータにして、図６の１次元テーブルを参照して求める。なお、ｑ−１は、時間遅れ素子。
【０１００】
ここで、テーブルデータは、予め、エンジン試験で採取したデータを解析して求める。例えば、水温２０℃のデータは、水温を２０℃の状態でエンジンをアイドル運転する。なお、燃料は、重質と軽質の中間性状の燃料を用いてエンジンを運転する。このときエンジンにかかる負荷はＲＯＡＤ／ＬＯＡＤとする。アイドル状態からスロットルを踏み込み加速する。図７に示すように、このときのａ）回転数、ｂ）気筒流入空気量、ｃ）空燃比、ｄ）燃料噴射量の応答を検出する。数１０を活用すればｅ）気筒流入燃料量の応答も図７のように計算できる。得られた燃料噴射量の応答を入力、気筒流入燃料量の応答を出力として最小二乗法により、数２１のモデルパラメータａ０、ｂ０、ｂ１を計算できる。得られたデータを図６の水温２０℃の領域に格納する。以上がテーブルデータの求め方である。
【０１０１】
次に、ステップ１０３４では、レベル判定フラグＬＦＬＧをＯＮ（値を１）にする。このフラグの初期値は０である。
【０１０２】
ステップ１０３６では、燃料噴射量のトレンドを次の式により除去し、記憶する。
【０１０３】
【数２２】
ＧＦＴ０＝ＧＦＩＤ−ＧＦＢＡＲ                         （数２２）
【０１０４】
【数２３】
ＧＦＴ１＝ＧＦＩＤ０−ＧＦＢＡＲ                       （数２３）
【０１０５】
【数２４】
ＧＦＴ２＝ＧＦＩＤ１−ＧＦＢＡＲ                       （数２４）
ここに、ＧＦＩＤ：ｉｄ×１０ｍｓ前の燃料噴射量、ＧＦＩＤ０：（ｉｄ＋１）×１０ｍｓ前の燃料噴射量、ＧＦＩＤ１：（ｉｄ＋２）×１０ｍｓ前の燃料噴射量、ＧＦＢＡＲ：燃料噴射量平均値、ＧＦＴ０：ｉｄ×１０ｍｓ前のトレンド除去した燃料噴射量、ＧＦＴ１：ｉｄｏｌｄ×１０ｍｓ前のトレンド除去した燃料噴射量である。
【０１０６】
ステップ１０３７では、気筒流入燃料量のトレンドを次式により除去し、記憶する。
【０１０７】
【数２５】
ＧＦＥＴ＝ＧＦＥＭ０−ＧＦＥＢＡＲ                         （数２５）
ＧＦＥＭ０：検出しうる最新（ｉｄ×１０ｍｓ前）の気筒流入燃料量、ＧＦＥＢＡＲ：気筒流入燃料量平均値、ＧＦＥＴ：トレンド除去した気筒流入燃料量である。トレンド除去した気筒流入燃料量は、検出しうる最新の値からその４０ｍｓ前の値まで１０ｍｓごとに５個記憶されている。ステップ１０３７では、３０ｍｓ前のデータＧＦＥＴ３を呼び出し、４０ｍｓ前のデータを記憶するアドレスにロードし、２０ｍｓ前のデータＧＦＥＴ２を呼び出し、３０ｍｓ前のデータを記憶するアドレスにロードし、１０ｍｓ前のデータＧＦＥＴ１を呼び出し、２０ｍｓ前のデータを記憶するアドレスにロードし、最新のデータＧＦＥＴ０を呼び出し、１０ｍｓ前のデータを記憶するアドレスにロードする。最後に、ＧＦＥＴを、最新のデータを記憶するアドレスにロードする。
【０１０８】
ステップ１０３８では、最新の空燃比検出遅れ時間ｉｄと１０ｍｓ前の空燃比検出遅れ時間ｉｄｏｌｄを比較する。両者が等しければステップ１０４０に進み、さもなければステップ１０４３に進む。
【０１０９】
ステップ１０４０では、トレンド除去した燃料噴射量ＧＦＴ０，ＧＦＴ１と過去にこのステップで計算し記憶している基準気筒流入燃料量ＧＦＥＢ、及び、ステップ１０３３で求めたモデルパラメータａ１、ｂ０、ｂ１から最新の基準気筒流入燃料量ＧＦＥＢＮを次式で計算し、記憶する。
【０１１０】
【数２６】
0003823711.tif 000008
記憶されたＧＦＥＢＮの値は、次回のこのステップで、ＧＦＥＢの値として、新たなＧＦＥＢＮの計算に活用される。
【０１１１】
ステップ１０４１では、燃料性状判別のための指標Ｊを次式で更新する。
【０１１２】
【数２７】
Ｊ←Ｊ＋（ＧＦＥＴ０−ＧＦＥＢＮ）                       （数２７）
ここに、ＧＦＥＴ０：空燃比に基づいて計算されたトレンド除去した気筒流入燃料量、ＧＦＥＢＮ：燃料噴射量と数２１（あるいは数２６）のモデルベースに計算された基準気筒流入燃料量である。
【０１１３】
１０ｍｓごとにＪの更新を行うため、Ｊの値の正、負により、空燃比計測値から検出される気筒流入燃料量の応答と、燃料噴射量と数２１のモデルにより計算される基準気筒流入燃料量の応答のうち、どちらの応答が速いかを判別できる。例えば、モデルによる基準応答は重質と軽質の中間の性状を表すため、検出気筒流入燃料量の応答の方が速ければ、現在使用中の燃料は軽質、検出気筒流入燃料量の応答の方が遅ければ、現在使用中の燃料は重質と判定できる。この判定処理は、十分なデータが採取された後、ステップ１０３０で行う。
【０１１４】
ステップ１０４３では、トレンド除去した燃料噴射量ＧＦＴ０，ＧＦＴ１、ＧＦＴ２と過去にステップ１０４０で計算し記憶している基準気筒流入燃料量ＧＦＥＢ、及び、ステップ１０３３で求めたモデルパラメータからａ１、ｂ０、ｂ１から最新の基準気筒流入燃料量ＧＦＥＢＮを次式で計算し、記憶する。
【０１１５】
【数２８】
0003823711.tif 000009
得られたＧＦＥＢＮは、（ｉｄ−１）×１０ｍｓ前の基準気筒流入燃料量に相当する。
【０１１６】
さらに、ＧＦＥＢＮから次の式によりｉｄ×１０ｍｓ前の基準気筒流入燃料量ＧＦＥＢＮＮを計算する。
【０１１７】
【数２９】
0003823711.tif 000010
ステップ１０４４では、燃料性状判別のための指標Ｊを次式で更新する。
【０１１８】
【数３０】
0003823711.tif 000011
最後に、性状判定用のデータが十分そろった後の処理である、ステップ１０２９０、１０２９、１０３０の処理について説明する。
【０１１９】
ステップ１０２９０では、加速開始後０．５秒経過したかをチェックする。タイムカウンタCNT が５０を越えたかどうかをチェックし、５０を越えたならステップ１０２９に進み、さもなければ、ステップ１０３２に進み処理をリセットする。
【０１２０】
ステップ１０２９では、気筒流入空気量が次の条件を満足するかどうかを判定する。
【０１２１】
【数３１】
0003823711.tif 000012
ここに、ＱＭＩＮ，ＱＭＡＸ：所定の定数、ＱＡＰ０：最新気筒流入空気量である。
【０１２２】
上記条件を満たせたステップ１０３０に進み、さもなければ、ステップ１０３２に進み性状判別処理をリセットする。
【０１２３】
ステップ１０３０では、次の条件式により燃料性状を判別する。
【０１２４】
【数３２】
0003823711.tif 000013
【０１２５】
【数３３】
0003823711.tif 000014
ＪＭＩＮ、ＪＭＡＸは定数で、例えば、両定数とも０に設定する。
【０１２６】
以上で性状判別処理方法の実施例のすべての処理の説明を終了する。
【０１２７】
上記実施例がアイドルからの加速を想定したが、定常走行からの加速や減速でも同様の方法で燃料性状を判別できる。
【０１２８】
次に、燃料性状判別結果の利用方法について図１２から図１４に基づいて説明する。
【０１２９】
図１２は、目標の空燃比を実現する燃料噴射パルス幅を計算するプログラムのフローチャートであり、所定のクランク角に来たときに実行されるようになっている。ステップ４００１では、図１３のテーブルを参照して噴射燃料の付着率Ｘ、液膜の蒸発時定数τを計算する。付着率に関しては、回転数Ｎと空気量Ｑａを回転数で割って選られる負荷Ｑａ／Ｎをパラメータに２次元テーブルを検索してベース付着率Ｘｂを算出する。さらに、水温をパラメータに１次元テーブルを検索して水温補正係数ｋｘを計算する。補正係数算出のため重質用と軽質用の補正テーブルが設けられており、前述のプログラムによる判定結果にしたがって、どちらのテーブル検索値を利用するかを決定する。重質と判定されていれば、重質用テーブルを利用し、軽質と判定されていれば軽質用テーブルを利用する。基準付着率Ｘｂに水温補正係数ｋｘを乗じて付着率Ｘを計算する。図１３に示すように蒸発時定数の計算も同様に行うことができる。なお、１次元テーブルのデータは、図１４に示すように、ｋｘ、ｋτとも、重質燃料ほど値が大きくなる傾向にある。
【０１３０】
ステップ４００２では、選られた付着率Ｘ、蒸発時定数τ、気筒流入空気量推定値Ｑａｐ、前のサイクルで後述のステップ４００４で計算され記憶されている液膜量Ｍｆから次式にしたがって燃料噴射量ＧF（ｇ／ｓ）を計算する。
【０１３１】
【数３４】
0003823711.tif 000015
【０１３２】
ここに、ＡＦT：目標空燃比である。
【０１３３】
ステップ４００３では、数６により燃料噴射パルス幅Ｔｉを計算する。
【０１３４】
最後に、ステップ４００４では、次式により液膜量推定値を更新して記憶する。
【０１３５】
【数３５】
0003823711.tif 000016
【０１３６】
ここに、ｉ：時刻（１時刻はΔｔの時間）、Δｔ：時間刻み、Ｘ：付着率、τ：蒸発時手数、Ｇｆ：燃料噴射量である。
【０１３７】
以上で処理を終了し、次回の起動要求があるまで待機する。以上のように燃料性状判別結果に応じて、適切な燃料制御パラメータを設定できるので、燃料性状によらず常に空燃比制御精度を良好な状態に維持できる。なお、燃料性状が変化したと判定された時、図１３の水温補正テーブルをいきなり切り替えると、算出される付着率、蒸発時定数が不連続になり、制御性能が劣化する場合がある。したがって、性状変化直後は、付着率と蒸発時定数を、古い性状相当値から新しい性状相当値に徐々に切り替えるようにして、制御性能を確保するようにしても良い。
【０１３８】
【発明の効果】
以上のように、本発明では、燃料性状を精度良く判別できる。また、性状変化に適応して空燃比制御精度を維持できる。
【図面の簡単な説明】
【図１】制御系全体構成図である。
【図２】本発明の第一実施例の燃料性状を判別するプログラムのフローチャートである。
【図３】本発明の第一実施例の燃料性状を判別するプログラムのフローチャートである。
【図４】本発明の第一実施例の燃料性状を判別するプログラムのフローチャートである。
【図５】変数を記憶するＲＡＭ領域である。
【図６】第一実施例のモデルパラメータを格納したテーブルである。
【図７】第一実施例におけるモデル構築のための時系列データである。
【図８】混合比補正係数を格納した2次元テーブルである。
【図９】学習制御プログラムのフローチャートである。
【図１０】学習領域を示す図である。
【図１１】学習補正係数を格納した2次元テーブルである。
【図１２】燃料噴射量を計算するプログラムのフローチャートである。
【図１３】付着率、蒸発時定数を格納したテーブルである。
【図１４】付着率、蒸発時定数の水温補正係数の特性である。
【図１５】燃料性状判別処理のブロック図である。
【符号の説明】
１０：制御ユニット、２０：ＣＰＵ、３０：ＲＡＭ、４０：ＲＯＭ、５０：タイマ、６０：ＬＳＩ、７０：バス、８０：空気量センサ、９０：スロットルセンサ、１００：水温センサ、１１０：クランク角センサ、１２０：空燃比センサ
【図１】
0003823711.tif 000017
【図２】
0003823711.tif 000018
【図３】
0003823711.tif 000019
【図４】
0003823711.tif 000020
【図５】
0003823711.tif 000021
【図６】
0003823711.tif 000022
【図７】
0003823711.tif 000023
【図８】
0003823711.tif 000024
【図９】
0003823711.tif 000025
【図１０】
0003823711.tif 000026
【図１１】
0003823711.tif 000027
【図１２】
0003823711.tif 000028
【図１３】
0003823711.tif 000029
【図１４】
0003823711.tif 000030
【図１５】
0003823711.tif 000031