BMSの設計の簡素化を図る【Part 4】効率的なアクティブ・セル・バランシングを支えるアルゴリズム
シリーズの関連記事を読む
要約
今回(本連載のPart 4)は、バッテリ管理(バッテリ・マネージメント)システム(以下、BMS)向けの効率的なアクティブ・セル・バランシング(以下、ACB)を支えるアルゴリズムについて詳しく説明します。一般に、ACB用のアルゴリズムは、ACB用のハードウェア・アーキテクチャに依存する形で設計されます。そのため、ACB用のハードウェアの設計を簡素化しつつ、アルゴリズムの設計の複雑さも同時に軽減しなければなりません。これは重要な課題です。通常、ACB用のアルゴリズムとハードウェアのアーキテクチャは緊密に統合され、協調的に最適化されることになります。したがって、本稿で説明するアルゴリズムも、本連載で例にとっているACB用のアーキテクチャ(以下、「ACBアーキテクチャ」と呼ぶことにします)に対応する形でカスタマイズされています。それでも、本稿で紹介する設計上の原則、トレードオフ、実装に関するアイデアなどは、他のアーキテクチャを対象とするアルゴリズムの開発を担う技術者にとってインスピレーションの源になるはずです。
はじめに
前回(Part 3)までは、主にACBアーキテクチャで使用するICやコンポーネントを適切に選択する方法について説明してきました。今回はハードウェアではなく、ソフトウェアの解説に重点を置くことにします。BMSにおいて、ACB用のアルゴリズムは重要な役割を果たします。そのため、深く掘り下げて検討する価値は十分にあります。
本稿では、ここまで例にとってきたACBアーキテクチャを対象として開発されたアルゴリズムについて解説します。その開発目的は、合理的かつ効率的で導入と評価が容易なACB用のアルゴリズムのリファレンス設計を提供することにありました。これを利用することにより、バッテリ・パックにアナログ・デバイセズのソリューションを迅速に実装し、テストを行い、実際のバランシング性能を直接観察することが可能になります。
但し、あらかじめ強調しておきたいことがあります。本稿で紹介するACB用のアルゴリズムは、シンプルかつ効率的なものであることに間違いはありません。しかし、実際にはセルのミスマッチに関するあらゆるシナリオをシームレスに処理できる単一のアルゴリズムというものは存在しません。この点には注意してください。どのようなバランシング戦略を採用する場合でも、実際のバッテリ・システムにそれを適用する前に徹底的に評価/検証しなければなりません。
ACB用のGUI
前回触れたとおり、ACBアーキテクチャに対応するソフトウェアは大きく2つに分けられます。1つは、組み込みマイクロコントローラ・ユニット(MCU)上で稼働するファームウェアです。もう1つは、PC上で稼働するGUI(Graphical User Interface)です。MCUの機能と役割については前回までに説明したので、今回はPC側の評価用ソフトウェアであるGUIに焦点を絞ります。
図1、図2は、上記のGUIのスクリーンショットです。視覚的な煩雑さを避けるために、どのようなものなのかがすぐにはわからない機能にだけラベルを付けています。
GUIは、MCUとPCの間の通信用ブリッジとして機能します。また、リアルタイムにデータを可視化する機能も提供します。更に、このソフトウェアは、セルの電圧の表示、各セルのバランシングの状態の表示、システムの障害や異常な動作の捕捉/記録といった機能も担います。最も重要なことは、ACBの機能を自動化するアルゴリズム(以下、自動ACBのアルゴリズム)がGUIに統合されている点にあります。つまり、監視用のツールとして機能するだけでなく、バランシングのプロセスを実行するための重要なドライバとしての役割も兼ね備えているということです。
ACB用のアルゴリズムの性能
ACBアーキテクチャは、バランシングのプロセスをサポートするための2つの制御モードを備えています。1つはマニュアル・モード、もう1つは自動モードです。それぞれの概要は以下のようになります。
- マニュアル・モード:
このモードでは、マニュアルでバランシングの制御を実行できます。ユーザは、個々のセルに対して充電、放電、バランシングの無効化の3つのコマンドを直接実行することが可能です。このモードは、診断用のテストや、ターゲットを絞った状態でのバランシングへの介入、特定のセルの微調整に役立ちます。 - 自動モード:
このモードでは、自動ACBのアルゴリズムによってバランシングの制御が実行されます。それにより、プロセスが簡素化され、使いやすさが向上します。必要な操作は、バッテリ・パックをシステムに接続し、GUIを起動し、MCUとのシリアル通信を確立し、「AUTO_ENABLE」ボタンをクリックすることだけです。その後はユーザが介入する必要はなく、システムが自動的に16個のセルをすべて同じ電圧レベルに調整します。
図3~図5は、3つの異なる動作条件の下で、自動モードを有効にすることによってセルの電圧が収束する様子を表しています。3つの動作条件とは、充電状態、放電状態、アイドル状態のことです。なお、テストに使用したバッテリ・パックは、16個のリチウム・イオン・セルで構成されています。各セルはNMC(ニッケル・マンガン・コバルト)をベースとしたものであり、定格容量は40Ahです。以下、各状態における動作を簡単に説明します。
- 充電状態:バッテリ・パックは最大電流が10Aのチャージャによって充電されます。セルの電圧は約3.65Vから4.1V近くまで上昇します。
- 放電状態:バッテリ・パックには10Ωの出力抵抗負荷に接続されます。それにより多くの電力が放出され、セルの電圧が約3.85Vから約3.65Vまで低下します。
- アイドル状態:アイドル状態のバッテリ・パックには、チャージャも負荷も接続されません。
ACBによる収束効果をより明確に示すために、上記3つのいずれの状態においてもテストの開始時にはセルの電圧を意図的にアンバランスな状態にしておきました。全セルの電圧の偏差が閾値内(本稿の例では±3mV以内と定義)に収束すると、自動バランシングの停止条件がトリガされ、テストは終了します。
図3~図5に示すように、自動ACBのアルゴリズムを有効にすると、16個のセルの電圧が狭い許容範囲内に収束しました。このことは、ACBアーキテクチャと自動ACBのアルゴリズムを組み合わせることにより、アイドル状態だけでなく、充電状態と放電状態においても、一貫した効果的なバランシングが実現されることを表しています。
自動ACBのアルゴリズムを実行するロジック
自動ACBのアルゴリズムは、16個のセルに対するバランシングを順番に実行した上でそのプロセスを繰り返します。つまり、循環的かつシーケンシャルな方式で動作します。つまり、1つのセルのバランシングを1回の処理で完全に実行するわけではありません。ラウンド・ロビン方式で、複数の短いバランシング・サイクルを繰り返していきます。それにより、個々のセルに対する処理時間が過度に長くなり、全体的なバランシングのスループットが低下することを回避します。また、1つのセルに対し、長い時間にわたってバランシングを適用すると、アイドル状態が長すぎる他のセルが過充電/過放電の状態に陥るリスクが生じます。このリスクも回避しているということです。バランシングの対象をすべてのセルに分散させることで、事前に定義された閾値に向かって偏差が効率的に収束していきます。このようにすることで、バッテリ・パックの安全性が損なわれないようにします。
このアルゴリズムは、セルのグループ分けに応じて、以下に示す2つの補完的な手法を適用します。
- バッファのバランシング(セル 2~セル 9):相対バランシング
- バッファのグループ(セル 2~セル 9)の平均電圧が計算され、Avg(2 to 9)と表示されます。
- バッファの各セル(セル 2~セル 9)は、バッテリ・パック全体の平均電圧(AvgALL)ではなく、Avg(2 to 9)を基準としてバランシングされます。
- 独立したセルのバランシング(セル 1およびセル 10~セル16):絶対バランシング
- 16個のセルから成るバッテリ・パックの平均電圧が計算され、AvgALLと表示されます。
- それぞれの独立したセル(セル 1およびセル 10~セル16)は、AvgALLを基準としてバランシングされます。
バッファのセルと独立したセルの両方において、バランシングの方向(充電または放電)とバランシングの持続時間は、各セルの偏差の符号と大きさによって決定されます。持続時間は偏差にほぼ比例しますが、単一のセルがバランシングのプロセスを占有することはありません。このアルゴリズムは、短時間の反復パスによってすべてのセルを循環的に処理し、安定した収束を迅速に実現するように設計されています。
バランシングのプロセスの最終的な目標は、バッテリ・パック内のすべてのセルの電圧を可能な限りAvgALLに近づけることです。上記のとおり、このアルゴリズムには、バッファのグループに対する相対バランシングと独立したセルに対する絶対バランシングという、2種類の機能が実装されています。2つの手法を用意している理由は高い効率を確保することにあります。バッファのセルをAvgALLに対して直接バランシングすると、各セルは他のセル用のエネルギー貯蔵庫として機能しながら、充放電のサイクルを繰り返すことになります。これでは収束するまでの効率が低下してしまいます。そこで、まずは相対バランシングによってバッファのセルをAvg(2 to 9)に適合させます。その上で、バッファ全体を使用して独立したセルの充電/放電を実施します。このようにすることで、全体を高速に収束させることが可能になります。バランシングのサイクルが完全に終了した際、Avg(2 to 9)とAvgALLは完全に同一ではないかもしれませんが、ほぼ等しくなります。それにより、バッテリ・パック全体がバランスのとれた状態になります。
セルの偏差が既に許容範囲内にある場合、または異常な状態が検出された場合、アルゴリズムはそのセルをスキップし、処理の対象として適切な次のセルを選択します。このように動作することの目的は、効率と信頼性を更に高めることにあります。
アーキテクチャの論理的根拠、バッファ・ベースのバランシングのメカニズム
上述したバランシングの戦略は、セル間における理想的かつ完全な双方向のバランシングのトポロジとは異なります。その理由は明快です。バッテリ・パックに含まれる任意の2つのセル間で、真に直接的な双方向のエネルギー転送を実現するためには、非常に複雑なアーキテクチャが必要になります。そして、それは現実的には実現不可能なものだからです。
上記の理由から、このアルゴリズムでは充電用の中間的なバッファを活用し、間接的なバランシングを実現します。具体的には、バッテリ・パック内で隣接するn個のセルをバッファとして指定します。この構成は、ACBアーキテクチャにも反映されています。ACBアーキテクチャの概要を示す図6では、バッファはそれらn個の連続するセルから成るモジュールとして描かれています。
従来の設計では、独立した外部電源(12V/24Vの大容量のバッテリなど)をバッファとして使用していました。それに対し、ACBアーキテクチャでは、バッテリ・パック内に既に蓄積されたエネルギーだけを使用します。このアプローチにより、システム全体の効率が向上します。それだけでなく、ハードウェアとソフトウェアの設計の複雑さが緩和されます。
バランシングのプロセスは、ACBアーキテクチャとアルゴリズムを組み合わせることで実現されています。そのプロセスは、以下に示すように、エネルギー転送を2つの段階に分けて実行するように実装されています。
- セルからバッファへの放電:過充電の状態にあるセルからバッファのセルにエネルギーが転送されます。
- バッファからセルへの再充電:バッファからのエネルギーが、満充電に達していないセルに再分配されます。
上記の2段階のシーケンスにより、セル間の双方向のバランシングと同等の機能が実現されます。それに対し、エネルギーの転送を1対1で行う直接的なトポロジを具現化しようとすると、設計が非常に複雑になります。その種のトポロジが理想的なバランシングの形態だと考えられていることは事実です。しかし、大型のバッテリ・パックを対象とする場合、回路の複雑さとコストの問題から、そのようなバランシング機能を実現するのは必ずしも現実的ではありません。本稿で示したアプローチであれば、セルの充電が必要なときにはバッファのセルからいつでも必要なエネルギーを均等に供給できます。逆に、セルの放電が必要なときには、その余剰のエネルギーがバッファのセルに対して均等に再分配されます。
自動バランシングの一時停止/再開の条件
自動バランシングのプロセスは、Avg(2 to 9)に対するセル 2~セル 9の電圧の偏差が閾値(本稿の例では±3mV)を下回り、なおかつAvgALLに対するセル 1とセル 10~セル 16の電圧の偏差も同じ閾値を下回ると一時停止します。この時点では、Avg(2 to 9)とAvgALLは完全には一致していないかもしれませんが、ほぼ等しくなっていることは間違いありません。これらの条件が満たされたら、アルゴリズムはスタンバイの状態に移行し、次のバランシングのトリガを監視します。
自動ACBのアルゴリズムがアクティブになると、バッテリ・システムに対する継続的なポーリングが実行されます。それにより、バランシングが必要かどうかが判断されます。トリガの条件はユーザが設定できるようになっています。デフォルトの設定では、16個のセル間において最大セル電圧と最小セル電圧の差が10mVを超えるとバランシングが開始するようになっています。
自動ACBのアルゴリズムは、一度起動したら、停止の条件が生じるまで動作を継続します。その条件が成立したらその時点で動作を停止し、次のトリガが生じるまで待機します。停止の条件については前述したとおりです。
過度なサイクル動作とエネルギーの無駄な消費を防ぐために、トリガ用の閾値(10mV)と停止用の閾値(±3mV)の間にはヒステリシスが設けられています。それにより、対処が必要な電圧の偏差が発生した場合だけバランシングが再開されます。この仕組みにより、効率が高まり、システムの寿命が延びます。
特に注意すべき事柄
ACBアーキテクチャにおいて、セルの電圧をサンプリングするためのハーネスとACB用のハーネスは同じ配線を共有しています。本連載のPart 3で説明したように、セルからフライバック回路の入力までの経路には抵抗RROUTEが存在します。この抵抗とバランシングに伴う多くの電流によって、ACB機能が働いている際には電圧降下が生じます。図7~図10に示すように、この電圧降下はセルの電圧の測定精度に影響を及ぼします。そのため、電圧の正確な測定値を得るには、ACBの機能を定期的に一時停止する必要があります。これについては、以下のようなことが言えます。
- 一時停止が頻繁に発生すると、バランシングの効率が低下します。
- 一時停止の回数があまりに少ないと、オーバーバランスが発生する可能性があります。
自動ACBのアルゴリズムは、観測された電圧の偏差に基づいて必要なバランシング時間を推定します。例えば、5mVの偏差ごとに約1分間のバランシングを実行するといった具合です。算出された推定時間が経過すると、電圧を正確に測定するためにバランシングが自動的に一時停止されます。その上で、アルゴリズムは次に実行する動作を決定します。
本稿の例では、タイミングについて上記のような適応型の戦略を採用しています。このことから、間隔が固定された方式と比較して効率が高まります。但し、この戦略は、充放電用の電流値がほぼ一定であるという前提に基づいています。この設計では、外部電源ではなくバッテリ・パック自体からバッファ用の電圧を直接供給することで電流の安定性を実現します。セルの電圧が3.0Vから4.2Vまで変化しても、電流値はほぼ一定に維持されます。
セルの電圧をサンプリングするためのハーネスとACB用のハーネスで同じ配線を共有すると、バランシングの際に測定誤差が生じます。その一方で、以下のような顕著なメリットが得られます。
- ハーネスの数を減らし、配線を簡素化することで、プリント回路基板のスペースを節約できます。
- バランシングの際に観測される電圧降下は、動作上の指標として利用できます。つまり、ACB回路が適切に機能しているか否かを確認することに役立ちます。
まとめ
今回で本連載は終了です。当然のことながら、ACB用のシステムのような複雑な設計のあらゆる側面について、体系的かつ詳細に説明するのは困難です。設計に関連する多くの複雑な要素、特にACBのソリューションで使用するソフトウェアのプログラミングについて、あらゆる事柄を網羅して解説することはできません。
本連載の最大の目的は、ACBに関心を持つ技術者やエレクトロニクスに熱中している方の好奇心を刺激することです。多くの読者が、本連載で紹介した設計を採用したり、それを基にシステムを構築したりすることを願っています。また、シンプルで効率の高いACBのソリューションの開発に向けて、継続的に革新を進めていただきたいと考えています。




