JP7251151B2 - 内燃機関制御装置 - Google Patents

内燃機関制御装置 Download PDF

Info

Publication number
JP7251151B2
JP7251151B2 JP2019003702A JP2019003702A JP7251151B2 JP 7251151 B2 JP7251151 B2 JP 7251151B2 JP 2019003702 A JP2019003702 A JP 2019003702A JP 2019003702 A JP2019003702 A JP 2019003702A JP 7251151 B2 JP7251151 B2 JP 7251151B2
Authority
JP
Japan
Prior art keywords
edge
edges
crank
flag
signal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019003702A
Other languages
English (en)
Other versions
JP2020112104A (ja
Inventor
裕理 堤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Denso Corp
Original Assignee
Denso Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Denso Corp filed Critical Denso Corp
Priority to JP2019003702A priority Critical patent/JP7251151B2/ja
Priority to DE102019220373.6A priority patent/DE102019220373A1/de
Publication of JP2020112104A publication Critical patent/JP2020112104A/ja
Application granted granted Critical
Publication of JP7251151B2 publication Critical patent/JP7251151B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F02COMBUSTION ENGINES; HOT-GAS OR COMBUSTION-PRODUCT ENGINE PLANTS
    • F02DCONTROLLING COMBUSTION ENGINES
    • F02D41/00Electrical control of supply of combustible mixture or its constituents
    • F02D41/009Electrical control of supply of combustible mixture or its constituents using means for generating position or synchronisation signals
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F02COMBUSTION ENGINES; HOT-GAS OR COMBUSTION-PRODUCT ENGINE PLANTS
    • F02DCONTROLLING COMBUSTION ENGINES
    • F02D41/00Electrical control of supply of combustible mixture or its constituents
    • F02D41/24Electrical control of supply of combustible mixture or its constituents characterised by the use of digital means
    • F02D41/26Electrical control of supply of combustible mixture or its constituents characterised by the use of digital means using computer, e.g. microprocessor
    • F02D41/28Interface circuits
    • F02D2041/281Interface circuits between sensors and control unit
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F02COMBUSTION ENGINES; HOT-GAS OR COMBUSTION-PRODUCT ENGINE PLANTS
    • F02DCONTROLLING COMBUSTION ENGINES
    • F02D2250/00Engine control related to specific problems or objectives
    • F02D2250/12Timing of calculation, i.e. specific timing aspects when calculation or updating of engine parameter is performed

Landscapes

  • Engineering & Computer Science (AREA)
  • Chemical & Material Sciences (AREA)
  • Combustion & Propulsion (AREA)
  • Mechanical Engineering (AREA)
  • General Engineering & Computer Science (AREA)
  • Combined Controls Of Internal Combustion Engines (AREA)

Description

本開示は、アングルクロックを生成する内燃機関制御装置に関する。
特許文献1には、エンジンの制御に用いられる電子制御装置が開示されている。特許文献1の電子制御装置は、アングルクロック生成回路と、プロセッサとを有する。アングルクロック生成回路は、入力された信号のエッジ間隔を、プロセッサにより設定された生成倍率で逓倍して生成したアングルクロックを出力する。アングルクロック生成回路は、通常時にはクランク信号の入力を受け、クランク信号のエッジ間隔に基づいてアングルクロックを生成する。アングルクロック生成回路は、クランク信号の異常などの所定の状況において、クランク信号に代えてカム信号の入力を受け、カム信号のエッジ間隔に基づきアングルクロックを生成する。
プロセッサにおいて実行されるソフトウェアの処理には、クランク信号のエッジ発生に基づいて起動されるクランク割り込み処理が含まれる。クランク割り込み処理を起動したプロセッサは、エッジ数に基づく現在のクランク角の算出や、算出したクランク角に基づく各種の制御を実施する。
特開2006-200484号公報
こうした内燃機関制御装置においては、割り込み処理の実行頻度の抑制により、プロセッサの処理負荷を軽減する構成が採用される場合がある。具体的には、クランク信号を所定の分周比で分周した分周エッジの発生時のみ、プロセッサにクランク割り込み処理を起動させる構成が採用される。こうした構成では、各分周エッジの間に、クランク割り込み処理を起動させていないエッジ(以下、マスクエッジ)が所定数存在する。分周エッジにより起動されたクランク割り込み処理は、前回の分周エッジから今回の分周エッジまでに所定数のマスクエッジが発生していたとみなして、エッジ数に従うクランク角の算出やクランク角に同期した処理を実施する。
上述の処理負荷を軽減する構成において特許文献1のようにアングルクロック生成部への入力をクランク信号からカム信号に切替えた場合、クランク割り込み処理は、分周エッジのみでの実行から、エッジごとの実行に変更される。この結果、切替え時において、クランク割り込み処理を起動したエッジとマスクエッジ数との関係が正しく維持されないおそれがある。従って、算出されるクランク角に、実際のクランク角に対するズレが生じえた。
本開示は、アングルクロックの生成源となる信号を切替える場合においても、クランク角のズレを抑制可能な内燃機関制御装置の提供を目的とする。
上記目的は独立請求項に記載の特徴の組み合わせにより達成され、また、下位請求項は、本開示の更なる有利な具体例を規定する。特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本開示の技術的範囲を限定するものではない。
上記目的を達成するための本開示の内燃機関制御装置は、入力された内燃機関からのクランク信号またはカム信号に基づいてアングルクロックを生成するアングルクロック生成部(141)と、内燃機関の現在のクランク角に同期した処理を行うクランク角処理部(111)と、アングルクロック生成部への入力をクランク信号からカム信号に切替えさせる入力切替部(112)と、クランク信号のエッジをカウントしたエッジ数を保持するエッジカウンタ(142)と、エッジカウンタによって、所定数のエッジがカウントされるごとにオンされるフラグであって、クランク角処理部の起床を要求する割り込み要求フラグを保持するフラグレジスタ(161a)と、入力切替部による入力切替期間に、フラグレジスタの保持状況と、エッジ数の変化とを取得する取得部(113)と、取得部の取得したフラグレジスタの保持状況と、入力切替期間中におけるエッジ数の変化とに基づいて、アングルクロック生成部への入力をクランク信号からカム信号に切替える以前に、クランク角処理部の起床が要求された後に、エッジカウンタによってカウントされたマスクエッジ数を算出するマスクエッジ算出部(114)と、を備え、マスクエッジ算出部は、フラグレジスタが割り込み要求フラグを保持している場合、またはエッジ数の変化が生じていた場合、クランク角処理部を起床させ、クランク角処理部を起床させた分のエッジを差し引いたエッジ数に基づいてマスクエッジ数を算出し、入力切替部によってアングルクロック生成部への入力がクランク信号からカム信号に切替えられた直後に、クランク角処理部が起床された場合、クランク角処理部は、現在のクランク角に同期した処理として、算出されたマスクエッジ数に基づき現在のクランク角を算出する処理を行う。
以上の構成によれば、エッジカウンタはエッジ数をカウントしており、フラグレジスタはエッジに基づくクランク角処理部を起床させる割り込み要求フラグを保持している。故にマスクエッジ算出部は、フラグレジスタの保持する割り込み要求フラグと、エッジ数の変化の有無とに従って、マスクエッジ数を算出可能となる。従って内燃機関制御装置は、アングルクロックの生成源となる信号を切替える場合においても、クランク角のズレを抑制可能となる。
エンジンECUの構成を示す図である。 マイコンの構成を示す図である。 信号切替え処理を示すフローチャートである。 図3のクランク信号設定サブルーチンを示すフローチャートである。 割り込み処理とマスクエッジ数との対応例を示すタイミングチャートである。 割り込み処理とマスクエッジ数との別の対応例を示すタイミングチャートである。 割り込み処理とマスクエッジとの更に別の対応例を示すタイミングチャートである。 第二実施形態のクランク信号設定サブルーチンを示すフローチャートである。 第三実施形態のクランク信号設定サブルーチンを示すフローチャートである。 第四実施形態のクランク信号設定サブルーチンを示すフローチャートである。
以下、本開示の複数の実施形態を図面に基づいて説明する。なお、各実施形態の説明において、対応する構成要素には同一番号の符号を付して重複する説明を省略する場合がある。構成の一部のみを説明している場合、構成の他の部分については先に説明した実施形態を適用できる。また、各実施形態の説明において明示している構成の組み合わせばかりでなく、特に組み合わせに支障が生じなければ、明示していなくても部分的に構成を組み合わせることも可能である。
<第一実施形態>
図1に示す本開示の第一実施形態によるエンジンECU1は、例えば車両用のガソリンエンジンやディーゼルエンジンなどの内燃機関の制御に用いられる電子制御装置であり、「内燃機関制御装置」に相当する。エンジンECU1は、クランク軸センサ2やカム軸センサ3などからの検出信号に基づいてクランク軸の回転角(以下、クランク角)などの内燃機関の状態を逐次把握し、内燃機関を制御する。
クランク軸センサ2は、クランク角に応じて電圧レベルの変動するクランク信号をエンジンECU1に出力する。クランク軸センサ2は、例えば磁気センサであり、クランク軸4に設けられたクランクシグナルロータ5によるクランク角に応じた磁界強度の変動を検出する。クランクシグナルロータ5は、外周に所定の角度間隔で突出する歯を設けられた、クランク軸4と一体に回転する略円板状の磁性部材である。
クランク軸センサ2は、クランクシグナルロータ5の歯と対向する位置に設けられ、クランクシグナルロータ5の回転に伴う歯の通過によって生じる磁界強度の変動を検出する。クランクシグナルロータ5の歯は、例えば外周の一部を除いて10度ごとに設けられている。この結果、クランク信号の立ち上がりのエッジは、外周の一部を除いてクランク軸4の10度回転ごとの実質的に均等な角度間隔で発生する。
カム軸センサ3は、内燃機関のカム軸6の回転に応じて電圧レベルの変動するカム信号をエンジンECU1に出力する。カム軸センサ3は、例えばクランク軸センサ2と同様の磁気センサであり、カム軸6に設けられたカムシグナルロータ7の歯の通過による磁界強度の変動を検出する。カム軸6は、クランク軸4に対して半分の速度で回転しており、クランク軸4の二回転、すなわち内燃機関の一回の燃焼サイクルごとに一回転する。
カムシグナルロータ7の歯は、均等でない角度の幅および間隔で設けられている。この結果、カム信号の立ち上がりおよび立ち下がりのエッジは、カム軸6の回転に従い均等でない角度間隔で発生する。なお、図1にはエンジンECU1に対する入力として一つのカム軸センサ3を示しているが、内燃機関のカム軸6の数や制御アルゴリズムなどに応じてカム軸センサ3の数は適宜変更可能である。
エンジンECU1は、入力回路10、出力回路20、およびマイコン100を備えた電子制御装置である。入力回路10は、クランク軸センサ2およびカム軸センサ3から入力されるクランク信号およびカム信号をマイコン100に取り込むための回路である。入力回路10は、例えばクランク信号およびカム信号の波形を二値の矩形波状に整形してマイコン100に入力する。
出力回路20は、マイコン100による判断に基づき、インジェクタやイグナイタなどのエンジンECU1の制御対象に対して駆動信号を出力する回路である。例えば出力回路は、マイコン100から制御対象ごとに駆動信号の出力指示を受け、対応する制御対象に駆動信号を出力する。
マイコン100は、図2に示すように、例えば半導体メモリなどの記憶部101と、CPUなどのプロセッサコア110を備えたマイクロコンピュータである。記憶部101は、プロセッサコア110で実行されるソフトウェアを非一時的に記録した非遷移的かつ実体的な記憶媒体に相当する。マイコン100は、タイマアレイユニット120および割り込みコントローラ160をはじめとする各種の周辺機能回路を、上述の記憶部101およびプロセッサコア110に加えて備えている。各種の周辺機能回路、記憶部101、およびプロセッサコア110は内部バスを介して相互に接続されている。プロセッサコア110は、記憶部101に記憶されたソフトウェアに定義されている各種の処理の実行により、周辺機能回路などと協働して内燃機関を制御するための各種の機能を実現する。
タイマアレイユニット120は、多数の論理回路などにより構成された、各種のタイマ機能を提供する周辺機能回路である。タイマアレイユニット120は、エッジ検出タイマ130、アングルクロック生成タイマ140、および出力タイマ150を含んでいる。
エッジ検出タイマ130は、マイコン100に入力されたクランク信号およびカム信号に生じたエッジを検出し、アングルクロック生成タイマ140に入力させるタイマである。エッジ検出タイマ130は、クランクエッジ検出部131、カムエッジ検出部132、およびチャネル選択部133を含む。
クランクエッジ検出部131は、例えばシフトレジスタなどを含んで構成された、入力回路10からクランク信号の入力を受け付けるチャネルである。クランクエッジ検出部131は、クランク信号のエッジのうち、各立ち上がりエッジ、各立ち下がりエッジ、または各両エッジのいずれかを検出する。本実施形態のクランクエッジ検出部131は、立ち上がりエッジを検出し、立ち上がりエッジの検出の有無を示すクランクエッジ信号を出力する。クランクエッジ信号は、立ち上がりエッジが検出された場合に、電圧レベルを一時的に変更するパルス状の信号である。クランクエッジ信号のパルス幅、すなわち電圧レベルを一時的に変更される期間は、マイコン100の動作クロック一周期に相当する。
ここで、動作クロックの一周期は、内燃機関の最高回転数における立ち上がりエッジの間隔、すなわちクランク軸の10度回転に要する最短時間よりも十分に短い時間となるように設定されている。例えば一周期は、最短時間の数十分の一以下に設定されている。故に、クランクエッジ信号の各パルスは、クランク信号の立ち上がりエッジと一対一で対応する。従って、クランクエッジ信号のパルスの数は、クランク信号の立ち上がりエッジ数と一致する。クランクエッジ検出部131は、立ち上がりエッジを検出するたびに、割り込みコントローラ160に立ち上がりエッジの検出を通知する。
カムエッジ検出部132は、例えばシフトレジスタなどを含んで構成された、入力回路10からカム信号の入力を受け付けるチャネルである。カムエッジ検出部132は、例えばカム信号の立ち上がりエッジおよび立ち下がりエッジの両方を検出し、検出の有無を示すカムエッジ信号を出力する。カムエッジ信号は、立ち上がりまたは立ち下がりのエッジが検出された場合に電圧レベルを一時的に変更されるパルス状の信号である。カムエッジ信号のパルス幅は、クランク信号と同様に動作クロックの一周期に相当する。
チャネル選択部133は、例えばマルチプレクサなどを含んで構成された、アングルクロック生成タイマ140に入力する信号のチャネルを選択する回路である。チャネル選択部133は、プロセッサコア110からの選択信号に従って、選択するチャネルを切替える。すなわちチャネル選択部133は、プロセッサコア110からの指示に従い、クランクエッジ検出部131およびカムエッジ検出部132のうち、アングルクロック生成タイマ140に接続されて信号を入力させる回路を切替える。チャネル選択部133は、クランク信号が正常である場合には、クランク信号のチャネル、すなわちクランクエッジ検出部131を、アングルクロック生成タイマ140に対する入力として選択している。
アングルクロック生成タイマ140は、アングルクロックを生成するためのタイマである。アングルクロックは、クランク信号の立ち上がりエッジ間隔よりも小さい間隔でクランク角の遷移を推定するための信号である。アングルクロックは、例えばクランク角の遷移を16分の1度の分解能で推定可能となるように設定されている。
具体的には、アングルクロックは、クランク角が一度変動したと推定されるごとに出力されるパルス状の信号であり、動作クロック一周期に相当するパルス幅で出力される。ただし、アングルクロックのパルスは、急加速に伴うパルス間隔の短縮を補正する場合に、前後のパルスと一体となり動作クロックの複数周期に相当するパルス幅となりうる。アングルクロック生成タイマ140は、アングルクロック生成部141、エッジカウンタ142、および分周コンペア部143を有する。
アングルクロック生成部141は、アングルクロック生成タイマ140への入力信号のパルス間隔を所定の生成倍率に従って逓倍することにより、アングルクロックを生成する回路である。生成倍率は、出力するアングルクロックの角度間隔に対する入力信号にパルスの生じる角度間隔の比を示す数値であり、プロセッサコア110からの指示に従って設定される。例えばアングルクロック生成部141にクランクエッジ信号が入力されている場合には、一部のクランク角範囲を除いて160倍が生成倍率として設定される。またアングルクロック生成部141にカムエッジ信号が入力されている場合には、パルス間隔ごとに個別の数値が生成倍率として設定される。例えば、あるパルス間隔がカム軸の30度回転分に相当する場合、すなわちクランク軸の60度回転分に相当する場合、そのパルス間隔に対して960倍が生成倍率として設定される。
アングルクロック生成部141は、入力信号のパルス間隔をパルス間に発生した動作クロック数としてカウントすることにより計測する。アングルクロック生成部141は、例えば入力信号にパルスが生じるたびに、次のパルス発生までの期間におけるアングルクロックのパルス間隔を更新する。パルス間隔には、直前のパルスからカウントされた動作クロック数を生成倍率で割った数値が設定される。アングルクロック生成部141は、例えば動作クロック数をカウントし、設定されたパルス間隔と一致するたびにアングルクロックのパルスを発生させてカウントをリセットする。
エッジカウンタ142は、クランク信号のエッジ数を計測するカウンタである。エッジカウンタ142は、例えばクランクエッジ信号にパルスが生じる度にカウントアップすることにより、立ち上がりエッジの数を計測する。エッジカウンタ142でカウント可能な数の上限は、後述する分周比以上に設定されている。
分周コンペア部143は、クランク信号の立ち上がりエッジのうち、一部のエッジを分周エッジとして検出し、割り込みコントローラ160に通知するための回路である。換言すれば、分周コンペア部143は、分周エッジ以外のエッジを、割り込みコントローラ160に通知しないマスクエッジとする機能を発揮する。分周エッジは、例えば30度間隔となるように立ち上がりエッジの中から選択されている。
分周コンペア部143は、例えば次の分周エッジに相当するエッジ数を保持するレジスタを含む。分周コンペア部143は、エッジカウンタ142でカウントされているパルス数が、レジスタに保持されているエッジ数と一致すると、分周エッジの発生を割り込みコントローラ160に通知する。通知により実行された後述のクランク割り込み処理により、その次の分周エッジに相当するエッジ数がレジスタに新たに書き込まれる。新たに書き込まれるエッジ数は、一部のクランク角範囲を除いて、立ち上がりエッジの角度間隔に対する分周エッジの角度間隔の比(以下、分周比)を、書き換え前のエッジ数に加算した値となる。分周エッジの間には、分周比-1個のマスクエッジが存在する。
出力タイマ150は、出力回路20に対して駆動信号の出力を指示する機能を有するタイマである。出力タイマ150は、アングルカウンタおよび出力期間レジスタなどを含む。アングルカウンタは、現在のクランク角を推定した数値をカウントするためのカウンタである。アングルカウンタは、例えばアングルクロックのパルス発生ごとにカウントアップする。
出力期間レジスタは、出力期間、すなわち各制御対象に駆動信号を出力するクランク角の範囲を保持するためのレジスタである。出力期間レジスタは、プロセッサコア110により設定される駆動信号の出力の開始および終了タイミングを示す数値を保持する領域を制御対象ごとに有している。出力タイマ150は、アングルカウンタのカウント値が出力期間レジスタの保持する数値と一致すると、対応する駆動対象への駆動信号について出力の開始または停止を出力回路20に指示する。
こうしたタイマアレイユニット120の制御のため、プロセッサコア110の機能には、クランク角処理部111としての機能が含まれる。
クランク角処理部111は、記憶部101に格納されたソフトウェアに含まれる処理のうち、クランク割り込み処理を実行中のプロセッサコア110により発揮される機能である。クランク割り込み処理は、割り込みコントローラ160からの割り込み要求に従って実施される割り込み処理の一種である。クランク割り込み処理は、クランク角の遷移に同期して、特定のクランク角となるたびに実施される。換言すれば、クランク角処理部111は、特定のクランク角となるたびに起床するプロセッサコア110の機能である。
クランク割り込み処理は、クランク信号の立ち上がりエッジ発生に従って実行される。より具体的には、通常状態では、分周エッジの発生ごとに実行される。ただし、通常状態は、アングルクロック生成タイマ140への入力信号としてクランクエッジ信号が入力されている状態を意味する。アングルクロック生成タイマ140への入力信号としてカムエッジ信号が入力されている場合には、立ち上がりエッジの発生ごとに実施される。
クランク割り込み処理は、実行されるたびに、前回の起動で算出したクランク角に、前回の実行からのクランク角の変化量を加算して現在のクランク角を算出する。クランク角の変化量は、前回の実行から今回の実行までにクランク信号に生じたエッジ数に従う。すなわち、前回の実行以降のエッジ数×10度が、前回の実行からのクランク角の変化量となる。
例えば通常状態では、クランク割り込み処理を実行させた分周エッジに加えて2つのマスクエッジが発生しているため、前回の実行からの3つのエッジが発生している。従ってクランク角処理部111は、実行されるたびに前回のクランク角に30度を加算してクランク角を算出する。
アングルクロック生成タイマ140への入力信号がカムエッジ信号である場合には、割り込み処理を実行させたエッジ以外のエッジが発生していないため、前回の実行からのエッジ数が1となる。従ってクランク角処理部111は、実行されるたびに前回のクランク角に10度を加算してクランク角を算出する。
またクランク角処理部111は、マスクエッジ数として特定の数値が算出されている場合には、算出されたマスクエッジ数に従って変化量を補正してクランク角を算出する。すなわちクランク角処理部111は、マスクエッジ数に1を加算した数×10度を、前回の実行からの変化量として算出する。従ってマスクエッジ数として特定の数値が算出されている場合の変化量は、大きいマスクエッジ数であるほど大きくなる。
クランク割り込み処理は、現在のクランク角を算出すると、そのクランク角で実行する処理として対応付けられた処理の実行に移る。クランク角に対応付けられた処理、換言すればクランク角に同期して実行される処理には、例えば燃焼サイクルに合わせた燃料噴射処理などが含まれる。またクランク割り込み処理は、次の分周エッジに相当するエッジ数を分周コンペア部143のレジスタに書き込むことにより、次にクランク割り込み処理の実行されるクランク角を設定する処理を含む。
割り込みコントローラ160は、プロセッサコア110で実行されるソフトウェアに設定されている各種の割り込み処理について、実行の可否や優先順などについて管理する機能を有する周辺機能回路である。割り込みコントローラ160は、マイコン100の内部および外部からの送信された割り込み要求を受信し、対応する割り込み処理をプロセッサコア110に実行させる。割り込みコントローラ160には、割り込み要求を受けた旨を保持するためのレジスタが各割り込み処理ごとに設けられている。
割り込みコントローラ160には、クランク割り込み処理を実行させるための割り込みフラグを保持するフラグレジスタ161として、分周フラグレジスタ161aおよびエッジフラグレジスタ161bが設けられている。
分周フラグレジスタ161aのフラグの切替え条件は、クランク信号の立ち上がりエッジのうち、分周エッジの発生ごとにクランク割り込み処理を実行させるように設定されている。分周フラグレジスタ161aは、例えば分周エッジが生じた場合に、割り込み要求があった旨を示すオンに設定される。分周フラグレジスタ161aは、フラグをクランク割り込み処理の実行に用いられた場合に、要求があった旨をクリアされ、オフに設定される。
分周フラグレジスタ161aによる割り込み要求は、アングルクロック生成タイマ140への入力信号がカムエッジ信号である場合には、無効な状態に切替えられる。すなわち分周フラグレジスタ161aは、割り込みフラグオンの状態となっている場合であっても、入力信号がカムエッジ信号の状態では、クランク割り込み処理の実行には用いられない。
エッジフラグレジスタ161bのフラグの切替え条件は、クランク信号における立ち上がりエッジの発生ごとにクランク割り込み処理を実行させるように設定されている。エッジフラグレジスタ161bは、例えばクランクエッジ信号にパルスが生じた場合に、割り込みの要求があった旨を示すオンに設定される。またエッジフラグレジスタ161bは、クランク割り込み処理の実行に用いられた場合に、要求があった旨をクリアされ、オフに設定される。
エッジフラグレジスタ161bの割り込みフラグによる割り込み要求は、通常状態においては無効な状態に設定されている。すなわちエッジフラグレジスタ161bは、割り込みフラグオンの状態となっている場合であっても、通常状態においてはクランク割り込み処理の実行には用いられない。
アングルクロック生成タイマ140への入力信号の切替えに係る機能として、プロセッサコア110の機能には、入力切替部112、取得部113、およびマスクエッジ算出部114としての機能が含まれる。
入力切替部112は、アングルクロック生成タイマ140への入力信号切替えを行う信号切替え処理を実行したプロセッサコア110により発揮される機能である。信号切替え処理は、クランク信号の異常が検出されるなどの、所定の入力切替条件が成立していると判断された場合に実行される、アングルクロック生成タイマ140への入力信号を切替える処理である。信号切替え処理の実行されている期間が、入力切替期間に相当する。
入力切替条件の成立判断、すなわちクランク信号異常検出は周期的に実行され、クランク信号が異常の場合に信号切替え処理を実行させてプロセッサコア110に入力切替部112としての機能を発揮させる。信号切替え処理は、例えばクランク割り込み処理よりも優先度を高く設定されており、実行完了までクランク割り込み処理の実行を待機させる。また信号切替え処理の実行中には、マイコン100の動作クロックの周期がエッジ間隔に対して十分短いため、クランク信号のエッジは一つのみ発生するまたは発生しない状態となる。すなわち、信号切替え処理の実行中には、エッジは複数発生しない。
入力切替部112は、チャネル選択部133に対して選択チャネルの切替信号を出力し、入力信号をクランクエッジ信号からカムエッジ信号に切替えさせる切替え指示処理を行う。入力切替部112は、入力切替条件が成立すると、取得部113に各種の情報を取得させてから切替え指示処理を行う。
入力切替部112は、切替え指示処理の前に、フラグレジスタ161の保持する割り込み要求フラグについて、有効または無効な状態の設定を変更させる処理を行う。より具体的には、入力切替部112は、分周フラグレジスタ161aの割り込み要求を、有効な状態から無効な状態に変更させる無効化処理を行う。また入力切替部112は、エッジフラグレジスタ161bの割り込み要求を、無効な状態から有効な状態に変更させる有効化処理を行う。さらに入力切替部112は、カムエッジ信号への切替え前に、エッジフラグレジスタ161bのフラグをクリアさせるクリア処理を行う。
取得部113は、取得処理を実行したプロセッサコア110により発揮される機能である。取得処理は、信号切替え処理のサブルーチンとして設定されている、信号の切替えに係るクランク信号側の設定処理の一部である。
取得部113は、入力切替部112による入力信号の切替え前に、フラグレジスタ161における割り込みフラグの保持状況と、エッジカウンタ142のエッジ数の変化とを取得する。具体的には、今回の信号切替処理の開始から、入力信号の切替えを実施するまでの期間に、上述の情報を取得する。
より具体的には、フラグレジスタ161のうち、分周フラグレジスタ161aの保持する割り込みフラグの状態を取得するフラグ取得処理を行う。また取得部113は、エッジカウンタ142のカウントするエッジ数を二回取得する。取得部113は、エッジ数を取得するエッジ数取得処理を、フラグ取得処理の前後にそれぞれ一回ずつ行う。これ以降、第一エッジ数取得処理に相当するフラグ取得処理以前のエッジ数取得処理で取得されたエッジ数を前エッジ数と呼ぶ。前エッジ数の取得は、入力切替部112によるフラグのクリア以前に実施される。また、第二エッジ数取得処理に相当するフラグ取得処理以前のエッジ数取得処理で取得されたエッジ数を後エッジ数と呼ぶ。後エッジ数の取得は、入力切替部112によるフラグのクリア以降に実施される。
マスクエッジ算出部114は、マスクエッジ算出処理を実行したプロセッサコア110により発揮される機能である。マスクエッジ算出処理は、信号切替え処理のサブルーチンとして設定されている、信号の切替えに係るクランク信号側の設定処理の一部である。
マスクエッジ算出部114は、入力信号の切替えに伴い、マスクエッジ数を算出する。入力信号の切替えにあたって、クランク割り込み処理の実行条件の変更に伴い、マスクエッジ数が一時的に分周比-1とは異なる数となりうる。マスクエッジ算出部114は、こうした一時的な変化を補正したマスクエッジ数を算出する。
マスクエッジ算出部114は、取得部113で取得された、割り込みフラグの保持状況と、エッジ数の変化とに基づいてマスクエッジ数を算出する。上述の通り、マスクエッジは、発生したエッジのうち、割り込みコントローラ160に通知されず、クランク割り込み処理に用いられなかったエッジである。従ってマスクエッジ数の算出は、直前のクランク割り込み処理以降におけるエッジ数の増加量の判断と、増加量から処理に用いられたエッジの差し引きの要否の判断とにより実行される。
エッジ数の増加量は、直前のクランク割り込み処理以降に、クランク信号に発生したエッジ数を示す。マスクエッジ算出部114は、後エッジ数から、直前のクランク割り込み処理の時点におけるエッジ数を差し引くことにより、エッジ数の増加量を算出する。
マスクエッジの算出にあたって増加量からの差し引くべきエッジは、増加量としてカウントされているエッジのうち、クランク割り込み処理の実行に用いるべきエッジである。すなわち、後エッジ数の取得以前に発生したエッジのうち、入力替え処理の開始以降に発生したため、要求したクランク割り込み処理をまだ実行されていないエッジである。従ってマスクエッジ算出部114は、入力替え処理の開始から後エッジ数の取得までの期間について、割り込み処理の実行の要否を判断することにより、差し引きの要否を判断する。
具体的には、マスクエッジ算出部114は、取得部113により取得された分周フラグレジスタ161aの割り込みフラグがオンである場合、または前エッジ数と後エッジ数とが異なっている場合に、クランク割り込み処理の実行を要すると判断する。マスクエッジ算出部114は、割り込みフラグがオフであり、かつ前エッジ数と後エッジ数とが一致している場合に、クランク割り込み処理の実行を要しないと判断する。
マスクエッジ算出部114は、クランク割り込み処理の実行を要すると判断した場合には、その分のエッジを差し引いてマスクエッジ数を算出する。すなわち、エッジ数の増加量から1を差し引いた数をマスクエッジ数として決定する。なお、マスクエッジ算出部114は、割り込みフラグがオンかつ前エッジ数と後エッジ数が異なっている場合にも、クランク割り込み処理を1回のみ実行させるとして、1を差し引く。マスクエッジ算出部114は、クランク割り込み処理の実行を要しないと判断した場合には、エッジを差し引くことなくマスクエッジ数を算出する。すなわち、エッジ数の増加量をマスクエッジ数として決定する。
マスクエッジ算出部114は、例えばエッジフラグレジスタ161bの保持する割り込みフラグの書き換えにより、判断した実行の要否に従ってクランク割り込み処理を実施させる。すなわちマスクエッジ算出部114は、実行を要すると判断した場合には、エッジフラグレジスタ161bをオンに書き換えさせる。オンに書き換えられたエッジフラグレジスタ161bにより、クランク割り込み処理が切替え処理の完了後に強制的に実行される。
マスクエッジ算出部114は、実行を要しないと判断した場合には、エッジフラグレジスタ161bの割り込みフラグの書き換えを行わない。すなわち、エッジフラグレジスタ161bを、入力切替部112によりクリアされた状態のままとする。書き換えられていないエッジフラグレジスタ161bは、クリア後に発生したエッジに従いオンとなると、信号切替え処理とは独立してクランク割り込み処理を実行させる。クランク割り込み処理は、信号切替え処理の完了後に最初に実行された場合のみ、マスクエッジ算出部114により算出された一時的なマスクエッジ数に従ってクランク角を算出する。
[プロセッサコア110の作動]
プロセッサコア110の作動を、図3および図4のフローチャートに沿って説明する。プロセッサコア110は、内燃機関の制御中に、信号切替え処理として図3に示す処理をS101から周期的に実行する。
S101では、クランク信号に異常が生じているか否かを判断する。異常が生じていると判断した場合には、アングルクロック生成タイマ140への入力信号をカム信号に切替える必要があるとしてS102に進む。異常が生じていないと判断した場合には、図3に示す処理を終了する。S101から入力切替期間が開始する。
S102では、カム信号への切替えにあたってクランク信号について種々の設定を行うために、図4に示すクランク信号設定サブルーチンを実行する。クランク信号設定サブルーチンでは、図4に示す処理をS110から実行する。
S110では、割り込みコントローラ160に対し、エッジフラグレジスタ161bによるクランク割り込み処理を有効にさせる。すなわち、有効化処理として、クランク信号のエッジ検出ごとのクランク割り込み処理の実行を有効にする処理を実行する。
S111では、エッジカウンタ142から現在のエッジ数を取得する。すなわち、第一エッジ数取得処理として、分周フラグレジスタ161aからのフラグ取得前のエッジ数である前エッジ数を取得する処理を実行する。これ以降に発生したエッジは、分周エッジに相当するか否かに拘わらずエッジ数の変化として検出され、クランク割り込み処理を実行させる。従って、この処理は割り込み要求を発生させるエッジの分周を解除する処理と言える。
S112では、クリア処理として、エッジフラグレジスタ161bの保持する割り込み要求フラグをクリアする処理を実行する。すなわち、この処理以前のエッジがエッジフラグレジスタ161bの割り込み要求フラグをオンとしていても、信号切替え処理完了後のクランク割り込み処理の実行に影響を与えない状態とする。
S113では、フラグ取得処理として。分周フラグレジスタ161aの保持する割り込み要求フラグを取得する処理を実行する。すなわち、今回の信号切替え処理開始から、この処理までの期間に分周エッジが発生しているか否かを取得する。
S114では、エッジカウンタ142から現在のエッジ数を再度取得する。すなわち、第二エッジ数取得処理として、分周フラグレジスタ161aからのフラグ取得後のエッジ数である後エッジ数を取得する処理を実行する。
S115では、クランク割り込み処理の実行させる必要があるか否かを判断する。すなわち、分周フラグレジスタ161aから取得したフラグがオンであるか、または前エッジ数と後エッジ数との間に差があるかを判断する。フラグがオンであるか、またはエッジ数に差がある場合には、クランク割り込み処理を実行させるエッジが発生している、すなわち実行を要するとしてS116に進む。フラグがオフであり、かつエッジ数が一致している場合には、クランク割り込み処理の実行を要しないとしてS118に進む。
S116では、エッジフラグレジスタ161bの保持する割り込み要求フラグをオンにさせる。すなわち、信号切替え処理の完了時に、発生したエッジ分のクランク割り込み処理を強制的に一回実施させるように予約する。
S117では、エッジ数の増加量から1を差し引いた数を、マスクエッジ数と判断する。すなわち、エッジ数の増加量からS116でクランク割り込み処理を実施させた分のエッジを差し引いた数を、マスクエッジ数として算出する。
S118では、エッジ数の増加量をマスクエッジ数と判断する。すなわち、クランク割り込み処理の実施を予約しないため、エッジ数の増加量そのものをマスクエッジ数として算出する。
S119では、分周フラグレジスタ161aの割り込みフラグによる割り込み要求を許可されていない状態に変更させ、図4のサブルーチンを終了して図3の処理に戻る。すなわちこの処理以降、分周フラグレジスタ161aは、割り込みフラグオンの状態となっている場合であっても、有効な割り込み要求としては扱われず、クランク割り込み処理の実行には用いられない状態となる。
図3の処理に戻ると、S103の処理に進む。S103の処理では、カム信号への切替えにあたってカム信号について種々の設定を行う。
S104では、チャネル選択部133に、アングルクロック生成タイマ140への入力信号をカム信号に切替えさせる。S104で入力切替期間が完了する。
S105では、エッジフラグレジスタ161bの割り込み要求フラグがオンとなっているかを判断する。すなわち、S116でクランク割り込み処理を予約している、または後エッジ数の取得後にエッジが発生しているか否かを判断する。オンの場合、クランク割り込み処理の実行のためS106に進む。オフの場合、図4に示す処理を終了し、次のエッジ発生までクランク割り込み処理の実施を待つ。
S106では、クランク割り込み処理を実行する。すなわち、S117またはS118で算出されたマスクエッジ数に基づくクランク角算出などを実施する。
[第一実施形態のまとめ]
以上、説明した第一実施形態によれば、エッジカウンタ142はエッジ数をカウントしている。また、フラグレジスタ161は、エッジの発生に基づいてオンとなる、クランク角処理部111を起床させるための割り込み要求フラグを保持している。故にマスクエッジ算出部114は、エッジ数の変化として検出された直前のクランク割り込み処理から発生したエッジ数の変化量と、フラグレジスタ161の保持する割り込み要求フラグとに従って、マスクエッジ数を算出可能となる。従ってエンジンECU1は、アングルクロックの生成源となる信号を切替える場合においても、算出されるクランク角のズレを抑制可能となる。
すなわち、マスクエッジ算出部114は、割り込み要求フラグのオン、またはエッジ数の変化発生に従いクランク割り込み処理を実行させる場合には、そのエッジを変化量から差し引いてマスクエッジ数を算出する。
またマスクエッジ算出部114は、割り込み要求フラグのオフかつエッジ数の変化なしのためクランク割り込み処理を実行させない場合には、変化量から実行させた分のエッジを差し引くことなくマスクエッジ数を算出する。このように、マスクエッジ算出部114は、クランク割り込み処理の実行の要否に従い、実行させた分のエッジを差し引いてマスクエッジ数を算出する。従って、マスクエッジ算出部114は、クランク割り込み処理の実行の有無と同期させてマスクエッジ数を算出しうる。
加えて本実施形態では、マスクエッジ算出部114による予約、または信号切替え処理以降のエッジにより起床されたクランク角処理部111は、マスクエッジ算出部114により算出されたマスクエッジ数に基づいてクランク角を補正する。従ってエンジンECU1では、各種の処理に用いられるクランク角のズレが抑制され、制御の精度低下がより抑制される。
さらに本実施形態では、取得部113は、分周フラグレジスタ161aの保持する割り込み要求フラグを保持状況として取得し、保持状況の取得前後におけるエッジ数をそれぞれ前エッジ数および後エッジ数として取得する。またマスクエッジ算出部114は、分周フラグレジスタ161aの割り込み要求オンの場合、または前エッジ数と後エッジ数とが異なっている場合に、クランク割り込み処理を実行させてその分をエッジ増加量から差し引く。この結果、信号切替え処理の実行期間のいつエッジが発生した場合であっても、マスクエッジ算出部114は、クランク割り込み処理の実行の有無と同期させてマスクエッジ数を算出しうる。
クランク割り込み処理の実行の有無と同期させたマスクエッジ数の算出について、図5~7を用いて詳細に説明する。図5~7は、信号切替え処理の実行期間にエッジが発生した場合の、クランク割り込み処理を発生させたエッジとマスクエッジ数との対応例を示す。なお、クランク信号のエッジのうち、矢印は分周エッジに相当するクランク角で発生したエッジを示す。また、矢印でない直線は分周エッジに相当しないエッジ(以下、非分周エッジ)を示す。また、各エッジから延びる破線の矢印は、そのエッジが割り込み処理を実行させたエッジである旨を示す。
図5に、分周エッジに相当するエッジが信号切替え処理の実行期間に発生した場合の作動を示す。分周エッジに相当するエッジは、分周フラグレジスタ161aのフラグ取得前に発生した場合にはフラグのオンとして検出可能であり、前エッジ数取得から後エッジ数取得までに発生した場合にはエッジ数の変化として検出可能である。従って分周エッジは、信号切替え処理の開始から、後エッジ数の取得までの期間までのいつ発生した場合においても、割り込み処理を発生させる。従って、マスクエッジ数はこのエッジを含めず算出される。
図6および図7に、非分周エッジが信号切替え処理の実行期間に発生した場合の作動を示す。非分周エッジは、分周フラグレジスタ161aのフラグを用いて検出できず、エッジ数の変化で検出可能である。従って、前エッジ数の取得までの期間に発生した非分周エッジは、割り込み処理を発生させず、マスクエッジ数に含められる。一方、前エッジ数の取得から後エッジ数の取得までの期間に発生した非分周エッジは、分周エッジではないが割り込み処理の発生に用いられる。従って、この期間に発生した非分周エッジは、マスクエッジ数に含められない。
なお、信号切替え処理の実行期間のうち後エッジ数取得以降に発生したエッジは、分周エッジであるか非分周エッジであるかに拘わらず、マスクエッジ算出部114の判断するエッジ数の増加量には含まれない。故にこの期間に発生したエッジは、マスクエッジ算出部114による増加量から差し引くか否かの判断では参照されず、独立してクランク割り込み処理を実行させる。
さらに、マスクエッジ算出部114は、後エッジ数取得以前にクリアされたエッジフラグレジスタ161bへのオン書き込みにより、クランク割り込み処理の実行を予約する。この結果、マスクエッジ算出部114はエッジフラグレジスタ161bのクリアから後エッジ数取得までのエッジ発生によりオンに書き換わっていても、クランク割り込み処理を1回のみ実行させる。故にマスクエッジ算出部114は、エッジの数と実行回数とのズレを抑制しうる。
加えてマスクエッジ算出部114は、クリア処理以前に取得した前エッジ数をクリア処理以降の後エッジ数と比較して、割り込み処理実行の要否を判断する。本実施形態の構成に反して、クリア処理以降に前エッジ数を取得して、後エッジ数と比較し要否判断する構成を採用した場合、マスクエッジ算出部114による要否判断の結果と、エッジフラグレジスタ161bの状態とが相違しうる。具体的には、クリア処理から前エッジ数の取得までに非分周エッジが発生した場合、この非分周エッジは分周フラグレジスタ161aをオンにせず、前エッジ数と後エッジ数との差も生じさせない。故にこの非分周エッジは、マスクエッジ算出部114ではクランク割り込み処理実行不要と判断されマスクエッジ数に含められるにも拘わらず、エッジフラグレジスタ161bをオンとし割り込み処理の実行に用いられる。
この懸念に対し本実施形態では、マスクエッジ算出部114は、クリア処理から後エッジ数取得までのいつエッジが発生した場合であっても、前エッジ数と後エッジ数との差に基づいてクランク割込み処理の実行を要すると判断しうる。故にマスクエッジ算出部114は、そのエッジが非分周エッジであっても検出し、オンに書き換わったエッジフラグレジスタ161bの状態と、クランク割り込み処理の実行の要否判断の結果とを一致させうる。故にマスクエッジ算出部114は、クリア後にエッジフラグレジスタ161bのフラグが書き換わった場合においても、エッジの数と実行回数とのズレを抑制しうる。
以上のように、マスクエッジ算出部114は、どのタイミングにおいてクランク信号にエッジが発生した場合においても、エッジによるクランク割り込み処理の実行と同期させてマスクエッジ数を算出しうる。故にクランク角処理部111は、算出されたマスクエッジ数に基づきクランク角のズレを抑制可能となる。
<第二実施形態>
第二実施形態は、第一実施形態の変形例である。第二実施形態では、図8に示すクランク信号設定サブルーチンの処理が、図4に示した処理に換えてプロセッサコア110により実行される。図8に示す第二実施形態におけるクランク信号設定サブルーチンの処理では、図4のS110~S114の処理が、S210~S214に置き換えられている。
S210は、図4のS111に相当する処理である。すなわちS210では、エッジカウンタ142から、現在のエッジ数を取得する。S210は、S213での分周フラグレジスタ161aのフラグ取得以前に実施される。従ってS210で取得されたエッジ数は、前エッジ数に相当する。
S211は、図4のS110に相当する処理である。すなわちS211では、割り込みコントローラ160に対し、エッジフラグレジスタ161bによるクランク割り込み処理を有効にさせる。
S212は、図4のS112に相当する処理である。すなわちS212では、エッジフラグレジスタ161bの保持する割り込み要求フラグをクリアする。
S213は、図4のS113に相当する処理である。すなわちS213では、分周フラグレジスタ161aの保持する割り込み要求フラグを取得する。
S214は、図4のS114に相当する処理である。すなわちS214では、エッジカウンタ142から、現在のエッジ数を再度取得する。S214は、S213での分周フラグレジスタ161aのフラグ取得以降に実施される。従ってS214で取得されたエッジ数は、後エッジ数に相当する。S214は、S212でのエッジフラグレジスタ161bのクリア以降に実施される。
[第二実施形態のまとめ]
以上、説明した第二実施形態によれば、第一実施形態と同様に、エンジンECU1は、マスクエッジ算出部114で算出されたマスクエッジ数に基づき、クランク角のズレを抑制して制御を実施しうる。
また第二実施形態においても、マスクエッジ算出部114は分周フラグレジスタ161aのフラグと、前エッジ数と後エッジ数との差の有無と、に基づいてクランク割り込み処理の実行の要否を判断し、実行の要否に従ってマスクエッジ数を補正可能である。加えて第二実施形態においても、マスクエッジ算出部114は、前エッジ数の取得と後エッジ数の取得との間にクリアしたエッジフラグレジスタ161bのへの書き込みにより、クランク割り込み処理の実行を予約する。従って第二実施形態においても、第一実施形態と同様に、マスクエッジ算出部114は、どのタイミングにおいてクランク信号にエッジが発生した場合においても、クランク割り込み処理の実行と同期させてマスクエッジ数を算出しうる。
<第三実施形態>
第三実施形態は、第一実施形態の別の変形例である。第三実施形態では、図9に示すクランク信号設定サブルーチンの処理が、図4に示した処理に換えてプロセッサコア110により実行される。図9に示す第三実施形態におけるクランク信号設定サブルーチンの処理では、図4のS110~S114の処理が、S310~S314に置き換えられている。
S310は、図4のS110に相当する処理である。すなわちS310では、割り込みコントローラ160に対し、エッジフラグレジスタ161bによるクランク割り込み処理を有効にさせる。
S311は、図4のS111に相当する処理である。すなわちS311では、エッジカウンタ142から、現在のエッジ数を取得する。S311は、S312での分周フラグレジスタ161aのフラグ取得以前に実施される。従ってS311で取得されたエッジ数は、前エッジ数に相当する。またS311は、S313でのエッジフラグレジスタ161bのクリア以前に実施される。
S312は、図4のS113に相当する処理である。すなわちS312では、分周フラグレジスタ161aの保持する割り込み要求フラグを取得する。
S313は、図4のS112に相当する処理である。すなわちS313では、エッジフラグレジスタ161bの保持する割り込み要求フラグをクリアする。
S314は、図4のS114に相当する処理である。すなわちS314では、エッジカウンタ142から、現在のエッジ数を再度取得する。S314は、S312での分周フラグレジスタ161aのフラグ取得以降に実施される。従ってS314で取得されたエッジ数は、後エッジ数に相当する。またS314は、S313でのエッジフラグレジスタ161bのクリア以降に実施される。
[第三実施形態のまとめ]
以上、説明した第三実施形態によれば、第一実施形態と同様に、エンジンECU1は、マスクエッジ算出部114で算出されたマスクエッジ数に基づき、クランク角のズレを抑制して制御を実施しうる。
また第三実施形態においても、マスクエッジ算出部114は、分周フラグレジスタ161aのフラグと、前エッジ数と後エッジ数との差の有無と、に基づいてクランク割り込み処理の実行の要否を判断し、実行の要否に従ってマスクエッジ数を補正可能である。加えて第三実施形態においても、マスクエッジ算出部114は、前エッジ数の取得と後エッジ数の取得との間にクリアしたエッジフラグレジスタ161bのへの書き込みにより、クランク割り込み処理の実行を予約する。従って第三実施形態においても、第一実施形態と同様に、マスクエッジ算出部114は、どのタイミングにおいてクランク信号にエッジが発生した場合においても、クランク割り込み処理の実行と同期させてマスクエッジ数を算出しうる。
<第四実施形態>
第四実施形態は、第一実施形態の別の変形例である。第四実施形態では、図10に示すクランク信号設定サブルーチンの処理が、図4に示した処理に換えてプロセッサコア110により実行される。図10に示す第四実施形態におけるクランク信号設定サブルーチンの処理では、図4のS110~S114の処理が、S410~S414に置き換えられている。
S410は、図4のS111に相当する処理である。すなわちS410では、エッジカウンタ142から、現在のエッジ数を取得する。S410は、S412での分周フラグレジスタ161aのフラグ取得以前に実施される。従ってS410で取得されたエッジ数は、前エッジ数に相当する。またS410は、S413でのエッジフラグレジスタ161bのクリア以前に実施される。
S411は、図4のS110に相当する処理である。すなわちS411では、割り込みコントローラ160に対し、エッジフラグレジスタ161bによるクランク割り込み処理を有効にさせる。
S412は、図4のS113に相当する処理である。すなわちS412では、分周フラグレジスタ161aの保持する割り込み要求フラグを取得する。
S413は、図4のS112に相当する処理である。すなわちS413では、エッジフラグレジスタ161bの保持する割り込み要求フラグをクリアする。
S414は、図4のS114に相当する処理である。すなわちS414では、エッジカウンタ142から、現在のエッジ数を再度取得する。S414は、S412での分周フラグレジスタ161aのフラグ取得以降に実施される。従ってS414で取得されたエッジ数は、後エッジ数に相当する。またS414は、S413でのエッジフラグレジスタ161bのクリア以降に実施される。
[第四実施形態のまとめ]
以上、説明した第四実施形態によれば、第一実施形態と同様に、エンジンECU1は、マスクエッジ算出部114で算出されたマスクエッジ数に基づき、クランク角のズレを抑制して制御を実施しうる。
また第四実施形態においても、マスクエッジ算出部114は、分周フラグレジスタ161aのフラグと、前エッジ数と後エッジ数との差の有無と、に基づいてクランク割り込み処理の実行の要否を判断し、実行の要否に従ってマスクエッジ数を補正可能である。加えて第四実施形態においても、マスクエッジ算出部114は、前エッジ数の取得と後エッジ数の取得との間にクリアしたエッジフラグレジスタ161bのへの書き込みにより、クランク割り込み処理の実行を予約する。従って第四実施形態においても、第一実施形態と同様に、マスクエッジ算出部114は、どのタイミングにおいてクランク信号にエッジが発生した場合においても、クランク割り込み処理の実行と同期させてマスクエッジ数を算出しうる。
<他の実施形態>
以上、本開示の実施形態を説明したが、本開示は上述の実施形態に限定されるものではなく、次の変形例も本開示の技術的範囲に含まれ、さらに、下記以外にも要旨を逸脱しない範囲内で種々変更して実施できる。なお、以下の説明において、それまでに使用した符号と同一番号の符号を有する要素は、特に言及する場合を除き、それ以前の実施形態における同一符号の要素と同一である。また、構成の一部のみを説明している場合、構成の他の部分については先に説明した実施形態を適用できる。
上述の実施形態においては、分周フラグレジスタ161aの割り込み要求フラグを無効に切替える処理は、マスクエッジ数の算出以降に行われていた。しかし、分周フラグレジスタ161aの割り込み要求を取得可能であれば、無効に切替える処理のタイミングはこれに限られず適宜変更可能である。
上述の実施形態においては、クランク信号のエッジは立ち上がりエッジを用いていた。しかし、立ち下がりエッジを用いる構成でもよい。
1 エンジンECU(内燃機関制御装置)、 111 クランク角処理部、 112 入力切替部、 113 取得部、 114 マスクエッジ算出部、 142 エッジカウンタ、 141 アングルクロック生成部、 161 フラグレジスタ、 161a 分周フラグレジスタ、 161b エッジフラグレジスタ

Claims (9)

  1. 入力された内燃機関のクランク信号またはカム信号に基づいてアングルクロックを生成するアングルクロック生成部(141)と、
    前記内燃機関の現在のクランク角に同期した処理を行うクランク角処理部(111)と、
    前記アングルクロック生成部への入力を前記クランク信号から前記カム信号に切替えさせる入力切替部(112)と、
    前記クランク信号のエッジをカウントしたエッジ数を保持するエッジカウンタ(142)と、
    前記エッジカウンタによって、所定数のエッジがカウントされるごとにオンされるフラグであって、前記クランク角処理部の起床を要求する割り込み要求フラグを保持するフラグレジスタ(161a)と、
    前記入力切替部による入力切替期間に、前記フラグレジスタの保持状況と、前記エッジ数とを取得する取得部(113)と、
    前記取得部の取得した前記フラグレジスタの保持状況と、前記入力切替期間中における前記エッジ数の変化の有無とに基づいて、前記アングルクロック生成部への入力を前記クランク信号から前記カム信号に切替える以前に、前記クランク角処理部の起床が要求された後に、前記エッジカウンタによってカウントされたマスクエッジ数を算出するマスクエッジ算出部(114)と、を備え、
    前記マスクエッジ算出部は、前記フラグレジスタが割り込み要求フラグを保持している場合、または前記エッジ数の変化が生じていた場合、前記クランク角処理部を起床させ、前記クランク角処理部を起床させた分のエッジを差し引いた前記エッジ数に基づいて前記マスクエッジ数を算出し、
    前記入力切替部によって前記アングルクロック生成部への入力が前記クランク信号から前記カム信号に切替えられた直後に、前記クランク角処理部が起床された場合、前記クランク角処理部は、前記現在のクランク角に同期した処理として、算出されたマスクエッジ数に基づき現在のクランク角を算出する処理を行う、内燃機関制御装置。
  2. 前記マスクエッジ算出部は、前記フラグレジスタが割り込み要求フラグを保持しておらず、かつ前記エッジ数の変化が生じていない場合、前記クランク角処理部を起床させず、前記エッジ数に基づいて前記マスクエッジ数を算出する請求項に記載の内燃機関制御装置。
  3. 前記クランク角処理部は、前記マスクエッジ算出部により算出された前記マスクエッジ数に従って算出されたクランク角に同期して処理を実行する請求項1または2に記載の内燃機関制御装置。
  4. 前記フラグレジスタは、前記クランク信号のエッジの発生ごとにオンされる割り込み要求フラグを保持するエッジフラグレジスタ(161b)と、前記クランク信号のエッジのうち分周エッジの発生ごとにオンされて割り込み要求フラグを保持する分周フラグレジスタ(161a)と、を含み、
    前記入力切替部は、前記入力切替期間に、前記エッジフラグレジスタの割り込み要求を有効にする有効化処理と、前記エッジフラグレジスタの保持する割り込み要求フラグをクリアするクリア処理と、を行い、
    前記取得部は、前記入力切替期間に、前記分周フラグレジスタの割り込み要求フラグを前記保持状況として取得するフラグ取得処理と、前記エッジ数を取得する第一エッジ数取得処理および第二エッジ数取得処理と、を行い、
    前記マスクエッジ算出部は、前記エッジ数の変化の有無として、前記第一エッジ数取得処理および前記第二エッジ数取得処理で取得した前記エッジ数の間の変化の有無を判断する請求項1~のいずれか1項に記載の内燃機関制御装置。
  5. 前記取得部は、前記第一エッジ数取得処理を、前記フラグ取得処理よりも前かつ前記クリア処理よりも前に実行し、前記第二エッジ数取得処理を、前記フラグ取得処理よりも後かつ前記クリア処理よりも後に実行し、
    前記マスクエッジ算出部は、前記エッジフラグレジスタを割り込み要求フラグを保持する状態に切替えさせることにより、前記クランク角処理部を起床させる請求項に記載の内燃機
    関制御装置。
  6. 前記入力切替部は、前記入力切替期間が開始されると、前記有効化処理を行い、
    前記取得部は、前記有効化処理の後に前記第一エッジ数取得処理を行い、
    前記入力切替部は、前記第一エッジ数取得処理の後に前記クリア処理を行い、
    前記取得部は、前記クリア処理の後に前記フラグ取得処理を行い、前記フラグ取得処理の後に前記第二エッジ数取得処理を行う請求項またはに記載の内燃機関制御装置。
  7. 前記取得部は、前記入力切替期間が開始されると、前記第一エッジ数取得処理を行い、
    前記入力切替部は、前記第一エッジ数取得処理の後に前記有効化処理を行い、前記有効化処理の後に前記クリア処理を行い、
    前記取得部は、前記クリア処理の後に前記フラグ取得処理を行い、前記フラグ取得処理の後に前記第二エッジ数取得処理を行う請求項またはに記載の内燃機関制御装置。
  8. 前記入力切替部は、前記入力切替期間が開始されると、前記有効化処理を行い、
    前記取得部は、前記有効化処理の後に前記第一エッジ数取得処理を行い、前記第一エッジ数取得処理の後に前記フラグ取得処理を行い、
    前記入力切替部は、前記フラグ取得処理の後に前記クリア処理を行い、
    前記取得部は、前記クリア処理の後に前記第二エッジ数取得処理を行う請求項またはに記載の内燃機関制御装置。
  9. 前記取得部は、前記入力切替期間が開始されると、前記第一エッジ数取得処理を行い、
    前記入力切替部は、前記第一エッジ数取得処理の後に前記有効化処理を行い、
    前記取得部は、前記有効化処理の後に前記フラグ取得処理を行い、
    前記入力切替部は、前記フラグ取得処理の後に前記クリア処理を行い、
    前記取得部は、前記クリア処理の後に前記第二エッジ数取得処理を行う請求項またはに記載の内燃機関制御装置。
JP2019003702A 2019-01-11 2019-01-11 内燃機関制御装置 Active JP7251151B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019003702A JP7251151B2 (ja) 2019-01-11 2019-01-11 内燃機関制御装置
DE102019220373.6A DE102019220373A1 (de) 2019-01-11 2019-12-20 Brennkraftmaschinensteuerungseinheit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019003702A JP7251151B2 (ja) 2019-01-11 2019-01-11 内燃機関制御装置

Publications (2)

Publication Number Publication Date
JP2020112104A JP2020112104A (ja) 2020-07-27
JP7251151B2 true JP7251151B2 (ja) 2023-04-04

Family

ID=71524209

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019003702A Active JP7251151B2 (ja) 2019-01-11 2019-01-11 内燃機関制御装置

Country Status (2)

Country Link
JP (1) JP7251151B2 (ja)
DE (1) DE102019220373A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006200484A (ja) 2005-01-21 2006-08-03 Denso Corp エンジン制御装置
JP2012117452A (ja) 2010-12-01 2012-06-21 Hitachi Automotive Systems Ltd エンジンの制御装置
JP2013160086A (ja) 2012-02-02 2013-08-19 Hitachi Automotive Systems Ltd 内燃機関の制御装置
JP2018135785A (ja) 2017-02-21 2018-08-30 株式会社デンソー エンジン制御装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006200484A (ja) 2005-01-21 2006-08-03 Denso Corp エンジン制御装置
JP2012117452A (ja) 2010-12-01 2012-06-21 Hitachi Automotive Systems Ltd エンジンの制御装置
JP2013160086A (ja) 2012-02-02 2013-08-19 Hitachi Automotive Systems Ltd 内燃機関の制御装置
JP2018135785A (ja) 2017-02-21 2018-08-30 株式会社デンソー エンジン制御装置

Also Published As

Publication number Publication date
JP2020112104A (ja) 2020-07-27
DE102019220373A1 (de) 2020-07-30

Similar Documents

Publication Publication Date Title
US7942041B2 (en) Engine control device
JP4274253B2 (ja) エンジン制御装置およびプログラム
US7428459B2 (en) Apparatus for controlling an engine using a cam signal
JP4449760B2 (ja) エンジン制御装置
US7089149B2 (en) Method and apparatus for detecting an angle of a rotating shaft
JP3508676B2 (ja) エンジン制御装置
JPH02125948A (ja) エンジン制御装置
JP3539327B2 (ja) エンジン制御装置
JP3503593B2 (ja) エンジン制御装置
JP7251151B2 (ja) 内燃機関制御装置
JP5870977B2 (ja) 回転角検出システム
JP2001280192A (ja) エンジン制御装置
JP2018135785A (ja) エンジン制御装置
JP2004003454A (ja) エンジン制御装置
JP2021163425A (ja) 電子制御装置
JP4333552B2 (ja) エンジン制御装置
JP6003869B2 (ja) エンジン制御装置
JP2020148120A (ja) 電子制御装置、およびマイクロコンピュータ
JP7314838B2 (ja) 電子制御装置
JP2001256063A (ja) 制御装置及びエンジン制御装置
JP5794012B2 (ja) 電子制御装置
JP6717185B2 (ja) エンジン制御装置
JP2024101697A (ja) エンジン制御装置
JP2023079051A (ja) エンジン制御装置
JP6071697B2 (ja) 内燃機関制御装置、内燃機関制御方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210625

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220531

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220705

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220830

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221018

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221212

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230221

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230306

R151 Written notification of patent or utility model registration

Ref document number: 7251151

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151