以下、図面を参照しながら、本発明の一実施形態に係る内燃機関の制御装置について説明する。図1に示すように、制御装置1はECU2を備えており、このECU2は、後述するように、内燃機関(以下「エンジン」という)3のアイドル回転数のフィードバック制御処理および燃料噴射制御処理などを行う。
エンジン3は、図示しない車両に搭載された直列4気筒(1つのみ図示)タイプのガソリンエンジンであり、各気筒のピストン3aとシリンダヘッド3bとの間に燃焼室3cが形成されている。ピストン3aの上面の中央部には、凹部3dが形成されている。また、シリンダヘッド3bには、燃焼室3cに臨むように燃料噴射弁(以下「インジェクタ」という)4および点火プラグ5が取り付けられており、燃料は燃焼室3c内に直接噴射される。すなわちエンジン3は、筒内噴射式のものである。
インジェクタ4は、燃焼室3cの天壁中央部に配置されており、燃料パイプ4bを介して高圧ポンプ4aに接続されている。燃料は、図示しない燃料タンクからこの高圧ポンプ4aで高圧に昇圧された後、レギュレータ(図示せず)により調圧された状態でインジェクタ4に供給されるとともに、インジェクタ4を介して、ピストン3aの凹部3d側に向かって噴射される。これにより、燃料は、凹部3dを含むピストン3aの上面に衝突して燃料噴流を形成する。特に、後述する成層燃焼のときには、インジェクタ4が噴射した燃料の大部分は、凹部3dに衝突して燃料噴流を形成する。
一方、燃料パイプ4bのインジェクタ4付近の部分には、燃料圧センサ20が取り付けられている。この燃料圧センサ20は、インジェクタ4が噴射する燃料の燃料圧PFを検出して、その検出信号をECU2に出力する。さらに、ECU2には、燃料温センサ21が接続されており、この燃料温センサ21は、燃料温TFを検出して、その検出信号をECU2に出力する。また、インジェクタ4は、ECU2に接続されており、ECU2からの駆動信号により、その開弁時間である燃料噴射時間および燃料噴射時期(開弁タイミングおよび閉弁タイミング)が制御される。なお、このインジェクタ4の燃料噴射時間は、気筒内に噴射される燃料量すなわち燃料噴射量に相当するので、以下、インジェクタ4の燃料噴射時間を燃料噴射量という。
また、上記点火プラグ5もECU2に接続されており、ECU2から点火時期に応じたタイミングで高電圧が加えられることにより放電し、それにより燃焼室3c内の混合気を燃焼させる。
さらに、エンジン3は、DOHC型のものであり、吸気カムシャフト6および排気カムシャフト7を備えている。これらの吸気および排気カムシャフト6,7はそれぞれ、吸気弁8および排気弁9を開閉駆動する吸気カム6aおよび排気カム7aを有している。吸気および排気カムシャフト6,7は、図示しないタイミングベルトを介してクランクシャフト3eに連結されており、クランクシャフト3eの回転に従って、これが2回転するごとに1回転する。この吸気カムシャフト6の一端部には、カム位相可変機構(以下「VTC」という)10が設けられている。
VTC10は、油圧を供給されることによって作動し、クランクシャフト3eに対する吸気カム6aの位相を無段階に進角または遅角させることにより、吸気弁8の開閉タイミングを早めまたは遅らせる。これにより、吸気弁8と排気弁9のバルブオーバーラップを長くまたは短くすることによって、内部EGR量を増加または減少させるとともに、充填効率を変化させる。また、このVTC10には、VTC電磁制御弁10aが接続されている。このVTC電磁制御弁10aは、ECU2からの駆動信号によって駆動され、その駆動信号のデューティ比に応じて、エンジン3の潤滑系の油圧ポンプ(図示せず)からの油圧をVTC10に供給する。これにより、VTC10は、吸気カム6aのカム位相を進角または遅角させる。
さらに、図示しないが、吸気カム6aおよび排気カム7aの各々は、低速カムと、低速カムよりも高いカムノーズを有する高速カムとで構成されている。また、エンジン3には、複数のバルブタイミング切換機構(以下「VTEC(登録商標)」という)11が設けられている。各VTEC11は、吸気カム6aおよび排気カム7aを低速カムと高速カムの間で切り換えることにより、吸気弁8および排気弁9のバルブタイミングを低速バルブタイミング(以下「LO.VT」という)と高速バルブタイミング(以下「HI.VT」という)との間で切り換える。この場合、HI.VTのときには、LO.VTと比較し、吸気弁8および排気弁9の開弁期間と、両者のバルブオーバーラップが長くなるとともに、バルブリフト量も大きくなることにより、充填効率が高められる。このVTEC11も、上記VTC10と同様に、ECU2によりVTEC電磁制御弁11aを介して油圧を供給されることによって作動し、上記切換動作を実行する。
一方、前記クランクシャフト3eには、マグネットロータ22aが取り付けられている。このマグネットロータ22aは、MREピックアップ22bとともに、クランク角センサ22を構成している。クランク角センサ22(運転状態検出手段)は、クランクシャフト3eの回転に伴い、いずれもパルス信号であるCRK信号およびTDC信号を出力する。
CRK信号は、所定のクランク角(例えば30゜)ごとに1パルスが出力される。ECU2は、このCRK信号に基づき、エンジン3の機関回転数(以下「エンジン回転数」という)NEを求める。TDC信号は、各気筒のピストン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に接続されたモータにギヤ機構(いずれも図示せず)を組み合わせたものであり、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は、NOx触媒と3元触媒を組み合わせたものであり、このNOx触媒は、図示しないが、イリジウム触媒(イリジウムを担持した炭化ケイ素ウイスカ粉末とシリカの焼成体)をハニカム構造の基材の表面に被覆し、その上にペロブスカイト型複酸化物(LaCoO3粉末とシリカの焼成体)をさらに被覆したものである。触媒装置17は、NOx触媒による還元作用により、後述する成層燃焼モードでの運転時およびリーンバーン運転時の排気ガス中のNOxを浄化するとともに、3元触媒の酸化還元作用により、リーンバーン運転以外の運転時の排気ガス中のCO、HCおよびNOxを浄化する。
さらに、排気管14の触媒装置17よりも上流側および下流側にはそれぞれ、LAFセンサ28および酸素濃度センサ(図示せず)が設けられている。LAFセンサ28は、ジルコニアおよび白金電極などで構成され、理論空燃比よりもリッチなリッチ領域から極リーン領域までの広範囲な空燃比A/Fの領域において、排気ガス中の酸素濃度をリニアに検出し、それを表す検出信号をECU2に出力する。ECU2は、このLAFセンサ28の検出信号に基づき、排気ガス中の空燃比を表す検出空燃比KACTを算出する。なお、この検出空燃比KACTは、具体的には当量比として算出される。また、O2センサは、排気ガス中の酸素濃度を表す検出信号をECU2に出力する。
さらに、ECU2には、大気圧センサ29、アクセル開度センサ30、シフト位置センサ31および車速センサ32が接続されている。この大気圧センサ29(運転状態検出手段)は、半導体圧力センサで構成されており、大気圧PAを検出して、その検出信号をECU2に出力する。また、アクセル開度センサ30(運転状態検出手段)は、図示しないアクセルペダルの操作量であるアクセル開度APを検出して、その検出信号をECU2に出力する。
一方、シフト位置センサ31および車速センサ32はそれぞれ、図示しない自動変速機(以下「AT」という)のシフト位置POSIおよび車速VPを検出して、その検出信号をECU2に出力する。
一方、ECU2は、CPU2a、RAM2bおよびROM2cなどからなるマイクロコンピュータで構成されている。ECU2は、前述した各種のセンサ20〜32の検出信号に応じ、ROM2cに記憶された制御プログラムなどに基づいて各種の演算処理を実行する。
具体的には、上記各種の検出信号からエンジン3の運転状態を判定し、その判別結果に基づいて、エンジン3の燃焼モード(燃焼形態)を、極低負荷運転時には成層燃焼モードに、極低負荷運転時以外の運転時には均一燃焼モードにそれぞれ切り換えるとともに、均一燃焼モードおよび成層燃焼モードの一方から他方に移行する燃焼移行モード中には、2回噴射燃焼モードを原則として実行する。また、燃焼モードに従って、インジェクタ4の最終燃料噴射量TOUTおよび燃料噴射時期を制御することにより、空燃比フィードバック制御処理を含む燃料噴射制御処理を実行するとともに、点火プラグ5の点火時期IGなどを制御する。
この成層燃焼モードでは、燃料をインジェクタ4から圧縮行程中に燃焼室3c内に噴射し、噴射燃料の大部分を凹部3dに衝突させることにより燃料噴流が形成される。この燃料噴流と、吸気管12からの流入空気の流動とによって混合気が生成されるとともに、ピストン3aが圧縮行程の上死点に近い位置にあることで、混合気を、点火プラグ5の付近に偏在させながら、理論空燃比よりも極リーンな空燃比A/F(例えば27〜60)で成層燃焼させる。また、成層燃焼モードでは、スロットル弁開度THは全開に近い状態に制御される。
また、均一燃焼モードでは、燃料を吸気行程中に燃焼室3c内に噴射し、燃料噴流と空気の流動とによって生成した混合気を燃焼室3c内に均一に分散させながら、成層燃焼モードよりもリッチな空燃比A/F(例えば12〜22)で、均一燃焼が行われる。
さらに、2回噴射燃焼モードでは、1燃焼サイクル中に燃料を間隔をあけて2回噴射し、成層燃焼モードよりもリッチな空燃比A/Fで、燃焼が行われる。この場合の2回の燃料噴射は、吸気行程中と圧縮行程中に実行される。
また、アイドル運転中のエンジン回転数NEすなわちアイドル回転数を、目標アイドル回転数NOBJに一致させるように、アイドル回転数のフィードバック制御を実行する。より具体的には、均一燃焼モード中のアイドル回転数のフィードバック制御では、後述するように、アクチュエータ13bに供給する駆動信号の値IFBN(以下「駆動信号値IFBN」という)を、PIDフィードバック制御することにより、スロットル弁開度THすなわち吸入空気量がフィードバック制御される。
一方、成層燃焼モード中のアイドル回転数のフィードバック制御では、燃料噴射量を制御入力としてアイドル回転数のフィードバック制御が実行される。これは、前述したように、成層燃焼モードでは、スロットル弁開度THが全開に近い状態に制御されることにより、吸入空気量制御による機関回転数制御ができないことによる。さらに、後述するように、アイドル運転中には、均一燃焼モード中のアイドル回転数のフィードバック制御において、所定の学習処理が完了するまでの間(後述する学習値IXREFが適切に算出されるまでの間)、成層燃焼モードが禁止され、それにより、成層燃焼モード中のアイドル回転数のフィードバック制御も禁止される。
なお、本実施形態では、ECU2により、運転状態検出手段、燃焼モード選択手段、吸入空気量制御手段、学習値算出手段、I項算出手段、判定手段および成層燃焼モード禁止手段が構成されている。
次に、図2および図3を参照しながら、均一燃焼モード中および成層燃焼モード中のアイドル回転数のフィードバック制御について説明する。本処理は、プログラムタイマの設定により、所定周期(例えば10msec)で割込み実行される。なお、以下の説明では、均一燃焼モード中のアイドル回転数のフィードバック制御を「均一アイドルF/B制御」といい、成層燃焼モード中のアイドル回転数のフィードバック制御を「成層アイドルF/B制御」という。
この処理では、まず、ステップ1(図では「S1」と略す。以下同様)で、成層燃焼許可フラグF_DISCOKが「1」であるか否かを判別する。この成層燃焼許可フラグF_DISCOKは、後述するように、成層燃焼モードを実行すべき運転状態のときには「1」に、均一燃焼モードを実行すべき運転状態のときには「0」にそれぞれ設定される。
この判別結果がNOで、均一燃焼モードを実行すべき運転状態のときには、ステップ2に進み、均一アイドルF/B制御許可フラグF_FBが「1」であるか否かを判別する。この均一アイドルF/B制御許可フラグF_FBは、図示しない設定処理において、所定の均一アイドルF/B制御の実行条件が成立しているときには「1」に、それ以外のときには「0」にそれぞれ設定される。
ステップ2の判別結果がNOのときには、そのまま本処理を終了する。一方、ステップ2の判別結果がYESで、均一アイドルF/B制御の実行条件が成立しているときには、ステップ3以降で、均一アイドルF/B制御処理を実行する。この均一アイドルF/B制御処理では、以下に述べるように、アクチュエータ13bへの駆動信号値IFBNがPIDフィードバック制御される。
すなわち、ステップ3で、均一アイドルF/B制御を行うために、P項ゲインKP、I項ゲインKIおよびD項ゲインKDをそれぞれ算出する。具体的には、P項ゲインKPおよびI項ゲインKIは、回転数偏差DNOBJに応じて、それぞれの図示しないテーブルを検索することにより算出される。この回転数偏差DNOBJは、エンジン回転数NEと目標アイドル回転数NOBJとの偏差を示している。また、この目標アイドル回転数NOBJは、エンジン水温TWに応じて、図示しないテーブルを検索することにより算出される。また、D項ゲインKDは、回転数偏差の今回値DNOBJと前回値DNOBJZとの偏差(DNOBJ−DNOBJZ)に応じて、図示しないテーブルを検索することにより算出される。
次いで、ステップ4で、加算項IUPを値0に設定した後、ステップ5に進み、始動モードフラグの前回値F_STMODZが「1」であるか否かを判別する。この前回値F_STMODZは、前回ループで設定された始動モードフラグF_STMODの値を表すものであり、始動モードフラグF_STMODは、エンジン3の始動を実行する始動モードのときには「1」に、それ以外のときには「0」にそれぞれ設定される。
このステップ5の判別結果がYESで、始動モードからの移行直後であるときには、ステップ13に進み、I項の前回値IAINZを所定値ICRSTに設定して、図3のステップ14に進む。
一方、ステップ5の判別結果がNOで、始動モードからの移行直後でないときには、ステップ6に進み、均一アイドルF/B制御許可フラグの前回値F_FBZが「1」であるか否かを判別する。この判別結果がNOのとき、すなわち前回のループにおいて、均一アイドルF/B制御の実行条件が成立しておらず、今回が始動モード以外から均一アイドルF/B制御に移行した最初のループであるときには、ステップ8に進み、回転数判定フラグの前回値F_NAZが「0」であるか否かを判別する。この回転数判定フラグF_NAは、上述した均一アイドルF/B制御許可フラグF_FBが設定される処理において、エンジン回転数NEが所定回転数NA以下であるときには「0」に、所定回転数NAより高いときには「1」にそれぞれ設定される。
ステップ8の判別結果がYESのとき、すなわち前回のループでエンジン回転数NEが所定回転数NA以下であって、アイドル運転領域のエンジン回転数NEであったときには、後述するステップ10に進む。一方、ステップ8の判別結果がNOのとき、すなわち前回のループでエンジン回転数NEが所定回転数NAより高く、アイドル運転領域でなかったときには、ステップ9に進み、加算項IUPを所定値IUP0に設定した後、ステップ10に進む。
一方、ステップ6の判別結果がYESのとき、すなわち今回のループが均一アイドルF/B制御へ移行した2回目以降であるときには、ステップ7に進み、ATのシフト位置POSIが変更されたか否かを判別する。この判別結果がYESで、ATのシフト位置POSIが変更されたときには、ステップ10に進む。
ステップ7〜9のいずれかに続くステップ10では、現在のATのシフト位置POSIがNレンジまたはPレンジであるか否かを判別する。この判別結果がYESのときには、ステップ11に進み、I項の前回値IAINZを、水温補正項ITW、ニュートラル用の学習値の前回値IXREF1Zおよび加算項IUPの和に設定した後、図3のステップ14に進む。
ここで、水温補正項ITWは、エンジン水温TWに応じて、図示しないテーブルを検索することにより算出される。なお、このテーブルとしては、高水温域用および低水温域用の2種類のものが設定されており、エンジン水温TWが高水温域にあるか否かに応じて、切り換えて用いられる。また、ニュートラル用の学習値IXREF1は、後述するステップ19で算出され、その前回値IXREF1Zは、前回のループで算出された値を示している。
一方、ステップ10の判別結果がNOで、ATのシフト位置POSIがNレンジおよびPレンジのいずれでもないとき、例えばDレンジであるときには、ステップ12に進み、I項の前回値IAINZを、水温補正項ITW、インギヤ用の学習値の前回値IXREF2Zおよび加算項IUPの和に設定した後、図3のステップ14に進む。
ここで、水温補正項ITWは、上記ステップ11と同様に求められる。また、インギヤ用の学習値IXREF2も、ニュートラル用の学習値IXREF1と同様に、後述するステップ19で算出される。なお、以下の説明では、ニュートラル用およびインギヤ用の学習値IXREF1,IXREF2を総称して、学習値IXREFという。
一方、ステップ7の判別結果がNOで、ATのシフト位置POSIが変更されなかったときは、ステップ10〜13をスキップして、図3のステップ14に進む。
前述したステップ7,11〜13のいずれかに続く図3のステップ14では、前記ステップ3で算出したP項ゲインKP、I項ゲインKIおよびD項ゲインKDを用いて、P項IP、I項IIおよびD項IDを、それぞれ次式により算出する。
IP=KP・(−DNOBJ)
II=KI・(−DNOBJ)
ID=KD・[−(DNOBJ−DNOBJZ)]
次に、ステップ15で、駆動信号値IFBNのI項IAINを、その前回値IAINZに上記I項IIを加算した値に設定し、次いで、ステップ16で、I項IAINのリミットチェック処理を実行する。このリミットチェック処理では、ステップ15で算出したI項IAINが所定の下限値以上でかつ所定の上限値以下の範囲内であれば、これがそのままI項IAINとして設定される。また、ステップ15で算出したI項IAINが所定の上限値よりも大きいときには、所定の上限値がI項IAINとして設定され、所定の下限値よりも小さいときには、所定の下限値がI項IAINとして設定される。
次いで、ステップ17で、リミットチェック処理したI項IAINに上記ステップ14で算出したP項IPおよびD項IDを加算した値を、駆動信号値IFBNとして設定する。その後、ステップ18に進み、駆動信号値IFBNのリミットチェック処理を実行する。この駆動信号値IFBNのリミットチェック処理は、所定の上限値および下限値を用いて、上記ステップ15のリミットチェック処理と同様に実行される。以上のように算出された駆動信号値IFBNにより、スロットル弁開度THがフィードバック制御される。
次に、ステップ19で、後述するように、学習値IXREFの算出処理を実行した後、本処理を終了する。
一方、ステップ1の判別結果がYESのとき、すなわち成層燃焼モードを実行すべき運転状態のときには、ステップ20に進み、成層アイドルF/B制御許可フラグF_FB2が「1」であるか否かを判別する。この成層アイドルF/B制御許可フラグF_FB2は、所定の成層アイドルF/B制御の実行条件が成立しているときには「1」に、それ以外のときには「0」にそれぞれ設定される。
ステップ20の判別結果がNOのときには、そのまま本処理を終了する。一方、ステップ20の判別結果がYESで、所定の成層アイドルF/B制御の実行条件が成立しているときには、ステップ21に進み、成層アイドルF/B制御を実行する。この成層アイドルF/B制御では、その詳細な説明は省略するが、燃料噴射量を制御入力としてアイドル回転数のフィードバック制御が実行される。その後、本処理を終了する。
次に、図4を参照しながら、前述した学習値IXREF(すなわちニュートラル用およびインギヤ用の学習値IXREF1,IXREF2)の算出処理について説明する。同図に示すように、まず、ステップ30で、学習許可フラグF_IXREFCNDの設定処理を実行する。
この処理では、図5に示すように、ステップ40〜51において、学習値IXREFの算出の実行条件(以下「学習実行条件」という)が成立しているか否かを判別し、その判別結果に応じて、学習許可フラグF_IXREFCNDの値を設定する。具体的には、以下の条件(c1)〜(c12)がいずれも成立しているときには、学習実行条件が成立しているとして、それを表すために、ステップ52で、学習許可フラグF_IXREFCNDを「1」に設定する。その後、本処理を終了する。
(c1)制御モードモニタAICMODEが「5」であること。この制御モードモニタAICMODEは、前述した均一アイドルF/B制御の実行中には「5」に、それ以外のときには「5」以外の値にそれぞれ設定される。
(c2)始動後フラグF_ASTNが「1」であること。この始動後フラグF_ASTNは、始動モードの終了後に所定時間が経過したときには「1」に、それ以外のときには「0」にそれぞれ設定される。
(c3)パワーステアリング用タイマのタイマ値TIPSが値0であること。このタイマは、ダウンカウント式のものであり、そのタイマ値TIPSが値0であるときには、パワーステアリングが操作された以降、所定時間が経過したことを表している。
(c4)吸気管内絶対圧PBAが所定値PBAIX以下であること。これは、エンジン3が高負荷運転域にないことを表している。
(c5)吸気管内のゲージ圧PBGAが所定値PBAIX以下であること。これは、エンジン3が高負荷運転域にないことを表しており、特に、高地でのエンジン運転を考慮した条件である。
(c6)エンジン回転数の今回値NEと前回値NEZとの偏差DNECYL(=NE−NEZ)の絶対値|DNECYL|が所定値DNEG(例えば30rpm)以下であること。すなわち、エンジン回転数NEの変動が小さいこと。
(c7)前述した回転数偏差DNOBJの絶対値|DNOBJ|が所定値DNX(例えば10rpm)以下であること。すなわち、均一アイドルF/B制御が過渡的な状態でなく、安定した制御状態にあること。
(c8)フラグF_ITWHが「1」であること。このフラグF_ITWHは、前述した水温補正項ITWの算出において、高水温域用テーブルが用いられたとき、すなわちエンジン水温TWが高水温域にあるときには「1」に設定され、低水温域用テーブルが用いられたときには「0」に設定される。
(c9)エンジン水温TWが所定値TWIXREF(例えば80℃)以上であること。すなわち、エンジン3の暖機運転が終了していること。
(c10)成層燃焼許可フラグF_DISCOKが「0」であること。この成層燃焼許可フラグF_DISCOKは、後述するように、エンジン3および車両が成層燃焼モードを実行すべき運転状態にあるときには「1」に、それ以外のときには「0」にそれぞれ設定される。
(c11)燃焼移行モードフラグF_DSCMODが「0」であること。この燃焼移行モードフラグF_DSCMODは、後述するように、燃焼モードが成層燃焼モードと均一燃焼モードとの間で移行する燃焼移行モードにあるときには「1」に、それ以外のときには「0」にそれぞれ設定される。
(c12)リミット実行フラグF_TCYLLMTが「0」であること。このリミット実行フラグF_TCYLLMTは、後述するように、要求燃料噴射量TCYLの算出において、これが燃焼移行モード中にリミット処理されているときには「1」に、それ以外のときに「0」にそれぞれ設定される。
一方、ステップ40〜51において、上記条件(c1)〜(c12)のいずれかが成立していないときには、学習実行条件が不成立であるとして、それを表すために、ステップ53で、学習許可フラグF_IXREFCNDを「0」に設定する。その後、本処理を終了する。
図4に戻り、ステップ30で、以上のように学習許可フラグF_IXREFCNDの設定処理を実行した後、ステップ31に進み、RAM2bに記憶されている学習完了フラグF_IXREFLRNの値が「1」であるか否かを判別する。この学習完了フラグF_IXREFLRNは、後述するように、学習値IXREFの算出処理が所定時間、継続して実行されたときには「1」に設定され、それ以外のときには「0」に設定されるとともに、その初期値は「0」に設定される。以下、学習値IXREFの算出処理が所定時間、継続して実行されたとき、すなわち学習値IXREFの算出値として適切な値が得られたと推定される状態を「アイドル学習が完了した」といい、それ以外の状態を「アイドル学習が完了していない」という。
ステップ31の判別結果がNOで、アイドル学習が完了していないときには、ステップ32に進み、上記ステップ30で設定された学習許可フラグF_IXREFCNDが「1」であるか否かを判別する。
この判別結果がYESで、学習実行条件が成立しているときには、ステップ33で、下式により学習値IXREFを算出する。この場合、ATのシフト位置POSIがNまたはPのときには、ニュートラル用の学習値IXREF1が算出され、それ以外のシフト位置POSIのときには、インギヤ用の学習値IXREF2が算出される。
ここで、CXREFは、なまし係数であり、1〜2562 の間の値に設定される。上記式から明らかなように、なまし係数CXREFの値が大きいほど、学習値IXREF1,IXREF2を算出するときのI項IAINの重みが大きくなる。これにより、I項IAINが強く反映されることで、学習値IXREF1,IXREF2の学習速度が速くなる。
ステップ33に続くステップ34において、アイドル学習を実行中であることを表すために、学習中フラグF_IXREFCALを「1」に設定した後、本処理を終了する。
一方、ステップ32の判別結果がNOで、学習実行条件が不成立であるときには、ステップ35に進み、学習値IXREFの算出を実行していないことを表すために、学習中フラグF_IXREFCALを「0」に設定した後、本処理を終了する。
一方、ステップ31の判別結果がYESで、アイドル学習が完了しているとき、すなわち適切な学習値IXREFを算出済みのときには、そのまま本処理を終了する。
次に、図6を参照しながら、燃料噴射制御処理について説明する。本処理は、TDC信号の入力に同期して割り込み実行される。この処理では、まず、ステップ60で、成層燃焼許可フラグF_DISCOKの設定処理を実行する。この処理の詳細については、後述する。
次に、ステップ61で、各種の補正係数を算出する。これら各種の補正係数はそれぞれ、各種のパラメータ(例えば吸気温TA、大気圧PAおよびエンジン水温TWなど)に応じて、各種のテーブルまたはマップ(いずれも図示せず)を検索することによって算出される。
次いで、ステップ62,63で、吸気行程噴射用の目標空燃比KCMD1STおよび圧縮行程噴射用の目標空燃比KCMD2NDをそれぞれ算出する。均一燃焼モード中には、前者が用いられ、成層燃焼モード中には、後者が用いられるとともに、燃焼移行モードでは、これらの目標空燃比KCMD1ST,KCMD2NDの一方が適宜、用いられる。また、これらの目標空燃比KCMD1ST,KCMD2NDは、エンジン回転数NEおよび要求トルクPMCMDなどに応じて算出される。なお、この要求トルクPMCMDは、エンジン回転数NEおよびアクセル開度APに応じて、マップ(図示せず)を検索することにより算出される。
ステップ63に続くステップ64において、空燃比F/B補正係数KAFを算出する。この空燃比F/B補正係数KAFは、燃焼モードに応じて算出されるものであり、具体的には、検出空燃比KACTおよび吸気行程噴射用の目標空燃比KCMD1STなどに応じて、または検出空燃比KACTおよび圧縮行程噴射用の目標空燃比KCMD2NDなどに応じて、所定のフィードバック制御アルゴリズムにより算出される。
次に、ステップ65,66で、吸気行程噴射用の基本燃料噴射量TIM1STおよび圧縮行程噴射用の基本燃料噴射量TIM2NDを算出する。具体的には、実吸入空気量GCYL(気筒内に実際に吸入されたと推定される空気量)を、TH通過吸入空気量GTHおよび吸気管内絶対圧PBAに基づいて算出する。そして、この実吸入空気量GCYLに応じて、図示しないテーブルを検索することにより、基本燃料噴射量のテーブル値を算出するとともに、そのテーブル値を補正することにより、吸気行程噴射用の基本燃料噴射量TIM1STを算出する。これと同様に、圧縮行程噴射用の基本燃料噴射量TIM2NDも算出される。
次いで、ステップ67に進み、要求燃料噴射量TCYLを算出する。具体的には、要求燃料噴射量TCYLは、以下のように算出される。まず、均一燃焼モードを実行すべき運転状態のときには、ステップ61,62,64,65でそれぞれ算出した各種の補正係数、吸気行程噴射用の目標空燃比KCMD1ST、空燃比F/B補正係数KAFおよび吸気行程噴射用の基本燃料噴射量TIM1STに基づいて、要求燃料噴射量TCYLが算出される。また、成層燃焼モードを実行すべき運転状態のときには、ステップ61,63,64,66でそれぞれ算出した各種の補正係数、空燃比F/B補正係数KAF、圧縮行程噴射用の目標空燃比KCMD2ND、および圧縮行程噴射用の基本燃料噴射量TIM2NDに基づいて、要求燃料噴射量TCYLが算出される。
さらに、均一燃焼モードおよび成層燃焼モードの一方から他方に移行する際の燃焼移行モードでは、その実行開始から吸入空気量が安定するまでの間は、以上のように算出した要求燃料噴射量TCYLをリミット処理することにより、最終的な要求燃料噴射量TCYLが算出され、さらに、吸入空気量の安定後は、リミット処理を実行することなく、要求燃料噴射量TCYLが算出される。なお、前述したリミット実行フラグF_TCYLLMTは、この燃焼移行モードにおいて要求燃料噴射量TCYLがリミット処理されているときには「1」に、それ以外のときには「0」にそれぞれ設定される。
次いで、このように算出した要求燃料噴射量TCYLを、燃料圧PFおよび燃料温TFに応じて補正することにより、最終燃料噴射量TOUTを算出する(ステップ68)。次に、ステップ69に進み、後述するように、燃料噴射処理を実行した後、本処理を終了する。
次に、図7,8を参照しながら、前述した成層燃焼許可フラグF_DISCOKの設定処理について説明する。この処理では、以下に述べるように、成層燃焼許可フラグF_DISCOKを含む各種のフラグの値が設定される。
まず、ステップ70で、空燃比状態フラグF_DSAFCNDの設定処理を実行する。このステップ70では、空燃比状態フラグF_DSAFCNDが、空燃比が成層燃焼モードを実行可能な状態にあるときには「1」に、それ以外のときには「0」にそれぞれ設定される。より具体的には、LAFセンサ28が活性化されていること、検出空燃比KACTに基づく空燃比フィードバック制御が実行されていること、および、パージガスの濃度が所定濃度以下であることなどがいずれも成立しているときには「1」に設定され、それ以外のときには「0」に設定される。
次いで、ステップ71で、燃料圧フラグF_DSPFCNDの設定処理を実行する。このステップ71では、燃料圧フラグF_DSPFCNDが、燃料圧PFが正常な値を示しているとき、すなわち高圧ポンプ4bが正常に作動しているときには「1」に、それ以外のときには「0」にそれぞれ設定される。
次に、ステップ72に進み、学習完了フラグF_IXREFLRNの設定処理を実行する。この学習完了フラグF_IXREFLRNは、アイドル学習が完了したか否か、すなわち前述した学習値IXREFの算出処理が所定時間、継続して実行されたか否かを表すものであり、その設定処理は、具体的には、図9に示すように実行される。
すなわち、まず、ステップ100において、始動モードフラグF_STMODが「1」であるか否かを判別する。この判別結果がYESで、始動モード中であるときには、ステップ101に進み、ダウンカウント式の学習タイマのタイマ値TIXRFLRNを所定値TMIXRFLRNに設定する。
次いで、ステップ102で、アイドル学習が完了していないことを表すために、学習完了フラグF_IXREFLRNを「0」に設定した後、本処理を終了する。
一方、ステップ100の判別結果がNOで、始動モードでないときには、ステップ103に進み、RAM2bに記憶されている学習完了フラグF_IXREFLRNの値が「1」であるか否かを判別する。この判別結果がYESで、アイドル学習が完了しているときには、そのまま本処理を終了する。
一方、ステップ103の判別結果がNOで、アイドル学習が完了していないときには、ステップ104で、RAM2bに記憶されている学習中フラグF_IXREFCALが「1」であるか否かを判別する。この判別結果がNOで、学習値IXREFの算出処理を実行中でないとき、すなわちアイドル学習中でないときには、前述したようにステップ101,102を実行した後、本処理を終了する。
一方、ステップ104の判別結果がYESで、アイドル学習中であるときには、ステップ105に進み、I項IAINと水温補正項ITWとの偏差から学習値IXREFを減算した値の絶対値|(IAIN−ITW)−IXREF|が所定値DIXREF以下であるか否かを判別する。
この判別結果がNOのときには、均一アイドルF/B制御がアイドル学習に適した制御状態でないとして、前述したようにステップ101,102を実行した後、本処理を終了する。一方、ステップ105の判別結果がYESのときには、ステップ106に進み、学習タイマのタイマ値TIXRFLRNが値0であるか否かを判別する。この判別結果がNOのときには、アイドル学習を完了すべきではないとして、前述したステップ102を実行した後、本処理を終了する。
一方、ステップ106の判別結果がYESのとき、すなわち学習値IXREFの算出処理が所定時間(所定値TMIXRFLRNに相当する時間)、継続して実行されたときには、適切な学習値IXREFが算出されたとして、ステップ107に進み、アイドル学習が完了したことを表すために、学習完了フラグF_IXREFLRNを「1」に設定する。その後、本処理を終了する。
図7に戻り、ステップ72で、以上のように学習完了フラグF_IXREFLRNの設定処理を実行した後、ステップ73に進み、成層燃焼域フラグF_DISCAREAの設定処理を実行する。この成層燃焼域フラグF_DISCAREAは、エンジン3および車両が成層燃焼モードを実行可能な運転領域にあるか否かを表すものであり、その設定処理は、具体的には、図10に示すように実行される。
すなわち、まず、ステップ110において、運転状態フラグF_DSDRCNDの設定処理を実行する。この運転状態フラグF_DSDRCNDは、エンジン3が成層燃焼モードを実行可能な運転状態にあるか否かを表すものであり、具体的には、要求トルクPMCMD、エンジン水温TW、エンジン回転数NEおよび大気圧PAなどが、それぞれの所定の成層燃焼領域にあるときには「1」に設定され、それ以外のときすなわち均一燃焼領域にあるときには「0」に設定される。
次いで、ステップ111に進み、ステップ110で設定された運転状態フラグF_DSDRCNDが「1」であるか否かを判別する。この判別結果がYESで、成層燃焼モードを実行可能な運転状態にあるときには、ステップ112に進み、前述した学習完了フラグF_IXREFLRNが「1」であるか否かを判別する。
この判別結果がYESで、アイドル学習が完了しているときには、後述するステップ114に進む。一方、この判別結果がNOのときには、ステップ113に進み、車速VPが所定車速VPDIXREF以上であるか否かを判別する。この所定車速VPDIXREFは、車両が走行中であるか否かを判別するためのものであり、そのような判別が可能な値(例えば3km/h)に設定される。このステップ113の判別結果がYESで、車両が走行中のときには、ステップ114に進む。
ステップ112または113に続くステップ114では、TH変動フラグF_DTHDSが「0」であるか否かを判別する。このTH変動フラグF_DTHDSは、スロットル弁開度THの変動量が大きいか否かを表すものであり、具体的には、スロットル弁開度THの今回値と前回値との偏差が所定値以上のときには「1」に、それ以外のときには「0」にそれぞれ設定される。
この判別結果がYESで、スロットル弁開度THが安定した状態にあるときには、ステップ115に進み、NE変動フラグF_DNEDSが「0」であるか否かを判別する。このNE変動フラグF_DNEDSは、エンジン回転数NEの変動量が大きいか否かを表すものであり、具体的には、エンジン回転数NEの今回値と前回値との偏差が所定値以上のときには「1」に、それ以外のときには「0」にそれぞれ設定される。
この判別結果がYESで、エンジン回転数NEが安定した状態にあるときには、ステップ116に進み、エンジン3および車両が成層燃焼モードを実行可能な運転領域にあることを表すために、成層燃焼域フラグF_DISCAREAを「1」に設定した後、本処理を終了する。
一方、ステップ114または115のいずれかの判別結果がNOのとき、すなわちスロットル弁開度THまたはエンジン回転数NEの変動量が大きく、不安定な状態にあるときには、ステップ117に進み、エンジン3または車両が成層燃焼モードを実行可能な運転領域にないことを表すために、成層燃焼域フラグF_DISCAREAを「0」に設定する。その後、本処理を終了する。
また、ステップ113の判別結果がNOのとき、すなわちアイドル学習が完了しておらず、かつ停車中のときにも、ステップ117で、エンジン3または車両が成層燃焼モードを実行可能な運転領域にないことを表すために、成層燃焼域フラグF_DISCAREAを「0」に設定した後、本処理を終了する。
さらに、ステップ111の判別結果がNOのときにも、上記のようにステップ117を実行した後、本処理を終了する。
以上のように、この成層燃焼域フラグF_DISCAREAの設定処理では、エンジン3が成層燃焼モードを実行可能な運転状態にある場合(F_DSDRCND=1)でも、アイドル学習が完了しておらず、かつ停車中のときには、成層燃焼域フラグF_DISCAREAが「0」に設定される。
図7に戻り、ステップ73で、以上のように成層燃焼域フラグF_DISCAREAの設定処理を実行した後、ステップ74に進み、遅延フラグF_TDSCND0の設定処理を実行する。この遅延フラグF_TDSCND0は、エンジン3の運転状態に応じて決定された遅延時間が経過したか否かを表すものであり、その設定処理は、具体的には、図11に示すように実行される。
すなわち、まず、ステップ120において、ブレーキ負圧制御フラグF_PBDCSPが「1」であるか否かを判別する。このブレーキ負圧制御フラグF_PBDCSPは、ブレーキ負圧制御を実行しているときには「1」に、実行していないときには「0」にそれぞれ設定される。このブレーキ負圧制御は、ブレーキ操作に伴って、図示しないマスタバック内の負圧が不足した際、これを回復すべく、吸気管12内の負圧をマスタバックに供給するために、スロットル弁開度THを制御するものである。
ステップ120の判別結果がYESで、ブレーキ負圧制御の実行中は、ステップ121に進み、負圧制御用の遅延時間TMDSPBSを所定値TMDSPBSREFに設定する。一方、ステップ120の判別結果がNOで、ブレーキ負圧制御を実行していないときには、ステップ122に進み、負圧制御用の遅延時間TMDSPBSを値0に設定する。
次に、ステップ121または122に続くステップ123で、フューエルカットフラグF_FCが「1」であるか否かを判別する。この判別結果がYESで、フューエルカット運転中は、ステップ124に進み、フューエルカット運転用の遅延時間TMDSAFCを所定値TMDSAFCREFに設定する。一方、ステップ123の判別結果がNOで、フューエルカット運転中でないときには、ステップ125に進み、フューエルカット運転用の遅延時間TMDSAFCを値0に設定する。
次いで、ステップ124または125に続くステップ126で、リフト切換フラグF_VTECが「1」である否かを判別する。このリフト切換フラグF_VTECは、バルブタイミング切換機構11により、吸気弁8および排気弁9のバルブタイミングがHI.VTに設定されているときには「1」に設定され、LO.VTに設定されているときには「0」に設定される。
ステップ126の判別結果がYESで、吸気弁8および排気弁9のバルブタイミングがHI.VTに設定されているときには、ステップ127に進み、HI.VT用の遅延時間TMDSVTECを所定値TMDSVTECREFに設定する。一方、ステップ126の判別結果がNOで、LO.VTに設定されているときには、ステップ128に進み、HI.VT用の遅延時間TMDSVTECを値0に設定する。
次に、ステップ127または128に続くステップ129で、ダウンカウント式のディレイタイマのタイマ値TDSCNDを設定する。具体的には、以上のように設定された3つの遅延時間TMDSPBS,TMDSAFC,TMDSVTECと、RAM2bに記憶されているタイマ値TDSCND(すなわち前回のループでの設定後にデクリメントされた値)とを比較し、これらの値のうちの最大値を、ディレイタイマのタイマ値TDSCNDとして設定する。
次いで、ステップ130に進み、ディレイタイマのタイマ値TDSCNDが値0であるか否かを判別する。この判別結果がNOで、遅延時間が経過していないときには、それを表すために、ステップ131で、遅延フラグF_TDSCND0を「0」に設定する。その後、本処理を終了する。
一方、ステップ130の判別結果がYESで、遅延時間が経過したときには、それを表すために、ステップ132で、遅延フラグF_TDSCND0を「1」に設定する。その後、本処理を終了する。
図7に戻り、ステップ74で、以上のように遅延フラグF_TDSCND0の設定処理を実行した後、ステップ75に進み、RAM2bに記憶されている成層燃焼許可フラグF_DISCOKの値を、成層燃焼許可フラグの前回値F_DISCOKZとして設定する。
次に、ステップ76で、成層フェールセーフフラグF_FSPDISCが「1」であるか否かを判別する。この成層フェールセーフフラグF_FSPDISCは、機器の不具合が発生しているときには「1」に、それ以外のときには「0」にそれぞれ設定される。
ステップ76の判別結果がYESのときには、機器の不具合により成層燃焼モードを実行すべきでないとして、図8のステップ84に進み、成層燃焼モードを実行不可能であることを表すために、成層燃焼可能フラグF_DISCCANを「0」に設定する。次いで、ステップ85で、エンジン3および車両が成層燃焼モードを実行すべき運転状態にないことを表すために、成層燃焼許可フラグF_DISCOKを「0」に設定した後、本処理を終了する。
一方、ステップ76の判別結果がNOのときには、ステップ77に進み、始動モードフラグF_STMODが「1」であるか否かを判別する。この判別結果がYESで、始動モード中であるときには、ステップ82で、ダウンカウント式の始動モードディレイタイマのタイマ値TDSSTを所定値TMDSSTに設定する。
その後、ステップ83で、ダウンカウント式の成層開始許可ディレイタイマのタイマ値TDSDLYを所定値TMDSDLYに設定する。次に、前述したように、図8のステップ84,85を実行した後、本処理を終了する。
一方、ステップ77の判別結果がNOで、始動モードでないときには、ステップ78に進み、始動モードディレイタイマのタイマ値TDSSTが「0」であるか否かを判別する。この判別結果がNOのときには、前述したように、ステップ83〜85を実行した後、本処理を終了する。一方、ステップ78の判別結果がYESで、始動モードの終了後、所定値TMDSSTに相当する時間が経過したときには、ステップ79に進み、ステップ70で設定した空燃比状態フラグF_DSAFCNDが「1」であるか否かを判別する。
この判別結果がNOのときには、前述したように、ステップ83〜85を実行した後、本処理を終了する。一方、ステップ79の判別結果がYESで、空燃比が成層燃焼モードを実行可能な状態にあるときには、ステップ80で、ステップ71で設定した燃料圧フラグF_DSPFCNDが「1」であるか否かを判別する。
この判別結果がNOのときには、前述したように、ステップ83〜85を実行した後、本処理を終了する。一方、ステップ80の判別結果がYESで、高圧ポンプ4bが正常に作動しているときには、ステップ81に進み、吸気管氷結フラグF_ICEGRJUDが「1」であるか否かを判別する。この吸気管氷結フラグF_ICEGRJUDは、吸気温TAが極低温であることで、吸気管12内で氷結が発生している可能性があるときには「1」に、それ以外のときには「0」にそれぞれ設定される。
ステップ81の判別結果がYESで、吸気管12内で氷結が発生している可能性があるときには、前述したように、ステップ83〜85を実行した後、本処理を終了する。一方、ステップ81の判別結果がNOのときには、図8のステップ86に進み、成層開始許可ディレイタイマのタイマ値TDSDLYが値0であるか否かを判別する。
この判別結果がYESのとき、すなわち、ステップ79,80の判別結果がYESで、かつステップ81の判別結果がNOとなってから、所定値TMDSDLYに相当する時間が経過したときには、ステップ87に進み、ステップ73で設定された成層燃焼域フラグF_DISCAREAが「1」であるか否かを判別する。
この判別結果がYESで、エンジン3および車両が成層燃焼モードを実行可能な運転領域にあるときには、ステップ88に進み、ステップ74で設定された遅延フラグF_TDSCND0が「1」であるか否かを判別する。この判別結果がYESで、エンジン3の運転状態に応じて決定された遅延時間が経過したときには、ステップ89に進み、リミット実行フラグF_TCYLLMTが「1」であるか否かを判別する。
この判別結果がYESで、燃焼移行モードでの要求燃料噴射量TCYLがリミット処理されているときには、ステップ90に進み、RAM2bに記憶されている成層燃焼可能フラグF_DISCCANの値が「1」であるか否かを判別する。この判別結果がYESで、前回のループにおいて成層燃焼モードを実行可能であったときには、後述するステップ91に進む。一方、ステップ89の判別結果がNOで、燃焼移行モードでの要求燃料噴射量TCYLがリミット処理されていないときには、ステップ90をスキップして、ステップ91に進む。
次に、ステップ89または90に続くステップ91で、成層燃焼モードを実行可能であることを表すために、成層燃焼可能フラグF_DISCCANを「1」に設定する。次いで、ステップ92で、エンジン3および車両が成層燃焼モードを実行すべき運転状態にあることを表すために、成層燃焼許可フラグF_DISCOKを「1」に設定した後、本処理を終了する。
一方、ステップ86〜88,90のいずれかの判別結果がNOのときには、前述したように、ステップ84,85を実行した後、本処理を終了する。
以上のように、この成層燃焼許可フラグF_DISCOKの設定処理では、成層燃焼域フラグF_DISCAREAが「1」であるとき、すなわちアイドル学習が完了しているか、または走行中であるときには、成層燃焼許可フラグF_DISCOKが「1」に設定される。一方、成層燃焼域フラグF_DISCAREAが「0」であるとき、すなわちアイドル学習が完了しておらずかつ停車中であるときには、成層燃焼許可フラグF_DISCOKが「0」に設定される。
次に、図12を参照しながら、前述した燃料噴射処理について説明する。この処理では、まず、ステップ140において、燃焼移行モードフラグF_DSCMODの設定処理を実行する。この燃焼移行モードフラグF_DSCMODは、エンジン3が前述した燃焼移行モードを実行すべき運転状態にあるか否かを表すものであり、具体的には、前述したフューエルカットフラグF_FCの値、および前述した成層燃焼許可フラグF_DISCOKの前回値と今回値との比較結果などに応じて、エンジン3が燃焼移行モードを実行すべき運転状態にあるときには「1」に、それ以外のときには「0」にそれぞれ設定される。
次いで、ステップ141で、2回噴射フラグF_DBINJの設定処理を実行する。この2回噴射フラグF_DBINJは、1燃焼サイクルでの2回噴射を実行すべきか否かを表すものであり、その設定処理は、具体的には図13に示すように実行される。
すなわち、まず、ステップ150において、上記ステップ140で設定された燃焼移行モードフラグF_DSCMODが「1」であるか否かを判別する。この判別結果がNOで、エンジン3が燃焼移行モードを実行すべきでない運転状態にあるときには、ステップ151に進み、成層燃焼許可フラグF_DISCOKが「1」であるか否かを判別する。
この判別結果がYESで、エンジン3および車両が成層燃焼モードを実行すべき運転状態にあるときには、燃料を圧縮行程で噴射すべきであるとして、それを表すために、ステップ152,153で、吸気行程噴射フラグF_DIHCを「0」に、圧縮行程噴射フラグF_DISCを「1」にそれぞれ設定する。
次いで、ステップ154に進み、2回噴射を実行すべきでないことを表すために、2回噴射フラグF_DBINJを「0」に設定した後、本処理を終了する。
一方、ステップ151の判別結果がNOで、エンジン3および車両が均一燃焼モードを実行すべき運転状態にあるときには、燃料を吸気行程で噴射すべきであるとして、それを表すために、ステップ155,156で、吸気行程噴射フラグF_DIHCを「1」に、圧縮行程噴射フラグF_DISCを「0」にそれぞれ設定する。次いで、前述したように、ステップ154を実行した後、本処理を終了する。
一方、ステップ150の判別結果がYESで、エンジン3が燃焼移行モードを実行すべき運転状態にあるときには、ステップ157に進み、ステップ68で算出された最終燃料噴射量TOUTと圧縮行程噴射用の燃料量TIMDSCとの偏差(TOUT−TIMDSC)すなわち吸気行程噴射用の燃料量が、所定の噴射可能下限値TOUTDIMINより小さいか否かを判別する。
この噴射可能下限値TOUTDIMINは、インジェクタ4により噴射可能な燃料量の最小値を表している。また、圧縮行程噴射用の燃料量TIMDSCは、エンジン回転数NEに応じて、図14に示すテーブルを検索することにより算出される。
ステップ157の判別結果がNOのとき、すなわちTOUT−TIMDSC≧TOUTDIMINが成立するときには、2回噴射を実行すべきであるとして、それを表すために、ステップ163〜165において、吸気行程噴射フラグF_DIHC、圧縮行程噴射フラグF_DISC、および2回噴射フラグF_DBINJをいずれも「1」に設定する。その後、本処理を終了する。
一方、ステップ157の判別結果がYESで、2回噴射のうちの吸気行程で噴射すべき燃料量を噴射できないときには、ステップ158に進み、成層燃焼許可フラグF_DISCOKが「1」であるか否かを判別する。
この判別結果がYESのとき、すなわち燃焼移行モードを開始する前の燃焼モードが均一燃焼モードであるときには、燃料を吸気行程で噴射すべきであるとして、それを表すために、ステップ159,160で、吸気行程噴射フラグF_DIHCを「1」に、圧縮行程噴射フラグF_DISCを「0」にそれぞれ設定する。次いで、前述したように、ステップ154を実行した後、本処理を終了する。
一方、ステップ158の判別結果がNOのとき、すなわち燃焼移行モードを開始する前の燃焼モードが成層燃焼モードであるときには、燃料を圧縮行程で噴射すべきであるとして、それを表すために、ステップ161,162で、吸気行程噴射フラグF_DIHCを「0」に、圧縮行程噴射フラグF_DISCを「1」にそれぞれ設定する。次いで、前述したように、ステップ154を実行した後、本処理を終了する。
図12に戻り、ステップ141で、以上のように2回噴射フラグF_DBINJの設定処理を実行した後、ステップ142に進み、上記ステップ141で設定された2回噴射フラグF_DBINJが「1」であるか否かを判別する。この判別結果がYESで、2回噴射を実行すべきときには、ステップ143に進み、2回噴射制御を実行する。すなわち、吸気行程で、吸気行程噴射用の燃料量(TOUT−TIMDSC)分の燃料を噴射し、圧縮行程で、圧縮行程噴射用の燃料量TIMDSC分の燃料を噴射する。その後、本処理を終了する。
一方、ステップ142の判別結果がNOのときには、ステップ144に進み、吸気行程噴射フラグF_DIHCが「1」であるか否かを判別する。この判別結果がYESで、燃料を吸気行程で噴射すべきときには、ステップ145に進み、吸気行程噴射制御を実行する。すなわち、最終燃料噴射量TOUT分の燃料を、吸気行程で噴射する。その後、本処理を終了する。
一方、ステップ144の判別結果がNOのときには、ステップ146に進み、圧縮行程噴射フラグF_DISCが「1」であるか否かを判別する。この判別結果がYESで、燃料を圧縮行程で噴射すべきときには、ステップ147に進み、圧縮行程噴射制御を実行する。すなわち、最終燃料噴射量TOUT分の燃料を、圧縮行程で噴射する。その後、本処理を終了する。
一方、ステップ146の判別結果がNOで、燃料噴射を実行すべきでないとき、すなわちフューエルカット運転のときには、そのまま本処理を終了する。これにより、燃料噴射が停止される。
以上のように、本実施形態の制御装置1によれば、図2のステップ1で、成層燃焼許可フラグF_DISCOK=0のときには、成層アイドルF/B制御が禁止される。この成層燃焼許可フラグF_DISCOKは、図7,8のステップ73で設定された成層燃焼域フラグF_DISCAREA=0のとき、すなわち図10のステップ112,113において、学習完了フラグF_IXREFLRN=0で、かつ停車中のときに「0」に設定される。すなわち、学習値IXREFの算出が完了しておらず、かつ停車中でアイドル運転が実行されるときには、均一アイドルF/B制御が実行されるとともに、その制御中において、学習値IXREFの算出が完了するまでの間は、成層アイドルF/B制御が禁止される。言い換えれば、成層アイドルF/B制御が実行された際には、駆動信号値IFBNの学習値IXREFの算出が完了し、適切な学習値IXREFが得られていることになる。これにより、アイドル運転中、成層アイドルF/B制御から均一アイドルF/B制御に切り換えられる際(すなわち燃焼モードが成層燃焼モードから均一燃焼モードに切り換えられる際)には、適切な学習値IXREFが必ず得られているので、切り換え後、そのような学習値IXREFを用いながら、スロットル弁開度THすなわち吸入空気量を制御することができる。それにより、従来と異なり、エンジン回転数NEが不安定な状態になるのを回避でき、エンジン回転数NEを安定した状態に維持できる。特に、エンジンストールなどを回避できる。
なお、均一アイドルF/B制御において、吸入空気量をフィードバック制御する手法は、スロットル弁開度THを制御する実施形態の例に限らず、吸入空気量をフィードバック制御できるものであればよい。例えば、エンジン3の吸気弁8および排気弁9を駆動する動弁機構が、両弁8,9のリフトおよび開閉タイミングを、ECU2からの制御信号に応じて連続的に自在に変更するように構成されている場合には、スロットル弁機構13を省略する(またはアイドル運転中、スロットル弁13aを全開状態に保持する)とともに、この動弁機構を介して、両弁8,9のリフトおよび開閉タイミングを制御することにより、均一アイドルF/B制御において、吸入空気量をフィードバック制御するようにしてもよい。