(57)【要約】【課題】Ａ，Ｂ，Ｚ各相信号の何れか１つ又は２つが異常になっても、所望の信頼性を有する回転角を得られるようにする。【解決手段】デコーダ１は、モータ１の回転に応じたＡ，Ｂ，Ｚ各相信号に基づいてモータ１の回転角φを検出（デコード）する。角度信号監視部４３は、Ａ，Ｂ，Ｚ各相信号の何れか１つ又は２つの異常を判断する。デコーダ１は、Ａ，Ｂ，Ｚ各相信号がいずれも正常である場合は、Ａ，Ｂ，Ｚ各相信号に基づく予め決められた通常デコード方式にて回転角φを検出する。一方、角度信号監視部４３によりＡ，Ｂ，Ｚ各相信号のうち何れか１つ又は２つが異常と判断された場合は、デコーダ１は、異常と判断されなかった他の１つ又は２つの正常な相信号を用いた所定の異常時デコード方式にて回転角φを検出する。【選択図】図１
2013257165.tif 000002
【特許請求の範囲】
【請求項１】
回転体（１）が一定角度回転する毎に入力される、互いに位相がずれた第１及び第２のパルス信号、及び前記回転体が前記一定角度よりも大きい３６０度／ｎ（ｎは１以上の整数）回転する毎に入力される第３のパルス信号を用いて、予め決められた所定の通常検出方式（Ｓ３２０）により、前記回転体の回転方向を検出しつつその回転角を検出する回転角検出手段（４１）と、
前記各パルス信号のうち少なくとも１つについて異常か否かを判断するパルス信号判断手段（４３）と、
を備え、
前記回転角検出手段は、前記パルス信号判断手段により前記各パルス信号の何れか１つ又は２つが異常と判断された場合は、異常と判断されなかった他の１つ又は２つの正常なパルス信号を用いて、その正常なパルス信号の種類に応じた所定の異常時検出方式により前記回転体の回転角を検出する
ことを特徴とする回転角検出装置。
【請求項２】
請求項１に記載の回転角検出装置であって、
前記パルス信号判断手段は、
前記第１及び第２のパルス信号の何れか一方に基づいて他方のパルス信号が異常か否かを判断する第１の判断機能（Ｓ１５０，Ｓ１６０，Ｓ１９０，Ｓ２１０）、前記第３のパルス信号に基づいて前記第１及び第２のパルス信号の双方が異常か否かを判断する第２の判断機能（Ｓ１２０）、および前記第１及び第２のパルス信号に基づいて前記第３のパルス信号が異常か否かを判断する第３の判断機能（Ｓ１４０）のうち少なくとも１つの判断機能を有し、
前記回転角検出手段は、
前記異常時検出方式として、前記第１の判断機能により前記他方のパルス信号が異常と判断された場合に用いる、前記一方のパルス信号および前記第３のパルス信号を用いた第１の異常時検出方式（Ｓ３４０，Ｓ３６０）、前記第２の判断機能により前記第１及び第２のパルス信号の双方が異常と判断された場合に用いる、前記第３のパルス信号を用いた第２の異常時検出方式（Ｓ３８０）、および前記第３の判断機能により前記第３のパルス信号が異常と判断された場合に用いる、前記第１及び第２のパルス信号を用いた第３の異常時検出方式（Ｓ４３０）のうち、少なくとも、前記パルス信号判断手段が有している前記判断機能に対応した異常時検出方式を有する
ことを特徴とする回転角検出装置。
【請求項３】
請求項２に記載の回転角検出装置であって、
前記パルス信号判断手段は、少なくとも前記第１の判断機能を備えており、
前記第１の判断機能は、前記第１及び第２のパルス信号の何れか一方のエッジ変化が連続して所定回数以上生じた期間中に他方のパルス信号のエッジ変化が生じなかった場合にその他方のパルス信号が異常と判断する機能であり、
前記回転角検出手段は、少なくとも前記第１の異常時検出方式を備えており、
前記第１の異常時検出方式は、前記第１の判断機能により異常と判断される前に前記通常検出方式により検出されていた回転方向を保持しつつ、前記第３のパルス信号が入力される毎に前記回転角を初期値に設定すると共にその初期値からの相対的角度変化量を前記他方のパルス信号を用いて検出することによりその相対的角度変化量を前記回転角として検出するよう構成されている
ことを特徴とする回転角検出装置。
【請求項４】
請求項３に記載の回転角検出装置であって、
前記回転角検出手段は、前記第３のパルス信号が発生する毎に、前記回転角を初期値に設定すると共に、その発生以前の過去の前記第３のパルス信号の発生周期を用いて、次に再び第３のパルス信号が発生するまでの回転速度を推定して、その推定した回転速度に従って前記初期値からの変化量である推定回転角を算出する回転角推定手段（４４）を備え、
前記第１の異常時検出方式は、前記他方のパルス信号によって前記相対的角度変化量が現在の値から次の値へ変化する間に、前記回転角推定手段により算出された前記推定回転角が、その現在の値と次の値の間の範囲内の角度になったならば、前記次の値へ変化するまでの間は、その推定回転角を前記回転角として検出するよう構成されている
ことを特徴とする回転角検出装置。
【請求項５】
請求項２〜請求項４の何れか１項に記載の回転角検出装置であって、
前記パルス信号判断手段は、少なくとも前記第２の判断機能を備えており、
前記第２の判断機能は、前記第３のパルス信号の１周期期間中に前記第１及び第２のパルス信号のエッジ変化がいずれも生じなかった場合にその第１及び第２のパルス信号の双方が異常と判断する機能であり、
前記回転角検出手段は、
前記第３のパルス信号が発生する毎に、前記回転角を初期値に設定すると共に、その発生以前の過去の前記第３のパルス信号の発生周期を用いて、次に再び第３のパルス信号が発生するまでの回転速度を推定して、その推定した回転速度に従って前記初期値からの変化量である推定回転角を算出する回転角推定手段を備え、
前記異常時検出方式として、少なくとも前記第２の異常時検出方式を備えており、
前記第２の異常時検出方式は、前記第２の判断機能により異常と判断される前に前記通常検出方式により検出されていた回転方向を保持しつつ、前記回転角推定手段により算出された前記推定回転角を前記回転角として検出するよう構成されている
ことを特徴とする回転角検出装置。
【請求項６】
請求項３〜請求項５の何れか１項に記載の回転角検出装置であって、
前記第１及び第２のパルス信号を用いない所定の検出方法により前記回転体の回転方向を検出する回転方向検出手段（４２）を備え、
前記回転角検出手段は、前記第１の異常時検出方式又は前記第２の異常時検出方式にて前記回転角を検出する際、前記回転方向検出手段により検出された回転方向が前記保持した回転方向と異なる場合は、前記回転方向検出手段により検出された回転方向に前記回転体が回転しているものと判断して前記回転角の検出を行う
ことを特徴とする回転角検出装置。
【請求項７】
請求項２〜請求項６の何れか１項に記載の回転角検出装置であって、
前記通常検出方式は、前記第１及び第２のパルス信号の位相差に基づいて前記回転体の回転方向を検出しつつ、前記第３のパルス信号が入力される毎に前記回転角を初期値に設定すると共に、その初期値からの相対的角度変化量を前記第１及び第２のパルス信号を用いて検出することによりその相対的角度変化量を前記回転角として検出するよう構成されており、
前記パルス信号判断手段は、少なくとも前記第３の判断機能を備えており、
前記第３の判断機能は、前記相対的角度変化量が前記第３のパルス信号が発生すべき量となったタイミング、又はそのタイミングを含む所定期間において、前記第３のパルス信号が発生しなかった場合に、前記第３のパルス信号が異常と判断する機能であり、
前記回転角検出手段は、少なくとも前記第３の異常時検出方式を備えており、
前記第３の異常時検出方式は、前記第１及び第２のパルス信号を用いて、前記回転方向を検出しつつ前記回転角を検出するよう構成されている
ことを特徴とする回転角検出装置。
【請求項８】
請求項７に記載の回転角検出装置であって、
前記回転体は同期モータ（１）であり、
前記同期モータに供給される前記交流電流を検出する電流検出手段（２５，２６，２７）と、
前記回転角検出手段により前記第３の異常時検出出方式で前記回転角が検出されている際に、その検出された前記回転角と、前記電流検出手段により検出された前記交流電流の位相とを比較して、前記回転角が前記位相に対応した値となっているか否か判断し、対応した値となっていない場合に、前記回転角が実際の回転角と異なっているものと判断する回転角判定手段（Ｓ５８０〜Ｓ６００）と、
を備えることを特徴とする回転角検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回転体の回転角を検出する回転角検出装置に関する。
【背景技術】
【０００２】
電動車両の駆動源となるモータにおいて、モータの位置情報である回転角（ロータの電気角）は、例えばベクトル制御の際の座標変換等のために重要な情報である。回転角を検出するセンサとしては、レゾルバが知られている（例えば、特許文献１参照。）。
【０００３】
一般に、レゾルバから出力された角度情報は、ＲＤＣ（Resolver to Digital Converter）にてデジタルの角度データに変換される。この角度データは、そのまま各種制御に用いられることもあるが、エンコーダにてＡ，Ｂ，Ｚ各相信号に変換されてマイコン等の各種回路へ出力されることも多い。なお、エンコーダにて変換されるＡ，Ｂ，Ｚ各相信号は、周知のインクリメンタル型ロータリエンコーダが出力するＡ，Ｂ，Ｚ各相信号と同じ性質のものである。また、ＲＤＣには、エンコーダが内蔵されていてＲＤＣ自身がＡ，Ｂ，Ｚ各相信号も出力するよう構成されたものも多い。
【０００４】
従来、Ａ，Ｂ，Ｚ各相信号を出力するエンコーダ又はＲＤＣ（以下、エンコーダ等という）と、これらＡ，Ｂ，Ｚ各相信号を回転角に変換して各種制御を行うマイコン等の各種制御回路とは、相互に近接して配置されることが一般的であった。そのため、エンコーダ等から各種制御回路へのＡ，Ｂ，Ｚ各相信号の欠損についてはあまり考慮されていなかった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−９５０９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、近年、機能安全の観点より、モータの回転角を示すＡ，Ｂ，Ｚ各相信号を、複数の制御回路（複数のマイコン等）で用いる必要性が出てきている。例えば、モータの制御を行う制御マイコン以外に、その制御マイコンの動作を監視するための監視マイコンを搭載する要求があり、その監視マイコンにおいてもモータの回転角情報が必要となる。
【０００７】
これに対応するためには、エンコーダ等からのＡ，Ｂ，Ｚ各相信号を、これら複数の制御回路にそれぞれ伝送する必要がある。そのため、エンコーダ等と複数の制御回路とを近接して配置することが困難となる。
【０００８】
エンコーダ等と制御回路とが離れた位置関係になると、断線や固着などの何らかの要因で、両者間を伝送されるＡ，Ｂ，Ｚ各相信号の何れかが正常に伝送されなくなるおそれがある。このような伝送異常が生じると、Ａ，Ｂ，Ｚ各相信号を回転角に変換して各種制御を行う制御回路側では、正常な回転角が得られなくなり、これにより制御を正常に行うことができなくなるおそれがある。
【０００９】
本発明は上記課題に鑑みなされたものであり、Ａ，Ｂ，Ｚ各相信号の何れか１つ又は２つが異常になっても、これらＡ，Ｂ，Ｚ各相信号から所望の信頼性を有する回転角を得られるようにすることを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するためになされた本発明の回転角検出装置は、回転角検出手段と、パルス信号判断手段とを備える。
回転角検出手段は、回転体が一定角度回転する毎に入力される、互いに位相がずれた第１及び第２のパルス信号、及び前記回転体が前記一定角度よりも大きい３６０度／ｎ（ｎは１以上の整数）回転する毎に入力される第３のパルス信号を用いて、予め決められた所定の通常検出方式により、前記回転体の回転方向を検出しつつその回転角を検出する。
【００１１】
パルス信号判断手段は、前記各パルス信号のうち少なくとも１つについて異常か否かを判断する。
そして、回転角検出手段は、パルス信号判断手段により前記各パルス信号の何れか１つ又は２つが異常と判断された場合は、異常と判断されなかった他の１つ又は２つの正常なパルス信号を用いて、その正常なパルス信号の種類に応じた所定の異常時検出方式により前記回転体の回転角を検出する。
【００１２】
各パルス信号のうち何れか１つ又は２つが正常であれば、各パルス信号全てが正常である場合よりは精度が劣る可能性はあるものの、その正常なパルス信号を用いて、最低限の信頼性を有する回転角を得ることができる。そこで本発明では、各パルス信号のうちどれが正常であるかに応じて異常時検出方式を個々に用意しておき、異常が生じた場合には、他の正常なパルス信号を用いて、その正常なパルス信号に対応した異常時検出方式にて回転角を検出するのである。
【００１３】
従って、本発明の回転角検出装置によれば、各パルス信号の何れか１つ又は２つが異常になっても、これら各パルス信号から（詳しくは正常なパルス信号から）所望の信頼性を有する回転角を得ることができる。
【００１４】
なお、特許請求の範囲に記載した括弧内の符号は、後述する実施形態に記載の具体的手段等との対応関係を示す一例であって、本発明の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１５】
【図１】実施形態の電気自動車の制御システムを表す構成図である。
【図２】監視マイコンに入力されるＡ，Ｂ，Ｚ各相信号とこれらに基づいてデコード出力される回転角φを例示する説明図であり、（ａ）はＡ，Ｂ，Ｚ各相信号正常時の例、（ｂ）はＺ相異常時の例、（ｃ）はＡＢ両相異常時の例である。
【図３】Ｂ相異常が発生した場合の各カウンタのカウンタ値およびこれらに基づいて出力される回転角φの推移を例示する説明図である。
【図４】監視マイコン内の角度信号監視部の動作を模式的に表すフローチャートである。
【図５】監視マイコン内のデコーダの動作を模式的に表すフローチャートである。
【図６】監視マイコン内の制御マイコン監視部（ＣＰＵ）が実行する監視制御処理を表すフローチャートである。
【図７】モータ電流と回転角φとの位相関係を表す説明図である。
【発明を実施するための形態】
【００１６】
以下に、本発明の好適な実施形態を図面に基づいて説明する。
本実施形態では、本発明を電気自動車に適用した例について説明する。図１に示すように、本実施形態の電気自動車には、走行用モータ（以下単に「モータ」という）１と、バッテリ３と、インバータ５と、走行用モータ制御ＥＣＵ（以下「ＭＧＥＣＵ」という）７と、統合制御ＥＣＵ（以下「ＥＶＥＣＵ」という）９と、が搭載されている。
【００１７】
モータ１は、公知の交流同期モータからなるものである。モータ１の出力軸１ａは、ディファレンシャルギヤ１０を介して左右の駆動輪１１に連結されている。バッテリ３は、充放電可能な周知の２次電池（例えばニッケル水素２次電池）であり、モータ１の駆動に必要な所定の直流電圧（例えば２８８Ｖ）をインバータ５を介してモータ１へ供給する。
【００１８】
インバータ５は、バッテリ３の直流電圧を三相交流に変換し、その変換したＵ相、Ｖ相及びＷ相の三相交流電流によってモータ１を駆動する。具体的には、本実施形態のインバータ５は、例えばＩＧＢＴ（絶縁ゲート型バイポーラトランジスタ）等からなる６個のスイッチング素子と、それらスイッチング素子を駆動する駆動回路とを備える。その駆動回路が、ＭＧＥＣＵ７から入力されるパルス幅変調信号ＵＵ，ＵＶ，ＵＷに基づいて上記スイッチング素子をオン／オフさせることにより、バッテリ３の直流を三相交流に変換する。
【００１９】
ＭＧＥＣＵ７は、インバータ５を介してモータ１を制御する。ＥＶＥＣＵ９は、当該電気自動車の制御全体を統括するＥＣＵである。ＥＶＥＣＵ９は、ＭＧＥＣＵ７がモータ１を制御するために必要な各種指令、信号等を生成してＭＧＥＣＵ７へ出力する。
【００２０】
モータ１の出力軸１ａには、モータ１の回転角（詳しくは、モータ１のロータの回転角度）を検出するためのセンサとして、レゾルバ１３が設けられている。尚、本実施形態でいう回転角度（又は回転角）とは、特に断りのない限り、モータ１の機械的な回転角度ではなく、電気的な角度（いわゆる電気角）を意味するものとする。
【００２１】
レゾルバ１３は、周知の通り、モータ１の回転角θに応じて正弦波状に振幅が変わると共に位相が電気角で９０°ずれた２つの回転検出信号Ｓａ，Ｓｂを出力する。即ち、レゾルバ１３において、レゾルバの一次コイルに一定周波数の励磁信号ｆ（ｔ）（＝ｓｉｎωｔ）が供給されることで、二次コイルの各々から、モータ１の回転角θに応じた回転検出信号として、励磁信号ｆ（ｔ）をｓｉｎθで振幅変調した波形の回転検出信号Ｓａ（＝ｆ（ｔ）・ｓｉｎθ）と、励磁信号ｆ（ｔ）をｃｏｓθで振幅変調した波形の回転検出信号Ｓｂ（＝ｆ（ｔ）・ｃｏｓθ）とが出力される。
【００２２】
尚、θは、モータ１の実際の機械的回転角度をｎ倍（ｎは１以上の整数）した角度であり、レゾルバ１３の電気角（モータ１の電気角）を示すものでもある。また、ｎは、モータ１の一回転あたりにθが回転する回数（即ち、機械角に対する電気角の倍速比）であり、一般には軸倍角と呼ばれる。本実施形態のレゾルバ１３は、一例として、軸倍角ｎ＝１である。
【００２３】
インバータ５からモータ１への各相の電流供給線２１，２２，２３の各々には、各相の電流センサ２５，２６，２７が配設されている。Ｕ相電流センサ２５は、モータ１のＵ相電流レベルを検出してこれに対応するＵ相電流信号を出力する。同様に、Ｖ相電流センサ２６は、モータ１のＶ相電流レベルを検出してこれに対応するＶ相電流信号を出力し、Ｗ相電流センサ２７は、モータ１のＷ相電流レベルを検出してこれに対応するＷ相電流信号を出力する。そして、各電流センサ２５〜２７からの各相の電流信号は、ＭＧＥＣＵ７に入力される。尚、図７の上段の波形は、各相電流の波形例を示したものである。
【００２４】
ＥＶＥＣＵ９は、アクセルセンサ（図示略）から入力されるアクセル開度を示す信号や、シフトスイッチ（図示略）から入力されるシフト位置を示す信号、車速センサ（図示略）から入力される車速（車両速度）を示す信号などの、車両状態を示す各種信号に基づいて、当該電気自動車における各種の制御を行う。その制御の１つに、トルク指令の生成がある。
【００２５】
即ち、ＥＶＥＣＵ９は、上述した各種信号に基づき、例えばトルクマップ等を用いて、モータ１が出力すべき必要な駆動トルクを決定する。そして、その駆動トルクを示すトルク指令をＭＧＥＣＵ７へ出力する。ＥＶＥＣＵ９は、トルク指令のほか、車速を示す信号（車速信号）もＭＧＥＣＵ７へ出力する。
【００２６】
ＭＧＥＣＵ７は、主に、インバータ５を介してモータ１を制御する制御マイコン３０と、この制御マイコン３０の動作を監視する監視マイコン４０と、パルス幅変調回路（ＰＷＭ回路）３６と、を備えている。
【００２７】
制御マイコン３０は、レゾルバ・デジタルコンバータ（ＲＤＣ）３１と、モータ制御部３２と、エンコーダ３３とを備えている。このうちモータ制御部３２は、その実態はＣＰＵであり、ＣＰＵが各種プログラムを実行することによりモータ制御部３２として機能する。その他、図示は省略したものの、制御マイコン３０は、ＲＯＭ、ＲＡＭ（ＳＲＡＭ）、Ｉ／Ｏなどの、一般的なマイコンが通常備えている周知の構成要素を備えている。
【００２８】
ＲＤＣ３１は、レゾルバ１３からの各回転検出信号Ｓａ，Ｓｂを角度データ（回転角θ）に変換する周知のハードウェアである。即ち、ＲＤＣ３１は、レゾルバ１３に励磁信号ｆ（ｔ）を供給すると共に、レゾルバ１３から出出力される回転検出信号Ｓａ，Ｓｂを入力して、その回転検出信号Ｓａ，Ｓｂから、モータ１の回転角を示すデジタルデータ（回転角θ）を出力する。本実施形態のＲＤＣ３１は、デジタルトラッキング方式のＲＤＣである。デジタルトラッキング方式のＲＤＣによる角度データ変換方法はよく知られているため、ここでは詳細説明を省略する。
【００２９】
モータ制御部３２は、ＲＤＣ３１からの回転角θを、モータ１の回転角度の検出値として入力すると共に、例えば、その回転角θの単位時間あたりの変化分から、モータ１の回転数（回転速度）を算出する。
【００３０】
そして、モータ制御部３２は、モータ１の回転情報である回転角θ及び回転数や、電流センサ２５〜２７からの各相電流信号、ＥＶＥＣＵ９からのトルク指令値などに基づいて、ＰＷＭ回路３６を介してインバータ５を駆動することにより、車両の運転状態に応じた所望のトルクをモータ１に発生させる。尚、こうしたモータ１の制御自体は公知のものであるが、簡単に説明しておく。
【００３１】
即ち、モータ制御部３２は、ＥＶＥＣＵ９から入力されるトルク指令値に基づいて、そのトルク指令値が示すトルクをモータ１に発生させるための制御信号を、パルス幅変調回路３６に出力する。このとき、モータ制御部３２は、各電流センサ２５〜２７からの電流信号のうちの少なくとも２つ（例えば、Ｕ相電流信号とＷ相電流信号）に基づいて、モータ１に流れる三相の各電流がトルク指令値に応じた目標値となるように、パルス幅変調回路３６への制御信号（延いては、パルス幅変調回路３６からインバータ５へのパルス幅変調信号ＵＵ，ＵＶ，ＵＷ）をフィードバック制御する。
【００３２】
より具体的には、このフィードバック制御における演算は、ｄｑ軸回転座標系にて行われる。即ち、入力されるトルク指令値に応じたｄ・ｑ各軸の電流指令値を演算する一方、各電流センサ２５〜２７からの各相電流信号を２相（ｄ・ｑ軸）の実電流値に座標変換する。そして、座標変換後の電流指令値と実電流値とに基づくフィードバック制御により、パルス幅変調回路３６への制御信号を生成する。上述した座標変換の際、さらにフィードバック制御による制御信号生成の際に、モータ１の回転角θや回転速度が必要となる。
【００３３】
エンコーダ３３は、ＲＤＣ３１にて生成された回転角θ（デジタル値）を、Ａ相信号、Ｂ相信号、およびＺ相信号の３つの角度信号に変換（エンコード）するものである。これら各相信号は、周知のインクリメンタルエンコーダが出力するＡ，Ｂ，Ｚ各相信号と同じである。
【００３４】
即ち、図２（ａ）に示すように、Ａ相信号は、モータ１が電気的に一定角度回転する毎に所定パルス幅のパルスが発生するようなパルス信号である。Ｂ相信号も、Ａ相信号と同じく、モータが電気的に一定角度回転する毎に所定パルス幅のパルスが発生するようなパルス信号である。ただし、Ａ相信号とＢ相信号は互いに位相がずれており、本実施形態では、９０度の位相差がある。Ｚ相信号は、モータ１が電気的に一回転する毎に所定パルス幅のパルスが発生するようなパルス信号である。
【００３５】
エンコーダ３３にてエンコードされたＡ，Ｂ，Ｚ各相信号は、監視マイコン４０へ伝送される。即ち、本実施形態では、監視マイコン４０においても、モータ１の回転角度に関する情報が必要である。モータ１の回転情報を伝送する具体的方法として、ＲＤＣ３１にて生成された回転角θをそのままパラレル伝送又はシリアル伝送することも考えられる。しかし、パラレル伝送するためには多数の伝送線が必要となる。本実施形態では、角度分解能が１２ｂｉｔであるため、パラレル伝送しようとすると１２本の伝送線が必要となり、現実的ではない。一方、シリアル伝送する場合、伝送時間が長くなってしまい、これも現実的ではない。そこで、制御マイコン３０内のＲＤＣにて生成された回転角θを、Ａ，Ｂ，Ｚ各相信号にエンコードして、監視マイコン４０に伝送するようにしている。
【００３６】
パルス幅変調回路３６は、制御マイコン３０からの制御信号に従って、三相交流電流の各相に対応したパルス幅変調信号ＵＵ，ＵＶ，ＵＷを生成し、それら各パルス幅変調信号ＵＵ，ＵＶ，ＵＷをインバータ５に出力する。これにより、インバータ５からモータ１へ、Ｕ相、Ｖ相及びＷ相の三相交流電流が供給される。
【００３７】
監視マイコン４０は、デコーダ４１と、制御マイコン監視部４２と、角度信号監視部４３と、推定カウンタ４４とを備えている。このうち制御マイコン監視部４２は、その実態はＣＰＵであり、ＣＰＵが各種プログラムを実行することにより制御マイコン監視部４２として機能する。その他、図示は省略したものの、監視マイコン４０は、ＲＯＭ、ＲＡＭ（ＳＲＡＭ）、Ｉ／Ｏなどの、一般的なマイコンが通常備えている周知の構成要素を備えている。
【００３８】
デコーダ４１は、制御マイコン３０から伝送されてきた角度信号（Ａ，Ｂ，Ｚ各相信号）を、デジタルの角度データ（回転角）φに変換（デコード）する。デコーダ４１による具体的なデコード方式は、Ａ，Ｂ，Ｚ各相信号の状態に応じて異なる。即ち、本実施形態では、角度信号監視部４３がＡ，Ｂ，Ｚ各相信号が正常か否かを監視しており、何れか１つ又は２つが異常となった場合は、その旨を示すダイアグ情報（角度信号ダイアグ）を出力する。デコーダ４１は、角度信号監視部４３からの角度信号ダイアグの有無、および角度信号ダイアグの種類に応じて、デコード方式を切り替える。
【００３９】
角度信号監視部４３から角度信号ダイアグが出力されていないとき、即ちＡ，Ｂ，Ｚ各相信号が正常であるときは、デコーダ４１は、通常デコード方式Ｄｏにてデコードを行う。具体的には、Ａ相信号とＢ相信号の位相差により、モータ１の回転方向を判別する。本実施形態では、Ｂ相信号のエッジが立ち上がった後にＡ相信号のエッジが立ち上がった場合、Ａ相信号のエッジが立ち上がった後にＢ相信号のエッジが立ち下がった場合、Ｂ相信号のエッジが立ち下がった後にＡ相信号のエッジが立ち下がった場合、およびＡ相信号のエッジが立ち下がった後にＢ相信号のエッジが立ち上がった場合は、モータ１が順方向に回転（順回転）しているものとする。エッジ変化が上記とは逆の場合（例えば、Ａ相信号が立ち下がった後にＢ相信号が立ち下がった場合など）は、モータ１が逆方向に回転（逆回転）しているものとする。
【００４０】
このようにしてモータ１の回転方向を判別しつつ、Ａ相信号およびＢ相信号それぞれのエッジ立ち上がりおよび立ち下がりが発生する毎に、内蔵するエッジカウンタをカウントアップ又はカウントダウンさせる。本実施形態では、モータ１が順回転している間はエッジカウンタをカウントアップさせ、モータ１が逆回転している間はエッジカウンタをカウントダウンさせる。
【００４１】
また、Ｚ相信号は、回転位置の基準を示す信号であり、Ｚ相信号のエッジが立ち上がる毎に、エッジカウンタのカウンタ値を０にリセットする。
そして、このようにしてカウントアップ又はカウントダウンされるエッジカウンタのカウンタ値が、通常デコード方式Ｄｏによるデコード結果（回転角φ）として、制御マイコン監視部４２へ出力される。なお、Ｚ相信号のエッジ立ち上がりによりリセットされるエッジカウンタのカウンタ値「０」は本発明の初期値に相当し、そのカウンタ値「０」からＡ，Ｂ各相信号（何れか一方が異常の場合は他方の信号）によりカウントアップまたはカウントアップされるカウンタ値が本発明の相対的角度変化量に相当する。
【００４２】
本実施形態では、角度分解能Ｍ［ｂｉｔ］は１２ｂｉｔである。即ち、エッジカウンタのカウンタ値がＺ相信号により０にリセットされたあと、４０９５（＝２M−１＝２12−１）までカウントアップされると、再びＺ相信号によりカウンタ値が０にリセットされる。なお、本実施形態では、エッジカウンタ自体が、０〜４０９５までカウントアップ可能な１２ｂｉｔカウンタであるため、仮にＺ相信号のエッジ変化が生じなくても、カウンタ値は４０９５の次は０となる。なお、角度分解能が１２ｂｉｔであることはあくまでも一例であり、分解能をどのように設定するか、Ａ，Ｂ各相信号に基づいてどのようにカウントアップ、ダウンさせるか、などについては適宜決めることができる。
【００４３】
図２（ａ）は、モータ１が順回転している場合であってＡ，Ｂ，Ｚ各相信号がいずれも正常である場合の各相信号の例を示している。このように各相信号がいずれも正常である場合は、デコーダ４１は、上述した通常デコード方式Ｄｏにてデコードを行う。即ち、Ａ，Ｂ各相信号のエッジ変化発生毎にエッジカウンタのカウンタ値はカウントアップされていき、Ｚ相信号の立ち上がりエッジが発生するとカウンタ値は０にリセットされる。そして、そのエッジカウンタのカウンタ値が、最終的なデコード出力（回転角φ）として出力される。
【００４４】
一方、Ａ，Ｂ，Ｚ各相信号の何れか１つ又は２つが異常となってことにより角度信号監視部４３から角度信号ダイアグが出力されると、デコーダ４１は、その角度信号ダイアグに応じた（即ちＡ，Ｂ，Ｚ各相信号のうちどれが異常なのかに応じた）所定の異常時デコード方式に切り替えてデコードを行う。即ち、Ａ，Ｂ，Ｚ各相信号のうち正常な信号を用いてデコードを行うのである。各種角度信号ダイアグおよび異常時デコード方式の詳細については後述する。
【００４５】
制御マイコン監視部４２は、制御マイコン３０が正常に動作しているかどうか、即ちモータ制御部３２による上記フィードバック制御が正常に行われているかどうかを監視する。具体的には、デコーダ４１にて生成（デコード）された回転角φおよび各電流センサ２５〜２７からの各相電流信号に基づいて、モータ１の実際の出力トルクを演算し、ＥＶＥＣＵ９からのトルク指令値と比較する。そして、その比較結果に基づいて、制御マイコン３０の状態を判断する。例えば、演算した出力トルクがトルク指令値と略一致していれば制御マイコン３０は正常に動作していると判断し、演算した出力トルクとトルク指令値との差が大きければ制御マイコン３０が異常であると判断する。
【００４６】
制御マイコン監視部４２による上記出力トルクの演算およびトルク指令値との比較の具体的方法は、基本的には制御マイコン３０のモータ制御部３２によるフィードバック制御と同じであり、ｄｑ軸回転座標系にて行われる。
【００４７】
制御マイコン監視部４２は、制御マイコン３０が異常であると判断した場合、その旨を示すダイアグ情報である制御マイコン異常ダイアグを自身のＲＡＭ（ＳＲＡＭ）に記憶すると共に、ＥＶＥＣＵ９へ出力する。
【００４８】
ＥＶＥＣＵ９は、監視マイコン４０からの制御マイコン異常ダイアグを受信すると、例えばトルク指令値を０（またはその近傍）にしてモータ１の駆動を停止させるようにすると共に、車両の運転者に対して異常が発生している旨の警告等を報知するなどといった、所定の制御マイコン異常対応処理を実行する。なお、制御マイコン異常対応処理の具体的内容は適宜決めることができる。
【００４９】
また、制御マイコン監視部４２には、角度信号監視部４３からの角度信号ダイアグも入力される。そのため、Ａ，Ｂ，Ｚ各相信号の異常により角度信号監視部４３から角度信号ダイアグが入力された場合は、その角度信号ダイアグを自身のＳＲＡＭに記憶すると共に、ＥＶＥＣＵ９へ出力する。
【００５０】
ＥＶＥＣＵ９は、監視マイコン４０から角度信号ダイアグを受信すると、例えば運転者に対して早めに停車させるよう退避走行を促すといった所定の角度信号異常対応処理を実行する。つまり、モータ駆動をすぐに強制的に停止させることまではせず、最低限の退避走行は許容する。なお、角度信号異常対応処理の具体的内容についても適宜決めることができる。
【００５１】
推定カウンタ４４は、Ｚ相信号に基づいて回転角の推定（カウント）を行う。具体的には、Ｚ相信号のパルス（以下「Ｚ相パルス」ともいう）の発生毎（例えばエッジ立ち上がりタイミング毎）に、そのＺ相パルス発生の直近２周期分の各周期に基づいて、１ビット分の角度だけ回転するのに要する時間を推定する。例えば、Ｚ相パルス発生時、前回Ｚ相パルスが発生したタイミング（前回タイミング）から今回Ｚ相パルスが発生したタイミングまでの期間である前周期をＴＡ、前回タイミングの直前にＺ相パルスが発生したタイミング（前々回タイミング）から前回タイミングまでの期間である前々周期をＴＢとしたとき、次式（１）により、次回再びＺ相パルスが発生するまでの期間である次周期ＴＺを推定演算する。
【００５２】
ＴＺ＝２・ＴＡ−ＴＢ  ・・・（１）
そして、その推定した次周期ＴＺを用いて、次式（２）により、１ビット分の角度だけ回転するのに要する時間である推定カウント周期Ｔｘを推定演算する。
【００５３】
Ｔｘ＝ＴＺ／２M  ・・・（２）
本実施形態の角度分解能は１２ｂｉｔであるため、本実施形態では、上記式（２）の演算は、次周期ＴＺを４０９６で除算することにより推定カウント周期Ｔｘが得られることになる。なお、この推定カウント周期Ｔｘの逆数が本発明の回転速度に相当する。
【００５４】
推定カウンタ４４は、Ｚ相パルスが発生する毎に、上記のように直近２周期に基づいて推定カウント周期Ｔｘを推定演算し、その推定カウント周期Ｔｘが経過する毎に、カウンタ値を０から１つずつカウントアップ（または４０９５から１つずつカウントダウン）していく。そして、次にまたＺ相パルスが発生したら、再び直近２周期に基づいて新たに推定カウント周期Ｔｘを推定演算し、その推定カウント周期Ｔｘを用いて再び０からカウントアップ（または４０９５から１つずつカウントダウン）していく。
【００５５】
カウントアップさせるかそれともカウントダウンさせるかは、回転方向に応じて区別する。本実施形態では、推定カウンタ４４は、Ｚ相パルスが発生する毎に、デコーダ４１にて判断されている回転方向を取得する。そして、その取得した回転方向に基づき、順回転ならば０からカウントアップさせるようにし、逆回転ならば４０９５からカウントダウンさせる。そして、そのカウンタ値を推定カウンタ値として、デコーダ４１へ出力する。
【００５６】
このように、推定カウンタ４４は、Ｚ相パルス発生毎に、直近２周期分の周期ＴＡ，ＴＢに基づいて、次にまたＺ相パルスが発生するまでの１周期分における推定カウント周期Ｔｘを推定演算する。そして、次にまたＺ相パルスが発生するまでは、その演算した推定カウント周期Ｔｘにてカウンタ値がカウントアップ（又はカウントダウン）されていくもの（即ちその推定カウント周期Ｔｘで回転角φが１／４０９６度ずつ変化していくもの）と推定して、推定カウンタ値（本発明の推定回転角に相当）を出力する。推定カウンタ４４による推定カウンタ値の生成、出力は、監視マイコン４０の動作中は常時行われる。
【００５７】
なお、推定カウント周期Ｔｘの推定演算方法は種々考えられ、例えば、単に前周期ＴＡを２Mで除算することにより演算してもよいし、逆に、過去３周期分以上の各周期からモータ１の回転速度の変化傾向がより反映された値を演算してもよい。また、過去２周期分の各周期から演算する場合についても、本実施形態のように直近２周期を用いることは必須ではない。但し、演算処理負荷を抑えつつ、現在のモータ１の回転速度の変化傾向をより良く反映した推定カウント周期Ｔｘを演算するためには、本実施形態のように直近２周期分の周期に基づいて推定演算するのが好ましい。
【００５８】
角度信号監視部４３は、制御マイコン３０から入力されるＡ，Ｂ，Ｚ各相信号の異常の有無を判断し、何れか１つ又は２つの異常を判断したら、その旨を示す角度信号ダイアグをデコーダ４１及び制御マイコン監視部４２へ出力する。角度信号監視部４３による角度信号異常判断の具体的内容についてより詳しく説明する。
【００５９】
まず、Ｚ相信号の異常判断について説明する。図２（ａ）に示したように、Ｚ相信号が正常ならば、モータ１が電気的に１回転する毎に、Ｚ相パルスが発生する。しかし、何らかの要因で、図２（ｂ）に例示するように、本来発生すべきタイミングが到来してもＺ相パルスが発生しない異常（以下「Ｚ相異常」ともいう）が発生する可能性がある。
【００６０】
角度信号監視部４３は、このようなＺ相異常を、Ａ，Ｂ各相信号に基づくエッジカウンタのカウンタ値に基づいて判断する。即ち、エッジカウンタがカウントアップされている場合（順回転時）には、そのカウンタ値が２M−１（本例では４０９５）から０にカウントアップされるタイミング又はその近傍でＺ相パルスが発生しなかった場合に、Ｚ相異常と判断する。より具体的には、本実施形態では、エッジカウンタのカウンタ値が２M−１にカウントアップされたタイミングから０にカウントアップされてさらに１にカウントアップされるタイミングまでの期間にＺ相パルスが発生しなかった場合に、Ｚ相異常と判断する。なお、カウンタ値が０になったタイミングでＺ相異常の判断を行うようにしてもよい。
【００６１】
エッジカウンタがカウントダウンされている場合（逆回転時）には、そのカウンタ値が１から０にカウントダウンされるタイミングの近傍でＺ相パルスが発生しなかった場合に、Ｚ相異常と判断する。より具体的には、本実施形態では、エッジカウンタのカウンタ値が０にカウントダウンされたタイミングから２M−１にカウントダウンされてさらに２M−２にカウントダウンされるタイミングまでの期間にＺ相パルスが発生しなかった場合に、Ｚ相異常と判断する。なお、逆回転時においても、カウンタ値が０にカウントダウンされたタイミングでＺ相異常の判断を行うようにしてもよい。
【００６２】
図２（ｂ）の例では、モータ１が順回転している場合に、エッジカウンタのカウンタ値が２M−１から０にカウントアップされるタイミングｔａでＺ相パルスが発生せず、さらにカウンタ値が０から１にカウントアップされるタイミングｔｂが来てもＺ相パルスが発生しないことから、そのタイミングｔｂで、Ｚ相異常が発生したと判断される。なお、Ｚ相異常を判断するタイミングは、Ｚ相パルスが本来発生すべきタイミングでありながら発止していないことを判別できるかぎり、適宜決めることができる。
【００６３】
角度信号監視部４３は、Ｚ相異常が発生したと判断すると、デコーダ４１及び制御マイコン監視部４２へ、ダイアグ情報として、角度信号ダイアグのうちＺ相異常を示すダイアグＺを出力する。但し、本実施形態では、Ｚ相異常が発生したと判断した場合にすぐにダイアグＺを出力せず、Ａ相信号またはＢ相信号のいずれかの異常の有無まで判断した上で、その判断結果も含めた角度信号ダイアグを出力するようにしている。
【００６４】
なお、角度信号監視部４３による、エッジカウンタのカウンタ値に基づくＺ相異常の判断は、デコーダ４１が備えているエッジカウンタからそのカウンタ値を取得して行うようにしてもよい。ただし、本実施形態では、角度信号監視部４３自身が、デコーダ４１と同じくエッジカウンタを備え、このエッジカウンタが、角度信号監視部４３に入力されるＡ，Ｂ各相信号のパルスの立ち上がりエッジ及び立ち下がりエッジを検出してカウントアップ又はカウントダウンするよう構成されている。そして、その自身が備えるエッジカウンタのカウント値に基づいて、Ｚ相異常の有無を判断するようにしている。
【００６５】
デコーダ４１は、角度信号監視部４３からダイアグＺが入力されると、デコード方式を、通常デコード方式Ｄｏから、異常時デコード方式Ｄｚに切り替える。この異常時デコード方式Ｄｚは、ダイアグＺに対応したデコード方式であり、Ｚ相信号以外の他の正常な角度信号であるＡ相信号及びＢ相信号を用いてデコードを行う。
【００６６】
具体的には、デコーダ４１は、Ａ，Ｂ各相信号に基づくエッジカウンタのカウントアップ又はカウントダウンを継続して行う。なお、Ａ，Ｂ各相信号に基づくエッジカウンタのカウンタ値を、以下、「規定カウント値」ともいう。デコーダ４１は、ダイアグＺ入力時には、その規定カウント値を、最終的なデコード結果、即ち回転角φとして出力する。
【００６７】
従って、ダイアグＺ入力時には、デコーダ４１は、エッジカウンタによる規定カウント値により、引き続き回転角φを出力することは可能である。また、Ａ，Ｂ各相の位相差に基づいて回転方向を検出し、その検出した回転方向に応じてエッジカウンタのカウントアップおよびカウントダウンの切り替えを行うことも可能である。但し、Ｚ相異常であることから、エッジカウンタのカウント値をＺ相信号に基づいてリセットすることはできない。
【００６８】
次に、Ａ相信号およびＢ相信号の双方の異常判断について説明する。図２（ｃ）に例示するように、何らかの要因で、Ａ相信号およびＢ相信号のいずれもパルスが発生しない異常（以下「ＡＢ両相異常」ともいう）が発生する可能性がある。言い換えれば、ＡＢ両相異常とは、Ａ，Ｂ各相信号がいずれもＨレベルに固定（以下「Ｈ固定」）又はＬレベルに固定（以下「Ｌ固定」）された状態である。
【００６９】
角度信号監視部４３は、このようなＡＢ両相異常を、Ｚ相信号に基づいて判断する。即ち、角度信号監視部４３は、Ｚ相パルスが発生してから次に再びＺ相パルスが発生するまでのＺ相信号１周期の期間内にＡ，Ｂ各相信号のパルスが全く発生しなかった場合に、ＡＢ両相異常と判断する。そして、ＡＢ両相異常が発生したと判断すると、デコーダ４１及び制御マイコン監視部４２へ、ダイアグ情報として、角度信号ダイアグのうちＡＢ両相異常を示すダイアグＡＢを出力する。
【００７０】
図２（ｃ）の例では、モータ１が順回転している場合に、タイミングｔａでＺ相パルスが発生したとき、前回のＺ相パルス発生から今回のタイミングｔａでのＺ相パルス発生までの間にＡ，Ｂ各相のパルスが全く発生しなかったことから、そのタイミングｔａでＡＢ両相異常と判断される。
【００７１】
デコーダ４１は、角度信号監視部４３からダイアグＡＢが入力されると、デコード方式を、通常デコード方式Ｄｏから、異常時デコード方式Ｄａｂに切り替える。この異常時デコード方式Ｄａｂは、ダイアグＡＢに対応したデコード方式であり、Ａ，Ｂ各相信号以外の他の正常な角度信号であるＺ相信号に基づくデコードを行う。
【００７２】
具体的には、デコーダ４１は、推定カウンタ４４からの推定カウンタ値を、最終的なデコード結果、即ち回転角φとして出力する。これにより、制御マイコン監視部４２は、その出力された回転角φ、即ち推定カウンタ４４にて推定された推定カウンタ値に基づいて、制御マイコン３０の監視を行うことになる。
【００７３】
このように、デコーダ４１は、ダイアグＡＢ入力時には、推定カウンタ４４からの推定カウンタ値により、引き続き回転角φを出力することは可能である。ただし、この場合の回転角φは、推定カウンタ値に基づくものであるため、実際の回転角との誤差が生じるおそれはある。また、ＡＢ両相異常時は、Ａ，Ｂ各相信号の位相差に基づく回転方向判別ができない。そのため、デコーダ４１は、ダイアグＡＢが入力された場合、その入力される前に判断していた回転方向（Ａ，Ｂ各相正常時の回転方向）をそのまま保持する。即ち、ダイアグＡＢが入力された後も、ダイアグＡＢ入力前に判断していた最新の回転方向と同じ回転方向にてモータ１が回転するものと推定する。そのため、推定カウンタ４４は、デコーダ４１にダイアグＡＢが入力される前後でカウント方法（カウントアップ又はカウントダウン）が変わることはない。
【００７４】
なお、制御マイコン監視部４２は、トルク指令値からｄ・ｑ各軸の電流指令値を演算する際にモータ１の回転速度が必要となる。制御マイコン監視部４２は、通常、この回転速度を、デコーダ４１からの回転角φの変化を元に算出するが、ＡＢ両相異常時には、Ｚ相パルスの発生タイミングに基づいて算出する。具体的には、前回Ｚ相パルスが発生したタイミング（回転角φが前回０にリセットされたタイミング）から今回Ｚ相パルスが発生したタイミング（回転角φが今回再び０にリセットされたタイミング）までの経過時間に基づいて、回転速度を算出する。なお、制御マイコン監視部４２は、Ｚ相信号を直接又はバッファ等を介して間接的に入力し、ＡＢ両相異常時にはその入力されているＺ相信号に基づいて回転速度を算出するようにしてもよい。
【００７５】
次に、Ａ相信号またはＢ相信号のいずれか一方の異常判断について説明する。図３に例示するように、何らかの要因で、Ａ相信号またはＢ相信号のいずれか一方においてパルスが発生しない異常が発生する可能性がある。以下、Ａ相信号のパルスが発生しない異常を「Ａ相異常」といい、Ｂ相信号のパルスが発生しない異常を「Ｂ相異常」という。なお、Ａ相異常は、言い換えれば、Ａ相信号がＨ固定又はＬ固定された状態であり、Ｂ相異常は、言い換えれば、Ｂ相信号がＨ固定又はＬ固定された状態である。
【００７６】
角度信号監視部４３は、Ａ，Ｂ各相信号の相互比較により、Ａ相異常またはＢ相異常を判断する。ここで、一例として、Ｂ相異常が発生した場合のそのＢ相異常の判断方法について、図３を用いて説明する。ただし、モータ１は順回転しているものとする。
【００７７】
図３は、時刻ｔａでＡ相信号のパルスが立ち上がった後の時刻ｔｂで、Ｂ相異常（本例ではＢ相信号のＨ固定）が発生した例を示している。仮に正常ならば、時刻ｔａでＡ相信号が立ち上がった後、時刻ｔｃでＢ相信号が立ち下がるはずである。しかし、時刻ｔｃより前の時刻ｔｂでＢ相異常が発生したため、時刻ｔｃではＢ相信号は立ち下がらない。
【００７８】
そのため、本来正常ならば、デコーダ４１は、時刻ｔａでエッジカウンタのカウンタ値を５にカウントアップした後、時刻ｔｃでＢ相信号立ち下がりによりエッジカウンタ値を６にカウントアップするはずだが、ここではカウントアップすることなく、カウンタ値は５のままである。そのため、時刻ｔｃが過ぎても、デコーダ４１が出力する回転角φは５のままである。
【００７９】
時刻ｔｃでＢ相信号が立ち下がることなく（Ｈレベルに維持されたまま）、時刻ｔｄでＡ相信号が立ち下がると、デコーダ４１は、この時刻ｔｄにて、Ｂ相信号がＨレベルの状態でＡ相信号が立ち下がったことから、モータ１の回転方向が逆回転に変わったものと判断する。そのため、エッジカウンタのカウント方法をカウントアップからカウントダウンに切り替える。これにより、エッジカウンタのカウンタ値（規定カウント値）は、時刻ｔｄにて、５から４にカウントダウンされる。そのため、デコーダ４１が出力する回転角φも４となる。
【００８０】
その後、もし実際に逆回転していて且つＢ相信号が正常ならば、時刻ｔｄでＡ相信号が立ち下がった後、続いてＢ相信号が立ち下がるはずである。しかし本例では、実際には逆回転しておらず、Ｂ相信号がＨレベルに維持されたままであるため、時刻ｔｄの後、時刻ｔｅにてＡ相信号が再び立ち上がる。
【００８１】
すると、デコーダ４１は、この時刻ｔｅにて、Ｂ相信号がＨレベルの状態でＡ相信号が立ち上がったことから、モータ１の回転方向が逆回転から再び順回転に変わったものと判断する。そのため、エッジカウンタのカウント方法をカウントダウンからカウントアップに切り替える。これにより、デコーダ４１は、エッジカウンタのカウンタ値（規定カウント値）を、時刻ｔｅにて、４から５にカウントアップする。
【００８２】
一方、角度信号監視部４３も、既述の通りエッジカウンタを備え、デコーダ４１と同様に回転方向を判別しつつエッジカウントを行っている。そのため、時刻Ｔｄにおける逆回転判定、および時刻ｔｅにおける順回転判定も、デコーダ４１と同様に行う。
【００８３】
そして、角度信号監視部４３は、時刻ｔｅにて、エッジ変化が生じる度に回転方向が連続的に切り替わったことから、実際には回転方向が変わったのではなくＢ相信号がＨ固定されているものと判断する。つまり、角度信号監視部４３は、エッジ変化毎に連続的に回転方向が順回転→逆回転→順回転、または逆回転→順回転→逆回転、と切り替わった場合に、その間エッジ変化が生じていない方の信号の異常（Ｈ固定またはＬ固定）を判断するのである。言い換えれば、一方のエッジ変化が連続して３回生じた期間中（図３の例では時刻ｔａ〜時刻ｔｅ）に他方のパルス信号のエッジ変化が生じなかった場合に、その他方を異常と判断するのである。なお、「３回」というのは一例であって、４回以上としてもよい。即ち、一方のエッジ変化が連続して４回以上生じた期間中に他方のエッジ変化が生じなかった場合にその他方を異常と判断するようにしてもよい。
【００８４】
図３の例では、角度信号監視部４３は、時刻ｔｅで、Ｂ相信号のＨ固定、即ちＢ相異常を判断する。そして、デコーダ４１及び制御マイコン監視部４２へ、ダイアグ情報として、角度信号ダイアグのうちＢ相異常を示すダイアグＢを出力する。
【００８５】
デコーダ４１は、角度信号監視部４３からダイアグＢが入力されると、デコード方式を、通常デコード方式Ｄｏから、異常時デコード方式Ｄｂに切り替える。この異常時デコード方式Ｄｂは、ダイアグＢに対応したデコード方式であり、Ａ，Ｂ各相信号のうち正常な角度信号であるＡ相信号に基づくデコードを行うことを基本としつつ、適宜、推定カウンタ４４からの推定カウンタ値による補間も行うものである。なお、Ｚ相パルス発生毎に回転角φを０にリセットすることは正常時と同様である。
【００８６】
具体的には、デコーダ４１は、エッジカウンタのカウンタ値を補正すると共に、以後、エッジカウンタによるカウントを、Ａ相信号のエッジ変化が生じる毎に２つずつカウントアップさせるようにする。即ち、もしＢ相信号が正常であったならば、時刻ｔｅの時点で、エッジカウンタのカウンタ値（規定カウント値）は９になっているはずである。つまり、時刻ｔａでカウンタ値が５にカウントアップされてから４カウント分アップされているはずである。しかし、上記のように回転方向の変化と誤判断してしまったことにより、時刻ｔｅの時点でカウンタ値は５になっている。
【００８７】
そこでデコーダ４１は、時刻ｔｅにて一旦はカウンタ値を５にしたものの、角度信号監視部４３からのダイアグＢ入力により、そのカウンタ値にさらに４を加えて９とする。つまり、カウンタ値を正常な値に更新する。そして、その更新した値（９）を、時刻ｔｅにおける回転角φとして出力する。そして、時刻ｔｅ以後は、Ａ相信号のエッジ変化が生じる毎に、エッジカウンタのカウンタ値を２つずつカウントアップしていく。この時ｔｅ以後の、２つずつカウントアップされるエッジカウンタのカウンタ値を、以下「変則カウント値」ともいう。
【００８８】
図３の例では、時刻ｔｅでダイアグＢが入力されたことにより、デコーダ４１が、デコード方式を異常時デコード方式Ｄｂに切り替え、これによりＡ相信号のエッジ変化が生じる毎にエッジカウンタのカウンタ値（変則カウント値）を９→１１→１３→・・・と２つずつカウントアップしていく例が示されている。そして、基本的には、この２つ飛びの値が、回転角φとして出力される。
【００８９】
しかし、この２つ飛びで出力される回転角φは、正常時に比べて角度分解能が１／２に低下している。もちろん、この分解能が低下した回転角φを用いても、制御マイコン監視部４２は、制御マイコン３０の監視を行うことができるのであるが、監視機能をより十分に果たすためには、回転角φの分解能は少しでも高い方がよい。
【００９０】
そこで本実施形態のデコーダ４１は、Ｂ相異常時、推定カウンタ値を用いてデコード出力の補間を行う。即ち、デコーダ４１は、Ｂ相異常によりエッジカウンタのカウント方法を２つ飛びに切り替えた後、そのカウンタ値（変則カウント値）がｎからｎ＋２にカウントアップされるまでに（即ち変則カウント値がｎの間に）推定カウンタ値がｎからｎ＋１に変化した場合は、変則カウント値はｎであるものの、最終的に出力する回転角φは、推定カウント値の方を優先してｎ＋１を出力するのである。そして、その後変則カウント値がｎ＋２にカウントアップされたら、最終的に出力する回転角φも再びその変則カウント値であるｎ＋２に戻す。
【００９１】
図３の例では、時刻ｔｅでＢ相異常が判断され、これによりエッジカウンタのカウンタ値（変則カウント値）は９となる。その後、変則カウント値は、Ａ相信号のエッジ変化が生じる時刻ｔｆまでは９のままであり、時刻ｔｆでＡ相信号のエッジ変化が生じると、１１にカウントアップされる。
【００９２】
一方、この時刻ｔｅ〜時刻ｔｆの間、推定カウンタ４４からの推定カウンタ値は、時刻ｔｘにて９から１０に変化する。そこで、デコーダ４１は、この時刻ｔｘにて、最終的に出力する回転角φを１０にする。同様に、時刻ｔｆで変則カウント値が１１にカウントアップされてから時刻ｔｇで変則カウント値が１３にカウントアップされるまでの間についても、基本的にはその変則カウント値を回転角φとして出力するものの、時刻ｔｙで推定カウンタ値が１１から１２に変化したため、この時刻ｔｙにて、最終的に出力する回転角φも１２とする。
【００９３】
つまり、Ａ相信号のエッジ変化に基づく変則カウント値を、推定カウンタ値で補間することで、角度分解能を上げるのである。なお、変則カウント値がｎからｎ＋２に変化する間に推定カウンタ値がｎ＋１とならなかった場合は、推定カウンタ値による補間は行わない。
【００９４】
このように、Ｂ相異常時のデコード方式である異常時デコード方式Ｄｂは、Ａ相信号に基づく変則カウンタ値（２つ飛びの値）を用いることを基本としつつ、推定カウンタ４４からの推定カウンタ値による補間も行うようにするものである。また、回転方向については、Ｂ相異常と判断される前の回転方向を保持する。即ち、Ｂ相信号が異常の場合、Ａ，Ｂ各相信号の位相差に基づく回転方向の判別はできない。そこで、Ｂ相異常と判断される前に判別している回転方向、即ち角度信号監視部４３からダイアグＢが入力される直前に判別していた回転方向（本例では順回転）を、以後もそのまま用いる。
【００９５】
なお、図３では、モータ１が順回転しているときにＢ相異常が生じたケースを例示したが、モータ１が逆回転している場合も基本的には同じ要領でＢ相異常の判断を行う。逆回転時が順回転時と異なる主な点は、各カウンタがカウントダウンされること、これに伴い、ダイアグＢ入力時にデコーダ４１はその時点でのカウント値（規定カウント値）から４を減算することでカウント値の更新を行うこと、などである。
【００９６】
また、Ａ相異常の判断についても、Ｂ相異常の判断と全く同じように行うことができる。即ち、Ａ相信号のエッジ変化がなく、Ｂ相信号のエッジが変化する毎に回転方向が順回転→逆回転→順回転、または逆回転→順回転→逆回転、と連続的に切り替わった場合に、Ａ相異常（Ａ相信号のＨ固定またはＬ固定）を判断する。角度信号監視部４３は、Ａ相異常と判断した場合は、デコーダ４１及び制御マイコン監視部４２へ、ダイアグ情報として、角度信号ダイアグのうちＡ相異常を示すダイアグＡを出力する。
【００９７】
デコーダ４１は、角度信号監視部４３からダイアグＡが入力されると、デコード方式を、通常デコード方式Ｄｏから、異常時デコード方式Ｄａに切り替える。この異常時デコード方式Ｄａは、ダイアグＡに対応したデコード方式であり、Ａ，Ｂ各相信号のうち正常な角度信号であるＢ相信号に基づくデコードを行うことを基本としつつ、適宜、推定カウンタ４４からの推定カウンタ値による補間も行うものである。
【００９８】
具体的には、デコーダ４１は、Ｂ相異常時と同様、エッジカウンタのカウンタ値を補正（＋４または−４）すると共に、以後、エッジカウンタによるカウントを、Ｂ相信号のエッジ変化が生じる毎に２つずつカウントアップさせるようにする。さらに、Ｂ相異常時と同様、推定カウンタ値による補間が可能なら補間も行う。
【００９９】
また、角度信号監視部４３は、Ｚ相異常を判断した場合は、さらに、Ａ相信号またはＢ相信号が正常か否かの判断も行う。Ｚ相異常の判断は、既述の通り、エッジカウンタが０に切り替わるタイミング近傍でＺ相パルスが生じるか否かに基づいて行う。そして、Ｚ相異常と判断すると、引き続き、Ａ相異常またはＢ相異常の有無を、Ａ，Ｂ各相信号に基づく既述の方法（図３を用いて説明した方法）で行う。
【０１００】
即ち、Ｚ相異常と判断した後、Ａ，Ｂ各相信号のエッジ変化が交互に所定回数続いたら、Ａ，Ｂ各相信号は正常であるものとして、ダイアグＺを出力する。一方、Ｚ相異常の判断後、Ａ，Ｂ各相信号のエッジ変化が交互に所定回数続くことなく、例えばＢ相信号がＨ固定またはＬ固定となってＡ相信号のエッジ変化のみ生じるようになった場合は、上述した要領（図３参照）でＢ相異常の判断も行う。つまり、結果としてＢ相信号とＺ相信号の双方が異常（以下「ＢＺ両相異常」ともいう）であると判断されることになる。
【０１０１】
そして、角度信号監視部４３は、ＢＺ両相異常と判断すると、デコーダ４１及び制御マイコン監視部４２へ、ダイアグ情報として、角度信号ダイアグのうちＢＺ両相異常を示すダイアグＢＺを出力する。
【０１０２】
デコーダ４１は、角度信号監視部４３からダイアグＢＺが入力されると、デコード方式を、通常デコード方式Ｄｏから、異常時デコード方式Ｄｂｚに切り替える。この異常時デコード方式Ｄｂｚは、ダイアグＢＺに対応したデコード方式であり、Ｂ，Ｚ各相信号以外の他の正常な角度信号であるＡ相信号を用いてデコードを行う。つまり、図３の時刻ｔｅ以降のカウンタ値（変則カウント値）と同じ要領であり、ダイアグＢＺが入力された場合、まず、その時点でのエッジカウンタのカウンタ値（規定カウンタ値）を正規の値に更新する（＋４または−４）。そして、Ａ相信号のエッジ変化が生じる毎に、エッジカウンタを２つずつカウントアップ（またはカウントダウン）させていく。従って、ＢＺ両相異常時は、Ａ相信号に基づく変則カウント値が回転角φとして出力されることになる。
【０１０３】
また、Ｚ相異常の判断後、Ａ，Ｂ各相信号のエッジ変化が交互に所定回数続くことなく、例えばＡ相信号がＨ固定またはＬ固定となってＢ相信号のエッジ変化のみ生じるようになった場合は、Ａ相異常の判断も行う。つまり、結果としてＡ相信号とＺ相信号の双方が異常（以下「ＡＺ両相異常」ともいう）であると判断されることになる。
【０１０４】
そして、角度信号監視部４３は、ＡＺ両相異常と判断すると、デコーダ４１及び制御マイコン監視部４２へ、ダイアグ情報として、角度信号ダイアグのうちＡＺ両相異常を示すダイアグＡＺを出力する。
【０１０５】
デコーダ４１は、角度信号監視部４３からダイアグＡＺが入力されると、デコード方式を、通常デコード方式Ｄｏから、異常時デコード方式Ｄａｚに切り替える。この異常時デコード方式Ｄａｚは、ダイアグＡＺに対応したデコード方式であり、Ａ，Ｚ各相信号以外の他の正常な角度信号であるＢ相信号を用いてデコードを行う。つまり、上述したＢＺ両相異常と同じ要領であり、ダイアグＡＺが入力された場合、まず、その時点でのエッジカウンタのカウンタ値（規定カウンタ値）を正規の値に更新する（＋４または−４）。そして、Ｂ相信号のエッジ変化が生じる毎に、エッジカウンタを２つずつカウントアップ（またはカウントダウン）させていく。従って、ＡＺ両相異常時は、Ｂ相信号に基づく変則カウント値が回転角φとして出力されることになる。
【０１０６】
ここまで、角度信号監視部４３による角度信号の異常判断方法、およびデコーダ４１による角度信号のデコード方法について説明したが、これら各方法を簡潔にまとめると、図４および図５のように表すことができる。なお、図４に示した角度信号異常判定動作（上述した各種異常の判断）は角度信号監視部４３により行われ、図５に示したデコード方式設定動作（上述した各種デコード方式の切り替え）はデコーダ４１により行われるものであって、いずれもソフトウェア処理ではないが、図４および図５では、それぞれ対応するハードウェアの動作を模式的にフローチャート形式で表現している。
【０１０７】
図４に示すように、角度信号監視部４３は、まずＳ１１０で、ＥＶＥＣＵ９から入力される車速信号に基づき、車速が一定速度以上であるか否か判断する。そして、車速が一定速度以上でなければ（Ｓ１１０：ＮＯ）、角度信号異常判定動作を終了する。つまり、車速が一定速度より低い場合は、角度信号の異常判断は行わない。
【０１０８】
車速が一定速度以上ならば（Ｓ１１０：ＹＥＳ）、Ｓ１２０にて、Ａ相信号およびＢ相信号がともにＨ固定またはＬ固定であるか否か、即ちＡＢ両相異常であるか否か判断する。そして、ＡＢ両相異常と判断した場合はＳ１８０にてダイアグＡＢをデコーダ４１へ出力する。
【０１０９】
ＡＢ両相異常でなかった場合は、Ｓ１３０に進み、Ｚ相異常の判断を行う。即ち、Ｓ１３０にて、角度信号監視部４３自身が備えるエッジカウンタのカウンタ値が０になったか否か判断する。エッジカウンタのカウンタ値が０になった場合は、Ｓ１４０にて、Ｚ相信号のエッジが立ち上がったか否かを判断する。Ｚ相信号のエッジが立ち上がらなかった場合は、Ｚ相異常と判断し、さらにＳ１９０に進む。Ｓ１９０では、Ａ相信号がＨ固定またはＬ固定であるか否か、即ちＡ相異常であるか否かを判断する。そして、Ａ相異常と判断した場合は、Ｚ相異常であることも含め、ダイアグＡＺをデコーダ４１へ出力する。
【０１１０】
Ｓ１９０で、Ａ相信号が正常であった場合は、Ｓ２１０に進み、Ｂ相信号がＨ固定またはＬ固定であるか否か、即ちＢ相異常であるか否かを判断する。そして、Ｂ相異常と判断した場合は、Ｚ相異常であることも含め、ダイアグＢＺをデコーダ４１へ出力する。Ｓ２１０で、Ｂ相信号も正常であった場合は、Ｓ２３０に進み、ダイアグＺをデコーダ４１へ出力する。
【０１１１】
Ｓ１３０でエッジカウンタのカウンタ値が０でなかった場合、およびＳ１４０でＺ相信号のエッジが立ち上がった場合は、Ｓ１５０に進む。Ｓ１５０では、Ｓ１９０と全く同様に、Ａ相異常の有無を判断する。そして、Ａ相異常と判断した場合は、Ｓ２４０にて、ダイアグＡをデコーダ４１へ出力する。Ａ相信号が正常であった場合は、Ｓ１６０に進み、Ｓ２１０と全く同様に、Ｂ相異常の有無を判断する。そして、Ｂ相異常と判断した場合は、Ｓ２５０にて、ダイアグＢをデコーダ４１へ出力する。Ｂ相信号が正常であった場合は、Ｓ１７０にて、Ａ，Ｂ，Ｚ各相信号いずれも正常と判定して、Ｓ１１０に戻る。
【０１１２】
次に、図５に示すように、デコーダ４１は、まずＳ３１０で、角度信号監視部４３から角度信号ダイアグが入力されたか否かを判断する。角度信号ダイアグの入力がなければ、Ｓ３２０にて、通常デコード方式ＤｏにてＡ，Ｂ，Ｚ各相信号のデコードを行い、回転角φを生成して出力する。
【０１１３】
角度信号ダイアグが入力された場合は、Ｓ３３０以降で、ダイアグの種類の判断およびダイアグに応じたデコード方式への切り替えを行う。即ち、Ｓ３３０で、入力された角度信号ダイアグがダイアグＡであるか否か判断する。そして、ダイアグＡであった場合は、Ｓ３４０にて、デコード方式を異常時デコード方式Ｄａに切り替える。異常時デコード方式Ｄａの詳細は既述の通りである。即ち、異常と判断される前の正常時の回転方向を維持する。そして、Ｂ相信号に基づいてカウントされる変則カウント値をデコード結果（回転角φ）として出力することを基本としつつ、Ｚ相信号に基づく推定カウンタ値による補間が可能ならば補間も実行する。
【０１１４】
Ｓ３３０でダイアグＡではないと判断した場合は、Ｓ３５０で、入力された角度信号ダイアグがダイアグＢであるか否か判断する。そして、ダイアグＢであった場合は、Ｓ３６０にて、デコード方式を異常時デコード方式Ｄｂに切り替える。異常時デコード方式Ｄｂの詳細は既述の通りである。即ち、異常と判断される前の正常時の回転方向を維持する。そして、Ａ相信号に基づいてカウントされる変則カウント値をデコード結果（回転角φ）として出力することを基本としつつ、Ｚ相信号に基づく推定カウンタ値による補間が可能ならば補間も実行する。
【０１１５】
Ｓ３５０でダイアグＢではないと判断した場合は、Ｓ３７０で、入力された角度信号ダイアグがダイアグＡＢであるか否か判断する。そして、ダイアグＡＢであった場合は、Ｓ３８０にて、デコード方式を異常時デコード方式Ｄａｂに切り替える。異常時デコード方式Ｄａｂの詳細は既述の通りである。即ち、異常と判断される前の正常時の回転方向を維持する。そして、Ｚ相信号に基づく推定カウンタ値をデコード結果（回転角φ）として出力する。
【０１１６】
Ｓ３７０でダイアグＡＢではないと判断した場合は、Ｓ３９０で、入力された角度信号ダイアグがダイアグＡＺであるか否か判断する。そして、ダイアグＡＺであった場合は、Ｓ４００にて、デコード方式を異常時デコード方式Ｄａｚに切り替える。異常時デコード方式Ｄａｚの詳細は既述の通りである。即ち、異常と判断される前の正常時の回転方向を維持する。そして、Ｂ相信号に基づく変則カウント値をデコード結果（回転角φ）として出力する。
【０１１７】
Ｓ３９０でダイアグＡＺではないと判断した場合は、Ｓ４１０で、入力された角度信号ダイアグがダイアグＢＺであるか否か判断する。そして、ダイアグＢＺであった場合は、Ｓ４２０にて、デコード方式を異常時デコード方式Ｄｂｚに切り替える。異常時デコード方式Ｄｂｚの詳細は既述の通りである。即ち、異常と判断される前の正常時の回転方向を維持する。そして、Ａ相信号に基づく変則カウント値をデコード結果（回転角φ）として出力する。
【０１１８】
Ｓ４１０でダイアグＢＺではないと判断した場合は、Ｓ４３０にて、デコード方式を異常時デコード方式Ｄｚに切り替える。異常時デコード方式Ｄｚの詳細は既述の通りである。即ち、Ａ，Ｂ各相信号に基づく規定カウント値をデコード結果（回転角φ）として出力する。
【０１１９】
次に、監視マイコン４０における制御マイコン監視部４２による監視制御処理について、図６を用いて説明する。既述の通り、制御マイコン監視部４２の実体はＣＰＵである。ＣＰＵは、動作開始後、所定の制御周期（電流サンプリング周期）で、ＲＯＭ等に記憶されている図６の監視制御処理プログラムを実行する。
【０１２０】
制御マイコン監視部４２（ＣＰＵ）は、図６の監視制御処理を開始すると、まずＳ５１０にて、電流サンプリングを行う。即ち、各電流センサ２５〜２７からの各電流信号を読み込む。そして、Ｓ５２０にて、角度信号監視部４３から角度信号ダイアグが入力されているか否かを判断する。
【０１２１】
Ｓ５２０で角度信号ダイアグが入力されていない場合は、Ｓ５３０に進み、制御マイコン監視処理を行う。即ち、既述の通り、デコーダ４１からの回転角φ、各電流センサ２５，２６，２７からの電流信号、およびＥＶＥＣＵ９からのトルク指令値に基づいて、制御マイコン３０が正常に動作しているか否かを監視するのである。そして、Ｓ５４０にて、制御マイコン３０が異常であるか否か判断し、制御マイコン３０が異常ならば、その旨を示す制御マイコン異常ダイアグを自身のＲＡＭ（ＳＲＡＭ）に記憶すると共に、ＥＶＥＣＵ９へ通知する。
【０１２２】
一方、Ｓ５２０にて、角度信号ダイアグが入力されている場合は、Ｓ５６０にて、その入力されているダイアグを記憶すると共に、そのダイアグをＥＶＥＣＵ９へ通知する。これにより、ＥＶＥＣＵ９では、既述の角度信号異常対応処理が行われることになる。そしてＳ５７０で、入力されたダイアグがダイアグＺであるか否かを判断する。
【０１２３】
ダイアグＺでなかった場合は、Ｓ５３０に進むが、ダイアグＺであった場合は、Ｓ５８０に進む。Ｓ５８０〜Ｓ６００の処理は、ダイアグＺの場合における、回転角の基準位置の確認処理である。
【０１２４】
既述の通り、ダイアグＺが入力されている場合（即ちＺ相異常が生じている場合）、デコーダ４１では異常時デコード方式Ｄｚにてデコードが行われるが、この場合、Ｚ相信号が異常であることから、Ａ，Ｂ各相信号に基づくエッジカウンタのカウントは継続されて回転角は検出できるものの、基準位置の確認、即ちＺ相パルスに基づくカウンタ値のリセットはできない。そのため、何らかの原因で、エッジカウンタのカウンタ値が０になるタイミングが、本来Ｚ相パルスが発生するはずのタイミングから大きくずれてしまうと、制御マイコン監視部４２は精度の悪い角度情報（回転角φ）を用いて制御マイコン３０の監視を行うことになり、あまり好ましいものではない。
【０１２５】
そこで、制御マイコン監視部４２は、ダイアグＺが入力された場合は、Ｓ５８０〜Ｓ６００にて、Ｕ相電流と回転角φの位相を比較することで基準位置の確認を行うようにしている。換言すれば、回転角φが実際の回転角と異なっているか否かの確認を行うのである。
【０１２６】
即ち、Ｓ５８０では、デコーダ４１からの回転角φが０度（例えばカウント値０）または１８０度（例えばカウント値２０４７）の何れかであるか否かを判断する。そして、０度または１８０度の何れかならば、Ｓ５９０にて、Ｕ相電流が０またはその近傍であるか否かを判断する。
【０１２７】
図７に示すように、回転角φが正常ならば、各相電流と回転角φは同期した状態で周期的に変化する。そして、本実施形態では、Ｕ相電流がほぼ０となるときに、モータ１の回転角が０度または１８０度となるように構成されている。そのため、Ｕ相電流がほぼ０となったときにデコーダ４１からの回転角φが０度または１８０度となっているか否かを確認することで、デコーダ４１からの回転角φの基準位置が実際の回転状態と合っているか否か、即ちデコーダ４１からの回転角φが十分に信頼出来るものであるか否かを確認できるのである。
【０１２８】
Ｓ５９０で、Ｕ相電流がほぼ０であった場合は、回転角φの基準位置が合っているものとして、Ｓ５３０に進む。一方、Ｓ５９０で、Ｕ相電流が０またはその近傍とはみなせない場合は、Ｓ６００にて、ＥＶＥＣＵ９へ、回転角φの基準位置が合っていない旨（換言すれば回転角φが実際の回転角と異なっている旨）を示すダイアグαを出力する。これにより、ＥＶＥＣＵ９では、ダイアグαに対応した所定の異常対応処理が行われることになる。この異常対応処理は種々考えられ、例えば単に運転者に対して異常が生じた旨を報知するようにしてもよいし、車両を緊急的に停止させるようにしてもよい。
【０１２９】
なお、ダイアグαが出力されるのは、別途、Ｚ相異常によりダイアグＺが出力されていることが前提である。そのため、ダイアグαが出力された場合は、別途出力されているダイアグＺと合わせて、双方のダイアグに対応した異常対応処理が行われることになる。
【０１３０】
以上説明した本実施形態によれば、デコーダ４１は、Ａ，Ｂ，Ｚ各相信号のうち何れか１つ又は２つが異常となっても、他の正常な信号を用いて回転角φを生成することができる。そのため、制御マイコン監視部４２は、Ａ，Ｂ，Ｚ各相信号の異常が生じても、３つ全てが異常でない限り、所望の（最低限の）信頼性を有する回転角φに基づいて制御マイコン３０の監視動作を必要最小限の期間（例えば退避走行に要する期間）継続することができる。
【０１３１】
また、Ｚ相信号に基づいて角度推定を行う推定カウンタ４４を備え、ＡＢ両相異常が生じた場合にはこの推定カウンタ４４の推定カウンタ値を回転角φとして出力するが、この推定カウンタ値は、Ａ相異常又はＢ相異常の場合にも、補間用として用いられる（図３の最下段参照）。このように、Ａ相異常又はＢ相異常の場合に推定カウンタ値を補間用として用いることで、異常状態でありながらも分解能のより高い回転角φを得ることができる。
【０１３２】
また、Ｚ相異常の場合、Ｚ相パルスに基づく基準位置の確認はできなくなるが、本実施形態では、Ａ，Ｂ各相信号によるエッジカウンタのカウンタ値とＵ相電流の位相とを比較することにより、エッジカウンタのカウンタ値が示す回転角φの基準位置が正しいか否か、即ちその回転角φが実際の回転角と合っているか否かを判断するようにしている。そのため、Ｚ相異常が発生した場合に、Ａ，Ｂ各相信号に基づく回転角φが実際と合わなくなってきた場合にはその旨が的確に検出され、これによりＥＶＥＣＵ９は適切且つ迅速な対応をとることができる。
【０１３３】
［変形例］
以上、本発明の実施の形態について説明したが、本発明の実施の形態は、上記実施形態に何ら限定されるものではなく、本発明の技術的範囲に属する限り種々の形態を採り得ることはいうまでもない。
【０１３４】
上記実施形態では、Ａ相信号またはＢ相信号が異常となった場合、デコーダ４１は、異常と判断される直前の正常時の回転方向をそのまま保持して以後も引き続きその回転方向にて回転するものとしてカウントを継続するようにした。しかし、異常と判断された後、実際には回転方向が変化する可能性もある。そこで、当該電気自動車において、Ａ，Ｂ各相信号以外にモータ１の回転方向を判別できる何らかの信号や情報等を取得できれば、デコーダ４１は、その取得した回転方向に基づいて正しくカウントを行うことができる。
【０１３５】
本実施形態では、ＥＶＥＣＵ９にシフト位置信号が入力されている。このシフト位置信号は、シフトレバーの位置を示す信号である。通常、シフト位置がＲ（リバース）の場合は、車両を後進させる方向にモータ１が回転し、逆に、Ｒ、Ｐ（パーキング）、およびＮ（ニュートラル）以外のシフト位置の場合は、車両を前進させる方向にモータ１が回転するものと判断できる。
【０１３６】
そこで、ＥＶＥＣＵ９からＭＧＥＣＵ７へシフト位置信号を送信するようにし、監視マイコン４０内の制御マイコン監視部４２は、その送信されてきたシフト位置信号に基づいてモータ１の回転方向を判別するようにしてもよい。
【０１３７】
また、シフト位置信号のような特定の信号がなくても、制御マイコン監視部４２は、トルク指令値および各電流信号を用いて、回転方向を求めることができる。
モータ１の制御（本例ではベクトル制御）においては、一般に、モータ１の回転角θと、Ｕ相電流ＩｕおよびＷ相電流Ｉｗを用いて、次式（３），（４）のようにｄ・ｑ各軸の実電流値Ｉｄ，Ｉｑが得られる。
【０１３８】
【数１】
2013257165.tif 000003
一方、トルク指令値についても、ｄ・ｑ各軸の電流指令値ＩｄｃｏｍおよびＩｑｃｏｍに変換される。そして、各電流指令値ＩｄｃｏｍおよびＩｑｃｏｍと、各実電流値Ｉｄ，Ｉｑとの差に基づくフィードバック制御により、モータ１が制御される。
【０１３９】
そこで、回転角φがある角度φ０からｄだけ変化したときに、順回転によりｄだけ変化（即ち回転角φがφ０＋ｄとなった）のか、それとも逆回転によりｄだけ変化（即ち回転角φがφ０−ｄとなった）のかを、上記式（４）を用いて判断する。
【０１４０】
具体的には、回転角φがφ０からｄだけ変化したときに、φ０＋ｄとなったものと仮定した場合のｑ軸電流Ｉｑ（φ０＋ｄ）、およびφ０−ｄとなったものと仮定した場合のｑ軸電流Ｉｑ（φ０−ｄ）を、それぞれ上記式（４）を用いて演算する。即ち、上記式（４）において、φをφ０＋ｄおよびφ０−ｄとしたときのそれぞれの演算結果を求める。なおその際、上記式（４）中のＩｕおよびＩｗは、いずれも回転角φがφ０からｄだけ変化した時点での値を用いる。
【０１４１】
一方、回転角φがφ０のときのトルク指令値に基づいて、ｑ軸電流指令値Ｉｑｃｏｍも演算しておく。
そして、その演算したｑ軸電流指令値と、上記各ｑ軸電流Ｉｑ（φ０＋ｄ），Ｉｑ（φ０−ｄ）との差の絶対値ｒａ，ｒｂをそれぞれ次式（５），（６）にて求める。
【０１４２】
【数２】
2013257165.tif 000004
そして、各絶対値ｒａ，ｒｂのうち小さい方の回転角が、正しい回転角であると判断できる。例えばｒａ＜ｒｂであった場合は、φ０＋ｄが正しい回転角、即ちモータ１は順回転しているものと判断できる。逆に、ｒａ＞ｒｂであった場合は、φ０−ｄが正しい回転角、即ちモータ１は逆回転しているものと判断できる。このように、制御マイコン監視部４２は、上記式（５）、（６）を用いた演算により、回転方向を判別することができるのである。
【０１４３】
そこで、制御マイコン監視部４２は、Ａ相信号またはＢ相信号が異常となってそれを示すダイアグ（ダイアグＡ，Ｂ，ＡＢ，ＡＺ，ＢＺのいずれか）が入力された場合、シフト位置信号のように回転方向を判別できる何らかの信号等の入力があれば、その信号等を用いて回転方向を判別し、その結果をデコーダ４１へ出力するとよい。また、そのような信号等の入力がなければ、上記式（５），（６）を用いた演算によって回転方向を判別しその結果をデコーダ４１へ出力するとよい。なお、この回転方向の判別は、角度信号ダイアグが入力された後、定期的に行うようにするとよい。
【０１４４】
そして、デコーダ４１は、制御マイコン監視部４２から回転方向の判別結果が入力されたら、自身が保持している回転方向と比較し、異なっていたならばその入力された判別結果を正しいものとして新たに保持し、その新たな回転方向に基づいてカウントを行うようにするとよい。
【０１４５】
また、図４のＳ１１０における車速判断は、ＥＶＥＣＵ９からの車速信号に基づいて行うことに限定されず、他に車速を直接又は間接的に示す何らかの信号等があれば、それに基づいて判断するようにしてもよい。また、制御マイコン監視部４２が各電流センサからの各電流検出信号に基づいて（即ち電流値の変化に基づいて）車速を演算し、その演算結果を角度信号監視部４３へ入力することで、角度信号監視部４３は、その入力された演算結果（車速）をもとにＳ１１０の判断を行うようにしてもよい。
【０１４６】
また、上記実施形態では、デコーダ４１，角度信号監視部４３，及び推定カウンタ４４をいずれもハードウェアにて構成した例を示したが、これはあくまでも一例であり、このうち１つ又は複数をＣＰＵによるソフトウェア処理にて実現するようにしてもよい。
【０１４７】
また、上記実施形態では、本発明を電気自動車の監視マイコン４０に適用した例を示したが、本発明の適用が監視マイコン４０に限定されるものでないことはいうまでもなく、また電気自動車への適用に限定されるものでないこともいうまでもない。
【０１４８】
例えば、Ａ，Ｂ，Ｚ各相信号に基づいてモータ制御を行うよう構成されたモータ制御装置に対して本発明を適用することができる。一例として、Ａ，Ｂ，Ｚ各相信号を出力するいわゆるロータリエンコーダを備えたモータ制御装置への適用が考えられる。その場合、Ａ，Ｂ，Ｚ各相信号の何れかが異常となった場合に、他の正常な信号を元に対応する異常時デコード方式にてデコードを行うことで回転角を生成し、その回転角を用いて退避走行を可能とすることができる。このように、本発明は、Ａ，Ｂ，Ｚ各相信号に基づいて回転体の回転角を生成するよう構成されたあらゆる機器、装置等に対して適用可能である。
【符号の説明】
【０１４９】
１…モータ、３…バッテリ、５…インバータ、７…ＭＧＥＣＵ、９…ＥＶＥＣＵ、１３…レゾルバ、２５…Ｕ相電流センサ、２６…Ｖ相電流センサ、２７…Ｗ相電流センサ、３０…制御マイコン、３１…ＲＤＣ、３２…モータ制御部、３３…エンコーダ、３６…ＰＷＭ回路、３６…パルス幅変調回路、４０…監視マイコン、４１…デコーダ、４２…制御マイコン監視部、４３…角度信号監視部、４４…推定カウンタ
【図１】
2013257165.tif 000005
【図２】
2013257165.tif 000006
【図３】
2013257165.tif 000007
【図４】
2013257165.tif 000008
【図５】
2013257165.tif 000009
【図６】
2013257165.tif 000010
【図７】
2013257165.tif 000011