上アームと下アームにそれぞれスイッチング素子を有する上下一対のアームが複数組設けられ、PWMPulseWidthModulation信号による各スイッチング素子のONOFF動作に基づいてモータを駆動するインバータ回路と、前記モータからインバータ回路を介して流れる電流を検出するためのシャント抵抗と、前記シャント抵抗に流れる電流を検出する監視用の第1の電流検出回路と、前記シャント抵抗に流れる電流を検出する制御用の第2の電流検出回路と、前記第2の電流検出回路の出力から得られる電流値および前記モータに流す電流の目標値に基づいて、前記PWM信号を生成する制御手段と、を備え、前記制御手段は、前記インバータ回路が回生状態にある場合において、前記第1の電流検出回路の出力に基づいて算出した監視用電流値に対し、前記シャント抵抗に流れるドリフト電流を補償するための第1のドリフト補償量、および、前記第2の電流検出回路の出力に基づいて算出した制御用電流値に対し、前記シャント抵抗に流れるドリフト電流を補償するための第2のドリフト補償量をそれぞれ演算し、前記シャント抵抗にドリフト電流が流れたことを前記第1の電流検出回路により検出したときは、前記第1のドリフト補償量を補正し、補正後の第1のドリフト補償量を用いて監視用電流値を算出するとともに、補正前の第2のドリフト補償量を用いて制御用電流値を算出し、算出した監視用電流値と制御用電流値との差が閾値より大きい場合は、制御用電流値がゼロとなるように前記第2のドリフト補償量を補正することを特徴とするモータ駆動装置。請求項1に記載のモータ駆動装置において、前記制御手段は、前記インバータ回路が回生状態にある場合に、前記第1の電流検出回路の出力に基づいて、前記シャント抵抗に流れる電流の電流値がゼロか否かを判別し、電流値がゼロでない場合は、前記第1のドリフト補償量を補正し、電流値がゼロである場合は、前記第1のドリフト補償量を補正しないことを特徴とするモータ駆動装置。請求項1または請求項2に記載のモータ駆動装置において、前記第1の電流検出回路による電流検出レンジが、前記第2の電流検出回路による電流検出レンジよりも広いことを特徴とするモータ駆動装置。請求項3に記載のモータ駆動装置において、前記制御手段は、前記インバータ回路が回生状態にある場合に、前記シャント抵抗に所定値以上の大電流が流れたことを、前記第1の電流検出回路の出力に基づいて検出したときは、前記スイッチング素子の少なくとも1つが短絡故障したと判定することを特徴とするモータ駆動装置。請求項1ないし請求項4のいずれかに記載のモータ駆動装置において、前記シャント抵抗は単一の抵抗であり、このシャント抵抗の両端に生じる電圧が、前記第1の電流検出回路および前記第2の電流検出回路に共通に与えられることを特徴とするモータ駆動装置。特許文献1の装置において、シャント抵抗に流れる電流を検出する回路が1つしか設けられない場合は、当該検出回路が故障すると、電流検出ができなくなってモータ制御が不可能となる。そこで、電流検出回路を2つ設けて2重化することにより、一方の電流検出回路が故障しても、他方の電流検出回路でモータ電流を検出可能とし、信頼性を向上させることが考えられる。電流検出回路を2重化した場合、シャント抵抗にドリフト電流が流れたときは、双方の電流検出回路による電流検出値は同じ値となるべきであるが、実際には各電流検出回路の特性のばらつきにより、電流検出値にずれが生じる。また、シャント抵抗に流れるドリフト電流は温度により変動するので、時間と共に温度が上昇すると、各電流検出回路間で電流検出値のずれが増大し、モータ制御に支障が生じる。本発明の課題とするところは、電流検出回路を2重化した場合でも適正な制御を行うことができるモータ駆動装置を提供することにある。本発明に係るモータ駆動装置は、上アームと下アームにそれぞれスイッチング素子を有する上下一対のアームが複数組設けられ、PWMPulseWidthModulation信号による各スイッチング素子のONOFF動作に基づいてモータを駆動するインバータ回路と、モータからインバータ回路を介して流れる電流を検出するためのシャント抵抗と、シャント抵抗に流れる電流を検出する監視用の第1の電流検出回路と、シャント抵抗に流れる電流を検出する制御用の第2の電流検出回路と、第2の電流検出回路の出力から得られる電流値およびモータに流す電流の目標値に基づいて、PWM信号を生成する制御手段とを備える。制御手段は、インバータ回路が回生状態にある場合において、第1の電流検出回路の出力に基づいて算出した監視用電流値に対し、シャント抵抗に流れるドリフト電流を補償するための第1のドリフト補償量、および、第2の電流検出回路の出力に基づいて算出した制御用電流値に対し、シャント抵抗に流れるドリフト電流を補償するための第2のドリフト補償量をそれぞれ演算する。また、制御手段は、シャント抵抗にドリフト電流が流れたことを第1の電流検出回路により検出したときは、第1のドリフト補償量を補正し、補正後の第1のドリフト補償量を用いて監視用電流値を算出するとともに、補正前の第2のドリフト補償量を用いて制御用電流値を算出する。そして、算出した監視用電流値と制御用電流値との差が閾値より大きい場合は、制御用電流値がゼロとなるように第2のドリフト補償量を補正する。なお、ここでいうゼロとは、数値上のゼロだけでなく、誤差の範囲も含めた実質的なゼロを含む概念である以下同様。本発明では、2つの電流検出回路の一方を監視用、他方を制御用として、制御用電流値を監視用電流値と比較し、制御用電流値が監視用電流値から所定量ずれた場合に、制御用電流値がゼロとなるように補償を行なう。その結果、回生時においてシャント抵抗にドリフト電流が流れても、制御用電流値がゼロに補償されるので、モータの挙動は影響を受けない。このため、例えば電動パワーステアリング装置において、ドリフト電流が操舵補助力に影響を与えることがないので、安定した操舵フィーリングが得られる。また、温度上昇によりドリフト電流が増大しても、制御用電流値と監視用電流値とのずれが大きくなると、制御用電流値に対する補償が実行されるので、補償された制御用電流値に基づいて適正な制御を行なうことができる。しかも、本発明では、各電流値の差が閾値より大きくなった場合にのみ、制御用電流値の補償が行なわれるので、PWM信号生成の基礎となる制御用電流値が必要以上に変動することがない。このため、より安定した操舵フィーリングを維持することができる。本発明の好ましい実施形態によれば、制御手段は、インバータ回路が回生状態にあるときに、第1の電流検出回路の出力に基づいて、シャント抵抗に流れる電流の電流値がゼロか否かを判別する。そして、電流値がゼロでない場合は、シャント抵抗にドリフト電流が流れているので、第1のドリフト補償量を補正する。一方、電流値がゼロである場合は、シャント抵抗にドリフト電流が流れていないため、第1のドリフト補償量を補正しない。また、本発明の好ましい実施形態によれば、第1の電流検出回路による電流検出レンジが、第2の電流検出回路による電流検出レンジよりも広くなっている。このようにすると、第1の電流検出回路が検出する電流の範囲を広く取れるので、第1の電流検出回路は、インバータ回路が回生状態にあるときに、監視用電流だけでなく、シャント抵抗に流れる所定値以上の大電流を検出することができる。これによって、スイッチング素子の少なくとも1つが短絡故障したと判定することが可能となる。さらに、本発明の好ましい実施形態によれば、シャント抵抗は単一の抵抗であり、このシャント抵抗の両端に生じる電圧が、第1の電流検出回路および第2の電流検出回路に共通に与えられる。これにより、最小限のシャント抵抗を用いて電流検出を行なうことができる。本発明によれば、電流検出回路を2重化した場合でも適正な制御を行うことができるモータ駆動装置を提供することができる。以下、本発明の実施形態につき、図面を参照しながら説明する。図1は、単一のシャント抵抗を用いたPWM制御方式のモータ駆動装置の一例を示している。電源回路1は、整流回路や平滑回路等から構成され、出力端にコンデンサCが接続されている。インバータ回路2は、上下一対のアームがU相、V相、W相に対応して3組設けられた3相ブリッジから構成されている。U相の上アームA1はスイッチング素子Q1を有し、U相の下アームA2はスイッチング素子Q2を有している。V相の上アームA3はスイッチング素子Q3を有し、V相の下アームA4はスイッチング素子Q4を有している。W相の上アームA5はスイッチング素子Q5を有し、W相の下アームA6はスイッチング素子Q6を有している。これらのスイッチング素子Q1~Q6は、FETFieldEffectTransistor:電界効果トランジスタからなる。モータMは、例えば車両の電動パワーステアリング装置に用いられる3相ブラシレスモータである。モータMに流れる電流を検出するためのシャント抵抗Rは、電源回路1とインバータ回路2との間に接続されている。シャント抵抗Rは単一の抵抗からなり、シャント抵抗Rの両端の電圧は、監視用電流検出回路5第1の電流検出回路と制御用電流検出回路6第2の電流検出回路に共通に与えられる。電流検出回路5、6は、シャント抵抗Rの両端の電圧を増幅し、演算制御部4へ出力する。演算制御部4は、CPUやメモリ等からなり、本発明における制御手段を構成する。この演算制御部4は、制御用電流検出回路6の出力から得られる制御用電流値と、操舵トルクを検出するトルクセンサ図示省略から与えられる検出トルク値から算出した目標電流値モータMに流す電流の目標値との偏差に基づいて、各相のPWM信号のデューティを算出する。そして、このデューティと鋸歯状のキャリア信号とに基づいて生成した各相のPWM信号を、ドライバIC3へ供給する。また、演算制御部4は、監視用電流検出回路5の出力から得られる監視用電流値と、制御用電流値との比較結果に基づいて、制御用電流値に対しドリフト補償を行う詳細は後述。ドライバIC3は、スイッチング素子Q1~Q6を個別にONOFFさせるための各相のPWM信号を、各スイッチング素子Q1~Q6のゲートへ出力する。このPWM信号に基づくスイッチング素子Q1~Q6のONOFF動作により、インバータ回路2からモータMへ3相電圧が供給され、モータMが回転する。図2は、ドライバIC3からインバータ回路2へ与えられるPWM信号を示している。ここでは、U相をデューティが最も大きい最大相、V相をデューティが中間の中間相、W相をデューティが最も小さい最小相としている。U相の上段PWM信号は、上アームA1のスイッチング素子Q1に印加されるPWM信号であり、下段PWM信号は、下アームA2のスイッチング素子Q2に印加されるPWM信号である。V相の上段PWM信号は、上アームA3のスイッチング素子Q3に印加されるPWM信号であり、下段PWM信号は、下アームA4のスイッチング素子Q4に印加されるPWM信号である。W相の上段PWM信号は、上アームA5のスイッチング素子Q5に印加されるPWM信号であり、下段PWM信号は、下アームA6のスイッチング素子Q6に印加されるPWM信号である。なお、図中のτは、各アームにおける上下のスイッチング素子が同時にON状態となってインバータ回路2に短絡が生じるのを回避するためのデッドタイムである。次に、モータMに流れる電流を検出するタイミングにつき、図3を参照しながら説明する。図3に示されるように、PWM信号の1周期においては、力行区間と回生区間上段回生区間および下段回生区間とが存在する。力行区間においては、デッドタイム区間を除いて、インバータ回路2の上アームのスイッチング素子以下、上段スイッチング素子というQ1、Q3、Q5の少なくとも1つがON状態となり、下アームのスイッチング素子以下、下段スイッチング素子というQ2、Q4、Q6の少なくとも1つがON状態となることにより、シャント抵抗Rにモータ電流が流れる。このため、シャント抵抗Rの両端には、図で示したシャント電圧が現れる。一方、上段スイッチング素子Q1、Q3、Q5がすべてON状態で、下段スイッチング素子Q2、Q4、Q6がすべてOFF状態となる上段回生区間では、シャント抵抗Rにモータ電流が流れないので、シャント抵抗Rの両端には、シャント電圧が現れない。また、上段スイッチング素子Q1、Q3、Q5がすべてOFF状態で、下段スイッチング素子Q2、Q4、Q6がすべてON状態となる下段回生区間でも、シャント抵抗Rにモータ電流が流れないので、シャント抵抗Rの両端には、シャント電圧が現れない。T1~T4は、シャント抵抗Rに流れる電流すなわちモータMの電流を検出するタイミングを示している。なお、ここでいうタイミングとは、電流検出が可能な時間幅をもった区間の概念である。タイミングT1、T2は力行区間における検出タイミングであって、これらはシャント抵抗Rにモータ電流が流れている状態での通常の電流検出タイミングである。タイミングT3、T4はそれぞれ上段回生区間、下段回生区間における検出タイミングであって、これらは理論上シャント抵抗Rに電流が流れていない状態での電流検出タイミングである。図3のタイミングT1では、上段スイッチング素子Q1、Q3、Q5がそれぞれON、OFF、OFFで、下段スイッチング素子Q2、Q4、Q6がそれぞれOFF、ON、ONとなり、インバータ回路2には、図4に破線矢印で示した経路で電流が流れる。このとき、シャント抵抗Rに流れる電流はU相電流であり、タイミングT1でモータMのU相電流が検出される。図3のタイミングT2では、上段スイッチング素子Q1、Q3、Q5がそれぞれON、ON、OFFで、下段スイッチング素子Q2、Q4、Q6がそれぞれOFF、OFF、ONとなり、インバータ回路2には、図5に破線矢印で示した経路で電流が流れる。このとき、シャント抵抗Rに流れる電流はW相電流であり、タイミングT2でモータMのW相電流が検出される。V相電流については、U相電流とW相電流とから、計算により求められる。すなわち、U相電流値をIu、V相電流値をIv、W相電流値をIwとしたとき、これらの間には、キルヒホッフの法則に従い次の関係が成立する。IuIvIw=0したがって、V相電流値Ivは、Iv=-IuIwとして算出することができる。図3のタイミングT3では、上段スイッチング素子Q1、Q3、Q5はすべてON、下段スイッチング素子Q2、Q4、Q6はすべてOFFとなり、インバータ回路2には、図6に破線矢印で示した経路で電流が流れる。このときの電流は、モータMの巻線Lu、Lv、Lwに蓄積された電気エネルギーの放出による回生電流であり、上段スイッチング素子Q1、Q3、Q5を介して回流する。したがって、タイミングT3では理論上、シャント抵抗Rに電流は流れないはずである。しかしながら、先述のとおり、温度やノイズ等の影響によりシャント抵抗Rにドリフト電流が流れることがある。この場合、シャント抵抗Rの両端に電圧が発生するので、この電圧に基づいてドリフト電流が検出される。図3のタイミングT4では、上段スイッチング素子Q1、Q3、Q5はすべてOFF、下段スイッチング素子Q2、Q4、Q6はすべてONとなり、インバータ回路2には、図7に破線矢印で示した経路で電流が流れる。このときの電流は、モータMの巻線Lu、Lv、Lwに蓄積された電気エネルギーの放出による回生電流であり、下段スイッチング素子Q2、Q4、Q6を介して回流する。したがって、タイミングT4でも理論上、シャント抵抗Rに電流は流れないはずであるが、前記と同様の理由でシャント抵抗Rにドリフト電流が流れることがある。この場合も、シャント抵抗Rの両端に電圧が発生するので、この電圧に基づいてドリフト電流が検出される。次に、監視用電流検出回路5と制御用電流検出回路6の各出力に基づいて演算制御部4が行なうドリフト補償について説明する。ドリフト補償は、インバータ回路2が回生状態にあるとき、すなわち理論上シャント抵抗Rに電流が流れない期間において、シャント抵抗Rに流れるドリフト電流により操舵補助力が影響を受けるのを回避するために行なう検出電流値の補正処理である。このドリフト補償を実行するにあたり、本実施形態では、監視用電流検出回路5の出力に基づき算出される監視用電流値に対してドリフト補償を行なう第1のドリフト補償量と、制御用電流検出回路6の出力に基づき算出される制御用電流値に対してドリフト補償を行なう第2のドリフト補償量とを用いる。回生区間図3のタイミングT3、T4においては、監視用電流検出回路5によりシャント抵抗Rに流れる電流を監視する。そして、シャント抵抗Rにドリフト電流が流れたことが検出されると、まず、第1のドリフト補償量を補正値により補正し、補正したドリフト補償量を用いて監視用電流値を算出する。次に、補正前の第2のドリフト補償量を用いて制御用電流値を算出する。このときの監視用電流値は、補正後の補償量を用いて算出された目標値であり、制御用電流値は、補正前の補償量を用いて算出された現状値である。そこで、算出した監視用電流値と制御用電流値とを比較する。そして、比較の結果、両者の差制御用電流値-監視用電流値が閾値より大きい場合は、制御用電流値が監視用電流値から一定限度を超えてずれていると判断して、第2のドリフト補償量を補正する。この補正された第2のドリフト補償量により、制御用電流値はゼロに補償される。一方、力行区間図3のタイミングT1、T2においては、監視用電流検出回路5の出力は無視され、制御用電流検出回路6の出力と、補正後の第2のドリフト補償量とに基づいて制御用電流値を演算し、この制御用電流値と目標電流値とを用いて、従来の方法により各相のPWM信号のデューティを算出する。次に、図8のフローチャートを参照して、ドリフト補償の手順をさらに詳細に説明する。図8における各ステップは、演算制御部4を構成するCPUにより実行される。電流検出が開始されると、最初にステップS1において、ドリフト補償量α、βの初期値が設定される。ここでは、αを第1のドリフト補償量とし、βを第2のドリフト補償量とする。α、βの初期値は、例えばゼロに設定される。続いて、ステップS2において、電流検出区間が回生区間か力行区間かを判別する。この判別は、スイッチング素子Q1~Q6のONOFFパターンに基づいて行なう。ステップS2での判別結果が力行区間であれば、ステップS8に移って、モータM3相ブラシレスモータに対する各相ごとの制御用電流値を算出する。具体的には、まず、図3のタイミングT1において、制御用電流検出回路6が、シャント抵抗Rの両端の電圧を検出する。このとき検出される電圧は、U相電流に対応する電圧である。そして、この検出電圧に対する電流ゲインと、ドリフト補償量βとに基づき、U相の制御用電流値を、次式により求める。制御用電流値=検出電圧×電流ゲインドリフト補償量β次に、図3のタイミングT2において、制御用電流検出回路6は再び、シャント抵抗Rの両端の電圧を検出する。このとき検出される電圧は、W相電流に対応する電圧である。そして、この検出電圧に基づき、上記の式により、W相の制御用電流値を同様に求める。また、V相の制御用電流値については、前述したキルヒホッフの法則に基づき、U相の制御用電流値とW相の制御用電流値とから、計算により求める。以上のようにして、ステップS8で、U相V相W相のそれぞれの制御用電流値が算出されると、続いてステップS9へ進む。ステップS9では、各相ごとに、ステップS8で算出した制御用電流値と、検出トルク値から求めた目標電流値との偏差を演算する。次に、ステップS10において、ステップS9で算出された偏差に基づいて、各相ごとにPWM信号のデューティを演算し、U相V相W相のそれぞれのPWM信号を生成する。ステップS9、S10については、モータに対する通常のフィードバック制御の手法としてよく知られているので、詳細な説明を省略する。一方、ステップS2での判別結果が回生区間であれば、ステップS3に移って、監視用電流値に対するドリフト補償量α第1のドリフト補償量を補正する。図9は、ステップS3の具体的内容を示すフローチャートである。まず、ステップS11において、ドリフト電流を検出するために、監視用電流検出回路5の出力から得られる検出電流値を0Aと比較する。その結果、検出電流値=0Aであれば、ドリフト電流が流れておらず補正は不要と判断し、ドリフト補償量αを補正することなく処理を終了する。また、検出電流値≠0Aの場合は、ドリフト電流が流れており補正が必要と判断する。そして、検出電流値<0Aであれば、ステップS12において、現在のドリフト補償量αに補正値を加算し、加算結果を新たなドリフト補償量αとする。また、検出電流値>0Aであれば、ステップS13において、現在のドリフト補償量αから補正値を減算し、減算結果を新たなドリフト補償量αとする。ここで、ステップS12、S13における補正値は、あらかじめ定められた一定値である。ステップS12、S13の実行により、ドリフト電流が流れた場合にドリフト補償量αが更新される。なお、ステップS12とステップS13とでは、シャント抵抗Rに流れる電流の方向が逆となる。ステップS3の処理が終わると、ステップS4に進み、補正されたドリフト補償量αを用いて、監視用電流値を演算する。具体的には、まず、図3のタイミングT3において、監視用電流検出回路5が、シャント抵抗Rの両端の電圧を検出する。このとき、制御用電流検出回路6も、シャント抵抗Rの両端の電圧を検出する。そして、監視用電流検出回路5の出力である検出電圧と、この検出電圧に対する電流ゲインと、ドリフト補償量αとに基づき、監視用電流値を次式により求める。監視用電流値=検出電圧×電流ゲインドリフト補償量α上式において、検出電圧×電流ゲインはステップS11における検出電流値であり、ドリフト補償量αはステップS12、S13で演算された値である。ここで、インバータ回路2は回生状態にあるので、シャント抵抗Rに各相のモータ電流は流れない。したがって、上記の監視用電流値は、特定の相の電流値を示しているのではなく、回生中に監視用電流検出回路5で検出される電流により決まる値を示している。なお、上記の例では、タイミングT3において、監視用電流検出回路5および制御用電流検出回路6がそれぞれ電圧を検出したが、タイミングT4において、監視用電流検出回路5および制御用電流検出回路6がそれぞれ電圧を検出するようにしてもよい。続いて、ステップS5に進んで、制御用電流値を演算する。ステップS4において、すでに制御用電流検出回路6が電圧を検出しているので、制御用電流値は、制御用電流検出回路6の出力である検出電圧と、この検出電圧に対する電流ゲインと、ドリフト補償量βとに基づき、制御用電流値=検出電圧×電流ゲインドリフト補償量βにより求められる。なお、ここでのドリフト補償量βは、後述するステップS7で補正される前の補償量ステップS5の初回実行時は、ステップS1で設定された初期値である。ここでも、インバータ回路2は回生状態にあるので、上記の制御用電流値は、特定の相の電流値ではなく、回生中に制御用電流検出回路6で検出される電流により決まる値を示している。次に、ステップS6において、ステップS4で算出した監視用電流値と、ステップS5で算出した制御用電流値とを比較し、両者の差制御用電流値-監視用電流値が所定の閾値より大きいか否かを判定する。判定の結果、上記差が閾値以下であればステップS6:NO、制御用電流値が監視用電流値からそれほどずれていないので、制御用電流値の補正は不要と判断して、ステップS7を実行せずにステップS2へ戻る。一方、上記差が閾値より大きければステップS6:YES、制御用電流値が監視用電流値から一定量を超えてずれているので、制御用電流値の補正が必要と判断して、ステップS7へ進む。ステップS7では、制御用電流値に対するドリフト補償量βを補正する。この補正は、図9と同様の手順に従って行なわれる。すなわち、ステップS11において、制御用電流検出回路6の出力から得られる検出電流値を0Aと比較し、検出電流値<0Aであれば、ステップS12において、現在のドリフト補償量βに補正値を加算し、加算結果を新たなドリフト補償量βとする。また、検出電流値>0Aであれば、ステップS13において、現在のドリフト補償量βから補正値を減算し、減算結果を新たなドリフト補償量βとする。この場合も、ステップS12、S13における補正値は、あらかじめ定められた一定値である。ステップS12、S13の実行により、ドリフト補償量βが更新される。ステップS7の実行後は、ステップS2へ戻り、ステップS2~S10の処理が反復される。この過程で、ステップS3においてドリフト補償量αが再び更新される結果、ステップS4で新たな監視用電流値が算出される。そして、この新たな監視用電流値と、ステップS5において前回のステップS7のドリフト補償量βを用いて算出した制御用電流値とを、ステップS6で比較し、それらの差が閾値以上であれば、ステップS7でドリフト補償量βを更新する。このようにして、ステップS2~S10の反復によりドリフト補償量α、βを一定量ずつ更新してゆくことで、制御用電流値の監視用電流値からのずれが小さくなってゆき、やがて制御用電流値はゼロに至る。本実施形態においては、上記のようにドリフト補償量α、βを段階的に補正し、最終的に制御用電流値がゼロとなるようにしているので、ドリフト補償量の急激な変化によって制御用電流値が大きく変動することが回避される。その結果、モータ電流の急変が抑制され、安定した操舵フィーリングが維持される。このように、本実施形態においては、回生区間にシャント抵抗Rを流れるドリフト電流を、監視用電流検出回路5で監視しステップS11、ドリフト電流を検出した場合は、一定量だけドリフト補償量αを補正しステップS12、S13、監視用電流値を更新するステップS4。そして、この監視用電流値と、制御用電流検出回路6の出力から得られる制御用電流値ステップS5とを比較しステップS6、その差が閾値より大きい場合に、制御用電流値に対するドリフト補償量βを補正するステップS7。この処理を繰り返すことにより、回生時にシャント抵抗Rにドリフト電流が流れても、制御用電流値が最終的にゼロに補償されるので、ドリフト電流が操舵補助力に影響を与えることがなく、安定した操舵フィーリングが得られる。また、温度上昇によりドリフト電流が増大しても、制御用電流値と監視用電流値とのずれが大きくなると、制御用電流値に対する補償が実行されるので、補償された制御用電流値に基づいて適正な制御を行なうことができる。さらに、制御用電流値の補償は、制御用電流値と監視用電流値との差が閾値よりも大きくなった場合にのみ行なわれ、両者の差が閾値以下の場合は行なわれないので、PWM信号生成の基礎となる制御用電流値が必要以上に変動することがない。このため、より安定した操舵フィーリングを維持することができる。また、本実施形態においては、シャント抵抗Rは単一の抵抗であり、このシャント抵抗Rの両端の電圧が監視用電流検出回路5および制御用電流検出回路6に共通に与えられる。これにより、最小限のシャント抵抗を用いて電流検出を行なうことができる。さらに、本実施形態においては、監視用電流検出回路5と制御用電流検出回路6とを設けて電流検出回路を2重化しているので、一方の電流検出回路が故障した場合でも、他方の電流検出回路を用いてシャント抵抗Rに流れる電流を検出することが可能である。したがって、最小限、単一の電流検出回路を用いた場合の電流検出機能を担保することができる。ところで、本実施形態においては、監視用電流検出回路5の電流検出レンジと、制御用電流検出回路6の電流検出レンジとを異ならせている。図10は、シャント抵抗Rに流れる電流と、電流検出回路5、6から出力される検出電圧との関係を表している。Xは監視用電流検出回路5の特性、Yは制御用電流検出回路6の特性である。これからわかるように、監視用電流検出回路5の電流検出レンジは、制御用電流検出回路6の電流検出レンジよりも広くなっている。監視用電流検出回路5については、後述するように、短絡故障時にシャント抵抗Rに流れる大電流も検出する必要があることから、ゲインを低くして電流検出レンジを広く確保している。一方、制御用電流検出回路6については、電流検出の感度を高くして、フィードバック制御を精度良く行なう必要があることから、ゲインを高くして電流検出レンジを狭くしている。図11は、下段回生時における短絡故障を説明する図である。ここでは、上段のスイッチング素子Q1が短絡故障した場合を例に挙げている。短絡故障には、素子自体の異常によりスイッチング素子がON状態のままとなる故障のほか、素子自体は正常であっても、PWM信号を与えるドライバIC3や演算制御部4が異常でON信号を出力し続けることにより、スイッチング素子がON状態のままとなる故障がある。下段回生時にスイッチング素子Q1が短絡故障すると、図11のように、スイッチング素子Q1、Q2が共にONとなり、これらを介して、本来流れるはずのない電流が、短絡電流として破線矢印の経路でシャント抵抗Rに流れる。図12は、このときのPWM信号とシャント電圧を示した図である。ここでは、一点鎖線Aで示すように、下段回生区間において最大相U相の上段PWM信号がONのままとなって、スイッチング素子Q1が短絡故障している。この結果、一点鎖線Bで示すように、シャント抵抗Rの両端には、短絡電流に基づく大きな電圧が現れる。したがって、この電圧を監視用電流検出回路5により検出することで、スイッチング素子Q1の短絡故障を検出することができるスイッチング素子Q3、Q5が短絡故障した場合も同様。この場合、演算制御部4は、シャント抵抗Rに流れる電流が所定値以上であれば、スイッチング素子Q1、Q3、Q5の少なくとも1つが短絡故障したと判定する。以上は、下段回生時における短絡故障の場合であったが、上段回生時における短絡故障の場合も同様のことが言える。図13は、上段回生時における短絡故障を説明する図である。ここでは、下段のスイッチング素子Q6が短絡故障した場合を例に挙げている。上段回生時にスイッチング素子Q6が短絡故障すると、図13のように、スイッチング素子Q5、Q6が共にONとなり、これらを介して、本来流れるはずのない電流が、短絡電流として破線矢印の経路でシャント抵抗Rに流れる。この結果、シャント抵抗Rの両端には、短絡電流による大きな電圧が現れる。したがって、この電圧を監視用電流検出回路5により検出することで、スイッチング素子Q6の短絡故障を検出することができるスイッチング素子Q2、Q4が短絡故障した場合も同様。この場合、演算制御部4は、シャント抵抗Rに流れる電流が所定値以上であれば、スイッチング素子Q2、Q4、Q6の少なくとも1つが短絡故障したと判定する。本発明では、以上述べた以外にも種々の実施形態を採用することができる。例えば、前記実施形態では、単一のシャント抵抗Rを用いたモータ駆動装置を例に挙げたが、図14に示すように、各相の下アームにそれぞれシャント抵抗R1~R3が設けられている場合にも、本発明を適用することができる。図14では、図1と同一部分に同一符号を付し、図1のドライバIC3と演算制御部4の図示は省略してある。図14の実施形態においては、各シャント抵抗R1~R3に流れる電流を、それぞれに対応した設けた監視用電流検出回路図示省略および制御用電流検出回路図示省略で検出する。但し、監視用電流検出回路によるドリフト電流の監視は、上段回生時のみに行なわれる。また、前記実施形態では、ドリフト補償量α、βを段階的に補正し、最終的に制御用電流値がゼロとなるようにしたが、ドリフト電流が検出された場合に、制御用電流値を一挙にゼロに補償するようにしてもよい。この場合は、図9のステップS12、S13における補正値が、ステップS11の検出電流値と0Aとの差分に設定される。したがって、ドリフト補償量α、βは、ドリフト電流の電流値に応じて補正される。この結果、図8のステップS4の監視用電流値はゼロとなり、ステップS7を実行した後のステップS5の制御用電流値もゼロとなる。また、前記実施形態では、上段回生区間と下段回生区間の両方において、監視用電流検出回路5によりシャント抵抗Rの電流を検出し、ドリフト補償を行なったが、上段回生区間と下段回生区間のいずれか一方のみにおいて、監視用電流検出回路5によりシャント抵抗Rの電流を検出し、ドリフト補償を行なってもよい。また、前記実施形態では、監視用電流検出回路5の電流検出レンジを制御用電流検出回路6の電流検出レンジより広くしたが、両者の電流検出レンジが同じであってもよい。また、前記実施形態では、U相が最大相、V相が中間相、W相が最小相である場合を例に挙げたが、これは一例であって、例えば、U相が最小相、V相が中間相、W相が最大相である場合や、U相が中間相、V相が最小相、W相が最大相である場合など、各相と最大相中間相最小相との組み合わせがどのような場合であっても、本発明を適用することができる。また、前記実施形態では、スイッチング素子Q1~Q6としてFETを使用したが、IGBT絶縁ゲート型バイポーラモードトランジスタのような他のスイッチング素子を使用してもよい。また、前記実施形態では、モータMとして3相モータを例に挙げたが、本発明は、4相以上の多相モータを駆動する場合にも適用することができる。また、前記実施形態では、モータとしてブラシレスモータを例に挙げたが、本発明は、誘導モータや同期モータなどを駆動する装置にも適用することができる。さらに、前記実施形態では、車両の電動パワーステアリング装置に本発明を適用した例を挙げたが、本発明は、電動パワーステアリング装置に限らず、インバータ回路を備えたPWM制御方式のモータ駆動装置全般に適用することができる。