以下、本発明の一実施形態について、図面を参照しながら説明する。
図1は、本実施形態に係る内燃機関(以下、「エンジン」という)1及びその制御装置2の構成を示す図である。
エンジン1は、複数の気筒1a及び複数のピストン1b(図1には、何れも1つのみ図示する)を備える多気筒のものである。またこのエンジン1は、運転モードを、各気筒の燃焼室での燃焼に供される混合気の空燃比をストイキ近傍(例えば、14.7[A/F])とするストイキ運転と、混合気の空燃比をストイキよりリーン(例えば、20〜30[A/F])とするリーン運転とで変更可能である。
エンジン1には、気筒毎に燃料噴射弁1c及び点火プラグ1d(図1では、何れも1つのみ図示する)が設けられている。これら燃料噴射弁1cは、制御装置2の一部を構成する電子制御ユニット(以下、「ECU」という)7に電気的に接続されている。ECU7は、後述の図2のS5に示す燃料噴射制御処理を実行することによって燃料噴射弁1cからの燃料噴射量に対する目標である目標噴射量を算出し、この目標噴射量が実現されるように燃料噴射弁1cからの燃料噴射量や噴射時期を制御する。またこれら点火プラグ1dも、ECU7に電気的に接続されている。ECU7は、後述の図2のS4に示す点火時期制御処理を実行することによって点火プラグ1dによって火花を発生させる時期に対する目標である目標点火時期を算出し、この目標点火時期が実現されるように点火プラグ1dによる点火時期を制御する。
エンジン1には、吸気が流れる吸気管11と、排気が流れる排気管12とが設けられている。吸気管11は、吸気マニホルドの複数の分岐部を介してエンジン1の各気筒1aの吸気ポートに接続されている。排気管12は、排気マニホルドの複数の分岐部を介してエンジン1の各気筒1aの排気ポートに接続されている。
吸気管11には、エンジン1の気筒1aに導入される空気の量を制御するスロットルバルブ9が設けられている。スロットルバルブ9は、吸気管11内に開閉可能に設けられた電磁弁であり、アクチュエータ91を介してECU7に接続されている。スロットルバルブ9の開度は、図示しないバッテリからアクチュエータ91へ供給される駆動電流のデューティ比を、ECU7によって制御することによって調整される。ECU7では、後述の図2のS3に示す吸気制御処理を実行することによってスロットルバルブ9の開度に対する目標に相当する目標開度を算出し、この目標開度が実現されるようにアクチュエータ91の通電制御を行う。
排気管12には、排気を触媒の作用下で浄化する触媒浄化装置15が設けられている。触媒浄化装置15は、ストイキ空燃比の排気の下で排気中のHC,CO,NOxを三元浄化反応によって浄化する三元触媒や、リーン空燃比の排気の下で排気中のNOxを還元浄化するリーンNOx触媒等を備える。
ECU7は、センサの検出信号をA/D変換するI/Oインターフェース、図2のエンジン制御処理、図4の点火時期制御処理、図5の最大筒内圧角フィードバック制御処理及び図8の燃料噴射制御処理等の各種プログラムや図3、図6、図7A,7B、図10、及び図11等のマップ等の各種データを記憶するRAMやROM、上記プログラムに従って各種演算処理を実行するCPU、及びCPUの演算処理結果に応じて各種アクチュエータの通電制御を行う駆動回路等で構成される。
ECU7には、エンジン1の運転状態を把握するため、エアフローメータ61、空燃比センサ62、クランク角度位置センサ63、アクセル開度センサ64、筒内圧センサ65、NOxセンサ66、吸気圧センサ67、ノックセンサ68、水温センサ69、吸気温センサ70、及びスロットル開度センサ71等の各種センサが接続されている。
エアフローメータ61は、吸気管11に設けられ、吸気管11を介してエンジン1の吸気マニホルドに流入する空気の量(以下、「吸気量」ともいう)を検出し、検出値に略比例した信号をECU7に送信する。
空燃比センサ62は、排気管12に設けられ、エンジン1の排気の空燃比(排気中の酸素に対する燃料成分の比)を検出し、検出値に応じた信号をECU7に送信する。空燃比センサ62は、検出箇所の空燃比に略比例したリニアな出力特性を有する。ただし、空燃比センサ62による空燃比の検出精度は、ストイキ(より具体的には、14.7[A/F])近傍に対し、リーン領域(より具体的には、20[A/F]以上の領域)で著しく低下する。
クランク角度位置センサ63は、エンジン1のクランクシャフトに固定されたパルサの回転に応じて、所定のクランク角ごとにパルス信号をECU7に送信する。ECU7では、このクランク角度位置センサ63からのパルス信号に基づいてエンジン回転数が算出される。
アクセル開度センサ64は、運転者が操作するアクセルペダルの踏み込み量を検出し、これに応じた検出信号をECU7に送信する。運転者からエンジン1に要求される負荷に相当する目標トルクは、このアクセル開度センサ64の検出信号とエンジン回転数とに基づいて、ECU7によって算出される。
筒内圧センサ65は、エンジン1の気筒1a内の圧力である筒内圧を検出し、これに応じた検出信号をECU7に送信する。NOxセンサ66は、排気管12を流れる排気のNOx濃度を検出し、これに応じた検出信号をECU7に送信する。
吸気圧センサ67は、吸気管11のうちスロットルバルブ9より下流側の圧力である吸気圧を検出し、検出値に応じた信号をECU7に送信する。ノックセンサ68は、エンジン1に装着され、このエンジン1で発生する振動を検出し、検出値に応じた信号をECU7に送信する。ECU7では、このノックセンサ68からの検出信号に基づいてノッキングの有無を判定する。
水温センサ69は、エンジン1の冷却水の温度を検出し、検出値に応じた信号をECU7に送信する。吸気温センサ70は、吸気管11のうちスロットルバルブ9より上流側に設けられ、吸気管11を介してエンジン1に供給される空気の温度である吸気温を検出し、検出値に応じた信号をECU7に送信する。スロットル開度センサ71は、スロットルバルブ9の開度であるスロットル開度を検出し、検出値に応じた信号をECU7に送信する。
以下、ECU7によるエンジン制御について説明する。
図2は、ECU7によるエンジン制御処理の具体的な手順を示すフローチャートである。図2に示すエンジン制御処理は、所定の周期(例えば、エンジン1の燃焼サイクル)毎にECU7において繰り返し実行される。
S1では、ECU7は、エンジン回転数及びアクセル開度を取得し、これら2つの値に基づいて図示しないマップを検索することによって、エンジンの実トルクに対する目標に相当する目標トルクTRQ[k]を算出する。なお以下では、今回の制御周期において算出される値については、括弧書きで符号“k”を付し、前回の制御周期において算出された値については、括弧書きで符号“k−1”を付す。
次にS2では、ECU7は、目標トルクTRQ[k]及びエンジン回転数NE[k]に応じて図3に示すような運転モード決定マップを検索することにより、今回の周期における運転モードを決定する。図3に示すように、エンジン回転数を横軸とし目標トルクを縦軸として表されるエンジンの運転領域において、中回転かつ中トルクの領域では運転モードとしてリーン運転が選択され、それ以外の領域ではストイキ運転が選択される。
次にS3では、ECU7は、吸気制御処理を実行する。この吸気制御処理では、目標トルクTRQ[k]及びエンジン回転数NE[k]に応じて、運転モード毎に規定された図示しないマップを検索することによって、目標トルクTRQ[k]を実現するような吸気量を目標吸気量として算出し、この目標吸気量を実現するようなスロットルバルブの目標開度を算出する。
次にS4では、ECU7は、点火時期制御処理を実行する。この点火時期制御処理では、ECU7は、後に図4及び図5を参照して説明する手順に従って目標点火時期を算出する。
次にS5では、ECU7は、燃料噴射制御処理を実行する。この燃料噴射制御処理では、ECU7は、後に図8を参照して説明する手順に従って目標噴射量を算出し、図2の処理を終了する。
図4は、点火時期制御処理の具体的な手順を示すフローチャートである。ECU7では、図4に示す手順に従って点火プラグ1dで火花を発生させるクランク角[deg.CA]である目標点火時期θIg_cmd[k]を算出する。
始めにS11では、ECU7は、エンジン回転数NE[k]及び吸気圧センサの検出信号を用いて得られる吸気圧PBA[k]に応じて図示しない基本点火時期マップを検索することにより、目標点火時期θIg_cmg[k]に対する基本値となる基本点火時期θIg_mbt[k]を算出する。なおこの基本点火時期マップによれば、基本点火時期θIg_mbt[k]は、エンジン1の出力トルクを最大とする所謂MBT(Minimum Spark Advance for Best Torque)が実現するように定められている。
次にS12では、ECU7は、吸気圧センサ67、ノックセンサ68、水温センサ69、吸気温センサ70、及びスロットル開度センサ71等の検出信号を用いることによって遅角要求量θIg_cr[k]を算出する。この遅角要求量θIg_cr[k]は、基本点火時期θIg_mbt[k]に加算されることにより、当該基本点火時期θIg_mbt[k]を増加側(すなわち、遅角側)に補正する。これにより、目標点火時期は、ノッキングが発生しないように、又は一旦発生したノッキングが抑制されるように設定される。なお、ECU7は、上記基本点火時期θIg_mbt[k]を増加側、すなわち遅角側へ補正するよう、この遅角要求量θIg_cr[k]を0又は正の値となるように算出する。より具体的には、ECU7は、下記の演算式に基づいて遅角要求量θIg_cr[k]を算出し、右辺の値が0又は負の値となった場合には遅角要求量θIg_cr[k]=0とし、右辺の値が正の値となった場合にはその値を遅角要求量θIg_cr[k]とする。
θIg_cr[k]=IGCR[k]+IGKNOCK[k]
上記式において、IGCR[k]は、環境補正項であり、水温センサ69、吸気圧センサ67、吸気温センサ70、及びスロットル開度センサ71等の検出信号を入力パラメータとして用いて図示しないマップを検索することによって算出される。より具体的には、ECU7は、上記入力パラメータによって特定される環境がノッキングを生じ易い環境である場合や、過渡運転時であって吸気量に遅れが生じる場合には、この環境補正項IGCR[k]を正の値に設定し、点火時期の遅角化を要求する。
また上記式において、IGKNOCK[k]は、ノッキング補正項であり、ノックセンサ68の検出信号に基づいて算出される。より具体的には、ECU7は、ノッキングセンサ68の検出信号に基づいてノッキングの有無を判定し、ノッキングが発生している場合にはIGKNOCK[k]を正の方向(遅角側)へ変化させ、ノッキングが発生していない場合にはIGKNOCK[k]を負の方向(進角側)へ変化させる。
次にS13では、ECU7は、運転モードとしてリーン運転が選択されているか否かを判別する。S13の判別がYESである場合、すなわちリーン運転が選択されている場合には、ECU7は、後に図5を参照して説明する最大筒内圧角フィードバック制御処理を実行することによって、上記基本点火時期θIg_mbt[k]に対する補正項に相当する最大筒内圧角FB補正項θIg_pfb[k]を算出する(S14参照)。S13の判別がNOである場合、すなわちリーン運転が選択されていない場合には、ECU7は、図5の最大筒内圧角フィードバック制御処理を実行することなく補正項θIg_pfb[k]を0とする(S15参照)。
次にS16では、ECU7は、下記式に示すように、基本点火時期θIg_mbt[k]に遅角要求量θIg_cr[k]及び最大筒内圧角FB補正項θIg_pfb[k]を加算することによって、目標点火時期θIg_cmd[k]を算出する。
θIg_cmd[k]
=θIg_mbt[k]+θIg_cr[k]+θIg_cmd[k]
図5は、最大筒内圧角フィードバック制御処理の具体的な手順を示すフローチャートである。ECU7では、図5に示す手順に従って最大筒内圧角FB補正項θIg_pfb[k]を算出する。
始めにS21では、ECU7は、筒内圧センサによって検出された筒内圧を用いることによって、前回の制御周期から今回の制御周期までの間(すなわち、時刻k−1〜kまでの間)で筒内圧が最大となったクランク角である最大筒内圧角θPmax[k]を算出する。次にS22では、ECU7は、前回の制御周期において図4の点火時期制御処理によって算出された目標点火時期θIg_cmd[k−1]を取得する。
次にS23では、ECU7は、最大筒内圧角θPmax[k]に対する目標に相当する目標最大筒内圧角θPmax_cmd[k]を算出する。より具体的には、ECU7は、前回の制御周期における遅角要求量θIg_cr[k−1]に応じて図6に示すようなマップを検索することによって、目標最大筒内圧角θPmax_cmd[k]を算出する。図6のマップによれば、目標最大筒内圧角θPmax_cmd[k]は、遅角要求量θIg_cr[k−1]が大きくなるほど大きな値に設定される。
次にS24では、ECU7は、目標最大筒内圧角上限θPmax_α1[k]及び目標最大筒内圧角下限θPmax_α2[k]を算出する。ここで、目標最大筒内圧角上限θPmax_α1[k]は、最適な燃焼状態を実現するために最大筒内圧角に対して設定される最適角度範囲の遅角側の限界角度に相当する。また目標最大筒内圧角下限θPmax_α2[k]は、この目標角度範囲の進角側の限界角度に相当する。すなわち、これら下限θPmax_α2[k]から上限θPmax_α1[k]までの角度範囲が、最適角度範囲となっている。以下で説明するように、ECU7では、制御周期毎に算出される最大筒内圧角θPmax[k]が、これら最適角度範囲(θPmax_α2[k]〜θPmax_α1[k])内に収まるように点火時期を制御する。
より具体的には、S24では、ECU7は、目標最大筒内圧角θPmax_cmd[k]に、エンジン1の燃焼変動を考慮して定められる所定の正の値を加算することによって目標最大筒内圧角上限θPmax_α1[k]を算出し、また目標最大筒内圧角θPmax_cmd[k]に、エンジン1の燃焼変動を考慮して定められる所定の正の値を減算することによって目標最大筒内圧角下限θPmax_α2[k]を算出する。又は、これら上限θPmax_α1[k]及び下限θPmax_α2[k]は、上述の目標最大筒内圧角θPmax_cmd[k]と同様に、遅角要求量θIg_cr[k]に応じて図6に示すようなマップを検索することによって算出してもよい。
次にS25では、ECU7は、燃焼状態が不安定にならないように目標点火時期に対して設定される進角側の限界角度[deg.CA]に相当する点火時期下限θIg_γ1[k]と遅角側の限界角度[deg.CA]に相当する点火時期上限θIg_γ2[k]とを算出する。より具体的には、ECU7は、目標トルクTRQ[k]と、前回の制御周期において後述の図8の燃料噴射制御処理でNOxセンサの検出信号に基づいて算出される推定空燃比AF_est[k−1](図8のS56参照)とに応じてマップを検索することによって、点火時期下限θIg_γ1[k]及び点火時期上限θIg_γ2[k]を算出する。以下で説明するように、ECU7では、燃焼状態が不安定にならないようにするため、目標点火時期をこれら下限θIg_γ1[k]から上限θIg_γ2[k]内に収まるように点火時期を制御する。
図7A及び図7Bは、点火時期下限及び上限を算出するために用いられるマップの一例である。より具体的には、図7Aは、上記マップにおいて推定空燃比を一定とした場合における目標トルクと点火時期下限θIg_γ1[k]及び点火時期上限θIg_γ2[k]との関係を示す図である。また図7Bは、上記マップにおいて目標トルクを一定とした場合における推定空燃比と点火時期下限θIg_γ1[k]及び点火時期上限θIg_γ2[k]との関係を示す図である。これら図7A及び図7Bに示すように、目標トルクTRQ[k]が大きくなるほどこれら下限θIg_γ1及び上限θIg_γ2は遅角側にシフトされる。また推定空燃比AF_est[k−1]が大きくなるほどこれら下限θIg_γ1[k]及び上限θIg_γ2[k]は、進角側にシフトされる。
次にS26では、ECU7は、S21で算出した最大筒内圧角θPmax[k]が目標最大筒内圧角上限θPmax_α1[k]より大きいか否かを判別する。S26の判別がYESである場合には、今回の制御周期において実現される最大筒内圧角を進角側に変更し、最適角度範囲内に収めるべく、S27に移る。
S27では、ECU7は、S22で取得した目標点火時期θIg_cmd[k−1]がS25で算出された点火時期下限θIg_γ1[k]より小さいか否かを判別する。S27の判別がNOである場合、すなわち目標点火時期θIg_cmd[k−1]がまだ点火時期上限θIg_γ1[k]を超えていない場合には、ECU7は、今回の制御周期で実現される最大筒内圧角を進角側に変更し、最適角度範囲内に収まるように、目標点火時期を進角化する(S28参照)。より具体的には、ECU7は、最大筒内圧角FB補正項θIg_pfb[k]を負の所定値−Δad(Δad>0)に設定し、図5の処理を終了する。
またS27の判別がYESである場合には、ECU7は、目標点火時期をこれ以上進角化させると燃焼状態が不安定になるおそれがあると判断し、最大筒内圧角FB補正項θIg_pfb[k]を0とし(S29参照)、さらに空燃比のリッチ化を要求する(S30参照)。なお、後述の図8の燃料噴射制御処理では、S30で生じたリッチ化の要求を受けて空燃比のリッチ化が行われる。
またS26の判別がNOである場合、ECU7は、S31に移り、S21で算出した最大筒内圧角θPmax[k]が目標最大筒内圧角下限θPmax_α2[k]より小さいか否かを判別する。S31の判別がYESである場合には、今回の制御周期において実現される最大筒内圧角を遅角側に変更し、最適角度範囲内に収めるべく、S32に移る。
S32では、ECU7は、S22で取得した目標点火時期θIg_cmd[k−1]がS25で算出された点火時期上限θIg_γ2[k]より大きいか否かを判別する。S32の判別がNOである場合、すなわち目標点火時期θIg_cmd[k−1]がまだ点火時期上限θIg_γ2[k]を超えていない場合には、ECU7は、今回の制御周期で実現される最大筒内圧角を遅角側に変更し、最適角度範囲内に収まるように、目標点火時期を遅角化する(S33参照)。より具体的には、ECU7は、最大筒内圧角FB補正項θIg_pfb[k]を正の所定値Δr(Δr>0)に設定し、図5の処理を終了する。
またS32の判別がYESである場合には、ECU7は、目標点火時期をこれ以上遅角化させると燃焼状態が不安定になるおそれがあると判断し、最大筒内圧角FB補正項θIg_pfb[k]を0とし(S34参照)、さらに空燃比のリーン化を要求する(S35参照)。なお、後述の図8の燃料噴射制御処理では、S35で生じたリッチ化の要求を受けて空燃比のリーン化が行われる。
以上のように、図4〜図5の点火時期制御処理によれば、リーン運転時には、最大筒内圧角θPmax[k]が目標最大筒内圧角上限θPmax_α1[k]と目標最大筒内圧角下限θPmax_α2[k]との間で定められる最適角度範囲内に収まるように点火プラグ1dの点火時期が制御される。
図8は、燃料噴射制御の具体的な手順を示すフローチャートである。ECU7では、図8に示す手順に従って燃料噴射弁1cから噴射させる燃料量[mg]の目標である目標噴射量Gfuel[k]を算出する。
始めにS51では、ECU7は、運転モードとしてリーン運転が選択されているか否かを判別する。S51の判別がNOである場合、すなわち運転モードとしてストイキ運転が選択されている場合には、ECU7は、S52に移り、空燃比センサ62の検出信号を用いたフィードバック制御によって目標噴射量Gfuel[k]を算出する。
S52では、ECU7は、S3で算出された目標吸気量とストイキ運転時の目標空燃比とを用いることによって目標噴射量Gfuel[k]に対する基本値に相当する基本噴射量Gbs[k]を算出する。S53では、ECU7は、空燃比センサ62によって検出される検出空燃比とストイキ運転時の目標空燃比との偏差を算出し、既知のフィードバック制御則に従ってこの偏差が0になるような補正係数Kaf[k]を算出する。
S65では、ECU7は、基本噴射量Gbs[k]に補正係数Kaf[k]を乗算することによって目標噴射量Gfuel[k]を算出する。
S51の判別がYESである場合、すなわち運転モードとしてリーン運転が選択されている場合には、ECU7は、S54に移り、NOxセンサ66の検出信号を用いたフィードバック制御によって目標噴射量Gfuel[k]を算出する。
ここでNOxセンサ66の検出信号を用いたフィードバック制御によって燃料噴射量を制御することの利点について説明する。上述のように、空燃比センサ62は、排気の空燃比に対し概ねリニアな出力特性を有するが、リーンの領域ではストイキ近傍よりも著しく検出精度が落ちる。このため、リーン運転時には、ストイキ運転時と同様に空燃比センサ62を用いたフィードバック制御によって燃料噴射量を制御しても、空燃比を精度良く制御することができず、過大な量のNOxが排出されるおそれがある。
図9は、最大筒内圧角と排気のNOx濃度との関係を空燃比毎に示す図である。図9では、横軸を最大筒内圧角とし縦軸(対数軸)をNOx濃度とした。また図9には、各空燃比14.7[A/F]、20[A/F]、25[A/F]、及び28[A/F]の下で最大筒内圧角を所定範囲で変化させた場合におけるNOx濃度をプロットした。
図10は、リーン領域(より具体的には、20〜34[A/F])における最大筒内圧角と排気のNOx濃度との関係を示す図である。図10では、横軸を最大筒内圧角とし縦軸をNOx濃度とした。
図9及び図10に示すように、最大筒内圧角を一定とした場合に得られる排気のNOx濃度は混合気の空燃比によって変化する。すなわち、最大筒内圧角が一定に維持されている場合には、混合気の空燃比と排気のNOx濃度との間には相関関係がある。より具体的には、空燃比がリーンになるほどNOx濃度は低くなる傾向がある。また図9及び図10に示すように、各空燃比の下で最大筒内圧角を一定にした場合に得られる排気のNOx濃度の空燃比間の差は、空燃比がストイキからリーンに離れる程大きくなる傾向がある。これは、20[A/F]以上のリーン領域では、空燃比センサ62を用いるよりも、NOxセンサ66と上記相関関係を用いた方が精度良く空燃比を得ることができることを意味する。以下では、このようなNOxセンサ66の検出信号を用いたフィードバック制御によって燃料噴射量を制御する手順について説明する。
先ず、S54では、ECU7は、目標NOx濃度上限NOx_β1[k]及び目標NOx濃度下限NOx_β2[k]を算出する。目標NOx濃度上限NOx_β1[k]は、エンジン1からの排気のNOx濃度に対して許容される目標濃度範囲の上限濃度に相当する。また目標NOx濃度下限NOx_β2[k]は、目標濃度範囲の下限に相当する。以下で説明するように、ECU7では、NOxセンサ66によって検出されるNOx濃度NOx_sns[k]が、これら目標濃度範囲(NOx_β2[k]〜NOx_β1[k])内に収まるように燃料噴射量を制御する。より具体的には、ECU7は、目標トルクTRQ[k]に応じて図11に示すようなマップを検索することによってこれら目標NOx濃度上限NOx_β1[k]及び目標NOx濃度下限NOx_β2[k]を算出する。
図11は、目標NOx濃度上限及び下限を算出するために用いられるマップの一例である。図11のマップの例によれば、これら目標NOx濃度上限NOx_β1[k]及び目標濃度下限NOx_β2[k]は、それぞれ目標トルクが大きくなるほど小さくなるように定められる。またこれら目標NOx濃度上限NOx_β1[k]及び目標濃度下限NOx_β2[k]の間で定義される目標濃度範囲は、上述のような空燃比とNOx濃度との間の相関関係の下で空燃比に換算した場合には、20[A/F]以上の範囲内に定められている。また図11に示すように、この目標濃度範囲は、エンジン1の燃焼変動を考慮してある程度の幅を持たせることが好ましい。
次にS55では、ECU7は、NOxセンサの検出信号を用いて排気のNOx濃度NOx_sns[k]を取得する。次にS56では、ECU7は、最大筒内圧角θPmax[k]及びNOx濃度NOx_sns[k]に応じて図示しないマップを検索することによって、推定空燃比AF_est[k]を算出する。なおこの推定空燃比AF_est[k]を算出するマップには、例えば図10に示すマップ、すなわちリーン領域において最大筒内圧角と排気のNOx濃度との相関関係を予め測定することによって構築されたものが用いられる。
次にS57では、ECU7は、図4の点火時期制御においてリーン化が要求されているか否か(S22参照)を判別する。S57の判別がYESである場合には、ECU7は、S61に移り、前回の制御周期における補正係数Kaf[k−1]に正のシフト量dを減算することによって今回の制御周期における補正係数Kaf[k]を算出する。これにより、補正係数Kaf[k]は前回の制御周期よりも小さくなるので、目標噴射量Gfuel[k]も前回の制御周期よりも少なくなり、これによりリーン化が実現される。
S57の判別がNOである場合には、ECU7は、S58に移り、図4の点火時期制御においてリッチ化が要求されているか否か(S18参照)を判別する。S58の判別がYESである場合には、ECU7は、S62に移り、前回の制御周期における補正係数Kaf[k−1]に正のシフト量dを加算することによって今回の制御周期における補正係数Kaf[k]を算出する。これにより、補正係数Kaf[k]は前回の制御周期よりも大きくなるので、目標噴射量Gfuel[k]も前回の制御周期よりも多くなり、これによりリッチ化が実現される。
S58の判別がNOである場合には、ECU7は、S59に移る。S59では、ECU7は、S55で取得したNOx濃度NOx_sns[k]が目標NOx濃度上限NOx_β1[k]より大きいか否かを判別する。S59の判別がYESである場合には、NOx濃度を減少させ、目標濃度範囲内に収まるようにするため、S61に移り、リーン化を実行する。図9を参照して説明したように、最大筒内圧角を一定に保ちながら混合気の空燃比をリーン化すると、NOx濃度が低下し、上記目標濃度範囲内に近づく。
S59の判別がNOである場合には、ECU7は、S60に移る。S60では、ECU7は、S55で取得したNOx濃度NOx_sns[k]が目標NOx濃度下限NOx_β2[k]より小さいか否かを判別する。S60の判別がYESである場合には、NOx濃度を増加させ、目標濃度範囲内に収まるようにするため、S62に移り、リッチ化を実行する。図9を参照して説明したように、最大筒内圧角を一定に保ちながら混合気の空燃比をリッチ化すると、NOx濃度が上昇し、上記目標濃度範囲内に近づく。
S60の判別がNOである場合には、ECU7は、S63に移り、補正係数Kaf[k]を前回の制御周期時の値から維持したまま(すなわち、Kaf[k]=Kaf[k−1]とし)、S64に移る。
S64では、ECU7は、S3で算出された目標吸気量とリーン運転時の目標空燃比とを用いることによって基本噴射量Gbs[k]を算出し、S65に移る。S65では、ECU7は、基本噴射量Gbs[k]に補正係数Kaf[k]を乗算することによって目標噴射量Gfuel[k]を算出する。
以上のように、図8の燃料噴射制御処理によれば、リーン運転時には、図4〜図5の点火時期制御処理によって点火プラグ1dの点火時期が最適角度範囲内に収まるように制御されている状態で、NOxセンサ66によって検出されるNOx濃度NOx_sns[k]が目標濃度範囲内に収まるように燃料噴射弁1cからの燃料噴射量が制御される。
以上、本発明の実施形態について説明したが、本発明はこれに限らない。本発明の趣旨の範囲内で、細部の構成を適宜変更してもよい。
例えば上記実施形態では、リーン運転時にはNOxセンサ66によって検出されるNOx濃度NOx_snsが目標濃度範囲内に収まるように燃料噴射弁1cによる燃料噴射量を制御する場合について説明したが、本発明はこれに限らない。例えば、燃料噴射量を制御する代わりに、NOx濃度NOx_snsが目標濃度範囲内に収まるように、スロットルバルブを用いて吸気量を制御してもよい。又は、NOx濃度NOx_snsが目標濃度範囲内に収まるように、燃料噴射量と吸気量との両方を制御してもよい。