以下、図面を参照しながら、本発明の好ましい実施形態を詳細に説明する。図1は、本発明の一実施形態による制御装置1およびこれを適用した内燃機関(以下「エンジン」という)3の概略構成を示している。同図に示すように、制御装置1はECU2を備えており、このECU2は、後述するように、内燃機関3の燃料噴射制御処理などを行う。
エンジン3は、図示しない車両に搭載された直列4気筒(1つのみ図示)タイプのガソリンエンジンであり、各気筒10のピストン3aとシリンダヘッド3bとの間に燃焼室3cが形成されている。ピストン3aの上面の中央部には、凹部3dが形成されている。また、シリンダヘッド3bには、燃焼室3cに臨むように燃料噴射弁(以下「インジェクタ」という)4および点火プラグ5が取り付けられており、燃料が燃焼室3c内に直接噴射される。すなわちこのエンジン3は、筒内噴射式のものである。
インジェクタ4は、燃焼室3cの天壁中央部に配置されており、燃料パイプ4bを介して高圧ポンプ4aに接続されている。燃料は、図示しない燃料タンクから高圧ポンプ4aで昇圧された後、レギュレータ(図示せず)で調圧された状態でインジェクタ4に供給されるとともに、このインジェクタ4を介して、ピストン3aの凹部3dに向かって噴射される。これにより、燃料は、凹部3dを含むピストン3aの上面に衝突して燃料噴流を形成する。特に、後述する成層燃焼のときには、噴射された燃料の大部分が、凹部3dに衝突して燃料噴流を形成する。また、インジェクタ4は、ECU2に電気的に接続されており、後述するように、ECU2からの駆動信号により、その開弁時間である燃料噴射時間および燃料噴射タイミング(開弁タイミングおよび閉弁タイミング)が制御される。なお、このインジェクタ4の燃料噴射時間は、気筒10内に噴射される燃料量、すなわち燃料噴射量に相当するものであり、以下の説明では、インジェクタ4の燃料噴射時間を燃料噴射量という。
また、燃料パイプ4bのインジェクタ4の付近には、燃料圧センサ20が取り付けられている。この燃料圧センサ20は、インジェクタ4が噴射する燃料の燃料圧PFを検出して、その検出信号をECU2に出力する。また、ECU2には、燃料温センサ21が電気的に接続されており、この燃料温センサ21は、燃料温TFを検出して、その検出信号をECU2に出力する。
さらに、上記点火プラグ5もECU2に電気的に接続されており、ECU2により、点火時期に応じたタイミングで高電圧が加えられることによって放電し、それにより、燃焼室3c内の混合気が燃焼する。
また、エンジン3は、DOHC型のものであり、吸気カムシャフト6および排気カムシャフト7を備えている。これらの吸気および排気カムシャフト6、7はそれぞれ、吸気弁8および排気弁9を開閉駆動する吸気カム6aおよび排気カム7aを有している。吸気および排気カムシャフト6、7は、図示しないタイミングベルトを介してクランクシャフト3eに連結されており、クランクシャフト3eの回転に従い、これが2回転するごとに1回転する。
クランクシャフト3eには、マグネットロータ22aが取り付けられている。このマグネットロータ22aは、MREピックアップ22bとともに、クランク角センサ22(運転状態検出手段、回転数検出手段)を構成している。クランク角センサ22は、クランクシャフト3eの回転に伴い、いずれもパルス信号であるCRK信号およびTDC信号をECU2に出力する。CRK信号は、所定のクランク角(例えば30゜)ごとに1パルスが出力される。ECU2は、このCRK信号に基づき、エンジン3の回転数(以下「エンジン回転数」という)NEを算出する。一方、TDC信号は、各気筒10のピストン3aが吸気行程開始時のTDC(上死点)付近の所定クランク角度位置にあることを表す信号であり、4気筒タイプの本例では、クランク角180゜ごとに1パルスが出力される。
また、エンジン3の本体には、水温センサ23が取り付けられている。水温センサ23は、サーミスタで構成されており、エンジン3の本体内を循環する冷却水の温度であるエンジン水温TWを検出して、その検出信号をECU2に出力する。
また、エンジン3の吸気管12には、上流側から順に、エアフローセンサ24、スロットル弁機構13、スロットル弁開度センサ25および吸気管内絶対圧センサ26などが設けられている。
エアフローセンサ24(吸入空気量検出手段)は、熱線式エアフローメータで構成されており、後述するスロットル弁13aを通過する吸入空気量(以下「TH通過吸入空気量」という)GTHを表す検出信号をECU2に出力する。
また、スロットル弁機構13は、スロットル弁13aおよびこれを開閉駆動するアクチュエータ13bなどを有している。スロットル弁13aは、吸気管12の途中に回動自在に設けられており、その回動に伴う開度変化によって、TH通過吸入空気量GTHが変化する。アクチュエータ13bは、モータおよびギヤ機構(いずれも図示せず)を組み合わせて構成されており、ECU2からの制御信号でモータが駆動されることにより、スロットル弁13aの開度(以下「スロットル弁開度」という)THが変化する。
さらに、スロットル弁開度センサ25(運転状態検出手段)は、例えばポテンショメータなどで構成され、スロットル弁開度THを検出し、その検出信号をECU2に出力する。また、吸気管内絶対圧センサ26(運転状態検出手段)は、半導体圧力センサなどで構成されており、吸気管12内の絶対圧である吸気管内絶対圧PBAを検出し、その検出信号をECU2に出力する。吸気管12には、吸気温センサ27が設けられている。この吸気温センサ27は、サーミスタで構成されており、吸気管12内の吸気温TAを検出し、その検出信号をECU2に出力する。
また、吸気管12のスロットル弁機構13よりも下流側と、排気管14の触媒装置17よりも上流側との間には、EGR管15が接続されている。このEGR管15は、エンジン3の排気ガスを吸気側に再循環することにより、前記燃焼室3c内の燃焼温度を下げ、これにより、排気ガス中のNOxを低減させるEGR動作を実行するためのものである。このEGR管15には、EGR制御弁16が取り付けられている。EGR制御弁16は、リニア電磁弁であり、ECU2からの駆動信号に応じて、そのバルブリフト量がリニアに変化し、これによってEGR管15を開閉する。ECU2は、エンジン3の運転状態に応じてEGR制御弁16のバルブリフト量を制御することにより、EGR量を制御する。
また、排気管14には、触媒装置17が設けられている。この触媒装置17は、3元触媒とNOx吸着触媒を組み合わせたものである。このNOx吸着触媒は、イリジウム触媒(イリジウムを担持した炭化ケイ素ウイスカ粉末とシリカの焼成体)をハニカム構造の基材の表面に被覆し、その上にペロブスカイト型複酸化物(LaCoO3粉末とシリカの焼成体)をさらに被覆したものである。触媒装置17は、3元触媒の酸化還元作用により、運転時の排気ガス中のCO、HCおよびNOxを浄化するとともに、NOx吸着触媒による吸着作用および還元作用により、後述する成層燃焼モードでの運転時およびリーンバーン運転時の排気ガス中のNOxを浄化する。
さらに、排気管14の触媒装置17よりも上流側および下流側にはそれぞれ、LAFセンサ28およびO2センサ(図示せず)が設けられている。LAFセンサ28は、ジルコニアおよび白金電極などで構成され、理論空燃比よりもリッチなリッチ領域から極リーン領域までの広範囲な空燃比の領域において、排気ガス中の酸素濃度をリニアに検出し、それを表す検出信号をECU2に出力する。ECU2は、このLAFセンサ28の検出信号に基づき、排気ガス中の空燃比を表す検出空燃比KACTを算出する。なお、この検出空燃比KACTは、具体的には当量比として算出される。一方、O2センサは、排気ガス中の酸素濃度を表す検出信号をECU2に出力する。
さらに、ECU2には、大気圧センサ29、アクセル開度センサ30および車速センサ31が電気的に接続されている。大気圧センサ29は、半導体圧力センサで構成されており、大気圧PAを検出し、その検出信号をECU2に出力する。また、アクセル開度センサ30は、図示しないアクセルペダルの操作量であるアクセル開度APを検出し、その検出信号をECU2に出力する。さらに、車速センサ31は、図示しない車両の速度(以下「車速」という)VPを検出し、検出信号をECU2に出力する。
ECU2は、本実施形態において、本発明の運転状態検出手段、要求トルク算出手段、燃焼モード決定手段、移行時用燃料噴射量算出手段、吸気行程用燃料噴射量算出手段、2回燃料噴射終了手段、および回転数検出手段を構成するものであり、CPU2a、RAM2bおよびROM2cなどからなるマイクロコンピュータで構成されている。ECU2は、前述した各種のセンサ20〜31の検出信号に応じ、ROM2cに記憶された制御プログラムなどに基づいて各種の演算処理を実行する。
具体的には、上記各種の検出信号からエンジン3の運転状態を判定し、その判定結果に基づいて、エンジン3の燃焼モードを、極低負荷運転時には成層燃焼モードに、極低負荷運転時以外の運転時には均一燃焼モードにそれぞれ切り換えるとともに、均一燃焼モードおよび成層燃焼モードの一方から他方への切換えの際の移行中の状態(以下「燃焼移行モード」という)では、原則として2回噴射燃焼モード(2回燃料噴射)を実行する。また、燃焼モードに従って、インジェクタ4の最終燃料噴射量TOUTおよび噴射タイミングを制御することにより、燃料噴射制御処理を実行するとともに、点火プラグ5の点火時期などを制御する。
上記の成層燃焼モードでは、燃料をインジェクタ4から圧縮行程中に燃焼室3c内に噴射し、噴射燃料の大部分を凹部3dに衝突させることにより燃料噴流が形成される。この燃料噴流と、吸気管12からの流入空気の流動とによって混合気が生成されるとともに、ピストン3aが圧縮行程の上死点に近い位置にあることで、混合気を点火プラグ5の付近に偏在させながら、成層燃焼が行われる。また、成層燃焼モードでの混合気の空燃比は、スロットル弁13aをほぼ全開状態に制御することにより、理論空燃比よりも極めて燃料リーンな空燃比(例えば27〜60)に制御される。
均一燃焼モードでは、燃料を吸気行程中に燃焼室3c内に噴射し、燃料噴流と空気の流動とによって生成した混合気を燃焼室3c内に均一に分散させながら、均一燃焼が行われる。また、均一燃焼モードでの空燃比は、成層燃焼モード中のときと比較して、スロットル弁13aを小さな開度に制御することにより吸入空気量を小さくすることで、成層燃焼モードよりもリッチな空燃比(例えば12〜22)に制御される。さらに、均一燃焼モードでのEGR制御弁16の目標バルブリフト量は、成層燃焼モードの場合よりも小さな値に設定される。
さらに、2回噴射燃焼モードでは、1燃焼サイクル内の吸気行程中および圧縮行程中に燃料をそれぞれ噴射し、成層燃焼モードよりもリッチな空燃比(例えば14.7〜27)で、燃焼が行われる。
なお、均一燃焼モードは、ストイキ燃焼モードとリーン燃焼モードに区分される。ストイキ燃焼モードでは、空燃比が理論空燃比またはこれよりもリッチ側に制御され、リーン燃焼モードでは、空燃比がストイキ燃焼モードの場合よりもリーン側に制御される。
次に、図2〜図15を参照しながら、ECU2により実行される空燃比フィードバック制御処理を含む燃料噴射制御処理について説明する。図2は、この制御処理のメインルーチンを示しており、本処理は、TDC信号の入力に同期して割り込み実行される。本処理ではまず、ステップ1(「S1」と図示。以下同じ)において、エンジン回転数NEおよびアクセル開度APに応じて、図14に示すマップを検索することにより、要求トルクPMCMDを算出する。このマップでは、要求トルクPMCMDは、エンジン回転数NEが高く、アクセル開度APが大きいほど、より大きな値に設定されている。これは、エンジン回転数NEが高く、アクセル開度APが大きいほど、エンジン負荷がより大きい状態になるので、それに対応するためである。なお、この要求トルクPMCMDは、混合気燃焼時の図示平均有効圧力である。
次いで、ステップ2に進み、成層燃焼許可フラグF_DISCOKの設定処理を実行する。この成層燃焼許可フラグF_DISCOKは、エンジン3が、成層燃焼モードおよび均一燃焼モードのいずれを実行すべき運転状態にあるかを表すものであり、要求トルクPMCMDとエンジン回転数NEに応じて、図15に示すマップを検索することにより設定される。具体的には、このマップにおいて、要求トルクPMCMDおよびエンジン回転数NEがともに低い成層燃焼域では、エンジン3が成層燃焼モードを実行すべき運転状態であるとして、成層燃焼許可フラグF_DISCOKが「1」に設定される。一方、要求トルクPMCMDおよびエンジン回転数NEが成層燃焼域よりも高い均一燃焼域、具体的にはリーン燃焼域およびストイキ燃焼域ではそれぞれ、エンジン3が均一燃焼モードのうちのリーン燃焼モードおよびストイキ燃焼モードを実行すべき運転状態であるとして、成層燃焼許可フラグF_DISCOKが「0」に設定される。なお、このマップにおけるストイキ燃焼域は、混合気を主として理論空燃比で燃焼させる領域に加えて、混合気を理論空燃比よりもリッチな空燃比で燃焼させるリッチ領域も含むように設定されている。
次いで、ステップ3に進み、後述の各種算出処理で用いる各種の補正係数を、例えばエンジン3の始動経過時間、車速VP、吸気温TA、大気圧PAまたはエンジン水温TWなどに応じて、それぞれ算出する。
次に、ステップ4で、吸気行程噴射用の目標空燃比KCMD1STおよび圧縮行程噴射用の目標空燃比KCMD2NDを算出する。燃焼モードが均一燃焼モードのときには、前者が用いられる一方、成層燃焼モードのときには、後者が用いられ、燃焼移行モードのときには、KCMD1STおよびKCMD2NDの一方が、適宜、用いられる。また、これらの目標空燃比KCMD1ST、KCMD2NDは、エンジン回転数NEおよび要求トルクPMCMDなどに応じて算出される。
次に、ステップ5に進み、空燃比フィードバック補正係数KAFを算出する。この空燃比フィードバック補正係数KAFは、燃焼モードに応じて算出されるものであり、具体的には、検出空燃比KACT、および吸気行程噴射用の目標空燃比KCMD1STまたは圧縮行程噴射用の目標空燃比KCMD2NDなどに応じて、所定のフィードバック制御アルゴリズムにより算出される。
次いで、ステップ6および7でそれぞれ、吸気行程噴射用の基本燃料噴射量TIM1STおよび圧縮行程噴射用の基本燃料噴射量TIM2NDを算出する。具体的には、吸気行程噴射用の基本燃料噴射量TIM1STの算出ではまず、実吸入空気量GCYL(気筒10内に実際に吸入されたと推定される空気量)を、TH通過吸入空気量GTHおよび吸気管内絶対圧PBAに応じて算出する。そして、この実吸入空気量GCYLに応じて、図示しない基本燃料噴射量のテーブルを検索することにより、そのテーブル値を算出し、これを補正することにより、吸気行程噴射用の基本燃料噴射量TIM1STを算出する。以上と同様に、圧縮行程噴射用の基本燃料噴射量TIM2NDも算出する。
次に、ステップ8に進み、要求燃料噴射量TCYLを算出する。このTCYLの算出ではまず、図3に示すように、ステップ11で、吸気行程噴射用の要求燃料噴射量TCYL1STT(吸気行程用燃料噴射量)を算出する。このTCYL1STTの算出ではまず、図4に示すように、図2のステップ3で算出した各種補正係数のうちの始動時補正係数KAST、減速時補正係数KDECおよび加速時補正係数KACCを乗算した値を、第1総補正係数KTOTALTMPとして設定する(ステップ21)。
始動時補正係数KASTは、エンジン3の始動時における燃料噴射量の増大補正を行うためのものであり、始動時からの経過時間に応じて、図示しないテーブルを検索することにより算出される。また、減速時補正係数KDECは、図示しない車両の減速時における燃料噴射量の減量補正を行うためのものであり、車速VPの前回値と今回値との偏差に応じて、図示しないテーブルを検索することにより算出される。さらに、加速時補正係数KACCは、車両の加速時における燃料噴射量の増量補正を行うためのものであり、車速VPの前回値と今回値との偏差に応じて、図示しないテーブルを検索することにより算出される。
次いで、ステップ22に進み、図2のステップ3で算出した各種補正係数のうちの吸気温補正係数KTA、大気圧補正係数KPAおよびエンジン水温補正係数KTWを乗算した値を、第2総補正係数KTATWPAとして設定する。これらの補正係数KTA、KPAおよびKTWはそれぞれ、吸気温TA、大気圧PAおよびエンジン水温TWに応じて、図示しないそれぞれのテーブルを検索することにより算出される。
次いで、ステップ23に進み、上記ステップ21および22でそれぞれ設定した第1総補正係数KTOTALTMPおよび第2総補正係数KTATWPAを乗算した値を、吸気行程噴射用の総補正係数KTTL1STとして設定する。そして、図2のステップ6で算出した吸気行程噴射用の基本燃料噴射量TIM1STに、図2のステップ5および4でそれぞれ算出した空燃比フィードバック補正係数KAFおよび吸気行程噴射用の目標空燃比KCMD1ST、ならびに上記ステップ23で設定した吸気行程噴射用の総補正係数KTTL1STを乗算することにより、気筒10ごとの吸気行程噴射用の要求燃料噴射量TCYL1STTを算出し(ステップ24)、本処理を終了する。
図3に戻り、ステップ12では、圧縮行程噴射用の要求燃料噴射量TCYL2NDTを算出する。このTCYL2NDTの算出ではまず、図5に示すように、図2のステップ3で算出した補正係数のうちの吸気温補正係数KTA、大気圧補正係数KPAおよびエンジン水温補正係数KTWを乗算した値を、圧縮行程噴射用の総補正係数KTTL2NDとして設定する(ステップ31)。そして、図2のステップ7で算出した圧縮行程噴射用の基本燃料噴射量TIM2NDに、図2のステップ5および4でそれぞれ算出した空燃比フィードバック補正係数KAFおよび圧縮行程噴射用の目標空燃比KCMD2ND、ならびに上記ステップ31で設定した圧縮行程噴射用の総補正係数KTTL2NDを乗算することにより、気筒10ごとの圧縮行程噴射用の要求燃料噴射量TCYL2NDTを算出し、本処理を終了する。
図3に戻り、ステップ13では、暫定要求燃料噴射量TCYLLMT(移行時用燃料噴射量)を算出する。図6および7は、暫定要求燃料噴射量TCYLLMTの算出処理を示している。本処理では、暫定要求燃料噴射量TCYLLMTは、均一燃焼モード中には吸気行程噴射用の要求燃料噴射量TCYL1STTに設定され、成層燃焼モード中には圧縮行程噴射用の要求燃料噴射量TCYL2NDTに設定されるのに対し、両燃焼モード間の切換えの際の燃焼移行モード中には、後述する第1〜第4のリミット値TCYLDS、TCYLDL、TCYLSD、TCYLLDのいずれかに設定される。
このように燃焼モードの切換え時に通常時とは異なる切換え時要求燃料量を用いるのは、次の理由による。すなわち、前述したように、成層燃焼モードと均一燃焼モードでは、設定される吸入空気量が大きく異なり、成層燃焼モードの方が大きいとともに、燃焼モードの切換えの際の燃焼移行モード中には、吸入空気量は、スロットル弁の動作に対して応答遅れを伴って変化する。一方、吸気・圧縮行程噴射用の要求燃料噴射量TCYL1STT、TCYL2NDTは、気筒10内に実際に吸入される吸入空気量に応じて設定される。このため、均一燃焼モードへの切換え時に、吸気行程噴射用の要求燃料噴射量TCYL1STTは、応答遅れを伴って減少する吸気空気量に応じて設定される結果、過大になりやすい。同じ理由から、成層燃焼モードへの切換え時には、圧縮行程噴射用の要求燃料噴射量TCYL2NDTが過小になりやすい。
上記の切換え時要求燃料量は、燃焼移行モード中に吸入空気量が安定するまでの間、このような要求燃料噴射量TCYL1STT/2NDTの過大化・過小化を防止すべく、これらを制限するために用いられる。このため、均一燃焼モードへの切換え時に適用される第1リミット値TCYLDSなどは、吸気行程噴射用の要求燃料噴射量TCYL1STTを上限側で制限するように設定される一方、成層燃焼モードへの切換え時に適用される第3リミット値TCYLSDなどは、圧縮行程噴射用の要求燃料噴射量TCYL2NDTを下限側で制限するように設定される。以下、このような第1リミット値TCYLDSなどの切換え時要求燃料量による制限を、「リミット処理」という。
まず、図6のステップ41では、暫定要求燃料噴射量TCYLLMTの算出に必要な各種のパラメータを算出する。図示はしないが、この算出処理では、まず、成層燃焼許可フラグF_DISCOKに応じ、均一燃焼モードのときには吸気行程噴射用の要求燃料噴射量TCYL1STTを、成層燃焼モードのときには圧縮行程噴射用の要求燃料噴射量TCYL2NDTを、それぞれ通常時要求燃料噴射量TCYLTとして設定する。また、燃焼モードの切換えの有無および切換えパターンを判別し、その判別結果に応じて、切換えステータスEMOD_STSを次のように設定する。
(a)成層燃焼モード→ストイキ燃焼モードの切換え時:「1」
(b)成層燃焼モード→リーン燃焼モードの切換え時 :「2」
(c)ストイキ燃焼モード→成層燃焼モードの切換え時:「3」
(d)リーン燃焼モード→成層燃焼モードの切換え時 :「4」
(e)(a)から(d)以外のとき :「0」
また、この処理では、燃焼移行モードが開始したときに、その直前に得られた暫定要求燃料噴射量TCYLLMTを切換え直前要求燃料噴射量TCYLMINIとして設定する。さらに、燃焼移行モード中、燃焼モードの切換え直前からの要求トルクPMCMDの変化量を求めるとともに、求めた変化量を燃料量に換算することによって、トルク変化補正項TCYLDPMを算出する。
前記ステップ41に続くステップ42では、要求トルクPMCMDが値0よりも大きいか否かを判別する。この答えがNOで、エンジン3にトルクが要求されていないときには、アップカウント式の切換え後経過時間タイマのタイマ値TTCYLMCを所定時間TTCYLREF(例えば5sec)にセットし(ステップ43)、暫定要求燃料噴射量TCYLLMTを通常時要求燃料噴射量TCYLTに設定する(ステップ44)。また、リミット実行フラグF_TCYLLMTを「0」にセットし(ステップ45)、リミット処理を禁止する。
一方、ステップ42の答えがYESで、PMCMD>0のときには、切換えステータスEMOD_STSが「0」であるか否かを判別する(ステップ46)。この答えがYESで、燃焼モードが切り換えられていないときには、前記ステップ43〜45を実行する。一方、ステップ46の答えがNOで、EMOD_STS≠0のときには、切換えステータスEMOD_STSが、その前回値EMOD_STSZと等しいか否かを判別する(ステップ47)。この答えがYESで、切換えステータスEMOD_STSが変化しておらず、今回のループが燃焼移行モードの開始直後でないときには、リミット実行フラグF_TCYLLMTが「1」であるか否かを判別する(ステップ49)。この答えがNOで、リミット処理を実行していないときには、前記ステップ43〜45を実行する。一方、ステップ49の答えがYESで、リミット処理を実行しているときには、ステップ50に進む。
一方、上記ステップ47の答えがNOで、EMOD_STS≠EMOD_STSZのとき、すなわち、今回のループが燃焼移行モードの開始直後であるときには、前記ステップ43でセットした切換え後経過時間タイマのタイマ値TTCYLMCを値0にリセットし(ステップ48)、ステップ50に進む。
このステップ50では、切換え後経過時間タイマのタイマ値TTCYLMCが、リミット時間TMTCYLMTよりも小さいか否かを判別する。なお、このリミット時間TMTCYLMTは、前記切換えステータスEMOD_STSの設定と同様の条件で設定されるものであり、前記(a)〜(e)の燃焼モードの切換えパターンごとに所定のリミット時間がセットされる。上記ステップ50の答えがYES、すなわち、燃焼移行モードの開始後、リミット時間TMTCYLMTが経過していないときには、切換えステータスEMOD_STSが「1」であるか否かを判別する(ステップ51)。この答えがYESで、切換えパターンが成層燃焼モード→ストイキ燃焼モードのときには、この切換えパターン用の第1リミット値TCYLDSを算出する(ステップ52)。次いで、算出した第1リミット値TCYLDSを暫定要求燃料噴射量TCYLLMTとして設定し(ステップ53)、リミット実行フラグF_TCYLLMTを第1リミット値算出フラグF_TCYLDSの値にセットする(ステップ54)。
一方、ステップ51の答えがNOのときには、上記ステップ51〜54と同様に、ステップ55〜65を実行する。まず、ステップ55および59では、切換えステータスEMOD_STSが「2」および「3」であるか否かをそれぞれ判別する。そして、ステップ55の答えがYES(EMOD_STS=2)で、切換えパターンが成層燃焼モード→リーン燃焼モードのときには、この切換えパターン用の第2リミット値TCYLDLを算出し(ステップ56)、この第2リミット値TCYLDLを暫定要求燃料噴射量TCYLLMTとして設定し(ステップ57)、リミット実行フラグF_TCYLLMTを第2リミット値算出フラグF_TCYLDLの値にセットする(ステップ58)。
また、上記ステップ59の答えがYES(EMOD_STS=3)で、切換えパターンがストイキ燃焼モード→成層燃焼モードのときには、この切換えパターン用の第3リミット値TCYLSDを算出し(ステップ60)、この第3リミット値TCYLSDを暫定要求燃料噴射量TCYLLMTとして設定し(ステップ61)、リミット実行フラグF_TCYLLMTを第3リミット値算出フラグF_TCYLSDの値にセットする(ステップ62)。さらに、上記ステップ59の答えがNO(EMOD_STS=4)で、切換えパターンがリーン燃焼モード→成層燃焼モードのときには、この切換えパターン用の第4リミット値TCYLLDを算出し(ステップ63)、この第4リミット値TCYLLDを暫定要求燃料噴射量TCYLLMTとして設定し(ステップ64)、リミット実行フラグF_TCYLLMTを第4リミット値算出フラグF_TCYLLDの値にセットする(ステップ65)。
一方、前記ステップ50の答えがNOで、TTCYLMC≧TMTCYLMTのとき、すなわち、燃焼移行モードの開始後、リミット時間TMTCYLMTが経過したときには、リミット処理の実行期間が終了したとして、前記ステップ44および45を実行し、リミット処理を終了する。
前記ステップ45、54、58、62または65に続くステップ66では、リミット実行フラグF_TCYLLMTが「1」であるか否かを判別する。この答えがYESで、リミット処理を実行しているときには、成層燃焼許可フラグF_DISCOKが「0」であるか否かを判別する(ステップ67)。この答えがYESで、成層燃焼の実行条件が成立していないときには、ダウンカウント式のディレイタイマのタイマ値TAFDTOSを所定の待機時間TMAFDTOS(例えば3sec)にセットし(ステップ68)、ステップ69に進む。一方、ステップ66の答えがNOで、F_TCYLLMT=0のとき、またはステップ67の答えがNOで、F_DISCOK=1のときには、ステップ68をスキップし、ステップ69に進む。
このステップ69では、上記ステップ68でセットしたディレイタイマのタイマ値TAFDTOSが値0であるか否かを判別する。この答えがNOのときには、成層燃焼モードを禁止するために、成層燃焼モードフラグF_TAFDTOS0を「0」にセットし(ステップ70)、本処理を終了する。一方、この答えがYESで、TAFDTOS=0のときには、成層燃焼モードフラグF_TAFDTOS0を「1」にセットし(ステップ71)、本処理を終了する。
上記ステップ66〜70から明らかなように、成層燃焼モードから均一燃焼モードへの切換え時にリミット処理が実行されている状態から、このリミット処理が終了した後、または成層燃焼の実行条件が成立した後、待機時間TMAFDTOSが経過するまでは、成層燃焼モードが禁止される。これにより、成層燃焼モードから均一燃焼モードへの切換え時に、成層燃焼の実行条件の成立あるいはリミット処理の終了に応じて、燃焼モードが成層燃焼モードにすぐに復帰するのを防止することができる。
また、燃焼モードの切換え時(前記ステップ46:NO)には、前記ステップ51〜65により、そのときの切換えパターンに応じて、第1〜第4リミット値TCYLDS、TCYLDL、TCYLSD、TCYLLDのいずれかが算出される。具体的には、これらの第1〜第4リミット値TCYLDS、TCYLDL、TCYLSD、TCYLLDの算出処理(ステップ52、56、60、63)は、燃焼移行モードの開始直前の要求燃料噴射量に相当する直前要求燃料噴射量TCYLMINIと、燃焼移行モード中における要求トルクPMCMDの変化量に応じたトルク変化補正項TCYLDPM、および燃焼移行モード中における燃焼効率を表す燃焼効率パラメータに応じて算出される。そして、算出されたリミット値によるリミット処理が実行され、燃焼移行モード中に、リミット時間TMTCYLMTが経過すると(前記ステップ50:NO)、前記ステップ44および45により、リミット処理が終了される。
図3に戻り、ステップ14では、膨張行程噴射用の要求燃料噴射量TCYL3RDを算出する。このTCYL3RDの算出処理では、1燃焼サイクル内の膨張行程中に噴射すべき要求燃料噴射量を算出する。このTCYL3RDを算出し、これに基づき膨張行程中に燃料を噴射するのは、以下の理由による。すなわち、前記触媒装置17の一部を構成するNOx吸着触媒では、排気ガス中のNOxとともに硫黄分も吸着される。硫黄分の残留量が多くなると、NOx吸着触媒の吸着および還元性能が低下してしまう。このため、膨張行程中に燃料を噴射することによって、NOx吸着触媒の温度を上昇させるともに、排気ガスをリッチな還元雰囲気にし、これにより、NOx吸着触媒に吸着されていた硫黄分を脱離し、外部に放出するためである。なお、膨張行程中に燃料を噴射すべき条件が成立したときには、膨張行程噴射フラグF_DIBCが「1」にセットされる。
次いで、ステップ15に進み、仮想目標空燃比KCMDIMGを算出する。図8に示すように、このKCMDIMGの算出処理では、図2のステップ4で算出した吸気行程噴射用の目標空燃比KCMD1ST、図3のステップ13で算出した暫定要求燃料噴射量TCYLLMT、および図3のステップ11で算出した吸気行程噴射用の要求燃料噴射量TCYL1STTを用いて、次の式(1)により算出し(ステップ81)、本処理を終了する。
KCMDIMG=KCMD1ST・TCYLLMT/TCYL1STT …(1)
この仮想目標空燃比KCMDIMGは、均一燃焼モードで用いられる吸気行程噴射用の目標空燃比KCMD1STに、TCYLLMT/TCYL1STTを乗算した値であり、後述する燃焼移行モードフラグF_DSCMODの設定処理で用いられるものである。
図3に戻り、ステップ16で、成層燃焼許可フラグF_DISCOKが「1」であるか否かを判別する。この答えがYESで、エンジン3が成層燃焼モードを実行すべき運転状態であるときには、要求燃料量TCYLを前記ステップ13で算出した暫定要求燃料噴射量TCYLLMTに設定し(ステップ17)、本処理を終了する。一方、上記ステップ16の答えがNOのときには、ステップ18に進み、膨張行程噴射フラグF_DIBCが「1」であるか否かを判別する。この答えがYESのときには、1燃焼サイクル内の膨張行程中に燃料を噴射すべき条件が成立しているとして、暫定要求燃料噴射量TCYLLMTに前記ステップ14で算出した膨張行程噴射用の要求燃料噴射量TCYL3RDを加算した値を、要求燃料量TCYLとして設定し(ステップ19)、本処理を終了する。一方、ステップ18の答えがNOのときには、上記ステップ17を実行して、本処理を終了する。
図2に戻り、ステップ9では、最終燃料噴射量TOUTを算出する。この最終燃料噴射量TOUTは、前記ステップ8で算出した要求燃料噴射量TCYLを、燃料圧PFおよび燃料温TFに応じて補正することにより算出される。
次いで、ステップ10に進み、上記ステップ9で算出した最終燃料噴射量TOUTに基づき、燃料噴射を実行して、本処理を終了する。図9は、この燃料噴射の実行処理を示している。同図に示すように、この燃料噴射ではまず、燃焼移行モードフラグF_DSCMODを設定する(ステップ91)。この設定処理では、図10に示すように、まずステップ101で、フューエルカット中フラグF_FCが「1」であるか否かを判別する。このF_FCは、エンジン3がフューエルカット運転中であるときに、「1」にセットされるフラグであり、ステップ101の答えがYESで、フューエルカット運転中であるときには、燃焼移行モード実行タイマのタイマ値TMDSCMODを値0にセットする(ステップ102)とともに、燃焼移行モード中でないことを表すために、燃焼移行モードフラグF_DSCMODを「0」にセットし(ステップ103)、本処理を終了する。
一方、ステップ101の答えがNOで、フューエルカット運転中でないときには、RAM2bに記憶されている燃焼移行モードフラグF_DSCMODが「1」であるか否かを判別する(ステップ104)。この答えがNOのときには、燃焼移行モード中でないとして、ステップ105に進み、成層燃焼許可フラグの今回値F_DISCOKが、その前回値F_DISCOKZと同じであるか否かを判別する。この答えがYESのときには、エンジン3が、燃焼モードを切り換えるべき運転状態でないとして、前記ステップ102、103を実行して、本処理を終了する。一方、ステップ105の答えがNOで、F_DISCOKZ≠F_DISCOKのときには、エンジン3が燃焼モードを切り換えるべき運転状態になったとして、ステップ106に進む。
このステップ106では、成層燃焼許可フラグF_DISCOKが「1」であるか否かを判別する。この答えがYESのとき、すなわち今回の燃焼モードの切換えパターンが、均一燃焼モード→成層燃焼モードのときには、図11のステップ107に進む。
このステップ107では、図2のステップ4で算出した吸気行程噴射用の目標空燃比KCMD1STが、所定値KCMDDSCMD(例えば0.85)以上であるか否かを判別する。この答えがNOで、KCMD1ST<KCMDDSCMDのときには、今回の燃焼モードの切換えパターンが、リーン燃焼モード→成層燃焼モードであるとして、ダウンカウント式の燃焼移行モード実行タイマのタイマ値TMDSCMODを第1タイマ値TMDSCMLDにセットし(ステップ108)、後述するステップ109に進む。一方、上記ステップ107の答えがYESで、KCMD1ST≧KCMDDSCMDのときには、今回の燃焼モードの切換えパターンが、ストイキ燃焼モード→成層燃焼モードであるとして、ステップ110に進む。
このステップ110では、エンジン状態判定値NKENGCMDが「1」であるか否かを判別する。このエンジン状態判定値NKENGCMDは、エンジン3が燃焼モードを切り換えるべき運転状態であるときに、その運転状態に応じてセットされるものであり、具体的には、エンジン3が、アイドル運転中のときには「1」に、高負荷の運転状態のときには「2」に、低負荷の運転状態のときには「3」にセットされる。
したがって、ステップ110の答えがYESで、NKENGCMD=1のときには、燃焼移行モード実行タイマのタイマ値TMDSCMODを第2タイマ値TMDSCMSDにセットし(ステップ111)、ステップ110の答えがNOで、NKENGCMD=2のときには(ステップ112:YES)、燃焼移行モード実行タイマのタイマ値TMDSCMODを第3タイマ値TMDSCMSD2にセットし(ステップ113)、ステップ112の答えがNOで、NKENGCMD=3のときには、燃焼移行モード実行タイマのタイマ値TMDSCMODを第4タイマ値TMDSCMSD3にセットする(ステップ114)。
前記ステップ108、111、113または114に続くステップ109では、今回の燃焼モードの切換えパターンが成層燃焼モード→均一燃焼モードでないとして、そのことを表すために、均一燃焼切換えフラグF_DSCMDSを「0」にセットする。
次いで、ステップ115に進み、燃焼移行モード実行タイマのタイマ値TMDSCMODが値0であるか否かを判別する。この答えがNOで、燃焼移行モード中であるときには、そのことを表すために、燃焼移行モードフラグF_DSCMODを「1」にセットし(ステップ116)、本処理を終了する。一方、ステップ115の答えがYESで、燃焼移行モード実行タイマのタイマ値TMDSCMODが値0であるときには、燃焼移行モード中でないとして、そのことを表すために、燃焼移行モードフラグF_DSCMODを「0」にセットし(ステップ117)、本処理を終了する。
前記ステップ106の答えがNOで、F_DISCOK=1のときには、今回の燃焼モードの切換えパターンが成層燃焼モード→均一燃焼モードであるとして、ダウンカウント式の燃焼移行モード継続タイマのタイマ値TMDSCMINを、所定時間TMDSCMDS1(例えば0.5sec)にセットする(ステップ118)。この所定時間TMDSCMDS1は、EGR制御弁16の応答性を表す値に応じて設定されており、例えば、EGR制御弁16の応答遅れを補償するために、EGR制御弁16を閉鎖する際に、その実際のバルブリフト量が100%から5%まで変化するのに要する閉鎖時間として設定される。
上記ステップ118に続くステップ119および120ではそれぞれ、今回の燃焼モードの切換えパターンが、成層燃焼モード→均一燃焼モードであること、および燃焼移行モード中であることを表すために、均一燃焼切換えフラグF_DSCMDSおよび燃焼移行モードフラグF_DSCMODをいずれも「1」にセットし、本処理を終了する。
上記ステップ120または前記ステップ116で、燃焼移行モードフラグF_DSCMODが「1」にセットされることにより、次回のループでは、前記ステップ104の答えがYESとなり、そのときには、ステップ121に進む。このステップ121では、上記ステップ119または前記ステップ109でセットされた均一燃焼切換えフラグF_DSCMDSが「1」であるか否かを判別する。この答えがYESで、今回の燃焼モードの切換えパターンが、成層燃焼モード→均一燃焼モードであるときには、ステップ123に進む。
このステップ123では、燃焼移行モード継続タイマのタイマ値TMDSCMINが値0であるか否かを判別する。この答えがNOのときには、均一燃焼モードへの切換え時の燃焼移行モードを継続すべきであるとして、そのまま本処理を終了する。一方、ステップ123の答えがYESで、TMDSCMIN=0のときには、燃焼移行モードにおける燃焼噴射、すなわち2回噴射燃焼モードによる燃料噴射が所定時間TMDSCMDS1、継続して実行されたときには、ステップ124に進み、図3のステップ15で算出した仮想目標空燃比KCMDIMGが、燃焼移行モード終了判定値KCMDDSC(例えば0.7(空燃比21相当値))よりも大きいか否かを判別する。
このステップ124の答えがNOで、KCMDIMG≦KCMDDSCのときには、燃焼移行モード中の空燃比が均一燃焼モードに適した値に対してリーン側の値を示しており、燃焼移行モードを継続すべきであるとして、そのまま本処理を終了する。一方、ステップ124の答えがYESで、KCMDIMG>KCMDDSCのときには、空燃比が均一燃焼モードの実行に適した値になり、燃焼移行モードを終了し、均一燃焼モードを実行すべきであるとして、前記ステップ102、103を実行し、本処理を終了する。
このような燃焼移行モードの終了判定を行うのは、以下の理由による。すなわち、前述したように、成層燃焼モードと均一燃焼モードでは、設定される吸入空気量が大きく異なり、成層燃焼モードの方が大きいとともに、燃焼モードの切換え時、吸入空気量は、スロットル弁13aの動作に対して応答遅れを伴って変化する。一方、仮想目標空燃比KCMDIMGは、前記式(1)で説明したように、均一燃焼モードで用いられる吸気行程噴射用の目標空燃比KCMD1STに、暫定要求燃料噴射量TCYLLMTと吸気行程噴射用の要求燃料噴射量TCYL1STTとの比を乗算した値である。
この暫定要求燃料噴射量TCYLLMTは、燃焼モードの切換えパターンが成層燃焼モード→ストイキ燃焼モードのときの燃焼移行モード中には、図6のステップ52で算出した第1リミット値TCYLDSに設定される一方、成層燃焼モード→リーン燃焼モードのときの燃焼移行モード中には、図6のステップ56で算出した第2リミット値TCYLDLに設定される。一方、吸気行程噴射用の要求燃料噴射量TCYL1STTは、前述したように、気筒10内に実際に吸入される吸入空気量に応じて設定されるため、均一燃焼モードへの切換え時の燃焼移行モードの開始直後には、値が暫定要求燃料噴射量TCYLLMTよりも大きく、吸入空気量の減少に伴って減少し、暫定要求燃料噴射量TCYLLMTに近づく。このように、吸気行程噴射用の要求燃料噴射量TCYL1STTが暫定要求燃料噴射量TCYLLMTに近づき、その結果、仮想目標空燃比KCMDIMGは、成層燃焼モードから均一燃焼モードへの切換え時の燃焼移行モード中の空燃比を良好に反映する。したがって、このような仮想目標空燃比KCMDIMGを用い、空燃比が成層燃焼モード時よりも、よりリッチで、均一燃焼モードの実行を開始してもよい程度、すなわち、トルク段差が発生せず、均一燃焼モードでの安定した燃焼を確保できるようになったことを、適切に判定することが可能となる。
前記ステップ121の答えがNOのとき、すなわち前記ステップ109でセットされた均一燃焼切換えフラグF_DSCMDSが「0」であるときには、今回の燃焼モードの切換えが、均一燃焼モードから成層燃焼モードへの切換えであるとして、ステップ122に進み、前記ステップ108、111、113または114でセットした燃焼移行モード実行タイマのタイマ値TMDSCMODが値0であるか否かを判別する。この答えがNOのときには、成層燃焼モードへの切換え時の燃焼移行モードを継続すべきであるとして、そのまま本処理を終了する。一方、ステップ122の答えがYESのときには、燃焼移行モードを終了し、成層燃焼モードへの切換えを完了すべきであるとして、前記ステップ102、103を実行し、本処理を終了する。
図9に戻り、ステップ92では、2回噴射フラグF_DBLINJを設定する。このF_DBLINJ設定処理では、図12に示すように、まずステップ131で、図9の前記ステップ91で設定した燃焼移行モードフラグF_DSCMODが「1」であるか否かを判別する。この答えがNOで、燃焼移行モード中でないとき、すなわち現在の燃焼モードが成層燃焼モードまたは均一燃焼モードであるときには、ステップ132に進み、成層燃焼許可フラグF_DISCOKが「1」であるか否かを判別する。この答えがYESで、現在の燃焼モードが成層燃焼モードであるときには、圧縮行程中にのみ燃料を噴射すべきであるとして、それを表すために、吸気行程噴射フラグF_DIHCを「0」にセットする(ステップ133)とともに、圧縮行程噴射フラグF_DISCを「1」にセットする(ステップ134)。次いで、ステップ135に進み、燃料を2回噴射すべきでないとして、それを表すために、2回噴射フラグF_DBLINJを「0」にセットし、本処理を終了する。
一方、上記ステップ132の答えがNOで、現在の燃焼モードが均一燃焼モードであるときには、吸気行程中にのみ燃料を噴射すべきであるとして、それを表すために、上記ステップ133、134とは逆に、吸気行程噴射フラグF_DIHCを「1」にセットする(ステップ136)とともに、圧縮行程噴射フラグF_DISCを「0」にセットし(ステップ137)、上記ステップ135を実行して、本処理を終了する。
前記ステップ131の答えがYESのとき、すなわち燃焼移行モード中であるときには、ステップ138に進み、図2のステップ9で算出した最終燃料噴射量TOUTと、2回噴射燃焼モードにおける2回燃料噴射時の圧縮行程噴射用の燃料量TIMDSCとの偏差(TOUT−TIMDSC)、すなわち2回燃料噴射時の吸気行程中に噴射すべき燃料量が、所定の噴射可能下限値TOUTDIMIN(例えば0.4msec)よりも小さいか否かを判別する。この噴射可能下限値TOUTDIMINは、インジェクタ4の噴射可能な最小燃料量を表している。また、2回燃料噴射時の圧縮行程噴射用の燃料量TIMDSCは、エンジン回転数NEに応じて、例えば図13に示すTIMDSCテーブルを検索することにより算出される。このTIMDSCテーブルでは、2回燃料噴射時の圧縮行程噴射用の燃料量TIMDSCは、エンジン回転数NEが高いほど、少なくなるように設定されている。これは、エンジン回転数NEが高いほど、筒内流動の関係上、混合気が燃焼しやすくなることで、圧縮行程での着火可能な最小燃料噴射量を少なくできるからである。なお、このTIMDSCテーブルでは、TIMDSCの値は、インジェクタ4の噴射可能下限値TOUTDIMIN以上に設定されている。
前記ステップ138の答えがNOで、TOUT−TIMDSC≧TOUTDIMINのときには、2回燃料噴射時の圧縮行程噴射用の燃料量TIMDSCに加えて、2回燃料噴射時の吸気行程中に噴射すべき燃料量(TOUT−TIMDSC)も、インジェクタ4から噴射可能であり、吸気行程中および圧縮行程中にそれぞれ燃料を噴射すべきであるとして、それを表すために、吸気行程噴射フラグF_DIHCおよび圧縮行程噴射フラグF_DISCをいずれも「1」にセットする(ステップ139、140)。そして、2回燃料噴射を実行すべきであることを表すために、2回噴射フラグF_DBLINJを「1」にセットし(ステップ141)、本処理を終了する。
一方、ステップ138の答えがYESのとき、すなわち2回燃料噴射時の吸気行程中に噴射すべき燃料量(TOUT−TIMDSC)が噴射可能下限値TOUTDIMINを下回り、その燃料量を噴射できないとき、つまり2回燃料噴射を実行することができないときには、ステップ142に進み、成層燃焼許可フラグF_DISCOKが「1」であるか否かを判別する。この答えがYESで、今回の燃焼モードの切換えが成層燃焼モードへの切換えであるとき、すなわち燃焼移行モードの開始前(燃焼モードの切換え前)の燃焼モードが均一燃焼モードであるときには、均一燃焼モードでの噴射タイミングと同様に、吸気行程中にのみ燃料を噴射すべきであるとして、それを表すために、吸気行程噴射フラグF_DIHCを「1」にセットする(ステップ143)とともに、圧縮行程噴射フラグF_DISCを「0」にセットする(ステップ144)。そして、今回のループでは2回燃料噴射を実行することができないとして、それを表すために、前記ステップ135を実行して、本処理を終了する。
一方、上記ステップ142の答えがNOのとき、すなわちF_DISCOK=0で、今回の燃焼モードの切換えが均一燃焼モードへの切換えであり、燃焼移行モードの開始前の燃焼モードが成層燃焼モードであるときには、成層燃焼モードでの噴射タイミングと同様に、圧縮行程中にのみ燃料を噴射すべきであるとして、それを表すために、吸気行程噴射フラグF_DIHCを「0」にセットする(ステップ145)とともに、圧縮行程噴射フラグF_DISCを「1」にセットし(ステップ146)、前記ステップ135を実行して、本処理を終了する。
以上のように、燃焼移行モード中に上記のような噴射タイミングで燃料噴射を実行するのは、以下の理由による。すなわち、均一燃焼モードと成層燃焼モードとの間の切換えの際の燃焼移行モード中に実行される2回燃料噴射では、燃焼が不安定になりやすく、そのため、燃焼の安定を確保するために、吸気行程中および圧縮行程中にそれぞれ噴射すべき燃料を、いずれも適正な量で噴射することが要求される。しかし、2回燃料噴射を実行する際の吸気行程中または圧縮行程中に噴射すべき燃料が、インジェクタ4の噴射可能な最小燃料量を下回っている場合、本来の適正な量からずれた燃料量で、2回燃料噴射を実行すると、燃焼が不安定になる。このような吸気行程中または圧縮行程中に噴射すべき燃料が、上記の最小燃料量を下回る状況は、特に、燃焼移行モードの開始直後に生じる傾向がある。したがって、上記のような状況が生じた場合に、2回燃料噴射を実行せずに、燃焼移行モードの開始直前、すなわち切換え前の燃焼モードの噴射タイミングで、最終燃料噴射量TOUTを噴射することにより、燃焼モードの切換えの際に安定した燃焼を確保することができる。
図9に戻り、ステップ92に続くステップ93では、ステップ92で設定した2回噴射フラグF_DBLINJが「1」であるか否かを判別する。この答えがYESで、2回燃料噴射を実行すべきであるときには、ステップ94に進み、2回噴射制御を実行して、本処理を終了する。前述したように、この2回噴射制御では、最終燃料噴射量TOUTを分割し、1燃焼サイクル内の吸気行程中に吸気行程噴射用の燃料量(TOUT−TIMDSC)を噴射するとともに、圧縮行程中に圧縮行程噴射用の燃料量TIMDSCを噴射する。
一方、ステップ93の答えがNOのときには、ステップ95に進み、吸気行程噴射フラグF_DIHCが「1」であるか否かを判別する。この答えがYESで、吸気行程中に燃料を噴射すべきであるときには、ステップ96に進み、吸気行程噴射制御を実行し、本処理を終了する。前述したように、この吸気行程噴射制御では、1燃焼サイクル内の吸気行程中にのみ、最終燃料噴射量TOUTを噴射する。なお、図示しないが、前述した膨張行程噴射フラグF_DIBCが「1」であるときには、吸気行程噴射制御において、最終燃料噴射量TOUTから膨張行程中に噴射すべき燃料量TOUTBを差し引いた燃料量を吸気行程中に噴射するとともに、燃料量TOUTBを膨張行程中に噴射する。
上記ステップ95の答えがNOのときには、ステップ97に進み、圧縮行程噴射フラグF_DISCが「1」であるか否かを判別する。この答えがYESで、圧縮行程中に燃料を噴射すべきであるときには、ステップ98に進み、圧縮行程噴射制御を実行し、本処理を終了する。前述したように、この圧縮行程噴射制御では、1燃焼サイクル内の圧縮行程中にのみ、最終燃料噴射量TOUTを噴射する。一方、ステップ97の答えがNOのとき、すなわちステップ93、95および97がいずれもNOで、2回噴射フラグF_DBLINJ、吸気行程噴射フラグF_DIHC、および圧縮行程噴射フラグF_DISCがいずれも「0」のときには、フューエルカット運転をすべきであるとして、燃料噴射を実行することなく、そのまま本処理を終了する。
以上詳述したように、本実施形態によれば、成層燃焼モードから均一燃焼モードへの切換え時における燃焼移行モード中において、暫定要求燃料噴射量TCYLLMTと、吸気行程噴射用の要求燃料噴射量TCYL1STTとの比に基づき、燃焼移行モード中の空燃比を良好に反映した仮想目標空燃比KCMDIMGを算出し、これを用いて、燃焼移行モードの終了タイミングを適切に判定できるので、必要以上に2回燃料噴射を実行することがなくなり、したがって、良好な運転性を確保しながら、NOxの排出を最小限に抑制することができる。また、均一燃焼モードへの切換え時の燃焼移行モード中には、2回噴射燃焼モードを少なくとも所定時間TMDSCMDS1継続させるので、2回燃料噴射の実行による効果、すなわち安定した燃焼およびトルク段差の抑制を確保することができる。
また、本実施形態によれば、インジェクタ4の構造上、燃焼移行モード中に2回燃料噴射を実行することができない場合には、2回燃料噴射を実行せずに、切換え前の燃焼モードの噴射タイミングで、最終燃料噴射量TOUTを噴射するので、燃焼移行モード中の安定した燃焼を確保することができる。
なお、本発明は、説明した上記実施形態に限定されることなく、種々の態様で実施することができる。実施形態では、燃焼移行モードの終了タイミングを判定するために、暫定要求燃料噴射量TCYLLMTと、吸気行程噴射用の要求燃料噴射量TCYL1STTとの比に基づいて算出した仮想目標空燃比KCMDIMGと、燃焼移行モード終了判定値KCMDDSCとを比較したが、判定値として、燃焼移行モード射終了判定値KCMDDSCを吸気行程噴射用の目標空燃比KCMD1STで除算した値(KCMDDSC/KCMD1ST)を採用し、この判定値と、TCYLLMT/TCYL1STTとを比較し、
TCYLLMT/TCYL1STT>KCMDDSCMD/KCMD1ST
のときに、燃焼移行モードを終了させるようにしてもよい。また、暫定要求燃料噴射量TCYLLMTと、吸気行程噴射用の要求燃料噴射量TCYL1STTとの比に代えて、両者の偏差(TCYLLMT−TCYL1STT)などに基づいて算出した値を用い、それを適当な判定値と比較することによって、燃焼移行モードを終了させるようにしてもよい。
また、実施形態では、2回噴射燃焼モード中の燃料噴射、すなわち2回燃料噴射の実行の可否を、吸気行程中に噴射すべき燃料量(TOUT−TIMDSC)とインジェクタ4の噴射可能下限値TOUTDIMINとの比較結果に基づいて判定したが(ステップ138)、例えば、圧縮行程噴射用の燃料量TIMDSCが噴射可能下限値TOUTDIMINを下回ることがある場合には、両者の比較結果に基づいて、2回燃料噴射の実行の可否を判定してもよい。また、噴射可能下限値TOUTDIMINに代えて、これよりも大きな適当な値を採用することも可能である。その他、本発明の趣旨の範囲内で、細部の構成を適宜、変更することが可能である。