JP2011185222A - 燃料供給系異常検出装置 - Google Patents
燃料供給系異常検出装置 Download PDFInfo
- Publication number
- JP2011185222A JP2011185222A JP2010053755A JP2010053755A JP2011185222A JP 2011185222 A JP2011185222 A JP 2011185222A JP 2010053755 A JP2010053755 A JP 2010053755A JP 2010053755 A JP2010053755 A JP 2010053755A JP 2011185222 A JP2011185222 A JP 2011185222A
- Authority
- JP
- Japan
- Prior art keywords
- fuel
- abnormality
- supply system
- fuel supply
- fuel pump
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02T—CLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
- Y02T10/00—Road transport of goods or passengers
- Y02T10/10—Internal combustion engine [ICE] based vehicles
- Y02T10/12—Improving ICE efficiencies
Landscapes
- Electrical Control Of Air Or Fuel Supplied To Internal-Combustion Engine (AREA)
- Combined Controls Of Internal Combustion Engines (AREA)
Abstract
【課題】コストの上昇を抑えつつ、燃料供給系の異常を検出することが可能な燃料供給系異常検出装置を提供する。
【解決手段】燃料供給系異常検出装置の構成として、エンジンに設置された空燃比センサの出力信号を基に空燃比がリッチかリーンかを判定する処理と、エンジン運転状態が異常監視運転領域に含まれる場合に前記空燃比がリーンと判定されたリーン判定回数を計数する処理と、前記リーン判定回数が所定回数以上となった場合を異常監視状態として認識する処理と、前記異常監視状態を連続して所定回数認識した場合に燃料供給系の異常と判断する処理とを実行する信号処理部を備えるという構成を採用する。
【選択図】図1
【解決手段】燃料供給系異常検出装置の構成として、エンジンに設置された空燃比センサの出力信号を基に空燃比がリッチかリーンかを判定する処理と、エンジン運転状態が異常監視運転領域に含まれる場合に前記空燃比がリーンと判定されたリーン判定回数を計数する処理と、前記リーン判定回数が所定回数以上となった場合を異常監視状態として認識する処理と、前記異常監視状態を連続して所定回数認識した場合に燃料供給系の異常と判断する処理とを実行する信号処理部を備えるという構成を採用する。
【選択図】図1
Description
本発明は、燃料供給系異常検出装置に関し、特に燃料ポンプを含む燃料供給系の異常を検出し、異常検出時にユーザへ報知すると共に、燃料供給系の破損防止に好適な燃料供給系異常検出装置に関する。
近年では、小型自動二輪車において排気ガスの低減及び燃費向上を目的として、燃料噴射量を高精度に制御可能な電子制御式燃料噴射装置の採用が促進されている。小型二輪車は大型二輪車と比較して燃料タンクが小さいことから、燃料タンク中に設置する燃料ポンプモジュールの小型化が求められている。この燃料ポンプモジュールの小型化に効果的な項目として、燃料ポンプの燃料吸入孔に配置される燃料フィルタの小型化が挙げられる。しかしながら、燃料フィルタの小型化は、燃料フィルタの有効寿命長さと相反する関係にあり、適切な有効寿命を設定することがより重要になると共に、燃料フィルタの詰まりによる燃料流量不足が発生した場合に、燃料流量不足を検出してユーザに報知し、さらに、燃料ポンプの破損防止のための処理を行うことが必要となる。
このような燃料フィルタを含む燃料供給系の異常検出に関する技術として、例えば下記特許文献1には、燃料ポンプ下流に燃圧検出手段を設け、燃料ポンプの駆動開始後の燃圧検出値が所定の基準値を越えた後の経過時間を計測し、燃圧検出値と経過時間の計測値から得られる燃圧の時間変化率に基づいて、燃料供給系の不良を判定する技術が開示されている。また、下記特許文献2には、燃料タンクからインジェクタへ至る燃料供給経路中に燃料ポンプと燃圧検出手段を設け、燃圧検出値が目標燃圧に一致するように燃料ポンプの回転数をフィードバック制御する際に、フィードバック補正量が基準制御量に対して所定範囲外となった場合に燃料供給系の異常と判定する技術が開示されている。
小型二輪車は大型二輪車と比較して、車両サイズが小さいことから、センサ等の補機類を設置するためのスペースに制限があり、また、車両価格についても大型二輪車と比較して安価に抑える必要がある。そのため、燃料供給系の異常検出を行うために、燃圧センサ等の燃圧検出手段を用いる場合、センサ設置スペースの確保が困難であり、さらにコストアップになるという問題がある。
また、燃料フィルタの小型化は燃料フィルタの有効寿命長さと相反する関係にあることから、燃料フィルタを小型化すると共に燃料フィルタの詰まりによる燃料流量不足の検出をしない場合、燃料フィルタの詰まりによる燃料流量不足を想定して定期的に燃料フィルタを交換する必要があるため、ユーザのランニングコストが増大するという問題がある。
さらに、燃料フィルタを小型化すると共に燃料フィルタの詰まりによる燃料流量不足の検出をしない場合には、燃料フィルタの詰まりによる燃料流量不足が発生した場合に原因特定が困難であり、燃料フィルタの詰まりをユーザへ報知することができない。つまり、燃料フィルタの交換を速やかに促すことができないことから、エンジンの出力低下によって商品性が低下した状態が継続するという問題がある。
本発明は、上述した事情に鑑みてなされたものであり、コストの上昇を抑えつつ、燃料供給系の異常を検出することが可能な燃料供給系異常検出装置を提供することを目的とする。
上記課題を解決するために、本発明では、燃料供給系異常検出装置に係る第1の解決手段として、エンジンに設置された空燃比センサの出力信号を基に空燃比がリッチかリーンかを判定する処理と、エンジン運転状態が異常監視運転領域に含まれる場合に前記空燃比がリーンと判定されたリーン判定回数を計数する処理と、前記リーン判定回数が所定回数以上となった場合を異常監視状態として認識する処理と、前記異常監視状態を連続して所定回数認識した場合に燃料供給系の異常と判断する処理とを実行する信号処理部を備えることを特徴とする。
このような特徴を有する燃料供給系異常検出装置によれば、従来のような燃圧センサ等の燃圧検出手段を設けることなく、既存の空燃比センサを利用して精度良く燃料供給系の異常を検出することができ、コストの上昇を抑えることができる。また、燃料供給系の異常を検出することで、燃料供給系の異常をユーザに報知することができるようになり、ユーザに燃料フィルタ等の交換を促すことができる。
また、エンジン運転状態が空燃比フィードバック領域に含まれていない場合(空燃比フィードバック制御を実施していない場合)であっても、空燃比センサの出力信号のみによって異常監視状態を精度よく認識することができると共に、ガス欠による燃料供給系の異常誤判断を防止することができる。
このような特徴を有する燃料供給系異常検出装置によれば、従来のような燃圧センサ等の燃圧検出手段を設けることなく、既存の空燃比センサを利用して精度良く燃料供給系の異常を検出することができ、コストの上昇を抑えることができる。また、燃料供給系の異常を検出することで、燃料供給系の異常をユーザに報知することができるようになり、ユーザに燃料フィルタ等の交換を促すことができる。
また、エンジン運転状態が空燃比フィードバック領域に含まれていない場合(空燃比フィードバック制御を実施していない場合)であっても、空燃比センサの出力信号のみによって異常監視状態を精度よく認識することができると共に、ガス欠による燃料供給系の異常誤判断を防止することができる。
また、本発明では、燃料供給系異常検出装置に係る第2の解決手段として、エンジンに設置された空燃比センサの出力信号を基に空燃比がリッチかリーンかを判定する処理と、エンジン運転状態が空燃比フィードバック領域に含まれる場合に前記空燃比のリッチ/リーン判定結果に応じて空燃比フィードバック補正値を算出する処理と、前記エンジン運転状態が前記空燃比フィードバック領域内の低負荷運転領域に含まれる場合に前記空燃比フィードバック補正値を基に低負荷補正学習値を算出する処理と、前記エンジン運転状態が前記空燃比フィードバック領域内の高負荷運転領域に含まれる場合に前記空燃比フィードバック補正値を基に高負荷補正学習値を算出する処理と、前記高負荷補正学習値と前記低負荷補正学習値との偏差が所定値以上となった場合を異常監視状態として認識する処理と、前記異常監視状態を連続して所定回数認識した場合に燃料供給系の異常と判断する処理とを実行する信号処理部を備えることを特徴とする。
このような特徴を有する燃料供給系異常検出装置によれば、従来のような燃圧センサ等の燃圧検出手段を設けることなく、既存の空燃比センサを利用して精度良く燃料供給系の異常を検出することができ、コストの上昇を抑えることができる。また、燃料供給系の異常を検出することで、燃料供給系の異常をユーザに報知することができるようになり、ユーザに燃料フィルタ等の交換を促すことができる。
また、空燃比フィードバック領域内の高負荷運転領域と低負荷運転領域との空燃比フィードバック補正値に基づいて異常監視状態を認識するため、燃料にアルコールが混合されて空燃比フィードバック補正値に影響があったとしても、異常監視状態を精度よく認識できると共に、ガス欠による燃料供給系の異常誤判断を防止することができる。
このような特徴を有する燃料供給系異常検出装置によれば、従来のような燃圧センサ等の燃圧検出手段を設けることなく、既存の空燃比センサを利用して精度良く燃料供給系の異常を検出することができ、コストの上昇を抑えることができる。また、燃料供給系の異常を検出することで、燃料供給系の異常をユーザに報知することができるようになり、ユーザに燃料フィルタ等の交換を促すことができる。
また、空燃比フィードバック領域内の高負荷運転領域と低負荷運転領域との空燃比フィードバック補正値に基づいて異常監視状態を認識するため、燃料にアルコールが混合されて空燃比フィードバック補正値に影響があったとしても、異常監視状態を精度よく認識できると共に、ガス欠による燃料供給系の異常誤判断を防止することができる。
また、本発明では、燃料供給系異常検出装置に係る第3の解決手段として、上記第1または第2の解決手段において、燃料噴射弁の電気的異常を検出する燃料噴射弁電気的異常検出部と、燃料ポンプの電気的異常を検出する燃料ポンプ電気的異常検出部との少なくとも一方を備え、前記信号処理部は、前記燃料噴射弁の電気的異常と前記燃料ポンプの電気的異常との少なくとも一方が検出された場合には、前記燃料供給系の異常判断を禁止することを特徴とする。
これにより、燃料噴射弁と燃料ポンプとの少なくとも一方に電気的異常が発生した場合であっても、それを燃料供給系の異常と誤判断してしまうことを防止することができる。
これにより、燃料噴射弁と燃料ポンプとの少なくとも一方に電気的異常が発生した場合であっても、それを燃料供給系の異常と誤判断してしまうことを防止することができる。
また、本発明では、燃料供給系異常検出装置に係る第4の解決手段として、上記第1〜第3のいずれかの解決手段において、点灯によって前記燃料供給系の異常をユーザに報知する報知部を備え、前記信号処理部は、前記燃料供給系の異常と連続して判断された回数が1回以上所定回数未満の場合、前記燃料供給系に軽度の異常が発生したことをユーザに報知するための第1の点灯パターンにて前記報知部を点灯させることを特徴とする。
これにより、ユーザに対して、燃料供給系に軽度の異常が発生したことを報知することができ、燃料フィルタ等の交換を促すことができる。
これにより、ユーザに対して、燃料供給系に軽度の異常が発生したことを報知することができ、燃料フィルタ等の交換を促すことができる。
また、本発明では、燃料供給系異常検出装置に係る第5の解決手段として、上記第4の解決手段において、前記信号処理部は、前記燃料供給系の異常と連続して判断された回数が前記所定回数以上となった場合、前記燃料供給系に重度の異常が発生したことをユーザに報知するための第2の点灯パターンにて前記報知部を点灯させることを特徴とする。
これにより、ユーザに対して、燃料供給系に重度の異常が発生したことを報知することができ、燃料フィルタ等の交換を促すことができる。
これにより、ユーザに対して、燃料供給系に重度の異常が発生したことを報知することができ、燃料フィルタ等の交換を促すことができる。
また、本発明では、燃料供給系異常検出装置に係る第6の解決手段として、上記第1〜第5の解決手段において、前記信号処理部は、前記エンジンの運転状態に基づいて燃料噴射量を算出する処理と、前記燃料噴射量に基づいて燃料ポンプの吐出流量が要求される最小限度となるように前記燃料ポンプの通電デューティ比率を決定する処理と、前記燃料供給系の異常と連続して判断された回数が1回以上所定回数未満の場合に、前記燃料ポンプの吐出流量が増加するように前記通電デューティ比率を補正する処理とを実行することを特徴とする。
このように、燃料供給系の異常と連続して判断された回数が1回以上所定回数未満の場合、つまり比較的軽度の詰まり異常が発生したと推定される場合、燃料ポンプの吐出流量が増加するように燃料ポンプの通電デューティ比率を補正することにより、燃欠の発生を防止することができる。
このように、燃料供給系の異常と連続して判断された回数が1回以上所定回数未満の場合、つまり比較的軽度の詰まり異常が発生したと推定される場合、燃料ポンプの吐出流量が増加するように燃料ポンプの通電デューティ比率を補正することにより、燃欠の発生を防止することができる。
また、本発明では、燃料供給系異常検出装置に係る第7の解決手段として、上記第6の解決手段において、前記信号処理部は、前記燃料供給系の異常と連続して判断された回数が前記所定回数以上となった場合には、前記通電デューティ比率を100%にすることを特徴とする。
このように、燃料供給系の異常と連続して判断された回数が所定回数以上となった場合には、つまり比較的重度の詰まり異常が発生したと推定される場合には、燃料ポンプの通電デューティ比率を100%にして、最大吐出流量で燃料ポンプから燃料噴射弁へ燃料供給することにより、燃欠の発生を防止することができる。
このように、燃料供給系の異常と連続して判断された回数が所定回数以上となった場合には、つまり比較的重度の詰まり異常が発生したと推定される場合には、燃料ポンプの通電デューティ比率を100%にして、最大吐出流量で燃料ポンプから燃料噴射弁へ燃料供給することにより、燃欠の発生を防止することができる。
また、本発明では、燃料供給系異常検出装置に係る第8の解決手段として、上記第1〜第7のいずれかの解決手段において、前記信号処理部は、前記燃料供給系の異常と連続して判断された回数が所定回数以上となった場合、前記エンジン運転状態に応じて前記燃料噴射量の減量、または燃料噴射の停止を行うことを特徴とする。
このように、燃料供給系の異常と連続して判断された回数が所定回数以上となった場合、つまり比較的重度の詰まり異常が発生したと推定される場合には、現在のエンジン運転状態に応じて燃料噴射量の減量、または燃料噴射の停止を行うことで、燃料供給系の異常に応じた適切な燃料噴射を行うことができる。
このように、燃料供給系の異常と連続して判断された回数が所定回数以上となった場合、つまり比較的重度の詰まり異常が発生したと推定される場合には、現在のエンジン運転状態に応じて燃料噴射量の減量、または燃料噴射の停止を行うことで、燃料供給系の異常に応じた適切な燃料噴射を行うことができる。
また、本発明では、燃料供給系異常検出装置に係る第9の解決手段として、上記第1〜第7のいずれかの解決手段において、前記信号処理部は、前記エンジン運転状態に基づいて前記燃料噴射量を算出する一方、前記燃料供給系の異常と連続して判断された回数が所定回数以上となった場合、前記算出した燃料噴射量に基づいて1時間当りの燃料噴射量を算出し、当該1時間当りの燃料噴射量が規定流量以上の場合には、前記規定流量を越えないような前記燃料噴射量を再算出することを特徴とする。
このように、比較的重度の詰まり異常が発生したと推定される場合には、1時間当りの燃料噴射量が規定流量を越えないような前記燃料噴射量を再算出することにより、上記第9の解決手段を採用した場合と比べて、高精度に燃料噴射量を制御することができる。
このように、比較的重度の詰まり異常が発生したと推定される場合には、1時間当りの燃料噴射量が規定流量を越えないような前記燃料噴射量を再算出することにより、上記第9の解決手段を採用した場合と比べて、高精度に燃料噴射量を制御することができる。
本発明によれば、コストの上昇を抑えつつ、燃料供給系の異常を検出することが可能な燃料供給系異常検出装置を提供することができる。
以下、本発明の一実施形態について、図面を参照しながら説明する。
図1は、本実施形態における燃料供給系異常検出装置(ECU)を備えるエンジン制御システムの構成概略図である。この図1に示すように、本実施形態におけるエンジン制御システムは、エンジン1、燃料供給系2、インジケータ3、ECU(Electronic Control Unit)4から概略構成されている。
図1は、本実施形態における燃料供給系異常検出装置(ECU)を備えるエンジン制御システムの構成概略図である。この図1に示すように、本実施形態におけるエンジン制御システムは、エンジン1、燃料供給系2、インジケータ3、ECU(Electronic Control Unit)4から概略構成されている。
エンジン1は、4サイクルエンジンであり、シリンダ10、ピストン11、コンロッド12、クランクシャフト13、吸気バルブ14、排気バルブ15、点火プラグ16、点火コイル17、吸気管18、エアクリーナ19、スロットルバルブ20、インジェクタ21、吸気圧センサ22、吸気温センサ23、スロットル開度センサ24、排気管25、O2センサ26、三元触媒コンバータ27、冷却水温センサ28及びクランク角度センサ29から概略構成されている。
シリンダ10は、内部に設けられたピストン11を、吸気、圧縮、燃焼(膨張)、排気の4行程を繰り返すことによって往復運動させるための中空の円筒形状部材であり、空気と燃料との混合気を燃焼室10bに供給するための流路である吸気ポート10a、上記混合気を留め、圧縮行程において圧縮された混合気を燃焼行程において燃焼させるための空間である燃焼室10b、排気行程において燃焼室10bから排気ガスを外部に排出するための流路である排気ポート10cが設けられている。また、このシリンダ10の外壁には、冷却水を循環させるための冷却水路10dが設けられている。
ピストン11には、ピストン11の往復運動を回転運動に変換するためのクランクシャフト13がコンロッド12を介して連結されている。クランクシャフト13は、ピストン11の往復方向と直交する方向に延在しており、不図示のフライホイール、ミッションギア等と連結されている。また、このクランクシャフト13には、クランク角度を検出するために用いられるタイミングロータ13aが同軸接続されている。このタイミングロータ13aの外周には、複数の突起が回転方向に対して、各突起の後端が等角度間隔(例えば20°間隔)になるように設けられている。
吸気バルブ14は、吸気ポート10aにおける燃焼室10b側の開口部を開閉するための弁部材であり、不図示のカムシャフトと連結されており、当該カムシャフトによって各行程に応じて開閉駆動される。排気バルブ15は、排気ポート10cにおける燃焼室10b側の開口部を開閉するための弁部材であり、不図示のカムシャフトと連結されており、当該カムシャフトによって各行程に応じて開閉駆動される。
点火プラグ16は、燃焼室10bの内側に電極が露出するように燃焼室10bの上部に設置されており、点火コイル17から供給される高電圧信号によって電極間に火花を発生させる。点火コイル17は、1次巻線と2次巻線からなるトランスであり、ECU4から1次巻線に供給される点火用電圧信号を昇圧して2次巻線から点火プラグ16に供給する。
吸気管18は、空気供給用の配管であり、内部の吸気流路18aが吸気ポート10aと連通するようにシリンダ10に連結されている。エアクリーナ19は、吸気管18の上流側に設けられており、外部から吸気される空気を清浄化して吸気流路18aに送り込む。スロットルバルブ20は、吸気流路18aの内部に設けられており、スロットル操作(もしくはアクセル操作)に応じて回動する。つまり、スロットルバルブ20の回動によって吸気流路18aの断面積が変化し、吸気量が変化する。インジェクタ21は、吸気ポート10a側に噴射口が露出するように吸気管18に設置された燃料噴射弁(例えばソレノイドバルブ等)であり、燃料供給系2から供給される燃料を、ECU4から入力されるインジェクタ駆動信号に応じて噴射する。
吸気圧センサ22は、例えばピエゾ抵抗効果を利用した半導体圧力センサであり、スロットルバルブ20の下流側において吸気流路18a側に感度面が露出するように吸気管18に設置されており、吸気管18内の吸気圧に応じた吸気圧信号をECU4に出力する。吸気温センサ23は、スロットルバルブ20の上流側において吸気流路18a側に感部が露出するように吸気管18に設置されており、吸気管18内の吸気温度に応じた吸気温信号をECU4に出力する。スロットル開度センサ24は、スロットルバルブ20の開度に応じたスロットル開度信号をECU4に出力する。
排気管25は、排気ガス排出用の配管であり、内部の排気流路25aが排気ポート10cと連通するようにシリンダ10に連結されている。O2センサ26は、例えばガス検知物質としてジルコニアを用いた酸素センサ(空燃比センサ)であり、ガス接触部が排気流路25a側に露出するように排気管25に設置されており、排気ガスの酸素濃度に応じた電圧信号をECU4に出力する。三元触媒コンバータ27は、例えば触媒としてプラチナ、パラジウム及びロジウムを用いた浄化装置であり、排気ガスが内部を流通するように排気流路25a中に設置されており、排気ガスに含まれる有害成分(炭化水素、一酸化炭素、窒素酸化物)を触媒反応によって除去する。
冷却水温センサ28は、冷却水路10d側に感部が露出するようにシリンダ10に設置されており、冷却水路10dを流れる冷却水の温度に応じた冷却水温信号をECU4に出力する。クランク角度センサ29は、例えば電磁式ピックアップセンサであり、タイミングロータ13aの外周に設けられた各突起がセンサ近傍を通過する毎に極性の異なる1対のパルス状の信号をECU4に出力する。より詳細には、クランク角度センサ29は、回転方向に対して各突起の前端が通過した場合、負極性の振幅を有するパルス状の信号を出力し、回転方向に対して各突起の後端が通過した場合、正極性の振幅を有するパルス状の信号を出力する。
燃料供給系2は、燃料タンク30と、この燃料タンク30内に設置され、燃料ポンプ31a、燃料フィルタ31b及びプレッシャレギュレータ31cを備える燃料ポンプモジュール31とから構成されている。燃料タンク30は、例えばガソリン燃料、或いはアルコール燃料などの燃料を貯留するための容器である。燃料ポンプ31aは、ECU4から入力される燃料ポンプ駆動信号に応じて燃料タンク30内の燃料を吸入し、プレッシャレギュレータ31cを介してインジェクタ21の燃料入口に圧送する。燃料フィルタ31bは、燃料ポンプ31aの燃料吸入孔に配置された異物除去用フィルタである。プレッシャレギュレータ31cは、インジェクタ21に供給される燃料の圧力(燃圧)を所望の値に保持するための調圧弁である。
インジケータ3は、ECU4から入力されるインジケータ駆動信号に応じて点灯するLEDランプ等から構成されており、燃料供給系2の異常やエンジン1の動作状態等をユーザに報知する報知部として用いられる。
ECU4は、エンジン制御システムの全体動作を統括制御するものであり、図2に示すように、波形整形回路40、回転数カウンタ41、A/D変換器42、点火回路43、インジェクタ駆動回路44、インジェクタ電気的異常検出回路45、燃料ポンプ駆動回路46、燃料ポンプ電気的異常検出回路47、インジケータ駆動回路48、ROM(Read Only Memory)49、EEPROM(Electronically Erasable and Programmable Read Only Memory)50、RAM(Random Access Memory)51、タイマ52及びCPU(Central Processing Unit)53を備えている。
波形整形回路40は、クランク角度センサ29から入力されるクランク信号を、方形波のパルス信号(例えば負極性のクランク信号をハイレベルとし、正極性及びグランドレベルのクランク信号をローレベルとする)に波形整形し、回転数カウンタ41及びCPU53に出力する。つまり、この方形波のパルス信号は、クランクシャフト13が20°回転するのに要した時間を周期とする信号である。以下では、この波形整形回路40から出力される方形波のパルス信号をクランクパルス信号と称す。
回転数カウンタ41は、上記波形整形回路40から入力されるクランクパルス信号に基づいてエンジン回転数を算出し、その算出結果をCPU53に出力する。A/D変換器42は、吸気圧センサ22から入力される吸気圧信号、吸気温センサ23から入力される吸気温信号、スロットル開度センサ24から入力されるスロットル開度信号、O2センサ26から入力される電圧信号、及び冷却水温センサ28から入力される冷却水温信号を、デジタル信号(吸気圧値、吸気温値、スロットル開度値、O2センサ出力電圧値、冷却水温値)に変換してCPU53に出力する。点火回路43は、不図示のバッテリから供給される電源電圧を蓄積するコンデンサを備え、CPU53から入力される点火制御信号に応じて、コンデンサに蓄積された電荷を点火用電圧信号として点火コイル17の1次巻線に放電する。
インジェクタ駆動回路44は、CPU53から入力される燃料噴射制御信号に応じて、インジェクタ駆動信号を生成してインジェクタ21に出力する。インジェクタ電気的異常検出回路45(燃料噴射弁電気的異常検出部)は、インジェクタ21の電気的な異常を検出するための回路であり、インジェクタ駆動状態、即ち通電/非通電の状態信号をCPU53に出力する。具体的には、このインジェクタ電気的異常検出回路45は、インジェクタ21が通電状態にある場合にローレベル信号を出力し、非通電状態にある場合にハイレベル信号をCPU53に出力する。インジェクタ駆動回路44から出力されるインジェクタ駆動信号とインジェクタ電気的異常検出回路45から出力される通電/非通電状態信号との論理が一致している場合に、インジェクタ21は電気的に正常であると判断できる一方、断線、短絡等が発生した場合には上記の論理が不一致となり、インジェクタ21は電気的に異常であると判断できる。
燃料ポンプ駆動回路46は、CPU53から入力される燃料供給制御信号に応じて、燃料ポンプ駆動信号を生成して燃料ポンプ31aに出力する。燃料ポンプ異常検知回路47(燃料ポンプ電気的異常検出部)は、燃料ポンプ31aの電気的な異常を検出するための回路であり、燃料ポンプ駆動状態、即ち通電/非通電の状態信号をCPU53に出力する。具体的には、この燃料ポンプ電気的異常検出回路47は、燃料ポンプ31aが通電状態にある場合にローレベル信号を出力し、非通電状態にある場合にハイレベル信号をCPU53に出力する。燃料ポンプ駆動回路46から出力される燃料ポンプ駆動信号と燃料ポンプ電気的異常検出回路47から出力される通電/非通電状態信号との論理が一致している場合に、燃料ポンプ31aは電気的に正常であると判断できる一方、断線、短絡等が発生した場合には上記の論理が不一致となり、燃料ポンプ31aは電気的に異常であると判断できる。
インジケータ駆動回路48は、CPU53から入力される報知制御信号に応じて、インジケータ駆動信号を生成してインジケータ3に出力する。ROM49は、CPU53の各種機能を実現するための制御プログラムや各種設定データを予め記憶している不揮発性メモリである。EEPROM50は、CPU53からの要求に応じて各種データを記憶する書き換え可能な不揮発性メモリである。RAM51は、CPU53が制御プログラムに従って各種処理を実行する際に、データの一時保存先に用いられる揮発性のワーキングメモリである。タイマ52は、CPU53による制御の下、タイムカウントを行い、その結果(カウント値)をCPU53に出力する。
CPU53(信号処理部)は、ROM49に記憶されている制御プログラムに従い、波形整形回路40から得られるクランクパルス信号と、回転数カウンタ41から得られるエンジン回転数と、A/D変換器42から得られる吸気圧値、吸気温値、スロットル開度値、O2センサ出力電圧値及び冷却水温値とに基づいてエンジン1の運転制御を行う。
また、このCPU53は、本実施形態における特徴的な機能として、O2センサ出力電圧値(O2センサ(空燃比センサ)の出力信号)に基づいて、エンジン運転状態に見合った燃料噴射量が得られているか否かを判定し、否の場合に燃料供給系2の異常と判断する燃料供給系異常検出機能を有している。なお、本実施形態において、燃料供給系2の異常とは、主に燃料フィルタ31bの詰まりによる燃料供給不足(いわゆる燃欠)を指し、燃料ポンプ31aやインジェクタ21の電気的異常は除外している。
以下、上記の燃料供給系異常検出機能を実現するために、CPU53が実行するEEPROM読込み処理、燃料ポンプ駆動制御処理、O2フィードバック制御処理、燃料噴射量算出処理及び燃料噴射処理について詳細に説明する。
以下、上記の燃料供給系異常検出機能を実現するために、CPU53が実行するEEPROM読込み処理、燃料ポンプ駆動制御処理、O2フィードバック制御処理、燃料噴射量算出処理及び燃料噴射処理について詳細に説明する。
〔EEPROM読込み処理〕
最初に、システム起動時、つまりECU4の電源オン時(CPU53の起動時)に1回実行されるEEPROM読込み処理について、図3のフローチャートを参照しながら説明する。
<ステップS1>
図3に示すように、CPU53は、EEPROM読込み処理におけるステップS1の処理として、プログラムの初回実施か否かを判定し、「Yes」の場合にはステップS2の処理に移行する一方、「No」の場合にはEEPROM読込み処理を終了する。
最初に、システム起動時、つまりECU4の電源オン時(CPU53の起動時)に1回実行されるEEPROM読込み処理について、図3のフローチャートを参照しながら説明する。
<ステップS1>
図3に示すように、CPU53は、EEPROM読込み処理におけるステップS1の処理として、プログラムの初回実施か否かを判定し、「Yes」の場合にはステップS2の処理に移行する一方、「No」の場合にはEEPROM読込み処理を終了する。
<ステップS2>
CPU53は、上記ステップS1において「Yes」の場合、ステップS2の処理として、O2フィードバック補正学習値の読込み及びセットを行う。具体的には、CPU53は、EEPROM50に記憶されている3つのO2フィードバック補正学習値MREFHG1、MREFHG2及びMREFHG3を読込んでRAM51にセット(記憶)する。
CPU53は、上記ステップS1において「Yes」の場合、ステップS2の処理として、O2フィードバック補正学習値の読込み及びセットを行う。具体的には、CPU53は、EEPROM50に記憶されている3つのO2フィードバック補正学習値MREFHG1、MREFHG2及びMREFHG3を読込んでRAM51にセット(記憶)する。
なお、詳細は後述するが、これらO2フィードバック補正学習値MREFHG1、MREFHG2及びMREFHG3は、O2フィードバック制御処理が20ms周期で実行される度に算出及び更新されてEEPROM50に上書き保存されるパラメータである。つまり、前回のエンジン運転時において、電源オフ前に最終的に得られたO2フィードバック補正学習値MREFHG1、MREFHG2及びMREFHG3が、このステップS2によってRAM51にセットされることになる。
<ステップS3>
続いて、CPU53は、ステップS3の処理として、燃料ポンプ異常検出カウンタCTXAPXFPF及び燃料ポンプ異常監視カウンタCTXDPXFPFの読込み及びセットを行った後、EEPROM読込み処理を終了する。具体的には、CPU53は、EEPROM50に記憶されている燃料ポンプ異常検出カウンタCTXAPXFPF及び燃料ポンプ異常監視カウンタCTXDPXFPFを読込んでRAM51にセットする。
続いて、CPU53は、ステップS3の処理として、燃料ポンプ異常検出カウンタCTXAPXFPF及び燃料ポンプ異常監視カウンタCTXDPXFPFの読込み及びセットを行った後、EEPROM読込み処理を終了する。具体的には、CPU53は、EEPROM50に記憶されている燃料ポンプ異常検出カウンタCTXAPXFPF及び燃料ポンプ異常監視カウンタCTXDPXFPFを読込んでRAM51にセットする。
なお、詳細は後述するが、これら燃料ポンプ異常検出カウンタCTXAPXFPF及び燃料ポンプ異常監視カウンタCTXDPXFPFも、O2フィードバック制御処理が20ms周期で実行される度に算出及び更新されてEEPROM50に上書き保存されるパラメータである。つまり、前回のエンジン運転時において、電源オフ前に最終的に得られた燃料ポンプ異常検出カウンタCTXAPXFPF及び燃料ポンプ異常監視カウンタCTXDPXFPFが、このステップS3によってRAM51にセットされることになる。
〔燃料ポンプ駆動制御処理〕
次に、エンジン1の運転制御中において、5ms周期で実行される燃料ポンプ駆動制御処理について、図4及び図5のフローチャートを参照しながら詳細に説明する。
<ステップS11>
図4に示すように、CPU53は、燃料ポンプ駆動制御処理におけるステップS11の処理として、燃料ポンプ31aの初回駆動が実施済みか否かを判定し、「No」の場合にはステップS12の処理に移行する一方、「Yes」の場合にはステップS14の処理に移行する。具体的には、CPU53は、燃料ポンプ初回駆動済みフラグF_PUMPINIが「1」にセットされていれば「Yes」と判定し、「0」にセットされていれば「No」と判定する。
次に、エンジン1の運転制御中において、5ms周期で実行される燃料ポンプ駆動制御処理について、図4及び図5のフローチャートを参照しながら詳細に説明する。
<ステップS11>
図4に示すように、CPU53は、燃料ポンプ駆動制御処理におけるステップS11の処理として、燃料ポンプ31aの初回駆動が実施済みか否かを判定し、「No」の場合にはステップS12の処理に移行する一方、「Yes」の場合にはステップS14の処理に移行する。具体的には、CPU53は、燃料ポンプ初回駆動済みフラグF_PUMPINIが「1」にセットされていれば「Yes」と判定し、「0」にセットされていれば「No」と判定する。
<ステップS12>
CPU53は、上記ステップS11において「No」の場合、つまり燃料ポンプ31aの初回駆動が未実施であった場合、ステップS12の処理として、初回駆動時間TMFFPONが経過したか否かを判定し、「Yes」の場合にはステップS13の処理に移行する一方、「No」の場合にはステップS21の処理に移行する。ここで、初回駆動時間TMFFPONは、CPU53の起動時において3msに初期設定されるパラメータであり、CPU53は、タイマ52に対して初回駆動時間TMFFPONのカウントダウンを指示し、タイマ52からタイムアップ(TMFFPON=0)の通知を受けた場合に、初回駆動時間TMFFPONが経過したと判定する。
CPU53は、上記ステップS11において「No」の場合、つまり燃料ポンプ31aの初回駆動が未実施であった場合、ステップS12の処理として、初回駆動時間TMFFPONが経過したか否かを判定し、「Yes」の場合にはステップS13の処理に移行する一方、「No」の場合にはステップS21の処理に移行する。ここで、初回駆動時間TMFFPONは、CPU53の起動時において3msに初期設定されるパラメータであり、CPU53は、タイマ52に対して初回駆動時間TMFFPONのカウントダウンを指示し、タイマ52からタイムアップ(TMFFPON=0)の通知を受けた場合に、初回駆動時間TMFFPONが経過したと判定する。
<ステップS13>
CPU53は、上記ステップS12において「Yes」の場合、つまり初回駆動時間TMFFPONが経過した場合、ステップS13の処理として、燃料ポンプ初回駆動済みフラグF_PUMPINIを「1」にセットする。
CPU53は、上記ステップS12において「Yes」の場合、つまり初回駆動時間TMFFPONが経過した場合、ステップS13の処理として、燃料ポンプ初回駆動済みフラグF_PUMPINIを「1」にセットする。
<ステップS14>
CPU53は、上記ステップS11において「Yes」の場合(つまり燃料ポンプ初回駆動済みフラグF_PUMPINI=1の場合)、または上記ステップS13の終了後に、ステップS14の処理として、回転数カウンタ41から取得したエンジン回転数NEを参照して、エンストが発生したか否かを判定し、「No」の場合にはステップS15の処理に移行する一方、「Yes」の場合にはステップS22の処理に移行する。なお、CPU53は、エンジン回転数NEが「0」であった場合に、エンストが発生したと判定する。
CPU53は、上記ステップS11において「Yes」の場合(つまり燃料ポンプ初回駆動済みフラグF_PUMPINI=1の場合)、または上記ステップS13の終了後に、ステップS14の処理として、回転数カウンタ41から取得したエンジン回転数NEを参照して、エンストが発生したか否かを判定し、「No」の場合にはステップS15の処理に移行する一方、「Yes」の場合にはステップS22の処理に移行する。なお、CPU53は、エンジン回転数NEが「0」であった場合に、エンストが発生したと判定する。
<ステップS15>
CPU53は、上記ステップS14において「No」の場合、つまりエンストが発生していなかった場合、ステップ15の処理として、回転数カウンタ41から取得したエンジン回転数NEと、後述の燃料噴射量算出処理によって算出された燃料噴射量TIOUTとに基づいて、燃料ポンプ31aの吐出流量が要求される最小限度となるように燃料ポンプ通電デューティ比率を算出する。具体的には、エンジン回転数NEと、燃料噴射量TIOUTと、燃料ポンプ通電デューティ比率との対応関係を示す3次元マップがROM49に予め記憶されており、CPU53は、上記3次元マップを用いて、エンジン回転数NE及び燃料噴射量TIOUTの現在値に対応する燃料ポンプ通電デューティ比率を算出する。
CPU53は、上記ステップS14において「No」の場合、つまりエンストが発生していなかった場合、ステップ15の処理として、回転数カウンタ41から取得したエンジン回転数NEと、後述の燃料噴射量算出処理によって算出された燃料噴射量TIOUTとに基づいて、燃料ポンプ31aの吐出流量が要求される最小限度となるように燃料ポンプ通電デューティ比率を算出する。具体的には、エンジン回転数NEと、燃料噴射量TIOUTと、燃料ポンプ通電デューティ比率との対応関係を示す3次元マップがROM49に予め記憶されており、CPU53は、上記3次元マップを用いて、エンジン回転数NE及び燃料噴射量TIOUTの現在値に対応する燃料ポンプ通電デューティ比率を算出する。
なお、燃料ポンプ通電デューティ比率とは、燃料ポンプ31aに対する通電時間と非通電時間との比率(言い換えれば、燃料ポンプ31aに供給する燃料ポンプ駆動信号のデューティ比率)を指し、通電時間の割合が大きいほど(デューティ比率が高いほど)燃料ポンプ31aの吐出流量は増大する。つまり、エンジン回転数NEが高いほど、また、要求される燃料噴射量TIOUTが大きいほど、燃料ポンプ通電デューティ比率が高くなるように3次元マップは設定されている。
<ステップS16>
続いて、CPU53は、ステップS16の処理として、燃料ポンプ異常検出カウンタCTXAPXFPFを参照して、燃料ポンプ異常検出回数が所定回数(例えば3回)以上か否かを判定し、「No」の場合にはステップS17の処理に移行する一方、「Yes」の場合にはステップS21の処理に移行する。なお、燃料ポンプ異常検出カウンタCTXAPXFPFとは、後述のO2フィードバック制御処理において、燃料供給系2の異常と連続して判断された場合にインクリメントされるカウンタ変数であり、つまり燃料供給系2の異常と連続して判断された回数を示している。
続いて、CPU53は、ステップS16の処理として、燃料ポンプ異常検出カウンタCTXAPXFPFを参照して、燃料ポンプ異常検出回数が所定回数(例えば3回)以上か否かを判定し、「No」の場合にはステップS17の処理に移行する一方、「Yes」の場合にはステップS21の処理に移行する。なお、燃料ポンプ異常検出カウンタCTXAPXFPFとは、後述のO2フィードバック制御処理において、燃料供給系2の異常と連続して判断された場合にインクリメントされるカウンタ変数であり、つまり燃料供給系2の異常と連続して判断された回数を示している。
<ステップS17>
CPU53は、上記ステップS16において「No」の場合、つまり燃料ポンプ異常検出カウンタCTXAPXFPFが「3」未満の場合、ステップS17の処理として、燃料ポンプ異常検出済み(CTXAPXFPF≧1)か否かを判定し、「Yes」の場合にはステップS18の処理に移行する一方、「No」の場合にはステップS20の処理に移行する。
CPU53は、上記ステップS16において「No」の場合、つまり燃料ポンプ異常検出カウンタCTXAPXFPFが「3」未満の場合、ステップS17の処理として、燃料ポンプ異常検出済み(CTXAPXFPF≧1)か否かを判定し、「Yes」の場合にはステップS18の処理に移行する一方、「No」の場合にはステップS20の処理に移行する。
<ステップS18>
CPU53は、上記ステップS17において「Yes」の場合、つまり燃料ポンプ異常検出回数が1回以上3回未満(3>CTXAPXFPF≧1)の場合、ステップS18の処理として、ステップS15で算出した燃料ポンプ通電デューティ比率を補正する。具体的には、CPU53は、燃料ポンプ31aの吐出流量が増加する方向に燃料ポンプ通電デューティ比率を補正する(例えば通電時間を1.5倍とする)。
CPU53は、上記ステップS17において「Yes」の場合、つまり燃料ポンプ異常検出回数が1回以上3回未満(3>CTXAPXFPF≧1)の場合、ステップS18の処理として、ステップS15で算出した燃料ポンプ通電デューティ比率を補正する。具体的には、CPU53は、燃料ポンプ31aの吐出流量が増加する方向に燃料ポンプ通電デューティ比率を補正する(例えば通電時間を1.5倍とする)。
<ステップS19>
そして、CPU53は、ステップS19の処理として、燃料ポンプ通電デューティ比率が100%以上か否かを判定し、「No」の場合にはステップS20の処理に移行する一方、「Yes」の場合にはステップS21の処理に移行する。
そして、CPU53は、ステップS19の処理として、燃料ポンプ通電デューティ比率が100%以上か否かを判定し、「No」の場合にはステップS20の処理に移行する一方、「Yes」の場合にはステップS21の処理に移行する。
<ステップS20>
CPU53は、上記ステップS17において「No」の場合(つまり燃料ポンプ異常検出回数が0回(CTXAPXFPF=0)の場合)、または上記ステップS19において「No」の場合(つまり燃料ポンプ通電デューティ比率が100%未満の場合)、ステップS20の処理として、燃料ポンプ駆動回路46を制御して燃料ポンプ通電デューティ比率を有する燃料ポンプ駆動信号を燃料ポンプ31aに供給させる。これにより、燃料ポンプ通電デューティ比率に応じた量の燃料が燃料ポンプ31aからインジェクタ21へ供給されることになる。
CPU53は、上記ステップS17において「No」の場合(つまり燃料ポンプ異常検出回数が0回(CTXAPXFPF=0)の場合)、または上記ステップS19において「No」の場合(つまり燃料ポンプ通電デューティ比率が100%未満の場合)、ステップS20の処理として、燃料ポンプ駆動回路46を制御して燃料ポンプ通電デューティ比率を有する燃料ポンプ駆動信号を燃料ポンプ31aに供給させる。これにより、燃料ポンプ通電デューティ比率に応じた量の燃料が燃料ポンプ31aからインジェクタ21へ供給されることになる。
<ステップS21>
一方、CPU53は、上記ステップS12において「No」の場合(つまり初回駆動時間が経過していない場合)、または上記ステップS16において「Yes」の場合(つまり燃料ポンプ異常検出回数が3回以上(CTXAPXFPF≧3)の場合)、または上記ステップS19において「Yes」の場合(つまり燃料ポンプ通電デューティ比率が100%以上の場合)、ステップS21の処理として、燃料ポンプ駆動回路46を制御して100%の燃料ポンプ通電デューティ比率を有する燃料ポンプ駆動信号を燃料ポンプ31aに供給させる(つまり常時通電)。これにより、100%の燃料ポンプ通電デューティ比率に応じた量(最大吐出流量)の燃料が燃料ポンプ31aからインジェクタ21へ供給されることになる。
一方、CPU53は、上記ステップS12において「No」の場合(つまり初回駆動時間が経過していない場合)、または上記ステップS16において「Yes」の場合(つまり燃料ポンプ異常検出回数が3回以上(CTXAPXFPF≧3)の場合)、または上記ステップS19において「Yes」の場合(つまり燃料ポンプ通電デューティ比率が100%以上の場合)、ステップS21の処理として、燃料ポンプ駆動回路46を制御して100%の燃料ポンプ通電デューティ比率を有する燃料ポンプ駆動信号を燃料ポンプ31aに供給させる(つまり常時通電)。これにより、100%の燃料ポンプ通電デューティ比率に応じた量(最大吐出流量)の燃料が燃料ポンプ31aからインジェクタ21へ供給されることになる。
<ステップS22>
一方、CPU53は、上記ステップS14において「Yes」の場合(つまりエンストが発生した場合)、ステップS22の処理として、燃料ポンプ駆動回路46を制御して燃料ポンプ31aへの通電を停止させる(燃料ポンプ駆動信号の供給を停止させる)。
一方、CPU53は、上記ステップS14において「Yes」の場合(つまりエンストが発生した場合)、ステップS22の処理として、燃料ポンプ駆動回路46を制御して燃料ポンプ31aへの通電を停止させる(燃料ポンプ駆動信号の供給を停止させる)。
<ステップS23>
続いて、図5に示すように、CPU53は、上記ステップS20、S21、またはS22の処理終了後に、ステップS23の処理として、現在、燃料ポンプ31aに対する通電がオンか否か(通電期間か否か)を判定し、「Yes」の場合にはステップS24の処理に移行する一方、「No」の場合にはステップS25の処理に移行する。
続いて、図5に示すように、CPU53は、上記ステップS20、S21、またはS22の処理終了後に、ステップS23の処理として、現在、燃料ポンプ31aに対する通電がオンか否か(通電期間か否か)を判定し、「Yes」の場合にはステップS24の処理に移行する一方、「No」の場合にはステップS25の処理に移行する。
<ステップS24>
CPU53は、上記ステップS23において「Yes」の場合(つまり通電期間中の場合)、ステップS24の処理として、燃料ポンプ電気的異常検出回路47から入力される通電/非通電状態信号がローレベルか否かを判定し、「Yes」の場合、つまり燃料ポンプ駆動信号と通電/非通電状態信号との論理が一致し、燃料ポンプ31aが電気的に正常であると判断される場合には燃料ポンプ駆動制御処理を終了する一方、「No」の場合、つまり燃料ポンプ31aが電気的に異常であると判断される場合にはステップS26の処理に移行する。
CPU53は、上記ステップS23において「Yes」の場合(つまり通電期間中の場合)、ステップS24の処理として、燃料ポンプ電気的異常検出回路47から入力される通電/非通電状態信号がローレベルか否かを判定し、「Yes」の場合、つまり燃料ポンプ駆動信号と通電/非通電状態信号との論理が一致し、燃料ポンプ31aが電気的に正常であると判断される場合には燃料ポンプ駆動制御処理を終了する一方、「No」の場合、つまり燃料ポンプ31aが電気的に異常であると判断される場合にはステップS26の処理に移行する。
<ステップS25>
CPU53は、上記ステップS23において「No」の場合(つまり非通電期間中の場合)、ステップS25の処理として、燃料ポンプ電気的異常検出回路47から入力される通電/非通電状態信号がハイレベルか否かを判定し、「Yes」の場合、つまり燃料ポンプ駆動信号と通電/非通電状態信号との論理が一致し、燃料ポンプ31aが電気的に正常であると判断される場合には燃料ポンプ駆動制御処理を終了する一方、「No」の場合、つまり燃料ポンプ31aが電気的に異常であると判断される場合にはステップS26の処理に移行する。
CPU53は、上記ステップS23において「No」の場合(つまり非通電期間中の場合)、ステップS25の処理として、燃料ポンプ電気的異常検出回路47から入力される通電/非通電状態信号がハイレベルか否かを判定し、「Yes」の場合、つまり燃料ポンプ駆動信号と通電/非通電状態信号との論理が一致し、燃料ポンプ31aが電気的に正常であると判断される場合には燃料ポンプ駆動制御処理を終了する一方、「No」の場合、つまり燃料ポンプ31aが電気的に異常であると判断される場合にはステップS26の処理に移行する。
<ステップS26>
CPU53は、上記ステップS24において「No」の場合、または上記ステップS25において「No」の場合、つまり燃料ポンプ31aに電気的異常が発生した場合、ステップS26の処理として、燃料ポンプ電気的異常検出フラグF_XDRXFPRを「1」にセットした後、燃料ポンプ駆動制御処理を終了する。
CPU53は、上記ステップS24において「No」の場合、または上記ステップS25において「No」の場合、つまり燃料ポンプ31aに電気的異常が発生した場合、ステップS26の処理として、燃料ポンプ電気的異常検出フラグF_XDRXFPRを「1」にセットした後、燃料ポンプ駆動制御処理を終了する。
以上のように、燃料ポンプ駆動制御処理では、燃料供給系2の異常と連続して判断された回数が1回以上所定回数(例えば3回)未満の場合、つまり比較的軽度の詰まり異常が発生したと推定される場合、燃料ポンプ31aの吐出流量が増加するように燃料ポンプ通電デューティ比率を補正することにより、燃欠の発生を防止している。また、燃料供給系2の異常と連続して判断された回数が所定回数(例えば3回)以上となった場合、つまり比較的重度の詰まり異常が発生したと推定される場合には、燃料ポンプ通電デューティ比率を100%にして、最大吐出流量で燃料ポンプ31aからインジェクタ21へ燃料供給することにより、燃欠の発生を防止している。
〔O2フィードバック制御処理〕
次に、エンジン1の運転制御中において、20ms周期で実行されるO2フィードバック制御処理について、図6〜図15を参照しながら詳細に説明する。図6は、O2フィードバック制御処理のメインルーチンを表すフローチャートである。この図6に示すように、O2フィードバック制御処理は、O2センサ電圧読込み処理(ステップS31)と、O2フィードバック補正値算出処理(ステップS32)と、燃料ポンプ異常判断パラメータ算出処理(ステップS33)と、燃料ポンプ異常監視・検出判断処理(ステップS34)との4つのサブルーチンから構成されている。以下、各サブルーチンの処理について詳細に説明する。
次に、エンジン1の運転制御中において、20ms周期で実行されるO2フィードバック制御処理について、図6〜図15を参照しながら詳細に説明する。図6は、O2フィードバック制御処理のメインルーチンを表すフローチャートである。この図6に示すように、O2フィードバック制御処理は、O2センサ電圧読込み処理(ステップS31)と、O2フィードバック補正値算出処理(ステップS32)と、燃料ポンプ異常判断パラメータ算出処理(ステップS33)と、燃料ポンプ異常監視・検出判断処理(ステップS34)との4つのサブルーチンから構成されている。以下、各サブルーチンの処理について詳細に説明する。
(1)O2センサ電圧読込み処理
まず、図7のフローチャートを参照しながら、O2フィードバック制御処理における第1のサブルーチンであるO2センサ電圧読込み処理について説明する。
<ステップS31_1>
図7に示すように、CPU53は、O2センサ電圧読込み処理におけるステップS31_1の処理として、O2センサ電圧判定フラグF_VHGREFの値を前回O2センサ電圧判定フラグF_VHGREF1にセットすることで、前回O2センサ電圧判定フラグF_VHGREF1の更新を行う。なお、後述のように、O2センサ電圧判定フラグF_VHGREFが「1」の時、空気過剰率(空燃比)が「リッチ」であることを示し、O2センサ電圧判定フラグF_VHGREFが「0」の時、空燃比が「リーン」であることを示している。
まず、図7のフローチャートを参照しながら、O2フィードバック制御処理における第1のサブルーチンであるO2センサ電圧読込み処理について説明する。
<ステップS31_1>
図7に示すように、CPU53は、O2センサ電圧読込み処理におけるステップS31_1の処理として、O2センサ電圧判定フラグF_VHGREFの値を前回O2センサ電圧判定フラグF_VHGREF1にセットすることで、前回O2センサ電圧判定フラグF_VHGREF1の更新を行う。なお、後述のように、O2センサ電圧判定フラグF_VHGREFが「1」の時、空気過剰率(空燃比)が「リッチ」であることを示し、O2センサ電圧判定フラグF_VHGREFが「0」の時、空燃比が「リーン」であることを示している。
<ステップS31_2>
そして、CPU53は、ステップS31_2の処理として、A/D変換器42からO2センサ出力電圧値を読込み、その値をO2センサ出力電圧VHGにセットする。
そして、CPU53は、ステップS31_2の処理として、A/D変換器42からO2センサ出力電圧値を読込み、その値をO2センサ出力電圧VHGにセットする。
<ステップS31_3>
そして、CPU53は、ステップS31_3の処理として、O2センサ出力電圧VHGが閾値VHGREF以上か否かを判定し、「Yes」の場合にはステップS31_4の処理に移行する一方、「No」の場合にはステップS31_7の処理に移行する。ここで、閾値VHGREFは、O2センサ出力電圧VHGから現在の空燃比が「リッチ」なのか「リーン」なのかを判定するために設定された電圧値(例えば0.45V)である。
そして、CPU53は、ステップS31_3の処理として、O2センサ出力電圧VHGが閾値VHGREF以上か否かを判定し、「Yes」の場合にはステップS31_4の処理に移行する一方、「No」の場合にはステップS31_7の処理に移行する。ここで、閾値VHGREFは、O2センサ出力電圧VHGから現在の空燃比が「リッチ」なのか「リーン」なのかを判定するために設定された電圧値(例えば0.45V)である。
一般的に、O2センサ26の出力電圧値(起電力)VHGと空気過剰率(空燃比)λとの関係は図8のようになることが知られており、理論空燃比(λ=1)に対応する出力電圧値VHGを閾値VHGREFとして設定することで、O2センサ出力電圧VHGが閾値VHGREF以上であれば「リッチ」、閾値VHGREF未満であれば「リーン」と判定することができる。なお、周知のように、理論空燃比λ=1を中心として、空燃比λが「リッチ」領域と「リーン」領域とを行き来するように燃料噴射量を制御することを、O2フィードバック制御(或いはλ=1フィードバック制御、空燃比フィードバック制御等)と呼ぶ。
<ステップS31_4>
図7に戻り、CPU53は、上記ステップS31_3において「Yes」の場合、つまり現在の空燃比が「リッチ」の場合、ステップS31_4の処理として、O2センサ電圧判定フラグF_VHGREFに「1」をセットする。
図7に戻り、CPU53は、上記ステップS31_3において「Yes」の場合、つまり現在の空燃比が「リッチ」の場合、ステップS31_4の処理として、O2センサ電圧判定フラグF_VHGREFに「1」をセットする。
<ステップS31_5>
そして、CPU53は、ステップS31_5の処理として、前回O2センサ電圧判定フラグF_VHGREF1が「0」か否か(つまり前回「リーン」と判定していたか否か)を判定し、「No」の場合にはステップS31_6の処理に移行する一方、「Yes」の場合にはステップS31_10の処理に移行する。
そして、CPU53は、ステップS31_5の処理として、前回O2センサ電圧判定フラグF_VHGREF1が「0」か否か(つまり前回「リーン」と判定していたか否か)を判定し、「No」の場合にはステップS31_6の処理に移行する一方、「Yes」の場合にはステップS31_10の処理に移行する。
<ステップS31_6>
CPU53は、上記ステップS31_5において「No」の場合、つまり前回「リッチ」と判定していた場合、ステップS31_6の処理として、前回と今回とで「リッチ」から「リーン」への反転がなかったと判断して、リッチ/リーン反転フラグF_VHGTGLに「0」をセットした後、O2センサ電圧読込み処理を終了する。
CPU53は、上記ステップS31_5において「No」の場合、つまり前回「リッチ」と判定していた場合、ステップS31_6の処理として、前回と今回とで「リッチ」から「リーン」への反転がなかったと判断して、リッチ/リーン反転フラグF_VHGTGLに「0」をセットした後、O2センサ電圧読込み処理を終了する。
<ステップS31_7>
一方、CPU53は、上記ステップS31_3において「No」の場合、つまり現在の空燃比が「リーン」の場合、ステップS31_7の処理として、O2センサ電圧判定フラグF_VHGREFに「0」をセットする。
一方、CPU53は、上記ステップS31_3において「No」の場合、つまり現在の空燃比が「リーン」の場合、ステップS31_7の処理として、O2センサ電圧判定フラグF_VHGREFに「0」をセットする。
<ステップS31_8>
そして、CPU53は、ステップS31_8の処理として、前回O2センサ電圧判定フラグF_VHGREF1が「1」か否か(つまり前回「リッチ」と判定していたか否か)を判定し、「No」の場合にはステップS31_9の処理に移行する一方、「Yes」の場合にはステップS31_10の処理に移行する。
そして、CPU53は、ステップS31_8の処理として、前回O2センサ電圧判定フラグF_VHGREF1が「1」か否か(つまり前回「リッチ」と判定していたか否か)を判定し、「No」の場合にはステップS31_9の処理に移行する一方、「Yes」の場合にはステップS31_10の処理に移行する。
<ステップS31_9>
CPU53は、上記ステップS31_8において「No」の場合、つまり前回「リーン」と判定していた場合、ステップS31_9の処理として、前回と今回とで「リーン」から「リッチ」への反転がなかったと判断して、リッチ/リーン反転フラグF_VHGTGLに「0」をセットした後、O2センサ電圧読込み処理を終了する。
CPU53は、上記ステップS31_8において「No」の場合、つまり前回「リーン」と判定していた場合、ステップS31_9の処理として、前回と今回とで「リーン」から「リッチ」への反転がなかったと判断して、リッチ/リーン反転フラグF_VHGTGLに「0」をセットした後、O2センサ電圧読込み処理を終了する。
<ステップS31_10>
CPU53は、上記ステップS31_5において「Yes」の場合(つまり前回「リーン」と判定していた場合)、または上記ステップS31_8において「Yes」の場合(つまり前回「リッチ」と判定していた場合)、ステップS31_10の処理として、前回と今回とで「リッチ」から「リーン」への反転、或いは「リーン」から「リッチ」への反転があったと判断して、リッチ/リーン反転フラグF_VHGTGLに「1」をセットした後、O2センサ電圧読込み処理を終了する。
CPU53は、上記ステップS31_5において「Yes」の場合(つまり前回「リーン」と判定していた場合)、または上記ステップS31_8において「Yes」の場合(つまり前回「リッチ」と判定していた場合)、ステップS31_10の処理として、前回と今回とで「リッチ」から「リーン」への反転、或いは「リーン」から「リッチ」への反転があったと判断して、リッチ/リーン反転フラグF_VHGTGLに「1」をセットした後、O2センサ電圧読込み処理を終了する。
(2)O2フィードバック補正値算出処理
続いて、図9及び図10のフローチャートを参照しながら、O2フィードバック制御処理における第2のサブルーチンであるO2フィードバック補正値算出処理を説明する。
<ステップS32_1>
図9に示すように、CPU53は、O2フィードバック補正値算出処理におけるステップS32_1の処理として、回転数カウンタ41からエンジン回転数NEを取得すると共に、A/D変換器42からスロットル開度値THを取得する。
続いて、図9及び図10のフローチャートを参照しながら、O2フィードバック制御処理における第2のサブルーチンであるO2フィードバック補正値算出処理を説明する。
<ステップS32_1>
図9に示すように、CPU53は、O2フィードバック補正値算出処理におけるステップS32_1の処理として、回転数カウンタ41からエンジン回転数NEを取得すると共に、A/D変換器42からスロットル開度値THを取得する。
<ステップS32_2>
そして、CPU53は、ステップS32_2の処理として、エンジン回転数NE及びスロットル開度値THを参照して、現在のエンジン運転状態を判断する。具体的には、図11に示すように、エンジン回転数NEとスロットル開度値THとの対応関係によってO2フィードバック制御を必要とするO2フィードバック領域が設定された2次元マップが予めROM49に記憶されており、CPU53は、上記2次元マップを用いて、現在のエンジン運転状態がO2フィードバック領域に含まれるかを判断する。
そして、CPU53は、ステップS32_2の処理として、エンジン回転数NE及びスロットル開度値THを参照して、現在のエンジン運転状態を判断する。具体的には、図11に示すように、エンジン回転数NEとスロットル開度値THとの対応関係によってO2フィードバック制御を必要とするO2フィードバック領域が設定された2次元マップが予めROM49に記憶されており、CPU53は、上記2次元マップを用いて、現在のエンジン運転状態がO2フィードバック領域に含まれるかを判断する。
また、図11に示すように、O2フィードバック領域は、アイドリング運転領域に対応する第1学習領域と、低負荷運転領域に対応する第2学習領域と、高負荷運転領域に対応する第3学習領域との3つの学習領域に区分されている。つまり、CPU53は、上記2次元マップを用いて、現在のエンジン運転状態がO2フィードバック領域に含まれるか判断すると同時に、O2フィードバック領域内のどの学習領域に含まれるかも判断する。
<ステップS32_3>
そして、CPU53は、ステップS32_3の処理として、現在のエンジン運転状態がO2フィードバック領域に含まれるか否かを判断し、「Yes」の場合にはステップS32_4の処理に移行する一方、「No」の場合にはO2フィードバック制御を行う必要がないため、O2フィードバック補正値算出処理を終了する。
そして、CPU53は、ステップS32_3の処理として、現在のエンジン運転状態がO2フィードバック領域に含まれるか否かを判断し、「Yes」の場合にはステップS32_4の処理に移行する一方、「No」の場合にはO2フィードバック制御を行う必要がないため、O2フィードバック補正値算出処理を終了する。
<ステップS32_4>
CPU53は、上記ステップS32_3において「Yes」の場合、つまり現在のエンジン運転状態がO2フィードバック領域の場合、ステップS32_4の処理として、O2センサ電圧判定フラグF_VHGREFが「1」か否か、つまり現在の空燃比λが「リッチ」か否かを判定し、「Yes」の場合にはステップS32_5の処理に移行する一方、「No」の場合にはステップS32_6の処理に移行する。
CPU53は、上記ステップS32_3において「Yes」の場合、つまり現在のエンジン運転状態がO2フィードバック領域の場合、ステップS32_4の処理として、O2センサ電圧判定フラグF_VHGREFが「1」か否か、つまり現在の空燃比λが「リッチ」か否かを判定し、「Yes」の場合にはステップS32_5の処理に移行する一方、「No」の場合にはステップS32_6の処理に移行する。
<ステップS32_5>
CPU53は、上記ステップS32_4において「Yes」の場合、つまり現在の空燃比λが「リッチ」の場合、ステップS32_5の処理として、O2フィードバック補正値MHGから所定値Δを減算して得られる値を新たなO2フィードバック補正値MHGとして算出する。
CPU53は、上記ステップS32_4において「Yes」の場合、つまり現在の空燃比λが「リッチ」の場合、ステップS32_5の処理として、O2フィードバック補正値MHGから所定値Δを減算して得られる値を新たなO2フィードバック補正値MHGとして算出する。
<ステップS32_6>
一方、CPU53は、上記ステップS32_4において「No」の場合、つまり現在の空燃比λが「リーン」の場合、ステップS32_6の処理として、O2フィードバック補正値MHGに所定値Δを加算して得られる値を新たなO2フィードバック補正値MHGとして算出する。
一方、CPU53は、上記ステップS32_4において「No」の場合、つまり現在の空燃比λが「リーン」の場合、ステップS32_6の処理として、O2フィードバック補正値MHGに所定値Δを加算して得られる値を新たなO2フィードバック補正値MHGとして算出する。
<ステップS32_7>
続いて、図10に示すように、CPU53は、上記ステップS32_5の処理終了後、または上記ステップS32_6の処理終了後、ステップS32_7の処理として、リッチ/リーン反転フラグF_VHGTGLが「1」か否か、つまりリッチ/リーン反転があったか否かを判定し、「Yes」の場合にはステップS32_8の処理に移行する一方、「No」の場合にはO2フィードバック補正値算出処理を終了する。
続いて、図10に示すように、CPU53は、上記ステップS32_5の処理終了後、または上記ステップS32_6の処理終了後、ステップS32_7の処理として、リッチ/リーン反転フラグF_VHGTGLが「1」か否か、つまりリッチ/リーン反転があったか否かを判定し、「Yes」の場合にはステップS32_8の処理に移行する一方、「No」の場合にはO2フィードバック補正値算出処理を終了する。
<ステップS32_8>
CPU53は、上記ステップS32_7において「Yes」の場合、つまりリッチ/リーン反転があった場合、ステップS32_8の処理として、現在のエンジン運転状態がO2フィードバック領域内の第1学習領域(アイドリング運転領域)に含まれるか否かを判定し、「Yes」の場合にはステップS32_9の処理に移行する一方、「No」の場合にはステップS32_10の処理に移行する。
CPU53は、上記ステップS32_7において「Yes」の場合、つまりリッチ/リーン反転があった場合、ステップS32_8の処理として、現在のエンジン運転状態がO2フィードバック領域内の第1学習領域(アイドリング運転領域)に含まれるか否かを判定し、「Yes」の場合にはステップS32_9の処理に移行する一方、「No」の場合にはステップS32_10の処理に移行する。
<ステップS32_9>
CPU53は、上記ステップS32_8において「Yes」の場合、つまり現在のエンジン運転状態がO2フィードバック領域内の第1学習領域に含まれる場合、ステップS32_9の処理として、下記(1)式を用いて、O2フィードバック補正学習値MREFHG1を算出した後、O2フィードバック補正値算出処理を終了する。なお、下記(1)式において、「CHGREF」は、O2フィードバック補正平均値算出用フィルタリング係数(例えば0.01)である。また、このO2フィードバック補正学習値MREFHG1は、3分間隔でEEPROM50に上書き保存される。
MREFHG1=MHG×CHGREF+MREFHG1×(1-CHGREF) ・・・(1)
CPU53は、上記ステップS32_8において「Yes」の場合、つまり現在のエンジン運転状態がO2フィードバック領域内の第1学習領域に含まれる場合、ステップS32_9の処理として、下記(1)式を用いて、O2フィードバック補正学習値MREFHG1を算出した後、O2フィードバック補正値算出処理を終了する。なお、下記(1)式において、「CHGREF」は、O2フィードバック補正平均値算出用フィルタリング係数(例えば0.01)である。また、このO2フィードバック補正学習値MREFHG1は、3分間隔でEEPROM50に上書き保存される。
MREFHG1=MHG×CHGREF+MREFHG1×(1-CHGREF) ・・・(1)
<ステップS32_10>
CPU53は、上記ステップS32_8において「No」の場合、ステップS32_10の処理として、現在のエンジン運転状態がO2フィードバック領域内の第2学習領域(低負荷運転領域)に含まれるか否かを判定し、「Yes」の場合にはステップS32_11の処理に移行する一方、「No」の場合にはステップS32_15の処理に移行する。
CPU53は、上記ステップS32_8において「No」の場合、ステップS32_10の処理として、現在のエンジン運転状態がO2フィードバック領域内の第2学習領域(低負荷運転領域)に含まれるか否かを判定し、「Yes」の場合にはステップS32_11の処理に移行する一方、「No」の場合にはステップS32_15の処理に移行する。
<ステップS32_11>
CPU53は、上記ステップS32_10において「Yes」の場合、つまり現在のエンジン運転状態がO2フィードバック領域内の第2学習領域に含まれる場合、ステップS32_11の処理として、下記(2)式を用いて、O2フィードバック補正学習値MREFHG2(低負荷補正学習値)を算出する。なお、このO2フィードバック補正学習値MREFHG2は、3分間隔でEEPROM50に上書き保存される。
MREFHG2=MHG×CHGREF+MREFHG2×(1-CHGREF) ・・・(2)
CPU53は、上記ステップS32_10において「Yes」の場合、つまり現在のエンジン運転状態がO2フィードバック領域内の第2学習領域に含まれる場合、ステップS32_11の処理として、下記(2)式を用いて、O2フィードバック補正学習値MREFHG2(低負荷補正学習値)を算出する。なお、このO2フィードバック補正学習値MREFHG2は、3分間隔でEEPROM50に上書き保存される。
MREFHG2=MHG×CHGREF+MREFHG2×(1-CHGREF) ・・・(2)
<ステップ32_12>
そして、CPU53は、上記ステップS32_11の処理終了後、ステップS32_12の処理として、第2学習値算出回数CTMREFHG2をインクリメントする。
そして、CPU53は、上記ステップS32_11の処理終了後、ステップS32_12の処理として、第2学習値算出回数CTMREFHG2をインクリメントする。
<ステップS32_13>
そして、CPU53は、上記ステップS32_12の処理終了後、ステップS32_13の処理として、第2学習値算出回数CTMREFHG2が所定回数(例えば250回)以上か否かを判定し、「Yes」の場合にはステップS32_14の処理に移行する一方、「No」の場合にはO2フィードバック補正値算出処理を終了する。
そして、CPU53は、上記ステップS32_12の処理終了後、ステップS32_13の処理として、第2学習値算出回数CTMREFHG2が所定回数(例えば250回)以上か否かを判定し、「Yes」の場合にはステップS32_14の処理に移行する一方、「No」の場合にはO2フィードバック補正値算出処理を終了する。
<ステップS32_14>
CPU53は、上記ステップS32_13において「Yes」の場合、つまり第2学習値算出回数CTMREFHG2が所定回数以上になった場合、ステップS32_14の処理として、低負荷学習値取得フラグF_MREFHG2を「1」にセットした後、O2フィードバック補正値算出処理を終了する。
CPU53は、上記ステップS32_13において「Yes」の場合、つまり第2学習値算出回数CTMREFHG2が所定回数以上になった場合、ステップS32_14の処理として、低負荷学習値取得フラグF_MREFHG2を「1」にセットした後、O2フィードバック補正値算出処理を終了する。
<ステップS32_15>
一方、CPU53は、上記ステップS32_10において「No」の場合、つまり現在のエンジン運転状態がO2フィードバック領域内の第3学習領域(高負荷運転領域)に含まれる場合、ステップS32_15の処理として、下記(3)式を用いて、O2フィードバック補正学習値MREFHG3(高負荷補正学習値)を算出する。なお、このO2フィードバック補正学習値MREFHG3は、3分間隔でEEPROM50に上書き保存される。
MREFHG3=MHG×CHGREF+MREFHG3×(1-CHGREF) ・・・(3)
一方、CPU53は、上記ステップS32_10において「No」の場合、つまり現在のエンジン運転状態がO2フィードバック領域内の第3学習領域(高負荷運転領域)に含まれる場合、ステップS32_15の処理として、下記(3)式を用いて、O2フィードバック補正学習値MREFHG3(高負荷補正学習値)を算出する。なお、このO2フィードバック補正学習値MREFHG3は、3分間隔でEEPROM50に上書き保存される。
MREFHG3=MHG×CHGREF+MREFHG3×(1-CHGREF) ・・・(3)
<ステップ32_16>
そして、CPU53は、上記ステップS32_15の処理終了後、ステップS32_16の処理として、第3学習値算出回数CTMREFHG3をインクリメントする。
そして、CPU53は、上記ステップS32_15の処理終了後、ステップS32_16の処理として、第3学習値算出回数CTMREFHG3をインクリメントする。
<ステップS32_17>
そして、CPU53は、上記ステップS32_16の処理終了後、ステップS32_17の処理として、第3学習値算出回数CTMREFHG3が所定回数(例えば250回)以上か否かを判定し、「Yes」の場合にはステップS32_18の処理に移行する一方、「No」の場合にはO2フィードバック補正値算出処理を終了する。
そして、CPU53は、上記ステップS32_16の処理終了後、ステップS32_17の処理として、第3学習値算出回数CTMREFHG3が所定回数(例えば250回)以上か否かを判定し、「Yes」の場合にはステップS32_18の処理に移行する一方、「No」の場合にはO2フィードバック補正値算出処理を終了する。
<ステップS32_18>
CPU53は、上記ステップS32_17において「Yes」の場合、つまり第3学習値算出回数CTMREFHG3が所定回数以上になった場合、ステップS32_18の処理として、高負荷学習値取得フラグF_MREFHG3を「1」にセットした後、O2フィードバック補正値算出処理を終了する。
CPU53は、上記ステップS32_17において「Yes」の場合、つまり第3学習値算出回数CTMREFHG3が所定回数以上になった場合、ステップS32_18の処理として、高負荷学習値取得フラグF_MREFHG3を「1」にセットした後、O2フィードバック補正値算出処理を終了する。
以上のように、O2フィードバック補正値算出処理では、空燃比λを理論空燃比(λ=1)を挟んで、「リッチ」領域と「リーン」領域とを行き来させるためのO2フィードバック補正値MHGと、燃料供給系2の異常判断に用いられるO2フィードバック補正学習値MREFHG2及びMREFHG3が得られる。なお、O2フィードバック補正学習値MREFHG2及びMREFHG3を所定回数(例えば250回)算出した理由は、上記(2)式及び(3)式からわかるように、これらのパラメータがO2フィードバック補正値MHGの平均値を示しており、異常判断精度を確保可能な程度の安定した値が得られるまで一定時間を必要とするからである。
(3)燃料ポンプ異常判断パラメータ算出処理
続いて、図12及び図13のフローチャートを参照しながら、O2フィードバック制御処理における第3のサブルーチンである燃料ポンプ異常判断パラメータ算出処理について説明する。
<ステップS33_1>
図12に示すように、CPU53は、燃料ポンプ異常判断パラメータ算出処理におけるステップS33_1の処理として、現在のエンジン回転数NEが高負荷回転数NEXFPFH以上か否かを判定し、「Yes」の場合にはステップS33_2の処理に移行する一方、「No」の場合にはステップS33_12の処理に移行する。
続いて、図12及び図13のフローチャートを参照しながら、O2フィードバック制御処理における第3のサブルーチンである燃料ポンプ異常判断パラメータ算出処理について説明する。
<ステップS33_1>
図12に示すように、CPU53は、燃料ポンプ異常判断パラメータ算出処理におけるステップS33_1の処理として、現在のエンジン回転数NEが高負荷回転数NEXFPFH以上か否かを判定し、「Yes」の場合にはステップS33_2の処理に移行する一方、「No」の場合にはステップS33_12の処理に移行する。
<ステップS33_2>
CPU53は、上記ステップS33_1において「Yes」の場合、ステップS33_2の処理として、現在のスロットル開度値THが高負荷開度値THXFPFH以上か否かを判定し、「Yes」の場合にはステップS33_3の処理に移行する一方、「No」の場合にはステップS33_12の処理に移行する。
CPU53は、上記ステップS33_1において「Yes」の場合、ステップS33_2の処理として、現在のスロットル開度値THが高負荷開度値THXFPFH以上か否かを判定し、「Yes」の場合にはステップS33_3の処理に移行する一方、「No」の場合にはステップS33_12の処理に移行する。
<ステップS33_3>
CPU53は、上記ステップS33_2において「Yes」の場合、ステップS33_3の処理として、リッチ/リーン判定回数XCOXFPFが所定回数(例えば250回)以上か否かを判定し、「No」の場合にはステップS33_4の処理に移行する一方、「Yes」の場合にはステップS33_7の処理に移行する。
CPU53は、上記ステップS33_2において「Yes」の場合、ステップS33_3の処理として、リッチ/リーン判定回数XCOXFPFが所定回数(例えば250回)以上か否かを判定し、「No」の場合にはステップS33_4の処理に移行する一方、「Yes」の場合にはステップS33_7の処理に移行する。
<ステップS33_4>
CPU53は、上記ステップS33_3において「No」の場合、つまりリッチ/リーン判定回数XCOXFPFが所定回数未満の場合、ステップS33_4の処理として、O2センサ電圧判定フラグF_VHGREFが「1」か否か、つまり現在の空燃比λが「リッチ」か否かを判定し、「No」の場合にはステップS33_5の処理に移行する一方、「Yes」の場合にはステップS33_6の処理に移行する。
CPU53は、上記ステップS33_3において「No」の場合、つまりリッチ/リーン判定回数XCOXFPFが所定回数未満の場合、ステップS33_4の処理として、O2センサ電圧判定フラグF_VHGREFが「1」か否か、つまり現在の空燃比λが「リッチ」か否かを判定し、「No」の場合にはステップS33_5の処理に移行する一方、「Yes」の場合にはステップS33_6の処理に移行する。
<ステップS33_5>
CPU53は、上記ステップS33_4において「No」の場合、つまり現在の空燃比λが「リーン」の場合、ステップS33_5の処理として、リーン判定回数XCDXFPFをインクリメントする。
CPU53は、上記ステップS33_4において「No」の場合、つまり現在の空燃比λが「リーン」の場合、ステップS33_5の処理として、リーン判定回数XCDXFPFをインクリメントする。
<ステップS33_6>
そして、CPU53は、上記ステップS33_4において「Yes」の場合(つまり現在の空燃比λが「リッチ」の場合)、または上記ステップS33_5の処理終了後、ステップS33_6の処理として、リッチ/リーン判定回数XCOXFPFをインクリメントした後、ステップS33_12の処理に移行する。
そして、CPU53は、上記ステップS33_4において「Yes」の場合(つまり現在の空燃比λが「リッチ」の場合)、または上記ステップS33_5の処理終了後、ステップS33_6の処理として、リッチ/リーン判定回数XCOXFPFをインクリメントした後、ステップS33_12の処理に移行する。
<ステップS33_7>
一方、CPU53は、上記ステップS33_3において「Yes」の場合、つまりリッチ/リーン判定回数XCOXFPFが所定回数以上の場合、ステップS33_7の処理として、リーン判定回数XCDXFPFが所定回数(例えば225回)以上か否か、つまり所定回数(250回)のリッチ/リーン判定の内、「リーン」と判定した回数が90%以上か否かを判定し、「No」の場合にはステップS33_8の処理に移行する一方、「Yes」の場合にはステップS33_9の処理に移行する。
一方、CPU53は、上記ステップS33_3において「Yes」の場合、つまりリッチ/リーン判定回数XCOXFPFが所定回数以上の場合、ステップS33_7の処理として、リーン判定回数XCDXFPFが所定回数(例えば225回)以上か否か、つまり所定回数(250回)のリッチ/リーン判定の内、「リーン」と判定した回数が90%以上か否かを判定し、「No」の場合にはステップS33_8の処理に移行する一方、「Yes」の場合にはステップS33_9の処理に移行する。
<ステップS33_8>
CPU53は、上記ステップS33_7において「No」の場合、つまりリッチ/リーン判定の内、「リーン」と判定した回数が90%未満であった場合、ステップS33_8の処理として、リーン状態検出フラグF_LEANを「0」にリセットした後、ステップS33_11の処理に移行する。
CPU53は、上記ステップS33_7において「No」の場合、つまりリッチ/リーン判定の内、「リーン」と判定した回数が90%未満であった場合、ステップS33_8の処理として、リーン状態検出フラグF_LEANを「0」にリセットした後、ステップS33_11の処理に移行する。
<ステップS33_9>
一方、CPU53は、上記ステップS33_7において「Yes」の場合、つまりリッチ/リーン判定の内、「リーン」と判定した回数が90%以上であった場合、ステップS33_9の処理として、リーン状態検出フラグF_LEANを「1」にセットする。
一方、CPU53は、上記ステップS33_7において「Yes」の場合、つまりリッチ/リーン判定の内、「リーン」と判定した回数が90%以上であった場合、ステップS33_9の処理として、リーン状態検出フラグF_LEANを「1」にセットする。
<ステップS33_10>
そして、CPU53は、上記ステップS33_9の処理終了後、ステップS33_10の処理として、リーン判定回数XCDXFPF及びリッチ/リーン判定回数XCOXFPFを「0」にリセットした後、ステップS33_11の処理に移行する。
そして、CPU53は、上記ステップS33_9の処理終了後、ステップS33_10の処理として、リーン判定回数XCDXFPF及びリッチ/リーン判定回数XCOXFPFを「0」にリセットした後、ステップS33_11の処理に移行する。
<ステップS33_11>
そして、CPU53は、上記ステップS33_8の処理終了後、または上記ステップS33_10の処理終了後、ステップS33_11の処理として、異常チェック実施要求フラグF_FPFCHECKを「1」にセットした後、ステップS33_12の処理に移行する。
そして、CPU53は、上記ステップS33_8の処理終了後、または上記ステップS33_10の処理終了後、ステップS33_11の処理として、異常チェック実施要求フラグF_FPFCHECKを「1」にセットした後、ステップS33_12の処理に移行する。
<ステップS33_12>
図13に示すように、CPU53は、上記ステップS33_1において「No」の場合、または上記ステップS33_2において「No」の場合、または上記ステップS33_6の処理終了後、または上記ステップS33_11の処理終了後、ステップS33_12の処理として、高負荷学習値取得フラグF_MREFHG3が「1」にセットされているか否か、つまり安定したO2フィードバック補正学習値MREFHG3が得られたか否かを判定し、「Yes」の場合にはステップS33_13の処理に移行する一方、「No」の場合には燃料ポンプ異常判断パラメータ算出処理を終了する。
図13に示すように、CPU53は、上記ステップS33_1において「No」の場合、または上記ステップS33_2において「No」の場合、または上記ステップS33_6の処理終了後、または上記ステップS33_11の処理終了後、ステップS33_12の処理として、高負荷学習値取得フラグF_MREFHG3が「1」にセットされているか否か、つまり安定したO2フィードバック補正学習値MREFHG3が得られたか否かを判定し、「Yes」の場合にはステップS33_13の処理に移行する一方、「No」の場合には燃料ポンプ異常判断パラメータ算出処理を終了する。
<ステップS33_13>
CPU53は、上記ステップS33_12において「Yes」の場合、つまり高負荷学習値取得フラグF_MREFHG3が「1」にセットされている場合、ステップS33_13の処理として、低負荷学習値取得フラグF_MREFHG2が「1」にセットされているか否か、つまり安定したO2フィードバック補正学習値MREFHG2が得られたか否かを判定し、「Yes」の場合にはステップS33_14の処理に移行する一方、「No」の場合には燃料ポンプ異常判断パラメータ算出処理を終了する。
CPU53は、上記ステップS33_12において「Yes」の場合、つまり高負荷学習値取得フラグF_MREFHG3が「1」にセットされている場合、ステップS33_13の処理として、低負荷学習値取得フラグF_MREFHG2が「1」にセットされているか否か、つまり安定したO2フィードバック補正学習値MREFHG2が得られたか否かを判定し、「Yes」の場合にはステップS33_14の処理に移行する一方、「No」の場合には燃料ポンプ異常判断パラメータ算出処理を終了する。
<ステップS33_14>
CPU53は、上記ステップS33_13において「Yes」の場合、つまり低負荷学習値取得フラグF_MREFHG2が「1」にセットされている場合、ステップS33_14の処理として、O2フィードバック補正学習値MREFHG3(高負荷補正学習値)がO2フィードバック補正学習値MREFHG2(低負荷補正学習値)以上か否かを判定し、「Yes」の場合にはステップS33_15の処理に移行する一方、「No」の場合にはステップS33_17の処理に移行する。
CPU53は、上記ステップS33_13において「Yes」の場合、つまり低負荷学習値取得フラグF_MREFHG2が「1」にセットされている場合、ステップS33_14の処理として、O2フィードバック補正学習値MREFHG3(高負荷補正学習値)がO2フィードバック補正学習値MREFHG2(低負荷補正学習値)以上か否かを判定し、「Yes」の場合にはステップS33_15の処理に移行する一方、「No」の場合にはステップS33_17の処理に移行する。
<ステップS33_15>
CPU53は、上記ステップS33_14において「Yes」の場合、つまり高負荷補正学習値MREFHG3が低負荷補正学習値MREFHG2以上の場合、ステップS33_15の処理として、学習値偏差(=MREFHG3−MREFHG2)が所定値(例えば0.14倍)以上か否かを判定し、「Yes」の場合にはステップS33_16の処理に移行する一方、「No」の場合にはステップS33_17の処理に移行する。
CPU53は、上記ステップS33_14において「Yes」の場合、つまり高負荷補正学習値MREFHG3が低負荷補正学習値MREFHG2以上の場合、ステップS33_15の処理として、学習値偏差(=MREFHG3−MREFHG2)が所定値(例えば0.14倍)以上か否かを判定し、「Yes」の場合にはステップS33_16の処理に移行する一方、「No」の場合にはステップS33_17の処理に移行する。
<ステップS33_16>
CPU53は、上記ステップS33_15において「Yes」の場合、つまり学習値偏差が所定値以上の場合、ステップS33_16の処理として、高負荷学習値偏差検出フラグF_MREFHGLNを「1」にセットした後、ステップS33_18の処理に移行する。
CPU53は、上記ステップS33_15において「Yes」の場合、つまり学習値偏差が所定値以上の場合、ステップS33_16の処理として、高負荷学習値偏差検出フラグF_MREFHGLNを「1」にセットした後、ステップS33_18の処理に移行する。
<ステップS33_17>
一方、CPU53は、上記ステップS33_14において「No」の場合(つまり高負荷学習値MREFHG3が低負荷学習値MREFHG2未満の場合)、または上記ステップS33_15において「No」の場合(つまり学習値偏差が所定値未満の場合)、ステップS33_17の処理として、高負荷学習値偏差検出フラグF_MREFHGLNを「0」にリセットした後、ステップS33_18の処理に移行する。
一方、CPU53は、上記ステップS33_14において「No」の場合(つまり高負荷学習値MREFHG3が低負荷学習値MREFHG2未満の場合)、または上記ステップS33_15において「No」の場合(つまり学習値偏差が所定値未満の場合)、ステップS33_17の処理として、高負荷学習値偏差検出フラグF_MREFHGLNを「0」にリセットした後、ステップS33_18の処理に移行する。
<ステップS33_18>
そして、CPU53は、上記ステップS33_16の処理終了後、または上記ステップS33_17の処理終了後、ステップS33_18の処理として、異常チェック実施要求フラグF_FPFCHECKを「1」にセットした後、燃料ポンプ異常判断パラメータ算出処理を終了する。
そして、CPU53は、上記ステップS33_16の処理終了後、または上記ステップS33_17の処理終了後、ステップS33_18の処理として、異常チェック実施要求フラグF_FPFCHECKを「1」にセットした後、燃料ポンプ異常判断パラメータ算出処理を終了する。
以上のように、燃料ポンプ異常判断パラメータ算出処理は、図12に示したステップS33_1からステップS33_11までの第1パートと、図13に示したステップS33_12からステップS33_18までの第2パートとに分割されている。
第1パートは、エンジン運転状態が異常監視運転領域に含まれる場合(エンジン回転数NE≧NEXFPFH、且つスロットル開度値TH≧THXFPFHの場合)に、空燃比λが「リーン」と判定されたリーン判定回数XCDXFPFを計数し、このリーン判定回数XCDXFPFが所定回数以上となった場合に、異常チェック実施要求フラグF_FPFCHECKを「1」にセットするためのパートである。この場合、後述の燃料ポンプ異常監視・検出判断処理において異常監視状態として認識される。つまり、第1パートの実行により、エンジン運転状態がO2フィードバック領域に含まれていない場合(O2フィードバック制御を実施していない場合)であっても、O2センサ出力電圧値のみによって異常監視状態を精度よく認識することができる。
一方、第2パートは、O2フィードバック制御の実施中に得られた高負荷補正学習値MREFHG3と低負荷補正学習値MREFHG2との偏差が所定値以上となった場合に、異常チェック実施要求フラグF_FPFCHECKを「1」にセットするためのパートである。この場合も、後述の燃料ポンプ異常監視・検出判断処理において異常監視状態として認識される。つまり、この第2パートの実行により、O2フィードバック領域内の高負荷運転領域(第3学習領域)と低負荷運転領域(第2学習領域)とのO2フィードバック補正値に基づいて異常監視状態を認識するため、燃料にアルコールが混合されてO2フィードバック補正値に影響があったとしても、異常監視状態を精度よく認識できる。
(4)燃料ポンプ異常監視・検出判断処理
続いて、図14及び図15のフローチャートを参照しながら、O2フィードバック制御処理における第4のサブルーチンである燃料ポンプ異常監視・検出判断処理について説明する。
<ステップS34_1>
図14に示すように、CPU53は、燃料ポンプ異常監視・検出判断処理におけるステップS34_1の処理として、燃料ポンプ電気的異常検出フラグF_XDRXFPRが「1」か否か、つまり燃料ポンプ31aの電気的異常を検出済みか否かを判定し、「No」の場合にはステップS34_2の処理に移行する一方、「Yes」の場合にはステップS34_16の処理に移行する。
続いて、図14及び図15のフローチャートを参照しながら、O2フィードバック制御処理における第4のサブルーチンである燃料ポンプ異常監視・検出判断処理について説明する。
<ステップS34_1>
図14に示すように、CPU53は、燃料ポンプ異常監視・検出判断処理におけるステップS34_1の処理として、燃料ポンプ電気的異常検出フラグF_XDRXFPRが「1」か否か、つまり燃料ポンプ31aの電気的異常を検出済みか否かを判定し、「No」の場合にはステップS34_2の処理に移行する一方、「Yes」の場合にはステップS34_16の処理に移行する。
<ステップS34_2>
CPU53は、上記ステップS34_1において「No」の場合、ステップS34_2の処理として、インジェクタ電気的異常検出フラグF_XDRXINJが「1」か否か、つまりインジェクタ21の電気的異常を検出済みか否かを判定し、「No」の場合にはステップS34_3の処理に移行する一方、「Yes」の場合にはステップS34_16の処理に移行する。なお、インジェクタ電気的異常検出フラグF_XDRXINJは、後述の燃料噴射処理においてインジェクタ21の電気的異常が検出された場合に、「1」にセットされるフラグである。
CPU53は、上記ステップS34_1において「No」の場合、ステップS34_2の処理として、インジェクタ電気的異常検出フラグF_XDRXINJが「1」か否か、つまりインジェクタ21の電気的異常を検出済みか否かを判定し、「No」の場合にはステップS34_3の処理に移行する一方、「Yes」の場合にはステップS34_16の処理に移行する。なお、インジェクタ電気的異常検出フラグF_XDRXINJは、後述の燃料噴射処理においてインジェクタ21の電気的異常が検出された場合に、「1」にセットされるフラグである。
<ステップS34_3>
CPU53は、上記ステップS34_2において「No」の場合、つまり燃料ポンプ31a及びインジェクタ21共に電気的異常がない場合、ステップS34_3の処理として、異常チェック実施要求フラグF_FPFCHECKが「1」にセットされているか否かを判定し、「Yes」の場合にはステップS34_4の処理に移行する一方、「No」の場合には燃料ポンプ異常監視・検出判断処理を終了する。
CPU53は、上記ステップS34_2において「No」の場合、つまり燃料ポンプ31a及びインジェクタ21共に電気的異常がない場合、ステップS34_3の処理として、異常チェック実施要求フラグF_FPFCHECKが「1」にセットされているか否かを判定し、「Yes」の場合にはステップS34_4の処理に移行する一方、「No」の場合には燃料ポンプ異常監視・検出判断処理を終了する。
<ステップS34_4>
CPU53は、上記ステップS34_3において「Yes」の場合、つまり異常チェック実施要求フラグF_FPFCHECKが「1」にセットされている場合、ステップS34_4の処理として、高負荷学習値偏差検出フラグF_MREFHGLNが「1」にセットされているか否かを判定し、「No」の場合にはステップS34_5の処理に移行する一方、「Yes」の場合にはステップS34_6の処理に移行する。
CPU53は、上記ステップS34_3において「Yes」の場合、つまり異常チェック実施要求フラグF_FPFCHECKが「1」にセットされている場合、ステップS34_4の処理として、高負荷学習値偏差検出フラグF_MREFHGLNが「1」にセットされているか否かを判定し、「No」の場合にはステップS34_5の処理に移行する一方、「Yes」の場合にはステップS34_6の処理に移行する。
<ステップS34_5>
CPU53は、上記ステップS34_4において「No」の場合、つまり高負荷学習値偏差検出フラグF_MREFHGLNが「0」の場合、ステップS34_5の処理として、リーン状態検出フラグF_LEANが「1」にセットされているか否かを判定し、「Yes」の場合にはステップS34_6の処理に移行する一方、「No」の場合にはステップS34_15の処理に移行する。
CPU53は、上記ステップS34_4において「No」の場合、つまり高負荷学習値偏差検出フラグF_MREFHGLNが「0」の場合、ステップS34_5の処理として、リーン状態検出フラグF_LEANが「1」にセットされているか否かを判定し、「Yes」の場合にはステップS34_6の処理に移行する一方、「No」の場合にはステップS34_15の処理に移行する。
<ステップS34_6>
続いて、図15に示すように、CPU53は、上記ステップS34_4において「Yes」の場合(つまり高負荷学習値偏差検出フラグF_MREFHGLNが「1」の場合)、または上記ステップS34_5において「Yes」の場合(つまりリーン状態検出フラグF_LEANが「1」の場合)、ステップS34_6の処理として、燃料ポンプ異常監視フラグF_XDPXFPFが「1」にセットされているか否か、つまり燃料ポンプ異常監視状態か否かを判定し、「No」の場合にはステップS34_7の処理に移行する一方、「Yes」の場合にはステップS34_21の処理に移行する。
続いて、図15に示すように、CPU53は、上記ステップS34_4において「Yes」の場合(つまり高負荷学習値偏差検出フラグF_MREFHGLNが「1」の場合)、または上記ステップS34_5において「Yes」の場合(つまりリーン状態検出フラグF_LEANが「1」の場合)、ステップS34_6の処理として、燃料ポンプ異常監視フラグF_XDPXFPFが「1」にセットされているか否か、つまり燃料ポンプ異常監視状態か否かを判定し、「No」の場合にはステップS34_7の処理に移行する一方、「Yes」の場合にはステップS34_21の処理に移行する。
<ステップS34_7>
CPU53は、上記ステップS34_6において「No」の場合、つまり燃料ポンプ異常監視フラグF_XDPXFPFが「0」の場合、ステップS34_7の処理として、燃料ポンプ異常監視フラグF_XDPXFPFを「1」にセットした後、ステップS34_8の処理に移行する。つまり、燃料ポンプ異常監視フラグF_XDPXFPFを「1」にセットすることは、現在の状態を燃料ポンプ異常監視状態として認識したことを指す。
CPU53は、上記ステップS34_6において「No」の場合、つまり燃料ポンプ異常監視フラグF_XDPXFPFが「0」の場合、ステップS34_7の処理として、燃料ポンプ異常監視フラグF_XDPXFPFを「1」にセットした後、ステップS34_8の処理に移行する。つまり、燃料ポンプ異常監視フラグF_XDPXFPFを「1」にセットすることは、現在の状態を燃料ポンプ異常監視状態として認識したことを指す。
<ステップS34_8>
そして、CPU53は、上記ステップS34_7の処理終了後、ステップS34_8の処理として、燃料ポンプ異常監視カウンタCTXDPXFPFをインクリメントした後、燃料ポンプ異常監視カウンタCTXDPXFPFをEEPROM50に上書き保存する。なお、燃料ポンプ異常監視カウンタCTXDPXFPFは、燃料ポンプ異常監視状態の認識回数を示すカウンタ変数である。
そして、CPU53は、上記ステップS34_7の処理終了後、ステップS34_8の処理として、燃料ポンプ異常監視カウンタCTXDPXFPFをインクリメントした後、燃料ポンプ異常監視カウンタCTXDPXFPFをEEPROM50に上書き保存する。なお、燃料ポンプ異常監視カウンタCTXDPXFPFは、燃料ポンプ異常監視状態の認識回数を示すカウンタ変数である。
<ステップS34_9>
そして、CPU53は、上記ステップS34_8の処理終了後、ステップS34_9の処理として、燃料ポンプ異常監視カウンタCTXDPXFPFが所定値(例えば3)以上か否か、つまり燃料ポンプ異常監視状態の認識回数が3回以上か否かを判定し、「Yes」の場合にはステップS34_10の処理に移行する一方、「No」の場合にはステップS34_21の処理に移行する。
そして、CPU53は、上記ステップS34_8の処理終了後、ステップS34_9の処理として、燃料ポンプ異常監視カウンタCTXDPXFPFが所定値(例えば3)以上か否か、つまり燃料ポンプ異常監視状態の認識回数が3回以上か否かを判定し、「Yes」の場合にはステップS34_10の処理に移行する一方、「No」の場合にはステップS34_21の処理に移行する。
<ステップS34_10>
CPU53は、上記ステップS34_9において「Yes」の場合、つまり燃料ポンプ異常監視カウンタCTXDPXFPFが所定値(例えば「3」)以上の場合、ステップS34_10の処理として、燃料ポンプ異常検出フラグF_XAPXFPFを「1」にセットした後、ステップS34_11の処理に移行する。つまり、CPU53は、燃料ポンプ異常監視カウンタCTXDPXFPFが所定値以上になった場合に、燃料供給系2(燃料ポンプ31a)の異常と判断する。
CPU53は、上記ステップS34_9において「Yes」の場合、つまり燃料ポンプ異常監視カウンタCTXDPXFPFが所定値(例えば「3」)以上の場合、ステップS34_10の処理として、燃料ポンプ異常検出フラグF_XAPXFPFを「1」にセットした後、ステップS34_11の処理に移行する。つまり、CPU53は、燃料ポンプ異常監視カウンタCTXDPXFPFが所定値以上になった場合に、燃料供給系2(燃料ポンプ31a)の異常と判断する。
<ステップS34_11>
そして、CPU53は、上記ステップS34_10の処理終了後、ステップS34_11の処理として、燃料ポンプ異常検出カウンタCTXAPXFPFをインクリメントした後、燃料ポンプ異常検出カウンタCTXAPXFPFをEEPROM50に上書き保存する。なお、燃料ポンプ異常検出カウンタCTXAPXFPFは、燃料供給系2の異常と判断された回数を示すカウンタ変数である。
そして、CPU53は、上記ステップS34_10の処理終了後、ステップS34_11の処理として、燃料ポンプ異常検出カウンタCTXAPXFPFをインクリメントした後、燃料ポンプ異常検出カウンタCTXAPXFPFをEEPROM50に上書き保存する。なお、燃料ポンプ異常検出カウンタCTXAPXFPFは、燃料供給系2の異常と判断された回数を示すカウンタ変数である。
<ステップS34_12>
そして、CPU53は、上記ステップS34_11の処理終了後、ステップS34_12の処理として、燃料ポンプ異常検出カウンタCTXAPXFPが所定値(例えば「3」)以上か否か、つまり燃料ポンプ異常検出回数が3回以上か否かを判定し、「Yes」の場合にはステップS34_13の処理に移行する一方、「No」の場合にはステップS34_14の処理に移行する。
そして、CPU53は、上記ステップS34_11の処理終了後、ステップS34_12の処理として、燃料ポンプ異常検出カウンタCTXAPXFPが所定値(例えば「3」)以上か否か、つまり燃料ポンプ異常検出回数が3回以上か否かを判定し、「Yes」の場合にはステップS34_13の処理に移行する一方、「No」の場合にはステップS34_14の処理に移行する。
<ステップS34_13>
CPU53は、上記ステップS34_12において「Yes」の場合、つまり燃料ポンプ異常検出カウンタCTXAPXFPが所定値以上の場合、ステップS34_13の処理として、第2の点灯パターン(燃料供給系2に比較的重度の異常が発生したことをユーザに報知するための点灯パターン)でインジケータ3が点灯するように、インジケータ駆動回路48を制御する。
CPU53は、上記ステップS34_12において「Yes」の場合、つまり燃料ポンプ異常検出カウンタCTXAPXFPが所定値以上の場合、ステップS34_13の処理として、第2の点灯パターン(燃料供給系2に比較的重度の異常が発生したことをユーザに報知するための点灯パターン)でインジケータ3が点灯するように、インジケータ駆動回路48を制御する。
<ステップS34_14>
一方、CPU53は、上記ステップS34_12において「No」の場合、つまり燃料ポンプ異常検出カウンタCTXAPXFPが所定値未満の場合、ステップS34_14の処理として、第1の点灯パターン(燃料供給系2に比較的軽度の異常が発生したことをユーザに報知するための点灯パターン)でインジケータ3が点灯するように、インジケータ駆動回路48を制御する。
一方、CPU53は、上記ステップS34_12において「No」の場合、つまり燃料ポンプ異常検出カウンタCTXAPXFPが所定値未満の場合、ステップS34_14の処理として、第1の点灯パターン(燃料供給系2に比較的軽度の異常が発生したことをユーザに報知するための点灯パターン)でインジケータ3が点灯するように、インジケータ駆動回路48を制御する。
<ステップS34_15>
また、CPU53は、上記ステップS34_5において「No」の場合、つまりリーン状態検出フラグF_LEANが「0」の場合、ステップS34_15の処理として、燃料ポンプ異常監視フラグF_XDPXFPFが「1」にセットされているか否かを判定し、「Yes」の場合にはステップS34_16の処理に移行する一方、「No」の場合にはステップS34_21の処理に移行する。
また、CPU53は、上記ステップS34_5において「No」の場合、つまりリーン状態検出フラグF_LEANが「0」の場合、ステップS34_15の処理として、燃料ポンプ異常監視フラグF_XDPXFPFが「1」にセットされているか否かを判定し、「Yes」の場合にはステップS34_16の処理に移行する一方、「No」の場合にはステップS34_21の処理に移行する。
<ステップS34_16>
CPU53は、上記ステップS34_1において「Yes」の場合、または上記ステップS34_2において「Yes」の場合、または上記ステップS34_15において「Yes」の場合、ステップS34_16の処理として、燃料ポンプ異常監視フラグF_XDPXFPFを「0」にリセットした後、ステップS34_17の処理に移行する。
CPU53は、上記ステップS34_1において「Yes」の場合、または上記ステップS34_2において「Yes」の場合、または上記ステップS34_15において「Yes」の場合、ステップS34_16の処理として、燃料ポンプ異常監視フラグF_XDPXFPFを「0」にリセットした後、ステップS34_17の処理に移行する。
<ステップS34_17>
そして、CPU53は、上記ステップS34_16の処理終了後、ステップS34_17の処理として、燃料ポンプ異常監視カウンタCTXDPXFPFを「0」にリセットした後、燃料ポンプ異常監視カウンタCTXDPXFPFをEEPROM50に上書き保存する。
そして、CPU53は、上記ステップS34_16の処理終了後、ステップS34_17の処理として、燃料ポンプ異常監視カウンタCTXDPXFPFを「0」にリセットした後、燃料ポンプ異常監視カウンタCTXDPXFPFをEEPROM50に上書き保存する。
<ステップS34_18>
そして、CPU53は、上記ステップS34_17の処理終了後、ステップS34_18の処理として、燃料ポンプ異常検出フラグF_XAPXFPFを「0」にリセットした後、ステップS34_19の処理に移行する。
そして、CPU53は、上記ステップS34_17の処理終了後、ステップS34_18の処理として、燃料ポンプ異常検出フラグF_XAPXFPFを「0」にリセットした後、ステップS34_19の処理に移行する。
<ステップS34_19>
そして、CPU53は、上記ステップS34_18の処理終了後、ステップS34_19の処理として、燃料ポンプ異常検出カウンタCTXAPXFPを「0」にリセットした後、燃料ポンプ異常検出カウンタCTXAPXFPFをEEPROM50に上書き保存する。
そして、CPU53は、上記ステップS34_18の処理終了後、ステップS34_19の処理として、燃料ポンプ異常検出カウンタCTXAPXFPを「0」にリセットした後、燃料ポンプ異常検出カウンタCTXAPXFPFをEEPROM50に上書き保存する。
<ステップS34_20>
そして、CPU53は、上記ステップS34_19の処理終了後、ステップS34_20の処理として、インジケータ駆動回路48を制御してインジケータ3を消灯させた後、ステップS34_21の処理に移行する。
そして、CPU53は、上記ステップS34_19の処理終了後、ステップS34_20の処理として、インジケータ駆動回路48を制御してインジケータ3を消灯させた後、ステップS34_21の処理に移行する。
<ステップS34_21>
CPU53は、上記ステップS34_6において「Yes」の場合、または上記ステップS34_9において「No」の場合、または上記ステップS34_13の処理終了後、または上記ステップS34_14の処理終了後、または上記ステップS34_15において「No」の場合、または上記ステップS34_20の処理終了後、ステップS34_21の処理として、異常チェック実施要求フラグF_FPFCHECKを「0」にリセットした後、燃料ポンプ異常監視・検出判断処理を終了する。
CPU53は、上記ステップS34_6において「Yes」の場合、または上記ステップS34_9において「No」の場合、または上記ステップS34_13の処理終了後、または上記ステップS34_14の処理終了後、または上記ステップS34_15において「No」の場合、または上記ステップS34_20の処理終了後、ステップS34_21の処理として、異常チェック実施要求フラグF_FPFCHECKを「0」にリセットした後、燃料ポンプ異常監視・検出判断処理を終了する。
以上のように、燃料ポンプ異常監視・検出判断処理では、リーン状態検出フラグF_LEAN=「1」(リーン判定回数XCDXFPFが所定回数以上)の場合、または高負荷補正学習値MREFHG3と低負荷補正学習値MREFHG2との偏差が所定値以上の場合を、燃料ポンプ異常監視状態として認識し、この異常監視状態を連続して所定回数(例えば3回)認識した場合に燃料供給系2の異常と判断する。一方、インジェクタ21と燃料ポンプ31aの少なくとも一方に電気的異常が検出された場合には、ステップS34_16以降の処理を行なうことで、燃料供給系2の異常判断を禁止する。
つまり、本実施形態では、従来のような燃圧センサ等の燃圧検出手段を設けることなく、既存の空燃比センサ(O2センサ26)を利用して精度良く燃料供給系2の異常を検出することができ、コストの上昇を抑えることができる。また、インジケータ3の点灯によって燃料供給系2の異常をユーザに報知することで、ユーザに燃料フィルタ31bの交換を促すことができる。さらに、インジェクタ21と燃料ポンプ31aの少なくとも一方に電気的異常が検出された場合には、燃料供給系2の異常判断を禁止することで、これらの電気的異常による誤判断を防止することができる。
〔燃料噴射量算出処理〕
次に、エンジン1の運転制御中において、エンジン1の1回転毎に1回実行される燃料噴射量算出処理について、図16のフローチャートを参照しながら詳細に説明する。
<ステップS41>
図16に示すように、CPU53は、燃料噴射量算出処理におけるステップS41の処理として、回転数カウンタ41からエンジン回転数NEを取得すると共に、A/D変換器42からスロットル開度値THを取得する(つまり、現在のエンジン運転状態を把握する)。
次に、エンジン1の運転制御中において、エンジン1の1回転毎に1回実行される燃料噴射量算出処理について、図16のフローチャートを参照しながら詳細に説明する。
<ステップS41>
図16に示すように、CPU53は、燃料噴射量算出処理におけるステップS41の処理として、回転数カウンタ41からエンジン回転数NEを取得すると共に、A/D変換器42からスロットル開度値THを取得する(つまり、現在のエンジン運転状態を把握する)。
<ステップS42>
そして、CPU53は、ステップS42の処理として、燃料ポンプ異常検出カウンタCTXAPXFPが所定値(例えば「3」)以上か否か、つまり燃料ポンプ異常検出回数が3回以上か否かを判定し、「Yes」の場合にはステップS43の処理に移行する一方、「No」の場合にはステップS47の処理に移行する。
そして、CPU53は、ステップS42の処理として、燃料ポンプ異常検出カウンタCTXAPXFPが所定値(例えば「3」)以上か否か、つまり燃料ポンプ異常検出回数が3回以上か否かを判定し、「Yes」の場合にはステップS43の処理に移行する一方、「No」の場合にはステップS47の処理に移行する。
<ステップS43>
CPU53は、上記ステップS42において「Yes」の場合、つまり燃料ポンプ異常検出カウンタCTXAPXFP≧3の場合、ステップS43の処理として、エンジン回転数NEが高負荷回転数NEXFPFH以上か否かを判定し、「Yes」の場合にはステップS44の処理に移行する一方、「No」の場合にはステップS45の処理に移行する。
CPU53は、上記ステップS42において「Yes」の場合、つまり燃料ポンプ異常検出カウンタCTXAPXFP≧3の場合、ステップS43の処理として、エンジン回転数NEが高負荷回転数NEXFPFH以上か否かを判定し、「Yes」の場合にはステップS44の処理に移行する一方、「No」の場合にはステップS45の処理に移行する。
<ステップS44>
CPU53は、上記ステップS43において「Yes」の場合、つまりエンジン回転数NE≧高負荷回転数NEXFPFHの場合、ステップS44の処理として、スロットル開度値THが高負荷開度値THXFPFH以上か否かを判定し、「Yes」の場合にはステップS49の処理に移行する一方、「No」の場合にはステップS45の処理に移行する。
CPU53は、上記ステップS43において「Yes」の場合、つまりエンジン回転数NE≧高負荷回転数NEXFPFHの場合、ステップS44の処理として、スロットル開度値THが高負荷開度値THXFPFH以上か否かを判定し、「Yes」の場合にはステップS49の処理に移行する一方、「No」の場合にはステップS45の処理に移行する。
<ステップS45>
CPU53は、上記ステップS43において「No」の場合(つまりエンジン回転数NE<高負荷回転数NEXFPFHの場合)、または上記ステップS44において「No」の場合(つまりスロットル開度値TH<高負荷開度値THXFPFHの場合)、ステップS45の処理として、エンジン回転数NEが低負荷回転数NEXFPFL以上か否かを判定し、「Yes」の場合にはステップS46の処理に移行する一方、「No」の場合にはステップS47の処理に移行する。
CPU53は、上記ステップS43において「No」の場合(つまりエンジン回転数NE<高負荷回転数NEXFPFHの場合)、または上記ステップS44において「No」の場合(つまりスロットル開度値TH<高負荷開度値THXFPFHの場合)、ステップS45の処理として、エンジン回転数NEが低負荷回転数NEXFPFL以上か否かを判定し、「Yes」の場合にはステップS46の処理に移行する一方、「No」の場合にはステップS47の処理に移行する。
<ステップS46>
CPU53は、上記ステップS45において「Yes」の場合、つまりエンジン回転数NE≧低負荷回転数NEXFPFLの場合、ステップS46の処理として、スロットル開度値THが低負荷開度値THXFPFL以上か否かを判定し、「Yes」の場合にはステップS48の処理に移行する一方、「No」の場合にはステップS47の処理に移行する。
CPU53は、上記ステップS45において「Yes」の場合、つまりエンジン回転数NE≧低負荷回転数NEXFPFLの場合、ステップS46の処理として、スロットル開度値THが低負荷開度値THXFPFL以上か否かを判定し、「Yes」の場合にはステップS48の処理に移行する一方、「No」の場合にはステップS47の処理に移行する。
<ステップS47>
CPU53は、上記ステップS42において「No」の場合(つまり燃料ポンプ異常検出カウンタCTXAPXFP<3の場合)、または上記ステップS45において「No」の場合(つまりエンジン回転数NE<低負荷回転数NEXFPFLの場合)、または上記ステップS46において「No」の場合(つまりスロットル開度値TH<低負荷開度値THXFPFLの場合)、ステップS47の処理として、燃料噴射量TIOUTの算出及び補正を行った後、燃料噴射量算出処理を終了する。
CPU53は、上記ステップS42において「No」の場合(つまり燃料ポンプ異常検出カウンタCTXAPXFP<3の場合)、または上記ステップS45において「No」の場合(つまりエンジン回転数NE<低負荷回転数NEXFPFLの場合)、または上記ステップS46において「No」の場合(つまりスロットル開度値TH<低負荷開度値THXFPFLの場合)、ステップS47の処理として、燃料噴射量TIOUTの算出及び補正を行った後、燃料噴射量算出処理を終了する。
具体的には、エンジン回転数NEと、スロットル開度値THと、燃料噴射量TIOUTとの対応関係を示す3次元マップが予めROM49に記憶されており、CPU53は、上記3次元マップを用いて、現在のエンジン回転数NE及びスロットル開度値THに対応する燃料噴射量TIOUT(単位はms)を算出する。さらに、CPU53は、3次元マップを用いて算出した燃料噴射量TIOUTにO2フィードバック補正値MHGを乗算することで、燃料噴射量TIOUTを補正する。
<ステップS48>
CPU53は、上記ステップS46において「Yes」の場合、つまりスロットル開度値TH≧低負荷開度値THXFPFLの場合、ステップS48の処理として、燃料噴射量TIOUTの算出及び補正を行った後、燃料噴射量算出処理を終了する。具体的には、CPU53は、上記3次元マップを用いて、現在のエンジン回転数NE及びスロットル開度値THに対応する燃料噴射量TIOUTを算出し、当該算出した燃料噴射量TIOUTに予め設定された補正係数(例えば「0.86」)を乗算することで、燃料噴射量TIOUTを補正(減量)する。
CPU53は、上記ステップS46において「Yes」の場合、つまりスロットル開度値TH≧低負荷開度値THXFPFLの場合、ステップS48の処理として、燃料噴射量TIOUTの算出及び補正を行った後、燃料噴射量算出処理を終了する。具体的には、CPU53は、上記3次元マップを用いて、現在のエンジン回転数NE及びスロットル開度値THに対応する燃料噴射量TIOUTを算出し、当該算出した燃料噴射量TIOUTに予め設定された補正係数(例えば「0.86」)を乗算することで、燃料噴射量TIOUTを補正(減量)する。
<ステップS49>
CPU53は、上記ステップS44において「Yes」の場合、つまりスロットル開度値TH≧高負荷開度値THXFPFHの場合、ステップS49の処理として、燃料噴射量TIOUTを「0」に設定した後、燃料噴射量算出処理を終了する。
CPU53は、上記ステップS44において「Yes」の場合、つまりスロットル開度値TH≧高負荷開度値THXFPFHの場合、ステップS49の処理として、燃料噴射量TIOUTを「0」に設定した後、燃料噴射量算出処理を終了する。
以上のように、燃料噴射量算出処理では、燃料供給系2の異常と連続して判断された回数が所定回数以上となった場合に、現在のエンジン運転状態に応じて燃料噴射量TIOUTの減量、または燃料噴射の停止(燃料噴射量TIOUTを「0」に設定)を行うことで、後述の燃料噴射処理において燃料供給系2の異常に応じた適切な燃料噴射を行うことができる。
〔燃料噴射処理〕
次に、エンジン1の運転制御中において、クランクパルス信号に同期して実行される燃料噴射処理について、図17のフローチャートを参照しながら詳細に説明する。
<ステップS51>
図17に示すように、CPU53は、燃料噴射処理におけるステップS51の処理として、クランクパルス信号に基づいて現在のクランク角を把握し、当該把握したクランク角がインジェクタタイマをセットすべきクランク角か否か、つまり燃料噴射実施タイミングか否かを判定し、「Yes」の場合にはステップS52の処理に移行する一方、「No」の場合にはステップS53の処理に移行する。
次に、エンジン1の運転制御中において、クランクパルス信号に同期して実行される燃料噴射処理について、図17のフローチャートを参照しながら詳細に説明する。
<ステップS51>
図17に示すように、CPU53は、燃料噴射処理におけるステップS51の処理として、クランクパルス信号に基づいて現在のクランク角を把握し、当該把握したクランク角がインジェクタタイマをセットすべきクランク角か否か、つまり燃料噴射実施タイミングか否かを判定し、「Yes」の場合にはステップS52の処理に移行する一方、「No」の場合にはステップS53の処理に移行する。
<ステップS52>
CPU53は、上記ステップS51において「Yes」の場合、つまり燃料噴射実施タイミングであった場合、ステップS52の処理として、インジェクタ駆動回路44を制御してインジェクタ21による燃料噴射を実施する。具体的には、CPU53は、インジェクタタイマに燃料噴射量TIOUTをセットし、タイマ52によるインジェクタタイマのカウント開始からカウント終了までの期間、インジェクタ21にインジェクタ駆動信号が供給されるようにインジェクタ駆動回路44を制御する。これにより、燃料噴射実施タイミングから燃料噴射量TIOUTの期間、インジェクタ21が通電され、燃料噴射量TIOUTに応じた量の燃料が噴射されることになる。
CPU53は、上記ステップS51において「Yes」の場合、つまり燃料噴射実施タイミングであった場合、ステップS52の処理として、インジェクタ駆動回路44を制御してインジェクタ21による燃料噴射を実施する。具体的には、CPU53は、インジェクタタイマに燃料噴射量TIOUTをセットし、タイマ52によるインジェクタタイマのカウント開始からカウント終了までの期間、インジェクタ21にインジェクタ駆動信号が供給されるようにインジェクタ駆動回路44を制御する。これにより、燃料噴射実施タイミングから燃料噴射量TIOUTの期間、インジェクタ21が通電され、燃料噴射量TIOUTに応じた量の燃料が噴射されることになる。
<ステップS53>
続いて、CPU53は、ステップS53の処理として、現在、インジェクタ21に対する通電がオンか否か(通電期間か否か)を判定し、「Yes」の場合にはステップS54の処理に移行する一方、「No」の場合にはステップS55の処理に移行する。
続いて、CPU53は、ステップS53の処理として、現在、インジェクタ21に対する通電がオンか否か(通電期間か否か)を判定し、「Yes」の場合にはステップS54の処理に移行する一方、「No」の場合にはステップS55の処理に移行する。
<ステップS54>
CPU53は、上記ステップS53において「Yes」の場合(つまり通電期間中の場合)、ステップS54の処理として、インジェクタ異常検出回路45から入力される通電/非通電状態信号がローレベルか否かを判定し、「Yes」の場合、つまりインジェクタ駆動信号と通電/非通電状態信号との論理が一致し、インジェクタ21が電気的に正常であると判断される場合にはインジェクタタイマのカウント終了後に燃料噴射処理を終了する一方、「No」の場合、つまりインジェクタ21が電気的に異常であると判断される場合にはステップS56の処理に移行する。
CPU53は、上記ステップS53において「Yes」の場合(つまり通電期間中の場合)、ステップS54の処理として、インジェクタ異常検出回路45から入力される通電/非通電状態信号がローレベルか否かを判定し、「Yes」の場合、つまりインジェクタ駆動信号と通電/非通電状態信号との論理が一致し、インジェクタ21が電気的に正常であると判断される場合にはインジェクタタイマのカウント終了後に燃料噴射処理を終了する一方、「No」の場合、つまりインジェクタ21が電気的に異常であると判断される場合にはステップS56の処理に移行する。
<ステップS55>
CPU53は、上記ステップS53において「No」の場合(つまり非通電期間中の場合)、ステップS55の処理として、インジェクタ異常検出回路45から入力される通電/非通電状態信号がハイレベルか否かを判定し、「Yes」の場合、つまりインジェクタ駆動信号と通電/非通電状態信号との論理が一致し、インジェクタ21が電気的に正常であると判断される場合にはインジェクタタイマのカウント終了後に燃料噴射処理を終了する一方、「No」の場合、つまりインジェクタ21が電気的に異常であると判断される場合にはステップS56の処理に移行する。
CPU53は、上記ステップS53において「No」の場合(つまり非通電期間中の場合)、ステップS55の処理として、インジェクタ異常検出回路45から入力される通電/非通電状態信号がハイレベルか否かを判定し、「Yes」の場合、つまりインジェクタ駆動信号と通電/非通電状態信号との論理が一致し、インジェクタ21が電気的に正常であると判断される場合にはインジェクタタイマのカウント終了後に燃料噴射処理を終了する一方、「No」の場合、つまりインジェクタ21が電気的に異常であると判断される場合にはステップS56の処理に移行する。
<ステップS56>
CPU53は、上記ステップS54において「No」の場合、または上記ステップS55において「No」の場合、つまりインジェクタ21に電気的異常が発生した場合、ステップS56の処理として、インジェクタ電気的異常検出フラグF_XDRXINJを「1」にセットした後、燃料噴射処理を終了する。
CPU53は、上記ステップS54において「No」の場合、または上記ステップS55において「No」の場合、つまりインジェクタ21に電気的異常が発生した場合、ステップS56の処理として、インジェクタ電気的異常検出フラグF_XDRXINJを「1」にセットした後、燃料噴射処理を終了する。
以上が、燃料供給系異常検出機能を実現するために、CPU53が実行するEEPROM読込み処理、燃料ポンプ駆動制御処理、O2フィードバック制御処理、燃料噴射量算出処理及び燃料噴射処理の説明であるが、以下では、上述した各処理の視覚的な理解を容易とするために、図18及び図19に示すタイミングチャートを用いて追加説明を行う。
図18は、ECU4の電源オン/オフ状態(図中の「A」)と、エンジン回転数NE(「B」)と、スロットル開度値TH(「C」)と、O2センサ出力電圧値VHG(「D」)と、O2フィードバック補正値MHG(「E」)、高負荷補正学習値MREFHG3(「F」)及び低負荷補正学習値MREFHG2(「G」)と、第2学習値算出回数CTMREFHG2(「H」)及び第3学習値算出回数CTMREFHG3(「I」)と、リッチ/リーン判定回数XCOXFPF(「J」)及びリーン判定回数XCDXFPF(「K」)と、燃料ポンプ異常監視フラグF_XDPXFPF(「L」)と、燃料ポンプ異常監視カウンタCTXDPXFPF(「M」)と、燃料ポンプ異常検出フラグF_XAPXFPF(「N」)との時間的対応関係を示すタイミングチャートである。
この図18に示すように、時刻T0に1回目のECU4の電源オンがなされたと仮定する。なお、この時刻T0において、上記の各信号及び各変数は「0」に初期化されているものとする。この時刻T0からエンジン回転数NE及びスロットル開度値THが徐々に高くなっていき、時刻T1においてエンジン運転状態がO2フィードバック領域内の第2学習領域(低負荷運転領域)に到達したとすると、この時刻T1からO2センサ出力電圧値VHGに基づくO2フィードバック制御(O2フィードバック補正値MHG及び低負荷補正学習値MREFHG2の算出)が行われる。
この時、低負荷補正学習値MREFHG2の算出が行われる度に、第2学習値算出回数CTMREFHG2はインクリメントされ、時刻T2に第2学習値算出回数CTMREFHG2が所定回数(例えば250回)に到達したものとする。この時刻T2以降、さらにエンジン回転数NE及びスロットル開度値THが高くなっていき、時刻T3においてエンジン運転状態がO2フィードバック領域内の第3学習領域(高負荷運転領域)に到達したとすると、この時刻T3からO2フィードバック補正値MHG及び高負荷補正学習値MREFHG3の算出が開始される。
この時、高負荷補正学習値MREFHG3の算出が行われる度に、第3学習値算出回数CTMREFHG3はインクリメントされ、時刻T4に第3学習値算出回数CTMREFHG3が所定回数(例えば250回)に到達したものとする。この時刻T4において、高負荷補正学習値MREFHG3と低負荷補正学習値MREFHG2との偏差が所定値(例えば1.4倍)以上になったとすると、この時点で燃料ポンプ異常監視フラグF_XDPXFPFが「1」にセットされ、さらに、燃料ポンプ異常監視カウンタCTXDPXFPFがインクリメントされて「1」になる。なお、この時点では、燃料ポンプ異常検出フラグF_XAPXFPFは「0」のままである。
この状態で、ECU4の電源がオフされて、時刻T5に2回目のECU4の電源オンがなされたと仮定する。なお、この時刻T5において、燃料ポンプ異常監視カウンタCTXDPXFPFはEEPROM50から読み込まれるため、前回の値(「1」)を保持している。この時刻T5から時刻T9までの期間に、上述した時刻T0から時刻T4までの期間と同様の動作が生じたとすると、時刻T9において、燃料ポンプ異常監視フラグF_XDPXFPFが「1」にセットされ、さらに、燃料ポンプ異常監視カウンタCTXDPXFPFがインクリメントされて「2」になる。なお、この時点では、燃料ポンプ異常検出フラグF_XAPXFPFは「0」のままである。
この状態で、ECU4の電源がオフされて、時刻T10に3回目のECU4の電源オンがなされたと仮定する。なお、この時刻T10において、燃料ポンプ異常監視カウンタCTXDPXFPFはEEPROM50から読み込まれるため、前回の値(「2」)を保持している。この時刻T10以降、エンジン回転数NEが高負荷回転数NEXFPFH以上、且つスロットル開度値THが高負荷開度値THXFPFH以上に急激に変化したと仮定する。この場合、エンジン運転状態がO2フィードバック領域を越える運転領域に到達するため、O2フィードバック制御は行われず、よってO2フィードバック補正値MHG、低負荷補正学習値MREFHG2及び高負荷補正学習値MREFHG3の算出は行われない。
一方、O2センサ出力電圧値VHGに基づくリッチ/リーン判定は行われるため、時刻T11以降、リッチ/リーン判定回数XCOXFPF及びリーン判定回数XCDXFPFがインクリメントされて上昇していく。そして、時刻T12において、リッチ/リーン判定回数XCOXFPFが所定回数(例えば250回)に到達し、この時、リーン判定回数XCDXFPFがリッチ/リーン判定回数XCOXFPFの90%(つまり225回)以上であったとすると、この時点で燃料ポンプ異常監視フラグF_XDPXFPFが「1」にセットされ、さらに、燃料ポンプ異常監視カウンタCTXDPXFPFがインクリメントされて「3」になる。つまり、時刻T12において、燃料ポンプ異常監視カウンタCTXDPXFPFが「3」以上となるため、燃料ポンプ異常検出フラグF_XAPXFPFが「1」にセットされる(燃料供給系2の異常と判断)。
図19は、ECU4の電源オン/オフ状態(図中の「A」)と、エンジン回転数NE(「B」)と、スロットル開度値TH(「C」)と、燃料噴射量TIOUT(「P」)と、燃料ポンプ異常検出カウンタCTXAPXFPF(「Q」)と、燃料ポンプ異常検出フラグF_XAPXFPF(「N」)と、ポンプ通電デューティ比率(「R」)と、インジケータ3の点灯状態(「S」)との時間的対応関係を示すタイミングチャートである。
図19に示すように、時刻T20に何回目かの(少なくとも3回目以上の)ECU4の電源オンがなされたと仮定する。なお、この時刻T20において、燃料ポンプ異常検出フラグF_XAPXFPF及び燃料ポンプ異常検出カウンタCTXAPXFPFは「0」であるとする。そして、時刻T21において、上記の図18で説明したように、燃料ポンプ異常検出フラグF_XAPXFPFが「1」にセットされて、燃料ポンプ異常検出カウンタCTXAPXFPFが「1」にインクリメントされたとする。
この時刻T21以降、燃料ポンプ異常検出カウンタCTXAPXFPFが「1」、つまり燃料ポンプ異常検出回数が1回以上3回未満であるため、時刻T21以前と比較して、燃料ポンプ31aの吐出流量が増加するようにポンプ通電デューティ比率は高く設定される。また、この時刻T21以降、燃料ポンプ異常検出回数が1回以上3回未満であるため、インジケータ3は第1の点灯パターン(比較的長周期で点灯するパターン)で点灯する。
この状態で、ECU4の電源がオフされて、時刻T22に再度ECU4の電源オンがなされたと仮定する。なお、この時刻T22において、燃料ポンプ異常検出フラグF_XAPXFPFは「0」に初期化されているが、燃料ポンプ異常検出カウンタCTXAPXFPFはEEPROM50から読み込まれるため、前回の値(「1」)を保持している。この時刻T22以降、燃料ポンプ異常検出カウンタCTXAPXFPFが「1」であるため、前回同様、ポンプ通電デューティ比率は高く設定される。
そして、時刻T23において、燃料ポンプ異常検出フラグF_XAPXFPFが「1」にセットされて、燃料ポンプ異常検出カウンタCTXAPXFPFが「2」にインクリメントされたとすると、この時刻T23以降、燃料ポンプ異常検出カウンタCTXAPXFPFが「2」、つまり燃料ポンプ異常検出回数が1回以上3回未満であるため、ポンプ通電デューティ比率は前回同様、高く設定されたままであり、また、インジケータ3も前回同様、第1の点灯パターンで点灯する。
この状態で、ECU4の電源がオフされて、時刻T24に再度ECU4の電源オンがなされたと仮定する。なお、この時刻T24において、燃料ポンプ異常検出フラグF_XAPXFPFは「0」に初期化されているが、燃料ポンプ異常検出カウンタCTXAPXFPFはEEPROM50から読み込まれるため、前回の値(「2」)を保持している。この時刻T24以降、燃料ポンプ異常検出カウンタCTXAPXFPFが「2」であるため、前回同様、ポンプ通電デューティ比率は高く設定される。
そして、時刻T25において、燃料ポンプ異常検出フラグF_XAPXFPFが「1」にセットされて、燃料ポンプ異常検出カウンタCTXAPXFPFが「3」にインクリメントされたとする。この時刻T25以降、燃料ポンプ異常検出カウンタCTXAPXFPFが「3」、つまり燃料ポンプ異常検出回数が3回以上であるため、燃料ポンプ31aの吐出流量が最大化されるようにポンプ通電デューティ比率は100%に設定される。また、この時刻T25以降、燃料ポンプ異常検出回数が3回以上であるため、インジケータ3は第2の点灯パターン(比較的短周期で点灯するパターン)で点灯する。
そして、時刻T26において、エンジン回転数NEが低負荷回転数NEXFPFL以上、且つスロットル開度値THが低負荷開度値THXFPFL以上になったとすると、この時刻T26以降、燃料噴射量TIOUTは減量(0.86倍)されることになる。さらに、時刻T27において、エンジン回転数NEが高負荷回転数NEXFPFH以上、且つスロットル開度値THが高負荷開度値THXFPFH以上になったとすると、この時刻T27以降、燃料噴射量TIOUTは「0」に設定されることになる(燃料噴射の停止)。
以上説明したように、本実施形態によれば、従来のような燃圧センサ等の燃圧検出手段を設けることなく、既存の空燃比センサ(O2センサ26)を利用して精度良く燃料供給系2の異常を検出することができ、コストの上昇を抑えることができる。また、インジケータ3の点灯によって燃料供給系2の異常をユーザに報知することで、ユーザに燃料フィルタ31bの交換を促すことができる。
なお、本発明は上記実施形態に限定されず、以下のような変形例が挙げられる。
(1)上記実施形態では、図16に示した燃料噴射量算出処理に従って燃料噴射量TIOUTを算出する場合を例示して説明したが、図20に示す燃料噴射量算出処理に従って燃料噴射量TIOUTを算出しても良い。以下、燃料噴射量算出処理の変形例について、図20のフローチャートを参照しながら説明する。
<ステップS61>
図20に示すように、CPU53は、まずステップS61の処理として、回転数カウンタ41からエンジン回転数NEを取得すると共に、A/D変換器42からスロットル開度値THを取得する(つまり、エンジン運転状態を把握する)。
(1)上記実施形態では、図16に示した燃料噴射量算出処理に従って燃料噴射量TIOUTを算出する場合を例示して説明したが、図20に示す燃料噴射量算出処理に従って燃料噴射量TIOUTを算出しても良い。以下、燃料噴射量算出処理の変形例について、図20のフローチャートを参照しながら説明する。
<ステップS61>
図20に示すように、CPU53は、まずステップS61の処理として、回転数カウンタ41からエンジン回転数NEを取得すると共に、A/D変換器42からスロットル開度値THを取得する(つまり、エンジン運転状態を把握する)。
<ステップS62>
そして、CPU53は、ステップS62の処理として、エンジン回転数NEと、スロットル開度値THと、燃料噴射量TIOUTとの対応関係を示す3次元マップを用いて、現在のエンジン回転数NE及びスロットル開度値THに対応する燃料噴射量TIOUT(単位はms)を算出し、当該算出した燃料噴射量TIOUTにO2フィードバック補正値MHGを乗算することで、燃料噴射量TIOUTを補正する。
そして、CPU53は、ステップS62の処理として、エンジン回転数NEと、スロットル開度値THと、燃料噴射量TIOUTとの対応関係を示す3次元マップを用いて、現在のエンジン回転数NE及びスロットル開度値THに対応する燃料噴射量TIOUT(単位はms)を算出し、当該算出した燃料噴射量TIOUTにO2フィードバック補正値MHGを乗算することで、燃料噴射量TIOUTを補正する。
<ステップS63>
そして、CPU53は、ステップS63の処理として、燃料ポンプ異常検出カウンタCTXAPXFPが所定値(例えば「3」)以上か否か、つまり燃料ポンプ異常検出回数が3回以上か否かを判定し、「Yes」の場合にはステップS64の処理に移行する一方、「No」の場合には燃料噴射量算出処理を終了する。
そして、CPU53は、ステップS63の処理として、燃料ポンプ異常検出カウンタCTXAPXFPが所定値(例えば「3」)以上か否か、つまり燃料ポンプ異常検出回数が3回以上か否かを判定し、「Yes」の場合にはステップS64の処理に移行する一方、「No」の場合には燃料噴射量算出処理を終了する。
<ステップS64>
CPU53は、上記ステップS63において「Yes」の場合、つまり燃料ポンプ異常検出カウンタCTXAPXFP≧3の場合、ステップS64の処理として、下記(4)式を用いて理論燃料噴射時間TILOGを算出する。なお、下記(4)式において、「TIO」はインジェクタ無効噴射時間を指し、インジェクタ21の機種によって設定される固定値である。
TILOG = TIOUT − TIO ・・・(4)
CPU53は、上記ステップS63において「Yes」の場合、つまり燃料ポンプ異常検出カウンタCTXAPXFP≧3の場合、ステップS64の処理として、下記(4)式を用いて理論燃料噴射時間TILOGを算出する。なお、下記(4)式において、「TIO」はインジェクタ無効噴射時間を指し、インジェクタ21の機種によって設定される固定値である。
TILOG = TIOUT − TIO ・・・(4)
<ステップS65>
続いて、CPU53は、上記ステップS65の処理として、下記(5)式を用いて、1回当りの燃料噴射量QTILOG(単位はリットル:L)を算出する。なお、下記(5)式において、「ΔTIOUT」は、単位時間当たりの燃料噴射量(単位はmm3/ms)であり、インジェクタ21の機種によって設定される固定値である。
QTILOG = TILOG × ΔTIOUT /1000000 ・・・(5)
続いて、CPU53は、上記ステップS65の処理として、下記(5)式を用いて、1回当りの燃料噴射量QTILOG(単位はリットル:L)を算出する。なお、下記(5)式において、「ΔTIOUT」は、単位時間当たりの燃料噴射量(単位はmm3/ms)であり、インジェクタ21の機種によって設定される固定値である。
QTILOG = TILOG × ΔTIOUT /1000000 ・・・(5)
<ステップS66>
続いて、CPU53は、上記ステップS66の処理として、下記(6)式を用いて、1時間当りの燃料噴射回数CTINJOUT(回/H)を算出する。
CTINJOUT = NE(rpm)×60/2 ・・・(6)
続いて、CPU53は、上記ステップS66の処理として、下記(6)式を用いて、1時間当りの燃料噴射回数CTINJOUT(回/H)を算出する。
CTINJOUT = NE(rpm)×60/2 ・・・(6)
<ステップS67>
続いて、CPU53は、上記ステップS67の処理として、下記(7)式を用いて、1時間当りの燃料噴射量QFUEL(L/H)を算出する。
QFUEL = QTILOG(L)× CTINJOUT(回/H) ・・・(7)
続いて、CPU53は、上記ステップS67の処理として、下記(7)式を用いて、1時間当りの燃料噴射量QFUEL(L/H)を算出する。
QFUEL = QTILOG(L)× CTINJOUT(回/H) ・・・(7)
<ステップS68>
そして、CPU53は、上記ステップS67の処理終了後、ステップS68の処理として、1時間当りの燃料噴射量QFUELが規定流量(例えば「7(L/H)」)以上か否かを判定し、「Yes」の場合にはステップS69の処理に移行する一方、「No」の場合には燃料噴射量算出処理を終了する。
そして、CPU53は、上記ステップS67の処理終了後、ステップS68の処理として、1時間当りの燃料噴射量QFUELが規定流量(例えば「7(L/H)」)以上か否かを判定し、「Yes」の場合にはステップS69の処理に移行する一方、「No」の場合には燃料噴射量算出処理を終了する。
<ステップS69>
CPU53は、上記ステップS68において「Yes」の場合、つまり1時間当りの燃料噴射量QFUELが規定流量以上の場合、ステップS69の処理として、規定流量を越えないような燃料噴射量TIOUTを再度算出した後、燃料噴射量算出処理を終了する。具体的には、規定流量を「7(L/H)」とすると、燃料噴射量TIOUTは下記(8)式で表される。
TIOUT = TILOG × 7/QFUEL + TIO ・・・(8)
CPU53は、上記ステップS68において「Yes」の場合、つまり1時間当りの燃料噴射量QFUELが規定流量以上の場合、ステップS69の処理として、規定流量を越えないような燃料噴射量TIOUTを再度算出した後、燃料噴射量算出処理を終了する。具体的には、規定流量を「7(L/H)」とすると、燃料噴射量TIOUTは下記(8)式で表される。
TIOUT = TILOG × 7/QFUEL + TIO ・・・(8)
以上のように、本変形例における燃料噴射量算出処理では、エンジン運転状態に基づいて燃料噴射量TIOUTを算出する一方、燃料供給系2の異常と連続して判断された回数が所定回数以上となった場合、燃料噴射量TIOUTに基づいて1時間当りの燃料噴射量QFUELを算出し、当該1時間当りの燃料噴射量QFUELが規定流量以上の場合には、規定流量を越えないような燃料噴射量TIOUTを再算出する。これにより、図16に示した燃料噴射量算出処理と比べて、高精度に燃料噴射量を制御することができる。
(2)上記実施形態では、図11に示したように、O2フィードバック領域を3つの学習領域(アイドリング運転領域、低負荷運転領域、高負荷運転領域)に分割した場合を例示したが、O2フィードバック領域の分割数はこれに限らず、低負荷運転領域及び高負荷運転領域さえ設定されていれば、4つ以上でも良いし、2つだけでも良い。
(3)本発明は、小型二輪車のようにサイズが小さい車両の燃料供給系の異常検出に好適であるが、これに限定されるものでなく、大型二輪車や四輪自動車等のサイズの大きな車両に適用することでもコストメリットを得ることができる。
1…エンジン、2…燃料供給系、3…インジケータ(報知部)、4…ECU(燃料供給系異常検出装置)、26…O2センサ(空燃比センサ)、30…燃料タンク、31…燃料ポンプモジュール、31a…燃料ポンプ、21…インジェクタ(燃料噴射弁)、53…CPU(Central Processing Unit:信号処理部)
Claims (9)
- エンジンに設置された空燃比センサの出力信号を基に空燃比がリッチかリーンかを判定する処理と、
エンジン運転状態が異常監視運転領域に含まれる場合に前記空燃比がリーンと判定されたリーン判定回数を計数する処理と、
前記リーン判定回数が所定回数以上となった場合を異常監視状態として認識する処理と、前記異常監視状態を連続して所定回数認識した場合に燃料供給系の異常と判断する処理
とを実行する信号処理部を備えることを特徴とする燃料供給系異常検出装置。 - エンジンに設置された空燃比センサの出力信号を基に空燃比がリッチかリーンかを判定する処理と、
エンジン運転状態が空燃比フィードバック領域に含まれる場合に前記空燃比のリッチ/リーン判定結果に応じて空燃比フィードバック補正値を算出する処理と、
前記エンジン運転状態が前記空燃比フィードバック領域内の低負荷運転領域に含まれる場合に前記空燃比フィードバック補正値を基に低負荷補正学習値を算出する処理と、
前記エンジン運転状態が前記空燃比フィードバック領域内の高負荷運転領域に含まれる場合に前記空燃比フィードバック補正値を基に高負荷補正学習値を算出する処理と、
前記高負荷補正学習値と前記低負荷補正学習値との偏差が所定値以上となった場合を異常監視状態として認識する処理と、
前記異常監視状態を連続して所定回数認識した場合に燃料供給系の異常と判断する処理
とを実行する信号処理部を備えることを特徴とする燃料供給系異常検出装置。 - 燃料噴射弁の電気的異常を検出する燃料噴射弁電気的異常検出部と、燃料ポンプの電気的異常を検出する燃料ポンプ電気的異常検出部との少なくとも一方を備え、
前記信号処理部は、前記燃料噴射弁と前記燃料ポンプとの少なくとも一方に電気的異常が検出された場合には、前記燃料供給系の異常判断を禁止することを特徴とする請求項1または2に記載の燃料供給系異常検出装置。 - 点灯によって前記燃料供給系の異常をユーザに報知する報知部を備え、
前記信号処理部は、前記燃料供給系の異常と連続して判断された回数が1回以上所定回数未満の場合、前記燃料供給系に軽度の異常が発生したことをユーザに報知するための第1の点灯パターンにて前記報知部を点灯させることを特徴とする請求項1〜3のいずれか一項に記載の燃料供給系異常検出装置。 - 前記信号処理部は、前記燃料供給系の異常と連続して判断された回数が前記所定回数以上となった場合、前記燃料供給系に重度の異常が発生したことをユーザに報知するための第2の点灯パターンにて前記報知部を点灯させることを特徴とする請求項4に記載の燃料供給系異常検出装置。
- 前記信号処理部は、
前記エンジンの運転状態に基づいて燃料噴射量を算出する処理と、
前記燃料噴射量に基づいて燃料ポンプの吐出流量が要求される最小限度となるように前記燃料ポンプの通電デューティ比率を決定する処理と、
前記燃料供給系の異常と連続して判断された回数が1回以上所定回数未満の場合に、前記燃料ポンプの吐出流量が増加するように前記通電デューティ比率を補正する処理とを実行することを特徴とする請求項1〜5のいずれか一項に記載の燃料供給系異常検出装置。 - 前記信号処理部は、前記燃料供給系の異常と連続して判断された回数が前記所定回数以上となった場合には、前記通電デューティ比率を100%にすることを特徴とする請求項6に記載の燃料供給系異常検出装置。
- 前記信号処理部は、前記燃料供給系の異常と連続して判断された回数が所定回数以上となった場合、前記エンジン運転状態に応じて前記燃料噴射量の減量、または燃料噴射の停止を行うことを特徴とする請求項1〜7のいずれか一項に記載の燃料供給系異常検出装置。
- 前記信号処理部は、前記エンジン運転状態に基づいて前記燃料噴射量を算出する一方、前記燃料供給系の異常と連続して判断された回数が所定回数以上となった場合、前記算出した燃料噴射量に基づいて1時間当りの燃料噴射量を算出し、当該1時間当りの燃料噴射量が規定流量以上の場合には、前記規定流量を越えないような前記燃料噴射量を再算出することを特徴とする請求項1〜7のいずれか一項に記載の燃料供給系異常検出装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010053755A JP2011185222A (ja) | 2010-03-10 | 2010-03-10 | 燃料供給系異常検出装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010053755A JP2011185222A (ja) | 2010-03-10 | 2010-03-10 | 燃料供給系異常検出装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011185222A true JP2011185222A (ja) | 2011-09-22 |
Family
ID=44791792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010053755A Pending JP2011185222A (ja) | 2010-03-10 | 2010-03-10 | 燃料供給系異常検出装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011185222A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013140931A1 (ja) * | 2012-03-22 | 2013-09-26 | 株式会社ケーヒン | 燃料供給装置 |
JP2016061187A (ja) * | 2014-09-17 | 2016-04-25 | 株式会社ケーヒン | 燃料噴射制御装置 |
JP2018053858A (ja) * | 2016-09-30 | 2018-04-05 | 株式会社ケーヒン | 燃料供給異常判定装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62107252A (ja) * | 1985-11-04 | 1987-05-18 | Nippon Denso Co Ltd | 電子式エンジン制御システムの異常検出装置 |
JPH0463944A (ja) * | 1990-06-30 | 1992-02-28 | Nippondenso Co Ltd | 燃料噴射制御装置 |
JPH0463942A (ja) * | 1990-06-30 | 1992-02-28 | Nippondenso Co Ltd | 燃料噴射制御装置 |
JPH07259611A (ja) * | 1994-03-22 | 1995-10-09 | Nippondenso Co Ltd | 内燃機関の空燃比制御装置 |
JPH08261044A (ja) * | 1995-03-20 | 1996-10-08 | Nippondenso Co Ltd | 内燃機関の燃料噴射制御装置 |
JPH0972616A (ja) * | 1995-09-08 | 1997-03-18 | Sanyo Electric Co Ltd | 空気清浄機付温風暖房機 |
JP2002097995A (ja) * | 2000-09-22 | 2002-04-05 | Denso Corp | 内燃機関の異常診断装置 |
JP2004124868A (ja) * | 2002-10-04 | 2004-04-22 | Honda Motor Co Ltd | 内燃機関制御デバイスの故障診断装置 |
JP2008263737A (ja) * | 2007-04-13 | 2008-10-30 | Muscle Corp | サーボモータ |
JP2010019199A (ja) * | 2008-07-11 | 2010-01-28 | Denso Corp | 内燃機関の制御装置 |
-
2010
- 2010-03-10 JP JP2010053755A patent/JP2011185222A/ja active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62107252A (ja) * | 1985-11-04 | 1987-05-18 | Nippon Denso Co Ltd | 電子式エンジン制御システムの異常検出装置 |
JPH0463944A (ja) * | 1990-06-30 | 1992-02-28 | Nippondenso Co Ltd | 燃料噴射制御装置 |
JPH0463942A (ja) * | 1990-06-30 | 1992-02-28 | Nippondenso Co Ltd | 燃料噴射制御装置 |
JPH07259611A (ja) * | 1994-03-22 | 1995-10-09 | Nippondenso Co Ltd | 内燃機関の空燃比制御装置 |
JPH08261044A (ja) * | 1995-03-20 | 1996-10-08 | Nippondenso Co Ltd | 内燃機関の燃料噴射制御装置 |
JPH0972616A (ja) * | 1995-09-08 | 1997-03-18 | Sanyo Electric Co Ltd | 空気清浄機付温風暖房機 |
JP2002097995A (ja) * | 2000-09-22 | 2002-04-05 | Denso Corp | 内燃機関の異常診断装置 |
JP2004124868A (ja) * | 2002-10-04 | 2004-04-22 | Honda Motor Co Ltd | 内燃機関制御デバイスの故障診断装置 |
JP2008263737A (ja) * | 2007-04-13 | 2008-10-30 | Muscle Corp | サーボモータ |
JP2010019199A (ja) * | 2008-07-11 | 2010-01-28 | Denso Corp | 内燃機関の制御装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013140931A1 (ja) * | 2012-03-22 | 2013-09-26 | 株式会社ケーヒン | 燃料供給装置 |
JP2013194711A (ja) * | 2012-03-22 | 2013-09-30 | Keihin Corp | 燃料供給装置 |
CN104204495A (zh) * | 2012-03-22 | 2014-12-10 | 株式会社京浜 | 燃料供应装置 |
JP2016061187A (ja) * | 2014-09-17 | 2016-04-25 | 株式会社ケーヒン | 燃料噴射制御装置 |
JP2018053858A (ja) * | 2016-09-30 | 2018-04-05 | 株式会社ケーヒン | 燃料供給異常判定装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5115657B2 (ja) | 内燃機関の空燃比気筒間インバランス判定装置 | |
US8818685B2 (en) | Rotation detecting device and rotation detecting method | |
JP5196003B2 (ja) | 内燃機関の空燃比気筒間インバランス判定装置 | |
US8437944B2 (en) | Fuel injection device of internal combustion engine | |
US10428757B2 (en) | Fuel injection control device for internal combustion engine | |
JP2009162181A (ja) | NOxセンサ診断装置およびそれを用いた排気浄化システム | |
KR101271777B1 (ko) | 다기통 4사이클 엔진의 실화 판정 장치 | |
US9822722B2 (en) | Fuel pressure sensor abnormality diagnosis apparatus for internal combustion engine | |
JP2012007496A (ja) | 内燃機関の制御装置 | |
JP5170312B2 (ja) | 内燃機関の始動制御システム | |
JP2013253560A (ja) | 燃料供給装置 | |
JP2011185222A (ja) | 燃料供給系異常検出装置 | |
CN111810307B (zh) | 内燃机的控制系统以及内燃机 | |
JP2010071126A (ja) | 直接噴射式内燃機関の燃料噴射制御装置 | |
JP2011149364A (ja) | 燃料噴射制御装置及び方法 | |
JP2005048659A (ja) | 燃料温度推定装置 | |
JP2008208773A (ja) | セタン価検出制御装置 | |
JP4807359B2 (ja) | 内燃機関の空燃比制御装置 | |
JP2010043624A (ja) | 内燃機関の触媒劣化判定装置 | |
JP2014214676A (ja) | 内燃機関の制御装置 | |
JP2013194580A (ja) | 内燃機関の燃料噴射制御装置 | |
JP5447236B2 (ja) | 多気筒内燃機関の燃料噴射制御装置 | |
US8554449B2 (en) | Fuel injection control apparatus | |
JP5951068B1 (ja) | 内燃機関の空燃比制御装置および空燃比制御方法 | |
JP4371132B2 (ja) | 内燃機関の燃料噴射制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20121204 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130830 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130903 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20140114 |