Main Content

adjacentPairCorrelationModel

直列接続リチウムイオン バッテリー パックの他のセルと比較して最悪のセルを特定

R2023a 以降

説明

adjacentPairCorrelationModel(data) は、data のバッテリー データを解析して直列接続リチウムイオン バッテリー パックの隣接するセル間の電圧の相関係数を求め、その結果をプロットします。

隣接するセルのペア間の相関係数が低いほど、そのペアのセルの一方に内部短絡回路などの故障状態がある可能性が高くなります[1]。相関係数が最も低いセルのペアがプロットの凡例で示されます。この構文を使用すると、パック内の "最悪のセル" のインデックスも表示されます。

アルゴリズムで data を収集する際、バッテリーの活動には何の制限も課されません。バッテリーの動作シーケンスは、充電相、放電相、待機相など、いずれの段階でもかまいません。

adjacentPairCorrelationModel(data,Name=Value) は、1 つ以上の名前と値の引数で指定された追加のオプションを組み込みます。たとえば、バッテリー停止時のより高いレベルのノイズに対応するには、引数 SquarewaveAmp を既定値の 0.003 より大きい値に増やします。

[worstcell,corrcf] = adjacentPairCorrelationModel(___) は、最悪のセルのインデックス worstcell と各隣接ペア間の推定される相関係数を返します。この構文は、前述の任意の入力引数の組み合わせで使用できます。

すべて折りたたむ

8 セルのバッテリー パックの動作プロファイルを表すデータを読み込みます。そのうちの 1 つのセルで内部短絡回路が発生しています。プロファイルには待機相、駆動相、充電相、および平衡相が含まれます。データは、サンプル時間 (列 1)、バッテリーの電圧 (列 2 ~ 9)、およびパックの電流 (列 10) が格納された 10 個の列で構成されます。

load internalShortCircuit.mat internalShortCircuit

隣接ペア相関モデルに必要なのはセルの電圧だけです。電圧の列をデータ セット data に抽出します。

data = internalShortCircuit(:,2:end-1);

バッテリーの電圧をプロットします。

plot(data)
legend('Voltages (V)')
title('InternalShortCircuit Dataset - Voltages')
ylabel('Voltage (V) Values')

電圧は密接に追従しているように見えますが、このスケールではそれぞれを区別するのは困難です。

それぞれの電圧がより明確に見えるように "t" = 4000 以降の領域にズームインします。

xlim([4000 4010])
ylim([3.4 3.6])
title('Voltage Separation')
ylabel('Voltages (V)')

電圧は互いに密接に追従しています。他のセルと比べて明らかに劣化しているセルはありません。

adjacentPairCorrelationModel を使用して最悪のセルを特定します。

adjacentPairCorrelationModel(data)

ans = 5

相関モデルにより、セル ペア 5,6 が最悪のペアとして識別され、セル 5 が最悪のセルとして識別されます。

table に格納されたデータを読み込み、最初の 2 行を表示します。

load internalShortCircuitTbl.mat internalShortCircuitTbl
head(internalShortCircuitTbl,2)
    Time    Cell1     Cell2     Cell3    Cell4     Cell5     Cell6     Cell7     Cell8    Current
    ____    ______    ______    _____    ______    ______    ______    ______    _____    _______

     0           0         0        0         0         0         0         0        0       0   
     5      4.0037    4.0018    4.002    4.0012    4.0029    4.0012    4.0042    4.002       0   

隣接ペア相関モデルには Current の値は必要ありません。時間と電圧の値を timetable data に抽出します。

data = internalShortCircuitTbl(:,1:end-1);
head(data,2)
    Time    Cell1     Cell2     Cell3    Cell4     Cell5     Cell6     Cell7     Cell8
    ____    ______    ______    _____    ______    ______    ______    ______    _____

     0           0         0        0         0         0         0         0        0
     5      4.0037    4.0018    4.002    4.0012    4.0029    4.0012    4.0042    4.002

adjacentPairCorrelationModel を使用して最悪のセルを特定します。Time を使用して時間変数を指定します。

adjacentPairCorrelationModel(data(:,2:end),Time=data.Time)

ans = 5

関数により、最悪のペアとそのペアのうちの最悪のセルが特定されます。

timetable に格納されたデータを読み込み、セルの電圧を data に抽出します。

load internalShortCircuitTT.mat internalShortCircuitTT
data = internalShortCircuitTT(:,1:end-1);

解析結果を格納する出力引数を使用して adjacentPairCorrelationModel を実行します。

[worstcell,corrcoef] = adjacentPairCorrelationModel(data);

最悪のセルを特定します。

iwc = worstcell
iwc = 5

推定される相関係数曲線をプロットします。凡例には、セルの名前にアクセスするために dataVariableNames プロパティを使用します。このプロット方法では、凡例の各セルの曲線は、そのセルと data でその右にあるセルの間の相関係数曲線を表します。

たとえば、Cell1Cell1Cell2 の間の相関曲線を表します。Cell8Cell8Cell1 の間の相関曲線を表します。

plot(corrcoef.Time,corrcoef.Variables)
title('Correlation Coefficient Curves')
legend(corrcoef.Properties.VariableNames)
ylabel('corrcoef')

関数で最悪のセルとして識別されたセル 5 で、ペアの相関係数曲線が最も低くなっています。

