<第1実施形態>
以下、本発明による内燃機関の制御装置の各実施形態について図面を参照しながら説明する。図1は、この制御装置を火花点火式多気筒(4気筒)内燃機関に適用したシステムの概略構成を示している。なお、図1は、一の気筒の断面のみを示しているが、他の気筒も同様な構成を備えている。
内燃機関10は、4サイクル運転方式により運転されるように構成されている。4サイクル運転方式は、排気上死点TDC1から吸気下死点BDC1までの吸気行程、吸気下死点BDC1から圧縮上死点TDC2までの圧縮行程、圧縮上死点TDC2から膨張下死点BDC2までの膨張行程及び膨張下死点BDC2から排気上死点TDC1までの排気行程の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、吸気弁32、吸気弁32を駆動する吸気弁駆動機構を構成する可変吸気タイミング装置33、燃焼室25に連通した排気ポート34、排気弁35、排気弁35を駆動するエキゾーストカムシャフト36、点火プラグ37、点火プラグ37に与える高電圧を発生するイグニッションコイルを含むイグナイタ38及び燃料噴射手段としてのインジェクタ39を備えている。なお、点火プラグ37及びイグナイタ38は、燃焼室25にて火花を発生することにより燃焼室25内に形成された混合ガスに点火する点火手段を構成している。
吸気弁32は、燃焼室25と吸気通路とが連通している(吸気弁32が開弁している)連通状態と、燃焼室25と吸気通路とが遮断されている(吸気弁32が閉弁している)遮断状態と、に切り替え可能に構成されている。
可変吸気タイミング装置33は、インテークカムシャフトを含む。可変吸気タイミング装置33は、圧縮上死点TDC2よりも前の時点である吸気弁開弁時点Tvoにて吸気弁32を駆動することにより吸気弁32の状態を遮断状態から連通状態へ切り替える(吸気弁32を開弁させる)とともに、圧縮上死点TDC2よりも前の時点であって吸気弁開弁時点Tvoよりも後の時点である吸気弁閉弁時点Tvcにて吸気弁32を駆動することにより吸気弁32の状態を連通状態から遮断状態へ切り替える(吸気弁32を閉弁させる)ように構成される。可変吸気タイミング装置33は、アクチュエータ33aによって駆動されることによりインテークカムシャフトの位相角であるカムシャフト位相角φを連続的に変更するように構成されている。
インジェクタ39は、図示しない燃料タンクに接続されている。インジェクタ39には、その燃料タンク内の燃料が供給される。インジェクタ39は、供給された燃料を指示信号に応答して吸気ポート31内に噴射することにより燃焼室25内へ燃料を供給するようになっている。
吸気系統40は、各気筒の吸気ポート31にそれぞれ連通する独立した複数の通路及びそれらの通路を上流側にて集合させる集合部を形成するインテークマニホールド41、インテークマニホールド41の集合部側の端部に接続されたサージタンク42、サージタンク42に一端が接続され吸気ポート31とインテークマニホールド41とサージタンク42とともに吸気通路を形成する吸気ダクト43、吸気ダクト43の他端部から下流(サージタンク42)に向けて順に吸気ダクト43に配設されたエアフィルタ44及びスロットル弁45を備えている。
スロットル弁45は、吸気ダクト43に回転可能に支持されている。スロットル弁45は、スロットル弁アクチュエータ45aにより駆動(制御)されることによって、開度(スロットル弁開度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°回転する毎に生じる幅広のパルスを有する信号を出力するようになっている。この信号は、クランク軸24が30°回転する間に経過する時間である回転所要時間T30と、1分間にクランク軸24が360°だけ回転する回数を表すエンジン回転速度NEと、を取得するために使用される。本例では、エンジン回転速度NEは、現時点よりもクランク角度にて180°だけ前の時点から現時点までの間に経過した時間に基づいて算出されるようになっている。
アクセル開度センサ67は、運転者によって操作されるアクセルペダル81の操作量を検出し、アクセルペダルの操作量(アクセルペダル操作量)Accpを表す信号を出力するようになっている。
サージタンク内圧力センサ68は、サージタンク42内のガスの圧力(サージタンク内圧力)を検出し、サージタンク内圧力Psを表す信号を出力するようになっている。
冷却水温度センサ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を始動させるための始動操作後の始動初期期間中、図2に示したように、特定気筒のクランク角度が排気上死点TDC1よりも90°だけ前の角度になると、その時点Tc1にて検出されたサージタンク内圧力Psと、その時点Tc1にて算出されたエンジン回転速度NEと、に基づいて特定気筒の吸気弁32が閉弁される時点(吸気弁閉弁時点)Tvcにて特定気筒の燃焼室25内に導入されている空気の量である筒内空気量を第1筒内空気量KL1として推定する。
更に、制御装置は、特定気筒の燃焼室25内に形成される混合ガスの空燃比を目標空燃比(本例では、理論空燃比)に一致させるように、推定した第1筒内空気量KL1に基づいて、特定気筒のインジェクタ39により噴射させる燃料の量である燃料噴射量fiを決定する。そして、制御装置は、決定した燃料噴射量fiに応じた燃料噴射期間Tinjにて特定気筒のインジェクタ39により燃料を噴射させる。
その後、排気上死点TDC1近傍の所定の吸気弁開弁時点Tvoになると、可変吸気タイミング装置33は、特定気筒の吸気弁32を駆動することにより吸気弁32を開弁させる。これにより、特定気筒の燃焼室25内に空気と燃料とからなる混合ガスが導入される。そして、吸気下死点BDC1近傍の所定の吸気弁閉弁時点Tvcになると、可変吸気タイミング装置33は、特定気筒の吸気弁32を駆動することにより吸気弁32を閉弁させる。
更に、制御装置は、吸気弁閉弁時点Tvcにて検出されたサージタンク内圧力Psと、吸気弁閉弁時点Tvcにて算出されたエンジン回転速度NEと、に基づいてその吸気弁閉弁時点Tvcにて特定気筒の燃焼室25内に導入されている空気の量である筒内空気量を第2筒内空気量KL2として推定する。加えて、制御装置は、時点Tc1にて決定した燃料噴射量fiに基づいて吸気弁閉弁時点Tvcにて特定気筒の燃焼室25内に導入されている燃料の量である筒内燃料量fcを推定し、推定した第2筒内空気量KL2と推定した筒内燃料量fcとに基づいて特定気筒の燃焼室25内に形成された混合ガスの空燃比AbyFを推定する。
更に、制御装置は、初爆発生時点からのクランク軸24の回転角度に応じて予め設定された基準エンジン回転速度NErefと算出されたエンジン回転速度NEとの差である回転速度差ΔNE(=NEref−NE)に基づいてフィードバック補正量ΔSAを決定する。
加えて、制御装置は、上記推定した空燃比AbyFがリッチ側の空燃比であるほど図示トルクを小さくするように、推定した空燃比AbyFに基づいて上記決定したフィードバック補正量ΔSAを補正し、補正したフィードバック補正量ΔSAだけ点火時期SAを補正する。ここで、図示トルクは、燃焼室25内のガスの圧力によって発生するトルクであってクランク軸24を回転駆動しようとするトルクである。
そして、この補正した点火時期SAになると、制御装置は、特定気筒の点火プラグ37により火花を発生させる。これにより、特定気筒の燃焼室25内の混合ガスが燃焼する。
このように、この制御装置によれば、吸気弁閉弁時点Tvcにて推定した空燃比AbyFがリッチ側の空燃比であるほど図示トルクを小さくするようにフィードバック補正量ΔSAが補正される。この結果、実際の空燃比が予定されていた空燃比(目標空燃比)と相違する場合であっても、エンジン回転速度NEを基準エンジン回転速度NErefに迅速に近づけることができる。
<作動の詳細>
次に、電気制御装置70の実際の作動について、図2〜図11を参照しながら説明する。
先ず、内燃機関10の運転が開始することを希望する運転者は、内燃機関10を始動させるためにイグニッション・スイッチISをオフ状態からオン状態へ切り替える(内燃機関10を始動させるための始動操作を行う)。これにより、CPU71は、図示しないスタータ・モータによりクランク軸24を回転させる(クランキングを開始させる)ためにそのスタータ・モータに駆動信号を送る。その結果、クランキングが開始させられる。
(始動初期制御実行判定)
CPU71は、図3にフローチャートにより示した始動初期制御実行判定ルーチンを、いずれかの気筒が排気上死点TDC1よりもクランク角度にて90°だけ前の時点(燃料噴射量決定時点)Tc1を迎える毎に(即ち、クランク角度が180°ずつ変化する毎に)実行するようになっている。
従って、所定のタイミングになると、CPU71は、ステップ300から処理を開始してステップ305に進み、アクセル開度センサ67により検出されたアクセルペダル操作量Accp(機関10の負荷)を読み込む。次いで、CPU71は、ステップ310に進んで、上記ステップ305にて読み込まれたアクセルペダル操作量Accpが「0」であるか否かを判定する。
この時点では、運転者はアクセルペダル81を操作していないので、アクセルペダル操作量Accpは「0」である。従って、CPU71は、ステップ310にて「Yes」と判定してステップ315に進み、燃焼発生回数kが所定の閾値回数kth(本例では、「50」)よりも小さいか否かを判定する。
ここで、燃焼発生回数kは、始動初期期間において混合ガスの燃焼が最初に発生した初爆発生時点から現時点までに任意の気筒が排気行程を迎えた回数を表す整数である。即ち、燃焼発生回数kは、初爆発生時点からのクランク軸24の回転角度を表していると言うこともできる。なお、燃焼発生回数kは、イグニッション・スイッチISがオフ状態からオン状態へ切り替えられた時に「0」に設定される。
従って、この時点では、燃焼発生回数kは、閾値回数kthよりも小さい。従って、CPU71は、ステップ315にて「Yes」と判定してステップ320に進み、始動初期制御実行フラグXsの値を「1」に設定する。
ここで、始動初期制御実行フラグXsは、点火時期SAをエンジン回転速度NEに基づいて補正するフィードバック制御(始動初期制御)を実行するか否かを表すフラグであって、その値が「1」であれば始動初期制御を実行し、「0」であれば始動初期制御を実行しないことを示す。後述する通り、始動初期制御実行フラグXsの値は、アクセルペダル操作量Accpが「0」よりも大きくなった場合及び/又は燃焼発生回数kが閾値回数kth以上となった場合に「0」に設定される(ステップ325を参照。)。
そして、CPU71はステップ399に進んで本ルーチンを一旦終了する。
(燃焼開始判定)
更に、CPU71は、図4にフローチャートにより示した燃焼開始判定ルーチンを、図3の始動初期制御実行判定ルーチンに続いて実行するようになっている。
従って、始動初期制御実行判定ルーチンの実行が終了すると、CPU71は、ステップ400から処理を開始してステップ405に進み、燃焼開始フラグXbの値が「0」であるか否かを判定する。
ここで、燃焼開始フラグXbは、クランキングの開始時点から現時点までの間にいずれかの気筒にて混合ガスの燃焼が発生したか否かを表すフラグであって、その値が「1」であれば発生し、「0」であれば発生しなかったことを示す。後述する通り、燃焼開始フラグXbの値は、本ルーチンにおいて回転所要時間T30が所定の閾値時間αよりも短くなった時に「1」に設定され(ステップ420を参照。)、イグニッション・スイッチISがオフ状態からオン状態へ切り替えられた時に「0」に設定される。
従って、この時点では、燃焼開始フラグXbの値は「0」であるから、CPU71は、ステップ405にて「Yes」と判定してステップ410に進み、クランクポジションセンサ66からの信号に基づいて別途算出された回転所要時間T30を読み込む。
次いで、CPU71は、ステップ415に進んで上記ステップ410にて読み込まれた回転所要時間T30が閾値時間αよりも短いか否かを判定する。ここで、閾値時間αは、クランキング中に燃焼が発生しないと仮定した場合における回転所要時間T30の最小値よりも僅かに短い時間に設定されている。
この時点では、混合ガスの燃焼は発生していない。従って、回転所要時間T30が閾値時間αよりも長いので、CPU71は、ステップ415にて「No」と判定してステップ499に直接進み本ルーチンを一旦終了する。
(燃焼発生回数算出)
加えて、CPU71は、図5にフローチャートにより示した燃焼発生回数算出ルーチンを、図4の燃焼開始判定ルーチンに続いて実行するようになっている。
従って、燃焼開始判定ルーチンの実行が終了すると、CPU71は、ステップ500から処理を開始してステップ505に進み、始動初期制御実行フラグXsの値が「1」であるか否かを判定する。
この時点では、始動初期制御実行フラグXsの値は「1」であるから、CPU71は、ステップ505にて「Yes」と判定してステップ510に進み、燃焼開始フラグXbの値が「1」であるか否かを判定する。
この時点では、いずれの気筒においても混合ガスの燃焼は発生していない。従って、燃焼開始フラグXbの値が「0」であるから、CPU71は、ステップ510にて「No」と判定してステップ599に直接進み本ルーチンを一旦終了する。
(第1筒内空気量推定)
更に、CPU71は、燃料噴射量決定時点Tc1を現時点にて迎えた気筒(第n気筒)に対して次に到来する吸気弁閉弁時点Tvcにおける筒内空気量を推定するため、図6にフローチャートにより示した第1筒内空気量推定ルーチンを、図5の燃焼発生回数算出ルーチンに続いて実行するようになっている。
ここで、値nは、第n気筒が現時点にて燃料噴射量決定時点Tc1を迎えた気筒であることを表す整数である。値nは、気筒を判別するための図示しない気筒判別ルーチンをCPU71が実行することにより設定される。なお、便宜上、本明細書においては、各気筒を、クランキングが開始してから最初に燃料噴射量決定時点Tc1を迎えるまでの期間が短い順に第1気筒、第2気筒、第3気筒及び第4気筒と呼ぶ。
従って、燃焼発生回数算出ルーチンの実行が終了すると、CPU71は、ステップ600から処理を開始してステップ605に進み、始動初期制御実行フラグXsの値が「1」であるか否かを判定する。
この時点では、始動初期制御実行フラグXsの値は「1」であるから、CPU71は、ステップ605にて「Yes」と判定してステップ610に進み、サージタンク内圧力センサ68により検出されたサージタンク内圧力Psを読み込む。
次いで、CPU71は、ステップ615に進んで、クランクポジションセンサ66からの信号に基づいて別途算出されたエンジン回転速度NEを読み込む。そして、CPU71は、ステップ620に進んで、カムポジションセンサ65からの信号及びクランクポジションセンサ66からの信号に基づいて別途算出された可変吸気タイミング装置33のインテークカムシャフトの位相角であるカムシャフト位相角φを読み込む。
次いで、CPU71は、ステップ625に進んでエンジン回転速度NE及びカムシャフト位相角φと係数Cとの関係を規定するテーブルMapC、上記ステップ615にて読み込んだエンジン回転速度NE及び上記ステップ620にて読み込んだカムシャフト位相角φに基づいて係数Cを決定する。ここで、係数Cは、比例係数である。
また、以下の説明において、MapX(a,b)と表記されるテーブルは、変数a及び変数bと値Xとの関係を規定するテーブルを意味することとする。また、値XをテーブルMapX(a,b)に基づいて求めるとは、値Xを現時点の変数a及び現時点の変数bと、テーブルMapX(a,b)と、に基づいて求める(決定する)ことを意味することとする。なお、変数は1つであってもよく3つ以上であってもよい。
更に、CPU71は、ステップ625にて、テーブルMapD(NE,φ)に基づいて値Dを決定する。ここで、値Dは、燃焼室25内に残存していた既燃ガスの量を反映した値である。
そして、CPU71は、ステップ630に進んで上記ステップ625にて決定された係数Cを上記ステップ610にて読み込んだサージタンク内圧力Psに乗じた値C・Psに上記ステップ625にて決定された値Dを加えた値C・Ps+Dに筒内流入空気流量mcを設定する。ここで、筒内流入空気流量mcは、第n気筒の燃焼室25へ流入する空気の流量である。
次いで、CPU71は、ステップ635に進んでテーブルMapTint(NE,φ)に基づいて吸気時間Tintを決定する。ここで、吸気時間Tintは、第n気筒の吸気弁32が開弁してから第n気筒の吸気弁32が閉弁するまでの時間(即ち、第n気筒の吸気弁32が開弁している状態が維持されることにより第n気筒の燃焼室25内へ空気が実質的に導入される時間)の推定値である。
その後、CPU71は、ステップ640に進んで上記ステップ630にて設定された筒内流入空気流量mcに上記ステップ635にて決定された吸気時間Tintを乗じた値mc・Tintに第1筒内空気量KL1を設定する。ここで、第1筒内空気量KL1は、第n気筒の吸気弁32が閉弁する時点(吸気弁閉弁時点)Tvcにて第n気筒の燃焼室25内に導入されている空気の量の推定値である。
そして、CPU71はステップ699に進んで本ルーチンを一旦終了する。
(燃料噴射量決定)
加えて、CPU71は、図7にフローチャートにより示した燃料噴射量決定ルーチンを、図6の第1筒内空気量推定ルーチンに続いて実行するようになっている。
従って、第1筒内空気量推定ルーチンの実行が終了すると、CPU71は、ステップ700から処理を開始してステップ705に進み、クランクポジションセンサ66からの信号に基づいて別途算出されたエンジン回転速度NEを読み込む。
次いで、CPU71は、ステップ710に進んで始動初期制御実行フラグXsの値が「1」であるか否かを判定する。この時点では、始動初期制御実行フラグXsの値は「1」であるから、CPU71は、ステップ710にて「Yes」と判定してステップ715に進み、燃焼開始フラグXbの値が「1」であるか否かを判定する。
この時点では、いずれの気筒においても混合ガスの燃焼は発生していない。従って、燃焼開始フラグXbの値が「0」であるから、CPU71は、ステップ715にて「No」と判定してステップ720に進み、第n気筒(現時点にて燃料噴射量決定時点Tc1を迎えた気筒)の燃料噴射量fi(n)を燃焼発生前燃料噴射量fi0に設定する。ここで、燃焼発生前燃料噴射量fi0は、所定の値に予め設定されている。なお、燃焼発生前燃料噴射量fi0は、冷却水温度Twが低くなるほど多くなるように設定される値であってもよい。
次いで、CPU71は、ステップ725に進んで上記ステップ720にて設定された第n気筒の燃料噴射量fi(n)に応じた指示信号を、第n気筒のインジェクタ39に対して送出する。これにより、第n気筒のインジェクタ39は、上記決定された第n気筒の燃料噴射量fi(n)に応じた燃料噴射期間Tinjにてその燃料噴射量fi(n)だけ燃料を噴射する。
そして、CPU71はステップ799に進んで本ルーチンを一旦終了する。
(第2筒内空気量推定)
更に、CPU71は、いずれかの気筒が推定時点としての吸気弁閉弁時点Tvcを迎える毎に、吸気弁閉弁時点Tvcを迎えた気筒(第m気筒)の現時点における筒内空気量を推定するため、図8にフローチャートにより示した第2筒内空気量推定ルーチンを実行するようになっている。なお、この第2筒内空気量推定ルーチンの処理が実行されることは、空燃比推定手段の機能の一部が達成されることに対応している。
ここで、値mは、第m気筒が現時点にて吸気弁閉弁時点Tvcを迎えた気筒であることを表す整数である。値mは、気筒を判別するための図示しない気筒判別ルーチンをCPU71が実行することにより設定される。
この第2筒内空気量推定ルーチンは、筒内空気量の推定値として第1筒内空気量KL1に代えて第2筒内空気量KL2を採用する点を除いて、図6に示した第1筒内空気量推定ルーチンと同一のルーチンである。ここで、第2筒内空気量KL2は、現時点(吸気弁閉弁時点Tvc)にて第m気筒の燃焼室25内に導入されている空気の量の推定値である。
従って、所定のタイミングになると、CPU71は、ステップ800から処理を開始して、図6の第1筒内空気量推定ルーチンのステップ605〜ステップ640の処理を実行する場合と同様に、ステップ805〜ステップ840の処理を実行する。即ち、CPU71は、現時点にて検出されたサージタンク内圧力Psと、現時点にて算出されているエンジン回転速度NEと、現時点にて検出されたカムシャフト位相角φと、に基づいて現時点にて第m気筒の燃焼室25内に導入されている空気の量である筒内空気量を第2筒内空気量KL2として推定する。
なお、吸気弁閉弁時点Tvcにて検出されたサージタンク内圧力Ps及び吸気弁閉弁時点Tvcにて算出されているエンジン回転速度NEは、吸気弁閉弁時点Tvcまでに確定した物理量であって燃焼室25内に導入される空気の量に影響を及ぼす物理量であると言うことができる。
(空燃比推定)
更に、CPU71は、図9にフローチャートにより示した空燃比推定ルーチンを、図8の第2筒内空気量推定ルーチンに続いて実行するようになっている。なお、この空燃比推定ルーチンの処理が実行されることは、空燃比推定手段の機能の一部が達成されることに対応している。
従って、第2筒内空気量推定ルーチンの実行が終了すると、CPU71は、ステップ900から処理を開始してステップ905に進み、始動初期制御実行フラグXsの値が「1」であるか否かを判定する。
この時点では、始動初期制御実行フラグXsの値は「1」であるから、CPU71は、ステップ905にて「Yes」と判定してステップ910に進み、クランクポジションセンサ66からの信号に基づいて別途算出されたエンジン回転速度NEを読み込む。次いで、CPU71は、ステップ915に進んで冷却水温度センサ69により検出された冷却水温度Twを読み込む。
そして、CPU71は、ステップ920に進んでテーブルMapR(KL2,NE,Tw)に基づいて燃料付着率Rを決定する。ここで、燃料付着率Rは、噴射された燃料のうちの、吸気通路を形成する部材である吸気通路形成部材(吸気ポート31を形成する壁面及び吸気弁32)に直接付着する燃料の割合(付着率)である。
更に、CPU71は、ステップ920にてテーブルMapP(KL2,NE,Tw)に基づいて燃料残留率Pを決定する。ここで、燃料残留率Pは、吸気通路形成部材に付着している燃料のうちの、一つの燃焼サイクルが経過しても吸気通路形成部材に付着したまま残留している燃料の割合(残留率)である。
次いで、CPU71は、ステップ925に進んで、ステップ925内に示した式と、上記ステップ920にて決定された燃料付着率R及び燃料残留率Pと、第m気筒(現時点にて吸気弁閉弁時点Tvcを迎えた気筒)に対する燃料噴射量決定時点Tc1にて決定された第m気筒の燃料噴射量fi(m)と、第m気筒の燃料付着量fw(m)と、に基づいて筒内燃料量fcを推定する。
なお、燃料噴射量fi(1)〜fi(4)は、イグニッション・スイッチISがオフ状態からオン状態へ切り替えられた時に「0」に設定される。また、燃料付着量fw(1)〜fw(4)も、イグニッション・スイッチISがオフ状態からオン状態へ切り替えられた時に「0」に設定される。
そして、CPU71は、ステップ930に進んで、ステップ930内に示した式と、上記ステップ920にて決定された燃料付着率R及び燃料残留率Pと、第m気筒に対する燃料噴射量決定時点Tc1にて決定された第m気筒の燃料噴射量fi(m)と、第m気筒の燃料付着量fw(m)と、に基づいて第m気筒の燃料付着量fw(m)を更新する。
次いで、CPU71は、ステップ935に進んで、CPU71が第2筒内空気量推定ルーチンを実行することにより推定された第2筒内空気量KL2を、上記ステップ925にて推定された筒内燃料量fcにより除した値KL2/fcに空燃比AbyFを設定する。ここで、空燃比AbyFは、第m気筒の燃焼室25内に形成された混合ガスの空燃比の推定値である。
そして、CPU71はステップ999に進んで本ルーチンを一旦終了する。
(点火時期決定)
加えて、CPU71は、図10にフローチャートにより示した点火時期決定ルーチンを、図9の空燃比推定ルーチンに続いて実行するようになっている。
従って、空燃比推定ルーチンの実行が終了すると、CPU71は、ステップ1000から処理を開始してステップ1005に進み、始動初期制御実行フラグXsの値が「1」であるか否かを判定する。
この時点では、始動初期制御実行フラグXsの値は「1」であるから、CPU71は、ステップ1005にて「Yes」と判定してステップ1010に進み、燃焼開始フラグXbの値が「1」であるか否かを判定する。
この時点では、いずれの気筒においても混合ガスの燃焼は発生していない。従って、燃焼開始フラグXbの値が「0」であるから、CPU71は、ステップ1010にて「No」と判定してステップ1015に進み、点火時期SAを予め定められた所定の燃焼発生前点火時期SA0に設定する。
なお、燃焼発生前点火時期SA0は、BTDCにより表される。BTDCは、気筒毎に定義されている。BTDCは、各気筒における圧縮上死点TDC2を原点としクランク軸24の回転方向と逆方向を正にとったクランク軸24の回転角度(クランク角度)である。以下、本明細書において、点火時期を表す変数は、いずれもBTDCにより表される。
次いで、CPU71は、ステップ1020に進んで、上記ステップ1015にて設定された点火時期SAに応じた指示信号を、第m気筒(現時点にて吸気弁閉弁時点Tvcを迎えた気筒)のイグナイタ38に対して送出する。これにより、第m気筒のイグナイタ38は、点火時期SAにて第m気筒の点火プラグ37に高電圧を印加する。この結果、第m気筒の点火プラグ37は第m気筒の燃焼室25において火花を発生させる。
そして、CPU71はステップ1099に進んで本ルーチンを一旦終了する。
その後、吸気通路形成部材に付着した燃料が気化すること等により十分な量の気化した燃料がある気筒の燃焼室25に導入されると、その気筒の燃焼室25にて点火プラグ37が火花を発生させることにより混合ガスが燃焼する。ここでは、図11に示したように、第1気筒にて最初の燃焼(初爆)が発生した場合を想定して説明を続ける。
この場合、第1気筒における最初の燃焼が発生した燃焼サイクルの圧縮上死点TDC2を第1気筒が迎えた時点(初爆発生時点)からクランク軸24が90°だけ回転した時点になると、CPU71は、図4の燃焼開始判定ルーチンの処理を開始してステップ415に進む。
この時点では、第1気筒にて混合ガスの燃焼が発生したことにより、比較的大きな図示トルクが発生しているので、回転所要時間T30は閾値時間αよりも短くなっている。
従って、CPU71は、ステップ415にて「Yes」と判定してステップ420に進み、燃焼開始フラグXbの値を「1」に設定する。
そして、CPU71はステップ499に進んで本ルーチンを一旦終了する。
更に、CPU71が図5の燃焼発生回数算出ルーチンの処理を開始して、燃焼開始フラグXbの値が「1」であるか否かを判定するステップ510に進んだとき、CPU71は、ステップ510にて「Yes」と判定してステップ515に進む。
CPU71は、ステップ515にて燃焼発生回数k(=0)に「1」を加えた値k+1(=1)に燃焼発生回数kを設定する。次いで、CPU71は、ステップ599に進んで本ルーチンを一旦終了する。
加えて、CPU71が図7の燃料噴射量決定ルーチンの処理を開始して、燃焼開始フラグXbの値が「1」であるか否かを判定するステップ715に進んだとき、CPU71は、ステップ715にて「Yes」と判定してステップ730に進む。
CPU71は、ステップ730にてテーブルMapfia(KL1,NE)に基づいて始動初期燃料噴射量fiaを決定し、決定した始動初期燃料噴射量fiaに第4気筒の燃料噴射量fi(4)を設定する。ここで、テーブルMapfiaは、求められる始動初期燃料噴射量fiaが、燃焼室25内に形成される混合ガスの空燃比を図示トルクが最大となる最大出力空燃比よりもリーン側の目標空燃比(本例では、理論空燃比)に一致させる量となるように、実験による測定値に基づいて予め設定されている。
なお、ステップ730の処理が実行されることは、吸気弁閉弁時点Tvc(実際には、吸気弁開弁時点Tvo)よりも前の時点にて筒内空気量を推定し推定した筒内空気量と目標空燃比とに基づいて燃料噴射量を決定する手段の機能の一部が達成されることに対応している。
次いで、CPU71は、ステップ725に進んで上記ステップ730にて設定された第4気筒の燃料噴射量fi(4)に応じた指示信号を、第4気筒(現時点にて燃料噴射量決定時点Tc1を迎えた気筒)のインジェクタ39に対して送出した後、図7のルーチンを一旦終了する。
そして、クランク軸24が回転して第3気筒が吸気弁閉弁時点Tvcを迎える。この時点にて、CPU71が図10の点火時期決定ルーチンの処理を開始して、燃焼開始フラグXbの値が「1」であるか否かを判定するステップ1010に進んだとき、CPU71は、ステップ1010にて「Yes」と判定してステップ1025に進む。
CPU71は、ステップ1025にてクランクポジションセンサ66からの信号に基づいて別途算出されているエンジン回転速度NEを読み込む。
次いで、CPU71は、ステップ1030に進んで、テーブルMapNEref(k)に基づいて基準エンジン回転速度NErefを決定する。ここで、テーブルMapNErefは、求められる基準エンジン回転速度NErefが、所定の基準燃料を使用した実験において、初爆発生時点から燃焼発生回数kに180°を乗じた角度だけクランク軸24が回転した時点にて取得されるエンジン回転速度NEと一致するように予め設定されている。
次いで、CPU71は、ステップ1035に進んで、上記ステップ1030にて決定された基準エンジン回転速度NErefから上記ステップ1025にて読み込んだエンジン回転速度NEを減じた値NEref−NEに所定の正の係数Lを乗じた値L・(NEref−NE)にフィードバック補正量ΔSAを設定する。ここで、係数Lは、実際の空燃比が目標空燃比に一致している状態において適合された係数である。
次に、CPU71は、ステップ1040に進んでテーブルMapδ(AbyF)に基づいて空燃比補償用補正量δを決定する。ここで、テーブルMapδは、空燃比AbyFが目標空燃比(本例では、理論空燃比)に一致している場合に求められる空燃比補償用補正量δが「0」となるとともに、空燃比AbyFが目標空燃比よりも大きい(リーン側の空燃比である)場合に求められる空燃比補償用補正量δが正の値となり、一方、空燃比AbyFが目標空燃比よりも小さい(リッチ側の空燃比である)場合に求められる空燃比補償用補正量δが負の値となるように予め設定されている。更に、テーブルMapδは、空燃比AbyFが小さくなる(リッチ側の空燃比になる)ほど、求められる空燃比補償用補正量δが小さくなる(点火時期SAをより遅角側に補正する量となる)ように予め設定されている。
次いで、CPU71は、ステップ1045に進んでフィードバック補正量ΔSAに空燃比補償用補正量δを加えた値ΔSA+δにフィードバック補正量ΔSAを設定する。そして、CPU71は、ステップ1050に進んで点火時期SAにフィードバック補正量ΔSAを加えた値SA+ΔSAに点火時期SAを設定(置換)する。
なお、ステップ1025〜ステップ1050の処理が実行されることは、点火時期補正手段の機能が達成されることに対応している。
次いで、CPU71は、ステップ1020に進んで、上記ステップ1050にて設定された点火時期SAに応じた指示信号を、現時点にて吸気弁閉弁時点Tvcを迎えた気筒(第3気筒)のイグナイタ38に対して送出した後、図10のルーチンを一旦終了する。
このように、始動初期期間中、エンジン回転速度NEを基準エンジン回転速度NErefに一致させるように、取得されたエンジン回転速度NEに基づいてフィードバック補正量ΔSAが決定され、決定されたフィードバック補正量ΔSAだけ点火時期SAが補正される。そして、補正された点火時期SAにて混合ガスが点火される。これにより、エンジン回転速度NEを基準エンジン回転速度NErefに近づけることができる。この結果、吹き上がりの発生を防止することができるとともに、内燃機関10を迅速に始動させることができる。
更に、燃焼室25内に形成された混合ガスの空燃比が推定され、推定された空燃比AbyFがリッチ側の空燃比であるほど図示トルクTqを小さくするように上記フィードバック補正量ΔSAが補正される。
これにより、実際の筒内空気量が予定されていた筒内空気量よりも少なくなることにより実際の空燃比が予定されていた空燃比(目標空燃比)よりもリッチ側の空燃比となっても、図示トルクTqが過大になることを回避することができる。更に、実際の筒内空気量が予定されていた筒内空気量よりも多くなることにより実際の空燃比が目標空燃比よりもリーン側の空燃比となっても、図示トルクTqが過小になることを回避することができる。この結果、実際の空燃比が目標空燃比と相違する場合であっても、エンジン回転速度NEを基準エンジン回転速度NErefに迅速に近づけることができる。
このような始動初期制御を行うための処理は、始動初期制御実行フラグXsの値が「0」に変更されるまで継続する。
そして、時間の経過に伴って、図5のステップ515の処理が繰り返し実行されることにより、燃焼発生回数kが増加させられ、ある時点にて燃焼発生回数kが閾値回数kthとなる。
従って、この時点にてCPU71が図3の始動初期制御実行判定ルーチンの処理を開始してステップ315に進んだとき、CPU71は、ステップ315にて「No」と判定してステップ325に進む。CPU71は、ステップ325にて始動初期制御実行フラグXsの値を「0」に設定し、続くステップ399にて本ルーチンを一旦終了する。
加えて、CPU71が図5の燃焼発生回数算出ルーチンの処理を開始して、始動初期制御実行フラグXsの値が「1」であるか否かを判定するステップ505に進んだとき、CPU71は、ステップ505にて「No」と判定してステップ599に直接進みこのルーチンを一旦終了する。
更に、CPU71が図6の第1筒内空気量推定ルーチンの処理を開始して、始動初期制御実行フラグXsの値が「1」であるか否かを判定するステップ605に進んだとき、CPU71は、ステップ605にて「No」と判定してステップ699に直接進みこのルーチンを一旦終了する。
加えて、CPU71が図7の燃料噴射量決定ルーチンの処理を開始して、始動初期制御実行フラグXsの値が「1」であるか否かを判定するステップ710に進んだとき、CPU71は、ステップ710にて「No」と判定してステップ735に進む。
CPU71は、ステップ735にてエアフローメータ61により検出された吸気流量Gaを読み込む。次いで、CPU71は、ステップ740に進んでテーブルMapfib(Ga,NE)に基づいて通常時燃料噴射量fibを決定し、決定した通常時燃料噴射量fibに第n気筒の燃料噴射量fi(n)を設定する。ここで、テーブルMapfibは、求められる通常時燃料噴射量fibが、燃焼室25内に形成される混合ガスの空燃比を目標空燃比(本例では、理論空燃比)に一致させる量となるように、実験による測定値に基づいて予め設定されている。
次いで、CPU71は、ステップ725に進んで上記ステップ740にて設定された第n気筒の燃料噴射量fi(n)に応じた指示信号を、第n気筒のインジェクタ39に対して送出した後、図7のルーチンを一旦終了する。
そして、ある気筒が吸気弁閉弁時点Tvcを迎えると、CPU71は、図8の第2筒内空気量推定ルーチンの処理を開始する。そして、CPU71は、始動初期制御実行フラグXsの値が「1」であるか否かを判定するステップ805に進んだとき、ステップ805にて「No」と判定してステップ899に直接進みこのルーチンを一旦終了する。即ち、CPU71は、筒内空気量を推定する処理を実行することなくこのルーチンを一旦終了する。
更に、CPU71が図9の空燃比推定ルーチンの処理を開始して、始動初期制御実行フラグXsの値が「1」であるか否かを判定するステップ905に進んだとき、CPU71は、ステップ905にて「No」と判定してステップ999に直接進みこのルーチンを一旦終了する。
加えて、CPU71が図10の点火時期決定ルーチンの処理を開始して、始動初期制御実行フラグXsの値が「1」であるか否かを判定するステップ1005に進んだとき、CPU71は、ステップ1005にて「No」と判定してステップ1055に進む。
CPU71は、ステップ1055にてクランクポジションセンサ66からの信号に基づいて別途算出されているエンジン回転速度NEを読み込み、続くステップ1060にてエアフローメータ61により検出された吸気流量Gaを読み込む。
次いで、CPU71は、ステップ1065に進んでテーブルMapSAb(Ga,NE)に基づいて通常時点火時期SAbを決定し、決定した通常時点火時期SAbに点火時期SAを設定する。
そして、CPU71は、ステップ1020に進んで、上記ステップ1065にて設定された点火時期SAに応じた指示信号を、現時点にて吸気弁閉弁時点Tvcを迎えた気筒のイグナイタ38に対して送出した後、図10のルーチンを一旦終了する。
次に、燃焼発生回数kが閾値回数kth以上となる前に、運転者がアクセルペダル81を操作した場合について説明する。
この場合、CPU71が図3の始動初期制御実行判定ルーチンの処理を開始してステップ310に進んだとき、CPU71は、ステップ310にて「No」と判定してステップ325に進む。CPU71は、ステップ325にて始動初期制御実行フラグXsの値を「0」に設定し、続くステップ399にて本ルーチンを一旦終了する。
そして、CPU71は、上述した燃焼発生回数kが閾値回数kth以上となった場合と同様に、ステップ740にて第n気筒の燃料噴射量fi(n)を通常時燃料噴射量fibに設定するとともに、ステップ1065にて点火時期SAを通常時点火時期SAbに設定する。
以上、説明したように、本発明による内燃機関の制御装置の第1実施形態によれば、始動初期期間中、実際の空燃比が目標空燃比と相違する場合であっても、エンジン回転速度NEを基準エンジン回転速度NErefに迅速に近づけることができる。
なお、上記第1実施形態において、制御装置は、点火時期決定ルーチンを吸気弁閉弁時点Tvcにて実行するように構成されていたが、点火時期決定ルーチンを圧縮上死点TDC2よりもクランク角度にて90°だけ前の時点にて実行するように構成されていてもよい。この場合、更に、空燃比推定ルーチンも圧縮上死点TDC2よりもクランク角度にて90°だけ前の時点にて実行してもよい。
また、上記第1実施形態において、制御装置は、第2筒内空気量KL2を推定する推定時点として、吸気弁閉弁時点Tvcを採用するように構成されていたが、吸気弁閉弁時点Tvcよりも後の時点であって想定される点火時期のうちの最も進角側の時期よりも前の時点(例えば、圧縮上死点TDC2よりもクランク角度にて90°だけ前の時点)を採用するように構成されていてもよい。
この場合、制御装置は、吸気弁閉弁時点Tvcにて検出されたサージタンク内圧力Ps及び吸気弁閉弁時点Tvcにて算出されたエンジン回転速度NEをRAM73に保持し、保持したサージタンク内圧力Ps及びエンジン回転速度NEに基づいて第2筒内空気量KL2を推定するように構成されることが好適である。
<第2実施形態>
次に、本発明の第2実施形態に係る内燃機関の制御装置について説明する。
ところで、吸気弁32が開弁している(吸気弁32の状態が連通状態に維持されている)期間においては、吸気通路から燃焼室25へ空気が流入する。これにより、吸気通路を形成する壁面又は燃焼室25を形成する壁面に付着した燃料の気化が促進される。また、燃焼室25内に形成された混合ガス中の燃料の拡散が進行する。
従って、吸気弁開弁時点Tvoから吸気弁閉弁時点Tvcまでの吸気時間Tint(吸気弁32の状態が連通状態に維持されている時間)が長くなるほど、吸気通路を形成する壁面又は燃焼室25を形成する壁面に付着した燃料のうちの気化する燃料の割合が高くなるとともに、混合ガス中の燃料の分布が一様な分布に近づけられる。この結果、燃焼室25にて実際に燃焼する燃料の量は多くなる。即ち、図12に示したように、吸気時間Tintが長くなるほど、燃焼に供される混合ガスの実際の空燃比(実質空燃比)はよりリッチ側の空燃比となる。
また、吸気弁閉弁時点Tvcから圧縮上死点TDC2までの期間においては、燃焼室25内の混合ガスは圧縮される。これにより、混合ガスの温度が高くなるので、燃焼室25を形成する壁面に付着している燃料の気化が促進される。また、混合ガス中の燃料の予反応(燃料分子の分解等の予備的な反応)が促進される。
従って、吸気弁閉弁時点Tvcから基準時点としての圧縮上死点TDC2までの圧縮時間Tcmpが長くなるほど、燃焼室25を形成する壁面に付着した燃料のうちの気化する燃料の割合が高くなるとともに、混合ガス中の燃料のうちの予反応が完了した燃料の割合が高くなる。この結果、実際に燃焼する燃料の量は多くなる。即ち、図13に示したように、圧縮時間Tcmpが長くなるほど、実質空燃比はよりリッチ側の空燃比となる。
そこで、第2実施形態に係る制御装置は、推定した空燃比AbyFを吸気時間Tint及び圧縮時間Tcmpに基づいて補正する。なお、第2実施形態に係る制御装置は、この空燃比AbyFの補正を行う点のみにおいて、第1実施形態に係る制御装置と相違している。従って、以下、かかる相違点を中心として説明する。
第2実施形態に係る制御装置は、図9に示した空燃比推定ルーチンに代えて、このルーチンのステップ935の処理を図14に示したステップ1435〜ステップ1455の処理に置換した空燃比推定ルーチンを実行するようになっている。
従って、CPU71が空燃比推定ルーチンの処理を開始すると、CPU71は、ステップ905〜ステップ930の処理を実行した後、ステップ1435に進む。CPU71は、ステップ1435にて、カムポジションセンサ65からの信号及びクランクポジションセンサ66からの信号に基づいて別途算出されたカムシャフト位相角φを読み込む。
次いで、CPU71は、ステップ1440に進んで、テーブルMapTint(NE,φ)に基づいて吸気時間Tintを決定するとともに、テーブルMapTcmp(NE,φ)に基づいて圧縮時間Tcmpを決定する。
ここで、吸気時間Tintは、第m気筒の吸気弁32が開弁してから第m気筒の吸気弁32が閉弁するまでの時間(即ち、第m気筒の吸気弁32が開弁している状態が維持されることにより第m気筒の燃焼室25内へ空気が実質的に導入される時間)の推定値である。更に、圧縮時間Tcmpは、第m気筒の吸気弁32が閉弁してから第m気筒が圧縮上死点TDC2を迎えるまでの時間(即ち、第m気筒の燃焼室25内の混合ガスが実質的に圧縮される時間)の推定値である。
また、テーブルMapTintは、エンジン回転速度NEが高くなるほど、求められる吸気時間Tintが短くなるように実験による測定値に基づいて予め設定されている。同様に、テーブルMapTcmpも、エンジン回転速度NEが高くなるほど、求められる圧縮時間Tcmpが短くなるように実験による測定値に基づいて予め設定されている。
そして、CPU71は、ステップ1445に進んで、テーブルMapAint(Tw)に基づいて吸気補正係数Aintを決定するとともに、テーブルMapAcmp(Tw)に基づいて圧縮補正係数Acmpを決定する。
ここで、テーブルMapAintは、求められる吸気補正係数Aintが負の値となるように、且つ、冷却水温度Twが高くなるほど求められる吸気補正係数Aintが小さくなる(吸気補正係数Aintの絶対値|Aint|が大きくなる)ように、実験による測定値に基づいて予め設定されている。同様に、テーブルMapAcmpも、求められる圧縮補正係数Acmpが負の値となるように、且つ、冷却水温度Twが高くなるほど求められる圧縮補正係数Acmpが小さくなる(圧縮補正係数Acmpの絶対値|Acmp|が大きくなる)ように、実験による測定値に基づいて予め設定されている。
次いで、CPU71は、ステップ1450に進んで、ステップ1450内に示した式と、上記ステップ1440にて決定された吸気時間Tint及び圧縮時間Tcmpと、上記ステップ1445にて決定された吸気補正係数Aint及び圧縮補正係数Acmpと、「1」よりも大きい所定の基本値Raf0と、に基づいて空燃比補正係数Rafを決定する(図15を参照。)。なお、基本値Raf0は、値|Aint・Tint+Acmp・Tcmp|が最大となっても空燃比補正係数Rafが正の値となるように定められている。
そして、CPU71は、ステップ1455に進んで、第2筒内空気量推定ルーチンにて設定された第2筒内空気量KL2を上記空燃比推定ルーチンのステップ925にて設定された筒内燃料量fcにより除した値KL2/fcに上記ステップ1450にて決定された空燃比補正係数Rafを乗じた値Raf・KL2/fcに空燃比AbyFを設定する。即ち、空燃比AbyFは、推定された第2筒内空気量KL2と推定された筒内燃料量fcとに基づいて推定される空燃比を、吸気時間Tint及び圧縮時間Tcmpに基づいて補正した値に設定される。
そして、CPU71はステップ999に進んでこのルーチンを一旦終了する。
これにより、フィードバック補正量ΔSAを補正する基となる空燃比AbyFを実際の空燃比に近づけることができる。この結果、実際の空燃比に応じた適切な時期に点火時期SAを設定することができ、エンジン回転速度NEを基準エンジン回転速度NErefにより一層迅速に近づけることができる。
なお、上記第2実施形態において、制御装置は、吸気時間Tint及び圧縮時間Tcmpの両方を吸気弁閉弁時点Tvcにて算出されたエンジン回転速度NEに基づいて決定するように構成されていたが、吸気時間Tintを吸気弁閉弁時点Tvcにて算出されたエンジン回転速度NEに基づいて決定するとともに、圧縮時間Tcmpを圧縮上死点TDC2にて算出されたエンジン回転速度NEに基づいて決定するように構成されていてもよい。この場合、制御装置は、空燃比推定ルーチン及び点火時期決定ルーチンを圧縮上死点TDC2にて実行するように構成されることが好適である。
また、上記第2実施形態において、制御装置は、吸気時間Tint及び圧縮時間Tcmpの両方に基づいて空燃比AbyFを補正するように構成されていたが、吸気時間Tint及び圧縮時間Tcmpのいずれか一方に基づいて空燃比AbyFを補正するように構成されていてもよい。
なお、本発明は上記各実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、上記各実施形態において、制御装置は、吸気弁閉弁時点Tvcにて算出されたエンジン回転速度NEに基づいて第2筒内空気量KL2を推定するように構成されていたが、吸気弁閉弁時点Tvcにて算出されたエンジン回転速度NEと、吸気弁開弁時点Tvoにて算出されたエンジン回転速度NEと、の平均値に基づいて第2筒内空気量KL2を推定するように構成されていてもよい。
更に、上記各実施形態において、制御装置は、サージタンク内圧力Psに基づいて第2筒内空気量KL2を推定するように構成されていたが、エアフローメータ61により検出された吸気流量Gaに基づいて第2筒内空気量KL2を推定するように構成されていてもよい。また、制御装置は、吸気通路内の空気の挙動をエネルギー保存則、運動量保存則及び質量保存則等の物理法則に従って記述した空気モデルに吸気弁閉弁時点Tvcにて確定したパラメータを適用することにより第2筒内空気量KL2を推定してもよい。この空気モデルは、特開2003−184613号公報及び特開2001−41095号公報等に開示された周知のモデルである。
加えて、上記各実施形態において、制御装置は、空燃比AbyFに基づいて補正する前のフィードバック補正量ΔSAをエンジン回転速度NEと基準エンジン回転速度NErefとの差である回転速度差ΔNE(=NEref−NE)に比例する量L・(NEref−NE)に設定していた(図10のステップ1035を参照。)が、回転速度差ΔNEを微分した値に比例する量、又は、回転速度差ΔNEを積分した値に比例する量に設定してもよい。また、制御装置は、空燃比AbyFに基づいて補正する前のフィードバック補正量ΔSAを、回転速度差ΔNEに比例する量、回転速度差ΔNEを微分した値に比例する量、及び、回転速度差ΔNEを積分した値に比例する量のすべての和に設定してもよく、これらの3つの量のうちのいずれか2つの和に設定してもよい。
更に、上記各実施形態は、空燃比AbyFが最大出力空燃比よりもリッチ側の空燃比となった場合、上記テーブルMapδに代えて、空燃比AbyFが小さくなる(リッチ側の空燃比になる)ほど、求められる空燃比補償用補正量δが大きくなる(点火時期SAをより進角側に補正する量となる)ように設定されたテーブルを用いるように構成されていてもよい。
10…内燃機関、21…シリンダ、22…ピストン、24…クランク軸、25…燃焼室、31…吸気ポート、32…吸気弁、33…可変吸気タイミング装置、37…点火プラグ、38…イグナイタ、39…インジェクタ、42…サージタンク、66…クランクポジションセンサ、68…サージタンク内圧力センサ、71…CPU。