Этот пример показывает, как оценить состояния нелинейной системы с помощью сигма-точечного фильтра Калмана в Simulink™. Пример также иллюстрирует, как разработать основанный на событии Фильтр Калмана, чтобы обновить системные параметры для более точной оценки состояния. Этот пример использует функциональность от System Identification Toolbox™ и Simscape™, и не требует Predictive Maintenance Toolbox™.
Рассмотрите модель батареи со следующей эквивалентной схемой [1]
Модель состоит из источника напряжения, последовательного резистора и одного блока RC и. Батарея чередуется между зарядкой и разрядом циклов. В этом примере вы оцениваете состояние заряда (SOC) модели батареи использование измеренных токов, напряжений и температур батареи. Вы принимаете, что батарея является нелинейной системой, оцените SOC использование сигма-точечного фильтра Калмана. Мощность батареи ухудшается с каждым циклом заряда выброса, давая неточную оценку SOC. Используйте основанный на событии линейный Фильтр Калмана, чтобы оценить мощность батареи когда переходы батареи между зарядкой и разрядом. Предполагаемая способность в свою очередь может использоваться, чтобы указать на состояние здоровья батареи.
Модель Simulink содержит три главных компонента: модель батареи, блок сигма-точечного фильтра Калмана и основанный на событии блок Фильтра Калмана. Дальнейшие объяснения даны в следующих разделах.
open_system('BatteryExampleUKF/')
Модель батареи с термальным эффектом реализована с помощью языка Simscape.
Уравнениями изменения состояния для модели батареи дают:
то, где и тепловой и зависимый резистор SOC и конденсатор в блоке RC, является напряжением через конденсатор, текущий вход, температура батареи, мощность батареи (модуль: А-ч), и шум процесса.
Входные токи являются случайным образом сгенерированными импульсами, когда батарея разряжается и постоянная, когда батарея заряжается, как показано в следующей фигуре.
Уравнением измерения дают:
где измеренное напряжение выводится, является последовательным резистором, является электродвижущей силой из источника напряжения и является шумом измерения.
В модели, и 2D интерполяционные таблицы, которые зависят от температуры батареи и SOC. Параметры в интерполяционных таблицах идентифицированы с помощью экспериментальных данных [1].
Чтобы использовать блок сигма-точечного фильтра Калмана, или MATLAB или функции Simulink для состояния и уравнений измерения должны быть заданы. Этот пример демонстрирует, что использование функций Simulink.Since сигма-точечные фильтры Калмана является фильтрами дискретного времени, сначала дискретизирует уравнения состояния. В этом примере используется Эйлерова дискретизация. Позвольте времени выборки быть. Для общей нелинейной системы система может быть дискретизирована как
Векторы состояния нелинейной системы клеточного содержания
.
Применение Эйлеровой дискретизации дает следующие уравнения:
Дискретизированное уравнение изменения состояния реализовано как функция с именем Simulink "batteryStateFcn" показанный ниже. Входной параметр функции x
является вектором состояния, в то время как функциональный вывод xNext
является вектором состояния на следующем шаге, вычисленное использование, дискретизировал уравнения изменения состояния. Необходимо задать размерности сигнала и тип данных x
и xNext
. В этом примере размерность сигнала для x
и xNext
равняется 2, и тип данных является двойным. Дополнительные входные параметры являются температурой, оцененной способностью, и текущий. Обратите внимание на то, что дополнительные входные параметры являются входными параметрами к уравнениям изменения состояния и не требуемые блоком UKF.
Функция измерения также реализована как функция с именем 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.
Шум измерения оценивается на основе точности измерительного оборудования. Метр напряжения для измерения напряжения батареи имеет приблизительно 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 для блока Фильтра Калмана, отключены прогнозы с помощью уравнений состояния, когда 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 Estiamted 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, и др. "Высокое качество электрическая модель с тепловой зависимостью для характеристики и симуляции мощных литиевых элементов батареи". Конференция по Электромобилю (IEVC), 2 012 IEEE International. IEEE, 2012.
[2] Бледный, Эрик А. и Рудольф Ван дер Мерв. "Сигма-точечный фильтр Калмана для нелинейной оценки". Адаптивные системы для Обработки сигналов, Коммуникаций и Симпозиума Управления 2000. AS-SPCC. IEEE 2000. IEEE, 2000.