図1は、この発明の実施例に係る内燃機関の制御装置を全体的に示す概略図である。
図1において、符号10は、FFV(図示せず)に搭載される、4気筒(シリンダ)4サイクルの内燃機関(1気筒のみ図示。以下「エンジン」という)を示す。エンジン10において、エアクリーナ12から吸入されて吸気管14を通る吸入空気量はスロットルバルブ(弁)16で流量を調節されて吸気マニホルド18を流れ、2個の吸気バルブ(1個のみ図示)20が開弁されるとき、燃焼室に流入する。
スロットルバルブ16は、FFV運転席床面に配置されたアクセルペダル(図示せず)との機械的な接続を絶たれ、DCモータ(アクチュエータ)22に接続され、DCモータ22で駆動されて開閉する。このように、スロットルバルブ16の開度はDBW(Drive By Wire)方式で制御される。
吸気バルブ20の手前の吸気ポート付近には、メイン・インジェクタ24が配置される。メイン・インジェクタ24には、メイン燃料タンク26に貯留され、メイン燃料タンク26の内部に配置されたメイン燃料ポンプ28で汲み上げられる燃料がメイン燃料供給管30を介して圧送される。
メイン燃料タンク26に貯留される燃料としては、ガソリンとエタノール(エチルアルコール)の混合燃料、具体的にはガソリン78%とエタノール22%の混合燃料(E22)からガソリン0%とエタノール100%のエタノール燃料(E100)までの間のアルコール燃料が予定される。尚、アルコール燃料はガソリンに比して理論空燃比がリッチ側にずれると共に、そのずれはアルコール濃度の増加につれて拡大する。
吸気ポート付近においてメイン・インジェクタ24の上流側には、サブ・インジェクタ32が配置される。サブ・インジェクタ32には、サブ燃料タンク34に貯留されてサブ燃料ポンプ36で汲み上げられるサブ燃料がサブ燃料供給管38を介して圧送される。サブ燃料としては、ガソリン燃料、E22燃料などが使用される。
メイン・インジェクタ24とサブ・インジェクタ32は、駆動回路(図示せず)を通じてECU(Electronic Control Unit。電子制御ユニット)40に電気的に接続され、ECU40から開弁時間を示す駆動信号が駆動回路を通じて供給されると開弁し、開弁時間に応じた燃料を吸気ポートに噴射する。噴射された燃料は、流入した空気と混合して混合気(予混合気)を形成し、吸気バルブ20が開弁されるとき、燃焼室に流入する。サブ燃料は、エンジン10の始動時にのみ使用される。
燃焼室には点火プラグ44が配置される。点火プラグ44はイグナイタなどからなる点火装置(図示せず)に接続される。点火装置はECU40から点火信号が供給されると、点火プラグ44の電極間に火花放電を生じさせる。混合気はそれによって着火されて燃焼し、ピストン46を下方に駆動する。
ピストン46を包み込むシリンダブロックの下部のクランクケース48の内部には、ピストン46に接続され、ピストン46の上下運動を回転運動に変換するクランクシャフト(図示せず。50はそれに取り付けられるパルサプレートを示す)が収容される。クランクケース48の下部は、オイル(潤滑油)を受けるオイルパンを構成する。
燃焼によって生じた排気(排ガス)は、2個の排気バルブ(図示せず)が開弁するとき、排気ポート52を通って排気管54に流れる。排気管54には、(2床の三元触媒からなる)触媒装置56が配置される。排気は、触媒装置56が活性状態にあるとき、HC,CO,NOxなどの有害成分を除去されてエンジン外の大気に放出される。
メイン燃料タンク26とサブ燃料タンク34の液面上方空間はチャージ通路58,60を介してキャニスタ62に接続されると共に、キャニスタ62はパージ通路64を介して吸気管14にスロットルバルブ16の配置位置の下流で接続される。パージ通路64には電磁バルブからなるパージ制御バルブ64aが設けられ、励磁されるとき、パージ通路64を開放する。
上記した構成において、メイン燃料タンク26とサブ燃料タンク34から蒸発した燃料蒸気はチャージ通路58,60を通ってキャニスタ62に流れ、その内部に収容された吸着材62aに吸着される。キャニスタ62の内部はパージ制御バルブ64aが励磁されるとき、吸気管14から負圧が作用し、吸着された燃料蒸気は大気開放孔62bから導入される新気と共に、パージ通路64を通って吸気系にパージされる。
クランクケース48の上部はPCV(Positive Crankcase Ventilation)用の孔が穿設され、吸気管14のスロットルバルブ16の配置位置の下流と還流通路68で接続される。還流通路68にはチェックバルブ68aが設けられ、クランクケース内のオイルに混入したアルコール蒸気は、所定圧以上となるとチェックバルブ68aを押し開き、還流通路68を通ってブローバイガスとして吸気系にパージされる。
シリンダブロックの上のシリンダヘッドには油圧で動作する動弁機構70が設けられ、吸気バルブ20のバルブタイミングとリフト量を高低2種のエンジン出力特性の間で変更(換言すれば、吸入空気量を調整する吸気バルブ20の開度を変更)する。
尚、エンジン10の出力はAT(自動変速機)に送られ、そこで変速されて駆動輪に伝達されるが、ATなどの図示は省略する。
エンジン10のクランクシャフトの付近にはクランク角センサ72が配置され、前記したパルサプレート50の回転から気筒判別信号と、各気筒のTDC(上死点)あるいはその付近のクランク角度を示すTDC信号と、TDC信号を細分してなるクランク角度信号とを出力する。
エアクリーナ12の付近には温度検出素子を備えたエアフローメータ74が配置され、エアクリーナ12から吸入される空気(吸気)量Qと吸気温度TAに応じた信号を出力する。
吸気管14においてスロットルバルブ16の下流にはMAPセンサ76が配置され、吸気管内圧力PBAを絶対圧で示す信号を出力すると共に、スロットルバルブ16にはスロットル開度センサ78が配置され、スロットルバルブ16の位置、即ち、スロットル開度THに応じた信号を出力する。
エンジン10の冷却水通路(図示せず)には水温センサ80が配置されてエンジン冷却水温、即ち、エンジン温度TWに応じた信号を出力すると共に、シリンダブロックにはノックセンサ82が配置され、ノックに起因してエンジン10に生じる振動に応じた信号を出力する。
排気系において触媒装置56の上流には広域空燃比センサ84が配置され、理論空燃比からリッチあるいはリーンに至るまでの広い範囲において排気中の酸素濃度に応じた信号を出力する。広域空燃比センサ84の出力に基づき、検出空燃比KACTが当量比で算出される。また、触媒装置56の触媒床の間にはO2センサ86が配置され、排気中の酸素濃度が理論空燃比からリッチあるいはリーンに変化するたびに反転する信号を出力する。
メイン燃料タンク26にはフューエルレベルセンサ88が配置され、燃料の液面高さに応じた信号を出力する。
アクセルペダルの付近にはアクセル開度センサ90が設けられ、運転者のアクセルペダル踏み込み量を示すアクセル位置(エンジン負荷を示す)APに応じた信号を出力する。ドライブシャフト(図示せず)の付近には車速センサ92が設けられ、ドライブシャフトの回転当たりにパルス信号を出力すると共に、FFVの適宜位置には大気圧センサ94が設けられ、大気圧PAに応じた信号を出力する。
上記したセンサ群の出力は、ECU40に入力される。ECU40はマイクロコンピュータからなり、CPU,ROM,RAM,A/D変換回路、入出力回路およびカウンタ(全て図示せず)を備える。ECU40は入力信号の内、クランク角度信号をカウントしてエンジン回転数NEを算出(検出)すると共に、車速センサ92の出力をカウントして車速VPを算出(検出)する。
ECU40は入力値と算出値に基づき、ROMに格納されている命令に従い、続いて述べるように、燃料噴射量などを算出すると共に、エンジン回転数NEと吸気管内絶対圧PBAとから吸気バルブ20のバルブタイミングとリフト量を高低2種の特性の間で変更する。
図2は、そのECU40の動作を機能的に説明するブロック図である。
符号40aは燃料噴射量算出ブロックを示し、そこにおいては検出された運転状態に応じてエンジン10に供給すべき燃料噴射量TOUTが算出される。
即ち、エンジン負荷に応じて基本燃料噴射量TIMが算出されると共に、検出された空燃比KACTを目標空燃比KCMDに制御する空燃比フィードバック制御においてそれらの偏差に応じて空燃比補正係数(空燃比フィードバック補正係数)KAFが算出され、さらにアルコール濃度補正係数(アルコール濃度学習値)KREFBSなど、その他の補正係数が算出されて基本燃料噴射量が補正されることで、燃料噴射量TOUTが算出される。
燃料噴射量算出ブロック40aでは、空燃比補正係数KAFの制限値が設定されると共に、アルコール濃度が学習されるときの制限値の変更の際、空燃比補正係数KAFが制限値に達したとき、制限値を変更する如く構成される。
算出された燃料噴射量TOUTに基づき、メイン・インジェクタ24が駆動される。尚、アルコール燃料はエンジン冷却水温TWが低いときに始動性が悪いことから、エンジン10の始動時にはメイン・インジェクタ24に加え、サブ・インジェクタ32を駆動してサブ燃料が噴射される。
符号40bはアルコール濃度学習ブロックを示し、そこにおいては空燃比補正係数KAFに基づいて燃料に含まれるアルコール濃度が学習される。即ち、空燃比補正係数KAFをなましてアルコール濃度学習値KREFXを算出し、それを前回のアルコール濃度補正係数KREFBSに乗算して補正することでアルコール濃度補正係数KREFBSが更新される。アルコール濃度補正係数KREFBSは、ブロック40aに送られる。
図3を参照してアルコール濃度学習を説明すると、この実施例では空燃比補正係数KAFをなまして得たアルコール濃度学習値KREFXに基づいてアルコール濃度が学習(検出)される。燃料としてE100からE22までを予定するが、アルコール濃度補正係数KREFBSはその中間のE64に相当する値(1.0。補正なし)となるように初期値が設定される。
図3の左端に示す如く、E64使用時、給油により燃料がE100に切り替えられたとすると、それに応じて空燃比補正係数KAFとそれをなましたアルコール濃度学習値KREFXは変化し、アルコール濃度補正係数は1.2に修正される。
その後、最下部のフラグF_REFUELFFV(給油判定)のビットの変化に示すようにアイドル中に給油により燃料がE22に切り替えられたとすると、空燃比補正係数KAFと学習値KREFXは反転し、アルコール濃度補正係数は0.8に修正される。
尚、学習は、学習準備完了を示すフラグF_KALCOKがオンされているとき、フューエルカット実行を示すフラグF_FCがオンされているときに実行される。また、給油判定後は、パージ許可を示すフラグF_FFVPGGOがオフされて旧燃料が消費されるまでパージが停止されるが、その間は学習も待機させられる。
図2の説明に戻ると、符号40cは点火時期算出ブロックを示し、そこにおいては検出された運転状態に応じてエンジン10に供給すべき点火時期が算出され、それに基づいて点火装置を介して点火プラグ44の点火が制御される。
図4は点火時期算出ブロック40cの処理の一部である点火時期の遅角限界値の算出処理を示すフロー・チャートである。図示のプログラムは、それぞれの気筒のTDC付近の所定クランク角度で実行される。
以下説明すると、S10においてトルクショック抑制用に点火時期を遅角させるためのトルクショック遅角量が設定されているか否か判断する。
図5は、点火時期算出ブロック40cの処理の一部を示すブロック図であり、図示の如く、点火時期算出ブロック40cは、主としてトルクショック抑制用に点火時期を遅角させるためのトルクショック遅角量を設定するブロック40c1と、主としてノック発生時に点火時期を遅角させるためのノック遅角量を設定するブロック40c2を備える。
トルクショック遅角量は、過渡時のトルクショック抑制遅角量IGACCRと、スロットル開度急変時のノック抑制遅角量IGKARIと、フューエルカットからの復帰時の遅角量IGAFCRと、AT(自動変速機)の変速ショック抑制遅角量IGATRの4種からなる。
ノック遅角量は、ノックセンサ82がノックを検出したときに設定される遅角量IGKNOCKと、吸気温度TAに応じて設定されるノック補正量IGTAと、エンジン冷却水温TWに応じて設定されるIGTWRの3種からなる。ノック遅角量は、それらを合算することで最終的に設定(算出)される。
IGTAは、吸気温度TAが所定温度(例えば35℃)未満では0となり、所定温度以上の場合は高温になるほどその値が大きくなるが、ある高温(例えば100℃)を超えると所定の一定値となるように設定される。IGTWRは、エンジン冷却水温TWが所定温度(例えば85℃)未満では0となり、所定温度以上の場合は高温になるほどその値が大きくなるが、ある高温(例えば115℃)を超えると所定の一定値となるように設定される。
上記した2種の遅角量の内、S10においてはブロック40c1で算出されるトルクショック遅角量が設定されているか否か判断する。
S10で肯定されるときはS12に進み、フラグF_KREFBSONのビットが1にセットされているか否か判断する。このフラグは別ルーチンにおいてアルコール濃度補正係数の更新、換言すればアルコール濃度の学習の実行が終了するときそのビットが1にセットされることから、S12の判断はアルコール濃度の学習が完了したか否か判断することに相当する。
S12で肯定されるときはS14に進み、算出されたアルコール濃度補正KREFBSをそのまま点火時期算出用アルコール濃度KREFBSIGと設定する。これはアルコール濃度が高くなるにつれて遅角限界値が進角側に移動することから、点火時期を算出されたアルコール濃度に相応する値とするためである。
一方、S12で否定されるときはS16に進み、1.2を点火時期算出用アルコール濃度KREFBSIGと設定する。図3から明らかな如く、アルコール濃度補正係数KREFBS1.2は、E100を示す。
このようにS12からS16までの処理においてアルコール濃度の学習が完了したか否かによって遅角限界値を算出するためのアルコール濃度を持ち替える。また、アルコール濃度の学習が完了するまで、比較的高いアルコール濃度、より正確には最も高いアルコール濃度E100に応じて遅角限界値が設定されるようにすることで失火を確実に防止する。
次いでS18に進み、フラグF_VTECIGのビットが1にセットされているか否か判断する。このフラグは別ルーチンにおいて動弁機構70の特性が高い側の特性に設定されているときそのビットが1にセットされることから、S18の処理はそれを判断することに相当する。動弁機構70の特性によって判断するのは、それによってエンジン10の出力が相違するためである。
S18で肯定されるときはS20に進み、エンジン回転数NEと設定された点火時期算出用アルコール濃度KREFBSIGで図6に示す特性から値IGLGG0HMを検索し、検索値を遅角限界値IGLGGとする。
またS18で否定されるときはS22に進み、エンジン回転数NEと設定された点火時期算出用アルコール濃度KREFBSIGから図6に示す特性と類似する特性(図示せず)から値IGLGG0LMを検索し、検索値を遅角限界値IGLGGとする。
図6はエンジン回転数NEに対してE22とE65とE100の3種のアルコール濃度について設定された点火時期の遅角限界値IGLGG0HMの特性を示す説明グラフである。
点火時期は、基本点火時期からこの遅角限界値までの範囲内で算出される。即ち、図2の点火時期算出ブロック40cで算出された遅角量が上記の遅角限界値を遅角側に超える場合、算出された遅角量は遅角限界値に制限される。
尚、E22とE65とE100の間のアルコール濃度に相応する値は、補間によって求められる。これらの値IGLGG0HM(および図示しないIGLGG0LM)は、点火プラグ44の要求電圧に基づいた要求電圧遅角限界値である。
他方、S10で否定されるときはS24に進み、フラグF_KREFBSONのビットが1にセットされているか否か判断する。
S24で肯定されるときはS26に進み、S12以降の処理と同様、算出されたアルコール濃度補正KREFBSをそのまま点火時期算出用アルコール濃度KREFBSIGと設定すると共に、否定されるときはS28に進み、1.2を点火時期算出用アルコール濃度KREFBSIGと設定する。
次いでS30に進み、フラグF_VTECIGのビットが1にセットされているか否か判断し、肯定されるときはS32に進み、エンジン回転数NEで図示しない特性から値IGLGG1Hを検索し、検索値を仮値iglgg1とする。次いでS34に進み、S20の処理と同様、エンジン回転数NEと設定された点火時期算出用アルコール濃度KREFBSIGで図6に示す特性から値IGLGG0HMを検索し、検索値を仮値iglgg0とする。
他方、S30で否定されるときはS36,S38に進み、共に図示しない特性を検索してS32,S34と同様の処理を行う。
次いでS40に進み、仮値iglgg1,iglgg0の中でmax値、即ち、より進角側の値を選択し、遅角限界値IGLGGと確定する。
上記において、値IGLGG0LM,IGLGG0HMが点火プラグ44の要求電圧に基づいた要求電圧遅角限界値であるのに対し、値IGLGG1L,IGLGG1Hは触媒装置56を保護するための触媒保護遅角限界値であり、E22,E65,E100に共通に設定される。
トルクショック遅角量は比較的一過的な値であることから、点火プラグ44の失火限界だけを考慮してプラグ要求電圧遅角限界値から設定する一方、ノック遅角量は比較的長時間に及ぶことから、プラグ要求電圧遅角限界値と触媒保護遅角限界値の中で、より進角側の値を前記遅角限界値として設定する如く構成した。
図2の説明に戻ると、符号40dはスロットル開度制御値算出ブロックを示し、そこにおいてはスロットル開度THの制御値が算出され、それに基づいてDCモータ22が駆動される。
図7は、スロットル開度制御値算出ブロック40dの処理の一部である、プラグ保護用スロットル開度上限値算出処理を示すフロー・チャートである。図示のプログラムは10msecごとに実行される。
以下説明すると、S100においてフラグF_FSPAFFBのビットが1にセットされているか否か判断する。このフラグは別ルーチンにおいて空燃比フィードバック制御停止となる故障、例えば広域空燃比センサ84に故障が生じたとき、そのビットが1にセットされることから、S100の処理はそれを判断することに相当する。
S100で否定されるときはS102に進み、フラグF_FSA06のビットが1にセットされているか否か判断する。このフラグは別ルーチンにおいて水温センサ80に故障が生じたとき、そのビットが1にセットされることから、S102の処理はそれを判断することに相当する。
S102で否定されるときはS104に進み、フラグF_FSA10のビットが1にセットされているか否か判断する。このフラグは別ルーチンにおいてエアフローメータ74の温度検出素子に故障が生じたとき、そのビットが1にセットされることから、S104の処理はそれを判断することに相当する。
S104で否定されるときはS106に進み、フラグF_FSA23のビットが1にセットされているか否か判断する。このフラグは別ルーチンにおいてノックセンサ82に故障が生じたとき、そのビットが1にセットされることから、S106の処理はそれを判断することに相当する。
S106で否定されるときはS108に進み、フラグF_THOMXLGGのビットが1にセットされているか否か判断する。このフラグは後述するようにスロットル開度THなどの弁の開度を上限値に制限する制御が実行されるとき、そのビットが1にセットされることから、S108はその制御が実行されているか否か判断することに相当する。
S108で肯定されるときはS110に進み、フラグF_THIDLEのビットが1にセットされているか否か判断する。このフラグは別ルーチンにおいてスロットル開度THが所定のアイドル開度(スロットル全閉付近に設定される)よりも大きいとき、そのビットが1にセットされる。
S110で否定されてスロットル開度THがアイドル開度より大きくない、換言すればスロットルバルブ16が閉じられていると判断されるときはS112に進み、フラグF_KREFBSONのビットからアルコール濃度の学習が完了したか否か判断し、否定されるときはS114に進み、値KIGKNが所定値KIGTHLGGL以上か否か判断する。
値KIGKNはノックセンサ82の出力からノックが検出されるたびにインクリメントされるカウンタ値で、RON(Research Octane Number。リサーチオクタン価)の推定値に相当することから、S114の処理は燃料のオクタン価が所定値KIGTHLGGLに相当するオクタン価(例えば88RON)以下か否か判断することを意味する。
S114で肯定されるときはS116に進み、前記した点火時期の遅角量として算出される、吸気温度TAが所定値以上のときに設定されるノック補正量IGTAと、エンジン冷却水温TWが高いときに設定されるIGTWRとを合算し、その和DIGTATW(温度パラメータ)を算出する。
次いでS118に進み、和DIGTATWが所定値DIGTHLGGL以上か否か、換言すれば冷却水温TW、即ち、エンジン温度と吸気温度TAが高い、より具体的にはノックが生じ易い運転状態にあるか否か判断する。
S118で肯定されるときはS120に進み、フラグF_VTECのビットが1にセットされているか否か判断する。このフラグは、別ルーチンにおいて動弁機構70の特性がバルブリフト量の大きい高出力側の特性に設定されているとき、そのビットが1にセットされる。
S120で否定されるときはS122に進み、エンジン回転数NEから図8に示す特性を検索してスロットル開度THの上限値THOMXLGGXを算出する一方、S120で肯定されるときはS124に進み、同様にエンジン回転数NEから図9に示す特性を検索してスロットル開度THの上限値THOMXLGGXを算出する。
図8と図9に示す如く、スロットル開度THの上限値THOMXLGGXはエンジン回転数NEがNE1(例えば4000rpm)にあるときは全開相当値、換言すれば制限されない開度に設定されると共に、NE1を超えるにつれて徐々に減少させられ、図8の場合はNE2(例えば5500rpm)、図9の場合はNE2よりも高回転であるNE3を超えた後に、図示の如く、それぞれ所定の低開度TH1,TH2に設定される(TH1>TH2)。
これは、エンジン回転数NEがNE1を超えて増加するほどE100の遅角限界値が進角側となり、ノック発生時の遅角余裕が少なくなるため、それに応じてスロットル開度THを閉じ側に制限することでノックの発生を抑制するためである。
尚、図8と図9の対比から明らかな如く、動弁機構70の特性が高出力側の特性に設定されている場合、然らざる場合に比し、NE2を超えた後もTH1よりさらに低開度側のTH2に設定される。これは、高回転側ほどE100の遅角限界値が進角側となってノック発生時の遅角余裕が少なくなることと、吸入空気量を制限するに当たり、バルブリフト量が大きいほどスロットルバルブ16の開度を低開度側に設定する必要があるためである。
図7の説明に戻ると、次いでS126に進み、算出(検索)されたスロットル開度THの上限値THOMXLGGXが値THMAX以上か否か判断する。値THMAXは全開相当のスロットル開度(スロットル開度の最大値、具体的には83.3度)を意味する。
この値は、図8と図9においてNE1未満のときのスロットル開度の上限値THOMXLGGXと同一であり、従ってS126の判断はエンジン回転数NEが所定回転数(例えば4000rpm)未満か否か判断することに相当する。
S126で否定されてエンジン回転数NEが所定回転数以上と判断されるときはS128に進み、目標スロットル開度THO、より正確には前回の目標スロットル開度THOが、今回算出された上限値THOMXLGGXを超えるか否か判断する。尚、目標スロットル開度THOは、図2のスロットル開度制御値算出ブロック40dにおいて図示しないルーチンに従って同様に10msecごとに算出される。
S128で肯定されるときはS130に進み、前回の目標スロットル開度THOから微小値DTHTHLGG(例えば0.25度/10msec)を減算して得た差を補正値thomxlggとし、S132に進み、補正値thomxlggをスロットル開度THの最終上限値THOMXLGGとする。
即ち、目標スロットル開度THOが上限値THOMXLGGXを超えるときは、急変させず、徐々に上限値(最終上限値)THOMXLGGXに近づける。尚、thomxlggの最小値はTHOMXLGGXとし、thomxlggがTHOMXLGGXを下回らないようにする。
S128で否定されるときはS134に進み、算出されたスロットル開度THの上限値THOMXLGGXをそのまま最終上限値THOMXLGGとし、S136に進み、前記したフラグF_THOMXLGGのビットを1にセットする。
尚、図7の処理より算出されるスロットル開度THの制限値は、アルコール濃度の学習が完了していないときのノック対策を目的とするが、別の目的から図示しないルーチンに従ってスロットル開度THの制限値が算出されることもある。例えば特許文献2のように空燃比フィードバック制御を継続するために、図7の処理と平行してスロットル開度THの制限値が算出されることも考えられ、その場合には算出された制限値の中で最小値を選択することになる。
他方、S112で肯定されてアルコール濃度の学習が完了したと判断されるときはS138に進み、スロットル開度THの最終上限値THOMXLGGを前記したTHMAX(全開相当のスロットル開度)に設定、換言すれば図7の処理ではスロットル開度THを制限しないこととする。
次いでS140に進み、フラグF_THOMXLGGのビットを0にリセットする。先に述べた如く、このフラグのビットが1にセットされることは図7のスロットル開度THの上限値制限制御が実行されることを、0にリセットされることはその制御が実行されないことを意味する。
尚、S126で肯定されてスロットル開度THの上限値THOMXLGGXが全開相当のスロットル開度THMAX以上と判断されるとき、換言すれば図8(あるいは図9)においてエンジン回転数NEが4000rpm未満のときは、制限する必要がないため、S138に進む。
尚、S100からS106のいずれかで肯定されるときは、S112からS118までの処理をスキップしてS120以降に進み、スロットル開度THを上限値に制限する。
これは、空燃比フィードバック制御停止となる故障、例えば広域空燃比センサ84に故障が生じたときはアルコール濃度が学習できず、水温センサ80やエアフローメータ74の温度検出素子に故障が生じたときはS116で要求されるIGTWRやIGTAが算出できず、ノックセンサ82に故障が生じたときはS114のオクタン価の推定値を算出できないため、いずれにしてもスロットル開度THを制限してノックあるいは失火を防止する必要があるからである。
また、S110で肯定されてスロットル開度THがアイドル開度よりも大きいと判断されるときも、S112からS118までの処理をスキップしてS120以降に進む。
即ち、スロットル開度THの上限値はプログラムループのたびにS112以降に規定される条件が成立すれば検索されるが、S108で肯定されてスロットル開度THの上限値制限制御が既に実行されている場合、エンジン10の出力変動を可能な限り抑制する意図から、スロットル開度THがアイドル開度より大きいと判断されるときはS112からS118までの処理をスキップさせ、上限値の検索を中止させることとする。
従って、S108で否定される場合、スロットル開度THの上限値制限制御が実行されていないことから、エンジン10の出力が変動する恐れが少ないため、S110をスキップする。
また、S114あるいはS118で否定される、即ち、オクタン価が高い、あるいはエンジン水温TWや吸気温度TAが低い、換言すればノックが生じ難いと判断されるときにS138に進む。
これについて説明すると、この実施例にあってはアルコール濃度に応じて点火時期の遅角限界値IGLGGを設定しているため、例えばE100を使用するときには点火プラグ44の要求電圧に応じた遅角限界値を設定することで失火を防止できると共に、例えばE22の使用時には遅角限界値を一層遅角側に設定できてノックやトルクショックの抑制の遅角量も確保することができる。
また、アルコール濃度の学習が完了するまでは最も高いアルコール濃度E100に応じて遅角限界値を設定するので、点火プラグ44の失火を一層確実に防止することができる。
しかしながら、アルコール濃度の学習が完了するまではアルコール濃度E100に応じて遅角限界値を設定することで、アルコール濃度がE22に変更されたとき、E22のノックラインがE100の遅角限界値に張り付いてしまうことがある。
それについて図10を参照して説明すると、図10はE100に応じて設定される遅角限界値IGLGGに対するE22のノックラインを示し、同図(a)は基準ノックライン、即ち、吸気温度TA30℃、エンジン冷却水温TW80℃、オクタン価88RONのときのノックラインを示す。
同図(b)(c)はそれよりも高温のときのノックライン、即ち、同図(b)は吸気温度TA50℃、エンジン冷却水温TW105℃、オクタン価88RON、同図(c)は吸気温度TA30℃、エンジン冷却水温TW80℃、オクタン価85RONのときのノックラインを示す。
尚、ノックラインとは、定常状態におけるノック関連遅角量(IGKNOCK+IGTA+IGTWR)を考慮した最終点火時期で、これより進角側ではノックが発生する点火時期を意味する。図10においてE22のノックラインは、低負荷と高負荷の2種を示す。
図4の処理においてはアルコール濃度の学習が完了するまで、最も高いアルコール濃度E100に応じて遅角限界値IGLGGが設定されるが、給油などによって燃料のアルコール濃度が低い値に変更されることがある。図10(a)は最も低いアルコール濃度であるE22の基準ノックラインを示す。
アルコール濃度が低い場合は高い場合に比してノックが発生し易いことから、E22のノックラインは、図10(b)に示す如く、高温となると、エンジン回転数NEが4000rpmを超える付近から高負荷側でE100の遅角限界値に接近し、5500rpm付近で張り付いてしまう。さらに、図10(c)に示す如く、オクタン価も低下すると、ノックラインは一層遅角側に移行し、高負荷側ではその回転域で遅角限界値を遅角側に超えてしまう。
そこで、所定の運転状態においてスロットル開度THを制限して負荷を下げるようにした。即ち、図10(c)から明らかな如く、E22のノックラインが遅角側に移行しても、低負荷側であれば、E100用の遅角限界値IGLGGまでに若干の余裕があるからである。
これにより、給油などによって燃料のアルコール濃度が想定されている最も低濃度のアルコール燃料E22に変化したときも、ノック抑制のための遅角量を確保することができ、ノックを抑制することができる。尚、アルコール濃度において最も低いE22でも遅角量を確保できる限り、E100までの中間のアルコール濃度に変更されても支障ないことはいうまでもない。
他方、アルコール濃度の学習が完了するまで常にスロットル開度THを上限値に制限し続けると、運転者の加速要求に十分に応えられない恐れがある。その意図から、この実施例においては、スロットル開度THの上限値制限を必要最低限の運転状態(ノックを生じる所定の運転状態)においてのみ実行するようにした。
具体的には、エンジン回転数が所定回転数(例えば4000rpm)以上となる運転状態(S126)、あるいは燃料のオクタン価RONが所定オクタン価(例えば88RON)未満となる運転状態(S114)、あるいはエンジン温度(エンジン冷却水温)TWと吸気温度TAの少なくともいずれか、具体的にはその両者を含む温度パラメータが所定値以上の高温、より具体的にはエンジン温度TWが例えば95℃で吸気温度TAが例えば50℃以上の高温と判断される運転状態(S118)、で実行するようにした。
この実施例は上記の如く、クランク角度に対する点火時期を設定する点火時期設定手段(ECU40、点火時期算出ブロック40c)と、燃料に混合されたアルコール濃度を学習するアルコール濃度学習手段(ECU40、アルコール濃度学習ブロック40b)と、前記学習が完了している場合には学習されたアルコール濃度に応じて前記点火時期の遅角限界値IGLGGを設定する一方、前記学習が完了していない場合には所定のアルコール濃度、具体的には比較的高いアルコール濃度(例えばE95からE100)に応じて前記点火時期の遅角限界値IGLGGを設定する遅角限界値設定手段(ECU40,S10からS40)と、前記学習が完了するまで吸入空気量を調整する弁、より具体的にはスロットルバルブ16の開度を上限値THOMXLGGXに制限する弁開度制限手段(ECU40、スロットル開度制御値算出ブロック40d,S100からS140)とを備えた火花点火式の内燃機関(エンジン)10の制御装置(ECU40)において、前記燃料のオクタン価と機関温度と吸気温度のうちの少なくともいずれかを含むパラメータを検出し、前記検出されたパラメータに基づいてノックを生じる所定の運転状態にあるか否か判定する運転状態判定手段(S114からS118)とを備え、前記弁開度制限手段は、前記運転状態判定手段によって前記所定の運転状態にあると判定されるとき、前記学習が完了するまで前記弁の開度を前記上限値に制限し、前記学習が完了する前で且つ前記運転状態判定手段によって前記所定の運転状態にないと判定されるときは、前記上限値への制限を停止する(S112からS124,S138)如く構成したので、アルコール濃度の学習が完了せず、(高い場合に比して)ノックが発生し易い低いアルコール濃度の燃料であったとしても、スロットル開度THなどの弁の開度を制限することでエンジン10の負荷の上昇を抑制してノックを確実に抑制できる一方、弁の開度の制限をノックを生じる所定の運転状態に限定することで、加速性能の低下を可能な限り回避することができる。
尚、吸気バルブ20のリフト量を連続変化可能な手段を設け、吸気バルブ20によって吸入空気量を制御する場合には、スロットルバルブ16ではなく、吸気バルブ20の開度の上限値を設定するようにしても良い。
また、アルコール濃度に応じて点火時期の遅角限界値IGLGGを設定するので、比較的高いアルコール濃度の燃料を使用するときには点火プラグ44の要求電圧に応じた遅角限界値を設定することで失火を防止できると共に、比較的低いアルコール濃度の燃料の使用時には点火プラグ44の要求電圧を考慮しなくても良いため、遅角限界値をより遅角側に設定することができ、ノックやトルクショックの抑制の遅角量も確保することができる。
また、前記所定の運転状態は、前記所定のアルコール濃度(例えばE100)よりも低いアルコール濃度(例えばE22)においてノックを生じる運転状態である如く構成したので、上記したアルコール濃度が低い場合のノックの抑制と加速性能の低下の回避を最適に両立させることができる。尚、前記所定のアルコール濃度を例えばE100とするとき、それよりも低いアルコール濃度は具体的には、最も低いアルコール濃度E22を意味する。
また、前記所定の運転状態は、前記所定のアルコール濃度(例えばE100)よりも低いアルコール濃度(例えばE22)において、前記所定のアルコール濃度(E100)に応じて設定される遅角限界値IGLGG、より正確にはIGLGG0LM(E100)よりも遅角側でノックを生じる運転状態である如く構成したので、同様に上記したアルコール濃度が低い場合のノックの抑制と加速性能の低下の回避を最適に両立させることができる。
また、前記所定の運転状態は、機関回転数が所定回転数(例えば4000rpm)以上となる運転状態(S126)である如く構成したので、上記したアルコール濃度が低い場合のノックの抑制と加速性能の低下の回避を一層最適に両立させることができる。即ち、アルコール濃度が高い場合の遅角限界値は高回転域で進角側となるので、高回転域では低アルコール濃度によるノック発生時の遅角余裕がなくなってしまうが、所定回転数を適宜設定すると共に、それ以上の高回転域にあるときに吸入空気量を調整するスロットルバルブ16などの弁の開度を設定した所定上限値に制限することで、そのような不都合を回避することができる。
また、前記所定の運転状態は、前記燃料の推定オクタン価が所定オクタン価(例えば88RON)未満となる運転状態(S114)である如く構成したので、上記したアルコール濃度が低い場合のノックの抑制と加速性能の低下の回避を一層最適に両立させることができる。即ち、オクタン価が低いとノックが発生しやすくなるが、所定オクタン価を適宜設定すると共に、それ未満のオクタン価にあるときに吸入空気量を調整するスロットルバルブ16などの弁の開度を設定した所定上限値に制限することで、そのような不都合を回避することができる。
また、前記所定の運転状態は、前記機関温度と前記吸気温度の少なくともいずれかを含む温度パラメータ、具体的にはDIGTATWが所定値以上の高温と判断される運転状態(S116,S118)である如く構成したので、上記したアルコール濃度が低い場合のノックの抑制と加速性能の低下の回避を一層最適に両立させることができる。即ち、機関温度または吸気温度が高いとノックが発生しやすくなるが、所定値を適宜設定すると共に、それ以上の高温と判断されるときに吸入空気量を調整するスロットルバルブ16などの弁の開度を上限値に制限することで、そのような不都合を回避することができる。尚、上記において温度パラメータとして外気温を追加しても良い。
また、弁開度制限手段による制限が実行中か否か判定する制限実行判定手段(S108)と、制限実行判定手段によって制限が実行中と判定されるとき、運転状態判定手段の判定を禁止する判定禁止手段(S110)とを備える如く構成したので、上記した効果に加え、エンジン10の出力の不要の変動を回避することができる。
即ち、かかるエンジン10はアクセル操作量などに応じて出力が決定されるが、弁開度制限手段による制限の実行中にパラメータが変化した場合、所定の運転状態にあるか否か判定しないことで、アクセル操作量が同一であるにも関わらず、出力が変動してしまうのを回避することができる。
尚、上記において、所定の運転状態はスロットル開度THなどを必要最小限とする観点からは上の3つの要件が全て満足されることが最も好ましいが、ノックを確実に回避する観点からは上の3つの要件のいずれか満足されれば足りる。その場合でも、スロットル開度THの制限の運転状態がある程度限定されることから、加速性能の低下を可能な限り回避することができる。
図11は、クランク角度に対するプラグ要求電圧をアルコール濃度E100,E22ごとに示す説明図である。
給油などで燃料のアルコール濃度がE100からE22に変化したとすると、E22の典型的な点火時期は角度Cr1、遅角限界値はCr2である。それに対し、E100の遅角限界値は進角側のCr3である。
そのため、給油などによって燃料のアルコール濃度がE22に変化したとき、E100の全負荷時のプラグ要求電圧特性に従えば、Cr3とCr2の斜線で示す差だけ遅角量が不足する。従って、スロットル開度THを上限値に制限することで、E100のプラグ要求電圧を破線で示す如く低下させることができる。
即ち、プラグ要求電圧は、アルコール濃度が高いほど高くなると共に、筒内圧が高い、換言すれば、負荷が高いほど高くなる。このことは、負荷を下げれば、プラグ要求電圧は低くなることを意味する。
また、上記した如く、スロットル開度THなどの制限によりエンジン10の負荷が減少すると、E100のプラグ要求電圧も低下し、E100の遅角限界値も遅角側に移行する。
そこで、遅角限界値をアルコール濃度と負荷(またはアルコール濃度とエンジン回転数NEと負荷)から算出するようにすれば、スロットル開度THを制限することで負荷が減少すると、E100の遅角限界値も遅角側に下がる。それにより、E22のノックラインをE100の遅角限界値から離すことができ、ノック抑制のための遅角量を確保することができる。
その場合、例えば図6に示したマップ(特性)を負荷の大きさ、例えば高低2種の負荷に応じて設け、それから遅角限界値を算出するようにしても良い(高低2種の間の負荷は補間によって求める)。
また、上記において図8と図9に示す特性に関し、低出力側においてはリフト量が小さく、燃焼室に吸入される空気量も減少してスロットル開度THを制限するのと同様になることから、図7フロー・チャートのS120で否定されるときはS138に進むように構成しても良い。
また、エンジン温度を水温センサ80の出力から検出したが、エンジン10の潤滑油の温度から検出しても良い。
また、エアフローメータ74の温度検出素子から吸気温度TAを検出するように構成したが、吸気温度センサを独立に設けても良い。
また、アルコール濃度の学習が未完の場合、前回までに学習されている最新のアルコール濃度を所定のアルコール濃度として遅角限界値を求めるようにしても良い。
10 内燃機関(エンジン)、16 スロットルバルブ、22 DCモータ、24 メイン・インジェクタ、26 メイン燃料タンク、40 ECU(電子制御ユニット)、44 点火プラグ、56 触媒装置、62 キャニスタ、70 動弁機構、72 クランク角センサ、74 エアフローメータ、76 MAPセンサ、80 水温センサ、84 広域空燃比センサ、90 アクセル開度センサ、92 車速センサ、94 大気圧センサ