Этот пример показывает, как оценить состояния нелинейной системы с помощью Сигма-точечного фильтра Калмана в Simulink™. Пример также иллюстрирует, как разработать основанный на событии Фильтр Калмана, чтобы обновить системные параметры для более точной оценки состояния. Этот пример также требует Simscape™ и Stateflow®.
Рассмотрите модель батареи со следующей эквивалентной схемой [1]
Модель состоит из источника напряжения, последовательного резистора и одного блока RC с компонентами и. Батарея чередуется между зарядкой и разрядом циклов. В этом примере вы оцениваете состояние заряда (SOC) модели батареи использование измеренных токов, напряжений и температуры батареи. Вы принимаете, что батарея является нелинейной системой, и оцените SOC использование Сигма-точечного фильтра Калмана. Мощность батареи ухудшается с каждым циклом заряда выброса, давая неточную оценку SOC. Вы используете основанный на событии линейный Фильтр Калмана, чтобы оценить мощность батареи когда переходы батареи между зарядкой и разрядом. Вы затем используете предполагаемую возможность указать на состояние здоровья батареи.
Модель Simulink содержит три главных компонента: модель батареи, блок Unscented Kalman Filter и основанный на событии блок Kalman Filter.
open_system('BatteryExampleUKF/')
Модель батареи с термальным эффектом реализована с помощью программного обеспечения Simscape.
Уравнениями изменения состояния для модели батареи дают:
то, где и тепловой и SOC-зависимый резистор и конденсатор в блоке RC, является напряжением через конденсатор, текущий вход, температура батареи, мощность батареи (модуль: А-ч), и шум процесса.
Входные токи являются случайным образом сгенерированными импульсами, когда батарея разряжается и постоянная, когда батарея заряжается.
Уравнением измерения дают:
где измеренное выходное напряжение, является последовательным резистором, является электродвижущей силой из источника напряжения и является шумом измерения.
В модели, и 2D интерполяционные таблицы, которые зависят от температуры батареи и SOC. Параметры в интерполяционных таблицах идентифицированы с помощью экспериментальных данных [1].
Чтобы использовать блок Unscented Kalman Filter, вы задаете функции измерения и изменения состояния с помощью или MATLAB или функций Simulink. Этот пример демонстрирует использование функций Simulink. Поскольку Сигма-точечные фильтры Калмана являются фильтрами дискретного времени, сначала дискретизируют уравнения состояния. В этом примере используется Эйлерова дискретизация. Позвольте времени выборки быть. Для общей нелинейной системы система может быть дискретизирована как:
Векторы состояния нелинейной системы клеточного содержания:
.
Применение Эйлеровой дискретизации дает следующие уравнения:
Дискретизированное уравнение изменения состояния реализовано в функции с именем Simulink batteryStateFcn
. Входной параметр функции x
является вектором состояния и функциональным выводом xNext
, является вектором состояния на следующем шаге, вычисленное использование дискретизированных уравнений изменения состояния. В функции необходимо задать размерности сигнала и тип данных x
и xNext
. В этом примере размерность сигнала для x
и xNext
равняется 2, и тип данных является двойным. Дополнительные входные параметры к batteryStateFcn
являются температурой, оцененной способностью, и текущий. Обратите внимание на то, что дополнительные входные параметры являются входными параметрами к уравнениям изменения состояния и не требуются блоком Unscented Kalman Filter.
Точно так же функция измерения также реализована в функции с именем Simulink batteryMeasurementFcn
.
Сконфигурируйте параметры блоков Сигма-точечного фильтра Калмана можно следующим образом:
Во вкладке System Model задайте параметры блоков как показано:
Вы задаете следующие параметры:
Функция в изменении состояния: batteryStateFcn
.
Имя simulink функции, определяемой ранее, которая реализует дискретизированное уравнение изменения состояния.
Шум процесса: Additive
, с независимой от времени ковариацией. Additive
подразумевает, что шумовой термин добавляется к сигналам финала непосредственно.
Шум процесса для SOC и оценивается на основе динамических характеристик системы клеточного содержания. Батарея имеет номинальную мощность 30 А-ч и подвергается или выбросу или циклам заряда в средней амплитуде тока 15 А. Поэтому один разряд или зарядка процесса заняли бы приблизительно 2 часа (7 200 секунд). Максимальное изменение составляет 100% для SOC и приблизительно 4 вольта для.
Максимальные изменения на шаг в SOC и и, где время выборки фильтра. В этом примере, собирается быть 1 секундой.
Таким образом шум процесса:
.
Начальное состояние:.
Начальное значение для SOC принято, чтобы быть 100% (полностью заряженная батарея), в то время как начальное значение для установлено, чтобы быть 0, когда у нас нет предшествующей информации.
Начальная ковариация:
Начальная ковариация указывает, насколько точный и надежный исходные предположения. Примите, что максимальная ошибка исходного предположения составляет 10% для SOC и 1 В для. Начальная ковариационная матрица собирается быть.
Недушистые Параметры Преобразования: параметр задан на основе [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%-ю точность. Напряжение батареи составляет приблизительно 4 В. Эквивалентно, мы имеем. Поэтому.
'SampleTime' .
Ухудшение батареи моделируется путем уменьшения способности. В этом примере мощность батареи собирается уменьшить цикл 1 А-ч за заряд выброса, чтобы проиллюстрировать эффект ухудшения. Поскольку скорость деградации способности не известна заранее, установите уравнение состояния на случайный обход:
,
где количество циклов заряда выброса и является шумом процесса.
Батарея сконфигурирована, чтобы автоматически заряжаться, когда способность в 30% и переключатель к разряду, когда способность составляет 90%. Используйте эту информацию, чтобы измерить мощность батареи путем интеграции тока по заряду или циклу выброса (подсчет кулона).
Уравнение измерения для:
где шум измерения.
Уравнения изменения состояния и измерения ухудшения батареи могут быть помещены в следующую форму пространства состояний:
где и равны 1.
Для вышеупомянутой линейной системы используйте Фильтр Калмана, чтобы оценить мощность батареи. Предполагаемое от линейного Фильтра Калмана используется, чтобы улучшить оценку SOC. В примере основанный на событии линейный Фильтр Калмана используется, чтобы оценить. С тех пор измеряется однажды по заряду или циклу выброса, линейный Фильтр Калмана включен только при зарядке или разряде концов.
Сконфигурируйте параметры блоков можно следующим образом:
Во вкладке Model Parameters задайте модель объекта управления и шумовые характеристики:
Образцовый источник: Input Port
.
Чтобы реализовать основанный на событии Фильтр Калмана, уравнение состояния включено только, когда случай происходит. В другом слове уравнение состояния основано на событии также. Для линейной системы, набор уравнение состояния, чтобы быть
.
A:. В этом примере. Поэтому равняется 1 все время.
C: 1, от.
Источник Первоначальной оценки: Диалоговое окно.
Вы задаете начальные состояния в Initial state x[0]
Начальные состояния x [0]: 30. Это - номинальная мощность батареи (30Ah).
Q:
Это - ковариация шума процесса. Поскольку скорость деградации в способности является циклом приблизительно 1 А-ч за заряд выброса, установите шум процесса быть 1.
R: 0.1. Это - ковариация шума измерения. Примите, что полная погрешность измерения составляет меньше чем 1%. С мощностью батареи 30 А-ч, шумом измерения.
'SampleTime' : Ts.
Во вкладке Options добавьте входной порт Enable
в обновления контрольного измерения. Разрешать порт используется, чтобы обновить оценку мощности батареи или по заряду или по событиям выброса, в противоположность непрерывному обновлению.
Обратите внимание на то, что установка Enable
к 0 не отключает прогнозы с помощью уравнений состояния. Поэтому уравнение состояния сконфигурировано, чтобы быть основанным на событии также. Путем установки основанного на событии A и Q для блока Kalman Filter, отключены прогнозы с помощью уравнений состояния, когда 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');
В целом Фильтр Калмана может отследить действительную способность. Существует половина задержки цикла между предполагаемой способностью и действительной способностью. Это вызвано тем, что ухудшение мощности батареи происходит, когда один полный цикл заряда выброса заканчивается. В то время как кулонов подсчет дает полное измерение последнего выброса или цикла заряда.
Этот пример показывает, как использовать блок Unscented Kalman Filter, чтобы выполнить нелинейную оценку состояния для литиевой батареи. Кроме того, шаги, чтобы разработать основанный на событии Фильтр Калмана для оценки мощности батареи проиллюстрированы. Недавно предполагаемая способность используется, чтобы улучшить оценку SOC Сигма-точечный фильтр Калмана.
[1] Huria, Tarun, и др. "Высокое качество электрическая модель с тепловой зависимостью для характеристики и симуляции мощных литиевых элементов батареи". Конференция по Электромобилю (IEVC), 2 012 IEEE International. IEEE, 2012.
[2] Бледный, Эрик А. и Рудольф Ван дер Мерв. "Сигма-точечный фильтр Калмана для нелинейной оценки". Адаптивные системы для Обработки сигналов, Коммуникаций и Симпозиума Управления 2000. AS-SPCC. IEEE 2000. IEEE, 2000.
Расширенный фильтр Калмана | Фильтр частиц | Сигма-точечный фильтр Калмана