(57)【要約】【課題】リーン空燃比での運転時にも精度よく空燃比インバランス異常および共通供給系異常の少なくとも一方を検出する。【解決手段】クランク角センサ４２と筒内圧センサ３０とを用いて取得した筒内圧データを利用して、燃焼質量割合（ＭＦＢ）を算出する。ＭＦＢが１０％となる時のクランク角度（ＣＡ１０）を取得する。点火時期（ＳＡ）からＣＡ１０までのクランク角期間についての実ＳＡ−ＣＡ１０と目標ＳＡ−ＣＡ１０との差が無くなるように燃料噴射量を補正する。内燃機関１０が有する複数の気筒のうち所定気筒の燃料噴射補正率が所定範囲の上限又は下限に達しており、かつ所定気筒の燃料噴射補正率と所定気筒以外の他の気筒の燃料噴射補正率との差分が所定値以上であるときには、空燃比インバランス異常あるいは共通供給系異常が発生していると判定する。【選択図】図９
2016098798.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関のクランク角度を検出するクランク角判定手段と、
燃焼質量割合を算出する燃料質量割合算出手段と、
燃焼質量割合が所定燃焼質量割合となる時の所定クランク角度を取得するクランク角度取得手段と、
点火時期から前記所定クランク角度までのクランク角期間もしくは当該クランク角期間の相関値と、前記クランク角期間もしくは前記相関値の目標値との差に基づいて燃料噴射調整量を算出することにより、燃料噴射量を調整する調整手段と、
を備え、
気筒内に空気および燃料を供給するために前記内燃機関が有する複数の気筒の間で共通使用される共通供給系の異常を判定する第１判定手段と、空燃比インバランス異常を判定する第２判定手段とのうち少なくとも一方の手段をさらに備え、
前記第１判定手段は、前記内燃機関が有する複数の気筒のうち所定気筒の前記燃料噴射調整量が所定範囲の上限又は下限に達しており、かつ前記所定気筒の前記燃料噴射調整量と前記所定気筒以外の他の気筒の前記燃料噴射調整量との差分が所定値以下であるときに、前記共通供給系に異常があると判定し、
前記第２判定手段は、前記内燃機関が有する複数の気筒のうち所定気筒の前記燃料噴射調整量が所定範囲の上限又は下限に達しており、かつ前記所定気筒の前記燃料噴射調整量と前記所定気筒以外の他の気筒の前記燃料噴射調整量との差分が所定値以上であるときに空燃比インバランス異常が発生していると判定することを特徴とする内燃機関の異常検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の異常検出装置に関する。
【背景技術】
【０００２】
従来、例えば、特開２０１３−１４２３０２号公報に開示されているように、内燃機関の空燃比インバランスあるいは故障を検出する技術が知られている。この従来技術では、筒内圧センサ（ＣＰＳ）で検知した圧力絶対値から空燃比ＣＰＳ−Ａ／Ｆを検出するとともに、空燃比（Ａ／Ｆ）センサ出力値から空燃比ＡＦＳ−Ａ／Ｆを検出している。これらの値ＣＰＳ−Ａ／Ｆ、ＡＦＳ−Ａ／Ｆに基づいて、内燃機関の空燃比インバランスあるいは故障を検出している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１４２３０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記従来の技術では、空燃比インバランスの異常検出精度が低いという問題がある。その理由としては、まず、筒内圧センサの圧力絶対値は、ゼロ点校正が困難である等の理由から、検出精度が低い。Ａ／Ｆセンサを用いる場合についても、理論空燃比（ストイキ）でストイキ点校正を行うのでストイキ制御に比べてリーン限界付近では空燃比の検出精度が低くなってしまう。このように、従来、リーン空燃比インバランス異常を正確に検出する手段が見出されていなかった。また、内燃機関の一部の構成は、気筒内に空気および燃料を供給するために、複数の気筒の間で共通使用される。これを「共通供給系」とも称する。複数の気筒全てで平均的な空燃比ズレが発生している場合、共通供給系に異常がある疑いが強い。このような共通供給系の異常検出に関しても、リーン空燃比でより正確な検出を行うことが望まれている。
【０００５】
本発明は、上述のような課題を解決するためになされたもので、リーン空燃比での運転時にも精度よく空燃比インバランス異常と共通供給系異常の少なくとも一方を検出することのできる内燃機関の異常検出装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明にかかる内燃機関の異常検出装置は、
内燃機関のクランク角度を検出するクランク角判定手段と、
燃焼質量割合を算出する燃料質量割合算出手段と、
燃焼質量割合が所定燃焼質量割合となる時の所定クランク角度を取得するクランク角度取得手段と、
点火時期から前記所定クランク角度までのクランク角期間もしくは当該クランク角期間の相関値と、前記クランク角期間もしくは前記相関値の目標値との差に基づいて燃料噴射調整量を算出することにより、燃料噴射量を調整する調整手段と、
を備え、
気筒内に空気および燃料を供給するために前記内燃機関が有する複数の気筒の間で共通使用される共通供給系の異常を判定する第１判定手段と、空燃比インバランス異常を判定する第２判定手段とのうち少なくとも一方の手段をさらに備え、
前記第１判定手段は、前記内燃機関が有する複数の気筒のうち所定気筒の前記燃料噴射調整量が所定範囲の上限又は下限に達しており、かつ前記所定気筒の前記燃料噴射調整量と前記所定気筒以外の他の気筒の前記燃料噴射調整量との差分が所定値以下であるときに、前記共通供給系に異常があると判定し、
前記第２判定手段は、前記内燃機関が有する複数の気筒のうち所定気筒の前記燃料噴射調整量が所定範囲の上限又は下限に達しており、かつ前記所定気筒の前記燃料噴射調整量と前記所定気筒以外の他の気筒の前記燃料噴射調整量との差分が所定値以上であるときに空燃比インバランス異常が発生していると判定することを特徴とする。
【発明の効果】
【０００７】
所定燃焼質量割合が得られる時の所定クランク角度だけでなく点火時期を用いて、点火時期から当該所定クランク角度までの期間として特定したクランク角期間およびその相関値は、リーン領域を含めて空燃比と高い相関を有するパラメータである。そのパラメータを用いたフィードバック制御中に算出される燃料噴射調整量を利用することにより、リーン運転時にも精度よく空燃比インバランス異常および共通供給系異常の少なくとも一方を検出することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施の形態における内燃機関のシステム構成を説明するための図である。
【図２】点火時期と燃焼質量割合の波形とを表した図である。
【図３】ＮＯｘ排出量、燃費、トルク変動およびＳＡ−ＣＡ１０のそれぞれと空燃比（Ａ／Ｆ）との関係を表した図である。
【図４】本発明の実施の形態に係るＳＡ−ＣＡ１０を利用した燃料噴射量のフィードバック制御の概要を説明するためのブロック図である。
【図５】本発明の実施の形態において実行されるルーチンのフローチャートである。
【図６】本発明の実施の形態にかかる検出用データ取得ルーチンのフローチャートである。
【図７】本発明の実施の形態にかかる他の検出用データ取得ルーチンのフローチャートである。
【図８】本発明の実施の形態にかかる他の検出用データ取得ルーチンのフローチャートである。
【図９】本発明の実施の形態にかかるＡ／Ｆインバランス異常検出ルーチンのフローチャートである。
【図１０】本発明の実施の形態にかかる共通供給系異常検出ルーチンのフローチャートである。
【発明を実施するための形態】
【０００９】
［実施の形態のシステム構成］
図１は、本発明の実施の形態における内燃機関１０のシステム構成を説明するための図である。図１に示すシステムは、火花点火式の内燃機関１０を備えている。図１では便宜上１つの気筒のみを図示しているが、実際には内燃機関１０は複数の気筒を備えており、一例として４つの気筒を備えていても良い。内燃機関１０の筒内には、ピストン１２が設けられている。筒内におけるピストン１２の頂部側には、燃焼室１４が形成されている。燃焼室１４には、吸気通路１６および排気通路１８が連通している。
【００１０】
吸気通路１６の吸気ポートには、当該吸気ポートを開閉する吸気弁２０が設けられており、排気通路１８の排気ポートには、当該排気ポートを開閉する排気弁２２が設けられている。また、吸気通路１６には、電子制御式のスロットルバルブ２４が設けられている。
【００１１】
内燃機関１０の各気筒には、燃焼室１４内（筒内）に直接燃料を噴射するための燃料噴射弁２６、および、混合気に点火するための点火プラグ２８が、それぞれ設けられている。さらに、各気筒には、筒内圧力を検出するための筒内圧センサ３０が組み込まれている。なお、図示しないが、内燃機関１０が備える構成のうち、各気筒に燃料および空気を供給するために複数の気筒で共通に使用される構成を、便宜上「共通供給系」とも称す。「共通供給系」は、具体的にはフューエルポンプ、燃圧センサ、デリバリ、燃料配管、スロットルバルブ２４、及びエアフロメータ４４を含んでいる。従って、この「共通供給系」には、気筒毎に設けられた部品、具体的には気筒ごとに設けられた燃料噴射弁などは含まない。また、「共通供給系」のうち、特に燃料に関するものを「共通燃料供給系」とも称す。「共通燃料供給系」は、図示しないフューエルポンプ、燃圧センサ、デリバリ、および燃料配管を含む。共通燃料供給系は、複数の気筒の間で共通に設けられており、末端で各気筒の燃料噴射弁２６に接続する。
【００１２】
さらに、本実施形態のシステムは、ＥＣＵ(Electronic Control Unit)４０を備えている。ＥＣＵ４０の入力部には、上述した筒内圧センサ３０に加え、エンジン回転速度を取得するためのクランク角センサ４２、および、吸入空気量を計測するためのエアフローメータ４４等の内燃機関１０の運転状態を取得するための各種センサが接続されている。また、ＥＣＵ４０の出力部には、上述したスロットルバルブ２４、燃料噴射弁２６および点火プラグ２８等の内燃機関１０の運転を制御するための各種アクチュエータが接続されている。ＥＣＵ４０は、それらのセンサ出力と所定のプログラムとに基づいて上記各種のアクチュエータを駆動することにより、燃料噴射制御および点火制御等の所定のエンジン制御を行うものである。また、ＥＣＵ４０は、筒内圧センサ３０の出力信号を、クランク角度と同期させてＡＤ変換して取得する機能を有している。これにより、ＡＤ変換の分解能が許す範囲で、任意のクランク角タイミングにおける筒内圧力を検出することができる。さらに、ＥＣＵ４０は、クランク角度の位置によって決まる筒内容積の値を、クランク角度に応じて算出する機能を有している。
【００１３】
［実施の形態の制御］
（点火時期と燃焼質量割合）
図２は、点火時期と燃焼質量割合の波形とを表した図である。筒内圧センサ３０とクランク角センサ４２とを備える本実施形態のシステムによれば、内燃機関１０の各サイクルにおいて、クランク角度（ＣＡ）ベースで筒内圧データ（筒内圧波形）を取得することができる。そして、公知の手法で絶対圧補正を行った後の筒内圧波形を用いて、図２に示すような波形となる燃焼質量割合（以下、「ＭＦＢ」と称する）を算出することができる。より具体的には、筒内圧データを用いて、任意のクランク角度θでの筒内の発熱量Ｑを次の（１）式にしたがって算出することができる。そして、算出された筒内の発熱量Ｑのデータを用いて、任意のクランク角度θにおけるＭＦＢを次の（２）式にしたがって算出することができる。したがって、この（２）式を利用して、ＭＦＢが所定割合α（％）となる時のクランク角度（以下、「ＣＡα」と称する）を取得することができる。
【数１】
2016098798.tif 000003
ただし、上記（１）式において、Ｐは筒内圧力、Ｖは筒内容積、κは筒内ガスの比熱比である。また、Ｐ０およびＶ０は、計算開始点θ０（想定される燃焼開始点に対して余裕をもって定められた圧縮行程中（ただし、吸気弁２０の閉弁後）の所定クランク角度θ）での筒内圧力および筒内容積である。また、上記（２）式において、θstaは燃焼開始点（ＣＡ０）であり、θfinは燃焼終了点（ＣＡ１００）である。
【００１４】
ここでは、図２を参照して代表的なクランク角度ＣＡαについて説明する。筒内の燃焼は、点火時期にて混合気に点火を行った後に着火遅れを伴って開始する。この燃焼開始点、すなわち、ＭＦＢが立ち上がりを示す点をＣＡ０と称する。ＣＡ０からＭＦＢが１０％となる時のクランク角度ＣＡ１０までのクランク角期間（ＣＡ０−ＣＡ１０）が初期燃焼期間に相当し、ＣＡ１０からＭＦＢが９０％となる時のクランク角度ＣＡ９０までのクランク角期間（ＣＡ１０−ＣＡ９０）が主燃焼期間に相当する。また、ＭＦＢが５０％となる時のクランク角度ＣＡ５０が燃焼重心位置に相当する。
【００１５】
（ＳＡ−ＣＡ１０を用いたリーンリミット制御）
図３は、ＮＯｘ排出量、燃費、トルク変動およびＳＡ−ＣＡ１０のそれぞれと空燃比（Ａ／Ｆ）との関係を表した図である。内燃機関の低燃費技術としては、理論空燃比よりも希薄な空燃比にて行うリーンバーン運転が有効である。図３（Ａ）、（Ｂ）に示すように、空燃比がリーンになるほど、燃費が良くなり、ＮＯｘ排出量が減少する。ただし、空燃比をリーンにし過ぎると、燃焼が悪化することで、燃費が悪化する。その一方で、トルク変動は、図３（Ｃ）に示すように、空燃比がリーンになるにつれて徐々に大きくなり、空燃比がある値を超えてリーンになると急激に大きくなる。ここでいうトルク変動とは、時系列のトルク値に対する変動値のことである。さらに具体的には、時系列のトルク値に対して特定の周波数帯のフィルタ処理を実施し、当該フィルタ処理後の時系列のトルク値の振幅、標準偏差、あるいは絶対値の平均値として得られるものである。以下、混合気の希薄燃焼限界の空燃比、より具体的には、内燃機関１０のドライバビリティの観点で限界となる閾値にトルク変動値が達する時の空燃比を、「リーンリミット」と称する。
【００１６】
図３（Ａ）〜（Ｃ）より、低燃費および低ＮＯｘ排出を実現するためには、内燃機関１０の状態を監視し、ドライバビリティが悪化しない範囲内で出来るだけリーンとなるように空燃比を制御すること、すなわち、リーンリミット近傍で空燃比を制御することが好ましいといえる。以下、このような空燃比の制御を「リーンリミット制御」と称する。
【００１７】
従来のリーンリミット制御は、一般的には、トルク（またはトルク相当値）を統計処理することによって運転中のトルク変動を検出し、検出したトルク変動に基づいてリーンリミット近傍で空燃比を制御するというものである。しかしながら、従来の手法では、迅速なリーンリミット制御を実現することができない（そのような空燃比の制御を行えない期間が存在する）。その理由は、トルク変動は統計処理に基づくパラメータであるため、所定の燃焼回数（例えば、１００回）が経過するまで算出することができない。また、定常運転中のエンジントルクの変動に基づく値であるため、各種要因（車両のアクセルペダル操作、および、空気やＥＧＲガスの応答遅れなど）によるトルクの過渡的な変化と切り分けて把握することが困難である。また、制御機会を増やすためには、過渡的な変化を許容する必要があり、そうすると、トルク変動の算出精度が低下する。さらに、上記従来の手法では、内燃機関の振動騒音の悪化を防ぐことができない。その理由は、トルク変動が統計量として扱われるので、突発的に発生する燃焼悪化に対応することができないためである。例えば、１００回の燃焼のうちの９９回が正常で１回だけ燃焼が悪化するような場合には、そのような突発的な燃焼悪化がトルク変動の算出値に現れないが、リーンリミット付近ではそのような燃焼悪化が起こり得る。さらに、上記従来の手法では、全気筒一律の制御以外の態様では行うことが難しい。その理由は、気筒毎ではなく全体としてのエンジン発生トルクを扱うものであるためである。仮に気筒毎の燃焼トルクを用いてトルク変動を算出しようとすると、最初に説明した課題がより顕著となる。すなわち、全気筒一律で行う場合には統計処理によってトルク変動を算出するために必要となる上記所定の燃焼回数が例えば１００回必要だとすると、気筒毎に統計処理を行う場合には１００回に気筒数を掛けた回数の燃焼が必要となる。このため、気筒毎にトルク変動を算出しようとすると、全気筒一律で行う場合と比べて、トルク変動の算出に要する時間が気筒数に応じて倍増する。
【００１８】
以上のように、統計処理に基づくトルク変動を利用する手法では、時間がかかり、過渡運転においては成立しないため、実用性が低いといえる。そこで、本実施形態では、このような課題を解決して統計処理に依らない手法でのリーンリミット制御手法として、点火時期（ＳＡ）から１０％燃焼点であるＣＡ１０までのクランク角期間（ＳＡ−ＣＡ１０）に基づく燃料噴射量のフィードバック制御を気筒別に行うこととした。
【００１９】
ここで、本実施形態のリーンリミット制御のパラメータとしてＳＡ−ＣＡ１０を用いる利点について説明する。ＳＡ−ＣＡ１０は、着火遅れを代表するパラメータである。図３（Ｄ）に示すように、ＳＡ−ＣＡ１０は、空燃比との相関性が高く、リーンリミット付近においても空燃比に対して線形性を良好に保持している。このため、ＳＡ−ＣＡ１０の利用によって、リーンリミット近傍に空燃比をフィードバック制御し易くなる。
【００２０】
また、ＳＡ−ＣＡ１０は、次のような理由により、空燃比自体よりもリーンリミットの代表性が高いといえる。すなわち、リーンリミットとなる空燃比は運転条件（例えば、エンジン水温の高低）により変化するが、ＳＡ−ＣＡ１０は空燃比よりも運転条件に応じて変化しにくいことが実験によって確認されている。言い換えると、リーンリミットとなる空燃比は混合気の着火要因に依るところが大きいため、着火遅れを代表するＳＡ−ＣＡ１０の方が空燃比自体よりも運転条件等による影響を受けにくいといえる。ただし、エンジン回転速度が変わると、１クランク角度当たりの時間が変化するため、ＳＡ−ＣＡ１０の目標値である目標ＳＡ−ＣＡ１０は、エンジン回転速度に応じて設定されていることが好ましい。より好適には、ＳＡ−ＣＡ１０はエンジン負荷率によっても変化するため、目標ＳＡ−ＣＡ１０は、エンジン回転速度に代え、或いはそれとともに、エンジン負荷率に応じて設定されていると良い。
【００２１】
次に、本実施形態のリーンリミット制御の指標としてのクランク角期間を点火時期との間で特定するために用いる燃焼点（ＭＦＢが所定燃焼質量割合となる時の所定クランク角度）として、ＣＡ１０が他の燃焼点と比べて好ましい理由について説明する。上記所定クランク角度としては、ＣＡ１０に限らず、他の任意の燃焼点を用いることができる。そして、他の任意の燃焼点の利用時であっても、得られるクランク角期間は、上述した空燃比との相関性の高さおよびリーンリミットの代表性の高さという利点を基本的に有しているといえる。しかしながら、ＣＡ１０よりも後の主燃焼期間（ＣＡ１０−ＣＡ９０）内の燃焼点を利用した場合には、得られるクランク角期間は、火炎が燃え広がる時に燃焼に影響するパラメータ（ＥＧＲ率、吸気温度およびタンブル比など）の影響を大きく受けてしまう。つまり、この場合に得られるクランク角期間は、純粋に空燃比に着目したものではなく、外乱に弱くなる。このような外乱の影響を排除するために、クランク角期間を上記パラメータに応じて補正する構成とすることは、適合工数の増加となる。これに対し、初期燃焼期間（ＣＡ０−ＣＡ１０）内の燃焼点を利用した場合には、得られるクランク角期間は、上記パラメータの影響を受けにくく、着火に影響する因子の影響が良く表れたものとなる。その結果、制御性が良くなる。その一方で、燃焼開始点（ＣＡ０）や燃焼終了点（ＣＡ１００）は、ＥＣＵ４０が取得する筒内圧センサ３０からの出力信号に重畳するノイズの影響によって誤差が生じ易い。このノイズの影響は、燃焼開始点（ＣＡ０）や燃焼終了点（ＣＡ１００）から離れるにつれて小さくなる。したがって、耐ノイズ性と適合工数の削減（適合レスポテンシャル）とを考慮すると、本実施形態で用いるように、上記所定クランク角度としてはＣＡ１０が最も優れているといえる。
【００２２】
（実施の形態のフィードバック制御の概要）
図４は、本発明の実施の形態に係るＳＡ−ＣＡ１０を利用した燃料噴射量のフィードバック制御の概要を説明するためのブロック図である。本実施形態のリーンリミット制御に相当する制御であるＳＡ−ＣＡ１０を利用したフィードバック制御は、リーンリミット付近の所定の目標ＳＡ−ＣＡ１０と、実ＳＡ−ＣＡ１０との差に基づいて（より具体的には、当該差がゼロとなるように）燃料噴射量を調整するというものである。
【００２３】
このフィードバック制御では、図４に示すように、エンジン運転状態（具体的には、エンジン回転速度およびエンジン負荷率）に応じた目標ＳＡ−ＣＡ１０が設定される。ここでいう実ＳＡ−ＣＡ１０とは、点火時期から、筒内圧センサ（ＣＰＳ）３０とクランク角センサ４２とを利用して得られる筒内圧データの解析結果から求められたＣＡ１０までのクランク角期間として算出される値である。実ＳＡ−ＣＡ１０は、各気筒においてサイクル毎に算出される。
【００２４】
このフィードバック制御では、目標ＳＡ−ＣＡ１０と実ＳＡ−ＣＡ１０との差が無くなるように燃料噴射量を調整するために、一例としてＰＩ制御が使用されている。このＰＩ制御では、目標ＳＡ−ＣＡ１０と実ＳＡ−ＣＡ１０との差と所定のＰＩゲイン（比例項ゲインと積分項ゲイン）とを用いて、当該差およびその積算値の大きさに応じた燃料噴射量補正率が算出される。そして、気筒毎に算出される燃料噴射量補正率が、対象となる気筒の燃料噴射量に反映される。これにより、内燃機関（ＥＮＧ）１０の各気筒に供給される燃料噴射量が上記フィードバック制御によって調整（補正）されることになる。
【００２５】
（実施の形態における具体的処理）
図５は、本発明の実施の形態に係るＳＡ−ＣＡ１０を利用したリーンリミット制御を実現するために、ＥＣＵ４０が実行する制御ルーチンを示すフローチャートである。なお、本ルーチンは、各気筒において燃焼終了後の所定タイミングにて、サイクル毎に繰り返し実行されるものとする。
【００２６】
図５に示すルーチンでは、ＥＣＵ４０は、先ず、リーンバーン運転中であるか否かを判定する（ステップ１００）。内燃機関１０では、所定の運転領域において理論空燃比よりもリーンな空燃比でのリーンバーン運転が行われるようになっている。ここでは、そのようなリーンバーン運転を行う運転領域に該当するか否かが判定される。
【００２７】
ステップ１００においてリーンバーン運転中であると判定した場合には、クランク角センサ４２とエアフローメータ４４とを用いて、エンジン回転速度およびエンジン負荷率を取得する（ステップ１０２）。エンジン負荷率は、エンジン回転速度と吸入空気量とに基づいて算出することができる。
【００２８】
次に、ＥＣＵ４０は、目標ＳＡ−ＣＡ１０を算出する（ステップ１０４）。ＥＣＵ４０は、実験等の結果に基づいてエンジン回転速度およびエンジン負荷率との関係で目標ＳＡ−ＣＡ１０を予め定めたマップ（図示省略）を記憶している。本ステップ１０４では、そのようなマップを参照して、ステップ１０２において取得したエンジン回転速度およびエンジン負荷率に基づいて目標ＳＡ−ＣＡ１０が取得される。
【００２９】
次に、ＥＣＵ４０は、筒内圧センサ３０とクランク角センサ４２とを利用して燃焼時に計測された筒内圧データを取得する（ステップ１０６）。次いで、ＥＣＵ４０は、点火時期を取得する（ステップ１０８）。ＥＣＵ４０は、エンジン負荷率とエンジン回転速度との関係で目標（要求）点火時期（基本的には、最適点火時期（以下、「ＭＢＴ」と称する））を定めたマップ（図示省略）を記憶しており、本ステップ１０８では、そのようなマップを参照して点火時期を取得する。
【００３０】
次に、ＥＣＵ４０は、実ＳＡ−ＣＡ１０を算出する（ステップ１１０）。実ＳＡ−ＣＡ１０は、ステップ１０８において取得した点火時期から、ステップ１０６において取得した筒内圧データの解析結果として得られるＣＡ１０までのクランク角期間として算出される。このような手法で取得される実ＳＡ−ＣＡ１０は、所定のばらつき（必然的に発生する燃焼変動分）を含むため、生値を使用してもよいが、そうすると後述の燃料噴射量の補正量が安定しなくなる。そこで、ここでは、実ＳＡ−ＣＡ１０に所定のなまし処理を実施することによって燃焼変動分を除去した後の値が燃料噴射量のフィードバック制御に使用される。このようななまし処理としては、例えば、今回の算出値を含む直近の所定数の実ＳＡ−ＣＡ１０の算出値の時系列の移動平均をとる手法を用いることができる。なお、このようななまし処理に代え、想定される燃焼変動分に起因する実ＳＡ−ＣＡ１０の算出値のばらつき幅相当を制御の不感帯として設定するようにしてもよい。すなわち、後述の目標ＳＡ−ＣＡ１０と実ＳＡ−ＣＡ１０との差が上記ばらつき幅相当以下である場合には、燃料噴射量の補正を行わないようにしてもよい。
【００３１】
次に、ＥＣＵ４０は、ステップ１０４および１１０において算出した目標ＳＡ−ＣＡ１０と実ＳＡ−ＣＡ１０との差を算出する（ステップ１１２）。ＥＣＵ４０は、次いで、算出された差と所定のＰＩゲイン（比例項ゲインと積分項ゲイン）とを用いて、当該差およびその積算値の大きさに応じた燃料噴射量補正率を算出する（ステップ１１４）。そのうえで、ＥＣＵ４０は、算出した燃料噴射量補正率に基づいて、次のサイクルで使用する燃料噴射量を補正する（ステップ１１６）。具体的には、例えば、目標ＳＡ−ＣＡ１０よりも実ＳＡ−ＣＡ１０が大きい場合には、図３（Ｄ）に示す関係より、空燃比が狙い値よりもリーン側にずれていることに相当するため、空燃比をリッチ補正するために燃料噴射量が燃料噴射量のベース値に対して増やされることになる。
【００３２】
以上説明した図５に示すルーチンによれば、目標ＳＡ−ＣＡ１０と実ＳＡ−ＣＡ１０との差が無くなるように燃料噴射量のフィードバック制御が実行される。既述したように、ＳＡ−ＣＡ１０はリーンリミット付近においても空燃比に対して線形性を有している。本実施形態の手法とは異なり、所定燃焼質量割合が得られる時の所定クランク角度のみを用いて当該所定クランク角度がある目標値となるように燃料噴射量を調整することとした場合には、次のような問題がある。すなわち、点火時期が変化すると、それに伴い、所定燃焼質量割合が得られる時の所定クランク角度が変化する。これに対し、点火時期が変化しても、点火時期から上記所定クランク角度になるまでのクランク角期間はほとんど変化しない。このため、燃料噴射量の調整のための指標として上記クランク角期間（本実施形態では、ＳＡ−ＣＡ１０）を用いることで、上記所定クランク角度のみを用いる場合と比べ、点火時期の影響を排除して空燃比との相関性を好適に把握できるようになる。また、リーンバーン運転時や大量のＥＧＲガスを導入して行うＥＧＲ運転時などの緻密な燃焼制御を必要とする運転時においては、現状の空燃比センサによる空燃比制御では、リーンリミット近傍で空燃比を正確に制御することは難しいという問題もある。したがって、本実施形態の手法によって目標ＳＡ−ＣＡ１０と実ＳＡ−ＣＡ１０との差に基づいて燃料噴射量を調整することで、リーンバーン運転時に空燃比をリーンリミット近傍に好適に制御できるようになる。
【００３３】
また、本実施形態の手法は、既述した従来の手法のように統計処理を用いたものではないため、本手法によれば、迅速なフィードバック制御が実施可能となる。このため、過渡運転時にも良好に適用可能である。したがって、本手法によれば、幅広い運転条件において、リーンリミット制御が実現可能であり、その結果、燃費性能および排気エミッション性能を引き出せるようになる。また、気筒毎の制御も行えるようになる。
【００３４】
また、本実施形態の手法によれば、エンジン回転速度およびエンジン負荷率のそれぞれに基づいて目標ＳＡ−ＣＡ１０が設定される。これにより、これらのエンジン回転速度およびエンジン負荷率の変化の影響を考慮して、目標ＳＡ−ＣＡ１０を適切に設定できるようになる。
【００３５】
ところで、上述した実施の形態においては、ＳＡ−ＣＡ１０を利用した燃料噴射量のフィードバック制御について説明を行った。しかしながら、本発明は、ＳＡ−ＣＡ１０のように点火時期から所定燃焼質量割合が得られる時の所定クランク角度までのクランク角期間自体を直接的に用いるものに限らず、当該クランク角期間に代えてその相関値を用いるものであってもよい。
【００３６】
また、上述した実施の形態においては、燃焼質量割合（ＭＦＢ）を算出するために、筒内圧センサ３０とクランク角センサ４２とを用いて取得した筒内圧データの解析結果を利用している。しかしながら、本発明における燃焼質量割合の算出は、筒内圧データを利用したものに必ずしも限定されるものではない。すなわち、燃料質量割合は、例えば、燃焼に伴って発生するイオン電流をイオンセンサによって検出し、検出したイオン電流を利用して算出されるものであってもよいし、或いは、筒内温度を計測できる場合には、筒内温度の履歴を利用して算出されるものであってもよい。
【００３７】
また、上述した実施の形態においては、筒内の混合気の空燃比をリーンリミット付近に制御するリーンバーン運転を例に挙げて説明を行った。しかしながら、本発明の対象となる運転で用いられる空燃比は、理論空燃比よりもリーンな空燃比に必ずしも限られるものではなく、理論空燃比もしくは理論空燃比よりもリッチな空燃比であってもよい。
【００３８】
［実施の形態の異常検出ルーチン］
以下、図６〜図１０を用いて、本発明の実施の形態にかかる異常検出ルーチンを説明する。図６〜図８は、それぞれ、異常検出に使用するデータを取得するためのルーチンを示す。図６〜図８に示すルーチンは、気筒ごとに独立に繰り返し実行されており、気筒数分だけ並列に実行される。図９は、本発明の実施の形態にかかるＡ／Ｆインバランス異常検出ルーチンのフローチャートである。図１０は、本発明の実施の形態にかかる燃料系異常検出ルーチンのフローチャートである。
【００３９】
図６〜図１０のルーチンにおいて用いられる添え字ｉは現在のサイクル番号を示す識別番号であり、添え字ｊは気筒番号である。例えば１００００サイクル目における２番気筒についての計算結果を記憶する値にはｉ＝１００００かつｊ＝２が添え字として用いられ、これが識別番号の役割を果たす。
【００４０】
図６は、本発明の実施の形態にかかる検出用データ取得ルーチンのフローチャートである。１〜４番気筒ごとに、燃焼サイクルを迎えるたびに図６に示すルーチンが複数個独立して繰り返し実施される。好ましい形態としては気筒ごとにＡＴＤＣ１５０°ＣＡにおいて図６のルーチンが開始されてもよく、これにより燃焼行程後において発熱が止んだ好適なタイミングで計算を開始することができる。
【００４１】
図６のルーチンでは、まず、ステップ２００において、ＥＣＵ４０が、リーン空燃比でのフィードバック制御を行っているか否かが判定される。リーン空燃比でのフィードバック制御を行っていない場合には、今回のルーチンが終了する。
【００４２】
リーン空燃比でのフィードバック制御が行われている場合には、処理はステップ２０２に進む。ステップ２０２では、ＥＣＵ４０は、ＦＦｉｊにｉ回目のサイクルにおけるｊ番気筒の燃料噴射量補正率の値を記憶する処理を実行する。具体的には、例えば２番気筒について計算しており、１００００回目の２番気筒の燃焼サイクル後におけるステップ２０２の実行タイミングである場合は、１００００サイクル目における２番気筒で使用された燃料噴射量補正率が、ＦＦ１００００２に記憶される。
【００４３】
次に、ＥＣＵ４０は、ステップ２０４、２０６、２０８において「補正率張付サイクル回数」の検出を行うための処理を実行する。「補正率張付サイクル回数」とは、燃料噴射量補正率が所定範囲の「上限」に固定されたまま複数の燃焼サイクルが連続した場合、あるいは燃料噴射量補正率が所定範囲の「下限」に固定されたまま複数の燃焼サイクルが連続した場合における、その連続した回数である。所定範囲は、フィードバック制御において燃料噴射量補正率を増減する範囲である。この所定範囲を、「フィードバック制御幅」とも称す。フィードバック制御幅は、例えば０．６〜１．４などの範囲に予め定められている。フィードバック制御幅の上限値よりも大きな値あるいは下限値よりも小さな値に燃料噴射量補正率を設定することはできない。燃料噴射量補正率が最大値あるいは最小値に計算されているときには、フィードバック制御幅の上限値あるいは下限値に燃料噴射量補正率が固定される状態、いわば燃料噴射量補正率が上限値あるいは下限値に張り付く状態となる。この張り付きが連続した回数を意味するのが、「補正率張付サイクル回数」である。
【００４４】
具体的には、まず、ＥＣＵ４０は、ステップ２０４において、｜ＦＦｉｊ−１｜の値が所定値Ａ以上であるか否かを判定する処理を実行する。本実施の形態では、所定値Ａを０．４と定めておく。例えば、ｉ回目の燃焼サイクルにおけるｊ番気筒についての燃料噴射量補正率であるＦＦｉｊが０．９であった場合には、｜０．９−１｜＝０．１と算出され、この値は所定値Ａ＝０．４よりも小さいので、ステップ２０４の判定結果は否定（Ｎｏ）となる。一方、ＦＦｉｊが０．６であった場合には、｜０．６−１｜＝０．４と算出され、この値は所定値Ａ＝０．４と一致し、ステップ２０４の判定結果は肯定（Ｙｅｓ）となる。
【００４５】
ステップ２０４の判定結果が肯定（Ｙｅｓ）であった場合には、カウンタ値Ｃｆｆがインクリメントされる。つまり、前回のサイクルｉ−１におけるカウンタ値Ｃｆｆｉ−１ｊに、１が加算される。これにより、気筒ごとに、フィードバック制御による燃料噴射量補正率が所定範囲の上限または下限を保持し続けているサイクルの連続回数がカウンタ値Ｃｆｆで計数されていく。一方、ステップ２０４の判定結果が否定（Ｎｏ）であった場合には、処理はステップ２０８に進み、カウンタ値Ｃｆｆにゼロが記憶される。これにより、燃料噴射補正率が所定範囲（フィードバック制御幅）の上限より小さくかつ下限より大きい中間的な値を取った場合には、その時点でカウンタ値をリセットすることができる。
【００４６】
次に、ステップ２１０において、ＥＣＵ４０は、燃料噴射量補正率の平均値である補正率平均値Ａｖｆｆ３０ｉおよびＡｖｆｆ２００ｉを計算する処理を実行する。本実施の形態では、２つの補正率平均値を計算する。補正率平均値Ａｖｆｆ３０ｉは、ｉ番目のサイクル以前の３０サイクル分のＦＦｉｊを移動平均した値である。補正率平均値Ａｖｆｆ２００ｉは、ｉ番目のサイクル以前の２００サイクル分のＦＦｉｊを移動平均した値である。その後、今回のルーチンが終了する。
【００４７】
以上の処理によれば、各気筒それぞれについて、現在のサイクル（ｉ番目のサイクル）以前における３０サイクルおよび２００サイクル分の移動平均値である、補正率平均値Ａｖｆｆ３０ｉおよびＡｖｆｆ２００ｉを算出することができる。
【００４８】
図７は、本発明の実施の形態にかかる他の検出用データ取得ルーチンのフローチャートである。図７のルーチンは、ステップ２２０〜２３２の一連の処理を、図６のステップ２１０の処理と置換したものである。
【００４９】
図７のルーチンは、図６のステップ２０６あるいは２０８に引き続いて実行される。まず、ステップ２２０で、ＥＣＵ４０が、変数Ａｆｆ３０、Ａｆｆ２００それぞれの値を更新し（すなわち、前回の値に、今回の燃料噴射量補正率の値を加算し）、カウンタ値Ｃａｖｆｆ３０、Ｃａｖｆｆ２００をそれぞれインクリメントする処理を実行する。
【００５０】
次に、ＥＣＵ４０は、ステップ２２２において、カウンタ値Ｃａｖｆｆ３０が３０であるか否かを判定する。カウンタ値Ｃａｖｆｆ３０が３０である場合には、処理はステップ２２４に進み変数Ａｆｆ３０を３０で割った値が補正率平均値Ａｖｆｆ３０に記憶される。続くステップ２２６において、変数Ａｆｆおよびカウンタ値Ｃａｖｆｆ３０にゼロが記憶される。その後今回の処理が終了する。
【００５１】
ステップ２２２においてカウンタ値Ｃａｖｆｆ３０が３０ではない場合には、処理はステップ２２８に進む。ＥＣＵ４０は、ステップ２２８において、カウンタ値Ｃａｖｆｆ２００が２００であるか否かを判定する。カウンタ値Ｃａｖｆｆ２００が２００である場合には、処理はステップ２３０に進み変数Ａｆｆ２００を２００で割った値が補正率平均値Ａｖｆｆ２００に記憶される。続くステップ２３２において、変数Ａｆｆおよびカウンタ値Ｃａｖｆｆ３０にゼロが記憶される。その後、今回のルーチンが終了する。
【００５２】
以上の処理によれば、各気筒それぞれについて、補正率平均値Ａｖｆｆ３０ｉおよびＡｖｆｆ２００ｉを算出することができる。
【００５３】
図８は、本発明の実施の形態にかかる他の検出用データ取得ルーチンのフローチャートである。図８のルーチンは、ステップ２４２および２４４の処理を除き、図６に示したルーチンと同じ処理を含んでいる。図８のルーチンは、図６および図７で説明したデータ取得ルーチンに加えて、後述する「補正率ガード超過量」を評価する処理も含んでいる。
【００５４】
図８のルーチンでは、ステップ２００の判定結果が肯定であった場合には、ＥＣＵ４０が、ＦＦＴｉｊのデータおよびＦＦｉｊのデータをそれぞれ取得する。
【００５５】
まずＦＦＴｉｊのデータ取得について説明すると、これはサイクルごと、気筒ごとに、目標燃料噴射量補正率の値を取得する作業である。目標ＳＡ−ＣＡ１０と実ＳＡ−ＣＡ１０との差に基づいて燃料噴射量を調整するために、図５のルーチンにおけるステップ１１４において燃料噴射量補正率の目標値が算出されている。この算出された目標燃料噴射量補正率がＦＦＴｉｊに記憶される。
【００５６】
その一方で、ＥＣＵ４０は、ＦＦｉｊのデータも取得する。ＦＦｉｊには、「補正率ガード」が設けられている状況下において、現実に使用される燃料噴射量補正率の値が記憶される。補正率ガードは、燃料噴射量補正率の数値範囲に、一定の制限を設けるものである。この補正率ガードは、目標燃料噴射量補正率の計算における上限と下限（すなわちフィードバック制御幅の上限と下限）とは別に、現実に取りうる燃料噴射量補正率の上限および下限を制限している。実施の形態においては、一例として、制御の安全性等の観点から、燃料噴射量補正率の幅を０．７〜１．３に制限する。例えば、サイクル１００００において１番気筒について目標燃料噴射量補正率が１．４と算出された場合に、ＦＦＴ１００００１には１．４が記憶される。その一方で、実際に使用される燃料噴射量補正率は補正率ガードの上限値である１．３となるので、ＦＦ１００００１には１．３が記憶される。
【００５７】
次に、ＥＣＵ４０は、ステップ２４３において燃料噴射量補正率の「張り付き状態」を検出するための処理を実行し、これは図６および図７のステップ２０４の処理と同様の内容である。ただし、ステップ２４３では｜ＦＦｉｊ−１｜が所定値Ａ２以上か否かを比較している。この比較する所定値Ａ２は、補正率ガードの上限および下限から決まる値であり、補正率ガードが０．７〜１．３である場合には０．３である。
【００５８】
次に、ＥＣＵ４０は、ステップ２４４において「補正率ガード超過量」を計算する。ステップ２４４では、ＥＣＵ４０は、具体的には、｜ＦＦＴｉｊ−ＦＦｉｊ｜の値が所定値ＡＡ以上であるか否かを判定する処理を実行する。｜ＦＦＴｉｊ−ＦＦｉｊ｜は、目標燃料噴射量補正率と現実の燃料噴射量補正率との差分であり、便宜上「補正率ガード超過量」とも称す。補正率ガード超過量は、目標燃料噴射量補正率が補正率ガードから超過していた場合に、その超過がどの程度大きいかを表す。例えば、ＦＦＴｉｊ＝１．４でありＦＦｉｊ＝１．３であるときには、｜ＦＦＴｉｊ−ＦＦｉｊ｜＝０．１である。ただし、目標燃料噴射量補正率が補正率ガードの上限と下限の範囲内に収まっている場合には、補正率ガード超過量はゼロとなる。具体的には、ＦＦＴｉｊ＝１．１である場合にはＦＦｉｊ＝１．１となり、｜ＦＦＴｉｊ−ＦＦｉｊ｜＝０である。
【００５９】
ステップ２４３およびステップ２４４の両方において判定結果が肯定であった場合には、処理はステップ２０６に進み、カウンタ値Ｃｆｆｉｊがインクリメントされる。処理がステップ２０６に進むのは、現在の燃料噴射量補正率ＦＦｉｊが補正率ガードに達しており、かつ目標燃料噴射量補正率ＦＦＴｉｊと現在の燃料噴射量補正率ＦＦｉｊとが所定値ＡＡ（一例として０．１）以上乖離している状態である。
【００６０】
補正率ガードの幅は、負荷およびエンジン回転速度その他の諸条件に応じて可変に設定することが好ましい。補正率ガードの幅が十分に狭く設定されている場合には、補正率ガードの上限あるいは下限に燃料噴射量補正率が張り付く状態が発生しやすい。この場合には、現実の燃料噴射量補正率が張り付き状態であるか否かという基準のみでは、気筒間のＡ／Ｆインバランス異常を正確に検出することはできない。そこで、図８のルーチンでは、燃料噴射量補正率の張り付き状態を検出することに加えて、補正率ガード超過量と所定値ＡＡとの比較を行うようにしている。補正率ガード超過量と所定値ＡＡとの比較によれば、現実の燃料噴射量補正率の値とは別に、フィードバック制御の目標燃料噴射量補正率が実際にはどの程度大きく算出されているのか、つまり仮に補正率ガードが無いとしたとき本来は燃料噴射量をどの程度大きく変更すべきなのかを評価することができる。張り付き状態および目標燃料噴射量補正率の両方を根拠とすることによって、補正率ガードが設定される状況下においても、気筒間のＡ／Ｆインバランス異常を精度良く検出することができる。
【００６１】
その後、図６および図７のルーチンと同様に、補正率平均値を計算するステップ２１０が実行される。その結果、各気筒それぞれについて、補正率平均値Ａｖｆｆ３０ｉおよびＡｖｆｆ２００ｉを算出することができる。
【００６２】
図９を用いて実施の形態にかかるＡ／Ｆインバランス異常検出ルーチンを説明する。図９のルーチンは、全気筒でそれぞれ燃焼サイクルが終了するごとに実施され、例えば１番気筒が上死点を迎えるごとに実行されるものとする。
【００６３】
図９のルーチンでは、まず、ステップ３００において、ＥＣＵ４０が、Ａ／Ｆインバランス異常検出を実行する条件が満たされているか否かを判定する処理を実行する。本実施の形態では、一例として、エンジン回転速度が１６００ｒｐｍ〜２４００ｒｐｍの範囲内にあり、かつ負荷ＫＬが５０％〜９０％の範囲内であるか否かが判定される。この条件が成立してない場合には、今回のルーチンが終了する。
【００６４】
ステップ３００の条件が成立している場合には、処理はステップ３０２に進む。ステップ３０２では、ＥＣＵ４０が、気筒インデックスｊに１を設定する。本実施の形態では、内燃機関１０が４気筒であり、１、２、３、４の気筒順で処理が進むものとする。
【００６５】
次に処理はステップ３０４に進み、ＥＣＵ４０は、図６のステップ２０６でカウントされたカウンタ値Ｃｆｆｉｊが所定値Ｂ以上であるか否かを判定する処理を実行する。カウンタ値Ｃｆｆｉｊは、フィードバック制御による燃料噴射量補正率が所定範囲の上限または下限を保持し続けているサイクルの連続回数である。例えば１００００サイクル目における１番気筒のカウンタ値Ｃｆｆ１００００１が予め定めた回数（つまり所定値Ｂ）に達した場合には、１００００サイクル目の時点で１番気筒においてＡ／Ｆインバランス異常が発生している可能性が高い。そこで、ステップ３０４の判定結果が肯定であった場合には、ステップ３０６で仮検出フラグＦｉｍｂｊに１がセットされる。一方、ステップ３０４の判定結果が否定であった場合には、ステップ３０８で仮検出フラグＦｉｍｂｊにゼロが設定される。仮検出フラグＦｉｍｂｊは、Ａ／Ｆインバランス異常の可能性が大きいことを示すフラグである。
【００６６】
ステップ３０６で仮検出フラグに１が設定された場合には、続いてステップ３１０において、ＥＣＵ４０は、補正率気筒間差Ｄａｖｊｊを計算する処理を実行する。補正率気筒間差Ｄａｖｊｊは、内燃機関１０が有する複数の気筒から選択した２つの気筒の燃料噴射量補正率の差を計算したものである。なお、添え字ｊｊは、差を計算した２つの気筒を示すインデックスとして用いられる。たとえば１番気筒と２番気筒との間で燃料噴射量補正率の差を計算した場合にはその補正率気筒間差がＤａｖ１２に記憶され、２番気筒と３番気筒との間で燃料噴射量補正率の差を計算した場合にはその補正率気筒間差がＤａｖ２３に記憶される。本実施の形態では、ステップ２１０で計算したＡｖｆｆ３０ｉとＡｖｆｆ２００ｉのいずれか一方を使用して、複数の気筒の間で燃料噴射量補正率平均値の差を計算するものとする。現時点で気筒インデックスｊは１なので、ＥＣＵ４０は、１番気筒と２〜４番気筒それぞれとの間で補正率気筒間差Ｄａｖ１２、Ｄａｖ１３、Ｄａｖ１４を計算した後、その中の最大値を最大値Ｄａｖｍａｘに設定する。同様に、仮に気筒インデックスｊ＝２であれば、２番気筒と３、４番気筒との間で補正率気筒間差Ｄａｖ２３、Ｄａｖ２４が計算され、現時点での最大値を最大値Ｄａｖｍａｘに設定する。なお、２番気筒と１番気筒との間の補正率気筒間差Ｄａｖ２１は、既に気筒インデックスＪ＝１の時点で１番気筒について計算した補正率気筒間差Ｄａｖ１２と同じ値である。従って、重複した計算を避けるために、Ｄａｖ２１の計算は省略される。同様に、気筒インデックスｊ＝３であれば３番気筒を基準に、気筒インデックスｊ＝４であれば４番気筒を基準に、補正率気筒間差Ｄａｖｊｊおよび最大値Ｄａｖｍａｘが計算される。
【００６７】
次に、ステップ３１２において、ＥＣＵ４０は、最大値Ｄａｖｍａｘが所定値Ｃ以上であるか否かを判定する処理を実行する。最大値Ｄａｖｍａｘが所定値Ｃ以上であるときには、処理がステップ３１４に進む。ステップ３１４では、ＥＣＵ４０は、異常フラグＦｉｍｂにＦｉｍｂｊ（現在は１番気筒が対象なのでｊ＝１でありＦｉｍｂ１）を設定し、さらに処理がステップ３１６に進む。一方、ステップ３１２の判定結果が否定であった場合には、処理はステップ３１２から直接ステップ３１６に進む。
【００６８】
次に、ステップ３１６において、ＥＣＵ４０は、気筒インデックスｊの値が気筒数Ｄ異常であるか否かを判定する処理を実行する。本実施形態では４気筒なのでＤ＝４である。現時点ではｊ＝１なので、ステップ３１６の判定結果は否定となり、処理はステップ３１８に進んで気筒インデックスの値がインクリメントされた後、ステップ３０４以降の処理が再度実行される。ｊ＝２〜４の状態それぞれで上記ステップ３０４〜３１６の処理が実行されることにより、２〜４番気筒についてのＡ／Ｆインバランス異常検出ルーチンが同様に実行される。最終的にｊ＝４の状態でステップ３１６の処理を迎えると、今回のルーチンが終了する。
【００６９】
なお、ここでは説明の簡単のためにＤの値を気筒数と同じとしたが、本発明はこれに限られない。４つの気筒から任意に選択した２つの気筒の組み合わせの全て（１−２番気筒、１−３番気筒、１−４番気筒、２−３番気筒、２−４番気筒、３−４番気筒）について補正率気筒間差を計算するためには、３回のループを行えば足りるので、Ｄ＝３を設定してもよい。
【００７０】
以上説明した図９のルーチンによれば、ＥＣＵ４０が空燃比インバランス異常が発生していると判定する際に、下記の第１条件および第２条件を必要条件とすることができる。第１条件は、内燃機関１０が有する複数の気筒のうち所定気筒の燃料噴射調整量が所定範囲の上限又は下限に達している状態が予め定めた回数（所定値Ｂ）だけ連続したことであり、この条件は図６〜図８のルーチンで取得したデータＣｆｆｉｊを用いて図９のルーチンのステップ３０４で判定することができる。第２条件は、所定気筒の燃料噴射調整量と所定気筒以外の他の気筒の燃料噴射調整量との差分が所定値Ｃ以上であることであり、これは図９のルーチンのステップ３１２で判定することができる。
【００７１】
図１０を用いて、実施の形態にかかる共通供給系異常検出ルーチンを説明する。図１０のルーチンは、全気筒でそれぞれ燃焼サイクルが終了するごとに実施され、例えば１番気筒が上死点を迎えるごとに実行されるものとする。
【００７２】
図１０のルーチンでは、まず、ステップ３０１において、ＥＣＵ４０が、共通供給系異常検出を実行する条件が満たされているか否かを判定する処理を実行する。本実施の形態では、一例として、リーン空燃比でのフィードバック制御実行中であるか否かが判定される。この条件が成立していない場合には、今回のルーチンが終了する。
【００７３】
ステップ３０１の条件が成立している場合には、処理はステップ３０２に進む。ステップ３０２では、ＥＣＵ４０が、気筒インデックスｊに１を設定する。一例として、本実施の形態では、内燃機関１０が４気筒であり１、２、３、４の気筒順で処理が進むものとする。
【００７４】
次に処理はステップ３２０に進み、ＥＣＵ４０は、図６のステップ２０６でカウントされたカウンタ値Ｃｆｆｉｊが所定値Ｅ以上であるか否かを判定する処理を実行する。カウンタ値Ｃｆｆｉｊは、フィードバック制御による燃料噴射量補正率が所定範囲の上限または下限を保持し続けているサイクルの連続回数である。例えば１００００サイクル目における１番気筒のカウンタ値Ｃｆｆ１００００１が予め定めた回数（つまり所定値Ｂ）に達した場合には、１００００サイクル目の時点で１番気筒において共通供給系異常が発生している可能性が高い。そこで、ステップ３２０の判定結果が肯定であった場合には、ステップ３２２で仮検出フラグＦｓｕｐｊに１が設定される。一方、ステップ３２０の判定結果が否定であった場合には、ステップ３２４で仮検出フラグＦｓｕｐｊにゼロが設定される。仮検出フラグＦｓｕｐｊは、共通供給系異常の可能性が大きいことを示すフラグである。
【００７５】
ステップ３２２で仮検出フラグに１が設定された場合には、続いて図９のフローチャートと同様のステップ３１０において、ＥＣＵ４０は、補正率気筒間差Ｄａｖｊｊおよびその最大値Ｄａｖｍａｘを計算する処理を実行する。
【００７６】
次に、ステップ３２６において、ＥＣＵ４０は、最大値Ｄａｖｍａｘが所定値Ｆ以下であるか否かを判定する処理を実行する。最大値Ｄａｖｍａｘが所定値Ｆ以下であるときには、処理がステップ３２８に進む。一方、ステップ３２６の判定結果が否定であった場合には、処理はステップ３２６から直接ステップ３１６に進む。
【００７７】
最大値Ｄａｖｍａｘが所定値Ｆ以下であるということは、複数の気筒の燃料噴射量補正率のバラツキが所定値Ｆで決まる一定の範囲内に収まっている。ステップ３２０の判定結果が肯定され、かつステップ３２６の判定結果も肯定であった場合には、１つの気筒で燃料噴射量補正率が上限または下限の異常値を示し、かつ他の気筒についても平均的に燃料噴射量補正率が上限側または下限側に偏っている。この状態では、燃料噴射に関する異常が全ての気筒について平均的に発生していると結論付けることができる。
【００７８】
そこで、ステップ３２８では、ＥＣＵ４０は、「共通供給系異常」を意味する異常フラグＦｓｕｐに、異常であることを示すＦｓｕｐｊ（現在は１番気筒が対象なのでｊ＝１でありＦｓｕｐ１）を設定し、さらに処理がステップ３１６に進む。「共通供給系」とは、内燃機関１０が備える構成のうち、各気筒に燃料および空気を供給するために複数の気筒で共通に使用される構成である。「共通供給系」は、具体的にはフューエルポンプ、燃圧センサ、デリバリ、燃料配管、スロットルバルブ２４、及びエアフロメータ４４を含んでいる。「共通供給系」には、気筒毎に設けられた部品、具体的には気筒ごとに設けられた燃料噴射弁などは含まない。なお、「共通供給系」のうち、内燃機関１０の複数の気筒に対して燃料を供給する機構の共通部分を、特に「共通燃料供給系」として異常検出対象としてもよい。「共通燃料供給系」は、フューエルポンプ、燃圧センサ、デリバリ、燃料配管を含み、内燃機関１０の複数の気筒に対して燃料を供給する機構の共通部分である。異常フラグＦｓｕｐに代えて、共通燃料供給系についての異常フラグであるＦｆｕｅｌをステップ３２８で使用してもよい。
【００７９】
次に、ステップ３１６において、ＥＣＵ４０は、気筒インデックスｊの値が所定値Ｄ以上であるか否かを判定する処理を実行する。図１０のルーチンでは、４気筒すべての組み合わせについて補正率気筒間差Ｄａｖｊｊを計算するためには、Ｄ＝３を設定しておけばよい。現時点ではｊ＝１なので、ステップ３１６の判定結果は否定となり、処理はステップ３１８に進んで気筒インデックスの値がインクリメントされた後、ステップ３２０以降の処理が再度実行される。
【００８０】
最終的にｊ＝３の状態でステップ３１６の処理を迎えるまでに、４気筒すべての組み合わせについて補正率気筒間差Ｄａｖ１２、Ｄａｖ１３、Ｄａｖ１４、Ｄａｖ２３、Ｄａｖ２４、Ｄａｖ３４が計算される。それらの最大値がＤａｖｍａｘに記憶され、ステップ３２６において所定値Ｆと比較され、その比較結果に応じてステップＳ３２８における異常フラグＦｓｕｐの値が設定される。最終的には、ステップ３２０〜３１８の処理がループする間に少なくとも一度でもステップ３２８に処理が進み、異常フラグＦｓｕｐに異常を示すＦｓｕｐｊが入力されたときには、図１０のルーチン終了後、「共通供給系異常」が発生していると判定される。一方、ステップ３２０〜３１８の処理がループする間にステップ３２８に処理が進まなかった場合、つまりステップ３２６で一度も肯定（Ｙｅｓ）とならなかった場合には、異常フラグＦｓｕｐはゼロのままとなり、共通供給系は正常であると判定される。その後、今回のルーチンが終了する。
【００８１】
以上説明した図１０のルーチンによれば、ＥＣＵ４０が「共通供給系」に異常が発生していると判定する際に、下記の第３条件および第４条件を必要条件とすることができる。第３条件は、内燃機関１０が有する複数の気筒のうち所定気筒の燃料噴射調整量が所定範囲の上限又は下限に達している状態が予め定めた回数（所定値Ｂ）だけ連続したことであり、この条件は図６〜図８のルーチンで取得したデータＣｆｆｉｊを用いて図１０のルーチンにおけるステップ３２０で判定することができる。第４条件は、所定気筒の燃料噴射調整量と所定気筒以外の他の気筒の燃料噴射調整量との差分が所定値Ｆよりも小さいことであり、これは図１０のルーチンにおけるステップ３１２で判定することができる。
【００８２】
なお、上述した実施の形態においては、ＣＡ１０が前記本発明における「所定クランク角度」に、目標ＳＡ−ＣＡ１０が前記本発明における「目標値」に、目標ＳＡ−ＣＡ１０と実ＳＡ−ＣＡ１０との差が前記本発明における「差」に、それぞれ相当している。また、ＥＣＵ４０がクランク角センサ４２を用いてクランク角度を検出することにより前記本発明における「クランク角判定手段」が実現されており、ＥＣＵ４０が筒内圧センサ３０とクランク角センサ４２とを用いて取得した燃焼期間中の筒内圧データを使用して燃焼質量割合を算出することにより前記本発明における「燃料質量割合算出手段」が実現されており、ＥＣＵ４０が燃焼質量割合の算出結果を利用してＣＡ１０を取得することにより前記本発明における「クランク角度取得手段」が実現されており、そして、ＥＣＵ４０が上記ステップ１１２〜１１６の処理を実行することにより前記本発明における「調整手段」が実現されており、ＥＣＵ４０が図５のルーチンのステップ１１４の処理を実行することで算出される「燃料噴射量補正率」が前記本発明における「燃料噴射調整量」に相当している。そして、図６〜図８のルーチンで取得したデータＣｆｆｉｊを用いて図９のルーチンのステップ３０４の処理を実行するとともに、図９のルーチンのステップ３１２、３１４の処理を実行することにより、前記本発明における「第２判定手段」が実現されている。また、図６〜図８のルーチンで取得したデータＣｆｆｉｊを用いて図９のルーチンのステップ３０４の処理を実行するとともに、図１０のルーチンのステップ３２６、３２８の処理を実行することにより、前記本発明における「第１判定手段」が実現されている。
【符号の説明】
【００８３】
１０  内燃機関
１２  ピストン
１４  燃焼室
１６  吸気通路
１８  排気通路
２０  吸気弁
２２  排気弁
２４  スロットルバルブ
２６  燃料噴射弁
２８  点火プラグ
３０  筒内圧センサ
４０  ＥＣＵ(Electronic Control Unit)
４２  クランク角センサ
４４  エアフローメータ
【図１】
2016098798.tif 000004
【図２】
2016098798.tif 000005
【図３】
2016098798.tif 000006
【図４】
2016098798.tif 000007
【図５】
2016098798.tif 000008
【図６】
2016098798.tif 000009
【図７】
2016098798.tif 000010
【図８】
2016098798.tif 000011
【図９】
2016098798.tif 000012
【図１０】
2016098798.tif 000013