(57)【要約】【課題】触媒の温度を検知する必要なく、内燃機関の触媒を早期に昇温させる制御における故障を検知する。【解決手段】内燃機関への吸入空気量を増やすと共に、該内燃機関の点火時期を該内燃機関の回転数に応じて遅角し、該内燃機関の排気系に設けられた触媒の温度を上昇させる触媒昇温制御が実施される。内燃機関の制御装置は、内燃機関への吸入空気量の目標値の積算値を算出し、さらに、内燃機関に実際に吸入される吸入空気量の積算値を算出する。吸入空気量の目標値の積算値と実際に吸入される吸入空気量の積算値との偏差に基づいて、触媒昇温制御の故障を判定する。【選択図】図１５
2005139920.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関が始動した時に該内燃機関への吸入空気量を増やすと共に、該内燃機関の点火時期を該内燃機関の回転数に応じて遅角し、排気系に設けられた触媒の温度を上昇させる触媒昇温制御を実施する内燃機関の制御装置において、
前記内燃機関への吸入空気量の目標値の積算値を算出する目標吸入空気量積算手段と、
前記内燃機関に実際に吸入される吸入空気量の積算値を算出する実吸入空気量積算手段と、
前記吸入空気量の目標値の積算値と、前記実際に吸入される吸入空気量の積算値との偏差に基づいて、前記触媒昇温制御の故障を判定する故障判定手段と、
を備える、内燃機関の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、内燃機関の排気系に設けられた触媒を早期に暖める制御における故障を検知する装置に関する。
【背景技術】
【０００２】
内燃機関の排気系に設けられた触媒は、低温では不活性状態にある。このような不活性状態にある触媒は、浄化作用を発揮しない。したがって、内燃機関を始動した時には、触媒の温度を早期に上昇させて該触媒を活性化させるのが望ましい。
【０００３】
触媒の温度を急速に上昇させる触媒昇温制御が提案されている。下記の特許文献１および２に記載された触媒昇温制御では、内燃機関が始動した直後に、内燃機関への吸入空気量を通常のアイドル状態よりも増加させると共に、内燃機関の回転数が目標回転数と一致するように点火時期を遅角方向にフィードバック制御する。
【０００４】
このような触媒昇温制御に何らかの不具合があると、触媒の活性化に遅れが生じ、不所望な成分を含むガスが排気されるおそれがある。下記の特許文献２には、このような触媒昇温制御における故障を検知する手法が示されている。この手法によると、推定された触媒温度と、検出された触媒温度との偏差を算出し、該偏差の絶対値が所定値よりも大きいとき、故障と判断する。
【特許文献１】特開平１０−２９９６３１号公報
【特許文献２】特開２００１−１３２４３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来の手法によると、触媒の温度を測定するセンサが必要となり、コスト高を招く。したがって、このようなコスト高を招くことなく、触媒昇温制御における故障を検知することができる装置が必要とされている。
【課題を解決するための手段】
【０００６】
この発明の一つの側面によると、内燃機関の制御装置は、内燃機関への吸入空気量を増やすと共に、該内燃機関の点火時期を該内燃機関の回転数に応じて遅角し、該内燃機関の排気系に設けられた触媒の温度を上昇させる触媒昇温制御を実施する。内燃機関の制御装置は、内燃機関への吸入空気量の目標値の積算値を算出する手段と、内燃機関に実際に吸入される吸入空気量の積算値を算出する手段と、吸入空気量の目標値の積算値と実際に吸入される吸入空気量の積算値との偏差に基づいて、該触媒昇温制御の故障を判定する故障判定手段と、を備える。
【０００７】
この発明によれば、触媒の温度を検出するセンサを車両に設ける必要がない。したがって、コスト高を招くことなく、触媒昇温制御の故障を検出することができる。
【発明を実施するための最良の形態】
【０００８】
次に図面を参照してこの発明の実施の形態を説明する。図１は、この発明の実施形態による内燃機関（以下、「エンジン」という）およびその制御装置の全体的なシステム構成図である。
【０００９】
電子制御ユニット（以下、「ＥＣＵ」）という）１は、車両の各部から送られてくるデータを受け入れる入力インターフェース１ａ、車両の各部の制御を行うための演算を実行するＣＰＵ１ｂ、読み取り専用メモリ（ＲＯＭ）および一時記憶用のランダムアクセスメモリ（ＲＡＭ）を有するメモリ１ｃ、および車両の各部に制御信号を送る出力インターフェース１ｄを備えている。ＲＯＭには、車両の各部の制御を行うためのプログラムおよび各種のデータが格納されている。この発明に従う触媒昇温制御および該制御の故障を判定するためのプログラム、および該プログラムの実行の際に用いるデータおよびテーブルは、このＲＯＭに格納されている。読み取り専用メモリは、ＥＰＲＯＭのような書き換え可能なＲＯＭであってもよい。ＲＡＭには、ＣＰＵ１ａによる演算の作業領域が設けられ、車両の各部から送られてくるデータおよび車両の各部に送り出す制御信号が一時的に記憶される。
【００１０】
エンジン２は、たとえば４気筒を備えるエンジンであり、吸気管３が連結されている。吸気管３の上流側にはスロットル弁４が設けられている。スロットル弁４に連結されたスロットル弁開度センサ（θＴＨ）５は、スロットル弁４の開度を検出し、これをＥＣＵ１に供給する。
【００１１】
吸気管３には、スロットル弁４をバイパスする通路６が設けられている。バイパス通路６には、エンジン２に吸入する空気量を制御するためのバイパス弁７が設けられている。バイパス弁７の開度は、ＥＣＵ１からの制御信号によって制御される。
【００１２】
燃料噴射弁８は、エンジン２とスロットル弁４の間に気筒毎に設けられている。燃料噴射弁８は、図示しない燃料タンクから燃料の供給を受ける。燃料噴射弁８の開弁時間は、ＥＣＵ１からの制御信号によって制御される。
【００１３】
スロットル弁４の上流には、エアフローメータ（ＡＦＭ）９が設けられている。エアフローメータ９は、スロットル弁４およびバイパス弁７を通過する空気量を検出し、それをＥＣＵ１に送る。エアフローメータ９は、ベーン式エアフローメータ、カルマン渦式エアフローメータ、および熱線式エアフローメータ等であることができる。
【００１４】
吸気管圧力（Ｐｂ）センサ１０および吸気温（Ｔａ）センサ１１は、吸気管３のスロットル弁４の下流側に設けられており、吸気管圧力Ｐｂおよび吸気温ＴＡをそれぞれ検出し、それをＥＣＵ１に送る。
【００１５】
エンジン水温（ＴＷ）センサ１２は、エンジン２のシリンダブロックの、冷却水が充満した気筒周壁（図示せず）に取り付けられ、エンジン冷却水の温度ＴＷを検出し、それをＥＣＵ１に送る。
【００１６】
エンジン２には、クランク角（ＣＲＫ）センサ１３が設けられている。クランク角センサ１３は、クランクシャフトの回転に伴い、パルス信号であるＣＲＫ信号およびＴＤＣ信号をＥＣＵ１に出力する。ＣＲＫ信号は、所定のクランク角（たとえば、３０度）で出力されるパルス信号である。ＥＣＵ１は、該ＣＲＫ信号に応じ、エンジン２の回転数ＮＥを算出する。さらに、ＴＤＣ信号が、ピストンのＴＤＣ位置に関連したクランク角度で出力され、ＥＣＵ１に送られる。
【００１７】
点火プラグ１４は、エンジン２の気筒毎に設けられている。点火プラグ１４は、ＥＣＵ１からの点火信号に従って駆動される。
【００１８】
エンジン２の下流側には排気管１５が連結されている。エンジン２は、排気管１５に設けられた排気ガス浄化装置である三元触媒１６を介して排気する。
【００１９】
広域空燃比センサ（ＬＡＦ）センサ１７は、触媒装置１６の上流に設けられている。ＬＡＦセンサ１７は、リーンからリッチにわたる広範囲の空燃比を検出し、これをＥＣＵ１に送る。
【００２０】
Ｏ２（排ガス）センサ１８は、触媒装置１６の下流に設けられている。Ｏ２センサ１８は２値型の排気ガス濃度センサである。Ｏ２センサ１８は、空燃比が理論空燃比よりもリッチであるとき高レベルの信号を出力し、空燃比が理論空燃比よりもリーンであるとき低レベルの信号を出力する。出力された電気信号は、ＥＣＵ１に送られる。
【００２１】
エンジン２によって駆動される車両の走行速度（車速）ＶＰを検出するセンサ１９、大気圧（Ｐａ）を検出するセンサ２０、および該車両の自動変速機のシフト位置を検出するシフト位置センサ２１がＥＣＵ１に接続されており、これらのセンサからの検出信号はＥＣＵ１に送られる。
【００２２】
ＥＣＵ１に向けて送られた信号は入力インターフェース１ａに渡される。入力インターフェース１ａは、アナログ信号値をデジタル信号値に変換する。ＣＰＵ１ｂは、変換されたデジタル信号を処理し、メモリ１ｃに格納されているプログラムに従って演算を実行し、車両の各部のアクチュエータに送る制御信号を作り出す。出力インターフェース１ｄは、これらの制御信号を、バイパス弁７、燃料噴射弁８、点火プラグ１４、およびその他のアクチュエータに送る。
【００２３】
図２は、本発明の一実施形態に従う触媒昇温制御の故障を検知する装置の機能ブロック図である。
【００２４】
触媒昇温装置３１は、エンジン２の点火時期を制御する点火時期制御部３２およびエンジン２への吸入空気量を制御する吸入空気量制御部３３を備えている。内燃機関が始動した直後、吸入空気量制御部３３は、吸入空気量を増大させる。それと同時に、点火時期制御部３２は、エンジン２の回転数が目標値に収束するように、点火時期を遅角方向に制御する。こうして、エンジン２から排気されるガスによって、触媒１６の温度を早期に上昇させる。
【００２５】
点火時期制御部３２は、式（１）に従い、点火時期ＩＧＬＯＧを算出する。
【００２６】
ＩＧＬＯＧ＝ＩＧＭＡＰ＋ＩＧＣＲ＋ＩＧＦＰＩ    （１）
ＩＧＭＡＰは、エンジン回転数ＮＥおよび吸気管圧力ＰＢに基づいて設定されたマップを検索して得られる基本値であり、上死点からの進角量で示される。ＩＧＦＰＩは、触媒昇温制御が実施されるモード（以下、ＦＩＲＥモードと呼ぶ）において、エンジン回転数ＮＥが目標回転数ＮＥＦＩＲに一致するように負の値に設定される遅角補正項である。ＩＧＣＲは、その他の補正項である。（ＩＧＭＡＰ＋ＩＧＣＲ）が、ＦＩＲＥモードではない通常の動作モードで用いられる点火時期に相当する。点火時期制御部３２は、点火時期ＩＧＬＯＧに基づいて、駆動信号を点火プラグ１４に供給する。
【００２７】
吸入空気量制御部３３は、エンジンの運転状態に応じてバイパス弁７の開弁量を制御するための開弁制御量ＩＣＭＤを算出し、該開弁制御量に応じた駆動信号を、バイパス弁７に供給する。バイパス弁７を介してエンジン２に吸入される空気量は、開弁制御量ＩＣＭＤに比例する。ＦＩＲＥモードにおいては、吸入空気量制御部３３は、式（２）に従って開弁制御量ＩＣＭＤを算出する。
【００２８】
ＩＣＭＤ＝（ＩＦＩＲ＋ＩＬＯＡＤ）×ＫＩＰＡ＋ＩＰＡ    （２）
ＩＦＩＲは、ＦＩＲＥモードおよび該ＦＩＲＥモードモードが終了した直後の過渡状態で使用されるＦＩＲＥモード制御項である。ＩＬＯＡＤは、エンジン２に印加される電気負荷、空調装置のコンプレッサ負荷、パワーステアリング負荷、および自動変速機のインギヤ状態に応じて設定される負荷補正項である。ＫＩＰＡおよびＩＰＡは、共に、大気圧に応じて設定される補正項である。
【００２９】
故障判定装置３５は、触媒昇温装置３１により実施される触媒昇温制御における何らかの故障を検知する。目標吸入空気量積算部３６は、式（３）に従って、エンジン２への吸入空気量の目標値（以下、目標吸入空気量と呼ぶ）ＱＡＩＲＣＭＤを算出し、さらに、式（４）に従って、目標吸入空気量の積算値ＱＧＡＩＲＣＭＤを算出する。
【００３０】
ＱＡＩＲＣＭＤ＝ＩＦＩＲ×吸気密度補正係数×差圧補正係数    （３）
ＱＧＡＩＲＣＭＤの今回値＝
ＱＧＡＩＲＣＭＤの前回値＋ＱＡＩＲＣＭＤ    （４）
ＩＦＩＲは、前述したように、吸入空気量制御部３３によって算出される、ＦＩＲＥモード制御項である。吸気密度補正係数は、吸気温度ＴＡに応じて設定される補正係数である。差圧補正係数は、大気圧と吸気管圧力との間の差圧に応じて設定される補正係数である。他の補正係数を用いてもよい。たとえば、大気圧に応じて設定される補正係数を用いることもできる。
【００３１】
実吸入空気量積算部３７は、エンジン２に実際に吸入される吸入空気量ＱＡＩＲを、たとえばエアフローメータ９の検出値を平均することにより算出する。平均は、移動平均法などの既知の手法を用いて行うことができる。実吸入空気量積算部３７は、さらに、実吸入空気量の積算値ＱＧＡＩＲを、式（５）に従って算出する。
【００３２】
ＱＧＡＩＲの今回値＝ＱＧＡＩＲの前回値＋ＱＡＩＲ    （５）
代替的に、燃料噴射弁８の基本燃料噴射時間ＴＩおよびエンジン２の回転数ＮＥに基づいて、エンジン２に実際に吸入される吸入空気量ＱＡＩＲを推定してもよい。基本燃料噴射時間は、エンジンの運転状態（たとえば、エンジン回転数ＮＥおよび吸気管圧力ＰＢ）に基づいて、エンジン２に供給される混合気の空燃比がほぼ理論空燃比になるよう設定される。
【００３３】
故障判定部３８は、目標吸入空気量の積算値ＱＧＡＩＲＣＭＤと、実吸入空気量の積算値ＱＧＡＩＲとの偏差に基づき、触媒昇温装置３１により実施される触媒昇温制御の故障を判定する。
【００３４】
図３は、触媒昇温制御が実施されている時の各種パラメータの挙動を示す。時刻ｔ０において、スタータモータによりクランキングさせると、車両は始動モードに入る。始動モードは、アクセルペダルが操作されていないアイドリング状態を示している。この状態では、スロットル弁４の開度はゼロであり、よってバイパス弁７のみを介して吸気が行われる。時刻ｔ１においてエンジンの完爆が確認されると、アイドリング運転を行いながらＦＩＲＥモードに移行する。ＦＩＲＥモードにおいて、触媒昇温制御が実施される。
【００３５】
ＦＩＲＥモードに入ると、バイパス弁７の開度は、増大するよう制御される。通常のアイドリング運転時よりも大きな開度に設定して吸入空気量を増やすことにより、排ガスの熱量を増やすためである。吸入空気量ＱＡＩＲの増大に伴い、エンジン回転数ＮＥが増大する。エンジン回転数ＮＥが、予め決められた値（ＮＯＢＪ＋ＮＥＦＰＩＳＴ）に達する時点ｔ２において、点火時期フィードバック制御が開始される。吸入空気量を増大した後、バイパス弁７の開度は、徐々に減らされるよう制御される。
【００３６】
点火時期制御が開始されると、回転数についての目標値ＮＥＦＩＲは、ＮＯＢＪまで漸減される。実回転数ＮＥが目標値ＮＥＦＩＲに収束するように、遅角補正項ＩＧＦＰＩが算出される。点火時期ＩＧＬＯＧは、該遅角補正項ＩＧＦＰＩにより補正される。その結果、点火時期ＩＧＬＯＧは、通常の制御値（ＩＧＭＡＰ＋ＩＧＣＲ）よりも遅角側に制御される。点火時期ＩＧＬＯＧに従って、点火プラグ１４による点火が実施される。
【００３７】
ＦＩＲＥモードは、所定時間継続し、時刻ｔ３にて終了する。時刻ｔ３において、通常の動作モードが開始される。通常の動作モードでは、点火時期は、進角側の値に徐々に戻される。
【００３８】
前述したように、吸入空気量は、バイパス弁７の開弁制御量ＩＣＭＤに従って制御される。開弁制御量ＩＣＭＤは、ＦＩＲＥモード制御項ＩＦＩＲに基づいて算出される。すなわち、ＦＩＲＥモード制御項ＩＦＩＲに従って、吸入空気量の大きさが主に決まる。
【００３９】
触媒昇温制御が正常に動作していれば、実吸入空気量ＱＡＩＲは、ＦＩＲＥモード制御項ＩＦＩＲに基づいて算出される目標吸入空気量ＱＡＩＲＣＭＤと一致するはずである。しかしながら、触媒昇温制御が正常に動作していない時は、図に示されるように、実吸入空気量ＱＡＩＲと目標吸入空気量ＱＡＩＲＣＭＤとの間に偏差が生じる。その結果、実吸入空気量の積算値ＱＧＡＩＲと目標吸入空気量の積算値ＱＧＡＩＲＣＭＤの間に、図に示されるような偏差ＤＧＡＩＲが生じる。該偏差ＤＧＡＩＲが、エンジンの運転状態に基づいて設定されたしきい値ＴＨＡＩＲより大きい時、触媒昇温制御に何らかの故障が生じたと判定することができる。
【００４０】
積算値に基づいて故障判定を実施することにより、実吸入空気量および目標吸入空気量に何らかの誤差が含まれていても、より高い精度で故障判定を行うことができる。
【００４１】
図４の（ａ）は、しきい値ＴＨＡＩＲのマップの一例を示す。該マップは、メモリ１ｃに記憶される。この例では、しきい値は、算出された目標吸入空気量の積算値ＱＧＡＩＲＣＭＤに基づいて決定される。該マップは、目標吸入空気量の積算値が増加するにつれ、しきい値ＴＨＡＩＲが増加するよう設定されている。図３に示されるように、触媒昇温制御に何らかの故障があるとき、時間の経過と共に目標吸入空気量の積算値が大きくなるほど、偏差ＤＧＡＩＲが大きくなる傾向があるからである。
【００４２】
一実施例では、故障判定を実施するタイミングに応じて、しきい値について異なるマップを用意する。図３に示されるように、ＦＩＲＥモード開始からの経過時間が長いほど、偏差ＤＧＡＩＲは大きくなる傾向がある。したがって、経過時間が長くなるほど、しきい値は大きくなるよう設定される。たとえば、ＦＩＲＥモードを開始してから２０秒後に故障判定を実施する場合のマップと、４０秒後に故障判定を実施する場合のマップとがメモリに記憶される。ＦＩＲＥモードの開始から２０秒後に故障判定を実施するとき、目標吸入空気量の積算値ＱＧＡＩＲＣＭＤが２００リットルならば、しきい値は５０リットルに設定される。ＦＩＲＥモードの開始から４０秒後に故障判定を実施するとき、目標吸入空気量の積算値ＱＧＡＩＲＣＭＤが４００リットルならば、しきい値は１００リットルに設定される。
【００４３】
目標吸入空気量の積算値ＱＧＡＩＲＣＭＤの代わりに、エンジンが始動したときの水温に基づいてしきい値を設定してもよい。エンジン水温が低くなるほど、目標吸入空気量の積算値は大きくなる傾向がある。したがって、始動時のエンジン水温が低くなるほどしきい値が増加するよう規定されたマップをメモリ１ｃに記憶しておくことができる。始動時のエンジン水温に代わりに、始動時の吸気温を用いてもよい。
【００４４】
偏差についてのしきい値は、所望のエミッションを達成するよう設定されるのが好ましい。図４の（ｂ）に示されるように、偏差ＤＧＡＩＲが大きくなるほど、不所望な成分のエミッションが増加する傾向がある。したがって、このようなエミッションをどの程度抑制するかを決めることにより、所望の偏差が決まる。たとえば、エミッションの上限値ＥＭ１に対応する偏差ＤＧＡＩＲが、ＤＧ１であるとする。しきい値は、ＤＧ１以下になるように設定される。具体的には、図４の（ａ）において、所与の目標吸入空気量積算値ＱＧＡＩＲＣＭＤに対応するしきい値が、ＤＧ１以下になるように設定される。
【００４５】
触媒昇温制御の故障には、吸入空気量および点火時期を制御するのに関連する機械要素および該制御を実施するためのプログラム等の異常、誤動作などを含む。たとえば、バイパス弁または該バイパス弁を駆動するアクチュエータにおける故障を含むことができる。また、ＥＣＵ１の誤動作または制御プログラムの異常を含むことができる。
【００４６】
ＦＩＲＥモードにおいて、実吸入空気量の積算値ＱＧＡＩＲと目標吸入空気量の積算値ＱＧＡＩＲＣＭＤとの間の偏差が大きいと、空気量不足により触媒の活性化に遅れが生じるおそれがある。これは、不所望な成分のガスを排気するおそれがある。本願発明によれば、このような不適切な状態を検出して運転者に知らせることができる。
【００４７】
図５〜図１１を参照して、触媒昇温制御のプロセスの詳細を説明する。
【００４８】
図５は、触媒を早期に活性化させる際に吸気量を制御するための制御量ＩＦＩＲを算出するためのメインルーチンを示す。このルーチンは、ＴＤＣ信号に同期して実行される。
【００４９】
ステップＳ１１では、ＦＩＲＥモードの判別処理（図６）を実行する。該判別処理では、フラグＦＦＩＲＥＯＮが設定される。フラグＦＦＩＲＥＯＮは、ＦＩＲＥモードの実行が許可された時に値１に設定されるフラグである。
【００５０】
ステップＳ１２において、ＦＦＩＲＥＯＮ＝０ならば、ＦＩＲＥモードの実行が許可されていないことを示し、ステップＳ２６に進む。ＦＦＩＲＥＯＮ＝１ならば、ＦＩＲＥモードの実行が許可されたことを示し、ステップＳ１３に進む。
【００５１】
ステップＳ１３では、フラグＦＦＩＲＱＵＩＴにゼロを設定する。フラグＦＦＩＲＱＵＩＴは、ＦＩＲＥモード終了直後の過渡制御が実行されている時に値１に設定されるフラグである。ステップＳ１４において、ＦＩＲＥモード制御項ＩＦＩＲを算出する（図７）。
【００５２】
ステップＳ１５において、ＦＩＲＥモード制御項ＩＦＩＲが、エンジン水温ＴＷに基づいて設定されるエンジン水温制御項ＩＴＷ（これは、ＦＩＲＥモード以外のアイドル運転中などにおいて、バイパス弁７の制御に使用される）から所定値ＤＩＦＩＲＬ（たとえば、空気量１００リットル／ｍｉｎに相当する値）を減算した値以下かどうかを判断する。ＩＦＩＲ＞（ＩＴＷ−ＤＩＦＩＲＬ）ならば、直ちに本処理を終了する。ＩＦＩＲ≦（ＩＴＷ−ＤＩＦＩＲＬ）ならば、ステップＳ１６に進み、ＦＩＲＥモード制御項ＩＦＩＲに、（ＩＴＷ−ＤＩＦＩＲＬ）を設定する。こうして、ＦＩＲＥモード制御項ＩＦＩＲが、下限値（ＩＴＷ−ＤＩＦＩＲＬ）により制限される。
【００５３】
ステップＳ２６では、エンジン水温制御項ＩＴＷが、所定の上限値ＩＦＩＲＩＮＩＨ（たとえば、吸入空気量６００リットル／ｍｉｎに相当する値）より小さいかどうか判断する。ＩＴＷ＜ＩＦＩＲＩＮＩＨならば、エンジン水温制御項ＩＴＷを初期値ＩＦＩＲＩＮＩに設定し（Ｓ２７）、ＩＴＷ≧ＩＦＩＲＩＮＩＨならば、該上限値ＩＦＩＲＩＮＩＨを初期値ＩＦＩＲＩＮＩに設定する（Ｓ２８）。ステップＳ２９では、減算補正値ＩＦＩＲＤＥＣにゼロを設定する。
【００５４】
ステップＳ３１〜Ｓ３８において、前述した過渡制御についてのプロセスが実行される。ステップＳ３１およびＳ３２において、フラグＦＦＩＲＱＵＩＴの値が１の時は、過渡制御が実行中であることを示し、ステップＳ３５に進む。フラグＦＦＩＲＱＵＩＴの値がゼロであり、かつフラグＦＦＩＲＯＮの前回値が１ならば、過渡制御を実行するため、フラグＦＦＩＲＱＵＩＴに値１を設定する（Ｓ３３）。フラグＦＦＩＲＱＵＩＴの値がゼロであり、かつフラグＦＦＩＲＯＮの前回値がゼロならば、ＦＩＲＥモードの継続回数をカウントするためのカウンタＣＦＩＲＯＮにゼロを設定し（Ｓ３４）、フラグＦＦＩＲＱＵＩＴをゼロに設定して（Ｓ３９）、本処理を終了する。
【００５５】
ステップＳ３５において、点火時期の遅角補正項ＩＧＦＰＩが、過渡制御の終了を判定するためのしきい値ＩＧＦＰＩＱＨ（たとえば、−３度）より大きいかどうかを判断する。ＩＧＦＰＩ＞ＩＧＦＰＩＱＨならば、遅角補正項ＩＧＦＰＩの絶対値が小さい（遅角量が小さい）ことを示し、過渡制御を終了するためにステップＳ３９に進む。
【００５６】
ＩＧＦＰＩ≦ＩＧＦＰＩＱＨならば、エンジン水温ＴＷに基づいて図１２に示すＤＦＩＲＱＵテーブルを参照し、過渡制御用の減算値ＤＦＩＲＱＵを求める。減算値ＤＦＩＲＱＵは、エンジン水温が高くなるほど減少するように設定されている。ＤＦＩＲＱＵｍａｘ、ＤＦＩＲＱＵｍｉｎおよびＴＷＤＦ０、ＴＷＤＦ１は、それぞれ、たとえば吸入空気量５リットル／ｍｉｎに相当する値、２リットル／ｍｉｎに相当する値、２８℃および６２℃に設定される。
【００５７】
ステップＳ３７において、ＦＩＲＥモード制御項ＩＦＩＲを、減算値ＤＦＩＲＱＵだけデクリメントする。ステップＳ３８において、ＦＩＲＥモード制御項ＩＦＩＲが、エンジン水温制御項ＩＴＷから所定値ＤＩＦＩＲＬを減算して得られる値以下かどうかを調べる。ＩＦＩＲ≦（ＩＴＷ−ＤＩＦＩＲＬ）ならば、ステップＳ３９を実行して本処理を終了する。ＩＦＩＲ＞（ＩＴＷ−ＤＩＦＩＲＬ）ならば、直ちに本処理を終了する。こうして、ＩＦＩＲが下限値（ＩＴＷ−ＤＩＦＩＲＬ）を下回ったときは、過渡制御を終了する。
【００５８】
このように、過渡制御が実行されると、ＦＩＲＥモードで増量した吸入空気量が、徐々に通常の値に戻される。
【００５９】
図６は、図５のステップＳ１１で実行されるＦＩＲＥモード判別処理のフローチャートを示す。ステップＳ４１では、何らかの異常が現在検知されているかどうかを判断する。たとえば、吸気管圧力センサおよびスロットル開度センサなどのセンサの故障、スロットル弁に関する何らかの異常等が検知されているかどうかを判断する。このような異常が検知されていなければ、ステップＳ４２で、エンジン２が始動モード（すなわち、クランキング中）にあるかどうかを判断する。
【００６０】
ステップＳ４１またはＳ４２の答えがＹＥＳならば、エンジン水温ＴＷに基づいて、図１３の（ａ）に示されるようなＴＦＩＲＥＮＤテーブルを参照し、ＦＩＲＥモードを終了する時間ＴＦＩＲＥＮＤを求める（Ｓ４３）。ＴＦＩＲＥＮＤテーブルは、エンジン水温ＴＷが高くなるほど終了時間ＴＦＩＲＥＮＤが短くなるよう設定されている。ＴＦＩＲＥＮＤｍａｘおよびＴＦＩＲＥＮＤｍｉｎは、それぞれ、たとえば５０秒および２秒に設定される。ＴＷ０およびＴＷ１は、それぞれ、たとえば−１０℃および７５℃に設定される。
【００６１】
ステップＳ４４では、フラグＦＦＩＲＥＮＤをゼロに設定し、さらにステップＳ５６でフラグＦＦＩＲＥＯＮをゼロに設定して、本処理を終了する。フラグＦＦＩＲＥＮＤは、ＦＩＲＥモードを終了する時に値１が設定されるフラグである。こうして、故障がすでに検知されている時、またはエンジン２が始動モードにある時は、ＦＩＲＥモードの実行は許可されない。
【００６２】
ステップＳ４１およびＳ４２の両方の答えがＮＯならば、フラグＦＦＩＲＥＮＤの値を調べる。ＦＦＩＲＥＮＤ＝１であるならば、直ちにステップＳ５６に進んで、フラグＦＦＩＲＥＯＮにゼロを設定する。ＦＦＩＲＥＮＤ＝０であるならば、始動モードの終了時点（すなわち、クランキング終了時点）からの経過時間を計測するアップカウントタイマＴＭ２０ＴＣＲの値が、ステップＳ４３で求めたＦＩＲＥモード終了時間ＴＦＩＲＥＮＤを超えたかどうかを調べる。ＴＭ２０ＴＣＲ＞ＴＦＩＲＥＮＤならば、終了フラグＦＦＩＲＥＮＤに値１を設定してＦＩＲＥモードを終了し、ステップＳ５６に進む。
【００６３】
ステップＳ４６でＴＭ２０ＴＣＲ≦ＴＦＩＲＥＮＤならば、フラグＦＦＩＲＥＮＤにゼロを設定する（Ｓ４７）。ステップＳ４９において、エンジン回転数が所定の下限値ＮＥＦＩＲＬ（例えば、７００ｒｐｍ）以上かどうかを判断する。ＮＥ＜ＮＥＦＩＲＬならば、ステップＳ５６に進む。ＮＥ≧ＮＥＦＩＲＬならば、カウンタＣＦＩＲＯＮを１だけインクリメントする（Ｓ５０）。ステップＳ５１において、カウンタＣＦＩＲＯＮの値に基づいて、図１３の（ｂ）に示されるようなＫＭＦＩＲテーブルを参照し、補正係数ＫＭＦＩＲを求める。ＫＭＦＩＲテーブルは、カウンタＣＦＩＲＯＮが増加するに従って、補正係数ＫＭＦＩＲが増加した後に減少するように設定されている。ＫＭＦＩＲｍａｘ、ＫＭＦＩＲｍｉｎ、およびｎ１は、それぞれ、たとえば２．６２５、１．０および２０００に設定される。
【００６４】
ステップＳ５２では、吸気温ＴＡに基づいて、図１３の（ｃ）に示されるようなＫＴＡＦＩＲテーブルを参照し、補正係数ＫＴＡＦＩＲを求める。ＫＴＡＦＩＲテーブルは、吸気温ＴＡが増加するほど補正係数ＫＴＡＦＩＲが増加するように設定されている。ＫＴＡＦＩＲｍａｘ、ＫＴＡＦＩＲｍｉｎ、ＴＡ０およびＴＡ１は、それぞれ、たとえば２．０、１．０、−１０℃および８０℃に設定される。
【００６５】
ステップＳ５３では、車速が所定値ＶＦＩＲＨ（たとえば、５ｋｍ／ｈ）以上かどうかを調べる。ＶＰ＜ＶＦＩＲＨの時は、フラグＦＩＤＬＥの値を調べる。フラグＦＩＤＬＥは、エンジン２がアイドル状態である時に値１が設定されるフラグである。ＶＰ≧ＶＦＩＲＨで有るとき、またはエンジン２がアイドル状態でない時は、ステップＳ５６に進み、ＦＩＲＥモードを行わないようにする。ＶＰ＜ＶＦＩＲＨであり、かつエンジン２がアイドル状態に有るときは、ステップＳ５５でフラグＦＦＩＲＥＯＮを値１に設定し、ＦＩＲＥモードを許可する。
【００６６】
図７は、図５のステップＳ１４におけるＩＦＩＲ算出ルーチンのフローチャートである。ステップＳ６１では、失火発生が検出されているかどうかを調べる。失火発生は、クランク角３０°毎に発生するＣＲＫ信号の発生間隔の変動に基づいて既知の手法で検出されることができる。失火発生が検出されていない時は、点火時期ＩＧＬＯＧが、所定の下限値ＩＧＬＧＧ（たとえば、−２０ｄｅｇ）に判定値ＩＧＦＩＲＤＥＣ（たとえば、１度）を加算した値以上かどうかを調べる（Ｓ６２）。
【００６７】
失火が発生しておらず、かつＩＧＬＯＧ≧（ＩＧＬＧＧ＋ＩＧＦＩＲＤＥＣ）であるならば、直ちにステップＳ６４に進む。失火が発生している時、またはＩＧＬＯＧ＜（ＩＧＬＧＧ＋ＩＧＦＩＲＤＥＣ）である時（すなわち、点火時期ＩＧＬＯＧが、下限値ＩＧＬＧＧ近傍に張り付いているとき）は、ステップＳ６３において、補正値ＩＦＩＲＤＥＣ（＞０）を所定量ＤＦＩＲＤＥＣだけインクリメントして、ステップＳ６４に進む。
【００６８】
ステップＳ６４では、ＦＩＲＥモード制御項ＩＦＩＲの基本値ＩＦＩＲＢＳを、式（６）に従って算出する。
【００６９】
ＩＦＩＲＢＳ＝
ＩＦＩＲＩＮＩ×（１＋（ＫＭＦＩＲ−１）×ＫＴＡＦＩＲ）    （６）
ＫＭＦＩＲおよびＫＴＡＦＩＲは、図６のステップＳ５１およびＳ５２で算出された補正係数であり、ＩＦＩＲＩＮＩは、図５のステップＳ２７またはＳ２８で設定される初期値である。補正係数ＫＭＦＩＲは、ＦＩＲＥモードの継続時間を示すカウンタＣＦＩＲＯＮの値が増加するに従って、図１３の（ｂ）に示されるように変化するので、吸入空気量は、ＦＩＲＥモードの開始から徐々に増加し、その後徐々に減少するように制御される（図３を参照）。
【００７０】
ステップＳ６５では、基本値ＩＦＩＲＢＳから、ステップＳ６３で更新される補正値ＩＦＩＲＤＥＣを減算することにより、ＦＩＲＥモード制御項ＩＦＩＲを算出する。こうして、失火が発生している時、または点火時期ＩＧＬＯＧが下限値近傍にあるときは、吸入空気量を減らすようにする。これにより、未燃焼の燃料の排出量を抑制することができる。さらに、点火時期ＩＧＬＯＧの遅角補正が不能となる（すなわち、エンジン回転数ＮＥを目標値ＮＥＦＩＲに一致させることができなくなる）事態を回避することができる。
【００７１】
図８は、触媒を早期に活性化させる際に点火時期を制御する処理のフローチャートを示す。この処理は、ＴＤＣ信号の発生に同期して実行される。
【００７２】
ステップＳ７１では、エンジン回転数ＮＥおよび吸気管圧力ＰＢに基づいて、図示しない所定のマップを参照し、式（１）に示される基本値ＩＧＭＡＰを求める。ステップＳ７２では、補正項ＩＧＣＲを算出する。ステップＳ７３において、エンジン回転数ＮＥが目標値ＮＥＦＩＲに収束するよう点火時期を制御するフィードバック（ＦＢ）制御について、実施条件が成立しているかどうかを判断する処理（図９）を実施する。実施条件が成立すると、フラグＦＦＩＲＥＮＥＦＢが値１に設定される。
【００７３】
ステップＳ７４において、ＦＦＩＲＥＮＥＦＢ＝０ならば、フィードバック制御を実施しないので、遅角補正項ＩＧＦＰＩをゼロに設定する（Ｓ７５）。ＦＦＩＲＥＮＥＦＢ＝１ならば、フィードバック制御を実施して、遅角補正項ＩＧＦＰＩを算出する（Ｓ７６）。ステップＳ７７において、前述した式（１）に従い、点火時期ＩＧＬＯＧを算出する。
【００７４】
図９は、図８のステップＳ７３で実行されるＦＢ制御実施条件判断処理のフローチャートである。ステップＳ９１では、フラグＦＦＩＲＥＯＮの値が１であるかどうかを調べる。ＦＦＩＲＥＯＮ＝０であるならば、ＦＩＲＥモードでないことを示し、ステップＳ１０３でフラグＦＦＩＲＱＵＩＴの値が１であるかどうかを調べる。ＦＦＩＲＱＵＩＴ＝０であるならば、過渡制御中でないことを示し、フィードバック制御フラグＦＦＩＲＥＮＥＦＢおよび目標回転数フラグＦＮＯＥＮＥＦＩＲをゼロに設定する（Ｓ１０５）。目標回転数フラグＦＮＯＥＮＥＦＩＲは、目標回転数を増加させない時に値１に設定されるフラグである。
【００７５】
ステップＳ１０３でＦＦＩＲＱＵＩＴ＝１であるならば、過渡制御中であることを示し、スロットル弁の開度θＴＨが所定値θＴＨＦＩＲ（たとえば、０．８８ｄｅｇ）以上かどうかを判断する（Ｓ１０４）。θＴＨ＜θＴＨＦＩＲであるならば、スロットル弁がほぼ全閉状態にあることを示し、直ちに本処理を終了する。この場合、ＦＩＲＥモードフラグＦＦＩＲＥＯＮがゼロであっても、フィードバック制御フラグＦＦＩＲＥＮＥＦＢには値１が維持されるので、フィードバック制御は継続する。θＴＨ≧θＴＨＦＩＲであるならば、ステップＳ１０５を実行して、本処理を終了する。
【００７６】
ステップＳ９１でフラグＦＦＩＲＥＯＮの値が１である時は、フラグＦＦＩＲＱＵＩＴの値を調べる（Ｓ９２）。ＦＦＩＲＱＵＩＴ＝１であるならば、過渡制御中であることを示し、フィードバック制御フラグＦＦＩＲＥＮＥＦＢにゼロを設定する（Ｓ９４）。フラグＦＦＩＲＱＵＩＴ＝０ならば、フィードバック制御フラグＦＦＩＲＥＮＥＦＢの値を調べる（Ｓ９３）。ＦＦＩＲＥＮＥＦＢ＝１であるならば、直ちに本処理を終了する。ＦＦＩＲＥＮＥＦＢ＝０であるならば、ステップＳ９５に進む。
【００７７】
ステップＳ９５では、始動モードの終了（すなわち、クランキングの終了）後の経過時間を計測するアップカウントタイマＴＭ０１ＡＣＲの値が所定値Ｔ１ＳＴＦＩＲ（たとえば、１ｍｓｅｃ）以下かどうかを調べる。ＴＭ０１ＡＣＲ≦Ｔ１ＳＴＦＩＲならば、始動直後であることを示し、フィードバック制御を開始するかどうかを判定するための加算値ＮＥＦＰＩＳＴおよびカウント値ＣＦＮＥＦＢＳＴと、目標回転数を補正するための加算値ＤＮＥＦＩＲとを、それぞれ、第１の値ＮＥＦＰＩ１（たとえば、２００ｒｐｍ）、ＣＦＮＥＦＢ１（例えば、２００）、およびＤＮＥＦ１（たとえば、１ｒｐｍ）に設定する（Ｓ９６）。ＴＭ０１ＡＣＲ＞Ｔ１ＳＴＦＩＲであるならば、加算値ＮＥＦＰＩＳＴ、カウント値ＣＦＮＥＦＢＳＴおよび加算値ＤＮＥＦＩＲを、それぞれ、第２の値ＮＥＦＰＩ２（たとえば、２００ｒｐｍ）、ＣＦＮＥＦＢ２（たとえば、２）およびＤＮＥＦ２（たとえば、１２ｒｐｍ）に設定する（Ｓ９７）。
【００７８】
ステップＳ９８において、エンジン回転数ＮＥが、通常制御モードで用いられる目標回転数ＮＯＢＪに加算値ＮＥＦＰＩＳＴを加算した値以下かどうかを判断する。ＮＥ＜（ＮＯＢＪ＋ＮＥＦＰＩＳＴ）ならば、ＦＩＲＥモードのカウンタＣＦＩＲＯＮの値が、判定用カウント値ＣＦＮＥＦＢＳＴ以上かどうかを判断する（Ｓ９９）。ステップＳ９８およびＳ９９の答えがＮＯである時は、エンジン回転数ＮＥが低く、かつＦＩＲＥモードの継続時間が短いことを示す。このような状況はフィードバック制御に適さないので、直ちに本処理を終了する。
【００７９】
ステップＳ９８でＮＥ≧（ＮＯＢＪ＋ＮＥＦＰＩＳＴ）ならば、目標回転数フラグＦＮＯＥＮＥＦＩＲを値１に設定する（Ｓ１０１）。ステップＳ９９でＣＦＩＲＯＮ≧ＣＦＮＥＦＢＳＴならば、目標回転数フラグＦＮＯＥＮＥＦＩＲをゼロに設定する（Ｓ１００）。こうして、フィードバック制御開始時のエンジン回転数ＮＥが高いときは、目標回転数の算出に使用される加算値ＥＮＥＦＩＲにゼロが設定されるようにする（図１１のステップＳ１３１およびＳ１３４、図１０のステップＳ１１７およびＳ１１８を参照）。
【００８０】
ステップＳ１０２では、フィードバック制御フラグＦＦＩＲＥＮＥＦＢを値１に設定し、カウンタＣＦＩＲＯＮの値を、ＣＦＲＰＩＳＴとしてメモリ１ｃに記憶する。
【００８１】
図１０は、図８のステップＳ７６で実行されるフィードバック制御処理のフローチャートである。ステップＳ１１１では、目標回転数ＮＥＦＩＲを算出するための加算値ＥＮＥＦＩＲを算出するルーチン（図１１）を実施する。ステップＳ１１２では、自動変速機のシフト位置ＳＦＴがニュートラルＮまたはパーキングＰからドライブＤまたはリバースＲ（インギヤ状態）に、またはその逆に変化したかどうかを判断する。シフト位置が変化したならば、ダウンカウントタイマｔｍＩＮＧＦＩＲに所定値ＴＩＮＧＦＩＲ（たとえば、３秒）を設定して起動する（Ｓ１１３）。その後、前回のサイクルで算出されたフィードバック制御（ＰＩ制御）のＩ項ＩＩＧＦＩＲおよび遅角補正項ＩＧＦＰＩを、今回値として保持し（Ｓ１１４）、本処理を終了する。
【００８２】
ステップＳ１１２でシフト位置に変化が無ければ、タイマｔｍＩＮＧＦＩＲの値がゼロかどうかを調べる。ｔｍＩＮＧＦＩＲ＝０ならば、シフト位置ＳＦＴがドライブＤまたはリバースＲ（インギヤ状態）かどうかを調べる（Ｓ１１６）。インギヤ状態でない時は、式（７）に従って目標回転数ＮＥＦＩＲを算出する（Ｓ１１７）。ＮＯＢＪは、通常の（すなわち、ＦＩＲＥモード以外の）アイドル状態における目標回転数である。ＥＮＥＦＩＲは、ステップＳ１１１で算出される加算値である。
【００８３】
ＮＥＦＩＲ＝ＮＯＢＪ＋ＥＮＥＦＩＲ    （７）
ステップＳ１１６でインギヤ状態にあるとき、式（８）に従って目標回転数ＮＥＦＩＲを算出する（Ｓ１１８）。ＤＮＥＦＩＲＤＲは、たとえば３００ｒｐｍに設定される補正値である。
【００８４】
ＮＥＦＩＲ＝ＮＯＢＪ＋ＥＮＥＦＩＲ−ＤＮＥＦＩＲＤＲ    （８）
こうして、インギヤ状態にある時は、エンジン負荷が増加するので、遅角補正項ＩＧＦＰＩを増加させ（すなわち、遅角量を減少させ）、エンジン出力が増えるようにする。
【００８５】
ステップＳ１１９では、目標回転数ＮＥＦＩＲが所定の下限値ＮＥＩＧＦＩＲＬ（たとえば、７３０ｒｐｍ）以下かどうかを判断する。ＮＥＦＩＲ＞ＮＥＩＧＦＩＲＬならば、直ちにステップＳ１２１に進む。ＮＥＦＩＲ≦ＮＥＩＧＦＩＲＬならば、該下限値ＮＥＩＧＦＩＲＬを目標回転数ＮＥＦＩＲに設定して（Ｓ１２０）、ステップＳ１２１に進む。
【００８６】
ステップＳ１２１では、点火時期に基づいて、図１４に示されるようなＫＩＩＧＦＩＲテーブルを検索し、積分項ゲインＫＩＩＧＦＩＲを求める。ＫＩＩＧＦＩＲテーブルは、点火時期ＩＧＬＯＧが増加する（進角する）ほど積分項ゲインＫＩＩＧＦＩＲが増加するように設定されている。ＫＩＩＧＦＩＲｍａｘ、ＫＩＩＧＦＩＲｍｉｎ、ＩＧＬＯＧ１およびＩＧＬＯＧ２は、それぞれ、たとえば０．０６３、０．０１６、−１０度および１２度に設定される。
【００８７】
ステップＳ１２２では、式（９）に従い、加算値ＩＩＧＦＴＭＰを算出する。
【００８８】
ＩＩＧＦＴＭＰ＝ＫＩＩＧＦＩＲ×（ＮＥＦＩＲ−ＮＥ）    （９）
ステップＳ１２３では、積分項の前回値ＩＩＧＦＩＲ（ｎ−１）に該加算値ＩＩＧＦＴＭＰを加算して、積分項の今回値ＩＩＧＦＩＲ（ｎ）を算出する。ステップＳ１２４では、式（１０）に従い、比例項ＰＩＧＦＩＲを算出する。
【００８９】
ＰＩＧＦＩＲ＝ＫＰＩＧＦＩＲ×（ＮＥＦＩＲ−ＮＥ）    （１０）
ステップＳ１２５では、積分項ＩＩＧＦＩＲおよび比例項ＰＩＧＦＩＲを加算して、遅角補正項ＩＧＦＰＩを算出する。
【００９０】
このように、エンジン回転数ＮＥが目標回転数ＮＥＦＩＲに収束するように遅角補正項ＩＧＦＰＩを算出するＰＩ制御が実行される。
【００９１】
図１１は、図１０のステップＳ１１１で実行される加算値ＥＮＥＦＩＲを算出するフローチャートである。ステップＳ１３１では、目標回転数フラグＦＮＯＥＮＥＦＩＲの値が１かどうかを調べる。ＦＮＯＥＮＥＦＩＲ＝１ならば、目標回転数を増加させないことを示し、よって加算値ＥＮＥＦＩＲにゼロを設定する（Ｓ１３４）。ＦＮＯＥＮＥＦＩＲ＝０ならば、式（１１）に従って、加算値ＥＮＥＦＩＲを算出する（Ｓ１３２）。
【００９２】
ＥＮＥＦＩＲ＝
ＮＥＦＰＩＳＴ−ＤＮＥＦＩＲ×（ＣＦＩＲＯＮ−ＣＦＩＲＰＩＳＴ）
（１１）
ＮＥＦＰＩＳＴおよびＤＮＥＦＩＲは、図９のステップＳ９６またはＳ９７で設定される。ＣＦＩＲＯＮは、前述したように、ＦＩＲＥモードの継続回数を示すカウンタの値である。ＣＦＩＰＩＳＴは、図９のステップＳ１０２でメモリ１ｃに記憶された値である。すなわち、（ＣＦＩＲＯＮ−ＣＦＩＲＰＩＳＴ）は、フィードバック制御の開始時点からの経過時間に対応するカウント値である。したがって、式（１１）と、式（７）または（８）とから、目標回転数ＮＥＦＩＲは、フィードバック制御の開始当初は（ＮＯＢＪ＋ＮＥＦＰＩＳＴ）に等しい（図３を参照）。時間が経過するにつれ、目標回転数ＮＥＦＩＲは漸減し、最終的には通常の目標回転数ＮＯＢＪに一致するように設定される。
【００９３】
ステップＳ１３３では、加算値ＥＮＥＦＩＲがゼロ以下かどうかを調べる。ＥＮＥＦＩＲ＞０ならば、直ちに本処理を終了する。ＥＮＥＦＩＲ≦０ならば、ステップＳ１３４を実行して、本処理を終了する。
【００９４】
図１５は、ＦＩＲＥモードで実施される触媒の昇温制御に何らかの故障が生じたかどうかを判定する故障判定処理のフローチャートである。この処理は、所定の時間間隔で、またはＴＤＣ信号に同期して実行される。
【００９５】
ステップＳ１４１では、フラグＦＦＩＲＥＯＮの値を調べる。ＦＦＩＲＥＯＮ＝０ならば、ＦＩＲＥモードにないことを示し、よって本処理を終了する。ＦＦＩＲＥＯＮ＝１ならば、ＦＩＲＥモードにあることを示し、ステップＳ１４２に進む。
【００９６】
ステップＳ１４２では、マップを参照して、吸気密度補正係数および差圧補正係数を求める。該マップの一例を、図１６の（ａ）および（ｂ）にそれぞれ示す。吸気密度補正係数用のマップ（ａ）は、吸気温度が高くなるほど、補正係数は小さくなるよう設定されている。差圧補正係数用のマップ（ｂ）は、差圧が大きくなるほど、補正係数は小さくなるよう設定されている。
【００９７】
ステップＳ１４３では、式（３）に従って、目標吸入空気量ＱＡＩＲＣＭＤの今回値を算出する。ステップＳ１４４において、式（４）に従って、目標吸入空気量の積算値ＱＧＡＩＲＣＭＤの今回値を算出する。
【００９８】
ステップＳ１４５では、前述したように、エアフローメータの検出値に基づいて、または他の既知の手法により、実吸入空気量ＱＡＩＲを算出する。ステップＳ１４６において、式（５）に従って、実吸入空気量の積算値ＱＧＡＩＲの今回値を算出する。
【００９９】
ステップＳ１４７において、カウンタＣＦＩＲＯＮの値が所定値ＴＦＩＲＯＮに達したかどうかを判断する。ＣＦＩＲＥＯＮ＜所定値ＴＦＩＲＯＮならば、ＦＩＲＥモードの開始から所定時間ＴＦＩＲＯＮが経過していないので、直ちに本処理を終了する。ＣＦＩＲＥＯＮ≧所定値ＴＦＩＲＯＮならば、ＦＩＲＥモードの開始から所定時間ＴＦＩＲＯＮが経過していることを示す。この場合には、ステップＳ１４８に進み、目標吸入空気量の積算値ＱＧＡＩＲＣＭＤと、実吸入空気量の積算値ＱＧＡＩＲとの偏差ＤＧＡＩＲを算出する。
【０１００】
図３に示されるように、触媒昇温制御に何らかの故障があると、時間の経過と共に偏差ＤＧＡＩＲは大きくなる。所定時間ＴＦＩＲＯＮ経過した時に故障判定を実施することにより、より正確に故障判定を実施することができる。
【０１０１】
代替的に、点火時期のフィードバック制御が開始されてからの時間に基づいて、故障判定を実施する時期を定めてもよい。
【０１０２】
ステップＳ１４９では、エンジンの運転状態に基づいて、故障判定用のしきい値ＴＨＡＩＲを設定する。前述したように、一例では、目標吸入空気量の積算値ＱＧＡＩＲＣＭＤに基づいて図４の（ａ）に示されるようなマップを参照し、しきい値ＴＨＡＩＲを求めることができる。他の例では、検出されたエンジン水温または検出された吸気温に基づいてしきい値ＴＨＡＩＲを求めてもよい。
【０１０３】
ステップＳ１５０において、偏差ＤＧＡＩＲがしきい値ＴＨＡＩＲ以上ならば、触媒昇温制御に何らかの故障が生じたことを示す。ステップＳ１５１に示されるように、警告灯（ＭＩＬ）を点灯して、運転者に該故障を知らせるのが好ましい。偏差ＤＧＡＩＲがしきい値ＴＨＡＩＲより小さければ、本処理を終了する。
【０１０４】
本発明は、他の内燃機関（たとえば、船外機）にも適用が可能である。
【図面の簡単な説明】
【０１０５】
【図１】この発明の一実施例に従う、内燃機関および制御装置を概略的に示す図。
【図２】この発明の一実施例に従う、触媒昇温制御を実施する装置および触媒昇温制御の故障を検知する装置の機能ブロック図。
【図３】この発明の一実施例に従う、触媒昇温制御における各種パラメータの挙動を示す図。
【図４】この発明の一実施例に従う、故障判定用のしきい値を設定する手法を説明するための図。
【図５】この発明の一実施例に従う、吸気量制御のための制御量（ＩＦＩＲ）を算出するメインルーチンのフローチャート。
【図６】この発明の一実施例に従う、触媒昇温制御の実行を許可するかどうかを判断する処理のフローチャート。
【図７】この発明の一実施例に従う、吸気量制御のためのＦＩＲＥモード制御項を算出する処理のフローチャート。
【図８】この発明の一実施例に従う、点火時期制御を実行するメインルーチンのフローチャート。
【図９】この発明の一実施例に従う、点火時期のフィードバック制御の実施条件を判断する処理のフローチャート。
【図１０】この発明の一実施例に従う、点火時期のフィードバック制御を実行する処理のフローチャート。
【図１１】この発明の一実施例に従う、目標回転数の加算値（ＥＮＥＦＩＲ）を算出する処理のフローチャート。
【図１２】この発明の一実施例に従う、図５の処理で使用するテーブルを示す図。
【図１３】この発明の一実施例に従う、図６の処理で使用するテーブルを示す図。
【図１４】この発明の一実施例に従う、図１０の処理で使用するテーブルを示す図。
【図１５】この発明の一実施例に従う、触媒昇温制御の故障を判定する処理のフローチャート。
【図１６】この発明の一実施例に従う、図１５の処理で使用するテーブルを示す図。
【符号の説明】
【０１０６】
１  ＥＣＵ
２  エンジン
１６  触媒
【図１】
2005139920.tif 000003
【図２】
2005139920.tif 000004
【図３】
2005139920.tif 000005
【図４】
2005139920.tif 000006
【図５】
2005139920.tif 000007
【図６】
2005139920.tif 000008
【図７】
2005139920.tif 000009
【図８】
2005139920.tif 000010
【図９】
2005139920.tif 000011
【図１０】
2005139920.tif 000012
【図１１】
2005139920.tif 000013
【図１２】
2005139920.tif 000014
【図１３】
2005139920.tif 000015
【図１４】
2005139920.tif 000016
【図１５】
2005139920.tif 000017
【図１６】
2005139920.tif 000018