以下、図面を参照しながら、本発明の好ましい実施形態について説明する。図1は、本実施形態による停止制御装置1(図2参照)を適用した内燃機関3を概略的に示している。この内燃機関(以下「エンジン」という)3は、例えば6気筒タイプのガソリンエンジンである。
エンジン3の各気筒3aには、燃料噴射弁(以下「インジェクタ」という)6および点火プラグ7(いずれも図2参照)が、取り付けられている。また、エンジン3は、筒内噴射式のものであり、燃料が各インジェクタ6から対応する気筒3a内に直接、噴射されるとともに、気筒3a内に生成された混合気が、点火プラグ7によって点火される。インジェクタ6の開閉は、ECU2(図2参照)からの制御信号によって制御され、それにより、開弁タイミングによって燃料噴射時期が、開弁時間によって燃料噴射量TCYLが制御される。
エンジン3のシリンダヘッド3bには、気筒3aごとに、吸気管4および排気管5が接続されるとともに、一対の吸気弁8,8(1つのみ図示)および一対の排気弁9,9(1つのみ図示)が設けられている。
図3に示すように、シリンダヘッド3b内には、回転自在の吸気カムシャフト41と、吸気カムシャフト41に一体に設けられた吸気カム42と、ロッカーアームシャフト43と、ロッカーアームシャフト43に回動自在に支持されるとともに、吸気弁8,8の上端にそれぞれ当接する2つのロッカーアーム44,44(1つのみ図示)などが設けられている。
吸気カムシャフト41は、吸気スプロケットおよびタイミングチェーン(いずれも図示せず)を介して、クランクシャフト3c(図1参照)に連結されており、クランクシャフト3cが2回転するごとに1回転する。この吸気カムシャフト41の回転に伴い、ロッカーアーム44,44が吸気カム42で押圧され、ロッカーアームシャフト43を中心として回動することにより、吸気弁8,8が開閉される。
また、シリンダヘッド3b内には、回転自在の排気カムシャフト61と、排気カムシャフト61に一体に設けられた排気カム62と、ロッカーアームシャフト63と、ロッカーアームシャフト63に回動自在に支持されるとともに、排気弁9,9の上端にそれぞれ当接する2つのロッカーアーム64,64(1つのみ図示)などが設けられている。
排気カムシャフト61は、排気スプロケットおよびタイミングチェーン(いずれも図示せず)を介して、クランクシャフト3cに連結されており、クランクシャフト3cが2回転するごとに1回転する。この排気カムシャフト61の回転に伴い、ロッカーアーム64,64が排気カム62で押圧され、ロッカーアームシャフト63を中心として回動することにより、排気弁9,9が開閉される。
また、吸気カムシャフト41には、気筒判別センサ25が設けられている。この気筒判別センサ25は、吸気カムシャフト41の回転に伴い、特定の気筒3aの所定のクランク角度位置において、パルス信号であるCYL信号を出力する。
クランクシャフト3cには、クランク角センサ24が設けられている。クランク角センサ24は、クランクシャフト3cの回転に伴い、パルス信号であるTDC信号およびCRK信号を出力する。TDC信号は、いずれかの気筒3aにおいて、ピストン3dが吸気行程開始時のTDC(上死点)付近の所定のクランク角度位置にあることを表す信号であり、本実施形態のような6気筒タイプの場合には、クランクシャフト3cが120°回転するごとに出力される。CRK信号は、所定のクランク角度(例えば30°)ごとに出力される。ECU2は、CRK信号に基づき、エンジン3の回転数(以下「エンジン回転数」という)NEを算出する。また、ECU2は、CYL信号およびTDC信号に基づき、どの気筒3aが圧縮行程にあるかを判別し、その判別結果に基づき、1〜6の気筒番号CUCYLをそれぞれ割り当てる。
さらに、ECU2は、TDC信号およびCRK信号に基づき、クランク角度CAを算出するとともに、ステージ番号STGを設定する。このステージ番号STGは、いずれかの気筒3aにおいて吸気行程の初期に相当するクランク角度CAの基準角度位置を0°としたとき、クランク角度CAが0≦CA<30のときに「0」に設定され、30≦CA<60のときに「1」に、60≦CA<90のときに「2」に、90≦CA<120のときに「3」にそれぞれ設定される。したがって、ステージ番号STG=0は、いずれかの気筒3aが吸気行程の初期にあることを表し、同時に、エンジン3が6気筒であるため、他の1つの気筒3aが圧縮行程の中期にあること、より具体的には、圧縮行程の開始時からのクランク角度が60°から90°の期間であることを表す。
また、吸気管4には、スロットル弁機構13が設けられている。スロットル弁機構13は、吸気管4内に回動自在に設けられたスロットル弁13aと、これを駆動するTHアクチュエータ13bを有している。THアクチュエータ13bは、モータとギヤ機構(いずれも図示せず)を組み合わせたものであり、ECU2からの目標開度ICMDTHIGOFに基づく制御信号によって駆動される。それにより、スロットル弁13aの開度が変化することによって、気筒3aに吸入される新気の量(以下「吸気量」という)が制御される。
また、吸気管4のスロットル弁13aよりも下流側には、吸気温センサ22が設けられている。吸気温センサ22は、吸気の温度(以下「吸気温」という)TAを検出し、その検出信号はECU2に出力される。
さらに、ECU2には、大気圧センサ23から、大気圧PAを表す検出信号が、水温センサ26から、エンジン3の冷却水の温度(以下「エンジン水温」という)TWを表す検出信号が、車速センサ27から、車両の速度である車速VPを表す検出信号が、アクセル開度センサ28から、運転者によって操作されるアクセルペダル(図示せず)の開度(以下「アクセル開度」という)APを表す検出信号が、それぞれ出力される。
また、ECU2には、イグニッションスイッチ(SW)21(図2参照)から、そのオンまたはオフ状態を表す信号が出力される。なお、エンジン3の停止時、イグニッションスイッチ21がオフされたときには、インジェクタ6から気筒3a内への燃料供給が停止される。
ECU2は、I/Oインターフェース、CPU、RAMおよびROM(いずれも図示せず)などから成るマイクロコンピュータで構成されている。前述した各種のスイッチおよびセンサ21〜28からの検出信号は、I/OインターフェースでA/D変換や整形がなされた後、CPUに入力される。ECU2は、これらの入力信号に応じ、ROMに記憶された制御プログラムに従って、エンジン3の運転状態を判別するとともに、判別した運転状態に応じて、停止制御を含むエンジン3の制御を行う。
なお、本実施形態では、ECU2が、燃料供給量取得手段、吸気量制御手段、所定期間補正手段、アイドル判定手段および補正禁止手段に相当する。
次に、図4〜図17を参照しながら、ECU2により実行されるエンジン3の停止制御処理について説明する。本処理は、クランク角度CA30°ごとに実行される。
このエンジン3の停止制御は、イグニッションスイッチ21がオフされた後、エンジン回転数NEが停止制御開始回転数NEIGOFTHを下回ったときに、スロットル弁13aを開き側に制御することによって、ピストン3dが停止する直前の最終の圧縮行程におけるエンジン回転数NE(最終圧縮行程回転数NEPRSFTGT)を所定の基準値に制御することで、ピストン3dの停止位置を、吸気弁8と排気弁9とが同時に開くバルブオーバーラップが発生しない所定位置に制御するものである。
図4は、目標停止制御開始回転数NEICOFREFXの設定処理を示す。この処理は、停止制御において、後述するスロットル弁13aの2段目制御を開始する停止制御開始回転数の目標値を、目標停止制御開始回転数NEICOFREFXとして設定するとともに学習するものである。本処理は、1回の停止制御につき1回行われる。
本処理ではまず、ステップ1(「S1」と図示。以下同じ)において、目標停止制御開始回転数設定完了フラグF_IGOFTHREFDONEが「1」であるか否かを判別する。この答がYESで、目標停止制御開始回転数NEICOFREFXの設定がすでに行われているときには、そのまま本処理を終了する。
一方、上記ステップ1の答がNOで、目標停止制御開始回転数NEICOFREFXの設定がまだ行われていないときには、ステップ2において、学習回数NENGSTPが0であるか否かを判別する。この答がYESで、バッテリーキャンセルなどによって学習回数NENGSTPがリセットされているときには、目標停止制御開始回転数NEICOFREFXを所定の初期値NEICOFINIに設定し(ステップ3)、後述するステップ12に進む。
一方、上記ステップ2の答がNOのときには、ステップ4において、学習条件成立フラグF_NEICOFRCNDが「1」であるか否かを判別する。この学習条件成立フラグF_NEICOFRCNDは、エンジンストールが生じていないことや、エンジン水温TWが所定値以下の低温状態でないことなどを含む、目標停止制御開始回転数NEICOFREFXの所定の学習条件が成立しているときに「1」にセットされるものである。このステップ4の答がNOで、学習条件が成立していないときには、目標停止制御開始回転数NEICOFREFXの学習を行わず、後述するステップ14に進む。
一方、上記ステップ4の答がYESで、目標停止制御開始回転数NEICOFREFXの学習条件が成立しているときには、ステップ5において、前回の停止制御時に得られた最終圧縮行程回転数NEPRSFTGT、停止制御開始回転数NEIGOFTHおよび所定の傾きSLOPENPF0を用い、次式(1)によって、切片INTCPNPFを算出する。
INTCPNPF
=NEPRSFTGT−SLOPENPF0・NEIGOFTH ・・・・(1)
この式(1)は、停止制御開始回転数NEIGOFTHと最終圧縮行程回転数NEPRSFTGTとの間に、図12に示すような相関関係、すなわちSLOPENPF0を傾きとし、INTCPNPFを切片とする1次関数で表される相関関係が成立するとともに、エンジン3の型式が同一であれば傾きSLOPENPF0が一定であることを前提としている。この前提に従い、停止制御時に得られた停止制御開始回転数NEIGOFTHおよび最終圧縮行程回転数NEPRSTGTを用い、式(1)によって切片INTCPNPFを求めることにより、停止制御開始回転数NEIGOFTHと最終圧縮行程回転数NEPRSFTGTとの相関関係が決定される。
なお、後述するように、イグニッションスイッチ21がオフされた後にも点火プラグ7による点火が行われるので、イグニッションスイッチ21がオフされたときに気筒3a内に残留した燃料量が多いほど、エンジン3の慣性力はより大きくなる。それに伴い、同一の制御開始回転数NEICOFRRTに対して、最終圧縮行程回転数NEPRSTGTはより小さな値になるので、1次関数はより上側にオフセットされ(例えば図12の破線)、切片INTCPNPFはより大きな値に算出される。また、ピストン3dの摩擦が小さいほど、上記と同様の理由から、1次関数はより上側にオフセットされ、切片INTCPNPFはより大きな値に算出される。逆にピストン3dの摩擦が大きいほど、上記と逆の理由から、1次関数はより下側にオフセットされ(例えば図12の一点鎖線)、切片INTCPNPFはより小さな値に算出される。
次に、ステップ6において、上記のように決定された相関関係に基づき、算出された切片INTCPNPFと傾きSLOPENPF0を用い、最終圧縮行程回転数の所定の基準値NENPFLMT0を適用することにより、次式(2)によって、目標停止制御開始回転数の基本値NEICOFRRTを算出する(図12参照)。
NEICOFRRT
=(NENPFLMT0−INTCPNPF)/SLOPENPF0
・・・・(2)
この最終圧縮行程回転数の基準値NENPFLMT0は、最終圧縮行程回転数NEPRSFがこの値に制御されたときに、ピストン3dがバルブオーバラップの発生しない所定位置に停止するような値に相当し、実験などによりあらかじめ求められ、本実施形態では、例えば260rpmに設定されている。したがって、上記の式(2)で求めた目標停止制御開始回転数の基本値NEICOFRRTを用いることによって、ピストン3dを所定位置に停止させることができる。
次に、ステップ7において、停止制御時に検出された大気圧PA0に応じて、図13に示すマップからマップ値DNEICOFPAを検索し、学習用PA補正項dneicofrpaとして設定する。このマップでは、マップ値DNEICOFPA(=学習用PA補正項dneicofrpa)は、大気圧PA0が高いほど、より大きな値に設定されている。
次に、ステップ8において、停止制御時に検出された吸気温TA0に応じて、図14に示すマップからマップ値DNEICOFTAを検索し、学習用TA補正項dneicofrtaとして設定する。このマップでは、マップ値DNEICOFTA(=学習用TA補正項dneicofrta)は、吸気温TA0が低いほど、より大きな値に設定されている。
次に、ステップ9において、停止制御前に設定された後述の停止前燃料噴射量TCYLIGOF0に応じて、図15に示すマップからマップ値DNEICOFFWを検索し、学習用FW補正項dneicofrfwとして設定する。このマップでは、マップ値DNEICOFFW(=学習用FW補正項dneicofrfw)は、停止前燃料噴射量TCYLIGOF0が第1所定量TCY1以下のときに第1所定値DNE1に、第2所定量TCY2(>TCY1)以上のときに第2所定値DNE2(<DNE1)に設定され、TCYL1値とTCYL2値の間では、TCYLIGOF0値が大きいほど、より小さな値に設定されている。
次に、上記ステップ6〜9において算出された目標停止制御開始回転数の基本値NEICOFRRT、学習用PA補正項dneicofrpa、学習用TA補正項dneicofrtaおよび学習用FW補正項dneicofrfwを用い、次式(3)によって、目標停止制御開始回転数の補正後基本値NEICOFREFを算出する(ステップ10)。
NEICOFREF
=NEICOFRRT−dneicofrpa−dneicofrta
−dneicofrfw ・・・・(3)
前述したように、学習用PA補正項dneicofrpaは、大気圧PA0が高いほど、より大きな値に設定されるので、この補正後基本値NEICOFREFは、大気圧PA0が高いほど、より小さな値に補正される。また、学習用TA補正項dneicofrtaは、吸気温TA0が低いほど、より大きな値に設定されるので、補正後基本値NEICOFREFは、吸気温TA0が低いほど、より小さな値に補正される。さらに、学習用FW補正項dneicofrfwは停止前燃料噴射量TCYLIGOF0が小さいほど、より大きな値に設定されるので、補正後基本値NEICOFREFは、停止前燃料噴射量TCYLIGOF0が小さいほど、より小さな値に補正される。
次に、ステップ11において、学習回数NENGSTPに応じ、図16に示すマップを検索することによって、なまし係数CICOFREFXを算出する。このマップでは、なまし係数CICOFREFXは、学習回数NENGSTPが多いほど、より大きな値に設定されている(0<CICOFREFX<1)。
次に、ステップ12において、算出された目標停止制御開始回転数の補正後基本値NEICOFREF、目標停止制御開始回転数の前回値NEICOFREFX、およびなまし係数CICOFREFXを用い、次式(4)によって、目標停止制御開始回転数の今回値NEICOFREFXを算出する。
NEICOFREFX
=NEICOFREF・(1−CICOFREFX)
+NEICOFREFX・CICOFREFX ・・・・(4)
この式(4)から明らかなように、目標停止制御開始回転数NEICOFREFXは、目標停止制御開始回転数の補正後基本値NEICOFREFと目標停止制御開始回転数の前回値NEICOFREFXとの加重平均値であり、なまし係数CICOFREFXは、加重平均の重み係数として用いられる。このため、目標停止制御開始回転数の今回値NEICOFREFXは、なまし係数CICOFREFXが小さいほど、目標停止制御開始回転数の補正後基本値NEICOFREFにより近くなるように算出され、なまし係数CICOFREFXが大きいほど、目標停止制御開始回転数の前回値NEICOFREFXにより近くなるように算出される。また、なまし係数CICOFREFXは、学習回数NENGSTPに応じて前述したように設定されるため、学習回数NENGSTPが少ないほど、目標停止制御開始回転数の補正後基本値NEICOFREFの反映度合が大きくなり、学習回数NENGSTPが多いほど、目標停止制御開始回転数の前回値NEICOFREFXの反映度合が大きくなる。
前記ステップ3または12に続くステップ13では、学習回数NENGSTPをインクリメントする。また、ステップ4の答がNOのとき、またはステップ13の後には、ステップ14において、目標停止制御開始回転数NEICOFREFXの設定が終了したことを表すために、目標停止制御開始回転数設定完了フラグF_IGOFTHREFDONEを「1」にセットし、本処理を終了する。
図5および図6は、スロットル弁13aの開度の目標となる目標開度ICMDTHIGOFの設定処理を示す。この処理は、イグニッションスイッチ21のオフ後に、エンジン回転数NEに応じて、スロットル弁13aの目標開度ICMDTHIGOFを値0に制御する全閉制御、第1所定開度に設定する1段目制御、および、より大きな第2所定開度に設定する2段目制御を、順に行うものである。上記の全閉制御は、スロットル弁13aの閉じ側制御に相当し、1段目制御および2段目制御は、スロットル弁13aの開き側制御に相当する。
本処理ではまず、ステップ21において、イグニッションスイッチのオフ直前に算出された停止前燃料噴射量TCYLIGOFを読み出す処理を実行する。図7は、この停止前燃料噴射量TCYLIGOFの算出処理を示す。本処理ではまず、ステップ51において、イグニッションスイッチ21がオフ状態であるか否かを判別する。この答がNOのときには、ステップ52〜54において、以下の(a)〜(c)の条件が成立しているか否かをそれぞれ判別する。
(a)エンジン回転数NEが所定回転数NEREF(例えば700rpm)以下であること
(b)車速VPが所定値VPREF(例えば1km/h)以下であること
(c)アクセル開度APが所定値APREF(例えば1゜)以下であること
これらのステップ52〜54の答のいずれかがNOで、(a)〜(c)の条件のいずれかが成立していないときには、エンジン3がアイドル運転状態でないと判定し、本処理を終了する。
一方、ステップ52〜54のすべての答がYESのときには、エンジン3がアイドル運転状態である判定し、そのときの燃料噴射量TCYLを停止前燃料噴射量TCYLIGOFとして設定し(ステップ54)、本処理を終了する。また、前記ステップ51の答がYESでイグニッションスイッチ21がオフ状態のときには、そのまま本処理を終了する。以上のように算出される結果、停止前燃料噴射量TCYLIGOFは、イグニッションスイッチ21のオフ直前のアイドル運転状態において、気筒3a内に噴射された燃料量を表す。
図5に戻り、ステップ21に続くステップ22では、2段目制御実行フラグF_IGOFFTH2が「1」であるか否かを判別する。この2段目制御実行フラグF_IGOFFTH2は、上述した2段目制御の実行中に「1」にセットされ、それ以外のときには「0」にセットされるものである。このステップ22の答がYESのときには、そのまま本処理を終了する。
一方、ステップ22の答がNOのときには、ステップ23において、フューエルカットフラグF_IGOFFFCが「1」であるか否かを判別する。この答がNOで、イグニッションスイッチ21のオフ後に、エンジン3への燃料供給の停止がまだ完了していないときには、1段目制御実行フラグF_IGOFFTH1および2段目制御実行フラグF_IGOFFTH2をそれぞれ「0」にセットする(ステップ24,25)とともに、目標開度ICMDTHIGOFを値0に設定し(ステップ26)、本処理を終了する。
一方、上記ステップ23の答がYESで、エンジン3への燃料供給の停止が完了しているときには、そのときの大気圧PAに応じて、前述した図11のマップからマップ値DNEICOFPAを検索し、設定用PA補正項dneicofpaxとして設定する(ステップ27)。
次に、ステップ28において、そのときの吸気温TAに応じて、前述した図12のマップからマップ値DNEICOFTAを検索し、設定用TA補正項dneicoftaxとして設定する。
次に、ステップ29において、エンジン水温TWが所定温度TWIGOFFTHRL(例えば80℃)よりも高いか否かを判別する。この答がNOで、エンジン水温TWが所定温度TWIGOFFTHRL以下のときには、ステップ30において、設定用FW補正項dneicoffwxを0に設定し、ステップ32に進む。
一方、上記ステップ29の答がYESのときには、ステップ31において、前記ステップ21で読み出した停止前燃料噴射量TCYLIGOFに応じて、前述した図15のマップからマップ値DNEICOFFWを検索し、設定用FW補正項dneicoffwxとして設定する。
ステップ30またはステップ31に続くステップ32では、図4のステップ12で設定された目標停止制御開始回転数NEICOFREFXと、上記のように算出された設定用PA補正項dneicofpax、設定用TA補正項dneicoftaxおよび設定用FW補正項dneicoffwxを用い、次式(5)によって、補正後目標停止制御開始回転数NEICOFREFNを算出する。
NEICOFREFN
=NEICOFREFX+dneicofpax+dneicoftax
+dneicoffwx ・・・・(5)
前述したように、設定用PA補正項dneicofpaxは、大気圧PAが高いほど、より大きな値に設定されているので、補正後目標停止制御開始回転数NEICOFREFNは、大気圧PAが高いほど、より大きな値に補正される。これは以下の理由による。
大気圧PAが高いほど、吸気の密度が高く、ピストン3dに対する吸気の抵抗が大きいので、エンジン回転数NEの低下速度は大きくなる。また、目標開度ICMDTHIGOFに基づく制御信号が出力された後、スロットル弁13aがそれに対応した開度になるまでに遅れを伴い、その後、吸気量がその開度に見合う大きさになるまでに、さらに遅れを伴う。したがって、大気圧PAが高いほど、補正後目標停止制御開始回転数NEICOFREFNをより大きな値に補正し、2段目制御をより早いタイミングで開始することによって、上記のようなスロットル弁13aの動作および吸気の遅れの影響を適切に補償することができる。
また、設定用TA補正項dneicoftaxは、吸気温TAが低いほど、より大きな値に設定されているので、補正後目標停止制御開始回転数NEICOFREFNは、吸気温TAが低いほど、より大きな値に補正される。吸気温TAが低いほど、ピストン3dが摺動する際の摩擦が大きいとともに、吸気の密度が高いので、エンジン回転数NEの低下速度は大きくなる。したがって、吸気温TAが低いほど、補正後目標停止制御開始回転数NEICOFREFNをより大きな値に補正し、2段目制御をより早いタイミングで開始することによって、スロットル弁13aの動作および吸気の遅れの影響を適切に補償することができる。
また、設定用FW補正項dneicoffwxは、停止前燃料噴射量TCYLIGOFが大きいほど、より小さな値に設定されているので、補正後目標停止制御開始回転数NEICOFREFNは、停止前燃料噴射量TCYLIGOFが大きいほど、より小さな値に補正される。停止前燃料噴射量TCYLIGOFが大きいほど、気筒3aに残留する燃料量が多いので、それが燃焼されることによって、エンジン3の慣性力が増加し、エンジン回転数NEの低下速度は小さくなる。したがって、停止前燃料噴射量TCYLIGOFが大きいほど、補正後目標停止制御開始回転数NEICOFREFNをより小さな値に補正し、2段目制御をより遅いタイミングで開始することによって、内燃機関の回転数を十分に抑制することができる。
次に、ステップ33において、補正後目標停止制御開始回転数NEICOFREFNに所定値DNEICOFPREを加算した値(=NEICOFREFN+DNEICOFPRE)を、1段目制御開始回転数NEICOFPREとして算出する。
次に、ステップ34において、エンジン回転数NEが、算出された1段目制御開始回転数NEICOFPREよりも小さいか否かを判別する。この答がNOで、NE≧NEICOFPREのときには、前記ステップ24〜26を実行し、本処理を終了する。
一方、上記ステップ34の答がYESで、エンジン回転数NEが1段目制御開始回転数NEICOFPREを下回ったときには、1段目制御実行フラグF_IGOFFTH1が「1」であるか否かを判別する(ステップ35)。この答がNOで、1段目制御がまだ実行されていないときには、目標開度ICMDTHIGOFを1段目制御用の第1所定開度ICMDOFPREに設定する(ステップ36)とともに、1段目制御の実行中であることを表すために、1段目制御実行フラグF_IGOFFTH1を「1」にセットし(ステップ37)、本処理を終了する。
一方、上記ステップ34の答がYESで、1段目制御の実行中のときには、ステージ番号STGが「0」であるか否かを判別する(ステップ38)。この答がNOのとき、すなわち、いずれの気筒3aも圧縮行程の中期に相当していないときには、前記ステップ36および37を実行し、本処理を終了する。
一方、上記ステップ38の答がYESで、ステージ番号STGが「0」のとき、すなわち、いずれかの気筒3aが圧縮行程の中期に相当しているときには、エンジン回転数NEが前記ステップ31で算出された補正後目標停止制御開始回転数NEICOFREFNよりも小さいか否かを判別する(ステップ39)。この答がNOで、NEICOFREFN≦NE<NEICOFPREのときには、前記ステップ36および37を実行することによって、1段目制御を継続するようにし、本処理を終了する。
一方、上記ステップ39の答がYESのとき、すなわちステージ番号STGが「0」であり、かつエンジン回転数NEが補正後目標停止制御開始回転数NEICOFREFNを下回ったときには、ステップ40において、そのときのエンジン回転数NEを、停止制御に用いた実際の停止制御開始回転数NEIGOFTHとして記憶し、そのときの大気圧PAおよび吸気温TAを、停止制御時の大気圧PA0および吸気温TA0としてそれぞれ記憶する(ステップ41,42)とともに、停止前燃料噴射量TCYLIGOFを停止制御に用いた停止前燃料噴射量TCYLIGOF0として記憶する(ステップ43)。記憶された停止制御開始回転数NEIGOFTHは前記式(1)に用いられ、大気圧PA0、吸気温TA0および停止前燃料噴射量TCYLIGOF0はそれぞれ、図4のステップ7〜9において、学習用PA補正項dneicofrpa、学習用TA補正項dneicofrtaおよび学習用FW補正項dneicofrfwの算出に用いられる。
ステップ43に続くステップ44では、2段目制御処理を実行する。図8は、この2段目制御処理を示す。本処理ではまず、ステップ61において、補正後目標停止制御開始回転数NEICOFREFNと実際の停止制御開始回転数NEIGOFTHとの差(=NEICOFREFN−NEIGOFTH)を、偏差DNEIGOFTHとして算出する。
次に、ステップ62において、この偏差DNEIGOFTHが所定の第1判定値DNEIGOFTHLよりも小さいか否かを判別する。この答がYESのときには、偏差DNEIGOFTHが小さいとして、そのことを表すために回転数偏差フラグF_DNEIGOFTHを「0」にセットする(ステップ63)とともに、目標開度ICMDTHIGOFを2段目制御用の第2所定開度ICMDOF2に設定する(ステップ64)。この第2所定開度ICMDOF2は、1段目制御用の第1所定開度ICMDOFPREよりも大きい。
一方、上記ステップ62の答がNOで、DNEIGOFTH≧DNEIGOFTHLのときには、補正後目標停止制御開始回転数NEICOFREFNと実際の停止制御開始回転数NEIGOFTHとの差が大きいとして、そのことを表すために回転数偏差フラグF_DNEIGOFTHを「1」にセットした(ステップ65)後、偏差DNEIGOFTHが、第1判定値DNEIGOFTHLよりも大きな所定の第2判定値DNEIGOFTHH以上であるか否かを判別する(ステップ66)。この答がYESで、DNEIGOFTH≧DNEIGOFTHHのときには、前記ステップ64に進み、目標開度ICMDTHIGOFを第2所定開度ICMDOF2に設定し、本処理を終了する。
一方、上記ステップ66の答がNOで、DNEIGOFTHL≦DNEIGOFTH<DNEIGOFTHHのときには、目標開度ICMDTHIGOFを第3所定開度ICMDOF3に設定し(ステップ67)、本処理を終了する。この第3所定開度ICMDOF3は、第1所定開度ICMDOFPREよりも大きく、第2所定開度ICMDOF2よりも小さい。
図6に戻り、ステップ44に続くステップ45では、2段目制御の実行中であることを表すために、2段目制御実行フラグF_IGOFFTH2を「1」にセットし(ステップ48)、本処理を終了する。
図9および図10は、最終圧縮行程回転数NEPRSFTGTの算出処理を示す。本処理ではまず、ステップ71において、2段目制御実行フラグF_IGOFFTH2が「1」であるか否かを判別する。この答がNOで、2段目制御の実行中でないときには、最終圧縮行程回転数NEPRSFTGTを値0に設定し(ステップ72)、本処理を終了する。
一方、上記ステップ71の答がYESで、2段目制御の実行中のときには、初期化終了フラグF_TDCTHIGOFINIが「1」であるか否かを判別する(ステップ73)。この答がNOのときには、その時点の気筒番号CUCYLをその前回値CUCYLIGOFTHZにシフトする(ステップ74)。また、2段目制御開始後のTDCの発生回数を計測するTDCカウンタ値CTDCTHIGOFを0にリセットする(ステップ75)とともに、以上の初期化処理が終了したことを表すために、初期化終了フラグF_TDCTHIGOFINIを「1」にセットし(ステップ76)、後述するステップ80に進む。
一方、上記ステップ73の答がYESで、上記の初期化処理がすでに行われているときには、気筒番号の前回値CUCYLIGOFTHZと、その時点の気筒番号CUCYLが一致しているか否かを判別する(ステップ77)。この答がYESのときには、後述するステップ80に進む。
一方、上記ステップ77の答がNOで、CUCYLIGOFTHZ≠CUCYLのときには、TDCが発生したとして、TDCカウンタ値CTDCTHIGOFをインクリメントする(ステップ78)とともに、その時点の気筒番号CUCYLを、その前回値CUCYLIGOFTHZにシフトし(ステップ79)、ステップ80に進む。
このステップ80では、ステージ番号STGが「0」であるか否かを判別し、ステップ81では、エンジン回転数NEが0であるか否かを判別する。このステップ80の答がNOで、いずれの気筒3aも圧縮行程の中期に相当していないとき、または、ステップ81の答がYESで、エンジン3が完全に停止しているときには、本処理を終了する。
一方、ステップ80の答がYESで、いずれかの気筒3aが圧縮行程の中期に相当し、かつステップ81の答がNOで、エンジン3がまだ完全に停止していないときには、ステップ82において、最終圧縮行程回転数の暫定値NEPRSFがその時点のエンジン回転数NEよりも大きいか否かを判別する。この答がNOで、NEPRSF≦NEのときには、本処理を終了する。
一方、上記ステップ82の答がYESで、NEPRSF>NEのときには、エンジン回転数NEを最終圧縮行程回転数の暫定値NEPRSFとして記憶した(ステップ83)後、ステップ84において、最終圧縮行程回転数算出完了フラグF_SETPRSFTGTが「1」であるか否かを判別する。この答がYESで、最終圧縮行程回転数NEPRSFTGTの算出がすでに完了しているときには、本処理を終了する。
一方、ステップ84の答がNOで、最終圧縮行程回転数NEPRSFTGTの算出がまだ完了していないときには、TDCカウンタ値CTDCTHIGOFが所定値NTDCIGOFTHに等しいか否かを判別する(ステップ85)。この所定値NTDCIGOFTHは、2段目制御の開始後に、何回目のTDCが最終の圧縮行程になるかを実験などによりあらかじめ求めたものであり、本実施形態では例えば値3に設定されている。
このステップ85の答がNOのときには、最終の圧縮行程ではないとして、前記ステップ72に進み、最終圧縮行程回転数NEPRSFTGTを値0に設定し、本処理を終了する。
一方、上記ステップ85の答がYESのときには、最終の圧縮行程であるとして、前記ステップ83で記憶された暫定値NEPRSFを最終圧縮行程回転数NEPRSFTGTとして算出する(ステップ86)。また、最終圧縮行程回転数算出完了フラグF_SETPRSFTGTを「1」にセットし(ステップ87)、本処理を終了する。このようにして算出された最終圧縮行程回転数NEPRSFTGTは、次回の停止制御において、前記式(1)に適用され、目標停止制御開始回転数NEICOFREFXの設定に用いられる。
図11は、点火プラグの点火制御処理を示す。本処理ではまず、ステップ91において、フューエルカットフラグF_IGOFFFCが「1」であるか否かを判別する。この答がNOで、イグニッションスイッチ21のオフ後に、エンジン3への燃料供給の停止がまだ完了していないときには、ステップ92において、点火プラグ7による点火を実行する。具体的には、ピストン3dが圧縮行程の上死点付近の所定のクランク角度位置になったときに点火を行い、本処理を終了する。
一方、上記ステップ91の答がYESで、エンジン3への燃料供給の停止が完了しているときには、ステップ93において、1段目制御実行フラグF_IGOFFTH1が「1」であるか否かを判別する。この答がNOで、1段目制御がまだ開始されていないときには、前記ステップ92を実行し、点火を継続するようにし、本処理を終了する。
一方、上記ステップ93の答がYESで、1段目制御が開始された後には、ステップ94において、点火プラグ7による点火を停止し、本処理を終了する。
図17は、これまでに説明した実施形態のエンジン3の停止制御処理によって得られる動作例を、比較例とともに示す。同図(a)に示す実施形態では、前述したように、停止前燃料噴射量TCYLIGOFが大きいほど、1段目制御開始回転数NEICOFPRE、および2段目制御を開始する目標停止制御開始回転数NEICOFREFXがそれぞれ小さくなるように補正するのに対し、同図(b)に示す比較例は、そのような補正を行わない例である。
このため、比較例では、停止前燃料噴射量TCYLIGOFが少ない場合(実線)と多い場合(破線)との間で、1段目制御開始回転数NEICOFPREおよび目標停止制御開始回転数NEICOFREFXは変わらない。その結果、停止前燃料噴射量TCYLIGOFが少なく、気筒内3aに残留した燃料が少ない場合には、前述した停止制御が行われることによって、最終圧縮行程回転数NEPRSFTGTが基準値NENPFLMT0にほぼ一致し、ピストン3dがTDCの手前の所望のクランク角度位置で停止し、バルブオーバーラップが回避される。しかし、停止前燃料噴射量TCYLIGOFが多く、気筒内3aに残留した燃料が多い場合には、それが燃焼されることによるエンジン3の慣性力が増大しており、エンジン回転数NEの低下速度は小さくなっている。その結果、最終圧縮行程回転数NEPRSFTGTが基準値NENPFLMT0よりも大きな値になり、ピストン3dが所望のクランク角度位置よりも先のTDCで停止し、バルブオーバーラップが発生する。
これに対し、実施形態では、停止前燃料噴射量TCYLIGOFに応じた補正により、1段目制御開始回転数NEICOFPREおよび補正後目標停止制御開始回転数NEICOFREFNは、停止前燃料噴射量TCYLIGOFが少ない場合(実線)には、より大きな値に設定され、多い場合(破線)には、より小さな値に設定される。したがって、例えば、停止前燃料噴射量TCYLIGOFが大きい場合には、1段目制御が開始されるまでの全閉制御の期間が長く確保されるので、残留した燃料の燃焼によりエンジン3の慣性力が増大し、エンジン回転数NEの低下速度が大きくなっているときでも、エンジン回転数NEを十分に抑制できる。その結果、停止前燃料噴射量TCYLIGOFの大きさにかかわらず、最終圧縮行程回転数NEPRSFTGTが基準値NENPFLMT0にほぼ一致し、ピストン3dがTDCの手前の所望のクランク角度位置で停止し、バルブオーバーラップが回避される。
以上のように、本実施形態によれば、イグニッションスイッチ21がオフされた後に、点火プラグ7による点火を実行することによって気筒3a内の燃料を燃焼させるので、エンジン3の再始動時における始動性と排ガス特性を向上させることができる。
また、イグニッションスイッチ21がオフされる前の停止前燃料噴射量TCYLIGOFが大きいほど、1段目制御開始回転数NEICOFPREおよび目標停止制御開始回転数NEICOFREFXをより小さくなるように補正するので、スロットル弁13aの1段目制御が開始されるまでの全閉制御の期間を長くすることができる。したがって、エンジン3の停止時に気筒3a内に残留する燃料量に応じて、ピストン3dをバルブオーバーラップが発生しない位置に精度良く停止させることができる。
また、エンジン3がアイドル運転状態のときに停止前燃料噴射量TCYLIGOFを取得するので、イグニッションスイッチ21がオフされる前に、運転者のアクセル操作によりエンジン回転数NEが一時的に上昇した場合でも、この操作に伴って一時的に増加した燃料噴射量TCYKLは、停止前燃料噴射量TCYLIGOFとしては算出されない。したがって、そのような一時的に増加した燃料の供給量に応じて1段目制御開始回転数NEICOFPREおよび目標停止制御開始回転数NEICOFREFXが過大に補正されることを、回避することができる。
また、エンジン水温TWが所定温度TWIGOFTHRL以下のときに、停止前燃料噴射量TCYLIGOFに応じた目標停止制御開始回転数NEICOFREFNの補正を禁止するので、エンジン3の温度が低く、ピストン3dの摩擦が大きいときでも、ピストン3dを所定位置に精度良く停止させることができる。
また、1段目制御が開始されるまで、点火を実行するので、気筒3a内に残留した燃料を最大限、燃焼させることができる。また、1段目制御が開始されたときに点火を停止するので、気筒3a内の燃料が完全に燃焼されなかった場合でも、残留した燃料の燃焼によりエンジン回転数NEが急激に上昇することを防止することができる。
なお、本発明は、説明した実施形態に限定されることなく、種々の態様で実施することができる。例えば、実施形態では、エンジン3の停止時に、スロットル弁13aの2段目制御に先立ち、1段目制御を実行しているが、1段目制御は省略してもよい。この場合には、点火プラグ7の点火は、エンジン回転数NEが補正後目標停止制御開始回転数NEICOFREFNを下回るまで、継続される。
また、実施形態では、イグニッションスイッチ21がオフされたときに、エンジン3の停止条件が成立したとして、エンジン3の停止制御を実行しているが、これに代えて、所定のアイドルストップ条件が成立したときにエンジン3を自動的に停止させるアイドルストップが行われる場合に、アイドルストップ条件の成立後に停止制御を実行してもよい。
さらに、実施形態では、吸気量を調整するための吸気量調整弁として、スロットル弁13aを用いているが、これに代えて、吸気リフト可変機構によって吸気リフトを変更可能な吸気弁を用いてもよい。
また、実施形態は、本発明を車両に搭載されたガソリンエンジンに適用した例であるが、本発明は、これに限らず、ガソリンエンジン以外のディーゼルエンジンなどの各種のエンジンに適用してもよく、また、車両用以外のエンジン、例えば、クランク軸を鉛直に配置した船外機などのような船舶推進機用エンジンにも適用可能である。その他、本発明の趣旨の範囲内で、細部の構成を適宜、変更することが可能である。