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

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

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

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

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

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

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

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

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

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

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

Вы задаете следующие параметры:
Функция в переходном режиме: batteryStateFcn.
Имя функции simulink, заданное ранее, которое реализует дискретизированное уравнение перехода состояния.
Технологический шум: Additive, с инвариантной по времени ковариацией. ![$\left[ \begin{array}{cc} 2e-8 & 0 \\ 0 & 3e-7 \end{array} \right]$](../../examples/control/win64/NonlinearStateEstimationOfADegradingBatterySystemExample_eq14152702792003485951.png)
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. В примере для оценки используется основанный на событиях линейный фильтр Калмана.
Поскольку измеряется
один раз в цикле заряда или разрядки, линейный фильтр Калмана активируется только когда зарядка или разрядка заканчивается.
Сконфигурируйте параметры блоков следующим образом:

На вкладке Параметров модели задайте модель объекта управления и шумовые характеристики:
Источник модели: Input Port.
Чтобы реализовать основанный на событиях фильтр Калмана, уравнение состояния активируется только, когда событие происходит. Другими словами, уравнение состояния также основано на событиях. Для линейной системы
задайте уравнение состояния
.
А:.
В этом примере,.
Поэтому
все время равняется 1.
С: 1, с.
Источник начальной оценки: Dialog. Начальные состояния задаются в Initial state x[0]
Начальные состояния x [0]: 30. Это номинальная емкость батареи (30Ah).
Q: 
Это ковариация шума процесса.
Поскольку скорость деградации в емкости составляет около 1 Ач за цикл разрядки-зарядки, установите шум процесса равным 1.
R: 0.1. Это ковариация шума измерения.
Примите, что ошибка измерения емкости меньше 1%. С емкостью батареи 30 Ач, шум измерения.
Шаг расчета: Ц
На вкладке Опций добавьте входа порт Enable для управления обновлениями измерений. Порт включения используется для обновления оценки емкости батареи при событиях заряда или разряда, в отличие от постоянного обновления.
Обратите внимание, что установка Enable Значение 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] Huria, Tarun, et al. «Высокоточная электрическая модель с тепловой зависимостью для характеристики и симуляции литиевых элементов батареи высокой степени». Конференция по электрическому Транспортному средству (IEVC), 2012 IEEE International. IEEE, 2012.
[2] Ван, Эрик А. и Рудольф Ван Дер Мерве. Сигма-точечный фильтр Калмана для нелинейной оценки. Адаптивные системы для обработки сигналов, связи и симпозиума по управлению 2000. AS-SPCC. IEEE 2000. Ieee, 2000.
Extended Kalman Filter | Particle Filter | Unscented Kalman Filter