exponenta event banner

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

В этом примере показано, как оценить состояния нелинейной системы с помощью незаметного фильтра Калмана в Simulink ®. Пример также иллюстрирует, как разработать основанный на событиях фильтр Калмана для обновления параметров системы для более точной оценки состояния. Пример выполняется либо с Toolbox™ системы управления, либо с Toolbox™ идентификации системы. В этом примере не требуется 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 с именем «battiveStateFcn», показанная ниже. Ввод функции x - вектор состояния при выводе функции xNext - вектор состояния на следующем шаге, вычисленный с использованием дискретизированных уравнений перехода состояния. Необходимо указать размеры сигнала и тип данных x и xNext. В этом примере размер сигнала для x и xNext равно 2, а тип данных двойной. Дополнительными входами являются температура, расчетная мощность и ток. Следует отметить, что дополнительные входы являются входами в уравнения перехода состояния и не требуются блоку UKF.

Функция измерения также реализована в виде функции Simulink с именем «BattiveMeasurentFccn», как показано ниже.

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

На вкладке «Модель системы» задайте параметры блока, как показано на рисунке:

Задаются следующие параметры:

  • Функция в состоянии перехода: batteryStateFcn.

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

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

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

Щелкните Параметры модели (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. $$.

  • О:. $$ \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.

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

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

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

Связанные темы