Нелинейная оценка состояния деградирующей системы батареи

В этом примере показано, как оценить состояния нелинейной системы с помощью сигма-точечного фильтра Калмана в Simulink®. Пример также иллюстрирует, как разработать основанный на событии Фильтр Калмана, чтобы обновить системные параметры для более точной оценки состояния. Пример запускается или с Control System Toolbox™ или с System Identification Toolbox™. Пример не требует Predictive Maintenance Toolbox™.

Обзор

Рассмотрите модель батареи со следующей эквивалентной схемой [1]

Модель состоит из источника напряжения$E_m$, последовательного резистора$R_0$ и одного блока RC$R_1$ и$C_1$. Батарея чередуется между зарядкой и разрядом циклов. В этом примере вы оцениваете состояние заряда (SOC) модели батареи использование измеренных токов, напряжений и температур батареи. Вы принимаете, что батарея является нелинейной системой, оцените SOC использование сигма-точечного фильтра Калмана. Мощность батареи ухудшается с каждым циклом заряда выброса, давая неточную оценку SOC. Используйте основанный на событии линейный Фильтр Калмана, чтобы оценить емкость батареи когда переходы батареи между зарядкой и разрядом. Предполагаемая способность в свою очередь может использоваться, чтобы указать на состояние здоровья батареи.

Модель Simulink содержит три главных компонента: модель батареи, блок сигма-точечного фильтра Калмана и основанный на событии блок Фильтра Калмана. Дальнейшие объяснения даны в следующих разделах.

open_system('BatteryExampleUKF/')

Модель батареи

Модель батареи с термальными эффектами реализована с помощью языка Simscape.

Уравнениями изменения состояния для модели батареи дают:

$$ \frac{d}{dt} \left(
\begin{array}{cc}
 SOC \\
 U_{1}
\end{array} \right) = \left(
\begin{array}{cc}
 0 \\
 -\frac{1}{R_1(SOC,T_b)*C_1(SOC,T_b)}U_1
\end{array} \right) + \left(
\begin{array}{cc}
 -\frac{1}{3600*C_q} \\
 \frac{1}{C_1(SOC,T_b)}\end{array} \right)I
+ W
$$

то, где$R_1(SOC,T_b)$ и$C_1(SOC,T_b)$ тепловой и зависимый резистор SOC и конденсатор в блоке RC,$$ U_1 $$ является напряжением через конденсатор$C_1$,$I$ текущий вход,$T_b$ температура батареи,$C_q$ емкость батареи (модуль: А-ч), и$W$ шум процесса.

Входные токи являются случайным образом сгенерированными импульсами, когда батарея разряжается и постоянная, когда батарея заряжается как показано в следующем рисунке.

Уравнением измерения дают:

$$ \begin{array} {ll}
E = E_m(SOC,T_b) - U_1 - IR_0(SOC,T_b) + V
\end{array} $$

где$E$ измеренное напряжение выводится,$R_0(SOC,T_b)$ является последовательным резистором,$E_m = E_m(SOC,T_b)$ является электродвижущей силой из источника напряжения и$V$ является шумом измерения.

В модели,$R_0, R_1, C_1$ и$E_m$ 2D интерполяционные таблицы, которые зависят от температуры батареи и SOC. Параметры в интерполяционных таблицах идентифицированы с помощью экспериментальных данных [1].

Оценка состояния заряда (SOC)

Чтобы использовать блок сигма-точечного фильтра Калмана, или MATLAB или функции Simulink для состояния и уравнений измерения должны быть заданы. Этот пример демонстрирует, что использование функций Simulink.Since сигма-точечные фильтры Калмана является фильтрами дискретного времени, сначала дискретизирует уравнения состояния. В этом примере используется Эйлерова дискретизация. Позвольте времени выборки быть$$ Ts $$. Для общей нелинейной системы $\dot{x} = f(x,u)$система может быть дискретизирована как $x_{T+1} = x_{T} + f(x_{T},u_{T})*Ts$

Векторы состояния нелинейной системы клеточного содержания

$$ x_T = \left( \begin{array}{cc} SOC_T \\ U_{1_T} \end{array} \right) $$.

Применение Эйлеровой дискретизации дает следующие уравнения:

