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