以下本発明の実施の形態を図面を参照して説明する。
図1は、本発明の一実施形態に係る内燃機関及び蒸発燃料処理装置の構成を示す図である。同図において、内燃機関(以下単に「エンジン」という)1は吸気管2を有し、吸気管2の途中にはスロットル弁3が配されている。また、スロットル弁3にはスロットル弁開度(TH)センサ4が連結されており、当該スロットル弁3の開度に応じた電気信号を出力して電子制御ユニット(以下「ECU」という)5に供給する。
燃料噴射弁6は、吸気管2の途中であってエンジン1とスロットル弁3との間の図示しない吸気弁の少し上流側に各気筒毎に設けられている。また、各燃料噴射弁6は燃料供給管7を介して燃料タンク9に接続されており、燃料供給管7の途中には燃料ポンプ8が設けられている。燃料タンク9は給油のための給油口10を有しており、給油口10にはフィラーキャップ11が取り付けられている。
燃料噴射弁6はECU5に電気的に接続され、該ECU5からの信号によりその開弁時間が制御される。吸気管2のスロットル弁3の下流側には吸気管内絶対圧PBAを検出する吸気管内絶対圧(PBA)センサ13、及び吸気温TAを検出する吸気温(TA)センサ14が装着されている。これらのセンサの検出信号は、ECU5に供給される。
エンジン1の図示しないカム軸周囲又はクランク軸周囲にはエンジン回転数(エンジン回転速度)を検出するエンジン回転数(NE)センサ17が取付けられている。エンジン回転数センサ17はエンジン1のクランク軸の180度回転毎に所定のクランク角度位置でパルス(TDCパルス)を出力する。エンジン1の冷却水温TWを検出するエンジン水温センサ18及びエンジン1の排気中の酸素濃度を検出する酸素濃度センサ(以下「LAFセンサ」という)19が設けれられており、これらのセンサ17〜19の検出信号はECU5に供給される。LAFセンサ19は、排気中の酸素濃度(エンジン1に供給される混合気の空燃比)にほぼ比例する検出信号を出力する。
ECU5にはさらに、大気圧PAを検出する大気圧センサ41、及びエンジン1により駆動される車両の走行速度(車速)VPを検出する車速センサ42が接続されており、これらのセンサの検出信号がECU5に供給される。
燃料タンク9は、チャージ通路31を介してキャニスタ33に接続され、キャニスタ33は、吸気管2のスロットル弁3の下流側にパージ通路32を介して接続されている。
キャニスタ33は、燃料タンク9内の蒸発燃料を吸着(捕集)するための活性炭を内蔵する。キャニスタ33には、空気通路37が接続されており、キャニスタ33は空気通路37を介して大気に連通可能となっている。
チャージ通路31には、圧力センサ15が設けられており、その検出信号はECU5に供給される。圧力センサ15の出力PTANKは、キャニスタ33及び燃料タンク9内の圧力が安定している定常状態では、燃料タンク内の圧力に等しくなるが、キャニスタ33または燃料タンク9内の圧力が変化しているとき、実際のタンク内圧とは異なる圧力を示す。以下の説明では、圧力センサ15の出力を「タンク内圧PTANK」という。
キャニスタ33は、燃料タンク9内の蒸発燃料を吸着するための活性炭を内蔵する。キャニスタ33には、空気通路37が接続されており、キャニスタ33は空気通路37を介して大気に連通可能となっている。
空気通路37の途中にはベントシャット弁(開閉弁)38が設けられている。ベントシャット弁38は、ECU5によりその作動が制御される電磁弁であり、給油時及びキャニスタ33に貯蔵された蒸発燃料を吸気管2に供給するときに、開弁される。ベントシャット弁38は、駆動信号が供給されないときは、開弁する常開型の電磁弁である。後述する蒸発燃料処理装置の減圧処理を行うときは、閉弁される。
パージ通路32には、パージ制御弁34が設けられている。パージ制御弁34は、その制御信号のオン−オフデューティ比を変更することにより流量を連続的に制御することができるように構成された電磁弁であり、その作動はECU5により制御される。なお、パージ制御弁34はその弁開度を連続的に変更可能な電磁弁を使用してもよく、上記デューティ比は、このような弁開度連続可変型の電磁弁における弁開度に相当する。
燃料タンク9で蒸発燃料が発生すると、キャニスタ33に蒸発燃料が貯蔵される。エンジン1の所定運転状態において、パージ制御弁34のデューティ制御が行われ、適量の蒸発燃料がキャニスタ33から吸気管2に供給される。
燃料タンク9、チャージ通路31、キャニスタ33,パージ通路32、空気通路37、ベントシャット弁38、及びパージ制御弁34により、蒸発燃料処理装置が構成される。
ECU5は各種センサ等からの入力信号波形を整形し、電圧レベルを所定レベルに修正し、アナログ信号値をデジタル信号値に変換する等の機能を有する入力回路、中央演算処理ユニット(以下「CPU」という)、CPUで実行される演算プログラム及び演算結果等を記憶する記憶回路、並びに燃料噴射弁6、パージ制御弁34、及びベントシャット弁38に駆動信号を供給する出力回路を備えている。
ECU5のCPUは、エンジン回転数センサ17、吸気管内絶対圧センサ13、エンジン水温センサ18などの各種センサの出力信号に応じてエンジン1に供給する燃料量制御、パージ制御弁34のデューティ制御等を行う。
ECU5のCPUは、燃料噴射弁6の開弁時間TOUTを、下記式(1)により算出する。
TOUT=TIM×KAF×K1+K2 (1)
TIMは基本燃料量、具体的には燃料噴射弁6の基本燃料噴射時間であり、エンジン回転数NE及び吸気管内絶対圧PBAに応じて設定されたTIマップを検索して決定される。TIマップは、エンジン回転数NE及び吸気管内絶対圧PBAに対応する運転状態において、エンジンに供給する混合気の空燃比がほぼ理論空燃比になるように設定されている。すなわち、基本燃料量TIMは、1TDC期間(隣り合うTDCパルスの時間間隔)当たりの、エンジン1の吸入空気流量(質量流量)にほぼ比例する値を有する。
KAFは、LAFセンサ19の出力に応じて設定される空燃比補正係数である。空燃比補正係数KAFは、LAFセンサ19により検出される空燃比が目標空燃比と一致するように設定される。
またK1及びK2は夫々各種エンジンパラメータ信号に応じて演算される他の補正係数および補正変数であり、エンジン運転状態に応じた燃費特性、エンジン加速特性等の諸特性の最適化が図れるような所定値に設定される。
ECU5のCPUは、さらに蒸発燃料処理装置の故障診断処理、具体的には蒸発燃料処理装置の大孔漏れ、すなわちフィラーキャップ外れの有無を判定する処理を実行する。以下、図2〜図7に示すフローチャートを参照して、この故障診断処理を説明する。図2〜図7に示す処理は、いずれも所定時間(例えば80ミリ秒)毎にECU5のCPUで実行される。
図2は、フィラーキャップ外れ判定の第1実行条件を判定する処理のフローチャートである。
ステップS11では、禁止フラグFCAPKINSIが「1」であるか否かを判別し、この答が肯定(YES)であるときは、フィラーキャップ外れ判定が禁止されていないので、ステップS12に進む。ステップS12では、パージフロー正常フラグFOK90Eが「1」であるか否かを判別する。パージフロー正常フラグFOK90Eは、図示しない処理により、パージ通路32を介して吸気管2に供給される蒸発燃料を含む混合気(以下「パージガス」という)の流量が、正常であると判定されたとき「1」に設定される。
ステップS12の答が肯定(YES)であるときは、パージ制御弁正常フラグFOK92Eが「1」であるか否かを判別する(ステップS13)。パージ制御弁正常フラグFOK92Eは、図示しない処理により、パージ制御弁34の開弁故障(開弁した状態で固定され閉弁しない故障)が発生していないと判定されたとき「1」に設定される。
ステップS13の答が肯定(YES)であるときは、モニタモード変数EVPLKMODの値が「0」であるか否かを判別する(ステップS14)。モニタモード変数EVPLKMODは、外気温が低いとき「0」に設定される。ステップS14の答が否定(NO)であるときは、バッテリ電圧VBが下限電圧VBL(例えば10.5V)以上であるか否かを判別する(ステップS15)。
ステップS15の答が肯定(YES)であるときは、エンジン水温TWが所定下限水温TWCNCKL以上であるか否かを判別する(ステップS16)。この答が肯定(YES)であるときは、パージ実行フラグFPGACTが「1」であるか否かを判別する(ステップS17)。パージ実行フラグFPGACTは、パージガスを吸気管2に供給するパージを実行しているとき「1」に設定される。
ステップS17の答が肯定(YES)であるときは、積算パージ流量QPGCSUMが所定量QPGCSUMFCAP以上であるか否かを判別する。積算パージ流量QPGCSUMは、図示しない処理により算出されるパージ流量QPGCを、パージ開始時点から積算することにより算出される。パージ流量QPGCは、パージ実行中にパージ通路32を流れるパージガスの流量を示すパラメータであり、エンジン1の吸入空気流量QAIR、大気圧PAと吸気管内絶対圧PBAとの差圧などに応じて算出される。吸入空気流量QAIRは、基本燃料量TIMにエンジン回転数NE及び換算係数を乗算することにより算出される。パージ制御弁34の開弁デューティDOUTPGは、算出されたパージ流量QPGCにほぼ比例するように制御される。
ステップS18の答が肯定(YES)であるときは、第1実行条件成立と判定し、第1実行条件フラグFMCNDFCAPを「1」に設定する(ステップS19)。
一方、ステップS11〜S13,若しくはS15〜S18のいずれかの答が否定(NO)であるとき、またはステップS14の答が肯定(YES)であるときは、第1実行条件不成立と判定し、第1実行条件フラグFMCNDFCAPを「0」に設定する(ステップS20)。
図3は、フィラーキャップ外れ判定の第2実行条件を判定する処理のフローチャートである。
ステップS31では、第3実行条件フラグFEVPLKMが「1」であるか否かを判別する。第3実行条件フラグFEVPLKMは、後述する図4の処理において、第3実行条件が成立すると判定されたとき「1」に設定される。最初はこの答は否定(NO)であるので、直ちにステップS34に進む。
ステップS34では、フィードバック制御フラグFAFFBXが「1」であるか否かを判別する。フィードバック制御フラグFAFFBXは、LAFセンサ19の出力に応じた空燃比フィードバック制御が実行されているとき「1」に設定される。ステップS34の答が肯定(YES)であるときは、リミットフラグFKAFLMTYが「1」であるか否かを判別する。リミットフラグFKAFLMTYは、空燃比補正係数KAFがリミット処理により所定上限値または所定下限値に設定されているとき「1」に設定される。
ステップS35の答が否定(NO)であるときは、吸入空気流量QAIRが所定下限流量QAIRDEC以上であるか否かを判別する(ステップS36)。この答が肯定(YES)であるときは、車速VPが所定下限車速VPDECL以上であるか否かを判別する(ステップS37)。ステップS37の答が肯定(YES)であるときは、ダウンカウントタイマTDECHLDを所定時間TMDECHLD(例えば5秒)にセットしてスタートさせる(ステップS38)。
続くステップS39では、ホールドフラグFDECHLD及びホールド終了フラグFDECHLDENをともに「0」に設定し、ステップS46では、第2実行条件フラグFTDRCONDを「1」に設定する。
ステップS34,S36,若しくはS37の答が否定(NO)、またはステップS35の答が肯定(YES)であるときは、第3実行条件フラグFEVPLKMが「1」であるか否かを判別する(ステップS40)。最初は、この答は否定(NO)であるので、ステップS44に進み、ステップS38と同様にダウンカウントタイマTDECHLDを所定時間TMDECHLDにセットしてスタートさせる。ステップS45では、ホールドフラグFDECHLD及びホールド終了フラグFDECHLDENを「0」に設定するとともに、第2実行条件フラグFTDRCONDを「0」に設定する。
図4の処理で第3実行条件フラグFEVPLKMが「1」に設定されると、ステップS31の答が肯定(YES)となり、ステップS32に進んで、減圧終了フラグFTKDECENDが「1」であるか否かを判別する。減圧終了フラグFTKDECENDは、後述する図6の処理で蒸発燃料処理装置の減圧処理が終了したとき「1」に設定される(図6,ステップS106参照)。最初はステップS32の答が否定(NO)であるので、ホールド終了フラグFDECHLDENが「1」であるか否かを判別する(ステップS33)。最初はホールド終了フラグFDECHLDENは「0」であるので、前記ステップS34に進む。減圧終了フラグFTKDECENDまたはホールド終了フラグFDECHLDENが「1」に設定されたときは、直ちに前記ステップS46に進む。
また第3実行条件フラグFEVPLKMが「1」に設定されると、ステップS40の答が肯定(YES)となり、ステップS41に進む。ステップS41では、ステップS38またはS44でスタートされるダウンカウントタイマTDECHLDの値が「0」であるか否かを判別する。最初は、TDECHLD>0であるので、ステップS42に進み、ホールドフラグFDECHLDを「1」に設定し、ホールド終了フラグFDECHLDENを「0」に設定する。またタイマTDECHLDの値が「0」となると、ホールドフラグFDECHLDを「0」に戻し、ホールド終了フラグFDECHLDENを「1」に設定する(ステップS43)。その後、前記ステップS46に進む。
ステップS34〜S37の何れかからステップS40に進むときは、基本的には、第2実行条件不成立と判定するが、第3実行条件フラグFEVPLKMが「1」であって第3実行条件が成立しているときは、第2実行条件フラグFTDRCONDが「1」に保持される(ステップS40〜S43、S46)。
図4は、フィラーキャップ外れ判定の第3実行条件を判定する処理のフローチャートである。
ステップS51では、フィラーキャップ正常フラグFCHKFCAPOKが「1」であるか否かを判別する。フィラーキャップ正常フラグFCHKFCAPOKは、後述する図6の処理でフィラーキャップが正常に取り付けられていると判定されたとき「1」に設定される(図6,ステップS100参照)。最初はステップS51の答が否定(NO)であるので、ステップS52に進み、大気開放不良フラグFDLKPATMが「1」であるか否かを判別する。大気開放不良フラグFDLKPATMは、後述する図5の処理で蒸発燃料処理装置の大気開放が正常に実行されていないと判定されたとき「1」に設定される(図5,ステップS83参照)。
最初はステップS52の答は否定(NO)であるので、フィラーキャップ取付フラグFFCAPCLOSEが「1」であるか否かを判別する(ステップS53)。フィラーキャップ取付フラグFFCAPCLOSEは、図7の処理でフィラーキャップが取り付けられた可能性が高いと判定されたとき「1」に設定される(図7,ステップS127参照)。最初はステップS53の答は否定(NO)であるので、フィラーキャップ外れフラグFFCAPOPENが「1」であるか否かを判別する(ステップS54)。フィラーキャップ外れフラグFFCAPOPENは、図6の処理でフィラーキャップが外れていると判定されたとき「1」に設定される(図6,ステップS105参照)。なお、図7の処理でフィラーキャップ取付フラグFFCAPCLOSEが「1」に設定された後は、ステップS54はスキップされる。
最初はステップS54の答も否定(NO)であるので、ステップS55に進み、第1実行条件フラグFMCNDFCAPが「1」であるか否かを判別する。この答が肯定(YES)であるときは、第2実行条件フラグFTDRCONDが「1」であるか否を判別する(ステップS55)。
ステップS51,S52,若しくはS54の答が肯定(YES)であるとき、またはステップS55若しくはS56の答が否定(NO)であるときは、第3実行条件不成立と判定し、ステップS57に進む。
ステップS57では、ダウンカウントタイマTFCAPDLYを所定時間TMFCAPDLY(例えば5秒)にセットしてスタートさせる。次いでパージカット要求フラグFEVPPGを「0」に設定し(ステップS60)、パージカット終了フラグFEVPPGENDを「0」に設定する(ステップS65)。さらに、減圧終了フラグFTKDECENDが「1」であるか否かを判別する(ステップS66)。最初は、この答は否定(NO)であるので、ホールド終了フラグFDECHLDENが「1」であるか否かを判別する(ステップS67)。この答も最初は否定(NO)であるので、第3実行条件フラグFEVPLKMを「0」に設定し(ステップS69)、本処理を終了する。
減圧終了フラグFTKDECENDまたはホールド終了フラグFDECHLDENが「1」に設定されたときは、ステップS68に進み、パージ流量QPGCが「0」以下か否かを判別する。この答が肯定(YES)であってパージが行われていないときは、前記ステップS69に進み、パージ流量QPGCが「0」より大きいときは、直ちに本処理を終了する。
ステップS56の答が肯定(YES)であるときは、ステップS58に進み、パージカット終了フラグFEVPPGENDが「1」であるか否かを判別する。最初はこの答は否定(NO)であるので、ステップS57でスタートしたタイマTFCAPDLYの値が「0」であるか否かを判別する(ステップS59)。最初はTFCAPDLY>0であるので、前記ステップS60に進み、タイマTFCAPDLYの値が「0」となると、ステップS61に進み、パージカット要求フラグFEVPPGを「1」に設定する。パージカット要求フラグFEVPPGが「1」に設定されると、図示しない処理により、パージ流量QPGCを「0」まで漸減させる処理が行われる。
ステップS62では、パージ流量QPGCが「0」以下か否かを判別する。この答が否定(NO)であってパージが行われているときは、前記ステップS65に進む。パージ流量QPGCが「0」となると、パージカット終了フラグFEVPPGENDを「1」に設定し(ステップS63)、第3実行条件フラグFEVPLKMを「1」に設定する(ステップS64)。なお、パージカット終了フラグFEVPPGENDが「1」に設定された後は、ステップS58から直ちにステップS64に進む。
図5は、ベントシャット弁38を開弁し、蒸発燃料処理装置内に空気を導入する大気開放を実行する処理のフローチャートである。
ステップS71では、第3実行条件フラグFEVPLKMが「1」であるか否かを判別する。第3実行条件フラグFEVPLKMが「0」である間は、OK判定カウンタCPATMOK及びNG判定カウンタCPATMNGの値を「0」に設定し(ステップS72)、さらにベントシャット弁閉弁要求フラグFVSVCLFCAPを「0」に設定する(ステップS73)。
第3実行条件フラグFEVPLKMが「1」に設定されると、ステップS71からステップS74に進み、減圧終了フラグFTKDECENDが「1」であるか否かを判別する。最初はこの答は否定(NO)であるので、ホールド終了フラグFDECHLDENが「1」であるか否かを判別する(ステップS75)。通常はこの答も否定(NO)であるので、ステップS77に進み、OK判定カウンタCPATMOKの値がOK判定閾値CTPATMJDOK(例えば40)より大きいか否かを判別する。最初はこの答は否定(NO)であるので、ステップS79に進み、その時点のタンク内圧PTANKと、エンジン始動時のタンク内圧PTANKとの差(以下「圧力変化量」という)DPTANSTMの絶対値が、所定変化量PTVENT(例えば0.67kPa(5mmHg))より大きいか否かを判別する。この答が否定(NO)であるときは、OK判定カウンタCPATMOKを「1」だけインクリメントする(ステップS80)。その後本処理を終了する。
一方、ステップS79で|DPTANSTM|>PTVENTであるときは、NG判定カウンタCPATMNGを「1」だけインクリメントする(ステップS81)。次いでNGカウンタの値がNG判定閾値CTPATMJDNG(例えば40)より大きいか否かを判別する(ステップS82)。この答が否定(NO)である間は、直ちに本処理を終了する。ステップS77の答が肯定(YES)となる前に、ステップS82の答が肯定(YES)となると、大気開放が正常に行われていない(例えばベントシャット弁38の閉弁したままで開弁していない状態)と判定し、大気開放不良フラグFDLKPATMを「1」に設定する(ステップS83)。
NG判定カウンタCPATMNGの値がNG判定閾値CTPATMJDNGを超える前に、OK判定カウンタCPATMOKの値がOK判定閾値CTPATMJDOKを超えると、ステップS77からステップS78に進み、減圧許可フラグFTKDECを「1」に設定するとともに、ベントシャット弁閉弁要求フラグFVSVCLFCAPを「1」に設定する(ステップS78)。
図6の処理で減圧終了フラグFTKDECENDが「1」に設定されたとき、または図3の処理でホールド終了フラグFDECHLDENが「1」に設定されたときは、ステップS74またはS75からステップS76に進み、減圧許可フラグFTKDECを「0」に設定する。これにより、蒸発燃料処理装置の減圧処理は終了される。
図6は、フィラーキャップ外れの判定を行う処理のフローチャートである。
ステップS91では、第3実行条件フラグFEVPLKMが「1」であるか否かを判別する。この答が否定(NO)である間は、減圧終了フラグFTKDECENDを「0」に設定して(ステップS92)、本処理を終了する。
第3実行条件フラグFEVPLKMが「1」に設定されると、ステップS91からステップS93に進み、減圧許可フラグFTKDECが「1」であるか否かを判別する。この答が否定(NO)である間は、待ち時間カウンタCDECSTYの値を「0」に設定し(ステップS94)、積算減圧パージ流量QPGSMDECを「0」に設定して(ステップS95)、本処理を終了する。
減圧許可フラグFTKDECが「1」に設定されると、ステップS93からステップS96に進み、なましタンク内圧DPTNKAVEが目標圧DPFBEND(例えば−0.53kPa(−4mmHg))以下であるか否かを判別する。なましタンク内圧DPTNKAVEは、タンク内圧PTANKになまし処理を施し、さらにエンジン始動時のタンク内圧(ほぼ大気圧PAに等しい)をゼロ点とする差圧に変換したものであり、蒸発燃料処理装置の減圧処理を行うと負の値をとる。
最初はこの答は否定(NO)であるので、ステップS101に進み、待ち時間カウンタの値を「0」に設定し、次いでパージ流量QPGCが所定流量QPGSMLOW(例えば1リットル/min)以上であるか否かを判別する(ステップS102)。この答が肯定(YES)であるときは、下記式(2)により、積算減圧パージ流量QPGSMDECを算出する(ステップS103)。
QPGSMDEC=QPGSMDEC+QPGCF80 (2)
ここで、QPGCF80は、本処理の実行周期ΔTに対応するパージ量(QPGC×ΔT)である。
ステップS102でQPGC<QPGSMLOWであるときは、ステップS103はスキップされる。
ステップS104では、積算減圧パージ流量QPGSMDECが所定量QPGDEC9を超えたか否かを判別する。この答が否定(NO)である間は直ちに本処理を終了する。ステップS96の答が肯定(YES)となる前に、積算減圧パージ流量QPGSMDECが所定量QPGDEC9を超えると、フィラーキャップが外れていると判定し、フィラーキャップ外れフラグFCAPOPENを「1」に設定する(ステップS105)。続くステップS106では、減圧終了フラグFTKDECENDを「1」に設定し、本処理を終了する。
フィラーキャップ外れフラグFCAPOPENが「1」に設定されると、図4のステップS54の答が肯定(YES)となり、第3実行条件フラグFEVPLKMが「0」に戻される。したがって、図5の処理においてベントシャット弁閉弁要求フラグFVSVCLFCAPが「0」に設定され(ステップS73)、ベントシャット弁38が開弁される。また図6の処理において、減圧終了フラグFTKDECENDが「0」に設定される。
ステップS104の答が肯定(YES)となる前に、なましタンク内圧DPTNKAVEが目標圧DPFBENDに達すると、待ち時間カウンタCDECSTYを「1」だけインクリメントし(ステップS97)、その待ち時間カウンタCDECSTYの値が所定値CTDECSTY(例えば12)以上であるか否かを判別する(ステップS98)。CDECSTY<DTDECSTYである間は直ちに本処理を終了し、待ち時間カウンタCDECSTYの値が所定値CTDECSTYに達すると、フィラーキャップは正常に取り付けられていると判定し、フィラーキャップ外れフラグFCAPOPENを「0」に設定し、フィラーキャップ正常フラグFCHKFCAPOKを「1」に設定する(ステップS99,S100)。その後前記ステップS106に進む。
フィラーキャップ外れと判定されたときは、警告灯が点灯される。
図7は、フィラーキャップ外れと判定されたときに、その後フィラーキャップが取り付けられた可能性を判定する処理のフローチャートである。
ステップS111では、フィラーキャップ正常フラグFCHKFCAPOKが「1」であるか否かを判別し、その答が肯定(YES)であるときは、直ちに本処理を終了する。フィラーキャップ正常フラグFCHKFCAPOKが「0」であるときは、減圧終了フラグFTKDECENDが「1」であるか否かを判別する(ステップS112)。減圧終了フラグFTKDECENDが「0」であるときはフィラーキャップ外れフラグFCAPOPENが「1」であるか否かを判別する。ステップS113の答が肯定(YES)であるとき、すなわち図6の処理でフィラーキャップ外れと判定されたときは、ステップS116に進む。それ以外のときは、ステップS112またはステップS113からステップS114に進む。
ステップS114では、ダウンカウントタイマTCHKFCAPINIを所定時間TMCHKFCAPINI(例えば3秒)にセットしてスタートさせる。続くステップS115では、基準値セットフラグFQSMEVP0SET、取付判定実行フラグFFCAPMONI、及びフィラーキャップ取付フラグFFCAPCLOSEを、いずれも「0」に設定し、本処理を終了する。
ステップS116では、車速VPが所定低車速VPL(例えば2km/h)より低い、すなわち当該車両がほぼ停止しているか否かを判別する。この答が否定(NO)であるときは、ステップS114と同様に、ダウンカウントタイマTCHKFCAPINIを所定時間TMCHKFCAPINIにセットしてスタートさせる(ステップS117)。続くステップS119では、基準値セットフラグFQSMEVP0SETを「0」に設定し、取付判定実行フラグFFCAPMONIが「1」であるか否かを判別する。この答が否定(NO)であるときは直ちに本処理を終了し、肯定(YES)であるときはステップS125に進む。
ステップS116でVP<VPLであって当該車両がほぼ停止しているときは、ステップS114またはS117でスタートしたタイマTCHKFCAPINIの値が「0」であるか否かを判別する(ステップS118)。TCHKFCAPINI>0である間は、前記ステップS119に進む。タイマTCHKFCAPINIの値が「0」となると、ステップS121に進み、基準値セットフラグFQSMEVP0SETが「1」であるか否かを判別する。最初はこの答は否定(NO)であるので、積算パージ流量基準値QPGSUMEVP0を、その時点の積算パージ流量QPGCSUMに設定する(ステップS122)。
次いで、ベーパ量基準値VPRTTLEVP0を、その時点のトータルベーパ量VPRTTLFLに設定し(ステップS123)、さらに基準値セットフラグFQSMEVP0SET及び取付判定実行フラグFFCAPMONIをともに「1」に設定する(ステップS124)。トータルベーパ量VPRTTLFLは、後述する図9の処理で算出される、パージガス中の蒸発燃料濃度を示すパラメータである。
ステップS125では、積算パージ流量QPGCSUMから積算パージ流量基準値QPGSUMEVP0を減算した値が、所定変化量DQPGSUMEV(例えば10リットル)以上であるか否かを判別する。この答が否定(NO)であるときは、ベーパ量基準値VPRTTLEVP0からトータルベーパ量VPRTTLFLを減算した値が、所定ベーパ量変化量DVPRTTLEVP(例えば6)以上であるか否かを判別する(ステップS126)。その結果、ステップS126の答が肯定(YES)であるときは、ベーパ量が減少したので、フィラーキャップが取り付けられた可能性が高いと判定し、フィラーキャップ取付フラグFFCAPCLOSEを「1」に設定する(ステップS127)。その後本処理を終了する。
ステップS125の答が肯定(YES)またはステップS124の答が否定(NO)であるときは、直ちに本処理を終了する。
フィラーキャップ取付フラグFFCAPCLOSEが「1」に設定されると、図4のステップS53の答が肯定(YES)となり、ステップS54をスキップして、ステップS55に進む。したがって、第1実行条件及び第2実行条件が成立していれば、第3実行条件が成立し、図5及び図6の処理によるフィラーキャップが外れているか否かの判定が再度実行される。その結果、フィラーキャップが外れていないと判定されたときは、フィラーキャップ外れの警告灯が消灯される。これにより、運転者が警告灯の点灯に応じてフィラーキャップを取り付けたときは、短時間のうちに警告灯を消灯することができ、フィラーキャップを取り付けたにも拘わらず警告灯が消灯しないという不具合を解消することできる。
以上のように図7の処理によれば、フィラーキャップ外れと判定された後に、当該車両が停止し、該停止時点から所定時間TMCHKFCAPINIが経過した時点の積算パージ流量QPGCSUM及びトータルベーパ量VPRTTLFLが、それぞれ積算パージ流量基準値QPGSUMEVP0及びベーパ量基準値VPRTTLEVP0に設定される。そして、その後の積算パージ流量QPGCSUMの増加量(QPGCSUM−QPGSUMEVP0)が所定変化量DQPGSUMEVより小さく、かつトータルベーパ量VPRTTLFLの減少量(VPRTTLEVP0−VPRTTLFL)が所定ベーパ量変化量DVPRTTLEVP以上であるときは、フィラーキャップが取り付けられた可能性が高いと判定される。これは以下の理由によるものである。
フィラーキャップが外れている状態で、パージを実行すると、給油口から空気が流入するため、燃料タンク9から直接吸気管2へ蒸発燃料が供給される。そのため、通常のキャニスタからのパージに比べて蒸発燃料濃度が非常に高くなる。したがって、蒸発燃料濃度の急激な低下が検出されたとき(積算パージ流量QPGCSUMの増加量が小さくかつトータルベーパ量VPRTTLFLの減少量が大きいとき)は、フィラーキャップが取り付けられ、通常のキャニスタからのパージに移行した可能性が高いと判定することができる。すなわち、運転者がフィラーキャップ外れの警告を見て、フィラーキャップを取り付けた可能性が高いと判定することができる。
次にトータルベーパ量VPRTTLFLの算出手法を、図8〜図11を参照して説明する。トータルベーパ量VPRTTLFLは、LAFセンサ19の出力に応じて算出される空燃比補正係数KAFの学習値KREF及びKREFXに応じて算出される。
図8は、空燃比補正係数KAFの学習値KREF及びKREFXを算出する処理のフローチャートである。この処理は、LAFセンサ19の出力に応じた空燃比フィードバック制御の実行中に、TDCパルスの発生に同期して実行される。なおこの処理では、蒸発燃料のパージ(吸気管2への供給)実行中に第1学習値KREFが算出され、パージ停止中に第2学習値KREFXが算出される。
ステップS131では、パージ停止フラグFPGDLYが「1」であるか否かを判別する。パージ停止フラグFPGDLYは、第2学習値KREFXを算出するために蒸発燃料のパージを停止するとき「1」に設定される。
FPGDLY=0であってパージ停止中でないときは、学習許可フラグFKRFCNDが「1」であるか否かを判別する(ステップS132)。学習許可フラグFKRFCNDは、学習値KREFまたはKREFXの算出を許可するエンジン運転状態にあるとき「1」に設定される。FKRFCND=1であるときは、下記式(3)により、第1学習値KREFを算出する(ステップS133)。
KREF=CREF×KAF+(1−CREF)×KREF (3)
ここでCREFは、0から1の間の値に設定されるなまし係数であり、右辺のKREFは、前回算出値である。
ステップS134では、ステップS133で算出される第1学習値KREFのリミット処理を行う。すなわち、第1学習値KREFが所定下限値KREFLMTLより小さいときは、第1学習値KREFをその所定下限値KREFLMTLに設定し、第1学習値KREFが所定上限値KREFLMTHより大きいときは、第1学習値KREFをその所定上限値KREFLMTHに設定し、第1学習値KREFが所定上下限値KREFLMTH,KREFLMTLの間にあるときは、ステップS33で算出された値を維持する。その後、KREFX更新フラグFKREFXを「0」に設定し(ステップS142)、本処理を終了する。
ステップS131でFPGDLY=1であってパージ停止中であるときは、エンジン回転数NEが所定上限回転数NKREFXH(例えば4000rpm)より高いか否かを判別する(ステップS135)。この答が肯定(YES)であるときは前記ステップS142に進む。エンジン回転数NEが所定上限回転数NKREFXH以下であるときは、始動後経過時間タイマT10MSACRの値が所定時間TMKREFXB(例えば20秒)より大きいか否かを判別する(ステップS136)。この答が否定(NO)であるときは直ちにステップS138に進む。またT10MSACR>TMKREFXBであるときは、KREFX学習済みフラグFKREFXBUが「1」であるか否かを判別する(ステップS137)。KREFX学習済みフラグFKREFXBUは、バッテリが外されて、それまでの学習値が失われた後、最初に第2学習値KREFXの算出が完了したとき「1」に設定される。ステップS137の答が否定(NO)であって、第2学習値KREFXの算出が完了していないときは、直ちにステップS141に進む。FKREFXBU=1であって第2学習値KREFXの算出が完了したときは、ステップS138に進む。
ステップS138では、吸気温TAが所定吸気温TAREF(例えば80℃)より高いか否かを判別する。この答が否定(NO)であるときは、吸気管内絶対圧PBAが所定下限値PBAREFXL(例えば21.3kPa(160mmHg))より高いか否かを判別する(ステップS139)。この答が肯定(YES)であるときは、吸気管内絶対圧PBAが所定上限値PBAREFXH(例えば74.6kPa(560mmHg))より低いか否かを判別する(ステップS140)。ステップS140の答が肯定(YES)であるときは、ステップS141に進む一方、ステップS138の答が肯定(YES)、またはステップS139若しくはS140の答が否定(NO)であるときは、前記ステップS142に進む。
ステップS141では、学習許可フラグFKRFCNDが「1」であるか否かを判別し、この答が否定(NO)であるときは前記ステップS142に進む。FKRFCND=1であって学習値算出が許可されているときは、下記式(4)により、第2学習値KREFXを算出する。
KREFX=CREFX×KAF+(1−CREFX)×KREFX (4)
ここでCREFXは0から1の間の値に設定されるなまし係数であり、右辺のKREFXは前回算出値である。
ステップS144では、ステップS143で算出された第2学習値KREFXのリミット処理を行う。すなわち、第2学習値KREFXが所定下限値KRFXLMTLより小さいときは、第2学習値KREFXをその所定下限値KRFXLMTLに設定し、第2学習値KREFXが所定上限値KRFXLMTHより大きいときは、第2学習値KREFXをその所定上限値KRFXLMTHに設定し、第2学習値KREFXが所定上下限値KRFXLMTH,KRFXLMTLの間にあるときは、ステップS143で算出された値を維持する。その後、KREFX更新フラグFKREFXを「1」に設定し(ステップS145)、本処理を終了する。
図9は、後述する図11の処理で参照されるフラグの設定を行う処理のフローチャートである。この処理は所定時間(例えば10ミリ秒)毎に実行される。図9の処理では、具体的には、加算フラグFKAFEVP、減算フラグFKAFEVPM、及び偏差算出フラグKAFEVCの設定が行われる。
ステップS171では、吸入空気流量QAIRに応じて図10(a)に示すDKAFEVXHテーブルを検索し、上側判定偏差DKAFEVXHを算出する。DKAFEVXHテーブルは、吸入空気流量QAIRが増加するほど、上側判定偏差DKAFEVXHが減少するように設定されている。
ステップS172では、吸入空気流量QAIRに応じて図10(b)に示すDKAFEVXLテーブルを検索し、下側判定偏差DKAFEVXLを算出する。DKAFEVXLテーブルは、吸入空気流量QAIRが増加するほど、上側判定偏差DKAFEVXHが減少するように設定されている。
ステップS175では、空燃比補正係数KAFが、第2学習値KREFXから下側判定偏差DKAFEVXLを減算した値より小さいか否かを判別する(ステップS175)。この答が肯定(YES)であって、空燃比補正係数KAFが第2学習値KREFXよりリーン側に比較的大きくずれているときは、リッチ空燃比フラグFKACTRが「1」であるか否かを判別する(ステップS176)。リッチ空燃比フラグFKACTRは、LAFセンサ19により検出される空燃比が理論空燃比よりリッチ側にあるとき「1」に設定される。
ステップS176の答が肯定(YES)であって検出空燃比が理論空燃比よりリッチであるときは、加算フラグFKAFEVPを「1」に設定するとともに、加算フラグFKAFEVM及び偏差算出フラグFKAFEVCをともに「0」に設定する(ステップS177)。ステップS176でFKACTR=0であって検出空燃比が理論空燃比よりリッチでないときは、加算フラグFKAFEVP、加算フラグFKAFEVM及び偏差算出フラグFKAFEVCをいずれも「0」に設定する(ステップS180)。
ステップS175でKAF≧(KREFX−DKAFEVXL)であるときは、空燃比補正係数KAFが、第2学習値KREFXに上側判定偏差DKAFEVXHを加算した値より大きいか否かを判別する(ステップS178)。この答が肯定(YES)であって、空燃比補正係数KAFが第2学習値KREFXよりリッチ側に比較的大きくずれているときは、リーン空燃比フラグFKACTLが「1」であるか否かを判別する(ステップS179)。リーン空燃比フラグFKACTLは、LAFセンサ19により検出される空燃比が理論空燃比よりリーン側にあるとき「1」に設定される。
ステップS179の答が肯定(YES)であって検出空燃比が理論空燃比よりリーンであるときは、加算フラグFKAFEVMを「1」に設定するとともに、加算フラグFKAFEVP及び偏差算出フラグFKAFEVCをともに「0」に設定する(ステップS181)。またステップS179でFKACTL=0であるときは前記ステップS180に進む。
ステップS178の答が否定(NO)であって、空燃比補正係数KAFが第2学習値KREFXの近傍にあるときは、第1学習値KREFが第2学習値KREFXより小さいか否かを判別する(ステップS182)。この答が肯定(YES)であるときは、空燃比補正係数KAFが第2学習値KREFXより小さいか否かを判別する(ステップS183)。この答が肯定(YES)であるときは、リッチ空燃比フラグFKACTRが「1」であるか否かを判別する(ステップS184)。この答が肯定(YES)であるときは、加算フラグFKAFEVP及び加算フラグFKAFEVMを「0」に設定するとともに、偏差算出フラグFKAFEVCを「1」に設定する(ステップS185)。ステップS183またはS184の答が否定(NO)であるときは、加算フラグFKAFEVP、加算フラグFKAFEVM及び偏差算出フラグFKAFEVCをいずれも「0」に設定する(ステップS188)。
ステップS182で、KREF≧KREFXであるときは、ステップS186に進み、空燃比補正係数KAFが第2学習値KREFXより大きいか否かを判別する。その答が肯定(YES)であるときは、リーン空燃比フラグFKACTLが「1」であるか否かを判別する(ステップS187)。ステップS187の答が肯定(YES)であるときは、加算フラグFKAFEVP及び加算フラグFKAFEVMを「0」に設定するとともに、偏差算出フラグFKAFEVCを「1」に設定する(ステップS189)。ステップS186またはS187の答が否定(NO)であるときは、前記ステップS188に進む。
図9の処理によれば、空燃比補正係数KAFが第2学習値KREFXから比較的大きくリーン側にずれており、かつ検出空燃比がリッチ側にあるときは、パージガス中の蒸発燃料濃度が増加していると判定され、加算フラグFKAFEVPが「1」に設定される(ステップS177)。また空燃比補正係数KAFが第2学習値KREFXから比較的大きくリッチ側にずれており、かつ検出空燃比がリーン側にあるときは、パージガス中の蒸発燃料濃度が減少していると判定され、加算フラグFKAFEVMが「1」に設定される(ステップS181)。また、空燃比補正係数KAFが第2学習値KREFXの近傍にあり、第1学習値KREFが第2学習値KREFXより小さく、空燃比補正係数KAFが第2学習値KREFXより小さく、かつ検出空燃比がリッチ側にあるときは、第1学習値KREFと第2学習値KREFXの偏差(KREFX−KREF)に応じた量だけ、パージガス中の蒸発燃料濃度が増加したと判定され、偏差算出フラグFKAFEVCが「1」に設定される(ステップS185)。または空燃比補正係数KAFが第2学習値KREFXの近傍にあり、第1学習値KREFが第2学習値KREFX以上であり、空燃比補正係数KAFが第2学習値KREFXより大きく、かつ検出空燃比がリーン側にあるときは、偏差(KREFX−KREF)は負の値(または「0」)となり、この負の偏差に応じた量だけ、蒸発燃料濃度が減少したと判定され、偏差算出フラグFKAFEVCが「1」に設定される(ステップS189)。
図11は、トータルベーパ量VPRTTLFLを算出する処理のフローチャートである。この処理は所定時間(例えば10ミリ秒)毎に実行される。
ステップS151では、フィードバック制御フラグFAFFBXが「1」であるか否かを判別する。フィードバック制御フラグFAFFBXは、LAFセンサ19の出力に応じて空燃比補正係数KAFを算出する空燃比フィードバック制御を実行するとき「1」に設定される。ステップS151の答が肯定(YES)であるときは、パージ流量QPGCが「0」であるか否かを判別する(ステップS152)。この答が否定(NO)であるとき、すなわち空燃比フィードバック制御及び蒸発燃料のパージを実行しているときは、ダウンカウントタイマTVPRTTLDを所定時間TMVPRTLD(例えば10秒)にセットしてスタートさせる(ステップS157)。
ステップS158では、加算フラグFKAFEVPが「1」であるか否かを判別する。ステップS158の答が肯定(YES)であるときは、下記式(5)により、ベーパ量パラメータVPRTを算出する(ステップS159)。その後、ステップS166に進む。
VPRT=VPRTTLFL+DVPRTTLP (5)
ここでVPRTTLFLは、トータルベーパ量の前回算出値であり、DVPRTTLPは所定加算項である。
ステップS158でFKAFEVP=0であるときは、減算フラグFKAFEVMが「1」であるか否かを判別する(ステップS160)。ステップS160の答が肯定(YES)であるときは、下記式(6)により、ベーパ量パラメータVPRTを算出する(ステップS161)。その後、ステップS166に進む。
VPRT=VPRTTLFL−DVPRTTLM (6)
ここでVPRTTLFLは、トータルベーパ量の前回算出値であり、DVPRTTLMは所定減算項である。
ステップS160でFKAFEVM=0であるときは、偏差算出フラグFKAFEVCが「1」であるか否かを判別する。ステップS162の答が肯定(YES)であるときは、下記式(7)に図8の処理で算出される第1学習値KREF及び第2学習値KREFXを適用し、学習値偏差DKREFXを算出する(ステップS163)。
DKREFX=KREFX−KREF (7)
ステップS164では、下記式(8)に学習値偏差DKREFXを適用して、ベーパ量パラメータVPRTを算出する。その後ステップS166に進む。
VPRT=VPRTTLFL+DKREFX×CAFEV (8)
ここで、VPRTTLFLは、トータルベーパ量の前回算出値であり、CAFEVは、例えば0.03515に設定される所定間引き係数である。
ステップS162でFKAFEVC=0であるときは、ベーパ量パラメータVPRTを、トータルベーパ量の前回算出値VPRTTLFLに設定し(ステップS165)、ステップS166に進む。
一方、ステップS151の答が否定(NO)またはステップS152の答が肯定(YES)であるとき、すなわち空燃比フィードバック制御または蒸発燃料のパージを実行していないときは、ステップS153に進み、ステップS157でスタートされるダウンカウントタイマTVPRTTLDの値が「0」であるか否かを判別する。最初はこの答は否定(NO)であるので、ベーパ量パラメータVPRTを、トータルベーパ量の前回算出値VPRTTLFLに設定し(ステップS154)、ステップS166に進む。タイマTVPRTTLDの値が「0」となると、ステップS153からステップS155に進み、ステップS157と同様に、タイマTVPRTTLDを所定時間TMVPRTLDにセットしてスタートさせる。続くステップS156では、ベーパ量パラメータVPRTを下記式(9)により算出する。その後ステップS166に進む。
VPRT=VPRTTLFL−DVPRTTLD (9)
ここで、VPRTTLFLは、トータルベーパ量の前回算出値であり、DVPRTTLDは、所定強制減算項である。
ステップS166では、ベーパ量パラメータVPRTが所定上限値VPRTLMT以下であるか否かを判別し、この答が肯定(YES)であるときは、トータルベーパ量VPRTTLFLを、ベーパ量パラメータVPRTに設定する(ステップS167)。またベーパ量パラメータVPRTが所定上限値VPRTLMTより大きいときは、トータルベーパ量VPRTTLFLをその所定上限値VPRTLMTに設定する(ステップS168)。その後本処理を終了する。
図8、図9及び図11の処理によれば、空燃比補正係数KAFが第2学習値KREFXから比較的大きくずれているときは、蒸発燃料濃度が比較的大きく増加または減少していると判定され、トータルベーパ量VPRTTLFLが比較的大きく増加または減少するように更新される(図9,ステップS159,S161)。また空燃比補正係数KAFが第2学習値KREFXの近傍にあるときは、パージガス中の蒸発燃料濃度が低いことを示すので、第1学習値KREFと第2学習値KREFXの偏差である学習値偏差DKREFX(=KREFX−KREF)に間引き係数CAFEVを乗算した値だけ、比較的小さく増加または減少するように、トータルベーパ量VPRTTLFLが更新される(図9,ステップS164)。したがって、このようにして更新されるトータルベーパ量VPRTTLFLは、パージガス中の蒸発燃料濃度を示すパラメータとして使用することができる。
本実施形態では、チャージ通路31及びパージ通路32がそれぞれ第1の通路及び第2の通路に相当し、圧力センサ15が圧力検出手段に相当する。また、ECU5が、減圧手段、漏れ判定手段、確認手段、及び再判定実行手段を構成する。具体的には、図5のステップS78、及びパージ制御弁34のデューティ制御処理(図示せず)が減圧手段に相当し、図6の処理が漏れ判定手段に相当し、図7〜図11の処理が確認手段に相当し、図4のステップS53が再判定実行手段に相当する。
なお本発明は上述した実施形態に限るものではなく、種々の変形が可能である。例えば、上述した図6の処理では、なましタンク内圧DPTNKAVEが目標圧DPFBENDに達する前に、減圧処理開始時から積算される積算減圧パージ流量QPGSMDECが所定量QPGDEC9に達したときに、フィラーキャップ外れと判定される。すなわち、上述した実施形態では、「判定期間」が、積算減圧パージ流量QPGSMDECに応じて計測される。これに代えて、なましタンク内圧DPTNKAVEが目標圧DPFBENDに達する前に、減圧処理開始時からの経過時間が所定判定時間に達したときに、フィラーキャップ外れと判定するようにしてもよい。その場合には、「判定期間」はタイマにより計測される。
また上述した図7の処理では、パージガス中の蒸発燃料濃度の急激な変化に基づいて、フィラーキャップが取り付けらた可能性を判定したが、例えばエンジン1のアイドル時間が所定時間(例えば10秒以上)継続したとき、フィラーキャップが取り付けられた可能性が高いと判定するようにしてもよい。
また上述した実施形態では、大孔漏れの例としてフィラーキャップ外れを示したが、本発明の故障診断装置によれば、燃料タンク9の破損による大孔漏れがあるときにも、その大孔漏れを検出することができる。その場合は、図7の処理は、フィラーキャップが取り付けられた可能性の判定ではなく、何らかの応急処置で大孔が塞がれた可能性の判定を行うことになるが、判定手法は同一である。
また上述した実施形態では、圧力センサ15は、チャージ通路31に設けられているが、これに限るものではなく、例えば燃料タンク9やキャニスタ33に設けるようにしてもよい。
また上述した実施形態では、検出タンク内圧PTANKをなまし処理し、差圧に変換することにより得られるなましタンク内圧PTNKAVEを用いて、漏れ判定を行うようにしたが、検出タンク内圧PTANKそのものを用いてもよい。
また本発明は、クランク軸を鉛直方向とした船外機などのような船舶推進機用エンジンの吸気系に蒸発燃料を供給する蒸発燃料処理装置の故障診断にも適用が可能である。