(57)【特許請求の範囲】
【請求項１】
内燃機関の着火時期を判定するための制御装置であって、
前記内燃機関の筒内圧を、所定の時間周期で検出する筒内圧検出手段と、
前記所定の時間周期で検出された筒内圧に基づいて、所定のクランク角度毎の筒内圧を算出する筒内圧算出手段と、
前記内燃機関において燃焼が行われないときのモータリング圧力を推定する手段と、
前記筒内圧算出手段によって算出された筒内圧と前記モータリング圧力との圧力差が判定値を超えたことを検出する検出手段と、
前記検出手段による検出時の第１のクランク角度および該第１のクランク角度に対応する前記圧力差と、該第１のクランク角度に対して前記所定のクランク角度前の第２のクランク角度および該第２のクランク角度に対応する前記圧力差とを用いた補間計算により、前記圧力差が前記判定値を超えた時点を、前記所定のクランク角度より細かい分解能で特定し、該特定した時点を着火時期として判定する着火時期判定手段と、を備え、
圧縮上死点における前記モータリング圧力の所定割合に相当する値を、前記判定値として用いる、
制御装置。
【請求項２】
さらに、
前記判定された着火時期に対応するクランク角度が、所定値よりも早い場合には、該着火時期の更新を禁止する更新禁止手段を備える、
請求項１に記載の制御装置。
【請求項３】
前記着火時期判定手段は、所定の区間において前記着火時期と判定される時点が見つからなかった場合には、失火と判定する、
請求項１または２に記載の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、内燃機関の着火時期を判定するための制御装置に関する。
【背景技術】
【０００２】
従来、内燃機関の着火時期または着火遅れを判定する手法が提案されている。たとえば、下記の特許文献１には、圧縮行程において計測されたエンジンの燃焼室内の圧力（筒内圧）と、失火時の燃焼室内の圧力（モータリング圧力）について推定された値との差に基づいて、着火時期または着火遅れを判定する手法が提案されている。
【特許文献１】特開２００６−２４２１４６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
判定された着火時期に基づいて、内燃機関の他の運転パラメータを算出したり、燃料および点火時期を制御したり等の様々な制御が行われることがある。このような制御の精度を向上させるためには、着火時期の判定精度を向上させることが望ましい。
【課題を解決するための手段】
【０００４】
この発明の一つの側面によると、内燃機関の着火時期を判定するための制御装置は、内燃機関の筒内圧を、所定の時間周期で検出する筒内圧検出手段（１７、５５）と、該所定の時間周期で検出された筒内圧に基づいて、所定のクランク角度毎の筒内圧を算出する筒内圧算出手段（６５）と、内燃機関において燃焼が行われないときのモータリング圧力を推定する手段（７０）と、該算出された筒内圧とモータリング圧力との圧力差が判定値を超えたことを検出する検出手段（７８、図１３のＳ８９）と、該検出時の第１のクランク角度（ＣＡ（ｉ））および該第１のクランク角度に対応する圧力差（ＰＣＯＭＢ（ｉ））と、該第１のクランク角度に対して上記所定のクランク角度前の第２のクランク角度（ＣＡ（ｉ−１））および該第２のクランク角度に対応する圧力差（ＰＣＯＭＢ（ｉ−１））とを用いた補間計算により、該圧力差が判定値（ＤＰ）を超えた時点（ＣＡ（ｘ））を、上記所定のクランク角度より細かい分解能で特定し、該特定した時点を着火時期として判定する着火時期判定手段（７８、図１４のＳ１０１）と、を備える。
【０００５】
この発明によれば、筒内圧が算出されるクランク角度周期よりも、さらに細かい分解能で着火時期を特定することができる。また、筒内圧は、該筒内圧を検出する時間周期に関わりなく、所望のクランク角度毎に算出される。したがって、筒内圧のサンプリング周波数を高くすることなく、より細かいクランク角度毎に筒内圧を算出することができる。筒内圧の分解能が向上するので、着火時期の分解能も向上する。
【０００６】
この発明の一実施例では、熱が発生する熱発生時点における上記筒内圧算出手段で算出された筒内圧と、該熱発生時点におけるモータリング圧力との圧力差を、圧縮上死点におけるモータリング圧力に基づき推定し、該推定した圧力差を、上記判定値として用いる。この発明によれば、熱発生時点における圧力差を、圧縮上死点におけるモータリング圧力に基づいて推定することができる。着火によって熱が発生するので、該推定された圧力差を判定値として用いることにより、着火時期を求めることができる。
【０００７】
この発明の他の側面によると、内燃機関の着火時期を判定するための制御装置は、内燃機関の筒内圧を、所定の時間周期で検出する筒内圧検出手段（１７，５５）と、該所定の時間周期で検出された筒内圧に基づいて、所定のクランク角度毎の筒内圧を算出する筒内圧算出手段（６５）と、該算出された筒内圧に基づいて熱発生量を算出する熱発生量算出手段（８７）と、熱発生量が所定値を超えたことを検出する検出手段（８８、図１７のＳ１８９）と、該検出時の第１のクランク角度（ＣＡ（ｉ））および該第１のクランク角度に対応する熱発生量（Ｑ（ｉ））と、該第１のクランク角度に対して上記所定のクランク角度前の第２のクランク角度（ＣＡ（ｉ−１））および該第２のクランク角度に対応する熱発生量（Ｑ（ｉ−１））とを用いた補間計算により、熱発生量が所定値（ＱＣＰＳ）を超えた時点（ＣＡ（ｘ））を、該所定のクランク角度より細かい分解能で特定し、該特定した時点を着火時期として判定する着火時期判定手段（８８、図１８のＳ２０１）と、を備える。
【０００８】
この発明によれば、筒内圧が算出されるクランク角度周期よりも、さらに細かい分解能で着火時期を特定することができる。また、筒内圧は、該筒内圧を検出する時間周期に関わりなく、所望のクランク角度毎に算出される。したがって、筒内圧のサンプリング周波数を高くすることなく、より細かいクランク角度毎に筒内圧を算出することができる。筒内圧の分解能が向上するので、着火時期の分解能も向上する。
【０００９】
この発明の一実施例では、着火時期に対応するクランク角度が、所定値よりも早い場合には、該着火時期の更新を禁止する（図１４のＳ９５、Ｓ９６）。このようにすることにより、誤差を含むおそれのある着火時期が、その後の処理に用いられることを防止することができる。たとえば、着火時期が点火時期よりも早い場合には、このような誤差を含むおそれがあるので、着火時期の更新を禁止することができる。
【００１０】
この発明の一実施例では、所定の区間において、着火時期と判定される時点が見つからなかった場合には、失火と判定する（図１４のＳ１００）。こうして、着火時期の判定処理において、失火の有無を判断することができる。
【発明を実施するための最良の形態】
【００１１】
次に図面を参照して、この発明の実施例を説明する。
【００１２】
図１は、この発明の一実施形態に従う、内燃機関（以下、エンジンと呼ぶ）およびその制御装置の全体的な構成図である。電子制御ユニット（以下、「ＥＣＵ」）という）１は、入出力インターフェース、中央演算処理装置（ＣＰＵ）、およびメモリを備えるコンピュータである。メモリには、車両の様々な制御を実現するためのコンピュータ・プログラムおよび該プログラムの実施に必要なデータを格納することができる。ＥＣＵ１は、車両の各部から送られてくるデータを入出力インターフェースを介して受け取って演算を行い、制御信号を生成し、これを、該入出力インターフェースを介してエンジンの各部を制御するために送る。
【００１３】
エンジン２は、たとえば４気筒（図示せず）を備えたエンジンであり、そのうちの１つの気筒が示されている。各気筒には、吸気バルブ３を介して吸気管４が連結され、排気バルブ５を介して排気管６が接続されている。
【００１４】
吸気管４には、スロットル弁７を介して吸気管４を通過する空気の量を検出するエアフローメータ（ＡＦＭ）８が設けられている。このセンサの検出値は、ＥＣＵ１に送られる。
【００１５】
スロットル弁７の開度は、ＥＣＵ１からの制御信号に従って制御される。スロットル弁７の開度を制御することにより、エンジン２に吸入される空気の量を制御することができる。スロットル弁７には、スロットル弁の開度を検出するスロットル弁開度（θＴＨ）センサ９が連結されており、この検出値は、ＥＣＵ１に送られる。
【００１６】
スロットル弁７の下流には、吸気管内絶対圧（ＰＢ）センサ１０および吸気温（ＴＡ）センサ１１が設けられており、それぞれ、吸気管内の圧力および温度を検出する。これらの検出値は、ＥＣＵ１に送られる。
【００１７】
エンジン２の吸気管４には、気筒ごとに燃料噴射弁（インジェクタ）１２が設けられている。燃料噴射弁１２は、ＥＣＵ１からの制御信号に従って、燃料を噴射する。
【００１８】
点火プラグ１３が、燃焼室１４に臨むように取り付けられている。点火プラグ１３は、ＥＣＵ１からの制御信号に従う点火時期に従って駆動される。
【００１９】
点火プラグ１３により飛ばされた火花により、燃料噴射弁１２から噴射された燃料と空気の混合気が燃焼室１４内で燃焼する。燃焼により混合気の体積は増大し、これによりピストン１５を下方に押し下げる。ピストン１５の往復運動は、クランク軸１６の回転運動に変換される。
【００２０】
また、各気筒の点火プラグ１３には、筒内圧センサ１７が埋め込まれており、該センサ１７は、点火プラグ１３の燃焼室１４内に突出した部分にかかる圧力、すなわち筒内圧を、圧電素子を利用して検出するプラグはめ込み型センサである。センサ１７は、検出された筒内圧をＥＣＵ１に送る。
【００２１】
さらに、エンジン２には、エンジン２の冷却水の温度ＴＷを検出する水温センサ１８、およびクランク角センサ１９が設けられている。クランク角センサ１９は、クランクシャフト（図示せず）の回転に従って、ＣＲＫ信号（クランクパルス）をＥＣＵ１に出力する。ＣＲＫ信号は、所定のクランク角毎（たとえば、１５度）に出力される。ＥＣＵ１は、ＣＲＫ信号に応じ、エンジン２の回転数ＮＥを算出する。
【００２２】
ここで、図２および図３を参照して、この発明の一実施例で行う着火時期判定処理の概要を説明する。図２は、クランク角度―１８０度から１８０度の領域における気筒の燃焼室の圧力（筒内圧）を示しており、およそクランク角度―１８０度から０度の範囲が圧縮行程であり、０度から１８０度までが膨張（燃焼）行程である。
【００２３】
曲線３１は、エンジンの１つの気筒のモータリング圧力（失火時の圧力）の推移を示し、曲線３３は、同じ気筒において正常な燃焼が行われたときの筒内圧の推移を示す。クランク角０度が上死点（ＴＤＣ）であり、モータリング圧力は上死点でピークとなり、燃焼時の筒内圧は、上死点を過ぎた１０度付近でピークとなる。
【００２４】
図に示されるように、圧縮行程において上死点に達する前の期間、たとえば同定ステージと示す期間において、曲線３１と曲線３３はほぼ重なっており、モータリング圧力と筒内圧とはほぼ同じ値を取ることがわかる。
【００２５】
一方、黒色のドット３５は、筒内圧センサ１７により検出された実測値ＰＳを示す。筒内圧センサ１７は、エンジンの燃焼室という過酷な環境に置かれており、温度の影響、経年変化などによって特性が変化する。したがって、図に示されるように、筒内圧実測値ＰＳは、誤差を含んでおり、誤差を含まない筒内圧を示す曲線３３から乖離することがある。
【００２６】
この実施例では、まず、同定ステージにおいて、筒内圧実測値ＰＳがほぼモータリング圧力の曲線３１上にくるよう、該実測値を補正するための補正パラメータを同定する。より具体的には、該補正は、筒内圧実測値ＰＳに、以下の補正式を適用することによって行われる。
ＰＳ’（θ）＝ＰＳ（θ）ｋ１＋Ｃ１
【００２７】
ここで、ｋ１は補正係数（ゲイン）であり、Ｃ１は補正項（オフセット）であり、これらが補正パラメータである。θは、クランク角度を表す。こうして補正された実測値ＰＳ’が、図では白色のドット３７で示されている。同定ステージの期間においては、前述したように、誤差を含まない筒内圧（曲線３３）は、モータリング圧力（曲線３１）とほぼ同じ挙動を呈するので、筒内圧実測値ＰＳは、該補正によって、対応するモータリング圧力ＰＭに収束すべきである。したがって、同定ステージの期間において、両者の差(ＰＭ−ＰＳ’)が最小になるように、補正パラメータｋ１およびＣ１を同定する。
【００２８】
次に、点火が行われてから、混合気が着火して燃焼が行われる燃焼（膨張）行程を含む、たとえば図２に判定ステージと示す期間において、筒内圧実測値ＰＳは、同定されたパラメータｋ１およびＣ１を用いて補正され、補正済み筒内圧ＰＳ’が算出される。これにより、判定ステージの期間において、黒色のドット３５は、ほぼ曲線３３上に位置する白色のドット３７となる。図に示されるように、着火によって燃焼が実際に開始されると、補正済み筒内圧ＰＳ’（曲線３３）と、モータリング圧ＰＭ（曲線３１）との間に差（燃焼圧）が生じ始め、燃焼が進むにつれて該差は広がっていく。
【００２９】
ここで、図３を参照して、着火を判定する手法について、２つの形態を説明する。（ａ）は、図２と同様の図であり、所定区間の補正済み筒内圧ＰＳ’（曲線３３）とモータリング圧力ＰＭ（曲線３１）との推移が示されている。前述したように、着火によって燃焼が開始されると、補正済み筒内圧ＰＳ’（曲線３３）と、モータリング圧力ＰＭ（曲線３１）との間に圧力差ＰＣＯＭＢが生じ始める。第１の実施例では、判定ステージの期間にわたって該圧力差ＰＣＯＭＢを監視し、該圧力差ＰＣＯＭＢが判定値ＤＰを超えた時点を着火時期と判定する。
【００３０】
判定値ＤＰは、好ましくは、熱発生時点における圧力差に対応するよう決められる。ここで、熱発生時点は、熱発生量が所定値に達した時点を示す。着火に応じて熱発生量は増大していくので、熱発生時点がわかれば、着火時期を判定することができる。
【００３１】
本願発明者の知見によれば、熱発生時点にける補正済み筒内圧ＰＳ’とモータリング圧力ＰＭとの間の圧力差すなわち判定値ＤＰは、圧縮上死点におけるモータリング圧力から推定することができる。より具体的には、圧縮上死点におけるモータリング圧力×ａ（％）により（ａは、たとえば５）、熱発生時点における圧力差ＤＰを近似することができる。すなわち、上死点におけるモータリング圧力は、燃焼が行われない時の最大筒内圧を示している。燃焼圧と熱発生量は相関しているので、燃焼によって該最大筒内圧の所定割合分に相当する燃焼圧が生じた時点を、所定量の熱発生量が生じた時点とみなすことができる。この手法によれば、熱発生時点をモータリング圧力から推定することができるので、熱発生量の検出または算出は必要とされない。
【００３２】
図３の（ａ）の例では、時間ｔ１（熱発生時点）において、圧力差ＰＣＯＭＢが判定値ＤＰを超えており、よって、該時間ｔ１を着火時期と判定することができる。本願発明の目的は、該圧力差が判定値を超えた時点を、より高い分解能で特定することであり、この詳細な手法は後述される。
【００３３】
他方、図３の（ｂ）には、燃焼によって発生する熱発生率ｄＱ／ｄθの推移が符号４１により示され、（ｃ）には、熱発生量Ｑ（熱発生率の積算値）の推移が符号４２により示されている。前述したように、熱発生時点に基づいて着火時期を判定することができるので、第２の実施例では、判定ステージの期間にわたって熱発生量Ｑを監視し、熱発生量Ｑが所定値ＱＣＰＳを超えた時点ｔ１を着火時期と判定する。この場合でも、本願発明の目的は、該熱発生量が所定値を超えた時点を、高い分解能で特定することであり、この詳細な手法については後述される。
【００３４】
図４は、この発明の一実施形態に従う、制御装置の全体的構成を示すブロック図である。各機能ブロックは、ＥＣＵ１において実現される。この実施形態は、図３の（ａ）を参照して説明した着火判定の第１の実施例に基づいている。
【００３５】
筒内圧センサ１７により出力された、気筒内の圧力に応じた電気信号（筒内圧信号）は、チャージアンプ５１により電圧信号に変換され、ローパスフィルタ５３を適用される。同定ステージおよび判定ステージを含む所定期間にわたり、ＡＤ変換器５５は、所定の周波数（たとえば、５０ｋＨｚ）で該筒内圧信号をサンプリングする。サンプリングにより得たサンプル値は、入出力インターフェース６１を介してＥＣＵ１のメモリに保存される。好ましくは、例えばダイレクトメモリアクセス（ＤＭＡ）を用いて、ＣＰＵを介さずに、これらのサンプル値は直接メモリに保存される。
【００３６】
また、図示しないが、同定ステージおよび判定ステージを含む上記所定期間にわたり、同定処理および着火判定処理に用いる他のデータ（吸気量、吸気温、エンジン回転数等）も、所定のクランク角度毎に計測されてメモリに記憶される。
【００３７】
この実施例では、以下に説明する同定処理および着火判定処理は、筒内圧等の計測値が保存される上記所定期間が経過した後、たとえば排気行程中に、該保存された計測値を用いて実施される。
【００３８】
センサ出力検出部６５は、上記所定期間に計測された筒内圧サンプル値を該メモリから読み出し、該筒内圧サンプル値に基づいて、所望のクランク角度毎（たとえば、１度）の筒内圧を、補間計算を利用して算出し、該算出した筒内圧を、パラメータ同定部７５およびセンサ出力補正部６７に渡す。この補間計算の手法については、後述される。こうして、センサ出力検出部６５は、クランク角度θに対応する筒内圧実測値ＰＳを出力する。
【００３９】
センサ出力補正部６７は、上述の補正式に従い、補正パラメータｋ１およびＣ１を用いて、実測値ＰＳ（θ）を補正し、補正済み筒内圧ＰＳ’（θ）を算出する。
【００４０】
一方において、燃焼室容積計算部６９は、クランク角度θに応じた気筒の燃焼室の容積Ｖｃを次の数式により計算する。
【数１】
0004445986.tif 000002
【００４１】
上の式で、ｍは、図５の関係から計算される、ピストン１５の上死点からの変位を示す。ｒをクランクシャフト１６の半径、l（エル）をコンロッド長とすると、λ=l/r である。Ｖｄｅａｄは、ピストン１５が上死点にあるときの燃焼室の容積、Ａｐｓｔｎは、ピストンの断面積である。
【００４２】
一般に燃焼室の状態方程式は、次の（３）式で表されることが知られている。
【数２】
0004445986.tif 000003
【００４３】
式（３）で、Ｇは、気筒内に吸入される空気量を示し、エアフローメータ８（図１）により検出され、またはエンジン回転数ＮＥおよび吸気圧ＰＢ（それぞれ、図１のＣＲＫセンサ１９およびＰＢセンサ１０により検出されることができる）に基づいて得られる吸入空気量を示す。Ｒは気体定数、Ｔは、例えば吸気温センサ１１（図１）により検出され、またはエンジン水温（図１のＴＷセンサ１８により検出されることができる）などの運転状態に基づいて得られる吸気温度である。ｋは補正係数、Ｃは補正項である。
【００４４】
この発明の一実施形態では、燃焼室の気体状態方程式に基づくモータリング圧力推定値として、たとえばセンサ取り付け部の温度変化等の影響を受けない単結晶圧電式の圧力センサを用いて燃焼室の圧力を実測し、この実測値を式（３）と対応させることにより算出されたｋの値ｋ0およびＣの値Ｃ0を求め、これを式（３）に代入して得られる次の式（４）を用いてモータリング圧力ＰＭを推定する。
【数３】
0004445986.tif 000004
【００４５】
モータリング圧力推定部７０は、基本モータリング圧力計算部７１およびモータリング圧力補正部７２から構成される。基本モータリング圧力計算部７１が（４）式の基本項目である基本モータリング圧力ＧＲＴ/Ｖｃを計算する。モータリング圧力補正部７２は、上述のようにして予め求められているパラメータｋ0およびＣ0を用いて、基本モータリング圧力を補正する。このパラメータｋ0およびＣ0は、エアフローメータ８により検出される吸気量およびエンジン回転数などエンジンの負荷状態を表すパラメータに従って参照することができるテーブルとして用意されている。
【００４６】
パラメータ同定部７５は、同定ステージの期間において計測されたデータ（吸気量Ｇおよび吸気温Ｔ）を用いてモータリング圧力推定部７０が算出するモータリング圧力ＰＭと、該同定ステージの期間における筒内圧実測値ＰＳに基づいてセンサ出力補正部６７が生成する補正済み筒内圧ＰＳ’との差(ＰＭ-ＰＳ’)が最小になるよう、既知の最小二乗法を利用して、補正パラメータｋ１およびＣ１を同定する。図２を参照して述べたように、同定ステージの期間においては、補正済み筒内圧ＰＳ’はモータリング圧力ＰＭに収束すべきであり、よって、両者の誤差を最小にするよう、補正パラメータが同定される。
【００４７】
前述したように、補正済み筒内圧ＰＳ’およびモータリング圧力ＰＭは、所定のクランク角度毎に算出される。したがって、同定処理は、クランク角度に応じたモータリング圧力推定値ＰＭ(θ)と、同じクランク角度に応じた補正済み筒内圧ＰＳ’（θ）＝ＰＳ（θ）ｋ１＋Ｃ１との差が最小になるよう、より具体的には該差の二乗、すなわち（ＰＭ(θ) − ＰＳ(θ)ｋ１−Ｃ１）2 が最小になるよう、ｋ１およびＣ１を既知の最小二乗法により求める。
【００４８】
ここで、ＰＭの離散値をy(i)で表し、センサ出力検出部６５から得られる筒内圧実測値ＰＳの離散値をx(i)で表すと、YT=[y(0),y(1), …,y(n)] およびX(i)T=[x(0), x(1), …,x(n)]とそれぞれ表される。誤差の離散値の二乗の和は、次の式（５）で表される。ｎの値は、センサ出力検出部６５によって出力されて同定処理に用いられるデータの個数である。
【数４】
0004445986.tif 000005
【００４９】
Ｆの値を最小にするｋ１およびＣ１を求めるには、F(k１,C１)のk１およびＣ１に関する偏微分が０となるｋ１およびＣ１を求めればよい。これを数式で表すと、次のようになる。
【数５】
0004445986.tif 000006
【００５０】
式(6)および(7)の右辺を整理すると、次のようになる。
【数６】
0004445986.tif 000007
【００５１】
これを行列で表現すると、次のようになる。
【数７】
0004445986.tif 000008
【００５２】
この式を逆行列を使って変形すると、次のようになる。
【数８】
0004445986.tif 000009
【００５３】
ここで、右辺の逆行列は、次の式で表される。
【数９】
0004445986.tif 000010
【００５４】
収束判定部７６は、同定部７５により算出されたパラメータｋ１およびＣ１を評価する。より具体的には、該パラメータによる補正によって、補正済み筒内圧ＰＳ’がモータリング圧力ＰＭに対して収束するかどうかを、たとえば両者の誤差の標準偏差を調べることにより判定する。該判定の結果、収束度合いが許容範囲内にあるならば、該算出されたパラメータｋ１およびＣ１の値で、現在のパラメータｋ１およびＣ１を更新する。収束度合いが許容範囲内になければ、パラメータの更新は行われず、現在のパラメータｋ１およびＣ１を、以下の着火時期判定処理に用いる。
【００５５】
センサ出力補正部６７は、パラメータｋ１およびＣ１を用いて、前述したように、判定ステージの期間において計測された筒内圧実測値ＰＳに基づき、上述の補正式に従って補正済み筒内圧ＰＳ’を算出する。
【００５６】
熱発生時点圧力差算出部７７は、熱発生時点における補正済み筒内圧ＰＳ’とモータリング圧力ＰＭとの圧力差を、圧縮上死点におけるモータリング圧力から推定し、該推定された圧力差を、着火時期判定のための判定値ＤＰとして出力する。具体的には、圧縮上死点のモータリング圧力ＰＭを、前述の式（４）に従って算出し、該モータリング圧力ＰＭ×ａ（％）を、判定値ＤＰとして計算する。ａは、たとえばシミュレーション等を介して予め決められることができる。
【００５７】
着火時期判定部７８は、判定ステージの期間における筒内圧実測値に基づいてセンサ出力補正部６７によって算出された補正済み筒内圧ＰＳ’と、該判定ステージの期間において計測されたデータを用いてモータリング圧力推定部７０によって算出されたモータリング圧力ＰＭとの圧力差ＰＣＯＭＢを求める。なお、同定処理と同様に、補正済み筒内圧ＰＳ’およびモータリング圧力ＰＭは、所定のクランク角度毎に算出されるので、圧力差ＰＣＯＭＢは、同じクランク角度に応じたモータリング圧力ＰＭと補正済み筒内圧ＰＳ’に基づいて算出される。
【００５８】
着火時期判定部７８は、判定ステージの期間において、圧力差ＰＣＯＭＢが判定値ＤＰを超えたことを検出し、該検出に応じて、該超えた時点を、補間計算を利用して特定する。該特定した時点が、着火時期と判定される。判定値ＤＰは、熱発生時点における圧力差、すなわち着火が生じた時の圧力差を示しているので、圧力差ＰＣＯＭＢが判定値ＤＰを超えた時を特定すれば、着火時期を判定することができる。
【００５９】
ここで、図６を参照して、この補間計算について説明する。図には、第１のクランク角度ＣＡ（ｉ）が示されており、これは、着火時期判定部７８が、圧力差ＰＣＯＭＢが判定値ＤＰを超えたことを検出した時のクランク角度である。したがって、圧力差ＰＣＯＭＢは、第１のクランク角度と、該第１のクランク角度よりも１つ前の第２のクランク角度ＣＡ（ｉ−１）との間で、判定値ＤＰを超えたことがわかる。ここで、第１のクランク角度ＣＡ（ｉ）と、第２のクランク角度ＣＡ（ｉ−１）との差は、センサ出力検出部６５の補間計算において筒内圧が算出されるクランク角周期に対応する。たとえば、１度毎の筒内圧がセンサ出力検出部６５により算出される場合には、第１のクランク角度ＣＡ（ｉ）と第２のクランク角度ＣＡ（ｉ−１）との差は１度である。第１のクランク角度ＣＡ（ｉ）に対応する圧力差はＰＣＯＭＢ（ｉ）で表され、第２のクランク角度ＣＡ（ｉ−１）に対応する圧力差はＰＣＯＭＢ（ｉ−１）で表されている。
【００６０】
補間計算の目的は、圧力差ＰＣＯＭＢが判定値ＤＰに達した時のクランク角度ＣＡ（ｘ）を算出することである。図から明らかなように、以下の式（１１）に従って、時点ＣＡ（ｘ）を算出することができる。着火時期判定部７８は、こうして時点ＣＡ（ｘ）を算出し、該算出した時点ＣＡ（ｘ）を、着火時期と判定する。
【数１０】
0004445986.tif 000011
【００６１】
このように、筒内圧が算出される分解能よりも細かい分解能で、着火時期を特定することができる。筒内圧が、たとえばクランク角１度の分解能で算出される場合には、クランク角１度より細かい分解能で着火時期を特定することができる。
【００６２】
代替的に、センサ出力検出部６５により算出される筒内圧の分解能が１度のクランク角度でなくてもよい。たとえば、該分解能が２度のクランク角度の場合には、式（１１）の１（ｄｅｇ）は、２（ｄｅｇ）に置き換えられる。
【００６３】
着火時期判定部７８は、好ましくは、こうして判定された着火時期が所定値より早い場合には、該着火時期に誤差が含むおそれがあるので、着火時期の更新を禁止する。この場合、着火時期を用いるその後の任意の処理においては、着火時期について判定された前回値が用いられることとなる。
【００６４】
着火時期判定部７８は、一実施例では、判定ステージの期間にわたって、着火時期と判定することのできる時点を特定できなかった場合には、失火と判定することができる。こうして、着火時期判定処理において、失火の有無を判断することができる。
【００６５】
図７〜図１４を参照して、この発明の一実施例に従う着火時期判定処理をより具体的に説明する。
【００６６】
図７は、各燃焼サイクルの、たとえば排気行程中に実施される着火時期判定処理のメインフローである。この処理は、ＥＣＵ１のＣＰＵによって、より具体的には図４に示される装置によって実行される。
【００６７】
ステップＳ１において、同定ステージおよび判定ステージを含む所定期間について収集された筒内圧サンプル値に基づき、所定クランク角度毎の筒内圧を算出するための補間計算（図８）を実施する。ステップＳ２に進み、パラメータｋ１およびＣ１の同定処理（図１１）を実行する。ステップＳ３に進み、着火時期判定処理（図１３、図１４）を行う。
【００６８】
図８を参照して、図７のステップＳ１で実施される、所定のクランク角度毎（この例では、１度）の筒内圧を算出するための補間計算処理を示す。
【００６９】
まず、該補間計算を説明する前に、サンプリングについて説明する。この実施例では、前述したように、同定ステージおよび判定ステージを含む所定期間の間、ＡＤ変換器５５により、所定の周波数で筒内圧センサ１７の出力がサンプリングされてメモリの所定領域ad_data[]に順次保存される。この実施例では、サンプリング周波数が５０ｋＨｚであり、よってサンプリング間隔は２０マイクロ秒である。
【００７０】
さらに、ＡＤ変換を行っている間、クランク角センサ１９からのクランクパルスの立ち下がりエッジ（代替的に、立ち上がりエッジでもよい）の時間が取得され、メモリの所定領域crk_time[]に記憶される。この実施例では、クランクパルスは、クランク角度１５度毎に発せられる。したがって、たとえばＡＤ変換の期間がクランク角度１９５度（圧縮上死点前８７．５度〜圧縮上死点後１０７．５度）であるとき、１３個のクランクパルスについてのエッジ時間が記憶される。
【００７１】
図８に示すプロセスは、該所定期間にわたってメモリに記憶された筒内圧のサンプル値に対して実行される。該プロセスにより、クランク角１度毎の筒内圧値が補間計算により算出される。
【００７２】
ステップＳ４１は、上記所定期間のクランクパルスの数crk_time[0]〜crk_time[i]だけループが行われることを示す。この実施例では、上記所定期間は、１９５度のクランク角度に対応するので、１９５／１５＝１３回のループが行われる。ステップＳ４２は、クランクパルス間で算出すべき筒内圧値の数だけループが行われることを示す。この実施例では、クランクパルスは１５度毎に発せられ、クランク角１度毎の筒内圧値を得ることが目的なので、１５／１＝１５回のループが行われる。
【００７３】
ステップＳ４３において、crk_time(i+1)-crk_time(i)は、クランクパルス間の時間長を示す。図９（ａ）に示すように、このステップでは、当該クランクパルス間におけるｎ番目(<15)に算出される筒内圧値に対応する時点の、同定ステージの開始時点からの長さtime_1degを、以下の式（１２）のように算出している。
【数１１】
0004445986.tif 000012
【００７４】
ステップＳ４４において、時間長time_1degを、サンプリング間隔である２０マイクロ秒で除算し、その商をquotientに設定し、余りをremainderに設定する。算出された商quotientにより、どのサンプル値を用いるべきかが特定される。
【００７５】
ステップＳ４５において、式（１３）に示す補間計算により、クランク角１度毎の筒内圧値を算出する。図９（ｂ）に示すように、余りremainderがある場合には、サンプル値ad_data[quotient]と、サンプル値ad_data[quotient＋１]の間で、補間が行われる。ここで、samptimeは、サンプリング間隔を示し、この例では２０マイクロ秒である。この補間により、１度毎筒内圧値pcyl_adが算出される。余りが無い場合には、サンプル値ad_data[quotient]を、１度毎筒内圧値としてそのまま用いることができる。
【数１２】
0004445986.tif 000013
【００７６】
図１０を参照すると、２０マイクロ秒の間隔でサンプリングされたサンプル値９１が示されている。エンジン回転数に依存して、クランク角度１度あたりの時間長は異なる。エンジン回転数が８３３３ｒｐｍであるときには、１度は２０マイクロ秒に相当するので、サンプリング間隔に一致する。したがって、上記ステップＳ４４において余りremainderはゼロになり、サンプル値９１を、１度毎筒内圧として用いることができる。
【００７７】
しかしながら、低回転２０００ｒｐｍや高回転９０００ｒｐｍの場合には、１度に対応する時間長は、長くなったり（８３．３マイクロ秒）短くなったりする（１８．５マイクロ秒）。この場合には、補間が行われる。たとえば、２０００ｒｐｍの場合、時点ｔ３のサンプル値９１と時点ｔ４におけるサンプル値９１との間で補間が行われ、１度毎サンプル値９３が算出される。９０００ｒｐｍの場合、時点ｔ１におけるサンプル値９１と時点ｔ２におけるサンプル値９１との間で補間が行われ、１度毎サンプル値９２が算出される。
【００７８】
なお、図８のプロセスは、クランク角度１度の補間計算を行うものであるが、この角度に限定されず、任意の角度の補間計算を行うことができる。たとえば、クランク角度３度の補間計算を行う場合には、ステップＳ４２の値１５を、１５／３＝５にすればよい。そして、ステップＳ４３は、次のような式に変更される。
time_3deg＝（crk_time[i+1]―crk_time[i]）×３(deg)×ｎ／１５＋（crk_time[i]―crk_time[0]）
【００７９】
こうして求めたtime_3degを２０マイクロ秒で除算し、商と余りを求め、ステップＳ４５を実行して、３度毎筒内圧Pcyl_adを算出すればよい。
【００８０】
こうして、同定ステージおよび判定ステージを含む所定期間中の所定のクランク角度度毎の筒内圧pcyl_adがセンサ出力検出部６５により算出されてメモリに記憶され、これが、筒内圧ＰＳとして後続の処理に用いられる。
【００８１】
ここで、上記のサンプリングおよび補間計算の利点について、説明させていただく。従来は、クランクパルスに同期して、センサにより計測された筒内圧等の計測データをサンプリングし、該サンプル値をＣＰＵが取得して何らかの演算を行うようにしていた。制御精度を高めるために細かいクランク角度、たとえば１度間隔で計測データを得ようとすると、１度の間隔で該計測データをサンプリングするため、サンプリング周波数を高める必要がある。また、ＣＰＵは、１度の間隔で演算を実行するため、同じ間隔で該サンプリングした計測データを受信する必要がある。ＣＰＵが計測データを受け取るには、実行中の処理を中断する必要があるので、クランクパルス間の間隔が小さいほど、ＣＰＵの負荷が増大する。
【００８２】
それに対し、本願発明の上記実施例では、補間計算により、所定の時間周期で得られた計測データのサンプル値から、所望のクランク角毎（たとえば、１度単位）の筒内圧を計算することができるので、サンプリング周波数を高くする必要はない。また、クランクパルスは、クランクパルス間隔の時間長（crk_time(i+1)-crk_time(i)）を計算するために用いられるにすぎない。したがって、所望のクランク角単位を例えば１度のように細かくしても、該細かいクランク角単位でＣＰＵが計測データを受信して演算するわけではないので、ＣＰＵ負荷の増大を抑制することができる。
【００８３】
さらに、本願発明では、データを取得する上記所定期間（この例では、１９５度の期間）が、演算期間（たとえば、排気行程中）と分離されているので、該所定期間の間、たとえばダイレクトメモリアクセス（ＤＭＡ）を用いて、ＣＰＵを介することなく計測データのサンプル値をメモリに直接保存することができ、よってＣＰＵに負荷はかからない。ＣＰＵは、補間計算を行う際に該メモリにアクセスすればよい。
【００８４】
さらに、クランクパルスの波形のパターンは、車両の機種によって様々である。たとえば、クランクパルスの波形に、気筒を判別するため、パルスの時間的長さが例えば２倍になる、いわゆる“歯抜け”と呼ばれる部分を設けることがある。この歯抜けに相当するクランクパルスが到来することにより、ＥＣＵ１は、どの気筒の上死点が到来したかを判断することができる。クランクパルスに同期して何らかの演算処理が実行される場合に、このような周期の長い“歯抜け”が到来すると、該演算処理が実質的に省略されることになる。本願発明の上記実施例によれば、歯抜けが到来した場合には、ステップＳ４３の”１５(deg)”を、歯抜けの周期に相当する値（たとえば、３０deg）で置き換えることにより、所望のクランク角毎の筒内圧を算出することができる。このように、クランクパルスの波形パターンに依存することなく、同じ間隔で計測データを生成することができる。
【００８５】
さらに、この実施例によれば、上記所定区間中に計測されたデータがすべてメモリに保存されるので、その後の同定処理および制御処理は、該メモリから、任意の区間の任意の量のデータを任意に選択することができる。たとえば、処理の内容に応じてデータを選択したり、運転状態に応じてデータを選択したりすることができる。
【００８６】
サンプリング周波数（この実施例では、５０ｋＨｚ）は、検知すべき対象物に応じて設定されるのが好ましい。この実施例では、着火時期だけでなくノッキングをも検知することができるよう、ノッキングの周波数（１３．５ｋＨｚ程度）の２倍以上の周波数を選択している。ノッキングは、周知の任意の手法により（たとえば、特開２００６−１８３５３３号公報に記載されている）、図８のプロセスで算出された所定のクランク角度（たとえば、１度）毎の筒内圧を用いて検知することができる。
【００８７】
図１１は、図７のステップＳ２で実行される同定処理を示す。該同定処理中、筒内圧については、図８のプロセスによって算出された所定クランク角度毎（この例では、１度毎）の筒内圧のうち、同定ステージの期間における筒内圧がメモリから読み出されて用いられる。同定ステージの期間は、予め決められ、この実施例では、たとえば圧縮上死点前７５〜２０度の５５度の期間である。したがって、上記所定クランク角度が１度であるとき、５５個の筒内圧が用いられる。他の計測データ（吸気量、吸気温、エンジン回転数等）は、前述したように、同定ステージの期間中に所定のクランク角度毎（たとえば、１５度毎）に取得されてメモリに記憶されている。以下の各式の演算は、該算出された筒内圧のそれぞれについて行われるが、各筒内圧に対応する計測データとしては、該筒内圧に対応する時点（図９のtime_1degにより特定されることができる）で既に取得されている計測データのうち最新の計測データが用いられる。
【００８８】
ステップＳ５２において、前述した式（１）にしたがってピストン位置を計算し、式（２）にしたがってシリンダ容量を計算する。さらに、ステップＳ５３において、エアフローメータ８の検出値Ｇおよび吸気温センサ１１の検出値Ｔをメモリから読み込む。ステップＳ５４において、シリンダ容量Ｖｃ、吸気量Ｇおよび吸気温Ｔを用い、式（４）に従ってモータリング圧力ＰＭ（θ）を算出する。
【００８９】
ステップＳ５５において、図８において算出された筒内圧ＰＳ（θ）を読み込む。ステップＳ５６において、式（９）に従ってパラメータｋ1およびＣ1を同定する。ステップＳ５７において、収束判定処理（図１２）を実行する。
【００９０】
図１２は、ステップＳ５７に示す収束判定処理のプロセスを示す。この収束判定は、パラメータｋ１およびＣ１によって補正される補正済み筒内圧ＰＳ’が、モータリング圧力ＰＭに良好に収束するかどうかを判断し、これにより、パラメータｋ１およびＣ１の妥当性を評価するためのプロセスである。
【００９１】
ステップＳ６１において、同定されたパラメータｋ1およびＣ1を用いて前述した補正式により、同定処理で用いた筒内圧ＰＳ（θ）を補正し、補正済み筒内圧ＰＳ’（θ）を算出する。ステップＳ６２において、該補正済み筒内圧と、図１１のステップＳ５４で算出したモータリング圧力ＰＭ（θ）との誤差Ｅ（＝ＰＭ（θ）―ＰＳ’（θ））を算出する。ステップＳ６３において、以下の式（１４）に従い、該誤差Ｅの分散σを算出する。ここで、ｎは、式（９）で示されるｎと同じであり、同定処理に用いた筒内圧値の個数を示す。
【数１３】
0004445986.tif 000014
【００９２】
ステップＳ６４において、該分散の平方根として標準偏差ＳＴＤＶを計算する。ステップＳ６５において、標準偏差ＳＴＤＶが所定の閾値より小さければ、モータリング圧力ＰＭと補正済み筒内圧ＰＳとの誤差が収束すると判定し、収束フラグＦ＿収束＿ＮＧをゼロに設定する（Ｓ６６）。
【００９３】
ステップＳ６５において、標準偏差ＳＴＤＶが所定の閾値以上ならば、誤差が収束しないと判断する。この場合、筒内圧センサに異常が生じるなどしてノイズを発生している、演算がオーバーフローしているなどの障害が発生している可能性がある。したがって、収束フラグＦ＿収束＿ＮＧに１を設定する（Ｓ６７）。
【００９４】
ステップＳ６８において、収束フラグが１になる回数をカウントアップする。ステップＳ６９において、カウントが所定値（たとえば、100）以上になると、筒内圧センサの異常を示すフラグＦ＿センサ＿ノイズを１にセットする（Ｓ７０）。
【００９５】
ステップＳ７１およびＳ７２において、フラグＦ＿センサ＿ノイズおよびＦ＿収束＿ＮＧの値が１かどうかを調べる。これらの判断の両方がＮｏであれば、今回同定されたパラメータｋ1、Ｃ1を適正なパラメータとして採用する。したがって、ステップＳ７３において、今回同定されたパラメータの値で、前回同定されたパラメータの値が更新され、当該プロセスを終了する。ステップＳ７１およびＳ７２の判断のいずれかがＹｅｓであれば、パラメータｋ１およびＣ１を更新することなく、このプロセスを終える。
【００９６】
図１３および図１４は、図７のステップＳ３で実行される着火時期判定処理を示す。ステップＳ８１において、前述したように、熱発生時点における圧力差ＤＰを判定値として算出する。一実施例では、圧縮上死点におけるモータリング圧力ＰＭを計算する。具体的には、圧縮上死点におけるピストン位置およびシリンダ容積を前述の式（１）および（２）に従って計算し、該上死点における吸気量Ｇおよび吸気温Ｔを読み込んで、式（４）に従ってモータリング圧力ＰＭを算出する。該モータリング圧力ＰＭに所定の割合（たとえば、５％）を乗算することにより、判定値ＤＰを算出する。
【００９７】
以下のステップでは、筒内圧については、図８のプロセスによって算出された所定クランク角度毎（この例では、１度毎）の筒内圧のうち、判定ステージの期間における筒内圧がメモリから読み出されて用いられる。他の計測データ（吸気量、吸気温、エンジン回転数等）は、前述したように、判定ステージの期間中に所定のクランク角度毎（たとえば、１５度毎）に取得されてメモリに記憶されている。以下の各式の演算は、該算出された筒内圧のそれぞれについて行われるが、各筒内圧に対応する計測データとしては、該筒内圧に対応する時点（図９のtime_1degにより特定されることができる）で既に取得されている計測データのうち最新の計測データが用いられる。
【００９８】
ここで、判定ステージは、予め決められることができ、この実施例では、前述したＡＤ変換の期間（たとえば、圧縮上死点前８７．５度〜圧縮上死点後１０７．５度の１９５度の区間）と一致する。代替的に、判定ステージの期間を、エンジンの運転状態に応じて最も適切なタイミングで着火時期判定を行うために、該運転状態に応じて設定するようにしてもよい。たとえば、着火は、点火時期以降に開始されるので、点火時期からの所定期間を、判定ステージとすることができる。たとえば、所定のマップをメモリに記憶し、点火時期等の運転状態に基づいて該マップを参照することにより、判定ステージの期間を求めることができる。
【００９９】
ステップＳ８２は、判定ステージの期間について図８のプロセスで算出された筒内圧値の数だけループ処理が行われることを示す。たとえば、判定ステージが、前述したような１９５度のクランク角度範囲である場合、図８ではクランク角１度毎に筒内圧が算出されるので、１９５回のループ（ｉ＝０〜１９４）が行われる。
【０１００】
ステップＳ８３において、前述した式（１）および（２）に従い、ピストンの上死点からの変位ｍおよびシリンダの容量Ｖｃを計算する。ステップＳ８４において、吸気量Ｇおよび吸気温Ｔを読み込む。
【０１０１】
ステップＳ８５おいて、式（４）に従って、モータリング圧力ＰＭ（ｉ）を算出する。ステップＳ８６において、筒内圧ＰＳ（ｉ）を読み込む。ステップＳ８７において、前述した補正式に従い、補正済み筒内圧ＰＳ’（ｉ）を算出する。
【０１０２】
ステップＳ８８において、ステップＳ８７で算出された補正済み筒内圧ＰＳ’（ｉ）から、ステップＳ８５で算出されたモータリング圧力ＰＭ（ｉ）を減算することにより、圧力差ＰＣＯＭＢ（ｉ）を算出する。ステップＳ８９において、圧力差ＰＣＯＭＢ（ｉ）が、ステップＳ８１で算出された判定値ＤＰより大きいかどうかを判断する。大きければ、着火が発生したと判断し、フラグＦ＿着火に値１を設定する（Ｓ９０）。ステップＳ８９の判断がＮｏの場合には、フラグＦ＿着火にはゼロが設定される（Ｓ９１）。
【０１０３】
ステップＳ８２から開始するループは、フラグＦ＿着火に値１が設定された時に抜ける（Ｓ９２）。フラグＦ＿着火に値１が設定された時、該ループを抜けた時のクランク角度ＣＡ（ｉ）は、着火が発生したクランク角度を表している。他方、判定ステージの期間にわたって、フラグＦ＿着火が１に設定されなければ、該フラグがゼロのままループを終える。この場合、該ループを抜けた（終えた）時のクランク角度ＣＡ（ｉ）は、該判定ステージの終端に対応するクランク角度を表している。
【０１０４】
図１４のステップＳ９５に進み、図１３のループを終了した時のクランク角度ＣＡ（ｉ）が、所定値以上かどうかを判断する。前述したように、フラグＦ＿着火が１に設定されていれば、該クランク角度ＣＡ（ｉ）は着火発生角度を表している。したがって、ステップＳ９５の判断は、着火発生角度が早すぎる（図２における左方向）かどうかを判断するために行われる。たとえば、着火発生角度ＣＡ（ｉ）が、点火時期より早いことを示すと、該着火発生角度は誤差を含むおそれがある。したがって、着火発生角度ＣＡ（ｉ）が所定値以下ならば、着火発生角度が誤差を含むおそれがあると判断し、ステップＳ９６においてフラグＦ＿エラーを値１に設定する。
【０１０５】
着火発生角度が該所定値より大きい場合には、ステップＳ９７において、フラグＦ＿エラーにゼロを設定する。なお、フラグＦ＿着火がゼロであれば、クランク角度ＣＡ（ｉ）は、判定ステージの終端のクランク角度を表しているので、ステップＳ９５の判断はＹｅｓになり、よってフラグＦ＿エラーにはゼロが設定される。
【０１０６】
ステップＳ９８において、フラグＦ＿エラーの値を調べ、該フラグの値が１ならば、着火時期の更新を禁止するので、ステップＳ１０２に進む。こうして、誤差を含むおそれのある値で着火時期が更新されるのを防止することができる。
【０１０７】
ステップＳ９９において、フラグＦ＿着火の値を調べる。フラグＦ＿着火がゼロであれば、着火と判定された時点が判定ステージ中に見つからなかったことを示すので、ステップＳ１００において、該クランク角ＣＡ（ｉ）をメモリに保存する。これにより、この着火判定プロセスを終えた後で、該保存されたＣＡ（ｉ）の値を調べ、これが、判定ステージの終端に対応するクランク角を示していれば、失火が生じたと判断することができる。
【０１０８】
ステップＳ９９においてフラグＦ＿着火の値が１であれば、ステップＳ１０１において、クランク角度ＣＡ（ｉ）に対応する圧力差ＰＣＯＭＢ（ｉ）と、該クランク角度ＣＡ（ｉ）より１つ前のクランク角度ＣＡ（ｉ−１）およびそれに対応する圧力差ＰＣＯＭＢ（ｉ―１）を用いて、図６を参照して前述した補間計算式（１１）に従い、着火時期ＣＡ（ｘ）を算出する。こうして、図８の筒内圧算出の分解能（この例では、１度）以下の分解能で、圧力差ＰＣＯＭＢが判定値ＤＰを超えた時点のクランク角度ＣＡ（ｘ）すなわち着火時期を特定することができる。
【０１０９】
ステップＳ１０２に進み、着火遅れを算出する。着火遅れは、点火時期ＩＧＬＯＧから、着火時期までの遅れを示す。点火時期ＩＧＬＯＧは、任意の適切な制御で決められており、クランク角度で表されている。着火時期ＣＡ（ｘ）から該点火時期ＩＧＬＯＧを減算することにより、着火遅れを算出することができる。
【０１１０】
ステップＳ１０３〜Ｓ１０６は、着火遅れのリミット処理を示す。着火遅れをその後の何らかの制御処理に用いるとき、該着火遅れが所定範囲内にないと、該制御処理に比較的大きい変動をもたらすおそれがあるので、リミット処理を行う。すなわち、着火遅れが所定の上限値より大きければ、該上限値を着火遅れとして出力し（Ｓ１０４）、着火遅れが所定の下限値より小さければ、該下限値を着火遅れとして出力する（Ｓ１０６）。着火遅れが、該上限値と該下限値との間にあるときには、ステップＳ１０３で算出された着火遅れをそのまま出力する。
【０１１１】
着火時期に基づいて、様々な制御やパラメータの算出がしばしば行われる。たとえば、上記のように着火遅れを算出したり、該着火時期から、筒内圧最大値Ｐｍａｘの時点までの燃焼期間を算出したり、着火時期を、所定の目標時期に制御したり、燃料量を制御したり、点火時期を制御したり、また、複数の気筒について、筒内圧最大値にバラツキが生じないよう着火時期をそろえる制御を行ったりすることがある。着火時期の分解能が粗いと、何らかの誤差が着火時期に含まれるおそれがあり、これらの様々な制御やパラメータの算出の精度が低くなるおそれがある。この発明によれば、図８に示すような補間計算により、筒内圧の分解能を上げることができ、さらに、図１４および図６に示すような補間計算により、着火時期の分解能を上げることができる。これらの補間計算により、筒内圧のサンプリング周波数を上げることなく、高精度に着火時期を特定することができる。
【０１１２】
図１５は、この発明の他の実施形態に従う、制御装置の全体的構成を示すブロック図である。各機能ブロックは、ＥＣＵ１において実現される。図４と異なる点についてのみ説明する。この実施形態は、図３の（ｂ）および（ｃ）を参照して説明した着火時期判定の第２の実施例に基づいており、熱発生時点圧力差算出部７７に代えて、熱発生量算出部８７が設けられている。
【０１１３】
熱発生量算出部８７は、以下の式（１５）に従って、補正済み筒内圧ＰＳ’（ｋＰａ）に基づいて熱発生率ｄＱ／ｄθ（Ｊ／ｄｅｇ）を計算し、これを式（１６）に示すように積算することによって、熱発生量Ｑ（Ｊ）を算出する。κは比熱比を示し、Ｖｃは、前述したように燃焼容積（ｃｃ）を示す。θは、前述したようにクランク角度を表す。
【数１４】
0004445986.tif 000015
【０１１４】
ここで、燃焼容積Ｖｃは、前述した式（２）に従って算出されることができる。比熱比κは、予め決められた値（たとえば、１．３）を用いてよい。代替的に、運転状態に応じて混合気の比熱比が変化することがあるので、運転状態に応じた値としてもよい。たとえば、燃料カット中とそうでない時とで、異なる値の比熱比を用いることができる。たとえば、判定ステージの期間中、どのクランク角度で燃料カットが行われたかどうかを示すデータをメモリに記憶しておき、該データを用いて、燃料カットが行われていなければ第１の値（たとえば、１．３）の比熱比を用い、燃料カットが行われていれば第２の値（たとえば、１．４）の比熱比を用いるようにしてよい。
【０１１５】
なお、式（１５）中のＰＳ’（θ）に代えて、所定区間にわたる補正済み筒内圧の平均値Ｐａｖｅ（θ）を用いてもよい。
【０１１６】
着火時期判定部８８は、判定ステージの期間にわたって、熱発生量算出部８７により算出される熱発生量Ｑが所定値ＱＣＰＳを超えたことを検出し、該検出に応じて、該超えた時点を、補間計算を利用して特定する。該特定した時点が、着火時期と判定される。
【０１１７】
ここで、図１６を参照して、この補間計算について説明する。図には、第１のクランク角度ＣＡ（ｉ）が示されており、これは、着火時期判定部８８が、熱発生量Ｑが所定値ＱＣＰＳを超えたことを検出した時のクランク角度である。したがって、熱発生量Ｑは、第１のクランク角度と、該第１のクランク角度よりも１つ前の第２のクランク角度ＣＡ（ｉ−１）との間で、所定値ＱＣＰＳを超えたことがわかる。ここで、第１のクランク角度ＣＡ（ｉ）と、第２のクランク角度ＣＡ（ｉ−１）との差は、センサ出力検出部６５の補間計算において筒内圧が算出されるクランク角周期に対応する。たとえば、１度毎の筒内圧がセンサ出力検出部６５により算出される場合には、第１のクランク角度ＣＡ（ｉ）と第２のクランク角度ＣＡ（ｉ−１）との差は１度である。第１のクランク角度ＣＡ（ｉ）に対応する熱発生量はＱ（ｉ）で表され、第２のクランク角度ＣＡ（ｉ−１）に対応する熱発生量はＱ（ｉ−１）で表されている。
【０１１８】
補間計算の目的は、熱発生量Ｑが所定値ＱＣＰＳに達した時のクランク角度ＣＡ（ｘ）を算出することである。図から明らかなように、以下の式（１７）に従って、時点ＣＡ（ｘ）を算出することができる。着火時期判定部８８は、こうして時点ＣＡ（ｘ）を算出し、該算出した時点ＣＡ（ｘ）を、着火時期と判定する。
【数１５】
0004445986.tif 000016
【０１１９】
このように、筒内圧が算出される分解能よりさらに細かい分解能で、着火時期を特定することができる。筒内圧が、クランク角１度の分解能で算出される場合により、クランク角１度より細かい分解能で着火時期を特定することができる。
【０１２０】
代替的に、センサ出力検出部６５により算出される筒内圧の分解能が１度のクランク角度でなくてもよい。たとえば、該分解能が２度のクランク角度の場合には、式（１１）の１（ｄｅｇ）は、２（ｄｅｇ）に置き換えられる。
【０１２１】
第１の実施例と同様に、着火時期判定部８８は、好ましくは、こうして判定された着火時期が所定値より早い場合には、該着火時期に誤差が含むおそれがあるので、着火時期の更新を禁止する。この場合、着火時期を用いるその後の任意の処理においては、着火時期について判定された前回値が用いられることとなる。
【０１２２】
また、第１の実施例と同様に、着火時期判定部８８は、判定ステージの期間にわたって、着火時期と判定することのできる時点を特定できなかった場合には、失火と判定することができる。こうして、着火時期判定処理において、失火の有無を判断することができる。
【０１２３】
図１７および図１８は、図１５に示される実施形態に従う、着火時期判定プロセスのフローである。着火時期判定の第１の実施例に従う図１３および図１４のプロセスと異なる点について説明する。なお、図１３および図１４と同様に、以下のステップでは、筒内圧については、図８のプロセスによって算出された所定クランク角度毎（この例では、１度毎）の筒内圧のうち、判定ステージの期間における筒内圧がメモリから読み出されて用いられる。他の計測データ（吸気量、吸気温、エンジン回転数等）は、前述したように、判定ステージの期間中に所定のクランク角度毎（たとえば、１５度毎）に取得されてメモリに記憶されている。以下の各式の演算は、該算出された筒内圧のそれぞれについて行われるが、各筒内圧に対応する計測データとしては、該筒内圧に対応する時点（図９のtime_1degにより特定されることができる）で既に取得されている計測データのうち最新の計測データが用いられる。
【０１２４】
ステップＳ１８１は、図１３のステップＳ８２と同じであり、判定ステージの期間について図８のプロセスで算出された筒内圧値の数だけループ処理が行われることを示す。たとえば、判定ステージが、前述したような１９５度のクランク角度範囲である場合、図８ではクランク角１度毎に筒内圧が算出されるので、１９５回のループ（ｉ＝０〜１９４）が行われる。
【０１２５】
ステップＳ１８２において、熱発生量の計算に用いる筒内圧ＰＳを読み込み、ステップＳ１８３において、前述の補正式に従って、対応する補正済み筒内圧ＰＳ’を算出する。
【０１２６】
ステップＳ１８４において、前述した熱発生率の計算式（１５）中のｄＶｃ／ｄθすなわち燃焼容積のクランク角度あたりの変化率ｄＶｃを算出する。この算出は、たとえば以下の式（１８）に従って算出されることができる。ここで、Ｖｃ（ｉ）は、ｉに対応するクランク角度θを用い、式（２）に従って算出されることができる。式（１８）は、移動平均処理の一例であり、８および１２等の係数の値は、任意の適切な値に予め定められることができる。
【数１６】
0004445986.tif 000017
【０１２７】
式（１８）は一例であり、他の算出式を用いてｄＶｃを算出してもよい。たとえば、より単純に、（Ｖｃ（ｉ）−Ｖｃ（ｉ−１））／２により算出してもよい。
【０１２８】
ステップＳ１８５において、前述した熱発生率の計算式（１５）中のｄＰＳ’／ｄθすなわち補正済み筒内圧のクランク角度あたりの変化率ｄＰＳ’を算出する。この算出は、たとえば以下の式（１９）に従って算出されることができる。式（１９）は、移動平均処理の一例であり、８および１２等の係数の値は、任意の適切な値に予め定められることができる。
【数１７】
0004445986.tif 000018
【０１２９】
式（１９）は一例であり、他の算出式を用いてｄＰＳ’／ｄθを算出してもよい。たとえば、より単純に、（ＰＳ’（ｉ＋１）−ＰＳ’（ｉ−１））／２により算出してもよい。
【０１３０】
ステップＳ１８６において、補正済み筒内圧ＰＳ’の所定区間にわたる平均値Ｐａｖｅを算出する。平均値Ｐａｖｅは、たとえば以下の式（２０）に従って算出されることができる。
【数１８】
0004445986.tif 000019
【０１３１】
式（２０）は、５個の補正済み筒内圧を用いて平均値Ｐａｖｅを算出しているが、これは一例であり、任意の数（たとえばＰＳ’（ｉ−１）〜ＰＳ’（ｉ＋１）の３個）の補正済み筒内圧を用いて平均値Ｐａｖｅを算出することができる。
【０１３２】
ステップＳ１８７において、式（２１）に従って、クランク角度あたりの熱発生率ｄＱを算出する。なお、式（２１）は、式（１５）と基本的に同じであり、ＰＳ’の代わりにＰａｖｅを用いている点が異なる。前述したように、比熱比κは、予め決められた値でもよいし、運転状態に応じて異なる値としてもよい。
【数１９】
0004445986.tif 000020
【０１３３】
ステップＳ１８８において、熱発生量の前回値Ｑ（ｉ−１）に、ステップＳ１８６で算出された熱発生率ｄＱ（ｉ）を加算し、熱発生量の今回値Ｑ（ｉ）を算出する。
【０１３４】
ステップＳ１８９において、熱発生量Ｑ（ｉ）が所定値ＱＣＰＳを超えたかどうか判断する。超えたならば、着火が生じたと判断してステップＳ１９０に進み、フラグＦ＿着火に値１を設定する。超えていなければ、着火がまだ生じていないと判断し、Ｓ１９１に進み、フラグＦ＿着火にゼロを設定する。
【０１３５】
ステップＳ１８１から開始するループは、フラグＦ＿着火に値１が設定された時に抜ける（Ｓ１９２）。フラグＦ＿着火に値１が設定された時、該ループを抜けた時のクランク角度ＣＡ（ｉ）は、着火が発生したクランク角度を表している。他方、判定ステージの期間にわたって、フラグＦ＿着火が１に設定されなければ、該フラグがゼロのままループを終える。この場合、該ループを抜けた（終えた）時のクランク角度ＣＡ（ｉ）は、該判定ステージの終端に対応するクランク角度を表している。
【０１３６】
図１８に示されるプロセスは、ステップＳ２０１を除き、図１４に示されるものと実質的に同じである。ステップＳ２０１では、クランク角度ＣＡ（ｉ）に対応する熱発生量Ｑ（ｉ）と、該クランク角度ＣＡ（ｉ）より１つ前のクランク角度ＣＡ（ｉ−１）およびそれに対応する熱発生量Ｑ（ｉ―１）を用いて、図１６を参照して前述した補間計算式（１７）に従い、着火時期ＣＡ（ｘ）を算出する。こうして、図８の筒内圧算出の分解能（この例では、１度）以下の分解能で、熱発生量Ｑが所定値ＱＣＰＳを超えた時のクランク角度ＣＡ（ｘ）すなわち着火時期を特定することができる。こうして、着火時期を、筒内圧の分解能（上記の実施例では、１度のクランク角）よりもさらに細かい分解能で特定することができる。
【０１３７】
図１９は、図４に示すブロック図の代替形態を示す。この形態によると、モータリング圧力補正部７２は設けられておらず、基本モータリング圧力計算部７１で計算される基本モータリング圧力GRT/VCが燃焼室の気体状態方程式に基づくモータリング圧力の推定値ＰＭとして用いられる。図１５に示すブロック図の代替形態でも、同様の構成を取ることができる。
【０１３８】
以上に本願発明を具体的な実施例について説明したが、本願発明はこのような実施例に限定されるものではなく、また、ガソリンエンジン、ディーゼルエンジンのいずれに対しても使用することができる。また、本願発明は、燃料噴射弁を燃焼室に臨むよう設ける筒内噴射式のエンジンにも使用することができる。
【０１３９】
なお、図８に示すプロセスは、この実施例では筒内圧について用いられたが、他の計測データ（たとえば、エアフローメータ、排ガスセンサ、空燃比センサ等の検出値）についても適用可能であり、これらの計測データについて、所定クランク角度毎の検出値を補間計算により算出することができる。
【図面の簡単な説明】
【０１４０】
【図１】この発明の一実施形態に従う、エンジンおよびその制御装置の全体的な構成を示す図。
【図２】モータリング圧力曲線および点火を生じたときの圧力曲線を表す図。
【図３】この発明の一実施例に従う、着火時期判定の手法を説明するための図。
【図４】この発明の一実施形態に従う、制御装置の機能ブロック図。
【図５】ピストン位置を計算するための概念図。
【図６】この発明の一実施形態に従う、より細かい分解能で着火時期を特定する補間計算を説明するための図。
【図７】この発明の一実施形態に従う、着火時期判定処理のメインフローを示すフローチャート。
【図８】この発明の一実施形態に従う、所定クランク角度毎の筒内圧の補間計算処理の流れを示すフローチャート。
【図９】この発明の一実施形態に従う、補間計算を説明するための図。
【図１０】この発明の一実施形態に従う、補間計算を説明するための図。
【図１１】この発明の一実施形態に従う、同定処理の流れを示すフローチャート。
【図１２】この発明の一実施形態に従う、収束判定処理の流れを示すフローチャート。
【図１３】この発明の一実施形態に従う、着火時期判定処理の流れを示すフローチャート。
【図１４】この発明の一実施形態に従う、着火時期判定処理の流れを示すフローチャート。
【図１５】この発明の他の実施形態に従う、制御装置の機能ブロック図。
【図１６】この発明の他の実施形態に従う、より細かい分解能で着火時期を特定する補間計算を説明するための図。
【図１７】この発明の他の実施形態に従う、着火時期判定処理の流れを示すフローチャート。
【図１８】この発明の他の実施形態に従う、着火時期判定処理の流れを示すフローチャート。
【図１９】この発明の他の実施形態に従う、制御装置の機能ブロック図。
【符号の説明】
【０１４１】
１０      電子制御ユニット（ECU）
１５      筒内圧センサ
６５      センサ出力検出部
６７      センサ出力補正部
７０      モータリング圧力推定部
７５      パラメータ同定部
７７      熱発生時点圧力差算出部
８７      熱発生量算出部
７８、８８      着火時期判定部
【図１】
0004445986.tif 000021
【図２】
0004445986.tif 000022
【図３】
0004445986.tif 000023
【図４】
0004445986.tif 000024
【図５】
0004445986.tif 000025
【図６】
0004445986.tif 000026
【図７】
0004445986.tif 000027
【図８】
0004445986.tif 000028
【図９】
0004445986.tif 000029
【図１０】
0004445986.tif 000030
【図１１】
0004445986.tif 000031
【図１２】
0004445986.tif 000032
【図１３】
0004445986.tif 000033
【図１４】
0004445986.tif 000034
【図１５】
0004445986.tif 000035
【図１６】
0004445986.tif 000036
【図１７】
0004445986.tif 000037
【図１８】
0004445986.tif 000038
【図１９】
0004445986.tif 000039