Этот пример показывает, как оценить состояния нелинейной системы с помощью Сигма-точечного фильтра Калмана в 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
, с инвариантной по времени ковариацией. 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.
Шум измерения 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