入力引数

すべて折りたたむ

バッテリー セルの電圧。ns 個の行と nc 個の列または変数を含む tabletimetable、または行列として指定します。ここで、ns はサンプルの数、nc はセルの数です。

測定データに時間についての明示的な列も含まれている場合は、adjacentPairCorrelationModel を呼び出すときに、その列を引数 data から除外する必要があります。ただし、プロットするときは、名前と値の引数 Time を使用して時間データにアクセスできます。

data の形式が timetable の場合は、dataadjacentPairCorrelationModel で直接使用できます。追加の解析やプロットのために情報を抽出するには、timetable の data.Timedata.Variables などのプロパティを使用します。

例: adjacentPairCorrelationModel(data(:,2:end),Time=data(:,1)) は、行列または table data の電圧データを使用してセルの電圧の相関を解析し、その結果を最初の列の時間データに対してプロットします。

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペア自体は順不同で構いません。

例: adjacentPairCorrelationModel(data,WindowSize=size(data,1)/2) は、サンプル数が偶数の場合にウィンドウ サイズをサンプル数の半分に設定します。

プロットに使用する時間データ。長さ ns の数値ベクトル、duration ベクトル、または datetime ベクトルとして指定します。ここで、ns は data のサンプル数です。'Time' は、data に使用するデータセット内の列にすることも、別個のベクトルにすることもできます。

datatimetable の場合、data 内の時間情報が優先され、'Time' の指定は無視されます。

data が table または行列で、'Time' が指定されていない場合、関数は結果をインデックス ベクトル [1:ns] に対してプロットします。

例: adjacentPairCorrelationModel(data,Time=tv) は、data と行数は同じですが data とは別の時間ベクトル tv を指定します。

相関係数を計算する移動ウィンドウの長さ。正の整数スカラーとして指定します。既定値は、data の行数 (サンプル数) に等しくなります。

  • ウィンドウ サイズが奇数の場合、各移動ウィンドウの中心は data の現在の要素になります。たとえば、ウィンドウ サイズが 49 の場合、ウィンドウの中心はウィンドウ内の 25 番目の要素です。

  • ウィンドウ サイズが偶数の場合、各ウィンドウの中心は現在の要素とその前の要素の間になります。

  • 十分な点が残っていないためにウィンドウが最後まで埋まらない場合、最終のウィンドウが埋まるようにウィンドウ サイズが切り捨てられます。

ウィンドウ サイズは、故障に対する感度とノイズに対する耐性のバランスを考慮して設定します。WindowSize が小さいと、相関係数がノイズやそれによる電圧変化の影響を受けやすくなり、故障検出で誤検出が発生することがあります。一方、WindowSize が大きいと、電圧の変化が検出されにくくなり、見落とされる可能性があります。

例: adjacentPairCorrelationModel(data,WindowSize=size(data,1)/2) は、サンプル数が偶数の場合にウィンドウ サイズをサンプル数の半分に設定します。

data に追加される矩形波の振幅。非負の数値スカラーまたは 0 (矩形波を無効にする場合) として指定します。

バッテリーが停止しているときは、相関係数の計算でノイズの影響が大きくなり、健全なペアの係数がゼロに近くなることで最悪のセルの正しい識別が妨げられます。矩形波を追加すると、係数の値がノイズ フロアの上まで上昇します。適切な矩形波の振幅は、data のノイズ レベルの 3 倍です。この振幅にすると、健全なペアの相関係数が約 0.9 になり、実際は故障しているのに相関係数が低いセルを正しく検出できます。

例: adjacentPairCorrelationModel(data,SquarewaveAmp=0.1) は、矩形波の振幅を 0.1 に設定します。

出力引数

すべて折りたたむ

最悪のセルのインデックス。隣接するセルとの corrcf 曲線が最も低いセルに対応する整数として返されます。つまり、最悪のセルは隣接する近傍から最も逸脱しているセルです。

2 つの最小の corrcf 曲線が同じセルを共有していない場合、次のようにして最悪のセルが判定されます。

  • 最も低い corrcf 曲線をもつ隣接ペアが最悪のセルを含むペアであるものとして識別されます。

  • このペアの 2 つのセルの生電圧が比較されます。電圧が低いほど劣化の兆候があります。生電圧の低い方のセルが最悪のセルとして識別されます。

たとえば、セル ペア 4,5 の corrcf 曲線が最も低く、セル ペア 3,4 と 5,6 のどちらの corrcf 曲線も 2 番目に低い隣接ペアの corrcf 曲線より高いとします。セル 4 の生電圧がセル 5 の生電圧より低ければ、セル 4 が最悪のセルとして返されます。

data の隣接する列の各ペアの相関係数。table、timetable、または行列として返されます。corrcf のデータ型は data のデータ型と一致します。

たとえば、corrcf(:,1) はセル 1 とセル 2 の間の相関係数曲線を表します。8 セルのバッテリー パックの場合、corrcf(:,8) はセル 8 とセル 1 の間の相関係数曲線を表します。

参照

[1] Xia, Bing, Yunlong Shang, Truong Nguyen, and Chris Mi. “A Correlation Based Fault Detection Method for Short Circuits in Battery Packs.” Journal of Power Sources 337 (January 2017): 1–10. https://doi.org/10.1016/j.jpowsour.2016.11.007.

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2023a で導入