上記従来のエンジン制御装置では、エンジンの加減速によってクランクカウンタのカウント値がずれないようにするために、クランク信号の有効エッジ毎のタイミングでガード値を設定する必要があるため、クランクカウンタを正確にカウントアップさせるための処理や構成が複雑になってしまうという問題があった。特に、ガード値をソフト処理で設定するようにした場合には、クランク信号の有効エッジ毎に割込み処理を起動してガード値を設定することとなるため、その割込み処理と他の処理とを確実に行うために、処理速度の早い高性能なCPUが必要となってしまう。
本発明は、こうした問題に鑑みなされたものであり、エンジン制御装置において、クランクカウンタを正確にカウントアップさせるための処理や構成を簡素化することを目的としている。
上記目的を達成するためになされた請求項1に記載のエンジン制御装置は、エンジンのクランク軸の回転に対応した所定角度間隔毎のパルス列のクランク信号を入力し、そのクランク信号から周期が該クランク信号の周期の「1/逓倍数」である逓倍クロックを生成して、該逓倍クロックによりクランク軸の回転角度を表すクランクカウンタをカウントアップさせると共に、前記クランクカウンタの値を、少なくとも前記エンジンへの燃料噴射と点火とに共用するが、特に、クランクカウンタは、上位カウンタと下位カウンタとからなっている。
そして、このエンジン制御装置において、上位カウンタは、クランク信号の有効エッジでカウントアップされ、下位カウンタは、逓倍クロックでカウントアップされると共に、クランク信号の有効エッジ毎にクリアされるようになっている。
このような請求項1のエンジン制御装置によれば、エンジンの加減速によってクランク信号の有効エッジ同士の間隔であるパルス間隔が変化しても、そのパルス間隔の切れ目である有効エッジタイミングでクランクカウンタのカウント値は正しい値(そのタイミングでクランクカウンタがとるべき値)となるため、従来装置のようにクランク信号の有効エッジ毎のタイミングでガード値を設定する必要がなくなる。よって、クランクカウンタを正確にカウントアップさせるための処理や構成を簡素化することができる。
尚、上位カウンタと下位カウンタとの連続性を確保するためには、下位カウンタのビット数は、請求項2に記載の如く、逓倍数が2のn乗(nは正の整数)であるとすると、nビットに設定しておけば良い。つまり、このように設定すれば、上位カウンタのビット数をmとすると、クランクカウンタは合計で「m+n」ビットのカウンタとなる。
次に、請求項3に記載のエンジン制御装置では、請求項1のエンジン制御装置において、前記逓倍数は2のn乗(nは正の整数)であり、下位カウンタは、逓倍数に応じて、当該下位カウンタの最上位ビットから数えてnビット目が、逓倍クロックに応じたカウントアップ動作の最下位ビットとなるように構成されている。
尚、「下位カウンタの最上位ビットから数えてnビット目が逓倍クロックに応じたカウントアップ動作の最下位ビットとなる」とは、下位カウンタにおいて、そのnビット目よりも下位のビットは変化せずに、そのnビット目と該nビット目よりも上位のビットからなる部分が、逓倍クロックに応じてカウントアップ動作することを意味している。また、下位カウンタの最上位ビットから数えてnビット目とは、最上位ビットを1ビット目として数えたものである。一方、以下の説明において、特に「最上位ビットから数えて」と明記していなければ、ビットの順番位置は、最下位ビットから数えたもの(即ち、最下位ビットを1ビット目としたもの)である。
このような請求項3のエンジン制御装置によれば、動作中に逓倍数が変更されても、クランクカウンタのLSB(下位カウンタの1ビット目)の重みは常に同じとなり、上位カウンタと下位カウンタとの連続性、及びクランクカウンタのカウント値の連続性を確保することができる。
次に、請求項4に記載のエンジン制御装置は、請求項1〜3のエンジン制御装置において、クランクカウンタを成す上位カウンタと下位カウンタとのうち、上位カウンタのみカウント値を補正するように構成されている。尚、補正とは、カウント値を正しい値に変更する(書き換える)動作のことである。
このような請求項4のエンジン制御装置によれば、クランクカウンタのカウント値を補正しようとしてから、実際に補正する(書き換える)までに遅れがあっても、その遅れの影響が少なくて済む。
例えば、上位カウンタと下位カウンタとの両方の値を補正するように構成すると、その補正実施タイミングがずれたならば、クランクカウンタの値は次のクランク信号の有効エッジタイミングまで正常値に戻らない。これに対して、上位カウンタのみ補正するように構成すれば、補正実施タイミングが遅れて上位カウンタをクランク信号のパルス間隔中の何れかのタイミングで補正したとしても、もともと下位カウンタはクランク信号の有効エッジ毎にクリアされて正常値化されているため、上位カウンタの補正を行った時点でクランクカウンタのカウント値は正常値となり、補正実施遅れの影響を少なくすることができる。
次に、請求項5に記載のエンジン制御装置では、請求項1〜4のエンジン制御装置において、上位カウンタは、そのカウント値が予め設定された上限値になると次に0へ戻るように構成されている。
このような請求項5のエンジン制御装置によれば、クランクカウンタを、ある値でラップラウンドさせることができる。例えば、4サイクルエンジンの場合、上記上限値をエンジンの1行程である720°CA分に相当する値に設定すれば、クランクカウンタを720°CA毎にラップラウンドさせることができる。
ところで、一般に、クランク信号には、有効エッジ同士の間隔であるパルス間隔のうち、所定角度間隔毎のパルスが所定数M(Mは正の整数)だけ故意に抜かれたパルス間隔である欠歯部が発生するようになっている。
そこで、請求項6に記載のエンジン制御装置では、その欠歯部を特定する欠歯部特定手段を備え、該欠歯部特定手段によって欠歯部であると特定されているパルス間隔の期間では、下位カウンタのラップラウンドが許可されて、上位カウンタが下位カウンタからのキャリー(即ち、下位カウンタからの桁上げ)によってカウントアップされるようにしている。そして、このような請求項6のエンジン制御装置によれば、クランク信号の欠歯部の期間中でも、クランクカウンタをカウントアップさせることができる。
尚、この請求項6のエンジン制御装置において、勿論、欠歯部特定手段によって欠歯部であると特定されているパルス間隔以外の期間では、請求項7に記載の如く、下位カウンタのラップラウンドが禁止されて、その下位カウンタのカウント値が最大値で止まるようになっていれば良い。この構成によれば、欠歯部以外の期間において、エンジンの減速に伴いクランク信号の今回のパルス間隔が前回のパルス間隔より長くなっても、下位カウンタはラップラウンドしないため、クランクカウンタのカウント値を、次のクランク信号の有効エッジタイミングまで、その有効エッジタイミングでとるべき値の直前の値で止めておくことができる。つまり、欠歯部の期間についてのみ、下位カウンタのラップラウンドが許可されて、上位カウンタが下位カウンタからのキャリーによってカウントアップされるように構成すれば良い。
次に、請求項8に記載のエンジン制御装置は、請求項6,7のエンジン制御装置において、キャリー許可後上位設定レジスタを備えており、欠歯部特定手段によって欠歯部であると特定されているパルス間隔の終了タイミング(つまり、そのパルス間隔の終わりに該当する有効エッジのタイミングであり、換言すれば、次のパルス間隔の開始に該当する有効エッジのタイミング)にて、上位カウンタのカウント値を、そのキャリー許可後上位設定レジスタの値に変更する(書き換える)ようになっている。
このような請求項8のエンジン制御装置によれば、クランク信号の欠歯部の期間中にエンジンが加速して、上位カウンタが下位カウンタからのキャリーによりM回(Mは、欠歯部で抜かれているパルス数)だけカウントアップされる前に、次のクランク信号の有効エッジが発生した場合でも、その上位カウンタのカウント値を正しい値に補正することができる。つまり、欠歯部の終了タイミングで遷移すべき上位カウンタの値を、キャリー許可後上位設定レジスタにセットしておけば良いのである。
次に、請求項9に記載のエンジン制御装置では、請求項6〜8のエンジン制御装置において、欠歯部特定手段は、欠歯部であると特定しているパルス間隔の期間だけ、キャリー許可フラグをオンするようになっている。
そして、このようにキャリー許可フラグをオンするようにすれば、請求項6のエンジン制御装置については、そのキャリー許可フラグがオンされている期間だけ、下位カウンタのラップラウンドが許可されて、上位カウンタが下位カウンタからのキャリーによりカウントアップされるように構成することができ、請求項7のエンジン制御装置については、キャリー許可フラグがオンされていない(オフされている)期間では、下位カウンタのラップラウンドが禁止されて、その下位カウンタのカウント値が最大値で止まるように構成することができる。また、請求項8のエンジン制御装置については、キャリー許可フラグがオンからオフに転じる時(例えば、キャリー許可フラグがオンで且つクランク信号に有効エッジが発生した時)に、上位カウンタのカウント値をキャリー許可後上位設定レジスタの値に変更するように構成することができる。
ところで、クランク軸センサの中には、例えば特許第3379261号公報に記載されているように、あるクランク角ではクランク信号に欠歯部が1つだけ発生し、他のクランク角ではクランク信号に欠歯部が2つ連続して発生する、といったタイプのものもある。
そこで、請求項9のエンジン制御装置において、クランク信号に欠歯部が1つだけ発生する場合と2つ連続して発生する場合とがあるのであれば、請求項10に記載の如く、欠歯部特定手段は、2つ連続して発生する欠歯部については、キャリー許可フラグをオンしてからクランク信号の2回目の有効エッジで該キャリー許可フラグをオフさせるように構成すれば良い。このように構成すれば、キャリー許可フラグを2つ連続の欠歯部の期間に渡り継続してオンさせることができる。
また、この場合、欠歯部特定手段は、少なくともキャリー許可フラグをオンさせる時点(つまり、欠歯部の開始タイミング)において、今回の欠歯部が1つ単独のもの(以下、単一欠歯という)か2つ連続のもの(以下、連続欠歯という)かを認識している必要がある。
そこで、請求項11に記載のエンジン制御装置では、請求項10のエンジン制御装置において、欠歯部特定手段は、クランク信号の今回のパルス間隔が欠歯部であることを検知すると、その今回のパルス間隔の計測値Taと次のパルス間隔の計測値Tbとを周期レジスタにそれぞれ格納するようになっている。そして更に、欠歯部特定手段は、その周期レジスタに格納された2つの計測値Ta,Tbを用いて「Tb≧Ta×C(但し、Cは定数)」の関係が成立しているか否かを判定し、その判定結果により、次に欠歯部が2つ連続して発生するか否か(即ち、次に発生する欠歯部が連続欠歯か単一欠歯か)を判別するようになっている。
つまり、「Tb≧Ta×C(但し、Cは定数)」の関係が成立していれば、今回は欠歯部が連続して発生した(連続欠歯であった)と判断することができ、上記関係が成立していなければ、今回は欠歯部が1回だけ発生した(単一欠歯であった)と判断することができる。よって、例えば、単一欠歯と連続欠歯とが交互に発生するのであれば、上記関係が成立していたならば、次に発生するのは単一欠歯であると判別することができ、上記関係が成立していなければ、次に発生するのは連続欠歯であると判別することができる。
そして、このような請求項11の構成によれば、例えばクランク信号の有効エッジ毎に今回のパルス間隔と前回のパルス間隔とを比較するといった処理を行わなくても、次に発生する欠歯部が連続欠歯か単一欠歯かを効率的に判別することができる。
一方、請求項1〜11のエンジン制御装置において、逓倍クロックは、クランク信号の前回の1つのパルス間隔だけを用いて生成するようにしても良いが、請求項12に記載のように、逓倍クロックを、クランク信号のN個(Nは2以上の整数)の周期を使用して生成するように構成しても良い。
そして、このように構成すれば、何らかの原因でクランク信号の1つのパルス間隔だけが異常に短くなったり長くなったりしても、その影響を抑制することができる。
また、この場合、前記N個の周期を、請求項13に記載の如く、クランク信号の最新のN個の周期とすれば、常に最新のクランク信号の周期に基づいて逓倍クロックを生成することができる。
次に、請求項14に記載のエンジン制御装置は、請求項1〜13のエンジン制御装置において、クランク信号に欠歯部が発生した直後では、その欠歯部がパルスをM個抜いたものであるとすると、逓倍クロックの周期を、その欠歯部のパルス間隔Tkを用いて「Tk/(M+1)/逓倍数」の値にするようになっている。
そして、このような請求項14のエンジン制御装置によれば、クランク信号に欠歯部が発生した直後においても、最新のクランク信号に基づく逓倍クロックによって下位カウンタをカウントアップさせることができる。
次に、請求項15に記載のエンジン制御装置は、請求項1〜14のエンジン制御装置において、制御信号の出力開始タイミングを示す値がセットされるオンタイミング設定レジスタと、前記制御信号の出力停止タイミングを示す値がセットされるオフタイミング設定レジスタと、前記制御信号の出力を強制的に停止するタイミングを示す値がセットされる出力ガードタイミング設定レジスタと、一定時間毎にアップカウントする出力ガード用アップカウンタとを備えている。そして、このエンジン制御装置では、クランクカウンタのカウント値がオンタイミング設定レジスタの値以上になると制御信号の出力を開始し、クランクカウンタのカウント値がオフタイミング設定レジスタの値以上になると制御信号の出力を停止するが、特に、出力ガード用アップカウンタのカウント値が出力ガードタイミング設定レジスタの値と一致すると、クランクカウンタのカウント値に拘わらず(つまり、クランクカウンタのカウント値がオフタイミング設定レジスタの値以上にならなくても)、制御信号の出力を強制的に停止するようになっている。
このような請求項15のエンジン制御装置によれば、クランクカウンタのカウント値がオンタイミング設定レジスタの値以上になって制御信号の出力が開始されてから、クランクカウンタのカウント値がオフタイミング設定レジスタの値以上になる前に、エンジン停止などでクランク信号の変化が停止してしまっても、出力ガード用アップカウンタのカウント値が出力ガードタイミング設定レジスタの値と一致した時点で、制御信号の出力を強制的に停止させることができる。つまり、制御信号が出力されたままになってしまうことを防ぐことができる。
尚、制御信号の出力を開始してから該制御信号の出力を強制的に停止させるまでのガード時間をTim1とすると、出力ガード用アップカウンタがフリーランのカウンタであるならば、出力ガードタイミング設定レジスタには、制御信号の出力が開始された時点での出力ガード用アップカウンタの値にTim1に相当する値を加えた値をセットすれば良い。また、出力ガード用アップカウンタが制御信号の出力開始時にリセットされるカウンタであるならば、出力ガードタイミング設定レジスタには、Tim1に相当する値をそのままセットすれば良い。
しかも、この請求項15のエンジン制御装置によれば、アップカウントするカウンタ(出力ガード用アップカウンタ)のカウント値と出力ガードタイミング設定レジスタの値とが一致すると制御信号の出力を強制停止する構成であるため、制御信号の出力が開始されてからでもガード時間を再設定すること(設定し直すこと)が可能である。
つまり、もしガード時間をダウンカウンタで計時する場合には、制御信号の出力開始時にてダウンカウンタにガード時間に相当する値をセットして該ダウンカウンタを起動し、そのダウンカウンタのカウント値が0になったら制御信号の出力を強制停止する、といった構成を採ることとなるが、その場合には、ダウンカウンタを一度起動した後、該ダウンカウンタに他のガード時間に相当する値をセットし直すと、実際のガード時間が再度セットしたものよりも長い時間になってしまうため、ガード時間の再設定はできないが、請求項15の構成ならば、そのような不具合はない。
次に、請求項16に記載のエンジン制御装置は、請求項1〜15のエンジン制御装置において、指令信号の出力開始タイミングを示す値がセットされる第1設定レジスタと、前記指令信号の出力停止タイミングを示す値がセットされる第2設定レジスタと、一定時間毎にアップカウントする出力停止用アップカウンタとを備えている。
そして、このエンジン制御装置では、クランクカウンタのカウント値が第1設定レジスタの値以上になると指令信号の出力を開始し、出力停止用アップカウンタのカウント値が第2設定レジスタの値と一致すると、その指令信号の出力を停止するようになっている。
このような請求項16のエンジン制御装置によれば、クランクカウンタのカウント値が第1設定レジスタの値以上になって指令信号の出力が開始されてから、出力停止用アップカウンタのカウント値が第2設定レジスタの値と一致した時点で、指令信号の出力を停止させることができる。つまり、指令信号の出力開始タイミングだけをクランク角に同期したタイミングに設定することができる。
尚、指令信号の出力を開始してから該指令信号の出力を停止させるまでの出力停止時間をTim2とすると、出力停止用アップカウンタがフリーランのカウンタであるならば、第2設定レジスタには、指令信号の出力が開始された時点での出力停止用アップカウンタの値にTim2に相当する値を加えた値をセットすれば良い。また、出力停止用アップカウンタが指令信号の出力開始時にリセットされるカウンタであるならば、第2設定レジスタには、Tim2に相当する値をそのままセットすれば良い。
そして更に、この請求項16のエンジン制御装置においても、アップカウントするカウンタ(出力停止用アップカウンタ)のカウント値と第2設定レジスタの値とが一致すると指令信号の出力を停止する構成であるため、指令信号の出力が開始されてからでも出力停止時間を再設定すること(設定し直すこと)が可能である。
次に、請求項17に記載のエンジン制御装置は、請求項1〜16のエンジン制御装置において、基準位置信号の出力タイミングを示す値がセットされる基準設定レジスタを備えている。更に、このエンジン制御装置では、クランクカウンタにおける上位カウンタのカウント値又はその上位カウンタを分周した分周カウンタのカウント値が、基準設定レジスタの値と一致している間、基準位置信号をハイレベルとローレベルとの何れかである特定レベルで出力し、逆に、上位カウンタのカウント値又は分周カウンタのカウント値が基準設定レジスタの値と一致していない場合には、基準位置信号を特定レベルとは反対のレベルで出力するようになっている。この構成によれば、クランクカウンタを利用して、基準位置信号を、あるクランク角の期間だけ特定レベルで出力することができる。また、この基準位置信号は、クランク角が特定の基準角度であること(換言すれば、クランク軸の回転位置が特定の基準位置であること)を示す信号として使用することができる。
次に、請求項18に記載のエンジン制御装置は、請求項1〜17のエンジン制御装置において、出力信号の反転タイミングを示す値がそれぞれセットされる第1のタイミング設定レジスタと第2のタイミング設定レジスタとを備えている。更に、このエンジン制御装置では、クランクカウンタにおける上位カウンタのカウント値又はその上位カウンタを分周した分周カウンタのカウント値が、第1のタイミング設定レジスタの値と一致したら、出力信号の出力レベルをハイレベルとローレベルとの何れかである特定レベルにし、上位カウンタのカウント値又は分周カウンタのカウント値が第2のタイミング設定レジスタの値と一致したら、出力信号の出力レベルを特定レベルとは反対のレベルにするようになっている。この構成によれば、クランクカウンタを利用して、出力信号を、任意のクランク角から他の任意のクランク角までの期間だけ特定レベルで出力することができる。また、この出力信号は、例えば360°CA毎に反対のレベルになる気筒判別用の表裏信号として使用することができる。
次に、請求項19に記載のエンジン制御装置は、請求項1〜18のエンジン制御装置において、AD変換器と、該AD変換器の起動タイミングを示す値がセットされるAD設定レジスタとを備えており、クランクカウンタのカウント値がAD設定レジスタの値に達すると、前記AD変換器を起動するようになっている。この構成によれば、AD設定レジスタにセットする値により、任意のクランク角のタイミングでAD変換器を起動することができる。
次に、請求項20に記載のエンジン制御装置は、請求項1〜19のエンジン制御装置において、クランク信号のパルス間隔を計測して、そのパルス間隔が欠歯部であるか否かを判定する欠歯判定手段と、第2カウンタとを備えている。そして、第2カウンタは、欠歯判定手段により欠歯部であると判定されたパルス間隔の終了タイミングでクリアされ、以降、クランク信号の有効エッジでカウントアップされる。
このような第2カウンタを備えた請求項20のエンジン制御装置によれば、クランクカウンタの補正を、第2カウンタのカウント値に基づき任意のタイミングで行うことができる。
つまり、第2カウンタを備えていない装置では、欠歯判定手段によって欠歯部であると判定されたパルス間隔の終了タイミングでしかクランクカウンタの補正を行うことができないが、第2カウンタを備えていれば、その第2カウンタのカウント値が所望の値になったタイミングでクランクカウンタの補正を行うことができる。
具体的構成例としては、請求項21に記載のように、補正位置設定レジスタと補正値設定レジスタとを設け、第2カウンタのカウント値が補正位置設定レジスタの値と一致すると、クランクカウンタにおける上位カウンタのカウント値を補正値設定レジスタの値に変更する(書き換える)ように構成すれば良い。つまり、この構成によれば、補正位置設定レジスタにセットする値によって、補正の実施タイミングを任意に設定することができ、また、補正値設定レジスタには、その補正実施タイミングでとるべき上位カウンタの正しい値をセットすれば良い。
次に、請求項22に記載のエンジン制御装置では、請求項20,21のエンジン制御装置において、第2カウンタはラップラウンドせず、該第2カウンタのカウント値は所定の最大値で止まるようになっている。
この構成によれば、欠歯判定手段による欠歯部の判定抜け(本当は欠歯部であるのに欠歯部と判定し損ねること)が起こっても、第2カウンタのカウント値は最大値で止まって0には戻らないため、前述のクランクカウンタの補正が誤ったクランク角の位置で実施されてしまうことがなく有利である。つまり、第2カウンタがラップラウンドするようになっていると、欠歯部の判定抜けが起こった場合、その第2カウンタのカウント値が欠歯部の終了タイミング以外のタイミングで0に戻ってしまい、その結果、クランクカウンタの補正が誤った位置で実施されてしまう可能性が生じるが、請求項22の構成によれば、そのような心配がない。
次に、請求項23に記載のエンジン制御装置では、請求項20〜22のエンジン制御装置において、当該装置には、エンジンのカム軸の回転位置が特定位置のときにカム軸センサから発生される気筒判別用信号が入力されると共に、その気筒判別用信号の発生タイミングで第2カウンタのカウント値を記憶するキャプチャレジスタが備えられている。そして更に、この請求項23のエンジン制御装置では、前記キャプチャレジスタの値(即ち、気筒判別用信号が発生した時の第2カウンタのカウント値)から、気筒判別用信号が気筒判別区間内に発生したか否かを判定するようになっている。
この構成によれば、気筒判別用信号が気筒判別区間内に発生したか否かを簡単且つ正確に判定することができる。つまり、従来の手法としては、クランク信号に同期したあるタイミングからあるタイミングまでを気筒判別区間として設定すると共に、その気筒判別区間の開始タイミングから、気筒判別用信号が発生したことを検知して記憶する記憶回路を有効にし、更に、気筒判別区間の終了タイミングで上記記憶回路の記憶内容を読み取って、その記憶回路に気筒判別用信号の発生したことが記憶されていたならば、気筒判別用信号が気筒判別区間内に発生したと判定するようにしていた。しかし、この手法では、上記記憶回路の記憶内容を読み取るタイミングが少しでもずれてしまうと、気筒判別用信号が本当に気筒判別区間内に発生したか否かを判定することができない。これに対して請求項23の構成によれば、そのようなタイミングのシビアさが無く、キャプチャレジスタの値をいつ読み取っても(実際の気筒判別区間が過ぎてから読み取っても)、その値から、気筒判別用信号が気筒判別区間内に発生したか否かを正確に判定することができる。
次に、請求項24に記載のエンジン制御装置では、請求項20〜23のエンジン制御装置において、欠歯判定手段は、今回計測中のクランク信号のパルス間隔が、前回計測したパルス間隔を所定の判定比倍した長さ以上であれば、そのパルス間隔が欠歯部であると判定するようになっているが、特に、前記判定比(以下、欠歯判定比という)として使用される値がそれぞれ格納される第1判定比設定レジスタと第2判定比設定レジスタとを備えている。
そして更に、欠歯判定手段は、第2カウンタのカウント値により、クランク信号の欠歯部付近の期間が、第1判定比設定レジスタの値が欠歯判定比として使用される第1期間として設定され、それ以外の期間が、第2判定比設定レジスタの値が欠歯判定比として使用される第2期間として設定されるように構成されている。そして、第2判定比設定レジスタには、第1判定比設定レジスタに格納される値よりも大きい値(即ち、欠歯部と判定し難くなる値)が格納されている。
このような請求項24のエンジン制御装置によれば、クランク信号の欠歯部付近の期間(第1期間)よりも、それ以外の期間(第2期間)の方が、欠歯判定比が大きい値になるため、クランク信号の欠歯部ではない通常のパルス間隔を欠歯部であると誤判定してしまうこと(以下、欠歯誤判定という)を効果的に防止することができる。
次に、請求項25に記載のエンジン制御装置では、請求項24のエンジン制御装置において、欠歯判定手段は、前記第2期間の開始タイミングを示す値がセットされる開始位置指定レジスタと、前記第2期間の開始タイミングから該第2期間が終了するまでのクランク信号のパルス数を示す値がセットされるオフセット指定レジスタとを備えている。そして更に、欠歯判定手段は、第2カウンタのカウント値が開始位置指定レジスタの値と一致した時点からクランク信号の有効エッジがオフセット指定レジスタの値だけ発生するまでの期間が、前記第2期間となり、それ以外の期間が前記第1期間となるように構成されている。
このような請求項25のエンジン制御装置によれば、第1期間と第2期間とを自由に設定することができる上に、第2期間の幅を、その第2期間の開始タイミングからのオフセットで指定する構成であるため、例えば、万一、第2期間中に(つまり、第2カウンタのカウント値が開始位置指定レジスタの値と一致した後に)欠歯誤判定が起こって第2カウンタのカウント値が0に戻ってしまったとしても、それには影響されずに第2期間を適切なタイミングで終了させることができる。
一方、請求項24,25のエンジン制御装置において、第2期間では、請求項26に記載のように、第2判定比設定レジスタの値が判定比として使用されることに代えて、欠歯判定手段の判定動作が禁止されるように構成しても良い。このように構成すれば、欠歯誤判定を一層確実に防止することができる。
また、開始位置指定レジスタとオフセット指定レジスタには、クランク信号の欠歯部を含む複数パルス間隔分の期間が第1期間となるような値をセットしておくことが望ましい。例えば、万一、ノイズによってクランク信号の有効エッジが幾つか潰されてしまった場合でも、本当の欠歯部が到来する前に第2期間を終了させることができ、その本当の欠歯部の期間において第1判定比設定レジスタの値(即ち、欠歯部と判定し易くなる値)を欠歯判定比として使用することができるからである。
以下に、本発明が適用された実施形態のエンジン制御装置について説明する。尚、本実施形態のエンジン制御装置は、車両に搭載された4サイクルの内燃機関型エンジンを制御するものである。
まず、図1は、実施形態のエンジン制御装置(以下、エンジンECUという)1の構成を表す構成図であり、図2は、このエンジンECU1でのクランク信号に関する全体動作を表すタイムチャートである。
図1に示すように、本実施形態のエンジンECU1には、マイコン(マイクロコンピュータ)3と、入力回路5と、出力回路6とが備えられている。そして、マイコン3は、クランク軸センサ7からのクランク信号,カム軸センサ9からの気筒判別用信号(以下、G信号という),水温センサやスロットル開度センサ等からの他の各種センサ信号,及びトランスミッションのシフトポジションスイッチやエアコンスイッチ等からの各種スイッチ信号を入力回路5を介して取り込み、それら各種信号に基づいて、インジェクタへ出力回路6を介して駆動信号(噴射指令信号)を出力する燃料噴射制御や、点火装置へ出力回路6を介して駆動信号(点火指令信号)を出力する点火時期制御等のエンジン回転に同期した制御を実施しているが、特に、クランク角(クランク軸の回転角度)を表すクランクカウンタ11をクランク信号に基づきカウントアップさせ、そのカウント値をエンジン回転に同期した制御に使用している。例えば、クランクカウンタ11の値(カウント値)がある値から他のある値になるまで駆動信号を出力するとか、クランクカウンタ11の値がある値になってから一定時間が経過するまで駆動信号を出力するといった具合に、クランクカウンタ11の値を使用する。
尚、クランク軸センサ7からマイコン3に入力されるクランク信号は、図2に示すように、エンジンのクランク軸の回転位置が予め定められた基準位置に来ていない場合には、クランク軸が10°回転する毎(10°CA毎)にロー→ハイ→ローといった具合にパルス状に変化し、クランク軸の回転位置が基準位置に来たときには、立ち上がりの間隔が整数倍(本実施形態では3倍)長くなる。つまり、クランク信号は、クランク軸の回転位置が基準位置に来ていない場合には、10°CA毎のパルス列となり、クランク軸の回転位置が基準位置に来たときには、10°CA毎のパルスが所定数(本実施形態では2個)抜けることで立ち上がり間隔が30°CA分の長さになった欠歯部Kとなる。また、カム軸センサ9からマイコン3に入力されるG信号は、図2に示すように、クランク軸の回転に対し1/2の比率で回転するエンジンのカム軸の回転位置が特定位置に来たときに、ロー→ハイ→ローといった具合にパルス状に変化する信号である。このため、G信号の立ち上がりエッジは720°CA毎に発生することとなる。
ここで、マイコン3には、クランク信号とG信号とを入力してクランクカウンタ11に関する信号処理を行う信号処理部13が備えられている。そして、その信号処理部13は、クランク信号に基づいてクランクカウンタ11をカウントアップさせる処理を主に行うカウンタ処理部15と、クランク信号の各パルス間隔(本実施形態では、立ち上がりエッジ同士の間隔であり、以下、クランクパルスともいう)について、そのパルス間隔が欠歯部Kであるか否かを判定する欠歯判定部17(欠歯判定手段に相当)と、クランクカウンタ11のカウント値に基づき信号を出力するための信号出力部19と、クランクカウンタ11とは別にクランク信号によってカウントアップされる第2カウンタ21とを有している。
更に、マイコン3には、エンジンを制御するための各種処理を実行するCPU23と、CPU23によって実行されるプログラムなどが格納されたROM25と、CPU23による演算結果を一時記憶するRAM27と、入力回路5を介して入力されるアナログの信号をデジタルデータに変換して取り込むためのAD変換器29と、入力回路5を介して入力されるデジタルの信号(ハイ又はローの二値信号)を取り込むと共に、本マイコン3の外部へ信号を出力するためのI/Oポート31とが備えられている。
次に、マイコン3の信号処理部13について説明する。
まず、欠歯判定部17は、クランク信号のパルス間隔を計測すると共に、今回計測中のパルス間隔が、前回計測したパルス間隔を所定の欠歯判定比倍した長さ以上になると、その今回計測中のパルス間隔が欠歯部Kであると判定して、図2に示す如く、その判定時点から次のクランク信号の立ち上がりエッジ(つまり、欠歯部Kの終了タイミングに相当するクランク信号の立ち上がりエッジ)までの間、ハイレベルの欠歯検出信号を出力する、といった判定動作(以下、欠歯検出動作という)を行う。
次に、カウンタ処理部15は、クランクカウンタ11の他に、図3に示す如く、クランク信号の各パルス間隔を計測するパルス間隔計測部33と、クランク信号に立ち上がりエッジが発生する毎に、パルス間隔計測部33で今回計測されたパルス間隔計測値を所定の逓倍数で割った値を求め、その値に相当する長さを1周期とした逓倍クロック(即ち、周期がクランク信号の周期の「1/逓倍数」であるクロック)を生成して出力する逓倍クロック生成部35とを備えている。
そして、クランクカウンタ11は、図3及び図4に示す如く、上位カウンタ11aと下位カウンタ11bとからなっている。そして更に、上位カウンタ11aは、クランク信号の立ち上がりエッジ(有効エッジに相当)でカウントアップされ、下位カウンタ11bは、逓倍クロック生成部35で生成される上記逓倍クロックの立ち上がりエッジでカウントアップされると共に、クランク信号の立ち上がりエッジでクリアされる(値が0に初期化される)ようになっている。尚、図2や後述する図5(B)及び図6(B)では、クランク信号の欠歯部Kにおいても、上位カウンタ11aがカウントアップされることが示されているが、この点については後で図7〜図13を用い詳しく述べる。
ここで、上位カウンタ11aと下位カウンタ11bは、図4(A)に示すように、両方共に8ビットのカウンタであるが、本実施形態では、逓倍数を可変にすることを想定しており、このため、下位カウンタ11bの方は、設定された逓倍数に応じて、その逓倍数が2のn乗であるとすると、当該下位カウンタ11bの最上位ビットから数えてnビット目が、逓倍クロックに応じたカウントアップ動作の最下位ビットとなって、そのnビット目を含む上位のビットが使用可能範囲になり、そのnビット目よりも下位のビットは0のままになるように構成されている。
例えば、逓倍数が32(=2の5乗)であれば、下位カウンタ11bの最上位ビットから数えて5ビット目が、逓倍クロックに応じたカウントアップ動作の最下位ビットとなり、その5ビット目よりも下位のビット(下位3ビット)は0のまま変化しない。また、逓倍数が128(=2の7乗)であれば、下位カウンタ11bの最上位ビットから数えて7ビット目が、逓倍クロックに応じたカウントアップ動作の最下位ビットとなり、その7ビット目よりも下位のビット(下位1ビット)は0のまま変化しない。そして、逓倍数が設定可能な最大値である256(=2の8乗)であれば、下位カウンタ11bの最上位ビットから数えて8ビット目であって、当該下位カウンタ11bの最下位ビットが、逓倍クロックに応じたカウントアップ動作の最下位ビットとなる。
つまり、上位カウンタ11aは右詰めとし、下位カウンタ11bは左詰めとすることで、クランクカウンタ11を固定小数点のカウンタにしている。
尚、もし逓倍数を変えずに固定値とするのであれば、下位カウンタ11bのビット数は、余分に設けておく必要はなく、逓倍数が2のn乗であるとすると、nビットとすれば良い。例えば、逓倍数が32であれば、下位カウンタ11bは5ビットにすれば良い。
また、本実施形態のエンジンECU1においては、後述するようにクランク信号の欠歯部Kの期間中はキャリー許可フラグが図2の如くオンされるが、下位カウンタ11bは、そのキャリー許可フラグがオフされている間(即ち、欠歯部K以外の期間)は、ラップラウンドが禁止され、その値は使用可能範囲の最大値(つまり、使用可能範囲の全ビットが1になった状態)で止まるようになっている。このため、図4(B)にて「減速」と記したクランク信号のパルス間隔に示すように、クランク信号が立ち上がってから次に立ち上がるまでに下位カウンタ11bの値が最大値に達したならば、その下位カウンタ11bの値は、次にクランク信号が立ち上がってクリアされるまで、最大値のままとなる。
このようなエンジンECU1では、クランクカウンタ11を上位カウンタ11aと下位カウンタ11bに分けて前述の如くカウントアップさせているため、図4(B)に示すように、エンジンの加減速によってクランク信号のパルス間隔が変化しても、そのパルス間隔の切れ目である立ち上がりエッジのタイミングでクランクカウンタ11の値は自然に正しい値(そのタイミングでとるべき値)となり、従来装置の如くクランク信号の立ち上がりタイミング毎にガード値を設定する必要がなくなる。
例えば、図4(B)にて「加速」と記したクランク信号のパルス間隔に示すように、エンジンの加速によってクランク信号のパルス間隔が短くなった場合でも、そのパルス間隔の終了タイミング(換言すれば、次のパルス間隔の開始タイミング)にて、クランクカウンタ11の値は自然にそのタイミングでとるべき正しい値となる。また、図4(B)にて「減速」と記したクランク信号のパルス間隔に示すように、エンジンの減速によってクランク信号のパルス間隔が長くなった場合でも、そのパルス間隔の終了タイミングにて、クランクカウンタ11の値は自然にそのタイミングでとるべき正しい値となる。
よって、クランクカウンタ11を正確にカウントアップさせるための処理や構成を簡素化することができる。
更に、本実施形態のエンジンECU1では、前述したように、上位カウンタ11aを右詰めとし、下位カウンタ11bを左詰めとすることで、クランクカウンタ11を固定小数点のカウンタにしている。このため、動作中に逓倍数を変更しても、クランクカウンタ11のLSB(下位カウンタ11bの本当の1ビット目)の重みは常に同じとなり、上位カウンタ11aと下位カウンタ11bとの連続性、及びクランクカウンタ11のカウント値の連続性を確保することができ、効率的に計算することができる。
また、本実施形態において、カウンタ処理部15は、図3に示すように、上限値設定レジスタ38を備えている。そして、カウンタ処理部15は、図5(A)に示す上位カウンタの上限値補正動作を行うことで、上位カウンタ11aを、8ビットの最大値である255までカウントするフリーランのカウンタではなく、図5(B)に示すように、カウント値が上限値設定レジスタ38に予め設定された上限値(本実施形態では、720°CAに相当する71)になると次に0へ戻るカウンタにしている。
即ち、図5(A)に示すように、カウンタ処理部15は、上位カウンタ11aのカウントアップタイミングになると(S110:YES)、上位カウンタ11aの値が上限値設定レジスタ38にセットされている値と同じであるか否かを判断し(S120)、両値が同じでなければ(S120:NO)、上位カウンタ11aの値を1つカウントアップさせるが、上記両値が同じであれば(S120:YES)、上位カウンタ11aの値を0にする(S140)。
この構成によれば、クランクカウンタ11を任意の値でラップラウンドさせることができる。特に、クランク信号のパルスが発生するクランク角の間隔が10°CAから変わったとしても、上限値設定レジスタ38に720°CA分に相当する値をセットしておけば、クランクカウンタ11をエンジンの1行程毎(720°CA毎)にラップラウンドさせることができる。
また更に、カウンタ処理部15には、図3に示すように、クランクカウンタ11の値をソフト処理で正しい値に補正するために用いられる補正値設定レジスタ37aが備えられている。
そして、マイコン3では、CPU23が、図6(A)に示すように、欠歯判定部17からの欠歯検出信号が立ち上がったタイミングで上位カウンタ11aの値が正しい値か否かを判定し(S170)、正しい値でないと否定判定したならば(S170:NO)、その時点からクランク信号が4回立ち上がった時点(つまり、欠歯部Kから30°CA後のタイミング)で上位カウンタ11aがとるべき値を、正しいカウント値として補正値設定レジスタ37aにセットする(S180)。
そして更に、CPU23は、図6(B)に示すように、欠歯検出信号が立ち上がってからクランク信号が4回立ち上がった時に、図6(A)のS170で否定判定されてS180の処理が実行されたか否かを判定し、肯定判定したならば、上位カウンタ11aの値を補正値設定レジスタ37aにセットされている正しい値に書き換える補正処理を行う。尚、図6(B)では、上位カウンタ11aの値が「10」から「3」に書き換えられた場合が例示されている。
つまり、本実施形態では、上位カウンタ11aと下位カウンタ11bとのうち、上位カウンタ11aのみソフト処理でカウント値を補正するようにしている。
このため、カウント値を補正しようとしてから、実際にカウント値を補正する(書き換える)までに遅れがあっても、その遅れの影響が少なくて済むという利点がある。
つまり、図6(B)において、欠歯検出信号が立ち上がってからクランク信号が4回立ち上がったタイミングは、時刻t1となるが、もし上位カウンタ11aと下位カウンタ11bとの両方の値を補正するように構成すると、その補正実施タイミングが時刻t1から遅れて時刻t2にずれたならば、図6(B)における()内に示すように、クランクカウンタ11の値は次のクランク信号の立ち上がりタイミングである時刻t3まで正常値に戻らない。これに対して、上位カウンタ11aのみ補正するように構成すれば、補正実施タイミングが遅れて時刻t2になったとしても、もともと下位カウンタ11bはクランク信号の立ち上がりエッジ毎にクリアされて正常値化されているため、上位カウンタ11aの補正を行った時刻t2でクランクカウンタ11のカウント値は正常値となり、補正実施遅れの影響を少なくすることができるのである。
一方、図3に示すように、カウンタ処理部15には、前述した補正値設定レジスタ37a及び上限値設定レジスタ38等の他にも、分周カウンタ36と、補正値設定レジスタ37bと、第1周期レジスタ39と、第2周期レジスタ40と、キャリー許可開始位置レジスタ41と、第1のキャリー許可後上位設定レジスタ42と、第2のキャリー許可後上位設定レジスタ43と、補正位置設定レジスタ44と、キャプチャレジスタ45と、基準設定レジスタ46と、第1のタイミング設定レジスタ47と、第2のタイミング設定レジスタ48とが設けられている。
尚、分周カウンタ36は、上位カウンタ11aを分周するカウンタであって、図2に示されているように、上位カウンタ11aの値が所定数(本実施形態では3)増加する毎に値が1つ増加すると共に、上位カウンタ11aの値が0になると、その値も0になるカウンタである。また、補正値設定レジスタ37bは、クランクカウンタ11の値をハードウェアで正しい値に補正するために用いられるものであるが、この補正値設定レジスタ37bや他のレジスタ39〜48の詳しい役割については後で述べる。
次に、クランク信号の欠歯部Kでクランクカウンタ11(上位カウンタ11a及び下位カウンタ11b)をカウントアップさせる動作について説明する。
まず、マイコン3では、クランク信号のパルス間隔のうちの欠歯部Kを特定し、その欠歯部Kであると特定しているパルス間隔の期間だけ、図2及び図7に示すように、キャリー許可フラグをオンするようになっている。
そして、図7に示すように、キャリー許可フラグがオンされているパルス間隔の期間(「Tn-1」の期間)では、下位カウンタ11bのラップラウンドが欠歯数Mと同じ回数だけ許可されて、その下位カウンタ11bの値は使用可能範囲の最大値の次に0へ戻ると共に、その0へ戻った際に発生する下位カウンタ11bからのキャリー(桁上げ)によって、上位カウンタ11aがカウントアップされるようになっている。尚、欠歯数Mとは、欠歯部Kで抜かれているパルス数であり、本実施形態では2である。
具体的には、キャリー許可フラグのオン中において、下位カウンタ11bは、キャリー許可フラグがオンされる直前のクランク信号のパルス間隔(欠歯部K直前のパルス間隔であり、図7における「Tn-2」)から生成された逓倍クロック(つまり、周期が「Tn-2」/逓倍数であるクロック)でカウントアップされる。そして、下位カウンタ11bは、欠歯数Mだけラップラウンド(オーバーフロー)可能であると共に、上位カウンタ11aは、下位カウンタ11bがラップラウンドして該下位カウンタ11bからキャリーが発生する毎にカウントアップされる。よって、上位カウンタ11aは、キャリー許可フラグがオンされているパルス間隔の期間では、下位カウンタ11bからのキャリーにより最大で欠歯数Mだけカウントアップされることとなり、その結果、上位カウンタ11aの値は、欠歯部Kにおいて、最大で“欠歯数M+1”だけ進むこととなる。
更に、下位カウンタ11bは、図8に示すように、キャリー許可フラグがオンされているパルス間隔の期間において、欠歯数Mだけラップラウンドし、その後、カウント値が再び使用可能範囲の最大値に達したならば、その最大値でカウント値が停止するようになっている。
このため、図8に示すように、欠歯部Kの期間中にエンジンが減速したとしても、クランクカウンタ11の値は、その欠歯部Kの終了タイミング(=欠歯部Kの次のパルスの開始タイミング)でとるべき値を超えてしまうことなく、その値で保持されることとなる。
また、図7に示すように、欠歯判定部17から欠歯検出信号が出力された直後のクランク信号のパルス間隔期間(即ち、欠歯部Kが発生した直後であり、図7における「Tn」の期間)では、逓倍クロック生成部35は、欠歯検出信号が出力された際にパルス間隔計測部33で計測されたパルス間隔(即ち、欠歯部Kのパルス間隔)Tkを用いて、「Tk/(欠歯数M+1)/逓倍数」の周期の逓倍クロックを生成するようになっている。このため、図7の例において、欠歯部K直後のパルス期間Tnでは、下位カウンタ11bは、「(Tn-1)/3/逓倍数」の時間毎にカウントアップされることとなる。そして、この構成により、クランク信号に欠歯部Kが発生した直後においても、最新のクランク信号に基づく逓倍クロックによって下位カウンタ11bをカウントアップさせることができる。
一方、キャリー許可フラグのオン中にエンジンが加速した場合には、上位カウンタ11aが下位カウンタ11bからのキャリーによって欠歯数Mだけカウントアップされる前に、クランク信号の立ち上がりエッジが発生してキャリー許可フラグがオフされてしまい、上位カウンタ11aの値が正しい値よりも小さくなってしまう可能性があるため、本実施形態のマイコン3には、以下の補正機能が設けられている。
即ち、CPU23のソフト処理によってキャリー許可後上位設定レジスタ42又は43に、欠歯部Kの終了タイミングで上位カウンタ11aがとるべき値(そのタイミングで遷移すべき値)をセットしておくと、カウンタ処理部15は、キャリー許可フラグがオンで且つクランク信号に立ち上がりエッジが発生した時に、上位カウンタ11aの値を、そのキャリー許可後上位設定レジスタ42又は43にセットされている正しい値に書き換えるようになっている。
また、カウンタ処理部15は、上位カウンタ11aの値がキャリー許可開始位置レジスタ41の値と一致すると、キャリー許可フラグをハード的にオンさせるようになっている。そして、欠歯部Kは上位カウンタ11aの値がある値の時に発生するため、CPU23がソフト処理により、欠歯部Kが発生する前に、その欠歯部Kの開始タイミングでキャリー許可フラグがオンされるように、キャリー許可開始位置レジスタ41に値をセットし、これにより、欠歯部Kの開始タイミングに相当するクランク信号の立ち上がりエッジにて、キャリー許可フラグがオンされるようにしている。
また更に、カウンタ処理部15は、基本的には、キャリー許可フラグのオン中にクランク信号の立ち上がりエッジが生じると、そのキャリー許可フラグをオンからオフにするが、本実施形態のマイコン3では、図2に示したように欠歯部Kが常に1つ単独で発生するシステム(以下、単一欠歯システムという)だけでなく、図10(A)に示すように、欠歯部Kが1つ単独で発生する場合と2つ連続して発生する場合とがあるシステム(以下、連単欠歯システムという)にも対応可能になっており、欠歯部Kが2回連続する場合には、キャリー許可フラグをオンしてからクランク信号の2回目の立ち上がりエッジで該キャリー許可フラグをオフさせるようになっている。尚、本実施形態において、連単欠歯システムとしては、図10(A)に示すように、360°CA毎の単一欠歯(1つ単独の欠歯部K)と360°CA毎の連続欠歯(2つ連続の欠歯部K)とが交互に発生するシステムを想定している。
そこで次に、本マイコン3において、キャリー許可フラグがどの様にしてオン/オフされるかと、キャリー許可後上位設定レジスタ42,43に関する上記補正機能がどの様にして実現されているかについて、図9〜図13に基づき具体的に説明する。尚、ここでは、本マイコン3の動作モードが、連単欠歯システムに適合するモードに設定されている場合について説明する。
まず、CPU23は、欠歯判定部17から欠歯検出信号が出力されると(詳しくは、欠歯検出信号がローからハイに立ち上がると)、図9の処理を実行する。
そして、CPU23が図9の処理を開始すると、まずS210にて、クランク信号に有効エッジとしての立ち上がりエッジが生じるまで待ち、クランク信号に立ち上がりエッジが生じたならば、次のS215にて、パルス間隔計測部33により今回計測されたクランク信号のパルス間隔計測値「Ti」を第1周期レジスタ39に格納する。
そして、続くS220にて、クランク信号に再び立ち上がりエッジが生じるまで待ち、クランク信号に立ち上がりエッジが生じたならば、次のS225にて、パルス間隔計測部33により今回計測されたクランク信号のパルス間隔計測値「Ti+1」を第2周期レジスタ40に格納する。
次にS230にて、第1周期レジスタ39と第2周期レジスタ40とに格納された2つのパルス間隔計測値「Ti」「Ti+1」を読み出して、『「Ti+1」≧「Ti」×C』の関係が成立しているか否かを判定する。尚、Cは定数であり、本実施形態では例えば0.8に設定されている。尚、本実施形態では、上記「Ti」が、請求項11記載のTaに該当し、上記「Ti+1」が、請求項11記載のTbに該当している。
ここで、上記『』内の関係が成立していれば、今回は欠歯部Kが連続して発生した(連続欠歯であった)と判断することができ、上記『』内の関係が成立していなければ、今回は欠歯部Kが1回だけ発生した(単一欠歯であった)と判断することができる。
そこで、S230にて、上記『』内の関係が成立していると判定した場合には、次に発生する欠歯部Kが単一欠歯であると判断して、S240に進み、次に発生する欠歯部Kが単一欠歯か連続欠歯かを示す連/単欠設定フラグに、次に発生するのが単一欠歯であることを示す0をセットする。
そして、続くS250にて、キャリー許可開始位置レジスタ41に、次の欠歯部Kの開始タイミングでの上位カウンタ11aの値をセットし、更に続くS260にて、第1のキャリー許可後上位設定レジスタ42に、次の欠歯部Kの終了タイミングで上位カウンタ11aがとるべき値をセットして、その後、当該図9の処理を終了する。
尚、欠歯部Kの各発生タイミングとその各タイミングでの上位カウンタ11aの値との対応関係は予め決まっているため、S250では、現在の上位カウンタ11aの値から、次の欠歯部Kの開始タイミングで上位カウンタ11aがとるはずの値を求め、その値をキャリー許可開始位置レジスタ41にセットする。また、S260では、S250でキャリー許可開始位置レジスタ41にセットした値よりも「欠歯数M+1」だけカウントが進んだ値を、第1のキャリー許可後上位設定レジスタ42にセットすることとなる。
一方、S230で上記『』内の関係が成立していないと判定した場合には、次に発生する欠歯部Kが連続欠歯であると判断して、S270に移行する。
そして、S270にて、連/単欠設定フラグに、次に発生するのが連続欠歯であることを示す1をセットする。
次に、S280にて、キャリー許可開始位置レジスタ41に、次の欠歯部Kの開始タイミング(詳しくは、次に発生する連続欠歯の最初の欠歯部Kの開始タイミング)での上位カウンタ11aの値をセットする。更に続くS290にて、第2のキャリー許可後上位設定レジスタ43に、次に発生する連続欠歯の最初の欠歯部Kの終了タイミングで上位カウンタ11aがとるべき値をセットし、また、第1のキャリー許可後上位設定レジスタ42に、次に発生する連続欠歯の2つ目の欠歯部Kの終了タイミングで上位カウンタ11aがとるべき値をセットする。そして、その後、当該図9の処理を終了する。
尚、S280においても、S250と同様に、現在の上位カウンタ11aの値から、次の欠歯部Kの開始タイミングで上位カウンタ11aがとるはずの値を求め、その値をキャリー許可開始位置レジスタ41にセットする。また、S290では、S280でキャリー許可開始位置レジスタ41にセットした値よりも「欠歯数M+1」だけカウントが進んだ値を、第2のキャリー許可後上位設定レジスタ43にセットし、その第2のキャリー許可後上位設定レジスタ43にセットした値よりも「欠歯数M+1」だけカウントが進んだ値を、第1のキャリー許可後上位設定レジスタ42にセットすることとなる。
よって、例えば図10(B)の時刻taで欠歯検出信号が立ち上がったとすると、次にクランク信号が立ち上がったタイミングで、S215の処理により、第1周期レジスタ39に、欠歯判定部17によって欠歯部Kであると判定されたクランクパルスの計測値「Ti」が格納され、更にクランク信号の次の立ち上がりタイミングで、S225の処理により、第2周期レジスタ40に、欠歯判定部17によって欠歯部Kであると判定されたクランクパルスの次のクランクパルスの計測値「Ti+1」が格納されることとなる。
そして、図10(B)の例では、今回が連続欠歯であった場合を表しているため、この場合には、S230の処理で上記『』内の関係が成立していると肯定判定されることとなり、その結果、S240の処理により、図10(A)にて連続欠歯が発生した直後に示されているように、連/単欠設定フラグに0がセットされる。そして更に、この場合には、S250の処理により、キャリー許可開始位置レジスタ41に、次の欠歯部Kの開始タイミングでの上位カウンタ11aの値がセットされ、また、S260の処理により、第1のキャリー許可後上位設定レジスタ42に、次の欠歯部Kの終了タイミングで上位カウンタ11aがとるべき値がセットされることとなる。
また、今回が単一欠歯であった場合には、「Ti+1」が「Ti」の1/3程度になり、その「Ti」よりも格段に小さくなるため、S230の処理で上記『』内の関係が成立していないと否定判定されることとなる。よって、この場合には、S270の処理により、図10(A)にて単一欠歯が発生した直後に示されているように、連/単欠設定フラグに1がセットされる。そして更に、この場合には、S280の処理により、キャリー許可開始位置レジスタ41に、次に発生する連続欠歯の最初の欠歯部Kの開始タイミングでの上位カウンタ11aの値がセットされ、また、S290の処理により、第2のキャリー許可後上位設定レジスタ43に、次に発生する連続欠歯の最初の欠歯部Kの終了タイミングで上位カウンタ11aがとるべき値がセットされると共に、第1のキャリー許可後上位設定レジスタ42に、次に発生する連続欠歯の2つ目の欠歯部Kの終了タイミングで上位カウンタ11aがとるべき値がセットされることとなる。
一方、カウンタ処理部15は、上位カウンタ11aの値がキャリー許可開始位置レジスタ41の値と一致すると、図11(A)に示す動作を行う。
即ち、まず、キャリー許可フラグをオンする(S310)。そして、連/単欠設定フラグが0であれば(S320:YES)、連/単欠カウンタに1をセットし(S330)、逆に、連/単欠設定フラグが1であれば(S320:NO)、連/単欠カウンタに2をセットする(S340)。尚、図3では図示を省略しているが、この連/単欠カウンタは、カウンタ処理部15に設けられているダウンカウンタである。
また更に、カウンタ処理部15は、図11(B)に示す動作を行っている。
即ち、キャリー許可フラグのオン中に(S410:YES)、クランク信号に立ち上がりエッジが生じると(S420:YES)、その時に連/単欠カウンタの値が2であれば(S430:カウンタ=2)、上位カウンタ11aの値を、第2のキャリー許可後上位設定レジスタ43にセットされている値に書き換える(S440)と共に、連/単欠カウンタを1つカウントダウンさせる(S450)。
また、キャリー許可フラグのオン中に(S410:YES)、クランク信号に立ち上がりエッジが生じた時に(S420:YES)、連/単欠カウンタの値が1であれば(S430:カウンタ=1)、上位カウンタ11aの値を、第1のキャリー許可後上位設定レジスタ42にセットされている値に書き換える(S460)と共に、連/単欠カウンタを1つカウントダウンさせ(S470)、更に、キャリー許可フラグをオフさせる(S480)。
一方、キャリー許可フラグがオンで(S410:YES)、クランク信号に立ち上がりエッジが生じていないときには(S420:NO)、図7及び図8を用いて説明したように、上位カウンタ11aを下位カウンタ11bからのキャリーによってカウントアップさせる動作を行う(S425)。
そして、このようなカウンタ処理部15の図11の動作と、CPU23による図9の処理とにより、単一欠歯が発生する際には、図12に示すように、クランク信号の立ち上がりに伴い上位カウンタ11aがカウントアップされて、その上位カウンタ11aの値がキャリー許可開始位置レジスタ41の値と一致すると(1)、S310の動作により、キャリー許可フラグがオンされる(2)。また、この場合には、連/単欠設定フラグが事前に図9のS240で0にセットされているため、S330の動作により、連/単欠カウンタに1がセットされる(3)。尚、図12は、前回欠歯部Kが発生した際に、図9のS250によって、キャリー許可開始位置レジスタ41に69がセットされ、図9のS260によって、第1のキャリー許可後上位設定レジスタ42に0(つまり、69よりも3つカウントが進んだ値)がセットされていた場合を表している。
そして、その後、キャリー許可フラグのオン中にクランク信号が立ち上がると、この時点で連/単欠カウンタの値は1であるため、S460の動作により、上位カウンタ11aの値が第1のキャリー許可後上位設定レジスタ42にセットされている正しい値(この例では0)に書き換えられる(4)。そして更に、S470の動作により、連/単欠カウンタの値が1から0にダウンされる(5)と共に、S480の動作により、キャリー許可フラグがオフされることとなる(6)。
また、連続欠歯が発生する際にも、図13に示すように、クランク信号の立ち上がりに伴い上位カウンタ11aがカウントアップされて、その上位カウンタ11aの値がキャリー許可開始位置レジスタ41の値と一致すると(1)、S310の動作により、キャリー許可フラグがオンされる(2)。尚、図13は、前回欠歯部Kが発生した際に、図9のS280によって、キャリー許可開始位置レジスタ41に66がセットされ、図9のS290によって、第2のキャリー許可後上位設定レジスタ43に69(つまり、66よりも3つカウントが進んだ値)がセットされると共に、第1のキャリー許可後上位設定レジスタ42に0(つまり、69よりも3つカウントが進んだ値)がセットされていた場合を表している。
そして、この場合には、連/単欠設定フラグが事前に図9のS270で1にセットされているため、S340の動作により、連/単欠カウンタには2がセットされることとなる(3)。
このため、その後、キャリー許可フラグのオン中にクランク信号が最初に立ち上がると、この時点で連/単欠カウンタの値は2であるため、S440の動作により、上位カウンタ11aの値が第2のキャリー許可後上位設定レジスタ43にセットされている正しい値(この例では69)に書き換えられる(4)。そして更に、S450の動作により、連/単欠カウンタの値が2から1にダウンされることとなる(5)。
また更に、その後、キャリー許可フラグのオン中にクランク信号が2回目に立ち上がると、この時点で連/単欠カウンタの値は1であるため、S460の動作により、上位カウンタ11aの値が第1のキャリー許可後上位設定レジスタ42にセットされている正しい値(この例では0)に書き換えられる(6)。そして更に、S470の動作により、連/単欠カウンタの値が1から0にダウンされる(7)と共に、S480の動作により、キャリー許可フラグがオフされることとなる(8)。
そして、本マイコン3では、以上のようなカウンタ処理部15の動作(図11)とCPU23の処理(図9)とにより、キャリー許可フラグを欠歯部Kの期間中オンさせることと、該キャリー許可フラグがオンで且つクランク信号に立ち上がりエッジが発生したタイミング(即ち、欠歯部Kであると特定しているクランクパルスの終了タイミング)で、上位カウンタ11aの値を正しい値に書き換える補正とを行うようになっている。
また、マイコン3の動作モードが、単一欠歯システムに適合するモードに設定されている場合には、CPU23が、図9の処理においてS240〜S260の処理だけを実施する。よって、この場合には、図13に例示した動作は行われず、各欠歯部K毎に、図12に例示したような動作が毎回行われることとなる。
尚、本実施形態では、CPU23による図9のS210〜S250,S270,及びS280の処理と、カウンタ処理部15の図11(A)の動作と、カウンタ処理部15の図11(B)の動作のうちでS410,S420,S430,S450,S470,及びS480の動作とが、欠歯部特定手段に相当している。
一方、ここまでは、逓倍クロック生成部35がクランク信号の1つのパルス間隔を使って逓倍クロックを生成することを示したが、2以上のN個のクランクパルスの時間(つまり、クランク信号のN個の周期)を平均して1パルス間隔とし、その平均した時間から逓倍クロックを生成するようにしても良い。
例えば図14における(1)や(2)の部分に示すように、逓倍クロック生成部35が「3パルス分の時間/3」の時間を求め、その時間を逓倍数分の1にした周期(=3パルス分の時間/3/逓倍数)の逓倍クロックを生成するように構成すれば、何らかの原因で1つのクランクパルスだけが異常に短くなったり長くなったりしても、その影響を抑制することができる。
また更に、この場合、図15に示すように、常に最新の3パルス分の時間を平均して1パルス間隔とし、その平均した時間から逓倍クロックを生成するように構成すれば、常に最新のクランク信号の周期に基づいて逓倍クロックを生成することができる。
尚、図14及び図15の何れの例においても、欠歯部Kが発生した直後では、図7を参照して既述したように、欠歯部Kのパルス間隔(図14及び図15ではTn-1)を用いて、「Tn-1/3/逓倍数」の周期の逓倍クロックを生成するようにしている。つまり、欠歯部Kが発生した直後では、欠歯部Kのパルス間隔をそのまま3分の1し、その時間から逓倍クロックを生成している。また、このことから、上記Nは「欠歯数M+1」に設定することが好ましい。欠歯部K直後とそうでない場合とで、逓倍クロックを生成する際の演算を同様のものにすることができるからである。
次に、クランクカウンタ11を使用した本マイコン3における機能について、図16〜図21を用い説明する。
まず、信号処理部13に備えられた信号出力部19の第1の機能について説明する。
図16(A)に示すように、信号出力部19は、信号OUT1の出力開始タイミングを示す値がセットされるオンタイミング設定レジスタ51と、信号OUT1の出力停止タイミングを示す値がセットされるオフタイミング設定レジスタ52と、信号OUT1の出力を強制的に停止するタイミングを示す値がセットされる出力ガードタイミング設定レジスタ53と、一定周波数の内部クロックCKでアップカウントする出力ガード用アップカウンタ54と、3つの比較部55,56,57と、比較部56,57の各出力を入力としたオア回路58と、信号OUT1を出力する出力部59とを備えている。
尚、本実施形態では、信号OUT1が、請求項15の制御信号に相当している。また、信号OUT1は、マイコン3の内部のみで使用される信号であっても良いし、I/Oポート31を介してマイコン3の外へ出力されるものであっても良い。
そして、比較部55は、オンタイミング設定レジスタ51の値とクランクカウンタ11のカウント値とを比較して、カウント値が設定レジスタ51の値以上になるとアクティブレベル(本実施形態ではハイレベル)の信号を出力する。
また、比較部56は、オフタイミング設定レジスタ52の値とクランクカウンタ11のカウント値とを比較して、カウント値が設定レジスタ52の値以上になるとハイレベルの信号を出力する。
一方、出力ガード用アップカウンタ54は、オンタイミングがアクティブになった時点でカウント値が0からカウントUPするカウンタであり、内部クロックCKの周期毎に1ずつカウントアップしていくこととなる。
また、比較部57は、出力ガードタイミング設定レジスタ53の値と出力ガード用アップカウンタ54の値とを比較して、両値が一致すると、ハイレベルの信号を出力する。
そして、出力部59は、セット端子(S)にハイレベルの信号が入力されると、信号OUT1の出力を開始し(つまり、信号OUT1の出力レベルをハイにし)、リセット端子(R)にハイレベルの信号が入力されると、信号OUT1の出力を停止する(つまり、信号OUT1の出力レベルをローにする)。そして更に、出力部59のセット端子には、比較部55の出力が入力され、出力部59のリセット端子には、オア回路58の出力(即ち、比較部56の出力と比較部57の出力との論理和信号)が入力されるようになっている。
以上の構成により、信号出力部19では、クランクカウンタ11のカウント値がオンタイミング設定レジスタ51の値以上になると、比較部55から出力部59のセット端子にハイレベルの信号が入力されるため、信号OUT1の出力を開始し、クランクカウンタ11のカウント値がオフタイミング設定レジスタ52の値以上になると、比較部56からオア回路58を介して出力部59のリセット端子にハイレベルの信号が入力されるため、信号OUT1の出力を停止するが、特に、出力ガード用アップカウンタ54のカウント値が出力ガードタイミング設定レジスタ53の値と一致すると、クランクカウンタ11のカウント値がオフタイミング設定レジスタ52の値以上にならなくても、比較部57からオア回路58を介して出力部59のリセット端子にハイレベルの信号が入力されるため、信号OUT1の出力を強制的に停止することとなる。
そして、このような信号出力部19によれば、オンタイミング設定レジスタ51とオフタイミング設定レジスタ52とに、CPU23によるソフト処理で任意の値をセットすれば、その各値に対応するクランク角の範囲で信号OUT1を出力させることができる。
そして更に、図16(B)に示すように、クランクカウンタ11のカウント値がオンタイミング設定レジスタ51の値以上になって信号OUT1の出力が開始されてから、クランクカウンタ11のカウント値がオフタイミング設定レジスタ52の値以上になる前に、エンジン停止などでクランク信号の変化が停止してしまっても、出力ガード用アップカウンタ54のカウント値が出力ガードタイミング設定レジスタ53の値と一致した時点で、信号OUT1の出力を強制的に停止させることができる。つまり、信号OUT1が出力されたままになってしまうことを防ぐことができる。
尚、出力ガードタイミング設定レジスタ53には、信号OUT1の出力を開始してから該信号OUT1の出力を強制的に停止させるまでのガード時間Tim1に相当する値(詳しくは、Tim1を内部クロックCKの周期で割った値)を、CPU23によるソフト処理でセットしておけば良い。また、図16(B)においては、内部に“1”を付した逆三角印(▽)のタイミングが、信号OUT1の出力開始タイミングであり、内部に“2”を付した逆三角印のタイミングが、クランクカウンタ11のカウント値とオフタイミング設定レジスタ52の値との比較により信号OUT1の出力が停止されるはずであったタイミングであり、内部に“3”を付した逆三角印のタイミングが、出力ガード用アップカウンタ54のカウント値と出力ガードタイミング設定レジスタ53の値とが一致して信号OUT1の出力が強制的に停止されたタイミングである。
しかも、この信号出力部19によれば、アップカウントする出力ガード用アップカウンタ54のカウント値と出力ガードタイミング設定レジスタ53の値とが一致すると信号OUT1の出力を強制停止する構成であるため、信号OUT1の出力が開始されてからでもガード時間Tim1を再設定すること(設定し直すこと)が可能である。
つまり、もしガード時間Tim1をダウンカウンタで計時する場合には、信号OUT1の出力開始時にてダウンカウンタにガード時間Tim1に相当する値をセットして該ダウンカウンタを起動し、そのダウンカウンタのカウント値が0になったら信号OUT1の出力を強制停止する、といった構成を採ることとなるが、その場合には、ダウンカウンタを一度起動した後、該ダウンカウンタに他のガード時間に相当する値をセットし直すと、実際のガード時間が再度セットしたものよりも長い時間になってしまうため、ガード時間の再設定はできないが、図16の構成ならば、そのような不具合はない。
次に、信号出力部19の第2の機能について説明する。
信号出力部19は、図16(A)の構成に加えて、更に図17(A)に示す如く、信号OUT2の出力開始タイミングを示す値がセットされる第1設定レジスタ61と、信号OUT2の出力停止タイミングを示す値がセットされる第2設定レジスタ62と、一定周波数の内部クロックCKでアップカウントする出力停止用アップカウンタ63と、2つの比較部64,65と、信号OUT2を出力する出力部66とを備えている。
尚、本実施形態では、信号OUT2が、請求項16の指令信号に相当している。また、信号OUT2は、マイコン3の内部のみで使用される信号であっても良いし、I/Oポート31を介してマイコン3の外へ出力されるものであっても良い。
そして、比較部64は、第1設定レジスタ61の値とクランクカウンタ11のカウント値とを比較して、カウント値が設定レジスタ61の値以上になるとハイレベルの信号を出力する。
一方、出力停止用アップカウンタ63は、オンタイミングがアクティブになった時点でカウント値が0からカウントUPするカウンタであり、内部クロックCKの周期毎に1ずつカウントアップしていくこととなる。
また、比較部65は、第2設定レジスタ62の値と出力停止用アップカウンタ63の値とを比較して、両値が一致すると、ハイレベルの信号を出力する。
そして、出力部66は、セット端子(S)にハイレベルの信号が入力されると、信号OUT2の出力を開始し(つまり、信号OUT1の出力レベルをハイにし)、リセット端子(R)にハイレベルの信号が入力されると、信号OUT2の出力を停止する(つまり、信号OUT1の出力レベルをローにする)。そして更に、出力部66のセット端子には、比較部64の出力が入力され、出力部66のリセット端子には、比較部65の出力が入力されるようになっている。
以上の構成により、信号出力部19では、クランクカウンタ11のカウント値が第1設定レジスタ61の値以上になると、比較部64から出力部66のセット端子にハイレベルの信号が入力されるため、図17(B)に示すように、信号OUT2の出力を開始する。そして、その時点から、第2設定レジスタ62にセットされた値に対応した時間(詳しくは、第2設定レジスタ62にセットされた値に内部クロックCKの周期を乗じた時間)Tim2が経過すると、出力停止用アップカウンタ63のカウント値が第2設定レジスタ62の値と一致して、比較部65から出力部66のリセット端子にハイレベルの信号が入力されるため、信号OUT2の出力を停止することとなる。尚、図17(B)においては、内部に“1”を付した逆三角印(▽)のタイミングが、信号OUT2の出力開始タイミングであり、内部に“2”を付した逆三角印のタイミングが、信号OUT2の出力停止タイミングである。
そして、このような信号出力部19によれば、第1設定レジスタ61に、CPU23によるソフト処理で任意の値をセットすれば、その値に対応するクランク角のタイミングで信号OUT2の出力を開始させることができる。また、ソフト処理で第2設定レジスタ62にセットする値により、信号OUT2の出力を開始してから該信号OUT2の出力を停止するまでの時間Tim2を任意に変えることができる。
そして更に、図17(A)の構成においても、アップカウントする出力停止用アップカウンタ63のカウント値と第2設定レジスタ62の値とが一致すると信号OUT2の出力を停止するものであるため、信号OUT2の出力が開始されてからでも出力停止時間TiM2を再設定すること(設定し直すこと)が可能である。
次に、カウンタ処理部15がクランクカウンタ11を使用して、基準位置信号TDCと表裏信号G2(請求項18の出力信号に相当)とを出力する機能について、図18〜図20に基づき説明する。
尚、基準位置信号TDCは、クランク角が特定の基準角度であることをCPU23等に示すための信号であり、本実施形態では、図2に示すように、360°CA毎に且つ30°CA分の期間だけローレベルとなる。また、表裏信号G2は、図2に示すように、例えば360°CA毎に反対のレベルになる気筒判別用の信号である。そして、CPU23は、この表裏信号G2と基準位置信号TDCとの組み合わせによって(例えば、基準位置信号TDCがローレベルになったときの表裏信号G2のレベルによって)、エンジンのどの気筒がどの行程になっているかを判別するようになっている。また、このような気筒判別の技術は周知であり、例えば特開2001−90600号公報等に記載されている。
まず図18に示すように、 カウンタ処理部15は、基準位置信号TDCを出力するために、図3に示した分周カウンタ36及び基準設定レジスタ46に加えて、更に基準位置信号出力部71を備えている。
そして、基準設定レジスタ46には、基準位置信号TDCの出力タイミングを示す値がセットされるようになっている。
そして更に、基準位置信号出力部71は、分周カウンタ36の値(カウント値)と基準設定レジスタ46の値とを比較して、図20に例示するように、その両値が一致している間は、基準位置信号TDCをローレベルで出力し、逆に、分周カウンタ36のカウント値と基準設定レジスタ46の値とが一致していない場合には、基準位置信号TDCをハイレベルで出力する。尚、図20は、基準設定レジスタ46に「1」がセットされた場合の動作を表している。
このような構成によれば、基準設定レジスタ46にセットしておく値により、基準位置信号TDCがローレベルとなるクランク角の期間を任意に設定することができる。よって、本マイコン3を様々なシステムに適用することができるようになる。
尚、基準設定レジスタ46には、例えばCPU23が動作開始直後に実行する初期化処理によって値をセットするように構成すれば良い。また、図18の基準位置信号出力部71には、分周カウンタ36のカウント値に代えて、上位カウンタ11aのカウント値を入力するようにしても良い。そして、このように変形すれば、上位カウンタ11aの値と基準設定レジスタ46の値とが一致している間、基準位置信号TDCがローレベルとなり、逆に、上位カウンタ11aの値と基準設定レジスタ46の値とが一致していない場合には、基準位置信号TDCがハイレベルとなる。また更に、基準位置信号出力部71が出力する基準位置信号TDCのレベルは、前述したものと逆であっても良い。
次に図19に示すように、カウンタ処理部15は、表裏信号G2を出力するために、図3に示した分周カウンタ36,第1のタイミング設定レジスタ47,及び第2のタイミング設定レジスタ48に加えて、更に、2つの比較部72,73と、表裏信号G2を出力する出力部74とを備えている。
そして、第1のタイミング設定レジスタ47と第2のタイミング設定レジスタ48との各々には、表裏信号G2の反転タイミングを示す値がそれぞれセットされるようになっている。
また、比較部72は、第1のタイミング設定レジスタ47の値と分周カウンタ36の値とを比較して、両値が一致するとハイレベルの信号を出力し、比較部73は、第2のタイミング設定レジスタ48の値と分周カウンタ36の値とを比較して、両値が一致するとハイレベルの信号を出力する。
そして、出力部74は、セット端子(S)にハイレベルの信号が入力されると、表裏信号G2の出力レベルをローにし、リセット端子(R)にハイレベルの信号が入力されると、表裏信号G2の出力レベルをハイにする。そして更に、出力部74のセット端子には、比較部72の出力が入力され、出力部74のリセット端子には、比較部73の出力が入力されるようになっている。
このため、分周カウンタ36の値が第1のタイミング設定レジスタ47の値と一致すると、比較部72から出力部74のセット端子にハイレベルの信号が入力されて、出力部74から出力される表裏信号G2がローレベルになり、また、分周カウンタ36の値が第2のタイミング設定レジスタ48の値と一致すると、比較部73から出力部74のリセット端子にハイレベルの信号が入力されて、出力部74から出力される表裏信号G2がハイレベルになる。
よって、第1のタイミング設定レジスタ47と第2のタイミング設定レジスタ48とに異なる値をセットしておけば、図20に示すように、分周カウンタ36の値が第1のタイミング設定レジスタ47の値と一致したタイミングで、表裏信号G2の出力レベルがローレベルとなり、その後、分周カウンタ36の値が第2のタイミング設定レジスタ48の値と一致したタイミングで、表裏信号G2の出力レベルがハイレベルとなる。尚、図20は、第1のタイミング設定レジスタ47に「1」がセットされ、第2のタイミング設定レジスタ48に「3」がセットされた場合の動作を表している。
そして、この構成によれば、第1のタイミング設定レジスタ47と第2のタイミング設定レジスタ48とにセットしておく各値により、表裏信号G2の反転タイミングを任意のクランク角に設定することができる。よって、本マイコン3を様々なシステムに適用することができるようになる。
尚、第1及び第2のタイミング設定レジスタ47,48には、前述した基準設定レジスタ46と同様に、CPU23が動作開始直後に実行する初期化処理によって値をセットするように構成すれば良い。また、図19の両比較部72,73には、分周カウンタ36のカウント値に代えて、上位カウンタ11aのカウント値を入力するようにしても良い。そして、このように変形すれば、上位カウンタ11aの値が第1のタイミング設定レジスタ47の値と一致したタイミングで、表裏信号G2の出力レベルがローレベルとなり、上位カウンタ11aの値が第2のタイミング設定レジスタ48の値と一致したタイミングで、表裏信号G2の出力レベルがハイレベルとなる。また更に、出力部74が出力する表裏信号G2のレベルは、前述したものと逆であっても良い。
次に、図1では図示を省略しているが、信号処理部13には、クランクカウンタ11を使用してAD変換器29を起動するために、図21に示す如く、AD設定レジスタ76とAD起動部77とが備えられている。
そして、AD設定レジスタ76には、AD変換器29の起動タイミングを示す値がセットされる。
そして更に、AD起動部77は、クランクカウンタ11の値とAD設定レジスタ76の値とを比較して、クランクカウンタ11の値がAD設定レジスタ76の値に達すると(本実施形態では、クランクカウンタ11の値がAD設定レジスタ76の値以上になると)、AD変換器29を起動する。
このため、CPU23のソフト処理でAD設定レジスタ76にセットする値により、任意のクランク角のタイミングでAD変換器29を起動することができる。
次に、信号処理部13に備えられた第2カウンタ21について説明する。
図22に示すように、第2カウンタ21は、欠歯判定部17から欠歯検出信号が出力された直後のクランク信号の立ち上がりタイミング(即ち、欠歯部Kであると判定されたパルス間隔の終了タイミング)でカウント値が0にクリアされ、以降、クランク信号の立ち上がりエッジでカウントアップされる。
また更に、第2カウンタ21は、図23に示すように、ラップラウンドはせず、該第2カウンタ21のカウント値は、所定の最大値(MAX値)までカウントアップすると、その最大値で止まるようになっている。このため、図23における点線の楕円内に示すように、もし、欠歯判定部17による欠歯部Kの判定抜け(本当は欠歯部Kであるのに欠歯部Kと判定し損ねること)が起こっても、第2カウンタ21のカウント値は最大値で止まり、その次の欠歯部Kが欠歯判定部17により検出されると、その欠歯部Kの終了タイミングに相当するクランク信号の立ち上がりエッジで0にクリアされることとなる。
次に、第2カウンタ21を使用したマイコン3における機能について、図24〜図27を用い説明する。
まず、本マイコン3では、上記のような第2カウンタ21を備えているため、クランクカウンタ11の補正(尚、本マイコン3では、クランクカウンタ11のうちの上位カウンタ11aの補正)を、その第2カウンタ21のカウント値に基づき任意のタイミングで行うことができる。つまり、第2カウンタ21を備えていれば、その第2カウンタ21のカウント値から、クランクカウンタ11のとるべき正しい値を特定できるため、第2カウンタ21が所望の値になったタイミングでクランクカウンタ11の補正を行うことができる。
そこで、図24に示すように、カウンタ処理部15には、クランクカウンタ11の上位カウンタ11aをハード的に補正するために、図3に示した補正値設定レジスタ37b及び補正位置設定レジスタ44に加えて、更に書き換え部79が備えられている。
そして、書き換え部79は、第2カウンタ21のカウント値が補正位置設定レジスタ44の値と一致すると、クランクカウンタ11のうちの上位カウンタ11aのカウント値を補正値設定レジスタ37bにセットされている値に変更する(書き換える)。尚、第2カウンタ21と補正位置設定レジスタ44とのビット数は、例えば6ビットである。
この構成によれば、補正位置設定レジスタ44にセットする値によって、補正の実施タイミングを任意に設定することができる。そして、補正値設定レジスタ37bには、その補正実施タイミングでとるべき上位カウンタ11aの正しい値をセットすれば良い。また、各レジスタ37b,44には、CPU23によるソフト処理で所望の値をセットすれば良い。
また更に、もし、欠歯判定部17による欠歯部Kの判定抜けが起こったとしても、図23を参照して説明したように、第2カウンタ21のカウント値は最大値で止まって0には戻らないため、図24のハード構成による上位カウンタ11aの補正が誤ったクランク角の位置で実施されてしまうことを防止できる。
次に、図25(A)に示すように、カウンタ処理部15は、図3に示したキャプチャレジスタ45に加えて、更に、キャプチャ制御部81とキャプチャ有無フラグ82とを備えている。
そして、キャプチャ制御部81は、図25(B)に示すように、カム軸センサ9からのG信号の発生タイミング(本実施形態では、G信号の立ち上がりタイミング)で、第2カウンタ21のカウント値をキャプチャレジスタ45に転送して記憶させる(キャプチャする)と共に、キャプチャ有無フラグ82にキャプチャ有りを示す1をセットする。
また、CPU23によるソフト処理では、キャプチャ有無フラグ82を読み込んで、そのフラグ82が立っていれば(1であれば)、キャプチャレジスタ45の値を読み込み、その値(即ち、G信号が発生した時の第2カウンタ21のカウント値)から、G信号が所定の気筒判別区間内に発生したか否かを判定するようになっている。つまり、G信号は、図2に例示しているように、クランク信号の何れかの欠歯部Kから、あるクランク角の範囲内で発生するため、キャプチャレジスタ45に記憶されていた値が、そのクランク角の範囲内に相当する数値範囲内ならば、G信号が気筒判別区間内に発生したと判定する。
そして、この構成によれば、G信号が気筒判別区間内に発生したか否かを簡単且つ正確に判定することができる。キャプチャレジスタ45の値を、実際の気筒判別区間が過ぎてから読み取っても、その読み取った値から、G信号が気筒判別区間内に発生したか否かを正確に判定できるからである。尚、G信号が気筒判別区間内に発生しなかったと判定した場合には、何らかの異常が生じていると考えられることから、CPU23は、車両を安全に走行させるためのフェイルセーフ処理を行う。また、キャプチャ有無フラグ82は、CPU23がキャプチャレジスタ45から値を読み出した際に、キャプチャ無しを示す0にクリアすれば良い。
次に、図26に示すように、欠歯判定部17には、欠歯判定比として使用される値(即ち、欠歯判定比の候補値)がそれぞれ格納される第1判定比設定レジスタ85及び第2判定比設定レジスタ86が設けられている。また、欠歯判定部17には、第1判定比設定レジスタ85の値が欠歯判定比として使用される第1期間と、第2判定比設定レジスタ86の値が欠歯判定比として使用される第2期間とを設定するための開始位置指定レジスタ87及びオフセット指定レジスタ88が設けられている。更に、欠歯判定部17には、当該欠歯判定部17の動作パターン(欠歯検出パターン)を設定するための欠歯検出パターン選択レジスタ89が設けられている。
ここで、欠歯検出パターン選択レジスタ89は、図26及び図27に示すように、2ビットからなり、その上位ビット(図における左側のビット)は、指定期間としての第2期間を設けるか否かを決めるための指定区間有効/無効フラグになっている。そして、欠歯検出パターン選択レジスタ89の下位ビット(図における右側のビット)は、第2期間での欠歯検出を禁止するか否かを決めるための指定区間検出禁止フラグになっている。
また、開始位置指定レジスタ87には、上記第2期間の開始タイミング(つまり、第1期間から第2期間に変化するタイミング)となるべき第2カウンタ21の値がセットされ、オフセット指定レジスタ88には、第2期間の開始タイミングから該第2期間が終了するまで(つまり、第2期間が開始されてから第1期間に移るまで)のクランク信号のパルス数がセットされる。
そして、欠歯判定部17は、図27における(1)に示すように、欠歯検出パターン選択レジスタ89の上位ビットである指定区間有効/無効フラグが無効を示す0に設定されている場合には、常に第1判定比設定レジスタ85の値R1を欠歯判定比として、前述した欠歯検出動作を行うようになっている。つまり、第2期間が設けられず、常に第1期間となる。
また、欠歯判定部17は、図27における(2)に示すように、欠歯検出パターン選択レジスタ89の指定区間有効/無効フラグが有効を示す1に設定され、且つ、欠歯検出パターン選択レジスタ89の下位ビットである指定区間検出禁止フラグが非禁止を示す0に設定されている場合には、第2カウンタ21のカウント値が開始位置指定レジスタ87の値Raと一致した時点から、クランク信号の立ち上がりエッジがオフセット指定レジスタ88の値Rbだけ発生するまでの間、第2判定比設定レジスタ86の値R2を欠歯判定比として欠歯検出動作を行い、その後、再び第2カウンタ21のカウント値が開始位置指定レジスタ87の値Raと一致するまでは、第1判定比設定レジスタ85の値R1を欠歯判定比として欠歯検出動作を行うようになっている。つまり、第2カウンタ21のカウント値が開始位置指定レジスタ87の値Raと一致した時点からクランク信号の立ち上がりエッジがオフセット指定レジスタ88の値Rbだけ発生するまでの期間が第2期間となり、それ以外の期間が第1期間となる。
一方、欠歯判定部17は、図27における(3)に示すように、欠歯検出パターン選択レジスタ89の指定区間有効/無効フラグが有効を示す1に設定され、且つ、欠歯検出パターン選択レジスタ89の指定区間検出禁止フラグが禁止を示す1に設定されている場合には、第2カウンタ21のカウント値が開始位置指定レジスタ87の値Raと一致した時点から、クランク信号の立ち上がりエッジがオフセット指定レジスタ88の値Rbだけ発生するまでの間、欠歯検出動作を行わず、その後、再び第2カウンタ21のカウント値が開始位置指定レジスタ87の値Raと一致するまでは、第1判定比設定レジスタ85の値R1を欠歯判定比として欠歯検出動作を行うようになっている。つまり、図27における(2)の場合と比較すると、第2カウンタ21のカウント値が開始位置指定レジスタ87の値Raと一致した時点からクランク信号の立ち上がりエッジがオフセット指定レジスタ88の値Rbだけ発生するまでの第2期間において、当該(3)の場合では、欠歯検出動作が禁止されるようになっている。
そして、本実施形態のエンジンECU1では、第2判定比設定レジスタ86にセットする値R2を、第1判定比設定レジスタ85にセットする値R1よりも大きい値(即ち、欠歯判定部17が欠歯部Kと判定し難くなる値)にすると共に、欠歯検出パターン選択レジスタ89を、図27(2)に示す如く、指定区間有効/無効フラグ=1且つ指定区間検出禁止フラグ=0の状態にセットし、更に、開始位置指定レジスタ87とオフセット指定レジスタ88には、クランク信号の欠歯部Kを含む該欠歯部K付近の期間が第1期間となり、それ以外の期間が第2期間となるような値をそれぞれセットしている。例えば、図27に示すように、開始位置指定レジスタ87の値Raを“1”にし、オフセット指定レジスタ88の値Rbを“32”にしている。
このため、図27(2)に示すように、クランク信号の欠歯部K付近の期間(第1期間)での欠歯判定比R1よりも、それ以外の期間(第2期間)での欠歯判定比R2の方が大きい値になる。よって、エンジンの急な加減速が生じても、クランク信号の通常のパルス間隔を欠歯部Kであると誤判定(欠歯誤判定)してしまうことを効果的に防止することができる。尚、上記各レジスタ85〜89には、例えばCPU23が動作開始直後に実行する初期化処理によって値をセットすれば良い。
そして更に、本実施形態では、開始位置指定レジスタ87とオフセット指定レジスタ88とによって、第1期間と第2期間とを自由に設定することができる上に、第2期間の幅を、その第2期間の開始タイミングからのオフセットで指定する構成であるため、例えば、万一、第2期間中に(つまり、第2カウンタ21のカウント値が開始位置指定レジスタ87の値Raと一致した後に)欠歯誤判定が起こって第2カウンタ21のカウント値が0に戻ってしまったとしても、それには影響されずに第2期間を適切なタイミングで終了させることができる。また、仮に第2期間の終了タイミングの方も、そのタイミングに該当する第2カウンタ21の値で設定するように構成した場合、第2期間の開始と終了の設定値が逆転した場合の保護策を講じる必要が生じるが、本実施形態では、そのような保護策が不要なため、回路構成を簡素化することができる。
一方、欠歯検出パターン選択レジスタ89を、図27(3)に示す如く、指定区間有効/無効フラグ=1且つ指定区間検出禁止フラグ=1の状態にセットして、第2カウンタ21のカウント値が開始位置指定レジスタ87の値Raと一致した時点からクランク信号の立ち上がりエッジがオフセット指定レジスタ88の値Rbだけ発生するまでの期間は、欠歯判定部17の欠歯検出動作が禁止されるように設定することも可能であり、このように設定すれば、欠歯誤判定を一層確実に防止することができる。
また、欠歯判定比を切り換えないのであれば、図27(1)のように、欠歯検出パターン選択レジスタ89の指定区間有効/無効フラグを0に設定しておけば良い。
ところで、欠歯判定部17の欠歯検出パターンを図27(2)のパターンに設定した場合、開始位置指定レジスタ87とオフセット指定レジスタ88には、クランク信号の欠歯部Kを含む複数パルス間隔分の期間が第1期間となるような値をセットしておくことが望ましい。例えば、万一、ノイズによってクランク信号の立ち上がりエッジが幾つか潰されてしまった場合でも、本当の欠歯部Kが到来する前に第2期間を終了させることができ、その本当の欠歯部Kの期間において第1判定比設定レジスタ85の値(即ち、欠歯部と判定し易くなる値)R1を欠歯判定比として使用することができるからである。
また、本エンジンECU1が起動してから1回目の欠歯検出が行われるまでは、欠歯判定比の変更を実施せず、第1判定比設定レジスタ85の値R1のみを欠歯判定比として使用するように構成することが好ましい。1回目の欠歯検出が行われるまでは、どのタイミングで欠歯部Kが発生するのか予想できず、欠歯判定比の変更タイミングを適切なものにすることができないからである。
以上、本発明の一実施形態について説明したが、本発明はこうした実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々なる態様で実施し得ることは勿論である。
例えば、上記実施形態では、AD変換器29を、入力回路5を介して入力される外部からのアナログ信号をマイコン3内に取り込んで処理するためのものとしたが、AD変換器29は、エンジンECU1内で発生する電源電圧等のアナログ信号をマイコン3内に取り込むために用いても良い。
1…エンジンECU(エンジン制御装置)、3…マイコン、5…入力回路、6…出力回路、7…クランク軸センサ、9…カム軸センサ、11…クランクカウンタ、11a…上位カウンタ、11b…下位カウンタ、13…信号処理部、15…カウンタ処理部、17…欠歯判定部、19…信号出力部、21…第2カウンタ、23…CPU、25…ROM、27…RAM、29…AD変換器、31…I/Oポート、33…パルス間隔計測部、35…逓倍クロック生成部、36…分周カウンタ、37a,37b…補正値設定レジスタ、38…上限値設定レジスタ、39…第1周期レジスタ、40…第2周期レジスタ、41…キャリー許可開始位置レジスタ、42…第1のキャリー許可後上位設定レジスタ、43…第2のキャリー許可後上位設定レジスタ、44…補正位置設定レジスタ、45…キャプチャレジスタ、46…基準設定レジスタ、47…第1のタイミング設定レジスタ、48…第2のタイミング設定レジスタ、51…オンタイミング設定レジスタ、52…オフタイミング設定レジスタ、53…出力ガードタイミング設定レジスタ、54…出力ガード用アップカウンタ、55〜57,64,65,72,73…比較部、58…オア回路、59,66,74…出力部、61…第1設定レジスタ、62…第2設定レジスタ、63…出力停止用アップカウンタ、71…基準位置信号出力部、76…AD設定レジスタ、77…AD起動部、79…書き換え部、81…キャプチャ制御部、82…キャプチャ有無フラグ、85…第1判定比設定レジスタ、86…第2判定比設定レジスタ、87…開始位置指定レジスタ、88…オフセット指定レジスタ、89…欠歯検出パターン選択レジスタ