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

В этом примере показано, как оценить состояния нелинейной системы с помощью Сигма-точечного фильтра Калмана в Simulink™. Пример также иллюстрирует, как разработать основанный на событии Фильтр Калмана, чтобы обновить системные параметры для более точной оценки состояния. Этот пример также требует Simscape™ и Stateflow®.

Обзор

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

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

Модель Simulink содержит три главных компонента: модель батареи, блок Unscented Kalman Filter и основанный на событии блок Kalman Filter.

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)

Чтобы использовать блок Unscented Kalman Filter, вы задаете функции измерения и изменения состояния с помощью или MATLAB или функций Simulink. Этот пример демонстрирует использование функций Simulink. Поскольку Сигма-точечные фильтры Калмана являются фильтрами дискретного времени, сначала дискретизируют уравнения состояния. В этом примере используется Эйлерова дискретизация. Позвольте времени выборки быть$$ 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, и тип данных является двойным. Дополнительные входные параметры к batteryStateFcn температура, оцененная способность, и текущий. Обратите внимание на то, что дополнительные входные параметры являются входными параметрами к уравнениям изменения состояния и не требуются блоком Unscented Kalman Filter.

Точно так же функция измерения также реализована в функции с именем 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.

Шум измерения V оценивается на основе точности измерительного оборудования. Метр напряжения для измерения напряжения батареи имеет приблизительно 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 для блока Kalman Filter, предсказания с помощью уравнений состояния отключены когда Enable набор должен быть 0.

Результаты

Чтобы симулировать систему, загрузите параметры батареи, сохраненные в файле BatteryParameters.mat. Файл содержит параметры батареи включая$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('Enable Signal');

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

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

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

Ссылка

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

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

Смотрите также

| |

Похожие темы