Этот пример показывает, как оценить состояния нелинейной системы с помощью сигма-точечного фильтра Калмана в Simulink ®. Пример также иллюстрирует, как разработать основанный на событиях фильтр Калмана для обновления системных параметров для более точной оценки состояния. Пример запускается с помощью Control System Toolbox™ или System Identification Toolbox™. Пример не требует Predictive Maintenance Toolbox™.
Рассмотрим модель батареи со следующей эквивалентной схемой [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, и тип данных двойной точности. Дополнительные входы - это температура, расчетная мощность и ток. Обратите внимание, что дополнительные входы являются входами в уравнения перехода состояния и не требуются блоком UKF.
Функция измерения также реализована как функция Simulink с именем «batteryMeasurementFcn», как показано ниже.
Сконфигурируйте параметры блоков следующим образом:
На вкладке Системная модель задайте параметры блоков как показано:
Вы задаете следующие параметры:
Функция в переходном режиме: batteryStateFcn
.
Имя функции simulink, заданное ранее, которое реализует дискретизированное уравнение перехода состояния.
Технологический шум: Additive
, с изменяющейся во времени ковариацией. The Additive
означает, что термин шума добавляется к конечным сигналам непосредственно.
Технологический шум для SOC и оцениваются на основе динамических характеристик аккумуляторной системы. Батарея имеет номинальную емкость 30 Ач и подвергается циклам разряда/заряда при средней амплитуде тока 15A. Поэтому один процесс разрядки или зарядки занимает около 2 часов (7200 секунд). Максимальное изменение составляет 100% для SOC и около 4 вольт для.
Максимальные изменения на шаг в SOC и являются и, где - время дискретизации фильтра. В этом примере установлено значение 1 секунда.
Технологический шум:
.
Начальное состояние:.
Начальное значение для SOC принято равным 100% (полностью заряженная батарея), в то время как начальное значение для установлено равным 0, поскольку мы не имеем никакой предварительной информации о.
Первоначальная ковариация:
Начальная ковариация указывает, насколько точны и надежны начальные догадки. Предположим, что максимальная начальная ошибка предположения составляет 10% для SOC и 1V для. Начальная ковариационная матрица установлена равной.
Неароматизированные параметры преобразования: Настройка основана на [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. Эквивалентно, у нас есть. Поэтому установите.
Выборка:.
Деградация батареи моделируется снижением емкости. В этом примере емкость батареи устанавливается на уменьшение 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.
Чтобы симулировать систему, загрузите параметры батареи. Файл содержит параметры батареи, включая,, и т.д.
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('Indicator Signal');
В целом фильтр Калмана способен отслеживать реальную емкость. Существует половинная задержка цикла между предполагаемой емкостью и реальной емкостью. Эта задержка связана со временем измерений. Вычисление деградации емкости батареи происходит, когда заканчивается один цикл полной разрядки-зарядки. Подсчет кулонов дает измерение емкости на основе предыдущего цикла разряда или заряда.
Этот пример показывает, как использовать сигма-точечный фильтр Калмана Simulink для выполнения нелинейной оценки состояния литиевой батареи. В сложение проиллюстрированы шаги разработки основанного на событиях фильтра Калмана для оценки емкости батареи. Новая оцененная мощность используется для улучшения оценки SOC в сигма-точечном фильтре Калмана.
[1] Huria, Tarun, et al. «Высокоточная электрическая модель с тепловой зависимостью для характеристики и симуляции литиевых элементов батареи высокой степени». Конференция по электрическому Транспортному средству (IEVC), 2012 IEEE International. IEEE, 2012.
[2] Ван, Эрик А. и Рудольф Ван Дер Мерве. Сигма-точечный фильтр Калмана для нелинейной оценки. Адаптивные системы для обработки сигналов, связи и симпозиума по управлению 2000. AS-SPCC. IEEE, 2000.