(57)【特許請求の範囲】
【請求項１】
内燃機関の複数の気筒の点火時期を気筒毎に決定する点火時期決定手段と、
ノッキングの強度を表すノック強度パラメータを気筒毎に検出するノック強度パラメータ検出手段と、
当該検出されたノック強度パラメータに応じて、前記点火時期を遅角側に補正すべき度合を表す補正度合パラメータを気筒毎に算出する補正度合パラメータ算出手段と、
当該算出された補正度合パラメータに応じて、前記点火時期を気筒毎に遅角側に補正する第１補正手段と、を備え、
前記補正度合パラメータ算出手段は、前記ノック強度パラメータの１つが所定の第１判定値よりも大きくかつ当該所定の第１判定値よりも大きい所定の第２判定値未満のときには、当該１つのノック強度パラメータに対応する１つの気筒用の前記補正度合パラメータのみを算出し、前記１つのノック強度パラメータが前記所定の第２判定値以上のときには、全気筒用の前記補正度合パラメータを算出し、
前記ノック強度パラメータ検出手段は、
筒内圧を表す筒内圧パラメータを気筒毎に検出する筒内圧パラメータ検出手段と、
前記内燃機関の回転数を機関回転数として検出する機関回転数検出手段と、
前記筒内圧パラメータに所定のバンドパスフィルタ処理を施したフィルタ値に基づき、前記ノック強度パラメータを算出するとともに、当該所定のバンドパスフィルタ処理の通過帯域を、前記検出された機関回転数に応じて設定するノック強度パラメータ算出手段と、を有し、
当該ノック強度パラメータ算出手段は、
圧縮行程中の所定のクランク角区間で検出された前記筒内圧パラメータに前記所定のバンドパスフィルタ処理を施すことにより前記フィルタ値を算出するとともに、当該フィルタ値に基づき、前記ノック強度パラメータの算出に用いる第１パラメータを算出する第１パラメータ算出手段と、
膨張行程中の所定のクランク角区間で検出された前記筒内圧パラメータに前記所定のバンドパスフィルタ処理を施すことにより前記フィルタ値を算出するとともに、当該フィルタ値に基づき、前記ノック強度パラメータの算出に用いる第２パラメータを算出する第２パラメータ算出手段と、
前記算出された第１パラメータおよび前記算出された第２パラメータに応じて、前記ノック強度パラメータを算出するパラメータ算出手段と、を備え、
前記第１パラメータ算出手段は、前記所定のバンドパスフィルタ処理の演算を、前記第１パラメータの演算開始よりも早いタイミングで開始し、
前記第２パラメータ算出手段は、前記所定のバンドパスフィルタ処理の演算を前記第２パラメータの演算開始よりも早いタイミングで開始することを特徴とする内燃機関の点火時期制御装置。
【請求項２】
前記ノック強度パラメータ算出手段は、前記所定のバンドパスフィルタ処理の通過帯域を、前記機関回転数が所定回転数未満のときには所定の第１周波数域に設定し、前記機関回転数が当該所定回転数以上のときには当該所定の第１周波数域よりも高い所定の第２周波数域に設定することを特徴とする請求項１に記載の内燃機関の点火時期制御装置。
【請求項３】
前記筒内圧パラメータに基づき、前記筒内圧が当該燃焼サイクルにおける最大値を示すクランク角位置を最大圧角として気筒毎に検出する最大圧角検出手段と、
当該最大圧角の目標となる目標角を気筒毎に設定する目標角設定手段と、
前記最大圧角が前記目標角となるように、所定のフィードバック制御アルゴリズムを用いて前記点火時期を気筒毎に補正する第２補正手段と、をさらに備え、
前記補正度合パラメータ算出手段は、前記１つのノック強度パラメータが前記所定の第１判定値よりも大きいときには、当該１つのノック強度パラメータに対応する前記１つの気筒用の前記補正度合パラメータを、前記所定の第１判定値以下のときよりも前記点火時期を遅角側に補正すべき度合のより大きい値に算出し、
前記目標角設定手段は、前記１つのノック強度パラメータが前記所定の第１判定値よりも大きいときには、前記１つの気筒用の前記目標角を、当該所定の第１判定値以下のときよりも遅角側に設定することを特徴とする請求項１または２に記載の内燃機関の点火時期制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ノッキングの発生状況に応じて点火時期を制御する内燃機関の点火時期制御装置に関する。
【背景技術】
【０００２】
従来、この種の内燃機関の点火時期制御装置として、例えば特許文献１に記載されたものが知られている。この内燃機関は、第１〜第６気筒を有する６気筒タイプのものであり、点火時期制御装置は、ノック振動レベルを気筒毎に検出するノックセンサと、このノックセンサが接続されたコントローラなどを備えている。
【０００３】
このコントローラでは、点火時期が気筒毎に以下に述べるように制御される。まず、点火時期を制御すべき気筒を判別し（第６図のステップＰ７，８）、例えば第１気筒と判別したときには、第１気筒のノック振動レベルＫ１を読み込み（ステップＰ９）、これがスライスレベルＳＬ以上であるときには、第１気筒用の点火時期の補正値Ｕ１を所定値ｒ分、遅角側になるように設定し（ステップＰ１６）、この補正値Ｕ１を基本点火時期Ｂに加算した値を第１気筒用の点火時期Ａ１に設定する（ステップＰ１８）。それにより、第１気筒用の点火時期Ａ１が所定値ｒ分遅角側に補正されることで、第１気筒におけるノッキングが抑制される。
【０００４】
【特許文献１】特開昭６２−１５００５６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記従来の内燃機関の点火時期制御装置によれば、ノック振動レベルを気筒毎に判定し、点火時期の遅角補正量を気筒毎に設定することで、ノッキングの抑制を気筒毎に実行しているので、例えば、燃料の性状が悪く、そのオクタン価が低いときなどには、全気筒におけるノッキングの抑制が終了するのに時間を要し、内燃機関全体としてノッキングを効果的に抑制することができず、その結果、内燃機関がダメージを受けるおそれがある。
【０００６】
本発明は、上記課題を解決するためになされたもので、内燃機関全体としてノッキングをより迅速かつ効果的に抑制でき、内燃機関の寿命を延ばすことができる内燃機関の点火時期制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、請求項１に係る内燃機関３の点火時期制御装置１は、内燃機関３の複数の気筒（例えば実施形態における第１気筒＃１〜第６気筒＃６）の点火時期（基本点火時期ＩＧＭＡＰ）を気筒毎に決定する点火時期決定手段（ＥＣＵ２、点火時期コントローラ４０）と、ノッキングの強度を表すノック強度パラメータ（ノック強度ＳＮＡ＿Ｓ）を気筒毎に検出するノック強度パラメータ検出手段（ＥＣＵ２、筒内圧センサ１０、ノック判定コントローラ２０、ステップ３０〜４４）と、検出されたノック強度パラメータに応じて、点火時期を遅角側に補正すべき度合を表す補正度合パラメータ（補正係数学習値ＫＩＧＫＮ）を気筒毎に算出する補正度合パラメータ算出手段（ＥＣＵ２、点火時期コントローラ４０、ステップ１０３，１０８）と、算出された補正度合パラメータに応じて、点火時期を気筒毎に遅角側に補正する第１補正手段（ＥＣＵ２、点火時期コントローラ４０、ステップ８４，８５）と、を備え、補正度合パラメータ算出手段は、ノック強度パラメータの１つが所定の第１判定値（ノック判定値ＳＮＡ＿ＲＥＦＬ）よりも大きくかつ所定の第１判定値よりも大きい所定の第２判定値（強ノック判定値ＳＮＡ＿ＲＥＦＨ）未満のとき（ステップ１０１の判別結果がＮＯのとき）には、１つのノック強度パラメータに対応する１つの気筒用の補正度合パラメータのみを算出し（ステップ１０８）、１つのノック強度パラメータが所定の第２判定値以上のとき（ステップ１０１の判別結果がＹＥＳのとき）には、全気筒用の補正度合パラメータを算出し（ステップ１０３）、ノック強度パラメータ検出手段は、筒内圧ＰＣＹＬＦを表す筒内圧パラメータ（検出電圧ＶＣＰＳ）を気筒毎に検出する筒内圧パラメータ検出手段（筒内圧センサ１０）と、内燃機関の回転数ＮＥを機関回転数として検出する機関回転数検出手段（ＥＣＵ２、クランク角センサ１３）と、筒内圧パラメータに所定のバンドパスフィルタ処理［式（１）］を施したフィルタ値（検出電圧のフィルタ値ＶＣＰＳ＿Ｆ）に基づき、ノック強度パラメータ（ノック強度ＳＮＡ＿Ｓ）を算出するとともに、所定のバンドパスフィルタ処理の通過帯域を、検出された機関回転数に応じて設定するノック強度パラメータ算出手段（ＥＣＵ２、ノック判定コントローラ２０）と、を有し、ノック強度パラメータ算出手段は、圧縮行程中の所定のクランク角区間（図４のＣＡ２〜ＣＡ３）で検出された筒内圧パラメータ（検出電圧ＶＣＰＳ）に所定のバンドパスフィルタ処理を施すことによりフィルタ値を算出するとともに、フィルタ値（検出電圧のフィルタ値ＶＣＰＳ＿Ｆ）に基づき、ノック強度パラメータの算出に用いる第１パラメータ（ノイズレベル算出用の積算値ＡＮＯＩＳＥＳ）を算出する第１パラメータ算出手段（ＥＣＵ２、ノック判定コントローラ２０）と、膨張行程中の所定のクランク角区間（図４のＣＡ５〜ＣＡ６）で検出された筒内圧パラメータに所定のバンドパスフィルタ処理を施すことによりフィルタ値を算出するとともに、フィルタ値に基づき、ノック強度パラメータの算出に用いる第２パラメータ（ノックレベル算出用の積算値ＡＫＮＯＣＫＳ）を算出する第２パラメータ算出手段（ＥＣＵ２、ノック判定コントローラ２０）と、算出された第１パラメータおよび算出された第２パラメータに応じて、ノック強度パラメータを算出するパラメータ算出手段（ＥＣＵ２、ノック判定コントローラ２０）と、を備え、第１パラメータ算出手段は、所定のバンドパスフィルタ処理の演算を、第１パラメータの演算開始よりも早いタイミング（図４のＣＡ１）で開始し、第２パラメータ算出手段は、所定のバンドパスフィルタ処理の演算を第２パラメータの演算開始よりも早いタイミング（図４のＣＡ４）で開始することを特徴とする。
【０００８】
この内燃機関の点火時期制御装置によれば、ノッキングの強度を表すノック強度パラメータに応じて、点火時期を遅角側に補正すべき度合を表す補正度合パラメータが気筒毎に算出され、この補正度合パラメータに応じて、点火時期が気筒毎に補正される。ここで、１つのノック強度パラメータが所定の第１判定値よりも大きくかつこれよりも大きい所定の第２判定値未満のときには、１つのノック強度パラメータに対応する１つの気筒用の補正度合パラメータのみが算出され、１つのノック強度パラメータが所定の第２判定値以上のときには、全気筒用の補正度合パラメータが算出されるので、１つのノック強度パラメータが所定の第１判定値よりも大きくかつ所定の第２判定値未満のときには、その１つのノック強度パラメータに対応する１つの気筒の点火時期のみが遅角側に補正され、１つのノック強度パラメータが所定の第２判定値以上のときには、全気筒の点火時期が遅角側に補正される。したがって、この所定の第２判定値を適切に設定することにより、例えば、燃料の性状が悪く、そのオクタン価が低い場合において、全気筒の点火時期をまとめて遅角側に補正することができ、内燃機関全体としてノッキングの発生をより迅速かつ効果的に抑制できる。その結果、内燃機関の寿命を延ばすことができる。
【０００９】
また、この内燃機関の点火時期制御装置によれば、筒内圧を表す筒内圧パラメータが気筒毎に検出され、筒内圧パラメータに所定のバンドパスフィルタ処理を施したフィルタ値に基づき、ノック強度パラメータが算出されるとともに、所定のバンドパスフィルタ処理の通過帯域が機関回転数に応じて設定される。ここで、ノッキングの強度を表すノック強度パラメータを筒内圧パラメータに基づいて算出した場合、筒内圧パラメータは、それが筒内圧を表すものであることに起因して、内燃機関の振動の影響を受けやすいという特性を備えている。その結果、ノック強度パラメータは、内燃機関の回転に伴う振動ノイズの影響を受けやすく、ノッキングの強度を表すデータ以外にそのような振動ノイズを含むものとなる。その場合、筒内圧パラメータに含まれる振動ノイズは、筒内圧パラメータの共振周波数における振幅が機関回転数に応じて変化し、それに伴って、ノック強度パラメータのＳ／Ｎ比も変化する。したがって、ノック強度パラメータを算出する際、所定のバンドパスフィルタ処理の通過帯域をノック強度パラメータにおける良好なＳ／Ｎ比を確保できるような周波数域に設定し、そのようなバンドパスフィルタ処理を筒内圧パラメータに施すことによって、ノッキングの強度のみを表すデータを筒内圧パラメータから効果的に取り出すことができる。その結果、ノック強度パラメータの算出精度を向上させることができ、ノッキングをさらに効果的に抑制することができる（なお、本明細書における「ノック強度パラメータの検出」、「筒内圧パラメータの検出」および「機関回転数の検出」などの「検出」は、センサなどによりこれらを直接検出することに限らず、これらの値を他のパラメータに基づいて算出することを含む）。
【００１０】
さらに、この内燃機関の点火時期制御装置によれば、圧縮行程中の所定のクランク角区間で検出された筒内圧パラメータに所定のバンドパスフィルタ処理を施すことによりフィルタ値が算出されるとともに、このフィルタ値に基づき、ノック強度パラメータの算出に用いる第１パラメータが算出され、膨張行程中の所定のクランク角区間で検出された筒内圧パラメータに所定のバンドパスフィルタ処理を施すことによりフィルタ値が算出されるとともに、このフィルタ値に基づき、ノック強度パラメータの算出に用いる第２パラメータが算出され、これらの第１パラメータおよび第２パラメータに応じて、ノック強度パラメータが算出される。一般に、バンドパスフィルタ処理の演算は、その開始直後、初期ノイズが一時的に増大し、その演算結果が安定するまでに時間を要するという特性を有している。これに対して、この点火時期制御装置によれば、第１パラメータ算出手段により、所定のバンドパスフィルタ処理の演算が、第１パラメータの演算開始よりも早いタイミングで開始され、第２パラメータ算出手段により、所定のバンドパスフィルタ処理の演算が第２パラメータの演算開始よりも早いタイミングで開始されるので、バンドパスフィルタ処理の演算において、初期ノイズの一時的な増大が収まり、その演算結果が安定した時点で、第１パラメータおよび第２パラメータの演算を開始することができ、これらのパラメータの演算精度を向上させることができる。その結果、これらのパラメータに応じて算出されるノック強度パラメータの算出精度をより一層、向上させることができ、ノッキングをさらに効果的に抑制することができる。
【００１１】
請求項２に係る発明は、請求項１に記載の内燃機関３の点火時期制御装置１において、ノック強度パラメータ算出手段は、所定のバンドパスフィルタ処理の通過帯域を、機関回転数ＮＥが所定回転数ＮＥ１未満のときには所定の第１周波数域（第１周波数ＦＲＱ１）に設定し、機関回転数ＮＥが所定回転数ＮＥ１以上のときには所定の第１周波数域よりも高い所定の第２周波数域（第２周波数ＦＲＱ２）に設定することを特徴とする。
【００１２】
この点火時期制御装置のように、ノック強度パラメータを筒内圧パラメータに所定のバンドパスフィルタ処理を施した値（以下「フィルタ値」という）に基づいて算出する場合、バンドパスフィルタ処理の通過帯域を変更した際、機関回転数の所定回転数をしきい値としてフィルタ値のＳ／Ｎ比が変化することは、本出願人の実験によって確認されている。特に、機関回転数が所定回転数以上の領域では、所定回転数未満の領域と比べて、バンドパスフィルタ処理の通過帯域をより高い値に設定することで、Ｓ／Ｎ比が向上することが確認されている（後述する図３参照）。したがって、この点火時期制御装置では、所定のバンドパスフィルタ処理の通過帯域を、機関回転数が所定回転数未満のときには所定の第１周波数域に設定し、機関回転数が所定回転数以上のときには所定の第１周波数域よりも高い所定の第２周波数域に設定するので、これらの２つの通過帯域を適切に設定することにより、フィルタ値のＳ／Ｎ比を確実に向上させることができる。それにより、ノック強度パラメータの算出精度をさらに向上させることができ、ノッキングをより一層、効果的に抑制することができる。
【００１５】
請求項３に係る発明は、請求項１または２に記載の内燃機関３の点火時期制御装置１において、筒内圧パラメータに基づき、筒内圧が燃焼サイクルにおける最大値を示すクランク角位置を最大圧角θＰＭＡＸとして気筒毎に検出する最大圧角検出手段（ＥＣＵ２、ノック判定コントローラ２０、ステップ４）と、最大圧角の目標となる目標角θＰＭＡＸ＿ＣＭＤを気筒毎に設定する目標角設定手段（ＥＣＵ２、点火時期コントローラ４０、ステップ１３０〜１３２）と、最大圧角が目標角となるように、所定のフィードバック制御アルゴリズム［式（７）〜（１２）］を用いて点火時期を気筒毎に補正する第２補正手段（ＥＣＵ２、点火時期コントローラ４０）と、をさらに備え、補正度合パラメータ算出手段は、１つのノック強度パラメータが所定の第１判定値よりも大きいときには、１つのノック強度パラメータに対応する１つの気筒用の補正度合パラメータを、所定の第１判定値以下のときよりも点火時期を遅角側に補正すべき度合のより大きい値に算出し、目標角設定手段は、１つのノック強度パラメータが所定の第１判定値よりも大きいときには、１つの気筒用の目標角を、所定の第１判定値以下のときよりも遅角側に設定することを特徴とする。
【００１６】
この内燃機関の点火時期制御装置によれば、筒内圧パラメータに基づき、筒内圧が燃焼サイクルにおける最大値を示すクランク角位置が最大圧角として気筒毎に検出され、最大圧角の目標となる目標角が気筒毎に設定され、第２補正手段により、最大圧角が目標角となるように、所定のフィードバック制御アルゴリズムを用いて点火時期が補正される。ここで、１つのノック強度パラメータが所定の第１判定値よりも大きいときには、１つのノック強度パラメータに対応する１つの気筒用の補正度合パラメータが、所定の第１判定値以下のときよりも点火時期を遅角側に補正すべき度合のより大きい値に算出されることで、第１補正手段により、１つの気筒用の点火時期が、所定の第１判定値以下のときよりもより遅角側に補正される。さらに、１つのノック強度パラメータが所定の第１判定値よりも大きいときには、１つの気筒用の目標角が、所定の第１判定値以下のときよりも遅角側の値に設定されることで、第２補正手段による点火時期の補正方向も、より遅角側のものとなる。このように、補正度合パラメータが所定の第１判定値よりも大きいときには、第１補正手段および第２補正手段による点火時期の補正方向をいずれも、所定の反対値未満のときよりも遅角側になるように合致させることができ、その結果、第１補正手段による点火時期の補正が、第２点火時期補正手段による最大圧角の目標角へのフィードバック制御に干渉するのを回避しながら、第１点火時期補正手段によるノッキングの抑制効果を確保することができる。
【発明を実施するための最良の形態】
【００１７】
以下、図面を参照しながら、本発明の一実施形態に係る内燃機関の点火時期制御装置について説明する。図１に示すように、本実施形態の点火時期制御装置１は、ＥＣＵ２を備えており、このＥＣＵ２により、後述するように、内燃機関（以下「エンジン」という）３の点火時期が制御される。
【００１８】
同図に示すように、エンジン３は、Ｖ型６気筒のガソリンエンジンであり、右バンクの第１〜第３気筒＃１，＃２，＃３と、左バンクの第４〜第６の気筒＃４，＃５，＃６を備えている。これらの第１〜第６気筒＃１〜＃６（複数の気筒）には、吸気管４がインテークマニホールド４ａを介して接続されており、インテークマニホールド４ａの各分岐部には、各気筒の図示しない吸気ポートに臨むように燃料噴射弁５が取り付けられている。
【００１９】
燃料噴射弁５は、燃料を各分岐部内に噴射するように各分岐部に設けられ、ＥＣＵ２に電気的に接続されているとともに、ＥＣＵ２により、エンジン３の運転状態に応じて、開弁時間および開弁タイミングが制御される。すなわち、燃料噴射制御が実行される。
【００２０】
また、エンジン３のシリンダヘッドには、点火プラグ６および筒内圧センサ１０が気筒毎に取り付けられている（両者とも１つのみ図示）。この点火プラグ６も、ＥＣＵ２に電気的に接続されており、ＥＣＵ２により、燃焼室内の混合気を後述する点火時期に応じたタイミングで燃焼させるように、放電状態が制御される。すなわち、点火時期制御が実行される。以上の燃料噴射制御および点火時期制御は、６つの気筒＃１〜＃６において、＃１→＃５→＃３→＃６→＃２→＃４の順に実行される。
【００２１】
一方、筒内圧センサ１０は、点火プラグ６と一体型の圧電素子タイプのものであり、各気筒内の圧力すなわち筒内圧の変化に伴ってたわむことにより、筒内圧を表す検出信号をＥＣＵ２に出力する。ＥＣＵ２は、筒内圧センサ１０の検出信号の電圧値（以下「検出電圧」という）ＶＣＰＳ＃ｉに基づき、筒内圧ＰＣＹＬＦ＃ｉなどを算出する。なお、この「検出電圧ＶＣＰＳ＃ｉ」および「筒内圧ＰＣＹＬＦ＃ｉ」における＃ｉ（＝＃１〜＃６）は、気筒の番号を表す気筒番号値であり、以下の説明において、「ＰＣＹＬＦ＃１」と表記した場合には、１番気筒＃１の筒内圧を表し、「ＰＣＹＬＦ＃ｉ」と表記した場合には、６つの気筒＃１〜＃６全ての筒内圧を表すものとする。この点は、後述する各種のパラメータにおいても、同様であるとともに、各種のパラメータにおける＃ｉを適宜、省略する。
【００２２】
なお、本実施形態では、筒内圧センサ１０がノック強度パラメータ検出手段および筒内圧パラメータ検出手段に相当し、検出電圧ＶＣＰＳが筒内圧パラメータに相当する。
【００２３】
また、吸気管４のスロットル弁７よりも下流側には、吸気管内圧センサ１１および吸気温センサ１２が設けられている。この吸気管内圧センサ１１は、例えば半導体圧力センサなどで構成され、吸気管４内の圧力（以下「吸気管内圧」という）ＰＢＡを検出して、それを表す検出信号をＥＣＵ２に出力する。この吸気管内圧ＰＢＡは、絶対圧として検出される。さらに、吸気温センサ１２は、吸気管４内を流れる空気の温度（以下「吸気温」という）ＴＡを検出して、それを表す検出信号をＥＣＵ２に出力する。
【００２４】
一方、ＥＣＵ２には、クランク角センサ１３、水温センサ１４およびアクセル開度センサ１５が接続されている。このクランク角センサ１３は、マグネットロータおよびＭＲＥピックアップで構成されており、図示しないクランクシャフトの回転に伴い、いずれもパルス信号であるＣＲＫ信号およびＴＤＣ信号をＥＣＵ２に出力する。このＣＲＫ信号は、所定クランク角（本実施形態では１゜）毎に１パルスが出力され、ＥＣＵ２は、このＣＲＫ信号に基づき、エンジン３の回転数（以下「エンジン回転数」という）ＮＥを算出する。なお、本実施形態では、クランク角センサ１３が機関回転数検出手段に相当する。
【００２５】
また、ＴＤＣ信号は、各気筒のピストン（図示せず）が吸気行程のＴＤＣ位置よりも若干、手前の所定のクランク角位置にあることを表す信号であり、本実施形態の６気筒エンジン３では、クランク角１２０゜毎に１パルスが出力されるとともに、１番気筒＃１のＴＤＣ信号は、他のＴＤＣ信号と区別できるように、パルス幅が若干長く設定されている。ＥＣＵ２は、この１番気筒＃１のＴＤＣ信号とＣＲＫ信号に基づき、クランク角位置ＣＡを算出する。
【００２６】
また、水温センサ１４は、エンジン３のシリンダブロック内を循環する冷却水の温度であるエンジン水温ＴＷを検出して、それを表す検出信号をＥＣＵ２に出力する。さらに、アクセル開度センサ１５は、車両の図示しないアクセルペダルの踏み込み量（以下「アクセル開度」という）ＡＰを検出して、それを表す検出信号をＥＣＵ２に出力する。
【００２７】
一方、ＥＣＵ２は、ＣＰＵ、ＲＡＭ、ＲＯＭおよびＩ／Ｏインターフェース（いずれも図示せず）などからなるマイクロコンピュータで構成されており、前述した各種のセンサ１０〜１５の検出信号などに応じて、エンジン３の運転状態を判別するとともに、点火時期制御などを実行する。
【００２８】
なお、本実施形態では、ＥＣＵ２が、点火時期決定手段、ノック強度パラメータ検出手段、補正度合パラメータ算出手段、第１補正手段、機関回転数検出手段、ノック強度パラメータ算出手段、第１パラメータ算出手段、第２パラメータ算出手段、パラメータ算出手段、最大圧角検出手段、目標角設定手段および第２補正手段に相当する。
【００２９】
次に、本実施形態の点火時期制御装置１の概略構成について説明する。この点火時期制御装置１は、図２および図６に示すように、ノック判定コントローラ２０および点火時期コントローラ４０を備えており、これらのコントローラ２０，４０は、具体的にはＥＣＵ２で構成されている。
【００３０】
なお、本実施形態では、ノック判定コントローラ２０が、ノック強度パラメータ検出手段、ノック強度パラメータ算出手段、第１パラメータ算出手段、第２パラメータ算出手段、パラメータ算出手段および最大圧角検出手段に相当する。さらに、点火時期コントローラ４０が、点火時期決定手段、補正度合パラメータ算出手段、第１補正手段、目標角設定手段および第２補正手段に相当する。
【００３１】
ノック判定コントローラ２０は、ノッキング判定処理などを気筒毎に実行するものであり、図２に示すように、バンドパスフィルタ処理部２１、ノイズレベル算出部２２、ノックレベル算出部２３、ノック強度算出部２４、ノック判定値算出部２５、ノック判定部２６、筒内圧算出部２７および最大圧角算出部２８を備えている。
【００３２】
なお、以下に述べる各数式において、記号（ｎ）付きの各離散データは、所定の制御周期ΔＴｎ（ＣＲＫ信号の発生に同期する周期、すなわちクランク角１゜毎の周期）で、サンプリングまたは算出された離散データであることを示しており、記号ｎは各離散データのサンプリングまたは算出サイクルの順番を表している。例えば、記号ｎは今回の制御タイミングでサンプリングまたは算出された値であることを、記号ｎ−１は前回の制御タイミングでサンプリングまたは算出された値であることをそれぞれ示している。また、以下の説明では、各離散データにおける記号（ｎ）などを適宜、省略する。
【００３３】
まず、バンドパスフィルタ処理部２１では、以下に述べるように、検出電圧ＶＣＰＳ＃ｉおよびエンジン回転数ＮＥに基づき、ノイズレベル算出用の積算値ＡＮＯＩＳＥＳ＃ｉと、ノックレベル算出用の積算値ＡＫＮＯＣＫＳ＃ｉが気筒毎に算出される。
【００３４】
具体的には、ノイズレベル算出用の積算値ＡＮＯＩＳＥＳ＃ｉは、以下に述べるように算出される。まず、各気筒のノイズ用バンドパスフィルタ区間（以下「ノイズ用ＢＰＦ区間」という）において、検出電圧ＶＣＰＳ＃ｉを前述した制御周期ΔＴｎでサンプリングするとともに、このサンプリング値ＶＣＰＳ＃ｉ（ｎ）に下式（１）に示すバンドパスフィルタ処理演算を施すことにより、検出電圧のフィルタ値ＶＣＰＳ＿Ｆ＃ｉを算出する。
【００３５】
【数１】
0004773888.tif 000002
【００３６】
上式（１）において、ｂ１〜ｂｍ，ａ１〜ａｍ’は所定のフィルタ係数であり、ｍ，ｍ’は、値２以上の所定の整数である。これらのフィルタ係数ｂ１〜ｂｍは、後述する理由により、１組の高回転用値ｂ１Ｈ〜ｂｍＨと、１組の低回転用値ｂ１Ｌ〜ｂｍＬがそれぞれ準備されており、エンジン回転数ＮＥに応じて、２組のうちの一方に切り換えられる。また、フィルタ係数ｂ１〜ｂｍおよびフィルタ値ＶＣＰＳ＿Ｆ＃ｉ（ｎ−１）〜ＶＣＰＳ＿Ｆ＃ｉ（ｎ−ｍ）の初期値はいずれも値０に設定される。
【００３７】
次に、各気筒の圧縮行程におけるノイズレベル算出区間（例えば後述する図４のＣＡ２〜ＣＡ３）で、上記検出電圧のフィルタ値ＶＣＰＳ＿Ｆ＃ｉに基づき、下式（２）により、ノイズレベル算出用の積算値ＡＮＯＩＳＥＳ＃ｉが算出される。
【数２】
0004773888.tif 000003
【００３８】
ここで、ノイズレベル算出区間の起点および終点のクランク角位置（図４のＣＡ２，ＣＡ３）は、エンジン回転数ＮＥに応じて、図示しないマップを検索することにより設定される。また、前述したノイズ用ＢＰＦ区間の終点は、ノイズレベル区間の終点と同じクランク角位置に設定されるとともに、ノイズ用ＢＰＦ区間の起点（図４のＣＡ１）は、エンジン回転数ＮＥに応じて、図示しないマップを検索することにより、ノイズレベル算出区間の起点よりもかなり進角側のクランク角位置に設定される。この理由については後述する。
【００３９】
また、図３は、検出電圧のフィルタ値ＶＣＰＳ＿Ｆ＃ｉのＳ／Ｎ比とエンジン回転数ＮＥの関係を示す実験結果である。図中に実線で示す曲線は、フィルタ係数ｂ１〜ｂｍを低回転用の１組の値ｂ１Ｌ〜ｂｍＬに設定することで、その通過帯域を所定の第１周波数ＦＲＱ１を主に通過させる帯域に設定した場合、すなわちバンドパスフィルタの通過周波数ＦＲＱを第１周波数ＦＲＱ１に設定した場合の例である。また、図中に破線で示す曲線は、前述したフィルタ係数ｂ１〜ｂｍを高回転用の１組の値ｂ１Ｈ〜ｂｍＨに設定することで、その通過帯域を所定の第１周波数ＦＲＱ１よりも高い所定の第２周波数ＦＲＱ２を主に通過させる帯域に設定した場合、すなわち通過周波数ＦＲＱを第２周波数ＦＲＱ２に設定した場合の例である。
【００４０】
これらの第１および第２周波数ＦＲＱ１，ＦＲＱ２はそれぞれ、検出電圧ＶＣＰＳ＃ｉの、エンジン回転数ＮＥに対する２次および３次共振周波数に設定されている。これは、以下の理由による。すなわち、筒内圧センサ１０は、気筒内の圧力を検出するものであるため、エンジン回転数ＮＥに起因する振動ノイズの影響を受けやすいことで、検出電圧ＶＣＰＳ＃ｉは、その振幅がエンジン回転数ＮＥとの共振周波数で極大値を示す特性を有している。したがって、本実施形態では、検出電圧のフィルタ値ＶＣＰＳ＿Ｆ＃ｉのＳ／Ｎ比を可能な限り大きく確保するために、バンドパスフィルタの通過周波数である２つの周波数ＦＲＱ１，ＦＲＱ２がそれぞれ、検出電圧ＶＣＰＳ＃ｉのエンジン回転数ＮＥに対する２次および３次共振周波数に設定されている。
【００４１】
図３を参照すると、フィルタ値ＶＣＰＳ＿Ｆ＃ｉのＳ／Ｎ比は、エンジン回転数ＮＥに対して、その所定値ＮＥ１をしきい値として、ＮＥ＜ＮＥ１の低回転域では、バンドパスフィルタの通過周波数ＦＲＱを第１周波数ＦＲＱ１に設定した場合の方が良好な値を示しており、一方、ＮＥ≧ＮＥ１の高回転域では、通過周波数ＦＲＱを第２周波数ＦＲＱ２に設定した場合の方が良好な値を示していることが判る。したがって、本実施形態では、フィルタ値ＶＣＰＳ＿Ｆ＃ｉの良好なＳ／Ｎ比を確保するために、ＮＥ＜ＮＥ１のときには、フィルタ係数ｂ１〜ｂｍが低回転用値ｂ１Ｌ〜ｂｍＬにそれぞれ設定され、それにより、バンドパスフィルタの通過周波数ＦＲＱが第１周波数ＦＲＱ１に設定される。同じ理由により、ＮＥ≧ＮＥ１のときには、フィルタ係数ｂ１〜ｂｍが高回転用値ｂ１Ｈ〜ｂｍＨにそれぞれ設定され、それにより、バンドパスフィルタの通過周波数ＦＲＱが第２周波数ＦＲＱ２に設定される。
【００４２】
一方、ノックレベル算出用の積算値ＡＫＮＯＣＫＳ＃ｉは、以下に述べるように算出される。まず、各気筒のノック用バンドパスフィルタ区間（以下「ノック用ＢＰＦ区間」という）において、検出電圧ＶＣＰＳ＃ｉを前述した制御周期ΔＴｎでサンプリングするとともに、このサンプリング値に前述した式（１）のバンドパスフィルタ処理演算を実行することにより、検出電圧のフィルタ値ＶＣＰＳ＿Ｆ＃ｉを算出する。
【００４３】
次に、各気筒の膨張行程におけるノックレベル算出区間（図４のＣＡ５〜ＣＡ６）で、検出電圧のフィルタ値ＶＣＰＳ＿Ｆ＃ｉに基づき、下式（３）により、ノックレベル算出用の積算値ＡＫＮＯＣＫＳ＃ｉが気筒毎に算出される。
【数３】
0004773888.tif 000004
【００４４】
ここで、ノックレベル算出区間の起点および終点のクランク角位置（例えば図４のＣＡ５，ＣＡ６）は、エンジン回転数ＮＥに応じて、図示しないマップを検索することにより決定される。また、前述したノック用ＢＰＦ区間の終点は、ノックレベル区間の終点と同じクランク角位置に設定されるとともに、ノック用ＢＰＦ区間の起点（図４のＣＡ４）は、エンジン回転数ＮＥに応じて、図示しないマップを検索することにより、ノックレベル算出区間の起点よりもかなり進角側のクランク角位置に設定される。
【００４５】
このようにノック用ＢＰＦ区間の起点が設定される理由と、前述したようにノイズ用ＢＰＦ区間の起点が設定される理由を、図４および図５を参照しながら説明する。図４は、前述したように、ノイズ用ＢＰＦ区間の起点ＣＡ１をノイズレベル算出区間の起点ＣＡ２よりもかなり進角側のクランク角位置ＣＡに設定するとともに、ノック用ＢＰＦ区間の起点ＣＡ４を、ノックレベル算出区間の起点ＣＡ５よりもかなり進角側のクランク角位置ＣＡに設定した場合のフィルタ値ＶＣＰＳ＿Ｆ＃ｉの演算結果例を示している。一方、図５は、比較のために、ノイズ用ＢＰＦ区間の起点をノイズレベル算出区間の起点ＣＡ２と同じクランク角位置ＣＡに設定するとともに、ノック用ＢＰＦ区間の起点をノックレベル算出区間の起点ＣＡ５と同じクランク角位置ＣＡに設定した場合のフィルタ値ＶＣＰＳ＿Ｆ＃ｉの演算結果例を示している。
【００４６】
まず、図５に示す演算結果例では、ノイズ用ＢＰＦ区間およびノック用ＢＰＦ区間の双方において、バンドパスフィルタの演算開始直後、検出電圧のフィルタ値ＶＣＰＳ＿Ｆ＃ｉは、その振幅がノイズ状に急増しており、その演算精度が低いことが判る。これは、バンドパスフィルタ処理演算は、その演算開始直後、初期ノイズが一時的に増大し、演算結果が安定するまでに時間を要するという特性を有しているためである。
【００４７】
これに対して、図４に示す本実施形態の演算結果例では、バンドパスフィルタの演算開始直後、初期ノイズが一時的に増大するものの、そのような初期ノイズの増大が収まった時点（ＣＡ＝ＣＡ２またはＣＡ＝ＣＡ５）で、検出電圧のフィルタ値ＶＣＰＳ＿Ｆ＃ｉの演算が開始されるので、検出電圧のフィルタ値ＶＣＰＳ＿Ｆ＃ｉは、その振幅が図５に示す例よりも小さく、その演算精度が向上していることが判る。すなわち、本実施形態では、２つの積算値ＡＮＯＩＳＥＳ＃ｉ，ＡＫＮＯＣＫＳ＃ｉの良好な算出精度を確保すべく、検出電圧のフィルタ値ＶＣＰＳ＿Ｆ＃ｉが安定している状態で、２つの積算値ＡＮＯＩＳＥＳ＃ｉ，ＡＫＮＯＣＫＳ＃ｉの算出を開始するために、ノイズ用ＢＰＦ区間およびノック用ＢＰＦ区間の起点が前述したように設定される。
【００４８】
また、前述した式（２），（３）を比較すると明らかなように、ノイズレベル算出用の積算値ＡＮＯＩＳＥＳ＃ｉと、ノックレベル算出用の積算値ＡＫＮＯＣＫＳ＃ｉは、互いの算出区間が異なるのみで、同じ算出式により算出される。
【００４９】
なお、本実施形態では、ノイズレベル算出用の積算値ＡＮＯＩＳＥＳが第１パラメータに相当し、ノックレベル算出用の積算値ＡＫＮＯＣＫＳが第２パラメータに相当し、第１周波数ＦＲＱ１が第１周波数域に相当し、第２周波数ＦＲＱ２が第２周波数域に相当する。
【００５０】
次に、前述したノイズレベル算出部２２では、上記ノイズレベル算出用の積算値ＡＮＯＩＳＥＳ＃ｉに所定の１次遅れフィルタ演算処理を施すことにより、ノイズレベルＮＬＶＬＳ＿Ａ＃ｉが気筒毎に算出される。また、前述したノックレベル算出部２３では、上記ノックレベル算出用の積算値ＡＫＮＯＣＫＳ＃ｉに所定の上限リミット処理を施すことにより、ノックレベルＫＮＬＶＬＳ＿Ａ＃ｉが気筒毎に算出される。
【００５１】
さらに、前述したノック強度算出部２４では、下式（４）により、ノック強度ＳＮＡ＿Ｓ＃ｉが気筒毎に算出される。このノック強度ＳＮＡ＿Ｓ＃ｉは、気筒＃ｉにおけるノッキングの強度を表すものである。なお、本実施形態では、ノック強度ＳＮＡ＿Ｓがノック強度パラメータに相当する。
【数４】
0004773888.tif 000005
【００５２】
一方、前述したノック判定値算出部２５では、エンジン回転数ＮＥおよび吸気管内圧ＰＢＡに応じて、図示しないマップを検索することにより、ノック判定値のマップ値を算出し、これをエンジン水温ＴＷに応じて算出した補正係数で補正することにより、ノック判定値ＳＮＡ＿ＲＥＦＬが算出される。なお、本実施形態では、ノック判定値ＳＮＡ＿ＲＥＦＬが第１判定値に相当する。
【００５３】
また、前述したノック判定部２６では、ノック強度ＳＮＡ＿Ｓ＃ｉとノック判定値ＳＮＡ＿ＲＥＦＬの比較結果に基づき、ノック判定フラグＦ＿ＫＮＯＣＫＩＧ＃ｉの値が気筒毎に設定される。具体的には、ＳＮＡ＿Ｓ＃ｉ＞ＳＮＡ＿ＲＥＦＬのときには、ノック判定フラグＦ＿ＫＮＯＣＫＩＧ＃ｉが「１」に設定され、ＳＮＡ＿Ｓ＃ｉ≦ＳＮＡ＿ＲＥＦＬのときには、ノック判定フラグＦ＿ＫＮＯＣＫＩＧ＃ｉが「０」に設定される。
【００５４】
さらに、前述した筒内圧算出部２７では、筒内圧センサ１０の検出電圧ＶＣＰＳ＃ｉに、所定のフィルタリング処理および所定のモデルフィッティング処理などを施すことにより、筒内圧ＰＣＹＬＦ＃ｉが気筒毎に算出される。
【００５５】
次いで、最大圧角算出部２８では、最大圧角算出区間における筒内圧ＰＣＹＬＦ＃ｉの変化を参照することにより、最大圧角θＰＭＡＸ＃ｉが気筒毎に算出される。この最大圧角算出区間は、混合気の着火タイミングを起点とし、これよりも所定値分、遅角側のクランク角位置ＣＡを終点とする区間である。
【００５６】
以上のように、本実施形態のノック判定コントローラ２０では、ノック強度ＳＮＡ＿Ｓ＃ｉ、ノック判定フラグＦ＿ＫＮＯＣＫＩＧ＃ｉおよび最大圧角θＰＭＡＸ＃ｉが気筒毎に算出される。
【００５７】
次に、前述した点火時期コントローラ４０について説明する。この点火時期コントローラ４０は、以下に述べるように、点火時期ＩＧＬＯＧＣＬ＃ｉを気筒毎に算出するものであり、図６に示すように、基本点火時期算出部４１、補正項算出部４２、ノック補正項算出部４３、加算器４４、基本目標角算出部４５、ＩＭＥＰ補正値算出部４６、加算器４７、最大圧角コントローラ４８および点火時期算出部４９を備えている。
【００５８】
なお、以下に述べる各数式において、記号（ｋ）付きの各離散データは、所定の制御周期ΔＴｋ（ＴＤＣ信号の発生に同期する周期、すなわちクランク角１２０゜毎の周期）で、サンプリングまたは算出された離散データであることを示しており、記号ｋは各離散データのサンプリングまたは算出サイクルの順番を表している。また、以下の説明では、各離散データにおける記号（ｋ）などを適宜、省略する。
【００５９】
まず、基本点火時期算出部４１で、基本点火時期ＩＧＭＡＰが気筒毎に算出される。具体的には、エンジン回転数ＮＥおよびアクセル開度ＡＰに応じて、図示しないマップを検索することにより、要求トルクＰＭＣＭＤを算出し、次いで、この要求トルクＰＭＣＭＤおよびエンジン回転数ＮＥに応じて、図示しないマップを検索することにより、基本点火時期ＩＧＭＡＰが算出される。
【００６０】
また、補正項算出部４２で、吸気温ＴＡおよびエンジン水温ＴＷなどの各種のパラメータに応じて、図示しない各種のマップを検索することにより、補正項ＩＧＣＲＴ＃ｉが気筒毎に算出される。
【００６１】
さらに、ノック補正項算出部４３で、後述するように、ノック判定フラグＦ＿ＫＮＯＣＫＩＧ＃ｉ、ノック強度ＳＮＡ＿Ｓ＃ｉ、エンジン回転数ＮＥおよび吸気管内圧ＰＢＡに応じて、ノック補正項ＩＧＣＲＫ＃ｉが気筒毎に算出される。
【００６２】
そして、加算器４４で、下式（５）により、補正後点火時期ＩＧＬＯＧ＃ｉが算出される。
【数５】
0004773888.tif 000006
【００６３】
一方、前述した基本目標角算出部４５では、エンジン回転数ＮＥおよび吸気管内圧ＰＢＡに応じて、図７に示すマップを検索することにより、基本目標角θＰＭＡＸ＿ＣＭＤ＿ＭＡＰが算出される。同図において、ＰＢＡ１〜３は、ＰＢＡ１＜ＰＢＡ２＜ＰＢＡ３の関係が成立する吸気管内圧ＰＢＡの所定値である。このマップでは、基本目標角θＰＭＡＸ＿ＣＭＤ＿ＭＡＰは、吸気管内圧ＰＢＡが高いほど、遅角側の値に設定されているとともに、高回転域では、エンジン回転数ＮＥが高いほど、遅角側の値に設定されている。これは、エンジン負荷が高いほど、または高回転域でエンジン回転数ＮＥが高いほど、ノック余裕度が低下するためである。
【００６４】
また、前述したＩＭＥＰ補正値算出部４６で、最大圧角θＰＭＡＸ＃ｉなどに応じて、ＩＭＥＰ補正値ＤθＰＭＡＸ＃ｉが算出される。次いで、加算器４７で、下式（６）により、目標角θＰＭＡＸ＿ＣＭＤ＃ｉが算出される。
【数６】
0004773888.tif 000007
【００６５】
さらに、前述した最大圧角コントローラ４８では、以下に述べるように、最大圧角補正項ＩＧＳＬＤ＃ｉが気筒毎に算出される。まず、下式（７）〜（１２）に示すスライディングモード制御アルゴリズムにより、制御入力ＵＳＬＩＧ＃ｉが算出される。
【００６６】
【数７】
0004773888.tif 000008
【数８】
0004773888.tif 000009
【００６７】
上式（７）に示すように、制御入力ＵＳＬＩＧ＃ｉは、等価制御入力Ｕｅｑ＃ｉ、到達則入力Ｕｒｃｈ＃ｉ、適応則入力Ｕａｄｐ＃ｉおよび非線形入力Ｕｎｌ＃ｉの総和として算出される。
【００６８】
この等価制御入力Ｕｅｑ＃ｉは、式（８）により算出される。同式（８）において、Ａ１，Ａ２，Ｂ１，Ｃ１は、後述するモデルのモデルパラメータを示しており、これらは所定値に設定されている。なお、オンボード同定器によって、これらのモデルパラメータＡ１，Ａ２，Ｂ１，Ｃ１を同定してもよく、運転状態に応じて、モデルパラメータスケジューラ（マップ）を検索することにより、これらのモデルパラメータＡ１，Ａ２，Ｂ１，Ｃ１を算出してもよい。また、式（８）において、ＰＯＬＥは、切換関数設定パラメータであり、−１＜ＰＯＬＥ＜０の関係が成立する値に設定されている。
【００６９】
また、到達則入力Ｕｒｃｈ＃ｉは、式（９）により算出される。この式（９）において、Ｋｒｃｈは、所定の到達則ゲインを表しており、σ＃ｉは、式（１１）のように定義される切換関数である。同式（１１）のＥ＃ｉは、式（１２）のように定義される追従誤差である。さらに、適応則入力Ｕａｄｐ＃ｉは、式（１０）により算出され、この式（１０）において、Ｋａｄｐは、所定の適応則ゲインを表している。
【００７０】
一方、非線形入力Ｕｎｌ＃ｉは、切換関数σ＃ｉに応じて、図８に示すマップを検索することにより算出される。同図において、σ１は切換関数σ＃ｉの所定値を示しており、Ｕｎｌ＿ｒｅｆは、非線形入力Ｕｎｌ＃ｉの所定値を示している。このマップでは、非線形入力Ｕｎｌ＃ｉは、−σ１≦σ＃ｉ≦σ１のときには、切換関数σ＃ｉが大きいほど、より大きい値に設定されているとともに、σ１＜｜σ＃ｉ｜のときには、｜Ｕｎｌ＃ｉ｜＝Ｕｎｌ＿ｒｅｆに設定されている。これは、切換関数σ＃ｉの絶対値が小さい場合、すなわち最大圧角θＰＭＡＸ＃ｉと目標角θＰＭＡＸ＿ＣＭＤ＃ｉとの乖離度合が小さい場合には、非線形入力Ｕｎｌ＃ｉによる最大圧角θＰＭＡＸ＃ｉの目標角θＰＭＡＸ＿ＣＭＤ＃ｉへの収束速度を高めるためであり、これとは逆に、最大圧角θＰＭＡＸ＃ｉと目標角θＰＭＡＸ＿ＣＭＤ＃ｉとの乖離度合が大きい場合には、非線形入力Ｕｎｌ＃ｉを一定値に設定し、他の入力と比べて影響度合の低いローゲイン入力とすることで、制御の安定性を確保するためである。
【００７１】
なお、以上の式（７）〜（１２）は以下のように導出される。すなわち、制御入力ＵＳＬＩＧ＃ｉを制御入力とし、最大圧角θＰＭＡＸ＃ｉを制御量とする系を、離散時間系モデルとしてモデル化すると、下式（１３）が得られる。このモデルに対して、スライディングモード制御理論を適用することにより、前述した式（７）〜（１２）が導出される。
【数９】
0004773888.tif 000010
【００７２】
次に、この制御入力ＵＳＬＩＧ＃ｉに所定のリミット処理を施すことにより、最大圧角補正項ＩＧＳＬＤ＃ｉが算出される。以上のように、最大圧角コントローラ４８では、最大圧角補正項ＩＧＳＬＤ＃ｉが、最大圧角θＰＭＡＸ＃ｉを目標角θＰＭＡＸ＿ＣＭＤ＃ｉに収束させるための値として算出される。
【００７３】
さらに、前述した点火時期算出部４９では、以上のように算出された補正後点火時期ＩＧＬＯＧ＃ｉと最大圧角補正項ＩＧＳＬＤ＃ｉの和を算出し、これに所定のリミット処理を施すことにより、点火時期ＩＧＬＯＧＣＬ＃ｉが算出される。より具体的には、点火時期ＩＧＬＯＧＣＬ＃ｉは、所定の上下限値ＩＧＬＯＧ＿Ｈ，ＩＧＬＯＧ＿Ｌで規定される範囲内の値になるように制限される。以上のように、点火時期ＩＧＬＯＧＣＬ＃ｉは、補正後点火時期ＩＧＬＯＧ＃ｉと最大圧角補正項ＩＧＳＬＤ＃ｉの和のリミット値として算出されるので、最大圧角θＰＭＡＸ＃ｉが目標角θＰＭＡＸ＿ＣＭＤ＃ｉに収束するように、補正後点火時期ＩＧＬＯＧ＃ｉを最大圧角補正項ＩＧＳＬＤ＃ｉで補正した値として算出される。
【００７４】
次に、前述したノック補正項算出部４３について説明する。このノック補正項算出部４３では、以下に述べる手法により、ノック補正項ＩＧＣＲＫ＃ｉが気筒毎に算出される。なお、各気筒におけるノック補正項ＩＧＣＲＫ＃ｉの算出手法は同じであるので、以下の説明では、４番気筒＃４の場合を例にとって説明する。
【００７５】
まず、ノック判定フラグＦ＿ＫＮＯＣＫＩＧ＃４＝０のときには、下式（１４），（１５）により、補正係数学習値ＫＩＧＫＮ＃４が算出されるとともに、下式（１６），（１７）により、ノック補正項ＩＧＣＲＫ＃４が算出される。なお、本実施形態では、補正係数学習値ＫＩＧＫＮが補正度合パラメータに相当する。
【数１０】
0004773888.tif 000011
【００７６】
ここで、式（１４）のＫＩＧＫＭ＃４は補正係数であり、ＤＫＩＧＫＭは所定値（例えば値０．１）である。また、式（１５）のＲは０＜Ｒ＜１が成立するように設定される所定係数である。一方、式（１６）のＩＧＫＮＯＣＫ＃４はノックリタード項であり、式（１６）のＤＩＧＫＲは、エンジン回転数ＮＥおよび吸気管内圧ＰＢＡに応じて、図示しないマップを検索することにより算出されるリタード値である。さらに、式（１７）のＤＩＧＲＳＶは、ノック余裕度であり、その気筒においてノッキングを生じることなく点火時期を進角させることが可能な角度の最大値を表すものである。このノック余裕度ＤＩＧＲＳＶは、エンジン回転数ＮＥおよび吸気管内圧ＰＢＡに応じて、図示しないマップを検索することにより算出される。
【００７７】
上式（１４），（１５）に示すように、Ｆ＿ＫＮＯＣＫＩＧ＃４＝０のときには、補正係数ＫＩＧＫＭ＃４は、所定値ＤＫＩＧＫＭ分ずつ漸減するように算出され、補正係数学習値ＫＩＧＫＮ＃４は、そのような補正係数ＫＩＧＫＭ＃４に１次遅れ演算処理を施した値として算出される。その際、補正係数学習値ＫＩＧＫＮ＃４の算出値に対しては、値０を下限値とする下限リミット処理が施され、その結果、補正係数学習値ＫＩＧＫＮ＃４は値０に向かって漸減するように算出される。また、上式（１６），（１７）に示すように、ノックリタード項ＩＧＫＮＯＣＫ＃４が補正係数学習値ＫＩＧＫＮ＃４とリタード値ＤＩＧＫＲの積として算出され、これをノック余裕度ＤＩＧＲＳＶから減算することにより、ノック補正項ＩＧＣＲＫ＃４が算出されるので、補正係数学習値ＫＩＧＫＮ＃４が値０に向かって漸減するのに起因して、ノック補正項ＩＧＣＲＫ＃４は、ノック余裕度ＤＩＧＲＳＶに向かって漸増する。すなわち、ノック補正項ＩＧＣＲＫ＃４は、進角側に徐々に変化する。
【００７８】
一方、Ｆ＿ＫＮＯＣＫＩＧ＃４＝１の場合において、下記の条件（ｈ１）が成立しているとき、または２つの条件（ｈ２），（ｈ３）がいずれも成立しているとき、ないしは３つの条件（ｈ４）〜（ｈ６）がいずれも成立しているときには、下式（１８），（１９）により、６気筒分の補正係数学習値ＫＩＧＫＮ＃ｉが算出される。すなわち６気筒分の補正係数学習値ＫＩＧＫＮ＃ｉが更新される。その際、それらの算出値に対して、値１を上限値とする上限リミット処理が施される。ここで、ＳＮＡ＿ＲＥＦＨは、所定の強ノック判定値であり、ノック判定値ＳＮＡ＿ＲＥＦＬに正の所定値を加算することにより算出される。なお、本実施形態では、この強ノック判定値ＳＮＡ＿ＲＥＦＨが第２判定値に相当する。
（ｈ１）ＳＮＡ＿Ｓ＃４≧ＳＮＡ＿ＲＥＦＨであること。
（ｈ２）ＳＮＡ＿Ｓ＃４＜ＳＮＡ＿ＲＥＦＨであること。
（ｈ３）当該１燃焼サイクル中に４番気筒＃４以外の気筒でＦ＿ＫＮＯＣＫＩＧ＃ｉ＝１であること。
（ｈ４）ＳＮＡ＿Ｓ＃４＜ＳＮＡ＿ＲＥＦＨであること。
（ｈ５）当該１燃焼サイクル中に４番気筒＃４以外の気筒でＦ＿ＫＮＯＣＫＩＧ＃ｉ≠１であること。
（ｈ６）６気筒分の補正係数学習値ＫＩＧＫＮ＃ｉを算出した時点から所定時間が経過しないうちに、Ｆ＿ＫＮＯＣＫＩＧ＃４の値が「０」から「１」に変化したこと。
【００７９】
【数１１】
0004773888.tif 000012
【００８０】
ここで、ＫＩＧＫＭ＃ｉは補正係数であり、この式（１９）に示すように、補正係数学習値ＫＩＧＫＮ＃ｉは、補正係数ＫＩＧＫＭ＃ｉに１次遅れ演算処理を施した値として算出される。
【００８１】
さらに、Ｆ＿ＫＮＯＣＫＩＧ＃４＝１の場合において、下記の条件（ｈ７），（ｈ８）がいずれも成立しているときには、上記式（１８），（１９）においてｉ＝４とした式により、補正係数学習値ＫＩＧＫＮ＃４のみが算出される。
（ｈ７）当該１燃焼サイクル中に４番気筒＃４以外の気筒でＦ＿ＫＮＯＣＫＩＧ＃ｉ＝０であること。
（ｈ８）６気筒分の補正係数学習値ＫＩＧＫＮ＃ｉを算出した時点から所定時間が経過した後、Ｆ＿ＫＮＯＣＫＩＧ＃４の値が「０」から「１」に変化したこと。
【００８２】
次いで、前述した式（１６）と同じ下式（２０）により、ノックリタード項ＩＧＫＮＯＣＫ＃４が算出される。
【数１２】
0004773888.tif 000013
【００８３】
その後、前述した式（１７）と同じ下式（２１）により、ノック補正項ＩＧＣＲＫ＃４が算出される。
【数１３】
0004773888.tif 000014
【００８４】
この式（２１）に示すように、ノック補正項ＩＧＣＲＫ＃４は、ノック余裕度ＤＩＧＲＳＶからノックリタード項ＩＧＫＮＯＣＫ＃４を減算することにより算出されるので、ＤＩＧＲＳＶ＜ＩＧＫＮＯＣＫ＃４のときには、ノック補正項ＩＧＣＲＫ＃４が負値となる。このノック補正項ＩＧＣＲＫ＃４は、前述した式（５）に示すように、補正後点火時期ＩＧＬＯＧ＃４の算出の際、基本点火時期ＩＧＭＡＰに加算されるので、これが負値のときには、補正後点火時期ＩＧＬＯＧ＃４がノック補正項ＩＧＣＲＫ＃４によって遅角側に補正されることになる。
【００８５】
次に、図９を参照しながら、ＥＣＵ２により前述した制御周期ΔＴｎで実行される制御処理について説明する。なお、以下の説明において算出される各種の値はＥＣＵ２のＲＡＭ内に記憶されるものとする。この処理では、まず、ステップ１（図では「Ｓ１」と略す。以下同じ）で、６つの筒内圧センサ１０の検出電圧ＶＣＰＳ＃ｉをそれぞれ読み込む。その後、ステップ２に進み、６つの気筒＃ｉのノック判定処理を実行する。この処理の詳細は後述する。
【００８６】
次いで、ステップ３で、前述した筒内圧算出部２７と同じ手法により、６つの気筒＃ｉの筒内圧ＰＣＹＬＦ＃ｉをそれぞれ算出する。
【００８７】
ステップ３に続くステップ４で、前述した最大圧角算出部２８と同じ手法により、６つの気筒＃ｉの最大圧角θＰＭＡＸ＃ｉをそれぞれ算出する。その後、本処理を終了する。
【００８８】
次に、図１０を参照しながら、前述したステップ２の６気筒＃ｉのノック判定処理について説明する。これらの６気筒＃ｉの各々におけるノック判定処理の手法は同じであるので、以下、４番気筒＃４の場合を例にとって説明する。同図に示すように、この処理では、まず、ステップ１０で、クランク角位置ＣＡが所定位置ＣＡ＃４になったか否かを判別する。この所定位置ＣＡ＃４は、４番気筒＃４のノック判定の実行開始位置を規定するものである。
【００８９】
ステップ１０の判別結果がＹＥＳのときには、４番気筒＃４のノック判定を実行すべきであると判定して、それを表すために、ステップ１１に進み、ノック判定済みフラグＦ＿ＤＯＮＥ＃４を「０」に設定する。一方、ステップ１０の判別結果がＮＯのときには、ステップ１２に進む。
【００９０】
ステップ１０または１１に続くステップ１２では、ノック判定済みフラグＦ＿ＤＯＮＥ＃４が「１」であるか否かを判別する。この判別結果がＹＥＳで、４番気筒＃４のノック判定が終了しているときには、そのまま本処理を終了する。一方、この判別結果がＮＯのときには、ステップ１３に進み、４番気筒＃４のノック強度ＳＮＡ＿Ｓ＃４を算出する。
【００９１】
このノック強度ＳＮＡ＿Ｓ＃４の算出は、具体的には、図１１に示すように実行される。まず、ステップ３０で、エンジン回転数ＮＥに応じて、前述したバンドパスフィルタ処理部２１と同じ手法により、ノイズレベル算出区間、ノイズ用ＢＰＦ区間、ノックレベル算出区間およびノック用ＢＰＦ区間の４つの区間をそれぞれ決定する。
【００９２】
次いで、ステップ３１に進み、算出済みフラグＦ＿ＳＮＡ＿Ｓ＃４が「１」であるか否かを判別する。この判別結果がＹＥＳで、ノック強度ＳＮＡ＿Ｓ＃４を算出済みであるときには、そのまま本処理を終了する。
【００９３】
一方、ステップ３１の判別結果がＮＯで、ノック強度ＳＮＡ＿Ｓ＃４を算出済みでないときには、ステップ３２に進み、クランク角位置ＣＡが前述したノイズ用ＢＰＦ区間であるか否かを判別する。この判別結果がＹＥＳのときには、ステップ３３に進み、検出電圧のフィルタ値ＶＣＰＳ＿Ｆ＃４を算出する。
【００９４】
この検出電圧のフィルタ値ＶＣＰＳ＿Ｆ＃４の算出処理は、具体的には、図１２に示すように実行される。同図に示すように、まず、ステップ５０で、エンジン回転数ＮＥが前述した所定値ＮＥ１以上であるか否かを判別する。この判別結果がＮＯで、エンジン回転数ＮＥが低回転域にあるときには、ステップ５１で、フィルタ係数ｂ１〜ｂｍを低回転用値ｂ１Ｌ〜ｂｍＬにそれぞれ設定する。
【００９５】
一方、ステップ５０の判別結果がＹＥＳで、エンジン回転数ＮＥが高回転域にあるときには、ステップ５１で、フィルタ係数ｂ１〜ｂｍを高回転用値ｂ１Ｈ〜ｂｍＨにそれぞれ設定する。
【００９６】
ステップ５１または５２に続くステップ５３で、前述した式（１）により、検出電圧のフィルタ値ＶＣＰＳ＿Ｆ＃４を算出する。その後、本処理を終了する。
【００９７】
図１１に戻り、ステップ３３で以上のように検出電圧のフィルタ値ＶＣＰＳ＿Ｆ＃４を算出した後、ステップ３４に進み、クランク角位置ＣＡが前述したノイズレベル算出区間であるか否かを判別する。この判別結果がＮＯのときには、そのまま本処理を終了する。一方、この判別結果がＹＥＳのときには、ステップ３５に進み、前述した式（２）により、ノイズレベル算出用の積算値ＡＮＯＩＳＥＳ＃４を算出する。
【００９８】
ステップ３５に続くステップ３６では、クランク角位置ＣＡがノイズレベル算出区間の終点であるか否かを判別する。この判別結果がＮＯのときには、そのまま本処理を終了する。一方、この判別結果がＹＥＳのときには、ステップ３７に進み、前述したように、ノイズレベル算出用の積算値ＡＮＯＩＳＥＳ＃４に所定の１次遅れフィルタ演算処理を施すことにより、ノイズレベルＮＬＶＬＳ＿Ａ＃４を算出する。その後、本処理を終了する。
【００９９】
一方、ステップ３２の判別結果がＮＯで、クランク角位置ＣＡがノイズ用ＢＰＦ区間でないときには、ステップ３８に進み、クランク角位置ＣＡが前述したノック用ＢＰＦ区間であるか否かを判別する。この判別結果がＮＯのときには、そのまま本処理を終了する。一方、この判別結果がＹＥＳのときには、ステップ３９に進み、前述したステップ３３と同じ手法により、検出電圧のフィルタ値ＶＣＰＳ＿Ｆ＃４を算出する。
【０１００】
次いで、ステップ４０に進み、クランク角位置ＣＡがノックレベル算出区間であるか否かを判別する。この判別結果がＮＯのときには、そのまま本処理を終了する。一方、この判別結果がＹＥＳのときには、ステップ４１に進み、前述した式（３）により、ノックレベル算出用の積算値ＡＫＮＯＣＫＳ＃４を算出する。
【０１０１】
ステップ４１に続くステップ４２で、クランク角位置ＣＡがノックレベル算出区間の終点であるか否かを判別する。この判別結果がＮＯのときには、そのまま本処理を終了する。一方、この判別結果がＹＥＳのときには、ステップ４３に進み、前述したように、ノックレベル算出用の積算値ＡＫＮＯＣＫＳ＃４に所定の上限リミット処理を施すことにより、ノックレベルＫＮＬＶＬＳ＿Ａ＃４を算出する。
【０１０２】
ステップ４３に続くステップ４４で、前述した式（４）により、ノック強度ＳＮＡ＿Ｓ＃４を算出し、それを表すために、ステップ４５に進み、算出済みフラグＦ＿ＳＮＡ＿Ｓ＃４を「１」に設定する。その後、本処理を終了する。
【０１０３】
図１０に戻り、ステップ１３で以上のようにノック強度ＳＮＡ＿Ｓ＃４を算出した後、ステップ１４に進み、前述したノック判定値算出部２５と同じ手法により、ノック判定値ＳＮＡ＿ＲＥＦＬを算出する。すなわち、エンジン回転数ＮＥおよび吸気管内圧ＰＢＡに応じて、マップを検索することによりノック判定値のマップ値を算出し、これをエンジン水温ＴＷに応じて算出した補正係数で補正することにより、ノック判定値ＳＮＡ＿ＲＥＦＬを算出する。
【０１０４】
次いで、ステップ１５に進み、ノック強度ＳＮＡ＿Ｓ＃４がノック判定値ＳＮＡ＿ＲＥＦＬより大きいか否かを判別する。この判別結果がＹＥＳのときには、４番気筒＃４で所定強度以上のノッキングが発生していると判定して、それを表すために、ステップ１６で、ノック判定フラグＦ＿ＫＮＯＣＫＩＧ＃４を「１」に設定する。
【０１０５】
一方、ステップ１５の判別結果がＮＯのときには、４番気筒＃４でノッキングが発生していないと判定して、それを表すために、ステップ１７で、ノック判定フラグＦ＿ＫＮＯＣＫＩＧ＃４を「０」に設定する。
【０１０６】
ステップ１６または１７に続くステップ１８で、４番気筒＃４のノック判定が終了したことを表すために、ノック判定済みフラグＦ＿ＤＯＮＥ＃４を「１」に設定した後、本処理を終了する。
【０１０７】
次に、図１３を参照しながら、ＥＣＵ２により前述した制御周期ΔＴｋで実行される点火時期制御処理について説明する。この処理では、まず、ステップ６０で、カウンタ値ＣＴをその前回値ＣＴＺと値１の和に設定する。すなわち、カウンタ値ＣＴを値１インクリメントする。
【０１０８】
次いで、ステップ６１で、カウンタ値ＣＴが値６より大きいか否かを判別する。この判別結果がＮＯのときには、後述するステップ６３に進む。一方、この判別結果がＹＥＳのときには、ステップ６２に進み、カウンタ値ＣＴを値０にリセットした後、ステップ６３に進む。
【０１０９】
ステップ６１または６２に続くステップ６３で、カウンタ値ＣＴが値１であるか否かを判別する。この判別結果がＹＥＳのときには、ステップ６４に進み、１番気筒＃１の点火時期制御処理を実行した後、本処理を終了する。
【０１１０】
一方、ステップ６３の判別結果がＮＯのときには、ステップ６５に進み、カウンタ値ＣＴが値２であるか否かを判別する。この判別結果がＹＥＳのときには、ステップ６６に進み、５番気筒＃５の点火時期制御処理を実行した後、本処理を終了する。
【０１１１】
一方、ステップ６５の判別結果がＮＯのときには、ステップ６７に進み、カウンタ値ＣＴが値３であるか否かを判別する。この判別結果がＹＥＳのときには、ステップ６８に進み、３番気筒＃３の点火時期制御処理を実行した後、本処理を終了する。
【０１１２】
一方、ステップ６７の判別結果がＮＯのときには、ステップ６９に進み、カウンタ値ＣＴが値４であるか否かを判別する。この判別結果がＹＥＳのときには、ステップ７０に進み、６番気筒＃６の点火時期制御処理を実行した後、本処理を終了する。
【０１１３】
一方、ステップ６９の判別結果がＮＯのときには、ステップ７１に進み、カウンタ値ＣＴが値５であるか否かを判別する。この判別結果がＹＥＳのときには、ステップ７２に進み、２番気筒＃２の点火時期制御処理を実行した後、本処理を終了する。一方、ステップ７１の判別結果がＮＯのときには、ステップ７３に進み、４番気筒＃４の点火時期制御処理を実行した後、本処理を終了する。
【０１１４】
以上のように、６つの気筒＃１〜＃６の点火時期制御処理は、＃１→＃５→＃３→＃６→＃２→＃４の順に実行される。これらの点火時期制御処理の手法は同じであるので、以下、図１４を参照しながら、ステップ７３の４番気筒＃４の点火時期制御について説明する。
【０１１５】
同図に示すように、この処理では、まず、ステップ８０で、ＲＡＭに記憶されている、ノック判定フラグＦ＿ＫＮＯＣＫＩＧ＃ｉ、ノック強度ＳＮＡ＿Ｓ＃ｉおよび最大圧角θＰＭＡＸ＃ｉなどの各種のデータを読み込む。
【０１１６】
次いで、ステップ８１で、前述した基本点火時期算出部４１と同じ手法により、要求トルクＰＭＣＭＤを算出した後、ステップ８２で、基本点火時期算出部４１と同じ手法により、基本点火時期ＩＧＭＡＰを算出する。
【０１１７】
ステップ８２に続くステップ８３では、前述した補正項算出部４２と同じ手法により、補正項ＩＧＣＲＴ＃４を算出する。次いで、ステップ８４に進み、前述したノック補正項
算出部４３と同様の図１５に示す手法により、ノック補正項ＩＧＣＲＫ＃４を算出する。
【０１１８】
同図に示すように、まず、ステップ１００で、ノック判定フラグＦ＿ＫＮＯＣＫＩＧ＃４が「１」であるか否かを判別する。この判別結果がＹＥＳのとき、すなわち４番気筒＃４でノッキングが発生しているときには、ステップ１０１に進み、ノック強度ＳＮＡ＿Ｓ＃４が、所定の強ノック判定値ＳＮＡ＿ＲＥＦＨ以上であるか否かを判別する。この強ノック判定値ＳＮＡ＿ＲＥＦＨは、その気筒において強いノッキングが発生しているか否かを判別するためのものであり、前述したノック判定値ＳＮＡ＿ＲＥＦＬに所定値を加算することにより算出される。
【０１１９】
ステップ１０１の判別結果がＹＥＳのときには、４番気筒＃４で強いノッキングが発生していると判定して、ステップ１０３に進み、６気筒分の補正係数学習値ＫＩＧＫＮ＃ｉの更新処理を実行する。この更新処理は、具体的には、図１６に示すように実行される。
【０１２０】
まず、ステップ１２０で、補正係数の前回値ＫＩＧＫＭ＃ｉＺと所定の加算項ＤＫＩＧＫＭとの和を、補正係数ＫＩＧＫＭ＃ｉとして設定する。すなわち、６気筒分の補正係数ＫＩＧＫＭ＃ｉを算出する。
【０１２１】
次いで、ステップ１２１に進み、所定係数Ｒと補正係数学習値の前回値ＫＩＧＫＮ＃ｉＺの積に、値（１−Ｒ）と補正係数ＫＩＧＫＭ＃ｉの積を加算した値を、補正係数学習値ＫＩＧＫＮ＃ｉとして設定する。すなわち、６気筒分の補正係数学習値ＫＩＧＫＮ＃ｉを更新する。
【０１２２】
次に、ステップ１２２で、ステップ１２１で算出した６気筒分の学習値ＫＩＧＫＮ＃ｉに、前述した上限リミット処理を施すことにより、補正係数学習値ＫＩＧＫＮ＃ｉを算出する。その後、本処理を終了する。
【０１２３】
図１５に戻り、ステップ１０３で以上のように学習値ＫＩＧＫＮ＃ｉの更新処理を実行した後、ステップ１０４に進み、それを表すために更新フラグＦ＿ＫＯＵＳＩＮを「１」に設定する。
【０１２４】
次いで、ステップ１０５に進み、ノックリタード項ＩＧＫＮＯＣＫ＃４を、リタード値と補正係数学習値の積ＤＩＧＫＲ・ＫＩＧＫＮ＃４に設定する。次に、ステップ１０６で、ノック補正項ＩＧＣＲＫ＃４を、ノック余裕度とノックリタード項との偏差ＤＩＧＲＳＶ−ＩＧＫＮＯＣＫ＃４に設定した後、本処理を終了する。
【０１２５】
一方、ステップ１０１の判別結果がＮＯで、４番気筒＃４で比較的弱いノッキングが発生しているときには、ステップ１０２に進み、当該１燃焼サイクル中において４番気筒以外の気筒でノック判定フラグＦ＿ＫＮＯＣＫＩＧ＃ｉ＝１が成立したか否かを判別する。
【０１２６】
この判別結果がＹＥＳのときには、燃料の性状が悪いことで、ノッキングが各気筒で発生しやすい状況にあると判定して、前述したように、ステップ１０３〜１０６を実行した後、本処理を終了する。
【０１２７】
一方、ステップ１０２の判別結果がＮＯのときには、前述した更新フラグＦ＿ＫＯＵＳＩＮが「１」であるか否かを判別する。この判別結果がＹＥＳのときには、燃料の性状が悪いことで、ノッキングが各気筒で発生しやすい状況にあると判定して、前述したように、ステップ１０３〜１０６を実行した後、本処理を終了する。
【０１２８】
一方、ステップ１０７の判別結果がＮＯで、Ｆ＿ＫＯＵＳＩＮ＝０のときには、ステップ１０８に進み、４番気筒＃４の補正係数学習値ＫＩＧＫＮ＃４の更新処理を実行する。この処理は、具体的には、前述した図１６のステップ１２０〜１２２で、４番気筒＃４用の値のみを算出することにより実行される。その後、前述したように、ステップ１０５，１０６を実行した後、本処理を終了する。
【０１２９】
一方、前述したステップ１００の判別結果がＮＯで、４番気筒＃４でノッキングが発生していないときには、ステップ１０９に進み、カウンタ値ＣＴ２を、その前回値ＣＴ２Ｚに値１を加算した値に設定する。すなわち、カウンタ値ＣＴ２を値１インクリメントする。
【０１３０】
次いで、ステップ１１０で、このカウンタ値ＣＴ２が所定値ＣＴ２ＲＥＦより大きいか否かを判別する。この判別結果がＹＥＳのとき、すなわち所定値ＣＴ２ＲＥＦに相当する時間が経過する間、４番気筒においてノッキングが発生していないときには、ステップ１１１で、更新フラグＦ＿ＫＯＵＳＩＮを「０」にリセットして、後述するステップ１１２に進む。
【０１３１】
一方、ステップ１１０の判別結果がＮＯのときには、ステップ１１２に進む。ステップ１１０または１１１に続くステップ１１２では、補正係数学習値ＫＩＧＫＮ＃４の漸減処理を実行する。具体的には、前述した式（１４），（１５）により、補正係数学習値ＫＩＧＫＮ＃４を算出するとともに、その算出値に対して、値０を下限値とする下限リミット処理を施す。その結果、前述したように、補正係数学習値ＫＩＧＫＮ＃４は、値０に向かって漸減するように算出される。
【０１３２】
次いで、ステップ１１３に進み、ノック補正項ＩＧＣＲＫ＃４の漸増処理を実行する。具体的には、前述した式（１６），（１７）により、ノック補正項ＩＧＣＲＫ＃４を算出する。その結果、ノック補正項ＩＧＣＲＫ＃４は、前述したように、ノック余裕度ＤＩＧＲＳＶに向かって漸増するように算出される。以上のようにステップ１１３を実行した後、本処理を終了する。
【０１３３】
図１４に戻り、ステップ８４で以上のようにノック補正項ＩＧＣＲＫ＃４の算出処理を実行した後、ステップ８５に進み、補正後点火時期ＩＧＬＯＧ＃４を、基本点火時期ＩＧＭＡＰと補正項ＩＧＣＲＴ＃４とノック補正項ＩＧＣＲＫ＃４の和に設定する。
【０１３４】
次いで、ステップ８６で、最大圧角補正項ＩＧＳＬＤ＃４の算出処理を実行する。この処理は、具体的には、図１７に示すように実行される。
【０１３５】
まず、ステップ１３０で、基本目標角θＰＭＡＸ＿ＣＭＤ＿ＭＡＰを、前述したように、エンジン回転数ＮＥおよび吸気管内圧ＰＢＡに応じて、図７に示すマップを検索することにより算出する。その後、ステップ１３１で、ＩＭＥＰ補正値ＤθＰＭＡＸ＃４を、前述したように、最大圧角θＰＭＡＸ＃４などに応じて算出する。
【０１３６】
次いで、ステップ１３２で、目標角θＰＭＡＸ＿ＣＭＤ＃４を、基本目標角θＰＭＡＸ＿ＣＭＤ＿ＭＡＰとＩＭＥＰ補正値ＤθＰＭＡＸ＃４とノック補正項ＩＧＣＲＫ＃４の和に設定する。
【０１３７】
ステップ１３２に続くステップ１３３で、前述した式（７）〜（１２）のスライディングモード制御アルゴリズムにより、制御入力ＵＳＬＩＧ＃４を算出する。次いで、ステップ１３４に進み、所定のリミット処理を制御入力ＵＳＬＩＧ＃４に施すことにより、最大圧角補正項ＩＧＳＬＤ＃４を算出した後、本処理を終了する。
【０１３８】
図１４に戻り、ステップ８６で以上のように最大圧角補正項ＩＧＳＬＤ＃４を算出した後、ステップ８７に進み、点火時期ＩＧＬＯＧＣＬ＃４を、補正後点火時期ＩＧＬＯＧ＃４と最大圧角補正項ＩＧＳＬＤ＃４の和に設定する。その後、以下のステップ８８〜９１において、点火時期ＩＧＬＯＧＣＬ＃４にリミット処理を施す。
【０１３９】
すなわち、ステップ８８で、ステップ８７で算出した点火時期ＩＧＬＯＧＣＬ＃４が所定の下限しきい値ＩＧＬＯＧ＿Ｌよりも小さいか否かを判別する。この判別結果がＹＥＳで、点火時期ＩＧＬＯＧＣＬ＃４が下限しきい値ＩＧＬＯＧ＿Ｌよりも遅角側の値であるときには、ステップ８９で、点火時期ＩＧＬＯＧＣＬ＃４を下限しきい値ＩＧＬＯＧ＿Ｌに設定した後、本処理を終了する。
【０１４０】
一方、ステップ８８の判別結果がＮＯのときには、ステップ９０に進み、点火時期ＩＧＬＯＧＣＬ＃４が所定の上限しきい値ＩＧＬＯＧ＿Ｈよりも大きいか否かを判別する。この判別結果がＹＥＳで、点火時期ＩＧＬＯＧＣＬ＃４が上限しきい値ＩＧＬＯＧ＿Ｈよりも進角側の値であるときには、点火時期ＩＧＬＯＧＣＬ＃４を上限しきい値ＩＧＬＯＧ＿Ｈに設定した後、本処理を終了する。
【０１４１】
一方、ステップ９０の判別結果がＮＯで、ＩＧＬＯＧ＿Ｌ≦ＩＧＬＯＧＣＬ＃４≦ＩＧＬＯＧ＿Ｈのときには、そのまま本処理を終了する。すなわち、ステップ８７での算出値が、点火時期ＩＧＬＯＧＣＬ＃４として用いられる。
【０１４２】
次に、以上のような点火時期制御処理の実行中、４番気筒＃４でノッキングが発生した際の動作例について説明する。図１８に示すように、点火時期制御中、時刻ｔ２において、４番気筒＃４で比較的弱いノッキングが発生した場合には、ＳＮＡ＿ＲＥＦＬ＜ＳＮＡ＿Ｓ＃４が成立し、図１０のステップ１５の判別結果がＹＥＳとなることによって、ステップ１６で、ノック判定フラグＦ＿ＫＮＯＣＫＩＧ＃４が「１」に設定される。それにより、図１５のステップ１００の判別結果がＹＥＳとなるとともに、ＳＮＡ＿Ｓ＃４＜ＳＮＡ＿ＲＥＦＨが成立することで、ステップ１０１の判別結果がＮＯとなる。
【０１４３】
さらに、１燃焼サイクルに相当する時刻ｔ１とｔ２の間において、４番気筒＃４以外の気筒でノッキングが発生してないことで、ステップ１０２の判別結果がＮＯとなり、ノッキングが全気筒＃１〜＃６で長い期間、発生しておらず、Ｆ＿ＫＯＵＳＩＮ＝０になっていることで、ステップ１０７の判別結果がＮＯとなる。その結果、ステップ１０８で、４番気筒＃４の補正係数学習値ＫＩＧＫＮ＃４の更新処理のみが実行される。そして、１燃焼サイクル後の時刻ｔ３で、ノッキングが４番気筒＃４で発生しないことにより、ノック判定フラグＦ＿ＫＮＯＣＫＩＧ＃４が「０」にリセットされる。
【０１４４】
一方、時刻ｔ５において、比較的弱いノッキングが４番気筒＃４で発生した場合には、ノック判定フラグＦ＿ＫＮＯＣＫＩＧ＃４が「１」に設定されるとともに、１燃焼サイクルに相当する時刻ｔ４とｔ５の間において、３番気筒＃３でノッキングが発生したことで、ステップ１０２の判別結果がＹＥＳとなる。その結果、ステップ１０３で、６気筒分の補正係数学習値ＫＩＧＫＮ＃ｉの更新処理が実行されるとともに、更新フラグＦ＿ＫＯＵＳＩＮが「１」に設定される。
【０１４５】
そして、１燃焼サイクル後の時刻ｔ４で、ノッキングが４番気筒＃４で発生しないことにより、ノック判定フラグＦ＿ＫＮＯＣＫＩＧ＃４が「０」にリセットされる。さらに、時刻ｔ３以降、４番気筒＃４でノッキングが発生しない状態の継続時間が、所定値ＣＴＲＥＦ２に相当する時間を超えると（時刻ｔ７）、更新フラグＦ＿ＫＯＵＳＩＮが「０」にリセットされる。
【０１４６】
一方、図１９に示すように、点火時期制御中、時刻ｔ１１において、強いノッキングが４番気筒＃４で発生した場合、ＳＮＡ＿ＲＥＦＨ≦ＳＮＡ＿Ｓ＃４が成立することで、ノック判定フラグＦ＿ＫＮＯＣＫＩＧ＃４が「１」に設定されるとともに、図１５のステップ１０１の判別結果がＹＥＳとなることで、ステップ１０３で、６気筒分の補正係数学習値ＫＩＧＫＮ＃ｉの更新処理が実行され、ステップ１０４で、更新フラグＦ＿ＫＯＵＳＩＮが「１」に設定される。
【０１４７】
そして、１燃焼サイクル後の時刻ｔ１２で、ノッキングが４番気筒＃４で発生しないことにより、ノック判定フラグＦ＿ＫＮＯＣＫＩＧ＃４が「０」にリセットされる。さらに、時刻ｔ１２以降、４番気筒＃４でノッキングが発生しない状態の継続時間が、所定値ＣＴＲＥＦ２に相当する時間を超えると（時刻ｔ１３）、更新フラグＦ＿ＫＯＵＳＩＮが「０」にリセットされる。
【０１４８】
さらに、時刻ｔ１４において、強いノッキングが４番気筒＃４で発生すると、上記のように、ノック判定フラグＦ＿ＫＮＯＣＫＩＧ＃４が「１」に設定されるとともに、６気筒分の補正係数学習値ＫＩＧＫＮ＃ｉの更新処理が実行され、更新フラグＦ＿ＫＯＵＳＩＮが「１」に設定される。そして、１燃焼サイクル後の時刻ｔ１５で、ノッキングが４番気筒＃４で発生しないことにより、ノック判定フラグＦ＿ＫＮＯＣＫＩＧ＃４が「０」にリセットされる。
【０１４９】
以上のように、本実施形態の内燃機関の点火時期制御装置１によれば、６つの気筒＃１〜＃６のうちの１つの気筒、例えば４番気筒＃４において、比較的弱いノッキングが発生し、ＳＮＡ＿ＲＥＦＬ＜ＳＮＡ＿Ｓ＃４＜ＳＮＡ＿ＲＥＦＨが成立したときには、その４番気筒＃４の補正係数学習値ＫＩＧＫＮ＃４のみの更新処理が実行される。一方、４番気筒＃４において強いノッキングが発生し、ＳＮＡ＿ＲＥＦＨ≦ＳＮＡ＿Ｓ＃４が成立したときには、６気筒分の補正係数学習値ＫＩＧＫＮの更新処理が実行される。それにより、全気筒において、ノックリタード項ＩＧＫＮＯＣＫがより大きい値に設定され、ノック補正項ＩＧＣＲＫによる遅角側への補正度合がより大きくなることによって、全気筒の点火時期ＩＧＬＯＧＣＬがより遅角側に補正される。したがって、例えば、燃料の性状が悪く、そのオクタン価が低い場合において、全気筒の点火時期ＩＧＬＯＧＣＬをまとめて遅角側に補正することができ、エンジン３全体としてノッキングの発生をより迅速かつ効果的に抑制できる。その結果、エンジン３の寿命を延ばすことができる。
【０１５０】
また、筒内圧センサ１０の検出信号の電圧ＶＣＰＳに基づき、筒内圧ＰＣＹＬＦが算出され、この筒内圧ＰＣＹＬＦに所定のバンドパスフィルタ処理を施した値の絶対値｜ＶＣＰＳ＿Ｆ｜を、ノイズレベル算出区間およびノックレベル算出区間で積算することにより、ノイズレベル算出用の積算値ＡＮＯＩＳＥＳおよびノックレベル算出用の積算値ＡＫＮＯＣＫＳがそれぞれ算出されるとともに、これらの値ＡＮＯＩＳＥＳ，ＡＫＮＯＣＫＳに基づき、ノック判定に用いるノック強度ＳＮＡ＿Ｓが算出される。このバンドパスフィルタ処理では、その通過周波数ＦＲＱが、ＮＥ＜ＮＥ１のときには所定の第１周波数ＦＲＱ１に設定され、ＮＥ≧ＮＥ１のときには所定の第２周波数ＦＲＱ２（＞ＦＲＱ１）に設定されるので、ノッキングの強度のみを表すデータを検出電圧ＶＣＰＳから効果的に取り出すことができ、図３の実験結果に示すように、検出電圧のフィルタ値ＶＣＰＳ＿ＦのＳ／Ｎ比を向上させることができる。
【０１５１】
これに加えて、バンドパスフィルタ処理では、ノイズ用ＢＰＦ区間およびノック用ＢＰＦ区間の双方において、演算開始直後のフィルタ値ＶＣＰＳ＿Ｆにおける初期ノイズが収まった時点で、２つの積算値ＡＮＯＩＳＥＳ，ＡＫＮＯＣＫＳの演算が開始されるので、これらの積算値ＡＮＯＩＳＥＳ，ＡＫＮＯＣＫＳの演算精度を向上させることができる。以上によって、ノック強度ＳＮＡ＿Ｓの算出精度を向上させることができ、その結果、ノッキングをより効果的に抑制することができる。
【０１５２】
また、スライディングモード制御アルゴリズムにより、最大圧角θＰＭＡＸが目標角θＰＭＡＸ＿ＣＭＤとなるように、最大圧角補正項ＩＧＳＬＤが算出され、この最大圧角補正項ＩＧＳＬＤと補正後点火時期ＩＧＬＯＧの和として、点火時期ＩＧＬＯＧＣＬが算出される。この目標角θＰＭＡＸ＿ＣＭＤの算出では、ノック補正項ＩＧＣＲＫが加算項として用いられるので、ＳＮＡ＿ＲＥＦＬ＜ＳＮＡ＿Ｓのときには、ＳＮＡ＿Ｓ≦ＳＮＡ＿ＲＥＦＬのときと比べて、目標角θＰＭＡＸ＿ＣＭＤがより遅角側の値として算出され、それにより、最大圧角補正項ＩＧＳＬＤもより遅角側の値として算出される。
【０１５３】
一方、補正後点火時期ＩＧＬＯＧの算出でも、ノック補正項ＩＧＣＲＫが加算項として用いられるので、ＳＮＡ＿ＲＥＦＬ＜ＳＮＡ＿Ｓのときには、ＳＮＡ＿Ｓ≦ＳＮＡ＿ＲＥＦＬが成立したときと比べて、補正後点火時期ＩＧＬＯＧもより遅角側の値として算出される。以上のように、ノック補正項ＩＧＣＲＫによる点火時期ＩＧＬＯＧＣＬの補正方向と、最大圧角補正項ＩＧＳＬＤによる点火時期ＩＧＬＯＧＣＬの補正方向を合致させることができるので、ノック補正項ＩＧＣＲＫによる点火時期ＩＧＬＯＧＣＬの補正が、最大圧角補正項ＩＧＳＬＤによる最大圧角θＰＭＡＸの目標角θＰＭＡＸ＿ＣＭＤへのフィードバック制御に干渉するのを回避しながら、ノッキングの抑制効果を確保することができる。
【０１５４】
なお、実施形態は、ノック強度ＳＮＡ＿Ｓをノック強度パラメータとして算出した例であるが、本願発明のノック強度パラメータはこれに限らず、ノッキングの強度を表すものであればよい。
【０１５５】
また、実施形態は、補正係数学習値ＫＩＧＫＮを補正度合パラメータとして算出した例であるが、本願発明の補正度合パラメータはこれに限らず、点火時期を遅角側に補正すべき度合を表すものであればよい。例えば、補正係数ＫＩＧＫＭを補正度合パラメータとして算出するとともに、算出した補正係数ＫＩＧＫＭに応じて、ノック補正項ＩＧＣＲＫを算出してもよい。また、ノック補正項ＩＧＣＲＫを補正度合パラメータとして算出してもよい。
【０１５６】
さらに、実施形態は、筒内圧パラメータ検出手段として筒内圧センサ１０およびＥＣＵ２を用いた例であるが、本願発明の筒内圧検出手段はこれに限らず、筒内圧を表す筒内圧パラメータを検出するものであればよい。
【０１５７】
また、実施形態は、筒内圧パラメータとして検出電圧ＶＣＰＳを用いた例であるが、本願発明の筒内圧パラメータはこれに限らず、筒内圧を表すものであればよい。
【０１５８】
さらに、実施形態は、所定のフィードバック制御アルゴリズムとして、式（７）〜（１２）のスライディングモード制御アルゴリズムを用いた例であるが、本願発明の所定のフィードバック制御アルゴリズムはこれに限らず、最大圧角θＰＭＡＸが目標角θＰＭＡＸ＿ＣＭＤとなるように、点火時期ＩＧＬＯＧＣＬを補正するための最大圧角補正項ＩＧＳＬＤを算出できるものであればよい。例えば、所定のフィードバック制御アルゴリズムとして、ＰＩＤ制御アルゴリズムなどを用いて、最大圧角補正項ＩＧＳＬＤを算出してもよい。
【０１５９】
また、実施形態は、第１および第２パラメータとして、ノイズレベル算出用の積算値ＡＮＯＩＳＥＳおよびノックレベル算出用の積算値ＡＫＮＯＣＫＳをそれぞれ用いた例であるが、第１および第２パラメータはこれらに限らず、これらの２つのパラメータに応じて、ノック強度パラメータを算出できるものであればよい。
【図面の簡単な説明】
【０１６０】
【図１】本願発明の一実施形態に係る点火時期制御装置およびこれを適用した内燃機関の概略構成を示す図である。
【図２】ノック判定コントローラの概略構成を示すブロック図である。
【図３】検出電圧のフィルタ値ＶＣＰＳ＿Ｆ＃ｉのＳ／Ｎ比とエンジン回転数ＮＥの関係を示す図である。
【図４】本実施形態のバンドパスフィルタ処理部によるフィルタ値ＶＣＰＳ＿Ｆ＃ｉの演算結果例を示すタイミングチャートである。
【図５】比較のために、ノイズ用ＢＰＦ区間の起点をノイズレベル算出区間の起点と同じクランク角位置に設定するとともに、ノック用ＢＰＦ区間の起点をノックレベル算出区間の起点と同じクランク角位置に設定した場合のフィルタ値ＶＣＰＳ＿Ｆ＃ｉの演算結果例を示すタイミングチャートである。
【図６】点火時期コントローラの概略構成を示すブロック図である。
【図７】基本目標角θＰＭＡＸ＿ＣＭＤ＿ＭＡＰの算出に用いるマップの一例を示す図である。
【図８】非線形入力Ｕｎｌ＃ｉの算出に用いるマップの一例を示す図である。
【図９】制御周期ΔＴｎで実行される制御処理を示すフローチャートである。
【図１０】４番気筒＃４のノック判定処理を示すフローチャートである。
【図１１】ノック強度ＳＮＡ＿Ｓ＃４の算出処理を示すフローチャートである。
【図１２】フィルタ値ＶＣＰＳ＿Ｆ＃４の算出処理を示すフローチャートである。
【図１３】点火時期制御処理を示すフローチャートである。
【図１４】４番気筒＃４の点火時期制御処理の内容を示すフローチャートである。
【図１５】ノック補正項ＩＧＣＲＫ＃４の算出処理を示すフローチャートである。
【図１６】補正係数学習値ＫＩＧＫＮ＃ｉの更新処理を示すフローチャートである。
【図１７】最大圧角補正項ＩＧＳＬＤ＃４の算出処理を示すフローチャートである。
【図１８】点火時期制御中、４番気筒＃４で比較的弱いノッキングが発生した際の動作を説明するためのタイミングチャートである。
【図１９】点火時期制御中、４番気筒＃４で強いノッキングが発生した際の動作を説明するためのタイミングチャートである。
【符号の説明】
【０１６１】
１  点火時期制御装置
２  ＥＣＵ（点火時期決定手段、ノック強度パラメータ検出手段、補正度合パラ
メータ算出手段、第１補正手段、機関回転数検出手段、ノック強度パラメー
タ算出手段、第１パラメータ算出手段、第２パラメータ算出手段、パラメー
タ算出手段、最大圧角検出手段、目標角設定手段、第２補正手段）
３  内燃機関
＃１〜＃６  第１〜第６気筒（複数の気筒）
１０  筒内圧センサ(ノック強度パラメータ検出手段、筒内圧パラメータ検出手段)
１３  クランク角センサ（機関回転数検出手段）
２０  ノック判定コントローラ（ノック強度パラメータ検出手段、ノック強度パラ
メータ算出手段、第１パラメータ算出手段、第２パラメータ算出手段、パラ
メータ算出手段、最大圧角検出手段）
４０  点火時期コントローラ（点火時期決定手段、補正度合パラメータ算出手段、
第１補正手段、目標角設定手段、第２補正手段）
ＩＧＭＡＰ  基本点火時期（点火時期）
ＳＮＡ＿Ｓ  ノック強度（ノック強度パラメータ）
ＳＮＡ＿ＲＥＦＬ  ノック判定値（第１判定値）
ＳＮＡ＿ＲＥＦＨ  強ノック判定値（第２判定値）
ＫＩＧＫＮ  補正係数学習値（補正度合パラメータ）
ＰＣＹＬＦ  筒内圧
ＶＣＰＳ  検出電圧（筒内圧パラメータ）
ＶＣＰＳ＿Ｆ  検出電圧のフィルタ値（フィルタ値）
ＮＥ  内燃機関の回転数
ＮＥ１  所定回転数
ＦＲＱ１  第１周波数（第１周波数域）
ＦＲＱ２  第２周波数（第２周波数域）
ＡＮＯＩＳＥＳ  ノイズレベル算出用の積算値（第１パラメータ）
ＡＫＮＯＣＫＳ  ノックレベル算出用の積算値（第２パラメータ）
θＰＭＡＸ  最大圧角
θＰＭＡＸ＿ＣＭＤ  目標角
【図１】
0004773888.tif 000015
【図２】
0004773888.tif 000016
【図３】
0004773888.tif 000017
【図４】
0004773888.tif 000018
【図５】
0004773888.tif 000019
【図６】
0004773888.tif 000020
【図７】
0004773888.tif 000021
【図８】
0004773888.tif 000022
【図９】
0004773888.tif 000023
【図１０】
0004773888.tif 000024
【図１１】
0004773888.tif 000025
【図１２】
0004773888.tif 000026
【図１３】
0004773888.tif 000027
【図１４】
0004773888.tif 000028
【図１５】
0004773888.tif 000029
【図１６】
0004773888.tif 000030
【図１７】
0004773888.tif 000031
【図１８】
0004773888.tif 000032
【図１９】
0004773888.tif 000033