(57)【要約】【課題】運転者に違和感を与えないようにしながら、回転位置センサのオフセット量の学習機会を確保する。【解決手段】走行中、前輪側にトルクを出力するモータＭＧ１のトルク指令Ｔｍ１＊に値０を設定すると共に後輪側にトルクを出力するモータＭＧ２のトルク指令Ｔｍ２＊に要求トルクＴ＊を設定して、モータＭＧ１の回転角θｍ１を検出する回転位置センサのオフセット学習を行なう（Ｓ６００，Ｓ６１０，Ｓ５６０〜Ｓ５８０）。また、走行中、前輪側にトルクを出力するモータＭＧ１のトルク指令Ｔｍ１＊に要求トルクＴ＊を設定すると共に後輪側にトルクを出力するモータＭＧ２のトルク指令Ｔｍ２＊に値０を設定して、モータＭＧ２の回転角θｍ２を検出する回転位置センサのオフセット学習を行なう（Ｓ６５０，Ｓ６６０，Ｓ５６０〜Ｓ５８０）。【選択図】図７
2017123759.tif 000002
【特許請求の範囲】
【請求項１】
駆動輪に接続された三相電動機を備える車両であって、
前記三相電動機を駆動するインバータと、
前記三相電動機のトルク指令に基づいてｄ軸電流指令とｑ軸電流指令とを設定し、前記三相電動機の回転位置に基づいて前記三相電動機の各相電流をｄ軸電流とｑ軸電流とに変換し、前記ｄ軸電流指令と前記ｄ軸電流と前記ｑ軸電流指令と前記ｑ軸電流とに基づいてｄ軸電圧指令とｑ軸電圧指令とを設定し、前記三相電動機の回転位置に基づいて前記ｄ軸電圧指令と前記ｑ軸電圧指令とを前記三相電動機の各相電圧指令に変換し、前記変換した各相電圧指令に基づいて前記インバータを駆動制御するインバータ制御手段と、
前記三相電動機の回転位置を検出する回転位置センサと、
前記三相発電機が回転している状態で、前記ｄ軸電流指令および前記ｑ軸電流指令を値０とし、値０とした前記ｄ軸電流指令および前記ｑ軸電流指令に基づく前記ｄ軸電圧指令が値０となるよう前記回転位置のオフセット量を学習するオフセット学習を行なうオフセット学習手段と、
前記回転位置センサにより検出された回転位置を前記オフセット学習手段により学習されたオフセット量に基づいて補正する回転位置補正手段と、
を備え、
前記三相電動機は、前輪に接続された前輪用三相電動機と、後輪に接続された後輪用三相電動機とを有し、
前記インバータは、前記前輪用三相電動機を駆動する前輪用インバータと、前記後輪用三相電動機を駆動する後輪用インバータとを有し、
前記インバータ制御手段は、走行に要求される要求トルクのうち前記前輪側に分配されるトルクに基づいて前記前輪用三相電動機のトルク指令を設定して前記前輪用インバータを制御すると共に前記後輪側に分配されるトルクに基づいて前記後輪用三相電動機のトルク指令を設定して前記後輪用インバータを制御する手段であり、
前記回転位置センサは、前記前輪用三相電動機の回転位置を検出する前輪用回転位置センサと、前記後輪用三相電動機の回転位置を検出する後輪用回転位置センサとを有し、
前記オフセット学習手段は、前記前輪用回転位置センサのオフセット量および／または前記後輪用回転位置センサのオフセット量を学習する手段であり、
前記インバータ制御手段は、前記オフセット学習手段が前記前輪用三相電動機および前記後輪用三相電動機のうち一方の三相電動機の回転位置を検出する回転位置センサのオフセット学習を行なう場合、前記一方の三相電動機のトルク指令を値０とすると共に前記要求トルクが他方の三相電動機から出力されるよう該他方の三相電動機のトルク指令を設定する手段である
ことを特徴とする車両。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両に関し、より詳しくは、駆動輪に接続された三相電動機を備える車両に関する。
【背景技術】
【０００２】
従来より、ｄｑ軸電流によって三相モータ（モータ）を制御するものにおいて、モータの回転子に取り付けられた回転位置センサのオフセット量を学習するものが提案されている（例えば、特許文献１参照）。モータの制御は、以下のように行なわれる。即ち、モータのトルク指令からｄ軸電流指令およびｑ軸電流指令を設定する。続いて、モータの各相を流れる各相電流を電流センサによって検出し、回転位置センサからのモータの回転角に基づいて各相電流をｄ軸電流およびｑ軸電流に変換する（三相二相変換）。そして、ｄ軸電流指令とｄ軸電流との偏差およびｑ軸電流指令とｑ軸電流との偏差に基づいてフィードバック制御によりｄ軸電圧指令およびｑ軸電圧指令を設定する。そして、回転位置センサからのモータの回転角に基づいてｄ軸電圧指令およびｑ軸電圧指令を各相電圧指令に変換し（二相三相相変換）、変換した各相電圧指令に基づいてＰＷＭ信号を生成してインバータをスイッチング制御することによりモータを駆動する。ここで、回転位置センサにより検出される回転角にオフセット誤差が含まれていると、三相二相変換や二相三相変換が正しく行なわれないため、モータからトルク指令に応じたトルクを出力できなくなる。このため、回転位置センサにより検出された回転角にオフセット補正を施すためのオフセット量を学習するオフセット学習を行なっている。ここで、モータの回転中にｄ軸電流指令およびｑ軸電流指令を値０とすると、回転位置センサにオフセット誤差が含まれていなければ、ｄ軸電圧指令も値０となる。しかし、回転位置センサにオフセット誤差が含まれていると、モータの回転中にｄ軸電流指令およびｑ軸電流指令を値０としても、ｄ軸電圧指令が値０とはならない。このため、ｄ軸電流指令およびｑ軸電流指令を値０としたときに、ｄ軸電圧指令が値０となるように回転角のオフセット量を調整することによりオフセット学習を行なっている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−３３９９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した手法では、回転位置センサのオフセット量を学習するために、モータの回転中にトルク指令を値０としてモータを制御する必要がある。このため、オフセット学習を行なっている間、本来のトルク指令とは異なったトルク指令によりモータが駆動され、運転者に違和感を感じさせる場合がある。
【０００５】
本発明の車両は、運転者に違和感を与えないようにしながら、回転位置センサのオフセット量の学習機会を確保することを主目的とする。
【課題を解決するための手段】
【０００６】
本発明の車両は、上述の主目的を達成するために以下の手段を採った。
【０００７】
本発明の車両は、
駆動輪に接続された三相電動機を備える車両であって、
前記三相電動機を駆動するインバータと、
前記三相電動機のトルク指令に基づいてｄ軸電流指令とｑ軸電流指令とを設定し、前記三相電動機の回転位置に基づいて前記三相電動機の各相電流をｄ軸電流とｑ軸電流とに変換し、前記ｄ軸電流指令と前記ｄ軸電流と前記ｑ軸電流指令と前記ｑ軸電流とに基づいてｄ軸電圧指令とｑ軸電圧指令とを設定し、前記三相電動機の回転位置に基づいて前記ｄ軸電圧指令と前記ｑ軸電圧指令とを前記三相電動機の各相電圧指令に変換し、前記変換した各相電圧指令に基づいて前記インバータを駆動制御するインバータ制御手段と、
前記三相電動機の回転位置を検出する回転位置センサと、
前記三相発電機が回転している状態で、前記ｄ軸電流指令および前記ｑ軸電流指令を値０とし、値０とした前記ｄ軸電流指令および前記ｑ軸電流指令に基づく前記ｄ軸電圧指令が値０となるよう前記回転位置のオフセット量を学習するオフセット学習を行なうオフセット学習手段と、
前記回転位置センサにより検出された回転位置を前記オフセット学習手段により学習されたオフセット量に基づいて補正する回転位置補正手段と、
を備え、
前記三相電動機は、前輪に接続された前輪用三相電動機と、後輪に接続された後輪用三相電動機とを有し、
前記インバータは、前記前輪用三相電動機を駆動する前輪用インバータと、前記後輪用三相電動機を駆動する後輪用インバータとを有し、
前記インバータ制御手段は、走行に要求される要求トルクのうち前記前輪側に分配されるトルクに基づいて前記前輪用三相電動機のトルク指令を設定して前記前輪用インバータを制御すると共に前記後輪側に分配されるトルクに基づいて前記後輪用三相電動機のトルク指令を設定して前記後輪用インバータを制御する手段であり、
前記回転位置センサは、前記前輪用三相電動機の回転位置を検出する前輪用回転位置センサと、前記後輪用三相電動機の回転位置を検出する後輪用回転位置センサとを有し、
前記オフセット学習手段は、前記前輪用回転位置センサのオフセット量および／または前記後輪用回転位置センサのオフセット量を学習する手段であり、
前記インバータ制御手段は、前記オフセット学習手段が前記前輪用三相電動機および前記後輪用三相電動機のうち一方の三相電動機の回転位置を検出する回転位置センサのオフセット学習を行なう場合、前記一方の三相電動機のトルク指令を値０とすると共に前記要求トルクが他方の三相電動機から出力されるよう該他方の三相電動機のトルク指令を設定する手段である
ことを要旨とする。
【０００８】
この本発明の車両では、三相電動機（前輪用三相電動機，後輪用三相電動機）が回転している状態で、ｄ軸電流指令およびｑ軸電流指令を値０とし、値０としたｄ軸電流指令およびｑ軸電流指令に基づくｄ軸電圧指令が値０となるよう回転位置センサ（前輪用回転位置センサ，後輪用回転位置センサ）のオフセット量を学習するオフセット学習を行なう。そして、前輪用三相電動機および後輪用三相電動機のうち一方の三相電動機の回転位置を検出する回転位置センサのオフセット学習を行なう場合、一方の三相電動機のトルク指令を値０とすると共に要求トルクが他方の三相電動機から出力されるよう他方の三相電動機のトルク指令を設定する。これにより、運転者に違和感を与えないようにしながら、回転位置センサのオフセット量の学習機会を確保することができる。
【０００９】
こうした本発明の車両において、前記オフセット学習手段は、前記他方の三相電動機の定格最大トルクの範囲内で前記要求トルクを出力可能であるときに、前記一方の三相電動機の回転位置を検出する回転位置センサのオフセット学習を行なう手段であるものとすることもできる。こうすれば、オフセット学習を実行しながら、より確実に要求トルクに対応することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施例としての自動車２０の構成の概略を示す構成図である。
【図２】モータＭＧ１，ＭＧ２を含む電気駆動系の構成の概略を示す構成図である。
【図３】トルク指令Ｔｍ１＊，Ｔｍ２＊に基づいてモータＭＧ１，ＭＧ２を駆動制御するための制御ブロック図である。
【図４】回転位置センサ４３，４４にオフセット誤差が含まれている場合と含まれていない場合の各ｄ軸電圧Ｖｄおよびｑ軸電圧Ｖｑを示す説明図である。
【図５】モータＥＣＵ４０により実行されるＭＧ１オフセット学習制御ルーチンの一例を示すフローチャートである。
【図６】モータＥＣＵ４０により実行されるＭＧ２オフセット学習制御ルーチンの一例を示すフローチャートである。
【図７】メインＥＣＵ８０により実行される駆動制御ルーチンの一例を示すフローチャートである。
【図８】電源ＥＣＵ９０により実行されるシステム起動処理ルーチンの一例を示すフローチャートである。
【図９】メインＥＣＵ８０により実行される２ＷＤ走行時駆動制御ルーチンの一例を示すフローチャートである。
【図１０】変形例のハイブリッド自動車１２０の構成の概略を示す構成図である。
【図１１】変形例のハイブリッド自動車２２０の構成の概略を示す構成図である。
【発明を実施するための形態】
【００１１】
次に、本発明を実施するための形態を実施例を用いて説明する。
【実施例】
【００１２】
図１は、本発明の一実施例としての自動車２０の構成の概略を示す構成図であり、図２は、モータＭＧ１，ＭＧ２を含む電気駆動系の構成の概略を示す構成図である。実施例の自動車２０は、図示するように、モータＭＧ１と、モータＭＧ２と、インバータ４１，４２と、バッテリ５０と、システムメインリレー５６と、メイン電子制御ユニット（以下、メインＥＣＵという）８０と、電源用電子制御ユニット（以下、電源ＥＣＵという）９０とを備える。
【００１３】
モータＭＧ１は、永久磁石が埋め込まれた回転子と、三相コイルが巻回された固定子と、を有する同期発電電動機として構成されている。このモータＭＧ１の回転子には、前輪３４ａ，３４ｂにデファレンシャルギヤ３３を介して連結された前輪駆動軸３２が接続されている。モータＭＧ２は、モータＭＧ１と同様の同期発電電動機として構成されている。このモータＭＧ２の回転子には、後輪３８ａ，３８ｂにデファレンシャルギヤ３７を介して連結された後輪駆動軸３６が接続されている。
【００１４】
インバータ４１は、電力ライン５４に接続されている。このインバータ４１は、図２に示すように、６つのトランジスタＴ１１〜Ｔ１６と、６つのダイオードＤ１１〜Ｄ１６と、を備える。トランジスタＴ１１〜Ｔ１６は、それぞれ、電力ライン５４の正極母線と負極母線とに対して、ソース側とシンク側になるように、２個ずつペアで配置されている。６つのダイオードＤ１１〜Ｄ１６は、それぞれ、トランジスタＴ１１〜Ｔ１６に逆方向に並列接続されている。トランジスタＴ１１〜Ｔ１６の対となるトランジスタ同士の接続点の各々には、モータＭＧ１の三相コイル（Ｕ相，Ｖ相，Ｗ相）の各々が接続されている。したがって、インバータ４１に電圧が作用しているときに、モータ用電子制御ユニット（以下、モータＥＣＵという）４０によって、対となるトランジスタＴ１１〜Ｔ１６のオン時間の割合が調節されることにより、三相コイルに回転磁界が形成され、モータＭＧ１が回転駆動される。なお、電力ライン５４の正極母線と負極母線とには、平滑用のコンデンサ５７が接続されている。
【００１５】
インバータ４２は、インバータ４１と同様に、６つのトランジスタＴ２１〜Ｔ２６と、６つのダイオードＤ２１〜Ｄ２６と、を備える。そして、インバータ４２に電圧が作用しているときに、モータＥＣＵ４０によって、対となるトランジスタＴ２１〜Ｔ２６のオン時間の割合が調節されることにより、三相コイルに回転磁界が形成され、モータＭＧ２が回転駆動される。
【００１６】
モータＥＣＵ４０は、ＣＰＵ４０ａを中心とするマイクロプロセッサとして構成されており、ＣＰＵ４０ａの他に、処理プログラムを記憶するＲＯＭ４０ｂやデータを一時的に記憶するＲＡＭ４０ｃ，入出力ポート，通信ポートを備える。
【００１７】
モータＥＣＵ４０には、モータＭＧ１，ＭＧ２（インバータ４１，４２）を駆動制御するのに必要な各種センサからの信号が入力ポートを介して入力されている。各種センサからの信号としては、以下のものを挙げることができる。
・モータＭＧ１，ＭＧ２の回転子の回転位置を検出する回転位置検出センサ４３，４４からの回転角θｍ１，θｍ２
・モータＭＧ１，ＭＧ２の各相（Ｖ相，Ｗ相）に流れる電流を検出する電流センサ４５Ｖ，４５Ｗ，４６Ｖ，４６Ｗからの相電流
・コンデンサ５７の端子間に取り付けられた電圧センサ５７ａからの電力ライン５４の電圧ＶＨ
【００１８】
モータＥＣＵ４０からは、モータＭＧ１，ＭＧ２（インバータ４１，４２）を駆動制御するための種々の制御信号が出力ポートを介して出力されている。種々の制御信号としては、以下のものを挙げることができる。
・インバータ４１，４２のトランジスタＴ１１〜Ｔ１６，Ｔ２１〜Ｔ２６へのスイッチング制御信号
【００１９】
モータＥＣＵ４０は、メインＥＣＵ８０と通信ポートを介して接続されている。このモータＥＣＵ４０は、メインＥＣＵ８０からの制御信号によってモータＭＧ１，ＭＧ２（インバータ４１，４２）を駆動制御する。また、モータＥＣＵ４０は、必要に応じてモータＭＧ１，ＭＧ２の駆動状態に関するデータをメインＥＣＵ８０に出力する。なお、モータＥＣＵ４０は、モータＭＧ１，ＭＧ２の回転子の回転角θｍ１，θｍ２に基づいて、モータＭＧ１，ＭＧ２の回転数Ｎｍ１，Ｎｍ２を演算している。
【００２０】
バッテリ５０は、例えばリチウムイオン二次電池として構成されており、上述したように、システムメインリレー５６を介して電力ライン５４に接続されている。バッテリ５０は、バッテリ用電子制御ユニット（以下、バッテリＥＣＵという）５２によって管理される。
【００２１】
バッテリＥＣＵ５２は、図示しないが、ＣＰＵを中心とするマイクロプロセッサとして構成されており、ＣＰＵの他に、処理プログラムを記憶するＲＯＭやデータを一時的に記憶するＲＡＭ，入出力ポート，通信ポートを備える。
【００２２】
バッテリＥＣＵ５２には、バッテリ５０を管理するのに必要な各種センサからの信号が入力ポートを介して入力されている。各種センサからの信号としては、以下のものを挙げることができる。
・バッテリ５０の端子間に設置された電圧センサ５１ａからの電池電圧Ｖｂ
・バッテリ５０の出力端子に取り付けられた電流センサ５１ｂからの電池電流Ｉｂ
・バッテリ５０に取り付けられた温度センサ５１ｃからの電池温度Ｔｂ
【００２３】
バッテリＥＣＵ５２は、メインＥＣＵ８０と通信ポートを介して接続されている。このバッテリＥＣＵ５２は、必要に応じてバッテリ５０の状態に関するデータをメインＥＣＵ８０に出力する。バッテリＥＣＵ５２は、バッテリ５０を管理するために、電池電流Ｉｂの積算値に基づいて、蓄電割合ＳＯＣを演算している。蓄電割合ＳＯＣは、そのときのバッテリ５０から放電可能な電力の容量の、全容量に対する割合である。また、バッテリＥＣＵ５２は、蓄電割合ＳＯＣや電池温度Ｔｂに基づいてバッテリ５０から放電可能な電力の許容最大値としての出力制限Ｗｏｕｔや、バッテリ５０を充電可能な許容最大値（絶対値）としての入力制限Ｗｉｎを設定している。バッテリ５０の出力制限Ｗｏｕｔや入力制限Ｗｉｎは、電池温度Ｔｂが低いとき（例えば０℃以下や−５℃以下，−１０℃以下など）には、その絶対値が通常温度の場合に比して大幅に小さくなるように設定される。
【００２４】
電源ＥＣＵ９０は、図示しないが、ＣＰＵを中心とするマイクロプロセッサとして構成されており、ＣＰＵの他に、処理プログラムを記憶するＲＯＭやデータを一時的に記憶するＲＡＭ，入出力ポート，通信ポートを備える。
【００２５】
電源ＥＣＵ９０には、運転席前面のパネルに取り付けられたパワースイッチ９２からのプッシュ信号やブレーキスイッチ９４からのスイッチ信号などが入力ポートを介して入力されている。電源ＥＣＵ９０からは、パワースイッチ９２に内蔵されたインジケータ９３への点灯信号などが出力ポートを介して出力されている。
【００２６】
電源ＥＣＵ９０は、システムが停止状態にあるときに、ブレーキオンの状態でパワースイッチ９２からプッシュ信号を入力したときには、システムメインリレー５６をオンとすると共に初期化処理を実行することにより、システムを起動状態、即ち、レディオン（ＲＥＡＤＹＯＮ）とする。また、電源ＥＣＵ９０は、システムが起動状態にあるときに、車両が停車している状態でパワースイッチ９２からプッシュ信号を入力したときには、システムメインリレー５６をオフとすることにより、システムを停止状態、即ち、レディオフ（ＲＥＡＤＹＯＦＦ）とする。また、電源ＥＣＵ９０は、メインＥＣＵ８０と通信ポートを介して通信しており、必要に応じてデータや制御信号のやり取りを行なう。
【００２７】
メインＥＣＵ８０は、図示しないが、ＣＰＵ８０ａを中心とするマイクロプロセッサとして構成されており、ＣＰＵ８０ａの他に、処理プログラムを記憶するＲＯＭ８０ｂやデータを一時的に記憶するＲＡＭ８０ｃ，入出力ポート，通信ポートを備える。
【００２８】
メインＥＣＵ８０には、各種センサからの信号が入力ポートを介して入力されている。各種センサからの信号としては、以下のものを挙げることができる。
・シフトレバー８１の操作位置を検出するシフトポジションセンサ８２からのシフトポジションＳＰ
・アクセルペダル８３の踏み込み量を検出するアクセルペダルポジションセンサ８４からのアクセル開度Ａｃｃ
・ブレーキペダル８５の踏み込み量を検出するブレーキペダルポジションセンサ８６からのブレーキペダルポジションＢＰ
・車速センサ８８からの車速Ｖ
【００２９】
メインＥＣＵ８０からは、各種制御信号が出力ポートを介して入力されている。各種制御信号としては、以下のものを挙げることができる。
・システムメインリレー５６への駆動信号
【００３０】
メインＥＣＵ８０は、上述したように、モータＥＣＵ４０やバッテリＥＣＵ５２，電源ＥＣＵ９０と通信ポートを介して接続されている。このメインＥＣＵ８０は、モータＥＣＵ４０やバッテリＥＣＵ５２，電源ＥＣＵ９０と各種制御信号やデータのやりとりを行なっている。
【００３１】
こうして構成された実施例の自動車２０は、運転者によるアクセルペダル８３の踏み込み量に対応するアクセル開度Ａｃｃと車速Ｖとに基づいて走行に要求される要求トルクＴ＊を設定し、この要求トルクＴ＊により走行するようモータＭＧ１，ＭＧ２が駆動制御される。自動車２０の走行モードとしては、要求トルクＴ＊が所定の分配比Ｄで前輪駆動軸３２と後輪駆動軸３６とに分配されるようモータＭＧ１，ＭＧ２を駆動制御する４ＷＤモードと、要求トルクＴ＊の全てが前輪駆動軸３２に出力されるようモータＭＧ１，ＭＧ２を駆動制御する２ＷＤモードとがある。
【００３２】
ここで、モータＭＧ１，ＭＧ２の駆動制御は、モータＥＣＵ４０に含まれる図３の制御ブロックによって行なわれる。モータＭＧ１の制御系は、図３に示すように、電流指令生成器６１と減算器６２ｄ，６２ｑと電圧指令変換器６３ｄ，６３ｑと座標変換器６４とＰＷＭ変換器６５と座標変換器６６と加算器６８とオフセット学習制御器７０とを備える。モータＭＧ１の駆動制御は、まず、トルク指令Ｔｍ１＊に基づいて電流指令生成器６１によりｄｑ軸座標系におけるｄ軸，ｑ軸の電流指令Ｉｄ＊，Ｉｑ＊を生成する。電流指令生成器６１は、トルク指令に対応する電流指令の関係を予め定めた電流指令テーブルを用いてｄ軸，ｑ軸の電流指令Ｉｄ＊，Ｉｑ＊を生成する。次に、モータＭＧ１のＵ相，Ｖ相，Ｗ相にそれぞれ流れる電流の総和が値０であるとして、モータＭＧ１の制御用回転角θを用いて座標変換器６６により電流センサ４５Ｖ，４５ＷからのＶ相電流Ｉｖ，Ｗ相電流Ｉｗをｄ軸電流Ｉｄ，ｑ軸電流Ｉｑに変換する（三相二相変換）。モータＭＧ１の制御用回転角θは、回転位置センサ４３により検出される回転角θｍ１と後述するオフセット学習制御部７０により出力されるオフセット量Δθｍ１との和として加算器６８により演算されたものが用いられる。続いて、設定したｄ軸電流指令Ｉｄ＊，ｑ軸電流指令Ｉｑ＊と電流フィードバックのためのｄ軸電流Ｉｄ，ｑ軸電流Ｉｑとの差分ΔＩｄ，ΔＩｑを減算器６２ｄ，６２ｑにより演算する。そして、演算した差分ΔＩｄ，ΔＩｑに基づいて電圧指令変換器６３ｄ，６３ｑによりｄ軸電圧指令Ｖｄ＊，ｑ軸電圧指令Ｖｑ＊を生成する。ここで、ｄ軸電圧指令Ｖｄ＊，ｑ軸電圧指令Ｖｑ＊は、差分ΔＩｄ，ΔＩｑに基づくフィードバック項と、各軸相互に干渉する項をキャンセルするためのフィードフォワード項（後述する−ω・φｑ，ω・φｄ）との和として演算される。ｄ軸電圧指令Ｖｄ＊，ｑ軸電圧指令Ｖｑ＊を生成すると、上述したモータＭＧ１の制御用回転角θを用いて座標変換器６４によりｄ軸電圧指令Ｖｄ＊，ｑ軸電圧指令Ｖｑ＊を相電圧指令Ｖｕ＊，Ｖｖ＊，Ｖｗ＊に変換する（二相三相変換）。そして、相電圧指令Ｖｕ＊，Ｖｖ＊，Ｖｗ＊に基づいてＰＷＭ変換器６５によりパルス幅変調信号を生成し、生成したパルス幅変調制御信号に基づいてインバータ４１のトランジスタをスイッチングすることによって直流電力を三相交流電力としてモータＭＧ１に印加する。
【００３３】
モータＭＧ２の制御系は、図３に示すように、電流指令生成器７１と減算器７２ｄ，７２ｑと電圧指令変換器７３ｄ，７３ｑと座標変換器７４とＰＷＭ変換器７５と座標変換器７６と加算器７８とオフセット学習制御器７０とを備える。モータＭＧ２の駆動制御は、モータＭＧ１の駆動制御と同様に、トルク指令Ｔｍ２＊に基づいて、電流指令Ｉｄ＊，Ｉｑ＊、差分ΔＩｄ，ΔＩｑ、ｄ軸電圧指令Ｖｄ＊，ｑ軸電圧指令Ｖｑ＊、相電圧指令Ｖｕ＊，Ｖｖ＊，Ｖｗ＊、パルス幅変調信号を順に生成する。そして、パルス幅変調信号に基づきインバータ４２のトランジスタをスイッチングすることにより三相交流電力をモータＭＧ２に印加する。また、座標変換器７４，７６で用いられるモータＭＧ２の制御用回転角θは、モータＭＧ１の制御用回転角θと同様に、回転位置センサ４４により検出される回転角θｍ２とオフセット学習制御部７０により出力されるオフセット量Δθｍ２との和として加算器７８により演算されたものが用いられる。
【００３４】
いま、座標変換（三相二相変換，二相三相変換）で用いるモータＭＧ１の制御用回転角θとして、回転位置センサ４３により検出される回転角θｍ１をそのまま用いる場合を考える。永久磁石によって発生する磁束の方向をｄ軸とし、ｄ軸と直交する軸をｑ軸とすると、モータＭＧ１の電圧方程式を、次式（１），（２）により示すことができる。
【００３５】
Vd=R・Id-ω・φq            …（１）
Vq=R・Iq+ω・φd            …（２）
ただし、
Vd,Vq：ｄ軸電圧，ｑ軸電圧
R：一相あたりの抵抗
Id,Iq：ｄ軸電流，ｑ軸電流
ω：回転子の角速度
φd,φq：ｄ軸磁束，ｑ軸磁束
【００３６】
回転位置センサ４３により検出されるモータＭＧ１の回転角θｍ１と実際の回転角との間に位相差Δθ（オフセット誤差）がない場合、永久磁石が発生させる磁束φの方向とｄ軸とが一致する（図４（ａ）参照）。このため、ｄ軸磁束φｄおよびｑ軸磁束φｑは、次式（３），（４）で示すことができる。
【００３７】
φd=Ld・Id+φ    …（３）
φq=Lq・Iq         …（４）
ただし、
Ld,Lq：ｄ軸インダクタンス，ｑ軸インダクタンス
φ：永久磁石の磁束
【００３８】
このとき、ｄ軸電流Ｉｄおよびｑ軸電流Ｉｑを値０とすると、式（３）および式（４）から、ｄ軸磁束φｄは値φとなり、ｑ軸磁束φｑは値０となる。そして、これらを式（１），（２）にそれぞれ代入すると、ｄ軸電圧Ｖｄ，ｑ軸電圧Ｖｑはそれぞれ次式（５），（６）で示され、ｄ軸電圧Ｖｄが値０となる。
【００３９】
Vd=0           …（５）
Vq=ω・φ        …（６）
【００４０】
一方、回転位置センサ４３により検出されるモータＭＧ１の回転角θｍ１と実際の回転角との間に位相差Δθ（オフセット誤差）がある場合、永久磁石が発生させる磁束φの方向とｄ軸との間で位相差Δθのズレが生じる（図４（ｂ）参照）。このため、ｄ軸電流Ｉｄおよびｑ軸電流を値０とすると、ｄ軸電圧Ｖｄ，ｑ軸電圧Ｖｑはそれぞれ次式（７），（８）で示され、モータＭＧ１が回転していると（角速度ωが値０でなければ）、ｄ軸電圧Ｖｄが値０とはならない。
【００４１】
Vd=ω・φ・cosα        …（７）
Vq=ω・φ・cosα        …（８）
【００４２】
このように、回転位置センサ４３により検出される回転角θｍ１にオフセット誤差がない場合には、ｄ軸電流Ｉｄおよびｑ軸電流Ｉｑを値０としたときに、ｄ軸電圧Ｖｄが値０となる。一方、回転位置センサ４３により検出される回転角θｍ１にオフセット誤差がある場合には、ｄ軸電流Ｉｄおよびｑ軸電流Ｉｑを値０としても、モータＭＧ１が回転していると、ｄ軸電圧Ｖｄが値０とならない。上述したように、回転位置センサ４３により検出される回転角θｍ１は、座標変換器６４，６６による座標変換（二相三相変換，三相二相変換）に用いられる。このため、回転角θｍ１にオフセット誤差がある場合に当該オフセット誤差を打ち消すためのオフセット補正を行なわないと、座標変換を正しく行なうことができず、モータＭＧ１からトルク指令に見合うトルクを出力することができなくなる。本実施例では、モータＭＧ１の回転中にそのトルク指令を値０（ｄ軸電流Ｉｄおよびｑ軸電流を値０と）とし、この状態でｄ軸電圧Ｖｄが値０となるように回転位置センサ４３により検出される回転角θｍ１をオフセットし、ｄ軸電圧Ｖｄが値０となったときの回転角θｍ１のオフセット量Δθｍ１を学習値（オフセット誤差）とするオフセット学習を行なう。オフセット学習が行なわれると、回転位置センサ４３により検出される回転角θｍ１は、加算器６８によって、オフセット量Δθｍ１だけオフセットされて、制御用回転角θとして座標変換器６４，６６にそれぞれ出力される。
【００４３】
また、モータＭＧ２についても、モータＭＧ１と同様に、モータＭＧ２の回転中にそのトルク指令を値０（ｄ軸電流Ｉｄおよびｑ軸電流Ｉｑを値０と）とし、この状態でｄ軸電圧Ｖｄが値０となるように回転位置センサ４４により検出される回転角θｍ２をオフセットし、ｄ軸電圧Ｖｄが値０となったときの回転角θｍ２のオフセット量Δθｍ２を学習値（オフセット誤差）とするオフセット学習を行なう。オフセット学習が行なわれると、回転位置センサ４４により検出される回転角θｍ２は、加算器７８によって、オフセット量Δθｍ２だけオフセットされて、制御用回転角θとして座標変換器７４，７６にそれぞれ出力される。
【００４４】
次に、こうして構成された実施例の自動車２０の動作について説明する。本実施例では、オフセット学習はモータＥＣＵ４０により実行され、オフセット学習の実行条件が成立したか否かの判定はメインＥＣＵ８０によって実行される。図５は、モータＥＣＵ４０のオフセット学習制御部７０により実行されるＭＧ１オフセット学習制御ルーチンの一例を示すフローチャートであり、図６は、モータＥＣＵ４０のオフセット学習制御部７０により実行されるＭＧ２オフセット学習制御ルーチンの一例を示すフローチャートである。これらのルーチンは、所定時間毎（例えば、数ｍｓｅｃ毎）に繰り返し実行される。
【００４５】
ＭＧ１オフセット学習制御ルーチンが実行されると、オフセット学習制御部７０は、まず、ＲＡＭ４０ｃに回転位置センサ４３のオフセット学習履歴が記憶されているか否かを判定する（ステップＳ１００）。回転位置センサ４３のオフセット学習履歴が記憶されていると判定すると、ＲＡＭ４０ｃに記憶されている回転位置センサ４３の学習オフセット量Δθｏｆｆｓ１をオフセット量Δθｍ１に設定する（ステップＳ１１０）。一方、回転位置センサ４３のオフセット学習履歴が記憶されていないと判定すると、回転位置センサ４３の初期オフセット量Δθｉｎｉｔ１をオフセット量Δθｍ１に設定する（ステップＳ１２０）。ここで、初期オフセット量Δθｉｎｉｔ１は、工場出荷時や部品交換時に行なわれる回転位置センサ４３のオフセット学習による学習値である。なお、部品交換時には、車両を整備モードとして、作業者が所定の手順に従って作業を進めることにより、オフセット学習が行なわれるようになっている。これにより、ＲＡＭ４０ｃに記憶されているオフセット学習履歴がリセットされると共に、新たな学習値が初期オフセット量Δθｉｎｉｔ１としてＲＡＭ４０ｃに記憶される。ただし、作業者のミス等によってオフセット学習が行なわれないと、部品交換後に、初期オフセット量Δθｉｎｉｔ１に正しい値が記憶されていない場合が生じる。そこで、本実施例では、システム起動中に所定の頻度でオフセット学習を行なうことにより、ＲＡＭ４０ｃに適切な学習オフセット量Δθｏｆｆｓ１をＲＡＭ７０ｃに記憶するものとしている。
【００４６】
次に、ＭＧ１オフセット学習指令を受信したか否かを判定する（ステップＳ１３０）。ここで、ＭＧ１オフセット学習指令は、後述するオフセット学習の実行条件が成立したときに、メインＥＣＵ８０からモータＥＣＵ４０に対して送信される。ＭＧ１オフセット学習指令を受信していないと判定すると、ステップＳ１１０またはステップＳ１２０で設定したオフセット量Δθｍ１を加算器６８に出力して（ステップＳ１４０）、ＭＧ１オフセット学習制御ルーチンを終了する。
【００４７】
一方、ステップＳ１３０でＭＧ１オフセット学習指令を受信したと判定すると、ｄ軸電流指令Ｉｄ＊およびｑ軸電流指令Ｉｑ＊にそれぞれ値０を設定する（ステップＳ１５０）。そして、設定したｄ軸電流指令Ｉｄ＊およびｑ軸電流指令Ｉｑ＊を電流指令生成器６１に出力すると共に、ステップＳ１１０またはステップＳ１２０で設定したオフセット量Δθｍ１を加算器６８に出力する（ステップＳ１６０）。電流指令生成器６１は、値０のｄ軸電流指令Ｉｄ＊およびｑ軸電流指令Ｉｑ＊を入力すると、値０のｄ軸電流指令Ｉｄ＊，値０のｑ軸電流指令Ｉｑ＊を減算器６２ｄ，６２ｑに出力する。また、加算器６８は、オフセット量Δθｍ１を入力すると、回転位置センサ４３により検出された回転角θｍ１を入力し、回転角θｍ１にオフセット量Δθｍ１を加算したものを制御用回転角θとして座標変換器６４，６６に出力する。減算器６２ｄ，６２ｑは、電流指令生成器６１からｄ軸電流指令Ｉｄ＊，ｑ軸電流指令Ｉｑ＊を入力すると、座標変換器６６からｄ軸電流，ｑ軸電流を入力し、ｄ軸電流指令Ｉｄ＊，ｑ軸電流指令Ｉｑ＊とｄ軸電流，ｑ軸電流との差分ΔＩｄ，ΔＩｑを演算して電圧指令変換器６３ｄ，６３ｑに出力する。電圧指令変換器６３ｄ，６３ｑは、差分ΔＩｄ，ΔＩｑを入力すると、差分ΔＩｄ，ΔＩｑに基づいてｄ軸電圧指令Ｖｄ＊，ｑ軸電圧指令Ｖｑ＊を生成する。上述したように、ｄ軸電流指令Ｉｄ＊およびｑ軸電流指令Ｉｑ＊を値０とした場合、制御用回転角θと実際の回転角との間にズレがなければ、ｄ軸電圧指令Ｖｄ＊は値０となり、制御用回転角θと実際の回転角との間にズレがあれば、モータＭＧ１が回転していると、ｄ軸電圧指令Ｖｄ＊は値０とならない。
【００４８】
次に、電圧指令変換器６３ｄからｄ軸電圧指令Ｖｄ＊を入力し（ステップＳ１７０）、入力したｄ軸電圧指令Ｖｄ＊が値０を含む所定範囲内にあるか否かを判定する（ステップＳ１８０）。この判定は、ｄ軸電圧指令Ｖｄ＊が値０近傍に設定された範囲内にあるか否かを判定するものである。ｄ軸電圧指令Ｖｄ＊が値０を含む所定範囲内にあると判定すると、現在のオフセット量Δθｍ１は適正値であるため、現在のオフセット量Δθｍ１により学習オフセット量Δθｏｆｆｓ１を更新し（ステップＳ２１０）、学習済みフラグＦｍ１に値１を設定して（ステップＳ２２０）、ＭＧ１オフセット学習制御ルーチンを終了する。現在のオフセット量Δθｍ１が初期オフセット量Δθｉｎｉｔ１である場合には、オフセット学習が行なわれていないため、学習オフセット量Δθｏｆｆｓ１を更新しないものとしてもよい。
【００４９】
一方、ｄ軸電圧指令Ｖｄ＊が値０を含む所定範囲内にないと判定すると、オフセット学習中断指令を受信したか否かを判定する（ステップＳ１９０）。ここで、オフセット学習中断指令は、オフセット学習の実行条件が成立した後、オフセット学習が完了するまでの間、中断条件が成立したときに、メインＥＣＵ８０からモータＥＣＵ４０に対して送信される。オフセット学習中断指令を受信していないと判定すると、ｄ軸電圧指令Ｖｄ＊を用いて次式（９）によりオフセット量Δθｍ１を計算して（ステップＳ２００）、ステップＳ１５０に戻る。ここで、式（９）は、ｄ軸電圧指令Ｖｄ＊を値０とするためのフィードバック制御における関係式である。なお、式（９）中、右辺第１項の「前回Δθｍ１」は前回のオフセット量Δθｍ１であり、右辺第２項の「ｓ１」は比例項のゲインであり、右辺第３項の「ｓ２」は積分項のゲインである。なお、本実施例では、式（９）に示すように、ｄ軸電圧指令Ｖｄ＊を値０とするオフセット量Δθｍ１の計算に比例積分制御を用いるものとしたが、比例制御を用いるものとしてもよいし、比例積分微分制御を用いるものとしてもよい。
【００５０】
Δθm1=前回Δθm1+s1(0-Vd*)+s2∫(0-Vd*)dt    …（９）
【００５１】
こうしてステップＳ１５０〜Ｓ２００の処理を繰り返し、ステップＳ１８０でｄ軸電圧指令Ｖｄ＊が値０を含む所定範囲内になると、そのときのオフセット量Δθｍ１により学習オフセット量Δθｏｆｆｓ１を更新し（ステップＳ２１０）、学習済みフラグＦｍ１に値１を設定して（ステップＳ２２０）、ＭＧ１オフセット学習制御ルーチンを終了する。
【００５２】
一方、ステップＳ１９０でオフセット学習中断指令を受信したと判定すると、オフセット学習を中断し、学習済みフラグＦｍ１を値１に設定することなく、ＭＧ１オフセット学習制御ルーチンを終了する。
【００５３】
次に、ＭＧ２オフセット学習制御ルーチンについて説明する。ＭＧ２オフセット学習制御ルーチンが実行されると、オフセット学習制御部７０は、まず、ＲＡＭ４０ｃに回転位置センサ４４のオフセット学習履歴が記憶されているか否かを判定する（ステップＳ３００）。回転位置センサ４４のオフセット学習履歴が記憶されていると判定すると、ＲＡＭ４０ｃに記憶されている回転位置センサ４４の学習オフセット量Δθｏｆｆｓ２をオフセット量Δθｍ２に設定する（ステップＳ３１０）。一方、回転位置センサ４４のオフセット学習履歴が記憶されていないと判定すると、回転位置センサ４４の初期オフセット量Δθｉｎｉｔ２をオフセット量Δθｍ２に設定する（ステップＳ３２０）。ここで、初期オフセット量Δθｉｎｉｔ２は、初期オフセット量Δθｉｎｉｔ１と同様に、工場出荷時や部品交換時に行なわれるオフセット学習による学習値である。
【００５４】
次に、ＭＧ２オフセット学習指令を受信したか否かを判定する（ステップＳ３３０）。ここで、ＭＧ２オフセット学習指令は、後述するオフセット学習の実行条件が成立したときに、メインＥＣＵ８０からモータＥＣＵ４０に対して送信される。ＭＧ２オフセット学習指令を受信していないと判定すると、ステップＳ３１０またはステップＳ３２０で設定したオフセット量Δθｍ２を加算器７８に出力して（ステップＳ３４０）、ＭＧ２オフセット学習制御ルーチンを終了する。
【００５５】
一方、ステップＳ３３０でＭＧ２オフセット学習指令を受信したと判定すると、ｄ軸電流指令Ｉｄ＊およびｑ軸電流指令Ｉｑ＊にそれぞれ値０を設定する（ステップＳ３５０）。そして、設定したｄ軸電流指令Ｉｄ＊およびｑ軸電流指令Ｉｑ＊を電流指令生成器７１に出力すると共に、ステップＳ３１０またはステップＳ３２０で設定したオフセット量Δθｍ２を加算器７８に出力する（ステップＳ３６０）。次に、電圧指令変換器７３ｄからｄ軸電圧指令Ｖｄ＊を入力し（ステップＳ３７０）、入力したｄ軸電圧指令Ｖｄ＊が値０を含む所定範囲内にあるか否かを判定する（ステップＳ３８０）。ｄ軸電圧指令Ｖｄ＊が値０を含む所定範囲内にあると判定すると、現在のオフセット量Δθｍ２は適正値であるため、現在のオフセット量Δθｍ２により学習オフセット量Δθｏｆｆｓ２を更新し（ステップ４１０）、学習済みフラグＦｍ２に値１を設定して（ステップＳ４２０）、ＭＧ２オフセット学習制御ルーチンを終了する。
【００５６】
一方、ｄ軸電圧指令Ｖｄ＊が値０を含む所定範囲内にないと判定すると、オフセット学習中断指令を受信したか否かを判定する（ステップＳ３９０）。オフセット学習中断指令を受信していないと判定すると、ｄ軸電圧指令Ｖｄ＊を用いて次式（１０）によりオフセット量Δθｍ２を計算して（ステップＳ４００）、ステップＳ３５０に戻る。ここで、式（１０）は、ｄ軸電圧指令Ｖｄ＊を値０とするためのフィードバック制御における関係式である。なお、式（１０）中、右辺第１項の「前回Δθｍ２」は前回のオフセット量Δθｍ２であり、右辺第２，３項の「ｓ１」，「ｓ２」は式（９）と同様のゲインである。
【００５７】
Δθm2=前回Δθm2+s1(0-Vd*)+s2∫(0-Vd*)dt    …（１０）
【００５８】
こうしてステップＳ３５０〜Ｓ４００の処理を繰り返し、ステップＳ３８０でｄ軸電圧指令Ｖｄ＊が値０を含む所定範囲内になると、そのときのオフセット量Δθｍ２により学習オフセット量Δθｏｆｆｓ２を更新し（ステップＳ４１０）、学習済みフラグＦｍ２に値１を設定して（ステップＳ４２０）、ＭＧ２オフセット学習制御ルーチンを終了する。
【００５９】
一方、ステップＳ３９０でオフセット学習中断指令を受信したと判定すると、オフセット学習を中断し、学習済みフラグＦを値１とすることなく、ＭＧ２オフセット学習制御ルーチンを終了する。
【００６０】
次に、オフセット学習の実行条件が成立したか否かを判定するメインＥＣＵ８０の動作について説明する。図７は、メインＥＣＵ８０のＣＰＵ８０ａにより実行される駆動制御ルーチンの一例を示すフローチャートである。このルーチンは、所定時間毎（例えば、数ｍｓｅｃ毎）に繰り返し実行される。
【００６１】
駆動制御ルーチンが実行されると、メインＥＣＵ８０のＣＰＵ８０ａは、まず、アクセル開度Ａｃｃや車速Ｖ，学習済みフラグＦｍ１，Ｆｍ２などの制御に必要なデータを入力する処理を行なう（ステップＳ５００）。ここで、アクセル開度Ａｃｃは、アクセルペダルポジションセンサ８４によって検出された値を入力するものとした。車速Ｖは、車速センサ８８によって検出された値を入力するものとした。学習済みフラグＦｍ１，Ｆｍ２は、モータＥＣＵ４０や電源ＥＣＵ９０により設定された値を通信により入力するものとした。続いて、アクセル開度Ａｃｃと車速Ｖとに基づいて走行に要求される要求トルクＴ＊を設定する（ステップＳ５１０）。
【００６２】
そして、車速Ｖが値０であるか否か（ステップＳ５２０）、学習済みフラグＦｍ１が値０であるか否か（ステップＳ５３０）、学習済みフラグＦｍ２が値０であるか否か（ステップＳ５４０）、をそれぞれ判定する。ここで、ステップＳ５３０，Ｓ５４０の判定は、それぞれモータＭＧ１，ＭＧ２の回転角θｍ１，θｍ２を検出する回転位置センサ４３，４４のオフセット学習が実行済みであるか否かを判定するものである。車速Ｖが値０である、即ち車両が停車していると判定したり、学習済みフラグＦｍ１，Ｆｍ２がいずれも値１、即ち学習済みであると判定したりすると、前輪３４ａ，３４ｂ側に出力するトルクと後輪３８ａ，３８ｂ側に出力するトルクとの和のトルクに対する前輪３４ａ，３４ｂ側に出力するトルクの割合である分配比Ｄを分配比設定処理により設定する（ステップＳ５５０）。分配比設定処理は、要求トルクＴ＊が前輪３４ａ，３４ｂ側にトルクを出力するモータＭＧ１の上限トルクＴｍ１ｍａｘを超えない場合には要求トルクＴ＊が前輪３４ａ，３４ｂ側に出力されるよう分配比Ｄに値１を設定し、上限トルクＴｍ１ｍａｘを超える場合には前輪３４ａ，３４ｂ側に加えて後輪３８ａ，３８ｂ側にもトルクが出力されるよう分配比Ｄを設定することにより行なわれる。なお、上限トルクＴｍ１ｍａｘは、モータＭＧ１から出力可能な定格最大トルクであり、本実施例では、モータＭＧ２から出力可能な定格最大トルク（上限トルクＴｍ２ｍａｘ）よりも大きなトルクに定められている。また、分配比設定処理では、前輪３４ａ，３４ｂに空転によるスリップが発生しているか否か、発進時または急加速時であるか否かも判定し、スリップが発生していると判定したときにはスリップ時用の値を、発進時または急加速時と判定したときには発進・急加速時用の値をそれぞれ設定する。
【００６３】
こうして分配比Ｄを設定すると、分配比Ｄに要求トルクＴ＊を乗じて得られるトルクを前輪トルクＴｆ＊として設定すると共に値１から分配比Ｄを減じたものに要求トルクＴ＊を乗じて得られるトルクを後輪トルクＴｒ＊として設定する（ステップＳ５６０）。前輪トルクＴｆ＊と後輪トルクＴｒ＊を設定すると、前輪トルクＴｆ＊をモータＭＧ１から出力すべきトルク指令Ｔｍ１＊に設定すると共に後輪トルクＴｒ＊をモータＭＧ２から出力すべきトルク指令Ｔｍ２＊に設定する（ステップＳ５７０）。そして、トルク指令Ｔｍ１＊，Ｔｍ２＊をモータＥＣＵ４０に送信して（ステップＳ５８０）、駆動制御ルーチンを終了する。トルク指令Ｔｍ１＊，Ｔｍ２＊を受信したモータＥＣＵ４０は、モータＭＧ１，ＭＧ２がトルク指令Ｔｍ１＊，Ｔｍ２＊で駆動されるようインバータ４１，４２のスイッチング素子のスイッチング制御を行なう。
【００６４】
一方、車速Ｖが値０でなく、学習済みフラグＦｍ１が値０であると判定すると、要求トルクＴ＊がモータＭＧ２の上限トルクＴｍ２ｍａｘ以下であるか否かを判定する（ステップＳ５９０）。要求トルクＴ＊が上限トルクＴｍ２ｍａｘ以下であると判定すると、ＭＧ１オフセット学習指令をモータＥＣＵ４０に送信する（ステップＳ６００）。そして、分配比Ｄを値０に設定し（ステップＳ６１０）、前輪トルクＴｆ＊と後輪トルクＴｒ＊を設定する（ステップＳ５６０）。上述したように、前輪トルクＴｆ＊は、分配比Ｄに要求トルクＴ＊を乗じたものとして計算されるから、値０となる。また、後輪トルクＴｒ＊は、値１から分配比Ｄを減じたものに要求トルクＴ＊を乗じたものとして計算されるから、要求トルクＴ＊となる。即ち、要求トルクＴ＊の全てが後輪３８ａ，３８ｂ側に出力されるよう分配比Ｄを設定する。そして、前輪トルクＴｆ＊をトルク指令Ｔｍ１＊に設定すると共に後輪トルクＴｒ＊をトルク指令Ｔｍ２＊に設定し（ステップＳ５７０）、トルク指令Ｔｍ１＊，Ｔｍ２＊をモータＥＣＵ４０に送信して（ステップＳ５８０）、駆動制御ルーチンを終了する。これにより、モータＭＧ２から後輪３８ａ，３８ｂ側にトルクを出力することにより要求トルクＴ＊で走行しながら、モータＭＧ１のトルク指令Ｔｍ１＊を値０として回転位置センサ４３のオフセット学習が行なわれることになる。
【００６５】
ここで、学習済みフラグＦｍ１，Ｆｍ２は、電源ＥＣＵ９０により実行されるシステム起動処理ルーチンにおいて値０にリセットされる。図８は、システム起動処理ルーチンの一例を示すフローチャートである。このルーチンは、ブレーキオンの状態でパワースイッチ９２からプッシュ信号を入力したときに、メインＥＣＵ８０へ駆動信号を送信することによりシステムメインリレー５６をオンさせた後（ステップＳ７００）、初期化処理を実行すること（ステップＳ７１０）により行なわれる。学習済みフラグＦｍ１，Ｆｍ２は、ステップＳ７１０の初期化処理において、値０にリセットされる。一方、学習済みフラグＦｍ１，Ｆｍ２は、上述したように、ＭＧ１オフセット学習制御ルーチン，ＭＧ２オフセット学習制御ルーチンにおいてオフセット学習が完了すると、それぞれ値１が設定される。各オフセット学習は、学習済みフラグＦｍ１，Ｆｍ２が値０である場合に実行条件が成立したときにそれぞれ実行されるから、システムが起動してから終了するまでの間（いわゆる１トリップ）に１回ずつ実行されることになる。
【００６６】
ステップＳ５９０で要求トルクＴ＊が上限トルクＴｍ２ｍａｘよりも大きいと判定すると、回転位置センサ４３のオフセット学習が実行中であるか否かを判定する（ステップＳ６２０）。オフセット学習が実行中でないと判定すると、上述した分配比設定処理により分配比Ｄを設定する（ステップＳ５５０）。一方、オフセット学習が実行中であると判定すると、オフセット学習中断指令をモータＥＣＵ４０に送信して（ステップＳ６３０）、上述した分配比設定処理により分配比Ｄを設定する（ステップＳ５５０）。このように、本実施例では、要求トルクＴ＊をモータＭＧ２から出力しながらオフセット学習を実行している間に、要求トルクＴ＊がモータＭＧ２の上限トルクＴｍ２ｍａｘを超えると、オフセット学習を中断し、要求トルクＴ＊を出力するための分配比Ｄを設定してモータＭＧ１，ＭＧ２を駆動制御するのである。即ち、オフセット学習の実行よりも要求トルクＴ＊の出力を優先し、オフセット学習によってドライバビリティが悪化するのを抑制することができる。
【００６７】
また、車速Ｖが値０でなく、学習済みフラグＦｍ１が値０でなく且つ学習済みフラグＦｍ２が値０であると判定すると、要求トルクＴ＊が上限トルクＴｍ１ｍａｘ以下であるか否かを判定する（ステップＳ６４０）。要求トルクＴ＊が上限トルクＴｍ１ｍａｘ以下であると判定すると、ＭＧ２オフセット学習指令をモータＥＣＵ４０に送信する（ステップＳ６５０）。そして、分配比Ｄを値１に設定し（ステップＳ６６０）、前輪トルクＴｆ＊と後輪トルクＴｒ＊を設定する（ステップＳ５６０）。これにより、前輪トルクＴｆ＊は要求トルクＴ＊となり、後輪トルクＴｒ＊は値０となる。そして、トルク指令Ｔｍ１＊を前輪トルクＴｆ＊に設定すると共にトルク指令Ｔｍ２＊を後輪トルクＴｒ＊に設定し（ステップＳ５７０）、トルク指令Ｔｍ１＊，Ｔｍ２＊をモータＥＣＵ４０に送信して（ステップＳ５８０）、駆動制御ルーチンを終了する。これにより、モータＭＧ１から前輪３４ａ，３４ｂ側にトルクを出力することにより要求トルクＴ＊で走行しながら、モータＭＧ２のトルク指令Ｔｍ１＊を値０として回転位置センサ４４のオフセット学習が行なわれることになる。
【００６８】
ステップＳ６４０で要求トルクＴ＊が上限トルクＴｍ１ｍａｘよりも大きいと判定すると、回転位置センサ４４のオフセット学習が実行中であるか否かを判定する（ステップＳ６７０）。オフセット学習が実行中でないと判定すると、上述した分配比設定処理により分配比Ｄを設定する（ステップＳ５５０）。一方、オフセット学習が実行中であると判定すると、オフセット学習中断指令をモータＥＣＵ４０に送信して（ステップＳ６８０）、上述した分配比設定処理により分配比Ｄを設定する（ステップＳ５５０）。このように、本実施例では、要求トルクＴ＊をモータＭＧ１から出力しながらオフセット学習を実行している間に、要求トルクＴ＊がモータＭＧ１の上限トルクＴｍ１ｍａｘを超えると、オフセット学習を中断し、要求トルクＴ＊を出力するための分配比Ｄを設定してモータＭＧ１，ＭＧ２を駆動制御するのである。
【００６９】
ここで、本実施例では、ステップＳ５３０，Ｓ５４０に示すように、学習済みフラグＦｍ１の値を先に判定し、学習済みフラグＦｍ２の値を後に判定するから、ＭＧ１オフセット学習指令およびＭＧ２オフセット学習指令のうちＭＧ１オフセット学習指令が優先されることになる。本実施例では、モータＭＧ１の上限トルクＴｍ１ｍａｘを、モータＭＧ２の上限トルクＴｍ２ｍａｘよりも大きくしており、上限トルクが大きいモータＭＧ１のオフセット学習を、上限トルクが小さい方のモータＭＧ２のオフセット学習よりも優先するものとした。
【００７０】
以上説明した本実施例の自動車２０によれば、走行中、前輪３４ａ，３４ｂ側にトルクを出力するモータＭＧ１のトルク指令Ｔｍ１＊に値０を設定すると共に後輪３８ａ，３８ｂ側にトルクを出力するモータＭＧ２のトルク指令Ｔｍ２＊に要求トルクＴ＊を設定して、モータＭＧ１の回転角θｍ１を検出する回転位置センサ４３のオフセット学習を行なう。これにより、要求トルクＴ＊により走行しながら、回転位置センサ４３のオフセット学習の実行機会を確保することができる。しかも、回転位置センサ４３のオフセット学習の実行中に要求トルクＴ＊がモータＭＧ２の上限トルクＴｍ２ｍａｘを超えたときには、オフセット学習を中断して、要求トルクＴ＊で走行するようトルク指令Ｔｍ１＊，Ｔｍ２＊を設定するから、回転位置センサ４３のオフセット学習によってドライバビリティが悪化するのを抑制することができる。
【００７１】
また、本実施例の自動車２０によれば、走行中、前輪３４ａ，３４ｂ側にトルクを出力するモータＭＧ１のトルク指令Ｔｍ１＊に要求トルクＴ＊を設定すると共に後輪３８ａ，３８ｂ側にトルクを出力するモータＭＧ２のトルク指令Ｔｍ２＊に値０を設定して、モータＭＧ２の回転角θｍ２を検出する回転位置センサ４４のオフセット学習を行なう。これにより、要求トルクＴ＊により走行しながら、回転位置センサ４４のオフセット学習の実行機会を確保することができる。しかも、回転位置センサ４４のオフセット学習の実行中に要求トルクＴ＊がモータＭＧ１の上限トルクＴｍ１ｍａｘを超えたときには、オフセット学習を中断して、要求トルクＴ＊で走行するようトルク指令Ｔｍ１＊，Ｔｍ２＊を設定するから、回転位置センサ４４のオフセット学習によってドライバビリティが悪化するのを抑制することができる。
【００７２】
実施例の自動車２０では、モータＭＧ１，ＭＧ２の回転角θｍ１，θｍ２を検出する回転位置センサ４３，４４のオフセット学習の実行中に中断条件が成立すると、オフセット学習を中断するものとした。これに対して、オフセット学習が一旦実行されると、オフセット学習が完了するまでの間、オフセット学習を中断することなく、それぞれトルク指令Ｔｍ２＊，Ｔｍ１＊を値０に維持するものとしてもよい。
【００７３】
実施例の自動車２０では、モータＭＧ１の回転角θｍ１を検出する回転位置センサ４３のオフセット学習を、モータＭＧ２の回転角θｍ２を検出する回転位置センサ４４のオフセット学習よりも優先して実行するものとした。これに対して、モータＭＧ２の回転角θｍ２を検出する回転位置センサ４４のオフセット学習を、モータＭＧ１の回転角θｍ１を検出する回転位置センサ４３のオフセット学習よりも優先して実行するものとしてもよい。この場合、モータＭＧ２の上限トルクＴｍ２ｍａｘを、モータＭＧ１の上限トルクＴｍ１ｍａｘよりも大きくするものとしてもよい。
【００７４】
実施例の自動車２０では、要求トルクＴ＊がモータＭＧ２の上限トルクＴｍ２ｍａｘ以下のときにモータＭＧ１のトルク指令Ｔｍ１＊を値０とすると共にモータＭＧ２のトルク指令Ｔｍ２＊を要求トルクＴ＊としてモータＭＧ１の回転角θｍ１を検出する回転位置センサ４３のオフセット学習を行なうものとした。また、要求トルクＴ＊がモータＭＧ１の上限トルクＴｍ１ｍａｘ以下のときにモータＭＧ２のトルク指令Ｔｍ２＊を値０とすると共にモータＭＧ１のトルク指令Ｔｍ１＊を要求トルクＴ＊としてモータＭＧ２の回転角θｍ１を検出する回転位置センサ４４のオフセット学習を行なうものとした。これに対して、モータＭＧ１から出力されるトルクのみにより走行あるいはモータＭＧ２から出力されるトルクのみにより走行する２ＷＤ走行時にトルクを出力しない方のモータの回転角を検出する回転位置センサのオフセット学習を行なうものとしてもよい。図９は、メインＥＣＵ８０により実行される２ＷＤ走行時駆動制御ルーチンの一例を示すフローチャートである。２ＷＤ走行時駆動制御ルーチンが実行されると、メインＥＣＵ８０のＣＰＵ８０ａは、アクセル開度Ａｃｃや車速Ｖ，学習済みフラグＦｍ２を入力し（ステップＳ８００）、入力したアクセル開度Ａｃｃと車速Ｖとに基づいて要求トルクＴ＊を設定する（ステップＳ８１０）。続いて、学習済みフラグＦｍ２が値０であるか否かを判定する（ステップＳ８２０）。学習済みフラグＦｍ２が値０であると判定すると、ＭＧ２オフセット学習指令をモータＥＣＵ４０に送信し（ステップＳ８３０）、学習済みフラグＦｍ２が値０でないと判定すると、ＭＧ２オフセット学習指令を送信しない。そして、トルク指令Ｔｍ１＊に要求トルクＴ＊とモータＭＧ１の上限トルクＴｍ１ｍａｘのうち小さい方を設定すると共にトルク指令Ｔｍ２＊に値０を設定し（ステップＳ８４０）、各指令値をモータＥＣＵ４０に送信して（ステップＳ８５０）、２ＷＤ走行時駆動制御ルーチンを終了する。なお、上述した２ＷＤ走行時駆動制御ルーチンでは、モータＭＧ１から前輪３４ａ，３４ｂ側にトルクを出力する場合を例に説明したが、モータＭＧ２から後輪３８ａ，３８ｂ側にトルクを出力する場合に適用するものとしてもよい。この場合、ステップＳ８３０でＭＧ１オフセット学習指令を送信し、ステップＳ８４０でトルク指令Ｔｍ１＊に値０を設定すると共にトルク指令Ｔｍ２＊に要求トルクＴ＊とモータＭＧ２の上限トルクＴｍ２ｍａｘのうち小さい方を設定するものとすればよい。
【００７５】
実施例の自動車２０では、オフセット学習が１トリップ中に１回実行されるよう学習済みフラグＦをシステム起動の際にリセットするものとした。これに対して、学習済みフラグＦのリセットは、システム終了の際に行なうものとしてもよい。
【００７６】
実施例の自動車２０では、オフセット学習が１トリップ中に１回実行されるようにした。これに対して、オフセット学習が１トリップ中に複数回実行されるようにしてもよく、数トリップ（２トリップや３トリップ）で１回実行するようにしてもよい。
【００７７】
実施例の自動車２０では、モータＭＧ１，ＭＧ２として、永久磁石式のモータを用いるものとしたが、これに限定されるものではなく、巻線界磁式のモータを用いるものとしてもよい。
【００７８】
実施例の自動車２０では、前輪３４ａ，３４ｂ側に動力を出力するモータＭＧ１と後輪３８ａ，３８ｂ側に動力を出力するモータＭＧ２とを備えるものとした。これに対して、図１０の変形例の自動車１２０に示すように、エンジン１２２と、モータＭＧ３と、エンジン１２２にキャリアが接続されモータＭＧ３にサンギヤが接続され前輪３４ａ，３４ｂに連結された前輪駆動軸３２にリングギヤが接続されたプラネタリギヤ１３０とを備えるものとしてもよい。また、図１１の変形例の自動車２２０に示すように、前輪３４ａ，３４ｂに連結された前輪駆動軸３２に変速機２３０を介してモータＭＧ１を取り付けると共にモータＭＧ１の回転軸にクラッチＣＬを介してエンジン２２２を接続するものとしてもよい。このように、前輪に接続されたモータと、後輪に接続されたモータとを備えるものであれば、如何なる自動車に適用するものとしてもよい。
【００７９】
実施例の主要な要素と課題を解決するための手段の欄に記載した発明の主要な要素との対応関係について説明する。実施例では、モータＭＧ１が「前輪用三相電動機」に相当し、モータＭＧ２が「後輪用三相電動機」に相当し、インバータ４１が「前輪用インバータ」に相当し、インバータ４２が「後輪用インバータ」に相当し、回転位置センサ４３が「前輪用回転位置センサ」に相当し、回転位置センサ４４が「後輪用回転位置センサ」に相当し、モータＥＣＵ４０が「インバータ制御手段」に相当し、オフセット学習制御部７０が「オフセット学習手段」に相当し、加算器６８，７８が「回転位置補正手段」に相当する。
【００８０】
なお、実施例の主要な要素と課題を解決するための手段の欄に記載した発明の主要な要素との対応関係は、実施例が課題を解決するための手段の欄に記載した発明を実施するための形態を具体的に説明するための一例であることから、課題を解決するための手段の欄に記載した発明の要素を限定するものではない。即ち、課題を解決するための手段の欄に記載した発明についての解釈はその欄の記載に基づいて行なわれるべきものであり、実施例は課題を解決するための手段の欄に記載した発明の具体的な一例に過ぎないものである。
【００８１】
以上、本発明を実施するための形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において、種々なる形態で実施し得ることは勿論である。
【産業上の利用可能性】
【００８２】
本発明は、車両の製造産業に利用可能である。
【符号の説明】
【００８３】
２０，１２０，２２０  自動車、３２  前輪駆動軸、３３  デファレンシャルギヤ、３４ａ，３４ｂ  前輪、３６  後輪駆動軸、３７  デファレンシャルギヤ、３８ａ，３８ｂ  後輪、４０  モータ用電子制御ユニット（モータＥＣＵ）、４０ａ  ＣＰＵ、４０ｂ  ＲＯＭ、４０ｃ  ＲＡＭ、４１，４２  インバータ、４３，４４  回転位置センサ、４５Ｖ，４５Ｗ，４６Ｖ，４６Ｗ  電流センサ、５０  バッテリ、５１ａ  電圧センサ、５１ｂ  電流センサ、５１ｃ  温度センサ、５２  バッテリ用電子制御ユニット（バッテリＥＣＵ）、５４  電力ライン、５６  システムメインリレー、５７  コンデンサ、５７ａ  電圧センサ、６１，７１  電流指令生成器、６２ｄ，６２ｑ，７２ｄ，７２ｑ  減算器、６３ｄ，６３ｑ，７３ｄ，７３ｑ  電圧指令変換器、６４，７４  座標変換器、６５，７５  ＰＷＭ変換器、６６，７６  座標変換器、６８，７８  加算器、７０  オフセット学習制御器、８０  メイン用電子制御ユニット（メインＥＣＵ）、８０ａ  ＣＰＵ、８０ｂ  ＲＯＭ、８０ｃ  ＲＡＭ、８１  シフトレバー、８２  シフトポジションセンサ、８３  アクセルペダル、８４  アクセルペダルポジションセンサ、８５  ブレーキペダル、８６  ブレーキペダルポジションセンサ、８８  車速センサ、９０  電源用電子制御ユニット（電源ＥＣＵ）、９２  パワースイッチ、９３  インジケータ、９４  ブレーキスイッチ、１２２，２２２  エンジン、１３０  プラネタリギヤ、２３０  自動変速機、ＭＧ１，ＭＧ２，ＭＧ３  モータ、Ｔ１１〜Ｔ１６，Ｔ２１〜Ｔ２６  トランジスタ、Ｄ１１〜Ｄ１６，Ｄ２１〜Ｄ２６  ダイオード、ＣＬ  クラッチ。
【図１】
2017123759.tif 000003
【図２】
2017123759.tif 000004
【図３】
2017123759.tif 000005
【図４】
2017123759.tif 000006
【図５】
2017123759.tif 000007
【図６】
2017123759.tif 000008
【図７】
2017123759.tif 000009
【図８】
2017123759.tif 000010
【図９】
2017123759.tif 000011
【図１０】
2017123759.tif 000012
【図１１】
2017123759.tif 000013