以下、本開示の実施の形態について、図面を参照しながら詳細に説明する。なお、図中同一又は相当部分には同一符号を付してその説明は繰返さない。
図1は、本実施の形態による車両1の全体構成図である。車両1は、エンジン10と、第1モータジェネレータ(以下「第1MG」と称する。)20と、第2モータジェネレータ(以下「第2MG」と称する。)30と、動力分割装置40と、PCU(Power Control Unit)50と、蓄電装置60と、駆動輪80とを備える。
この車両1は、エンジン10の動力及び第2MG30の動力の少なくとも一方によって走行するハイブリッド車両である。なお、本開示では、車両1がハイブリッド車両である場合について代表的に説明されるが、本開示を適用可能な車両は、走行用のモータジェネレータを備える電動車両であればよく、ハイブリッド車両には限定されない。
エンジン10は、空気と燃料との混合気を燃焼させたときに生じる燃焼エネルギをピストンやロータなどの運動子の運動エネルギに変換することによって動力を出力する内燃機関である。動力分割装置40は、たとえば、サンギヤ、キャリア、リングギヤの3つの回転軸を有する遊星歯車機構を含む。動力分割装置40は、エンジン10から出力される動力を、第1MG20を駆動する動力と、駆動輪80を駆動する動力とに分割する。
第1MG20及び第2MG30は、交流回転電機であり、たとえば、ロータに永久磁石が埋設された三相交流同期電動機である。第1MG20は、主として、動力分割装置40を経由してエンジン10により駆動される発電機として用いられる。第1MG20が発電した電力は、PCU50を介して第2MG30又は蓄電装置60へ供給される。
第2MG30は、主として電動機として動作し、駆動輪80を駆動する。第2MG30は、蓄電装置60からの電力及び第1MG20の発電電力の少なくとも一方を受けて駆動され、第2MG30の駆動力は駆動輪80に伝達される。一方、車両1の制動時や下り坂での加速度低減時には、第2MG30は、発電機として動作して回生発電を行なう。第2MG30が発電した電力は、PCU50を介して蓄電装置60に回収される。
PCU50は、蓄電装置60から受ける直流電力を、第1MG20及び第2MG30を駆動するための交流電力に変換する。また、PCU50は、第1MG20及び第2MG30により発電された交流電力を、蓄電装置60を充電するための直流電力に変換する。PCU50は、たとえば、第1MG20及び第2MG30に対応して設けられる2つのインバータと、各インバータに供給される直流電圧を蓄電装置60の電圧以上に昇圧するコンバータとを含んで構成される。
蓄電装置60は、再充電可能な直流電源であり、たとえばリチウムイオン電池やニッケル水素電池等の二次電池を含んで構成される。蓄電装置60は、第1MG20及び第2MG30の少なくとも一方が発電した電力を受けて充電される。そして、蓄電装置60は、その蓄えられた電力をPCU50へ供給する。なお、蓄電装置60として電気二重層キャパシタ等も採用可能である。
蓄電装置60には、蓄電装置60の電圧、入出力電流及び温度をそれぞれ検出する電圧センサ、電流センサ及び温度センサ(いずれも図示せず)が設けられる。各センサは、検出値をBAT−ECU110に出力する。
車両1は、さらに、HV−ECU(Electronic Control Unit)100と、BAT−ECU110と、各種センサ120と、ナビゲーション装置130と、HMI(Human Machine Interface)装置140とを備える。
HV−ECU100、BAT−ECU110、ナビゲーション装置130、及びHMI装置140等を含む車両1の制御システム(以下、単に「車両システム」ともいう)は、ユーザが図示しないシステムスイッチを操作することによって起動されたり停止されたりする。なお、車両システムの「起動」とは、車両システムが停止状態(オフ状態)から作動状態(オン状態)に切り替えられることを意味する。
図2は、図1に示したHV−ECU100、各種センサ120及びナビゲーション装置130の詳細な構成を示すブロック図である。HV−ECU100、BAT−ECU110、ナビゲーション装置130、及びHMI装置140は、CAN(Controller Area Network)150を通じて互いに通信可能に構成されている。
各種センサ120は、たとえば、アクセルペダルセンサ122、車速センサ124、ブレーキペダルセンサ126を含む。アクセルペダルセンサ122は、ユーザによるアクセルペダル操作量(以下「アクセル開度」ともいう)ACCを検出する。車速センサ124は、車両1の車速VSを検出する。ブレーキペダルセンサ126は、ユーザによるブレーキペダル操作量BPを検出する。これらの各センサは、検出結果をHV−ECU100へ出力する。
HV−ECU100は、CPU(Central Processing Unit)、処理プログラム等を記憶するROM(Read Only Memory)、データを一時的に記憶するRAM(Random Access Memory)、各種信号を入出力するための入出力ポート(図示せず)等を含む。HV−ECU100は、メモリ(ROM及びRAM)に記憶された情報、各種センサ120からの情報、BAT−ECU110からの情報に基づいて、所定の演算処理を実行する。そして、HV−ECU100は、演算処理の結果に基づいて、エンジン10、PCU50、HMI装置140等の各機器を制御する。
BAT−ECU110も、CPU、ROM、RAM、入出力ポート等を含み(いずれも図示せず)、蓄電装置60の入出力電流及び/又は電圧の検出値に基づいて蓄電装置60のSOCを算出する。SOCは、たとえば、蓄電装置60の満充電容量に対する現在の蓄電量を百分率で表される。そして、BAT−ECU110は、算出されたSOCをHV−ECU100へ出力する。なお、HV−ECU100においてSOCを算出してもよい。
ナビゲーション装置130は、ナビゲーションECU132と、地図情報データベース(DB)134と、GPS(Global Positioning System)受信部136と、交通情報受信部138とを含む。
地図情報DB134は、ハードディスクドライブ(HDD)等によって構成され、地図情報を記憶している。地図情報は、交差点や行き止まり等の「ノード」、ノード同士を接続する「リンク」、及びリンク沿いにある「施設」(建物や駐車場等)に関するデータを含む。なお、各ノードには、ノードの位置情報が付随しており、各リンクには、そのリンクに対応する道路区間の距離情報および勾配情報(平均勾配値やリンク両端の標高等)等が付随している。
GPS受信部136は、GPS衛星(図示せず)からの信号(電波)に基づいて車両1の現在位置を取得し、車両1の現在位置を示す信号をナビゲーションECU132へ出力する。
交通情報受信部138は、FM多重放送等によって提供されている道路交通情報(たとえばVICS(登録商標)情報)を受信する。この道路交通情報は、少なくとも渋滞情報を含み、その他道路規制情報や駐車場情報等も含み得る。この道路交通情報は、たとえば5分おきに更新される。
ナビゲーションECU132は、CPU、ROM、RAM、入出力ポート(図示せず)等を含み、地図情報DB134、GPS受信部136及び交通情報受信部138から受ける各種情報や信号に基づいて、車両1の現在位置、並びにその周辺の地図情報及び渋滞情報等をHMI装置140及びHV−ECU100へ出力する。
また、ナビゲーションECU132は、HMI装置140においてユーザにより車両1の目的地が入力されると、車両1の現在位置から目的地までの経路(走行予定経路)を地図情報DB134に基づいて探索する。この走行予定経路は、車両1の現在位置から目的地までのノード及びリンクの集合によって構成される。そして、ナビゲーションECU132は、車両1の現在位置から目的地までの探索結果(ノード及びリンクの集合)をHMI装置140およびHV−ECU100へ出力する。
また、ナビゲーションECU132は、車両1が走行予定経路から離脱した場合、現在位置から目的地までの経路を再探索し、走行予定経路を再探索後の経路に変更するリルート処理を実行する。そして、ナビゲーションECU132は、リルート処理の結果(変更後の走行予定経路)をHMI装置140およびHV−ECU100へ出力する。
また、ナビゲーションECU132は、HV−ECU100からの求めに応じて「先読み区間情報」をHV−ECU100へ出力する。先読み区間情報は、走行予定経路における現在位置から所定距離D0(たとえば10km程度)だけ先の位置までの区間(以下「先読み区間」ともいう)、および先読み区間に含まれる各リンクの距離情報および勾配情報などを含む情報である。先読み区間情報は、HV−ECU100における「プレSOC制御」に用いられる(後述)。
また、ナビゲーションECU132は、HV−ECU100からの求めに応じて「トンネルフラグFT」をHV−ECU100へ出力する。トンネルフラグFTは、走行予定経路における現在位置から所定距離D1(D1<D0、たとえばD1=5km程度)だけ先の位置にトンネルがあるか否かだけを示す情報である。したがって、トンネルフラグFTは、上述の先読み区間情報に含まれる各区間(リンク)とは対応付けられていない情報である。以下では、トンネルフラグFTが「オン状態」である場合に現在位置から所定距離D1だけ先の位置にトンネルがあることを示し、トンネルフラグFTが「オフ状態」である場合に現在位置から所定距離D1だけ先の位置にトンネルがないことを示すものとする。トンネルフラグFTも、先読み区間情報と同様、HV−ECU100における「プレSOC制御」に用いられる(後述)。
HMI装置140は、車両1の運転を支援するための情報をユーザに提供する装置である。HMI装置140は、代表的には、車両1の室内に設けられたディスプレイ(視覚情報表示装置)であり、スピーカ(聴覚情報出力装置)等も含む。HMI装置140は、視覚情報(図形情報、文字情報)や聴覚情報(音声情報、音情報)等を出力することによって様々な情報をユーザに提供する。
HMI装置140は、ナビゲーション装置130のディスプレイとして機能する。すなわち、HMI装置140は、車両1の現在位置、並びにその周辺の地図情報及び渋滞情報等をナビゲーション装置130からCAN150を通じて受信し、車両1の現在位置をその周辺の地図情報及び渋滞情報とともに表示する。
また、HMI装置140は、ユーザが操作可能なタッチパネルとしても作動し、ユーザは、タッチパネルに触れることによって、たとえば、表示されている地図の縮尺を変更したり、車両1の目的地を入力したりすることができる。HMI装置140において目的地が入力されると、その目的地の情報がCAN150を通じてナビゲーション装置130へ送信される。
上述のように、ナビゲーションECU132は、HV−ECU100からの求めに応じて、先読み区間情報およびトンネルフラグFTをHV−ECU100へ出力する。
HV−ECU100は、ナビゲーションECU132から受信した先読み区間情報およびトンネルフラグFTを用いて、車両1の省エネルギ運転を支援するための制御として、「プレSOC制御」(先読みSOC制御)を実行する。
プレSOC制御とは、ナビゲーション装置130から受信した上述の先読み区間情報およびトンネルフラグFTなどを用いて先読み区間にプレSOC制御の対象となる傾斜区間(以下「対象傾斜区間」ともいう)があるか否かを判定し、対象傾斜区間がある場合には、対象傾斜区間への進入前から蓄電装置60のSOCを対象傾斜区間に応じて予め変更する制御である。プレSOC制御の詳細については、後程詳しく説明する。
<走行制御>
プレSOC制御の詳細な説明に先立ち、まず、HV−ECU100によって実行される車両1の走行制御について説明する。
図3は、HV−ECU100により実行される走行制御の処理手順の一例を示すフローチャートである。このフローチャートに示される一連の処理は、たとえば車両システムの作動中に所定時間毎に繰り返し実行される。
HV−ECU100は、アクセルペダルセンサ122及び車速センサ124からそれぞれアクセル開度ACC及び車速VSの検出値を取得するとともに、蓄電装置60のSOCをBAT−ECU110から取得する(ステップS10)。
次いで、HV−ECU100は、取得されたアクセル開度ACC及び車速VSの検出値に基づいて、車両1に対する要求トルクTrを算出する(ステップS15)。たとえば、アクセル開度ACCと、車速VSと、要求トルクTrとの関係を示すマップを事前に準備してHV−ECU100のROMにマップとして記憶しておき、そのマップを用いて、アクセル開度ACC及び車速VSの検出値に基づいて要求トルクTrを算出することができる。そして、HV−ECU100は、算出された要求トルクTrに車速VSを乗算することによって、車両1に対する走行パワーPd(要求値)を算出する(ステップS20)。
続いて、HV−ECU100は、蓄電装置60に対する充放電要求パワーPbを算出する(ステップS25)。この充放電要求パワーPbは、蓄電装置60のSOC(実績値)とその目標との差ΔSOCに基づいて算出され、充放電要求パワーPbが正の値であるときは、蓄電装置60に対して充電が要求されることを示し、充放電要求パワーPbが負の値であるときは、蓄電装置60に対して放電が要求されることを示す。
図4は、蓄電装置60に対する充放電要求パワーPbの算出方法の一例を示した図である。蓄電装置60のSOC(実績値)と、SOCの制御目標を示す目標SOCとの差ΔSOCが正の値であるとき(SOC>目標SOC)、充放電要求パワーPbは負の値となり(放電要求)、ΔSOCの絶対値が大きいほど充放電要求パワーPbの絶対値も大きくなる。一方、ΔSOCが負の値であるとき(SOC<目標SOC)、充放電要求パワーPbは正の値となり(充電要求)、ΔSOCの絶対値が大きいほど充放電要求パワーPbの絶対値も大きくなる。なお、この例では、ΔSOCの絶対値が小さい場合には、充放電要求パワーPbを0とする不感帯が設けられている。
図3に戻って、HV−ECU100は、次式(1)に示されるように、ステップS20において算出された走行パワーPdと、ステップS25において算出された充放電要求パワーPbと、システム損失Plossとの合計値を、エンジン10に対して要求されるエンジン要求パワーPeを算出する(ステップS30)。
Pe=Pd+Pb+Ploss …(1)
次いで、HV−ECU100は、算出されたエンジン要求パワーPeが所定のエンジン始動しきい値Pethよりも大きいか否かを判定する(ステップS35)。なお、しきい値Pethは、エンジン10が所定の運転効率よりも高い運転効率で運転され得る値に設定される。
ステップS35においてエンジン要求パワーPeがしきい値Pethよりも大きいと判定されると(ステップS35においてYES)、HV−ECU100は、エンジン10を始動するようにエンジン10を制御する(ステップS40)。なお、エンジン10が既に運転中であれば、このステップはスキップされる。そして、HV−ECU100は、エンジン10及び第2MG30の双方からの出力を用いて車両1が走行するようにエンジン10及びPCU50を制御する。すなわち、車両1は、エンジン10及び第2MG30の出力を用いたハイブリッド走行(HV走行)を行なう(ステップS45)。
一方、ステップS35においてエンジン要求パワーPeがしきい値Peth以下であると判定されると(ステップS35においてNO)、HV−ECU100は、エンジン10を停止するようにエンジン10を制御する(ステップS50)。なお、エンジン10が既に停止中であれば、このステップはスキップされる。そして、HV−ECU100は、第2MG30の出力のみを用いて車両1が走行するようにPCU50を制御する。すなわち、車両1は、第2MG30の出力のみを用いた電動機走行(EV走行)を行なう(ステップS55)。
なお、上記において、実際のSOCが目標SOCよりも高いときは(ΔSOC>0)、充放電要求パワーPbは負の値となるので、SOCが目標SOCに制御されている場合に比べて、エンジン要求パワーPeが小さくなることによりエンジン10は始動されにくい状態となることが理解される。その結果、蓄電装置60の放電が促進され、SOCは低下傾向を示す。
一方、実際のSOCが目標SOCよりも低いときは(ΔSOC<0)、充放電要求パワーPbは正の値となるので、SOCが目標SOCに制御されている場合に比べて、エンジン要求パワーPeが大きくなることによりエンジン10は始動され易い状態となることが理解される。その結果、蓄電装置60の充電が促進され、SOCは上昇傾向を示す。
<プレSOC制御の詳細>
次に、HV−ECU100により実行されるプレSOC制御の詳細について説明する。プレSOC制御には、「下りSOC制御」および「上りSOC制御」が含まれる。
下りSOC制御とは、ナビゲーション装置130から受信した先読み区間情報およびトンネルフラグFTなどを用いて先読み区間に下り抽出条件を満たす対象下り区間があるか否かを判定し、対象下り区間がある場合には、対象下り区間への進入前から蓄電装置60のSOCを予め低下させる制御である。
車両1が対象下り区間を走行する際には、第2MG30の回生電力の増加によって蓄電装置60のSOCが上昇する。しかしながら、下りSOC制御によって対象下り区間への進入前にSOCが予め低下されているため、対象下り区間の走行中にSOCが上限値SU(図5参照)に達すること(SOCのオーバーフロー)が抑制される。そのため、第2MG30の回生電力を無駄に消費することなく蓄電装置60に適切に回収することができる。
上りSOC制御は、ナビゲーション装置130から取得された先読み区間情報およびトンネルフラグFTなどを用いて先読み区間に上り抽出条件を満たす対象上り区間があるか否かを判定し、対象上り区間がある場合には、対象上り区間への進入前から蓄電装置のSOCを予め増加させる制御である。
車両1が対象上り区間を走行する際には、第2MG30の電力消費の増加によって蓄電装置60のSOCが低下する。しかしながら、上りプレ放電制御によって対象上り区間への進入前にSOCが予め増加されているため、対象上り区間の走行中にSOCが下限値SL(図5参照)に低下すること(SOCのアンダーフロー)が抑制され、エンジン10の運転効率が低い状態での蓄電装置60の強制充電が抑制される。なお、強制充電とは、SOCが下限値SLに低下した場合に、エンジン10が仮に最適動作点で運転できない状況であってもエンジン10を強制的に始動して第1MG20による蓄電装置60の充電を行なう制御である。
下りSOC制御および上りSOC制御は、対象傾斜区間の道路勾配(下り勾配であるか上り勾配であるか)およびSOCの変更方向(増加方向であるか低下方向であるか)が相違するが、その他の内容については類似する点が多い。そのため、以下では、主に、下りSOC制御について詳しく説明する。
<下りSOC制御>
図5は、下りSOC制御を説明するための図である。図5において、横軸は、車両1の走行予定経路の各地点を示す。図5に示される例では、走行予定経路における先読み区間として区間1〜区間8が示されている。縦軸は、車両1の走行予定経路における道路の標高、及び蓄電装置60のSOCを示す。図中、線L21は、蓄電装置60の目標SOCを示す。また、線L22は、下りSOC制御が実行される場合のSOCの推移を示し、点線L23は、比較例として、下りSOC制御が実行されない場合のSOCの推移を示す。
HV−ECU100は、車両1の現在位置、現在位置周辺の地図情報および渋滞情報、先読み区間情報、およびトンネルフラグFT等をナビゲーション装置130から取得し、走行予定経路における先読み区間(現在位置から所定距離D0だけ先の位置までの区間)に、下り抽出条件を満たす対象下り区間(以下、単に「対象下り区間B」ともいう)が存在するか否かを判定する「制御対象探索処理」を行なう。
なお、本実施の形態において、下り抽出条件は、下り勾配の大きい下り坂の開始地点から次に一定距離以上の平坦が続く直前の地点までの区間であって、かつ一定以上の標高差および距離がある区間である、という条件に設定される。下り抽出条件を満たす区間が対象下り区間Bとして抽出される。
図5には、地点P20において、対象下り区間Bの探索が行なわれ、区間4〜区間6が対象下り区間Bであると特定された場合が例示されている。HV−ECU100は、通常走行時は、蓄電装置60の目標SOCを値Snに設定する(たとえば区間1)。仮に、蓄電装置60のSOCが値Snに制御されたままで車両1が対象下り区間B(区間4〜区間6)に進入すると、対象下り区間Bでは第2MG30により回生発電が行なわれることにより蓄電装置60が充電されるので、SOCは値Snから上昇する(点線L23)。そして、対象下り区間Bの走行中にSOCが上限値SUに達すると(地点P25a)、下り坂を走行しているにも拘わらず第2MG30により回生発電された電力を蓄電装置60に蓄えることができず(オーバーフロー発生)、回収可能なエネルギを捨てることになるとともに、蓄電装置60の劣化も促進され得る。
そこで、本実施の形態による車両1では、下り抽出条件を満たす対象下り区間B(区間4〜区間6)が特定され、その対象下り区間Bの開始地点P23より所定距離手前の地点P21aに車両1が到達すると、HV−ECU100は、目標SOCを値Snよりも低い値Sdに変更する(線L21)。そうすると、SOCが目標SOCよりも高い状態となり(ΔSOC>0)、上述のように、蓄電装置60の放電が促進され、SOCは低下する(線L22)。
図5では、対象下り区間Bの開始地点P23に車両1が到達するまでに、SOCが値Sdまで低下している。これにより、対象下り区間B(区間4〜区間6)の走行中にSOCが上限値SUに達するのを抑制し、回収可能なエネルギを捨てることによる燃費低下や蓄電装置60の過充電による劣化が抑制される。
対象下り区間Bの終了地点P26に車両1が到達すると、HV−ECU100は、下りSOC制御を終了し、目標SOCを値Snに復帰させる。
なお、以下では、目標SOCが値Snから値Sdに変更される地点P21a(下りSOC制御の開始地点)から対象下り区間Bの開始地点P23までの区間を「下り前区間A」とも記載する。また、下り前区間Aと対象下り区間Bとを合わせた区間(目標SOCが値Snから値Sdに変更されている区間)を「下りSOC制御区間」とも記載する。
このように、下りSOC制御が実行されることによって、対象下り区間Bへの進入前から目標SOCが値Snよりも低い値Sdに変更される。これにより、蓄電装置60の放電が促進され、蓄電装置60の電力が多く消費される。その結果、対象下り区間Bの走行中における回生電力の回収量を増やすことができる。
<下りSOC制御の制御フロー>
図6は、HV−ECU100により実行される下りSOC制御の処理手順の一例を示すフローチャートである。なお、このフローチャートに示される一連の処理は、車両システムの作動中に所定時間毎に繰り返し実行される。
HV−ECU100は、上述の先読み区間情報の更新タイミングであるか否かを判定する(ステップS110)。先読み区間情報の更新タイミングは、たとえば、車両1の走行経路が変更されたとき(走行予定経路から車両1が離脱したとき)、所定時間経過したとき、所定距離走行したとき、対象下り区間Bを通過したとき等である。
ステップS110において先読み区間情報の更新タイミングではないと判定されると(ステップS110においてNO)、HV−ECU100は、ステップS115の処理を実行することなくステップS120へ処理を移行する。
ステップS110において先読み区間情報の更新タイミングであると判定されると(ステップS110においてYES)、HV−ECU100は、ナビゲーション装置130から取得される現在位置、先読み区間情報、およびトンネルフラグFT等に基づいて、制御対象(対象下り区間B)の探索処理を実行する(ステップS115)。この探索処理の詳細については、後程詳しく説明する。
制御対象の探索処理が終了すると、HV−ECU100は、走行予定経路における先読み区間に対象下り区間Bが存在するか否かを判定する(ステップS120)。具体的には、HV−ECU100は、探索処理によって対象下り坂として「有効」(後述の図7のステップS240参照)と判定された区間がある場合に、対象下り区間Bが存在すると判定する。
ステップS120において対象下り区間Bは無いと判定されると(ステップS120においてNO)、HV−ECU100は、以降の一連の処理を実行することなくリターンへと処理を移行する。
ステップS120において対象下り区間Bが有ると判定されると(ステップS120においてYES)、HV−ECU100は、車両1が下り前区間A(対象下り区間Bの開始地点より所定距離手前の地点から対象下り区間Bの開始地点までの区間)に進入する前であるか否かを判定する(ステップS125)。
ステップS125において車両1が下り前区間Aに進入する前であると判定されると(ステップS125においてYES)、HV−ECU100は、以降の一連の処理を実行することなくリターンへと処理を移行する。
ステップS125において車両1が下り前区間Aに進入した後であると判定されると(ステップS125においてNO)、HV−ECU100は、車両1が対象下り区間Bの終了地点を通過したか否かを判定する(ステップS130)。
ステップS130において車両1が対象下り区間Bの終了地点を通過していないと判定されると(ステップS130においてNO)、車両1が下りSOC制御区間を走行中であるため、HV−ECU100は、下りSOC制御を実行する(ステップS135)。具体的には、図5で説明したように、HV−ECU100は、蓄電装置60の目標SOCを通常時の値Snよりも低い値Sdに設定する。これにより、車両1が対象下り区間Bに進入する前に蓄電装置60のSOCが下げられる。
ステップS130において車両1が対象下り区間Bの終了地点を通過したと判定されると(ステップS130においてYES)、HV−ECU100は、下りSOC制御を終了する(ステップS160)。具体的には、HV−ECU100は、蓄電装置60の目標SOCを値Sdから通常時の値Snに復帰させる。
<対象下り区間の探索処理フロー>
図7は、HV−ECU100により実行される対象下り区間Bの探索処理(図6のステップS115の処理)の手順の一例を示すフローチャートである。
HV−ECU100は、ナビゲーション装置130から取得した先読み区間情報をメモリに記憶するとともに、探索対象の区間iを「0」に初期化する(ステップS200)。先読み区間情報には、上述したように、先読み区間および先読み区間に含まれる各リンク(区間)の距離情報および勾配情報などが含まれる。以下、先読み区間情報に含まれるリンク(区間)の総数を「先読み区間数」とも称する。
次いで、HV−ECU100は、探索対象区間iの勾配Giをメモリから読み出す(ステップS210)。なお、勾配Giは、後述の図11の処理フローによって予め設定されてメモリに記憶されている。HV−ECU100は、その勾配Giをメモリから読み出す。勾配Giの設定処理(図11の処理フロー等)については後程詳しく説明する。
次いで、HV−ECU100は、探索対象区間iの勾配Giが閾値Gth1よりも小さいか否かを判定する(ステップS220)。ここで、閾値Gth1は負の値であるため、「勾配Giが閾値Gth1よりも小さい」とは、閾値Gth1の大きさ(絶対値)よりも大きい勾配を有する下り坂であることを表わす。
ステップS220において勾配Giが閾値Gth1よりも小さいと判定されると(ステップS220においてYES)、HV−ECU100は、下り起点が0であるか否かを判定する(ステップS230)。
ステップS230において下り起点が0であると判定されると(ステップS230においてYES)、HV−ECU100は、下り起点を現在の探索対象区間iに設定するとともに、標高差ΔHおよび下り距離DGを0にリセットする(ステップS232)。
ステップS230において下り起点が0でないと判定されると(ステップS230においてNO)、HV−ECU100は、ステップS232の処理を実行することなくステップS234へと処理を移行する。この場合、下り起点は現在の値に維持される。
次いで、HV−ECU100は、下り起点から現在の探索対象区間iの終点までの標高差ΔHおよび下り距離DGを算出するとともに、平坦起点kおよび平坦距離DF(後述)を0にリセットする(ステップS234)。
HV−ECU100は、次式(2)に示されるように、標高差ΔHの前回値(下り起点から現在の探索対象区間iの直前の区間i−1の終点までの標高差)に、現在の探索対象区間iの標高差ΔHiを加えた値を、標高差ΔHの今回値(下り起点から現在の探索対象区間iの終点までの標高差)として算出する。なお、標高差ΔHは、大きさ(絶対値)で算出される。
ΔH(今回値)=ΔH(前回値)+ΔHi …(2)
なお、現在の探索対象区間iの標高差ΔHiは、現在の探索対象区間iの距離情報および勾配情報から算出される。
HV−ECU100は、次式(3)に示されるように、下り距離DGの前回値(下り起点から現在の探索対象区間iの直前の区間i−1の終点までの下り距離)に、現在の探索対象区間iの下り距離DGiを加えた値を、下り距離DGの今回値(下り起点から現在の探索対象区間iの終点までの下り距離)として算出する。
DG(今回値)=DG(前回値)+DGi …(3)
なお、現在の探索対象区間iの下り距離DGiは、現在の探索対象区間iの距離情報および勾配情報から算出される。
次いで、HV−ECU100は、ステップS234で算出された標高差ΔHが閾値ΔHth1よりも大きいか否かを判定する(ステップS236)。また、HV−ECU100は、ステップS234で算出された下り距離DGが閾値DGth1よりも大きいか否かを判定する(ステップS238)。
ステップS236において標高差ΔHが閾値ΔHth1よりも大きいと判定された場合(ステップS236においてYES)で、かつステップS238において下り距離DGが閾値DGth1よりも大きいと判定された場合(ステップS238においてYES)、HV−ECU100は、対象下り坂を「有効」と判定する(ステップS240)。
ステップS236において標高差ΔHが閾値ΔHth1よりも小さいと判定された場合(ステップS236においてNO)、あるいはステップS238において下り距離DGが閾値DGth1よりも小さいと判定された場合(ステップS238においてNO)、HV−ECU100は、ステップS240の処理を実行することなくステップS250へと処理を移行する。
次いで、HV−ECU100は、探索対象区間iの番号を1つインクリメントする(ステップS250)。
次いで、HV−ECU100は、探索対象区間iが先読み区間数(先読み区間情報に含まれる区間の総数)よりも大きいか否かを判定する(ステップS252)。
ステップS252において探索対象区間iが先読み区間数以下であると判定されると(ステップS252においてNO)、HV−ECU100は、ステップS210へと処理を戻し、ステップS210以降の処理を繰り返す。
ステップS252において探索対象区間iが先読み区間数よりも大きいと判定されると(ステップS252においてYES)、HV−ECU100は、ステップS240において対象下り坂が「有効」と判定されており、かつ下り終点が0であるか否かを判定する(ステップS254)。
ステップS254において対象下り坂が有効であり、かつ下り終点が0であると判定されると(ステップS254にてYES)、HV−ECU100は、下り終点を探索対象区間iの直前の区間i−1に設定する(ステップS256)。その後、HV−ECU100は、処理を終了する。
ステップS254において対象下り坂が有効でない、あるいは下り終点が0でないと判定されると(ステップS254にてNO)、HV−ECU100は、ステップS256の処理を実行することなく処理を終了する。
ステップS220において勾配Giが閾値Gth1よりも大きいと判定されると(ステップS220においてNO)、HV−ECU100は、平坦起点kが0であるか否かを判定する(ステップS260)。
ステップS260において平坦起点kが0であると判定されると(ステップS260においてYES)、HV−ECU100は、平坦起点kを現在の探索対象区間iに設定する(ステップS262)。
ステップS260において平坦起点kが0でないと判定されると(ステップS260においてNO)、HV−ECU100は、ステップS262の処理を実行することなくステップS270へと処理を移行する。この場合、平坦起点kは現在の値に維持される。
次いで、HV−ECU100は、平坦起点kから現在の探索対象区間iの終点までの平坦距離DFを算出する(ステップS270)。
HV−ECU100は、次式(4)に示されるように、平坦距離DFの前回値(平坦起点kから現在の探索対象区間iの直前の区間i−1の終点までの平坦距離)に、現在の探索対象区間iの平坦距離DFiを加えた値を、平坦距離DFの今回値(平坦起点から現在の探索対象区間iの終点までの平坦距離)として算出する。
DF(今回値)=DF(前回値)+DFi …(4)
次いで、HV−ECU100は、ステップS270において算出された平坦距離DFが閾値DFthよりも大きいか否かを判定する(ステップS272)。
ステップS272において平坦距離DFが閾値DFth以下であるとを判定されると(ステップS272にてNO)、HV−ECU100は、ステップS250へと処理を移行する。
ステップS272において平坦距離DFが閾値DFthよりも大きいと判定されると(ステップS272にてYES)、HV−ECU100は、対象下り坂が「有効」であるか否かを判定する(ステップS274)。
ステップS274において対象下り坂が「有効」でないと判定されると(ステップS274においてNO)、HV−ECU100は、下り起点が0であるか否かを判定する(ステップS276)。
ステップS276において下り起点が0であると判定されると(ステップS276においてYES)、HV−ECU100は、ステップS250へと処理を移行する。
ステップS276において下り起点が0でないと判定されると(ステップS276においてNO)、HV−ECU100は、下り起点を0にリセットする(ステップS278)。その後、HV−ECU100は、ステップS250へと処理を移行する。
ステップS274において対象下り坂が「有効」であると判定されると(ステップS274においてYES)、HV−ECU100は、平坦起点kの直前の区間k−1を、下り終点に設定する(ステップS280)。その後、HV−ECU100は、処理を終了する。すなわち、本実施の形態において、HV−ECU100は、先読み区間に1組の下り起点および下り終点が特定された(すなわち1つの対象下り区間が特定された)時点で、探索対象区間iが先読み区間数に達していなくても、対象下り区間の探索処理を終了する。
<トンネル区間の勾配無効化>
上述のように、HV-ECU100は、対象下り区間の探索処理(図6のステップS115の処理)を行なう際、各区間iの勾配Giを参照して対象下り区間を特定する。
ところが、ナビゲーション装置130に記憶されている勾配情報から各区間iの勾配Giを取得する場合には、トンネル区間において勾配精度が低くなり、対象下り区間を適切に特定できないことが懸念される。
通常、ナビゲーション装置に記憶されている地図情報は、所定間隔(たとえば日本の国土地理院の地図情報の場合は10m間隔)でメッシュ状の区間に分けられている。そして、各区間の勾配情報は、道路の実際の標高ではなく、予め測定された各区間の地勢(地表面)の標高差に基づいて作成される。そのため、トンネル内の道路の場合、道路の実際の標高は、地図情報の標高(地勢の標高、すなわちトンネルの上方の山肌の標高)よりも低くなる。この影響で、トンネル区間においては、実際の標高と地図情報の標高情報とが一致せず勾配精度が低くなる。したがって、先読み区間にトンネル区間が含まれる場合に、対象下り区間の有無を先読み区間情報に含まれる勾配情報を用いて判定すると、トンネル区間の勾配精度が低いことに起因して対象下り区間Bが正しく判定されず、下りSOC制御が適切に実行されない可能性がある。たとえば、実際には平坦な道路が続くような場所でも、対象下り区間Bと誤判定されて、下りSOC制御が不必要に実行されてしまうことが懸念される。
上記の点に鑑み、本実施の形態によるHV−ECU100は、対象下り区間の探索処理を行なう際、ナビゲーション装置130から受信したトンネルフラグFTを用いて、先走行予定経路における先読み区間にトンネル区間が含まれるか否かを判定する。
そして、先読み区間にトンネル区間が含まれる場合、HV−ECU100は、トンネル区間の勾配情報の大きさを、先読み区間情報に含まれる勾配情報の大きさよりも小さい値(たとえば0)にする。これにより、トンネル区間の影響による対象下り区間Bの誤判定が低減されるため、下りSOC制御が適切に実行され得る。
図8は、走行予定経路における先読み区間にトンネル区間が含まれる場合の対象下り区間Bの探索処理の内容を説明するための図である。図8の上段に示すグラフの横軸は車両1の走行予定経路の各地点を示し、縦軸は各地点の標高を示す。図8に示される例では、先読み区間として区間1〜区間11が示されている。図8の下段に示す表には、ナビゲーション装置130から取得される先読み区間情報の内容(先読み区間、および各区間の距離情報および勾配情報)が例示される。以下では、勾配情報の値が0である場合に平坦であることを示し、正の値である場合に上り勾配であることを示し、負の値である場合に下り勾配であることを示すものとする。勾配の大きさ(絶対値)が大きいほど、勾配が大きいことを示すものとする。
図8には、先読み区間(区間1〜区間11)のうち、区間8〜区間10がトンネル区間であり、他の区間が通常区間(トンネル区間ではない区間)である例が示されている。
HV−ECU100は、先読み区間情報に含まれる距離情報および勾配情報から、各区間の標高差ΔHを算出するとともに、下り起点(下り勾配が大きい下り坂が始まる区間)および下り終点(次に一定距離以上の平坦が続く直前の区間)を特定する。HV−ECU100は、特定された下り起点と下り終点との標高差ΔHが閾値ΔHth1よりも大きく、かつ下り起点から下り終点までの下り距離DGが閾値DGth1よりも大きい場合に、下り起点から下り終点までの区間を対象下り区間Bとして特定する。図8においては、区間3〜区間5が対象下り区間Bとして特定されている例が示されている。
ところが、区間8〜区間10(トンネル区間)においては、走行予定経路の実際の標高(トンネル内の道路の標高、一点鎖線参照)と、ナビゲーション装置130の地図情報の標高(地勢の標高、すなわちトンネルの上方の山肌の標高、実線参照)よりも低くなる。その結果、区間8〜区間10(トンネル区間)においては、ナビゲーション装置130の地図情報から取得される勾配情報(先読み区間情報に含まれる勾配情報)の精度が低くなってしまう。
この点に鑑み、HV−ECU100は、ナビゲーション装置130から受信したトンネルフラグFTを用いて先読み区間にトンネル区間が含まれるか否かを判定し、トンネル区間が含まれる場合には、トンネル区間の勾配情報の大きさを、地図情報から取得された勾配情報の大きさよりも小さい「0」にする。これにより、勾配情報の精度が低いトンネル区間が対象下り区間Bと誤判定され難くなるため、下りSOC制御が不必要に実行されてしまうことが抑制される。
<トンネル区間の特定>
上述のように、HV−ECU100は、ナビゲーション装置130から受信したトンネルフラグFTを用いて、走行予定経路における先読み区間にトンネル区間が含まれるか否かを判定する。
ところが、「トンネルフラグFT」は、上述のように、現在位置から所定距離D1(たとえば5km程度)だけ先の位置にトンネルがあるか否かだけを示す情報であり、先読み区間情報に含まれる各区間とは対応付けられていない。そのため、トンネル区間を特定するためのパラメータとして「トンネルフラグFT」のみが用いられる場合、車両システムの起動(以下「システム起動」ともいう)時あるいは走行予定経路の変更(以下「リルート」ともいう)時において、システム起動後あるいはリルート後、しばらくの間は、近場のトンネルを見落としてしまうことが懸念される。
図9は、システム起動直後あるいはリルート直後にトンネルフラグFTを用いてトンネルがあると判定される状態の一例を模式的に示す図である。システム起動時あるいはリルート時においては、走行予定経路が新たに計画されるため、それまでのトンネルフラグFTの履歴は破棄され、システム起動後あるいはリルート後に新たに受信されたトンネルフラグFTを用いてトンネル区間の有無が新たに判定されることになる。したがって、図9に示すように、システム起動直後あるいはリルート直後において、トンネルフラグFTを用いただけでは、現在位置から所定距離D1だけ先の位置にトンネルがあることを特定できるが、所定距離D1だけ先の位置よりも手間の近場にトンネルがあるか否かを特定することができない。
上記の点に鑑み、本実施の形態によるHV−ECU100は、システム起動時あるいはリルート時(走行予定経路の計画時)から所定期間が経過するまでは、トンネルフラグFTに加えて、「近距離トンネルフラグFTS」を用いて、トンネル区間を特定する。
「近距離トンネルフラグFTS」は、走行予定経路における現在位置から所定距離D2だけ先の位置にトンネルがあるか否かを示す情報である。ここで、所定距離D2は、所定距離D1よりも短い値(たとえば、D1=5km程度である場合にはD2=1km程度)に設定される。すなわち、近距離トンネルフラグFTSは、トンネルフラグFTに比べて、現在位置により近い位置におけるトンネルの有無を示す情報である。以下では、近距離トンネルフラグFTSが「オン状態」である場合に現在位置から所定距離D2だけ先の位置にトンネルがあることを示し、近距離トンネルフラグFTSが「オフ状態」である場合に現在位置から所定距離D2だけ先の位置にトンネルがないことを示すものとする。
ナビゲーションECU132は、トンネルフラグFTと同様、HV−ECU100からの求めに応じて「近距離トンネルフラグFTS」をHV−ECU100へ出力するように構成される。そして、HV−ECU100は、システム起動時あるいはリルート時(走行予定経路の計画時)から所定期間が経過するまでは、トンネルフラグFTおよび近距離トンネルフラグFTSを用いてトンネル区間を特定する。
図10は、システム起動直後あるいはリルート直後にトンネルフラグFTおよび近距離トンネルフラグFTSを用いてトンネルがあると判定される状態の一例を模式的に示す図である。上述のように、HV−ECU100は、システム起動時あるいはリルート時から所定期間が経過するまでは、トンネルフラグFTおよび近距離トンネルフラグFTSを用いてトンネル区間を特定する。図10に示す例では、トンネルフラグFTおよび近距離トンネルフラグFTSの双方がオン状態である。この場合、HV−ECU100は、トンネルフラグFTを用いて所定距離D1だけ先の位置にトンネルがあることを認識することができるだけでなく、近距離トンネルフラグFTSを用いて現在位置により近い所定距離D2だけ先の位置にトンネルがあることを認識することができる。そのため、トンネルフラグFTだけを用いる場合に比べて、現在位置により近い位置のトンネルの有無を特定することができる。その結果、走行予定経路を計画した直後のトンネルの見落としを軽減することができる。
<勾配設定の処理フロー>
図11は、勾配Giの設定処理の手順の一例を示すフローチャートである。なお、このフローチャートに示される一連の処理は、たとえば車両システムの作動中に所定時間毎に繰り返し実行される。
HV−ECU100は、車両システムの起動直後であるか否かを判定する(ステップS300)。HV−ECU100は、前回サイクルでは停止状態であった車両システムが、今回サイクルで作動状態に切り替わった場合に、車両システムの起動直後であると判定する。
ステップS300において車両システムの起動直後であると判定されない場合(ステップS300においてNO)、HV−ECU100は、ナビゲーション装置130からの情報に基づいてリルート直後であるか否かを判定する(ステップS301)。
ステップS300において車両システムの起動直後であると判定された場合(ステップS300においてYES)、あるいはステップS301においてリルート直後であると判定された場合(ステップS301においてYES)、HV−ECU100は、経過フラグTigを「0」に設定する(ステップS302)。「経過フラグTig」は、車両システム起動あるいはリルートによる走行予定経路の計画時から所定期間が経過したか否かを示すフラグである。本実施の形態においては、経過フラグTigが「0」である場合、走行予定経路の計画時から所定期間が経過していないことを示し、経過フラグTigが「1」である場合、走行予定経路の計画時から所定期間が経過していることを示すものとする。その後、HV−ECU100は、ステップS310へと処理を移行する。
ステップS300において車両システムの起動直後であると判定されず(ステップS300においてNO)、かつステップS301においてリルート直後であると判定されない場合(ステップS301においてNO)、HV−ECU100は、ステップS302の処理を実行することなく、ステップS310へと処理を移行する。
次いで、HV−ECU100は、経過フラグTigが「0」であるか否かを判定する(ステップS310)。
ステップS310において経過フラグTigが「0」であると判定されない場合(ステップS310においてNO)、ナビゲーション装置130から取得されるトンネルフラグFTの状態が変化したか否かを判定する(ステップS311)。
ステップS311においてトンネルフラグFTの状態が変化したと判定された場合(ステップS311においてYES)、HV−ECU100は、第1トンネル抽出処理を実行する(ステップS312)。第1トンネル抽出処理は、トンネルフラグFTを用いてトンネル区間を特定する処理である。
図12は、第1トンネル抽出処理(図11のステップS312)の手順の一例を示すフローチャートである。
HV−ECU100は、トンネルフラグFTがオフ状態からオン状態に変化したか否かを判定する(ステップS312A)。
ステップS312AにおいてトンネルフラグFTがオフ状態からオン状態に変化したと判定された場合(ステップS312AにおいてYES)、HV−ECU100は、現在位置からトンネル開始位置までの距離(以下「開始距離Dsta」ともいう)を「所定距離D1」に設定する(ステップS312B)とともに、トンネル抽出状態を「開始のみ」に設定する(ステップS312C)。なお、この「開始のみ」は、トンネル開始位置のみが特定され、トンネル終了位置は特定されていない状態を示す。その後、HV−ECU100は、図11のステップS320へと処理を移行する。
一方、ステップS312AにおいてトンネルフラグFTがオフ状態からオン状態に変化したと判定されない場合(ステップS312AにおいてNO)、すなわちトンネルフラグFTがオン状態からオフ状態に変化した場合、HV−ECU100は、現在位置からトンネル終了位置までの距離(以下「終了距離Dend」ともいう)を「所定距離D1」に設定する(ステップS312D)とともに、トンネル抽出状態を「終了まで」に設定する(ステップS312E)。なお、この「終了まで」は、トンネル開始位置およびトンネル終了位置が特定されている状態を示す。その後、HV−ECU100は、図11のステップS320へと処理を移行する。
図11に戻って、ステップS310において経過フラグTigが「0」であると判定されると(ステップS310においてYES)、HV−ECU100は、第2トンネル抽出処理を実行する(ステップS314)。第2トンネル抽出処理は、トンネルフラグFTに加えて、近距離トンネルフラグFTSを用いて、トンネル区間を特定する処理である。
図13は、第2トンネル抽出処理(図11のステップS314)の手順の一例を示すフローチャートである。
HV−ECU100は、トンネルフラグFTがオン状態であるか否かを判定する(ステップS314A)とともに、近距離トンネルフラグFTSがオン状態であるか否かを判定する(ステップS314B,S314E)。
トンネルフラグFTがオン状態であると判定されず(ステップS314AにてNO)、かつ近距離トンネルフラグFTSがオン状態であると判定されない場合(ステップS314BにてNO)、HV−ECU100は、トンネルがないと判定する(ステップS314C)。
トンネルフラグFTがオン状態であると判定されず(ステップS314AにてNO)、かつ近距離トンネルフラグFTSがオン状態であると判定された場合(ステップS314BにてYES)、HV−ECU100は、開始距離Dstaおよび終了距離Dendをそれぞれ所定距離D2および所定距離D1に設定するとともに、トンネル抽出状態を「終了まで」に設定する(ステップS314D)。
トンネルフラグFTがオン状態であると判定され(ステップS314AにてYES)、かつ近距離トンネルフラグFTSがオン状態であると判定されない場合(ステップS314EにてNO)、HV−ECU100は、開始距離Dstaを所定距離D1に設定するとともに、トンネル抽出状態を「開始のみ」に設定する(ステップS314F)。
トンネルフラグFTがオン状態であると判定され(ステップS314AにてYES)、かつ近距離トンネルフラグFTSがオン状態であると判定された場合(ステップS314EにてYES)、HV−ECU100は、開始距離Dstaを所定距離D2に設定するとともに、トンネル抽出状態を「開始のみ」に設定する(ステップS314G)。
図14は、トンネルフラグFTおよび近距離トンネルフラグFTSの状態と、開始距離Dsta、終了距離Dend、トンネル抽出状態の設定内容との対応関係を示す図である。第2トンネル抽出処理ではトンネルフラグFTに加えて近距離トンネルフラグFTSを用いてトンネル区間を特定するため、図14に示すように、所定距離D1に対応する位置よりも、現在位置に近い所定距離D2に対応する位置におけるトンネルの有無を特定することができる。その結果、車両システムの起動直後あるいはリルート直後においても、近場のトンネルの見落としを軽減することができる。
図11に戻って、第2トンネル抽出処理(S314)を実行した後、HV−ECU100は、車両システム起動あるいはリルートによる走行予定経路の計画時から所定期間が経過しているか否かを判定する(ステップS315)。この「所定期間」は、たとえば、車両システム起動あるいはリルートによる走行予定経路の計画時から車両が所定距離D1だけ走行するに要する時間に基づいて設定される。
走行予定経路の計画時から所定期間が経過している場合(ステップS315にてYES)、HV−ECU100は、経過フラグTigを「1」に設定する(ステップS316)。その後、HV−ECU100は、ステップS320へと処理を移行する。一方、走行予定経路の計画時から所定期間が経過していない場合(ステップS315にてNO)、HV−ECU100は、ステップS316の処理を実行することなく、ステップS320へと処理を移行する。
次いで、HV−ECU100は、探索対象区間iを「0」に初期化する(ステップS320)。なお、本処理においては、探索対象区間iは、勾配Giの設定対象区間を意味する。
次いで、HV−ECU100は、現在位置から探索対象区間iの終点までの距離Dを算出する(ステップS325)。具体的には、HV−ECU100は、距離Dの前回値に、現在の探索対象区間iの距離Di(先読み情報に含まれる区間iの距離情報)を加えた値を、距離Dの今回値として算出する。
次いで、HV−ECU100は、トンネル抽出状態が「開始のみ」であるのか否かを判定する(ステップS330)。
ステップS330においてトンネル抽出状態が「開始のみ」であると判定された場合(ステップS330においてYES)、HV−ECU100は、現在位置から探索対象区間iの終点までの距離Dが開始距離Dstaよりも大きいか否かを判定する(ステップS331)。そして、距離Dが開始距離Dstaよりも大きい場合(ステップS331においてYES)、HV−ECU100は、探索対象区間iの勾配Giを「0」に設定してメモリに記憶する(ステップS333)。その後、HV−ECU100は、探索対象区間iの番号を1つインクリメントし(ステップS340)、探索対象区間iが先読み区間数よりも大きいか否かを判定する(ステップS345)。探索対象区間iが先読み区間数以下であると(ステップS345においてNO)、HV−ECU100は、ステップS325へと処理を戻し、探索対象区間iが先読み区間数よりも大きくなるまで、ステップS325、S330、S331、S333、S340、S345の処理を繰り返す。これらの一連の処理によって、トンネル抽出状態が「開始のみ」である場合には、トンネル開始位置から先読み区間の終点までの区間がトンネル区間と特定され、特定されたトンネル区間の勾配Giが「0」に設定されることになる。
一方、ステップS330においてトンネル抽出状態が「終了まで」と判定された場合(ステップS330においてNO)、HV−ECU100は、現在位置から探索対象区間iの終了までの距離Dが開始距離Dstaよりも大きく、かつ終了距離Dendよりも小さいか否かを判定する(ステップS332)。そして、距離Dが開始距離Dstaよりも大きくかつ終了距離Dendよりも小さい場合(ステップS332においてYES)、HV−ECU100は、探索対象区間iの勾配Giを「0」に設定してメモリに記憶する(ステップS333)。その後、HV−ECU100は、探索対象区間iの番号を1つインクリメントし(ステップS340)、探索対象区間iが先読み区間数よりも大きいか否かを判定する(ステップS345)。探索対象区間iが先読み区間数以下であると(ステップS345においてNO)、HV−ECU100は、ステップS325へと処理を戻し、探索対象区間iが先読み区間数よりも大きくなるまで、ステップS325、S330、S332、S333、S340、S345の処理を繰り返す。これらの一連の処理によって、トンネル抽出状態が「終了まで」である場合には、先読み区間におけるトンネル開始位置からトンネル終了位置までの区間がトンネル区間と特定され、特定されたトンネル区間の勾配Giが「0」に設定されることになる。
なお、ステップS331において距離Dが開始距離Dstaよりも大きいと判定されない場合(ステップS331においてNO)、あるいはステップS332において距離Dが開始距離Dstaよりも大きくかつ終了距離Dendよりも小さいと判定されない場合(ステップS332においてNO)、探索対象区間iにトンネル区間が含まれないことになるため、HV−ECU100は、探索対象区間iの勾配Giを、地図情報から取得された勾配情報の大きさに設定してメモリに記憶する(ステップS334)。
ステップS345において探索対象区間iが先読み区間数よりも大きいと判定されると(ステップS345においてYES)、HV−ECU100は、ステップS350〜S370にて、開始距離Dstaおよび終了距離Dendの更新処理を行なう。
具体的には、HV−ECU100は、開始距離Dstaが正の値であるか否かを判定する(ステップS350)。また、HV−ECU100は、終了距離Dendが正の値であるか否かを判定する(ステップS355)。
開始距離Dstaが正の値である場合(ステップS350においてYES)、車両1がトンネル開始位置を通過する前であるため、HV−ECU100は、開始距離Dstaおよび終了距離Dendを更新する(ステップS360)。
開始距離Dstaが正の値ではなく(ステップS350においてNO)、かつ終了距離Dendが正の値である場合(ステップS355においてYES)、車両1がトンネル区間を走行中であるため、HV−ECU100は、開始距離Dstaおよび終了距離Dendを更新する(ステップS360)。
ステップS360において、HV−ECU100は、開始距離Dstaの前回値から単位時間(1演算サイクル)あたりの車両1の移動距離ΔDを減算した値を開始距離Dstaの今回値として算出するとともに、終了距離Dendの前回値から上記の移動距離ΔDを減算した値を終了距離Dendの今回値として算出する。
次いで、HV−ECU100は、終了距離Dendが負の値であるか否かを判定する(ステップS365)。
終了距離Dendが負の値である場合(ステップS365にてYES)、車両1がトンネル終了位置を通過した後であるため、HV−ECU100は、開始距離Dstaおよび終了距離Dendをそれぞれ0に設定するとともに、トンネル抽出状態を「対象なし」に設定する(ステップS370)。
終了距離Dendが負の値でない場合(ステップS365にて)、車両1がトンネル終了位置を通過する前であるため、HV−ECU100は、ステップS370の処理を実行することなくリターンへと処理を移行する。
なお、ステップS311においてトンネルフラグFTの状態が変化したと判定されない場合(ステップS311においてNO)、HV−ECU100は、先読み区間情報が更新されたか否かを判定する(ステップS313)。そして、先読み区間情報が更新されたと判定された場合(ステップS313においてYES)、HV−ECU100は、ステップS320へと処理を移行し、ステップS320以降の処理を実行する。そうでない場合(ステップS313においてNO)、HV−ECU100は、ステップS350へと処理を移行し、ステップS350以降の処理を実行する。
以上のように、本実施の形態によるHV−ECU100は、システム起動あるいはリルートによる走行予定経路の計画時から所定期間が経過するまでは、トンネルフラグFTに加えて、近距離トンネルフラグFTSを用いてトンネル区間を特定する。そのため、所定距離D1だけ先の位置にトンネルがあるか否かだけでなく、所定距離D1よりも短い所定距離D2だけ先の位置にトンネルがあるか否かを判定することが可能になる。その結果、トンネルフラグFTだけを用いる場合に比べて、より近い位置のトンネルの有無を特定することができる。その結果、走行予定経路を計画した直後のトンネルの見落としを軽減することができる。
そして、HV−ECU100は、トンネル区間が特定された場合には、特定されたトンネル区間の勾配情報の大きさを地図情報から取得された勾配情報の大きさよりも小さい「0」に設定する。これにより、対象下り区間Bの探索処理を行なう際に、トンネル区間が対象下り区間Bと誤判定され難くなるため、下りSOC制御が不必要に実行されてしまうことが抑制される。
なお、上述の実施の形態においては、主に下りSOC制御について詳しく説明したが、本開示を上りSOC制御に適用する場合には、下りSOC制御で説明した内容を上りSOC制御に適する内容に適宜変更すればよい。具体的には、下りSOC制御で説明した「下り」を上りSOC制御においては「上り」に読み替えるとともに、下りSOC制御の目標SOCの値Snを、上りSOC制御においては「値Sh」(図5参照)に読み替え、下りSOC制御で用いる各種の閾値を、上りSOC制御に適する値に変更すればよい。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本開示の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。