(57)【要約】【課題】点火時期制御モデルの学習が特定運転領域に偏って行われた場合であっても、実際の点火時期が適正点火時期から大きく乖離しない点火時期制御装置を提供すること。【解決手段】この点火時期制御装置は、燃焼状態指標値（８°燃焼割合ＭＦＢ８）が目標燃焼状態指標値と略一致するような点火時期を算出するように適合された初期点火時期制御モデルを備える。この制御装置は、更に、実際の燃焼状態指標値と目標燃焼状態指標値との差が小さくなるように初期点火時期制御モデルを修正する学習を行う。そして、総学習回数ＣＮと運転領域別学習回数Ｃx，yとを取得し、現在の運転領域に対応する運転領域別学習回数を総学習回数で除した学習頻度（Ｃx，y／ＣＮ）と、初期点火時期制御モデル及び学習後点火時期制御モデルによりそれぞれ求められる初期点火時期ＳＡin及び学習後点火時期ＳＡgkと、から、最終的な点火時期ＳＡ（ｋ）を決定する。【選択図】図４
2008240569.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の運転状態を表す運転状態量を変数として同機関の点火時期を算出する関数により表された点火時期制御モデルであって同機関の燃焼状態を示す燃焼状態指標値が所定の目標燃焼状態を示す目標燃焼状態指標値と一致するように予め適合された初期点火時期制御モデルを備えた内燃機関の点火時期制御装置であって、
実際の前記運転状態量を実運転状態量として取得する運転状態量取得手段と、
前記取得された実運転状態量を前記初期点火時期制御モデルに適用することにより初期点火時期を算出する初期点火時期算出手段と、
実際の前記燃焼状態指標値を実燃焼状態指標値として取得する燃焼状態指標値取得手段と、
前記実燃焼状態指標値が取得されたとき同取得された実燃焼状態指標値と前記目標燃焼状態指標値との差が小さくなるように前記初期点火時期制御モデルを表す関数を順次修正する学習を行うモデル学習手段と、
前記取得された実運転状態量を前記モデル学習手段により学習された前記点火時期制御モデルに適用することにより学習後点火時期を算出する学習後点火時期算出手段と、
前記モデル学習手段による前記学習の回数を積算することにより総学習回数を取得する総学習回数取得手段と、
前記機関の運転領域を複数の運転領域に予め区分し、前記モデル学習手段による前記学習の回数を、同学習が行われたときの前記実運転状態量によって示される運転状態が属する同複数の運転領域のうちの一つの運転領域に対応させて積算することにより、運転領域別学習回数を取得する運転領域別学習回数取得手段と、
現時点における前記実運転状態量によって示される運転状態が属する前記複数の運転領域のうちの一つの運転領域である現運転領域に対応して取得されている前記運転領域別学習回数と、前記総学習回数と、の比に対応する値である学習比率を取得するとともに、前記初期点火時期と前記学習後点火時期とを同学習比率に応じて反映した最終点火時期を求め、同求めた最終点火時期にて点火を実行する点火時期制御手段と、
を備えた点火時期制御装置。
【請求項２】
請求項１に記載の内燃機関の点火時期制御装置において、
前記燃焼状態指標値は前記機関のクランク角度が所定のクランク角度であるときの実際の燃焼割合であり、前記目標燃焼状態指標値は同機関のクランク角度が同所定のクランク角度であるときの燃焼割合の目標値である点火時期制御装置。
【請求項３】
請求項１又は２に記載の内燃機関の点火時期制御装置であって、
前記点火時期制御手段は、
前記現運転領域についての前記学習比率が所定比率よりも大きいとき前記学習後点火時期を前記最終点火時期として決定し、同学習比率が所定比率よりも小さいとき前記初期点火時期を前記最終点火時期として決定するように構成された点火時期制御装置。
【請求項４】
請求項１又は２に記載の内燃機関の点火時期制御装置であって、
前記点火時期制御手段は、
前記現運転領域についての前記学習比率が大きいほど前記学習後点火時期の重みが大きくなり且つ前記初期点火時期の重みが小さくなるように同学習後点火時期と同初期点火時期とに同学習比率に応じた重み付けを行うことにより前記最終点火時期を求めるように構成された点火時期制御装置。
【請求項５】
内燃機関の運転状態を表す運転状態量を変数として同機関の点火時期を算出する関数により表された点火時期制御モデルであって同機関の燃焼状態を示す燃焼状態指標値が所定の目標燃焼状態を示す目標燃焼状態指標値と一致するように予め適合された初期点火時期制御モデルを備えた内燃機関の点火時期制御装置であって、
実際の前記運転状態量を実運転状態量として取得する運転状態量取得手段と、
前記取得された実運転状態量を前記初期点火時期制御モデルに適用することにより初期点火時期を算出する初期点火時期算出手段と、
実際の前記燃焼状態指標値を実燃焼状態指標値として取得する燃焼状態指標値取得手段と、
前記実燃焼状態指標値が取得されたとき同取得された実燃焼状態指標値と前記目標燃焼状態指標値との差が小さくなるように前記初期点火時期制御モデルを表す関数を順次修正する学習を行うモデル学習手段と、
前記取得された実運転状態量を前記モデル学習手段により学習された前記点火時期制御モデルに適用することにより学習後点火時期を算出する学習後点火時期算出手段と、
前記機関の負荷の変化速度を取得する負荷変化速度取得手段と、
前記取得された負荷の変化速度が所定の負荷変化速度閾値よりも小さいときには前記学習後点火時期を最終点火時期として決定し、同取得された負荷の変化速度が同負荷変化速度閾値よりも大きいときには前記初期点火時期を最終点火時期として決定し、同決定した最終点火時期にて点火を実行する点火時期制御手段と、
を備えた点火時期制御装置。
【請求項６】
内燃機関の運転状態を表す運転状態量を変数として同機関の点火時期を算出する関数により表された点火時期制御モデルであって同機関の燃焼状態を示す燃焼状態指標値が所定の目標燃焼状態を示す目標燃焼状態指標値と一致するように予め適合された初期点火時期制御モデルを備えた内燃機関の点火時期制御装置であって、
実際の前記運転状態量を実運転状態量として取得する運転状態量取得手段と、
前記取得された実運転状態量を前記初期点火時期制御モデルに適用することにより初期点火時期を算出する初期点火時期算出手段と、
実際の前記燃焼状態指標値を実燃焼状態指標値として取得する燃焼状態指標値取得手段と、
前記実燃焼状態指標値が取得されたとき同取得された実燃焼状態指標値と前記目標燃焼状態指標値との差が小さくなるように前記初期点火時期制御モデルを表す関数を順次修正する学習を行うモデル学習手段と、
前記取得された実運転状態量を前記モデル学習手段により学習された前記点火時期制御モデルに適用することにより学習後点火時期を算出する学習後点火時期算出手段と、
前記学習後点火時期と前記初期点火時期算との差が所定閾値より小さいときには前記学習後点火時期を最終点火時期として決定し、同差が同所定閾値より大きいときには前記初期点火時期に基いて定められる制限点火時期を最終点火時期として決定し、同決定した最終点火時期にて点火を実行する点火時期制御手段と、
を備えた点火時期制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の点火時期制御装置に係り、特に、点火時期制御モデルを用いて点火時期を制御する内燃機関の点火時期制御装置に関する。
【背景技術】
【０００２】
従来より、筒内圧検出手段により検出される筒内圧（燃焼室内の圧力）に基づいて燃焼割合ＭＦＢ（Mass Fraction Burned）を算出し、所定のクランク角度（例えば、圧縮上死点後のクランク角度８°）における燃焼割合ＭＦＢが目標燃焼割合と一致するように点火時期を制御する内燃機関の点火時期制御装置が知られている。これにより、内燃機関の個体差がある場合でも、各機関に対して適切な点火時期が設定され得る。従って、燃焼効率が改善され、内燃機関の出力トルクを増大させることができる。
【０００３】
燃焼割合ＭＦＢは機関の燃焼状態を示す燃焼状態指標値である。燃焼割合ＭＦＢは図示熱量の割合と実質的に等価な値である。図示熱量の割合は、一回の燃焼行程に関して、「燃焼室において燃焼した総ての燃料によって発生した熱のうちピストンに対する仕事に変換された熱の総量Ｑtotalに対する、所定のタイミングまでに同燃焼室において燃焼した燃料によって発生した熱のうちピストンに対する仕事に変換された熱の積算量Ｑsumの割合Ｑsum／Ｑtotal」と定義される。燃焼割合ＭＦＢは、「燃焼室において燃焼した総ての燃料のうちピストンに対する仕事に寄与した燃料の総量に対する、所定のタイミングまでに同燃焼室において燃焼した燃料のうちピストンに対する仕事に寄与した燃料の積算量の割合」と定義される。
【０００４】
かかる点火時期制御装置の一つは、所定のクランク角度における実際の燃焼割合を取得するとともに、その取得した燃焼割合と目標燃焼割合との差に応じて点火時期を所定量だけ進角又は遅角するようになっている（例えば、特許文献１を参照）。
【特許文献１】特開平９−３１７５２２号公報
【発明の開示】
【０００５】
ところで、内燃機関の運転状態を表す運転状態量（例えば、機関の負荷及び機関回転速度）を引数とするマップ（ルックアップ−テーブル）を用いて点火時期を決定する手法に代え、点火時期制御モデルを用いて点火時期を決定する手法が開発されて来ている。点火時期制御モデルは、内燃機関の運転状態量を変数とする関数（数式）により表される。この点火時期制御モデルは、種々の運転状態量に対して所定のクランク角度における燃焼割合が目標燃焼割合と一致するように予め適合される。より具体的に述べると、点火時期制御モデルを表す関数は一般に複数の係数を有する関数であり、それらの係数が上述したように適合される。本明細書において、このように予め適合された関数（適合された係数等を有する関数）によって表される点火時期制御モデルを、便宜上「初期点火時期制御モデル」と称呼する。
【０００６】
一方、個々の内燃機関の間には機体差（個体差）が存在する。更に、内燃機関の使用に伴って機関の特性は経時変化する。従って、初期点火時期制御モデルにより、常に最適な点火時期を求めることはできない。そこで、所定のクランク角度における実際の燃焼割合が目標燃焼割合と一致するように（実際の燃焼状態指標値が目標燃焼状態指標値と一致するように）、点火時期制御モデルを表す関数を学習によって修正する学習制御を実行することが考えられる。即ち、学習制御は、所定のクランク角度における実際の燃焼割合と目標燃焼割合との差が０になるように、逐次最小二乗法等の周知の誤差低減手法によって前記係数を順次修正して行く。本明細書において、このように学習された関数（修正された係数等を有する関数）によって表される点火時期制御モデルを、便宜上「学習後点火時期制御モデル」と称呼する。
【０００７】
しかしながら、発明者は更に検討を重ねた結果、学習が特定の運転領域（学習領域）において偏ってなされると、学習が不十分な運転領域において学習後点火時期制御モデルに基いて算出される点火時期が不適切な値となって、ノッキングが発生したり、燃焼状態が不安定になってトルク変動が発生する等の問題が生じることを見いだした。
【０００８】
以下、この点について詳述する。図１３は総ての運転領域に対して偏りなく学習が行われた場合の点火時期制御モデルにより算出される点火時期を示している。即ち、図１３により示される点火時期制御モデルにより得られる点火時期は略適正値である。これに対し、図１４はある特定運転領域（例えば、中低負荷且つ中回転の領域）においてのみ学習が行われた後の点火時期制御モデルにより算出される点火時期を示している。図１３と図１４との比較から、特定運転領域において偏って学習が行われると、その特定運転領域の点火時期は適正値に近い値となるが、他の領域における点火時期が特定運転領域における学習の影響を受け、適正値と乖離してしまうことが理解される。
【０００９】
一方、図１５は、ある時点まで車両を走行させた場合における運転領域別の学習回数（学習頻度）を示したグラフである。図１５から、学習は特定の運転領域において集中的に行われることが多いということが理解される。
【００１０】
以上から、本発明の目的の一つは、点火時期制御モデルの学習が特定運転領域において集中的に行われた場合であっても、実際の点火時期が適正な点火時期から大きく乖離することがない内燃機関の点火時期制御装置を提供することにある。
【００１１】
上記目的を達成する本発明による内燃機関の点火時期制御装置は、初期点火時期制御モデルを備える。初期点火時期制御モデルは、学習の対象となる点火時期制御モデルの原形となるモデルである。これらの点火時期制御モデルは、機関の運転状態を表す運転状態量を変数として同機関の点火時期を算出する関数により表される。初期点火時期制御モデルは、初期点火時期制御モデルにより算出された点火時期にて点火を実行したとき、機関の燃焼状態を示す燃焼状態指標値が所定の目標燃焼状態を示す目標燃焼状態指標値と一致するように、予め適合されている。
【００１２】
この点火時期制御装置は、更に、運転状態量取得手段と、初期点火時期算出手段と、燃焼状態指標値取得手段と、モデル学習手段と、学習後点火時期算出手段と、を備える。
【００１３】
運転状態量取得手段は、実際の前記運転状態量を実運転状態量として取得する。運転状態量とは、例えば、機関の負荷及び機関回転速度である。
初期点火時期算出手段は、前記取得された実運転状態量を前記初期点火時期制御モデルに適用することにより初期点火時期を算出する。
【００１４】
燃焼状態指標値取得手段は、実際の燃焼状態指標値を実燃焼状態指標値として取得する。燃焼状態指標値とは、例えば、所定クランク角度における燃焼割合、所定クランク角度における図示熱量の割合、及び、所定クランク角度における筒内圧等である。
モデル学習手段は、前記実燃焼状態指標値が取得されたとき同取得された実燃焼状態指標値と前記目標燃焼状態指標値との差が小さくなるように前記初期点火時期制御モデルを表す関数を順次修正する（即ち、その時点で得られている点火時期制御モデルを更に修正する）学習を行う。
学習後点火時期算出手段は、前記取得された実運転状態量を前記モデル学習手段により学習された前記点火時期制御モデル（即ち、学習後点火時期制御モデル）に適用することにより学習後点火時期を算出する。
【００１５】
加えて、この点火時期制御装置は、総学習回数取得手段と、運転領域別学習回数取得手段と、点火時期制御手段と、を備えている。
【００１６】
総学習回数取得手段は、前記モデル学習手段による前記学習の回数を積算することにより総学習回数（前記モデル学習手段による前記学習回数の総数）を取得する。
運転領域別学習回数取得手段は、前記機関の運転領域を複数の運転領域に予め区分し、前記モデル学習手段による前記学習の回数を、同学習が行われたときの前記実運転状態量によって示される運転状態が属する同複数の運転領域のうちの一つの運転領域（学習時運転領域）に対応させて積算することにより、運転領域別学習回数を取得する。即ち、運転領域別学習回数取得手段は、前記モデル学習手段による前記学習回数を所定の運転領域別に運転領域別学習回数として取得する。これにより、前記学習が行われると、学習時運転領域に対応する運転領域別学習回数が増大（インクリメント）される。
【００１７】
点火時期制御手段は、「現時点における前記実運転状態量によって示される運転状態（現時点の機関の運転状態）が属する前記複数の運転領域のうちの一つの運転領域」である「現時点の運転領域（現運転領域）」に対応して取得されている前記運転領域別学習回数と、前記総学習回数と、の比に対応する値である学習比率を取得する。例えば、前記学習比率は、前記総学習回数に対する、前記現運転領域に対応する運転領域別学習回数の比（学習比率＝現運転領域の運転領域別学習回数／総学習回数）である。更に、点火時期制御手段は、前記初期点火時期と前記学習後点火時期とを前記学習比率に応じて反映した最終点火時期を求め、同求めた最終点火時期にて点火を実行する。
【００１８】
前記学習比率は、現運転領域における学習後点火時期モデルの精度を表す。つまり、前記学習比率は前記学習後点火時期の信頼度を表すことになる。一方、初期点火時期は、予め適合した初期点火時期制御モデルにより算出される点火時期であるから、その信頼度は或る程度高い。
【００１９】
従って、前記点火時期制御手段は、前記初期点火時期と前記学習後点火時期とを、その学習比率に応じて反映した最終点火時期を求め、その最終点火時期にて点火を行う。この結果、仮に、現運転領域と相違する運転領域において集中的に学習がなされた結果、現運転領域における学習後点火時期が適正値から乖離していたとしても、最終点火時期が適正値から大きく乖離することを回避することができる。更に、現運転領域において十分な学習がなされていれば、信頼度の高い学習後点火時期を最終点火時期に設定するか又は最終点火時期に大きく反映させることができるので、より適正値に近い点火時期にて実際の点火を実行することが可能となる。
【００２０】
この場合、前記燃焼状態指標値は前記機関のクランク角度が所定のクランク角度であるときの実際の燃焼割合であり、前記目標燃焼状態指標値は同機関のクランク角度が同所定のクランク角度であるときの燃焼割合の目標値であることが好適である。
【００２１】
これによれば、機関の個体差が存在する場合でも、各機関に対して適切な点火時期が設定され得る。従って、燃焼効率が改善され、内燃機関の出力トルクを増大させることができる。
【００２２】
更に、前記点火時期決定手段は、
前記現運転領域（現時点の運転領域）についての前記学習比率が所定比率よりも大きいとき前記学習後点火時期を前記最終点火時期として決定し、同学習比率が所定比率よりも小さいとき前記初期点火時期を前記最終点火時期として決定するように構成されることができる。
【００２３】
これによれば、前記学習比率が所定比率よりも大きいとき、即ち、学習後点火時期が適正値に近いとき、前記学習後点火時期にて実際の点火が行われる。この結果、実際の燃焼状態指標値が目標燃焼状態指標値に近い値となるので、燃焼状態を狙いとする燃焼状態により近づけることができる。また、前記学習比率が所定比率よりも小さいとき、即ち、学習後点火時期が適正値から大きく乖離している可能性が大きいとき、前記初期点火時期にて実際の点火が行われる。この結果、点火時期が適正な時期から大きく乖離することを回避することができるので、燃焼を安定させることができる。
【００２４】
一方、前記点火時期制御手段は、前記学習後点火時期と前記初期点火時期とに前記現運転領域についての学習比率に応じた重み付けを行うことにより前記最終点火時期を求めるように構成されていてもよい。この場合、点火時期制御手段は、前記現運転領域についての学習比率が大きいほど前記学習後点火時期の重みが大きくなり且つ前記初期点火時期の重みが小さくなるように最終点火時期を求める。
【００２５】
これによれば、学習後点火時期の信頼度が高いほど（学習後点火時期が適正値に近いほど）、その学習後点火時期が最終点火時期に大きく反映される。換言すると、学習後点火時期の信頼度が低いほど、初期点火時期が最終点火時期に大きく反映される。この結果、より適正値に近い点火時期にて実際の点火を実行することができる。
【００２６】
本発明による他の内燃機関の点火時期制御装置は、前述した点火時期制御装置と同様、初期点火時期制御モデルと、運転状態量取得手段と、初期点火時期算出手段と、燃焼状態指標値取得手段と、モデル学習手段と、学習後点火時期算出手段と、を備える。
【００２７】
そして、その点火時期制御装置は、
前記機関の負荷（例えば、スロットル弁開度、アクセルペダル操作量、及び、機関の一吸気行程における吸入空気量等）の変化速度を取得する負荷変化速度取得手段と、
前記取得された負荷の変化速度（変化速度の大きさ）が所定の負荷変化速度閾値よりも小さいときには前記学習後点火時期を最終点火時期として決定し、同取得された負荷の変化速度が同負荷変化速度閾値よりも大きいときには前記初期点火時期を最終点火時期として決定し、同決定した最終点火時期にて点火を実行する点火時期制御手段と、
を備えている。
【００２８】
前記学習は、過去の情報を残しながら、フィードバック制御によって点火時期制御モデルを修正する制御である。従って、学習は、急加速等の機関の負荷が急激に変化する過渡運転時において十分な応答性をもって点火時期制御モデルを修正することができない。そこで、上記構成のように、負荷の変化速度が所定の負荷変化速度閾値よりも大きいとき、即ち、学習による点火時期制御モデルの修正が間に合わないとき、学習後点火時期に代えて初期点火時期にて点火を実行すれば、点火時期が適正値から大きく乖離することを回避することができる。
【００２９】
本発明による更に別の内燃機関の点火時期制御装置は、前述した点火時期制御装置と同様、初期点火時期制御モデルと、運転状態量取得手段と、初期点火時期算出手段と、燃焼状態指標値取得手段と、モデル学習手段と、学習後点火時期算出手段と、を備える。
【００３０】
そして、その点火時期制御装置は、前記学習後点火時期と前記初期点火時期算との差（差の大きさ、差の絶対値）が所定閾値より小さいときには前記学習後点火時期を最終点火時期として決定し、同差が同所定閾値より大きいときには前記初期点火時期に基いて定められる制限点火時期を最終点火時期として決定し、同決定した最終点火時期にて点火を実行する点火時期制御手段を備える。
【００３１】
制限点火時期は、学習後点火時期が初期点火時期よりも進角側にある場合、初期点火時期を第１所定量だけ進角した点火時期に設定され、学習後点火時期が初期点火時期よりも遅角側にある場合、初期点火時期を第２所定量だけ遅角した点火時期に設定されてもよい。第１所定量は第２所定量と等しくてもよく、相違していてもよい。点火時期の過度の進角によるノッキングを抑制するために、第１所定量は第２所定量よりも小さくすることができる。また、前記所定閾値は、一定であってもよく、機関の運転状態量に応じて変化する値であってもよい。特に、高負荷側におけるノッキングの発生を回避するため、前記所定閾値は機関の負荷が大きくなるほど小さくなるように定められていてもよい。
【００３２】
前述したように、初期点火時期制御モデルは予め適合されている。従って、初期点火時期は、適正な点火時期とそれ程大きく乖離していない。そこで、前記学習後点火時期と前記初期点火時期算との差が所定閾値より大きいときには、他の運転領域における学習の影響を点火時期制御モデルが受けた結果、現時点の運転領域における学習後点火時期が適正値から大きく乖離していると考えることができる。従って、上記点火時期制御手段は、前記学習後点火時期と前記初期点火時期算との差が所定閾値より大きいときには前記初期点火時期に基いて定められる制限点火時期を最終点火時期として決定し、前記学習後点火時期と前記初期点火時期算との差が所定閾値より小さいときには前記学習後点火時期を最終点火時期として決定し、そのように決定した最終点火時期にて点火を実行する。この結果、点火時期が適正値から大きく乖離することを回避することができる。
【発明を実施するための最良の形態】
【００３３】
以下、本発明の各実施形態に係る内燃機関の点火時期制御装置について図面を参照しつつ説明する。
＜第１実施形態＞
（構成）
図１は、本発明の第１実施形態に係る点火時期制御装置（以下、「第１制御装置」と称呼することもある。）をピストン往復動型の火花点火式多気筒（４気筒）４サイクル内燃機関１０に適用したシステムの概略構成を示している。なお、図１は、特定の気筒の断面のみを図示しているが、他の気筒も同様な構成を備えている。
【００３４】
この内燃機関１０は、シリンダブロック、シリンダブロックロワーケース及びオイルパン等を含むシリンダブロック部２０と、シリンダブロック部２０の上に固定されるシリンダヘッド部３０と、シリンダブロック部２０にガソリン混合気を供給するための吸気系統４０と、シリンダブロック部２０からの排ガスを外部に放出するための排気系統５０とを含んでいる。
【００３５】
シリンダブロック部２０は、シリンダ２１、ピストン２２、コンロッド２３及びクランク軸２４を含んでいる。ピストン２２はシリンダ２１内を往復動し、ピストン２２の往復動がコンロッド２３を介してクランク軸２４に伝達され、これによりクランク軸２４が回転するようになっている。シリンダ２１とピストン２２のヘッドは、シリンダヘッド部３０とともに燃焼室２５を形成している。
【００３６】
シリンダヘッド部３０は、燃焼室２５に連通した吸気ポート３１、吸気ポート３１を開閉する吸気弁３２、吸気弁３２を開閉駆動する吸気弁制御装置３３、燃焼室２５に連通した排気ポート３４、排気ポート３４を開閉する排気弁３５、排気弁３５を駆動するエキゾーストカムシャフト３６、点火プラグ３７、点火プラグ３７に与える高電圧を発生するイグニッションコイルを含むイグナイタ３８及び燃料を吸気ポート３１内に噴射するインジェクタ（燃料噴射手段）３９を備えている。
【００３７】
吸気弁制御装置３３は、インテークカムシャフトとインテークカム（図示せず）との相対回転角度（位相角度）を油圧により調整・制御する周知の構成を備え、吸気弁３２の開弁時期（吸気弁開弁時期）を変更することができるようになっている。本例において、吸気弁の開弁期間（開弁クランク角度幅）は一定である。従って、吸気弁開弁時期が所定角度だけ進角又は遅角させられると、吸気弁閉弁時期も同所定角度だけ進角又は遅角させられる。また、排気弁３５の開弁時期及び閉弁時期は一定である。従って、吸気弁制御装置３３によって吸気弁開弁時期が変更されることに伴ってオーバーラップ期間が変化する。
【００３８】
吸気系統４０は、吸気ポート３１に連通し吸気ポート３１とともに吸気通路を形成するインテークマニホールドを含む吸気管４１、吸気管４１の端部に設けられたエアフィルタ４２、吸気管４１内にあって吸気通路の開口断面積を可変とするスロットル弁４３及びスロットル弁駆動手段を構成するＤＣモータからなるスロットル弁アクチュエータ４３ａを備えている。
【００３９】
排気系統５０は、排気ポート３４に連通したエキゾーストマニホールド５１、エキゾーストマニホールド５１に接続されたエキゾーストパイプ（排気管）５２、上流側の三元触媒５３及び下流側の三元触媒５４を備えている。上流側の三元触媒５３は、エキゾーストパイプ５２に配設されている。下流側の三元触媒５４は、上流側の三元触媒５３の下流においてエキゾーストパイプ５２に配設されている。排気ポート３４、エキゾーストマニホールド５１及びエキゾーストパイプ５２は、排気通路を構成している。
【００４０】
一方、このシステムは、熱線式エアフローメータ６１、スロットルポジションセンサ６２、カムポジションセンサ６３、クランクポジションセンサ６４、各気筒に設けられた筒内圧センサ６５、冷却水温センサ６６、第１触媒５３の上流の排気通路に配設された空燃比センサ６７、第１触媒５３の下流であって第２触媒５４の上流の排気通路に配設された空燃比センサ６８及びアクセル開度センサ６９を備えている。
【００４１】
熱線式エアフローメータ６１は、吸気管４１内を流れる吸入空気の単位時間あたりの質量流量を検出し、質量流量Gaを表す信号を出力するようになっている。スロットルポジションセンサ６２は、スロットル弁４３の開度を検出し、スロットル弁開度TAを表す信号を出力するようになっている。カムポジションセンサ６３は、インテークカムシャフトが所定角度から９０度、次いで９０度、更に１８０度回転する毎に一つのパルスを出力するようになっている。この信号はＧ２信号とも称呼される。クランクポジションセンサ６４は、クランク軸２４が１０度回転する毎にパルスを出力するようになっている。クランクポジションセンサ６４から出力されるパルスはエンジン回転速度NEを表す信号に変換されるようになっている。更に、カムポジションセンサ６３及びクランクポジションセンサ６４からの信号に基いて、機関１０のクランク角度が求められるようになっている。筒内圧センサ６５は、燃焼室２５内の圧力を検出し、筒内圧Ｐｃを表す信号を出力するようになっている。
【００４２】
上流側空燃比センサ６７及び下流側空燃比センサ６８は、触媒５３の上下流の空燃比を検出し、その上下流の空燃比を表す信号をそれぞれ出力するようになっている。アクセル開度センサ６９は、運転者によって操作されるアクセルペダル８１の操作量を検出し、アクセルペダル８１の操作量Accpを表す信号を出力するようになっている。
【００４３】
電気制御装置７０は、互いにバスで接続されたＣＰＵ７１、ＣＰＵ７１が実行するルーチン（プログラム）、テーブル（ルックアップテーブル、マップ）及び定数等を予め記憶したＲＯＭ７２、ＣＰＵ７１が必要に応じてデータを一時的に格納するＲＡＭ７３、電源が投入された状態でデータを格納するとともに格納したデータを電源が遮断されている間も保持するバックアップＲＡＭ７４、並びに、ＡＤコンバータを含むインターフェース７５等からなるマイクロコンピュータである。インターフェース７５は、前記センサ６１〜６９と接続され、ＣＰＵ７１にセンサ６１〜６９からの信号を供給するようになっている。インターフェース７５は、ＣＰＵ７１の指示に応じて吸気弁制御装置３３、インジェクタ３９及びスロットル弁アクチュエータ４３ａに駆動信号を送出するとともに、イグナイタ３８に点火信号を送出するようになっている。
【００４４】
（制御の概要）
次に、上記のように構成された内燃機関１０の点火時期制御装置（第１制御装置）により行われる点火時期制御の概要について説明する。
【００４５】
＜燃焼割合ＭＦＢの推定（取得）＞
上述のように定義された燃焼割合ＭＦＢは上述のように定義された図示熱量の割合Ｑsum／Ｑtotalを表す値として推定（取得）される。燃焼割合ＭＦＢ及び図示熱量の割合は、何れも機関１０の燃焼状態を示す燃焼状態指標値である。燃焼割合ＭＦＢを筒内圧センサ６５によって検出された筒内圧Ｐｃから求める手法の詳細は、例えば、特開２００６−１４４６４５号公報に開示されているので、以下、その概略について述べる。
【００４６】
本例において、燃焼割合ＭＦＢは所定のタイミングを表すクランク角度θに対応して求められる。クランク角度θにおける燃焼割合ＭＦＢをＭＦＢθと表す。このクランク角度θは圧縮上死点において０となり、圧縮上死点から圧縮上死点前に向って進角するほど絶対値が大きくなる負の値をとり、圧縮上死点から圧縮上死点後に向って遅角するほど絶対値が大きくなる正の値をとるように定義される。例えば、θ＝−θ１°（θ１＞０）であることは、クランク角度がＢＴＤＣθ１であることを示す。θ＝θ２°（θ２＞０）であることは、クランク角度がＡＴＤＣθ２であることを示す。
【００４７】
クランク角度θにおける燃焼割合ＭＦＢθは、下記の（１）式により推定される。（１）式において、クランク角度θｓ（θｓ＜０）は、対象とする燃焼行程（膨張行程）に向う圧縮行程において吸気弁３２及び排気弁３５の両方が閉じた状態にあり且つ点火時期よりも十分に進角した時期（例えば、θｓ＝−６０°、即ち、ＢＴＤＣ  ６０°）である。クランク角度θｅ（θｅ＞０）は、対象とする燃焼行程における燃焼が実質的に終了する最も遅い時期よりも遅い所定の時期且つ排気弁開弁時期よりも進角した時期（例えば、θｅ＝６０°、即ち、ＡＴＤＣ  ６０°）である。
【数１】
2008240569.tif 000003
【００４８】
この（１）式は、発生した熱のうちピストンに対する仕事に寄与した熱の積算量Ｑの変化パターンがＰｃ（θ）Ｖ（θ）κの変化パターンと概ね一致するという知見に基いている。Ｐｃ（θ）はクランク角度θにおける筒内圧、Ｖ（θ）はクランク角度θにおける燃焼室２５の容積、κは混合ガスの比熱比（例えば、１．３２）である。なお、（１）式の分母はＭＦＢの１００％に相当する値である。
【００４９】
＜点火時期制御の基本的内容＞
先ず、第１制御装置による点火時期制御の基本的内容について説明する。なお、第１制御装置の学習（学習制御）及び最終的な点火時期（最終点火時期）の決定方法の詳細については、後述する。
【００５０】
図２は、点火時期ＳＡと、８°燃焼割合ＭＦＢ８と、機関１０の発生トルクＴＲＱと、の関係を示したグラフである。８°燃焼割合ＭＦＢ８とは、クランク角度θが圧縮上死点後８°（＝ＡＴＤＣ  ８°）にあるときの燃焼割合ＭＦＢである。図２から明らかなように、発生トルクＴＲＱが最大となる８°燃焼割合ＭＦＢ８は約６０％（図２の領域Ａを参照。）である。従って、第１制御装置は、８°燃焼割合ＭＦＢ８が所定の目標値ＭＦＢ８ｔｇｔ（例えば、６０％近傍の値）となるように点火時期を制御する。
【００５１】
より具体的に述べると、第１制御装置は機能ブロック図である図３に示した各機能達成部を有する。以下、各ブロックの機能を順に説明する。本明細書において、変数の後に付与される記号（ｋ）は、その変数がある特定の気筒において次に発生する燃焼行程（即ち、今回の燃焼行程）に対する変数であることを示す。従って、（ｋ−１）が付与された変数は、その特定の気筒における前回の燃焼行程（既に終了した直前の燃焼行程、即ち、１回前（７２０°クランク角前）の燃焼行程）に対する変数である。また、点火時期ＳＡ（ＳＡ＞０）とは、点火がＢＴＤＣ  ＳＡ°（圧縮上死点前のクランク角度ＳＡ°）において行われることを意味する。
【００５２】
運転状態量取得部Ａ１は、機関の運転状態を表す量（運転状態量）を取得するようになっている。本例において、運転状態量は、機関１０の負荷ＫＬ及び機関回転速度ＮＥである。負荷ＫＬは吸入された筒内空気重量に比例する値（充填率）でありエアフローメータ６１の検出する質量流量Ga及び機関回転速度ＮＥにより求められる。負荷ＫＬは、空気の挙動を記述した周知の空気モデルにより取得されてもよい。運転状態量取得部Ａ１は、負荷（充填率）ＫＬに代え、機関１０の負荷としてアクセルペダル８１の操作量Accp及びスロットル弁開度TA等を取得するように構成されていてもよい。
【００５３】
目標値設定部Ａ２は、８°燃焼割合ＭＦＢ８に対する目標値である「目標燃焼割合ＭＦＢ８ｔｇｔ」を出力するようになっている。目標燃焼割合ＭＦＢ８ｔｇｔは本例において一定値（例えば、６０％）である。なお、目標値設定部Ａ２は、運転状態量を入力し、その運転状態量に応じて目標燃焼割合ＭＦＢ８ｔｇｔを変更するように構成されていてもよい。目標燃焼割合ＭＦＢ８ｔｇｔは、機関の燃焼効率が良く、且つ、ＨＣやＣＯ等の排出量が低い値となり、且つ、ノッキング等によるトルク変動等が発生しないような値に設定される。
【００５４】
実燃焼割合ＭＦＢ８算出部Ａ３は、上記（１）式に従って、前回の燃焼行程中のＡＴＤＣ  ８°における燃焼割合ＭＦＢ８（ｋ−１）を算出するようになっている。即ち、実燃焼割合ＭＦＢ８算出手段Ａ３は、下記の（２）式に基いて８°燃焼割合ＭＦＢ８（ｋ−１）を算出する。（２）式における右辺の各値は、総て前回の燃焼行程中において得られた値である。なお、−６０°とは圧縮上死点前のクランク角度６０°を意味する。
【数２】
2008240569.tif 000004
【００５５】
点火時期偏差量算出部Ａ４は、目標値設定部Ａ２から取得される目標燃焼割合ＭＦＢ８ｔｇｔと実燃焼割合ＭＦＢ８算出部Ａ３から取得される実際の８°燃焼割合ＭＦＢ８（ｋ−１）との差ΔＭに基づき、今回の点火時期ＳＡ（ｋ）を前回の点火時期ＳＡ（ｋ−１）に対し進角するべき量（進角するべきクランク角度、即ち、点火時期補正量又は点火時期偏差量）ΔＳＡ（ｋ−１）を算出する。具体的に述べると、点火時期偏差量算出部Ａ４は、差ΔＭと点火時期偏差量ΔＳＡとの関係を予め規定したテーブル（又は、関数）を備えている。点火時期偏差量算出部Ａ４は、そのテーブルに実際に得られた差ΔＭを適用することにより、実際の点火時期偏差量ΔＳＡ（ｋ−１）を算出する。
【００５６】
遅延部Ａ５は、運転状態量取得部Ａ１により取得された今回の燃焼行程に対する運転状態量（ＮＥ（ｋ）、ＫＬ（ｋ））を保持し、前回燃焼行程に対する点火時期を決定するために使用された前回の燃焼行程に対する運転状態量（ＮＥ（ｋ−１）、ＫＬ（ｋ−１））を出力する。
【００５７】
モデル学習部Ａ６は、点火時期偏差量算出部Ａ４から得られる点火時期偏差量ΔＳＡ（ｋ−１）と、遅延部Ａ５から得られる前回の運転状態量（ＮＥ（ｋ−１）、ＫＬ（ｋ−１））と、に基いて、点火時期制御モデルの学習を行う。より具体的には、モデル学習部Ａ６は、点火時期偏差量ΔＳＡ（ｋ−１）が最小の値となるように、後述する点火時期制御モデルを表す関数の係数θ０〜θ３を、周知の「逐次最小二乗法（ＲＬＳ：Recrusive Least-Squares）」に基いて算出する。
【００５８】
点火時期制御部Ａ７は、下記の（３）式の関数によって表される点火時期制御モデルを有する。
【数３】
2008240569.tif 000005
【００５９】
前述したように、（３）式における係数θ０〜θ３はモデル学習部Ａ６により修正（学習）されて行く。この係数θ０〜θ３は、モデル学習部Ａ６によって修正される前の段階（即ち、初期状態）において、種々の機関回転速度ＮＥ及び機関負荷ＫＬに対して、「８°燃焼割合ＭＦＢ８が目標燃焼割合ＭＦＢ８ｔｇｔと略一致する」ような点火時期ＳＡ（ｋ）が得られるように、実験等により予め適合されている。点火時期制御部Ａ７は、この修正される前の係数（初期係数）を用いた（３）式により表される関数を「初期点火時期制御モデル」を表す関数として保持するようになっている。更に、点火時期制御部Ａ７は、修正された係数（学習後係数）を用いた（３）式により表される関数を「学習後点火時期制御モデル」を表す関数として保持するようになっている。なお、初期係数及び学習後係数は、バックアップＲＡＭ７４内に格納されるようになっている。
【００６０】
そして、第１制御装置の点火時期制御部Ａ７は、初期点火時期制御モデルに今回の燃焼行程に対する運転状態量（ＮＥ（ｋ），ＫＬ（ｋ））を適用して初期点火時期ＳＡinを算出するとともに、学習後点火時期制御モデルに今回の燃焼行程に対する運転状態量（ＮＥ（ｋ），ＫＬ（ｋ））を適用して学習後点火時期ＳＡgkを算出する。更に、点火時期制御部Ａ７は、後述するように、初期点火時期ＳＡinと学習後点火時期ＳＡgkとを用いて最終的な点火時期（最終点火時期）ＳＡ（ｋ）を決定し、その最終点火時期にて点火が行われるようにイグナイタ３８に点火信号（点火指示信号）を送出する。
【００６１】
＜点火時期制御の詳細＞
次に、第１制御装置による点火時期制御の詳細について説明する。第１制御装置は、モデル学習部Ａ６による学習回数（学習により係数θ０〜θ３が修正された回数）の総数を総学習回数として取得する。更に、第１制御装置は、モデル学習部Ａ６による学習回数をその学習が行われたときの運転領域別に運転領域別学習回数として取得する。
【００６２】
そして、第１制御装置は、現時点の運転状態量（今回の点火時期を決定する際の運転状態量）が示す現時点の運転状態が属する運転領域（現運転領域）に対応した運転領域別の学習回数を読み出し、取得された総学習回数に対する読み出した運転領域別の学習回数の比率である学習比率を求める。更に、第１制御装置は、初期点火時期と学習後点火時期とを、その学習比率に応じて反映させた最終点火時期を求め、求めた最終点火時期にて点火を実行する。
【００６３】
より具体的に述べると、第１制御装置は、現時点の運転領域についての前記学習比率が所定比率よりも大きいとき前記学習後点火時期を前記最終点火時期として決定し、同学習比率が所定比率よりも小さいとき前記初期点火時期を前記最終点火時期として決定する。以下、第１制御装置の実際の作動についてフローチャートを参照しながら説明する。
【００６４】
電気制御装置７０のＣＰＵ７１は、図示しない筒内圧取得ルーチンを実行することにより、各気筒のＰｃ（−６０°）、Ｐｃ（８°）及びＰｃ（６０°）を筒内圧センサ６５の出力に基いて取得し、各気筒別にＲＡＭ７３に格納している。更に、ＣＰＵ７１は、図４にフローチャートにより示した点火時期制御ルーチンを特定の気筒のクランク角度が燃焼行程開始直前の所定のクランク角度（例えば、特定気筒の圧縮上死点前クランク角度９０°＝ＢＴＤＣ  ９０°）に一致する毎に繰り返し実行している。なお、ＣＰＵ７１は、他の気筒に対しても同様なルーチンを同様なタイミングにて実行するようになっている。
【００６５】
特定の気筒のクランク角度が前記所定のクランク角度に一致すると、ＣＰＵ７１は図４のルーチンの処理をステップ４００から開始し、ステップ４０５〜ステップ４６０にて以下の処理を行う。
【００６６】
ステップ４０５：ＣＰＵ７１は、特定気筒の前回の燃焼行程における実際の８°燃焼割合ＭＦＢ８（ｋ−１）を上記（２）式に基いて算出する。このとき、ＣＰＵ７１は、ＲＡＭ７３に格納してある特定気筒のＰｃ（−６０°）、Ｐｃ（８°）及びＰｃ（６０°）を（２）式に適用する。ＣＰＵ７１は、（２）式の燃焼室体積Ｖ（−６０°）、Ｖ（８°）及びＶ（６０°）に、予めＲＯＭ７２内に記憶してある値を代入する。
【００６７】
ステップ４１０：ＣＰＵ７１は、特定気筒の前回の燃焼行程に対する（特定気筒の前回の点火時期を決定する際に使用した）機関回転速度ＮＥ（ｋ−１）及び負荷ＫＬ（ｋ−１）を取得する。同時に、ＣＰＵ７１は、特定気筒の今回の燃焼行程に対する（特定気筒の今回の点火時期を決定する際に使用する）機関回転速度ＮＥ（ｋ）及び負荷ＫＬ（ｋ）を取得する。機関回転速度ＮＥ（ｋ）及び負荷ＫＬ（ｋ）は、現時点における機関回転速度ＮＥ及び負荷ＫＬにそれぞれ等しい。
【００６８】
ステップ４１５：ＣＰＵ７１は、予め定められた目標燃焼割合ＭＦＢ８ｔｇｔとステップ４０５にて取得した実際の８°燃焼割合ＭＦＢ８（ｋ−１）との差ΔＭ（目標燃焼割合ＭＦＢ８ｔｇｔから８°燃焼割合ＭＦＢ８（ｋ−１）を減じた値ΔＭ）を求める。
ステップ４２０：ＣＰＵ７１は、差ΔＭを関数ｆ（又はルックアップテーブル）に適用することにより点火時期偏差量ΔＳＡ（ｋ−１）を算出する。本例において、関数ｆは差ΔＭを定数ｋ倍する関数（又は、差ΔＭに関する単調増加関数）である。
【００６９】
ステップ４２５：ＣＰＵ７１は、点火時期制御モデルの学習を実行する。具体的に述べると、ＣＰＵ７１は、逐次最小二乗法に基いて点火時期偏差量ΔＳＡ（ｋ−１）を最小とする係数θ０、θ１、θ２及びθ３を算出（決定）する。このとき、ＣＰＵ７１は、機関回転速度ＮＥ（ｋ−１）及び負荷ＫＬ（ｋ−１）を計算に使用する。算出された新たな係数θ０、θ１、θ２及びθ３は、学習後係数としてバックアップＲＡＭ７４に格納される。
【００７０】
ステップ４３０：ＣＰＵ７１は、機関回転速度ＮＥ（ｋ−１）及び負荷ＫＬ（ｋ−１）が属する運転領域（学習時運転領域）を特定し、その特定した運転領域に固有の学習回数カウンタである運転領域別学習カウンタＣm,nの値を読み込む。具体的に述べると、運転領域（学習領域）は図５に示したように、機関回転速度ＮＥ及び負荷ＫＬによって複数の領域に区分されている。ＣＰＵ７１は、機関回転速度ＮＥ（ｋ−１）及び負荷ＫＬ（ｋ−１）により示される運転状態が、図５に示した複数の運転領域のうちのどの運転領域に存在しているかを特定し、その特定した運転領域に対して割り当てられている運転領域別学習回数カウンタＣm,nの値を読み込む。
【００７１】
ステップ４３５：ＣＰＵ７１は、ステップ４３０にて読み込んだ運転領域別学習回数カウンタＣm,nの値を「１」だけ増大する。この結果、運転領域別学習回数カウンタＣm,nの値は、その学習回数カウンタＣm,nが割り当てられている運転領域において、点火時期制御モデルが学習された回数（係数θ０〜θ３が修正された回数、即ち、点火時期制御モデルの運転領域別学習回数）を表す値となる。
【００７２】
ステップ４４０：ＣＰＵ７１は、総学習回数カウンタＣＮの値を「１」だけ増大する。この結果、総学習回数カウンタＣＮの値は、点火時期制御モデルが学習された回数の総数（運転領域に関わらず係数θ０〜θ３が修正された回数の合計、即ち、総学習回数）を表す値となる。
ステップ４４５：ＣＰＵ７１は、機関回転速度ＮＥ（ｋ）及び負荷ＫＬ（ｋ）が属する運転領域を特定し、その特定した領域の運転領域別学習カウンタＣx,yの値を読み込む。機関回転速度ＮＥ（ｋ）及び負荷ＫＬ（ｋ）（現時点の運転状態量が示す現時点の機関の運転状態）が属する運転領域を、「現運転領域」と称呼する。
【００７３】
ステップ４５０：ＣＰＵ７１は、上記（３）式の係数θ０〜θ３をステップ４２５にて更新された（学習された）係数θ０〜θ３に設定し、その（３）式に機関回転速度ＮＥ（ｋ）及び負荷ＫＬ（ｋ）を代入することにより、今回の点火時期（次に到来する燃焼行程に対する点火時期）に対応する点火時期ＳＡgkを算出する。このように係数θ０〜θ３が学習された値（学習後係数）に設定された点火時期制御モデル（学習後点火時期制御モデル）によって求められる点火時期を「学習後点火時期」とも称呼する。
【００７４】
ステップ４５５：ＣＰＵ７１は、上記（３）式の係数θ０〜θ３を初期値（初期係数）に設定し、その（３）式に機関回転速度ＮＥ（ｋ）及び負荷ＫＬ（ｋ）を代入することにより、今回の点火時期に対応する点火時期ＳＡinを算出する。このように係数θ０〜θ３が初期値に戻された点火時期制御モデル（初期点火時期制御モデル）によって求められる点火時期を「初期点火時期」とも称呼する。
【００７５】
ステップ４６０：ＣＰＵ７１は、ステップ４４５にて読み込んだ運転領域別学習カウンタＣx,yを総学習回数カウンタＣＮにより除し、学習比率（＝Ｃx,y／ＣＮ）を求める。そして、ＣＰＵ７１は、学習比率（＝Ｃx,y／ＣＮ）が閾値（所定比率）Ｔｈより大きいか否かを判定する。
【００７６】
いま、学習比率（＝Ｃx,y／ＣＮ）が閾値Ｔｈより大きいと仮定する。学習比率（＝Ｃx,y／ＣＮ）が閾値Ｔｈより大きいことは、機関回転速度ＮＥ（ｋ）及び負荷ＫＬ（ｋ）により表される現在の運転状態が属する現運転領域において、相対的に十分な学習がなされていること、又は、現運転領域における学習回数は少ないが、他の運転領域における学習が現運転領域における点火時期制御モデルに及ぼす影響が小さいことを意味する。即ち、この場合、学習後点火時期ＳＡgkは信頼の高い値（適正値に近い値）となっていると考えられる。従って、ＣＰＵ７１は、ステップ４６０にて「Ｙｅｓ」と判定してステップ４６５に進み、最終点火時期（今回の燃焼行程に対する点火時期）ＳＡ（ｋ）にステップ４５０にて求めた学習後点火時期ＳＡgkを設定する。
【００７７】
次いで、ＣＰＵ７１はステップ４７０に進んで、上記ステップ４６５にて設定された最終点火時期ＳＡ（ｋ）（即ち、学習後点火時期ＳＡgk）にて点火が行われるようにイグナイタ３８に指示信号を送出する。そして、ＣＰＵ７１はステップ４９５に進み、本ルーチンを一旦終了する。
【００７８】
一方、学習比率（＝Ｃx,y／ＣＮ）が閾値Ｔｈより小さい場合（学習比率が閾値Ｔｈ以下である場合）、他の運転領域における学習が、上記現運転領域における点火時期制御モデルに大きな影響を及ぼしていることを意味する。即ち、この場合、学習後点火時期ＳＡgkよりも初期点火時期ＳＡinの方が信頼の高い値となっている。従って、ＣＰＵ７１は、ステップ４６０にて「Ｎｏ」と判定してステップ４７５に進み、最終点火時期ＳＡ（ｋ）にステップ４５５にて求めた初期点火時期ＳＡinを設定する。
【００７９】
次いで、ＣＰＵ７１はステップ４７０に進んで、上記ステップ４７５にて設定された最終点火時期ＳＡ（ｋ）（即ち、初期点火時期ＳＡin）にて点火が行われるようにイグナイタ３８に指示信号を送出する。そして、ＣＰＵ７１はステップ４９５に進み、本ルーチンを一旦終了する。
【００８０】
以上、説明したように、第１制御装置は、現時点の運転領域についての学習比率（＝Ｃx,y／ＣＮ）が所定比率（Ｔｈ）よりも大きいとき前記学習後点火時期ＳＡgkを前記最終点火時期ＳＡ（ｋ）として決定し、同学習比率（＝Ｃx,y／ＣＮ）が所定比率（Ｔｈ）よりも小さいとき前記初期点火時期ＳＡinを前記最終点火時期ＳＡ（ｋ）として決定するように構成された点火時期制御手段を備えている。
【００８１】
従って、前記学習比率（＝Ｃx,y／ＣＮ）が所定比率（Ｔｈ）よりも大きいとき、即ち、学習後点火時期ＳＡgkが適正値に近いとき、その学習後点火時期ＳＡgkにて実際の点火が行われる。この結果、実際の燃焼状態指標値（８°燃焼割合ＭＦＢ８）が目標燃焼状態指標値（目標燃焼割合ＭＦＢ８ｔｇｔ）に近い値となるので、燃焼状態を狙いとする燃焼状態により近づけることができる。これにより、機関の効率を高く維持することができる。
【００８２】
また、前記学習比率（＝Ｃx,y／ＣＮ）が所定比率（Ｔｈ）よりも小さいとき、即ち、学習後点火時期ＳＡgkが適正値から大きく乖離している可能性が大きいとき、前記初期点火時期ＳＡinにて実際の点火が行われる。この結果、点火時期が適正な時期から大きく乖離することを回避することができるので、燃焼を安定させることができる。
【００８３】
＜第２実施形態＞
次に、本発明の第２実施形態に係る点火時期制御装置（以下、「第２制御装置」と称呼する。）について説明する。第２制御装置は、最終点火時期を決定する手法のみが第１制御装置と相違している。従って、以下、この相違点を中心として説明する。
【００８４】
第２制御装置のＣＰＵ７１は、図４に代わる図６にフローチャートにより示した点火時期制御ルーチンを特定の気筒のクランク角度が燃焼行程開始直前の所定のクランク角度（例えば、ＢＴＤＣ９０°）に一致する毎に繰り返し実行している。図６において図４に示したステップと同一の処理を行うためのステップには、図４のそのようなステップに付された符号と同一の符号が付されている。これらのステップについての詳細な説明は省略される。
【００８５】
ＣＰＵ７１は、特定の気筒のクランク角度が前記所定のクランク角度に一致すると、図６のルーチンの処理をステップ６００から開始し、上述したステップ４０５〜ステップ４５５の処理を行う。これにより、前回の燃焼に基いて点火時期制御モデルが学習によって修正され（ステップ４２５）、その学習を行った運転領域に対応する運転領域別学習カウンタＣm,nが増大され（ステップ４３５）、更に、総学習回数カウンタＣＮの値が増大される（ステップ４４０）。加えて、学習後点火時期ＳＡgk及び初期点火時期ＳＡinが算出される（ステップ４５０、ステップ４５５）。
【００８６】
次いで、ＣＰＵ７１はステップ６０５に進み、下記の（４）式に基いて最終点火時期ＳＡ（ｋ）を算出する。
【数４】
2008240569.tif 000006
【００８７】
即ち、ＣＰＵ７１は、ステップ６０５において、現時点の運転領域（現運転領域）についての前記学習比率（＝Ｃx,y／ＣＮ）が大きいほど前記学習後点火時期ＳＡgkの重みが大きくなり且つ前記初期点火時期ＳＡinの重みが小さくなるように、同学習後点火時期ＳＡgkと同初期点火時期ＳＡinとに同学習比率（＝Ｃx,y／ＣＮ）に応じた重み付けを行う。即ち、学習後点火時期ＳＡgk、初期点火時期ＳＡin及び学習比率（＝Ｃx,y／ＣＮ）を用いて学習後点火時期ＳＡgk及び初期点火時期ＳＡinの重み付け平均値を求め、その重み付け平均値を最終点火時期ＳＡ（ｋ）に設定する。
【００８８】
次いで、ＣＰＵ７１はステップ４７０に進み、上記ステップ６０５にて決定された最終点火時期ＳＡ（ｋ）にて点火が行われるようにイグナイタ３８に指示信号を送出する。そして、ＣＰＵ７１はステップ４９５に進み、本ルーチンを一旦終了する。
【００８９】
以上、説明したように、第２制御装置は、前記学習後点火時期ＳＡgkと前記初期点火時期ＳＡinとに前記学習比率（＝Ｃx,y／ＣＮ）に応じた重み付けを行うことにより前記最終点火時期ＳＡ（ｋ）を算出する点火時期制御手段を備えている。
【００９０】
これによれば、学習後点火時期ＳＡgkの信頼度が高いほど（学習後点火時期ＳＡgkが適正値に近いほど）、その学習後点火時期ＳＡgkが最終点火時期ＳＡ（ｋ）に大きく反映される。換言すると、学習後点火時期ＳＡgkの信頼度が低いほど、初期点火時期ＳＡinが最終点火時期ＳＡ（ｋ）に大きく反映される。この結果、より適正値に近い点火時期にて実際の点火を実行することができる。従って、機関の効率を高く維持するとともに、点火時期が適正な時期から大きく乖離することを回避することができるので、燃焼を安定させることができる。
【００９１】
＜第３実施形態＞
次に、本発明の第３実施形態に係る点火時期制御装置（以下、「第３制御装置」と称呼する。）について説明する。第３制御装置は、学習後点火時期を最終点火時期として用いることが望ましくない場合を機関１０の運転状態に基づいて判定し、学習後点火時期を最終点火時期として用いることが望ましくない場合において初期点火時期を最終点火時期とするように構成されている点のみにおいて、第１制御装置と相違している。従って、以下、この相違点を中心として説明する。
【００９２】
第３制御装置のＣＰＵ７１は、図４に代わる図７にフローチャートにより示した点火時期制御ルーチンを特定の気筒のクランク角度が燃焼行程開始直前の所定のクランク角度（例えば、ＢＴＤＣ９０°）に一致する毎に繰り返し実行している。図７においても、図４に示したステップと同一の処理を行うためのステップには、図４のそのようなステップに付された符号と同一の符号が付されている。これらのステップについての詳細な説明は省略される。
【００９３】
ＣＰＵ７１は、特定の気筒のクランク角度が前記所定のクランク角度に一致すると、図７のルーチンの処理をステップ７００から開始し、上述したステップ４０５〜ステップ４２５、ステップ４５０及びステップ４５５の処理を行う。これにより、前回の燃焼に基いて点火時期制御モデルが学習によって修正される（ステップ４２５）。更に、学習後点火時期ＳＡgk及び初期点火時期ＳＡinが算出される（ステップ４５０、ステップ４５５）。
【００９４】
次に、ＣＰＵ７１はステップ７０５に進み、スロットル弁開度TAの単位時間あたりの変化量（即ち、スロットル弁開度変化速度）ΔTAが所定のスロットル弁開度変化速度閾値ΔTAthより小さいか否かを判定する。スロットル弁開度TAは、アクセルペダル８１の操作量Accpが大きくなるほど大きくなるようにＣＰＵ７１及びスロットル弁アクチュエータ４３ａによって制御されている。また、スロットル弁開度TAの単位時間あたりの変化量は、図示しない所定時間Δｔの経過毎に実行されるルーチンにおいて、そのルーチンを実行する時点のスロットル弁開度TAと、そのルーチンを前回実行した時点におけるスロットル弁開度TA（＝TAold＝Δｔ前のスロットル弁開度）と、の差（ΔTA＝TA−TAold）を求めることにより取得される。
【００９５】
いま、スロットル弁開度変化速度ΔTAがスロットル弁開度変化速度閾値ΔTAthより小さいと仮定する。この場合、機関の運転状態は急変していないので、現時点の運転領域（学習領域）及びその近傍の運転領域において十分な回数の学習がなされている。従って、学習後点火時期制御モデルにより求められる学習後点火時期は適正値に近い値（信頼の高い値）となる。
【００９６】
従って、ＣＰＵ７１は、ステップ７０５にて「Ｙｅｓ」と判定してステップ４６５に進み、最終点火時期ＳＡ（ｋ）にステップ４５０にて求めた学習後点火時期ＳＡgkを設定する。次いで、ＣＰＵ７１はステップ４７０に進んで、上記ステップ４６５にて設定された最終点火時期ＳＡ（ｋ）（即ち、学習後点火時期ＳＡgk）にて点火が行われるようにイグナイタ３８に指示信号を送出する。そして、ＣＰＵ７１はステップ４９５に進み、本ルーチンを一旦終了する。
【００９７】
一方、スロットル弁開度変化速度ΔTAがスロットル弁開度変化速度閾値ΔTAthより大きい場合（スロットル弁開度変化速度ΔTAがスロットル弁開度変化速度閾値ΔTAth以上である場合）、運転領域が比較的短時間内に変化するから、現運転領域における点火時期制御モデルの学習は十分ではないと考えられる。換言すると、学習が運転状態の変化に対して十分に追従していないので、学習後点火時期ＳＡgkよりも初期点火時期ＳＡinの方が信頼の高い値となっていると考えられる。
【００９８】
従って、この場合、ＣＰＵ７１は、ステップ７０５にて「Ｎｏ」と判定してステップ４７５に進み、最終点火時期ＳＡ（ｋ）にステップ４５５にて求めた初期点火時期ＳＡinを設定する。次いで、ＣＰＵ７１はステップ４７０に進んで、上記ステップ４７５にて設定された最終点火時期ＳＡ（ｋ）（即ち、初期点火時期ＳＡin）にて点火が行われるようにイグナイタ３８に指示信号を送出する。そして、ＣＰＵ７１はステップ４９５に進み、本ルーチンを一旦終了する。以上が、第３制御装置の作動である。
【００９９】
図８は、過渡運転時である加速運転時における第３制御装置の作動を説明するためのタイムチャートである。図８において、時刻ｔ１までは、曲線Ｃ１にて示したスロットル弁開度変化速度ΔTAはスロットル弁開度変化速度閾値ΔTAth以下である。従って、破線の曲線Ｃ３により示した学習後点火時期ＳＡgkにて点火が実行される。但し、時刻ｔ１までは、機関の運転状態の変化に対して学習が大きく遅れることなくなされるので、破線の曲線Ｃ３により示した学習後点火時期ＳＡgkは実線の曲線Ｃ２により示した初期点火時期ＳＡinと略等しく、且つ、初期点火時期ＳＡinよりも最適値に近い値になっている。
【０１００】
時刻ｔ１以降になると、スロットル弁開度変化速度ΔTAはスロットル弁開度変化速度閾値ΔTAthより大きくなる。この場合、時刻ｔ１以降においても、学習後点火時期ＳＡgkは徐々に最適値へと変化する。しかしながら、最適点火時期は初期点火時期ＳＡinに類似して急変するから、学習後点火時期ＳＡgkにて点火を行っていると点火時期が進角し過ぎることになり、ノッキング等が生じる。そこで、第３制御装置は、時刻ｔ１以降において、学習後点火時期ＳＡgkに代え、初期点火時期ＳＡinにて点火を行う。
【０１０１】
時刻ｔ２以降になると、スロットル弁開度変化速度ΔTAはスロットル弁開度変化速度閾値ΔTAth以下となる。この時点までに学習は十分に進むから、学習後点火時期ＳＡgkは最適値に近い値とへと変化する。従って、第３制御装置は、時刻ｔ２以降において、機関の個々の特性が反映された学習後点火時期ＳＡgkにて点火を実行する。この結果、時刻ｔ１以前及び時刻ｔ２以降において、初期点火時期ＳＡinにて点火を実行する場合よりも、より最適な時期に点火が実行される。
【０１０２】
このように第３制御装置によれば、負荷の変化速度（スロットル弁開度変化速度ΔTA）が所定の負荷変化速度閾値（スロットル弁開度変化速度閾値ΔTAth）よりも大きいとき、学習による点火時期制御モデルの修正が間に合わないと判断し、その場合、学習後点火時期ＳＡgkに代えて初期点火時期ＳＡinにて点火を実行する点火時期制御手段を備える。これにより、過渡運転時において点火時期が適正値から大きく乖離することを回避することができる。
【０１０３】
なお、上記ステップ７０５においては、スロットル弁開度TAの単位時間あたりの変化量ΔTAが所定のスロットル弁開度変化速度閾値ΔTAthより小さいか否かを判定していたが、これに代え、スロットル弁開度TAの単位時間あたりの変化量ΔTAの絶対値がスロットル弁開度変化速度閾値ΔTAthより小さいか否かを判定するように構成されてもよい。また、ステップ７０５において、スロットル弁開度TAの単位時間あたりの変化量に代え、アクセルペダル８１の操作量Accpの単位時間あたりの変化量及び負荷ＫＬの単位時間あたりの変化量等を用いてもよい。
【０１０４】
＜第４実施形態＞
次に、本発明の第４実施形態に係る点火時期制御装置（以下、「第４制御装置」と称呼する。）について説明する。第４制御装置は、初期点火時期に基いて学習後点火時期を制限し、その制限された学習後点火時期を最終点火時期とする点において第１制御装置と相違している。従って、以下、この相違点を中心として説明する。
【０１０５】
第４制御装置のＣＰＵ７１は、図４に代わる図９にフローチャートにより示した点火時期制御ルーチンを特定の気筒のクランク角度が燃焼行程開始直前の所定のクランク角度（例えば、ＢＴＤＣ９０°）に一致する毎に繰り返し実行している。図９においても、図４に示したステップと同一の処理を行うためのステップには、図４のそのようなステップに付された符号と同一の符号が付されている。これらのステップについての詳細な説明は省略される。
【０１０６】
ＣＰＵ７１は、特定の気筒のクランク角度が前記所定のクランク角度に一致すると、図９のルーチンの処理をステップ９００から開始し、上述したステップ４０５〜ステップ４２５、ステップ４５０及びステップ４５５の処理を行う。これにより、前回の燃焼に基いて点火時期制御モデルが学習によって修正される（ステップ４２５）。更に、学習後点火時期ＳＡgk及び初期点火時期ＳＡinが算出される（ステップ４５０、ステップ４５５）。
【０１０７】
次に、ＣＰＵ７１はステップ９０５に進み、学習後点火時期ＳＡgkから初期点火時期ＳＡinを減じた値が所定の閾値（ガード幅）Ｄth（Ｄth＞０）より大きいか否かを判定する。換言すると、ステップ９０５において、学習後点火時期ＳＡgkが、初期点火時期ＳＡinから閾値Ｄthだけ進角した点火時期より、更に進角した値となっているか否かが判定される。
【０１０８】
いま、学習後点火時期ＳＡgkから初期点火時期ＳＡinを減じた値が所定の閾値Ｄthより大きいと仮定する。前述したように、初期点火時期制御モデルは、予め８°燃焼割合が目標燃焼割合ＭＦＢ８ｔｇｔと一致するように適合されている。従って、学習後点火時期ＳＡgkから初期点火時期ＳＡinを減じた値が所定の閾値Ｄthより大きくなっているということは、学習が現時点の運転領域とは相違する運転領域において高い頻度で行われた結果、現時点の運転領域に対する学習後点火時期制御モデル（従って、現時点の運転領域に対する学習後点火時期）が不適切になっていることを意味する。係る観点に基き、第４制御装置は、学習後点火時期を初期点火時期に基づいて制限する。
【０１０９】
具体的に述べると、ＣＰＵ７１はステップ９０５にて「Ｙｅｓ」と判定してステップ９１０に進み、初期点火時期ＳＡinに閾値Ｄthを加えた値（初期点火時期ＳＡinを閾値Ｄthだけ進角させた点火時期）を最終点火時期ＳＡ（ｋ）として決定する。初期点火時期ＳＡinに閾値Ｄthを加えた点火時期は、制限点火時期とも称呼される。次いで、ＣＰＵ７１はステップ９１５に進んで点火時期偏差量ΔＳＡ（ｋ）を閾値Ｄthに設定し、ステップ９２０に進んで点火時期制御モデルの学習を再び実行する。即ち、ＣＰＵ７１は、ステップ９２０において、逐次最小二乗法に基いて点火時期偏差量ΔＳＡ（ｋ）を最小とする係数θ０、θ１、θ２及びθ３を算出（決定）する。このとき、ＣＰＵ７１は、機関回転速度ＮＥ（ｋ）及び負荷ＫＬ（ｋ）を計算に使用する。
【０１１０】
次いで、ＣＰＵ７１はステップ４７０に進み、上記ステップ９１０にて決定された最終点火時期ＳＡ（ｋ）にて点火が行われるようにイグナイタ３８に指示信号を送出する。そして、ＣＰＵ７１はステップ９９５に進み、本ルーチンを一旦終了する。この結果、実際の点火は、初期点火時期ＳＡinを閾値Ｄthだけ進角させた制限点火時期にて実行される。
【０１１１】
一方、ステップ４５５の処理を終了した時点において、学習後点火時期ＳＡgkから初期点火時期ＳＡinを減じた値が所定の閾値Ｄthより小さいが、初期点火時期ＳＡinから学習後点火時期ＳＡgkを減じた値が所定の閾値Ｄthより大きいと仮定する。この場合も、学習が現時点の運転領域とは相違する運転領域において高い頻度で行われた結果、現時点の運転領域に対する学習後点火時期制御モデル（従って、現時点の運転領域に対する学習後点火時期）が不適切になっていることを意味する。係る観点に基き、第４制御装置は、学習後点火時期を初期点火時期に基づいて制限する。
【０１１２】
即ち、ＣＰＵ７１はステップ９０５にて「Ｎｏ」と判定してステップ９２５に進み、初期点火時期ＳＡinから学習後点火時期ＳＡgkを減じた値が所定の閾値Ｄthより大きいか否かを判定する。換言すると、学習後点火時期ＳＡgkが、初期点火時期ＳＡinを閾値Ｄthだけ遅角した点火時期より、更に遅角した値となっているか否かが判定される。前述の仮定に従えば、この条件は成立している。従って、ＣＰＵ７１はステップ９２５にて「Ｙｅｓ」と判定してステップ９３０に進み、初期点火時期ＳＡinから閾値Ｄthを減じた値（初期点火時期ＳＡinを閾値Ｄthだけ遅角させた点火時期）を最終点火時期ＳＡ（ｋ）として決定する。この初期点火時期ＳＡinから閾値Ｄthを減じた点火時期も、制限点火時期とも称呼される。そして、ＣＰＵ７１はステップ９３５に進んで、点火時期偏差量ΔＳＡ（ｋ）を閾値Ｄthの符号を反転した値（−Ｄth）に設定し、ステップ９２０に進んで点火時期制御モデルの学習を実行する。
【０１１３】
次いで、ＣＰＵ７１はステップ４７０に進んで、上記ステップ９３０にて決定された最終点火時期ＳＡ（ｋ）にて点火が行われるようにイグナイタ３８に指示信号を送出する。そして、ＣＰＵ７１はステップ９９５に進み、本ルーチンを一旦終了する。この結果、実際の点火は、初期点火時期ＳＡinを閾値Ｄthだけ遅角させた制限点火時期に実行される。
【０１１４】
他方、ステップ４５５の処理を終了した時点において、学習後点火時期ＳＡgkと初期点火時期ＳＡinとの差の絶対値がＤthより小さい（Ｄth以下）である場合、現時点の運転領域に対する学習後点火時期制御モデル（従って、現時点の運転領域に対する学習後点火時期）は不適切になってはいないと考えられる。
【０１１５】
そこで、この場合、ＣＰＵ７１はステップ９０５及びステップ９２５の両ステップにて「Ｎｏ」と判定してステップ９４０に進み、学習後点火時期ＳＡgkを最終点火時期ＳＡ（ｋ）として設定する。次いで、ＣＰＵ７１はステップ４７０に進んで、上記ステップ９４０にて決定された最終点火時期ＳＡ（ｋ）にて点火が行われるようにイグナイタ３８に指示信号を送出する。そして、ＣＰＵ７１はステップ９９５に進み、本ルーチンを一旦終了する。この結果、実際の点火は、学習後点火時期ＳＡgkにて実行される。
【０１１６】
以上、説明したように、第４制御装置は、前記学習後点火時期ＳＡgkと前記初期点火時期ＳＡinとの差（差の大きさ、即ち、差の絶対値の意味）が所定閾値Ｄthより小さいときには前記学習後点火時期ＳＡgkを最終点火時期ＳＡ（ｋ）として決定し、同差が同所定閾値ＳＡgkより大きいときには前記初期点火時期ＳＡinに基いて定められる制限点火時期（初期点火時期ＳＡinを閾値Ｄthだけ進角させた点火時期、又は、初期点火時期ＳＡinを閾値Ｄthだけ遅角させた点火時期）を最終点火時期ＳＡ（ｋ）として決定し、同決定した最終点火時期ＳＡ（ｋ）にて点火を実行する点火時期制御手段を備えている。この結果、点火時期が不適切な学習後点火時期ＳＡgkに設定されないので、点火時期が適正値から大きく乖離することを回避することができる。
【０１１７】
なお、制限点火時期は、学習後点火時期ＳＡgkが初期点火時期ＳＡinよりも進角側にある場合、初期点火時期ＳＡinを第１所定量（Ｄth１＞０）だけ進角した点火時期に設定され、学習後点火時期ＳＡgkが初期点火時期ＳＡinよりも遅角側にある場合、初期点火時期ＳＡinを第１所定量（Ｄth１）と相違する第２所定量（Ｄth２＞０）だけ遅角した点火時期に設定されてもよい。点火時期の過度の進角によるノッキングを抑制するために、第１所定量Ｄth１は第２所定量Ｄth２よりも小さくすることが望ましい。また、前記所定閾値Ｄthは、一定であってもよく、機関の運転状態量に応じて変化する値であってもよい。特に、高負荷側におけるノッキングの発生を回避するため、前記所定閾値Ｄthは機関の負荷（例えば、負荷ＫＬ）が大きくなるほど小さくなるように定められていてもよい。
【０１１８】
更に、第４制御装置は、前記制限点火時期にて点火を実行した場合、その時点の機関回転速度ＮＥ（ｋ）及び機関負荷ＫＬ（ｋ）を、その時点における学習後点火時期制御モデルに適用したときに、同学習後点火時期制御モデルが同制限点火時期の点火時期を算出するように係数θ０〜θ３を修正する（再学習を行う。）。従って、制限されたという事実（更には、前記制限点火時期）を学習によって学習後点火時期制御モデルに反映させることができる。この結果、学習後点火時期制御モデルを、より適正なモデルへと近づけさせることができる。
【０１１９】
次に、上記第１〜３制御装置の変形例について説明する。これらの変形例は、第４制御装置にて実行した図９のステップ９１５、ステップ９３５及びステップ９２０と同様な再学習を行う。
【０１２０】
（第１制御装置の変形例）
第１制御装置の変形例は、図４に示したルーチンのステップ４７５とステップ４７０との間に図１０に示したステップ１００５及びステップ１０１０の処理を行う。具体的に説明すると、ＣＰＵ７１は、運転領域別学習カウンタＣx,yを総学習回数カウンタＣＮにより除した学習比率（＝Ｃx,y／ＣＮ）が閾値Ｔｈより小さい場合、ステップ４６０にて「Ｎｏ」と判定してステップ４７５に進み、最終点火時期ＳＡ（ｋ）にステップ４５５にて求めた初期点火時期ＳＡinを設定する。これにより、機関回転速度ＮＥ（ｋ）及び負荷ＫＬ（ｋ）により表される現在の運転状態が属する現運転領域において、より信頼性の高い初期点火時期ＳＡinが学習後点火時期ＳＡgkに代えて採用される。
【０１２１】
次いで、ＣＰＵ７１はステップ１００５に進み、点火時期偏差量ΔＳＡ（ｋ）に「学習後点火時期ＳＡgkから初期点火時期ＳＡinを減じた値（ＳＡgk−ＳＡin）」を設定する。そして、ＣＰＵ７１は、ステップ１０１０に進み、図９のステップ９２０と同様、点火時期制御モデルの学習を再び実行する。具体的に述べると、ＣＰＵ７１は、逐次最小二乗法に基いて点火時期偏差量ΔＳＡ（ｋ）（＝ＳＡgk−ＳＡin）を最小とする係数θ０、θ１、θ２及びθ３を算出（決定）する。このとき、ＣＰＵ７１は、機関回転速度ＮＥ（ｋ）及び負荷ＫＬ（ｋ）を計算に使用する。その後、ＣＰＵ７１は図４のステップ４７０へと進み、点火実行処理を行う。
【０１２２】
この結果、現運転領域における学習後点火時期制御モデルを、より適正なモデルへと近づけさせることができる。
【０１２３】
（第２制御装置の変形例）
第２制御装置の変形例は、図６に示したルーチンのステップ６０５とステップ４７０との間に図１１に示したステップ１１０５及びステップ１１１０の処理を行う。具体的に説明すると、ＣＰＵ７１は、図６のステップ６０５に続いて図１１のステップ１１０５に進み、点火時期偏差量ΔＳＡ（ｋ）に「学習後点火時期ＳＡgkから図６のステップ６０５にて求めた最終点火時期ＳＡ（ｋ）を減じた値」を設定する。この最終点火時期ＳＡ（ｋ）は、前述したように、学習後点火時期ＳＡgkと初期点火時期ＳＡinとを学習比率（＝Ｃx,y／ＣＮ）を用いて重み付け平均した点火時期である。
【０１２４】
そして、ＣＰＵ７１は、ステップ１１１０に進み、図９のステップ９２０と同様、点火時期制御モデルの学習を再び実行する。具体的に述べると、ＣＰＵ７１は、逐次最小二乗法に基いて点火時期偏差量ΔＳＡ（ｋ）（＝ＳＡgk−ＳＡ（ｋ））を最小とする係数θ０、θ１、θ２及びθ３を算出（決定）する。このとき、ＣＰＵ７１は、機関回転速度ＮＥ（ｋ）及び負荷ＫＬ（ｋ）を計算に使用する。その後、ＣＰＵ７１は図６のステップ４７０へと進み、点火実行処理を行う。
【０１２５】
この結果、現運転領域における学習後点火時期制御モデルを、より適正なモデルへと近づけさせることができる。
【０１２６】
（第３制御装置の変形例）
第３制御装置の変形例は、図７に示したルーチンのステップ４７５とステップ４７０との間に図１２に示したステップ１２０５及びステップ１２１０の処理を行う。具体的に説明すると、ＣＰＵ７１は、スロットル弁開度変化速度ΔTAがスロットル弁開度変化速度閾値ΔTAthより大きい場合、ステップ７０５にて「Ｎｏ」と判定してステップ４７５に進み、最終点火時期ＳＡ（ｋ）に図７のステップ４５５にて求めた初期点火時期ＳＡinを設定する。これにより、機関回転速度ＮＥ（ｋ）及び負荷ＫＬ（ｋ）により表される現在の運転状態が属する現運転領域において、より信頼性の高い初期点火時期ＳＡinが学習後点火時期ＳＡgkに代えて採用される。
【０１２７】
次いで、ＣＰＵ７１はステップ１２０５に進み、点火時期偏差量ΔＳＡ（ｋ）に「学習後点火時期ＳＡgkから初期点火時期ＳＡinを減じた値（ＳＡgk−ＳＡin）」を設定する。そして、ＣＰＵ７１は、ステップ１２１０に進み、図９のステップ９２０と同様、点火時期制御モデルの学習を再び実行する。具体的に述べると、ＣＰＵ７１は、逐次最小二乗法に基いて点火時期偏差量ΔＳＡ（ｋ）（＝ＳＡgk−ＳＡin）を最小とする係数θ０、θ１、θ２及びθ３を算出（決定）する。このとき、ＣＰＵ７１は、機関回転速度ＮＥ（ｋ）及び負荷ＫＬ（ｋ）を計算に使用する。その後、ＣＰＵ７１は図４のステップ４７０へと進み、点火実行処理を行う。
【０１２８】
この結果、現運転領域における学習後点火時期制御モデルを、より適正なモデルへと近づけさせることができる。
【０１２９】
以上から明らかなように、第１制御装置乃至第３制御装置の各変形例、及び、第４制御装置は、前記最終点火時期ＳＡ（ｋ）と前記学習後点火時期ＳＡgkとが相違する場合、同最終点火時期ＳＡ（ｋ）と同学習後点火時期ＳＡgkの差が小さくなるように前記点火時期制御モデルを表す関数を修正する学習（再学習）を行うモデル学習手段（再学習手段）を備えていると言うこともできる。
【０１３０】
以上、説明したように、本発明による点火時期制御の各実施形態によれば、不適切な学習後点火時期ＳＡgkが点火時期として用いられないから、ノッキング及び不安定燃焼状態の発生等を回避することができる。
【０１３１】
本発明は上記実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、上記各実施形態において、点火時期制御モデルの学習は逐次最小二乗法により行われていたが、他の手法を用いて学習を行ってもよい。また、点火時期制御モデルの学習は、係数θ０〜θ３の全てを修正することにより行われていたが、係数θ０〜θ３のうちのいくつかの係数のみを修正するように学習を実行してもよい。更に、点火時期制御モデルが係数θ０〜θ３以外の適合パラメータを備えている場合、初期点火時期制御モデルはそのような適合パラメータが適合されたモデルであり、学習後点火時期制御モデルはそのような適合パラメータを学習により修正したものでもよい。
【０１３２】
また、上記各実施形態は、燃焼割合ＭＦＢ（従って、図示熱量の割合Ｑsum／Ｑtotal）を筒内圧に基いて取得していたが、燃焼割合ＭＦＢをWiebe関数と呼ばれる燃焼モデル（例えば、特開２００６−９７２０号公報を参照。）により求めるように構成することもできる。更に、燃焼状態指標値は、所定のクランク角度における燃焼割合ＭＦＢに限定されず、例えば、所定のクランク角度における筒内圧及び／又は筒内圧の変化速度等であってもよい。
【図面の簡単な説明】
【０１３３】
【図１】本発明の第１実施形態に係る点火時期制御装置を適用した内燃機関の概略図である。
【図２】点火時期と８°燃焼割合と機関の発生トルクとの関係を示したグラフである。
【図３】図１に示した電気制御装置（点火時期制御装置）の機能ブロック図である。
【図４】図１に示したＣＰＵが実行するルーチンを示したフローチャートである。
【図５】点火時期制御モデルの学習領域の一例を示した図である。
【図６】本発明の第２実施形態に係る点火時期制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図７】本発明の第３実施形態に係る点火時期制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図８】加速運転時における第３実施形態に係る点火時期制御装置の作動を説明するためのタイムチャートである。
【図９】本発明の第４実施形態に係る点火時期制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【図１０】本発明の第１実施形態の変形例に係る点火時期制御装置のＣＰＵが実行するルーチンの一部を示したフローチャートである。
【図１１】本発明の第２実施形態の変形例に係る点火時期制御装置のＣＰＵが実行するルーチンの一部を示したフローチャートである。
【図１２】本発明の第３実施形態の変形例に係る点火時期制御装置のＣＰＵが実行するルーチンの一部を示したフローチャートである。
【図１３】総ての運転領域に対して偏りなく学習が行われた場合の点火時期制御モデルにより算出される点火時期を示した図である。
【図１４】ある特定運転領域においてのみ学習が行われた後の点火時期制御モデルにより算出される点火時期を示した図である。
【図１５】所定の運転を行った後における点火時期制御モデルの学習の運転領域別頻度を表したグラフである。
【符号の説明】
【０１３４】
１０…内燃機関、２５…燃焼室、３７…点火プラグ、３８…イグナイタ、４３…スロットル弁、６５…筒内圧センサ、６９…アクセル開度センサ、７０…電気制御装置、７１…ＣＰＵ、Ａ１…運転状態量取得部、Ａ２…目標値設定部、Ａ３…実燃焼割合ＭＦＢ８算出部、Ａ４…点火時期偏差量算出部、Ａ５…遅延部、Ａ６…モデル学習部、Ａ７…点火時期制御部。
【図１】
2008240569.tif 000007
【図２】
2008240569.tif 000008
【図３】
2008240569.tif 000009
【図４】
2008240569.tif 000010
【図５】
2008240569.tif 000011
【図６】
2008240569.tif 000012
【図７】
2008240569.tif 000013
【図８】
2008240569.tif 000014
【図９】
2008240569.tif 000015
【図１０】
2008240569.tif 000016
【図１１】
2008240569.tif 000017
【図１２】
2008240569.tif 000018
【図１３】
2008240569.tif 000019
【図１４】
2008240569.tif 000020
【図１５】
2008240569.tif 000021