図1は、本実施例の電池システムの構成を示す図である。図1に示す電池システムは、例えば、車両に搭載することができる。車両としては、例えば、PHV(Plug-in Hybrid Vehicle)やEV(Electric Vehicle)がある。
PHVでは、車両を走行させるための動力源として、後述する組電池に加えて、エンジン又は燃料電池といった他の動力源を備えている。また、PHVでは、外部電源からの電力を用いて組電池を充電することができる。さらに、エンジンを備えたPHVでは、エンジンによって生成された運動エネルギを電気エネルギに変換することにより、この電気エネルギを用いて、組電池を充電することができる。
EVは、車両の動力源として、組電池だけを備えており、外部電源からの電力供給を受けて、組電池を充電することができる。外部電源とは、車両の外部において、車両とは別に設置された電源(例えば、商用電源)である。
組電池(蓄電装置に相当する)100は、直列に接続された複数の単電池(蓄電素子に相当する)10を有する。単電池10としては、ニッケル水素電池やリチウムイオン電池といった二次電池を用いることができる。また、二次電池の代わりに、電気二重層キャパシタを用いることができる。
単電池10の数は、組電池100の要求出力などに基づいて、適宜設定することができる。本実施例の組電池100では、すべての単電池10が直列に接続されているが、組電池100には、並列に接続された複数の単電池10が含まれていてもよい。監視ユニット200は、組電池100の端子間電圧を検出したり、各単電池10の端子間電圧を検出したりし、検出結果をECU(Electric Control Unit)300に出力する。監視ユニット200の具体的な構成については後述する。
温度センサ201は、組電池100(単電池10)の温度を検出し、検出結果をECU300に出力する。ここで、温度センサ201は、組電池100の一箇所に設けることもできるし、組電池100のうち、互いに異なる複数の箇所に設けることもできる。複数の温度センサ201によって検出された温度が互いに異なるときには、例えば、複数の検出温度の中央値を、組電池100の温度として用いることができる。
電流センサ202は、組電池100に流れる電流を検出し、検出結果をECU300に出力する。本実施例では、組電池100を放電しているときに電流センサ202によって検出された電流値を正の値としている。また、組電池100を充電しているときに電流センサ202によって検出された電流値を負の値としている。
本実施例では、組電池100の正極端子と接続された正極ラインPLに電流センサ202を設けているが、電流センサ202は、組電池100に流れる電流を検出できればよく、電流センサ202を設ける位置は適宜設定することができる。例えば、組電池100の負極端子と接続された負極ラインNLに電流センサ202を設けることができる。なお、複数の電流センサ202を用いることもできる。
ECU(コントローラに相当する)300は、メモリ301を有しており、メモリ301は、ECU300が所定の処理(例えば、本実施例で説明する処理)を行うための各種の情報を記憶している。また、ECU300は、タイマ302を有しており、タイマ302は、時間の計測に用いられる。本実施例では、メモリ301およびタイマ302が、ECU300に内蔵されているが、メモリ301およびタイマ302の少なくとも一方を、ECU300の外部に設けることもできる。
正極ラインPLには、システムメインリレーSMR−Bが設けられている。システムメインリレーSMR−Bは、ECU300からの制御信号を受けることにより、オンおよびオフの間で切り替わる。負極ラインNLには、システムメインリレーSMR−Gが設けられている。システムメインリレーSMR−Gは、ECU300からの制御信号を受けることにより、オンおよびオフの間で切り替わる。
システムメインリレーSMR−Gには、システムメインリレーSMR−Pおよび電流制限抵抗203が並列に接続されている。ここで、システムメインリレーSMR−Pおよび電流制限抵抗203は、直列に接続されている。システムメインリレーSMR−Pは、ECU300からの制御信号を受けることにより、オンおよびオフの間で切り替わる。電流制限抵抗203は、組電池100を負荷(具体的には、後述するインバータ204)と接続するときに、突入電流が流れることを抑制するために用いられる。
組電池100をインバータ204と接続するとき、ECU300は、まず、システムメインリレーSMR−Bをオフからオンに切り替えるとともに、システムメインリレーSMR−Pをオフからオンに切り替える。これにより、電流制限抵抗203に電流が流れることになる。
次に、ECU300は、システムメインリレーSMR−Gをオフからオンに切り替えた後に、システムメインリレーSMR−Pをオンからオフに切り替える。これにより、組電池100およびインバータ204の接続が完了し、図1に示す電池システムは、起動状態(Ready−On)となる。ECU300には、車両のイグニッションスイッチのオン/オフに関する情報が入力され、ECU300は、イグニッションスイッチがオフからオンに切り替わることに応じて、電池システムを起動する。
一方、イグニッションスイッチがオンからオフに切り替わったとき、ECU300は、システムメインリレーSMR−B,SMR−Gをオンからオフに切り替える。これにより、組電池100およびインバータ204の接続が遮断され、電池システムは、停止状態(Ready−Off)となる。
インバータ204は、組電池100から出力された直流電力を交流電力に変換し、交流電力をモータ・ジェネレータ205に出力する。モータ・ジェネレータ205としては、例えば、三相交流モータを用いることができる。モータ・ジェネレータ205は、インバータ204から出力された交流電力を受けて、車両を走行させるための運動エネルギを生成する。モータ・ジェネレータ205によって生成された運動エネルギを、車輪に伝達することにより、車両を走行させることができる。
車両を減速させたり、停止させたりするとき、モータ・ジェネレータ205は、車両の制動時に発生する運動エネルギを電気エネルギ(交流電力)に変換する。インバータ204は、モータ・ジェネレータ205が生成した交流電力を直流電力に変換し、直流電力を組電池100に出力する。これにより、組電池100は、回生電力を蓄えることができる。
本実施例では、組電池100をインバータ204に接続しているが、これに限るものではない。具体的には、組電池100を昇圧回路に接続するとともに、昇圧回路をインバータ204に接続することができる。昇圧回路を用いることにより、組電池100の出力電圧を昇圧することができる。また、昇圧回路は、インバータ204から組電池100への出力電圧を降圧することができる。
正極ラインPLおよび負極ラインNLには、充電器206が接続されている。具体的には、充電器206は、システムメインリレーSMR−Bおよびインバータ204を接続する正極ラインPLと、システムメインリレーSMR−Gおよびインバータ204を接続する負極ラインNLとに接続されている。充電器206には、インレット(コネクタ)207が接続されている。
充電器206およびラインPL,NLを接続するラインには、充電リレーRch1,Rch2が設けられている。充電リレーRch1,Rch2は、ECU300からの制御信号を受けることにより、オンおよびオフの間で切り替わる。
インレット207には、不図示の外部電源と接続されたプラグ(コネクタ)が接続される。プラグをインレット207に接続することにより、外部電源からの電力を、充電器206を介して組電池100に供給することができる。これにより、外部電源を用いて、組電池100を充電することができる。外部電源が交流電力を供給するとき、充電器206は、外部電源からの交流電力を直流電力に変換し、直流電力を組電池100に供給する。ECU300は、充電器206の動作を制御することができる。
外部電源の電力を組電池100に供給するとき、充電器206は、電圧を変換することもできる。ここで、外部電源の電力を組電池100に供給して、組電池100を充電することを外部充電という。本実施例の電池システムでは、充電リレーRch1,Rch2およびシステムメインリレーSMR−B,SMR−Gがオンであるときに、外部電源からの電力が組電池100に供給されるようになっている。外部充電を行うとき、組電池100には一定の電流を供給することができ、定電流の下で、組電池100を充電することができる。
外部電源の電力を組電池100に供給するシステムは、図1に示すシステムに限るものではない。例えば、充電器206は、システムメインリレーSMR−B,SMR−P,SMR−Gを介さずに、組電池100と接続することができる。具体的には、充電器206は、組電池100およびシステムメインリレーSMR−Bを接続する正極ラインPLと、組電池100およびシステムメインリレーSMR−Gを接続する負極ラインNLとに対して、充電リレーRch1,Rch2を介して接続することができる。この場合には、充電リレーRch1,Rch2をオフからオンに切り替えることにより、外部充電を行うことができる。
本実施例では、プラグをインレット207に接続することにより、外部充電を行うようにしているが、これに限るものではない。具体的には、いわゆる非接触方式の充電システムを用いることにより、外部電源の電力を組電池100に供給することができる。非接触方式の充電システムでは、電磁誘導や共振現象を利用することにより、ケーブルを介さずに電力を供給することができる。非接触方式の充電システムとしては、公知の構成を適宜採用することができる。
本実施例では、充電器206が車両に搭載されているが、これに限るものではない。すなわち、充電器206は、車両の外部において、車両とは別に設置されていてもよい。この場合には、ECU300および充電器206の間の通信によって、ECU300は、充電器206の動作を制御することができる。
次に、監視ユニット200の構成について説明する。図2に示すように、監視ユニット200は、組電池100を構成する単電池10の数だけ、電圧監視IC(Integrated Circuit)200aを有しており、各電圧監視IC200aは、各単電池10に並列に接続されている。電圧監視IC200aは、単電池10の電圧を検出し、検出結果をECU300に出力する。
本実施例では、各単電池10に対して電圧監視IC200aを設けているが、これに限るものではない。例えば、組電池100を構成する複数の単電池10を、複数の電池ブロックに分けたとき、各電池ブロックに対して電圧監視IC200aを設けることができる。すなわち、各電池ブロックに対して電圧監視IC200aを並列に接続することができる。
ここで、各電池ブロックは、直列に接続された複数の単電池10によって構成されており、複数の電池ブロックが直列に接続されることにより、組電池100が構成される。この場合において、電圧監視IC200aは、電池ブロックの電圧を検出し、検出結果をECU300に出力する。なお、各電池ブロックには、並列に接続された複数の単電池10を含めることもできる。
本実施例の電池システムでは、外部充電を行うときに、組電池100の満充電容量を算出することができる。具体的には、外部充電を開始するときの組電池100のSOCと、外部充電を終了するときの組電池100のSOCとを算出する。SOCおよびOCV(Open Circuit Voltage)は、対応関係にあるため、この対応関係を予め求めておけば、組電池100のOCVから組電池100のSOCを特定することができる。
例えば、組電池100がインバータ204と接続されていない状態において、組電池100に微弱な電流を流し、監視ユニット200によって検出された組電池100の電圧値を、組電池100のOCVと見なすことができる。組電池100に微弱な電流を流せば、組電池100の内部抵抗による電圧降下量を発生し難くすることができ、組電池100のOCVを取得しやすくなる。すなわち、ECU300は、監視ユニット200によって検出された電圧値に基づいて、組電池100のSOCを推定することができる。
次に、外部充電を開始してから終了するまでの間において、組電池100に流れる電流値を積算する。組電池100を充電するときの電流値は、電流センサ202を用いて取得することができる。すなわち、ECU300は、電流センサ202によって検出された電流値に基づいて、外部充電を行っている間の電流積算値を算出することができる。
ECU300は、下記式(1)に基づいて、組電池100の満充電容量を算出することができる。
上記式(1)において、fccは、組電池100の満充電容量である。Iは、外部充電を行うときに、組電池100に流れる電流値である。外部充電を行うときには、一定の充電電流を組電池100に流すことができるため、電流値を一定とすることができる。SOC_sは、外部充電を開始するときの組電池100のSOCであり、SOC_eは、外部充電を終了したときの組電池100のSOCである。
上記式(1)によれば、組電池100のSOCが変化する量と、SOCが変化する間の電流積算値とを取得すれば、組電池100の満充電容量を算出することができる。このため、外部充電を行っていないときであっても、組電池100の満充電容量を算出することができる。
ここで、外部充電を行うときに、組電池100の満充電容量を算出することにより、満充電容量の推定精度を向上させることができる。外部充電を行っていないときには、組電池100に流れる電流値が変動しやすいため、電流積算値を精度良く取得しにくくなる。一方、外部充電を行うときには、定電流で組電池100が充電されるため、電流値の変動を抑制した状態において、電流積算値を精度良く取得することができる。電流積算値を精度良く取得できれば、組電池100の満充電容量を精度良く推定することができる。
外部充電が頻繁に行われれば、外部充電が行われるたびに、組電池100の満充電容量を算出することができ、現在の組電池100における満充電容量を把握することができる。一方、外部充電が頻繁に行われなければ、組電池100の満充電容量を算出する頻度が低下し、現在の組電池100における満充電容量を把握し難くなる。
ここで、組電池100(単電池10)は、時間の経過とともに劣化することが知られており、組電池100(単電池10)の劣化が進行すると、組電池100の満充電容量も低下してしまう。例えば、単電池10がリチウムイオン二次電池であるときには、リチウムを析出させる劣化状態において、組電池100の満充電容量が低下してしまう。
上述したように、組電池100の満充電容量を算出する機会が低下すると、直近に算出された満充電容量と、現在の満充電容量とが異なることがある。すなわち、組電池100の劣化に伴う満充電容量の低下によって、直近に算出された満充電容量は、現在の満充電容量よりも大きくなってしまうことがある。本実施例において、算出された満充電容量を、満充電容量(学習値)といい、現在の組電池100における実際の満充電容量を、満充電容量(真値)という。
ここで、満充電容量(学習値)は、組電池100のSOCを推定するために用いられる。具体的には、組電池100に流れる電流値を積算した値(電流積算値)と、満充電容量(学習値)とを用いて、組電池100のSOCを推定することができる。すなわち、下記式(2)に基づいて、組電池100のSOCを算出することができる。
上記式(2)において、ΔSOCは、組電池100を充放電したときのSOCの変化量であり、ΣIは、組電池100を充放電している間の電流積算値である。fccは、満充電容量(学習値)である。現在の組電池100におけるSOCは、組電池100の充放電を開始する前のSOCに対して、上記式(2)に示す変化量ΔSOCを加算することによって求めることができる。ここで、満充電容量(学習値)が、満充電容量(真値)よりも大きいと、満充電容量(学習値)から推定される組電池100のSOCは、実際のSOCとは異なってしまう。
例えば、組電池100を放電したときには、放電容量[Ah]および満充電容量に基づいて、SOCの変化量ΔSOCを算出することができる。そして、組電池100を放電する前のSOCから変化量ΔSOCを減算すれば、組電池100を放電した後のSOCを求めることができる。ここで、組電池100を放電する前のSOCは、組電池100を放電する前のOCVから推定することができる。
ここで、満充電容量(真値)から算出されるSOCの変化量は、満充電容量(学習値)から算出されるSOCの変化量よりも大きくなる。このため、満充電容量(真値)を用いて算出される放電後のSOCは、満充電容量(学習値)を用いて算出される放電後のSOCよりも低くなってしまう。
したがって、満充電容量(学習値)を用いて算出されるSOCが下限値SOCに到達したときには、満充電容量(真値)を用いて算出されるSOCが下限値SOCよりも低くなってしまうことがある。この場合には、組電池100が過放電状態となってしまう。
そこで、本実施例では、後述するように、組電池100の状態が特定の条件を満たしているときに、実際のSOCが推定したSOCよりも低いと判別し、組電池100の充放電制御で用いられるSOCを低下させるようにしている。充放電制御で用いられるSOCを低下させておくことにより、実際のSOCが下限値SOCに到達する前に、放電制御によって、組電池100を放電させなくすることができ、組電池100が過放電状態となることを抑制することができる。
組電池100の充放電制御で用いられるSOCを低下させる処理について、図3および図4に示すフローチャートを用いて説明する。図3および図4に示す処理は、ECU300によって実行される。
ステップS101において、ECU300は、電流センサ202を用いて組電池100の電流値を検出するとともに、監視ユニット200を用いて組電池100の電圧値を検出する。電池システムが起動しているとき、組電池100の充放電に応じて、電流値および電圧値が変動する。ここで、複数のタイミングにおいて、電流値および電圧値の関係を取得すれば、図5に示すプロットが得られる。
図5において、縦軸は電圧値であり、横軸は電流値である。図5に示す座標系において、電流値および電圧値の関係を複数プロットすれば、近似直線Lを算出することができる。ここで、近似直線Lが縦軸と交差するときの電圧値、言い換えれば、電流値が0[A]であるときの電圧値は、組電池100のOCVとなる。このため、ECU300は、電流センサ202および監視ユニット200の検出結果に基づいて、組電池100のOCVを算出(推定)することができる。
ステップS102において、ECU300は、ステップS101の処理で算出したOCVに基づいて、組電池100のSOC(SOC(A)という)を算出する。OCVおよびSOCの対応関係を予め求めておけば、この対応関係を用いることにより、ステップS101の処理で算出したOCVに対応するSOC(A)を特定することができる。ここで、SOC(A)は、実測SOCに相当する。
ステップS103において、ECU300は、ステップS101の処理でOCVを算出したときの電流値の分散が所定値以上であるか否かを判別する。電流値の分散が大きくなるほど、図5に示す近似直線Lを求めやすくなるが、電流値の分散が小さくなるほど、近似直線Lを求め難くなる。近似直線Lを求め難い状況において、近似直線Lを求めたとしても、近似直線Lから特定される組電池100のOCVは、実際の組電池100におけるOCVからずれやすくなってしまう。すなわち、OCVの推定精度が低下してしまう。
そこで、本実施例では、OCVの推定精度を確保するために、電流値の分散を許容する下限値として、上述した所定値を設定している。分散に関する所定値は、OCVの推定精度を考慮して、予め定めることができ、所定値に関する情報は、メモリ301に予め記憶することができる。電流値の分散が所定値以上であるとき、ECU300は、ステップS104の処理を行う。一方、電流値の分散が所定値よりも小さいとき、ECU300は、図3および図4に示す処理を終了する。
ステップS104において、ECU300は、満充電容量(学習値)から推定される組電池100のSOC(bsocという)と、ステップS102の処理で算出されたSOC(A)との差分が、所定値ΔSOC_th以上であるか否かを判別する。ここで、bsoc(基準SOCに相当する)は、組電池100の充放電制御で用いられるSOCである。
SOC(A)がbsocよりも低いときには、bsocが下限値SOCに到達する前に、SOC(A)が下限値SOCに到達しやすくなってしまう。そこで、SOC(A)がbsocよりも低いときには、後述するように、bsocを低下させるようにしている。
組電池100の充放電を制御する上では、bsocが第1下限値SOC_min1に到達したときに、組電池100の過放電を抑制するために、組電池100を放電させなくすることができる。例えば、組電池100を放電させないとき、ECU300は、組電池100の出力を許容する上限電力を0[kW]に設定することができる。組電池100の放電を制御するときには、組電池100の出力電力が上限電力以下となるように、組電池100の放電が制御される。このため、上限電力を0[kW]に設定すれば、組電池100の放電が行われないことになる。
ここで、エンジンを備えた車両では、bsocが第1下限値SOC_min1に到達したときに、エンジンの出力から生成された電気エネルギを用いて、組電池100を充電することができる。このように、組電池100を積極的に充電することにより、組電池100が過放電状態となることを回避することができる。
第1下限値SOC_min1は、第2下限値SOC_min2よりも高い値に設定される。第2下限値SOC_min2とは、組電池100の充放電を行う上で、組電池100に要求されるSOCの下限値である。例えば、複数の単電池10に拘束荷重を与えた構成では、拘束荷重を確保することができるSOCの下限値を、第2下限値SOC_min2とすることができる。
ここで、複数の単電池10を所定方向に並べて電池スタックを構成し、所定方向における電池スタックの両端部に配置された一対のエンドプレートを互いに近づく方向に変位させれば、複数の単電池10に対して拘束荷重を与えることができる。単電池10に拘束荷重を与えておくことにより、充放電に伴う単電池10の膨張や収縮を抑制することなどができ、単電池10の入出力特性が低下してしまうことを抑制することができる。
bsocおよびSOC(A)の差分が、第1下限値SOC_min1および第2下限値SOC_min2の差分以上であるときには、SOC(A)が第1下限値SOC_min1に到達しやすい状態となっている。すなわち、bsocおよびSOC(A)の差分が上述した関係にあるときには、bsocが第1下限値SOC_min1に到達する前に、SOC(A)が第2下限値SOC_min2に到達してしまうおそれがある。
なお、bsocおよびSOC(A)の差分が、第1下限値SOC_min1および第2下限値SOC_min2の差分よりも小さいときには、bsocが第1下限値SOC_min1に到達しても、SOC(A)が第2下限値SOC_min2に到達してしまうこともない。
ステップS104の処理で用いられる所定値ΔSOC_thは、第1下限値SOC_min1および第2下限値SOC_min2の差分に相当する。第1下限値SOC_min1および第2下限値SOC_min2は、組電池100の入出力特性などを考慮して予め設定されるため、これらの下限値SOC_min1,SOC_min2に基づいて、所定値ΔSOC_thを設定することができる。
SOC(A)は、組電池100を充放電しているときに算出されたSOCであり、組電池100を放電しているときには、分極に伴う電圧降下量によって、SOC(A)は、実際の組電池100におけるSOCよりも低くなりやすい。すなわち、実際の組電池100におけるSOCは、bsocおよびSOC(A)の間に位置していることになる。
本実施例では、bsocおよびSOC(A)の差分が所定値ΔSOC_th以上であるときには、後述するように、bsocを低下させるようにしている。すなわち、bsocおよびSOC(A)の差分が所定値ΔSOC_th以上であるとき、ECU300は、ステップS105の処理を行う。一方、bsocおよびSOC(A)の差分が所定値ΔSOC_thよりも小さいとき、ECU300は、図3および図4に示す処理を終了する。
ステップS105において、ECU300は、ステップS102の処理で算出したSOC(A)が第2下限値SOC_min2よりも低いか否かを判別する。上述したように、組電池100の入出力特性などを確保するためには、組電池100のSOCを第2下限値SOC_min2よりも高い状態に維持する必要がある。
ここで、上述したように、SOC(A)は、実際の組電池100におけるSOCよりも低くなりやすいため、SOC(A)が第2下限値SOC_min2よりも低いか否かを判別することにより、実際の組電池100におけるSOCが第2下限値SOC_min2に到達しているか否かを判別することができる。そして、SOC(A)が第2下限値SOC_min2よりも低いときには、実際の組電池100におけるSOCが第2下限値SOC_min2に到達しやすいため、後述するように、bsocを低下させる必要がある。
SOC(A)が第2下限値SOC_min2よりも低いとき、ECU300は、ステップS106の処理を行う。一方、SOC(A)が第2下限値SOC_min2よりも高いとき、ECU300は、bsocを低下させる必要が無いと判別し、図3および図4に示す処理を終了する。
ステップS106において、ECU300は、温度センサ201によって検出された温度Tb_minが閾値Tb_thよりも高いか否かを判別する。ここで、図5に示す電流値および電圧値の関係を取得しているとき、ECU300は、温度センサ201を用いて、組電池100の温度を検出している。この間、検出温度が変化するときには、最も低い検出温度が上述した温度Tb_minとなる。なお、検出温度が変化していないときには、この温度が上述した温度Tb_minとなる。
組電池100の温度が低下するほど、図5に示す関係から組電池100のOCVを推定するときに、推定誤差が大きくなりやすくなる。組電池100の温度が低下するほど、組電池100の抵抗値が増加しやすくなっており、図5に示す電流値および電圧値の関係を取得しているときに、組電池100の温度が一次的に低下すると、電流値および電圧値の関係が図5に示す近似直線Lから大きく外れてしまう。
このような状態で、近似直線Lを算出すると、近似直線Lから特定されるOCVが、実際のOCVからずれやすくなってしまい、OCVの推定誤差が大きくなりやすい。OCVの推定誤差が大きくなるほど、ステップS102の処理において、SOC(A)を推定するときの誤差が大きくなってしまう。
そこで、本実施例では、OCV又はSOC(A)の推定誤差を許容できる温度範囲の下限値を予め設定し、この下限値を閾値Tb_thとしている。閾値Tb_thは、OCV又はSOC(A)の推定誤差を許容する観点に基づいて、適宜設定することができ、閾値Tb_thに関する情報は、メモリ301に記憶しておくことができる。
検出温度Tb_minが閾値Tb_thよりも高いとき、ECU300は、ステップS101の処理で算出されたOCVの推定精度を確保できると判別し、ステップS107の処理を行う。一方、検出温度Tb_minが閾値Tb_thよりも低いとき、ECU300は、ステップS101の処理で算出されたOCVの推定精度を確保できないと判別し、図3および図4に示す処理を終了する。
ステップS107において、ECU300は、bsocを低下させる処理が行われているか否かを判別する。具体的には、ECU300は、後述する減少量(現在値)ΔSOC_nowが0以下であるか否かを判別する。bsocを低下させるときには、後述するように、減少量(目標値)を設定し、bsocが減少量(目標値)の分だけ低下するように、bsocを徐々に低下させる。減少量とは、bsocを低下させる量であり、減少量(現在値)とは、bsocを徐々に低下させるときに、現在の時刻に対応した減少量である。
減少量(現在値)ΔSOC_nowが0よりも大きいときには、bsocを低下させる処理が行われていることになるため、後述するように、bsocを低下させる処理を開始させる必要がない。このため、ステップS107の処理では、減少量(現在値)ΔSOC_nowの値を確認することにより、bsocを低下させる処理が行われているか否かを判別するようにしている。
減少量(現在値)ΔSOC_nowが0以下であるとき、ECU300は、ステップS108の処理を行う。一方、減少量(現在値)ΔSOC_nowが0よりも大きいとき、ECU300は、図3および図4に示す処理を終了する。
ステップS108において、ECU300は、減少量(目標値)ΔSOC_tagを算出する。具体的には、ECU300は、下記式(3)に基づいて、減少量(目標値)ΔSOC_tagを算出する。
上記式(3)において、SOC_min1は、上述した第1下限値である。上記式(3)によれば、減少量(目標値)ΔSOC_tagの分だけ、bsocを低下させると、bsocは、第1下限値SOC_min1に到達しやすくなる。bsocが第1下限値SOC_min1に到達すれば、上述したように、組電池100の放電が行われなくなるため、組電池100の過放電を抑制することができる。
また、bsocが第1下限値SOC_min1に到達したときに、エンジンの出力を用いて、組電池100を充電するようにすれば、実際の組電池100におけるSOCを上昇させることができ、組電池100が過放電状態となることを回避することができる。
ステップS109において、ECU300は、減少量(現在値)ΔSOC_nowを算出する。bsocを徐々に低下させるときには、減少量(現在値)ΔSOC_nowを徐々に増加させることになる。ここで、減少量(目標値)ΔSOC_tagを算出した後においては、できるだけ短い時間でbsocを減少量(目標値)ΔSOC_tagの分だけ低下させることが好ましい。この点を考慮して、減少量(現在値)ΔSOC_nowを徐変させる量を予め設定しておくことができる。
ステップS110において、ECU300は、ステップS109の処理で算出した減少量(現在値)ΔSOC_nowを、補正係数kを用いて補正する。具体的には、ECU300は、ステップS109の処理で算出した減少量(現在値)ΔSOC_nowに補正係数kを乗算する。
補正係数kは、図6に示すように、組電池100のSOCが変化することに応じて変化している。ここで、補正係数kは、0から1までの範囲内で設定される。補正係数kが1であれば、ステップS109の処理で算出した減少量(現在値)ΔSOC_nowがそのまま用いられる。また、補正係数kが1よりも小さいときには、ステップS109の処理で算出した減少量(現在値)ΔSOC_nowよりも小さい値が用いられる。補正係数kが0であるときには、ステップS109の処理で算出した減少量(現在値)ΔSOC_nowが用いられず、bsocを低下させる処理が行われないことになる。
組電池100のSOCが低下しているときには、補正係数kを1に維持しておけばよい。一方、組電池100のSOCが上昇したときにも、補正係数kを1に維持すると、以下に説明する不具合が生じてしまう。
組電池100は、複数の単電池10によって構成されており、複数の単電池10において、各単電池10のSOCがばらつくことがある。また、上述したように、組電池100を複数の電池ブロックによって構成したときには、複数の電池ブロックにおいて、各電池ブロックのSOCがばらつくことがある。
このように、複数の単電池10(又は電池ブロック)におけるSOCには、最も高いSOCと、最も低いSOCとが含まれる。ここで、組電池100のSOCが上昇したときにも、補正係数kを1に維持すると、bsocを低下させていることによって、組電池100の充電が積極的に許容されてしまう。組電池100のSOCが上昇したときにも、組電池100の更なる充電を許容してしまうと、最も高いSOCを示す単電池10が過充電状態となってしまうおそれがある。
図7を用いて、最も高いSOCを示す単電池10が過充電状態となってしまうことについて説明する。図7において、縦軸はSOCであり、横軸は時間である。
図7に示すbb_max,bb_minは、組電池100に含まれる単電池10のSOCを示す。bb_maxは、最も高いSOCを示す単電池10におけるSOCの挙動を示し、bb_minは、最も低いSOCを示す単電池10におけるSOCの挙動を示す。図7には、bsocおよびSOC(A)の挙動も示している。
図7において、時刻t1では、上述したように、bsocを低下させる処理が開始される。これにより、bsocを、第1下限値SOC_min1まで低下させることができる。このとき、SOC(A)は、第2下限値SOC_min2に到達していることがある。bsocが第1下限値SOC_min1に到達すると、組電池100の放電が行われなくなり、組電池100の充電が積極的に許容されることになる。
このため、組電池100のSOCは、上昇しやすくなる。ここで、エンジンの出力を用いて、組電池100を充電するようにすれば、組電池100のSOCを上昇させることができる。図7において、時刻t1以降では、組電池100の充電が許容されるため、bb_max,bb_min,bsocおよびSOC(A)は、上昇することになる。
ここで、補正係数kが1に維持されたままでは、bb_maxが上昇し続け、bb_maxが上限値SOC_maxよりも高くなってしまうおそれがある。上限値SOC_maxは、組電池100の充電を制御するときにおけるSOCの上限値である。すなわち、単電池10のSOCが上限値SOC_maxに到達したときには、組電池100の充電が行われなくなる。
そこで、本実施例では、図6に示すように、bb_maxが閾値SOC_thよりも高くなったときには、補正係数kを1から低下させるようにしている。図7では、時刻t2において、補正係数kを1から低下させている。
補正係数kを低下させれば、bsocを低下させる量を減らすことができる。また、補正係数kが0に到達すれば、bsocを低下させる処理が行われなくなる。このように、補正係数kを低下させれば、bsocの低下を抑制でき、bsocの低下に伴って組電池100の充電が積極的に行われてしまうことを防止することができる。これにより、組電池100に含まれる特定の単電池10(SOCが高い側の単電池10)が過充電状態となってしまうことを抑制することができる。
ステップS111において、ECU300は、ステップS110の処理で補正された減少量(現在値)ΔSOC_nowを用いて、bsocを補正する。具体的には、ECU300は、下記式(4)に基づいて、bsocを補正する。bsocを補正したときには、補正後のbsocに基づいて、組電池100の充放電が制御される。
上記式(4)の左辺に示すbsocは、補正後のSOCであり、上記式(4)の右辺に示すbsocは、補正前のSOCである。すなわち、補正前のbsocは、満充電容量(学習値)に基づいて算出される組電池100のSOCである。
ステップS112において、ECU300は、ステップS108の処理で算出した減少量(目標値)ΔSOC_tagが、ステップS109の処理で算出した減少量(現在値)ΔSOC_nowよりも大きいか否かを判別する。減少量(現在値)ΔSOC_nowが減少量(目標値)ΔSOC_tagよりも小さいときには、減少量(現在値)ΔSOC_nowが減少量(目標値)ΔSOC_tagに到達していないことになる。
このため、減少量(現在値)ΔSOC_nowが減少量(目標値)ΔSOC_tagよりも小さいとき、ECU300は、ステップS113において、減少量(現在値)ΔSOC_nowの変化速度を上昇させる。減少量(現在値)ΔSOC_nowの変化速度を上昇させることにより、減少量(現在値)ΔSOC_nowが減少量(目標値)ΔSOC_tagに到達するまでの時間を短縮することができる。
一方、減少量(現在値)ΔSOC_nowが減少量(目標値)ΔSOC_tagよりも大きいときには、減少量(現在値)ΔSOC_nowが減少量(目標値)ΔSOC_tagに既に到達していることになる。このため、ECU300は、図3および図4に示す処理を終了する。
次に、bsocを低下させた後の処理について、図8を用いて説明する。図8に示す処理は、ECU300によって実行される。図8に示す処理を行うときには、上述したように、組電池100の充電が許容されており、組電池100のSOCは、上昇しやすくなっている。ここで、エンジンの出力を用いて組電池100を充電するときには、組電池100のSOCが上昇することになる。
ステップS201において、ECU300は、補正係数kを用いて、減少量(現在値)ΔSOC_nowを補正する。上述したように、組電池100の充電が積極的に許容され、組電池100のSOCが上昇すると、図6に示すように、補正係数kが低下し始める。補正係数kが低下することにより、減少量(現在値)ΔSOC_nowも低下することになる。
ステップS202において、ECU300は、ステップS201の処理で補正された減少量(現在値)ΔSOC_nowを用いて、bsocを補正する。具体的には、ECU300は、上記式(4)に基づいて、bsocを補正する。ここで、補正後の減少量(現在値)ΔSOC_nowは、組電池100のSOCが上昇することに応じて減少するため、補正後のbsocは、補正前のbsocに近づくことになる。
図9には、本実施例で説明した処理を行ったときにおいて、補正前のbsoc_rer、補正後のbsoc、補正係数kおよび減少量(現在値)ΔSOC_nowの変化を示している。ここで、図9に示す減少量(現在値)ΔSOC_nowは、補正係数kを用いて補正された後の値である。
図9において、時刻t1は、図3に示すステップS103〜ステップS107の処理で規定する条件を満たした時刻である。これにより、時刻t1において、bsocを低下させる処理が開始される。
bsocを低下させる処理では、減少量(目標値)ΔSOC_tagの分だけ、bsocを低下させる。まず、時刻t1において、減少量(目標値)ΔSOC_tagが算出され、減少量(現在値)ΔSOC_nowが上昇し始める。ここで、組電池100のSOC、言い換えれば、複数の単電池10のSOCのうち、最も高いSOC(図7に示すbb_max)は、図6に示す閾値SOC_thよりも低くなっているため、補正係数kが1に設定されている。減少量(現在値)ΔSOC_nowが上昇すれば、補正後のbsocは、補正前のbsocよりも低下し始める。
時刻t2において、減少量(現在値)ΔSOC_nowが減少量(目標値)ΔSOC_tagに到達すると、補正後のbsocは、第1下限値SOC_min1に到達する。ここで、時刻t2において、補正前のbsocおよび補正後のbsocの差分は、減少量(目標値)ΔSOC_tagとなる。
補正後のbsocが第1下限値SOC_min1に到達すると、組電池100の放電が行われなくなり、組電池100の充電が積極的に許容されることになる。これにより、時刻t2以降においては、組電池100のSOC、言い換えれば、bsocを上昇させることができる。
補正後のbsocが第1下限値SOC_min1に到達しているときには、実際の組電池100のSOCが第2下限値SOC_min2に近づいていることがある。このため、組電池100の充電を許容することにより、実際の組電池100のSOCが第2下限値SOC_min2よりも低下してしまうことを抑制することができる。
ここで、補正後のbsocが第1下限値SOC_min1に到達したときに、エンジンの出力を用いて、組電池100を充電する場合には、時刻t2以降において、組電池100のSOC、言い換えれば、bsocが上昇することになる。組電池100のSOCが上昇し、SOC(図7に示すbb_max)が図6に示すSOC_thよりも高くなると、補正係数kが1よりも低下し始める。図9では、時刻t3において、補正係数kが低下し始める。
補正係数kが低下すれば、減少量(現在値)ΔSOC_nowも低下することになる。すなわち、減少量(現在値)ΔSOC_nowから算出される補正後のbsocは、補正前のbsocに近づくことになる。図9では、時刻t3から時刻t4の間において、補正後のbsocが補正前のbsocに近づくことになる。時刻t4では、補正係数kが0に設定され、減少量(現在値)ΔSOC_nowも0に設定される。これにより、補正後のbsocは、補正前のbsocと等しくなる。
本実施例によれば、満充電容量(学習値)が満充電容量(真値)よりも大きくなっているときであっても、bsocを低下させることにより、組電池100の放電を行わせないようにしている。これにより、実際の組電池100のSOCが、bsocよりも低い状態であっても、組電池100の放電が許容されて、実際の組電池100のSOCが第2下限値SOC_min2よりも低下してしまうことを防止することができる。
このように、満充電容量を算出する機会が少なく、満充電容量(学習値)が満充電容量(真値)よりも大きくなってしまっても、組電池100の実際のSOCが、第2下限値SOC_min2よりも低くなってしまうことを防止することができる。
本実施例では、ステップS103からステップS107の処理で説明した、すべての条件を満たしているときに、bsocを低下させているが、これに限るものではない。すなわち、ステップS103からステップS107の処理で説明した条件のうち、少なくとも1つの条件を満たしているときに、bsocを低下させることもできる。