以下、本発明の一実施形態に係る車輪速度検出装置を図面を用いて説明すると、図1は同車輪速度検出装置の全体を概略的に示している。
この車輪速度検出装置は、左右前後輪とそれぞれ一体的に回転する4つのロータ10a〜10dを備えており、各輪の回転はセンサユニット20a〜20dによって検出されるようになっている。ロータ10a〜10dは、磁性材料で円盤状に構成され、外周面上に等間隔の複数の歯をそれぞれ有する。センサユニット20aは、磁気抵抗素子によって構成されて、ロータ10aの各歯に対向して配置された回転センサ21a,22aを有する。回転センサ21aと回転センサ22aは、ロータ10aの歯の山部と谷部とで2πとするとπ/2だけずれてそれぞれ配置され、同ロータ10aの回転に伴って、図2に示すようにπ/2だけ位相のずれた正弦波状信号A,Bを出力する。なお、これらの回転センサ21a,22aとしては、磁気抵抗素子を用いなくて、電磁ピックアップ、ホール素子などを利用することもできる。センサユニット20b〜20dも、センサユニット20aと同様に構成されているので、センサユニット20aのみの説明に留めてそれらの説明を省略する。
回転センサ21a,22aには波形整形回路23a,24aがそれぞれ接続されており、同波形整形回路23a,24aは、図2及び図3(A)(B)に示すように、正弦波状信号A,Bをデューティ比をほぼ1/2とする矩形波信号C,Dにそれぞれ変換する。これらの矩形波信号C,Dは、遅延回路25a,26aを介して論理合成回路27aに供給されるとともに、同論理合成回路27aに直接供給される。遅延回路25a,26aは、前記入力した矩形波信号C,Dを所定の微小時間(例えば、150μs)だけ遅延して、図3(A)(B)に示すような遅延信号dC,dDを論理合成回路27aに出力する。
論理合成回路27aは、アンド回路、インバータ回路、オア回路、イクスクルーシブオア回路などにより構成され、矩形波信号C,D及び遅延信号dC,dDを論理合成して、図3(A)(B)に示す論理合成信号E,Fを出力する。この場合、論理合成信号Eは、両矩形波信号C,Dの排他的論理和(イクスクルーシブオア)によって合成されたものである。また、論理合成信号Fは、矩形波信号C,D及び遅延信号dC,dDを用いた論理式Cvar・D・dDvar+C・Dvar・dD+C・D・dCvar+Cvar・Dvar・dCによって合成されたものである。ただし、Cvar,dCvar,Dvar,dDvarは、C,dC,D,dDを論理反転した信号である。
これらの論理合成信号E,Fは波形合成回路28aに出力される。波形合成回路28aは、基準電圧源回路、スイッチング回路などからなり、論理合成信号E,Fに基づいて、図3(A)(B)に示すような回転検出信号Vs1を合成出力する。この回転検出信号Vs1は、論理合成信号Fがハイレベルであるとき最優先で電圧値V2となり、論理合成信号Fがハイレベルでなくかつ論理合成信号Eがハイレベルあるとき電圧値V1となり、論理合成信号E,Fが共にローレベルであるとき電圧値V0となるものである。ただし、電圧値V0,V1,V2の関係は、0=V0<V1<V2である。
その結果、ロータ10aの正転時(車両を前進させるための車輪の正転に対応)には、回転検出信号Vs1は、図3(A)に示すように、電圧値V0,V1を交互に繰り返す矩形波信号からなるパルス列信号となる。一方、ロータ10aの逆転時(車両を後退させるための車輪の逆転に対応)には、回転検出信号Vs1は、図3(B)に示すように、前記矩形波信号の立上がり時及び立下り時に電圧値V2を有する幅狭のパルスをそれぞれ有するパルス列信号となる。なお、これらのパルス列信号のパルス幅及び周期は、ロータ10aの回転速度(車輪速度)に反比例する。センサユニット20b〜20dも、回転検出信号Vs1と同様であってロータ10b〜10dの回転を表す回転検出信号Vs2〜Vs4を出力する。
センサユニット20aからの回転検出信号Vs1は、比較器31a,32aの各正側入力(+)にそれぞれ供給される。比較器31a,32aの各負側入力(−)には、基準電圧源33a,34aからの各基準電圧Vref1,Vref2がそれぞれ供給されている。基準電圧Vref1,Vref2及び電圧値V0,V1,V2の関係は、V0<Vref1<V1<Vref2<V2である。したがって、ロータ10aが正転状態にあれば、図4(A)に示すように、比較器31aは回転検出信号Vs1と同じパルス列からなる第1回転検出信号Vs11を出力し、比較器32aはローレベルに保たれた第2回転検出信号Vs12を出力する。一方、ロータ10aが逆転状態にあれば、図4(B)に示すように、比較器31aは前記回転検出信号Vs1の立上がり時及び立下り時の幅狭のパルスを除くパルス列からなる第1回転検出信号Vs11を出力し、比較器32aは前記幅狭のパルス列のみからなる第2回転検出信号Vs12を出力する。これらの第1及び第2回転検出信号Vs11,Vs12は、マイクロコンピュータ40に供給される。
センサユニット20b、センサユニット20b及びセンサユニット20cには、比較器31b,32b、比較器31c,32c及び比較器31d,32dがそれぞれ接続されている。これらの比較器31b,32b、比較器31c,32c及び比較器31d,32dは、図4(A)(B)に示すとともに前記第1及び第2回転検出信号Vs11,Vs12と同様に、センサユニット20b,20c,20dからの各回転検出信号Vs2,Vs3,Vs4に基づいて、第1及び第2回転検出信号Vs21,Vs22、第1及び第2回転検出信号Vs31,Vs32、並びに第1及び第2回転検出信号Vs41,Vs42をそれぞれマイクロコンピュータ40に出力する。
また、これらの各第1及び第2回転検出信号Vs11,Vs12,Vs21,Vs22,Vs31,Vs32,Vs41,Vs42は、回転方向検出部50にも供給される。回転方向検出部50は、センサユニット20a〜20dにそれぞれ対応する4個の回転方向検出回路を備えている。各回転方向検出回路は、図5に示すように、R−S型フリップフロップ回路51〜54、ノア回路55〜59及びインバータ回路61,62からそれぞれなり、第1及び第2回転検出信号Vs11,Vs12(又は第1及び第2回転検出信号Vs21,Vs22、第1及び第2回転検出信号Vs31,Vs32、第1及び第2回転検出信号Vs41,Vs42)を入力して、ロータ10a〜10dの各回転方向を表す回転方向検出信号Dr1(又はDr2〜Dr4)をマイクロコンピュータ40に出力する。ただし、R−S型フリップフロップ回路51〜54のQN出力はQ出力の反転出力を示す。
そして、各回転方向検出回路においては、ロータ10a〜10dが正転状態にあって、図6(A)に示すような各第1及び第2回転検出信号Vs11,Vs12,Vs21,Vs22,Vs31,Vs32,Vs41,Vs42が入力された場合には、R−S型フリップフロップ回路51〜53の各出力I,J,Kは図6(A)に示すようにローレベルに保たれ、R−S型フリップフロップ回路54から出力される回転方向検出信号Dr1〜Dr4もそれぞれローレベルに保たれる。一方、ロータ10a〜10dが逆転状態にあって、図6(B)に示すような第1及び第2回転検出信号Vs11,Vs12,Vs21,Vs22,Vs31,Vs32,Vs41,Vs42が入力された場合には、R−S型フリップフロップ回路51〜53の各出力I,J,Kは図6(B)に示すようにパルス列信号となり、R−S型フリップフロップ回路54から出力される回転方向検出信号Dr1〜Dr4はそれぞれハイレベルに保たれる。ただし、図6(A)(B)中、点模様を付した部分は、回転方向検出信号Dr1〜Dr4の不定部分を示す。
マイクロコンピュータ40は、CPU,ROM,RAM、タイマなどにより構成され、図7〜図14のプログラムを実行して、各車輪速度を検出するとともに同車輪速度の異常を検出する。なお、図7のパルス検出プログラムは、タイマとの協働によって比較的短い周期(例えば、数10μs)で繰り返し実行される。また、図9〜図14のプログラムをサブルーチンとして含む図8の車輪速度計算プログラムは、タイマとの協働によって比較的長い周期(例えば、約6ms)で繰り返し実行される。
このマイクロコンピュータ40には、前述の第1及び第2回転検出信号Vs11,Vs12,Vs21,Vs22,Vs31,Vs32,Vs41,Vs42及び回転方向検出信号Dr1〜Dr4の他に、ABS信号、VSC信号、TRC信号及びBAT信号も供給されている。ABS信号は、図示しないアンチロックブレーキ制御装置から供給されるもので、車両がアンチロックブレーキ制御中であることを表す信号である。VSC信号は、図示しないビークルスタビリティコントロール装置から供給されるもので、車両がスタビリティ制御中であることを表す信号である。TRC信号は、図示しないトラクションコントロール装置から供給されるもので、車両がトラクション制御中であることを表す信号である。これらのABS信号、VSC信号及びTRC信号は、ハイレベルにより、車両の挙動、車輪のスリップ状態などに応じて各車輪ごとに制動力又は駆動力の付与及び解除を制御中であることを表し、ローレベルにより前記制御中でないことを表すものである。BAT信号は、バッテリ電圧の異常(すなわち低下)を表すものである。
次に、上記のように構成した実施形態の動作を図7〜図14のフローチャートに沿って説明する。図示しないイグニッションスイッチの投入により、マイクロコンピュータ40は、図7のパルス検出プログラムを比較的短い周期で繰り返し実行し始めるとともに、このプログラムの実行に並行して、図8の車輪速度計算プログラムを比較的長い周期で実行し始める。なお、これらのプログラムにおいては、各ロータ10a〜10d(左右前後輪)ごとに種々の処理が実行されるが、各ロータ10a〜10dの処理は共通であるので、以下の説明では、各ロータ10a〜10dに対応した各種変数にサフィックスj(j=1〜4)を付して、各ロータ10a〜10dに対して各種処理を共通に説明する。
まず、パルス検出プログラムについて説明すると、同プログラムは図7に詳細に示されているようにステップS10にてその実行が開始される。このパルス検出プログラムの開始後、後述する車輪速度Vxj(j=1〜4)の計算のために、ステップS12〜ステップS16の処理を実行する。ステップS12においては、前回計算された車輪速度Vxj(j=1〜4)が所定車輪速度Vr1(例えば、65km/h)未満であるか否かを判定する。前回計算された車輪速度Vxj(j=1〜4)が所定車輪速度Vr1未満であれば、ステップS12にて「YES」と判定し、ステップS14の処理を実行する。一方、前回計算された車輪速度Vxjが所定車輪速度Vr1以上であれば、ステップS12にて「NO」と判定して,ステップS16の処理を実行する。
ステップS14においては、各比較器31a〜31dから第1回転検出信号Vsj1(j=1〜4)を入力して、同入力した第1回転検出信号Vsj1の立上がり(ローレベルからハイレベルへの変化)及び立下がり(ハイレベルからローレベルへの変化)を検出する。そして、立下がり検出時にはタイマとの協働によってその時刻を一時的に記憶し、立上がり検出時には、前記と同様にタイマとの協働によってその時刻を一時的に記憶するとともに、直前の立下がり検出時の記憶時刻と今回の立上がり検出時の記憶時刻との中央値(第1回転検出信号Vsj1のローレベルの中央時刻)を計算して、同計算した中央値を今回中央時刻値Tj(n)として更新記憶していく。これにより、今回中央時刻値Tj(n)は、第1回転検出信号Vsj1の立上がりタイミングごとに、図15(A)にて一点鎖線で示す時刻に更新され、次の立上がりタイミングまで維持される。
また、第1回転検出信号Vsj1の立上がり検出時には、車輪速度計算プログラムの実行時(図15(A)(B)にて演算タイミングとして示すタイミング)に、後述する処理によって「0」にクリアされるパルス数PNjを「1」だけカウントアップする。したがって、このパルス数PNjは、前回の演算タイミングからの第1回転検出信号Vsj1のパルス数を示すことになる。
ステップS16においては、各比較器31a〜31dから第1回転検出信号Vsj1(j=1〜4)を入力して、同入力した第1回転検出信号Vsj1の立下がり(ハイレベルからローレベルへの変化)のみを検出する。そして、この立下がり検出時には、タイマとの協働によってその時刻を今回時刻値Tj(n)として更新記憶していく。これにより、今回時刻値Tj(n)は、第1回転検出信号Vsj1の立下がりタイミングごとに、同タイミング時刻(図15(B)にて一点鎖線で示す時刻)に更新され、次の立下がりタイミングまで維持される。また、この場合も、第1回転検出信号Vsj1の立下がり検出時には、車輪速度計算プログラムの実行時に、前記パルス数PNjを「1」だけカウントアップする。このようにステップS16の処理では、第1回転検出信号Vsj1の立下がりのみを検出するようにした理由は、車輪速度Vxjが高くなった場合に前記ステップS16の処理の頻度が高くなり過ぎないようにするためであり、また車輪速度Vxjが高くなった場合に前記ステップS14のような処理をしなくても同車輪速度Vxjの演算誤差がそれほど大きくならないためである。
前記ステップS14,S16の処理後、後述する第1異常検出ルーチンにて利用するための変数を設定するステップS20〜S26の処理、及び後述する第4異常検出ルーチンにて利用するための変数を設定するステップS28〜S44の処理後、ステップS46にてこのパルス検出プログラムを一旦終了する。これらのステップS20〜S44の処理に関しては後述するものとして、このパルス検出プログラムと並行して実行される車輪速度計算プログラムについて説明する。
この車輪速度計算プログラムは、前述のように、パルス検出プログラムに比べて長い周期(例えば、6ms)すなわち図15(A)(B)の演算タイミングに対応したタイミングごとに実行されるもので、その実行が図8のステップS50にて開始される。この車輪速度計算プログラムの実行開始後、ステップS52〜S56の処理により車輪速度Vxj(j=1〜4)が計算される。ステップS52においては、下記数1の演算の実行により、車輪速度Vxjの計算に利用される時間ΔTjを計算する。
ΔTj=Tj(n)−Tj(n−1) (ただし、j=1〜4) … 数1
前記数1において、Tj(n)は、この車輪速度計算プログラムの実行の直前に前記図7のパルス検出プログラムにて更新されたもので、前回計算された車輪速度Vxjが所定車輪速度Vr1未満であれば、ステップS14の処理によって設定された今回中央時刻である。また、前回計算された車輪速度Vxjが所定車輪速度Vr1以上であれば、ステップS16の処理により設定された立下がりタイミング時刻である。また、Tj(n−1)は、ステップS56の処理によって車輪速度Vxjの計算終了時にTj(n)に更新されるものであり、前回の演算タイミング直前の中央時刻又は立下がりタイミング時刻を表す。したがって、前回計算された車輪速度Vxjが所定車輪速度Vr1未満であれば、前記数1で計算された時間ΔTjは、図15(A)に示すように、前回の演算タイミング直前の中央時刻(Tj(n−1)=(t1+t2)/2)から今回の演算タイミング直前の中央時刻(Tj(n)=(t3+t4)/2)までの経過時間を表す。また、前回計算された車輪速度Vxjが所定車輪速度Vr1以上であれば、時間ΔTjは、図15(B)に示すように、前回の演算タイミング直前の立下がりタイミング(Tj(n−1))から今回の演算タイミング直前の立下がりタイミング(Tj(n))までの経過時間を表す。
前記ステップS52の処理後、ステップS54にて、前記計算した時間ΔTjを用いて下記数2の演算の実行により、車輪速度Vxjを計算する。
Vxj=K・PNj/ΔTj (ただし、j=1〜4) … 数2
この数2において、PNjは、前述のように、車輪速度Vxjの計算終了時にステップS56の処理によって「0」にクリアされるとともに、ステップS14,16の処理によってカウントアップされたものである。したがって、前回計算された車輪速度Vxjが所定車輪速度Vr1未満であれば、このパルス数PNjは、図15(A)に示すように、前回の演算タイミング直前の中央時刻Tj(n−1)から今回の演算タイミング直前の中央時刻Tj(n)までの第1回転検出信号Vsj1のパルス数を表す。また、前回計算された車輪速度Vxjが所定車輪速度Vr1以上であれば、このパルス数PNjは、図15(B)に示すように、前回の演算タイミング直前の立下がりタイミングTj(n−1)から今回の演算タイミング直前の立下がりタイミングTj(n)までの第1回転検出信号Vsj1のパルス数を表す。さらに、Kは、ロータ10a〜10dの歯数、車輪(タイヤ)の直径などによって決まる定数である。その結果、前記数2により、車輪速度Vxjが演算タイミング(車輪速度計算プログラムの実行)ごとに計算されて順次更新されていく。
前記ステップS52〜56の処理後、ステップS58にて、左右前後の4輪の各車輪速度Vx1,Vx2,Vx3,Vx4のうちの最大車輪速度Vmax=MAX(Vx1,Vx2,Vx3,Vx4)及び最小車輪速度Vmin=MIN(Vx1,Vx2,Vx3,Vx4)を計算する。次に、ステップS60にて、回転方向検出部50から回転方向検出信号Dr1〜Dr4を入力する。このステップS60の処理後、ステップS62〜S68にて、センサユニット20a〜20d、比較器31a〜31d,32a〜32d及び回転方向検出部50の異常をそれぞれ検出する第1〜第4異常検出ルーチンを実行する。
この第1異常検出ルーチンは、図16(C)に示すように、ロータ10a〜10dの逆転を表す幅狭のパルス信号のみが回転検出信号Vsjとしてセンサユニット20a〜20dから出力されているという異常を検出するものである。また、この第1異常検出ルーチンは、図16(A)(B)に示すように、回転検出信号Vsjが正常に戻れば第1異常状態からの復帰を検出するようにしている。このような第1異常検出ルーチンについて詳細に説明する前に、図7のパルス検出プログラムの実行により設定されて第1異常検出ルーチンにて利用される変数について説明しておく。
図7のパルス検出プログラムのステップS18においては、第1回転検出信号Vsj1(j=1〜4)をそれぞれ入力して、内蔵のタイマとの協働により、第1回転検出信号Vsj1のハイレベル時間HTjを各パルスごとに順次計測する。すなわち、第1回転検出信号Vsj1の立上がり及び立下がりを検出して、立上がりタイミングから立下がりタイミングまでの時間を順次計測する。
そして、ステップS20にて、前記計測した第1回転検出信号Vsj1のハイレベル時間HTjが所定時間値TM00以下であるかを判定する。この所定時間値TM00は、少なくともロータ10a〜10dの逆転を表すパルス信号の幅(例えば、150μs)よりも大きくて、車輪速度に換算して290km/h以上に相当する200μs程度に設定されており、第1回転検出信号Vsj1のハイレベル時間HTjとして通常の車両走行ではあり得ない値である。すなわち、図16(A)(B)に示すように回転検出信号Vsjが正常であれば発生され得ないはずのものである。したがって、ハイレベル時間HTjが所定時間値TM00以下であることは、図16(C)に示すように、ロータ10a〜10dの逆転を表す幅狭のパルス信号のみが回転検出信号Vsjとしてセンサユニット20a〜20dから出力されていることを意味する。以下、この幅狭のパルス信号からなる第1回転検出信号Vsj1をデューティ無効パルスという。
ハイレベル時間HTjが所定時間値TM00よりも大きければ、ステップS20にて「NO」と判定してステップS22に進む。ハイレベル時間HTjが所定時間値TM00以下であれば、ステップS20にて「YES」と判定して、ステップS24にて異常パルスフラグERPjを“1”に設定してステップS28に進む。なお、この異常パルスフラグERPjは、後述する第1異常検出ルーチンの実行終了時に“0”にクリアされる。したがって、この異常パルスフラグERPjは、前回の第1異常検出ルーチンの実行から今回の第1異常検出ルーチンの実行までに、デューティ無効パルスが一つでも存在するとき“1”に設定されていて、デューティ無効パルスが全く存在しないとき“0”に設定されているものである。
ステップS22においては、ハイレベル時間HTjが所定時間値TM01以上であるかを判定する。この所定時間値TM01は、前記所定時間値TM00よりも十分に大きく、例えば500μsに設定されている。したがって、ハイレベル時間HTjが所定時間値TM01以上であることは、図16(A)(B)に示すように、正常な回転検出信号Vsjがセンサユニット20a〜20dから出力されていることを意味する。以下、この500μs以上のハイレベル時間HTjを有するパルス幅の第1回転検出信号Vsj1をデューティ有効パルスという。
ハイレベル時間HTjが所定時間値TM01未満であれば、ステップS22にて「NO」と判定してステップS28に進む。ハイレベル時間HTjが所定時間値TM01以上であれば、ステップS22にて「YES」と判定して、ステップS26にて正常パルスフラグCRPjを“1”に設定し、ステップS28に進む。なお、この正常パルスフラグCRPjも、後述する第1異常検出ルーチンの実行終了時に“0”にクリアされる。したがって、この正常パルスフラグCRPjは、前回の第1異常検出ルーチンの実行から今回の第1異常検出ルーチンの実行までに、デューティ有効パルスが一つでも存在するとき“1”に設定されていて、デューティ有効パルスが全く存在しないとき“0”に設定されているものである。
次に、図8のステップS62の第1異常検出ルーチンについて説明する。この第1異常検出ルーチンは図9に詳細に示されており、その実行は図9のステップS100にて開始され、ステップS102にて、前記計算した車輪速度Vxjが所定車輪速度Vr1(例えば、65km/h)未満であるか否かを判定する。車輪速度Vxjが所定車輪速度Vr1(例えば、65km/h)未満であれば、ステップS102にて「YES」と判定し、ステップS104にて異常パルスフラグERPjが“1”であるか否かを判定する。異常パルスフラグERPjが“1”であれば、ステップS104にて「YES」と判定して、ステップS106にて第1エラーフラグER1jを“1”に設定する。この第1エラーフラグER1jは、“1”によりセンサユニット20a〜20dなどのうちで変数jに対応したセンサユニットなどの第1異常の検出状態を表すものである。したがって、車輪速度Vxjが所定車輪速度Vr1未満であり、かつ前回の第1異常検出ルーチンの実行から今回の第1異常検出ルーチンの実行までにデューティ無効パルスが存在すれば、センサユニット20a〜20dなどの第1異常が検出されることになる。
一方、前回の第1異常検出ルーチンの実行から今回の第1異常検出ルーチンの実行までにデューティ無効パルスが存在しなくて、異常パルスフラグERPjが“0”であれば、ステップS104にて「NO」と判定して、ステップS108に進む。これにより、この場合には、センサユニット20a〜20dなどの第1異常が検出されることはない。
さらに、車輪速度Vxjが所定車輪速度Vr1以上であれば、ステップS102にて「NO」と判定して、ステップS108に進む。したがって、この場合には、ステップS104の判定処理が行われず、第1異常の検出が行われない。これは、車輪速度Vxjが大きくなった場合に、デューティ無効パルスの誤検出による第1異常の誤検出を回避するためである。したがって、前記ステップS104の判定処理が第1異常の基本的な検出条件であり、前記ステップS102の判定処理は同第1異常の誤検出を回避するための補足的検出条件である。
前記ステップS102〜S106からなる第1異常の検出処理後、ステップS108にて第1エラーフラグER1jが“1”であるか否かを判定する。第1エラーフラグER1jが“0”であれば、ステップS108にて「NO」と判定し、ステップS124にて異常パルスフラグERPj及び正常パルスフラグCRPjを共に“0”にクリアして、ステップS126にてこの第1異常検出ルーチンの実行を終了する。また、第1エラーフラグER1jが“1”に設定されている場合には、ステップS108にて「YES」と判定し、ステップS110〜S122からなる異常復帰の検出処理を実行する。
この異常復帰の検出処理においては、第1異常復帰検出仮フラグER1Yjが“0”であることを条件に、ステップS110にて「YES」と判定し、ステップS112にて異常パルスフラグERPjが“1”であるかを判定するとともに、ステップS114にて正常パルスフラグCRPjが“1”であるかを判定する。前回の第1異常検出ルーチンの実行から今回の第1異常検出ルーチンの実行までの間にデューティ無効パルスが存在して異常パルスフラグERPjが“1”であり、又は同間にデューティ有効パルスが存在しなくて正常パルスフラグCRPjが“0”であれば、ステップS112,S114のいずれかにて「NO」と判定して、前述したステップS124のクリア処理を実行して、ステップS126にてこの第1異常検出ルーチンの実行を終了する。
一方、前回の第1異常検出ルーチンの実行から今回の第1異常検出ルーチンの実行までの間にデューティ無効パルスが存在しなくて異常パルスフラグERPjが“0”であり、かつ同間にデューティ有効パルスが存在して正常パルスフラグCRPjが“1”であれば、ステップS112,S114にて共に「YES」と判定して、ステップS116にて第1異常復帰検出仮フラグER1Yjを“1”に設定する。そして、前述したステップS124のクリア処理を実行して、ステップS126にてこの第1異常検出ルーチンの実行を終了する。
このようにして、第1異常復帰検出仮フラグER1Yjが“1”に設定されると、次のステップS110においては「NO」と判定され、ステップS118〜122の処理が実行される。この場合、前回の第1異常検出ルーチンの実行から今回の第1異常検出ルーチンの実行までの間、すなわち前記第1異常復帰検出仮フラグER1Yjを“1”に設定した次の判定区間にデューティ無効パルスが存在しなくて異常パルスフラグERPjが“0”であれば、ステップS118にて「YES」と判定して、ステップS120にて第1エラーフラグER1jを“0”に戻す。そして、ステップS122にて第1異常復帰検出仮フラグER1Yjを“0”に戻し、前述したステップS124のクリア処理を実行して、ステップS126にてこの第1異常検出ルーチンの実行を終了する。
これらのステップS110〜122に処理により、所定の判定周期(例えば、6ms)の間にデューティ無効パルスが存在せずかつデューティ有効パルスが存在し、その後の判定周期の間にデューティ無効パルスが存在しないことを条件に、センサユニット20a〜20dなどのうちで変数jに対応したセンサユニットなどの第1異常からの復帰が検出される。なお、前記ステップS112,114の判定処理が第1異常状態から正常状態への復帰の基本的な条件であり、ステップS118の判定処理が正常状態への復帰の誤検出を回避するための補足的条件である。
また、第1異常復帰検出仮フラグER1Yjが“1”に設定された次の判定周期(例えば、6ms)の間にデューティ無効パルスが存在した場合には、ステップS118にて「NO」すなわち異常パルスフラグERPjが“0”でないと判定し、ステップS122にて第1異常復帰検出仮フラグER1Yjを“0”に戻した後、ステップS124以降に進む。したがって、この場合には、第1異常状態から正常状態への復帰の検出がステップS112,S114の判定処理からあらためて行われる。
なお、この第1異常検出処理において、デューティ無効パルスが所定の判定周期の間に存在する条件のみで前記異常を判定するようにしてもよい。この場合、図9のステップS102の判定処理を省略して、ステップS104にて「YES」と判定されたとき、ステップS106にて第1エラーフラグER1jを“1”に設定するようにすればよい。
また、第1異常復帰検出処理において、所定の判定周期の間にデューティ無効パルスが存在せずかつデューティ有効パルスが存在したという条件のみ、又は所定の判定周期の間にデューティ無効パルスが存在しないという条件のみで、異常検出の復帰が判定されるようにしてもよい。この場合、ステップS110〜S122の処理に代え、ステップS112,S114の判定処理によって共に「YES」と判定されたとき第1エラーフラグER1jを“0”に戻すようにし、又はステップS118の判定処理によって「YES」と判定されたとき第1エラーフラグER1jを“0”に戻すようにすればよい。
次に、図8のステップS64の第2異常検出ルーチンについて説明する。この第2異常検出ルーチンは、各車輪の回転方向が他の3車輪の回転方向と異なるという異常(以下、第2異常という)を検出するとともに、同第2異常の回復を検出するものである。
この第2異常検出ルーチンは、図10,11に詳細に示されており、マイクロコンピュータ40は、ステップS200にて第2異常検出ルーチンの実行を開始し、ステップS202にて、第2エラーフラグER2jが“0”であるか否かを判定する。第2エラーフラグER2jが“0”であれば、ステップS202にて「YES」と判定して、ステップS204〜S228からなる第2異常の検出処理を実行して、ステップS254にてこの第2異常検出ルーチンの実行を終了する。一方、第2エラーフラグER2jが“1”であれば、ステップS202にて「NO」と判定して、ステップS230〜S252からなる第2異常状態から正常状態への復帰の検出処理を実行して、ステップS254にてこの第2異常検出ルーチンの実行を終了する。
ステップS204〜S228からなる異常検出処理においては、ステップS204にて、前記図8のステップS60の処理によって入力した回転方向検出信号Dr1〜Dr4を用いて、ロータ10a〜10dのうちの一つのロータに関する回転方向検出信号Drj(jは1〜4のいずれか)のみが他の3つの回転方向検出信号と異なるかにより、一つの車輪の回転方向のみが他の3車輪の回転方向と異なるかを判定する。なお、このステップS204の判定処理が、第2異常の検出の基本的条件である。
ステップS206においては、前記図8のステップS58の処理によって計算した最小車輪速度Vminが所定車輪速度Vr2(例えば、30km/h)よりも大きいかを判定する。この判定条件は、車両のほぼ停止時に車体が前後に揺れて、一つの車輪の回転方向のみが他の3車輪の回転方向と異なってしまうことによる第2異常の誤判定を回避するための補足的条件である。ステップS208においては、前記図8のステップS58の処理によって計算した最大車輪速度Vmaxと最小車輪速度Vminとの差Vmax−Vminが所定車輪速度Vr3(例えば、2km/h)未満であるかを判定する。この判定条件は、車両が旋回状態にあって(直進状態になくて)、一つの車輪の回転方向のみが他の3車輪の回転方向と異なってしまうことによる第2異常の誤判定を回避するための補足的条件である。
ステップS210においては、ABS信号、VSC信号及びTRC信号を入力して、これらの全ての信号がローレベルであるかを判定、すなわち各車輪に対する制動力又は駆動力の付与及び解除の制御中でないかを判定する。この判定条件も、車輪のスリップ状態などに応じて各車輪ごとに制動力又は駆動力を付与及び解除した結果、一つの車輪の回転方向のみが他の3車輪の回転方向と異なってしまうことによる第2異常の誤判定を回避するための補足的条件である。
これらのステップS204〜S210の全ての判定条件が成立しない限り、ステップS204〜S210のいずれかにて「NO」と判定して、ステップS226にてカウント値CT1を「0」に設定し、ステップS228にて第2異常検出仮フラグER2Xjを“0”に設定し、ステップS254にてこの第2異常検出ルーチンの実行を終了する。このカウントCT1は、初期には「0」に設定され、この第2異常検出ルーチンの実行回数を計測することにより、前記ステップS204〜S210の異常検出条件の成立継続時間を計測するものである。第2異常検出仮フラグER2Xjは、“1”によって第2異常の検出動作中であることを表す。
一方、ステップS204〜S210の全ての判定条件が成立すると、ステップS204〜S210にてそれぞれ「YES」と判定し、ステップS212にて第2異常検出仮フラグER2Xjが“0”であるかを判定する。第2異常検出仮フラグER2Xjが“0”であれば、ステップS212にて「YES」と判定し、ステップS214にてカウント値CT1を「0」に設定し、ステップS216にて第2異常検出仮フラグER2Xjを“1”に設定して、ステップS254にてこの第2異常検出ルーチンの実行を終了する。
そして、ステップS204〜S210の全ての判定条件が成立し続ければ、第2異常検出仮フラグER2Xjは“1”に保たれているので、ステップS212においては「NO」と判定され続けて、ステップS218,S220に進む。ステップS218においては、カウント値CT1に「1」を加算する。ステップS220においては、カウント値CT1が所定値CT10(例えば、「17」)以上になったかを判定する。前記ステップS214の処理によってカウント値CT1を「0」に設定してから間もなければ、ステップS220にて「NO」と判定し続けて、ステップS254にてこの第2異常検出ルーチンの実行を終了する。この状態では、カウント値CT1は、ステップS218の処理により、この第2異常検出ルーチンの実行ごとに「1」ずつカウントアップされる。
さらに、ステップS204〜S210の全ての判定条件が成立し続ければ、カウントCT1は所定値CT10以上になるので、ステップS220にて「YES」と判定し、ステップS222にて第2エラーフラグER2jを“1”に設定する。この第2エラーフラグER2jは、“1”によりセンサユニット20a〜20dなどのうちで変数jに対応したセンサユニットなどの第2異常の検出状態を表すもので、前記ステップS204〜S228の処理により、センサユニット20a〜20dなどの第2異常が検出される。また、前記ステップS222の処理後、ステップS224にて第2異常検出仮フラグER2Xjを“0”に戻して、ステップS254にてこの第2異常検出ルーチンの実行を終了する。
このようにして、第2エラーフラグER2jが“1”に設定された後には、ステップS202にて「NO」と判定されて、ステップS230〜S252からなる第2異常の復帰検出処理が実行されるようになる。
ステップS230〜S252からなる異常復帰検出処理においては、ステップS230にて、前記図8のステップS60の処理によって入力した回転方向検出信号Dr1〜Dr4を用いて、ロータ10a〜10dのうちの一つのロータに関する回転方向検出信号Drj(jは1〜4のいずれか)が他の回転方向検出信号と同一であるかにより、一つの車輪の回転方向が他の3車輪の回転方向と同一であるかを判定する。なお、このステップS230の判定処理が、異常復帰の検出の基本的条件である。
ステップS232,S234においては、前記ステップS206,S208の補足的条件と同様に、最小車輪速度Vminが所定車輪速度Vr2(例えば、30km/h)よりも大きいか、最大車輪速度Vmaxと最小車輪速度Vminとの差Vmax−Vminが所定車輪速度Vr3(例えば、2km/h)未満であるかをそれぞれ判定する。
そして、これらのステップS230〜S234の全ての判定条件が成立しない限り、ステップS230〜S234のいずれかにて「NO」と判定して、ステップS250にてカウント値CT2を「0」に設定し、ステップS252にて第2異常復帰検出仮フラグER2Yjを“0”に設定し、ステップS254にてこの第2異常検出ルーチンの実行を終了する。このカウント値CT2も、初期には「0」に設定され、この第2異常検出ルーチンの実行回数を計測することにより、前記ステップS230〜S234の異常復帰検出条件の成立継続時間を計測するものである。第2異常復帰検出仮フラグER2Yjは、“1”によって第2異常の復帰の検出動作中であることを表す。
一方、ステップS230〜S234の全ての判定条件が成立すると、ステップS230〜S234にてそれぞれ「YES」と判定し、ステップS236にて第2異常復帰検出仮フラグER2Yjが“0”であるかを判定する。第2異常復帰検出仮フラグER2Yjが“0”であれば、ステップS236にて「YES」と判定し、ステップS238にてカウント値CT2を「0」に設定し、ステップS240にて第2異常復帰検出仮フラグER2Yjを“1”に設定して、ステップS254にてこの第2異常検出ルーチンの実行を終了する。
そして、ステップS230〜S254の全ての判定条件が成立し続ければ、第2異常復帰検出仮フラグER2Yjは“1”に保たれているので、ステップS236においては「NO」と判定され続けて、ステップS242,S244に進む。ステップS242においては、カウント値CT2に「1」を加算する。ステップS244においては、カウント値CT1が所定値CT20(例えば、「83」)以上になったかを判定する。前記ステップS240の処理によってカウント値CT2を「0」に設定してから間もなければ、ステップS244にて「NO」と判定し続けて、ステップS254にてこの第2異常検出ルーチンの実行を終了する。この状態では、カウント値CT2は、ステップS242の処理により、この第2異常検出ルーチンの実行ごとに「1」ずつカウントアップされる。
さらに、ステップS230〜S234の全ての判定条件が成立し続ければ、カウント値CT2は所定値CT20以上になるので、ステップS244にて「YES」と判定し、ステップS246にて第2エラーフラグER2jを“0”に戻す。これにより、センサユニット20a〜20dなどの第2異常状態から正常状態への復帰が検出されることになる。また、前記ステップS246の処理後、ステップS248にて第2異常復帰検出仮フラグER2Yjを“0”に戻して、ステップS254にてこの第2異常検出ルーチンの実行を終了する。
なお、この第2異常検出処理において、ステップS204〜S210,S220の判定処理によって前記異常を判定するようにしたが、ステップS206〜S210,S2220の判定処理に関しては、適宜一つ又は複数のステップの判定処理を省略してもよい。また、ステップS230〜S234,S244の判定処理によって前記異常の復帰を判定するようにしたが、ステップS232,S234,S244の判定処理に関しては、適宜一つ又は複数のステップの判定処理を省略してもよい。
次に、図8のステップS66の第3異常検出ルーチンについて説明する。この第3異常検出ルーチンは、車輪速度が車両の後退時にあり得ないほど大きいという異常(以下、第3異常という)を検出するとともに、同第3異常の回復を検出するものである。
この第3異常検出ルーチンは、図12,13に詳細に示されており、マイクロコンピュータ40は、ステップS300にて第3異常検出ルーチンの実行を開始し、ステップS302にて、第3エラーフラグER3jが“0”であるか否かを判定する。第3エラーフラグER3jが“0”であれば、ステップS302にて「YES」と判定して、ステップS304〜S326からなる第3異常の検出処理を実行して、ステップS352にてこの第3異常検出ルーチンの実行を終了する。一方、第3エラーフラグER3jが“1”であれば、ステップS302にて「NO」と判定して、ステップS328〜S350からなる第3異常状態から正常状態への復帰の検出処理を実行して、ステップS352にてこの第3異常検出ルーチンの実行を終了する。
ステップS304〜S326からなる異常検出処理においては、ステップS304にて、前記図8のステップS60の処理によって入力した回転方向検出信号Drjを用いて、同回転方向検出信号Drjがロータ10a〜10dのうちの対応するロータ(車輪)の逆転方向を表すかを判定する。ステップS306においては、前記図8のステップS54の処理によって計算した車輪速度Vxjが所定車輪速度Vr4(例えば、100km/h)よりも大きいかを判定する。なお、これらのステップS304,S306の判定処理が、第3異常状態の検出の基本的条件である。
ステップS308においては、前記図8のステップS58の処理によって計算した最小車輪速度Vminが所定車輪速度Vr5(例えば、30km/h)よりも大きいかを判定する。この判定条件は、他の車輪の回転が停止していて該当する車輪を含む一部の車輪だけが空転していることによる第3異常の誤判定を回避するための補足的条件である。
これらのステップS304〜S308の全ての判定条件が成立しない限り、ステップS304〜S308のいずれかにて「NO」と判定して、ステップS324にてカウント値CT3を「0」に設定し、ステップS326にて第3異常検出仮フラグER3Xjを“0”に設定し、ステップS352にてこの第3異常検出ルーチンの実行を終了する。このカウントCT3も、初期には「0」に設定され、この第3異常検出ルーチンの実行回数を計測することにより、前記ステップS304〜S308の異常検出条件の成立継続時間を計測するものである。第3異常検出仮フラグER3Xjは、“1”によって第3異常の検出動作中であることを表す。
一方、ステップS304〜S308の全ての判定条件が成立すると、ステップS304〜S308にてそれぞれ「YES」と判定し、ステップS310にて第3異常検出仮フラグER3Xjが“0”であるかを判定する。第3異常検出仮フラグER3Xjが“0”であれば、ステップS310にて「YES」と判定し、ステップS312にてカウント値CT3を「0」に設定し、ステップS314にて第3異常検出仮フラグER3Xjを“1”に設定して、ステップS352にてこの第3異常検出ルーチンの実行を終了する。
そして、ステップS304〜S308の全ての判定条件が成立し続ければ、第3異常検出仮フラグER3Xjは“1”に保たれているので、ステップS310においては「NO」と判定され続けて、ステップS316,318に進む。ステップS316においては、カウント値CT3に「1」を加算する。ステップS318においては、カウント値CT3が所定値CT30(例えば、「17」)以上になったかを判定する。前記ステップS312の処理によってカウント値CT3を「0」に設定してから間もなければ、ステップS318にて「NO」と判定し続けて、ステップS352にてこの第3異常検出ルーチンの実行を終了する。この状態では、カウント値CT3は、ステップS316の処理により、この第3異常検出ルーチンの実行ごとに「1」ずつカウントアップされる。
さらに、ステップS304〜S308の全ての判定条件が成立し続ければ、カウント値CT3は所定値CT30以上になるので、ステップS318にて「YES」と判定し、ステップS320にて第3エラーフラグER3jを“1”に設定する。この第3エラーフラグER3jは、“1”によりセンサユニット20a〜20dなどのうちで変数jに対応したセンサユニットなどの第3異常の検出状態を表すもので、前記ステップS304〜S318の処理により、センサユニット20a〜20dなどの第3異常が検出される。また、前記ステップS320の処理後、ステップS322にて第3異常検出仮フラグER3Xjを“0”に戻して、ステップS352にてこの第3異常検出ルーチンの実行を終了する。
このようにして、第3エラーフラグER3jが“1”に設定された後には、ステップS302にて「NO」と判定されて、ステップS328〜S350からなる第3異常の復帰検出処理が実行されるようになる。
ステップS328〜S350からなる異常復帰検出処理においては、ステップS328にて、前記ステップS60の処理によって入力した回転方向検出信号Dr1〜Dr4を用いて、全てのロータ10a〜10d(車輪)の回転方向検出信号Dr1〜Dr4が同一であるかにより、4輪の回転方向が同一であるかを判定する。なお、このステップS328の判定処理が、異常復帰の検出の基本的条件である。
ステップS330においては、前記図8のステップS58の処理によって計算した最小車輪速度Vminが所定車輪速度Vr6(例えば、10km/h)よりも大きいかを判定する。また、ステップS332においては、前記図8のステップS58の処理によって計算した最大車輪速度Vmaxと最小車輪速度Vminとの差Vmax−Vminが所定車輪速度Vr7(例えば、2km/h)未満であるかを判定する。これらのステップS330,S332の判定条件は、車両が直進走行状態にあることを判定するための補足的条件で、これにより、車両が直進走行してない状態で前記ステップS328による第3異常の復帰検出の誤判定が回避される。
そして、これらのステップS328〜S332の全ての判定条件が成立しない限り、ステップS328〜S332のいずれかにて「NO」と判定して、ステップS348にてカウント値CT4を「0」に設定し、ステップS350にて第3異常復帰検出仮フラグER3Yjを“0”に設定し、ステップS352にてこの第3異常検出ルーチンの実行を終了する。このカウント値CT4も、初期には「0」に設定され、この第3異常検出ルーチンの実行回数を計測することにより、前記ステップS328〜S332の異常復帰検出条件の成立継続時間を計測するものである。第3異常復帰検出仮フラグER3Yjは、“1”によって第3異常からの復帰の検出動作中であることを表す。
一方、ステップS328〜S332の全ての判定条件が成立すると、ステップS328〜S332にてそれぞれ「YES」と判定し、ステップS334にて第3異常復帰検出仮フラグER3Yjが“0”であるかを判定する。第3異常復帰検出仮フラグER3Yjが“0”であれば、ステップS334にて「YES」と判定し、ステップS336にてカウントCT4を「0」に設定し、ステップS338にて第3異常復帰検出仮フラグER3Yjを“1”に設定して、ステップS352にてこの第3異常検出ルーチンの実行を終了する。
そして、ステップS328〜S332の全ての判定条件が成立し続ければ、第3異常復帰検出仮フラグER3Yjは“1”に保たれているので、ステップS334においては「NO」と判定され続けて、ステップS340,342に進む。ステップS340においては、カウント値CT4に「1」を加算する。ステップS342においては、カウント値CT4が所定値CT40(例えば、「83」)以上になったかを判定する。前記ステップS336の処理によってカウント値CT4を「0」に設定してから間もなければ、ステップS342にて「NO」と判定し続けて、ステップS352にてこの第2異常検出ルーチンの実行を終了する。この状態では、カウント値CT4は、ステップS340の処理により、この第3異常検出ルーチンの実行ごとに「1」ずつカウントアップされる。
さらに、ステップS328〜S332の全ての判定条件が成立し続ければ、カウント値CT4は所定値CT40以上になるので、ステップS342にて「YES」と判定し、ステップS344にて第3エラーフラグER3jを“0”に戻す。これにより、センサユニット20a〜20dなどの第3異常状態から正常状態への復帰が検出されることになる。また、前記ステップS344の処理後、ステップS346にて第3異常復帰検出仮フラグER3Yjを“0”に戻して、ステップS352にてこの第3異常検出ルーチンの実行を終了する。
なお、この第3異常検出処理において、ステップS304〜S308,S318の判定処理によって前記異常を判定するようにしたが、ステップS308,S318のいずれか一方の判定処理に関しては省略してもよい。また、ステップS328〜S332,S342の判定処理によって前記異常の復帰を判定するようにしたが、ステップS330,S332,S342の判定処理に関しては、いずれか一つ又は複数の判定処理を省略してもよい。
次に、図8のステップS68の第4異常検出ルーチンについて説明する。この第4異常検出ルーチンは、センサユニット20a〜20dからの回転検出信号Vsj(j=1〜4)が図16(D)に示すようにロータ10a〜10dの正転及び逆転の頻繁な繰り返しを表すパルス列信号からなる異常(以下、第4異常という)を検出するものである。このような第4異常検出ルーチンについて詳細に説明する前に、図7のパルス検出プログラムの実行により設定されて第4異常検出ルーチンにて利用される変数について説明しておく。
図7のパルス検出プログラムのステップS28において、第1回転検出信号Vsj1を入力して、同回転検出信号Vsj1が前回ローレベルにあって今回ハイレベルに変化したかを判定することにより、回転検出信号Vsjの立上がりタイミングであるかを判定する。この場合、回転検出信号Vsjが立上がりタイミングでなければ、ステップS28にて「NO」と判定して、ステップS46にてこのパルス検出プログラムの実行を終了する。
一方、回転検出信号Vsjが立上がりタイミングであれば、ステップS28にて「YES」と判定し、ステップS30にてパルスカウント値PUCTjに「1」を加算する。このパルスカウント値PUCTjは、回転検出信号Vsjがローレベルからハイレベル(V0レベルからV1又はV2レベル)に変化した回数、すなわち回転検出信号Vsjの幅広のパルス数を表すもので、初期には「0」に設定されている。
前記ステップS30の処理後、ステップS32にて、第2回転検出信号Vsj2を入力して、同回転検出信号Vsj2がハイレベルであるか(言い換えれば、逆転パルス信号が存在するか)を判定することにより、回転検出信号Vsjが該当するロータの正転(車両の前進に対応)又は逆転(車両の後退に対応)を表しているかを判定する。
そして、第2回転検出信号Vsj2がローレベルであって回転検出信号Vsjが車輪の前進状態を表していれば、ステップS32にて「YES」と判定し、ステップS34以降に進む。ステップS34においては、逆転フラグREVFjが“1”であるかを判定する。逆転フラグREVFjは、“1”により該当するロータ(車輪)の逆転を表すものである。前回の回転検出信号Vsjが車輪の後退状態を表していて、逆転フラグREVFjが“1”であれば、ステップS34にて「YES」と判定して、ステップS36にて変化カウント値CGCTjに「1」を加算し、ステップS38にて逆転フラグREVFjを“0”に変更して、ステップS46にてこのパルス検出プログラムの実行を終了する。この変化カウント値CGCTjは、回転検出信号Vsjにおける前進状態から後退状態への変化及び後退状態から前進状態への変化の回数を表すもので、初期には「0」に設定されている。また、前回の回転検出信号Vsjが車輪の前進状態を表していて、逆転フラグREVFjが“0”であれば、ステップS34にて「NO」と判定して、ステップS46にてこのパルス検出プログラムの実行を終了する。
一方、前記ステップS32の判定時に、第2回転検出信号Vsj2がハイレベルであって回転検出信号Vsjが車輪の後退状態を表していれば、同ステップS32にて「NO」と判定し、ステップS40以降に進む。ステップS40においては、逆転フラグREVFjが“0”であるかを判定する。そして、前回の回転検出信号Vsjが車輪の前進状態を表していて、逆転フラグREVFjが“0”であれば、ステップS40にて「YES」と判定して、ステップS42にて変化カウント値CGCTjに「1」を加算し、ステップS44にて逆転フラグREVFjを“1”に変更して、ステップS46にてこのパルス検出プログラムの実行を終了する。また、前回の回転検出信号Vsjが車輪の後退状態を表していて、逆転フラグREVFjが“1”であれば、ステップS40にて「NO」と判定して、ステップS46にてこのパルス検出プログラムの実行を終了する。
次に、図8のステップS68の第4異常検出ルーチンについて具体的に説明する。この第4異常検出ルーチンは図14に詳細に示されており、その実行はステップS400にて開始される。この第4異常検出ルーチンの実行開始後、ステップS402にて、カウント中フラグCNTFjが“0”であるかを判定する。このカウント中フラグCNTFjは、後述するステップS406にて“1”に設定されるもので、初期には“0”に設定されている。したがって、ステップS402においては、最初「YES」と判定され、ステップS404に進められる。
ステップS404においては、前進・後退の変化回数を表す変化カウント値CGCTjが「1」以上であるか否かを判定する。すなわち、前回の第4異常検出ルーチンの実行から今回の第4異常検出ルーチンの実行までの間に、車両の前進・後退の変化を表す回転検出信号Vsjが出力されたかを判定する。前回の第4異常検出ルーチンの実行から今回の第4異常検出ルーチンの実行までの間に前進・後退の変化が無ければ、ステップS404にて「NO」すなわち変化カウント値CGCTjが「1」以上でないと判定して、ステップS408にてパルスカウント値PUCTjを「0」にクリアするとともに、ステップS410にて変化カウント値CGCTjも「0」にクリアして、ステップS428にてこの第4異常検出ルーチンの実行を終了する。
したがって、車両の前進・後退の変化を表す回転検出信号Vsjが検出されるまでは、前記図7のパルス検出プログラムのステップS28〜S44の処理により、第4異常検出ルーチンの実行される間における回転検出信号Vsjの幅広のパルス数(パルスカウント値PUCTj)及び前進・後退の変化回数(変化カウント値CGCTj)が計測され続ける。そして、前回の第4異常検出ルーチンの実行から今回の第4異常検出ルーチンの実行までの間に、車両の前進・後退の変化を表す回転検出信号Vsjが検出されると、ステップS404にて「YES」すなわち変化カウント値CGCTjが「1」以上であると判定して、ステップS406にてカウント中フラグCNTFjを“1”に設定する。
このようにしてカウント中フラグCNTFjが“1”に設定されると、次回以降の第4異常検出ルーチンのステップS402にて「NO」と判定されて、ステップS412〜426の処理が実行されるようになる。ステップS412においては、パルスカウント値PUCTjが所定値PUCT0(例えば、「50」)以上であるかを判定する。パルスカウント値PUCTjが所定値CT0未満であれば、ステップS412にて「NO」と判定して、ステップS428にてこの第4異常検出ルーチンの実行を終了する。
一方、この状態では、ステップS408,S410の処理によってパルスカウント値PUCTj及び変化カウント値CGCTjが「0」にクリアされることがない。したがって、前記図7のパルス検出プログラムのステップS28〜S44の処理により、前回の第4異常検出ルーチンの実行からの回転検出信号Vsjの幅広のパルス数(パルスカウント値PUCTj)及び前進・後退の変化回数(変化カウント値CGCTj)が引き続きカウントアップされることになる。
パルスカウント値PUCTjが所定値PUCT0未満であれば、ステップS412にて「NO」と判定し続けるので、パルスカウント値PUCTj及び変化カウント値CGCTjの前記パルス検出プログラムによるカウントアップは継続する。その結果、パルスカウント値PUCTjが増加して所定値PUCT0以上になると、ステップS412にて「YES」と判定し、ステップS414〜S418の判定処理を実行する。
ステップS414においては、パルスカウント値PUCTjに対する変化カウント値CGCTjの割合CGCTj/PUCTjが「0.7」以上であるか否かを判定する。この割合CGCTj/PUCTjは、回転検出信号Vsj(j=1〜4)に基づくロータ10a〜10dの正転及び逆転の繰り返し頻度を表すもので、最大を「1.0」として、大きくなるに従って前記繰り返し頻度が高くなることを示している。なお、このステップS414の判定処理が、第4異常検出の基本的条件である。
ステップS416においては、前記図8のステップS54にて計算した車輪速度Vxjが所定車輪速度Vr8(例えば、10km/h)よりも大きいかを判定する。なお、このステップS416の処理は、ロータ10a〜10dがほとんど回転しないことに基づく第4異常の誤検出を回避するための補足的検出条件である。ステップS418においては、バッテリ信号BTを入力して、バッテリ異常(バッテリ電圧が低いこと)の有無を判定する。このステップS418の判定処理は、バッテリ異常(バッテリ電圧が低いこと)に起因した第4異常の誤検出を回避するための補足的検出条件である。
これらの全ての条件が成立しなければ、前記ステップS414〜418のうちのいずれか一つにて「NO」と判定して、ステップS422〜S426にて、パルスカウント値PUCTj、変化カウント値CGCTj及びカウント中フラグCNTFjをそれぞれ「0」にクリアし、ステップS428にてこの第4異常検出ルーチンの実行を終了する。この場合、前述した図7のパルス検出プログラムのステップS28〜S44及びステップS402〜S412の処理による前記割合CGCTj/PUCTjの計算のための事前処理があらためて行われるようになる。
一方、前記全ての判定条件が成立すると、ステップS412〜S418にてそれぞれ「YES」と判定し、ステップS420にて第4エラーフラグER4jを“1”に設定し、ステップS428にてこの第4異常検出ルーチンの実行を終了する。この第4エラーフラグER4jは、“1”によりセンサユニット20a〜20dなどのうちで変数jに対応したセンサユニットなどの第4異常の検出状態を表すもので、前述の処理により、センサユニット20a〜20dなどの第4異常が検出される。そして、この第4異常が検出された場合には、同異常の復帰が検出されることはなく、以降、第4エラーフラグER4jは“1”に維持される。
なお、この第4異常検出において、前記ステップS414〜S418のうちの補足的な条件であるステップS416,S418の判定処理を省略してもよい。また、前記ステップS32による回転検出信号Vsjに基づくロータの回転方向の判定処理は単に一例を示すもので、これに代え又は加えて、回転検出信号Vsjの立下がり時における第2回転検出信号Vsj2のハイレベル又はローレベルにより、回転検出信号Vsjに基づくロータの回転方向の判定処理を行うようにしてもよい。
また、この第4異常検出においては、パルスカウント値PUCTjが所定値PUCT0以上になったとき、このパルスカウント値PUCTjに対する変化カウント値CGCTjの割合CGCTj/PUCTjが「0.7」以上であることを条件に、第4異常を検出するようにした。しかし、これに代えて、予め決めた所定時間における前記割合CGCTj/PUCTj、車輪(車両)が予め決めた所定距離を走行した間における前記割合CGCTj/PUCTjなど、所定区間における前記割合CGCTj/PUCTjが「0.7」以上であることを条件に、第4異常を検出するようにしてもよい。また、前記割合CGCTj/PUCTjと比較される値「0.7」に関しても、ある程度大きな値であって「1.0」以下の値であれば、他の所定値を採用してもよい。
このような第1〜第4異常検出ルーチンの実行後、図8のステップS70にて、前記ステップS54の処理によって検出された車輪速度Vx1〜Vx4、前記ステップS60の処理によって入力された回転方向検出信号Dr1〜Dr4、及びステップS62〜S68の処理による第1〜第4エラーフラグER1j〜ER4j(j=1〜4)を各種制御装置へ適宜出力する。具体的には、第1〜第4エラーフラグER1j〜ER4j(j=1〜4)が第1〜第4異常をそれぞれ表す“1”に設定されていなければ、車輪速度Vx1〜Vx4及び回転方向検出信号Dr1〜Dr4が各種制御装置に出力されて、同制御装置による各種制御に利用される。一方、第1〜第4エラーフラグER1j〜ER4j(j=1〜4)のうちで第1〜第4異常を表す“1”に設定されているものがあれば、同“1”に設定された第1〜第4エラーフラグER1j〜ER4j(j=1〜4)が出力されて、同フラグに対応した車輪速度Vx1〜Vx4及び回転方向検出信号Dr1〜Dr4は出力されない。この場合、“1”に設定されるとともに出力された第1〜第4エラーフラグER1j〜ER4j(j=1〜4)に基づいて運転者に対する警告がなされたり、前記各種制御装置における制御態様が変更される。
なお、上記実施形態では、ロータ10a〜10dが逆転する場合にのみ回転検出信号Vsj(j=1〜4)に幅狭のパルスを付加するようにして、ロータ10a〜10dの正転及び逆転を判別できるようにした。しかし、これに代えて、ロータ10a〜10dが正転する場合にのみ回転検出信号Vsj(j=1〜4)に幅狭のパルスを付加するようにして、ロータ10a〜10dの正転及び逆転を判別できるようにしてもよい。この場合も、上記同様な第1異常検出ルーチンの処理にて幅狭のパルスの検出により、回転検出信号Vsj(j=1〜4)の第1異常を検出することができる。
また、上記実施形態においては、パルス検出処理及び異常検出を含む車輪速度検出処理を図7〜図14に示すフローチャートに対応したプログラム処理によって実行するようにした。しかし、本発明の実施にあたっては、前記プログラムの一部をハード回路による処理で実現するようにしてもよい。
さらに、上記実施形態は本発明の一例であって、本発明の目的及び趣旨を逸脱しない範囲内で種々の変形がなされ得るものである。
10a〜10d…ロータ、20a〜20d…センサユニット、21a、22a…回転センサ、31a〜31d,32a〜32d…比較器、40…マイクロコンピュータ、50…回転方向検出部。