バッテリ管理システムに生じた断線を検出する方法
要約
バッテリ管理(バッテリ・マネージメント)システム(BMS:Battery Management System)は、安全かつ高い信頼性で動作する必要があります。これを実現するために重要になるのが断線(open wire)の検出機能です。ここで言う断線の状態は、組み立て工程における配線の接続ミスや、何らかの要因による配線の切断などによって生じます。つまり、本来は配線が接続されているはずのピンがオープンの状態になっているということです。以下では、その状態を単に断線という言葉で表現することにします。BMSに関心がある方やBMSの設計に携わる方は、この断線を検出する機能に対する理解を深めるべきです。そこで本稿では、この断線検出の機能について詳しく説明します。同機能を備える具体的な例としては、アナログ・デバイセズが提供するバッテリ・スタック・モニタICやマルチセル・バッテリ・モニタIC(以下、セル・モニタIC)を取り上げることにします。セル・モニタICを備えるBMSと外部のバッテリ・セルを接続した際、断線検出のアルゴリズムを実行することで、ほぼすべての断線を正確に検出することができます。本稿では、BMSによる断線検出についてより深く理解していただくために、そのアルゴリズムについて詳しく解説することにします。また、本稿の最後に示す断線検出用の疑似コードは、BMSの設計者向けのリファレンス設計として活用できるはずです。
はじめに
セル・モニタICは、セルの電圧、電流、温度といったパラメータの値を監視します。BMSにおいてこの監視を実施できるようにするためには、セル・モニタICと個々のセルを数多くの配線によって接続する(wiring connection)必要があります。それらの配線との接続(以下、単に配線と表記することにします)は、信頼性の高い監視を実現するために不可欠なものです。また、それらの配線は、セルのパッシブ・バランス機能を実行する際の放電パスとして機能することがあります。あるいは、リレーを制御する信号の伝送パスとして使われることもあるでしょう。通常、BMSによる管理は非常に多くのセルを対象として行われます。そのため、大量の配線が必要になります。場合によっては、非常に長い配線も存在することになるはずです。なぜなら、異なるプリント回路基板の間やプリント回路基板とバッテリ・パック(多数のセルを内蔵する)の間をまたぐ形で配線が行われるケースが少なくないからです。また、多くの場合、様々な種類の接続用コンポーネントを使用する必要があるでしょう。BMSでは徹底的に断線を回避しなければなりません。断線が発生すると、セルの状態を適切に監視できなくなるからです。監視下にないセルは、BMS全体に対して安全に関わる問題をもたらします。システムにおいて、いつ致命的な問題が生じてもおかしくない状態になるということです。断線が発生した場合には、断線の位置を迅速かつ正確かつ効率的に特定しなければなりません。そして、その事実をユーザに対して即時通知する必要があります。正確かつ効果的に断線を検出するアルゴリズムが存在すれば、BMSの信頼性を大幅に高められます。また、BMSとバッテリ・パックのトラブルシューティングが容易になります。優れたアルゴリズムを採用すれば、問題が発生した個所を正確に特定できます。そうすれば、手作業によるトラブルシューティングのプロセスにおいて、無駄なチェック作業や分解/組み立て作業を行わなくて済みます。
BMSのCピンにおける断線の検出
上述したように、BMSでは断線検出の機能が非常に重要になります。そのため、アナログ・デバイセズのほとんどのセル・モニタICには、断線検出用のコマンドが用意されています。また、それに対応する実装方法も提示されています。ただ、すべてのセル・モニタICが同じ断線検出の方法を採用しているわけではありません。代表的な方法の1つは「ADBMS6830B」で使われているものです。もう1つの代表的な方法は「LTC6813」で使用されています。LTC6813で採用している方法では、ADOW(断線チェック)コマンドを使用します。この方法は、より汎用性の高いものだと言えます。実際、アナログ・デバイセズの様々なセル・モニタICでもその方法を採用しています。そこで、以下ではLTC6813で利用できる断線検出の方法について詳しく解説していくことにします。
ADOWコマンドは、LTC6813-1が内蔵するA/Dコンバータ(ADC)と外部のセルの間の断線をチェックするために使用されます。ADOWコマンドを実行すると、ADCV(セル電圧の測定)コマンドを実行する場合と同じように、Cピン(C0~C18の入力ピン)を介してアナログ電圧からデジタル・データへの変換が行われます。但し、ADCVコマンドを実行する場合とは異なり、同ICが内蔵する2つの電流源によって、2つのCピンに対する電流のシンクまたはソースが行われます。ADOWコマンドのプルアップ(PUP)ビットは、電流源が100μAの電流をシンクするかソースするかを決定します。以上のような仕組みと、以下に示す簡単なアルゴリズムを使用することで、19本のCピンのうちいずれかで断線が生じていないかどうかをチェックすることができます。
- PUPを1に設定し、18 個のセルを対象としてADOWコマンドを2 回以上実行します。最後にセル1 からセル18 までの電圧を1 回読み取ります。その結果を配列CELLPU(n) に保存します。
- PUPを0に設定し、18 個のセルを対象としてADOWコマンドを2 回以上実行します。最後にセル1 からセル18 までの電圧を1 回読み取ります。その結果を配列CELLPD(n) に保存します。
- セル2~セル18を対象とし、上記のステップで保存したプルアップ時の測定結果とプルダウン時の測定結果の差を取ります。つまり、CELL Δ (n) = CELLPU(n) - CELLPD(n) を算出します。
- 1から 17 までのすべての n に対して CELL Δ (n + 1) <-400mV である場合、C(n) ピンは断線している( オープンの状態になっている)ということになります。また、CELLPU(1) = 0.0000 である場合、C0 ピンは断線しています。CELLPD(18) = 0.0000 の場合には、C18 ピンが断線しています。
LTC6813のデータシートを見ると、断線検出用のADOWコマンドとアルゴリズムについて詳しく説明されています。図1は、データシートに記載された上記のアルゴリズム(以下、デフォルトのアルゴリズム)について、より直観的に理解するためのものです。グラフィカルな手法により、デフォルトのアルゴリズムの内容を視覚化しています。これをご覧いただけば、ADOWコマンドに基づく断線検出の仕組みをご理解いただけるはずです。
続いて、LTC6813の評価用ボードと18650バッテリを使用した実験結果を示します。つまり、断線が生じた状態を再現し、その際に得られる各種の信号波形などをご覧いただくことにします。それにより、断線検出を実行中の回路の動作をより明確に理解できるはずです。実験で使用したバッテリの電圧は、1セル当たり約4Vです。LTC6813のC1/C2/C3/C4ピンには、それぞれオシロスコープの4つのプローブを接続しました。それにより、セル2、セル3、セル4の電圧波形を個別に観測します。また、LTC6813のデータシートにはADCVコマンドを実行するためのタイミングについての説明が記載されています。その説明に使われているのが図2と表1です。これらの内容を組み合わせてタイミングを設定します。また、図2、表1を参照すると、この実験によって取得した波形についての理解が進むはずです。ADOWコマンドを実行するためのタイミングは、ADCVコマンドを使用する場合と同じように設定します。ADCVコマンドと同様に、Cピンを対象としてADOWコマンドを実行すると、アナログ電圧からデジタル・データへの変換が行われます。ただ、先述したように、ADCVコマンドを実行する場合とは1つ異なる点があります。ADOWコマンドを実行すると、LTC6813が内蔵する2つの電流源によって2本のCピンに対する電流がソース/シンクされます。断線検出の実験結果を図3と図4に示しました。図3に示した実験1では、断線は発生させていません。つまり、この実験の結果はリファレンスとしての役割を果たします。一方、図4に示した実験2では、ジャンパを取り外すことによってC2ピンへの配線が行われない状態にしています。つまり、意図的に断線を生じさせているということです。この状態でADOWコマンドを実行し、セル2、セル3、セル4に関する各種波形を取得しました。これらの結果から、観測された回路の動作は、図1の説明と合致していることがわかります。
モード | 変換時間〔マイクロ秒〕 | 同期時間〔マイクロ秒〕 | |||||
t0 | t1M | t2M | t5M | t6M | t6C | tSKEW2 | |
27 kHz | 0 | 58 | 104 | 244 | 291 | 1,121 | 233 |
14 kHz | 0 | 87 | 163 | 390 | 566 | 1,296 | 379 |
7 kHz | 0 | 145 | 279 | 681 | 815 | 2,343 | 670 |
3 kHz | 0 | 261 | 512 | 1,263 | 1,413 | 3,041 | 1,252 |
2 kHz | 0 | 496 | 977 | 2,426 | 2,909 | 4,437 | 2,415 |
1 kHz | 0 | 960 | 1,908 | 4,753 | 5,702 | 7,230 | 4,742 |
422 Hz | 0 | 1,890 | 3,777 | 9,408 | 11,287 | 12,816 | 9,397 |
26 Hz | 0 | 29,818 | 59,624 | 149,044 | 178,851 | 201,325 | 149,033 |
BMSで複数の断線が生じた場合の問題
BMSにおいては、より深刻な問題が発生する可能性があります。それは、セル・モニタICの複数のCピンに断線が生じたケースです。このような状況が生じる確率はかなり低いはずです。しかし、絶対に起きないというわけではありません。デフォルトのアルゴリズムを使うことにより、1本のCピンに生じた断線であれば効果的に検出できます。しかし、複数のCピンで同時に断線が生じた場合、デフォルトのアルゴリズムを機械的に適用しても正確な結果が得られるとは限りません。
例として、図5に示すように複数の断線が生じているケースを考えます。この状況で、LTC6813のデフォルトのアルゴリズムを適用したとします。その場合、C6、C7、C8、C9ピンの断線は検出できますが、C2、C3、C4、C5ピンの断線は検出されません。当然のことながら、これは望ましい結果ではありません。
とはいえ、デフォルトのアルゴリズムを使えば、1本のCピンに生じた断線であれば、非常に正確かつ効果的に検出できます。そのため、複数の断線を検出する場合について考える場合の貴重なリファレンスになります。セル・モニタICの1本以上のCピンで断線が発生した場合に、デフォルトのアルゴリズムを機械的に適用したとします。その際、複数の断線が同時に発生していたら、すべての断線とそれぞれの位置を正確に検出することはできない可能性があります。但し、デフォルトのアルゴリズムは、BMSに対して、断線が発生しているという旨の警告を確実に発します。BMSのプリント基板で断線が発生した場合、手作業によって詳細な検査を行い、修復を図らなければなりません。通常、デフォルトのアルゴリズムで検出されなかった断線は、手作業で注意深く検査を実施することによって発見されます。
複数のCピンの断線を検出するアルゴリズム
上述したように、デフォルトのアルゴリズムを使用する場合、Cピンで生じたすべての断線を検出するためには、経験豊富なエンジニアによる手作業の検査が必要になります。では、そのような検査に頼ることなく、セル・モニタICとバッテリの間で生じるすべての断線を迅速かつ正確かつ効率的に検出することはできないのでしょうか。実は、それを可能にするより優れたアルゴリズムが存在します。
ADOWコマンドに対応する断線検出のアルゴリズム(デフォルトのアルゴリズム)と、データシートに掲載されたデータを吟味すると、1つの計算ステップを追加するだけで、Cピンのほぼすべての断線を正確に識別できることがわかります。つまり、1本だけ断線していても、複数本断線していても、どの位置で発生していても、ほぼすべて検出できるということです。「ほぼすべて」としていることには理由があります。というのは、そのアルゴリズムを使用したとしても、C0ピンまたはC18ピンで断線が発生した場合、回路内のすべての断線を正確に検出するのは非常に困難だからです。言い換えれば、C1ピンからC17ピンで発生したすべての断線の状態については漏れなく検出できます。ここでは、その方法について詳しく説明します。なお、C0ピンとC18ピンの断線に関しては後述します。
ここで紹介するアルゴリズムについては、「改変後のアルゴリズム」と表記することにします。上述したように、改変後のアルゴリズムは、デフォルトのアルゴリズムに計算ステップを1つ追加することで実現されます。その計算ステップで行うのは、CELLΔ[n]とCELLΔ[n + 1]の差を求めることだけです。それにより、非常に効率的で正確な断線検出のアルゴリズムが確立されます。以下、この改変後のアルゴリズムの処理内容について説明します。
ステップ1: まず、データシートに記載されている方法に従い、セル・モニタICにADOWコマンドを送信して断線検出を開始します。その際には、2つの内蔵電流源によって2本のCピンに対する電流がシンク/ソースされます。各セルに対応する電圧の値は、内蔵ADCによってデジタル・データに変換され、CELLPU、CELLPD、CELLΔの3つの配列に格納されます。
ステップ2: セル1からセル18について、番号の小さい順に(図で言えば下から上に向かって)データを確認していきます。具体的には、CELLΔのデータの中からある性質を持つ数値が存在するか否かを確認します。それにより、断線が発生しているか否かを判断します。例として、隣接する一連のピンに断線が生じているケースを考えます。そして、その開始位置がCnピン(n = 1~17)であったとします。その場合、それに対応するCELLΔ[n]のデータは、400mVの正の閾値を超える電圧を示しているはずです。その電圧は、Cnピンで断線が発生したことを表すフラグとして機能します。同時に、その電圧に対応するピンを開始位置として、それに続く隣接した一連のピンでも断線が生じていることを示唆します。このフラグが検出されたら、次のステップ3に進みます。
ステップ3: ステップ2で得られたフラグに対応するCnピンの位置から開始し、nの値をインクリメントしながらCELLΔ[n]とCELLΔ[n + 1]の差を計算するループを実行します。ここで、nの値は17を超えてはなりません。これが、先述した追加の計算ステップです。断線を検出している際、算出された差には特定の性質が現れます。断線の開始位置となるピンとそれ以降の隣接するピンにおいて、途切れることなく連続して断線が生じている場合には、CELLΔ[n]とCELLΔ[n + 1]の差は必ず非常に小さい負の値1、または0、または正の値になります。ステップ2で正の閾値を設定したのと同様に、ステップ3では断線の状況を判断するために-400mVという負の閾値を設定します。CELLΔ[n]とCELLΔ[n + 1]の差を計算するループの実行中に、差の値が-400mVより大きくなった場合には、Cnピンが断線していることがわかります。
1 図5、図6について吟味すると、両方の図において、隣接/連続するピンで断線が生じている場合、CELLΔ[n]とCELLΔ[n + 1]の差は常に0または正の数になることがわかります。つまり、小さな負の値になることはありません。その理由は、図5、図6においては計算を簡素化するために、いくつかの回路のモデルを簡略化しているからです。このことから、より理想的なデータが得られるようになっています。ここで行っている簡素化は、回路の大まかな動作を説明する上では有用です。ただ、実際に複数の断線が生じている回路で検出処理を実行すると、その差は小さな負の数、または0、または正の数になります。
ステップ4: ステップ3で説明したループによる計算を続行します。断線が発生していないピンに到達すると、CELLΔ[n]とCELLΔ[n + 1]の差は-400mVより大きな値ではなくなり、通常は非常に大きな負の値になります。-400mVより小さい値が検出された場合、そのピンが隣接/連続した断線の終了位置であることがわかります。この時点で、それ以前に検出された断線位置をクリアし、18個のセルのすべてのチャンネルとすべてのCピン(C0ピンとC18ピンを除く)の断線の検出が完了するまで、ステップ2~ステップ4の計算を繰り返します。
図5と図6は、複数のCピンで同時に断線が発生した場合の例です。これらは、上記のアルゴリズムを視覚的に表現しています。これらの図は、断線検出の理論を把握する上での助けになるでしょう。
デフォルトのアルゴリズムの場合と同様に、改変後のアルゴリズムについても実験でその効果を検証しました。LTC6813の評価用ボード「DC2350B」と18650バッテリを使用し、複数のCピンの断線を検出できるか否かを確認しました。その結果をご覧いただくことで、複数の断線を検出する際のLTC6813の動作をより深く理解していただけるでしょう。図7、図8に示したのが実験の結果です。図7に示した実験3では、C2ピンとC3ピンの位置で同時に断線を発生させています。一方、図8に示した実験4では、C2ピン、C3ピン、C4ピンの位置で同時に断線を発生させました。2つの図には、ADOWコマンドを実行した際、セル2、セル3、セル4に対応して現れる各種の信号波形も示してあります。回路の動作に現れる変化は、図5、図6に示した概念と合致しています。
改変後のアルゴリズムは、複数のCピンで同時に断線が発生したケースに対して非常に効果的なものです。それだけでなく、セル・モニタIC全体で1ヵ所だけ断線が発生した場合にも対応できます。1つのCピン(C0ピンとC18ピンは除く)だけが断線している場合でも、改変後のアルゴリズムを個別に適用することで、適切な検出結果が得られます。改変後のアルゴリズムは、データシートに記載されているデフォルトのアルゴリズムの長所を継承しています。それだけでなく、複数のCピンで同時に断線が発生した場合にも、それらを正確かつ効率的に検出することが可能です。つまり、デフォルトのアルゴリズムが抱えていた欠点も克服しています。
C0ピン、C18ピンの断線の検出
改変後のアルゴリズムを使用すれば、LTC6813のC1ピンからC17ピンまでの断線を検出できます。ただ、C0ピン、C18ピンで断線が発生した場合、回路内のすべての断線を正確に検出するのは非常に困難です。以下に示すシナリオを通して、これら2つのピンで断線が発生すると、どれだけ複雑な状況になるのかを明らかにします。
シナリオ1: 図1に示したように、C0ピン、C18ピンの断線は、隣接するCピンが同時に断線していない限り、デフォルトのアルゴリズムを使用することで検出できます。つまり、C0ピンとC1ピン、またはC18ピンとC17ピンが同時に断線していない場合、CELLPU[1] = 0であればC0ピンが断線しており、CELLPD[18] = 0であればC18ピンが断線していると判断できます。
シナリオ2: 図9、図10に示すように、C0 ピンまたはC18ピンと、それらに隣接するCピンで同時に断線が発生したとします。その場合、C18ピンの断線は、CELLPD[18] = 0であればC18ピンが断線しているという条件を使用することで識別できます。ただ、C18ピンと、それに隣接する複数のCピンで同時に断線が発生した場合に対応するためには、C18ピンの断線検出についてはCELLPD[18] < 400mVをルールとして設定することをお勧めします。なお、C18ピンに隣接するCピンの断線は改変後のアルゴリズムを使用することにより検出できます。
一方、C0ピンについては、CELLPU[1] = 0の場合にはC0ピンが断線しているという条件を使うことで検出可能です。但し、C0ピンに隣接するCピンの断線はトリガの条件を満たしません。つまり、改変後のアルゴリズムによって検出することはできません。改変後のアルゴリズムで識別できない断線については、デフォルトのアルゴリズムに盛り込まれたルールによって検出できます。つまり、CELLΔ[n + 1] < -400mVの場合、C(n)ピンは断線しています。但し、このシナリオ2でC1ピンの断線を正確に検出するには、アルゴリズムの一部として、C0ピンが断線していて、なおかつCELLPD[1] <400mVである場合には、C1ピンは断線しているというルールを追加する必要があります。この点には注意してください。
シナリオ3: 図11では、プリント基板上でC0ピンをV-に、C18ピンをV+に短絡しています。このアプローチがもたらすメリットは、V-ピン/V+ピンとバッテリ・パックの間の2つの配線が不要になることです。但し、C0ピンとC18ピンの配線と接続部のインピーダンスが十分に低くない場合、セル1とセル18の電圧を検出する際に誤差が追加される可能性があります。C0ピンとV-、C18ピンとV+が同じ配線を共有する場合、ICの動作中にV-ピンとV+ピンに電源電流が流れます。通常、その電流の値は大きくなると想定されます。例えば、セル・モニタのコア部がMEASUREステートにあり、isoSPIがREADYステート(IB = 1mA)であるとします。その場合、表2に示した数値と表3に示した式を使用すると(いずれもLTC6813のデータシートから引用)、消費電流が約21mAに達する可能性があることがわかります。C0ピンとC18ピンの配線と接続部のインピーダンスが十分に低くない場合には大きな電圧降下が生じ、セル1とセル18の電圧の検出精度に影響が及ぶ可能性があるということです。
ステート | IVP | IREG (Core) | |
Sleep | VREG = 0V | 6.1µA | 0µA |
VREG = 5V | 3µA | 3.1µA | |
STANDBY | 14µA | 35µA | |
REFUP | 550µA | 900µA | |
MEASURE | 950µA | 15mA |
IsoSPIのステート | ISOMDの接続 | IREG (isoSPI) |
IDLE | N/A | 0mA |
READY | VREG | 2.2 mA + 3 × IB |
V- | 1.5 mA + 3 × IB | |
ACTIVE | VREG | 書き込み:2.5mA + (3 + 20 × 100ns / tCLK ) × IB 読み出し: 2.5mA + (3 + 20 × (100ns × 1.5) / tCLK ) × IB |
V- | 1.8 mA + (3 + 20 × 100 ns / tCLK) × IB |
図11に示した接続方法が使われていると仮定して、図12について考えてみましょう。ここでは、C0ピンまたはC18ピンとそれに隣接/連続する複数のCピンが同時に断線したとします。その場合、C18ピンについてはCELLPD[18] = 0であれば断線しているというルールによって検出することができます。但し、C18ピンに加えて、それと隣接/連続する複数のCピンが同時に断線する場合に対応するためには、C18ピンの断線に関するルールをCELLPD[18] < 400mVに設定することをお勧めします。C18ピンに隣接するピンの断線は、デフォルトのアルゴリズムでも改変後のアルゴリズムでも検出できません。そこで、改変後のアルゴリズムの一部として1つのルールを追加します。そのルールとは、C18ピンが断線しており、なおかつCELLPU[n]< 400mVとCELLPD[n] < 400mVの両方が同時に満たされる場合、Cnピンは断線しているというものです。但し、C18ピンに隣接/連続するCピンが断線していて、その数が多くなりすぎると、このルールも意味を成さなくなります。その結果、LTC6813はADOWコマンドを正常に実行できなくなる可能性があります。
図12のようにC0ピンが断線すると、LTC6813はADOWコマンドを正常に実行できなくなります。この状況では、ADOWコマンドによってC0ピンの断線を特定することはできません。ただ、LTC6813のADCVコマンドを実行してセルの電圧を検出する方法を利用することは可能です。セル1の異常に低い電圧を検出することで、C0ピンの断線を推定できるということです。とはいえ、この方法は本稿で説明しているアルゴリズムの一部だと見なせるものではありません。
上述した3つのシナリオからわかるように、C0ピンまたはC18ピンが断線した場合、回路内のすべての断線を正確に検出するのは非常に困難です。
ここまでに説明した内容をまとめると、本稿で紹介したすべてのアルゴリズムを組み合わせれば、位置や数に関係なく、回路内のほぼすべてのCピンの断線状態を正確に特定できます。但し、C0ピンまたはC18ピンに関連する断線が検出された場合、すべてのアルゴリズムを組み合わせても、回路内のすべての断線を完全に検出することはできない可能性があります。そのようなケースに遭遇したら、アルゴリズムから警告が通知されるように実装しておくとよいでしょう。つまり、C0ピンかC18ピンで断線が検出されたものの、実際の断線個所はアルゴリズムが示唆する結果とは一致しない可能性があるということがわかるようにするということです。
断線検出用の疑似コード、実験の結果
図13をご覧ください。これは、LTC6813で断線検出を行うために、本稿で説明したすべてのアルゴリズムを統合したものです。この疑似コードをサンプル(リファレンス設計)としてご活用ください。また、断線検出に関するいくつかの実験結果も示しておきます。図14から図17までに示す結果は、LTC6813の評価用ボードで断線した状態を再現して取得したものです。それらの実験で使用された断線検出用のアルゴリズムは、本稿で説明したアルゴリズムを組み合わせる形で構成しました。また、断線検出の機能のためのドライバ・コードは疑似コードに基づいてプログラムしてあります。それぞれの実験結果を見ると、設定された条件下において、断線が多数発生している場合でも、すべての断線位置と断線の数が正確に検出されていることがわかります。つまり、本稿で説明した断線検出用のアルゴリズムの信頼性は検証済みだということです。
まとめ
本稿では、LTC6813で利用可能な断線検出の方法とアルゴリズムについて解説しました。その断線検出の方法は、アナログ・デバイセズの様々なセル・モニタICで一般的に採用されているものです。つまり、高い汎用性を備えていると言えます。実際、LTC6813と同様の断線検出の方法を採用する他のセル・モニタICについては、本稿で紹介した改変後のアルゴリズムにわずかな変更を加えるだけで簡単に移植することができます。
著者について
{{modalTitle}}
{{modalDescription}}
{{dropdownTitle}}
- {{defaultSelectedText}} {{#each projectNames}}
- {{name}} {{/each}} {{#if newProjectText}}
-
{{newProjectText}}
{{/if}}
{{newProjectTitle}}
{{projectNameErrorText}}