$$
\left(
\begin{array}{cc}
 SOC_{T+1} \\
 U_{1_{T+1}}
\end{array} \right) = \left(
\begin{array}{cc}
 SOC_{T} \\
 U_{1_{T}}
\end{array} \right) + \left(
\begin{array}{cc}
 -\frac{1}{3600*C_q}I \\
 -\frac{1}{R_1(SOC_T,T_b)*C_1(SOC_T,T_b)}U_1+\frac{1}{C_1(SOC_T,T_b)} I
\end{array} \right)Ts
+ W_T
$$

Дискретизированное уравнение изменения состояния реализовано как функция с именем Simulink "batteryStateFcn" показанный ниже. Входной параметр функции x вектор состояния в то время как функциональный выход xNext вектор состояния на следующем шаге, вычисленное использование дискретизировало уравнения изменения состояния. Необходимо задать размерности сигнала и тип данных x и xNext. В этом примере, размерности сигнала для x и xNext 2, и тип данных является двойным. Дополнительные входные параметры являются температурой, оцененной способностью, и текущий. Обратите внимание на то, что дополнительные входные параметры являются входными параметрами к уравнениям изменения состояния и не требуемые блоком UKF.

Функция измерения также реализована как функция с именем Simulink "batteryMeasurementFcn" как показано ниже.

Сконфигурируйте параметры блоков можно следующим образом:

Во вкладке System Model задайте параметры блоков как показано:

Вы задаете следующие параметры:

  • Функция в изменении состояния: batteryStateFcn.

Имя simulink функции, определяемой ранее, которая реализует дискретизированное уравнение изменения состояния.

  • Шум процесса: Additive, с изменяющейся во времени ковариацией$\left[ \begin{array}{cc} 2e-8 & 0 \\ 0 & 3e-7 \end{array} \right]$. Additive означает, что шумовой термин добавляется к сигналам финала непосредственно.

Шум процесса для SOC и$U_1$ оценивается на основе динамических характеристик системы клеточного содержания. Батарея имеет номинальную мощность 30 А-ч и подвергается циклам выброса/заряда в средней амплитуде тока 15 А. Поэтому один разряд или зарядка процесса заняли бы приблизительно 2 часа (7 200 секунд). Максимальное изменение составляет 100% для SOC и приблизительно 4 вольта для$U_1$.

Максимальные изменения на шаг в SOC и$U_1$$max(|dSOC|) \approx \frac{100\%}{3600*2}*Ts$ и$max(|dU_1|) \approx \frac{4}{3600*2}*Ts$, где$T_s$ время выборки фильтра. В этом примере,$T_s$ собирается быть 1 секундой.

Шум процесса$W$:

$$ W = \left[ \begin{array}{cc} (max(|dSOC|))^2 & 0 \\ 0 & (max(|dU_1|))^2 \end{array} \right] \approx \left[ \begin{array}{cc} 2e-8 & 0 \\ 0 & 3e-7 \end{array} \right] $$.

  • Начальное состояние$$ \left( \begin{array}{cc} 1 \\ 0 \end{array} \right) $$:.

Начальное значение для SOC принято, чтобы быть 100% (полностью заряженная батарея), в то время как начальное значение для$U_1$ установлено, чтобы быть 0, когда у нас нет предшествующей информации$U_1$.

  • Начальная ковариация:

Начальная ковариация указывает, насколько точный и надежный исходные предположения. Примите, что максимальная ошибка исходного предположения составляет 10% для SOC и 1 В для$U_1$. Начальная ковариационная матрица собирается быть$$ \left[ \begin{array}{cc} 0.01 & 0 \\ 0 & 1 \end{array} \right] $$.

  • Недушистые Параметры Преобразования: установка основана [2]

     - Alpha: 1. Determine the spread of sigma points around x. Set Alpha to be 1 for larger spread.
     - Beta: 2. Used to incorporate prior knowledge of the distribution. The nominal value for Beta is 2.
     - Kappa: 0. Secondary scaling parameter. The nominal value for Kappa is 0.
  • Функция в измерении: batteryMeasurementFcn.

имя simulink функции, определяемой ранее, которая реализует функцию измерения.

  • Шум измерения: Additive, с независимой от времени ковариацией 1e-3.

Шум измерения оценивается на основе точности измерительного оборудования. Метр напряжения для измерения напряжения батареи имеет приблизительно 1%-ю точность. Напряжение батареи составляет приблизительно 4 В. Эквивалентно, мы имеем$max(dE_m) \approx 4*1\% = 0.04$. Поэтому набор$V = (max(dE_m))^2 \approx 1e-3$.

  • Размер шага.$Ts$

