(57)【特許請求の範囲】
【請求項１】
燃料噴射弁に燃料を供給する燃料ポンプ、同燃料ポンプから前記燃料噴射弁に供給される燃料の圧力を検出する燃圧センサ、前記燃料ポンプから前記燃料噴射弁に供給される燃料の圧力の目標値を設定する目標値設定部、及び、前記燃圧センサによって検出された燃圧の検出値が前記目標値と一致するように前記燃料ポンプの燃料吐出量をフィードバック制御する燃圧フィードバック制御部、を含む燃料供給システムを備えた内燃機関に適用され、
前記燃圧センサ異常診断部は、前記検出値が前記目標値よりも小さい状態が発生したことにより、前記燃圧フィードバック制御部が前記燃料ポンプの燃料吐出量を増大した結果、同燃料吐出量が前記燃料ポンプの燃料吐出量の最大量に達した場合において、前記燃料吐出量が前記燃料ポンプの燃料吐出量の最大量に達した時点から第１の所定期間が経過しても、前記検出値が前記目標値よりも小さいとの第１の異常診断条件が成立した場合、前記燃圧センサが異常であると診断する燃圧センサ異常診断部を具備する、
燃圧センサ異常診断装置において、
前記燃圧センサ異常診断部は、前記第１の異常診断条件が成立したか否かとは無関係に、前記検出値が前記目標値から第１の所定値以上乖離した燃圧乖離状態が発生したことにより、前記燃圧フィードバック制御部が前記燃料ポンプの燃料吐出量を制御したにもかかわらず、前記燃圧乖離状態が発生した時点から第２の所定期間が経過しても、前記検出値が前記目標値に向かって第２の所定値以上変化しないとの第２の異常診断条件が成立した場合、前記燃圧センサが異常であると診断する、燃圧センサ異常診断装置。
【請求項２】
請求項１に記載の燃圧センサ異常診断装置において、
前記燃圧センサ異常診断部は、前記燃料ポンプの燃料吐出量がその最大量に達していない状態において前記燃圧乖離状態が第３の所定期間以上発生しない場合、前記目標値を前記第１の所定値以上増大又は減少させて前記燃圧乖離状態を発生させる、
燃圧センサ異常診断装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の燃料噴射弁に供給される燃料の圧力を検出する燃圧センサの異常を診断する燃圧センサ異常診断装置に関する。
【背景技術】
【０００２】
内燃機関の燃料噴射弁に供給される燃料の圧力を検出する燃圧センサの異常を診断する燃圧センサ異常診断装置が知られている（例えば、特許文献１を参照。）。この装置（以下、「従来装置」と称呼する。）は、燃圧センサによって検出される燃料の圧力の検出値（以下、単に「検出値」と称呼する。）の「最大値と最小値との差」が所定期間に渡って所定値以下であり且つこれら「最大値と最小値との中間の値」が目標値から所定値以上乖離している場合、燃圧センサが異常であるとの仮診断を行う。
【０００３】
更に、従来装置は、前記仮診断を行ったときに検出値が目標値を上回っている場合、燃料噴射弁に燃料を供給する燃料ポンプの燃料吐出量を減少させる。一方、従来装置は、前記仮診断を行ったときに検出値が目標値を下回っている場合、前記燃料ポンプの燃料吐出量を増大させる。従来装置は、このように燃料吐出量を減少させ或いは増大させた時点から所定期間内における検出値の変化量が所定量以下である場合、燃圧センサが異常であるとの本診断を行う。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１３８７７４号公報（段落００２３乃至段落００３２、及び、段落００４２乃至段落００４７）
【発明の概要】
【０００５】
ところで、特許文献１に記載の内燃機関においては、前記検出値がその目標値と一致するように燃料ポンプの燃料吐出量がフィードバック制御される。このため、検出値が目標値を下回った状態が比較的長い時間継続すると、燃料ポンプの燃料吐出量がその最大量に達することがある。従って、従来装置が前記仮診断を行ったときに燃料ポンプの燃料吐出量がその最大量に達しており且つ検出値が目標値を下回っていることもある。
【０００６】
この場合、従来装置が前記仮診断を行った後、本判定を行うために燃料吐出量を増大させようとしても増大させることができず、従って、従来装置は、本診断を行うことができない。このため、従来装置においては、燃料ポンプの燃料吐出量がその最大量に達しており且つ検出値が目標値を下回っている場合、燃圧センサの異常を診断することができない。
【０００７】
本発明は、上述した課題に対処するためになされたものである。即ち、本発明の目的の１つは、燃料ポンプの燃料吐出量がその最大量に達しており且つ検出値が目標値を下回っているときであっても燃圧センサの異常を診断することができる「内燃機関の燃圧センサ異常診断装置」を提供することにある。
【０００８】
本発明の燃圧センサ異常診断装置（以下、「本発明装置」と称呼する。）が適用される内燃機関は、
燃料噴射弁に燃料を供給する燃料ポンプ、
同燃料ポンプから前記燃料噴射弁に供給される燃料の圧力を検出する燃圧センサ、
前記燃料ポンプから前記燃料噴射弁に供給される燃料の圧力の目標値を設定する目標値設定部、及び、
前記燃圧センサによって検出された燃圧の検出値が前記目標値と一致するように前記燃料ポンプの燃料吐出量をフィードバック制御する燃圧フィードバック制御部、を含む燃料供給システム
を備える。
【０００９】
本発明装置は、前記燃圧センサの異常を診断する燃圧センサ異常診断部を具備する。
【００１０】
先に述べたように、燃圧センサの検出値が目標値と一致するように燃料ポンプの燃料吐出量がフィードバック制御されている場合、検出値が目標値よりも小さいと、前記燃料吐出量が増大される。このため、検出値が目標値よりも小さい状態が続くと、やがては、燃料吐出量はその最大量に達する。
【００１１】
通常、燃料ポンプは、最も大きい目標値まで燃料噴射弁に供給する燃料の圧力を上昇させることができるように構成されている。従って、燃料吐出量がその最大量に達した時点から一定期間が経過しても、検出値が目標値よりも小さい場合、その原因は、燃圧センサの異常にある。
【００１２】
そこで、前記燃圧センサ異常診断部は、「前記検出値が前記目標値よりも小さい状態」が発生したことにより、前記燃圧フィードバック制御部が前記燃料ポンプの燃料吐出量を増大した結果、同燃料吐出量が前記燃料ポンプの燃料吐出量の最大量に達した場合において、「前記燃料吐出量が前記燃料ポンプの燃料吐出量の最大量に達した時点」から第１の所定期間が経過しても、前記検出値が前記目標値よりも小さいとの第１の異常診断条件が成立した場合、前記燃圧センサが異常であると診断する。
【００１３】
これにより、燃料ポンプの燃料吐出量がその最大量に達しており且つ検出値が目標値を下回っているときであっても燃圧センサの異常を診断することができる。
【００１４】
更に、前記検出値が目標値から一定値以上乖離した燃圧乖離状態が発生した場合、前記燃圧フィードバック制御部は、検出値が目標値と一致するように燃料ポンプの燃料吐出量を増大又は減少させる。その結果、燃圧センサが正常であれば、検出値は、少なからず目標値に向かって一定値以上変化するはずである。従って、検出値が目標値に向かって一定値以上変化しない場合、その原因は、燃圧センサの異常にある。
【００１５】
そこで、前記燃圧センサ異常診断部は、前記第１の異常診断条件が成立したか否かとは無関係に、「前記検出値が前記目標値から第１の所定値以上乖離した燃圧乖離状態」が発生したことにより、前記燃圧フィードバック制御部が前記燃料ポンプの燃料吐出量を制御したにもかかわらず、「前記燃圧乖離状態が発生した時点」から第２の所定期間が経過しても、前記検出値が前記目標値に向かって第２の所定値以上変化しない場合、前記燃圧センサが異常であると診断する。
【００１６】
加えて、前記燃圧センサ異常診断部は、前記燃料ポンプの燃料吐出量がその最大量に達していない状態において前記燃圧乖離状態が第３の所定期間以上発生しない場合、前記目標値を前記第１の所定値以上増大又は減少させて前記燃圧乖離状態を発生させる、ように構成されてもよい。
【００１７】
これによれば、一定期間以上、燃圧乖離状態が発生せず、燃圧センサの異常診断が行われない状況であっても、燃圧センサの異常診断を行うことができる。
【００１８】
本発明の他の目的、他の特徴及び付随する利点は、以下の図面を参照しつつ記述される本発明の各実施形態についての説明から容易に理解されるであろう。
【図面の簡単な説明】
【００１９】
【図１】図１は、本発明の実施形態に係る燃圧センサ異常診断装置が適用される内燃機関の全体図である。
【図２】図２は、図１に示したＥＣＵのＣＰＵが実行する燃圧制御ルーチンを示したフローチャートである。
【図３】図３は、図１に示したＥＣＵのＣＰＵが実行する目標値設定ルーチンを示したフローチャートである。
【図４】図４は、アクティブ制御による燃圧の目標値の変化を示したタイムチャートである。
【図５】図５は、図１に示したＥＣＵのＣＰＵが実行するアクティブ制御ルーチンを示したフローチャートである。
【図６】図６は、図１に示したＥＣＵのＣＰＵが実行するアクティブ制御継続フラグ設定ルーチンを示したフローチャートである。
【図７】図７（Ａ）は、燃圧センサが正常である場合における同燃圧センサの検出値の変化を示したタイムチャートであり、図７（Ｂ）は、燃圧センサが異常である場合における同燃圧センサの検出値の変化を示したタイムチャートである。
【図８】図８（Ａ）は、燃圧センサが正常である場合における同燃圧センサの検出値の変化を示したタイムチャートであり、図８（Ｂ）は、燃圧センサが異常である場合における同燃圧センサの検出値の変化を示したタイムチャートである。
【図９】図９（Ａ）は、燃圧センサが正常である場合における同燃圧センサの検出値の変化を示したタイムチャートであり、図９（Ｂ）は、燃圧センサが異常である場合における同燃圧センサの検出値の変化を示したタイムチャートである。
【図１０】図１０（Ａ）は、燃圧センサが正常である場合における同燃圧センサの検出値の変化を示したタイムチャートであり、図１０（Ｂ）は、燃圧センサが異常である場合における同燃圧センサの検出値の変化を示したタイムチャートである。
【図１１】図１１は、燃圧センサが正常である場合における同燃圧センサの検出値及びデューティ比の変化を示したタイムチャートである。
【図１２】図１２は、燃圧センサが異常である場合における同燃圧センサの検出値及びデューティ比の変化を示したタイムチャートである。
【図１３】図１３は、図１に示したＥＣＵのＣＰＵが実行する異常診断ルーチンを示したフローチャートである。
【図１４】図１４は、図１に示したＥＣＵのＣＰＵが実行する診断実行フラグ設定ルーチンを示したフローチャートである。
【図１５】図１５は、燃圧センサが異常である場合における同燃圧センサの検出値及びデューティ比の変化を示したタイムチャートである。
【図１６】図１６は、図１に示したＥＣＵのＣＰＵが実行する異常診断ルーチンを示したフローチャートである。
【発明を実施するための形態】
【００２０】
以下、図面を参照しながら、本発明の実施形態に係る内燃機関の燃圧センサ異常診断装置（以下、「本診断装置」と称呼する。）について説明する。
【００２１】
（構成）
本診断装置は、図１に示した内燃機関（機関）１０に適用される。機関１０は、多気筒（本例では直列４気筒）・４サイクル・ピストン往復動型・ガソリン機関である。機関１０は、機関本体部２０、燃料供給システム３０、吸気システム４０、及び、排気システム５０を含んでいる。
【００２２】
機関本体部２０は、シリンダブロック、シリンダヘッド及びクランクケース等を含む本体２１を含む。本体２１には、４つの気筒（燃焼室）♯１乃至♯４が形成されている。シリンダヘッドには、各気筒♯１乃至♯４内に燃料を噴射するように燃料噴射弁（以下、「筒内噴射弁」とも称呼する。）２２ｃが配設されている。更に、シリンダヘッドには、各気筒♯１乃至♯４に対応して形成された図示しない吸気ポート内に燃料を噴射するように燃料噴射弁（以下、「ポート噴射弁」とも称呼する。）２２ｐが配設されている。
【００２３】
各燃料噴射弁２２ｃ及び２２ｐは、後述するエンジンＥＣＵ（電子制御ユニット）７０の指示に応答して開弁し、燃料を噴射するようになっている。
【００２４】
更に、シリンダヘッドには、各気筒♯１乃至♯４に対応して点火装置２３が配設されている。各点火装置２３は、「高電圧を発生するイグニッションコイルを含むイグナイタ」及び「点火プラグ」を含む。イグナイタは、後述するＥＣＵ７０の指示に応答してイグニッションコイルによって高電圧を発生するようになっている。この高電圧は点火プラグに与えられ、点火プラグによって火花が生成される。
【００２５】
燃料供給システム３０は、２つの燃料ポンプ３１ｐ及び３１ｃ、３つの燃料送出管３２ａ、３２ｃ及び３２ｐ、２つのデリバリパイプ（蓄圧室）３３ｃ及び３３ｐ、並びに、燃料タンク３４を含んでいる。燃料送出管３２ａは、「燃料ポンプ３１ｐ」と「燃料送出管３２ｃ及び３２ｐ」とを接続している。燃料送出管３２ｃは、燃料送出管３２ａとデリバリパイプ３３ｃとを接続している。燃料送出管３２ｐは、燃料送出管３２ａとデリバリパイプ３３ｐとを接続している。以下、デリバリパイプ３３ｃを「高圧デリバリパイプ」と称呼し、デリバリパイプ３３ｐを「低圧デリバリパイプ」と称呼する。
【００２６】
燃料ポンプ３１ｐは、燃料タンク３４内に配設されている。燃料ポンプ３１ｐは、後述するＥＣＵ７０の指示に応答して作動する電動モータによって駆動され、燃料タンク３４内に貯留されている燃料を燃料送出管３２ａに吐出する。この吐出された燃料は、燃料送出管３２ａを介して燃料送出管３２ｃ及び３２ｐに流入する。以下、燃料ポンプ３１ｐを「低圧ポンプ」と称呼する。
【００２７】
燃料送出管３２ｃに流入した燃料は、燃料送出管３２ｃに介装された燃料ポンプ３１ｃに流入する。燃料ポンプ３１ｃは、図示しないカムシャフトの回転力を駆動力として駆動され、同燃料ポンプ３１ｃに流入した燃料を更に加圧してその下流側の燃料送出管３２ｃに吐出する。燃料ポンプ３１ｃから吐出された燃料は、燃料送出管３２ｃを介して高圧デリバリパイプ３３ｃに流入する。高圧デリバリパイプ３３ｃは、筒内噴射弁２２ｃに接続されている。
【００２８】
一方、燃料送出管３２ｐに流入した燃料は、同燃料送出管３２ｐを介して低圧デリバリパイプ３３ｐに流入する。低圧デリバリパイプ３３ｐは、ポート噴射弁２２ｐに接続されている。
【００２９】
更に、燃料タンク３４内において、燃料送出管３２ａには、リリーフバルブ３４ａが介装されている。リリーフバルブ３４ａは、燃料送出管３２ａ内の燃料の圧力が所定の圧力に達したときに同燃料の圧力によって開弁される。本例において、所定の圧力は、後述する最大値Ｐfp_maxの圧力よりも高い圧力に設定されている。
【００３０】
リリーフバルブ３４ａが開弁すると、低圧ポンプ３１ｐから燃料送出管３２ａに吐出された燃料の一部が「リリーフバルブ３４ａ」及び「同リリーフバルブ３４ａに接続されたリリーフ管３４ｂ」を介して燃料タンク３４内に戻される。
【００３１】
加えて、燃料タンク３４内において、燃料管３４ｃは、「低圧ポンプ３１ｐとリリーフバルブ３４ａとの間の位置の燃料送出管３２ａの部分」と「減量弁３４ｄ」とを接続している。燃料管３４ｅは、その一端において減量弁３４ｄに接続されており、その他端において燃料タンク３４内に開放されている。減量弁３４ｄは、後述するＥＣＵ７０の指示に応答して開弁し、低圧ポンプ３１ｐから吐出された燃料の一部を燃料管３４ｅを介して燃料タンク３４内に戻す。
【００３２】
吸気システム４０は、インテークマニホールド４１及び吸気管４２を含んでいる。インテークマニホールド４１は、「図示しない吸気ポートを介して各気筒♯１乃至♯４に接続された枝部」及び「枝部が集合した集合部」を含む。吸気管４２はインテークマニホールド４１の集合部に接続されている。インテークマニホールド４１及び吸気管４２は吸気通路を構成している。
【００３３】
排気システム５０は、エキゾーストマニホールド５１及び排気管５２を含んでいる。エキゾーストマニホールド５１は、「図示しない排気ポートを介して各気筒♯１乃至♯４に接続された枝部」及び「枝部が集合した集合部」を含む。排気管５２はエキゾーストマニホールド５１の集合部に接続されている。エキゾーストマニホールド５１及び排気管５２は排気通路を構成している。
【００３４】
ＥＣＵ７０は、周知のマイクロコンピュータを含む電子回路であり、ＣＰＵ、ＲＯＭ、ＲＡＭ、バックアップＲＡＭ及びインターフェース等を含む。ＥＣＵ７０は、以下に述べるセンサ類と接続されていて、これらのセンサからの信号を受信（入力）するようになっている。更に、ＥＣＵ７０は、各種アクチュエータ（燃料噴射弁２２ｃ及び２２ｐ等）に指示（駆動）信号を送出するようになっている。
【００３５】
ＥＣＵ７０は、高圧側燃圧センサ７１ｃ、低圧側燃圧センサ７１ｐ及びクランク角度センサ７２と接続されている。
【００３６】
高圧側燃圧センサ７１ｃは、ダイヤフラムの変形量を圧電素子により検出するタイプのセンサであり、高圧デリバリパイプ３３ｃに配設されている。この高圧側燃圧センサ７１ｃは、高圧デリバリパイプ３３ｃ内の燃料の圧力を測定し、その燃料の圧力（燃圧）Ｐfcを表す信号を出力する。
【００３７】
一方、低圧側燃圧センサ７１ｐは、ダイヤフラムの変形量を圧電素子により検出するタイプのセンサであり、低圧デリバリパイプ３３ｐに配設されている。この燃圧センサ７１ｐは、低圧デリバリパイプ３３ｐ内の燃料の圧力を測定し、その燃料の圧力（燃圧）Ｐfpを表す信号を出力する。本例においては、本診断装置は、後に述べるように、この低圧側燃圧センサ７１ｐが異常であるか否かを診断する。
【００３８】
クランク角度センサ７２は、機関本体部２０に配設されている。このクランク角度センサ７２は、機関１０の図示しないクランクシャフトの回転位置（即ち、クランク角度）に応じた信号を出力する。ＥＣＵ７０は、「このクランク角度センサ７２」及び「図示しないカムポジションセンサ」からの信号に基づいて、所定の気筒の圧縮上死点を基準とした機関１０のクランク角度（絶対クランク角度）を取得する。更に、ＥＣＵ７０は、クランク角度センサ７２からの信号に基づいて、機関回転速度ＮＥを取得する。
【００３９】
更に、本例においては、ＥＣＵ７０は、図示しない機関運転状態量センサ等（アクセルペダルの操作量を検出するアクセル操作量センサ、イグニッションスイッチのオン・オフ状態を検出するイグニッションスイッチセンサ、各気筒♯１乃至♯４に吸入される空気の量を検出するエアフローメータ、各気筒♯１乃至♯４に吸入される空気の温度を検出する温度センサ、機関１０を冷却するための冷却水の温度を検出する温度センサ、各気筒♯１乃至♯４から排出される排ガスの空燃比を検出する空燃比センサ（酸素センサ）等）からの検出信号を受信するようになっている。
【００４０】
（燃圧の制御）
次に、図２を参照しながら、低圧デリバリパイプ３３ｐ内の燃料の圧力（燃圧）Ｐfpの制御について説明する。ＥＣＵ７０のＣＰＵは、所定時間の経過毎に図２にフローチャートにより示した燃圧制御ルーチンを実行するようになっている。
【００４１】
従って、所定のタイミングになると、ＣＰＵは、図２のステップ２００から処理を開始してステップ２０５に進み、その時点における「低圧ポンプ３１ｐを駆動する電動モータに対する電力供給を制御するデューティ比Ｒduty（以下、単に「デューティ比」と称呼する。）」が所定値Ｒduty_thよりも小さいか否かを判定する。本例においては、デューティ比Ｒdutyが大きいほど、低圧ポンプ３１ｐの単位時間あたりの燃料吐出量が多くなる。
【００４２】
ＣＰＵがステップ２０５の処理を実行する時点において、デューティ比Ｒdutyが所定値Rduty_thよりも小さい場合、ＣＰＵはそのステップ２０５にて「Ｙｅｓ」と判定し、以下に述べるステップ２１０及びステップ２１５の処理を順に実行する。その後、ＣＰＵは、ステップ２２０に進む。
【００４３】
ステップ２１０：ＣＰＵは、「低圧側燃圧センサ７１ｐによって検出される燃圧の検出値Ｐfp_dtc」と「後に述べるように設定される目標値Ｐfp_tgt」との偏差（燃圧差）ΔＰfpを取得する（ΔＰfp＝Ｐfp_tgt−Ｐfp_dtc）。
【００４４】
ステップ２１５：ＣＰＵは、下記の（１）式に従ってフィードバック量ΔＦＢを算出する。（１）式において、「ΔＰfp」はステップ２１０にて取得された燃圧差であり、「Ｋｐ」はＰＩ制御における比例係数であり、「Ｋｉ」はＰＩ制御における積分係数である。尚、フィードバック量ΔＦＢは、正の値のみならず、負の値をもとり得る。
ΔＦＢ＝Ｋｐ・ΔＰfp＋Ｋｉ・Σ（ΔＰfp）ｄｔ      …（１）
【００４５】
ＣＰＵは、ステップ２２０に進むと、フィードバック量ΔＦＢがその上限値ΔＦＢ_upper以上であるか否かを判定する。尚、上限値ΔＦＢ_upperは、正の値である。
【００４６】
ＣＰＵがステップ２２０の処理を実行する時点において、フィードバック量ΔＦＢがその上限値ΔＦＢ_upper以上である場合、ＣＰＵはそのステップ２２０にて「Ｙｅｓ」と判定し、以下で述べるステップ２２５乃至ステップ２４５の処理を順に実行する。その後、ＣＰＵは、ステップ２９５に進み、本ルーチンを一旦終了する。
【００４７】
ステップ２２５：ＣＰＵは、フィードバック量ΔＦＢをその上限値ΔＦＢ_upperに制限する。
【００４８】
ステップ２３０：ＣＰＵは、その時点の目標値Ｐfp_tgtを「ルックアップテーブルMapRduty(Pfp_tgt)」に適用することによってベースデューティ比Ｒduty_baseを取得する。ルックアップテーブルMapRduty(Pfp_tgt)から取得されるベースデューティ比Ｒduty_baseは、目標値Ｐfp_tgtが大きいほど大きい。
【００４９】
ステップ２３５：ＣＰＵは、下記の（２）式に従ってデューティ比Ｒdutyを算出する。
Ｒduty＝Ｒduty_base＋ΔＦＢ      …（２）
【００５０】
ステップ２４０：ＣＰＵは、ステップ２３５にて算出されたデューティ比Ｒdutyに従った電力を電動モータに供給するための指示信号を送出する。
ステップ２４５：ＣＰＵは、燃圧フィードバック制御が行われていることを表す「フィードバック制御フラグＸfbに「１」を入力する。本ルーチンにおいて、ステップ２１０乃至ステップ２４０、並びに、ステップ２５０乃至ステップ２５５の処理が燃圧Ｐfpのフィードバック制御（燃圧フィードバック制御）に相当する。
【００５１】
これに対し、ＣＰＵがステップ２２０の処理を実行する時点において、フィードバック量ΔＦＢがその上限値ΔＦＢ_upperよりも小さい場合、ＣＰＵはそのステップ２２０にて「Ｎｏ」と判定してステップ２５０に進み、フィードバック量ΔＦＢがその下限値ΔＦＢ_lower以下であるか否かを判定する。尚、下限値ΔＦＢ_lowerは、負の値である。
【００５２】
ＣＰＵがステップ２５０の処理を実行する時点において、フィードバック量ΔＦＢがその下限値ΔＦＢ_lower以下である場合、以下で述べるステップ２５５、及び、先に述べたステップ２３０乃至ステップ２４５の処理を順に実行する。その後、ＣＰＵは、ステップ２９５に進み、本ルーチンを一旦終了する。
【００５３】
ステップ２５５：ＣＰＵは、フィードバック量ΔＦＢをその下限値ΔＦＢ_lowerに制限する。
【００５４】
これに対し、ＣＰＵがステップ２５０の処理を実行する時点において、フィードバック量ΔＦＢがその下限値ΔＦＢ_lowerよりも大きい場合、先に述べたステップ２３０乃至ステップ２４５の処理を順に実行する。その後、ＣＰＵは、ステップ２９５に進み、本ルーチンを一旦終了する。
【００５５】
一方、ＣＰＵがステップ２０５の処理を実行する時点において、デューティ比Ｒdutyが所定値Ｒduty_th以上である場合、ＣＰＵはそのステップ２０５にて「Ｎｏ」と判定し、以下で述べるステップ２６０乃至ステップ２７０の処理を順に実行する。その後、ＣＰＵは、ステップ２９５に進み、本ルーチンを一旦終了する。
【００５６】
ステップ２６０：ＣＰＵは、デューティ比Ｒdutyを最大デューティ比Ｒduty_maxに設定する。この最大デューティ比Ｒduty_maxは、前記所定値Ｒduty_thよりも大きい値である。
ステップ２６５：ＣＰＵは、ステップ２５０にて設定されたデューティ比Ｒduty（最大デューティ比Ｒduty_max）に従った電力を電動モータに供給するための指示信号を送出する。本例においては、デューティ比Ｒdutyが最大デューティ比Ｒduty_maxである場合、低圧ポンプ３１ｐの燃料吐出量がその最大量となる。
ステップ２７０：ＣＰＵは、前記フィードバック制御フラグＸfbに「０」を入力する。本ルーチンにおいて、ステップ２６０及びステップ２６５の処理は、オープンループ制御に相当する。
【００５７】
尚、本例においては、デューティ比Ｒdutyが所定値Ｒduty_th以上である場合、電動モータの出力がデューティ比Ｒdutyが最大デューティ比Ｒduty_maxである場合の電動モータの出力と実質的に同等になる。そこで、デューティ比Ｒdutyが所定値Ｒduty_th以上である場合、ステップ２６０にてデューティ比Ｒdutyを最大デューティ比Ｒduty_maxに設定するようにしている。従って、本例において、所定値Ｒduty_thは、「デューティ比Ｒdutyがその値Ｒduty_th以上であるときの電動モータの出力」が「デューティ比Ｒdutyが最大デューティ比Ｒduty_maxであるときの電動モータの出力」と実質的に同等になる値に設定されている。
【００５８】
以上が低圧デリバリパイプ３３ｐ内の燃料の圧力（燃圧）Ｐfpを制御するルーチンである。
【００５９】
（目標値の設定）
次に、図３を参照しながら、低圧デリバリパイプ３３ｐ内の燃圧Ｐfpの目標値Ｐfp_tgtの設定について説明する。ＣＰＵは、所定時間の経過毎に図３にフローチャートにより示した目標値設定ルーチンを実行するようになっている。
【００６０】
従って、所定のタイミングになると、ＣＰＵは、図３のステップ３００から処理を開始してステップ３０２に進み、最大値Ｐfp_maxを目標値Ｐfp_tgtに設定するべき「最大目標値設定」が要求されているか否かを判定する。本例においては、機関１０の運転が始動されたときの同機関１０の温度（機関１０を冷却するための冷却水の温度）が比較的高く、その結果、低圧デリバリパイプ３３ｐ内の燃料が沸騰する可能性がある場合に、この最大目標値設定が要求される。加えて、各気筒♯１乃至♯４における未燃炭化水素の発生量を低減する必要がある場合にも、最大目標値設定が要求される。これら要求は、前記機関運転状態量センサの出力値に基づいて発生する。
【００６１】
ＣＰＵがステップ３０２の処理を実行する時点において、最大目標値設定が要求されている場合、ＣＰＵは、そのステップ３０２にて「Ｙｅｓ」と判定し、以下で述べるステップ３０４乃至ステップ３１０の処理を順に実行する。その後、ＣＰＵは、ステップ３９５に進み、本ルーチンを一旦終了する。
【００６２】
ステップ３０４：ＣＰＵは、最大値Ｐfp_maxを目標値Ｐfp_tgtに設定する。
【００６３】
ステップ３０６：ＣＰＵは、アクティブ制御許可時間カウンタＣwchをクリアする。この時間カウンタＣwchは、「機関１０の運転状態が後に述べるアクティブ制御の実行を許可するべき状態にある時間」を表すカウンタである。ＣＰＵがこのステップ３０６に進んだ場合、機関１０の運転状態は、最大値Ｐfp_maxを目標値Ｐfp_tgtに設定するべき状態にあり、従って、アクティブ制御の実行を許可するべき状態にはない。このため、ＣＰＵは、このステップ３０６にてアクティブ制御許可時間カウンタＣwchをクリアする。
【００６４】
ステップ３０８：ＣＰＵは、アクティブ制御時間カウンタＣactをクリアする。この時間カウンタＣactは、「後に述べるアクティブ制御により目標値Ｐfp_tgtが増大又は減少された時点から経過した時間」を表すカウンタであり、図５に示したルーチンにおいてカウントアップされる。ＣＰＵがこのステップ３０８に進んだ場合、前述したように、機関１０の運転状態は、最大値Ｐfp_maxを目標値Ｐfp_tgtに設定するべき状態にあり、従って、アクティブ制御の実行を許可するべき状態にはない。このため、このとき、アクティブ制御は、実行されていない。故に、アクティブ制御により目標値Ｐfp_tgtが増大又は減少された時点から経過した時間を計測する必要はない。更に、次にアクティブ制御により目標値Ｐfp_tgtが増大又は減少された時点から経過した時間を計測するためにもアクティブ制御時間カウンタＣactをクリアしておくべきである。そこで、ＣＰＵは、このステップ３１５にてアクティブ制御時間カウンタＣactをクリアする。
【００６５】
ステップ３１０：ＣＰＵは、アクティブ制御フラグＸactに「０」を入力する。このフラグＸactは、「後に述べるアクティブ制御が実行されていること」を表すフラグである。上述から明らかなように、ＣＰＵがこのステップ３１０に進んだ場合、アクティブ制御は実行されていない。このため、ＣＰＵは、このステップ３１０にてアクティブ制御フラグＸactに「０」を入力する。
【００６６】
これに対し、ＣＰＵがステップ３０２の処理を実行する時点において、最大目標値設定が要求されていない場合、ＣＰＵはそのステップ３０２にて「Ｎｏ」と判定してステップ３１２に進み、空燃比安定条件が成立しているか否かを判定する。
【００６７】
この空燃比安定条件は、例えば、燃料噴射弁２２ｃ及び２２ｐの個体差から生じる「各燃料噴射弁２２ｃ及び２２ｐからの燃料噴射量の誤差」を補償するための「公知の燃料噴射量の補正係数の学習」が完了している場合に成立する。つまり、空燃比安定条件は、後述するステップ３２８にて実行されるアクティブ制御により目標値Ｐfp_tgtが増大又は減少されたとしても、各気筒♯１乃至♯４に形成される混合気の空燃比を目標空燃比に良好に制御することができる条件である。
【００６８】
ＣＰＵがステップ３１２の処理を実行する時点において、空燃比安定条件が成立している場合、ＣＰＵはそのステップ３１２にて「Ｙｅｓ」と判定してステップ３１４に進み、アクティブ制御フラグＸactの値が「０」であるか否かを判定する。アクティブ制御フラグＸactの値が「１」である場合、ＣＰＵはそのステップ３１４にて「Ｎｏ」と判定してステップ３２０に進む。
【００６９】
これに対し、ＣＰＵがステップ３１４の処理を実行する時点において、アクティブ制御フラグＸactの値が「０」である場合、ＣＰＵはそのステップ３１４にて「Ｙｅｓ」と判定し、以下で述べるステップ３１６の処理を実行する。その後、ＣＰＵは、ステップ３１８に進む。
【００７０】
ステップ３１６：ＣＰＵは、「その時点において低圧側燃圧センサ７１ｐによって検出される燃圧の検出値Ｐfp_dtc」と「その時点の目標値Ｐfp_tgt」との差分の絶対値（燃圧差）ΔＰfpを取得する（ΔＰfp＝｜Ｐfp_tgt−Ｐfp_dtc｜）。
【００７１】
ＣＰＵは、ステップ３１８に進むと、燃圧差ΔＰfpが燃圧差閾値ΔＰfp_thよりも小さいか否かを判定する。本例において、前記燃圧差閾値ΔＰfp_thは、低圧側燃圧センサ７１ｐが正常である場合において、検出値Ｐfp_dtcが目標値Ｐfp_tgtから乖離した状態（検出値Ｐfp_dtcが目標値Ｐfp_tgtよりも小さい又は大きい状態）が発生してから「後述する所定期間Ｔdiag_a_th」が経過するまでの間に検出値Ｐfp_dtcを「後述する変化量閾値ΔＰfp_chg_th」だけ変化（上昇又は低下）させるのに十分な大きさの値に設定される。
【００７２】
ＣＰＵがステップ３１８の処理を実行する時点において、燃圧差ΔＰfpが燃圧差閾値ΔＰfp_thよりも小さい場合、ＣＰＵは、そのステップ３１８にて「Ｙｅｓ」と判定してステップ３２０に進む。
【００７３】
ＣＰＵは、ステップ３２０に進むと、「フィードバック制御フラグＸfb」及び「アクティブ制御継続フラグＸcnt」の何れか一方の値が「１」であるか否かを判定する。フィードバック制御フラグＸfbは、低圧デリバリパイプ３３ｐ内の燃料の圧力（燃圧）Ｐfpのフィードバック制御が行われているか否かを表すフラグであり、先に述べた図２に示したルーチンにより設定される。アクティブ制御継続フラグＸcntは、アクティブ制御を継続すべきか否かを表すフラグであり、後に述べる図６に示したルーチンにより設定される。
【００７４】
ＣＰＵがステップ３２０の処理を実行する時点において、「フィードバック制御フラグＸfb」及び「アクティブ制御継続フラグＸcnt」の何れか一方の値が「１」である場合、ＣＰＵは、そのステップ３２０にて「Ｙｅｓ」と判定し、以下で述べるステップ３２２の処理を実行する。その後、ＣＰＵは、ステップ３２４に進む。
【００７５】
ステップ３２２：ＣＰＵは、アクティブ制御許可時間カウンタＣwchを所定値ΔＣwchだけカウントアップする。所定値ΔＣwchは、本ルーチンが実行される時間間隔に相当する値である。
【００７６】
ＣＰＵは、ステップ３２４に進むと、アクティブ制御許可時間カウンタＣwchが所定値Ｃwch_th以上であるか否かを判定する。時間カウンタＣwchが所定値Ｃwch_th以上である場合、ＣＰＵは、そのステップ３２４にて「Ｙｅｓ」と判定し、以下で述べるステップ３２６及びステップ３２８の処理を順に実行する。その後、ＣＰＵは、ステップ３９５に進み、本ルーチンを一旦終了する。
【００７７】
先に述べたように、アクティブ制御許可時間カウンタＣwchは、機関１０の運転状態がアクティブ制御の実行を許可するべき状態にある時間を表すカウンタであり、前記所定値Ｃwch_thは、本例において、アクティブ制御の実行を許可するべき状態にある時間として十分で且つ過剰ではない時間に相当する値である。
【００７８】
ステップ３２６：ＣＰＵは、アクティブ制御フラグＸactに「１」を入力する。
ステップ３２８：ＣＰＵは、図５にフローチャートにより示したアクティブ制御ルーチンを実行する。
【００７９】
一方、ＣＰＵがステップ３２４の処理を実行する時点において、アクティブ制御許可時間カウンタＣwchが所定値Ｃwch_thよりも小さい場合、ＣＰＵはそのステップ３２４にて「Ｎｏ」と判定し、以下で述べるステップ３３８の処理を実行する。その後、ＣＰＵは、ステップ３９５に進み、本ルーチンを一旦終了する。
【００８０】
ステップ３３８：ＣＰＵは、基準値Ｐfp_baseを目標値Ｐfp_tgtに設定する。
【００８１】
一方、ＣＰＵがステップ３１２の処理を実行する時点において、空燃比安定条件が成立していない場合、ＣＰＵはそのステップ３１２にて「Ｎｏ」と判定し、以下で述べるステップ３３０乃至ステップ３３６、並びに、先に述べたステップ３３８の処理を順に実行する。その後、ＣＰＵは、ステップ３９５に進み、本ルーチンを一旦終了する。
【００８２】
ステップ３３０：ＣＰＵは、アクティブ制御許可時間カウンタＣwchをクリアする。
ステップ３３２：ＣＰＵは、異常診断時間カウンタＣdiag_aをクリアする。
ステップ３３４：ＣＰＵは、アクティブ制御時間カウンタＣactをクリアする。
ステップ３３６：ＣＰＵは、アクティブ制御フラグＸactに「０」を入力する。
【００８３】
更に、ＣＰＵがステップ３１８の処理を実行する時点において、燃圧差ΔＰfpが燃圧差閾値ΔＰfp_th以上である場合、ＣＰＵはそのステップ３１８にて「Ｎｏ」と判定し、先に述べたステップ３３０乃至ステップ３３８の処理を順に実行する。その後、ＣＰＵは、ステップ３９５に進み、本ルーチンを一旦終了する。
【００８４】
加えて、ＣＰＵがステップ３２０の処理を実行する時点において、「フィードバック制御フラグＸfb」及び「アクティブ制御継続フラグＸcnt」の何れの値も「０」である場合、ＣＰＵはそのステップ３２０にて「Ｎｏ」と判定し、先に述べたステップ３３０乃至ステップ３３８の処理を順に実行する。その後、ＣＰＵは、ステップ３９５に進み、本ルーチンを一旦終了する。
【００８５】
以上が低圧デリバリパイプ３３ｐ内の燃料の圧力（燃圧）Ｐfpの目標値Ｐfp_tgtを設定するルーチンである。
【００８６】
（アクティブ制御の概要）
次に、図４を参照しながら、図３に示したルーチンのステップ３２８にて行われるアクティブ制御の概要について説明する。
【００８７】
本実施形態に係るアクティブ制御によれば、目標値Ｐfp_tgtが最大値Ｐfp_maxに達していない場合には、目標値Ｐfp_tgtは、所定値ΔＰfp_tgtだけ増大される。一方、目標値Ｐfp_tgtが最大値Ｐfp_maxに達している場合、目標値Ｐfp_tgtは、前記所定値ΔＰfp_tgtだけ減少される。本例において、前記所定値ΔＰfp_tgtは、低圧側燃圧センサ７１ｐが正常である場合において、目標値Ｐfp_tgtを当該所定値ΔＰfp_thだけ変更（増大又は減少）してから「後述する所定期間Ｔact_th」が経過するまでの間に検出値Ｐfp_dtcを「後述する変化量閾値ΔＰfp_chg_th」だけ変化（上昇又は低下）させるのに十分な大きさの値に設定される。
【００８８】
例えば、本アクティブ制御によれば、同制御が開始された時点において目標値Ｐfp_tgtが基準値Ｐfp_baseである場合、目標値Ｐfp_tgtは、図４に示したように設定される。即ち、図４に示した例においては、アクティブ制御が開始された時点ｔ４０において、基準値Ｐfp_baseが目標値Ｐfp_tgtに設定されているので、目標値Ｐfp_tgtは最大値Ｐfp_maxよりも小さい。従って、ＥＣＵ７０は、この時刻ｔ４０において、目標値Ｐfp_tgtを所定値ΔＰfp_tgtだけ増大して中間値Ｐfp_medとする。この増大された目標値Ｐfp_tgtは、所定期間Ｔact_thに渡り維持される。本例において、前記所定期間Ｔact_thは、低圧側燃圧センサ７１ｐが正常である場合において、目標値Ｐfp_tgtが前記所定値ΔＰfp_thだけ変更（増大又は減少）されてから検出値Ｐfp_dtcが「後述する変化量閾値ΔＰfp_chg_th」だけ変化（上昇又は低下）するのに十分で且つ過剰ではない時間に設定される。
【００８９】
更に、時刻ｔ４０から前記所定期間Ｔact_thが経過した時刻ｔ４１において、目標値Ｐfp_tgtは最大値Ｐfp_maxよりも小さい。従って、ＥＣＵ７０は、この時刻ｔ４１において、目標値Ｐfp_tgtを前記所定値ΔＰfp_tgtだけ増大して最大値Ｐfp_maxとする。この増大された目標値Ｐfp_tgtも、前記所定期間Ｔact_thに渡り維持される。
【００９０】
更に、時刻ｔ４１から前記所定期間Ｔact_thが経過した時刻ｔ４２において、目標値Ｐfp_tgtは最大値Ｐfp_maxに達している。従って、ＥＣＵ７０は、この時刻ｔ４２において、目標値Ｐfp_tgtを前記所定値ΔＰfp_tgtだけ減少して中間値Ｐfp_medとする。この減少された目標値Ｐfp_tgtも、前記所定期間Ｔact_thに渡り維持される。
【００９１】
更に、時刻ｔ４２から前記所定期間Ｔact_thが経過した時刻ｔ４３において、目標値Ｐfp_tgtは最大値Ｐfp_maxよりも小さくなっている。従って、ＥＣＵ７０は、この時刻ｔ４３において、目標値Ｐfp_tgtを前記所定値ΔＰfp_tgtだけ増大して最大値Ｐfp_maxとする。この増大された目標値Ｐfp_tgtも、前記所定期間Ｔact_thに渡り維持される。
【００９２】
更に、時刻ｔ４３から前記所定期間Ｔact_thが経過した時刻ｔ４４において、目標値Ｐfp_tgtは最大値Ｐfp_maxに達している。従って、ＥＣＵ７０は、この時刻ｔ４４において、目標値Ｐfp_tgtを前記所定値ΔＰfp_tgtだけ減少して中間値Ｐfp_medとする。この減少された目標値Ｐfp_tgtも、前記所定期間Ｔact_thに渡り維持される。
【００９３】
このアクティブ制御は、後述する低圧側燃圧センサ７１ｐの異常診断を行うために行われる制御である。従って、後述する低圧側燃圧センサ７１ｐの異常診断において、低圧側燃圧センサ７１ｐが「異常であるとの本診断（本判定）」又は「正常であるとの本診断（本判定）」の何れかが行われるまでアクティブ制御は継続される。
【００９４】
（具体的なアクティブ制御）
次に、アクティブ制御について具体的に説明する。ＣＰＵは、図３のステップ３２８に進むと、図５にフローチャートにより示したアクティブ制御ルーチンを実行するようになっている。従って、ＣＰＵは、図３のステップ３２８に進むと、図５のステップ５００から処理を開始してステップ５０５に進み、その時点の目標値Ｐfp_tgtが最大値Ｐfp_maxよりも小さいか否かを判定する。その時点の目標値Ｐfp_tgtが最大値Ｐfp_maxよりも小さい場合、ＣＰＵは、そのステップ５０５にて「Ｙｅｓ」と判定してステップ５１０に進み、アクティブ制御時間カウンタＣactの値が「０」であるか否か、或いは、同時間カウンタＣactが所定値Ｃact_th以上であるか否かを判定する。
【００９５】
アクティブ制御時間カウンタＣactは、本ルーチンによってアクティブ制御が開始された後、目標値Ｐfp_tgtが「増大又は減少」された時点から経過した時間を表すカウンタである。更に、前記所定値Ｃact_thは、前記所定期間Ｔact_thに相当する値である。
【００９６】
ＣＰＵがステップ５１０の処理を実行する時点において、アクティブ制御時間カウンタＣactの値が「０」であるか、或いは、同時間カウンタＣactが所定値Ｃact_th以上である場合、ＣＰＵは、以下で述べるステップ５１５乃至ステップ５２５の処理を順に実行する。その後、ＣＰＵは、ステップ５９５に進み、本ルーチンを一旦終了する。
【００９７】
ステップ５１５：ＣＰＵは、その時点の目標値Ｐfp_tgtを所定値ΔＰfp_tgtだけ増大した値を目標値Ｐfp_tgtに設定する。
ステップ５２０：ＣＰＵは、アクティブ制御時間カウンタＣactをクリアする。
ステップ５２５：ＣＰＵは、アクティブ制御時間カウンタＣactを所定値ΔＣactだけカウントアップする。所定値ΔＣactは、本ルーチンが実行される時間間隔に相当する値である。
【００９８】
これに対し、ＣＰＵがステップ５１０の処理を実行する時点において、アクティブ制御時間カウンタＣactの値が「０」でもなく、且つ、同時間カウンタＣactが所定値Ｃact_thよりも小さい場合、ＣＰＵはそのステップ５１０にて「Ｎｏ」と判定し、先に述べたステップ５２５の処理を実行する。その後、ＣＰＵは、ステップ５９５に進み、本ルーチンを一旦終了する。
【００９９】
一方、ＣＰＵがステップ５０５の処理を実行する時点において、その時点の目標値Ｐfp_tgtが最大値Ｐfp_max以上である場合、ＣＰＵはそのステップ５０５にて「Ｎｏ」と判定してステップ５３０に進み、アクティブ制御時間カウンタＣactが所定値Ｃact_th以上であるか否かを判定する。アクティブ制御時間カウンタＣactが所定値Ｃact_th以上である場合、ＣＰＵはそのステップ５３０にて「Ｙｅｓ」と判定し、以下で述べるステップ５３５及びステップ５４０、並びに、先に述べたステップ５２５の処理を順に実行する。その後、ＣＰＵは、ステップ５９５に進み、本ルーチンを一旦終了する。
【０１００】
ステップ５３５：ＣＰＵは、その時点の目標値Ｐfp_tgtを所定値ΔＰfp_tgtだけ減少した値を目標値Ｐfp_tgtに設定する。
ステップ５４０：ＣＰＵは、アクティブ制御時間カウンタＣactをクリアする。
【０１０１】
これに対し、ＣＰＵがステップ５３０の処理を実行する時点において、アクティブ制御時間カウンタＣactが所定値Ｃact_thよりも小さい場合、ＣＰＵはそのステップ５３０において「Ｎｏ」と判定し、先に述べたステップ５２５の処理を実行する。その後、ＣＰＵは、ステップ５９５に進み、本ルーチンを一旦終了する。
【０１０２】
以上が具体的なアクティブ制御である。
【０１０３】
次に、図３のステップ３２０の処理についての説明において言及したアクティブ制御継続フラグＸcntの設定について説明する。
【０１０４】
アクティブ制御により目標値Ｐfp_tgtが増大された場合、先に述べた燃圧フィードバック制御（図２を参照。）により、検出値Ｐfp_dtcが目標値Ｐfp_tgtと一致するように実燃圧Ｐfp_actualを上昇させるためにデューティ比Ｒdutyが増大される。
【０１０５】
このとき、元の検出値Ｐfp_dtcが比較的大きい（つまり、元の燃圧が比較的高い）と、増大された後のデューティ比Ｒdutyが最大デューティ比Ｒduty_maxになることもある。この場合、燃圧フィードバック制御が実行されていないので、図２に示したルーチンによれば、フィードバック制御フラグＸfbの値に「０」が入力される。このとき、図３のステップ３２０において「アクティブ制御継続フラグＸcntの値が「１」であるか否かの判定」がなければ、そのステップ３２０にて「Ｎｏ」と判定される。その結果、アクティブ制御が行われないことになる。
【０１０６】
しかしながら、アクティブ制御は、後述する「低圧側燃圧センサ７１ｐの異常」を診断するために必要な制御である。従って、アクティブ制御が行われなければ、低圧側燃圧センサ７１ｐの異常を診断することができない。
【０１０７】
一方、アクティブ制御が行われたことによってデューティ比Ｒdutyが最大デューティ比Ｒduty_maxとなったとしても、アクティブ制御を継続していれば、目標値Ｐfp_tgtが減少される。このとき、検出値Ｐfp_dtcが目標値Ｐfp_tgtよりも大きくなり、デューティ比Ｒdutyが最大デューティ比Ｒduty_maxではなくなり（所定値Ｒduty_thよりも小さくなり）、燃圧フィードバック制御が再開されることもある。この場合、目標値Ｐfp_tgtが減少された後の検出値Ｐfp_dtcの変化量に基づいて、低圧側燃圧センサ７１ｐの異常を診断することはできる。
【０１０８】
従って、低圧側燃圧センサ７１ｐの異常診断をより多く行うという観点においては、アクティブ制御が行われたことによってフィードバック制御フラグＸfbの値が「０」にされた場合であっても、アクティブ制御を継続することが好ましい。
【０１０９】
そこで、本実施形態においては、アクティブ制御が行われたことによってデューティ比Ｒdutyが最大デューティ比Ｒduty_maxとなり、フィードバック制御フラグＸfbに「０」が入力されたとしても、アクティブ制御を継続し、低圧側燃圧センサ７１ｐの異常診断を行うようにしている。
【０１１０】
より具体的に述べると、ＣＰＵは、所定時間の経過毎に図６にフローチャートにより示したアクティブ制御継続フラグ設定ルーチンを実行するようになっている。
【０１１１】
従って、ＣＰＵは、所定のタイミングになると、図６のステップ６００から処理を開始してステップ６０５に進み、アクティブ制御の実行中であるか否かを判定する。アクティブ制御の実行中である場合、ＣＰＵはそのステップ６０５にて「Ｙｅｓ」と判定してステップ６１０に進み、フィードバック制御フラグＸfbの値が「０」であるか否かを判定する。
【０１１２】
ＣＰＵがステップ６１０の処理を実行する時点において、フィードバック制御フラグＸfbの値が「０」である場合、ＣＰＵはそのステップ６１０にて「Ｙｅｓ」と判定し、以下で述べるステップ６１５の処理を実行する。その後、ＣＰＵは、ステップ６９５に進み、本ルーチンを一旦終了する。
【０１１３】
ステップ６１５：ＣＰＵは、アクティブ制御継続フラグＸcntに「１」を入力する。
【０１１４】
これに対し、ＣＰＵがステップ６１０の処理を実行する時点において、フィードバック制御フラグＸfbの値が「１」である場合、ＣＰＵはそのステップ６１０にて「Ｎｏ」と判定し、以下で述べるステップ６２０の処理を実行する。その後、ＣＰＵは、ステップ６９５に進み、本ルーチンを一旦終了する。
【０１１５】
ステップ６２０：ＣＰＵは、アクティブ制御継続フラグＸcntに「０」を入力する。
【０１１６】
一方、ＣＰＵがステップ６０５の処理を実行する時点において、アクティブ制御の実行中ではない場合、ＣＰＵはそのステップ６０５にて「Ｎｏ」と判定し、先に述べたステップ６２０の処理を実行する。その後、ＣＰＵは、ステップ６９５に進み、本ルーチンを一旦終了する。
【０１１７】
これによれば、アクティブ制御が行われたことによってフィードバック制御フラグＸfbの値が「０」にされた場合であっても、図３のステップ３２０にて「Ｙｅｓ」と判定される。このため、アクティブ制御が行われたことによって燃圧フィードバック制御が停止していたとしても、アクティブ制御の実行が禁止されることが回避される。従って、低圧側燃圧センサ７１ｐの異常診断をより多く行うことができる。
【０１１８】
（本診断装置の第１異常診断に係る作動の概要）
次に、図７乃至図１２を参照しながら、本診断装置の「低圧側燃圧センサ７１ｐの異常診断（第１異常診断）」に係る作動の概要について説明する。本診断装置は、低圧側燃圧センサ７１ｐのダイヤフラムが変形せず、その結果、低圧デリバリパイプ３３ｐ内の燃料の実際の圧力（以下、「実燃圧」と称呼する。）Ｐfp_actualが変化したとしても低圧側燃圧センサ７１ｐの検出値Ｐfp_dtcが変化しない「いわゆるセンサスタック（固着）異常が生じているか否か」を診断する。
【０１１９】
図７に示した例においては、時刻ｔ７０以前、最大目標値設定が要求されておらず、且つ、アクティブ制御の実行も要求されていない。このため、基準値Ｐfp_baseが目標値Ｐfp_tgtに設定されている。更に、「低圧側燃圧センサ７１ｐの検出値Ｐfp_dtc」は目標値Ｐfp_tgtと一致している。
【０１２０】
この場合において、時刻ｔ７０にて最大目標値設定が要求されると、最大値Ｐfp_maxが目標値Ｐfp_tgtに設定される。その結果、時刻ｔ７０の時点において、検出値Ｐfp_dtcが目標値Ｐfp_tgtよりも小さい状態が発生する。このときの検出値Ｐfp_dtcと目標値Ｐfp_tgtとの差分ΔＰfp（＝Ｐfp_tgt−Ｐfp_dtc）は、燃圧差閾値ΔＰfp_thよりも大きい。このように、前記差分（燃圧差）ΔＰfpが燃圧差閾値ΔＰfp_th以上である場合、本診断装置は、低圧側燃圧センサ７１ｐの異常診断を行う。
【０１２１】
より具体的に述べると、時刻ｔ７０にて目標値Ｐfp_tgtが最大値Ｐfp_maxまで増大されると、前述した燃圧フィードバック制御により低圧ポンプ３１ｐの燃料吐出量が増大される。その結果、実燃圧Ｐfp_actualが上昇する。
【０１２２】
このとき、低圧側燃圧センサ７１ｐが正常であれば、検出値Ｐfp_dtcが目標値Ｐfp_tgtに向かって増大し始める（図７（Ａ）の時刻ｔ７１を参照。）。そして、検出値Ｐfp_dtcは、時刻ｔ７２までに変化量閾値ΔＰfp_chg_thだけ増大する。従って、目標値Ｐfp_tgtが増大された時点から所定期間Ｔdiag_a_th（時刻ｔ７０から時刻ｔ７３までの期間）が経過するまでに、検出値Ｐfp_dtcは、少なくとも、変化量閾値ΔＰfp_chg_th以上に増大する。
【０１２３】
本例において、前記所定期間Ｔdiag_a_thは、低圧側燃圧センサ７１ｐが正常である場合において、検出値Ｐfp_dtcが目標値Ｐfp_tgtから燃圧差閾値ΔＰfp_th以上に大きく乖離した状態が発生してから検出値Ｐfp_dtcが変化量閾値ΔＰfp_chg_thだけ変化（上昇又は低下）するのに十分で且つ過剰ではない時間に設定される。一方、前記変化量閾値ΔＰfp_chg_thは、低圧側燃圧センサ７１ｐが正常である場合において、検出値Ｐfp_dtcが目標値Ｐfp_tgtから燃圧差閾値ΔＰfp_th以上に大きく乖離した状態が発生してから前記所定期間Ｔdiag_aが経過するまでの間に検出値Ｐfp_dtcが最低限変化するであろう値に設定される。
【０１２４】
このように、目標値Ｐfp_tgtが検出値Ｐfp_dtcよりも燃圧差閾値ΔＰfp_th以上大きい状態が発生した場合において、その状態が発生した時点から所定期間Ｔdiag_a_thが経過するまでに、検出値Ｐfp_dtcが変化量閾値ΔＰfp_chg_th以上に増大した場合、本診断装置は、低圧側燃圧センサ７１ｐが正常であると仮判定する。
【０１２５】
一方、図７（Ｂ）に示したように、時刻ｔ７０において、目標値Ｐfp_tgtが検出値Ｐfp_dtcよりも燃圧差閾値ΔＰfp_th以上大きい状態が発生したにもかかわらず、その状態が発生した時点から所定期間Ｔdiag_a_thが経過するまでに、検出値Ｐfp_dtcが変化量閾値ΔＰfp_chg_th以上に増大しない場合、本診断装置は、低圧側燃圧センサ７１ｐが異常であると仮判定する。
【０１２６】
更に、図８に示した例においては、時刻ｔ８０以前は、最大目標値設定が要求されており、最大値Ｐfp_maxが目標値Ｐfp_tgtに設定されており、検出値Ｐfp_dtcは目標値Ｐfp_tgtと一致している。
【０１２７】
この場合において、時刻ｔ８０にて最大目標値設定が要求されなくなると、基準値Ｐfp_baseが目標値Ｐfp_tgtに設定される。その結果、時刻ｔ８０の時点において、検出値Ｐfp_dtcが目標値Ｐfp_tgtよりも大きい状態が発生する。このときの検出値Ｐfp_dtcと目標値Ｐfp_tgtとの差分ΔＰfp（＝Ｐfp_dtc−Ｐfp_tgt）は、燃圧差閾値ΔＰfp_thよりも大きい。このように、前記差分ΔＰfpが燃圧差閾値ΔＰfp_th以上である場合、本診断装置は、低圧側燃圧センサ７１ｐの異常診断を行う。
【０１２８】
より具体的に述べると、時刻ｔ８０にて目標値Ｐfp_tgtが基準値Ｐfp_baseまで減少されると、先に述べた燃圧フィードバック制御により低圧ポンプ３１ｐの燃料吐出量が減少される。その結果、実燃圧Ｐfp_actualが低下する。
【０１２９】
このとき、低圧側燃圧センサ７１ｐが正常であれば、検出値Ｐfp_dtcが目標値Ｐfp_tgtに向かって減少し始める（図８（Ａ）の時刻ｔ８１を参照。）。そして、検出値Ｐfp_dtcは、時刻ｔ８２までに変化量閾値ΔＰfp_chg_thだけ減少する。従って、目標値Ｐfp_tgtが減少された時点から所定期間Ｔdiag_a_th（時刻ｔ８０から時刻ｔ８３までの期間）が経過するまでに、検出値Ｐfp_dtcは、少なくとも、変化量閾値ΔＰfp_chg_th以上に減少する。
【０１３０】
このように、目標値Ｐfp_tgtが検出値Ｐfp_dtcよりも燃圧差閾値ΔＰfp_th以上に小さい状態が発生した場合において、その状態が発生した時点から所定期間Ｔdiag_a_thが経過するまでに、検出値Ｐfp_dtcが変化量閾値ΔＰfp_chg_th以上に減少した場合、本診断装置は、低圧側燃圧センサ７１ｐが正常であると仮判定する。
【０１３１】
一方、図８（Ｂ）に示したように、時刻ｔ８０において、目標値Ｐfp_tgtが検出値Ｐfp_dtcよりも燃圧差閾値ΔＰfp_th以上に小さい状態が発生したにもかかわらず、その状態が発生した時点から所定期間Ｔdiag_a_thが経過するまでに、検出値Ｐfp_dtcが変化量閾値ΔＰfp_chg_th以上に減少しない場合、本診断装置は、低圧側燃圧センサ７１ｐが異常であると仮判定する。
【０１３２】
加えて、先に図３を参照しながら述べたように、目標値Ｐfp_tgtが基準値Ｐfp_baseにあり且つ所定期間Ｔwch_th（図３において、所定値Ｃwch_thに相当する期間）の間、目標値Ｐfp_tgtが検出値Ｐfp_dtcよりも燃圧差閾値ΔＰfp_th以上に大きい又は小さい状態（乖離した状態）が発生しなかった場合、ＥＣＵ７０は、アクティブ制御を開始する。
【０１３３】
図９は、目標値Ｐfp_tgtが基準値Ｐfp_baseにあり且つ所定期間Ｔwch_thの間、目標値Ｐfp_tgtが検出値Ｐfp_dtcよりも燃圧差閾値ΔＰfp_th以上に大きい又は小さい状態が発生しなかった場合における本診断装置による燃圧センサ異常診断を示している。
【０１３４】
図９に示した例においては、所定期間Ｔwch_thが経過した時刻ｔ９０において、上述したアクティブ制御が開始される。これにより、目標値Ｐfp_tgtが基準値Ｐfp_baseから所定値ΔＰfp_tgtだけ増大される。
【０１３５】
その結果、時刻ｔ９０の時点において、目標値Ｐfp_tgtが検出値Ｐfp_dtcよりも燃圧差閾値ΔＰfp_thだけ大きい状態が発生する。従って、このとき、本診断装置は、低圧側燃圧センサ７１ｐの異常診断を行う。
【０１３６】
より具体的に述べると、時刻ｔ９０にて目標値Ｐfp_tgtが増大されると、先に述べた燃圧フィードバック制御により低圧ポンプ３１ｐの燃料吐出量が増大される。その結果、実燃圧Ｐfp_actualが上昇する。
【０１３７】
このとき、低圧側燃圧センサ７１ｐが正常であれば、検出値Ｐfp_dtcが目標値Ｐfp_tgtに向かって増大し始める（図９（Ａ）の時刻ｔ９１を参照。）。そして、検出値Ｐfp_dtcは、時刻ｔ９２までに変化量閾値ΔＰfp_chg_thだけ増大する。従って、目標値Ｐfp_tgtが増大された時点から所定期間Ｔdiag_a_th（時刻ｔ９０から時刻ｔ９３までの期間）が経過するまでに、検出値Ｐfp_dtcは、少なくとも、変化量閾値ΔＰfp_chg_th以上に増大する。
【０１３８】
このように、目標値Ｐfp_tgtが検出値Ｐfp_dtcよりも燃圧差閾値ΔＰfp_th以上に大きい状態が発生した場合において、その状態が発生した時点から所定期間Ｔdiag_a_thが経過するまでに、検出値Ｐfp_dtcが変化量閾値ΔＰfp_chg_th以上に増大した場合、本診断装置は、低圧側燃圧センサ７１ｐが正常であると仮判定する。
【０１３９】
一方、図９（Ｂ）に示したように、時刻ｔ９０において、目標値Ｐfp_tgtが検出値Ｐfp_dtcよりも燃圧差閾値ΔＰfp_thだけ大きい状態が発生したにもかかわらず、その状態が発生した時点から所定期間Ｔdiag_a_thが経過するまでに、検出値Ｐfp_dtcが変化量閾値ΔＰfp_chg_th以上に増大しない場合、本診断装置は、低圧側燃圧センサ７１ｐが異常であると仮判定する。
【０１４０】
更に、上述したアクティブ制御によれば、図９の時刻ｔ９０から所定期間Ｔdiag_a_thが経過した時点ｔ９３において、目標値Ｐfp_tgtが燃圧差閾値ΔＰfp_thだけ更に増大される（本例においては、目標値Ｐfp_tgtは、中間値Ｐfp_medから最大値Ｐfp_maxに増大される。）。このときにも、目標値Ｐfp_tgtが増大した時点から所定期間Ｔdiag_a_thが経過するまでに、検出値Ｐfp_dtcが変化量閾値ΔＰfp_chg_th以上に増大した場合、本診断装置は、低圧側燃圧センサ７１ｐが正常であると仮判定する。一方、目標値Ｐfp_tgtが燃圧差閾値ΔＰfp_th以上に増大したにもかかわらず、目標値Ｐfp_tgtが増大した時点から所定期間Ｔdiag_a_thが経過するまでに、検出値Ｐfp_dtcが変化量閾値ΔＰfp_chg_th以上に増大しない場合、本診断装置は、低圧側燃圧センサ７１ｐが異常であると仮判定する。
【０１４１】
更に、上述したアクティブ制御によれば、目標値Ｐfp_tgtが最大値Ｐfp_maxまで増大された時点（図９の時刻ｔ９３を参照。）から所定期間Ｔdiag_a_thが経過した時点（図１０の時刻ｔ１００を参照。）において、目標値Ｐfp_tgtが所定値ΔＰfp_tgtだけ減少される（本例においては、目標値Ｐfp_tgtは、最大値Ｐfp_maxから中間値Ｐfp_medに減少される。）。
【０１４２】
その結果、時刻ｔ１００の時点において、目標値Ｐfp_tgtが検出値Ｐfp_dtcよりも燃圧差閾値ΔＰfp_thだけ小さい状態が発生する。このとき、本診断装置は、低圧側燃圧センサ７１ｐの異常診断を行う。
【０１４３】
より具体的に述べると、時刻ｔ１００にて目標値Ｐfp_tgtが減少されると、先に述べた燃圧フィードバック制御により低圧ポンプ３１ｐの燃料吐出量が減少される。その結果、実燃圧Ｐfp_actualが低下する。
【０１４４】
このとき、低圧側燃圧センサ７１ｐが正常であれば、「減少される前の目標値Ｐfp_tgtに一致していた検出値Ｐfp_dtc」が「減少された後の目標値Ｐfp_tgt」に向かって減少し始める（図１０（Ａ）の時刻ｔ１０１を参照。）。そして、検出値Ｐfp_dtcは、時刻ｔ１０２までに変化量閾値ΔＰfp_chg_thだけ減少する。従って、目標値Ｐfp_tgtが減少された時点から所定期間Ｔdiag_a_th（時刻ｔ１００から時刻ｔ１０３までの期間）が経過するまでに、検出値Ｐfp_dtcは、少なくとも、変化量閾値ΔＰfp_chg_th以上に減少する。
【０１４５】
このように、目標値Ｐfp_tgtが検出値Ｐfp_dtcよりも燃圧差閾値ΔＰfp_th以上に小さい状態が発生した場合において、その状態が発生した時点から所定期間Ｔdiag_a_thが経過するまでに、検出値Ｐfp_dtcが変化量閾値ΔＰfp_chg_th以上に減少した場合、本診断装置は、低圧側燃圧センサ７１ｐが正常であると仮判定する。
【０１４６】
一方、図１０（Ｂ）に示したように、時刻ｔ１００において、目標値Ｐfp_tgtが検出値Ｐfp_dtcよりも燃圧差閾値ΔＰfp_thだけ小さい状態が発生したにもかかわらず、その状態が発生した時点から所定期間Ｔdiag_a_thが経過するまでに、「減少される前の目標値Ｐfp_tgtに一致していた検出値Ｐfp_dtc」が変化量閾値ΔＰfp_chg_th以上に減少しない場合、本診断装置は、低圧側燃圧センサ７１ｐが異常であると仮判定する。
【０１４７】
このように、本診断装置は、アクティブ制御中、「低圧側燃圧センサ７１ｐが正常であるとの仮判定」及び「低圧側燃圧センサ７１ｐが異常であるとの仮判定」を繰り返す。
【０１４８】
更に、本診断装置は、先に述べたように前記正常であるとの仮判定が所定回数なされた場合、低圧側燃圧センサ７１ｐが正常であると本判定する。一方、本診断装置は、先に述べたように前記異常であるとの仮判定が所定回数なされた場合、低圧側燃圧センサ７１ｐが異常であると本判定する。本例において、前記所定回数は、「１」以上の回数であり、低圧側燃圧センサ７１ｐが正常又は異常であると本判定するのに十分で且つ過剰ではない仮判定の回数に設定される。
【０１４９】
以上により、本診断装置は、アクティブ制御中、低圧側燃圧センサ７１ｐが異常であるか否かを診断する。
【０１５０】
ところで、図９及び図１０を参照しながら説明した例は、検出値Ｐfp_dtcが目標値Ｐfp_tgtと一致しており、フィードバック量ΔＦＢがその下限値ΔＦＢ_lowerに達していない状態から低圧側燃圧センサ７１ｐの異常診断を開始する例である。
【０１５１】
しかしながら、本実施形態においては、検出値Ｐfp_dtcが目標値Ｐfp_tgtよりも大きい状態が続いたことから、フィードバック量ΔＦＢがその下限値ΔＦＢ_lowerに達している場合においても、低圧側燃圧センサ７１ｐの異常診断は行われる。
【０１５２】
次に、この異常診断について、図１１及び図１２を参照しながら説明する。
【０１５３】
図１１に示した例においては、時刻ｔ１１０以前において、検出値Ｐfp_dtcが目標値Ｐfp_tgtよりも大きい状態が続いたことから、フィードバック量ΔＦＢがその下限値ΔＦＢ_lowerになり、デューティ比Ｒdutyが「ベースデューティ比Ｒduty_baseよりも小さい或るデューティ比Ｒduty_min（以下、「最小デューティ比」と称呼する。）」になっている。そして、本例においては、所定期間Ｔwch_thの間、目標値Ｐfp_tgtが検出値Ｐfp_dtcよりも燃圧差閾値ΔＰfp_th以上に大きい又は小さい状態が発生しなかったことから、時刻ｔ１１０においてアクティブ制御が開始される。
【０１５４】
同様に、図１２に示した例においても、時刻ｔ１２０以前において、検出値Ｐfp_dtcが目標値Ｐfp_tgtよりも大きい状態が続いたことから、フィードバック量ΔＦＢがその下限値ΔＦＢ_lowerになり、デューティ比Ｒdutyが最小デューティ比Ｒduty_minになっている。そして、本例においても、所定期間Ｔwch_thの間、目標値Ｐfp_tgtが検出値Ｐfp_dtcよりも燃圧差閾値ΔＰfp_th以上に大きい又は小さい状態が発生しなかったことから、時刻ｔ１２０においてアクティブ制御が開始される。
【０１５５】
アクティブ制御が開始されると、図１１（Ａ）及び図１２（Ａ）に示したように、目標値Ｐfp_tgtが所定値ΔＰfp_tgtだけ増大される（本例において、目標値Ｐfp_tgtが基準値Ｐfp_baseから中間値Ｐfp_medに増大される。）。このとき、目標値Ｐfp_tgtが検出値Ｐfp_dtcよりも燃圧差閾値ΔＰfp_th以上に大きい状態は発生しないので、低圧側燃圧センサ７１ｐの異常診断は行われないが、先に述べた燃圧フィードバック制御は行われる。従って、デューティ比Ｒdutyが増大し、その結果、実燃圧Ｐfp_actualが上昇する。
【０１５６】
このとき、低圧側燃圧センサ７１ｐが正常であれば、図１１（Ａ）に示したように、所定期間Ｔdiag_a_thが経過するまでに、検出値Ｐfp_dtcは、目標値Ｐfp_tgtと一致するはずである。一方、低圧側燃圧センサ７１ｐが異常であれば、図１２（Ａ）に示したように、所定期間Ｔdiag_a_thの間、変化せず、所定期間Ｔdiag_a_thが経過する時刻ｔ１２３において、検出値Ｐfp_dtcは、目標値Ｐfp_tgtよりも小さい。
【０１５７】
更に、図１１（Ｂ）に示したように、時刻ｔ１１０から所定期間Ｔdiag_a_thが経過した時刻ｔ１１３において、目標値Ｐfp_tgtが更に所定値ΔＰfp_tgtだけ増大される（本例において、目標値Ｐfp_tgtが中間値Ｐfp_medから最大値Ｐfp_maxまで増大される。）。このとき、目標値Ｐfp_tgtが検出値Ｐfp_dtcよりも燃圧差閾値ΔＰfp_thだけ大きい状態が発生する。
【０１５８】
このとき、本診断装置は、先に述べたように、低圧側燃圧センサ７１ｐの異常診断を行う。つまり、図１１（Ｂ）に示した例においては、低圧側燃圧センサ７１ｐは正常であるので、時刻ｔ１１３から所定期間Ｔdiag_a_thが経過する時刻ｔ１１６までの間に、検出値Ｐfp_dtcが変化量閾値ΔＰfp_chg_th以上に増大する。従って、この場合、本診断装置は、低圧側燃圧センサ７１ｐが正常であると仮判定する。
【０１５９】
一方、低圧側燃圧センサ７１ｐが異常である場合、図１２（Ｂ）に示したように、時刻ｔ１２３において、目標値Ｐfp_tgtが更に所定値ΔＰfp_tgtだけ増大されたとしても、時刻ｔ１２３から所定期間Ｔdiag_a_thが経過する時刻ｔ１２６までの間に、検出値Ｐfp_dtcは変化量閾値ΔＰfp_chg_th以上には増大しない。従って、この場合、本診断装置は、低圧側燃圧センサ７１ｐが異常であると仮判定する。
【０１６０】
こうした仮判定が行われた結果、前記正常であるとの仮判定が合計で所定回数行われた場合、本診断装置は、低圧側燃圧センサ７１ｐが正常であると本判定する。一方、前記異常であるとの仮判定が合計で所定回数行われた場合、本診断装置は、低圧側燃圧センサ７１ｐが異常であると本判定する。本例において、前記所定回数も、低圧側燃圧センサ７１ｐが正常又は異常であると本判定するのに十分で且つ過剰ではない仮判定の回数に設定される。
【０１６１】
以上が本診断装置の「低圧側燃圧センサ７１ｐの第１異常診断」に係る作動の概要である。
【０１６２】
（本診断装置の第１異常診断に係る具体的な作動）
次に、本診断装置の「低圧側燃圧センサ７１ｐの第１異常診断」に係る具体的な作動について説明する。ＣＰＵは、所定時間の経過毎に、図１３にフローチャートにより示した異常診断ルーチンを実行するようになっている。従って、所定のタイミングになると、ＣＰＵは、図１３のステップ１３００から処理を開始してステップ１３０２に進み、後述する図１４に示したルーチンにより設定される「診断実行フラグＸdiag」の値が「１」であるか否かを判定する。
【０１６３】
ＣＰＵがステップ１３０２の処理を実行する時点において、診断実行フラグＸdiagの値が「０」である場合、ＣＰＵはそのステップ１３０２にて「Ｎｏ」と判定し、以下で述べるステップ１３３６乃至ステップ１３４２の処理を順に実行する。その後、ＣＰＵは、ステップ１３９５に進み、本ルーチンを一旦終了する。
【０１６４】
ステップ１３３６：ＣＰＵは、後述する異常診断時間カウンタＣdiag_aをクリアする。
ステップ１３３８：ＣＰＵは、後述する正常回数カウンタＣnをクリアする。
ステップ１３４０：ＣＰＵは、後述する異常回数カウンタＣm_aをクリアする。
ステップ１３４２：ＣＰＵは、後述する初回フラグＸfirstに「０」を入力する。
【０１６５】
これに対し、ＣＰＵがステップ１３０２の処理を実行する時点において、診断実行フラグＸdiagの値が「１」である場合、ＣＰＵはそのステップ１３０２にて「Ｙｅｓ」と判定してステップ１３０４に進み、初回フラグＸfirstの値が「０」であるか否かを判定する。初回フラグＸfirstの値が「０」である場合、ＣＰＵはそのステップ１３０４にて「Ｙｅｓ」と判定し、以下で述べるステップ１３０６乃至ステップ１３１０の処理を順に実行する。その後、ＣＰＵは、ステップ１３１２に進む。
【０１６６】
ステップ１３０６：ＣＰＵは、初回フラグＸfirstに「１」を入力する。
ステップ１３０８：ＣＰＵは、その時点における検出値Ｐfp_dtcを基準検出値Ｐfp_dtc_baseとして取得する。この基準検出値Ｐfp_dtc_baseは、この後、検出値Ｐfp_dtcの変化量を算出するために使用される。
ステップ１３１０：ＣＰＵは、異常診断時間カウンタＣdiag_aを所定値ΔＣdiag_aだけカウントアップする。所定値ΔＣdiag_aは、本ルーチンが実行される時間間隔に相当する値である。
【０１６７】
これに対し、ＣＰＵがステップ１３０４の処理を実行する時点において、初回フラグＸfirstの値が「１」である場合、ＣＰＵはそのステップ１３０４にて「Ｎｏ」と判定し、先に述べたステップ１３１０の処理を実行する。その後、ＣＰＵは、ステップ１３１２に進む。
【０１６８】
ＣＰＵは、ステップ１３１２に進むと、異常診断時間カウンタＣdiag_aが所定値Ｃdiag_a_th以上であるか否かを判定する。所定値Ｃdiag_a_thは、前記所定期間Ｔdiag_a_thに相当する値である。
【０１６９】
ＣＰＵがステップ１３１２の処理を実行する時点において、異常診断時間カウンタＣdiag_aが所定値Ｃdiag_a_thよりも小さい場合、ＣＰＵはそのステップ１３１２にて「Ｎｏ」と判定してステップ１３９５に進み、本ルーチンを一旦終了する。これに対し、異常診断時間カウンタＣdiag_aが所定値Ｃdiag_a_th以上である場合、ＣＰＵはそのステップ１３１２にて「Ｙｅｓ」と判定し、以下で述べるステップ１３１４の処理を実行する。その後、ＣＰＵは、ステップ１３１６に進む。
【０１７０】
ステップ１３１４：ＣＰＵは、基準検出値Ｐfp_dtc_baseからの検出値Ｐfp_dtcの変化量ΔＰfp_chgを取得する（ΔＰfp_chg＝｜Ｐfp_dtc−Ｐfp_base｜）。
【０１７１】
ＣＰＵは、ステップ１３１６に進むと、前記変化量ΔＰfp_chgが変化量閾値ΔＰfp_chg_th以上であるか否かを判定する。前記変化量ΔＰfp_chgが変化量閾値ΔＰfp_chg_th以上である場合、ＣＰＵはそのステップ１３１６にて「Ｙｅｓ」と判定し、以下で述べるステップ１３１８、ステップ１３２０及びステップ１３２２の処理を順に実行する。その後、ＣＰＵは、ステップ１３２４に進む。
【０１７２】
これに対し、ＣＰＵがステップ１３１６の処理を実行する時点において、変化量ΔＰfp_chgが変化量閾値ΔＰfp_chg_thよりも小さい場合、ＣＰＵはそのステップ１３１６にて「Ｎｏ」と判定し、以下で述べるステップ１３３０、ステップ１３２０及びステップ１３２２の処理を順に実行する。その後、ＣＰＵは、ステップ１３２４に進む。
【０１７３】
ステップ１３１８：ＣＰＵは、正常回数カウンタＣnをカウントアップする。この正常回数カウンタＣnは、低圧側燃圧センサ７１ｐが正常であると仮判定された回数を表している。
ステップ１３３０：ＣＰＵは、異常回数カウンタＣm_aをカウントアップする。この異常回数カウンタＣm_aは、低圧側燃圧センサ７１ｐが異常であると仮判定された回数を表している。
ステップ１３２０：ＣＰＵは、異常診断時間カウンタＣdiag_aをクリアする。
ステップ１３２２：ＣＰＵは、初回フラグＸfirstに「０」を入力する。
【０１７４】
ＣＰＵは、ステップ１３２４に進むと、正常回数カウンタＣnが所定値Ｃn_th以上であるか否かを判定する。本例において、所定値Ｃn_thは、前記所定回数に相当する値である。
【０１７５】
ＣＰＵがステップ１３２４の処理を実行する時点において、正常回数カウンタＣnが所定値Ｃn_th以上である場合、ＣＰＵはそのステップ１３２４にて「Ｙｅｓ」と判定し、以下で述べるステップ１３２６及びステップ１３２８の処理を順に実行する。その後、ＣＰＵは、ステップ１３９５に進み、本ルーチンを一旦終了する。
【０１７６】
ステップ１３２６：ＣＰＵは、低圧側燃圧センサ７１ｐが正常であると本判定し、その旨をバックアップＲＡＭに格納する。
ステップ１３２８：ＣＰＵは、アクティブ制御フラグＸactに「０」を入力する。
【０１７７】
これに対し、ＣＰＵがステップ１３２４の処理を実行する時点において、正常回数カウンタＣnが所定値Ｃn_thよりも小さい場合、ＣＰＵはそのステップ１３２４にて「Ｎｏ」と判定してステップ１３３２に進み、異常回数カウンタＣm_aが所定値Ｃm_th以上であるか否かを判定する。本例において、所定値Ｃm_thは、前記所定回数に相当する値である。
【０１７８】
ＣＰＵがステップ１３３２の処理を実行する時点において、異常回数カウンタＣm_aが所定値Ｃm_thよりも小さい場合、ＣＰＵはそのステップ１３３２にて「Ｎｏ」と判定してステップ１３９５に進み、本ルーチンを一旦終了する。これに対し、異常回数カウンタＣm_aが所定値Ｃm_th以上である場合、ＣＰＵはそのステップ１３３２にて「Ｙｅｓ」と判定し、以下で述べるステップ１３３４及び先に述べたステップ１３２８の処理を順に実行する。その後、ＣＰＵは、ステップ１３９５に進み、本ルーチンを一旦終了する。
【０１７９】
ステップ１３３４：ＣＰＵは、低圧側燃圧センサ７１ｐが異常であると本判定し、その旨をバックアップＲＡＭに格納する。
【０１８０】
次に、図１３のステップ１３０２の説明にて言及した診断実行フラグＸdiagの設定について説明する。ＣＰＵは、所定時間の経過毎に図１４にフローチャートにより示した診断実行フラグ設定ルーチンを実行するようになっている。従って、所定のタイミングになると、ＣＰＵは、図１４のステップ１４００から処理を開始してステップ１４０５に進み、低圧側燃圧センサ７１ｐの異常診断を行う条件（異常診断条件）が成立しているか否かを判定する。この条件は、先に述べた「いわゆるセンサスタック異常」以外の低圧側燃圧センサ７１ｐの異常（例えば、低圧側燃圧センサ７１ｐに断線による異常等）が生じていない場合に成立する。
【０１８１】
診断条件が成立している場合、ＣＰＵはそのステップ１４０５にて「Ｙｅｓ」と判定し、以下で述べるステップ１４１０を実行する。その後、ＣＰＵは、ステップ１４１５に進む。
【０１８２】
ステップ１４１０：ＣＰＵは、検出値Ｐfp_dtcと目標値Ｐfp_tgtとの差分（燃圧差）ΔＰfpを取得する（ΔＰfp＝｜Ｐfp_tgt−Ｐfp_dtc｜）。
【０１８３】
ＣＰＵは、ステップ１４１５に進むと、燃圧差ΔＰfpが燃圧差閾値ΔＰfp_th以上であるか否かを判定する。燃圧差ΔＰfpが燃圧差閾値ΔＰfp_th以上である場合、ＣＰＵはそのステップ１４１５にて「Ｙｅｓ」と判定し、以下で述べるステップ１４２０の処理を実行する。その後、ＣＰＵは、ステップ１４９５に進み、本ルーチンを一旦終了する。
【０１８４】
これに対し、ＣＰＵがステップ１４１５の処理を実行する時点において、Ｐfpが燃圧差閾値ΔＰfp_thよりも小さい場合、ＣＰＵはそのステップ１４１５にて「Ｎｏ」と判定し、以下で述べるステップ１４２５の処理を実行する。その後、ＣＰＵは、ステップ１４９５に進み、本ルーチンを一旦終了する。
【０１８５】
ステップ１４２０：ＣＰＵは、診断実行フラグＸdiagに「１」を入力する。
ステップ１４２５：ＣＰＵは、診断実行フラグＸdiagに「０」を入力する。
【０１８６】
以上が診断実行フラグＸdiagの設定である。
【０１８７】
（本診断装置の第２異常診断に係る作動の概要）
ところで、本診断装置は、検出値Ｐfp_dtcが目標値Ｐfp_tgtよりも小さい状態が続いたことから、デューティ比Ｒdutyが最大デューティ比Ｒduty_maxになっている場合、以下で述べるようにして低圧側燃圧センサ７１ｐの異常診断を行う。
【０１８８】
図１５は、検出値Ｐfp_dtcが目標値Ｐfp_tgtよりも小さい状態が続いた場合における「検出値Ｐfp_dtc及びデューティ比Ｒduty」の変化を示したタイムチャートである。検出値Ｐfp_dtcが目標値Ｐfp_tgtよりも小さい場合、先に述べた燃圧フィードバック制御によりデューティ比Ｒdutyは増大し、やがては、所定値Ｒduty_thを超えた時点において最大デューティ比Ｒduty_maxに設定される（時刻ｔ１５０を参照。）。
【０１８９】
図１５に示した例においては、デューティ比Ｒdutyが最大デューティ比Ｒduty_maxに設定され、低圧ポンプ３１ｐの燃料吐出量がその最大量に達しているにもかかわらず、検出値Ｐfp_dtcは、目標値Ｐfp_tgtよりも小さい状態にある。このように低圧ポンプ３１ｐの燃料吐出量がその最大量に達しているにもかかわらず、検出値Ｐfp_dtcが目標値Ｐfp_tgtに達しない現象は、低圧側燃圧センサ７１ｐに「センサスタック異常」が生じており、その異常に起因して、低圧側燃圧センサ７１ｐが「基準値Ｐfp_baseよりも小さい燃圧に相当する検出値Ｐfp_dtc」しか出力しなくなっているときに生じる。
【０１９０】
そこで、本診断装置は、デューティ比Ｒdutyが最大デューティ比Ｒduty_maxに設定されてから所定期間Ｔdiag_b_th（時刻ｔ１５０から時刻ｔ１５１までの期間）が経過した時点において、デューティ比Ｒdutyが最大デューティ比Ｒduty_maxであり且つ検出値Ｐfp_dtcが目標値Ｐfp_tgtよりも小さい場合、低圧側燃圧センサ７１ｐが異常であると仮判定する。本例において、所定期間Ｔdiag_b_thは、低圧側燃圧センサ７１ｐが正常である場合において、デューティ比Ｒdutyが最大デューティ比Ｒduty_maxに設定されてから検出値Ｐfp_dtcが目標値Ｐfp_tgtよりも小さい状態が解消されるのに十分で且つ過剰ではない時間に設定される。
【０１９１】
この仮判定を繰り返し、低圧側燃圧センサ７１ｐが異常であると仮判定された回数が所定回数に達した場合、本診断装置は、低圧側燃圧センサ７１ｐが異常であると本判定する。本例において、前記所定回数は、「１回」以上の回数であって、第２異常診断によって低圧側燃圧センサ７１ｐが異常であると本判定するのに十分で且つ過剰ではない仮判定の回数に設定される。
【０１９２】
以上が本診断装置の「低圧側燃圧センサ７１ｐの第２異常診断」に係る作動の概要である。
【０１９３】
（本診断装置の第２異常診断に係る具体的な作動）
次に、本診断装置の「低圧側燃圧センサ７１ｐの第２異常診断」に係る具体的な作動について説明する。ＣＰＵは、所定時間の経過毎に図１６にフローチャートにより示した異常診断ルーチンを実行するようになっている。従って、所定のタイミングになると、ＣＰＵは、図１６のステップ１６００から処理を開始してステップ１６０５に進み、「機関１０における単位時間あたりの燃料の消費量Ｑａ」が下限値Ｑａ_small以上であって且つ同下限値Ｑａ_smallよりも大きい上限値Ｑａ_large以下であるか否かを判定する。
【０１９４】
本例においては、別途実行されるルーチンによって「機関回転速度ＮＥ及び機関１０の負荷ＫＬ」等に基づいて算出される「各ポート噴射弁２２ｐから噴射する燃料の目標量Ｑａ_tgt」が決定される。前記燃料の消費量Ｑａは、この目標量Ｑａ_tgtをの積算値を時間で除した量に相当する。
【０１９５】
更に、前記燃料の消費量Ｑａが多い場合、ポート噴射弁２２ｐからの燃料噴射による「低圧コモンレール３３ｐ内の実際の燃圧（実燃圧）Ｐfp_actualの低下」が大きい。従って、実燃圧Ｐfp_actualを目標値Ｐfp_tgtに維持するためにデューティ比Ｒdutyが大きくなっている。その結果、デューティ比Ｒdutyが最大デューティ比Ｒduty_maxに設定されている場合がある。
【０１９６】
以下で説明する低圧側燃圧センサ７１ｐの異常診断においては、低圧側燃圧センサ７１ｐが異常であると判定する条件の１つとして、デューティ比Ｒdutyが最大デューティ比Ｒduty_maxであることを採用している。従って、デューティ比Ｒdutyが最大デューティ比Ｒduty_maxである原因が「低圧側燃圧センサ７１ｐが異常であること」ではなく、「燃料噴射による実燃圧Ｐfp_actualの低下が大きいこと」である場合、デューティ比Ｒdutyが最大デューティ比Ｒduty_maxであるという条件が満たされているからといって、低圧側燃圧センサ７１ｐが異常であると判定すべきではない。このため、図１６に示したルーチンにおいては、ステップ１６０５にて「前記燃料の消費量Ｑａが上限値Ｑａ_large以下であるか否か」を判定している。
【０１９７】
加えて、前記燃料の消費量Ｑａが少ない場合、ポート噴射弁２２ｐからの燃料噴射による「実燃圧Ｐfp_actualの低下」が小さい。従って、実燃圧Ｐfp_actualを低下させるために低圧ポンプ３１ｐの燃料吐出量を低減させたとしても、実燃圧Ｐfp_actualの低下速度が小さい。結果として、前記燃圧フィードバック制御が実燃圧Ｐfp_actualに対して有効に作用していない場合がある。この場合、そもそも、実燃圧Ｐfp_actualが目標値Ｐfp_tgtに追従せず、その結果、低圧側燃圧センサ７１ｐが正常であったとしても、検出値Ｐfp_dtcが目標値Ｐfp_tgtに追従しないこともある。
【０１９８】
以下で説明する低圧側燃圧センサ７１ｐの異常診断においては、低圧側燃圧センサ７１ｐが異常であると判定する条件の１つとして、検出値Ｐfp_dtcが目標値Ｐfp_tgtよりも小さいことを採用している。従って、検出値Ｐfp_dtcが目標値Ｐfp_tgtよりも小さい原因が「低圧側燃圧センサ７１ｐが異常であること」ではなく、「燃圧フィードバック制御が実燃圧Ｐfp_actualに対して有効に作用していないこと」である場合、検出値Ｐfp_dtcが目標値Ｐfp_tgtよりも小さいという条件が満たされているからといって、低圧側燃圧センサ７１ｐが異常であると判定すべきではない。このため、図１６に示したルーチンにおいては、ステップ１６０５にて「前記燃料の消費量Ｑａが下限値Ｑａ_small以上であるか否か」を判定している。
【０１９９】
ＣＰＵがステップ１６０５の処理を実行する時点において、前記燃料の消費量Ｑａが下限値Ｑａ_small以上であって且つ上限値Ｑａ_large以下である場合、ＣＰＵはそのステップ１６０５にて「Ｙｅｓ」と判定してステップ１６１０に進み、デューティ比Ｒdutyが最大デューティ比Ｒduty_maxであり且つ検出値Ｐfp_dtcが目標値Ｐfp_tgtよりも小さいか否かを判定する。
【０２００】
デューティ比Ｒdutyが最大デューティ比Ｒduty_maxであり且つ検出値Ｐfp_dtcが目標値Ｐfp_tgtよりも小さい場合、ＣＰＵは、そのステップ１６１０にて「Ｙｅｓ」と判定し、以下で述べるステップ１６１５の処理を実行する。その後、ＣＰＵは、ステップ１６２０に進む。
【０２０１】
ステップ１６１５：異常診断時間カウンタＣdiag_bを所定値ΔＣdiag_bだけカウントアップする。所定値ΔＣdiag_bは、本ルーチンが実行される時間間隔に相当する値である。
【０２０２】
ＣＰＵは、ステップ１６２０に進むと、異常診断時間カウンタＣdiag_bが所定値Ｃdiag_b_th以上であるか否かを判定する。所定値Ｃdiag_b_thは、前記所定期間Ｔdiag_b_thに相当する値である。
【０２０３】
ＣＰＵがステップ１６２０の処理を実行する時点において、異常診断時間カウンタＣdiag_bが所定値Ｃdiag_b_th以上である場合、ＣＰＵはそのステップ１６２０にて「Ｙｅｓ」と判定し、以下で述べるステップ１６２５及びステップ１６３０の処理を順に実行する。その後、ＣＰＵは、ステップ１６３５に進む。
【０２０４】
ステップ１６２５：ＣＰＵは、異常回数カウンタＣm_bをカウントアップする。この異常回数カウンタＣm_bは、低圧側燃圧センサ７１ｐが異常であると仮判定された回数を表している。
ステップ１６３０：ＣＰＵは、異常診断時間カウンタＣdiag_bをクリアする。
【０２０５】
ＣＰＵは、ステップ１６３５に進むと、異常回数カウンタＣm_bが所定値Ｃm_th以上であるか否かを判定する。所定値Ｃm_thは、前記所定回数に相当する値である。
【０２０６】
ＣＰＵがステップ１６３５の処理を実行する時点において、異常回数カウンタＣm_bが所定値Ｃm_th以上である場合、以下で述べるステップ１６４０の処理を実行する。その後、ＣＰＵは、ステップ１６９５に進み、本ルーチンを一旦終了する。
【０２０７】
ステップ１６４０：ＣＰＵは、低圧側燃圧センサ７１ｐが異常であると本判定し、その旨をバックアップＲＡＭに格納する。
【０２０８】
これに対し、ＣＰＵがステップ１６３５の処理を実行する時点において、異常回数カウンタＣm_bが所定値Ｃm_thよりも小さい場合、ＣＰＵはそのステップ１６３０にて「Ｎｏ」と判定してステップ１６９５に進み、本ルーチンを一旦終了する。
【０２０９】
一方、ＣＰＵがステップ１６０５の処理を実行する時点において、前記燃料の消費量Ｑａが下限値Ｑａ_smallよりも小さいか、上限値Ｑａ_largeよりも大きい場合、ＣＰＵはそのステップ１６０５にて「Ｎｏ」と判定し、以下で述べるステップ１６４５及びステップ１６５０の処理を順に実行する。その後、ＣＰＵは、ステップ１６９５に進み、本ルーチンを一旦終了する。
【０２１０】
ステップ１６４５：ＣＰＵは、異常診断時間カウンタＣdiag_bをクリアする。
ステップ１６５０：ＣＰＵは、異常回数カウンタＣm_bをクリアする。
【０２１１】
更に、ＣＰＵがステップ１６１０の処理を実行する時点において、デューティ比Ｒdutyが最大デューティ比Ｒduty_maxよりも小さいか、或いは、検出値Ｐfp_dtcが目標値Ｐfp_tgt以上である場合、ＣＰＵは、そのステップ１６１０にて「Ｎｏ」と判定し、先に述べたステップ１６４５及びステップ１６５０の処理を順に実行する。その後、ＣＰＵは、ステップ１６９５に進み、本ルーチンを一旦終了する。
【０２１２】
加えて、ＣＰＵがステップ１６２０の処理を実行する時点において、異常診断時間カウンタＣdiag_bが所定値Ｃdiag_b_thよりも小さい場合、ＣＰＵはそのステップ１６２０にて「Ｎｏ」を判定してステップ１６９５に進み、本ルーチンを一旦終了する。
【０２１３】
以上が本診断装置の「低圧側燃圧センサ７１ｐの第２異常診断」に係る具体的な作動である。
【０２１４】
尚、本診断装置は、高圧デリバリパイプ３３ｃに配設された高圧側燃圧センサ７１ｃの異常診断にも適用可能である。更に、本診断装置は、「筒内噴射弁２２ｃを備えておらず、ポート噴射弁２２ｐのみを備えた」ガソリン機関の低圧側燃圧センサ７１ｐの異常診断、及び、「ポート噴射弁２２ｐを備えておらず、筒内噴射弁２２ｃのみを備えた」ガソリン機関の燃圧センサ７１ｃの異常診断にも適用可能である。加えて、本診断装置は、多気筒・４サイクル・ピストン往復動型・ディーゼル機関の燃圧センサの異常診断にも適用可能である。
【０２１５】
更に、上記実施形態における「所定期間Ｔwch_th、所定期間Ｔact_th、並びに、所定期間Ｔdiag_a_th及びＴdiag_b_th」は、それぞれ同じ長さの期間であっても、それぞれ異なる長さの期間であってもよい。但し、所定期間Ｔact_thと所定期間Ｔdiag_a_thとがそれぞれ異なる長さの期間である場合、所定期間Ｔdiag_a_thは、所定期間Ｔact_thよりも短い期間であることが好ましい。
【０２１６】
加えて、上記実施形態においては、アクティブ制御において目標値Ｐfp_tgtを増大又は減少する量である所定値ΔＰfp_tgtは、燃圧差閾値ΔＰfp_thに等しい。しかしながら、この所定値ΔＰfp_tgtは、燃圧差閾値ΔＰfp_thよりも大きい値であってもよい。
【０２１７】
更に、上記実施形態に係る燃圧センサ異常診断装置は、最大目標値設定が要求されたときの「低圧側燃圧センサ７１ｐが異常であるとの仮判定（以下、「仮異常判定」と称呼する。）」、最大目標値設定が要求されなくなったときの「低圧側燃圧センサ７１ｐが異常であるとの仮判定（仮異常判定）」、及び、アクティブ制御中の「低圧側燃圧センサ７１ｐが異常であるとの仮判定（仮異常判定）」がなされた回数が合計で所定回数に達したときに、低圧側燃圧センサ７１ｐが異常であるとの本判定を行っている。
【０２１８】
しかしながら、上記燃圧センサ異常診断装置は、最大目標値設定が要求されたときの仮異常判定、最大目標値設定が要求されなくなったときの仮異常判定、及び、アクティブ制御中の仮異常判定をそれぞれ独立してカウントし、各仮異常判定の合計の何れか１つが所定回数に達したときに低圧側燃圧センサ７１ｐが異常であるとの本判定を行うように構成されてもよい。
【０２１９】
同様に、上記実施形態に係る燃圧センサ異常診断装置は、最大目標値設定が要求されたときの「低圧側燃圧センサ７１ｐが正常であるとの仮判定（以下、「仮正常判定」と称呼する。）」、最大目標値設定が要求されなくなったときの「低圧側燃圧センサ７１ｐが正常であるとの仮判定（仮正常判定）」、及び、アクティブ制御中の「低圧側燃圧センサ７１ｐが正常であるとの仮判定（仮正常判定）」がなされた回数が合計で所定回数に達したときに、低圧側燃圧センサ７１ｐが正常であるとの本判定を行っている。
【０２２０】
しかしながら、上記燃圧センサ異常診断装置は、最大目標値設定が要求されたときの仮正常判定、最大目標値設定が要求されなくなったときの仮正常判定、及び、アクティブ制御中の仮正常判定をそれぞれ独立してカウントし、各仮正常判定の合計の何れか１つが所定回数に達したときに低圧側燃圧センサ７１ｐが正常であるとの本判定を行うように構成されてもよい。
【０２２１】
更に、上記燃圧センサ異常診断装置は、最大目標値値設定が要求され或いは要求されなくなったときには仮異常判定及び仮正常判定を行わず、アクティブ制御中の仮異常判定及び仮正常判定のみを用いて第１異常診断を行うように構成されてもよい。
【０２２２】
加えて、上記実施形態においては、ＥＣＵ７０は、目標値Ｐfp_tgtを所定値ΔＰfp_tgtだけ増大する処理によりアクティブ制御を開始している。しかしながら、ＥＣＵ７０は、目標値Ｐfp_tgtを所定値ΔＰfp_tgtだけ減少する処理によりアクティブ制御を開始してもよい。
【０２２３】
更に、低圧側燃圧センサ７１ｐの温度が比較的高い場合、その温度の影響によりそのセンサ７１ｐの検出値Ｐfp_dtcの精度が低下することがある。そこで、上記実施形態において、低圧側燃圧センサ７１ｐの温度（例えば、機関１０の温度から推定される低圧側燃圧センサ７１ｐの温度）が所定温度よりも低い場合に限り、前記アクティブ制御を行うようにしてもよい。
【０２２４】
以上説明したように、本発明の実施形態に係る燃圧センサ異常診断装置（以下、「本実施診断装置」と称呼する。）が適用される内燃機関１０は、
燃料噴射弁（ポート噴射弁２２ｐ）に燃料を供給する燃料ポンプ（低圧ポンプ３１ｐ）、
同燃料ポンプから前記燃料噴射弁に供給される燃料の圧力Ｐfpを検出する燃圧センサ（低圧側燃圧センサ７１ｐ）、
前記燃料ポンプから前記燃料噴射弁に供給される燃料の圧力の目標値Ｐfp_tgtを設定する目標値設定部（ＥＣＵ７０、図３を参照。）、及び、
前記燃圧センサによって検出された燃圧の検出値Ｐfp_dtcが前記目標値と一致するように前記燃料ポンプの燃料吐出量をフィードバック制御する燃圧フィードバック制御部（ＥＣＵ７０、図２を参照。）、
を含む燃料供給システム３０を備える。
【０２２５】
本実施診断装置は、前記燃圧センサの異常を診断する燃圧センサ異常診断部（ＥＣＵ７０、図１６を参照。）を具備する。
【０２２６】
前記検出値が前記目標値よりも小さい状態が発生したことにより、前記燃圧フィードバック制御部が前記燃料ポンプの燃料吐出量を増大した結果、同燃料吐出量前記燃料ポンプの燃料吐出量の最大量に達した場合（図１６のステップ１６１０において「Ｒduty＝Ｒduty_max」である場合を参照。）において、前記燃料吐出量が前記燃料ポンプの燃料吐出量の最大量に達した時点から第１の所定期間（図１５の所定期間Ｔdiag_b_th、及び、図１６に示したルーチンにおける所定値Ｃdiag_b_thを参照。）が経過しても（図１６のステップ１６２０にて「Ｙｅｓ」の場合を参照。）、前記検出値が前記目標値よりも小さい場合（図１６のステップ１６１０にて「Ｐfp_dtc＜Ｐfp_tgt」の場合を参照）、前記燃圧センサ異常診断部は、前記燃圧センサが異常であると診断する（図１６のステップ１６２０乃至ステップ１６４０を参照。）。
【０２２７】
更に、本実施診断装置においては、
前記検出値が前記目標値から第１の所定値（図７乃至図１０の燃圧差閾値ΔＰfp_thを参照。）以上乖離した燃圧乖離状態が発生したことにより、前記燃圧フィードバック制御部が前記燃料ポンプの燃料吐出量を制御したにもかかわらず、前記燃圧乖離状態が発生した時点から第２の所定期間（図７乃至図１０の所定期間Ｔdiag_a_thを参照。）が経過しても（図１３のステップ１３１２にて「Ｙｅｓ」の場合を参照。）、前記検出値が前記目標値に向かって第２の所定値（図７乃至図１０の変化量閾値ΔＰfp_chg_thを参照）以上変化しない場合（図１３のステップ１３１６にて「Ｎｏ」の場合を参照。）、前記燃圧センサ異常診断部は、前記燃圧センサが異常であると診断する（図１３のステップ１３３０及びステップ１３３４を参照。）。
【０２２８】
加えて、本実施診断装置においては、
前記燃圧センサ異常診断部は、
前記燃料ポンプの燃料吐出量がその最大量に達していない状態（図３のステップ３１８にて「Ｘfb＝１」である場合を参照。）において前記燃圧乖離状態が第３の所定期間（図９の所定期間Ｔwch_thを参照）以上発生しない場合（図３のステップ３２４にて「Ｙｅｓ」の場合を参照。）、前記目標値を前記第１の所定値以上増大又は減少させて前記燃圧乖離状態を発生させる（図５のステップ５２０及びステップ５４０を参照。）。
【０２２９】
以上により、本実施診断装置は、燃圧センサの異常を診断することができる。
【符号の説明】
【０２３０】
１０…内燃機関、２２ｐ…燃料噴射弁（ポート噴射弁）、３１ｐ…燃料ポンプ（低圧ポンプ）、３３ｐ…低圧コモンレール、３４…燃料タンク、４１…インテークマニホールド、７０…ＥＣＵ、７１ｐ…低圧側燃圧センサ、Ｐfp_dtc…検出値、Ｐfp_tgt…目標値、Ｔdiag_a_th…所定期間、Ｔdiag_b_th…所定期間、Ｑａ…内燃機関における単位時間あたりの燃料の消費量、Ｒduty…デューティ比
【図１】
0006268487.tif 000002
【図２】
0006268487.tif 000003
【図３】
0006268487.tif 000004
【図４】
0006268487.tif 000005
【図５】
0006268487.tif 000006
【図６】
0006268487.tif 000007
【図７】
0006268487.tif 000008
【図８】
0006268487.tif 000009
【図９】
0006268487.tif 000010
【図１０】
0006268487.tif 000011
【図１１】
0006268487.tif 000012
【図１２】
0006268487.tif 000013
【図１３】
0006268487.tif 000014
【図１４】
0006268487.tif 000015
【図１５】
0006268487.tif 000016
【図１６】
0006268487.tif 000017