以下、本発明を実施するための最良の形態について図面を参照しながら説明する。なお、以下の説明においては、キャパシタからなる蓄電装置を二次電池からなる主電源と併用した、急加速が可能なハイブリッド車に適用した場合について述べる。
(実施の形態1)
図1は、本発明の実施の形態1における蓄電装置の蓄電素子を直列接続した際のブロック回路図である。図2は、本発明の実施の形態1における蓄電装置の蓄電素子両端電圧値の測定フローチャートである。図3は、本発明の実施の形態1における蓄電装置の異常両端電圧値の推定フローチャートである。図4は、本発明の実施の形態1における蓄電装置の蓄電素子を直並列接続した際のブロック回路図である。なお、図1と図4の太線は電力系配線を、細線は信号系配線をそれぞれ示す。
図1において、蓄電装置11は主電源15と負荷17との間に接続されている。主電源15は二次電池であり、負荷17は車両駆動用のモータである。従って、通常のモータ駆動時は主電源15の電力を負荷17に供給するが、急加速時等で負荷17が短時間に大電力を消費する時には蓄電装置11から負荷17に電力が供給される構成となる。
蓄電装置11は次の構成を有する。まず、主電源15の出力には、その電圧Vbを検出する主電源電圧検出回路21が接続されている。主電源電圧検出回路21の電力系配線(太線)の入力側と出力側は同電圧になるよう接続されている。
主電源電圧検出回路21と負荷17の間には切替スイッチ23が接続されている。切替スイッチ23はオン、オフの2つの状態を有するものであり、本実施の形態1ではアノードを主電源電圧検出回路21に、カソードを負荷17に接続したダイオードを用いた。
切替スイッチ23と負荷17の接続点には充放電回路25が接続されている。充放電回路25には電力を蓄える複数の蓄電素子モジュール29が接続されている。従って、充放電回路25によって蓄電素子モジュール29の充放電制御が行われる。
各蓄電素子モジュール29は複数の蓄電素子31を直列に接続した構成を有する。なお、蓄電素子31には電気二重層キャパシタを用いた。また、複数の蓄電素子モジュール29も直列に接続している。これらにより、負荷17を駆動する電圧を得ている。
各蓄電素子31の両端には、蓄電素子モジュール29毎に蓄電素子電圧検出回路33がそれぞれ接続されている。蓄電素子電圧検出回路33はマルチプレクサと出力電圧比例変換回路(いずれも図示せず)から構成される。従って、蓄電素子電圧検出回路33は蓄電素子31同士の接続点の電圧を順次切り替えて測定する機能を有する。なお、前記出力電圧比例変換回路は、測定した電圧をマイクロコンピュータからなるスレーブ側制御回路35に内蔵されたADコンバータが読み込める電圧に比例変換する機能を有する。
従って、各蓄電素子電圧検出回路33はそれぞれスレーブ側制御回路35に接続されていることになるので、スレーブ側制御回路35から蓄電素子電圧検出回路33に蓄電素子選択信号Cselを送信することで、蓄電素子電圧検出回路33が電圧の測定対象となる蓄電素子31を選択し、得られた電圧を比例変換してスレーブ側制御回路35に蓄電素子電圧信号Vi(i=1〜n+1、nは各蓄電素子モジュール29に内蔵した蓄電素子31の数)を送信することで電圧Viを求めることができる。
各スレーブ側制御回路35はスレーブ側送受信回路37にそれぞれ接続されている。スレーブ側送受信回路37は、スレーブ側制御回路35と後述する制御部との間でデータ送受信を行う機能を有し、スレーブ側送受信回路37で受信したデータはスレーブ側データ入力信号Sinとしてスレーブ側制御回路35に送信され、スレーブ側制御回路35が送信したデータはスレーブ側データ出力信号Soutとしてスレーブ側送受信回路37が受信する。
ここまでで説明した蓄電素子モジュール29、蓄電素子電圧検出回路33、スレーブ側制御回路35、およびスレーブ側送受信回路37で構成される蓄電部39は図1に示すように複数個が設けられている。なお、蓄電部39には従来のように信号有無検出回路を設けてもよいが、図1では省略している。
各蓄電部39は、前記したように蓄電素子モジュール29が直列になるように接続されるとともに、スレーブ側送受信回路37同士も信号系配線で接続されている。さらに、この信号系配線は、制御部41に接続されたマスタ側送受信回路43にも接続されている。なお、制御部41は蓄電装置11の全体を制御するためにマイクロコンピュータで構成されている。
これらのことから、各スレーブ側送受信回路37とマスタ側送受信回路43は前記信号系配線で接続されており、これにより各種のスレーブ側データ信号Sdataの送受信が行われる。なお、制御部41とマスタ側送受信回路43の間はマスタ側データ入力信号Minやマスタ側データ出力信号Moutによりデータのやり取りが行われる。また、制御部41とマスタ側送受信回路43からなる制御装置45には、従来のように絶縁回路電源を設けてもよいが、図1では省略している。
以上のことから、蓄電素子電圧検出回路33と制御部41は、スレーブ側制御回路35、スレーブ側送受信回路37、およびマスタ側送受信回路43を介して信号系配線により接続されていることになる。さらに、制御部41には主電源電圧検出回路21と充放電回路25が接続されている。従って、制御部41は主電源電圧検出回路21から主電源15の電圧信号Vbを読み込むとともに、蓄電素子31の充放電を制御するために、充放電回路25に制御信号contを送信する。また、制御部41は車両用制御回路(図示せず)とデータ信号Adataの送受信を行うことで互いに交信する機能を有している。
次に、このような蓄電装置11の動作について説明する。
まず、通常の蓄電装置11の動作を述べる。運転者がイグニションキー(図示せず)をオンにすると、蓄電装置11が起動する。この際、各蓄電素子モジュール29を満充電にするために、制御部41は充放電回路25を充電制御するよう制御信号contを送信する。これにより、充放電回路25は充電動作を開始する。この際、充放電回路25の入力側電圧は主電源15の電圧Vbより低くなるので、切替スイッチ23が自動的にオンになり充放電回路25に電力が供給される。なお、充電が完了すれば充放電回路25は各蓄電素子31の充電電圧を保持するように動作し続ける。
その後、車両使用時の加速等により負荷17が大電流を消費したとする。この場合、主電源15からの電力だけではこのような瞬発的な大電流を供給できない。そこで、制御部41は大電流消費により主電源電圧検出回路21で測定した主電源15の電圧Vbの低下を検出すると、充放電回路25を放電制御するように制御信号contを送信する。これにより、充放電回路25は放電動作を開始する。この際、主電源15の電圧Vbより全蓄電素子モジュール29の満充電電圧の方が高くなるので、切替スイッチ23がオフになる。その結果、蓄電素子モジュール29の電力が主電源15に供給されることなく、負荷17にのみ有効に供給される。これにより、蓄電素子31は急速充放電特性に優れるため、負荷17に瞬発的な大電流を供給することができる。
その後、全蓄電素子モジュール29の電圧は経時的に低下していくので、切替スイッチ23がオフになっている間に回復した主電源15の電圧Vbの方がいずれ高くなる。その時には切替スイッチ23がオンになるので、負荷17へは主電源15から電力が供給される。この際、制御部41は主電源電圧検出回路21によって電圧Vbの回復を検出すると、充放電回路25を再度充電制御するように制御信号contを送信する。これにより、充放電回路25は充電動作を開始し、全蓄電素子モジュール29から放電された電力を補う。その結果、主電源15の電力により全蓄電素子モジュール29が満充電され、次の加速等に備える。
このような動作を繰り返すことにより、全蓄電素子モジュール29の電力は補助的に負荷17に供給されることになる。
次に、蓄電装置11における各蓄電素子31の過充電や過放電の監視を行うための蓄電素子両端電圧値の測定動作、および異常両端電圧値の推定動作についてそれぞれ図2、図3のフローチャートを用いて説明する。なお、制御部41はメインルーチン(図示せず)から必要に応じて様々なサブルーチンを実行することにより全体の動作を行うソフトウエア構成としているので、図2に示すフローチャートをサブルーチンの形態で示した。また、図2では制御部41のフローチャートと、それに対応して動作する部分に限定したスレーブ側制御回路35のフローチャートを同時に示す。また、図3のフローチャートは図2のフローチャートから実行されるサブルーチンであるので、図3もサブルーチンの形態で示した。
まず、車両の起動時には制御部41のメインルーチンにて、起動フラグKFと各蓄電素子31の異常カウンタF(j,i)を全てクリアする初期設定を行う。ここで、起動フラグKFは、起動直後が0で、起動後に一度でも異常両端電圧値の推定動作を行った場合は1になる。これにより、起動フラグKFの値を判断することにより、起動直後か否かを区別することができる。また、異常カウンタF(j,i)は、番号j,iで決定される蓄電素子31の連続異常回数を示すものである。これは、蓄電素子電圧検出回路33を介して同一の蓄電素子31における両端電圧値の異常値を、既定回数(本実施の形態1では3回とした)まで連続して求めた時に、その蓄電素子31が異常であると判断するために用いる。従って、両端電圧値において正常値が得られると0に、異常値が得られると異常カウンタF(j,i)を1づつ加算するようにしている。なお、異常カウンタF(j,i)は配列であり、番号jは1〜m(mは蓄電部39の個数で本実施の形態1では10個とした)、番号iは1〜n(nは蓄電素子モジュール29内の蓄電素子31の個数で本実施の形態1では10個とした)の範囲を取る。
この初期設定を行った状態で、制御部41は定期的に図2のサブルーチンを実行して、各蓄電素子31の過充電や過放電の監視を行う。図2のサブルーチンが実行されると、まず各蓄電部39に対して蓄電素子両端電圧値DVi(i=1〜n)の測定要求を送信する(ステップ番号S13)。これはマスタ側送受信回路43から信号系配線を介し、スレーブ側データ信号Sdataとして各蓄電部39のスレーブ側送受信回路37に送信され、さらにスレーブ側制御回路35に伝達される。なお、スレーブ側データ信号Sdataはほとんど同時に各スレーブ側送受信回路37に送信されるので、以下に述べる各蓄電素子31の両端電圧値DViの測定を同時に行っている。これにより、蓄電素子モジュール29毎に両端電圧値DViの測定が並行して行われるので、高速な測定が可能となる。
S13により発せられた両端電圧値DViの測定要求を受信すると、各スレーブ側制御回路35の動作に割り込みが発生し、図2のS13から点線矢印で示したスレーブ側制御回路35の割り込みルーチンが実行される。なお、この割り込みルーチンにおいて、実行直後の割り込み禁止処理や実行終了後の割り込み許可処理は省略している。以後説明する割り込みルーチンにおいても、これらの処理は省略する。
割り込みルーチンが実行されると、まず番号iに1を代入した後(S101)、蓄電素子電圧検出回路33を介して蓄電素子31の電圧Viを読み込み、スレーブ側制御回路35に内蔵されたメモリ(図示せず)に記憶する(S103)。なお、電圧Viは図1における蓄電素子31の両端に示したV1、V2、・・・、Vn+1における電圧である。次に、番号iが1であるか否かを判断する(S105)。番号iが1であれば(S105のYes)、蓄電素子31の両端電圧値DViを計算するだけの電圧Viが測定できていないので、後述するS111にジャンプする。一方、番号iが1でなければ(S105のNo)、両端電圧値DVi−1をDVi−1=Vi−Vi−1により計算し、メモリに記憶する(S107)。この式により両端電圧値DVi−1を計算するので、iが1の時(S105のYes)はi−1=0になり計算できない。ゆえに、i=1ならばS111にジャンプしている。
ここでS107に戻り、S107の計算が終了すれば、番号iがn+1と等しいか否かを判断する(S109)。等しければ(S109のYes)、全ての蓄電素子31の両端電圧値DViを求め終わったので、割り込みルーチンを終了する。一方、等しくなければ(S109のNo)、番号iを1だけ加算して次の番号とし(S111)、S103に戻って両端電圧値DViを求める動作を繰り返す。
この割り込みルーチンは単に電圧Viを読み込んで両端電圧値DViを計算する動作を繰り返すだけなので、実行に要する時間はほぼ一定である。しかも、各蓄電部39において同時に並行して実行されているので、全ての両端電圧値DViを求め終わるまでの時間(測定終了時間)は既知である。そこで、制御部41のフローチャートに戻って、制御部41は測定終了時間が経過したか否かを判断する(S15)。もし、経過していなければ(S15のNo)、S15に戻り経過するまで待つ。一方、経過していれば(S15のYes)、各蓄電部39はそれぞれの両端電圧値DViを求め終わっているので、以下のようにして全両端電圧値DViを各蓄電部39から読み込む動作を行う。
まず、蓄電部39を識別する番号jに1を代入する(S17)。次に、番号jの蓄電部39に対して蓄電素子両端電圧値DVi(i=1〜n)の出力要求を送信する(S19)。これにより、番号jの蓄電部39に内蔵されたスレーブ側制御回路35の動作に割り込みが発生し、図2のS19から点線矢印で示したスレーブ側制御回路35の割り込みルーチンが実行される。
これにより、スレーブ側制御回路35は既にS107で計算し記憶した蓄電素子両端電圧値DViを送信する(S121)。その結果、図2のS121から点線矢印で示した制御部41のS21において蓄電素子両端電圧値DViを受信する。次に、DV1〜DVnの全ての蓄電素子両端電圧値の受信が完了したか否かを判断する(S23)。もし、受信が完了していれば(S23のYes)、後述するS37にジャンプする。一方、受信が未完了であれば(S23のNo)、既定時間が経過したか否かを判断する(S25)。ここで、全ての蓄電素子両端電圧値を受信し終わる時間は既知であるので、その時間にバラツキ誤差等の余裕を加えた時間を既定時間とした。従って、正常に受信されていれば、必ず既定時間以内に番号jの蓄電部39に内蔵された全ての蓄電素子両端電圧値を受信し終わっていることになる。ゆえに、もし既定時間が経過していなければ(S25のNo)、まだ全ての蓄電素子両端電圧値を受信し終わっていないので、S21に戻り受信動作を継続する。
一方、既定時間が経過すれば(S25のYes)、全ての蓄電素子両端電圧値を受信できなかったので、例えば外的ノイズ等の影響で一時的に受信が途絶えたり、信号系配線の断線等により受信ができない状態にあることが考えられる。そこで、一時的に受信できなかったのか、断線等の故障により受信できないのかを区別するために、制御部41はもう一度、番号jの蓄電部39に対して蓄電素子両端電圧値DViの出力要求を送信する(S27)。これにより、S27から点線矢印で示したスレーブ側制御回路35の割り込みルーチン(S121)が実行される。その結果、蓄電素子両端電圧値DViが送信され、図2のS121から点線矢印で示した制御部41のS29で蓄電素子両端電圧値を受信する。次に、DV1〜DVnの全ての蓄電素子両端電圧値の受信が完了したか否かを判断する(S31)。もし、受信が完了していれば(S31のYes)、S21では一時的に受信できなかったと考えられる。ゆえに、S29で受信した蓄電素子両端電圧値を正常受信値として、後述するS37にジャンプする。一方、受信が未完了であれば(S31のNo)、既定時間が経過したか否かを判断し(S33)、もし既定時間が経過していなければ(S33のNo)、S29に戻り受信動作を継続する。一方、既定時間が経過すれば(S33のYes)、再び全ての蓄電素子両端電圧値を受信できなかったので、信号系配線の断線や送受信回路系の故障等が想定される。従って、これ以上蓄電装置11を使用し続けることができないので、制御部41は異常信号をデータ信号Adataとして車両側制御回路に出力し(S35)、図2のフローチャートを終了する。この動作により、車両側制御回路は蓄電装置11の使用を禁止するとともに、故障を運転者に警告し修理を促す。なお、本実施の形態1では蓄電素子両端電圧値の受信を2回まで行っているが、これはさらに多くの回数であってもよい。また、前記異常信号には、異常のある蓄電素子31の識別情報(例えば番号jとi)が含まれていてもよいし、蓄電素子31の単品を交換できない構成の場合は異常のある蓄電素子モジュール29の識別情報(例えば番号j)が含まれていてもよい。これらの場合、車両用制御回路はどの蓄電素子31、または蓄電素子モジュール29が異常であるかを知ることができるので、これを修理者に示すことで修理のサービス性や信頼性が高まる。
ここで、S23やS31に戻って、正常に蓄電素子両端電圧値DVi(i=1〜n)の受信が完了すれば(S23やS31のYes)、受信した蓄電素子両端電圧値DViを配列変数である今回測定両端電圧値V(j,i)に順次代入する(S37)。この際、もし蓄電装置11に蓄電されている全体電圧値が制御上必要な場合は、図1の電圧V1を別途読み込めばよい。次に、番号jと蓄電部39の個数mを比較する(S39)。もし、jとmが等しくなければ、番号jを次の蓄電部39の番号にするために、jを1だけ加算(S41)してS19に戻り、次の蓄電部39の蓄電素子両端電圧値DViを受信する動作を順次行う。一方、j=mであれば(S39のYes)、次にいずれかの蓄電部39の蓄電素子両端電圧値DViが全て異常値であるか否かを調べる。これにより、もし任意の蓄電部39における蓄電素子両端電圧値DViが全て異常値であれば、その蓄電部39に内蔵した各蓄電素子31が全て異常である以外に、蓄電素子電圧検出回路33、スレーブ側制御回路35、またはスレーブ側送受信回路37の少なくともいずれかが異常である場合が想定される。このような蓄電部39をそのまま使用し続けると蓄電装置11の信頼性が損なわれる可能性があるので、この段階で蓄電部39の異常を判断している。この動作は、具体的には以下の通りである。
まず、番号jに最初の蓄電部39を示す1を代入する(S43)。次に、番号iに蓄電素子モジュール29内の最初の蓄電素子31を示す1を代入し、異常両端電圧値個数TFをクリアする(以上、S45)。ここで、異常両端電圧値個数TFは番号jの蓄電部39において、何個の蓄電素子31が異常であったかを示すもので、TFが蓄電素子モジュール29内の蓄電素子31の個数nと等しければ、その蓄電部39は全ての蓄電素子両端電圧値が異常であるということになる。
次に、今回測定両端電圧値V(j,i)が異常値であるか否かを判断する(S47)。ここで、異常値は蓄電素子31が取り得る両端電圧値範囲(例えば0Vから蓄電素子31の上限耐電圧値3Vまで)を超える値であると定義する。もし、異常値でなければ(S47のNo)、後述するS51にジャンプする。一方、異常値であれば(S47のYes)、異常両端電圧値個数TFを1だけ加算する(S49)。
その後、番号iと蓄電素子モジュール29内の蓄電素子31の個数nを比較する(S51)。もし、両者が等しくなければ(S51のNo)、番号jの蓄電部39において、まだ各蓄電素子31の両端電圧値の異常判断が終わっていないので、番号iを1だけ加算(S53)してS47に戻り、次の蓄電素子両端電圧値の異常値判断を繰り返す。一方、番号iと蓄電素子モジュール29内の蓄電素子31の個数nが等しければ(S51のYes)、異常両端電圧値個数TFと蓄電素子モジュール29内の蓄電素子31の個数nを比較する(S55)。もし、両者が等しければ(S55のYes)、番号jの蓄電部39に内蔵した全蓄電素子31の両端電圧値が異常であることになるので、蓄電装置11をこれ以上使用できない。そこで、前記したS35にジャンプする。一方、異常両端電圧値個数TFと蓄電素子モジュール29内の蓄電素子31の個数nが等しくなければ(S55のNo)、蓄電素子31の両端電圧値が全て異常値であるわけではないので、次に番号jと蓄電部39の個数mを比較する(S57)。もし、両者が等しくなければ(S57のNo)、次の蓄電部39の異常を判断するために、番号jを1だけ加算(S59)してS45に戻り、以降の動作を繰り返す。一方、番号jと蓄電部39の個数mが等しければ(S57のYes)、全ての蓄電部39の異常判断が終了したので、次に蓄電素子31の両端電圧値に異常値があれば、それに対する推定値を計算するために、後述する異常両端電圧値推定サブルーチンを実行し(S61)、その後、全蓄電素子31に対する実測両端電圧値、または推定両端電圧値が求められたので、図2のフローチャートを終了する。なお、得られた前記両端電圧値により各蓄電素子31の過充電や過放電があれば、制御部41はメインルーチンを介してそれらを抑制するように充放電回路25を制御する等の動作を行うことで高信頼性を得ている。
次に、図3に示す異常両端電圧値推定サブルーチンの詳細について説明する。
図3のサブルーチンが実行されると、まず番号jに最初の蓄電部39を示す1を代入し、正常蓄電素子数kと合計値Sをクリアする(以上、S201)。ここで、正常蓄電素子数kは現在の全蓄電素子31の内、正常な両端電圧値を有するものの数をカウントする変数であり、合計値Sは正常な両端電圧値の合計値や、正常な両端電圧値の変化率(詳細は後述する)の合計値を一時的に計算するための変数である。
次に、起動フラグKFが0であるか否かを判断する(S203)。もし、KFが0でなければ(S203のNo)、起動後に既に異常両端電圧値の推定動作を行っていることになるので、全蓄電素子31における正常な両端電圧値の平均変化率を求めるために、後述するS251にジャンプする。
一方、起動フラグKFが0であれば(S203のYes)、起動後に初めて異常両端電圧値の推定動作を行うことになるので、全蓄電素子31における正常な両端電圧値の平均値を求める。なお、初めての異常両端電圧値の推定動作において前記平均値を求めるのは、前回測定、または推定した各蓄電素子31の両端電圧値がまだ無く、前記平均変化率を計算できないためである。
S203でYesならば、図3の異常両端電圧値の推定動作をこれから行うことになるので、起動フラグKFに1を代入する(S205)。これにより、次回から図3の動作を行う時はS203でNoになるので前記平均変化率の計算を行うようになる。
次に、番号iに蓄電素子モジュール29内の最初の蓄電素子31を示す1を代入する(S207)。その後、番号j,iで示される蓄電素子31の今回測定両端電圧値V(j,i)が初期異常値であるか否かを判断する(S209)。なお、初期異常値の定義はS47で述べた異常値の定義と同じである。もし、初期異常値であれば(S209のYes)、後述するS213にジャンプする。一方、初期異常値でなければ(S209のNo)、初期正常値の平均値を求めるために、合計値Sに今回測定両端電圧値V(j,i)の値を加算するとともに、正常蓄電素子数kを1だけ加算する(以上、S211)。
その後、番号iと蓄電素子モジュール29内の蓄電素子31の個数nを比較する(S213)。もし、両者が等しくなければ(S213のNo)、番号jの蓄電部39において、まだ各蓄電素子31の両端電圧値の異常判断が終わっていないので、番号iを1だけ加算(S215)してS209に戻り、次の蓄電素子両端電圧値の初期異常値判断を繰り返す。一方、番号iと蓄電素子モジュール29内の蓄電素子31の個数nが等しければ(S213のYes)、番号jと蓄電部39の個数mを比較する(S217)。もし、両者が等しくなければ(S217のNo)、次の蓄電部39の異常を判断するために、番号jを1だけ加算(S219)してS207に戻り、以降の動作を繰り返す。一方、番号jと蓄電部39の個数mが等しければ(S217のYes)、全ての蓄電部39の異常判断が終了したことになる。
次に、初期正常値を有する蓄電素子31の両端電圧値の平均値Hを求める。平均値HはH=S/kにより求められる。同時に、初期異常値を有する蓄電素子31の両端電圧値を平均値Hとする推定動作を行うために、番号jに最初の蓄電部39を示す1を代入する(以上、S221)。
次に、番号iに蓄電素子モジュール29内の最初の蓄電素子31を示す1を代入する(S223)。その後、番号j,iで示される蓄電素子31の今回測定両端電圧値V(j,i)が初期異常値であるか否かを判断する(S225)。もし、初期異常値でなければ(S225のNo)、後述するS229にジャンプする。一方、初期異常値であれば(S225のYes)、その蓄電素子31の両端電圧値の推定値を平均値Hとするために、今回測定両端電圧値V(j,i)にHを代入する。同時に異常のある蓄電素子31の両端電圧値を推定値とした回数をカウントするための異常カウンタF(j,i)に1を代入する(以上、S227)。
その後、前回測定両端電圧値VO(j,i)を更新するために、VO(j,i)に今回測定両端電圧値V(j,i)を代入する(S229)。なお、VO(j,i)もV(j,i)と同様に配列変数である。次に、番号iと蓄電素子モジュール29内の蓄電素子31の個数nを比較する(S231)。もし、両者が等しくなければ(S231のNo)、番号jの蓄電部39において、まだ各蓄電素子31の両端電圧値の異常判断が終わっていないので、番号iを1だけ加算(S233)してS225に戻り、次の蓄電素子両端電圧値の初期異常値判断を繰り返す。一方、番号iと蓄電素子モジュール29内の蓄電素子31の個数nが等しければ(S231のYes)、番号jと蓄電部39の個数mを比較する(S235)。もし、両者が等しくなければ(S235のNo)、次の蓄電部39の異常を判断するために、番号jを1だけ加算(S237)してS223に戻り、以降の動作を繰り返す。一方、番号jと蓄電部39の個数mが等しければ(S235のYes)、蓄電素子31の両端電圧値における全ての初期異常値を推定値に置換し終わったことになるので、図3のフローチャートを終了し、図2のフローチャートに戻る。
ここで、S203に戻り、起動フラグKFが0でなければ(S203のNo)、全蓄電素子31における正常な両端電圧値の平均変化率による異常値の推定動作を行う。具体的には、まず番号iに蓄電素子モジュール29内の最初の蓄電素子31を示す1を代入する(S251)。その後、番号j,iで示される蓄電素子31の今回測定両端電圧値V(j,i)が異常値であるか否かを判断する(S253)。もし、異常値であれば(S253のYes)、後述するS257にジャンプする。一方、異常値でなければ(S253のNo)、正常値の平均変化率を求めるために、番号j,iで示される蓄電素子31の両端電圧値の変化率、すなわち今回測定両端電圧値V(j,i)を前回測定両端電圧値VO(j,i)で除した値を合計値Sに加算するとともに、正常蓄電素子数kを1だけ加算する(以上、S255)。
その後、番号iと蓄電素子モジュール29内の蓄電素子31の個数nを比較する(S257)。もし、両者が等しくなければ(S257のNo)、番号jの蓄電部39において、まだ各蓄電素子31の両端電圧値の異常判断が終わっていないので、番号iを1だけ加算(S259)してS253に戻り、次の蓄電素子両端電圧値の異常値判断を繰り返す。一方、番号iと蓄電素子モジュール29内の蓄電素子31の個数nが等しければ(S257のYes)、番号jと蓄電部39の個数mを比較する(S261)。もし、両者が等しくなければ(S261のNo)、次の蓄電部39の異常を判断するために、番号jを1だけ加算(S263)してS251に戻り、以降の動作を繰り返す。一方、番号jと蓄電部39の個数mが等しければ(S261のYes)、全ての蓄電部39の異常判断が終了したことになる。
次に、正常値を有する蓄電素子31の両端電圧値の平均変化率Dを求める。平均変化率DはD=S/kにより求められる。同時に、異常値を有する蓄電素子31の両端電圧値を平均変化率Dから推定する動作を行うために、番号jに最初の蓄電部39を示す1を代入する(以上、S265)。
次に、番号iに蓄電素子モジュール29内の最初の蓄電素子31を示す1を代入する(S267)。その後、番号j,iで示される蓄電素子31の今回測定両端電圧値V(j,i)が異常値であるか否かを判断する(S269)。もし、異常値でなければ(S269のNo)、今回測定両端電圧値V(j,i)を正常に得ることができたので、異常カウンタF(j,i)を0にクリアし(S271)、後述するS279にジャンプする。一方、異常値であれば(S269のYes)、異常カウンタF(j,i)が2であるか否かを判断する(S273)。もし、異常カウンタF(j,i)が2であれば(S273のYes)、番号j,iの蓄電素子31は3回続けて異常値を有したことになるので、一時的なノイズ要因による異常値ではなく、その蓄電素子31の短絡、断線、あるいは劣化等による異常値である可能性が高い。このような蓄電素子31をそのまま使い続けると、蓄電装置11全体としての信頼性が低下するので、S273のYesの場合は制御部41から車両用制御回路へ異常信号を出力して(S275)、図3のフローチャートを終了する。異常信号の出力動作や、その後の車両用制御回路の動作はS35で説明した動作と同じである。
一方、異常カウンタF(j,i)が2でなければ(S273のNo)、番号j,iで示される蓄電素子31の両端電圧値が異常値であるので、その推定値を計算する。具体的には、番号j,iで示される蓄電素子31の前回測定両端電圧値VO(j,i)に、S265で求めた正常値を有する全蓄電素子31の両端電圧値の前回と今回における平均変化率Dを乗じた値を推定値として今回測定両端電圧値V(j,i)に代入する。これにより、異常値が推定値に置換される。これと同時に、推定値との置換がなされたので、異常カウンタF(j,i)を1だけ加算する(以上、S277)。
その後、前回測定両端電圧値VO(j,i)を更新するために、VO(j,i)に今回測定両端電圧値V(j,i)を代入する(S279)。次に、番号iと蓄電素子モジュール29内の蓄電素子31の個数nを比較する(S281)。もし、両者が等しくなければ(S281のNo)、番号jの蓄電部39において、まだ各蓄電素子31の両端電圧値の異常判断が終わっていないので、番号iを1だけ加算(S283)してS269に戻り、次の蓄電素子両端電圧値の異常値判断を繰り返す。一方、番号iと蓄電素子モジュール29内の蓄電素子31の個数nが等しければ(S281のYes)、番号jと蓄電部39の個数mを比較する(S285)。もし、両者が等しくなければ(S285のNo)、次の蓄電部39の異常を判断するために、番号jを1だけ加算(S287)してS267に戻り、以降の動作を繰り返す。一方、番号jと蓄電部39の個数mが等しければ(S285のYes)、蓄電素子31の両端電圧値における全ての異常値を推定値に置換し終わったことになるので、図3のフローチャートを終了し、図2のフローチャートに戻る。
図2、図3で述べた動作は、簡単な四則演算を繰り返しているだけなので、母数の大きい両端電圧値に対する分布を演算する必要がなく、極めて高速に実行することができる。その結果、多数の蓄電素子31における両端電圧値の測定や推定を短いサイクルで行うことができるので、素早い両端電圧値の制御や蓄電装置11の異常判断を行うことができる。
以上により、蓄電素子両端電圧値の測定動作、および異常両端電圧値の推定動作を行っているが、この内、特徴となる推定動作についてまとめると、次のようになる。
まず、起動時においては、蓄電素子電圧検出回路33を介して求めた各蓄電素子31の両端電圧値(これは今回測定両端電圧値V(j,i)に相当)に初期異常値があれば、前記各両端電圧値の初期正常値の平均値Hを、前記初期異常値に替わって前記両端電圧値とする。
次に、起動後の通常使用時においては、蓄電素子電圧検出回路33を介して求めた各蓄電素子31の両端電圧値(今回測定両端電圧値V(j,i)に相当)に異常値があれば、正常値を有する蓄電素子31における前回測定両端電圧値VO(j,i)と今回測定両端電圧値V(j,i)の平均変化率Dを求め、前記異常値を有する蓄電素子31の前回測定両端電圧値VO(j,i)に平均変化率Dを乗じた値を、前記異常値に替わって前記両端電圧値とする。
以上の構成、動作により、異常値を有する蓄電素子31の両端電圧値を簡単な四則演算によってのみ推定することができるので、演算時間がほとんどかからずタイムリーに両端電圧値の監視や制御を行うことができ、高信頼性の蓄電装置を実現できる。
なお、本実施の形態1において蓄電素子31に電気二重層キャパシタを用いたが、これは電気化学キャパシタ等の他の蓄電素子でもよい。さらに、蓄電素子モジュール29は複数の蓄電素子31を直列に接続した構成としたが、これに限定されるものではなく、負荷17が要求する電力仕様に応じて図4に示すように直並列接続としてもよい。図4では並列接続数が2の場合、すなわち2個の蓄電素子31を並列に接続した場合を示すが、これは2個以上であってもよい。この場合、回路的には並列接続された蓄電素子31を一まとめにした蓄電素子群47を1つの蓄電素子とみなすことができるので、図1の蓄電素子31を蓄電素子群47に置き換えることにより、図1で説明した構成や、図2、図3で説明した動作と全く同じになる。従って、図4の詳細については説明を省略する。但し、図4の構成では蓄電素子群47毎に両端電圧値の測定や推定が行われることになる。
また、本実施の形態1では蓄電素子モジュール29を複数個(m個)設ける構成を示したが、これは単数でもよい。
(実施の形態2)
図5は、本発明の実施の形態2における蓄電装置のブロック回路図である。図6は、本発明の実施の形態2における蓄電装置の蓄電素子モジュール両端電圧値の測定、および推定フローチャートである。なお、図5の太線は電力系配線を、細線は信号系配線をそれぞれ示す。
本実施の形態2の構成において、実施の形態1の構成と同じ部分には同じ番号を付すとともに、異なる構成部分を中心に説明する。すなわち、図5において特徴となる構成は以下の通りである。
1)蓄電素子モジュール29を必ず複数設ける構成とし、蓄電素子モジュール29毎の両端電圧値を求めるようにした。
2)上記構成により、蓄電素子電圧検出回路33は蓄電素子モジュール29の両端に相当する電圧を測定するように接続した。
3)それに伴って、測定対象となる電圧が少なくなるので、蓄電素子電圧検出回路33を1個とし、制御部41と直接接続した。
4)従って、スレーブ側制御回路35、スレーブ側送受信回路37、およびマスタ側送受信回路43を廃し、蓄電部39と制御装置45の区別をなくした。
上記以外の構成は実施の形態1と同じである。なお、各蓄電素子モジュール29は蓄電素子31を10個直列接続して構成している。また、本実施の形態2では蓄電素子モジュール29毎にしか両端電圧値が求められないので、実施の形態1のように各蓄電素子31、または蓄電素子群47毎の両端電圧値の監視ができなくなるが、例えば蓄電装置11の構造上、異常のあった蓄電素子モジュール29毎にしか交換できない場合であれば、個々の蓄電素子31、または蓄電素子群47の両端電圧値を求める必要性が低い。このような場合には本実施の形態2のように蓄電素子モジュール29毎に両端電圧値を求めるだけでよくなる。さらに、この構成によれば、図1と図5の比較から極めて簡単な構成とすることができるという効果も得られる。
次に、本実施の形態2における蓄電装置11の動作を説明する。まず、通常の蓄電装置11の動作については実施の形態1と全く同じであるので、説明を省略する。
次に、蓄電装置11における各蓄電素子モジュール29の過充電や過放電の監視を行うための蓄電素子モジュール両端電圧値の測定動作、および異常両端電圧値の推定動作について図6のフローチャートを用いて説明する。なお、実施の形態1と同様に、制御部41はメインルーチン(図示せず)から必要に応じて様々なサブルーチンを実行することにより全体の動作を行うソフトウエア構成としているので、図6に示すフローチャートをサブルーチンの形態で示した。
まず、車両の起動時には制御部41のメインルーチンにて、起動フラグKFと各蓄電素子モジュール29の異常カウンタF(j)を全てクリアする初期設定を行う。ここで、起動フラグKFは実施の形態1と同じものである。また、異常カウンタF(j)は、番号jで決定される蓄電素子モジュール29の連続異常回数を示すものである。これは、蓄電素子電圧検出回路33を介して同一の蓄電素子モジュール29における両端電圧値の異常値を、既定回数(本実施の形態2では3回とした)まで連続して求めた時に、その蓄電素子モジュール29が異常であると判断するために用いる。従って、両端電圧値において正常値が得られると0に、異常値が得られると異常カウンタF(j)を1づつ加算するようにしている。なお、異常カウンタF(j)は実施の形態1のF(j,i)で表される2次元配列に対して1次元配列としたものであり、番号jは1〜m(mは蓄電素子モジュール29の個数で本実施の形態2では10個とした)の範囲を取る。
この初期設定を行った状態で、制御部41は定期的に図6のサブルーチンを実行して、各蓄電素子31の過充電や過放電の監視を行う。図6のサブルーチンが実行されると、まず異常両端電圧値個数TFをクリアする(S501)。ここで、異常両端電圧値個数TFは何個の蓄電素子モジュール29が異常であったかを示すもので、TFが蓄電素子モジュール29の個数mと等しければ、蓄電装置11は全ての蓄電素子モジュール両端電圧値が異常であるということになる。
次に、番号jに1を代入した後(S503)、蓄電素子電圧検出回路33を介して蓄電素子モジュール29の電圧Vjを読み込み、制御部41に内蔵されたメモリ(図示せず)に記憶する(S505)。なお、電圧Vjは図5における蓄電素子モジュール29の両端に示したV1、V2、・・・、Vn+1における電圧である。ここで、もし蓄電装置11に蓄電されている全体電圧値が制御上必要な場合は、電圧V1を参照すればよい。次に、番号jが1であるか否かを判断する(S507)。番号jが1であれば(S507のYes)、蓄電素子モジュール29の今回測定両端電圧値V(j)を計算するだけの電圧Vjが測定できていないので、次の蓄電素子モジュール29の両端電圧値を求めるために番号jを1だけ加算して次の番号とし(S509)、S505に戻って電圧Vjを測定する動作以降を繰り返す。一方、番号jが1でなければ(S507のNo)、今回測定両端電圧値V(j−1)をV(j−1)=Vj−Vj−1により計算し、メモリに記憶する(S511)。この式により今回測定両端電圧値V(j−1)を計算するので、jが1の時(S507のYes)はj−1=0になり計算できない。ゆえに、j=1ならばS509にジャンプしている。
ここでS511に戻り、S511の計算が終了すれば、今回測定両端電圧値V(j−1)が異常値であるか否かを判断する(S512)。ここで、異常値は蓄電素子モジュール29が取り得る両端電圧値範囲(例えば下限を0Vとし、上限として蓄電素子31の上限耐電圧値3Vに各蓄電素子モジュール29の蓄電素子31の個数10を乗じた30Vまでとする)を超える値であると定義する。もし、異常値でなければ(S512のNo)、後述するS514にジャンプする。一方、異常値であれば(S512のYes)、異常両端電圧値個数TFを1だけ加算する(S513)。
その後、番号jがm+1と等しいか否かを判断する(S514)。等しくなければ(S514のNo)、次の蓄電素子モジュール29の電圧Vj+1を求めるためにS509へジャンプする。一方、番号jとm+1が等しければ(S514のYes)、全ての蓄電素子モジュール29の今回測定両端電圧値V1〜Vmを求め終わったので、次に異常両端電圧値個数TFと蓄電素子モジュール29の個数mを比較する(S515)。もし、両者が等しければ(S515のYes)、全蓄電素子モジュール29の両端電圧値が異常であることになるので、蓄電装置11をこれ以上使用できない。そこで、後述するS567にジャンプする。一方、異常両端電圧値個数TFと蓄電素子モジュール29の個数mが等しくなければ(S515のNo)、蓄電素子モジュール29の両端電圧値が全て異常値であるわけではないことになる。この場合は、蓄電素子モジュール29の両端電圧値に異常値があれば、それに対する推定値を計算する動作を以下に示すようにして行う。
まず、番号jに最初の蓄電素子モジュール29を示す1を代入し、正常蓄電素子数kと合計値Sをクリアする(以上、S516)。ここで、正常蓄電素子数kと合計値Sは実施の形態1と同じ変数である。
次に、起動フラグKFが0であるか否かを判断する(S517)。もし、KFが0でなければ(S517のNo)、起動後に既に異常両端電圧値の推定動作を行っていることになるので、全蓄電素子モジュール29における正常な両端電圧値の平均変化率を求めるために、後述するS551にジャンプする。
一方、起動フラグKFが0であれば(S517のYes)、起動後に初めて異常両端電圧値の推定動作を行うことになるので、全蓄電素子モジュール29における正常な両端電圧値の平均値を求める。なお、初めての異常両端電圧値の推定動作において前記平均値を求める理由は実施の形態1と同様に、前記平均変化率を計算できないためである。
S517でYesならば、図6の異常両端電圧値の推定動作をこれから行うことになるので、起動フラグKFに1を代入する(S519)。これにより、次回から図6の動作を行う時はS517でNoになるので前記平均変化率の計算を行うようになる。
次に、番号jの蓄電素子モジュール29の今回測定両端電圧値V(j)が初期異常値であるか否かを判断する(S521)。なお、初期異常値の定義はS512で述べた異常値の定義と同じである。もし、初期異常値であれば(S521のYes)、後述するS525にジャンプする。一方、初期異常値でなければ(S521のNo)、初期正常値の平均値を求めるために、合計値Sに今回測定両端電圧値V(j)の値を加算するとともに、正常蓄電素子数kを1だけ加算する(以上、S523)。
その後、番号jと蓄電素子モジュール29の個数mを比較する(S525)。もし、両者が等しくなければ(S525のNo)、次の蓄電素子モジュール29の異常を判断するために、番号jを1だけ加算(S527)してS521に戻り、以降の動作を繰り返す。一方、番号jと蓄電素子モジュール29の個数mが等しければ(S525のYes)、全ての蓄電素子モジュール29の異常判断が終了したことになる。
次に、初期正常値を有する蓄電素子モジュール29の両端電圧値の平均値Hを求める。平均値HはH=S/kにより求められる。同時に、初期異常値を有する蓄電素子モジュール29の両端電圧値を平均値Hとする推定動作を行うために、番号jに最初の蓄電素子モジュール29を示す1を代入する(以上、S529)。
次に、番号jで示される蓄電素子モジュール29の今回測定両端電圧値V(j)が初期異常値であるか否かを判断する(S531)。もし、初期異常値でなければ(S531のNo)、後述するS535にジャンプする。一方、初期異常値であれば(S531のYes)、その蓄電素子モジュール29の両端電圧値の推定値を平均値Hとするために、今回測定両端電圧値V(j)にHを代入する。同時に異常のある蓄電素子モジュール29の両端電圧値を推定値とした回数をカウントするための異常カウンタF(j)に1を代入する(以上、S533)。
その後、前回測定両端電圧値VO(j)を更新するために、VO(j)に今回測定両端電圧値V(j)を代入する(S535)。なお、VO(j)もV(j)と同様に1次元配列変数である。次に、番号jと蓄電素子モジュール29の個数mを比較する(S537)。もし、両者が等しくなければ(S537のNo)、全ての蓄電素子モジュール29における両端電圧値の異常判断が終わっていないので、番号jを1だけ加算(S539)してS531に戻り、次の蓄電素子モジュール両端電圧値の初期異常値判断を繰り返す。一方、番号jと蓄電素子モジュール29の個数mが等しければ(S537のYes)、蓄電素子モジュール29の両端電圧値における全ての初期異常値を推定値に置換し終わったことになるので、図6のフローチャートを終了する。
ここで、S517に戻り、起動フラグKFが0でなければ(S517のNo)、全蓄電素子モジュール29における正常な両端電圧値の平均変化率による異常値の推定動作を行う。具体的には、まず番号jで示される蓄電素子モジュール29の今回測定両端電圧値V(j)が異常値であるか否かを判断する(S551)。もし、異常値であれば(S551のYes)、後述するS555にジャンプする。一方、異常値でなければ(S551のNo)、正常値の平均変化率を求めるために、番号jで示される蓄電素子モジュール29の両端電圧値の変化率、すなわち今回測定両端電圧値V(j)を前回測定両端電圧値VO(j)で除した値を合計値Sに加算するとともに、正常蓄電素子数kを1だけ加算する(以上、S553)。
その後、番号jと蓄電素子モジュール29の個数mを比較する(S555)。もし、両者が等しくなければ(S555のNo)、次の蓄電素子モジュール29の異常を判断するために、番号jを1だけ加算(S557)してS551に戻り、以降の動作を繰り返す。一方、番号jと蓄電素子モジュール29の個数mが等しければ(S555のYes)、全ての蓄電素子モジュール29の異常判断が終了したことになる。
次に、正常値を有する蓄電素子モジュール29の両端電圧値の平均変化率Dを求める。平均変化率DはD=S/kにより求められる。同時に、異常値を有する蓄電素子モジュール29の両端電圧値を平均変化率Dから推定する動作を行うために、番号jに最初の蓄電素子モジュール29を示す1を代入する(以上、S559)。
次に、番号jで示される蓄電素子モジュール29の今回測定両端電圧値V(j)が異常値であるか否かを判断する(S561)。もし、異常値でなければ(S561のNo)、今回測定両端電圧値V(j)を正常に得ることができたので、異常カウンタF(j)を0にクリアし(S563)、後述するS571にジャンプする。一方、異常値であれば(S561のYes)、異常カウンタF(j)が2であるか否かを判断する(S565)。もし、異常カウンタF(j)が2であれば(S565のYes)、番号jの蓄電素子モジュール29は3回続けて異常値を有したことになるので、一時的なノイズ要因による異常値ではなく、その蓄電素子モジュール29の短絡、断線、あるいは劣化等による異常値である可能性が高い。このような蓄電素子モジュール29をそのまま使い続けると、蓄電装置11全体としての信頼性が低下するので、S565のYesの場合は制御部41から車両用制御回路へ異常信号を出力して(S567)、図6のフローチャートを終了する。異常信号の出力動作や、その後の車両用制御回路の動作は図2のS35で説明した動作と同じである。なお、この時に異常のあった蓄電素子モジュール29の識別情報(例えば番号j)を異常信号に含ませてもよい。
一方、異常カウンタF(j)が2でなければ(S565のNo)、番号jで示される蓄電素子モジュール29の両端電圧値が異常値であるので、その推定値を計算する。具体的には、実施の形態1と同様に、番号jで示される蓄電素子モジュール29の前回測定両端電圧値VO(j)に、S559で求めた正常値を有する全蓄電素子モジュール29の両端電圧値の前回と今回における平均変化率Dを乗じた値を推定値として今回測定両端電圧値V(j)に代入する。これにより、異常値が推定値に置換される。これと同時に、推定値との置換がなされたので、異常カウンタF(j)を1だけ加算する(以上、S569)。
その後、前回測定両端電圧値VO(j)を更新するために、VO(j)に今回測定両端電圧値V(j)を代入する(S571)。次に、番号jと蓄電素子モジュール29の個数mを比較する(S573)。もし、両者が等しくなければ(S573のNo)、まだ各蓄電素子モジュール29の両端電圧値の異常判断が終わっていないので、番号jを1だけ加算(S575)してS561に戻り、次の蓄電素子両端電圧値の異常値判断を繰り返す。一方、番号jと蓄電素子モジュール29の個数mが等しければ(S573のYes)、蓄電素子モジュール29の両端電圧値における全ての異常値を推定値に置換し終わったことになるので、図6のフローチャートを終了する。
このように、図6で述べた動作も実施の形態1と同様に簡単な四則演算を繰り返しているだけなので、母数の大きい両端電圧値に対する分布を演算する必要がなく、極めて高速に実行することができる。また、蓄電素子モジュール29毎にのみ両端電圧値の測定や推定を行っているので、実施の形態1よりもさらに素早い両端電圧値の制御や蓄電装置11の異常判断を行うことができる。
以上により、蓄電素子モジュール両端電圧値の測定動作、および異常両端電圧値の推定動作を行っているが、この内、特徴となる推定動作についてまとめると、次のようになる。
まず、起動時においては、蓄電素子電圧検出回路33を介して求めた各蓄電素子モジュール29の両端電圧値(これは今回測定両端電圧値V(j)に相当)に初期異常値があれば、前記各両端電圧値の初期正常値の平均値Hを、前記初期異常値に替わって前記両端電圧値とする。
次に、起動後の通常使用時においては、蓄電素子電圧検出回路33を介して求めた各蓄電素子モジュール29の両端電圧値(今回測定両端電圧値V(j)に相当)に異常値があれば、正常値を有する蓄電素子モジュール29における前回測定両端電圧値VO(j)と今回測定両端電圧値V(j)の平均変化率Dを求め、前記異常値を有する蓄電素子モジュール29の前回測定両端電圧値VO(j)に平均変化率Dを乗じた値を、前記異常値に替わって前記両端電圧値とする。
以上の構成、動作により、異常値を有する蓄電素子モジュール29の両端電圧値を簡単な四則演算によってのみ推定することができるので、演算時間がほとんどかからずタイムリーに両端電圧値の監視や制御を行うことができ、高信頼性の蓄電装置を実現できる。
なお、本実施の形態2において、蓄電素子モジュール29を直列に接続した構成を示したが、これは蓄電素子モジュール29を直並列接続してもよい。
また、実施の形態1、2では蓄電装置11をハイブリッド車に適用した場合について述べたが、それに限らず、電気自動車や燃料電池車の補助電源等にも適用可能である。