Оценка ухудшения батареи

Ухудшение батареи моделируется путем уменьшения способности$C_q$. В этом примере емкость батареи собирается уменьшить цикл 1 А-ч за заряд выброса, чтобы проиллюстрировать эффект ухудшения. Поскольку скорость деградации способности не известна заранее, установите уравнение состояния$$ C_q $$ быть случайным обходом:

$C_{q_{k+1}} = C_{q_k} + W_{C_q}$

где$k$ количество циклов заряда выброса и$W_{C_q}$ является шумом процесса.

Батарея сконфигурирована, чтобы автоматически заряжаться, когда состояние заряда батареи в 30% и переключатель к разряду, когда состояние заряда в 90%. Используйте эту информацию, чтобы измерить емкость батареи путем интеграции тока$I$ по заряду или циклу выброса (подсчет кулона).

Уравнение измерения для$C_q$:

$$ C_{q_k}^{Measured} = C_{q_k} + V_{C_q} =
\frac{\int_{t_{k-1}}^{t_k}{I}dt}{(\Delta SOC)_{nominal}}
=\frac{\int_{t_{k-1}}^{t_k}{I}dt}{|0.9-0.3|}=
\frac{\int_{t_{k-1}}^{t_k}{I}dt}{0.6}$$

где$V_{C_q}$ шум измерения.

Состояние и уравнение измерения ухудшения батареи могут быть помещены в следующую форму пространства состояний:

$$ C_{q_{k+1}} = A_{C_q} C_{q_k} + W_{C_q} $$

$$ C_{q_k}^{Measured} = C_{C_q} C_{q_k} + V_{C_q} $$

где$A_{C_q}$ и$C_{C_q}$ равны 1.

Для вышеупомянутой линейной системы используйте Фильтр Калмана, чтобы оценить емкость батареи. Предполагаемое$C_q$ по линейному Фильтру Калмана используется, чтобы улучшить оценку SOC. В примере основанный на событии линейный Фильтр Калмана используется, чтобы оценить$C_q$. С тех пор$C_q$ измеряется однажды по заряду или циклу выброса, линейный Фильтр Калмана включен только при зарядке или разряде концов.

Сконфигурируйте параметры блоков и опции можно следующим образом:

Нажмите Model Parameters, чтобы задать модель объекта управления и шумовые характеристики:

  • Источник модели: Input Port.

Чтобы реализовать основанный на событии Фильтр Калмана, уравнение состояния включено только, когда случай происходит. В другом слове уравнение состояния основано на событии также. Для линейной системы$x_{t+1} = Ax_t + Bu_t + w_t$, набор уравнение состояния, чтобы быть

