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

Этот пример показывает, как оценить состояния нелинейной системы с помощью сигма-точечного фильтра Калмана в 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$ емкостью батареи (модуль: Ah) и является$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. Сигма-точечные фильтры Калмана являются фильтрами дискретного времени, сначала дискретизируйте уравнения состояния. В этом примере используется дискретизация Эйлера. Допустим, что время дискретизации будет. $$ 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», как показано ниже.

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

На вкладке Системная модель задайте параметры блоков как показано:

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

  • Функция в переходном режиме: batteryStateFcn.

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

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

Технологический шум для SOC и$U_1$ оцениваются на основе динамических характеристик аккумуляторной системы. Батарея имеет номинальную емкость 30 Ач и подвергается циклам разряда/заряда при средней амплитуде тока 15A. Поэтому один процесс разрядки или зарядки занимает около 2 часов (7200 секунд). Максимальное изменение составляет 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 и 1V для. $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% точности. Напряжение батареи около 4V. Эквивалентно, у нас есть. $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$ один раз в цикле заряда или разрядки, линейный фильтр Калмана активируется только когда зарядка или разрядка заканчивается.

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

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

  • Источник модели: 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. $$.

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

  • С: 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$

  • Шаг расчета: Ц

Нажмите Опции, чтобы добавить входа порт 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, et al. «Высокоточная электрическая модель с тепловой зависимостью для характеристики и симуляции литиевых элементов батареи высокой степени». Конференция по электрическому Транспортному средству (IEVC), 2012 IEEE International. IEEE, 2012.

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

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте