(57)【要約】【課題】燃料噴射弁の弁体のリフト量がフルリフト位置に到達しない噴射パルスで燃料噴射弁を開弁駆動するパーシャルリフト噴射の噴射量ばらつきを精度良く補正する。【解決手段】少なくともパーシャルリフト噴射の噴射パルスのオフ後に、燃料噴射弁２１のマイナス端子電圧を第１のローパスフィルタでフィルタ処理した第１のフィルタ電圧Ｖsm1 を算出すると共に燃料噴射弁２１のマイナス端子電圧を第２のローパスフィルタでフィルタ処理した第２のフィルタ電圧Ｖsm2 を算出し、所定の基準タイミングからフィルタ電圧の差分Ｖdiff（＝Ｖsm1 −Ｖsm2 ）が変曲点となるタイミングまでの時間を電圧変曲点時間Ｔdiffとして算出する。この電圧変曲点時間Ｔdiffの所定回数分のデータを平均化処理した値Ｔdiff.aveを電圧変曲点時間の学習値として求め、この電圧変曲点時間の学習値Ｔdiff.aveに基づいてパーシャルリフト噴射の噴射パルスを補正する。【選択図】図１
2015075087.tif 000002
【特許請求の範囲】
【請求項１】
電磁駆動式の燃料噴射弁（２１）を備えた内燃機関の燃料噴射制御装置において、
前記燃料噴射弁（２１）の弁体（３３）のリフト量がフルリフト位置に到達しない噴射パルスで前記燃料噴射弁（２１）を開弁駆動するパーシャルリフト噴射を実行する噴射制御手段（３０）と、
前記パーシャルリフト噴射の噴射パルスのオフ後に、前記燃料噴射弁（２１）の端子電圧をノイズ成分の周波数よりも低い第１の周波数をカットオフ周波数とする第１のローパスフィルタでフィルタ処理した第１のフィルタ電圧を取得すると共に、前記端子電圧を前記第１の周波数よりも低い第２の周波数をカットオフ周波数とする第２のローパスフィルタでフィルタ処理した第２のフィルタ電圧を取得するフィルタ電圧取得手段（３５，３６，４０）と、
前記第１のフィルタ電圧と前記第２のフィルタ電圧との差分を算出する差分算出手段（３５，３６，４０）と、
所定の基準タイミングから前記差分が変曲点となるタイミングまでの時間を電圧変曲点時間として算出する時間算出手段（３５，３６，４０）と、
前記電圧変曲点時間の所定回数分のデータを平均化処理した値を前記電圧変曲点時間の学習値として求める学習手段（３５）と、
前記電圧変曲点時間の学習値に基づいて前記パーシャルリフト噴射の噴射パルスを補正する噴射パルス補正手段（３５）と
を備えていることを特徴とする内燃機関の燃料噴射制御装置。
【請求項２】
前記学習手段（３５）は、前記電圧変曲点時間が所定の正常範囲内の場合には正常カウンタをカウントアップし、前記電圧変曲点時間が前記正常範囲外の場合には異常カウンタをカウントアップすると共に該電圧変曲点時間を前記平均化処理に用いないことを特徴とする請求項１に記載の内燃機関の燃料噴射制御装置。
【請求項３】
前記学習手段（３５）は、前記正常カウンタのカウント値が前記所定回数に達したときに前記平均化処理を実行することを特徴とする請求項２に記載の内燃機関の燃料噴射制御装置。
【請求項４】
前記正常カウンタは、各気筒毎に設定され、
前記異常カウンタは、全気筒共通で設定されていることを特徴とする請求項２又は３に記載の内燃機関の燃料噴射制御装置。
【請求項５】
前記学習手段（３５）は、前記異常カウンタのカウント値が所定の異常判定回数を越えた場合に、前記フィルタ電圧取得手段と前記差分算出手段と前記時間算出手段のうちの少なくとも一つとして機能する回路の異常と判定して、前記電圧変曲点時間の学習値に基づいた前記噴射パルスの補正を禁止することを特徴とする請求項２乃至４のいずれかに記載の内燃機関の燃料噴射制御装置。
【請求項６】
前記異常判定回数は、前記所定回数よりも大きい値に設定されていることを特徴とする請求項５に記載の内燃機関の燃料噴射制御装置。
【請求項７】
前記正常範囲は、前記フィルタ電圧取得手段と前記差分算出手段と前記時間算出手段のうちの少なくとも一つとして機能する回路及び前記燃料噴射弁の品質がばらつき許容範囲内のときに算出される前記電圧変曲点時間の上限値と下限値に基づいて設定されていることを特徴とする請求項２乃至６のいずれかに記載の内燃機関の燃料噴射制御装置。
【請求項８】
前記時間算出手段（３５，３６，４０）は、前記差分が所定の閾値を越えるタイミングを、前記差分が前記変曲点となるタイミングとして前記電圧変曲点時間を算出することを特徴とする請求項１乃至７のいずれかに記載の内燃機関の燃料噴射制御装置。
【請求項９】
前記フィルタ電圧取得手段（３５，３６，４０）は、前記差分をノイズ成分の周波数よりも低い第３の周波数をカットオフ周波数とする第３のローパスフィルタでフィルタ処理した第３のフィルタ電圧を取得すると共に、前記差分を前記第３の周波数よりも低い第４の周波数をカットオフ周波数とする第４のローパスフィルタでフィルタ処理した第４のフィルタ電圧を取得し、
前記差分算出手段（３５，３６，４０）は、前記第３のフィルタ電圧と前記第４のフィルタ電圧との差分を２階差分として算出し、
前記時間算出手段（３５，３６，４０）は、前記２階差分が極値となるタイミングを、前記差分が前記変曲点となるタイミングとして前記電圧変曲点時間を算出することを特徴とする請求項１乃至７のいずれかに記載の内燃機関の燃料噴射制御装置。
【請求項１０】
前記時間算出手段（３５，３６，４０）は、前記２階差分が増加しなくなったときに前記２階差分が前記極値であると判定することを特徴とする請求項９に記載の内燃機関の燃料噴射制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電磁駆動式の燃料噴射弁を備えた内燃機関の燃料噴射制御装置に関する発明である。
【背景技術】
【０００２】
一般に、内燃機関の燃料噴射制御システムでは、電磁駆動式の燃料噴射弁を備え、内燃機関の運転状態に応じて要求噴射量を算出し、この要求噴射量に相当するパルス幅の噴射パルスで燃料噴射弁を開弁駆動して要求噴射量分の燃料を噴射するようにしている。
【０００３】
しかし、高圧の燃料を筒内に噴射する筒内噴射式の内燃機関の燃料噴射弁は、図５に示すように、噴射パルス幅に対する実噴射量の変化特性のリニアリティ（直線性）がパーシャルリフト領域（噴射パルス幅が短くて弁体のリフト量がフルリフト位置に到達しないパーシャルリフト状態となる領域）で悪化する傾向がある。このパーシャルリフト領域では、弁体（例えばニードル弁）のリフト量のばらつきが大きくなって噴射量ばらつきが大きくなる傾向があり、噴射量ばらつきが大きくなると、排気エミッションやドライバビリティが悪化する可能性がある。
【０００４】
燃料噴射弁の噴射量ばらつきの補正に関連する技術としては、例えば、特許文献１（ＵＳ２００３／００７１６１３号公報）に記載されているように、ソレノイドの駆動電圧ＵＭと、この駆動電圧ＵＭをローパスフィルタでフィルタ処理したリファレンス電圧ＵＲとを比較し、両者の交点に基づいてソレノイドのアーマチャ位置を検出するようにしたものがある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】ＵＳ２００３／００７１６１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、上記特許文献１の技術では、フィルタ処理前の駆動電圧ＵＭ（生値）とフィルタ処理後のリファレンス電圧ＵＲとを比較しているため、フィルタ処理前の駆動電圧ＵＭに重畳するノイズの影響を受けて両者の交点を精度良く検出できない可能性がある。また、ソレノイドの特性によっては駆動電圧ＵＭとリファレンス電圧ＵＲの交点が存在しない可能性もある。このため、ソレノイドのアーマチャ位置を精度良く検出することは困難である。従って、上記特許文献１の技術を利用しても、燃料噴射弁のパーシャルリフト領域でのリフト量ばらつきに起因する噴射量ばらつきを精度良く補正することができない。
【０００７】
そこで、本発明が解決しようとする課題は、燃料噴射弁のパーシャルリフト領域でのリフト量ばらつきに起因する噴射量ばらつきを精度良く補正することができ、パーシャルリフト領域での噴射量制御精度を向上させることができる内燃機関の燃料噴射制御装置を提供することにある。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、請求項１に係る発明は、電磁駆動式の燃料噴射弁（２１）を備えた内燃機関の燃料噴射制御装置において、燃料噴射弁（２１）の弁体（３３）のリフト量がフルリフト位置に到達しない噴射パルスで燃料噴射弁（２１）を開弁駆動するパーシャルリフト噴射を実行する噴射制御手段（３０）と、パーシャルリフト噴射の噴射パルスのオフ後に、燃料噴射弁（２１）の端子電圧をノイズ成分の周波数よりも低い第１の周波数をカットオフ周波数とする第１のローパスフィルタでフィルタ処理した第１のフィルタ電圧を取得すると共に、端子電圧を第１の周波数よりも低い第２の周波数をカットオフ周波数とする第２のローパスフィルタでフィルタ処理した第２のフィルタ電圧を取得するフィルタ電圧取得手段（３５，３６，４０）と、第１のフィルタ電圧と第２のフィルタ電圧との差分を算出する差分算出手段（３５，３６，４０）と、所定の基準タイミングから差分が変曲点となるタイミングまでの時間を電圧変曲点時間として算出する時間算出手段（３５，３６，４０）と、この電圧変曲点時間の所定回数分のデータを平均化処理した値を電圧変曲点時間の学習値として求める学習手段（３５）と、電圧変曲点時間の学習値に基づいてパーシャルリフト噴射の噴射パルスを補正する噴射パルス補正手段（３５）とを備えた構成としたものである。
【０００９】
燃料噴射弁は、噴射パルスのオフ後に誘導起電力によって端子電圧（例えばマイナス端子電圧）が変化する（図１２参照）。その際、燃料噴射弁が閉弁するときに、弁体の変化速度（可動コアの変化速度）が比較的大きく変化して、端子電圧の変化特性が変化するため、閉弁タイミング付近で端子電圧の変化特性が変化する電圧変曲点となる。
【００１０】
このような特性に着目して、本発明では、まず、パーシャルリフト噴射の噴射パルスのオフ後に、端子電圧をノイズ成分の周波数よりも低い第１の周波数をカットオフ周波数とする第１のローパスフィルタでフィルタ処理（なまし処理）した第１のフィルタ電圧を取得すると共に、端子電圧を第１の周波数よりも低い第２の周波数をカットオフ周波数とする第２のローパスフィルタでフィルタ処理（なまし処理）した第２のフィルタ電圧を取得する。これにより、端子電圧からノイズ成分を除去した第１のフィルタ電圧と電圧変曲点検出用の第２のフィルタ電圧を取得することができる。
【００１１】
更に、第１のフィルタ電圧と第２のフィルタ電圧との差分を算出し、所定の基準タイミングから差分が変曲点となるタイミングまでの時間を電圧変曲点時間として算出する。これにより、燃料噴射弁の閉弁タイミングに応じて変化する電圧変曲点時間を精度良く算出することができる。
【００１２】
また、燃料噴射弁のパーシャルリフト領域では、図６に示すように、燃料噴射弁のリフト量のばらつきによって噴射量が変動すると共に閉弁タイミングが変動するため、燃料噴射弁の噴射量と閉弁タイミングとの間には相関関係がある。更に、燃料噴射弁の閉弁タイミングに応じて電圧変曲点時間が変化するため、図７に示すように、電圧変曲点時間と噴射量との間には相関関係がある。
【００１３】
このような関係に着目して、電圧変曲点時間に基づいてパーシャルリフト噴射の噴射パルスを補正することで、パーシャルリフト噴射の噴射パルスを精度良く補正することができる。これにより、パーシャルリフト領域でのリフト量ばらつきに起因する噴射量ばらつきを精度良く補正することができ、パーシャルリフト領域での噴射量制御精度を向上させることができる。
【００１４】
その際、本発明では、電圧変曲点時間の所定回数分のデータを平均化処理した値を電圧変曲点時間の学習値として求め、この電圧変曲点時間の学習値に基づいてパーシャルリフト噴射の噴射パルスを補正する。これにより、電圧変曲点時間の算出値に含まれるノイズ成分等の影響を低減することができ、電圧変曲点時間に基づいた噴射パルスの補正精度を向上させることができる。
【図面の簡単な説明】
【００１５】
【図１】図１は本発明の実施例１におけるエンジン制御システムの概略構成を示す図である。
【図２】図２は実施例１のＥＣＵの構成を示すブロック図である。
【図３】図３は燃料噴射弁のフルリフトを説明する図である。
【図４】図４は燃料噴射弁のパーシャルリフトを説明する図である。
【図５】図５は燃料噴射弁の噴射パルス幅と実噴射量との関係を示す図である。
【図６】図６は燃料噴射弁の噴射量と閉弁タイミング等の関係を説明する図である。
【図７】図７は燃料噴射弁の電圧変曲点時間と噴射量との関係を示す図である。
【図８】図８は電圧変曲点時間の取得方法を説明するタイムチャートである。
【図９】図９は正常カウンタ、電圧変曲点時間の積算値、異常カウンタ等の挙動を示すタイムチャートである。
【図１０】図１０は実施例１の電圧変曲点時間算出ルーチンの処理の流れを示すフローチャートである。
【図１１】図１１は電圧変曲点時間学習ルーチンの処理の流れを示すフローチャートである。
【図１２】図１２は実施例１の電圧変曲点時間算出の実行例を示すタイムチャートである。
【図１３】図１３は実施例２の電圧変曲点時間算出ルーチンの処理の流れを示すフローチャートである。
【図１４】図１４は実施例２の電圧変曲点時間算出の実行例を示すタイムチャートである。
【図１５】図１５は実施例３の電圧変曲点時間算出ルーチンの処理の流れを示すフローチャートである。
【図１６】図１６は実施例３の電圧変曲点時間算出の実行例を示すタイムチャートである。
【図１７】図１７は実施例４の電圧変曲点時間算出ルーチンの処理の流れを示すフローチャートである。
【図１８】図１８は実施例４の電圧変曲点時間算出の実行例を示すタイムチャートである。
【図１９】図１９は実施例５のＥＣＵの構成を示すブロック図である。
【図２０】図２０は実施例６のＥＣＵの構成を示すブロック図である。
【発明を実施するための形態】
【００１６】
以下、本発明を実施するための形態を具体化した幾つかの実施例を説明する。
【実施例１】
【００１７】
本発明の実施例１を図１乃至図１２に基づいて説明する。
まず、図１に基づいてエンジン制御システムの概略構成を説明する。
筒内噴射式の内燃機関である筒内噴射式エンジン１１の吸気管１２の最上流部には、エアクリーナ１３が設けられ、このエアクリーナ１３の下流側に、吸入空気量を検出するエアフローメータ１４が設けられている。このエアフローメータ１４の下流側には、モータ１５によって開度調節されるスロットルバルブ１６と、このスロットルバルブ１６の開度（スロットル開度）を検出するスロットル開度センサ１７とが設けられている。
【００１８】
更に、スロットルバルブ１６の下流側には、サージタンク１８が設けられ、このサージタンク１８に、吸気管圧力を検出する吸気管圧力センサ１９が設けられている。また、サージタンク１８には、エンジン１１の各気筒に空気を導入する吸気マニホールド２０が設けられ、エンジン１１の各気筒には、それぞれ筒内に燃料を直接噴射する燃料噴射弁２１が取り付けられている。また、エンジン１１のシリンダヘッドには、各気筒毎に点火プラグ２２が取り付けられ、各気筒の点火プラグ２２の火花放電によって筒内の混合気に着火される。
【００１９】
一方、エンジン１１の排気管２３には、排出ガスの空燃比又はリッチ／リーン等を検出する排出ガスセンサ２４（空燃比センサ、酸素センサ等）が設けられ、この排出ガスセンサ２４の下流側に、排出ガスを浄化する三元触媒等の触媒２５が設けられている。
【００２０】
また、エンジン１１のシリンダブロックには、冷却水温を検出する冷却水温センサ２６や、ノッキングを検出するノックセンサ２７が取り付けられている。また、クランク軸２８の外周側には、クランク軸２８が所定クランク角回転する毎にパルス信号を出力するクランク角センサ２９が取り付けられ、このクランク角センサ２９の出力信号に基づいてクランク角やエンジン回転速度が検出される。
【００２１】
これら各種センサの出力は、電子制御ユニット（以下「ＥＣＵ」と表記する）３０に入力される。このＥＣＵ３０は、マイクロコンピュータを主体として構成され、内蔵されたＲＯＭ（記憶媒体）に記憶された各種のエンジン制御用のプログラムを実行することで、エンジン運転状態に応じて、燃料噴射量、点火時期、スロットル開度（吸入空気量）等を制御する。
【００２２】
図２に示すように、ＥＣＵ３０には、エンジン制御用マイコン３５（エンジン１１の制御用のマイクロコンピュータ）やインジェクタ駆動用ＩＣ３６（燃料噴射弁２１の駆動用ＩＣ）等が設けられている。ＥＣＵ３０は、エンジン制御用マイコン３５で、エンジン運転状態（例えばエンジン回転速度やエンジン負荷等）に応じて要求噴射量を算出して、この要求噴射量に応じて要求噴射パルス幅Ｔi （噴射時間）を算出し、インジェクタ駆動用ＩＣ３６で、要求噴射量に応じた要求噴射パルス幅Ｔi で燃料噴射弁２１を開弁駆動して要求噴射量分の燃料を噴射する。
【００２３】
図３及び図４に示すように、燃料噴射弁２１は、噴射パルスをオンして駆動コイル３１に通電したときに駆動コイル３１によって生じる電磁力によってプランジャ３２（可動コア）と一体的にニードル弁３３（弁体）を開弁方向に駆動する構成となっている。図３に示すように、噴射パルス幅が比較的長くなるフルリフト領域では、ニードル弁３３のリフト量がフルリフト位置（プランジャ３２がストッパ３４に突き当たる位置）に到達するが、図４に示すように、噴射パルス幅が比較的短くなるパーシャルリフト領域では、ニードル弁３３のリフト量がフルリフト位置に到達しないパーシャルリフト状態（プランジャ３２がストッパ３４に突き当たる手前の状態）となる。
【００２４】
ＥＣＵ３０は、フルリフト領域ではニードル弁３３のリフト量がフルリフト位置に到達する噴射パルスで燃料噴射弁２１を開弁駆動するフルリフト噴射を実行し、パーシャルリフト領域ではニードル弁３３のリフト量がフルリフト位置に到達しないパーシャルリフト状態となる噴射パルスで燃料噴射弁２１を開弁駆動するパーシャルリフト噴射を実行する噴射制御手段として機能する。
【００２５】
高圧の燃料を筒内に噴射する筒内噴射式エンジン１１の燃料噴射弁２１は、図５に示すように、噴射パルス幅に対する実噴射量の変化特性のリニアリティ（直線性）がパーシャルリフト領域（噴射パルス幅が短くてニードル弁３３のリフト量がフルリフト位置に到達しないパーシャルリフト状態となる領域）で悪化する傾向がある。このパーシャルリフト領域では、ニードル弁３３のリフト量のばらつきが大きくなって噴射量ばらつきが大きくなる傾向があり、噴射量ばらつきが大きくなると、排気エミッションやドライバビリティが悪化する可能性がある。
【００２６】
ところで、燃料噴射弁２１は、噴射パルスのオフ後に誘導起電力によってマイナス端子電圧が変化する（図１２参照）。その際、燃料噴射弁２１が閉弁するときに、ニードル弁３３の変化速度（プランジャ３２の変化速度）が比較的大きく変化して、マイナス端子電圧の変化特性が変化するため、閉弁タイミング付近でマイナス端子電圧の変化特性が変化する電圧変曲点となる。
【００２７】
このような特性に着目して、本実施例１では、ＥＣＵ３０（例えばインジェクタ駆動用ＩＣ３６）により後述する図１０の電圧変曲点時間算出ルーチンを実行することで、閉弁タイミングに関連する情報として電圧変曲点時間を次のようにして算出する。
【００２８】
ＥＣＵ３０は、インジェクタ駆動用ＩＣ３６の演算部３７（図２参照）で、パーシャルリフト噴射の実行中（少なくともパーシャルリフト噴射の噴射パルスのオフ後）に、燃料噴射弁２１のマイナス端子電圧Ｖm をノイズ成分の周波数よりも低い第１の周波数ｆ1 をカットオフ周波数とする第１のローパスフィルタでフィルタ処理（なまし処理）した第１のフィルタ電圧Ｖsm1 を算出すると共に、燃料噴射弁２１のマイナス端子電圧Ｖm を第１の周波数ｆ1 よりも低い第２の周波数ｆ2 をカットオフ周波数とする第２のローパスフィルタでフィルタ処理（なまし処理）した第２のフィルタ電圧Ｖsm2 を算出する処理をエンジン１１の各気筒毎に行う。これにより、マイナス端子電圧Ｖm からノイズ成分を除去した第１のフィルタ電圧Ｖsm1 と電圧変曲点検出用の第２のフィルタ電圧Ｖsm2 を算出することができる。
【００２９】
更に、インジェクタ駆動用ＩＣ３６の演算部３７で、第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 との差分Ｖdiff（＝Ｖsm1 −Ｖsm2 ）を算出し、所定の基準タイミングから差分Ｖdiffが変曲点となるタイミングまでの時間を電圧変曲点時間Ｔdiffとして算出する処理をエンジン１１の各気筒毎に行う。この際、本実施例１では、差分Ｖdiffが所定の閾値Ｖt を越えるタイミングを、差分Ｖdiffが変曲点となるタイミングとして電圧変曲点時間Ｔdiffを算出する。つまり、所定の基準タイミングから差分Ｖdiffが所定の閾値Ｖt を越えるタイミングまでの時間を電圧変曲点時間Ｔdiffとして算出する。これにより、燃料噴射弁２１の閉弁タイミングに応じて変化する電圧変曲点時間Ｔdiffを精度良く算出することができる。本実施例１では、パーシャルリフト噴射の噴射パルスがオフからオンに切り換わるタイミングを基準タイミングとして電圧変曲点時間Ｔdiffを算出する。尚、閾値Ｖt は、エンジン制御用マイコン３５の閾値算出部３８（図２参照）で燃圧や燃温等に応じて算出される。或は、閾値Ｖt を予め設定した固定値としても良い。
【００３０】
また、燃料噴射弁２１のパーシャルリフト領域では、図６に示すように、燃料噴射弁２１のリフト量のばらつきによって噴射量が変動すると共に閉弁タイミングが変動するため、燃料噴射弁２１の噴射量と閉弁タイミングとの間には相関関係がある。更に、燃料噴射弁２１の閉弁タイミングに応じて電圧変曲点時間Ｔdiffが変化するため、図７に示すように、電圧変曲点時間Ｔdiffと噴射量との間には相関関係がある。
【００３１】
このような関係に着目して、ＥＣＵ３０は、エンジン制御用マイコン３５の電圧変曲点時間学習部４２（図２参照）で、電圧変曲点時間Ｔdiffの所定回数分のデータを平均化処理した値Ｔdiff.aveを電圧変曲点時間の学習値として求め、エンジン制御用マイコン３５の噴射パルス補正演算部３９（図２参照）で、電圧変曲点時間の学習値Ｔdiff.aveに基づいてパーシャルリフト噴射の噴射パルスを補正する処理をエンジン１１の各気筒毎に行う。これにより、パーシャルリフト噴射の噴射パルスを精度良く補正することができる。
【００３２】
その際、本実施例１では、ＥＣＵ３０（例えばエンジン制御用マイコン３５）で後述する図１１の電圧変曲点時間学習ルーチンを実行することで、電圧変曲点時間の学習値Ｔdiff.aveを次のようにして求める。
【００３３】
ＥＣＵ３０は、図８に示すように、エンジン制御用マイコン３５（電圧変曲点時間学習部４２）で、各気筒（例えば第１気筒＃１〜第４気筒＃４）の電圧変曲点時間Ｔdiffの取得タイミング（例えばパーシャルリフト噴射の噴射パルスのオフ後の下死点）になる毎に、インジェクタ駆動用ＩＣ３６（演算部３７）から電圧変曲点時間Ｔdiffを取得する。つまり、第ｉ気筒＃ｉ（例えばｉ＝１〜４）の電圧変曲点時間Ｔdiff[#i]の取得タイミングで、第ｉ気筒＃ｉの電圧変曲点時間Ｔdiff[#i]を取得する。
【００３４】
図９に示すように、エンジン制御用マイコン３５（電圧変曲点時間学習部４２）では、各気筒（例えば第１気筒＃１〜第４気筒＃４）毎にそれぞれ正常カウンタが設定されると共に、全気筒共通で一つの異常カウンタが設定されている。
【００３５】
そして、今回取得した第ｉ気筒＃ｉの電圧変曲点時間Ｔdiff[#i]が所定の正常範囲内（Ｔerr.min ≦Ｔdiff[#i]≦Ｔerr.max ）の場合には、第ｉ気筒＃ｉの正常カウンタのカウント値ＫＯＫ[#i]をカウントアップする。更に、今回取得した第ｉ気筒＃ｉの電圧変曲点時間Ｔdiff[#i]を積算して第ｉ気筒＃ｉの電圧変曲点時間の積算値Ｔdiff.sum[#i]を更新する。具体的には、前回までの第ｉ気筒＃ｉの電圧変曲点時間の積算値Ｔdiff.sum[#i]old に今回取得した第ｉ気筒＃ｉの電圧変曲点時間Ｔdiff[#i]を加算して第ｉ気筒＃ｉの電圧変曲点時間の積算値Ｔdiff.sum[#i]を求める。
Ｔdiff.sum[#i]＝Ｔdiff.sum[#i]old ＋Ｔdiff[#i]
【００３６】
一方、今回取得した第ｉ気筒＃ｉの電圧変曲点時間Ｔdiff[#i]が正常範囲外（Ｔdiff[#i]＜Ｔerr.min 又はＴerr.max ＜Ｔdiff[#i]）の場合には、全気筒共通の異常カウンタのカウント値ＫＮＧをカウントアップする。この場合、今回取得した第ｉ気筒＃ｉの電圧変曲点時間Ｔdiff[#i]を積算しない（つまり今回取得した第ｉ気筒＃ｉの電圧変曲点時間Ｔdiff[#i]を平均化処理には用いない）。
【００３７】
その後、第ｉ気筒＃ｉの正常カウンタのカウント値ＫＯＫ[#i]が所定回数ＫＯＫthr に達したときに、第ｉ気筒＃ｉの電圧変曲点時間Ｔdiff[#i]の所定回数ＫＯＫthr 分のデータを積算したと判断して、第ｉ気筒＃ｉの電圧変曲点時間の積算値Ｔdiff.sum[#i]を所定回数ＫＯＫthr で除算して平均化処理した値Ｔdiff.ave[#i]を第ｉ気筒＃ｉの電圧変曲点時間の学習値として求める。
Ｔdiff.ave[#i]＝Ｔdiff.sum[#i]／ＫＯＫthr
【００３８】
これに対して、異常カウンタのカウント値ＫＮＧが所定の異常判定回数ＫＮＧthr を越えた場合には、インジェクタ駆動用ＩＣ３６（演算部３７）の異常と判定して、電圧変曲点時間の学習値Ｔdiff.aveに基づいた噴射パルスの補正を禁止する。
【００３９】
本実施例１では、インジェクタ駆動用ＩＣ３６（演算部３７）が特許請求の範囲でいうフィルタ電圧取得手段と差分算出手段と時間算出手段として機能する。また、エンジン制御用マイコン３５（電圧変曲点時間学習部４２）が特許請求の範囲でいう学習手段として機能すると共に、エンジン制御用マイコン３５（噴射パルス補正演算部３９）が特許請求の範囲でいう噴射パルス補正手段として機能する。
【００４０】
以下、本実施例１でＥＣＵ３０（エンジン制御用マイコン３５及び／又はインジェクタ駆動用ＩＣ３６）が実行する図１０の電圧変曲点時間算出ルーチンと図１１の電圧変曲点時間学習ルーチンの処理内容を説明する。
【００４１】
［電圧変曲点時間算出ルーチン］
図１０に示す電圧変曲点時間算出ルーチンは、ＥＣＵ３０の電源オン期間中（例えばイグニッションスイッチのオン期間中）に所定の演算周期Ｔs で繰り返し実行される。本ルーチンが起動されると、まず、ステップ１０１で、パーシャルリフト噴射の実行中であるか否かを判定する。このステップ１０１で、パーシャルリフト噴射の実行中ではないと判定された場合には、ステップ１０２以降の処理を実行することなく、本ルーチンを終了する。
【００４２】
一方、上記ステップ１０１で、パーシャルリフト噴射の実行中であると判定された場合には、ステップ１０２に進み、燃料噴射弁２１のマイナス端子電圧Ｖm を取得する。この場合、本ルーチンの演算周期Ｔs がマイナス端子電圧Ｖm のサンプリング周期Tsとなる。      
【００４３】
この後、ステップ１０３に進み、燃料噴射弁２１のマイナス端子電圧Ｖm をノイズ成分の周波数よりも低い第１の周波数ｆ1 をカットオフ周波数とする第１のローパスフィルタ（つまりカットオフ周波数ｆ1 よりも低い周波数帯域を通過域とするローパスフィルタ）でフィルタ処理した第１のフィルタ電圧Ｖsm1 を算出する。
【００４４】
第１のローパスフィルタは、第１のフィルタ電圧の前回値Ｖsm1(k-1)とマイナス端子電圧の今回値Ｖm(k)とを用いて第１のフィルタ電圧の今回値Ｖsm1(k)を求める下記（１）式で実装されるデジタルフィルタである。
Ｖsm1(k)＝｛（ｎ1 −１）／ｎ1 ｝×Ｖsm1(k-1)＋（１／ｎ1 ）×Ｖm(k)…（１）
【００４５】
この第１のローパスフィルタの時定数ｎ1 は、マイナス端子電圧Ｖm のサンプリング周波数ｆs （＝１／Ｔs ）と第１のローパスフィルタのカットオフ周波数ｆ1 とを用いた下記（２）式の関係を満たすように設定されている。
１／ｆs ：１／ｆ1 ＝１：（ｎ1 −１）…（２）
【００４６】
これにより、ノイズ成分の周波数よりも低い第１の周波数ｆ1 をカットオフ周波数とする第１のローパスフィルタでフィルタ処理した第１のフィルタ電圧Ｖsm1 を容易に算出することができる。
【００４７】
この後、ステップ１０４に進み、燃料噴射弁２１のマイナス端子電圧Ｖm を第１の周波数ｆ1 よりも低い第２の周波数ｆ2 をカットオフ周波数とする第２のローパスフィルタ（つまりカットオフ周波数ｆ2 よりも低い周波数帯域を通過域とするローパスフィルタ）でフィルタ処理した第２のフィルタ電圧Ｖsm2 を算出する。
【００４８】
第２のローパスフィルタは、第２のフィルタ電圧の前回値Ｖsm2(k-1)とマイナス端子電圧の今回値Ｖm(k)とを用いて第２のフィルタ電圧の今回値Ｖsm2(k)を求める下記（３）式で実装されるデジタルフィルタである。
Ｖsm2(k)＝｛（ｎ2 −１）／ｎ2 ｝×Ｖsm2(k-1)＋（１／ｎ2 ）×Ｖm(k)…（３）
【００４９】
この第２のローパスフィルタの時定数ｎ2 は、マイナス端子電圧Ｖm のサンプリング周波数ｆs （＝１／Ｔs ）と第２のローパスフィルタのカットオフ周波数ｆ2 とを用いた下記（４）式の関係を満たすように設定されている。
１／ｆs ：１／ｆ2 ＝１：（ｎ2 −１）…（４）
【００５０】
これにより、第１の周波数ｆ1 よりも低い第２の周波数ｆ2 をカットオフ周波数とする第２のローパスフィルタでフィルタ処理した第２のフィルタ電圧Ｖsm2 を容易に算出することができる。
【００５１】
この後、ステップ１０５に進み、第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 との差分Ｖdiff（＝Ｖsm1 −Ｖsm2 ）を算出する。尚、この差分Ｖdiffが０以上にならないようにガード処理して、マイナス成分だけを抽出するようにしても良い。
この後、ステップ１０６に進み、閾値Ｖt を取得すると共に、電圧変曲点時間の前回値Ｔdiff(k-1) を取得する。
【００５２】
この後、ステップ１０７に進み、噴射パルスがオフからオンに切り換わるタイミングであるか否かを判定する。このステップ１０７で、噴射パルスがオフからオンに切り換わるタイミングであると判定された場合には、ステップ１１０に進み、電圧変曲点時間の今回値Ｔdiff(k) を「０」にリセットする。
Ｔdiff(k) ＝０
【００５３】
一方、上記ステップ１０７で、噴射パルスがオフからオンに切り換わるタイミングではないと判定された場合には、ステップ１０８に進み、噴射パルスがオンであるか否かを判定する。このステップ１０８で、噴射パルスがオンであると判定された場合には、ステップ１１１に進み、電圧変曲点時間の前回値Ｔdiff(k-1) に所定値Ｔs （本ルーチンの演算周期）を加算して電圧変曲点時間の今回値Ｔdiff(k) を求めることで、電圧変曲点時間Ｔdiffをカウントアップする。
Ｔdiff(k) ＝Ｔdiff(k-1) ＋Ｔs
【００５４】
その後、上記ステップ１０８で、噴射パルスがオンではない（つまり噴射パルスがオフである）と判定された場合には、ステップ１０９に進み、第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 との差分Ｖdiffが閾値Ｖt を越えたか否か（閾値Ｖt よりも小から大になったか否か）を判定する。
【００５５】
このステップ１０９で、第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 との差分Ｖdiffがまだ閾値Ｖt を越えていないと判定された場合には、ステップ１１１に進み、電圧変曲点時間Ｔdiffをカウントアップする処理を継続する。
【００５６】
その後、上記ステップ１０９で、第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 との差分Ｖdiffが閾値Ｖt を越えたと判定された場合には、電圧変曲点時間Ｔdiffの算出が完了したと判断して、ステップ１１２に進み、電圧変曲点時間の今回値Ｔdiff(k) を前回値Ｔdiff(k-1) に保持する。
Ｔdiff(k) ＝Ｔdiff(k-1)
【００５７】
これにより、噴射パルスがオフからオンに切り換わるタイミング（基準タイミング）から差分Ｖdiffが閾値Ｖt を越えるタイミングまでの時間を電圧変曲点時間Ｔdiffとして算出し、この電圧変曲点時間Ｔdiffの算出値を次の基準タイミングまで保持する。このようにして電圧変曲点時間Ｔdiffを算出する処理をエンジン１１の各気筒毎に行う。
【００５８】
［電圧変曲点時間学習ルーチン］
図１１に示す電圧変曲点時間学習ルーチンは、ＥＣＵ３０の電源オン期間中（例えばイグニッションスイッチのオン期間中）に所定周期で繰り返し実行される。本ルーチンが起動されると、まず、ステップ２０１で、パーシャルリフト噴射の実行中であるか否かを判定する。このステップ２０１で、パーシャルリフト噴射の実行中ではないと判定された場合には、ステップ２０２以降の処理を実行することなく、本ルーチンを終了する。
【００５９】
一方、上記ステップ２０１で、パーシャルリフト噴射の実行中であると判定された場合には、ステップ２０２に進み、学習完了フラグがオフ（ＯＦＦ）であるか否かを判定する。このステップ２０２で、学習完了フラグがオン（ＯＮ）であると判定された場合には、ステップ２０３以降の処理を実行することなく、本ルーチンを終了する。
【００６０】
一方、上記ステップ２０２で、学習完了フラグがオフであると判定された場合には、ステップ２０３に進み、噴射パルス幅Ｔi をパーシャルリフト噴射となる噴射パルス幅のうちの一つの代表噴射パルス幅Ｔi(x)に設定する。
【００６１】
燃料噴射弁２１は、パーシャルリフト噴射とフルリフト噴射との境界に相当する噴射量Ｑa の略１／２の噴射量となる噴射パルス幅付近で噴射量ばらつき幅が最も大きくなる傾向がある。このような特性を考慮に入れて、代表噴射パルス幅Ｔi(x)は、パーシャルリフト噴射とフルリフト噴射との境界に相当する噴射量Ｑa の１／２の噴射量となる噴射パルス幅に設定されている。
【００６２】
この後、ステップ２０４に進み、各気筒の正常カウンタのカウント値ＫＯＫ[#i]を全て「０」にリセットすると共に、全気筒共通の異常カウンタのカウント値ＫＮＧを「０」にリセットする。更に、各気筒の電圧変曲点時間の積算値Ｔdiff.sum[#i]を全て「０」にリセットする。
【００６３】
この後、ステップ２０５に進み、第ｉ気筒＃ｉの電圧変曲点時間Ｔdiff[#i]の取得タイミング（例えばパーシャルリフト噴射の噴射パルスのオフ後の下死点）であるか否かを判定する。
【００６４】
このステップ２０５で、第ｉ気筒＃ｉの電圧変曲点時間Ｔdiff[#i]の取得タイミングであると判定された時点で、ステップ２０６に進み、インジェクタ駆動用ＩＣ３６（演算部３７）から第ｉ気筒＃ｉの電圧変曲点時間Ｔdiff[#i]を取得する。
【００６５】
この後、ステップ２０７に進み、今回取得した第ｉ気筒＃ｉの電圧変曲点時間Ｔdiff[#i]が所定の正常範囲内（Ｔerr.min ≦Ｔdiff[#i]≦Ｔerr.max ）であるか否かを判定する。ここで、正常範囲は、例えば、インジェクタ駆動用ＩＣ３６及び燃料噴射弁２１の品質（特性や寸法等）がばらつき許容範囲内（例えば耐久試験後のばらつきの許容上限値から許容下限値までの範囲内）のときに算出される電圧変曲点時間Ｔdiffの上限値と下限値に基づいて設定されている。つまり、正常範囲の上限値Ｔerr.max が電圧変曲点時間Ｔdiffの上限値（又はそれよりも少し小さい値）に設定され、正常範囲の下限値Ｔerr.min が電圧変曲点時間Ｔdiffの下限値（又はそれよりも少し大きい値）に設定されている。
【００６６】
このステップ２０７で、今回取得した第ｉ気筒＃ｉの電圧変曲点時間Ｔdiff[#i]が正常範囲内（Ｔerr.min ≦Ｔdiff[#i]≦Ｔerr.max ）であると判定された場合には、ステップ２０８に進み、第ｉ気筒＃ｉの正常カウンタのカウント値ＫＯＫ[#i]をカウントアップする。
ＫＯＫ[#i]＝ＫＯＫ[#i]＋１
【００６７】
更に、今回取得した第ｉ気筒＃ｉの電圧変曲点時間Ｔdiff[#i]を積算して第ｉ気筒＃ｉの電圧変曲点時間の積算値Ｔdiff.sum[#i]を更新する。具体的には、前回までの第ｉ気筒＃ｉの電圧変曲点時間の積算値Ｔdiff.sum[#i]old に今回の第ｉ気筒＃ｉの電圧変曲点時間Ｔdiff[#i]を加算して第ｉ気筒＃ｉの電圧変曲点時間の積算値Ｔdiff.sum[#i]を求める。
Ｔdiff.sum[#i]＝Ｔdiff.sum[#i]old ＋Ｔdiff[#i]
【００６８】
この後、ステップ２０９に進み、第ｉ気筒＃ｉの正常カウンタのカウント値ＫＯＫ[#i]が所定回数ＫＯＫthr に達した（ＫＯＫ[#i]≧ＫＯＫthr ）か否かを判定し、第ｉ気筒＃ｉの正常カウンタのカウント値ＫＯＫ[#i]が所定回数ＫＯＫthr に達していない（ＫＯＫ[#i]＜ＫＯＫthr ）と判定された場合には、ステップ２１１に進む。
【００６９】
一方、上記ステップ２０７で、今回取得した第ｉ気筒＃ｉの電圧変曲点時間Ｔdiff[#i]が正常範囲外（Ｔdiff[#i]＜Ｔerr.min 又はＴerr.max ＜Ｔdiff[#i]）であると判定された場合には、ステップ２１０に進み、全気筒共通の異常カウンタのカウント値ＫＮＧをカウントアップする。
ＫＮＧ＝ＫＮＧ＋１
【００７０】
この場合、今回取得した第ｉ気筒＃ｉの電圧変曲点時間Ｔdiff[#i]を積算しない（つまり今回取得した第ｉ気筒＃ｉの電圧変曲点時間Ｔdiff[#i]を平均化処理には用いない）。
この後、ステップ２１１に進み、異常カウンタのカウント値ＫＮＧが異常判定回数ＫＮＧthr を越えた（ＫＮＧ＞ＫＮＧthr ）か否かを判定する。ここで、異常判定回数ＫＮＧthr は、例えば、所定回数ＫＯＫthr よりも大きい値に設定されている。
【００７１】
このステップ２１１で、異常カウンタのカウント値ＫＮＧが異常判定回数ＫＮＧthr を越えていない（ＫＮＧ≦ＫＮＧthr ）と判定された場合には、上記ステップ２０５に戻る。
【００７２】
その後、上記ステップ２０９で、第ｉ気筒＃ｉの正常カウンタのカウント値ＫＯＫ[#i]が所定回数ＫＯＫthr に達した（ＫＯＫ[#i]≧ＫＯＫthr ）と判定された場合には、第ｉ気筒＃ｉの電圧変曲点時間Ｔdiff[#i]の所定回数ＫＯＫthr 分のデータを積算したと判断して、ステップ２１２に進み、第ｉ気筒＃ｉの電圧変曲点時間の積算値Ｔdiff.sum[#i]を所定回数ＫＯＫthr で除算して平均化処理した値Ｔdiff.ave[#i]を第ｉ気筒＃ｉの電圧変曲点時間の学習値として求める。
Ｔdiff.ave[#i]＝Ｔdiff.sum[#i]／ＫＯＫthr
【００７３】
この後、ステップ２１３に進み、学習完了フラグをオン（ＯＮ）にセットして、本ルーチンを終了する。
これに対して、上記ステップ２１１で、異常カウンタのカウント値ＫＮＧが異常判定回数ＫＮＧthr を越えた（ＫＮＧ＞ＫＮＧthr ）と判定された場合には、ステップ２１４に進み、インジェクタ駆動用ＩＣ３６（演算部３７）の異常と判定して異常フラグをオンにセットすることで電圧変曲点時間の学習値Ｔdiff.aveに基づいた噴射パルスの補正を禁止する共に、学習完了フラグをオンにセットして、本ルーチンを終了する。
【００７４】
次に、図１２のタイムチャートを用いて本実施例１の電圧変曲点時間算出の実行例を説明する。
パーシャルリフト噴射の実行中（少なくともパーシャルリフト噴射の噴射パルスのオフ後）に、燃料噴射弁２１のマイナス端子電圧Ｖm を第１のローパスフィルタでフィルタ処理した第１のフィルタ電圧Ｖsm1 を算出すると共に、燃料噴射弁２１のマイナス端子電圧Ｖm を第２のローパスフィルタでフィルタ処理した第２のフィルタ電圧Ｖsm2 を算出する。更に、第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 との差分Ｖdiff（＝Ｖsm1 −Ｖsm2 ）を算出する。
【００７５】
そして、噴射パルスがオフからオンに切り換わるタイミング（基準タイミング）ｔ1 で、電圧変曲点時間Ｔdiffを「０」にリセットした後、電圧変曲点時間Ｔdiffの算出を開始して、所定の演算周期Ｔs で電圧変曲点時間Ｔdiffをカウントアップする処理を繰り返す。
【００７６】
その後、噴射パルスのオフ後に第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 との差分Ｖdiffが閾値Ｖt を越えるタイミングｔ2 で、電圧変曲点時間Ｔdiffの算出を完了する。これにより、噴射パルスがオフからオンに切り換わるタイミング（基準タイミング）ｔ1 から差分Ｖdiffが閾値Ｖt を越えるタイミングｔ2 までの時間を電圧変曲点時間Ｔdiffとして算出する。
【００７７】
この電圧変曲点時間Ｔdiffの算出値を次の基準タイミングｔ3 まで保持し、この間（電圧変曲点時間Ｔdiffの算出完了タイミングｔ2 から次の基準タイミングｔ3 までの期間）に、エンジン制御用マイコン３５が電圧変曲点時間Ｔdiffをインジェクタ駆動用ＩＣ３６から取得する。
【００７８】
以上説明した本実施例１では、パーシャルリフト噴射の実行中（少なくともパーシャルリフト噴射の噴射パルスのオフ後）に、燃料噴射弁２１のマイナス端子電圧Ｖm を第１のローパスフィルタでフィルタ処理した第１のフィルタ電圧Ｖsm1 を算出することで、ノイズ成分を除去した第１のフィルタ電圧Ｖsm1 を算出することができる。また、燃料噴射弁２１のマイナス端子電圧Ｖm を第２のローパスフィルタでフィルタ処理した第２のフィルタ電圧Ｖsm2 を算出することで、電圧変曲点検出用の第２のフィルタ電圧Ｖsm2 を算出することができる。
【００７９】
更に、第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 との差分Ｖdiffを算出し、噴射パルスがオフからオンに切り換わるタイミング（基準タイミング）から差分Ｖdiffが閾値Ｖt を越えるタイミングまでの時間を電圧変曲点時間Ｔdiffとして算出することで、燃料噴射弁２１の閉弁タイミングに応じて変化する電圧変曲点時間Ｔdiffを精度良く算出することができる。
【００８０】
そして、この電圧変曲点時間Ｔdiffに基づいてパーシャルリフト噴射の噴射パルスを補正することで、パーシャルリフト噴射の噴射パルスを精度良く補正することができる。これにより、パーシャルリフト領域でのリフト量ばらつきに起因する噴射量ばらつきを精度良く補正することができ、パーシャルリフト領域での噴射量制御精度を向上させることができる。
【００８１】
その際、本実施例１では、電圧変曲点時間Ｔdiffの所定回数ＫＯＫthr 分のデータを平均化処理した値Ｔdiff.aveを電圧変曲点時間の学習値として求め、この電圧変曲点時間の学習値Ｔdiff.aveに基づいてパーシャルリフト噴射の噴射パルスを補正するようにしたので、電圧変曲点時間Ｔdiffの算出値に含まれるノイズ成分等の影響を低減することができ、電圧変曲点時間Ｔdiffに基づいた噴射パルスの補正精度を向上させることができる。
【００８２】
また、本実施例１では、電圧変曲点時間Ｔdiffが正常範囲内の場合には正常カウンタをカウントアップし、電圧変曲点時間Ｔdiffが正常範囲外の場合には異常カウンタをカウントアップすると共に該電圧変曲点時間Ｔdiffを平均化処理に用いないようにしたので、電圧変曲点時間Ｔdiffが正常範囲外となる異常値の場合には、その異常値を用いずに平均化処理を行うことができ、異常値の影響を排除して電圧変曲点時間の学習値Ｔdiff.aveを求めることができる。
【００８３】
更に、本実施例１では、正常カウンタのカウント値ＫＯＫが所定回数ＫＯＫthr に達したときに平均化処理を実行するようにしたので、電圧変曲点時間Ｔdiffの正常値を所定回数取得したときに平均化処理を実行して電圧変曲点時間の学習値Ｔdiff.aveを求めることができる。
【００８４】
また、本実施例１では、各気筒毎に正常カウンタを設定するようにしたので、各気筒でそれぞれ正常カウンタのカウント値ＫＯＫが所定回数ＫＯＫthr に達したとき（電圧変曲点時間Ｔdiffの正常値を所定回数取得したとき）に平均化処理を実行して、各気筒毎に電圧変曲点時間の学習値Ｔdiff.aveを求めることができる。一方、全気筒共通で一つの異常カウンタを設定するようにしたので、インジェクタ駆動用ＩＣ３６の異常の影響（電圧変曲点時間Ｔdiffの異常値）が特定の気筒に偏らずに各気筒でランダムに発生するような場合でも、インジェクタ駆動用ＩＣ３６の異常を早期に検出することができる。
【００８５】
更に、本実施例１では、異常カウンタのカウント値ＫＮＧが所定の異常判定回数ＫＮＧthr を越えた場合に、インジェクタ駆動用ＩＣ３６の異常と判定して、電圧変曲点時間の学習値Ｔdiff.aveに基づいた噴射パルスの補正を禁止するようにしている。これにより、異常カウンタのカウント値ＫＮＧに基づいてインジェクタ駆動用ＩＣ３６の異常を検出することができると共に、インジェクタ駆動用ＩＣ３６の異常を検出したときに、電圧変曲点時間の学習値Ｔdiff.aveに基づいた噴射パルスの補正を禁止することで、噴射パルスの誤補正を未然に防止することができる。
【００８６】
また、本実施例１では、異常判定回数ＫＮＧthr を、所定回数ＫＯＫthr よりも大きい値に設定するようにしたので、ノイズ等の影響で異常カウンタのカウント値ＫＮＧが誤ってカウントアップされた場合でも、異常カウンタのカウント値ＫＮＧが容易に異常判定回数ＫＮＧthr を越えてしまうことを防止することができる。
【００８７】
また、本実施例１では、電圧変曲点時間Ｔdiffの正常範囲を、インジェクタ駆動用ＩＣ３６及び燃料噴射弁２１の品質（特性や寸法等）がばらつき許容範囲内（例えば耐久試験後のばらつきの許容上限値から許容下限値までの範囲内）のときに算出される電圧変曲点時間Ｔdiffの上限値と下限値に基づいて設定するようにしている。これにより、インジェクタ駆動用ＩＣ３６や燃料噴射弁２１の品質がばらつき許容範囲外となるような異常状態のときに電圧変曲点時間Ｔdiffが正常範囲外になるように正常範囲を設定することができる。
【００８８】
また、本実施例１では、第１のローパスフィルタと第２のローパスフィルタとして、それぞれデジタルフィルタを用いるようにしたので、第１のローパスフィルタと第２のローパスフィルタを容易に実装することができる。
【００８９】
更に、本実施例１では、インジェクタ駆動用ＩＣ３６（演算部３７）がフィルタ電圧取得手段と差分算出手段と時間算出手段として機能するようにしたので、ＥＣＵ３０のうちのインジェクタ駆動用ＩＣ３６の仕様を変更するだけでフィルタ電圧取得手段と差分算出手段と時間算出手段としての機能を実現することができると共に、エンジン制御用マイコン３５の演算負荷を軽減することができる。
【００９０】
また、本実施例１では、パーシャルリフト噴射の噴射パルスがオフからオンに切り換わるタイミングを基準タイミングとして電圧変曲点時間Ｔdiffを算出するようにしたので、噴射パルスがオフからオンに切り換わるタイミングを基準にして電圧変曲点時間Ｔdiffを精度良く算出することができる。
【００９１】
また、本実施例１では、基準タイミングで電圧変曲点時間Ｔdiffをリセットした後に電圧変曲点時間Ｔdiffの算出を開始し、第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 との差分Ｖdiffが閾値Ｖt を越えるタイミングで電圧変曲点時間Ｔdiffの算出を完了し、この電圧変曲点時間の算出値を次の基準タイミングまで保持するようにしたので、電圧変曲点時間Ｔdiffの算出完了から次の基準タイミングまで電圧変曲点時間Ｔdiffの算出値を保持することができ、エンジン制御用マイコン３５が電圧変曲点時間Ｔdiffを取得可能な期間を長くすることができる。
【実施例２】
【００９２】
次に、図１３及び図１４を用いて本発明の実施例２を説明する。但し、前記実施例１と実質的に同一部分については説明を省略又は簡略化し、主として前記実施例１と異なる部分について説明する。
【００９３】
前記実施例１では、第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 との差分Ｖdiffが所定の閾値Ｖt を越えるタイミングを、差分Ｖdiffが変曲点となるタイミングとして電圧変曲点時間Ｔdiffを算出するようにしたが、本実施例２では、ＥＣＵ３０により後述する図１３の電圧変曲点時間算出ルーチンを実行することで、電圧変曲点時間Ｔdiffを次のようにして算出する。
【００９４】
ＥＣＵ３０は、インジェクタ駆動用ＩＣ３６の演算部３７で、差分Ｖdiffをノイズ成分の周波数よりも低い第３の周波数ｆ3 をカットオフ周波数とする第３のローパスフィルタでフィルタ処理（なまし処理）した第３のフィルタ電圧Ｖdiff.sm3を算出すると共に、差分Ｖdiffを第３の周波数ｆ3 よりも低い第４の周波数ｆ4 をカットオフ周波数とする第４のローパスフィルタでフィルタ処理（なまし処理）した第４のフィルタ電圧Ｖdiff.sm4を算出する。更に、第３のフィルタ電圧Ｖdiff.sm3と第４のフィルタ電圧Ｖdiff.sm4との差分を２階差分Ｖdiff2 （＝Ｖdiff.sm3−Ｖdiff.sm4）として算出し、この２階差分Ｖdiff2 が極値となるタイミング（例えば２階差分Ｖdiff2 が増加しなくなったタイミング）を、差分Ｖdiffが変曲点となるタイミングとして電圧変曲点時間Ｔdiffを算出する。つまり、所定の基準タイミングから２階差分Ｖdiff2 が極値となるタイミングまでの時間を電圧変曲点時間Ｔdiffとして算出する。これにより、燃料噴射弁２１の閉弁タイミングに応じて変化する電圧変曲点時間Ｔdiffを精度良く且つ早いタイミングで算出することができる。本実施例２では、パーシャルリフト噴射の噴射パルスがオフからオンに切り換わるタイミングを基準タイミングとして電圧変曲点時間Ｔdiffを算出する。
【００９５】
本実施例２で実行する図１３のルーチンのステップ３０１〜３０５の処理は、前記実施例１で説明した図１０のルーチンのステップ１０１〜１０５の処理と同じである。
【００９６】
図１３の電圧変曲点時間算出ルーチンでは、パーシャルリフト噴射の実行中であると判定された場合には、燃料噴射弁２１のマイナス端子電圧Ｖm を第１のローパスフィルタでフィルタ処理した第１のフィルタ電圧Ｖsm1 を算出すると共に、燃料噴射弁２１のマイナス端子電圧Ｖm を第２のローパスフィルタでフィルタ処理した第２のフィルタ電圧Ｖsm2 を算出する（ステップ３０１〜３０４）。この後、第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 との差分Ｖdiff（＝Ｖsm1 −Ｖsm2 ）を算出する（ステップ３０５）。
【００９７】
この後、ステップ３０６に進み、差分Ｖdiffをノイズ成分の周波数よりも低い第３の周波数ｆ3 をカットオフ周波数とする第３のローパスフィルタ（つまりカットオフ周波数ｆ3 よりも低い周波数帯域を通過域とするローパスフィルタ）でフィルタ処理した第３のフィルタ電圧Ｖdiff.sm3を算出する。
【００９８】
第３のローパスフィルタは、第３のフィルタ電圧の前回値Ｖdiff.sm3(k-1) と差分の今回値Ｖdiff(k) とを用いて第３のフィルタ電圧の今回値Ｖdiff.sm3(k) を求める下記（５）式で実装されるデジタルフィルタである。
Ｖdiff.sm3(k) ＝｛（ｎ3 −１）／ｎ3 ｝×Ｖdiff.sm3(k-1)
＋（１／ｎ3 ）×Ｖdiff(k) …（５）
【００９９】
この第３のローパスフィルタの時定数ｎ3 は、マイナス端子電圧Ｖm のサンプリング周波数ｆs （＝１／Ｔs ）と第３のローパスフィルタのカットオフ周波数ｆ3 とを用いた下記（６）式の関係を満たすように設定されている。
１／ｆs ：１／ｆ3 ＝１：（ｎ3 −１）…（６）
【０１００】
これにより、ノイズ成分の周波数よりも低い第３の周波数ｆ3 をカットオフ周波数とする第３のローパスフィルタでフィルタ処理した第３のフィルタ電圧Ｖdiff.sm3を容易に算出することができる。
【０１０１】
この後、ステップ３０７に進み、差分Ｖdiffを第３の周波数ｆ3 よりも低い第４の周波数ｆ4 をカットオフ周波数とする第４のローパスフィルタ（つまりカットオフ周波数ｆ4 よりも低い周波数帯域を通過域とするローパスフィルタ）でフィルタ処理した第４のフィルタ電圧Ｖdiff.sm4を算出する。
【０１０２】
第４のローパスフィルタは、第４のフィルタ電圧の前回値Ｖdiff.sm4(k-1) と差分の今回値Ｖdiff(k) とを用いて第４のフィルタ電圧の今回値Ｖdiff.sm4(k) を求める下記（７）式で実装されるデジタルフィルタである。
Ｖdiff.sm4(k) ＝｛（ｎ4 −１）／ｎ4 ｝×Ｖdiff.sm4(k-1)
＋（１／ｎ4 ）×Ｖdiff(k) …（７）
【０１０３】
この第４のローパスフィルタの時定数ｎ4 は、マイナス端子電圧Ｖm のサンプリング周波数ｆs （＝１／Ｔs ）と第４のローパスフィルタのカットオフ周波数ｆ4 とを用いた下記（８）式の関係を満たすように設定されている。
１／ｆs ：１／ｆ4 ＝１：（ｎ4 −１）…（８）
【０１０４】
これにより、第３の周波数ｆ3 よりも低い第４の周波数ｆ4 をカットオフ周波数とする第４のローパスフィルタでフィルタ処理した第４のフィルタ電圧Ｖdiff.sm4を容易に算出することができる。
【０１０５】
尚、第３のローパスフィルタのカットオフ周波数ｆ3 は、第１のローパスフィルタのカットオフ周波数ｆ1 よりも高い周波数に設定され、第４のローパスフィルタのカットオフ周波数ｆ4 は、第２のローパスフィルタのカットオフ周波数ｆ2 よりも低い周波数に設定されている（つまりｆ3 ＞ｆ1 ＞ｆ2 ＞ｆ4 の関係を満たしている）。
【０１０６】
この後、ステップ３０８に進み、第３のフィルタ電圧Ｖdiff.sm3と第４のフィルタ電圧Ｖdiff.sm4との差分を２階差分Ｖdiff2 （＝Ｖdiff.sm3−Ｖdiff.sm4）として算出した後、ステップ３０９に進み、電圧変曲点時間の前回値Ｔdiff(k-1) を取得する。
【０１０７】
この後、ステップ３１０に進み、噴射パルスがオフからオンに切り換わるタイミングであるか否かを判定する。このステップ３１０で、噴射パルスがオフからオンに切り換わるタイミングであると判定された場合には、ステップ３１４に進み、電圧変曲点時間の今回値Ｔdiff(k) を「０」にリセットすると共に、完了フラグＤetect を「０」にリセットする。
Ｔdiff(k) ＝０
Ｄetect ＝０
【０１０８】
一方、上記ステップ３１０で、噴射パルスがオフからオンに切り換わるタイミングではないと判定された場合には、ステップ３１１に進み、完了フラグＤetect が「０」であるか否かを判定し、完了フラグＤetect が「０」であると判定されれば、ステップ３１２に進み、噴射パルスがオンであるか否かを判定する。
【０１０９】
このステップ３１２で、噴射パルスがオンであると判定された場合には、ステップ３１５に進み、電圧変曲点時間の前回値Ｔdiff(k-1) に所定値Ｔs （本ルーチンの演算周期）を加算して電圧変曲点時間の今回値Ｔdiff(k) を求めることで、電圧変曲点時間Ｔdiffをカウントアップする。
Ｔdiff(k) ＝Ｔdiff(k-1) ＋Ｔs
【０１１０】
その後、上記ステップ３１２で、噴射パルスがオンではない（つまり噴射パルスがオフである）と判定された場合には、ステップ３１３に進み、２階差分の今回値Ｖdiff2(k)が前回値Ｖdiff2(k-1)よりも大きいか否かによって、２階差分Ｖdiff2 が増加しているか否かを判定する。この２階差分Ｖdiff2 が増加しなくなったときに２階差分Ｖdiff2 が極値であると判定する。
【０１１１】
このステップ３１３で、２階差分の今回値Ｖdiff2(k)が前回値Ｖdiff2(k-1)よりも大きい（２階差分Ｖdiff2 が増加している）と判定された場合には、ステップ３１５に進み、電圧変曲点時間Ｔdiffをカウントアップする処理を継続する。
【０１１２】
その後、上記ステップ３１３で、２階差分の今回値Ｖdiff2(k)が前回値Ｖdiff2(k-1)以下である（２階差分Ｖdiff2 が増加していない）と判定された場合には、電圧変曲点時間Ｔdiffの算出が完了したと判断して、ステップ３１６に進み、電圧変曲点時間の今回値Ｔdiff(k) を前回値Ｔdiff(k-1) に保持すると共に、完了フラグＤetect を「１」にセットする。
Ｔdiff(k) ＝Ｔdiff(k-1)
Ｄetect ＝１
【０１１３】
その後、上記ステップ３１１で、完了フラグＤetect が１であると判定された場合には、電圧変曲点時間の今回値Ｔdiff(k) を前回値Ｔdiff(k-1) に保持したまま、本ルーチンを終了する。
【０１１４】
これにより、噴射パルスがオフからオンに切り換わるタイミング（基準タイミング）から２階差分Ｖdiff2 が極値となるタイミング（２階差分Ｖdiff2 が増加しなくなったタイミング）までの時間を電圧変曲点時間Ｔdiffとして算出し、この電圧変曲点時間Ｔdiffの算出値を次の基準タイミングまで保持する。
【０１１５】
次に、図１４のタイムチャートを用いて本実施例２の電圧変曲点時間算出の実行例を説明する。
パーシャルリフト噴射の実行中（少なくともパーシャルリフト噴射の噴射パルスのオフ後）に、第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 を算出し、第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 との差分Ｖdiffを算出する。
【０１１６】
更に、差分Ｖdiffを第３のローパスフィルタでフィルタ処理した第３のフィルタ電圧Ｖdiff.sm3を算出すると共に、差分Ｖdiffを第４のローパスフィルタでフィルタ処理した第４のフィルタ電圧Ｖdiff.sm4を算出し、第３のフィルタ電圧Ｖdiff.sm3と第４のフィルタ電圧Ｖdiff.sm4との差分を２階差分Ｖdiff2 （＝Ｖdiff.sm3−Ｖdiff.sm4）として算出する。
【０１１７】
そして、噴射パルスがオフからオンに切り換わるタイミング（基準タイミング）ｔ1 で、電圧変曲点時間Ｔdiffを「０」にリセットした後、電圧変曲点時間Ｔdiffの算出を開始して、所定の演算周期Ｔs で電圧変曲点時間Ｔdiffをカウントアップする処理を繰り返す。
【０１１８】
その後、噴射パルスのオフ後に２階差分Ｖdiff2 が極値となるタイミング（２階差分Ｖdiff2 が増加しなくなったタイミング）ｔ2'で、電圧変曲点時間Ｔdiffの算出を完了する。これにより、噴射パルスがオフからオンに切り換わるタイミング（基準タイミング）ｔ1 から２階差分Ｖdiff2 が極値となるタイミングｔ2'までの時間を電圧変曲点時間Ｔdiffとして算出する。
【０１１９】
この電圧変曲点時間Ｔdiffの算出値を次の基準タイミングｔ3 まで保持し、この間（電圧変曲点時間Ｔdiffの算出完了タイミングｔ2'から次の基準タイミングｔ3 までの期間）に、エンジン制御用マイコン３５が電圧変曲点時間Ｔdiffをインジェクタ駆動用ＩＣ３６から取得する。
【０１２０】
以上説明した本実施例２では、差分Ｖdiffを第３のローパスフィルタでフィルタ処理した第３のフィルタ電圧Ｖdiff.sm3を算出すると共に、差分Ｖdiffを第４のローパスフィルタでフィルタ処理した第４のフィルタ電圧Ｖdiff.sm4を算出し、第３のフィルタ電圧Ｖdiff.sm3と第４のフィルタ電圧Ｖdiff.sm4との差分を２階差分Ｖdiff2 として算出する。この２階差分Ｖdiff2 が極値となるタイミング（２階差分Ｖdiff2 が増加しなくなったタイミング）を、差分Ｖdiffが変曲点となるタイミングとして電圧変曲点時間Ｔdiffを算出するようにしている。これにより、燃料噴射弁２１の閉弁タイミングに応じて変化する電圧変曲点時間Ｔdiffを精度良く算出することができると共に電圧変曲点時間Ｔdiffが回路ばらつき等に起因する端子電圧波形のオフセットずれの影響を避けることができる。
【実施例３】
【０１２１】
次に、図１５及び図１６を用いて本発明の実施例３を説明する。但し、前記実施例１と実質的に同一部分については説明を省略又は簡略化し、主として前記実施例１と異なる部分について説明する。
【０１２２】
前記実施例１では、パーシャルリフト噴射の噴射パルスがオフからオンに切り換わるタイミングを基準タイミングとして電圧変曲点時間Ｔdiffを算出するようにしたが、本実施例３では、ＥＣＵ３０により後述する図１５の電圧変曲点時間算出ルーチンを実行することで、パーシャルリフト噴射の噴射パルスがオンからオフに切り換わるタイミングを基準タイミングとして電圧変曲点時間Ｔdiffを算出するようにしている。
【０１２３】
本実施例３で実行する図１５のルーチンのステップ４０１〜４０６の処理は、前記実施例１で説明した図１０のルーチンのステップ１０１〜１０６の処理と同じである。
【０１２４】
図１５の電圧変曲点時間算出ルーチンでは、パーシャルリフト噴射の実行中であると判定された場合には、燃料噴射弁２１のマイナス端子電圧Ｖm を第１のローパスフィルタでフィルタ処理した第１のフィルタ電圧Ｖsm1 を算出すると共に、燃料噴射弁２１のマイナス端子電圧Ｖm を第２のローパスフィルタでフィルタ処理した第２のフィルタ電圧Ｖsm2 を算出する（ステップ４０１〜４０４）。
【０１２５】
この後、第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 との差分Ｖdiffを算出した後、閾値Ｖt を取得すると共に、電圧変曲点時間の前回値Ｔdiff(k-1) を取得する（ステップ４０５，４０６）。
【０１２６】
この後、ステップ４０７に進み、噴射パルスがオンからオフに切り換わるタイミングであるか否かを判定する。このステップ４０７で、噴射パルスがオンからオフに切り換わるタイミングであると判定された場合には、ステップ４１０に進み、電圧変曲点時間の今回値Ｔdiff(k) を「０」にリセットする。
Ｔdiff(k) ＝０
【０１２７】
一方、上記ステップ４０７で、噴射パルスがオンからオフに切り換わるタイミングではないと判定された場合には、ステップ４０８に進み、噴射パルスがオフであるか否かを判定する。このステップ４０８で、噴射パルスがオフであると判定された場合には、ステップ４０９に進み、第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 との差分Ｖdiffが閾値Ｖt を越えたか否か（閾値Ｖt よりも小から大になったか否か）を判定する。
【０１２８】
このステップ４０９で、第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 との差分Ｖdiffがまだ閾値Ｖt を越えていないと判定された場合には、ステップ４１１に進み、電圧変曲点時間の前回値Ｔdiff(k-1) に所定値Ｔs （本ルーチンの演算周期）を加算して電圧変曲点時間の今回値Ｔdiff(k) を求めることで、電圧変曲点時間Ｔdiffをカウントアップする。
Ｔdiff(k) ＝Ｔdiff(k-1) ＋Ｔs
【０１２９】
その後、上記ステップ４０９で、第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 との差分Ｖdiffが閾値Ｖt を越えたと判定された場合には、電圧変曲点時間Ｔdiffの算出が完了したと判断して、ステップ４１２に進み、電圧変曲点時間の今回値Ｔdiff(k) を前回値Ｔdiff(k-1) に保持する。
Ｔdiff(k) ＝Ｔdiff(k-1)
【０１３０】
これにより、噴射パルスがオンからオフに切り換わるタイミング（基準タイミング）から差分Ｖdiffが閾値Ｖt を越えるタイミングまでの時間を電圧変曲点時間Ｔdiffとして算出する。
【０１３１】
その後、上記ステップ４０８で、噴射パルスがオフではない（つまり噴射パルスがオンである）と判定された場合にも、電圧変曲点時間の今回値Ｔdiff(k) を前回値Ｔdiff(k-1) に保持する処理を継続して、電圧変曲点時間Ｔdiffの算出値を次の基準タイミングまで保持する。
【０１３２】
次に、図１６のタイムチャートを用いて本実施例３の電圧変曲点時間算出の実行例を説明する。
パーシャルリフト噴射の実行中（少なくともパーシャルリフト噴射の噴射パルスのオフ後）に、第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 を算出し、更に、第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 との差分Ｖdiffを算出する。
【０１３３】
そして、噴射パルスがオンからオフに切り換わるタイミング（基準タイミング）ｔ4 で、電圧変曲点時間Ｔdiffを「０」にリセットした後、電圧変曲点時間Ｔdiffの算出を開始して、所定の演算周期Ｔs で電圧変曲点時間Ｔdiffをカウントアップする処理を繰り返す。
【０１３４】
その後、噴射パルスのオフ後に第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 との差分Ｖdiffが閾値Ｖt を越えるタイミングｔ5 で、電圧変曲点時間Ｔdiffの算出を完了する。これにより、噴射パルスがオンからオフに切り換わるタイミング（基準タイミング）ｔ4 から差分Ｖdiffが閾値Ｖt を越えるタイミングｔ5 までの時間を電圧変曲点時間Ｔdiffとして算出する。
【０１３５】
この電圧変曲点時間Ｔdiffの算出値を次の基準タイミングｔ6 まで保持し、この間（電圧変曲点時間Ｔdiffの算出完了タイミングｔ5 から次の基準タイミングｔ6 までの期間）に、エンジン制御用マイコン３５が電圧変曲点時間Ｔdiffをインジェクタ駆動用ＩＣ３６から取得する。
【０１３６】
以上説明した本実施例３では、パーシャルリフト噴射の噴射パルスがオンからオフに切り換わるタイミングを基準タイミングとして電圧変曲点時間Ｔdiffを算出するようにしたので、噴射パルスがオンからオフに切り換わるタイミングを基準にして電圧変曲点時間Ｔdiffを精度良く算出することができる。また、噴射パルスがオフからオンに切り換わるタイミングを基準タイミングとする場合（実施例１）に比べて、電圧変曲点時間Ｔdiffの算出値を保持する期間を長くすることができ、エンジン制御用マイコン３５が電圧変曲点時間Ｔdiffを取得可能な期間を更に長くすることができる。
【０１３７】
尚、上記実施例３では、噴射パルスがオフからオンに切り換わるタイミングから差分Ｖdiffが閾値Ｖt を越えるタイミングまでの時間を電圧変曲点時間Ｔdiffとして算出するようにしたが、噴射パルスがオフからオンに切り換わるタイミングから２階差分Ｖdiff2 が極値となるタイミングまでの時間を電圧変曲点時間Ｔdiffとして算出するようにしても良い。
【実施例４】
【０１３８】
次に、図１７及び図１８を用いて本発明の実施例４を説明する。但し、前記実施例１と実質的に同一部分については説明を省略又は簡略化し、主として前記実施例１と異なる部分について説明する。
【０１３９】
前記実施例１では、パーシャルリフト噴射の噴射パルスがオフからオンに切り換わるタイミングを基準タイミングとして電圧変曲点時間Ｔdiffを算出するようにしたが、本実施例４では、ＥＣＵ３０により後述する図１７の電圧変曲点時間算出ルーチンを実行することで、パーシャルリフト噴射の噴射パルスのオフ後に燃料噴射弁２１のマイナス端子電圧Ｖm が所定値Ｖoff を下回るタイミングを基準タイミングとして電圧変曲点時間Ｔdiffを算出するようにしている。
【０１４０】
本実施例４で実行する図１７のルーチンのステップ５０１〜５０６の処理は、前記実施例１で説明した図１０のルーチンのステップ１０１〜１０６の処理と同じである。
【０１４１】
図１７の電圧変曲点時間算出ルーチンでは、パーシャルリフト噴射の実行中であると判定された場合には、燃料噴射弁２１のマイナス端子電圧Ｖm を第１のローパスフィルタでフィルタ処理した第１のフィルタ電圧Ｖsm1 を算出すると共に、燃料噴射弁２１のマイナス端子電圧Ｖm を第２のローパスフィルタでフィルタ処理した第２のフィルタ電圧Ｖsm2 を算出する（ステップ５０１〜５０４）。
【０１４２】
この後、第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 との差分Ｖdiffを算出した後、閾値Ｖt を取得すると共に、電圧変曲点時間の前回値Ｔdiff(k-1) を取得する（ステップ５０５，５０６）。
【０１４３】
この後、ステップ５０７に進み、噴射パルスがオフであるか否かを判定する。このステップ５０７で、噴射パルスがオフであると判定された場合には、ステップ５０８に進み、燃料噴射弁２１のマイナス端子電圧Ｖm が所定値Ｖoff を下回るタイミング（所定値Ｖoff よりも大から小になるタイミング）であるか否かを判定する。
【０１４４】
このステップ５０８で、燃料噴射弁２１のマイナス端子電圧Ｖm が所定値Ｖoff を下回るタイミングであると判定された場合には、ステップ５１０に進み、電圧変曲点時間の今回値Ｔdiff(k) を「０」にリセットする。
Ｔdiff(k) ＝０
【０１４５】
一方、上記ステップ５０８で、燃料噴射弁２１のマイナス端子電圧Ｖm が所定値Ｖoff を下回るタイミングではないと判定された場合には、ステップ５０９に進み、第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 との差分Ｖdiffが閾値Ｖt を越えたか否か（閾値Ｖt よりも小から大になったか否か）を判定する。
【０１４６】
このステップ５０９で、第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 との差分Ｖdiffがまだ閾値Ｖt を越えていないと判定された場合には、ステップ５１１に進み、電圧変曲点時間の前回値Ｔdiff(k-1) に所定値Ｔs （本ルーチンの演算周期）を加算して電圧変曲点時間の今回値Ｔdiff(k) を求めることで、電圧変曲点時間Ｔdiffをカウントアップする。
Ｔdiff(k) ＝Ｔdiff(k-1) ＋Ｔs
【０１４７】
その後、上記ステップ５０９で、第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 との差分Ｖdiffが閾値Ｖt を越えたと判定された場合には、電圧変曲点時間Ｔdiffの算出が完了したと判断して、ステップ５１２に進み、電圧変曲点時間の今回値Ｔdiff(k) を前回値Ｔdiff(k-1) に保持する。
Ｔdiff(k) ＝Ｔdiff(k-1)
【０１４８】
これにより、噴射パルスのオフ後に燃料噴射弁２１のマイナス端子電圧Ｖm が所定値Ｖoff を下回るタイミング（基準タイミング）から差分Ｖdiffが閾値Ｖt を越えるタイミングまでの時間を電圧変曲点時間Ｔdiffとして算出する。
【０１４９】
その後、上記ステップ５０７で、噴射パルスがオフではない（つまり噴射パルスがオンである）と判定された場合にも、電圧変曲点時間の今回値Ｔdiff(k) を前回値Ｔdiff(k-1) に保持する処理を継続して、電圧変曲点時間Ｔdiffの算出値を次の基準タイミングまで保持する。
【０１５０】
次に、図１８のタイムチャートを用いて本実施例４の電圧変曲点時間算出の実行例を説明する。
パーシャルリフト噴射の実行中（少なくともパーシャルリフト噴射の噴射パルスのオフ後）に、第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 を算出し、更に、第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 との差分Ｖdiffを算出する。
【０１５１】
そして、噴射パルスのオフ後に燃料噴射弁２１のマイナス端子電圧Ｖm が所定値Ｖoff を下回るタイミング（基準タイミング）ｔ7 で、電圧変曲点時間Ｔdiffを「０」にリセットした後、電圧変曲点時間Ｔdiffの算出を開始して、所定の演算周期Ｔs で電圧変曲点時間Ｔdiffをカウントアップする処理を繰り返す。
【０１５２】
その後、噴射パルスのオフ後に第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 との差分Ｖdiffが閾値Ｖt を越えるタイミングｔ8 で、電圧変曲点時間Ｔdiffの算出を完了する。これにより、噴射パルスのオフ後に燃料噴射弁２１のマイナス端子電圧Ｖm が所定値Ｖoff を下回るタイミング（基準タイミング）ｔ7 から差分Ｖdiffが閾値Ｖt を越えるタイミングｔ8 までの時間を電圧変曲点時間Ｔdiffとして算出する。
【０１５３】
この電圧変曲点時間Ｔdiffの算出値を次の基準タイミングｔ9 まで保持し、この間（電圧変曲点時間Ｔdiffの算出完了タイミングｔ8 から次の基準タイミングｔ9 までの期間）に、エンジン制御用マイコン３５が電圧変曲点時間Ｔdiffをインジェクタ駆動用ＩＣ３６から取得する。
【０１５４】
以上説明した本実施例４では、パーシャルリフト噴射の噴射パルスのオフ後に燃料噴射弁２１のマイナス端子電圧Ｖm が所定値Ｖoff を下回るタイミングを基準タイミングとして電圧変曲点時間Ｔdiffを算出するようにしたので、噴射パルスのオフ後に燃料噴射弁２１のマイナス端子電圧Ｖm が所定値Ｖoff を下回るタイミングを基準にして電圧変曲点時間Ｔdiffを精度良く算出することができる。また、噴射パルスがオフからオンに切り換わるタイミングを基準タイミングとする場合（実施例１）に比べて、電圧変曲点時間Ｔdiffの算出値を保持する期間を長くすることができ、エンジン制御用マイコン３５が電圧変曲点時間Ｔdiffを取得可能な期間を更に長くすることができる。
【０１５５】
尚、上記実施例４では、マイナス端子電圧Ｖm が所定値Ｖoff を下回るタイミングから差分Ｖdiffが閾値Ｖt を越えるタイミングまでの時間を電圧変曲点時間Ｔdiffとして算出するようにしたが、マイナス端子電圧Ｖm が所定値Ｖoff を下回るタイミングから２階差分Ｖdiff2 が極値となるタイミングまでの時間を電圧変曲点時間Ｔdiffとして算出するようにしても良い。
【実施例５】
【０１５６】
次に、図１９を用いて本発明の実施例５を説明する。但し、前記実施例１と実質的に同一部分には同一符号を付して説明を省略又は簡略化し、主として前記実施例１と異なる部分について説明する。
【０１５７】
本実施例５では、図１９に示すように、ＥＣＵ３０には、インジェクタ駆動用ＩＣ３６とは別に演算用ＩＣ４０が設けられている。ＥＣＵ３０は、この演算用ＩＣ４０で、パーシャルリフト噴射の実行中（少なくともパーシャルリフト噴射の噴射パルスのオフ後）に、第１のフィルタ電圧Ｖsm1 を算出すると共に、第２のフィルタ電圧Ｖsm2 を算出する。更に、演算用ＩＣ４０で、第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 との差分Ｖdiffを算出し、所定の基準タイミングから差分Ｖdiffが閾値Ｖt を越えるタイミングまでの時間を電圧変曲点時間Ｔdiffとして算出する。
【０１５８】
或は、演算用ＩＣ４０で、第３のフィルタ電圧Ｖdiff.sm3を算出すると共に、第４のフィルタ電圧Ｖdiff.sm4を算出する。更に、演算用ＩＣ４０で、第３のフィルタ電圧Ｖdiff.sm3と第４のフィルタ電圧Ｖdiff.sm4との差分を２階差分Ｖdiff2 として算出し、所定の基準タイミングから２階差分Ｖdiff2 が極値となるタイミングまでの時間を電圧変曲点時間Ｔdiffとして算出するようにしても良い。
この場合、演算用ＩＣ４０が特許請求の範囲でいうフィルタ電圧取得手段と差分算出手段と時間算出手段として機能する。
【０１５９】
以上説明した本実施例５では、インジェクタ駆動用ＩＣ３６とは別に設けられた演算用ＩＣ４０がフィルタ電圧取得手段と差分算出手段と時間算出手段として機能するようにしたので、インジェクタ駆動用ＩＣ３６やエンジン制御用マイコン３５の仕様を変更することなく、演算用ＩＣ４０を追加するだけでフィルタ電圧取得手段と差分算出手段と時間算出手段としての機能を実現することができると共に、エンジン制御用マイコン３５の演算負荷を軽減することができる。
【実施例６】
【０１６０】
次に、図２０を用いて本発明の実施例６を説明する。但し、前記実施例１と実質的に同一部分には同一符号を付して説明を省略又は簡略化し、主として前記実施例１と異なる部分について説明する。
【０１６１】
本実施例６では、図２０に示すように、ＥＣＵ３０は、エンジン制御用マイコン３５の演算部４１で、パーシャルリフト噴射の実行中（少なくともパーシャルリフト噴射の噴射パルスのオフ後）に、第１のフィルタ電圧Ｖsm1 を算出すると共に、第２のフィルタ電圧Ｖsm2 を算出する。更に、演算部４１で、第１のフィルタ電圧Ｖsm1 と第２のフィルタ電圧Ｖsm2 との差分Ｖdiffを算出し、所定の基準タイミングから差分Ｖdiffが閾値Ｖt を越えるタイミングまでの時間を電圧変曲点時間Ｔdiffとして算出する。
【０１６２】
或は、演算部４１で、第３のフィルタ電圧Ｖdiff.sm3を算出すると共に、第４のフィルタ電圧Ｖdiff.sm4を算出する。更に、演算部４１で、第３のフィルタ電圧Ｖdiff.sm3と第４のフィルタ電圧Ｖdiff.sm4との差分を２階差分Ｖdiff2 として算出し、所定の基準タイミングから２階差分Ｖdiff2 が極値となるタイミングまでの時間を電圧変曲点時間Ｔdiffとして算出するようにしても良い。
この場合、エンジン制御用マイコン３５（演算部４１）が特許請求の範囲でいうフィルタ電圧取得手段と差分算出手段と時間算出手段として機能する。
【０１６３】
以上説明した本実施例６では、エンジン制御用マイコン３５（演算部４１）がフィルタ電圧取得手段と差分算出手段と時間算出手段として機能するようにしたので、ＥＣＵ３０のうちのエンジン制御用マイコン３５の仕様を変更するだけでフィルタ電圧取得手段と差分算出手段と時間算出手段としての機能を実現することができる。
【０１６４】
尚、上記各実施例では、パーシャルリフト噴射の実行中（少なくともパーシャルリフト噴射の噴射パルスのオフ後）に常に電圧変曲点時間Ｔdiffを算出するようにしたが、これに限定されず、例えば、パーシャルリフト噴射の実行中に所定の実行条件が成立したとき（例えば学習完了フラグがオフの期間）に電圧変曲点時間Ｔdiffを算出するようにしても良い。
【０１６５】
また、上記各実施例では、第１〜第４のローパスフィルタとしてデジタルフィルタを用いるようにしたが、これに限定されず、第１〜第４のローパスフィルタとしてアナログフィルタを用いるようにしても良い。
【０１６６】
また、上記各実施例では、燃料噴射弁２１のマイナス端子電圧を用いて電圧変曲点時間を算出するようにしたが、これに限定されず、燃料噴射弁２１のプラス端子電圧を用いて電圧変曲点時間を算出するようにしても良い。
【０１６７】
その他、本発明は、筒内噴射用の燃料噴射弁を備えたシステムに限定されず、吸気ポート噴射用の燃料噴射弁を備えたシステムにも適用して実施できる。
【符号の説明】
【０１６８】
１１…エンジン（内燃機関）、２１…燃料噴射弁、３０…ＥＣＵ（噴射制御手段）、３３…ニードル弁（弁体）、３５…エンジン制御用マイコン（学習手段、噴射パルス補正手段，フィルタ電圧取得手段，差分算出手段，時間算出手段）、３６…インジェクタ駆動用ＩＣ（フィルタ電圧取得手段，差分算出手段，時間算出手段）、４０…演算用ＩＣ（フィルタ電圧取得手段，差分算出手段，時間算出手段）
【図１】
2015075087.tif 000003
【図２】
2015075087.tif 000004
【図３】
2015075087.tif 000005
【図４】
2015075087.tif 000006
【図５】
2015075087.tif 000007
【図６】
2015075087.tif 000008
【図７】
2015075087.tif 000009
【図８】
2015075087.tif 000010
【図９】
2015075087.tif 000011
【図１０】
2015075087.tif 000012
【図１１】
2015075087.tif 000013
【図１２】
2015075087.tif 000014
【図１３】
2015075087.tif 000015
【図１４】
2015075087.tif 000016
【図１５】
2015075087.tif 000017
【図１６】
2015075087.tif 000018
【図１７】
2015075087.tif 000019
【図１８】
2015075087.tif 000020
【図１９】
2015075087.tif 000021
【図２０】
2015075087.tif 000022