(57)【要約】【課題】コストおよび制御負荷の上昇を抑制しつつ、最適なタイミングで制御を実行することができるエンジン制御装置を提供する。【解決手段】エンジン制御装置は、クランクシャフトが所定角度回転するごとに出力される検出信号に基づいて、クランク角を示すクランク角値（Ｃ）を更新する。被制御装置の制御を実行するクランク角を指示クランク角（ｄｅｇ１、２）として特定するとともに、指示クランク角（ｄｅｇ１、２）に到達するまでの予測時間（ｔ１、２）を、エンジンの駆動状況に応じて算出する。予測時間（ｔ１、２）の経過時における実際のクランク角（ｄｅｇ１ｘ、１ｙ、２ｘ、２ｙ）と、指示クランク角（ｄｅｇ１、２）との差分が所定範囲内となる場合、予測時間（ｔ１、ｔ２）の経過時に被制御装置の制御を実行し、差分が所定範囲外となる場合、クランク角値（Ｃ）に基づいて被制御装置の制御を実行する。【選択図】図３
2015155679.tif 000002
【特許請求の範囲】
【請求項１】
クランクシャフトが所定角度回転するごとに検出信号を出力する信号出力部と、
前記信号出力部から出力された検出信号に基づいて、クランク角を示すクランク角値を更新するクランク角値更新部と、
エンジンを駆動するためのいずれかの被制御装置を制御対象とし、該制御対象の制御を実行するクランク角を指示クランク角として特定する指示クランク角特定部と、
実際のクランク角が、前記指示クランク角特定部が特定した前記指示クランク角に到達するまでの予測時間を、前記エンジンの駆動状況に応じて算出する予測時間算出部と、
前記予測時間の経過を監視する予測時間監視部と、
前記予測時間算出部が算出した予測時間の経過時における実際のクランク角と前記指示クランク角との差分が所定範囲内となる場合、該予測時間に基づいて前記制御対象の制御を実行し、該差分が所定範囲外となる場合、前記クランク角値更新部が更新するクランク角値に基づいて該制御対象の制御を実行する制御実行部と、
を備えたことを特徴とするエンジン制御装置。
【請求項２】
前記制御実行部は、
前記予測時間算出部が算出した予測時間の経過時における実際のクランク角と前記指示クランク角との差分が所定範囲外となる場合、前記クランク角値更新部が更新したクランク角値が、該指示クランク角になる前に更新される指示前クランク角値、もしくは、該指示クランク角になった後に更新される指示後クランク角値になると、前記制御対象の制御を実行することを特徴とする請求項１に記載のエンジン制御装置。
【請求項３】
前記指示前クランク角値は、前記クランク角値更新部が更新するクランク角値のうち、前記指示クランク角になる直前に更新されるクランク角値であることを特徴とする請求項２に記載のエンジン制御装置。
【請求項４】
前記指示後クランク角値は、前記クランク角値更新部が更新するクランク角値のうち、前記指示クランク角になった直後に更新されるクランク角値であることを特徴とする請求項２または３に記載のエンジン制御装置。
【請求項５】
前記制御実行部は、
前記予測時間算出部が算出した予測時間の経過時に、前記クランク角値が前記指示前クランク角値に更新されていなければ、該指示前クランク角値に更新されるまで前記制御対象の制御の実行を待機するとともに、該指示前クランク角値に更新されたところで該制御対象の制御を実行することを特徴とする請求項２〜４のいずれか１項に記載のエンジン制御装置。
【請求項６】
前記制御実行部は、
前記クランク角値が前記指示後クランク角値に更新された時点で、前記制御対象の制御が実行されていなければ、該指示後クランク角値に更新されたところで該制御対象の制御を実行することを特徴とする請求項２〜５のいずれか１項に記載のエンジン制御装置。
【請求項７】
前記予測時間算出部が算出した予測時間が経過するよりも前に、前記エンジンの駆動状況に応じて該予測時間を補正もしくは再算出する補正部をさらに備えたことを特徴とする請求項１〜６のいずれか１項に記載のエンジン制御装置。
【請求項８】
前記被制御装置は、燃料を噴射する燃料噴射装置、または、燃焼室で点火を行う点火装置であることを特徴とする請求項１〜７のいずれか１項に記載のエンジン制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、燃料噴射装置や点火装置等の被制御装置を制御するエンジン制御装置に関する。
【背景技術】
【０００２】
エンジンにおいては、燃料噴射装置や点火装置等、エンジンを構成する被制御装置が設けられている。こうした被制御装置には、エンジンの駆動状況や、エンジンを搭載した車両等の運転状況に応じた最適な制御タイミングがあり、一般的には、クランクシャフトのクランク角を検出するとともに、検出されたクランク角に基づいて制御が実行されている。
【０００３】
例えば特許文献１に示される燃料噴射制御装置では、基準となるクランク角が検出されたところで、エンジンの駆動状況や車両等の運転状況に基づいて、制御開始までの待機時間を算出し、待機時間が経過したところで燃料噴射装置の制御を開始するタイマ管理による制御が提案されている。このタイマ管理によれば、エンジンの駆動状況や車両等の運転状況から、制御を開始すべき指示クランク角を特定するとともに、この指示クランク角に到達するタイミングを時間で管理するので、制御タイミングを詳細に設定することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１３９７２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記のタイマ管理による制御では、被制御装置の制御タイミング（待機時間）を算出してから、実際に制御が開始されるまでの間に、エンジンの駆動状況が急変する場合がある。例えば、エンジン回転数が急激に低下した場合には、待機時間が経過しても、クランク角が指示クランク角に到達しておらず、エンジン回転数が急激に上昇した場合には、待機時間の経過時点では、クランク角が既に指示クランク角を通り過ぎてしまう。このように、タイマ管理による制御では、エンジンの駆動状況の急変により、予期せぬクランク角で制御が行われてしまうおそれがある。
【０００６】
そこで、クランク角の検出の分解能を上げて、指示クランク角が検出されたところで制御を開始することも考えられる。しかしながら、クランク角の検出の分解能を上げるためには、高分解能のクランク角センサを用いる必要があり、コスト高になるばかりか、制御負荷が大きくなりすぎてしまうという課題がある。
【０００７】
そこで、本発明は、コストおよび制御負荷の上昇を抑制しつつ、最適なタイミングで制御を実行することができるエンジン制御装置を提供することを目的としている。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明のエンジン制御装置は、クランクシャフトが所定角度回転するごとに検出信号を出力する信号出力部と、前記信号出力部から出力された検出信号に基づいて、クランク角を示すクランク角値を更新するクランク角値更新部と、エンジンを駆動するためのいずれかの被制御装置を制御対象とし、該制御対象の制御を実行するクランク角を指示クランク角として特定する指示クランク角特定部と、実際のクランク角が、前記指示クランク角特定部が特定した前記指示クランク角に到達するまでの予測時間を、前記エンジンの駆動状況に応じて算出する予測時間算出部と、前記予測時間の経過を監視する予測時間監視部と、前記予測時間算出部が算出した予測時間の経過時における実際のクランク角と前記指示クランク角との差分が所定範囲内となる場合、該予測時間に基づいて前記制御対象の制御を実行し、該差分が所定範囲外となる場合、前記クランク角値更新部が更新するクランク角値に基づいて該制御対象の制御を実行する制御実行部と、を備えたことを特徴とする。
【０００９】
また、前記制御実行部は、前記予測時間算出部が算出した予測時間の経過時における実際のクランク角と前記指示クランク角との差分が所定範囲外となる場合、前記クランク角値更新部が更新したクランク角値が、該指示クランク角になる前に更新される指示前クランク角値、もしくは、該指示クランク角になった後に更新される指示後クランク角値になると、前記制御対象の制御を実行するとよい。
【００１０】
また、前記指示前クランク角値は、前記クランク角値更新部が更新するクランク角値のうち、前記指示クランク角になる直前に更新されるクランク角値であるとよい。
【００１１】
また、前記指示後クランク角値は、前記クランク角値更新部が更新するクランク角値のうち、前記指示クランク角になった直後に更新されるクランク角値であるとよい。
【００１２】
また、前記制御実行部は、前記予測時間算出部が算出した予測時間の経過時に、前記クランク角値が前記指示前クランク角値に更新されていなければ、該指示前クランク角値に更新されるまで前記制御対象の制御の実行を待機するとともに、該指示前クランク角値に更新されたところで該制御対象の制御を実行するとよい。
【００１３】
また、前記制御実行部は、前記クランク角値が前記指示後クランク角値に更新された時点で、前記制御対象の制御が実行されていなければ、該指示後クランク角値に更新されたところで該制御対象の制御を実行するとよい。
【００１４】
また、前記予測時間算出部が算出した予測時間が経過するよりも前に、前記エンジンの駆動状況に応じて該予測時間を補正もしくは再算出する補正部をさらに備えるとよい。
【００１５】
また、前記被制御装置は、燃料を噴射する燃料噴射装置、または、燃焼室で点火を行う点火装置であるとよい。
【発明の効果】
【００１６】
本発明によれば、コストおよび制御負荷の上昇を抑制しつつ、最適なタイミングで制御を実行することができる。
【図面の簡単な説明】
【００１７】
【図１】本実施形態のエンジンを示す機能ブロック図である。
【図２】クランク角と制御タイミングとの関係を説明する図である。
【図３】予測時間と指示クランク角との関係を説明する図である。
【図４】エンジン制御装置の制御処理を説明するフローチャートである。
【図５】燃料噴射特定処理を説明するフローチャートである。
【図６】点火時期特定処理を説明するフローチャートである。
【図７】クランク角監視処理を説明するフローチャートである。
【図８】燃料噴射開始処理を説明するフローチャートである。
【図９】燃料噴射管理処理を説明するフローチャートである。
【図１０】点火時期管理処理を説明するフローチャートである。
【図１１】変形例のエンジンを示す機能ブロック図である。
【図１２】クランク角と補正時期との関係を説明する図である。
【図１３】補正処理を説明するフローチャートである。
【発明を実施するための形態】
【００１８】
以下に添付図面を参照しながら、本発明の好適な実施形態について詳細に説明する。かかる実施形態に示す寸法、材料、その他具体的な数値等は、発明の理解を容易にするための例示に過ぎず、特に断る場合を除き、本発明を限定するものではない。なお、本明細書および図面において、実質的に同一の機能、構成を有する要素については、同一の符号を付することにより重複説明を省略し、また本発明に直接関係のない要素は図示を省略する。
【００１９】
図１は、本実施形態のエンジンＥを示す機能ブロック図である。本実施形態では、エンジンＥが４サイクルエンジンで構成されており、一般的な自動車に搭載されることを想定している。エンジンＥは、シリンダブロックおよびシリンダヘッドで構成されるシリンダ本体１に、ピストン３が摺動自在に設けられており、ピストン３の上面とシリンダ本体１の内壁とによって燃焼室５が囲繞形成されている。シリンダ本体１のシリンダヘッドには、吸気通路７および排気通路９が形成され、吸気通路７は吸気ポート１１を介して燃焼室５に連通し、排気通路９は排気ポート１３を介して燃焼室５に連通している。
【００２０】
また、シリンダ本体１のシリンダヘッドには、吸気ポート１１を開閉する吸気バルブ１５と、排気ポート１３を開閉する排気バルブ１７とが設けられている。これら吸気バルブ１５および排気バルブ１７は、ピストン３に連係されたクランクシャフト１９が所定のクランク角となったところで、不図示の動弁機構により駆動される。
【００２１】
さらに、吸気通路７には、燃焼室５に導入される吸気に燃料を噴射して混合気を生成する燃料噴射装置２１が設けられており、燃焼室５には、点火装置２３が設けられている。燃料噴射装置２１は、吸入行程で燃料を噴射し、点火装置２３は、圧縮行程で混合気に点火を行うが、これら燃料噴射装置２１および点火装置２３の制御を開始するクランクシャフト１９の最適なクランク角は、エンジンＥの駆動状況や車両の運転状況等に応じて異なる。そこで、クランクシャフト１９にはクランクギヤ２５が設けられ、クランクギヤ２５の近傍には、クランクギヤ２５（クランクシャフト１９）が所定角度回転するごとに検出信号を出力するクランク角センサ２７が設けられている。そして、クランク角センサ２７から出力される検出信号に基づいて、エンジン制御装置１００が燃料噴射装置２１および点火装置２３を制御する。
【００２２】
エンジン制御装置１００は、各種のプログラムが格納されたＲＯＭ、ＲＯＭからプログラムを読み出して演算処理を行うＣＰＵ、処理領域としてのＲＡＭを有するマイクロコンピュータで構成され、クランク角値更新部１１０、エンジン回転数導出部１２０、噴射量特定部１３０、噴射指示クランク角特定部１４０、噴射予測時間算出部１５０、点火指示クランク角特定部１６０、点火予測時間算出部１７０、予測時間監視部１８０、噴射制御実行部１９０、点火制御実行部２００として機能する。なお、エンジンＥは、複数気筒で構成されており、エンジン制御装置１００は各気筒に対して同様の制御処理を実行するが、ここでは、いずれか一の気筒に対する制御処理のみを説明する。
【００２３】
クランク角値更新部１１０は、クランク角センサ２７から入力される検出信号に基づいて、クランクシャフト１９の現在のクランク角を示すクランク角値を更新する。具体的には、クランクギヤ２５は、回転方向に所定間隔で設けられた複数の実歯を有しており、クランク角センサ２７は、実歯がクランク角センサ２７に対向している間、検出信号をエンジン制御装置１００に出力する。実歯の間隔は特に限定されるものではないが、エンジンＥの制御やエンジン制御装置１００の処理負荷の観点から、実歯は５〜１０°間隔で構成するとよく、本実施形態では、実歯が１０°間隔で構成されているものとする。
【００２４】
ここで、１０°間隔で実歯を設けると、クランクギヤ２５には３６個の実歯が設けられることとなるが、クランクギヤ２５には、本来、実歯が位置する部分に実歯が設けられない欠歯部が複数（２〜３か所）設けられており、実際の実歯の数は３６個よりも少ない。欠歯部は、クランクギヤ２５の回転方向の任意の位置に配されており、欠歯部がクランク角センサ２７に対向する範囲では、クランク角センサ２７から検出信号は出力されない。
【００２５】
クランク角値更新部１１０は、クランク角センサ２７から入力されるパルス信号の波形を監視することで、クランクシャフト１９のクランク角を特定する。例えば、クランクギヤ２５の実歯がクランク角センサ２７に対向して検出信号が出力されるたびに、クランク角カウンタのクランク角値（以下「クランク角値」という）をインクリメントする。また、クランク角値更新部１１０は、各クランク角センサ２７から入力されるパルス信号から、欠歯部がクランク角センサ２７に対向しているか否かを判断し、欠歯部が対向していると判断した場合にも、実歯が検出されたときと同様に、クランク角値をインクリメントする。
【００２６】
このように、クランク角値更新部１１０は、実歯および欠歯部が検出されるたびにクランク角値を更新することで、クランクシャフト１９の現在のクランク角を特定する。なお、クランクギヤ２５（クランクシャフト１９）には、回転の基準となる基準位置が設けられており、例えば、所定の欠歯部が確認されると、クランク角値更新部１１０は、クランク角値をリセットする。
【００２７】
こうして、クランク角値更新部１１０は、基準位置からのクランク角を特定することとなるが、本実施形態では、ピストン３が上死点位置にあるときのクランク角を基準位置とし、クランクシャフト１９が１０°回転するたびに、クランク角値をインクリメントし、７２０°回転したところで、再度、基準位置に到達したとしてクランク角値をリセットする。
【００２８】
エンジン回転数導出部１２０は、クランク角値更新部１１０が更新するクランク角値および経過時間を確認して、エンジンＥの回転数（ｒｐｍ）、すなわち、クランクシャフト１９の回転数を導出、記憶する。
【００２９】
噴射量特定部１３０は、エンジン制御装置１００に入力されるエンジンＥの駆動状況や車両の運転状況を示す入力情報等から、燃料の噴射量を算出する。また、噴射量特定部１３０は、特定した噴射量から、燃料を噴射する時間である噴射期間（ａ）を算出する。
【００３０】
噴射指示クランク角特定部１４０は、上記の入力情報と、燃料噴射装置２１の制御を実行（開始）するクランク角、すなわち、燃料噴射装置２１から燃料の噴射を開始するクランク角（以下「噴射指示クランク角」という）とが予め対応付けられたマップを参照し、現在のエンジンＥの駆動状況や車両の運転状況に対応する噴射指示クランク角（ｄｅｇ１）を特定する。
【００３１】
噴射予測時間算出部１５０は、実際のクランク角が、噴射指示クランク角特定部１４０が特定した噴射指示クランク角（ｄｅｇ１）に到達するまでの噴射予測時間（ｔ１）を、エンジン回転数導出部１２０が導出したエンジン回転数（ｒｐｍ）に基づいて算出する。
【００３２】
点火指示クランク角特定部１６０は、上記の入力情報と、点火装置２３の制御を実行（開始）するクランク角、すなわち、点火装置２３の点火を行うクランク角（以下「点火指示クランク角」という）とが予め対応付けられたマップを参照し、現在のエンジンＥの駆動状況や車両の運転状況に対応する点火指示クランク角（ｄｅｇ２）を特定する。
【００３３】
点火予測時間算出部１７０は、実際のクランク角が、点火指示クランク角特定部１６０が特定した点火指示クランク角（ｄｅｇ２）に到達するまでの点火予測時間（ｔ２）を、エンジン回転数導出部１２０が導出したエンジン回転数（ｒｐｍ）に基づいて算出する。
【００３４】
予測時間監視部１８０は、噴射予測タイマＴ１および点火予測タイマＴ２にセットされたタイマ値を減算して、噴射予測時間（ｔ１）および点火予測時間（ｔ２）の経過を監視する。
【００３５】
噴射制御実行部１９０は、燃料噴射装置２１を制御して、噴射量特定部１３０が特定した量の燃料を噴射制御する。詳しくは後述するが、この噴射制御実行部１９０は、噴射予測時間算出部１５０が算出した噴射予測時間（ｔ１）の経過時における実際のクランク角と噴射指示クランク角（ｄｅｇ１）との差分が所定範囲内となる場合は、噴射予測時間（ｔ１）の経過時に燃料の噴射制御を開始する。一方、エンジン回転数（ｒｐｍ）の急変等により、噴射予測時間算出部１５０が算出した噴射予測時間（ｔ１）の経過時における実際のクランク角と噴射指示クランク角（ｄｅｇ１）との差分が所定範囲外となる場合もある。換言すれば、噴射指示クランク角（ｄｅｇ１）に到達するまでに要する実際の時間に対して、噴射予測時間（ｔ１）の誤差が大きい場合には、クランク角値更新部１１０が更新するクランク角値に基づいて、燃料の噴射制御を実行する。そして、燃料の噴射を開始してから、噴射量特定部１３０が算出した噴射期間（ａ）が経過したところで燃料の噴射を停止する。
【００３６】
点火制御実行部２００は、点火装置２３を制御して、燃焼室５内で燃焼作用を生じさせる。この点火制御実行部２００は、点火予測時間算出部１７０が算出した点火予測時間（ｔ２）の経過時における実際のクランク角と点火指示クランク角（ｄｅｇ２）との差分が所定範囲内となる場合は、点火予測時間（ｔ２）の経過時に点火制御を開始する。一方、点火予測時間算出部１７０が算出した点火予測時間（ｔ２）の経過時における実際のクランク角と点火指示クランク角（ｄｅｇ２）との差分が所定範囲外となる場合もある。換言すれば、点火指示クランク角（ｄｅｇ２）に到達するまでに要する実際の時間に対して、点火予測時間（ｔ２）の誤差が大きい場合には、クランク角値更新部１１０が更新するクランク角値に基づいて点火制御を実行する。
【００３７】
図２は、クランク角と制御タイミングとの関係を説明する図である。上記のように、本実施形態のエンジンＥは、４サイクルエンジンで構成されており、クランクシャフト１９が２回転する間に、膨張行程、排気行程、吸入行程、圧縮行程が順次行われる。クランク角値更新部１１０は、クランクシャフト１９が１０°回転するたびにクランク角値（Ｃ）をインクリメントするが、膨張行程の開始となるピストン３の上死点位置を基準位置とし、この基準位置でクランク角値（Ｃ）をリセットする。したがって、例えば、膨張行程を経てピストン３が下死点に達したとき、つまり、基準位置からクランクシャフト１９が１８０°回転したところでは、クランク角値（Ｃ）は１８となる。なお、以下では、基準位置におけるクランクシャフト１９のクランク角を０°として説明する。
【００３８】
そして、本実施形態では、クランク角が１７０°となったところで、エンジン回転数導出部１２０がエンジン回転数（ｒｐｍ）を算出し、算出したエンジン回転数（ｒｐｍ）を記憶する。なお、クランク角が１７０°になるとき、クランク角値（Ｃ）は１７となる。したがって、エンジン回転数導出部１２０は、クランク角値（Ｃ）が１７に更新されたところで、エンジン回転数（ｒｐｍ）を算出することとなる。
【００３９】
また、噴射量特定部１３０、噴射指示クランク角特定部１４０、噴射予測時間算出部１５０は、それぞれ、クランク角が３５０°（クランク角値（Ｃ）＝３５）となったところで、噴射量、噴射期間（ａ）、噴射指示クランク角（ｄｅｇ１）、噴射予測時間（ｔ１）を特定する。さらに、点火指示クランク角特定部１６０および点火予測時間算出部１７０は、それぞれ、クランク角が６５０°（クランク角値（Ｃ）＝６５）となったところで、点火指示クランク角（ｄｅｇ２）、点火予測時間（ｔ２）を特定する。
【００４０】
図３は、予測時間と指示クランク角との関係を説明する図である。図３（ａ）に示すように、噴射制御実行部１９０は、基本的には、噴射予測時間（ｔ１）を算出した時点（クランク角値（Ｃ）＝３５）から、ｔ１時間が経過したところで噴射制御を開始する。また、点火制御実行部２００は、基本的には、点火予測時間（ｔ２）を算出した時点（クランク角値（Ｃ）＝６５）から、ｔ２時間が経過したところで点火制御を開始する。これら噴射予測時間（ｔ１）および点火予測時間（ｔ２）は、図２に示すように、クランク角値（Ｃ）＝１７の時点におけるエンジン回転数（ｒｐｍ）等に基づいて算出されている。
【００４１】
ここで、エンジン回転数（ｒｐｍ）の算出時点（Ｃ＝１７）から、燃料噴射制御および点火制御の開始時点まで、エンジン回転数（ｒｐｍ）をはじめとするエンジンＥの駆動状況や、車両の運転状況等の変動が一定の範囲内であったとする。この場合には、図３（ａ）に示すように、クランク角値（Ｃ）＝３５の時点からｔ１時間が経過したときの実際のクランク角と、噴射指示クランク角（ｄｅｇ１）との差異や、クランク角値（Ｃ）＝６５の時点からｔ２時間が経過したときの実際のクランク角と、点火指示クランク角（ｄｅｇ２）との差異は小さい。したがって、この場合には、噴射制御実行部１９０は、噴射予測時間（ｔ１）の経過時点で燃料噴射制御を開始し、点火制御実行部２００は、点火予測時間（ｔ２）の経過時点で点火制御を開始する。
【００４２】
なお、クランク角値更新部１１０が更新するクランク角値（Ｃ）が、所定の値になったところで、燃料噴射制御や点火制御を開始することも可能である。しかしながら、本実施形態では、クランク角値更新部１１０が１０°間隔でクランク角値を更新しているため、制御の開始点を示す噴射指示クランク角（ｄｅｇ１）や点火指示クランク角（ｄｅｇ２）は、１０°間隔でしか設定することができない。これは、燃料噴射制御や点火制御の開始時期を、１０°間隔でしか設定することができないことを意味する。これに対して、上記のように、噴射予測時間（ｔ１）や点火予測時間（ｔ２）に基づいて燃料噴射制御や点火制御を行うことにより、より最適な制御タイミングを設定することが可能となる。
【００４３】
ところが、噴射予測時間（ｔ１）や点火予測時間（ｔ２）に基づいて燃料噴射制御や点火制御を行う場合には、噴射予測時間（ｔ１）や点火予測時間（ｔ２）を算出してから、実際に燃料噴射制御や点火制御を開始するまでにタイムラグが生じるという欠点がある。また、本実施形態では、噴射予測時間（ｔ１）や点火予測時間（ｔ２）の算出時点と、エンジン回転数（ｒｐｍ）の更新時点とが異なる。噴射予測時間（ｔ１）や点火予測時間（ｔ２）の算出時点において、エンジンＥの駆動状況や車両の運転状況等の入力情報と、実際の駆動状況、運転状況との差異が大きいと、噴射予測時間（ｔ１）や点火予測時間（ｔ２）を正確に算出することができない。
【００４４】
そのため、エンジン回転数（ｒｐｍ）の算出後や、噴射予測時間（ｔ１）、点火予測時間（ｔ２）の算出後に、エンジンＥの駆動状況や車両の運転状況等が大きく変動した場合、噴射予測時間（ｔ１）や点火予測時間（ｔ２）の経過時点における実際のクランク角が、噴射指示クランク角（ｄｅｇ１）、点火指示クランク角（ｄｅｇ２）と大きく異なってしまう。
【００４５】
例えば、図３（ｂ）に示すように、噴射予測時間（ｔ１）を算出した時点（Ｃ＝３５）から、ｔ１時間が経過する前に、エンジン回転数（ｒｐｍ）が急激に上昇したとする。この場合には、ｔ１時間の経過時における実際のクランク角（ｄｅｇ１ｘ）は、噴射指示クランク角（ｄｅｇ１）よりも大きい。同様に、点火予測時間（ｔ２）を算出した時点（Ｃ＝６５）から、ｔ２時間が経過する前に、エンジン回転数（ｒｐｍ）が急激に上昇した場合にも、ｔ２時間の経過時における実際のクランク角（ｄｅｇ２ｘ）は、点火指示クランク角（ｄｅｇ２）よりも大きい。
【００４６】
また、例えば、図３（ｃ）に示すように、噴射予測時間（ｔ１）を算出した時点（Ｃ＝３５）から、ｔ１時間が経過する前に、エンジン回転数（ｒｐｍ）が急激に低下したとする。この場合には、ｔ１時間の経過時における実際のクランク角（ｄｅｇ１ｙ）は、噴射指示クランク角（ｄｅｇ１）よりも小さい。同様に、点火予測時間（ｔ２）を算出した時点（Ｃ＝６５）から、ｔ２時間が経過する前に、エンジン回転数（ｒｐｍ）が急激に低下した場合にも、ｔ２時間の経過時における実際のクランク角（ｄｅｇ２ｙ）は、点火指示クランク角（ｄｅｇ２）よりも小さい。
【００４７】
このように、エンジン回転数（ｒｐｍ）が急変しているにも関わらず、噴射予測時間（ｔ１）や点火予測時間（ｔ２）の経過時に、一様に燃料噴射制御や点火制御を実行すると、エンジンＥに不具合が生じるおそれがある。また、エンジンＥに不具合が生じないようにするためには、さまざまなロジックを組むとともに、より多くの外部情報を取り込んで、制御タイミングを決定するように設定しなければならない。
【００４８】
そこで、本実施形態では、噴射予測時間（ｔ１）や点火予測時間（ｔ２）の経過時における実際のクランク角と、噴射指示クランク角（ｄｅｇ１）や点火指示クランク角（ｄｅｇ２）との差異が許容範囲を超える場合には、クランク角値更新部１１０が特定するクランク角値に基づいて、次のように燃料噴射制御および点火制御を実行する。
【００４９】
具体的には、噴射指示クランク角特定部１４０は、噴射指示クランク角（ｄｅｇ１）を特定するのと同時に、噴射指示前クランク角（ｄｅｇ１Ｆ）を示す噴射指示前クランク角値（Ｃ１Ｆ）、および、噴射指示後クランク角（ｄｅｇ１Ｂ）を示す噴射指示後クランク角値（Ｃ１Ｂ）を特定する。この噴射指示前クランク角（ｄｅｇ１Ｆ）は、クランク角値更新部１１０が更新するクランク角値のうち、噴射指示クランク角（ｄｅｇ１）になる前（本実施形態では直前）に更新されるクランク角値に対応するクランク角である。また、噴射指示後クランク角（ｄｅｇ１Ｂ）は、クランク角値更新部１１０が更新するクランク角値のうち、噴射指示クランク角（ｄｅｇ１）になった後（本実施形態では直後）に更新されるクランク角値に対応するクランク角である。
【００５０】
より詳細には、噴射指示クランク角特定部１４０は、噴射指示クランク角（ｄｅｇ１）を特定すると、特定した噴射指示クランク角（ｄｅｇ１）の下一桁を切り捨てて、噴射指示前クランク角（ｄｅｇ１Ｆ）を算出する。また、噴射指示クランク角特定部１４０は、特定した噴射指示クランク角（ｄｅｇ１）の下一桁を切り上げて、噴射指示後クランク角（ｄｅｇ１Ｂ）を算出する。こうして算出した噴射指示前クランク角（ｄｅｇ１Ｆ）および噴射指示後クランク角（ｄｅｇ１Ｂ）から、それぞれに対応する噴射指示前クランク角値（Ｃ１Ｆ）および噴射指示後クランク角値（Ｃ１Ｂ）を特定し、記憶する。
【００５１】
ここでは、クランク角値更新部１１０が１０°間隔でクランク角値を更新することから、例えば、噴射指示クランク角（ｄｅｇ１）が３８５°であれば、噴射指示前クランク角（ｄｅｇ１Ｆ）は３８０°となり、噴射指示後クランク角（ｄｅｇ１Ｂ）は３９０°となる。そして、噴射指示クランク角特定部１４０は、噴射指示前クランク角値（Ｃ１Ｆ）を記憶部に記憶し、噴射指示後クランク角（ｄｅｇ１Ｂ）に対応する噴射指示後クランク角値（Ｃ１Ｂ）を記憶部に記憶する。仮に、噴射指示前クランク角（ｄｅｇ１Ｆ）が３８０°であれば、噴射指示前クランク角値（Ｃ１Ｆ）として３８が記憶され、噴射指示後クランク角（ｄｅｇ１Ｂ）が３９０°であれば、噴射指示後クランク角値（Ｃ１Ｂ）として３９が記憶される。
【００５２】
また、点火指示クランク角特定部１６０は、噴射指示クランク角特定部１４０と同様、点火指示クランク角（ｄｅｇ２）を特定するのと同時に、点火指示前クランク角（ｄｅｇ２Ｆ）を示す点火指示前クランク角値（Ｃ２Ｆ）、および、点火指示後クランク角（ｄｅｇ２Ｂ）を示す点火指示後クランク角値（Ｃ２Ｂ）を特定し、記憶する。
【００５３】
例えば、点火指示クランク角（ｄｅｇ２）が６８５°であれば、点火指示前クランク角（ｄｅｇ２Ｆ）は６８０°となり、点火指示後クランク角（ｄｅｇ２Ｂ）は６９０°となる。なお、点火指示クランク角特定部１６０は、点火指示前クランク角（ｄｅｇ２Ｆ）に対応する点火指示前クランク角値（Ｃ２Ｆ）を記憶部に記憶し、点火指示後クランク角（ｄｅｇ２Ｂ）に対応する点火指示後クランク角値（Ｃ２Ｂ）を記憶部に記憶する。仮に、点火指示前クランク角（ｄｅｇ２Ｆ）が６８０°であれば、点火指示前クランク角値（Ｃ２Ｆ）として６８が記憶され、点火指示後クランク角（ｄｅｇ２Ｂ）が６９０°であれば、点火指示後クランク角値（Ｃ２Ｂ）として６９が記憶される。
【００５４】
そして、図３（ｂ）に示すように、噴射予測時間（ｔ１）時間の経過時における実際のクランク角（ｄｅｇ１ｘ）が、噴射指示後クランク角（ｄｅｇ１Ｂ）よりも大きい場合には、クランク角値が噴射指示後クランク角値（Ｃ１Ｂ）に更新された時点で、燃料噴射制御を開始する。つまり、クランク角値更新部１１０によって、クランク角値が噴射指示後クランク角値（Ｃ１Ｂ）に更新された時点で、燃料噴射制御が開始されていなければ、噴射指示後クランク角値（Ｃ１Ｂ）に更新された時点で燃料噴射制御を開始する。
【００５５】
同様に、点火予測時間（ｔ２）時間の経過時における実際のクランク角（ｄｅｇ２ｘ）が、点火指示後クランク角（ｄｅｇ２Ｂ）よりも大きい場合には、クランク角値が点火指示後クランク角値（Ｃ２Ｂ）に更新された時点で、点火制御を開始する。つまり、クランク角値が、クランク角値更新部１１０によって、点火指示後クランク角値（Ｃ２Ｂ）に更新された時点で、点火制御が開始されていなければ、点火指示後クランク角値（Ｃ２Ｂ）に更新された時点で点火制御を開始する。
【００５６】
一方、図３（ｃ）に示すように、噴射予測時間（ｔ１）時間の経過時における実際のクランク角（ｄｅｇ１ｙ）が、噴射指示前クランク角（ｄｅｇ１Ｆ）よりも小さい場合には、クランク角値が噴射指示前クランク角値（Ｃ１Ｆ）に更新された時点で、燃料噴射制御を開始する。つまり、噴射予測時間（ｔ１）の経過時に、クランク角値更新部１１０によってクランク角値が噴射指示前クランク角値（Ｃ１Ｆ）に更新されていなければ、噴射指示前クランク角値（Ｃ１Ｆ）に更新されるまで燃料噴射制御の開始を待機するとともに、噴射指示前クランク角値（Ｃ１Ｆ）に更新された時点で燃料噴射制御を開始する。
【００５７】
同様に、点火予測時間（ｔ２）時間の経過時における実際のクランク角（ｄｅｇ２ｙ）が、点火指示前クランク角（ｄｅｇ２Ｆ）よりも小さい場合には、クランク角値が点火指示前クランク角値（Ｃ２Ｆ）に更新された時点で、点火制御を開始する。つまり、点火予測時間（ｔ２）の経過時に、クランク角値更新部１１０によってクランク角値が点火指示前クランク角値（Ｃ２Ｆ）に更新されていなければ、点火指示前クランク角値（Ｃ２Ｆ）に更新されるまで点火制御の開始を待機するとともに、点火指示前クランク角値（Ｃ２Ｆ）に更新された時点で点火制御を開始する。
【００５８】
上記の制御処理によれば、エンジンＥの駆動状況や車両の運転状況等が急変した場合であっても、燃料噴射制御を開始するときの実際のクランク角と、噴射指示クランク角（ｄｅｇ１）との誤差は、噴射指示前クランク角（ｄｅｇ１Ｆ）と噴射指示後クランク角（ｄｅｇ１Ｂ）の範囲内に収まる。また、点火制御を開始するときの実際のクランク角と、点火指示クランク角（ｄｅｇ２）との誤差も、点火指示前クランク角（ｄｅｇ２Ｆ）と点火指示後クランク角（ｄｅｇ２Ｂ）の範囲内に収まる。
【００５９】
したがって、エンジンＥの駆動状況や車両の運転状況等が急変した場合であっても、予期せぬタイミングで燃料噴射制御や点火制御が開始されることがなく、エンジンＥに不具合が生じるおそれもない。また、上記の制御処理を実現するにあたり、特段の外部情報を取り込む必要もなく、簡素なロジックで上記の制御処理を実行することができるため、コストおよび制御負荷の上昇を抑制することができる。
【００６０】
次に、エンジン制御装置１００の具体的な処理について、図４〜図１０を用いて説明する。図４は、エンジン制御装置１００の制御処理を説明するフローチャートである。なお、図４に示す処理はタイマ割込み処理であり、エンジン制御装置１００では、タイマ割込みが生じるたびに、図４に示す処理を繰り返し実行するものとする。なお、タイマ割込みの周期は、クランクシャフト１９が１０°回転するよりも十分に短い時間に設定されている。
【００６１】
（Ｓ１０１）
タイマ割込み処理が発生すると、クランク角値更新部１１０は、まず、クランク角センサ２７から入力される検出信号、すなわち、パルス信号を解析する。
【００６２】
（Ｓ１０３）
次に、クランク角値更新部１１０は、上記ステップＳ１０１における解析結果から、クランクギヤ２５の実歯もしくは欠歯部が検出されたか、つまり、クランクシャフト１９が１０°回転したかを判断する。そして、クランクギヤ２５の実歯もしくは欠歯部が検出された（クランクシャフト１９が１０°回転した）と判断した場合にはステップＳ１０５に処理を移し、クランクギヤ２５の実歯もしくは欠歯部は検出されていないと判断した場合にはステップＳ６００に処理を移す。
【００６３】
（Ｓ１０５）
次に、クランク角値更新部１１０は、上記ステップＳ１０１の解析結果から、クランクシャフト１９が基準位置にあるかを判断する。ここでは、実歯や欠歯部の検出履歴、つまり、パルス信号の履歴等から、基準位置であるかを判断する。
【００６４】
（Ｓ１０７）
次に、クランク角値更新部１１０は、上記ステップＳ１０５の処理により、クランクシャフト１９が基準位置にあると判断したかを確認する。そして、クランクシャフト１９が基準位置にあると判断した場合にはステップＳ１０９に処理を移し、クランクシャフト１９は基準位置にないと判断した場合にはステップＳ１１１に処理を移す。
【００６５】
（Ｓ１０９）
上記ステップＳ１０７において、クランクシャフト１９が基準位置にあると判断した場合、クランク角値更新部１１０は、各種のクランク角値（クランク角値（Ｃ）、噴射指示前クランク角値（Ｃ１Ｆ）、噴射指示後クランク角値（Ｃ１Ｂ）、点火指示前クランク角値（Ｃ２Ｆ）、点火指示後クランク角値（Ｃ２Ｂ））をリセット（０に更新）する。
【００６６】
（Ｓ１１１）
上記ステップＳ１０７において、クランクシャフト１９は基準位置にないと判断した場合、クランク角値更新部１１０は、クランク角カウンタのクランク角値（Ｃ）をインクリメントする。
【００６７】
（Ｓ１１３）
エンジン制御装置１００は、上記ステップＳ１０９またはステップＳ１１１で更新されたクランク角値（Ｃ）が１７であるか、つまり、クランクシャフト１９のクランク角が、エンジン回転数（ｒｐｍ）を導出するクランク角であるかを判断する。その結果、クランク角値（Ｃ）＝１７であると判断した場合にはステップＳ１１５に処理を移し、クランク角値（Ｃ）≠１７であると判断した場合にはステップＳ１１７に処理を移す。
【００６８】
（Ｓ１１５）
上記ステップＳ１１３において、クランク角値（Ｃ）＝１７であると判断した場合には、エンジン回転数導出部１２０がエンジン回転数（ｒｐｍ）を導出して記憶する。
【００６９】
（Ｓ１１７）
上記ステップＳ１１３において、クランク角値（Ｃ）≠１７であると判断した場合には、エンジン制御装置１００は、上記ステップＳ１０９またはステップＳ１１１で更新されたクランク角値（Ｃ）が３５であるか、つまり、クランクシャフト１９のクランク角が、燃料の噴射量や噴射時期を特定するクランク角であるかを判断する。その結果、クランク角値（Ｃ）＝３５であると判断した場合にはステップＳ２００に処理を移し、クランク角値（Ｃ）≠３５であると判断した場合にはステップＳ１１９に処理を移す。
【００７０】
（Ｓ２００）
上記ステップＳ１１７において、クランク角値（Ｃ）＝３５であると判断した場合には、噴射量特定部１３０、噴射指示クランク角特定部１４０、噴射予測時間算出部１５０が、燃料の噴射量や噴射時期を特定する燃料噴射特定処理を実行する。この燃料噴射特定処理について、図５を用いて説明する。
【００７１】
図５は、燃料噴射特定処理を説明するフローチャートである。
【００７２】
（Ｓ２０１）
噴射量特定部１３０は、エンジン制御装置１００に入力されるエンジンＥの駆動状況や車両の運転状況を示す入力情報等から、燃料の噴射量を算出する。
【００７３】
（Ｓ２０３）
次に、噴射量特定部１３０は、上記ステップＳ２０１で算出した噴射量から、燃料を噴射する時間である噴射期間（ａ）を算出する。
【００７４】
（Ｓ２０５）
次に、噴射指示クランク角特定部１４０は、エンジンＥの駆動状況や車両の運転状況を示す入力情報と、噴射指示クランク角（ｄｅｇ１）とが予め対応付けられたマップを参照し、入力情報に対応する噴射指示クランク角（ｄｅｇ１）を特定する。
【００７５】
（Ｓ２０７）
次に、噴射指示クランク角特定部１４０は、上記ステップＳ２０５で特定した噴射指示クランク角（ｄｅｇ１）の下一桁を切り捨てて噴射指示前クランク角（ｄｅｇ１Ｆ）を算出する。そして、算出した噴射指示前クランク角（ｄｅｇ１Ｆ）に対応する噴射指示前クランク角値（Ｃ１Ｆ）を特定するとともに、当該噴射指示前クランク角値（Ｃ１Ｆ）を記憶部に記憶する。
【００７６】
（Ｓ２０９）
次に、噴射指示クランク角特定部１４０は、上記ステップＳ２０５で特定した噴射指示クランク角（ｄｅｇ１）の下一桁を切り上げて噴射指示後クランク角（ｄｅｇ１Ｂ）を算出する。そして、算出した噴射指示後クランク角（ｄｅｇ１Ｂ）に対応する噴射指示後クランク角値（Ｃ１Ｂ）を特定するとともに、当該噴射指示後クランク角値（Ｃ１Ｂ）を記憶部に記憶する。
【００７７】
（Ｓ２１１）
次に、噴射予測時間算出部１５０は、上記ステップＳ２０５で特定した噴射指示クランク角（ｄｅｇ１）、および、上記ステップＳ１１５で記憶されたエンジン回転数（ｒｐｍ）から、噴射予測時間（ｔ１）を算出する。
【００７８】
（Ｓ２１３）
次に、噴射予測時間算出部１５０は、上記ステップＳ２１１で算出した噴射予測時間（ｔ１）を噴射予測タイマのタイマ値（Ｔ１）としてセットする。
【００７９】
（Ｓ１１９）
図４に戻り、上記ステップＳ１１７において、クランク角値（Ｃ）≠３５であると判断した場合には、エンジン制御装置１００は、上記ステップＳ１０９またはステップＳ１１１で更新されたクランク角値（Ｃ）が６５であるか、つまり、クランクシャフト１９のクランク角が、点火時期を特定するクランク角であるかを判断する。その結果、クランク角値（Ｃ）＝６５であると判断した場合にはステップＳ３００に処理を移し、クランク角値（Ｃ）≠６５であると判断した場合にはステップＳ４００に処理を移す。
【００８０】
（Ｓ３００）
上記ステップＳ１１９において、クランク角値（Ｃ）＝６５であると判断した場合には、点火指示クランク角特定部１６０および点火予測時間算出部１７０が、点火時期を特定する点火時期特定処理を実行する。この点火時期特定処理について、図６を用いて説明する。
【００８１】
図６は、点火時期特定処理を説明するフローチャートである。
【００８２】
（Ｓ３０１）
点火指示クランク角特定部１６０は、エンジンＥの駆動状況や車両の運転状況を示す入力情報と、点火指示クランク角（ｄｅｇ２）とが予め対応付けられたマップを参照し、入力情報に対応する点火指示クランク角（ｄｅｇ２）を特定する。
【００８３】
（Ｓ３０３）
次に、点火指示クランク角特定部１６０は、上記ステップＳ３０１で特定した点火指示クランク角（ｄｅｇ２）の下一桁を切り捨てて点火指示前クランク角（ｄｅｇ２Ｆ）を算出する。そして、算出した点火指示前クランク角（ｄｅｇ２Ｆ）に対応する点火指示前クランク角値（Ｃ２Ｆ）を特定するとともに、当該点火指示前クランク角値（Ｃ２Ｆ）を記憶部に記憶する。
【００８４】
（Ｓ３０５）
次に、点火指示クランク角特定部１６０は、上記ステップＳ３０１で特定した点火指示クランク角（ｄｅｇ２）の下一桁を切り上げて点火指示後クランク角（ｄｅｇ２Ｂ）を算出する。そして、算出した点火指示後クランク角（ｄｅｇ２Ｂ）に対応する点火指示後クランク角値（Ｃ２Ｂ）を特定するとともに、当該点火指示後クランク角値（Ｃ２Ｂ）を記憶部に記憶する。
【００８５】
（Ｓ３０７）
次に、点火予測時間算出部１７０は、上記ステップＳ３０１で特定した点火指示クランク角（ｄｅｇ２）、および、上記ステップＳ１１５で記憶されたエンジン回転数（ｒｐｍ）から、点火予測時間（ｔ２）を算出する。
【００８６】
（Ｓ３０９）
次に、点火予測時間算出部１７０は、上記ステップＳ３０７で算出した点火予測時間（ｔ２）を点火予測タイマのタイマ値（Ｔ２）としてセットする。
【００８７】
（Ｓ４００）
また、上記ステップＳ１１９（図４）において、クランク角値（Ｃ）≠６５であると判断した場合には、噴射制御実行部１９０および点火制御実行部２００が、クランク角監視処理を実行する。このクランク角監視処理について、図７を用いて説明する。
【００８８】
図７は、クランク角監視処理を説明するフローチャートである。
【００８９】
（Ｓ４０１）
噴射制御実行部１９０は、上記ステップＳ１０９またはステップＳ１１１で更新されたクランク角値（Ｃ）が、噴射指示前クランク角値（Ｃ１Ｆ）であるかを判断する。その結果、Ｃ＝Ｃ１Ｆであると判断した場合にはステップＳ４０３に処理を移し、Ｃ≠Ｃ１Ｆであると判断した場合にはステップＳ４０５に処理を移す。
【００９０】
（Ｓ４０３）
上記ステップＳ４０１において、Ｃ＝Ｃ１Ｆであると判断した場合、噴射制御実行部１９０は、噴射予測タイマＴ１のタイマ値が０であるか、つまり、噴射予測時間（ｔ１）が経過しているかを判断する。その結果、噴射予測時間（ｔ１）が経過している（Ｔ１＝０）と判断した場合にはステップＳ５００に処理を移し、噴射予測時間（ｔ１）は経過していない（Ｔ１≠０）と判断した場合にはステップＳ４１１に処理を移す。
【００９１】
（Ｓ４０５）
また、上記ステップＳ４０１において、Ｃ≠Ｃ１Ｆであると判断した場合、噴射制御実行部１９０は、上記ステップＳ１０９またはステップＳ１１１で更新されたクランク角値（Ｃ）が、噴射指示後クランク角値（Ｃ１Ｂ）であるかを判断する。その結果、Ｃ＝Ｃ１Ｂであると判断した場合にはステップＳ４０７に処理を移し、Ｃ≠Ｃ１Ｂであると判断した場合にはステップＳ４１１に処理を移す。
【００９２】
（Ｓ４０７）
上記ステップＳ４０５において、Ｃ＝Ｃ１Ｂであると判断した場合、噴射制御実行部１９０は、噴射予測タイマＴ１のタイマ値が０よりも大きいか、つまり、噴射予測時間（ｔ１）が経過していないかを判断する。その結果、噴射予測時間（ｔ１）が経過していない（Ｔ１>０）と判断した場合にはステップＳ４０９に処理を移し、噴射予測時間（ｔ１）が経過している（Ｔ１＝０）と判断した場合にはステップＳ４１１に処理を移す。
【００９３】
（Ｓ４０９）
上記ステップＳ４０７において、Ｔ１>０であると判断した場合、噴射制御実行部１９０は、噴射予測タイマＴ１のタイマ値をリセットする。
【００９４】
（Ｓ５００）
クランク角値（Ｃ）が噴射指示前クランク角値（Ｃ１Ｆ）となったとき（Ｓ４０１のＹＥＳ）に、噴射予測時間（ｔ１）が既に経過している場合（Ｓ４０３のＹＥＳ）、または、クランク角値（Ｃ）が噴射指示後クランク角値（Ｃ１Ｂ）となったとき（Ｓ４０５のＹＥＳ）に、噴射予測時間（ｔ１）が未だ経過していない場合（Ｓ４０７のＹＥＳ）には、噴射制御実行部１９０は、燃料噴射装置２１から燃料噴射を開始させる燃料噴射開始処理を実行する。この燃料噴射開始処理について、図８を用いて説明する。
【００９５】
図８は、燃料噴射開始処理を説明するフローチャートである。
【００９６】
（Ｓ５０１）
噴射制御実行部１９０は、燃料噴射装置２１を制御して燃料の噴射を開始する。
【００９７】
（Ｓ５０３）
噴射制御実行部１９０は、上記ステップＳ２０３で算出した噴射期間（ａ）を、噴射期間タイマのタイマ値（Ｔａ）としてセットする。
【００９８】
（Ｓ４１１）
図７に戻り、上記ステップＳ４０１〜ステップＳ５００の処理に続いて、点火制御実行部２００は、上記ステップＳ１０９またはステップＳ１１１で更新されたクランク角値（Ｃ）が、点火指示前クランク角値（Ｃ２Ｆ）であるかを判断する。その結果、Ｃ＝Ｃ２Ｆであると判断した場合にはステップＳ４１３に処理を移し、Ｃ≠Ｃ２Ｆであると判断した場合にはステップＳ４１５に処理を移す。
【００９９】
（Ｓ４１３）
上記ステップＳ４１１において、Ｃ＝Ｃ２Ｆであると判断した場合、点火制御実行部２００は、点火予測タイマＴ２のタイマ値が０であるか、つまり、点火予測時間（ｔ２）が経過しているかを判断する。その結果、点火予測時間（ｔ２）が経過している（Ｔ２＝０）と判断した場合にはステップＳ４２１に処理を移し、点火予測時間（ｔ２）は経過していない（Ｔ２≠０）と判断した場合にはステップＳ６００（図４）に処理を移す。
【０１００】
（Ｓ４１５）
また、上記ステップＳ４１１において、Ｃ≠Ｃ２Ｆであると判断した場合、点火制御実行部２００は、上記ステップＳ１０９またはステップＳ１１１で更新されたクランク角値（Ｃ）が、点火指示後クランク角値（Ｃ２Ｂ）であるかを判断する。その結果、Ｃ＝Ｃ２Ｂであると判断した場合にはステップＳ４１７に処理を移し、Ｃ≠Ｃ２Ｂであると判断した場合にはステップＳ６００（図４）に処理を移す。
【０１０１】
（Ｓ４１７）
上記ステップＳ４１５において、Ｃ＝Ｃ２Ｂであると判断した場合、点火制御実行部２００は、点火予測タイマＴ２のタイマ値が０よりも大きいか、つまり、点火予測時間（ｔ２）が経過していないかを判断する。その結果、点火予測時間（ｔ２）が経過していない（Ｔ２>０）と判断した場合にはステップＳ４１９に処理を移し、点火予測時間（ｔ２）が経過している（Ｔ２＝０）と判断した場合にはステップＳ６００（図４）に処理を移す。
【０１０２】
（Ｓ４１９）
上記ステップＳ４１７において、Ｔ２>０であると判断した場合、点火制御実行部２００は、点火予測タイマＴ２のタイマ値をリセットする。
【０１０３】
（Ｓ４２１）
クランク角値（Ｃ）が点火指示前クランク角値（Ｃ２Ｆ）となったとき（Ｓ４１１のＹＥＳ）に、点火予測時間（ｔ２）が既に経過している場合（Ｓ４１３のＹＥＳ）、または、クランク角値（Ｃ）が点火指示後クランク角値（Ｃ２Ｂ）となったとき（Ｓ４１５のＹＥＳ）に、点火予測時間（ｔ２）が未だ経過していない場合（Ｓ４１７のＹＥＳ）には、点火制御実行部２００は、点火装置２３を制御して燃焼室５において点火を行い、ステップＳ６００（図４）に処理を移す。
【０１０４】
（Ｓ６００）
図４に戻り、上記のクランク角監視処理（Ｓ４００）が実行されると、もしくは、上記ステップＳ１０３において、クランクギヤ２５の実歯もしくは欠歯部は検出されていないと判断した場合には、噴射制御実行部１９０が燃料噴射管理処理を実行する。この燃料噴射管理処理について、図９を用いて説明する。
【０１０５】
図９は、燃料噴射管理処理を説明するフローチャートである。
【０１０６】
（Ｓ６０１）
噴射制御実行部１９０は、噴射予測タイマＴ１のタイマ値が０よりも大きいか、つまり、噴射予測時間ｔ１の計時中であるかを判断する。その結果、Ｔ１>０と判断した場合にはステップＳ６０３に処理を移し、Ｔ１＝０と判断した場合にはステップＳ６０９に処理を移す。
【０１０７】
（Ｓ６０３）
上記ステップＳ６０１において、Ｔ１>０であると判断した場合、予測時間監視部１８０が、噴射予測タイマＴ１のタイマ値を減算する。
【０１０８】
（Ｓ６０５）
次に、噴射制御実行部１９０は、上記ステップＳ６０３で噴射予測タイマＴ１を更新した結果、タイマ値が０になったかを判断する。その結果、Ｔ１＝０と判断した場合にはステップＳ６０７に処理を移し、Ｔ１≠０と判断した場合にはステップＳ７００（図４）に処理を移す。
【０１０９】
（Ｓ６０７）
噴射制御実行部１９０は、現在のクランク角値（Ｃ）が、噴射指示前クランク角値（Ｃ１Ｆ）以上であるかを判断する。その結果、Ｃ１Ｆ≦Ｃであると判断した場合にはステップＳ５００に処理を移し、Ｃ１Ｆ≦Ｃではないと判断した場合にはステップＳ７００（図４）に処理を移す。
【０１１０】
（Ｓ５００）
上記ステップＳ６０７において、Ｃ１Ｆ≦Ｃであると判断した場合には、上記した燃料噴射開始処理（図８）を実行し、ステップＳ７００（図４）に処理を移す。
【０１１１】
（Ｓ６０９）
また、上記ステップＳ６０１において、Ｔ１>０ではないと判断した場合、噴射制御実行部１９０は、噴射期間タイマＴａのタイマ値が０よりも大きいか、つまり、噴射期間ａの計時中であるかを判断する。その結果、Ｔａ>０と判断した場合にはステップＳ６１１に処理を移し、Ｔａ＝０と判断した場合にはステップＳ７００（図４）に処理を移す。
【０１１２】
（Ｓ６１１）
上記ステップＳ６０９において、Ｔａ>０であると判断した場合、噴射制御実行部１９０は、噴射期間タイマＴａのタイマ値を減算する。
【０１１３】
（Ｓ６１３）
次に、噴射制御実行部１９０は、上記ステップＳ６１１で噴射期間タイマＴａを更新した結果、タイマ値が０になったかを判断する。その結果、Ｔａ＝０と判断した場合にはステップＳ６１５に処理を移し、Ｔａ≠０と判断した場合にはステップＳ７００（図４）に処理を移す。
【０１１４】
（Ｓ６１５）
上記ステップＳ６１３において、Ｔａ＝０であると判断した場合には、燃料噴射装置２１を制御して燃料の噴射を停止し、ステップＳ７００（図４）に処理を移す。
【０１１５】
（Ｓ７００）
図４に戻り、上記の燃料噴射管理処理（Ｓ６００）が実行されると、次に、点火制御実行部２００が点火時期管理処理を実行する。この点火時期管理処理について、図１０を用いて説明する。
【０１１６】
図１０は、点火時期管理処理を説明するフローチャートである。
【０１１７】
（Ｓ７０１）
点火制御実行部２００は、点火予測タイマＴ２のタイマ値が０よりも大きいか、つまり、点火予測時間ｔ２の計時中であるかを判断する。その結果、Ｔ２>０と判断した場合にはステップＳ７０３に処理を移し、Ｔ２＝０と判断した場合にはタイマ割込み処理を終了する。
【０１１８】
（Ｓ７０３）
上記ステップＳ７０１において、Ｔ２>０であると判断した場合、予測時間監視部１８０は、点火予測タイマＴ２のタイマ値を減算する。
【０１１９】
（Ｓ７０５）
次に、点火制御実行部２００は、上記ステップＳ７０３で点火予測タイマＴ２を更新した結果、タイマ値が０になったかを判断する。その結果、Ｔ２＝０と判断した場合にはステップＳ７０７に処理を移し、Ｔ２≠０と判断した場合にはタイマ割込み処理を終了する。
【０１２０】
（Ｓ７０７）
点火制御実行部２００は、現在のクランク角値（Ｃ）が、点火指示前クランク角値（Ｃ２Ｆ）以上であるかを判断する。その結果、Ｃ２Ｆ≦Ｃであると判断した場合にはステップＳ７０９に処理を移し、Ｃ２Ｆ≦Ｃではないと判断した場合にはタイマ割込み処理を終了する。
【０１２１】
（Ｓ７０９）
上記ステップＳ７０７において、Ｃ２Ｆ≦Ｃであると判断した場合には、点火制御実行部２００は、点火装置２３を制御して燃焼室５において点火を行い、タイマ割込み処理を終了する。
【０１２２】
上記の図４〜図１０に示す処理により、燃料噴射制御および点火制御の開始時期を細かに設定しつつ、エンジンＥの駆動状況や車両の運転状況等が急変した場合であっても、噴射および点火のタイミングのずれを所定の範囲内に収めることができる。
【０１２３】
次に、変形例のエンジン制御装置１００ａについて説明する。
【０１２４】
図１１は、変形例のエンジンＥａを示す機能ブロック図である。この変形例のエンジンＥａは、上記実施形態のエンジンＥにおけるエンジン制御装置１００に代えて、エンジン制御装置１００ａを設けた点が異なる。また、エンジン制御装置１００ａは、上記のエンジン制御装置１００の各機能部に加えて、補正部２１０としても機能する点のみが異なり、その他の構成は全て同じである。したがって、ここでは、補正部２１０について説明し、その他の構成については説明を省略する。
【０１２５】
補正部２１０は、噴射指示クランク角特定部１４０、噴射予測時間算出部１５０、点火指示クランク角特定部１６０、点火予測時間算出部１７０が特定した噴射指示クランク角（ｄｅｇ１）、噴射予測時間（ｔ１）、点火指示クランク角（ｄｅｇ２）、点火予測時間（ｔ２）等を補正する。
【０１２６】
図１２は、クランク角と補正時期との関係を説明する図である。図１２（ａ）に示すように、例えば、クランク角値更新部１１０の更新するクランク角値（Ｃ）が任意の値であるＣｘとなったところで、噴射指示クランク角（ｄｅｇ１）および噴射予測時間（ｔ１）を算出する。このとき、噴射予測時間（ｔ１）が長い場合には、噴射予測時間（ｔ１）が短い場合よりも、燃料噴射制御が開始されるまでの間に、エンジンＥａの駆動状況や車両の運転状況等が急変する可能性が高くなる。
【０１２７】
そこで、エンジン制御装置１００ａにおいては、噴射指示クランク角（ｄｅｇ１）および噴射予測時間（ｔ１）が算出された後、噴射予測時間（ｔ１）が経過するよりも前に、入力情報等に応じて噴射予測時間（ｔ１）を補正もしくは再算出する。より詳細には、クランク角値更新部１１０によって更新されるクランク角値（Ｃ）が、クランク角値（Ｃ）＝Ｃｘ点において記憶された噴射指示前クランク角値（Ｃ１Ｆ）よりも前の任意のクランク角値（Ｃ）＝Ｃｙに更新されたところで、補正部２１０が補正処理を実行する。ここでは、クランク角値（Ｃ）のうち、噴射指示前クランク角値（Ｃ１Ｆ）の直前の値を補正クランク角値（Ｃｙ）とする。
【０１２８】
補正部２１０は、クランク角値（Ｃ）が補正クランク角値（Ｃｙ）に更新されると、まず、エンジンＥａの駆動状況、より厳密には、エンジン回転数（ｒｐｍ）が、前回算出されたエンジン回転数（ｒｐｍ）に対して閾値以上に変動しているかを確認する。その結果、エンジン回転数（ｒｐｍ）の変動が閾値未満であれば、Ｃｘ点で算出した噴射予測時間（ｔ１）に基づいて、そのまま処理を継続する。一方、エンジン回転数（ｒｐｍ）が、前回算出されたエンジン回転数（ｒｐｍ）に対して閾値以上に変動している場合には、クランク角値（Ｃ）が補正クランク角値（Ｃｙ）になった時点におけるエンジンＥａの駆動状況や車両の運転状況等に基づいて、噴射指示クランク角（ｄｅｇ１）を特定しなおす。
【０１２９】
そして、補正部２１０は、補正クランク角値（Ｃｙ）になった時点で特定した噴射指示クランク角（ｄｅｇ１）に基づいて、噴射予測時間ｔ１を算出するとともに、噴射指示前クランク角値（Ｃ１Ｆ）および噴射指示後クランク角値（Ｃ１Ｂ）を再特定する。以後は、補正部２１０によって再度特定された噴射予測時間（ｔ１）や、噴射指示前クランク角値（Ｃ１Ｆ）および噴射指示後クランク角値（Ｃ１Ｂ）に基づいて、上記と同様に、燃料噴射制御が実行される。
【０１３０】
図１３は、補正処理を説明するフローチャートである。なお、この変形例では、例えば、図４に示す処理のうち、ステップＳ１１３の処理の直前において、クランク角値（Ｃ）＝Ｃｙであるかを判断し、Ｃ＝Ｃｙと判断した場合には補正処理に処理を移し、Ｃ≠Ｃｙと判断した場合にはステップＳ１１３に処理を移す。
【０１３１】
（Ｓ８０１）
補正処理において、補正部２１０は、まず、最新のエンジン回転数（ｒｐｍ）を確認する。
【０１３２】
（Ｓ８０３）
次に、補正部２１０は、上記ステップＳ８０１で確認した最新のエンジン回転数（ｒｐｍ）が、先にエンジン回転数導出部１２０が記憶したエンジン回転数（ｒｐｍ）、すなわち、上記実施形態におけるＣ＝１７（図２参照）で記憶したエンジン回転数（ｒｐｍ）に対して、所定の閾値以上変動しているかを判断する。その結果、変動が閾値以上であると判断した場合にはステップＳ８０５に処理を移し、変動は閾値未満であると判断した場合には当該補正処理を終了する。
【０１３３】
（Ｓ８０５）
次に、補正部２１０は、エンジンＥａの最新の駆動状況等、最新の入力情報に基づいて、噴射指示クランク角（ｄｅｇ１）を特定する。また、特定した噴射指示クランク角（ｄｅｇ１）から、噴射指示前クランク角値（Ｃ１Ｆ）および噴射指示後クランク角値（Ｃ１Ｂ）を特定し記憶する。
【０１３４】
（Ｓ８０７）
次に、補正部２１０は、上記ステップＳ８０５で特定した噴射指示クランク角（ｄｅｇ１）、および、最新のエンジン回転数（ｒｐｍ）から、噴射予測時間（ｔ１）を再算出する。
【０１３５】
（Ｓ８０９）
次に、補正部２１０は、上記ステップＳ８０７で算出した噴射予測時間（ｔ１）を噴射予測タイマＴ１のタイマ値としてセットする。
【０１３６】
上記のように、補正部２１０が補正処理を実行することにより、エンジンＥａの駆動状況や車両の運転状況等が変動した場合にも、燃料噴射制御をより最適なタイミングで実行することができる。なお、この変形例では、燃料噴射制御について説明したが、点火制御についても上記と同様の補正処理を実行することで、点火制御のタイミングを最適なものにすることができる。
【０１３７】
以上、添付図面を参照しつつ本発明の好適な実施形態について説明したが、本発明は上述した実施形態に限定されないことは勿論であり、特許請求の範囲に記載された範疇における各種の変更例又は修正例についても、本発明の技術的範囲に属することは言うまでもない。
【０１３８】
上記実施形態では、エンジン制御装置１００が燃料噴射装置２１および点火装置２３を制御する場合について説明したが、エンジン制御装置１００の制御対象となる装置（被制御装置）は、燃料噴射装置２１および点火装置２３のいずれか一方のみでもよい。また、エンジン制御装置１００の制御対象となる被制御装置は、燃料噴射装置２１および点火装置２３とは別の装置、例えば、吸気バルブ１５や排気バルブ１７をバルブリフトするための装置であってもよい。いずれにしても、エンジン制御装置１００の制御対象となる被制御装置は上記実施形態に限定されるものではない。
【産業上の利用可能性】
【０１３９】
本発明は、燃料噴射装置や点火装置等の被制御装置を制御するエンジン制御装置に利用できる。
【符号の説明】
【０１４０】
５  燃焼室
１９  クランクシャフト
２１  燃料噴射装置
２３  点火装置
２７  クランク角センサ（信号出力部）
１００、１００ａ  エンジン制御装置
１１０  クランク角値更新部
１４０  噴射指示クランク角特定部（指示クランク角特定部）
１５０  噴射予測時間算出部（予測時間算出部）
１６０  点火指示クランク角特定部（指示クランク角特定部）
１７０  点火予測時間算出部（予測時間算出部）
１８０  予測時間監視部
１９０  噴射制御実行部（制御実行部）
２００  点火制御実行部（制御実行部）
２１０  補正部
Ｅ、Ｅａ  エンジン
【図１】
2015155679.tif 000003
【図２】
2015155679.tif 000004
【図３】
2015155679.tif 000005
【図４】
2015155679.tif 000006
【図５】
2015155679.tif 000007
【図６】
2015155679.tif 000008
【図７】
2015155679.tif 000009
【図８】
2015155679.tif 000010
【図９】
2015155679.tif 000011
【図１０】
2015155679.tif 000012
【図１１】
2015155679.tif 000013
【図１２】
2015155679.tif 000014
【図１３】
2015155679.tif 000015