(57)【要約】      （修正有）【課題】触媒の酸素吸蔵量が０又は最大酸素吸蔵量に到達してしまう可能性を低減して、エミッションの悪化を防止すること。【解決手段】制御装置７０は、触媒４３の酸素吸蔵状態が酸素過剰状態であると判定されている場合に目標空燃比を理論空燃比よりも小さいリッチ空燃比に設定し、酸素吸蔵状態が酸素不足状態であると判定されている場合に目標空燃比を理論空燃比よりも大きいリーン空燃比に設定する。更に、パージ実行要求条件が不成立である状態から成立した状態へと変化した場合であっても、目標空燃比がリッチ空燃比からリーン空燃比へと又はその逆へと変更された時点から所定時間が経過するまでの期間、蒸発燃料パージの実行を開始しないように構成する。【選択図】図１
2012225308.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の排気通路に配設されるとともに酸素吸蔵機能を有する触媒と、
前記排気通路の前記触媒の下流側に配設された下流側空燃比センサと、
前記触媒の酸素吸蔵状態が、前記触媒に吸蔵されている酸素の量が同触媒にとって過剰であるために同酸素の量を減少すべき状態である酸素過剰状態であるか、前記触媒に吸蔵されている酸素の量が不足しているために同酸素の量を増大すべき状態である酸素不足状態であるか、を前記下流側空燃比センサの出力値に基づいて判定する触媒状態判定手段と、
前記酸素吸蔵状態が前記酸素過剰状態であると判定されている場合に前記触媒に流入するガスの空燃比の目標値である目標空燃比を理論空燃比よりも小さい目標リッチ空燃比に設定し、前記酸素吸蔵状態が前記酸素不足状態であると判定されている場合に前記目標空燃比を理論空燃比よりも大きい目標リーン空燃比に設定する、目標空燃比設定手段と、
前記機関に対して燃料を噴射する燃料噴射弁と、
前記燃料噴射弁から噴射される燃料の量である燃料噴射量を前記設定された目標空燃比に応じて決定するとともに同決定した燃料噴射量の燃料を前記燃料噴射弁から噴射させる燃料噴射制御手段と、
前記燃料噴射弁に供給される燃料を貯蔵する燃料タンク内に発生した蒸発燃料を前記機関の吸気通路に導入する蒸発燃料パージを所定のパージ実行要求条件が成立している場合に実行する蒸発燃料パージ手段と、
を備えた内燃機関の制御装置において、
前記蒸発燃料パージ手段は、
前記目標空燃比が前記目標リッチ空燃比から前記目標リーン空燃比へと変更される時点である目標空燃比リッチリーン変更時点、及び、前記目標空燃比が前記目標リーン空燃比から前記目標リッチ空燃比へと変更される時点である目標空燃比リーンリッチ変更時点、の少なくとも一方の時点から所定時間が経過するまでの期間、前記パージ実行要求条件が成立した場合であっても前記蒸発燃料パージの実行を開始しないように構成された内燃機関の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、排気通路に配設された三元触媒と、燃料タンク内に発生した蒸発燃料を吸気通路に導入する蒸発燃料パージ手段と、燃料を供給する燃料噴射弁と、を備える内燃機関の制御装置に関する。
【背景技術】
【０００２】
従来より、内燃機関から排出される排ガスを浄化するために同機関の排気通路に三元触媒が配設されている。三元触媒は、周知のように、酸素吸蔵機能を有する。即ち、三元触媒は、その三元触媒に流入するガス（触媒流入ガス）に過剰の酸素が含まれているとき、その酸素を吸蔵するとともにＮＯｘを浄化する。三元触媒は、触媒流入ガスに過剰な未燃物が含まれているとき、吸蔵している酸素を放出してその未燃物を浄化する。以下、三元触媒は単に「触媒」とも称呼される。
【０００３】
従来の空燃比制御装置（従来装置）は、機関の排気通路であって触媒の上流及び下流にそれぞれ配設された上流側空燃比センサ及び下流側空燃比センサを備える。従来装置は、上流側空燃比センサの出力値により表される空燃比（検出上流側空燃比）を目標空燃比（上流側目標空燃比、触媒流入ガスの目標空燃比）に一致させるように「機関に供給される混合気の空燃比（機関の空燃比）」を制御する。この制御は「メインフィードバック制御」とも称呼される。通常、目標空燃比は理論空燃比に設定されている。
【０００４】
更に、従来装置は、下流側空燃比センサの出力値が「理論空燃比に対応する目標値」に一致するようにサブフィードバック量を算出し、そのサブフィードバック量により上流側目標空燃比を実質的に修正することにより、機関の空燃比を制御する（例えば、特許文献１を参照。）。サブフィードバック量を用いた空燃比制御は「サブフィードバック制御」とも称呼される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−１６２１３９号公報
【発明の概要】
【０００６】
ところで、出願人は、特に、「触媒の酸素吸蔵能力が低い場合（例えば、触媒が劣化した場合、或いは、触媒の容量が小さい場合等であって、最大酸素吸蔵量が小さい場合）」であっても、エミッションを良好に維持することができる空燃比制御装置を検討している。例えば、そのような検討中の空燃比制御装置の一つは、触媒の状態（酸素吸蔵状態）を下流側空燃比センサの出力値に基づいて遅滞なく判定し、その判定結果に基づいて触媒流入ガスの空燃比が理論空燃比以外の空燃比に一致するように機関の空燃比を制御する。この検討中の空燃比制御装置は、本発明の制御装置の一部をなすので、以下、本発明装置とも称呼する。
【０００７】
より具体的に述べると、触媒は、その酸素吸蔵量が「０」と「最大酸素吸蔵量Ｃmax」との間にある場合に高い浄化効率にて排ガスを浄化する。よって、本発明装置は、下流側空燃比センサの出力値Voxsに基づいて触媒の状態が酸素過剰状態（リーン状態）になったと判定したとき、目標空燃比を「理論空燃比よりも小さい目標リッチ空燃比」に設定することにより、触媒の酸素吸蔵量を減少させる。更に、この制御装置は、下流側空燃比センサの出力値Voxsに基づいて触媒の状態が酸素不足状態（リッチ状態）となったと判定したとき、目標空燃比を「理論空燃比よりも大きい目標リーン空燃比」に設定することにより、触媒の酸素吸蔵量を増大させる。
【０００８】
一方、機関には、蒸発燃料パージ手段が採用される。蒸発燃料パージ手段は、燃料タンク内に発生した蒸発燃料をキャニスタに吸着させ、所定のパージ実行要求条件が成立するとキャニスタに吸着された蒸発燃料を機関の吸気通路に導入する。これにより、蒸発燃料は機関の燃焼室にて燃焼させられてから大気中に排出される。蒸発燃料を機関の吸気通路に導入することは蒸発燃料パージと称呼される。
【０００９】
蒸発燃料パージは、機関の空燃比を変化させる要因の一つである。蒸発燃料パージが実行されている期間においても、上述したメインフィードバック制御は実行される。ところが、吸気通路に導入される蒸発燃料の濃度は時間的に一定ではない。
【００１０】
従って、メインフィードバック制御が実行されている場合であっても、蒸発燃料パージが実行されている場合（図５の時刻ｔ１以降を参照。）、蒸発燃料パージが実行されていない場合（図５の時刻ｔ１以前を参照。）に比べ、触媒に流入する空燃比（上流側空燃比）の変動幅は大きくなる。特に、メインフィードバック制御の制御遅れに起因して、蒸発燃料パージが開始された直後の期間（図５の時刻ｔ１〜時刻ｔ２）における空燃比の変動は、その後の期間（図５の時刻ｔ２以降）における空燃比の変動よりも大きくなる。即ち、蒸発燃料パージが開始されると、その影響が上流側空燃比に現れ始めた時点から所定時間が経過するまでの期間（図５の時刻ｔ１〜時刻ｔ２）、上流側空燃比の変動幅は非常に大きくなる。
【００１１】
このため、触媒の酸素吸蔵量が「０」又は最大酸素吸蔵量Ｃmaxに近い場合に蒸発燃料パージの影響が上流側空燃比に現れると、触媒の酸素吸蔵量が「０」または最大酸素吸蔵量Ｃmaxに到達し、それによりエミッションが悪化する虞がある。
【００１２】
従って、本発明の目的の一つは、蒸発燃料パージを開始させるタイミングを制限することにより、触媒の酸素吸蔵量が「０」又は最大酸素吸蔵量Ｃmaxに到達してしまう可能性をより一層低減し、以って、エミッションの悪化を防止し得る内燃機関の制御装置を提供することにある。
【００１３】
本発明による内燃機関の制御装置（本発明装置）は、触媒と、下流側空燃比センサと、触媒状態判定手段と、目標空燃比設定手段と、燃料噴射弁と、燃料噴射制御手段と、蒸発燃料パージ手段と、を備える。
【００１４】
前記触媒は、前記内燃機関の排気通路に配設される。前記触媒は、酸素吸蔵機能を有する三元触媒である。
前記下流側空燃比センサは、前記排気通路であって前記触媒の下流側に配設される。
【００１５】
前記触媒状態判定手段は、前記触媒の酸素吸蔵状態が、酸素過剰状態（リーン状態）であるか酸素不足状態（リッチ状態）であるかを前記下流側空燃比センサの出力値に基づいて判定する。
前記酸素過剰状態は、前記触媒に吸蔵されている酸素の量が前記触媒にとって過剰である（過剰となる傾向にある）ために、前記触媒に吸蔵されている酸素の量を減少すべき状態である。
前記酸素不足状態は、前記触媒に吸蔵されている酸素の量が不足している（不足する傾向にある）ために、前記触媒に吸蔵されている酸素の量を増大すべき状態である。
【００１６】
例えば、前記触媒状態判定手段は、下流側空燃比センサの出力値が「理論空燃比よりも小さい空燃比であるリッチ空燃比」に対応する値（リッチ対応値）から「理論空燃比よりも大きい空燃比であるリーン空燃比」に対応する値（リーン対応値）に向けて変化している場合であって、単位時間あたりの出力値の変化量の大きさが所定の値（リッチ判定閾値）よりも大きくなったとき、触媒の状態が酸素過剰状態となったと判定する。
【００１７】
これに対し、前記触媒状態判定手段は、下流側空燃比センサの出力値がリーン対応値からリッチ対応値に向けて変化している場合であって、単位時間あたりの出力値の変化量の大きさが所定の値（リッチ判定閾値）よりも大きくなったとき、触媒の状態が酸素不足状態となったと判定する。
【００１８】
或いは、前記触媒状態判定手段は、触媒の状態が酸素不足状態であると判定されている状態において下流側空燃比センサの出力値と酸素過剰状態判定閾値とを比較し、その比較に基づいて触媒の状態が酸素過剰状態となったと判定してもよい。更に、前記触媒状態判定手段は、触媒の状態が酸素過剰状態であると判定されている状態において下流側空燃比センサの出力値と酸素不足状態判定閾値とを比較し、その比較に基づいて触媒の状態が酸素不足状態となったと判定してもよい。
【００１９】
前記目標空燃比設定手段は、前記酸素吸蔵状態が前記酸素過剰状態であると判定されている場合に「前記触媒に流入するガスの空燃比の目標値である目標空燃比」を「理論空燃比よりも小さい目標リッチ空燃比」に設定する。更に、前記目標空燃比設定手段は、前記酸素吸蔵状態が前記酸素不足状態であると判定されている場合に前記目標空燃比を「理論空燃比よりも大きい目標リーン空燃比」に設定する。
【００２０】
前記燃料噴射弁は前記機関に対して燃料を噴射する。
前記燃料噴射制御手段は、「前記燃料噴射弁から噴射される燃料の量」である燃料噴射量を「前記設定された目標空燃比」に応じて決定する。更に、前記燃料噴射制御手段は、前記決定した燃料噴射量の燃料を前記燃料噴射弁から噴射させる。
前記蒸発燃料パージ手段は、「前記燃料噴射弁に供給される燃料を貯蔵する燃料タンク」内に発生した蒸発燃料を前記機関の吸気通路に導入する蒸発燃料パージを「所定のパージ実行要求条件」が成立している場合に実行する。
【００２１】
更に、前記蒸発燃料パージ手段は、
前記目標空燃比が前記目標リッチ空燃比から前記目標リーン空燃比へと変更される時点である目標空燃比リッチリーン変更時点、及び、前記目標空燃比が前記目標リーン空燃比から前記目標リッチ空燃比へと変更される時点である目標空燃比リーンリッチ変更時点、の少なくとも一方の時点から所定時間が経過するまでの期間、前記パージ実行要求条件が成立した場合であっても前記蒸発燃料パージの実行を開始しないように構成されている。
【００２２】
目標空燃比リッチリーン変更時点は、触媒の酸素吸蔵量が「０」に近づいている時点である。従って、目標空燃比リッチリーン変更時点から所定時間が経過するまでの期間において、触媒の酸素吸蔵量は「０」に近い。よって、目標空燃比リッチリーン変更時点から所定時間が経過するまでの期間において、蒸発燃料パージを開始したことに起因する空燃比の変動が上流側空燃比に現れると、触媒の酸素吸蔵量が「０」に到達する可能性が高くなる。
【００２３】
これに対し、上記構成によれば、目標空燃比リッチリーン変更時点から所定時間が経過するまでの期間、蒸発燃料パージの実行が開始されないようにすることができる。換言すると、目標空燃比リッチリーン変更時点から所定時間が経過した時点以降において、即ち、触媒の酸素吸蔵量がある程度大きくなっている時点以降において、蒸発燃料パージを開始したことに起因する空燃比の変動が上流側空燃比に現れるようにすることができる。従って、触媒の酸素吸蔵量が「０」に到達する可能性を低減することができるので、エミッションが悪化する可能性を低減することができる。
【００２４】
同様に、目標空燃比リーンリッチ変更時点は、触媒の酸素吸蔵量が最大酸素吸蔵量Ｃmaxに近づいている時点である。従って、目標空燃比リーンリッチ変更時点から所定時間が経過するまでの期間において、触媒の酸素吸蔵量は最大酸素吸蔵量Ｃmaxに近い。よって、目標空燃比リーンリッチ変更時点から所定時間が経過するまでの期間において、蒸発燃料パージを開始したことに起因する空燃比の変動が上流側空燃比に現れると、触媒の酸素吸蔵量が最大酸素吸蔵量Ｃmaxに到達する可能性が高くなる。
【００２５】
これに対し、上記構成によれば、目標空燃比リーンリッチ変更時点から所定時間が経過するまでの期間、蒸発燃料パージの実行が開始されないようにすることができる。換言すると、目標空燃比リーンリッチ変更時点から所定時間が経過した時点以降において、即ち、触媒の酸素吸蔵量がある程度小さくなっている時点以降において、蒸発燃料パージを開始したことに起因する空燃比の変動が上流側空燃比に現れるようにすることができる。従って、触媒の酸素吸蔵量が最大酸素吸蔵量Ｃmaxに到達する可能性を低減することができるので、エミッションが悪化する可能性を低減することができる。
【００２６】
この場合、
前記蒸発燃料パージ手段は、
前記目標空燃比リーンリッチ変更時点から前記所定時間としての第１所定時間が経過するまでの期間であるリーンリッチ変更後期間に前記蒸発燃料パージの実行を開始しないように構成され、
前記目標空燃比リッチリーン変更時点から同目標空燃比リッチリーン変更時点に続く前記目標空燃比リーンリッチ変更時点までの第１時間（目標空燃比リーン継続時間）を少なくとも前記機関の吸入空気量に相関を有する値に基づいて推定し、
前記推定された第１時間に基づいて次に到来する予定の前記目標空燃比リーンリッチ変更時点を予測し、
前記予測された目標空燃比リーンリッチ変更時点よりも所定時間前の時点から前記リーンリッチ変更後期間の経過時点までの期間、前記蒸発燃料パージの実行を開始しないように構成されることが好ましい。
【００２７】
これによれば、予測された目標空燃比リーンリッチ変更時点よりも所定時間前の時点から前記リーンリッチ変更後期間の経過時点までの期間、前記蒸発燃料パージの実行が開始されないので、触媒の酸素吸蔵量が最大酸素吸蔵量Ｃmaxに近い場合に蒸発燃料パージを開始したことに起因する空燃比の変動が上流側空燃比に現れることがない。よって、酸素吸蔵量が最大酸素吸蔵量Ｃmaxに到達することに起因するエミッションの悪化の可能性を低減することができる。
【００２８】
また、前記蒸発燃料パージ手段は、
前記目標空燃比リッチリーン変更時点から前記所定時間としての第２所定時間が経過するまでの期間であるリッチリーン変更後期間に前記蒸発燃料パージの実行を開始しないように構成され、
前記目標空燃比リーンリッチ変更時点から同目標空燃比リーンリッチ変更時点に続く前記目標空燃比リッチリーン変更時点までの第２時間（目標リッチ空燃比継続時間）を少なくとも前記機関の吸入空気量に相関を有する値に基づいて推定し、
前記推定された第２時間に基づいて次に到来する予定の前記目標空燃比リッチリーン変更時点を予測し、
前記予測された目標空燃比リッチリーン変更時点よりも所定時間前の時点から前記リッチリーン変更後期間の経過時点までの期間、前記蒸発燃料パージの実行を開始しないように構成されることが好ましい。
【００２９】
これによれば、予測された目標空燃比リッチリーン変更時点よりも所定時間前の時点から前記リッチリーン変更後期間の経過時点までの期間、前記蒸発燃料パージの実行が開始されないので、触媒の酸素吸蔵量が「０」に近い場合に蒸発燃料パージを開始したことに起因する空燃比の変動が上流側空燃比に現れることがない。よって、酸素吸蔵量が「０」に到達することに起因するエミッションの悪化の可能性を低減することができる。
【００３０】
本発明装置の他の目的、他の特徴及び付随する利点は、以下の図面を参照しつつ記述される本発明の各実施形態についての説明から容易に理解されるであろう。
【図面の簡単な説明】
【００３１】
【図１】本発明の各実施形態に係る制御装置が適用される内燃機関の概略平面図である。
【図２】図１に示した触媒に流入するガスの空燃比（上流側空燃比）と図１に示した上流側空燃比センサの出力値との関係を示したグラフである。
【図３】図１に示した触媒から流出するガスの空燃比（下流側空燃比）と図１に示した下流側空燃比センサの出力値との関係を示したグラフである。
【図４】本発明の第１実施形態に係る制御装置（第１制御装置）の作動を説明するためのタイムチャートである。
【図５】蒸発燃料パージが開始される前後における上流側空燃比の変化の様子を示した図である。
【図６】第１制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図７】第１制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図８】第１制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図９】第１制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図１０】本発明の第２実施形態に係る制御装置（第２制御装置）の作動を説明するためのタイムチャートである。
【図１１】第２制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図１２】上流側空燃比と触媒の酸素吸蔵量との関係を示したタイムチャートである。
【図１３】上流側空燃比の変動幅、吸入空気量、及び、目標空燃比切替え周期、の間の関係を示したマップである。
【図１４】蒸発燃料パージが開始される前後における上流側空燃比の変化の様子を示した図である。
【図１５】本発明の第３実施形態に係る制御装置（第３制御装置）のＣＰＵが実行するルーチンを示したフローチャートである。
【図１６】蒸発燃料パージが開始される前後における上流側空燃比の変化の様子を示した図である。
【図１７】本発明の第４実施形態に係る制御装置（第４制御装置）のＣＰＵが実行するルーチンを示したフローチャートである。
【発明を実施するための形態】
【００３２】
以下、本発明の各実施形態に係る内燃機関の制御装置（以下、単に「制御装置」とも称呼する。）について図面を参照しながら説明する。この制御装置は、内燃機関に供給される混合気の空燃比（機関の空燃比）を制御する空燃比制御装置の一部であり、更に、燃料噴射量を制御する燃料噴射量制御装置及び蒸発燃料のパージ量を制御する蒸発燃料パージ量制御装置の一部でもある。
【００３３】
＜第１実施形態＞
（構成）
図１は、第１実施形態に係る制御装置（以下、「第１制御装置」とも称呼する。）を、４サイクル・火花点火式・多気筒（直列４気筒）・内燃機関１０に適用したシステムの概略構成を示している。
【００３４】
内燃機関１０は、機関本体部２０と、吸気系統３０と、排気系統４０と、蒸発燃料供給系統５０と、を含む。
【００３５】
機関本体部２０は、シリンダブロック部及びシリンダヘッド部を含む。機関本体部２０は、複数の気筒（燃焼室）２１を備えている。各気筒は、図示しない「吸気ポート及び排気ポート」と連通している。吸気ポートと燃焼室２１との連通部は図示しない吸気弁により開閉される。排気ポートと燃焼室２１との連通部は図示しない排気弁により開閉される。各燃焼室２１には図示しない点火プラグが配設されている。
【００３６】
吸気系統３０は、インテークマニホールド３１、吸気管３２、複数の燃料噴射弁３３、及び、スロットル弁３４を備えている。
【００３７】
インテークマニホールド３１は、複数の枝部３１ａとサージタンク３１ｂとを備えている。複数の枝部３１ａのそれぞれの一端は、複数の吸気ポートのそれぞれに接続されている。複数の枝部３１ａの他端はサージタンク３１ｂに接続されている。
【００３８】
吸気管３２の一端はサージタンク３１ｂに接続されている。吸気管３２の他端には図示しないエアフィルタが配設されている。
【００３９】
燃料噴射弁３３は、一つの気筒（燃焼室）２１に対して一つずつ配設されている。燃料噴射弁３３は吸気ポートに設けられている。即ち、複数の気筒のそれぞれは、他の気筒とは独立して燃料供給を行う燃料噴射弁３３を備えている。燃料噴射弁３３は、噴射指示信号に応答し、正常である場合に「その噴射指示信号に含まれる指示燃料噴射量の燃料」を吸気ポート（従って、燃料噴射弁３３に対応する気筒２１）内に噴射するようになっている。
【００４０】
より具体的に述べると、燃料噴射弁３３には、後述する燃料タンク５１に接続された燃料供給管５７を介して燃料が供給されている。燃料噴射弁３３に供給されている燃料の圧力は、その燃料の圧力と吸気ポート内の圧力との差圧が一定になるように図示しないプレッシャレギュレータにより制御されている。燃料噴射弁３３は、指示燃料噴射量に応じた時間だけ開弁させられる。従って、燃料噴射弁３３が正常であれば、燃料噴射弁３３は指示燃料噴射量と等量の燃料を噴射する。
【００４１】
スロットル弁３４は、吸気管３２内に回動可能に配設されている。スロットル弁３４は、吸気通路の開口断面積を可変とするようになっている。スロットル弁３４は、図示しないスロットル弁アクチュエータにより吸気管３２内で回転駆動されるようになっている。
【００４２】
排気系統４０は、エキゾーストマニホールド４１、エキゾーストパイプ４２、エキゾーストパイプ４２に配設された上流側触媒４３、及び、上流側触媒４３よりも下流においてエキゾーストパイプ４２に配設された「図示しない下流側触媒」を備えている。
【００４３】
エキゾーストマニホールド４１は、複数の枝部４１ａと集合部４１ｂとを備えている。複数の枝部４１ａのそれぞれの一端は、複数の排気ポートのそれぞれに接続されている。複数の枝部４１ａのそれぞれの他端は集合部４１ｂに集合している。この集合部４１ｂは、複数（２以上であり、本例では４つ）の気筒から排出された排ガスが集合する部分であるから、排気集合部ＨＫとも称呼される。
【００４４】
エキゾーストパイプ４２は集合部４１ｂに接続されている。排気ポート、エキゾーストマニホールド４１及びエキゾーストパイプ４２は、排気通路を構成している。
【００４５】
上流側触媒４３及び下流側触媒のそれぞれは、所謂、白金、ロジウム及びパラジウム等の貴金属（触媒物質）からなる活性成分を担持する三元触媒装置（排気浄化用の触媒）である。各触媒は、各触媒に流入するガスの空燃比が「三元触媒のウインドウ内の空燃比（例えば、理論空燃比）」であるとき、ＨＣ，ＣＯ，Ｈ２などの未燃成分を酸化するとともに窒素酸化物（ＮＯｘ）を還元する機能を有する。この機能は触媒機能とも称呼される。
【００４６】
更に、各触媒は、酸素を吸蔵（貯蔵）する酸素吸蔵機能を有する。即ち、各触媒は、その触媒に流入するガス（触媒流入ガス）に過剰の酸素が含まれているとき、その酸素を吸蔵するとともにＮＯｘを浄化する。各触媒は、触媒流入ガスに過剰な未燃物が含まれているとき、吸蔵している酸素を放出してその未燃物を浄化する。この酸素吸蔵機能は、触媒に担持されているセリア（ＣｅＯ２）等の酸素吸蔵材によってもたらされる。各触媒は、酸素吸蔵機能により空燃比が理論空燃比から偏移したとしても未燃成分及び窒素酸化物を浄化することができる。つまり、酸素吸蔵機能により、ウインドウの幅が拡大する。
【００４７】
蒸発燃料供給系統５０は、燃料タンク５１、キャニスタ５２、ベーパ捕集管５３、パージ流路管５４、パージ制御弁５５、及び、燃料ポンプ５６を備えている。
【００４８】
燃料タンク５１は、燃料噴射弁３３から機関１０に対して噴射・供給される燃料を貯留する。
【００４９】
キャニスタ５２は、燃料タンク５１内にて発生した蒸発燃料（蒸発燃料ガス）を吸蔵する「周知のチャコールキャニスタ」である。キャニスタ５２は、タンクポート５２ａと、パージポート５２ｂと、大気に曝されている大気ポート５２ｃと、が形成された筐体を備える。キャニスタ５２は、その筐体内に、蒸発燃料を吸着するための吸着剤（活性炭等）５２ｄを収納（保持）している。
【００５０】
ベーパ捕集管５３の一端は燃料タンク５１の上部に接続され、ベーパ捕集管５３の他端はタンクポート５２ａに接続されている。ベーパ捕集管５３は、燃料タンク５１内に発生した蒸発燃料を燃料タンク５１からキャニスタ５２へと導入するための管である。
【００５１】
パージ流路管５４の一端はパージポート５２ｂに接続され、パージ流路管５４の他端はサージタンク３１ｂ（即ち、スロットル弁３４よりも下流の吸気通路）に接続されている。パージ流路管５４は、キャニスタ５２の吸着剤５２ｄから脱離した蒸発燃料をサージタンク３１ｂへと導入するための管である。ベーパ捕集管５３及びパージ流路管５４はパージ通路（パージ通路部）を構成している。
【００５２】
パージ制御弁５５はパージ流路管５４に介装されている。パージ制御弁５５は、指示信号であるデューティ比ＤＰＧを表す駆動信号により開度（開弁期間）が調節されることにより、パージ流路管５４の通路断面積を変更するようになっている。パージ制御弁５５は、デューティ比ＤＰＧが「０」であるときにパージ流路管５４を完全に閉じるようになっている。更に、パージ制御弁５５は、デューティ比ＤＰＧが「０」よりも大きいときデューティ比ＤＰＧが大きいほど通路断面積を大きくするように開弁する。
【００５３】
燃料ポンプ５６は、燃料タンク５１に貯留されている燃料を燃料供給管５７を通して燃料噴射弁３３に供給するようになっている。
【００５４】
このように構成された蒸発燃料供給系統５０において、パージ制御弁５５が完全に閉じられている場合、燃料タンク５１内で発生した蒸発燃料はキャニスタ５２に吸蔵される。パージ制御弁５５が開かれている場合、キャニスタ５２に吸蔵された蒸発燃料はパージ流路管５４を通してサージタンク３１ｂ（スロットル弁３４よりも下流の吸気通路）に放出され、燃焼室２１（機関１０）へ供給される。即ち、パージ制御弁５５が開かれているとき、蒸発燃料のパージ（「蒸発燃料ガスのパージ」又は「パージ」とも称呼される。）が行われる。
【００５５】
このシステムは、熱線式エアフローメータ６１、スロットルポジションセンサ６２、水温センサ６３、クランクポジションセンサ６４、インテークカムポジションセンサ６５、上流側空燃比センサ６６、下流側空燃比センサ６７、及び、アクセル開度センサ６８を備えている。
【００５６】
エアフローメータ６１は、吸気管３２内を流れる吸入空気の質量流量（吸入空気流量）Ｇａに応じた信号を出力するようになっている。即ち、吸入空気量Ｇａは、単位時間あたりに機関１０に吸入される吸入空気量を表す。
【００５７】
スロットルポジションセンサ６２は、スロットル弁３４の開度（スロットル弁開度）を検出し、スロットル弁開度ＴＡを表す信号を出力するようになっている。
【００５８】
水温センサ６３は、機関１０の冷却水の温度を検出し、冷却水温ＴＨＷを表す信号を出力するようになっている。冷却水温ＴＨＷは、機関１０の暖機状態（機関１０の温度）を表す運転状態指標量である。
【００５９】
クランクポジションセンサ６４は、クランク軸が１０°回転する毎に幅狭のパルスを有するとともに同クランク軸が３６０°回転する毎に幅広のパルスを有する信号を出力するようになっている。この信号は、後述する電気制御装置７０によって機関回転速度ＮＥに変換される。
【００６０】
インテークカムポジションセンサ６５は、インテークカムシャフトが所定角度から９０度、次いで９０度、更に１８０度回転する毎に一つのパルスを出力するようになっている。後述する電気制御装置７０は、クランクポジションセンサ６４及びインテークカムポジションセンサ６５からの信号に基づいて、基準気筒（例えば第１気筒）の圧縮上死点を基準とした絶対クランク角度ＣＡを取得するようになっている。この絶対クランク角度ＣＡは、基準気筒の圧縮上死点において「０°クランク角度」に設定され、クランク軸の回転角度に応じて７２０°クランク角度まで増大し、その時点にて再び０°クランク角度に設定される。
【００６１】
上流側空燃比センサ６６は、エキゾーストマニホールド４１の集合部４１ｂ（排気集合部ＨＫ）と上流側触媒４３との間の位置において「エキゾーストマニホールド４１及びエキゾーストパイプ４２の何れか」に配設されている。
【００６２】
上流側空燃比センサ６６は、例えば、特開平１１−７２４７３号公報、特開２０００−６５７８２号公報及び特開２００４−６９５４７号公報等に開示された「拡散抵抗層を備える限界電流式広域空燃比センサ」である。
【００６３】
上流側空燃比センサ６６は、上流側空燃比センサ６６の配設位置を流れる排ガスの空燃比（触媒４３に流入するガスである「触媒流入ガス」の空燃比、上流側空燃比abyfs）に応じた出力値Vabyfsを出力する。出力値Vabyfsは、図２に示したように、触媒流入ガスの空燃比（上流側空燃比abyfs）が大きくなるほど（リーン側の空燃比になるほど）増大する。
【００６４】
電気制御装置７０は、出力値Vabyfsと上流側空燃比abyfsとの図２に示した関係を規定した空燃比変換テーブル（マップ）Mapabyfsを記憶している。電気制御装置７０は、出力値Vabyfsを空燃比変換テーブルMapabyfsに適用することにより、実際の上流側空燃比abyfsを検出する（検出上流側空燃比abyfsを取得する）ようになっている。
【００６５】
再び、図１を参照すると、下流側空燃比センサ６７は、エキゾーストパイプ４２内に配設されている。下流側空燃比センサ６７の配設位置は、上流側触媒４３よりも下流側であり、且つ、下流側触媒よりも上流側（即ち、上流側触媒４３と下流側触媒との間の排気通路）である。下流側空燃比センサ６７は、周知の起電力式の酸素濃度センサ（安定化ジルコニア等の固体電解質を用いた周知の濃淡電池型の酸素濃度センサ）である。下流側空燃比センサ６７は、排気通路であって下流側空燃比センサ６７が配設されている部位を通過するガスである被検出ガスの空燃比に応じた出力値Voxsを発生するようになっている。換言すると、出力値Voxsは、上流側触媒４３から流出し且つ下流側触媒に流入するガスの空燃比に応じた値である。
【００６６】
この出力値Voxsは、図３に示したように、被検出ガスの空燃比が理論空燃比よりもリッチのとき最大出力値max（例えば、約０．９Ｖ〜１．０Ｖ）となる。最大出力値maxは、理論空燃比よりも小さい空燃比であるリッチ空燃比に対応する値であり、リッチ対応値とも称呼される。出力値Voxsは、被検出ガスの空燃比が理論空燃比よりもリーンのとき最小出力値min（例えば、約０．１Ｖ〜０Ｖ）となる。最小出力値minは、理論空燃比よりも大きい空燃比であるリーン空燃比に対応する値であり、リーン対応値とも称呼される。
【００６７】
更に、出力値Voxsは、被検出ガスの空燃比が理論空燃比であるとき最大出力値maxと最小出力値minの略中間の電圧Ｖst（中央値Vmid、中間電圧Ｖst、例えば、約０．５Ｖ）となる。出力値Voxsは、被検出ガスの空燃比が理論空燃比よりもリッチな空燃比からリーンな空燃比へと変化する際に最大出力値maxから最小出力値minへと急変する。同様に、出力値Voxsは、被検出ガスの空燃比が理論空燃比よりもリーンな空燃比からリッチな空燃比へと変化する際に最小出力値minから最大出力値maxへと急変する。
【００６８】
図１に示したアクセル開度センサ６８は、運転者によって操作されるアクセルペダルＡＰの操作量Accp（アクセルペダル操作量、アクセルペダルＡＰの開度）を表す信号を出力するようになっている。アクセルペダル操作量Accpは、アクセルペダルＡＰの操作量が大きくなるとともに大きくなる。
【００６９】
電気制御装置７０は、「ＣＰＵ、ＣＰＵが実行するプログラム、テーブル（マップ、関数）及び定数等を予め記憶したＲＯＭ、ＣＰＵが必要に応じてデータを一時的に格納するＲＡＭ、バックアップＲＡＭ（Ｂ−ＲＡＭ）、並びに、ＡＤコンバータを含むインターフェース等」からなる周知のマイクロコンピュータである。
【００７０】
バックアップＲＡＭは、機関１０を搭載した車両の図示しないイグニッション・キー・スイッチの位置（オフ位置、始動位置及びオン位置等の何れか）に関わらず、車両に搭載されたバッテリから電力の供給を受けるようになっている。バックアップＲＡＭは、バッテリから電力の供給を受けている場合、ＣＰＵの指示に応じてデータを格納する（データが書き込まれる）とともに、そのデータを読み出し可能となるように保持（記憶）する。従って、バックアップＲＡＭは、機関１０の運転停止中においてもデータを保持することができる。
【００７１】
バックアップＲＡＭは、バッテリが車両から取り外される等によりバッテリからの電力供給が遮断されると、データを保持することができない。そこで、ＣＰＵは、バックアップＲＡＭへの電力供給が再開されたとき、バックアップＲＡＭに保持されるべきデータを初期化（デフォルト値に設定）するようになっている。なお、バックアップＲＡＭは、ＥＥＰＲＯＭ等の読み書き可能な不揮発性メモリであってもよい。
【００７２】
電気制御装置７０は、上述したセンサ等と接続され、ＣＰＵにそれらのセンサからの信号を供給するようになっている。更に、電気制御装置７０は、ＣＰＵの指示に応じて、各気筒に対応して設けられた点火プラグ（実際にはイグナイタ）、各気筒に対応して設けられた燃料噴射弁３３、パージ制御弁５５、及び、スロットル弁アクチュエータ等に駆動信号（指示信号）を送出するようになっている。
【００７３】
なお、電気制御装置７０は、取得されたアクセルペダルの操作量Accpが大きくなるほどスロットル弁開度ＴＡが大きくなるように、スロットル弁アクチュエータに指示信号を送出するようになっている。即ち、電気制御装置７０は、運転者により変更される機関１０の加速操作量（アクセルペダル操作量Accp）に応じて「機関１０の吸気通路に配設されたスロットル弁３４」の開度を変更するスロットル弁駆動手段を備えている。
【００７４】
（第１制御装置の作動の概要）
第１制御装置は、下流側空燃比センサ６７の出力値Voxsに基づいて、触媒４３の状態（触媒４３の酸素吸蔵状態であり、以下「触媒状態」とも称呼する。）が、酸素過剰状態及び酸素不足状態の何れであるかを判定する。
【００７５】
酸素過剰状態はリーン状態とも称呼される。酸素過剰状態は、触媒４３の酸素吸蔵量がその最大酸素吸蔵量Ｃmaxに近い値となっている状態である。換言すると、酸素過剰状態は、触媒４３の酸素吸蔵量を減少すべき状態である。
酸素不足状態はリッチ状態とも称呼される。酸素不足状態は、触媒４３の酸素吸蔵量が「０」に近い値となっている状態である。換言すると、酸素不足状態は、触媒４３の酸素吸蔵量を増大すべき状態である。
【００７６】
但し、第１制御装置は、触媒状態が酸素不足状態であると判定した場合、次に触媒状態が酸素過剰状態になったと判定されるまで、触媒状態は酸素不足状態であると判定する。同様に、第１制御装置は、触媒状態が酸素過剰状態であると判定した場合、次に触媒状態が酸素不足状態になったと判定されるまで、触媒状態は酸素過剰状態であると判定する。
【００７７】
より具体的に述べると、第１制御装置は、触媒４３の状態が酸素過剰状態であると判定されている場合であって、出力値Voxsの所定時間あたりの変化量ΔVoxsが正の値であり、且つ、その大きさ｜ΔVoxs｜がリッチ判定閾値dRichthよりも大きくなったとき、触媒４３の状態が酸素不足状態となったと判定する。このとき、第１制御装置は、触媒リーン状態表示フラグＸCCROLeanの値を「０」に設定する。
【００７８】
更に、第１制御装置は、触媒４３の状態が酸素不足状態であると判定されているときに、変化量ΔVoxsが負の値であり、且つ、その大きさ｜ΔVoxs｜がリーン判定閾値dLeanthよりも大きくなったとき、触媒４３の状態が酸素過剰状態となったと判定する。このとき、第１制御装置は、触媒リーン状態表示フラグＸCCROLeanの値を「１」に設定する。
【００７９】
なお、第１制御装置は、触媒４３の状態が酸素過剰状態であると判定されている場合であって、出力値Voxsがリッチ判定閾値VRichthよりも大きくなったとき、触媒４３の状態が酸素不足状態となったと判定してもよい。更に、第１制御装置は、触媒４３の状態が酸素不足状態であると判定されている場合であって、出力値Voxsがリーン判定閾値VLeanthよりも小さくなったとき、触媒４３の状態が酸素過剰状態となったと判定してもよい。
【００８０】
触媒４３の状態が酸素不足状態であるとき、触媒４３には過剰な酸素を流入させるべきであるので、触媒流入ガスの目標値である目標空燃比abyfr（要求空燃比、上流側目標空燃比abyfr）は「理論空燃比よりも大きい目標リーン空燃比afLean」に設定されるべきである。そこで、第１制御装置は、触媒４３の状態が酸素不足状態であると判定している場合、目標空燃比abyfrを目標リーン空燃比afLeanに設定する（図４の時刻ｔ１〜時刻ｔ３、時刻ｔ５〜時刻ｔ７を参照。）。
【００８１】
触媒４３の状態が酸素過剰状態であるとき、触媒４３には過剰な未燃物を流入させるべきであるので、触媒流入ガスの目標空燃比abyfrは「理論空燃比よりも小さい目標リッチ空燃比afRich」に設定されるべきである。そこで、第１制御装置は、触媒４３の状態が酸素過剰状態であると判定している場合、目標空燃比abyfrを目標リッチ空燃比afRichに設定する（図４の時刻ｔ３〜時刻ｔ５、時刻ｔ７〜時刻ｔ９を参照。）。
【００８２】
以下、目標空燃比abyfrが目標リッチ空燃比afRichから目標リーン空燃比afLeanへと変更される時点（図４の時刻ｔ１、ｔ５、ｔ９）を「目標空燃比リッチリーン変更時点」と称呼する。更に、目標空燃比abyfrが目標リーン空燃比afLeanから目標リッチ空燃比afRichへと変更される時点（図４の時刻ｔ３、ｔ７）を「目標空燃比リーンリッチ変更時点」と称呼する。
【００８３】
一方、第１制御装置は、所定のパージ実行要求条件が不成立であるとき、パージ制御弁５５を閉弁し、蒸発燃料パージを実行しない。更に、第１制御装置は、パージ実行要求条件が不成立である状態から成立した状態へと変化したとき、下記の場合を除き、パージ制御弁５５を開弁し、蒸発燃料を吸気通路に導入する（即ち、蒸発燃料パージを開始する。）。
【００８４】
ところで、図５の時刻ｔ１以降に示したように、蒸発燃料パージが開始され、その蒸発燃料パージの影響が上流側空燃比abyfsに現れるとき、上流側空燃比abyfsの振幅は大きくなる。これは、吸気通路に導入されるガスに含まれる蒸発燃料の濃度が一定ではないからである。更に、図５の時刻ｔ１〜時刻ｔ２と、時刻ｔ２以降と、の比較から理解されるように、蒸発燃料パージの影響が上流側空燃比abyfsに現れ始めた直後において、上流側空燃比abyfsの変動幅は大きくなる。これは、メインフィードバック制御の制御遅れに起因する。
【００８５】
また、図５の時刻ｔ２以降に示されているように、蒸発燃料パージが継続されていれば、上流側空燃比abyfsの振幅は、蒸発燃料パージの影響が上流側空燃比abyfsに現れ始めた直後よりも小さく且つ略一定となる。更に、蒸発燃料パージが継続されている場合、下流側空燃比センサ６７の出力値Voxsは、その蒸発燃料パージの影響を反映する。換言すると、蒸発燃料パージが継続されていれば、下流側空燃比センサ６７の出力値Voxsは触媒状態を反映した値となる。従って、蒸発燃料パージを継続していてもエミッションが悪化する可能性は低い。
【００８６】
そこで、第１制御装置は、パージ実行要求条件が不成立である状態から成立した状態へと変化した時点が、目標空燃比リッチリーン変更時点から第１所定時間Δｔａ１が経過するまでの期間内である場合、蒸発燃料パージを開始することを禁止する（図４の時刻ｔ１〜ｔ２、時刻ｔ５〜ｔ６、時刻ｔ９〜ｔ１０を参照。）。そして、第１制御装置は、目標空燃比リッチリーン変更時点から第１所定時間Δｔａ１が経過した時点にてパージ実行要求条件が成立していれば、蒸発燃料パージを開始する。
【００８７】
これによれば、目標空燃比リッチリーン変更時点から第１所定時間Δｔａ１が経過した時点以降において蒸発燃料パージが開始され、蒸発燃料パージの開始の影響が上流側空燃比abyfsに現れる。目標空燃比リッチリーン変更時点から第１所定時間Δｔａ１が経過した時点において、触媒４３の酸素吸蔵量は「０」から乖離した値（図４の値Ｄ１）になっている。更に、蒸発燃料パージを開始した影響が上流側空燃比abyfsに現れる時点は目標空燃比リッチリーン変更時点から第１所定時間Δｔａ１が経過した時点よりも遅れる。従って、蒸発燃料パージを開始した影響が上流側空燃比abyfsに現れる時点において、触媒４３の酸素吸蔵量は「０」から十分に乖離した値となっているので、蒸発燃料パージを開始した影響が上流側空燃比abyfsに現れたとしても触媒４３の酸素吸蔵量が「０」に到達する可能性は低い。この結果、「蒸発燃料ガスパージに起因するエミッション悪化の可能性」を低減することができる。
【００８８】
更に、第１制御装置は、パージ実行要求条件が不成立である状態から成立した状態へと変化した時点が、目標空燃比リーンリッチ変更時点から第２所定時間Δｔａ２が経過するまでの期間内である場合、蒸発燃料パージを開始することを禁止する（図４の時刻ｔ３〜ｔ４、時刻ｔ７〜ｔ８を参照。）。そして、第１制御装置は、目標空燃比リーンリッチ変更時点から第２所定時間Δｔａ２が経過した時点にてパージ実行要求条件が成立していれば、蒸発燃料パージを開始する。
【００８９】
これによれば、目標空燃比リーンリッチ変更時点から第２所定時間Δｔａ２が経過した時点以降において蒸発燃料パージが開始され、蒸発燃料パージの開始の影響が上流側空燃比abyfsに現れる。目標空燃比リッチリーン変更時点から第２所定時間Δｔａ２が経過した時点において、触媒４３の酸素吸蔵量は最大酸素吸蔵量Ｃmaxから乖離した値（図４の値Ｄ２だけ最大酸素吸蔵量Ｃmaxよりも小さい値）になっている。更に、蒸発燃料パージを開始した影響が上流側空燃比abyfsに現れる時点は目標空燃比リーンリッチ変更時点から第２所定時間Δｔａ２が経過した時点よりも遅れる。従って、蒸発燃料パージを開始した影響が上流側空燃比abyfsに現れる時点において、触媒４３の酸素吸蔵量は最大酸素吸蔵量Ｃmaxから十分に乖離した値となっているので、蒸発燃料パージを開始した影響が上流側空燃比abyfsに現れたとしても触媒４３の酸素吸蔵量が最大酸素吸蔵量Ｃmaxに到達する可能性は低い。この結果、「蒸発燃料ガスパージに起因するエミッション悪化の可能性」を低減することができる。
【００９０】
（実際の作動）
次に、第１制御装置の実際の作動について説明する。
＜燃料噴射制御＞
第１制御装置のＣＰＵは、図６に示した燃料噴射制御ルーチンを、任意の気筒のクランク角度が吸気上死点前の所定クランク角度となる毎に、その気筒に対して繰り返し実行するようになっている。前記所定クランク角度は、例えば、ＢＴＤＣ９０°ＣＡ（吸気上死点前９０°クランク角度）である。クランク角度が前記所定クランク角度に一致した気筒は「燃料噴射気筒」とも称呼される。ＣＰＵは、この燃料噴射制御ルーチンにより、指示燃料噴射量（最終燃料噴射量）Ｆｉの計算及び燃料噴射の指示を行う。
【００９１】
任意の気筒のクランク角度が吸気上死点前の所定クランク角度と一致すると、ＣＰＵはステップ６００から処理を開始し、ステップ６０５にてフューエルカットフラグＸＦＣの値が「０」であるか否かを判定する。フューエルカットフラグＸＦＣの値は、フューエルカット開始条件が成立したときに「１」に設定され、フューエルカットフラグＸＦＣの値が「１」であるときにフューエルカット終了条件が成立したときに「０」に設定される。フューエルカットフラグＸＦＣの値は更にイニシャルルーチンにおいて「０」に設定されるようになっている。イニシャルルーチンは、機関１０が搭載された車両のイグニッション・キー・スイッチがオフからオンに変更されたときにＣＰＵにより実行されるルーチンである。
【００９２】
いま、フューエルカットフラグＸＦＣの値が「０」であると仮定する。この場合、ＣＰＵは、ステップ６０５にて「Ｙｅｓ」と判定してステップ６１０に進み、「吸入空気量Ｇａ、機関回転速度ＮＥ、及び、ルックアップテーブルMapMc（Ｇａ，ＮＥ）」に基いて「燃料噴射気筒に吸入される空気量（即ち、筒内吸入空気量）Ｍｃ）」を取得する。筒内吸入空気量Ｍｃは、周知の空気モデル（吸気通路における空気の挙動を模した物理法則に従って構築されたモデル）により算出されてもよい。
【００９３】
次に、ＣＰＵはステップ６１５に進み、フィードバック制御フラグＸＦＢの値が「１」であるか否かを判定する。このフィードバック制御フラグＸＦＢの値は、空燃比のフィードバック制御条件が成立しているときに「１」に設定され、フィードバック制御条件が成立していないときに「０」に設定される。フィードバック制御条件は、例えば、以下の総ての条件が成立したときに成立する。
（Ａ１）上流側空燃比センサ６６が活性化している。
（Ａ２）下流側空燃比センサ６７が活性化している。
（Ａ３）機関の負荷ＫＬが閾値負荷ＫＬfbｔｈ以下である。
（Ａ４）フューエルカットフラグＸＦＣの値が「０」である。
【００９４】
なお、負荷ＫＬは、本例において負荷率（充填率）ＫＬであり、下記の（１）式に基いて算出される。この（１）式において、ρは空気密度（単位は（ｇ／ｌ））、Ｌは機関１０の排気量（単位は（ｌ））、４は機関１０の気筒数である。但し、負荷ＫＬは、筒内吸入空気量Ｍｃ、スロットル弁開度ＴＡ及びアクセルペダル操作量Accp等であってもよい。
ＫＬ＝｛Ｍｃ（ｋ）／（ρ・Ｌ／４）｝・100（％）…（１）
【００９５】
フィードバック制御フラグＸＦＢの値が「１」でなければ、ＣＰＵはステップ６１５にて「Ｎｏ」と判定してステップ６２０に進み、目標空燃比abyfrを理論空燃比stoich（例えば、１４．６）に設定する。
【００９６】
次に、ＣＰＵは以下に述べるステップ６２５乃至ステップ６４０の処理を順に行い、ステップ６９５に進んで本ルーチンを一旦終了する。
【００９７】
ステップ６２５：ＣＰＵは、筒内吸入空気量Ｍｃを目標空燃比abyfrで除することによって基本燃料噴射量Ｆｂａｓｅを算出する。基本燃料噴射量Ｆｂａｓｅは、機関の空燃比を目標空燃比abyfrに一致させるために必要な燃料噴射量のフィードフォワード量である。
【００９８】
ステップ６３０：ＣＰＵは、図示しないルーチンにより別途計算されているメインフィードバック量ＫＦmainを読み込む。メインフィードバック量ＫＦmainは、検出上流側空燃比abyfsが目標空燃比abyfrに一致するように周知のＰＩＤ制御に基づいて算出される。従って、メインフィードバック量ＫＦmainは、検出上流側空燃比abyfsが目標空燃比abyfrよりも大きいとき増大させられ、検出上流側空燃比abyfsが目標空燃比abyfrよりも小さいとき減少させられる。なお、メインフィードバック量ＫＦmainは、フィードバック制御フラグＸＦＢの値が「０」であるとき「１」に設定される。
【００９９】
ステップ６３５：ＣＰＵは、基本燃料噴射量Ｆｂａｓｅをメインフィードバック量ＫＦmainにより補正することによって指示燃料噴射量Ｆｉを算出する。より具体的に述べると、ＣＰＵは、基本燃料噴射量Ｆｂａｓｅにメインフィードバック量ＫＦmainを乗じることによって指示燃料噴射量Ｆｉを算出する。
【０１００】
ステップ６４０：ＣＰＵは、「指示燃料噴射量Ｆｉの燃料」を「燃料噴射気筒に対応して設けられている燃料噴射弁３３」から噴射させるための噴射指示信号を、その燃料噴射弁３３に送出する。
【０１０１】
この結果、機関の空燃比を目標空燃比abyfrに一致させるために必要な量の燃料が燃料噴射気筒の燃料噴射弁３３から噴射させられる。即ち、ステップ６２５乃至ステップ６４０は、「機関の空燃比が目標空燃比abyfrに一致するように指示燃料噴射量Ｆｉを制御する」指示燃料噴射量制御手段を構成している。
【０１０２】
一方、ＣＰＵがステップ６１５の処理を行う時点において、フィードバック制御フラグＸＦＢの値が「１」であると、ＣＰＵはそのステップ６１５にて「Ｙｅｓ」と判定してステップ６４５に進み、触媒リーン状態表示フラグＸCCROLeanの値が「１」であるか否かを判定する。触媒リーン状態表示フラグＸCCROLeanの値は後述するルーチンにより設定される。触媒リーン状態表示フラグＸCCROLeanの値が「１」であるか否かの判定は、リッチ空燃比要求フラグＸRichreqの値が「１」であるか否かの判定と同義である。即ち、ステップ６４５においては、触媒４３の酸素吸蔵状態が酸素過剰状態であるか否か、換言すると、目標空燃比abyfrを目標リッチ空燃比afRichに設定する空燃比要求であるリッチ空燃比要求が発生しているか否かが判定される。
【０１０３】
触媒リーン状態表示フラグＸCCROLeanの値が「１」であると、ＣＰＵはステップ６４５にて「Ｙｅｓ」と判定してステップ６５０に進み、目標空燃比abyfrを「所定の目標リッチ空燃比afRich（理論空燃比よりも小さい一定の空燃比、例えば、１４．２）」に設定する。その後、ＣＰＵはステップ６２５以降に進む。従って、機関の空燃比は目標リッチ空燃比afRichに一致させられる。
【０１０４】
これに対し、ＣＰＵがステップ６４５の処理を実行する時点において、触媒リーン状態表示フラグＸCCROLeanの値が「０」であると、ＣＰＵはステップ６４５にて「Ｎｏ」と判定してステップ６５５に進み、目標空燃比abyfrを「所定の目標リーン空燃比afLean（理論空燃比よりも大きい一定の空燃比、例えば、１５．０）」に設定する。その後、ＣＰＵはステップ６２５以降に進む。従って、機関の空燃比は目標リーン空燃比afLeanに一致させられる。
【０１０５】
一方、ＣＰＵがステップ６０５の処理を実行する時点において、フューエルカットフラグＸＦＣの値が「１」であると、ＣＰＵはそのステップ６０５にて「Ｎｏ」と判定してステップ６９５に直接進み、本ルーチンを一旦終了する。この場合、ステップ６４０の処理による燃料噴射が実行されないので、フューエルカット制御が実行される。即ち、機関１０の運転状態はフューエルカット運転状態となる。
【０１０６】
＜触媒状態判定＞
ＣＰＵは図７にフローチャートにより示した「触媒状態判定ルーチン（要求空燃比決定ルーチン）」を所定時間ｔｓの経過毎に繰り返し実行している。従って、所定のタイミングになると、ＣＰＵはステップ７００から処理を開始してステップ７１０に進み、「現時点の下流側空燃比センサ６７の出力値Voxs」から「前回の下流側空燃比センサ６７の出力値Voxsold」を減じることにより、所定時間ｔｓ（単位時間）あたりの出力値Voxsの変化量ΔVoxsを算出する。前回の出力値Voxsoldは、次のステップ７２０にて更新される値であり、現時点から所定時間ｔｓだけ前の時点の出力値Voxs（本ルーチンが前回実行されたときの出力値Voxs）である。変化量ΔVoxsは変化速度ΔVoxsとも称呼される。次に、ＣＰＵはステップ７２０に進み、現時点の出力値Voxsを「前回の出力値Voxsold」として記憶する。
【０１０７】
次に、ＣＰＵはステップ７３０に進み、触媒リーン状態表示フラグＸCCROLeanの値が「１」であるか否かを判定する。触媒リーン状態表示フラグＸCCROLeanの値は、上述したイニシャルルーチンにおいて「１」に設定されるようになっている。更に、触媒リーン状態表示フラグＸCCROLeanの値は、後述するように、下流側空燃比センサ６７の出力値Voxsに基づいて触媒４３の状態が酸素不足状態（リッチ状態）であると判定されたときに「０」に設定され、下流側空燃比センサ６７の出力値Voxsに基づいて触媒４３の状態が酸素過剰状態（リーン状態）であると判定されたときに「１」に設定される。
【０１０８】
いま、触媒リーン状態表示フラグＸCCROLeanの値が「１」であると仮定する。この場合、ＣＰＵはステップ７３０にて「Ｙｅｓ」と判定してステップ７４０に進み、変化速度ΔVoxsが正であるか否かを判定する。即ち、ＣＰＵは、出力値Voxsが増大しているか否かを判定する。このとき、変化速度ΔVoxsが正でなければ、ＣＰＵはステップ７４０にて「Ｎｏ」と判定し、ステップ７９５に直接進んで本ルーチンを一旦終了する。
【０１０９】
ところで、触媒リーン状態表示フラグＸCCROLeanの値が「１」であるとき、目標空燃比abyfrは目標リッチ空燃比afRichに設定される。従って、触媒４３の酸素吸蔵量は次第に減少し、ある時点から未燃物が触媒４３から流出し始める。その結果、変化速度ΔVoxsは正の値となる。変化速度ΔVoxsが正の値になると、ＣＰＵはステップ７４０にて「Ｙｅｓ」と判定してステップ７５０に進み、変化速度ΔVoxsの大きさ｜ΔVoxs｜がリッチ判定閾値dRichthよりも大きいか否かを判定する。このとき、大きさ｜ΔVoxs｜がリッチ判定閾値dRichth以下であると、ＣＰＵはステップ７５０にて「Ｎｏ」と判定し、ステップ７９５に直接進んで本ルーチンを一旦終了する。
【０１１０】
ＣＰＵがステップ７５０の処理を実行する時点において、変化速度ΔVoxsの大きさ｜ΔVoxs｜がリッチ判定閾値dRichthよりも大きいと、ＣＰＵはそのステップ７５０にて「Ｙｅｓ」と判定してステップ７６０に進み、触媒リーン状態表示フラグＸCCROLeanの値を「０」に設定する。即ち、出力値Voxsが増大していて且つその変化速度ΔVoxsの大きさ｜ΔVoxs｜がリッチ判定閾値dRichthよりも大きい場合、ＣＰＵは「触媒４３の状態は酸素不足状態である。」と判定し、触媒リーン状態表示フラグＸCCROLeanの値を「０」に設定する。
【０１１１】
この状態（即ち、触媒リーン状態表示フラグＸCCROLeanの値が「０」に設定された状態）において、ＣＰＵがステップ７００から処理を再び開始すると、ＣＰＵはステップ７１０及びステップ７２０を経由してステップ７３０に進み、そのステップ７３０にて「Ｎｏ」と判定してステップ７７０に進む。
【０１１２】
ＣＰＵは、ステップ７７０にて変化速度ΔVoxsが負であるか否かを判定する。即ち、ＣＰＵは、出力値Voxsが減少しているか否かを判定する。このとき、変化速度ΔVoxsが負でなければ、ＣＰＵはステップ７７０にて「Ｎｏ」と判定し、ステップ７９５に直接進んで本ルーチンを一旦終了する。
【０１１３】
ところで、触媒リーン状態表示フラグＸCCROLeanの値が「０」であるとき、目標空燃比abyfrは目標リーン空燃比afLeanに設定される。従って、触媒４３の酸素吸蔵量は次第に増大し、ある時点から酸素が触媒４３から流出し始める。その結果、変化速度ΔVoxsは負の値となる。変化速度ΔVoxsが負の値になると、ＣＰＵはステップ７７０にて「Ｙｅｓ」と判定してステップ７８０に進み、変化速度ΔVoxsの大きさ｜ΔVoxs｜がリーン判定閾値dLeanthよりも大きいか否かを判定する。このとき、大きさ｜ΔVoxs｜がリーン判定閾値dLeanth以下であると、ＣＰＵはステップ７８０にて「Ｎｏ」と判定し、ステップ７９５に直接進んで本ルーチンを一旦終了する。
【０１１４】
これに対し、変化速度ΔVoxsの大きさ｜ΔVoxs｜がリーン判定閾値dLeanthよりも大きいと、ＣＰＵはステップ７８０にて「Ｙｅｓ」と判定してステップ７９０に進み、触媒リーン状態表示フラグＸCCROLeanの値を「１」に設定する。即ち、出力値Voxsが減少していて且つその変化速度ΔVoxsの大きさ｜ΔVoxs｜がリーン判定閾値dLeanthよりも大きい場合、ＣＰＵは「触媒４３の状態が酸素過剰状態である。」と判定し、触媒リーン状態表示フラグＸCCROLeanを「１」に設定する。
【０１１５】
なお、ＣＰＵは、触媒リーン状態表示フラグＸCCROLeanの値が「１」であるとき、出力値Voxsがリッチ判定閾値VRichthよりも大きくなったとき、触媒リーン状態表示フラグＸCCROLeanの値を「０」に設定してもよい。同様に、触媒リーン状態表示フラグＸCCROLeanの値が「０」であるとき、出力値Voxsがリーン判定閾値VLeanthよりも小さくなったとき、触媒リーン状態表示フラグＸCCROLeanの値を「１」に設定してもよい。この場合、リッチ判定閾値VRichthは中央値Vmid以下の値であってもよい。リーン判定閾値VLeanthは中央値Vmid以上の値であってもよい。
【０１１６】
このように触媒リーン状態表示フラグＸCCROLeanの値は、下流側空燃比センサ６７の出力値Voxsに基づいて、「１」及び「０」の何れかの値に交互に設定される。そして、触媒リーン状態表示フラグＸCCROLeanに応じて目標空燃比abyfrが決定され（図６のルーチンのステップ６４５乃至ステップ６５５を参照。）、その目標空燃比abyfrに基づいて指示燃料噴射量Ｆｉが決定される（図６のルーチンのステップ６２５乃至ステップ６３５を参照。）。
【０１１７】
＜蒸発燃料パージ制御＞
ＣＰＵは図８に示した蒸発燃料パージ制御ルーチンを所定時間の経過毎に実行するようになっている。従って、所定のタイミングになるとＣＰＵはステップ８００から処理を開始してステップ８１０に進み、パージ実行フラグＸＰＧの値が「０」であるか否かを判定する。このパージ実行フラグＸＰＧの値は、上述したイニシャルルーチンにおいて「０」に設定されている。更に、パージ実行フラグＸＰＧの値は、後述するように、蒸発燃料パージを実行する際に「１」に設定され、蒸発燃料パージの実行を停止する際に「０」に設定される。
【０１１８】
いま、蒸発燃料パージが実行されておらず、パージ実行フラグＸＰＧの値が「０」であると仮定する。この場合、ＣＰＵはステップ８１０にて「Ｙｅｓ」と判定してステップ８２０に進み、パージ実行要求フラグＸＰＧreqの値が「１」であるか否かを判定する。
【０１１９】
パージ実行要求フラグＸＰＧreqの値は、パージ実行要求条件が成立している場合に「１」に設定され、パージ実行要求条件が成立していない場合に「０」に設定される。更に、パージ実行要求フラグＸＰＧreqの値は、上述したイニシャルルーチンにおいて「０」に設定される。
【０１２０】
このパージ実行要求条件は、例えば、以下の総ての条件が成立したときに成立する。勿論、パージ実行要求条件を構成する条件には、他の条件が加えられてもよい。
（Ｂ１）フィードバック制御フラグＸＦＢの値が「１」である（空燃比のフィードバック制御が実行中である。）。
（Ｂ２）機関１０が定常運転されている（例えば、機関の負荷を表すスロットル弁開度ＴＡの単位時間あたりの変化量が所定値以下である。）。
（Ｂ３）冷却水温ＴＨＷが閾値冷却水温ＴＨＷｔｈ以上である。
【０１２１】
いま、パージ実行要求条件が不成立であり、従って、パージ実行要求フラグＸＰＧreqの値が「０」であると仮定する。この場合、ＣＰＵはステップ８２０にて「Ｎｏ」と判定してステップ８３０に直接進み、パージ実行フラグＸＰＧの値が「１」であるか否かを判定する。この場合、パージ実行フラグＸＰＧの値は「０」である。よって、ＣＰＵはステップ８３０にて「Ｎｏ」と判定してステップ８４０に進み、デューティ比ＤＰＧを「０」に設定することによりパージ制御弁５５を閉弁する。即ち、ＣＰＵは、ステップ８４０にて蒸発燃料パージを停止する。なお、現時点においては、蒸発燃料パージは実行されていないので、パージ制御弁５５は閉弁した状態に維持される。その後、ＣＰＵはステップ８９５に進み、本ルーチンを一旦終了する。
【０１２２】
この状態において、パージ実行要求条件が成立すると、パージ実行要求フラグＸＰＧreqの値は図示しないルーチンにおいて「１」に設定される。この場合、ＣＰＵはステップ８１０及びステップ８２０の両ステップにて「Ｙｅｓ」と判定してステップ８５０に進み、パージ実行禁止フラグＸＰＧkinshiの値が「０」であるか否かを判定する。
【０１２３】
パージ実行禁止フラグＸＰＧkinshiの値は、上述したイニシャルルーチンにおいて「０」に設定される。更に、パージ実行禁止フラグＸＰＧkinshiの値は、後述する図９に示したパージ実行禁止フラグ設定ルーチンにより、「目標空燃比リッチリーン変更時点から第１所定時間Δｔａ１が経過するまでの期間」及び「目標空燃比リーンリッチ変更時点から第２所定時間Δｔａ２が経過するまでの期間」において「１」に設定され、それ以外の期間において「０」に設定される。
【０１２４】
いま、パージ実行禁止フラグＸＰＧkinshiの値が「１」であると仮定する。この場合、ＣＰＵはステップ８５０にて「Ｎｏ」と判定し、ステップ８３０に直接進む。従って、パージ実行フラグＸＰＧの値は「０」に維持される。よって、ＣＰＵはステップ８３０にて「Ｎｏ」と判定してステップ８４０に進む。この結果、蒸発燃料パージは停止され続ける。換言すると、パージ実行要求条件が成立した場合であっても、パージ実行禁止フラグＸＰＧkinshiの値が「１」である場合、蒸発燃料パージは開始されない。即ち、蒸発燃料パージの実行開始が禁止される。
【０１２５】
これに対し、ＣＰＵがステップ８５０の処理を実行する時点において、パージ実行禁止フラグＸＰＧkinshiの値が「０」であると、ＣＰＵはそのステップ８５０にて「Ｙｅｓ」と判定してステップ８６０に進み、パージ実行フラグＸＰＧの値を「１」に設定する。
【０１２６】
この場合、ＣＰＵは続くステップ８３０にて「Ｙｅｓ」と判定してステップ８７０に進み、パージ制御弁５５を開弁することにより、蒸発燃料を吸気通路に導入する。即ち、ＣＰＵは、蒸発燃料パージを開始させる。なお、実際には、ＣＰＵは吸入空気量Ｇａ及び機関回転速度ＮＥに基づいてデューティ比ＤＰＧを決定し、そのデューティ比ＤＰＧに応じた信号をパージ制御弁５５に送信する。その後、ＣＰＵはステップ８９５に進み、本ルーチンを一旦終了する。
【０１２７】
これにより、ＣＰＵが次に図８に示したルーチンをステップ８００から開始すると、ＣＰＵはステップ８１０にて「Ｎｏ」と判定してステップ８８０に進み、パージ実行要求フラグＸＰＧreqの値が「０」であるか否かを判定する。このとき、パージ実行要求フラグＸＰＧreqの値が「１」であれば、ＣＰＵはステップ８８０にて「Ｎｏ」と判定し、ステップ８３０に直接進む。よって、パージ実行フラグＸＰＧの値は「１」に維持されるので、ステップ８７０の処理が実行される。その結果、蒸発燃料パージが継続して実行される。
【０１２８】
これに対し、ＣＰＵがステップ８８０の処理を実行する時点において、パージ実行要求条件が不成立となっていて、パージ実行要求フラグＸＰＧreqの値が「０」となっていると、ＣＰＵはそのステップ８８０にて「Ｙｅｓ」と判定してステップ８９０に進み、パージ実行フラグＸＰＧの値を「０」に設定する。その後、ＣＰＵはステップ８３０に進む。よって、ＣＰＵはステップ８３０にて「Ｎｏ」と判定してステップ８４０に進み、デューティ比ＤＰＧを「０」に設定することによりパージ制御弁５５を閉弁する。即ち、ＣＰＵは、ステップ８４０にて蒸発燃料パージを停止する。
【０１２９】
＜パージ実行禁止フラグ設定＞
ＣＰＵは図９に示した蒸発燃料パージ制御ルーチンを所定時間の経過毎に実行するようになっている。従って、所定のタイミングになるとＣＰＵはステップ９００から処理を開始してステップ９１０に進み、現時点が「目標空燃比リッチリーン変更時点から第１所定時間Δｔａ１が経過するまでの期間」内であるか否かを判定する。第１所定時間Δｔａ１はパージ禁止時間（所定時間）とも称呼される。
【０１３０】
現時点が「目標空燃比リッチリーン変更時点から第１所定時間Δｔａ１が経過するまでの期間」内であると、ＣＰＵはステップ９１０にて「Ｙｅｓ」と判定してステップ９２０に進み、パージ実行禁止フラグＸＰＧkinshiの値を「１」に設定する。その後、ＣＰＵはステップ９９５に進み、本ルーチンを一旦終了する。
【０１３１】
これに対し、ＣＰＵがステップ９１０の処理を実行する時点において、現時点が「目標空燃比リッチリーン変更時点から第１所定時間Δｔａ１が経過するまでの期間」内でなければ、ＣＰＵはそのステップ９１０にて「Ｎｏ」と判定してステップ９３０に進み、現時点が「目標空燃比リーンリッチ変更時点から第２所定時間Δｔａ２が経過するまでの期間」内であるか否かを判定する。第２所定時間Δｔａ２も、第１所定時間Δｔａ１と同様、パージ禁止時間（所定時間）とも称呼される。
【０１３２】
現時点が「目標空燃比リーンリッチ変更時点から第２所定時間Δｔａ２が経過するまでの期間」内であると、ＣＰＵはステップ９３０にて「Ｙｅｓ」と判定してステップ９２０に進み、パージ実行禁止フラグＸＰＧkinshiの値を「１」に設定する。その後、ＣＰＵはステップ９９５に進み、本ルーチンを一旦終了する。
【０１３３】
これに対し、ＣＰＵがステップ９３０の処理を実行する時点において、現時点が「目標空燃比リーンリッチ変更時点から第２所定時間Δｔａ２が経過するまでの期間」内でなければ、ＣＰＵはそのステップ９３０にて「Ｎｏ」と判定してステップ９４０に進み、パージ実行禁止フラグＸＰＧkinshiの値を「０」に設定する。その後、ＣＰＵはステップ９９５に進み、本ルーチンを一旦終了する。
【０１３４】
このように、パージ実行禁止フラグＸＰＧkinshiの値は、現時点が「目標空燃比リッチリーン変更時点から第１所定時間Δｔａ１が経過するまでの期間」内であるとき、及び、現時点が「目標空燃比リーンリッチ変更時点から第２所定時間Δｔａ２が経過するまでの期間」内であるとき、「１」に設定され、それ以外のとき「０」に設定される。
【０１３５】
以上、説明したように、第１制御装置は、
触媒４３の酸素吸蔵状態が、酸素過剰状態であるか、酸素不足状態であるか、を下流側空燃比センサ６７の出力値Voxsに基づいて判定する触媒状態判定手段（図７のルーチン）と、
前記酸素吸蔵状態が前記酸素過剰状態であると判定されている場合に目標空燃比abyfrを目標リッチ空燃比afRichに設定し（図６のステップ６４５及びステップ６５０）、前記酸素吸蔵状態が前記酸素不足状態であると判定されている場合に目標空燃比abyfrを目標リーン空燃比afLeanに設定する（図６のステップ６４５及びステップ６５５）、目標空燃比設定手段と、
燃料噴射弁３３から噴射される燃料の量である燃料噴射量Ｆｉを前記設定された目標空燃比abyfr（及び筒内吸入空気量Ｍｃ）に応じて決定するとともに同決定した燃料噴射量Ｆｉの燃料を燃料噴射弁３３から噴射させる燃料噴射制御手段（図６のステップ６２５乃至ステップ６４０）と、
燃料噴射弁３３に供給される燃料を貯蔵する燃料タンク５１内に発生した蒸発燃料を機関１０の吸気通路に導入する蒸発燃料パージを所定のパージ実行要求条件が成立している場合に実行する蒸発燃料パージ手段（パージ制御弁５５を含む蒸発燃料供給系統５０、図８のステップ８２０、ステップ８６０、ステップ８３０及びステップ８７０）と、
を備えた内燃機関の制御装置において、
前記蒸発燃料パージ手段は、
目標空燃比abyfrが目標リッチ空燃比afRichから目標リーン空燃比afLeanへと変更される時点である目標空燃比リッチリーン変更時点、及び、目標空燃比abyfrが目標リーン空燃比afLeanから目標リッチ空燃比afRichへと変更される時点である目標空燃比リーンリッチ変更時点、の少なくとも一方の時点から所定時間（第１所定時間Δｔａ１、第２所定時間Δｔａ２）が経過するまでの期間、前記パージ実行要求条件が成立した場合であっても（図８のステップ８２０での「Ｙｅｓ」との判定を参照。）、前記蒸発燃料パージの実行を開始しないように構成されている（図９のルーチン、図８のステップ８５０での「Ｎｏ」との判定、ステップ８３０及びステップ８４０を参照。）。
【０１３６】
この第１制御装置によれば、目標空燃比リッチリーン変更時点から第１所定時間Δｔａ１が経過した時点以降において、換言すると、触媒４３の酸素吸蔵量がある程度大きくなっている時点以降において、蒸発燃料パージを開始したことに起因する空燃比の変動が上流側空燃比に現れる。よって、触媒の酸素吸蔵量が「０」に到達する可能性を低減することができるので、エミッションが悪化する可能性を低減することができる。
【０１３７】
同様に、第１制御装置によれば、目標空燃比リーンリッチ変更時点から第２所定時間Δｔａ２が経過した時点以降において、換言すると、触媒の酸素吸蔵量がある程度小さくなっている時点以降において、蒸発燃料パージを開始したことに起因する空燃比の変動が上流側空燃比に現れる。よって、触媒の酸素吸蔵量が最大酸素吸蔵量Ｃmaxに到達する可能性を低減することができるので、エミッションが悪化する可能性を低減することができる。
【０１３８】
＜第２実施形態＞
次に、本発明の第２実施形態に係る内燃機関の制御装置（以下、「第２制御装置」とも称呼する。）について説明する。
【０１３９】
第１制御装置は、蒸発燃料パージの開始を「目標空燃比リッチリーン変更時点から第１所定時間Δｔａ１が経過するまでの期間」及び「目標空燃比リーンリッチ変更時点から第２所定時間Δｔａ２が経過するまでの期間」において禁止する。しかしながら、触媒４３の酸素吸蔵量ＯＳＡは、目標空燃比リッチリーン変更時点の直前においても「０」に極めて近い値となっている。よって、そのような場合に「蒸発燃料パージの実行開始に起因する上流側空燃比abyfsの大きな変動」が発生することは好ましくない。同様に、触媒４３の酸素吸蔵量ＯＳＡは、目標空燃比リーンリッチ変更時点の直前においても最大酸素吸蔵量Ｃmaxに極めて近い値となっている。よって、そのような場合に「蒸発燃料パージの実行開始に起因する上流側空燃比abyfsの大きな変動」が発生することは好ましくない。
【０１４０】
そこで、第２制御装置は、目標空燃比リッチリーン変更時点ｔＲＬを予測し、その予測した目標空燃比リッチリーン変更時点ｔＲＬよりも第３所定時間Δｔｂ１前の時点から、その予測した目標空燃比リッチリーン変更時点から第１所定時間Δｔａ１が経過する時点までの期間、蒸発燃料パージが開始されることを禁止する（図１０の時刻ｔ１〜ｔ３、時刻ｔ７〜ｔ９、時刻ｔ１３〜ｔ１５を参照。）。
【０１４１】
更に、第２制御装置は、目標空燃比リーンリッチ変更時点ｔＬＲを予測し、その予測した目標空燃比リーンリッチ変更時点ｔＬＲよりも第４所定時間Δｔｂ２前の時点から、その予測した目標空燃比リーンリッチ変更時点ｔＬＲから第２所定時間Δｔａ２が経過する時点までの期間、蒸発燃料パージが開始されることを禁止する（図１０の時刻ｔ４〜ｔ６、時刻ｔ１０〜ｔ１２を参照。）。
【０１４２】
（実際の作動）
第２制御装置のＣＰＵは、図６、図７及び図８に示したルーチンを第１制御装置のＣＰＵと同様に実行する。更に、第２制御装置のＣＰＵは、所定時間が経過する毎に「図９に代わる図１１にフローチャートにより示したパージ実行禁止フラグ設定ルーチン」を実行するようになっている。従って、以下、主として図１１を参照しながら第２制御装置の作動について説明する。
【０１４３】
所定のタイミングになると、ＣＰＵは図１１のステップ１１００から処理を開始してステップ１１１０に進み、吸入空気量Ｇａに基づいて「目標リッチ空燃比継続時間ＴＲＬ及び目標リーン空燃比継続時間ＴＬＲ」を推定する。
【０１４４】
目標リッチ空燃比継続時間ＴＲＬは、「目標空燃比abyfrが目標リッチ空燃比afRichに設定されてから目標空燃比abyfrが目標リーン空燃比afLeanに設定されるまでの時間（即ち、触媒４３の状態が酸素過剰状態であると判定されてから酸素不足状態であると判定されるまでの時間）」である。
【０１４５】
目標リーン空燃比継続時間ＴＬＲは、「目標空燃比abyfrが目標リーン空燃比afLeanに設定されてから目標リッチ空燃比afRichに設定されるまでの時間（即ち、触媒４３の状態が酸素不足状態であると判定されてから酸素過剰状態であると判定されるまでの時間）」である。
【０１４６】
図１２の（Ａ）及び（Ｂ）は、吸入空気量Ｇａが比較的小さい第１吸入空気量Ｇａ１である場合における上流側空燃比（実際には目標空燃比abyfr）及び触媒４３の酸素吸蔵量ＯＳＡをそれぞれ示すタイムチャートであり、図１２の（Ｃ）及び（Ｄ）は、吸入空気量Ｇａが比較的大きい第２吸入空気量Ｇａ２である場合における、上流側空燃比（実際には目標空燃比abyfr）及び触媒４３の酸素吸蔵量ＯＳＡをそれぞれ示すタイムチャートである。
【０１４７】
図１２から理解されるように、目標リッチ空燃比afRichが一定値であり且つ目標リーン空燃比afLeanが一定値であれば、吸入空気量Ｇａが大きいほど目標空燃比切替え周期Ｔ（従って、目標リッチ空燃比継続時間ＴＲＬ及び目標リーン空燃比継続時間ＴＬＲのそれぞれ）は短くなる。目標空燃比切替え周期Ｔは、目標リッチ空燃比継続時間ＴＲＬと目標リーン空燃比継続時間ＴＬＲの和である。
【０１４８】
図１３は、上流側空燃比の変動幅ΔＡ／Ｆ（＝目標リーン空燃比afLean−目標リッチ空燃比afRich）及び吸入空気量Ｇａと、目標空燃比切替え周期Ｔと、の関係を示したマップである。
【０１４９】
図１３から理解されるように、上流側空燃比の変動幅ΔＡ／Ｆが大きくなるほど目標空燃比切替え周期Ｔは短くなり、吸入空気量Ｇａが大きいほど目標空燃比切替え周期Ｔは短くなる。
【０１５０】
一方、第２制御装置において、目標リッチ空燃比afRichが一定値であり且つ目標リーン空燃比afLeanが一定値である。そこで、第２制御装置の電気制御装置７０は、ＲＯＭ内にルックアップテーブルMapＴＲＬ(Ｇａ）及びルックアップテーブルMapＴＬＲ(Ｇａ）を予め格納している。
【０１５１】
ルックアップテーブルMapＴＲＬ(Ｇａ）は、「吸入空気量Ｇａ」と「目標リッチ空燃比継続時間ＴＲＬ」との関係を規定している。このルックアップテーブルMapＴＲＬ(Ｇａ）は予め実験により得られたデータに基づいて形成されている。
【０１５２】
同様に、ルックアップテーブルMapＴＬＲ(Ｇａ）は、「吸入空気量Ｇａ」と「目標リーン空燃比継続時間ＴＬＲ」との関係を規定している。このルックアップテーブルMapＴＬＲ(Ｇａ）も予め実験により得られたデータに基づいて形成されている。
【０１５３】
そして、ＣＰＵは図１１のステップ１１１０において、実際の吸入空気量ＧａをルックアップテーブルMapＴＲＬ(Ｇａ）に適用することにより目標リッチ空燃比継続時間ＴＲＬを推定し、実際の吸入空気量ＧａをルックアップテーブルMapＴＬＲ(Ｇａ）に適用することにより目標リーン空燃比継続時間ＴＬＲを推定する。なお、本例において、目標リッチ空燃比afRichは一定値であり、目標リーン空燃比afLeanは一定値であるので、上流側空燃比の変動幅ΔＡ／Ｆが目標リッチ空燃比継続時間ＴＲＬ及び目標リーン空燃比継続時間ＴＬＲのそれぞれに及ぼす影響を考慮する必要はない。
【０１５４】
また、「吸入空気量Ｇａ」と「目標空燃比切替周期Ｔ＝ＴＬＲ＋ＴＲＬ」との関係を規定するルックアップテーブルMapＴ（Ｇａ）を予め記憶しておき、実際の吸入空気量ＧａをルックアップテーブルMapＴ(Ｇａ）に適用することにより目標空燃比切替周期Ｔを推定し、その半分（Ｔ／２）を「目標リッチ空燃比継続時間ＴＲＬ及び目標リーン空燃比継続時間ＴＬＲ」のそれぞれとして採用してもよい。
【０１５５】
次に、ＣＰＵは図１１のステップ１１２０に進み、現時点が「実際の目標空燃比リーンリッチ変更時点（目標空燃比abyfrが目標リーン空燃比afLeanから目標リッチ空燃比afRichに実際に変更された時点）」の直後であるか否かを判定する（図１０の時刻ｔ５の直後及び時刻ｔ１１の直後を参照。）。
【０１５６】
そして、現時点が目標空燃比リーンリッチ変更時点の直後である場合、ＣＰＵはステップ１１２０にて「Ｙｅｓ」と判定してステップ１１３０に進み、現在の時刻ｔnowにステップ１１１０にて予測した目標リッチ空燃比継続時間ＴＲＬを加えた時刻（現時点から目標リッチ空燃比継続時間ＴＲＬだけ後の時刻＝ｔnow＋ＴＲＬ）を「将来目標空燃比リッチリーン変更時点ｔＲＬ」として予測する。その後、ＣＰＵはステップ１１４０に進む。
【０１５７】
一方、ＣＰＵがステップ１１２０の処理を実行する時点において、その時点が目標空燃比リーンリッチ変更時点の直後でない場合、ＣＰＵはステップ１１２０にて「Ｎｏ」と判定して直接ステップ１１４０に進む。
【０１５８】
ＣＰＵは、ステップ１１４０にて、現在の時刻ｔnowが「将来目標空燃比リッチリーン変更時点ｔＲＬから第３所定時間Δｔｂ１だけ前の時点（ｔＲＬ−Δｔｂ１）から、将来目標空燃比リッチリーン変更時点ｔＲＬから第１所定時間Δｔａ１だけ後の時点（ｔＲＬ＋Δｔａ１）まで、の期間」内であるか否かを判定する。そして、現在の時刻ｔnowが「時刻（ｔＲＬ−Δｔｂ１）から時刻（ｔＲＬ＋Δｔａ１）までの期間」内である場合、ＣＰＵはステップ１１４０にて「Ｙｅｓ」と判定してステップ１１５０に進み、パージ実行禁止フラグＸＰＧkinshiの値を「１」に設定し、ステップ１１９５に進んで本ルーチンを一旦終了する。
【０１５９】
これに対し、現在の時刻ｔnowが「時刻（ｔＲＬ−Δｔｂ１）から時刻（ｔＲＬ＋Δｔａ１）までの期間」内でない場合、ＣＰＵはステップ１１４０にて「Ｎｏ」と判定してステップ１１６０に進み、現時点が「実際の目標空燃比リッチリーン変更時点（目標空燃比abyfrが目標リッチ空燃比afRichから目標リーン空燃比afLeanに実際に変更された時点）」の直後であるか否かを判定する（図１０の時刻ｔ２の直後、時刻ｔ８の直後及び時刻ｔ１４の直後を参照。）。
【０１６０】
そして、現時点が目標空燃比リッチリーン変更時点の直後である場合、ＣＰＵはステップ１１６０にて「Ｙｅｓ」と判定してステップ１１７０に進み、現在の時刻ｔnowにステップ１１１０にて予測した目標リーン空燃比継続時間ＴＬＲを加えた時刻（現時点から目標リーン空燃比継続時間ＴＬＲだけ後の時刻＝ｔnow＋ＴＬＲ）を「将来目標空燃比リーンリッチ変更時点ｔＬＲ」として予測する。その後、ＣＰＵはステップ１１８０に進む。
【０１６１】
一方、ＣＰＵがステップ１１６０の処理を実行する時点において、その時点が目標空燃比リッチリーン変更時点の直後でない場合、ＣＰＵはステップ１１６０にて「Ｎｏ」と判定して直接ステップ１１８０に進む。
【０１６２】
ＣＰＵは、ステップ１１８０にて、現在の時刻ｔnowが「将来目標空燃比リーンリッチ変更時点ｔＬＲから第４所定時間Δｔｂ２だけ前の時点（ｔＬＲ−Δｔｂ２）から、将来目標空燃比リーンリッチ変更時点ｔＬＲから第２所定時間Δｔａ２だけ後の時点（ｔＬＲ＋Δｔａ２）まで、の期間」内であるか否かを判定する。
【０１６３】
そして、現在の時刻ｔnowが「時刻（ｔＬＲ−Δｔｂ２）から時刻（ｔＬＲ＋Δｔａ２）までの期間」内である場合、ＣＰＵはステップ１１８０にて「Ｙｅｓ」と判定してステップ１１５０に進み、パージ実行禁止フラグＸＰＧkinshiの値を「１」に設定し、ステップ１１９５に進んで本ルーチンを一旦終了する。
【０１６４】
これに対し、現在の時刻ｔnowが「時刻（ｔＬＲ−Δｔｂ２）から時刻（ｔＬＲ＋Δｔａ２）までの期間」内でない場合、ＣＰＵはステップ１１８０にて「Ｎｏ」と判定してステップ１１９０に進み、パージ実行禁止フラグＸＰＧkinshiの値を「０」に設定し、ステップ１１９５に進んで本ルーチンを一旦終了する。
【０１６５】
以上、説明したように、第２制御装置は、将来の目標空燃比リッチリーン変更時点を予測するとともに、その予測した将来の目標空燃比リッチリーン変更時点の近傍の期間において蒸発燃料パージの開始を禁止する。よって、触媒４３の酸素吸蔵量が「０」に到達する可能性を低減することができる。更に、第２制御装置は、将来の目標空燃比リーンリッチ変更時点を予測するとともに、その予測した将来の目標空燃比リーンリッチ変更時点の近傍の期間において蒸発燃料パージの開始を禁止する。よって、触媒４３の酸素吸蔵量が最大酸素吸蔵量Ｃmaxに到達する可能性を低減することができる。
【０１６６】
なお、第２制御装置は、蒸発燃料パージの開始を禁止している期間の終了時点を第１制御装置のように決定してもよい。より具体的に述べると、第２制御装置は、将来の目標空燃比リッチリーン変更時点ｔＲＬを予測するとともに、「その予測した目標空燃比リッチリーン変更時点ｔＲＬよりも第３所定時間Δｔｂ１前の時点から、次に発生する実際の目標空燃比リッチリーン変更時点から第１所定時間Δｔａ１が経過する時点まで、の期間」、蒸発燃料パージが開始されることを禁止してもよい。
【０１６７】
この場合、前記蒸発燃料パージ手段は、
前記目標空燃比リッチリーン変更時点から前記所定時間としての第１所定時間が経過するまでの期間であるリッチリーン変更後期間に前記蒸発燃料パージの実行を開始しないように構成され、
前記目標空燃比リーンリッチ変更時点から同目標空燃比リーンリッチ変更時点に続く前記目標空燃比リッチリーン変更時点までの第２時間（目標リッチ空燃比継続時間）を少なくとも前記機関の吸入空気量に相関を有する値に基づいて推定し、
前記推定された第２時間に基づいて次に到来する予定の前記目標空燃比リッチリーン変更時点を予測し、
前記予測された目標空燃比リッチリーン変更時点よりも所定時間（第３所定時間）前の時点から前記リッチリーン変更後期間の経過時点までの期間、前記蒸発燃料パージの実行を開始しないように構成されていると言うことができる。
【０１６８】
同様に、第２制御装置は、将来の目標空燃比リーンリッチ変更時点ｔＬＲを予測するとともに、「その予測した目標空燃比リーンリッチ変更時点ｔＬＲよりも第４所定時間Δｔｂ２前の時点から、次に発生する実際の目標空燃比リーンリッチ変更時点から第２所定時間Δｔａ２が経過する時点まで、の期間」、蒸発燃料パージが開始されることを禁止してもよい。
【０１６９】
即ち、前記蒸発燃料パージ手段は、
前記目標空燃比リーンリッチ変更時点から前記所定時間としての第２所定時間が経過するまでの期間であるリーンリッチ変更後期間に前記蒸発燃料パージの実行を開始しないように構成され、
前記目標空燃比リッチリーン変更時点から同目標空燃比リッチリーン変更時点に続く前記目標空燃比リーンリッチ変更時点までの第１時間（目標リーン空燃比継続時間）を少なくとも前記機関の吸入空気量に相関を有する値に基づいて推定し、
前記推定された第１時間に基づいて次に到来する予定の前記目標空燃比リーンリッチ変更時点ｔＬＲを予測し、
前記予測された目標空燃比リーンリッチ変更時点よりも所定時間（第４所定時間）前の時点から前記リーンリッチ変更後期間の経過時点までの期間、前記蒸発燃料パージの実行を開始しないように構成されていると言うことができる。
【０１７０】
＜第３実施形態＞
次に、本発明の第３実施形態に係る内燃機関の制御装置（以下、「第３制御装置」とも称呼する。）について説明する。
【０１７１】
第１制御装置においては、目標空燃比リッチリーン変更時点から第１所定時間Δｔａ１が経過した時点にてパージ制御弁５５の状態を閉弁状態から開弁状態へと変更することにより蒸発燃料パージの実行を開始したとしても、その蒸発燃料パージ実行開始の影響が上流側空燃比abyfsに現れる時点においては十分に酸素吸蔵量ＯＳＡが「０」から乖離しているように、第１所定時間Δｔａ１を設定している。
【０１７２】
更に、第１制御装置においては、目標空燃比リーンリッチ変更時点から第２所定時間Δｔａ２が経過した時点にてパージ制御弁５５の状態を閉弁状態から開弁状態へと変更することにより蒸発燃料パージの実行を開始したとしても、その蒸発燃料パージ実行開始の影響が上流側空燃比abyfsに現れる時点においては十分に酸素吸蔵量ＯＳＡが最大酸素吸蔵量Ｃmaxから乖離しているように、第２所定時間Δｔａ２を設定している。
【０１７３】
換言すると、第１制御装置は、図１４に示した蒸発燃料ガスの輸送遅れ時間（即ち、パージ制御弁５５の状態を閉弁状態から開弁状態へと変更した時点ｔ０から、その蒸発燃料パージ実行開始の影響が上流側空燃比abyfsに現れる時点ｔ１まで、の時間）ｔｄが一定であるとの前提に基づいて構築されている。
【０１７４】
しかしながら、蒸発燃料パージは吸気管負圧を利用して機関１０に蒸発燃料を吸入させることにより行われるので、蒸発燃料ガスの輸送遅れ時間ｔｄは「吸気管負圧」に応じて変化する。より具体的に述べると、吸気管負圧が小さくなる（吸気管圧力の絶対値が大気圧に近づく）ほど、蒸発燃料ガスの輸送遅れ時間ｔｄは長くなる。そこで、第３制御装置は、吸気管圧力に相関を有する値（吸気管圧力相関値Ｐ）を取得し、その吸気管圧力相関値Ｐに基づき、上記第１所定時間Δｔａ１及び第２所定時間Δｔａ２を決定する。これにより、蒸発燃料パージの開始が禁止されている期間を短くできるので、蒸発燃料をより適切にパージすることができる。
【０１７５】
（実際の作動）
第３制御装置のＣＰＵは、図６、図７及び図８に示したルーチンを第１制御装置のＣＰＵと同様に実行する。更に、第３制御装置のＣＰＵは、所定時間が経過する毎に「図９に代わる図１５にフローチャートにより示したパージ実行禁止フラグ設定ルーチン」を実行するようになっている。従って、以下、主として図１５を参照しながら第３制御装置の作動について説明する。図１５に示したフローチャートは、図９に示したフローチャートと類似している。よって、図１５に示されたステップであって図９にも示されたステップには、図９に示されたステップと同一の符号が付されている。これらのステップの詳細な説明は適宜省略される。
【０１７６】
所定のタイミングになると、ＣＰＵは図１５のステップ１５００から処理を開始してステップ１５１０に進み、吸気管圧力相関値Ｐを取得する。本例において、吸気管圧力相関値Ｐは、吸入空気量Ｇａと機関回転速度ＮＥとに基づいて取得される。吸気管圧力相関値Ｐは、吸入空気量Ｇａが大きいほど大きくなり、機関回転速度ＮＥが小さいほど大きくなる。なお、吸気管圧力相関値Ｐは、スロットル弁３４の下流の吸気管３２内の圧力を検出する圧力センサからの信号に基いて取得されてもよい。吸気管圧力相関値Ｐは、スロットル弁３４の下流の吸気管３２内の圧力が大気圧に近づくほど大きくなり、真空に近づくほど小さくなる。
【０１７７】
次に、ＣＰＵはステップ１５２０に進み、ステップ１５１０にて取得した吸気管圧力相関値Ｐに基づいて第１所定時間Δｔａ１及び第２所定時間Δｔａ２を取得する。本例において、第１所定時間Δｔａ１及び第２所定時間Δｔａ２は互いに同じ長さである。第１所定時間Δｔａ１及び第２所定時間Δｔａ２は、吸気管圧力相関値Ｐが大きいほど短くなるように決定される。これは、吸気管圧力相関値Ｐが大きいほど吸気管負圧は小さいので、吸気管圧力相関値Ｐが大きいほど蒸発燃料ガスの輸送遅れ時間ｔｄが長くなるからである。
【０１７８】
即ち、蒸発燃料ガスの輸送遅れ時間ｔｄが長いほど、目標空燃比リッチリーン変更時点から「より短い時間」が経過した時点にて蒸発燃料パージの実行を開始しても、その影響が上流側目標空燃比abyfrに現れるまでに長い時間を要するので、その影響が上流側目標空燃比abyfrに現れる時点において酸素吸蔵量ＯＳＡが「０」から十分に乖離しているからである。
【０１７９】
同様に、蒸発燃料ガスの輸送遅れ時間ｔｄが長いほど、目標空燃比リーンリッチ変更時点から「より短い時間」が経過した時点にて蒸発燃料パージの実行を開始しても、その影響が上流側目標空燃比abyfrに現れるまでに長い時間を要するので、その影響が上流側目標空燃比abyfrに現れる時点において酸素吸蔵量ＯＳＡが最大酸素吸蔵量Ｃmaxから十分に乖離しているからである。
【０１８０】
次に、ＣＰＵはステップ９１０乃至ステップ９４０のうちの適当なステップを実行する。ステップ９１０乃至ステップ９４０からなるルーチンは、図９に示したルーチンと同じである。この結果、目標空燃比リッチリーン変更時点から第１所定時間Δｔａ１が経過するまでの期間においてパージ制御弁５５の状態が閉弁状態から開弁状態へと変更されること（蒸発燃料パージの実行開始）が禁止され、目標空燃比リーンリッチ変更時点から第２所定時間Δｔａ２が経過するまでの期間においてパージ制御弁５５の状態が閉弁状態から開弁状態へと変更されること（蒸発燃料パージの実行開始）が禁止される。
【０１８１】
以上、説明したように、第３制御装置は、蒸発燃料ガスの輸送遅れ時間ｔｄが吸気管圧力相関値Ｐに応じて変化するとの知見に基いて、第１所定時間Δｔａ１及び第２所定時間Δｔａ２を吸気管圧力相関値Ｐに応じて変化させている。従って、蒸発燃料パージの開始が禁止される期間が必要以上に長く設定されることを回避することができる。
【０１８２】
＜第４実施形態＞
次に、本発明の第４実施形態に係る内燃機関の制御装置（以下、「第４制御装置」とも称呼する。）について説明する。
【０１８３】
燃料の揮発性は一定ではない。蒸発燃料パージが行われていない場合、燃料の揮発性が高いほどキャニスタに吸着・蓄積される蒸発燃料の量は多くなる。従って、例えば、燃料の揮発性が比較的低い場合、図１６の（Ａ）及び（Ｂ）に示したように蒸発燃料パージ開始に伴う上流側空燃比の変動の最大振幅は値ａｆ１となるのに対し、燃料の揮発性が比較的高い場合、図１６の（Ｃ）及び（Ｄ）に示したように蒸発燃料パージ開始に伴う上流側空燃比の変動の最大振幅は「値ａｆ１よりも大きい値ａｆ２」となる。このことから明らかなように、「第１所定時間Δｔａ１及び第２所定時間Δｔａ２」のそれぞれは燃料の揮発性が高いほど長くすべきである。
【０１８４】
そこで、第４制御装置は、燃料の揮発性が高くなるほど、蒸発燃料パージの開始を禁止している期間を決定する「第１所定時間Δｔａ１及び第２所定時間Δｔａ２」を長くする。これにより、蒸発燃料パージの開始が禁止されている期間が燃料の揮発性に応じた適切な長さになるので、蒸発燃料をより適切にパージすることができる。
【０１８５】
（実際の作動）
第４制御装置のＣＰＵは、図６、図７及び図８に示したルーチンを第１制御装置のＣＰＵと同様に実行する。更に、第４制御装置のＣＰＵは、所定時間が経過する毎に「図９に代わる図１７にフローチャートにより示したパージ実行禁止フラグ設定ルーチン」を実行するようになっている。従って、以下、主として図１７を参照しながら第４制御装置の作動について説明する。図１７に示したフローチャートは、図９に示したフローチャートと類似している。よって、図１７に示されたステップであって図９にも示されたステップには、図９に示されたステップと同一の符号が付されている。これらのステップの詳細な説明は適宜省略される。
【０１８６】
所定のタイミングになると、ＣＰＵは図１７のステップ１７００から処理を開始してステップ１７１０に進み、燃料揮発性相関値Ｆを取得する。燃料揮発性相関値Ｆは、周知の手法によって取得される。本例において、燃料揮発性相関値Ｆは、燃料タンクに設けられた図示しないアルコール濃度センサの出力に基づいて取得される。一般に、アルコール濃度が高くなるほど揮発性は低くなる。燃料揮発性相関値Ｆは燃料の揮発性が高くなるほど大きくなる値として取得される。
【０１８７】
次に、ＣＰＵはステップ１７２０に進み、ステップ１７１０にて取得した燃料揮発性相関値Ｆに基づいて第１所定時間Δｔａ１及び第２所定時間Δｔａ２を取得する。本例において、第１所定時間Δｔａ１及び第２所定時間Δｔａ２は互いに同じ長さである。第１所定時間Δｔａ１及び第２所定時間Δｔａ２は、燃料揮発性相関値Ｆが大きいほど長くなるように決定される。これは、燃料の揮発性が高いほど蒸発燃料パージの開始に起因する上流側空燃比の変動幅が大きくなるので、蒸発燃料パージの開始に起因して上流側空燃比の変動が大きくなり始める時点において、触媒４３の酸素吸蔵量ＯＳＡを「０」及び最大酸素吸蔵量Ｃmaxのそれぞれからより一層遠ざけておく必要があるからである。
【０１８８】
次に、ＣＰＵはステップ９１０乃至ステップ９４０のうちの適当なステップを実行する。ステップ９１０乃至ステップ９４０からなるルーチンは、図９に示したルーチンと同じである。この結果、目標空燃比リッチリーン変更時点から第１所定時間Δｔａ１が経過するまでの期間においてパージ制御弁５５の状態が閉弁状態から開弁状態へと変更されること（蒸発燃料パージの実行開始）が禁止され、目標空燃比リーンリッチ変更時点から第２所定時間Δｔａ２が経過するまでの期間においてパージ制御弁５５の状態が閉弁状態から開弁状態へと変更されること（蒸発燃料パージの実行開始）が禁止される。
【０１８９】
以上、説明したように、第４制御装置の蒸発燃料パージ手段は、
目標空燃比リッチリーン変更時点、及び、目標空燃比リーンリッチ変更時点、の少なくとも一方の時点から所定時間が経過するまでの期間、前記パージ実行要求条件が成立した場合であっても前記蒸発燃料パージの実行を開始しないように構成され（図１７のステップ９１０乃至ステップ９４０、図８のステップ８５０での「Ｎｏ」との判定、ステップ８３０及びステップ８４０）、且つ、
燃料揮発性相関値Ｆに基づいて燃料の揮発性が高いほど前記所定時間が長くなるように前記所定時間を決定するように構成されている（図１７のステップ１７２０）。
【０１９０】
即ち、第４制御装置は、第１所定時間Δｔａ１及び第２所定時間Δｔａ２を燃料揮発性相関値Ｆに応じて変化させている。従って、蒸発燃料パージの開始が禁止される期間が必要以上に長く設定されることを回避することができる。
【０１９１】
以上、説明したように、本発明による内燃機関の制御装置の各実施形態によれば、蒸発燃料パージの開始時期を制限しているので、蒸発燃料パージの開始に起因するエミッションの悪化を回避することができる。
【０１９２】
本発明は上記実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、第１所定時間Δｔａ１と第２所定時間Δｔａ２とは互いに相違していもよい。同様に、第３所定時間Δｔｂ１と第４所定時間Δｔｂ２とは互いに相違していもよい。
【０１９３】
更に、基本燃料噴射量Ｆｂａｓｅをメインフィードバック量ＫＦmainのみでなく、メインフィードバック学習値ＫＧ及びパージ補正係数ＦＰＧにも基づいて、下記（２）式のように補正することによって指示燃料噴射量Ｆｉを求めてもよい。
Ｆｉ＝ＦＰＧ・ＫＧ・ＫＦmain・Ｆｂａｓｅ    …（２）
【０１９４】
この場合、パージ実行要求条件の一つとして「メインフィードバック学習値ＫＧの学習が完了していること」が含まれ得る。即ち、メインフィードバック学習値ＫＧの学習が完了していない場合、蒸発燃料パージは実行されない。
【０１９５】
メインフィードバック学習値ＫＧの学習が完了していないために蒸発燃料パージが実行されておらず、且つ、空燃比のフィードバック制御が実行されいる場合（フィードバック制御フラグＸＦＢの値が「１」である場合）、
（１）メインフィードバック量ＫＦmainの平均値が「１＋α」よりも大きいときメインフィードバック学習値ＫＧの値が所定時間あたり値ΔＫＧだけ増大させられ、
（２）メインフィードバック量ＫＦmainの平均値が「１−α」よりも小さいときメインフィードバック学習値ＫＧの値が所定時間あたり値ΔＫＧだけ減少させられる。
なお、値αは０よりも大きく１よりも小さい値（例えば、０．０２）であり、メインフィードバック学習値ＫＧの初期値は「１」である。
【０１９６】
その後、フィードバック制御が継続していて、且つ、フィードバック量ＫＦmainの平均値が「１＋α」と「１−α」との間の値である状態の継続時間が閾値時間以上となったとき、メインフィードバック学習値ＫＧの学習が完了したと判定される。
【０１９７】
更に、パージ補正係数ＦＰＧは下記の（３）に従って求められる。（３）式において、ＦＧＰＧは蒸発燃料ガス濃度学習値である。ＰＧＴは目標パージ率である。
ＦＰＧ＝１＋ＰＧＴ（ＦＧＰＧ−１）  …（３）
【０１９８】
蒸発燃料ガス濃度学習値ＦＧＰＧは、蒸発燃料のパージを実行している期間において、メインフィードバック量ＫＦmainの平均値ＦＡＦＡＶが「１＋β」と「１−β」との間の値でないとき、所定時間に（ＦＡＦＡＶ−１）／ＰＧＴだけ増大させられる。目標パージ率ＰＧＴは、負荷ＫＬ及び機関回転速度ＮＥ等に基づいて定められる。目標パージ率ＰＧＴは一定値であってもよい。なお、値βは０よりも大きく１よりも小さい値（例えば、０．０２）である。
【０１９９】
また、上記各実施形態において、目標リッチ空燃比afRichは例えば吸入空気量Ｇａに応じて変化する値であってもよいく、目標リーン空燃比afLeanは例えば吸入空気量Ｇａに応じて変化する値であってもよい。
【符号の説明】
【０２００】
１０…内燃機関、２１…燃焼室、３２…吸気管、３３…燃料噴射弁、３４…スロットル弁、４１…エキゾーストマニホールド、４１ｂ…集合部、４２…エキゾーストパイプ、４３…上流側触媒（触媒、三元触媒）、５０…蒸発燃料供給系統、５１…燃料タンク、５２…キャニスタ、５５…パージ制御弁、６１…熱線式エアフローメータ、６６…上流側空燃比センサ、６７…下流側空燃比センサ、７０…電気制御装置。
【図１】
2012225308.tif 000003
【図２】
2012225308.tif 000004
【図３】
2012225308.tif 000005
【図４】
2012225308.tif 000006
【図５】
2012225308.tif 000007
【図６】
2012225308.tif 000008
【図７】
2012225308.tif 000009
【図８】
2012225308.tif 000010
【図９】
2012225308.tif 000011
【図１０】
2012225308.tif 000012
【図１１】
2012225308.tif 000013
【図１２】
2012225308.tif 000014
【図１３】
2012225308.tif 000015
【図１４】
2012225308.tif 000016
【図１５】
2012225308.tif 000017
【図１６】
2012225308.tif 000018
【図１７】
2012225308.tif 000019