"操舵ハンドルからステアリングシャフトに入力された操舵トルクを検出する操舵トルク検出手段と、ステアリング機構に設けられて操舵アシストトルクを発生するためのモータと、前記モータを正回転方向に駆動するときにオンされる正回転用スイッチング素子と、前記モータを逆回転方向に駆動するときにオンされる逆回転用スイッチング素子とを有するHブリッジ回路を用いたモータ駆動回路と、前記モータに流れるモータ電流を検出するモータ電流検出手段と、前記モータ電流検出手段の異常を検出する異常検出手段と、前記モータ電流検出手段の異常が検出されていない場合に、前記操舵トルク検出手段により検出された操舵トルクに応じて設定される目標電流と、前記モータ電流検出手段により検出されたモータ電流とに基づく電流フィードバック制御により前記モータ駆動回路を制御する正常時モータ制御手段と、前記モータ電流検出手段の異常が検出されている場合に、前記電流フィードバック制御を用いずに前記操舵トルク検出手段により検出された操舵トルクに基づいて前記モータ駆動回路を制御する異常時モータ制御手段とを備えた電動パワーステアリング装置において、前記異常時モータ制御手段は、前記モータの端子間に電源電圧が印加されないように前記モータ駆動回路が制御された状態で、前記モータの端子間電圧を検出するオフ状態電圧検出部と、前記オフ状態電圧検出部により検出された前記モータの端子間電圧に基づいて、前記モータに流れる電流がゼロとなるタイミングを検出する電流ゼロタイミング検出部と、前記操舵トルク検出手段により検出された操舵トルクに応じた通電設定時間を設定する通電時間設定部と、前記電流ゼロタイミング検出手段により前記モータに流れる電流がゼロとなるタイミングが検出される都度、前記通電時間設定部により設定された通電設定時間だけ前記正回転用スイッチング素子あるいは前記逆回転用スイッチング素子をオンにするスイッチング制御部とを備えたことを特徴とする電動パワーステアリング装置。前記電流ゼロタイミング検出部は、前記モータの端子間電圧が、前記モータに流れる電流の方向が正方向であると判定できる正方向判定電圧レベルと、前記モータに流れる電流の方向が負方向であると判定できる負方向判定電圧レベルとのあいだの値となることが検出されたタイミングと、前記モータの端子間電圧が、前記正方向判定電圧レベルから前記負方向判定電圧レベルへ変化したこと、あるいは、前記負方向判定電圧レベルから前記正方向判定電圧レベルへ変化したことが検出されたタイミングとの少なくとも一方のタイミングを、前記モータに流れる電流がゼロとなるタイミングとして検出することを特徴とする請求項1記載の電動パワーステアリング装置。前記スイッチング制御部は、前記操舵トルクの方向に応じた回転方向の前記正回転用スイッチング素子あるいは前記逆回転用スイッチング素子を前記通電時間設定部により設定された通電設定時間だけオンすることを特徴とする請求項1または2記載の電動パワーステアリング装置。前記通電時間設定部は、前記操舵トルク検出手段により検出された操舵トルクに応じて前記正回転用スイッチング素子の通電設定時間と前記逆回転用スイッチング素子の通電設定時間とを別々に設定し、前記スイッチング制御部は、前記モータに流れる電流がゼロとなるタイミングが検出される都度、前記正回転用スイッチング素子と前記逆回転用スイッチング素子とを交互に、前記別々に設定された通電設定時間だけオンすることを特徴とする請求項1または2記載の電動パワーステアリング装置。前記電流ゼロタイミング検出部により前記モータに流れる電流がゼロとなるタイミングが検出されたとき、前記正回転用スイッチング素子あるいは前記逆回転用スイッチング素子をオンする前に、前記オフ状態電圧検出部により検出される前記モータの端子間電圧に基づいて、前記モータの回転速度を推定する回転速度推定部と、前記回転速度推定部により推定された前記モータの回転速度に基づいて、前記回転速度が高い場合には低い場合に比べて前記通電設定時間が長くなるように前記通電設定時間を補正する通電設定時間補正部とを備えたことを特徴とする請求項1ないし請求項4の何れか一項記載の電動パワーステアリング装置。前記通電設定時間には上限値が設定されており、操舵位置を検出する操舵位置検出部と、前記操舵位置検出部により検出された操舵位置が、操舵可能範囲の終端を機械的に規制するストロークエンドに近い場合にはストロークエンドから離れている場合に比べて、前記通電設定時間の上限値を小さくする上限値変更部とを備えたことを特徴とする請求項1ないし請求項5の何れか一項記載の電動パワーステアリング装置。以下、本発明の一実施形態に係る電動パワーステアリング装置について図面を用いて説明する。図1は、同実施形態に係る車両の電動パワーステアリング装置1の概略構成を表している。この電動パワーステアリング装置1は、操舵ハンドル11の操舵操作により転舵輪を転舵するステアリング機構10と、ステアリング機構10に組み付けられ操舵アシストトルクを発生するモータ20と、操舵ハンドル11の操作状態に応じてモータ20の作動を制御する電子制御ユニット100とを主要部として備えている。以下、電子制御ユニット100をアシストECU100と呼ぶ。ステアリング機構10は、操舵ハンドル11の回転操作により左右前輪FW1,FW2を転舵するための機構で、操舵ハンドル11を上端に一体回転するように接続したステアリングシャフト12を備える。このステアリングシャフト12の下端には、ピニオンギヤ13が一体回転するように接続されている。ピニオンギヤ13は、ラックバー14に形成されたギヤ部14aと噛み合って、ラックバー14とともにラックアンドピニオン機構を構成する。ラックバー14は、ギヤ部14aがラックハウジング16内に収納され、その左右両端がラックハウジング16から露出してタイロッド17と連結される。このラックバー14のタイロッド17との連結部には、ストロークエンドを構成するストッパ18が形成され、このストッパ18とラックハウジング16の端部との当接によりラックバー14の左右動ストロークが機械的に規制されている。左右のタイロッド17の他端は、左右前輪FW1,FW22に設けられたナックル19に接続される。こうした構成により、左右前輪FW1,FW2は、ステアリングシャフト12の軸線回りの回転に伴うラックバー14の軸線方向の変位に応じて左右に操舵される。ステアリングシャフト12には減速ギヤ25を介してモータ20が組み付けられている。モータ20は、その回転により減速ギヤ25を介してステアリングシャフト12をその軸中心に回転駆動して、操舵ハンドル11の回動操作に対してアシスト力を付与する。このモータ20は、ブラシ付直流モータである。ステアリングシャフト12には、操舵ハンドル11と減速ギヤ25との中間位置に操舵トルクセンサ21が組みつけられている。操舵トルクセンサ21は、例えば、ステアリングシャフト12の中間部に介装されたトーションバー図示略の捩れ角度をレゾルバ等により検出し、この捩れ角に基づいてステアリングシャフト12に働いた操舵トルクtrを検出する。操舵トルクtrは、正負の値により操舵ハンドル11の操作方向が識別される。例えば、操舵ハンドル11の左方向への操舵時における操舵トルクtrを正の値で、操舵ハンドル11の右方向への操舵時における操舵トルクtrを負の値で示す。尚、本実施形態においては、トーションバーの捩れ角度をレゾルバにより検出するが、エンコーダ等の他の回転角センサにより検出することもできる。次に、アシストECU100について図2を用いて説明する。アシストECU100は、モータ20の目標制御量を演算し、演算された目標制御量に応じたスイッチ駆動信号を出力する電子制御回路50と、電子制御回路50から出力されたスイッチ駆動信号にしたがってモータ20に通電するモータ駆動回路40とを含んで構成される。電子制御回路50は、CPU,ROM,RAM等からなる演算回路と入出力インタフェースを備えたマイクロコンピュータ60以下、マイコン60と呼ぶと、マイコン60から出力されるスイッチ制御信号を増幅してモータ駆動回路40に供給するスイッチ駆動回路30とを備える。アシストECU100は、電源装置200から電力供給される。この電源装置200は、図示しないバッテリと、エンジンの回転により発電するオルタネータとから構成される。この電源装置200の定格出力電圧は、例えば12Vに設定されている。尚、図中においては、電源装置200からモータ駆動回路40への電源供給ラインである電源ライン210のみを示しているが、電子制御回路50の作動電源も電源装置200から供給される。モータ駆動回路40は、電源ライン210とグランドライン220との間に設けられ、スイッチング素子Q1Hとスイッチング素子Q2Hとを並列接続した上アーム回路45Hと、スイッチング素子Q1Lとスイッチング素子Q2Lとを並列接続した下アーム回路45Lとを直列に接続し、この上アーム回路45Hと下アーム回路45Lとの接続部A1,A2から、モータ20への電力供給を行うための通電ライン47a,47bを引き出したHブリッジ回路で構成されている。従って、モータ20の一方の通電端子20aは、スイッチング素子Q1Hを介して電源ライン210に接続されるとともに、スイッチング素子Q1Lを介してグランドライン220に接続される。また、モータ20の他方の通電端子20bは、スイッチング素子Q2Hを介して電源ライン210に接続されるとともに、スイッチング素子Q2Lを介してグランドライン220に接続される。モータ駆動回路40に設けられるスイッチング素子Q1H,Q2H,Q1L,Q2Lとしては、MOS-FETMetalOxideSemiconductorFieldEffectTransistorが使用される。スイッチング素子Q1H,Q2H,Q1L,Q2Lは、各ソース-ドレイン間に電源電圧が印加されるように上下のアーム回路45H,45Lに設けられ、また、各ゲートが電子制御回路50のスイッチ駆動回路30に接続される。尚、図中に回路記号で示すように、MOS-FETには構造上、ダイオードが寄生している。このダイオードを寄生ダイオードと呼ぶ。各スイッチング素子Q1H,Q2H,Q1L,Q2Lの寄生ダイオードは、電源ライン210からグランドライン220への電流の流れを遮断し、グランドライン220から電源ライン210へ向かう電流のみを許容する逆導通ダイオードである。また、モータ駆動回路40は、寄生ダイオードとは別の逆導通ダイオード電流遮断方向は寄生ダイオードと同じであって、電源電圧方向に対して逆方向にのみ導通するダイオードをスイッチング素子Q1H,Q2L,Q2H,Q1Lに並列に接続した構成であってもよい。マイコン60は、スイッチ駆動回路30を介してモータ駆動回路40の各スイッチング素子Q1H,Q2H,Q1L,Q2Lのゲートに独立した駆動信号を出力する。この駆動信号により、各スイッチング素子Q1H,Q2H,Q1L,Q2Lのオン状態とオフ状態とが切り替えられる。モータ駆動回路40においては、スイッチング素子Q2Hとスイッチング素子Q1Lとがオフに維持された状態でスイッチング素子Q1Hとスイッチング素子Q2Lとがオンすると、図中の方向に電流が流れる。これにより、モータ20は、正回転方向のトルクを発生する。また、スイッチング素子Q1Hとスイッチング素子Q2Lとがオフに維持された状態でスイッチング素子Q2Hとスイッチング素子Q1Lとがオンすると、図中の-方向に電流が流れる。これにより、モータ20は、逆回転方向のトルクを発生する。従って、スイッチング素子Q1Hとスイッチング素子Q2Lとが本発明の正回転用スイッチング素子に相当し、スイッチング素子Q2Hとスイッチング素子Q1Lとが本発明の逆回転用スイッチング素子に相当する。アシストECU100は、モータ20に流れる電流を検出する電流センサ31を備えている。この電流センサ31は、下アーム回路45Lとグランドとを接続するグランドライン220に設けられる。電流センサ31は、例えば、グランドライン220にシャント抵抗図示略を設け、このシャント抵抗の両端に現れる電圧をアンプ図示略で増幅し、増幅した電圧をA/Dコンバータ図示略によりデジタル信号に変換してマイコン60に供給する。以下、電流センサ31により検出されるモータ20に流れる電流の値を、モータ実電流Imと呼ぶ。尚、電流センサ31は、電圧信号を増幅する機能およびデジタル信号に変換する機能をマイコン60側に設けてもよい。また、アシストECU100は、モータ20の端子間電圧を検出する電圧センサ32を備えている。この電圧センサ32は、モータ20の端子間電圧をA/Dコンバータ図示略によりデジタル信号に変換してマイコン60に供給する。以下、電圧センサ32により検出される電圧の値を、モータ電圧Vmと呼ぶ。モータ電圧Vmは、上アーム回路45Hと下アーム回路45Lとの一方の接続部A1のグランドに対する電位V1と、他方の接続部A2のグランドに対する電位V2との差V1-V2に相当する。尚、電圧センサ32は、電圧信号をデジタル信号に変換する機能をマイコン60側に設けてもよい。また、アシストECU100は、モータ駆動回路40に供給される電源電圧、つまり、電源装置200の出力電圧を検出する電圧センサ33を備えている。この電圧センサ33は、電源ライン210の電圧をA/Dコンバータ図示略によりデジタル信号に変換してマイコン60に供給する。以下、電圧センサ33により検出される電圧の値を、電源電圧Vbと呼ぶ。尚、電圧センサ33は、電圧信号をデジタル信号に変換する機能をマイコン60側に設けてもよい。また、アシストECU100は、車速センサ34を接続している。車速センサ34は、車速vxを表す検出信号をアシストECU100に出力する。次に、マイコン60の制御処理について説明する。マイコン60は、その機能に着目すると、正常時モータ制御部70と、異常時モータ制御部80と、異常検出部91と、制御切替部92とを備えている。各機能部における処理は、マイコン60に記憶された制御プログラムを所定の周期で繰り返し実行することにより行われる。正常時モータ制御部70は、電流センサ31に異常が検出されていないとき、つまり、通常時において、モータ20の駆動制御を行うブロックである。以下、正常時モータ制御部70の処理について説明する。図3は、正常時モータ制御部70により実行される正常時モータ制御ルーチンを表す。本制御ルーチンが起動すると、正常時モータ制御部70は、まず、ステップS71において、車速センサ22によって検出された車速vxと、操舵トルクセンサ21によって検出された操舵トルクtrを読み込む。続いて、正常時モータ制御部70は、ステップS72において、図4に示すアシストマップを参照して、入力した車速vxおよび操舵トルクtrに応じて設定される目標アシストトルクtを計算する。アシストマップは、代表的な複数の車速vxごとに、操舵トルクtrと目標アシストトルクtとの関係を設定した関係付けデータである。アシストマップは、操舵トルクtrが大きくなるにしたがって目標アシストトルクtが増加し、車速が低くなるにしたがって目標アシストトルクtが増加する特性を有している。尚、図4は、左方向の操舵時におけるアシストマップであって、右方向の操舵時におけるアシストマップは、左方向のものに対して操舵トルクtrと目標アシストトルクtの符号をそれぞれ反対つまり負にしたものとなる。続いて、正常時モータ制御部70は、ステップS73において、目標アシストトルクtを発生させるために必要な電流値である目標電流Iを計算する。目標電流Iは、目標アシストトルクtをトルク定数で除算することにより求められる。続いて、正常時モータ制御部70は、ステップS74において、目標電流Iから電流センサ31により検出されたモータ実電流Imを減算した偏差ΔIを算出し、この偏差ΔIを使ったPI制御比例積分制御により、モータ実電流Imが目標電流Iに追従するように目標指令電圧Vを計算する。目標指令電圧Vは、例えば、下記式により計算する。V=KpΔIKi∫ΔIdtここでKpは、PI制御における比例項の制御ゲイン、Kiは、PI制御における積分項の制御ゲインである。続いて、正常時モータ制御部70は、ステップS75において、目標指令電圧Vに応じたPWMPulseWidthModulation制御信号を制御切替部92に出力する。正常時モータ制御部70は、PWM制御信号を出力すると正常時モータ制御ルーチンを一旦終了する。そして、所定の周期で上述した処理を繰り返す。制御切替部92は、異常検出部91から出力される異常判定信号Ffailが0である場合に、正常時モータ制御部70の出力するPWM制御信号を、そのままスイッチ駆動回路30に出力し、異常検出部91から出力される異常判定信号Ffailが1である場合に、異常時モータ制御部80の出力する制御信号を、そのままスイッチ駆動回路30に出力する。スイッチ駆動回路30は、入力した制御信号を増幅してモータ駆動回路40に出力する。これにより、異常検出部91から出力される異常判定信号Ffailが0である場合には、目標指令電圧Vに応じたデューティ比のパルス信号列がPWM制御信号としてモータ駆動回路40に出力される。このPWM制御信号により、各スイッチング素子Q1H,Q2H,Q1L,Q2Lのデューティ比が制御され、モータ20の駆動電圧が目標指令電圧Vに調整される。こうして、モータ20には、操舵操作方向に回転する向きに目標電流Iが流れる。この結果、モータ20は、目標アシストトルクtに等しいトルクを出力し、運転者の操舵操作をアシストする。異常検出部91は、電流センサ31により検出されるモータ実電流Imと、正常時モータ制御部70で計算される目標電流Iとを入力し、モータ実電流Imと目標電流Iとが所定期間にわたって大きく相違する場合に電流センサ31が故障していると判定する。例えば、モータ実電流Imと目標電流Iとの偏差|Im-I|を計算し、この偏差が予め設定された基準値よりも大きくなる連続時間が、予め設定された基準時間を超えた場合に、電流センサ31が故障していると判定する。異常検出部91は、電流センサ31の故障を検出していない場合には、異常判定信号Ffailを0に設定し、電流センサ31の故障を検出した場合には、異常判定信号Ffailを1に設定する。異常検出部91は、設定した異常判定信号Ffailを、正常時モータ制御部70、異常時モータ制御部80、制御切替部92に出力する。正常時モータ制御部70は、異常判定信号Ffailが0である場合に、その作動を継続し、異常判定信号Ffailが1である場合に、その作動を停止する。また、異常時モータ制御部80は、異常判定信号Ffailが1である場合に、その作動を継続し、異常判定信号Ffailが0である場合に、その作動を停止する。異常時モータ制御部80は、電流センサ31が故障した場合に、応急的にモータ20の駆動制御を行うブロックである。異常時モータ制御部80は、モータ20を駆動するに当たって、モータ20を正回転させる場合には、スイッチ駆動回路30へ出力するスイッチ制御信号により、スイッチング素子Q2H,Q1Lをオフ状態に維持して、スイッチング素子Q1H,Q2Lをオン/オフさせオン状態とオフ状態とを繰り返し交互に切り替える、モータ20を逆回転させる場合には、スイッチング素子Q1H,Q2Lをオフ状態に維持して、スイッチング素子Q2H,Q1Lをオン/オフさせる。異常時モータ制御部80は、スイッチング素子Q1H,Q2Lあるいはスイッチング素子Q2H,Q1Lをオン/オフさせるときの1回のオン時間を操舵トルクtrに応じた時間に設定する。また、異常時モータ制御部80は、スイッチング素子Q1H,Q2Lあるいはスイッチング素子Q2H,Q1Lをオンさせるタイミングを、モータ20に流れる電流がゼロとなった時点に設定する。従って、異常時モータ制御部80は、スイッチング素子Q1H,Q2Lあるいはスイッチング素子Q2H,Q1Lをオンさせるタイミング電流=0と1回のオン時間を制御する。こうした制御を行うことで、モータ20に三角波状の電流が流れ、その平均電流を操舵トルクtrに応じた所望の値に調整することができる。以下、モータ20に流れる電流をモータ電流Iと呼ぶ。まず、電流センサ31が故障しているときに、モータ電流Iがゼロとなったことを検出する方法について説明する。スイッチング素子Q2H,Q1Lをオフ状態に維持して、スイッチング素子Q1H,Q2Lを同時にオンにした場合には、接続部A1の電位V1は、電源電圧Vbとほぼ等しくなりV1≒Vb、接続部A2の電位V2は、ほぼゼロV1≒0となる。逆に、スイッチング素子Q1H,Q2Lをオフ状態に維持して、スイッチング素子Q2H,Q1Lを同時にオンにした場合には、接続部A1の電位V1は、ほぼゼロV1≒0となり、接続部A2の電位V2は、電源電圧Vbとほぼ等しくなりV2≒Vbなる。また、全てのスイッチング素子Q1H,Q2L,Q2H,Q1Lを同時にオフにした場合には、モータ電流Iの方向によって電位V1,V2が決まる。つまり、図2の方向に電流が流れている場合には、スイッチング素子Q1Lの寄生ダイオードとスイッチング素子Q2Hの寄生ダイオードとを介して電流が流れていることになる。従って、寄生ダイオードでの電圧降下をVrとすると、電位V1、電位V2は次式にて表される。V1≒0-VrV2≒VbVr同様に、全てのスイッチング素子Q1H,Q2L,Q2H,Q1Lを同時にオフにした場合には、図2の-方向に電流が流れていれば、スイッチング素子Q2Lの寄生ダイオードとスイッチング素子Q1Hの寄生ダイオードとを介して電流が流れていることになる。従って、寄生ダイオードでの電圧降下をVrとすると、電位V1、電位V2は次式にて表される。V1≒VbVrV2≒0-Vrまた、全てのスイッチング素子Q1H,Q2L,Q2H,Q1Lをオフにした状態で、モータ電流Iがゼロとなる場合は、モータ20の端子間電圧Vm=V1-V2は、モータ20で発生している逆起電圧Eと同じになる。従って、全てのスイッチング素子Q1H,Q2L,Q2H,Q1Lをオフにした状態で、モータ20の端子間電圧Vmを電圧センサ32により検出すれば、検出したモータ電圧Vmに基づいて、モータ電流Iの流れている方向を特定することができる。つまり、電圧センサ32により検出されるモータ電圧Vm=V1-V2が、ほぼ-Vb2Vrとなる場合には、モータ電流Iの方向は方向であり、モータ電圧Vmが、ほぼVb2Vrとなる場合には、モータ電流Iの方向は-方向である。また、モータ電圧Vmが、それ以外の値となる場合には、モータ電流Iはゼロであると判定することができる。モータ電流Iの方向の判別式は、以下のように表される。Vm≒-Vb2Vr方向Vm≒Vb2Vr-方向-Vb2Vr<Vm<Vb2VrI=0この場合、寄生ダイオードの電圧降下Vrは、予め想定される一定値に設定しておけばよい。尚、通常のHブリッジ回路の制御においては、上アーム回路45Hと下アーム回路45Lとの短絡を防止するために、モータ20の通電方向を切り替えるとき、全てのスイッチング素子Q1H,Q2L,Q2H,Q1Lをオフにするデッドタイムが設けられるが、モータ20の端子間電圧Vmを検出するに当たっては、このデッドタイムとは別に、全てのスイッチング素子Q1H,Q2L,Q2H,Q1Lをオフする期間を設ける。異常時モータ制御部80は、こうした原理を利用して、モータ電流Iがゼロになっている状態か否かを判定し、モータ電流Iがゼロとなったタイミングを検出する。そして、モータ電流Iがゼロとなったことが検出される都度、その検出タイミングでスイッチング素子Q2H,Q1Lあるいはスイッチング素子Q1H,Q2Lをオンするためのオン指令信号を出力する。スイッチング素子Q2H,Q1Lあるいはスイッチング素子Q1H,Q2Lを1回にオンする時間は、操舵トルクtrの大きさ|tr|によって設定される。この1回にオンする時間をオン時間T0と呼ぶ。スイッチング素子Q2H,Q1Lあるいはスイッチング素子Q1H,Q2Lは、駆動信号によりオンされた後、オン時間T0が経過すると再びオフに戻される。このため、モータ電流Iの波形は、三角波状となる。異常時モータ制御部80は、このオン時間T0を操舵トルクtrに応じた時間に設定することで、操舵トルクtrに応じた電流をモータ20に流して、モータ20から適切な操舵アシストトルクを発生させる。次に、異常時モータ制御部80の実行する異常時モータ制御ルーチンについて説明する。図5は、異常時モータ制御ルーチンを表すフローチャートである。異常時モータ制御ルーチンは、異常検出部91から出力される異常判定信号Ffailが0から1に切り替わると起動する。異常時モータ制御ルーチンが起動すると、異常時モータ制御部80は、まずステップS11において、全てのスイッチング素子Q1H,Q2L,Q2H,Q1Lをオフにするオフ指令信号を出力する。これにより、モータ駆動回路40のスイッチング素子Q1H,Q2L,Q2H,Q1Lがオフになる。続いて、異常時モータ制御部80は、ステップS12において、電圧センサ32により検出されるモータ電圧Vmと電圧センサ33により検出される電源電圧Vbとを読み込む。続いて、異常時モータ制御部80は、ステップS13において、モータ電流Iがゼロになったか否かを判断する。上述したように、モータ電流Iの方向は、電圧センサ32により検出されるモータ電圧Vm=V1-V2から判別できる。この例では、電流の方向を判別する式に電源電圧Vbが含まれるため、電圧センサ33により検出される検出値を読み込んでいるが、電源電圧Vbを一定値としてみなせば、電源電圧Vbの読み込み処理は省略してもよい。異常時モータ制御部80は、モータ電流Iがゼロであれば、そのまま次のステップS14に処理を進めるが、モータ電流Iがゼロでない場合には、その処理をステップS12に戻して、モータ電流Iがゼロになるまで待つ。異常時モータ制御部80は、モータ電圧Vmに基づいて、上述した判別式でモータ電流Iがゼロとなる範囲に入っていることが検出されたとき-Vb2Vr<Vm<Vb2Vr、モータ電流Iの方向が方向から-方向に切り替わったことが検出されたとき、モータ電流Iの方向が-方向から方向に切り替わったことが検出されたときの何れにおいてもモータ電流Iがゼロになったと判定する。異常時モータ制御部80は、ステップS12~S13のループ処理を行っているときに、毎回、モータ電圧Vmにより判定されるモータ電流Iの方向を記憶する。そして、直前回のモータ電流Iの方向と今回検出したモータ電流Iの方向とを比較して、モータ電流Iの方向が変化した場合においても、モータ電流Iがゼロになったと判定する。これにより、モータ電圧Vmが判別式-Vb2Vr<Vm<Vb2Vrを満たさなくても、モータ電流Iの方向反転に基づいて、モータ電流Iがゼロとなるタイミングを確実に検出することができる。この場合、モータ電圧Vmは、モータ電流Iの方向に応じて符号正負が異なり、しかも、モータ電流Iがゼロでなければ絶対値が大きいため、異常時モータ制御部80は、モータ電流Iの方向反転を容易に検出することができる。尚、モータ電流Iの方向の反転検出を行わずに、モータ電圧Vmが判別式-Vb2Vr<Vm<Vb2Vrを満たしたときにのみ、モータ電流Iがゼロになったと判定するようにしてもよい。異常時モータ制御部80は、こうした処理を繰り返して、モータ電流Iがゼロになったと判定するとS13:Yes、その処理をステップS14に進め、操舵トルクセンサ21により検出される操舵トルクtrを読み込む。続いて、ステップS15において、操舵トルクtrに基づいて、スイッチング素子Q2H,Q1Lあるいはスイッチング素子Q1H,Q2Lの1回のオン時間T0を設定する。異常時モータ制御部80は、図6に示すオン時間設定マップを記憶しており、このオン時間設定マップを参照して、操舵トルクtrに応じたオン時間T0を設定する。オン時間設定マップは、操舵トルクtrの大きさ|tr|の増加にしたがってオン時間T0が増加する特性を有している。オン時間T0は、上限値T0maxが設定されており、操舵トルクtrの大きさ|tr|がtr0以上となる場合には、上限値T0maxに設定される。尚、オン時間T0の設定にあたっては、図6の例のような操舵トルクtrの大きさ|tr|に比例するオン時間T0を設定したマップに限らず、例えば、図7に示すように、複数の折れ点を有する折れ線特性のマップmp1や、多項式からなる曲線特性のマップmp2等を使用することができる。続いて、異常時モータ制御部80は、ステップS16において、オン時間T0がゼロでないか否かを判断し、オン時間T0がゼロの場合、つまり、操舵トルクtrの大きさ|tr|がゼロの場合には、その処理をステップS12に戻す。異常時モータ制御部80は、オン時間T0がゼロでない場合には、ステップS17において、操舵トルクtrの符号正負を判断し、操舵トルクtrが正の値である場合、つまり、左方向の操舵トルクtrが検出されている場合には、ステップS18において、スイッチング素子Q1H,Q2Lをオンするためのオン指令信号を出力する。また、操舵トルクtrが負の値である場合、つまり、右方向の操舵トルクtrが検出されている場合には、ステップS19において、スイッチング素子Q2H,Q1Lをオンするためのオン指令信号を出力する。これにより、モータ駆動回路40のスイッチング素子Q1H,Q2Lあるいはスイッチング素子Q2H,Q1Lがオンして、モータ20には電源装置200から供給される電流が流れ始める。異常時モータ制御部80は、ステップS18あるいはステップS19においてオン指令信号を出力すると、ステップS20において、オン指令信号出力からの経過時間を計測し、経過時間がオン時間T0に到達するまで待機する。そして、異常時モータ制御部80は、経過時間がオン時間T0に到達すると、その処理をステップS11に戻す。従って、全てのスイッチング素子Q1H,Q2L,Q2H,Q1Lがオフにされて電源装置200からモータ20への通電が遮断される。これにより、モータ電流Iが減少に転じる。そして、モータ電流Iがゼロに達するとS13:Yes、再び、操舵トルクtrの大きさ|tr|に応じたオン時間T0だけモータ20が通電される。このような処理が繰り返されることで、モータ電流Iがゼロになったことが検出される都度、その検出タイミングで、スイッチング素子Q2H,Q1Lあるいはスイッチング素子Q1H,Q2Lがオンされる。これにより、モータ電流Iは、図8に示すような三角波状となり、その平均電流が、操舵トルクtrの大きさ|tr|に応じたものとなる。このように、異常時モータ制御部80は、スイッチング素子Q2H,Q1Lあるいはスイッチング素子Q1H,Q2Lの1回のオン時間を操舵トルクtrの大きさ|tr|に応じて調整することにより、モータ20に流れる平均電流を制御する。これにより、モータ20は、操舵トルクtrに応じた操舵アシストトルクを発生する。尚、異常時モータ制御ルーチンが起動した直後においては、ステップS13でモータ電流Iがゼロになるまで待機するときに、モータ電流Iの絶対値が減少する方向にモータ20に通電するようにしてもよい。つまり、モータ電流Iが方向に流れている場合には、スイッチング素子Q2H,Q1Lをオンにして方向に流れる電流を積極的に減少させ、モータ電流Iが-方向に流れている場合には、スイッチング素子Q1H,Q2Lをオンにして-方向に流れる電流を積極的に減少させて、待機時間を短くするようにしてもよい。図8は、異常時モータ制御ルーチンを実行したときのスイッチ指令信号とモータ電圧Vmとモータ電流Iの変化を表したグラフである。このグラフは、モータ20を正方向に回転させる場合の例である。異常時モータ制御部80は、モータ電流Iがゼロになったことが検出されるまで待機し、時刻t1においてモータ電流Iがゼロになったことを検出すると、スイッチング素子Q1H,Q2Lをオフからオンに切り替える。これにより、モータ電流Iが方向に流れ始める。電流が流れ始めるときの増加度合は、Vb-ωφ/Lにて近似することができる。ここで、ωはモータ20の回転速度、φはモータ20の逆起電圧定数、Lはモータインダクタンスである。ωφは、モータ20で発生する逆起電圧を表す。スイッチング素子Q1H,Q2Lがオンしてからオン時間T0が経過するとスイッチング素子Q1H,Q2Lがオフされる時刻t2。これにより、モータ電流Iは、減少に転じ、やがてゼロになる、または、その方向が-方向に切り替わる時刻t3。異常時モータ制御部80は、モータ電流Iがゼロになったことを検出したタイミングで時刻t4、再び、操舵トルクtrの大きさ|tr|に応じたオン時間T0だけモータ20に通電する。こうして、モータ20には、三角波状の電流が流れる。図中において、T1は、時刻t2から時刻t3までの期間を示している。オン時間T0は、任意に設定することができるが、期間T1は、モータ20の回路方程式にて決まる。また、モータ電流Iの平均値平均電流Iavgと呼ぶは、1回の通電時おけるピーク値Ipの約半分となる。従って、オン時間T0を調整することでモータ20に流れる平均電流Iavgを調整することができる。そして、オン時間T0を操舵トルクtrの大きさ|tr|が大きくなるほど長くすることで、操舵トルクtrの大きさ|tr|に比例した平均電流Iavgをモータ20に流すことができる。尚、オン時間T0は、例えば、数ミリ秒程度に設定する。正常時モータ制御部70のPWMキャリア周波数が例えば20kHzであることを考えれば、オン時間T0は、PWM制御信号の1回のオン時間に比べて遙かに長いものである。このようにモータ20に断続的に電流を流した場合、操舵ハンドル11の動きが振動的になると懸念されるが、1秒間に数回以上の周期で通電すれば、モータ20や操舵ハンドル11の慣性により振動は滑らかになる。従って、違和感の少ない操舵アシストを行うことができる。ここで、異常時モータ制御部80にてモータ20を駆動制御した場合の操舵操作に対する操舵アシストの追従性について、つまり、速い速度で操舵操作したときの操舵アシスト性能について、従来装置と対比して説明する。まず、従来装置から説明する。特許文献1に提案されている従来装置においては、電流センサの故障時においてオープンループ制御を行っている。従って、目標電流Irefが与えられたとき、それに対する出力電圧Vは、以下の式1により計算される。しかし、実際には、逆起電圧が含まれた次式2のような微分方程式にしたがって電流Iが流れる従って、目標電流Irefと実電流Iとの比は、次式3のように計算される。尚、電流の変化は無視できる程度であるため、dI/dt=0としている。この式によれば、モータ20の回転速度ωがゼロω=0であれば、目標電流Irefと実電流Iとは同一値となるが、回転速度ωが上昇すると実電流Iが減少し、逆起電圧ωφが出力電圧Vを超えるとモータ20を制動するブレーキが発生することがわかる。このオープンループ制御による特性を図9に示す。図9は、回転速度ωと実電流Iとの関係を表している。実電流Iは、次式4のように表される。ここで、Imaxは、モータ駆動回路40で流すことが許容される最大の電流値を表し、スイッチング素子Q1H,Q2L,Q2H,Q1Lの仕様にて決定される。以下、Imaxを電流最大値Imaxと呼ぶ。電流最大値Imaxは、例えば、50アンペアに設定される。この一次関数の傾きをΔとすると、Δは次式5にて表される。尚、Vmaxは、電流最大値Imaxにモータ20の内部抵抗Rを乗じた値Imax×Rを表す。以下、Vmaxを電圧最大値Vmaxと呼ぶ。電圧最大値Vmaxは、例えば、モータ20の内部抵抗Rを0.1オームとすると、5ボルト50A×01Ωに設定される。尚、逆起電圧はモータ20の回転速度から推定できるが、ブラシ付モータは、通常、回転角センサや回転速度センサを備えていない。従って、電流センサ故障時におけるオープンループ制御においては、逆起電圧を推定することができない。次に、本実施形態の異常時モータ制御部80により制御される特性ω-Iについて説明する。上述したモータの電圧方程式2を解くと、モータ電流Iは次式6にて表される。ここでは、計算を簡単にするために、指数関数はt=0での傾きで近似している。上述したように、モータ20を断続的に通電した場合には、モータ電流Iの波形は、図8に示すように三角波状になる。従って、三角波のピーク電流Ipの半分程度が平均電流Iavgとなる。平均電流Iavgは、上記の式6にオン時間T0を代入することで、次式7にように表される。この式7から分かるように、オン時間T0が長いほど平均電流Iavgは増加する。しかし、オン時間T0の最大値は、モータ20が急に停止して逆起電圧がゼロになっても過電流にならないという条件を満足する必要がある。つまり、ピーク電流Ipがモータ駆動回路40で許容される電流最大値Imaxを超えないようにする必要がある。従って、オン時間T0の上限値T0maxは、次式8にて表される。従って、平均電流Iavgは、次式9にて表すことができる。図10は、この平均電流Iavgのモータ回転速度ωに対する特性を表す。図中においては、従来装置の特性と比較するために、従来装置の特性を破線にて示し、本実施形態の特性を実線にて示している。ここで、2つの一次関数の傾きΔを比較する。本実施形態における一次関数の傾きは、次式10にて表される。従来装置の特性における傾きΔ=-φImax/Vmaxと、本実施形態の特性における傾きΔ=-φImax/2Vbとを比較すると、本実施形態のほうが計算式の分母が大きくなるため、傾きΔは小さくなる。通常の電動パワーステアリング装置においては、電圧最大値Vmaxは電源電圧Vbに比べて小さい。例えば、Vmax=5ボルト、Vb=12Vとした場合には、本実施形態の特性における傾きΔは、従来装置の特性における傾きの約1/5となる。従って、本実施形態によれば、モータ回転速度ωが大きくなっても、出力電流の減少幅を小さくすることができる。以上説明した本実施形態の電動パワーステアリング装置1によれば、電流センサ31が故障した場合には、モータ20を駆動制御するブロックが正常時モータ制御部70から異常時モータ制御部80に切り替えられる。異常時モータ制御部80は、モータ駆動回路40の全てのスイッチング素子Q1H,Q2L,Q2H,Q1Lをオフ状態にしてモータ電圧Vmを検出し、このモータ電圧Vmに基づいて、モータ電流Iがゼロになる状態を検出する。異常時モータ制御部80は、モータ電流Iがゼロになったことを検出する都度、その検出タイミングで、操舵トルクtrに応じて設定されるオン時間T0だけスイッチング素子Q1H,Q2L正回転時あるいはスイッチング素子Q2H,Q1L逆回転時をオン状態にする。これにより、モータ20には三角波状の電流が断続的に流れる。この場合、オン時間T0が操舵トルク|tr|の増加に応じて増加するように設定されているため、モータ20に流れる平均電流Iavgも、操舵トルク|tr|の増加に応じて増加する。また、モータ20に流れる電流が本来必要な電流値に満たなくて操舵アシスト不足が生じる場合でも、それにより操舵トルクが増加するため、結果的にオン時間T0が増加する。しかも、電流特性図10から分かるように、モータ回転速度ωの増加した場合でも、それに伴う出力電流の減少度合が小さい。この結果、本実施形態の電動パワーステアリング装置1によれば、電流センサ31が故障した場合であっても、操舵トルクtrに応じた所望の操舵アシストが得られるだけでなく、速い操舵操作が行われた場合でも操舵アシストの低下を抑制することができる。つまり、操舵操作に対する操舵アシストの追従性を向上することができる。これにより、操舵フィーリングの低下を抑制することができる。<変形例1>上述した実施形態においては、モータ20に微小な電流を流す場合、オン時間T0が非常に短くなり、これに伴ってステアリングシステムモータ20およびステアリング機構10で発生する振動の周期も非常に短くなる。振動の周期が短くなると、この振動に車両の他の部品が共振するなどの不都合を生じることが考えられる。そこで、この変形例1においては、オン時間T0をあまり短くしなくても、モータ20に微小な電流を流すことができるようにして、上記の不都合を解消する。この変形例1においては、モータ20に方向の電流と-方向の電流を交互に流すようにし、方向に電流を流す時間と、-方向に電流を流す時間の比率を調整することにより、モータ20に流れる平均電流Iavgを制御する。この変形例1では、モータ電流Iの方向を検出する期間だけ、瞬時的に4つのスイッチング素子Q1H,Q2L,Q2H,Q1L全てをオフにするが、基本的には、スイッチング素子Q1H,Q2Lあるいはスイッチング素子Q2H,Q1Lのどちらかがオン状態になっているものである。この変形例1においては、異常時モータ制御部80の処理が上述した実施形態と相違するのみで、他の構成は実施形態と同一である。以下、異常時モータ制御部80の処理について説明する。図11は、変形例1としての異常時モータ制御部80が実施する異常時モータ制御ルーチンを表すフローチャートである。変形例1としての異常時モータ制御ルーチンが起動すると、異常時モータ制御部80は、まずステップS31において、操舵トルクセンサ21により検出される操舵トルクtrを読み込む。続いて、ステップS32において、操舵トルクtrに基づいて、モータ20が正回転する方向に電流を流す時間を調整するための正方向オン時間T01と、モータ20が逆回転する方向に電流を流す時間を調整するための逆方向オン時間T02とを設定する。異常時モータ制御部80は、図12に示すようなオン時間設定マップを記憶しており、このオン時間設定マップを参照して、正方向オン時間T01と逆方向オン時間T02とを設定する。オン時間設定マップは、操舵トルクtrが正の場合には、正方向オン時間T01が逆方向オン時間T02に比べて長くなり、操舵トルクtrが負の場合には、逆方向オン時間T02が正方向オン時間T01に比べて長くなる特性を有している。操舵トルクtrがゼロの場合には、正方向オン時間T01と逆方向オン時間T02とは同一に設定される。また、正方向オン時間T01は、操舵トルクtrが負の所定値-tr1より大きな範囲において、操舵トルクtrの増加にしたがって長くなる値に設定され、操舵トルクtrが負の所定値-tr1以下の範囲においてゼロに設定される。逆方向オン時間T02は、操舵トルクtrが正の所定値tr1より小さな範囲において、操舵トルクtrの減少マイナス方向の増加にしたがって長くなる値に設定され、操舵トルクtrが正の所定値tr1以上の範囲においてゼロに設定される。また、正方向オン時間T01および逆方向オン時間T02は、ともに上限値T0maxが設定されている。続いて、異常時モータ制御部80は、ステップS33において、スイッチング素子Q1H,Q2Lをオンするためのオン指令信号、および、スイッチング素子Q2H,Q1Lをオフするためのオフ指令信号を出力する。これにより、モータ20には電源装置200から供給された電流が方向に流れ始める。尚、本ルーチンの起動時には、全てのスイッチング素子Q1H,Q2L,Q2H,Q1Lはオフされている。続いて、異常時モータ制御部80は、ステップS34において、計時を開始して、スイッチング素子Q1H,Q2L,Q2H,Q1Lに指令信号を出力してからの経過時間が正方向オン時間T01に到達するまで待機する。この間、モータ20には、方向に流れる電流が増加していく。そして、正方向オン時間T01の経過が検出されるとS34:Yes、ステップS35において、スイッチング素子Q1H,Q2Lをオフするためのオフ指令信号、および、スイッチング素子Q2H,Q1Lをオンするためのオン指令信号を出力する。つまり、今までとは反対方向の電流をモータ20に流すように、スイッチング素子Q1H,Q2L,Q2H,Q1Lの状態を反転させる指令信号を出力する。これにより、方向に増加していたモータ電流Iは、減少に転じる。続いて、異常時モータ制御部80は、ステップS50において、電流方向判定処理を行う。図13は、この電流方向判定処理を表すサブルーチンである。電流方向判定処理が開始されると、まず、モータ電流Iの流れる方向の検出タイミングであるか否かを判断する。この変形例1においては、モータ電流Iの流れる方向が反転することを検出して、モータ電流Iがゼロであると推定する。そして、その検出時点から、正方向オン時間T01あるいは逆方向オン時間T02だけ経過したタイミングでモータ20への通電方向を切り替えるようにして、連続した三角波状の電流をモータ20に流す。ところが、スイッチング素子Q1H,Q2Lあるいはスイッチング素子Q2H,Q1Lをオンしている期間においては、電圧センサ32により検出されるモータ電圧Vmからはモータ電流Iの流れる方向を検出することができない。そこで、この異常時モータ制御ルーチンにおいては、定期的に、4つのスイッチング素子Q1H,Q2L,Q2H,Q1Lを瞬時的にオフ状態にして、その時のモータ電圧Vmからモータ電流Iの方向を検出する。ステップS51の判断は、このように定期的に行うモータ電流Iの方向を検出するタイミングであるか否かの判断である。異常時モータ制御部80は、ステップS51において、モータ電流Iの方向を検出するタイミングとなるまで待つ。この検出タイミングの周期は、予め定められている。従って、検出タイミングの到来は、タイマの経過時間から判断することができる。モータ電流Iの方向検出タイミングとなるとS51:Yes、異常時モータ制御部80は、ステップS52において、全てのスイッチング素子Q1H,Q2L,Q2H,Q1Lをオフにするオフ指令信号を出力する。これにより、モータ駆動回路40のスイッチング素子Q1H,Q2L,Q2H,Q1Lがオフになる。続いて、異常時モータ制御部80は、ステップS53において、電圧センサ32により検出されるモータ電圧Vmと電圧センサ33により検出される電源電圧Vbとを読み込んだ後、本サブルーチンを抜けてメインルーチンのステップS36にその処理を進める。尚、電源電圧Vbを一定値としてみなせば、電源電圧Vbの読み込み処理は省略してもよい。続いて、異常時モータ制御部80は、ステップS36において、電圧センサ32により検出されるモータ電圧Vm=V1-V2に基づいて、モータ電流Iの方向が反転したか否かを判断する。つまり、直前回に検出したモータ電圧Vmから得られるモータ電流Iの方向と、今回検出したモータ電圧Vmから得られるモータ電流Iの方向とが相違するか否かを判断する。モータ電流Iの方向が反転していない場合S36:No、異常時モータ制御部80は、その処理をステップS35に戻す。従って、一時的にオフされていたスイッチング素子Q2H,Q1Lは元の状態に戻される。尚、異常時モータ制御部80は、ステップS35~S36のループ処理を行っているときに、毎回、モータ電圧Vmにより判定されるモータ電流Iの方向を記憶する。そして、ステップS36においては、直前回のモータ電流Iの方向と今回検出したモータ電流Iの方向とを比較して、モータ電流Iの方向が反転したか否かを判断する。これにより、所定の周期でスイッチング素子Q1H,Q2L,Q2H,Q1Lが一時的にオフされ、その時のモータ電圧Vmからモータ電流Iの方向が判定される。異常時モータ制御部80は、こうした処理を繰り返して、モータ電流Iの方向が反転したことを検出するとS36:Yes、続くステップS37において、スイッチング素子Q2H,Q1Lをオンするためのオン指令信号を出力して、4つのスイッチング素子Q1H,Q2L,Q2H,Q1Lを元の状態に戻すスイッチング素子Q1H,Q2Lは、そのままオフ状態。続いて、異常時モータ制御部80は、ステップS38において、計時を開始して、モータ電流Iの方向の反転が検出されてからの経過時間が逆方向オン時間T02に到達するまで待機する。この間、モータ20には、-方向に流れる電流が増加していく。そして、逆方向オン時間T02の経過が検出されるとS38:Yes、ステップS39において、スイッチング素子Q1H,Q2Lをオンするためのオン指令信号、および、スイッチング素子Q2H,Q1Lをオフするためのオフ指令信号を出力する。つまり、今までとは反対方向の電流をモータ20に流すように、スイッチング素子Q1H,Q2L,Q2H,Q1Lの状態を反転させる指令信号を出力する。これにより、-方向に増加していたモータ電流Iは、減少に転じる。続いて、異常時モータ制御部80は、ステップS50において、上述した電流方向判定処理を行う。つまり、所定の周期で全てのスイッチング素子Q1H,Q2L,Q2H,Q1Lを一時的にオフ状態にしてモータ電圧Vmと電源電圧Vbとを読み込み、そのときのモータ電圧Vm=V1-V2に基づいて、モータ電流Iの方向を判定する。異常時モータ制御部80は、ステップS40において、ステップS36と同様に、モータ電流Iの方向が反転したか否かを判断し、モータ電流Iの方向が反転するまで、こうした処理を繰り返す。そして、モータ電流Iの方向が反転したことを検出するとS40:Yes、その処理をステップS31に戻す。図14は、変形例1の異常時モータ制御ルーチンを実行したときのスイッチ指令信号とモータ電圧Vmとモータ電流Iの変化を表したグラフである。モータ電流Iは、三角波状に変化する。この三角波の1周期分が、上述した異常時モータ制御ルーチンのステップS31からステップS40までの処理の1回分に相当する。このグラフは、操舵トルクtrが正の値となる場合、つまり、モータ20に方向の電流を流す場合の例を示している。従って、正回転オン時間T01は、逆回転オン時間T02に比べて長く設定されている。例えば、時刻t1においてモータ電流Iの方向の反転が検出されると、その検出時点から正回転オン時間T01経過するまでスイッチング素子Q1H,Q2Lのオン状態が継続される。図15は、図14における時刻t1付近の塗りつぶした部分を拡大したものである。これにより、モータ電流Iが増加していく。そして、正回転オン時間T01経過した時刻t2においてスイッチング素子Q1H,Q2L,Q2H,Q1Lの状態が反転される。つまり、スイッチング素子Q2H,Q1Lがオン状態となり、スイッチング素子Q1H,Q2Lがオフ状態となる。正回転オン時間T01は、操舵トルクtrに応じた値に設定されているため、操舵トルクtrが大きいほど、スイッチング素子Q1H,Q2L,Q2H,Q1Lの状態が反転される時点のモータ電流Iのピーク値が大きくなる。モータ電流Iは、時刻t2から減少に転じる。異常時モータ制御部80は、所定の周期でモータ電流Iの方向検出を開始する。この場合、モータ電流Iの方向検出タイミングの都度、4つのスイッチング素子Q1H,Q2L,Q2H,Q1Lが一時的にオフ状態に設定される。この一時的なオフ状態は、短いため、図14においては、時間幅を持たない直線にて表されている。モータ電流Iは、減少していき、時刻t3において、その方向が-方向に反転する。時刻t4において、モータ電流Iの反転が検出されると、その検出時点から逆回転オン時間T02経過するまでスイッチング素子Q2H,Q1Lのオン状態が継続される。これにより、-方向のモータ電流Iが増加していく。そして、逆回転オン時間T02経過した時刻t5においてスイッチング素子Q1H,Q2L,Q2H,Q1Lの状態が反転される。つまり、スイッチング素子Q1H,Q2Lがオン状態、スイッチング素子Q2H,Q1Lがオフ状態となる。これにより、モータ電流Iは増加に転じる。そして、所定の周期のモータ電流Iの方向検出が開始され、時刻t6においてモータ電流Iの方向が反転すると、その反転が検出された時刻t7から正回転オン時間T01経過するまでスイッチング素子Q1H,Q2Lがオン状態に維持される。図中において、T11およびT12は、スイッチング素子Q1H,Q2L,Q2H,Q1Lの状態が反転されてからモータ電流Iがゼロになるまでの期間を表しており、モータ20の回路方程式にて決まる。従って、正回転オン時間T01と逆回転オン時間T02とに応じてモータ20に流れる平均電流Iavgが設定される。そして、正回転オン時間T01と逆回転オン時間T02とを操舵トルクtrに応じた長さに設定することで、操舵トルクに応じた平均電流Iavgをモータ20に流すことができる。以上説明した変形例1によれば、モータ20に方向の電流と-方向の電流を交互に流すようにし、方向に電流を流す正回転オン時間T01と、-方向に電流を流す逆回転オン時間T02の比率を調整することにより平均電流Iavgを制御する。従って、操舵トルクの大きさが小さい場合でも、三角波状のモータ電流Iの周期を長くすることができ、この結果、ステアリングシステムに発生する振動の周期を長く設定することができる。これにより、ステアリングシステムの振動に車両の他の部品が共振するという不具合を抑制することができる。<変形例2>上述した実施形態によれば操舵操作に対する操舵アシストの追従性を向上させることができるが、それでも、モータ回転速度が上昇するにつれて必要な操舵トルクも増加するため、操舵操作に引っ掛かりを感じることがある。そこで、変形例2においては、モータ回転速度ωを推定し、モータ回転速度ωの大きさ|ω|が高い場合に、積極的にオン時間T0を増加させて、操舵操作の引っ掛かり感を低減する。この変形例2においては、異常時モータ制御部80の処理が上述した実施形態と相違するのみで、他の構成は実施形態と同一である。図16は、変形例2としての異常時モータ制御部80が実施する異常時モータ制御ルーチンの変形部分を表すフローチャートである。この変形例2においては、実施形態の異常時モータ制御ルーチン図5のステップS16とステップS17との間に、ステップS21~ステップS25の処理を加えたものである。以下、この変形部分の異常時モータ制御部80の処理について説明する。異常時モータ制御部80は、モータ電流Iがゼロになったことを検出するとS13:Yes、ステップS14からステップS16の処理を行う。そして、ステップS16において、オン時間T0がゼロでないと判断した場合には、ステップS21において、モータ回転速度ωを計算する。このステップS21が行われるタイミングは、モータ電流Iがゼロであると判断されたときである。従って、現時点のモータ電圧Vm=V1-V2は、モータ20の逆起電圧に等しい。そこで、ステップS21においては、モータ電圧Vmを逆起電圧定数φで除算することでモータ回転速度ωを計算する。続いて、異常時モータ制御部80は、ステップS22において、モータ回転速度ωの大きさ|ω|に応じた補正係数Kωを計算する。異常時モータ制御部80は、図17に示すような補正係数設定マップを記憶している。この補正係数設定マップは、モータ回転速度ωの大きさ|ω|が大きくなるほど補正係数Kωが増加する特性を有している。異常時モータ制御部80は、この補正係数設定マップを参照して、補正係数Kωを計算する。続いて、異常時モータ制御部80は、ステップS23において、ステップS15で設定したオン時間T0に補正係数Kωを乗じた値を、新たなオン時間T0に設定するT0=T0×Kω。続いて、ステップS24において、補正されたオン時間T0が上限値T0maxを超えているか否かを判断し、オン時間T0が上限値T0maxを超えている場合S24:Yesには、ステップS25において、オン時間T0を上限値T0maxに設定するT0=T0max。一方、オン時間T0が上限値T0maxを超えていない場合S24:Noには、ステップS25の処理を飛ばす。異常時モータ制御部80は、こうしてオン時間T0を設定すると、上述したステップS17からの処理を行う。以上説明した変形例2によれば、モータ回転速度ωを推定し、その大きさ|ω|が高くなるほどオン時間T0が増加するように補正するため、操舵操作の引っ掛かり感を低減することができる。尚、モータ20の端子間電圧を検出する場合、その検出回路の構成によっては、全てのスイッチング素子Q1H,Q2L,Q2H,Q1Lをオフ状態にしているときに、モータ20の通電端子20a,20bの電圧が不安定になったり、片側の通電端子20a20bの電圧が負電圧になったりする場合が考えられる。そうした場合には、期間T1およびその後の逆起電圧測定時において、スイッチング素子Q1H,Q2L,Q2H,Q1Lの何れか1つをオン状態にして、残り3つをオフ状態にしておくと良い。例えば、正回転時方向に電流を流す場合にはスイッチング素子Q2Hまたはスイッチング素子Q1Lをオン状態に、逆回転時-方向に電流を流す場合にはスイッチング素子Q1Hまたはスイッチング素子Q2Lをオン状態にしておくと良い。<変形例3>上述した実施形態においては、オン時間T0のあいだオン期間T0と呼ぶ、スイッチング素子Q1H,Q2Lあるいはスイッチング素子Q2H,Q1Lを連続的にオン状態に維持するが、モータ駆動回路40の構成によっては、上アーム回路45Hのスイッチング素子Q1Hあるいはスイッチング素子Q2Hをオン状態に長時間維持させることができない場合がある。そうした場合には、異常時モータ制御部80は、図18に示すように、1回のオン期間T0中に、適切な周期でオフ状態に切り替えるとともに、他方のスイッチング素子をオン状態に切り替えるようにするとよい。図18は、モータ20を正回転方向の駆動するときの例を表している。この例では、異常時モータ制御部80は、スイッチング素子Q1H,Q2Lをオン状態にするオン期間T0中に、そのスイッチング素子Q1H,Q2Lが一時的にオフ状態となる期間を周期的に設け、このオフ状態となる期間に他方のスイッチング素子Q2H,Q1Lをオン状態にする。尚、モータ20の逆回転方向の駆動時においては、スイッチ指令信号の出力対象となるスイッチング素子が逆になる。この場合、異常時モータ制御部80は、異常時モータ制御ルーチンでステップS20においてオン時間T0の経過をカウントする場合、オフ状態となる時間を経過時間に加算しないようにしてもよいしモード1と呼ぶ、オフ状態となる時間を経過時間から減算するようにしてもよいモード2と呼ぶ。図18の下段のグラフは、モード1,2における経過時間のカウント値の推移を表している。そして、カウント値がオン時間T0に達したときに、異常時モータ制御部80は、ステップS20において、Yesと判断する。尚、上述した変形例3においては、一方のスイッチング素子Q1H,Q2Lあるいはスイッチング素子Q2H,Q1Lをオン状態にするオン期間T0中に周期的にオフ状態を組み込み、そのオフ状態となる期間中に他方のスイッチング素子Q2H,Q1Lあるいはスイッチング素子Q1H,Q2Lをオン状態にするが、他方のスイッチング素子Q2H,Q1Lあるいはスイッチング素子Q1H,Q2Lに関しては、必ずしもオン状態にする必要はなく、オフ状態が維持されるようにしてもよい。以上説明した変形例3によれば、モータ駆動回路40の設計制約が少なくなる。従って、種々のモータ駆動回路を採用することができるようになる。<変形例4>上述した実施形態においては、オン時間T0の設定にあたっては、図6あるいは図7に示すオン時間設定マップを使用しているが、オン時間T0を操舵トルクtrの大きさ|tr|だけでなく、車速に応じて可変するようにしてもよい。例えば、図19に示すように、車速を高車速と低車速とに分け、高車速時には低車速時に比べてオン時間T0が短くなるように設定しても良い。また、車速に応じたオン時間T0特性の切替は、2段階に限らず3段階以上にしてもよい。この場合、異常時モータ制御部80は、異常時モータ制御ルーチンのステップS14において、操舵トルクtrの読み込み処理に加えて、車速センサ22により検出される車速vxの読み込み処理を行うようにするとよい。そして、ステップS15においては、車速vxに応じたオン時間設定マップを使って、車速vxと操舵トルク|tr|とに基づいたオン時間T0を設定するようにすればよい。以上説明した変形例4によれば、高速走行においては操舵操作が軽くなりすぎない。このため、操舵フィーリングが向上する。<変形例5>操舵ハンドル11をストロークエンドまで回すと、ストッパ18とラックハウジング16の端部との当接によりラックバー14の左右動ストロークが機械的に規制される。この状態をストッパ当たりと呼ぶ。操舵ハンドル11を速く回して操舵位置がストロークエンドに達すると、ストッパ当たりにより、モータ20の回転が急激に停止状態となるためモータ20の逆起電力が急激に消滅し、その影響でモータ20に流れる電流が急増して電流サージを発生することがある。この電流サージから回路を保護するためにオン時間T0の上限値T0maxが設定されている。このため、上限値T0maxが最大アシスト量の制約となっている。そこで、変形例5においては、操舵位置がストロークエンド付近であるかどうかを判断し、操舵位置がストロークエンド付近である場合にのみ、上限値T0maxを低下させることにより、回路保護とアシスト量の確保とを両立させる。この変形例5においても、異常時モータ制御部80の処理が上述した実施形態と相違するのみで、他の構成は実施形態と同一である。図20は、変形例5としての異常時モータ制御部80が実施する異常時モータ制御ルーチンの変形部分を表すフローチャートである。この変形例5においては、実施形態の異常時モータ制御ルーチン図5のステップS16とステップS17との間に、ステップS61~ステップS64の処理を加えたものである。以下、この変形部分の異常時モータ制御部80の処理について説明する。異常時モータ制御部80は、ステップS16において、オン時間T0がゼロでないと判断した場合には、ステップS61において、操舵角θを計算する。例えば、左右の後輪の車輪速を表す情報を取得し、この車輪速に基づいて、次式11により操舵角θを計算により推定する。ここで、図21に示すように、V1は左後輪RW1の回転速度、V2は右後輪RW2の回転速度、Gはモータ20から前輪FW1,FW2までのギヤ比、aは左右後輪RW1,RW2のトレッド、bはホイールベースを表す。続いて、異常時モータ制御部80は、ステップS62において、操舵角θの大きさ|θ|に応じたオン時間T0の上限値T0maxを計算する。異常時モータ制御部80は、図22に示すようなオン時間上限値設定マップを記憶している。このオン時間上限値設定マップは、操舵角θの大きさ|θ|が設定角度θ1より大きくなると、|θ|の増加にしたがって上限値T0maxが減少し、|θ|がストロークエンド近傍の設定角度θ2>θ1より大きくなる範囲では上限値T0maxが最小となる特性を有している。つまり、ストロークエンド付近の上限値T0maxが、ストロークエンドから離れた操舵角範囲の上限値T0maxよりも小さくなる特性を有している。続いて、異常時モータ制御部80は、ステップS63において、ステップS15で設定したオン時間T0が上限値T0maxを超えているか否かを判断し、オン時間T0が上限値T0maxを超えている場合S63:Yesには、ステップS64において、オン時間T0を上限値T0maxに設定するT0=T0max。一方、オン時間T0が上限値T0maxを超えていない場合S63:Noには、ステップS64の処理を飛ばす。異常時モータ制御部80は、こうしてオン時間T0を設定すると、上述したステップS17からの処理を行う。以上説明した変形例5によれば、操舵角θを推定し、その大きさ|θ|に基づいて、操舵位置がストロークエンド近傍となる場合に、オン時間T0の上限値T0maxを小さくする。これにより、ストッパ当たりが発生する前に、モータ20に流れる平均電流Iavgが低く抑えられるため、ストッパ当たりが発生しても電流サージを抑制することができる。また、ストッパ当たりが発生しない状況においては、モータ20の電流制限が少なくなる。この結果、回路保護と十分な操作アシスト量の確保とを両立させることができる。尚、ステアリング機構10に操舵角θを検出できる回転角センサを備えている構成であれば、その回転角センサを使って操舵角θを検出すればよい。以上、本実施形態および変形例の電動パワーステアリング装置1について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の目的を逸脱しない限りにおいて種々の変更が可能である。例えば、本実施形態では、モータ駆動回路Hブリッジ回路40に使用するスイッチング素子Q1H,Q2L,Q2H,Q1LとしてMOS―FETを用いているが、これに限るものではなく、他のスイッチング半導体素子を用いることも可能である。また、本実施形態においては、モータ20の端子間電圧Vmを直接検出しているが、通電端子20aの電位V1を検出する電圧センサと、通電端子20bの電位V2を検出する電圧センサとを備え、両電圧センサにより検出された電位差V1-V2を計算して、端子間電圧Vmを検出する構成であってもよい。また、本実施形態では、アシストマップ、オン時間設定マップ、補正係数設定マップ、オン時間上限値設定マップを用いて、目標アシストトルクt、オン時間T0、補正係数Kω、上限値T0maxを設定しているが、こうしたマップに代えて関数等を使った計算式を用いるようにしてもよい。また、本実施形態においては、モータ20の発生するトルクをステアリングシャフト12に付与するコラムアシスト式の電動パワーステアリング装置1について説明したが、モータの発生するトルクをラックバー14に付与するラックアシスト式の電動パワーステアリング装置であってもよい。また、上述した変形例1~5を任意に組み合わせるようにしてもよい。"