(57)【要約】【課題】モータを駆動する各相電流指令値のゼロクロス時においても、モータからの異音の発生することがなく、且つ操舵フィーリングの良い電動パワーステアリング装置を提供すること。【解決手段】回転角補正演算手段は、モータの回転角が所定範囲内にあり、モータの回転角が所定範囲内で増加している場合には、モータの回転角を、モータの回転角の所定範囲内の最大値に固定し、モータの回転角が所定範囲内で減少している場合には、モータの回転角を、モータの回転角の所定範囲内の最小値に固定する。【選択図】図６
2012065381.tif 000002
【特許請求の範囲】
【請求項１】
ステアリング機構に操舵補助力を与えるモータと、
前記モータの回転角を検出するモータ位置検出手段と、
操舵トルクを検出する操舵トルク検出手段と、
車速を検出する車速検出手段と、
前記操舵トルク検出手段により検出された操舵トルク、及び前記車速検出手段により検出された車速に基づいて前記モータに対する駆動電力供給の目標値である電流指令値を演算する電流指令値演算手段と、
前記電流指令値に基づき前記モータを駆動制御するモータ制御信号を生成するモータ制御信号生成手段と、
前記モータ制御信号に基づき前記モータに対して駆動電力を出力するモータ駆動手段と、
前記モータの各相に流れる各相電流値を検出する各相電流値検出手段と、を備え、
前記モータ制御信号生成手段は、
前記モータ位置検出手段により検出された回転角に基づいて前記モータの回転角を補正演算する回転角補正演算手段と、
前記電流指令値演算手段により演算された前記電流指令値と前記各相電流値検出手段により検出された前記各相電流値からｄ／ｑ座標系の電流値に変換された電流値との偏差に基づくフィードバック制御により各相ＤＵＴＹ指令値を生成する各相ＤＵＴＹ指令値生成手段と、
前記電流指令値及び前記回転角補正演算手段により演算された回転角に基づいて前記モータの各相の電流指令値を生成する各相電流指令値生成手段と、
前記各相電流指令値が正値である場合には、所定のデッドタイム補償量を前記各相ＤＵＴＹ指令値に加算し、前記各相電流指令値が負値である場合には、正負の符号を変えた前記デッドタイム補償量を前記各相ＤＵＴＹ指令値に加算することで前記モータ駆動手段のデッドタイムを補償するデッドタイム補償演算手段と、
搬送波と前記デッドタイム補償後の各相ＤＵＴＹ指令値との比較により前記モータ制御信号を出力するＰＷＭ出力手段と、を有し、
前記回転角補正演算手段は、前記モータの回転角が所定範囲内にある場合には、前記モータの回転角を変えないことを特徴とする電動パワーステアリング装置。
【請求項２】
前記回転角補正演算手段は、前記モータの回転角が所定範囲内にあり、前記モータの回転角が所定範囲内で増加している場合には、前記モータの回転角を、前記モータの回転角の所定範囲内の最大値に固定し、前記モータの回転角が所定範囲内で減少している場合には、前記モータの回転角を、前記モータの回転角の所定範囲内の最小値に固定することを特徴とする請求項１に記載の電動パワーステアリング装置。
【請求項３】
前記回転角補正演算手段は、前記モータの回転角が所定範囲内にあり、前記モータの回転角が所定範囲内で増加している場合には、前記モータの回転角を、前記モータの回転角の所定範囲内の最小値に固定し、前記モータの回転角が所定範囲内で減少している場合には、前記モータの回転角を、前記モータの回転角の所定範囲内の最大値に固定することを特徴とする請求項１に記載の電動パワーステアリング装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電動パワーステアリング装置に関するものである。
【背景技術】
【０００２】
従来、直流電源から供給される直流電圧をＰＷＭインバータにより三相（Ｕ、Ｖ、Ｗ）の駆動電力に変換してブラシレスモータに供給するモータ制御装置がある。
図１６に示すように、ＰＷＭインバータは、直列に接続された一対のスイッチング素子（パワーＭＯＳＦＥＴ等）５１a、５１bからなるアーム５２を基本単位として、各相に対応する３つのアーム５２を並列接続することにより構成されている。そして、モータ制御装置は、各アーム５２の高位側のスイッチング素子５１aと低位側のスイッチング素子５１bとを所定のタイミングで交互にオン/オフすることにより、モータ２１に三相の駆動電力を供給する。
【０００３】
ところで、こうしたモータ制御装置では、通常、高位側のスイッチング素子５１aと低位側のスイッチング素子５１bとの短絡（アーム短絡）を防止するために、そのオン/オフの切替時には、各スイッチング素子５１a、５１bが共にオフとなるデッドタイムが設けられている。しかし、このデッドタイムの存在により、電圧指令値とＰＷＭインバータの出力電圧との間に誤差が生じ、これによりトルクリップルや振動、異音の原因となる電流歪みが発生するという問題があった。
【０００４】
特に、このようなモータ制御装置を使用する電動パワーステアリング装置（ＥＰＳ）においては、トルクリップルや振動は操舵フィーリングを低下させると同時に、異音は車室内の静粛性を損なうものとなる。
【０００５】
そこで、従来、こうしたＥＰＳ用のものを含む多くのモータ制御装置では、デッドタイムに起因する電流歪みを抑制すべく、その電圧指令値と出力電圧との間の誤差を低減するデッドタイム補償が行なわれている。
【０００６】
例えば、非特許文献１には、図１７に示すように、搬送波である三角波δとの比較により各スイッチング素子５１a、５１bのオン/オフタイミングを決定するためのＤＵＴＹ指令値αxに対し、その電流方向に応じて、予め設定されたデッドタイム補償量βを加算又は減算する方法が開示されている。
【０００７】
具体的には、アーム５２に対応するx相（x相＝u,v,w以下同様）の電流方向が、アーム５２からモータ２１に向かう方向、即ち「正」（図１６中右方向矢印）である場合にはＤＵＴＹ指令値αxにデッドタイム補償量βを加算する。そして、その電流方向が、モータ２１からアーム５２に向かう方向、即ち「負」（図１６中左方向矢印）である場合にはＤＵＴＹ指令値αxからデッドタイム補償量βを減算する。これにより、図１７に示す三角波δの周期Ｔ内にx相の出力電圧Ｖxが電源電圧Ｖbとなる時間（ｔ３+ｔ４又はｔ５+ｔ６）と、デッドタイムを設けない場合（理想電圧波形）のその時間（ｔ１+ｔ２）とを等しくすることができ、電圧指令値とＰＷＭインバータの出力電圧とを一致させてデッドタイムに起因する電流歪みを抑制することができるようになる。
【０００８】
【非特許文献１】杉本英彦、「ＡＣサーボモータシステムの理論と設計の実際」、第６版、総合電子出版社、２００２年８月、Ｐ５６-５８
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述した従来の電動パワーステアリング装置では、駆動されるモータの各相電流値を検出し、検出された各相電流値の正負に応じて所定のデッドタイム補償量を各相電圧指令値に加算又は減算していた。しかし、各相電流値がゼロ近傍の小さな値になると、各相電流値のはねにより各相電流値の正負の判断が困難になるため、デッドタイム補償量を誤った方向に補正してしまい、モータからの振動及び異音を発生するおそれがあった。
【００１０】
上記課題について本願発明者は、デッドタイム補償量を「各相電流値の流れる方向」によって決定していることに原因があると考え、デッドタイム補償量を「各相電流指令値の正負」によって決定することとした。ここで、各相電流指令値を図１８に示し、説明する。
【００１１】
図１８は縦軸が相電流指令値Ｉx*を、横軸がモータ回転角度（θ）をあらわす。三相ブラシレスモータを回転させる三相電流指令値Ｉu*、Ｉv*、Ｉw*は下記の１）式、２）式、３）式であらわされる。
Ｉu*＝Ｉq*・sin（θ）         ・・・  １）式
Ｉv*＝Ｉq*・sin（θ−２π/３）・・・  ２）式
Ｉw*＝Ｉq*・sin（θ−４π/３）・・・  ３）式
例えば、Ｕ相電流指令値Ｉu*は、ｑ軸電流指令値Ｉq*にモータ回転角度θのsin値の積で求められる。また、Ｖ相電流指令値Ｉv*は、ｑ軸電流指令値Ｉq*にモータ回転角度（θ−２π/３）のsin値の積で、Ｗ相電流指令値Ｉw*は、ｑ軸電流指令値Ｉq*にモータ回転角度（θ−４π/３）のsin値の積で求められる。ここで、モータ回転角度θの値が増加していく場合をモータ右回転、モータ回転角度θの値が減少していく場合をモータ左回転とする。
【００１２】
このようにデッドタイム補償量を「各相電流指令値の正負」によって決定した結果、モータからの振動及び異音低減には、かなりの改善が見られたが、モータからの振動及び異音が消えたわけではなかった。その原因について、本願発明者は、各相電流指令値がゼロ近傍にある場合には、各相電流指令値を生成するモータの回転角の変動が、より各相電流指令値のはねを増幅するためであると考えた。即ち、各相電流指令値がゼロに近い値になった場合には、モータの回転角の変動により、各相電流指令値が正値と負値との間を頻繁にクロスするクロス現象が発生する。クロス現象が発生すると、各相電流指令値の正負の切り替えが頻繁に行なわれるため、デッドタイム補償の正負の切り替えも頻繁に行なわれるため、モータからの振動及び異音が発生するおそれがある。この現象を図１９で説明する。
【００１３】
図１９（Ａ）は、図１８からＵ相電流指令値Ｉu*のみを抜き出した図である。
そして、図１９（Ｂ）は、図１８のＵ相電流指令値Ｉu*のモータ回転角度θの０度近傍の拡大図である。図１９（Ｂ）からわかるように、Ｕ相電流指令値Ｉu*は細かく見れば、モータの回転角の変動によりかなり歪んだ波形である。特にＰ０、Ｐ２、Ｐ４点は負値であるが、Ｐ１、Ｐ３、Ｐ５点は正値となり、負値と正値が繰り返される。この負値と正値の繰り返しに応じて、上記デッドタイム補償を行なうと、デッドタイム補償量も負値と正値の繰り返し、この結果、モータからの振動及び異音が発生するおそれがある。
【００１４】
本発明の目的は、モータからの振動及び異音を抑制し、操舵フィーリングの良い電動パワーステアリング装置を提供することにある。
【課題を解決するための手段】
【００１５】
上記の課題を解決するため、請求項１の電動パワーステアリング装置は、ステアリング機構に操舵補助力を与えるモータと、前記モータの回転角を検出するモータ位置検出手段と、操舵トルクを検出する操舵トルク検出手段と、車速を検出する車速検出手段と、前記操舵トルク検出手段により検出された操舵トルク、及び前記車速検出手段により検出された車速に基づいて前記モータに対する駆動電力供給の目標値である電流指令値を演算する電流指令値演算手段と、前記電流指令値に基づき前記モータを駆動制御するモータ制御信号を生成するモータ制御信号生成手段と、前記モータ制御信号に基づき前記モータに対して駆動電力を出力するモータ駆動手段と、前記モータの各相に流れる各相電流値を検出する各相電流値検出手段と、を備え、前記モータ制御信号生成手段は、前記モータ位置検出手段により検出された回転角に基づいて前記モータの回転角を補正演算する回転角補正演算手段と、前記電流指令値演算手段により演算された前記電流指令値と前記各相電流値検出手段により検出された前記各相電流値からｄ／ｑ座標系の電流値に変換された電流値との偏差に基づくフィードバック制御により各相ＤＵＴＹ指令値を生成する各相ＤＵＴＹ指令値生成手段と、前記電流指令値及び前記回転角補正演算手段により演算された回転角に基づいて前記モータの各相の電流指令値を生成する各相電流指令値生成手段と、前記各相電流指令値が正値である場合には、所定のデッドタイム補償量を前記各相ＤＵＴＹ指令値に加算し、前記各相電流指令値が負値である場合には、正負の符号を変えた前記デッドタイム補償量を前記各相ＤＵＴＹ指令値に加算することで前記モータ駆動手段のデッドタイムを補償するデッドタイム補償演算手段と、搬送波と前記デッドタイム補償後の各相ＤＵＴＹ指令値との比較により前記モータ制御信号を出力するＰＷＭ出力手段と、を有し、
前記回転角補正演算手段は、前記モータの回転角が所定範囲内にある場合には、前記モータの回転角を変えないこと、を要旨とする。
【００１６】
これにより、本請求項の電動パワーステアリング装置は、各相電流指令値がゼロ近傍にあり、各相電流指令値を生成するモータの回転角の変動があった場合でも、各相電流指令値のはねを小さくし、モータからの振動及び異音の発生を抑制することができる。
【００１７】
請求項２の電動パワーステアリング装置は、請求項１に記載の電動パワーステアリング装置において、前記回転角補正演算手段は、前記モータの回転角が所定範囲内にあり、前記モータの回転角が所定範囲内で増加している場合には、前記モータの回転角を、前記モータの回転角の所定範囲内の最大値に固定し、前記モータの回転角が所定範囲内で減少している場合には、前記モータの回転角を、前記モータの回転角の所定範囲内の最小値に固定すること、を要旨とする。
【００１８】
これにより、本請求項の電動パワーステアリング装置は、モータの回転角が所定範囲内にあり、モータの回転角が所定範囲内で増加している場合、即ち、各相電流指令値を生成するモータの回転角の変動があった場合には、モータの回転角を、モータの回転角の所定範囲内の最大値に固定する。また、モータの回転角が所定範囲内にあり、モータの回転角が所定範囲内で減少している場合、即ち、各相電流指令値を生成するモータの回転角の変動があった場合には、モータの回転角を、モータの回転角の所定範囲内の最小値に固定する。
【００１９】
そのため、本請求項の電動パワーステアリング装置は、相電流指令値がゼロ値に近い正値と負値との間を頻繁にクロスする場合であっても、各相電流指令値を生成するモータの回転角の変動を効果的に抑制することができる。
その結果、本請求項の電動パワーステアリング装置は、モータからの振動及び異音の発生を抑制するとともに操舵フィーリングの向上を図ることができる。
【００２０】
請求項３の電動パワーステアリング装置は、請求項１に記載の電動パワーステアリング装置において、前記回転角補正演算手段は、前記モータの回転角が所定範囲内にあり、前記モータの回転角が所定範囲内で増加している場合には、前記モータの回転角を、前記モータの回転角の所定範囲内の最小値に固定し、前記モータの回転角が所定範囲内で減少している場合には、前記モータの回転角を、前記モータの回転角の所定範囲内の最大値に固定すること、を要旨とする。
これにより、請求項２と同様の効果を得ることができる。
【発明の効果】
【００２１】
本発明によれば、モータからの振動及び異音の発生を抑制し、操舵フィーリングの良い電動パワーステアリング装置を提供することができる。
【図面の簡単な説明】
【００２２】
【図１】電動パワーステアリング装置（ＥＰＳ）の概略構成図。
【図２】ＥＰＳの制御ブロック図。
【図３】回転角補正演算部のブロック図。
【図４】モータ制御の処理手順を示すフローチャート図。
【図５】各相位置データを出力するフローチャート図。
【図６】Ｕ相電流指令値のゼロ近傍をあらわす概念図。
【図７】Ｗ相電流指令値のゼロ近傍をあらわす概念図。
【図８】Ｖ相電流指令値のゼロ近傍をあらわす概念図。
【図９】Ｕ相電流指令値のゼロ近傍（０rad）領域を判定するフローチャート図。
【図１０】Ｗ相電流指令値のゼロ近傍（π/３rad）領域を判定するフローチャート図。
【図１１】Ｖ相電流指令値のゼロ近傍（２π/３rad）領域を判定するフローチャート図。
【図１２】Ｕ相電流指令値のゼロ近傍（πrad）領域を判定するフローチャート図。
【図１３】Ｗ相電流指令値のゼロ近傍（４π/３rad）領域を判定するフローチャート図。
【図１４】Ｖ相電流指令値のゼロ近傍（５π/３rad）領域を判定するフローチャート図。
【図１５】デッドタイム補償演算の処理手順を示すフローチャート図。
【図１６】ＰＷＭインバータを構成するアームの概略図。
【図１７】デッドタイム補償の作用を説明する波形図。
【図１８】各相電流指令値をあらわす概念図。
【図１９】（Ａ）Ｕ相電流指令値のゼロ近傍（０rad）領域図。（Ｂ）Ｕ相電流指令値のゼロ近傍（０rad）領域の拡大図。
【発明を実施するための形態】
【００２３】
以下、コラム型の電動パワーステアリング装置（以下、ＥＰＳという）に具体化した本発明の一実施形態を図面に従って説明する。
図1に示すように、本実施形態のＥＰＳ１において、ステアリング２が固定されたステアリングシャフト３は、ラックアンドピニオン機構４を介してラック軸５と連結されている。ステアリング操作に伴うステアリングシャフト３の回転は、ラックアンドピニオン機構４によりラック軸５の往復直線運動に変換される。尚、本実施形態のステアリングシャフト３は、コラムシャフト８、インターミディエイトシャフト９、及びピニオンシャフト１０を連結してなる。そして、このステアリングシャフト３の回転に伴うラック軸５の往復直線運動が、同ラック軸５の両端に連結されたタイロッド１１を介して図示しないナックルに伝達されることにより、転舵輪１２の舵角が変更される。
【００２４】
また、ＥＰＳ１は、操舵系にステアリング操作を補助するためのアシスト力を付与するＥＰＳアクチュエータ２４と、ＥＰＳアクチュエータ２４の作動を制御する制御手段としてのＥＣＵ２７とを備えている。
【００２５】
本実施形態のＥＰＳアクチュエータ２４は、コラム型のＥＰＳアクチュエータであり、その駆動源であるモータ２１は、減速機構２３を介してコラムシャフト８と駆動連結されている。ＥＰＳアクチュエータ２４は、モータ２１の回転を減速機構２３により減速してコラムシャフト８に伝達することによって、そのモータトルクをアシスト力として操舵系に付与する。
【００２６】
ＥＣＵ２７には、車速センサ２５（車速検出手段）、トルクセンサ２６（操舵トルク検出手段）、及びモータ回転角センサ２２が接続されている。ＥＣＵ２７は、これら各センサの出力信号に基づいて、車速Ｖ、操舵トルクτ、及びモータ回転角θを検出する。例えば、本実施形態のトルクセンサ２６は、一対のレゾルバが図示しないトーションバーの両端に設けられたツインレゾルバ型のトルクセンサである。また、ＥＣＵ２７は、これらの検出される各状態量に基づいて目標アシスト力を演算し、モータ２１への駆動電力の供給を通じて、ＥＰＳアクチュエータ２４の作動、即ち、操舵系に付与するアシスト力を制御する。
【００２７】
次に、本実施形態のＥＰＳ１における電気的構成について説明する。
図２は、本実施形態のＥＰＳ１の制御ブロック図である。同図に示すように、ＥＰＳ１は、ＥＣＵ２７、モータ２１、及びバッテリ２８を備える。モータ２１は、ブラシレスモータであり、モータ回転角θを検出するためのモータ回転角センサ２２を有する。ＥＣＵ２７は、モータ制御信号を出力するＣＰＵ２９と、そのモータ制御信号に基づいて、モータ２１に三相の駆動電力を供給するモータ駆動回路４０（モータ駆動手段）と、モータ２１に通電される各相電流値Ｉu、Ｉv、Ｉwを検出するための電流センサ３０u、３０v、３０w（各相電流値検出手段）とを備える。
モータ駆動回路４０は、直列に接続された一対のスイッチング素子（パワーＭＯＳＦＥＴ等）を基本単位（アーム）として各相に対応する３つのアームを並列接続してなる公知のＰＷＭインバータである。
【００２８】
ＣＰＵ２９は、上記各センサ３０u、３０v、３０w、２２、２６、２５の出力信号に基づき検出されたモータ２１の各相電流値Ｉu、Ｉv、Ｉw、及びモータ回転角θ、並びに上記操舵トルクτ、及び車速Ｖに基づいて、電流フィードバック制御を実行する。具体的にＣＰＵ２９は、モータ駆動回路４０を構成する各スイッチング素子のオンデューティ比を規定するモータ制御信号をモータ駆動回路４０に出力する。モータ制御信号が印加されると、モータ駆動回路４０では、モータ制御信号に応答して、各スイッチング素子がオン/オフする。これによりモータ駆動回路４０は、バッテリ２８の電源電圧に基づく三相のモータ駆動電力を生成して、モータ２１へ出力する。
【００２９】
以下に示す各制御ブロックは、ＣＰＵ２９が実行するコンピュータプログラムにより実現される演算処理である。ＣＰＵ２９は、所定のサンプリング周期で上記各状態量を検出し、所定周期毎に以下の各制御ブロックに示される各演算処理を実行することにより、モータ制御信号を生成する。
【００３０】
図２に示すように、ＣＰＵ２９は、モータ２１を制御する電流指令値を演算する電流指令値演算部３１（電流指令値演算手段）と、上記モータ制御信号を生成するモータ制御信号生成部４４（モータ制御信号生成手段）とを備える。
電流指令値演算部３１は、トルクセンサ２６により検出された操舵トルクτ及び車速センサ２５により検出された車速Ｖに基づいて、アシストトルクの制御目標であるｑ軸電流指令値Ｉq*を演算する。
【００３１】
モータ制御信号生成部４４は、モータ回転角θが所定値近傍になった時に、モータ回転角を補正するための回転角補正演算部３６（回転角補正演算手段）と、モータ駆動回路４０を構成するスイッチング素子のオン/オフタイミングを決定するＤＵＴＹ指令値αu、αv、αwを生成する各相ＤＵＴＹ指令値生成部４３（各相ＤＵＴＹ指令値生成手段）と、三相の相電流指令値Ｉu*、Ｉv*、Ｉw*（以下、各相電流指令値Ｉx*（x＝u,v,w）ともいう）を生成するための各相電流指令値生成部３５（各相電流指令値生成手段）と、各相のデッドタイム補償量βを記憶するメモリ４２と、デッドタイムに起因する電流歪みを補償すべく各相のＤＵＴＹ指令値αu、αv、αwを補正するデッドタイム補償演算部３９と、を備える。デッドタイム補償演算部３９により補正された補正後の各相ＤＵＴＹ指令値αu’、αv’、αw’は、ＰＷＭ出力部４１に入力される。
【００３２】
図３に示すように、回転角補正演算部３６は、回転角補正処理部３６aと、各モータ回転角固定確定フラグメモリ部３６bと、モータ回転角データ前回値θ（n）を記憶するメモリ部３６cと、ゼロ近傍値θαを記憶するメモリ部３６dと、により構成される。詳述すると、回転角補正処理部３６aには、モータ回転角センサ２２により検出されたモータ回転角データ今回値θ（n+１）が入力される。また、回転角補正処理部３６aには、各モータ回転角固定確定フラグメモリ部３６bに書き込まれたフラグ状態と、メモリ部３６cに書き込まれたモータ回転角データ前回値θ（n）と、メモリ部３６dに書き込まれたゼロ近傍値θαが入力される。回転角補正処理部３６aはこれらの値に基づいて回転角補正処理を行い、各相モータ回転角θu(n+１)、θv(n+１)、θw(n+１)を出力する。
【００３３】
各相ＤＵＴＹ指令値生成部４３は、ｄ／ｑ変換演算部３２と、ＰＩ制御演算部３３、３４と、ｄ／ｑ逆変換演算部３７と、各相ＤＵＴＹ指令値演算部３８と、により構成される。
詳述すると、ｄ／ｑ変換演算部３２には、電流センサ３０u、３０v、３０wにより検出された各相電流値Ｉu、Ｉv、Ｉw、及び回転角補正演算部３６により補正演算された各相モータ回転角θu(n+１)、θv(n+１)、θw(n+１)が入力される。ｄ／ｑ変換演算部３２は、入力された各相モータ回転角θu(n+１)、θv(n+１)、θw(n+１)に基づいて、各相電流値Ｉu、Ｉv、Ｉwをｄ／ｑ座標系のｄ軸電流値Ｉd及びｑ軸電流値Ｉqに変換する。
【００３４】
ｄ／ｑ変換演算部３２により演算されたｄ軸電流値Ｉd及びｑ軸電流値Ｉq、並びに電流指令値演算部３１により演算されたｑ軸電流指令値Ｉq*は、それぞれｄ、ｑ各軸に対応するＰＩ制御演算部３３，３４に入力される。本実施形態では、ｄ軸に対応するＰＩ制御演算部３３には、ｄ軸電流指令値Ｉd*としてゼロ（Ｉd*＝０）が入力される。そして、ＰＩ制御演算部３３は、ｄ軸電流指令値Ｉd*とｄ軸電流値Ｉdとの偏差に基づくフィードバック制御（比例・積分制御）によりｄ軸電圧指令値Ｖd*を演算する。同様に、ＰＩ制御演算部３４は、ｑ軸電流指令値Ｉq*とｑ軸電流値Ｉqとの偏差に基づくフィードバック制御（比例・積分制御）によりｑ軸電圧指令値Ｖq*を演算する。
【００３５】
各ＰＩ制御演算部３３、３４により演算されたｄ軸電圧指令値Ｖd*及びｑ軸電圧指令値Ｖq*は、回転角補正演算部３６により補正演算された各相モータ回転角θu(n+１)、θv(n+１)、θw(n+１)とともにｄ／ｑ逆変換演算部３７に入力される。ｄ／ｑ逆変換演算部３７は、各相モータ回転角θu(n+１)、θv(n+１)、θw(n+１)に基づきｄ軸電圧指令値Ｖd*及びｑ軸電圧指令値Ｖq*を三相の相電圧指令値Ｖu*、Ｖv*、Ｖw*に変換し、各相ＤＵＴＹ指令値演算部３８に出力する。各相ＤＵＴＹ指令値演算部３８は、この各相電圧指令値Ｖu*、Ｖv*、Ｖw*に基づいて、各相のＤＵＴＹ指令値αu、αv、αwを生成する。
【００３６】
また、電流指令演算部３１により演算されたｑ軸電流指令値Ｉq*及びｄ軸電流指令値Ｉd*（Ｉd*＝０）は、各相モータ回転角θu(n+１)、θv(n+１)、θw(n+１)とともに各相電流指令値生成部３５にも入力される。各相電流指令値生成部３５は、各相モータ回転角θu(n+１)、θv(n+１)、θw(n+１)に基づきｑ軸電流指令値Ｉq*及びｄ軸電流指令値Ｉd*を三相の相電流指令値Ｉu*、Ｉv*、Ｉw*に変換し、デッドタイム補償演算部３９に出力する。
【００３７】
デッドタイム補償演算部３９には、各相ＤＵＴＹ指令値演算部３８で演算された各相のＤＵＴＹ指令値αx（x＝u,v,w）、各相のデッドタイム補償量β、及び各相電流指令値生成部３５で生成された各相電流指令値Ｉx*（x＝u,v,w）が入力される。デッドタイム補償演算部３９は、各相電流指令値Ｉx*（x＝u,v,w）の正負に応じて、各相のデッドタイム補償量βの正負を決定し、この各相のデッドタイム補償量βを各相のＤＵＴＹ指令値αxに加算又は減算することでデッドタイムに起因する電流歪みを補償する。デッドタイム補償演算部３９は、補正後の各相ＤＵＴＹ指令値αx’をＰＷＭ出力部４１に出力し、ＰＷＭ出力部４１は、補正後の各相ＤＵＴＹ指令値αx’に基づきモータ制御信号をモータ駆動回路４０に出力する。
【００３８】
次に、本実施形態のＣＰＵ２９によるモータ制御の処理手順について説明する。
本実施形態では、ＣＰＵ２９は、定時割り込みにより所定周期毎（例えば２００μ秒毎）に、図４のフローチャートに示すステップ１０１〜ステップ１０９の各処理を実行する。
【００３９】
ＣＰＵ２９は、先ず、上記各センサの出力信号に基づいて各状態量（相電流値Iｕ、Iｖ、Iｗ、回転角θ(n+1)、操舵トルクτ、車速Ｖ）を検出する（ステップ１０１）。次に、ＣＰＵ２９は、回転角補正演算を行い、Ｕ相モータ回転角度θu(n+1)、Ｖ相モータ回転角度θv(n+１)及びＷ相モータ回転角度θw(n+1)を出力する（ステップ１０２）。
続いてブラシレスモータ２１が発生するアシストトルクの制御目標であるｑ軸電流指令値Ｉｑ＊、並びにｄ軸電流指令値Ｉｄ＊（Ｉｄ＊＝０）を演算する（ステップ１０３）。そして、上記Ｕ相モータ回転角度θu(n+1)、Ｖ相モータ回転角度θv(n+１)及びＷ相モータ回転角度θw(n+1)を使用したｄ/ｑ変換により、上記ステップ１０１において検出された相電流値Iｕ、Iｖ、Iｗをｄ軸電流値Ｉｄ及びｑ軸電流値Ｉｑに変換する（ステップ１０４）。
【００４０】
次に、ＣＰＵ２９は、ｄ軸電流指令値Ｉｄ＊とｄ軸電流値Ｉｄ、並びにｑ軸電流指令値Ｉｑ＊とｑ軸電流値Ｉｑとの偏差に基づくフィードバック制御演算（比例・積分制御）を実行することにより、ｄ軸電圧指令値Ｖｄ＊及びｑ軸電圧指令値Ｖｑ＊を演算する（ステップ１０５）。
【００４１】
続いて、ＣＰＵ２９は、ｄ/ｑ逆変換により、上記ステップ１０５において演算したｄ軸電圧指令値Ｖｄ＊及びｑ軸電圧指令値Ｖｑ＊を三相の各相電圧指令値Ｖｕ＊，Ｖｖ＊，Ｖｗ＊に変換する（ステップ１０６）。そして、この各相電圧指令値Ｖｕ＊，Ｖｖ＊，Ｖｗ＊に基づいて各相のＤＵＴＹ指令値αu、αｖ、αｗを生成する（ＤＵＴＹ指令値演算、ステップ１０７）。
【００４２】
そして、ＣＰＵ２９は、デッドタイム補償演算を行い、補正後の各相ＤＵＴＹ指令値αu’、αv’、αw’ に基づいてモータ制御信号を生成（ステップ１０８）し、そのモータ制御信号をモータ駆動回路４０へと出力する（ＰＷＭ出力、ステップ１０９）。
【００４３】
次に、上記ステップ１０２における回転角補正演算を図５のフローチャート図に従って説明する。
まず、回転角補正演算は、Ｕ相モータ回転角度θu(n+1)の０rad近傍処理を実施（ステップ２０１）する。次に、Ｗ相モータ回転角度θw(n+1)のπ/３rad近傍処理を実施（ステップ２０２）する。そして、Ｖ相モータ回転角度θv(n+１)の２π/３rad近傍処理を実施（ステップ２０３）した後、Ｕ相モータ回転角度θu(n+1)のπrad近傍処理を実施（ステップ２０４）する。更に、Ｗ相モータ回転角度θw(n+1)の４π/３rad近傍処理を実施（ステップ２０５）した後、Ｖ相モータ回転角度θv(n+１)の５π/３rad近傍処理を実施（ステップ２０６）する。以上の近傍処理を実施した後得られたＵ相モータ回転角度θu(n+1)、Ｖ相モータ回転角度θv(n+１)及びＷ相モータ回転角度θw(n+1)を出力する（ステップ２０７）。
【００４４】
次に、上記ステップ１０２における回転角補正演算を図６〜図８の各相電流指令値と図９〜図１４のフローチャート図に従って詳細に説明する。
まず、ステップ２０１のＵ相モータ回転角度θu(n+1)の０rad近傍処理の詳細を図６と図９のフローチャート図に従って説明する。
【００４５】
図６に示すように、Ｕ相電流指令値Ｉu*は、モータ回転角度θが０rad、πradの近傍でほぼゼロ値となる。ここで、モータが右回転しているときは、モータ回転角が増加し、モータが左回転しているときは、モータ回転角が減少するものとする。
【００４６】
モータが右回りして、モータ回転角度θが０rad近傍、即ちゼロ近傍値（−θα）以上になったときに、モータ回転角度θをゼロ近傍値（θα）に固定する。そして、モータ回転角度θがゼロ近傍値（θα）以上になるまで、モータ回転角度θをゼロ近傍値（θα）に維持する。すると、Ｕ相電流指令値Ｉu*は（−θα）≦θ≦（θα）の範囲ではＩq*・sin（θα）となり、たとえモータの回転角が変動しても、Ｕ相電流指令値Ｉu*はゼロ近傍値でも変化しない。その結果、デッドタイム補償量も負値と正値を繰り返すこともなく、モータからの振動及び異音を抑制することができる。
【００４７】
次に、モータが左回転して、モータ回転角度θが０rad近傍、即ちゼロ近傍値（θα）以下になったときにモータ回転角度θをゼロ近傍値（−θα）に固定する。そして、モータ回転角度θがゼロ近傍値（−θα）以下になるまで、モータ回転角度θをゼロ近傍値（−θα）に維持する。すると、Ｕ相電流指令値Ｉu*は（−θα）≦θ≦（θα）の範囲ではＩq*・sin（−θα）となり、たとえモータの回転角が変動しても、Ｕ相電流指令値Ｉu*はゼロ近傍値でも変化しない。その結果、デッドタイム補償量も負値と正値を繰り返すこともなく、モータからの振動及び異音を抑制することができる。
【００４８】
次に、上記モータ回転角補正演算の詳細を図９のフローチャートに従って説明する。
図９は、Ｕ相電流指令値Ｉu*のモータ回転角度θがゼロ近傍（０rad）領域で、モータが右回転または左回転している場合の、モータ回転角補正演算のフローチャート図である。
ＣＰＵ２９の回転角補正演算部３６は、モータ回転角センサ２２よりモータ回転角データ今回値θ（n+１）と、メモリ部３６cに書き込まれた回転角データ前回値θ（n）と、メモリ部３６dに書き込まれたゼロ近傍値θαと、各モータ回転角固定確定フラグメモリ部３６bに書き込まれたFLGui1、FLGud1を読み込む（ステップ３０１）。
【００４９】
ここで、フラグFLGui1は、モータが右回転中であり、回転角データ今回値θ（n+１）が（−θα）≦θ（n+１）≦（θα）の条件を満たしているか、否かを判定するフラグである。回転角データ今回値θ（n+１）が（−θα）≦θ（n+１）≦（θα）の条件を満たしている場合には、FLGui1に「１」が書き込まれ（「１」はフラグFLGui1がセットされたことを表している）、（−θα）≦θ（n+１）≦（θα）の条件を満たしていない場合には、FLGui1に「０」が書き込まれる（「０」はフラグFLGui1がリセットされたことを表している）。また、フラグFLGud1は、モータが左回転中であり、回転角データ今回値θ（n+１）が（−θα）≦θ（n+１）≦（θα）の条件を満たしているか、否かを判定するフラグである。回転角データ今回値θ（n+１）が（−θα）≦θ（n+１）≦（θα）の条件を満たしている場合には、FLGud1に「１」が書き込まれ、（−θα）≦θ（n+１）≦（θα）の条件を満たしていない場合には、FLGud1に「０」が書き込まれる。
【００５０】
次に、回転角補正演算部３６は、FLGui1が「０」か否かを判断する（ステップ３０２）。
FLGui1が「０」の場合（FLGui1＝０、ステップ３０２：ＹＥＳ）、即ち、モータ右回転中の回転角データ今回値θ（n+１）が（−θα）≦θ（n+１）≦（θα）の条件を満たしていない場合、FLGud1が「０」か否かを判断する（ステップ３０３）。FLGud1が「０」の場合（FLGud1＝０、ステップ３０３：ＹＥＳ）、即ち、モータ左回転中の回転角データ今回値θ（n+１）が（−θα）≦θ（n+１）≦（θα）の条件を満たしていない場合、回転角データ今回値θ（n+１）が回転角データ先回値θ（n）以上か否かを判断する（ステップ３０４）。
【００５１】
回転角データ今回値θ（n+１）が回転角データ先回値θ（n）以上の場合（ステップ３０４：ＹＥＳ）、即ち、モータは右回転していると判断する。
次に、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（−θα）≦θ（n+１）≦（θα）の条件を満たしているか否かを判定する（ステップ３０５）。回転角データ今回値θ（n+１）が（−θα）≦θ（n+１）≦（θα）の条件を満たしている場合（ステップ３０５：ＹＥＳ）、フラグFLGui1に「１」を書き込む（ステップ３０６）。即ち、モータが右回転中にモータ回転角度θが０rad近傍、即ちゼロ近傍値（−θα）以上になり、モータ回転角度θをゼロ近傍値（θα）に固定する。そして、Ｕ相モータ回転角度θu(n+1)に（θα）を出力して処理を終わる（ステップ３０７）。
【００５２】
また、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（−θα）≦θ（n+１）≦（θα）の条件を満たしていない場合（ステップ３０５：ＮＯ）、Ｕ相モータ回転角度θu(n+1)に回転角データ今回値θ（n+１）を出力して処理を終わる（ステップ３０８）。
【００５３】
次に、回転角データ今回値θ（n+１）が回転角データ先回値θ（n）より小さい場合（ステップ３０４：ＮＯ）、即ち、モータは左回転していると判断する。そして、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（−θα）≦θ（n+１）≦（θα）の条件を満たしているか否かを判定する（ステップ３０９）。回転角データ今回値θ（n+１）が（−θα）≦θ（n+１）≦（θα）の条件を満たしている場合（ステップ３０９：ＹＥＳ）、フラグFLGud1に「１」を書き込む（ステップ３１０）。即ち、モータが左回転中にモータ回転角度θが０rad近傍、即ちゼロ近傍値（θα）以下になり、モータ回転角度θをゼロ近傍値（−θα）に固定する。そして、Ｕ相モータ回転角度θu(n+1)に（−θα）を出力して処理を終わる（ステップ３１１）。
【００５４】
また、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（−θα）≦θ（n+１）≦（θα）の条件を満たしていない場合（ステップ３０９：ＮＯ）、Ｕ相モータ回転角度θu(n+1)に回転角データ今回値θ（n+１）を出力して処理を終わる（ステップ３１２）。
【００５５】
次に、FLGud1が「０」でない場合（FLGud1＝１、ステップ３０３：ＮＯ）、即ち、モータが左回転中にモータ回転角度θが０rad近傍、即ちゼロ近傍値（θα）以下になり、モータ回転角度θがゼロ近傍値（−θα）に固定されている場合である。回転角補正演算部３６は、回転角データ今回値θ（n+１）が（−θα）≦θ（n+１）≦（θα）の条件を満たしているか否かを判定する（ステップ３１３）。回転角データ今回値θ（n+１）が（−θα）≦θ（n+１）≦（θα）の条件を満たしている場合（ステップ３１３：ＹＥＳ）、モータ回転角度θをゼロ近傍値（−θα）に固定したまま、Ｕ相モータ回転角度θu(n+1)に（−θα）を出力して処理を終わる（ステップ３１４）。
【００５６】
また、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（−θα）≦θ（n+１）≦（θα）の条件を満たしていない場合（ステップ３１３：ＮＯ）、フラグFLGud1に「０」を書き込む（ステップ３１５）。即ち、モータが左回転中にモータ回転角度θが０rad近傍、即ちゼロ近傍値（−θα）以下になり、モータ回転角度θをゼロ近傍値（−θα）に固定することを解除する。そして、Ｕ相モータ回転角度θu(n+1)に回転角データ今回値θ（n+１）を出力して処理を終わる（ステップ３１６）。
【００５７】
次に、FLGui1が「０」でない場合（FLGui1＝１、ステップ３０２：ＮＯ）、即ち、モータが右回転中にモータ回転角度θが０rad近傍、即ちゼロ近傍値（−θα）以上になり、モータ回転角度θがゼロ近傍値（θα）に固定されている場合である。回転角補正演算部３６は、回転角データ今回値θ（n+１）が（−θα）≦θ（n+１）≦（θα）の条件を満たしているか否かを判定する（ステップ３１７）。回転角データ今回値θ（n+１）が（−θα）≦θ（n+１）≦（θα）の条件を満たしている場合（ステップ３１７：ＹＥＳ）、モータ回転角度θをゼロ近傍値（θα）に固定したまま、Ｕ相モータ回転角度θu(n+1)に（θα）を出力して処理を終わる（ステップ３１８）。
【００５８】
また、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（−θα）≦θ（n+１）≦（θα）の条件を満たしていない場合（ステップ３１７：ＮＯ）、フラグFLGui1に「０」を書き込む（ステップ３１９）。即ち、モータが右回転中にモータ回転角度θが０rad近傍、即ちゼロ近傍値（θα）以上になり、モータ回転角度θをゼロ近傍値（θα）に固定することを解除する。そして、Ｕ相モータ回転角度θu(n+1)に回転角データ今回値θ（n+１）を出力して処理を終わる（ステップ３２０）。
【００５９】
次に、ステップ２０２のＷ相モータ回転角度θw(n+1)のπ/３rad近傍処理の詳細を図７と図１０のフローチャート図に従って説明する。
【００６０】
図７に示すように、Ｗ相電流指令値Ｉw*は、モータ回転角度θがπ/３rad、４π/３radの近傍でほぼゼロ値となる。ここで、モータが右回転しているときは、モータ回転角が増加し、モータが左回転しているときは、モータ回転角が減少するものとする。
【００６１】
モータが右回転して、モータ回転角度θが（π/３−θα）rad近傍、即ちゼロ近傍値（π/３−θα）以上になったときに、モータ回転角度θをゼロ近傍値（π/３＋θα）に固定する。そして、モータ回転角度θがゼロ近傍値（π/３＋θα）以上になるまで、モータ回転角度θをゼロ近傍値（π/３＋θα）に維持する。すると、Ｗ相電流指令値Ｉw*は（π/３−θα）≦θ≦（π/３＋θα）の範囲ではＩq*・sin（π/３＋θα）となり、たとえモータの回転角が変動しても、Ｗ相電流指令値Ｉw*はゼロ近傍値でも変化しない。その結果、デッドタイム補償量も負値と正値を繰り返すこともなく、モータからの振動及び異音を抑制することができる。
【００６２】
次にモータが左回転して、モータ回転角度θがπ/３rad近傍、即ちゼロ近傍値（π/３＋θα）以下になったときにモータ回転角度θをゼロ近傍値（π/３−θα）に固定する。そして、モータ回転角度θがゼロ近傍値（π/３−θα）以下になるまで、モータ回転角度θをゼロ近傍値（π/３−θα）に維持する。すると、Ｗ相電流指令値Ｉw*は（π/３−θα）≦θ≦（π/３＋θα）の範囲ではＩq*・sin（π/３−θα）となり、モータの回転角が変動しても、Ｗ相電流指令値Ｉw*はゼロ近傍値でも変化しない。その結果、デッドタイム補償量も負値と正値を繰り返すこともなく、モータからの振動及び異音を抑制することができる。
【００６３】
次に、上記モータ回転角補正演算の詳細を図１０のフローチャートに従って説明する。
図１０は、Ｗ相電流指令値Ｉw*のモータ回転角度θがπ/３rad近傍で、モータが右回転または左回転している場合の、モータ回転角補正演算のフローチャート図である。
ＣＰＵ２９の回転角補正演算部３６は、モータ回転角センサ２２よりモータ回転角データ今回値θ（n+１）と、メモリ部３６cに書き込まれた回転角データ前回値θ（n）と、メモリ部３６dに書き込まれたゼロ近傍値θαと、各モータ回転角固定確定フラグメモリ部３６bに書き込まれたFLGwi１、FLGwd１を読み込む（ステップ４０１）。
【００６４】
ここで、フラグFLGwi１は、モータが右回転中であり、回転角データ今回値θ（n+１）が（π/３−θα）≦θ（n+１）≦（π/３＋θα）の条件を満たしているか、否かを判定するフラグである。回転角データ今回値θ（n+１）が（π/３−θα）≦θ（n+１）≦（π/３＋θα）の条件を満たしている場合には、FLGwi１に「１」が書き込まれ（「１」はフラグFLGwi１がセットされたことを表している）、（π/３−θα）≦θ（n+１）≦（π/３＋θα）の条件を満たしていない場合には、FLGwi１に「０」が書き込まれる（「０」はフラグFLGwi１がリセットされたことを表している）。また、フラグFLGwd１は、モータが左回転中であり、回転角データ今回値θ（n+１）が（π/３−θα）≦θ（n+１）≦（π/３＋θα）の条件を満たしているか、否かを判定するフラグである。回転角データ今回値θ（n+１）が（π/３−θα）≦θ（n+１）≦（π/３＋θα）の条件を満たしている場合には、FLGwd１に「１」が書き込まれ、（π/３−θα）≦θ（n+１）≦（π/３＋θα）の条件を満たしていない場合には、FLGwd１に「０」が書き込まれる。
【００６５】
次に、回転角補正演算部３６は、FLGwi１が「０」か否かを判断する（ステップ４０２）。
FLGwi１が「０」の場合（FLGwi１＝０、ステップ４０２：ＹＥＳ）、即ち、モータ右回転中の回転角データ今回値θ（n+１）が（π/３−θα）≦θ（n+１）≦（π/３＋θα）の条件を満たしていない場合、FLGwd１が「０」か否かを判断する（ステップ４０３）。FLGwd１が「０」の場合（FLGwd１＝０、ステップ４０３：ＹＥＳ）、即ち、モータ左回転中の回転角データ今回値θ（n+１）が（π/３−θα）≦θ（n+１）≦（π/３＋θα）の条件を満たしていない場合、回転角データ今回値θ（n+１）が回転角データ先回値θ（n）以上か否かを判断する（ステップ４０４）。
【００６６】
回転角データ今回値θ（n+１）が回転角データ先回値θ（n）以上の場合（ステップ４０４：ＹＥＳ）、即ち、モータは右回転していると判断する。
次に、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（π/３−θα）≦θ（n+１）≦（π/３＋θα）の条件を満たしているか否かを判定する（ステップ４０５）。回転角データ今回値θ（n+１）が（π/３−θα）≦θ（n+１）≦（π/３＋θα）の条件を満たしている場合（ステップ４０５：ＹＥＳ）、フラグFLGwi１に「１」を書き込む（ステップ４０６）。即ち、モータが右回転中にモータ回転角度θがπ/３rad近傍、即ちゼロ近傍値（π/３−θα）以上になり、モータ回転角度θをゼロ近傍値（π/３＋θα）に固定する。そして、Ｗ相モータ回転角度θw(n+1)に（π/３＋θα）を出力して処理を終わる（ステップ４０７）。
【００６７】
また、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（π/３−θα）≦θ（n+１）≦（π/３＋θα）の条件を満たしていない場合（ステップ４０５：ＮＯ）、Ｗ相モータ回転角度θw(n+1)に回転角データ今回値θ（n+１）を出力して処理を終わる（ステップ４０８）。
【００６８】
次に、回転角データ今回値θ（n+１）が回転角データ先回値θ（n）より小さい場合（ステップ４０４：ＮＯ）、即ち、モータは左回転していると判断する。そして、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（π/３−θα）≦θ（n+１）≦（π/３＋θα）の条件を満たしているか否かを判定する（ステップ４０９）。回転角データ今回値θ（n+１）が（π/３−θα）≦θ（n+１）≦（π/３＋θα）の条件を満たしている場合（ステップ４０９：ＹＥＳ）、フラグFLGwd１に「１」を書き込む（ステップ４１０）。即ち、モータが左回転中にモータ回転角度θがπ/３rad近傍、即ちゼロ近傍値（π/３＋θα）以下になり、モータ回転角度θをゼロ近傍値（π/３−θα）に固定する。そして、Ｗ相モータ回転角度θw(n+1)に（π/３−θα）を出力して処理を終わる（ステップ４１１）。
【００６９】
また、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（π/３−θα）≦θ（n+１）≦（π/３＋θα）の条件を満たしていない場合（ステップ４０９：ＮＯ）、Ｗ相モータ回転角度θw
(n+1)に回転角データ今回値θ（n+１）を出力して処理を終わる（ステップ４１２）。
【００７０】
次に、FLGwd１が「０」でない場合（FLGwd１＝１、ステップ４０３：ＮＯ）、即ち、モータが左回転中にモータ回転角度θがπ/３rad近傍、即ちゼロ近傍値（π/３＋θα）以下になり、モータ回転角度θがゼロ近傍値（π/３−θα）に固定されている場合である。回転角補正演算部３６は、回転角データ今回値θ（n+１）が（π/３−θα）≦θ（n+１）≦（π/３＋θα）の条件を満たしているか否かを判定する（ステップ４１３）。回転角データ今回値θ（n+１）が（π/３−θα）≦θ（n+１）≦（π/３＋θα）の条件を満たしている場合（ステップ４１３：ＹＥＳ）、モータ回転角度θをゼロ近傍値（π/３−θα）に固定したまま、Ｗ相モータ回転角度θw(n+1)に（π/３−θα）を出力して処理を終わる（ステップ４１４）。
【００７１】
また、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（π/３−θα）≦θ（n+１）≦（π/３＋θα）の条件を満たしていない場合（ステップ４１３：ＮＯ）、フラグFLGwd１に「０」を書き込む（ステップ４１５）。即ち、モータが左回転中にモータ回転角度θがπ/３rad近傍、即ちゼロ近傍値（π/３−θα）以下になり、モータ回転角度θをゼロ近傍値（π/３−θα）に固定することを解除する。そして、Ｗ相モータ回転角度θw(n+1)に回転角データ今回値θ（n+１）を出力して処理を終わる（ステップ４１６）。
【００７２】
次に、FLGwi１が「０」でない場合（FLGwi１＝１、ステップ４０２：ＮＯ）、即ち、モータが右回転中にモータ回転角度θがπ/３rad近傍、即ちゼロ近傍値（π/３−θα）以上になり、モータ回転角度θがゼロ近傍値（π/３＋θα）に固定されている場合である。回転角補正演算部３６は、回転角データ今回値θ（n+１）が（π/３−θα）≦θ（n+１）≦（π/３＋θα）の条件を満たしているか否かを判定する（ステップ４１７）。回転角データ今回値θ（n+１）が（π/３−θα）≦θ（n+１）≦（π/３＋θα）の条件を満たしている場合（ステップ４１７：ＹＥＳ）、モータ回転角度θをゼロ近傍値（π/３＋θα）に固定したまま、Ｗ相モータ回転角度θw(n+1)に（π/３＋θα）を出力して処理を終わる（ステップ４１８）。
【００７３】
また、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（π/３−θα）≦θ（n+１）≦（π/３＋θα）の条件を満たしていない場合（ステップ４１７：ＮＯ）、フラグFLGwi１に「０」を書き込む（ステップ４１９）。即ち、モータが右回転中にモータ回転角度θがπ/３rad近傍、即ちゼロ近傍値（π/３＋θα）以上になり、モータ回転角度θをゼロ近傍値（π/３＋θα）に固定することを解除する。そして、Ｗ相モータ回転角度θw(n+1)に回転角データ今回値θ（n+１）を出力して処理を終わる（ステップ４２０）。
【００７４】
次に、ステップ２０３のＶ相モータ回転角度θv(n+1)の２π/３rad近傍処理の詳細を図８と図１１のフローチャート図に従って説明する。
【００７５】
図８に示すように、Ｖ相電流指令値Ｉv*は、モータ回転角度θが２π/３rad、５π/３radの近傍でほぼゼロ値となる。ここで、モータが右回転しているときは、モータ回転角が増加し、モータが左回転しているときは、モータ回転角が減少するものとする。
【００７６】
モータが右回転して、モータ回転角度θが（２π/３−θα）rad近傍、即ちゼロ近傍値（２π/３−θα）以上になったときに、モータ回転角度θをゼロ近傍値（２π/３＋θα）に固定する。そして、モータ回転角度θがゼロ近傍値（２π/３＋θα）以上になるまで、モータ回転角度θをゼロ近傍値（２π/３＋θα）に維持する。すると、Ｖ相電流指令値Ｉv*は（２π/３−θα）≦θ≦（２π/３＋θα）の範囲ではＩq*・sin（２π/３＋θα）となり、たとえモータの回転角が変動しても、Ｗ相電流指令値Ｉw*はゼロ近傍値でも変化しない。その結果、デッドタイム補償量も負値と正値を繰り返すこともなく、モータからの振動及び異音を抑制することができる。
【００７７】
次にモータが左回転して、モータ回転角度θが２π/３rad近傍、即ちゼロ近傍値（２π/３＋θα）以下になったときにモータ回転角度θをゼロ近傍値（２π/３−θα）に固定する。そして、モータ回転角度θがゼロ近傍値（２π/３−θα）以下になるまで、モータ回転角度θをゼロ近傍値（２π/３−θα）に維持する。すると、Ｖ相電流指令値Ｉv*は（２π/３−θα）≦θ≦（２π/３＋θα）の範囲ではＩq*・sin（２π/３−θα）となり、たとえモータの回転角が変動しても、Ｗ相電流指令値Ｉw*はゼロ近傍値でも変化しない。その結果、デッドタイム補償量も負値と正値を繰り返すこともなく、モータからの振動及び異音を抑制することができる。
【００７８】
次に、上記モータ回転角補正演算の詳細を図１１のフローチャートに従って説明する。
図１１は、Ｖ相電流指令値Ｉv*のモータ回転角度θが２π/３rad近傍で、モータが右回転または左回転している場合の、モータ回転角補正演算のフローチャート図である。
ＣＰＵ２９の回転角補正演算部３６は、モータ回転角センサ２２よりモータ回転角データ今回値θ（n+１）と、メモリ部３６cに書き込まれた回転角データ前回値θ（n）と、メモリ部３６dに書き込まれたゼロ近傍値θαと、各モータ回転角固定確定フラグメモリ部３６bに書き込まれたFLGvi１、
FLGvd１を読み込む（ステップ５０１）。
【００７９】
ここで、フラグFLGvi１は、モータが右回転中であり、回転角データ今回値θ（n+１）が（２π/３−θα）≦θ（n+１）≦（２π/３＋θα）の条件を満たしているか、否かを判定するフラグである。回転角データ今回値θ（n+１）が（２π/３−θα）≦θ（n+１）≦（２π/３＋θα）の条件を満たしている場合には、FLGvi１に「１」が書き込まれ（「１」はフラグFLGvi１がセットされたことを表している）、（２π/３−θα）≦θ（n+１）≦（２π/３＋θα）の条件を満たしていない場合には、FLGvi１に「０」が書き込まれる（「０」はフラグFLGvi１がリセットされたことを表している）。また、フラグFLGvd１は、モータが左回転中であり、回転角データ今回値θ（n+１）が（２π/３−θα）≦θ（n+１）≦（２π/３＋θα）の条件を満たしているか、否かを判定するフラグである。回転角データ今回値θ（n+１）が（２π/３−θα）≦θ（n+１）≦（２π/３＋θα）の条件を満たしている場合には、FLGvd１に「１」が書き込まれ、（２π/３−θα）≦θ（n+１）≦（２π/３＋θα）の条件を満たしていない場合には、FLGvd１に「０」が書き込まれる。
【００８０】
次に、回転角補正演算部３６は、FLGvi１が「０」か否かを判断する（ステップ５０２）。
FLGvi１が「０」の場合（FLGvi１＝０、ステップ５０２：ＹＥＳ）、即ち、モータ右回転中の回転角データ今回値θ（n+１）が（２π/３−θα）≦θ（n+１）≦（２π/３＋θα）の条件を満たしていない場合、FLGvd１が「０」か否かを判断する（ステップ５０３）。FLGvd１が「０」の場合（FLGvd１＝０、ステップ５０３：ＹＥＳ）、即ち、モータ左回転中の回転角データ今回値θ（n+１）が（２π/３−θα）≦θ（n+１）≦（２π/３＋θα）の条件を満たしていない場合、回転角データ今回値θ（n+１）が回転角データ先回値θ（n）以上か否かを判断する（ステップ５０４）。
【００８１】
回転角データ今回値θ（n+１）が回転角データ先回値θ（n）以上の場合（ステップ５０４：ＹＥＳ）、即ち、モータは右回転していると判断する。
次に、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（２π/３−θα）≦θ（n+１）≦（２π/３＋θα）の条件を満たしているか否かを判定する（ステップ５０５）。回転角データ今回値θ（n+１）が（２π/３−θα）≦θ（n+１）≦（２π/３＋θα）の条件を満たしている場合（ステップ５０５：ＹＥＳ）、フラグFLGvi１に「１」を書き込む（ステップ５０６）。即ち、モータが右回転中にモータ回転角度θが２π/３rad近傍、即ちゼロ近傍値（２π/３−θα）以上になり、モータ回転角度θをゼロ近傍値（２π/３＋θα）に固定する。そして、Ｖ相モータ回転角度θv(n+１)に（２π/３＋θα）を出力して処理を終わる（ステップ５０７）。
【００８２】
また、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（２π/３−θα）≦θ（n+１）≦（２π/３＋θα）の条件を満たしていない場合（ステップ５０５：ＮＯ）、Ｖ相モータ回転角度θv(n+１)に回転角データ今回値θ（n+１）を出力して処理を終わる（ステップ５０８）。
【００８３】
次に、回転角データ今回値θ（n+１）が回転角データ先回値θ（n）より小さい場合（ステップ５０４：ＮＯ）、即ち、モータは左回転していると判断する。そして、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（２π/３−θα）≦θ（n+１）≦（２π/３＋θα）の条件を満たしているか否かを判定する（ステップ５０９）。回転角データ今回値θ（n+１）が（２π/３−θα）≦θ（n+１）≦（２π/３＋θα）の条件を満たしている場合（ステップ５０９：ＹＥＳ）、フラグFLGvd１に「１」を書き込む（ステップ５１０）。即ち、モータが左回転中にモータ回転角度θが２π/３rad近傍、即ちゼロ近傍値（２π/３＋θα）以下になり、モータ回転角度θをゼロ近傍値（２π/３−θα）に固定する。そして、Ｖ相モータ回転角度θv(n+１)に（２π/３−θα）を出力して処理を終わる（ステップ５１１）。
【００８４】
また、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（２π/３−θα）≦θ（n+１）≦（２π/３＋θα）の条件を満たしていない場合（ステップ５０９：ＮＯ）、Ｖ相モータ回転角度θv(n+１)に回転角データ今回値θ（n+１）を出力して処理を終わる（ステップ５１２）。
【００８５】
次に、FLGvd１が「０」でない場合（FLGvd１＝１、ステップ５０３：ＮＯ）、即ち、モータが左回転中にモータ回転角度θが２π/３rad近傍、即ちゼロ近傍値（２π/３＋θα）以下になり、モータ回転角度θがゼロ近傍値（２π/３−θα）に固定されている場合である。回転角補正演算部３６は、回転角データ今回値θ（n+１）が（２π/３−θα）≦θ（n+１）≦（２π/３＋θα）の条件を満たしているか否かを判定する（ステップ５１３）。回転角データ今回値θ（n+１）が（２π/３−θα）≦θ（n+１）≦（２π/３＋θα）の条件を満たしている場合（ステップ５１３：ＹＥＳ）、モータ回転角度θをゼロ近傍値（２π/３−θα）に固定したまま、Ｖ相モータ回転角度θv(n+１)に（２π/３−θα）を出力して処理を終わる（ステップ５１４）。
【００８６】
また、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（２π/３−θα）≦θ（n+１）≦（２π/３＋θα）の条件を満たしていない場合（ステップ５１３：ＮＯ）、フラグFLGvd１に「０」を書き込む（ステップ５１５）。即ち、モータが左回転中にモータ回転角度θが２π/３rad近傍、即ちゼロ近傍値（２π/３−θα）以下になり、モータ回転角度θをゼロ近傍値（２π/３−θα）に固定することを解除する。そして、Ｖ相モータ回転角度θv(n+１)に回転角データ今回値θ（n+１）を出力して処理を終わる（ステップ５１６）。
【００８７】
次に、FLGvi１が「０」でない場合（FLGvi１＝１、ステップ５０２：ＮＯ）、即ち、モータが右回転中にモータ回転角度θが２π/３rad近傍、即ちゼロ近傍値（２π/３−θα）以上になり、モータ回転角度θがゼロ近傍値（２π/３＋θα）に固定されている場合である。回転角補正演算部３６は、回転角データ今回値θ（n+１）が（２π/３−θα）≦θ（n+１）≦（２π/３＋θα）の条件を満たしているか否かを判定する（ステップ５１７）。回転角データ今回値θ（n+１）が（２π/３−θα）≦θ（n+１）≦（２π/３＋θα）の条件を満たしている場合（ステップ５１７：ＹＥＳ）、モータ回転角度θをゼロ近傍値（２π/３＋θα）に固定したまま、Ｖ相モータ回転角度θv(n+１)に（２π/３＋θα）を出力して処理を終わる（ステップ５１８）。
【００８８】
また、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（２π/３−θα）≦θ（n+１）≦（２π/３＋θα）の条件を満たしていない場合（ステップ５１７：ＮＯ）、フラグFLGvi１に「０」を書き込む（ステップ５１９）。即ち、モータが右回転中にモータ回転角度θが２π/３rad近傍、即ちゼロ近傍値（２π/３＋θα）以上になり、モータ回転角度θをゼロ近傍値（２π/３＋θα）に固定することを解除する。そして、Ｖ相モータ回転角度θv(n+１)に回転角データ今回値θ（n+１）を出力して処理を終わる（ステップ５２０）。
【００８９】
次に、ステップ２０４のＵ相モータ回転角度θu(n+1)のπrad近傍処理の詳細を図６と図１２のフローチャート図に従って説明する。
【００９０】
図６に示すように、Ｕ相電流指令値Ｉu*は、モータ回転角度θが０rad、πradの近傍でほぼゼロ値となる。ここで、モータが右回転しているときは、モータ回転角が増加し、モータが左回転しているときは、モータ回転角が減少するものとする。
【００９１】
まず、モータが右回りして、モータ回転角度θがπrad近傍、即ちゼロ近傍値（π−θα）以上になったときに、モータ回転角度θをゼロ近傍値（π＋θα）に固定する。
そして、モータ回転角度θがゼロ近傍値（π＋θα）以上になるまで、モータ回転角度θをゼロ近傍値（π＋θα）に維持する。すると、Ｕ相電流指令値Ｉu*は（π−θα）≦θ≦（π＋θα）の範囲ではＩq*・sin（π＋θα）となり、たとえモータの回転角が変動しても、Ｕ相電流指令値Ｉu*はゼロ近傍値でも変化しない。その結果、デッドタイム補償量も負値と正値を繰り返すこともなく、モータからの振動及び異音を抑制することができる。
【００９２】
次に、モータが左回転して、モータ回転角度θがπrad近傍、即ちゼロ近傍値（π＋θα）以下になったときに、モータ回転角度θをゼロ近傍値（π−θα）に固定する。
そして、モータ回転角度θがゼロ近傍値（π−θα）以下になるまで、モータ回転角度θをゼロ近傍値（π−θα）に維持する。すると、Ｕ相電流指令値Ｉu*は（π−θα）≦θ≦（π＋θα）の範囲ではＩq*・sin（π−θα）となり、たとえモータの回転角が変動しても、Ｕ相電流指令値Ｉu*はゼロ近傍値でも変化しない。その結果、デッドタイム補償量も負値と正値を繰り返すこともなく、モータからの振動及び異音を抑制することができる。
【００９３】
次に、上記モータ回転角補正演算の詳細を図１２のフローチャートに従って説明する。
図１２は、Ｕ相電流指令値Ｉu*のモータ回転角度θがπrad近傍で、モータが右回転または左回転している場合の、モータ回転角補正演算のフローチャート図である。
ＣＰＵ２９の回転角補正演算部３６は、モータ回転角センサ２２よりモータ回転角データ今回値θ（n+１）と、メモリ部３６cに書き込まれた回転角データ前回値θ（n）と、メモリ部３６dに書き込まれたゼロ近傍値θαと、各モータ回転角固定確定フラグメモリ部３６bに書き込まれたFLGui２、
FLGud２を読み込む（ステップ６０１）。
【００９４】
ここで、フラグFLGui２は、モータが右回転中であり、回転角データ今回値θ（n+１）が（π−θα）≦θ（n+１）≦（π＋θα）の条件を満たしているか、否かを判定するフラグである。回転角データ今回値θ（n+１）が（π−θα）≦θ（n+１）≦（π＋θα）の条件を満たしている場合には、FLGui２に「１」が書き込まれ（「１」はフラグFLGui２がセットされたことを表している）、（π−θα）≦θ（n+１）≦（π＋θα）の条件を満たしていない場合には、FLGui２に「０」が書き込まれる（「０」はフラグFLGui２がリセットされたことを表している）。また、フラグFLGud２は、モータが左回転中であり、回転角データ今回値θ（n+１）が（π−θα）≦θ（n+１）≦（π＋θα）の条件を満たしているか、否かを判定するフラグである。回転角データ今回値θ（n+１）が（π−θα）≦θ（n+１）≦（π＋θα）の条件を満たしている場合には、FLGud２に「１」が書き込まれ、（π−θα）≦θ（n+１）≦（π＋θα）の条件を満たしていない場合には、FLGud２に「０」が書き込まれる。
【００９５】
次に、回転角補正演算部３６は、FLGui２が「０」か否かを判断する（ステップ６０２）。
FLGui２が「０」の場合（FLGui２＝０、ステップ６０２：ＹＥＳ）、即ち、モータ右回転中の回転角データ今回値θ（n+１）が（π−θα）≦θ（n+１）≦（π＋θα）の条件を満たしていない場合、FLGud２が「０」か否かを判断する（ステップ６０３）。FLGud２が「０」の場合（FLGud２＝０、ステップ６０３：ＹＥＳ）、即ち、モータ左回転中の回転角データ今回値θ（n+１）が（π−θα）≦θ（n+１）≦（π＋θα）の条件を満たしていない場合、回転角データ今回値θ（n+１）が回転角データ先回値θ（n）以上か否かを判断する（ステップ６０４）。
【００９６】
回転角データ今回値θ（n+１）が回転角データ先回値θ（n）以上の場合（ステップ６０４：ＹＥＳ）、即ち、モータは右回転していると判断する。
次に、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（π−θα）≦θ（n+１）≦（π＋θα）の条件を満たしているか否かを判定する（ステップ６０５）。回転角データ今回値θ（n+１）が（π−θα）≦θ（n+１）≦（π＋θα）の条件を満たしている場合（ステップ６０５：ＹＥＳ）、フラグFLGui２に「１」を書き込む（ステップ６０６）。即ち、モータが右回転中にモータ回転角度θがπrad近傍、即ちゼロ近傍値（π−θα）以上になり、モータ回転角度θをゼロ近傍値（π＋θα）に固定する。そして、Ｕ相モータ回転角度θu(n+1)に（π＋θα）を出力して処理を終わる（ステップ６０７）。
【００９７】
また、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（π−θα）≦θ（n+１）≦（π＋θα）の条件を満たしていない場合（ステップ６０５：ＮＯ）、Ｕ相モータ回転角度θu(n+1)に回転角データ今回値θ（n+１）を出力して処理を終わる（ステップ６０８）。
【００９８】
次に、回転角データ今回値θ（n+１）が回転角データ先回値θ（n）より小さい場合（ステップ６０４：ＮＯ）、即ち、モータは左回転していると判断する。そして、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（π−θα）≦θ（n+１）≦（π＋θα）の条件を満たしているか否かを判定する（ステップ６０９）。回転角データ今回値θ（n+１）が（π−θα）≦θ（n+１）≦（π＋θα）の条件を満たしている場合（ステップ６０９：ＹＥＳ）、フラグFLGud２に「１」を書き込む（ステップ６１０）。  即ち、モータが左回転中にモータ回転角度θがπrad近傍、即ちゼロ近傍値（π＋θα）以下になり、モータ回転角度θをゼロ近傍値（π−θα）に固定する。そして、Ｕ相モータ回転角度θu(n+1)に（π−θα）を出力して処理を終わる（ステップ６１１）。
【００９９】
また、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（π−θα）≦θ（n+１）≦（π＋θα）の条件を満たしていない場合（ステップ６０９：ＮＯ）、Ｕ相モータ回転角度θu(n+1)に回転角データ今回値θ（n+１）を出力して処理を終わる（ステップ６１２）。
【０１００】
次に、FLGud２が「０」でない場合（FLGud２＝１、ステップ６０３：ＮＯ）、即ち、モータが左回転中にモータ回転角度θがπrad近傍、即ちゼロ近傍値（π＋θα）以下になり、モータ回転角度θがゼロ近傍値（π−θα）に固定されている場合である。回転角補正演算部３６は、回転角データ今回値θ（n+１）が（π−θα）≦θ（n+１）≦（π＋θα）の条件を満たしているか否かを判定する（ステップ６１３）。回転角データ今回値θ（n+１）が（π−θα）≦θ（n+１）≦（π＋θα）の条件を満たしている場合（ステップ６１３：ＹＥＳ）、モータ回転角度θをゼロ近傍値（π−θα）に固定したまま、Ｕ相モータ回転角度θu(n+1)に（π−θα）を出力して処理を終わる（ステップ６１４）。
【０１０１】
また、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（π−θα）≦θ（n+１）≦（π＋θα）の条件を満たしていない場合（ステップ６１３：ＮＯ）、フラグFLGud２に「０」を書き込む（ステップ６１５）。即ち、モータが左回転中にモータ回転角度θがπrad近傍、即ちゼロ近傍値（π−θα）以下になり、モータ回転角度θをゼロ近傍値（π−θα）に固定することを解除する。そして、Ｕ相モータ回転角度θu(n+1)に回転角データ今回値θ（n+１）を出力して処理を終わる（ステップ６１６）。
【０１０２】
次に、FLGui２が「０」でない場合（FLGui２＝１、ステップ６０２：ＮＯ）、即ち、モータが右回転中にモータ回転角度θがπrad近傍、即ちゼロ近傍値（π−θα）以上になり、モータ回転角度θがゼロ近傍値（π＋θα）に固定されている場合である。回転角補正演算部３６は、回転角データ今回値θ（n+１）が（π−θα）≦θ（n+１）≦（π＋θα）の条件を満たしているか否かを判定する（ステップ６１７）。回転角データ今回値θ（n+１）が（π−θα）≦θ（n+１）≦（π＋θα）の条件を満たしている場合（ステップ６１７：ＹＥＳ）、モータ回転角度θをゼロ近傍値（π＋θα）に固定したまま、Ｕ相モータ回転角度θu(n+1)に（π＋θα）を出力して処理を終わる（ステップ６１８）。
【０１０３】
また、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（π−θα）≦θ（n+１）≦（π＋θα）の条件を満たしていない場合（ステップ６１７：ＮＯ）、フラグFLGui２に「０」を書き込む（ステップ６１９）。即ち、モータが右回転中にモータ回転角度θがπrad近傍、即ちゼロ近傍値（π＋θα）以上になり、モータ回転角度θをゼロ近傍値（π＋θα）に固定することを解除する。そして、Ｕ相モータ回転角度θu(n+1)に回転角データ今回値θ（n+１）を出力して処理を終わる（ステップ６２０）。
【０１０４】
次に、ステップ２０５のＷ相モータ回転角度θw(n+1)の４π/３rad近傍処理の詳細を図７と図１３のフローチャート図に従って説明する。
【０１０５】
図７に示すように、Ｗ相電流指令値Ｉw*は、モータ回転角度θがπ/３rad、４π/３radの近傍でほぼゼロ値となる。ここで、モータが右回転しているときは、モータ回転角が増加し、モータが左回転しているときは、モータ回転角が減少するものとする。
【０１０６】
モータが右回転して、モータ回転角度θが４π/３rad近傍、即ちゼロ近傍値（４π/３−θα）以上になったときに、モータ回転角度θをゼロ近傍値（４π/３＋θα）に固定する。そして、モータ回転角度θがゼロ近傍値（４π/３＋θα）以上になるまで、モータ回転角度θをゼロ近傍値（４π/３＋θα）に維持する。すると、Ｗ相電流指令値Ｉw*は（４π/３−θα）≦θ≦（４π/３＋θα）の範囲ではＩq*・sin（４π/３＋θα）となり、たとえモータの回転角が変動しても、Ｗ相電流指令値Ｉw*はゼロ近傍値でも変化しない。その結果、デッドタイム補償量も負値と正値を繰り返すこともなく、モータからの振動及び異音を抑制することができる。
【０１０７】
次に、モータが左回転して、モータ回転角度θが４π/３rad近傍、即ちゼロ近傍値（４π/３＋θα）以下になったときに、モータ回転角度θをゼロ近傍値（４π/３−θα）に固定する。そして、モータ回転角度θがゼロ近傍値（４π/３−θα）以下になるまで、モータ回転角度θをゼロ近傍値（４π/３−θα）に維持する。すると、Ｗ相電流指令値Ｉw*は（４π/３−θα）≦θ≦（４π/３＋θα）の範囲ではＩq*・sin（４π/３−θα）となり、たとえモータの回転角が変動しても、Ｗ相電流指令値Ｉw*はゼロ近傍値でも変化しない。その結果、デッドタイム補償量も負値と正値を繰り返すこともなく、モータからの振動及び異音を抑制することができる。
【０１０８】
次に、上記モータ回転角補正演算の詳細を図１３のフローチャートに従って説明する。
図１３は、Ｗ相電流指令値Ｉw*のモータ回転角度θが４π/３rad近傍で、モータが右回転または左回転している場合の、モータ回転角補正演算のフローチャート図である。
ＣＰＵ２９の回転角補正演算部３６は、モータ回転角センサ２２よりモータ回転角データ今回値θ（n+１）と、メモリ部３６cに書き込まれた回転角データ前回値θ（n）と、メモリ部３６dに書き込まれたゼロ近傍値θαと、各モータ回転角固定確定フラグメモリ部３６bに書き込まれたFLGwi２、
FLGwd２を読み込む（ステップ７０１）。
【０１０９】
ここで、フラグFLGwi２は、モータが右回転中であり、回転角データ今回値θ（n+１）が（４π/３−θα）≦θ（n+１）≦（４π/３＋θα）の条件を満たしているか、否かを判定するフラグである。回転角データ今回値θ（n+１）が（４π/３−θα）≦θ（n+１）≦（４π/３＋θα）の条件を満たしている場合には、FLGwi２に「１」が書き込まれ（「１」はフラグFLGwi２がセットされたことを表している）、（４π/３−θα）≦θ（n+１）≦（４π/３＋θα）の条件を満たしていない場合には、FLGwi２に「０」が書き込まれる（「０」はフラグFLGwi２がリセットされたことを表している）。また、フラグFLGwd２は、モータが左回転中であり、回転角データ今回値θ（n+１）が（４π/３−θα）≦θ（n+１）≦（４π/３＋θα）の条件を満たしているか、否かを判定するフラグである。回転角データ今回値θ（n+１）が（４π/３−θα）≦θ（n+１）≦（４π/３＋θα）の条件を満たしている場合には、FLGwd２に「１」が書き込まれ、（４π/３−θα）≦θ（n+１）≦（４π/３＋θα）の条件を満たしていない場合には、FLGwd２に「０」が書き込まれる。
【０１１０】
次に、回転角補正演算部３６は、FLGwi２が「０」か否かを判断する（ステップ７０２）。
FLGwi２が「０」の場合（FLGwi２＝０、ステップ７０２：ＹＥＳ）、即ち、モータ右回転中の回転角データ今回値θ（n+１）が（４π/３−θα）≦θ（n+１）≦（４π/３＋θα）の条件を満たしていない場合、FLGwd１が「０」か否かを判断する（ステップ７０３）。FLGwd１が「０」の場合（FLGwd１＝０、ステップ７０３：ＹＥＳ）、即ち、モータ左回転中の回転角データ今回値θ（n+１）が（４π/３−θα）≦θ（n+１）≦（４π/３＋θα）の条件を満たしていない場合、回転角データ今回値θ（n+１）が回転角データ先回値θ（n）以上か否かを判断する（ステップ７０４）。
【０１１１】
回転角データ今回値θ（n+１）が回転角データ先回値θ（n）以上の場合（ステップ７０４：ＹＥＳ）、即ち、モータは右回転していると判断する。
次に、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（４π/３−θα）≦θ（n+１）≦（４π/３＋θα）の条件を満たしているか否かを判定する（ステップ７０５）。回転角データ今回値θ（n+１）が（４π/３−θα）≦θ（n+１）≦（４π/３＋θα）の条件を満たしている場合（ステップ７０５：ＹＥＳ）、フラグFLGwi２に「１」を書き込む（ステップ７０６）。即ち、モータが右回転中にモータ回転角度θが４π/３rad近傍、即ちゼロ近傍値（４π/３−θα）以上になり、モータ回転角度θをゼロ近傍値（４π/３＋θα）に固定する。そして、Ｗ相モータ回転角度θw(n+1)に（４π/３＋θα）を出力して処理を終わる（ステップ７０７）。
【０１１２】
また、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（４π/３−θα）≦θ（n+１）≦（４π/３＋θα）の条件を満たしていない場合（ステップ７０５：ＮＯ）、Ｗ相モータ回転角度θw(n+1)に回転角データ今回値θ（n+１）を出力して処理を終わる（ステップ７０８）。
【０１１３】
次に、回転角データ今回値θ（n+１）が回転角データ先回値θ（n）より小さい場合（ステップ７０４：ＮＯ）、即ち、モータは左回転していると判断する。そして、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（４π/３−θα）≦θ（n+１）≦（４π/３＋θα）の条件を満たしているか否かを判定する（ステップ７０９）。回転角データ今回値θ（n+１）が（４π/３−θα）≦θ（n+１）≦（４π/３＋θα）の条件を満たしている場合（ステップ７０９：ＹＥＳ）、フラグFLGwd２に「１」を書き込む（ステップ７１０）。即ち、モータが左回転中にモータ回転角度θが４π/３rad近傍、即ちゼロ近傍値（４π/３＋θα）以下になり、モータ回転角度θをゼロ近傍値（４π/３−θα）に固定する。そして、Ｗ相モータ回転角度θw(n+1)に（４π/３−θα）を出力して処理を終わる（ステップ７１１）。
【０１１４】
また、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（４π/３−θα）≦θ（n+１）≦（４π/３＋θα）の条件を満たしていない場合（ステップ７０９：ＮＯ）、Ｗ相モータ回転角度θw(n+1)に回転角データ今回値θ（n+１）を出力して処理を終わる（ステップ７１２）。
【０１１５】
次に、FLGwd２が「０」でない場合（FLGwd２＝１、ステップ７０３：ＮＯ）、即ち、モータが左回転中にモータ回転角度θが４π/３rad近傍、即ちゼロ近傍値（４π/３＋θα）以下になり、モータ回転角度θがゼロ近傍値（４π/３−θα）に固定されている場合である。回転角補正演算部３６は、回転角データ今回値θ（n+１）が（４π/３−θα）≦θ（n+１）≦（４π/３＋θα）の条件を満たしているか否かを判定する（ステップ７１３）。回転角データ今回値θ（n+１）が（４π/３−θα）≦θ（n+１）≦（４π/３＋θα）の条件を満たしている場合（ステップ７１３：ＹＥＳ）、モータ回転角度θをゼロ近傍値（４π/３−θα）に固定したまま、Ｗ相モータ回転角度θw(n+1)に（４π/３−θα）を出力して処理を終わる（ステップ７１４）。
【０１１６】
また、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（４π/３−θα）≦θ（n+１）≦（４π/３＋θα）の条件を満たしていない場合（ステップ７１３：ＮＯ）、フラグFLGwd２に「０」を書き込む（ステップ７１５）。即ち、モータが左回転中にモータ回転角度θが４π/３rad近傍、即ちゼロ近傍値（４π/３−θα）以下になり、モータ回転角度θをゼロ近傍値（４π/３−θα）に固定することを解除する。そして、Ｗ相モータ回転角度θw(n+1)に回転角データ今回値θ（n+１）を出力して処理を終わる（ステップ７１６）。
【０１１７】
次に、FLGwi２が「０」でない場合（FLGwi２＝１、ステップ７０２：ＮＯ）、即ち、モータが右回転中にモータ回転角度θが４π/３rad近傍、即ちゼロ近傍値（４π/３−θα）以上になり、モータ回転角度θがゼロ近傍値（４π/３＋θα）に固定されている場合である。回転角補正演算部３６は、回転角データ今回値θ（n+１）が（４π/３−θα）≦θ（n+１）≦（４π/３＋θα）の条件を満たしているか否かを判定する（ステップ７１７）。回転角データ今回値θ（n+１）が（４π/３−θα）≦θ（n+１）≦（４π/３＋θα）の条件を満たしている場合（ステップ７１７：ＹＥＳ）、モータ回転角度θをゼロ近傍値（４π/３＋θα）に固定したまま、Ｗ相モータ回転角度θw(n+1)に（４π/３＋θα）を出力して処理を終わる（ステップ７１８）。
【０１１８】
また、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（４π/３−θα）≦θ（n+１）≦（４π/３＋θα）の条件を満たしていない場合（ステップ７１７：ＮＯ）、フラグFLGwi２に「０」を書き込む（ステップ７１９）。即ち、モータが右回転中にモータ回転角度θが４π/３rad近傍、即ちゼロ近傍値（４π/３＋θα）以上になり、モータ回転角度θをゼロ近傍値（４π/３＋θα）に固定することを解除する。そして、Ｗ相モータ回転角度θw(n+1)に回転角データ今回値θ（n+１）を出力して処理を終わる（ステップ７２０）。
【０１１９】
次に、ステップ２０６のＶ相モータ回転角度θv(n+1)の５π/３rad近傍処理の詳細を図８と図１４のフローチャート図に従って説明する。
【０１２０】
図８に示すように、Ｖ相電流指令値Ｉv*は、モータ回転角度θが２π/３rad、５π/３radの近傍でほぼゼロ値となる。ここで、モータが右回転しているときは、モータ回転角が増加し、モータが左回転しているときは、モータ回転角が減少するものとする。
【０１２１】
モータが右回転して、モータ回転角度θが５π/３rad近傍、即ちゼロ近傍値（５π/３−θα）以上になったときに、モータ回転角度θをゼロ近傍値（５π/３＋θα）に固定する。そして、モータ回転角度θがゼロ近傍値（５π/３＋θα）以上になるまで、モータ回転角度θをゼロ近傍値（５π/３＋θα）に維持する。すると、Ｖ相電流指令値Ｉv*は（５π/３−θα）≦θ≦（５π/３＋θα）の範囲ではＩq*・sin（５π/３＋θα）となり、たとえモータの回転角が変動しても、Ｖ相電流指令値Ｉv*はゼロ近傍値でも変化しない。その結果、デッドタイム補償量も負値と正値を繰り返すこともなく、モータからの振動及び異音を抑制することができる。
【０１２２】
次に、モータが左回転して、モータ回転角度θが５π/３rad近傍、即ちゼロ近傍値（５π/３＋θα）以下になったときに、モータ回転角度θをゼロ近傍値（５π/３−θα）に固定する。そして、モータ回転角度θがゼロ近傍値（５π/３−θα）以下になるまで、モータ回転角度θをゼロ近傍値（５π/３−θα）に維持する。すると、Ｖ相電流指令値Ｉv*は（５π/３−θα）≦θ≦（５π/３＋θα）の範囲ではＩq*・sin（５π/３−θα）となり、たとえモータの回転角が変動しても、Ｖ相電流指令値Ｉv*はゼロ近傍値でも変化しない。その結果、デッドタイム補償量も負値と正値を繰り返すこともなく、モータからの振動及び異音を抑制することができる。
【０１２３】
次に、上記モータ回転角補正演算の詳細を図１４のフローチャートに従って説明する。
図１４は、Ｖ相電流指令値Ｉv*のモータ回転角度θが５π/３rad近傍で、モータが右回転または左回転している場合の、モータ回転角補正演算のフローチャート図である。
ＣＰＵ２９の回転角補正演算部３６は、モータ回転角センサ２２よりモータ回転角データ今回値θ（n+１）と、メモリ部３６cに書き込まれた回転角データ前回値θ（n）と、メモリ部３６dに書き込まれたゼロ近傍値θαと、各モータ回転角固定確定フラグメモリ部３６bに書き込まれたFLGvi２、FLGvd２を読み込む（ステップ８０１）。
【０１２４】
ここで、フラグFLGvi２は、モータが右回転中であり、回転角データ今回値θ（n+１）が（５π/３−θα）≦θ（n+１）≦（５π/３＋θα）の条件を満たしているか、否かを判定するフラグである。回転角データ今回値θ（n+１）が（５π/３−θα）≦θ（n+１）≦（５π/３＋θα）の条件を満たしている場合には、FLGvi２に「１」が書き込まれ（「１」はフラグFLGvi２がセットされたことを表している）、（５π/３−θα）≦θ（n+１）≦（５π/３＋θα）の条件を満たしていない場合には、FLGvi２に「０」が書き込まれる（「０」はフラグFLGvi２がリセットされたことを表している）。また、フラグFLGvd２は、モータが左回転中であり、回転角データ今回値θ（n+１）が（５π/３−θα）≦θ（n+１）≦（５π/３＋θα）の条件を満たしているか、否かを判定するフラグである。回転角データ今回値θ（n+１）が（５π/３−θα）≦θ（n+１）≦（５π/３＋θα）の条件を満たしている場合には、FLGvd２に「１」が書き込まれ、（５π/３−θα）≦θ（n+１）≦（５π/３＋θα）の条件を満たしていない場合には、FLGvd２に「０」が書き込まれる。
【０１２５】
次に、回転角補正演算部３６は、FLGvi２が「０」か否かを判断する（ステップ８０２）。
FLGvi２が「０」の場合（FLGvi２＝０、ステップ８０２：ＹＥＳ）、即ち、モータ右回転中の回転角データ今回値θ（n+１）が（５π/３−θα）≦θ（n+１）≦（５π/３＋θα）の条件を満たしていない場合、FLGvd２が「０」か否かを判断する（ステップ８０３）。FLGvd２が「０」の場合（FLGvd２＝０、ステップ８０３：ＹＥＳ）、即ち、モータ左回転中の回転角データ今回値θ（n+１）が（５π/３−θα）≦θ（n+１）≦（５π/３＋θα）の条件を満たしていない場合、回転角データ今回値θ（n+１）が回転角データ先回値θ（n）以上か否かを判断する（ステップ８０４）。
【０１２６】
回転角データ今回値θ（n+１）が回転角データ先回値θ（n）以上の場合（ステップ８０４：ＹＥＳ）、即ち、モータは右回転していると判断する。
次に、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（５π/３−θα）≦θ（n+１）≦（５π/３＋θα）の条件を満たしているか否かを判定する（ステップ８０５）。回転角データ今回値θ（n+１）が（５π/３−θα）≦θ（n+１）≦（５π/３＋θα）の条件を満たしている場合（ステップ８０５：ＹＥＳ）、フラグFLGvi２に「１」を書き込む（ステップ８０６）。即ち、モータが右回転中にモータ回転角度θが５π/３rad近傍、即ちゼロ近傍値（５π/３−θα）以上になり、モータ回転角度θをゼロ近傍値（５π/３＋θα）に固定する。そして、Ｖ相モータ回転角度θv(n+１)に（５π/３＋θα）を出力して処理を終わる（ステップ８０７）。
【０１２７】
また、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（５π/３−θα）≦θ（n+１）≦（５π/３＋θα）の条件を満たしていない場合（ステップ８０５：ＮＯ）、Ｖ相モータ回転角度θv(n+１)に回転角データ今回値θ（n+１）を出力して処理を終わる（ステップ８０８）。
【０１２８】
次に、回転角データ今回値θ（n+１）が回転角データ先回値θ（n）より小さい場合（ステップ８０４：ＮＯ）、即ち、モータは左回転していると判断する。そして、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（５π/３−θα）≦θ（n+１）≦（５π/３＋θα）の条件を満たしているか否かを判定する（ステップ８０９）。回転角データ今回値θ（n+１）が（５π/３−θα）≦θ（n+１）≦（５π/３＋θα）の条件を満たしている場合（ステップ８０９：ＹＥＳ）、フラグFLGvd２に「１」を書き込む（ステップ８１０）。即ち、モータが左回転中にモータ回転角度θが５π/３rad近傍、即ちゼロ近傍値（５π/３＋θα）以下になり、モータ回転角度θをゼロ近傍値（５π/３−θα）に固定する。そして、Ｖ相モータ回転角度θv(n+１)に（５π/３−θα）を出力して処理を終わる（ステップ８１１）。
【０１２９】
また、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（５π/３−θα）≦θ（n+１）≦（５π/３＋θα）の条件を満たしていない場合（ステップ８０９：ＮＯ）、Ｖ相モータ回転角度θv(n+１)に回転角データ今回値θ（n+１）を出力して処理を終わる（ステップ８１２）。
【０１３０】
次に、FLGvd２が「０」でない場合（FLGvd２＝１、ステップ８０３：ＮＯ）、即ち、モータが左回転中にモータ回転角度θが５π/３rad近傍、即ちゼロ近傍値（５π/３＋θα）以下になり、モータ回転角度θがゼロ近傍値（５π/３−θα）に固定されている場合である。回転角補正演算部３６は、回転角データ今回値θ（n+１）が（５π/３−θα）≦θ（n+１）≦（５π/３＋θα）の条件を満たしているか否かを判定する（ステップ８１３）。回転角データ今回値θ（n+１）が（５π/３−θα）≦θ（n+１）≦（５π/３＋θα）の条件を満たしている場合（ステップ８１３：ＹＥＳ）、モータ回転角度θをゼロ近傍値（５π/３−θα）に固定したまま、Ｖ相モータ回転角度θv(n+１)に（５π/３−θα）を出力して処理を終わる（ステップ８１４）。
【０１３１】
また、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（５π/３−θα）≦θ（n+１）≦（５π/３＋θα）の条件を満たしていない場合（ステップ８１３：ＮＯ）、フラグFLGvd２に「０」を書き込む（ステップ８１５）。即ち、モータが左回転中にモータ回転角度θが５π/３rad近傍、即ちゼロ近傍値（５π/３−θα）以下になり、モータ回転角度θをゼロ近傍値（５π/３−θα）に固定することを解除する。そして、Ｖ相モータ回転角度θv(n+１)に回転角データ今回値θ（n+１）を出力して処理を終わる（ステップ８１６）。
【０１３２】
次に、FLGvi２が「０」でない場合（FLGvi２＝１、ステップ８０２：ＮＯ）、即ち、モータが右回転中にモータ回転角度θが５π/３rad近傍、即ちゼロ近傍値（５π/３−θα）以上になり、モータ回転角度θがゼロ近傍値（５π/３＋θα）に固定されている場合である。回転角補正演算部３６は、回転角データ今回値θ（n+１）が（５π/３−θα）≦θ（n+１）≦（５π/３＋θα）の条件を満たしているか否かを判定する（ステップ８１７）。回転角データ今回値θ（n+１）が（５π/３−θα）≦θ（n+１）≦（５π/３＋θα）の条件を満たしている場合（ステップ８１７：ＹＥＳ）、モータ回転角度θをゼロ近傍値（５π/３＋θα）に固定したまま、Ｖ相モータ回転角度θv(n+１)に（５π/３＋θα）を出力して処理を終わる（ステップ８１８）。
【０１３３】
また、回転角補正演算部３６は、回転角データ今回値θ（n+１）が（５π/３−θα）≦θ（n+１）≦（５π/３＋θα）の条件を満たしていない場合（ステップ８１７：ＮＯ）、フラグFLGvi２に「０」を書き込む（ステップ８１９）。即ち、モータが右回転中にモータ回転角度θが５π/３rad近傍、即ちゼロ近傍値（５π/３＋θα）以上になり、モータ回転角度θをゼロ近傍値（５π/３＋θα）に固定することを解除する。そして、Ｖ相モータ回転角度θv(n+１)に回転角データ今回値θ（n+１）を出力して処理を終わる（ステップ８２０）。
【０１３４】
次に、ステップ１０８におけるデッドタイム補償演算の詳細を図１５のフローチャート図に従って説明する。
ＣＰＵ２９のデッドタイム補償演算部３９は、各相電流指令値生成部３５から各相電流指令値Ｉx*を取得し（ステップ９０１）、各相ＤＵＴＹ指令値演算部３８から各相ＤＵＴＹ指令値αxを取得するとともに（ステップ９０２）、デッドタイム補償量メモリ部４２から各相のデッドタイム補償量βを取得する（ステップ９０３）。
【０１３５】
次に、デッドタイム補償演算部３９は、各相電流指令値生成部３５から取得した各相電流指令値Ｉx*がゼロより大きいか否かを判定する（ステップ９０４）。
各相電流指令値Ｉx*がゼロより大きい場合（Ｉx*＞０、ステップ９０４：ＹＥＳ）、即ち、各相電流指令値Ｉx*が正値の場合、デッドタイム補償演算部３９は、各相ＤＵＴＹ指令値αxに、各相のデッドタイム補償量βを加算して（ステップ９０５）、補正後の各相ＤＵＴＹ指令値αx’をＰＷＭ出力部４１へ出力する（ステップ９０６）。
【０１３６】
また、各相電流指令値Ｉx*がゼロ以下の場合（Ｉx*≦０、ステップ９０４：ＮＯ）、デッドタイム補償演算部３９は、各相電流指令値Ｉx*が負値であるか、または、ゼロであるかを判定する（ステップ９０７）。各相電流指令値Ｉx*が負値である場合（Ｉx*＜０、ステップ９０７：ＹＥＳ）、デッドタイム補償演算部３９は、各相ＤＵＴＹ指令値αxから、各相のデッドタイム補償量βを減算して（ステップ９０８）、補正後の各相ＤＵＴＹ指令値αx’をＰＷＭ出力部４１へ出力する（ステップ９０６）。
また、各相電流指令値Ｉx*がゼロの場合（Ｉx*＝０、ステップ９０７：ＮＯ）、デッドタイム補償演算部３９は、各相ＤＵＴＹ指令値αxを補正後の各相ＤＵＴＹ指令値αx’として（ステップ９０９）、ＰＷＭ出力部４１へ出力する（ステップ９０６）。
【０１３７】
このように、デッドタイム補償演算部３９は、Ｕ，Ｖ，Ｗ相の各相毎に上記ステップ９０１〜ステップ９０９の処理を実行することにより、各相のＤＵＴＹ指令値αu、αv、αwを補正し、その補正後の各相ＤＵＴＹ指令値αu’、αv’、αw’をＰＷＭ出力部４１に出力する。そして、ＰＷＭ出力部４１は、デッドタイム補償演算部３９により補正された補正後の各相ＤＵＴＹ指令値αu’、αv’、αw’と搬送波である三角波δとの比較に基づいてモータ制御信号を生成し（図１７参照）、そのモータ制御信号をモータ駆動回路４０へ出力する。
【０１３８】
次に、上記のように構成された本実施形態のＥＰＳ１の作用及び効果について説明する。
上述のように、各相電流指令値Ｉx*がゼロに近い値になった場合には、各相電流指令値Ｉx*を決定するモータ回転角センサ２２で検出するモータの回転角の変動のために、各相電流指令値が正値と負値との間を頻繁にクロスするクロス現象が発生する。クロス現象が発生すると、各相電流指令値の正負の切り替えが頻繁に行なわれるため、デッドタイム補償の正負の切り替えも頻繁に行なわれるため、モータからの振動及び異音が発生するおそれがある。
【０１３９】
この点を踏まえ、本実施形態のＥＰＳ１は、各相電流指令値Ｉx*がゼロに近い値になった場合には、各相のモータ回転角θを所定範囲で固定することとした。これにより、各相電流指令値Ｉx*がゼロに近い値になっても、各相電流指令値Ｉx*が正値と負値との間を頻繁にクロスするクロス現象が発生しなくなる。その結果、ＥＣＵ２７のデッドタイム補償演算部３９で、デッドタイム補償の正負の切り替えも頻繁に行なわれなくなり、モータからの振動及び異音の発生を防止するとともに操舵フィーリングの向上を図ることができる。
【０１４０】
なお、本実施形態は以下のように変更してもよい。
（１）本実施形態では、各相電流指令値Ix*の正値/負値にかかわらず同じ大きさのデッドタイム補償量βが用いられたが、各相電流指令値Ix*の正値/負値に応じて大きさの異なるデッドタイム補償量を使い分けてもよい。
【０１４１】
（２）本実施形態では、各相電流指令値Ix*のゼロ近傍値θαを、各相電流指令値Ix*の正領域/負領域にかかわらず同じ大きさとしたが、勿論、正領域/負領域によって異なる値としてもよい。
【０１４２】
（３）本実施形態では、Ｕ，Ｖ，Ｗ相の各相において同一のデッドタイム補償量βが用いられたが、Ｕ，Ｖ，Ｗ相の各相に応じた各相デッドタイム補償量βを使い分けてもよい。
【０１４３】
（４）本実施形態では、例えば、ゼロクロス近傍の所定範囲内に入った各相電流指令値Ix*が、再び所定範囲外に出た場合には、直ちにフラグFLGxxxがリセットされる構成であった。しかし、本発明はこの様な構成に限定されるわけではない。例えば、負値の領域からゼロクロス近傍の所定範囲内に入った各相電流指令値Ix*が、再び負側の所定範囲外に出た場合には、各相電流指令値Ix*が複数周期（例えば２周期）以上連続して所定範囲外にあることが確認された場合にのみ、フラグFLGxxxをリセットする構成であってもよい。この様な構成を備えることで、各相電流指令値Ix*が所定範囲の上下限値（±θα）近傍ではねて所定範囲の内外を行き来する場合であっても、デッドタイム補償値βがそれに伴い頻繁に切り替えられるのを効果的に防止することが可能である。
【０１４４】
（５）本実施形態では、本発明をコラムアシストＥＰＳに具体化したが、本発明をラックアシストＥＰＳやピニオンアシストＥＰＳに適用してもよい。
【符号の説明】
【０１４５】
１：電動パワーステアリング装置（ＥＰＳ）、２：ステアリング、
３：ステアリングシャフト、４：ラックアンドピニオン機構、５：ラック軸、
８：コラムシャフト、９：インターミディエイトシャフト、１０：ピニオンシャフト、
１１：タイロッド、１２：転舵輪、２１：モータ、２２：モータ回転角センサ、
２３：減速機構、２４：ＥＰＳアクチュエータ、２５：車速センサ、
２６：トルクセンサ、２７：ＥＣＵ、２８：バッテリ、
２９：ＣＰＵ、３０u、３０v、３０w：電流センサ、３１：電流指令値演算部、
３２：ｄ／ｑ変換演算部、３３，３４：ＰＩ制御演算部、
３５：各相電流指令値生成部、３６：回転角補正演算部、３７：ｄ／ｑ逆変換演算部、
３８：各相ＤＵＴＹ指令値演算部、３９：デッドタイム補償演算部、
４０：モータ駆動回路、４１：ＰＷＭ出力部、４２：デッドタイム補償量、
４３：各相ＤＵＴＹ指令値生成部、４４：モータ制御信号生成部、
Ｖ：車速、τ：操舵トルク、θ：モータ回転角、
Ｉu、Ｉv、Ｉw：各相電流値、Ｉq*：ｑ軸電流指令値、Ｉd*：ｄ軸電流指令値、
Ｉd：ｄ軸電流値、Ｉq：ｑ軸電流値、Ｖd*：ｄ軸電圧指令値、Ｖq*：ｑ軸電圧指令値、
Ｖu*、Ｖv*、Ｖw*：各相電圧指令値、αu、αv、αw：各相ＤＵＴＹ指令値、
β：デッドタイム補償量、αu’、αv’、αw’： 補正後の各相ＤＵＴＹ指令値、
Ｉu*、Ｉv*、Ｉw*：各相電流指令値、θα：各相電流指令値のゼロ近傍値、
δ：三角波（搬送波）、
FLGuix、FLGudx：Ｕ相電流指令値のモータ回転角固定確定フラグ、
FLGvix、FLGvdx：Ｖ相電流指令値のモータ回転角固定確定フラグ、
FLGwix、FLGwdx：Ｗ相電流指令値のモータ回転角固定確定フラグ、
θ（n）：回転角データ前回値、θ（n+１）：回転角データ今回値
【図１】
2012065381.tif 000003
【図２】
2012065381.tif 000004
【図３】
2012065381.tif 000005
【図４】
2012065381.tif 000006
【図５】
2012065381.tif 000007
【図６】
2012065381.tif 000008
【図７】
2012065381.tif 000009
【図８】
2012065381.tif 000010
【図９】
2012065381.tif 000011
【図１０】
2012065381.tif 000012
【図１１】
2012065381.tif 000013
【図１２】
2012065381.tif 000014
【図１３】
2012065381.tif 000015
【図１４】
2012065381.tif 000016
【図１５】
2012065381.tif 000017
【図１６】
2012065381.tif 000018
【図１７】
2012065381.tif 000019
【図１８】
2012065381.tif 000020
【図１９】
2012065381.tif 000021