(57)【要約】      （修正有）【課題】構造を複雑化することなく、直進性を確保する。【解決手段】右前輪１０２および左前輪１０４をそれぞれ駆動するモータ１２０および１２２と、モータ１２０および１２２の駆動を制御する駆動制御部２０２と、モータ１２０および１２２の回転数を示す信号を取得する信号取得部２００と、モータ１２０および１２２に駆動される右前輪１０２および左前輪１０４のスリップを検出するスリップ検出部２０４とを備え、駆動制御部２０２は、モータ１２０および１２２に駆動される右前輪１０２および左前輪１０４の一方にスリップが検出された場合、スリップしている右前輪１０２または左前輪１０４を駆動するモータ１２０または１２２のトルクを所定の目標トルクにする非スリップトルク制御から、スリップしている右前輪１０２または左前輪１０４を駆動するモータ１２０または１２２の回転数を所定の目標回転数にする回転数制御に切り替える。【選択図】図１
2014183686.tif 000002
【特許請求の範囲】
【請求項１】
複数の車輪のうちの２つの車輪をそれぞれ駆動する第１および第２のモータと、
前記第１および第２のモータの駆動を制御する駆動制御部と、
前記第１および第２のモータに駆動される車輪のスリップを検出するスリップ検出部と、
を備え、
前記駆動制御部は、
前記スリップ検出部により前記第１および第２のモータに駆動される車輪の一方のスリップが検出された場合、スリップしている車輪を駆動する第１または第２のモータのトルクを所定の目標トルクにする非スリップトルク制御から、該スリップしている車輪を駆動する第１または第２のモータの回転数を所定の目標回転数にする回転数制御に切り替えることを特徴とする電気自動車。
【請求項２】
前記駆動制御部は、前記スリップしている車輪を駆動する第１または第２のモータの回転数が前記目標回転数になった後、該第１または第２のモータを前記目標トルクにするスリップトルク制御に切り替えることを特徴とする請求項１に記載の電気自動車。
【請求項３】
前記駆動制御部は、前記スリップトルク制御において、前記スリップしている車輪を駆動する第１または第２のモータのトルクをランプ状に変化させて前記目標トルクにするフィードバック制御をすることを特徴とする請求項２に記載の電気自動車。
【請求項４】
前記駆動制御部は、前記回転数制御において、前記スリップしている車輪を駆動する第１または第２のモータの回転数が前記目標回転数になったとされる状態が所定時間続いた場合、前記スリップトルク制御に切り替えることを特徴とする請求項２または請求項３に記載の電気自動車。
【請求項５】
前記駆動制御部は、前記スリップトルク制御において、前記スリップしている車輪を駆動する第１または第２のモータのトルクと前記目標トルクとの差が大きいほど、該トルクを前記目標トルクにするまでの時間が長くなるように制御する請求項２〜４のいずれかに記載の電気自動車。
【請求項６】
前記駆動制御部は、スリップしていない車輪を駆動する第１または第２のモータの回転数を、前記スリップしている車輪を駆動する第１または第２のモータの目標回転数に設定することを特徴とする請求項１〜５のいずれかに記載の電気自動車。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電気自動車に関する。
【背景技術】
【０００２】
従来、右輪および左輪を独立してモータで駆動する電気自動車では、右輪および左輪が異なる路面抵抗係数の路面上を走行している場合、路面抵抗係数が高い路面上を走行している車輪の出力トルクを、路面抵抗係数が低い路面上を走行している車輪の出力トルクと一致させるように、フィードバック制御により減少させるものが提案されている（特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−１７７９０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記のような電気自動車では、フィードバック制御により、路面抵抗係数が高い路面上を走行している車輪を駆動するモータの回転数を減少させていくため、右輪および左輪に回転数差が生じてしまうおそれがある。この状態で、右輪および左輪が同じ路面抵抗係数の路面上を走行すると、右輪および左輪の回転数差により直進性の確保が困難となる。
【０００５】
一方で、右輪および左輪を、クラッチシステムを介して直結することで、直進性を確保することはできるが、構造が複雑化してしまう。
【０００６】
そこで、本発明は、構造を複雑化することなく、直進性を確保する電気自動車を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明の電気自動車は、複数の車輪のうちの２つの車輪をそれぞれ駆動する第１および第２のモータと、前記第１および第２のモータの駆動を制御する駆動制御部と、前記第１および第２のモータに駆動される車輪のスリップを検出するスリップ検出部と、を備え、前記駆動制御部は、前記スリップ検出部により前記第１および第２のモータに駆動される車輪の一方のスリップが検出された場合、スリップしている車輪を駆動する第１または第２のモータのトルクを所定の目標トルクにする非スリップトルク制御から、該スリップしている車輪を駆動する第１または第２のモータの回転数を所定の目標回転数にする回転数制御に切り替える。
【０００８】
前記駆動制御部は、前記スリップしている車輪を駆動する第１または第２のモータの回転数が前記目標回転数になった後、該第１または第２のモータを前記目標トルクにするスリップトルク制御に切り替えてもよい。
【０００９】
前記駆動制御部は、前記スリップトルク制御において、前記スリップしている車輪を駆動する第１または第２のモータのトルクをランプ状に変化させて前記目標トルクにするフィードバック制御をしてもよい。
【００１０】
前記駆動制御部は、前記回転数制御において、前記スリップしている車輪を駆動する第１または第２のモータの回転数が前記目標回転数になったとされた状態が所定時間続いた場合、前記スリップトルク制御に切り替えてもよい。
【００１１】
前記駆動制御部は、前記スリップトルク制御において、前記スリップしている車輪を駆動する第１または第２のモータのトルクと前記目標トルクとの差が大きいほど、該トルクを前記目標トルクにするまでの時間が長くなるように制御してもよい。
【００１２】
前記駆動制御部は、スリップしていない車輪を駆動する第１または第２のモータの回転数を、前記スリップしている車輪を駆動する第１または第２のモータの目標回転数に設定してもよい。
【発明の効果】
【００１３】
本発明によれば、構造を複雑化することなく、直進性を確保することができる。
【図面の簡単な説明】
【００１４】
【図１】電気自動車の構成を示す図である。
【図２】左前輪がスリップした場合のスリップ制御の一例を示すタイムチャートである。
【図３】走行制御処理の流れを説明したフローチャートである。
【図４】スリップ制御処理の流れを説明したフローチャートである。
【発明を実施するための形態】
【００１５】
以下に添付図面を参照しながら、本発明の好適な実施形態について詳細に説明する。かかる実施形態に示す寸法、材料、その他具体的な数値等は、発明の理解を容易にするための例示に過ぎず、特に断る場合を除き、本発明を限定するものではない。なお、本明細書および図面において、実質的に同一の機能、構成を有する要素については、同一の符号を付することにより重複説明を省略し、また本発明に直接関係のない要素は図示を省略する。
【００１６】
図１は、電気自動車１００の構成を示す図である。図１に示すように、電気自動車１００は、右前輪１０２、左前輪１０４、右後輪１０６および左後輪１０８が、それぞれギアボックス１１２、１１４、１１６、１１８内のギヤを介してモータ１２０、１２２、１２４、１２６に接続される。モータ１２０、１２２、１２４、１２６は、インバータ１２８、１３０、１３２、１３４をそれぞれ介してバッテリ１３６に接続され、バッテリ１３６から供給される電力により回転し、また、発電されることで得られる電力をバッテリ１３６に送出する。電気自動車１００は、モータ１２０、１２２、１２４、１２６をそれぞれ独立して駆動（回転）させることで、右前輪１０２、左前輪１０４、右後輪１０６および左後輪１０８がそれぞれ独立して駆動する。
【００１７】
バッテリ１３６は、バッテリコントローラ１３８に接続され、バッテリコントローラ１３８により制御される。バッテリコントローラ１３８は、制御部１４０と接続され、バッテリ１３６の充放電電流量、温度等を監視するとともに、充放電電流量に基づいてバッテリ１３６の残容量を算出し、これらバッテリ１３６に関するデータを必要に応じて制御部１４０に出力する。
【００１８】
制御部１４０は、ＣＰＵ（Central Processing Unit）、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）を含むマイクロコンピュータでなり、各部を統括制御する。制御部１４０は、車輪回転数センサ１４２、１４４、１４６、１４８、モータ回転数センサ１５０、１５２、１５４、１５６、アクセルペダルセンサ１５８、ブレーキペダルセンサ１６０、ハンドルセンサ１６２、シフトセンサ１６４、加速度センサ１６６、横Ｇセンサ１６８とそれぞれ接続され、各センサ（１４２〜１６８）で検出された値を示す信号が入力される。また、制御部１４０は、インバータ１２８、１３０、１３２、１３４と接続されており、詳しくは後述するように、バッテリコントローラ１３８、各センサ（１４２〜１６８）から入力される信号に基づいて、インバータ１２８、１３０、１３２、１３４を介してモータ１２０、１２２、１２４、１２６の駆動を制御する。
【００１９】
車輪回転数センサ１４２、１４４、１４６、１４８は、例えばレゾルバでなり、右前輪１０２、左前輪１０４、右後輪１０６および左後輪１０８の回転数Ｗ_ｒｅｖをそれぞれ検出し、回転数Ｗ_ｒｅｖを示す信号を制御部１４０に出力する。
【００２０】
モータ回転数センサ１５０、１５２、１５４、１５６は、例えばレゾルバでなり、モータ１２０、１２２、１２４、１２６の回転数Ｍｏｔ_ｒｅｖをそれぞれ検出し、回転数Ｍｏｔ_ｒｅｖを示す信号を制御部１４０に出力する。
【００２１】
アクセルペダルセンサ１５８は、アクセルペダルの踏み込み量ａｃｃを検出し、踏み込み量ａｃｃを示す信号を制御部１４０に出力する。
【００２２】
ブレーキペダルセンサ１６０は、ブレーキペダルの踏み込み量ｂｒａを検出し、踏み込み量ｂｒａを示す信号を制御部１４０に出力する。
【００２３】
ハンドルセンサ１６２は、ハンドルの回転角度ＳＡを検出し、回転角度ＳＡを示す信号を制御部１４０に出力する。
【００２４】
シフトセンサ１６４は、シフトレバーにより入れられたシフト位置（ニュートラル、ドライブ、バック等）を検出し、シフト位置を示す信号を制御部１４０に出力する。
【００２５】
加速度センサ１６６は、電気自動車１００の加速度を検出し、加速度を示す信号を制御部１４０に出力する。
【００２６】
横Ｇセンサ１６８は、電気自動車１００の横Ｇ（横加速度）を検出し、横Ｇを示す信号を制御部１４０に出力する。
【００２７】
このような構成でなる電気自動車１００は、シフトレバーがドライブのシフト位置にされたことをシフトセンサ１６４が検出し、そのシフト位置を示す信号が制御部１４０に入力されると、制御部１４０は、走行制御処理を実行する。制御部１４０は、ドライブのシフト位置を示す信号が入力されると、ＲＯＭに格納された走行制御処理プログラムをＲＡＭに展開して走行制御処理を実行し、モータ１２０、１２２、１２４、１２６を駆動制御する。なお、走行制御処理においては、制御部１４０が、モータ１２０、１２２、１２４、１２６をそれぞれ制御するが、説明の便宜上、ここでは、モータ１２０および１２２を制御する場合についてのみ説明する。なお、モータ１２４および１２６についても同様に行われる。
【００２８】
制御部１４０は、走行制御処理を実行する場合、信号取得部２００、駆動制御部２０２、スリップ検出部２０４として機能する。信号取得部２００は、車輪回転数センサ１４２、１４４、１４６、１４８、モータ回転数センサ１５０、１５２、１５４、１５６、アクセルペダルセンサ１５８、ブレーキペダルセンサ１６０、ハンドルセンサ１６２から信号を所定間隔毎にそれぞれ取得する。
【００２９】
駆動制御部２０２は、信号取得部２００が取得した信号に基づいてモータ１２０および１２２の駆動制御を行う。具体的には、駆動制御部２０２は、右前輪１０２、左前輪１０４、右後輪１０６および左後輪１０８の回転数Ｗ_ｒｅｖの平均値を算出する。そして、駆動制御部２０２は、算出した平均値に基づいて電気自動車１００の車速Ｖを算出する。なお、駆動制御部２０２は、算出した平均値と、平均値の１秒間隔の速度の１０秒間の軌跡を基に、現在の電気自動車１００の車速Ｖを算出してもよい。
【００３０】
駆動制御部２０２は、アクセルペダルの踏み込み量ａｃｃおよび車速Ｖから、予めＲＯＭに格納された出力回転数マップに基づいてモータ１２０および１２２が出力すべき要求パワーｒｅｑＰ、ならびにモータ１２０および１２２の目標回転数ＴｇｔＭｏｔ_ｒｅｖを決定する。そして、駆動制御部２０２は、決定した要求パワーｒｅｑＰおよびモータ１２０および１２２の目標回転数ＴｇｔＭｏｔ_ｒｅｖから、下記の（１）式に基づいてモータ１２０および１２２が出力すべき目標トルクＴｇｔＴｑを算出する。なお、（１）式において、要求パワーｒｅｑＰを２で除算しているのは、モータ１２０および１２２に要求パワーｒｅｑＰを等配分しているためである。また、駆動制御部２０２は、信号取得部２００がバッテリコントローラ１３８から取得したバッテリ１３６の残容量を示す信号に基づいて、バッテリ１３６の残容量が少なく、目標トルクＴｇｔＴｑを出力するだけの電力がモータ１２０および１２２に供給できない場合には、目標トルクＴｇｔＴｑを減算する。
ＴｇｔＴｑ＝（ｒｅｑＰ／２）／ＴｇｔＭｏｔ_ｒｅｖ    ・・・（１）
【００３１】
駆動制御部２０２は、（１）式に基づいて算出した目標トルクＴｇｔＴｑでモータ１２０および１２２を駆動するようにインバータ１２８および１３０を制御する。これにより、モータ１２０および１２２は、インバータ１２８および１３０を介して目標トルクＴｇｔＴｑで駆動する。このように、駆動制御部２０２は、非スリップ走行時においては、目標トルクＴｇｔＴｑに基づいてモータ１２０および１２２の駆動を制御する非スリップトルク制御を行う。
【００３２】
ところで、右前輪１０２および左前輪１０４の一方がスリップした場合、スリップした右前輪１０２または左前輪１０４は空転により回転数Ｗ_ｒｅｖが急激に上昇する。そこで、スリップ検出部２０４は、右前輪１０２および左前輪１０４の一方がスリップしたことを、右前輪１０２および左前輪１０４にそれぞれ接続されたモータ１２０および１２２の回転数Ｍｏｔ_ｒｅｖに基づいて検出する。
【００３３】
具体的には、スリップ検出部２０４は、モータ１２０の回転数Ｍｏｔ_ｒｅｖＲおよびモータ１２２の回転数Ｍｏｔ_ｒｅｖＬを用いて下記（２）式により、右前輪１０２および左前輪１０４の一方がスリップしているか否かを検出する。
【００３４】
ａｂｓ（Ｍｏｔ_ｒｅｖＲ−Ｍｏｔ_ｒｅｖＬ）≧α    ・・・（２）
ここでａｂｓは、絶対値を示す関数である。αは、右前輪１０２および左前輪１０４の一方がスリップして回転数Ｗ_ｒｅｖが上昇し、スリップしていない他方の右前輪１０２または左前輪１０４に対して一定の回転数差がついてスリップしたとされるスリップ閾値である。
【００３５】
また、スリップ検出部２０４は、ハンドルセンサ１６２が検出するハンドルの回転角度ＳＡが下記（３）式を満たすか判断する。
【００３６】
ａｂｓ（ＳＡ）≦θ    ・・・（３）
ここで、θは、ハンドルが操作されることにより、電気自動車１００が右または左に旋回しているとされるステアリング操作角閾値である。すなわち、（３）式を満たしている場合は、電気自動車１００が直進していると判断され、（３）式を満たしていない場合は、電気自動車１００が右または左に旋回していると判断される。
【００３７】
スリップ検出部２０４は、（２）式および（３）式が成立する場合、右前輪１０２および左前輪１０４の一方がスリップしていると判断する。なお、（３）式が成立していない場合、電気自動車１００の旋回によりモータ１２０および１２２に回転数差が生じているか、スリップによりモータ１２０および１２２に回転数差が生じているか判断できない可能性があるため、（３）式をスリップの判断条件に含めている。
【００３８】
スリップ検出部２０４は、スリップを検出した場合、モータ１２２の回転数Ｍｏｔ_ｒｅｖＬと目標回転数ＴｇｔＭｏｔ_ｒｅｖとを比較する下記（４）式に基づいて、右前輪１０２および左前輪１０４のどちらの車輪がスリップしているかを判断する。
ａｂｓ（ＴｇｔＭｏｔ_ｒｅｖ−Ｍｏｔ_ｒｅｖＬ）≧α    ・・・（４）
【００３９】
スリップ検出部２０４は、（４）式が成立する場合には、モータ１２２により駆動される左前輪１０４がスリップしていると判断し、（４）式が成立しない場合にはモータ１２０により駆動される右前輪１０２がスリップしていると判断する。
【００４０】
駆動制御部２０２は、スリップ検出部２０４により左前輪１０４がスリップしていると判断された場合、左前輪１０４を駆動するモータ１２２を非スリップトルク制御からスリップ制御（回転数制御およびスリップトルク制御）に切り替える。具体的には、駆動制御部２０２は、スリップしていない右前輪１０２を駆動するモータ１２０の回転数Ｍｏｔ_ｒｅｖＲを、スリップしている左前輪１０４を駆動するモータ１２２の目標回転数ＴｇｔＭｏｔ_ｒｅｖに設定する。そして、駆動制御部２０２は、下記（５）式のように、左前輪１０４を駆動するモータ１２２の回転数Ｍｏｔ_ｒｅｖＬを目標回転数ＴｇｔＭｏｔ_ｒｅｖとなるように、インバータ１３０を介してモータ１２２の回転数制御を行う。駆動制御部２０２は、スリップしていない右前輪１０２を駆動するモータ１２０については、上述と同様の非スリップトルク制御を行う。
Ｍｏｔ_ｒｅｖＬ＝ＴｇｔＭｏｔ_ｒｅｖ    ・・・（５）
【００４１】
駆動制御部２０２は、スリップしている左前輪１０４を駆動するモータ１２２を回転数制御することで、モータ１２２の回転数Ｍｏｔ_ｒｅｖＬを目標回転数ＴｇｔＭｏｔ_ｒｅｖまで減少させる。駆動制御部２０２は、下記（６）式のように、モータ１２０の回転数Ｍｏｔ_ｒｅｖＲとモータ１２２の回転数Ｍｏｔ_ｒｅｖＬとの回転数差がスリップ閾値α以下となったことを検出すると、タイマーカウントｔｃを開始する。
ａｂｓ（Ｍｏｔ_ｒｅｖＲ−Ｍｏｔ_ｒｅｖＬ）≦α    ・・・（６）
【００４２】
駆動制御部２０２は、下記（７）式が成立するまで、すなわちタイマーカウントｔｃがタイマー閾値δを経過するまで、モータ１２２を回転数制御し、またモータ１２０を非スリップトルク制御する。
【００４３】
ｔｃ≧δ    ・・・（７）
なお、タイマー閾値δは、モータ１２２の回転数制御を後述するスリップトルク制御に切り替えた際に、トルク要求が過大に発生することで、走行中の乗り心地の悪化や、ギヤの耐久性の問題等が発生しないようにするために必要とされる時間に設定される。
【００４４】
駆動制御部２０２は、（７）式が成立するまでの間、（６）式が常に成立していた場合、モータ１２２に対する制御を回転数制御からスリップトルク制御に切り替える。駆動制御部２０２は、スリップトルク制御において、下記（８）式〜（１０）式を用いてモータ１２２が出力すべきトルクＴｑＬを算出する。
【００４５】
ＴｑＬ＝ＴｑＬ_ａｄｄ    ・・・（８）
ＴｑＬ_ａｄｄ＝Σ［｛（ｒｅｑＰ／２）／（Ｍｏｔ_ｒｅｖＬ）｝／γ］    ・・・（９）
Σｍａｘ＝（ｒｅｑＰ／２）／（Ｍｏｔ_ｒｅｖＬ）    ・・・（１０）
ここで、γは、重み係数であり、目標トルクＴｇｔＴｑとモータ１２２のトルクＴｑＬとのトルク差ΔＴｑが例えば５０Ｎｍ未満の場合、０．３秒でトルクＴｑＬが目標トルクＴｇｔＴｑとなる値に設定され、トルク差ΔＴｑが例えば５０Ｎｍ以上の場合、０．５秒でトルクＴｑＬが目標トルクＴｇｔＴｑとなる値に設定される。また、Σｍａｘは、加算トルクＴｑＬ_ａｄｄの合計最大値である。
【００４６】
すなわち、駆動制御部２０２は、（７）式によりタイマーカウントｔｃがタイマー閾値δを経過した時点のモータ１２２の回転数Ｍｏｔ_ｒｅｖＬからトルクマップを用いてトルクＴｑＬを算出し、目標トルクＴｇｔＴｑとトルクＴｑＬとの差であるトルク差ΔＴｑを算出する。そして、駆動制御部２０２は、算出したトルク差ΔＴｑから重み係数γを決定する。
【００４７】
その後、駆動制御部２０２は、（９）式を用いて加算トルクＴｑＬ_ａｄｄを算出し、（８）式を用いてモータ１２２が出力すべきトルクＴｑＬを算出する。そして、駆動制御部２０２は、算出したトルクＴｑＬでモータ１２２が駆動するように、インバータ１３０を介してモータ１２２を制御する。
【００４８】
駆動制御部２０２は、下記（１１）式が成立するまで、（９）式および（８）式を用いた計算を所定間隔毎に繰り返し行い、フィードフォワード的に算出される加算トルクＴｑＬ_ａｄｄをトルクＴｑＬに加算していき、ランプ状にトルクＴｑＬを上げていくフィードバック制御を行う。
ＴｑＬ_ａｄｄ≧Σｍａｘ    ・・・（１１）
【００４９】
駆動制御部２０２は、（１１）式が成立すると、すなわちモータ１２２のトルクＴｑＬが目標トルクＴｇｔＴｑになると、モータ１２２のスリップトルク制御を終了し、非スリップトルク制御に切り替える。
【００５０】
図２は、左前輪１０４がスリップした場合のスリップ制御の一例を示すタイムチャートである。図２に示すように、時間Ｔ０において左前輪１０４がスリップしてモータ１２２の回転数Ｍｏｔ_ｒｅｖＬが上昇し始め、時間Ｔ１においてモータ１２２の回転数Ｍｏｔ_ｒｅｖＬが目標回転数ＴｇｔＭｏｔ_ｒｅｖからスリップ閾値α以上上昇する。時間Ｔ１において、駆動制御部２０２は、（２）式〜（４）式を用いて左前輪１０４がスリップしたことを検出すると、モータ１２２を非スリップトルク制御からスリップ制御に切り替える。
【００５１】
そして、駆動制御部２０２は、（５）式を用いてモータ１２２の回転数Ｍｏｔ_ｒｅｖＬを目標回転数ＴｇｔＭｏｔ_ｒｅｖに減少させる回転数制御を行う。その後、駆動制御部２０２は、時間Ｔ２において（６）式が成立すると、タイマーカウントｔｃを開始する。時間Ｔ３において、（７）式が成立する前に（６）式が成立しなくなると、駆動制御部２０２は、タイマーカウントｔｃをリセットし、もう一度（６）式が成立するまで、（５）式を用いた回転数制御を行い、時間Ｔ４において（６）式が成立すると、タイマーカウントｔｃを開始する。時間Ｔ５において（６）式が常に成立している状態で（７）式が成立すると、駆動制御部２０２は、回転数制御から、（８）式〜（１０）式を用いたスリップトルク制御に切り替え、時間Ｔ６において（１１）式が成立すると、駆動制御部２０２は、スリップトルク制御から非スリップトルク制御に切り替える。なお、時間Ｔ２から時間Ｔ３までの間にトルクＴｑＬが上昇しているのは、回転数Ｍｏｔ_ｒｅｖＬを目標回転数ＴｇｔＭｏｔ_ｒｅｖに維持するためにトルクＴｑＬが上昇してしまったことによるものである。
【００５２】
一方、スリップ検出部２０４は、（４）式が成立しない場合、モータ１２０により駆動される右前輪１０２がスリップしていると判断する。このとき、駆動制御部２０２は、スリップしている右前輪１０２を駆動するモータ１２０に対して、左前輪１０４がスリップした際のモータ１２２に対する制御と同様の制御を行う。具体的には、駆動制御部２０２は、スリップしていない左前輪１０４を駆動するモータ１２２の回転数Ｍｏｔ_ｒｅｖＬを、スリップしている右前輪１０２を駆動するモータ１２０の目標回転数ＴｇｔＭｏｔ_ｒｅｖに設定する。そして、駆動制御部２０２は、下記（１２）式のように、モータ１２０の回転数Ｍｏｔ_ｒｅｖＲを目標回転数ＴｇｔＭｏｔ_ｒｅｖとなるように、インバータ１２８を介してモータ１２０の回転数制御を行う。駆動制御部２０２は、スリップしていない左前輪１０４を駆動するモータ１２２については、上述と同様の非スリップトルク制御を行う。
Ｍｏｔ_ｒｅｖＲ＝ＴｇｔＭｏｔ_ｒｅｖ    ・・・（１２）
【００５３】
駆動制御部２０２は、（６）式、すなわち、モータ１２０の回転数Ｍｏｔ_ｒｅｖＲとモータ１２２の回転数Ｍｏｔ_ｒｅｖＬとの回転数差がスリップ閾値α以下となったことを検出すると、タイマーカウントｔｃを開始する。駆動制御部２０２は、（７）式が成立するまで、モータ１２０を回転数制御し、またモータ１２２を非スリップトルク制御する。
【００５４】
駆動制御部２０２は、（７）式が成立するまでの間、（６）式が常に成立していた場合、モータ１２０に対する制御を回転数制御からスリップトルク制御に切り替える。駆動制御部２０２は、スリップトルク制御において、下記（１３）式〜（１５）式を用いてモータ１２０が出力すべきトルクＴｑＬを算出する。
【００５５】
ＴｑＲ＝Ｔｑ_ａｄｄ    ・・・（１３）
Ｔｑ_ａｄｄ＝Σ［｛（ｒｅｑＰ／２）／（Ｍｏｔ_ｒｅｖＲ）｝／γ］    ・・・（１４）
Σｍａｘ≦（ｒｅｑＰ／２）／（Ｍｏｔ_ｒｅｖＲ）    ・・・（１５）
駆動制御部２０２は、タイマーカウントｔｃがタイマー閾値δを経過した時点のモータ１２０の回転数Ｍｏｔ_ｒｅｖＲからトルクマップによりトルクＴｑＲを算出し、目標トルクＴｇｔＴｑとトルクＴｑＲとのトルク差ΔＴｑを算出する。そして、駆動制御部２０２は、算出したトルク差ΔＴｑから重み係数γを決定する。その後、駆動制御部２０２は、（１４）式を用いて加算トルクＴｑ_ａｄｄを算出し、（１３）式を用いてモータ１２０が出力すべきトルクＴｑＲを算出する。そして、駆動制御部２０２は、算出したトルクＴｑＲでモータ１２０が駆動するように、インバータ１２８を介してモータ１２０をスリップトルク制御する。駆動制御部２０２は、下記（１６）式を満たすまで、（１４）式および（１３）式を用いた計算を繰り返し所定間隔毎に行い、フィードフォワード的に算出される加算トルクＴｑＲ_ａｄｄをトルクＴｑＲに加算していき、ランプ状にトルクＴｑＲを上げていくフィードバック制御を行う。
ＴｑＲ_ａｄｄ≧Σｍａｘ    ・・・（１６）
【００５６】
駆動制御部２０２は、（１６）式が成立すると、すなわちモータ１２０のトルクＴｑＲが目標トルクＴｇｔＴｑとなると、モータ１２０のスリップトルク制御を終了し、非スリップトルク制御に切り替える。
【００５７】
（走行制御処理）
図３は、走行制御処理の流れを説明したフローチャートである。図４は、スリップ制御処理の流れを説明したフローチャートである。図４に示すスリップ制御処理は、図３に示す走行制御処理のサブルーチンである。図３に示すように、シフトレバーがドライブのシフト位置にされたことをシフトセンサ１６４が検出し、そのシフト位置を示す信号が制御部１４０に入力されると、制御部１４０は、走行制御処理を実行する。
【００５８】
走行制御処理を開始すると、信号取得部２００は、車輪回転数センサ１４２、１４４、１４６、１４８、モータ回転数センサ１５０、１５２、アクセルペダルセンサ１５８、ブレーキペダルセンサ１６０、ハンドルセンサ１６２から信号を受信する（ステップＳ１００）。そして、駆動制御部２０２は、右前輪１０２、左前輪１０４、右後輪１０６および左後輪１０８の回転数Ｗ_ｒｅｖから車速Ｖを算出し、車速Ｖおよびアクセルペダルの踏み込み量ａｃｃから要求パワーｒｅｑＰを決定するとともに、（１）式を用いて目標トルクＴｇｔＴｑを算出する（ステップＳ１０２）。
【００５９】
その後、スリップ検出部２０４は、（２）式および（３）式を用いて、右前輪１０２および左前輪１０４の一方がスリップしているか否かを判断する（ステップＳ１０４）。ここで、右前輪１０２および左前輪１０４がともにスリップしていないと判断した場合（ステップＳ１０４においてＮＯ）、駆動制御部２０２は、ステップＳ１０２で算出した目標トルクＴｇｔＴｑでモータ１２０および１２２を駆動させる非スリップトルク制御処理を行い（ステップＳ１０６）、ステップＳ１００に処理を移す。
【００６０】
一方、右前輪１０２および左前輪１０４の一方がスリップしていると判断した場合（ステップＳ１０４においてＹＥＳ）、駆動制御部２０２は、スリップ制御処理（ステップＳ２００）を実行し、ステップＳ１００に処理を移す。なお、スリップ制御処理では、運転者からの操作指示をオーバーライドし、当該スリップ制御処理が終了するまで運転者の操作を受け付けないものとする。また、スリップ制御処理内では、目標値は前回値保持値とする。
【００６１】
図４に示すように、駆動制御部２０２は、スリップ制御処理において、タイマーカウントｔｃをリセットし（ステップＳ２０２）、（４）式を用いて左前輪１０４がスリップしたか否かを判断する（ステップＳ２０４）。ここで、左前輪１０４がスリップしたと判断した場合（ステップＳ２０４においてＹＥＳ）、駆動制御部２０２は、右前輪１０２を駆動するモータ１２０の回転数Ｍｏｔ_ｒｅｖＲを、左前輪１０４を駆動するモータ１２２の目標回転数ＴｇｔＭｏｔ_ｒｅｖに設定する。そして、駆動制御部２０２は、（５）式を用いて、モータ１２２の回転数Ｍｏｔ_ｒｅｖＬを目標回転数ＴｇｔＭｏｔ_ｒｅｖにする回転数制御を行う。また、駆動制御部２０２は、モータ１２０に対しては非スリップトルク制御処理を行う（ステップＳ２０６）。
【００６２】
一方、左前輪１０４がスリップしていない、すなわち右前輪１０２がスリップしたと判断した場合（ステップＳ２０４においてＮＯ）、駆動制御部２０２は、左前輪１０４を駆動するモータ１２２の回転数Ｍｏｔ_ｒｅｖＬを、右前輪１０２を駆動するモータ１２０の目標回転数ＴｇｔＭｏｔ_ｒｅｖに設定する。そして、駆動制御部２０２は、（１２）式を用いて、モータ１２０の回転数Ｍｏｔ_ｒｅｖＲを目標回転数ＴｇｔＭｏｔ_ｒｅｖにする回転数制御を行う。また、駆動制御部２０２は、モータ１２２に対しては非スリップトルク制御処理を行う（ステップＳ２０８）。
【００６３】
その後、駆動制御部２０２は、（６）式を用いて、モータ１２０の回転数Ｍｏｔ_ｒｅｖＲとモータ１２２の回転数Ｍｏｔ_ｒｅｖＬとの回転数差がスリップ閾値α以下となったか否かを判断する（ステップＳ２１０）。ここで、回転数差がスリップ閾値α以下となっていないと判断した場合（ステップＳ２１０においてＮＯ）、駆動制御部２０２は、ステップＳ２０２の処理に戻る。一方、回転数差がスリップ閾値α以下になったと判断した場合（ステップＳ２１０においてＹＥＳ）、駆動制御部２０２は、タイマーカウントｔｃを始動していない場合はタイマーカウントｔｃを始動させる（ステップＳ２１２）。
【００６４】
駆動制御部２０２は、（７）式が成立したか否か、すなわちタイマーカウントｔｃがタイマー閾値δを経過したか否かを判断する（ステップＳ２１４）。タイマーカウントｔｃがタイマー閾値δを経過していないと判断した場合（ステップＳ２１４においてＮＯ）、駆動制御部２０２は、ステップＳ２１０の処理に戻る。
【００６５】
タイマーカウントｔｃがタイマー閾値δを経過したと判断した場合（ステップＳ２１４においてＹＥＳ）、駆動制御部２０２は、モータ１２２のトルクＴｑＬが目標トルクＴｇｔＴｑであるか否かを判断する（ステップＳ２１６）。
【００６６】
モータ１２２のトルクＴｑＬが目標トルクＴｇｔＴｑである、すなわちモータ１２０のトルクＴｑＲが目標トルクＴｇｔＴｑに達していないと判断した場合（ステップＳ２１６においてＹＥＳ）、駆動制御部２０２は、ステップＳ２１８の処理に移す。ステップＳ２１８において、駆動制御部２０２は、モータ１２０のトルク差ΔＴｑを算出し、算出したトルク差ΔＴｑから重み係数γを決定する。そして、駆動制御部２０２は、（１３）式および（１４）式を用いて、モータ１２０のトルクＴｑＲをランプ状に上昇させるスリップトルク制御を行う。また、駆動制御部２０２は、モータ１２２に対して非スリップトルク制御を行う。
【００６７】
そして、駆動制御部２０２は、（１６）式を用いて加算トルクＴｑＲ_ａｄｄが合計最大値Σｍａｘ以上となったか否かを判断する（ステップＳ２２０）。ここで、加算トルクＴｑＲ_ａｄｄが合計最大値Σｍａｘ未満であると判断した場合（ステップＳ２２０においてＮＯ）、駆動制御部２０２は、ステップＳ２１８の処理に戻る。加算トルクＴｑＲ_ａｄｄが合計最大値Σｍａｘ以上であると判断した場合（ステップＳ２２０においてＹＥＳ）、駆動制御部２０２は、スリップ制御処理を終了する。
【００６８】
一方、モータ１２２のトルクＴｑＬが目標トルクＴｇｔＴｑでない、すなわちモータ１２２のトルクＴｑＬが目標トルクＴｇｔＴｑに達していないと判断した場合（ステップＳ２１６においてＮＯ）、駆動制御部２０２は、ステップＳ２２２に処理を移す。ステップＳ２２２において、駆動制御部２０２は、モータ１２２のトルク差ΔＴｑを算出し、算出したトルク差ΔＴｑから重み係数γを決定する。そして、駆動制御部２０２は、（８）式および（９）式を用いて、モータ１２２のトルクＴｑＬをランプ状に上昇させるスリップトルク制御を行う。また、駆動制御部２０２は、モータ１２０に対して非スリップトルク制御を行う。
【００６９】
そして、駆動制御部２０２は、（１１）式を用いて加算トルクＴｑＬ_ａｄｄが（１０）式に示す合計最大値Σｍａｘ以上となったか否かを判断する（ステップＳ２２４）。ここで、加算トルクＴｑＬ_ａｄｄが合計最大値Σｍａｘ未満であると判断した場合（ステップＳ２２４においてＮＯ）、駆動制御部２０２は、ステップＳ２２２の処理に戻る。加算トルクＴｑＬ_ａｄｄが合計最大値Σｍａｘ以上であると判断した場合（ステップＳ２２４においてＹＥＳ）、駆動制御部２０２は、スリップ制御処理を終了する。
【００７０】
以上のように、電気自動車１００は、右前輪１０２および左前輪１０４の一方がスリップしたことを検出すると、スリップした右前輪１０２または左前輪１０４を駆動するモータ１２０または１２２に対して非スリップトルク制御から回転数制御に切り替える。そして、スリップした右前輪１０２または左前輪１０４を駆動するモータ１２０または１２２の回転数Ｍｏｔ_ｒｅｖを、スリップしていない右前輪１０２または左前輪１０４を駆動するモータ１２０または１２２の回転数Ｍｏｔ_ｒｅｖに合わせるようにした。これにより電気自動車１００では、右前輪１０２および左前輪１０４の回転数が一致するので、構造を複雑化することなく、直進性を確保することができる。
【００７１】
また、電気自動車１００は、スリップした右前輪１０２または左前輪１０４を駆動するモータ１２０または１２２に対して、回転数制御後にスリップトルク制御することで、トルクＴｑをランプ状に上昇させるようにした。これにより、電気自動車１００は、急激に車速Ｖが上昇することなく、乗り心地を向上することができる。
【００７２】
また、電気自動車１００は、スリップした右前輪１０２または左前輪１０４を駆動するモータ１２０または１２２に対して、回転数制御からスリップトルク制御に切り替える際のトルク差ΔＴｑに基づいて重み係数γの値を決定し、スリップトルク制御を行うようにした。これにより、電気自動車１００は、トルク差ΔＴｑが大きい場合にはより時間をかけてトルクＴｑを目標トルクＴｇｔＴｑにするので、乗り心地を向上することができる。
【００７３】
以上、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明はかかる実施形態に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【００７４】
なお、上述の実施形態においては、横方向に並んで配置される右前輪１０２および左前輪１０４を駆動するモータ１２０および１２２についてスリップ制御を行うようにしたが、例えば、右前輪１０２および左後輪１０８を駆動するモータ１２０および１２６についてスリップ制御を行うようにしてもよい。すなわち、複数の車輪１０２〜１０８を有する電気自動車１００において、異なる２つの車輪をそれぞれ駆動するモータの制御に適応することができる。
【００７５】
また、上述の実施形態においては、重み係数γの値を決定する際、トルク差ΔＴｑが５０Ｎｍ未満の場合、０．３秒でトルクＴｑが目標トルクＴｇｔＴｑとなる値に設定され、トルク差ΔＴｑが例えば５０Ｎｍ以上の場合、０．５秒でトルクＴｑが目標トルクＴｇｔＴｑとなる値に設定されるようにした。しかし、重み係数γは、トルク差ΔＴｑが大きくなるに連れて、トルクＴｑが目標トルクＴｇｔＴｑとなるまでの時間が長くなるようにすればよく、例えば複数段階に分けて決定するようにしてもよい。
【００７６】
また、上述の実施形態においては、モータ１２０〜１２６のみで駆動する電気自動車１００について述べたが、モータおよびエンジンにより駆動するハイブリット自動車に適応してもよい。
【産業上の利用可能性】
【００７７】
本発明は、電気自動車に利用できる。
【符号の説明】
【００７８】
１００  …電気自動車
１０２  …右前輪
１０４  …左前輪
１２０、１２２  …モータ
１４０  …制御部
１５０、１５２  …モータ回転数センサ
２００  …信号取得部
２０２  …駆動制御部
２０４  …スリップ検出部
【図１】
2014183686.tif 000003
【図２】
2014183686.tif 000004
【図３】
2014183686.tif 000005
【図４】
2014183686.tif 000006