(57)【要約】【課題】車載バッテリが取り外されたときでも、失火判定用の学習値の記憶を保持できて、バッテリの取替え後の始動直後から失火を実用的な精度で検出することができると共に、長期使用にも十分に耐え得るようにする。【解決手段】各気筒の爆発行程毎の回転変動を検出すると共に、正常燃焼時の回転変動検出値のばらつきを学習し、この学習値と各気筒の爆発行程毎の回転変動検出値とを用いて各気筒の失火の有無を判定する。エンジン運転中に新たな学習値を演算する毎にバックアップＲＡＭ３４の学習値の記憶データを書き換え、ＩＧスイッチ３３のＯＦＦ操作時に、バックアップＲＡＭ３４に記憶されている学習値をＥＥＰＲＯＭ３５に書き込む。これにより、ＥＥＰＲＯＭ３５の学習値の書き換え回数を保証回数以下に制限する。その後、ＩＧスイッチ３３のＯＮ操作時にＥＥＰＲＯＭ３５に保存されている学習値をバックアップＲＡＭ３４に書き込む。【選択図】  図２
2004232460.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の回転変動を検出する回転変動検出手段と、
前記回転変動検出手段で検出した回転変動検出値のばらつきを学習する学習する学習手段と、
前記学習手段で学習した学習値と前記回転変動検出手段で検出した回転変動検出値とを用いて失火の有無を判定する失火判定手段とを備えた内燃機関の失火検出装置において、
前記学習手段で学習した学習値を記憶する記憶手段として、ＲＡＭの他に、書き換え可能な不揮発性メモリを設け、
前記ＲＡＭの学習値の記憶データは、前記学習手段で新たな学習値を演算する毎に書き換え、
前記不揮発性メモリの学習値の記憶データは、所定の条件が成立したときのみ書き換えることを特徴とする内燃機関の失火検出装置。
【請求項２】
前記不揮発性メモリの学習値の記憶データは、１回又は所定回数走行する毎に書き換えることを特徴とする請求項１に記載の内燃機関の失火検出装置。
【請求項３】
前記不揮発性メモリの学習値の記憶データは、所定期間経過毎又は所定距離走行毎に書き換えることを特徴とする請求項１に記載の内燃機関の失火検出装置。
【請求項４】
前記不揮発性メモリの学習値の記憶データは、失火を検出する毎に書き換えることを特徴とする請求項１に記載の内燃機関の失火検出装置。
【請求項５】
前記ＲＡＭは、車載バッテリから電源電圧が常時供給されるバックアップ電源を備えていることを特徴とする請求項１乃至４のいずれかに記載の内燃機関の失火検出装置。
【請求項６】
前記車載バッテリが取り外されて該ＲＡＭの記憶データが消えた場合に、該ＲＡＭのバックアップ電源が復帰したときに、前記不揮発性メモリに保存されている学習値のデータを該ＲＡＭに書き込むことを特徴とする請求項５に記載の内燃機関の失火検出装置。
【請求項７】
前記不揮発性メモリの学習値の記憶データは、イグニッションスイッチのオフ操作時に書き換え、該イグニッションスイッチのオン操作直後の初期化処理時に前記不揮発性メモリに保存されている学習値のデータを前記ＲＡＭに書き込むことを特徴とする請求項１に記載の内燃機関の失火検出装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、内燃機関の回転変動に基づいて失火を検出する内燃機関の失火検出装置に関するものである。
【０００２】
【従来の技術】
内燃機関の運転中に失火が発生すると、機関回転速度が瞬間的に低下することから、一般的な失火検出装置は、特許文献１（特開平６−２２９３１１号公報）に記載されているように、各気筒の爆発行程毎に回転変動量を検出して、この回転変動量を所定の失火判定値と比較して失火の有無を判定するようにしている。
【０００３】
しかし、正常燃焼時でも気筒間の燃焼ばらつきによって回転変動検出値がばらついたり、或は、クランク角センサの製造公差によって回転変動検出値がばらつくことがある。このような失火以外の原因による回転変動検出値のばらつきは、失火検出精度を低下させる原因となるため、特許文献２（特開平１０−５４２９５号公報）に記載されているように、正常燃焼時に回転変動検出値のばらつきを学習し、この学習値を用いて回転変動検出値を補正処理することで、気筒間の燃焼ばらつきや製造公差によるばらつきの影響を取り除いて失火を検出できるようにしたものがある。
【０００４】
【特許文献１】
特開平６−２２９３１１号公報（第２頁〜第３頁等）
【特許文献２】
特開平１０−５４２９５号公報（第４頁〜第５頁等）
【０００５】
【発明が解決しようとする課題】
一般に、失火判定用の学習値は、内燃機関の停止中（イグニッションスイッチのオフ中）でも、次の始動後に使用するために記憶保持する必要があるため、上記特許文献２に記載されているように、学習値を記憶するメモリとして、バックアップ電源を備えたＲＡＭ（いわゆるバックアップＲＡＭ）が用いられる。通常、このバックアップ電源は、車載バッテリから電源電圧が供給されるため、車載バッテリが取り外されると、バックアップＲＡＭに電源が供給されなくなって、バックアップＲＡＭに記憶した学習値のデータが消えてしまう。このため、車載バッテリが取り外されると、次にバッテリが取り付けられて学習が完了するまで、失火発生状態であっても、失火を検出できず、失火を正常燃焼と誤判定しながらエンジン制御を継続してしまうという問題があった。
【０００６】
また、一般に、学習精度を向上させるために、失火発生時に学習を禁止し、正常燃焼時のみ回転変動検出値のばらつきを学習するようにしているが、上述したように車載バッテリの取り外しによって失火を検出できなくなると、正常に失火を検出できる状態に復帰するまで、失火発生時の回転変動検出値のばらつきを正常燃焼時の回転変動検出値のばらつきと誤判定して学習してしまい、学習精度が悪化して、失火検出精度が悪化するという問題があった。
【０００７】
以上説明した問題を解決するために、学習値を記憶するメモリとして、バックアップＲＡＭに代えて、バックアップ電源を必要としないＥＥＰＲＯＭ等の書き換え可能な不揮発性メモリを用い、運転中に学習値を演算する毎に、不揮発性メモリの学習値の記憶データを書き換えることが考えられる。
【０００８】
しかし、周知のように、ＥＥＰＲＯＭ等は、書き換え回数に制限があるため、１５年以上の長期使用（膨大な書き換え回数）に耐え得ることが要求される車両用のメモリとしては、書き換え回数に制限があるＥＥＰＲＯＭ等を使用できず、バックアップＲＡＭを使用せざるを得ないというのが実状であった。
【０００９】
本発明はこのような事情を考慮してなされたものであり、従ってその目的は、車載バッテリが取り外されたときでも、失火判定用の学習値の記憶を保持できて、バッテリの取替え後の始動直後から失火を実用的な精度で検出することができると共に、長期使用にも十分に耐え得る内燃機関の失火検出装置を提供することにある。
【００１０】
【課題を解決するための手段】
上記目的を達成するために、本発明の請求項１の内燃機関の失火検出装置は、学習手段で学習した失火判定用の学習値を記憶する記憶手段として、ＲＡＭの他に、書き換え可能な不揮発性メモリを設け、前記ＲＡＭの学習値の記憶データは、前記学習手段で新たな学習値を演算する毎に書き換え、前記不揮発性メモリの学習値の記憶データは、“所定の条件”が成立したときのみ書き換えるようにしたものである。このようにすれば、運転中の学習値の演算回数（ＲＡＭの書き換え回数）が多くても、不揮発性メモリの学習値の書き換え回数を比較的少ない回数に制限することができ、長期使用にも十分に耐え得る。しかも、学習値の変動は経時変化等によって緩やかに生じるものであるため、本発明のように不揮発性メモリの学習値の書き換え回数を制限しても、不揮発性メモリに記憶保持する学習値の実用的な精度を確保することができ、車載バッテリの取替え後の始動直後から、不揮発性メモリに保存されている学習値を用いて、失火を実用的な精度で検出することができる。
【００１１】
この場合、不揮発性メモリの学習値の記憶データを書き換えるタイミング（所定の条件）は、１回又は所定回数走行する毎（請求項２）、或は、所定期間経過毎又は所定距離走行毎（請求項３）、或は、失火を検出する毎（請求項４）のいずれであっても良い。これらいずれの場合でも、不揮発性メモリの学習値の書き換え回数を保証回数以下に制限することができる。
【００１２】
また、運転中に新たな学習値を演算する毎に書き換えるＲＡＭは、車載バッテリから電源電圧が常時供給されるバックアップ電源を備えたバックアップＲＡＭを用いるようにすると良い（請求項５）。このようにすれば、車載バッテリが取り外されないときは、内燃機関の始動直後から、バックアップＲＡＭに保存されている最新の学習値を用いて失火を精度良く検出することができる。
【００１３】
この場合、車載バッテリが取り外されて該ＲＡＭの学習値の記憶データが消えたときには、該ＲＡＭのバックアップ電源が復帰した時点で、前記不揮発性メモリに保存されている学習値のデータを該ＲＡＭに書き込むようにすれば良い（請求項６）。このようにすれば、車載バッテリの取替え後の始動直後から、不揮発性メモリに保存されている学習値をＲＡＭに書き込んで、失火を実用的な精度で検出することができる。
【００１４】
また、不揮発性メモリの学習値の記憶データは、イグニッションスイッチのオフ操作時に書き換え、該イグニッションスイッチのオン操作直後の初期化処理時に前記不揮発性メモリに保存されている学習値のデータを前記ＲＡＭに書き込むようにしても良い（請求項７）。通常、車載バッテリの取り外しは内燃機関の停止中（イグニッションスイッチのオフ後）に行われるため、不揮発性メモリの学習値の記憶データを、イグニッションスイッチのオフ操作時に書き換えれば、内燃機関の停止中に最新の学習値を不揮発性メモリに保存しておくことができ、車載バッテリの取替え後の始動直後から、不揮発性メモリに保存されている最新の学習値をＲＡＭに書き込んで、失火を精度良く検出することができる。この場合、学習値を書き込むＲＡＭはバックアップ電源のない一般的なＲＡＭを使用しても良く、勿論、バックアップＲＡＭを使用しても良いことは言うまでもない。
【００１５】
【発明の実施の形態】
［実施形態（１）］
以下、本発明の実施形態（１）を図１乃至図８に基づいて説明する。まず、図１に基づいてエンジン制御システム全体の概略構成を説明する。エンジン１１（内燃機関）の吸気管１２の最上流部には、エアクリーナ１３が設けられ、このエアクリーナ１３の下流側に、吸入空気量を検出するエアフローメータ１４が設けられている。このエアフローメータ１４の下流側には、ＤＣモータ等によって開度調節されるスロットルバルブ１５とスロットル開度を検出するスロットル開度センサ１６とが設けられている。
【００１６】
また、スロットルバルブ１５の下流側には、サージタンク１７が設けられ、このサージタンク１７に、吸気管圧力を検出する吸気管圧力センサ１８が設けられている。また、サージタンク１７には、エンジン１１の各気筒に空気を導入する吸気マニホールド１９が設けられ、各気筒の吸気マニホールド１９の吸気ポート近傍に、それぞれ燃料を噴射する燃料噴射弁２０が取り付けられている。また、エンジン１１のシリンダヘッドには、各気筒毎に点火プラグ２１が取り付けられ、各気筒の点火プラグ２１には、点火時期に同期して点火コイル２８（図２参照）で発生した高電圧が印加される。
【００１７】
一方、エンジン１１の排気管２２には、排出ガス中のＣＯ，ＨＣ，ＮＯｘ等を浄化する三元触媒等の触媒２３が設けられ、この触媒２３の上流側に、排出ガスの空燃比又はリーン／リッチ等を検出する排出ガスセンサ２４（空燃比センサ、酸素センサ等）が設けられている。また、エンジン１１のシリンダブロックには、冷却水温を検出する水温センサ２５や、エンジン１１のクランク軸が一定クランク角（例えば３０℃Ａ）回転する毎にパルス信号を出力するクランク角センサ２６が取り付けられている。このクランク角センサ２６のパルス信号のカウント値からクランク角を検出すると共に、該パルス信号の出力周期（出力間隔）からエンジン回転速度が検出される。また、エンジン１１のシリンダヘッドには、カム軸の回転に同期して気筒判別信号を出力するカム角センサ２９（図２参照）が取り付けられ、このカム角センサ２９の気筒判別信号とクランク角センサ２６のパルス信号のカウント値とに基づいて気筒判別を行う。
【００１８】
前述した各種センサの出力は、エンジン制御回路（以下「ＥＣＵ」と表記する）３１に入力される。このＥＣＵ３１の電源端子には、メインリレー３２を介して車載バッテリ（図示せず）から電源電圧が供給され、ＥＣＵ３１のキーＳＷ端子には、イグニッションスイッチ（以下「ＩＧスイッチ」と表記する）３３のＯＮ／ＯＦＦ信号が入力される。メインリレー３２のリレー接点３２ａを駆動するリレー駆動コイル３２ｂは、ＥＣＵ３１のメインリレーコントロール端子に接続され、ＩＧスイッチ３３がＯＮ（オン）されたときに、リレー駆動コイル３２ｂに通電することで、リレー接点３２ａがＯＮして、ＥＣＵ３１に電源電圧が供給される。そして、リレー駆動コイル３２ｂへの通電をＯＦＦ（オフ）することで、リレー接点３２ａがＯＦＦして、ＥＣＵ３１への電源供給がＯＦＦされる。
【００１９】
また、ＥＣＵ３１には、記憶手段としてＲＡＭ３４の他に、書き換え可能な不揮発性メモリであるＥＥＰＲＯＭ３５が設けられている。更に、ＥＣＵ３１には、車載バッテリから電源電圧が常時供給されるバックアップ電源３６が設けられ、このバックアップ電源３６からＲＡＭ３４に動作電圧が供給されるようになっている。従って、ＲＡＭ３４は、エンジン１１の停止中でも記憶データを保持するバックアップＲＡＭとなっている。
【００２０】
ＥＣＵ３１は、マイクロコンピュータを主体として構成され、内蔵されたＲＯＭに記憶された各種のエンジン制御プログラムを実行することで、エンジン運転状態に応じて燃料噴射弁２０の燃料噴射量や点火プラグ２１の点火時期を制御する。
【００２１】
ＥＣＵ３１は、エンジン運転中に図３の失火判定ルーチンを実行することで、各気筒の爆発行程毎の回転変動を検出すると共に、正常燃焼時の回転変動検出値のばらつきを学習し、この学習値と各気筒の爆発行程毎の回転変動検出値とを用いて各気筒の失火の有無を判定し、失火検出時には警告ランプ３７を点灯するようにしている（又はインストルメントパネルの警告表示部に失火の警告を表示するようにしても良い）。
【００２２】
更に、本実施形態（１）では、図４の学習値記憶ルーチンによってエンジン運転中に新たな学習値を演算する毎にバックアップＲＡＭ３４の学習値の記憶データを書き換え、図７のＥＥＰＲＯＭ記憶ルーチンによってＩＧスイッチ３３のＯＦＦ操作時に、バックアップＲＡＭ３４に記憶されている最新の学習値をＥＥＰＲＯＭ３５に書き込んだ後、メインリレー３２をＯＦＦして、ＥＣＵ３１への電源供給をＯＦＦするようになっている。
【００２３】
以下、ＥＣＵ３１が実行する失火判定・学習値記憶に関する各ルーチンの処理内容を具体的に説明する。
図３の失火判定ルーチンは、エンジン運転中に所定クランク角毎（例えば３０℃Ａ毎）に割り込み処理により起動される。本ルーチンが起動されると、まず、ステップ１０１で、クランク軸が１行程分のクランク角（４気筒エンジンの場合は１８０℃Ａ）回転するのに要した時間を算出して、その時間から今回の回転角速度ω（ｉ）  を算出する。
【００２４】
この後、ステップ１０２に進み、次式により回転変動検出値ｄｌｒｎを算出する。
ｄｌｒｎ＝｛ω（ｉ−１）  −ω（ｉ）  ｝−｛ω（ｉ−５）  −ω（ｉ−１）  ｝／４
ここで、ω（ｉ−１）  は１行程前（前回の爆発行程の気筒）の回転角速度であり、ω（ｉ−５）  は５行程前（今回の爆発行程の気筒の１サイクル前）の回転角速度である。｛ω（ｉ−１）  −ω（ｉ）  ｝は、爆発行程が連続する気筒間の回転変動量であり、｛ω（ｉ−５）  −ω（ｉ−１）  ｝は、今回の爆発行程の気筒の１サイクル間の回転変動量である。上記ステップ１０１、１０２の処理は、特許請求の範囲でいう回転変動検出手段としての役割を果たす。
【００２５】
回転変動検出値ｄｌｒｎの算出後、ステップ１０３に進み、回転変動検出値ｄｌｒｎから学習値Ｇｄｌｒｎを差し引いて、失火判定用の回転変動パラメータΔωを求める。
Δω＝ｄｌｒｎ−Ｇｄｌｒｎ
この学習値Ｇｄｌｒｎは、バックアップＲＡＭ３４に記憶されている学習値マップ（図５参照）から現在の運転条件（エンジン回転速度と吸気管圧力）に応じた学習値Ｇｄｌｒｎを読み出して使用する。
【００２６】
この後、ステップ１０４に進み、回転変動検出値ｄｌｒｎの学習が完了したか否かを判定し、回転変動検出値ｄｌｒｎの学習が完了していなければ、ステップ１０８に進み、図４の学習値記憶ルーチンを実行して、次のようにして学習値Ｇｄｌｒｎを演算してバックアップＲＡＭ３４に記憶する。
【００２７】
まず、ステップ２０１で、現在のエンジン回転速度と吸気管圧力を読み込んだ後、ステップ２０２に進み、今回の爆発行程の気筒の学習値マップのうちのいずれの学習領域を学習するのか決定する。この後、ステップ２０３に進み、今回の学習領域に記憶された学習値Ｇｄｌｒｎ（ｉ−１）  を読み出して、この学習値Ｇｄｌｒｎ（ｉ−１）  と回転変動検出値ｄｌｒｎとを用いて、次のなまし処理式により、新たな学習値Ｇｄｌｒｎ（ｉ）  を演算して、今回の学習領域の学習値Ｇｄｌｒｎのデータを書き換える。
Ｇｄｌｒｎ（ｉ）  ＝ｄｌｒｎ×１／Ｋ＋Ｇｄｌｒｎ（ｉ−１）  ×（Ｋ−１）／Ｋ
ここで、Ｋはなまし係数である。以上説明した図４の学習値記憶ルーチンは、特許請求の範囲でいう学習手段としての役割を果たす。
【００２８】
各気筒の学習値マップの全領域の学習値Ｇｄｌｒｎの更新（書き換え）が所定回数以上実行されたときに、回転変動検出値ｄｌｒｎの学習が完了し、図３のステップ１０４で「Ｙｅｓ」と判定されて、ステップ１０５に進み、失火判定用の回転変動パラメータΔωを所定の判定値と比較して失火の有無を判定する。このステップ１０５の処理が特許請求の範囲でいう失火判定手段としての役割を果たす。
【００２９】
失火判定用の回転変動パラメータΔωが判定値よりも大きいときには、失火発生と判断されて、ステップ１０６に進み、図６の失火検出ルーチンを実行して、警告ランプ３７を点灯し（ステップ３０１）、失火検出時の運転条件のデータをバックアップＲＡＭ３４に記憶する（ステップ３０２）。
【００３０】
一方、失火判定用の回転変動パラメータΔωが判定値以下のときは、失火なしと判定し（ステップ１０７）、ステップ１０８に進み、図４の学習値記憶ルーチンを実行して回転変動検出値ｄｌｒｎを学習する。失火検出時には、回転変動検出値ｄｌｒｎの学習が行われず、正常燃焼時のみ、回転変動検出値ｄｌｒｎの学習が行われる。
【００３１】
図７のＥＥＰＲＯＭ記憶ルーチンは、ＥＣＵ３１の電源ＯＮ中（メインリレー３２のＯＮ中）に周期的に実行される。本ルーチンが起動されると、まずステップ４０１で、ＩＧスイッチ３３がＯＦＦ操作されたか否かを判定し、ＯＦＦ操作されていなければ、そのまま本ルーチンを終了する。その後、ＩＧスイッチ３３がＯＦＦ操作された時点で、ステップ４０２に進み、バックアップＲＡＭ３４に記憶されている各気筒の学習値マップの全領域の学習値ＧｄｌｒｎをＥＥＰＲＯＭ３５に保存した後、ステップ４０３に進み、メインリレー３２をＯＦＦして、ＥＣＵ３１への電源供給をＯＦＦする。
【００３２】
従って、本実施形態（１）では、ＩＧスイッチ３３のＯＮ中は、ＥＥＰＲＯＭ３５の学習値Ｇｄｌｒｎの記憶データが書き換えられず、ＩＧスイッチ３３のＯＦＦ操作時のみＥＥＰＲＯＭ３５の学習値Ｇｄｌｒｎの記憶データが書き換えられる。エンジン停止中は、車載バッテリが取り外されても、ＥＥＰＲＯＭ３５の学習値Ｇｄｌｒｎの記憶データが保持される。
【００３３】
エンジン停止中に、ＩＧスイッチ３３がＯＮ操作されると、メインリレー３２がＯＮされて、ＥＣＵ３１に電源が投入され、図８の初期化ルーチンが実行される。この初期化ルーチンによって、ＥＥＰＲＯＭ３５に保存されている前回のＩＧスイッチ３３のＯＦＦ操作時の学習値ＧｄｌｒｎのデータがバックアップＲＡＭ３４に書き込まれる。
【００３４】
以上説明した本実施形態（１）では、ＩＧスイッチ３３のＯＦＦ操作時にＥＥＰＲＯＭ３５に最新の学習値Ｇｄｌｒｎを保存し、ＩＧスイッチ３３のＯＮ操作時にＥＥＰＲＯＭ３５に保存されている最新の学習値ＧｄｌｒｎをバックアップＲＡＭ３４に書き込むようにしたので、エンジン停止中に車載バッテリが取り外されてバックアップＲＡＭ３４の学習値の記憶データが消えてしまっても、その後、バッテリを取り付けてエンジン１１を始動するときに、ＥＥＰＲＯＭ３５に保存されている最新の学習値ＧｄｌｒｎをバックアップＲＡＭ３４に書き込んで、始動直後から失火を精度良く検出することができる。しかも、ＩＧスイッチ３３のＯＦＦ操作時のみＥＥＰＲＯＭ３５の学習値Ｇｄｌｒｎの記憶データを書き換えるようにしたので、エンジン運転中の学習値Ｇｄｌｒｎの演算回数（ＲＡＭ３４の書き換え回数）が多くても、ＥＥＰＲＯＭ３５の学習値Ｇｄｌｒｎの書き換え回数を少ない回数に制限することができ、長期使用にも十分に耐え得る。
【００３５】
尚、本実施形態（１）では、エンジン運転中に演算した学習値ＧｄｌｒｎをバックアップＲＡＭ３４に記憶するようにしたが、ＥＣＵ３１に内蔵されたＲＡＭの記憶容量に余裕があれば、エンジン運転中に演算した学習値Ｇｄｌｒｎを、ＥＣＵ３１に内蔵されたＲＡＭ（バックアップ電源のないＲＡＭ）に記憶するようにしても良い。この場合、エンジン停止中にＲＡＭの学習値Ｇｄｌｒｎの記憶データが消えるが、ＩＧスイッチ３３のＯＮ操作時にＥＥＰＲＯＭ３５に保存されている学習値ＧｄｌｒｎをＲＡＭに書き込むようにすれば、本実施形態（１）と同じ効果を得ることができる。
【００３６】
また、回転変動検出値ｄｌｒｎ、学習値Ｇｄｌｒｎ、失火判定用の回転変動パラメータΔωの演算方法は、適宜変更しても良く、例えば、これらを回転角速度ではなく、クランク軸が所定クランク角回転するのに要した時間（周期）で表すようにしても良い。
【００３７】
［実施形態（２）］
上記実施形態（１）では、ＩＧスイッチ３３のＯＮ操作時にＥＥＰＲＯＭ３５に保存されている学習値ＧｄｌｒｎのデータをバックアップＲＡＭ３４に書き込むようにしたが、エンジン停止中に車載バッテリが取り外されなければ、エンジン停止中でも、バックアップＲＡＭ３４の学習値Ｇｄｌｒｎの記憶データが保持されるため、エンジン停止中に車載バッテリが取り外されたときのみ、ＥＥＰＲＯＭ３５に保存されている学習値ＧｄｌｒｎのデータをバックアップＲＡＭ３４に書き込むようにしても良い。
【００３８】
これを具体化した本発明の実施形態（２）では、図８の初期化ルーチンに換えて、図９の学習値回復ルーチンを実行する。図９の学習値回復ルーチンは、ＥＣＵ３１の電源ＯＮ中（メインリレー３２のＯＮ中）に所定時間毎（例えば１００ｍｓ毎）に実行される。本ルーチンが起動されると、まずステップ６０１で、車載バッテリが取り外されてバックアップＲＡＭ３４がクリアされたか否かを判定し、バックアップＲＡＭ３４がクリアされていなければ（車載バッテリが取り外されていなければ）、バックアップＲＡＭ３４の記憶データを書き換えずに本ルーチンを終了する。
【００３９】
これに対して、ステップ６０１で、バックアップＲＡＭ３４がクリアされた（車載バッテリが取り外された）と判定されれば、ステップ６０２に進み、ＥＥＰＲＯＭ３５に保存されている前回のＩＧスイッチ３３のＯＦＦ操作時の学習値ＧｄｌｒｎのデータをバックアップＲＡＭ３４に書き込む。
以上説明した本実施形態（２）でも、前記実施形態（１）と同じ効果を得ることができる。
【００４０】
［実施形態（３）］
上記実施形態（１）、（２）では、ＥＥＰＲＯＭ３５の学習値Ｇｄｌｒｎの記憶データを書き換えるタイミング（条件）をＩＧスイッチ３３のＯＦＦ操作時としたが、例えば、失火検出時にＥＥＰＲＯＭ３５の学習値Ｇｄｌｒｎの記憶データを書き換えるようにしても良い。
【００４１】
これを具体化した本発明の実施形態（３）では、前記図３の失火判定ルーチンによって失火を検出したときに、図１０の失火検出ルーチンを実行して、警告ランプ３７を点灯し（ステップ７０１）、失火検出時の運転条件のデータをバックアップＲＡＭ３４に記憶する（ステップ７０２）。この後、ステップ７０３に進み、今回のエンジン運転中に学習値ＧｄｌｒｎをＥＥＰＲＯＭ３５に保存したことがあるか否かを判定し、既に保存済みであれば、そのまま本ルーチンを終了する。
【００４２】
これに対して、今回のエンジン運転中に学習値ＧｄｌｒｎをＥＥＰＲＯＭ３５に保存したことがなければ、ステップ７０４に進み、失火検出時の学習値ＧｄｌｒｎのデータをＥＥＰＲＯＭ３５に保存する。
以上説明した本実施形態（３）でも、前記実施形態（１）と同じ効果を得ることができる。
【００４３】
［その他の実施形態］
ＥＥＰＲＯＭ３５の学習値Ｇｄｌｒｎの記憶データを書き換えるタイミング（条件）は、上記各実施形態に限定されず、例えば、走行回数（ＩＧスイッチ３３のＯＮ／ＯＦＦ回数）が所定回数に達する毎にＥＥＰＲＯＭ３５の学習値Ｇｄｌｒｎの記憶データを書き換えたり、或は、所定期間経過毎（例えば所定積算運転時間毎）又は所定距離走行毎にＥＥＰＲＯＭ３５の学習値Ｇｄｌｒｎの記憶データを書き換えるようにしたり、或は、学習値Ｇｄｌｒｎの変化量（又は演算回数）が所定値以上になる毎にＥＥＰＲＯＭ３５の学習値Ｇｄｌｒｎの記憶データを書き換えるようにしても良い。要は、車両の保証期間中のＥＥＰＲＯＭ３５の書き換え回数が保証回数以下となるように、適当な間隔をあけてＥＥＰＲＯＭ３５の学習値Ｇｄｌｒｎの記憶データを書き換えるようにすれば良い。
【００４４】
また、ＥＥＰＲＯＭ３５に、学習値Ｇｄｌｒｎの他に、失火検出時の運転条件のデータを保存するようにしても良く、この場合は、ＥＥＰＲＯＭ３５に保存されている学習値ＧｄｌｒｎのデータをバックアップＲＡＭ３４に書き込む際に、失火検出時の運転条件のデータも書き込むようにすると良い。
【００４５】
また、学習値Ｇｄｌｒｎのデータを保存する不揮発性メモリは、ＥＥＰＲＯＭ３５に限定されず、フラッシュメモリ等の他の書き換え可能な不揮発性メモリを使用しても良いことは言うまでもない。
【図面の簡単な説明】
【図１】本発明の実施形態（１）におけるエンジン制御システム全体の概略構成図
【図２】実施形態（１）のエンジン制御システムのブロック図
【図３】実施形態（１）の失火判定ルーチンの処理の流れを示すフローチャート
【図４】実施形態（１）の学習値記憶ルーチンの処理の流れを示すフローチャート
【図５】実施形態（１）の学習値マップの一例を概念的に示す図
【図６】実施形態（１）の失火検出ルーチンの処理の流れを示すフローチャート
【図７】実施形態（１）のＥＥＰＲＯＭ記憶ルーチンの処理の流れを示すフローチャート
【図８】実施形態（１）の初期化ルーチンの処理の流れを示すフローチャート
【図９】実施形態（２）の学習値回復ルーチンの処理の流れを示すフローチャート
【図１０】実施形態（３）の失火検出ルーチンの処理の流れを示すフローチャート
【符号の説明】
１１…エンジン（内燃機関）、１２…吸気管、１４…エアフローメータ、１５…スロットルバルブ、１８…吸気管圧力センサ、２０…燃料噴射弁、２１…点火プラグ、２２…排気管、２６…クランク角センサ、３１…ＥＣＵ（回転変動検出手段，学習手段，失火判定手段）、３２…メインリレー、３３…イグニッションスイッチ（ＩＧスイッチ）、３４…バックアップＲＡＭ（ＲＡＭ）、３５…ＥＥＰＲＯＭ（書き換え可能な不揮発性メモリ）、３６…バックアップ電源、３７…警告ランプ。
【図１】
2004232460.tif 000003
【図２】
2004232460.tif 000004
【図３】
2004232460.tif 000005
【図４】
2004232460.tif 000006
【図５】
2004232460.tif 000007
【図６】
2004232460.tif 000008
【図７】
2004232460.tif 000009
【図８】
2004232460.tif 000010
【図９】
2004232460.tif 000011
【図１０】
2004232460.tif 000012