(57)【要約】【課題】エンジン始動直後やその後の通常運転時において基準位置の検出を好適に実施すること。【解決手段】ＥＣＵ１において、波形整形回路２０は、所定角度間隔毎のパルス列よりなり且つその途中に基準位置を有した回転信号を発生する。信号処理回路３０は、回転信号の基準位置に対応する基準位置信号を出力する。マイコン１０は、回転信号及び基準位置信号によりクランク角位置を検出して各種制御を実施する。また、マイコン１０は、回転信号の有効エッジ毎の割り込みで基準位置の検出を実施する。更に、エンジンの始動当初は割り込みによる基準位置の検出結果を有効としてその結果に基づきクランク角位置を検出すると共に、エンジン始動後、信号処理回路３０が正常動作している旨判定されると、割り込みによる基準位置の結果に代えて信号処理回路３０からの基準位置信号を有効として当該基準位置信号によりクランク角位置を検出する。【選択図】　　　図１
2004003454.tif 000002
【特許請求の範囲】
【請求項１】
エンジンのクランク軸の回転に対応する所定角度間隔毎のパルス列よりなり且つその途中にパルス幅の異なる基準位置を有した回転信号を発生する回転信号発生回路と、
前記回転信号を入力してそのパルス間隔を計測すると共に該パルス間隔に基づき基準位置を検出し、その基準位置に対応する基準位置信号を出力する信号処理回路と、
回転信号及び基準位置信号を入力し、これら各信号によりクランク角位置を検出して各種制御を実施するマイクロコンピュータと、を備え、
前記マイクロコンピュータは、回転信号の有効エッジ毎に割り込みを起動し、該割り込みの処理にてパルス間隔の計測、並びに該パルス間隔に基づく基準位置の検出を実施し、エンジンの始動当初は前記割り込みによる基準位置の検出結果を有効としてその結果に基づきクランク角位置を検出すると共に、エンジン始動後、前記信号処理回路が正常動作している旨判定されると、前記割り込みによる基準位置の結果に代えて前記信号処理回路からの基準位置信号を有効として当該基準位置信号によりクランク角位置を検出することを特徴とするエンジン制御装置。
【請求項２】
エンジン始動後、前記信号処理回路が正常動作している旨判定されると、前記回転信号の有効エッジ毎の割り込みを停止する請求項１記載のエンジン制御装置。
【請求項３】
前記信号処理回路は、前記回転信号発生回路が発生する回転信号を第１の回転信号とした場合に、該第１の回転信号を入力してそれよりもパルス幅が広いパルス列よりなる第２の回転信号を発生し、
前記マイクロコンピュータは、第１の回転信号の有効エッジ毎にカウント動作する第１のカウンタ手段と、第２の回転信号の有効エッジ毎にカウント動作する第２のカウンタ手段とを有し、エンジンの始動当初は第１のカウンタ手段の値によりクランク角位置を検出すると共に、エンジン始動後、前記信号処理回路が正常動作している旨判定されると、第１のカウンタ手段の値に代えて第２のカウンタ手段の値によりクランク角位置を検出する請求項１又は２記載のエンジン制御装置。
【請求項４】
請求項３記載のエンジン制御装置において、前記マイクロコンピュータは、第１のカウンタ手段の値と第２のカウンタ手段の値とを比較し、それらが所定期間連続して整合している場合に、前記信号処理回路が正常動作している旨判定するエンジン制御装置。
【請求項５】
請求項３記載のエンジン制御装置において、前記マイクロコンピュータは、第１のカウンタ手段の値と第２のカウンタ手段の値とを比較し、それらが所定期間連続して整合し、且つ始動後の回転数が所定回転数に達した場合に、前記信号処理回路が正常動作している旨判定するエンジン制御装置。
【請求項６】
請求項４又は５記載のエンジン制御装置において、前記基準位置信号の出力を基準とする少なくとも１周期を含む期間で、第１のカウンタ手段の値と第２のカウンタ手段の値とを比較し、前記信号処理回路が正常かどうかを判定するエンジン制御装置。
【請求項７】
前記マイクロコンピュータは、第１のカウンタ手段の値と第２のカウンタ手段の値とを比較し、それらが所定期間連続して不整合であれば、前記信号処理回路に対してリセットをかける請求項３乃至６の何れかに記載のエンジン制御装置。
【請求項８】
前記第１のカウンタ手段は、前記第２のカウンタ手段よりも優先的に割り込みにより起動される請求項３乃至７の何れかに記載のエンジン制御装置。
【請求項９】
前記信号処理回路は、前記回転信号発生回路が発生する回転信号を第１の回転信号とした場合に、該第１の回転信号を入力してそれよりもパルス幅が広いパルス列よりなる第２の回転信号を発生し、
前記マイクロコンピュータは、第１の回転信号の有効エッジに基づき前記第２の回転信号の周期に対応する周期にてカウント動作する第１のカウンタ手段と、第２の回転信号の有効エッジ毎にカウント動作する第２のカウンタ手段とを有し、エンジンの始動当初は第１のカウンタ手段の値によりクランク角位置を検出すると共に、エンジン始動後、前記信号処理回路が正常動作している旨判定されると、第１のカウンタ手段の値に代えて第２のカウンタ手段の値によりクランク角位置を検出する請求項１又は２記載のエンジン制御装置。
【請求項１０】
請求項９記載のエンジン制御装置において、前記マイクロコンピュータは、第１のカウンタ手段の値と第２のカウンタ手段の値とを比較し、それらが所定期間連続して整合している場合に、前記信号処理回路が正常動作している旨判定するエンジン制御装置。
【請求項１１】
請求項９記載のエンジン制御装置において、前記マイクロコンピュータは、第１のカウンタ手段の値と第２のカウンタ手段の値とを比較し、それらが所定期間連続して整合し、且つ始動後の回転数が所定回転数に達した場合に、前記信号処理回路が正常動作している旨判定するエンジン制御装置。
【請求項１２】
請求項１０又は１１記載のエンジン制御装置において、前記所定期間が、前記基準位置信号を含む１周期以上であるエンジン制御装置。
【請求項１３】
前記マイクロコンピュータは、第１のカウンタ手段の値と第２のカウンタ手段の値とを比較し、それらが所定期間連続して不整合であれば、前記信号処理回路に対してリセットをかける請求項９乃至１２の何れかに記載のエンジン制御装置。
【請求項１４】
前記第１のカウンタ手段は、前記第２のカウンタ手段よりも優先的に割り込みにより起動される請求項９乃至１３の何れかに記載のエンジン制御装置。
【請求項１５】
前記マイクロコンピュータの割り込みにおいて回転信号の前後するパルス間隔がＫ倍（Ｋは判定値）よりも大きくなった時に基準位置である旨検出する構成であって、エンジン運転状態に応じて前記Ｋを可変に設定する請求項１乃至１４の何れかに記載のエンジン制御装置。
【請求項１６】
エンジンのクランク軸の回転に対応する所定角度間隔毎のパルス列よりなり且つその途中にパルス幅の異なる基準位置を有した回転信号を発生する回転信号発生回路と、
前記回転信号を入力してそのパルス間隔を計測すると共に該パルス間隔に基づき基準位置を検出し、その基準位置に対応する基準位置信号を出力する信号処理回路と、
回転信号及び基準位置信号を入力し、これら各信号によりクランク角位置を検出して各種制御を実施するマイクロコンピュータと、を備え、
前記マイクロコンピュータは、エンジンの通常運転時に前記信号処理回路からの基準位置信号を有効として当該基準位置信号によりクランク角位置を検出し、エンジンの回転数が所定のしきい値以下に低下した際、回転信号の有効エッジ毎に割り込みを起動し、該割り込みの処理にてパルス間隔の計測、並びに該パルス間隔に基づく基準位置の検出を実施すると共に、前記割り込みによる基準位置の検出結果を有効としてその結果によりクランク角位置を検出することを特徴とするエンジン制御装置。
【請求項１７】
前記信号処理回路は、前記回転信号発生回路が発生する回転信号を第１の回転信号とした場合に、該第１の回転信号を入力してそれよりもパルス幅が広いパルス列よりなる第２の回転信号を発生し、
前記マイクロコンピュータは、第１の回転信号の有効エッジ毎にカウント動作する第１のカウンタ手段と、第２の回転信号の有効エッジ毎にカウント動作する第２のカウンタ手段とを有し、エンジンの通常運転時は第２のカウンタ手段の値によりクランク角位置を検出すると共に、エンジンの回転数が所定のしきい値以下に低下した際、第２のカウンタ手段の値に代えて第１のカウンタ手段の値によりクランク角位置を検出する請求項１６記載のエンジン制御装置。
【請求項１８】
前記信号処理回路は、前記回転信号発生回路が発生する回転信号を第１の回転信号とした場合に、該第１の回転信号を入力してそれよりもパルス幅が広いパルス列よりなる第２の回転信号を発生し、
前記マイクロコンピュータは、第１の回転信号の有効エッジに基づき前記第２の回転信号の周期に対応する周期にてカウント動作する第１のカウンタ手段と、第２の回転信号の有効エッジ毎にカウント動作する第２のカウンタ手段とを有し、エンジンの通常運転時は第２のカウンタ手段の値によりクランク角位置を検出すると共に、エンジンの回転数が所定のしきい値以下に低下した際、第２のカウンタ手段の値に代えて第１のカウンタ手段の値によりクランク角位置を検出する請求項１６記載のエンジン制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、エンジンの回転信号を用いてクランク角位置を検出するエンジン制御装置に関するものである。
【０００２】
【従来の技術】
例えば車両用エンジンの制御装置として、エンジンのクランク軸の回転を回転角センサで検出し、その回転信号をマイクロコンピュータ（以下、マイコンと略す）に取り込んでクランク角位置を検出するものが知られている。また、回転信号には欠歯よりなる基準位置が設けられ、その欠歯検出の手法も従来より各種提案されている。
【０００３】
例えば、特許文献１に記載の回転位置検出装置では、回転発信器、アップダウンカウンタ及びｆ／Ｋ分周回路を備えたハードウエア回路により欠歯検出を実施している。また、特許文献２に記載の信号処理回路では、始動性向上のため早期点火制御を行なう場合には、マイコン制御にてクランク角の位置を検出し、始動時の点火制御を行なっている。また、特許文献３に記載の角度位置検出装置では、欠歯の間隔とその前後の間隔を測定し、それら３つの間隔を用いて欠歯検出を実施している。更に、特許文献４に記載の回転センサの技術では、大小２つの欠歯判定値を設けておき、エンジン始動時には大きい方の欠歯判定値を用いて欠歯検出を行い、始動時の回転変動による欠歯の誤検出を防止することとしている。
【０００４】
このように、欠歯検出の手法としてハードウエアによるものやソフトウエア（マイコン）によるものが各種提案されているが、それら各々は一長一短の特徴を有する。例えば、ハードウエアによる欠歯検出を行えば、マイコン側での処理負荷が軽減される一方、低回転時など、エンジン回転が不安定な場合に欠歯が誤検出されるおそれがある。また、ソフトウエア（マイコン）による欠歯検出を行えば、欠歯検出の柔軟な対応が可能となる一方、処理負荷の増加が懸念される。
【０００５】
既存の技術では、これら２つの手法を適正に行い、各々の持つ優位点を最大限活かしたものはない。故に、エンジン始動直後や、通常運転途中にエンジン回転数が一時的に低下する場合等において、欠歯検出が適正に実施できなくなるおそれがあった。
【０００６】
【特許文献１】
特開平５−６６１０５号公報
【特許文献２】
特開２００１−２１４７９４号公報
【特許文献３】
特公平７−６５９０５号公報
【特許文献４】
特公平７−１８３７９号公報
【０００７】
【発明が解決しようとする課題】
本発明は上記問題に着目してなされたものであって、その目的とするところは、エンジン始動直後やその後の通常運転時において基準位置の検出を好適に実施することができるエンジン制御装置を提供することである。
【０００８】
【課題を解決するための手段】
本発明のエンジン制御装置では前提として、回転信号発生回路、信号処理回路及びマイコンを有し、回転信号発生回路は、エンジンのクランク軸の回転に対応する所定角度間隔毎のパルス列よりなり且つその途中にパルス幅の異なる基準位置を有した回転信号を発生する。信号処理回路は、前記回転信号を入力してそのパルス間隔を計測すると共に該パルス間隔に基づき基準位置を検出し、その基準位置に対応する基準位置信号を出力する。また、マイコンは、回転信号及び基準位置信号を入力し、これら各信号によりクランク角位置を検出して各種制御を実施する。
【０００９】
特に請求項１に記載の発明では、マイコンは、回転信号の有効エッジ毎に割り込みを起動し、該割り込みの処理にてパルス間隔の計測、並びに該パルス間隔に基づく基準位置の検出を実施し、エンジンの始動当初は前記割り込みによる基準位置の検出結果を有効としてその結果に基づきクランク角位置を検出する。更に、エンジン始動後、前記信号処理回路が正常動作している旨判定されると、マイコンは、前記割り込みによる基準位置の結果に代えて前記信号処理回路からの基準位置信号を有効として当該基準位置信号によりクランク角位置を検出する。
【００１０】
要するに本発明では、基準位置検出の手段として、
（１）信号処理回路を用い、ハードウエアにより基準位置を検出するもの、
（２）マイコンを用い、ソフトウエアにより基準位置を検出するもの、
が設けられる。そして、エンジンの始動当初は、上記（２）による基準位置の検出結果からクランク角位置（エンジンの回転位置）が検出される。従って、エンジン始動直後にクランク軸の回転が不安定になる時期にも適切に基準位置を検出し、更にクランク角位置を正確に検出することができる。また、エンジン始動後、信号処理回路が正常動作している旨判定したことを条件に、上記（１）による基準位置検出に切り替えられる。従って、エンジンの始動完了後は割り込みによる基準位置の検出処理が必須でなくなり、マイコンの処理負荷が軽減できる。その結果、エンジンの始動から通常運転時までを通じて基準位置の検出を好適に実施することができる。
【００１１】
請求項２に記載の発明では、エンジン始動後、前記信号処理回路が正常動作している旨判定されると、前記回転信号の有効エッジ毎の割り込みを停止する。これにより、信号処理回路の正常動作判定後において、割り込みによるパルス間隔の計測及び基準位置の検出の処理が行われなくなり、マイコンの処理負荷をより確実に軽減することができる。
【００１２】
請求項３に記載の発明では、前記信号処理回路は、前記回転信号発生回路が発生する回転信号を第１の回転信号とした場合に、該第１の回転信号を入力してそれよりもパルス幅が広いパルス列よりなる第２の回転信号を発生する。また、前記マイコンは、第１の回転信号の有効エッジ毎にカウント動作する第１のカウンタ手段と、第２の回転信号の有効エッジ毎にカウント動作する第２のカウンタ手段とを有する。そして、エンジンの始動当初は第１のカウンタ手段の値によりクランク角位置を検出すると共に、エンジン始動後、前記信号処理回路が正常動作している旨判定されると、第１のカウンタ手段の値に代えて第２のカウンタ手段の値によりクランク角位置を検出する。
【００１３】
要するに、第１の回転信号は、回転信号発生回路から直接マイコンに入力されるのに対し、第２の回転信号は、信号処理回路において第１の回転信号の分周等により幅広のパルス信号として生成された後、マイコンに入力される。この場合、第１の回転信号による第１のカウンタ手段の値と、第２の回転信号による第２のカウンタ手段の値とがエンジン始動後の状態に応じて選択的に使用されるため、信頼性やマイコンの処理負荷を考慮しつつ最適なカウンタ値を適宜用いることができる。
【００１４】
上記請求項３の発明では、請求項４に記載したように、前記マイコンは、第１のカウンタ手段の値と第２のカウンタ手段の値とを比較し、それらが所定期間連続して整合している場合に、前記信号処理回路が正常動作している旨判定すると良い。或いは、請求項５に記載したように、前記マイコンは、第１のカウンタ手段の値と第２のカウンタ手段の値とを比較し、それらが所定期間連続して整合し、且つ始動後の回転数が所定回転数に達した場合に、前記信号処理回路が正常動作している旨判定すると良い。
【００１５】
上記請求項４，５の発明によれば、エンジン始動後において信号処理回路の動作が安定したことを確実に判定することができる。特に請求項５の発明によれば、エンジン始動後において、点火や燃料噴射により回転数が上昇したことを条件に加えることにより、信号処理回路の正常動作判定がより確実なものとなる。
【００１６】
また、上記請求項４又は５の発明では、請求項６に記載したように、前記基準位置信号の出力を基準とする少なくとも１周期（３６０°ＣＡ）を含む期間で、第１のカウンタ手段の値と第２のカウンタ手段の値とを比較し、前記信号処理回路が正常かどうかを判定すると良い。この場合、信号処理回路が正常動作していることを適正に判定できる。
【００１７】
請求項７に記載の発明では、前記マイコンは、第１のカウンタ手段の値と第２のカウンタ手段の値とを比較し、それらが所定期間連続して不整合であれば、前記信号処理回路に対してリセットをかける。前述の通りエンジン始動当初は第１のカウンタ手段の値を用いてクランク角位置が検出され、その検出結果により各種制御が開始される。従って、仮に信号処理回路が正しく起動できず異常な状態であったとしても、エンジンが問題なく始動される。そのため、上記の如く各カウンタ手段の値の比較により信号処理回路の異常を検出し、異常発生時には信号処理回路をリセットすると良い。これにより、信号処理回路の動作の正常化が可能となる。
【００１８】
請求項８に記載の発明では、前記第１のカウンタ手段は、前記第２のカウンタ手段よりも優先的に割り込みにより起動される。第１の回転信号と第２の回転信号とはパルス幅が異なり、それ故にそれに伴う割り込みの周期も相違する。この場合、２つの割り込みが同時に発生することも考えられるが、本請求項８によれば、第１のカウンタ手段の割り込みが優先されるため、その割り込みの抜けが防止できる。従って、エンジン始動当初において、第１のカウンタ手段の値の正当性が増すこととなる。
【００１９】
一方、請求項９に記載の発明では、前記信号処理回路は、前記回転信号発生回路が発生する回転信号を第１の回転信号とした場合に、該第１の回転信号を入力してそれよりもパルス幅が広いパルス列よりなる第２の回転信号を発生する。また、前記マイコンは、第１の回転信号の有効エッジに基づき前記第２の回転信号の周期に対応する周期にてカウント動作する第１のカウンタ手段と、第２の回転信号の有効エッジ毎にカウント動作する第２のカウンタ手段とを有する。そして、エンジンの始動当初は第１のカウンタ手段の値によりクランク角位置を検出すると共に、エンジン始動後、前記信号処理回路が正常動作している旨判定されると、第１のカウンタ手段の値に代えて第２のカウンタ手段の値によりクランク角位置を検出する。
【００２０】
この場合も、基本的には先の請求項３に記載の構成と同様、第１の回転信号は、回転信号発生回路から直接マイコンに入力されるのに対し、第２の回転信号は、信号処理回路において第１の回転信号の分周等により幅広のパルス信号として生成された後、マイコンに入力される。ただしこの場合、第１のカウンタ手段は、第２の回転信号の周期に対応する周期にてカウント動作する。一般に、異なる２つのカウンタ手段の値に基づきクランク角位置を検出するためには、それらカウンタ手段のカウント値を同一の分解能とするための調整が図られるが、この請求項９に記載の構成によれば、このような分解能の調整も不要となる。このため同構成によれば、この点でもマイコンの処理負荷が軽減されるようになる。
【００２１】
また上記請求項９の発明でも、請求項１０に記載したように、前記マイコンは、第１のカウンタ手段の値と第２のカウンタ手段の値とを比較し、それらが所定期間連続して整合している場合に、前記信号処理回路が正常動作している旨判定すると良い。或いは、請求項１１に記載したように、前記マイコンは、第１のカウンタ手段の値と第２のカウンタ手段の値とを比較し、それらが所定期間連続して整合し、且つ始動後の回転数が所定回転数に達した場合に、前記信号処理回路が正常動作している旨判定すると良い。
【００２２】
上記請求項１０，１１の発明によっても、エンジン始動後において信号処理回路の動作が安定したことを確実に判定することができる。特に請求項１１の発明によれば、エンジン始動後において、点火や燃料噴射により回転数が上昇したことを条件に加えることにより、信号処理回路の正常動作判定がより確実なものとなる。また、これら請求項１０，１１のいずれも請求項９の構成を前提としていることで、第１のカウンタ手段の値と第２のカウンタ手段の値とを比較する際にも、それらカウント値をそのまま用いることができるようになる。
【００２３】
また、上記請求項１０又は１１の発明では、請求項１２に記載したように、前記基準位置信号を含む１周期（３６０°ＣＡ）以上の期間で、第１のカウンタ手段の値と第２のカウンタ手段の値とを比較し、前記信号処理回路が正常かどうかを判定すると良い。この場合、信号処理回路が正常動作していることを適正に判定できる。
【００２４】
請求項１３に記載の発明では、前記マイコンは、第１のカウンタ手段の値と第２のカウンタ手段の値とを比較し、それらが所定期間連続して不整合であれば、前記信号処理回路に対してリセットをかける。前述の通り、エンジン始動当初は第１のカウンタ手段の値を用いてクランク角位置が検出され、その検出結果により各種制御が開始される。従って、仮に信号処理回路が正しく起動できず異常な状態であったとしても、エンジンが問題なく始動される。そのため、上記の如く各カウンタ手段の値の比較により信号処理回路の異常を検出し、異常発生時には信号処理回路をリセットすると良い。これにより、信号処理回路の動作の正常化が可能となる。
【００２５】
請求項１４に記載の発明では、前記第１のカウンタ手段は、前記第２のカウンタ手段よりも優先的に割り込みにより起動される。請求項９乃至１３の構成によれば、第１のカウンタ手段は第２の回転信号の周期に対応する周期にてカウント動作することから、第１のカウンタ手段による割り込みと、第２のカウンタ手段による割り込みとによる２つの割り込みが同時に発生しやすくなるが、本請求項１４によれば、第１のカウンタ手段の割り込みが優先されるため、その割り込みの抜けが防止できる。従って、エンジン始動当初において、第１のカウンタ手段の値の正当性が増すこととなる。
【００２６】
ところで、マイコン（ソフトウエア）による基準位置検出の優位点として、その都度のエンジン状態に応じた柔軟な基準位置検出が容易に実現できることが挙げられる。その一つとして、請求項１５に記載したように、前記マイコンの割り込みにおいて回転信号の前後するパルス間隔がＫ倍（Ｋは判定値）よりも大きくなった時に基準位置である旨検出する構成であって、エンジン運転状態に応じて前記Ｋを可変に設定すると良い。
【００２７】
また一方、請求項１６に記載の発明では、前記マイコンは、エンジンの通常運転時に前記信号処理回路からの基準位置信号を有効として当該基準位置信号によりクランク角位置を検出する。また、エンジンの回転数が所定のしきい値以下に低下した際、回転信号の有効エッジ毎に割り込みを起動し、該割り込みの処理にてパルス間隔の計測、並びに該パルス間隔に基づく基準位置の検出を実施すると共に、前記割り込みによる基準位置の検出結果を有効としてその結果によりクランク角位置を検出する。
【００２８】
この場合、エンジン回転数の低下時にはクランク軸の回転が不安定になるおそれがあり、その回転数低下時にのみ、一時的にマイコン（ソフトウエア）による基準位置検出が実施される。従って、割り込みによる基準位置の検出処理を必要最小限で実施し、マイコンの処理負荷の軽減を図ることができる。しかも、全ての運転域を通じて基準位置の検出を好適に実施することができる。
【００２９】
請求項１７に記載の発明では、前記信号処理回路は、前記回転信号発生回路が発生する回転信号を第１の回転信号とした場合に、該第１の回転信号を入力してそれよりもパルス幅が広いパルス列よりなる第２の回転信号を発生する。また、前記マイコンは、第１の回転信号の有効エッジ毎にカウント動作する第１のカウンタ手段と、第２の回転信号の有効エッジ毎にカウント動作する第２のカウンタ手段とを有する。そして、エンジンの通常運転時は第２のカウンタ手段の値によりクランク角位置を検出すると共に、エンジンの回転数が所定のしきい値以下に低下した際、第２のカウンタ手段の値に代えて第１のカウンタ手段の値によりクランク角位置を検出する。
【００３０】
この場合、第１の回転信号による第１のカウンタ手段の値と、第２の回転信号による第２のカウンタ手段の値とがエンジン運転状態に応じて選択的に使用されるため、信頼性やマイコンの処理負荷を考慮しつつ最適なカウンタ値を適宜用いることができる。
【００３１】
請求項１８に記載の発明では、前記信号処理回路は、前記回転信号発生回路が発生する回転信号を第１の回転信号とした場合に、該第１の回転信号を入力してそれよりもパルス幅が広いパルス列よりなる第２の回転信号を発生する。また、前記マイコンは、第１の回転信号の有効エッジに基づき前記第２の回転信号の周期に対応する周期にてカウント動作する第１のカウンタ手段と、第２の回転信号の有効エッジ毎にカウント動作する第２のカウンタ手段とを有する。そして、エンジンの通常運転時は第２のカウンタ手段の値によりクランク角位置を検出すると共に、エンジンの回転数が所定のしきい値以下に低下した際、第２のカウンタ手段の値に代えて第１のカウンタ手段の値によりクランク角位置を検出する。
【００３２】
この場合も、基本的には先の請求項１７に記載の構成と同様、第１の回転信号による第１のカウンタ手段の値と、第２の回転信号による第２のカウンタ手段の値とがエンジン運転状態に応じて選択的に使用される。ただしこの場合、第１のカウンタ手段は、第２の回転信号の周期に対応する周期にてカウント動作する。前述したように、異なる２つのカウンタ手段の値に基づきクランク角位置を検出するためには、それらカウンタ手段のカウント値を同一の分解能とするための調整が図られるが、この請求項１８に記載の構成によれば、このような分解能の調整も不要となり、マイコンの処理負荷が軽減される。
【００３３】
【発明の実施の形態】
（第１の実施の形態）
以下、この発明を具体化した第１の実施の形態を図面に従って説明する。本実施の形態においては自動車用多気筒ガソリンエンジンの制御装置に具体化している。図１には、本実施の形態におけるエンジン制御装置の構成を示す。
【００３４】
図１において、ＥＣＵ１は、主要な構成としてマイコン１０、波形整形回路２０、信号処理回路３０及び駆動回路４０を備える。マイコン１０は、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、入力バッファ１４、Ａ／Ｄ変換器１５、マルチプレクサ１６及び汎用出力バッファ１７を備え、これらはバス１８を介して接続されている。マルチプレクサ１６に取り込まれるアナログ入力には、スロットル開度、吸入空気量、水温等のセンサ検出値が含まれる。また、入力バッファ１４に取り込まれるスイッチ入力には、イグニッションスイッチ、トランスミッションのシフトスイッチ等が含まれる。
【００３５】
波形整形回路２０は「回転信号発生回路」に相当し、この波形整形回路２０には、フィルタ２１，２２を介して回転角センサ２及び気筒判別センサ３で検出した波形信号が入力される。回転角センサ２はクランク軸の回転を検出するものであり、例えばピックアップコイルによりパルサ外周の歯の通過を検出する。また、気筒判別センサ３は、カム軸の回転を検出するものであり、同じく例えばピックアップコイルによりパルサ外周の歯の通過を検出する。波形整形回路２０では、回転角センサ２や気筒判別センサ３の波形信号をパルス化し、回転信号ＮＥ１０及び気筒判別信号Ｇｉｎ（以下、これら信号をＮＥ１０信号、Ｇｉｎ信号ともいう）を生成し出力する。これらＮＥ１０信号及びＧｉｎ信号はマイコン１０と信号処理回路３０にそれぞれ入力される。
【００３６】
図３に示すように、ＮＥ１０信号は１０°ＣＡ毎（所定角度間隔毎）のパルス列よりなり、そのパルス列の途中に２パルス分を欠落させた欠歯が設けられている。欠歯の間隔は３６０°ＣＡ間隔であり、この欠歯が「基準位置」に相当する。また、Ｇｉｎ信号は、所定角度毎にＨレベル（ハイレベル）とＬレベル（ローレベル）とを繰り返す信号であり、このＧｉｎ信号により、１サイクル＝７２０°ＣＡ中の２回の欠歯検出に際し当該欠歯の表裏が判定できるようになっている。例えば、図のＫ１，Ｋ３が表欠歯、Ｋ２，Ｋ４が裏欠歯とした場合、欠歯検出時にＧｉｎ＝Ｌであれば表欠歯である旨判定でき、欠歯検出時にＧｉｎ＝Ｈであれば裏欠歯である旨判定できる。
【００３７】
信号処理回路３０は、波形整形回路２０よりＮＥ１０信号及びＧｉｎ信号を入力し、これらの信号に基づいて３０°ＣＡ間隔の回転信号（ＮＥ３０信号）を生成し出力する。また、同信号処理回路３０は、ＮＥ１０信号中の欠歯を検出する機能を具備しており、この欠歯検出結果と前記生成したＮＥ３０信号とから、気筒判別を行うための基準位置信号ＴＤＣや表裏判定信号Ｇ２を生成し出力する。これらＮＥ３０信号、ＴＤＣ信号及びＧ２信号はＣＰＵ１１に対してそれぞれ出力される。本実施の形態では、ＮＥ１０信号中の欠歯位置とＴＤＣ信号とが対応しており、このＴＤＣ信号が「基準位置信号」に相当する。なお、信号処理回路３０の詳しい構成は後述する。
【００３８】
一方、マイコン１０内のＣＰＵ１１には、波形整形回路２０からのＮＥ１０信号及びＧｉｎ信号に基づいてカウント動作するカウンタＡと、信号処理回路３０からのＮＥ３０信号、ＴＤＣ信号及びＧ２信号に基づいてカウント動作するカウンタＢとが設けられている。つまり、カウンタＡは、ＮＥ１０信号の有効エッジ（例えば立ち上がりエッジ）毎に、すなわち１０°ＣＡ毎にカウント動作するカウンタであり、カウンタＢは、ＮＥ３０信号の有効エッジ（例えば立ち上がりエッジ）毎に、すなわち３０°ＣＡ毎にカウント動作するカウンタである。そして、これらカウンタＡ，Ｂは何れか一方が選択的に有効とされ、その有効とされた値がその都度のクランクカウンタ（ＣＰＵ内部のクランクカウンタ）の値として用いられる。ＣＰＵ１１は、クランクカウンタの値に基づいてクランク角位置を判定し、点火や燃料噴射など、各種のエンジン制御を実施する。
【００３９】
なお本実施の形態では、ＮＥ１０信号が「第１の回転信号」に、ＮＥ３０信号が「第２の回転信号」に、カウンタＡが「第１のカウンタ手段」に、カウンタＢが「第２のカウンタ手段」にそれぞれ相当する。
【００４０】
その他、マイコン１０は、イグナイタ、インジェクタ、ランプ、ソレノイドバルブ等の駆動を制御すべく、駆動回路４０を介して各々に制御出力信号を出力する。
【００４１】
以下、信号処理回路３０のより詳しい構成を図２を用いて説明する。信号処理回路３０は、ＮＥ１０信号中の欠歯位置を検出する欠歯検出部３１と、Ｇｉｎ信号の論理レベルを読み取るレベル読取部３２と、ＮＥ１０信号からＮＥ３０信号を生成する３０°ＣＡ信号生成部３３と、ＮＥ３０信号に基づいてクランクカウンタ３５の値（ＣＮＴ値）を更新するクランクカウンタ演算部３４と、ＣＮＴ値に基づいてＴＤＣ信号及びＧ２信号を生成する判別用信号生成部３６とを備えている。
【００４２】
各構成をその動作を中心に説明する。先ずはじめに、欠歯検出部３１は、図４に示す手順によりＮＥ１０信号の欠歯検出を行う。すなわち、欠歯検出部３１は、ＮＥ１０信号がＬレベルからＨレベルへと立ち上がる毎に、計時用のタイマ値Ｔ２を０にリセットすると共に、そのリセットする直前のタイマ値Ｔ２から、ＮＥ１０信号の最新のパルス間隔Ｔ１を計測する。そして更に、図４における一点鎖線に示す如く、前記計測したパルス間隔Ｔ１をＮ倍して、欠歯検出用のしきい値時間（Ｎ×Ｔ１）を設定する。本実施の形態では、２パルス分を欠落させて欠歯部を設けており、上記Ｎは、２〜３の間の例えば２．５に設定されている。
【００４３】
そして、欠歯検出部３１は、タイマ値Ｔ２がしきい値時間（Ｎ×Ｔ１）を越えた時（図４のタイミングｔａ）、欠歯検出されたと判断し、欠歯検出信号ＦＫをＨレベルにする。欠歯検出信号ＦＫは、例えばＮＥ１０信号が次に立ち下がったタイミングでＬレベルに戻される。欠歯検出信号ＦＫのＨレベルへの立ち上がりにより、レベル読取部３２、３０°ＣＡ信号生成部３３及びクランクカウンタ演算部３４が欠歯検出されたことを知ることとなる。
【００４４】
レベル読取部３２は、図４に示すように、欠歯検出信号ＦＫが立ち上がると、そのタイミングでＧｉｎ信号の論理レベルを読み取り、その読み取ったＧｉｎ信号の論理レベル（以下、読取レベルともいう）Ｇｒを記憶する。
【００４５】
次に、図５に示すように、３０°ＣＡ信号生成部３３は、欠歯検出時を起点として、ＮＥ１０信号が立ち上がる毎に内部カウンタの値を１ずつカウントアップすると共に、その値が３４になると０に戻す。そして更に、内部カウンタの値が１〜３３の場合には、その内部タイマの値を３で割った余りが１か２である場合にＮＥ３０信号をＨレベルにし、内部タイマの値を３で割った余りが０の場合にＮＥ３０信号をＬレベルにする。また、内部カウンタの値を３４から０に戻した時には、ＮＥ３０信号を内部タイマによる一定時間だけＨレベルにする。こうした動作により、ＮＥ１０信号に同期して３０°ＣＡ毎に立ち上がるＮＥ３０信号が３０°ＣＡ信号生成部３３より出力されるようになる。
【００４６】
次に、クランクカウンタ演算部３４は、ＣＮＴ値をカウントするクランクカウンタ３５を備え、ＮＥ３０信号の立ち上がり毎に、クランク軸の２回転分の累積回転角度を３０°ＣＡを分解能として示すＣＮＴ値を更新する。すなわち、図６に示すように、クランクカウンタ演算部３４は基本的に、３０°ＣＡ毎にＣＮＴ値を１ずつカウントアップし、該ＣＮＴ値が２３を越えた時（すなわち、２４に達した時）、ＣＮＴ値を０に戻す。これにより、ＣＮＴ値は７２０°ＣＡ分に相当する０〜２３の範囲で１ずつカウントアップされる。
【００４７】
また、クランクカウンタ演算部３４は、欠歯検出部３１からの欠歯検出信号ＦＫ、及びレベル読取部３２によるＧｉｎ信号の読取レベルＧｒに応じてＣＮＴ値の初期化処理を実施する。すなわち、欠歯検出時における読取レベルＧｒがＬレベルであればＣＮＴ値を１９に初期化し、逆に読取レベルＧｒがＨレベルであればＣＮＴ値を７に初期化するようにしている。これにより、図６に示すように、タイミングｔ１１ではＣＮＴ値が７に初期化され、タイミングｔ１２ではＣＮＴ値が１９に初期化される。ここで、７と１９は、ＣＮＴ値として３６０°ＣＡ分に相当する値（１２）だけ互いに異なった値であり、上記初期化によってＣＮＴ値の連続性が損なわれることはない。
【００４８】
なお、図６では、欠歯検出のタイミング（図のｔ１１，ｔ１２等）と、欠歯直後のＮＥ１０信号の立ち上がりタイミングとが一致するように表されているが、実際には、欠歯検出信号ＦＫの立ち上がりは欠歯検出直後のＮＥ１０信号の立ち上がりタイミングよりも若干前である（図４のタイミングｔａ参照）。
【００４９】
次に、判別用信号生成部３６は、クランクカウンタ３５の値ＣＮＴを参照し、そのＣＮＴ値に応じてＴＤＣ信号及びＧ２信号を生成する。すなわち、図６に示すように、判別用信号生成部３６は、ＣＮＴ値が０又は１２である場合にＴＤＣ信号を一時的にＬレベルにする。また、判別用信号生成部３６は、ＣＮＴ値が０〜１１である場合にＧ２信号をＨレベルにし、ＣＮＴ値が１２〜２３である場合にＧ２信号をＬレベルにする。本実施の形態では、欠歯を検出した後、クランク軸が１５０°ＣＡだけ回転した時にＴＤＣ信号がＬレベルになるようになっている。
【００５０】
以上、マイコン１０外部の動作について説明したが、以下にはマイコン１０内部による演算処理を説明する。本マイコン１０では、ＣＰＵ１１が、ＮＥ１０信号の立ち上がりエッジ毎に割り込み（ＮＥ１０割り込み）を起動すると共に、ＮＥ３０信号の立ち上がりエッジ毎に割り込み（ＮＥ３０割り込み）を起動する。この場合、ＮＥ１０割り込みによりカウンタＡが動作し、ＮＥ３０割り込みによりカウンタＢが動作する。なお、上記２つの割り込みのうち、ＮＥ１０割り込みがＮＥ３０割り込みよりも優先的に実施されるようになっている。
【００５１】
図７はＮＥ１０割り込み処理を示すフローチャートであり、その起動後、先ずステップ１０１では、エッジ読み込み時刻についてＴｏｌｄ　をＴｏｌｄｗに、Ｔｎｅｗ　をＴｏｌｄ　に、フリーランタイマの値ＦＲＴをＴｎｅｗ　にそれぞれ格納する。続くステップ１０２では、パルス間隔についてＴＫｎｅｗ　をＴＫｏｌｄ　に、「Ｔｎｅｗ　−Ｔｏｌｄ　」をＴＫｎｅｗ　にそれぞれ格納する。
【００５２】
ステップ１０３では欠歯判定値Ｋを決定する。このとき、その都度のエンジン運転状態に応じて欠歯判定値Ｋを可変に設定する。例えばエンジン始動時には大きな欠歯判定値Ｋを設定し、それ以外は小さな欠歯判定値Ｋを設定する。本実施の形態では、欠歯位置では２パルスが欠落しているため、例えばＫを「２．４」付近で設定する。勿論、欠歯判定値Ｋを固定値とすることも可能である。
【００５３】
その後、ステップ１０４では、パルス間隔の今回値ＴＫｎｅｗ　と前回値ＴＫｏｌｄ　とを比較し、欠歯判定を実施する。すなわち、「ＴＫｎｅｗ　／ＴＫｏｌｄ　」が欠歯判定値Ｋ以下であるか否かを判別し、ＴＫｎｅｗ　／ＴＫｏｌｄ　≦Ｋであれば欠歯でないとみなし、ステップ１０５に進む。また、ＴＫｎｅｗ　／ＴＫｏｌｄ　＞Ｋであれば欠歯であるとみなし、ステップ１０８に進む。
【００５４】
ステップ１０５では、その時のカウンタＡの値が０未満であるかを判別する。エンジンの始動当初であり、カウンタＡに初期値（−１）がセットされていれば、ステップ１０５がＹＥＳとなりそのまま本処理を終了する。また、カウンタＡが０以上であれば、ステップ１０６でカウンタＡを１カウントアップする。続くステップ１０７では、カウンタＡの値が上限値の７２に達した場合に０をセットする。最後に、ステップ１１１では、その時のカウンタＡの値をクランクカウンタにコピーする。
【００５５】
また、ＴＫｎｅｗ　／ＴＫｏｌｄ　＞Ｋである場合（欠歯検出時）、ステップ１０８では、Ｇｉｎ信号の論理レベルがＬレベルであるか否かを判別する。そして、Ｈレベルであれば、カウンタＡに２４をセットし（ステップ１０９）、Ｌレベルであれば、カウンタＡに６０をセットする（ステップ１１０）。最後に、ステップ１１１では、その時のカウンタＡの値をクランクカウンタにコピーする。
【００５６】
次に、図８はＮＥ３０割り込み処理を示すフローチャートであり、その起動後、先ずステップ２０１〜２０８では、ＴＤＣ信号とＧ２信号とからカウンタＢが操作される。詳細には、ステップ２０１では、ＴＤＣ信号がＬレベルであるか否かを判別する。ＴＤＣ＝Ｈであればステップ２０２に進み、ＴＤＣ＝Ｌであればステップ２０５に進む。
【００５７】
ステップ２０２では、その時のカウンタＢの値が０未満であるかを判別する。エンジンの始動当初であり、カウンタＢに初期値（−１）がセットされていれば、ステップ２０２がＹＥＳとなりそのまま本処理を終了する。また、カウンタＢが０以上であれば、ステップ２０３でカウンタＢを１カウントアップする。続くステップ２０４では、カウンタＢの値が上限値の２４に達した場合に０をセットする。
【００５８】
一方、ＴＤＣ＝Ｌの場合、ステップ２０５では、Ｇ２信号がＨレベルであるか否かを判別し、Ｇ２＝Ｈであればステップ２０６でカウンタＢに０をセットする。また、Ｇ２＝Ｌであれば、ステップ２０７でカウンタＢの値が１２未満であるか否かを判別する。カウンタＢ≧１２であればステップ２０６でカウンタＢに０をセットし、カウンタＢ＜１２であればステップ２０８でカウンタＢに１２をセットする。
【００５９】
上記の如くカウンタＢを操作した後、ステップ２０９では、ＨＤフラグがＯＮしているか否かを判別する。ＨＤフラグは、信号処理回路３０が正常動作する状態になったか否かを判定するフラグであり、エンジン始動後、当該フラグがＯＦＦ（初期値）からＯＮに切り替えられると、信号処理回路３０が正常動作の状態になったと判定される。
【００６０】
従って、エンジン始動当初にＨＤフラグ＝ＯＦＦであれば、ステップ２１０に進む。ステップ２１０では、カウンタＡの１／３の値（カウンタＡ／３）がカウンタＢの値に一致するか否かを判別する。不一致の場合、ステップ２１１でＨＤカウンタＢを０にクリアし、本処理を終了する。ここで、ＨＤカウンタＢは、「カウンタＡ／３＝カウンタＢ」が成立する回数をカウントするものである。
【００６１】
また、一致の場合、ステップ２１２でＨＤカウンタＢを１インクリメントする。その後、ステップ２１３では、ＨＤカウンタＢが１２（３６０°ＣＡ相当の値）以上であるか否かを判別し、ＹＥＳであることを条件に、ステップ２１４でＨＤフラグをＯＮし、ステップ２１５でＮＥ１０割り込み（前記図７の割り込み）を禁止する。
【００６２】
最後に、ステップ２１６では、カウンタＢの値をクランクカウンタにコピーする。ＨＤフラグのＯＮ後は、ステップ２０９がＹＥＳとなり、毎回カウンタＢの値がクランクカウンタにコピーされるようになる。
【００６３】
図３のタイムチャートを用いてエンジン始動時の一連の動作を説明する。
さて、図３ではスタータ信号ＳＴＡがＯＮすることによりエンジンが始動する。なお因みに、ＳＴＡのＯＮ時には、図示しないイニシャル処理にて各カウンタが−１に、各フラグがＯＦＦに初期化されるようになっている。
【００６４】
エンジン始動後、タイミングｔ１では、前記図７のＮＥ１０割り込みにより、前後するパルス間隔に基づき欠歯である旨検出され、その時のＧｉｎ信号がＬレベルであることからカウンタＡに６０がセットされる。それ以降、カウンタＡは１０°ＣＡ毎にカウントアップされ、７２に達した時に０に戻される。エンジン始動当初、ＣＰＵ１１では、カウンタＡの値がクランクカウンタにコピーされ、その値がエンジン制御に使用される（実際には、カウンタＡ／３とし、３０°ＣＡの信号を使用）。一方、信号処理回路３０では、同じくタイミングｔ１で欠歯検出部３１により欠歯検出がなされ、それ以降、３０°ＣＡ信号生成部３３によりＮＥ３０信号が出力される。
【００６５】
ここで、エンジン始動直後はその回転が不安定であり、図中の点線囲い部分に示すように、通常パルス列部分であっても一時的にパルス間隔が拡がることが考えられる。この場合、ＣＰＵ１１による欠歯検出では、その不安定な回転を考慮し、エンジン始動時に欠歯判定値Ｋとして予め大きな値を設定しておけば、タイミングｔ２で欠歯が誤検出されることはない。故に、図示の如くカウンタＡの動作がそのまま継続される。
【００６６】
これに対し、信号処理回路３０による欠歯検出では、欠歯検出のしきい値（前記図４のＮ）が自由に変更できないため、タイミングｔ２で欠歯が誤検出されてしまう。信号処理回路３０で欠歯が誤検出されると、クランクカウンタ３５の値ＣＮＴが誤ってカウントされ、タイミングｔ２から１５０°ＣＡ回転したタイミングｔ３でＴＤＣ信号が一時的にＬレベルとなる（前記図６の説明参照）。故に、タイミングｔ３では、その時のＧ２信号がＬレベルであることから、前記図８のＮＥ３０割り込みによりカウンタＢに１２がセットされる。因みにこの時点では、タイミングｔ２で欠歯が誤検出されたことから、カウンタＢの値が実際のクランク角位置と整合していない。
【００６７】
その後、タイミングｔ４では欠歯が正規に検出される。従って、タイミングｔ２から１５０°ＣＡ回転したタイミングｔ５でＴＤＣ信号が一時的にＬレベルとなり、カウンタＢに１２が再びセットされる。これにより、カウンタＢの値が実際のクランク角位置と整合する。なお、カウンタＡに関しては、タイミングｔ４，ｔ６の欠歯検出時においてＧｉｎ信号の論理レベルに応じてそれぞれ２４，６０がセットされる。
【００６８】
タイミングｔ５以降、カウンタＡ及びカウンタＢが何れも実際のクランク角位置と整合したものとなり、その期間が計測される。つまり、前記図８のＮＥ３０割り込みでは、「カウンタＡ／３＝カウンタＢ」が成立することを条件に、ＨＤカウンタＢがカウントされる。そして、３６０°ＣＡ（ＴＤＣ＝Ｌから次のＴＤＣ＝Ｌまでの１周期の期間）だけ回転したタイミングｔ７で、信号処理回路３０が正常動作している旨確認され、ＨＤフラグがそれまでのＯＦＦからＯＮに切り替えられる。
【００６９】
タイミングｔ７以降、ＣＰＵ１１では、カウンタＢの値がクランクカウンタにコピーされ、その値がエンジン制御に使用される。また、タイミングｔ７以降はカウンタＡが不要となることから、ＮＥ１０割り込みが禁じられ、ＣＰＵ１１による処理負荷の低減が図られるようになる。
【００７０】
以上詳述した本実施の形態によれば、以下に示す効果が得られる。
（１）エンジンの始動当初は、マイコン１０（ＣＰＵ１１）による欠歯検出結果からクランク角位置が検出される（すなわち、ＣＰＵ内部のクランクカウンタが求められる）ので、エンジン始動直後にクランク軸の回転が不安定になる時期にも適切に欠歯を検出し、更にクランク角位置を正確に検出することができる。特にこのとき、マイコン１０によれば、エンジン運転状態に応じて欠歯判定値Ｋを可変に設定するなど、その都度のエンジン状態に応じた柔軟な欠歯検出が実現できる。また、エンジン始動後、信号処理回路３０が正常動作している旨判定したことを条件に、当該信号処理回路３０による欠歯検出が有効とされる。従って、エンジンの始動完了後は割り込み（ソフトウエア）による欠歯検出処理が必須でなくなり、マイコン１０の処理負荷が軽減できる。その結果、エンジンの始動から通常運転時までを通じて欠歯検出を好適に実施することができる。またこの効果により、エンジンの始動性が向上する。
【００７１】
（２）マイコン１０において、ＮＥ１０信号によるカウンタＡの値と、ＮＥ３０信号によるカウンタＢの値とがエンジン始動後の状態に応じて選択的に使用されるため、信頼性やマイコン１０の処理負荷を考慮しつつ最適なカウンタ値を適宜用いることができる。
【００７２】
（３）カウンタＡの値とカウンタＢの値とが所定期間連続して整合している場合に、信号処理回路３０が正常動作している旨判定されるため、エンジン始動後において信号処理回路３０の動作が安定したことを確実に判定することができる。
【００７３】
（４）ＴＤＣ信号の出力を基準とする少なくとも１周期を含む期間でカウンタＡの値とカウンタＢの値とを比較し、信号処理回路３０が正常かどうかを判定するため、その判定を確実且つ適正に実施できる。その期間は、１周期とする以外に２周期などとすることも可能である。
【００７４】
（５）ＮＥ１０割り込み（カウントＡのカウント用の割り込み）とＮＥ３０割り込み（カウントＢのカウント用の割り込み）とが同時に発生することも考えられるが、ＮＥ１０割り込みが優先されるため、その割り込みの抜けが防止できる。従って、エンジン始動当初において、カウンタＡの値の正当性が増し、ひいてはエンジン始動性が向上する。
【００７５】
（６）ＮＥ１０信号に加えてＧｉｎ信号を用いクランク角位置を決定する構成であるため、仮にＧｉｎ信号が無い場合に比べ、クランク角位置がいち早く決定できるというメリットもある。但し、Ｇｉｎ信号は本発明の必須の要件でなく、Ｇｉｎ信号を使わずに欠歯の検出、並びにクランク角位置の決定を行うことも可能である。
【００７６】
（第２の実施の形態）
次に、本発明における第２の実施の形態を、上述した第１の実施の形態との相違点を中心に説明する。前述の通り、エンジン始動当初はＮＥ１０信号によるカウンタＡの値を用いてクランク角位置が検出される。従って、仮に信号処理回路３０が正しく起動できず異常な状態であったとしても、それが支障となることはなくエンジンが問題なく始動される。そこで本実施の形態では、エンジン始動直後に信号処理回路３０が異常となり（すなわち、正常に起動せず）、カウンタＢが正しくカウントされない場合に、その異常をＮＥ１０割り込みにて検出し更に信号処理回路３０にリセットをかけるようにする。
【００７７】
具体的には、ＮＥ１０割り込み処理の終わりに図９の処理を実施する。図９は、前記図７のＮＥ１０割り込み処理に引き続き（図７のステップ１１１に続き、ＲＥＴの直前に）実施される処理を示すフローチャートである。この処理において、ＨＤカウンタＡは、カウンタＡの値とカウンタＢの値とが整合する場合にその継続した期間を計測するカウンタであり、ＨＤカウンタＣは、カウンタＡの値とカウンタＢの値とが不整合となる場合にその継続した期間を計測するカウンタである。
【００７８】
さて、前記図７のステップ１１１を終えると、図９のステップ３０１に移行する。そして、ステップ３０１では、ＨＤフラグがＯＮしているか否か、すなわち信号処理回路３０が正常動作する状態になったか否かを判別する。エンジン始動当初はＨＤフラグ＝ＯＦＦであり、ステップ３０２に進む。ステップ３０２では、「カウンタＡ／３＝カウンタＢ−１」が成立するか否かを判別する。なお、「Ｂ−１」としたのは、ＮＥ１０割り込みがＮＥ３０割り込みよりも優先的に実施され、カウンタＢの前回値が比較対象となるためである。
【００７９】
ステップ３０２が成立する場合、ステップ３０３でＨＤカウンタＣを０にクリアし、続くステップ３０４でＨＤカウンタＡを１インクリメントする。その後、ステップ３０５では、ＨＤカウンタＡが３６（３６０°ＣＡ相当の値）以上であるか否かを判別する。そして、ＹＥＳであることを条件に、ステップ３０６でＨＤフラグをＯＮし、ステップ３０７でＮＥ１０割り込み（前記図７の割り込み）を禁止する。
【００８０】
最後に、ステップ３０８では、カウンタＢの値をクランクカウンタにコピーする。ＨＤフラグのＯＮ後は、毎回ステップ３０１がＹＥＳとなり、ステップ３０２以降の処理を読み飛ばす。
【００８１】
一方、ステップ３０２が不成立の場合、ステップ３０９でＨＤカウンタＡを０にクリアし、続くステップ３１０でＨＤカウンタＣを１インクリメントする。その後、ステップ３１１では、ＨＤカウンタＣが７２（７２０°ＣＡ相当の値）以上であるか否かを判別し、ＹＥＳになると、ステップ３１２で信号処理回路３０にリセットをかける。具体的には、ＣＰＵ１１は、信号処理回路３０内のクランクカウンタ演算部３４に対してリセット信号を出力する。続くステップ３１３ではＨＤカウンタＣに０をセットし、本処理を終了する。
【００８２】
以上本実施の形態によれば、カウンタＡの値とカウンタＢの値とが所定期間連続して不整合である場合に信号処理回路３０がリセットされるので、信号処理回路３０の動作の正常化が可能となる。本実施の形態では、カウンタＡ，Ｂの不一致を７２０°ＣＡ（欠歯２周期分）で検出したが、その期間を変更することも可能である。
【００８３】
なお本発明は、上記以外に次の形態にて具体化できる。
前記図８のＮＥ３０割り込み処理の一部を変更する。図１０は、当該ＮＥ３０割り込み処理のステップ２０９〜２１６の部分を抽出したフローチャートであり、図１０においてステップ２１３直後のステップ４０１が新たな追加部分である。図１０では、ステップ２１３及びステップ４０１が共にＹＥＳとなる場合にＨＤフラグをＯＮし、ＮＥ１０割り込みを禁止する（ステップ２１４，２１５）。すなわち、カウンタＡの値とカウンタＢの値とが所定期間連続して整合し、且つ始動後の回転数が所定回転数（本実施の形態では５００ｒｐｍ）に達した場合に、信号処理回路３０が正常動作している旨判定する。
【００８４】
図１０によれば、エンジン始動後において、スタータのクランキングではなく点火や燃料噴射により回転数が上昇したことが条件に加えられる。従って、エンジンが確実に始動した状態下で、信号処理回路３０の正常動作がより確実に判定できる。
【００８５】
上記実施の形態では、エンジン始動直後においてＮＥ１０信号によるカウンタＡの値と、ＮＥ３０信号によるカウンタＢの値とを選択的に使用し、ソフトウエアによる回転位置検出とハードウエアによる回転位置検出とを切り替えるようにしたが、この構成を変更する。例えば、通常のエンジン運転途中でエンジン回転が一時的に不安定になる場合に、ソフトウエアによる回転位置検出とハードウエアによる回転位置検出とを切り替えるようにする。
【００８６】
具体的には図１１に示すように、エンジンの通常運転時（タイミングｔ２１以前）にはカウンタＢの値が有効とされ、このＢ値がクランクカウンタにコピーして使用される。そして、その通常運転時にエンジン回転数が降下し所定のしきい値（例えば３００ｒｐｍ）を下回るタイミングｔ２１では、カウンタＢに代えてカウンタＡの値が有効とされ、このＡ値がクランクカウンタにコピーして使用される。つまりタイミングｔ２１では、前述のＮＥ１０割り込みが起動され、ソフトウエアによる回転位置検出が実施される。その後、エンジン回転数が再上昇し、所定のしきい値（例えば５００ｒｐｍ）を上回るタイミングｔ２２では、再びカウンタＢの値が有効とされ、このＢ値がクランクカウンタにコピーして使用される（ＮＥ１０割り込み停止）。例えば、いわゆるエコノミーランニングシステムでは、車両の停止に伴いエンジンが一旦停止しようとし、その途中でアクセル操作が行われると、エンジン回転が再上昇する。従って、図示のような事態が生じ得る。
【００８７】
かかる場合、エンジン回転数の低下時にはクランク軸の回転が不安定になるおそれがあり、その回転数低下時にのみ、一時的にマイコン１０（ソフトウエア）による欠歯検出が実施される。従って、割り込み（ＮＥ１０割り込み）による欠歯検出処理を必要最小限で実施し、マイコン１０の処理負荷の軽減を図ることができる。しかも、全ての運転域を通じて欠歯検出を好適に実施することができる。
【００８８】
上記図７のＮＥ１０割り込みでは、エンジン始動後において欠歯検出時（ステップ１０４がＹＥＳとなる時）にカウンタＡに初期値（２４又は６０）をセットしたが、その欠歯検出前にカウンタＡに初期値をセットすることも可能である。具体的には、図１２に示すように、ＮＥ１０信号とＧｉｎ信号との回転角度の関係を予め規定しておく。図１２では、表欠歯Ｊ１の直後にＧｉｎ＝Ｌとなる１００°ＣＡの期間とＧｉｎ＝Ｈとなる６０°ＣＡの期間とが連続して設けられている。また、裏欠歯Ｊ２の直後にＧｉｎ＝Ｈとなる１００°ＣＡの期間とＧｉｎ＝Ｌとなる６０°ＣＡの期間とが連続して設けられている。この場合、ＮＥ１０信号の有効エッジ数とＧｉｎ信号の論理レベルとを知ることができれば、Ｇｉｎ信号の各エッジ位置でのカウンタＡの値が推測でき（図のａ１，ａ２，ａ３，ａ４）、その値をカウンタＡの初期値としてセットすることができる。
【００８９】
上記実施の形態では、２つの回転信号（ＮＥ１０信号，ＮＥ３０信号）を用い、更にそれら回転信号から２つのカウンタＡ，Ｂを動作させたが、この構成を変更する。要は、マイコン１０による欠歯検出と信号処理回路３０による欠歯検出との何れかを選択的に有効とすれば良く、そのことから言えば、信号処理回路３０では、必ずしもＮＥ３０信号を生成する機能を有しなくとも、少なくとも欠歯検出の機能（欠歯検出部３１）を有していれば良い。この場合、欠歯検出部３１の欠歯検出信号ＦＫが「基準位置信号」に相当する。そして、マイコン１０では、基本的にＮＥ１０信号（若しくはその分周信号）にてクランクカウンタをカウントし、その都度有効となる欠歯検出の結果（マイコン１０若しくは信号処理回路３０の検出結果）を用いてクランク角位置を検出する。
【００９０】
上記実施の形態では、回転位置検出に際して、ＮＥ１０信号の有効エッジ毎にカウント動作するカウンタＡを用いるようにしたが、この構成を変更する。すなわち、このカウンタＡに代えて、ＮＥ１０信号の有効エッジに基づきＮＥ３０信号の周期に対応する周期にてカウント動作するカウンタを設ける。
【００９１】
具体的には、図１３に示すように、マイコン１０内のＣＰＵ１１に、波形整形回路２０からのＮＥ１０信号の有効エッジに基づいて、このＮＥ１０信号を３分周した信号を生成するカウンタＣと、このカウンタＣの生成する信号に基づいてカウント動作するカウンタＤとを設ける。
【００９２】
次に、図１４を参照して、これらカウンタＣ及びカウンタＤの動作について説明する。
前述のように、ＮＥ１０信号は、１０°ＣＡ毎（所定角度間隔毎）のパルス列よりなり、そのパルス列の途中に２パルス分を欠落させた欠歯が設けられている。このようなＮＥ１０信号に対し、カウンタＣは、図１４に示すように、このＮＥ１０信号が立ち上がる毎に０〜２の３段階のカウント動作を行うカウンタである。一方、カウンタＤは、これも同図１４に示すように、カウンタＣのカウンタ値が０に初期化される毎に、すなわち３０°ＣＡに対応する角度毎にそのカウンタ値を１ずつカウントアップするカウンタである。そしてＣＰＵ１１は、上記カウンタＤの値が１１又は２３となることに基づいて上記欠歯の表裏いずれかの到来を認識する。このときには、次にＮＥ１０信号の立ち上がりが検出されるタイミングで上記カウンタＣの値を０に初期化する。一方、上記カウンタＤの値は、欠歯位置のＧｉｎ信号が表を示す場合には０に初期化し、裏を示す場合には１２にセットする。ＣＰＵ１１のこのような処理により、カウンタＤの値のみに基づいて上記１サイクル（＝７２０°ＣＡ）の周期を認識することができるようになる。
【００９３】
このように、カウンタＡに代えてカウンタＤを使用することにより、先の図８や図１０のステップ２１０にかかる比較処理、あるいは図９のステップ３０２にかかる比較処理などにおいて、カウンタＢの値とカウンタＤの値とを直接比較することができるようになる。
【００９４】
また、カウンタ値のクランクカウンタへのコピーに関して先にも一部触れたように、例えば図７のステップ１１１の処理において、カウンタＡの値をクランクカウンタにコピーする際には、実際には、カウンタＡ／３として３０°ＣＡの角度に対応した信号とするなど、分解能の調整が行われている。しかし上述のように、カウンタＡに代えてカウンタＤを使用するようにすれば、こうした分解能の調整も不要となり、同ステップ１１１内での処理についてもその簡略化が図られるようになる。
【００９５】
なお、この例の場合でも、基準位置（欠歯）の検出に、前記欠歯判定値Ｋを併用することが可能である。
またこの例の場合、ＮＥ１０信号が「第１の回転信号」に、ＮＥ３０信号が「第２の回転信号」に、カウンタＤが「第１のカウンタ手段」に、カウンタＢが「第２のカウンタ手段」にそれぞれ相当する。
【図面の簡単な説明】
【図１】発明の実施の形態におけるエンジン制御装置の概要を示す構成図。
【図２】信号処理回路の構成を示すブロック図。
【図３】各種信号の動きを示すタイムチャート。
【図４】欠歯検出の様子を示すタイムチャート。
【図５】ＮＥ３０信号生成の様子を示すタイムチャート。
【図６】ＴＤＣ信号及びＧ２信号生成の様子を示すタイムチャート。
【図７】ＮＥ１０割り込み処理を示すフローチャート。
【図８】ＮＥ３０割り込み処理を示すフローチャート。
【図９】ＮＥ１０割り込み処理の一部を示すフローチャート。
【図１０】ＮＥ３０割り込み処理の一部を示すフローチャート。
【図１１】回転数低下時のカウンタの切り替えを示すタイムチャート。
【図１２】ＮＥ１０信号及びＧｉｎ信号からカウンタ値を設定する様子を示すタイムチャート。
【図１３】上記実施の形態のエンジン制御装置の変形例についてその概要を示す構成図。
【図１４】上記変形例でのカウンタ動作例を示すタイムチャート。
【符号の説明】
１…ＥＣＵ、１０…マイコン、１１…ＣＰＵ、２０…波形整形回路、３０…信号処理回路。
【図１】
2004003454.tif 000003
【図２】
2004003454.tif 000004
【図３】
2004003454.tif 000005
【図４】
2004003454.tif 000006
【図５】
2004003454.tif 000007
【図６】
2004003454.tif 000008
【図７】
2004003454.tif 000009
【図８】
2004003454.tif 000010
【図９】
2004003454.tif 000011
【図１０】
2004003454.tif 000012
【図１１】
2004003454.tif 000013
【図１２】
2004003454.tif 000014
【図１３】
2004003454.tif 000015
【図１４】
2004003454.tif 000016