(57)【要約】【課題】短時間で精度良くロータの位置を検出できるエンジンの制御装置及び制御方法を提供する。【解決手段】  検知装置からクランク軸の回転に伴う歯の通過を検知したことを表す検知信号を取得する取得部と、検知信号が通過を表す歯を有するロータの回転角度に基づいてロータの設けられたクランクが構成するエンジンを制御する制御処理を実行する制御部とを備える制御装置であって、制御部は、取得部が検知信号を取得する取得間隔を用いて検知装置を通過したロータの部分が歯を欠く欠歯部分であるか否かを判定する第１判定処理と、第１判定処理において部分が欠歯部分であると判定した場合に、第１判定処理で用いた取得間隔の数よりも多い取得間隔を用いて部分が欠歯部分であるか否かを判定する第２判定処理とを更に実行する。これによれば、精度良く短時間でロータの位置を検出できる。【選択図】図１
2010065574.tif 000002
【特許請求の範囲】
【請求項１】
クランク軸に設けられたロータの回転方向へ所定の回転角度毎に前記ロータに設けられた歯と対向する位置に設けられた検知装置から前記クランク軸の回転に伴う歯の通過を検知したことを表す検知信号を取得する取得部と、前記取得部が取得した検知信号が通過を表す前記歯を有するロータの回転角度に基づいて前記ロータの設けられたクランクが構成するエンジンを制御する制御処理を実行する制御部とを備える制御装置であって、
前記制御部は、前記取得部が検知信号を取得する取得間隔を用いて前記検知装置を通過した前記ロータの部分が前記歯を欠く欠歯部分であるか否かを判定する第１判定処理と、前記第１判定処理において前記部分が前記欠歯部分であると判定した場合に、前記第１判定処理で用いた取得間隔の数よりも多い取得間隔を用いて前記部分が前記欠歯部分であるか否かを判定する第２判定処理と、前記第２判定処理で前記欠歯部分であると判定した部分の前記ロータにおける位置に基づいて回転角度を検出する回転角検出処理とを更に実行し、
前記制御処理は、前記回転角検出処理で検出した回転角度に基づいて前記エンジンを制御することを特徴とする制御装置。
【請求項２】
前記制御部は、前記取得部が前記検知信号を取得する取得間隔を用いて前記歯が設けられたロータを有するクランクが構成するエンジンの回転数を検出する回転数検出処理を更に実行し、
前記第２判定処理は、前記回転数検出処理で検出した回転数が増加する場合に、前記第１判定処理で判定した欠歯部分の通過を判定することを特徴とする請求項１に記載の制御装置。
【請求項３】
前記第２判定処理は、前記欠歯部分であるか否かを判定する対象とする前記部分が前記検知装置を通過する前に前記取得部が取得した取得間隔と通過した後に取得した前記取得間隔と、前記欠歯部分が欠く歯の数とに基づいて、前記部分が前記欠歯部分であるか否かを判定することを特徴とする請求項１又は２のいずれかに記載の制御装置。
【請求項４】
前記制御部は、前記ロータの部分の通過前の前記取得間隔が通過後の前記取得間隔よりも小さい場合に、前記欠歯部分が欠く欠歯の数を所定の量だけ小さい値に補正する補正処理を実行し、
前記第２判定処理は、前記補正部が補正した欠歯の数を用いて、前記部分が前記欠歯部分であるか否かを判定することを特徴とする請求項３に記載の制御装置。
【請求項５】
前記制御部は、前記ロータの部分の通過前の前記取得間隔が通過後の前記取得間隔よりも大きい場合に、前記欠歯部分が欠く欠歯の数を所定の量だけ大きい値に補正する補正処理を実行し、
前記第２判定処理は、前記補正部が補正した欠歯の数を用いて、前記部分が前記欠歯部分であるか否かを判定することを特徴とする請求項３に記載の制御装置。
【請求項６】
前記制御部は、前記取得部が前記検知装置から前記検知信号を取得した場合に、前記回転角検出処理で検出した回転角度を更新する更新処理と、前記更新処理で更新した回転角度と前記回転角検出処理で検出した他の回転角度とを比較して前記回転角度を検査する検査処理とを更に実行することを特徴とする請求項１から５のいずれかに記載の制御装置。
【請求項７】
前記制御部は、ロータを有するクランクの構成するエンジンの回転が安定しているか否かを判定する安定判定処理を更に実行し、
前記前記第２判定処理は、前記安定判定処理で前記エンジンの回転が安定していないと判定した場合に、安定していると判定した場合に用いる取得間隔の数よりも多い取得間隔を用いて、前記検知装置を通過した前記ロータの部分が前記欠歯部分であるか否かを判定することを特徴とする請求項１から６のいずれかに記載の制御装置。
【請求項８】
クランク軸に設けられたロータの回転方向へ所定の回転角度毎に前記ロータに設けられた歯と対向する位置に設けられた検知装置から前記クランク軸の回転に伴う歯の通過を検知したことを表す検知信号を取得する取得ステップと、前記取得ステップで取得した検知信号が通過を表す前記歯を有するロータの回転角度に基づいて前記ロータの設けられたクランクが構成するエンジンを制御する制御処理を実行する制御ステップとを備える制御方法であって、
前記制御ステップは、前記取得ステップで検知信号を取得する取得間隔を用いて前記検知装置を通過した前記ロータの部分が前記歯を欠く欠歯部分であるか否かを判定する第１判定処理と、前記第１判定処理において前記部分が前記欠歯部分であると判定した場合に、前記第１判定処理で用いた取得間隔の数よりも多い取得間隔を用いて前記部分が前記欠歯部分であるか否かを判定する第２判定処理と、前記第２判定処理で前記欠歯部分であると判定した部分の前記ロータにおける位置に基づいて回転角度を検出する回転角検出処理とを更に実行し、
前記制御処理は、前記回転角検出処理で検出した回転角度に基づいて前記エンジンを制御することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エンジンを構成するクランクに設けたロータの回転位置に基づいてエンジンを制御する制御装置及び制御方法に関する。
【背景技術】
【０００２】
従来より、乗用車等の車両に搭載されるエンジンは、例えば、燃費の効率に優れた車両の運転を実現するため、制御装置であるＥＣＵ（Electronic Control Unit）によって動作制御が行われている。また、例えば、車両が排出する二酸化炭素及び排気ガスの量を削減する目的でエンジンのアイドリングを停止するために、ＥＣＵによってエンジンの停止及び始動が制御されている。このＥＣＵは、エンジンの状態を表す情報として、エンジンの回転数、エンジンを構成するクランクの角度及び回転方向を表す情報を用いてエンジンの動作を制御している。
【０００３】
よって、精度良くエンジンを制御するため、ＥＣＵがエンジンの動作制御を行うために用いるクランクの回転角度を、クランク軸の回転速度の変化に応じて精度良く判定できるクランク角判定装置が知られるに至った（例えば、特許文献１）。
【０００４】
このクランク角判定装置は、エンジンのクランク軸の回転に応じて等間隔のパルス信号を発生しそのパルス間隔が所定のクランク角で変化するパルス信号発生手段と、パルス間隔の変化を基準にしてクランク角を判定するクランク角判定手段とを備える。また、このクランク角判定装置は、エンジンの回転変動を検出する回転変動検出手段と、パルス間隔が変化したか否かを判別する判別基準値を回転変動検出手段の検出結果に応じて変化させる判別基準値可変手段とを備えることを特徴としている。
【０００５】
【特許文献１】特開２００６−３８７７３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、特許文献１に記載のクランク角判定装置では、クランクに設けたロータの位置を短時間で精度良く検出できないために、短時間で精度良くエンジンを制御できないという問題があった。つまり、このクランク角判定装置では、エンジン回転数の変化に伴ってロータの回転数が変化する場合に判定したクランク角のみに基づいてロータの位置を検出して確定するため、位置の検出精度が向上しないという問題があった。一方で、図７に示す様に、このクランク角判定装置は、パルス信号発生手段が発生させるパルス信号の間隔が再度変化するまで検出位置を確定しないため、短時間でロータの位置を検出できないという問題があった。
【０００７】
本発明は、上記問題に鑑みて成されたものであり、その目的とするところは、短時間で精度良くロータの位置を検出できると共に、検出したロータの位置に基づいて短時間で精度良くエンジンを制御できる制御装置及び制御方法を提供することにある。
【課題を解決するための手段】
【０００８】
本発明に係る制御装置は、クランク軸に設けられたロータの回転方向へ所定の回転角度毎にロータに設けられた歯と対向する位置に設けられた検知装置からクランク軸の回転に伴う歯の通過を検知したことを表す検知信号を取得する取得部と、取得部が取得した検知信号が通過を表す歯を有するロータの回転角度に基づいてロータの設けられたクランクが構成するエンジンを制御する制御処理を実行する制御部とを備える制御装置であって、制御部は、取得部が検知信号を取得する取得間隔を用いて検知装置を通過したロータの部分が歯を欠く欠歯部分であるか否かを判定する第１判定処理と、第１判定処理において部分が欠歯部分であると判定した場合に、第１判定処理で用いた取得間隔の数よりも多い取得間隔を用いて部分が欠歯部分であるか否かを判定する第２判定処理と、第２判定処理で欠歯部分であると判定した部分のロータにおける位置に基づいて回転角度を検出する回転角検出処理とを更に実行し、制御処理は、回転角検出処理で検出した回転角度に基づいてエンジンを制御することを特徴としている。
【０００９】
上記構成において、制御部は、取得部が検知信号を取得する取得間隔を用いて歯が設けられたロータを有するクランクが構成するエンジンの回転数を検出する回転数検出処理を更に実行し、第２判定処理は、回転数検出処理で検出した回転数が増加する場合に、第１判定処理で判定した欠歯部分の通過を判定する構成を採用できる。
【００１０】
上記構成において、第２判定処理は、欠歯部分であるか否かを判定する対象とする部分が検知装置を通過する前に取得部が取得した取得間隔と通過した後に取得した取得間隔と、欠歯部分が欠く歯の数とに基づいて、部分が欠歯部分であるか否かを判定する構成を採用できる。
【００１１】
上記構成において、制御部は、ロータの部分の通過前の取得間隔が通過後の取得間隔よりも小さい場合に、欠歯部分が欠く欠歯の数を所定の量だけ小さい値に補正する補正処理を実行し、第２判定処理は、補正部が補正した欠歯の数を用いて、部分が欠歯部分であるか否かを判定する構成を採用できる。
【００１２】
上記構成において、制御部は、ロータの部分の通過前の取得間隔が通過後の取得間隔よりも大きい場合に、欠歯部分が欠く欠歯の数を所定の量だけ大きい値に補正する補正処理を実行し、第２判定処理は、補正部が補正した欠歯の数を用いて、部分が欠歯部分であるか否かを判定する構成を採用できる。
【００１３】
上記構成において、制御部は、取得部が検知装置から検知信号を取得した場合に、回転角検出処理で検出した回転角度を更新する更新処理と、更新処理で更新した回転角度と回転角検出処理で検出した他の回転角度とを比較して回転角度を検査する検査処理とを更に実行する構成を採用できる。
【００１４】
上記構成において、制御部は、ロータを有するクランクの構成するエンジンの回転が安定しているか否かを判定する安定判定処理を更に実行し、第２判定処理は、安定判定処理でエンジンの回転が安定していないと判定した場合に、安定していると判定した場合に用いる取得間隔の数よりも多い取得間隔を用いて、検知装置を通過したロータの部分が欠歯部分であるか否かを判定する構成を採用できる。
【００１５】
本発明に係る制御方法は、クランク軸に設けられたロータの回転方向へ所定の回転角度毎にロータに設けられた歯と対向する位置に設けられた検知装置からクランク軸の回転に伴う歯の通過を検知したことを表す検知信号を取得する取得ステップと、取得ステップで取得した検知信号が通過を表す歯を有するロータの回転角度に基づいてロータの設けられたクランクが構成するエンジンを制御する制御処理を実行する制御ステップとを備える制御方法であって、制御ステップは、取得ステップで検知信号を取得する取得間隔を用いて検知装置を通過したロータの部分が歯を欠く欠歯部分であるか否かを判定する第１判定処理と、第１判定処理において部分が欠歯部分であると判定した場合に、第１判定処理で用いた取得間隔の数よりも多い取得間隔を用いて部分が欠歯部分であるか否かを判定する第２判定処理と、第２判定処理で欠歯部分であると判定した部分のロータにおける位置に基づいて回転角度を検出する回転角検出処理とを更に実行し、制御処理は、回転角検出処理で検出した回転角度に基づいてエンジンを制御することを特徴としている。
【発明の効果】
【００１６】
これらの構成によれば、第１判定処理で判定した欠歯部分の通過を第１判定処理で用いた取得間隔の数よりも多い取得間隔を用いて再判定するため、エンジンの回転数が変化した場合であっても、精度良く短時間でロータの位置を検出できるだけでなく、検出したロータの位置に基づいて精度良く短時間でエンジンを制御できる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の最良の実施形態について、添付図面を参照しつつ説明する。
【実施例１】
【００１８】
先ず、図１を参照して、本発明の制御装置を備える制御システム１について説明する。
【００１９】
図１に示す制御システム１は、エンジン１０、検知装置２０、及び制御装置３０で構成される。エンジン１０は、例えば、レシプロエンジンで構成される。エンジン１０は、ロータ１２、不図示のクランク、ピストン、及び点火装置を備える。ロータ１２は、ロータ１２の回転軸とほぼ同じ軸を回転軸とするクランク軸１１が挿通する穴を有する。ロータ１２と挿通するクランク軸１１とは、互いに固着している。クランク軸１１は、図示を省略するが、車両が搭載するエンジン１０を構成するピストンに接続する。クランク軸１１は、所定の回転方向に回転することで、ピストンを往復運動させてエンジン１０を始動させる。また、クランク軸１１は、始動したエンジン１０によって所定の回転方向に回転させられる。
本実施例では、エンジン１０は、レシプロエンジンで構成されるとして説明したが、これに限定される訳ではない。例えば、ロータリーエンジン、ロケットエンジン、タービンエンジン、若しくは蒸気機関で構成することが可能である。
【００２０】
ロータ１２は、回転方向に所定の間隔で磁性を有する歯（以下単に、クランク歯ともいう）が形成されている。本実施例において、歯の間隔は「10」クランクアングル（ＣＡ：crank angle）であるとして説明するが、これに限定される訳ではない。また、ロータ１２は、「130」ＣＡ及び「140」ＣＡの位置に歯を欠く欠歯部分を有する。尚、この欠いた歯を、以下単に「欠歯」という。
検知装置２０は、例えば、磁気抵抗素子センサ（以下単に、ＭＲＥ（Magnetic Resistance Element）センサという）で構成される。検知装置２０は、ロータ１２に形成された歯と対向する位置に設置される。検知装置２０は制御装置３０に接続する。検知装置２０は、ロータ１２の回転に伴った磁性を有する歯の通過により変化する磁界によって発生させた電気信号を制御装置３０へ出力する。つまり、検知装置２０は、歯の通過を磁界によって検知すると共に、検知したことを表す検知信号を制御装置３０へ出力する。
【００２１】
ここで、図２を参照して、検知装置２０の構成について説明する。図２は、検知装置２０の一例を表す構成図である。
図２（ａ）は、図２（ｂ）に示す検知装置２０をＡＡ方向から示した正面図である。検知装置２０は、磁石ＭＧと磁気抵抗素子ＭＲ１及びＭＲ２とを備える。磁石ＭＧは、磁界を発生させる。磁気抵抗素子ＭＲ１及びＭＲ２は、磁石ＭＧ等が発生させる磁界の変化に伴って電気抵抗値を変化させる。磁気抵抗素子ＭＲ１及びＭＲ２は、磁石ＭＧの底面に設置されている。
図２（ｂ）は、図２（ａ）に示す検知装置２０をＢＢ方向から示した底面図である。磁気抵抗素子ＭＲ１及びＭＲ２は、ロータ１２に形成された歯が通過する方向と略平行に磁石ＭＧの底面に設置される。つまり、歯の通過に伴って磁気抵抗素子ＭＲ１の抵抗値に影響を与える磁界が変化した後に、磁気抵抗素子ＭＲ２の抵抗値に影響を与える磁界が変化するように、磁気抵抗素子ＭＲ１及びＭＲ２は設置されている。
【００２２】
ここで、図３を参照して、磁界の変化が磁気抵抗素子ＭＲ１及びＭＲ２に与える影響について説明する。図３は、磁界の変化が磁気抵抗素子ＭＲ１及びＭＲ２に与える影響について説明するための図である。
図３（ａ）は、磁界の強さと磁気抵抗素子ＭＲ１及びＭＲ２の電気抵抗値との関係を表す図である。図３（ａ）は、横軸で磁界の強さを表し、縦軸で磁界が無い場合の電気抵抗の値と有る場合の電気抵抗の値との比を表す。
図３（ａ）に示すように、磁気抵抗素子ＭＲ１及びＭＲ２の電気抵抗の変化は、磁束密度Ｂに対して低磁場で非直線的に変化すると共に、高磁場で直線的に変化する。また、磁気抵抗素子ＭＲ１及びＭＲ２の電気抵抗は、低磁場よりも高磁場の方が大きい値になる。
【００２３】
図３（ｂ）は、電気信号（つまり、検知信号）を出力する検知装置２０の一構成を説明するための図である。検知装置２０を構成する磁気抵抗素子ＭＲ１及びＭＲ２は電気的に接続している。磁気抵抗素子ＭＲ１の片端は接地しており、他の片端は磁気抵抗素子ＭＲ２に接続している。また、磁気抵抗素子ＭＲ２の片端は磁気抵抗素子ＭＲ１に接続しており、他の片端には「Vin」の電圧が加えられている。検知装置２０は、互いに接続する磁気抵抗素子ＭＲ１及びＭＲ２の端に加えられる電圧により定まる電気信号を出力する。
【００２４】
図３（ｃ）は、検知装置２０が出力する電圧波形の一例を表す図である。検知装置２０は、ロータ１２に形成された歯１３（以下単に、クランク歯１３という）が通過する前には所定の電圧を有する電子信号を出力している。次に、クランク歯１３が通過を開始すると、歯１３が磁石ＭＧの発する磁界を弱める。よって、磁気抵抗素子ＭＲ１の抵抗値が減少し、検知装置２０が出力する電気信号の電圧が「VIn」付近まで上昇する。その後、磁気抵抗素子ＭＲ２の抵抗値が減少するため、検知装置２０が出力する電気信号の電圧が「GND（グラウンド）」付近まで下降する。次に、クランク歯１３が通過を終了すると、歯１３が磁石ＭＧの発する磁界を強める。よって、磁気抵抗素子ＭＲ１の抵抗値が増加した後に、磁気抵抗素子ＭＲ２の抵抗値が増加するため、検知装置２０が出力する電気信号の電圧が歯１３の通過前の電圧まで回復する。つまり、検知装置２０は、歯の通過を表す信号を出力する。
尚、歯１３の通過方向における電気抵抗素子ＭＲ１及びＭＲ２の長さは、通過方向の歯１３における長さとほぼ等しいとして説明するが、これに限定されるわけではない。
【００２５】
ここで、図１に戻り、制御システム１の構成について引き続き説明を行う。
制御装置３０は、燃料噴射制御ＥＣＵ（ＥＦＩ−ＥＣＵ：Electronic Fuel Injection Electronic Control Unit）で構成される。制御装置３０は、エンジン１０及び検知装置２０に接続する。制御装置３０は、検知装置２０に電源を供給すると共に、検知装置２０が出力する電気信号を取得する。検知装置２０は、取得した電気信号に基づいてロータ１２の回転位置を検出すると共に、検出した位置に基づいてエンジン１０を制御する。具体例としては、制御装置３０は、インジェクタ等のエンジン１０に対する燃料の噴射量又は噴射タイミングを制御する。
【００２６】
制御装置３０は、取得部３１と制御部３２とを備える。取得部３１は、例えば、波形整形回路等のハードウェア回路で構成される。取得部３１は、ＮＥコネクタを介して検知装置２０に接続し、ＮＥ３６ポートを介して制御部３２に接続する。取得部３１は、検知装置２０が出力するアナログ信号である検知信号を取得してデジタル信号に変換する。具体的には、取得部３１は、検知装置２０が出力するアナログ信号の電圧波形が所定の閾値１を上回る場合に値「1」のデジタル信号（つまり、「HI」の信号）を出力し、所定の閾値１を下回る場合に値「0」のデジタル信号（つまり、「LO」の信号）を出力する。
【００２７】
ここで、図４を参照して、取得部３１が入出力する信号について説明する。図４は、取得部３１が入出力する信号の一例を表す図である。
図４（ａ）は、取得部３１に信号を入力する検知装置２０を通過する歯を概念的に表す図である。つまり、図４（ａ）は、時刻ｔ１、ｔ２、ｔ５、及びｔ６において、ロータ１２に形成された歯が検知装置２０を通過したことを表す。また、時刻ｔ３及びｔ４においては、歯が検知装置２０を通過しなかった（つまり、欠歯が検知装置２０を通過した）ことを表す。
【００２８】
図４（ｂ）は、取得部３１が、ＮＥコネクタを介して接続する検知装置２０から取得する検知信号を表す図である。図４（ｂ）は、縦軸で電圧を、横軸で時間を表す。つまり、図４（ｂ）は、歯の通過があった時刻ｔ１、ｔ２、ｔ５、及びｔ６付近において、取得した電圧が所定の閾値１「Vth1」を超えたことを表す。また、欠歯の通過があった時刻ｔ３及びｔ４を含む時刻ｔ２からｔ５においては、取得した電圧が所定の閾値１「Vth1」を超えなかったことを表す。
【００２９】
図４（ｃ）は、取得部３１が、ＮＥ３６ポートを介して接続する制御部３２へ出力する信号を表す図である。図４（ｃ）は、縦軸でデジタル値を、横軸で時間を表す。つまり、図４（ｃ）は、歯の通過があった時刻ｔ１、ｔ２、ｔ５、及びｔ６付近において、制御部３２へ出力した信号が「HI」であることを表す。また、欠歯の通過があった時刻を含む時刻ｔ２からｔ５においては、出力した信号が「LO」であることを表す。
【００３０】
ここで図１に戻り、制御システム１の構成について引き続き説明を行う。
制御部３２は、エンジン１０及び取得部３１に接続する。制御部３２は、例えば、マイクロコンピュータ（以下単に、マイコンという）で構成される。制御部３２は、後述する制御処理を含むソフトウェア処理を実行する。具体的には、制御部３２は、取得部３１が出力するデジタル信号を取得する。制御部３２は、取得した信号の出力間隔に基づいてロータ１２に形成された欠歯部分の通過を判定すると共に、通過したと判定した欠歯部分の位置を用いてロータ１２の回転位置及びクランクの位置を検出する。その後、制御部３２は、検出した位置に基づいて、エンジンの点火タイミング等を制御する。
【００３１】
次に、図５を参照して、制御部３２がソフトウェア処理を実行するために用いるハードウェアの一構成例について説明する。図５は、ソフトウェア処理を実行するために用いる制御部３２の一構成例を表すハードウェア構成図である。
制御部３２は、例えば、ＣＰＵ（Central Processing Unit）で構成される実行部３２ａ、ＥＰＲＯＭ（Erasable Programmable Read-Only Memory）又はＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）等で構成される読出専用記憶装置３２ｂ、ＤＲＡＭ（Dynamic  RAM）又はＳＲＡＭ（Static  RAM）等の揮発性メモリ及びＮＶＲＡＭ（Non Volatile RAM）等の不揮発性メモリで構成される読書可能記憶装置３２ｃ、及び入出力回路で構成される入出力部３２ｅで構成され、実行部３２ａ、読出専用記憶装置３２ｂ、読書可能記憶装置３２ｃ、及び入出力部３２ｅは互いにバスによって接続している。
【００３２】
ソフトウェア処理は、実行部３２ａが、読出専用記憶装置３２ｂに格納したプログラムを読み込み、読み込んだプログラムに従って演算を実行することにより実現される。なお、読書可能記憶装置３２ｃには、演算結果のデータが書き込まれ、特にＮＶＲＡＭには、電源オフする場合にバックアップが必要なデータが保存される。また、演算結果は、入出力部３２ｅを介して接続する他の部又は装置との間で入出力される。
【００３３】
ここで、図６を参照して、従来の制御装置が欠歯部分の通過を判定するために実行する判定処理について概説した後に、従来の制御装置の問題点について説明する。
図６（ａ）は、エンジンの回転数がほぼ一定の場合に従来の取得部がＮＥ３６ポートへ出力する信号の遷移を表す図である。図６（ａ）に示すように、先ず、従来の制御装置を構成する制御部は、取得部が検知信号を取得して出力するパルス信号の出力間隔Ｔ１を取得する。次に、従来の制御部は、取得した出力間隔Ｔ１を記憶する。その後、従来の制御部は、出力間隔Ｔ２を取得する。次に、従来の制御部は、間隔Ｔ２が欠歯部分の通過に要した時間であるか否かを判断する。具体例としては、従来の制御部は、間隔Ｔ２が間隔Ｔ１の約３倍である場合に、間隔Ｔ２が欠歯部分の通過に要した時間であると判断する。これは、欠歯部分が２つの歯を欠くためである。その後、従来の制御部は、判定処理の実行を終了する。
【００３４】
図６（ｂ）は、エンジンの回転数が減少する場合に従来の取得部が出力する信号の遷移を表す図である。図６（ｂ）に示す間隔Ｔ２は、図６（ａ）に示す間隔Ｔ２と異なり、欠歯部分ではない部分（以下単に、有歯部分という）が検知装置を通過するために要した時間間隔である。しかし、エンジンの回転数が減少したために、間隔Ｔ２は出力間隔Ｔ１の約３倍の長さを有する。
よって、従来の制御装置では、エンジンの回転数が減少した場合に、有歯部分を欠歯部分と判定してしまう問題があった。つまり、従来の制御装置では、欠歯部分の通過に基づいて検出する回転角の検出精度が向上しないという問題があった。
【００３５】
図６（ｃ）は、エンジンの回転数が増加する場合に従来の取得部が出力する信号の遷移を表す図である。図６（ｃ）に示す間隔Ｔ２は、図６（ａ）に示す間隔Ｔ２と同様に、欠歯部分が検知装置を通過するために要した時間間隔である。しかし、エンジンの回転数が増加したために、間隔Ｔ２は出力間隔Ｔ１の３倍よりも短い長さしか有さない。
よって、従来の制御装置では、エンジンの回転数が増加する場合に、欠歯部分を有歯部分と判定してしまうという問題があった。つまり、従来の制御装置では、エンジンの回転数が減少する場合と同様に、欠歯部分の通過に基づいて検出する回転角の検出精度が向上しないという問題があった。
【００３６】
更に、図７を参照して、従来の制御装置が実行するソフトウェア処理について引き続き概説した後に、従来の制御装置の問題点について更に説明する。図７は、従来の制御装置が検出した回転角度を確定するために実行するソフトウェア処理について概説するための図である。
図７に示すように、従来の制御装置を構成する制御部は、上記判定処理を実行することで欠歯部分が検知装置を通過したと最初に判定すると、通過したと判定した欠歯部分のロータにおける位置に基づいてロータ１２の回転角度を検出する。次に、従来の制御部は、クランクの位置を、検出したロータの回転角度で定まる位置として仮確定する。
【００３７】
尚、クランクの位置は、クランクカウンタで表される。本実施例において、クランクカウンタは、クランクアングル「30」ＣＡ毎に値が更新される「0」から「18」の値をとる。具体的には、ロータ１２の回転角度が「0」ＣＡ以上「30」ＣＡ未満の場合にクランクカウンタが値「0」となり、「30」ＣＡ以上「60」ＣＡ未満の場合にクランクカウンタが値「1」となる。
【００３８】
次に、従来の制御部は、歯の通過を検知した検知信号に基づいて取得部が出力したパルス信号を取得すると回転角度を「10」ＣＡ分だけ更新すると共に、更新した回転角度（クランクアングル）に基づいてクランクの位置（クランクカウンタ）を更新する。その後、従来の制御部は、欠歯部分が検知装置を通過したと再度判定すると、同様に、通過したと判定した欠歯部分の位置に基づいてロータの回転角度を新たに検出する。その後、従来の制御部は、新たに検出した回転角度と、更新した回転角度とが一致する場合に、クランクの位置を検出したロータの回転角度で定まる位置として本確定する。
よって、従来の制御装置の構成では、欠歯部分を再度検出するまでロータの回転角度と回転角度で定まるクランクの位置とを確定しないため、短時間でロータ及びクランク位置を検出できないという問題があった。
【００３９】
よって、図８を参照して、上記問題を解決する本件発明の制御装置３０が実行する判定処理について概説する。図８（ａ）は、制御装置３０が実行する第２判定処理処理の一例を概説するための図である。尚、制御装置３０は、従来の制御装置が実行する判定処理を第１判定処理として実行した後に、第２判定処理を実行する。
図８（ａ）は、図８（ｂ）のＡ１部及びＡ２部を拡大した部分拡大図である。図８（ａ）に示す間隔Ｔ１からＴ３は、欠歯部分であるか否かを判定する対象とする部分（以下単に、判定部分という）が検知装置２０を通過する前に取得部３１が検知信号を取得した取得間隔を表す。また、図８（ａ）に示す間隔Ｔ４は、判定部分が検知装置２０を通過するために要した時間間隔を表す。更に、図８（ａ）に示す間隔Ｔ５からＴ７は、判定部分が検知装置２０を通過した後に取得部３１が検知信号を取得した取得間隔を表す。
【００４０】
先ず、本件発明の制御装置３０を構成する制御部３２は、通過前の取得間隔Ｔ１からＴ３と通過後の取得間隔Ｔ５からＴ７との平均間隔「Tave」を算出する。次に、制御部３２は、判定部分の通過時間Ｔ４が、欠歯部分の検知装置２０を通過するために要する時間間隔であるか否かを平均間隔「Tave」に基づいて判定する。具体的には、制御部３２は、２つの歯を欠く欠歯部分の通過時間は平均間隔「Tave」の約３倍であると判断する。つまり、制御部３２は、間隔Ｔ５が平均間隔「Tave」の約３倍である場合に、欠歯部分が検知装置２０を通過したと判定する。その後、制御部３２は、第２判定処理の実行を終了する。尚、間隔Ｔ５が平均間隔「Tave」の約３倍であるか否かを判断するために制御部３２が実行する処理については、図１３を参照して後に詳細に説明する。
この構成によれば、判定対象とする部分の通過前の取得間隔と通過後の取得間隔とに基づいて欠歯部分であるか否かを判定するため、エンジン１０の回転数が変化した場合であっても、精度良くロータ１２の位置を検出できるだけでなく、検出したロータ１２の位置に基づいて精度良くエンジン１０を制御できる。
【００４１】
図８（ｂ）は、本件発明の制御装置３０が第１判定処理で判定した欠歯部分に基づいて検出した回転角度を確定するために実行するソフトウェア処理について概説するための図である。
図８（ｂ）に示すように、本件発明の制御装置３０を構成する制御部３２は、第１判定処理を実行することで、欠歯部分が検知装置２０を通過したと最初に判定する。次に、制御部３２は、従来の制御部と同様に、通過したと判定した欠歯部分の位置に基づいてロータ１２の回転角度を検出すると共に、クランクの位置を検出した回転角度で定まる位置として仮確定する。また、制御部３２は、従来の制御部と異なり、第２判定処理を実行することで、第１判定処理で用いた取得間隔の数よりも多い取得間隔を用いて欠歯部分が検知装置２０を通過したか否かを再度判定する。その後、制御部３２は、第２判定処理により欠歯部分が通過したと判断するとクランクの位置を本確定する。
この構成によれば、第１判定処理で判定した欠歯部分の通過を第１判定処理で用いた取得間隔の数よりも多い取得間隔を用いて再判定するため、エンジンの回転数が減少した場合であっても、精度良く短時間でロータ１２の位置を検出できるだけでなく、検出したロータ１２の位置に基づいて精度良く短時間でエンジンを制御できる。つまり、欠歯部分が検知装置２０を再度通過するまで待つことなく、制御部３２は、クランク位置を本確定できる。
【００４２】
また、クランク位置を確定した後に、制御部３２は、検知装置２０から歯の通過を検知した検知信号を取得すると回転角度を「10」ＣＡ分だけ更新すると共に、更新した回転角度に基づいてクランクの位置を更新する。その後、制御部３２は、欠歯部分が検知装置２０を通過したと再度判定すると、同様に、通過したと判定した欠歯部分の位置に基づいてロータ１２の回転角度を新たに検出する。その後、制御部３２は、新たに検出した回転角度と、更新した回転角度とが一致するか否かを検査する。制御部３２は、一致しない判断する場合には、異常と判断して、再度、回転角度の検出を行う。
この構成によれば、歯の通過を検知して更新した回転角度と、欠歯部分と判定した他の部分の位置に基づいて検出した他の回転角度とを比較して回転角度を検査するため、精度良くロータ１２の位置を検出できるだけでなく、検出したロータ１２の位置に基づいて精度良くエンジン１０を制御できる。
【００４３】
次に、図９を参照して、制御部３２の構成について、機能に着目して説明を行う。図９は、制御部３２の一構成例を表す機能ブロック図である。
制御部３２は、格納部３２ｆ、第１判定部３２ｇ、回転角検出部３２ｈ、更新部３２ｉ、回転数検出部３２ｊ、安定判定部３２ｋ、加算部３２ｌ、補正部３２ｍ、第２判定部３２ｎ、検査部３２ｏ、エンジン制御部３２ｐ、及び記憶部３２ｑで構成される。
格納部３２ｆは、取得部３１及び記憶部３２ｑに接続する。格納部３２ｆは、実行部３２ａが格納処理を実行することで実現される。格納部３２ｆは、取得部３１が検知装置２０から検知信号を取得して出力するパルス信号のパルス幅（取得間隔）を、取得した順序と関連付けて記憶部３２ｑへ格納する。
【００４４】
第１判定部３２ｇは、回転角検出部３２ｈ、第２判定部３２ｎ、及び記憶部３２ｑに接続する。第１判定部３２ｇは、実行部３２ａが第１判定処理を実行することで実現される。第１判定部３２ｇは、記憶部３２ｑが記憶するパルス幅（取得間隔）を用いて検知装置２０を通過したロータ１２の部分が歯を欠く欠歯部分であるか否かを判定する。第１判定部３２ｇは、判定した判定結果を回転角検出部３２ｈ及び第２判定部３２ｎへ出力する。尚、第１判定処理については、図１３を参照して詳細に説明する。
【００４５】
回転角検出部３２ｈは、第１判定部３２ｇ、更新部３２ｉ、第２判定部３２ｎ、及び検査部ｏに接続する。回転角検出部３２ｈは、実行部３２ａが回転角検出処理を実行することで実現される。回転角検出部３２ｈは、第１判定部３２ｇ及び第２判定部３２ｎで欠歯部分であると判定した部分のロータ１２における位置に基づいて回転角度を検出する。また、回転角検出部３２ｈは、検出した回転角度に基づいてクランクの位置を表すクランクカウンタを検出する。その後、回転角検出部３２ｈは、検出した回転角及びクランクカウンタを更新部３２ｉ及び検査部３２ｏへ出力する。具体的には、ロータ１２において「130」ＣＡ及び「140」ＣＡの位置に欠歯が存在するため、回転角検出部３２ｈは、欠歯部分が検知装置２０を通過したと第１判定部３２ｇが判定すると、ロータ１２の回転角度を「150」ＣＡとして検出する。
【００４６】
更新部３２ｉは、取得部３１、回転角検出部３２ｈ、検査部３２ｏ、及びエンジン制御部３２ｐに接続する。更新部３２ｉは、実行部３２ａが更新処理を実行することで実現される。更新部３２ｉは、取得部３１が検知装置２０から検知信号を取得した場合に、回転角検出部３２ｈで検出した回転角度及びクランクカウンタを更新する。具体的には、更新部３２ｉは、取得部３１からパルス信号を取得する毎に、回転角検出部３２ｈが検出した回転角度を「10」ＣＡ増加させて更新する。また、更新部３２ｉは、更新した回転角度に基づいてクランクカウンタを「30」ＣＡ毎に更新する。その後、更新部３２ｉは、更新した回転角度及びクランクカウンタをエンジン制御部３２ｐ及び検査部３２ｏにより参照される。
【００４７】
回転数検出部３２ｊは、取得部３１、安定判定部３２ｋ、及び第２判定部３２ｎに接続する。回転数検出部３２ｊは、実行部３２ａが回転数検出処理を実行することで実現される。回転数検出部３２ｈは、取得部３１が検知信号を取得する取得間隔を用いて歯が設けられたロータ１２を有するクランクが構成するエンジン１０の回転数を検出する。その後、回転数検出部３２ｈは、検出した回転数を安定判定部３２ｋ及び第２判定部３２ｎへ出力する。
【００４８】
安定判定部３２ｋは、回転数検出部３２ｊ、加算部３２ｌ、及び不図示のスタータスイッチに接続する。尚、スタータスイッチは、エンジンを始動させる場合に、ＯＮ状態となるスイッチである。安定判定部３２ｋは、実行部３２ａが安定判定処理を実行することで実現される。安定判定部３２ｋは、スタータスイッチの状態及び回転数検出部３２ｊが検出したエンジン１０の回転数に基づいてロータ１２を有するクランクが構成するエンジン１０の回転が安定しているか否かを判定する。安定判定部３２ｋは、判定結果を加算部３２ｌへ出力する。
【００４９】
加算部３２ｌは、安定判定部３２ｋ、第２判定部３２ｎ、及び記憶部３２ｑに接続する。加算部３２ｌは、実行部３２ａが加算処理を実行することで実現される。加算部３２ｌは、記憶部３２ｑが記憶する複数のパルス幅（取得間隔）の和を算出したパルス加算値を算出する。特に、加算部３２ｌは、安定判定部３２ｋがエンジン１０の回転が安定していないと判定した場合に、安定していると判定した場合に用いる取得間隔の数よりも多い取得間隔の和を算出する。その後、加算部３２ｌは、算出したパルス加算値を補正部３２ｍ及び第２判定部３２ｎへ出力する。
この構成によれば、エンジン１０の回転が安定していないと判定した場合に、安定していると判定した場合に用いる取得間隔の数よりも多い取得間隔を用いて、欠歯部分であるか否かを第２判定部３２ｎが判定するため、精度良くロータ１２の位置を検出できるだけでなく、検出したロータ１２の位置に基づいて精度良くエンジン１０を制御できる。
【００５０】
尚、加算部３２ｌは、第１判定部３２ｇで用いた取得間隔の数よりも多い取得間隔の和を算出する。本実施例において、第１判定部３２ｇは唯１個のパルス幅（取得間隔）を用いて欠歯部分の通過を判定し、第２判定部３２ｎは、加算部３２ｌが算出した通過前３個と通過後３個との計６個のパルス幅（取得間隔）の和を用いて欠歯部分の通過を判定するとして説明を行うが、これに限定される訳ではない。
この構成によれば、第１判定部３２ｇを実現する第１判定処理で判定した欠歯部分の通過を第１判定処理で用いた取得間隔の数よりも多い取得間隔を用いて再判定するため、エンジンの回転数が減少した場合であっても、精度良く短時間でロータ１２の位置を検出できるだけでなく、検出したロータ１２の位置に基づいて精度良く短時間でエンジンを制御できる。
【００５１】
補正部３２ｍは、加算部３２ｌ、第２判定部３２ｎ、及び記憶部３２ｑに接続する。補正部３２ｍは、実行部３２ａが補正処理を実行することで実現される。補正部３２ｍは、記憶部３２ｑが記憶するロータ１２の判定部分の通過前の取得間隔と通過後の取得間隔とに基づいて、記憶部３２ｑが記憶する欠歯部分が欠く欠歯の数を表す閾値「α」及び「β」を補正する。
【００５２】
具体的には、補正部３２ｍは、判定部分の通過前の取得間隔が通過後の取得間隔よりも小さい場合（つまり、エンジン回転数が減少した場合）に、欠歯部分が欠く欠歯の数を表す閾値「α」及び「β」を所定の量だけ小さい値に補正する。また、補正部３２ｍは、判定部分の通過前の取得間隔が通過後の取得間隔よりも大きい場合（つまり、エンジン回転数が増加した場合）に、欠歯部分が欠く欠歯の数を表す閾値「α」及び「β」を所定の量だけ大きい値に補正する。その後、補正部３２ｍは、補正後の閾値「α」及び「β」を第２判定部３２ｎへ出力する。
この構成によれば、エンジン１０の回転数の減少量は時間と共に増加するため、欠歯部分が欠く欠歯の数を所定の量だけ大きい値に補正することで、精度良くロータ１２の位置を検出できるだけでなく、検出したロータ１２の位置に基づいて精度良くエンジン１０を制御できる。また、この構成によれば、エンジン１０の回転数の増加量は時間と共に減少するため、欠歯部分が欠く欠歯の数を所定の量だけ小さい値に補正することで、精度良くロータ１２の位置を検出できるだけでなく、検出したロータ１２の位置に基づいて精度良くエンジン１０を制御できる。
【００５３】
第２判定部３２ｎは、第１判定部３２ｇ、回転角検出部３２ｈ、回転数検出部３２ｊ、加算部３２ｌ、及び補正部３２ｍに接続する。第２判定部３２ｎは、実行部３２ａが第２判定処理を実行することで実現される。第２判定部３２ｎは、第１判定部３２ｇを実現する第１判定処理において判定部分が欠歯部分であると判定した場合、又は回転数検出部３２ｊを実現する回転数検出処理で検出した回転数が増加した場合に、加算部３２ｌが算出したパルス加算値と補正部３２ｍが補正した閾値「α」及び「β」とを用いて欠歯部分であるか否かを再判定する。
【００５４】
この構成によれば、第１判定処理で判定した欠歯部分の通過を第１判定処理で用いた取得間隔の数よりも多い取得間隔を用いて再判定するため、エンジン１０の回転数が減少した場合であっても、精度良く短時間でロータの位置を検出できるだけでなく、検出したロータの位置に基づいて精度良く短時間でエンジン１０を制御できる。
また、この構成によれば、エンジン１０の回転数が増加する場合に欠歯部分の通過を再判定するため、エンジン１０の回転数が増加した場合であっても、精度良くロータの位置を検出できるだけでなく、検出したロータの位置に基づいて精度良くエンジン１０を制御できる。
【００５５】
具体的には、第２判定部３２ｎは、欠歯部分であるか否かを判定する対象とする判定部分が検知装置２０を通過する前に取得部３１が取得した取得間隔と通過した後に取得した取得間隔と、補正部３２ｍが補正した欠歯の数とに基づいて、部分が欠歯部分であるか否かを判定する。その後、第２判定部３２ｎは、判定した判定結果を回転角検出部３２ｈへ出力する。尚、第２判定処理については、図１５を参照して後に詳細に説明を行う。
【００５６】
この構成によれば、判定対象とする部分の通過前の取得間隔と通過後の取得間隔とに基づいて欠歯部分であるか否かを判定するため、エンジン１０の回転数が変化した場合であっても、精度良くロータの位置を検出できるだけでなく、検出したロータの位置に基づいて精度良くエンジン１０を制御できる。
【００５７】
検査部３２ｏは、更新部ｉ及び回転角検出部３２ｈに接続する。検査部３２ｏは、実行部３２ａが検査処理を実行することで実現される。検査部３２ｏは、更新部３２ｉを実現する更新処理で更新した回転角度と、回転角検出部３２ｈを実現する回転角検出処理で再度検出した他の回転角度とを比較して回転角度を検査する。具体的には、検査部３２ｏは、更新部３２ｉで更新した回転角度で定まるクランクカウンタと、回転角検出部３２ｈで再度検出した他の回転角度で定まる他のクランクカウンタとが異なる場合に異常を検出する。検査部３２ｏは、異常を検出した場合に、クランクの位置が不明となった（以下、クランク破壊という）と判断する。
【００５８】
この構成によれば、歯の通過を検知して更新した回転角度と、欠歯部分と判定した他の部分の位置に基づいて検出した他の回転角度とを比較して回転角度を検査するため、精度良くロータ１２の位置を検出できるだけでなく、検出したロータ１２の位置に基づいて精度良くエンジン１０を制御できる。
【００５９】
エンジン制御部３２ｐは、更新部３２ｉ及びエンジン１０に接続する。エンジン制御部３２ｐは、更新部３２ｉが更新するロータ１２の回転角度で定まるクランク位置に基づいて、例えば、インジェクタ等を制御してエンジン１０を制御する。
記憶部３２ｑは、格納部３２ｆ、第１判定部３２ｇ、加算部３２ｌ、及び補正部３２ｍに接続する。記憶部３２ｑは、例えば、読書可能記憶装置３２ｃで構成される。記憶部３２ｑは、上記各種データを記憶する。特に、記憶部３２ｑは、格納部３２ｆが格納したパルス幅（取得間隔）及び所定の閾値を記憶する。記憶部３２ｑが記憶するデータは、第１判定部３２ｇ、加算部３２ｌ、及び補正部３２ｍによって参照される。
【００６０】
次に、図１０を参照して、制御部３２が実行するソフトウェア処理について説明する。図１０は、制御部３２が実行するソフトウェア処理である定期処理の一例を表すフローチャートである。尚、制御部３２は、エンジン１０の回転数の変化を検出できる程度に短い周期で定期処理を実行する。本実施例においては、制御部３２は、４ｍｓの周期で定期処理を実行するとして説明するが、これに限定される訳ではない。
先ず、制御部３２は、検知装置２０が出力する検知信号を取得して取得部３１が出力するパルス幅（取得間隔）に基づいてエンジン回転数を検出する（ステップＳ０１）。次に、制御部３２は、例えば、ステップＳ０１で検出したエンジン回転数に基づいて、エンジン１０が停止したか否かを判断する（ステップＳ０２）。制御部３２は、エンジン１０が停止したと判断する場合にはステップＳ０３の処理を、そうでない場合にはステップＳ０４の処理を実行する。
【００６１】
ステップＳ０２において、エンジン１０が停止したと判断すると、制御部３２は、初期化フラグ「initflag」に値「ON」を代入して立ち上げる（ステップＳ０３）。尚、初期化フラグ「initflag」は、エンジン１０が始動する場合に、クランクの位置を表すクランクカウンタ等の変数を初期化した後にロータ１２の回転角度を再度検出してクランクの位置を確定する必要があることを表すフラグである。これは、エンジン１０が停止する場合にクランクが逆回転等することがあり、クランクの位置が不明となる場合があるためである。
【００６２】
ステップＳ０２において、エンジン１０が停止していないと判断した場合、又はステップＳ０３を実行した後に、制御部３２は、エンジン回転数に基づいて、エンジン１０の回転が安定しているか否かを判断する（ステップＳ０４）。具体的には、制御部３２は、エンジン回転数が所定の閾値を超えたか否かを判断する。本実施例において、所定の閾値は「500」ｒｐｍ（Revolutions Per Minute）であるとして説明するが、これに限定される訳ではない。制御部３２は、回転数に基づいてエンジン１０の回転が安定していると判断する場合にはステップＳ０５の処理を、そうでない場合にはステップＳ０７の処理を実行する。
【００６３】
ステップＳ０４において、エンジン回転数に基づいて、エンジン１０の回転が安定したと判断した場合には、制御部３２は、スタータスイッチの状態に基づいてエンジン１０の回転が安定しているか否かを再度判断する（ステップＳ０５）。具体的には、制御部３２は、スタータスイッチがＯＮ状態にある場合にエンジン１０の回転が安定していないと判断する。制御部３２は、スタータスイッチの状態に基づいてエンジン１０の回転が安定していると判断する場合にはステップＳ０６の処理を、そうでない場合にはステップＳ０７の処理を実行する。
【００６４】
ステップＳ０４において、スタータスイッチの状態に基づいて、エンジン１０の回転が安定したと判断した場合には、第２判定処理で欠歯部分の通過を判定するための用いるパルス幅（取得間隔）の数「n」（以下単に、サンプリング数という）を、判定部分の通過前及び通過後ともに回転数が安定していない場合よりも少ない値とする（ステップＳ０６）。本実施例において、エンジン１０の回転が安定している場合にはサンプリング数「n」を値「3」とするとして説明するが、これに限定される訳ではない。その後、制御部３２は、定期処理の実行を終了する。
【００６５】
ステップＳ０４において、エンジン回転数に基づいてエンジンの回転が安定でないと判断した場合、又はステップＳ０５において、スタータスイッチの状態に基づいてエンジンの回転が安定でないと判断した場合には、判定部分の通過前及び通過後ともにサンプリング数「n」を回転数が安定しいる場合よりも多い値とする（ステップＳ０７）。本実施例において、エンジン１０の回転が安定しいない場合にはサンプリング数「n」を値「6」とするとして説明するが、これに限定される訳ではない。その後、制御部３２は、定期処理の実行を終了する。
【００６６】
この構成によれば、エンジンの回転が安定していないと判定した場合に、安定していると判定した場合に用いる取得間隔の数よりも多い取得間隔を用いて、欠歯部分であるか否かを第２判定処理において判定するため、精度良くロータの位置を検出できるだけでなく、検出したロータの位置に基づいて精度良くエンジン１０を制御できる。
【００６７】
尚、本実施例において、ステップＳ０１の処理が回転数検出部３２ｊを実現する回転数検出処理に相当し、ステップＳ０４からＳ０７の処理が安定判定部３２ｋを実現する安定判定処理に相当する。
【００６８】
次に、図１１を参照して、制御部３２が実行するソフトウェア処理について引き続き説明する。図１１は、制御部３２が実行するソフトウェア処理であるＮＥ３６割込処理の一例を表すフローチャートである。尚、制御部３２は、取得部３１がパルス信号をＮＥ３６ポートを介して出力する場合に、他のソフトウェア処理の実行に割り込んでＮＥ３６割込処理を実行する。
先ず、制御部３２は、取得部３１がパルス信号を出力する時間間隔であるパルス幅（取得間隔）「Tnow」を計測する（ステップＳ１１）。次に、制御部３２は、ステップＳ１１で計測したパルス幅「Tnow」を記憶部３２ｑへ格納する格納処理を実行する（ステップＳ１２）。その後、制御部３２は、格納したパルス幅「Tnow」を用いてクランク位置を仮に確定する仮確定処理を実行する（ステップＳ１３）。
【００６９】
その後、制御部３２は、定期処理により定めたサンプリング数「n」個のパルス幅の和を算出する加算処理を実行する（ステップＳ１４）。次に、制御部３２は、第２判定処理で用いる判定閾値「α」及び「β」を補正する補正処理を実行する（ステップＳ１５）。次に、制御部３２は、ステップＳ１４で算出したパルス幅の和と、ステップＳ１５で補正した判定閾値「α」及び「β」とを用いて欠歯を判定する第２判定処理を実行する（ステップＳ１６）。その後、制御部３２は、ステップＳ１６で第２判定処理を実行した後に仮確定したクランク位置を本確定等する判定後処理を実行する（ステップＳ１７）。その後、制御部３２は、ＮＥ３６割込処理の実行を終了する。
【００７０】
尚、ステップＳ１２の処理が格納部３２ｆを実現する格納処理に相当し、ステップＳ１４の処理が加算部３２ｌを実現する加算処理に相当し、ステップＳ１５の処理が補正部３２ｍを実現する補正処理に相当し、ステップＳ１６の処理が第２判定部３２ｎを実現する第２判定処理に相当に相当する。
【００７１】
次に、図１２を参照して、格納部３２ｆを実現するために制御部３２が実行する格納処理について説明する。図１２は、制御部３２が実行する格納処理の一例を表すフローチャートである。
先ず、制御部３２は、初期化フラグ「initflag」が立っているか否かを判断する（ステップＳ２１）。制御部３２は、初期化フラグ「initflag」が立っていると判断する場合には、ステップＳ２４の処理を、そうでない場合にはステップＳ２２の処理を実行する。
【００７２】
ステップＳ２１において、制御部３２は、初期化フラグ「initflag」が立っていないと判断する場合には、パルス幅を格納するバッファ「TBUF」における位置を表すバッファインデックス「index」を更新する（ステップＳ２２）。具体的には、制御部３２は、バッファインデックス「index」の値を、値「0」から「15」の間で、値「1」ずつインクリメントする。つまり、制御部３２は、インクリメントした後の値が「16」の場合に値「0」とする。次に、制御部３２は、図１１のステップＳ１１で計測したパルス幅（取得間隔）「Tnow」を、バッファインデクス「index」が示すバッファ「TBUF」の位置に格納する（ステップＳ２３）。その後、制御部３２は、格納処理の実行を終了する。
【００７３】
ステップＳ２１において、制御部３２は、初期化フラグ「initflag」が立っていないと判断する場合には、バッファインデックス「index」を初期化する（ステップＳ２４）。具体的には、制御部３２は、バッファインデックス「index」の値を「0」として初期化する。次に、制御部３２は、バッファ「TBUF」を初期化する（ステップＳ２５）。具体的には、制御部３２は、バッファ「TBUF」のすべての位置に対して計測したパルス幅「Tnow」を格納する。その後、制御部３２は、初期化フラグ「initflag」を立ち下げる（ステップＳ２６）。制御部３２は、ステップＳ２４及びＳ２５の初期化処理の実行を終了したためである。その後、制御部３２は、格納処理の実行を終了する。
【００７４】
次に、図１３を参照して、制御部３２が実行する仮確定処理について説明する。図１３は、制御部３２が実行する仮確定処理の一例を表すフローチャートである。
先ず、制御部３２は、計測したパルス幅（取得間隔）「Tnow」をバッファ「TBUF」のバッファインデックス「index」が示す位置から取得する（ステップＳ３１）。次に、制御部３２は、一つ前「index-1」に格納したパルス幅をバッファ「TBUF」から取得する（ステップＳ３２）。その後、制御部３２は、計測したパルス幅「Tnow」が一つ前に格納したパルス幅「TBUF[index-1]」に基づいて推測される欠歯部分の通過に要する時間長であるか否かを判断する（ステップＳ３３）。制御部３２は、計測したパルス幅「Tnow」が欠歯部分の通過時間長と判断した場合にはステップＳ３４の処理を実行し、そうでない場合にはステップＳ３７の処理を実行する。
【００７５】
具体的には、制御部３２は、計測したパルス幅「Tnow」を一つ前に格納したパルス幅「TBUF[index-1]」で除した値「Tnow/TBUF[index-1]」が、欠歯の数で定まる閾値「α」より大きく、かつ閾値「β」よりも小さい場合に、欠歯部分の通過時間長であると判断する。本実施例においては、欠歯の数は「2」個であるため、閾値「α」は値「2.5」であり、閾値「β」は値「3.5」であるとして説明するが、これに限定される訳ではない。
【００７６】
ステップＳ３３において、制御部３２は、計測したパルス幅「Tnow」が欠歯部分の通過時間長であると判断した場合には、判定部分は欠歯部分であると判定する（ステップＳ３４）。その後、制御部３２は、欠歯部分は「130」ＣＡ及び「140」ＣＡに位置するため、クランクアングルを「150」ＣＡとして検出する（ステップＳ３５）。次に、制御部３２は、クランクアングルに基づいてクランクカウンタを値「4」として検出する（ステップＳ３６）。その後、制御部３２は、仮確定処理の実行を終了する。
【００７７】
ステップＳ３３において、制御部３２は、計測したパルス幅「Tnow」が欠歯部分の通過時間長ではないと判断した場合には、判定部分を有歯部分と判定する（ステップＳ３７）。その後、制御部３２は、クランクアングルを「10」ＣＡ分だけ更新する（ステップＳ３８）。次に、制御部３２は、クランクカウンタを「30」ＣＡ毎に値「1」だけ更新する（ステップＳ３９）。その後、制御部３２は、仮確定処理の実行を終了する。
【００７８】
尚、本実施例において、ステップＳ３１からＳ３４及びＳ３７の処理が第１判定部３２ｇを実現する第１判定処理に相当し、ステップＳ３５の処理が回転角検出部１３２ｈを実現する回転角検出処理に相当し、ステップＳ３８及びＳ３９の処理が更新部３２ｉを実現する更新処理に相当する。
【００７９】
次に、図１４を参照して、加算部３２ｌを実現するために制御部３２が実行する加算処理について説明する。図１４は、制御部３２が実行する加算処理の一例を表すフローチャートである。
先ず、制御部３２は、パルス加算値に初期値「0」を代入して初期化する（ステップＳ４１）。尚、パルス加算値は、複数のパルス値を加算したものをいう。パルス加算値は、判定部分が通過する前のパルス値を加算したパルス加算値「Tsumf」と、通過した後のパルス値を加算したパルス値「Tsuma」とに類別される。制御部３２は、ステップＳ４３からＳ４７の処理を実行して通過後のパルス加算値「Tsuma」を算出し、ステップＳ４９からＳ５３の処理を実行して通過後のパルス加算値Tsumfを算出する。
【００８０】
次に、制御部３２は、パルス加算値を算出する演算に用いる演算用インデックス「pos」に対して、バッファインデックス「index」の値を代入して初期化する（ステップＳ４２）。その後、ループ回数を数えるループカウンタ「loop」に対して値「0」を代入して初期化する（ステップＳ４３）。次に、制御部３２は、サンプリング数「n」回ループを繰り返したか否かを判断する。具体的には、制御部３２は、ループカウンタ「loop」の値が図１０の安定判定処理で定めたサンプリング数「n」よりも少ないか否かを判断する（ステップＳ４４）。制御部３２は、ループカウンタ「loop」の値がサンプリング数「n」よりも少ないと判断する場合にはステップＳ４５の処理を、そうでない場合にはステップＳ４８の処理を実行する。
【００８１】
ステップＳ４４において、制御部３２は、ループカウンタ「loop」の値がサンプリング数「n」よりも少ないと判断した場合には、演算用インデックス「pos」が示すバッファ「TBUF」の位置に格納されたパルス幅をパルス加算値「Tsuma」に加算する（ステップＳ４５）。次に、制御部３２は、演算用インデックス「pos」を値「1」だけデクリメントして更新する（ステップＳ４６）。尚、制御部３２は、演算用インデックス「pos」をデクリメントした後の値が「-1」である場合には値「15」とする。次に、制御部３２は、ループカウンタ「loop」を値「1」だけインクリメントして更新する（ステップＳ４７）。その後、制御部３２は、ステップＳ４４に戻り上記処理を繰り返す。
【００８２】
ステップＳ４４において、制御部３２は、ループカウンタ「loop」の値がサンプリング数「n」以上であると判断した場合には、欠歯想定パルス値を変数「Tkake」に対して代入する（ステップＳ４８）。尚、欠歯想定パルス値とは、欠歯部分であると想定する部分（つまり、欠歯部分であるかを判定する判定部分）が検知装置２０を通過するための要した時間間隔を表すパルス幅をいう。
【００８３】
その後、制御部３２は、ループカウンタ「loop」に対して値「0」を代入して再度初期化する（ステップＳ４９）。次に、制御部３２は、ループカウンタ「loop」の値がサンプリング数「n」よりも少ないか否かを判断して、サンプリング数「n」回ループを繰り返したか否かを判断する（ステップＳ５０）。制御部３２は、ループカウンタ「loop」の値がサンプリング数「n」よりも少ないと判断する場合にはステップＳ５１の処理を、そうでない場合にはステップＳ５４の処理を実行する。
【００８４】
ステップＳ５０において、制御部３２は、ループカウンタ「loop」の値がサンプリング数「n」よりも少ないと判断した場合には、演算用インデックス「pos」が示すバッファ「TBUF」の位置に格納されたパルス幅をパルス加算値「Tsumf」に加算する（ステップＳ５１）。次に、制御部３２は、演算用インデックス「pos」を値「1」だけデクリメントして更新する（ステップＳ５２）。次に、制御部３２は、ループカウンタ「loop」を値「1」だけインクリメントして更新する（ステップＳ５３）。その後、制御部３２は、ステップＳ５０に戻り上記処理を繰り返す。
【００８５】
ステップＳ５０において、制御部３２は、ループカウンタ「loop」の値がサンプリング数「n」以上であると判断した場合には、判定部分の通過前後におけるパルス幅の平均間隔「Tave」を算出する（ステップＳ５４）。尚、平均間隔「Tave」は、通過前のパルス加算値「Tsumf」と通過後のパルス加算値「Tsuma」との和をサンプリング数「n」の「2」倍で除算した値である。その後、制御部３２は、加算処理の実行を終了する。
【００８６】
次に、図１５（ａ）を参照して、補正部３２ｍを実現するために制御部３２が実行する補正処理について説明する。図１５（ａ）は、制御部３２が実行する補正処理の一例を表すフローチャートである。
先ず、制御部３２は、欠歯部分であるかを判定するための閾値「α」及び「β」の値を補正する必要がある程度に、判定部分の通過前の取得間隔が通過した後の取得間隔よりも小さい（つまり、エンジン回転数が減少した）か否かを判断する（ステップＳ６１）。制御部３２は、通過前の取得間隔が通過後の取得間隔よりも小さいために補正の必要があると判断する場合にはステップＳ６２の処理を実行し、そうでない場合にはステップＳ６３の処理を実行する。具体的には、制御部３２は、通過後のパルス加算値「Tsuma」を通過前のパルス加算値「Tsuma」で除算した値が所定の閾値「X」より大きい場合に、補正の必要があると判断する。本実施例において、閾値「X」は値「2」であるとして説明するが、これに限定される訳ではない。
【００８７】
ステップＳ６１において、通過前の取得間隔が通過後の取得間隔よりも小さいために補正の必要があると判断する場合には、制御部３２は、閾値「α」及び「β」の値を所定の量だけ小さい値に補正する（ステップＳ６２）。本実施例において、制御部３２は、閾値「α」及び「β」の値に対して値「0.9」を乗算した値とするとして説明するが、これに限定される訳ではない。その後、制御部３２は、補正処理の実行を終了する。
【００８８】
この構成によれば、エンジン１０の回転数の増加量は時間と共に減少するため、欠歯部分が欠く欠歯の数を所定の量だけ小さい値に補正することで、精度良くロータの位置を検出できるだけでなく、検出したロータの位置に基づいて精度良くエンジン１０を制御できる。
【００８９】
ステップＳ６１において、補正の必要がないと判断する場合には、制御部３２は、補正する必要がある程度に、通過前の取得間隔が通過した後の取得間隔よりも大きい（つまり、エンジン回転数が増加した）か否かを判断する（ステップＳ６３）。制御部３２は、補正の必要があると判断する場合にはステップＳ６４の処理を実行し、そうでない場合には補正処理の実行を終了する。具体的には、制御部３２は、通過後のパルス加算値「Tsuma」を通過前のパルス加算値「Tsumf」で除算した値が所定の閾値「Y」より小さい場合に、補正の必要があると判断する。本実施例において、閾値「Y」は値「0.5」であるとして説明するが、これに限定される訳ではない。
【００９０】
ステップＳ６３において、制御部３２は、通過前の取得間隔が通過後の取得間隔よりも大きいために補正の必要があると判断する場合には、閾値「α」及び「β」の値を所定の量だけ大きい値に補正する（ステップＳ６４）。本実施例において、制御部３２は、閾値「α」及び「β」の値に対して値「1.1」を乗算した値とするとして説明するが、これに限定される訳ではない。その後、制御部３２は、補正処理の実行を終了する。
【００９１】
この構成によれば、エンジン１０の回転数の減少量は時間と共に増加するため、欠歯部分が欠く欠歯の数を所定の量だけ大きい値に補正することで、精度良くロータの位置を検出できるだけでなく、検出したロータの位置に基づいて精度良くエンジン１０を制御できる。
【００９２】
次に、図１５（ｂ）を参照して、第２判定部３２ｎを実現するために制御部３２が実行する第２判定処理について説明する。図１５（ｂ）は、制御部３２が実行する第２判定処理の一例を表すフローチャートである。
先ず、制御部３２は、計測したパルス幅「Tnow」が、図１４のステップＳ５４で算出した平均パルス幅「Tave」に基づいて推測される欠歯部分の通過に要する時間長であるか否かを判断する（ステップＳ７１）。制御部３２は、計測したパルス幅「Tnow」が欠歯部分の通過時間長であると判断する場合にはステップＳ７３の処理を実行し、そうでない場合にはステップＳ７２の処理を実行する。
【００９３】
ステップＳ７１において、制御部３２は、計測したパルス幅「Tnow」が欠歯部分の通過時間長でないと判断した場合には、判定対象とする部分が有歯部分であると判定すると共に、判定結果をフラグ変数「kakeflag」に格納する（ステップＳ７２）。具体的には、制御部３２は、フラグ変数「kakeflag」に値「OFF」を代入して立ち下げ、有歯部分と判定した結果を格納する。その後、制御部３２は、第２判定処理の実行を終了する。
【００９４】
ステップＳ７１において、制御部３２は、計測したパルス幅「Tnow」が欠歯部分の通過時間であると判断した場合には、判定対象とする部分が欠歯部分であると判定すると共に、判定結果をフラグ変数「kakeflag」に格納する（ステップＳ７３）。具体的には、制御部３２は、フラグ変数「kakeflag」に値「ON」を代入して立ち上げ、欠歯部分と判定した結果を格納する。その後、制御部３２は、第２判定処理の実行を終了する。
【００９５】
この構成によれば、第１判定処理で判定した欠歯部分の通過を第１判定処理で用いた取得間隔の数よりも多い取得間隔を用いて再判定するため、エンジン１０の回転数が減少した場合であっても、精度良く短時間でロータの位置を検出できるだけでなく、検出したロータの位置に基づいて精度良く短時間でエンジン１０を制御できる。
【００９６】
また、この構成によれば、判定対象とする部分の通過前の取得間隔と通過後の取得間隔とに基づいて欠歯部分であるか否かを判定するため、エンジン１０の回転数が変化した場合であっても、精度良くロータの位置を検出できるだけでなく、検出したロータの位置に基づいて精度良くエンジン１０を制御できる。
【００９７】
次に、図１６及び１７を参照して、制御部３２が実行する判定後処理について説明する。図１６は、制御部３２が実行する判定後処理の一例を表すフローチャートの一部であり、図１７は、制御部３２が実行する判定後処理の一例を表すフローチャートの他部である。
先ず、制御部３２は、図１３の第１判定処理で欠歯部分と判定した部分の位置に基づいてクランクの位置を仮確定する前、又は後述するステップＳ９４で本確定する前であるか否かを判断する（ステップＳ８１）。制御部３２は、確定前であると判断する場合にはステップＳ８２の処理を実行し、そうでない場合にはステップＳ８３の処理を実行する。
【００９８】
ステップＳ８１において、制御部３２は、確定前であると判断した場合には、エンジン回転数が増加しているか否かを判断する（ステップＳ８２）。制御部３２は、エンジン回転数が増加していると判断する場合にはステップＳ９０の処理を、そうでない場合には判定後処理の実行を終了する。
【００９９】
ステップＳ８１において、制御部３２は、確定後であると判断した場合には、ステップＳ８３、Ｓ８４，及びＳ８７の処理を実行することで、仮確定又は本確定したクランクの位置を更新した更新位置を検査する。具体的には、制御部３２は、更新したクランク位置を表すクランクカウンタの値が、第２判定処理において欠歯部分が通過したと判定する場合に検出されるべき値であるか否かを検査する（ステップＳ８３）。本実施例においては、制御部３２は、クランクカウンタ「ccrank」の値が整数値「4+n/3」又は「16+n/3」であるか否かを判断する。これは、クランクカウンタ「ccrank」の値が「4」又は「16」となる位置に欠歯部分が存在し、かつ制御部３２は歯の通過を表す信号を取得部３１から「3」回取得する度に（つまり、「30」ＣＡ毎）にクランクカウンタ「ccrank」の値を更新するためである。尚、「n」は、図１０を参照して説明した第２判定処理で用いるサンプリング数を表す。制御部３２は、クランクカウンタの値が第２判定処理において欠歯部分と判定した場合に検出されるべき値であると判断する場合にはステップＳ８４の処理を実行し、そうでない場合にはステップＳ８７の処理を実行する。
【０１００】
ステップＳ８３において、クランクカウンタの値が第２判定処理において欠歯部分と判定した場合に検出されるべき値であると判断した場合には、制御部３２は、第２判定処理において欠歯部分と判定したか否かを判断する（ステップＳ８４）。具体的には、制御部３２は、第２判定処理の結果を格納したフラグ変数「kakeflag」が立ち上がっている場合に欠歯部分と判定したと判断する。制御部３２は、第２判定処理において欠歯部分と判定したと判断する場合にはステップＳ８５の処理を実行し、そうでない場合にはステップＳ８６の処理を実行する。  
【０１０１】
ステップＳ８４において、制御部３２は、第２判定処理において欠歯部分と判定したと判断した場合には、検査結果を異常なしと判断して、検査結果を表す変数「status」に値「OK」を代入する（ステップＳ８５）。これは、制御部３２が第２判定処理において欠歯部分と判定し、かつクランクカウンタの値が第２判定処理において欠歯部分と判定した場合に検出されるべき値であると判断し、両判断に矛盾がないためである。その後、制御部３２は、ステップＳ９２の処理を実行する。
ステップＳ８４において、制御部３２は、第２判定処理において欠歯部分と判定しなかったと判断した場合には、検査結果を異常ありと判断して、検査結果を表す変数「status」に値「NG」を代入する（ステップＳ８６）。これは、両判断が矛盾するためである。その後、制御部３２は、ステップＳ９２の処理を実行する。
【０１０２】
ステップＳ８３において、クランクカウンタの値が第２判定処理において欠歯部分と判定した場合に検出されるべき値でないと判断した場合には、制御部３２は、第２判定処理において欠歯部分と判定したか否かを判断する（ステップＳ８７）。具体的には、制御部３２は、ステップＳ８４と同様に判断する。制御部３２は、第２判定処理において欠歯部分と判定したと判断する場合にはステップＳ８８の処理を実行し、そうでない場合にはステップＳ８９の処理を実行する。
【０１０３】
ステップＳ８７において、制御部３２は、第２判定処理において欠歯部分と判定したと判断した場合には、検査結果を異常ありと判断して、検査結果を表す変数「status」に値「NG」を代入する（ステップＳ８８）。これは、制御部３２が第２判定処理において欠歯部分と判定した一方で、クランクカウンタの値が第２判定処理において欠歯部分と判定した場合に検出されるべき値でないと判断し、両判断に矛盾があるためである。その後、制御部３２は、ステップＳ９２の処理を実行する。
ステップＳ８７において、制御部３２は、第２判定処理において欠歯部分でないと判定したと判断した場合には、検査結果を異常なしと判断して、検査結果を表す変数「status」に値「OK」を代入する（ステップＳ８９）。これは、両判断が矛盾しないためである。その後、制御部３２は、ステップＳ９２の処理を実行する。
【０１０４】
ステップＳ８２において、エンジン回転数が増加していると判断した場合には、制御部３２は、第２判定処理において欠歯部分と判定したか否かを判断する（ステップＳ９０）。具体的には、制御部３２は、ステップＳ８４と同様に判断する。制御部３２は、第２判定処理において欠歯部分と判定したと判断する場合にはステップＳ９１の処理を実行し、そうでない場合には判定後処理の実行を終了する。
【０１０５】
ステップＳ９０において、第２判定処理において欠歯部分と判定したと判断した場合には、制御部３２は、検査結果を異常なしと判断して、検査結果を表す変数「status」に値「OK」を代入する（ステップＳ９１）。エンジン回転数が増加する場合には、第１判定処理の判定精度が低下する場合があるためである。その後、制御部３２は、ステップＳ９２の処理を実行する。
この構成によれば、エンジン１０の回転数が増加する場合に欠歯部分の通過を再判定するため、エンジン１０の回転数が増加した場合であっても、精度良くロータ１２の位置を検出できるだけでなく、検出したロータ１２の位置に基づいて精度良くエンジン１０を制御できる。
【０１０６】
ステップＳ８５、Ｓ８６、Ｓ８８、Ｓ８９、及びＳ９１の処理を実行した後に、制御部３２は、検査結果（以下、状態とも図示する）が異常（「NG」）であるか否かを判断する（ステップＳ９２）。制御部３２は、検査結果が異常と判断する場合にはステップＳ９３の処理を実行し、そうでない場合にはステップＳ９４の処理を実行する。
ステップＳ９２において、制御部３２は、検査結果が異常と判断した場合には初期化フラグ「initflag」の値を「ON」として立ち上げる（ステップＳ９３）。その後、制御部３２は、判定後処理の実行を終了する。尚、制御部３２は、次回に、図１１に示すＮＥ３６割込処理処理を実行すると、図１２に示す初期化処理を実行した後に、再度クランクの位置を検出する。
ステップＳ９２において、制御部３２は、検査結果が正常と判断した場合には仮確定したクランクの位置を本確定する（ステップＳ９４）。その後、制御部３２は、判定後処理の実行を終了する。
【０１０７】
尚、本実施例において、ステップＳ８３からＳ８９の処理が検査部３２ｏを実現する検査処理に相当する。
この構成によれば、歯の通過を検知して更新した回転角度と、欠歯部分と判定した他の部分の位置に基づいて検出した他の回転角度とを比較して回転角度を検査するため、精度良くロータ１２の位置を検出できるだけでなく、検出したロータ１２の位置に基づいて精度良くエンジン１０を制御できる。
【０１０８】
本発明の制御方法は、制御装置３０を用いて実施できる。
制御装置３０が実行するプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供できる。
【０１０９】
以上本発明の好ましい実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形、変更が可能である。
【図面の簡単な説明】
【０１１０】
【図１】本発明の制御装置を備える制御システムの一例を表すシステム構成図である。
【図２】検知装置の一例を表す構成図である。
【図３】磁界の変化が磁気抵抗素子に与える影響について説明するための図である。
【図４】取得部が入出力する信号の一例を表す図である。
【図５】制御部の一構成例を表すハードウェア構成図である。
【図６】従来の制御装置が欠歯部分の通過を判定するための実行する判定処理について概説するための図である。
【図７】従来の制御装置が回転角度を検出した後に確定するために実行するソフトウェア処理について概説するための図である。
【図８】制御装置が実行する第２判定処理処理の一例を概説するための図である。
【図９】制御部の一構成例を表す機能ブロック図である。
【図１０】制御部が実行する定期処理の一例を表すフローチャートである。
【図１１】制御部が実行するＮＥ３６割込処理の一例を表すフローチャートである。
【図１２】制御部が実行する格納処理の一例を表すフローチャートである。
【図１３】制御部が実行する仮確定処理の一例を表すフローチャートである。
【図１４】制御部が実行する加算処理の一例を表すフローチャートである。
【図１５】制御部が実行する補正処理の一例を表すフローチャートである。
【図１６】制御部が実行する判定後処理の一例を表すフローチャートの一部である。
【図１７】制御部が実行する判定後処理の一例を表すフローチャートの他部である。
【符号の説明】
【０１１１】
１…制御システム          １０…エンジン            
１１…クランク軸          １２…ロータ              
１３…クランク歯          ２０…検知装置（ＭＲＥセンサ）
３０…制御装置（ＥＦＩ−ＥＣＵ）
３１…取得部              ３２…制御部（マイコン）  
３２ａ…実行部（ＰＣＵ）  ３２ｂ…読出専用記憶装置  
３２ｃ…読書可能記憶装置  ３２ｅ…入出力部          
３２ｆ…格納部            ３２ｇ…第１判定部        
３２ｈ…回転角検出部      ３２ｉ…更新部            
３２ｊ…回転数検出部      ３２ｋ…安定判定部        
３２ｌ…加算部            ３２ｍ…補正部            
３２ｎ…第２判定部        ３２ｏ…検査部            
３２ｐ…更新部            ３２ｑ…記憶部            
Ｔ…時間                  
【図１】
2010065574.tif 000003
【図２】
2010065574.tif 000004
【図３】
2010065574.tif 000005
【図４】
2010065574.tif 000006
【図５】
2010065574.tif 000007
【図６】
2010065574.tif 000008
【図７】
2010065574.tif 000009
【図８】
2010065574.tif 000010
【図９】
2010065574.tif 000011
【図１０】
2010065574.tif 000012
【図１１】
2010065574.tif 000013
【図１２】
2010065574.tif 000014
【図１３】
2010065574.tif 000015
【図１４】
2010065574.tif 000016
【図１５】
2010065574.tif 000017
【図１６】
2010065574.tif 000018
【図１７】
2010065574.tif 000019