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

Модель состоит из источника напряжения,
последовательного резистора
и единого блока RC с компонентами
и.
Батарея чередуется между циклами зарядки и разрядки. В этом примере оценивается состояние заряда (SOC) модели батареи с использованием измеренных токов, напряжений и температуры батареи. Вы предполагаете, что батарея является нелинейной системой, и оцениваете SOC с помощью фильтра Калмана без запаха. Емкость батареи ухудшается с каждым циклом разрядки-зарядки, давая неточную оценку SOC. Линейный фильтр Калмана на основе событий используется для оценки емкости батареи при переходе батареи между зарядкой и разрядкой. Затем используется расчетная емкость для определения состояния батареи.
Модель Simulink содержит три основных компонента: модель аккумулятора, блок фильтра Калмана без запаха и блок фильтра Калмана на основе событий.
open_system('BatteryExampleUKF/')

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

Уравнения перехода состояния для батарейной модели задаются следующим образом:

где
и
- термический и зависимый от SOC резистор и конденсатор в блоке RC, -
напряжение на конденсаторе, - 
входной ток, -
температура батареи, -
емкость батареи (единица: А) и -
технологический шум.
Входные токи являются случайным образом генерируемыми импульсами, когда батарея разряжается, и постоянными, когда батарея заряжается.

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

где
- измеренное выходное напряжение,
- последовательный резистор, -
электродвижущая сила от источника напряжения и -
измерительный шум.
В модели
и
являются 2D справочными таблицами, которые зависят от SOC и температуры батареи. Параметры в справочных таблицах идентифицируются с помощью экспериментальных данных [1].
Для использования блока «Фильтр Калмана без запаха» следует задать функции измерения и перехода состояний с помощью функций Matlab или Simulink. В этом примере показано использование функций Simulink. Поскольку фильтры Калмана без запаха являются фильтрами дискретного времени, сначала дискретизируйте уравнения состояния. В этом примере используется дискретизация Эйлера. Пусть время выборки будет.
Для общей нелинейной системы
система может быть дискретизирована следующим образом:

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

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

Аналогично, функция измерения также реализована в функции Simulink с именем batteryMeasurementFcn.

Сконфигурируйте параметры блока «Фильтр Калмана без запаха» следующим образом:
На вкладке «Системная модель» задайте параметры блока, как показано на рисунке:

Задаются следующие параметры:
Функция в состоянии перехода: batteryStateFcn.
Имя функции симулирования, определенной ранее, которая реализует дискретизированное уравнение перехода состояния.
Шум технологического процесса: Additive, с инвариантной ковариацией времени.
Additive подразумевает, что член шума добавляется непосредственно к конечным сигналам.
Технологический шум для SOC и
оценивается на основе динамических характеристик батарейной системы. Батарея имеет номинальную емкость 30 А· ч и подвергается циклам разряда или заряда при средней амплитуде тока 15A. Поэтому один процесс разрядки или зарядки занимает около 2 часов (7200 секунд). Максимальное изменение составляет 100% для SOC и около 4 вольт для.
Максимальные изменения на шаге в SOC
составляют
и,
где -
время дискретизации фильтра. В этом примере установлено
значение 1 секунда.
Таким образом, шум процесса
представляет собой:
.
Начальное состояние:.
Начальное значение для SOC принимается равным 100% (полностью заряженная батарея), в то время как начальное значение для
устанавливается равным 0, так как у нас нет какой-либо предшествующей информации о.
Начальная ковариация:
Начальная ковариация указывает, насколько точны и надежны начальные догадки. Предположим, что максимальная ошибка начального приближения равна 10% для SOC и 1V для.
Начальная ковариационная матрица устанавливается равной.![$$ \left[ \begin{array}{cc} 0.01 & 0 \\ 0 & 1 \end{array} \right] $$](../../examples/control/win64/NonlinearStateEstimationOfADegradingBatterySystemExample_eq04617355791680902555.png)
Параметры преобразования без запаха: параметры указаны на основе [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%. Напряжение батареи составляет около 4V. Эквивалентно, у нас есть.
Поэтому.
Время выборки:.
Разрушение батареи моделируется снижением емкости.
В этом примере емкость батареи устанавливается на уменьшение 1 А· ч за цикл разрядки-зарядки, чтобы проиллюстрировать эффект деградации. Поскольку скорость ухудшения пропускной способности не известна заранее, задайте уравнение состояния
, равное случайной ходьбе:
,
где
- количество циклов разрядки-зарядки, а
- технологический шум.
Батарея настроена на автоматическую зарядку при емкости 30% и переключение на разрядку при емкости 90%. Эта информация используется для измерения емкости батареи путем интегрирования тока
в цикл заряда или разряда (подсчет кулонов).
Уравнение измерения для
:

где
- шум измерения.
Уравнения перехода и измерения состояния деградации батареи можно перевести в следующую форму состояние-пространство:


где
и
равны 1.
Для вышеупомянутой линейной системы используйте фильтр Калмана для оценки емкости батареи. Оценка
из линейного фильтра Калмана используется для улучшения оценки SOC. В примере для оценки используется линейный фильтр Калмана на основе событий.
Поскольку
измерение производится один раз в течение цикла зарядки или разрядки, линейный фильтр Калмана включается только при окончании зарядки или разрядки.
Сконфигурируйте параметры блока следующим образом:

На вкладке Параметры модели (Model Parameters) укажите модель установки и характеристики шума:
Источник модели: Input Port.
Для реализации фильтра Калмана, основанного на событиях, уравнение состояния включается только тогда, когда происходит событие. Другими словами, уравнение состояния также основано на событии. Для линейной системы
задайте уравнение состояния равным
.
О:.
В этом примере.
Поэтому
все время равно 1.
C: 1, с.
Исходный источник оценки: Dialog. Начальные состояния указываются в Initial state x[0]
Начальные состояния x [0]: 30. Это номинальная емкость батареи (30Ah).
Q: 
Это ковариация шума процесса.
Поскольку скорость разложения в емкости составляет около 1 Ач за цикл разрядки-зарядки, установите уровень шума процесса равным 1.
R: 0,1. Это ковариация измеряемого шума.
Предположим, что погрешность измерения емкости меньше 1%. При емкости батареи 30 А· ч, измерительный шум.
Время выборки: Ts.
На вкладке «Параметры» добавьте входной порт Enable для управления обновлениями измерений. Порт включения используется для обновления оценки емкости батареи при событиях заряда или разряда, в отличие от непрерывного обновления.
Обратите внимание, что настройка Enable to 0 не отключает прогнозы с помощью уравнений состояния. Поэтому уравнение состояния также конфигурируется на основе события. Путем установки основанных на событиях A и Q для блока фильтра Калмана прогнозы с использованием уравнений состояния отключаются, когда Enable имеет значение 0.
Для моделирования системы загрузите параметры батареи, сохраненные в файле BatteryParameters.mat. Файл содержит параметры батареи, включая
,,.

load BatteryParameters.mat
Смоделировать систему.
sim('BatteryExampleUKF')
На каждом шаге времени фильтр Калмана без запаха обеспечивает оценку для SOC на основе измерений напряжения.
Постройте график реального 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');

В целом фильтр Калмана способен отслеживать реальную мощность. Между расчетной пропускной способностью и реальной пропускной способностью имеется полцикловая задержка. Это происходит потому, что ухудшение емкости батареи происходит, когда заканчивается один цикл полного разряда-заряда. В то время как подсчет кулона дает измерение емкости последнего разряда или цикла заряда.
В этом примере показано, как использовать блок фильтра Калмана без запаха для выполнения нелинейной оценки состояния литиевой батареи. Кроме того, показаны шаги по разработке основанного на событиях фильтра Калмана для оценки емкости батареи. Вновь оцененная пропускная способность используется для улучшения оценки SOC в фильтре Калмана без запаха.
[1] Урия, Тарун и др. «Электрическая модель высокой точности с тепловой зависимостью для характеристики и моделирования литиевых аккумуляторных элементов высокой мощности». Конференция по электромобилям (IEVC), 2012 IEEE International. IEEE, 2012.
[2] Ван, Эрик А. и Рудольф Ван Дер Мерве. «Незаметный фильтр Калмана для нелинейной оценки.» Симпозиум по адаптивным системам обработки сигналов, связи и управления 2000. AS-SPCC. IEEE 2000. Ieee, 2000.
Расширенный фильтр Калмана | Фильтр частиц | Незараженный фильтр Калмана