IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社デンソーの特許一覧

<>
  • 特開-エンジン制御装置 図1
  • 特開-エンジン制御装置 図2
  • 特開-エンジン制御装置 図3
  • 特開-エンジン制御装置 図4
  • 特開-エンジン制御装置 図5
  • 特開-エンジン制御装置 図6
  • 特開-エンジン制御装置 図7
  • 特開-エンジン制御装置 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024101697
(43)【公開日】2024-07-30
(54)【発明の名称】エンジン制御装置
(51)【国際特許分類】
   F02D 45/00 20060101AFI20240723BHJP
【FI】
F02D45/00 362
F02D45/00 345
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2023005758
(22)【出願日】2023-01-18
(71)【出願人】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(74)【代理人】
【識別番号】110000578
【氏名又は名称】名古屋国際弁理士法人
(72)【発明者】
【氏名】堤 裕理
【テーマコード(参考)】
3G384
【Fターム(参考)】
3G384AA01
3G384DA47
3G384ED08
3G384FA58Z
(57)【要約】
【課題】角度クロック生成部が正常であることを保証するための技術を提供する。
【解決手段】エンジン制御装置10は、実出力時刻取得部(16、S110)と、理論値時刻算出部71と、正常判定部72と、を備える。実出力時刻取得部は、制御信号が出力された時刻である実出力時刻を取得する。理論値時刻算出部は、実出力時刻の理論値である理論値時刻を、少なくとも、直近のクランク信号と直近1つ前のクランク信号との時間間隔である直近のインターバル時間に基づいて算出する。正常判定部は、実出力時刻と理論値時刻との差が予め定められた異常時閾値未満である場合に、角度クロック部が正常であると判定する。
【選択図】図1
【特許請求の範囲】
【請求項1】
車両に搭載されるエンジン制御装置であって、
クランク軸の回転に伴って所定のクランク角度間隔でパルスとして発生するクランク信号が検出されると、検出された今回の前記クランク信号と前回の前記クランク信号との時間間隔を、予め設定された逓倍数で除算した周期の逓倍クロックを角度クロックとして、前記角度クロックのカウント数である角度カウント値を出力する角度クロック部(13)と、制御信号に従って制御を行う制御対象に前記角度カウント値及び予め設定されたクランク軸の回転角度位置としての要求角度に基づいて前記制御信号を出力する実行部(14)と、を含む出力部(17)から前記制御信号が出力された時刻である実出力時刻、を取得するように構成された実出力時刻取得部(16、S110)と、
前記実出力時刻以前に検出された前記クランク信号のうち、前記実出力時刻に最も近いタイミングで検出された前記クランク信号を直近のクランク信号、2番目に近いタイミングで検出された前記クランク信号を直近1つ前のクランク信号として、前記実出力時刻の理論値である理論値時刻を、少なくとも、前記直近のクランク信号と前記直近1つ前のクランク信号との時間間隔である直近のインターバル時間に基づいて算出するように構成された理論値時刻算出部(16、S160、S170)と、
前記実出力時刻と前記理論値時刻との差が予め定められた異常時閾値未満である場合に、前記角度クロック部が正常であると判定するように構成された正常判定部(16、S190)と、
を備える、エンジン制御装置(10)。
【請求項2】
請求項1に記載のエンジン制御装置であって、
前記角度クロック部は、前記クランク信号が検出されると、前記角度カウント値によって示される前記クランク軸の回転角度位置が、検出された前記今回のクランク信号に対応する前記クランク軸の回転角度位置未満である場合に、前記逓倍クロックよりも周期の短い高速クロックを前記角度クロックとして、前記高速クロックのカウント数を前記角度カウント値として出力し、前記角度カウント値を、前記今回のクランク信号に対応するクランク軸の回転角度位置を示すカウント数まで変化させた後に、再び前記逓倍クロックを前記角度クロックとするハイレート機能を有し、
当該エンジン制御装置は、
前記制御信号が出力されたことが検出されると、前記車両が加速しているか否かを判定するように構成された加速判定部(S150)を更に備え、
前記理論値時刻算出部は、前記車両が加速していると判定された場合に、前記車両が加速していないと判定された場合とは異なる態様で、前記理論値時刻を算出する、エンジン制御装置。
【請求項3】
請求項2に記載のエンジン制御装置であって、
前記加速判定部は、前記制御信号が出力されたことが検出されると、前記直近のクランク信号に対応する前記クランク軸の回転角度位置を取得し、前記直近のクランク信号に対応する前記クランク軸の回転角度位置が前記要求角度よりも大きい場合に、前記車両が加速していると判定する、エンジン制御装置。
【請求項4】
請求項2に記載のエンジン制御装置であって、
前記理論値時刻算出部(S160)は、前記車両が加速していないと判定された場合に、前記直近のインターバル時間を前記クランク角度間隔で除算した1°CA時間を算出し、前記直近のクランク信号に対応するクランク軸の回転角度位置と前記要求角度との差分と前記1°CA時間とを乗算した時間を算出し、前記直近のクランク信号が発生した時刻に、前記乗算した時間を加算した時刻を、前記理論値時刻として算出する、エンジン制御装置。
【請求項5】
請求項2に記載のエンジン制御装置であって、
前記理論値時刻算出部(S170)は、加速が生じていると判定された場合に、前記ハイレート機能が開始されたと推定されるクランク軸の回転角度位置である加速開始角度位置を算出し、直近のクランク信号が発生した時刻に、前記要求角度と前記加速開始角度位置との角度差を前記高速クロックに基づいてカウントするために要する時間を加算した時刻を、前記理論値時刻として算出する、エンジン制御装置。
【請求項6】
請求項5に記載のエンジン制御装置であって、
前記理論値時刻算出部は、前記直近1つ前のクランク信号よりも前に検出された前記クランク信号のうち、前記直近1つ前のクランク信号に最も近いタイミングで検出された前記クランク信号を直近2つ前のクランク信号とし、前記直近1つ前のクランク信号と前記直近2つ前のクランク信号との時間間隔を1つ前のインターバル時間とし、前記直近のインターバル時間の前記1つ前のインターバル時間に対する比をインターバル比とし、前記クランク角度間隔に前記インターバル比を乗じた角度を通常角度間隔として、前記直近1つ前のクランク信号に対応するクランク軸の回転角度位置に、前記通常角度間隔を加算した角度を、前記加速開始角度位置として算出する、エンジン制御装置。
【請求項7】
請求項2に記載のエンジン制御装置であって、
前記制御信号が出力されたことが検出されると、前記直近のクランク信号に対応するクランク軸の回転角度位置と、前記要求角度との差が、前記クランク角度間隔よりも大きい場合に、前記角度クロック部が異常であると判定するように構成された初期判定部(16、S140)、を更に備え、
前記理論値時刻算出部は、前記初期判定部によって前記角度クロック部が異常であると判定されなかった場合に前記理論値を算出する、エンジン制御装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、エンジンのクランク軸の回転に伴って発生するクランク信号よりも周期の短い角度クロックに基づいてエンジン制御を行う技術に関する。
【背景技術】
【0002】
エンジンのクランク軸の回転に伴って発生するクランク信号に対応するクランク軸の回転角度位置に基づいてエンジンを制御する技術が知られている。
例えば、下記特許文献1に記載された技術では、クランク軸の回転に応じて所定の角度間隔でパルスとして発生するクランク信号よりも短い周期の角度クロックに基づいて、高精度にエンジン制御を実行する、という技術が提案されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2008-190344号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
角度クロックはクランク信号の周期(すなわち、パルス間隔)を所定の逓倍数で除算した周期の信号である。上述の技術では、角度クロックのカウント数に対応するクランク軸の回転角度位置が所定角度になったタイミングで、エンジン制御を行うための制御信号が出力される。
【0005】
しかしながら、角度クロックを生成し該角度クロックをカウントする角度クロック部に異常が発生すると、異常である角度クロックに基づいてエンジン制御が行われるため、適切なタイミングでエンジン制御が行われないおそれがある。適切なタイミングでエンジン制御が行われていることを保証するためには、少なくとも角度クロック部が正常であることを保証する必要がある。
【0006】
本開示の1つの局面は、角度クロック生成部が正常であることを保証するための技術を提供することにある。
【課題を解決するための手段】
【0007】
本開示の一態様は、車両に搭載されるエンジン制御装置(10)である。エンジン制御装置は、実出力時刻取得部(16、S110)と、理論値時刻算出部(16、S160、S170)と、正常判定部(16、S190)と、を備える。検出部は、角度クロック部(13)と、実行部(14)と、を含む出力部(17)から、制御信号が出力されたことを検出するように構成される。
【0008】
角度クロック部は、クランク信号が検出されると、検出された今回のクランク信号と前回のクランク信号との時間間隔を、予め設定された逓倍数で除算した周期の逓倍クロックを角度クロックとして、角度クロックのカウント数である角度カウント値を出力する。クランク信号は、クランク軸の回転に伴って所定のクランク角度間隔でパルスとして発生する信号である。実行部は、角度カウント値及び予め設定されたクランク軸の回転角度位置としての要求角度に基づいて制御信号に従って制御を行う制御対象に制御信号を出力する。
【0009】
実出力時刻取得部は、制御信号が出力された時刻である実出力時刻を取得するように構成される。理論値時刻算出部は、実出力時刻の理論値である理論値時刻を、少なくとも、直近のクランク信号と直近1つ前のクランク信号との時間間隔である直近のインターバル時間に基づいて算出するように構成される。直近のクランク信号は、実出力時刻以前に検出されたクランク信号のうち、実出力時刻に最も近いタイミングで検出されたクランク信号である。
【0010】
直近1つ前のクランク信号は、実出力時刻以前に検出されたクランク信号のうち、実出力時刻に2番目に近いタイミングで検出されたクランク信号である。正常判定部は、実出力時刻と理論値時刻との差が予め定められた異常時閾値未満である場合に、角度クロック部が正常であると判定するように構成される。
【0011】
このような構成によれば、実際に制御信号が出力された実出力時刻が理論値時刻に等しい場合は、制御信号の生成にかかわる出力部が正常である、と判定できる。つまり、出力部に含まれる角度クロック部も実行部も両方ともが正常である、と判定できる。従って、角度クロック部単体についても正常であると保証することができる。
【図面の簡単な説明】
【0012】
図1】マイコンの構成を示すブロック図である。
図2】第1入力タイマの構成を示すブロック図である。
図3】角度タイマの構成を示すブロック図である。
図4】エンジン制御部の構成を示すブロック図である。
図5】クランク割込処理のフローチャートである。
図6】要求割込処理のフローチャートである。
図7】角度タイマモニタ部の作動を説明するタイミングチャートである。
図8図7に示すタイミングチャートの1点鎖線で囲った部分の部分拡大図である。
【発明を実施するための形態】
【0013】
以下、図面を参照しながら、本開示の実施形態を説明する。なお、以下において「一致」とは、厳密な意味での一致に限るものではなく、同様の効果を奏するのであれば厳密に一致でなくてもよい。
【0014】
[実施形態]
[1.全体構成]
図1に示すマイクロコンピュータ(以下、マイコン10)は、車両に搭載された電子制御装置(以下、ECU)にて使用されており、制御対象に制御信号を出力して各種のエンジン制御を実行する。ECUは、Electronic Control Unitの略である。エンジン制御には、例えば、燃料噴射装置による燃料噴射、点火装置による燃料の点火制御等が含まれ得る。制御対象としては、燃料噴射装置や点火装置等が含まれ得る。
【0015】
マイコン10は、時刻タイマ11と、第1入力タイマ12と、角度タイマ13と、出力タイマ14と、第2入力タイマ15と、エンジン制御部16と、を備える。
<時刻タイマ>
時刻タイマ11は、フリーランカウンタを含む。フリーランカウンタは、一定周期のクロック信号をカウントすることによって時間を計測するカウンタである。フリーランカウンタの値(以下、時刻カウント値)は、オーバーフローすると0に戻るように構成されている。時刻タイマ11は、時刻カウント値を、第1入力タイマ12と第2入力タイマ15とに出力する。
【0016】
<第1入力タイマ>
第1入力タイマ12は、時刻カウント値と、クランク信号と、が入力される。クランク信号は、クランク軸の回転に伴って所定の角度間隔で発生するパルスである。以下では、クランク信号(すなわち、パルス)が発生する所定の角度間隔をクランク角度間隔ともいう。第1入力タイマ12は、検出信号をクランク割込み要求としてエンジン制御部16に出力する。検出信号は、クランク信号の立ち上がりエッジ又は立ち上がりエッジを検出したことを示す信号である。
【0017】
また、第1入力タイマ12は、クランクエッジ時刻、クランクカウント数を、エンジン制御部16に出力する。クランクエッジ時刻は、クランク信号の立ち上がりエッジ又は立下りエッジの発生時刻である。クランクカウント数は、クランク信号の立ち上がりエッジ又は立下りエッジをカウントした数である。また、第1入力タイマ12は、クランク時間間隔を、角度タイマ13とエンジン制御部16とに出力する。
【0018】
クランク時間間隔は、検出されたクランク信号(以下、今回のクランク信号ともいう)と前回のクランク信号との時間間隔である。前回のクランク信号とは、今回のクランク信号よりも前(すなわち、過去)に検出されたクランク信号のうち、今回のクランク信号に最も近いクランク信号をいう。以下では、クランク信号(すなわち、パルス)の立ち上がりエッジ又は立ち下がりエッジをクランクエッジともいう。
【0019】
なお、クランク軸は、クランク軸と共に回転するロータを有する。ロータは、外周に所定の角度間隔で突出する複数の歯を有し、これらの複数の歯は、歯が所定数(例えば、本実施形態では2つ)だけ連続して欠落した欠け歯部を有する。クランク軸センサは、内燃機関の作動に伴ってクランク軸が所定の方向に回転している間、歯の通過を検出する毎に、パルスを出力する。このため、パルス列としてのクランク信号(以下、クランク信号列ともいう)においては、パルスの発生間隔が他のパルスの発生間隔よりも長い欠け歯信号部が生じる。
【0020】
発生したクランク信号(すなわち、パルス)が、クランク軸の1回転(すなわち、360°CA)のうちのいずれの回転角度位置で発生したかを、欠け歯信号部に基づいて判定することができる。本実施形態では、クランク信号列において、クランク信号としてのパルスは、欠け歯信号部を除いて、6°CAごとの均等な角度間隔で発生する。また、クランク信号列において、欠け歯信号部の直前のクランクエッジと、欠け歯信号部直後のクランクエッジとの角度間隔は、欠け歯以外の角度間隔(すなわち、6°CA)×(欠け歯の数+1)で表され、本実施形態では、18°CA間隔となる。CAは、Crank Angleの略である。
【0021】
上述のクランク角度間隔は、クランクに設けられた歯における角度間隔(すなわち、本実施形態では6°CA。欠け歯部においては18°CA)をいう。換言すれば、クランク角度間隔は、クランク信号列(すなわち、パルス列)におけるクランク信号(すなわち、パルス)の角度間隔である。
【0022】
具体的には、例えば、第1入力タイマ12は、図2に示すように、エッジ検出部121とキャプチャレジスタ122と、インクリメント部123と、エッジカウンタ124と、インクリメント部125と、エッジカウンタ126と、を備える。
【0023】
エッジ検出部121は、クランク信号(すなわち、パルス)においてクランクエッジを検出する。エッジ検出部121は、クランクエッジを検出すると、クランク信号が発生したことを示す検出信号を、クランク割込み要求としてエンジン制御部16に出力する。キャプチャレジスタ122は、エッジ検出部121がクランク信号の検出信号を出力すると、そのときの時刻カウント値(すなわち、そのときのフリーランカウンタのカウント数)をクランクエッジ時刻として出力する。
【0024】
インクリメント部123は、エッジ検出部121が検出信号を出力すると、エッジカウンタ124の値に1を足した値(すなわち、+1した値)をエッジカウンタ124に設定する。エッジカウンタ124は、クランクエッジのカウント数をクランクカウント数としてエンジン制御部16に出力する。
【0025】
インクリメント部125は、フリーランカウンタで用いられる一定周期のクロック信号の立ち上がりエッジ又は立下りエッジを検出すると、エッジカウンタ126の値に1を足した値(すなわち、+1した値)をエッジカウンタ126に設定する。エッジカウンタ126は、エッジ検出部121が検出信号を出力すると、そのときまでにカウントしたカウント数をインターバル時間として出力する。エッジカウンタ126は、その後、カウント数をリセット(すなわち、0に設定)し、フリーランカウンタで用いられる一定周期のクロック信号のカウントを再開する。
【0026】
つまり、エッジカウンタ126は、エッジ検出部121にてクランク信号が検出される毎に、検出された今回のクランク信号と前回のクランク信号との時間間隔を、クランク時間間隔として検出する。エッジ検出部121が検出信号を出力するときまでにエッジカウンタ126によってカウントされたカウント数が、クランク時間間隔に相当する。
【0027】
上述のように本実施形態では、クランク角度間隔は、6°CAに相当する。なお、欠け歯信号部では、クランク角度間隔は18°CAである。車両が加速すると、エンジン回転数が上昇し、クランク時間間隔は短くなり、車両が減速すると、エンジン回転数が低下し、クランク時間間隔は長くなる。
【0028】
なお、第1入力タイマ12は、クランク信号列(すなわち、パルス列)において欠け歯信号部の出現(例えば、欠け歯部信号部の始まり及び終わり)を検出し、検出結果をエンジン制御部16に出力するように構成されてもよい。また、エンジン制御部16は、クランク信号列において欠け歯信号部が出現する毎に、上述のクランクカウント数をリセットするように構成されてもよい。この場合、クランクカウント数は、欠け歯信号部から何番目に発生したパルスであるかを示す数値であり得る。なお、クランクカウント数のリセットは、欠け歯信号部が出現する毎のタイミングに限定されるものではなく、予め設定された任意のタイミングにて実行され得る。
【0029】
<角度タイマ>
角度タイマ13は、クランク信号に基づいて角度クロックを生成し、角度カウント値を出力する。角度カウント値は角度クロックのカウント数である。角度クロックは、クランク信号におけるクランク角度間隔よりも小さい角度間隔で、クランク軸の回転角度位置の変化を推定するための信号である。本実施形態では、角度クロックは、クランク軸の回転角度位置の変化を、クランク角度間隔である6°CAよりも小さい1/16°CAの分解能で推定可能に設定されている。角度クロックは、クランク軸の回転角度位置が1/16°CA変化したと推定される毎に1回、パルス状の信号として出力される。本実施形態の角度タイマ13は、後述するハイレート機能及びホールド機能を備える。
【0030】
例えば、角度タイマ13は、図3に示すように、角度クロックを生成する角度クロック生成部31と、角度クロックをカウントするインクリメント部32及び角度カウンタ33と、を備える。インクリメント部32は、角度クロック生成部31が角度クロックを出力すると、角度カウンタ33の値に1を足した値(すなわち、+1した値)を角度カウンタ33に設定する。角度カウンタ33は、角度クロックのカウント数(すなわち、角度クロックの立下りエッジ又は立下りエッジのカウント数)を角度カウント値としてエンジン制御部16に出力する。
【0031】
角度クロック生成部31は、逓倍クロック生成部311と、高速クロック部312と、クロック選択部313と、インクリメント部314と、現在クロック数カウンタ315と、目標クロック数設定部316と、クロック出力要否算出部317と、角度クロック出力部318と、インクリメント部32と、角度カウンタ33と、を備える。
【0032】
逓倍クロック生成部311は、第1入力タイマ12から入力されたクランク時間間隔を、例えば逓倍クロック生成部311が有するレジスタに設定する。逓倍クロック生成部311は、このクランク時間間隔を、311が有する他のレジスタに予め設定された逓倍数Nで除算した時間を周期とする逓倍クロックを生成する。例えば、本実施形態では、逓倍数Nは、N=6°CA/(1/16)°CA=96である。逓倍クロック生成部311は、生成した逓倍クロックをクロック選択部313に出力する。
【0033】
高速クロック部312は、高速クロックを生成し、生成した高速クロックをクロック選択部313に出力する。高速クロックは、逓倍クロックの周期よりもかなり短い周期のクロックである。本実施形態では、高速クロックの周期は0.25μsecである。なお、高速クロックの周期は、0.25μsecに限定されるものではなく、逓倍クロックの周期よりも短い任意の周期であり得る。
【0034】
クロック選択部313は、逓倍クロック及び高速クロックのいずれか一方を、角度クロックとして、クロック出力要否算出部317からの指示に基づいて選択的に出力する。クロック選択部313は、角度クロックを、角度クロック出力部318とインクリメント部314とに出力する。
【0035】
角度クロック出力部318は、クロック出力要否算出部317からの指示に基づいて、角度クロックのインクリメント部32への出力を、実行又は停止する。
インクリメント部314は、クロック選択部313が角度クロックを出力すると、現在クロック数カウンタ315の値に1を足した(すなわち、+1した)値を現在クロック数カウンタ315に設定する。
【0036】
現在クロック数カウンタ315は、角度クロックのカウント数(すなわち、角度クロックの立ち上がりエッジ又は立下りエッジのカウント数)を現在クロック数としてクロック出力要否算出部317に出力する。以下では、現在クロック数カウンタ315のカウント値を現在クロック数ともいう。現在クロック数は、第1入力タイマ12から検出信号が出力される毎に、すなわち、クランク信号(すなわち、クランクエッジ)が発生する毎に、リセットされる。ここでいうリセットとは、0に設定されることをいう。現在クロック数カウンタ315に対する現在クロック数のリセットは、例えば、エンジン制御部16によって実行されてもよい。
【0037】
目標クロック数設定部316では、第1入力タイマ12から検出信号が出力される毎に、すなわち、クランク信号(すなわち、クランクエッジ)が発生する毎に、目標クロック数がリセットされる。ここでいうリセットとは、新たな目標クロック数を設定することをいう。新たな目標クロック数を設定するとは、すなわち、目標クロック数を新たな所定値に設定することをいう。目標クロック数は、例えば、目標クロック数設定部316が有するレジスタ等に設定される。
【0038】
目標クロック数は、第1入力タイマ12から検出信号が出力される要因となった今回のクランク信号と次のクランク信号とのクランク角度間隔を、分解能である1/16°CAで除算した値である。
【0039】
上述のように、クランク角度間隔は、本実施形態では、欠け歯信号部を除いて、6°CAである。欠け歯信号部における角度間隔は18°CAである。つまり、本実施形態では、分解能は1/16°CAであることから、欠け歯信号部を除いて、目標クロック数は、所定値としての96(すなわち、6°CA÷(1/16°CA)=96)に設定される。欠け歯信号部に対しては、目標クロック数は、所定値としての288(すなわち、96×3=288)に設定される。目標クロック数設定部316への目標クロック数の設定は、例えば、エンジン制御部16によって実行されてもよい。
【0040】
目標クロック数設定部316は、第1入力タイマ12から検出信号が入力されると、目標クロック数がリセットされる前に、既にレジスタに設定されていた目標クロック数をクロック出力要否算出部317のレジスタに出力する。そして、その後に、目標クロック数設定部316では、目標クロック数設定部316のレジスタに新たな目標クロック数が設定される。ここでいう、既にレジスタに設定されていた目標クロック数とは、すなわち、前回のクロック信号が発生したときに新たに設定された目標クロックであり、前回のクロック信号と今回のクロック信号とのクランク角度間隔を分解能によって除した値である。
【0041】
このようにして、第1入力タイマ12から今回の検出信号が入力されると、目標クロック数設定部316によって、クロック出力要否算出部317のレジスタに目標クロック数が設定される。
【0042】
クロック出力要否算出部317は、第1入力タイマ12から検出信号が入力されると、換言すれば、クランク信号(すなわち、クランクエッジ)が発生すると、そのときの現在クロック数カウンタ315のカウント値と、設定されている目標クロック数とを比較する。クロック出力要否算出部317は、比較結果に基づいて、クロック選択部313と角度クロック出力部318とに指示を出力する。
【0043】
クロック出力要否算出部317は、第1入力タイマ12から検出信号が入力されたときに、現在クロック数カウンタ315のカウント値=目標クロック数である場合、クロック選択部313に逓倍クロックを角度クロックとして出力させる指示を出力する。且つ、クロック出力要否算出部317は、角度クロック出力部318に角度クロックを出力させる指示を出力する。
これにより、角度カウンタ33では、角度クロックがカウントされ、クランク軸の回転角度位置を示すカウント数が角度カウント値として、継続して、出力される。
【0044】
<ホールド機能>
ここで、クロック出力要否算出部317は、第1入力タイマ12からの検出信号の入力に拘わらず、現在クロック数>目標クロック数になると、角度クロック出力部318に角度クロックの出力を停止させる指示を出力する。クロック出力要否算出部317は、次に第1入力タイマ12から検出信号が入力されるまで、すなわち、次にクランク信号(すなわち、クランクエッジ)が発生するまで、角度クロック出力部318に角度クロックの出力を停止させる。なお、クロック出力要否算出部317は、クロック選択部313に対しては、逓倍クロックを角度クロックとして出力させる指示を出力したまま、である。
【0045】
現在クロック数カウンタ315のカウント値>目標クロック数となる状況は、車両が減速したときに生じる。つまり、過去のクランク時間間隔に基づく逓倍クロックが角度クロックとして出力された後に、車両が減速すると、次に第1入力タイマ12から検出信号が入力される前に、現在クロック数カウンタ315のカウント値が目標クロック数に到達してしまう状況が生じる。そこで、このような状況が生じた場合、次に第1入力タイマ12から検出信号が入力されるまでの間は、角度カウンタ33は、カウント値を、インクリメントすること無く、固定する。このようにして、角度カウンタ33のカウント値が固定される機能をホールド機能という。
【0046】
なお、角度カウンタ33のカウント値が固定されている間も、現在クロック数カウンタ315による角度クロック(すなわち、ここでは逓倍クロック)のカウントは継続している。そして、クロック出力要否算出部317は、次に第1入力タイマ12から検出信号が入力されると、角度クロック出力部318に角度クロックの出力を実行させる指示を出力する。つまり、次のクランク信号(すなわち、次のクランクエッジ)が発生すると、上述のように目標クロック数及び現在クロック数がリセットされ、更に、角度カウンタ33は、角度クロック(すなわち、逓倍クロック)のカウントを再開する。
【0047】
<ハイレート機能>
一方で、クロック出力要否算出部317は、第1入力タイマ12から検出信号が入力されたときに、現在クロック数<目標クロック数である場合、クロック選択部313に、逓倍クロックに代えて高速クロックを角度クロックとして出力させる指示を出力する。なお、クロック出力要否算出部317は、角度クロック出力部318に対しては、角度クロックを出力させる指示を出力したまま、である。
【0048】
第1入力タイマ12から検出信号が入力されたときに、換言すれば、クランク信号(すなわち、クランクエッジ)が発生したときに、現在クロック数カウンタ315のカウント値<目標クロック数となる状況は、車両が加速したときに生じる。つまり、過去のクランク時間間隔に基づく逓倍クロックが角度クロックとして出力された後に、車両が加速すると、次に第1入力タイマ12から検出信号が入力されたときに、現在クロック数が目標クロック数に到達していない状況が生じる。そこで、角度クロックが高速クロックに切り替えられ、角度カウンタ33は、高速クロックに基づいて、強制的に、高速で、今回の目標カウント数まで、カウント数を増加させるように作動する。換言すれば、角度カウンタ33は、高速クロックに基づいて、今回の目標カウント数まで、カウント数を追いつかせる。
【0049】
角度クロックとしての高速クロックをカウントする角度カウンタ33による1カウントは、角度クロックとしての逓倍クロックをカウントする場合と同様に、1/16°CAのクランク軸の回転角度位置を示す。つまり、高速クロックの角度間隔も、逓倍クロックの角度間隔と同様に、1/16°CAである。
【0050】
このようにして、今回のクランク信号が検出されたときに、角度カウント値が、今回のクランク信号の回転角度位置を示すカウント数に達していない場合に、角度カウンタ33のカウント値が高速クロックに基づいて強制的にカウントアップされる機能をハイレート機能という。換言すれば、ハイレート機能は、クランク信号が検出されると、角度カウント値によって示されるクランク軸の回転角度位置が、検出された今回のクランク信号に対応するクランク軸の回転角度位置未満である場合に、高速クロックに基づいて強制的に、角度カウント値を、今回のクランク信号に対応するクランク軸の回転角度位置を示すカウント数まで変化させる機能である、ともいえる。
【0051】
そして、クロック出力要否算出部317は、角度カウンタ33のカウント値が目標クロック数に等しくなるタイミングで、クロック選択部313に逓倍クロックを選択させる指示を出力する。これにより、角度カウンタ33は、再び、逓倍クロックを角度クロックとしてカウントを行う。
【0052】
角度カウント値は、それぞれにクランク軸の回転角度位置(例えば、1回転における回転角度位置)が対応づけられており、角度カウント値によってクランク軸の回転角度位置を特定することができる。角度カウント値が示すクランク軸の回転角度位置は、上述のように、角度間隔(すなわち、6°CAの角度間隔)を逓倍数N(すなわち、N=96)で除算した値(6°CA/96=1/16°CA)を分解能とする回転角度位置である。
【0053】
<出力タイマ>
出力タイマ14は、角度タイマ13(すなわち、具体的には角度カウンタ33)から、角度カウント値が継続して入力されると共に、エンジン制御部16から要求角度が入力される。出力タイマ14は、角度カウント値が示すクランク軸の回転角度位置が要求角度に一致すると、制御対象に対して制御信号を出力するタイマ回路である。制御信号は、制御対象に制御を行わせるための信号である。
【0054】
要求角度は、予め設定されたクランク軸の回転角度位置であって、制御信号に従って制御対象に制御を行わせるための制御信号を出力するタイミングを、クランク軸の回転角度位置で表わしている。要求角度は、例えば15°CA、22°CA等といったように、クランク軸の回転角度位置で表わされても良い。角度カウント値が示すクランク軸の回転角度位置は、本実施形態では、角度カウント値に1/16°CAを乗算した値として特定可能である。
【0055】
又は、要求角度は、例えば、240(すなわち、15°CA÷1/16°CA)、352(すなわち、22°CA÷1/16°CA)等といったように、クランク軸の回転角度位置を示す角度カウント値として表されても良い。
【0056】
要求角度は、エンジン制御部16の出力要求部62によって、出力タイマ14が有するレジスタ等に設定される。このように、出力タイマ14は、角度クロックに基づいて推定されるクランク軸の回転角度位置に基づいて、制御信号を出力するタイマであるといえる。制御信号が出力されると、制御信号が出力されたタイミングで、制御信号に伴う制御(すなわち、各種のエンジン制御)が実行される。
【0057】
<第2入力タイマ>
第2入力タイマ15は、時刻タイマ11から時刻カウント値が継続して入力されると共に、出力タイマ14から制御信号が入力される。第2入力タイマ15は、出力タイマ14から制御信号が出力されたときの時刻タイマ値を実出力時刻としてエンジン制御部16に出力する。
【0058】
<エンジン制御部>
エンジン制御部16は、図4に示すように、CPU65と、RAM、ROM等の半導体メモリ(以下、メモリ66)と、を中心に構成されている。エンジン制御部16は、CPU65がメモリ66に格納されているプログラムを実行することで実現される機能の構成として、図1に示すように、クランク割込制御部61と、出力要求部62と、角度タイマモニタ部63と、を備える。エンジン制御部16は、要求生成部60を備えていてもよい。
【0059】
要求生成部60は、車両の運転状態(例えば、速度、加速度、アクセル踏度等)に応じて、要求角度を算出し、メモリ66に記憶する。
クランク割込制御部61は、第1入力タイマ12においてクランク信号が検出されると、クランク割込処理を実行する。クランク割込制御部61は、クランク割込処理によって、第1入力タイマ12においてクランク信号が検出される毎に、検出された今回のクランク信号に対応するクランク軸の回転角度位置と、直前のクランク時間間隔、及び、直前1つ前のクランク時間間隔等とを対応付けて、メモリ66に記憶する。
【0060】
直前のクランク時間間隔は、検出された今回のクランク信号と、前回のクランク信号との時間間隔である。直前1つ前のクランク時間間隔は、前回のクランク信号と、前々回のクランク信号との時間間隔である。クランク割込制御部61は、更に、今回のクランク信号に対応するクランク軸の回転角度位置と、1°CA時間とを対応づけてメモリ66に記憶してもよい。
【0061】
出力要求部62は、要求生成部60が算出した要求角度を取得し、該要求角度を出力タイマ14が有するレジスタ等の記憶装置に設定する。
角度タイマモニタ部63は、後述する要求割込処理を実行し、角度タイマ13が正常であるか否か、を判定する。換言すれば、角度タイマモニタ部63は、角度タイマ13にて角度クロックをカウントする角度カウンタ33(すなわち、上述の1/16°CA毎にカウント数をカウントアップするカウンタ)が、正常であるか否かを判定する、とも言える。角度タイマモニタ部63は、理論値時刻算出部71と、比較部72と、備える。要求割込処理におけるS160、S170が理論値時刻算出部71としての処理に相当する。要求割込処理におけるS180が比較部72としての処理に相当する。
【0062】
[2.処理]
[2.1 クランク割込処理]
マイコン10のクランク割込制御部61が実行するクランク割込処理について、図5のフローチャートを用いて説明する。クランク割込処理は、第1入力タイマ12が検出信号を出力する毎に(すなわち、クランク信号が発生してクランクエッジが検出される毎に)実行される割込処理である。
【0063】
S10においてクランク割込制御部61は、メモリ66に既に記憶されている、後述する直前のクランク時間間隔を、直前1つ前のクランク時間間隔として記憶する。
S20においてクランク割込制御部61は、第1入力タイマ12から出力されたクランク時間間隔を取得し、取得したクランク時間間隔を直前のクランク時間間隔としてメモリ66に記憶する。
【0064】
S30においてクランク割込制御部61は、第1入力タイマ12にて検出された今回のクランク信号に対応するクランク軸の回転角度位置を特定する。本実施形態では、クランク角度間隔は欠け歯部を除いて6°であることから、クランク軸の回転角度位置は0°CA、6°CA、12°CA、18°CA、24°CA…等といった、6°CA間隔で表される。
【0065】
クランク割込制御部61は、例えば、第1入力タイマ12から出力されるクランクカウント数に基づいて、クランク信号列に出現する欠け歯信号部から何番目に発生したパルスであるかによって、クランク軸の回転角度位置を特定してもよい。なお、クランク軸の回転角度位置の特定方法は上述の方法に限定されるものではなく、マイコン10の構成に応じて種々の特定方法が用いられ得る。
【0066】
S40においてクランク割込制御部61は、本実施形態では、目標クロック数設定部316に目標クロック数を設定する。本実施形態では、クランク割込制御部61は、クランク信号列において、欠け歯信号部を除くクランク信号が検出された場合(以下、定常時ともいう)、96を目標クロック数として設定する。また、クランク割込制御部61は、クランク信号列において欠け歯信号部の出現(例えば、欠け歯信号部の始まり)が検出された場合には、目標クロック数を定常時の目標クロック数の3倍(すなわち、288)に設定する。また、クランク割込制御部61は、クランク信号において欠け歯信号部の終わりが検出された場合に、目標クロック数を定常時の目標クロック数である96に戻す。そして、クランク割込制御部61は、以上で、本クランク割込処理を終了する。
【0067】
[2.2 要求割込処理]
エンジン制御部16の角度タイマモニタ部63が実行する要求割込処理について、図6のフローチャートを用いて説明する。角度タイマモニタ部63は、第2入力タイマ15から制御信号の出力が検出された場合に、要求割込処理を実行する。
【0068】
S110において角度タイマモニタ部63は、実出力時刻を取得する。実出力時刻は、出力タイマ14から制御対象に制御信号が出力された時刻である。本実施形態では、例えば、燃料噴射装置や点火装置等といった制御を実行する実行装置を制御対象として、これらの制御対象に、燃料噴射や点火を指示する信号としての制御信号が出力された時刻を、実出力時刻としてもよい。
【0069】
なお、出力時刻は上述の時刻に限定されるものではない。例えば、実出力時刻は、出力タイマ14において、角度タイマ13から出力された角度カウント値に対応するクランク軸の回転角度位置と、要求角度とが一致した時刻であってもよい。又は、出力タイマ14は、燃料噴射装置や点火装置等といった実行装置に燃料噴射や点火を命令する命令信号を出力する出力回路を制御対象として、制御対象としての出力回路に、命令信号の出力を指示する制御信号を出力するように構成されてもよい。そして、この場合、命令信号の出力を指示する制御信号が出力された時刻を、実出力時刻としてもよい。
【0070】
S120において角度タイマモニタ部63は、要求生成部60が算出した要求角度を取得する。
S130において角度タイマモニタ部63は、直近のクランク信号に対応するクランク軸の回転角度位置を特定する。直近のクランク信号は、実出力時刻以前に検出されたクランク信号のうち、実出力時刻に最も近いタイミングで検出されたクランク信号である。角度タイマモニタ部63は、本ステップの実行時において上述のクランク割込処理によってメモリ66記憶されている、上述の今回のクランク信号に対応するクランク軸の回転角度位置を、直近のクランク信号に対応するクランク軸の回転角度位置として特定する。
【0071】
S140において角度タイマモニタ部63は、S130にて特定した直近のクランク信号に対応するクランク軸の回転角度位置と、要求角度との差が、クランク角度間隔未満であるか否かを判定する。ここでいうクランク角度間隔は、例えば、欠け歯部以外のクランク角度間隔(すなわち、6°CA)であるものとする。
【0072】
ここで、角度タイマモニタ部63は、直近のクランク信号に対応するクランク軸の回転角度位置と要求角度との差が、クランク角度間隔以上である場合、処理をS200へ移行させる。角度タイマモニタ部63は、S200において、角度カウンタ33ひいては角度タイマ13に異常が生じていると判定し、本要求割込処理を終了する。一方で、角度タイマモニタ部63は、直近のクランク信号に対応するクランク軸の回転角度位置と要求角度との差が、クランク角度間隔未満である場合、処理をS150へ移行させる。
【0073】
S150において角度タイマモニタ部63は、車両が加速しているか否かを、換言すれば、ハイレート機能が実行されたか否かを、判定する。具体的には、角度タイマモニタ部63は、直近のクランク信号に対応するクランク軸の回転角度位置が、要求角度以下であるか否かを判定する。角度タイマモニタ部63は、直近のクランク信号に対応するクランク軸の回転角度位置が要求角度以下である場合に、加速が生じていない(すなわち、ハイレート機能が実行されていない)と判定する。
【0074】
また、角度タイマモニタ部63は、直近のクランク信号に対応するクランク軸の回転角度位置が要求角度よりも大きい場合に、加速が生じている(すなわち、ハイレート機能が実行されている)と判定する。ここで、角度タイマモニタ部63は、加速が生じていない(すなわち、ハイレート機能が実行されていない)と判定された場合に、処理をS160に移行する。また、角度タイマモニタ部63は、加速が生じている(すなわち、ハイレート機能が実行されている)と判定された場合に、処理をS170に移行する。
【0075】
S160において角度タイマモニタ部63は、ハイレートを考慮しない理論値時刻(以下、通常理論値時刻)を算出し、処理をS180に移行する。理論値時刻は、実出力時刻の理論値である。具体的には、角度タイマモニタ部63は、(1)式に基づいて通常理論値時刻を算出する。
【0076】
通常理論値時刻=tc_(i)+(T01/AI)×(Ar-Ac_(i)) (1)
上式において、tc_(i)は、直近のクランク信号が発生した時刻(すなわち、直近のクランク信号のクランクエッジ時刻)である。角度タイマモニタ部63は、S160が実行された時点において、メモリ66に記憶されているクランクエッジ時刻をtc_(i)として取得する。
【0077】
Ac_(i)は、直近のクランク信号に対応するクランク軸の回転角度位置であり、Arは要求角度であり、AIはクランク角度間隔(例えば、6°CA)である。T01は、直近インターバル時間である。直近インターバル時間T01は、直近のクランク信号と直近1つ前のクランク信号との時間間隔である。直近1つ前のクランク信号は、実出力時刻以前に検出されたクランク信号のうち、実出力時刻に2番目に近いタイミングで検出されたクランク信号である。角度タイマモニタ部63は、本ステップの実行時に、メモリ66に記憶されている直前のクランク時間間隔を、直近インターバル時間T01として取得する。
【0078】
つまり、角度タイマモニタ部63は、直近のクランク信号と直近1つ前のクランク信号との時間間隔である直近インターバル時間T01をクランク角度間隔AIで除算した1°CA時間を算出する。そして、角度タイマモニタ部63は、直近のクランク信号に対応するクランク軸の回転角度位置Ac_(i)と要求角度Arとの差分(Ar-Ac_(i))に1°CA時間を乗算した時間を算出する。そして、角度タイマモニタ部63は、直近のクランク信号が発生した時刻tc_(i)に、乗算した時間を加算した時刻を、通常理論値時刻として算出する。
【0079】
S170において角度タイマモニタ部63は、ハイレートを考慮した理論値時刻(以下、ハイレート理論値時刻)を算出し、処理をS180に移行する。角度タイマモニタ部63は、直近のクランク信号が発生した時刻tc_(i)に、ハイレート時間Ihを加算した時刻を、理論値時刻(以下、ハイレート理論値時刻)として算出する。ハイレート時間Ihは、要求角度Arと加速開始角度位置Asとの角度差(Ar-As)を高速クロックに基づいてカウントするために要する時間である。加速開始角度位置Asは、加速が開始されたと推定されるクランク軸の回転角度位置である。換言すれば、加速開始角度位置Asは、ハイレート機能が開始されたと推定されるクランク軸の回転角度位置である。
【0080】
まず、角度タイマモニタ部63は、直近1つ前のクランク信号に対応するクランク軸の回転角度位置Ac_(i-1)に、ハイレート機能が実行されていないと推定される角度間隔である通常角度間隔Inを加算した角度を、加速開始角度位置Asとして算出する。具体的には、角度タイマモニタ部63は、(2)式に基づいて加速開始角度位置Asを算出する。
【0081】
加速開始角度位置As=Ac_(i-1)+In
=Ac_(i-1)+AI×R
=Ac_(i-1)+AI×(T01/T12) (2)
なお、以下でいう1つ前のインターバル時間T12とは、直近1つ前のクランク信号と直近2つ前のクランク信号との時間間隔をいう。
【0082】
直近2つ前のクランク信号とは、直近1つ前のクランク信号よりも前に検出されたクランク信号のうち、直近1つ前のクランク信号に最も近いタイミングで検出されたクランク信号をいう。角度タイマモニタ部63は、本ステップの実行時においてメモリ66に記憶されている、直前1つ前のクランク時間間隔を、1つ前のインターバル時間T12として取得する。
【0083】
なお、上述のクランク割込制御部61は、検出されたクランク信号に対応するクランク軸の回転角度位置を、時系列にメモリ66に記憶していてもよい。角度タイマモニタ部63は、直近1つ前のクランク信号に対応するクランク軸の回転角度位置Ac_(i-1)を、メモリ66から取得してもよい。
【0084】
Inは通常角度間隔である。通常角度間隔Inは、ハイレート機能が生じていない状態で作動した角度間隔を表す。通常角度間隔Inは、クランク角度間隔AIにインターバル比Rを乗じて算出される(すなわち、In=AI×R)。インターバル比Rは、直近のインターバル時間T01の、1つ前のインターバル時間T12に対する比である(すなわち、R=T01/T12)。このように、角度タイマモニタ部63は、直近1つ前のクランク信号に対応するクランク軸の回転角度位置Ac_(i-1)に、通常角度間隔Inを加算した角度を、加速開始角度位置Asとして算出する。
【0085】
そして、角度タイマモニタ部63は、(3)式に基づいてハイレート理論値時刻を算出する。
ハイレート理論値時刻=tc_(i)+Ih
=tc_(i)+((Ar―As)/res)×Vh (3)
Ihはハイレート機能が実行された時間を示すハイレート時間であり、resは高速クロックの分解能であり、Vhは高速クロックのクロック周期である。ハイレート時間Ihは、要求角度Arと加速開始角度位置Asとの差分を高速クロックの分解能resで除算した値と、高速クロックの速度Vhとを、乗算した値として算出される。例えば、本実施形態では、分解能resは1/16°CAであり、高速クロックの速度Vhは0.25μsecである。
【0086】
S180において角度タイマモニタ部63は、角度カウンタ33に異常が生じているか否かを判定する。具体的には、角度タイマモニタ部63は、S160又はS170にて算出した理論値時刻(すなわち通常理論値時刻、又はハイレート理論値時刻)と、実測値時刻との差が所定の閾値(以下、異常時閾値)未満であるか否かを判定する。異常時閾値は、例えば、相対的に0に近い値であり得る。つまり、角度タイマモニタ部63は、理論値時刻と実測値時刻とが一致しているか否か、を判定する。ここで、角度タイマモニタ部63は、理論値時刻(すなわち通常理論値時刻、又はハイレート理論値時刻)と、実測値時刻との差が異常時閾値未満である場合に処理をS190に移行させる。一方で、角度タイマモニタ部63は、理論値時刻(すなわち通常理論値時刻、又はハイレート理論値時刻)と、実測値時刻との差が異常時閾値以上である場合に処理をS200に移行させる。
【0087】
S190において角度タイマモニタ部63は、角度カウンタ33は正常であると判定し、判定結果をメモリ66に記憶する。角度タイマモニタ部63は、判定結果を車両に搭載された他のECUに送信してもよい。そして、角度タイマモニタ部63は、以上で要求割込処理を終了する。
【0088】
S200において角度タイマモニタ部63は、角度カウンタ33は異常であると判定し、判定結果をメモリ66に記憶する。角度タイマモニタ部63は、判定結果を車両に搭載された他のECUに送信してもよい。そして、角度タイマモニタ部63は、以上で要求割込処理を終了する。
【0089】
[2.3 作動]
本実施形態のマイコン10による作動を、図7及び図8に基づいて説明する。上述のように、角度タイマ13では、角度カウンタ33は、1/16°CAずつ、カウント値をカウントアップする。クランク信号毎に(すなわち、クランクエッジ毎に)目標となる所定のクランク軸の回転角度位置が予め定められている。車両が加速した場合、過去のクランク時間間隔に基づく逓倍クロックによる角度カウント値は、加速が反映されないため、実際のクランク軸の回転角度位置に対応するカウント数に対して不足する。このため、角度タイマ13は、逓倍クロックに代えて高速クロックを用いて角度カウンタ33をカウントアップする上述のハイレート機能を実行する。
【0090】
[2.3.1 定速走行時]
図7において、要求角度Ar=15°CAである場合を説明する。出力タイマ14は、角度カウント値と要求角度Ar=15°CAとが一致すると、制御信号を出力する。角度タイマモニタ部63は、制御信号が出力されたことをきっかけとして要求割込処理を開始する。角度タイマモニタ部63は、第2入力タイマ15から実測値時刻を取得する。角度タイマモニタ部63は、直近のクランク信号に対応するクランク軸の回転角度位置Ac(i)(すなわち、12°CA)≦要求角度Ar(すなわち、15°CA)であることから、車両が加速していないことを特定する。すなわち、角度タイマモニタ部63は、ハイレート機能が作動していないことを特定する。角度タイマモニタ部63は、通常理論値時刻を算出する。
【0091】
ここで、要求角度Arは、直近のクランク信号のクランクエッジ(すなわち、12°CAのクランクエッジ)から+3°CAした位置である。つまり、要求角度Arと直近のクランク信号に対応するクランク軸の回転角度位置Ac_(i)との差分(Ar-Ac_(i))は、3°CAである。直近インターバル時間T01は、4msec(すなわち、区間1の時間間隔)である。クランク角度間隔AIは6°CAである。このため、(4[msec]/6[°CA])×3[°CA]=2msecを、直近のクランク信号のクランクエッジ時刻(すなわち、Ac_(i)は12°CAのクランクエッジ時刻)に加算した時刻が、通常理論値時刻として算出される。角度タイマモニタ部63は、通常理論値時刻と実測値時刻との差が所定の異常時閾値未満である場合、角度タイマ13は正常であると判定する。
【0092】
[2.3.2 加速時]
図7において、要求角度Ar=22°CAである場合を説明する。出力タイマ14は、角度カウント値と要求角度Ar=22°CAとが一致すると、制御信号を出力する。角度タイマモニタ部63は、制御信号が出力されたことをきっかけとして要求割込処理を開始する。角度タイマモニタ部63は、第2入力タイマ15から実測値時刻を取得する。角度タイマモニタ部63は、直近のクランク信号に対応するクランク軸の回転角度位置(すなわち、24°CA)>要求角度(すなわち、22°CA)であることから、車両が加速していること、すなわち、ハイレート機能が作動していることを特定する。角度タイマモニタ部63は、ハイレート理論値時刻を算出する。
【0093】
まず、角度タイマモニタ部63は、過去の2インターバル(例えば、図7における区間3及び区間2)、の比率から、角度カウンタ33がどこまではハイレート機能によって作動せずにカウント数をカウントしたか、を算出する。すなわち、角度タイマモニタ部63は、ハイレート機能が生じていなかった角度間隔である通常角度間隔Inを算出する。直近のインターバル時間T01は2msec(すなわち、区間3の時間間隔)であり、1つ前のインターバル時間T12は4msec(すなわち、区間2の時間間隔)である。
【0094】
このことから、インターバル比Rは、R=2msec/4msec=0.5=50%と算出される。通常角度間隔Inは、6°CA×0.5=3°CAと算出される。開始角度Asは、直近1つ前のクランク信号に対応するクランク軸の回転角度位置Ac_(i-1)(すなわち、18°CA)に通常角度間隔In(すなわち、3°CA)を加算して、21°CAと算出される。つまり、ハイレート機能が実行された時間であるハイレート時間Ihは、((22°CA-21°CA)/(1/16°CA))×0.25μsecとして算出される。
【0095】
そして、直近のクランク信号のクランクエッジ時刻(すなわち、24°CAのクランクエッジ時刻)にハイレート時間Ihを加算した時刻が、ハイレート理論値時刻として算出される。ハイレート時間Ihでは、図8に示すように、角度カウンタ値は、0.25μsec毎に1/16°CAずつ、カウントアップされる。
【0096】
ここで、比較例として、図7において、要求角度Arが22°CAであるときに、加速が生じたこと、すなわち、ハイレート機能が作動したことを考慮せず、過去の定速走行時のクランク時間間隔に基づいて理論値時刻を算出する場合について説明する。以下では、本比較例において算出する理論時刻を、仮理論値時刻という。図7に、定速走行時のクランク時間間隔(すなわち、区間2の時間間隔)である4msecに基づいて算出した仮理論値時刻を、二重丸にて示す。
【0097】
仮理論値時刻は、18°CAのクランクエッジ時刻+4msec×((22°CA-18°CA)/6°CA)で算出される時刻である。このように算出された仮理論値時刻は、角度タイマ13が正常であったとしても、加速時(すなわち、ハイレート機能動作時)には、実測値時刻との間に差が生じる。この差が異常時閾値以上である場合は、角度タイマ13は、正常であったとしても、異常であると誤って判定されてしまうおそれがある。
【0098】
本実施形態のマイコン10では、ハイレート機能が作動したと推定される場合には、ハイレート機能が作動したことを考慮したハイレート理論値時刻が算出される。このため、角度タイマ13が正常であるにもかかわらず、異常であると誤って判定されてしまうことが抑制される。
【0099】
[3.効果]
以上詳述した実施形態によれば、以下の効果を奏する。
(3a)マイコン10では、エンジン制御部16の角度タイマモニタ部63は、出力部17から制御信号が出力されたことを検出すると、S110では、実出力時刻を取得する。実行部は、角度クロックのカウント数である角度カウント値を出力する角度タイマ13と、角度カウント値及び所定の要求角度に基づいて制御対象に制御信号を出力する出力タイマ14とを含む。角度タイマモニタ部63は、S160、S170では、理論値時刻を、少なくとも、直近のクランク信号と直近1つ前のクランク信号との時間間隔である直近のインターバル時間に基づいて算出する。角度タイマモニタ部63は、S190では、実出力時刻と理論値時刻との差が所定の閾値である異常時閾値未満である場合に、角度クロック部が正常であると判定する。
【0100】
上述の実施形態のマイコン10によれば、角度タイマ13と、出力タイマ14とを含む出力部17から実際に制御信号が出力された実出力時刻が、理論値時刻に等しい場合は、制御信号の生成にかかわる出力部17が正常である、と判定できる。つまり、出力部17に含まれる角度タイマ13も出力タイマ14も両方が正常である、と判定できる。従って、角度タイマ13単体についても正常であると保証することができる。
【0101】
(3b)角度タイマ13は、ハイレート機能を有する。ハイレート機能において、角度タイマ13は、第1入力タイマ12にて今回のクランク信号が検出されると、角度カウント値に対応するクランク軸の回転角度位置が、検出された今回のクランク信号に対応するクランク軸の回転角度位置未満である場合に、逓倍クロックに代えて高速クロックを角度クロックとする。そして、角度タイマ13は、該角度クロック(すなわち、高速クロック)のカウント数を角度カウント値として出力する。角度タイマ13は、高速クロックによって強制的に、該角度カウント値を、今回のクランク信号に対応するクランク軸の回転角度位置を表すカウント数まで変化させた後に、再び逓倍クロックを前記角度クロックとする。
【0102】
角度タイマモニタ部63は、S150では、制御信号が出力されたことが検出されると、車両が加速しているか否かを判定する。角度タイマモニタ部63は、S160及びS170では、車両が加速していると判定された場合に、前記車両が加速していないと判定された場合とは異なる態様で、理論値時刻を算出する。
【0103】
上述の実施形態のマイコン10によれば、車両が加速して角度タイマ13においてハイレート機能が実行された場合には、車両が加速しておらず角度タイマ13においてハイレート機能が実行されていない場合とは異なる態様で、理論値時刻を算出する。一律に同様の態様で理論値時刻を算出するのではなく車両の加速の有無に応じて理論値時刻を算出できるので、角度タイマ13が正常であるか否かを、車両の加速の有無に応じて精度よく判定することができる。
【0104】
例えば上述の比較例のように、加速が生じてハイレート機能が作動しているにもかかわらず、定速走行時の過去のインターバル時間に基づいて仮理論値時刻を算出すると、角度タイマ13が、正常であるにもかかわらず、異常であると誤って判定されるおそれがある。本実施形態のマイコン10では、加速が生じてハイレート機能が作動したと推定される場合には、ハイレート機能が作動したことを考慮したハイレート理論値時刻が算出される。
【0105】
このため、角度タイマ13が正常であるにもかかわらず、角度タイマ13は異常であると誤って判定されることが抑制される。結果として、より精度よく、角度タイマ13が正常であることを保証することができる。角度タイマ13が正常であることを保証することにより、例えば、ある要求角度で単発的に実行されるようなエンジン制御が適切なタイミングで実行されたことを、より精度よく、保証することができる。
【0106】
(3c)角度タイマモニタ部63は、S150では、直近のクランク信号に対応するクランク軸の回転角度位置を取得し、直近のクランク信号に対応するクランク軸の回転角度位置が要求角度よりも大きい場合に、車両が加速していると判定する。
【0107】
上述の実施形態のマイコン10によれば、直近のクランク信号に対応するクランク軸の回転角度位置と要求角度とに基づいて、車両が加速していることを特定することができる。つまり、マイコン10の角度タイマモニタ部63の処理によって車速が加速していることを特定することができる。換言すれば、マイコン10内で処理を完結することができる。これにより、例えば、マイコン10の外の構成としての加速センサ等による検出結果を用いる必要が無い。
【0108】
(3d)角度タイマモニタ部63は、加速が生じていないと判定された場合に、S160では、直近のインターバル時間T01をクランク角度間隔AIで除算した1°CA時間を算出する。そして、角度タイマモニタ部63は、直近のクランク信号に対応するクランク軸の回転角度位置Ac_(i)と要求角度Arとの差分(Ar-Ac_(i))と1°CA時間とを乗算した時間を算出する。角度タイマモニタ部63は、直近のクランク信号が発生した時刻tc_(i)に、乗算した時間を加算した時刻を、理論値時刻として算出する。
【0109】
上述の実施形態のマイコン10によれば、過去のインターバル時間である直近のインターバル時間T01から、理論値時刻としての通常理論値時刻を算出することができる。
(3e)角度タイマモニタ部63は、加速が生じていると判定された場合に、S170では、加速開始角度位置Asを算出する。加速開始角度位置Asは、ハイレート機能が開始されたと推定されるクランク軸の回転角度位置である。角度タイマモニタ部63は、直近のクランク信号が発生した時刻tc_(i)に、ハイレート時間Ihを加算した時刻を、理論値時刻として算出する。ハイレート時間Ihは、要求角度Arと加速開始角度位置Asとの角度差を高速クロックに基づいてカウントするために要する時間である。上述の実施形態のマイコン10によれば、角度タイマ13のハイレート機能の作動に応じた理論値時刻(すなわち、ハイレート理論値時刻)を算出することができる。
【0110】
(3f)角度タイマモニタ部63は、直近のインターバル時間T01の、1つ前のインターバル時間T12に対する比をインターバル比Rとし、クランク角度間隔AIにインターバル比Rを乗じた角度を通常角度間隔として、算出する。インターバル比Rは、R=T01/T12として算出される。角度タイマモニタ部63は、直近1つ前のクランク信号に対応するクランク軸の回転角度位置に、通常角度間隔を加算した角度を、加速開始角度位置Asとして算出する。
【0111】
上述の実施形態のマイコン10によれば、過去のインターバル時間である、1つ前のインターバル時間T12と直近のインターバル時間T01との変化に基づいて、これらの変化を反映した理論値時刻(すなわち、ハイレート理論値時刻)を算出することができる。
【0112】
(3g)角度タイマモニタ部63は、S140では、直近のクランク信号に対応するクランク軸の回転角度位置と要求角度との差が、クランク角度間隔よりも大きい場合に、角度タイマ13が異常であると判定する。ここでいう差は、例えば、差の絶対値であり得る。角度タイマモニタ部63は、S140にて角度タイマ13が異常であると判定されなかった場合に、S160又はS170において、理論値時刻を算出する。
【0113】
上述の実施形態のマイコン10によれば、直近のクランク信号に対応するクランク軸の回転角度位置と要求角度との差がクランク角度間隔よりも大きい場合には、角度タイマ13が異常であると判定される。そして、その後の処理において理論値時刻が算出されない為、マイコン10の処理負荷を軽減することができる。
【0114】
<文言の対応関係>
上述の実施形態において、マイコン10がエンジン制御装置に相当し、角度タイマモニタ部63、エンジン制御部16が、検出部、実出力時刻取得部、理論値時刻算出部、正常判定部、初期判定部に相当する。角度タイマ13が角度クロック部に相当し、出力タイマ14が実行部に相当する。S110が実出力時刻取得部としての処理に相当し、S160、S170が理論値時刻算出部としての処理に相当する。
【0115】
S190が正常判定部としての処理に相当し、S150が加速判定部としての処理に相当し、S140が初期判定部としての処理に相当する。クランク時間間隔が、検出された今回のクランク信号と前回のクランク信号との時間間隔に相当する。ハイレート時間Ihが、要求角度と加速開始角度位置との角度差を高速クロックに基づいてカウントするために要する時間に相当する。
【0116】
[4.他の実施形態]
以上、本開示の実施形態について説明したが、本開示は上述の実施形態に限定されることなく、種々変形して実施することができる。
【0117】
(4a)本開示に記載の角度タイマ13は、上述の実施形態に限定されるものではなく、上述と同様の機能を実現するのであれば、異なる構成であってもよい。
(4b)上述のマイコン10では、エンジン制御部16(すなわち、CPU65)がS40にて目標クロック数設定部316に目標クロック数を設定していたが、本開示はこれに限定されるものではない。例えば、マイコン10は、マイコン10が有するレジスタに、それぞれのクランク角度間隔での目標クロック数を設定し、第1入力タイマ12にてクランク信号(すなわち、クランクエッジ)が検出される毎に、設定された目標クロック数をレジスタからロードするように構成されてもよい。
【0118】
(4c)本開示に記載のエンジン制御部16及びその手法は、コンピュータプログラムにより具体化された一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリを構成することによって提供された専用コンピュータにより、実現されてもよい。あるいは、本開示に記載のエンジン制御部16及びその手法は、一つ以上の専用ハードウェア論理回路によってプロセッサを構成することによって提供された専用コンピュータにより、実現されてもよい。もしくは、本開示に記載のエンジン制御部16及びその手法は、一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリと一つ以上のハードウェア論理回路によって構成されたプロセッサとの組み合わせにより構成された一つ以上の専用コンピュータにより、実現されてもよい。また、コンピュータプログラムは、コンピュータにより実行されるインストラクションとして、コンピュータ読み取り可能な非遷移有形記録媒体に記憶されてもよい。エンジン制御部16に含まれる各部の機能を実現する手法には、必ずしもソフトウェアが含まれている必要はなく、その全部の機能が、一つあるいは複数のハードウェアを用いて実現されてもよい。
【0119】
(4d)上記実施形態における1つの構成要素が有する複数の機能を、複数の構成要素によって実現したり、1つの構成要素が有する1つの機能を、複数の構成要素によって実現したりしてもよい。また、複数の構成要素が有する複数の機能を、1つの構成要素によって実現したり、複数の構成要素によって実現される1つの機能を、1つの構成要素によって実現したりしてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加又は置換してもよい。
【0120】
(4e)上述したエンジン制御部16の他、エンジン制御部16を構成要素とするエンジンECU、エンジン制御システム、当該エンジン制御部16を機能させるためのプログラム、このプログラムを記録した半導体メモリ等の非遷移的実体的記録媒体、エンジン制御方法など、種々の形態で本開示を実現することもできる。
【0121】
[本明細書が開示する技術思想]
[項目1]
車両に搭載されるエンジン制御装置であって、
クランク軸の回転に伴って所定のクランク角度間隔でパルスとして発生するクランク信号が検出されると、検出された今回の前記クランク信号と前回の前記クランク信号との時間間隔を、予め設定された逓倍数で除算した周期の逓倍クロックを角度クロックとして、前記角度クロックのカウント数である角度カウント値を出力する角度クロック部(13)と、制御信号に従って制御を行う制御対象に前記角度カウント値及び予め設定されたクランク軸の回転角度位置としての要求角度に基づいて前記制御信号を出力する実行部(14)と、を含む出力部(17)から前記制御信号が出力された時刻である実出力時刻、を取得するように構成された実出力時刻取得部(16、S110)と、
前記制御信号が出力されたことが検出されると、前記実出力時刻以前に検出された前記クランク信号のうち、前記実出力時刻に最も近いタイミングで検出された前記クランク信号を直近のクランク信号、2番目に近いタイミングで検出された前記クランク信号を直近1つ前のクランク信号として、前記実出力時刻の理論値である理論値時刻を、少なくとも、前記直近のクランク信号と前記直近1つ前のクランク信号との時間間隔である直近のインターバル時間に基づいて算出するように構成された理論値時刻算出部(16、S160、S170)と、
前記実出力時刻と前記理論値時刻との差が予め定められた異常時閾値未満である場合に、前記角度クロック部が正常であると判定するように構成された正常判定部(16、S190)と、
を備える、エンジン制御装置(10)。
【0122】
[項目2]
項目1に記載のエンジン制御装置であって、
前記角度クロック部は、前記クランク信号が検出されると、前記角度カウント値によって示される前記クランク軸の回転角度位置が、検出された前記今回のクランク信号に対応する前記クランク軸の回転角度位置未満である場合に、前記逓倍クロックよりも周期の短い高速クロックを前記角度クロックとして、前記高速クロックのカウント数を前記角度カウント値として出力し、前記角度カウント値を、前記今回のクランク信号に対応するクランク軸の回転角度位置を示すカウント数まで変化させた後に、再び前記逓倍クロックを前記角度クロックとするハイレート機能を有し、
当該エンジン制御装置は、
前記制御信号が出力されたことが検出されると、前記車両が加速しているか否かを判定するように構成された加速判定部(S150)を更に備え、
前記理論値時刻算出部は、前記車両が加速していると判定された場合に、前記車両が加速していないと判定された場合とは異なる態様で、前記理論値時刻を算出する、エンジン制御装置。
【0123】
[項目3]
項目2に記載のエンジン制御装置であって、
前記加速判定部は、前記制御信号が出力されたことが検出されると、前記直近のクランク信号に対応する前記クランク軸の回転角度位置を取得し、前記直近のクランク信号に対応する前記クランク軸の回転角度位置が前記要求角度よりも大きい場合に、前記車両が加速していると判定する、エンジン制御装置。
【0124】
[項目4]
項目2又は3に記載のエンジン制御装置であって、
前記理論値時刻算出部(S160)は、前記車両が加速していないと判定された場合に、前記直近のインターバル時間を前記クランク角度間隔で除算した1°CA時間を算出し、前記直近のクランク信号に対応するクランク軸の回転角度位置と前記要求角度との差分と前記1°CA時間とを乗算した時間を算出し、前記直近のクランク信号が発生した時刻に、前記乗算した時間を加算した時刻を、前記理論値時刻として算出する、エンジン制御装置。
【0125】
[項目5]
項目2から項目4のいずれか1項に記載のエンジン制御装置であって、
前記理論値時刻算出部(S170)は、加速が生じていると判定された場合に、前記ハイレート機能が開始されたと推定されるクランク軸の回転角度位置である加速開始角度位置を算出し、直近のクランク信号が発生した時刻に、前記要求角度と前記加速開始角度位置との角度差を前記高速クロックに基づいてカウントするために要する時間を加算した時刻を、前記理論値時刻として算出する、エンジン制御装置。
【0126】
[項目6]
項目5に記載のエンジン制御装置であって、
前記理論値時刻算出部は、前記直近1つ前のクランク信号よりも前に検出された前記クランク信号のうち、前記直近1つ前のクランク信号に最も近いタイミングで検出された前記クランク信号を直近2つ前のクランク信号とし、前記直近1つ前のクランク信号と前記直近2つ前のクランク信号との時間間隔を1つ前のインターバル時間とし、前記直近のインターバル時間の前記1つ前のインターバル時間に対する比をインターバル比とし、前記クランク角度間隔に前記インターバル比を乗じた角度を通常角度間隔として、前記直近1つ前のクランク信号に対応するクランク軸の回転角度位置に、前記通常角度間隔を加算した角度を、前記加速開始角度位置として算出する、エンジン制御装置。
【0127】
[項目7]
項目2から項目5のうちのいずれか1項に記載のエンジン制御装置であって、
前記制御信号が出力されたことが検出されると、前記直近のクランク信号に対応するクランク軸の回転角度位置と、前記要求角度との差が、前記クランク角度間隔よりも大きい場合に、前記角度クロック部が異常であると判定するように構成された初期判定部(16、S140)、を更に備え、
前記理論値時刻算出部は、前記初期判定部によって前記角度クロック部が異常であると判定されなかった場合に前記理論値時刻を算出する、エンジン制御装置。
【符号の説明】
【0128】
10…マイコン、13…角度モニタ、14…出力タイマ、16…エンジン制御部、17…出力部、61…クランク割込制御部、63…角度タイマモニタ部、71…理論値時刻算出部、72…判定部。
図1
図2
図3
図4
図5
図6
図7
図8