<構成>
以下、本発明による内燃機関の始動制御装置(制御装置)の第1実施形態について図面を参照しながら説明する。図1は、この制御装置を火花点火式多気筒(4気筒)内燃機関に適用したシステムの概略構成を示している。なお、図1は、一の気筒の断面のみを示しているが、他の気筒も同様な構成を備えている。
内燃機関10は、4サイクル運転方式により運転されるように構成されている。4サイクル運転方式は、排気上死点から吸気下死点までの吸気行程、吸気下死点から圧縮上死点までの圧縮行程、圧縮上死点から膨張下死点までの膨張行程及び膨張下死点から排気上死点までの排気行程の4つの行程からなる燃焼サイクルを各気筒が繰り返す運転方式である。内燃機関10は、4つの気筒の燃焼サイクルの位相が1つの行程に対応する大きさ(後述するクランク角度にて180°)ずつ異なるように構成されている。
内燃機関10は、シリンダブロック、シリンダブロックロワーケース及びオイルパン等を含むシリンダブロック部20と、シリンダブロック部20の上に固定されるシリンダヘッド部30と、シリンダブロック部20に燃料と空気とを含む混合ガスを供給するための吸気系統40と、シリンダブロック部20からの排ガスを外部に放出するための排気系統50と、を含んでいる。
シリンダブロック部20は、シリンダ21、ピストン22、コンロッド23及び出力軸としてのクランク軸24を含んでいる。ピストン22はシリンダ21内を往復動し、ピストン22の往復動がコンロッド23を介してクランク軸24に伝達され、これによりクランク軸24が回転駆動させられるようになっている。シリンダ21、ピストン22のヘッド及びシリンダヘッド部30は、燃焼室25を形成している。
シリンダヘッド部30は、燃焼室25に連通した吸気ポート31、吸気ポート31を開閉する吸気弁32、吸気弁32を駆動するインテークカムシャフトを含むとともにこのインテークカムシャフトの位相角を連続的に変更する可変吸気タイミング装置33、可変吸気タイミング装置33のアクチュエータ33a、燃焼室25に連通した排気ポート34、排気ポート34を開閉する排気弁35、排気弁35を駆動するエキゾーストカムシャフト36、点火プラグ37、点火プラグ37に与える高電圧を発生するイグニッションコイルを含むイグナイタ38及び燃料噴射手段としてのインジェクタ39を備えている。なお、点火プラグ37及びイグナイタ38は、燃焼室25にて火花を発生することにより燃焼室25内に形成された混合ガスに点火する点火手段を構成している。
インジェクタ39は、図示しない燃料タンクFTに接続されている。インジェクタ39には、その燃料タンクFT内の燃料が供給される。インジェクタ39は、供給された燃料を指示信号に応答して吸気ポート31内に噴射することにより燃焼室25内へ燃料を供給するようになっている。
吸気系統40は、各気筒の吸気ポート31にそれぞれ連通する独立した複数の通路を有するインテークマニホールド41、インテークマニホールド41のすべての通路に連通したサージタンク42、サージタンク42に一端が接続され吸気ポート31とインテークマニホールド41とサージタンク42とともに吸気通路を形成する吸気ダクト43、吸気ダクト43の他端部から下流(サージタンク42)に向けて順に吸気ダクト43に配設されたエアフィルタ44、スロットル弁45及び指示信号に応じてスロットル弁45を駆動するスロットル弁アクチュエータ45aを備えている。
スロットル弁45は、吸気ダクト43に回転可能に支持されている。スロットル弁45は、スロットル弁アクチュエータ45aにより駆動(制御)されることによって、開度(スロットル弁開度TA)を調整して吸気ダクト43の通路断面積を調整するようになっている。このような構成により、スロットル弁45は、スロットル弁開度TAを変更することにより、吸気ダクト43(吸気通路)を通過する空気の量を変更でき、その結果、気筒内に供給される空気量を変更できる。
排気系統50は、各気筒の排気ポート34にそれぞれ連通する独立した複数の通路を有するエキゾーストマニホールド51、エキゾーストマニホールド51に接続され排気ポート34とエキゾーストマニホールド51とともに排気通路を形成する排気管52及び排気管52に配設された三元触媒装置53を備えている。
一方、このシステムは、熱線式のエアフローメータ61、吸気温度センサ62、吸気圧力センサ63、スロットルポジションセンサ64、カムポジションセンサ65、回転速度取得手段を構成するクランクポジションセンサ66、アクセル開度センサ67、筒内圧力センサ68、冷却水温度センサ69及び電気制御装置70を備えている。
エアフローメータ61は、エアフィルタ44とスロットル弁45との間の吸気ダクト43に配設されている。エアフローメータ61は、吸気ダクト43内を通過する空気の流量(即ち、吸気流量)を検出し、吸気流量Gaを表す信号を出力するようになっている。
吸気温度センサ62は、エアフィルタ44とスロットル弁45との間の吸気ダクト43に配設されている。吸気温度センサ62は、スロットル弁45の上流における空気の温度(即ち、吸気温度)を検出し、吸気温度Taを表す信号を出力するようになっている。
吸気圧力センサ63は、エアフィルタ44とスロットル弁45との間の吸気ダクト43に配設されている。吸気圧力センサ63は、スロットル弁45の上流における空気の圧力(即ち、吸気圧力)を検出し、吸気圧力Paを表す信号を出力するようになっている。
スロットルポジションセンサ64は、スロットル弁45の開度(スロットル弁開度)を検出し、スロットル弁開度TAを表す信号を出力するようになっている。
カムポジションセンサ65は、インテークカムシャフトが360°だけ回転する(即ち、クランク軸24が720°だけ回転する)間に3回だけ生じるパルスを有する信号(G2信号)を出力するようになっている。この3つのパルスは、第1のパルスと、第1のパルスが生じてからインテークカムシャフトが90°だけ回転する(即ち、クランク軸24が180°だけ回転する)と生じる第2のパルスと、第2のパルスが生じてからインテークカムシャフトが90°だけ回転すると生じる第3のパルスと、からなる。即ち、第3のパルスが生じてからインテークカムシャフトが180°だけ回転すると再び第1のパルスが生じる。
クランクポジションセンサ66は、クランク軸24が10°回転する毎に生じる幅狭のパルスを有するとともにクランク軸24が360°回転する毎に生じる幅広のパルスを有する信号を出力するようになっている。この信号は、1分間にクランク軸24が360°だけ回転する回数を表すエンジン回転速度NEを取得するために使用される。本例では、エンジン回転速度NEは、現時点よりもクランク角にて180°だけ前の時点から現時点までの間に経過した時間に基づいて算出されるようになっている。
アクセル開度センサ67は、運転者によって操作されるアクセルペダル81の操作量を検出し、アクセルペダルの操作量(アクセルペダル操作量)Accpを表す信号を出力するようになっている。
筒内圧力センサ68は、各気筒に配設されている。筒内圧力センサ68は、配設された気筒の燃焼室25内のガスの圧力(筒内圧力)を検出し、筒内圧力Pcを表す信号を出力するようになっている。なお、筒内圧力センサ68は、燃焼室25の上部のシリンダヘッド部30に設けられていてもよい。
冷却水温度センサ69は、シリンダ21の側壁内を循環する冷却水の温度(冷却水温度)を検出し、冷却水温度Twを表す信号を出力するようになっている。
電気制御装置70は、互いにバスにより接続されたCPU71、CPU71が実行するプログラム、テーブル(ルックアップテーブル、マップ)、定数等のデータを保持するようにそれらのデータを予め記憶したROM72、CPU71の指示に応じてデータを一時的に保持するRAM73、内燃機関10が運転されている状態にてデータを記憶するとともに記憶したデータを内燃機関10の運転が停止している間も保持するバックアップRAM74及びADコンバータを含むインターフェース75等からなるマイクロコンピュータである。インターフェース75は、前記センサ61〜69と接続され、CPU71にセンサ61〜69からの信号を供給するとともに、CPU71の指示に応じて可変吸気タイミング装置33のアクチュエータ33a、イグナイタ38、インジェクタ39及びスロットル弁アクチュエータ45aに駆動信号(指示信号)を送出するようになっている。
<作動の概要>
次に、上記のように構成された内燃機関の始動制御装置の作動の概要について説明する。
この制御装置は、内燃機関10を始動させるための始動操作後の始動初期期間中、各気筒に配設された筒内圧力センサ68により検出された筒内圧力Pcに基づいて各気筒の図示トルクTqを算出する。ここで、図示トルクTqは、燃焼室25内のガスがピストン22に加える力(燃焼室25内のガスの圧力)により発生するトルクであってクランク軸24を回転駆動しようとするトルクである。制御装置は、算出された図示トルクTqに基づいて各気筒において燃焼が発生したか否かを判定する。
そして、制御装置は、いずれかの気筒において燃焼が発生したと判定した場合、その判定時点以降において、エンジン回転速度NEを基準エンジン回転速度NErefに一致させるようにクランクポジションセンサ66からの信号に基づくエンジン回転速度NEに基づいて共通点火時期SAcを決定する(エンジン回転速度NEに基づいて共通点火時期SAcをフィードバック補正する。)。ここで、基準エンジン回転速度NErefは、始動初期期間において最初に燃焼が発生した初爆時点からのクランク軸24の回転角度に基づいて予め設定されている。
制御装置は、既に燃焼が発生した気筒に対しては、点火プラグ37が火花を発生する時期である点火時期SAを決定された共通点火時期(第1の点火時期)SAcに設定するとともに、燃焼室25にて形成される混合ガスの空燃比を理論空燃比よりもリーン側のリーン空燃比とする量(第1の制御量)τaに燃料噴射量(インジェクタ39が噴射する燃料の量)τを設定する。
一方、制御装置は、未だ燃焼が発生していない(失火が発生している)気筒に対しては、点火時期SAを共通点火時期SAcよりも進角側の点火時期(燃焼発生用点火時期)SA0に設定するとともに、燃焼室25にて形成される混合ガスの空燃比を理論空燃比とする量(第4の制御量)τ0に燃料噴射量τを設定する。これにより、失火が発生している気筒において混合ガスを燃焼させやすくすることができる。
更に、制御装置は、既に燃焼が発生している気筒の図示トルクTqが基準下限図示トルクTqlthよりも小さい場合、その気筒の次の燃焼サイクルに対して噴射される燃料噴射量τを第1の制御量τaよりも少ない第2の制御量τa−Δτに設定する。ここで、基準下限図示トルクTqlthは、初爆時点からのクランク軸24の回転角度に基づいて設定されている。これにより、この気筒の次の燃焼サイクルにおける図示トルクTqが過大となることが防止される。
加えて、制御装置は、既に燃焼が発生している気筒の図示トルクTqが基準上限図示トルクTqhthよりも大きい場合、その気筒の次の燃焼サイクルに対して噴射される燃料噴射量τを第1の制御量τaよりも多い第3の制御量τa+Δτに設定する。ここで、基準上限図示トルクTqhthは、初爆時点からのクランク軸24の回転角度に基づいて設定されている。これにより、この気筒の次の燃焼サイクルにおける図示トルクTqが過小となることが防止される。
このようにして、各気筒の点火時期SA及び燃料噴射量τは、各気筒における燃焼状態に応じた適切な量に設定される。この結果、エンジン回転速度NEを基準エンジン回転速度NErefに迅速に近づけることができる。
<作動の詳細>
次に、電気制御装置70の実際の作動について、図2〜図10を参照しながら説明する。
先ず、内燃機関10の運転が開始することを希望する運転者は、内燃機関10を始動させるためにイグニッション・スイッチISをオフ状態からオン状態へ切り替える(内燃機関10を始動させるための始動操作を行う)。これにより、CPU71は、図示しないスタータ・モータによりクランク軸24を回転させる(クランキングを開始させる)ためにそのスタータ・モータに駆動信号を送る。その結果、クランキングが開始させられる。
(始動初期制御実行判定)
また、CPU71は、図2にフローチャートにより示した始動初期制御実行判定ルーチンを、いずれかの気筒が膨張下死点を迎える(いずれかの気筒におけるピストン22が膨張下死点位置に位置する)毎に(即ち、クランク軸24の回転角度であるクランク角度が180°ずつ変化する毎に)実行するようになっている。
従って、所定のタイミングになると、CPU71は、ステップ200から処理を開始してステップ205に進み、アクセル開度センサ67により検出されたアクセルペダル操作量Accp(機関10の負荷)を読み込む。次いで、CPU71は、ステップ210に進んで、上記ステップ205にて読み込まれたアクセルペダル操作量Accpが「0」であるか否かを判定する。
この時点では、運転者はアクセルペダル81を操作していないので、アクセルペダル操作量Accpは「0」である。従って、CPU71は、ステップ210にて「Yes」と判定してステップ215に進み、冷却水温度センサ69により検出された冷却水温度Twを読み込む。
次いで、CPU71は、ステップ220に進んで上記ステップ215にて読み込まれた冷却水温度Twが閾値温度Twthよりも低いか否かを判定する。ここで、閾値温度Twthは、冷却水温度Twが閾値温度Twthである場合において内燃機関10が運転され続けても冷却水温度Twが略一定に維持される温度(内燃機関10の暖機が完了した時に冷却水温度Twが到達する温度)に予め設定されている。本例では、閾値温度Twthは70℃(343K)である。なお、本明細書において、ステップ210及びステップ220の両方の条件が成立している期間は、始動初期期間とも呼ばれる期間である。
この時点では、内燃機関10が始動操作された直後であるので、冷却水温度Twは大気の温度と略等しい。従って、CPU71は、ステップ220にて「Yes」と判定してステップ225に進み、始動初期制御実行フラグXsの値を「1」に設定する。
ここで、始動初期制御実行フラグXsは、各気筒の燃焼状態に応じて制御量を設定する制御(始動初期制御)を実行するか否かを表すフラグであって、その値が「1」であれば始動初期制御を実行し、「0」であれば始動初期制御を実行しないことを示す。後述する通り、始動初期制御実行フラグXsの値は、アクセルペダル操作量Accpが「0」よりも大きくなった場合及び/又は冷却水温度Twが上記閾値温度Twth以上となった場合に「0」に設定される(ステップ230を参照。)。
そして、CPU71はステップ299に進んで本ルーチンを一旦終了する。
(気筒別燃焼発生判定)
一方、CPU71は、図3にフローチャートにより示した気筒別燃焼発生判定ルーチンを、図2の始動初期制御実行判定ルーチンに続いて実行するようになっている。
従って、始動初期制御実行判定ルーチンの実行が終了すると、CPU71は、ステップ300から処理を開始してステップ305に進み、始動初期制御実行フラグXsの値が「1」であるか否かを判定する。
この時点では、始動初期制御実行フラグXsの値は「1」であるから、CPU71は、ステップ305にて「Yes」と判定してステップ310に進み、第n気筒の燃焼発生フラグXf(n)の値が「0」であるか否かを判定する。ここで、値nは、第n気筒が現時点にて膨張下死点を迎えた気筒であることを表す整数である。値nは、気筒を判別するための図示しない気筒判別ルーチンをCPU71が実行することにより設定される。なお、便宜上、本明細書においては、各気筒を、クランキングが開始してから最初に膨張下死点を迎えるまでの期間が短い順に第1気筒、第2気筒、第3気筒及び第4気筒と呼ぶ。従って、この時点では、値nは「1」に設定されている。
また、第n気筒の燃焼発生フラグXf(n)は、クランキングの開始時点から現時点までの間に第n気筒にて混合ガスの燃焼が発生したか否かを表すフラグであって、その値が「1」であれば発生し、「0」であれば発生しなかったことを示す。後述する通り、第n気筒の燃焼発生フラグXf(n)の値は、第n気筒の図示トルクTq(n)が所定の閾値αよりも大きくなった場合に「1」に設定され(ステップ320を参照。)、イグニッション・スイッチISがオフ状態からオン状態へ切り替えられた時に「0」に設定される。
従って、この時点では、第1気筒の燃焼発生フラグXf(1)の値は「0」である。従って、CPU71は、ステップ310にて「Yes」と判定してステップ315に進み、第1気筒の図示トルクTq(1)が閾値αよりも大きいか否かを判定する。
ここで、第n気筒の図示トルクTq(n)は、現時点よりも1つの燃焼サイクルだけ前の時点から現時点までの期間における図示トルクの瞬時値を平均した値(後述する(1)式を参照。)である。第n気筒の図示トルクTq(n)は、第n気筒の燃焼室25内のガスが第n気筒のピストン22に加える力によって発生するトルクであって、クランク軸24を回転駆動させようとするトルクである。第n気筒の図示トルクTq(n)は、CPU71が後述する図示トルク算出ルーチンを実行することにより算出されている。また、閾値αは、混合ガスの燃焼が発生しない場合において取得される図示トルクTq(n)の最大値よりも僅かに大きい値に設定されている。
この時点では、第1気筒の燃焼室25にて混合ガスの燃焼は発生していない。従って、第1気筒の図示トルクTq(1)が閾値αよりも小さいので、CPU71は、ステップ315にて「No」と判定してステップ399に直接進み本ルーチンを一旦終了する。
(膨張下死点到来回数算出)
一方、CPU71は、図4にフローチャートにより示した膨張下死点到来回数算出ルーチンを、図3の気筒別燃焼発生判定ルーチンに続いて実行するようになっている。
従って、気筒別燃焼発生判定ルーチンの実行が終了すると、CPU71は、ステップ400から処理を開始してステップ405に進み、始動初期制御実行フラグXsの値が「1」であるか否かを判定する。
この時点では、始動初期制御実行フラグXsの値は「1」であるから、CPU71は、ステップ405にて「Yes」と判定してステップ410に進み、初爆発生フラグXbの値が「0」であるか否かを判定する。
ここで、初爆発生フラグXbは、クランキングの開始時点から現時点までの間にいずれかの気筒にて混合ガスの燃焼が発生したか否かを表すフラグであって、その値が「1」であれば発生し、「0」であれば発生しなかったことを示す。後述する通り、初爆発生フラグXbの値は、図3のルーチンにおいていずれかの気筒の図示トルクが閾値αよりも大きいと判定された場合に「1」に設定され(ステップ325を参照。)、イグニッション・スイッチISがオフ状態からオン状態へ切り替えられた時に「0」に設定される。
この時点では、いずれの気筒においても混合ガスの燃焼は発生していない。従って、初爆発生フラグXbの値が「0」であるから、CPU71は、ステップ410にて「Yes」と判定してステップ415に進み、膨張下死点到来回数kを「0」に設定する。ここで、膨張下死点到来回数kは、始動初期期間において混合ガスの燃焼が最初に発生した初爆時点から現時点までに任意の気筒が膨張下死点を迎えた回数を表す整数である。即ち、膨張下死点到来回数kは、初爆時点からのクランク軸24の回転角度Σθ(=k・180°クランク角)を表していると言うこともできる。
次いで、CPU71は、ステップ499に直接進み本ルーチンを一旦終了する。
(共通点火時期決定)
一方、CPU71は、図5にフローチャートにより示した共通点火時期決定ルーチンを、図4の膨張下死点到来回数算出ルーチンに続いて実行するようになっている。なお、図5のルーチンの処理が実行されることは、点火時期設定手段の機能の一部が達成されることに対応している。
従って、膨張下死点到来回数算出ルーチンの実行が終了すると、CPU71は、ステップ500から処理を開始してステップ505に進み、始動初期制御実行フラグXsの値が「1」であるか否かを判定する。
この時点では、始動初期制御実行フラグXsの値は「1」であるから、CPU71は、ステップ505にて「Yes」と判定してステップ510に進み、膨張下死点到来回数kが「1」であるか否かを判定する。
この時点では膨張下死点到来回数kは「0」であるから、CPU71は、ステップ510にて「No」と判定してステップ515に進み、初爆発生フラグXbの値が「1」であるか否かを判定する。この時点では、初爆発生フラグXbの値は「0」であるから、CPU71は、ステップ515にて「No」と判定してステップ599に直接進み、本ルーチンを一旦終了する。
(気筒別点火時期決定)
一方、CPU71は、図6にフローチャートにより示した気筒別点火時期決定ルーチンを、図5の共通点火時期決定ルーチンに続いて実行するようになっている。なお、図6のルーチンの処理が実行されることは、点火時期設定手段の機能の一部が達成されることに対応している。
従って、共通点火時期決定ルーチンの実行が終了すると、CPU71は、ステップ600から処理を開始してステップ605に進み、始動初期制御実行フラグXsの値が「1」であるか否かを判定する。
この時点では、始動初期制御実行フラグXsの値は「1」であるから、CPU71は、ステップ605にて「Yes」と判定してステップ610に進み、第1気筒の燃焼発生フラグXf(1)の値が「1」であるか否かを判定する。
この時点では、第1気筒の燃焼発生フラグXf(1)の値は「0」であるから、CPU71は、ステップ610にて「No」と判定してステップ615に進み、第1気筒(現時点にて膨張下死点を迎えた気筒)の点火時期SA(1)を燃焼発生用点火時期としての最大トルク点火時期SA0に設定する。
ここで、最大トルク点火時期SA0は、図示トルクを最大とする点火時期であって、実験による測定値に基づいて予め設定されている。なお、最大トルク点火時期SA0は、BTDCにより表される。BTDCは、気筒毎に定義されている。BTDCは、各気筒における圧縮上死点(TDC)を原点としクランク軸24の回転方向と逆方向を正にとったクランク軸24の回転角度(クランク角度)である。以下、本明細書において、点火時期を表す変数は、いずれもBTDCにより表される。
次いで、CPU71は、ステップ620に進んで、上記ステップ615にて設定された点火時期SA(1)に応じた指示信号を第1気筒のイグナイタ38に対して送出する。これにより、第1気筒のイグナイタ38は、点火時期SA(1)にて第1気筒の点火プラグ37に高電圧を印加する。この結果、第1気筒の点火プラグ37は第1気筒の燃焼室25において火花を発生させる。
そして、CPU71はステップ699に進んで本ルーチンを一旦終了する。
(気筒別燃料噴射量決定)
一方、CPU71は、図7にフローチャートにより示した気筒別燃料噴射量決定ルーチンを、図6の気筒別点火時期決定ルーチンに続いて実行するようになっている。なお、図7のルーチンの処理が実行されることは、トルク変動抑制手段の機能が達成されることに対応している。
従って、気筒別点火時期決定ルーチンの実行が終了すると、CPU71は、ステップ700から処理を開始してステップ705に進み、クランクポジションセンサ66からの信号に基づいて別途算出されているエンジン回転速度NEを読み込む。
次いで、CPU71は、ステップ710に進んでエアフローメータ61により検出された吸気流量Gaを読み込み、続くステップ715にて冷却水温度センサ69により検出された冷却水温度Twを読み込む。
そして、CPU71は、ステップ720に進んで始動初期制御実行フラグXsの値が「1」であるか否かを判定する。
この時点では、始動初期制御実行フラグXsの値は「1」であるから、CPU71は、ステップ720にて「Yes」と判定してステップ725に進み、第1気筒の燃焼発生フラグXf(1)の値が「1」であるか否かを判定する。
この時点では、第1気筒の燃焼発生フラグXf(1)の値は「0」であるから、CPU71は、ステップ725にて「No」と判定してステップ730に進み、膨張下死点到来回数kと燃焼発生用燃料噴射量τ0との関係を規定するテーブルMapτ0及び上記ステップ415にて設定された膨張下死点到来回数kに基づいて燃焼発生用燃料噴射量(第4の制御量としての第4の燃料噴射量)τ0を決定し、第1気筒(現時点にて膨張下死点を迎えた気筒)の燃料噴射量τ(1)を決定された燃焼発生用燃料噴射量τ0に設定する。
ここで、テーブルMapτ0は、求められる燃焼発生用燃料噴射量τ0が燃焼室25にて形成される混合ガスの空燃比を理論空燃比に一致させる量となるように、実験による測定値に基づいて予め設定されている。
また、以下の説明において、MapX(a)と表記されるテーブルは、変数aと値Xとの関係を規定するテーブルを意味することとする。また、値XをテーブルMapX(a)に基づいて求めるとは、値Xを現時点の変数aと、テーブルMapX(a)と、に基づいて求める(決定する)ことを意味することとする。なお、変数は2つ以上であってもよい。
次いで、CPU71は、ステップ735に進んで上記ステップ730にて設定された燃料噴射量τ(1)に応じた指示信号を第1気筒のインジェクタ39に対して送出する。これにより、第1気筒のインジェクタ39は、第1気筒が次に迎える吸気行程の初期における所定のタイミングにて上記決定された燃料噴射量τ(1)の燃料を噴射する。
そして、CPU71はステップ799に進んで本ルーチンを一旦終了する。
(図示トルク算出)
一方、CPU71は、図示しない図示トルク算出ルーチンを、クランク軸24が10°回転する毎に各気筒に対して互いに独立して実行するようになっている。なお、この図示トルク算出ルーチンの処理が実行されることは、図示トルク取得手段の機能が達成されることに対応している。
ところで、ある時点にて第n気筒の燃焼室25内のガスにより第n気筒のピストン22に加えられる力に対応する図示トルクの瞬時値(瞬時図示トルク)Tq0は、第n気筒の燃焼室25の容積Vと、第n気筒の燃焼室25内のガスの圧力(筒内圧力)Pcと、下記(1)式と、に基づいて求めることができる。なお、下記(1)式において、θはクランク軸24の回転角度(クランク角度)を表す。
Tq0=Pc・(dV/dθ)…(1)
従って、所定のタイミングになると、CPU71は、第n気筒の筒内圧力センサ68により検出された筒内圧力Pcを読み込む。次いで、CPU71は、クランク軸24の回転角度に基づいて第n気筒の燃焼室25の容積Vの微分値dV/dθを算出する。そして、CPU71は、上記(1)式と、読み込まれた筒内圧力Pc及び算出された微分値dV/dθと、に基づいて、第n気筒の瞬時図示トルクTq0を算出する。
更に、CPU71は、クランク軸24が10°回転する毎に算出された瞬時図示トルクTq0を1つの燃焼サイクル分(クランク角度にて720°分)だけRAM73に保持させる。加えて、CPU71は、RAM73に保持されている1つの燃焼サイクル分の第n気筒の瞬時図示トルクTq0の平均値を第n気筒の図示トルクTq(n)として算出(取得)する。
その後、吸気通路の壁面等に付着した燃料が気化すること等により十分な量の霧化した燃料がある気筒の燃焼室25に導入されると、その気筒の燃焼室25にて点火プラグ37が火花を発生させることにより混合ガスが燃焼する。
先ず、図8に示したように、第1気筒にて最初の燃焼が発生し、その後、すべての気筒において失火が発生しない(即ち、第1気筒にて最初の燃焼が発生した時点以降において圧縮上死点を迎える燃焼サイクルのすべてにおいて燃焼が発生する)場合であって、燃焼によって発生する図示トルクが始動初期期間において常に所定の範囲(後述する基準下限図示トルクTqlthよりも大きく、且つ、基準上限図示トルクTqhthよりも小さい範囲)内の大きさとなる場合から説明する。
この場合、第1気筒における最初の燃焼が発生した燃焼サイクルの圧縮上死点を第1気筒が迎えた時点(初爆時点)からクランク軸24が180°だけ回転した時点(第1気筒が膨張下死点を迎えた時点)になると、CPU71は、図3の気筒別燃焼発生判定ルーチンの処理を開始してステップ315に進む。
この時点にて算出されている(最新の)第1気筒の図示トルクTq(1)は、混合ガスの燃焼が発生したことにより閾値αよりも大きくなっている。
従って、CPU71は、ステップ315にて「Yes」と判定してステップ320に進み、第1気筒の燃焼発生フラグXf(1)の値を「1」に設定する。次いで、CPU71は、ステップ325に進んで初爆発生フラグXbの値を「1」に設定し、続くステップ399にて本ルーチンを一旦終了する。
更に、CPU71が図4の膨張下死点到来回数算出ルーチンの処理を開始して、初爆発生フラグXbの値が「0」であるか否かを判定するステップ410に進んだとき、CPU71は、ステップ410にて「No」と判定してステップ420に進む。
CPU71は、ステップ420にて膨張下死点到来回数k(=0)に「1」を加えた値k+1(=1)に膨張下死点到来回数kを設定する。次いで、CPU71は、ステップ499に進んで本ルーチンを一旦終了する。
加えて、CPU71が図5の共通点火時期決定ルーチンの処理を開始して、膨張下死点到来回数kが「1」であるか否かを判定するステップ510に進んだとき、CPU71は、ステップ510にて「Yes」と判定してステップ520に進む。
CPU71は、ステップ520にて冷却水温度センサ69により検出された冷却水温度Twを読み込む。次いで、CPU71は、ステップ525に進んでテーブルMapSAC0(Tw)に基づいて初期共通点火時期SAc0を決定し、共通点火時期SAcを決定した初期共通点火時期SAc0に設定する。ここで、テーブルMapSAC0(Tw)は、求められる初期共通点火時期SAc0が最大トルク点火時期SA0よりも遅角側の時期となるように予め設定されている。
次いで、CPU71は、ステップ515に進んで初爆発生フラグXbの値が「1」であるか否かを判定する。この時点では、初爆発生フラグXbの値が「1」であるから、CPU71は、ステップ515にて「Yes」と判定してステップ530に進み、クランクポジションセンサ66からの信号に基づいて別途算出されているエンジン回転速度NEを読み込む。
次いで、CPU71は、ステップ535に進んで、テーブルMapNEREF(k)に基づいて基準エンジン回転速度NErefを決定する。ここで、テーブルMapNEREFは、求められる基準エンジン回転速度NErefが、所定の基準燃料を使用した実験において初爆時点から膨張下死点到来回数kに180°を乗じた角度Σθ(=k・180°)だけクランク軸24が回転した時点にて取得されるエンジン回転速度NEと一致するように予め設定されている。
次いで、CPU71は、ステップ540に進んで、上記ステップ535にて決定された基準エンジン回転速度NErefから上記ステップ530にて読み込んだエンジン回転速度NEを減じた値NEref−NEに所定の正の係数Lを乗じた値L・(NEref−NE)に共通点火時期補正量ΔSAcを設定する。
次に、CPU71は、ステップ545に進んで、上記ステップ525にて設定された共通点火時期SAcに上記ステップ540にて設定された共通点火時期補正量ΔSAcを加えた値SAc+ΔSAcに第1の点火時期としての共通点火時期SAcを設定(置換)する。
そして、CPU71はステップ599に進んで本ルーチンを一旦終了する。
このようにして、共通点火時期SAcは、エンジン回転速度NEが基準エンジン回転速度NErefよりも高い場合に減量補正(遅角側に補正)され、一方、エンジン回転速度NEが基準エンジン回転速度NErefよりも低い場合に増量補正(進角側に補正)される。即ち、共通点火時期SAcは、エンジン回転速度NEを基準エンジン回転速度NErefに一致させるように、取得されたエンジン回転速度NEに基づいて決定される。
従って、この共通点火時期SAcにて混合ガスに点火することにより、エンジン回転速度NEが基準エンジン回転速度NErefよりも高い場合に図示トルクが減少させられ、エンジン回転速度NEが基準エンジン回転速度NErefよりも低い場合に図示トルクが増大させられる。この結果、例えば、燃料タンクFT内の燃料の霧化しやすさの程度が基準燃料と相違する場合であっても、エンジン回転速度NEを基準エンジン回転速度NErefに近づけることができる。この結果、吹き上がりの発生を防止することができるとともに、内燃機関10を迅速に始動させることができる。
更に、CPU71が図6の気筒別点火時期決定ルーチンの処理を開始して、第1気筒の燃焼発生フラグXf(1)の値が「1」であるか否かを判定するステップ610に進んだとき、CPU71は、ステップ610にて「Yes」と判定してステップ625に進む。
CPU71は、ステップ625にて第1気筒の図示トルクに影響を及ぼす制御量としての第1気筒の点火時期SA(1)を上記ステップ545にて設定された共通点火時期SAcに設定する。次いで、CPU71は、ステップ620に進んで、上記ステップ625にて設定された点火時期SA(1)に応じた指示信号を第1気筒のイグナイタ38に対して送出する。
そして、CPU71はステップ699に進んで本ルーチンを一旦終了する。
加えて、CPU71が図7の気筒別燃料噴射量決定ルーチンの処理を開始して、第1気筒の燃焼発生フラグXf(1)の値が「1」であるか否かを判定するステップ725に進んだとき、CPU71は、ステップ725にて「Yes」と判定してステップ740に進む。
CPU71は、ステップ740にてテーブルMapτa(Ga,NE)に基づいて始動初期燃料噴射量(第1の制御量としての第1の燃料噴射量)τaを決定し、第1気筒の図示トルクに影響を及ぼす制御量であって点火時期以外の制御量としての第1気筒の燃料噴射量τ(1)を、決定した始動初期燃料噴射量τaに設定する。ここで、テーブルMapτa(Ga,NE)は、求められる始動初期燃料噴射量τaが燃焼室25にて形成される混合ガスの空燃比を理論空燃比よりもリーン側のリーン空燃比に一致させる量となるように、実験による測定値に基づいて予め設定されている。従って、テーブルMapτa(Ga,NE)に基づいて求められる始動初期燃料噴射量τaは、テーブルMapτ0(k)に基づいて求められる燃焼発生用燃料噴射量τ0よりも少ない。
次いで、CPU71は、ステップ745に進んでテーブルMapTQLTH(Tw,k)に基づいて基準下限図示トルクTqlthを決定する。ここで、テーブルMapTQLTH(Tw,k)は、求められる基準下限図示トルクTqlthが、過大なトルク変動が発生することなく混合ガスの燃焼が発生する場合において取得され得る図示トルクのうちの最小値となるように実験による測定値に基づいて予め設定されている。
なお、テーブルMapTQLTH(Tw,k)に基づいて求められる基準下限図示トルクTqlthは、燃焼が発生しているときに取得される図示トルクに基づいて設定されているから、燃焼が発生しないときに取得される図示トルクに基づいて設定された閾値αよりも大きい。また、過大なトルク変動とは、燃焼期間が過度に長い燃焼と燃焼期間が過度に短い燃焼とが燃焼サイクルの経過に伴って交互に繰り返し発生することにより、図示トルクが燃焼サイクルの経過に伴って増加と減少とを交互に繰り返しながら変動することである。
更に、テーブルMapTQLTH(Tw,k)は、冷却水温度Twが低くなるほど、求められる基準下限図示トルクTqlthが小さくなるように設定されている。なお、上述したように、膨張下死点到来回数kは、初爆時点からのクランク軸24の回転角度を表すので、ステップ745にて決定される基準下限図示トルクTqlthは、初爆時点からのクランク軸24の回転角度に基づいて設定された値であると言うことができる。また、このステップ745にて決定される基準下限図示トルクTqlthは、図8の曲線C1により示したように膨張下死点到来回数kの増大に伴って減少する。
そして、CPU71は、ステップ750に進んで現時点にて算出されている(最新の)第1気筒の図示トルクTq(1)が上記ステップ745にて決定された基準下限図示トルクTqlthよりも小さいか否かを判定する。
この状態においては、最新の第1気筒の図示トルクTq(1)は基準下限図示トルクTqlthよりも大きい。従って、CPU71は、ステップ750にて「No」と判定してステップ755に進み、テーブルMapTQHTH(Tw,k)に基づいて基準上限図示トルクTqhthを決定する。
ここで、テーブルMapTQHTH(Tw,k)は、求められる基準上限図示トルクTqhthが、過大なトルク変動が発生することなく混合ガスの燃焼が発生する場合において取得され得る図示トルクのうちの最大値となるように実験による測定値に基づいて予め設定されている。従って、テーブルMapTQHTH(Tw,k)に基づいて求められる基準上限図示トルクTqhthは、任意の膨張下死点到来回数kに対して、テーブルMapTQLTH(Tw,k)に基づいて求められる基準下限図示トルクTqlthよりも大きい。
加えて、テーブルMapTQHTH(Tw,k)は、冷却水温度Twが低くなるほど、求められる基準上限図示トルクTqhthが小さくなるように設定されている。なお、基準下限図示トルクTqlthと同様に、ステップ755にて決定される基準上限図示トルクTqhthは、初爆時点からのクランク軸24の回転角度に基づいて設定された値であると言うことができる。また、このステップ755にて決定される基準上限図示トルクTqhthは、図8の曲線C2により示したように膨張下死点到来回数kの増大に伴って減少する。
次に、CPU71は、ステップ760に進んで現時点にて算出されている(最新の)第1気筒の図示トルクTq(1)が上記ステップ755にて決定された基準上限図示トルクTqhthよりも大きいか否かを判定する。
この状態においては、最新の第1気筒の図示トルクTq(1)は基準上限図示トルクTqhthよりも小さい。従って、CPU71は、ステップ760にて「No」と判定してステップ735に進み、上記ステップ740にて設定された燃料噴射量τ(1)に応じた指示信号を第1気筒のインジェクタ39に対して送出する。
そして、CPU71はステップ799に進んで本ルーチンを一旦終了する。
そして、更にクランク軸24が180°だけ回転した時点になると、CPU71は、図3の気筒別燃焼発生判定ルーチンの処理を再び開始する。この時点にて膨張下死点を迎える気筒は、第2気筒である。この時点では、第2気筒においても混合ガスの燃焼が発生したことにより第2気筒の図示トルクTq(2)は閾値αよりも大きくなっている。
従って、CPU71が、算出されている(最新の)第2気筒の図示トルクTq(2)が閾値αよりも大きいか否かを判定するステップ315に進んだとき、CPU71は、ステップ315にて「Yes」と判定してステップ320に進み、第2気筒の燃焼発生フラグXf(2)の値を「1」に設定する。次いで、CPU71は、ステップ325に進んで初爆発生フラグXbの値を「1」に設定し、続くステップ399にて本ルーチンを一旦終了する。即ち、初爆発生フラグXbの値は「1」に維持される。
更に、CPU71が図4の膨張下死点到来回数算出ルーチンのステップ420の処理を実行することにより、膨張下死点到来回数kは「1」が加算されることにより「2」に設定される。
加えて、CPU71が図5の共通点火時期決定ルーチンの処理を開始して、膨張下死点到来回数kが「1」であるか否かを判定するステップ510に進んだとき、CPU71は、ステップ510にて「No」と判定して、共通点火時期SAcを初期共通点火時期SAc0に設定するステップ525の処理を実行することなくステップ515に進む。
そして、CPU71は、ステップ515にて「Yes」と判定して、ステップ530以降のステップに進んで、共通点火時期SAcを基準エンジン回転速度NErefとエンジン回転速度NEとに基づいて補正した後、図5のルーチンを一旦終了する。
更に、CPU71は、上述した処理と同様の処理を実行することにより、第2気筒の点火時期SA(2)を共通点火時期SAcに設定するとともに第2気筒の燃料噴射量τ(2)を始動初期燃料噴射量τaに設定する。
そして、更にクランク軸24が180°だけ回転した時点になると、第2気筒の場合と同様に、CPU71は、ステップ320にて第3気筒の燃焼発生フラグXf(3)の値を「1」に設定する。更に、CPU71は、上述した処理と同様の処理を実行することにより、第3気筒の点火時期SA(3)を共通点火時期SAcに設定するとともに第3気筒の燃料噴射量τ(3)を始動初期燃料噴射量τaに設定する。
そして、更にクランク軸24が180°だけ回転した時点になると、第2気筒の場合と同様に、CPU71は、ステップ320にて第4気筒の燃焼発生フラグXf(4)の値を「1」に設定する。更に、CPU71は、上述した処理と同様の処理を実行することにより、第4気筒の点火時期SA(4)を共通点火時期SAcに設定するとともに第4気筒の燃料噴射量τ(4)を始動初期燃料噴射量τaに設定する。
その後、クランク軸24が180°だけ回転した時点が到来する。この時点では、CPU71が図3の気筒別燃焼発生判定ルーチンの処理を開始してステップ310に進んだとき、CPU71は、ステップ310にて「No」と判定してステップ399に直接進み本ルーチンを一旦終了する。
このような処理は、始動初期制御実行フラグXsの値が「0」に変更されるまで継続する。
その後、時間の経過に伴って、冷却水温度Twが上昇し、ある時点(k=kz)にて冷却水温度Twが閾値温度Twth以上となる。
この時点にてCPU71が図2の始動初期制御実行判定ルーチンの処理を開始してステップ220に進んだとき、CPU71は、ステップ220にて「No」と判定してステップ230に進む。CPU71は、ステップ230にて始動初期制御実行フラグXsの値を「0」に設定し、続くステップ299にて本ルーチンを一旦終了する。
更に、CPU71が図3の気筒別燃焼発生判定ルーチンの処理を開始して、始動初期制御実行フラグXsの値が「1」であるか否かを判定するステップ305に進んだとき、CPU71は、ステップ305にて「No」と判定してステップ399に直接進みこのルーチンを一旦終了する。
加えて、CPU71が図4の膨張下死点到来回数算出ルーチンの処理を開始して、始動初期制御実行フラグXsの値が「1」であるか否かを判定するステップ405に進んだとき、CPU71は、ステップ405にて「No」と判定してステップ499に直接進みこのルーチンを一旦終了する。
更に、CPU71が図5の共通点火時期決定ルーチンの処理を開始して、始動初期制御実行フラグXsの値が「1」であるか否かを判定するステップ505に進んだとき、CPU71は、ステップ505にて「No」と判定してステップ599に直接進みこのルーチンを一旦終了する。
加えて、CPU71が図6の気筒別点火時期決定ルーチンの処理を開始して、始動初期制御実行フラグXsの値が「1」であるか否かを判定するステップ605に進んだとき、CPU71は、ステップ605にて「No」と判定してステップ630に進む。
CPU71は、ステップ630にてクランクポジションセンサ66からの信号に基づいて別途算出されているエンジン回転速度NEを読み込む。次いで、CPU71は、ステップ635に進んでエアフローメータ61により検出された吸気流量Gaを読み込む。
そして、CPU71は、ステップ640に進んでテーブルMapSAb(Ga,NE)に基づいて始動後点火時期SAbを決定し、第n気筒の点火時期SA(n)を決定した始動後点火時期SAbに設定する。次いで、CPU71は、ステップ620に進んで、上記ステップ640にて設定された点火時期SA(n)に応じた指示信号を第n気筒のイグナイタ38に対して送出する。
そして、CPU71はステップ699に進んで本ルーチンを一旦終了する。
更に、CPU71が図7の気筒別燃料噴射量決定ルーチンの処理を開始して、始動初期制御実行フラグXsの値が「1」であるか否かを判定するステップ720に進んだとき、CPU71は、ステップ720にて「No」と判定してステップ765に進む。
CPU71は、ステップ765にてテーブルMapτb(Ga,NE)に基づいて始動後燃料噴射量τbを決定し、第n気筒の燃料噴射量τ(n)を決定した始動後燃料噴射量τbに設定する。次いで、CPU71は、ステップ735に進んで、上記ステップ765にて設定された燃料噴射量τ(n)に応じた指示信号を第n気筒のインジェクタ39に対して送出する。
そして、CPU71はステップ799に進んで本ルーチンを一旦終了する。
次に、冷却水温度Twが閾値温度Twth以上となる前に、運転者がアクセルペダル81を操作した場合について説明する。
この場合、CPU71が図2の始動初期制御実行判定ルーチンの処理を開始してステップ210に進んだとき、CPU71は、ステップ210にて「No」と判定してステップ230に進む。CPU71は、ステップ230にて始動初期制御実行フラグXsの値を「0」に設定し、続くステップ299にて本ルーチンを一旦終了する。
そして、CPU71は、上述した冷却水温度Twが閾値温度Twth以上となった場合と同様に、ステップ640にて第n気筒の点火時期SA(n)を始動後点火時期SAbに設定するとともに、ステップ765にて第n気筒の燃料噴射量τ(n)を始動後燃料噴射量τbに設定する。
次に、ある気筒における燃焼の燃焼期間が、何らかの理由により比較的大きく変化した場合について説明する。ここでは、第1気筒において最初の燃焼(初爆)が発生した後に第2気筒において3回目の燃焼が発生したとき、その燃焼の燃焼期間がかなり長くなることを仮定する。
この場合、第2気筒における3回目の燃焼により発生する図示トルクは、かなり小さくなる。従って、図9に示したように、この燃焼が発生した燃焼サイクルにおける圧縮上死点を第2気筒が迎えた時点からクランク軸24が180°だけ回転した時点(第2気筒の膨張下死点、膨張下死点到来回数kが「10」に設定される時点)にて、算出されている最新の第2気筒の図示トルクTq(2)は、かなり小さくなっている。
従って、この時点にて、CPU71が図7の気筒別燃料噴射量決定ルーチンの処理を開始して、第2気筒の図示トルクTq(2)が上記ステップ745にて決定された基準下限図示トルクTqlthよりも小さいか否かを判定するステップ750に進んだとき、CPU71は、ステップ750にて「Yes」と判定してステップ770に進む。
ステップ770にてCPU71は、上記ステップ740にて設定されている第2気筒の燃料噴射量τ(2)(=τa)から予め設定された正の燃料噴射量補正量Δτを減じた値(第2の制御量としての第2の燃料噴射量)τ(2)−Δτ(=τa−Δτ)に第2気筒の燃料噴射量τ(2)を再設定(置換)する。
次いで、CPU71は、ステップ755以降のステップに進んで、ステップ760にて「No」と判定するとともに、ステップ735にて、上記ステップ770にて設定された燃料噴射量τ(2)に応じた指示信号を第2気筒のインジェクタ39に対して送出した後、図7のルーチンを一旦終了する。
ところで、仮に、第2気筒(特定気筒)における図示トルクTq(2)が基準下限図示トルクTqlthよりも小さい場合に第2気筒の燃料噴射量τ(2)が始動初期燃料噴射量(第1の燃料噴射量)τaに設定されると、図9の符号A1が付された破線の丸により仮想的に示したように、第2気筒の次の燃焼サイクルにおける図示トルクは過大になる。
一方、この制御装置によれば、第2気筒における図示トルクTq(2)が基準下限図示トルクTqlthよりも小さい場合、第2気筒の燃料噴射量τ(2)は、始動初期燃料噴射量(第1の燃料噴射量)τaよりも少ない(即ち、第2気筒の図示トルクを小さくする)第2の燃料噴射量τa−Δτに設定される。
これにより、第2気筒の次の燃焼サイクルにおける図示トルクは、図9の符号A2が付された実線の丸により示したように、第2気筒の燃料噴射量τ(2)が始動初期燃料噴射量(第1の燃料噴射量)τaに設定された場合よりも小さくなる。即ち、第2気筒において燃焼期間がかなり長くなった場合であっても、第2気筒の次の燃焼サイクルにおいて図示トルクが過大となることを防止することができる。この結果、エンジン回転速度NEが基準エンジン回転速度NErefよりも過度に高くなることを防止することができる。
次に、第1気筒において最初の燃焼(初爆)が発生した後に第2気筒において6回目の燃焼が発生したとき、その燃焼の燃焼期間がかなり短くなることを仮定する。
この仮定に従えば、この燃焼により発生する図示トルクはかなり大きくなる。従って、図9に示したように、この燃焼が発生した燃焼サイクルにおける圧縮上死点を第2気筒が迎えた時点からクランク軸24が180°だけ回転した時点(第2気筒の膨張下死点、膨張下死点到来回数kが「22」に設定される時点)にて、算出されている最新の第2気筒の図示トルクTq(2)は、かなり大きくなっている。
従って、この時点にて、CPU71が図7の気筒別燃料噴射量決定ルーチンの処理を開始してステップ750に進んだとき、CPU71は、ステップ750にて「No」と判定する。更に、CPU71は、第2気筒の図示トルクTq(2)が上記ステップ755にて決定された基準上限図示トルクTqhthよりも大きいか否かを判定するステップ760に進んだとき、CPU71は、ステップ760にて「Yes」と判定してステップ775に進む。
ステップ775にてCPU71は、上記ステップ740にて設定されている第2気筒の燃料噴射量τ(2)(=τa)に上記燃料噴射量補正量Δτを加えた値(第3の制御量としての第3の燃料噴射量)τ(2)+Δτ(=τa+Δτ)に第2気筒の燃料噴射量τ(2)を再設定(置換)する。
次いで、CPU71は、ステップ735に進んで、上記ステップ775にて設定された燃料噴射量τ(2)に応じた指示信号を第2気筒のインジェクタ39に対して送出した後、図7のルーチンを一旦終了する。
ところで、仮に、第2気筒(特定気筒)における図示トルクTq(2)が基準上限図示トルクTqhthよりも大きい場合に第2気筒の燃料噴射量τ(2)が始動初期燃料噴射量(第1の燃料噴射量)τaに設定されると、図9の符号A3が付された破線の丸により仮想的に示したように、第2気筒の次の燃焼サイクルにおける図示トルクは過小になる。
一方、この制御装置によれば、第2気筒における図示トルクTq(2)が基準上限図示トルクTqhthよりも大きい場合、第2気筒の燃料噴射量τ(2)は、始動初期燃料噴射量(第1の燃料噴射量)τaよりも多い(即ち、第2気筒の図示トルクを大きくする)第3の燃料噴射量τa+Δτに設定される。
これにより、第2気筒の次の燃焼サイクルにおける図示トルクは、図9の符号A4が付された実線の丸により示したように、第2気筒の燃料噴射量τ(2)が始動初期燃料噴射量(第1の燃料噴射量)τaに設定された場合よりも大きくなる。即ち、第2気筒において燃焼期間がかなり短くなった場合であっても、第2気筒の次の燃焼サイクルにおいて図示トルクが過小となることを防止することができる。この結果、エンジン回転速度NEが基準エンジン回転速度NErefよりも過度に低くなることを防止することができる。
なお、ここでは、第2気筒にて過大なトルク変動が発生した場合における本制御装置の作動について説明したが、第1気筒、第3気筒、及び、第4気筒のいずれかにおいて過大なトルク変動が発生した場合も同様である。
次に、何らかの理由により、初爆時点以降、ある気筒にて混合ガスに点火しても混合ガスの燃焼が発生しない(失火が発生している)場合について説明を続ける。具体的には、第2気筒にて失火が発生している場合を想定して説明する。
この場合、図10に示したように、第1気筒にて最初の燃焼が発生してから最初に第2気筒が膨張下死点を迎える時点(膨張下死点到来回数kが「2」に設定される時点)にて、算出されている最新の第2気筒の図示トルクTq(2)は、極めて小さくなっている。
従って、この時点にて、CPU71が図3の気筒別燃焼発生判定ルーチンの処理を開始してステップ315に進んだとき、CPU71は、ステップ315にて「No」と判定して、第2気筒の燃焼発生フラグXf(2)の値を「1」に設定することなくこのルーチンを一旦終了する。即ち、第2気筒の燃焼発生フラグXf(2)の値は「0」に維持される。
従って、CPU71が図6の気筒別点火時期決定ルーチンの処理を開始して、第2気筒の燃焼発生フラグXf(2)の値が「1」であるか否かを判定するステップ610に進んだとき、CPU71は、ステップ610にて「No」と判定してステップ615に進む。
CPU71は、ステップ615にて、第2気筒の点火時期SA(2)を燃焼発生用点火時期としての最大トルク点火時期SA0に設定し、続くステップ620にて、この第2気筒の点火時期SA(2)に応じた指示信号を第2気筒のイグナイタ38に対して送出した後、図6のルーチンを一旦終了する。
このように、第2気筒(特定気筒)の燃焼発生フラグXf(2)の値が「0」に維持されている場合(即ち、初爆時点から現時点までの間に算出された図示トルクTq(2)がいずれも閾値αより小さい場合)、第2気筒の点火時期SA(2)が共通点火時期(第1の点火時期)SAcよりも進角側の最大トルク点火時期(燃焼発生用点火時期)SA0に設定される。これにより、第2気筒において、点火時期SA(2)が共通点火時期SAcに設定される場合よりも混合ガスを燃焼させやすくすることができる。この結果、第2気筒において失火が発生している状態が継続することを防止することができる。
更に、CPU71が図7の気筒別燃料噴射量決定ルーチンの処理を開始して、第2気筒の燃焼発生フラグXf(2)の値が「1」であるか否かを判定するステップ725に進んだとき、CPU71は、ステップ725にて「No」と判定してステップ730に進む。
CPU71は、ステップ730にて、第2気筒の燃料噴射量τ(2)を燃焼発生用燃料噴射量(第4の制御量としての第4の燃料噴射量)τ0に設定し、続くステップ735にて、この第2気筒の燃料噴射量τ(2)に応じた指示信号を第2気筒のインジェクタ39に対して送出した後、図7のルーチンを一旦終了する。
ところで、仮に、第2気筒(特定気筒)の燃焼発生フラグXf(2)の値が「0」に維持されている場合(即ち、初爆時点から現時点までの間に算出された図示トルクTq(2)がいずれも閾値αより小さい場合)に第2気筒の燃料噴射量τ(2)が第2の燃料噴射量τa−Δτに設定されると、図10の符号A5が付された破線の丸により仮想的に示したように、第2気筒の次の燃焼サイクルにおいても失火が発生する可能性が比較的高い。
一方、この制御装置によれば、算出された図示トルクTq(2)が基準下限図示トルクTqlthよりも小さい場合であっても、第2気筒の燃焼発生フラグXf(2)の値が「0」に維持されている場合には、第2気筒の燃料噴射量τ(2)は、第2の燃料噴射量τa−Δτよりも多い(即ち、第2気筒の図示トルクを大きくする)燃焼発生用燃料噴射量(第4の燃料噴射量)τ0に設定される。
これにより、第2気筒の燃料噴射量τ(2)が第2の燃料噴射量τa−Δτに設定される場合よりも第2気筒において混合ガスを燃焼させやすくすることができる。この結果、図10の符号A6が付された実線の丸により示したように、第2気筒の次の燃焼サイクルにおいて燃焼を発生させることができる。即ち、第2気筒において失火が発生している状態が継続することをより一層確実に防止することができる。
なお、ここでは、第2気筒にて失火が発生している場合における本制御装置の作動について説明したが、第3気筒及び第4気筒のいずれかにおいて失火が発生している場合も同様である。
以上、説明したように、本発明による内燃機関の始動制御装置の第1実施形態によれば、過大なトルク変動が継続することを防止することができるとともに、失火が発生している状態が継続することを防止することができる。この結果、始動時においてエンジン回転速度NEを基準エンジン回転速度NErefに迅速に近づけることができる。
なお、上記第1実施形態は、特定気筒の図示トルクに影響を及ぼす制御量であって点火時期以外の制御量として、燃料噴射量を採用していたが、燃料噴射量に代えて或いは燃料噴射量に加えて、燃焼室25内に導入される空気の量である筒内空気量を制御することによる混合ガスの空燃比、及び、インジェクタ39に燃料を噴射させるタイミングのうちの少なくとも1つを採用していてもよい。更に、上記制御量として筒内空気量を制御することによる混合ガスの空燃比を採用する場合、吸気弁32を開弁させるタイミング、及び/又は、吸気弁32を閉弁させるタイミングを採用してもよい。
更に、上記第1実施形態は、図7のステップ770にて用いられる燃料噴射量補正量Δτとして、予め設定された一定値を採用するように構成されていたが、基準下限図示トルクTqlthから第n気筒の図示トルクTq(n)を減じた値Tqlth−Tq(n)が大きくなるほど大きくなる値を採用するように構成されていてもよい。
加えて、上記第1実施形態は、図7のステップ775にて用いられる燃料噴射量補正量Δτとして、予め設定された一定値を採用するように構成されていたが、第n気筒の図示トルクTq(n)から基準上限図示トルクTqhthを減じた値Tq(n)−Tqhthが大きくなるほど大きくなる値を採用するように構成されていてもよい。
<第2実施形態>
次に、本発明の第2実施形態に係る内燃機関の始動制御装置について説明する。第2実施形態に係る制御装置は、燃料噴射量τを変更することにより過大なトルク変動を抑制するように構成された上記第1実施形態に係る制御装置に対して、燃料噴射量τに加えて点火時期SAを変更することにより過大なトルク変動を抑制するように構成されている点のみにおいて相違している。従って、以下、かかる相違点を中心として説明する。
第2実施形態に係る制御装置は、第1実施形態に係る図6のルーチンに代えて、図11の気筒別点火時期決定ルーチンを実行するようになっている。図11の気筒別点火時期決定ルーチンは、図6のルーチンのステップ625の処理の後にステップ1105〜ステップ1135の処理を追加したルーチンである。なお、図11のルーチンの処理が実行されることは、点火時期設定手段の機能の一部及びトルク変動抑制手段の機能が達成されることに対応している。
先ず、図8に示したように、第1気筒にて最初の燃焼が発生し、その後、すべての気筒において失火が発生しない場合であって、燃焼によって発生する図示トルクが始動初期期間において常に所定の範囲(基準下限図示トルクTqlthよりも大きく、且つ、基準上限図示トルクTqhthよりも小さい範囲)内の大きさとなる場合から説明する。
この場合、第1気筒における最初の燃焼が発生した燃焼サイクルの圧縮上死点を第1気筒が迎えた時点(初爆時点)からクランク軸24が180°だけ回転した時点(第1気筒が膨張下死点を迎えた時点)になると、CPU71は、図3の気筒別燃焼発生判定ルーチンを実行することにより、第1気筒の燃焼発生フラグXf(1)の値を「1」に設定するとともに初爆発生フラグXbの値を「1」に設定する。
更に、CPU71は、図4の膨張下死点到来回数算出ルーチンを実行することにより、膨張下死点到来回数k(=0)に「1」を加算することにより膨張下死点到来回数kを「1」に設定する。加えて、CPU71は、図5の共通点火時期決定ルーチンを実行することにより、第1の点火時期としての共通点火時期SAcを設定する。
更に、CPU71は、図11の気筒別点火時期決定ルーチンの処理を開始してステップ625に進み、第1気筒の点火時期SA(1)を図5の共通点火時期決定ルーチンにおいて設定された共通点火時期SAcに設定する。次いで、CPU71は、ステップ1105に進んで、冷却水温度センサ69により検出された冷却水温度Twを読み込む。
そして、CPU71は、ステップ1110に進んでテーブルMapTQLTH(Tw,k)に基づいて基準下限図示トルクTqlthを決定する。次に、CPU71は、ステップ1115に進んで現時点にて算出されている(最新の)第1気筒の図示トルクTq(1)が上記ステップ1110にて決定された基準下限図示トルクTqlthよりも小さいか否かを判定する。
上記仮定に従えば、最新の第1気筒の図示トルクTq(1)は基準下限図示トルクTqlthよりも大きい。従って、CPU71は、ステップ1115にて「No」と判定してステップ1120に進み、テーブルMapTQHTH(Tw,k)に基づいて基準上限図示トルクTqhthを決定する。
次に、CPU71は、ステップ1125に進んで現時点にて算出されている(最新の)第1気筒の図示トルクTq(1)が上記ステップ1120にて決定された基準上限図示トルクTqhthよりも大きいか否かを判定する。
上記仮定に従えば、最新の第1気筒の図示トルクTq(1)は基準上限図示トルクTqhthよりも小さい。従って、CPU71は、ステップ1125にて「No」と判定してステップ620に進み、上記ステップ625にて設定された点火時期SA(1)に応じた指示信号を第1気筒のイグナイタ38に対して送出する。
そして、CPU71はステップ1199に進んで本ルーチンを一旦終了する。
このように、第1気筒の点火時期SA(1)は、図5の共通点火時期決定ルーチンにおいて設定された共通点火時期SAcに設定される。これにより、例えば、燃料タンクFT内の燃料の霧化しやすさの程度が基準燃料と相違する場合であっても、エンジン回転速度NEを基準エンジン回転速度NErefに近づけることができる。この結果、吹き上がりの発生を防止することができるとともに、内燃機関10を迅速に始動させることができる。
加えて、CPU71は、図7の気筒別燃料噴射量決定ルーチンを実行することにより、第1気筒の燃料噴射量τ(1)を始動初期燃料噴射量τaに設定し、設定した第1気筒の燃料噴射量τ(1)に応じた指示信号を第1気筒のインジェクタ39に対して送出する。
次に、ある気筒における燃焼の燃焼期間が、何らかの理由により比較的大きく変化した場合について説明する。ここでは、第1気筒において最初の燃焼(初爆)が発生した後に第2気筒において3回目の燃焼が発生したとき、その燃焼の燃焼期間がかなり長くなることを仮定する。
この場合、第2気筒における3回目の燃焼により発生する図示トルクは、かなり小さくなる。従って、図12に示したように、この燃焼が発生した燃焼サイクルにおける圧縮上死点を第2気筒が迎えた時点からクランク軸24が180°だけ回転した時点(第2気筒の膨張下死点、膨張下死点到来回数kが「10」に設定される時点)にて、算出されている最新の第2気筒の図示トルクTq(2)は、かなり小さくなっている。
従って、この時点にて、CPU71が図11の気筒別点火時期決定ルーチンの処理を開始して、第2気筒の図示トルクTq(2)が上記ステップ1110にて決定された基準下限図示トルクTqlthよりも小さいか否かを判定するステップ1115に進んだとき、CPU71は、ステップ1115にて「Yes」と判定してステップ1130に進む。
ステップ1130にてCPU71は、上記ステップ625にて設定されている第2気筒の点火時期SA(2)(=SAc)から予め設定された正の点火時期補正量ΔSAを減じた値(第2の点火時期)SA(2)−ΔSA(=SAc−ΔSA)に第2気筒の点火時期SA(2)を再設定(置換)する。
次いで、CPU71は、ステップ1120以降のステップに進んで、ステップ1125にて「No」と判定するとともに、ステップ620にて、上記ステップ1130にて設定された点火時期SA(2)に応じた指示信号を第2気筒のイグナイタ38に対して送出した後、図11のルーチンを一旦終了する。
ところで、仮に、第2気筒(特定気筒)における図示トルクTq(2)が基準下限図示トルクTqlthよりも小さい場合に第2気筒の点火時期SA(2)が共通点火時期(第1の点火時期)SAcに設定され且つ第2気筒の燃料噴射量τ(2)が始動初期燃料噴射量τaに設定されると、図12の符号A1が付された破線の丸により仮想的に示したように、第2気筒の次の燃焼サイクルにおける図示トルクは過大になる。
一方、この制御装置によれば、第2気筒における図示トルクTq(2)が基準下限図示トルクTqlthよりも小さい場合、第2気筒の点火時期SA(2)は、共通点火時期(第1の点火時期)SAcよりも遅角側の(即ち、第2気筒の図示トルクを小さくする)第2の点火時期SAc−ΔSAに設定される。これにより、第2気筒の次の燃焼サイクルにおける図示トルクは、第2気筒の点火時期SA(2)が第1の点火時期SAcに設定される場合よりも小さくなる。
更に、CPU71は、図7の気筒別燃料噴射量決定ルーチンを実行することにより、第2気筒の燃料噴射量τ(2)を始動初期燃料噴射量τaから燃料噴射量補正量Δτを減じた値τa−Δτに設定し、設定した第2気筒の燃料噴射量τ(2)に応じた指示信号を第2気筒のインジェクタ39に対して送出する。これにより、第2気筒の次の燃焼サイクルにおける図示トルクは、第2気筒の燃料噴射量τ(2)が始動初期燃料噴射量τaに設定された場合よりも小さくなる。
以上により、この制御装置によれば、第2気筒における図示トルクTq(2)が基準下限図示トルクTqlthよりも小さくなった場合、第2気筒の次の燃焼サイクルにおける図示トルクは、図12の符号A2が付された実線の丸により示したように、第2気筒の点火時期SA(2)が共通点火時期(第1の点火時期)SAcに設定され且つ第2気筒の燃料噴射量τ(2)が始動初期燃料噴射量τaに設定された場合よりも小さくされる。即ち、第2気筒において燃焼期間がかなり長くなった場合であっても、第2気筒の次の燃焼サイクルにおいて図示トルクが過大となることを防止することができる。この結果、エンジン回転速度NEが基準エンジン回転速度NErefよりも過度に高くなることを防止することができる。
次に、第1気筒において最初の燃焼(初爆)が発生した後に第2気筒において6回目の燃焼が発生したとき、その燃焼の燃焼期間がかなり短くなることを仮定する。
この仮定に従えば、この燃焼により発生する図示トルクはかなり大きくなる。従って、図12に示したように、この燃焼が発生した燃焼サイクルにおける圧縮上死点を第2気筒が迎えた時点からクランク軸24が180°だけ回転した時点(第2気筒の膨張下死点、膨張下死点到来回数kが「22」に設定される時点)にて、算出されている最新の第2気筒の図示トルクTq(2)は、かなり大きくなっている。
従って、この時点にて、CPU71が図11の気筒別点火時期決定ルーチンの処理を開始してステップ1115に進んだとき、CPU71は、ステップ1115にて「No」と判定する。更に、CPU71は、第2気筒の図示トルクTq(2)が上記ステップ1120にて決定された基準上限図示トルクTqhthよりも大きいか否かを判定するステップ1125に進んだとき、CPU71は、ステップ1125にて「Yes」と判定してステップ1135に進む。
ステップ1135にてCPU71は、上記ステップ625にて設定されている第2気筒の点火時期SA(2)(=SAc)に上記点火時期補正量ΔSAを加えた値(第3の点火時期)SA(2)+ΔSA(=SAc+ΔSA)に第2気筒の点火時期SA(2)を再設定(置換)する。
次いで、CPU71は、ステップ620に進んで、上記ステップ1135にて設定された点火時期SA(2)に応じた指示信号を第2気筒のイグナイタ38に対して送出した後、図11のルーチンを一旦終了する。
ところで、仮に、第2気筒(特定気筒)における図示トルクTq(2)が基準上限図示トルクTqhthよりも大きい場合に第2気筒の点火時期SA(2)が共通点火時期(第1の点火時期)SAcに設定され且つ第2気筒の燃料噴射量τ(2)が始動初期燃料噴射量τaに設定されると、図12の符号A3が付された破線の丸により仮想的に示したように、第2気筒の次の燃焼サイクルにおける図示トルクは過小になる。
一方、この制御装置によれば、第2気筒における図示トルクTq(2)が基準上限図示トルクTqhthよりも大きい場合、第2気筒の点火時期SA(2)は、共通点火時期(第1の点火時期)SAcよりも進角側の(即ち、第2気筒の図示トルクを大きくする)第3の点火時期SAc+ΔSAに設定される。これにより、第2気筒の次の燃焼サイクルにおける図示トルクは、第2気筒の点火時期SA(2)が第1の点火時期SAcに設定される場合よりも大きくなる。
更に、CPU71は、図7の気筒別燃料噴射量決定ルーチンを実行することにより、第2気筒の燃料噴射量τ(2)を始動初期燃料噴射量τaに燃料噴射量補正量Δτを加えた値τa+Δτに設定し、設定した第2気筒の燃料噴射量τ(2)に応じた指示信号を第2気筒のインジェクタ39に対して送出する。これにより、第2気筒の次の燃焼サイクルにおける図示トルクは、第2気筒の燃料噴射量τ(2)が始動初期燃料噴射量τaに設定された場合よりも大きくなる。
以上により、この制御装置によれば、第2気筒における図示トルクTq(2)が基準上限図示トルクTqhthよりも大きくなった場合、第2気筒の次の燃焼サイクルにおける図示トルクは、図12の符号A4が付された実線の丸により示したように、第2気筒の点火時期SA(2)が共通点火時期(第1の点火時期)SAcに設定され且つ第2気筒の燃料噴射量τ(2)が始動初期燃料噴射量τaに設定された場合よりも大きくされる。即ち、第2気筒において燃焼期間がかなり短くなった場合であっても、第2気筒の次の燃焼サイクルにおいて図示トルクが過小となることを防止することができる。この結果、エンジン回転速度NEが基準エンジン回転速度NErefよりも過度に低くなることを防止することができる。
次に、何らかの理由により、初爆時点以降、第2気筒にて失火が発生している場合について説明する。
この場合、図10に示したように、第1気筒にて最初の燃焼が発生してから最初に第2気筒が膨張下死点を迎える時点(膨張下死点到来回数kが「2」に設定される時点)にて、算出されている最新の第2気筒の図示トルクTq(2)は、極めて小さくなっている。
従って、この時点にて、CPU71が図3の気筒別燃焼発生判定ルーチンの処理を開始してステップ315に進んだとき、CPU71は、ステップ315にて「No」と判定して、第2気筒の燃焼発生フラグXf(2)の値を「1」に設定することなくこのルーチンを一旦終了する。即ち、第2気筒の燃焼発生フラグXf(2)の値は「0」に維持される。
従って、CPU71が図11の気筒別点火時期決定ルーチンの処理を開始して、第2気筒の燃焼発生フラグXf(2)の値が「1」であるか否かを判定するステップ610に進んだとき、CPU71は、ステップ610にて「No」と判定してステップ615に進む。
CPU71は、ステップ615にて、第2気筒の点火時期SA(2)を第4の点火時期としての最大トルク点火時期SA0に設定し、続くステップ620にて、この第2気筒の点火時期SA(2)に応じた指示信号を第2気筒のイグナイタ38に対して送出した後、図6のルーチンを一旦終了する。
ところで、仮に、第2気筒(特定気筒)の燃焼発生フラグXf(2)の値が「0」に維持されている場合(即ち、初爆時点から現時点までの間に算出された図示トルクTq(2)がいずれも閾値αより小さい場合)に第2気筒の点火時期SA(2)が第2の点火時期SAc−ΔSAに設定され且つ第2気筒の燃料噴射量τ(2)が第2の燃料噴射量τa−Δτに設定されると、図10の符号A5が付された破線の丸により仮想的に示したように、第2気筒の次の燃焼サイクルにおいても失火が発生する可能性が比較的高い。
一方、この制御装置によれば、算出された図示トルクTq(2)が基準下限図示トルクTqlthよりも小さい場合であっても、第2気筒の燃焼発生フラグXf(2)の値が「0」に維持されている場合には、第2気筒の点火時期SA(2)は、第2の点火時期SAc−ΔSAよりも進角側の最大トルク点火時期(第4の点火時期)SA0に設定される。これにより、第2気筒の点火時期SA(2)が第2の点火時期SAc−ΔSAに設定される場合よりも第2気筒において混合ガスを燃焼させやすくすることができる。
更に、CPU71は、図7の気筒別燃料噴射量決定ルーチンを実行することにより、第2気筒の燃料噴射量τ(2)を第2の燃料噴射量τa−Δτよりも多い燃焼発生用燃料噴射量τ0に設定し、設定した第2気筒の燃料噴射量τ(2)に応じた指示信号を第2気筒のインジェクタ39に対して送出する。これにより、第2気筒の燃料噴射量τ(2)が第2の燃料噴射量τa−Δτに設定される場合よりも第2気筒において混合ガスを燃焼させやすくすることができる。
以上により、この制御装置によれば、算出された図示トルクTq(2)が基準下限図示トルクTqlthよりも小さい場合であっても、第2気筒の燃焼発生フラグXf(2)の値が「0」に維持されている場合、図10の符号A6が付された実線の丸により示したように、第2気筒の次の燃焼サイクルにおいて燃焼を発生させることができる。即ち、第2気筒において失火が発生している状態が継続することをより一層確実に防止することができる。
以上、説明したように、本発明による内燃機関の始動制御装置の第2実施形態によれば、過大なトルク変動が継続することを防止することができるとともに、失火が発生している状態が継続することを防止することができる。この結果、始動時においてエンジン回転速度NEを基準エンジン回転速度NErefに迅速に近づけることができる。
なお、上記第2実施形態は、燃料噴射量及び点火時期の両方を補正することにより過大なトルク変動を抑制するように構成されていたが、点火時期のみを補正することにより過大なトルク変動を抑制するように構成されていてもよい。
更に、上記第2実施形態は、図11のステップ1130にて用いられる点火時期補正量ΔSAとして、予め設定された一定値を採用するように構成されていたが、基準下限図示トルクTqlthから第n気筒の図示トルクTq(n)を減じた値Tqlth−Tq(n)が大きくなるほど大きくなる値を採用するように構成されていてもよい。
加えて、上記第2実施形態は、図11のステップ1135にて用いられる点火時期補正量ΔSAとして、予め設定された一定値を採用するように構成されていたが、第n気筒の図示トルクTq(n)から基準上限図示トルクTqhthを減じた値Tq(n)−Tqhthが大きくなるほど大きくなる値を採用するように構成されていてもよい。
なお、本発明は上記各実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。
例えば、上記各実施形態は、第n気筒の図示トルクTq(n)が閾値αよりも大きくなったときに第n気筒にて燃焼が発生したと判定するように構成されていたが、第n気筒の図示トルクTq(n)が基準下限図示トルクTqlthよりも大きくなったときに第n気筒にて燃焼が発生したと判定するように構成されていてもよい。
また、上記各実施形態は、燃焼が発生していない気筒の点火時期SA(n)として、予め設定された一定値SA0を採用するように構成されていたが、冷却水温度Tw等に応じて設定される値を採用するように構成されていてもよい。
更に、上記各実施形態は、冷却水温度Twが閾値温度Twth以上となった場合に始動初期制御実行フラグXsの値を「0」に設定するように構成されていたが、膨張下死点到来回数kが所定の閾値回数kth以上となった場合に始動初期制御実行フラグXsの値を「0」に設定するように構成されていてもよい。また、始動操作が行われた時点から経過した時間が所定の閾値時間以上となった場合に始動初期制御実行フラグXsの値を「0」に設定するように構成されていてもよい。
10…内燃機関、20…シリンダブロック部、21…シリンダ、22…ピストン、24…クランク軸、25…燃焼室、30…シリンダヘッド部、32…吸気弁、35…排気弁、37…点火プラグ、38…イグナイタ、39…インジェクタ、61…エアフローメータ、66…クランクポジションセンサ、67…アクセル開度センサ、68…筒内圧力センサ、69…冷却水温度センサ、70…電気制御装置、71…CPU、IS…イグニッション・スイッチ。