このページは機械翻訳を使用して翻訳されました。
翻訳品質のアンケートに 1 分ご協力ください。
Simscape Batteryと About:Energy によるバッテリーの急速充電
著者 Darryl Doyle and Yashraj Tripathy, About:Energy; Steve Miller and Sebastián Arias, MathWorks
About:Energy TSPMe と電気モデルを、 Simscape Batteryによって実現される詳細なパック モデルと統合することで、バッテリー管理システムの精度と安全性が確保され、バッテリー充電の分野における継続的な進歩が促進されます。
バッテリーの急速充電時間は、電気自動車 (EV) の設計における重要なパフォーマンス指標であり、EV 顧客にとって重要な懸念事項です。この記事では、About:Energy が開発したカスタム セル モデル ブロックとパラメーターとともにSimscape Battery™ を使用して、さまざまなバッテリー システム サイズに対して安全で堅牢な急速充電プロファイルを生成する方法を説明します。これには、SAE J1772 に準拠した DC レベル 1 (最大 80 kW) およびレベル 2 (最大 400 kW、レベル 3 とも呼ばれる) のバッテリー急速充電プロファイルが含まれます。この記事では、 Simscape™とSimscape Batteryのバッテリー パック ビルダーのワークフローを使用してカスタム バッテリー セル モデルをスケールアップする方法についても説明します (図 1)。
EV リチウムイオン電池セル内部のいくつかのプロセスは、負極内のリチウム拡散や電解質内のリチウムイオン輸送など、セルが充電できる最大速度に影響します。これらのプロセスは微視的スケールで発生し、個々のバッテリーセルの局所的な温度、充電状態 (SOC)、健全性状態 (SOH)、およびセルの化学特性によって制御されます。バッテリー モジュールおよびパック レベルでは、システムおよび DC 充電器の電流制限、熱管理戦略によるセル間の温度差、電気設計、制御戦略、センサーの配置、セル以外の電気抵抗、製造のばらつきなど、その他の要因も影響します。これらの追加要因により、急速充電速度がさらに制限される可能性があります。したがって、バッテリーの設計と検証のワークフローでは、これらすべての変数を考慮することが重要です。
バッテリーセルモデル
Simscape Batteryのバッテリー ビルダー機能を使用すると、About:Energy が提供するバッテリー セル ブロックを含む、単一のバッテリー セルのユーザー定義Simscapeブロックからバッテリー モジュールおよびパック モデルを自動的に作成できます。この記事では、About:Energy が提供する、ニッケルを多く含む高エネルギー 2170 セルの、以前に検証された 2 種類のバッテリー モデルを紹介します。
- 電解質を使用した熱単一粒子モデル (TSPMe)。急速充電制御などのタスクを実行するために必要な内部の電気化学状態または変数へのアクセスを提供します。
- 急速充電用に特別にパラメータ化された等価回路モデル (ECM) は、モジュールまたはパック レベルにスケールアップすると、比較的高速な計算時間を実現します。
Simscape Batteryライブラリには、等価回路アプローチと電気化学単一粒子モデルを使用するバッテリー セル モデル ブロックも含まれています (図 2)。これらは、R2023b および R2024a 以降、Simscape Batteryで利用可能になりました。
セルからモジュールへの実例
Simscape Batteryのバッテリー ビルダー機能を使用すると、バッテリー システム モデルのプロトタイプを迅速に作成し、さまざまな熱的および電気的境界条件と初期動作状態 (SOC と温度) の下で、さまざまなサブコンポーネント レベルのバッテリー急速充電時間を評価できます。
まず、バッテリー セル オブジェクトを定義し、このセル オブジェクトを About:Energy によって提供される対応するセル モデル ブロックにリンクする必要があります。まず、ECM をスケールアップします。ECMブロックを使用するには、まずAbout:Energyが提供する電気熱パラメータを読み込みます。これらのパラメータは cellData
という構造体に含まれています。
run("CellModelParameters.mlx") % Load cell ECM parameters (e.g., capacity, energy)
バッテリーセルオブジェクトを定義するには、Simscape Batteryのバッテリー ビルダー パッケージから Cell
クラスを次のようにインスタンス化します。
import simscape.battery.builder.* % Import battery builder package battCell = Cell(Geometry = CylindricalGeometry(... 'Height',simscape.Value(cellData.cellHeight,'m'),... 'Radius',simscape.Value(cellData.cellRadius,'m')), ... Capacity = simscape.Value(cellData.cellCapacity,"A*hr"), ... Energy = simscape.Value(cellData.cellNominalEnergy,"W*hr")); % Cell object
バッテリーセルオブジェクトをAbout:Energyカスタムブロックにリンクするには、CellModelOptions
プロパティは次のようになります。
battCell.CellModelOptions.CellModelBlockPath = "AE_Mathworks_lib/AE_mathworks_ECM"; disp(battCell.CellModelOptions) CellModelBlock with properties: CellModelBlockPath: "AE_Mathworks_lib/AE)_mathworks_ECM" BlockParameters: [1x1 struct]
この例では、16 個のバッテリー モジュールで構成された 400 ボルトの自動車用トラクション バッテリーを作成します。各バッテリー モジュールは、電気的に並列に接続された 36 個の円筒形セルと、電気的に直列に接続されたこれらの並列アセンブリ 6 個 (36p6s) で構成されています。セル コンポーネントを並列アセンブリにスケールアップし、さらにモジュールにスケールアップするコードを以下に示します。
battPSet = ParallelAssembly(Cell = battCell, NumParallelCells = 36,... Rows = 9, ModelResolution="Detailed",... NonCellResistance = "on",... AmbientThermalPath="CellBasedThermalResistance", ... CoolantThermalPath="CellBasedThermalResistance",... CoolingPlate="Bottom"); % Parallel assembly object battModule = Module(ParallelAssembly = battPSet, NumSeriesAssemblies = 6,... NonCellResistance = "on",... ModelResolution="Grouped",... SeriesGrouping = [1,4,1],... ParallelGrouping = [36,1,36],... AmbientThermalPath="CellBasedThermalResistance", ... CoolantThermalPath="CellBasedThermalResistance",... CoolingPlate="Bottom"); % Module object
あるいは、バッテリー ビルダー アプリを使用して、同じバッテリー設計とオブジェクトを定義することもできます (図 3)。
上記で定義したバッテリーオブジェクトからSimscapeモデルを自動的に生成するには、 buildBattery
関数を呼び出します。この関数を呼び出すときに、MaskParameters
名前と値のペアを “VariableNamesByType
” と定義すると、モデルの実行に必要なすべてのパラメータを含むスクリプトが生成されます。モデル作成前に、BatteryChart
オブジェクトを使用してバッテリーの定義と設計を検証できます。これは、3D 空間でバッテリー セルの形状と配置を視覚化するのに役立ちます。表 1 は、モジュールおよび並列アセンブリ オブジェクトに対してこれらの関数を使用した場合の一般的な出力を示しています。
バッテリー可視化コード | バッテリーモデル作成コード |
f = uifigure(Color="w");
BatteryChart(Battery=battPSet);
|
buildBattery(battPSet, Library= "detailedPSet",... MaskParameters = "VariableNamesByType"); |
f = uifigure(Color="w");
BatteryChart(Battery=battModule);
|
buildBattery(battModule, Library= "groupedModule",... MaskParameters = "VariableNamesByType"); |
次に、生成されたバッテリー モデルをテストするために使用される急速充電電気負荷を定義します。これを実現するには、まずバッテリーセルの急速充電能力を推定する必要があります。
セルレベルの急速充電
急速充電中は、バッテリーの動作条件と電気化学特性に応じてリチウムメッキのリスクが高まります。最終的に、リチウムめっきの重要な原動力は、アノード電解質界面における固相と液相間の局所的な電位差であり、これは温度、拡散制限、SOC、充電率などの多くの要因の影響を受けます。一般的に、低温では輸送現象が遅くなり、充電中の電位差が大きくなります。したがって、セル内の温度と SOC の違いにより、セルのさまざまな領域でリチウムめっきのリスクが高まります。これらの違いは、特定のセル設計とセルを取り囲む熱境界条件を考慮すると常に存在します。表 2 は、安全で高速な充電プロファイルを導き出すために考慮する必要がある主要な内部変数と境界条件を示しています。
変数 | 説明とコード |
陽極電位 | リチウムめっきのリスク増加と劣化の加速の指標として、Li/Li+ 参照電極に対する負極の静電電位を使用します。充電中、セル内部で起こる物質移動と化学反応プロセスにより、この電位は低下します。リチウムめっきのリスクを減らすには、この電位が 0 V より大幅に下がらないようにする必要があります。この例では、この電位しきい値は任意に 50 mV に設定されます。
AnodePotentialThreshold = 0.05; % Unit:V |
バッテリー温度 | 劣化を制限し、熱暴走のリスクを軽減するには、セル温度を動作限界以下に維持する必要があります。 TemperatureThreshold = 55 + 273.15; % Unit:K |
初期バッテリー温度 | 気温が高くなると、電流が高くなります。最大動作温度に達すると、制御システムは電流を低下させ、充電時間を長くします。初期温度が低いほど、高い熱発生を抑えるための温度差が大きくなりますが、温度が低いと最大電流も制限されます。したがって、最適な初期温度が存在し、シミュレーションまたは物理テストを使用して見つけることができます。 InitialCellTemperature = 35 + 273.15; % Unit:K |
熱管理境界条件 | この例では、次の図に示すように、冷却プレートにポッティングされた「底面冷却」バッテリーセルを検討します。セルの底面から冷却チャネル内のバルク冷却剤までの熱抵抗は 5 K/W と一定であると仮定します。
CellThermalPathResistance = 5; % Unit:K/W |
バッテリー端子電圧 | 充電中はセル電圧が上昇します。過電圧または過充電状態を防ぐため、バッテリー電圧はセルサプライヤーが指定した最大値を超えることはできません。 MaximumBatteryVoltage = 4.2; % Unit:V |
バッテリーが完全に充電されました | 充電段階の終わりに、端子電圧は最大レベルに向かって上昇します。最適な急速充電を保証し、過充電状態を回避するには、定電圧ステップ (CV) で電流を減らす必要があります。この記事では、電流値が定格セル容量の 1/10 を下回ると、完全に充電された状態 (100% SOC) に達します。 FullyChargedCurrentThreshold = cellData.cellCapacity/10; % Unit:A |
最大充電電流 | この値は、特定の条件 (SOC、SOH、温度) に対してバッテリー製造元によって指定される必要があります。一般に、バッテリーは短時間であれば高い充電電流を受け入れることができ、長時間であれば低い充電電流を受け入れることができます。 MaximumChargeCurrent = 30; % @ 0% SOC, instantaneous limit, Unit:A |
急速充電プロファイル手法
ジェリーロール全体のアノード電位を監視するために、 Simscape言語と About:Energy TSPMe モデルをベースとして、高さで離散化された電熱セル レベル モデルが作成されました (図 4)。熱モデルは高さに沿って離散化され、ベース冷却から生じる熱勾配を捉えます。離散化された要素は、電気的には並列、熱的には直列に接続され、セル内部を複製して、より高い内部状態の解像度を可能にします。要素を放射状に分割することで、より高く、より正確な状態分解能を実現できます。About:Energy はSimscape 2D 熱モデル ブロックも提供しています。
3 つの PI コントローラは最大許容電流を低減し、安全な動作条件を維持します (図 5)。
最適な充電電流の導出には次の戦略を使用します (図 6)。
- 0% SOC および選択した初期温度で、サプライヤーが許容する最速速度でバッテリーを充電します。
- 陽極電位が指定されたしきい値に達した場合は、電流を低減します。
- バッテリーセルの最も熱い部分が最大動作温度に達した場合は、出力を下げます。
- 過充電を防ぐために、端子電圧が最大電圧制限に達した場合は、出力を下げます。
- 必要に応じて、電解液中のリチウム濃度など、他の状態に基づいて他のディレーティング条件を追加します。
- 定電圧ステップが C/10 に達すると充電は停止します。
- 最終的な供給電流信号を最終的な急速充電電流プロファイルとして保存します。
cellSimulation = sim("CellLevelFastCharge.slx","StartTime","0","StopTime","3600"); run("PlotCellSimulation.mlx");
表 3 は、仮定に基づいて離散化されたセルレベルのシミュレーション結果をまとめたものです。
SOC ウィンドウ | 急速充電時間(分) | 条件 |
0~80% | 14 | @ 35 °C 初期温度、BoL、および想定される制約 |
0~100% | 30 | @ 35 °C 初期温度、BoL、C/10 CV 条件 |
セル急速充電マップ
前のセクションで確立された急速充電コントローラは、想定される初期温度と SOC に対してのみ有効な電流プロファイルを出力し、これらの状態の初期値または動的値の不均一性は考慮しません。異なる初期条件で複数のシミュレーションを実行することで、温度と SOC (使用開始時) の関数として最大充電電流のより一般的な 2 次元マップを導き出すことができます。
Stateflow®ロジックを使用して、初期条件のセットごとに、電流をゼロアンペアから急速に増加させ、アノード電位のしきい値または端子電圧のしきい値に達するまでシミュレーションを実行することができます(図7)。これらのしきい値のいずれかに達すると、制限変数を所定の期間そのしきい値で一定に維持するために電流を低下させます。この記事では、充電などの長時間のイベントを模倣するために、この期間は 60 秒 (連続制限と呼ばれることもあります) に任意に定義されます。
一般的に、持続時間が長くなると、電流制限は低くなり、制限が厳しくなります。シミュレーションは指定された時間枠で停止し、最終的な電流値を制限として保存します (図 8)。結果として得られるマップは、アノード電位などの内部電気化学状態にアクセスできない、以前に定義したシステムレベルのシミュレーションへの入力として使用できます。
InitialCellTemperatureVector = [5,15,25,35,45,50] + 273.15; % Unit: K InitialSOCVector = [0,0.05,0.1,0.2,0.5,0.6,0.8,0.95]; % Unit: - for initTempIdx = 1:numel(InitialCellTemperatureVector) for initSOCIdx = 1:numel(InitialSOCVector) InitialCellTemperature = InitialCellTemperatureVector(initTempIdx); InitialSOC = InitialSOCVector(initSOCIdx); cellSimulations(initTempIdx).SOCPoint(initSOCIdx).Data = sim("CellLevelFastChargeLimitsStateFlow.slx","StartTime","0","StopTime","60"); cellCurrentLimit(initTempIdx,initSOCIdx) = cellSimulations(initTempIdx).SOCPoint(initSOCIdx).Data.simout.Data(end); save cellCurrentLimit end end newCellCurrentLimit = [cellCurrentLimit, zeros(1,numel(cellCurrentLimit(:,1)))']; figure("Color","w") [xq,yq]= meshgrid([5:1:50]+273.15, 0:0.05:1); vq = griddata(InitialCellTemperatureVector,[InitialSOCVector,1],newCellCurrentLimit',xq,yq); mesh(xq,yq,vq) xlabel('Temperature (°C)') ylabel('State of Charge (-)') zlabel('Current Limit (A)') view([-5 3.5 5])
並列アセンブリレベルの急速充電
EV バッテリー パックを製造する場合、通常、最初にバッテリー セルを他のセルと電気的に並列に接続して並列アセンブリを形成し、バッテリー容量とエネルギーを拡大します。並列アセンブリ サブシステムの急速充電プロファイルを計算するには、取得したセルの急速充電プロファイルに並列セルの数を掛けるだけです。この数値 Pによって、結果として生じる急速充電電流は、充電ステーションにある一般的なバッテリー DC 充電器の最大電流制限を超える可能性があります。これは、システムレベルの急速充電時間を予測する際に留意すべき重要な制約です。
特定のバッテリーエネルギーと固定されたセル総数を考えると、400 ボルトのバッテリー パックでは通常、800 ボルトのシステムよりも並列に接続されるセルの数が多くなります。最初のセクションで導出された最適なセル急速充電プロファイルを利用する場合、並列セルの数が多いほど急速充電電流が高くなります。一般的な400ボルトシステムでは、より高い電流または数値Pが大きいほど、充電ステーションによって制限される可能性が高くなります (0% SOC で充電を開始する場合)。この制限により、セルの急速充電機能が活用されず、充電速度が低下する可能性があります。表 4 は、さまざまな DC EV 充電器の一般的な最大電流を示しています。
一般的なオフボード充電器の電力 | 標準最大連続電流 |
100kW | 100~250 A |
350kW | 350~500 A |
図 9 は、500 アンペアのスーパーチャージャー電流制限と、一般的な 400 ボルトおよび 800 ボルト システムの標準的なスケールアップされた並列アセンブリ レベルの急速充電プロファイルを示しています。並列セル数が多いと400ボルトシステム(与えられたバッテリーエネルギーに対して)に関連するため、任意に「36P」並列アセンブリを400ボルトシステムの代表として定義します。次に、このシステムを800ボルトシステムを代表する「18 P」並列アセンブリと35°Cで比較します。
run("parallelAssemblyProfile.m")
グラフに示されているように、400 ボルト システムでは、最初はセルの充電能力をすべて利用することができないため、14 分で 0 ~ 80% まで充電するという予測よりも充電時間が遅くなる可能性があります。
一般に、電気的に接続されたバッテリー アセンブリの充電率は、最も冷たいセル上の最も冷たいスポットと、最も高い SOC を持つセル内の最も高い SOC スポットによって決まります。したがって、急速充電制御は、並列組立工場モデルから取得された最小セル温度と最高 SOC 信号に基づいて行われます。
バッテリーセルは通常、冷却プレート(電気絶縁層も含む)と接触する熱伝導材料の上に配置されます。何らかの不均一性(例えば、セルと冷却プレートの間に熱伝導材料を適用するなど)を想定して、この熱経路のランダムな変化を定義します。
ParallelAssembly1.CoolantResistance = 14 + (30-14)*rand(36,1)'; % Cell level coolant thermal path resistance, K/W
Simscapeでモデル化できるが、この記事では明示的に説明されていない、考慮すべきその他の重要な側面は次のとおりです。
- セルの製造によるセル間の内部抵抗と容量のばらつき。
- コレクター プレートの設計が適切に行われていない場合、わずかな電流の不均衡が発生する可能性があります。
- 周囲への異なる熱経路(これらのダイナミクスは通常より遅くなります)。
- 冷却水制御:通常、電気自動車には、バッテリー システム (およびその他のコンポーネント) から熱を除去するための固定のチラーまたは冷却機能 (例: 5 kW) が備わっています。現実的な冷却剤制御も、バッテリーの急速充電時間に大きな影響を与えます。
並列アセンブリブロックをSimulink ®に統合し、セルの電気化学的能力を用いて導出した2D充電マップをスケールアップして追加することができます。また、並列アセンブリ内の最大セル温度を制限するために PI コントローラも追加しました (図 10)。
並列アセンブリシミュレーションを実行し、結果をプロットします (図 11)。
run("detailedPSet_param.m"); set_param("ParallelAssemblyLevelFastCharge","SimscapeLogType",'all') pSetSimulation = sim("ParallelAssemblyLevelFastCharge.slx","StartTime","0","StopTime","5200"); run("PlotParallelAssemblySimulation.mlx"); % Plot results
概要プロットに示されているように、並列アセンブリは、シミュレーションの開始時に充電器の 500 アンペアの最大電流によって制約されます。さらに、最も高温のセルの温度が 55 °C に達すると、熱ディレートが発生し、シミュレーション時間が遅くなります。バッテリーの動的温度を視覚化するには、次のコードに示すようにバッテリー シミュレーション ログ オブジェクトを作成します (図 12)。
pSetSimLog = BatterySimulationLog( battPSet, pSetSimulation.simlog.ParallelAssembly1); pSetSimLog.SelectedVariableUnit = "degC"; f = uifigure("Color","w"); g = uigridlayout(f, [1,1]); parallelAssemblyChart = BatterySimulationChart(Parent = g, ... BatterySimulationLog = pSetSimLog); parallelAssemblyChartColorBar = colorbar(parallelAssemblyChart); ylabel( parallelAssemblyChartColorBar, strcat("Cell temperature", " (", pSetSimLog.SelectedVariableUnit,")") ,'FontSize',14 ); parallelAssemblyChartColorBar = colormap(parallelAssemblyChart);
動的バッテリー プロットに示されているように、セル間には約 5 °C の温度差があります。この違いは主に、冷却剤への熱経路の仮定におけるランダムな変動によるものです。表5に並列アセンブリシミュレーションの結果を示します。0~80% SOC の急速充電時間は、主にシステムレベルの制限と熱の想定により 10 分長くなりました。
SOC ウィンドウ | 急速充電時間(分) | 条件 |
0~80% | 24 | 初期温度35℃、BoL |
0~100% | 43 | @ 35 °C 初期温度、BoL、C/10 CV 条件 |
R2024aまでのカスタムセルブロックのガイドライン
Simscape のバッテリー パック ビルダーには、カスタム セル ブロックを効果的に使用するためのガイドラインがいくつかあります。
- カスタムセルモデルは、
power_dissipated
と呼ばれる変数をもつことができません。 - 熱効果が必要な場合、モデルには熱ドメイン タイプのポートまたはノードが少なくとも 1 つ必要です。
- Simulinkキャンバスでキーであるセルモデルブロック変数を表示する必要がある場合(たとえば、Probeブロックを使用する場合)、この変数は
ExternalAccess
に制限のない公開設定にする必要があります。それ以外の場合、変数は後処理のシミュレーション ログにのみ表示されます。
シミュレーションをパックするモジュール
上記と同じプロセスに従って、上記で生成されたモジュール ブロックと、パックなどのより大きなバッテリー ブロックのSimulinkモデルを作成できます。次に、これらのブロックを、2D セル充電マップに依存する同じ並列アセンブリ充電制御ブロックに結合できます。表 6 にこれらのシミュレーションの概要を示します。一般に、現在のモジュールおよびパックの設計では、温度分布の拡大と一部のセルの温度上昇により、急速充電時間がわずかに長くなります。
モデル | 結果/ダイナミックバッテリーチャート |
|
0~80%:25分
|
|
0~80%:27分
|
まとめ
- Simscape Batteryおよび About:Energy ブロックとパラメータを使用したバッテリーの急速充電時間の調査により、個々のセルのモデリングからパックのシミュレーションまでの体系的なマルチスケール アプローチの重要性が実証されました。バッテリー管理システムの精度と安全性を確保し、バッテリー充電の分野における継続的な進歩を強化するために、About:Energy TSPMe と電気モデルをSimscape Batteryによって実現される詳細なパック モデルと統合することの重要性を強調します。これらの予測される急速充電時間に関する主な不確実性は、主にモデルの解像度(例:電熱離散化)、モデリングの仮定、および使用される電気化学/ECM モデルの精度によるものです。一般に、モデルの離散化または解像度が高いほど、より正確な結果が得られます。
- セルからパックまでのワークフローで示されているように、バッテリーの急速充電時間はさまざまな変数の関数であり、バッテリー パックの設計が大きな影響を与える可能性があります。セル レベルから始めると、バッテリー セルを充電できる最速の速度は、小規模で発生するリチウムの拡散および輸送プロセスに依存します。モジュールおよびパック レベルでは、DC 充電器の電流制限、並列セル数、バッテリー パックの公称電圧 (400 ボルトと 800 ボルト)、セル内およびセル間の温度差、セル内およびセル間の SOC 差、非セル抵抗などの他の変数も重要になります。この記事で示したように、これらの変数、特に温度差は充電速度に重要な影響を及ぼす可能性があるため、バッテリーの仮想設計および検証ワークフローでこれらを考慮することが非常に重要です。
次の図は、この記事で調査した 400 ボルト システムのセルからパックへのバッテリー急速充電時間の予測を示しています (図 13)。
batteries = ["Cell","Parallel Assembly","Module", "Pack"]; batteries0To80ChargeTimes = [ChargeTime0To80 pSetChargeTime0To80 moduleChargeTime0To80 packChargeTime0To80]; batteries0To100ChargeTimes = [ChargeTime0To100 pSetChargeTime0To100 moduleChargeTime0To100 packChargeTime0To100]; figure("Color","w") subplot(1,2,1) bar(batteries,batteries0To80ChargeTimes) ylabel("0 to 80% SOC Charge Time (min)") grid on subplot(1,2,2) bar(batteries,batteries0To100ChargeTimes) ylabel("0 to 100% SOC Charge Time (min)") grid on
公開年 2024