A.一実施形態
1.構成
(1)全体構成
図1は、この発明の一実施形態に係る内燃機関診断装置14(以下「診断装置14」ともいう。)を有する内燃機関診断システム10(以下「システム10」ともいう。)の概略的な構成を示すブロック図である。システム10は、診断対象としてのエンジン16を搭載した車両12と、エンジン16の診断を行う診断装置14とを有する。
(2)車両12
(a)全体構成
車両12は、エンジン16に加え、エンジン16からの排ガスを浄化する排ガスフィルタ18(以下「フィルタ18」ともいう。)と、エンジン16の出力を制御するエンジン電子制御装置20(以下「エンジンECU20」という。)と、エンジン16の冷却水の温度Tw[℃]を検出する温度センサ22と、イグニションスイッチ24(以下「IGSW24」という。)とを有する。
(b)エンジン16
図2には、エンジン16内部の概略的な構成が示されている。エンジン16は、いわゆる直列4気筒エンジンであり、吸気量センサ28と、スロットル弁30と、開度センサ31と、第1〜第4気筒32a〜32d(以下「気筒32」と総称する。)と、気筒32毎の燃料噴射弁34と、気筒32毎の点火プラグ36と、空燃比センサ38と、クランクシャフト40と、クランク角センサ41と、気筒32毎の上死点センサ42とを有する。
吸気量センサ28は、スロットル弁30の開度θth[°]に応じてエンジン16に吸入される空気量(以下「吸気量Qaf」という。)を検出し、エンジンECU20に出力する。スロットル弁30は、インテークマニホールド44内に配置されている。開度センサ31は、スロットル弁30の開度θthを検出し、エンジンECU20に出力する。燃料噴射弁34及び点火プラグ36は、各気筒32の燃焼室46に面して配置されている。空燃比センサ38は、図示しない酸素センサを含み、エキゾーストマニホールド48内に配置されている。空燃比センサ38は、エンジン16全体の空燃比(以下「全体空燃比Raf_total」という。)を検出し、エンジンECU20に出力する。クランク角センサ41は、クランクシャフト40の回転角(以下「クランク角Ac」という。)[°]を検出し、エンジンECU20に出力する。上死点センサ42は、ピストン49の上死点を検出し、エンジンECU20に出力する。
(c)排ガスフィルタ18
排ガスフィルタ18は、エキゾーストマニホールド48の下流側(排気側)に配置され、エンジン16からの排ガスを浄化して放出する。本実施形態におけるフィルタ18は、排ガス浄化用の三元触媒を含む。
(d)エンジンECU20
エンジンECU20は、エンジン16の運転を制御するものであり、図1に示すように、入出力部50と、演算部52と、記憶部54とを有する。
本実施形態におけるエンジンECU20は、例えば、エンジン回転数算出機能と、失火発生回数カウント機能と、スロットル弁制御機能と、燃料噴射弁制御機能と、点火プラグ制御機能とを実行する。
エンジン回転数算出機能は、各上死点センサ42からの出力に基づいてエンジン16の回転数(エンジン回転数Ne)[rpm]を算出する機能であり、本実施形態では、各上死点センサ42と組み合わせることにより、エンジン回転数センサを構成する。代わりに、エンジンECU20とは独立のエンジン回転数センサを設け、その出力をエンジンECU20に送信してもよい。
失火発生回数カウント機能は、クランク角センサ41からの出力に基づいて各気筒32それぞれにおける失火発生の有無を判別し、失火が発生したと判別された場合の各気筒32それぞれにおける失火発生回数をカウントする機能であり、本実施形態では、クランク角センサ41と組み合わせることにより、失火カウンタを構成する。なお、失火発生の有無の判別は、例えば、所定クランク角での燃焼圧力を検出し、当該燃焼圧力が所定値以下である場合に失火が発生したと判定する、又は、所定クランク角でのクランク角速度が所定値以下である場合に失火が発生したと判定する等の公知の手段を用いることができる。
スロットル弁制御機能は、図示しないアクセルペダルの操作量などに基づいてスロットル弁30の開度θthを制御することにより、エンジン16の出力を制御する機能である。
燃料噴射弁制御機能は、図示しないアクセルペダルの操作量などに基づいて燃料噴射弁34からの燃料噴射量Qfi(目標値)を制御することにより、エンジン16の出力を制御する機能である。
点火プラグ制御機能は、図示しないアクセルペダルの操作量などに基づいて各点火プラグ36の点火タイミングを制御することにより、エンジン16の出力を制御する機能である。
(3)診断装置14
診断装置14は、各気筒32における空燃比の異常発生の有無を診断するものであり、図1に示すように中継器60と本体62とを有する。
中継器60は、本体62とエンジンECU20との間の通信を中継するものであり、エンジンECU20に接続するためのケーブル70と、ケーブル70が連結される入出力部72と、本体62と無線通信を行う通信部74と、各部の制御を行う演算部76と、演算部76で用いる制御プログラムなどの各種のプログラムやデータを記憶する記憶部78とを有する。
本体62は、図示しないキーボードやタッチパッド等からなる入出力部80と、中継器60と無線通信を行う通信部82と、各部の制御及び各気筒32の異常判定を行う演算部84と、演算部84で用いる制御プログラムや異常診断プログラムなどの各種プログラムやデータを記憶する記憶部86と、各種の表示を行う表示部88とを有する。本体62のハードウェア構成としては、例えば、市販のノート型パーソナルコンピュータを用いることができる。また、以下では、演算部84が実行する各気筒32の異常判定機能を「異常気筒判定機能」という。
診断装置14を用いて各気筒32の異常診断を行う際、中継器60のケーブル70の一端を中継器60の入出力部72に接続した状態で、車両12の図示しないインスツルメントパネルに設けられた図示しないコネクタ(データリンクコネクタ)にケーブル70の他端を接続する。その後、本体62の入出力部80に対するユーザからの操作に応じて、本体62は、各気筒32の異常診断を行う。その際、本体62は、エンジンECU20を介してエンジン16を作動させる。本体62が行う各気筒32の異常診断の詳細は後述する。
2.気筒32の異常診断
図3は、各気筒32の異常診断の概要を示すフローチャートである。図4は、図3に示す処理を行う際の各種の信号、数値及び処理の関係の一例を示すタイムチャートである。図5は、図4の一部を詳細に示すタイムチャートである。
上記のように、異常診断を開始する前に、中継器60のケーブル70を車両12のエンジンECU20に接続し、診断装置14の本体62とエンジンECU20とが中継器60を介して通信可能な状態とする。
診断装置14は、本体62の入出力部80を介してユーザから診断開始の指令を受けると、ステップS1において、エンジンECU20に暖機運転を行わせる暖機処理を行う。
図6には、暖機処理のフローチャート(図3のS1の詳細)が示されている。ステップS11において、診断装置14の演算部84は、IGSW24の操作によるエンジン16の始動を要求するメッセージを表示部88に表示すると共に、エンジンECU20に対し、エンジン16が始動したか否かを問い合わせる。
未だエンジン16が始動していない場合、すなわち、エンジンECU20からエンジン16の始動が通知されていない場合(S12:NO)、ステップS11に戻る。エンジン16が始動した場合、すなわち、エンジンECU20からエンジン16の始動が通知された場合(S12:YES)(図4の時点t1)、ステップS13において、演算部84は、エンジンECU20に対し、暖機運転の開始を要求し、当該要求を受けたエンジンECU20は、エンジン16の暖機運転を開始する。ここにいう暖機運転は、例えば、エンジン回転数Neを暖機用の所定値(例えば、3000rpm)まで上昇させることをいう。
また、暖機運転の際、エンジンECU20は、エンジン16を作動させる際に一般的に使用する通常空燃比制御を用いる。通常空燃比制御は、エンジンECU20の燃料噴射弁制御機能で用いる制御であり、燃料噴射基本制御と空燃比フィードバック制御(以下「空燃比FB制御」という。)とを組み合わせたものである。
本実施形態における燃料噴射基本制御は、各気筒32それぞれに供給する混合気における燃料(ここでは、ガソリン)と空気の比(以下「気筒空燃比Raf_1〜Raf_4」又はこれらを総称して「気筒空燃比Raf_n」若しくは「空燃比Raf_n」という。)を理論空燃比(燃料:空気=1:14.7)とする制御である。
より具体的には、燃料噴射基本制御では、吸気量センサ28が検出する吸気量Qafと燃料噴射弁34の燃料噴射量Qfiの目標値との関係をマップ化して事前に設定しておき、検出された吸気量Qafに対応する燃料噴射量Qfiの目標値に応じて燃料噴射弁34を制御する。
但し、各気筒32の吸気/排気バルブ(図示せず)の作動タイミング(タペットクリアランス)のばらつきや燃料噴射弁34の経年変化など種々の要因のため、必ずしも各気筒32の空燃比Raf_n及びエンジン16の全体空燃比Raf_totalは、理論空燃比と等しくならない。
本実施形態における空燃比FB制御は、全体空燃比Raf_totalが理論空燃比と等しくなるようにフィードバックする制御である。具体的には、空燃比センサ38の検出値が理論空燃比でない場合、当該検出値が理論空燃比となるように、全ての燃料噴射弁34の燃料噴射量Qfiを増減させることにより、理論空燃比を実現する。この際、補正値Pcを用いて燃料噴射量Qfiを補正する。なお、補正値Pcは、後述する各気筒32の燃料噴射率Rfi_n[%](目標値)の補正値であるが、それ以外のもの(例えば、燃料噴射量Qfi(目標値)又は全体空燃比Raf_totalについてのもの)であってもよい。
なお、本実施形態では、1つの空燃比センサ38がエキゾーストマニホールド48の下流側に設けられるのみであるため、各気筒32の空燃比Raf_nは検出されない。従って、燃料噴射基本制御では、エンジン16の全体空燃比Raf_totalを理論空燃比に収束させることはできるが、各気筒32の空燃比Raf_nを理論空燃比に収束させることはできない。
ステップS14において、診断装置14の演算部84は、エンジン16の暖機が終了したか否かを判定する。具体的には、演算部84は、エンジンECU20に対してエンジン16用冷却水の温度Twを要求し、当該要求を受けたエンジンECU20は、演算部84に対して、温度センサ22が検出した温度Twを送信する。そして、演算部84は、温度Twが閾値TH_Tw[℃]以上であるか否かを判定する。閾値TH_Twは、暖機の終了を判定するための閾値である。
暖機が終了していない場合(S14:NO)、ステップS14を繰り返す。暖機が終了した場合(S14:YES)(図4の時点t2)、ステップS15に進む。
ステップS15において、演算部84は、エンジンECU20に対して暖機の終了を求めると共に、IGSW24のオフを求めるメッセージを表示部88に表示する。IGSW24がオンのままである場合(S16:NO)、ステップS15に戻り、IGSW24がオフにされた場合(S16:YES)(図4の時点t3)、暖機処理を終了する。
図3に戻り、ステップS2において、診断装置14は、エンジン回転数Neを安定させるためのエンジン回転数安定化処理を行う。
図7には、エンジン回転数安定化処理のフローチャート(図3のS2の詳細)が示されている。ステップS21において、演算部84は、異常診断を開始するためにエンジン16の再始動を求めるメッセージを表示部88に表示する。エンジン16が再始動されていない場合(S22:NO)、ステップS21に戻る。エンジン16が再始動された場合(S22:YES)(図4の時点t4)、ステップS23に進む。
続くステップS23において、エンジンECU20は、気筒32それぞれについてエンジン16始動後における失火発生回数の累積値Tmf_total_n[回]のカウントを開始する。なお、各累積値Tmf_total_nの初期値(エンジン16の始動時の値)はゼロである。また、「Tmf_total_n」における「n」は、各気筒32の番号を示し、例えば、累積値Tmf_total_1は、第1気筒32aの累積値を示す。
上述のように、失火の検出は、クランク角センサ41からの出力とエンジンECU20における判定とを組み合わせて行う。また、図8に示すように、累積値Tmf_total_nのカウントは、エンジン16が始動した後、診断装置14から累積値Tmf_total_nのリセット要求があるまでリセットなしに継続される。
続くステップS24において、演算部84は、エンジン回転数Neが安定したか否かを判定する。当該判定は、エンジン16の再始動から所定時間(例えば、30秒)が経過したか否かにより判定する。
前記所定時間が経過すると(S24:YES)(図4の時点t5)、異常診断の事前準備が完了する。なお、前記所定時間が経過した後は、演算部84は、エンジンECU20に対し、エンジン16をアイドル運転させるよう要求し、当該要求を受けたエンジンECU20は、エンジン16をアイドル運転させる。この際、エンジンECU20は、前記燃料噴射基本制御と前記空燃比FB制御の両方を用いる。
図3に戻り、ステップS3において、診断装置14は、第1診断処理を実行する。第1診断処理は、前記空燃比FB制御を停止させることに伴う診断処理である。
図9は、第1診断処理のフローチャートである。上記のように事前準備が完了すると(図4の時点t5)、ステップS31において、診断装置14の演算部84は、エンジンECU20に対し、補正値Pcの送信を要求し、当該要求を受けたエンジンECU20は、現時点において空燃比FB制御で用いている補正値Pcを診断装置14に対して送信する。これにより、演算部84は、補正値Pcを取得する。
補正値Pcは、エンジン16の全体空燃比Raf_totalを変化させるための補正値である。すなわち、補正値Pcは、理論空燃比と全体空燃比Raf_totalとの差ΔRafに対応する燃料噴射率Rfi_n(後述)の値として設定される。
ステップS32において、診断装置14の演算部84は、気筒32のうち失火が発生しているもの(以下「失火気筒」という。)があるか否かを判定する。具体的には、演算部84は、エンジンECU20に対して、エンジン16始動後の各気筒32それぞれの失火発生回数の累積値Tmf_total_n[回]を要求し、当該要求を受けたエンジンECU20は、演算部84に対して各累積値Tmf_total_nを通知する。そして、演算部84は、各気筒32の累積値Tmf_total_nが、失火の発生を判定するための閾値TH_total1(例えば、TH_total1=0)を超えるか否かを個別に判定する。そして、累積値Tmf_total_nが閾値TH_total1を超えていれば、当該気筒32に失火が発生している(すなわち、失火気筒がある)と判定する。
いずれの気筒32にも失火が発生していない場合(S32:NO)、ステップS44に進む。いずれかの気筒32に失火が発生している場合(S32:YES)、ステップS33において、診断装置14の演算部84は、エンジンECU20に対して空燃比FB制御の停止を要求する。当該要求を受けたエンジンECU20は、空燃比FB制御を停止し、燃料噴射基本制御のみを実行する。
ステップS34において、診断装置14の演算部84は、燃料噴射基本制御のみの状態において失火が停止したか否かを判定する。具体的には、演算部84は、燃料噴射基本制御のみの状態に移行してから所定時間が経過した後の各気筒32の失火発生回数の累積値Tmf_total2_nが閾値TH_total1以下であるか否かを判定する。そして、各気筒32の累積値Tmf_total2_nがいずれも閾値TH_total1以下であれば、失火が停止したと判定する。
空燃比FB制御を停止した結果、失火が停止した場合(S34:YES)、空燃比FB制御によって失火が発生しているものの、全ての気筒32が正常であるといえる。この場合、ステップS44に進む。いずれかの気筒32で失火が発生し、失火が停止しない場合(S34:NO)、ステップS35に進む。
ステップS35において、診断装置14の演算部84は、ステップS31で取得した補正値Pcが閾値TH_Pc1以上であるか否かを判定する。閾値TH_Pc1は、補正値Pcによる補正により燃料が過度に濃くされているか否か(空燃比FB制御がない場合、過度にリーン側にあるか否か)を判定するためのものであり、例えば、+8%とすることができる。
補正値Pcが閾値TH_Pc1以上である場合(S35:YES)、ステップS36において、診断装置14は、空燃比FB制御を停止したことにより、失火気筒が移動(変化)しているか否かを判定する。失火気筒が移動している場合(S36:YES)、ステップS37において、診断装置14の演算部84は、移動後の失火気筒にリーン故障が発生していると判定する。ここでいうリーン故障とは、エンジンECU20における気筒空燃比Raf_nの目標値は理論空燃比に設定されているにもかかわらず(すなわち、燃料噴射量Qfi(目標値)は、理論空燃比に対応する値に設定されているにもかかわらず)、失火気筒の実際の空燃比Raf_nは、過度にリーン側に変化してしまっている状態、換言すると、何らかの原因により燃料供給が不足している状態をいう。
一方、失火気筒が移動(変化)していない場合(S36:NO)、ステップS38において、診断装置14の演算部84は、当該失火気筒にリーン故障が発生していると判定する。
ステップS35に戻り、補正値Pcが閾値TH_Pc1以上でない場合(S35:NO)、ステップS39において、演算部84は、ステップS31で取得した補正値Pcが閾値TH_Pc2以下であるか否かを判定する。閾値TH_Pc2は、補正値Pcによる補正により燃料が過度に薄くされているか否か(空燃比FB制御がない場合、過度にリッチ側にあるか否か)を判定するためのものであり、例えば、−8%とすることができる。
補正値Pcが閾値TH_Pc2以下でない場合(S39:NO)、ステップS44に進む。補正値Pcが閾値TH_Pc2以下である場合(S39:YES)、ステップS40において、診断装置14の演算部84は、空燃比FB制御を停止したことにより、失火気筒が移動(変化)しているか否かを判定する。失火気筒が移動している場合(S40:YES)、ステップS41において、演算部84は、移動後の失火気筒にリッチ故障が発生していると判定する。ここでいうリッチ故障とは、エンジンECU20における気筒空燃比Raf_nの目標値は理論空燃比に設定されているにもかかわらず(すなわち、燃料噴射量Qfi(目標値)は、理論空燃比に対応する値に設定されているにもかかわらず)、失火気筒の空燃比Raf_nは、過度にリッチ側に変化してしまっている状態、換言すると、何らかの原因により燃料供給が過剰である状態をいう。
一方、失火気筒が移動(変化)していない場合(S40:NO)、ステップS42において、診断装置14の演算部84は、当該失火気筒にリッチ故障が発生していると判定する。
ステップS37、S38、S41、S42の後、ステップS43において、診断装置14の演算部84は、表示部88に故障の内容を表示する(エラー表示を行う)。
ステップS32において失火気筒がない場合(S32:NO)、ステップS34において失火が停止した場合(S34:YES)、又はステップS39において補正値Pcが閾値TH_Pc2以下でない場合(S39:NO)、各気筒32の故障が検出できない。この場合、ステップS44において、ステップS33と同様、空燃比FB制御を停止し、今回の第1診断処理を終了する(図4の時点t6)。
図3に戻り、ステップS4において、診断装置14の演算部84は、異常気筒の特定が終了したか否かを判定する。異常気筒の特定が終了した場合とは、図9のステップS37、S38、S41、S42のいずれかを経た場合である。異常気筒の特定が終了した場合(S4:YES)、今回の診断を終了する。異常気筒の特定が終了していない場合(S4:NO)、ステップS5に進む。
ステップS5において、診断装置14は、第2診断処理を実行する(図4の時点t6)。第2診断処理は、気筒32毎の空燃比Raf_nの切替え(変化)を伴う診断処理である。より具体的には、第2診断処理は、気筒32毎の空燃比Raf_nを変化させるための補正値(以下「気筒補正値Cfi_n」又は「補正値Cfi_n」という。)[%]の切替え(変化)を伴う診断処理である。
補正値Cfi_nは、燃料噴射基本制御において、吸気量Qafとの関係で気筒空燃比Raf_nを理論空燃比とするための燃料噴射量Qfi(「気筒基準噴射量」)に対する燃料噴射量Qfiの目標値の割合(以下「気筒燃料噴射率Rfi_n」又は「燃料噴射率Rfi_n」という。)を規定するために用いるものである。100%(気筒基準噴射量に対応)に補正値Cfi_nを加えたものが、燃料噴射率Rfi_nとなる(Rfi_n=100+Cfi_n)。
「Cfi_n」及び「Rfi_n」それぞれにおける「n」は、各気筒32の番号を示し、例えば、気筒補正値Cfi_1は、第1気筒32aの補正量Cfi_nを示し、燃料噴射率Rfi_1は、第1気筒32aの燃料噴射率Rfi_nを示す。
なお、第1診断処理を終了したとき、空燃比FB制御は停止されている(図9のS33、S44参照)。従って、第2診断処理を開始する際、燃料噴射基本制御のみが実行されている。
図10及び図11は、第2診断処理のフローチャートである。なお、図10及び図11のフローチャートを実行することにより、例えば、図5のような波形データを取得することができる。
ステップS51、S52において、診断装置14の演算部84は、初期設定を行う。具体的には、ステップS51において、演算部84は、気筒補正値Cfi_nの切替えを行う気筒32(以下「対象気筒」という。)を示す変数nに1を設定する。n=1は、第1気筒32aを指し、n=2は、第2気筒32bを指し、n=3は、第3気筒32cを指し、n=4は、第4気筒32dを指す。従って、ステップS51において、変数nに1を設定したことで、これからの処理は、第1気筒32aを対象気筒とすることを示す。ステップS52において、演算部84は、第1気筒32aの補正量Cfi_1に0%を設定する(Cfi_1←0%)。換言すると、第1気筒32aの燃料噴射率Rfi_1を、理論空燃比を実現するための100%とする(Rfi_1←100%)。
続くステップS53、S54において、診断装置14の演算部84は、排ガスフィルタ18が過熱状態にあるか否かを判定する。具体的には、ステップS53において、演算部84は、エンジン16始動後における対象気筒の失火発生回数の累積値Tmf_total_nそれぞれが閾値TH_total2[回]以上であるか否かを判定する。閾値TH_total2は、フィルタ18が過熱状態にあることを判定するための閾値である。また、上記の通り、累積値Tmf_total_nは、エンジン16の始動からエンジンECU20がカウントするものであるため、演算部84は、エンジンECU20から各累積値Tmf_total_nを取得する。
対象気筒の累積値Tmf_total_nが閾値TH_total2未満である場合(S53:NO)、ステップS54において、演算部84は、測定周期Pm[sec]における対象気筒の失火発生回数の累積値Tmf_cyl_n[回]が閾値TH_cyl[回]以上であるか否かを判定する。測定周期Pmは、補正量Cfi_nを切り替える周期(すなわち、燃料噴射率Rfi_n及び気筒空燃比Raf_nを切り替える周期)である(図5及び図12参照)。このため、累積値Tmf_cyl_nは、補正量Cfi_nを切り替える毎の対象気筒の失火発生回数の累積値である。また、閾値TH_cylは、フィルタ18が過熱状態にあることを判定するための閾値である。
なお、累積値Tmf_cyl_nは、診断装置14の演算部84でカウントする。具体的には、診断装置14からの指令により、エンジンECU20は、失火の発生毎に気筒32の番号と失火の発生を診断装置14に通知する。当該通知を受けた診断装置14は、図5及び図12に示すように、測定周期Pm毎に失火発生回数をカウントする。
累積値Tmf_cyl_nが閾値TH_cyl未満である場合(S54:NO)、ステップS56に進む。累積値Tmf_total_nが閾値TH_total2以上である場合(S53:YES)又は累積値Tmf_cyl_nが閾値TH_cyl以上である場合(S54:YES)、ステップS55において演算部84は、表示部88にエラー表示を行う。すなわち、演算部84は、失火発生回数が多いため、フィルタ18の冷却のために診断を一時的に中止すべき旨を表示部88に表示すると共に、第2診断処理を中止する。当該エラー表示に従って、ユーザが第2診断処理を一時的に中止し、フィルタ18の温度を低下させることで、第2診断処理の再開が可能となる。また、診断(図3の処理)を再開する場合、入出力部80に対するユーザの操作に基づき、各累積値Tmf_total_nをリセットする。
ステップS56において、演算部84は、エミッション(E/M)悪化失火レベルの判定を停止する。E/M悪化失火レベルとは、点火プラグ36に煤が溜まったことに起因する失火発生回数の程度を意味する。本実施形態では、E/M悪化失火レベルの判定を停止することでフィルタ18の保護のための失火判定(図10のS53、S54)を優先する。但し、第2診断処理の際、E/M悪化失火レベルの判定を継続することも可能である。
ステップS57〜S67により、演算部84は、異常気筒の特定を行う。すなわち、図5に示すように、本実施形態では、4つの気筒32を診断対象として順番に選択する。既に述べた通り、診断対象の気筒32を「対象気筒」という。そして、4つの気筒32のうち対象気筒以外の3つについて補正値Cfi_nを0%とする燃料噴射基本制御を行いつつ、対象気筒について補正値Cfi_nを段階的に変化させる。この際、補正値Cfi_nは、±0%、−10%、−20%、−30%、−40%の順に切り替える。換言すると、燃料噴射率Rfi_nを100%(理論空燃比)、90%、80%、70%、60%の順に低下させることで、気筒空燃比Raf_nを変化させる。
上記のような処理を行うため、ステップS57において、演算部84は、エンジンECU20に対し、変数nと変数nが示す対象気筒の補正値Cfi_nを1回又は複数回の爆発工程毎に通知する。当該通知を受けたエンジンECU20は、当該対象気筒において補正値Cfi_nで所定回数の爆発工程を実行する。本実施形態では、ステップS57を繰り返すことで、補正値Cfi_n毎(すなわち、燃料噴射率Rfi_n又は気筒空燃比Raf_n毎)に爆発工程を50回繰り返す。
エンジンECU20が爆発工程を実行している最中、ステップS58において、演算部84は、累積値Tmf_total_n及び累積値Tmf_cyl_nをカウントする。より具体的には、エンジンECU20は、失火を検出する毎に演算部84に通知する。当該通知を受けて演算部84は、累積値Tmf_total_n及び累積値Tmf_cyl_nをカウントする。
なお、後述するステップS62、S66において、累積値Tmf_cyl_nは、気筒空燃比Raf_nが変化する毎にリセットされる。このため、累積値Tmf_cyl_nは、図5及び図12に示すように、気筒補正値Cfi_n毎(すなわち、測定周期Pm毎)に累積される。
ステップS59において、演算部84は、今回の測定周期Pmにおける計測が終了したか否か(対象気筒において気筒補正値Cfi_nで爆発工程が50回行われたか否か)を判定する。当該判定は、例えば、エンジンECU20を介してクランク角センサ41の出力を受信し、当該出力を用いてクランクシャフト40の回転数を検出することにより行うことができる。今回の測定周期Pmにおける計測が終了していない場合(S59:NO)、ステップS53に戻る。今回の測定周期Pmにおける計測が終了した場合(S59:YES)、図11のステップS60に進む。
図11のステップS60において、演算部84は、同一の対象気筒において補正値Cfi_nを変更可能であるか否か(換言すると、同一の対象気筒において未計測の補正値Cfi_nが残っているか否か)を判定する。すなわち、上記のように、本実施形態では、補正値Cfi_nを、±0%、−10%、−20%、−30%、−40%の順に変化させるため、今回の補正値Cfi_nが−40%でなければ、補正値Cfi_nを変更可能である。
補正値Cfi_nを変更可能である場合(S60:YES)、気筒32と燃料噴射率Rfi_nに応じて累積値Tmf_cyl_nを記憶した後(図15〜図18参照)、ステップS61において、演算部84は、同一の対象気筒について補正値Cfi_nを変更する。具体的には、対象気筒の現在の補正値Cfi_nが±0%であれば−10%に、補正値Cfi_nが−10%であれば−20%に、補正値Cfi_nが−20%であれば−30%に、補正値Cfi_nが−30%であれば−40%に変更する。続くステップS62において、演算部84は、累積値Tmf_cyl_nをリセットし、図10のステップS53に戻る。
補正値Cfi_nが変更可能でない場合(S60:NO)、すなわち、対象気筒の現在の補正値Cfi_nが−40%である場合、当該補正値Cfi_nをリセットすると共に、気筒32と燃料噴射率Rfi_nに応じて累積値Tmf_cyl_nを記憶する(図15〜図18参照)。その後、ステップS63において、演算部84は、全ての気筒32について診断が終了したか否かを判定する。一部の気筒32について診断が終了していない場合(S63:NO)、ステップS64において、演算部84は、対象気筒を特定する変数nの現在の値に1を足して新たな変数nとする(n←n+1)。これにより、対象気筒が切り替わる(図5の時点t11、t12、t13)。
続くステップS65において、演算部84は、新たな対象気筒の補正値Cfi_nに0%を代入する。これにより、新たな対象気筒の作動は、理論空燃比(±0%)から開始される。続くステップS66において、演算部84は、累積値Tmf_cyl_nをリセットし、ステップS53に戻る。
ステップS63に戻り、全ての気筒32について診断が終了した場合(S63:YES)(図5の時点t7)、ステップS67において、演算部84は、前記各ステップで取得した各気筒32の失火発生回数の累積値Tmf_cyl_nに基づいて、各気筒32の故障の有無、及び故障が発生している場合、その種類を特定する。
図13は、第2診断処理において、各気筒32の故障の有無、及び故障が発生している場合、その種類を特定するためのフローチャート(図11のS67の詳細)である。図13の処理は、各気筒32について行われる。図14は、第2診断処理において、各気筒32の故障の有無、及び故障が発生している場合、その種類を特定する方法の説明図である。
図13のステップS71において、診断装置14の演算部84は、燃料噴射率Rfi_nが70%(補正値Cfi_nが−30%)のときの失火発生回数の累積値Tmf_cyl_nがゼロであるか否かを判定する。燃料噴射率Rfi_nが70%のときの累積値Tmf_cyl_nがゼロである場合(S71:YES)、ステップS72において、演算部84は、当該気筒32がリッチ故障であると判定する。上記のように、リッチ故障とは、何らかの原因により燃料供給が過剰である状態をいう。燃料噴射率Rfi_nが70%のときの累積値Tmf_cyl_nがゼロでない場合(S71:NO)、ステップS73に進む。
ステップS73において、演算部84は、燃料噴射率Rfi_nが90%(補正値Cfi_nが−10%)のときの累積値Tmf_cyl_nが閾値TH_lean[回]以上であるか否かを判定する。閾値TH_leanは、リーン故障を判定するための閾値であり、本実施形態では25回である。燃料噴射率Rfi_nが90%のときの累積値Tmf_cyl_nが閾値TH_lean以上である場合(S73:YES)、ステップS74において、演算部84は、当該気筒32がリーン故障であると判定する。上記のように、リーン故障とは、何らかの原因により燃料供給が不足している状態をいう。燃料噴射率Rfi_nが90%のときの累積値Tmf_cyl_nが閾値TH_lean以上でない場合(S73:NO)、ステップS75において、演算部84は、当該気筒32が正常であると判定する。
上記のような判定処理を行うことで、図14に示すように、各気筒32が正常、リッチ故障又はリーン故障のいずれであるかを判定することができる。上記の判定処理の結果は、所定の形式にファイル化されると共に(図4の時点t7から時点t8)、表示部88に表示される(図4の時点t8から時点t9)。
なお、図13の判定では、燃料噴射率Rfi_nが100%、80%、60%(補正値Cfi_nが±0%、−20%、−40%)のときの値を用いていないが、これらの燃料噴射率Rfi_nにおけるデータは、演算部84が故障を判定した後、ユーザがデータを解析する際に用いる。
図11に戻り、ステップS68において、診断装置14の演算部84は、ステップS67の判定結果を表示部88に出力する。
図15〜図18には、本実施形態において、診断装置14が取得する失火発生回数の累積値Tmf_cyl_nのデータテーブル100、110、120、130と、データテーブル100、110、120、130に基づくグラフ102、112、122、132と、表示部88に表示される画面104、114、124、134とを示す図である。
図15には、各気筒32がいずれも正常である場合のデータテーブル100、グラフ102及び画面104が示されている。図16には、各気筒32がいずれもリッチ故障である場合のデータテーブル110、グラフ112及び画面114が示されている。図17には、各気筒32がいずれもリーン故障である場合のデータテーブル120、グラフ122及び画面124が示されている。図18には、第1気筒32a及び第3気筒32cが正常であり、第2気筒32bがリッチ故障であり、第4気筒32dがリーン故障である場合のデータテーブル130、グラフ132及び画面134が示されている。
なお、図17及び図18のグラフ122、132では、燃料噴射率Rfi_nが100%を超える部分のデータが含まれているが、説明の便宜のためである。
3.本実施形態の効果
以上のように、本実施形態によれば、気筒空燃比Raf_nが異常である異常気筒(リッチ故障及びリーン故障)を高精度且つ簡易に特定することが可能となる。
すなわち、一般に、正常な気筒32においては、燃料噴射量Qfiに応じて変化する実際の気筒空燃比Raf_nは、補正値Cfiに応じた気筒空燃比Raf_nの目標値とほぼ同一になっており、各気筒32の空燃比Raf_nと失火発生との関係は、エンジン16の構成に応じてある程度決まってくる。例えば、実際の気筒空燃比Raf_nが理論空燃比と等しいとき失火の発生は略ゼロであるが、実際の気筒空燃比Raf_nがリーン側又はリッチ側に向かうに連れて失火発生率は大きくなる。本実施形態では、気筒空燃比Raf_n(燃料噴射率Rfi_n及び補正値Cfi_n)を段階的に変化させ、失火発生回数の累積値Tmf_cyl_nをカウントすることで、燃焼可能な燃料噴射範囲を求め、気筒空燃比Raf_nの異常を検出する。従って、気筒空燃比Raf_nの異常を検出し易くなり、異常気筒を高精度に特定することが可能となる。
また、気筒空燃比Raf_nの制御は、エンジン16について一般的に行われていることであると共に、失火発生回数の累積値Tmf_cyl_nのカウントは、例えば、クランク角センサ41とエンジンECU20とにより行うことが可能となる。従って、気筒空燃比Raf_nの制御と失火発生回数の累積値Tmf_cyl_nのカウントは、エンジン16に関する既存の構成を流用して行うことが可能である。本実施形態によれば、段階的に変化させた気筒空燃比Raf_n(燃料噴射率Rfi_n)と、複数の気筒32の失火発生回数の累積値Tmf_cyl_nとの関係から異常気筒を特定する。このため、エンジン16に関する既存の構成を流用して制御又は判定が可能な気筒空燃比Raf_n(燃料噴射率Rfi_n)及び失火発生回数の累積値Tmf_cyl_nを用いることで異常気筒を簡易に特定することが可能となる。
診断装置14の演算部84は、エンジン16に負荷がかかっていないアイドル状態において、複数の気筒32を1つずつ順番に燃料噴射量Qfi(補正値Cfi_n)を制御して気筒空燃比Raf_nを段階的に減少させる(図5参照)。これにより、気筒32の異常を1つずつ確認することができるため、より正確に異常気筒を判定することが可能となる。
診断装置14の演算部84は、補正値Cfi_nを0%から開始して段階的に減少させることで、燃料噴射率Rfi_nを100%から開始して段階的に減少させる(図5参照)。
これにより、失火発生回数の累積値Tmf_cyl_nが略ゼロとなる理論空燃比から、失火発生回数の累積値Tmf_cyl_nが増加するリーン側へと変化させていくので、異常気筒を正確に判定可能になると共に、失火の発生による点火プラグ36又はフィルタ18への悪影響を極力抑えることが可能となる。
すなわち、失火が頻繁に発生すると、気筒32の燃焼室46内の温度低下を生じ、点火プラグ36が燻り易く(煤が溜まり易く)なる。その結果、当該煤に起因して失火が生じる可能性も高くなり、気筒空燃比Raf_n(補正値Cfi_n)の変化に起因する失火発生回数の累積値Tmf_cyl_nを正確に判定できなくなることも想定される。また、点火プラグ36に溜まる煤は、点火プラグ36の耐久性に悪影響を与えることもあり得る。さらに、失火が発生すると、燃焼室46内で燃焼しなかった未燃ガスがエンジン16から排出されて、フィルタ18の熱によりフィルタ18中で着火する場合があり、この現象が頻繁に発生するとフィルタ18の耐久性に悪影響を及ぼす可能性がある。本実施形態によれば、正常な燃焼運転状態から失火し易い状態へと徐々に変化させていくので、燃焼室46内の温度低下を最小限に抑えることができる。従って、上記のような不具合を防止することが可能となる。
本実施形態では、燃料噴射率Rfi_nが70%であるとき(補正値Cfi_がー30%であるとき)、失火発生回数の累積値Tmf_cyl_nがゼロである気筒32がある場合、診断装置14の演算部84は、燃料が過剰に供給されるリッチ故障が当該気筒32に発生していると判定する。これにより、簡易にリッチ故障を判定することが可能となる。
本実施形態では、燃料噴射率Rfi_nが90%であるとき(補正値Cfi_がー10%であるとき)、失火発生回数の累積値Tmf_cyl_nが25回以上である気筒32がある場合、診断装置14の演算部84は、燃料供給が不足しているリーン故障が当該気筒32に発生していると判定する。これにより、簡易にリーン故障を判定することが可能となる。
本実施形態によれば、補正値Cfi_n(すなわち、燃料噴射率Rfi_n又は気筒空燃比Raf_n)を段階的に変化させている際、失火発生回数の累積値Tmf_total_nが閾値TH_total2を超えた場合、又は失火発生回数の累積値Tmf_cyl_nが閾値TH_cylを超えた場合、補正値Cfi_nの段階的な変化を中止させる。このため、これらの閾値に応じて、例えば、点火プラグ36又はフィルタ18への悪影響を抑制することが可能となる。なお、点火プラグ36のへの悪影響を抑制する場合、第2診断処理の再開時には、補正値Cfi_nの段階的な変化の前に、燃料噴射基本制御と空燃比FB制御の両方を行う運転を行うことで、点火プラグ36に蓄積した煤等を焼き払うことができる。
本実施形態では、診断装置14の演算部84は、対象気筒の失火発生回数の累積値Tmf_cyl_nを測定周期Pm毎にカウントする。これにより、補正値Cfi_n(すなわち、燃料噴射率Rfi_n又は気筒空燃比Raf_n)毎に累積値Tmf_cyl_nの異常を判定することが可能となり、異常気筒の特定時の失火の異常を好適に検出することが可能となる。
本実施形態によれば、エンジン16の全体空燃比Raf_totalの制御に問題が生じていない場合でも、個々の気筒32に生じた空燃比Raf_nの制御の不具合を検出することが可能となる。
すなわち、エンジン16の通常作動時には、燃料噴射基本制御と空燃比FB制御とを組み合わせて用いるが、エンジン16が4つの気筒32を備え、そのうちの1つ(第1気筒32a)が、燃料供給が不足しているリーン故障を生じている場合、空燃比FB制御により、他の3つの気筒32(第2〜第4気筒32b〜32d)の空燃比Raf_nを燃料供給を多くするように調整し、第1気筒32aの空燃比Raf_nを燃料供給を少なくするように調整することでエンジン16の全体空燃比Raf_totalとしては目標空燃比を実現可能である。この場合、図19及び図20からもわかるように、第1気筒32aのリーン故障を検出することができない。
本実施形態によれば、エンジン16の診断時には、空燃比FB制御を停止して燃料噴射基本制御のみを実行するため、異常気筒を高精度且つ容易に特定することが可能となる。従って、検査対象のエンジン16に全体用の空燃比センサ38のみが設けられている場合でも、異常気筒を高精度且つ容易に特定することができる。
本実施形態では、目標空燃比は理論空燃比であり、燃料噴射基本制御では、複数の気筒32それぞれの空燃比Raf_nが理論空燃比となるように複数の気筒32それぞれの燃料噴射率Rfi_n(空燃比Raf_n)を制御する。また、空燃比FB制御では、エンジン16に負荷がかかっていないアイドル状態において、エンジン16の全体空燃比Raf_totalが理論空燃比からずれている場合、複数の気筒32それぞれに同一の補正値Pcを適用して全体空燃比Raf_totalが理論空燃比と等しくなるように制御する。これにより、エンジン16の通常作動時及び診断時のいずれも、理論空燃比を基準とするため、異常気筒の判定が容易となる。
B.変形例
なお、この発明は、上記実施形態に限らず、この明細書の記載内容に基づき、種々の構成を採り得ることはもちろんである。例えば、以下に示す構成を採ることができる。
上記実施形態では、診断装置14を車両12のエンジン16の診断に用いたが、これに限らず、内燃機関を有するその他の装置(例えば、船舶等の移動体)に用いることもできる。また、上記実施形態において、診断装置14は、車両12の外部からエンジンECU20と通信するものとしたが、車両12の内部に搭載してもよい。換言すると、エンジンECU20に診断装置14の機能を持たせることも可能である。
上記実施形態では、エンジン16は、直列4気筒エンジンであったが、気筒32の配置や数は、これに限らない。例えば、エンジン16は、V型6気筒エンジンであってもよい。
上記実施形態では、エンジン16全体で1つの空燃比センサ38を設けたが、これに限らず、空燃比センサ38を複数の気筒32毎に設けてもよい。
上記実施形態では、診断装置14の演算部84は、エンジンECU20を介して気筒空燃比Raf_n(燃料噴射率Rfi_n及び補正値Cfi_n)の切替えを行ったが、これに限らず、演算部84から燃料噴射弁34を直接制御して気筒空燃比Raf_n(燃料噴射率Rfi_n及び補正値Cfi_n)の切替えを行ってもよい。或いは、エンジンECU20に診断装置14の機能を持たせることにより、エンジンECU20(診断装置14)が燃料噴射弁34を直接制御して気筒空燃比Raf_n(燃料噴射率Rfi_n及び補正値Cfi_n)の切替えを行うこともできる。
上記実施形態では、エンジン16の始動後の失火発生回数の累積値Tmf_total_nを気筒32毎に求めたが、これに限らず、例えば、エンジン16全体で、エンジン16始動後の失火発生回数の累積値を求めて利用することもできる。
上記実施形態では、累積値Tmf_total_nをエンジン16の始動後における失火発生回数の累積値としたが、これに限らず、例えば、その他の時点(例えば、エンジン16の始動から所定時間経過後)からの失火発生回数の累積値とすることもできる。
上記実施形態では、ステップS33、S44において空燃比FB制御を停止する前において、燃料噴射基本制御と空燃比FB制御を同時に用いていたが、これに限らず、最初に、燃料噴射基本制御のみを用い、その後、空燃比FB制御のみを実行することもできる。この場合、ステップS33、S44において空燃比FB制御を停止する際、燃料噴射基本制御を再開する。或いは、ステップS33、S44において空燃比FB制御を停止する前において、最初に、燃料噴射基本制御と空燃比FB制御とを同時に開始し、その後、燃料噴射基本制御を停止し、空燃比FB制御のみを継続し続けてもよい。この場合も、ステップS33、S44において空燃比FB制御を停止する際、燃料噴射基本制御を再開すればよい。
上記実施形態の第2診断処理では、補正値Cfi_nを減少させることで各気筒32の空燃比Raf_nを理論空燃比からリーン側に減少させていったが、これに限らない。例えば、図21に示すように、補正値Cfi_nを正から負に段階的に切り替えることで、気筒空燃比Raf_nをリッチ側からリーン側に段階的に切り替えることができる。或いは、図22に示すように、補正値Cfi_nを負から正に段階的に切り替えることで、気筒空燃比Raf_nをリーン側からリッチ側に段階的に切り替えることもできる。これらの場合、補正値Cfi_nは、±0%、−10%、−20%、−30%、−40%の組合せのみではなく、適宜変更することができる。
上記実施形態の第2診断処理では、対象気筒以外の気筒32について燃料噴射基本制御を行いつつ、対象気筒について空燃比Raf_n(補正値Cfi_n)を徐々に変化させた。これに限らず、対象気筒以外の気筒32については、燃料噴射基本制御を停止し、燃料噴射及び点火を中止することもできる。
上記実施形態の第2診断処理では、図13のフローチャートを用いて故障の特定を行ったが、故障の特定の方法はこれに限らない。例えば、ステップS71では燃料噴射率Rfi_nが70%であるとき(補正値Cfi_nが−30%であるとき)の累積値Tmf_cyl_nに基づいてリッチ故障であるか否かを判定した。しかし、リッチ故障の判定については、例えば、エンジン16の特性によって定められるリーン側の燃料限界値(失火が発生しない臨界値)を下回る燃料噴射率Rfi_nであれば、別の値(図14参照)であってもよい。また、その際の累積値Tmf_cyl_nの閾値(第1閾値)をゼロ以外の正の値とすることもできる。
さらに、ステップS73では燃料噴射率Rfi_nが90%であるとき(補正値Cfi_nが−10%であるとき)の累積値Tmf_cyl_nに基づいてリーン故障であるか否かを判定した。しかし、リーン故障の判定については、例えば、燃焼噴射率Rfi_nが100%である、又はエンジン16の特性により定まる燃料可能範囲値(失火が発生しない範囲)内の値であれば、別の値(図14参照)であってもよい。また、その際の閾値TH_lean(第2閾値)の値は適宜設定することができる。
また、対象気筒以外の気筒32が故障している場合に対象気筒の故障診断の精度を上げるため、図13のフローチャートにさらに別のステップを加えることもできる。例えば、図13のステップS74において対象気筒がリーン故障であると判定する前に、リーン故障であれば失火発生回数の累積値Tmf_cyl_nが変化するはずの範囲(図14参照)を対象気筒の空燃比Raf_nが変化したときの累積値Tmf_cyl_nの変化量(例えば、対象気筒の空燃比Raf_nが90%のときと100%のときの累積値Tmf_cyl_nの差)を算出する。そして、当該変化量が所定値以上である場合に、対象気筒がリーン故障であると判定することもできる。