(57)【特許請求の範囲】
【請求項１】
内燃機関における一部の気筒の空燃比をリッチにするともに、他の気筒の空燃比をリーンにすることにより、同機関の排気通路で混合気の燃焼を生じさせ、この混合気の燃焼により前記排気通路に設けられた排気浄化触媒の温度を上昇させる内燃機関の排気浄化装置において、
空燃比をリッチにする気筒とリーンにする気筒とを変更して各々の空燃比の設定にて空燃比制御を実行したときの機関トルク変動量を算出し、それら算出されるトルク変動量に基づき同変動量が小さい空燃比の設定を学習する学習手段と、
前記学習手段による空燃比の設定の学習が完了した後、前記学習された空燃比の設定にて前記空燃比制御を行って、前記排気浄化触媒の温度を上昇させる昇温手段と、
を備えることを特徴とする内燃機関の排気浄化装置。
【請求項２】
前記排気浄化触媒は排気中のＮＯｘ  を吸着する吸蔵還元型のものであり、前記学習手段は内燃機関が前記排気浄化触媒から硫黄を離脱させるべき所定運転状態にあるとき前記空燃比の設定の学習を行うための空燃比制御を実行する
請求項１記載の内燃機関の排気浄化装置。
【請求項３】
前記学習手段は、内燃機関が前記所定運転状態にある期間中には空燃比をリッチにする気筒とリーンにする気筒とを固定するとともに、この期間中に算出された機関トルク変動量を機関停止後も記憶し、機関始動後に最初に内燃機関が前記所定運転状態になったときには前記空燃比の設定の学習を行うために未だ機関トルク変動量の算出が行われていない各気筒毎の空燃比の設定にて空燃比制御を実行する
請求項２記載の内燃機関の排気浄化装置。
【請求項４】
請求項３記載の内燃機関の排気浄化装置において、
内燃機関が前記所定運転状態になった回数をカウントし、このカウントされる回数が所定回数以上になったとき、前記記憶された機関トルク変動量をリセットする記憶値リセット手段を更に備える
ことを特徴とする内燃機関の排気浄化装置。
【請求項５】
前記学習手段は、内燃機関が前記所定運転状態にある期間中に、空燃比をリッチにする気筒とリーンにする気筒とを変更して各々の空燃比の設定にて空燃比制御を実行したときの機関トルク変動量を算出する
請求項２記載の内燃機関の排気浄化装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、排気通路に設けられた排気浄化触媒の温度を上昇させる内燃機関の排気浄化装置に関するものである。
【０００２】
【従来の技術】
近年、燃費向上を意図して理論空燃比よりもリーンな空燃比で混合気を燃焼させる、いわゆるリーン燃焼を実行することが可能な内燃機関が提案され、実用化されている。こうした内燃機関では、リーン燃焼中において通常の三元触媒による窒素酸化物（ＮＯｘ  ）の浄化が困難になるため、リーン燃焼中に生成されるＮＯｘ  を吸着する吸蔵還元型ＮＯｘ  触媒が排気通路に設けられる。そして、リーン燃焼中には排気中のＮＯｘ  を吸蔵還元型ＮＯｘ  触媒に吸着させ、同排気とともに外部に排出されるＮＯｘ  の量を少なくする。
【０００３】
また、上記内燃機関では、所定のタイミングを見計らって一時的に理論空燃比よりもリッチな空燃比での混合気の燃焼を行う、いわゆるリッチスパイク制御が実行される。こうしたリッチスパイク制御により理論空燃比よりもリッチな空燃比での混合気の燃焼が行われると、吸蔵還元型ＮＯｘ  触媒に吸着されたＮＯｘ  が排気中の炭化水素（ＨＣ）等によって窒素（Ｎ２  ）に還元され、上記吸蔵還元型ＮＯｘ  触媒に吸着されたＮＯｘ  が飽和するのを防止することができる。
【０００４】
しかし、吸蔵還元型ＮＯｘ  触媒には、ＮＯｘ  ばかりでなく硫黄（Ｓ）や硫黄化合物（ＳＯｘ  ）等も付着する。こうした物質が吸蔵還元型ＮＯｘ  触媒に吸着された場合、上記リッチスパイク制御を実行したとしても同触媒から上記物質を離脱させることは困難である。そして、上記物質が付着した吸蔵還元型ＮＯｘ  触媒においては、本来ＮＯｘ  が吸着されるべきところに上記物質が吸着されるため、同触媒におけるＮＯｘ  の吸着能力が低下することとなる。
【０００５】
そこで従来は、吸蔵還元型ＮＯｘ  触媒の温度を上昇させて上記物質を同触媒から離脱させる装置が提案されている。こうした装置としては、例えば特開平８−１８９３８８号公報や特開平８−６１０５２号公報に記載された排気浄化装置が知られている。
【０００６】
これらの公報に記載された装置では、吸蔵還元型ＮＯｘ  触媒の温度を上昇させるために、一部の気筒の空燃比をリッチにするとともに他の気筒の空燃比をリーンにすることで排気通路に未燃燃料と空気とを供給し、排気通路内で上記燃料を燃焼させるようにしている。こうして排気通路内での燃焼が生じることにより、吸蔵還元型ＮＯｘ  触媒の温度が上昇して同触媒から上記物質が離脱するようになる。
【０００７】
【発明が解決しようとする課題】
上記のように吸蔵還元型ＮＯｘ  触媒から硫黄や硫黄化合物等の物質を離脱させることで、同触媒におけるＮＯｘ  の吸着能力の低下を防止することができるようにはなる。しかし、上記物質を離脱させるべく吸蔵還元型ＮＯｘ  触媒の温度を上昇させるために、一部の気筒をリッチにするとともに他の気筒をリーンにする必要があり、こうした気筒毎の空燃比制御によって内燃機関の出力トルクが所定サイクルで変動する。そして、このように内燃機関の出力トルクが変動することにより、ドライバビリティが悪化することとなる。特に、空燃比がリーンになることによってトルク変動量が増加し易い気筒が上記気筒毎の空燃比制御によってリーンとされた場合には上記の悪影響が大きくなる。
【０００８】
本発明はこのような実情に鑑みてなされたものであって、その目的は、排気浄化触媒の温度を上昇させる際の機関トルク変動量を最小限に抑えてドライバビリティが悪化するのを抑制することのできる内燃機関の排気浄化装置を提供することにある。
【０００９】
【課題を解決するための手段】
以下、上記目的を達成するための手段及びその作用効果について記載する。
上記目的を達成するため、請求項１記載の発明では、内燃機関における一部の気筒の空燃比をリッチにするともに、他の気筒の空燃比をリーンにすることにより、同機関の排気通路で混合気の燃焼を生じさせ、この混合気の燃焼により前記排気通路に設けられた排気浄化触媒の温度を上昇させる内燃機関の排気浄化装置において、空燃比をリッチにする気筒とリーンにする気筒とを変更して各々の空燃比の設定にて空燃比制御を実行したときの機関トルク変動量を算出し、それら算出されるトルク変動量に基づき同変動量が小さい空燃比の設定を学習する学習手段と、前記学習手段による空燃比の設定の学習が完了した後、前記学習された空燃比の設定にて前記空燃比制御を行って、前記排気浄化触媒の温度を上昇させる昇温手段とを備えた。
【００１０】
同構成によれば、学習された空燃比の設定にて空燃比制御を行うことにより、一部の気筒をリッチにするとともに他の気筒をリーンにして排気浄化触媒の温度を上昇させる際、機関トルク変動量が最小に抑えられて同トルク変動に伴うドライバビリティの悪化が抑制される。
【００１１】
請求項２記載の発明では、請求項１記載の発明において、前記排気浄化触媒は排気中のＮＯｘ  を吸着する吸蔵還元型のものであり、前記学習手段は内燃機関が前記排気浄化触媒から硫黄を離脱させるべき所定運転状態にあるとき前記空燃比の設定の学習を行うための空燃比制御を実行するものとした。
【００１２】
排気浄化触媒からの硫黄の離脱は、同触媒の温度を上昇させることによって行われる。従って、内燃機関が前記排気浄化触媒から硫黄を離脱させるべき所定運転状態にあるとき、空燃比をリッチにする気筒とリーンにする気筒とを変更して各気筒毎での空燃比の設定を学習するための空燃比制御を行う同構成によれば、同学習のための空燃比制御が不必要に行われることはなくなる。
【００１３】
請求項３記載の発明では、請求項２記載の発明において、前記学習手段は、内燃機関が前記所定運転状態にある期間中には空燃比をリッチにする気筒とリーンにする気筒とを固定するとともに、この期間中に算出された機関トルク変動量を機関停止後も記憶し、機関始動後に最初に内燃機関が前記所定運転状態になったときには前記空燃比の設定の学習を行うために未だ機関トルク変動量の算出が行われていない各気筒毎の空燃比の設定にて空燃比制御を実行するものとした。
【００１４】
同構成によれば、機関始動後に最初に内燃機関が触媒から硫黄を離脱すべき所定運転状態になったとき、未だ機関トルク変動量の算出が行われていない各気筒毎の空燃比の設定にて空燃比制御が行われ、この空燃比制御によって一部の気筒の空燃比がリッチになるとともに他の気筒の空燃比がリーンになる。この状態にあって、機関トルク変動量の算出が行われると、最も機関トルク変動量の小さい各気筒毎の空燃比の設定が学習される。このように機関始動後に最初に内燃機関が触媒から硫黄を離脱させるべき所定運転状態になった後、上記空燃比の設定の学習が行われるため、同学習を機関始動後の早期に完了することができるようになる。
【００１５】
請求項４記載の発明では、請求項３記載の発明において、内燃機関が前記所定運転状態になった回数をカウントし、このカウントされる回数が所定回数以上になったとき、前記記憶された機関トルク変動量をリセットする記憶値リセット手段を更に備えた。
【００１６】
同構成によれば、内燃機関が触媒から硫黄を離脱させるべき所定運転状態になった回数が所定回数以上になると、記憶された機関トルク変動量がリセットされて各気筒毎の空燃比の設定の学習が再度行われる。従って、何らかの原因で最もトルク変動の小さくなる各気筒毎の空燃比の設定が変化したとしても、同空燃比の設定の学習が上記のように再度を行われるため、各気筒毎の空燃比の設定を最適に維持することができる。
【００１７】
請求項５記載の発明では、請求項２記載の発明において、前記学習手段は、内燃機関が前記所定運転状態にある期間中に、空燃比をリッチにする気筒とリーンにする気筒とを変更して各々の空燃比の設定にて空燃比制御を実行したときの機関トルク変動量を算出するものとした。
【００１８】
内燃機関が触媒から硫黄を離脱すべき所定運転状態にある期間中に、空燃比をリッチにする気筒とリーンにする気筒とを変更して各々の空燃比の設定での機関トルク変動量を算出する同構成によれば、最も機関トルク変動量が小さい空燃比の設定の学習を機関始動後の早期に完了することができる。
【００１９】
【発明の実施の形態】
（第１実施形態）
以下、本発明を直列４気筒の自動車用直噴ガソリンエンジンに適用した第１実施形態を図１〜図６に従って説明する。
【００２０】
図１に示すように、エンジン１１のシリンダブロック１１ａ内には、同エンジン１１の１番〜４番気筒＃１〜＃４（図１には一番気筒＃１のみ図示）毎にそれぞれピストン１２が往復移動可能に設けられている。これら各ピストン１２の頭部には、後述する成層燃焼を実行するのに必要な窪み１２ａが形成されている。また、これらピストン１２は、コンロッド１３を介して出力軸であるクランクシャフト１４に連結されている。そして、ピストン１２の往復移動は、上記コンロッド１３によってクランクシャフト１４の回転へと変換されるようになっている。
【００２１】
クランクシャフト１４にはシグナルロータ１４ａが取り付けられている。このシグナルロータ１４ａの外周部には、複数の突起１４ｂがクランクシャフト１４の軸線を中心とする等角度毎に設けられている。また、シグナルロータ１４ａの側方には、クランクポジションセンサ１４ｃが設けられている。そして、クランクシャフト１４が回転して、シグナルロータ１４ａの各突起１４ｂが順次クランクポジションセンサ１４ｃの側方を通過することにより、同センサ１４ｃからはそれら各突起１４ｂの通過に対応したパルス状の検出信号が出力されるようになる。
【００２２】
また、シリンダブロック１１ａの上端には、シリンダヘッド１５が設けられ、シリンダヘッド１５とピストン１２との間には燃焼室１６が設けられている。この燃焼室１６には、シリンダヘッド１５に設けられた吸気ポート１７と排気ポート１８とが連通している。こうした吸気ポート１７及び排気ポート１８には、それぞれ吸気バルブ１９及び排気バルブ２０が設けられている。
【００２３】
一方、シリンダヘッド１５には、上記吸気バルブ１９及び排気バルブ２０を開閉駆動するための吸気カムシャフト２１及び排気カムシャフト２２が回転可能に支持されている。これら吸気及び排気カムシャフト２１，２２は、タイミングベルト及びギヤ（共に図示せず）等を介してクランクシャフト１４に連結され、同ベルト及びギヤ等によりクランクシャフト１４の回転が伝達されるようになる。そして、吸気カムシャフト２１が回転すると、吸気バルブ１９が開閉駆動されて、吸気ポート１７と燃焼室１６とが連通・遮断される。また、排気カムシャフト２２が回転すると、排気バルブ２０が開閉駆動されて、排気ポート１８と燃焼室１６とが連通・遮断される。
【００２４】
また、シリンダヘッド１５において、吸気カムシャフト２１の側方には、同シャフト２１の外周面に設けられた突起２１ａを検出して検出信号を出力するカムポジションセンサ２１ｂが設けられている。そして、吸気カムシャフト２１が回転すると、同シャフト２１の突起２１ａがカムポジションセンサ２１ｂの側方を通過する。この状態にあっては、カムポジションセンサ２１ｂから上記突起２１ａの通過に対応して所定間隔毎に検出信号が出力されるようになる。
【００２５】
吸気ポート１７及び排気ポート１８には、それぞれ吸気管３０及び排気管３１が接続されている。この吸気管３０内及び吸気ポート１７内は吸気通路３２となっており、排気管３１内及び排気ポート１８内は排気通路３３となっている。
【００２６】
この排気通路３３には、エンジン１１の排気を浄化するための排気浄化触媒３３ａ，３３ｂと、同排気中に含まれる酸素を検出して同酸素濃度に対応した検出信号を出力する空燃比センサ３４とが設けられている。一方、吸気通路３２の上流部分にはスロットルバルブ２３が設けられている。このスロットルバルブ２３は、直流（ＤＣ）モータからなるスロットル用モータ２４の駆動により回動されて開度調節がなされる。そして、スロットルバルブ２３の開度は、スロットルポジションセンサ４４によって検出される。
【００２７】
また、上記スロットル用モータ２４の駆動は、自動車の室内に設けられたアクセルペダル２５の踏込量（アクセル踏込量）に基づき制御される。即ち、自動車の運転者がアクセルペダル２５を踏込操作すると、アクセル踏込量がアクセルポジションセンサ２６によって検出され、同センサ２６の検出信号に基づきスロットル用モータ２４が駆動制御される。このスロットル用モータ２４の駆動制御に基づくスロットルバルブ２３の開度調節により、吸気通路３２の空気流通面積が変化して燃焼室１６へ吸入される空気の量が調整されるようになる。
【００２８】
吸気通路３２においてスロットルバルブ２３の下流側に位置する部分には、同通路３２内の圧力を検出するバキュームセンサ３６が設けられている。そして、バキュームセンサ３６は検出した吸気通路３２内の圧力に対応した検出信号を出力する。
【００２９】
また、図１に示すように、シリンダヘッド１５には、燃焼室１６内に燃料を噴射供給する燃料噴射弁４０と、燃焼室１６内に充填される燃料と空気とからなる混合気に対して点火を行う点火プラグ４１とが設けられている。この点火プラグ４１による上記混合気への点火時期は、点火プラグ４１の上方に設けられたイグナイタ４１ａによって調整される。
【００３０】
そして、燃料噴射弁４０から燃焼室１６内へ燃料が噴射されると、同燃料が吸気通路３２を介して燃焼室１６に吸入された空気と混ぜ合わされ、燃焼室１６内で空気と燃料とからなる混合気が形成される。更に、燃焼室１６内の混合気は点火プラグ４１によって点火がなされて燃焼し、燃焼後の混合気は排気として排気通路３３に送り出されて排気浄化触媒３３ａ，３３ｂによって浄化される。
【００３１】
これら排気浄化触媒３３ａ，３３ｂの内、触媒３３ｂは窒素酸化物（ＮＯｘ  ）を浄化するための吸蔵還元型ＮＯｘ  触媒となっている。従って、触媒３３ｂは、ＮＯｘ  の浄化が困難な理論空燃比よりもリーンな空燃比での燃焼時に排気中のＮＯｘ  を一時的に吸着し、理論空燃比よりリッチな空燃比での燃焼時に上記吸着したＮＯｘ  を排気中の炭化水素（ＨＣ）等によって窒素（Ｎ２  ）に還元する。
【００３２】
次に、本実施形態におけるエンジン１１の排気浄化装置の電気的構成を図２に基づいて説明する。
この排気浄化装置は、燃料噴射量制御、燃料噴射時期制御、点火時期制御、及びスロットル開度制御など、エンジン１１の運転状態を制御するための電子制御ユニット（以下「ＥＣＵ」という）９２を備えている。このＥＣＵ９２は、ＲＯＭ９３、ＣＰＵ９４、ＲＡＭ９５及びバックアップＲＡＭ９６等を備える算術論理演算回路として構成されている。
【００３３】
ここで、ＲＯＭ９３は各種制御プログラムや、それら各種制御プログラムを実行する際に参照されるマップ等が記憶されたメモリであり、ＣＰＵ９４はＲＯＭ９３に記憶された各種制御プログラムやマップに基づいて演算処理を実行する。また、ＲＡＭ９５はＣＰＵ９４での演算結果や各センサから入力されたデータ等を一時的に記憶するメモリであり、バックアップＲＡＭ９６はエンジン１１の停止時にその記憶されたデータ等を保存する不揮発性のメモリである。そして、ＲＯＭ９３、ＣＰＵ９４、ＲＡＭ９５及びバックアップＲＡＭ９６は、バス９７を介して互いに接続されるとともに、外部入力回路９８及び外部出力回路９９と接続されている。
【００３４】
外部入力回路９８には、クランクポジションセンサ１４ｃ、カムポジションセンサ２１ｂ、アクセルポジションセンサ２６、空燃比センサ３４、バキュームセンサ３６、及びスロットルポジションセンサ４４等が接続されている。一方、外部出力回路９９には、スロットル用モータ２４、燃料噴射弁４０、及びイグナイタ４１ａ等が接続されている。
【００３５】
このように構成されたＥＣＵ９２は、クランクポジションセンサ１４ｃからの検出信号に基づきエンジン回転数ＮＥを求める。更に、アクセルポジションセンサ２６及びバキュームセンサ３６からの検出信号に基づきアクセル踏込量ＡＣＣＰ及び吸気圧ＰＭを求める。そして、アクセル踏込量ＡＣＣＰ若しくは吸気圧ＰＭとエンジン回転数ＮＥとに基づき、エンジン１１の負荷を表す基本燃料噴射量Ｑｂｓｅ  を求める。ＥＣＵ９２は、上記エンジン回転数ＮＥ及び基本燃料噴射量Ｑｂｓｅ  に基づきエンジン１１の燃焼方式を決定する。
【００３６】
即ち、エンジン１１の高回転高負荷時には混合気を理論空燃比で燃焼させるストイキ燃焼を実行し、エンジン１１の低回転低負荷時には混合気を理論空燃比よりもリーンな空燃比で燃焼させるリーン燃焼を実行する。このように燃焼方式を変化させるのは、高出力が要求される高回転高負荷時にはストイキ燃焼によって混合気の空燃比を理論空燃比としてエンジン出力を高め、あまり高出力を必要としない低回転低負荷時にはリーン燃焼とし空燃比をリーン側の値にして燃費の向上を図るためである。
【００３７】
ここで、上記ストイキ燃焼及びリーン燃焼時の各種制御態様について詳しく説明する。
（ａ）ストイキ燃焼
燃焼方式がストイキ燃焼に決定されると、ＥＣＵ９２は、吸気圧ＰＭとエンジン回転数ＮＥとに基づき基本燃料噴射量Ｑｂｓｅ  を算出する。こうして算出される基本燃料噴射量Ｑｂｓｅ  は、エンジン回転数ＮＥが高くなるとともに、吸気圧ＰＭが高くなるほど大きい値になる。ＥＣＵ９２は、燃料噴射弁４０を駆動制御することにより、上記基本燃料噴射量Ｑｂｓｅ  に基づき求められる最終燃料噴射量Ｑｆｉｎ  に対応した量の燃料を、エンジン１１の吸気行程中に燃料噴射弁４０から噴射させる。また、ＥＣＵ９２は、燃料噴射量の空燃比フィードバック補正を行って混合気の空燃比を理論空燃比へと制御する。
【００３８】
また、ＥＣＵ９２は、スロットルポジションセンサ４４からの検出信号に基づき求められる実際のスロットル開度が、アクセル踏込量ＡＣＣＰ及びエンジン回転数ＮＥに基づき算出される目標スロットル開度に近づくようスロットル用モータ２４を駆動制御する。更に、ＥＣＵ９２は、吸気圧ＰＭとエンジン回転数ＮＥとに基づき目標点火時期を算出し、同目標点火時期に応じてイグナイタ４１ａを駆動制御する。こうしてスロットル開度及び点火時期がストイキ燃焼に適したものになる。
【００３９】
（ｂ）リーン燃焼
一方、燃焼方式がリーン燃焼に決定されると、ＥＣＵ９２は、アクセル踏込量ＡＣＣＰとエンジン回転数ＮＥとに基づき基本燃料噴射量Ｑｂｓｅ  を算出する。こうして算出される基本燃料噴射量Ｑｂｓｅ  は、エンジン回転数ＮＥが高くなるとともに、アクセル踏込量ＡＣＣＰが大きくなるほど大きい値になる。ＥＣＵ９２は、燃料噴射弁４０を駆動制御することにより、上記基本燃料噴射量Ｑｂｓｅ  に基づき求められる最終燃料噴射量Ｑｆｉｎ  に対応した量の燃料を噴射させる。この燃料噴射により燃焼室１６内に形成される混合気においては、その空燃比が理論空燃比よりもリーンにされる。
【００４０】
こうした理論空燃比よりもリーンな空燃比での混合気の燃焼が行われるリーン燃焼としては、
・エンジン１１の吸気行程中に燃料を噴射して混合気の空燃比を理論空燃比よりもリーンな値（例えば１５〜２３）とし、燃焼室１６内の空気の渦により上記リーンな空燃比の混合気を安定して燃焼させる「均質リーン燃焼」
・エンジン１１の圧縮行程中に燃料を噴射してピストン１２の窪み１２ａにより同燃料を点火プラグ周りに集め、混合気全体の平均空燃比を「均質リーン燃焼」時等より大きくしても、同プラグ４１周りの混合気によって良好な着火が得られるようにした「成層燃焼」
・上記「成層燃焼」と「均質リーン燃焼」との中間の燃焼方式であって、エンジン１１の吸気行程中と圧縮行程中との両方に燃料を噴射することによって実行される「弱成層燃焼」
等があげられる。
【００４１】
これらのリーン燃焼において、ＥＣＵ９２は、実際のスロットル開度が基本燃料噴射量Ｑｂｓｅ  及びエンジン回転数ＮＥに基づき算出される目標スロットル開度に近づくようスロットル用モータ２４を駆動制御する。更に、ＥＣＵ９２は、アクセル踏込量ＡＣＣＰとエンジン回転数ＮＥとに基づき目標点火時期を算出し、同目標点火時期に応じてイグナイタ４１ａを駆動制御する。こうしてスロットル開度及び点火時期が上記各種リーン燃焼に適したものになる。
【００４２】
また、上記リーン燃焼では、混合気の平均空燃比を理論空燃比よりも大きくすべくスロットルバルブ２３がストイキ燃焼の場合に比べて開き側に制御される。そのため、リーン燃焼では、燃料噴射量が少なくなるとともにポンピングロスが低減され、エンジン１１の燃費が向上するようになる。
【００４３】
しかし、リーン燃焼時には吸蔵還元型ＮＯｘ  触媒である触媒３３ｂに吸着されるＮＯｘ  の量が増加することとなる。この触媒３３ｂ  に吸着されるＮＯｘ  が飽和しないように、ＥＣＵ９２は、所定のタイミングを見計らって上記ＮＯｘ  を触媒３３ｂから除去するためのリッチスパイク制御を実行する。このリッチスパイク制御においては、リーン燃焼中であっても一時的に理論空燃比よりもリッチな空燃比での混合気の燃焼（リッチ燃焼）が行われ、このリッチ燃焼中の排気に含まれるＨＣ等により上記ＮＯｘ  をＮ２  へと還元して触媒３３ｂから除去する。
【００４４】
また、上記触媒３３ｂには、ＮＯｘ  だけでなく硫黄酸化物（ＳＯｘ  ）等も吸着される。こうしたＳＯｘ  等が触媒３３ｂに吸着された場合、上記リッチスパイク制御を実行したとしても同触媒３３ｂからＳＯｘ  等を除去するのは困難である。そして、ＳＯｘ  等が吸着した触媒３３ｂにおいては、本来ＮＯｘ  が吸着されるべきところにＳＯｘ  等が吸着されるため、触媒３３ｂにおけるＮＯｘ  の吸着能力が低下することとなる。そのため、ＥＣＵ９２は、触媒３３ｂに吸着されたＳＯｘ  の量が上限値以上になるなど所定の条件（硫黄被毒回復条件）が成立したとき、触媒３３ｂの温度を上昇させてＳＯｘ  等を同触媒３３ｂから離脱させる。
【００４５】
上記のように触媒３３ｂの温度を上昇させるため、ＥＣＵ９２は、例えば１番及び４番気筒＃１，＃４（以下、第１気筒群という）での混合気の空燃比を理論空燃比よりもリッチにし、２番及び３番気筒＃２，＃３（以下、第２気筒群という）での混合気の空燃比を理論空燃比よりもリーンにする。このように空燃比制御が行われると、排気通路３３に未燃燃料と空気とが供給されて同燃料が排気通路３３内で燃焼し、この燃焼によって触媒３３ｂの温度が上昇してＳＯｘ  等が触媒３３ｂから離脱するようになる。
【００４６】
しかし、触媒３３ｂの温度を上昇させるために、エンジン１１において一部の気筒をリッチにするとともに他の気筒をリーンにすると、エンジン１１の出力トルクが所定サイクルで変動してドライバビリティが悪化することとなる。そこで本実施形態では、気筒群毎の空燃比の設定を変更するとともに各々の設定にてトルク変動量を算出する。即ち、第１気筒群をリッチにするとともに第２気筒群をリーンにした状態、及び第１気筒群をリーンにするとともに第２気筒群をリッチにした状態にて各々トルク変動量を算出し、最もトルク変動量の小さい各気筒群毎の空燃比の設定を学習する。そして、学習した空燃比の設定にて上記気筒群毎の空燃比制御を実行することにより、トルク変動量を最小限に抑制した状態で、触媒３３ｂの温度を上昇させてＳＯｘ  等を同触媒３３ｂから除去することができる。
【００４７】
ここで、触媒３３ｂに吸着されたＳＯｘ  の量をＳＯｘ  被毒量Ｓとして算出する手順について図６を参照して説明する。図６は、ＳＯｘ  被毒量算出ルーチンを示すフローチャートである。このＳＯｘ  被毒量算出ルーチンは、ＥＣＵ９２を通じて例えば所定クランク角毎の角度割り込みにて実行される。
【００４８】
ＳＯｘ  被毒量算出ルーチンにおいて、ステップＳ１０１〜Ｓ１０３の処理はエンジン１１の運転状態に基づきＳＯｘ  被毒量Ｓを算出するためのものである。
ＥＵＣ９２は、ステップＳ１０１の処理として、最終燃料噴射量Ｑｆｉｎ  の燃料に含まれる硫黄（Ｓ）によるＳＯｘ  被毒量Ｓの増加分であるＳＯｘ  増加量ＳＵを算出する。即ち、最終燃料噴射量Ｑｆｉｎ  の燃料に含まれる硫黄（Ｓ）の濃度Ｎを「１００」で除算した値（「Ｎ／１００」）と、空燃比Ａ／Ｆ及び触媒温度Ｔに基づきマップを参照して求められる係数Ｋとを最終燃料噴射量Ｑｆｉｎ  に乗算してＳＯｘ  増加量ＳＵを算出する。
【００４９】
なお、上記空燃比Ａ／Ｆは空燃比センサ３４からの検出信号に基づき求められ、触媒温度Ｔはエンジン回転数ＮＥ及び体積効率ηに基づき所定の計算式によって算出される推定値である。これら空燃比Ａ／Ｆ及び触媒温度Ｔに基づきマップ演算される係数Ｋは、空燃比Ａ／Ｆが理論空燃比よりもリーン側の値であるとき、リーンになるほど且つ触媒温度Ｔが高くなるほど大きくなる。
【００５０】
ＥＣＵ９２は、続くステップＳ１０２の処理として、空燃比Ａ／Ｆと触媒温度Ｔとに基づきマップを参照して、同空燃比Ａ／Ｆ及び触媒温度ＴであるときのＳＯｘ  被毒量Ｓの減少分であるＳＯｘ  減少量ＳＤを算出する。こうして算出されるＳＯｘ  減少量ＳＤは、上記空燃比Ａ／Ｆ及び触媒温度Ｔであるときに触媒３３ｂから離脱するＳＯｘ  の量に対応した値になる。また、このＳＯｘ  減少量ＳＤは、空燃比Ａ／Ｆが理論空燃比よりもリッチ側の値であるときには触媒温度Ｔが高く且つリッチになるほど「０」よりも小さい値になり、空燃比Ａ／Ｆが理論空燃比よりもリーン側の値であるときには「０」に維持される。
【００５１】
ＥＣＵ９２は、ステップＳ１０３の処理として、前回のＳＯｘ  被毒量Ｓｉ−１  に上記ＳＯｘ  増加量ＳＵ及びＳＯｘ  減少量ＳＤを加算して今回のＳＯｘ  被毒量Ｓｉ  とする。こうして算出されるＳＯｘ  被毒量Ｓは、触媒温度Ｔが高くなるほど小さい値になる。これは触媒温度Ｔの上昇によるＳＯｘ  増加量ＳＵの増加幅が、同触媒温度Ｔの上昇によるＳＯｘ  の減少幅よりも小さいためである。従って、触媒温度Ｔの上昇によって触媒３３ｂからのＳＯｘ  の離脱量が増加すると、同触媒３３ｂに吸着されたＳＯｘ  の量が減少し、これに応じてＳＯｘ  被毒量Ｓも減少するようになる。
【００５２】
上記のようにＳＯｘ  被毒量Ｓを算出した後、ステップＳ１０４に進む。ステップＳ１０４〜Ｓ１０７の処理は、ＳＯｘ  被毒量Ｓに応じて実行フラグＦａの設定を行うためのものである。この実行フラグＦａは、ＳＯｘ  被毒量Ｓが上限値Ａよりも大きくなったときに「１」とされ、同ＳＯｘ  被毒量Ｓが上記上限値Ａよりも小さい値である許容値Ｂ未満になったときに「０」とされるものであって、後述する硫黄被毒回復処理ルーチンで用いられるものである。なお、上記上限値Ａは触媒３３ｂに吸着されたＳＯｘ  によってＮＯｘ  の吸着能力が低下するときのＳＯｘ  被毒量Ｓに対応する値である。
【００５３】
ＥＣＵ９２は、ステップＳ１０４の処理として、ＳＯｘ  被毒量Ｓが上限値Ａよりも大きいか否かを判断し、「Ｓ＞Ａ」であればステップＳ１０５の処理で実行フラグＦａとして「１」をＲＡＭ９５の所定領域に記憶した後、このＳＯｘ  被毒量算出ルーチンを一旦終了する。また、上記ステップＳ１０４の処理において、「Ｓ＜Ａ」であればステップＳ１０６に進む。
【００５４】
ＥＣＵ９２は、ステップＳ１０６の処理として、ＳＯｘ  被毒量Ｓが上限値Ａよりも小さい値である許容値Ｂ未満であるか否かを判断し、「Ｓ＜Ｂ」であればステップＳ１０７の処理で実行フラグＦａとして「０」をＲＡＭ９５の所定領域に記憶した後、このＳＯｘ  被毒量算出ルーチンを一旦終了する。また、上記ステップＳ１０６の処理において、「Ｓ＜Ｂ」でない旨判断された場合も、ＥＣＵ９２は当該ＳＯｘ  被毒量算出ルーチンを一旦終了する。
【００５５】
次に、触媒３３ｂに吸着されたＳＯｘ  を同触媒３３ｂから離脱させるための手順について図３及び図４を参照して説明する。図４は、メインルーチンを示すフローチャートであって、同ルーチンはＥＣＵ９２を通じて例えば所定時間毎の時間割り込みにて実行される。
【００５６】
ＥＣＵ９２は、ステップＳ２０１の処理として、例えばエンジン回転数ＮＥ等に基づきエンジン１１が動作中であるか否かを判断する。そして、エンジン１１が動作中ならばステップＳ２０２の硫黄被毒回復処理を実行し、エンジン１１の動作が停止した場合にはステップＳ２０３の処理として上記硫黄被毒回復処理で用いられる各フラグ及びトルク変動量をリセットする。こうしてステップＳ２０２とステップＳ２０３とのいずれかの処理を実行した後、ＥＣＵ９２は、このメインルーチンを一旦終了する。
【００５７】
ここで、上記ステップＳ２０２の硫黄被毒回復処理の概要について図５のタイムチャートを参照して説明する。
触媒３３ｂからＳＯｘ  を離脱させるために触媒３３ｂの温度を上昇させるのは、図５（ａ）に示すように、触媒３３ｂからＳＯｘ  を離脱させる際の条件である回復条件が成立したときである。こうした条件としては例えば、
（１）ストイキ燃焼中であること
（２）各気筒における混合気の空燃比を互いに異なるものとしてもエンジン１１の運転状態が悪化することのない安定した運転域にあること
（３）図６のＳＯｘ  被毒量算出ルーチンによって設定が行われる実行フラグＦａが「１」であること
等々が挙げられる。
【００５８】
エンジン１１が始動した後、初めて上記回復条件が全て成立すると、ＥＣＵ９２は、第１気筒群（１番及び４番気筒＃１，＃４）と第２気筒群（２番及び３番気筒＃２，＃３）との燃料噴射弁４０をそれぞれ駆動制御し、各気筒群毎に燃料噴射量を調整して気筒群毎の空燃比制御を実行する。即ち、ＥＣＵ９２は、図５（ｄ）に示すように、第１気筒群における混合気の空燃比を理論空燃比よりもリーンにするとともに、第２気筒群における混合気の空燃比を理論空燃比よりもリッチにする。
【００５９】
こうした各気筒群毎の空燃比制御が実行されると、排気通路３３に未燃燃料及び空気が供給され、同燃料が排気通路３３内で燃焼して触媒３３ｂの温度が上昇するようになる。こうした状況では、上述した空燃比Ａ／Ｆ及び触媒温度Ｔ等に基づき求められるＳＯｘ  減少量ＳＤの減少幅が、同じく空燃比Ａ／Ｆ及び触媒温度Ｔ等に基づき求められるＳＯｘ  増加量ＳＵの増加幅よりも大きくなる。その結果、それらＳＯｘ  増加量ＳＵ及びＳＯｘ  減少量ＳＤに基づき求められるＳＯｘ  被毒量Ｓが徐々に少なくなる。
【００６０】
また、このときには第１気筒群にて混合気の空燃比が理論空燃比よりもリーンとされるため、第１気筒群でのトルク変動量が大きいものとなる。ＥＣＵ９２は、上記のように各気筒群毎で空燃比制御が行われているとき、第１気筒群でのトルク変動量ｄＴ１を算出し、この算出が完了した後に図５（ｃ）に示すように算出完了フラグＦ１を「１」にする。この算出完了フラグＦ１は、第１気筒群にて空燃比がリーンになっているときのトルク変動量ｄＴ１の算出が完了しているか否かを判断するためのものである。
【００６１】
上記トルク変動量ｄＴ１の算出が完了した後、例えばＳＯｘ  被毒量Ｓが許容値Ｂ未満になって実行フラグＦａが「０」になったり、エンジン１１の燃焼方式がストイキ燃焼からリーン燃焼へと切り換えられるような機関運転状態となった場合には、図５（ａ）に示すように回復条件が不成立になる。このように回復条件が不成立になると、ＥＣＵ９２は、上記被毒回復のための空燃比制御を終了し、図５（ｂ）に示すように一回目完了フラグＦｆ１を「１」とする。この一回目完了フラグＦｆ１は、エンジン１１の始動後に一回目の被毒回復のための空燃比制御が完了したか否かを判断するためのものである。
【００６２】
その後、図５（ａ）に示すように、二回目の被毒回復条件成立がなされた場合も、ＥＣＵ９２は、第１気筒群と第２気筒群との燃料噴射弁４０をそれぞれ駆動制御し、各気筒群毎に燃料噴射量を調整して気筒群毎の空燃比制御を実行する。二回目の被毒回復処理のための空燃比制御においては、ＥＣＵ９２は、図５（ｇ）に示すように、第１気筒群における混合気の空燃比を理論空燃比よりもリッチにするとともに、第２気筒群における混合気の空燃比を理論空燃比よりもリーンにする。
【００６３】
このように各気筒群毎の空燃比制御が実行された場合も、排気通路３３に未燃燃料及び空気が供給され、同燃料が排気通路３３内で燃焼して触媒３３ｂの温度が上昇するようになる。こうした状況においても、上記と同様にＳＯｘ  減少量ＳＤの減少幅がＳＯｘ  増加量ＳＵの増加幅よりも大きくなり、それらＳＯｘ  増加量ＳＵ及びＳＯｘ  減少量ＳＤに基づき求められるＳＯｘ  被毒量Ｓが徐々に少なくなる。
【００６４】
また、このときには第２気筒群にて混合気の空燃比が理論空燃比よりもリーンとされるため、第２気筒群でのトルク変動量が大きいものとなる。ＥＣＵ９２は、上記のように各気筒群毎で空燃比制御が行われているとき、第２気筒群でのトルク変動量ｄＴ２を算出し、この算出が完了した後に図５（ｈ）に示すように算出完了フラグＦ２を「１」にする。この算出完了フラグＦ２は、第１気筒群にて空燃比がリーンになっているときのトルク変動量ｄＴ２の算出が完了しているか否かを判断するためのものである。
【００６５】
上記トルク変動量ｄＴ２の算出が完了した後、上記（１）〜（３）の条件の内の一つでも不成立になることにより、図５（ａ）に示すように回復条件が不成立になる。このように回復条件が不成立になると、ＥＣＵ９２は、上記被毒回復のための空燃比制御を終了し、図５（ｅ）に示すように二回目完了フラグＦｆ２を「１」とする。この二回目完了フラグＦｆ２は、エンジン１１の始動後に二回目の被毒回復のための空燃比制御が完了したか否かを判断するためのものである。
【００６６】
ＥＣＵ９２は、上記トルク変動量ｄＴ１，ｄＴ２の算出が完了すると、トルク変動量ｄＴ１がトルク変動量ｄＴ２未満であるか否かを判断する。そして、「ｄＴ１＜ｄＴ２」であれば図５（ｆ）に実線で示すように確定フラグＦＬを「１」とし、「ｄＴ１＜ｄＴ２」でなければ二点鎖線で示すように確定フラグＦＬを「０」に維持する。この確定フラグＦＬは、被毒回復のための空燃比制御の際にトルク変動量を最小することのできる各気筒群毎の空燃比の設定を学習するためのものである。
【００６７】
確定フラグＦＬが「１」であれば、ＥＣＵ９２は、三回目以後の被毒回復条件成立がなされたときには、第１気筒群をリーンにするとともに第２気筒群をリッチにして触媒３３ｂの温度を上昇させ、同触媒３３ｂからＳＯｘ  を離脱させる。上記確定フラグＦＬが「１」であって「ｄＴ１＜ｄＴ２」である場合には、第１気筒群をリーンにするとともに第２気筒群をリッチにした方がエンジン１１のトルク変動量が小さくなる。そして、ＥＣＵ９２が確定フラグＦＬを「１」とすることで、エンジン１１のトルク変動量を最も小さくすることの可能な各気筒群毎の空燃比の設定が学習される。即ち、確定フラグＦＬを「１」とすることで、被毒回復のための空燃比制御として第１気筒群をリーンにするとともに第２気筒群をリッチにするという空燃比の設定が学習され、三回目以後の被毒回復の際には上記学習された空燃比の設定にて上記空燃比制御が行われる。
【００６８】
また、確定フラグＦＬが「０」であれば、ＥＣＵ９２は、三回目以後の被毒回復条件成立がなされたときには、第１気筒群をリッチにするとともに第２気筒群をリーンにして触媒３３ｂの温度を上昇させ、同触媒３３ｂからＳＯｘ  を離脱させる。上記確定フラグＦＬが「０」であって「ｄＴ１＜ｄＴ」でない場合には、第１気筒群をリッチにするとともに第２気筒群をリーンにした方がエンジン１１のトルク変動が小さくなる。そして、ＥＣＵ９２が確定フラグＦＬを「０」とすることで、エンジン１１のトルク変動量を最も小さくすることの可能な各気筒群毎の空燃比の設定が学習される。即ち、確定フラグＦＬを「０」とすることで、被毒回復のための空燃比制御として第１気筒群をリッチにするとともに第２気筒群をリーンにするという空燃比の設定が学習され、三回目以後の被毒回復の際には上記学習された空燃比の設定にて上記空燃比制御が行われる。
【００６９】
次に、図３のメインルーチンにおけるステップＳ２０２の硫黄被毒回復処理の詳細について図４を参照して説明する。図４は、触媒３３ｂに吸着されたＳＯｘ  を同触媒３３ｂから離脱させるための硫黄被毒回復処理ルーチンを示すフローチャートである。この硫黄被毒回復処理ルーチンは、ＥＣＵ９２を通じて上記メインルーチンのステップＳ２０２に進む毎に実行される。
【００７０】
硫黄被毒回復処理ルーチンにおいて、ＥＣＵ９２は、ステップＳ３０１の処理として、上記（１）〜（３）の条件が全て成立しているか否か、即ち触媒３３ｂにおけるＳＯｘ  被毒の回復条件が成立しているか否かを判断する。そして、エンジン１１の始動から最初に上記回復条件が成立するまでの間など、同回復条件が成立していない場合にはステップＳ３１３に進む。ステップＳ３１３〜Ｓ３１６以降の処理は、一回目完了フラグＦｆ１及び二回目完了フラグＦｆ２の設定を行うためのものである。この一回目完了フラグＦｆ１は、エンジン始動後において初回の回復条件成立がなされ、初回の被毒回復が完了したか否かを判断するためのものである。また、二回目完了フラグＦｆ２は、エンジン始動後において二回目の回復条件成立がなされ、二回目の被毒回復が完了したか否かを判断するためのものである。
【００７１】
エンジン１１の始動から最初に上記回復条件が成立するまでの間は、上記ステップＳ３０１の処理において、上記回復条件が不成立である旨判断されてステップＳ３１３に進む。ＥＣＵ９２は、ステップＳ３１３の処理で、算出完了フラグＦ１として「１」がＲＡＭ９５の所定領域に記憶されているか否かを判断する。この算出完了フラグＦ１は、後述する初回の被毒回復の際にトルク変動量ｄＴ１が算出されたとき「１」に設定されるものである。従って、エンジン始動から最初に回復条件が成立するまでの間は、算出完了フラグＦ１が初期値である「０」となっており、上記のようにステップＳ３１３に進んだとき同ステップＳ３１３の処理で「Ｆ１＝１」でない旨判断される。このようにステップＳ３１３で否定判定（ＮＯ）がなされると、ＥＣＵ９２は、この硫黄被毒回復処理ルーチンを一旦終了してメインルーチン（図３）に戻る。
【００７２】
一方、エンジン１１の始動後において、一回目の回復条件成立がなされて上記ステップＳ３０１の処理で肯定判定（ＹＥＳ）がなされると、ステップＳ３０２に進む。このステップＳ３０２の処理は、一回目の回復条件成立であるか否かを判断するためのものである。ＥＣＵ９２は、ステップＳ３０２の処理とで、一回目完了フラグＦｆ１及び算出完了フラグＦ１として共に「１」がＲＡＭ９５の所定領域に記憶されているか否かを判断する。この一回目完了フラグＦｆ１は一回目の被毒回復条件成立が終了したときに「１」とされ、算出完了フラグＦ１は後述する処理によって一回目の被毒回復が行われてトルク変動量ｄＴ１が算出されたときに「１」とされる。
【００７３】
従って、エンジン１１の始動後に初めて被毒回復条件が成立してステップＳ３０２に進んだときには、一回目完了フラグＦｆ１及び算出完了フラグＦ１が共に「０」となり、同ステップＳ３０２の処理でＮＯと判断されてステップＳ３１０に進む。ステップＳ３１０〜Ｓ３１２の処理は、第１気筒群の空燃比をリーンにするとともに第２気筒群の空燃比をリッチにして触媒３３ｂにおけるＳＯｘ  被毒の回復を行い、この状態での第１気筒群のトルク変動量ｄＴ１を算出するためのものである。
【００７４】
ＥＣＵ９２は、ステップＳ３１０の処理として、第１気筒群における混合気の空燃比を理論空燃比よりもリーンにするとともに、第２気筒群における混合気の空燃比を理論空燃比よりもリッチにする。即ち、１番及び４気筒＃１，＃４の燃料噴射弁４０を駆動制御して混合気を理論空燃比とする場合よりも例えば２０％減量した値の燃料を噴射供給する。また、２番及び３番気筒＃２，＃３の燃料噴射弁４０を駆動制御して混合気を理論空燃比とする場合よりも例えば２０％増量した値の燃料を噴射供給する。このように各気筒群毎の空燃比制御を行うことで、排気通路３３に未燃燃料及び空気を供給して同燃料を排気通路３３にて燃焼させ、この燃料の燃焼によって触媒３３ｂの温度を上昇させて同触媒３３ｂからＳＯｘ  を離脱させる。
【００７５】
こうした触媒３３ｂにおけるＳＯｘ  被毒の回復を実行する場合、第１気筒群をリーンにするとともに第２気筒群をリッチにするため、第１気筒群の稼動時に生じるトルク変動が大きくなり、エンジン１１の出力トルクが所定サイクルで変動する。この第１気筒群の稼動によるトルク変動量ｄＴ１は、続くステップＳ３１１の処理によって算出される。ＥＣＵ９２は、ステップＳ３１１の処理として、クランクポジションセンサ１４ｃ及びカムポジションセンサ２１ｂからの検出信号に基づいて上記トルク変動量ｄＴ１を算出する。即ち、ＥＣＵ９２は、１番及び４番気筒＃１，＃４が稼動するときのトルク変動量を算出し、それら気筒＃１，＃４毎のトルク変動量を平均したものを上記第１気筒群のトルク変動量ｄＴ１として算出する。
【００７６】
なお、稼働気筒のトルク変動を計算する際には、上死点を含む所定のクランク角度分（例えば３０°）を通過する際の角速度と、上死点から９０°進角して位置する所定のクランク角度分（例えば３０°）を通過する際の角速度とを求める。そして、それら角速度に基づき稼働気筒での点火時における発生トルクを算出し、前回算出された発生トルクと今回算出された発生トルクとの差を稼働気筒でのトルク変動量とする。
【００７７】
上記のように第１気筒群のトルク変動量ｄＴ１を算出した後、ステップＳ３１２に進む。ＥＣＵ９２は，ステップＳ３１２の処理で、算出完了フラグＦ１として「１」をＲＡＭ９５の所定領域に記憶した後、この硫黄被毒回復ルーチンを一旦終了する。このように算出完了フラグＦ１は、第１気筒群のトルク変動量ｄＴ１が算出されると、初期値である「０」から「１」へと変化するようになる。また、算出完了フラグＦ１が「１」になった後においても、図５（ａ）に示すように一回目の回復条件成立が継続されている間は、ステップＳ３０１からステップＳ３０２に進むようになる。この場合、図５（ｂ），（ｃ）に示すように、算出完了フラグＦ１が「１」であっても、一回目完了フラグＦｆ１が初期値である「０」のままなので、ステップＳ３０２の処理でＮＯと判断されて引き続きステップＳ３１０〜Ｓ３１２の処理が行われる。
【００７８】
この状態にあっては、上記各気筒群毎の空燃比制御によって排気通路３３での燃料の燃焼が行われ、これにより触媒３３ｂの温度が上昇してＳＯｘ  が同触媒３３ｂから離脱する。このようにＳＯｘ  被毒の回復が行われることにより、ＳＯｘ  被毒量Ｓが許容値Ｂ未満になると、ＳＯｘ  被毒量算出ルーチン（図６）によって実行フラグＦａが「０」とされる。実行フラグＦａが「０」になるなど上記ＳＯｘ  被毒の回復条件が不成立になると、一回目の回復条件成立が終了してステップＳ３０１の処理でＮＯと判断され、ステップＳ３１３に進むようになる。
【００７９】
今回のステップＳ３１３の処理においては、一回目の被毒回復が実行済みであってトルク変動量ｄＴ１の算出も完了し、算出完了フラグＦ１が「１」となっているため、「Ｆ１＝１」である旨判断されてステップＳ３１４に進む。ＥＣＵ９２は、ステップＳ３１４の処理で、算出完了フラグＦ２として「１」がＲＡＭ９５の所定領域に記憶されているか否かを判断する。この算出完了フラグＦ２は、後述する二回目の被毒回復の際にトルク変動量ｄＴ２が算出されたとき「１」に設定されるものである。今回のように算出完了フラグＦ１が「１」になった後、初めてステップＳ３１４に進んだ場合には、算出完了フラグＦ２が初期値である「０」となっているため、「Ｆ２＝１」でない旨判断されてステップＳ３１６に進む。ＥＣＵ９２は、ステップＳ３１６の処理で、図５（ｂ）に示すように一回目完了フラグＦｆ１として「１」をＲＡＭ９５の所定領域に記憶した後、この硫黄被毒回復処理ルーチンを一旦終了する。
【００８０】
図５（ｂ），（ｃ）に示すように、一回目完了フラグＦｆ１及び算出完了フラグＦ１が共に「１」である状態にあって、図５（ａ）に示すように二回目の回復条件成立がなされると、ステップＳ３０１の処理でＹＥＳと判断されてステップＳ３０２の判断処理が行われる。この場合、「Ｆｆ１＝Ｆ１＝１」であるため、ステップＳ３０２の処理でＹＥＳと判断され、ステップＳ３０３に進む。ステップＳ３０３の処理は、二回目の回復条件成立であるか否かなどを判断するためのものである。
【００８１】
ＥＣＵ９２は、ステップＳ３０３の処理で、二回目完了フラグＦｆ２として「０」がＲＡＭ９５の所定領域に記憶されていること、及び後述する確定フラグＦＬとして「０」がＲＡＭ９５の所定領域に記憶されていることのいずれかの条件が成立しているか否かを判断する。なお、上記確定フラグＦＬは、三回目以後の回復条件成立がなされたとき、被毒回復のための空燃比制御として上記ステップＳ３１０の処理を実行するか、或いは後述するステップＳ３０４の処理を実行するかを決定するためのものである。
【００８２】
上記のように二回目の回復条件成立がなされて初めてステップＳ３０３に進んだ場合には、二回目完了フラグＦｆ２が初期値である「０」となっているので、ステップＳ３０３の処理でＹＥＳと判断され、ステップＳ３０４に進む。ステップＳ３０４，Ｓ３０５の処理は、第１気筒群の空燃比をリッチにするとともに第２気筒群の空燃比をリーンにして触媒３３ｂにおけるＳＯｘ  被毒の回復を行い、この状態での第２気筒群のトルク変動量ｄＴ２を算出するためのものである。
【００８３】
ＥＣＵ９２は、ステップＳ３０４の処理として、第１気筒群における混合気の空燃比を理論空燃比よりもリッチにするとともに、第２気筒群における混合気の空燃比を理論空燃比よりもリーンにする。即ち、１番及び４気筒＃１，＃４の燃料噴射弁４０を駆動制御して混合気を理論空燃比とする場合よりも例えば２０％増量した値の燃料を噴射供給する。また、２番及び３番気筒＃２，＃３の燃料噴射弁４０を駆動制御して混合気を理論空燃比とする場合よりも例えば２０％減量した値の燃料を噴射供給する。このように各気筒群毎の空燃比制御を行うことで、排気通路３３に未燃燃料及び空気を供給して同燃料を排気通路３３にて燃焼させ、この燃料の燃焼によって触媒３３ｂの温度を上昇させて同触媒３３ｂからＳＯｘ  を離脱させる。
【００８４】
こうした触媒３３ｂにおけるＳＯｘ  被毒の回復を実行する場合、第１気筒群をリッチにするとともに第２気筒群をリーンにするため、第２気筒群の稼動によるトルク変動が大きくなり、エンジン１１の出力トルクが所定サイクルで変動する。第２気筒群の稼動によるトルク変動量ｄＴ２は、続くステップＳ３０５の処理によって算出される。ＥＣＵ９２は、ステップＳ３０５の処理として、クランクポジションセンサ１４ｃ及びカムポジションセンサ２１ｂからの検出信号に基づいて上記トルク変動量ｄＴ２を算出する。即ち、ＥＣＵ９２は、２番及び３番気筒＃２，＃３が稼動するときのトルク変動量を算出し、それら気筒＃２，＃３毎のトルク変動量を平均したものを上記第２気筒群のトルク変動量ｄＴ２として算出する。
【００８５】
上記のように第２気筒群のトルク変動量ｄＴ２を算出した後、ステップＳ３０６に進む。ＥＣＵ９２は、ステップＳ３０６の処理で、算出完了フラグＦ２として「０」がＲＡＭ９５の所定領域に記憶されているか否かを判断する。この算出完了フラグＦ２は、上記トルク変動量ｄＴ２が算出された後に後述するステップＳ３０７の処理によって初期値である「０」から「１」へと変更される。そのため、今回のように初めてステップＳ３０６に進んだ場合には、同ステップＳ３０６の処理でＹＥＳと判断されてステップＳ３０７に進む。このステップＳ３０７の処理で、ＥＣＵ９２は、図５（ｈ）に示すように、算出完了フラグＦ２として「１」をＲＡＭ９５の所定領域に記憶する。
【００８６】
算出完了フラグＦ２を「１」とした後、ステップＳ３０８に進む。ステップＳ３０８，Ｓ３０９の処理は、上記トルク変動量ｄＴ１，ｄＴ２に基づき確定フラグＦＬの設定を行うためのものである。ＥＣＵ９２は、ステップＳ３０８の処理として、トルク変動量ｄＴ１がトルク変動量ｄＴ２よりも小さいか否かを判断する。そして、「ｄＴ１＜ｄＴ２」でなければこの硫黄被毒回復処理ルーチンを一旦終了し、「ｄＴ＜ｄＴ」でなければステップＳ３０９の処理で確定フラグＦＬとして「１」をＲＡＭ９５の所定領域に記憶した後、この硫黄被毒回復処理ルーチンを一旦終了する。
【００８７】
この確定フラグＦＬは、初期状態では「０」であって上記のように「ｄＴ１＜ｄＴ２」である場合には「１」とされる。即ち、確定フラグＦＬは、第２気筒群をリーンにするよりも第１気筒群をリーンにした方がエンジン１１のトルク変動量が小さくなる場合には「１」とされ、第１気筒群をリーンにするよりも第２気筒群をリーンにする方がエンジン１１のトルク変動量が小さくなる場合には「０」とされる。上記のように算出完了フラグＦ２が「１」となり、確定フラグＦＬが「１」若しくは「０」に決定された後、二回目の回復条件成立が継続している場合には上記ステップＳ３０１，Ｓ３０２の処理を経てステップＳ３０３に進むこととなる。
【００８８】
この場合、確定フラグＦＬが仮に「１」であったとしても、二回目の被毒回復が終了したときに「１」となる二回目完了フラグＦｆ２が、図５（ｅ）に示すように初期値である「０」のままなので、ステップＳ３０３の判断処理でＹＥＳと判断されて引き続きステップＳ３０４，Ｓ３０５の処理が行われる。この状態にあっては、ステップＳ３０４の処理に基づく空燃比制御によって排気通路３３での燃料の燃焼が行われ、これにより触媒３３ｂの温度が上昇してＳＯｘ  が同触媒３３ｂから離脱する。このようにＳＯｘ  被毒の回復が行われることにより、ＳＯｘ  被毒量Ｓが許容値Ｂ未満になると、ＳＯｘ  被毒量算出ルーチン（図６）によって実行フラグＦａが「０」とされる。実行フラグＦａが「０」になるなど上記ＳＯｘ  被毒の回復条件が不成立になると、二回目の回復条件成立が終了してステップＳ３０１の処理でＮＯと判断され、ステップＳ３１３に進むようになる。
【００８９】
今回のステップＳ３１３以降の処理においては、一回目及び二回目の被毒回復が実行済みであってトルク変動量ｄＴ１，ｄＴ２の算出も完了し、算出完了フラグＦ１，Ｆ２が共に「１」となっている。そのため、ステップＳ３１３，Ｓ３１４の処理で共にＹＥＳと判断されてステップＳ３１５に進む。ＥＣＵ９２は、ステップＳ３１５の処理で、図５（ｅ）に示すように、二回目完了フラグＦｆ２として「１」をＲＡＭ９５の所定領域に記憶し、続くステップＳ３１６の処理を実行した後、この硫黄被毒回復処理ルーチンを一旦終了する。
【００９０】
図５（ｂ），（ｃ），（ｅ），（ｈ）に示すように、算出完了フラグＦ１，Ｆ２、並びに一回目及び二回目完了フラグＦｆ１，Ｆｆ２が全て「１」とされている状態にあって、図５（ａ）に示すように三回目の回復条件成立がなされると、ステップＳ３０１，Ｓ３０２の処理を経てステップＳ３０３に進む。この場合、二回目完了フラグＦｆ２が「１」となっているため、ステップＳ３０３の処理において、確定フラグＦＬに基づきステップＳ３１０以降の処理を実行するか、或いはステップＳ３０４以降の処理を実行するかが決定される。この確定フラグＦＬによって、被毒回復のための空燃比制御の際にトルク変動量を最小することのできる各気筒群毎の空燃比の設定を学習することができる。
【００９１】
即ち、第１気筒群の空燃比をリーンにした方がエンジン１１のトルク変動量が小さくなる場合（「ｄＴ１＜ｄＴ」）、ステップＳ３０９の処理で確定フラグＦＬが「１」とされる。その結果、上記ステップＳ３０３の処理でＮＯと判断され、ステップＳ３１０の処理により第１気筒群がリーンにされるとともに第２気筒群がリッチにされる。このように確定フラグＦＬが「１」とされることで、上記のようなトルク変動を最小とすることのできる各気筒群毎の空燃比の設定が学習され、三回目以降の被毒回復のための空燃比制御の際には上記空燃比の設定にて被毒回復のための空燃比制御が行われる。
【００９２】
また、第２気筒群をリーンにした方がエンジン１１のトルク変動量が小さくなる場合（「ｄＴ１≧ｄＴ２」）、ステップＳ３０９の処理で確定フラグＦＬが「１」とされることはなく、初期値である「０」に維持されることとなる。その結果、上記ステップＳ３０３の処理でＹＥＳと判断され、ステップＳ３０４の処理により第１気筒群がリッチにされるとともに第２気筒群がリーンにされる。このように確定フラグＦＬが「０」に維持されることで、上記のようなトルク変動を最小とすることのできる各気筒群毎の空燃比の設定が学習され、三回目以降の被毒回復のための空燃比制御の際には上記空燃比の設定にて被毒回復のための空燃比制御が行われる。
【００９３】
さて、エンジン１１の動作中には上述した各フラグ及びトルク変動量等に基づき触媒３３ｂのＳＯｘ  被毒回復のための空燃比制御が実行されるが、それら各フラグ及びトルク変動量はエンジン１１の動作が停止するとリセットされることとなる。即ち、エンジン１１の動作が停止すると、図３のメインルーチンにおけるステップＳ２０１の処理でＮＯと判断され、ステップＳ２０３に進むようになる。ＥＣＵ９２は、ステップＳ２０３の処理として、算出完了フラグＦ１，Ｆ２、一回目及び二回目完了フラグＦｆ１，Ｆｆ２、確定フラグＦＬ、及びトルク変動量ｄＴ１，ｄＴ２を「０」にする。こうして各フラグ及びトルク変動量をリセットした後、このメインルーチンを一旦終了する。
【００９４】
以上詳述した処理が行われる本実施形態によれば、以下に示す効果が得られるようになる。
（１）触媒３３ｂからＳＯｘ  を離脱させるためには、同触媒３３ｂの温度を上昇させる必要がある。この触媒３３ｂの温度上昇は、第１気筒群をリーンにするとともに第２気筒群をリッチにするか、或いは第１気筒群をリッチにするとともに第２気筒群をリーンにすることによって行われる。即ち、上記のように各気筒群毎に空燃比制御を行により排気通路３３ｂに未燃燃料と空気とを供給し、同燃料を排気通路３３にて燃焼させて触媒３３ｂの温度を上昇させる。本実施形態では、上記各気筒群毎の空燃比の設定の内、第１気筒群をリーンにしたとき、及び第２気筒群をリーンにしたときのトルク変動量ｄＴ１，ｄＴ２をそれぞれ算出し、トルク変動量が小さくなる方の空燃比の設定にてＳＯｘ  被毒回復のための空燃比制御を実行する。従って、上記被毒回復のための空燃比制御が行われる際にトルク変動量が最小に抑えられ、同トルク変動に伴うドライバビリティの悪化を抑制することができる。
【００９５】
（第２実施形態）
次に、本発明の第２実施形態を図７及び図８に基づき説明する。本実施形態では、硫黄被毒回復処理ルーチンで使用する各フラグ及びトルク変動量をエンジン１１の停止時にバックアップＲＡＭ９６に記憶する。そして、バックアップＲＡＭ９６に記憶した上記各フラグ及びトルク変動量を、エンジン１１の始動時に読み込んで硫黄被毒回復処理ルーチンを実行する際に使用する。なお、上記各フラグ及びトルク変動量は、ＳＯｘ  被毒の回復条件成立が所定回数以上なされたときにリセットされる。
【００９６】
上記のように各フラグ及びトルク変動量をエンジン停止時に記憶することで、触媒３３ｂへのＳＯｘ  の吸着が少ない場合などに被毒回復のための空燃比制御を行うとき、第１気筒群ばかりがリーンになってしまうのを防止することができる。エンジン停止毎に各フラグ及びトルク変動量をリセットしていると、触媒３３ｂへのＳＯｘ  の吸着が少ない場合など、エンジン１１の始動から停止までの間に例えば一回しか被毒回復条件が成立しないとき、エンジン始動後の最初の被毒回復のための空燃比制御で第１気筒群ばかりがリーンになってしまう。しかし、上記ように各フラグ及びトルク変動量をエンジン停止時に記憶するとともにエンジン始動時に読み込めば、エンジン始動後の最初の被毒回復のための空燃比制御で第１気筒群ばかりがリーンになるのを防止することができる。
【００９７】
このように本実施形態では、上記各フラグ及びトルク変動量に対する記憶及び読み込みやリセットなどの操作が第１実施形態と異なっている。従って、本実施形態においては第１実施形態と異なる部分についてのみ説明し、第１実施形態と同一部分については詳細な説明を省略する。
【００９８】
図７は、本実施形態のメインルーチンを示すフローチャートであって、このメインルーチンもＥＣＵ９２を通じて所定時間毎の時間割り込みにて実行される。メインルーチンおいて、ステップＳ４０１，Ｓ４０２の処理はエンジン始動時にバックアップＲＡＭ９６から各フラグ及びトルク変動量を読み込むためのものである。即ち、ＥＣＵ９２は、ステップＳ４０１の処理として、エンジン回転数ＮＥ等に基づきエンジン始動時か否かを判断する。そして、ステップＳ４０１の処理においてエンジン始動時である旨判断されると、ステップＳ４０２の処理として、後述する処理によってバックアップＲＡＭ９６に記憶された算出完了フラグＦ１，Ｆ２、一回目及び二回目完了フラグＦｆ１，Ｆｆ２、及び確定フラグＦＬ、並びにトルク変動量ｄＴ１，ｄＴ２を読み込んだ後、ステップＳ４０３に進む。また、上記ステップＳ４０１の処理においてエンジン始動時でない旨判断されると、直接ステップＳ４０３に進む。
【００９９】
ＥＣＵ９２は、ステップＳ４０３の処理として、エンジン回転数ＮＥ等に基づきエンジン動作中であるか否かを判断する。そして、エンジン動作中であればステップＳ４０４の処理を行い、エンジン動作中でなければステップＳ４１０に進む。ステップＳ４０４の硫黄被毒回復処理は、第１実施形態におけるメインルーチン（図３）のステップＳ２０２の処理と同じものである。従って、ステップＳ４０４に進む毎に、硫黄被毒回復処理ルーチン（図４）が実行されることとなる。
【０１００】
この硫黄被毒回復処理ルーチンにおいては、一回目の被毒回復条件成立がなされている間、第１気筒群をリーンにするとともに第２気筒群をリッチにすることで、触媒３３ｂからＳＯｘ  を離脱させる。更に、この状態にあって、第１気筒群のトルク変動量ｄＴ１を算出する。そして、トルク変動量ｄＴ１の算出が完了したときに算出完了フラグＦ１を初期値である「０」から「１」へと変更し、一回目の被毒回復が終了したときに一回目完了フラグＦｆ１を初期値である「０」から「１」へと変更する。
【０１０１】
また、硫黄被毒回復処理ルーチンおいては、二回目の被毒回復条件成立がなされている間、第１気筒群をリッチにするとともに第２気筒群をリーンにすることで、触媒３３ｂからＳＯｘ  を離脱させる。更に、この状態にあって、第２気筒群のトルク変動量ｄＴ２を算出する。そして、トルク変動量ｄＴ２の算出が完了したときに算出完了フラグＦ２を初期値である「０」から「１」へと変更し、二回目の被毒回復が終了したときに二回目完了フラグＦｆ２を初期値である「０」から「１」へと変更する。
【０１０２】
上記トルク変動量ｄＴ１，ｄＴ２が算出されて算出完了フラグＦ１，Ｆ２が共に「１」とされると、「ｄＴ１＜ｄＴ２」であるか否かに基づき確定フラグＦＬが「０」若しくは「１」に設定される。即ち、「ｄＴ１＜ｄＴ２」であれば確定フラグＦＬが「１」に設定され、三回目以降の被毒回復の際には上記確定フラグＦＬが「１」であることに基づき、第１気筒群をリーンにするとともに第２気筒群をリッチにする。また、「ｄＴ１＜ｄＴ２」でなければ確定フラグＦＬが初期値である「０」に維持され、三回目以降の被毒回復の際には上記確定フラグＦＬが「０」であることに基づき、第１気筒群をリッチにするとともに第２気筒群をリーンにする。
【０１０３】
このように被毒回復のための空燃比制御を確定フラグＦＬに基づき最もトルク変動量の小さくなる各気筒群毎の空燃比の設定にて行うことにより、上記被毒回復中のトルク変動量を最小に抑えてドライバビリティの悪化を抑制することができる。
【０１０４】
ところで、動作中のエンジン１１が停止すると、上記ステップＳ４０３の処理でＮＯと判断され、ステップＳ４１０に進むようになる。ＥＣＵ９２は、ステップＳ４１０の処理として、現在の算出完了フラグＦ１，Ｆ２、一回目及び二回目完了フラグＦｆ１，Ｆｆ２、及び確定フラグＦＬ、並びにトルク変動量ｄＴ１，ｄＴ２をバックアップＲＡＭ９６に記憶した後、このメインルーチンを一旦終了する。こうしてエンジン停止時にバックアップＲＡＭ９６に記憶された各フラグ及びトルク変動量は、エンジン始動時にステップＳ４０２の処理によって読み込まれる。
【０１０５】
ここで、本実施形態における被毒回復処理の概要を図８のタイムチャートを参照して説明する。
各フラグ及びトルク変動量が初期値である「０」のとき、図８（ａ）に示すようにエンジン始動後における初回の被毒回復条件成立がなされると、図８（ｄ）に示すように第１気筒群がリーンにされるととともに第２気筒群がリッチにされる。この状態にあって、トルク変動量ｄＴ１の算出が行われるとともに、算出完了フラグＦ１が「１」とされる。その後、被毒回復が条件が不成立になると、一回目完了フラグＦｆ１が「１」とされる。こうして上記被毒回復のための各気筒群毎の空燃比制御が終了した後にエンジン１１の作動が停止すると、上記各フラグ及びトルク変動量がバックアップＲＡＭ９６に記憶される。
【０１０６】
そして、エンジン１１が再始動されると、バックアップＲＡＭ９６に記憶された各フラグ及びトルク変動が読み込まれる。その後、被毒回復条件が成立すると、図８（ｂ），（ｃ），（ｅ）に示すように、一回目完了フラグＦｆ１及び算出完了フラグＦ１が「１」であって、且つ二回目完了フラグＦｆ２が「０」であることから、図８（ｇ）に示すように第１気筒群がリッチにされるとともに第１気筒群がリーンにされる。この状態にあって、トルク変動量ｄＴ２の算出が行われるとともに、算出完了フラグＦ２が「１」とされる。
【０１０７】
こうしてトルク変動量ｄＴ１，ｄＴ２の算出が完了すると、「ｄＴ１＜ｄＴ２」であるか否か基づき確定フラグＦＬが「０」若しくは「１」に設定される。その後、被毒回復が条件が不成立になると、二回目完了フラグＦｆ２が「１」とされる。こうして上記被毒回復のための各気筒群毎の空燃比制御が終了した後にエンジン１１の作動が停止すると、上記各フラグ及びトルク変動量がバックアップＲＡＭ９６に記憶される。
【０１０８】
その後、エンジン１１が再始動されると、バックアップＲＡＭ９６に記憶された各フラグ及びトルク変動が読み込まれる。そして、被毒回復条件が成立すると、図８（ｆ）に示す確定フラグＦＬに応じた各気筒群毎の空燃比の設定にて被毒回復のための空燃比制御を実行する。即ち、図８（ｆ）に実線で示すように、確定フラグＦＬが「１」である場合には、図８（ｄ）に実線で示すように第１気筒群をリーンにするとともに第２気筒群をリッチにする。また、図８（ｆ）に二点鎖線で示すように確定フラグＦＬが「０」である場合には、図８（ｇ）に二点鎖線で示すように第１気筒群をリッチにするとともに第２気筒群をリーンにする。このように被毒回復のための空燃比制御を行うことで、触媒３３ｂの温度を上昇させてＳＯｘ  を離脱させることができるとともに、上記空燃比制御に伴うトルク変動量を最小に抑えてドライバビリティの悪化を抑制することができる。
【０１０９】
また、エンジン停止時には各トルク及びトルク変動量をバックアップＲＡＭ９６に記憶し、同記憶されたフラグ及びトルク変動量をエンジン始動時に読み込むようにした。そのため、触媒３３ｂに対するＳＯｘ  の吸着が少なく、エンジンの始動から停止までの間に被毒回復が例えば一回だけしか行われない場合であっても、被毒回復のための空燃比制御の際に毎回第１気筒群がリーンになるのを防止することができる。従って、被毒回復のための空燃比制御における最もトルク変動の小さくなる空燃比の設定の学習が遅れるのを抑制することができ、同学習をエンジン始動後の早期に完了することができるようになる。
【０１１０】
さて、説明を図７のメインルーチンに戻す。ステップＳ４０４の処理が行われた後、ステップＳ４０５に進む。ステップＳ４０５〜ステップＳ４０９の処理は、被毒回復条件の成立回数が所定回数を越えたときに上記各フラグ及びトルク変動量をリセットするためのものである。このように各フラグ及びトルク変動量を所定のタイミングでリセットすることにより、被毒回復のための空燃比制御における最もトルク変動量の小さくなる空燃比の設定の学習が再度行われることとなる。従って、何らかの原因で上記最もトルク変動量の小さくなる空燃比の設定が変化したとしても、実際の空燃比の設定を上記再学習によって最適に維持することが可能になる。
【０１１１】
ＥＣＵ９２は、ステップＳ４０５の処理として、被毒回復条件が成立した状態から不成立の状態へと変化したか否かを判断する。そして、ＮＯならばこのメインルーチンを一旦終了し、ＹＥＳならばステップＳ４０６に進む。ＥＣＵ９２は、ステップＳ４０６の処理として、被毒回復条件の成立回数に対応したカウンタＣに「１」を加算する。ＥＣＵ９２は、続くステップＳ４０７の処理として、カウンタＣが所定値ａ（例えば「１０」）よりも大きいか否かを判断する。そして、「Ｃ＞ａ」でなく被毒回復条件の成立回数が１０回以下である旨判断されると当該メインルーチンを一旦終了し、「Ｃ＞ａ」であって被毒回復条件の成立回数が１０回よりも多い旨判断されるとステップＳ４０８に進む。
【０１１２】
ＥＣＵ９２は、ステップＳ４０８の処理として、カウンタＣを「０」にする。更に、ステップＳ４０９の処理として算出完了フラグＦ１，Ｆ２、一回目及び二回目完了フラグＦｆ１、及び確定フラグＦＬ、並びにトルク変動量ｄＴ１，ｄＴ２を「０」にしてリセットした後、このメインルーチンを一旦終了する。
【０１１３】
以上詳述した処理が行われる本実施形態によれば、第１実施形態に記載した（１）の効果に加え、以下に示す効果が得られるようになる。
（２）エンジン停止時に各フラグ及びトルク変動量をバックアップＲＡＭ９６に記憶し、同記憶された各フラグ及びトルク変動量をエンジン始動時に読み込むようにした。そのため、触媒３３ｂに対するＳＯｘ  の吸着が少なく、エンジン始動から停止までの間に被毒回復のための空燃比制御が例えば一回だけしか行われない場合においても、被毒回復条件成立毎に第１気筒群がばかりがリーンにされるのを防止することができる。従って、被毒回復のための空燃比制御における最もトルク変動が小さくなる空燃比の設定の学習が遅れるのを抑制することができ、同学習をエンジン始動後の早期に完了することができるようになる。
【０１１４】
（３）被毒回復条件の成立回数が所定回数より多くなると各フラグ及びトルク変動がリセットされ、被毒回復のための空燃比制御における最もトルク変動量の小さくなる空燃比の設定が再学習される。従って、何らかの原因で上記最もトルク変動量の小さくなる空燃比の設定が変化したとしても、実際の空燃比の設定を上記再学習によって最適に維持することができる。
【０１１５】
（第３実施形態）
次に、本発明の第３実施形態を図９及び図１０に基づき説明する。本実施形態では、被毒回復条件の成立期間中に被毒回復のための空燃比制御における空燃比の設定を変更し、各々の空燃比の設定で上記空燃比制御を行ったときのトルク変動量を算出する。このように一回の被毒回復条件の成立期間中に、上記空燃比の設定を変更して各々の設定でのトルク変動を算出することにより、最もトルク変動量の小さくなる空燃比の設定の学習をエンジン始動後の早期に完了することができる。なお、本実施形態では、硫黄被毒回復処理ルーチンのみが第１実施形態と異なっている。従って、本実施形態においては第１実施形態と異なる部分についてのみ説明し、第１実施形態と同一の部分については詳細な説明を省略する。
【０１１６】
まず、本実施形態における被毒回復処理の概要を図９のタイムチャートを参照して説明する。
エンジンの始動後であって各フラグ及びトルク変動量が初期値である「０」とされているとき、図９（ａ）に示すように一回目の回復条件成立がなされると、図９（ｃ）に示すように第１気筒群がリーンにされるとともに第２気筒群がリッチにされる。この状態にあって、トルク変動量ｄＴ１の算出が行われるとともに、図９（ｂ）に示すように算出完了フラグＦ１が「１」とされる。
【０１１７】
この算出完了フラグＦ１が「１」であって且つ確定フラグＦＬが初期値である「０」の場合、一回目の回復条件成立がなされている期間中に今度は図９（ｄ）に示すように第１気筒群がリッチにされるとともに第２気筒群がリーンにされる。この状態にあってトルク変動量ｄＴ２の算出が行われるとともに、図９（ｅ）に示すように算出完了フラグＦ２が「１」とされる。
【０１１８】
こうしてトルク変動量ｄＴ１，ｄＴ２の算出が完了し、算出完了フラグＦ１，Ｆ２が共に「１」とされると、「ｄＴ１＜ｄＴ２」か否かに基づき確定フラグＦＬの設定が行われる。即ち、「ｄＴ１＜ｄＴ２」であれば図９（ｆ）に実線で示すように確定フラグＦＬが「１」とされ、「ｄＴ１＜ｄＴ２」でなければ図９（ｆ）に二点鎖線で示すように確定フラグＦＬが「０」に維持される。
【０１１９】
確定フラグＦＬが「１」とされた場合には、第１気筒群をリーンにするとともに第２気筒群をリッチにするという空燃比の設定が、被毒回復のための空燃比制御における最もエンジン１１のトルク変動が小さくなる空燃比の設定として学習される。そして、確定フラグＦＬが「１」であることに基づき、一回目の被毒回復条件成立がなされている期間中において、図９（ｃ）に実線で示すように第１気筒群がリーンにされるとともに第２気筒群がリッチにされる。また、エンジン１１が停止されない限り、エンジン始動後における二回目以降の被毒回復条件成立の際にも、第１気筒群がリーンにされるとともに第２気筒群がリッチにされる。
【０１２０】
一方、確定フラグ確定フラグＦＬが「０」に維持された場合には、第１気筒群をリッチにするとともに第２気筒群をリーンにするという空燃比の設定が、被毒回復のための空燃比制御における最もエンジン１１のトルク変動が小さくなる空燃比の設定として学習される。そして、確定フラグＦＬが「０」であることに基づき、一回目の被毒回復条件成立がなされている期間中において、図９（ｄ）に二点鎖線で示すように第１気筒群がリッチで第２気筒群がリーンな状態が維持される。また、エンジン１１が停止されない限り、二回目以降の被毒回復条件成立の際にも、第１気筒群がリッチにされるとともに第２気筒群がリーンにされる。
【０１２１】
上記のようにエンジン始動後の一回目の被毒回復条件の成立期間中において、被毒回復のための空燃比制御の際における各気筒群毎の空燃比の設定が学習されるため、同学習をエンジン始動後の早期に完了することができる。そして、エンジン始動後の早期に最もトルク変動が小さくなる空燃比の設定にて被毒回復のための空燃比制御を行うことができる。
【０１２２】
次に、本実施形態における被毒回復の処理手順について図１０を参照して説明する。この図１０は、本実施形態の硫黄被毒回復処理ルーチンを示すフローチャートである。同ルーチンは、ＥＣＵ９２を通じて図３のメインルーチンにおけるステップＳ２０２に進む毎に実行される。
【０１２３】
同ルーチンにおいて、ステップＳ５０１、ステップＳ５０３〜Ｓ５０８、及びステップＳ５０９〜Ｓ５１１の処理は、第１実施形態の硫黄被毒回復処理ルーチンにおけるステップＳ３０１、ステップＳ３０４〜Ｓ３０９、及びステップＳ３１０〜Ｓ３１２の処理に相当するものである。また、本実施形態における硫黄被毒回復処理ルーチンにおいては、第１実施形態の硫黄被毒回復処理ルーチンにおけるステップＳ３１３〜Ｓ３１６に相当する処理が省略されている。
【０１２４】
ＥＣＵ９２は、ステップＳ５０１の処理として、触媒３３ｂにおける硫黄被毒の回復条件が成立しているか否を判断する。そして、回復条件不成立ならばこの硫黄被毒回復処理ルーチンを一旦終了し、回復条件成立ならばステップＳ５０２に進む。
【０１２５】
ＥＣＵ９２は、ステップＳ５０２の処理として、確定フラグＦＬが「０」であって且つ算出完了フラグＦ１が「０」であるか否かを判断する。エンジン始動後において一回目の回復条件成立がなされてステップＳ５０２に進んだ場合には、確定フラグＦＬ及び算出完了フラグＦ１が共に初期値である「０」となっているため、上記ステップＳ５０２の処理でＮＯと判断されてステップＳ５０９に進む。
【０１２６】
ＥＣＵ９２は、ステップＳ５０９の処理として、燃料噴射弁４０を駆動制御して第１気筒群をリーンにするとともに第２気筒群をリッチにする。続いてＥＣＵ９２は、ステップＳ５１０の処理で第１気筒群のトルク変動量ｄＴ１を算出し、ステップＳ５１１の処理で算出完了フラグＦ１を「１」とした後、この硫黄被毒回復処理ルーチンを一旦終了する。
【０１２７】
このように算出完了フラグＦ１が「１」とされると、一回目の被毒回復条件の成立期間中にあって次回に上記ステップＳ５０２の処理が行われたとき、確定フラグＦＬが「０」であって且つ算出完了フラグＦ１が「１」である旨判断され、ステップＳ５０３に進むようになる。ＥＣＵ９２は、ステップＳ５０３の処理として、燃料噴射弁４０を駆動制御して第１気筒群をリッチにするとともに第２気筒群をリーンにする。
【０１２８】
ＥＣＵ９２は、続くステップＳ５０４の処理として、第２気筒群のトルク変動量ｄＴ２を算出した後、ステップＳ５０５に進む。このように一回目の被毒条件の成立期間中に被毒回復のための空燃比制御における空燃比の設定が変更され、各々の空燃比の設定にて同空燃比制御を行ったときのトルク変動量ｄＴ１，ｄＴ２が算出される。こうしてトルク変動量ｄＴ１，ｄＴ２が算出された後、ＥＣＵ９２は、ステップＳ５０５の処理として、算出完了フラグＦ２が「０」であるか否かを判断する。
【０１２９】
エンジン始動後において初めてステップＳ５０５に進んだときには、算出完了フラグＦ２が初期値である「０」のままなのでステップＳ５０５の処理でＹＥＳと判断され、ステップＳ５０６に進む。ＥＣＵ９２は、ステップＳ５０６の処理として、算出完了フラグＦ２を「１」とした後、ステップ５０７に進む。
【０１３０】
ＥＣＵ９２は、ステップＳ５０７の処理として、トルク変動量ｄＴ１がトルク変動量ｄＴ２未満か否かを判断する。そして、「ｄＴ１＜ｄＴ２」であればステップＳ５０８の処理として確定フラグＦＬを「１」とした後、この硫黄被毒回復処理ルーチンを一旦終了する。また、「ｄＴ１＜ｄＴ２」でなければこの硫黄被毒回復処理ルーチンを一旦終了し、確定フラグＦＬを初期値である「０」に維持する。
【０１３１】
上記確定フラグＦＬに基づき以後の被毒回復のための空燃比制御における空燃比の設定が決定される。即ち、確定フラグＦＬが「１」に決定されると、エンジン１１が停止されるまで、以後の被毒回復条件の成立時には上記ステップＳ５０２の処理でＮＯと判断され、ステップＳ５０９に進むようになる。そして、ステップＳ５０９の処理によって、第１気筒群がリーンにされるとともに第２気筒群がリッチにされ、こうした気筒群毎の空燃比制御によって触媒３３ｂの温度が上昇され、同触媒３３ｂからのＳＯｘ  の離脱が行われる。
【０１３２】
また、確定フラグＦＬが「０」に決定されると、エンジン１１が停止されるまで以後の被毒回復条件の成立時には上記ステップＳ５０２の処理でＹＥＳと判断され、ステップＳ５０３に進むようになる。そして、ステップＳ５０３の処理によって、第１気筒群がリッチにされるとともに第２気筒群がリーンにされ、こうした気筒群毎の空燃比制御によって触媒３３ｂの温度が上昇され、同触媒３３ｂからのＳＯｘ  の離脱が行われる。
【０１３３】
なお、エンジン１１の動作停止時には、算出完了フラグＦ１，Ｆ２、確定フラグ、ＦＬ、及びトルク変動量ｄＴ１，ｄＴ２が「０」にリセットされ、次回のエンジン始動後においては上述した各フラグの設定処理、及びトルク変動量ｄＴ１，ｄＴ２の算出処理が最初から行われることとなる。
【０１３４】
以上詳述した処理が行われる本実施形態によれば、第１実施形態に記載した（１）の効果に加え、以下に示す効果が得られるようになる。
（４）エンジン始動後の一回目の被毒回復条件の成立期間中に、被毒回復のための空燃比制御における各気筒毎の空燃比の設定を変更したため、最もトルク変動量の小さい空燃比の設定の学習をエンジン始動後の早期に完了することができる。従って、エンジン始動後の早期に、最もトルク変動量が小さくなる空燃比の設定で被毒回復のための空燃比制御を実行することができる。
【０１３５】
なお、本実施形態は、例えば以下のように変更することもできる。
・第３実施形態では、エンジン始動後における一回目の被毒回復条件の成立期間中に、トルク変動量ｄＴ１，ｄＴ２をそれぞれ一回算出した状態で、「ｄＴ１＜ｄＴ２」か否かに基づき確定フラグＦＬを設定したが、本発明はこれに限定されない。即ち、上記一回目の被毒回復条件成立期間中に、まず複数回トルク変動量ｄＴ１を算出した後、気筒群毎の空燃比の設定を変更してトルク変動量ｄＴ２を複数回算出し、この状態で「ｄＴ１＜ｄＴ２」か否かに基づき確定フラグＦＬを設定してもよい。この場合、確定フラグＦＬの設定に用いられるトルク変動量ｄＴ１，ｄＴ２は、それぞれ複数回だけトルク変動量ｄＴ１，ｄＴ２の算出が行われた後のものということになる。そして、空燃比の設定を所定期間だけ固定した後に算出されるトルク変動量ｄＴ１，ｄＴ２が確定フラグＦＬの設定に用いられるようになり、同設定を正確に行うことができるようになる。
【０１３６】
・第２実施形態において、エンジン１１の停止時に算出完了フラグＦ１，Ｆ２、一回目及び二回目完了フラグＦｆ１，Ｆｆ２、確定フラグＦＬ、並びにトルク変動量ｄＴ１，ｄＴ２をバックアップＲＡＭ９６に記憶したが、本発明はこれに限定されない。即ち、例えばエンジン１１の停止時に算出完了フラグＦ１、一回目完了フラグＦｆ１、及びトルク変動量ｄＴ１をバックアップＲＡＭ９６に記憶し、算出完了フラグＦ２、二回目完了フラグＦｆ２、確定フラグＦＬ、及びトルク変動量ｄＴ２をリセットするようにしてもよい。この場合、トルク変動量ｄＴ１が記憶された状態で、エンジン始動後における一回目の被毒回復条件の成立期間中にトルク変動量ｄＴ２の算出が行われ、それらトルク変動量ｄＴ１，ｄＴ２に基づき確定フラグＦＬの設定が行われる機会が多くなる。そのため、エンジン始動後における一回目の被毒回復条件が成立期間中に確定フラグＦＬの設定が完了し、最もトルク変動量の小さくなる被毒回復のための空燃比制御の際の空燃比の設定の学習がエンジン始動後の早期に完了する機会が多くなる。なお、上記のように各フラグ及びトルク変動量の記憶及びリセットを行う場合においても、被毒回復条件の成立回数が所定回数以上になったとき、すべてのフラグ及びトルク変動量を一度リセットすることが好ましい。
【０１３７】
・上記各実施形態において、エンジン始動後における初回の被毒回復条件成立の際に行われる気筒群毎の空燃比制御で、第１気筒群をリッチにするとともに第２気筒群をリーンにしてもよい。また、第１及び第２実施形態においては、各フラグ及びトルク変動量がリセットされる度に、同リセット後に最初にリーンにされる気筒群を入れ替えるようにしてもよい。
【０１３８】
・上記各実施形態では、ＳＯｘ  を触媒３３ｂから離脱させるために同触媒３３ｂの温度を上昇させ、その温度上昇のために一部の気筒をリーンにするとともに他の気筒をリッチにしたが、本発明はこれに限定されない。即ち、触媒３３ａ，３３ｂの暖機のために上記のように気筒毎の空燃比制御を行い、この空燃比制御の際に本発明を適用してもよい。この場合、最もトルク変動の小さくなる気筒毎の空燃比の設定として学習された空燃比の設定にて、上記気筒毎の空燃比制御を実行して触媒３３ａ，３３ｂの暖機を行ってドライバビリティの悪化を抑制することとなる。
【０１３９】
・上記のように触媒３３ａ，３３ｂの暖機のために各気筒毎の空燃比制御を実行する場合、最もトルク変動量の小さくなる各気筒群毎の空燃比の設定を学習する際、その学習のための気筒群毎の空燃比制御の実行期間を被毒回復条件の成立時のみに限定する必要はない。なお、上記学習のための気筒群毎の空燃比制御の実行期間を被毒回復条件の成立時のみに限定すれば、上記学習のための空燃比制御の際に効率的に触媒３３ｂからＳＯｘ  が離脱されるため、ＳＯｘ  の離脱にとって非効率的な気筒群毎の空燃比制御が実行されるのを防止でき、上記学習のための不必要な空燃比制御が実行されることはなくなる。
【０１４０】
・上記各実施形態では、直列４気筒のエンジン１１の本発明を適用したが、これに直列６気筒、Ｖ型６気筒、及びＶ型８気筒など、他の形式のエンジンに本発明を適用してもよい。この場合、気筒群を二つに分ける代わりに、三つ或いは四つに分けることも可能である。
【０１４１】
・上記各実施形態では、燃焼室１６に直接燃料を噴射供給する直噴式のエンジン１１に本発明を適用したが、吸気ポート１７に燃料を噴射供給するタイプのエンジンに本発明を適用してもよい。
【図面の簡単な説明】
【図１】第１実施形態の排気浄化装置が適用されたエンジン全体を示す断面図。
【図２】同排気浄化装置の電気的構成を示すブロック図。
【図３】第１実施形態における被毒回復処理を実行するためのメインルーチンを示すフローチャート。
【図４】第１実施形態における被毒回復処理の手順を示すフローチャート。
【図５】同被毒回復処理が行われる際の回復条件成立態様、各フラグ、及び気筒群毎の空燃比の設定の推移を示すタイムチャート。
【図６】ＳＯｘ  被毒量の算出手順を示すタイムチャート。
【図７】第２実施形態における被毒回復処理を実行するためのメインルーチンを示すフローチャート。
【図８】同被毒回復処理が行われる際の回復条件成立態様、各フラグ、及び気筒群毎の空燃比の設定の推移を示すタイムチャート。
【図９】第３実施形態における被毒回復処理が行われる際の回復条件成立態様、各フラグ、及び気筒群毎の空燃比の設定の推移を示すタイムチャート。
【図１０】第３実施形態における被毒回復処理の手順を示すフローチャート。
【符号の説明】
１１…エンジン、１４ｃ…クランクポジションセンサ、２１ｂ…カムポジションセンサ、３３…排気通路、３３ａ，３３ｂ…排気浄化触媒、３４…空燃比センサ、３６…バキュームセンサ、４０…燃料噴射弁、９２…電子制御ユニット（ＥＣＵ）。
【図１】
0003551083.tif 000002
【図２】
0003551083.tif 000003
【図３】
0003551083.tif 000004
【図４】
0003551083.tif 000005
【図５】
0003551083.tif 000006
【図６】
0003551083.tif 000007
【図７】
0003551083.tif 000008
【図８】
0003551083.tif 000009
【図９】
0003551083.tif 000010
【図１０】
0003551083.tif 000011