$$ x_{t+1} = \left \{ \begin{array}{cc} Ax_t + Bu_t + w_t, t=t_{enabled} \\ x_t, t \neq t_{enabled} \end{array} \right. $$.

  • A:. $$ \left \{ \begin{array}{cc} A_{C_q}, t=t_{enabled} \\ 1, t \neq t_{enabled} \end{array} \right. $$В этом примере$A_{C_q}=1$. В результате$A$ равняется 1 все время.

  • C: 1, от$C_{q_k}^{Measured} = C_{q_k} + V_{C_q} = \frac{\int_{t_{k-1}}^{t_k}{I}dt}{0.6}$.

  • Источник первоначальной оценки: Dialog. Вы задаете начальные состояния в Initial state x[0]

  • Начальные состояния x [0]: 30. Это - номинальная мощность батареи (30Ah).

  • Q: $$ \left \{ \begin{array}{cc} 1, t=t_{enabled} \\ 0, t \neq t_{enabled} \end{array} \right. $$

Это - ковариация шума процесса$W_{C_q}$. Поскольку скорость деградации в способности является циклом приблизительно 1 А-ч за заряд выброса, установите шум процесса быть 1.

  • R: 0.1. Это - ковариация шума измерения$V_{C_q}$. Примите, что полная погрешность измерения меньше 1%. С емкостью батареи 30 А-ч, шумом измерения$V_{C_q} \approx (0.3)^2 \approx 0.1$.

  • Размер шага: Ts.

Нажмите Options, чтобы добавить входной порт Enable к обновлениям контрольного измерения. Разрешать порт используется, чтобы обновить оценку емкости батареи на событиях заряда/выброса в противоположность непрерывному обновлению.

Обратите внимание на то, что установка Enable к 0 не отключает предсказания с помощью уравнений состояния. Это - причина, почему уравнение состояния сконфигурировано, чтобы быть основанным на событии также. Путем установки основанного на событии A и Q для блока Фильтра Калмана, предсказания с помощью уравнений состояния отключены когда Enable набор должен быть 0.

Результаты

Чтобы симулировать систему, загрузите параметры батареи. Файл содержит параметры батареи включая$E_m(SOC,T)$$R_0(SOC,T)$, $R_1(SOC,T)$и и т.д.

load BatteryParameters.mat

Симулируйте систему.

sim('BatteryExampleUKF')

На каждом временном шаге сигма-точечный фильтр Калмана обеспечивает оценку для SOC на основе измерений напряжения$E_m$. Постройте действительный SOC, предполагаемый SOC и различие между ними.

% Synchronize two time series
[RealSOC, EstimatedSOC] = synchronize(RealSOC, EstimatedSOC, 'intersection');

figure;
subplot(2,1,1)
plot(100*RealSOC,'b','LineWidth',1.5);
hold on
plot(100*EstimatedSOC,'r--','LineWidth',1);
title('State of Charge');
xlabel('Time (s)');
ylabel('SOC (%)');
legend('Actual','UKF estimate','Location','Best','Orientation','horizontal');
axis tight

subplot(2,1,2)
DiffSOC = 100*(RealSOC - EstimatedSOC);
plot(DiffSOC.Time, DiffSOC.Data, 'LineWidth', 1.5);
xlabel('Time(s)');
ylabel('\Delta SOC (%)','Interpreter','Tex');
legend('Difference between Real SOC and Estimated SOC','Location','Best')
axis tight

После начальной ошибки расчета SOC сходится быстро к действительному SOC. Итоговая ошибка расчета в ошибке на 0,5%. Сигма-точечный фильтр Калмана дает точную оценку SOC.

В каждом заряде выброса переходы емкость батареи, как оценивается, улучшает оценку SOC. Выходной индикатор системы клеточного содержания сигнализирует, чтобы сообщить тому, в каком процессе батарея находится. Разряд процесса представлен-1 в сигналах индикатора, в то время как зарядка процесса представлена 1. В этом примере изменения в сигналах индикатора используются, чтобы определить, когда включить или отключить Фильтр Калмана для полной оценки. Мы строим действительную и предполагаемую способность, а также сигналы индикатора выброса заряда.

figure;
subplot(2,1,1);
plot(RealCapacity,'b','LineWidth',1.5);
hold on
plot(EstimatedCapacity,'r--','LineWidth',1.5);
xlabel('Time (s)');
ylabel('Capacity (Ah)');
legend('Actual','KF estimate','Location','Best');

subplot(2,1,2);
plot(DischargeChargeIndicator.Time,DischargeChargeIndicator.Data,'b','LineWidth',1.5);
xlabel('Time(s)');
ylabel('Indicator Signal');

В общем случае Фильтр Калмана может отследить действительную способность. Существует половина задержки цикла между предполагаемой способностью и действительной способностью. Эта задержка происходит из-за синхронизации измерений. Вычисление ухудшения емкости батареи происходит, когда один полный цикл заряда выброса заканчивается. Кулонов подсчет дает полное измерение на основе предыдущего выброса или цикла заряда.

Сводные данные

В этом примере показано, как использовать блок сигма-точечного фильтра Калмана Simulink, чтобы выполнить нелинейную оценку состояния для литиевой батареи. Кроме того, шаги, чтобы разработать основанный на событии Фильтр Калмана для оценки емкости батареи проиллюстрированы. Недавно предполагаемая способность используется, чтобы улучшить оценку SOC сигма-точечный фильтр Калмана.

Ссылка

[1] Huria, Tarun, и др. "Высокое качество электрическая модель с тепловой зависимостью для характеристики и симуляции мощных литиевых элементов батареи". Конференция по Электромобилю (IEVC), 2 012 IEEE International. IEEE, 2012.

[2] Бледный, Эрик А. и Рудольф Ван дер Мерв. "Сигма-точечный фильтр Калмана для нелинейной оценки". Адаптивные системы для Обработки сигналов, Коммуникаций и Симпозиума Управления 2000. AS-SPCC. IEEE, 2000.

Похожие темы