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